From 48e35ad3b0b0c62f936784e4aca70b17c3b0e3f9 Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Fri, 2 Feb 2024 17:05:12 -0500 Subject: renaming --- aoc2023-gleam/.DS_Store | Bin 0 -> 6148 bytes aoc2023-gleam/.github/workflows/test.yml | 23 +++ aoc2023-gleam/.gitignore | 6 + aoc2023-gleam/README.md | 28 +++ aoc2023-gleam/gleam.toml | 22 +++ aoc2023-gleam/manifest.toml | 29 ++++ aoc2023-gleam/src/.gitignore | 1 + aoc2023-gleam/src/day1/.gitignore | 1 + aoc2023-gleam/src/day1/solve.gleam | 64 +++++++ aoc2023-gleam/src/day10/.gitignore | 1 + aoc2023-gleam/src/day10/solve.gleam | 177 +++++++++++++++++++ aoc2023-gleam/src/day11/.gitignore | 1 + aoc2023-gleam/src/day11/solve.gleam | 84 +++++++++ aoc2023-gleam/src/day12/.gitignore | 1 + aoc2023-gleam/src/day12/solve.gleam | 91 ++++++++++ aoc2023-gleam/src/day13/.gitignore | 1 + aoc2023-gleam/src/day13/solve.gleam | 86 ++++++++++ aoc2023-gleam/src/day14/.gitignore | 1 + aoc2023-gleam/src/day14/solve.gleam | 93 ++++++++++ aoc2023-gleam/src/day15/.gitignore | 1 + aoc2023-gleam/src/day15/solve.gleam | 104 ++++++++++++ aoc2023-gleam/src/day16/.gitignore | 1 + aoc2023-gleam/src/day16/solve.gleam | 119 +++++++++++++ aoc2023-gleam/src/day17/.gitignore | 1 + aoc2023-gleam/src/day17/solve.gleam | 143 ++++++++++++++++ aoc2023-gleam/src/day18/.gitignore | 1 + aoc2023-gleam/src/day18/solve.gleam | 113 ++++++++++++ aoc2023-gleam/src/day19/.gitignore | 1 + aoc2023-gleam/src/day19/solve.gleam | 255 ++++++++++++++++++++++++++++ aoc2023-gleam/src/day2/.gitignore | 1 + aoc2023-gleam/src/day2/solve.gleam | 67 ++++++++ aoc2023-gleam/src/day20/.gitignore | 1 + aoc2023-gleam/src/day20/solve.gleam | 251 +++++++++++++++++++++++++++ aoc2023-gleam/src/day21/.gitignore | 1 + aoc2023-gleam/src/day21/solve.gleam | 25 +++ aoc2023-gleam/src/day22/.gitignore | 1 + aoc2023-gleam/src/day22/solve.gleam | 199 ++++++++++++++++++++++ aoc2023-gleam/src/day23/.gitignore | 1 + aoc2023-gleam/src/day23/solve.gleam | 194 +++++++++++++++++++++ aoc2023-gleam/src/day3/.gitignore | 1 + aoc2023-gleam/src/day3/solve.gleam | 180 ++++++++++++++++++++ aoc2023-gleam/src/day4/.gitignore | 1 + aoc2023-gleam/src/day4/solve.gleam | 98 +++++++++++ aoc2023-gleam/src/day5/.gitignore | 1 + aoc2023-gleam/src/day5/solve.gleam | 167 ++++++++++++++++++ aoc2023-gleam/src/day6/.gitignore | 1 + aoc2023-gleam/src/day6/solve.gleam | 85 ++++++++++ aoc2023-gleam/src/day7/.gitignore | 1 + aoc2023-gleam/src/day7/solve.gleam | 140 +++++++++++++++ aoc2023-gleam/src/day8/.gitignore | 1 + aoc2023-gleam/src/day8/solve.gleam | 91 ++++++++++ aoc2023-gleam/src/day9/.gitignore | 1 + aoc2023-gleam/src/day9/solve.gleam | 70 ++++++++ aoc2023-gleam/src/utilities/array2d.gleam | 74 ++++++++ aoc2023-gleam/src/utilities/memo.gleam | 57 +++++++ aoc2023-gleam/src/utilities/prioqueue.gleam | 62 +++++++ aoc2023-gleam/test/aoc2023_test.gleam | 5 + aoc2023-gleam/test/day1/day1_test.gleam | 57 +++++++ aoc2023-gleam/test/day10/day10_test.gleam | 60 +++++++ aoc2023-gleam/test/day11/day11_test.gleam | 66 +++++++ aoc2023-gleam/test/day12/day12_test.gleam | 48 ++++++ aoc2023-gleam/test/day13/day13_test.gleam | 76 +++++++++ aoc2023-gleam/test/day14/day14_test.gleam | 66 +++++++ aoc2023-gleam/test/day15/day15_test.gleam | 42 +++++ aoc2023-gleam/test/day16/day16_test.gleam | 66 +++++++ aoc2023-gleam/test/day17/day17_test.gleam | 55 ++++++ aoc2023-gleam/test/day18/day18_test.gleam | 74 ++++++++ aoc2023-gleam/test/day19/day19_test.gleam | 80 +++++++++ aoc2023-gleam/test/day2/day2_test.gleam | 57 +++++++ aoc2023-gleam/test/day20/day20_test.gleam | 56 ++++++ aoc2023-gleam/test/day21/day21_test.gleam | 38 +++++ aoc2023-gleam/test/day22/day22_test.gleam | 60 +++++++ aoc2023-gleam/test/day23/day23_test.gleam | 92 ++++++++++ aoc2023-gleam/test/day3/day3_test.gleam | 66 +++++++ aoc2023-gleam/test/day4/day4_test.gleam | 58 +++++++ aoc2023-gleam/test/day5/day5_test.gleam | 112 ++++++++++++ aoc2023-gleam/test/day6/day6_test.gleam | 50 ++++++ aoc2023-gleam/test/day7/day7_test.gleam | 56 ++++++ aoc2023-gleam/test/day8/day8_test.gleam | 61 +++++++ aoc2023-gleam/test/day9/day9_test.gleam | 52 ++++++ aoc2023-other/day-01/day-01.rkt | 38 ----- aoc2023-other/day-02/day-02-parser.rkt | 55 ------ aoc2023-other/day-02/day-02.rkt | 35 ---- aoc2023-other/day-03/day-03.rkt | 72 -------- aoc2023-other/day-04/day-04.rkt | 40 ----- aoc2023-other/day-05/day-05.rkt | 91 ---------- aoc2023-other/day-06/day-06.rkt | 32 ---- aoc2023-other/day-07/day-07.rkt | 82 --------- aoc2023-other/day-08/day-08.rkt | 36 ---- aoc2023-other/day-09/day-09-polynomial.rkt | 17 -- aoc2023-other/day-09/day-09.rkt | 32 ---- aoc2023-other/day-10/day-10.rkt | 97 ----------- aoc2023-other/day-11/day-11.rkt | 40 ----- aoc2023-other/day-12/day-12.rkt | 65 ------- aoc2023-other/day-13/day-13.rkt | 47 ----- aoc2023-other/day-14/day-14.rkt | 49 ------ aoc2023-other/day-15/day-15.rkt | 41 ----- aoc2023-other/day-16/day-16.rkt | 70 -------- aoc2023-other/day-17/day-17.rkt | 86 ---------- aoc2023-other/day-18/day-18.rkt | 48 ------ aoc2023-other/day-19/day-19.rkt | 134 --------------- aoc2023-other/day-20/day-20.rkt | 144 ---------------- aoc2023-other/day-21/day-21.rkt | 69 -------- aoc2023-other/day-22/day-22.rkt | 109 ------------ aoc2023-other/day-23/day-23.rkt | 89 ---------- aoc2023-other/day-24/day-24a.rkt | 51 ------ aoc2023-other/day-24/day-24b.rkt | 37 ---- aoc2023-other/day-25/day-25.rkt | 43 ----- aoc2023-racket/day-01/day-01.rkt | 38 +++++ aoc2023-racket/day-02/day-02-parser.rkt | 55 ++++++ aoc2023-racket/day-02/day-02.rkt | 35 ++++ aoc2023-racket/day-03/day-03.rkt | 72 ++++++++ aoc2023-racket/day-04/day-04.rkt | 40 +++++ aoc2023-racket/day-05/day-05.rkt | 91 ++++++++++ aoc2023-racket/day-06/day-06.rkt | 32 ++++ aoc2023-racket/day-07/day-07.rkt | 82 +++++++++ aoc2023-racket/day-08/day-08.rkt | 36 ++++ aoc2023-racket/day-09/day-09-polynomial.rkt | 17 ++ aoc2023-racket/day-09/day-09.rkt | 32 ++++ aoc2023-racket/day-10/day-10.rkt | 97 +++++++++++ aoc2023-racket/day-11/day-11.rkt | 40 +++++ aoc2023-racket/day-12/day-12.rkt | 65 +++++++ aoc2023-racket/day-13/day-13.rkt | 47 +++++ aoc2023-racket/day-14/day-14.rkt | 49 ++++++ aoc2023-racket/day-15/day-15.rkt | 41 +++++ aoc2023-racket/day-16/day-16.rkt | 70 ++++++++ aoc2023-racket/day-17/day-17.rkt | 86 ++++++++++ aoc2023-racket/day-18/day-18.rkt | 48 ++++++ aoc2023-racket/day-19/day-19.rkt | 134 +++++++++++++++ aoc2023-racket/day-20/day-20.rkt | 144 ++++++++++++++++ aoc2023-racket/day-21/day-21.rkt | 69 ++++++++ aoc2023-racket/day-22/day-22.rkt | 109 ++++++++++++ aoc2023-racket/day-23/day-23.rkt | 89 ++++++++++ aoc2023-racket/day-24/day-24a.rkt | 51 ++++++ aoc2023-racket/day-24/day-24b.rkt | 37 ++++ aoc2023-racket/day-25/day-25.rkt | 43 +++++ aoc2023/.DS_Store | Bin 6148 -> 0 bytes aoc2023/.github/workflows/test.yml | 23 --- aoc2023/.gitignore | 6 - aoc2023/README.md | 28 --- aoc2023/gleam.toml | 22 --- aoc2023/manifest.toml | 29 ---- aoc2023/src/.gitignore | 1 - aoc2023/src/aoc2023.gleam | 12 -- aoc2023/src/day1/.gitignore | 1 - aoc2023/src/day1/solve.gleam | 64 ------- aoc2023/src/day10/.gitignore | 1 - aoc2023/src/day10/solve.gleam | 177 ------------------- aoc2023/src/day11/.gitignore | 1 - aoc2023/src/day11/solve.gleam | 84 --------- aoc2023/src/day12/.gitignore | 1 - aoc2023/src/day12/solve.gleam | 91 ---------- aoc2023/src/day13/.gitignore | 1 - aoc2023/src/day13/solve.gleam | 86 ---------- aoc2023/src/day14/.gitignore | 1 - aoc2023/src/day14/solve.gleam | 93 ---------- aoc2023/src/day15/.gitignore | 1 - aoc2023/src/day15/solve.gleam | 104 ------------ aoc2023/src/day16/.gitignore | 1 - aoc2023/src/day16/solve.gleam | 119 ------------- aoc2023/src/day17/.gitignore | 1 - aoc2023/src/day17/solve.gleam | 143 ---------------- aoc2023/src/day18/.gitignore | 1 - aoc2023/src/day18/solve.gleam | 113 ------------ aoc2023/src/day19/.gitignore | 1 - aoc2023/src/day19/solve.gleam | 255 ---------------------------- aoc2023/src/day2/.gitignore | 1 - aoc2023/src/day2/solve.gleam | 67 -------- aoc2023/src/day20/.gitignore | 1 - aoc2023/src/day20/solve.gleam | 251 --------------------------- aoc2023/src/day21/.gitignore | 1 - aoc2023/src/day21/solve.gleam | 25 --- aoc2023/src/day22/.gitignore | 1 - aoc2023/src/day22/solve.gleam | 199 ---------------------- aoc2023/src/day23/.gitignore | 1 - aoc2023/src/day23/solve.gleam | 194 --------------------- aoc2023/src/day3/.gitignore | 1 - aoc2023/src/day3/solve.gleam | 180 -------------------- aoc2023/src/day4/.gitignore | 1 - aoc2023/src/day4/solve.gleam | 98 ----------- aoc2023/src/day5/.gitignore | 1 - aoc2023/src/day5/solve.gleam | 167 ------------------ aoc2023/src/day6/.gitignore | 1 - aoc2023/src/day6/solve.gleam | 85 ---------- aoc2023/src/day7/.gitignore | 1 - aoc2023/src/day7/solve.gleam | 140 --------------- aoc2023/src/day8/.gitignore | 1 - aoc2023/src/day8/solve.gleam | 91 ---------- aoc2023/src/day9/.gitignore | 1 - aoc2023/src/day9/solve.gleam | 70 -------- aoc2023/src/utilities/array2d.gleam | 74 -------- aoc2023/src/utilities/memo.gleam | 57 ------- aoc2023/src/utilities/prioqueue.gleam | 62 ------- aoc2023/test/aoc2023_test.gleam | 5 - aoc2023/test/day1/day1_test.gleam | 57 ------- aoc2023/test/day10/day10_test.gleam | 60 ------- aoc2023/test/day11/day11_test.gleam | 66 ------- aoc2023/test/day12/day12_test.gleam | 48 ------ aoc2023/test/day13/day13_test.gleam | 76 --------- aoc2023/test/day14/day14_test.gleam | 66 ------- aoc2023/test/day15/day15_test.gleam | 42 ----- aoc2023/test/day16/day16_test.gleam | 66 ------- aoc2023/test/day17/day17_test.gleam | 55 ------ aoc2023/test/day18/day18_test.gleam | 74 -------- aoc2023/test/day19/day19_test.gleam | 80 --------- aoc2023/test/day2/day2_test.gleam | 57 ------- aoc2023/test/day20/day20_test.gleam | 56 ------ aoc2023/test/day21/day21_test.gleam | 38 ----- aoc2023/test/day22/day22_test.gleam | 60 ------- aoc2023/test/day23/day23_test.gleam | 92 ---------- aoc2023/test/day3/day3_test.gleam | 66 ------- aoc2023/test/day4/day4_test.gleam | 58 ------- aoc2023/test/day5/day5_test.gleam | 112 ------------ aoc2023/test/day6/day6_test.gleam | 50 ------ aoc2023/test/day7/day7_test.gleam | 56 ------ aoc2023/test/day8/day8_test.gleam | 61 ------- aoc2023/test/day9/day9_test.gleam | 52 ------ 217 files changed, 6423 insertions(+), 6435 deletions(-) create mode 100644 aoc2023-gleam/.DS_Store create mode 100644 aoc2023-gleam/.github/workflows/test.yml create mode 100644 aoc2023-gleam/.gitignore create mode 100644 aoc2023-gleam/README.md create mode 100644 aoc2023-gleam/gleam.toml create mode 100644 aoc2023-gleam/manifest.toml create mode 100644 aoc2023-gleam/src/.gitignore create mode 100644 aoc2023-gleam/src/day1/.gitignore create mode 100644 aoc2023-gleam/src/day1/solve.gleam create mode 100644 aoc2023-gleam/src/day10/.gitignore create mode 100644 aoc2023-gleam/src/day10/solve.gleam create mode 100644 aoc2023-gleam/src/day11/.gitignore create mode 100644 aoc2023-gleam/src/day11/solve.gleam create mode 100644 aoc2023-gleam/src/day12/.gitignore create mode 100644 aoc2023-gleam/src/day12/solve.gleam create mode 100644 aoc2023-gleam/src/day13/.gitignore create mode 100644 aoc2023-gleam/src/day13/solve.gleam create mode 100644 aoc2023-gleam/src/day14/.gitignore create mode 100644 aoc2023-gleam/src/day14/solve.gleam create mode 100644 aoc2023-gleam/src/day15/.gitignore create mode 100644 aoc2023-gleam/src/day15/solve.gleam create mode 100644 aoc2023-gleam/src/day16/.gitignore create mode 100644 aoc2023-gleam/src/day16/solve.gleam create mode 100644 aoc2023-gleam/src/day17/.gitignore create mode 100644 aoc2023-gleam/src/day17/solve.gleam create mode 100644 aoc2023-gleam/src/day18/.gitignore create mode 100644 aoc2023-gleam/src/day18/solve.gleam create mode 100644 aoc2023-gleam/src/day19/.gitignore create mode 100644 aoc2023-gleam/src/day19/solve.gleam create mode 100644 aoc2023-gleam/src/day2/.gitignore create mode 100644 aoc2023-gleam/src/day2/solve.gleam create mode 100644 aoc2023-gleam/src/day20/.gitignore create mode 100644 aoc2023-gleam/src/day20/solve.gleam create mode 100644 aoc2023-gleam/src/day21/.gitignore create mode 100644 aoc2023-gleam/src/day21/solve.gleam create mode 100644 aoc2023-gleam/src/day22/.gitignore create mode 100644 aoc2023-gleam/src/day22/solve.gleam create mode 100644 aoc2023-gleam/src/day23/.gitignore create mode 100644 aoc2023-gleam/src/day23/solve.gleam create mode 100644 aoc2023-gleam/src/day3/.gitignore create mode 100644 aoc2023-gleam/src/day3/solve.gleam create mode 100644 aoc2023-gleam/src/day4/.gitignore create mode 100644 aoc2023-gleam/src/day4/solve.gleam create mode 100644 aoc2023-gleam/src/day5/.gitignore create mode 100644 aoc2023-gleam/src/day5/solve.gleam create mode 100644 aoc2023-gleam/src/day6/.gitignore create mode 100644 aoc2023-gleam/src/day6/solve.gleam create mode 100644 aoc2023-gleam/src/day7/.gitignore create mode 100644 aoc2023-gleam/src/day7/solve.gleam create mode 100644 aoc2023-gleam/src/day8/.gitignore create mode 100644 aoc2023-gleam/src/day8/solve.gleam create mode 100644 aoc2023-gleam/src/day9/.gitignore create mode 100644 aoc2023-gleam/src/day9/solve.gleam create mode 100644 aoc2023-gleam/src/utilities/array2d.gleam create mode 100644 aoc2023-gleam/src/utilities/memo.gleam create mode 100644 aoc2023-gleam/src/utilities/prioqueue.gleam create mode 100644 aoc2023-gleam/test/aoc2023_test.gleam create mode 100644 aoc2023-gleam/test/day1/day1_test.gleam create mode 100644 aoc2023-gleam/test/day10/day10_test.gleam create mode 100644 aoc2023-gleam/test/day11/day11_test.gleam create mode 100644 aoc2023-gleam/test/day12/day12_test.gleam create mode 100644 aoc2023-gleam/test/day13/day13_test.gleam create mode 100644 aoc2023-gleam/test/day14/day14_test.gleam create mode 100644 aoc2023-gleam/test/day15/day15_test.gleam create mode 100644 aoc2023-gleam/test/day16/day16_test.gleam create mode 100644 aoc2023-gleam/test/day17/day17_test.gleam create mode 100644 aoc2023-gleam/test/day18/day18_test.gleam create mode 100644 aoc2023-gleam/test/day19/day19_test.gleam create mode 100644 aoc2023-gleam/test/day2/day2_test.gleam create mode 100644 aoc2023-gleam/test/day20/day20_test.gleam create mode 100644 aoc2023-gleam/test/day21/day21_test.gleam create mode 100644 aoc2023-gleam/test/day22/day22_test.gleam create mode 100644 aoc2023-gleam/test/day23/day23_test.gleam create mode 100644 aoc2023-gleam/test/day3/day3_test.gleam create mode 100644 aoc2023-gleam/test/day4/day4_test.gleam create mode 100644 aoc2023-gleam/test/day5/day5_test.gleam create mode 100644 aoc2023-gleam/test/day6/day6_test.gleam create mode 100644 aoc2023-gleam/test/day7/day7_test.gleam create mode 100644 aoc2023-gleam/test/day8/day8_test.gleam create mode 100644 aoc2023-gleam/test/day9/day9_test.gleam delete mode 100644 aoc2023-other/day-01/day-01.rkt delete mode 100644 aoc2023-other/day-02/day-02-parser.rkt delete mode 100644 aoc2023-other/day-02/day-02.rkt delete mode 100644 aoc2023-other/day-03/day-03.rkt delete mode 100644 aoc2023-other/day-04/day-04.rkt delete mode 100644 aoc2023-other/day-05/day-05.rkt delete mode 100644 aoc2023-other/day-06/day-06.rkt delete mode 100644 aoc2023-other/day-07/day-07.rkt delete mode 100644 aoc2023-other/day-08/day-08.rkt delete mode 100644 aoc2023-other/day-09/day-09-polynomial.rkt delete mode 100644 aoc2023-other/day-09/day-09.rkt delete mode 100644 aoc2023-other/day-10/day-10.rkt delete mode 100644 aoc2023-other/day-11/day-11.rkt delete mode 100644 aoc2023-other/day-12/day-12.rkt delete mode 100644 aoc2023-other/day-13/day-13.rkt delete mode 100644 aoc2023-other/day-14/day-14.rkt delete mode 100644 aoc2023-other/day-15/day-15.rkt delete mode 100644 aoc2023-other/day-16/day-16.rkt delete mode 100644 aoc2023-other/day-17/day-17.rkt delete mode 100644 aoc2023-other/day-18/day-18.rkt delete mode 100644 aoc2023-other/day-19/day-19.rkt delete mode 100644 aoc2023-other/day-20/day-20.rkt delete mode 100644 aoc2023-other/day-21/day-21.rkt delete mode 100644 aoc2023-other/day-22/day-22.rkt delete mode 100644 aoc2023-other/day-23/day-23.rkt delete mode 100644 aoc2023-other/day-24/day-24a.rkt delete mode 100644 aoc2023-other/day-24/day-24b.rkt delete mode 100644 aoc2023-other/day-25/day-25.rkt create mode 100644 aoc2023-racket/day-01/day-01.rkt create mode 100644 aoc2023-racket/day-02/day-02-parser.rkt create mode 100644 aoc2023-racket/day-02/day-02.rkt create mode 100644 aoc2023-racket/day-03/day-03.rkt create mode 100644 aoc2023-racket/day-04/day-04.rkt create mode 100644 aoc2023-racket/day-05/day-05.rkt create mode 100644 aoc2023-racket/day-06/day-06.rkt create mode 100644 aoc2023-racket/day-07/day-07.rkt create mode 100644 aoc2023-racket/day-08/day-08.rkt create mode 100644 aoc2023-racket/day-09/day-09-polynomial.rkt create mode 100644 aoc2023-racket/day-09/day-09.rkt create mode 100644 aoc2023-racket/day-10/day-10.rkt create mode 100644 aoc2023-racket/day-11/day-11.rkt create mode 100644 aoc2023-racket/day-12/day-12.rkt create mode 100644 aoc2023-racket/day-13/day-13.rkt create mode 100644 aoc2023-racket/day-14/day-14.rkt create mode 100644 aoc2023-racket/day-15/day-15.rkt create mode 100644 aoc2023-racket/day-16/day-16.rkt create mode 100644 aoc2023-racket/day-17/day-17.rkt create mode 100644 aoc2023-racket/day-18/day-18.rkt create mode 100644 aoc2023-racket/day-19/day-19.rkt create mode 100644 aoc2023-racket/day-20/day-20.rkt create mode 100644 aoc2023-racket/day-21/day-21.rkt create mode 100644 aoc2023-racket/day-22/day-22.rkt create mode 100644 aoc2023-racket/day-23/day-23.rkt create mode 100644 aoc2023-racket/day-24/day-24a.rkt create mode 100644 aoc2023-racket/day-24/day-24b.rkt create mode 100644 aoc2023-racket/day-25/day-25.rkt delete mode 100644 aoc2023/.DS_Store delete mode 100644 aoc2023/.github/workflows/test.yml delete mode 100644 aoc2023/.gitignore delete mode 100644 aoc2023/README.md delete mode 100644 aoc2023/gleam.toml delete mode 100644 aoc2023/manifest.toml delete mode 100644 aoc2023/src/.gitignore delete mode 100644 aoc2023/src/aoc2023.gleam delete mode 100644 aoc2023/src/day1/.gitignore delete mode 100644 aoc2023/src/day1/solve.gleam delete mode 100644 aoc2023/src/day10/.gitignore delete mode 100644 aoc2023/src/day10/solve.gleam delete mode 100644 aoc2023/src/day11/.gitignore delete mode 100644 aoc2023/src/day11/solve.gleam delete mode 100644 aoc2023/src/day12/.gitignore delete mode 100644 aoc2023/src/day12/solve.gleam delete mode 100644 aoc2023/src/day13/.gitignore delete mode 100644 aoc2023/src/day13/solve.gleam delete mode 100644 aoc2023/src/day14/.gitignore delete mode 100644 aoc2023/src/day14/solve.gleam delete mode 100644 aoc2023/src/day15/.gitignore delete mode 100644 aoc2023/src/day15/solve.gleam delete mode 100644 aoc2023/src/day16/.gitignore delete mode 100644 aoc2023/src/day16/solve.gleam delete mode 100644 aoc2023/src/day17/.gitignore delete mode 100644 aoc2023/src/day17/solve.gleam delete mode 100644 aoc2023/src/day18/.gitignore delete mode 100644 aoc2023/src/day18/solve.gleam delete mode 100644 aoc2023/src/day19/.gitignore delete mode 100644 aoc2023/src/day19/solve.gleam delete mode 100644 aoc2023/src/day2/.gitignore delete mode 100644 aoc2023/src/day2/solve.gleam delete mode 100644 aoc2023/src/day20/.gitignore delete mode 100644 aoc2023/src/day20/solve.gleam delete mode 100644 aoc2023/src/day21/.gitignore delete mode 100644 aoc2023/src/day21/solve.gleam delete mode 100644 aoc2023/src/day22/.gitignore delete mode 100644 aoc2023/src/day22/solve.gleam delete mode 100644 aoc2023/src/day23/.gitignore delete mode 100644 aoc2023/src/day23/solve.gleam delete mode 100644 aoc2023/src/day3/.gitignore delete mode 100644 aoc2023/src/day3/solve.gleam delete mode 100644 aoc2023/src/day4/.gitignore delete mode 100644 aoc2023/src/day4/solve.gleam delete mode 100644 aoc2023/src/day5/.gitignore delete mode 100644 aoc2023/src/day5/solve.gleam delete mode 100644 aoc2023/src/day6/.gitignore delete mode 100644 aoc2023/src/day6/solve.gleam delete mode 100644 aoc2023/src/day7/.gitignore delete mode 100644 aoc2023/src/day7/solve.gleam delete mode 100644 aoc2023/src/day8/.gitignore delete mode 100644 aoc2023/src/day8/solve.gleam delete mode 100644 aoc2023/src/day9/.gitignore delete mode 100644 aoc2023/src/day9/solve.gleam delete mode 100644 aoc2023/src/utilities/array2d.gleam delete mode 100644 aoc2023/src/utilities/memo.gleam delete mode 100644 aoc2023/src/utilities/prioqueue.gleam delete mode 100644 aoc2023/test/aoc2023_test.gleam delete mode 100644 aoc2023/test/day1/day1_test.gleam delete mode 100644 aoc2023/test/day10/day10_test.gleam delete mode 100644 aoc2023/test/day11/day11_test.gleam delete mode 100644 aoc2023/test/day12/day12_test.gleam delete mode 100644 aoc2023/test/day13/day13_test.gleam delete mode 100644 aoc2023/test/day14/day14_test.gleam delete mode 100644 aoc2023/test/day15/day15_test.gleam delete mode 100644 aoc2023/test/day16/day16_test.gleam delete mode 100644 aoc2023/test/day17/day17_test.gleam delete mode 100644 aoc2023/test/day18/day18_test.gleam delete mode 100644 aoc2023/test/day19/day19_test.gleam delete mode 100644 aoc2023/test/day2/day2_test.gleam delete mode 100644 aoc2023/test/day20/day20_test.gleam delete mode 100644 aoc2023/test/day21/day21_test.gleam delete mode 100644 aoc2023/test/day22/day22_test.gleam delete mode 100644 aoc2023/test/day23/day23_test.gleam delete mode 100644 aoc2023/test/day3/day3_test.gleam delete mode 100644 aoc2023/test/day4/day4_test.gleam delete mode 100644 aoc2023/test/day5/day5_test.gleam delete mode 100644 aoc2023/test/day6/day6_test.gleam delete mode 100644 aoc2023/test/day7/day7_test.gleam delete mode 100644 aoc2023/test/day8/day8_test.gleam delete mode 100644 aoc2023/test/day9/day9_test.gleam diff --git a/aoc2023-gleam/.DS_Store b/aoc2023-gleam/.DS_Store new file mode 100644 index 0000000..5172429 Binary files /dev/null and b/aoc2023-gleam/.DS_Store differ diff --git a/aoc2023-gleam/.github/workflows/test.yml b/aoc2023-gleam/.github/workflows/test.yml new file mode 100644 index 0000000..cf2096e --- /dev/null +++ b/aoc2023-gleam/.github/workflows/test.yml @@ -0,0 +1,23 @@ +name: test + +on: + push: + branches: + - master + - main + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: erlef/setup-beam@v1 + with: + otp-version: "26.0.2" + gleam-version: "0.32.4" + rebar3-version: "3" + # elixir-version: "1.15.4" + - run: gleam deps download + - run: gleam test + - run: gleam format --check src test diff --git a/aoc2023-gleam/.gitignore b/aoc2023-gleam/.gitignore new file mode 100644 index 0000000..8248306 --- /dev/null +++ b/aoc2023-gleam/.gitignore @@ -0,0 +1,6 @@ +*.beam +*.ez +build +erl_crash.dump + +aoc.toml \ No newline at end of file diff --git a/aoc2023-gleam/README.md b/aoc2023-gleam/README.md new file mode 100644 index 0000000..3f534e8 --- /dev/null +++ b/aoc2023-gleam/README.md @@ -0,0 +1,28 @@ +# aoc2023 + +[![Package Version](https://img.shields.io/hexpm/v/aoc2023)](https://hex.pm/packages/aoc2023) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/aoc2023/) + +## Quick start + +```sh +gleam run # Run the project +gleam test # Run the tests +gleam shell # Run an Erlang shell +``` + +## Installation + +If available on Hex this package can be added to your Gleam project: + +```sh +gleam add aoc2023 +``` + +and its documentation can be found at . + +## Use + +* Set up a solution: `gleam run -m adglent/day ` +* Check against examples: `gleam test -- --modules=day/day_test` +* Get final answer: `gleam run -m day/solve

` \ No newline at end of file diff --git a/aoc2023-gleam/gleam.toml b/aoc2023-gleam/gleam.toml new file mode 100644 index 0000000..8190aef --- /dev/null +++ b/aoc2023-gleam/gleam.toml @@ -0,0 +1,22 @@ +name = "aoc2023" +version = "0.1.0" +gleam = ">= 0.33.0" + +# Fill out these fields if you intend to generate HTML documentation or publish +# your project to the Hex package manager. +# +# description = "" +# licences = ["Apache-2.0"] +# repository = { type = "github", user = "username", repo = "project" } +# links = [{ title = "Website", href = "https://gleam.run" }] + +[dependencies] +gleam_stdlib = "~> 0.33" +simplifile = "~> 1.0" +gleam_erlang = "~> 0.23" +gleam_community_maths = "~> 1.0" +gleam_otp = "~> 0.8" +pqueue = "~> 2.0" + +[dev-dependencies] +adglent = "~> 1.2" diff --git a/aoc2023-gleam/manifest.toml b/aoc2023-gleam/manifest.toml new file mode 100644 index 0000000..900b5c0 --- /dev/null +++ b/aoc2023-gleam/manifest.toml @@ -0,0 +1,29 @@ +# This file was generated by Gleam +# You typically do not need to edit this file + +packages = [ + { name = "adglent", version = "1.2.0", build_tools = ["gleam"], requirements = ["glint", "gleam_http", "gleam_stdlib", "simplifile", "gleam_erlang", "gap", "gleam_httpc", "snag", "gleam_community_ansi", "tom", "gleam_otp"], otp_app = "adglent", source = "hex", outer_checksum = "A20D35001061F8AD602E3B92FB3AC0E1E4EEC642AD2AAE0ACEAD3A85F37DA7F0" }, + { name = "gap", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_stdlib"], otp_app = "gap", source = "hex", outer_checksum = "5E369751DB547BFBDA7735878DC04DA31FCA3112193D61D5D7566010C7C8BA98" }, + { name = "gleam_community_ansi", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8B5A9677BC5A2738712BBAF2BA289B1D8195FDF962BBC769569976AD5E9794E1" }, + { name = "gleam_community_colour", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "036C206886AFB9F153C552700A7A0B4D2864E3BC96A20C77E5F34A013C051BE3" }, + { name = "gleam_community_maths", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_maths", source = "hex", outer_checksum = "1B9DB313E94A0E4674CA84C5D29F45ECFE211BFB38ABBD8B23737395F47D08B3" }, + { name = "gleam_erlang", version = "0.23.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "C21CFB816C114784E669FFF4BBF433535EEA9960FA2F216209B8691E87156B96" }, + { name = "gleam_http", version = "3.5.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "AECDA43AFD523D07A8F09068598A6E271C505278A0CB6F9C7A2E4365EAE8D11E" }, + { name = "gleam_httpc", version = "2.1.1", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "06AC1CA52C9BAA66C9D5C0303B2BF34E39AA1546BB96AEE496E4B06D513AB8C7" }, + { name = "gleam_otp", version = "0.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_erlang"], otp_app = "gleam_otp", source = "hex", outer_checksum = "18EF8242A5E54BA92F717C7222F03B3228AEE00D1F286D4C56C3E8C18AA2588E" }, + { name = "gleam_stdlib", version = "0.33.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "539E37A2AA5EBE8E75F4B74755E4CC604BD957C3000AC8D705A2024886A2738B" }, + { name = "glint", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_community_ansi", "gleam_community_colour", "snag"], otp_app = "glint", source = "hex", outer_checksum = "46E56049CD370D61F720D319D0AB970408C9336EEB918F08B5DCB1DCE9845FA3" }, + { name = "pqueue", version = "2.0.7", build_tools = ["rebar3"], requirements = [], otp_app = "pqueue", source = "hex", outer_checksum = "8B0204BB202335890E4E7F9B99A8EC0B84DDB8513EE298EB180EE9B3BCB4C859" }, + { name = "simplifile", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0BD6F0E7DA1A7E11D18B8AD48453225CAFCA4C8CFB4513D217B372D2866C501C" }, + { name = "snag", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "8FD70D8FB3728E08AC425283BB509BB0F012BE1AE218424A597CDE001B0EE589" }, + { name = "tom", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "tom", source = "hex", outer_checksum = "5C5A9B8586C547F1F39542B1A3BBD9FEE17AFEAB51CE53B32B13D0D46B421249" }, +] + +[requirements] +adglent = { version = "~> 1.2" } +gleam_community_maths = { version = "~> 1.0" } +gleam_erlang = { version = "~> 0.23" } +gleam_otp = { version = "~> 0.8" } +gleam_stdlib = { version = "~> 0.33" } +pqueue = { version = "~> 2.0" } +simplifile = { version = "~> 1.0" } diff --git a/aoc2023-gleam/src/.gitignore b/aoc2023-gleam/src/.gitignore new file mode 100644 index 0000000..bc13a69 --- /dev/null +++ b/aoc2023-gleam/src/.gitignore @@ -0,0 +1 @@ +aoc2023.gleam \ No newline at end of file diff --git a/aoc2023-gleam/src/day1/.gitignore b/aoc2023-gleam/src/day1/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day1/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day1/solve.gleam b/aoc2023-gleam/src/day1/solve.gleam new file mode 100644 index 0000000..ed14bde --- /dev/null +++ b/aoc2023-gleam/src/day1/solve.gleam @@ -0,0 +1,64 @@ +import adglent.{First, Second} +import gleam/io +import gleam/list +import gleam/string +import gleam/regex.{type Match, Match} +import gleam/int + +pub fn part1(input: String) { + let assert Ok(re) = regex.from_string("[1-9]") + + input + |> string.split("\n") + |> list.fold( + 0, + fn(acc, s) { + let matches = regex.scan(s, with: re) + + let assert Ok(Match(content: first, ..)) = list.first(matches) + let assert Ok(Match(content: last, ..)) = list.last(matches) + let assert Ok(i) = int.parse(first <> last) + acc + i + }, + ) + |> string.inspect +} + +const substitutions = [ + #("one", "o1e"), + #("two", "t2o"), + #("three", "t3e"), + #("four", "4"), + #("five", "5e"), + #("six", "6"), + #("seven", "7n"), + #("eight", "e8t"), + #("nine", "n9e"), +] + +pub fn part2(input: String) { + list.fold( + over: substitutions, + from: input, + with: fn(acc, sub) { + let #(from, to) = sub + string.replace(in: acc, each: from, with: to) + }, + ) + |> part1 +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("1") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day10/.gitignore b/aoc2023-gleam/src/day10/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day10/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day10/solve.gleam b/aoc2023-gleam/src/day10/solve.gleam new file mode 100644 index 0000000..c33634d --- /dev/null +++ b/aoc2023-gleam/src/day10/solve.gleam @@ -0,0 +1,177 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/list +import gleam/int +import gleam/io +import gleam/set.{type Set} +import gleam/string + +type Posn { + Posn(row: Int, col: Int) +} + +fn add_posns(p1: Posn, p2: Posn) -> Posn { + Posn(p1.row + p2.row, p1.col + p2.col) +} + +type PipeGrid = + Dict(Posn, String) + +const north = Posn(-1, 0) + +const south = Posn(1, 0) + +const east = Posn(0, 1) + +const west = Posn(0, -1) + +const initial_directions = [ + #(north, ["|", "7", "F"]), + #(south, ["|", "J", "L"]), + #(east, ["-", "J", "7"]), + #(west, ["-", "F", "L"]), +] + +fn pipe_neighbors(pipe: String) -> List(Posn) { + case pipe { + "|" -> [north, south] + "-" -> [east, west] + "L" -> [north, east] + "F" -> [south, east] + "7" -> [south, west] + "J" -> [north, west] + _ -> panic as "bad pipe" + } +} + +fn make_grid(input: String) -> PipeGrid { + { + use r, row <- list.index_map(string.split(input, "\n")) + use c, col <- list.index_map(string.to_graphemes(row)) + #(Posn(r, c), col) + } + |> list.flatten + |> dict.from_list +} + +fn valid_start_direction(grid: PipeGrid, s: Posn) { + let assert [dir, ..] = { + use d <- list.filter_map(initial_directions) + let #(delta, valids) = d + let neighbor = add_posns(s, delta) + case dict.get(grid, neighbor) { + Ok(pipe) -> + case list.contains(valids, pipe) { + True -> Ok(neighbor) + False -> Error(Nil) + } + Error(_) -> Error(Nil) + } + } + dir +} + +fn to_next_pipe(current: Posn, grid: PipeGrid, acc: List(Posn)) { + let assert [prev, ..] = acc + let assert Ok(pipe) = dict.get(grid, current) + use <- bool.guard(pipe == "S", [current, ..acc]) + let assert [next] = { + pipe + |> pipe_neighbors + |> list.filter_map(fn(p) { + case add_posns(p, current) { + neighbor if neighbor == prev -> Error(Nil) + neighbor -> Ok(neighbor) + } + }) + } + to_next_pipe(next, grid, [current, ..acc]) +} + +pub fn part1(input: String) { + let grid = + input + |> make_grid + + let assert Ok(s) = + grid + |> dict.filter(fn(_, v) { v == "S" }) + |> dict.keys + |> list.first + + grid + |> valid_start_direction(s) + |> to_next_pipe(grid, [s]) + |> list.length + |> fn(i) { { { i - 1 } / 2 } } + |> string.inspect +} + +fn trace_ray(p: Posn, loop: Set(Posn), grid: PipeGrid) -> Bool { + use <- bool.guard(set.contains(loop, p), False) + int.is_odd(count_crossings(p, loop, grid, 0, "")) +} + +fn count_crossings( + p: Posn, + loop: Set(Posn), + grid: PipeGrid, + acc: Int, + corner: String, +) { + let maybe_cell = dict.get(grid, p) + use <- bool.guard(maybe_cell == Error(Nil), acc) + let assert Ok(cell) = maybe_cell + let next = add_posns(p, east) + case set.contains(loop, p) { + False -> count_crossings(next, loop, grid, acc, corner) + True -> + case corner, cell { + _, "|" -> count_crossings(next, loop, grid, acc + 1, corner) + _, "F" | _, "L" -> count_crossings(next, loop, grid, acc, cell) + "F", "J" | "L", "7" -> count_crossings(next, loop, grid, acc + 1, "") + "F", "7" | "L", "J" -> count_crossings(next, loop, grid, acc, "") + _, _ -> count_crossings(next, loop, grid, acc, corner) + } + } +} + +pub fn part2(input: String) { + let grid = + input + |> make_grid + + let assert Ok(s) = + grid + |> dict.filter(fn(_, v) { v == "S" }) + |> dict.keys + |> list.first + + let loop_pipes = + grid + |> valid_start_direction(s) + |> to_next_pipe(grid, [s]) + |> set.from_list + + grid + |> dict.keys + |> list.filter(trace_ray(_, loop_pipes, grid)) + |> list.length() + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("10") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day11/.gitignore b/aoc2023-gleam/src/day11/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day11/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day11/solve.gleam b/aoc2023-gleam/src/day11/solve.gleam new file mode 100644 index 0000000..35464a1 --- /dev/null +++ b/aoc2023-gleam/src/day11/solve.gleam @@ -0,0 +1,84 @@ +import adglent.{First, Second} +import gleam/io +import gleam/int +import gleam/string +import gleam/list + +type Posn { + Posn(x: Int, y: Int) +} + +fn find_empty(grid: List(List(String))) { + use acc, row, r <- list.index_fold(grid, []) + case list.unique(row) { + ["."] -> [r, ..acc] + _ -> acc + } +} + +fn count_prior_empty_ranks(rank: Int, empty_ranks: List(Int)) -> Int { + empty_ranks + |> list.drop_while(fn(r_empty) { r_empty > rank }) + |> list.length +} + +fn parse_with_expansion(input: String, expansion: Int) -> List(Posn) { + let add = expansion - 1 + let grid = + input + |> string.split("\n") + |> list.map(string.to_graphemes) + + let empty_row_list = find_empty(grid) + let empty_col_list = find_empty(list.transpose(grid)) + + { + use r, row <- list.index_map(grid) + use acc, cell, c <- list.index_fold(over: row, from: []) + + let p = Posn(r, c) + let empty_r = count_prior_empty_ranks(r, empty_row_list) + let empty_c = count_prior_empty_ranks(c, empty_col_list) + case cell { + "#" -> [Posn(p.x + empty_r * add, p.y + empty_c * add), ..acc] + _empty -> acc + } + } + |> list.flatten() +} + +fn all_distances(stars: List(Posn)) -> Int { + use acc, pair <- list.fold(list.combination_pairs(stars), 0) + let #(s1, s2) = pair + acc + int.absolute_value(s1.x - s2.x) + int.absolute_value(s1.y - s2.y) +} + +fn find_distances(input: String, expand_by: Int) -> String { + input + |> parse_with_expansion(expand_by) + |> all_distances + |> string.inspect +} + +pub fn part1(input: String) { + find_distances(input, 2) +} + +pub fn part2(input: String) { + find_distances(input, 1_000_000) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("11") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day12/.gitignore b/aoc2023-gleam/src/day12/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day12/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day12/solve.gleam b/aoc2023-gleam/src/day12/solve.gleam new file mode 100644 index 0000000..06c7098 --- /dev/null +++ b/aoc2023-gleam/src/day12/solve.gleam @@ -0,0 +1,91 @@ +import adglent.{First, Second} +import gleam/io +import gleam/string +import gleam/list +import gleam/int +import gleam/result +import utilities/memo.{type Cache} + +type ParserState = + #(String, List(Int), Int, Bool) + +fn parse_folds(input: String, folds: Int) { + let records = string.split(input, "\n") + use record <- list.map(records) + let assert Ok(#(template, sets_str)) = string.split_once(record, " ") + + let template = + template + |> list.repeat(folds) + |> list.intersperse("?") + |> string.concat + let sets = + sets_str + |> string.split(",") + |> list.map(int.parse) + |> result.values + |> list.repeat(folds) + |> list.flatten() + + #(template, sets) +} + +fn do_count( + template: String, + groups: List(Int), + left: Int, + gap: Bool, + cache: Cache(ParserState, Int), +) -> Int { + use <- memo.memoize(cache, #(template, groups, left, gap)) + case template, groups, left, gap { + "", [], 0, _ -> 1 + "?" <> t_rest, [g, ..g_rest], 0, False -> + do_count(t_rest, g_rest, g - 1, g == 1, cache) + { + do_count(t_rest, groups, 0, False, cache) + } + "?" <> t_rest, [], 0, False + | "?" <> t_rest, _, 0, True + | "." <> t_rest, _, 0, _ -> do_count(t_rest, groups, 0, False, cache) + "#" <> t_rest, [g, ..g_rest], 0, False -> + do_count(t_rest, g_rest, g - 1, g == 1, cache) + "?" <> t_rest, gs, l, False | "#" <> t_rest, gs, l, False -> + do_count(t_rest, gs, l - 1, l == 1, cache) + _, _, _, _ -> 0 + } +} + +fn count_solutions(acc: Int, condition: #(String, List(Int))) -> Int { + use cache: Cache(ParserState, Int) <- memo.create() + let #(template, groups) = condition + acc + do_count(template, groups, 0, False, cache) +} + +pub fn part1(input: String) { + input + |> parse_folds(1) + |> list.fold(0, count_solutions) + |> string.inspect +} + +pub fn part2(input: String) { + input + |> parse_folds(5) + |> list.fold(0, count_solutions) + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("12") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day13/.gitignore b/aoc2023-gleam/src/day13/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day13/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day13/solve.gleam b/aoc2023-gleam/src/day13/solve.gleam new file mode 100644 index 0000000..2b3fca2 --- /dev/null +++ b/aoc2023-gleam/src/day13/solve.gleam @@ -0,0 +1,86 @@ +import adglent.{First, Second} +import gleam/io +import gleam/list +import gleam/string +import gleam/bool + +type SymmetryType { + Horizontal(Int) + Vertical(Int) +} + +fn is_symmetric(xss: List(List(a)), errs: Int) { + let assert [left, ..right] = xss + do_is_symmetric([left], right, errs) +} + +fn do_is_symmetric( + left: List(List(a)), + right: List(List(a)), + errors: Int, +) -> Result(Int, Nil) { + use <- bool.guard(list.is_empty(right), Error(Nil)) + let assert [h, ..t] = right + let found_errors = + list.zip(list.flatten(left), list.flatten(right)) + |> list.filter(fn(tup) { tup.1 != tup.0 }) + |> list.length + case found_errors == errors { + True -> Ok(list.length(left)) + False -> do_is_symmetric([h, ..left], t, errors) + } +} + +fn get_symmetry_type(xss: List(List(String)), errors: Int) { + case is_symmetric(xss, errors) { + Ok(n) -> Horizontal(n) + _ -> { + let assert Ok(n) = is_symmetric(list.transpose(xss), errors) + Vertical(n) + } + } +} + +fn summarize_notes(symmetries: List(SymmetryType)) { + use acc, note <- list.fold(symmetries, 0) + case note { + Horizontal(n) -> 100 * n + Vertical(n) -> n + } + acc +} + +fn solve(input: String, errors: Int) { + input + |> string.split("\n\n") + |> list.map(fn(strs) { + strs + |> string.split("\n") + |> list.map(string.to_graphemes) + |> get_symmetry_type(errors) + }) + |> summarize_notes + |> string.inspect +} + +pub fn part1(input: String) { + solve(input, 0) +} + +pub fn part2(input: String) { + solve(input, 1) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("13") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day14/.gitignore b/aoc2023-gleam/src/day14/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day14/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day14/solve.gleam b/aoc2023-gleam/src/day14/solve.gleam new file mode 100644 index 0000000..1ad1a18 --- /dev/null +++ b/aoc2023-gleam/src/day14/solve.gleam @@ -0,0 +1,93 @@ +import adglent.{First, Second} +import gleam/dict +import gleam/int +import gleam/io +import gleam/list +import gleam/order +import gleam/string + +fn parse(input) { + input + |> string.split("\n") + |> list.map(string.to_graphemes) + |> list.transpose() +} + +fn roll_boulders(strs: List(String)) { + { + use chunks <- list.map(list.chunk(strs, fn(c) { c == "O" || c == "." })) + list.sort(chunks, order.reverse(string.compare)) + } + |> list.flatten +} + +fn score(matrix) { + use acc, col <- list.fold(matrix, 0) + acc + { + use col_acc, char, n <- list.index_fold(list.reverse(col), 0) + case char { + "O" -> col_acc + n + 1 + _ -> col_acc + } + } +} + +pub fn part1(input: String) { + input + |> parse + |> list.map(roll_boulders) + |> score() + |> string.inspect +} + +fn rotate(matrix) { + matrix + |> list.map(list.reverse) + |> list.transpose +} + +fn spin(matrix) { + use acc, _ <- list.fold(list.range(1, 4), matrix) + acc + |> list.map(roll_boulders) + |> rotate +} + +fn spin_cycle(matrix) { + let cache = dict.new() + check_if_seen(matrix, cache, 1_000_000_000) +} + +fn check_if_seen(matrix, cache, count) { + case dict.get(cache, matrix) { + Error(Nil) -> + check_if_seen(spin(matrix), dict.insert(cache, matrix, count), count - 1) + Ok(n) -> { + let assert Ok(extra) = int.modulo(count, n - count) + list.fold(list.range(1, extra), matrix, fn(acc, _) { spin(acc) }) + |> score + } + } +} + +pub fn part2(input: String) { + input + |> parse + |> spin_cycle + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("14") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day15/.gitignore b/aoc2023-gleam/src/day15/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day15/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day15/solve.gleam b/aoc2023-gleam/src/day15/solve.gleam new file mode 100644 index 0000000..a7d250c --- /dev/null +++ b/aoc2023-gleam/src/day15/solve.gleam @@ -0,0 +1,104 @@ +import adglent.{First, Second} +import gleam/io +import gleam/string +import gleam/list +import gleam/int +import gleam/dict.{type Dict} +import gleam/option.{None, Some} + +fn split(input: String) -> List(String) { + input + |> string.split(",") +} + +fn hash_algorithm(str: String) -> Int { + let codepoints = + str + |> string.to_utf_codepoints() + |> list.map(string.utf_codepoint_to_int) + use acc, c <- list.fold(codepoints, 0) + let assert Ok(acc) = int.modulo({ acc + c } * 17, 256) + acc +} + +pub fn part1(input: String) -> String { + input + |> split + |> list.fold(0, fn(acc, str) { acc + hash_algorithm(str) }) + |> string.inspect +} + +type Instruction { + Remove(label: String) + Insert(label: String, focal: Int) +} + +fn read_instruction(str: String) -> Instruction { + case string.split(str, "=") { + [label, focal_str] -> { + let assert Ok(focal) = int.parse(focal_str) + Insert(label, focal) + } + _ -> Remove(string.drop_right(str, 1)) + } +} + +fn parse_instructions(insts: List(String)) -> Dict(Int, List(#(String, Int))) { + use acc, inst <- list.fold(insts, dict.new()) + case read_instruction(inst) { + Remove(label) -> remove_lens(acc, label) + Insert(label, focal) -> insert_lens(acc, label, focal) + } +} + +fn remove_lens(boxes, label) { + use v <- dict.update(boxes, hash_algorithm(label)) + case v { + Some(lenses) -> + case list.key_pop(lenses, label) { + Ok(#(_, updated)) -> updated + Error(Nil) -> lenses + } + None -> [] + } +} + +fn insert_lens(boxes, label, focal) { + use v <- dict.update(boxes, hash_algorithm(label)) + case v { + Some(lenses) -> list.key_set(lenses, label, focal) + None -> [#(label, focal)] + } +} + +fn focusing_power(boxes: Dict(Int, List(#(String, Int)))) -> Int { + use acc, k, v <- dict.fold(boxes, 0) + let box_acc = { + use acc, lens, i <- list.index_fold(v, 0) + acc + lens.1 * { i + 1 } + } + acc + { k + 1 } * box_acc +} + +pub fn part2(input: String) -> String { + input + |> split + |> parse_instructions + |> focusing_power + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("15") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day16/.gitignore b/aoc2023-gleam/src/day16/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day16/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day16/solve.gleam b/aoc2023-gleam/src/day16/solve.gleam new file mode 100644 index 0000000..65ce36b --- /dev/null +++ b/aoc2023-gleam/src/day16/solve.gleam @@ -0,0 +1,119 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/io +import gleam/list +import gleam/result +import gleam/set.{type Set} +import utilities/array2d.{type Posn, Posn} + +type Direction { + Up + Right + Down + Left +} + +type Light { + Light(posn: Posn, dir: Direction) +} + +fn move(l: Light) -> Light { + let Light(p, dir) = l + case dir { + Up -> Light(..l, posn: Posn(..p, r: p.r - 1)) + Down -> Light(..l, posn: Posn(..p, r: p.r + 1)) + Left -> Light(..l, posn: Posn(..p, c: p.c - 1)) + Right -> Light(..l, posn: Posn(..p, c: p.c + 1)) + } +} + +fn transform(l: Light, cell: Result(String, Nil)) -> List(Light) { + use <- bool.guard(result.is_error(cell), []) + let assert Ok(c) = cell + let Light(p, dir) = l + case dir, c { + // no change + _, "." | Up, "|" | Down, "|" | Left, "-" | Right, "-" -> [l] + // diagonal mirrors + Left, "/" -> [Light(p, Down)] + Down, "/" -> [Light(p, Left)] + Right, "/" -> [Light(p, Up)] + Up, "/" -> [Light(p, Right)] + Left, "\\" -> [Light(p, Up)] + Up, "\\" -> [Light(p, Left)] + Right, "\\" -> [Light(p, Down)] + Down, "\\" -> [Light(p, Right)] + // splitters + Left, "|" | Right, "|" -> [Light(p, Up), Light(p, Down)] + Up, "-" | Down, "-" -> [Light(p, Left), Light(p, Right)] + _, _ -> panic as "unrecognized cell type" + } +} + +fn energize(lights: List(Light), visited: Set(Light), grid: Dict(Posn, String)) { + let next_positions = + lights + |> list.flat_map(fn(l) { + let next = move(l) + transform(next, dict.get(grid, next.posn)) + }) + |> list.filter(fn(l) { !set.contains(visited, l) }) + let all_visited = set.union(set.from_list(next_positions), visited) + case visited == all_visited { + True -> + set.fold(visited, set.new(), fn(acc, l) { set.insert(acc, l.posn) }) + |> set.to_list + |> list.length + False -> energize(next_positions, all_visited, grid) + } +} + +pub fn part1(input: String) { + let grid = array2d.parse_grid(input) + + [Light(Posn(0, -1), Right)] + |> energize(set.new(), grid) +} + +pub fn part2(input: String) { + let grid = array2d.parse_grid(input) + + let Posn(rows, cols) = { + use acc, p <- list.fold(dict.keys(grid), Posn(0, 0)) + case acc.r + acc.c > p.r + p.c { + True -> acc + False -> p + } + } + + let all_starts = + list.concat([ + list.map(list.range(0, rows), fn(r) { Light(Posn(r, -1), Right) }), + list.map(list.range(0, rows), fn(r) { Light(Posn(r, cols + 1), Left) }), + list.map(list.range(0, cols), fn(c) { Light(Posn(-1, c), Down) }), + list.map(list.range(0, cols), fn(c) { Light(Posn(rows + 1, c), Up) }), + ]) + + use acc, p <- list.fold(all_starts, 0) + let energized = energize([p], set.new(), grid) + case acc > energized { + True -> acc + False -> energized + } +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("16") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day17/.gitignore b/aoc2023-gleam/src/day17/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day17/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day17/solve.gleam b/aoc2023-gleam/src/day17/solve.gleam new file mode 100644 index 0000000..7a01c4d --- /dev/null +++ b/aoc2023-gleam/src/day17/solve.gleam @@ -0,0 +1,143 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/io +import gleam/list +import gleam/result +import gleam/string +import gleam/set.{type Set} +import utilities/array2d.{type Posn, Posn} +import utilities/prioqueue.{type PriorityQueue} + +type State { + State(posn: Posn, heatloss: Int, previous: Posn, history: List(Posn)) +} + +const deltas = [Posn(-1, 0), Posn(1, 0), Posn(0, -1), Posn(0, 1)] + +fn make_key(s: State) { + #(s.posn, same_dir(s)) +} + +fn same_dir(s: State) { + case s.history { + [] -> [] + [first, ..] as deltas -> + list.take_while(deltas, fn(d) { d == first }) + |> list.take(10) + } +} + +fn is_goal(s: State, min_run: Int, goal: Posn) { + goal == s.posn && list.length(same_dir(s)) >= min_run +} + +fn find_good_neighbors(max: Int, min: Int, s: State, grid) { + deltas + |> list.filter(eliminate_bad_neighbors(_, s, max, min, grid)) + |> list.map(make_state(_, s, grid)) +} + +fn eliminate_bad_neighbors(d: Posn, s: State, max, min, grid) { + let neighbor = array2d.add_posns(d, s.posn) + + use <- bool.guard( + neighbor == s.previous || !dict.has_key(grid, neighbor), + False, + ) + case same_dir(s), list.length(same_dir(s)) { + [prev, ..], l if l == max -> d != prev + _, 0 -> True + [prev, ..], l if l < min -> d == prev + _, _ -> True + } +} + +fn make_state(d: Posn, s: State, grid) { + let neighbor = array2d.add_posns(d, s.posn) + let assert Ok(heat_lost) = dict.get(grid, neighbor) + State( + posn: neighbor, + heatloss: s.heatloss + heat_lost, + previous: s.posn, + history: [d, ..s.history], + ) +} + +fn find_path( + grid: Dict(Posn, Int), + queue: PriorityQueue(State), + seen: Set(#(Posn, List(Posn))), + get_neighbors: fn(State) -> List(State), + is_goal: fn(State) -> Bool, +) { + let assert Ok(#(state, rest)) = prioqueue.pop(queue) + let key = + make_key( + state + |> io.debug, + ) + case set.contains(seen, key) { + True -> find_path(grid, rest, seen, get_neighbors, is_goal) + False -> { + let now_seen = set.insert(seen, key) + let neighbors = get_neighbors(state) + case list.find(neighbors, is_goal) { + Ok(final) -> final.heatloss + _err -> { + let now_queue = + list.fold(neighbors, rest, fn(acc, n) { + prioqueue.insert(acc, n, n.heatloss) + }) + find_path(grid, now_queue, now_seen, get_neighbors, is_goal) + } + } + } + } +} + +pub fn part1(input: String) { + let raw_grid = + input + |> array2d.to_list_of_lists + + let grid = array2d.to_2d_intarray(raw_grid) + + let rmax = list.length(raw_grid) + let assert Ok(cmax) = + raw_grid + |> list.first + |> result.map(list.length) + + let start = State(Posn(0, 0), 0, Posn(0, 0), []) + let goal = Posn(rmax, cmax) + + find_path( + grid, + prioqueue.insert(prioqueue.new(), start, 0), + set.new(), + find_good_neighbors(0, 3, _, grid), + is_goal(_, 1, goal), + ) + |> string.inspect +} + +pub fn part2(input: String) { + input + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("17") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day18/.gitignore b/aoc2023-gleam/src/day18/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day18/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day18/solve.gleam b/aoc2023-gleam/src/day18/solve.gleam new file mode 100644 index 0000000..2c000f9 --- /dev/null +++ b/aoc2023-gleam/src/day18/solve.gleam @@ -0,0 +1,113 @@ +import adglent.{First, Second} +import gleam/io +import gleam/int +import gleam/list +import gleam/option.{Some} +import gleam/regex.{type Match, Match} +import gleam/string + +type Coord { + Coord(x: Int, y: Int) +} + +type Direction { + Up + Right + Down + Left +} + +type Dig { + Dig(dir: Direction, dist: Int) +} + +fn to_direction(c: String) { + case c { + "R" | "0" -> Right + "D" | "1" -> Down + "L" | "2" -> Left + "U" | "3" -> Up + _ -> panic + } +} + +fn parse_front(line: String) { + let assert Ok(re) = regex.from_string("(.) (.*) \\(.*\\)") + let assert [Match(submatches: [Some(dir), Some(dist)], ..)] = + regex.scan(with: re, content: line) + let assert Ok(n) = int.parse(dist) + Dig(to_direction(dir), n) +} + +fn parse_hex(line: String) { + let assert Ok(re) = regex.from_string("\\(#(.....)(.)\\)") + let assert [Match(submatches: [Some(dist), Some(dir)], ..)] = + regex.scan(with: re, content: line) + let assert Ok(n) = int.base_parse(dist, 16) + Dig(to_direction(dir), n) +} + +fn go(current: Coord, dig: Dig) { + case dig { + Dig(Up, n) -> Coord(current.x, current.y + n) + Dig(Right, n) -> Coord(current.x + n, current.y) + Dig(Down, n) -> Coord(current.x, current.y - n) + Dig(Left, n) -> Coord(current.x - n, current.y) + } +} + +fn double_triangle(c1: Coord, c2: Coord) { + { c1.x * c2.y } - { c2.x * c1.y } +} + +fn start_dig(digs: List(Dig)) { + do_next_dig(digs, Coord(0, 0), 0, 0) +} + +fn do_next_dig( + digs: List(Dig), + current: Coord, + area: Int, + perimeter: Int, +) -> Int { + case digs { + [] -> int.absolute_value(area) / 2 + { perimeter / 2 } + 1 + [dig, ..rest] -> { + let next = go(current, dig) + let area = area + double_triangle(current, next) + let perimeter = perimeter + dig.dist + do_next_dig(rest, next, area, perimeter) + } + } +} + +fn solve_with(input, f) { + input + |> string.split("\n") + |> list.map(f) + |> start_dig + |> string.inspect +} + +pub fn part1(input: String) { + solve_with(input, parse_front) +} + +pub fn part2(input: String) { + solve_with(input, parse_hex) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("18") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day19/.gitignore b/aoc2023-gleam/src/day19/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day19/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day19/solve.gleam b/aoc2023-gleam/src/day19/solve.gleam new file mode 100644 index 0000000..186e783 --- /dev/null +++ b/aoc2023-gleam/src/day19/solve.gleam @@ -0,0 +1,255 @@ +import adglent.{First, Second} +import gleam/io +import gleam/string +import gleam/dict.{type Dict} +import gleam/order.{type Order, Gt, Lt} +import gleam/regex.{type Match, Match} +import gleam/list +import gleam/option.{Some} +import gleam/int + +type Rating { + XtremelyCool + Musical + Aerodynamic + Shiny +} + +type Part { + Part(x: Int, m: Int, a: Int, s: Int) +} + +type Action { + Accept + Reject + SendTo(String) +} + +type Rule { + If(rating: Rating, comparison: Order, threshold: Int, do: Action) + Just(do: Action) +} + +type Workflow = + Dict(String, List(Rule)) + +type Interval { + Interval(min: Int, max: Int) +} + +type PartRange { + PartRange(x: Interval, m: Interval, a: Interval, s: Interval) +} + +fn parse_workflow(input: String) -> Workflow { + let assert Ok(re) = regex.from_string("(.*){(.*)}") + + use acc, line <- list.fold(string.split(input, "\n"), dict.new()) + let assert [Match(submatches: [Some(name), Some(all_rules)], ..)] = + regex.scan(re, line) + let rules = + string.split(all_rules, ",") + |> parse_rules + dict.insert(acc, name, rules) +} + +fn parse_rules(rules: List(String)) -> List(Rule) { + let assert Ok(re_rule) = regex.from_string("(.*)(>|<)(.*):(.*)") + use rule <- list.map(rules) + case regex.scan(re_rule, rule) { + [Match(submatches: [Some(r), Some(c), Some(t), Some(i)], ..)] -> + If(to_rating(r), to_comp(c), to_val(t), to_instruction(i)) + _nomatch -> Just(to_instruction(rule)) + } +} + +fn to_instruction(rule: String) { + case rule { + "A" -> Accept + "R" -> Reject + name -> SendTo(name) + } +} + +fn to_rating(rating: String) { + case rating { + "x" -> XtremelyCool + "m" -> Musical + "a" -> Aerodynamic + _s -> Shiny + } +} + +fn get_rating(part: Part, rating: Rating) -> Int { + case rating { + XtremelyCool -> part.x + Musical -> part.m + Aerodynamic -> part.a + Shiny -> part.s + } +} + +fn to_comp(comp: String) { + case comp { + "<" -> Lt + _gt -> Gt + } +} + +fn to_val(val: String) { + let assert Ok(n) = int.parse(val) + n +} + +fn parse_parts(input: String) -> List(Part) { + let assert Ok(re) = regex.from_string("{x=(.*),m=(.*),a=(.*),s=(.*)}") + + use part <- list.map(string.split(input, "\n")) + let assert [Match(submatches: [Some(x), Some(m), Some(a), Some(s)], ..)] = + regex.scan(re, part) + Part(to_val(x), to_val(m), to_val(a), to_val(s)) +} + +fn start_evaluating_workflow(part: Part, workflow: Workflow) -> Int { + evaluate_workflow(part, "in", workflow) +} + +fn evaluate_workflow(part: Part, name: String, workflow: Workflow) -> Int { + let assert Ok(rules) = dict.get(workflow, name) + case evaluate_rules(part, rules) { + Accept -> part.x + part.m + part.a + part.s + Reject -> 0 + SendTo(name) -> evaluate_workflow(part, name, workflow) + } +} + +fn evaluate_rules(part: Part, rules: List(Rule)) -> Action { + case rules { + [] -> panic + [Just(do), ..] -> do + [If(rating, comparison, threshold, do), ..rest] -> + case int.compare(get_rating(part, rating), threshold) == comparison { + True -> do + False -> evaluate_rules(part, rest) + } + } +} + +pub fn part1(input: String) { + let assert Ok(#(workflows_str, parts_str)) = string.split_once(input, "\n\n") + + let workflows = parse_workflow(workflows_str) + let parts = parse_parts(parts_str) + + list.map(parts, start_evaluating_workflow(_, workflows)) + |> int.sum + |> string.inspect +} + +fn size(interval: Interval) { + interval.max - interval.min + 1 +} + +fn all_in_range(pr: PartRange) { + size(pr.x) * size(pr.m) * size(pr.a) * size(pr.s) +} + +fn get_partrange(pr: PartRange, rating: Rating) -> Interval { + case rating { + XtremelyCool -> pr.x + Musical -> pr.m + Aerodynamic -> pr.a + Shiny -> pr.s + } +} + +fn update_partrange(pr: PartRange, rating: Rating, i: Interval) -> PartRange { + case rating { + XtremelyCool -> PartRange(..pr, x: i) + Musical -> PartRange(..pr, m: i) + Aerodynamic -> PartRange(..pr, a: i) + Shiny -> PartRange(..pr, s: i) + } +} + +pub fn part2(input: String) { + let assert Ok(#(workflows_str, _)) = string.split_once(input, "\n\n") + + let workflow = parse_workflow(workflows_str) + let start = Interval(1, 4000) + + PartRange(start, start, start, start) + |> evaluate_workflow_on_range("in", workflow) + |> string.inspect +} + +fn evaluate_workflow_on_range( + pr: PartRange, + name: String, + workflow: Workflow, +) -> Int { + let assert Ok(rules) = dict.get(workflow, name) + evaluate_rules_on_range(pr, rules, workflow) +} + +fn evaluate_rules_on_range( + pr: PartRange, + rules: List(Rule), + workflow: Workflow, +) -> Int { + case rules { + [Just(Accept), ..] -> all_in_range(pr) + [Just(Reject), ..] -> 0 + [Just(SendTo(name)), ..] -> evaluate_workflow_on_range(pr, name, workflow) + [If(rating, comparison, t, action), ..rest] -> { + let mod_i = get_partrange(pr, rating) + case comparison { + Lt -> + split_range( + keep: update_partrange(pr, rating, Interval(mod_i.min, t - 1)), + and_do: action, + pass: update_partrange(pr, rating, Interval(t, mod_i.max)), + and_eval: rest, + with: workflow, + ) + _gt -> + split_range( + keep: update_partrange(pr, rating, Interval(t + 1, mod_i.max)), + and_do: action, + pass: update_partrange(pr, rating, Interval(mod_i.min, t)), + and_eval: rest, + with: workflow, + ) + } + } + [] -> panic + } +} + +fn split_range( + keep keep: PartRange, + and_do action: Action, + pass pass: PartRange, + and_eval rest: List(Rule), + with workflow: Workflow, +) -> Int { + int.add( + evaluate_rules_on_range(keep, [Just(action)], workflow), + evaluate_rules_on_range(pass, rest, workflow), + ) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("19") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day2/.gitignore b/aoc2023-gleam/src/day2/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day2/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day2/solve.gleam b/aoc2023-gleam/src/day2/solve.gleam new file mode 100644 index 0000000..38e62d7 --- /dev/null +++ b/aoc2023-gleam/src/day2/solve.gleam @@ -0,0 +1,67 @@ +import adglent.{First, Second} +import gleam/io +import gleam/int +import gleam/string +import gleam/list + +pub type Game { + Game(red: Int, blue: Int, green: Int) +} + +fn parse(input: String) -> List(List(Game)) { + use line <- list.map(string.split(input, "\n")) + let assert [_, rounds] = string.split(line, on: ": ") + use match <- list.map(string.split(rounds, on: "; ")) + use acc, draw <- list.fold( + over: string.split(match, on: ", "), + from: Game(0, 0, 0), + ) + let assert Ok(#(n_str, color)) = string.split_once(draw, " ") + let assert Ok(n) = int.parse(n_str) + case color { + "red" -> Game(..acc, red: n) + "blue" -> Game(..acc, blue: n) + "green" -> Game(..acc, green: n) + _ -> panic as "unrecognized color" + } +} + +pub fn part1(input: String) { + use acc, game, i <- list.index_fold(parse(input), 0) + case list.any(game, fn(m) { m.red > 12 || m.green > 13 || m.blue > 14 }) { + False -> acc + i + 1 + True -> acc + } +} + +pub fn part2(input: String) { + { + use game <- list.map(parse(input)) + use acc, match <- list.fold(game, Game(0, 0, 0)) + let Game(red: red, green: green, blue: blue) = match + Game( + red: int.max(red, acc.red), + blue: int.max(blue, acc.blue), + green: int.max(green, acc.green), + ) + } + |> list.fold( + from: 0, + with: fn(acc, g: Game) { acc + g.red * g.blue * g.green }, + ) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("2") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day20/.gitignore b/aoc2023-gleam/src/day20/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day20/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day20/solve.gleam b/aoc2023-gleam/src/day20/solve.gleam new file mode 100644 index 0000000..9192dac --- /dev/null +++ b/aoc2023-gleam/src/day20/solve.gleam @@ -0,0 +1,251 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/io +import gleam/iterator.{type Iterator, type Step, Next} +import gleam/list +import gleam/queue.{type Queue} +import gleam/set +import gleam/string + +type Node { + Broadcaster(children: List(String)) + Flipflop(children: List(String), state: Power) + Conjunction(children: List(String), state: Dict(String, TonePitch)) + Ground +} + +type Tone { + Tone(from: String, to: String, pitch: TonePitch) +} + +type Power { + On + Off +} + +type TonePitch { + Low + High +} + +type State { + State( + nodes: Dict(String, Node), + low: Int, + high: Int, + cycle: Int, + sentry_nodes: Dict(String, Int), + ) +} + +fn flip_power(p: Power) -> Power { + case p { + On -> Off + Off -> On + } +} + +fn flip_flop_pitch(p: Power) -> TonePitch { + case p { + Off -> High + On -> Low + } +} + +fn combinator_pitch(state) { + case list.unique(dict.values(state)) { + [High] -> Low + _ -> High + } +} + +fn get_children(node) { + case node { + Flipflop(children: cs, ..) -> cs + Conjunction(children: cs, ..) -> cs + Broadcaster(children: cs) -> cs + Ground -> [] + } +} + +fn parse_node(input: String) -> #(String, Node) { + let assert [full_name, children_str] = string.split(input, on: " -> ") + let children = string.split(children_str, on: ", ") + + case full_name { + "%" <> name -> #(name, Flipflop(children: children, state: Off)) + "&" <> name -> #(name, Conjunction(children: children, state: dict.new())) + "broadcaster" -> #("broadcaster", Broadcaster(children: children)) + name -> #(name, Ground) + } +} + +fn to_initial_state(nodes: List(#(String, Node))) -> Dict(String, Node) { + let node_dict = dict.from_list(nodes) + let node_names = dict.keys(node_dict) + + let node_dict = + node_dict + |> dict.values + |> list.map(get_children) + |> list.concat + |> set.from_list + |> set.drop(dict.keys(node_dict)) + |> set.to_list + |> list.fold(node_dict, fn(acc, n) { dict.insert(acc, n, Ground) }) + + use name, node <- dict.map_values(node_dict) + case node { + Conjunction(state: _, children: chs) -> + node_names + |> list.filter(fn(n) { + let assert Ok(node) = dict.get(node_dict, n) + list.contains(get_children(node), any: name) + }) + |> list.map(fn(n) { #(n, Low) }) + |> dict.from_list() + |> fn(dict) { Conjunction(state: dict, children: chs) } + other -> other + } +} + +fn add_to_queue(from, children, pitch, queue) { + use acc, c <- list.fold(children, queue) + queue.push_back(acc, Tone(from: from, to: c, pitch: pitch)) +} + +fn add_tones(state: State, nodes, pitch, n) { + case pitch { + Low -> + State(..state, nodes: nodes, low: state.low + n, cycle: state.cycle + 1) + High -> + State(..state, nodes: nodes, high: state.high + n, cycle: state.cycle + 1) + } +} + +fn press_button_once(initial: State, queue: Queue(Tone)) { + let State(nodes: nodes, ..) = initial + + use <- bool.guard(queue.is_empty(queue), initial) + let assert Ok(#(Tone(from_name, to_name, pitch), rest)) = + queue.pop_front(queue) + + let assert Ok(to_node) = dict.get(nodes, to_name) + case to_node { + Broadcaster(children) -> { + let new_state = + add_tones(initial, nodes, pitch, list.length(children) + 1) + + let new_queue = add_to_queue(to_name, children, pitch, rest) + press_button_once(new_state, new_queue) + } + + Conjunction(state: state, children: children) -> { + let new_state = + state + |> dict.insert(from_name, pitch) + + let updated_nodes = + Conjunction(state: new_state, children: children) + |> dict.insert(nodes, to_name, _) + + let pitch_out = combinator_pitch(new_state) + + let new_state = + add_tones(initial, updated_nodes, pitch_out, list.length(children)) + |> check_for_interesting_node(from_name, pitch_out) + + add_to_queue(to_name, children, pitch_out, rest) + |> press_button_once(new_state, _) + } + + Flipflop(..) if pitch == High -> + press_button_once(State(..initial, cycle: initial.cycle + 1), rest) + + Flipflop(state: state, children: children) -> { + let updated_nodes = + Flipflop(state: flip_power(state), children: children) + |> dict.insert(nodes, to_name, _) + + let pitch_out = flip_flop_pitch(state) + let new_state = + add_tones(initial, updated_nodes, pitch_out, list.length(children)) + + add_to_queue(to_name, children, flip_flop_pitch(state), rest) + |> press_button_once(new_state, _) + } + + Ground(..) -> + press_button_once(State(..initial, cycle: initial.cycle + 1), rest) + } +} + +pub fn part1(input: String) { + let initial_state = + input + |> string.split(on: "\n") + |> list.map(parse_node) + |> to_initial_state() + + iterator.iterate( + from: State(initial_state, 0, 0, 1, dict.new()), + with: press_button_once(_, queue.from_list([ + Tone("button", "broadcaster", Low), + ])), + ) + |> iterator.at(1000) + |> fn(s) { + let assert Ok(State(high: high, low: low, ..)) = s + high * low + } + |> string.inspect +} + +fn check_for_interesting_node(state, name, pitch_out) { + case name, pitch_out { + "rk", High | "cd", High | "zf", High | "qx", High -> + State( + ..state, + sentry_nodes: dict.insert(state.sentry_nodes, name, state.cycle), + ) + _, _ -> state + } +} + +pub fn part2(input: String) { + let initial_state = + input + |> string.split(on: "\n") + |> list.map(parse_node) + |> to_initial_state() + + iterator.iterate( + from: State(initial_state, 0, 0, 1, dict.new()), + with: press_button_once(_, queue.from_list([ + Tone("button", "broadcaster", Low), + ])), + ) + |> iterator.drop_while(fn(s) { dict.size(s.sentry_nodes) < 4 }) + |> iterator.step + |> fn(s: Step(State, Iterator(State))) { + let assert Next(goal, _rest) = s + goal.sentry_nodes + } + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("20") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day21/.gitignore b/aoc2023-gleam/src/day21/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day21/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day21/solve.gleam b/aoc2023-gleam/src/day21/solve.gleam new file mode 100644 index 0000000..4d5c246 --- /dev/null +++ b/aoc2023-gleam/src/day21/solve.gleam @@ -0,0 +1,25 @@ +import adglent.{First, Second} +import gleam/io + +pub fn part1(input: String) { + todo as "Implement solution to part 1" +} + +pub fn part2(input: String) { + todo as "Implement solution to part 2" +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("21") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day22/.gitignore b/aoc2023-gleam/src/day22/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day22/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day22/solve.gleam b/aoc2023-gleam/src/day22/solve.gleam new file mode 100644 index 0000000..7bf2fb4 --- /dev/null +++ b/aoc2023-gleam/src/day22/solve.gleam @@ -0,0 +1,199 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/int +import gleam/io +import gleam/list +import gleam/option.{None, Some} +import gleam/regex +import gleam/result +import gleam/set.{type Set} +import gleam/string + +type Point { + Point(x: Int, y: Int, z: Int) +} + +fn down_one(p: Point) -> Point { + Point(..p, z: p.z - 1) +} + +type Block { + Block(index: Int, from: Point, to: Point) +} + +fn compare_blocks(b1: Block, b2: Block) { + int.compare(b1.to.z, b2.to.z) +} + +type Space = + Dict(Point, Block) + +type AllBlocks = + Dict(Block, List(Point)) + +type BlockTree = + Dict(Int, Set(Int)) + +fn parse_block(index: Int, input: String) -> Block { + let assert Ok(re) = regex.from_string("(.*),(.*),(.*)~(.*),(.*),(.*)") + + let assert [scan] = regex.scan(with: re, content: input) + + let assert [x1, y1, z1, x2, y2, z2] = + scan.submatches + |> option.all + |> option.unwrap([]) + |> list.map(int.parse) + |> result.values + Block(index: index, from: Point(x1, y1, z1), to: Point(x2, y2, z2)) +} + +fn cross_section_at_level(b: Block, z: Int) -> List(Point) { + use x <- list.flat_map(list.range(b.from.x, b.to.x)) + use y <- list.map(list.range(b.from.y, b.to.y)) + Point(x, y, z) +} + +fn place_block(space: Space, b: Block, z: Int) -> Space { + let now_occupied = { + use x <- list.flat_map(list.range(b.from.x, b.to.x)) + use y <- list.flat_map(list.range(b.from.y, b.to.y)) + use z <- list.map(list.range(z, z + b.to.z - b.from.z)) + #(Point(x, y, z), b) + } + + dict.merge(space, dict.from_list(now_occupied)) +} + +fn find_lowest_level(space: Space, b: Block) -> Space { + do_find_lowest(space, b, b.from.z) +} + +fn do_find_lowest(space: Space, b: Block, z: Int) -> Space { + let is_intersecting = + list.any(cross_section_at_level(b, z), dict.has_key(space, _)) + + case z, is_intersecting { + 0, _ -> place_block(space, b, 1) + _, True -> place_block(space, b, z + 1) + _, False -> do_find_lowest(space, b, z - 1) + } +} + +fn to_block_positions(space: Space) -> AllBlocks { + use acc, point, index <- dict.fold(space, dict.new()) + use points <- dict.update(acc, index) + case points { + Some(ps) -> [point, ..ps] + None -> [point] + } +} + +fn above_blocks(blocks: AllBlocks) -> BlockTree { + use acc, block, points <- dict.fold(blocks, dict.new()) + use _ <- dict.update(acc, block.index) + { + use above_block, above_points <- dict.filter(blocks) + above_block.index != block.index + && list.any(above_points, fn(p) { list.contains(points, down_one(p)) }) + } + |> dict.keys + |> list.map(fn(b) { b.index }) + |> set.from_list +} + +fn below_blocks(blocktree: BlockTree) -> BlockTree { + use acc, block, _ <- dict.fold(blocktree, dict.new()) + use _ <- dict.update(acc, block) + { + use _, aboves <- dict.filter(blocktree) + set.contains(aboves, block) + } + |> dict.keys + |> set.from_list +} + +fn vulnerable_blocks(below_tree: BlockTree) -> List(Int) { + use block <- list.filter(dict.keys(below_tree)) + use bs <- list.any(dict.values(below_tree)) + !{ set.size(bs) == 0 } && { set.size(set.delete(bs, block)) == 0 } +} + +pub fn part1(input: String) { + let settled_blocks = + input + |> string.split("\n") + |> list.index_map(parse_block) + |> list.sort(compare_blocks) + |> list.fold(dict.new(), find_lowest_level) + + let block_positions = to_block_positions(settled_blocks) + let above_blocks = above_blocks(block_positions) + let below_blocks = below_blocks(above_blocks) + + let vulnerable_blocks = vulnerable_blocks(below_blocks) + + list.length(dict.keys(block_positions)) - list.length(vulnerable_blocks) +} + +fn all_falling_blocks(n: Int, above: BlockTree, below: BlockTree) { + let starting_set = set.insert(set.new(), n) + do_falling_blocks(starting_set, starting_set, above, below) +} + +fn do_falling_blocks( + fallen: Set(Int), + blocks: Set(Int), + above: BlockTree, + below: BlockTree, +) -> Int { + use <- bool.guard(set.size(blocks) == 0, set.size(fallen) - 1) + + let blocks_above = + { + use block <- list.flat_map(set.to_list(blocks)) + let assert Ok(supports) = dict.get(above, block) + use support <- list.filter(set.to_list(supports)) + let assert Ok(supportings) = dict.get(below, support) + use supporting <- list.all(set.to_list(supportings)) + set.contains(fallen, supporting) + } + |> set.from_list() + + set.union(fallen, blocks_above) + |> do_falling_blocks(blocks_above, above, below) +} + +pub fn part2(input: String) { + let settled_blocks = + input + |> string.split("\n") + |> list.index_map(parse_block) + |> list.sort(compare_blocks) + |> list.fold(dict.new(), find_lowest_level) + + let block_positions = to_block_positions(settled_blocks) + let above_blocks = above_blocks(block_positions) + let below_blocks = below_blocks(above_blocks) + + let vulnerable_blocks = vulnerable_blocks(below_blocks) + + use acc, b <- list.fold(vulnerable_blocks, 0) + acc + all_falling_blocks(b, above_blocks, below_blocks) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("22") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day23/.gitignore b/aoc2023-gleam/src/day23/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day23/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day23/solve.gleam b/aoc2023-gleam/src/day23/solve.gleam new file mode 100644 index 0000000..e1fe638 --- /dev/null +++ b/aoc2023-gleam/src/day23/solve.gleam @@ -0,0 +1,194 @@ +import adglent.{First, Second} +import gleam/int +import gleam/io +import gleam/dict.{type Dict} +import gleam/list +import gleam/option.{type Option, None, Some} +import gleam/string +import gleam/set.{type Set} +import gleam/bool +import utilities/array2d.{type Array2D, type Posn, Posn} + +type Path { + Unknown + Straight + Junction +} + +type Route { + Route(to: Posn, distance: Int) +} + +fn append_to_key(v: Option(List(a)), new: a) -> List(a) { + case v { + None -> [new] + Some(xs) -> [new, ..xs] + } +} + +fn first_parse_path(c: String) -> Result(Path, Nil) { + case c { + "#" -> Error(Nil) + _ -> Ok(Unknown) + } +} + +fn junction_neighbors(p: Posn) -> List(Posn) { + [Posn(..p, r: p.r + 1), Posn(..p, c: p.c + 1)] +} + +fn mark_junctions(trails: Array2D(Path)) -> Array2D(Path) { + use trail, _ <- dict.map_values(trails) + + let valid_neighbors = + trail + |> array2d.ortho_neighbors + |> list.filter(dict.has_key(trails, _)) + + case list.length(valid_neighbors) { + 2 -> Straight + _ -> Junction + } +} + +fn start_walking_to_next_junction( + start: Posn, + next: Posn, + trails: Array2D(Path), +) { + let seen = + set.new() + |> set.insert(start) + |> set.insert(next) + walk_to_next_junction(start, next, 1, seen, trails) +} + +fn walk_to_next_junction( + start: Posn, + current: Posn, + length: Int, + seen: Set(Posn), + trails: Array2D(Path), +) -> #(Posn, Route) { + let assert [next] = + current + |> array2d.ortho_neighbors + |> list.filter(fn(n) { dict.has_key(trails, n) && !set.contains(seen, n) }) + + case dict.get(trails, next) { + Ok(Junction) -> #(start, Route(to: next, distance: length + 1)) + _ -> { + let seen = set.insert(seen, current) + walk_to_next_junction(start, next, { length + 1 }, seen, trails) + } + } +} + +fn find_routes(junctions, trails) { + use junction <- list.flat_map(junctions) + use neighbor <- list.filter_map(junction_neighbors(junction)) + case dict.has_key(trails, neighbor) { + True -> Ok(start_walking_to_next_junction(junction, neighbor, trails)) + False -> Error(Nil) + } +} + +fn generate_routes( + junctions: List(Posn), + trails: Array2D(Path), +) -> Dict(Posn, List(Route)) { + use acc, #(from, route) <- list.fold( + find_routes(junctions, trails), + dict.new(), + ) + dict.update(acc, from, append_to_key(_, route)) +} + +fn generate_2way_routes( + junctions: List(Posn), + trails: Array2D(Path), +) -> Dict(Posn, List(Route)) { + use acc, #(from, route) <- list.fold( + find_routes(junctions, trails), + dict.new(), + ) + acc + |> dict.update(from, append_to_key(_, route)) + |> dict.update(route.to, append_to_key(_, Route(from, route.distance))) +} + +fn dfs(routes, from, to) { + let seen = set.insert(set.new(), from) + do_dfs(routes, from, to, 0, seen) +} + +fn do_dfs( + routes: Dict(Posn, List(Route)), + from: Posn, + to: Posn, + acc: Int, + seen: Set(Posn), +) -> Int { + use <- bool.guard(to == from, acc) + + let assert Ok(all_routes) = dict.get(routes, from) + let neighbors = list.filter(all_routes, fn(r) { !set.contains(seen, r.to) }) + + case neighbors { + [] -> 0 + neighbors -> + list.fold(neighbors, acc, fn(inner_acc, n) { + let score = + do_dfs(routes, n.to, to, acc + n.distance, set.insert(seen, n.to)) + int.max(score, inner_acc) + }) + } +} + +fn solve_using( + input: String, + using: fn(List(Posn), Dict(Posn, Path)) -> Dict(Posn, List(Route)), +) -> Int { + let min_row = 0 + let max_row = list.length(string.split(input, "\n")) - 1 + + let trails = + input + |> array2d.parse_grid_using(first_parse_path) + |> mark_junctions + + let junctions = + trails + |> dict.filter(fn(_, v) { v == Junction }) + |> dict.keys + + let assert Ok(start) = list.find(junctions, fn(j) { j.r == min_row }) + let assert Ok(end) = list.find(junctions, fn(j) { j.r == max_row }) + + let routes = using(junctions, trails) + + dfs(routes, start, end) +} + +pub fn part1(input: String) { + solve_using(input, generate_routes) +} + +pub fn part2(input: String) { + solve_using(input, generate_2way_routes) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("23") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day3/.gitignore b/aoc2023-gleam/src/day3/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day3/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day3/solve.gleam b/aoc2023-gleam/src/day3/solve.gleam new file mode 100644 index 0000000..ad975aa --- /dev/null +++ b/aoc2023-gleam/src/day3/solve.gleam @@ -0,0 +1,180 @@ +import adglent.{First, Second} +import gleam/io +import gleam/dict.{type Dict} +import gleam/string +import gleam/list +import gleam/int +import gleam/order.{type Order, Eq} + +type Coord { + Coord(x: Int, y: Int) +} + +type SymbolKind { + Gear + SomethingElse +} + +type Symbol { + Number(Int) + Symbol(SymbolKind) + Empty +} + +type Board = + Dict(Coord, Symbol) + +type Cell { + Cell(coord: Coord, symbol: Symbol) +} + +type Part { + Part(coords: List(Coord), part_number: Int) +} + +fn to_symbol(c: String) -> Symbol { + case int.parse(c), c { + Ok(n), _ -> Number(n) + _, "." -> Empty + _, "*" -> Symbol(Gear) + _, _ -> Symbol(SomethingElse) + } +} + +fn to_board(input: String) -> Board { + { + use y, r <- list.index_map(string.split(input, "\n")) + use x, c <- list.index_map(string.to_graphemes(r)) + #(Coord(x, y), to_symbol(c)) + } + |> list.flatten() + |> dict.from_list() +} + +fn cell_compare(a: Cell, b: Cell) -> Order { + case int.compare(a.coord.y, b.coord.y) { + Eq -> int.compare(a.coord.x, b.coord.x) + other -> other + } +} + +fn find_all_part_digits(b: Board) -> List(Cell) { + b + |> dict.filter(fn(_, v) { + case v { + Number(_) -> True + _ -> False + } + }) + |> dict.to_list() + |> list.map(fn(tup) { Cell(tup.0, tup.1) }) + |> list.sort(cell_compare) +} + +fn to_parts(cells: List(Cell)) -> List(Part) { + do_parts(cells, []) +} + +fn do_parts(cells: List(Cell), parts: List(Part)) -> List(Part) { + case cells { + [] -> parts + [Cell(next, Number(n)), ..t] -> { + case parts { + [] -> do_parts(t, [Part([next], n), ..parts]) + [Part([prev, ..] as coords, n0), ..rest_parts] -> + case { next.x - prev.x }, { next.y - prev.y } { + 1, 0 -> + do_parts(t, [Part([next, ..coords], n0 * 10 + n), ..rest_parts]) + _, _ -> do_parts(t, [Part([next], n), ..parts]) + } + _ -> panic + } + } + _ -> panic + } +} + +fn all_neighbors(c: Coord) -> List(Coord) { + use dx <- list.flat_map([-1, 0, 1]) + use dy <- list.filter_map([-1, 0, 1]) + case dx, dy { + 0, 0 -> Error(Nil) + _, _ -> Ok(Coord(c.x + dx, c.y + dy)) + } +} + +fn sum_valid_parts(acc: Int, part: Part, board: Board) -> Int { + let neighbors = + part.coords + |> list.flat_map(all_neighbors) + |> list.unique() + + let sym = [Ok(Symbol(Gear)), Ok(Symbol(SomethingElse))] + case list.any(neighbors, fn(c) { list.contains(sym, dict.get(board, c)) }) { + True -> acc + part.part_number + False -> acc + } +} + +pub fn part1(input: String) -> Int { + let board = to_board(input) + + board + |> find_all_part_digits + |> to_parts + |> list.fold(0, fn(acc, p) { sum_valid_parts(acc, p, board) }) +} + +fn to_part_with_neighbors(part: Part) -> Part { + part.coords + |> list.flat_map(all_neighbors) + |> list.unique + |> Part(part.part_number) +} + +fn find_part_numbers_near_gear(gear: Coord, parts: List(Part)) -> List(Int) { + use part <- list.filter_map(parts) + case list.contains(part.coords, gear) { + True -> Ok(part.part_number) + False -> Error(Nil) + } +} + +fn to_sum_of_gear_ratios(adjacent_parts: List(List(Int))) -> Int { + use acc, ps <- list.fold(adjacent_parts, 0) + case ps { + [p1, p2] -> acc + p1 * p2 + _ -> acc + } +} + +pub fn part2(input: String) -> Int { + let board = to_board(input) + + let parts = + board + |> find_all_part_digits + |> to_parts + |> list.map(to_part_with_neighbors) + + board + |> dict.filter(fn(_, v) { v == Symbol(Gear) }) + |> dict.keys + |> list.map(find_part_numbers_near_gear(_, parts)) + |> to_sum_of_gear_ratios +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("3") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day4/.gitignore b/aoc2023-gleam/src/day4/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day4/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day4/solve.gleam b/aoc2023-gleam/src/day4/solve.gleam new file mode 100644 index 0000000..34d6098 --- /dev/null +++ b/aoc2023-gleam/src/day4/solve.gleam @@ -0,0 +1,98 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/int +import gleam/io +import gleam/list +import gleam/option.{None, Some} +import gleam/result +import gleam/set.{type Set} +import gleam/string + +type Card { + Card(number: Int, winners: Int) +} + +fn numbers_to_set(str: String) -> Set(Int) { + str + |> string.split(" ") + |> list.map(int.parse) + |> result.values() + |> set.from_list() +} + +fn parse_card(card: String) -> Card { + let assert Ok(#("Card" <> n_str, rest)) = string.split_once(card, ": ") + let assert Ok(#(winning_str, has_str)) = string.split_once(rest, " | ") + let assert Ok(n) = int.parse(string.trim(n_str)) + + let winning = numbers_to_set(winning_str) + let has = numbers_to_set(has_str) + let winners = set.size(set.intersection(winning, has)) + + Card(number: n, winners: winners) +} + +fn win_points(n: Int) { + bool.guard(n < 2, n, fn() { 2 * win_points(n - 1) }) +} + +pub fn part1(input: String) { + use acc, c <- list.fold(string.split(input, "\n"), 0) + c + |> parse_card + |> fn(c: Card) { win_points(c.winners) } + |> int.add(acc) +} + +fn win_more_cards(cards: List(String), count: Dict(Int, Int)) { + case cards { + [] -> + count + |> dict.values + |> int.sum + [raw_card, ..rest] -> { + let card = parse_card(raw_card) + case card.winners { + 0 -> win_more_cards(rest, count) + n -> win_more_cards(rest, update_counts(n, card, count)) + } + } + } +} + +fn update_counts(n: Int, card: Card, count: Dict(Int, Int)) -> Dict(Int, Int) { + let assert Ok(bonus) = dict.get(count, card.number) + use acc, n <- list.fold(list.range(card.number + 1, card.number + n), count) + use c <- dict.update(acc, n) + case c { + Some(i) -> i + bonus + None -> panic as "won a card that doesn't exist in the card pile" + } +} + +pub fn part2(input: String) { + let cards = string.split(input, "\n") + + let count = + list.range(1, list.length(cards)) + |> list.map(fn(n) { #(n, 1) }) + |> dict.from_list() + + win_more_cards(cards, count) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("4") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day5/.gitignore b/aoc2023-gleam/src/day5/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day5/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day5/solve.gleam b/aoc2023-gleam/src/day5/solve.gleam new file mode 100644 index 0000000..58e2ae0 --- /dev/null +++ b/aoc2023-gleam/src/day5/solve.gleam @@ -0,0 +1,167 @@ +import adglent.{First, Second} +import gleam/io +import gleam/string +import gleam/result +import gleam/list.{Continue, Stop} +import gleam/int +import gleam/function + +// Types ------------------------------------------------------------------------------------------- + +pub type Almanac { + Almanac(seeds: List(Int), mappers: List(Mapper)) +} + +pub type MappingRange { + MRange(start: Int, end: Int, offset: Int) +} + +pub type SeedRange { + SRange(start: Int, end: Int) +} + +type Mapper = + List(MappingRange) + +// Parsing ----------------------------------------------------------------------------------------- + +fn parse_input(input: String) { + let assert ["seeds: " <> raw_seeds, ..raw_mappers] = + string.split(input, on: "\n\n") + + let seeds = string_to_int_list(raw_seeds) + let mappers = + list.map( + raw_mappers, + function.compose(string.split(_, on: "\n"), parse_mapper), + ) + Almanac(seeds, mappers) +} + +fn string_to_int_list(str: String) { + str + |> string.split(on: " ") + |> list.map(int.parse) + |> result.values +} + +fn parse_mapper(strs: List(String)) -> Mapper { + let assert [_, ..raw_ranges] = strs + list.map(raw_ranges, parse_mrange) + |> list.sort(fn(a, b) { int.compare(a.start, b.start) }) +} + +fn parse_mrange(str: String) -> MappingRange { + let assert [destination, source, range_width] = string_to_int_list(str) + MRange(source, source + range_width - 1, destination - source) +} + +// Part 1 ------------------------------------------------------------------------------------------ + +pub fn part1(input: String) { + let Almanac(seeds, mappers) = parse_input(input) + + list.map(seeds, list.fold(over: mappers, from: _, with: correspond)) + |> list.reduce(int.min) + |> result.unwrap(0) + |> string.inspect +} + +fn correspond(n: Int, mapper: Mapper) { + use acc, mrange <- list.fold_until(over: mapper, from: n) + case mrange.start <= acc && acc <= mrange.end { + True -> Stop(acc + mrange.offset) + False -> Continue(acc) + } +} + +// Part 2 ------------------------------------------------------------------------------------------ + +pub fn part2(input: String) { + let Almanac(seeds, mappers) = parse_input(input) + + let assert [SRange(answer, _), ..] = + seeds + |> list.sized_chunk(into: 2) + |> list.map(fn(chunk) { + let assert [start, length] = chunk + [SRange(start, start + length - 1)] + |> remap_all_seed_ranges(mappers) + }) + |> list.flatten() + |> list.sort(fn(a, b) { int.compare(a.start, b.start) }) + + string.inspect(answer) +} + +fn remap_all_seed_ranges(srs: List(SeedRange), mappers: List(Mapper)) { + case mappers { + [] -> srs + [mapper, ..rest] -> + list.flat_map(srs, remap_range(_, mapper)) + |> remap_all_seed_ranges(rest) + } +} + +fn remap_range(r: SeedRange, mapper: Mapper) -> List(SeedRange) { + do_remap_range(r, mapper, []) +} + +fn transform_range(r: SeedRange, mapper: MappingRange) -> SeedRange { + SRange(r.start + mapper.offset, r.end + mapper.offset) +} + +fn do_remap_range(r: SeedRange, mapper: Mapper, acc: List(SeedRange)) { + case mapper { + // no more mappings -> no mapping covers this range + [] -> [r, ..acc] + // range is to the left of current mapping -> no mapping covers this range + [m, ..] if r.end < m.start -> [r, ..acc] + // range is to the right of current mapping -> move to next mapping + [m, ..ms] if r.start > m.end -> do_remap_range(r, ms, acc) + // range is fully inside mapping -> range is transformed + [m, ..] if r.start >= m.start && r.end <= m.end -> [ + transform_range(r, m), + ..acc + ] + // range overlaps start but not end -> left side not transformed, right side transformed + [m, ..] if r.start < m.start && r.end <= m.end -> [ + SRange(r.start, m.start - 1), + transform_range(SRange(m.start, r.end), m), + ..acc + ] + // range overlaps end but not start -> left side transformed, right side moves to next mapping + [m, ..ms] if r.start >= m.start && r.end > m.end -> + do_remap_range( + SRange(m.end + 1, r.end), + ms, + [transform_range(SRange(r.start, m.end), m), ..acc], + ) + // mapping is fully inside range -> left not transformed, middle transformed, right to next + [m, ..ms] -> + do_remap_range( + SRange(m.end + 1, r.end), + ms, + [ + SRange(r.start, m.start - 1), + transform_range(SRange(m.start, m.end), m), + ..acc + ], + ) + } +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("5") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day6/.gitignore b/aoc2023-gleam/src/day6/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day6/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day6/solve.gleam b/aoc2023-gleam/src/day6/solve.gleam new file mode 100644 index 0000000..88044c4 --- /dev/null +++ b/aoc2023-gleam/src/day6/solve.gleam @@ -0,0 +1,85 @@ +import adglent.{First, Second} +import gleam/io +import gleam/string +import gleam/int +import gleam/list +import gleam/result + +type Race { + Race(time: Int, distance: Int) +} + +fn parse_with_bad_kerning(input: String) { + input + |> string.split("\n") + |> list.map(fn(str) { + str + |> string.split(" ") + |> list.map(int.parse) + |> result.values + }) + |> list.transpose + |> list.map(fn(ns) { + let assert [t, d] = ns + Race(t, d) + }) +} + +fn find_bound(race: Race, button_time: Int, step: Int) { + let travel_time = race.time - button_time + case button_time * travel_time > race.distance { + True -> button_time + False -> find_bound(race, button_time + step, step) + } +} + +fn lower_bound(race: Race) { + find_bound(race, 1, 1) +} + +fn upper_bound(race: Race) { + find_bound(race, race.time, -1) +} + +pub fn part1(input: String) { + { + use acc, race <- list.fold(parse_with_bad_kerning(input), 1) + acc * { upper_bound(race) - lower_bound(race) + 1 } + } + |> string.inspect +} + +fn parse_properly(input: String) { + input + |> string.replace(" ", "") + |> string.split("\n") + |> list.flat_map(string.split(_, ":")) + |> list.map(int.parse) + |> result.values +} + +pub fn part2(input: String) { + let assert [time, distance] = + input + |> parse_properly + + let race = Race(time, distance) + + upper_bound(race) - lower_bound(race) + 1 + |> string.inspect +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("6") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day7/.gitignore b/aoc2023-gleam/src/day7/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day7/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day7/solve.gleam b/aoc2023-gleam/src/day7/solve.gleam new file mode 100644 index 0000000..4454883 --- /dev/null +++ b/aoc2023-gleam/src/day7/solve.gleam @@ -0,0 +1,140 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/function +import gleam/int +import gleam/io +import gleam/list +import gleam/order.{type Order, Eq, Lt} +import gleam/string + +// Types ------------------------------------------------------------------------------------------- + +type Hand { + Hand(cards: List(Int), wager: Int) +} + +// Common functions -------------------------------------------------------------------------------- + +fn parse_hand(str: String) -> Hand { + let assert [cards, wager] = string.split(str, " ") + let cards = + string.to_graphemes(cards) + |> list.map(card_rank) + let assert Ok(wager) = int.parse(wager) + + Hand(cards, wager) +} + +fn classify_hand(hand: Hand) -> Int { + case list.length(list.unique(hand.cards)), card_counts(hand) { + 1, _ -> 8 + 2, [1, 4] -> 7 + 2, [2, 3] -> 6 + 3, [1, 1, 3] -> 5 + 3, [1, 2, 2] -> 4 + 4, _ -> 3 + 5, _ -> 2 + _, _ -> 1 + } +} + +fn card_counts(hand: Hand) { + hand.cards + |> list.sort(int.compare) + |> list.chunk(function.identity) + |> list.map(list.length) + |> list.sort(int.compare) +} + +fn card_rank(card: String) -> Int { + case int.parse(card), card { + Ok(n), _ -> n + _, "A" -> 14 + _, "K" -> 13 + _, "Q" -> 12 + _, "J" -> 11 + _, "T" -> 10 + _, _ -> 1 + } +} + +fn compare_hands(hand1: Hand, hand2: Hand, using: fn(Hand) -> Int) -> Order { + case int.compare(using(hand1), using(hand2)) { + Eq -> compare_top_card(hand1.cards, hand2.cards) + other -> other + } +} + +fn compare_top_card(cards1: List(Int), cards2: List(Int)) -> Order { + use <- bool.guard(cards1 == [] || cards2 == [], Eq) + let assert [c1, ..rest1] = cards1 + let assert [c2, ..rest2] = cards2 + case int.compare(c1, c2) { + Eq -> compare_top_card(rest1, rest2) + other -> other + } +} + +fn part(input: String, comparator: fn(Hand, Hand) -> Order) { + input + |> string.split("\n") + |> list.map(parse_hand) + |> list.sort(comparator) + |> list.index_map(fn(i, h) { { i + 1 } * h.wager }) + |> int.sum + |> string.inspect +} + +// Part 1 ------------------------------------------------------------------------------------------ + +pub fn part1(input: String) { + part(input, compare_without_wilds) +} + +fn compare_without_wilds(hand1: Hand, hand2: Hand) { + compare_hands(hand1, hand2, classify_hand) +} + +// Part 2 ------------------------------------------------------------------------------------------ + +pub fn part2(input: String) { + part(string.replace(input, "J", "*"), compare_hands_considering_jokers) +} + +fn find_best_joker_substitution(hand: Hand) { + use acc, card <- list.fold(list.range(2, 14), Hand([], 0)) + let subbed_cards = { + use c <- list.map(hand.cards) + case c { + 1 -> card + other -> other + } + } + let subbed_hand = Hand(..hand, cards: subbed_cards) + case compare_hands(acc, subbed_hand, classify_hand) { + Lt -> subbed_hand + _ -> acc + } +} + +fn compare_hands_considering_jokers(hand1: Hand, hand2: Hand) -> Order { + use hand <- compare_hands(hand1, hand2) + hand + |> find_best_joker_substitution + |> classify_hand +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("7") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day8/.gitignore b/aoc2023-gleam/src/day8/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day8/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day8/solve.gleam b/aoc2023-gleam/src/day8/solve.gleam new file mode 100644 index 0000000..6b36e2d --- /dev/null +++ b/aoc2023-gleam/src/day8/solve.gleam @@ -0,0 +1,91 @@ +import adglent.{First, Second} +import gleam/bool +import gleam/dict.{type Dict} +import gleam/io +import gleam/iterator.{type Iterator, Next} +import gleam/list +import gleam/option.{Some} +import gleam/string +import gleam/regex.{type Match, Match} +import gleam_community/maths/arithmetics + +type Paths { + Paths(to_left: String, to_right: String) +} + +type Maze = + Dict(String, Paths) + +fn parse(input: String) -> #(Iterator(String), Dict(String, Paths)) { + let assert [directions_str, maze_str] = string.split(input, "\n\n") + + let directions = + directions_str + |> string.to_graphemes() + |> iterator.from_list + |> iterator.cycle + + let assert Ok(re) = regex.from_string("(...) = \\((...), (...)\\)") + let maze = + maze_str + |> string.split("\n") + |> list.map(fn(str) { + let assert [Match(submatches: [Some(name), Some(left), Some(right)], ..)] = + regex.scan(re, str) + #(name, Paths(left, right)) + }) + |> dict.from_list + + #(directions, maze) +} + +fn to_next_step( + current: String, + stop_at: String, + count: Int, + directions: Iterator(String), + maze: Maze, +) -> Int { + use <- bool.guard(string.ends_with(current, stop_at), count) + let assert Next(next_direction, rest_directions) = iterator.step(directions) + let assert Ok(paths) = dict.get(maze, current) + case next_direction { + "L" -> paths.to_left + "R" -> paths.to_right + _ -> panic as "bad direction" + } + |> to_next_step(stop_at, count + 1, rest_directions, maze) +} + +pub fn part1(input: String) -> Int { + let #(directions, maze) = parse(input) + + to_next_step("AAA", "ZZZ", 0, directions, maze) +} + +pub fn part2(input: String) -> Int { + let #(directions, maze) = parse(input) + + use acc, name <- list.fold(dict.keys(maze), 1) + case string.ends_with(name, "A") { + False -> acc + True -> + to_next_step(name, "Z", 0, directions, maze) + |> arithmetics.lcm(acc) + } +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("8") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/day9/.gitignore b/aoc2023-gleam/src/day9/.gitignore new file mode 100644 index 0000000..ae40cea --- /dev/null +++ b/aoc2023-gleam/src/day9/.gitignore @@ -0,0 +1 @@ +input.txt \ No newline at end of file diff --git a/aoc2023-gleam/src/day9/solve.gleam b/aoc2023-gleam/src/day9/solve.gleam new file mode 100644 index 0000000..a2cc7ae --- /dev/null +++ b/aoc2023-gleam/src/day9/solve.gleam @@ -0,0 +1,70 @@ +import adglent.{First, Second} +import gleam/io +import gleam/list +import gleam/string +import gleam/int + +fn parse(input: String, backwards backwards: Bool) -> List(List(Int)) { + use line <- list.map(string.split(input, "\n")) + use n_str <- list.map(maybe_backwards(string.split(line, " "), backwards)) + let assert Ok(n) = int.parse(n_str) + n +} + +fn maybe_backwards(xs: List(a), backwards: Bool) -> List(a) { + case backwards { + False -> list.reverse(xs) + True -> xs + } +} + +fn is_constant(ns: List(Int)) -> Bool { + case list.unique(ns) { + [_] -> True + _ -> False + } +} + +fn take_derivative(ns: List(Int)) -> List(Int) { + ns + |> list.window_by_2 + |> list.map(fn(tup) { tup.0 - tup.1 }) +} + +fn extrapolate(ns: List(Int)) { + case is_constant(ns), ns { + True, [n, ..] -> n + False, [n, ..] -> n + extrapolate(take_derivative(ns)) + _, _ -> panic as "list empty when it shouldn't be" + } +} + +fn part(input: String, backwards backwards: Bool) { + input + |> parse(backwards: backwards) + |> list.fold(0, fn(acc, ns) { extrapolate(ns) + acc }) + |> string.inspect +} + +pub fn part1(input: String) { + part(input, backwards: False) +} + +pub fn part2(input: String) { + part(input, backwards: True) +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input("9") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} diff --git a/aoc2023-gleam/src/utilities/array2d.gleam b/aoc2023-gleam/src/utilities/array2d.gleam new file mode 100644 index 0000000..8538129 --- /dev/null +++ b/aoc2023-gleam/src/utilities/array2d.gleam @@ -0,0 +1,74 @@ +import gleam/list +import gleam/dict.{type Dict} +import gleam/string +import gleam/int +import gleam/result + +pub type Posn { + Posn(r: Int, c: Int) +} + +pub type Array2D(a) = + Dict(Posn, a) + +pub fn add_posns(p1: Posn, p2: Posn) -> Posn { + case p1, p2 { + Posn(r1, c1), Posn(r2, c2) -> Posn(r1 + r2, c1 + c2) + } +} + +pub fn ortho_neighbors(p: Posn) -> List(Posn) { + let Posn(r, c) = p + [Posn(r + 1, c), Posn(r - 1, c), Posn(r, c + 1), Posn(r, c - 1)] +} + +pub fn to_2d_array(xss: List(List(a))) -> Array2D(a) { + to_2d_array_using(xss, fn(x) { Ok(x) }) +} + +pub fn to_2d_array_using( + xss: List(List(a)), + f: fn(a) -> Result(b, Nil), +) -> Array2D(b) { + { + use r, row <- list.index_map(xss) + use c, cell <- list.index_map(row) + case f(cell) { + Ok(contents) -> Ok(#(Posn(r, c), contents)) + Error(Nil) -> Error(Nil) + } + } + |> list.flatten + |> result.values + |> dict.from_list +} + +pub fn to_2d_intarray(xss: List(List(String))) -> Array2D(Int) { + { + use r, row <- list.index_map(xss) + use c, cell <- list.index_map(row) + let assert Ok(n) = int.parse(cell) + #(Posn(r, c), n) + } + |> list.flatten + |> dict.from_list +} + +pub fn to_list_of_lists(str: String) -> List(List(String)) { + str + |> string.split("\n") + |> list.map(string.to_graphemes) +} + +pub fn parse_grid(str: String) -> Array2D(String) { + parse_grid_using(str, fn(x) { Ok(x) }) +} + +pub fn parse_grid_using( + str: String, + f: fn(String) -> Result(a, Nil), +) -> Array2D(a) { + str + |> to_list_of_lists + |> to_2d_array_using(f) +} diff --git a/aoc2023-gleam/src/utilities/memo.gleam b/aoc2023-gleam/src/utilities/memo.gleam new file mode 100644 index 0000000..b06d8fd --- /dev/null +++ b/aoc2023-gleam/src/utilities/memo.gleam @@ -0,0 +1,57 @@ +import gleam/dict.{type Dict} +import gleam/otp/actor.{type Next, Continue, Stop} +import gleam/erlang/process.{type Subject, Normal} +import gleam/option.{None} + +const timeout = 1000 + +type Message(k, v) { + Shutdown + Get(key: k, client: Subject(Result(v, Nil))) + Set(key: k, value: v) +} + +type Server(k, v) = + Subject(Message(k, v)) + +pub opaque type Cache(k, v) { + Cache(server: Server(k, v)) +} + +fn handle_message( + message: Message(k, v), + dict: Dict(k, v), +) -> Next(Message(k, v), Dict(k, v)) { + case message { + Shutdown -> Stop(Normal) + Get(key, client) -> { + process.send(client, dict.get(dict, key)) + Continue(dict, None) + } + Set(key, value) -> Continue(dict.insert(dict, key, value), None) + } +} + +pub fn create(apply fun: fn(Cache(k, v)) -> t) -> t { + let assert Ok(server) = actor.start(dict.new(), handle_message) + let result = fun(Cache(server)) + process.send(server, Shutdown) + result +} + +pub fn set(in cache: Cache(k, v), for key: k, insert value: v) -> Nil { + process.send(cache.server, Set(key, value)) +} + +pub fn get(from cache: Cache(k, v), fetch key: k) -> Result(v, Nil) { + process.call(cache.server, fn(c) { Get(key, c) }, timeout) +} + +pub fn memoize(with cache: Cache(k, v), this key: k, apply fun: fn() -> v) -> v { + let result = case get(from: cache, fetch: key) { + Ok(value) -> value + Error(Nil) -> fun() + } + set(in: cache, for: key, insert: result) + result +} diff --git a/aoc2023-gleam/src/utilities/prioqueue.gleam b/aoc2023-gleam/src/utilities/prioqueue.gleam new file mode 100644 index 0000000..640748b --- /dev/null +++ b/aoc2023-gleam/src/utilities/prioqueue.gleam @@ -0,0 +1,62 @@ +//adapted from https://github.com/byronanderson/adventofcode2021/blob/main/gleam_advent/src/priority_queue.gleam + +import gleam/dict.{type Dict} + +type Ref + +@external(erlang, "erlang", "make_ref") +fn make_ref() -> Ref + +type PQueue(a) + +pub opaque type PriorityQueue(a) { + PriorityQueue(queue: PQueue(#(a, Ref)), refs: Dict(a, Ref)) +} + +type OutResult(a) { + Empty + Value(a, Int) +} + +@external(erlang, "pqueue2", "new") +fn new_() -> PQueue(a) + +@external(erlang, "pqueue2", "in") +fn insert_(item: a, prio: Int, queue: PQueue(a)) -> PQueue(a) + +@external(erlang, "pqueue2", "pout") +fn pop_(queue: PQueue(a)) -> #(OutResult(a), PQueue(a)) + +pub fn new() -> PriorityQueue(a) { + PriorityQueue(queue: new_(), refs: dict.new()) +} + +pub fn insert( + queue: PriorityQueue(a), + value: a, + priority: Int, +) -> PriorityQueue(a) { + let ref = make_ref() + + let refs = + queue.refs + |> dict.insert(value, ref) + + PriorityQueue(refs: refs, queue: insert_(#(value, ref), priority, queue.queue), + ) +} + +pub fn pop(queue: PriorityQueue(a)) -> Result(#(a, PriorityQueue(a)), Nil) { + case pop_(queue.queue) { + #(Value(#(value, ref), _priority), pqueue) -> { + let assert Ok(recently_enqueued_ref) = dict.get(queue.refs, value) + case recently_enqueued_ref == ref { + True -> Ok(#(value, PriorityQueue(refs: queue.refs, queue: pqueue))) + False -> pop(PriorityQueue(refs: queue.refs, queue: pqueue)) + } + } + #(Empty, _pqueue) -> { + Error(Nil) + } + } +} diff --git a/aoc2023-gleam/test/aoc2023_test.gleam b/aoc2023-gleam/test/aoc2023_test.gleam new file mode 100644 index 0000000..2b696a4 --- /dev/null +++ b/aoc2023-gleam/test/aoc2023_test.gleam @@ -0,0 +1,5 @@ +import showtime + +pub fn main() { + showtime.main() +} diff --git a/aoc2023-gleam/test/day1/day1_test.gleam b/aoc2023-gleam/test/day1/day1_test.gleam new file mode 100644 index 0000000..374653c --- /dev/null +++ b/aoc2023-gleam/test/day1/day1_test.gleam @@ -0,0 +1,57 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day1/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet", + "142", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen", + "281", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day10/day10_test.gleam b/aoc2023-gleam/test/day10/day10_test.gleam new file mode 100644 index 0000000..be9d82e --- /dev/null +++ b/aoc2023-gleam/test/day10/day10_test.gleam @@ -0,0 +1,60 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day10/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "7-F7- +.FJ|7 +SJLL7 +|F--J +LJ.LJ", + "8", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "........... +.S-------7. +.|F-----7|. +.||OOOOO||. +.||OOOOO||. +.|L-7OF-J|. +.|II|O|II|. +.L--JOL--J. +.....O.....", + "4", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day11/day11_test.gleam b/aoc2023-gleam/test/day11/day11_test.gleam new file mode 100644 index 0000000..8bb8c06 --- /dev/null +++ b/aoc2023-gleam/test/day11/day11_test.gleam @@ -0,0 +1,66 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day11/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#.....", + "374", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#.....", + "8410", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day12/day12_test.gleam b/aoc2023-gleam/test/day12/day12_test.gleam new file mode 100644 index 0000000..3daf0e9 --- /dev/null +++ b/aoc2023-gleam/test/day12/day12_test.gleam @@ -0,0 +1,48 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day12/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "???.### 1,1,3 +.??..??...?##. 1,1,3 +?#?#?#?#?#?#?#? 1,3,1,6 +????.#...#... 4,1,1 +????.######..#####. 1,6,5 +?###???????? 3,2,1", + "21", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day13/day13_test.gleam b/aoc2023-gleam/test/day13/day13_test.gleam new file mode 100644 index 0000000..7c65bed --- /dev/null +++ b/aoc2023-gleam/test/day13/day13_test.gleam @@ -0,0 +1,76 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day13/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#", + "405", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#", + "400", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day14/day14_test.gleam b/aoc2023-gleam/test/day14/day14_test.gleam new file mode 100644 index 0000000..8efa74e --- /dev/null +++ b/aoc2023-gleam/test/day14/day14_test.gleam @@ -0,0 +1,66 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day14/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#....", + "136", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#....", + "64", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day15/day15_test.gleam b/aoc2023-gleam/test/day15/day15_test.gleam new file mode 100644 index 0000000..0ecaecc --- /dev/null +++ b/aoc2023-gleam/test/day15/day15_test.gleam @@ -0,0 +1,42 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day15/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example("rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7", "1320"), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example("rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7", "145"), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day16/day16_test.gleam b/aoc2023-gleam/test/day16/day16_test.gleam new file mode 100644 index 0000000..036504e --- /dev/null +++ b/aoc2023-gleam/test/day16/day16_test.gleam @@ -0,0 +1,66 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day16/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + ".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|....", + 46, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + ".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|....", + 51, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day17/day17_test.gleam b/aoc2023-gleam/test/day17/day17_test.gleam new file mode 100644 index 0000000..c1ebd22 --- /dev/null +++ b/aoc2023-gleam/test/day17/day17_test.gleam @@ -0,0 +1,55 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day17/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "2413432311323 +3215453535623 +3255245654254 +3446585845452 +4546657867536 +1438598798454 +4457876987766 +3637877979653 +4654967986887 +4564679986453 +1224686865563 +2546548887735 +4322674655533", + "102", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day18/day18_test.gleam b/aoc2023-gleam/test/day18/day18_test.gleam new file mode 100644 index 0000000..7b510c8 --- /dev/null +++ b/aoc2023-gleam/test/day18/day18_test.gleam @@ -0,0 +1,74 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day18/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)", + "62", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)", + "952408144115", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day19/day19_test.gleam b/aoc2023-gleam/test/day19/day19_test.gleam new file mode 100644 index 0000000..c911de5 --- /dev/null +++ b/aoc2023-gleam/test/day19/day19_test.gleam @@ -0,0 +1,80 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day19/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}", + "19114", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}", + "167409079868000", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day2/day2_test.gleam b/aoc2023-gleam/test/day2/day2_test.gleam new file mode 100644 index 0000000..28a65da --- /dev/null +++ b/aoc2023-gleam/test/day2/day2_test.gleam @@ -0,0 +1,57 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day2/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green", + 8, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green", + 2286, + ), + Example("Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green", 48), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day20/day20_test.gleam b/aoc2023-gleam/test/day20/day20_test.gleam new file mode 100644 index 0000000..92e8afb --- /dev/null +++ b/aoc2023-gleam/test/day20/day20_test.gleam @@ -0,0 +1,56 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day20/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "broadcaster -> a, b, c +%a -> b +%b -> c +%c -> inv +&inv -> a", + "32000000", + ), + Example( + "broadcaster -> a +%a -> inv, con +&inv -> b +%b -> con +&con -> output +output -> ", + "11687500", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day21/day21_test.gleam b/aoc2023-gleam/test/day21/day21_test.gleam new file mode 100644 index 0000000..5f46808 --- /dev/null +++ b/aoc2023-gleam/test/day21/day21_test.gleam @@ -0,0 +1,38 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day21/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day22/day22_test.gleam b/aoc2023-gleam/test/day22/day22_test.gleam new file mode 100644 index 0000000..3f8c0ca --- /dev/null +++ b/aoc2023-gleam/test/day22/day22_test.gleam @@ -0,0 +1,60 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day22/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "1,0,1~1,2,1 +0,0,2~2,0,2 +0,2,3~2,2,3 +0,0,4~0,2,4 +2,0,5~2,2,5 +0,1,6~2,1,6 +1,1,8~1,1,9", + 5, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "1,0,1~1,2,1 +0,0,2~2,0,2 +0,2,3~2,2,3 +0,0,4~0,2,4 +2,0,5~2,2,5 +0,1,6~2,1,6 +1,1,8~1,1,9", + 7, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day23/day23_test.gleam b/aoc2023-gleam/test/day23/day23_test.gleam new file mode 100644 index 0000000..206571c --- /dev/null +++ b/aoc2023-gleam/test/day23/day23_test.gleam @@ -0,0 +1,92 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day23/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "#.##################### +#.......#########...### +#######.#########.#.### +###.....#.>.>.###.#.### +###v#####.#v#.###.#.### +###.>...#.#.#.....#...# +###v###.#.#.#########.# +###...#.#.#.......#...# +#####.#.#.#######.#.### +#.....#.#.#.......#...# +#.#####.#.#.#########v# +#.#...#...#...###...>.# +#.#.#v#######v###.###v# +#...#.>.#...>.>.#.###.# +#####v#.#.###v#.#.###.# +#.....#...#...#.#.#...# +#.#########.###.#.#.### +#...###...#...#...#.### +###.###.#.###v#####v### +#...#...#.#.>.>.#.>.### +#.###.###.#.###.#.#v### +#.....###...###...#...# +#####################.#", + 94, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "#.##################### +#.......#########...### +#######.#########.#.### +###.....#.>.>.###.#.### +###v#####.#v#.###.#.### +###.>...#.#.#.....#...# +###v###.#.#.#########.# +###...#.#.#.......#...# +#####.#.#.#######.#.### +#.....#.#.#.......#...# +#.#####.#.#.#########v# +#.#...#...#...###...>.# +#.#.#v#######v###.###v# +#...#.>.#...>.>.#.###.# +#####v#.#.###v#.#.###.# +#.....#...#...#.#.#...# +#.#########.###.#.#.### +#...###...#...#...#.### +###.###.#.###v#####v### +#...#...#.#.>.>.#.>.### +#.###.###.#.###.#.#v### +#.....###...###...#...# +#####################.#", + 154, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day3/day3_test.gleam b/aoc2023-gleam/test/day3/day3_test.gleam new file mode 100644 index 0000000..30e17a9 --- /dev/null +++ b/aoc2023-gleam/test/day3/day3_test.gleam @@ -0,0 +1,66 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day3/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598..", + 4361, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598..", + 467_835, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day4/day4_test.gleam b/aoc2023-gleam/test/day4/day4_test.gleam new file mode 100644 index 0000000..324fe36 --- /dev/null +++ b/aoc2023-gleam/test/day4/day4_test.gleam @@ -0,0 +1,58 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day4/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11", + 13, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11", + 30, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day5/day5_test.gleam b/aoc2023-gleam/test/day5/day5_test.gleam new file mode 100644 index 0000000..86a8692 --- /dev/null +++ b/aoc2023-gleam/test/day5/day5_test.gleam @@ -0,0 +1,112 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day5/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4", + "35", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4", + "46", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day6/day6_test.gleam b/aoc2023-gleam/test/day6/day6_test.gleam new file mode 100644 index 0000000..c551993 --- /dev/null +++ b/aoc2023-gleam/test/day6/day6_test.gleam @@ -0,0 +1,50 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day6/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "Time: 7 15 30 +Distance: 9 40 200", + "288", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "Time: 7 15 30 +Distance: 9 40 200", + "71503", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day7/day7_test.gleam b/aoc2023-gleam/test/day7/day7_test.gleam new file mode 100644 index 0000000..f7f8454 --- /dev/null +++ b/aoc2023-gleam/test/day7/day7_test.gleam @@ -0,0 +1,56 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day7/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483", + "6440", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483", + "5905", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day8/day8_test.gleam b/aoc2023-gleam/test/day8/day8_test.gleam new file mode 100644 index 0000000..2cd499a --- /dev/null +++ b/aoc2023-gleam/test/day8/day8_test.gleam @@ -0,0 +1,61 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day8/solve + +type Problem1AnswerType = + Int + +type Problem2AnswerType = + Int + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ)", + 6, + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX)", + 6, + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-gleam/test/day9/day9_test.gleam b/aoc2023-gleam/test/day9/day9_test.gleam new file mode 100644 index 0000000..84fd3ba --- /dev/null +++ b/aoc2023-gleam/test/day9/day9_test.gleam @@ -0,0 +1,52 @@ +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day9/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [ + Example( + "0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45", + "114", + ), +] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [ + Example( + "0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45", + "2", + ), +] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} diff --git a/aoc2023-other/day-01/day-01.rkt b/aoc2023-other/day-01/day-01.rkt deleted file mode 100644 index b720f79..0000000 --- a/aoc2023-other/day-01/day-01.rkt +++ /dev/null @@ -1,38 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(define calibration-values (fetch-aoc-input (find-session) 2023 1)) - -(define (to-number str) - (match (string->number str) - [#false (hash-ref word-to-digit str)] - [n n])) - -(define (parse-calibration-value v valid) - (for/fold ([acc '()] [value v] #:result (+ (to-number (first acc)) (* 10 (to-number (last acc))))) - ([_ (in-naturals)]) - #:break (equal? value "") - (let ([possible-prefix (findf (curry string-prefix? value) valid)]) - (if possible-prefix - (values (cons possible-prefix acc) (substring value 1)) - (values acc (substring value 1)))))) - -(define (total-calibration input valid) - (~> input - (string-trim) - (string-split "\n") - (map (λ~> (parse-calibration-value valid)) _) - (apply + _))) - -;; part 1 - -(define valid-for-part-1 (~> (range 1 10) (map ~a _))) -(total-calibration calibration-values valid-for-part-1) - -;; part 2 -(define word-to-digit - (hash "one" 1 "two" 2 "three" 3 "four" 4 "five" 5 "six" 6 "seven" 7 "eight" 8 "nine" 9)) -(define valid-for-part-2 (append valid-for-part-1 (hash-keys word-to-digit))) -(total-calibration calibration-values valid-for-part-2) diff --git a/aoc2023-other/day-02/day-02-parser.rkt b/aoc2023-other/day-02/day-02-parser.rkt deleted file mode 100644 index 76cc24f..0000000 --- a/aoc2023-other/day-02/day-02-parser.rkt +++ /dev/null @@ -1,55 +0,0 @@ -#lang racket - -(require racket/hash - advent-of-code - data/applicative - data/either - data/monad - megaparsack - megaparsack/text - threading) - -(struct game (id r g b)) - -(define cube/p - (do [n <- integer/p] - space/p - [c <- (or/p (string/p "red") - (string/p "blue") - (string/p "green"))] - (pure (cons c n)))) - -(define draw/p - (do [xs <- (many/p cube/p #:min 1 #:max 3 #:sep (string/p ", "))] - (pure (apply hash (flatten xs))))) - -(define all-draws/p - (do (string/p "Game ") - [id <- integer/p] - (string/p ": ") - [all-draws <- (many/p draw/p #:min 1 #:sep (string/p "; "))] - (define maxima - (foldl (curry hash-union #:combine max) - (hash "red" 0 "green" 0 "blue" 0) - all-draws)) - (pure (game id - (hash-ref maxima "red") - (hash-ref maxima "green") - (hash-ref maxima "blue"))))) - -(define game-maxima - (~>> (open-aoc-input (find-session) 2023 2) - port->lines - (map (λ~>> (parse-string all-draws/p) - from-either)))) - -;; part 1 -(for/sum ([m (in-list game-maxima)] - #:unless (or (> (game-r m) 12) - (> (game-g m) 13) - (> (game-b m) 14))) - (game-id m)) - -;; part 2 -(for/sum ([m (in-list game-maxima)]) - (* (game-r m) (game-g m) (game-b m))) diff --git a/aoc2023-other/day-02/day-02.rkt b/aoc2023-other/day-02/day-02.rkt deleted file mode 100644 index 973d20c..0000000 --- a/aoc2023-other/day-02/day-02.rkt +++ /dev/null @@ -1,35 +0,0 @@ -#lang racket - -(require advent-of-code) - -(struct roll (id red green blue)) - -(define all-games - (for/list ([raw-game (in-list (port->lines (open-aoc-input (find-session) 2023 2)))] - #:do [(define game (string-trim raw-game "Game ")) - (match-define (list id trials) (string-split game ": "))]) - (for/list ([trial (in-list (string-split trials "; "))]) - (for/fold ([acc (roll (string->number id) 0 0 0)]) - ([color (in-list (string-split trial ", "))]) - (match (string-split color) - [(list (app string->number n) "red") (struct-copy roll acc [red n])] - [(list (app string->number n) "green") (struct-copy roll acc [green n])] - [(list (app string->number n) "blue") (struct-copy roll acc [blue n])]))))) - -;; part 1 -(for/sum ([game (in-list all-games)] - #:when (andmap (λ (g) (and ((roll-red g) . <= . 12) - ((roll-green g) . <= . 13) - ((roll-blue g) . <= . 14))) - game)) - (roll-id (first game))) - -;; part 2 -(for/sum ([game (in-list all-games)]) - (define max-cubes - (for/fold ([acc (roll #f 0 0 0)]) ([r (in-list game)]) - (roll #f - (max (roll-red acc) (roll-red r)) - (max (roll-green acc) (roll-green r)) - (max (roll-blue acc) (roll-blue r))))) - (* (roll-red max-cubes) (roll-green max-cubes) (roll-blue max-cubes))) diff --git a/aoc2023-other/day-03/day-03.rkt b/aoc2023-other/day-03/day-03.rkt deleted file mode 100644 index 60e81a6..0000000 --- a/aoc2023-other/day-03/day-03.rkt +++ /dev/null @@ -1,72 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(struct posn (x y) #:transparent) -(struct part (n posns) #:transparent) - -(define (make-board port) - (for*/hash ([(row y) (in-indexed (port->lines port))] - [(col x) (in-indexed (string->list row))] - #:unless (equal? col #\.)) - (define v - (cond - [(string->number (string col))] - [(equal? col #\*) 'gear] - [else 'other])) - (values (posn x y) v))) - -(define board (~> (open-aoc-input (find-session) 2023 3 #:cache #true) make-board)) - -(define (posn (for/hash ([(k v) (in-hash b)] #:when (f v)) - (values k v)) - hash->list - (sort posn> part-posns (append-map neighbors) remove-duplicates)) -(define (symbol-in-neighbors b pt acc) - (~>> pt - to-neighbors - (ormap (λ (p) (let ([lookup (hash-ref b p #f)]) - (or (equal? lookup 'gear) (equal? lookup 'other))))) - ((λ (bool) (if bool (+ acc (part-n pt)) acc))))) - -;; part 1 -(define parts (~>> board (find-cells integer?) group-into-parts)) -(foldl (curry symbol-in-neighbors board) 0 parts) - -;; part 2 -(define gears (~>> board (find-cells (curry equal? 'gear)) (map car))) -(define parts-with-neighbors (map (λ (pt) (struct-copy part pt [posns (to-neighbors pt)])) parts)) - -(define (find-parts-near-gear pts gear) - (filter-map (λ (pt) (and (findf (curry equal? gear) (part-posns pt)) (part-n pt))) pts)) - -(~>> gears - (filter-map (λ~>> (find-parts-near-gear parts-with-neighbors) - ((λ (ns) (if (= (length ns) 2) (* (first ns) (second ns)) #f))))) - (apply +)) diff --git a/aoc2023-other/day-04/day-04.rkt b/aoc2023-other/day-04/day-04.rkt deleted file mode 100644 index 7a357c5..0000000 --- a/aoc2023-other/day-04/day-04.rkt +++ /dev/null @@ -1,40 +0,0 @@ -#lang racket - -(require advent-of-code - data/applicative - data/either - data/monad - megaparsack - megaparsack/text - threading) - -(struct card (n wins)) - -(define card/p - (do (string/p "Card") - (many/p space/p) - [n <- integer/p] - (string/p ":") - (many/p space/p) - [winners <- (many-until/p integer/p #:sep (many/p space/p) #:end (try/p (string/p " | ")))] - (many/p space/p) - [has <- (many+/p integer/p #:sep (many/p space/p))] - (pure (card n (set-count (set-intersect (first winners) has)))))) - -(define raw-cards (~> (open-aoc-input (find-session) 2023 4 #:cache #true) port->lines)) - -;; part 1 -(for/sum ([raw-card (in-list raw-cards)] - #:do [(match-define (success (card _ wins)) (parse-string card/p raw-card))] - #:unless (= wins 0)) - (expt 2 (sub1 wins))) - -;; part 2 -(for/fold ([counts (for/hash ([n (in-inclusive-range 1 (length raw-cards))]) - (values n 1))] - #:result (apply + (hash-values counts))) - ([raw-card (in-list raw-cards)] - #:do [(match-define (success (card n wins)) (parse-string card/p raw-card))]) - (define bonus-range (inclusive-range (+ n 1) (+ n wins))) - (define won-cards (hash-ref counts n)) - (foldl (λ (n acc) (hash-update acc n (curry + won-cards))) counts bonus-range)) diff --git a/aoc2023-other/day-05/day-05.rkt b/aoc2023-other/day-05/day-05.rkt deleted file mode 100644 index 5b9aa52..0000000 --- a/aoc2023-other/day-05/day-05.rkt +++ /dev/null @@ -1,91 +0,0 @@ -#lang racket - -(require advent-of-code - algorithms - threading) - -(struct map-range (start end offset)) -(struct seed-range (start end)) - -(define input (fetch-aoc-input (find-session) 2023 5 #:cache #true)) - -(match-define (list* raw-seeds raw-mappings) (string-split input "\n\n")) - -(define seeds-naive (~> raw-seeds (string-split " ") rest (map string->number _))) -(define mappers - (for/list ([raw-mapping (in-list raw-mappings)]) - (for/lists (map-ranges #:result (sort map-ranges < #:key map-range-start)) - ([raw-map-range (in-list (rest (string-split raw-mapping "\n")))] - #:do [(match-define (list dest source width) - (~> raw-map-range (string-split _ " ") (map string->number _)))]) - (map-range source (+ source width -1) (- dest source))))) - -;; part 1 -(define (in-map-range? n mr) - (<= (map-range-start mr) n (map-range-end mr))) - -(define (transform-value mapper n) - (match mapper - ['() n] - [(list* mr _) - #:when (in-map-range? n mr) - (+ n (map-range-offset mr))] - [(list* _ rest-mapper) (transform-value rest-mapper n)])) - -(for/lists (transforms #:result (apply min transforms)) - ([seed (in-list seeds-naive)]) - (foldl transform-value seed mappers)) - -;; part 2 -(define (remap-range r mapper [acc '()]) - (match-define (seed-range r-start r-end) r) - (match mapper - ; mapper exhausted - ['() (cons r acc)] - ; range to the left - not covered by this mapping, so keep as-is - [(list* (map-range m-start _ _) _) - #:when (< r-end m-start) - (cons r acc)] - ; range to the right - move to next map-range - [(list* (map-range _ m-end _) ms) - #:when (< m-end r-start) - (remap-range r ms acc)] - ; range is inside map-range - transform whole range - [(list* (map-range m-start m-end offset) _) - #:when (and (<= m-start r-start) (<= r-end m-end)) - (cons (seed-range (+ r-start offset) (+ r-end offset)) acc)] - ; range overlaps start only - keep left side, transform right side - [(list* (map-range m-start m-end offset) ms) - #:when (and (< r-start m-start) (<= r-end m-end)) - (remap-range (seed-range (add1 m-end) r-end) - ms - (cons (seed-range (+ m-start offset) (+ r-end offset)) acc))] - ; range overlaps end - transform left side, pass right side - [(list* (map-range m-start m-end offset) ms) - #:when (and (< m-start r-start) (<= m-end r-end)) - (remap-range (seed-range (add1 m-end) r-end) - ms - (cons (seed-range (+ r-start offset) (+ m-end offset)) acc))] - ; range overlaps whole map-range - keep left side, transform middle, pass right side - [(list* (map-range m-start m-end offset) ms) - (remap-range (seed-range (add1 m-end) r-end) - ms - (cons (seed-range (+ m-start offset) (+ m-end offset)) - (cons (seed-range (add1 m-end) r-end) acc)))])) - -(define (remap-ranges rs mappers) - (cond - [(empty? mappers) rs] - [else - (~>> rs (append-map (curryr remap-range (first mappers))) (remap-ranges _ (rest mappers)))])) - -(~> seeds-naive - (chunks-of 2) - (map (λ (xs) - (match-define (list start width) xs) - (~> (list (seed-range start (+ start width -1))) - (remap-ranges mappers) - (argmin seed-range-start _))) - _) - (argmin seed-range-start _) - seed-range-start) diff --git a/aoc2023-other/day-06/day-06.rkt b/aoc2023-other/day-06/day-06.rkt deleted file mode 100644 index 53ca9ee..0000000 --- a/aoc2023-other/day-06/day-06.rkt +++ /dev/null @@ -1,32 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(match-define (list times distances) - (~> (open-aoc-input (find-session) 2023 6 #:cache #true) port->lines)) - -;; part 1 -(define get-numbers (λ~> string-split (map string->number _) rest)) -(define (find-bound race-time dist button-time step) - (if (< dist (* button-time (- race-time button-time))) - button-time - (find-bound race-time dist (+ step button-time) step))) - -(define (lower-bound rtime dist) - (find-bound rtime dist 1 1)) -(define (upper-bound rtime dist) - (find-bound rtime dist rtime -1)) - -(for/fold ([acc 1]) - ([race-time (in-list (get-numbers times))] - [distance (in-list (get-numbers distances))]) - (* acc (add1 (- (upper-bound race-time distance) (lower-bound race-time distance))))) - -;; part 2 - -(define unkern (λ~>> get-numbers (apply ~a) string->number)) -(define big-time (unkern times)) -(define big-distance (unkern distances)) - -(add1 (- (upper-bound big-time big-distance) (lower-bound big-time big-distance))) diff --git a/aoc2023-other/day-07/day-07.rkt b/aoc2023-other/day-07/day-07.rkt deleted file mode 100644 index 30e629b..0000000 --- a/aoc2023-other/day-07/day-07.rkt +++ /dev/null @@ -1,82 +0,0 @@ -#lang racket - -(require advent-of-code - threading - memo) - -(struct hand (cards wager)) - -(define/match (card->int card) - [((? char-numeric?)) (~> card string string->number)] - [(#\A) 14] - [(#\K) 13] - [(#\Q) 12] - [(#\J) 11] - [(#\T) 10] - [(#\*) 1]) - -(define (parse-hand str #:jokers [jokers? #f]) - (match-define (list card-str wager-str) (string-split str)) - (define cards - (~> card-str - ((λ (str) (if jokers? (string-replace str "J" "*") str))) - string->list - (map card->int _))) - (define wager (~> wager-str string->number)) - (hand cards wager)) - -(define input (~> (open-aoc-input (find-session) 2023 7 #:cache #true) port->lines)) - -(define/memoize (identify-hand h) - (define freqs (~> h hand-cards (sort <) (group-by identity _) (map length _))) - (match freqs - [(list-no-order 5) 8] - [(list-no-order 1 4) 7] - [(list-no-order 2 3) 6] - [(list-no-order 1 1 3) 5] - [(list-no-order 1 2 2) 4] - [(list-no-order 1 1 1 2) 3] - [(list-no-order 1 1 1 1 1) 2] - [_ 1])) - -(define (compare-first-card cs1 cs2) - (if (= (first cs1) (first cs2)) - (compare-first-card (rest cs1) (rest cs2)) - (< (first cs1) (first cs2)))) - -(define (compare-hands with h1 h2) - (define rank1 (with h1)) - (define rank2 (with h2)) - (if (= rank1 rank2) (compare-first-card (hand-cards h1) (hand-cards h2)) (< rank1 rank2))) - -;; part 1 - -(define (compare-hands-no-wilds h1 h2) - (compare-hands identify-hand h1 h2)) - -(define (total-score in #:jokers [jokers? #false]) - (define sorted-hands - (~> in - (map (curry parse-hand #:jokers jokers?) _) - (sort (if jokers? compare-hands-no-wilds compare-hands-with-wilds)))) - (for/sum ([(h i) - (in-indexed sorted-hands)]) - (* (add1 i) (hand-wager h)))) - -(total-score input) - -;; part 2 - -(define/memoize (find-best-joker-substitution h) - (for/fold ([best-hand (hand '() 0)]) - ([wild (in-inclusive-range 2 14)]) - (define trial-hand - (hand (map (λ (c) (if (= c 1) wild c)) (hand-cards h)) (hand-wager h))) - (if (> (identify-hand trial-hand) (identify-hand best-hand)) - trial-hand - best-hand))) - -(define (compare-hands-with-wilds h1 h2) - (compare-hands (λ~> find-best-joker-substitution identify-hand) h1 h2)) - -(total-score input #:jokers #true) diff --git a/aoc2023-other/day-08/day-08.rkt b/aoc2023-other/day-08/day-08.rkt deleted file mode 100644 index 06daafa..0000000 --- a/aoc2023-other/day-08/day-08.rkt +++ /dev/null @@ -1,36 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(struct exits (left right) #:transparent) - -(match-define (list raw-directions raw-maze) - (~> (fetch-aoc-input (find-session) 2023 8 #:cache #true) (string-split "\n\n"))) - -(define directions (string->list raw-directions)) - -(define maze - (for/hash ([line (in-list (string-split raw-maze "\n"))]) - (match (regexp-match #rx"(...) = \\((...), (...)\\)" line) - [(list _ name left right) (values name (exits left right))]))) - -(define (to-next-node start end dirs maze) - (for/fold ([current start] - [acc 0] - #:result acc) - ([dir (in-cycle dirs)]) - #:break (string-suffix? current end) - (define node (hash-ref maze current)) - (case dir - [(#\L) (values (exits-left node) (add1 acc))] - [(#\R) (values (exits-right node) (add1 acc))]))) - -;; part 1 -(to-next-node "AAA" "ZZZ" directions maze) - -;; part 2 -(for/lists (ns #:result (apply lcm ns)) - ([start (in-list (hash-keys maze))] - #:when (string-suffix? start "A")) - (to-next-node start "Z" directions maze)) diff --git a/aoc2023-other/day-09/day-09-polynomial.rkt b/aoc2023-other/day-09/day-09-polynomial.rkt deleted file mode 100644 index 5bacb1f..0000000 --- a/aoc2023-other/day-09/day-09-polynomial.rkt +++ /dev/null @@ -1,17 +0,0 @@ -#lang racket - -(require advent-of-code - threading - simple-polynomial/tools) - -(define histories - (for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))]) - (~>> raw-history - string-split - (map string->number)))) - -(for/lists (left right #:result (cons (apply + left) (apply + right))) - ([history (in-list histories)]) - (define f (interpolate-at-integer-points history)) - (values (f -1) - (f (length history)))) diff --git a/aoc2023-other/day-09/day-09.rkt b/aoc2023-other/day-09/day-09.rkt deleted file mode 100644 index 5eda1eb..0000000 --- a/aoc2023-other/day-09/day-09.rkt +++ /dev/null @@ -1,32 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(define histories - (for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))]) - (~>> raw-history - string-split - (map string->number)))) - -(define (constant? xs) - (= 1 (length (remove-duplicates xs)))) - -(define/match (derivative xs) - [((list a b)) (list (- b a))] - [((list* a b _)) (cons (- b a) (derivative (rest xs)))]) - -(define (extrapolate xs) - (if (constant? xs) - (car xs) - (+ (last xs) (extrapolate (derivative xs))))) - -;; part 1 -(~>> histories - (map extrapolate) - (apply +)) - -;; part 2 -(~>> histories - (map (λ~> reverse extrapolate)) - (apply +)) diff --git a/aoc2023-other/day-10/day-10.rkt b/aoc2023-other/day-10/day-10.rkt deleted file mode 100644 index 64d8727..0000000 --- a/aoc2023-other/day-10/day-10.rkt +++ /dev/null @@ -1,97 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(struct posn (r c) #:transparent) - -(define/match (add-posns _p1 _p2) - [((posn x1 y1) (posn x2 y2)) (posn (+ x1 x2) (+ y1 y2))]) - -(define go-north (posn -1 0)) -(define go-south (posn 1 0)) -(define go-east (posn 0 1)) -(define go-west (posn 0 -1)) - -(define initial-directions - (list (cons go-north '(#\| #\7 #\F)) - (cons go-south '(#\| #\J #\L)) - (cons go-east '(#\- #\J #\7)) - (cons go-west '(#\- #\F #\L)))) - -(define/match (pipe-neighbors _pipe) - [(#\|) (list go-north go-south)] - [(#\-) (list go-east go-west)] - [(#\L) (list go-north go-east)] - [(#\F) (list go-south go-east)] - [(#\7) (list go-south go-west)] - [(#\J) (list go-north go-west)]) - -(define (make-pipe-grid in) - (for*/hash ([(row r) (in-indexed (string-split in "\n"))] - [(ch c) (in-indexed (string->list row))]) - (values (posn (add1 r) (add1 c)) ch))) - -(define (get-valid-S-neighbors S grid) - (for/list ([dir (in-list initial-directions)] - #:do [(match-define (cons d valid) dir)] - #:do [(define neighbor (add-posns d S))] - #:when (member (hash-ref grid neighbor 'none) valid)) - neighbor)) - -(define (to-next-pipe current previous grid [acc '()]) - (cond - [(equal? (hash-ref grid current #f) #\S) acc] - [else - (define next - (for/first ([d (in-list (pipe-neighbors (hash-ref grid current)))] - #:do [(define neighbor (add-posns d current))] - #:unless (equal? neighbor previous)) - neighbor)) - (~> next (to-next-pipe _ current grid (cons current acc)))])) - -;; part 1 -(define input (fetch-aoc-input (find-session) 2023 10 #:cache #true)) - -(define pipe-grid (make-pipe-grid input)) - -(define S-posn - (for/first ([(k v) (in-hash pipe-grid)] #:when (equal? v #\S)) - k)) - -(define S-neighbors (get-valid-S-neighbors S-posn pipe-grid)) - -(define pipe-loop (to-next-pipe (first S-neighbors) S-posn pipe-grid '())) - -(/ (add1 (length pipe-loop)) 2) - -;; part 2 -(define pipe-loop-set (~> (list->set pipe-loop) (set-add S-posn))) - -(define (trace-rays pt pipes grid) - (cond - [(set-member? pipes pt) #f] - [else (odd? (trace-ray pt pipes grid))])) - -(define (trace-ray pt pipes grid) - (define row (posn-r pt)) - (for/fold ([acc 0] - [corner #f] - #:result acc) - ([col (in-naturals (posn-c pt))] - #:do [(define test-pt (posn row col))] - #:break (not (hash-has-key? grid test-pt)) - #:when (set-member? pipes test-pt)) - (define pipe (hash-ref grid test-pt)) - (match* (corner pipe) - [(#f #\|) (values (add1 acc) #f)] ; vertical crossing - [(#f (or #\F #\L)) (values acc pipe)] - [(#\F #\J) (values (add1 acc) #f)] ; a ┏━┛ shape counts as a vertical crossing - [(#\L #\7) (values (add1 acc) #f)] - [(#\F #\7) (values acc #f)] ; a ┏━┓ shape doesn't count - [(#\L #\J) (values acc #f)] - [(_ _) (values acc corner)]))) - -(~> pipe-grid - hash-keys - (count (λ~> (trace-rays pipe-loop-set pipe-grid)) _)) diff --git a/aoc2023-other/day-11/day-11.rkt b/aoc2023-other/day-11/day-11.rkt deleted file mode 100644 index dba617b..0000000 --- a/aoc2023-other/day-11/day-11.rkt +++ /dev/null @@ -1,40 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(struct posn (x y) #:transparent) - -(define input - (~> (fetch-aoc-input (find-session) 2023 11 #:cache #true) - (string-split "\n") - (map string->list _))) - -(define (get-empty-ranks grid) - (for/list ([(rank n) (in-indexed grid)] #:when (equal? '(#\.) (remove-duplicates rank))) - n)) - -(define (count-prior-empty-ranks rank empty-ranks) - (~> empty-ranks - (takef (curryr < rank)) - length)) - -(define empty-rows (get-empty-ranks input)) -(define empty-columns (get-empty-ranks (apply map list input))) ;; transpose - -(define (sum-of-star-distances in expand-by) - (define stars - (for*/list ([(row x) (in-indexed in)] - [(col y) (in-indexed row)] - #:when (equal? col #\#)) - (posn (+ x (* (sub1 expand-by) (count-prior-empty-ranks x empty-rows))) - (+ y (* (sub1 expand-by) (count-prior-empty-ranks y empty-columns)))))) - (for/sum ([star-pair (in-combinations stars 2)]) - (match-define (list (posn x1 y1) (posn x2 y2)) star-pair) - (+ (abs (- x1 x2)) (abs (- y1 y2))))) - -;; part 1 -(sum-of-star-distances input 2) - -;; part 2 -(sum-of-star-distances input 1000000) diff --git a/aoc2023-other/day-12/day-12.rkt b/aoc2023-other/day-12/day-12.rkt deleted file mode 100644 index 50b14bb..0000000 --- a/aoc2023-other/day-12/day-12.rkt +++ /dev/null @@ -1,65 +0,0 @@ -#lang racket - -(require advent-of-code - threading - memo) - -(struct condition (template spring-set)) - -(define conditions - (for/list ([line (in-lines (open-aoc-input (find-session) 2023 12 #:cache #true))]) - (match (string-split line #px"[ ,]") - [(list* template spring-set) - (condition (string->list template) (map string->number spring-set))]))) - -(define/memoize (do-count template spring-group left-in-group need-gap?) - ;; template: list of spring positions - ;; spring-group: list of remaining contiguous groups of damaged springs - ;; left-in-group: springs remaining in current bad spring group being placed - ;; need-gap?: did we just finish placing a bad spring group - ;; and need at least one undamaged spring before starting the next one? - (match* (template spring-group left-in-group need-gap?) - ;; no springs left to place and no places left to place springs - ;; this is an OK arrangement, count it - [('() '() 0 _) 1] - ;; ambiguous wildcard, try both skipping this spot and starting a damaged spring group here - [((list* #\? t-rest) (list* g g-rest) 0 #f) - (+ (do-count t-rest g-rest (sub1 g) (= g 1)) - (do-count t-rest spring-group 0 #f))] - ;; definitely a place for a good spring (.), move on without consuming any spring groups - [((list* #\? t-rest) '() 0 #f) ; good spring, no more damaged springs to place - (do-count t-rest spring-group 0 #f)] - [((list* #\? t-rest) _ 0 #t) ; good spring right after finishing a group of bad springs - (do-count t-rest spring-group 0 #f)] - [((list* #\. t-rest) _ 0 _) ; known good spring - (do-count t-rest spring-group 0 #f)] - ;; start of bad spring (#) group, use the next spring group and remove 1 from it - [((list* #\# t-rest) (list* g g-rest) 0 #f) (do-count t-rest g-rest (sub1 g) (= g 1))] - ;; continuation of bad spring group, same - [((list* (or #\? #\#) t-rest) g left #f) (do-count t-rest g (sub1 left) (= left 1))] - ;; if nothing above works, this arrangement's invalid - [(_ _ _ _) 0])) - -(define (count-solutions c) - (match-define (condition template spring-set) c) - (do-count template spring-set 0 #f)) - -;; part 1 -(for/sum ([c (in-list conditions)]) - (count-solutions c)) - -;; part 2 -(define expanded-conditions - (for/list ([c (in-list conditions)]) - (condition (~> c - condition-template - (make-list 5 _) - (add-between #\?) - flatten) - (~> c - condition-spring-set - (make-list 5 _) - flatten)))) - -(for/sum ([c* (in-list expanded-conditions)]) - (count-solutions c*)) diff --git a/aoc2023-other/day-13/day-13.rkt b/aoc2023-other/day-13/day-13.rkt deleted file mode 100644 index 47718f8..0000000 --- a/aoc2023-other/day-13/day-13.rkt +++ /dev/null @@ -1,47 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(define input - (~>(fetch-aoc-input (find-session) 2023 13 #:cache #true) - (string-split "\n\n") - (map (λ~> string-split) _))) - -(define (do-symmetric? lefts rights errs) - (cond - [(empty? rights) #f] - [else - (define found-errs - (for/sum ([l (in-string (string-join lefts ""))] - [r (in-string (string-join rights ""))] - #:unless (char=? l r)) - 1)) - (if (= errs found-errs) - (length lefts) - (do-symmetric? (cons (first rights) lefts) - (rest rights) - errs))])) - -(define (symmetric? xss errs) - (do-symmetric? (list (first xss)) (rest xss) errs)) - -(define (transpose strs) - (~> strs - (map string->list _) - (apply map list _) - (map list->string _))) - -(define (find-symmetry-score xss errs) - (cond - [(symmetric? xss errs) => (curry * 100)] - [else (symmetric? (transpose xss) errs)])) - -;; part 1 -(for/sum ([note (in-list input)]) - (find-symmetry-score note 0)) - -;; part 2 -(for/sum ([note (in-list input)]) - (find-symmetry-score note 1)) - diff --git a/aoc2023-other/day-14/day-14.rkt b/aoc2023-other/day-14/day-14.rkt deleted file mode 100644 index d0b7cad..0000000 --- a/aoc2023-other/day-14/day-14.rkt +++ /dev/null @@ -1,49 +0,0 @@ -#lang racket - -(require advent-of-code - threading - "../../jj-aoc.rkt") - -(define input - (~> (fetch-aoc-input (find-session) 2023 14 #:cache #true) - string-split - (map string->list _) - transpose)) - -(define (roll-boulders board) - (for/list ([col (in-list board)]) - (~> col (chunks-by (curry equal? #\#)) (append-map (curryr sort char>?) _)))) - -(define (score board) - (for*/sum ([col (in-list board)] - [(row n) (in-indexed (reverse col))] - #:when (equal? row #\O)) - (add1 n))) - -;; part 1 -(~> input - roll-boulders - score) - -;; part 2 -(define (rotate-board xss) - (~> xss - (map reverse _) - transpose)) - -(define (full-cycle board) - (foldl (λ (_ acc) (~> acc roll-boulders rotate-board)) board (range 4))) - -(define (spin-to-win board) - (define cache (make-hash)) - (define (do-spin board n) - (match (hash-ref cache board 'not-found) - ['not-found - (hash-set! cache board n) - (do-spin (full-cycle board) (sub1 n))] - [seen - (define to-end (modulo n (- seen n))) - (score (foldl (λ (_ acc) (full-cycle acc)) board (range to-end)))])) - (do-spin board 1000000000)) - -(~> input spin-to-win) diff --git a/aoc2023-other/day-15/day-15.rkt b/aoc2023-other/day-15/day-15.rkt deleted file mode 100644 index d049565..0000000 --- a/aoc2023-other/day-15/day-15.rkt +++ /dev/null @@ -1,41 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(define input - (~> (fetch-aoc-input (find-session) 2023 15 #:cache #true) string-trim (string-split ","))) - -(define (hash-algorithm str) - (for/fold ([acc 0]) ([c (in-string str)]) - (~> c char->integer (+ acc) (* 17) (modulo _ 256)))) - -;; part 1 -(for/sum ([code (in-list input)]) (hash-algorithm code)) - -;; part 2 -(define (remove-lens boxes label) - (hash-update boxes - (hash-algorithm label) - (λ (lens-set) (remove label lens-set (λ (rem l) (equal? rem (car l))))) - '())) - -(define (insert-lens boxes label focal) - (define new-lens (cons label focal)) - (hash-update boxes - (hash-algorithm label) - (λ (lens-set) - (if (assoc label lens-set) - (map (λ (pair) (if (equal? (car pair) label) new-lens pair)) lens-set) - (append lens-set (list new-lens)))) - (list new-lens))) - -(define (focusing-power boxes) - (for*/sum ([(box-number lenses) (in-hash boxes)] [(lens order) (in-indexed lenses)]) - (* (add1 box-number) (add1 order) (cdr lens)))) - -(for/fold ([boxes (hash)] #:result (focusing-power boxes)) ([code (in-list input)]) - (match code - [(regexp #rx"(.*)=(.*)" (list _ label (app string->number focal))) - (insert-lens boxes label focal)] - [(regexp #rx"(.*)-" (list _ label)) (remove-lens boxes label)])) diff --git a/aoc2023-other/day-16/day-16.rkt b/aoc2023-other/day-16/day-16.rkt deleted file mode 100644 index 4a70de8..0000000 --- a/aoc2023-other/day-16/day-16.rkt +++ /dev/null @@ -1,70 +0,0 @@ -#lang racket - -(require advent-of-code - threading) - -(struct posn (r c) #:transparent) -(struct light (posn dir) #:transparent) - -(define input (fetch-aoc-input (find-session) 2023 16 #:cache #true)) - -(define grid - (for*/hash ([(row r) (in-indexed (string-split input "\n"))] - [(cell c) (in-indexed (in-string row))]) - (values (posn r c) cell))) - -(define/match (move _l) - [((light (posn r c) 'up)) (light (posn (sub1 r) c) 'up)] - [((light (posn r c) 'right)) (light (posn r (add1 c)) 'right)] - [((light (posn r c) 'left)) (light (posn r (sub1 c)) 'left)] - [((light (posn r c) 'down)) (light (posn (add1 r) c) 'down)]) - -(define/match (transform l _cell) - [(_ #\.) l] - [(_ 'off) '()] - - [((light _ (or 'up 'down)) #\|) l] - [((light _ (or 'left 'right)) #\-) l] - - [((light p 'left) #\/) (light p 'down)] - [((light p 'down) #\/) (light p 'left)] - [((light p 'right) #\/) (light p 'up)] - [((light p 'up) #\/) (light p 'right)] - - [((light p 'left) #\\) (light p 'up)] - [((light p 'up) #\\) (light p 'left)] - [((light p 'right) #\\) (light p 'down)] - [((light p 'down) #\\) (light p 'right)] - - [((light p (or 'left 'right)) #\|) (list (light p 'up) (light p 'down))] - [((light p (or 'up 'down)) #\-) (list (light p 'left) (light p 'right))]) - -;; part 1 -(define (get-energized start) - (for/fold ([energized (set)] - [previously-visited (set)] - [beam-tips (set start)] - #:result (set-count energized)) - ([_ (in-naturals)]) - (define next-positions - (list->set - (flatten (for/list ([b (in-set beam-tips)]) - (~> b move ((λ (b) (transform b (hash-ref grid (light-posn b) 'off))))))))) - (define all-visited (set-union previously-visited next-positions)) - (define next-energized (set-union energized (list->set (set-map next-positions light-posn)))) - #:break (equal? previously-visited all-visited) - (values next-energized all-visited (set-subtract next-positions previously-visited)))) - -(get-energized (light (posn 0 -1) 'right)) - -;; part 2 -(define rows (~> input (string-split "\n") length)) -(define cols (~> input (string-split #rx"\n.*") first string-length)) - -(define all-starting-positions - (append (map (λ (r) (light (posn r -1) 'right)) (range rows)) - (map (λ (r) (light (posn r cols) 'left)) (range rows)) - (map (λ (c) (light (posn -1 c) 'down)) (range cols)) - (map (λ (c) (light (posn rows c) 'up)) (range cols)))) - -(get-energized (argmax get-energized all-starting-positions)) \ No newline at end of file diff --git a/aoc2023-other/day-17/day-17.rkt b/aoc2023-other/day-17/day-17.rkt deleted file mode 100644 index 05709ad..0000000 --- a/aoc2023-other/day-17/day-17.rkt +++ /dev/null @@ -1,86 +0,0 @@ -#lang racket - -(require advent-of-code - threading - data/heap) - -(struct state (p heat-lost previous history)) -(struct posn (r c)) - -(define/match (add _p1 _p2) - [((posn r1 c1) (posn r2 c2)) (posn (+ r1 r2) (+ c1 c2))]) - -(define deltas (list (posn 0 1) (posn 0 -1) (posn 1 0) (posn -1 0))) - -(define input (fetch-aoc-input (find-session) 2023 17 #:cache #true)) - -(define grid - (for*/hash ([(row r) (in-indexed (in-list (string-split input "\n")))] - [(col c) (in-indexed (in-string row))]) - (values (posn r c) (~> col string string->number)))) - -(define goal-posn (~>> grid hash-keys (argmax (λ (p) (+ (posn-r p) (posn-c p)))))) - -(define (make-key s) - (cons (state-p s) (same-dir s))) - -(define (goal? n s) - (and (equal? goal-posn (state-p s)) - (>= (length (same-dir s)) n))) - -(define (same-dir s) - (define history (state-history s)) - (if (empty? history) - '() - (takef history (λ (n) (equal? n (car history)))))) - -(define (find-good-neighbors min-dist max-dist s) - (match-define (state p hl prev hist) s) - - (define (eliminate-bad-neighbors delta) - (define neighbor (add p delta)) - (cond - [(or (equal? neighbor prev) (not (hash-has-key? grid neighbor))) #false] - [else - (define same (same-dir s)) - (define l (length same)) - (cond - [(= max-dist l) (not (equal? delta (car same)))] - [(= l 0) #true] - [(< l min-dist) (equal? delta (car same))] - [else #t])])) - - (define (make-state delta) - (define neighbor (add p delta)) - (define new-loss (+ hl (hash-ref grid neighbor))) - (state neighbor new-loss p (cons delta hist))) - - (~>> deltas (filter eliminate-bad-neighbors) (map make-state))) - -(define (find-path neighbor-fn goal-fn) - (define seen (mutable-set)) - (define queue (make-heap (λ (a b) (<= (state-heat-lost a) (state-heat-lost b))))) - (heap-add! queue (state (posn 0 0) 0 'none '())) - - (let bfs () - (define s (heap-min queue)) - (heap-remove-min! queue) - (define key (make-key s)) - (cond - [(set-member? seen key) (bfs)] - [else - (set-add! seen key) - (define neighbors (neighbor-fn s)) - (define final (findf goal-fn neighbors)) - (if final - (state-heat-lost final) - (begin - (for ([n (in-list neighbors)]) - (heap-add! queue n)) - (bfs)))]))) - -;; part 1 -(find-path (curry find-good-neighbors 0 3) (curry goal? 1)) - -;; part 2 -(find-path (curry find-good-neighbors 4 10) (curry goal? 4)) \ No newline at end of file diff --git a/aoc2023-other/day-18/day-18.rkt b/aoc2023-other/day-18/day-18.rkt deleted file mode 100644 index b589e41..0000000 --- a/aoc2023-other/day-18/day-18.rkt +++ /dev/null @@ -1,48 +0,0 @@ -#lang racket -(require advent-of-code - threading) - -(struct coord (x y)) - -(define input (~> (fetch-aoc-input (find-session) 2023 18 #:cache #true))) - -(define (go-to-next-coord c dir dist) - (match-define (coord x y) c) - (match dir - [(or "R" "0") (coord (+ x dist) y)] - [(or "D" "1") (coord x (- y dist))] - [(or "L" "2") (coord (- x dist) y)] - [(or "U" "3") (coord x (+ y dist))])) - -(define/match (triangle-area _coord1 _coord2) - [((coord x1 y1) (coord x2 y2)) (/ (- (* x1 y2) (* x2 y1)) 2)]) - -(define (find-area-using parser) - (for/fold ([area 0] - [perimeter 0] - [current-coord (coord 0 0)] - #:result (+ 1 (abs area) (/ perimeter 2))) - ([dig (in-list (string-split input "\n"))]) - (define-values (dir dist) (parser dig)) - (define next-coord (go-to-next-coord current-coord dir dist)) - (values (+ area (triangle-area current-coord next-coord)) - (+ perimeter dist) next-coord))) - -;; part 1 -(define (parse-front dig) - (match-define (regexp #rx"(.) (.*) \\((.*)\\)" - (list _ dir (app string->number dist) _hex)) - dig) - (values dir dist)) - -(find-area-using parse-front) - -;; part 2 - -(define (parse-hex dig) - (match-define (regexp #rx".*\\(#(.....)(.)\\)" - (list _ (app (curryr string->number 16) dist) dir)) - dig) - (values dir dist)) - -(find-area-using parse-hex) diff --git a/aoc2023-other/day-19/day-19.rkt b/aoc2023-other/day-19/day-19.rkt deleted file mode 100644 index f7561f6..0000000 --- a/aoc2023-other/day-19/day-19.rkt +++ /dev/null @@ -1,134 +0,0 @@ -#lang racket - -(require advent-of-code - threading - data/applicative - data/monad - megaparsack - megaparsack/text - racket/struct) - -(struct part (x m a s)) -(struct rule (rating comparison threshold action)) -(struct just (action)) -(struct interval (from to)) - -(match-define (list raw-workflows raw-parts) - (~> (fetch-aoc-input (find-session) 2023 19 #:cache #true) - (string-split "\n\n") - (map (curryr string-split "\n") _))) - -(define/match (to-getter _) - [(#\x) part-x] - [(#\m) part-m] - [(#\a) part-a] - [(#\s) part-s]) - -(define/match (to-comp _) - [(#\>) >] - [(#\<) <]) - -(define/match (to-action _) - [('(#\R)) 'reject] - [('(#\A)) 'accept] - [(name) (apply string name)]) - -(define rule/p - (do (or/p - (try/p (do [rating <- (char-in/p "xmas")] - [comparison <- (char-in/p "<>")] - [threshold <- integer/p] - (char/p #\:) - [action <- (many+/p letter/p)] - (pure (rule (to-getter rating) - (to-comp comparison) - threshold - (to-action action))))) - (do [name <- (many+/p letter/p)] (pure (just (to-action name))))))) -(define rules/p - (do [name <- (many+/p letter/p)] - (char/p #\{) - [rules <- (many+/p rule/p #:sep (char/p #\,))] - (char/p #\}) - (pure (cons (list->string name) rules)))) - -(define rating/p (do letter/p (char/p #\=) integer/p)) -(define parts/p - (do (string/p "{") - [ratings <- (many/p rating/p #:sep (char/p #\,) #:min 4 #:max 4)] - (string/p "}") - (pure (apply part ratings)))) - -(define workflows - (~>> raw-workflows - (map (λ~>> (parse-string rules/p) parse-result!)) - make-immutable-hash)) -(define parts (map (λ~>> (parse-string parts/p) parse-result!) raw-parts)) - -;; part 1 - -(define (evaluate-workflow p [workflow-name "in"]) - (define rules (hash-ref workflows workflow-name)) - (match (evaluate-rules p rules) - ['accept (~> p struct->list (apply + _))] - ['reject 0] - [name (evaluate-workflow p name)])) - -(define (evaluate-rules p rules) - (match rules - [(list* (just action) _) action] - [(list* (rule rating comparison threshold action) _) - #:when (comparison (rating p) threshold) - action] - [(list* _ tail) (evaluate-rules p tail)])) - -(for/sum ([p (in-list parts)]) (evaluate-workflow p)) - -;; part 2 - -(define (part-update-range pr rating i) - (match rating - [(== part-x) (struct-copy part pr (x i))] - [(== part-m) (struct-copy part pr (m i))] - [(== part-a) (struct-copy part pr (a i))] - [(== part-s) (struct-copy part pr (s i))])) - -(define (evaluate-workflow-on-range pr [workflow-name "in"]) - (define rules (hash-ref workflows workflow-name)) - (evaluate-rules-on-range pr rules)) - -(define (evaluate-rules-on-range pr rules) - (match rules - [(list* (just 'accept) _) - (~> pr struct->list - (map (λ (i) (add1 (- (interval-to i) (interval-from i)))) _) - (apply * _))] - [(list* (just 'reject) _) 0] - [(list* (just name) _) (evaluate-workflow-on-range pr name)] - [(list* (rule rating (== <) threshold action) tail) - (match-define (interval i-min i-max) (rating pr)) - (split-range pr - rating - (interval i-min (sub1 threshold)) - action - (interval threshold i-max) - tail)] - [(list* (rule rating (== >) threshold action) tail) - (match-define (interval i-min i-max) (rating pr)) - (split-range pr - rating - (interval (add1 threshold) i-max) - action - (interval i-min threshold) - tail)])) - -(define (split-range pr rating keep action pass rules) - (+ (evaluate-rules-on-range (part-update-range pr rating keep) - (list (just action))) - (evaluate-rules-on-range (part-update-range pr rating pass) - rules))) - -(define start-interval (interval 1 4000)) - -(evaluate-workflow-on-range - (part start-interval start-interval start-interval start-interval)) diff --git a/aoc2023-other/day-20/day-20.rkt b/aoc2023-other/day-20/day-20.rkt deleted file mode 100644 index 2e3852d..0000000 --- a/aoc2023-other/day-20/day-20.rkt +++ /dev/null @@ -1,144 +0,0 @@ -#lang racket - -(require advent-of-code - threading - data/applicative - data/monad - megaparsack - megaparsack/text) - -(struct broadcaster ()) -(struct flipflop (state received)) -(struct conjunction (recieved)) -(struct cable (type dests)) -(struct nothing ()) - -(define charlist->symbol (λ~>> (apply string) string->symbol)) - -(define input (fetch-aoc-input (find-session) 2023 20 #:cache true)) - -(define module/p - (do (or/p (do (char/p #\%) - [name <- (many+/p letter/p)] - (pure (cons (charlist->symbol name) (flipflop 'off '())))) - (do (char/p #\&) - [name <- (many+/p letter/p)] - (pure (cons (charlist->symbol name) (conjunction (hash))))) - (do [name <- (many+/p letter/p)] - (pure (cons (charlist->symbol name) (broadcaster))))))) - -(define cable/p - (do [mod <- module/p] - (string/p " -> ") - [names <- (many/p (many+/p letter/p) #:sep (string/p ", "))] - (pure (cable mod (map charlist->symbol names))))) - -(define cables (~> input (string-split "\n") (map (λ~>> (parse-string cable/p) parse-result!) _))) - -(define destinations - (for/hash ([cable (in-list cables)]) - (values (car (cable-type cable)) (cable-dests cable)))) - -(define (set-conjunction-initial-state c) - (cond - [(conjunction? (cdr c)) - (~>> destinations - hash-keys - (filter (λ (k) (member (car c) (hash-ref destinations k)))) - (map (λ (k) (cons k 'low))) - (make-immutable-hash) - conjunction - (cons (car c)))] - [else c])) - -(define (make-initial-conditions-hash cables) - (~>> cables - (map cable-type) - (map set-conjunction-initial-state) - make-immutable-hash)) - -(define (receive mod from tone) - (match mod - [(flipflop state queue) (flipflop state (append queue (list tone)))] - [(conjunction received) (conjunction (hash-set received from tone))] - [(nothing) (nothing)])) - -; needed for part 2 -(define to-rx '(rk cd zf qx)) -(define sentry-tones (make-hash (for/list ([node to-rx]) (cons node 0)))) - -(define (press-button-once current-state this-round) - (for/fold ([queue '(broadcaster)] - [all-cables-state current-state] - [high 0] - [low 0] - #:result (values all-cables-state high low)) - ([_i (in-naturals)] #:break (empty? queue)) - (match-define (list* hd tl) queue) - (define to (hash-ref destinations hd (nothing))) - (match (hash-ref all-cables-state hd) - [(broadcaster) - (define state* - (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) - all-cables-state - to)) - (values (hash-ref destinations 'broadcaster) state* high (+ (length to) (add1 low)))] - [(flipflop 'off (list* 'low q)) - (define state* - (~> all-cables-state - (foldl (λ (r acc) - (when (member r to-rx) - (println (~a r " received high tone at " this-round))) - (hash-update acc r (λ~> (receive hd 'high)) (nothing))) - _ - to) - (hash-set _ hd (flipflop 'on q)))) - (values (append tl to) state* (+ (length to) high) low)] - [(flipflop 'on (list* 'low q)) - (define state* - (~> all-cables-state - (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) _ to) - (hash-set _ hd (flipflop 'off q)))) - (values (append tl to) state* high (+ (length to) low))] - [(flipflop on-or-off (list* 'high q)) - (define state* (~> all-cables-state (hash-set _ hd (flipflop on-or-off q)))) - (values tl state* high low)] - [(conjunction received) - #:when (or (empty? (hash-values received)) (member 'low (hash-values received))) - - (when (member hd to-rx) - (hash-set! sentry-tones hd this-round)) - (define state* - (foldl (λ (r acc) - (hash-update acc r (λ~> (receive hd 'high)) (nothing))) - all-cables-state - to)) - (values (append to tl) state* (+ (length to) high) low)] - [(conjunction _) - (define state* - (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) - all-cables-state - to)) - (values (append tl to) state* high (+ (length to) low))] - [(nothing) (values tl all-cables-state high low)]))) - -;; part 1 -(for/fold ([starting-state (make-initial-conditions-hash cables)] - [high 0] - [low 0] - #:result (* high low)) - ([i (in-range 1000)]) - (define-values (next-state this-high this-low) (press-button-once starting-state i)) - (values next-state (+ high this-high) (+ low this-low))) - -;; part 2 -;; rx receives a tone from gh, which receives four tones itself -;; those tones arrive on regular synced cycles so it's just the LCM of those cycle lengths -;; and since those cycle lengths are prime, it reduces to the product of the lengths -;; this is a really hacky mutable solution, I'm sure there's better ways of flagging these cycles - -(for/fold ([starting-state (make-initial-conditions-hash cables)] - #:result (apply * (hash-values sentry-tones))) - ([i (in-range 1 5000)]) - (define-values (next-state _high _low) (press-button-once starting-state i)) - (values next-state)) \ No newline at end of file diff --git a/aoc2023-other/day-21/day-21.rkt b/aoc2023-other/day-21/day-21.rkt deleted file mode 100644 index b5478eb..0000000 --- a/aoc2023-other/day-21/day-21.rkt +++ /dev/null @@ -1,69 +0,0 @@ -#lang racket - -(require advent-of-code - threading - simple-polynomial - racket/hash) - -(define input (fetch-aoc-input (find-session) 2023 21 #:cache #true)) - -(define initial-garden - (~> (for*/list ([(row r) (in-indexed (string-split input "\n"))] - [(col c) (in-indexed row)] - #:unless (equal? col #\#)) - (cons (cons r c) (if (equal? col #\S) 'on 'off))) - make-hash)) - -(define (neighbors p) - (match-define (cons r c) p) - (list (cons (add1 r) c) (cons (sub1 r) c) (cons r (add1 c)) (cons r (sub1 c)))) - -(define (make-n-steps garden n) - (define g (hash-copy garden)) - (define (make-one-step) - (define update (make-hash)) - (for ([(cons state) (in-hash g)] #:when (equal? state 'on)) - (hash-set! update cons 'off) - (for ([neighbor (in-list (neighbors cons))] #:when (hash-has-key? g neighbor)) - (hash-set! update neighbor 'on))) - (hash-union! g update #:combine/key (λ (_k _v v) v))) - (for/fold ([_ void] - #:result (~>> g hash-values (count (curry equal? 'on)))) - ([i (in-range n)]) - (displayln i) - (make-one-step))) - -;; part 1 -(make-n-steps initial-garden 64) - -;; part 2 -;; the growth of the steps pattern is regular and quadratic -;; the rock pattern has aisles in it that allow the steps pattern to expand freely -;; such that it will cross from one side to another in X steps -;; where X is the height/width of the repeated section - -(define grid-size (~> input (string-split "\n") length)) -(define half-size (/ (sub1 grid-size) 2)) - -(define expanded-garden - (~> (for*/list (#:do [(define rows (string-split input "\n"))] - #:do [(define height (length rows))] - [(row r) (in-indexed rows)] - #:do [(define width (string-length row))] - [(col c) (in-indexed row)] - #:unless (equal? col #\#) - [n (in-inclusive-range -3 3)] - [m (in-inclusive-range -3 3)]) - - (cons (cons (+ r (* n height)) (+ c (* m width))) - (if (and (= n m 0) (equal? col #\S)) 'on 'off))) - make-hash)) - -(define fitting-points - (for/list ([n (in-range 3)] #:do [(define size (+ half-size (* n grid-size)))]) - (cons n (make-n-steps expanded-garden size)))) - -(define end-cycle 26501365) -(define x (/ (- end-cycle half-size) grid-size)) - -((points->polynomial fitting-points) x) \ No newline at end of file diff --git a/aoc2023-other/day-22/day-22.rkt b/aoc2023-other/day-22/day-22.rkt deleted file mode 100644 index 53668c0..0000000 --- a/aoc2023-other/day-22/day-22.rkt +++ /dev/null @@ -1,109 +0,0 @@ -#lang racket - -(require advent-of-code - threading - data/applicative - data/monad - megaparsack - megaparsack/text - racket/hash) - -(struct posn (x y z)) -(struct block (n from to)) - -(define input (fetch-aoc-input (find-session) 2023 22 #:cache #true)) - -(define coordinate/p - (do [coords <- (many/p integer/p #:sep (char/p #\,) #:min 3 #:max 3)] - (pure (apply posn coords)))) - -(define block/p - (do [from <- coordinate/p] - (char/p #\~) - [to <- coordinate/p] - (pure (cons from to)))) - -(define starting-blocks - (~> (for/list ([line (in-list (string-split input "\n"))] - [n (in-naturals)]) - (match-define (cons from to) (parse-result! (parse-string block/p line))) - (block n from to)) - (sort < #:key (λ~> block-from posn-z)))) - -(define (all-in-cross-section-at-level b z) - (match-define (block _ (posn x1 y1 _) (posn x2 y2 _)) b) - (for*/list ([x (in-inclusive-range x1 x2)] - [y (in-inclusive-range y1 y2)]) - (posn x y z))) - -(define (place-block-at-level b h dz) - (match-define (block n (posn x1 y1 z1) (posn x2 y2 z2)) b) - (define now-occupied - (for*/hash ([x (in-inclusive-range x1 x2)] - [y (in-inclusive-range y1 y2)] - [z (in-inclusive-range dz (+ dz (- z2 z1)))]) - (values (posn x y z) n))) - (hash-union h now-occupied)) - -(define (find-lowest-level b h [z (~> b block-from posn-z)]) - (cond - [(= z 0) - (place-block-at-level b h 1)] - [(findf (curry hash-has-key? h) (all-in-cross-section-at-level b z)) - (place-block-at-level b h (add1 z))] - [else - (find-lowest-level b h (sub1 z))])) - -(define blocks-in-space (foldl find-lowest-level (hash) starting-blocks)) -(define block-positions - (for/fold ([placed-blocks (hash)]) - ([(p n) (in-hash blocks-in-space)]) - (hash-update placed-blocks n (curryr set-add p) (set)))) - -(define (down-one p) - (match p - [(posn x y z) (posn x y (sub1 z))])) - -(define supporting-blocks - (for/hash ([(n-id n-posns) (in-hash block-positions)]) - (values n-id - (for*/set ([(m-id m-posns) (in-hash block-positions)] - #:unless (= n-id m-id) - [m-posn (in-set m-posns)] - #:when (set-member? n-posns (down-one m-posn))) - m-id)))) - -(define supported-by-blocks - (for/hash ([n-id (in-hash-keys supporting-blocks)]) - (define supporters - (~> (for*/set - ([(m-id m-supporting) (in-hash supporting-blocks)] - #:unless (= n-id m-id) - #:when (set-member? m-supporting n-id)) - m-id) - ((λ (s) (if (set-empty? s) (set 'ground) s))))) - (values n-id supporters))) - -;; part 1 -(define vulnerable-blocks - (for/list ([n-id (in-range (length starting-blocks))] - #:when (for/or ([m-supported-by (in-hash-values supported-by-blocks)]) - (set-empty? (set-remove m-supported-by n-id)))) - n-id)) -(- (length starting-blocks) (length vulnerable-blocks)) - -;; part 2 -(for/sum ([n (in-list vulnerable-blocks)]) - (for/fold ([fallen (set n)] - [bricks (set n)] - #:result (~> fallen set-count sub1)) - ([_ (in-naturals)]) - #:break (set-empty? bricks) - (define bricks-above - (for*/set - ([brick (in-set bricks)] - [supporting (in-set (hash-ref supporting-blocks brick))] - #:when (for/and ([supports (in-set (hash-ref supported-by-blocks supporting))]) - (set-member? fallen supports))) - supporting)) - (values (set-union fallen bricks-above) bricks-above))) \ No newline at end of file diff --git a/aoc2023-other/day-23/day-23.rkt b/aoc2023-other/day-23/day-23.rkt deleted file mode 100644 index c048013..0000000 --- a/aoc2023-other/day-23/day-23.rkt +++ /dev/null @@ -1,89 +0,0 @@ -#lang racket - -(require advent-of-code - threading - graph) - -(define input (fetch-aoc-input (find-session) 2023 23 #:cache #true)) -(define trails - (for*/hash ([(row r) (in-indexed (string-split input "\n"))] - [(col c) (in-indexed row)] - #:when (not (equal? col #\#))) - ; for now, we don't actually need to detect paths and slopes, just not-rocks - ; in part 1, all forks in the road go right or down, so we can just infer the path - ; direction from the shape of the junction and form a network of junctions from there - ; in part 2, the slopes are removed anyway - (values (cons (add1 r) (add1 c)) col))) - -(define max-row (~> input (string-split "\n") length)) - -(define start (findf (λ (p) (= (car p) 1)) (hash-keys trails))) -(define end (findf (λ (p) (= (car p) max-row)) (hash-keys trails))) - -(define (get-neighbors posn type) - (match-define (cons r c) posn) - (match type - ['junction - (~> (set (cons (add1 r) c) (cons r (add1 c))))] - [_ - (~> (list (cons (add1 r) c) (cons (sub1 r) c) (cons r (add1 c)) (cons r (sub1 c))) - (filter (curry hash-has-key? trails) _) - list->set)])) - -(define junction-points - (for/set ([(k v) (in-hash trails)] - #:when (not (= (set-count (get-neighbors k v)) 2))) - k)) - -(define trails-with-junctions - (for/hash ([k (in-hash-keys trails)]) - (cond - [(set-member? junction-points k) (values k 'junction)] - [else (values k 'trail)]))) - -(define (walk-to-next-junction start current [length 1] [seen (set start)]) - (define next (~> current - (get-neighbors _ 'trail) - (set-subtract seen) set-first)) - (cond - [(equal? (hash-ref trails-with-junctions next) 'junction) - (list (- (add1 length)) start next)] ; weird format is due to graph library - [else - (walk-to-next-junction start next (add1 length) (set-add seen current))])) - -(define routes-to-junctions - (for*/list ([j (in-set junction-points)] - [neighbor (in-set (get-neighbors j 'junction))] - #:when (hash-has-key? trails neighbor)) - (walk-to-next-junction j neighbor))) - -;; part 1 -- using graph library for Bellman-Ford on negative weighted graph -;; Bellman-Ford finds the shortest path, but negating all the path weights -;; will give us the longest path instead -;; -;; unlike Dijkstra which can't handle negative path lengths, Bellman-Ford -;; works as long as the graph is currently directed and acyclic -(define slippery-trail (weighted-graph/directed routes-to-junctions)) -(match-define-values (distances _) (bellman-ford slippery-trail start)) -(- (hash-ref distances end)) - -;; part 2 -- rolling my own DFS that can reject seen junctions and dead ends -(define routes-to-junctions-with-traction - (for/fold ([trails (hash)]) ([route (in-list routes-to-junctions)]) - (match-define (list (app - weight) from to) route) - (~> trails - (hash-update _ from (curry cons (cons to weight)) '()) - (hash-update _ to (curry cons (cons from weight)) '())))) - -(define (dfs g from to [acc 0] [seen (set from)]) - (cond - [(equal? from to) acc] - [else - (define choices (filter (λ (path) (not (set-member? seen (car path)))) (hash-ref g from))) - (if (empty? choices) 0 ; long dead-ends don't count - (for/fold ([best acc]) - ([path (in-list choices)] - #:do [(match-define (cons next dist) path)]) - (max best (dfs g next to (+ acc dist) (set-add seen next)))))])) - -(dfs routes-to-junctions-with-traction start end) \ No newline at end of file diff --git a/aoc2023-other/day-24/day-24a.rkt b/aoc2023-other/day-24/day-24a.rkt deleted file mode 100644 index 31f526d..0000000 --- a/aoc2023-other/day-24/day-24a.rkt +++ /dev/null @@ -1,51 +0,0 @@ -#lang rosette - -(require advent-of-code - threading) - -(struct hail (posn vel) #:transparent) -(struct posn (x y z) #:transparent) -(struct vel (x y z) #:transparent) - -(define input (fetch-aoc-input (find-session) 2023 24 #:cache #true)) - -(define LOWER-BOUND 200000000000000) -(define UPPER-BOUND 400000000000000) - -(define (->struct f str) - (~> str (string-split _ ",") (map (λ~> string-trim string->number) _) (apply f _))) - -(define (parse-hail-record str) - (match-define (list p v) (string-split str " @ ")) - (hail (->struct posn p) - (->struct vel v))) - -(define hail-paths - (for/list ([hail (in-list (string-split input "\n"))]) - (parse-hail-record hail))) - -;; part 1 -(define (valid-intersection? h1 h2) - (match-define (hail (posn x1 y1 _) (vel vx1 vy1 _)) h1) - (match-define (hail (posn x2 y2 _) (vel vx2 vy2 _)) h2) - (cond - [(= (* vy1 vx2) (* vx1 vy2)) #f] - [else - (define t1 (/ (- (* vy2 (- x1 x2)) (* vx2 (- y1 y2))) - (- (* vy1 vx2) (* vx1 vy2)))) - (define t2 (/ (- (* vy1 (- x2 x1)) (* vx1 (- y2 y1))) - (- (* vy2 vx1) (* vx2 vy1)))) - - (define x (+ x1 (* t1 vx1))) - (define y (+ y1 (* t1 vy1))) - - (and (<= LOWER-BOUND x UPPER-BOUND) - (<= LOWER-BOUND y UPPER-BOUND) - (<= 0 t1) - (<= 0 t2))])) - -(for/sum ([(trial-paths) (in-combinations hail-paths 2)] ; - #:when (apply valid-intersection? trial-paths)) - 1) - -;; part 2 - see day-24b.rkt diff --git a/aoc2023-other/day-24/day-24b.rkt b/aoc2023-other/day-24/day-24b.rkt deleted file mode 100644 index b106b30..0000000 --- a/aoc2023-other/day-24/day-24b.rkt +++ /dev/null @@ -1,37 +0,0 @@ -#lang rosette - -(require advent-of-code - threading) - -(struct hail (posn vel)) -(struct posn (x y z)) -(struct vel (x y z)) - -(define input (fetch-aoc-input (find-session) 2023 24 #:cache #true)) - -(define (->struct f str) - (~> str (string-split _ ",") (map (λ~> string-trim string->number) _) (apply f _))) - -(define (parse-hail-record str) - (match-define (list p v) (string-split str " @ ")) - (hail (->struct posn p) (->struct vel v))) - -(define hail-paths - (for/list ([hail (in-list (string-split input "\n"))] ; - [_ (in-range 3)]) - (parse-hail-record hail))) - -;; part 1 - see day-24a.rkt -;; part 2 - -(define-symbolic px py pz vx vy vz integer?) - -(define sol - (solve ; - (for ([path (in-list hail-paths)]) - (define-symbolic* t integer?) - (assert (= (+ px (* vx t)) (+ (~> path hail-posn posn-x) (* (~> path hail-vel vel-x) t)))) - (assert (= (+ py (* vy t)) (+ (~> path hail-posn posn-y) (* (~> path hail-vel vel-y) t)))) - (assert (= (+ pz (* vz t)) (+ (~> path hail-posn posn-z) (* (~> path hail-vel vel-z) t))))))) - -(evaluate (+ px py pz) sol) diff --git a/aoc2023-other/day-25/day-25.rkt b/aoc2023-other/day-25/day-25.rkt deleted file mode 100644 index aa32e43..0000000 --- a/aoc2023-other/day-25/day-25.rkt +++ /dev/null @@ -1,43 +0,0 @@ -#lang racket - -(require advent-of-code - threading - graph) - -(define input - (~> (fetch-aoc-input (find-session) 2023 25 #:cache #true) - (string-split "\n") - (map (curryr string-split ": ") _))) - -(define all-wires - (for*/list ([wire-diagram (in-list input)] [devices (in-list (string-split (second wire-diagram)))]) - (list (car wire-diagram) devices))) - -;; instead of trying to solve the minimum cut problem, I generated the graph and -;; rendered it in graphviz: - -; (define out (open-output-file "graphviz")) -; (~> all-wires -; unweighted-graph/undirected -; graphviz -; (display out)) -; (close-output-port out) - -;; the bottleneck is very obvious on the graph -- -;; there's two large clusters of nodes, connected by just three edges -;; -;; from the graphviz output, the three critical wires are -;; cpq-hlx -;; hqp-spk -;; chr-zlx - -(define remove-these-three '(("cpq" "hlx") ("hqp" "spk") ("chr" "zlx"))) -(define cut-wires - (for/list ([wire (in-list all-wires)] #:unless (member (sort wire string cut-wires - unweighted-graph/undirected - scc - (map length _) - (apply * _)) \ No newline at end of file diff --git a/aoc2023-racket/day-01/day-01.rkt b/aoc2023-racket/day-01/day-01.rkt new file mode 100644 index 0000000..b720f79 --- /dev/null +++ b/aoc2023-racket/day-01/day-01.rkt @@ -0,0 +1,38 @@ +#lang racket + +(require advent-of-code + threading) + +(define calibration-values (fetch-aoc-input (find-session) 2023 1)) + +(define (to-number str) + (match (string->number str) + [#false (hash-ref word-to-digit str)] + [n n])) + +(define (parse-calibration-value v valid) + (for/fold ([acc '()] [value v] #:result (+ (to-number (first acc)) (* 10 (to-number (last acc))))) + ([_ (in-naturals)]) + #:break (equal? value "") + (let ([possible-prefix (findf (curry string-prefix? value) valid)]) + (if possible-prefix + (values (cons possible-prefix acc) (substring value 1)) + (values acc (substring value 1)))))) + +(define (total-calibration input valid) + (~> input + (string-trim) + (string-split "\n") + (map (λ~> (parse-calibration-value valid)) _) + (apply + _))) + +;; part 1 + +(define valid-for-part-1 (~> (range 1 10) (map ~a _))) +(total-calibration calibration-values valid-for-part-1) + +;; part 2 +(define word-to-digit + (hash "one" 1 "two" 2 "three" 3 "four" 4 "five" 5 "six" 6 "seven" 7 "eight" 8 "nine" 9)) +(define valid-for-part-2 (append valid-for-part-1 (hash-keys word-to-digit))) +(total-calibration calibration-values valid-for-part-2) diff --git a/aoc2023-racket/day-02/day-02-parser.rkt b/aoc2023-racket/day-02/day-02-parser.rkt new file mode 100644 index 0000000..76cc24f --- /dev/null +++ b/aoc2023-racket/day-02/day-02-parser.rkt @@ -0,0 +1,55 @@ +#lang racket + +(require racket/hash + advent-of-code + data/applicative + data/either + data/monad + megaparsack + megaparsack/text + threading) + +(struct game (id r g b)) + +(define cube/p + (do [n <- integer/p] + space/p + [c <- (or/p (string/p "red") + (string/p "blue") + (string/p "green"))] + (pure (cons c n)))) + +(define draw/p + (do [xs <- (many/p cube/p #:min 1 #:max 3 #:sep (string/p ", "))] + (pure (apply hash (flatten xs))))) + +(define all-draws/p + (do (string/p "Game ") + [id <- integer/p] + (string/p ": ") + [all-draws <- (many/p draw/p #:min 1 #:sep (string/p "; "))] + (define maxima + (foldl (curry hash-union #:combine max) + (hash "red" 0 "green" 0 "blue" 0) + all-draws)) + (pure (game id + (hash-ref maxima "red") + (hash-ref maxima "green") + (hash-ref maxima "blue"))))) + +(define game-maxima + (~>> (open-aoc-input (find-session) 2023 2) + port->lines + (map (λ~>> (parse-string all-draws/p) + from-either)))) + +;; part 1 +(for/sum ([m (in-list game-maxima)] + #:unless (or (> (game-r m) 12) + (> (game-g m) 13) + (> (game-b m) 14))) + (game-id m)) + +;; part 2 +(for/sum ([m (in-list game-maxima)]) + (* (game-r m) (game-g m) (game-b m))) diff --git a/aoc2023-racket/day-02/day-02.rkt b/aoc2023-racket/day-02/day-02.rkt new file mode 100644 index 0000000..973d20c --- /dev/null +++ b/aoc2023-racket/day-02/day-02.rkt @@ -0,0 +1,35 @@ +#lang racket + +(require advent-of-code) + +(struct roll (id red green blue)) + +(define all-games + (for/list ([raw-game (in-list (port->lines (open-aoc-input (find-session) 2023 2)))] + #:do [(define game (string-trim raw-game "Game ")) + (match-define (list id trials) (string-split game ": "))]) + (for/list ([trial (in-list (string-split trials "; "))]) + (for/fold ([acc (roll (string->number id) 0 0 0)]) + ([color (in-list (string-split trial ", "))]) + (match (string-split color) + [(list (app string->number n) "red") (struct-copy roll acc [red n])] + [(list (app string->number n) "green") (struct-copy roll acc [green n])] + [(list (app string->number n) "blue") (struct-copy roll acc [blue n])]))))) + +;; part 1 +(for/sum ([game (in-list all-games)] + #:when (andmap (λ (g) (and ((roll-red g) . <= . 12) + ((roll-green g) . <= . 13) + ((roll-blue g) . <= . 14))) + game)) + (roll-id (first game))) + +;; part 2 +(for/sum ([game (in-list all-games)]) + (define max-cubes + (for/fold ([acc (roll #f 0 0 0)]) ([r (in-list game)]) + (roll #f + (max (roll-red acc) (roll-red r)) + (max (roll-green acc) (roll-green r)) + (max (roll-blue acc) (roll-blue r))))) + (* (roll-red max-cubes) (roll-green max-cubes) (roll-blue max-cubes))) diff --git a/aoc2023-racket/day-03/day-03.rkt b/aoc2023-racket/day-03/day-03.rkt new file mode 100644 index 0000000..60e81a6 --- /dev/null +++ b/aoc2023-racket/day-03/day-03.rkt @@ -0,0 +1,72 @@ +#lang racket + +(require advent-of-code + threading) + +(struct posn (x y) #:transparent) +(struct part (n posns) #:transparent) + +(define (make-board port) + (for*/hash ([(row y) (in-indexed (port->lines port))] + [(col x) (in-indexed (string->list row))] + #:unless (equal? col #\.)) + (define v + (cond + [(string->number (string col))] + [(equal? col #\*) 'gear] + [else 'other])) + (values (posn x y) v))) + +(define board (~> (open-aoc-input (find-session) 2023 3 #:cache #true) make-board)) + +(define (posn (for/hash ([(k v) (in-hash b)] #:when (f v)) + (values k v)) + hash->list + (sort posn> part-posns (append-map neighbors) remove-duplicates)) +(define (symbol-in-neighbors b pt acc) + (~>> pt + to-neighbors + (ormap (λ (p) (let ([lookup (hash-ref b p #f)]) + (or (equal? lookup 'gear) (equal? lookup 'other))))) + ((λ (bool) (if bool (+ acc (part-n pt)) acc))))) + +;; part 1 +(define parts (~>> board (find-cells integer?) group-into-parts)) +(foldl (curry symbol-in-neighbors board) 0 parts) + +;; part 2 +(define gears (~>> board (find-cells (curry equal? 'gear)) (map car))) +(define parts-with-neighbors (map (λ (pt) (struct-copy part pt [posns (to-neighbors pt)])) parts)) + +(define (find-parts-near-gear pts gear) + (filter-map (λ (pt) (and (findf (curry equal? gear) (part-posns pt)) (part-n pt))) pts)) + +(~>> gears + (filter-map (λ~>> (find-parts-near-gear parts-with-neighbors) + ((λ (ns) (if (= (length ns) 2) (* (first ns) (second ns)) #f))))) + (apply +)) diff --git a/aoc2023-racket/day-04/day-04.rkt b/aoc2023-racket/day-04/day-04.rkt new file mode 100644 index 0000000..7a357c5 --- /dev/null +++ b/aoc2023-racket/day-04/day-04.rkt @@ -0,0 +1,40 @@ +#lang racket + +(require advent-of-code + data/applicative + data/either + data/monad + megaparsack + megaparsack/text + threading) + +(struct card (n wins)) + +(define card/p + (do (string/p "Card") + (many/p space/p) + [n <- integer/p] + (string/p ":") + (many/p space/p) + [winners <- (many-until/p integer/p #:sep (many/p space/p) #:end (try/p (string/p " | ")))] + (many/p space/p) + [has <- (many+/p integer/p #:sep (many/p space/p))] + (pure (card n (set-count (set-intersect (first winners) has)))))) + +(define raw-cards (~> (open-aoc-input (find-session) 2023 4 #:cache #true) port->lines)) + +;; part 1 +(for/sum ([raw-card (in-list raw-cards)] + #:do [(match-define (success (card _ wins)) (parse-string card/p raw-card))] + #:unless (= wins 0)) + (expt 2 (sub1 wins))) + +;; part 2 +(for/fold ([counts (for/hash ([n (in-inclusive-range 1 (length raw-cards))]) + (values n 1))] + #:result (apply + (hash-values counts))) + ([raw-card (in-list raw-cards)] + #:do [(match-define (success (card n wins)) (parse-string card/p raw-card))]) + (define bonus-range (inclusive-range (+ n 1) (+ n wins))) + (define won-cards (hash-ref counts n)) + (foldl (λ (n acc) (hash-update acc n (curry + won-cards))) counts bonus-range)) diff --git a/aoc2023-racket/day-05/day-05.rkt b/aoc2023-racket/day-05/day-05.rkt new file mode 100644 index 0000000..5b9aa52 --- /dev/null +++ b/aoc2023-racket/day-05/day-05.rkt @@ -0,0 +1,91 @@ +#lang racket + +(require advent-of-code + algorithms + threading) + +(struct map-range (start end offset)) +(struct seed-range (start end)) + +(define input (fetch-aoc-input (find-session) 2023 5 #:cache #true)) + +(match-define (list* raw-seeds raw-mappings) (string-split input "\n\n")) + +(define seeds-naive (~> raw-seeds (string-split " ") rest (map string->number _))) +(define mappers + (for/list ([raw-mapping (in-list raw-mappings)]) + (for/lists (map-ranges #:result (sort map-ranges < #:key map-range-start)) + ([raw-map-range (in-list (rest (string-split raw-mapping "\n")))] + #:do [(match-define (list dest source width) + (~> raw-map-range (string-split _ " ") (map string->number _)))]) + (map-range source (+ source width -1) (- dest source))))) + +;; part 1 +(define (in-map-range? n mr) + (<= (map-range-start mr) n (map-range-end mr))) + +(define (transform-value mapper n) + (match mapper + ['() n] + [(list* mr _) + #:when (in-map-range? n mr) + (+ n (map-range-offset mr))] + [(list* _ rest-mapper) (transform-value rest-mapper n)])) + +(for/lists (transforms #:result (apply min transforms)) + ([seed (in-list seeds-naive)]) + (foldl transform-value seed mappers)) + +;; part 2 +(define (remap-range r mapper [acc '()]) + (match-define (seed-range r-start r-end) r) + (match mapper + ; mapper exhausted + ['() (cons r acc)] + ; range to the left - not covered by this mapping, so keep as-is + [(list* (map-range m-start _ _) _) + #:when (< r-end m-start) + (cons r acc)] + ; range to the right - move to next map-range + [(list* (map-range _ m-end _) ms) + #:when (< m-end r-start) + (remap-range r ms acc)] + ; range is inside map-range - transform whole range + [(list* (map-range m-start m-end offset) _) + #:when (and (<= m-start r-start) (<= r-end m-end)) + (cons (seed-range (+ r-start offset) (+ r-end offset)) acc)] + ; range overlaps start only - keep left side, transform right side + [(list* (map-range m-start m-end offset) ms) + #:when (and (< r-start m-start) (<= r-end m-end)) + (remap-range (seed-range (add1 m-end) r-end) + ms + (cons (seed-range (+ m-start offset) (+ r-end offset)) acc))] + ; range overlaps end - transform left side, pass right side + [(list* (map-range m-start m-end offset) ms) + #:when (and (< m-start r-start) (<= m-end r-end)) + (remap-range (seed-range (add1 m-end) r-end) + ms + (cons (seed-range (+ r-start offset) (+ m-end offset)) acc))] + ; range overlaps whole map-range - keep left side, transform middle, pass right side + [(list* (map-range m-start m-end offset) ms) + (remap-range (seed-range (add1 m-end) r-end) + ms + (cons (seed-range (+ m-start offset) (+ m-end offset)) + (cons (seed-range (add1 m-end) r-end) acc)))])) + +(define (remap-ranges rs mappers) + (cond + [(empty? mappers) rs] + [else + (~>> rs (append-map (curryr remap-range (first mappers))) (remap-ranges _ (rest mappers)))])) + +(~> seeds-naive + (chunks-of 2) + (map (λ (xs) + (match-define (list start width) xs) + (~> (list (seed-range start (+ start width -1))) + (remap-ranges mappers) + (argmin seed-range-start _))) + _) + (argmin seed-range-start _) + seed-range-start) diff --git a/aoc2023-racket/day-06/day-06.rkt b/aoc2023-racket/day-06/day-06.rkt new file mode 100644 index 0000000..53ca9ee --- /dev/null +++ b/aoc2023-racket/day-06/day-06.rkt @@ -0,0 +1,32 @@ +#lang racket + +(require advent-of-code + threading) + +(match-define (list times distances) + (~> (open-aoc-input (find-session) 2023 6 #:cache #true) port->lines)) + +;; part 1 +(define get-numbers (λ~> string-split (map string->number _) rest)) +(define (find-bound race-time dist button-time step) + (if (< dist (* button-time (- race-time button-time))) + button-time + (find-bound race-time dist (+ step button-time) step))) + +(define (lower-bound rtime dist) + (find-bound rtime dist 1 1)) +(define (upper-bound rtime dist) + (find-bound rtime dist rtime -1)) + +(for/fold ([acc 1]) + ([race-time (in-list (get-numbers times))] + [distance (in-list (get-numbers distances))]) + (* acc (add1 (- (upper-bound race-time distance) (lower-bound race-time distance))))) + +;; part 2 + +(define unkern (λ~>> get-numbers (apply ~a) string->number)) +(define big-time (unkern times)) +(define big-distance (unkern distances)) + +(add1 (- (upper-bound big-time big-distance) (lower-bound big-time big-distance))) diff --git a/aoc2023-racket/day-07/day-07.rkt b/aoc2023-racket/day-07/day-07.rkt new file mode 100644 index 0000000..30e629b --- /dev/null +++ b/aoc2023-racket/day-07/day-07.rkt @@ -0,0 +1,82 @@ +#lang racket + +(require advent-of-code + threading + memo) + +(struct hand (cards wager)) + +(define/match (card->int card) + [((? char-numeric?)) (~> card string string->number)] + [(#\A) 14] + [(#\K) 13] + [(#\Q) 12] + [(#\J) 11] + [(#\T) 10] + [(#\*) 1]) + +(define (parse-hand str #:jokers [jokers? #f]) + (match-define (list card-str wager-str) (string-split str)) + (define cards + (~> card-str + ((λ (str) (if jokers? (string-replace str "J" "*") str))) + string->list + (map card->int _))) + (define wager (~> wager-str string->number)) + (hand cards wager)) + +(define input (~> (open-aoc-input (find-session) 2023 7 #:cache #true) port->lines)) + +(define/memoize (identify-hand h) + (define freqs (~> h hand-cards (sort <) (group-by identity _) (map length _))) + (match freqs + [(list-no-order 5) 8] + [(list-no-order 1 4) 7] + [(list-no-order 2 3) 6] + [(list-no-order 1 1 3) 5] + [(list-no-order 1 2 2) 4] + [(list-no-order 1 1 1 2) 3] + [(list-no-order 1 1 1 1 1) 2] + [_ 1])) + +(define (compare-first-card cs1 cs2) + (if (= (first cs1) (first cs2)) + (compare-first-card (rest cs1) (rest cs2)) + (< (first cs1) (first cs2)))) + +(define (compare-hands with h1 h2) + (define rank1 (with h1)) + (define rank2 (with h2)) + (if (= rank1 rank2) (compare-first-card (hand-cards h1) (hand-cards h2)) (< rank1 rank2))) + +;; part 1 + +(define (compare-hands-no-wilds h1 h2) + (compare-hands identify-hand h1 h2)) + +(define (total-score in #:jokers [jokers? #false]) + (define sorted-hands + (~> in + (map (curry parse-hand #:jokers jokers?) _) + (sort (if jokers? compare-hands-no-wilds compare-hands-with-wilds)))) + (for/sum ([(h i) + (in-indexed sorted-hands)]) + (* (add1 i) (hand-wager h)))) + +(total-score input) + +;; part 2 + +(define/memoize (find-best-joker-substitution h) + (for/fold ([best-hand (hand '() 0)]) + ([wild (in-inclusive-range 2 14)]) + (define trial-hand + (hand (map (λ (c) (if (= c 1) wild c)) (hand-cards h)) (hand-wager h))) + (if (> (identify-hand trial-hand) (identify-hand best-hand)) + trial-hand + best-hand))) + +(define (compare-hands-with-wilds h1 h2) + (compare-hands (λ~> find-best-joker-substitution identify-hand) h1 h2)) + +(total-score input #:jokers #true) diff --git a/aoc2023-racket/day-08/day-08.rkt b/aoc2023-racket/day-08/day-08.rkt new file mode 100644 index 0000000..06daafa --- /dev/null +++ b/aoc2023-racket/day-08/day-08.rkt @@ -0,0 +1,36 @@ +#lang racket + +(require advent-of-code + threading) + +(struct exits (left right) #:transparent) + +(match-define (list raw-directions raw-maze) + (~> (fetch-aoc-input (find-session) 2023 8 #:cache #true) (string-split "\n\n"))) + +(define directions (string->list raw-directions)) + +(define maze + (for/hash ([line (in-list (string-split raw-maze "\n"))]) + (match (regexp-match #rx"(...) = \\((...), (...)\\)" line) + [(list _ name left right) (values name (exits left right))]))) + +(define (to-next-node start end dirs maze) + (for/fold ([current start] + [acc 0] + #:result acc) + ([dir (in-cycle dirs)]) + #:break (string-suffix? current end) + (define node (hash-ref maze current)) + (case dir + [(#\L) (values (exits-left node) (add1 acc))] + [(#\R) (values (exits-right node) (add1 acc))]))) + +;; part 1 +(to-next-node "AAA" "ZZZ" directions maze) + +;; part 2 +(for/lists (ns #:result (apply lcm ns)) + ([start (in-list (hash-keys maze))] + #:when (string-suffix? start "A")) + (to-next-node start "Z" directions maze)) diff --git a/aoc2023-racket/day-09/day-09-polynomial.rkt b/aoc2023-racket/day-09/day-09-polynomial.rkt new file mode 100644 index 0000000..5bacb1f --- /dev/null +++ b/aoc2023-racket/day-09/day-09-polynomial.rkt @@ -0,0 +1,17 @@ +#lang racket + +(require advent-of-code + threading + simple-polynomial/tools) + +(define histories + (for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))]) + (~>> raw-history + string-split + (map string->number)))) + +(for/lists (left right #:result (cons (apply + left) (apply + right))) + ([history (in-list histories)]) + (define f (interpolate-at-integer-points history)) + (values (f -1) + (f (length history)))) diff --git a/aoc2023-racket/day-09/day-09.rkt b/aoc2023-racket/day-09/day-09.rkt new file mode 100644 index 0000000..5eda1eb --- /dev/null +++ b/aoc2023-racket/day-09/day-09.rkt @@ -0,0 +1,32 @@ +#lang racket + +(require advent-of-code + threading) + +(define histories + (for/list ([raw-history (in-lines (open-aoc-input (find-session) 2023 9 #:cache #true))]) + (~>> raw-history + string-split + (map string->number)))) + +(define (constant? xs) + (= 1 (length (remove-duplicates xs)))) + +(define/match (derivative xs) + [((list a b)) (list (- b a))] + [((list* a b _)) (cons (- b a) (derivative (rest xs)))]) + +(define (extrapolate xs) + (if (constant? xs) + (car xs) + (+ (last xs) (extrapolate (derivative xs))))) + +;; part 1 +(~>> histories + (map extrapolate) + (apply +)) + +;; part 2 +(~>> histories + (map (λ~> reverse extrapolate)) + (apply +)) diff --git a/aoc2023-racket/day-10/day-10.rkt b/aoc2023-racket/day-10/day-10.rkt new file mode 100644 index 0000000..64d8727 --- /dev/null +++ b/aoc2023-racket/day-10/day-10.rkt @@ -0,0 +1,97 @@ +#lang racket + +(require advent-of-code + threading) + +(struct posn (r c) #:transparent) + +(define/match (add-posns _p1 _p2) + [((posn x1 y1) (posn x2 y2)) (posn (+ x1 x2) (+ y1 y2))]) + +(define go-north (posn -1 0)) +(define go-south (posn 1 0)) +(define go-east (posn 0 1)) +(define go-west (posn 0 -1)) + +(define initial-directions + (list (cons go-north '(#\| #\7 #\F)) + (cons go-south '(#\| #\J #\L)) + (cons go-east '(#\- #\J #\7)) + (cons go-west '(#\- #\F #\L)))) + +(define/match (pipe-neighbors _pipe) + [(#\|) (list go-north go-south)] + [(#\-) (list go-east go-west)] + [(#\L) (list go-north go-east)] + [(#\F) (list go-south go-east)] + [(#\7) (list go-south go-west)] + [(#\J) (list go-north go-west)]) + +(define (make-pipe-grid in) + (for*/hash ([(row r) (in-indexed (string-split in "\n"))] + [(ch c) (in-indexed (string->list row))]) + (values (posn (add1 r) (add1 c)) ch))) + +(define (get-valid-S-neighbors S grid) + (for/list ([dir (in-list initial-directions)] + #:do [(match-define (cons d valid) dir)] + #:do [(define neighbor (add-posns d S))] + #:when (member (hash-ref grid neighbor 'none) valid)) + neighbor)) + +(define (to-next-pipe current previous grid [acc '()]) + (cond + [(equal? (hash-ref grid current #f) #\S) acc] + [else + (define next + (for/first ([d (in-list (pipe-neighbors (hash-ref grid current)))] + #:do [(define neighbor (add-posns d current))] + #:unless (equal? neighbor previous)) + neighbor)) + (~> next (to-next-pipe _ current grid (cons current acc)))])) + +;; part 1 +(define input (fetch-aoc-input (find-session) 2023 10 #:cache #true)) + +(define pipe-grid (make-pipe-grid input)) + +(define S-posn + (for/first ([(k v) (in-hash pipe-grid)] #:when (equal? v #\S)) + k)) + +(define S-neighbors (get-valid-S-neighbors S-posn pipe-grid)) + +(define pipe-loop (to-next-pipe (first S-neighbors) S-posn pipe-grid '())) + +(/ (add1 (length pipe-loop)) 2) + +;; part 2 +(define pipe-loop-set (~> (list->set pipe-loop) (set-add S-posn))) + +(define (trace-rays pt pipes grid) + (cond + [(set-member? pipes pt) #f] + [else (odd? (trace-ray pt pipes grid))])) + +(define (trace-ray pt pipes grid) + (define row (posn-r pt)) + (for/fold ([acc 0] + [corner #f] + #:result acc) + ([col (in-naturals (posn-c pt))] + #:do [(define test-pt (posn row col))] + #:break (not (hash-has-key? grid test-pt)) + #:when (set-member? pipes test-pt)) + (define pipe (hash-ref grid test-pt)) + (match* (corner pipe) + [(#f #\|) (values (add1 acc) #f)] ; vertical crossing + [(#f (or #\F #\L)) (values acc pipe)] + [(#\F #\J) (values (add1 acc) #f)] ; a ┏━┛ shape counts as a vertical crossing + [(#\L #\7) (values (add1 acc) #f)] + [(#\F #\7) (values acc #f)] ; a ┏━┓ shape doesn't count + [(#\L #\J) (values acc #f)] + [(_ _) (values acc corner)]))) + +(~> pipe-grid + hash-keys + (count (λ~> (trace-rays pipe-loop-set pipe-grid)) _)) diff --git a/aoc2023-racket/day-11/day-11.rkt b/aoc2023-racket/day-11/day-11.rkt new file mode 100644 index 0000000..dba617b --- /dev/null +++ b/aoc2023-racket/day-11/day-11.rkt @@ -0,0 +1,40 @@ +#lang racket + +(require advent-of-code + threading) + +(struct posn (x y) #:transparent) + +(define input + (~> (fetch-aoc-input (find-session) 2023 11 #:cache #true) + (string-split "\n") + (map string->list _))) + +(define (get-empty-ranks grid) + (for/list ([(rank n) (in-indexed grid)] #:when (equal? '(#\.) (remove-duplicates rank))) + n)) + +(define (count-prior-empty-ranks rank empty-ranks) + (~> empty-ranks + (takef (curryr < rank)) + length)) + +(define empty-rows (get-empty-ranks input)) +(define empty-columns (get-empty-ranks (apply map list input))) ;; transpose + +(define (sum-of-star-distances in expand-by) + (define stars + (for*/list ([(row x) (in-indexed in)] + [(col y) (in-indexed row)] + #:when (equal? col #\#)) + (posn (+ x (* (sub1 expand-by) (count-prior-empty-ranks x empty-rows))) + (+ y (* (sub1 expand-by) (count-prior-empty-ranks y empty-columns)))))) + (for/sum ([star-pair (in-combinations stars 2)]) + (match-define (list (posn x1 y1) (posn x2 y2)) star-pair) + (+ (abs (- x1 x2)) (abs (- y1 y2))))) + +;; part 1 +(sum-of-star-distances input 2) + +;; part 2 +(sum-of-star-distances input 1000000) diff --git a/aoc2023-racket/day-12/day-12.rkt b/aoc2023-racket/day-12/day-12.rkt new file mode 100644 index 0000000..50b14bb --- /dev/null +++ b/aoc2023-racket/day-12/day-12.rkt @@ -0,0 +1,65 @@ +#lang racket + +(require advent-of-code + threading + memo) + +(struct condition (template spring-set)) + +(define conditions + (for/list ([line (in-lines (open-aoc-input (find-session) 2023 12 #:cache #true))]) + (match (string-split line #px"[ ,]") + [(list* template spring-set) + (condition (string->list template) (map string->number spring-set))]))) + +(define/memoize (do-count template spring-group left-in-group need-gap?) + ;; template: list of spring positions + ;; spring-group: list of remaining contiguous groups of damaged springs + ;; left-in-group: springs remaining in current bad spring group being placed + ;; need-gap?: did we just finish placing a bad spring group + ;; and need at least one undamaged spring before starting the next one? + (match* (template spring-group left-in-group need-gap?) + ;; no springs left to place and no places left to place springs + ;; this is an OK arrangement, count it + [('() '() 0 _) 1] + ;; ambiguous wildcard, try both skipping this spot and starting a damaged spring group here + [((list* #\? t-rest) (list* g g-rest) 0 #f) + (+ (do-count t-rest g-rest (sub1 g) (= g 1)) + (do-count t-rest spring-group 0 #f))] + ;; definitely a place for a good spring (.), move on without consuming any spring groups + [((list* #\? t-rest) '() 0 #f) ; good spring, no more damaged springs to place + (do-count t-rest spring-group 0 #f)] + [((list* #\? t-rest) _ 0 #t) ; good spring right after finishing a group of bad springs + (do-count t-rest spring-group 0 #f)] + [((list* #\. t-rest) _ 0 _) ; known good spring + (do-count t-rest spring-group 0 #f)] + ;; start of bad spring (#) group, use the next spring group and remove 1 from it + [((list* #\# t-rest) (list* g g-rest) 0 #f) (do-count t-rest g-rest (sub1 g) (= g 1))] + ;; continuation of bad spring group, same + [((list* (or #\? #\#) t-rest) g left #f) (do-count t-rest g (sub1 left) (= left 1))] + ;; if nothing above works, this arrangement's invalid + [(_ _ _ _) 0])) + +(define (count-solutions c) + (match-define (condition template spring-set) c) + (do-count template spring-set 0 #f)) + +;; part 1 +(for/sum ([c (in-list conditions)]) + (count-solutions c)) + +;; part 2 +(define expanded-conditions + (for/list ([c (in-list conditions)]) + (condition (~> c + condition-template + (make-list 5 _) + (add-between #\?) + flatten) + (~> c + condition-spring-set + (make-list 5 _) + flatten)))) + +(for/sum ([c* (in-list expanded-conditions)]) + (count-solutions c*)) diff --git a/aoc2023-racket/day-13/day-13.rkt b/aoc2023-racket/day-13/day-13.rkt new file mode 100644 index 0000000..47718f8 --- /dev/null +++ b/aoc2023-racket/day-13/day-13.rkt @@ -0,0 +1,47 @@ +#lang racket + +(require advent-of-code + threading) + +(define input + (~>(fetch-aoc-input (find-session) 2023 13 #:cache #true) + (string-split "\n\n") + (map (λ~> string-split) _))) + +(define (do-symmetric? lefts rights errs) + (cond + [(empty? rights) #f] + [else + (define found-errs + (for/sum ([l (in-string (string-join lefts ""))] + [r (in-string (string-join rights ""))] + #:unless (char=? l r)) + 1)) + (if (= errs found-errs) + (length lefts) + (do-symmetric? (cons (first rights) lefts) + (rest rights) + errs))])) + +(define (symmetric? xss errs) + (do-symmetric? (list (first xss)) (rest xss) errs)) + +(define (transpose strs) + (~> strs + (map string->list _) + (apply map list _) + (map list->string _))) + +(define (find-symmetry-score xss errs) + (cond + [(symmetric? xss errs) => (curry * 100)] + [else (symmetric? (transpose xss) errs)])) + +;; part 1 +(for/sum ([note (in-list input)]) + (find-symmetry-score note 0)) + +;; part 2 +(for/sum ([note (in-list input)]) + (find-symmetry-score note 1)) + diff --git a/aoc2023-racket/day-14/day-14.rkt b/aoc2023-racket/day-14/day-14.rkt new file mode 100644 index 0000000..d0b7cad --- /dev/null +++ b/aoc2023-racket/day-14/day-14.rkt @@ -0,0 +1,49 @@ +#lang racket + +(require advent-of-code + threading + "../../jj-aoc.rkt") + +(define input + (~> (fetch-aoc-input (find-session) 2023 14 #:cache #true) + string-split + (map string->list _) + transpose)) + +(define (roll-boulders board) + (for/list ([col (in-list board)]) + (~> col (chunks-by (curry equal? #\#)) (append-map (curryr sort char>?) _)))) + +(define (score board) + (for*/sum ([col (in-list board)] + [(row n) (in-indexed (reverse col))] + #:when (equal? row #\O)) + (add1 n))) + +;; part 1 +(~> input + roll-boulders + score) + +;; part 2 +(define (rotate-board xss) + (~> xss + (map reverse _) + transpose)) + +(define (full-cycle board) + (foldl (λ (_ acc) (~> acc roll-boulders rotate-board)) board (range 4))) + +(define (spin-to-win board) + (define cache (make-hash)) + (define (do-spin board n) + (match (hash-ref cache board 'not-found) + ['not-found + (hash-set! cache board n) + (do-spin (full-cycle board) (sub1 n))] + [seen + (define to-end (modulo n (- seen n))) + (score (foldl (λ (_ acc) (full-cycle acc)) board (range to-end)))])) + (do-spin board 1000000000)) + +(~> input spin-to-win) diff --git a/aoc2023-racket/day-15/day-15.rkt b/aoc2023-racket/day-15/day-15.rkt new file mode 100644 index 0000000..d049565 --- /dev/null +++ b/aoc2023-racket/day-15/day-15.rkt @@ -0,0 +1,41 @@ +#lang racket + +(require advent-of-code + threading) + +(define input + (~> (fetch-aoc-input (find-session) 2023 15 #:cache #true) string-trim (string-split ","))) + +(define (hash-algorithm str) + (for/fold ([acc 0]) ([c (in-string str)]) + (~> c char->integer (+ acc) (* 17) (modulo _ 256)))) + +;; part 1 +(for/sum ([code (in-list input)]) (hash-algorithm code)) + +;; part 2 +(define (remove-lens boxes label) + (hash-update boxes + (hash-algorithm label) + (λ (lens-set) (remove label lens-set (λ (rem l) (equal? rem (car l))))) + '())) + +(define (insert-lens boxes label focal) + (define new-lens (cons label focal)) + (hash-update boxes + (hash-algorithm label) + (λ (lens-set) + (if (assoc label lens-set) + (map (λ (pair) (if (equal? (car pair) label) new-lens pair)) lens-set) + (append lens-set (list new-lens)))) + (list new-lens))) + +(define (focusing-power boxes) + (for*/sum ([(box-number lenses) (in-hash boxes)] [(lens order) (in-indexed lenses)]) + (* (add1 box-number) (add1 order) (cdr lens)))) + +(for/fold ([boxes (hash)] #:result (focusing-power boxes)) ([code (in-list input)]) + (match code + [(regexp #rx"(.*)=(.*)" (list _ label (app string->number focal))) + (insert-lens boxes label focal)] + [(regexp #rx"(.*)-" (list _ label)) (remove-lens boxes label)])) diff --git a/aoc2023-racket/day-16/day-16.rkt b/aoc2023-racket/day-16/day-16.rkt new file mode 100644 index 0000000..4a70de8 --- /dev/null +++ b/aoc2023-racket/day-16/day-16.rkt @@ -0,0 +1,70 @@ +#lang racket + +(require advent-of-code + threading) + +(struct posn (r c) #:transparent) +(struct light (posn dir) #:transparent) + +(define input (fetch-aoc-input (find-session) 2023 16 #:cache #true)) + +(define grid + (for*/hash ([(row r) (in-indexed (string-split input "\n"))] + [(cell c) (in-indexed (in-string row))]) + (values (posn r c) cell))) + +(define/match (move _l) + [((light (posn r c) 'up)) (light (posn (sub1 r) c) 'up)] + [((light (posn r c) 'right)) (light (posn r (add1 c)) 'right)] + [((light (posn r c) 'left)) (light (posn r (sub1 c)) 'left)] + [((light (posn r c) 'down)) (light (posn (add1 r) c) 'down)]) + +(define/match (transform l _cell) + [(_ #\.) l] + [(_ 'off) '()] + + [((light _ (or 'up 'down)) #\|) l] + [((light _ (or 'left 'right)) #\-) l] + + [((light p 'left) #\/) (light p 'down)] + [((light p 'down) #\/) (light p 'left)] + [((light p 'right) #\/) (light p 'up)] + [((light p 'up) #\/) (light p 'right)] + + [((light p 'left) #\\) (light p 'up)] + [((light p 'up) #\\) (light p 'left)] + [((light p 'right) #\\) (light p 'down)] + [((light p 'down) #\\) (light p 'right)] + + [((light p (or 'left 'right)) #\|) (list (light p 'up) (light p 'down))] + [((light p (or 'up 'down)) #\-) (list (light p 'left) (light p 'right))]) + +;; part 1 +(define (get-energized start) + (for/fold ([energized (set)] + [previously-visited (set)] + [beam-tips (set start)] + #:result (set-count energized)) + ([_ (in-naturals)]) + (define next-positions + (list->set + (flatten (for/list ([b (in-set beam-tips)]) + (~> b move ((λ (b) (transform b (hash-ref grid (light-posn b) 'off))))))))) + (define all-visited (set-union previously-visited next-positions)) + (define next-energized (set-union energized (list->set (set-map next-positions light-posn)))) + #:break (equal? previously-visited all-visited) + (values next-energized all-visited (set-subtract next-positions previously-visited)))) + +(get-energized (light (posn 0 -1) 'right)) + +;; part 2 +(define rows (~> input (string-split "\n") length)) +(define cols (~> input (string-split #rx"\n.*") first string-length)) + +(define all-starting-positions + (append (map (λ (r) (light (posn r -1) 'right)) (range rows)) + (map (λ (r) (light (posn r cols) 'left)) (range rows)) + (map (λ (c) (light (posn -1 c) 'down)) (range cols)) + (map (λ (c) (light (posn rows c) 'up)) (range cols)))) + +(get-energized (argmax get-energized all-starting-positions)) \ No newline at end of file diff --git a/aoc2023-racket/day-17/day-17.rkt b/aoc2023-racket/day-17/day-17.rkt new file mode 100644 index 0000000..05709ad --- /dev/null +++ b/aoc2023-racket/day-17/day-17.rkt @@ -0,0 +1,86 @@ +#lang racket + +(require advent-of-code + threading + data/heap) + +(struct state (p heat-lost previous history)) +(struct posn (r c)) + +(define/match (add _p1 _p2) + [((posn r1 c1) (posn r2 c2)) (posn (+ r1 r2) (+ c1 c2))]) + +(define deltas (list (posn 0 1) (posn 0 -1) (posn 1 0) (posn -1 0))) + +(define input (fetch-aoc-input (find-session) 2023 17 #:cache #true)) + +(define grid + (for*/hash ([(row r) (in-indexed (in-list (string-split input "\n")))] + [(col c) (in-indexed (in-string row))]) + (values (posn r c) (~> col string string->number)))) + +(define goal-posn (~>> grid hash-keys (argmax (λ (p) (+ (posn-r p) (posn-c p)))))) + +(define (make-key s) + (cons (state-p s) (same-dir s))) + +(define (goal? n s) + (and (equal? goal-posn (state-p s)) + (>= (length (same-dir s)) n))) + +(define (same-dir s) + (define history (state-history s)) + (if (empty? history) + '() + (takef history (λ (n) (equal? n (car history)))))) + +(define (find-good-neighbors min-dist max-dist s) + (match-define (state p hl prev hist) s) + + (define (eliminate-bad-neighbors delta) + (define neighbor (add p delta)) + (cond + [(or (equal? neighbor prev) (not (hash-has-key? grid neighbor))) #false] + [else + (define same (same-dir s)) + (define l (length same)) + (cond + [(= max-dist l) (not (equal? delta (car same)))] + [(= l 0) #true] + [(< l min-dist) (equal? delta (car same))] + [else #t])])) + + (define (make-state delta) + (define neighbor (add p delta)) + (define new-loss (+ hl (hash-ref grid neighbor))) + (state neighbor new-loss p (cons delta hist))) + + (~>> deltas (filter eliminate-bad-neighbors) (map make-state))) + +(define (find-path neighbor-fn goal-fn) + (define seen (mutable-set)) + (define queue (make-heap (λ (a b) (<= (state-heat-lost a) (state-heat-lost b))))) + (heap-add! queue (state (posn 0 0) 0 'none '())) + + (let bfs () + (define s (heap-min queue)) + (heap-remove-min! queue) + (define key (make-key s)) + (cond + [(set-member? seen key) (bfs)] + [else + (set-add! seen key) + (define neighbors (neighbor-fn s)) + (define final (findf goal-fn neighbors)) + (if final + (state-heat-lost final) + (begin + (for ([n (in-list neighbors)]) + (heap-add! queue n)) + (bfs)))]))) + +;; part 1 +(find-path (curry find-good-neighbors 0 3) (curry goal? 1)) + +;; part 2 +(find-path (curry find-good-neighbors 4 10) (curry goal? 4)) \ No newline at end of file diff --git a/aoc2023-racket/day-18/day-18.rkt b/aoc2023-racket/day-18/day-18.rkt new file mode 100644 index 0000000..b589e41 --- /dev/null +++ b/aoc2023-racket/day-18/day-18.rkt @@ -0,0 +1,48 @@ +#lang racket +(require advent-of-code + threading) + +(struct coord (x y)) + +(define input (~> (fetch-aoc-input (find-session) 2023 18 #:cache #true))) + +(define (go-to-next-coord c dir dist) + (match-define (coord x y) c) + (match dir + [(or "R" "0") (coord (+ x dist) y)] + [(or "D" "1") (coord x (- y dist))] + [(or "L" "2") (coord (- x dist) y)] + [(or "U" "3") (coord x (+ y dist))])) + +(define/match (triangle-area _coord1 _coord2) + [((coord x1 y1) (coord x2 y2)) (/ (- (* x1 y2) (* x2 y1)) 2)]) + +(define (find-area-using parser) + (for/fold ([area 0] + [perimeter 0] + [current-coord (coord 0 0)] + #:result (+ 1 (abs area) (/ perimeter 2))) + ([dig (in-list (string-split input "\n"))]) + (define-values (dir dist) (parser dig)) + (define next-coord (go-to-next-coord current-coord dir dist)) + (values (+ area (triangle-area current-coord next-coord)) + (+ perimeter dist) next-coord))) + +;; part 1 +(define (parse-front dig) + (match-define (regexp #rx"(.) (.*) \\((.*)\\)" + (list _ dir (app string->number dist) _hex)) + dig) + (values dir dist)) + +(find-area-using parse-front) + +;; part 2 + +(define (parse-hex dig) + (match-define (regexp #rx".*\\(#(.....)(.)\\)" + (list _ (app (curryr string->number 16) dist) dir)) + dig) + (values dir dist)) + +(find-area-using parse-hex) diff --git a/aoc2023-racket/day-19/day-19.rkt b/aoc2023-racket/day-19/day-19.rkt new file mode 100644 index 0000000..f7561f6 --- /dev/null +++ b/aoc2023-racket/day-19/day-19.rkt @@ -0,0 +1,134 @@ +#lang racket + +(require advent-of-code + threading + data/applicative + data/monad + megaparsack + megaparsack/text + racket/struct) + +(struct part (x m a s)) +(struct rule (rating comparison threshold action)) +(struct just (action)) +(struct interval (from to)) + +(match-define (list raw-workflows raw-parts) + (~> (fetch-aoc-input (find-session) 2023 19 #:cache #true) + (string-split "\n\n") + (map (curryr string-split "\n") _))) + +(define/match (to-getter _) + [(#\x) part-x] + [(#\m) part-m] + [(#\a) part-a] + [(#\s) part-s]) + +(define/match (to-comp _) + [(#\>) >] + [(#\<) <]) + +(define/match (to-action _) + [('(#\R)) 'reject] + [('(#\A)) 'accept] + [(name) (apply string name)]) + +(define rule/p + (do (or/p + (try/p (do [rating <- (char-in/p "xmas")] + [comparison <- (char-in/p "<>")] + [threshold <- integer/p] + (char/p #\:) + [action <- (many+/p letter/p)] + (pure (rule (to-getter rating) + (to-comp comparison) + threshold + (to-action action))))) + (do [name <- (many+/p letter/p)] (pure (just (to-action name))))))) +(define rules/p + (do [name <- (many+/p letter/p)] + (char/p #\{) + [rules <- (many+/p rule/p #:sep (char/p #\,))] + (char/p #\}) + (pure (cons (list->string name) rules)))) + +(define rating/p (do letter/p (char/p #\=) integer/p)) +(define parts/p + (do (string/p "{") + [ratings <- (many/p rating/p #:sep (char/p #\,) #:min 4 #:max 4)] + (string/p "}") + (pure (apply part ratings)))) + +(define workflows + (~>> raw-workflows + (map (λ~>> (parse-string rules/p) parse-result!)) + make-immutable-hash)) +(define parts (map (λ~>> (parse-string parts/p) parse-result!) raw-parts)) + +;; part 1 + +(define (evaluate-workflow p [workflow-name "in"]) + (define rules (hash-ref workflows workflow-name)) + (match (evaluate-rules p rules) + ['accept (~> p struct->list (apply + _))] + ['reject 0] + [name (evaluate-workflow p name)])) + +(define (evaluate-rules p rules) + (match rules + [(list* (just action) _) action] + [(list* (rule rating comparison threshold action) _) + #:when (comparison (rating p) threshold) + action] + [(list* _ tail) (evaluate-rules p tail)])) + +(for/sum ([p (in-list parts)]) (evaluate-workflow p)) + +;; part 2 + +(define (part-update-range pr rating i) + (match rating + [(== part-x) (struct-copy part pr (x i))] + [(== part-m) (struct-copy part pr (m i))] + [(== part-a) (struct-copy part pr (a i))] + [(== part-s) (struct-copy part pr (s i))])) + +(define (evaluate-workflow-on-range pr [workflow-name "in"]) + (define rules (hash-ref workflows workflow-name)) + (evaluate-rules-on-range pr rules)) + +(define (evaluate-rules-on-range pr rules) + (match rules + [(list* (just 'accept) _) + (~> pr struct->list + (map (λ (i) (add1 (- (interval-to i) (interval-from i)))) _) + (apply * _))] + [(list* (just 'reject) _) 0] + [(list* (just name) _) (evaluate-workflow-on-range pr name)] + [(list* (rule rating (== <) threshold action) tail) + (match-define (interval i-min i-max) (rating pr)) + (split-range pr + rating + (interval i-min (sub1 threshold)) + action + (interval threshold i-max) + tail)] + [(list* (rule rating (== >) threshold action) tail) + (match-define (interval i-min i-max) (rating pr)) + (split-range pr + rating + (interval (add1 threshold) i-max) + action + (interval i-min threshold) + tail)])) + +(define (split-range pr rating keep action pass rules) + (+ (evaluate-rules-on-range (part-update-range pr rating keep) + (list (just action))) + (evaluate-rules-on-range (part-update-range pr rating pass) + rules))) + +(define start-interval (interval 1 4000)) + +(evaluate-workflow-on-range + (part start-interval start-interval start-interval start-interval)) diff --git a/aoc2023-racket/day-20/day-20.rkt b/aoc2023-racket/day-20/day-20.rkt new file mode 100644 index 0000000..2e3852d --- /dev/null +++ b/aoc2023-racket/day-20/day-20.rkt @@ -0,0 +1,144 @@ +#lang racket + +(require advent-of-code + threading + data/applicative + data/monad + megaparsack + megaparsack/text) + +(struct broadcaster ()) +(struct flipflop (state received)) +(struct conjunction (recieved)) +(struct cable (type dests)) +(struct nothing ()) + +(define charlist->symbol (λ~>> (apply string) string->symbol)) + +(define input (fetch-aoc-input (find-session) 2023 20 #:cache true)) + +(define module/p + (do (or/p (do (char/p #\%) + [name <- (many+/p letter/p)] + (pure (cons (charlist->symbol name) (flipflop 'off '())))) + (do (char/p #\&) + [name <- (many+/p letter/p)] + (pure (cons (charlist->symbol name) (conjunction (hash))))) + (do [name <- (many+/p letter/p)] + (pure (cons (charlist->symbol name) (broadcaster))))))) + +(define cable/p + (do [mod <- module/p] + (string/p " -> ") + [names <- (many/p (many+/p letter/p) #:sep (string/p ", "))] + (pure (cable mod (map charlist->symbol names))))) + +(define cables (~> input (string-split "\n") (map (λ~>> (parse-string cable/p) parse-result!) _))) + +(define destinations + (for/hash ([cable (in-list cables)]) + (values (car (cable-type cable)) (cable-dests cable)))) + +(define (set-conjunction-initial-state c) + (cond + [(conjunction? (cdr c)) + (~>> destinations + hash-keys + (filter (λ (k) (member (car c) (hash-ref destinations k)))) + (map (λ (k) (cons k 'low))) + (make-immutable-hash) + conjunction + (cons (car c)))] + [else c])) + +(define (make-initial-conditions-hash cables) + (~>> cables + (map cable-type) + (map set-conjunction-initial-state) + make-immutable-hash)) + +(define (receive mod from tone) + (match mod + [(flipflop state queue) (flipflop state (append queue (list tone)))] + [(conjunction received) (conjunction (hash-set received from tone))] + [(nothing) (nothing)])) + +; needed for part 2 +(define to-rx '(rk cd zf qx)) +(define sentry-tones (make-hash (for/list ([node to-rx]) (cons node 0)))) + +(define (press-button-once current-state this-round) + (for/fold ([queue '(broadcaster)] + [all-cables-state current-state] + [high 0] + [low 0] + #:result (values all-cables-state high low)) + ([_i (in-naturals)] #:break (empty? queue)) + (match-define (list* hd tl) queue) + (define to (hash-ref destinations hd (nothing))) + (match (hash-ref all-cables-state hd) + [(broadcaster) + (define state* + (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) + all-cables-state + to)) + (values (hash-ref destinations 'broadcaster) state* high (+ (length to) (add1 low)))] + [(flipflop 'off (list* 'low q)) + (define state* + (~> all-cables-state + (foldl (λ (r acc) + (when (member r to-rx) + (println (~a r " received high tone at " this-round))) + (hash-update acc r (λ~> (receive hd 'high)) (nothing))) + _ + to) + (hash-set _ hd (flipflop 'on q)))) + (values (append tl to) state* (+ (length to) high) low)] + [(flipflop 'on (list* 'low q)) + (define state* + (~> all-cables-state + (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) _ to) + (hash-set _ hd (flipflop 'off q)))) + (values (append tl to) state* high (+ (length to) low))] + [(flipflop on-or-off (list* 'high q)) + (define state* (~> all-cables-state (hash-set _ hd (flipflop on-or-off q)))) + (values tl state* high low)] + [(conjunction received) + #:when (or (empty? (hash-values received)) (member 'low (hash-values received))) + + (when (member hd to-rx) + (hash-set! sentry-tones hd this-round)) + (define state* + (foldl (λ (r acc) + (hash-update acc r (λ~> (receive hd 'high)) (nothing))) + all-cables-state + to)) + (values (append to tl) state* (+ (length to) high) low)] + [(conjunction _) + (define state* + (foldl (λ (r acc) (hash-update acc r (λ~> (receive hd 'low)) (nothing))) + all-cables-state + to)) + (values (append tl to) state* high (+ (length to) low))] + [(nothing) (values tl all-cables-state high low)]))) + +;; part 1 +(for/fold ([starting-state (make-initial-conditions-hash cables)] + [high 0] + [low 0] + #:result (* high low)) + ([i (in-range 1000)]) + (define-values (next-state this-high this-low) (press-button-once starting-state i)) + (values next-state (+ high this-high) (+ low this-low))) + +;; part 2 +;; rx receives a tone from gh, which receives four tones itself +;; those tones arrive on regular synced cycles so it's just the LCM of those cycle lengths +;; and since those cycle lengths are prime, it reduces to the product of the lengths +;; this is a really hacky mutable solution, I'm sure there's better ways of flagging these cycles + +(for/fold ([starting-state (make-initial-conditions-hash cables)] + #:result (apply * (hash-values sentry-tones))) + ([i (in-range 1 5000)]) + (define-values (next-state _high _low) (press-button-once starting-state i)) + (values next-state)) \ No newline at end of file diff --git a/aoc2023-racket/day-21/day-21.rkt b/aoc2023-racket/day-21/day-21.rkt new file mode 100644 index 0000000..b5478eb --- /dev/null +++ b/aoc2023-racket/day-21/day-21.rkt @@ -0,0 +1,69 @@ +#lang racket + +(require advent-of-code + threading + simple-polynomial + racket/hash) + +(define input (fetch-aoc-input (find-session) 2023 21 #:cache #true)) + +(define initial-garden + (~> (for*/list ([(row r) (in-indexed (string-split input "\n"))] + [(col c) (in-indexed row)] + #:unless (equal? col #\#)) + (cons (cons r c) (if (equal? col #\S) 'on 'off))) + make-hash)) + +(define (neighbors p) + (match-define (cons r c) p) + (list (cons (add1 r) c) (cons (sub1 r) c) (cons r (add1 c)) (cons r (sub1 c)))) + +(define (make-n-steps garden n) + (define g (hash-copy garden)) + (define (make-one-step) + (define update (make-hash)) + (for ([(cons state) (in-hash g)] #:when (equal? state 'on)) + (hash-set! update cons 'off) + (for ([neighbor (in-list (neighbors cons))] #:when (hash-has-key? g neighbor)) + (hash-set! update neighbor 'on))) + (hash-union! g update #:combine/key (λ (_k _v v) v))) + (for/fold ([_ void] + #:result (~>> g hash-values (count (curry equal? 'on)))) + ([i (in-range n)]) + (displayln i) + (make-one-step))) + +;; part 1 +(make-n-steps initial-garden 64) + +;; part 2 +;; the growth of the steps pattern is regular and quadratic +;; the rock pattern has aisles in it that allow the steps pattern to expand freely +;; such that it will cross from one side to another in X steps +;; where X is the height/width of the repeated section + +(define grid-size (~> input (string-split "\n") length)) +(define half-size (/ (sub1 grid-size) 2)) + +(define expanded-garden + (~> (for*/list (#:do [(define rows (string-split input "\n"))] + #:do [(define height (length rows))] + [(row r) (in-indexed rows)] + #:do [(define width (string-length row))] + [(col c) (in-indexed row)] + #:unless (equal? col #\#) + [n (in-inclusive-range -3 3)] + [m (in-inclusive-range -3 3)]) + + (cons (cons (+ r (* n height)) (+ c (* m width))) + (if (and (= n m 0) (equal? col #\S)) 'on 'off))) + make-hash)) + +(define fitting-points + (for/list ([n (in-range 3)] #:do [(define size (+ half-size (* n grid-size)))]) + (cons n (make-n-steps expanded-garden size)))) + +(define end-cycle 26501365) +(define x (/ (- end-cycle half-size) grid-size)) + +((points->polynomial fitting-points) x) \ No newline at end of file diff --git a/aoc2023-racket/day-22/day-22.rkt b/aoc2023-racket/day-22/day-22.rkt new file mode 100644 index 0000000..53668c0 --- /dev/null +++ b/aoc2023-racket/day-22/day-22.rkt @@ -0,0 +1,109 @@ +#lang racket + +(require advent-of-code + threading + data/applicative + data/monad + megaparsack + megaparsack/text + racket/hash) + +(struct posn (x y z)) +(struct block (n from to)) + +(define input (fetch-aoc-input (find-session) 2023 22 #:cache #true)) + +(define coordinate/p + (do [coords <- (many/p integer/p #:sep (char/p #\,) #:min 3 #:max 3)] + (pure (apply posn coords)))) + +(define block/p + (do [from <- coordinate/p] + (char/p #\~) + [to <- coordinate/p] + (pure (cons from to)))) + +(define starting-blocks + (~> (for/list ([line (in-list (string-split input "\n"))] + [n (in-naturals)]) + (match-define (cons from to) (parse-result! (parse-string block/p line))) + (block n from to)) + (sort < #:key (λ~> block-from posn-z)))) + +(define (all-in-cross-section-at-level b z) + (match-define (block _ (posn x1 y1 _) (posn x2 y2 _)) b) + (for*/list ([x (in-inclusive-range x1 x2)] + [y (in-inclusive-range y1 y2)]) + (posn x y z))) + +(define (place-block-at-level b h dz) + (match-define (block n (posn x1 y1 z1) (posn x2 y2 z2)) b) + (define now-occupied + (for*/hash ([x (in-inclusive-range x1 x2)] + [y (in-inclusive-range y1 y2)] + [z (in-inclusive-range dz (+ dz (- z2 z1)))]) + (values (posn x y z) n))) + (hash-union h now-occupied)) + +(define (find-lowest-level b h [z (~> b block-from posn-z)]) + (cond + [(= z 0) + (place-block-at-level b h 1)] + [(findf (curry hash-has-key? h) (all-in-cross-section-at-level b z)) + (place-block-at-level b h (add1 z))] + [else + (find-lowest-level b h (sub1 z))])) + +(define blocks-in-space (foldl find-lowest-level (hash) starting-blocks)) +(define block-positions + (for/fold ([placed-blocks (hash)]) + ([(p n) (in-hash blocks-in-space)]) + (hash-update placed-blocks n (curryr set-add p) (set)))) + +(define (down-one p) + (match p + [(posn x y z) (posn x y (sub1 z))])) + +(define supporting-blocks + (for/hash ([(n-id n-posns) (in-hash block-positions)]) + (values n-id + (for*/set ([(m-id m-posns) (in-hash block-positions)] + #:unless (= n-id m-id) + [m-posn (in-set m-posns)] + #:when (set-member? n-posns (down-one m-posn))) + m-id)))) + +(define supported-by-blocks + (for/hash ([n-id (in-hash-keys supporting-blocks)]) + (define supporters + (~> (for*/set + ([(m-id m-supporting) (in-hash supporting-blocks)] + #:unless (= n-id m-id) + #:when (set-member? m-supporting n-id)) + m-id) + ((λ (s) (if (set-empty? s) (set 'ground) s))))) + (values n-id supporters))) + +;; part 1 +(define vulnerable-blocks + (for/list ([n-id (in-range (length starting-blocks))] + #:when (for/or ([m-supported-by (in-hash-values supported-by-blocks)]) + (set-empty? (set-remove m-supported-by n-id)))) + n-id)) +(- (length starting-blocks) (length vulnerable-blocks)) + +;; part 2 +(for/sum ([n (in-list vulnerable-blocks)]) + (for/fold ([fallen (set n)] + [bricks (set n)] + #:result (~> fallen set-count sub1)) + ([_ (in-naturals)]) + #:break (set-empty? bricks) + (define bricks-above + (for*/set + ([brick (in-set bricks)] + [supporting (in-set (hash-ref supporting-blocks brick))] + #:when (for/and ([supports (in-set (hash-ref supported-by-blocks supporting))]) + (set-member? fallen supports))) + supporting)) + (values (set-union fallen bricks-above) bricks-above))) \ No newline at end of file diff --git a/aoc2023-racket/day-23/day-23.rkt b/aoc2023-racket/day-23/day-23.rkt new file mode 100644 index 0000000..c048013 --- /dev/null +++ b/aoc2023-racket/day-23/day-23.rkt @@ -0,0 +1,89 @@ +#lang racket + +(require advent-of-code + threading + graph) + +(define input (fetch-aoc-input (find-session) 2023 23 #:cache #true)) +(define trails + (for*/hash ([(row r) (in-indexed (string-split input "\n"))] + [(col c) (in-indexed row)] + #:when (not (equal? col #\#))) + ; for now, we don't actually need to detect paths and slopes, just not-rocks + ; in part 1, all forks in the road go right or down, so we can just infer the path + ; direction from the shape of the junction and form a network of junctions from there + ; in part 2, the slopes are removed anyway + (values (cons (add1 r) (add1 c)) col))) + +(define max-row (~> input (string-split "\n") length)) + +(define start (findf (λ (p) (= (car p) 1)) (hash-keys trails))) +(define end (findf (λ (p) (= (car p) max-row)) (hash-keys trails))) + +(define (get-neighbors posn type) + (match-define (cons r c) posn) + (match type + ['junction + (~> (set (cons (add1 r) c) (cons r (add1 c))))] + [_ + (~> (list (cons (add1 r) c) (cons (sub1 r) c) (cons r (add1 c)) (cons r (sub1 c))) + (filter (curry hash-has-key? trails) _) + list->set)])) + +(define junction-points + (for/set ([(k v) (in-hash trails)] + #:when (not (= (set-count (get-neighbors k v)) 2))) + k)) + +(define trails-with-junctions + (for/hash ([k (in-hash-keys trails)]) + (cond + [(set-member? junction-points k) (values k 'junction)] + [else (values k 'trail)]))) + +(define (walk-to-next-junction start current [length 1] [seen (set start)]) + (define next (~> current + (get-neighbors _ 'trail) + (set-subtract seen) set-first)) + (cond + [(equal? (hash-ref trails-with-junctions next) 'junction) + (list (- (add1 length)) start next)] ; weird format is due to graph library + [else + (walk-to-next-junction start next (add1 length) (set-add seen current))])) + +(define routes-to-junctions + (for*/list ([j (in-set junction-points)] + [neighbor (in-set (get-neighbors j 'junction))] + #:when (hash-has-key? trails neighbor)) + (walk-to-next-junction j neighbor))) + +;; part 1 -- using graph library for Bellman-Ford on negative weighted graph +;; Bellman-Ford finds the shortest path, but negating all the path weights +;; will give us the longest path instead +;; +;; unlike Dijkstra which can't handle negative path lengths, Bellman-Ford +;; works as long as the graph is currently directed and acyclic +(define slippery-trail (weighted-graph/directed routes-to-junctions)) +(match-define-values (distances _) (bellman-ford slippery-trail start)) +(- (hash-ref distances end)) + +;; part 2 -- rolling my own DFS that can reject seen junctions and dead ends +(define routes-to-junctions-with-traction + (for/fold ([trails (hash)]) ([route (in-list routes-to-junctions)]) + (match-define (list (app - weight) from to) route) + (~> trails + (hash-update _ from (curry cons (cons to weight)) '()) + (hash-update _ to (curry cons (cons from weight)) '())))) + +(define (dfs g from to [acc 0] [seen (set from)]) + (cond + [(equal? from to) acc] + [else + (define choices (filter (λ (path) (not (set-member? seen (car path)))) (hash-ref g from))) + (if (empty? choices) 0 ; long dead-ends don't count + (for/fold ([best acc]) + ([path (in-list choices)] + #:do [(match-define (cons next dist) path)]) + (max best (dfs g next to (+ acc dist) (set-add seen next)))))])) + +(dfs routes-to-junctions-with-traction start end) \ No newline at end of file diff --git a/aoc2023-racket/day-24/day-24a.rkt b/aoc2023-racket/day-24/day-24a.rkt new file mode 100644 index 0000000..31f526d --- /dev/null +++ b/aoc2023-racket/day-24/day-24a.rkt @@ -0,0 +1,51 @@ +#lang rosette + +(require advent-of-code + threading) + +(struct hail (posn vel) #:transparent) +(struct posn (x y z) #:transparent) +(struct vel (x y z) #:transparent) + +(define input (fetch-aoc-input (find-session) 2023 24 #:cache #true)) + +(define LOWER-BOUND 200000000000000) +(define UPPER-BOUND 400000000000000) + +(define (->struct f str) + (~> str (string-split _ ",") (map (λ~> string-trim string->number) _) (apply f _))) + +(define (parse-hail-record str) + (match-define (list p v) (string-split str " @ ")) + (hail (->struct posn p) + (->struct vel v))) + +(define hail-paths + (for/list ([hail (in-list (string-split input "\n"))]) + (parse-hail-record hail))) + +;; part 1 +(define (valid-intersection? h1 h2) + (match-define (hail (posn x1 y1 _) (vel vx1 vy1 _)) h1) + (match-define (hail (posn x2 y2 _) (vel vx2 vy2 _)) h2) + (cond + [(= (* vy1 vx2) (* vx1 vy2)) #f] + [else + (define t1 (/ (- (* vy2 (- x1 x2)) (* vx2 (- y1 y2))) + (- (* vy1 vx2) (* vx1 vy2)))) + (define t2 (/ (- (* vy1 (- x2 x1)) (* vx1 (- y2 y1))) + (- (* vy2 vx1) (* vx2 vy1)))) + + (define x (+ x1 (* t1 vx1))) + (define y (+ y1 (* t1 vy1))) + + (and (<= LOWER-BOUND x UPPER-BOUND) + (<= LOWER-BOUND y UPPER-BOUND) + (<= 0 t1) + (<= 0 t2))])) + +(for/sum ([(trial-paths) (in-combinations hail-paths 2)] ; + #:when (apply valid-intersection? trial-paths)) + 1) + +;; part 2 - see day-24b.rkt diff --git a/aoc2023-racket/day-24/day-24b.rkt b/aoc2023-racket/day-24/day-24b.rkt new file mode 100644 index 0000000..b106b30 --- /dev/null +++ b/aoc2023-racket/day-24/day-24b.rkt @@ -0,0 +1,37 @@ +#lang rosette + +(require advent-of-code + threading) + +(struct hail (posn vel)) +(struct posn (x y z)) +(struct vel (x y z)) + +(define input (fetch-aoc-input (find-session) 2023 24 #:cache #true)) + +(define (->struct f str) + (~> str (string-split _ ",") (map (λ~> string-trim string->number) _) (apply f _))) + +(define (parse-hail-record str) + (match-define (list p v) (string-split str " @ ")) + (hail (->struct posn p) (->struct vel v))) + +(define hail-paths + (for/list ([hail (in-list (string-split input "\n"))] ; + [_ (in-range 3)]) + (parse-hail-record hail))) + +;; part 1 - see day-24a.rkt +;; part 2 + +(define-symbolic px py pz vx vy vz integer?) + +(define sol + (solve ; + (for ([path (in-list hail-paths)]) + (define-symbolic* t integer?) + (assert (= (+ px (* vx t)) (+ (~> path hail-posn posn-x) (* (~> path hail-vel vel-x) t)))) + (assert (= (+ py (* vy t)) (+ (~> path hail-posn posn-y) (* (~> path hail-vel vel-y) t)))) + (assert (= (+ pz (* vz t)) (+ (~> path hail-posn posn-z) (* (~> path hail-vel vel-z) t))))))) + +(evaluate (+ px py pz) sol) diff --git a/aoc2023-racket/day-25/day-25.rkt b/aoc2023-racket/day-25/day-25.rkt new file mode 100644 index 0000000..aa32e43 --- /dev/null +++ b/aoc2023-racket/day-25/day-25.rkt @@ -0,0 +1,43 @@ +#lang racket + +(require advent-of-code + threading + graph) + +(define input + (~> (fetch-aoc-input (find-session) 2023 25 #:cache #true) + (string-split "\n") + (map (curryr string-split ": ") _))) + +(define all-wires + (for*/list ([wire-diagram (in-list input)] [devices (in-list (string-split (second wire-diagram)))]) + (list (car wire-diagram) devices))) + +;; instead of trying to solve the minimum cut problem, I generated the graph and +;; rendered it in graphviz: + +; (define out (open-output-file "graphviz")) +; (~> all-wires +; unweighted-graph/undirected +; graphviz +; (display out)) +; (close-output-port out) + +;; the bottleneck is very obvious on the graph -- +;; there's two large clusters of nodes, connected by just three edges +;; +;; from the graphviz output, the three critical wires are +;; cpq-hlx +;; hqp-spk +;; chr-zlx + +(define remove-these-three '(("cpq" "hlx") ("hqp" "spk") ("chr" "zlx"))) +(define cut-wires + (for/list ([wire (in-list all-wires)] #:unless (member (sort wire string cut-wires + unweighted-graph/undirected + scc + (map length _) + (apply * _)) \ No newline at end of file diff --git a/aoc2023/.DS_Store b/aoc2023/.DS_Store deleted file mode 100644 index 5172429..0000000 Binary files a/aoc2023/.DS_Store and /dev/null differ diff --git a/aoc2023/.github/workflows/test.yml b/aoc2023/.github/workflows/test.yml deleted file mode 100644 index cf2096e..0000000 --- a/aoc2023/.github/workflows/test.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: test - -on: - push: - branches: - - master - - main - pull_request: - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: erlef/setup-beam@v1 - with: - otp-version: "26.0.2" - gleam-version: "0.32.4" - rebar3-version: "3" - # elixir-version: "1.15.4" - - run: gleam deps download - - run: gleam test - - run: gleam format --check src test diff --git a/aoc2023/.gitignore b/aoc2023/.gitignore deleted file mode 100644 index 8248306..0000000 --- a/aoc2023/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -*.beam -*.ez -build -erl_crash.dump - -aoc.toml \ No newline at end of file diff --git a/aoc2023/README.md b/aoc2023/README.md deleted file mode 100644 index 3f534e8..0000000 --- a/aoc2023/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# aoc2023 - -[![Package Version](https://img.shields.io/hexpm/v/aoc2023)](https://hex.pm/packages/aoc2023) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/aoc2023/) - -## Quick start - -```sh -gleam run # Run the project -gleam test # Run the tests -gleam shell # Run an Erlang shell -``` - -## Installation - -If available on Hex this package can be added to your Gleam project: - -```sh -gleam add aoc2023 -``` - -and its documentation can be found at . - -## Use - -* Set up a solution: `gleam run -m adglent/day ` -* Check against examples: `gleam test -- --modules=day/day_test` -* Get final answer: `gleam run -m day/solve

` \ No newline at end of file diff --git a/aoc2023/gleam.toml b/aoc2023/gleam.toml deleted file mode 100644 index 8190aef..0000000 --- a/aoc2023/gleam.toml +++ /dev/null @@ -1,22 +0,0 @@ -name = "aoc2023" -version = "0.1.0" -gleam = ">= 0.33.0" - -# Fill out these fields if you intend to generate HTML documentation or publish -# your project to the Hex package manager. -# -# description = "" -# licences = ["Apache-2.0"] -# repository = { type = "github", user = "username", repo = "project" } -# links = [{ title = "Website", href = "https://gleam.run" }] - -[dependencies] -gleam_stdlib = "~> 0.33" -simplifile = "~> 1.0" -gleam_erlang = "~> 0.23" -gleam_community_maths = "~> 1.0" -gleam_otp = "~> 0.8" -pqueue = "~> 2.0" - -[dev-dependencies] -adglent = "~> 1.2" diff --git a/aoc2023/manifest.toml b/aoc2023/manifest.toml deleted file mode 100644 index 900b5c0..0000000 --- a/aoc2023/manifest.toml +++ /dev/null @@ -1,29 +0,0 @@ -# This file was generated by Gleam -# You typically do not need to edit this file - -packages = [ - { name = "adglent", version = "1.2.0", build_tools = ["gleam"], requirements = ["glint", "gleam_http", "gleam_stdlib", "simplifile", "gleam_erlang", "gap", "gleam_httpc", "snag", "gleam_community_ansi", "tom", "gleam_otp"], otp_app = "adglent", source = "hex", outer_checksum = "A20D35001061F8AD602E3B92FB3AC0E1E4EEC642AD2AAE0ACEAD3A85F37DA7F0" }, - { name = "gap", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_stdlib"], otp_app = "gap", source = "hex", outer_checksum = "5E369751DB547BFBDA7735878DC04DA31FCA3112193D61D5D7566010C7C8BA98" }, - { name = "gleam_community_ansi", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8B5A9677BC5A2738712BBAF2BA289B1D8195FDF962BBC769569976AD5E9794E1" }, - { name = "gleam_community_colour", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "036C206886AFB9F153C552700A7A0B4D2864E3BC96A20C77E5F34A013C051BE3" }, - { name = "gleam_community_maths", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_maths", source = "hex", outer_checksum = "1B9DB313E94A0E4674CA84C5D29F45ECFE211BFB38ABBD8B23737395F47D08B3" }, - { name = "gleam_erlang", version = "0.23.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "C21CFB816C114784E669FFF4BBF433535EEA9960FA2F216209B8691E87156B96" }, - { name = "gleam_http", version = "3.5.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "AECDA43AFD523D07A8F09068598A6E271C505278A0CB6F9C7A2E4365EAE8D11E" }, - { name = "gleam_httpc", version = "2.1.1", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "06AC1CA52C9BAA66C9D5C0303B2BF34E39AA1546BB96AEE496E4B06D513AB8C7" }, - { name = "gleam_otp", version = "0.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_erlang"], otp_app = "gleam_otp", source = "hex", outer_checksum = "18EF8242A5E54BA92F717C7222F03B3228AEE00D1F286D4C56C3E8C18AA2588E" }, - { name = "gleam_stdlib", version = "0.33.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "539E37A2AA5EBE8E75F4B74755E4CC604BD957C3000AC8D705A2024886A2738B" }, - { name = "glint", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_community_ansi", "gleam_community_colour", "snag"], otp_app = "glint", source = "hex", outer_checksum = "46E56049CD370D61F720D319D0AB970408C9336EEB918F08B5DCB1DCE9845FA3" }, - { name = "pqueue", version = "2.0.7", build_tools = ["rebar3"], requirements = [], otp_app = "pqueue", source = "hex", outer_checksum = "8B0204BB202335890E4E7F9B99A8EC0B84DDB8513EE298EB180EE9B3BCB4C859" }, - { name = "simplifile", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0BD6F0E7DA1A7E11D18B8AD48453225CAFCA4C8CFB4513D217B372D2866C501C" }, - { name = "snag", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "8FD70D8FB3728E08AC425283BB509BB0F012BE1AE218424A597CDE001B0EE589" }, - { name = "tom", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "tom", source = "hex", outer_checksum = "5C5A9B8586C547F1F39542B1A3BBD9FEE17AFEAB51CE53B32B13D0D46B421249" }, -] - -[requirements] -adglent = { version = "~> 1.2" } -gleam_community_maths = { version = "~> 1.0" } -gleam_erlang = { version = "~> 0.23" } -gleam_otp = { version = "~> 0.8" } -gleam_stdlib = { version = "~> 0.33" } -pqueue = { version = "~> 2.0" } -simplifile = { version = "~> 1.0" } diff --git a/aoc2023/src/.gitignore b/aoc2023/src/.gitignore deleted file mode 100644 index bc13a69..0000000 --- a/aoc2023/src/.gitignore +++ /dev/null @@ -1 +0,0 @@ -aoc2023.gleam \ No newline at end of file diff --git a/aoc2023/src/aoc2023.gleam b/aoc2023/src/aoc2023.gleam deleted file mode 100644 index aab904d..0000000 --- a/aoc2023/src/aoc2023.gleam +++ /dev/null @@ -1,12 +0,0 @@ -import gleam/io -import gleam/bit_array - -const str = "abcdefgh -abcdefgh" - -pub fn main() { - let trim = 8 - let assert <<_:bytes-size(trim), "\n":utf8, rest:bytes>> = - bit_array.from_string(str) - io.debug(rest) -} diff --git a/aoc2023/src/day1/.gitignore b/aoc2023/src/day1/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day1/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day1/solve.gleam b/aoc2023/src/day1/solve.gleam deleted file mode 100644 index ed14bde..0000000 --- a/aoc2023/src/day1/solve.gleam +++ /dev/null @@ -1,64 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/list -import gleam/string -import gleam/regex.{type Match, Match} -import gleam/int - -pub fn part1(input: String) { - let assert Ok(re) = regex.from_string("[1-9]") - - input - |> string.split("\n") - |> list.fold( - 0, - fn(acc, s) { - let matches = regex.scan(s, with: re) - - let assert Ok(Match(content: first, ..)) = list.first(matches) - let assert Ok(Match(content: last, ..)) = list.last(matches) - let assert Ok(i) = int.parse(first <> last) - acc + i - }, - ) - |> string.inspect -} - -const substitutions = [ - #("one", "o1e"), - #("two", "t2o"), - #("three", "t3e"), - #("four", "4"), - #("five", "5e"), - #("six", "6"), - #("seven", "7n"), - #("eight", "e8t"), - #("nine", "n9e"), -] - -pub fn part2(input: String) { - list.fold( - over: substitutions, - from: input, - with: fn(acc, sub) { - let #(from, to) = sub - string.replace(in: acc, each: from, with: to) - }, - ) - |> part1 -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("1") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day10/.gitignore b/aoc2023/src/day10/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day10/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day10/solve.gleam b/aoc2023/src/day10/solve.gleam deleted file mode 100644 index c33634d..0000000 --- a/aoc2023/src/day10/solve.gleam +++ /dev/null @@ -1,177 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/list -import gleam/int -import gleam/io -import gleam/set.{type Set} -import gleam/string - -type Posn { - Posn(row: Int, col: Int) -} - -fn add_posns(p1: Posn, p2: Posn) -> Posn { - Posn(p1.row + p2.row, p1.col + p2.col) -} - -type PipeGrid = - Dict(Posn, String) - -const north = Posn(-1, 0) - -const south = Posn(1, 0) - -const east = Posn(0, 1) - -const west = Posn(0, -1) - -const initial_directions = [ - #(north, ["|", "7", "F"]), - #(south, ["|", "J", "L"]), - #(east, ["-", "J", "7"]), - #(west, ["-", "F", "L"]), -] - -fn pipe_neighbors(pipe: String) -> List(Posn) { - case pipe { - "|" -> [north, south] - "-" -> [east, west] - "L" -> [north, east] - "F" -> [south, east] - "7" -> [south, west] - "J" -> [north, west] - _ -> panic as "bad pipe" - } -} - -fn make_grid(input: String) -> PipeGrid { - { - use r, row <- list.index_map(string.split(input, "\n")) - use c, col <- list.index_map(string.to_graphemes(row)) - #(Posn(r, c), col) - } - |> list.flatten - |> dict.from_list -} - -fn valid_start_direction(grid: PipeGrid, s: Posn) { - let assert [dir, ..] = { - use d <- list.filter_map(initial_directions) - let #(delta, valids) = d - let neighbor = add_posns(s, delta) - case dict.get(grid, neighbor) { - Ok(pipe) -> - case list.contains(valids, pipe) { - True -> Ok(neighbor) - False -> Error(Nil) - } - Error(_) -> Error(Nil) - } - } - dir -} - -fn to_next_pipe(current: Posn, grid: PipeGrid, acc: List(Posn)) { - let assert [prev, ..] = acc - let assert Ok(pipe) = dict.get(grid, current) - use <- bool.guard(pipe == "S", [current, ..acc]) - let assert [next] = { - pipe - |> pipe_neighbors - |> list.filter_map(fn(p) { - case add_posns(p, current) { - neighbor if neighbor == prev -> Error(Nil) - neighbor -> Ok(neighbor) - } - }) - } - to_next_pipe(next, grid, [current, ..acc]) -} - -pub fn part1(input: String) { - let grid = - input - |> make_grid - - let assert Ok(s) = - grid - |> dict.filter(fn(_, v) { v == "S" }) - |> dict.keys - |> list.first - - grid - |> valid_start_direction(s) - |> to_next_pipe(grid, [s]) - |> list.length - |> fn(i) { { { i - 1 } / 2 } } - |> string.inspect -} - -fn trace_ray(p: Posn, loop: Set(Posn), grid: PipeGrid) -> Bool { - use <- bool.guard(set.contains(loop, p), False) - int.is_odd(count_crossings(p, loop, grid, 0, "")) -} - -fn count_crossings( - p: Posn, - loop: Set(Posn), - grid: PipeGrid, - acc: Int, - corner: String, -) { - let maybe_cell = dict.get(grid, p) - use <- bool.guard(maybe_cell == Error(Nil), acc) - let assert Ok(cell) = maybe_cell - let next = add_posns(p, east) - case set.contains(loop, p) { - False -> count_crossings(next, loop, grid, acc, corner) - True -> - case corner, cell { - _, "|" -> count_crossings(next, loop, grid, acc + 1, corner) - _, "F" | _, "L" -> count_crossings(next, loop, grid, acc, cell) - "F", "J" | "L", "7" -> count_crossings(next, loop, grid, acc + 1, "") - "F", "7" | "L", "J" -> count_crossings(next, loop, grid, acc, "") - _, _ -> count_crossings(next, loop, grid, acc, corner) - } - } -} - -pub fn part2(input: String) { - let grid = - input - |> make_grid - - let assert Ok(s) = - grid - |> dict.filter(fn(_, v) { v == "S" }) - |> dict.keys - |> list.first - - let loop_pipes = - grid - |> valid_start_direction(s) - |> to_next_pipe(grid, [s]) - |> set.from_list - - grid - |> dict.keys - |> list.filter(trace_ray(_, loop_pipes, grid)) - |> list.length() - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("10") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day11/.gitignore b/aoc2023/src/day11/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day11/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day11/solve.gleam b/aoc2023/src/day11/solve.gleam deleted file mode 100644 index 35464a1..0000000 --- a/aoc2023/src/day11/solve.gleam +++ /dev/null @@ -1,84 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/int -import gleam/string -import gleam/list - -type Posn { - Posn(x: Int, y: Int) -} - -fn find_empty(grid: List(List(String))) { - use acc, row, r <- list.index_fold(grid, []) - case list.unique(row) { - ["."] -> [r, ..acc] - _ -> acc - } -} - -fn count_prior_empty_ranks(rank: Int, empty_ranks: List(Int)) -> Int { - empty_ranks - |> list.drop_while(fn(r_empty) { r_empty > rank }) - |> list.length -} - -fn parse_with_expansion(input: String, expansion: Int) -> List(Posn) { - let add = expansion - 1 - let grid = - input - |> string.split("\n") - |> list.map(string.to_graphemes) - - let empty_row_list = find_empty(grid) - let empty_col_list = find_empty(list.transpose(grid)) - - { - use r, row <- list.index_map(grid) - use acc, cell, c <- list.index_fold(over: row, from: []) - - let p = Posn(r, c) - let empty_r = count_prior_empty_ranks(r, empty_row_list) - let empty_c = count_prior_empty_ranks(c, empty_col_list) - case cell { - "#" -> [Posn(p.x + empty_r * add, p.y + empty_c * add), ..acc] - _empty -> acc - } - } - |> list.flatten() -} - -fn all_distances(stars: List(Posn)) -> Int { - use acc, pair <- list.fold(list.combination_pairs(stars), 0) - let #(s1, s2) = pair - acc + int.absolute_value(s1.x - s2.x) + int.absolute_value(s1.y - s2.y) -} - -fn find_distances(input: String, expand_by: Int) -> String { - input - |> parse_with_expansion(expand_by) - |> all_distances - |> string.inspect -} - -pub fn part1(input: String) { - find_distances(input, 2) -} - -pub fn part2(input: String) { - find_distances(input, 1_000_000) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("11") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day12/.gitignore b/aoc2023/src/day12/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day12/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day12/solve.gleam b/aoc2023/src/day12/solve.gleam deleted file mode 100644 index 06c7098..0000000 --- a/aoc2023/src/day12/solve.gleam +++ /dev/null @@ -1,91 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/string -import gleam/list -import gleam/int -import gleam/result -import utilities/memo.{type Cache} - -type ParserState = - #(String, List(Int), Int, Bool) - -fn parse_folds(input: String, folds: Int) { - let records = string.split(input, "\n") - use record <- list.map(records) - let assert Ok(#(template, sets_str)) = string.split_once(record, " ") - - let template = - template - |> list.repeat(folds) - |> list.intersperse("?") - |> string.concat - let sets = - sets_str - |> string.split(",") - |> list.map(int.parse) - |> result.values - |> list.repeat(folds) - |> list.flatten() - - #(template, sets) -} - -fn do_count( - template: String, - groups: List(Int), - left: Int, - gap: Bool, - cache: Cache(ParserState, Int), -) -> Int { - use <- memo.memoize(cache, #(template, groups, left, gap)) - case template, groups, left, gap { - "", [], 0, _ -> 1 - "?" <> t_rest, [g, ..g_rest], 0, False -> - do_count(t_rest, g_rest, g - 1, g == 1, cache) + { - do_count(t_rest, groups, 0, False, cache) - } - "?" <> t_rest, [], 0, False - | "?" <> t_rest, _, 0, True - | "." <> t_rest, _, 0, _ -> do_count(t_rest, groups, 0, False, cache) - "#" <> t_rest, [g, ..g_rest], 0, False -> - do_count(t_rest, g_rest, g - 1, g == 1, cache) - "?" <> t_rest, gs, l, False | "#" <> t_rest, gs, l, False -> - do_count(t_rest, gs, l - 1, l == 1, cache) - _, _, _, _ -> 0 - } -} - -fn count_solutions(acc: Int, condition: #(String, List(Int))) -> Int { - use cache: Cache(ParserState, Int) <- memo.create() - let #(template, groups) = condition - acc + do_count(template, groups, 0, False, cache) -} - -pub fn part1(input: String) { - input - |> parse_folds(1) - |> list.fold(0, count_solutions) - |> string.inspect -} - -pub fn part2(input: String) { - input - |> parse_folds(5) - |> list.fold(0, count_solutions) - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("12") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day13/.gitignore b/aoc2023/src/day13/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day13/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day13/solve.gleam b/aoc2023/src/day13/solve.gleam deleted file mode 100644 index 2b3fca2..0000000 --- a/aoc2023/src/day13/solve.gleam +++ /dev/null @@ -1,86 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/list -import gleam/string -import gleam/bool - -type SymmetryType { - Horizontal(Int) - Vertical(Int) -} - -fn is_symmetric(xss: List(List(a)), errs: Int) { - let assert [left, ..right] = xss - do_is_symmetric([left], right, errs) -} - -fn do_is_symmetric( - left: List(List(a)), - right: List(List(a)), - errors: Int, -) -> Result(Int, Nil) { - use <- bool.guard(list.is_empty(right), Error(Nil)) - let assert [h, ..t] = right - let found_errors = - list.zip(list.flatten(left), list.flatten(right)) - |> list.filter(fn(tup) { tup.1 != tup.0 }) - |> list.length - case found_errors == errors { - True -> Ok(list.length(left)) - False -> do_is_symmetric([h, ..left], t, errors) - } -} - -fn get_symmetry_type(xss: List(List(String)), errors: Int) { - case is_symmetric(xss, errors) { - Ok(n) -> Horizontal(n) - _ -> { - let assert Ok(n) = is_symmetric(list.transpose(xss), errors) - Vertical(n) - } - } -} - -fn summarize_notes(symmetries: List(SymmetryType)) { - use acc, note <- list.fold(symmetries, 0) - case note { - Horizontal(n) -> 100 * n - Vertical(n) -> n - } + acc -} - -fn solve(input: String, errors: Int) { - input - |> string.split("\n\n") - |> list.map(fn(strs) { - strs - |> string.split("\n") - |> list.map(string.to_graphemes) - |> get_symmetry_type(errors) - }) - |> summarize_notes - |> string.inspect -} - -pub fn part1(input: String) { - solve(input, 0) -} - -pub fn part2(input: String) { - solve(input, 1) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("13") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day14/.gitignore b/aoc2023/src/day14/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day14/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day14/solve.gleam b/aoc2023/src/day14/solve.gleam deleted file mode 100644 index 1ad1a18..0000000 --- a/aoc2023/src/day14/solve.gleam +++ /dev/null @@ -1,93 +0,0 @@ -import adglent.{First, Second} -import gleam/dict -import gleam/int -import gleam/io -import gleam/list -import gleam/order -import gleam/string - -fn parse(input) { - input - |> string.split("\n") - |> list.map(string.to_graphemes) - |> list.transpose() -} - -fn roll_boulders(strs: List(String)) { - { - use chunks <- list.map(list.chunk(strs, fn(c) { c == "O" || c == "." })) - list.sort(chunks, order.reverse(string.compare)) - } - |> list.flatten -} - -fn score(matrix) { - use acc, col <- list.fold(matrix, 0) - acc + { - use col_acc, char, n <- list.index_fold(list.reverse(col), 0) - case char { - "O" -> col_acc + n + 1 - _ -> col_acc - } - } -} - -pub fn part1(input: String) { - input - |> parse - |> list.map(roll_boulders) - |> score() - |> string.inspect -} - -fn rotate(matrix) { - matrix - |> list.map(list.reverse) - |> list.transpose -} - -fn spin(matrix) { - use acc, _ <- list.fold(list.range(1, 4), matrix) - acc - |> list.map(roll_boulders) - |> rotate -} - -fn spin_cycle(matrix) { - let cache = dict.new() - check_if_seen(matrix, cache, 1_000_000_000) -} - -fn check_if_seen(matrix, cache, count) { - case dict.get(cache, matrix) { - Error(Nil) -> - check_if_seen(spin(matrix), dict.insert(cache, matrix, count), count - 1) - Ok(n) -> { - let assert Ok(extra) = int.modulo(count, n - count) - list.fold(list.range(1, extra), matrix, fn(acc, _) { spin(acc) }) - |> score - } - } -} - -pub fn part2(input: String) { - input - |> parse - |> spin_cycle - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("14") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day15/.gitignore b/aoc2023/src/day15/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day15/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day15/solve.gleam b/aoc2023/src/day15/solve.gleam deleted file mode 100644 index a7d250c..0000000 --- a/aoc2023/src/day15/solve.gleam +++ /dev/null @@ -1,104 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/string -import gleam/list -import gleam/int -import gleam/dict.{type Dict} -import gleam/option.{None, Some} - -fn split(input: String) -> List(String) { - input - |> string.split(",") -} - -fn hash_algorithm(str: String) -> Int { - let codepoints = - str - |> string.to_utf_codepoints() - |> list.map(string.utf_codepoint_to_int) - use acc, c <- list.fold(codepoints, 0) - let assert Ok(acc) = int.modulo({ acc + c } * 17, 256) - acc -} - -pub fn part1(input: String) -> String { - input - |> split - |> list.fold(0, fn(acc, str) { acc + hash_algorithm(str) }) - |> string.inspect -} - -type Instruction { - Remove(label: String) - Insert(label: String, focal: Int) -} - -fn read_instruction(str: String) -> Instruction { - case string.split(str, "=") { - [label, focal_str] -> { - let assert Ok(focal) = int.parse(focal_str) - Insert(label, focal) - } - _ -> Remove(string.drop_right(str, 1)) - } -} - -fn parse_instructions(insts: List(String)) -> Dict(Int, List(#(String, Int))) { - use acc, inst <- list.fold(insts, dict.new()) - case read_instruction(inst) { - Remove(label) -> remove_lens(acc, label) - Insert(label, focal) -> insert_lens(acc, label, focal) - } -} - -fn remove_lens(boxes, label) { - use v <- dict.update(boxes, hash_algorithm(label)) - case v { - Some(lenses) -> - case list.key_pop(lenses, label) { - Ok(#(_, updated)) -> updated - Error(Nil) -> lenses - } - None -> [] - } -} - -fn insert_lens(boxes, label, focal) { - use v <- dict.update(boxes, hash_algorithm(label)) - case v { - Some(lenses) -> list.key_set(lenses, label, focal) - None -> [#(label, focal)] - } -} - -fn focusing_power(boxes: Dict(Int, List(#(String, Int)))) -> Int { - use acc, k, v <- dict.fold(boxes, 0) - let box_acc = { - use acc, lens, i <- list.index_fold(v, 0) - acc + lens.1 * { i + 1 } - } - acc + { k + 1 } * box_acc -} - -pub fn part2(input: String) -> String { - input - |> split - |> parse_instructions - |> focusing_power - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("15") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day16/.gitignore b/aoc2023/src/day16/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day16/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day16/solve.gleam b/aoc2023/src/day16/solve.gleam deleted file mode 100644 index 65ce36b..0000000 --- a/aoc2023/src/day16/solve.gleam +++ /dev/null @@ -1,119 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/io -import gleam/list -import gleam/result -import gleam/set.{type Set} -import utilities/array2d.{type Posn, Posn} - -type Direction { - Up - Right - Down - Left -} - -type Light { - Light(posn: Posn, dir: Direction) -} - -fn move(l: Light) -> Light { - let Light(p, dir) = l - case dir { - Up -> Light(..l, posn: Posn(..p, r: p.r - 1)) - Down -> Light(..l, posn: Posn(..p, r: p.r + 1)) - Left -> Light(..l, posn: Posn(..p, c: p.c - 1)) - Right -> Light(..l, posn: Posn(..p, c: p.c + 1)) - } -} - -fn transform(l: Light, cell: Result(String, Nil)) -> List(Light) { - use <- bool.guard(result.is_error(cell), []) - let assert Ok(c) = cell - let Light(p, dir) = l - case dir, c { - // no change - _, "." | Up, "|" | Down, "|" | Left, "-" | Right, "-" -> [l] - // diagonal mirrors - Left, "/" -> [Light(p, Down)] - Down, "/" -> [Light(p, Left)] - Right, "/" -> [Light(p, Up)] - Up, "/" -> [Light(p, Right)] - Left, "\\" -> [Light(p, Up)] - Up, "\\" -> [Light(p, Left)] - Right, "\\" -> [Light(p, Down)] - Down, "\\" -> [Light(p, Right)] - // splitters - Left, "|" | Right, "|" -> [Light(p, Up), Light(p, Down)] - Up, "-" | Down, "-" -> [Light(p, Left), Light(p, Right)] - _, _ -> panic as "unrecognized cell type" - } -} - -fn energize(lights: List(Light), visited: Set(Light), grid: Dict(Posn, String)) { - let next_positions = - lights - |> list.flat_map(fn(l) { - let next = move(l) - transform(next, dict.get(grid, next.posn)) - }) - |> list.filter(fn(l) { !set.contains(visited, l) }) - let all_visited = set.union(set.from_list(next_positions), visited) - case visited == all_visited { - True -> - set.fold(visited, set.new(), fn(acc, l) { set.insert(acc, l.posn) }) - |> set.to_list - |> list.length - False -> energize(next_positions, all_visited, grid) - } -} - -pub fn part1(input: String) { - let grid = array2d.parse_grid(input) - - [Light(Posn(0, -1), Right)] - |> energize(set.new(), grid) -} - -pub fn part2(input: String) { - let grid = array2d.parse_grid(input) - - let Posn(rows, cols) = { - use acc, p <- list.fold(dict.keys(grid), Posn(0, 0)) - case acc.r + acc.c > p.r + p.c { - True -> acc - False -> p - } - } - - let all_starts = - list.concat([ - list.map(list.range(0, rows), fn(r) { Light(Posn(r, -1), Right) }), - list.map(list.range(0, rows), fn(r) { Light(Posn(r, cols + 1), Left) }), - list.map(list.range(0, cols), fn(c) { Light(Posn(-1, c), Down) }), - list.map(list.range(0, cols), fn(c) { Light(Posn(rows + 1, c), Up) }), - ]) - - use acc, p <- list.fold(all_starts, 0) - let energized = energize([p], set.new(), grid) - case acc > energized { - True -> acc - False -> energized - } -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("16") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day17/.gitignore b/aoc2023/src/day17/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day17/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day17/solve.gleam b/aoc2023/src/day17/solve.gleam deleted file mode 100644 index 7a01c4d..0000000 --- a/aoc2023/src/day17/solve.gleam +++ /dev/null @@ -1,143 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/io -import gleam/list -import gleam/result -import gleam/string -import gleam/set.{type Set} -import utilities/array2d.{type Posn, Posn} -import utilities/prioqueue.{type PriorityQueue} - -type State { - State(posn: Posn, heatloss: Int, previous: Posn, history: List(Posn)) -} - -const deltas = [Posn(-1, 0), Posn(1, 0), Posn(0, -1), Posn(0, 1)] - -fn make_key(s: State) { - #(s.posn, same_dir(s)) -} - -fn same_dir(s: State) { - case s.history { - [] -> [] - [first, ..] as deltas -> - list.take_while(deltas, fn(d) { d == first }) - |> list.take(10) - } -} - -fn is_goal(s: State, min_run: Int, goal: Posn) { - goal == s.posn && list.length(same_dir(s)) >= min_run -} - -fn find_good_neighbors(max: Int, min: Int, s: State, grid) { - deltas - |> list.filter(eliminate_bad_neighbors(_, s, max, min, grid)) - |> list.map(make_state(_, s, grid)) -} - -fn eliminate_bad_neighbors(d: Posn, s: State, max, min, grid) { - let neighbor = array2d.add_posns(d, s.posn) - - use <- bool.guard( - neighbor == s.previous || !dict.has_key(grid, neighbor), - False, - ) - case same_dir(s), list.length(same_dir(s)) { - [prev, ..], l if l == max -> d != prev - _, 0 -> True - [prev, ..], l if l < min -> d == prev - _, _ -> True - } -} - -fn make_state(d: Posn, s: State, grid) { - let neighbor = array2d.add_posns(d, s.posn) - let assert Ok(heat_lost) = dict.get(grid, neighbor) - State( - posn: neighbor, - heatloss: s.heatloss + heat_lost, - previous: s.posn, - history: [d, ..s.history], - ) -} - -fn find_path( - grid: Dict(Posn, Int), - queue: PriorityQueue(State), - seen: Set(#(Posn, List(Posn))), - get_neighbors: fn(State) -> List(State), - is_goal: fn(State) -> Bool, -) { - let assert Ok(#(state, rest)) = prioqueue.pop(queue) - let key = - make_key( - state - |> io.debug, - ) - case set.contains(seen, key) { - True -> find_path(grid, rest, seen, get_neighbors, is_goal) - False -> { - let now_seen = set.insert(seen, key) - let neighbors = get_neighbors(state) - case list.find(neighbors, is_goal) { - Ok(final) -> final.heatloss - _err -> { - let now_queue = - list.fold(neighbors, rest, fn(acc, n) { - prioqueue.insert(acc, n, n.heatloss) - }) - find_path(grid, now_queue, now_seen, get_neighbors, is_goal) - } - } - } - } -} - -pub fn part1(input: String) { - let raw_grid = - input - |> array2d.to_list_of_lists - - let grid = array2d.to_2d_intarray(raw_grid) - - let rmax = list.length(raw_grid) - let assert Ok(cmax) = - raw_grid - |> list.first - |> result.map(list.length) - - let start = State(Posn(0, 0), 0, Posn(0, 0), []) - let goal = Posn(rmax, cmax) - - find_path( - grid, - prioqueue.insert(prioqueue.new(), start, 0), - set.new(), - find_good_neighbors(0, 3, _, grid), - is_goal(_, 1, goal), - ) - |> string.inspect -} - -pub fn part2(input: String) { - input - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("17") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day18/.gitignore b/aoc2023/src/day18/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day18/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day18/solve.gleam b/aoc2023/src/day18/solve.gleam deleted file mode 100644 index 2c000f9..0000000 --- a/aoc2023/src/day18/solve.gleam +++ /dev/null @@ -1,113 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/int -import gleam/list -import gleam/option.{Some} -import gleam/regex.{type Match, Match} -import gleam/string - -type Coord { - Coord(x: Int, y: Int) -} - -type Direction { - Up - Right - Down - Left -} - -type Dig { - Dig(dir: Direction, dist: Int) -} - -fn to_direction(c: String) { - case c { - "R" | "0" -> Right - "D" | "1" -> Down - "L" | "2" -> Left - "U" | "3" -> Up - _ -> panic - } -} - -fn parse_front(line: String) { - let assert Ok(re) = regex.from_string("(.) (.*) \\(.*\\)") - let assert [Match(submatches: [Some(dir), Some(dist)], ..)] = - regex.scan(with: re, content: line) - let assert Ok(n) = int.parse(dist) - Dig(to_direction(dir), n) -} - -fn parse_hex(line: String) { - let assert Ok(re) = regex.from_string("\\(#(.....)(.)\\)") - let assert [Match(submatches: [Some(dist), Some(dir)], ..)] = - regex.scan(with: re, content: line) - let assert Ok(n) = int.base_parse(dist, 16) - Dig(to_direction(dir), n) -} - -fn go(current: Coord, dig: Dig) { - case dig { - Dig(Up, n) -> Coord(current.x, current.y + n) - Dig(Right, n) -> Coord(current.x + n, current.y) - Dig(Down, n) -> Coord(current.x, current.y - n) - Dig(Left, n) -> Coord(current.x - n, current.y) - } -} - -fn double_triangle(c1: Coord, c2: Coord) { - { c1.x * c2.y } - { c2.x * c1.y } -} - -fn start_dig(digs: List(Dig)) { - do_next_dig(digs, Coord(0, 0), 0, 0) -} - -fn do_next_dig( - digs: List(Dig), - current: Coord, - area: Int, - perimeter: Int, -) -> Int { - case digs { - [] -> int.absolute_value(area) / 2 + { perimeter / 2 } + 1 - [dig, ..rest] -> { - let next = go(current, dig) - let area = area + double_triangle(current, next) - let perimeter = perimeter + dig.dist - do_next_dig(rest, next, area, perimeter) - } - } -} - -fn solve_with(input, f) { - input - |> string.split("\n") - |> list.map(f) - |> start_dig - |> string.inspect -} - -pub fn part1(input: String) { - solve_with(input, parse_front) -} - -pub fn part2(input: String) { - solve_with(input, parse_hex) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("18") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day19/.gitignore b/aoc2023/src/day19/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day19/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day19/solve.gleam b/aoc2023/src/day19/solve.gleam deleted file mode 100644 index 186e783..0000000 --- a/aoc2023/src/day19/solve.gleam +++ /dev/null @@ -1,255 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/string -import gleam/dict.{type Dict} -import gleam/order.{type Order, Gt, Lt} -import gleam/regex.{type Match, Match} -import gleam/list -import gleam/option.{Some} -import gleam/int - -type Rating { - XtremelyCool - Musical - Aerodynamic - Shiny -} - -type Part { - Part(x: Int, m: Int, a: Int, s: Int) -} - -type Action { - Accept - Reject - SendTo(String) -} - -type Rule { - If(rating: Rating, comparison: Order, threshold: Int, do: Action) - Just(do: Action) -} - -type Workflow = - Dict(String, List(Rule)) - -type Interval { - Interval(min: Int, max: Int) -} - -type PartRange { - PartRange(x: Interval, m: Interval, a: Interval, s: Interval) -} - -fn parse_workflow(input: String) -> Workflow { - let assert Ok(re) = regex.from_string("(.*){(.*)}") - - use acc, line <- list.fold(string.split(input, "\n"), dict.new()) - let assert [Match(submatches: [Some(name), Some(all_rules)], ..)] = - regex.scan(re, line) - let rules = - string.split(all_rules, ",") - |> parse_rules - dict.insert(acc, name, rules) -} - -fn parse_rules(rules: List(String)) -> List(Rule) { - let assert Ok(re_rule) = regex.from_string("(.*)(>|<)(.*):(.*)") - use rule <- list.map(rules) - case regex.scan(re_rule, rule) { - [Match(submatches: [Some(r), Some(c), Some(t), Some(i)], ..)] -> - If(to_rating(r), to_comp(c), to_val(t), to_instruction(i)) - _nomatch -> Just(to_instruction(rule)) - } -} - -fn to_instruction(rule: String) { - case rule { - "A" -> Accept - "R" -> Reject - name -> SendTo(name) - } -} - -fn to_rating(rating: String) { - case rating { - "x" -> XtremelyCool - "m" -> Musical - "a" -> Aerodynamic - _s -> Shiny - } -} - -fn get_rating(part: Part, rating: Rating) -> Int { - case rating { - XtremelyCool -> part.x - Musical -> part.m - Aerodynamic -> part.a - Shiny -> part.s - } -} - -fn to_comp(comp: String) { - case comp { - "<" -> Lt - _gt -> Gt - } -} - -fn to_val(val: String) { - let assert Ok(n) = int.parse(val) - n -} - -fn parse_parts(input: String) -> List(Part) { - let assert Ok(re) = regex.from_string("{x=(.*),m=(.*),a=(.*),s=(.*)}") - - use part <- list.map(string.split(input, "\n")) - let assert [Match(submatches: [Some(x), Some(m), Some(a), Some(s)], ..)] = - regex.scan(re, part) - Part(to_val(x), to_val(m), to_val(a), to_val(s)) -} - -fn start_evaluating_workflow(part: Part, workflow: Workflow) -> Int { - evaluate_workflow(part, "in", workflow) -} - -fn evaluate_workflow(part: Part, name: String, workflow: Workflow) -> Int { - let assert Ok(rules) = dict.get(workflow, name) - case evaluate_rules(part, rules) { - Accept -> part.x + part.m + part.a + part.s - Reject -> 0 - SendTo(name) -> evaluate_workflow(part, name, workflow) - } -} - -fn evaluate_rules(part: Part, rules: List(Rule)) -> Action { - case rules { - [] -> panic - [Just(do), ..] -> do - [If(rating, comparison, threshold, do), ..rest] -> - case int.compare(get_rating(part, rating), threshold) == comparison { - True -> do - False -> evaluate_rules(part, rest) - } - } -} - -pub fn part1(input: String) { - let assert Ok(#(workflows_str, parts_str)) = string.split_once(input, "\n\n") - - let workflows = parse_workflow(workflows_str) - let parts = parse_parts(parts_str) - - list.map(parts, start_evaluating_workflow(_, workflows)) - |> int.sum - |> string.inspect -} - -fn size(interval: Interval) { - interval.max - interval.min + 1 -} - -fn all_in_range(pr: PartRange) { - size(pr.x) * size(pr.m) * size(pr.a) * size(pr.s) -} - -fn get_partrange(pr: PartRange, rating: Rating) -> Interval { - case rating { - XtremelyCool -> pr.x - Musical -> pr.m - Aerodynamic -> pr.a - Shiny -> pr.s - } -} - -fn update_partrange(pr: PartRange, rating: Rating, i: Interval) -> PartRange { - case rating { - XtremelyCool -> PartRange(..pr, x: i) - Musical -> PartRange(..pr, m: i) - Aerodynamic -> PartRange(..pr, a: i) - Shiny -> PartRange(..pr, s: i) - } -} - -pub fn part2(input: String) { - let assert Ok(#(workflows_str, _)) = string.split_once(input, "\n\n") - - let workflow = parse_workflow(workflows_str) - let start = Interval(1, 4000) - - PartRange(start, start, start, start) - |> evaluate_workflow_on_range("in", workflow) - |> string.inspect -} - -fn evaluate_workflow_on_range( - pr: PartRange, - name: String, - workflow: Workflow, -) -> Int { - let assert Ok(rules) = dict.get(workflow, name) - evaluate_rules_on_range(pr, rules, workflow) -} - -fn evaluate_rules_on_range( - pr: PartRange, - rules: List(Rule), - workflow: Workflow, -) -> Int { - case rules { - [Just(Accept), ..] -> all_in_range(pr) - [Just(Reject), ..] -> 0 - [Just(SendTo(name)), ..] -> evaluate_workflow_on_range(pr, name, workflow) - [If(rating, comparison, t, action), ..rest] -> { - let mod_i = get_partrange(pr, rating) - case comparison { - Lt -> - split_range( - keep: update_partrange(pr, rating, Interval(mod_i.min, t - 1)), - and_do: action, - pass: update_partrange(pr, rating, Interval(t, mod_i.max)), - and_eval: rest, - with: workflow, - ) - _gt -> - split_range( - keep: update_partrange(pr, rating, Interval(t + 1, mod_i.max)), - and_do: action, - pass: update_partrange(pr, rating, Interval(mod_i.min, t)), - and_eval: rest, - with: workflow, - ) - } - } - [] -> panic - } -} - -fn split_range( - keep keep: PartRange, - and_do action: Action, - pass pass: PartRange, - and_eval rest: List(Rule), - with workflow: Workflow, -) -> Int { - int.add( - evaluate_rules_on_range(keep, [Just(action)], workflow), - evaluate_rules_on_range(pass, rest, workflow), - ) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("19") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day2/.gitignore b/aoc2023/src/day2/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day2/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day2/solve.gleam b/aoc2023/src/day2/solve.gleam deleted file mode 100644 index 38e62d7..0000000 --- a/aoc2023/src/day2/solve.gleam +++ /dev/null @@ -1,67 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/int -import gleam/string -import gleam/list - -pub type Game { - Game(red: Int, blue: Int, green: Int) -} - -fn parse(input: String) -> List(List(Game)) { - use line <- list.map(string.split(input, "\n")) - let assert [_, rounds] = string.split(line, on: ": ") - use match <- list.map(string.split(rounds, on: "; ")) - use acc, draw <- list.fold( - over: string.split(match, on: ", "), - from: Game(0, 0, 0), - ) - let assert Ok(#(n_str, color)) = string.split_once(draw, " ") - let assert Ok(n) = int.parse(n_str) - case color { - "red" -> Game(..acc, red: n) - "blue" -> Game(..acc, blue: n) - "green" -> Game(..acc, green: n) - _ -> panic as "unrecognized color" - } -} - -pub fn part1(input: String) { - use acc, game, i <- list.index_fold(parse(input), 0) - case list.any(game, fn(m) { m.red > 12 || m.green > 13 || m.blue > 14 }) { - False -> acc + i + 1 - True -> acc - } -} - -pub fn part2(input: String) { - { - use game <- list.map(parse(input)) - use acc, match <- list.fold(game, Game(0, 0, 0)) - let Game(red: red, green: green, blue: blue) = match - Game( - red: int.max(red, acc.red), - blue: int.max(blue, acc.blue), - green: int.max(green, acc.green), - ) - } - |> list.fold( - from: 0, - with: fn(acc, g: Game) { acc + g.red * g.blue * g.green }, - ) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("2") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day20/.gitignore b/aoc2023/src/day20/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day20/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day20/solve.gleam b/aoc2023/src/day20/solve.gleam deleted file mode 100644 index 9192dac..0000000 --- a/aoc2023/src/day20/solve.gleam +++ /dev/null @@ -1,251 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/io -import gleam/iterator.{type Iterator, type Step, Next} -import gleam/list -import gleam/queue.{type Queue} -import gleam/set -import gleam/string - -type Node { - Broadcaster(children: List(String)) - Flipflop(children: List(String), state: Power) - Conjunction(children: List(String), state: Dict(String, TonePitch)) - Ground -} - -type Tone { - Tone(from: String, to: String, pitch: TonePitch) -} - -type Power { - On - Off -} - -type TonePitch { - Low - High -} - -type State { - State( - nodes: Dict(String, Node), - low: Int, - high: Int, - cycle: Int, - sentry_nodes: Dict(String, Int), - ) -} - -fn flip_power(p: Power) -> Power { - case p { - On -> Off - Off -> On - } -} - -fn flip_flop_pitch(p: Power) -> TonePitch { - case p { - Off -> High - On -> Low - } -} - -fn combinator_pitch(state) { - case list.unique(dict.values(state)) { - [High] -> Low - _ -> High - } -} - -fn get_children(node) { - case node { - Flipflop(children: cs, ..) -> cs - Conjunction(children: cs, ..) -> cs - Broadcaster(children: cs) -> cs - Ground -> [] - } -} - -fn parse_node(input: String) -> #(String, Node) { - let assert [full_name, children_str] = string.split(input, on: " -> ") - let children = string.split(children_str, on: ", ") - - case full_name { - "%" <> name -> #(name, Flipflop(children: children, state: Off)) - "&" <> name -> #(name, Conjunction(children: children, state: dict.new())) - "broadcaster" -> #("broadcaster", Broadcaster(children: children)) - name -> #(name, Ground) - } -} - -fn to_initial_state(nodes: List(#(String, Node))) -> Dict(String, Node) { - let node_dict = dict.from_list(nodes) - let node_names = dict.keys(node_dict) - - let node_dict = - node_dict - |> dict.values - |> list.map(get_children) - |> list.concat - |> set.from_list - |> set.drop(dict.keys(node_dict)) - |> set.to_list - |> list.fold(node_dict, fn(acc, n) { dict.insert(acc, n, Ground) }) - - use name, node <- dict.map_values(node_dict) - case node { - Conjunction(state: _, children: chs) -> - node_names - |> list.filter(fn(n) { - let assert Ok(node) = dict.get(node_dict, n) - list.contains(get_children(node), any: name) - }) - |> list.map(fn(n) { #(n, Low) }) - |> dict.from_list() - |> fn(dict) { Conjunction(state: dict, children: chs) } - other -> other - } -} - -fn add_to_queue(from, children, pitch, queue) { - use acc, c <- list.fold(children, queue) - queue.push_back(acc, Tone(from: from, to: c, pitch: pitch)) -} - -fn add_tones(state: State, nodes, pitch, n) { - case pitch { - Low -> - State(..state, nodes: nodes, low: state.low + n, cycle: state.cycle + 1) - High -> - State(..state, nodes: nodes, high: state.high + n, cycle: state.cycle + 1) - } -} - -fn press_button_once(initial: State, queue: Queue(Tone)) { - let State(nodes: nodes, ..) = initial - - use <- bool.guard(queue.is_empty(queue), initial) - let assert Ok(#(Tone(from_name, to_name, pitch), rest)) = - queue.pop_front(queue) - - let assert Ok(to_node) = dict.get(nodes, to_name) - case to_node { - Broadcaster(children) -> { - let new_state = - add_tones(initial, nodes, pitch, list.length(children) + 1) - - let new_queue = add_to_queue(to_name, children, pitch, rest) - press_button_once(new_state, new_queue) - } - - Conjunction(state: state, children: children) -> { - let new_state = - state - |> dict.insert(from_name, pitch) - - let updated_nodes = - Conjunction(state: new_state, children: children) - |> dict.insert(nodes, to_name, _) - - let pitch_out = combinator_pitch(new_state) - - let new_state = - add_tones(initial, updated_nodes, pitch_out, list.length(children)) - |> check_for_interesting_node(from_name, pitch_out) - - add_to_queue(to_name, children, pitch_out, rest) - |> press_button_once(new_state, _) - } - - Flipflop(..) if pitch == High -> - press_button_once(State(..initial, cycle: initial.cycle + 1), rest) - - Flipflop(state: state, children: children) -> { - let updated_nodes = - Flipflop(state: flip_power(state), children: children) - |> dict.insert(nodes, to_name, _) - - let pitch_out = flip_flop_pitch(state) - let new_state = - add_tones(initial, updated_nodes, pitch_out, list.length(children)) - - add_to_queue(to_name, children, flip_flop_pitch(state), rest) - |> press_button_once(new_state, _) - } - - Ground(..) -> - press_button_once(State(..initial, cycle: initial.cycle + 1), rest) - } -} - -pub fn part1(input: String) { - let initial_state = - input - |> string.split(on: "\n") - |> list.map(parse_node) - |> to_initial_state() - - iterator.iterate( - from: State(initial_state, 0, 0, 1, dict.new()), - with: press_button_once(_, queue.from_list([ - Tone("button", "broadcaster", Low), - ])), - ) - |> iterator.at(1000) - |> fn(s) { - let assert Ok(State(high: high, low: low, ..)) = s - high * low - } - |> string.inspect -} - -fn check_for_interesting_node(state, name, pitch_out) { - case name, pitch_out { - "rk", High | "cd", High | "zf", High | "qx", High -> - State( - ..state, - sentry_nodes: dict.insert(state.sentry_nodes, name, state.cycle), - ) - _, _ -> state - } -} - -pub fn part2(input: String) { - let initial_state = - input - |> string.split(on: "\n") - |> list.map(parse_node) - |> to_initial_state() - - iterator.iterate( - from: State(initial_state, 0, 0, 1, dict.new()), - with: press_button_once(_, queue.from_list([ - Tone("button", "broadcaster", Low), - ])), - ) - |> iterator.drop_while(fn(s) { dict.size(s.sentry_nodes) < 4 }) - |> iterator.step - |> fn(s: Step(State, Iterator(State))) { - let assert Next(goal, _rest) = s - goal.sentry_nodes - } - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("20") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day21/.gitignore b/aoc2023/src/day21/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day21/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day21/solve.gleam b/aoc2023/src/day21/solve.gleam deleted file mode 100644 index 4d5c246..0000000 --- a/aoc2023/src/day21/solve.gleam +++ /dev/null @@ -1,25 +0,0 @@ -import adglent.{First, Second} -import gleam/io - -pub fn part1(input: String) { - todo as "Implement solution to part 1" -} - -pub fn part2(input: String) { - todo as "Implement solution to part 2" -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("21") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day22/.gitignore b/aoc2023/src/day22/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day22/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day22/solve.gleam b/aoc2023/src/day22/solve.gleam deleted file mode 100644 index 7bf2fb4..0000000 --- a/aoc2023/src/day22/solve.gleam +++ /dev/null @@ -1,199 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/int -import gleam/io -import gleam/list -import gleam/option.{None, Some} -import gleam/regex -import gleam/result -import gleam/set.{type Set} -import gleam/string - -type Point { - Point(x: Int, y: Int, z: Int) -} - -fn down_one(p: Point) -> Point { - Point(..p, z: p.z - 1) -} - -type Block { - Block(index: Int, from: Point, to: Point) -} - -fn compare_blocks(b1: Block, b2: Block) { - int.compare(b1.to.z, b2.to.z) -} - -type Space = - Dict(Point, Block) - -type AllBlocks = - Dict(Block, List(Point)) - -type BlockTree = - Dict(Int, Set(Int)) - -fn parse_block(index: Int, input: String) -> Block { - let assert Ok(re) = regex.from_string("(.*),(.*),(.*)~(.*),(.*),(.*)") - - let assert [scan] = regex.scan(with: re, content: input) - - let assert [x1, y1, z1, x2, y2, z2] = - scan.submatches - |> option.all - |> option.unwrap([]) - |> list.map(int.parse) - |> result.values - Block(index: index, from: Point(x1, y1, z1), to: Point(x2, y2, z2)) -} - -fn cross_section_at_level(b: Block, z: Int) -> List(Point) { - use x <- list.flat_map(list.range(b.from.x, b.to.x)) - use y <- list.map(list.range(b.from.y, b.to.y)) - Point(x, y, z) -} - -fn place_block(space: Space, b: Block, z: Int) -> Space { - let now_occupied = { - use x <- list.flat_map(list.range(b.from.x, b.to.x)) - use y <- list.flat_map(list.range(b.from.y, b.to.y)) - use z <- list.map(list.range(z, z + b.to.z - b.from.z)) - #(Point(x, y, z), b) - } - - dict.merge(space, dict.from_list(now_occupied)) -} - -fn find_lowest_level(space: Space, b: Block) -> Space { - do_find_lowest(space, b, b.from.z) -} - -fn do_find_lowest(space: Space, b: Block, z: Int) -> Space { - let is_intersecting = - list.any(cross_section_at_level(b, z), dict.has_key(space, _)) - - case z, is_intersecting { - 0, _ -> place_block(space, b, 1) - _, True -> place_block(space, b, z + 1) - _, False -> do_find_lowest(space, b, z - 1) - } -} - -fn to_block_positions(space: Space) -> AllBlocks { - use acc, point, index <- dict.fold(space, dict.new()) - use points <- dict.update(acc, index) - case points { - Some(ps) -> [point, ..ps] - None -> [point] - } -} - -fn above_blocks(blocks: AllBlocks) -> BlockTree { - use acc, block, points <- dict.fold(blocks, dict.new()) - use _ <- dict.update(acc, block.index) - { - use above_block, above_points <- dict.filter(blocks) - above_block.index != block.index - && list.any(above_points, fn(p) { list.contains(points, down_one(p)) }) - } - |> dict.keys - |> list.map(fn(b) { b.index }) - |> set.from_list -} - -fn below_blocks(blocktree: BlockTree) -> BlockTree { - use acc, block, _ <- dict.fold(blocktree, dict.new()) - use _ <- dict.update(acc, block) - { - use _, aboves <- dict.filter(blocktree) - set.contains(aboves, block) - } - |> dict.keys - |> set.from_list -} - -fn vulnerable_blocks(below_tree: BlockTree) -> List(Int) { - use block <- list.filter(dict.keys(below_tree)) - use bs <- list.any(dict.values(below_tree)) - !{ set.size(bs) == 0 } && { set.size(set.delete(bs, block)) == 0 } -} - -pub fn part1(input: String) { - let settled_blocks = - input - |> string.split("\n") - |> list.index_map(parse_block) - |> list.sort(compare_blocks) - |> list.fold(dict.new(), find_lowest_level) - - let block_positions = to_block_positions(settled_blocks) - let above_blocks = above_blocks(block_positions) - let below_blocks = below_blocks(above_blocks) - - let vulnerable_blocks = vulnerable_blocks(below_blocks) - - list.length(dict.keys(block_positions)) - list.length(vulnerable_blocks) -} - -fn all_falling_blocks(n: Int, above: BlockTree, below: BlockTree) { - let starting_set = set.insert(set.new(), n) - do_falling_blocks(starting_set, starting_set, above, below) -} - -fn do_falling_blocks( - fallen: Set(Int), - blocks: Set(Int), - above: BlockTree, - below: BlockTree, -) -> Int { - use <- bool.guard(set.size(blocks) == 0, set.size(fallen) - 1) - - let blocks_above = - { - use block <- list.flat_map(set.to_list(blocks)) - let assert Ok(supports) = dict.get(above, block) - use support <- list.filter(set.to_list(supports)) - let assert Ok(supportings) = dict.get(below, support) - use supporting <- list.all(set.to_list(supportings)) - set.contains(fallen, supporting) - } - |> set.from_list() - - set.union(fallen, blocks_above) - |> do_falling_blocks(blocks_above, above, below) -} - -pub fn part2(input: String) { - let settled_blocks = - input - |> string.split("\n") - |> list.index_map(parse_block) - |> list.sort(compare_blocks) - |> list.fold(dict.new(), find_lowest_level) - - let block_positions = to_block_positions(settled_blocks) - let above_blocks = above_blocks(block_positions) - let below_blocks = below_blocks(above_blocks) - - let vulnerable_blocks = vulnerable_blocks(below_blocks) - - use acc, b <- list.fold(vulnerable_blocks, 0) - acc + all_falling_blocks(b, above_blocks, below_blocks) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("22") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day23/.gitignore b/aoc2023/src/day23/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day23/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day23/solve.gleam b/aoc2023/src/day23/solve.gleam deleted file mode 100644 index e1fe638..0000000 --- a/aoc2023/src/day23/solve.gleam +++ /dev/null @@ -1,194 +0,0 @@ -import adglent.{First, Second} -import gleam/int -import gleam/io -import gleam/dict.{type Dict} -import gleam/list -import gleam/option.{type Option, None, Some} -import gleam/string -import gleam/set.{type Set} -import gleam/bool -import utilities/array2d.{type Array2D, type Posn, Posn} - -type Path { - Unknown - Straight - Junction -} - -type Route { - Route(to: Posn, distance: Int) -} - -fn append_to_key(v: Option(List(a)), new: a) -> List(a) { - case v { - None -> [new] - Some(xs) -> [new, ..xs] - } -} - -fn first_parse_path(c: String) -> Result(Path, Nil) { - case c { - "#" -> Error(Nil) - _ -> Ok(Unknown) - } -} - -fn junction_neighbors(p: Posn) -> List(Posn) { - [Posn(..p, r: p.r + 1), Posn(..p, c: p.c + 1)] -} - -fn mark_junctions(trails: Array2D(Path)) -> Array2D(Path) { - use trail, _ <- dict.map_values(trails) - - let valid_neighbors = - trail - |> array2d.ortho_neighbors - |> list.filter(dict.has_key(trails, _)) - - case list.length(valid_neighbors) { - 2 -> Straight - _ -> Junction - } -} - -fn start_walking_to_next_junction( - start: Posn, - next: Posn, - trails: Array2D(Path), -) { - let seen = - set.new() - |> set.insert(start) - |> set.insert(next) - walk_to_next_junction(start, next, 1, seen, trails) -} - -fn walk_to_next_junction( - start: Posn, - current: Posn, - length: Int, - seen: Set(Posn), - trails: Array2D(Path), -) -> #(Posn, Route) { - let assert [next] = - current - |> array2d.ortho_neighbors - |> list.filter(fn(n) { dict.has_key(trails, n) && !set.contains(seen, n) }) - - case dict.get(trails, next) { - Ok(Junction) -> #(start, Route(to: next, distance: length + 1)) - _ -> { - let seen = set.insert(seen, current) - walk_to_next_junction(start, next, { length + 1 }, seen, trails) - } - } -} - -fn find_routes(junctions, trails) { - use junction <- list.flat_map(junctions) - use neighbor <- list.filter_map(junction_neighbors(junction)) - case dict.has_key(trails, neighbor) { - True -> Ok(start_walking_to_next_junction(junction, neighbor, trails)) - False -> Error(Nil) - } -} - -fn generate_routes( - junctions: List(Posn), - trails: Array2D(Path), -) -> Dict(Posn, List(Route)) { - use acc, #(from, route) <- list.fold( - find_routes(junctions, trails), - dict.new(), - ) - dict.update(acc, from, append_to_key(_, route)) -} - -fn generate_2way_routes( - junctions: List(Posn), - trails: Array2D(Path), -) -> Dict(Posn, List(Route)) { - use acc, #(from, route) <- list.fold( - find_routes(junctions, trails), - dict.new(), - ) - acc - |> dict.update(from, append_to_key(_, route)) - |> dict.update(route.to, append_to_key(_, Route(from, route.distance))) -} - -fn dfs(routes, from, to) { - let seen = set.insert(set.new(), from) - do_dfs(routes, from, to, 0, seen) -} - -fn do_dfs( - routes: Dict(Posn, List(Route)), - from: Posn, - to: Posn, - acc: Int, - seen: Set(Posn), -) -> Int { - use <- bool.guard(to == from, acc) - - let assert Ok(all_routes) = dict.get(routes, from) - let neighbors = list.filter(all_routes, fn(r) { !set.contains(seen, r.to) }) - - case neighbors { - [] -> 0 - neighbors -> - list.fold(neighbors, acc, fn(inner_acc, n) { - let score = - do_dfs(routes, n.to, to, acc + n.distance, set.insert(seen, n.to)) - int.max(score, inner_acc) - }) - } -} - -fn solve_using( - input: String, - using: fn(List(Posn), Dict(Posn, Path)) -> Dict(Posn, List(Route)), -) -> Int { - let min_row = 0 - let max_row = list.length(string.split(input, "\n")) - 1 - - let trails = - input - |> array2d.parse_grid_using(first_parse_path) - |> mark_junctions - - let junctions = - trails - |> dict.filter(fn(_, v) { v == Junction }) - |> dict.keys - - let assert Ok(start) = list.find(junctions, fn(j) { j.r == min_row }) - let assert Ok(end) = list.find(junctions, fn(j) { j.r == max_row }) - - let routes = using(junctions, trails) - - dfs(routes, start, end) -} - -pub fn part1(input: String) { - solve_using(input, generate_routes) -} - -pub fn part2(input: String) { - solve_using(input, generate_2way_routes) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("23") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day3/.gitignore b/aoc2023/src/day3/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day3/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day3/solve.gleam b/aoc2023/src/day3/solve.gleam deleted file mode 100644 index ad975aa..0000000 --- a/aoc2023/src/day3/solve.gleam +++ /dev/null @@ -1,180 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/dict.{type Dict} -import gleam/string -import gleam/list -import gleam/int -import gleam/order.{type Order, Eq} - -type Coord { - Coord(x: Int, y: Int) -} - -type SymbolKind { - Gear - SomethingElse -} - -type Symbol { - Number(Int) - Symbol(SymbolKind) - Empty -} - -type Board = - Dict(Coord, Symbol) - -type Cell { - Cell(coord: Coord, symbol: Symbol) -} - -type Part { - Part(coords: List(Coord), part_number: Int) -} - -fn to_symbol(c: String) -> Symbol { - case int.parse(c), c { - Ok(n), _ -> Number(n) - _, "." -> Empty - _, "*" -> Symbol(Gear) - _, _ -> Symbol(SomethingElse) - } -} - -fn to_board(input: String) -> Board { - { - use y, r <- list.index_map(string.split(input, "\n")) - use x, c <- list.index_map(string.to_graphemes(r)) - #(Coord(x, y), to_symbol(c)) - } - |> list.flatten() - |> dict.from_list() -} - -fn cell_compare(a: Cell, b: Cell) -> Order { - case int.compare(a.coord.y, b.coord.y) { - Eq -> int.compare(a.coord.x, b.coord.x) - other -> other - } -} - -fn find_all_part_digits(b: Board) -> List(Cell) { - b - |> dict.filter(fn(_, v) { - case v { - Number(_) -> True - _ -> False - } - }) - |> dict.to_list() - |> list.map(fn(tup) { Cell(tup.0, tup.1) }) - |> list.sort(cell_compare) -} - -fn to_parts(cells: List(Cell)) -> List(Part) { - do_parts(cells, []) -} - -fn do_parts(cells: List(Cell), parts: List(Part)) -> List(Part) { - case cells { - [] -> parts - [Cell(next, Number(n)), ..t] -> { - case parts { - [] -> do_parts(t, [Part([next], n), ..parts]) - [Part([prev, ..] as coords, n0), ..rest_parts] -> - case { next.x - prev.x }, { next.y - prev.y } { - 1, 0 -> - do_parts(t, [Part([next, ..coords], n0 * 10 + n), ..rest_parts]) - _, _ -> do_parts(t, [Part([next], n), ..parts]) - } - _ -> panic - } - } - _ -> panic - } -} - -fn all_neighbors(c: Coord) -> List(Coord) { - use dx <- list.flat_map([-1, 0, 1]) - use dy <- list.filter_map([-1, 0, 1]) - case dx, dy { - 0, 0 -> Error(Nil) - _, _ -> Ok(Coord(c.x + dx, c.y + dy)) - } -} - -fn sum_valid_parts(acc: Int, part: Part, board: Board) -> Int { - let neighbors = - part.coords - |> list.flat_map(all_neighbors) - |> list.unique() - - let sym = [Ok(Symbol(Gear)), Ok(Symbol(SomethingElse))] - case list.any(neighbors, fn(c) { list.contains(sym, dict.get(board, c)) }) { - True -> acc + part.part_number - False -> acc - } -} - -pub fn part1(input: String) -> Int { - let board = to_board(input) - - board - |> find_all_part_digits - |> to_parts - |> list.fold(0, fn(acc, p) { sum_valid_parts(acc, p, board) }) -} - -fn to_part_with_neighbors(part: Part) -> Part { - part.coords - |> list.flat_map(all_neighbors) - |> list.unique - |> Part(part.part_number) -} - -fn find_part_numbers_near_gear(gear: Coord, parts: List(Part)) -> List(Int) { - use part <- list.filter_map(parts) - case list.contains(part.coords, gear) { - True -> Ok(part.part_number) - False -> Error(Nil) - } -} - -fn to_sum_of_gear_ratios(adjacent_parts: List(List(Int))) -> Int { - use acc, ps <- list.fold(adjacent_parts, 0) - case ps { - [p1, p2] -> acc + p1 * p2 - _ -> acc - } -} - -pub fn part2(input: String) -> Int { - let board = to_board(input) - - let parts = - board - |> find_all_part_digits - |> to_parts - |> list.map(to_part_with_neighbors) - - board - |> dict.filter(fn(_, v) { v == Symbol(Gear) }) - |> dict.keys - |> list.map(find_part_numbers_near_gear(_, parts)) - |> to_sum_of_gear_ratios -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("3") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day4/.gitignore b/aoc2023/src/day4/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day4/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day4/solve.gleam b/aoc2023/src/day4/solve.gleam deleted file mode 100644 index 34d6098..0000000 --- a/aoc2023/src/day4/solve.gleam +++ /dev/null @@ -1,98 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/int -import gleam/io -import gleam/list -import gleam/option.{None, Some} -import gleam/result -import gleam/set.{type Set} -import gleam/string - -type Card { - Card(number: Int, winners: Int) -} - -fn numbers_to_set(str: String) -> Set(Int) { - str - |> string.split(" ") - |> list.map(int.parse) - |> result.values() - |> set.from_list() -} - -fn parse_card(card: String) -> Card { - let assert Ok(#("Card" <> n_str, rest)) = string.split_once(card, ": ") - let assert Ok(#(winning_str, has_str)) = string.split_once(rest, " | ") - let assert Ok(n) = int.parse(string.trim(n_str)) - - let winning = numbers_to_set(winning_str) - let has = numbers_to_set(has_str) - let winners = set.size(set.intersection(winning, has)) - - Card(number: n, winners: winners) -} - -fn win_points(n: Int) { - bool.guard(n < 2, n, fn() { 2 * win_points(n - 1) }) -} - -pub fn part1(input: String) { - use acc, c <- list.fold(string.split(input, "\n"), 0) - c - |> parse_card - |> fn(c: Card) { win_points(c.winners) } - |> int.add(acc) -} - -fn win_more_cards(cards: List(String), count: Dict(Int, Int)) { - case cards { - [] -> - count - |> dict.values - |> int.sum - [raw_card, ..rest] -> { - let card = parse_card(raw_card) - case card.winners { - 0 -> win_more_cards(rest, count) - n -> win_more_cards(rest, update_counts(n, card, count)) - } - } - } -} - -fn update_counts(n: Int, card: Card, count: Dict(Int, Int)) -> Dict(Int, Int) { - let assert Ok(bonus) = dict.get(count, card.number) - use acc, n <- list.fold(list.range(card.number + 1, card.number + n), count) - use c <- dict.update(acc, n) - case c { - Some(i) -> i + bonus - None -> panic as "won a card that doesn't exist in the card pile" - } -} - -pub fn part2(input: String) { - let cards = string.split(input, "\n") - - let count = - list.range(1, list.length(cards)) - |> list.map(fn(n) { #(n, 1) }) - |> dict.from_list() - - win_more_cards(cards, count) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("4") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day5/.gitignore b/aoc2023/src/day5/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day5/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day5/solve.gleam b/aoc2023/src/day5/solve.gleam deleted file mode 100644 index 58e2ae0..0000000 --- a/aoc2023/src/day5/solve.gleam +++ /dev/null @@ -1,167 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/string -import gleam/result -import gleam/list.{Continue, Stop} -import gleam/int -import gleam/function - -// Types ------------------------------------------------------------------------------------------- - -pub type Almanac { - Almanac(seeds: List(Int), mappers: List(Mapper)) -} - -pub type MappingRange { - MRange(start: Int, end: Int, offset: Int) -} - -pub type SeedRange { - SRange(start: Int, end: Int) -} - -type Mapper = - List(MappingRange) - -// Parsing ----------------------------------------------------------------------------------------- - -fn parse_input(input: String) { - let assert ["seeds: " <> raw_seeds, ..raw_mappers] = - string.split(input, on: "\n\n") - - let seeds = string_to_int_list(raw_seeds) - let mappers = - list.map( - raw_mappers, - function.compose(string.split(_, on: "\n"), parse_mapper), - ) - Almanac(seeds, mappers) -} - -fn string_to_int_list(str: String) { - str - |> string.split(on: " ") - |> list.map(int.parse) - |> result.values -} - -fn parse_mapper(strs: List(String)) -> Mapper { - let assert [_, ..raw_ranges] = strs - list.map(raw_ranges, parse_mrange) - |> list.sort(fn(a, b) { int.compare(a.start, b.start) }) -} - -fn parse_mrange(str: String) -> MappingRange { - let assert [destination, source, range_width] = string_to_int_list(str) - MRange(source, source + range_width - 1, destination - source) -} - -// Part 1 ------------------------------------------------------------------------------------------ - -pub fn part1(input: String) { - let Almanac(seeds, mappers) = parse_input(input) - - list.map(seeds, list.fold(over: mappers, from: _, with: correspond)) - |> list.reduce(int.min) - |> result.unwrap(0) - |> string.inspect -} - -fn correspond(n: Int, mapper: Mapper) { - use acc, mrange <- list.fold_until(over: mapper, from: n) - case mrange.start <= acc && acc <= mrange.end { - True -> Stop(acc + mrange.offset) - False -> Continue(acc) - } -} - -// Part 2 ------------------------------------------------------------------------------------------ - -pub fn part2(input: String) { - let Almanac(seeds, mappers) = parse_input(input) - - let assert [SRange(answer, _), ..] = - seeds - |> list.sized_chunk(into: 2) - |> list.map(fn(chunk) { - let assert [start, length] = chunk - [SRange(start, start + length - 1)] - |> remap_all_seed_ranges(mappers) - }) - |> list.flatten() - |> list.sort(fn(a, b) { int.compare(a.start, b.start) }) - - string.inspect(answer) -} - -fn remap_all_seed_ranges(srs: List(SeedRange), mappers: List(Mapper)) { - case mappers { - [] -> srs - [mapper, ..rest] -> - list.flat_map(srs, remap_range(_, mapper)) - |> remap_all_seed_ranges(rest) - } -} - -fn remap_range(r: SeedRange, mapper: Mapper) -> List(SeedRange) { - do_remap_range(r, mapper, []) -} - -fn transform_range(r: SeedRange, mapper: MappingRange) -> SeedRange { - SRange(r.start + mapper.offset, r.end + mapper.offset) -} - -fn do_remap_range(r: SeedRange, mapper: Mapper, acc: List(SeedRange)) { - case mapper { - // no more mappings -> no mapping covers this range - [] -> [r, ..acc] - // range is to the left of current mapping -> no mapping covers this range - [m, ..] if r.end < m.start -> [r, ..acc] - // range is to the right of current mapping -> move to next mapping - [m, ..ms] if r.start > m.end -> do_remap_range(r, ms, acc) - // range is fully inside mapping -> range is transformed - [m, ..] if r.start >= m.start && r.end <= m.end -> [ - transform_range(r, m), - ..acc - ] - // range overlaps start but not end -> left side not transformed, right side transformed - [m, ..] if r.start < m.start && r.end <= m.end -> [ - SRange(r.start, m.start - 1), - transform_range(SRange(m.start, r.end), m), - ..acc - ] - // range overlaps end but not start -> left side transformed, right side moves to next mapping - [m, ..ms] if r.start >= m.start && r.end > m.end -> - do_remap_range( - SRange(m.end + 1, r.end), - ms, - [transform_range(SRange(r.start, m.end), m), ..acc], - ) - // mapping is fully inside range -> left not transformed, middle transformed, right to next - [m, ..ms] -> - do_remap_range( - SRange(m.end + 1, r.end), - ms, - [ - SRange(r.start, m.start - 1), - transform_range(SRange(m.start, m.end), m), - ..acc - ], - ) - } -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("5") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day6/.gitignore b/aoc2023/src/day6/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day6/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day6/solve.gleam b/aoc2023/src/day6/solve.gleam deleted file mode 100644 index 88044c4..0000000 --- a/aoc2023/src/day6/solve.gleam +++ /dev/null @@ -1,85 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/string -import gleam/int -import gleam/list -import gleam/result - -type Race { - Race(time: Int, distance: Int) -} - -fn parse_with_bad_kerning(input: String) { - input - |> string.split("\n") - |> list.map(fn(str) { - str - |> string.split(" ") - |> list.map(int.parse) - |> result.values - }) - |> list.transpose - |> list.map(fn(ns) { - let assert [t, d] = ns - Race(t, d) - }) -} - -fn find_bound(race: Race, button_time: Int, step: Int) { - let travel_time = race.time - button_time - case button_time * travel_time > race.distance { - True -> button_time - False -> find_bound(race, button_time + step, step) - } -} - -fn lower_bound(race: Race) { - find_bound(race, 1, 1) -} - -fn upper_bound(race: Race) { - find_bound(race, race.time, -1) -} - -pub fn part1(input: String) { - { - use acc, race <- list.fold(parse_with_bad_kerning(input), 1) - acc * { upper_bound(race) - lower_bound(race) + 1 } - } - |> string.inspect -} - -fn parse_properly(input: String) { - input - |> string.replace(" ", "") - |> string.split("\n") - |> list.flat_map(string.split(_, ":")) - |> list.map(int.parse) - |> result.values -} - -pub fn part2(input: String) { - let assert [time, distance] = - input - |> parse_properly - - let race = Race(time, distance) - - upper_bound(race) - lower_bound(race) + 1 - |> string.inspect -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("6") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day7/.gitignore b/aoc2023/src/day7/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day7/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day7/solve.gleam b/aoc2023/src/day7/solve.gleam deleted file mode 100644 index 4454883..0000000 --- a/aoc2023/src/day7/solve.gleam +++ /dev/null @@ -1,140 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/function -import gleam/int -import gleam/io -import gleam/list -import gleam/order.{type Order, Eq, Lt} -import gleam/string - -// Types ------------------------------------------------------------------------------------------- - -type Hand { - Hand(cards: List(Int), wager: Int) -} - -// Common functions -------------------------------------------------------------------------------- - -fn parse_hand(str: String) -> Hand { - let assert [cards, wager] = string.split(str, " ") - let cards = - string.to_graphemes(cards) - |> list.map(card_rank) - let assert Ok(wager) = int.parse(wager) - - Hand(cards, wager) -} - -fn classify_hand(hand: Hand) -> Int { - case list.length(list.unique(hand.cards)), card_counts(hand) { - 1, _ -> 8 - 2, [1, 4] -> 7 - 2, [2, 3] -> 6 - 3, [1, 1, 3] -> 5 - 3, [1, 2, 2] -> 4 - 4, _ -> 3 - 5, _ -> 2 - _, _ -> 1 - } -} - -fn card_counts(hand: Hand) { - hand.cards - |> list.sort(int.compare) - |> list.chunk(function.identity) - |> list.map(list.length) - |> list.sort(int.compare) -} - -fn card_rank(card: String) -> Int { - case int.parse(card), card { - Ok(n), _ -> n - _, "A" -> 14 - _, "K" -> 13 - _, "Q" -> 12 - _, "J" -> 11 - _, "T" -> 10 - _, _ -> 1 - } -} - -fn compare_hands(hand1: Hand, hand2: Hand, using: fn(Hand) -> Int) -> Order { - case int.compare(using(hand1), using(hand2)) { - Eq -> compare_top_card(hand1.cards, hand2.cards) - other -> other - } -} - -fn compare_top_card(cards1: List(Int), cards2: List(Int)) -> Order { - use <- bool.guard(cards1 == [] || cards2 == [], Eq) - let assert [c1, ..rest1] = cards1 - let assert [c2, ..rest2] = cards2 - case int.compare(c1, c2) { - Eq -> compare_top_card(rest1, rest2) - other -> other - } -} - -fn part(input: String, comparator: fn(Hand, Hand) -> Order) { - input - |> string.split("\n") - |> list.map(parse_hand) - |> list.sort(comparator) - |> list.index_map(fn(i, h) { { i + 1 } * h.wager }) - |> int.sum - |> string.inspect -} - -// Part 1 ------------------------------------------------------------------------------------------ - -pub fn part1(input: String) { - part(input, compare_without_wilds) -} - -fn compare_without_wilds(hand1: Hand, hand2: Hand) { - compare_hands(hand1, hand2, classify_hand) -} - -// Part 2 ------------------------------------------------------------------------------------------ - -pub fn part2(input: String) { - part(string.replace(input, "J", "*"), compare_hands_considering_jokers) -} - -fn find_best_joker_substitution(hand: Hand) { - use acc, card <- list.fold(list.range(2, 14), Hand([], 0)) - let subbed_cards = { - use c <- list.map(hand.cards) - case c { - 1 -> card - other -> other - } - } - let subbed_hand = Hand(..hand, cards: subbed_cards) - case compare_hands(acc, subbed_hand, classify_hand) { - Lt -> subbed_hand - _ -> acc - } -} - -fn compare_hands_considering_jokers(hand1: Hand, hand2: Hand) -> Order { - use hand <- compare_hands(hand1, hand2) - hand - |> find_best_joker_substitution - |> classify_hand -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("7") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day8/.gitignore b/aoc2023/src/day8/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day8/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day8/solve.gleam b/aoc2023/src/day8/solve.gleam deleted file mode 100644 index 6b36e2d..0000000 --- a/aoc2023/src/day8/solve.gleam +++ /dev/null @@ -1,91 +0,0 @@ -import adglent.{First, Second} -import gleam/bool -import gleam/dict.{type Dict} -import gleam/io -import gleam/iterator.{type Iterator, Next} -import gleam/list -import gleam/option.{Some} -import gleam/string -import gleam/regex.{type Match, Match} -import gleam_community/maths/arithmetics - -type Paths { - Paths(to_left: String, to_right: String) -} - -type Maze = - Dict(String, Paths) - -fn parse(input: String) -> #(Iterator(String), Dict(String, Paths)) { - let assert [directions_str, maze_str] = string.split(input, "\n\n") - - let directions = - directions_str - |> string.to_graphemes() - |> iterator.from_list - |> iterator.cycle - - let assert Ok(re) = regex.from_string("(...) = \\((...), (...)\\)") - let maze = - maze_str - |> string.split("\n") - |> list.map(fn(str) { - let assert [Match(submatches: [Some(name), Some(left), Some(right)], ..)] = - regex.scan(re, str) - #(name, Paths(left, right)) - }) - |> dict.from_list - - #(directions, maze) -} - -fn to_next_step( - current: String, - stop_at: String, - count: Int, - directions: Iterator(String), - maze: Maze, -) -> Int { - use <- bool.guard(string.ends_with(current, stop_at), count) - let assert Next(next_direction, rest_directions) = iterator.step(directions) - let assert Ok(paths) = dict.get(maze, current) - case next_direction { - "L" -> paths.to_left - "R" -> paths.to_right - _ -> panic as "bad direction" - } - |> to_next_step(stop_at, count + 1, rest_directions, maze) -} - -pub fn part1(input: String) -> Int { - let #(directions, maze) = parse(input) - - to_next_step("AAA", "ZZZ", 0, directions, maze) -} - -pub fn part2(input: String) -> Int { - let #(directions, maze) = parse(input) - - use acc, name <- list.fold(dict.keys(maze), 1) - case string.ends_with(name, "A") { - False -> acc - True -> - to_next_step(name, "Z", 0, directions, maze) - |> arithmetics.lcm(acc) - } -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("8") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/day9/.gitignore b/aoc2023/src/day9/.gitignore deleted file mode 100644 index ae40cea..0000000 --- a/aoc2023/src/day9/.gitignore +++ /dev/null @@ -1 +0,0 @@ -input.txt \ No newline at end of file diff --git a/aoc2023/src/day9/solve.gleam b/aoc2023/src/day9/solve.gleam deleted file mode 100644 index a2cc7ae..0000000 --- a/aoc2023/src/day9/solve.gleam +++ /dev/null @@ -1,70 +0,0 @@ -import adglent.{First, Second} -import gleam/io -import gleam/list -import gleam/string -import gleam/int - -fn parse(input: String, backwards backwards: Bool) -> List(List(Int)) { - use line <- list.map(string.split(input, "\n")) - use n_str <- list.map(maybe_backwards(string.split(line, " "), backwards)) - let assert Ok(n) = int.parse(n_str) - n -} - -fn maybe_backwards(xs: List(a), backwards: Bool) -> List(a) { - case backwards { - False -> list.reverse(xs) - True -> xs - } -} - -fn is_constant(ns: List(Int)) -> Bool { - case list.unique(ns) { - [_] -> True - _ -> False - } -} - -fn take_derivative(ns: List(Int)) -> List(Int) { - ns - |> list.window_by_2 - |> list.map(fn(tup) { tup.0 - tup.1 }) -} - -fn extrapolate(ns: List(Int)) { - case is_constant(ns), ns { - True, [n, ..] -> n - False, [n, ..] -> n + extrapolate(take_derivative(ns)) - _, _ -> panic as "list empty when it shouldn't be" - } -} - -fn part(input: String, backwards backwards: Bool) { - input - |> parse(backwards: backwards) - |> list.fold(0, fn(acc, ns) { extrapolate(ns) + acc }) - |> string.inspect -} - -pub fn part1(input: String) { - part(input, backwards: False) -} - -pub fn part2(input: String) { - part(input, backwards: True) -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input("9") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} diff --git a/aoc2023/src/utilities/array2d.gleam b/aoc2023/src/utilities/array2d.gleam deleted file mode 100644 index 8538129..0000000 --- a/aoc2023/src/utilities/array2d.gleam +++ /dev/null @@ -1,74 +0,0 @@ -import gleam/list -import gleam/dict.{type Dict} -import gleam/string -import gleam/int -import gleam/result - -pub type Posn { - Posn(r: Int, c: Int) -} - -pub type Array2D(a) = - Dict(Posn, a) - -pub fn add_posns(p1: Posn, p2: Posn) -> Posn { - case p1, p2 { - Posn(r1, c1), Posn(r2, c2) -> Posn(r1 + r2, c1 + c2) - } -} - -pub fn ortho_neighbors(p: Posn) -> List(Posn) { - let Posn(r, c) = p - [Posn(r + 1, c), Posn(r - 1, c), Posn(r, c + 1), Posn(r, c - 1)] -} - -pub fn to_2d_array(xss: List(List(a))) -> Array2D(a) { - to_2d_array_using(xss, fn(x) { Ok(x) }) -} - -pub fn to_2d_array_using( - xss: List(List(a)), - f: fn(a) -> Result(b, Nil), -) -> Array2D(b) { - { - use r, row <- list.index_map(xss) - use c, cell <- list.index_map(row) - case f(cell) { - Ok(contents) -> Ok(#(Posn(r, c), contents)) - Error(Nil) -> Error(Nil) - } - } - |> list.flatten - |> result.values - |> dict.from_list -} - -pub fn to_2d_intarray(xss: List(List(String))) -> Array2D(Int) { - { - use r, row <- list.index_map(xss) - use c, cell <- list.index_map(row) - let assert Ok(n) = int.parse(cell) - #(Posn(r, c), n) - } - |> list.flatten - |> dict.from_list -} - -pub fn to_list_of_lists(str: String) -> List(List(String)) { - str - |> string.split("\n") - |> list.map(string.to_graphemes) -} - -pub fn parse_grid(str: String) -> Array2D(String) { - parse_grid_using(str, fn(x) { Ok(x) }) -} - -pub fn parse_grid_using( - str: String, - f: fn(String) -> Result(a, Nil), -) -> Array2D(a) { - str - |> to_list_of_lists - |> to_2d_array_using(f) -} diff --git a/aoc2023/src/utilities/memo.gleam b/aoc2023/src/utilities/memo.gleam deleted file mode 100644 index b06d8fd..0000000 --- a/aoc2023/src/utilities/memo.gleam +++ /dev/null @@ -1,57 +0,0 @@ -import gleam/dict.{type Dict} -import gleam/otp/actor.{type Next, Continue, Stop} -import gleam/erlang/process.{type Subject, Normal} -import gleam/option.{None} - -const timeout = 1000 - -type Message(k, v) { - Shutdown - Get(key: k, client: Subject(Result(v, Nil))) - Set(key: k, value: v) -} - -type Server(k, v) = - Subject(Message(k, v)) - -pub opaque type Cache(k, v) { - Cache(server: Server(k, v)) -} - -fn handle_message( - message: Message(k, v), - dict: Dict(k, v), -) -> Next(Message(k, v), Dict(k, v)) { - case message { - Shutdown -> Stop(Normal) - Get(key, client) -> { - process.send(client, dict.get(dict, key)) - Continue(dict, None) - } - Set(key, value) -> Continue(dict.insert(dict, key, value), None) - } -} - -pub fn create(apply fun: fn(Cache(k, v)) -> t) -> t { - let assert Ok(server) = actor.start(dict.new(), handle_message) - let result = fun(Cache(server)) - process.send(server, Shutdown) - result -} - -pub fn set(in cache: Cache(k, v), for key: k, insert value: v) -> Nil { - process.send(cache.server, Set(key, value)) -} - -pub fn get(from cache: Cache(k, v), fetch key: k) -> Result(v, Nil) { - process.call(cache.server, fn(c) { Get(key, c) }, timeout) -} - -pub fn memoize(with cache: Cache(k, v), this key: k, apply fun: fn() -> v) -> v { - let result = case get(from: cache, fetch: key) { - Ok(value) -> value - Error(Nil) -> fun() - } - set(in: cache, for: key, insert: result) - result -} diff --git a/aoc2023/src/utilities/prioqueue.gleam b/aoc2023/src/utilities/prioqueue.gleam deleted file mode 100644 index 640748b..0000000 --- a/aoc2023/src/utilities/prioqueue.gleam +++ /dev/null @@ -1,62 +0,0 @@ -//adapted from https://github.com/byronanderson/adventofcode2021/blob/main/gleam_advent/src/priority_queue.gleam - -import gleam/dict.{type Dict} - -type Ref - -@external(erlang, "erlang", "make_ref") -fn make_ref() -> Ref - -type PQueue(a) - -pub opaque type PriorityQueue(a) { - PriorityQueue(queue: PQueue(#(a, Ref)), refs: Dict(a, Ref)) -} - -type OutResult(a) { - Empty - Value(a, Int) -} - -@external(erlang, "pqueue2", "new") -fn new_() -> PQueue(a) - -@external(erlang, "pqueue2", "in") -fn insert_(item: a, prio: Int, queue: PQueue(a)) -> PQueue(a) - -@external(erlang, "pqueue2", "pout") -fn pop_(queue: PQueue(a)) -> #(OutResult(a), PQueue(a)) - -pub fn new() -> PriorityQueue(a) { - PriorityQueue(queue: new_(), refs: dict.new()) -} - -pub fn insert( - queue: PriorityQueue(a), - value: a, - priority: Int, -) -> PriorityQueue(a) { - let ref = make_ref() - - let refs = - queue.refs - |> dict.insert(value, ref) - - PriorityQueue(refs: refs, queue: insert_(#(value, ref), priority, queue.queue), - ) -} - -pub fn pop(queue: PriorityQueue(a)) -> Result(#(a, PriorityQueue(a)), Nil) { - case pop_(queue.queue) { - #(Value(#(value, ref), _priority), pqueue) -> { - let assert Ok(recently_enqueued_ref) = dict.get(queue.refs, value) - case recently_enqueued_ref == ref { - True -> Ok(#(value, PriorityQueue(refs: queue.refs, queue: pqueue))) - False -> pop(PriorityQueue(refs: queue.refs, queue: pqueue)) - } - } - #(Empty, _pqueue) -> { - Error(Nil) - } - } -} diff --git a/aoc2023/test/aoc2023_test.gleam b/aoc2023/test/aoc2023_test.gleam deleted file mode 100644 index 2b696a4..0000000 --- a/aoc2023/test/aoc2023_test.gleam +++ /dev/null @@ -1,5 +0,0 @@ -import showtime - -pub fn main() { - showtime.main() -} diff --git a/aoc2023/test/day1/day1_test.gleam b/aoc2023/test/day1/day1_test.gleam deleted file mode 100644 index 374653c..0000000 --- a/aoc2023/test/day1/day1_test.gleam +++ /dev/null @@ -1,57 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day1/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "1abc2 -pqr3stu8vwx -a1b2c3d4e5f -treb7uchet", - "142", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen", - "281", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day10/day10_test.gleam b/aoc2023/test/day10/day10_test.gleam deleted file mode 100644 index be9d82e..0000000 --- a/aoc2023/test/day10/day10_test.gleam +++ /dev/null @@ -1,60 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day10/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "7-F7- -.FJ|7 -SJLL7 -|F--J -LJ.LJ", - "8", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "........... -.S-------7. -.|F-----7|. -.||OOOOO||. -.||OOOOO||. -.|L-7OF-J|. -.|II|O|II|. -.L--JOL--J. -.....O.....", - "4", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day11/day11_test.gleam b/aoc2023/test/day11/day11_test.gleam deleted file mode 100644 index 8bb8c06..0000000 --- a/aoc2023/test/day11/day11_test.gleam +++ /dev/null @@ -1,66 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day11/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#.....", - "374", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#.....", - "8410", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day12/day12_test.gleam b/aoc2023/test/day12/day12_test.gleam deleted file mode 100644 index 3daf0e9..0000000 --- a/aoc2023/test/day12/day12_test.gleam +++ /dev/null @@ -1,48 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day12/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "???.### 1,1,3 -.??..??...?##. 1,1,3 -?#?#?#?#?#?#?#? 1,3,1,6 -????.#...#... 4,1,1 -????.######..#####. 1,6,5 -?###???????? 3,2,1", - "21", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day13/day13_test.gleam b/aoc2023/test/day13/day13_test.gleam deleted file mode 100644 index 7c65bed..0000000 --- a/aoc2023/test/day13/day13_test.gleam +++ /dev/null @@ -1,76 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day13/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#", - "405", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#", - "400", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day14/day14_test.gleam b/aoc2023/test/day14/day14_test.gleam deleted file mode 100644 index 8efa74e..0000000 --- a/aoc2023/test/day14/day14_test.gleam +++ /dev/null @@ -1,66 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day14/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#....", - "136", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#....", - "64", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day15/day15_test.gleam b/aoc2023/test/day15/day15_test.gleam deleted file mode 100644 index 0ecaecc..0000000 --- a/aoc2023/test/day15/day15_test.gleam +++ /dev/null @@ -1,42 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day15/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example("rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7", "1320"), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example("rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7", "145"), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day16/day16_test.gleam b/aoc2023/test/day16/day16_test.gleam deleted file mode 100644 index 036504e..0000000 --- a/aoc2023/test/day16/day16_test.gleam +++ /dev/null @@ -1,66 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day16/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - ".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|....", - 46, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - ".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|....", - 51, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day17/day17_test.gleam b/aoc2023/test/day17/day17_test.gleam deleted file mode 100644 index c1ebd22..0000000 --- a/aoc2023/test/day17/day17_test.gleam +++ /dev/null @@ -1,55 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day17/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "2413432311323 -3215453535623 -3255245654254 -3446585845452 -4546657867536 -1438598798454 -4457876987766 -3637877979653 -4654967986887 -4564679986453 -1224686865563 -2546548887735 -4322674655533", - "102", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day18/day18_test.gleam b/aoc2023/test/day18/day18_test.gleam deleted file mode 100644 index 7b510c8..0000000 --- a/aoc2023/test/day18/day18_test.gleam +++ /dev/null @@ -1,74 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day18/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)", - "62", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)", - "952408144115", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day19/day19_test.gleam b/aoc2023/test/day19/day19_test.gleam deleted file mode 100644 index c911de5..0000000 --- a/aoc2023/test/day19/day19_test.gleam +++ /dev/null @@ -1,80 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day19/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}", - "19114", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}", - "167409079868000", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day2/day2_test.gleam b/aoc2023/test/day2/day2_test.gleam deleted file mode 100644 index 28a65da..0000000 --- a/aoc2023/test/day2/day2_test.gleam +++ /dev/null @@ -1,57 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day2/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green", - 8, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green", - 2286, - ), - Example("Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green", 48), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day20/day20_test.gleam b/aoc2023/test/day20/day20_test.gleam deleted file mode 100644 index 92e8afb..0000000 --- a/aoc2023/test/day20/day20_test.gleam +++ /dev/null @@ -1,56 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day20/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "broadcaster -> a, b, c -%a -> b -%b -> c -%c -> inv -&inv -> a", - "32000000", - ), - Example( - "broadcaster -> a -%a -> inv, con -&inv -> b -%b -> con -&con -> output -output -> ", - "11687500", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day21/day21_test.gleam b/aoc2023/test/day21/day21_test.gleam deleted file mode 100644 index 5f46808..0000000 --- a/aoc2023/test/day21/day21_test.gleam +++ /dev/null @@ -1,38 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day21/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day22/day22_test.gleam b/aoc2023/test/day22/day22_test.gleam deleted file mode 100644 index 3f8c0ca..0000000 --- a/aoc2023/test/day22/day22_test.gleam +++ /dev/null @@ -1,60 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day22/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "1,0,1~1,2,1 -0,0,2~2,0,2 -0,2,3~2,2,3 -0,0,4~0,2,4 -2,0,5~2,2,5 -0,1,6~2,1,6 -1,1,8~1,1,9", - 5, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "1,0,1~1,2,1 -0,0,2~2,0,2 -0,2,3~2,2,3 -0,0,4~0,2,4 -2,0,5~2,2,5 -0,1,6~2,1,6 -1,1,8~1,1,9", - 7, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day23/day23_test.gleam b/aoc2023/test/day23/day23_test.gleam deleted file mode 100644 index 206571c..0000000 --- a/aoc2023/test/day23/day23_test.gleam +++ /dev/null @@ -1,92 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day23/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "#.##################### -#.......#########...### -#######.#########.#.### -###.....#.>.>.###.#.### -###v#####.#v#.###.#.### -###.>...#.#.#.....#...# -###v###.#.#.#########.# -###...#.#.#.......#...# -#####.#.#.#######.#.### -#.....#.#.#.......#...# -#.#####.#.#.#########v# -#.#...#...#...###...>.# -#.#.#v#######v###.###v# -#...#.>.#...>.>.#.###.# -#####v#.#.###v#.#.###.# -#.....#...#...#.#.#...# -#.#########.###.#.#.### -#...###...#...#...#.### -###.###.#.###v#####v### -#...#...#.#.>.>.#.>.### -#.###.###.#.###.#.#v### -#.....###...###...#...# -#####################.#", - 94, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "#.##################### -#.......#########...### -#######.#########.#.### -###.....#.>.>.###.#.### -###v#####.#v#.###.#.### -###.>...#.#.#.....#...# -###v###.#.#.#########.# -###...#.#.#.......#...# -#####.#.#.#######.#.### -#.....#.#.#.......#...# -#.#####.#.#.#########v# -#.#...#...#...###...>.# -#.#.#v#######v###.###v# -#...#.>.#...>.>.#.###.# -#####v#.#.###v#.#.###.# -#.....#...#...#.#.#...# -#.#########.###.#.#.### -#...###...#...#...#.### -###.###.#.###v#####v### -#...#...#.#.>.>.#.>.### -#.###.###.#.###.#.#v### -#.....###...###...#...# -#####################.#", - 154, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day3/day3_test.gleam b/aoc2023/test/day3/day3_test.gleam deleted file mode 100644 index 30e17a9..0000000 --- a/aoc2023/test/day3/day3_test.gleam +++ /dev/null @@ -1,66 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day3/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598..", - 4361, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598..", - 467_835, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day4/day4_test.gleam b/aoc2023/test/day4/day4_test.gleam deleted file mode 100644 index 324fe36..0000000 --- a/aoc2023/test/day4/day4_test.gleam +++ /dev/null @@ -1,58 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day4/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11", - 13, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11", - 30, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day5/day5_test.gleam b/aoc2023/test/day5/day5_test.gleam deleted file mode 100644 index 86a8692..0000000 --- a/aoc2023/test/day5/day5_test.gleam +++ /dev/null @@ -1,112 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day5/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4", - "35", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4", - "46", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day6/day6_test.gleam b/aoc2023/test/day6/day6_test.gleam deleted file mode 100644 index c551993..0000000 --- a/aoc2023/test/day6/day6_test.gleam +++ /dev/null @@ -1,50 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day6/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "Time: 7 15 30 -Distance: 9 40 200", - "288", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "Time: 7 15 30 -Distance: 9 40 200", - "71503", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day7/day7_test.gleam b/aoc2023/test/day7/day7_test.gleam deleted file mode 100644 index f7f8454..0000000 --- a/aoc2023/test/day7/day7_test.gleam +++ /dev/null @@ -1,56 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day7/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483", - "6440", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483", - "5905", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day8/day8_test.gleam b/aoc2023/test/day8/day8_test.gleam deleted file mode 100644 index 2cd499a..0000000 --- a/aoc2023/test/day8/day8_test.gleam +++ /dev/null @@ -1,61 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day8/solve - -type Problem1AnswerType = - Int - -type Problem2AnswerType = - Int - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "LLR - -AAA = (BBB, BBB) -BBB = (AAA, ZZZ) -ZZZ = (ZZZ, ZZZ)", - 6, - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "LR - -11A = (11B, XXX) -11B = (XXX, 11Z) -11Z = (11B, XXX) -22A = (22B, XXX) -22B = (22C, 22C) -22C = (22Z, 22Z) -22Z = (22B, 22B) -XXX = (XXX, XXX)", - 6, - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} diff --git a/aoc2023/test/day9/day9_test.gleam b/aoc2023/test/day9/day9_test.gleam deleted file mode 100644 index 84fd3ba..0000000 --- a/aoc2023/test/day9/day9_test.gleam +++ /dev/null @@ -1,52 +0,0 @@ -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day9/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example("some input", "")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [ - Example( - "0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45", - "114", - ), -] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example("some input", "")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [ - Example( - "0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45", - "2", - ), -] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} -- cgit v1.2.3 From 547fe03cf43105f46160e2dd9afff21637eaaf47 Mon Sep 17 00:00:00 2001 From: Hunky Jimpjorps Date: Fri, 2 Feb 2024 17:24:30 -0500 Subject: 2018, day 1 complete --- aoc2018/day-01/day-01.rkt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 aoc2018/day-01/day-01.rkt diff --git a/aoc2018/day-01/day-01.rkt b/aoc2018/day-01/day-01.rkt new file mode 100644 index 0000000..b18f7c9 --- /dev/null +++ b/aoc2018/day-01/day-01.rkt @@ -0,0 +1,16 @@ +#lang racket + +(require advent-of-code + threading) + +(define deltas + (~>> (open-aoc-input (find-session) 2018 1 #:cache #true) port->lines (map string->number))) + +;; part 1 +(for/sum ([delta deltas]) delta) + +;; part 2 +(for/fold ([seen (set)] [current-frequency 0] #:result current-frequency) ([delta (in-cycle deltas)]) + (define new-frequency (+ current-frequency delta)) + #:final (set-member? seen new-frequency) + (values (set-add seen new-frequency) new-frequency)) -- cgit v1.2.3 From 96a3c5c179d8d3fff24eb2953e45f8dd15e2714c Mon Sep 17 00:00:00 2001 From: HJ Date: Sat, 3 Feb 2024 15:09:54 -0500 Subject: cleanup --- aoc2023/aoc.toml | 4 + .../erlang/adglent/_gleam_artefacts/adglent.cache | Bin 0 -> 2399 bytes .../adglent/_gleam_artefacts/adglent.cache_meta | Bin 0 -> 85 bytes .../erlang/adglent/_gleam_artefacts/adglent.erl | 55 + .../adglent/_gleam_artefacts/adglent@day.cache | Bin 0 -> 583 bytes .../_gleam_artefacts/adglent@day.cache_meta | Bin 0 -> 293 bytes .../adglent/_gleam_artefacts/adglent@day.erl | 278 + .../adglent/_gleam_artefacts/adglent@init.cache | Bin 0 -> 581 bytes .../_gleam_artefacts/adglent@init.cache_meta | Bin 0 -> 231 bytes .../adglent/_gleam_artefacts/adglent@init.erl | 142 + .../adglent/_gleam_artefacts/adglent_ffi.erl | 12 + .../adglent/_gleam_artefacts/gleam@@compile.erl | 157 + .../adglent/_gleam_artefacts/priv@aoc_client.cache | Bin 0 -> 468 bytes .../_gleam_artefacts/priv@aoc_client.cache_meta | Bin 0 -> 131 bytes .../adglent/_gleam_artefacts/priv@aoc_client.erl | 61 + .../adglent/_gleam_artefacts/priv@errors.cache | Bin 0 -> 1514 bytes .../_gleam_artefacts/priv@errors.cache_meta | Bin 0 -> 85 bytes .../adglent/_gleam_artefacts/priv@errors.erl | 74 + .../adglent/_gleam_artefacts/priv@prompt.cache | Bin 0 -> 1512 bytes .../_gleam_artefacts/priv@prompt.cache_meta | Bin 0 -> 69 bytes .../adglent/_gleam_artefacts/priv@prompt.erl | 53 + .../adglent/_gleam_artefacts/priv@template.cache | Bin 0 -> 438 bytes .../_gleam_artefacts/priv@template.cache_meta | Bin 0 -> 67 bytes .../adglent/_gleam_artefacts/priv@template.erl | 25 + .../_gleam_artefacts/priv@templates@solution.cache | Bin 0 -> 818 bytes .../priv@templates@solution.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/priv@templates@solution.erl | 1 + .../priv@templates@test_main.cache | Bin 0 -> 380 bytes .../priv@templates@test_main.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/priv@templates@test_main.erl | 1 + .../priv@templates@testfile_gleeunit.cache | Bin 0 -> 1293 bytes .../priv@templates@testfile_gleeunit.cache_meta | Bin 0 -> 29 bytes .../priv@templates@testfile_gleeunit.erl | 1 + .../priv@templates@testfile_showtime.cache | Bin 0 -> 1300 bytes .../priv@templates@testfile_showtime.cache_meta | Bin 0 -> 29 bytes .../priv@templates@testfile_showtime.erl | 1 + .../adglent/_gleam_artefacts/priv@toml.cache | Bin 0 -> 1714 bytes .../adglent/_gleam_artefacts/priv@toml.cache_meta | Bin 0 -> 60 bytes .../erlang/adglent/_gleam_artefacts/priv@toml.erl | 83 + .../erlang/adglent/_gleam_artefacts/showtime.cache | Bin 0 -> 1068 bytes .../adglent/_gleam_artefacts/showtime.cache_meta | Bin 0 -> 439 bytes .../erlang/adglent/_gleam_artefacts/showtime.erl | 155 + .../showtime@internal@common@cli.cache | Bin 0 -> 879 bytes .../showtime@internal@common@cli.cache_meta | Bin 0 -> 29 bytes .../showtime@internal@common@cli.erl | 8 + ...time@internal@common@common_event_handler.cache | Bin 0 -> 3273 bytes ...internal@common@common_event_handler.cache_meta | Bin 0 -> 89 bytes ...owtime@internal@common@common_event_handler.erl | 131 + .../showtime@internal@common@test_result.cache | Bin 0 -> 15288 bytes ...showtime@internal@common@test_result.cache_meta | Bin 0 -> 67 bytes .../showtime@internal@common@test_result.erl | 54 + .../showtime@internal@common@test_suite.cache | Bin 0 -> 8873 bytes .../showtime@internal@common@test_suite.cache_meta | Bin 0 -> 129 bytes .../showtime@internal@common@test_suite.erl | 30 + .../showtime@internal@erlang@discover.cache | Bin 0 -> 1929 bytes .../showtime@internal@erlang@discover.cache_meta | Bin 0 -> 227 bytes .../showtime@internal@erlang@discover.erl | 230 + .../showtime@internal@erlang@event_handler.cache | Bin 0 -> 1542 bytes ...owtime@internal@erlang@event_handler.cache_meta | Bin 0 -> 292 bytes .../showtime@internal@erlang@event_handler.erl | 76 + .../showtime@internal@erlang@module_handler.cache | Bin 0 -> 1135 bytes ...wtime@internal@erlang@module_handler.cache_meta | Bin 0 -> 179 bytes .../showtime@internal@erlang@module_handler.erl | 53 + .../showtime@internal@erlang@runner.cache | Bin 0 -> 1642 bytes .../showtime@internal@erlang@runner.cache_meta | Bin 0 -> 195 bytes .../showtime@internal@erlang@runner.erl | 46 + .../showtime@internal@reports@compare.cache | Bin 0 -> 479 bytes .../showtime@internal@reports@compare.cache_meta | Bin 0 -> 140 bytes .../showtime@internal@reports@compare.erl | 61 + .../showtime@internal@reports@formatter.cache | Bin 0 -> 5108 bytes .../showtime@internal@reports@formatter.cache_meta | Bin 0 -> 421 bytes .../showtime@internal@reports@formatter.erl | 749 + .../showtime@internal@reports@styles.cache | Bin 0 -> 3189 bytes .../showtime@internal@reports@styles.cache_meta | Bin 0 -> 118 bytes .../showtime@internal@reports@styles.erl | 93 + .../showtime@internal@reports@table.cache | Bin 0 -> 5510 bytes .../showtime@internal@reports@table.cache_meta | Bin 0 -> 144 bytes .../showtime@internal@reports@table.erl | 229 + .../_gleam_artefacts/showtime@tests@meta.cache | Bin 0 -> 901 bytes .../showtime@tests@meta.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/showtime@tests@meta.erl | 8 + .../_gleam_artefacts/showtime@tests@should.cache | Bin 0 -> 5547 bytes .../showtime@tests@should.cache_meta | Bin 0 -> 76 bytes .../_gleam_artefacts/showtime@tests@should.erl | 143 + .../_gleam_artefacts/showtime@tests@test.cache | Bin 0 -> 3674 bytes .../showtime@tests@test.cache_meta | Bin 0 -> 101 bytes .../_gleam_artefacts/showtime@tests@test.erl | 57 + .../adglent/_gleam_artefacts/showtime_ffi.erl | 187 + aoc2023/build/dev/erlang/adglent/ebin/adglent.app | 17 + aoc2023/build/dev/erlang/adglent/ebin/adglent.beam | Bin 0 -> 3072 bytes .../build/dev/erlang/adglent/ebin/adglent@day.beam | Bin 0 -> 8292 bytes .../dev/erlang/adglent/ebin/adglent@init.beam | Bin 0 -> 6308 bytes .../build/dev/erlang/adglent/ebin/adglent_ffi.beam | Bin 0 -> 1556 bytes .../dev/erlang/adglent/ebin/priv@aoc_client.beam | Bin 0 -> 3696 bytes .../build/dev/erlang/adglent/ebin/priv@errors.beam | Bin 0 -> 3800 bytes .../build/dev/erlang/adglent/ebin/priv@prompt.beam | Bin 0 -> 2744 bytes .../dev/erlang/adglent/ebin/priv@template.beam | Bin 0 -> 1804 bytes .../adglent/ebin/priv@templates@solution.beam | Bin 0 -> 792 bytes .../adglent/ebin/priv@templates@test_main.beam | Bin 0 -> 792 bytes .../ebin/priv@templates@testfile_gleeunit.beam | Bin 0 -> 812 bytes .../ebin/priv@templates@testfile_showtime.beam | Bin 0 -> 812 bytes .../build/dev/erlang/adglent/ebin/priv@toml.beam | Bin 0 -> 3900 bytes .../build/dev/erlang/adglent/ebin/showtime.beam | Bin 0 -> 7024 bytes .../adglent/ebin/showtime@internal@common@cli.beam | Bin 0 -> 924 bytes ...wtime@internal@common@common_event_handler.beam | Bin 0 -> 4324 bytes .../ebin/showtime@internal@common@test_result.beam | Bin 0 -> 1884 bytes .../ebin/showtime@internal@common@test_suite.beam | Bin 0 -> 1412 bytes .../ebin/showtime@internal@erlang@discover.beam | Bin 0 -> 8688 bytes .../showtime@internal@erlang@event_handler.beam | Bin 0 -> 4368 bytes .../showtime@internal@erlang@module_handler.beam | Bin 0 -> 3024 bytes .../ebin/showtime@internal@erlang@runner.beam | Bin 0 -> 2416 bytes .../ebin/showtime@internal@reports@compare.beam | Bin 0 -> 3380 bytes .../ebin/showtime@internal@reports@formatter.beam | Bin 0 -> 20468 bytes .../ebin/showtime@internal@reports@styles.beam | Bin 0 -> 4196 bytes .../ebin/showtime@internal@reports@table.beam | Bin 0 -> 7608 bytes .../erlang/adglent/ebin/showtime@tests@meta.beam | Bin 0 -> 904 bytes .../erlang/adglent/ebin/showtime@tests@should.beam | Bin 0 -> 5416 bytes .../erlang/adglent/ebin/showtime@tests@test.beam | Bin 0 -> 3412 bytes .../dev/erlang/adglent/ebin/showtime_ffi.beam | Bin 0 -> 7708 bytes .../dev/erlang/adglent/include/adglent_Example.hrl | 1 + .../adglent/include/priv@toml_TomGetError.hrl | 1 + .../adglent/include/priv@toml_TomParseError.hrl | 1 + ...ternal@common@common_event_handler_Finished.hrl | 1 + ...al@common@common_event_handler_HandlerState.hrl | 5 + ...howtime@internal@common@test_result_ArgList.hrl | 1 + ...ime@internal@common@test_result_AssertEqual.hrl | 3 + ...ime@internal@common@test_result_AssertMatch.hrl | 3 + ...@internal@common@test_result_AssertNotEqual.hrl | 3 + ...internal@common@test_result_ErlangException.hrl | 6 + ...wtime@internal@common@test_result_ErrorInfo.hrl | 3 + ...owtime@internal@common@test_result_Expected.hrl | 1 + ...time@internal@common@test_result_Expression.hrl | 1 + .../showtime@internal@common@test_result_File.hrl | 1 + ...nternal@common@test_result_GenericException.hrl | 1 + ...ime@internal@common@test_result_GleamAssert.hrl | 1 + ...time@internal@common@test_result_GleamError.hrl | 3 + ...howtime@internal@common@test_result_Ignored.hrl | 1 + ...wtime@internal@common@test_result_LetAssert.hrl | 7 + .../showtime@internal@common@test_result_Line.hrl | 1 + ...showtime@internal@common@test_result_Module.hrl | 1 + .../showtime@internal@common@test_result_Num.hrl | 1 + ...howtime@internal@common@test_result_Pattern.hrl | 1 + ...time@internal@common@test_result_ReasonLine.hrl | 1 + ...ernal@common@test_result_TestFunctionReturn.hrl | 4 + .../showtime@internal@common@test_result_Trace.hrl | 5 + ...wtime@internal@common@test_result_TraceList.hrl | 3 + ...ime@internal@common@test_result_TraceModule.hrl | 6 + .../showtime@internal@common@test_result_Value.hrl | 1 + ...internal@common@test_suite_CompletedTestRun.hrl | 6 + ...showtime@internal@common@test_suite_EndTest.hrl | 6 + ...wtime@internal@common@test_suite_EndTestRun.hrl | 1 + ...ime@internal@common@test_suite_EndTestSuite.hrl | 3 + ...e@internal@common@test_suite_OngoingTestRun.hrl | 4 + ...owtime@internal@common@test_suite_StartTest.hrl | 4 + ...e@internal@common@test_suite_StartTestSuite.hrl | 3 + ...ime@internal@common@test_suite_TestFunction.hrl | 1 + ...wtime@internal@common@test_suite_TestModule.hrl | 1 + ...owtime@internal@common@test_suite_TestSuite.hrl | 4 + .../showtime@internal@reports@table_AlignLeft.hrl | 4 + ...me@internal@reports@table_AlignLeftOverflow.hrl | 4 + .../showtime@internal@reports@table_AlignRight.hrl | 4 + ...e@internal@reports@table_AlignRightOverflow.hrl | 4 + .../showtime@internal@reports@table_Aligned.hrl | 1 + .../showtime@internal@reports@table_Content.hrl | 1 + .../showtime@internal@reports@table_Separator.hrl | 1 + ...owtime@internal@reports@table_StyledContent.hrl | 1 + .../showtime@internal@reports@table_Table.hrl | 4 + .../adglent/include/showtime@tests@meta_Meta.hrl | 1 + .../adglent/include/showtime@tests@should_Eq.hrl | 5 + .../adglent/include/showtime@tests@should_Fail.hrl | 1 + .../include/showtime@tests@should_IsError.hrl | 4 + .../adglent/include/showtime@tests@should_IsOk.hrl | 4 + .../include/showtime@tests@should_NotEq.hrl | 5 + .../include/showtime@tests@test_MetaShould.hrl | 4 + .../adglent/include/showtime@tests@test_Test.hrl | 4 + .../erlang/aoc2023/_gleam_artefacts/aoc2023.cache | Bin 0 -> 407 bytes .../aoc2023/_gleam_artefacts/aoc2023.cache_meta | Bin 0 -> 68 bytes .../erlang/aoc2023/_gleam_artefacts/aoc2023.erl | 21 + .../aoc2023/_gleam_artefacts/aoc2023@@main.erl | 35 + .../aoc2023/_gleam_artefacts/aoc2023_test.cache | Bin 0 -> 305 bytes .../_gleam_artefacts/aoc2023_test.cache_meta | Bin 0 -> 45 bytes .../aoc2023/_gleam_artefacts/aoc2023_test.erl | 8 + .../_gleam_artefacts/day10@day10_test.cache | Bin 0 -> 1845 bytes .../_gleam_artefacts/day10@day10_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day10@day10_test.erl | 52 + .../aoc2023/_gleam_artefacts/day10@solve.cache | Bin 0 -> 5462 bytes .../_gleam_artefacts/day10@solve.cache_meta | Bin 0 -> 168 bytes .../aoc2023/_gleam_artefacts/day10@solve.erl | 340 + .../_gleam_artefacts/day11@day11_test.cache | Bin 0 -> 1935 bytes .../_gleam_artefacts/day11@day11_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day11@day11_test.erl | 68 + .../aoc2023/_gleam_artefacts/day11@solve.cache | Bin 0 -> 2064 bytes .../_gleam_artefacts/day11@solve.cache_meta | Bin 0 -> 115 bytes .../aoc2023/_gleam_artefacts/day11@solve.erl | 130 + .../_gleam_artefacts/day12@day12_test.cache | Bin 0 -> 1730 bytes .../_gleam_artefacts/day12@day12_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day12@day12_test.erl | 38 + .../aoc2023/_gleam_artefacts/day12@solve.cache | Bin 0 -> 1777 bytes .../_gleam_artefacts/day12@solve.cache_meta | Bin 0 -> 157 bytes .../aoc2023/_gleam_artefacts/day12@solve.erl | 145 + .../_gleam_artefacts/day13@day13_test.cache | Bin 0 -> 1994 bytes .../_gleam_artefacts/day13@day13_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day13@day13_test.erl | 88 + .../aoc2023/_gleam_artefacts/day13@solve.cache | Bin 0 -> 2415 bytes .../_gleam_artefacts/day13@solve.cache_meta | Bin 0 -> 116 bytes .../aoc2023/_gleam_artefacts/day13@solve.erl | 149 + .../_gleam_artefacts/day14@day14_test.cache | Bin 0 -> 1933 bytes .../_gleam_artefacts/day14@day14_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day14@day14_test.erl | 68 + .../aoc2023/_gleam_artefacts/day14@solve.cache | Bin 0 -> 2257 bytes .../_gleam_artefacts/day14@solve.cache_meta | Bin 0 -> 152 bytes .../aoc2023/_gleam_artefacts/day14@solve.erl | 149 + .../_gleam_artefacts/day15@day15_test.cache | Bin 0 -> 1817 bytes .../_gleam_artefacts/day15@day15_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day15@day15_test.erl | 32 + .../aoc2023/_gleam_artefacts/day15@solve.cache | Bin 0 -> 3200 bytes .../_gleam_artefacts/day15@solve.cache_meta | Bin 0 -> 153 bytes .../aoc2023/_gleam_artefacts/day15@solve.erl | 177 + .../_gleam_artefacts/day16@day16_test.cache | Bin 0 -> 1915 bytes .../_gleam_artefacts/day16@day16_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day16@day16_test.erl | 68 + .../aoc2023/_gleam_artefacts/day16@solve.cache | Bin 0 -> 2445 bytes .../_gleam_artefacts/day16@solve.cache_meta | Bin 0 -> 176 bytes .../aoc2023/_gleam_artefacts/day16@solve.erl | 253 + .../_gleam_artefacts/day17@day17_test.cache | Bin 0 -> 1789 bytes .../_gleam_artefacts/day17@day17_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day17@day17_test.erl | 52 + .../aoc2023/_gleam_artefacts/day17@solve.cache | Bin 0 -> 4185 bytes .../_gleam_artefacts/day17@solve.cache_meta | Bin 0 -> 223 bytes .../aoc2023/_gleam_artefacts/day17@solve.erl | 231 + .../_gleam_artefacts/day18@day18_test.cache | Bin 0 -> 2116 bytes .../_gleam_artefacts/day18@day18_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day18@day18_test.erl | 84 + .../aoc2023/_gleam_artefacts/day18@solve.cache | Bin 0 -> 3614 bytes .../_gleam_artefacts/day18@solve.cache_meta | Bin 0 -> 154 bytes .../aoc2023/_gleam_artefacts/day18@solve.erl | 218 + .../_gleam_artefacts/day19@day19_test.cache | Bin 0 -> 2438 bytes .../_gleam_artefacts/day19@day19_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day19@day19_test.erl | 96 + .../aoc2023/_gleam_artefacts/day19@solve.cache | Bin 0 -> 9036 bytes .../_gleam_artefacts/day19@solve.cache_meta | Bin 0 -> 191 bytes .../aoc2023/_gleam_artefacts/day19@solve.erl | 459 + .../aoc2023/_gleam_artefacts/day1@day1_test.cache | Bin 0 -> 1836 bytes .../_gleam_artefacts/day1@day1_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day1@day1_test.erl | 50 + .../aoc2023/_gleam_artefacts/day1@solve.cache | Bin 0 -> 1176 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache_meta | Bin 0 -> 134 bytes .../erlang/aoc2023/_gleam_artefacts/day1@solve.erl | 118 + .../_gleam_artefacts/day20@day20_test.cache | Bin 0 -> 1864 bytes .../_gleam_artefacts/day20@day20_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day20@day20_test.erl | 52 + .../aoc2023/_gleam_artefacts/day20@solve.cache | Bin 0 -> 4798 bytes .../_gleam_artefacts/day20@solve.cache_meta | Bin 0 -> 153 bytes .../aoc2023/_gleam_artefacts/day20@solve.erl | 237 + .../aoc2023/_gleam_artefacts/day2@day2_test.cache | Bin 0 -> 2472 bytes .../_gleam_artefacts/day2@day2_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day2@day2_test.erl | 54 + .../aoc2023/_gleam_artefacts/day2@solve.cache | Bin 0 -> 1440 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache_meta | Bin 0 -> 115 bytes .../erlang/aoc2023/_gleam_artefacts/day2@solve.erl | 166 + .../aoc2023/_gleam_artefacts/day3@day3_test.cache | Bin 0 -> 1896 bytes .../_gleam_artefacts/day3@day3_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day3@day3_test.erl | 68 + .../aoc2023/_gleam_artefacts/day3@solve.cache | Bin 0 -> 5683 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache_meta | Bin 0 -> 152 bytes .../erlang/aoc2023/_gleam_artefacts/day3@solve.erl | 254 + .../aoc2023/_gleam_artefacts/day4@day4_test.cache | Bin 0 -> 2259 bytes .../_gleam_artefacts/day4@day4_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day4@day4_test.erl | 52 + .../aoc2023/_gleam_artefacts/day4@solve.cache | Bin 0 -> 2089 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache_meta | Bin 0 -> 208 bytes .../erlang/aoc2023/_gleam_artefacts/day4@solve.erl | 169 + .../aoc2023/_gleam_artefacts/day5@day5_test.cache | Bin 0 -> 2379 bytes .../_gleam_artefacts/day5@day5_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day5@day5_test.erl | 160 + .../aoc2023/_gleam_artefacts/day5@solve.cache | Bin 0 -> 5112 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache_meta | Bin 0 -> 157 bytes .../erlang/aoc2023/_gleam_artefacts/day5@solve.erl | 269 + .../aoc2023/_gleam_artefacts/day6@day6_test.cache | Bin 0 -> 1790 bytes .../_gleam_artefacts/day6@day6_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day6@day6_test.erl | 36 + .../aoc2023/_gleam_artefacts/day6@solve.cache | Bin 0 -> 1920 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache_meta | Bin 0 -> 135 bytes .../erlang/aoc2023/_gleam_artefacts/day6@solve.erl | 131 + .../aoc2023/_gleam_artefacts/day7@day7_test.cache | Bin 0 -> 1803 bytes .../_gleam_artefacts/day7@day7_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day7@day7_test.erl | 48 + .../aoc2023/_gleam_artefacts/day7@solve.cache | Bin 0 -> 3183 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache_meta | Bin 0 -> 174 bytes .../erlang/aoc2023/_gleam_artefacts/day7@solve.erl | 242 + .../aoc2023/_gleam_artefacts/day8@day8_test.cache | Bin 0 -> 1865 bytes .../_gleam_artefacts/day8@day8_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day8@day8_test.erl | 58 + .../aoc2023/_gleam_artefacts/day8@solve.cache | Bin 0 -> 1810 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache_meta | Bin 0 -> 236 bytes .../erlang/aoc2023/_gleam_artefacts/day8@solve.erl | 179 + .../aoc2023/_gleam_artefacts/day9@day9_test.cache | Bin 0 -> 1793 bytes .../_gleam_artefacts/day9@day9_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day9@day9_test.erl | 40 + .../aoc2023/_gleam_artefacts/day9@solve.cache | Bin 0 -> 1829 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache_meta | Bin 0 -> 115 bytes .../erlang/aoc2023/_gleam_artefacts/day9@solve.erl | 133 + .../aoc2023/_gleam_artefacts/gleam@@compile.erl | 157 + .../_gleam_artefacts/utilities@array2d.cache | Bin 0 -> 2127 bytes .../_gleam_artefacts/utilities@array2d.cache_meta | Bin 0 -> 102 bytes .../aoc2023/_gleam_artefacts/utilities@array2d.erl | 64 + .../aoc2023/_gleam_artefacts/utilities@memo.cache | Bin 0 -> 3198 bytes .../_gleam_artefacts/utilities@memo.cache_meta | Bin 0 -> 118 bytes .../aoc2023/_gleam_artefacts/utilities@memo.erl | 70 + .../_gleam_artefacts/utilities@prioqueue.cache | Bin 0 -> 3158 bytes .../utilities@prioqueue.cache_meta | Bin 0 -> 47 bytes .../_gleam_artefacts/utilities@prioqueue.erl | 60 + aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app | 15 + aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam | Bin 0 -> 1976 bytes .../dev/erlang/aoc2023/ebin/aoc2023@@main.beam | Bin 0 -> 2780 bytes .../dev/erlang/aoc2023/ebin/aoc2023_test.beam | Bin 0 -> 1088 bytes .../dev/erlang/aoc2023/ebin/day10@day10_test.beam | Bin 0 -> 2508 bytes .../build/dev/erlang/aoc2023/ebin/day10@solve.beam | Bin 0 -> 12732 bytes .../dev/erlang/aoc2023/ebin/day11@day11_test.beam | Bin 0 -> 2400 bytes .../build/dev/erlang/aoc2023/ebin/day11@solve.beam | Bin 0 -> 6228 bytes .../dev/erlang/aoc2023/ebin/day12@day12_test.beam | Bin 0 -> 2392 bytes .../build/dev/erlang/aoc2023/ebin/day12@solve.beam | Bin 0 -> 6816 bytes .../dev/erlang/aoc2023/ebin/day13@day13_test.beam | Bin 0 -> 2428 bytes .../build/dev/erlang/aoc2023/ebin/day13@solve.beam | Bin 0 -> 6624 bytes .../dev/erlang/aoc2023/ebin/day14@day14_test.beam | Bin 0 -> 2452 bytes .../build/dev/erlang/aoc2023/ebin/day14@solve.beam | Bin 0 -> 6912 bytes .../dev/erlang/aoc2023/ebin/day15@day15_test.beam | Bin 0 -> 2416 bytes .../build/dev/erlang/aoc2023/ebin/day15@solve.beam | Bin 0 -> 7676 bytes .../dev/erlang/aoc2023/ebin/day16@day16_test.beam | Bin 0 -> 2404 bytes .../build/dev/erlang/aoc2023/ebin/day16@solve.beam | Bin 0 -> 9856 bytes .../dev/erlang/aoc2023/ebin/day17@day17_test.beam | Bin 0 -> 2496 bytes .../build/dev/erlang/aoc2023/ebin/day17@solve.beam | Bin 0 -> 9700 bytes .../dev/erlang/aoc2023/ebin/day18@day18_test.beam | Bin 0 -> 2584 bytes .../build/dev/erlang/aoc2023/ebin/day18@solve.beam | Bin 0 -> 8520 bytes .../dev/erlang/aoc2023/ebin/day19@day19_test.beam | Bin 0 -> 2876 bytes .../build/dev/erlang/aoc2023/ebin/day19@solve.beam | Bin 0 -> 15476 bytes .../dev/erlang/aoc2023/ebin/day1@day1_test.beam | Bin 0 -> 2520 bytes .../build/dev/erlang/aoc2023/ebin/day1@solve.beam | Bin 0 -> 5292 bytes .../dev/erlang/aoc2023/ebin/day20@day20_test.beam | Bin 0 -> 2504 bytes .../build/dev/erlang/aoc2023/ebin/day20@solve.beam | Bin 0 -> 9516 bytes .../dev/erlang/aoc2023/ebin/day2@day2_test.beam | Bin 0 -> 2660 bytes .../build/dev/erlang/aoc2023/ebin/day2@solve.beam | Bin 0 -> 7028 bytes .../dev/erlang/aoc2023/ebin/day3@day3_test.beam | Bin 0 -> 2428 bytes .../build/dev/erlang/aoc2023/ebin/day3@solve.beam | Bin 0 -> 11296 bytes .../dev/erlang/aoc2023/ebin/day4@day4_test.beam | Bin 0 -> 2652 bytes .../build/dev/erlang/aoc2023/ebin/day4@solve.beam | Bin 0 -> 8124 bytes .../dev/erlang/aoc2023/ebin/day5@day5_test.beam | Bin 0 -> 2756 bytes .../build/dev/erlang/aoc2023/ebin/day5@solve.beam | Bin 0 -> 11140 bytes .../dev/erlang/aoc2023/ebin/day6@day6_test.beam | Bin 0 -> 2396 bytes .../build/dev/erlang/aoc2023/ebin/day6@solve.beam | Bin 0 -> 6252 bytes .../dev/erlang/aoc2023/ebin/day7@day7_test.beam | Bin 0 -> 2416 bytes .../build/dev/erlang/aoc2023/ebin/day7@solve.beam | Bin 0 -> 9700 bytes .../dev/erlang/aoc2023/ebin/day8@day8_test.beam | Bin 0 -> 2504 bytes .../build/dev/erlang/aoc2023/ebin/day8@solve.beam | Bin 0 -> 7556 bytes .../dev/erlang/aoc2023/ebin/day9@day9_test.beam | Bin 0 -> 2392 bytes .../build/dev/erlang/aoc2023/ebin/day9@solve.beam | Bin 0 -> 5652 bytes .../dev/erlang/aoc2023/ebin/utilities@array2d.beam | Bin 0 -> 3852 bytes .../dev/erlang/aoc2023/ebin/utilities@memo.beam | Bin 0 -> 4028 bytes .../erlang/aoc2023/ebin/utilities@prioqueue.beam | Bin 0 -> 3412 bytes .../dev/erlang/aoc2023/include/day2@solve_Game.hrl | 1 + .../erlang/aoc2023/include/day5@solve_Almanac.hrl | 4 + .../erlang/aoc2023/include/day5@solve_MRange.hrl | 1 + .../erlang/aoc2023/include/day5@solve_SRange.hrl | 1 + .../aoc2023/include/utilities@array2d_Posn.hrl | 1 + .../aoc2023/include/utilities@memo_Cache.hrl | 3 + .../include/utilities@prioqueue_PriorityQueue.hrl | 4 + .../dev/erlang/gap/_gleam_artefacts/gap.cache | Bin 0 -> 6090 bytes .../dev/erlang/gap/_gleam_artefacts/gap.cache_meta | Bin 0 -> 282 bytes .../build/dev/erlang/gap/_gleam_artefacts/gap.erl | 538 + .../gap/_gleam_artefacts/gap@comparison.cache | Bin 0 -> 2538 bytes .../gap/_gleam_artefacts/gap@comparison.cache_meta | Bin 0 -> 29 bytes .../erlang/gap/_gleam_artefacts/gap@comparison.erl | 15 + .../erlang/gap/_gleam_artefacts/gap@myers.cache | Bin 0 -> 4865 bytes .../gap/_gleam_artefacts/gap@myers.cache_meta | Bin 0 -> 47 bytes .../dev/erlang/gap/_gleam_artefacts/gap@myers.erl | 156 + .../_gleam_artefacts/gap@styled_comparison.cache | Bin 0 -> 946 bytes .../gap@styled_comparison.cache_meta | Bin 0 -> 29 bytes .../gap/_gleam_artefacts/gap@styled_comparison.erl | 8 + .../erlang/gap/_gleam_artefacts/gap@styling.cache | Bin 0 -> 8057 bytes .../gap/_gleam_artefacts/gap@styling.cache_meta | Bin 0 -> 166 bytes .../erlang/gap/_gleam_artefacts/gap@styling.erl | 202 + .../dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs | 431 + .../erlang/gap/_gleam_artefacts/gleam@@compile.erl | 157 + aoc2023/build/dev/erlang/gap/ebin/gap.app | 8 + aoc2023/build/dev/erlang/gap/ebin/gap.beam | Bin 0 -> 15568 bytes .../build/dev/erlang/gap/ebin/gap@comparison.beam | Bin 0 -> 1052 bytes aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam | Bin 0 -> 6508 bytes .../dev/erlang/gap/ebin/gap@styled_comparison.beam | Bin 0 -> 896 bytes aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam | Bin 0 -> 7488 bytes .../gap/include/gap@comparison_ListComparison.hrl | 4 + .../erlang/gap/include/gap@comparison_Match.hrl | 1 + .../erlang/gap/include/gap@comparison_NoMatch.hrl | 1 + .../include/gap@comparison_StringComparison.hrl | 4 + .../gap@styled_comparison_StyledComparison.hrl | 1 + .../dev/erlang/gap/include/gap@styling_All.hrl | 1 + .../gap/include/gap@styling_Highlighters.hrl | 5 + .../dev/erlang/gap/include/gap@styling_Part.hrl | 5 + .../dev/erlang/gap/include/gap@styling_Styling.hrl | 5 + aoc2023/build/dev/erlang/gleam.lock | 0 .../_gleam_artefacts/gleam@@compile.erl | 157 + .../_gleam_artefacts/gleam_community@ansi.cache | Bin 0 -> 62995 bytes .../gleam_community@ansi.cache_meta | Bin 0 -> 114 bytes .../_gleam_artefacts/gleam_community@ansi.erl | 263 + .../ebin/gleam_community@ansi.beam | Bin 0 -> 10580 bytes .../ebin/gleam_community_ansi.app | 8 + .../_gleam_artefacts/gleam@@compile.erl | 157 + .../_gleam_artefacts/gleam_community@colour.cache | Bin 0 -> 28213 bytes .../gleam_community@colour.cache_meta | Bin 0 -> 123 bytes .../_gleam_artefacts/gleam_community@colour.erl | 513 + .../gleam_community@colour@accessibility.cache | Bin 0 -> 3149 bytes ...gleam_community@colour@accessibility.cache_meta | Bin 0 -> 96 bytes .../gleam_community@colour@accessibility.erl | 75 + .../ebin/gleam_community@colour.beam | Bin 0 -> 19736 bytes .../ebin/gleam_community@colour@accessibility.beam | Bin 0 -> 4148 bytes .../ebin/gleam_community_colour.app | 7 + .../include/gleam_community@colour_Hsla.hrl | 1 + .../include/gleam_community@colour_Rgba.hrl | 1 + .../_gleam_artefacts/gleam@@compile.erl | 157 + .../gleam_community@maths@arithmetics.cache | Bin 0 -> 14528 bytes .../gleam_community@maths@arithmetics.cache_meta | Bin 0 -> 183 bytes .../gleam_community@maths@arithmetics.erl | 172 + .../gleam_community@maths@combinatorics.cache | Bin 0 -> 8209 bytes .../gleam_community@maths@combinatorics.cache_meta | Bin 0 -> 64 bytes .../gleam_community@maths@combinatorics.erl | 218 + .../gleam_community@maths@conversion.cache | Bin 0 -> 4583 bytes .../gleam_community@maths@conversion.cache_meta | Bin 0 -> 46 bytes .../gleam_community@maths@conversion.erl | 24 + .../gleam_community@maths@elementary.cache | Bin 0 -> 30763 bytes .../gleam_community@maths@elementary.cache_meta | Bin 0 -> 66 bytes .../gleam_community@maths@elementary.erl | 286 + .../gleam_community@maths@metrics.cache | Bin 0 -> 12100 bytes .../gleam_community@maths@metrics.cache_meta | Bin 0 -> 284 bytes .../gleam_community@maths@metrics.erl | 281 + .../gleam_community@maths@piecewise.cache | Bin 0 -> 34039 bytes .../gleam_community@maths@piecewise.cache_meta | Bin 0 -> 201 bytes .../gleam_community@maths@piecewise.erl | 563 + .../gleam_community@maths@predicates.cache | Bin 0 -> 8750 bytes .../gleam_community@maths@predicates.cache_meta | Bin 0 -> 222 bytes .../gleam_community@maths@predicates.erl | 118 + .../gleam_community@maths@sequences.cache | Bin 0 -> 6486 bytes .../gleam_community@maths@sequences.cache_meta | Bin 0 -> 166 bytes .../gleam_community@maths@sequences.erl | 202 + .../gleam_community@maths@special.cache | Bin 0 -> 3907 bytes .../gleam_community@maths@special.cache_meta | Bin 0 -> 166 bytes .../gleam_community@maths@special.erl | 163 + .../_gleam_artefacts/maths.mjs | 95 + .../ebin/gleam_community@maths@arithmetics.beam | Bin 0 -> 7276 bytes .../ebin/gleam_community@maths@combinatorics.beam | Bin 0 -> 7624 bytes .../ebin/gleam_community@maths@conversion.beam | Bin 0 -> 1916 bytes .../ebin/gleam_community@maths@elementary.beam | Bin 0 -> 9320 bytes .../ebin/gleam_community@maths@metrics.beam | Bin 0 -> 9308 bytes .../ebin/gleam_community@maths@piecewise.beam | Bin 0 -> 16508 bytes .../ebin/gleam_community@maths@predicates.beam | Bin 0 -> 5584 bytes .../ebin/gleam_community@maths@sequences.beam | Bin 0 -> 7084 bytes .../ebin/gleam_community@maths@special.beam | Bin 0 -> 7656 bytes .../ebin/gleam_community_maths.app | 7 + .../_gleam_artefacts/gleam@@compile.erl | 157 + .../_gleam_artefacts/gleam@erlang.cache | Bin 0 -> 8892 bytes .../_gleam_artefacts/gleam@erlang.cache_meta | Bin 0 -> 122 bytes .../gleam_erlang/_gleam_artefacts/gleam@erlang.erl | 90 + .../_gleam_artefacts/gleam@erlang@atom.cache | Bin 0 -> 2901 bytes .../_gleam_artefacts/gleam@erlang@atom.cache_meta | Bin 0 -> 50 bytes .../_gleam_artefacts/gleam@erlang@atom.erl | 26 + .../_gleam_artefacts/gleam@erlang@charlist.cache | Bin 0 -> 869 bytes .../gleam@erlang@charlist.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@erlang@charlist.erl | 15 + .../_gleam_artefacts/gleam@erlang@file.cache | Bin 0 -> 28516 bytes .../_gleam_artefacts/gleam@erlang@file.cache_meta | Bin 0 -> 72 bytes .../_gleam_artefacts/gleam@erlang@file.erl | 190 + .../_gleam_artefacts/gleam@erlang@node.cache | Bin 0 -> 3092 bytes .../_gleam_artefacts/gleam@erlang@node.cache_meta | Bin 0 -> 54 bytes .../_gleam_artefacts/gleam@erlang@node.erl | 33 + .../_gleam_artefacts/gleam@erlang@os.cache | Bin 0 -> 3322 bytes .../_gleam_artefacts/gleam@erlang@os.cache_meta | Bin 0 -> 46 bytes .../_gleam_artefacts/gleam@erlang@os.erl | 27 + .../_gleam_artefacts/gleam@erlang@process.cache | Bin 0 -> 31558 bytes .../gleam@erlang@process.cache_meta | Bin 0 -> 115 bytes .../_gleam_artefacts/gleam@erlang@process.erl | 374 + .../_gleam_artefacts/gleam_erlang_ffi.erl | 263 + .../dev/erlang/gleam_erlang/ebin/gleam@erlang.beam | Bin 0 -> 4352 bytes .../gleam_erlang/ebin/gleam@erlang@atom.beam | Bin 0 -> 1856 bytes .../gleam_erlang/ebin/gleam@erlang@charlist.beam | Bin 0 -> 1392 bytes .../gleam_erlang/ebin/gleam@erlang@file.beam | Bin 0 -> 6008 bytes .../gleam_erlang/ebin/gleam@erlang@node.beam | Bin 0 -> 1980 bytes .../erlang/gleam_erlang/ebin/gleam@erlang@os.beam | Bin 0 -> 1836 bytes .../gleam_erlang/ebin/gleam@erlang@process.beam | Bin 0 -> 14888 bytes .../dev/erlang/gleam_erlang/ebin/gleam_erlang.app | 7 + .../erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam | Bin 0 -> 13964 bytes .../include/gleam@erlang@file_FileInfo.hrl | 15 + .../include/gleam@erlang@process_Abnormal.hrl | 1 + .../include/gleam@erlang@process_CalleeDown.hrl | 1 + .../include/gleam@erlang@process_Cancelled.hrl | 1 + .../include/gleam@erlang@process_ExitMessage.hrl | 4 + .../include/gleam@erlang@process_ProcessDown.hrl | 4 + .../gleam@erlang@process_ProcessMonitor.hrl | 1 + .../include/gleam@erlang@process_Subject.hrl | 4 + .../gleam@erlang_ApplicationFailedToStart.hrl | 4 + .../include/gleam@erlang_UnknownApplication.hrl | 1 + .../gleam_http/_gleam_artefacts/gleam@@compile.erl | 157 + .../gleam_http/_gleam_artefacts/gleam@http.cache | Bin 0 -> 15491 bytes .../_gleam_artefacts/gleam@http.cache_meta | Bin 0 -> 149 bytes .../gleam_http/_gleam_artefacts/gleam@http.erl | 626 + .../_gleam_artefacts/gleam@http@cookie.cache | Bin 0 -> 4352 bytes .../_gleam_artefacts/gleam@http@cookie.cache_meta | Bin 0 -> 161 bytes .../_gleam_artefacts/gleam@http@cookie.erl | 153 + .../_gleam_artefacts/gleam@http@request.cache | Bin 0 -> 8252 bytes .../_gleam_artefacts/gleam@http@request.cache_meta | Bin 0 -> 195 bytes .../_gleam_artefacts/gleam@http@request.erl | 202 + .../_gleam_artefacts/gleam@http@response.cache | Bin 0 -> 5278 bytes .../gleam@http@response.cache_meta | Bin 0 -> 150 bytes .../_gleam_artefacts/gleam@http@response.erl | 97 + .../_gleam_artefacts/gleam@http@service.cache | Bin 0 -> 3223 bytes .../_gleam_artefacts/gleam@http@service.cache_meta | Bin 0 -> 138 bytes .../_gleam_artefacts/gleam@http@service.erl | 82 + .../_gleam_artefacts/gleam_http_native.erl | 88 + .../_gleam_artefacts/gleam_http_native.mjs | 38 + .../dev/erlang/gleam_http/ebin/gleam@http.beam | Bin 0 -> 21920 bytes .../erlang/gleam_http/ebin/gleam@http@cookie.beam | Bin 0 -> 7076 bytes .../erlang/gleam_http/ebin/gleam@http@request.beam | Bin 0 -> 8976 bytes .../gleam_http/ebin/gleam@http@response.beam | Bin 0 -> 5004 bytes .../erlang/gleam_http/ebin/gleam@http@service.beam | Bin 0 -> 4308 bytes .../dev/erlang/gleam_http/ebin/gleam_http.app | 7 + .../erlang/gleam_http/ebin/gleam_http_native.beam | Bin 0 -> 4952 bytes .../include/gleam@http@cookie_Attributes.hrl | 8 + .../include/gleam@http@request_Request.hrl | 10 + .../include/gleam@http@response_Response.hrl | 5 + .../include/gleam@http_MoreRequiredForBody.hrl | 5 + .../include/gleam@http_MoreRequiredForHeaders.hrl | 4 + .../include/gleam@http_MultipartBody.hrl | 5 + .../include/gleam@http_MultipartHeaders.hrl | 4 + .../_gleam_artefacts/gleam@@compile.erl | 157 + .../gleam_httpc/_gleam_artefacts/gleam@httpc.cache | Bin 0 -> 4263 bytes .../_gleam_artefacts/gleam@httpc.cache_meta | Bin 0 -> 199 bytes .../gleam_httpc/_gleam_artefacts/gleam@httpc.erl | 118 + .../dev/erlang/gleam_httpc/ebin/gleam@httpc.beam | Bin 0 -> 4888 bytes .../dev/erlang/gleam_httpc/ebin/gleam_httpc.app | 10 + .../gleam_otp/_gleam_artefacts/gleam@@compile.erl | 157 + .../_gleam_artefacts/gleam@otp@actor.cache | Bin 0 -> 13720 bytes .../_gleam_artefacts/gleam@otp@actor.cache_meta | Bin 0 -> 196 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@actor.erl | 273 + .../gleam@otp@intensity_tracker.cache | Bin 0 -> 2475 bytes .../gleam@otp@intensity_tracker.cache_meta | Bin 0 -> 47 bytes .../gleam@otp@intensity_tracker.erl | 53 + .../_gleam_artefacts/gleam@otp@port.cache | Bin 0 -> 354 bytes .../_gleam_artefacts/gleam@otp@port.cache_meta | Bin 0 -> 29 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@port.erl | 8 + .../_gleam_artefacts/gleam@otp@supervisor.cache | Bin 0 -> 16821 bytes .../gleam@otp@supervisor.cache_meta | Bin 0 -> 200 bytes .../_gleam_artefacts/gleam@otp@supervisor.erl | 322 + .../_gleam_artefacts/gleam@otp@system.cache | Bin 0 -> 5895 bytes .../_gleam_artefacts/gleam@otp@system.cache_meta | Bin 0 -> 103 bytes .../_gleam_artefacts/gleam@otp@system.erl | 43 + .../_gleam_artefacts/gleam@otp@task.cache | Bin 0 -> 4454 bytes .../_gleam_artefacts/gleam@otp@task.cache_meta | Bin 0 -> 78 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@task.erl | 111 + .../gleam_otp/_gleam_artefacts/gleam_otp.cache | Bin 0 -> 728 bytes .../_gleam_artefacts/gleam_otp.cache_meta | Bin 0 -> 130 bytes .../gleam_otp/_gleam_artefacts/gleam_otp.erl | 28 + .../_gleam_artefacts/gleam_otp_external.erl | 43 + .../dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam | Bin 0 -> 10924 bytes .../ebin/gleam@otp@intensity_tracker.beam | Bin 0 -> 2524 bytes .../dev/erlang/gleam_otp/ebin/gleam@otp@port.beam | Bin 0 -> 852 bytes .../gleam_otp/ebin/gleam@otp@supervisor.beam | Bin 0 -> 13040 bytes .../erlang/gleam_otp/ebin/gleam@otp@system.beam | Bin 0 -> 2044 bytes .../dev/erlang/gleam_otp/ebin/gleam@otp@task.beam | Bin 0 -> 5364 bytes .../build/dev/erlang/gleam_otp/ebin/gleam_otp.app | 8 + .../build/dev/erlang/gleam_otp/ebin/gleam_otp.beam | Bin 0 -> 2396 bytes .../erlang/gleam_otp/ebin/gleam_otp_external.beam | Bin 0 -> 3096 bytes .../gleam_otp/include/gleam@otp@actor_Continue.hrl | 4 + .../gleam_otp/include/gleam@otp@actor_Ready.hrl | 1 + .../gleam_otp/include/gleam@otp@actor_Spec.hrl | 5 + ...leam@otp@intensity_tracker_IntensityTracker.hrl | 5 + .../include/gleam@otp@supervisor_ChildSpec.hrl | 5 + .../include/gleam@otp@supervisor_Spec.hrl | 6 + .../include/gleam@otp@system_StatusInfo.hrl | 7 + .../gleam_otp/include/gleam@otp@task_Exit.hrl | 1 + .../gleam_otp/include/gleam@otp@task_Task.hrl | 6 + .../erlang/gleam_stdlib/_gleam_artefacts/dict.mjs | 957 + .../_gleam_artefacts/gleam@@compile.erl | 157 + .../gleam_stdlib/_gleam_artefacts/gleam@base.cache | Bin 0 -> 1301 bytes .../_gleam_artefacts/gleam@base.cache_meta | Bin 0 -> 52 bytes .../gleam_stdlib/_gleam_artefacts/gleam@base.erl | 20 + .../_gleam_artefacts/gleam@bit_array.cache | Bin 0 -> 5024 bytes .../_gleam_artefacts/gleam@bit_array.cache_meta | Bin 0 -> 49 bytes .../_gleam_artefacts/gleam@bit_array.erl | 102 + .../_gleam_artefacts/gleam@bit_builder.cache | Bin 0 -> 4262 bytes .../_gleam_artefacts/gleam@bit_builder.cache_meta | Bin 0 -> 84 bytes .../_gleam_artefacts/gleam@bit_builder.erl | 66 + .../_gleam_artefacts/gleam@bit_string.cache | Bin 0 -> 2010 bytes .../_gleam_artefacts/gleam@bit_string.cache_meta | Bin 0 -> 52 bytes .../_gleam_artefacts/gleam@bit_string.erl | 33 + .../gleam_stdlib/_gleam_artefacts/gleam@bool.cache | Bin 0 -> 7175 bytes .../_gleam_artefacts/gleam@bool.cache_meta | Bin 0 -> 48 bytes .../gleam_stdlib/_gleam_artefacts/gleam@bool.erl | 162 + .../_gleam_artefacts/gleam@bytes_builder.cache | Bin 0 -> 6338 bytes .../gleam@bytes_builder.cache_meta | Bin 0 -> 98 bytes .../_gleam_artefacts/gleam@bytes_builder.erl | 87 + .../gleam_stdlib/_gleam_artefacts/gleam@dict.cache | Bin 0 -> 12361 bytes .../_gleam_artefacts/gleam@dict.cache_meta | Bin 0 -> 49 bytes .../gleam_stdlib/_gleam_artefacts/gleam@dict.erl | 97 + .../_gleam_artefacts/gleam@dynamic.cache | Bin 0 -> 49464 bytes .../_gleam_artefacts/gleam@dynamic.cache_meta | Bin 0 -> 173 bytes .../_gleam_artefacts/gleam@dynamic.erl | 808 + .../_gleam_artefacts/gleam@float.cache | Bin 0 -> 11445 bytes .../_gleam_artefacts/gleam@float.cache_meta | Bin 0 -> 48 bytes .../gleam_stdlib/_gleam_artefacts/gleam@float.erl | 181 + .../_gleam_artefacts/gleam@function.cache | Bin 0 -> 5886 bytes .../_gleam_artefacts/gleam@function.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@function.erl | 67 + .../gleam_stdlib/_gleam_artefacts/gleam@int.cache | Bin 0 -> 18217 bytes .../_gleam_artefacts/gleam@int.cache_meta | Bin 0 -> 67 bytes .../gleam_stdlib/_gleam_artefacts/gleam@int.erl | 332 + .../gleam_stdlib/_gleam_artefacts/gleam@io.cache | Bin 0 -> 2936 bytes .../_gleam_artefacts/gleam@io.cache_meta | Bin 0 -> 49 bytes .../gleam_stdlib/_gleam_artefacts/gleam@io.erl | 27 + .../_gleam_artefacts/gleam@iterator.cache | Bin 0 -> 38553 bytes .../_gleam_artefacts/gleam@iterator.cache_meta | Bin 0 -> 141 bytes .../_gleam_artefacts/gleam@iterator.erl | 744 + .../gleam_stdlib/_gleam_artefacts/gleam@list.cache | Bin 0 -> 46380 bytes .../_gleam_artefacts/gleam@list.cache_meta | Bin 0 -> 120 bytes .../gleam_stdlib/_gleam_artefacts/gleam@list.erl | 1129 + .../gleam_stdlib/_gleam_artefacts/gleam@map.cache | Bin 0 -> 4822 bytes .../_gleam_artefacts/gleam@map.cache_meta | Bin 0 -> 67 bytes .../gleam_stdlib/_gleam_artefacts/gleam@map.erl | 76 + .../_gleam_artefacts/gleam@option.cache | Bin 0 -> 7384 bytes .../_gleam_artefacts/gleam@option.cache_meta | Bin 0 -> 29 bytes .../gleam_stdlib/_gleam_artefacts/gleam@option.erl | 147 + .../_gleam_artefacts/gleam@order.cache | Bin 0 -> 2807 bytes .../_gleam_artefacts/gleam@order.cache_meta | Bin 0 -> 29 bytes .../gleam_stdlib/_gleam_artefacts/gleam@order.erl | 79 + .../gleam_stdlib/_gleam_artefacts/gleam@pair.cache | Bin 0 -> 1961 bytes .../_gleam_artefacts/gleam@pair.cache_meta | Bin 0 -> 29 bytes .../gleam_stdlib/_gleam_artefacts/gleam@pair.erl | 33 + .../_gleam_artefacts/gleam@queue.cache | Bin 0 -> 7180 bytes .../_gleam_artefacts/gleam@queue.cache_meta | Bin 0 -> 47 bytes .../gleam_stdlib/_gleam_artefacts/gleam@queue.erl | 121 + .../_gleam_artefacts/gleam@regex.cache | Bin 0 -> 6990 bytes .../_gleam_artefacts/gleam@regex.cache_meta | Bin 0 -> 49 bytes .../gleam_stdlib/_gleam_artefacts/gleam@regex.erl | 33 + .../_gleam_artefacts/gleam@result.cache | Bin 0 -> 10484 bytes .../_gleam_artefacts/gleam@result.cache_meta | Bin 0 -> 47 bytes .../gleam_stdlib/_gleam_artefacts/gleam@result.erl | 201 + .../gleam_stdlib/_gleam_artefacts/gleam@set.cache | Bin 0 -> 6575 bytes .../_gleam_artefacts/gleam@set.cache_meta | Bin 0 -> 85 bytes .../gleam_stdlib/_gleam_artefacts/gleam@set.erl | 85 + .../_gleam_artefacts/gleam@string.cache | Bin 0 -> 21819 bytes .../_gleam_artefacts/gleam@string.cache_meta | Bin 0 -> 136 bytes .../gleam_stdlib/_gleam_artefacts/gleam@string.erl | 352 + .../_gleam_artefacts/gleam@string_builder.cache | Bin 0 -> 10653 bytes .../gleam@string_builder.cache_meta | Bin 0 -> 47 bytes .../_gleam_artefacts/gleam@string_builder.erl | 91 + .../gleam_stdlib/_gleam_artefacts/gleam@uri.cache | Bin 0 -> 8323 bytes .../_gleam_artefacts/gleam@uri.cache_meta | Bin 0 -> 132 bytes .../gleam_stdlib/_gleam_artefacts/gleam@uri.erl | 252 + .../gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl | 529 + .../gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs | 875 + .../dev/erlang/gleam_stdlib/ebin/gleam@base.beam | Bin 0 -> 1720 bytes .../erlang/gleam_stdlib/ebin/gleam@bit_array.beam | Bin 0 -> 4696 bytes .../gleam_stdlib/ebin/gleam@bit_builder.beam | Bin 0 -> 3308 bytes .../erlang/gleam_stdlib/ebin/gleam@bit_string.beam | Bin 0 -> 2184 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@bool.beam | Bin 0 -> 4008 bytes .../gleam_stdlib/ebin/gleam@bytes_builder.beam | Bin 0 -> 3760 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@dict.beam | Bin 0 -> 4712 bytes .../erlang/gleam_stdlib/ebin/gleam@dynamic.beam | Bin 0 -> 32632 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@float.beam | Bin 0 -> 6128 bytes .../erlang/gleam_stdlib/ebin/gleam@function.beam | Bin 0 -> 5500 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@int.beam | Bin 0 -> 9888 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@io.beam | Bin 0 -> 1748 bytes .../erlang/gleam_stdlib/ebin/gleam@iterator.beam | Bin 0 -> 28416 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@list.beam | Bin 0 -> 34500 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@map.beam | Bin 0 -> 4092 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@option.beam | Bin 0 -> 4560 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@order.beam | Bin 0 -> 2384 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@pair.beam | Bin 0 -> 2024 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@queue.beam | Bin 0 -> 5332 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@regex.beam | Bin 0 -> 2116 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@result.beam | Bin 0 -> 6868 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@set.beam | Bin 0 -> 4772 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@string.beam | Bin 0 -> 12480 bytes .../gleam_stdlib/ebin/gleam@string_builder.beam | Bin 0 -> 4152 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@uri.beam | Bin 0 -> 9524 bytes .../dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app | 7 + .../dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam | Bin 0 -> 28356 bytes .../include/gleam@dynamic_DecodeError.hrl | 5 + .../include/gleam@iterator_Iterator.hrl | 1 + .../gleam_stdlib/include/gleam@iterator_Next.hrl | 1 + .../gleam_stdlib/include/gleam@queue_Queue.hrl | 1 + .../include/gleam@regex_CompileError.hrl | 1 + .../gleam_stdlib/include/gleam@regex_Match.hrl | 4 + .../gleam_stdlib/include/gleam@regex_Options.hrl | 1 + .../erlang/gleam_stdlib/include/gleam@set_Set.hrl | 1 + .../erlang/gleam_stdlib/include/gleam@uri_Uri.hrl | 9 + aoc2023/build/dev/erlang/gleam_version | 1 + .../glint/_gleam_artefacts/gleam@@compile.erl | 157 + .../dev/erlang/glint/_gleam_artefacts/glint.cache | Bin 0 -> 18783 bytes .../erlang/glint/_gleam_artefacts/glint.cache_meta | Bin 0 -> 278 bytes .../dev/erlang/glint/_gleam_artefacts/glint.erl | 513 + .../erlang/glint/_gleam_artefacts/glint@flag.cache | Bin 0 -> 20298 bytes .../glint/_gleam_artefacts/glint@flag.cache_meta | Bin 0 -> 214 bytes .../erlang/glint/_gleam_artefacts/glint@flag.erl | 523 + .../_gleam_artefacts/glint@flag@constraint.cache | Bin 0 -> 1675 bytes .../glint@flag@constraint.cache_meta | Bin 0 -> 116 bytes .../_gleam_artefacts/glint@flag@constraint.erl | 68 + aoc2023/build/dev/erlang/glint/ebin/glint.app | 10 + aoc2023/build/dev/erlang/glint/ebin/glint.beam | Bin 0 -> 20208 bytes .../build/dev/erlang/glint/ebin/glint@flag.beam | Bin 0 -> 22116 bytes .../erlang/glint/ebin/glint@flag@constraint.beam | Bin 0 -> 3976 bytes .../dev/erlang/glint/include/glint@flag_Flag.hrl | 1 + .../glint/include/glint@flag_FlagBuilder.hrl | 6 + .../erlang/glint/include/glint@flag_Internal.hrl | 4 + .../dev/erlang/glint/include/glint_Command.hrl | 5 + .../erlang/glint/include/glint_CommandInput.hrl | 4 + .../dev/erlang/glint/include/glint_Config.hrl | 4 + .../build/dev/erlang/glint/include/glint_Glint.hrl | 5 + .../dev/erlang/glint/include/glint_PrettyHelp.hrl | 5 + .../build/dev/erlang/glint/include/glint_Stub.hrl | 6 + aoc2023/build/dev/erlang/pqueue/LICENSE | 21 + aoc2023/build/dev/erlang/pqueue/README.markdown | 31 + .../prod/lib/.rebar3/rebar_compiler_erl/source.dag | Bin 0 -> 492 bytes aoc2023/build/dev/erlang/pqueue/doc/edoc-info | 3 + aoc2023/build/dev/erlang/pqueue/doc/erlang.png | Bin 0 -> 2109 bytes aoc2023/build/dev/erlang/pqueue/doc/index.html | 17 + .../build/dev/erlang/pqueue/doc/modules-frame.html | 15 + .../dev/erlang/pqueue/doc/overview-summary.html | 16 + aoc2023/build/dev/erlang/pqueue/doc/pqueue.html | 166 + aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html | 143 + aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html | 162 + aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html | 205 + aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css | 55 + aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app | 6 + aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam | Bin 0 -> 87040 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam | Bin 0 -> 21608 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam | Bin 0 -> 14272 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam | Bin 0 -> 1219668 bytes aoc2023/build/dev/erlang/pqueue/rebar.config | 14 + aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src | 10 + aoc2023/build/dev/erlang/pqueue/src/pqueue.erl | 2246 + aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl | 483 + aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl | 404 + aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl | 11662 ++++ .../build/dev/erlang/pqueue/src/pqueue_test.hrl | 49 + .../build/dev/erlang/pqueue/test/pqueue_proper.erl | 156 + aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl | 183 + .../simplifile/_gleam_artefacts/gleam@@compile.erl | 157 + .../simplifile/_gleam_artefacts/simplifile.cache | Bin 0 -> 20340 bytes .../_gleam_artefacts/simplifile.cache_meta | Bin 0 -> 110 bytes .../simplifile/_gleam_artefacts/simplifile.erl | 287 + .../simplifile/_gleam_artefacts/simplifile_erl.erl | 70 + .../simplifile/_gleam_artefacts/simplifile_js.mjs | 102 + .../dev/erlang/simplifile/ebin/simplifile.app | 7 + .../dev/erlang/simplifile/ebin/simplifile.beam | Bin 0 -> 10420 bytes .../dev/erlang/simplifile/ebin/simplifile_erl.beam | Bin 0 -> 4536 bytes .../snag/_gleam_artefacts/gleam@@compile.erl | 157 + .../dev/erlang/snag/_gleam_artefacts/snag.cache | Bin 0 -> 3753 bytes .../erlang/snag/_gleam_artefacts/snag.cache_meta | Bin 0 -> 125 bytes .../dev/erlang/snag/_gleam_artefacts/snag.erl | 74 + aoc2023/build/dev/erlang/snag/ebin/snag.app | 7 + aoc2023/build/dev/erlang/snag/ebin/snag.beam | Bin 0 -> 3648 bytes .../build/dev/erlang/snag/include/snag_Snag.hrl | 1 + .../erlang/tom/_gleam_artefacts/gleam@@compile.erl | 157 + .../dev/erlang/tom/_gleam_artefacts/tom.cache | Bin 0 -> 33321 bytes .../dev/erlang/tom/_gleam_artefacts/tom.cache_meta | Bin 0 -> 140 bytes .../build/dev/erlang/tom/_gleam_artefacts/tom.erl | 2142 + aoc2023/build/dev/erlang/tom/ebin/tom.app | 7 + aoc2023/build/dev/erlang/tom/ebin/tom.beam | Bin 0 -> 70968 bytes .../dev/erlang/tom/include/tom_DateTimeValue.hrl | 5 + .../build/dev/erlang/tom/include/tom_DateValue.hrl | 1 + .../dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl | 1 + .../build/dev/erlang/tom/include/tom_NotFound.hrl | 1 + .../build/dev/erlang/tom/include/tom_Offset.hrl | 5 + .../build/dev/erlang/tom/include/tom_TimeValue.hrl | 6 + .../dev/erlang/tom/include/tom_Unexpected.hrl | 1 + .../build/dev/erlang/tom/include/tom_WrongType.hrl | 5 + aoc2023/build/dev/javascript/gleam.lock | 0 .../erlang/adglent/_gleam_artefacts/adglent.cache | Bin 0 -> 2397 bytes .../adglent/_gleam_artefacts/adglent.cache_meta | Bin 0 -> 85 bytes .../adglent/_gleam_artefacts/adglent@day.cache | Bin 0 -> 583 bytes .../_gleam_artefacts/adglent@day.cache_meta | Bin 0 -> 293 bytes .../adglent/_gleam_artefacts/adglent@init.cache | Bin 0 -> 581 bytes .../_gleam_artefacts/adglent@init.cache_meta | Bin 0 -> 231 bytes .../adglent/_gleam_artefacts/priv@aoc_client.cache | Bin 0 -> 468 bytes .../_gleam_artefacts/priv@aoc_client.cache_meta | Bin 0 -> 131 bytes .../adglent/_gleam_artefacts/priv@errors.cache | Bin 0 -> 1514 bytes .../_gleam_artefacts/priv@errors.cache_meta | Bin 0 -> 85 bytes .../adglent/_gleam_artefacts/priv@prompt.cache | Bin 0 -> 1512 bytes .../_gleam_artefacts/priv@prompt.cache_meta | Bin 0 -> 69 bytes .../adglent/_gleam_artefacts/priv@template.cache | Bin 0 -> 438 bytes .../_gleam_artefacts/priv@template.cache_meta | Bin 0 -> 67 bytes .../_gleam_artefacts/priv@templates@solution.cache | Bin 0 -> 818 bytes .../priv@templates@solution.cache_meta | Bin 0 -> 29 bytes .../priv@templates@test_main.cache | Bin 0 -> 380 bytes .../priv@templates@test_main.cache_meta | Bin 0 -> 29 bytes .../priv@templates@testfile_gleeunit.cache | Bin 0 -> 1293 bytes .../priv@templates@testfile_gleeunit.cache_meta | Bin 0 -> 29 bytes .../priv@templates@testfile_showtime.cache | Bin 0 -> 1300 bytes .../priv@templates@testfile_showtime.cache_meta | Bin 0 -> 29 bytes .../adglent/_gleam_artefacts/priv@toml.cache | Bin 0 -> 1712 bytes .../adglent/_gleam_artefacts/priv@toml.cache_meta | Bin 0 -> 60 bytes .../erlang/adglent/_gleam_artefacts/showtime.cache | Bin 0 -> 1068 bytes .../adglent/_gleam_artefacts/showtime.cache_meta | Bin 0 -> 439 bytes .../showtime@internal@common@cli.cache | Bin 0 -> 879 bytes .../showtime@internal@common@cli.cache_meta | Bin 0 -> 29 bytes ...time@internal@common@common_event_handler.cache | Bin 0 -> 3269 bytes ...internal@common@common_event_handler.cache_meta | Bin 0 -> 89 bytes .../showtime@internal@common@test_result.cache | Bin 0 -> 15268 bytes ...showtime@internal@common@test_result.cache_meta | Bin 0 -> 67 bytes .../showtime@internal@common@test_suite.cache | Bin 0 -> 8896 bytes .../showtime@internal@common@test_suite.cache_meta | Bin 0 -> 129 bytes .../showtime@internal@erlang@discover.cache | Bin 0 -> 1929 bytes .../showtime@internal@erlang@discover.cache_meta | Bin 0 -> 227 bytes .../showtime@internal@erlang@event_handler.cache | Bin 0 -> 1538 bytes ...owtime@internal@erlang@event_handler.cache_meta | Bin 0 -> 292 bytes .../showtime@internal@erlang@module_handler.cache | Bin 0 -> 1135 bytes ...wtime@internal@erlang@module_handler.cache_meta | Bin 0 -> 179 bytes .../showtime@internal@erlang@runner.cache | Bin 0 -> 1642 bytes .../showtime@internal@erlang@runner.cache_meta | Bin 0 -> 195 bytes .../showtime@internal@reports@compare.cache | Bin 0 -> 479 bytes .../showtime@internal@reports@compare.cache_meta | Bin 0 -> 140 bytes .../showtime@internal@reports@formatter.cache | Bin 0 -> 5112 bytes .../showtime@internal@reports@formatter.cache_meta | Bin 0 -> 421 bytes .../showtime@internal@reports@styles.cache | Bin 0 -> 3189 bytes .../showtime@internal@reports@styles.cache_meta | Bin 0 -> 118 bytes .../showtime@internal@reports@table.cache | Bin 0 -> 5512 bytes .../showtime@internal@reports@table.cache_meta | Bin 0 -> 144 bytes .../_gleam_artefacts/showtime@tests@meta.cache | Bin 0 -> 899 bytes .../showtime@tests@meta.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/showtime@tests@should.cache | Bin 0 -> 5540 bytes .../showtime@tests@should.cache_meta | Bin 0 -> 76 bytes .../_gleam_artefacts/showtime@tests@test.cache | Bin 0 -> 3672 bytes .../showtime@tests@test.cache_meta | Bin 0 -> 101 bytes .../erlang/aoc2023/_gleam_artefacts/aoc2023.cache | Bin 0 -> 407 bytes .../aoc2023/_gleam_artefacts/aoc2023.cache_meta | Bin 0 -> 68 bytes .../aoc2023/_gleam_artefacts/aoc2023_test.cache | Bin 0 -> 305 bytes .../_gleam_artefacts/aoc2023_test.cache_meta | Bin 0 -> 45 bytes .../_gleam_artefacts/day10@day10_test.cache | Bin 0 -> 1847 bytes .../_gleam_artefacts/day10@day10_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day10@solve.cache | Bin 0 -> 5449 bytes .../_gleam_artefacts/day10@solve.cache_meta | Bin 0 -> 168 bytes .../_gleam_artefacts/day11@day11_test.cache | Bin 0 -> 1935 bytes .../_gleam_artefacts/day11@day11_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day11@solve.cache | Bin 0 -> 2063 bytes .../_gleam_artefacts/day11@solve.cache_meta | Bin 0 -> 115 bytes .../_gleam_artefacts/day12@day12_test.cache | Bin 0 -> 1730 bytes .../_gleam_artefacts/day12@day12_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day12@solve.cache | Bin 0 -> 1777 bytes .../_gleam_artefacts/day12@solve.cache_meta | Bin 0 -> 157 bytes .../_gleam_artefacts/day13@day13_test.cache | Bin 0 -> 1996 bytes .../_gleam_artefacts/day13@day13_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day13@solve.cache | Bin 0 -> 2417 bytes .../_gleam_artefacts/day13@solve.cache_meta | Bin 0 -> 116 bytes .../_gleam_artefacts/day14@day14_test.cache | Bin 0 -> 1931 bytes .../_gleam_artefacts/day14@day14_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day14@solve.cache | Bin 0 -> 2257 bytes .../_gleam_artefacts/day14@solve.cache_meta | Bin 0 -> 152 bytes .../_gleam_artefacts/day15@day15_test.cache | Bin 0 -> 1819 bytes .../_gleam_artefacts/day15@day15_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day15@solve.cache | Bin 0 -> 3206 bytes .../_gleam_artefacts/day15@solve.cache_meta | Bin 0 -> 153 bytes .../_gleam_artefacts/day16@day16_test.cache | Bin 0 -> 1914 bytes .../_gleam_artefacts/day16@day16_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day16@solve.cache | Bin 0 -> 2442 bytes .../_gleam_artefacts/day16@solve.cache_meta | Bin 0 -> 176 bytes .../_gleam_artefacts/day17@day17_test.cache | Bin 0 -> 1789 bytes .../_gleam_artefacts/day17@day17_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day17@solve.cache | Bin 0 -> 4203 bytes .../_gleam_artefacts/day17@solve.cache_meta | Bin 0 -> 223 bytes .../_gleam_artefacts/day18@day18_test.cache | Bin 0 -> 2116 bytes .../_gleam_artefacts/day18@day18_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day18@solve.cache | Bin 0 -> 3614 bytes .../_gleam_artefacts/day18@solve.cache_meta | Bin 0 -> 154 bytes .../_gleam_artefacts/day19@day19_test.cache | Bin 0 -> 2440 bytes .../_gleam_artefacts/day19@day19_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day19@solve.cache | Bin 0 -> 9029 bytes .../_gleam_artefacts/day19@solve.cache_meta | Bin 0 -> 191 bytes .../aoc2023/_gleam_artefacts/day1@day1_test.cache | Bin 0 -> 1836 bytes .../_gleam_artefacts/day1@day1_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache | Bin 0 -> 1176 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache_meta | Bin 0 -> 134 bytes .../_gleam_artefacts/day20@day20_test.cache | Bin 0 -> 1864 bytes .../_gleam_artefacts/day20@day20_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day20@solve.cache | Bin 0 -> 6718 bytes .../_gleam_artefacts/day20@solve.cache_meta | Bin 0 -> 192 bytes .../_gleam_artefacts/day21@day21_test.cache | Bin 0 -> 1500 bytes .../_gleam_artefacts/day21@day21_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day21@solve.cache | Bin 0 -> 551 bytes .../_gleam_artefacts/day21@solve.cache_meta | Bin 0 -> 60 bytes .../_gleam_artefacts/day22@day22_test.cache | Bin 0 -> 1850 bytes .../_gleam_artefacts/day22@day22_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day22@solve.cache | Bin 0 -> 6239 bytes .../_gleam_artefacts/day22@solve.cache_meta | Bin 0 -> 227 bytes .../_gleam_artefacts/day23@day23_test.cache | Bin 0 -> 2795 bytes .../_gleam_artefacts/day23@day23_test.cache_meta | Bin 0 -> 110 bytes .../aoc2023/_gleam_artefacts/day23@solve.cache | Bin 0 -> 5955 bytes .../_gleam_artefacts/day23@solve.cache_meta | Bin 0 -> 213 bytes .../aoc2023/_gleam_artefacts/day2@day2_test.cache | Bin 0 -> 2474 bytes .../_gleam_artefacts/day2@day2_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache | Bin 0 -> 1442 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache_meta | Bin 0 -> 115 bytes .../aoc2023/_gleam_artefacts/day3@day3_test.cache | Bin 0 -> 1898 bytes .../_gleam_artefacts/day3@day3_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache | Bin 0 -> 5669 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache_meta | Bin 0 -> 152 bytes .../aoc2023/_gleam_artefacts/day4@day4_test.cache | Bin 0 -> 2259 bytes .../_gleam_artefacts/day4@day4_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache | Bin 0 -> 2090 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache_meta | Bin 0 -> 208 bytes .../aoc2023/_gleam_artefacts/day5@day5_test.cache | Bin 0 -> 2381 bytes .../_gleam_artefacts/day5@day5_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache | Bin 0 -> 5112 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache_meta | Bin 0 -> 157 bytes .../aoc2023/_gleam_artefacts/day6@day6_test.cache | Bin 0 -> 1790 bytes .../_gleam_artefacts/day6@day6_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache | Bin 0 -> 1922 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache_meta | Bin 0 -> 135 bytes .../aoc2023/_gleam_artefacts/day7@day7_test.cache | Bin 0 -> 1803 bytes .../_gleam_artefacts/day7@day7_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache | Bin 0 -> 3185 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache_meta | Bin 0 -> 174 bytes .../aoc2023/_gleam_artefacts/day8@day8_test.cache | Bin 0 -> 1865 bytes .../_gleam_artefacts/day8@day8_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache | Bin 0 -> 1810 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache_meta | Bin 0 -> 236 bytes .../aoc2023/_gleam_artefacts/day9@day9_test.cache | Bin 0 -> 1791 bytes .../_gleam_artefacts/day9@day9_test.cache_meta | Bin 0 -> 109 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache | Bin 0 -> 1830 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache_meta | Bin 0 -> 115 bytes .../_gleam_artefacts/utilities@array2d.cache | Bin 0 -> 3025 bytes .../_gleam_artefacts/utilities@array2d.cache_meta | Bin 0 -> 122 bytes .../aoc2023/_gleam_artefacts/utilities@memo.cache | Bin 0 -> 3200 bytes .../_gleam_artefacts/utilities@memo.cache_meta | Bin 0 -> 118 bytes .../_gleam_artefacts/utilities@prioqueue.cache | Bin 0 -> 3154 bytes .../utilities@prioqueue.cache_meta | Bin 0 -> 47 bytes .../lsp/erlang/gap/_gleam_artefacts/gap.cache | Bin 0 -> 6093 bytes .../lsp/erlang/gap/_gleam_artefacts/gap.cache_meta | Bin 0 -> 282 bytes .../gap/_gleam_artefacts/gap@comparison.cache | Bin 0 -> 2544 bytes .../gap/_gleam_artefacts/gap@comparison.cache_meta | Bin 0 -> 29 bytes .../erlang/gap/_gleam_artefacts/gap@myers.cache | Bin 0 -> 4862 bytes .../gap/_gleam_artefacts/gap@myers.cache_meta | Bin 0 -> 47 bytes .../_gleam_artefacts/gap@styled_comparison.cache | Bin 0 -> 946 bytes .../gap@styled_comparison.cache_meta | Bin 0 -> 29 bytes .../erlang/gap/_gleam_artefacts/gap@styling.cache | Bin 0 -> 8073 bytes .../gap/_gleam_artefacts/gap@styling.cache_meta | Bin 0 -> 166 bytes aoc2023/build/lsp/erlang/gleam.lock | 0 .../_gleam_artefacts/gleam_community@ansi.cache | Bin 0 -> 62994 bytes .../gleam_community@ansi.cache_meta | Bin 0 -> 114 bytes .../_gleam_artefacts/gleam_community@colour.cache | Bin 0 -> 28196 bytes .../gleam_community@colour.cache_meta | Bin 0 -> 123 bytes .../gleam_community@colour@accessibility.cache | Bin 0 -> 3151 bytes ...gleam_community@colour@accessibility.cache_meta | Bin 0 -> 96 bytes .../gleam_community@maths@arithmetics.cache | Bin 0 -> 14527 bytes .../gleam_community@maths@arithmetics.cache_meta | Bin 0 -> 183 bytes .../gleam_community@maths@combinatorics.cache | Bin 0 -> 8209 bytes .../gleam_community@maths@combinatorics.cache_meta | Bin 0 -> 64 bytes .../gleam_community@maths@conversion.cache | Bin 0 -> 4583 bytes .../gleam_community@maths@conversion.cache_meta | Bin 0 -> 46 bytes .../gleam_community@maths@elementary.cache | Bin 0 -> 30776 bytes .../gleam_community@maths@elementary.cache_meta | Bin 0 -> 66 bytes .../gleam_community@maths@metrics.cache | Bin 0 -> 12100 bytes .../gleam_community@maths@metrics.cache_meta | Bin 0 -> 284 bytes .../gleam_community@maths@piecewise.cache | Bin 0 -> 34044 bytes .../gleam_community@maths@piecewise.cache_meta | Bin 0 -> 201 bytes .../gleam_community@maths@predicates.cache | Bin 0 -> 8778 bytes .../gleam_community@maths@predicates.cache_meta | Bin 0 -> 222 bytes .../gleam_community@maths@sequences.cache | Bin 0 -> 6493 bytes .../gleam_community@maths@sequences.cache_meta | Bin 0 -> 166 bytes .../gleam_community@maths@special.cache | Bin 0 -> 3907 bytes .../gleam_community@maths@special.cache_meta | Bin 0 -> 166 bytes .../_gleam_artefacts/gleam@erlang.cache | Bin 0 -> 8918 bytes .../_gleam_artefacts/gleam@erlang.cache_meta | Bin 0 -> 122 bytes .../_gleam_artefacts/gleam@erlang@atom.cache | Bin 0 -> 2901 bytes .../_gleam_artefacts/gleam@erlang@atom.cache_meta | Bin 0 -> 50 bytes .../_gleam_artefacts/gleam@erlang@charlist.cache | Bin 0 -> 869 bytes .../gleam@erlang@charlist.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@erlang@file.cache | Bin 0 -> 28539 bytes .../_gleam_artefacts/gleam@erlang@file.cache_meta | Bin 0 -> 72 bytes .../_gleam_artefacts/gleam@erlang@node.cache | Bin 0 -> 3094 bytes .../_gleam_artefacts/gleam@erlang@node.cache_meta | Bin 0 -> 54 bytes .../_gleam_artefacts/gleam@erlang@os.cache | Bin 0 -> 3322 bytes .../_gleam_artefacts/gleam@erlang@os.cache_meta | Bin 0 -> 46 bytes .../_gleam_artefacts/gleam@erlang@process.cache | Bin 0 -> 31555 bytes .../gleam@erlang@process.cache_meta | Bin 0 -> 115 bytes .../gleam_http/_gleam_artefacts/gleam@http.cache | Bin 0 -> 15465 bytes .../_gleam_artefacts/gleam@http.cache_meta | Bin 0 -> 149 bytes .../_gleam_artefacts/gleam@http@cookie.cache | Bin 0 -> 4344 bytes .../_gleam_artefacts/gleam@http@cookie.cache_meta | Bin 0 -> 161 bytes .../_gleam_artefacts/gleam@http@request.cache | Bin 0 -> 8254 bytes .../_gleam_artefacts/gleam@http@request.cache_meta | Bin 0 -> 195 bytes .../_gleam_artefacts/gleam@http@response.cache | Bin 0 -> 5271 bytes .../gleam@http@response.cache_meta | Bin 0 -> 150 bytes .../_gleam_artefacts/gleam@http@service.cache | Bin 0 -> 3225 bytes .../_gleam_artefacts/gleam@http@service.cache_meta | Bin 0 -> 138 bytes .../gleam_httpc/_gleam_artefacts/gleam@httpc.cache | Bin 0 -> 4263 bytes .../_gleam_artefacts/gleam@httpc.cache_meta | Bin 0 -> 199 bytes .../_gleam_artefacts/gleam@otp@actor.cache | Bin 0 -> 13713 bytes .../_gleam_artefacts/gleam@otp@actor.cache_meta | Bin 0 -> 196 bytes .../gleam@otp@intensity_tracker.cache | Bin 0 -> 2473 bytes .../gleam@otp@intensity_tracker.cache_meta | Bin 0 -> 47 bytes .../_gleam_artefacts/gleam@otp@port.cache | Bin 0 -> 354 bytes .../_gleam_artefacts/gleam@otp@port.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@otp@supervisor.cache | Bin 0 -> 16820 bytes .../gleam@otp@supervisor.cache_meta | Bin 0 -> 200 bytes .../_gleam_artefacts/gleam@otp@system.cache | Bin 0 -> 5899 bytes .../_gleam_artefacts/gleam@otp@system.cache_meta | Bin 0 -> 103 bytes .../_gleam_artefacts/gleam@otp@task.cache | Bin 0 -> 4453 bytes .../_gleam_artefacts/gleam@otp@task.cache_meta | Bin 0 -> 78 bytes .../gleam_otp/_gleam_artefacts/gleam_otp.cache | Bin 0 -> 728 bytes .../_gleam_artefacts/gleam_otp.cache_meta | Bin 0 -> 130 bytes .../gleam_stdlib/_gleam_artefacts/gleam@base.cache | Bin 0 -> 1301 bytes .../_gleam_artefacts/gleam@base.cache_meta | Bin 0 -> 52 bytes .../_gleam_artefacts/gleam@bit_array.cache | Bin 0 -> 5029 bytes .../_gleam_artefacts/gleam@bit_array.cache_meta | Bin 0 -> 49 bytes .../_gleam_artefacts/gleam@bit_builder.cache | Bin 0 -> 4262 bytes .../_gleam_artefacts/gleam@bit_builder.cache_meta | Bin 0 -> 84 bytes .../_gleam_artefacts/gleam@bit_string.cache | Bin 0 -> 2010 bytes .../_gleam_artefacts/gleam@bit_string.cache_meta | Bin 0 -> 52 bytes .../gleam_stdlib/_gleam_artefacts/gleam@bool.cache | Bin 0 -> 7182 bytes .../_gleam_artefacts/gleam@bool.cache_meta | Bin 0 -> 48 bytes .../_gleam_artefacts/gleam@bytes_builder.cache | Bin 0 -> 6332 bytes .../gleam@bytes_builder.cache_meta | Bin 0 -> 98 bytes .../gleam_stdlib/_gleam_artefacts/gleam@dict.cache | Bin 0 -> 12366 bytes .../_gleam_artefacts/gleam@dict.cache_meta | Bin 0 -> 49 bytes .../_gleam_artefacts/gleam@dynamic.cache | Bin 0 -> 49488 bytes .../_gleam_artefacts/gleam@dynamic.cache_meta | Bin 0 -> 173 bytes .../_gleam_artefacts/gleam@float.cache | Bin 0 -> 11443 bytes .../_gleam_artefacts/gleam@float.cache_meta | Bin 0 -> 48 bytes .../_gleam_artefacts/gleam@function.cache | Bin 0 -> 5891 bytes .../_gleam_artefacts/gleam@function.cache_meta | Bin 0 -> 29 bytes .../gleam_stdlib/_gleam_artefacts/gleam@int.cache | Bin 0 -> 18231 bytes .../_gleam_artefacts/gleam@int.cache_meta | Bin 0 -> 67 bytes .../gleam_stdlib/_gleam_artefacts/gleam@io.cache | Bin 0 -> 2936 bytes .../_gleam_artefacts/gleam@io.cache_meta | Bin 0 -> 49 bytes .../_gleam_artefacts/gleam@iterator.cache | Bin 0 -> 38551 bytes .../_gleam_artefacts/gleam@iterator.cache_meta | Bin 0 -> 141 bytes .../gleam_stdlib/_gleam_artefacts/gleam@list.cache | Bin 0 -> 46400 bytes .../_gleam_artefacts/gleam@list.cache_meta | Bin 0 -> 120 bytes .../gleam_stdlib/_gleam_artefacts/gleam@map.cache | Bin 0 -> 4813 bytes .../_gleam_artefacts/gleam@map.cache_meta | Bin 0 -> 67 bytes .../_gleam_artefacts/gleam@option.cache | Bin 0 -> 7376 bytes .../_gleam_artefacts/gleam@option.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@order.cache | Bin 0 -> 2807 bytes .../_gleam_artefacts/gleam@order.cache_meta | Bin 0 -> 29 bytes .../gleam_stdlib/_gleam_artefacts/gleam@pair.cache | Bin 0 -> 1961 bytes .../_gleam_artefacts/gleam@pair.cache_meta | Bin 0 -> 29 bytes .../_gleam_artefacts/gleam@queue.cache | Bin 0 -> 7173 bytes .../_gleam_artefacts/gleam@queue.cache_meta | Bin 0 -> 47 bytes .../_gleam_artefacts/gleam@regex.cache | Bin 0 -> 6995 bytes .../_gleam_artefacts/gleam@regex.cache_meta | Bin 0 -> 49 bytes .../_gleam_artefacts/gleam@result.cache | Bin 0 -> 10470 bytes .../_gleam_artefacts/gleam@result.cache_meta | Bin 0 -> 47 bytes .../gleam_stdlib/_gleam_artefacts/gleam@set.cache | Bin 0 -> 6578 bytes .../_gleam_artefacts/gleam@set.cache_meta | Bin 0 -> 85 bytes .../_gleam_artefacts/gleam@string.cache | Bin 0 -> 21826 bytes .../_gleam_artefacts/gleam@string.cache_meta | Bin 0 -> 136 bytes .../_gleam_artefacts/gleam@string_builder.cache | Bin 0 -> 10647 bytes .../gleam@string_builder.cache_meta | Bin 0 -> 47 bytes .../gleam_stdlib/_gleam_artefacts/gleam@uri.cache | Bin 0 -> 8321 bytes .../_gleam_artefacts/gleam@uri.cache_meta | Bin 0 -> 132 bytes aoc2023/build/lsp/erlang/gleam_version | 1 + .../lsp/erlang/glint/_gleam_artefacts/glint.cache | Bin 0 -> 18769 bytes .../erlang/glint/_gleam_artefacts/glint.cache_meta | Bin 0 -> 278 bytes .../erlang/glint/_gleam_artefacts/glint@flag.cache | Bin 0 -> 20304 bytes .../glint/_gleam_artefacts/glint@flag.cache_meta | Bin 0 -> 214 bytes .../_gleam_artefacts/glint@flag@constraint.cache | Bin 0 -> 1675 bytes .../glint@flag@constraint.cache_meta | Bin 0 -> 116 bytes .../simplifile/_gleam_artefacts/simplifile.cache | Bin 0 -> 20315 bytes .../_gleam_artefacts/simplifile.cache_meta | Bin 0 -> 110 bytes .../lsp/erlang/snag/_gleam_artefacts/snag.cache | Bin 0 -> 3751 bytes .../erlang/snag/_gleam_artefacts/snag.cache_meta | Bin 0 -> 125 bytes .../lsp/erlang/tom/_gleam_artefacts/tom.cache | Bin 0 -> 33280 bytes .../lsp/erlang/tom/_gleam_artefacts/tom.cache_meta | Bin 0 -> 140 bytes aoc2023/build/lsp/javascript/gleam.lock | 0 aoc2023/build/packages/adglent/LICENSE | 201 + aoc2023/build/packages/adglent/README.md | 115 + aoc2023/build/packages/adglent/gleam.toml | 29 + .../packages/adglent/include/adglent_Example.hrl | 1 + .../adglent/include/priv@toml_TomGetError.hrl | 1 + .../adglent/include/priv@toml_TomParseError.hrl | 1 + ...ternal@common@common_event_handler_Finished.hrl | 1 + ...al@common@common_event_handler_HandlerState.hrl | 5 + ...howtime@internal@common@test_result_ArgList.hrl | 1 + ...ime@internal@common@test_result_AssertEqual.hrl | 3 + ...ime@internal@common@test_result_AssertMatch.hrl | 3 + ...@internal@common@test_result_AssertNotEqual.hrl | 3 + ...internal@common@test_result_ErlangException.hrl | 6 + ...wtime@internal@common@test_result_ErrorInfo.hrl | 3 + ...owtime@internal@common@test_result_Expected.hrl | 1 + ...time@internal@common@test_result_Expression.hrl | 1 + .../showtime@internal@common@test_result_File.hrl | 1 + ...nternal@common@test_result_GenericException.hrl | 1 + ...ime@internal@common@test_result_GleamAssert.hrl | 1 + ...time@internal@common@test_result_GleamError.hrl | 3 + ...howtime@internal@common@test_result_Ignored.hrl | 1 + ...wtime@internal@common@test_result_LetAssert.hrl | 7 + .../showtime@internal@common@test_result_Line.hrl | 1 + ...showtime@internal@common@test_result_Module.hrl | 1 + .../showtime@internal@common@test_result_Num.hrl | 1 + ...howtime@internal@common@test_result_Pattern.hrl | 1 + ...time@internal@common@test_result_ReasonLine.hrl | 1 + ...ernal@common@test_result_TestFunctionReturn.hrl | 4 + .../showtime@internal@common@test_result_Trace.hrl | 5 + ...wtime@internal@common@test_result_TraceList.hrl | 3 + ...ime@internal@common@test_result_TraceModule.hrl | 6 + .../showtime@internal@common@test_result_Value.hrl | 1 + ...internal@common@test_suite_CompletedTestRun.hrl | 6 + ...showtime@internal@common@test_suite_EndTest.hrl | 6 + ...wtime@internal@common@test_suite_EndTestRun.hrl | 1 + ...ime@internal@common@test_suite_EndTestSuite.hrl | 3 + ...e@internal@common@test_suite_OngoingTestRun.hrl | 4 + ...owtime@internal@common@test_suite_StartTest.hrl | 4 + ...e@internal@common@test_suite_StartTestSuite.hrl | 3 + ...ime@internal@common@test_suite_TestFunction.hrl | 1 + ...wtime@internal@common@test_suite_TestModule.hrl | 1 + ...owtime@internal@common@test_suite_TestSuite.hrl | 4 + .../showtime@internal@reports@table_AlignLeft.hrl | 4 + ...me@internal@reports@table_AlignLeftOverflow.hrl | 4 + .../showtime@internal@reports@table_AlignRight.hrl | 4 + ...e@internal@reports@table_AlignRightOverflow.hrl | 4 + .../showtime@internal@reports@table_Aligned.hrl | 1 + .../showtime@internal@reports@table_Content.hrl | 1 + .../showtime@internal@reports@table_Separator.hrl | 1 + ...owtime@internal@reports@table_StyledContent.hrl | 1 + .../showtime@internal@reports@table_Table.hrl | 4 + .../adglent/include/showtime@tests@meta_Meta.hrl | 1 + .../adglent/include/showtime@tests@should_Eq.hrl | 5 + .../adglent/include/showtime@tests@should_Fail.hrl | 1 + .../include/showtime@tests@should_IsError.hrl | 4 + .../adglent/include/showtime@tests@should_IsOk.hrl | 4 + .../include/showtime@tests@should_NotEq.hrl | 5 + .../include/showtime@tests@test_MetaShould.hrl | 4 + .../adglent/include/showtime@tests@test_Test.hrl | 4 + aoc2023/build/packages/adglent/src/adglent.app.src | 45 + aoc2023/build/packages/adglent/src/adglent.erl | 55 + aoc2023/build/packages/adglent/src/adglent.gleam | 56 + .../build/packages/adglent/src/adglent/day.gleam | 126 + .../build/packages/adglent/src/adglent/init.gleam | 110 + aoc2023/build/packages/adglent/src/adglent@day.erl | 278 + .../build/packages/adglent/src/adglent@init.erl | 142 + aoc2023/build/packages/adglent/src/adglent_ffi.erl | 12 + .../packages/adglent/src/priv/aoc_client.gleam | 37 + .../build/packages/adglent/src/priv/errors.gleam | 54 + .../build/packages/adglent/src/priv/prompt.gleam | 38 + .../build/packages/adglent/src/priv/template.gleam | 18 + .../adglent/src/priv/templates/solution.gleam | 27 + .../adglent/src/priv/templates/test_main.gleam | 7 + .../src/priv/templates/testfile_gleeunit.gleam | 41 + .../src/priv/templates/testfile_showtime.gleam | 41 + aoc2023/build/packages/adglent/src/priv/toml.gleam | 52 + .../build/packages/adglent/src/priv@aoc_client.erl | 61 + aoc2023/build/packages/adglent/src/priv@errors.erl | 74 + aoc2023/build/packages/adglent/src/priv@prompt.erl | 53 + .../build/packages/adglent/src/priv@template.erl | 25 + .../adglent/src/priv@templates@solution.erl | 1 + .../adglent/src/priv@templates@test_main.erl | 1 + .../src/priv@templates@testfile_gleeunit.erl | 1 + .../src/priv@templates@testfile_showtime.erl | 1 + aoc2023/build/packages/adglent/src/priv@toml.erl | 83 + aoc2023/build/packages/adglent/src/showtime.erl | 155 + aoc2023/build/packages/adglent/src/showtime.gleam | 116 + .../adglent/src/showtime/internal/common/cli.gleam | 5 + .../internal/common/common_event_handler.gleam | 101 + .../src/showtime/internal/common/test_result.gleam | 119 + .../src/showtime/internal/common/test_suite.gleam | 63 + .../src/showtime/internal/erlang/discover.gleam | 167 + .../showtime/internal/erlang/event_handler.gleam | 91 + .../showtime/internal/erlang/module_handler.gleam | 43 + .../src/showtime/internal/erlang/runner.gleam | 59 + .../src/showtime/internal/reports/compare.gleam | 42 + .../src/showtime/internal/reports/formatter.gleam | 480 + .../src/showtime/internal/reports/styles.gleam | 84 + .../src/showtime/internal/reports/table.gleam | 148 + .../packages/adglent/src/showtime/tests/meta.gleam | 3 + .../adglent/src/showtime/tests/should.gleam | 113 + .../packages/adglent/src/showtime/tests/test.gleam | 57 + .../adglent/src/showtime@internal@common@cli.erl | 8 + ...owtime@internal@common@common_event_handler.erl | 131 + .../src/showtime@internal@common@test_result.erl | 54 + .../src/showtime@internal@common@test_suite.erl | 30 + .../src/showtime@internal@erlang@discover.erl | 230 + .../src/showtime@internal@erlang@event_handler.erl | 76 + .../showtime@internal@erlang@module_handler.erl | 53 + .../src/showtime@internal@erlang@runner.erl | 46 + .../src/showtime@internal@reports@compare.erl | 61 + .../src/showtime@internal@reports@formatter.erl | 749 + .../src/showtime@internal@reports@styles.erl | 93 + .../src/showtime@internal@reports@table.erl | 229 + .../packages/adglent/src/showtime@tests@meta.erl | 8 + .../packages/adglent/src/showtime@tests@should.erl | 143 + .../packages/adglent/src/showtime@tests@test.erl | 57 + .../build/packages/adglent/src/showtime_ffi.erl | 187 + aoc2023/build/packages/gap/LICENSE | 201 + aoc2023/build/packages/gap/README.md | 202 + aoc2023/build/packages/gap/gleam.toml | 18 + .../gap/include/gap@comparison_ListComparison.hrl | 4 + .../packages/gap/include/gap@comparison_Match.hrl | 1 + .../gap/include/gap@comparison_NoMatch.hrl | 1 + .../include/gap@comparison_StringComparison.hrl | 4 + .../gap@styled_comparison_StyledComparison.hrl | 1 + .../build/packages/gap/include/gap@styling_All.hrl | 1 + .../gap/include/gap@styling_Highlighters.hrl | 5 + .../packages/gap/include/gap@styling_Part.hrl | 5 + .../packages/gap/include/gap@styling_Styling.hrl | 5 + aoc2023/build/packages/gap/src/gap.app.src | 13 + aoc2023/build/packages/gap/src/gap.erl | 538 + aoc2023/build/packages/gap/src/gap.gleam | 438 + .../build/packages/gap/src/gap/comparison.gleam | 22 + aoc2023/build/packages/gap/src/gap/myers.gleam | 122 + .../packages/gap/src/gap/styled_comparison.gleam | 4 + aoc2023/build/packages/gap/src/gap/styling.gleam | 233 + aoc2023/build/packages/gap/src/gap@comparison.erl | 15 + aoc2023/build/packages/gap/src/gap@myers.erl | 156 + .../packages/gap/src/gap@styled_comparison.erl | 8 + aoc2023/build/packages/gap/src/gap@styling.erl | 202 + aoc2023/build/packages/gap/src/gap_ffi.mjs | 431 + aoc2023/build/packages/gleam.lock | 0 .../build/packages/gleam_community_ansi/LICENCE | 190 + .../build/packages/gleam_community_ansi/README.md | 72 + .../build/packages/gleam_community_ansi/gleam.toml | 13 + .../src/gleam_community/ansi.gleam | 2317 + .../src/gleam_community@ansi.erl | 263 + .../src/gleam_community_ansi.app.src | 9 + .../build/packages/gleam_community_colour/LICENCE | 190 + .../packages/gleam_community_colour/README.md | 36 + .../packages/gleam_community_colour/gleam.toml | 11 + .../include/gleam_community@colour_Hsla.hrl | 1 + .../include/gleam_community@colour_Rgba.hrl | 1 + .../src/gleam_community/colour.gleam | 1126 + .../src/gleam_community/colour/accessibility.gleam | 173 + .../src/gleam_community@colour.erl | 511 + .../src/gleam_community@colour@accessibility.erl | 73 + .../src/gleam_community_colour.app.src | 9 + .../build/packages/gleam_community_maths/LICENCE | 190 + .../build/packages/gleam_community_maths/README.md | 59 + .../packages/gleam_community_maths/gleam.toml | 12 + .../src/gleam_community/maths/arithmetics.gleam | 618 + .../src/gleam_community/maths/combinatorics.gleam | 432 + .../src/gleam_community/maths/conversion.gleam | 183 + .../src/gleam_community/maths/elementary.gleam | 1256 + .../src/gleam_community/maths/metrics.gleam | 560 + .../src/gleam_community/maths/piecewise.gleam | 1228 + .../src/gleam_community/maths/predicates.gleam | 363 + .../src/gleam_community/maths/sequences.gleam | 302 + .../src/gleam_community/maths/special.gleam | 205 + .../src/gleam_community@maths@arithmetics.erl | 172 + .../src/gleam_community@maths@combinatorics.erl | 218 + .../src/gleam_community@maths@conversion.erl | 23 + .../src/gleam_community@maths@elementary.erl | 284 + .../src/gleam_community@maths@metrics.erl | 278 + .../src/gleam_community@maths@piecewise.erl | 553 + .../src/gleam_community@maths@predicates.erl | 118 + .../src/gleam_community@maths@sequences.erl | 199 + .../src/gleam_community@maths@special.erl | 157 + .../src/gleam_community_maths.app.src | 16 + .../packages/gleam_community_maths/src/maths.mjs | 95 + aoc2023/build/packages/gleam_erlang/LICENSE | 191 + aoc2023/build/packages/gleam_erlang/README.md | 37 + aoc2023/build/packages/gleam_erlang/gleam.toml | 18 + .../include/gleam@erlang@file_FileInfo.hrl | 15 + .../include/gleam@erlang@process_Abnormal.hrl | 1 + .../include/gleam@erlang@process_CalleeDown.hrl | 1 + .../include/gleam@erlang@process_Cancelled.hrl | 1 + .../include/gleam@erlang@process_ExitMessage.hrl | 4 + .../include/gleam@erlang@process_ProcessDown.hrl | 4 + .../gleam@erlang@process_ProcessMonitor.hrl | 1 + .../include/gleam@erlang@process_Subject.hrl | 4 + .../gleam@erlang_ApplicationFailedToStart.hrl | 4 + .../include/gleam@erlang_UnknownApplication.hrl | 1 + .../packages/gleam_erlang/src/gleam/erlang.gleam | 158 + .../gleam_erlang/src/gleam/erlang/atom.gleam | 79 + .../gleam_erlang/src/gleam/erlang/charlist.gleam | 25 + .../gleam_erlang/src/gleam/erlang/file.gleam | 737 + .../gleam_erlang/src/gleam/erlang/node.gleam | 62 + .../gleam_erlang/src/gleam/erlang/os.gleam | 95 + .../gleam_erlang/src/gleam/erlang/process.gleam | 744 + .../packages/gleam_erlang/src/gleam@erlang.erl | 90 + .../gleam_erlang/src/gleam@erlang@atom.erl | 26 + .../gleam_erlang/src/gleam@erlang@charlist.erl | 15 + .../gleam_erlang/src/gleam@erlang@file.erl | 190 + .../gleam_erlang/src/gleam@erlang@node.erl | 33 + .../packages/gleam_erlang/src/gleam@erlang@os.erl | 27 + .../gleam_erlang/src/gleam@erlang@process.erl | 374 + .../packages/gleam_erlang/src/gleam_erlang.app.src | 14 + .../packages/gleam_erlang/src/gleam_erlang_ffi.erl | 263 + aoc2023/build/packages/gleam_http/LICENSE | 191 + aoc2023/build/packages/gleam_http/README.md | 67 + aoc2023/build/packages/gleam_http/gleam.toml | 17 + .../include/gleam@http@cookie_Attributes.hrl | 8 + .../include/gleam@http@request_Request.hrl | 10 + .../include/gleam@http@response_Response.hrl | 5 + .../include/gleam@http_MoreRequiredForBody.hrl | 5 + .../include/gleam@http_MoreRequiredForHeaders.hrl | 4 + .../include/gleam@http_MultipartBody.hrl | 5 + .../include/gleam@http_MultipartHeaders.hrl | 4 + .../build/packages/gleam_http/src/gleam/http.gleam | 560 + .../gleam_http/src/gleam/http/cookie.gleam | 128 + .../gleam_http/src/gleam/http/request.gleam | 267 + .../gleam_http/src/gleam/http/response.gleam | 141 + .../gleam_http/src/gleam/http/service.gleam | 82 + .../build/packages/gleam_http/src/gleam@http.erl | 626 + .../packages/gleam_http/src/gleam@http@cookie.erl | 153 + .../packages/gleam_http/src/gleam@http@request.erl | 202 + .../gleam_http/src/gleam@http@response.erl | 97 + .../packages/gleam_http/src/gleam@http@service.erl | 82 + .../packages/gleam_http/src/gleam_http.app.src | 12 + .../packages/gleam_http/src/gleam_http_native.erl | 88 + .../packages/gleam_http/src/gleam_http_native.mjs | 38 + aoc2023/build/packages/gleam_httpc/LICENSE | 191 + aoc2023/build/packages/gleam_httpc/README.md | 52 + aoc2023/build/packages/gleam_httpc/gleam.toml | 23 + .../packages/gleam_httpc/src/gleam/httpc.gleam | 105 + .../build/packages/gleam_httpc/src/gleam@httpc.erl | 118 + .../packages/gleam_httpc/src/gleam_httpc.app.src | 12 + aoc2023/build/packages/gleam_otp/LICENCE | 191 + aoc2023/build/packages/gleam_otp/README.md | 91 + aoc2023/build/packages/gleam_otp/gleam.toml | 19 + .../gleam_otp/include/gleam@otp@actor_Continue.hrl | 4 + .../gleam_otp/include/gleam@otp@actor_Ready.hrl | 1 + .../gleam_otp/include/gleam@otp@actor_Spec.hrl | 5 + ...leam@otp@intensity_tracker_IntensityTracker.hrl | 5 + .../include/gleam@otp@supervisor_ChildSpec.hrl | 5 + .../include/gleam@otp@supervisor_Spec.hrl | 6 + .../include/gleam@otp@system_StatusInfo.hrl | 7 + .../gleam_otp/include/gleam@otp@task_Exit.hrl | 1 + .../gleam_otp/include/gleam@otp@task_Task.hrl | 6 + .../packages/gleam_otp/src/gleam/otp/actor.gleam | 504 + .../src/gleam/otp/intensity_tracker.gleam | 46 + .../packages/gleam_otp/src/gleam/otp/port.gleam | 9 + .../gleam_otp/src/gleam/otp/supervisor.gleam | 410 + .../packages/gleam_otp/src/gleam/otp/system.gleam | 89 + .../packages/gleam_otp/src/gleam/otp/task.gleam | 151 + .../packages/gleam_otp/src/gleam@otp@actor.erl | 273 + .../gleam_otp/src/gleam@otp@intensity_tracker.erl | 53 + .../packages/gleam_otp/src/gleam@otp@port.erl | 8 + .../gleam_otp/src/gleam@otp@supervisor.erl | 322 + .../packages/gleam_otp/src/gleam@otp@system.erl | 43 + .../packages/gleam_otp/src/gleam@otp@task.erl | 111 + .../build/packages/gleam_otp/src/gleam_otp.app.src | 15 + aoc2023/build/packages/gleam_otp/src/gleam_otp.erl | 28 + .../build/packages/gleam_otp/src/gleam_otp.gleam | 27 + .../packages/gleam_otp/src/gleam_otp_external.erl | 43 + aoc2023/build/packages/gleam_stdlib/LICENCE | 191 + aoc2023/build/packages/gleam_stdlib/README.md | 39 + aoc2023/build/packages/gleam_stdlib/gleam.toml | 16 + .../include/gleam@dynamic_DecodeError.hrl | 5 + .../include/gleam@iterator_Iterator.hrl | 1 + .../gleam_stdlib/include/gleam@iterator_Next.hrl | 1 + .../gleam_stdlib/include/gleam@queue_Queue.hrl | 1 + .../include/gleam@regex_CompileError.hrl | 1 + .../gleam_stdlib/include/gleam@regex_Match.hrl | 4 + .../gleam_stdlib/include/gleam@regex_Options.hrl | 1 + .../gleam_stdlib/include/gleam@set_Set.hrl | 1 + .../gleam_stdlib/include/gleam@uri_Uri.hrl | 9 + aoc2023/build/packages/gleam_stdlib/src/dict.mjs | 957 + .../packages/gleam_stdlib/src/gleam/base.gleam | 21 + .../gleam_stdlib/src/gleam/bit_array.gleam | 157 + .../gleam_stdlib/src/gleam/bit_builder.gleam | 80 + .../gleam_stdlib/src/gleam/bit_string.gleam | 43 + .../packages/gleam_stdlib/src/gleam/bool.gleam | 428 + .../gleam_stdlib/src/gleam/bytes_builder.gleam | 197 + .../packages/gleam_stdlib/src/gleam/dict.gleam | 544 + .../packages/gleam_stdlib/src/gleam/dynamic.gleam | 1508 + .../packages/gleam_stdlib/src/gleam/float.gleam | 546 + .../packages/gleam_stdlib/src/gleam/function.gleam | 162 + .../packages/gleam_stdlib/src/gleam/int.gleam | 874 + .../build/packages/gleam_stdlib/src/gleam/io.gleam | 117 + .../packages/gleam_stdlib/src/gleam/iterator.gleam | 1530 + .../packages/gleam_stdlib/src/gleam/list.gleam | 2154 + .../packages/gleam_stdlib/src/gleam/map.gleam | 127 + .../packages/gleam_stdlib/src/gleam/option.gleam | 346 + .../packages/gleam_stdlib/src/gleam/order.gleam | 133 + .../packages/gleam_stdlib/src/gleam/pair.gleam | 85 + .../packages/gleam_stdlib/src/gleam/queue.gleam | 292 + .../packages/gleam_stdlib/src/gleam/regex.gleam | 214 + .../packages/gleam_stdlib/src/gleam/result.gleam | 482 + .../packages/gleam_stdlib/src/gleam/set.gleam | 264 + .../packages/gleam_stdlib/src/gleam/string.gleam | 906 + .../gleam_stdlib/src/gleam/string_builder.gleam | 298 + .../packages/gleam_stdlib/src/gleam/uri.gleam | 462 + .../build/packages/gleam_stdlib/src/gleam@base.erl | 20 + .../packages/gleam_stdlib/src/gleam@bit_array.erl | 102 + .../gleam_stdlib/src/gleam@bit_builder.erl | 66 + .../packages/gleam_stdlib/src/gleam@bit_string.erl | 33 + .../build/packages/gleam_stdlib/src/gleam@bool.erl | 162 + .../gleam_stdlib/src/gleam@bytes_builder.erl | 87 + .../build/packages/gleam_stdlib/src/gleam@dict.erl | 97 + .../packages/gleam_stdlib/src/gleam@dynamic.erl | 808 + .../packages/gleam_stdlib/src/gleam@float.erl | 181 + .../packages/gleam_stdlib/src/gleam@function.erl | 67 + .../build/packages/gleam_stdlib/src/gleam@int.erl | 332 + .../build/packages/gleam_stdlib/src/gleam@io.erl | 27 + .../packages/gleam_stdlib/src/gleam@iterator.erl | 744 + .../build/packages/gleam_stdlib/src/gleam@list.erl | 1129 + .../build/packages/gleam_stdlib/src/gleam@map.erl | 76 + .../packages/gleam_stdlib/src/gleam@option.erl | 147 + .../packages/gleam_stdlib/src/gleam@order.erl | 79 + .../build/packages/gleam_stdlib/src/gleam@pair.erl | 33 + .../packages/gleam_stdlib/src/gleam@queue.erl | 121 + .../packages/gleam_stdlib/src/gleam@regex.erl | 33 + .../packages/gleam_stdlib/src/gleam@result.erl | 201 + .../build/packages/gleam_stdlib/src/gleam@set.erl | 85 + .../packages/gleam_stdlib/src/gleam@string.erl | 352 + .../gleam_stdlib/src/gleam@string_builder.erl | 91 + .../build/packages/gleam_stdlib/src/gleam@uri.erl | 252 + .../packages/gleam_stdlib/src/gleam_stdlib.app.src | 31 + .../packages/gleam_stdlib/src/gleam_stdlib.erl | 529 + .../packages/gleam_stdlib/src/gleam_stdlib.mjs | 875 + aoc2023/build/packages/glint/LICENSE | 201 + aoc2023/build/packages/glint/README.md | 104 + aoc2023/build/packages/glint/gleam.toml | 23 + .../packages/glint/include/glint@flag_Flag.hrl | 1 + .../glint/include/glint@flag_FlagBuilder.hrl | 6 + .../packages/glint/include/glint@flag_Internal.hrl | 4 + .../build/packages/glint/include/glint_Command.hrl | 5 + .../packages/glint/include/glint_CommandInput.hrl | 4 + .../build/packages/glint/include/glint_Config.hrl | 4 + .../build/packages/glint/include/glint_Glint.hrl | 5 + .../packages/glint/include/glint_PrettyHelp.hrl | 5 + .../build/packages/glint/include/glint_Stub.hrl | 6 + aoc2023/build/packages/glint/src/glint.app.src | 13 + aoc2023/build/packages/glint/src/glint.erl | 513 + aoc2023/build/packages/glint/src/glint.gleam | 588 + aoc2023/build/packages/glint/src/glint/flag.gleam | 478 + .../packages/glint/src/glint/flag/constraint.gleam | 66 + aoc2023/build/packages/glint/src/glint@flag.erl | 523 + .../packages/glint/src/glint@flag@constraint.erl | 68 + aoc2023/build/packages/packages.toml | 16 + aoc2023/build/packages/pqueue/LICENSE | 21 + aoc2023/build/packages/pqueue/README.markdown | 31 + aoc2023/build/packages/pqueue/doc/edoc-info | 3 + aoc2023/build/packages/pqueue/doc/erlang.png | Bin 0 -> 2109 bytes aoc2023/build/packages/pqueue/doc/index.html | 17 + .../build/packages/pqueue/doc/modules-frame.html | 15 + .../packages/pqueue/doc/overview-summary.html | 16 + aoc2023/build/packages/pqueue/doc/pqueue.html | 166 + aoc2023/build/packages/pqueue/doc/pqueue2.html | 143 + aoc2023/build/packages/pqueue/doc/pqueue3.html | 162 + aoc2023/build/packages/pqueue/doc/pqueue4.html | 205 + aoc2023/build/packages/pqueue/doc/stylesheet.css | 55 + aoc2023/build/packages/pqueue/rebar.config | 14 + aoc2023/build/packages/pqueue/src/pqueue.app.src | 10 + aoc2023/build/packages/pqueue/src/pqueue.erl | 2246 + aoc2023/build/packages/pqueue/src/pqueue2.erl | 483 + aoc2023/build/packages/pqueue/src/pqueue3.erl | 404 + aoc2023/build/packages/pqueue/src/pqueue4.erl | 11662 ++++ aoc2023/build/packages/pqueue/src/pqueue_test.hrl | 49 + .../build/packages/pqueue/test/pqueue_proper.erl | 156 + aoc2023/build/packages/pqueue/test/queue_srv.erl | 183 + aoc2023/build/packages/simplifile/README.md | 29 + aoc2023/build/packages/simplifile/gleam.toml | 17 + .../packages/simplifile/src/simplifile.app.src | 8 + .../build/packages/simplifile/src/simplifile.erl | 287 + .../build/packages/simplifile/src/simplifile.gleam | 580 + .../packages/simplifile/src/simplifile_erl.erl | 70 + .../packages/simplifile/src/simplifile_js.mjs | 102 + aoc2023/build/packages/snag/LICENCE | 211 + aoc2023/build/packages/snag/README.md | 81 + aoc2023/build/packages/snag/gleam.toml | 16 + aoc2023/build/packages/snag/include/snag_Snag.hrl | 1 + aoc2023/build/packages/snag/src/snag.app.src | 8 + aoc2023/build/packages/snag/src/snag.erl | 74 + aoc2023/build/packages/snag/src/snag.gleam | 141 + aoc2023/build/packages/tom/README.md | 47 + aoc2023/build/packages/tom/gleam.toml | 13 + .../packages/tom/include/tom_DateTimeValue.hrl | 5 + .../build/packages/tom/include/tom_DateValue.hrl | 1 + .../packages/tom/include/tom_KeyAlreadyInUse.hrl | 1 + .../build/packages/tom/include/tom_NotFound.hrl | 1 + aoc2023/build/packages/tom/include/tom_Offset.hrl | 5 + .../build/packages/tom/include/tom_TimeValue.hrl | 6 + .../build/packages/tom/include/tom_Unexpected.hrl | 1 + .../build/packages/tom/include/tom_WrongType.hrl | 5 + aoc2023/build/packages/tom/src/tom.app.src | 8 + aoc2023/build/packages/tom/src/tom.erl | 2140 + aoc2023/build/packages/tom/src/tom.gleam | 1317 + aoc2023/build/prod/erlang/gleam.lock | 0 aoc2023/build/prod/javascript/gleam.lock | 0 aoc2023/erl_crash.dump | 67195 +++++++++++++++++++ aoc2023/src/day1/input.txt | 1000 + aoc2023/src/day10/input.txt | 140 + aoc2023/src/day11/input.txt | 140 + aoc2023/src/day13/input.txt | 1379 + aoc2023/src/day15/input.txt | 1 + aoc2023/src/day16/input.txt | 110 + aoc2023/src/day17/input.txt | 141 + aoc2023/src/day18/input.txt | 676 + aoc2023/src/day19/input.txt | 766 + aoc2023/src/day2/input.txt | 100 + aoc2023/src/day20/input.txt | 58 + aoc2023/src/day3/input.txt | 140 + aoc2023/src/day4/input.txt | 203 + aoc2023/src/day6/input.txt | 2 + aoc2023/src/day7/input.txt | 1000 + aoc2023/src/day8/input.txt | 740 + aoc2023/src/day9/input.txt | 200 + 1493 files changed, 194664 insertions(+) create mode 100644 aoc2023/aoc.toml create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl create mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent.app create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam create mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam create mode 100644 aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl create mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta create mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl create mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs create mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap.app create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap.beam create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam create mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl create mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl create mode 100644 aoc2023/build/dev/erlang/gleam.lock create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam create mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl create mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app create mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam create mode 100644 aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl create mode 100644 aoc2023/build/dev/erlang/gleam_version create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta create mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl create mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint.app create mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint.beam create mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam create mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam create mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Command.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Config.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl create mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl create mode 100644 aoc2023/build/dev/erlang/pqueue/LICENSE create mode 100644 aoc2023/build/dev/erlang/pqueue/README.markdown create mode 100644 aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/edoc-info create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/erlang.png create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/index.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html create mode 100644 aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css create mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app create mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam create mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam create mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam create mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam create mode 100644 aoc2023/build/dev/erlang/pqueue/rebar.config create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue.erl create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl create mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl create mode 100644 aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl create mode 100644 aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl create mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs create mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app create mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam create mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam create mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache create mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta create mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl create mode 100644 aoc2023/build/dev/erlang/snag/ebin/snag.app create mode 100644 aoc2023/build/dev/erlang/snag/ebin/snag.beam create mode 100644 aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl create mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl create mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache create mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta create mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl create mode 100644 aoc2023/build/dev/erlang/tom/ebin/tom.app create mode 100644 aoc2023/build/dev/erlang/tom/ebin/tom.beam create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl create mode 100644 aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl create mode 100644 aoc2023/build/dev/javascript/gleam.lock create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache create mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache create mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache create mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam.lock create mode 100644 aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache create mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta create mode 100644 aoc2023/build/lsp/erlang/gleam_version create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache create mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta create mode 100644 aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache create mode 100644 aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta create mode 100644 aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache create mode 100644 aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta create mode 100644 aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache create mode 100644 aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta create mode 100644 aoc2023/build/lsp/javascript/gleam.lock create mode 100644 aoc2023/build/packages/adglent/LICENSE create mode 100644 aoc2023/build/packages/adglent/README.md create mode 100644 aoc2023/build/packages/adglent/gleam.toml create mode 100644 aoc2023/build/packages/adglent/include/adglent_Example.hrl create mode 100644 aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl create mode 100644 aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl create mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl create mode 100644 aoc2023/build/packages/adglent/src/adglent.app.src create mode 100644 aoc2023/build/packages/adglent/src/adglent.erl create mode 100644 aoc2023/build/packages/adglent/src/adglent.gleam create mode 100644 aoc2023/build/packages/adglent/src/adglent/day.gleam create mode 100644 aoc2023/build/packages/adglent/src/adglent/init.gleam create mode 100644 aoc2023/build/packages/adglent/src/adglent@day.erl create mode 100644 aoc2023/build/packages/adglent/src/adglent@init.erl create mode 100644 aoc2023/build/packages/adglent/src/adglent_ffi.erl create mode 100644 aoc2023/build/packages/adglent/src/priv/aoc_client.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/errors.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/prompt.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/template.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/templates/solution.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv/toml.gleam create mode 100644 aoc2023/build/packages/adglent/src/priv@aoc_client.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@errors.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@prompt.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@template.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@templates@solution.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@templates@test_main.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl create mode 100644 aoc2023/build/packages/adglent/src/priv@toml.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/should.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/test.gleam create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@meta.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@should.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@test.erl create mode 100644 aoc2023/build/packages/adglent/src/showtime_ffi.erl create mode 100644 aoc2023/build/packages/gap/LICENSE create mode 100644 aoc2023/build/packages/gap/README.md create mode 100644 aoc2023/build/packages/gap/gleam.toml create mode 100644 aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@comparison_Match.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@styling_All.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@styling_Part.hrl create mode 100644 aoc2023/build/packages/gap/include/gap@styling_Styling.hrl create mode 100644 aoc2023/build/packages/gap/src/gap.app.src create mode 100644 aoc2023/build/packages/gap/src/gap.erl create mode 100644 aoc2023/build/packages/gap/src/gap.gleam create mode 100644 aoc2023/build/packages/gap/src/gap/comparison.gleam create mode 100644 aoc2023/build/packages/gap/src/gap/myers.gleam create mode 100644 aoc2023/build/packages/gap/src/gap/styled_comparison.gleam create mode 100644 aoc2023/build/packages/gap/src/gap/styling.gleam create mode 100644 aoc2023/build/packages/gap/src/gap@comparison.erl create mode 100644 aoc2023/build/packages/gap/src/gap@myers.erl create mode 100644 aoc2023/build/packages/gap/src/gap@styled_comparison.erl create mode 100644 aoc2023/build/packages/gap/src/gap@styling.erl create mode 100644 aoc2023/build/packages/gap/src/gap_ffi.mjs create mode 100644 aoc2023/build/packages/gleam.lock create mode 100644 aoc2023/build/packages/gleam_community_ansi/LICENCE create mode 100644 aoc2023/build/packages/gleam_community_ansi/README.md create mode 100644 aoc2023/build/packages/gleam_community_ansi/gleam.toml create mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam create mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl create mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src create mode 100644 aoc2023/build/packages/gleam_community_colour/LICENCE create mode 100644 aoc2023/build/packages/gleam_community_colour/README.md create mode 100644 aoc2023/build/packages/gleam_community_colour/gleam.toml create mode 100644 aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl create mode 100644 aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl create mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam create mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam create mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl create mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl create mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src create mode 100644 aoc2023/build/packages/gleam_community_maths/LICENCE create mode 100644 aoc2023/build/packages/gleam_community_maths/README.md create mode 100644 aoc2023/build/packages/gleam_community_maths/gleam.toml create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl create mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src create mode 100644 aoc2023/build/packages/gleam_community_maths/src/maths.mjs create mode 100644 aoc2023/build/packages/gleam_erlang/LICENSE create mode 100644 aoc2023/build/packages/gleam_erlang/README.md create mode 100644 aoc2023/build/packages/gleam_erlang/gleam.toml create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src create mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl create mode 100644 aoc2023/build/packages/gleam_http/LICENSE create mode 100644 aoc2023/build/packages/gleam_http/README.md create mode 100644 aoc2023/build/packages/gleam_http/gleam.toml create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl create mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http.gleam create mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam create mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam create mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam create mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam create mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@request.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@response.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@service.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http.app.src create mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http_native.erl create mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs create mode 100644 aoc2023/build/packages/gleam_httpc/LICENSE create mode 100644 aoc2023/build/packages/gleam_httpc/README.md create mode 100644 aoc2023/build/packages/gleam_httpc/gleam.toml create mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam create mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl create mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src create mode 100644 aoc2023/build/packages/gleam_otp/LICENCE create mode 100644 aoc2023/build/packages/gleam_otp/README.md create mode 100644 aoc2023/build/packages/gleam_otp/gleam.toml create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl create mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.erl create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam create mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/LICENCE create mode 100644 aoc2023/build/packages/gleam_stdlib/README.md create mode 100644 aoc2023/build/packages/gleam_stdlib/gleam.toml create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/dict.mjs create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl create mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs create mode 100644 aoc2023/build/packages/glint/LICENSE create mode 100644 aoc2023/build/packages/glint/README.md create mode 100644 aoc2023/build/packages/glint/gleam.toml create mode 100644 aoc2023/build/packages/glint/include/glint@flag_Flag.hrl create mode 100644 aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl create mode 100644 aoc2023/build/packages/glint/include/glint@flag_Internal.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_Command.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_CommandInput.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_Config.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_Glint.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl create mode 100644 aoc2023/build/packages/glint/include/glint_Stub.hrl create mode 100644 aoc2023/build/packages/glint/src/glint.app.src create mode 100644 aoc2023/build/packages/glint/src/glint.erl create mode 100644 aoc2023/build/packages/glint/src/glint.gleam create mode 100644 aoc2023/build/packages/glint/src/glint/flag.gleam create mode 100644 aoc2023/build/packages/glint/src/glint/flag/constraint.gleam create mode 100644 aoc2023/build/packages/glint/src/glint@flag.erl create mode 100644 aoc2023/build/packages/glint/src/glint@flag@constraint.erl create mode 100644 aoc2023/build/packages/packages.toml create mode 100644 aoc2023/build/packages/pqueue/LICENSE create mode 100644 aoc2023/build/packages/pqueue/README.markdown create mode 100644 aoc2023/build/packages/pqueue/doc/edoc-info create mode 100644 aoc2023/build/packages/pqueue/doc/erlang.png create mode 100644 aoc2023/build/packages/pqueue/doc/index.html create mode 100644 aoc2023/build/packages/pqueue/doc/modules-frame.html create mode 100644 aoc2023/build/packages/pqueue/doc/overview-summary.html create mode 100644 aoc2023/build/packages/pqueue/doc/pqueue.html create mode 100644 aoc2023/build/packages/pqueue/doc/pqueue2.html create mode 100644 aoc2023/build/packages/pqueue/doc/pqueue3.html create mode 100644 aoc2023/build/packages/pqueue/doc/pqueue4.html create mode 100644 aoc2023/build/packages/pqueue/doc/stylesheet.css create mode 100644 aoc2023/build/packages/pqueue/rebar.config create mode 100644 aoc2023/build/packages/pqueue/src/pqueue.app.src create mode 100644 aoc2023/build/packages/pqueue/src/pqueue.erl create mode 100644 aoc2023/build/packages/pqueue/src/pqueue2.erl create mode 100644 aoc2023/build/packages/pqueue/src/pqueue3.erl create mode 100644 aoc2023/build/packages/pqueue/src/pqueue4.erl create mode 100644 aoc2023/build/packages/pqueue/src/pqueue_test.hrl create mode 100644 aoc2023/build/packages/pqueue/test/pqueue_proper.erl create mode 100644 aoc2023/build/packages/pqueue/test/queue_srv.erl create mode 100644 aoc2023/build/packages/simplifile/README.md create mode 100644 aoc2023/build/packages/simplifile/gleam.toml create mode 100644 aoc2023/build/packages/simplifile/src/simplifile.app.src create mode 100644 aoc2023/build/packages/simplifile/src/simplifile.erl create mode 100644 aoc2023/build/packages/simplifile/src/simplifile.gleam create mode 100644 aoc2023/build/packages/simplifile/src/simplifile_erl.erl create mode 100644 aoc2023/build/packages/simplifile/src/simplifile_js.mjs create mode 100644 aoc2023/build/packages/snag/LICENCE create mode 100644 aoc2023/build/packages/snag/README.md create mode 100644 aoc2023/build/packages/snag/gleam.toml create mode 100644 aoc2023/build/packages/snag/include/snag_Snag.hrl create mode 100644 aoc2023/build/packages/snag/src/snag.app.src create mode 100644 aoc2023/build/packages/snag/src/snag.erl create mode 100644 aoc2023/build/packages/snag/src/snag.gleam create mode 100644 aoc2023/build/packages/tom/README.md create mode 100644 aoc2023/build/packages/tom/gleam.toml create mode 100644 aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_DateValue.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_NotFound.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_Offset.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_TimeValue.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_Unexpected.hrl create mode 100644 aoc2023/build/packages/tom/include/tom_WrongType.hrl create mode 100644 aoc2023/build/packages/tom/src/tom.app.src create mode 100644 aoc2023/build/packages/tom/src/tom.erl create mode 100644 aoc2023/build/packages/tom/src/tom.gleam create mode 100644 aoc2023/build/prod/erlang/gleam.lock create mode 100644 aoc2023/build/prod/javascript/gleam.lock create mode 100644 aoc2023/erl_crash.dump create mode 100644 aoc2023/src/day1/input.txt create mode 100644 aoc2023/src/day10/input.txt create mode 100644 aoc2023/src/day11/input.txt create mode 100644 aoc2023/src/day13/input.txt create mode 100644 aoc2023/src/day15/input.txt create mode 100644 aoc2023/src/day16/input.txt create mode 100644 aoc2023/src/day17/input.txt create mode 100644 aoc2023/src/day18/input.txt create mode 100644 aoc2023/src/day19/input.txt create mode 100644 aoc2023/src/day2/input.txt create mode 100644 aoc2023/src/day20/input.txt create mode 100644 aoc2023/src/day3/input.txt create mode 100644 aoc2023/src/day4/input.txt create mode 100644 aoc2023/src/day6/input.txt create mode 100644 aoc2023/src/day7/input.txt create mode 100644 aoc2023/src/day8/input.txt create mode 100644 aoc2023/src/day9/input.txt diff --git a/aoc2023/aoc.toml b/aoc2023/aoc.toml new file mode 100644 index 0000000..3843235 --- /dev/null +++ b/aoc2023/aoc.toml @@ -0,0 +1,4 @@ +version = 2 +year = "2023" +session = "53616c7465645f5f9b329c2ce8962445c1bf7e50415667e182265b26a30deb203787e6f505943bd2ee4a7bbb39e99ac4cf724a722d58e3c1984b7f30af6be76d" +showtime = true diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache new file mode 100644 index 0000000..939bda2 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta new file mode 100644 index 0000000..0af4a84 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl new file mode 100644 index 0000000..e3ceebe --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl @@ -0,0 +1,55 @@ +-module(adglent). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([inspect/1, get_input/1, get_test_folder/1, start_arguments/0, get_part/0]). +-export_type([example/1, problem/0, charlist/0]). + +-type example(ODD) :: {example, binary(), ODD}. + +-type problem() :: first | second. + +-type charlist() :: any(). + +-spec inspect(any()) -> binary(). +inspect(Value) -> + Inspected_value = gleam@string:inspect(Value), + case begin + _pipe = Inspected_value, + gleam@string:starts_with(_pipe, <<"\""/utf8>>) + end of + true -> + _pipe@1 = Inspected_value, + _pipe@2 = gleam@string:drop_left(_pipe@1, 1), + gleam@string:drop_right(_pipe@2, 1); + + false -> + Inspected_value + end. + +-spec get_input(binary()) -> {ok, binary()} | {error, simplifile:file_error()}. +get_input(Day) -> + simplifile:read( + <<<<"src/day"/utf8, Day/binary>>/binary, "/input.txt"/utf8>> + ). + +-spec get_test_folder(binary()) -> binary(). +get_test_folder(Day) -> + <<"test/day"/utf8, Day/binary>>. + +-spec start_arguments() -> list(binary()). +start_arguments() -> + _pipe = init:get_plain_arguments(), + gleam@list:map(_pipe, fun unicode:characters_to_binary/1). + +-spec get_part() -> {ok, problem()} | {error, nil}. +get_part() -> + case start_arguments() of + [<<"1"/utf8>>] -> + {ok, first}; + + [<<"2"/utf8>>] -> + {ok, second}; + + _ -> + {error, nil} + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache new file mode 100644 index 0000000..a39d38a Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta new file mode 100644 index 0000000..1637f81 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl new file mode 100644 index 0000000..b80368f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl @@ -0,0 +1,278 @@ +-module(adglent@day). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec create_file_if_not_present(binary(), binary()) -> {ok, binary()} | + {error, binary()}. +create_file_if_not_present(Content, Path) -> + case simplifile:is_file(Path) of + true -> + {ok, <>}; + + false -> + gleam@result:'try'( + begin + _pipe = simplifile:create_file(Path), + priv@errors:map_messages( + _pipe, + <<"Created "/utf8, Path/binary>>, + <<"Could not create "/utf8, Path/binary>> + ) + end, + fun(_) -> _pipe@1 = simplifile:write(Path, Content), + priv@errors:map_messages( + _pipe@1, + <<"Wrote "/utf8, Path/binary>>, + <<"Could not write to "/utf8, Path/binary>> + ) end + ) + end. + +-spec main() -> binary(). +main() -> + Day@1 = begin + _pipe = case adglent:start_arguments() of + [Day] -> + {ok, Day}; + + Args -> + {error, + <<"Expected day - found: "/utf8, + (gleam@string:join(Args, <<", "/utf8>>))/binary>>} + end, + _pipe@1 = priv@errors:map_error( + _pipe, + <<"Error when parsing command args"/utf8>> + ), + _pipe@2 = priv@errors:print_error(_pipe@1), + priv@errors:assert_ok(_pipe@2) + end, + Aoc_toml = begin + _pipe@3 = simplifile:read(<<"aoc.toml"/utf8>>), + _pipe@4 = priv@errors:map_error( + _pipe@3, + <<"Could not read aoc.toml"/utf8>> + ), + _pipe@5 = priv@errors:print_error(_pipe@4), + priv@errors:assert_ok(_pipe@5) + end, + Aoc_toml_version = priv@toml:get_int(Aoc_toml, [<<"version"/utf8>>]), + Year = begin + _pipe@6 = priv@toml:get_string(Aoc_toml, [<<"year"/utf8>>]), + _pipe@7 = priv@errors:map_error( + _pipe@6, + <<"Could not read \"year\" from aoc.toml"/utf8>> + ), + _pipe@8 = priv@errors:print_error(_pipe@7), + priv@errors:assert_ok(_pipe@8) + end, + Session = begin + _pipe@9 = priv@toml:get_string(Aoc_toml, [<<"session"/utf8>>]), + _pipe@10 = priv@errors:map_error( + _pipe@9, + <<"Could not read \"session\" from aoc.toml"/utf8>> + ), + _pipe@11 = priv@errors:print_error(_pipe@10), + priv@errors:assert_ok(_pipe@11) + end, + Showtime = case Aoc_toml_version of + {ok, 2} -> + _pipe@12 = priv@toml:get_bool(Aoc_toml, [<<"showtime"/utf8>>]), + _pipe@13 = priv@errors:map_error( + _pipe@12, + <<"Could not read \"showtime\" from aoc.toml"/utf8>> + ), + _pipe@14 = priv@errors:print_error(_pipe@13), + priv@errors:assert_ok(_pipe@14); + + _ -> + _pipe@15 = priv@toml:get_string(Aoc_toml, [<<"showtime"/utf8>>]), + _pipe@16 = gleam@result:map( + _pipe@15, + fun(Bool_string) -> case Bool_string of + <<"True"/utf8>> -> + true; + + _ -> + false + end end + ), + _pipe@17 = priv@errors:map_error( + _pipe@16, + <<"Could not read \"showtime\" from aoc.toml"/utf8>> + ), + _pipe@18 = priv@errors:print_error(_pipe@17), + priv@errors:assert_ok(_pipe@18) + end, + Test_folder = adglent:get_test_folder(Day@1), + Test_file = <<<<<>/binary, Day@1/binary>>/binary, + "_test.gleam"/utf8>>, + _pipe@19 = simplifile:create_directory_all(Test_folder), + _pipe@20 = priv@errors:map_error( + _pipe@19, + <<<<"Could not create folder \""/utf8, Test_folder/binary>>/binary, + "\""/utf8>> + ), + _pipe@21 = priv@errors:print_error(_pipe@20), + priv@errors:assert_ok(_pipe@21), + Testfile_template = case Showtime of + true -> + <<" +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +"/utf8>>; + + false -> + <<" +import gleam/list +import gleeunit/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +"/utf8>> + end, + _pipe@22 = priv@template:render( + Testfile_template, + [{<<"day"/utf8>>, Day@1}] + ), + _pipe@23 = create_file_if_not_present(_pipe@22, Test_file), + _pipe@24 = priv@errors:print_result(_pipe@23), + priv@errors:assert_ok(_pipe@24), + Solutions_folder = <<"src/day"/utf8, Day@1/binary>>, + Solution_file = <>, + _pipe@25 = simplifile:create_directory_all(Solutions_folder), + _pipe@26 = priv@errors:map_error( + _pipe@25, + <<<<"Could not create folder \""/utf8, Solutions_folder/binary>>/binary, + "\""/utf8>> + ), + _pipe@27 = priv@errors:print_error(_pipe@26), + priv@errors:assert_ok(_pipe@27), + _pipe@28 = priv@template:render( + <<" +import adglent.{First, Second} +import gleam/io + +pub fn part1(input: String) { + todo as \"Implement solution to part 1\" +} + +pub fn part2(input: String) { + todo as \"Implement solution to part 2\" +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input(\"{{ day }}\") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} +"/utf8>>, + [{<<"day"/utf8>>, Day@1}] + ), + _pipe@29 = create_file_if_not_present(_pipe@28, Solution_file), + _pipe@30 = priv@errors:print_result(_pipe@29), + priv@errors:assert_ok(_pipe@30), + _pipe@31 = create_file_if_not_present( + <<"input.txt"/utf8>>, + <> + ), + _pipe@32 = priv@errors:print_result(_pipe@31), + priv@errors:assert_ok(_pipe@32), + Input = begin + _pipe@33 = priv@aoc_client:get_input(Year, Day@1, Session), + _pipe@34 = priv@errors:map_error( + _pipe@33, + <<"Error when fetching input"/utf8>> + ), + _pipe@35 = priv@errors:print_error(_pipe@34), + priv@errors:assert_ok(_pipe@35) + end, + _pipe@36 = Input, + _pipe@37 = gleam@string:trim(_pipe@36), + _pipe@38 = create_file_if_not_present( + _pipe@37, + <> + ), + _pipe@39 = priv@errors:print_result(_pipe@38), + priv@errors:assert_ok(_pipe@39). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache new file mode 100644 index 0000000..5337c50 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta new file mode 100644 index 0000000..2751b68 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl new file mode 100644 index 0000000..fb28101 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl @@ -0,0 +1,142 @@ +-module(adglent@init). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec main() -> {ok, binary()} | {error, binary()}. +main() -> + Year = priv@prompt:value(<<"Year"/utf8>>, <<"2023"/utf8>>, false), + Session = priv@prompt:value(<<"Session Cookie"/utf8>>, <<""/utf8>>, false), + Use_showtime = priv@prompt:confirm(<<"Use showtime"/utf8>>, false), + Aoc_toml_file = <<"aoc.toml"/utf8>>, + Overwrite = case simplifile:create_file(Aoc_toml_file) of + {ok, _} -> + true; + + {error, eexist} -> + priv@prompt:confirm(<<"aoc.toml exits - overwrite"/utf8>>, false); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"Could not create aoc.toml"/utf8>>, + module => <<"adglent/init"/utf8>>, + function => <<"main"/utf8>>, + line => 29}) + end, + _pipe@3 = case Overwrite of + true -> + _pipe@1 = priv@template:render( + <<" +version = {{ version }} +year = \"{{ year }}\" +session = \"{{ session }}\" +showtime = {{ showtime }} +"/utf8>>, + [{<<"version"/utf8>>, <<"2"/utf8>>}, + {<<"year"/utf8>>, Year}, + {<<"session"/utf8>>, Session}, + {<<"showtime"/utf8>>, + begin + _pipe = gleam@bool:to_string(Use_showtime), + gleam@string:lowercase(_pipe) + end}] + ), + _pipe@2 = simplifile:write(Aoc_toml_file, _pipe@1), + priv@errors:map_messages( + _pipe@2, + <<"aoc.toml - written"/utf8>>, + <<"Error when writing aoc.toml"/utf8>> + ); + + false -> + {ok, <<"aoc.toml - skipped"/utf8>>} + end, + priv@errors:print_result(_pipe@3), + Gleam_toml = begin + _pipe@4 = simplifile:read(<<"gleam.toml"/utf8>>), + _pipe@5 = priv@errors:map_error( + _pipe@4, + <<"Could not read gleam.toml"/utf8>> + ), + _pipe@6 = priv@errors:print_error(_pipe@5), + priv@errors:assert_ok(_pipe@6) + end, + Name = begin + _pipe@7 = priv@toml:get_string(Gleam_toml, [<<"name"/utf8>>]), + _pipe@8 = priv@errors:map_error( + _pipe@7, + <<"Could not read \"name\" from gleam.toml"/utf8>> + ), + _pipe@9 = priv@errors:print_error(_pipe@8), + priv@errors:assert_ok(_pipe@9) + end, + Test_main_file = <<<<"test/"/utf8, Name/binary>>/binary, + "_test.gleam"/utf8>>, + _pipe@12 = case Use_showtime of + true -> + _pipe@10 = priv@template:render( + <<" +import showtime + +pub fn main() { + showtime.main() +} +"/utf8>>, + [] + ), + _pipe@11 = simplifile:write(Test_main_file, _pipe@10), + priv@errors:map_messages( + _pipe@11, + <<"Wrote "/utf8, Test_main_file/binary>>, + <<"Could not write to "/utf8, Test_main_file/binary>> + ); + + false -> + {ok, <<"Using existing (gleeunit) "/utf8, Test_main_file/binary>>} + end, + _pipe@13 = priv@errors:print_result(_pipe@12), + priv@errors:assert_ok(_pipe@13), + _pipe@17 = case simplifile:is_file(<<".gitignore"/utf8>>) of + true -> + gleam@result:'try'( + begin + _pipe@14 = simplifile:read(<<".gitignore"/utf8>>), + gleam@result:map_error( + _pipe@14, + fun(Err) -> + <<"Could not read .gitignore: "/utf8, + (gleam@string:inspect(Err))/binary>> + end + ) + end, + fun(Gitignore) -> + Aoc_toml_ignored = begin + _pipe@15 = gleam@string:split(Gitignore, <<"\n"/utf8>>), + gleam@list:find( + _pipe@15, + fun(Line) -> Line =:= <<"aoc.toml"/utf8>> end + ) + end, + case Aoc_toml_ignored of + {error, _} -> + _pipe@16 = simplifile:append( + <<".gitignore"/utf8>>, + <<"\naoc.toml"/utf8>> + ), + priv@errors:map_messages( + _pipe@16, + <<".gitignore written"/utf8>>, + <<"Error when writing .gitignore"/utf8>> + ); + + {ok, _} -> + {ok, + <<".gitignore - skipped (already configured)"/utf8>>} + end + end + ); + + false -> + {error, <<"Could not find .gitignore"/utf8>>} + end, + priv@errors:print_result(_pipe@17). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl new file mode 100644 index 0000000..a6a92e6 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl @@ -0,0 +1,12 @@ +-module(adglent_ffi). + +-export([get_line/1]). + +-spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. +get_line(Prompt) -> + case io:get_line(Prompt) of + eof -> {error, eof}; + {error, _} -> {error, no_data}; + Data when is_binary(Data) -> {ok, Data}; + Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache new file mode 100644 index 0000000..40f6caf Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta new file mode 100644 index 0000000..b6c1617 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl new file mode 100644 index 0000000..1acb9b5 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl @@ -0,0 +1,61 @@ +-module(priv@aoc_client). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_input/3]). + +-spec get_input(binary(), binary(), binary()) -> {ok, binary()} | + {error, binary()}. +get_input(Year, Day, Session) -> + Url = <<<<<<<<"https://adventofcode.com/"/utf8, Year/binary>>/binary, + "/day/"/utf8>>/binary, + Day/binary>>/binary, + "/input"/utf8>>, + gleam@result:'try'( + begin + _pipe = gleam@http@request:to(Url), + gleam@result:map_error( + _pipe, + fun(Error) -> + <<<<<<"Could not create request for \""/utf8, Url/binary>>/binary, + "\": "/utf8>>/binary, + (gleam@string:inspect(Error))/binary>> + end + ) + end, + fun(Request) -> + gleam@result:'try'( + begin + _pipe@1 = Request, + _pipe@2 = gleam@http@request:prepend_header( + _pipe@1, + <<"Accept"/utf8>>, + <<"application/json"/utf8>> + ), + _pipe@3 = gleam@http@request:prepend_header( + _pipe@2, + <<"Cookie"/utf8>>, + <<<<"session="/utf8, Session/binary>>/binary, ";"/utf8>> + ), + _pipe@4 = gleam@httpc:send(_pipe@3), + gleam@result:map_error( + _pipe@4, + fun(Error@1) -> + <<<<<<"Error when requesting \""/utf8, Url/binary>>/binary, + "\": "/utf8>>/binary, + (gleam@string:inspect(Error@1))/binary>> + end + ) + end, + fun(Response) -> case erlang:element(2, Response) of + Status when (Status >= 200) andalso (Status < 300) -> + {ok, erlang:element(4, Response)}; + + Status@1 -> + {error, + <<<<(gleam@int:to_string(Status@1))/binary, + " - "/utf8>>/binary, + (erlang:element(4, Response))/binary>>} + end end + ) + end + ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache new file mode 100644 index 0000000..7bfeea9 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta new file mode 100644 index 0000000..498e302 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl new file mode 100644 index 0000000..41545be --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl @@ -0,0 +1,74 @@ +-module(priv@errors). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([map_messages/3, map_error/2, print_result/1, print_error/1, assert_ok/1]). + +-spec map_messages({ok, any()} | {error, any()}, binary(), binary()) -> {ok, + binary()} | + {error, binary()}. +map_messages(Result, Success_message, Error_message) -> + _pipe = Result, + _pipe@1 = gleam@result:map_error( + _pipe, + fun(Error) -> + <<<<<<"Error - "/utf8, Error_message/binary>>/binary, ": "/utf8>>/binary, + (gleam@string:inspect(Error))/binary>> + end + ), + gleam@result:replace(_pipe@1, Success_message). + +-spec map_error({ok, OBD} | {error, any()}, binary()) -> {ok, OBD} | + {error, binary()}. +map_error(Result, Error_message) -> + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Error) -> + <<<>/binary, + (gleam@string:inspect(Error))/binary>> + end + ). + +-spec print_result({ok, binary()} | {error, binary()}) -> {ok, binary()} | + {error, binary()}. +print_result(Result) -> + _pipe = Result, + _pipe@1 = gleam@result:unwrap_both(_pipe), + gleam@io:println(_pipe@1), + Result. + +-spec print_error({ok, OBM} | {error, binary()}) -> {ok, OBM} | + {error, binary()}. +print_error(Result) -> + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Err) -> + gleam@io:println(Err), + Err + end + ). + +-spec assert_ok({ok, OBQ} | {error, binary()}) -> OBQ. +assert_ok(Result) -> + _assert_subject = begin + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Err) -> + erlang:halt(1), + Err + end + ) + end, + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"priv/errors"/utf8>>, + function => <<"assert_ok"/utf8>>, + line => 43}) + end, + Value. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache new file mode 100644 index 0000000..45d6e3e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta new file mode 100644 index 0000000..b010daf Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl new file mode 100644 index 0000000..0277f14 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl @@ -0,0 +1,53 @@ +-module(priv@prompt). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_line/1, confirm/2, value/3]). +-export_type([get_line_error/0]). + +-type get_line_error() :: eof | no_data. + +-spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. +get_line(Prompt) -> + adglent_ffi:get_line(Prompt). + +-spec confirm(binary(), boolean()) -> boolean(). +confirm(Message, Auto_accept) -> + Auto_accept orelse case begin + _pipe = adglent_ffi:get_line(<>), + _pipe@1 = gleam@result:unwrap(_pipe, <<"n"/utf8>>), + gleam@string:trim(_pipe@1) + end of + <<"Y"/utf8>> -> + true; + + <<"y"/utf8>> -> + true; + + _ -> + false + end. + +-spec get_value_of_default(binary(), binary(), boolean()) -> binary(). +get_value_of_default(Message, Default, Auto_accept) -> + case Auto_accept of + true -> + Default; + + false -> + _pipe = adglent_ffi:get_line( + <<<<<>/binary, Default/binary>>/binary, + "): "/utf8>> + ), + _pipe@1 = gleam@result:unwrap(_pipe, <<""/utf8>>), + gleam@string:trim(_pipe@1) + end. + +-spec value(binary(), binary(), boolean()) -> binary(). +value(Message, Default, Auto_accept) -> + case get_value_of_default(Message, Default, Auto_accept) of + <<""/utf8>> -> + Default; + + Value -> + Value + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache new file mode 100644 index 0000000..8446302 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta new file mode 100644 index 0000000..5e1f919 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl new file mode 100644 index 0000000..6a5d0bf --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl @@ -0,0 +1,25 @@ +-module(priv@template). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([render/2]). + +-spec render(binary(), list({binary(), binary()})) -> binary(). +render(Template, Substitutions) -> + <<(begin + _pipe = Substitutions, + _pipe@2 = gleam@list:fold( + _pipe, + Template, + fun(Template@1, Substitution) -> + {Name, Value} = Substitution, + _pipe@1 = Template@1, + gleam@string:replace( + _pipe@1, + <<<<"{{ "/utf8, Name/binary>>/binary, " }}"/utf8>>, + Value + ) + end + ), + gleam@string:trim(_pipe@2) + end)/binary, + "\n"/utf8>>. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache new file mode 100644 index 0000000..d29fd97 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta new file mode 100644 index 0000000..3397840 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl new file mode 100644 index 0000000..7e36387 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl @@ -0,0 +1 @@ +-module(priv@templates@solution). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache new file mode 100644 index 0000000..8cdc9df Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta new file mode 100644 index 0000000..17c867f Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl new file mode 100644 index 0000000..ca6b127 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl @@ -0,0 +1 @@ +-module(priv@templates@test_main). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache new file mode 100644 index 0000000..2003723 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta new file mode 100644 index 0000000..c996833 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl new file mode 100644 index 0000000..2f5a41e --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl @@ -0,0 +1 @@ +-module(priv@templates@testfile_gleeunit). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache new file mode 100644 index 0000000..155ee1e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta new file mode 100644 index 0000000..120c91f Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl new file mode 100644 index 0000000..bbbc8b2 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl @@ -0,0 +1 @@ +-module(priv@templates@testfile_showtime). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache new file mode 100644 index 0000000..e328098 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta new file mode 100644 index 0000000..a423083 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl new file mode 100644 index 0000000..6c41fbf --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl @@ -0,0 +1,83 @@ +-module(priv@toml). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_string/2, get_bool/2, get_int/2]). +-export_type([tom_error/0]). + +-type tom_error() :: {tom_parse_error, tom:parse_error()} | + {tom_get_error, tom:get_error()}. + +-spec get_string(binary(), list(binary())) -> {ok, binary()} | + {error, tom_error()}. +get_string(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_string(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). + +-spec get_bool(binary(), list(binary())) -> {ok, boolean()} | + {error, tom_error()}. +get_bool(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_bool(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). + +-spec get_int(binary(), list(binary())) -> {ok, integer()} | + {error, tom_error()}. +get_int(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_int(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache new file mode 100644 index 0000000..19b5f6b Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta new file mode 100644 index 0000000..96a5705 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl new file mode 100644 index 0000000..d4c0030 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl @@ -0,0 +1,155 @@ +-module(showtime). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec mk_runner( + fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> NYW), + glint:command_input() +) -> NYW. +mk_runner(Func, Command) -> + _assert_subject = begin + _pipe = erlang:element(3, Command), + _pipe@1 = glint@flag:get_strings(_pipe, <<"modules"/utf8>>), + gleam@result:map(_pipe@1, fun(Modules) -> case Modules of + [] -> + none; + + Modules@1 -> + {some, Modules@1} + end end) + end, + {ok, Module_list} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 91}) + end, + _assert_subject@1 = begin + _pipe@2 = erlang:element(3, Command), + glint@flag:get_strings(_pipe@2, <<"ignore"/utf8>>) + end, + {ok, Ignore_tags} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 100}) + end, + _assert_subject@2 = begin + _pipe@3 = erlang:element(3, Command), + _pipe@4 = glint@flag:get_string(_pipe@3, <<"capture"/utf8>>), + _pipe@5 = gleam@result:map( + _pipe@4, + fun(Arg) -> gleam@string:lowercase(Arg) end + ), + gleam@result:map(_pipe@5, fun(Arg@1) -> case Arg@1 of + <<"no"/utf8>> -> + no; + + <<"yes"/utf8>> -> + yes; + + <<"mixed"/utf8>> -> + mixed + end end) + end, + {ok, Capture_output} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 104}) + end, + Func(Module_list, Ignore_tags, Capture_output). + +-spec start_with_args( + list(binary()), + fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> any()) +) -> nil. +start_with_args(Args, Func) -> + Modules_flag = begin + _pipe = glint@flag:string_list(), + _pipe@1 = glint@flag:default(_pipe, []), + glint@flag:description( + _pipe@1, + <<"Run only tests in the modules in this list"/utf8>> + ) + end, + Ignore_flag = begin + _pipe@2 = glint@flag:string_list(), + _pipe@3 = glint@flag:default(_pipe@2, []), + glint@flag:description( + _pipe@3, + <<"Ignore tests that are have tags matching a tag in this list"/utf8>> + ) + end, + Capture_flag = begin + _pipe@4 = glint@flag:string(), + _pipe@5 = glint@flag:default(_pipe@4, <<"no"/utf8>>), + _pipe@6 = glint@flag:constraint( + _pipe@5, + glint@flag@constraint:one_of( + [<<"yes"/utf8>>, <<"no"/utf8>>, <<"mixed"/utf8>>] + ) + ), + glint@flag:description( + _pipe@6, + <<"Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report"/utf8>> + ) + end, + _pipe@7 = glint:new(), + _pipe@12 = glint:add( + _pipe@7, + [], + begin + _pipe@8 = glint:command( + fun(_capture) -> mk_runner(Func, _capture) end + ), + _pipe@9 = glint:flag(_pipe@8, <<"modules"/utf8>>, Modules_flag), + _pipe@10 = glint:flag(_pipe@9, <<"ignore"/utf8>>, Ignore_flag), + _pipe@11 = glint:flag(_pipe@10, <<"capture"/utf8>>, Capture_flag), + glint:description(_pipe@11, <<"Runs test"/utf8>>) + end + ), + _pipe@13 = glint:with_pretty_help(_pipe@12, glint:default_pretty_help()), + glint:run(_pipe@13, Args). + +-spec main() -> nil. +main() -> + start_with_args( + gleam@erlang:start_arguments(), + fun(Module_list, Ignore_tags, Capture) -> + Test_event_handler = showtime@internal@erlang@event_handler:start(), + Test_module_handler = showtime@internal@erlang@module_handler:start( + Test_event_handler, + fun showtime@internal@erlang@discover:collect_test_functions/1, + fun showtime@internal@erlang@runner:run_test_suite/4, + Ignore_tags, + Capture + ), + Test_event_handler(start_test_run), + Modules = showtime@internal@erlang@discover:collect_modules( + Test_module_handler, + Module_list + ), + Test_event_handler( + {end_test_run, + begin + _pipe = Modules, + gleam@list:length(_pipe) + end} + ), + nil + end + ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache new file mode 100644 index 0000000..0dded35 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta new file mode 100644 index 0000000..4c3ebd3 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl new file mode 100644 index 0000000..f2d2396 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl @@ -0,0 +1,8 @@ +-module(showtime@internal@common@cli). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([capture/0]). + +-type capture() :: yes | no | mixed. + + diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache new file mode 100644 index 0000000..df75ed9 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta new file mode 100644 index 0000000..cea0c4b Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl new file mode 100644 index 0000000..5ee9a85 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl @@ -0,0 +1,131 @@ +-module(showtime@internal@common@common_event_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([handle_event/3]). +-export_type([test_state/0, handler_state/0]). + +-type test_state() :: not_started | running | {finished, integer()}. + +-type handler_state() :: {handler_state, + test_state(), + integer(), + gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run()))}. + +-spec handle_event( + showtime@internal@common@test_suite:test_event(), + fun(() -> integer()), + handler_state() +) -> handler_state(). +handle_event(Msg, System_time, State) -> + Test_state = erlang:element(2, State), + Num_done = erlang:element(3, State), + Events = erlang:element(4, State), + {Updated_test_state, Updated_num_done, Updated_events} = case Msg of + start_test_run -> + {running, Num_done, Events}; + + {start_test_suite, Module} -> + Maybe_module_events = gleam@map:get( + Events, + erlang:element(2, Module) + ), + New_events = case Maybe_module_events of + {ok, _} -> + Events; + + {error, _} -> + _pipe = Events, + gleam@map:insert( + _pipe, + erlang:element(2, Module), + gleam@map:new() + ) + end, + {Test_state, Num_done, New_events}; + + {start_test, Module@1, Test} -> + Current_time = System_time(), + Maybe_module_events@1 = gleam@map:get( + Events, + erlang:element(2, Module@1) + ), + New_events@1 = case Maybe_module_events@1 of + {ok, Module_events} -> + Maybe_test_event = gleam@map:get( + Module_events, + erlang:element(2, Test) + ), + case Maybe_test_event of + {error, _} -> + _pipe@1 = Events, + gleam@map:insert( + _pipe@1, + erlang:element(2, Module@1), + begin + _pipe@2 = Module_events, + gleam@map:insert( + _pipe@2, + erlang:element(2, Test), + {ongoing_test_run, Test, Current_time} + ) + end + ); + + {ok, _} -> + Events + end; + + {error, _} -> + Events + end, + {Test_state, Num_done, New_events@1}; + + {end_test, Module@2, Test@1, Result} -> + Current_time@1 = System_time(), + Maybe_module_events@2 = gleam@map:get( + Events, + erlang:element(2, Module@2) + ), + New_events@2 = case Maybe_module_events@2 of + {ok, Module_events@1} -> + Maybe_test_run = begin + _pipe@3 = Module_events@1, + gleam@map:get(_pipe@3, erlang:element(2, Test@1)) + end, + Updated_module_events = case Maybe_test_run of + {ok, {ongoing_test_run, Test_function, Started_at}} -> + _pipe@4 = Module_events@1, + gleam@map:insert( + _pipe@4, + erlang:element(2, Test@1), + {completed_test_run, + Test_function, + Current_time@1 - Started_at, + Result} + ); + + {error, _} -> + Module_events@1 + end, + _pipe@5 = Events, + gleam@map:insert( + _pipe@5, + erlang:element(2, Module@2), + Updated_module_events + ); + + {error, _} -> + Events + end, + {Test_state, Num_done, New_events@2}; + + {end_test_suite, _} -> + {Test_state, Num_done + 1, Events}; + + {end_test_run, Num_modules} -> + {{finished, Num_modules}, Num_done, Events}; + + _ -> + {running, Num_done, Events} + end, + {handler_state, Updated_test_state, Updated_num_done, Updated_events}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache new file mode 100644 index 0000000..c0f776e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta new file mode 100644 index 0000000..ae0cd95 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl new file mode 100644 index 0000000..7f62f4f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl @@ -0,0 +1,54 @@ +-module(showtime@internal@common@test_result). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([ignore_reason/0, test_return/0, exception/0, reason/0, reason_detail/0, gleam_error_detail/0, class/0, trace_list/0, trace/0, extra_info/0, arity_/0]). + +-type ignore_reason() :: ignore. + +-type test_return() :: {test_function_return, + gleam@dynamic:dynamic_(), + list(binary())} | + {ignored, ignore_reason()}. + +-type exception() :: {erlang_exception, + class(), + reason(), + trace_list(), + list(binary())}. + +-type reason() :: {assert_equal, list(reason_detail())} | + {assert_not_equal, list(reason_detail())} | + {assert_match, list(reason_detail())} | + {gleam_error, gleam_error_detail()} | + {gleam_assert, gleam@dynamic:dynamic_(), integer()} | + {generic_exception, gleam@dynamic:dynamic_()}. + +-type reason_detail() :: {module, binary()} | + {reason_line, integer()} | + {expression, binary()} | + {expected, gleam@dynamic:dynamic_()} | + {value, gleam@dynamic:dynamic_()} | + {pattern, binary()}. + +-type gleam_error_detail() :: {let_assert, + binary(), + binary(), + integer(), + binary(), + gleam@dynamic:dynamic_()}. + +-type class() :: erlang_error | exit | throw. + +-type trace_list() :: {trace_list, list(trace())}. + +-type trace() :: {trace, binary(), arity_(), list(extra_info())} | + {trace_module, binary(), binary(), arity_(), list(extra_info())}. + +-type extra_info() :: {error_info, + gleam@dict:dict(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_())} | + {file, binary()} | + {line, integer()}. + +-type arity_() :: {num, integer()} | {arg_list, list(gleam@dynamic:dynamic_())}. + + diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache new file mode 100644 index 0000000..80885b8 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta new file mode 100644 index 0000000..b2139f9 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl new file mode 100644 index 0000000..6a56de8 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl @@ -0,0 +1,30 @@ +-module(showtime@internal@common@test_suite). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([test_run/0, test_module/0, test_function/0, test_suite/0, test_event/0]). + +-type test_run() :: {ongoing_test_run, test_function(), integer()} | + {completed_test_run, + test_function(), + integer(), + {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}}. + +-type test_module() :: {test_module, binary(), gleam@option:option(binary())}. + +-type test_function() :: {test_function, binary()}. + +-type test_suite() :: {test_suite, test_module(), list(test_function())}. + +-type test_event() :: start_test_run | + {start_test_suite, test_module()} | + {start_test, test_module(), test_function()} | + {end_test, + test_module(), + test_function(), + {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}} | + {end_test_suite, test_module()} | + {end_test_run, integer()}. + + diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache new file mode 100644 index 0000000..68f7428 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta new file mode 100644 index 0000000..236dd39 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl new file mode 100644 index 0000000..f0548aa --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl @@ -0,0 +1,230 @@ +-module(showtime@internal@erlang@discover). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([collect_modules/2, collect_test_functions/1]). + +-spec get_module_prefix(binary()) -> binary(). +get_module_prefix(Path) -> + Path_without_test = begin + _pipe = Path, + gleam@string:replace(_pipe, <<"./test"/utf8>>, <<""/utf8>>) + end, + Path_without_leading_slash = case gleam@string:starts_with( + Path_without_test, + <<"/"/utf8>> + ) of + true -> + gleam@string:drop_left(Path_without_test, 1); + + false -> + Path_without_test + end, + Module_prefix = begin + _pipe@1 = Path_without_leading_slash, + gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"@"/utf8>>) + end, + case gleam@string:length(Module_prefix) of + 0 -> + Module_prefix; + + _ -> + <> + end. + +-spec collect_modules_in_folder( + binary(), + fun((showtime@internal@common@test_suite:test_module()) -> nil), + gleam@option:option(list(binary())) +) -> list(showtime@internal@common@test_suite:test_module()). +collect_modules_in_folder(Path, Test_module_handler, Only_modules) -> + Module_prefix = get_module_prefix(Path), + _assert_subject = simplifile:read_directory(Path), + {ok, Files} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_modules_in_folder"/utf8>>, + line => 40}) + end, + Test_modules_in_folder = begin + _pipe = Files, + _pipe@1 = gleam@list:filter( + _pipe, + fun(_capture) -> + gleam@string:ends_with(_capture, <<"_test.gleam"/utf8>>) + end + ), + gleam@list:filter_map( + _pipe@1, + fun(Test_module_file) -> + Module_name = <>, + <<""/utf8>> + ) + end)/binary>>, + case Only_modules of + {some, Only_modules_list} -> + Module_in_list = begin + _pipe@3 = Only_modules_list, + gleam@list:any( + _pipe@3, + fun(Only_module_name) -> + Only_module_name =:= begin + _pipe@4 = Module_name, + gleam@string:replace( + _pipe@4, + <<"@"/utf8>>, + <<"/"/utf8>> + ) + end + end + ) + end, + case Module_in_list of + true -> + Test_module = {test_module, + Module_name, + {some, Test_module_file}}, + Test_module_handler(Test_module), + {ok, Test_module}; + + false -> + {error, nil} + end; + + none -> + Test_module@1 = {test_module, + Module_name, + {some, Test_module_file}}, + Test_module_handler(Test_module@1), + {ok, Test_module@1} + end + end + ) + end, + Test_modules_in_subfolders = begin + _pipe@5 = Files, + _pipe@6 = gleam@list:map( + _pipe@5, + fun(Filename) -> + <<<>/binary, Filename/binary>> + end + ), + _pipe@7 = gleam@list:filter( + _pipe@6, + fun(File) -> simplifile:is_directory(File) end + ), + gleam@list:fold( + _pipe@7, + [], + fun(Modules, Subfolder) -> _pipe@8 = Modules, + gleam@list:append( + _pipe@8, + collect_modules_in_folder( + Subfolder, + Test_module_handler, + Only_modules + ) + ) end + ) + end, + _pipe@9 = Test_modules_in_folder, + gleam@list:append(_pipe@9, Test_modules_in_subfolders). + +-spec collect_modules( + fun((showtime@internal@common@test_suite:test_module()) -> nil), + gleam@option:option(list(binary())) +) -> list(showtime@internal@common@test_suite:test_module()). +collect_modules(Test_module_handler, Only_modules) -> + collect_modules_in_folder( + <<"./test"/utf8>>, + Test_module_handler, + Only_modules + ). + +-spec collect_test_functions(showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite(). +collect_test_functions(Module) -> + Test_functions = begin + _pipe = erlang:apply( + erlang:binary_to_atom(erlang:element(2, Module)), + erlang:binary_to_atom(<<"module_info"/utf8>>), + [gleam@dynamic:from(erlang:binary_to_atom(<<"exports"/utf8>>))] + ), + gleam@dynamic:unsafe_coerce(_pipe) + end, + Test_functions_filtered = begin + _pipe@1 = Test_functions, + _pipe@3 = gleam@list:map( + _pipe@1, + fun(Entry) -> + {Name, Arity} = case Entry of + {_, _} -> Entry; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_test_functions"/utf8>>, + line => 131}) + end, + {begin + _pipe@2 = Name, + erlang:atom_to_binary(_pipe@2) + end, + Arity} + end + ), + _pipe@4 = gleam@list:filter_map( + _pipe@3, + fun(Entry@1) -> + {Name@1, Arity@1} = case Entry@1 of + {_, _} -> Entry@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_test_functions"/utf8>>, + line => 139}) + end, + case gleam@string:ends_with(Name@1, <<"_test"/utf8>>) of + true -> + case Arity@1 of + 0 -> + {ok, Name@1}; + + _ -> + gleam@io:println( + <<<<<<<<"WARNING: function \""/utf8, + Name@1/binary>>/binary, + "\" has arity: "/utf8>>/binary, + (gleam@int:to_string(Arity@1))/binary>>/binary, + " - cannot be used as test (needs to be 0)"/utf8>> + ), + {error, <<"Wrong arity"/utf8>>} + end; + + false -> + {error, <<"Non matching name"/utf8>>} + end + end + ), + _pipe@5 = gleam@list:filter( + _pipe@4, + fun(_capture) -> + gleam@string:ends_with(_capture, <<"_test"/utf8>>) + end + ), + gleam@list:map( + _pipe@5, + fun(Function_name) -> {test_function, Function_name} end + ) + end, + {test_suite, Module, Test_functions_filtered}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache new file mode 100644 index 0000000..60fea12 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta new file mode 100644 index 0000000..1223c48 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl new file mode 100644 index 0000000..d72ce2c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl @@ -0,0 +1,76 @@ +-module(showtime@internal@erlang@event_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([start/0]). +-export_type([event_handler_message/0]). + +-type event_handler_message() :: {event_handler_message, + showtime@internal@common@test_suite:test_event(), + gleam@erlang@process:subject(integer())}. + +-spec system_time() -> integer(). +system_time() -> + os:system_time(millisecond). + +-spec start() -> fun((showtime@internal@common@test_suite:test_event()) -> nil). +start() -> + _assert_subject = gleam@otp@actor:start( + {not_started, 0, gleam@map:new()}, + fun(Msg, State) -> + {event_handler_message, Test_event, Reply_to} = Msg, + {Test_state, Num_done, Events} = State, + Updated_state = showtime@internal@common@common_event_handler:handle_event( + Test_event, + fun system_time/0, + {handler_state, Test_state, Num_done, Events} + ), + case Updated_state of + {handler_state, {finished, Num_modules}, Num_done@1, Events@1} when Num_done@1 =:= Num_modules -> + {Test_report, Num_failed} = showtime@internal@reports@formatter:create_test_report( + Events@1 + ), + gleam@io:println(Test_report), + gleam@erlang@process:send(Reply_to, Num_failed), + {stop, normal}; + + {handler_state, Test_state@1, Num_done@2, Events@2} -> + {continue, {Test_state@1, Num_done@2, Events@2}, none} + end + end + ), + {ok, Subject} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/event_handler"/utf8>>, + function => <<"start"/utf8>>, + line => 32}) + end, + Parent_subject = gleam@erlang@process:new_subject(), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + gleam@erlang@process:selecting(_pipe, Parent_subject, fun(X) -> X end) + end, + fun(Test_event@1) -> case Test_event@1 of + {end_test_run, _} -> + gleam@erlang@process:send( + Subject, + {event_handler_message, Test_event@1, Parent_subject} + ), + Num_failed@1 = gleam_erlang_ffi:select(Selector), + case Num_failed@1 > 0 of + true -> + erlang:halt(1); + + false -> + erlang:halt(0) + end; + + _ -> + gleam@erlang@process:send( + Subject, + {event_handler_message, Test_event@1, Parent_subject} + ) + end end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache new file mode 100644 index 0000000..6b896ec Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta new file mode 100644 index 0000000..7cd0c75 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl new file mode 100644 index 0000000..a6959f5 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl @@ -0,0 +1,53 @@ +-module(showtime@internal@erlang@module_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([start/5]). + +-spec start( + fun((showtime@internal@common@test_suite:test_event()) -> nil), + fun((showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite()), + fun((showtime@internal@common@test_suite:test_suite(), fun((showtime@internal@common@test_suite:test_event()) -> nil), list(binary()), showtime@internal@common@cli:capture()) -> nil), + list(binary()), + showtime@internal@common@cli:capture() +) -> fun((showtime@internal@common@test_suite:test_module()) -> nil). +start( + Test_event_handler, + Test_function_collector, + Run_test_suite, + Ignore_tags, + Capture +) -> + _assert_subject = gleam@otp@actor:start( + nil, + fun(Module, State) -> + gleam@erlang@process:start( + fun() -> + Test_suite = Test_function_collector(Module), + Test_event_handler({start_test_suite, Module}), + Run_test_suite( + Test_suite, + Test_event_handler, + Ignore_tags, + Capture + ), + Test_event_handler({end_test_suite, Module}) + end, + false + ), + {continue, State, none} + end + ), + {ok, Subject} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/module_handler"/utf8>>, + function => <<"start"/utf8>>, + line => 23}) + end, + fun(Test_module) -> + gleam@erlang@process:send(Subject, Test_module), + nil + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache new file mode 100644 index 0000000..91e7663 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta new file mode 100644 index 0000000..069c9cf Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl new file mode 100644 index 0000000..702fb75 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl @@ -0,0 +1,46 @@ +-module(showtime@internal@erlang@runner). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([run_test/4, run_test_suite/4]). + +-spec run_test( + binary(), + binary(), + list(binary()), + showtime@internal@common@cli:capture() +) -> {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}. +run_test(Module_name, Test_name, Ignore_tags, Capture) -> + Result = showtime_ffi:run_test( + erlang:binary_to_atom(Module_name), + erlang:binary_to_atom(Test_name), + Ignore_tags, + Capture + ), + Result. + +-spec run_test_suite( + showtime@internal@common@test_suite:test_suite(), + fun((showtime@internal@common@test_suite:test_event()) -> nil), + list(binary()), + showtime@internal@common@cli:capture() +) -> nil. +run_test_suite(Test_suite, Test_event_handler, Ignore_tags, Capture) -> + _pipe = erlang:element(3, Test_suite), + gleam@list:each( + _pipe, + fun(Test) -> + Test_event_handler( + {start_test, erlang:element(2, Test_suite), Test} + ), + Result = run_test( + erlang:element(2, erlang:element(2, Test_suite)), + erlang:element(2, Test), + Ignore_tags, + Capture + ), + Test_event_handler( + {end_test, erlang:element(2, Test_suite), Test, Result} + ) + end + ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache new file mode 100644 index 0000000..bf88ac7 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta new file mode 100644 index 0000000..be99189 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl new file mode 100644 index 0000000..d2969b2 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl @@ -0,0 +1,61 @@ +-module(showtime@internal@reports@compare). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compare/2]). + +-spec compare(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> {binary(), + binary()}. +compare(Expected, Got) -> + Expected_as_list = begin + _pipe = Expected, + (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe) + end, + Got_as_list = begin + _pipe@1 = Got, + (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe@1) + end, + Expected_as_string = begin + _pipe@2 = Expected, + gleam@dynamic:string(_pipe@2) + end, + Got_as_string = begin + _pipe@3 = Got, + gleam@dynamic:string(_pipe@3) + end, + case {Expected_as_list, Got_as_list, Expected_as_string, Got_as_string} of + {{ok, Expected_list}, {ok, Got_list}, _, _} -> + Comparison = begin + _pipe@4 = gap:compare_lists(Expected_list, Got_list), + _pipe@5 = gap@styling:from_comparison(_pipe@4), + _pipe@6 = gap@styling:highlight( + _pipe@5, + fun showtime@internal@reports@styles:expected_highlight/1, + fun showtime@internal@reports@styles:got_highlight/1, + fun(Item) -> Item end + ), + gap@styling:to_styled_comparison(_pipe@6) + end, + {erlang:element(2, Comparison), erlang:element(3, Comparison)}; + + {_, _, {ok, Expected_string}, {ok, Got_string}} -> + Comparison@1 = begin + _pipe@7 = gap:compare_strings(Expected_string, Got_string), + _pipe@8 = gap@styling:from_comparison(_pipe@7), + _pipe@9 = gap@styling:highlight( + _pipe@8, + fun showtime@internal@reports@styles:expected_highlight/1, + fun showtime@internal@reports@styles:got_highlight/1, + fun(Item@1) -> Item@1 end + ), + gap@styling:to_styled_comparison(_pipe@9) + end, + {erlang:element(2, Comparison@1), erlang:element(3, Comparison@1)}; + + {_, _, _, _} -> + {showtime@internal@reports@styles:expected_highlight( + gleam@string:inspect(Expected) + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got) + )} + end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache new file mode 100644 index 0000000..58b0250 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta new file mode 100644 index 0000000..86e3c59 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl new file mode 100644 index 0000000..4022bed --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl @@ -0,0 +1,749 @@ +-module(showtime@internal@reports@formatter). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([create_test_report/1]). +-export_type([glee_unit_assertion_type/0, module_and_test/0, unified_error/0]). + +-type glee_unit_assertion_type() :: {glee_unit_assert_equal, binary()} | + {glee_unit_assert_not_equal, binary()} | + {glee_unit_assert_match, binary()}. + +-type module_and_test() :: {module_and_test_run, + binary(), + showtime@internal@common@test_suite:test_run()}. + +-type unified_error() :: {unified_error, + gleam@option:option(showtime@tests@meta:meta()), + binary(), + binary(), + binary(), + binary(), + gleam@option:option(integer()), + list(showtime@internal@common@test_result:trace())}. + +-spec erlang_error_to_unified( + list(showtime@internal@common@test_result:reason_detail()), + glee_unit_assertion_type(), + list(showtime@internal@common@test_result:trace()) +) -> unified_error(). +erlang_error_to_unified(Error_details, Assertion_type, Stacktrace) -> + _pipe = Error_details, + gleam@list:fold( + _pipe, + {unified_error, + none, + <<"not_set"/utf8>>, + erlang:element(2, Assertion_type), + <<""/utf8>>, + <<""/utf8>>, + none, + Stacktrace}, + fun(Unified, Reason) -> case Reason of + {expression, Expression} -> + erlang:setelement(3, Unified, Expression); + + {expected, Value} -> + case Assertion_type of + {glee_unit_assert_equal, _} -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + gleam@string:inspect(Value) + ) + ); + + _ -> + Unified + end; + + {value, Value@1} -> + case Assertion_type of + {glee_unit_assert_not_equal, _} -> + erlang:setelement( + 6, + erlang:setelement( + 5, + Unified, + <<(showtime@internal@reports@styles:not_style( + <<"not "/utf8>> + ))/binary, + (gleam@string:inspect(Value@1))/binary>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Value@1) + ) + ); + + _ -> + erlang:setelement( + 6, + Unified, + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Value@1) + ) + ) + end; + + {pattern, Pattern} -> + case Pattern of + <<"{ ok , _ }"/utf8>> -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + <<"Ok(_)"/utf8>> + ) + ); + + <<"{ error , _ }"/utf8>> -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + <<"Error(_)"/utf8>> + ) + ); + + _ -> + Unified + end; + + _ -> + Unified + end end + ). + +-spec gleam_error_to_unified( + showtime@internal@common@test_result:gleam_error_detail(), + list(showtime@internal@common@test_result:trace()) +) -> unified_error(). +gleam_error_to_unified(Gleam_error, Stacktrace) -> + case Gleam_error of + {let_assert, _, _, _, _, Value} -> + Result = gleam@dynamic:unsafe_coerce(Value), + {error, Assertion} = case Result of + {error, _} -> Result; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/reports/formatter"/utf8>>, + function => <<"gleam_error_to_unified"/utf8>>, + line => 293}) + end, + case Assertion of + {eq, Got, Expected, Meta} -> + {Expected@1, Got@1} = showtime@internal@reports@compare:compare( + Expected, + Got + ), + {unified_error, + Meta, + <<"assert"/utf8>>, + <<"Assert equal"/utf8>>, + Expected@1, + Got@1, + none, + Stacktrace}; + + {not_eq, Got@2, Expected@2, Meta@1} -> + {unified_error, + Meta@1, + <<"assert"/utf8>>, + <<"Assert not equal"/utf8>>, + <<(showtime@internal@reports@styles:not_style( + <<"not "/utf8>> + ))/binary, + (gleam@string:inspect(Expected@2))/binary>>, + gleam@string:inspect(Got@2), + none, + Stacktrace}; + + {is_ok, Got@3, Meta@2} -> + {unified_error, + Meta@2, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:expected_highlight( + <<"Ok(_)"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got@3) + ), + none, + Stacktrace}; + + {is_error, Got@4, Meta@3} -> + {unified_error, + Meta@3, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:expected_highlight( + <<"Error(_)"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got@4) + ), + none, + Stacktrace}; + + {fail, Meta@4} -> + {unified_error, + Meta@4, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:got_highlight( + <<"should.fail()"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + <<"N/A - test always expected to fail"/utf8>> + ), + none, + Stacktrace} + end + end. + +-spec format_reason(unified_error(), binary(), binary(), list(binary())) -> list(list(showtime@internal@reports@table:col())). +format_reason(Error, Module, Function, Output_buffer) -> + Meta@1 = case erlang:element(2, Error) of + {some, Meta} -> + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Description"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, {content, erlang:element(2, Meta)}, 0}]}; + + none -> + none + end, + Stacktrace = begin + _pipe = erlang:element(8, Error), + gleam@list:map(_pipe, fun(Trace) -> case Trace of + {trace, Function@1, _, _} when Function@1 =:= <<""/utf8>> -> + <<"(anonymous)"/utf8>>; + + {trace_module, Module@1, Function@2, _, _} when Function@2 =:= <<""/utf8>> -> + <<<>/binary, + "(anonymous)"/utf8>>; + + {trace, Function@3, _, _} -> + Function@3; + + {trace_module, Module@2, Function@4, _, _} -> + <<<>/binary, + Function@4/binary>> + end end) + end, + Stacktrace_rows = case Stacktrace of + [] -> + []; + + [First | Rest] -> + First_row = {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Stacktrace"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + First + )}, + 0}]}, + Rest_rows = begin + _pipe@1 = Rest, + gleam@list:map( + _pipe@1, + fun(Row) -> + {some, + [{align_right, {content, <<""/utf8>>}, 2}, + {separator, <<" "/utf8>>}, + {align_left, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + Row + )}, + 0}]} + end + ) + end, + [First_row | Rest_rows] + end, + Output_rows = case begin + _pipe@2 = Output_buffer, + _pipe@3 = gleam@list:reverse(_pipe@2), + gleam@list:map( + _pipe@3, + fun(Row@1) -> gleam@string:trim_right(Row@1) end + ) + end of + [] -> + []; + + [First@1 | Rest@1] -> + First_row@1 = {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Output"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + First@1 + )}, + 0}]}, + Rest_rows@1 = begin + _pipe@4 = Rest@1, + gleam@list:map( + _pipe@4, + fun(Row@2) -> + {some, + [{align_right, {content, <<""/utf8>>}, 2}, + {separator, <<" "/utf8>>}, + {align_left_overflow, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + Row@2 + )}, + 0}]} + end + ) + end, + [First_row@1 | Rest_rows@1] + end, + Line@1 = begin + _pipe@5 = erlang:element(7, Error), + _pipe@6 = gleam@option:map( + _pipe@5, + fun(Line) -> <<":"/utf8, (gleam@int:to_string(Line))/binary>> end + ), + gleam@option:unwrap(_pipe@6, <<""/utf8>>) + end, + Arrow = <<(gleam@string:join( + gleam@list:repeat( + <<"-"/utf8>>, + (gleam@string:length(Module) + 1) + ((gleam@string:length( + Function + ) + + gleam@string:length(Line@1)) + div 2) + ), + <<""/utf8>> + ))/binary, + "⌄"/utf8>>, + Standard_table_rows = [{some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:error_style( + <<"Failed"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, {content, Arrow}, 0}]}, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Test"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, + {styled_content, + <<<>/binary, + (showtime@internal@reports@styles:function_style( + <> + ))/binary>>}, + 0}]}, + Meta@1, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Expected"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, erlang:element(5, Error)}, + 0}]}, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Got"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, erlang:element(6, Error)}, + 0}]}], + _pipe@7 = Standard_table_rows, + _pipe@8 = gleam@list:append(_pipe@7, Stacktrace_rows), + _pipe@9 = gleam@list:append(_pipe@8, Output_rows), + _pipe@10 = gleam@list:append( + _pipe@9, + [{some, + [{align_right, {content, <<""/utf8>>}, 0}, + {align_right, {content, <<""/utf8>>}, 0}, + {align_right, {content, <<""/utf8>>}, 0}]}] + ), + gleam@list:filter_map( + _pipe@10, + fun(Row@3) -> gleam@option:to_result(Row@3, nil) end + ). + +-spec create_test_report( + gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run())) +) -> {binary(), integer()}. +create_test_report(Test_results) -> + All_test_runs = begin + _pipe = Test_results, + _pipe@1 = gleam@map:values(_pipe), + gleam@list:flat_map(_pipe@1, fun gleam@map:values/1) + end, + Failed_test_runs = begin + _pipe@2 = Test_results, + _pipe@3 = gleam@map:to_list(_pipe@2), + gleam@list:flat_map( + _pipe@3, + fun(Entry) -> + {Module_name, Test_module_results} = Entry, + _pipe@4 = Test_module_results, + _pipe@5 = gleam@map:values(_pipe@4), + gleam@list:filter_map(_pipe@5, fun(Test_run) -> case Test_run of + {completed_test_run, _, _, Result} -> + case Result of + {error, _} -> + {ok, + {module_and_test_run, + Module_name, + Test_run}}; + + {ok, {ignored, _}} -> + {error, nil}; + + {ok, _} -> + {error, nil} + end; + + _ -> + _pipe@6 = Test_run, + gleam@io:debug(_pipe@6), + {error, nil} + end end) + end + ) + end, + Ignored_test_runs = begin + _pipe@7 = Test_results, + _pipe@8 = gleam@map:to_list(_pipe@7), + gleam@list:flat_map( + _pipe@8, + fun(Entry@1) -> + {Module_name@1, Test_module_results@1} = Entry@1, + _pipe@9 = Test_module_results@1, + _pipe@10 = gleam@map:values(_pipe@9), + gleam@list:filter_map( + _pipe@10, + fun(Test_run@1) -> case Test_run@1 of + {completed_test_run, Test_function, _, Result@1} -> + case Result@1 of + {ok, {ignored, Reason}} -> + {ok, + {<<<>/binary, + (erlang:element( + 2, + Test_function + ))/binary>>, + Reason}}; + + _ -> + {error, nil} + end; + + _ -> + {error, nil} + end end + ) + end + ) + end, + Failed_tests_report = begin + _pipe@11 = Failed_test_runs, + _pipe@12 = gleam@list:filter_map( + _pipe@11, + fun(Module_and_test_run) -> + case erlang:element(3, Module_and_test_run) of + {completed_test_run, Test_function@1, _, Result@2} -> + case Result@2 of + {error, Exception} -> + case erlang:element(3, Exception) of + {assert_equal, Reason_details} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details, + {glee_unit_assert_equal, + <<"Assert equal"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {assert_not_equal, Reason_details@1} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details@1, + {glee_unit_assert_not_equal, + <<"Assert not equal"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {assert_match, Reason_details@2} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details@2, + {glee_unit_assert_match, + <<"Assert match"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {gleam_error, Reason@1} -> + {ok, + format_reason( + gleam_error_to_unified( + Reason@1, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {gleam_assert, Value, Line_no} -> + {ok, + format_reason( + {unified_error, + none, + <<"gleam assert"/utf8>>, + <<"Assert failed"/utf8>>, + <<"Patterns should match"/utf8>>, + showtime@internal@reports@styles:error_style( + gleam@string:inspect( + Value + ) + ), + {some, Line_no}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + )}, + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {generic_exception, Value@1} -> + {ok, + format_reason( + {unified_error, + none, + <<"generic exception"/utf8>>, + <<"Test function threw an exception"/utf8>>, + <<"Exception in test function"/utf8>>, + showtime@internal@reports@styles:error_style( + gleam@string:inspect( + Value@1 + ) + ), + none, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + )}, + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + Other -> + gleam@io:println( + <<"Other: "/utf8, + (gleam@string:inspect(Other))/binary>> + ), + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"showtime/internal/reports/formatter"/utf8>>, + function => <<"create_test_report"/utf8>>, + line => 178}), + {error, nil} + end; + + _ -> + {error, nil} + end; + + _ -> + {error, nil} + end + end + ), + gleam@list:fold( + _pipe@12, + [], + fun(Rows, Test_rows) -> gleam@list:append(Rows, Test_rows) end + ) + end, + All_test_execution_time_reports = begin + _pipe@13 = All_test_runs, + gleam@list:filter_map(_pipe@13, fun(Test_run@2) -> case Test_run@2 of + {completed_test_run, Test_function@2, Total_time, _} -> + {ok, + <<<<<<(erlang:element(2, Test_function@2))/binary, + ": "/utf8>>/binary, + (gleam@int:to_string(Total_time))/binary>>/binary, + " ms"/utf8>>}; + + _ -> + {error, nil} + end end) + end, + _ = begin + _pipe@14 = All_test_execution_time_reports, + gleam@string:join(_pipe@14, <<"\n"/utf8>>) + end, + All_tests_count = begin + _pipe@15 = All_test_runs, + gleam@list:length(_pipe@15) + end, + Ignored_tests_count = begin + _pipe@16 = Ignored_test_runs, + gleam@list:length(_pipe@16) + end, + Failed_tests_count = begin + _pipe@17 = Failed_test_runs, + gleam@list:length(_pipe@17) + end, + Passed = showtime@internal@reports@styles:passed_style( + <<(gleam@int:to_string( + (All_tests_count - Failed_tests_count) - Ignored_tests_count + ))/binary, + " passed"/utf8>> + ), + Failed = showtime@internal@reports@styles:failed_style( + <<(gleam@int:to_string(Failed_tests_count))/binary, " failed"/utf8>> + ), + Ignored = case Ignored_tests_count of + 0 -> + <<""/utf8>>; + + _ -> + <<", "/utf8, + (showtime@internal@reports@styles:ignored_style( + <<(gleam@int:to_string(Ignored_tests_count))/binary, + " ignored"/utf8>> + ))/binary>> + end, + Failed_tests_table = begin + _pipe@18 = {table, none, Failed_tests_report}, + _pipe@19 = showtime@internal@reports@table:align_table(_pipe@18), + showtime@internal@reports@table:to_string(_pipe@19) + end, + Test_report = <<<<<<<<<<<<"\n"/utf8, Failed_tests_table/binary>>/binary, + "\n"/utf8>>/binary, + Passed/binary>>/binary, + ", "/utf8>>/binary, + Failed/binary>>/binary, + Ignored/binary>>, + {Test_report, Failed_tests_count}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache new file mode 100644 index 0000000..7dd3121 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta new file mode 100644 index 0000000..c0078b3 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl new file mode 100644 index 0000000..ec6230c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl @@ -0,0 +1,93 @@ +-module(showtime@internal@reports@styles). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([not_style/1, module_style/1, heading_style/1, stacktrace_style/1, failed_style/1, error_style/1, got_highlight/1, passed_style/1, expected_highlight/1, ignored_style/1, function_style/1, strip_style/1]). + +-spec not_style(binary()) -> binary(). +not_style(Text) -> + gleam_community@ansi:bold(Text). + +-spec module_style(binary()) -> binary(). +module_style(Text) -> + gleam_community@ansi:cyan(Text). + +-spec heading_style(binary()) -> binary(). +heading_style(Text) -> + gleam_community@ansi:cyan(Text). + +-spec stacktrace_style(binary()) -> binary(). +stacktrace_style(Text) -> + Text. + +-spec bold_red(binary()) -> binary(). +bold_red(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:red(Text)). + +-spec failed_style(binary()) -> binary(). +failed_style(Text) -> + bold_red(Text). + +-spec error_style(binary()) -> binary(). +error_style(Text) -> + bold_red(Text). + +-spec got_highlight(binary()) -> binary(). +got_highlight(Text) -> + bold_red(Text). + +-spec bold_green(binary()) -> binary(). +bold_green(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:green(Text)). + +-spec passed_style(binary()) -> binary(). +passed_style(Text) -> + bold_green(Text). + +-spec expected_highlight(binary()) -> binary(). +expected_highlight(Text) -> + bold_green(Text). + +-spec bold_yellow(binary()) -> binary(). +bold_yellow(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:yellow(Text)). + +-spec ignored_style(binary()) -> binary(). +ignored_style(Text) -> + bold_yellow(Text). + +-spec bold_cyan(binary()) -> binary(). +bold_cyan(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:cyan(Text)). + +-spec function_style(binary()) -> binary(). +function_style(Text) -> + bold_cyan(Text). + +-spec strip_style(binary()) -> binary(). +strip_style(Text) -> + {New_text, _} = begin + _pipe = Text, + _pipe@1 = gleam@string:to_graphemes(_pipe), + gleam@list:fold( + _pipe@1, + {<<""/utf8>>, false}, + fun(Acc, Char) -> + {Str, Removing} = Acc, + Bit_char = gleam_stdlib:identity(Char), + case {Bit_char, Removing} of + {<<16#1b>>, _} -> + {Str, true}; + + {<<16#6d>>, true} -> + {Str, false}; + + {_, true} -> + {Str, true}; + + {_, false} -> + {<>, false} + end + end + ) + end, + New_text. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache new file mode 100644 index 0000000..61c532d Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta new file mode 100644 index 0000000..080524c Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl new file mode 100644 index 0000000..35dbba3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl @@ -0,0 +1,229 @@ +-module(showtime@internal@reports@table). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_string/1, align_table/1]). +-export_type([content/0, col/0, table/0]). + +-type content() :: {content, binary()} | {styled_content, binary()}. + +-type col() :: {align_right, content(), integer()} | + {align_left, content(), integer()} | + {align_right_overflow, content(), integer()} | + {align_left_overflow, content(), integer()} | + {separator, binary()} | + {aligned, binary()}. + +-type table() :: {table, gleam@option:option(binary()), list(list(col()))}. + +-spec to_string(table()) -> binary(). +to_string(Table) -> + Rows = begin + _pipe = erlang:element(3, Table), + _pipe@3 = gleam@list:map(_pipe, fun(Row) -> _pipe@1 = Row, + _pipe@2 = gleam@list:filter_map(_pipe@1, fun(Col) -> case Col of + {separator, Char} -> + {ok, Char}; + + {aligned, Content} -> + {ok, Content}; + + _ -> + {error, nil} + end end), + gleam@string:join(_pipe@2, <<""/utf8>>) end), + gleam@string:join(_pipe@3, <<"\n"/utf8>>) + end, + Header@1 = begin + _pipe@4 = erlang:element(2, Table), + _pipe@5 = gleam@option:map( + _pipe@4, + fun(Header) -> <

> end + ), + gleam@option:unwrap(_pipe@5, <<""/utf8>>) + end, + <>. + +-spec pad_left(binary(), integer(), binary()) -> binary(). +pad_left(Str, Num, Char) -> + Padding = begin + _pipe = gleam@list:repeat(Char, Num), + gleam@string:join(_pipe, <<""/utf8>>) + end, + <>. + +-spec pad_right(binary(), integer(), binary()) -> binary(). +pad_right(Str, Num, Char) -> + Padding = begin + _pipe = gleam@list:repeat(Char, Num), + gleam@string:join(_pipe, <<""/utf8>>) + end, + <>. + +-spec align_table(table()) -> table(). +align_table(Table) -> + Cols = begin + _pipe = erlang:element(3, Table), + gleam@list:transpose(_pipe) + end, + Col_width = begin + _pipe@1 = Cols, + gleam@list:map(_pipe@1, fun(Col) -> _pipe@2 = Col, + _pipe@3 = gleam@list:map( + _pipe@2, + fun(Content) -> case Content of + {align_right, {content, Unstyled}, _} -> + Unstyled; + + {align_right, {styled_content, Styled}, _} -> + showtime@internal@reports@styles:strip_style( + Styled + ); + + {align_left, {content, Unstyled@1}, _} -> + Unstyled@1; + + {align_left, {styled_content, Styled@1}, _} -> + showtime@internal@reports@styles:strip_style( + Styled@1 + ); + + {align_left_overflow, _, _} -> + <<""/utf8>>; + + {align_right_overflow, _, _} -> + <<""/utf8>>; + + {separator, Char} -> + Char; + + {aligned, Content@1} -> + Content@1 + end end + ), + gleam@list:fold( + _pipe@3, + 0, + fun(Max, Str) -> + gleam@int:max(Max, gleam@string:length(Str)) + end + ) end) + end, + Aligned_col = begin + _pipe@4 = Cols, + _pipe@5 = gleam@list:zip(_pipe@4, Col_width), + gleam@list:map( + _pipe@5, + fun(Col_and_width) -> + {Col@1, Width} = Col_and_width, + _pipe@6 = Col@1, + gleam@list:map(_pipe@6, fun(Content@2) -> case Content@2 of + {align_right, {content, Unstyled@2}, Margin} -> + {aligned, + pad_left( + Unstyled@2, + (Width + Margin) - gleam@string:length( + Unstyled@2 + ), + <<" "/utf8>> + )}; + + {align_right, {styled_content, Styled@2}, Margin@1} -> + {aligned, + pad_left( + Styled@2, + (Width + Margin@1) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@2 + ) + ), + <<" "/utf8>> + )}; + + {align_right_overflow, + {content, Unstyled@3}, + Margin@2} -> + {aligned, + pad_left( + Unstyled@3, + (Width + Margin@2) - gleam@string:length( + Unstyled@3 + ), + <<" "/utf8>> + )}; + + {align_right_overflow, + {styled_content, Styled@3}, + Margin@3} -> + {aligned, + pad_left( + Styled@3, + (Width + Margin@3) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@3 + ) + ), + <<" "/utf8>> + )}; + + {align_left, {content, Unstyled@4}, Margin@4} -> + {aligned, + pad_right( + Unstyled@4, + (Width + Margin@4) - gleam@string:length( + Unstyled@4 + ), + <<" "/utf8>> + )}; + + {align_left, {styled_content, Styled@4}, Margin@5} -> + {aligned, + pad_right( + Styled@4, + (Width + Margin@5) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@4 + ) + ), + <<" "/utf8>> + )}; + + {align_left_overflow, + {content, Unstyled@5}, + Margin@6} -> + {aligned, + pad_right( + Unstyled@5, + (Width + Margin@6) - gleam@string:length( + Unstyled@5 + ), + <<" "/utf8>> + )}; + + {align_left_overflow, + {styled_content, Styled@5}, + Margin@7} -> + {aligned, + pad_right( + Styled@5, + (Width + Margin@7) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@5 + ) + ), + <<" "/utf8>> + )}; + + {separator, Char@1} -> + {separator, Char@1}; + + {aligned, Content@3} -> + {aligned, Content@3} + end end) + end + ) + end, + Aligned_rows = begin + _pipe@7 = Aligned_col, + gleam@list:transpose(_pipe@7) + end, + erlang:setelement(3, Table, Aligned_rows). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache new file mode 100644 index 0000000..4aa8df1 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta new file mode 100644 index 0000000..7f1bdda Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl new file mode 100644 index 0000000..c975467 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl @@ -0,0 +1,8 @@ +-module(showtime@tests@meta). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([meta/0]). + +-type meta() :: {meta, binary(), list(binary())}. + + diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache new file mode 100644 index 0000000..90d3838 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta new file mode 100644 index 0000000..fcc4e8a Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl new file mode 100644 index 0000000..05bea8f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl @@ -0,0 +1,143 @@ +-module(showtime@tests@should). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([evaluate/1, equal/2, equal_meta/3, not_equal/2, not_equal_meta/3, be_ok/1, be_ok_meta/2, be_error/1, be_error_meta/2, fail/0, fail_meta/1, be_true/1, be_true_meta/2, be_false/1, be_false_meta/2]). +-export_type([assertion/2]). + +-type assertion(MXN, MXO) :: {eq, + MXN, + MXN, + gleam@option:option(showtime@tests@meta:meta())} | + {not_eq, MXN, MXN, gleam@option:option(showtime@tests@meta:meta())} | + {is_ok, + {ok, MXN} | {error, MXO}, + gleam@option:option(showtime@tests@meta:meta())} | + {is_error, + {ok, MXN} | {error, MXO}, + gleam@option:option(showtime@tests@meta:meta())} | + {fail, gleam@option:option(showtime@tests@meta:meta())}. + +-spec evaluate(assertion(any(), any())) -> nil. +evaluate(Assertion) -> + case Assertion of + {eq, A, B, _} -> + case A =:= B of + true -> + nil; + + false -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {not_eq, A@1, B@1, _} -> + case A@1 /= B@1 of + true -> + nil; + + false -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {is_ok, A@2, _} -> + case A@2 of + {ok, _} -> + nil; + + {error, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {is_error, A@3, _} -> + case A@3 of + {error, _} -> + nil; + + {ok, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {fail, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end. + +-spec equal(MXP, MXP) -> nil. +equal(A, B) -> + evaluate({eq, A, B, none}). + +-spec equal_meta(MXR, MXR, showtime@tests@meta:meta()) -> nil. +equal_meta(A, B, Meta) -> + evaluate({eq, A, B, {some, Meta}}). + +-spec not_equal(MXT, MXT) -> nil. +not_equal(A, B) -> + evaluate({not_eq, A, B, none}). + +-spec not_equal_meta(MXV, MXV, showtime@tests@meta:meta()) -> nil. +not_equal_meta(A, B, Meta) -> + evaluate({not_eq, A, B, {some, Meta}}). + +-spec be_ok({ok, MXX} | {error, any()}) -> MXX. +be_ok(A) -> + evaluate({is_ok, A, none}), + {ok, Value} = case A of + {ok, _} -> A; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/tests/should"/utf8>>, + function => <<"be_ok"/utf8>>, + line => 30}) + end, + Value. + +-spec be_ok_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_ok_meta(A, Meta) -> + evaluate({is_ok, A, {some, Meta}}). + +-spec be_error({ok, any()} | {error, MYI}) -> MYI. +be_error(A) -> + evaluate({is_error, A, none}), + {error, Value} = case A of + {error, _} -> A; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/tests/should"/utf8>>, + function => <<"be_error"/utf8>>, + line => 40}) + end, + Value. + +-spec be_error_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_error_meta(A, Meta) -> + evaluate({is_error, A, {some, Meta}}). + +-spec fail() -> nil. +fail() -> + evaluate({fail, none}). + +-spec fail_meta(showtime@tests@meta:meta()) -> nil. +fail_meta(Meta) -> + evaluate({fail, {some, Meta}}). + +-spec be_true(boolean()) -> nil. +be_true(A) -> + _pipe = A, + equal(_pipe, true). + +-spec be_true_meta(boolean(), showtime@tests@meta:meta()) -> nil. +be_true_meta(A, Meta) -> + _pipe = A, + equal_meta(_pipe, true, Meta). + +-spec be_false(boolean()) -> nil. +be_false(A) -> + _pipe = A, + equal(_pipe, false). + +-spec be_false_meta(boolean(), showtime@tests@meta:meta()) -> nil. +be_false_meta(A, Meta) -> + _pipe = A, + equal_meta(_pipe, false, Meta). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache new file mode 100644 index 0000000..d07ea1b Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta new file mode 100644 index 0000000..8354c6f Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl new file mode 100644 index 0000000..2f65614 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl @@ -0,0 +1,57 @@ +-module(showtime@tests@test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([test/2, equal/3, not_equal/3, with_meta/2, be_ok/2, be_error/2, fail/1, be_true/2, be_false/2]). +-export_type([test/0, meta_should/1]). + +-type test() :: {test, showtime@tests@meta:meta(), fun(() -> nil)}. + +-type meta_should(OKH) :: {meta_should, + fun((OKH, OKH) -> nil), + fun((OKH, OKH) -> nil)}. + +-spec test(showtime@tests@meta:meta(), fun((showtime@tests@meta:meta()) -> nil)) -> test(). +test(Meta, Test_function) -> + {test, Meta, fun() -> Test_function(Meta) end}. + +-spec equal(OKM, OKM, showtime@tests@meta:meta()) -> nil. +equal(A, B, Meta) -> + gleam@io:debug(A), + gleam@io:debug(B), + showtime@tests@should:equal_meta(A, B, Meta). + +-spec not_equal(OKO, OKO, showtime@tests@meta:meta()) -> nil. +not_equal(A, B, Meta) -> + showtime@tests@should:equal_meta(A, B, Meta). + +-spec with_meta(showtime@tests@meta:meta(), fun((meta_should(any())) -> nil)) -> test(). +with_meta(Meta, Test_function) -> + {test, + Meta, + fun() -> + Test_function( + {meta_should, + fun(A, B) -> equal(A, B, Meta) end, + fun(A@1, B@1) -> not_equal(A@1, B@1, Meta) end} + ) + end}. + +-spec be_ok({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_ok(A, Meta) -> + showtime@tests@should:be_ok_meta(A, Meta). + +-spec be_error({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_error(A, Meta) -> + showtime@tests@should:be_error_meta(A, Meta). + +-spec fail(showtime@tests@meta:meta()) -> nil. +fail(Meta) -> + showtime@tests@should:fail_meta(Meta). + +-spec be_true(boolean(), showtime@tests@meta:meta()) -> nil. +be_true(A, Meta) -> + showtime@tests@should:be_true_meta(A, Meta). + +-spec be_false(boolean(), showtime@tests@meta:meta()) -> nil. +be_false(A, Meta) -> + showtime@tests@should:be_false_meta(A, Meta). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl new file mode 100644 index 0000000..3259623 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl @@ -0,0 +1,187 @@ +-module(showtime_ffi). + +-export([run_test/4, functions/0, capture_output/1, gleam_error/1]). + +gleam_error(Value) -> + erlang:error(#{ + gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => Value, + module => <<"this/is/not/used"/utf8>>, + function => <<"gleam_error"/utf8>>, + % Not used + line => 0 + }). + +start_output_capture(Capture) -> + OldGroupLeader = group_leader(), + CapturePid = spawn(showtime_ffi, capture_output, [{[], {OldGroupLeader, Capture}}]), + group_leader(CapturePid, self()), + {CapturePid, OldGroupLeader}. + +stop_output_capture({CapturePid, OldGroupLeader}) -> + group_leader(OldGroupLeader, self()), + CapturePid ! {capture_done, self()}, + receive + Buffer -> + Buffer + end. + +capture_output({Buffer, {OldGroupLeader, Capture}}) -> + receive + {io_request, From, ReplyAs, {put_chars, unicode, BitString}} -> + case Capture of + yes -> + From ! {io_reply, ReplyAs, ok}, + capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); + mixed -> + OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, + capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); + no -> + OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, + capture_output({Buffer, {OldGroupLeader, Capture}}) + end; + {capture_done, SenderPid} -> + SenderPid ! Buffer; + OtherMessage -> + OldGroupLeader ! OtherMessage, + capture_output({Buffer, {OldGroupLeader, Capture}}) + end. + +run_test(Module, Function, IgnoreTags, Capture) -> + OutputCapture = start_output_capture(Capture), + try + Result = apply(Module, Function, []), + {ResultType, FinalResult} = + case Result of + {test, {meta, _Description, Tags}, TestFun} -> + case + lists:any( + fun(Tag) -> + lists:any(fun(IgnoreTag) -> IgnoreTag == Tag end, IgnoreTags) + end, + Tags + ) + of + true -> + {ignored, ignore}; + false -> + {test_function_return, TestFun()} + end; + DirectResult -> + {test_function_return, DirectResult} + end, + OutputCaptureBuffer = stop_output_capture(OutputCapture), + case ResultType of + ignored -> {ok, {ResultType, FinalResult}}; + _ -> {ok, {ResultType, FinalResult, OutputCaptureBuffer}} + end + catch + Class:Reason:Stacktrace -> + GleamReason = + case Reason of + {Assertion, ReasonList} -> + ErlangReasonList = + lists:map( + fun(ReasonDetail) -> + case ReasonDetail of + {line, LineNo} -> + {reason_line, LineNo}; + {expression, List} -> + {expression, list_to_binary(List)}; + {module, ModuleAtom} -> + {module, atom_to_binary(ModuleAtom)}; + {pattern, Pattern} -> + {pattern, list_to_binary(Pattern)}; + Other -> + Other + end + end, + ReasonList + ), + GleamAssertionType = + case Assertion of + assertEqual -> + assert_equal; + assertNotEqual -> + assert_not_equal; + assertMatch -> + assert_match; + OtherAssertionType -> + OtherAssertionType + end, + {GleamAssertionType, ErlangReasonList}; + #{ + function := GleamFunction, + gleam_error := GleamError, + line := Line, + message := Message, + module := GleamModule, + value := Value + } -> + case Value of + {error, {OkValue, _, _, _}} when OkValue == not_eq; OkValue == eq -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + {error, {OkValue, _, _}} when OkValue == is_ok; OkValue == is_error -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + {error, {OkValue, _}} when OkValue == fail -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + _ -> + {gleam_assert, Value, Line} + end; + OtherReason -> + {generic_exception, OtherReason} + end, + GleamClass = + case Class of + error -> + erlang_error; + Other -> + Other + end, + GleamTraceList = + lists:map( + fun(Trace) -> + case Trace of + {ModuleName, FunctionName, Arity, ExtraInfoList} -> + {trace_module, atom_to_binary(ModuleName), + atom_to_binary(FunctionName), map_arity(Arity), + map_extra_info_list(ExtraInfoList)}; + {FunctionName, Arity, ExtraInfoList} -> + {trace, atom_to_binary(FunctionName), map_arity(Arity), + map_extra_info_list(ExtraInfoList)} + end + end, + Stacktrace + ), + OutputCaptureBufferCatch = stop_output_capture(OutputCapture), + {error, + {erlang_exception, GleamClass, GleamReason, {trace_list, GleamTraceList}, + OutputCaptureBufferCatch}} + end. + +map_extra_info_list(ExtraInfoList) -> + lists:map( + fun(ExtraInfo) -> + case ExtraInfo of + {file, FileNameList} -> {file, list_to_binary(FileNameList)}; + Other -> Other + end + end, + ExtraInfoList + ). + +map_arity(Arity) -> + if + is_list(Arity) -> + {arg_list, Arity}; + is_integer(Arity) -> + {num, Arity} + end. + +functions() -> + Funs = module_info(exports), + Funs. diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent.app b/aoc2023/build/dev/erlang/adglent/ebin/adglent.app new file mode 100644 index 0000000..f8e1aa6 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/ebin/adglent.app @@ -0,0 +1,17 @@ +{application, adglent, [ + {vsn, "1.2.0"}, + {applications, [gap, + gleam_community_ansi, + gleam_erlang, + gleam_http, + gleam_httpc, + gleam_otp, + gleam_stdlib, + glint, + simplifile, + snag, + tom]}, + {description, "Advent of code helper - automating setup of tests, solution template and problem input"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam new file mode 100644 index 0000000..c53eb59 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam new file mode 100644 index 0000000..9ad63c2 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam new file mode 100644 index 0000000..37d94e6 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam new file mode 100644 index 0000000..259f958 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam new file mode 100644 index 0000000..9a78e8e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam new file mode 100644 index 0000000..c97eda5 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam new file mode 100644 index 0000000..50b7d68 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam new file mode 100644 index 0000000..cbe144e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam new file mode 100644 index 0000000..54c7937 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam new file mode 100644 index 0000000..7e35186 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam new file mode 100644 index 0000000..7acb10e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam new file mode 100644 index 0000000..a77da82 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam new file mode 100644 index 0000000..1788e31 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam new file mode 100644 index 0000000..d3a477e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam new file mode 100644 index 0000000..e9be51d Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam new file mode 100644 index 0000000..de943fd Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam new file mode 100644 index 0000000..f7b2f57 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam new file mode 100644 index 0000000..6146227 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam new file mode 100644 index 0000000..4f28602 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam new file mode 100644 index 0000000..ed9bbda Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam new file mode 100644 index 0000000..75e190f Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam new file mode 100644 index 0000000..d0a69a6 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam new file mode 100644 index 0000000..dc16640 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam new file mode 100644 index 0000000..7d6a27a Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam new file mode 100644 index 0000000..3a5c720 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam new file mode 100644 index 0000000..7778cd8 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam new file mode 100644 index 0000000..2f911da Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam new file mode 100644 index 0000000..14ead72 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam new file mode 100644 index 0000000..f3d21e6 Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam new file mode 100644 index 0000000..95c965e Binary files /dev/null and b/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam differ diff --git a/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl b/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl new file mode 100644 index 0000000..615e473 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl @@ -0,0 +1 @@ +-record(example, {input :: binary(), answer :: any()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl new file mode 100644 index 0000000..4cd5ddd --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl @@ -0,0 +1 @@ +-record(tom_get_error, {error :: tom:get_error()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl new file mode 100644 index 0000000..7306934 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl @@ -0,0 +1 @@ +-record(tom_parse_error, {error :: tom:parse_error()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl new file mode 100644 index 0000000..7d24e52 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl @@ -0,0 +1 @@ +-record(finished, {num_modules :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl new file mode 100644 index 0000000..3efcd39 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl @@ -0,0 +1,5 @@ +-record(handler_state, { + test_state :: showtime@internal@common@common_event_handler:test_state(), + num_done :: integer(), + events :: gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run())) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl new file mode 100644 index 0000000..79f34f8 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl @@ -0,0 +1 @@ +-record(arg_list, {arg_list :: list(gleam@dynamic:dynamic_())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl new file mode 100644 index 0000000..c6458ba --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl @@ -0,0 +1,3 @@ +-record(assert_equal, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl new file mode 100644 index 0000000..4920304 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl @@ -0,0 +1,3 @@ +-record(assert_match, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl new file mode 100644 index 0000000..221c15f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl @@ -0,0 +1,3 @@ +-record(assert_not_equal, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl new file mode 100644 index 0000000..9a31ba8 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl @@ -0,0 +1,6 @@ +-record(erlang_exception, { + class :: showtime@internal@common@test_result:class(), + reason :: showtime@internal@common@test_result:reason(), + stacktrace :: showtime@internal@common@test_result:trace_list(), + output_buffer :: list(binary()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl new file mode 100644 index 0000000..4e0244d --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl @@ -0,0 +1,3 @@ +-record(error_info, { + error_info :: gleam@dict:dict(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl new file mode 100644 index 0000000..5e40ad3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl @@ -0,0 +1 @@ +-record(expected, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl new file mode 100644 index 0000000..7aa0c35 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl @@ -0,0 +1 @@ +-record(expression, {expression :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl new file mode 100644 index 0000000..1274b74 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl @@ -0,0 +1 @@ +-record(file, {filename :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl new file mode 100644 index 0000000..7c33d0d --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl @@ -0,0 +1 @@ +-record(generic_exception, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl new file mode 100644 index 0000000..095748c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl @@ -0,0 +1 @@ +-record(gleam_assert, {value :: gleam@dynamic:dynamic_(), line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl new file mode 100644 index 0000000..68e6645 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl @@ -0,0 +1,3 @@ +-record(gleam_error, { + details :: showtime@internal@common@test_result:gleam_error_detail() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl new file mode 100644 index 0000000..87b7e2f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl @@ -0,0 +1 @@ +-record(ignored, {reason :: showtime@internal@common@test_result:ignore_reason()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl new file mode 100644 index 0000000..5f3f60d --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl @@ -0,0 +1,7 @@ +-record(let_assert, { + module :: binary(), + function :: binary(), + line_no :: integer(), + message :: binary(), + value :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl new file mode 100644 index 0000000..9807df6 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl @@ -0,0 +1 @@ +-record(line, {line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl new file mode 100644 index 0000000..8002c0c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl @@ -0,0 +1 @@ +-record(module, {name :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl new file mode 100644 index 0000000..c36efa3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl @@ -0,0 +1 @@ +-record(num, {arity :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl new file mode 100644 index 0000000..6aa9c84 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl @@ -0,0 +1 @@ +-record(pattern, {pattern :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl new file mode 100644 index 0000000..b7ad1ab --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl @@ -0,0 +1 @@ +-record(reason_line, {line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl new file mode 100644 index 0000000..b0bc294 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl @@ -0,0 +1,4 @@ +-record(test_function_return, { + value :: gleam@dynamic:dynamic_(), + output_buffer :: list(binary()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl new file mode 100644 index 0000000..4cb007c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl @@ -0,0 +1,5 @@ +-record(trace, { + function :: binary(), + arity :: showtime@internal@common@test_result:arity_(), + extra_info :: list(showtime@internal@common@test_result:extra_info()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl new file mode 100644 index 0000000..c1aa9c5 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl @@ -0,0 +1,3 @@ +-record(trace_list, { + traces :: list(showtime@internal@common@test_result:trace()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl new file mode 100644 index 0000000..595362f --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl @@ -0,0 +1,6 @@ +-record(trace_module, { + module :: binary(), + function :: binary(), + arity :: showtime@internal@common@test_result:arity_(), + extra_info :: list(showtime@internal@common@test_result:extra_info()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl new file mode 100644 index 0000000..3a4b0dd --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl @@ -0,0 +1 @@ +-record(value, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl new file mode 100644 index 0000000..927a0cf --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl @@ -0,0 +1,6 @@ +-record(completed_test_run, { + test_function :: showtime@internal@common@test_suite:test_function(), + total_time :: integer(), + result :: {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()} +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl new file mode 100644 index 0000000..13df1bf --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl @@ -0,0 +1,6 @@ +-record(end_test, { + test_module :: showtime@internal@common@test_suite:test_module(), + test_function :: showtime@internal@common@test_suite:test_function(), + result :: {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()} +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl new file mode 100644 index 0000000..3f78991 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl @@ -0,0 +1 @@ +-record(end_test_run, {num_modules :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl new file mode 100644 index 0000000..a7f37b3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl @@ -0,0 +1,3 @@ +-record(end_test_suite, { + test_module :: showtime@internal@common@test_suite:test_module() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl new file mode 100644 index 0000000..f52e5cc --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl @@ -0,0 +1,4 @@ +-record(ongoing_test_run, { + test_function :: showtime@internal@common@test_suite:test_function(), + started_at :: integer() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl new file mode 100644 index 0000000..d532609 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl @@ -0,0 +1,4 @@ +-record(start_test, { + test_module :: showtime@internal@common@test_suite:test_module(), + test_function :: showtime@internal@common@test_suite:test_function() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl new file mode 100644 index 0000000..d5a03d3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl @@ -0,0 +1,3 @@ +-record(start_test_suite, { + test_module :: showtime@internal@common@test_suite:test_module() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl new file mode 100644 index 0000000..a783ba4 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl @@ -0,0 +1 @@ +-record(test_function, {name :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl new file mode 100644 index 0000000..ee9baaf --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl @@ -0,0 +1 @@ +-record(test_module, {name :: binary(), path :: gleam@option:option(binary())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl new file mode 100644 index 0000000..253a946 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl @@ -0,0 +1,4 @@ +-record(test_suite, { + module :: showtime@internal@common@test_suite:test_module(), + tests :: list(showtime@internal@common@test_suite:test_function()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl new file mode 100644 index 0000000..ca52968 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl @@ -0,0 +1,4 @@ +-record(align_left, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl new file mode 100644 index 0000000..8d5a673 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl @@ -0,0 +1,4 @@ +-record(align_left_overflow, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl new file mode 100644 index 0000000..7f7a3f0 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl @@ -0,0 +1,4 @@ +-record(align_right, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl new file mode 100644 index 0000000..4fc4536 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl @@ -0,0 +1,4 @@ +-record(align_right_overflow, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl new file mode 100644 index 0000000..2343dfd --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl @@ -0,0 +1 @@ +-record(aligned, {content :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl new file mode 100644 index 0000000..044891b --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl @@ -0,0 +1 @@ +-record(content, {unstyled_text :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl new file mode 100644 index 0000000..db3f822 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl @@ -0,0 +1 @@ +-record(separator, {char :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl new file mode 100644 index 0000000..ed500df --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl @@ -0,0 +1 @@ +-record(styled_content, {styled_text :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl new file mode 100644 index 0000000..5b41bb1 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl @@ -0,0 +1,4 @@ +-record(table, { + header :: gleam@option:option(binary()), + rows :: list(list(showtime@internal@reports@table:col())) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl new file mode 100644 index 0000000..14184fb --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl @@ -0,0 +1 @@ +-record(meta, {description :: binary(), tags :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl new file mode 100644 index 0000000..6ebea34 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl @@ -0,0 +1,5 @@ +-record(eq, { + a :: any(), + b :: any(), + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl new file mode 100644 index 0000000..cf06a3c --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl @@ -0,0 +1 @@ +-record(fail, {meta :: gleam@option:option(showtime@tests@meta:meta())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl new file mode 100644 index 0000000..e9cabf3 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl @@ -0,0 +1,4 @@ +-record(is_error, { + a :: {ok, any()} | {error, any()}, + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl new file mode 100644 index 0000000..37c24ca --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl @@ -0,0 +1,4 @@ +-record(is_ok, { + a :: {ok, any()} | {error, any()}, + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl new file mode 100644 index 0000000..2a6bf48 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl @@ -0,0 +1,5 @@ +-record(not_eq, { + a :: any(), + b :: any(), + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl new file mode 100644 index 0000000..a814a93 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl @@ -0,0 +1,4 @@ +-record(meta_should, { + equal :: fun((any(), any()) -> nil), + not_equal :: fun((any(), any()) -> nil) +}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl new file mode 100644 index 0000000..e75a0b7 --- /dev/null +++ b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl @@ -0,0 +1,4 @@ +-record(test, { + meta :: showtime@tests@meta:meta(), + test_function :: fun(() -> nil) +}). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache new file mode 100644 index 0000000..e31a66a Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta new file mode 100644 index 0000000..7d66c62 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl new file mode 100644 index 0000000..12159d0 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl @@ -0,0 +1,21 @@ +-module(aoc2023). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec main() -> bitstring(). +main() -> + Trim = 8, + _assert_subject = gleam_stdlib:identity(<<"abcdefgh +abcdefgh"/utf8>>), + <<_:Trim/binary, "\n"/utf8, Rest/binary>> = case _assert_subject of + <<_:Trim/binary, "\n"/utf8, _/binary>> -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"aoc2023"/utf8>>, + function => <<"main"/utf8>>, + line => 9}) + end, + gleam@io:debug(Rest). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl new file mode 100644 index 0000000..ad291f1 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl @@ -0,0 +1,35 @@ +-module('aoc2023@@main'). + +-export([run/1]). + +run(Module) -> + io:setopts(standard_io, [binary, {encoding, utf8}]), + io:setopts(standard_error, [{encoding, utf8}]), + try + {ok, _} = application:ensure_all_started('aoc2023'), + erlang:process_flag(trap_exit, false), + Module:main(), + erlang:halt(0) + catch + Class:Reason:StackTrace -> + print_error(Class, Reason, StackTrace), + erlang:halt(127, [{flush, true}]) + end. + +print_error(Class, Reason, StackTrace) -> + E = erl_error:format_exception( + 1, Class, Reason, StackTrace, fun stack_filter/3, + fun print_stack_frame/2, unicode + ), + io:put_chars(E). + +stack_filter(Module, _F, _A) -> + case Module of + ?MODULE -> true; + erl_eval -> true; + init -> true; + _ -> false + end. + +print_stack_frame(Term, I) -> + io_lib:format("~." ++ integer_to_list(I) ++ "tP", [Term, 50]). \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache new file mode 100644 index 0000000..cb20c74 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta new file mode 100644 index 0000000..f568aaf Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl new file mode 100644 index 0000000..7382e40 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl @@ -0,0 +1,8 @@ +-module(aoc2023_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec main() -> nil. +main() -> + showtime:main(). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache new file mode 100644 index 0000000..40fbdcf Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta new file mode 100644 index 0000000..f13b8dc Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl new file mode 100644 index 0000000..5fd5c16 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl @@ -0,0 +1,52 @@ +-module(day10@day10_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, <<"7-F7- +.FJ|7 +SJLL7 +|F--J +LJ.LJ"/utf8>>, <<"8"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, <<"7-F7- +.FJ|7 +SJLL7 +|F--J +LJ.LJ"/utf8>>, <<"8"/utf8>>}], + fun(Example) -> _pipe@1 = day10@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"........... +.S-------7. +.|F-----7|. +.||OOOOO||. +.||OOOOO||. +.|L-7OF-J|. +.|II|O|II|. +.L--JOL--J. +.....O....."/utf8>>, + <<"4"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"........... +.S-------7. +.|F-----7|. +.||OOOOO||. +.||OOOOO||. +.|L-7OF-J|. +.|II|O|II|. +.L--JOL--J. +.....O....."/utf8>>, + <<"4"/utf8>>}], + fun(Example) -> _pipe@1 = day10@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache new file mode 100644 index 0000000..65500d7 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta new file mode 100644 index 0000000..51c9047 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl new file mode 100644 index 0000000..d6802a6 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl @@ -0,0 +1,340 @@ +-module(day10@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([posn/0]). + +-type posn() :: {posn, integer(), integer()}. + +-spec add_posns(posn(), posn()) -> posn(). +add_posns(P1, P2) -> + {posn, + erlang:element(2, P1) + erlang:element(2, P2), + erlang:element(3, P1) + erlang:element(3, P2)}. + +-spec pipe_neighbors(binary()) -> list(posn()). +pipe_neighbors(Pipe) -> + case Pipe of + <<"|"/utf8>> -> + [{posn, -1, 0}, {posn, 1, 0}]; + + <<"-"/utf8>> -> + [{posn, 0, 1}, {posn, 0, -1}]; + + <<"L"/utf8>> -> + [{posn, -1, 0}, {posn, 0, 1}]; + + <<"F"/utf8>> -> + [{posn, 1, 0}, {posn, 0, 1}]; + + <<"7"/utf8>> -> + [{posn, 1, 0}, {posn, 0, -1}]; + + <<"J"/utf8>> -> + [{posn, -1, 0}, {posn, 0, -1}]; + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"bad pipe"/utf8>>, + module => <<"day10/solve"/utf8>>, + function => <<"pipe_neighbors"/utf8>>, + line => 44}) + end. + +-spec make_grid(binary()) -> gleam@dict:dict(posn(), binary()). +make_grid(Input) -> + _pipe = (gleam@list:index_map( + gleam@string:split(Input, <<"\n"/utf8>>), + fun(R, Row) -> + gleam@list:index_map( + gleam@string:to_graphemes(Row), + fun(C, Col) -> {{posn, R, C}, Col} end + ) + end + )), + _pipe@1 = gleam@list:flatten(_pipe), + gleam@dict:from_list(_pipe@1). + +-spec valid_start_direction(gleam@dict:dict(posn(), binary()), posn()) -> posn(). +valid_start_direction(Grid, S) -> + _assert_subject = (gleam@list:filter_map( + [{{posn, -1, 0}, [<<"|"/utf8>>, <<"7"/utf8>>, <<"F"/utf8>>]}, + {{posn, 1, 0}, [<<"|"/utf8>>, <<"J"/utf8>>, <<"L"/utf8>>]}, + {{posn, 0, 1}, [<<"-"/utf8>>, <<"J"/utf8>>, <<"7"/utf8>>]}, + {{posn, 0, -1}, [<<"-"/utf8>>, <<"F"/utf8>>, <<"L"/utf8>>]}], + fun(D) -> + {Delta, Valids} = D, + Neighbor = add_posns(S, Delta), + case gleam@dict:get(Grid, Neighbor) of + {ok, Pipe} -> + case gleam@list:contains(Valids, Pipe) of + true -> + {ok, Neighbor}; + + false -> + {error, nil} + end; + + {error, _} -> + {error, nil} + end + end + )), + [Dir | _] = case _assert_subject of + [_ | _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"valid_start_direction"/utf8>>, + line => 59}) + end, + Dir. + +-spec to_next_pipe(posn(), gleam@dict:dict(posn(), binary()), list(posn())) -> list(posn()). +to_next_pipe(Current, Grid, Acc) -> + [Prev | _] = case Acc of + [_ | _] -> Acc; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"to_next_pipe"/utf8>>, + line => 76}) + end, + _assert_subject = gleam@dict:get(Grid, Current), + {ok, Pipe} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day10/solve"/utf8>>, + function => <<"to_next_pipe"/utf8>>, + line => 77}) + end, + gleam@bool:guard( + Pipe =:= <<"S"/utf8>>, + [Current | Acc], + fun() -> + _assert_subject@1 = begin + _pipe = Pipe, + _pipe@1 = pipe_neighbors(_pipe), + gleam@list:filter_map( + _pipe@1, + fun(P) -> case add_posns(P, Current) of + Neighbor when Neighbor =:= Prev -> + {error, nil}; + + Neighbor@1 -> + {ok, Neighbor@1} + end end + ) + end, + [Next] = case _assert_subject@1 of + [_] -> _assert_subject@1; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day10/solve"/utf8>>, + function => <<"to_next_pipe"/utf8>>, + line => 79}) + end, + to_next_pipe(Next, Grid, [Current | Acc]) + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + Grid = begin + _pipe = Input, + make_grid(_pipe) + end, + _assert_subject = begin + _pipe@1 = Grid, + _pipe@2 = gleam@dict:filter( + _pipe@1, + fun(_, V) -> V =:= <<"S"/utf8>> end + ), + _pipe@3 = gleam@dict:keys(_pipe@2), + gleam@list:first(_pipe@3) + end, + {ok, S} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 97}) + end, + _pipe@4 = Grid, + _pipe@5 = valid_start_direction(_pipe@4, S), + _pipe@6 = to_next_pipe(_pipe@5, Grid, [S]), + _pipe@7 = gleam@list:length(_pipe@6), + _pipe@8 = (fun(I) -> ((I - 1) div 2) end)(_pipe@7), + gleam@string:inspect(_pipe@8). + +-spec count_crossings( + posn(), + gleam@set:set(posn()), + gleam@dict:dict(posn(), binary()), + integer(), + binary() +) -> integer(). +count_crossings(P, Loop, Grid, Acc, Corner) -> + Maybe_cell = gleam@dict:get(Grid, P), + gleam@bool:guard( + Maybe_cell =:= {error, nil}, + Acc, + fun() -> + {ok, Cell} = case Maybe_cell of + {ok, _} -> Maybe_cell; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"count_crossings"/utf8>>, + line => 125}) + end, + Next = add_posns(P, {posn, 0, 1}), + case gleam@set:contains(Loop, P) of + false -> + count_crossings(Next, Loop, Grid, Acc, Corner); + + true -> + case {Corner, Cell} of + {_, <<"|"/utf8>>} -> + count_crossings(Next, Loop, Grid, Acc + 1, Corner); + + {_, <<"F"/utf8>>} -> + count_crossings(Next, Loop, Grid, Acc, Cell); + + {_, <<"L"/utf8>>} -> + count_crossings(Next, Loop, Grid, Acc, Cell); + + {<<"F"/utf8>>, <<"J"/utf8>>} -> + count_crossings( + Next, + Loop, + Grid, + Acc + 1, + <<""/utf8>> + ); + + {<<"L"/utf8>>, <<"7"/utf8>>} -> + count_crossings( + Next, + Loop, + Grid, + Acc + 1, + <<""/utf8>> + ); + + {<<"F"/utf8>>, <<"7"/utf8>>} -> + count_crossings(Next, Loop, Grid, Acc, <<""/utf8>>); + + {<<"L"/utf8>>, <<"J"/utf8>>} -> + count_crossings(Next, Loop, Grid, Acc, <<""/utf8>>); + + {_, _} -> + count_crossings(Next, Loop, Grid, Acc, Corner) + end + end + end + ). + +-spec trace_ray( + posn(), + gleam@set:set(posn()), + gleam@dict:dict(posn(), binary()) +) -> boolean(). +trace_ray(P, Loop, Grid) -> + gleam@bool:guard( + gleam@set:contains(Loop, P), + false, + fun() -> + gleam@int:is_odd(count_crossings(P, Loop, Grid, 0, <<""/utf8>>)) + end + ). + +-spec part2(binary()) -> binary(). +part2(Input) -> + Grid = begin + _pipe = Input, + make_grid(_pipe) + end, + _assert_subject = begin + _pipe@1 = Grid, + _pipe@2 = gleam@dict:filter( + _pipe@1, + fun(_, V) -> V =:= <<"S"/utf8>> end + ), + _pipe@3 = gleam@dict:keys(_pipe@2), + gleam@list:first(_pipe@3) + end, + {ok, S} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 145}) + end, + Loop_pipes = begin + _pipe@4 = Grid, + _pipe@5 = valid_start_direction(_pipe@4, S), + _pipe@6 = to_next_pipe(_pipe@5, Grid, [S]), + gleam@set:from_list(_pipe@6) + end, + _pipe@7 = Grid, + _pipe@8 = gleam@dict:keys(_pipe@7), + _pipe@9 = gleam@list:filter( + _pipe@8, + fun(_capture) -> trace_ray(_capture, Loop_pipes, Grid) end + ), + _pipe@10 = gleam@list:length(_pipe@9), + gleam@string:inspect(_pipe@10). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day10/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 165}) + end, + _assert_subject@1 = adglent:get_input(<<"10"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day10/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 166}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache new file mode 100644 index 0000000..dd328a5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta new file mode 100644 index 0000000..8698a6e Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl new file mode 100644 index 0000000..8190b1e --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl @@ -0,0 +1,68 @@ +-module(day11@day11_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#....."/utf8>>, + <<"374"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#....."/utf8>>, + <<"374"/utf8>>}], + fun(Example) -> _pipe@1 = day11@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#....."/utf8>>, + <<"8410"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"...#...... +.......#.. +#......... +.......... +......#... +.#........ +.........# +.......... +.......#.. +#...#....."/utf8>>, + <<"8410"/utf8>>}], + fun(Example) -> _pipe@1 = day11@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache new file mode 100644 index 0000000..db28325 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta new file mode 100644 index 0000000..3765d62 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl new file mode 100644 index 0000000..2dd8574 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl @@ -0,0 +1,130 @@ +-module(day11@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([posn/0]). + +-type posn() :: {posn, integer(), integer()}. + +-spec find_empty(list(list(binary()))) -> list(integer()). +find_empty(Grid) -> + gleam@list:index_fold( + Grid, + [], + fun(Acc, Row, R) -> case gleam@list:unique(Row) of + [<<"."/utf8>>] -> + [R | Acc]; + + _ -> + Acc + end end + ). + +-spec count_prior_empty_ranks(integer(), list(integer())) -> integer(). +count_prior_empty_ranks(Rank, Empty_ranks) -> + _pipe = Empty_ranks, + _pipe@1 = gleam@list:drop_while(_pipe, fun(R_empty) -> R_empty > Rank end), + gleam@list:length(_pipe@1). + +-spec parse_with_expansion(binary(), integer()) -> list(posn()). +parse_with_expansion(Input, Expansion) -> + Add = Expansion - 1, + Grid = begin + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1) + end, + Empty_row_list = find_empty(Grid), + Empty_col_list = find_empty(gleam@list:transpose(Grid)), + _pipe@2 = (gleam@list:index_map( + Grid, + fun(R, Row) -> + gleam@list:index_fold( + Row, + [], + fun(Acc, Cell, C) -> + P = {posn, R, C}, + Empty_r = count_prior_empty_ranks(R, Empty_row_list), + Empty_c = count_prior_empty_ranks(C, Empty_col_list), + case Cell of + <<"#"/utf8>> -> + [{posn, + erlang:element(2, P) + (Empty_r * Add), + erlang:element(3, P) + (Empty_c * Add)} | + Acc]; + + _ -> + Acc + end + end + ) + end + )), + gleam@list:flatten(_pipe@2). + +-spec all_distances(list(posn())) -> integer(). +all_distances(Stars) -> + gleam@list:fold( + gleam@list:combination_pairs(Stars), + 0, + fun(Acc, Pair) -> + {S1, S2} = Pair, + (Acc + gleam@int:absolute_value( + erlang:element(2, S1) - erlang:element(2, S2) + )) + + gleam@int:absolute_value( + erlang:element(3, S1) - erlang:element(3, S2) + ) + end + ). + +-spec find_distances(binary(), integer()) -> binary(). +find_distances(Input, Expand_by) -> + _pipe = Input, + _pipe@1 = parse_with_expansion(_pipe, Expand_by), + _pipe@2 = all_distances(_pipe@1), + gleam@string:inspect(_pipe@2). + +-spec part1(binary()) -> binary(). +part1(Input) -> + find_distances(Input, 2). + +-spec part2(binary()) -> binary(). +part2(Input) -> + find_distances(Input, 1000000). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day11/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 72}) + end, + _assert_subject@1 = adglent:get_input(<<"11"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day11/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 73}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache new file mode 100644 index 0000000..13fcba5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta new file mode 100644 index 0000000..d8d6ce0 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl new file mode 100644 index 0000000..fcbec4b --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl @@ -0,0 +1,38 @@ +-module(day12@day12_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"???.### 1,1,3 +.??..??...?##. 1,1,3 +?#?#?#?#?#?#?#? 1,3,1,6 +????.#...#... 4,1,1 +????.######..#####. 1,6,5 +?###???????? 3,2,1"/utf8>>, + <<"21"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"???.### 1,1,3 +.??..??...?##. 1,1,3 +?#?#?#?#?#?#?#? 1,3,1,6 +????.#...#... 4,1,1 +????.######..#####. 1,6,5 +?###???????? 3,2,1"/utf8>>, + <<"21"/utf8>>}], + fun(Example) -> _pipe@1 = day12@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [], + fun(Example) -> _pipe@1 = day12@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache new file mode 100644 index 0000000..380635a Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta new file mode 100644 index 0000000..ba4b411 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl new file mode 100644 index 0000000..4ca87c8 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl @@ -0,0 +1,145 @@ +-module(day12@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). + +-spec parse_folds(binary(), integer()) -> list({binary(), list(integer())}). +parse_folds(Input, Folds) -> + Records = gleam@string:split(Input, <<"\n"/utf8>>), + gleam@list:map( + Records, + fun(Record) -> + _assert_subject = gleam@string:split_once(Record, <<" "/utf8>>), + {ok, {Template, Sets_str}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day12/solve"/utf8>>, + function => <<"parse_folds"/utf8>>, + line => 15}) + end, + Template@1 = begin + _pipe = Template, + _pipe@1 = gleam@list:repeat(_pipe, Folds), + _pipe@2 = gleam@list:intersperse(_pipe@1, <<"?"/utf8>>), + gleam@string:concat(_pipe@2) + end, + Sets = begin + _pipe@3 = Sets_str, + _pipe@4 = gleam@string:split(_pipe@3, <<","/utf8>>), + _pipe@5 = gleam@list:map(_pipe@4, fun gleam@int:parse/1), + _pipe@6 = gleam@result:values(_pipe@5), + _pipe@7 = gleam@list:repeat(_pipe@6, Folds), + gleam@list:flatten(_pipe@7) + end, + {Template@1, Sets} + end + ). + +-spec do_count( + binary(), + list(integer()), + integer(), + boolean(), + utilities@memo:cache({binary(), list(integer()), integer(), boolean()}, integer()) +) -> integer(). +do_count(Template, Groups, Left, Gap, Cache) -> + utilities@memo:memoize( + Cache, + {Template, Groups, Left, Gap}, + fun() -> case {Template, Groups, Left, Gap} of + {<<""/utf8>>, [], 0, _} -> + 1; + + {<<"?"/utf8, T_rest/binary>>, [G | G_rest], 0, false} -> + do_count(T_rest, G_rest, G - 1, G =:= 1, Cache) + (do_count( + T_rest, + Groups, + 0, + false, + Cache + )); + + {<<"?"/utf8, T_rest@1/binary>>, [], 0, false} -> + do_count(T_rest@1, Groups, 0, false, Cache); + + {<<"?"/utf8, T_rest@1/binary>>, _, 0, true} -> + do_count(T_rest@1, Groups, 0, false, Cache); + + {<<"."/utf8, T_rest@1/binary>>, _, 0, _} -> + do_count(T_rest@1, Groups, 0, false, Cache); + + {<<"#"/utf8, T_rest@2/binary>>, [G@1 | G_rest@1], 0, false} -> + do_count(T_rest@2, G_rest@1, G@1 - 1, G@1 =:= 1, Cache); + + {<<"?"/utf8, T_rest@3/binary>>, Gs, L, false} -> + do_count(T_rest@3, Gs, L - 1, L =:= 1, Cache); + + {<<"#"/utf8, T_rest@3/binary>>, Gs, L, false} -> + do_count(T_rest@3, Gs, L - 1, L =:= 1, Cache); + + {_, _, _, _} -> + 0 + end end + ). + +-spec count_solutions(integer(), {binary(), list(integer())}) -> integer(). +count_solutions(Acc, Condition) -> + utilities@memo:create( + fun(Cache) -> + {Template, Groups} = Condition, + Acc + do_count(Template, Groups, 0, false, Cache) + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _pipe = Input, + _pipe@1 = parse_folds(_pipe, 1), + _pipe@2 = gleam@list:fold(_pipe@1, 0, fun count_solutions/2), + gleam@string:inspect(_pipe@2). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _pipe = Input, + _pipe@1 = parse_folds(_pipe, 5), + _pipe@2 = gleam@list:fold(_pipe@1, 0, fun count_solutions/2), + gleam@string:inspect(_pipe@2). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day12/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 79}) + end, + _assert_subject@1 = adglent:get_input(<<"12"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day12/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 80}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache new file mode 100644 index 0000000..dbe362b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta new file mode 100644 index 0000000..ccd4923 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl new file mode 100644 index 0000000..9aa0038 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl @@ -0,0 +1,88 @@ +-module(day13@day13_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#"/utf8>>, + <<"405"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#"/utf8>>, + <<"405"/utf8>>}], + fun(Example) -> _pipe@1 = day13@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#"/utf8>>, + <<"400"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"#.##..##. +..#.##.#. +##......# +##......# +..#.##.#. +..##..##. +#.#.##.#. + +#...##..# +#....#..# +..##..### +#####.##. +#####.##. +..##..### +#....#..#"/utf8>>, + <<"400"/utf8>>}], + fun(Example) -> _pipe@1 = day13@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache new file mode 100644 index 0000000..001ba22 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta new file mode 100644 index 0000000..543c3ff Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl new file mode 100644 index 0000000..5e94b0b --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl @@ -0,0 +1,149 @@ +-module(day13@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([symmetry_type/0]). + +-type symmetry_type() :: {horizontal, integer()} | {vertical, integer()}. + +-spec do_is_symmetric(list(list(BLS)), list(list(BLS)), integer()) -> {ok, + integer()} | + {error, nil}. +do_is_symmetric(Left, Right, Errors) -> + gleam@bool:guard( + gleam@list:is_empty(Right), + {error, nil}, + fun() -> + [H | T] = case Right of + [_ | _] -> Right; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day13/solve"/utf8>>, + function => <<"do_is_symmetric"/utf8>>, + line => 23}) + end, + Found_errors = begin + _pipe = gleam@list:zip( + gleam@list:flatten(Left), + gleam@list:flatten(Right) + ), + _pipe@1 = gleam@list:filter( + _pipe, + fun(Tup) -> + erlang:element(2, Tup) /= erlang:element(1, Tup) + end + ), + gleam@list:length(_pipe@1) + end, + case Found_errors =:= Errors of + true -> + {ok, gleam@list:length(Left)}; + + false -> + do_is_symmetric([H | Left], T, Errors) + end + end + ). + +-spec is_symmetric(list(list(any())), integer()) -> {ok, integer()} | + {error, nil}. +is_symmetric(Xss, Errs) -> + [Left | Right] = case Xss of + [_ | _] -> Xss; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day13/solve"/utf8>>, + function => <<"is_symmetric"/utf8>>, + line => 13}) + end, + do_is_symmetric([Left], Right, Errs). + +-spec get_symmetry_type(list(list(binary())), integer()) -> symmetry_type(). +get_symmetry_type(Xss, Errors) -> + case is_symmetric(Xss, Errors) of + {ok, N} -> + {horizontal, N}; + + _ -> + _assert_subject = is_symmetric(gleam@list:transpose(Xss), Errors), + {ok, N@1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day13/solve"/utf8>>, + function => <<"get_symmetry_type"/utf8>>, + line => 38}) + end, + {vertical, N@1} + end. + +-spec summarize_notes(list(symmetry_type())) -> integer(). +summarize_notes(Symmetries) -> + gleam@list:fold(Symmetries, 0, fun(Acc, Note) -> case Note of + {horizontal, N} -> + 100 * N; + + {vertical, N@1} -> + N@1 + end + Acc end). + +-spec solve(binary(), integer()) -> binary(). +solve(Input, Errors) -> + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n\n"/utf8>>), + _pipe@5 = gleam@list:map(_pipe@1, fun(Strs) -> _pipe@2 = Strs, + _pipe@3 = gleam@string:split(_pipe@2, <<"\n"/utf8>>), + _pipe@4 = gleam@list:map(_pipe@3, fun gleam@string:to_graphemes/1), + get_symmetry_type(_pipe@4, Errors) end), + _pipe@6 = summarize_notes(_pipe@5), + gleam@string:inspect(_pipe@6). + +-spec part1(binary()) -> binary(). +part1(Input) -> + solve(Input, 0). + +-spec part2(binary()) -> binary(). +part2(Input) -> + solve(Input, 1). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day13/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 74}) + end, + _assert_subject@1 = adglent:get_input(<<"13"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day13/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 75}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache new file mode 100644 index 0000000..4577a2b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta new file mode 100644 index 0000000..9b11f88 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl new file mode 100644 index 0000000..12ea788 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl @@ -0,0 +1,68 @@ +-module(day14@day14_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#...."/utf8>>, + <<"136"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#...."/utf8>>, + <<"136"/utf8>>}], + fun(Example) -> _pipe@1 = day14@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#...."/utf8>>, + <<"64"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#...."/utf8>>, + <<"64"/utf8>>}], + fun(Example) -> _pipe@1 = day14@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache new file mode 100644 index 0000000..0c6bea3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta new file mode 100644 index 0000000..91ec775 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl new file mode 100644 index 0000000..6c370da --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl @@ -0,0 +1,149 @@ +-module(day14@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). + +-spec parse(binary()) -> list(list(binary())). +parse(Input) -> + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1), + gleam@list:transpose(_pipe@2). + +-spec roll_boulders(list(binary())) -> list(binary()). +roll_boulders(Strs) -> + _pipe = (gleam@list:map( + gleam@list:chunk( + Strs, + fun(C) -> (C =:= <<"O"/utf8>>) orelse (C =:= <<"."/utf8>>) end + ), + fun(Chunks) -> + gleam@list:sort( + Chunks, + gleam@order:reverse(fun gleam@string:compare/2) + ) + end + )), + gleam@list:flatten(_pipe). + +-spec score(list(list(binary()))) -> integer(). +score(Matrix) -> + gleam@list:fold( + Matrix, + 0, + fun(Acc, Col) -> + Acc + (gleam@list:index_fold( + gleam@list:reverse(Col), + 0, + fun(Col_acc, Char, N) -> case Char of + <<"O"/utf8>> -> + (Col_acc + N) + 1; + + _ -> + Col_acc + end end + )) + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _pipe = Input, + _pipe@1 = parse(_pipe), + _pipe@2 = gleam@list:map(_pipe@1, fun roll_boulders/1), + _pipe@3 = score(_pipe@2), + gleam@string:inspect(_pipe@3). + +-spec rotate(list(list(BBU))) -> list(list(BBU)). +rotate(Matrix) -> + _pipe = Matrix, + _pipe@1 = gleam@list:map(_pipe, fun gleam@list:reverse/1), + gleam@list:transpose(_pipe@1). + +-spec spin(list(list(binary()))) -> list(list(binary())). +spin(Matrix) -> + gleam@list:fold(gleam@list:range(1, 4), Matrix, fun(Acc, _) -> _pipe = Acc, + _pipe@1 = gleam@list:map(_pipe, fun roll_boulders/1), + rotate(_pipe@1) end). + +-spec check_if_seen( + list(list(binary())), + gleam@dict:dict(list(list(binary())), integer()), + integer() +) -> integer(). +check_if_seen(Matrix, Cache, Count) -> + case gleam@dict:get(Cache, Matrix) of + {error, nil} -> + check_if_seen( + spin(Matrix), + gleam@dict:insert(Cache, Matrix, Count), + Count - 1 + ); + + {ok, N} -> + _assert_subject = gleam@int:modulo(Count, N - Count), + {ok, Extra} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day14/solve"/utf8>>, + function => <<"check_if_seen"/utf8>>, + line => 66}) + end, + _pipe = gleam@list:fold( + gleam@list:range(1, Extra), + Matrix, + fun(Acc, _) -> spin(Acc) end + ), + score(_pipe) + end. + +-spec spin_cycle(list(list(binary()))) -> integer(). +spin_cycle(Matrix) -> + Cache = gleam@dict:new(), + check_if_seen(Matrix, Cache, 1000000000). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _pipe = Input, + _pipe@1 = parse(_pipe), + _pipe@2 = spin_cycle(_pipe@1), + gleam@string:inspect(_pipe@2). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day14/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 81}) + end, + _assert_subject@1 = adglent:get_input(<<"14"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day14/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 82}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache new file mode 100644 index 0000000..40f928f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta new file mode 100644 index 0000000..7571773 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl new file mode 100644 index 0000000..ad28e90 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl @@ -0,0 +1,32 @@ +-module(day15@day15_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, + <<"1320"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, + <<"1320"/utf8>>}], + fun(Example) -> _pipe@1 = day15@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, + <<"145"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, + <<"145"/utf8>>}], + fun(Example) -> _pipe@1 = day15@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache new file mode 100644 index 0000000..1b2e2ab Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta new file mode 100644 index 0000000..8cfc051 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl new file mode 100644 index 0000000..623b454 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl @@ -0,0 +1,177 @@ +-module(day15@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([instruction/0]). + +-type instruction() :: {remove, binary()} | {insert, binary(), integer()}. + +-spec split(binary()) -> list(binary()). +split(Input) -> + _pipe = Input, + gleam@string:split(_pipe, <<","/utf8>>). + +-spec hash_algorithm(binary()) -> integer(). +hash_algorithm(Str) -> + Codepoints = begin + _pipe = Str, + _pipe@1 = gleam@string:to_utf_codepoints(_pipe), + gleam@list:map(_pipe@1, fun gleam@string:utf_codepoint_to_int/1) + end, + gleam@list:fold( + Codepoints, + 0, + fun(Acc, C) -> + _assert_subject = gleam@int:modulo((Acc + C) * 17, 256), + {ok, Acc@1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day15/solve"/utf8>>, + function => <<"hash_algorithm"/utf8>>, + line => 20}) + end, + Acc@1 + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _pipe = Input, + _pipe@1 = split(_pipe), + _pipe@2 = gleam@list:fold( + _pipe@1, + 0, + fun(Acc, Str) -> Acc + hash_algorithm(Str) end + ), + gleam@string:inspect(_pipe@2). + +-spec read_instruction(binary()) -> instruction(). +read_instruction(Str) -> + case gleam@string:split(Str, <<"="/utf8>>) of + [Label, Focal_str] -> + _assert_subject = gleam@int:parse(Focal_str), + {ok, Focal} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day15/solve"/utf8>>, + function => <<"read_instruction"/utf8>>, + line => 39}) + end, + {insert, Label, Focal}; + + _ -> + {remove, gleam@string:drop_right(Str, 1)} + end. + +-spec remove_lens(gleam@dict:dict(integer(), list({binary(), BPV})), binary()) -> gleam@dict:dict(integer(), list({binary(), + BPV})). +remove_lens(Boxes, Label) -> + gleam@dict:update(Boxes, hash_algorithm(Label), fun(V) -> case V of + {some, Lenses} -> + case gleam@list:key_pop(Lenses, Label) of + {ok, {_, Updated}} -> + Updated; + + {error, nil} -> + Lenses + end; + + none -> + [] + end end). + +-spec insert_lens( + gleam@dict:dict(integer(), list({binary(), BON})), + binary(), + BON +) -> gleam@dict:dict(integer(), list({binary(), BON})). +insert_lens(Boxes, Label, Focal) -> + gleam@dict:update(Boxes, hash_algorithm(Label), fun(V) -> case V of + {some, Lenses} -> + gleam@list:key_set(Lenses, Label, Focal); + + none -> + [{Label, Focal}] + end end). + +-spec parse_instructions(list(binary())) -> gleam@dict:dict(integer(), list({binary(), + integer()})). +parse_instructions(Insts) -> + gleam@list:fold( + Insts, + gleam@dict:new(), + fun(Acc, Inst) -> case read_instruction(Inst) of + {remove, Label} -> + remove_lens(Acc, Label); + + {insert, Label@1, Focal} -> + insert_lens(Acc, Label@1, Focal) + end end + ). + +-spec focusing_power(gleam@dict:dict(integer(), list({binary(), integer()}))) -> integer(). +focusing_power(Boxes) -> + gleam@dict:fold( + Boxes, + 0, + fun(Acc, K, V) -> + Box_acc = (gleam@list:index_fold( + V, + 0, + fun(Acc@1, Lens, I) -> + Acc@1 + (erlang:element(2, Lens) * (I + 1)) + end + )), + Acc + ((K + 1) * Box_acc) + end + ). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _pipe = Input, + _pipe@1 = split(_pipe), + _pipe@2 = parse_instructions(_pipe@1), + _pipe@3 = focusing_power(_pipe@2), + gleam@string:inspect(_pipe@3). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day15/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 92}) + end, + _assert_subject@1 = adglent:get_input(<<"15"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day15/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 93}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache new file mode 100644 index 0000000..bc9a034 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta new file mode 100644 index 0000000..2320e16 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl new file mode 100644 index 0000000..978ab14 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl @@ -0,0 +1,68 @@ +-module(day16@day16_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|...."/utf8>>, + 46}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|...."/utf8>>, + 46}], + fun(Example) -> _pipe@1 = day16@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|...."/utf8>>, + 51}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<".|...\\.... +|.-.\\..... +.....|-... +........|. +.......... +.........\\ +..../.\\\\.. +.-.-/..|.. +.|....-|.\\ +..//.|...."/utf8>>, + 51}], + fun(Example) -> _pipe@1 = day16@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache new file mode 100644 index 0000000..359bdc2 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta new file mode 100644 index 0000000..e7cf5c0 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl new file mode 100644 index 0000000..a07c02a --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl @@ -0,0 +1,253 @@ +-module(day16@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([direction/0, light/0]). + +-type direction() :: up | right | down | left. + +-type light() :: {light, utilities@array2d:posn(), direction()}. + +-spec move(light()) -> light(). +move(L) -> + {light, P, Dir} = L, + case Dir of + up -> + erlang:setelement( + 2, + L, + erlang:setelement(2, P, erlang:element(2, P) - 1) + ); + + down -> + erlang:setelement( + 2, + L, + erlang:setelement(2, P, erlang:element(2, P) + 1) + ); + + left -> + erlang:setelement( + 2, + L, + erlang:setelement(3, P, erlang:element(3, P) - 1) + ); + + right -> + erlang:setelement( + 2, + L, + erlang:setelement(3, P, erlang:element(3, P) + 1) + ) + end. + +-spec transform(light(), {ok, binary()} | {error, nil}) -> list(light()). +transform(L, Cell) -> + gleam@bool:guard( + gleam@result:is_error(Cell), + [], + fun() -> + {ok, C} = case Cell of + {ok, _} -> Cell; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day16/solve"/utf8>>, + function => <<"transform"/utf8>>, + line => 33}) + end, + {light, P, Dir} = L, + case {Dir, C} of + {_, <<"."/utf8>>} -> + [L]; + + {up, <<"|"/utf8>>} -> + [L]; + + {down, <<"|"/utf8>>} -> + [L]; + + {left, <<"-"/utf8>>} -> + [L]; + + {right, <<"-"/utf8>>} -> + [L]; + + {left, <<"/"/utf8>>} -> + [{light, P, down}]; + + {down, <<"/"/utf8>>} -> + [{light, P, left}]; + + {right, <<"/"/utf8>>} -> + [{light, P, up}]; + + {up, <<"/"/utf8>>} -> + [{light, P, right}]; + + {left, <<"\\"/utf8>>} -> + [{light, P, up}]; + + {up, <<"\\"/utf8>>} -> + [{light, P, left}]; + + {right, <<"\\"/utf8>>} -> + [{light, P, down}]; + + {down, <<"\\"/utf8>>} -> + [{light, P, right}]; + + {left, <<"|"/utf8>>} -> + [{light, P, up}, {light, P, down}]; + + {right, <<"|"/utf8>>} -> + [{light, P, up}, {light, P, down}]; + + {up, <<"-"/utf8>>} -> + [{light, P, left}, {light, P, right}]; + + {down, <<"-"/utf8>>} -> + [{light, P, left}, {light, P, right}]; + + {_, _} -> + erlang:error(#{gleam_error => panic, + message => <<"unrecognized cell type"/utf8>>, + module => <<"day16/solve"/utf8>>, + function => <<"transform"/utf8>>, + line => 50}) + end + end + ). + +-spec energize( + list(light()), + gleam@set:set(light()), + gleam@dict:dict(utilities@array2d:posn(), binary()) +) -> integer(). +energize(Lights, Visited, Grid) -> + Next_positions = begin + _pipe = Lights, + _pipe@1 = gleam@list:flat_map( + _pipe, + fun(L) -> + Next = move(L), + transform(Next, gleam@dict:get(Grid, erlang:element(2, Next))) + end + ), + gleam@list:filter( + _pipe@1, + fun(L@1) -> not gleam@set:contains(Visited, L@1) end + ) + end, + All_visited = gleam@set:union(gleam@set:from_list(Next_positions), Visited), + case Visited =:= All_visited of + true -> + _pipe@2 = gleam@set:fold( + Visited, + gleam@set:new(), + fun(Acc, L@2) -> + gleam@set:insert(Acc, erlang:element(2, L@2)) + end + ), + _pipe@3 = gleam@set:to_list(_pipe@2), + gleam@list:length(_pipe@3); + + false -> + energize(Next_positions, All_visited, Grid) + end. + +-spec part1(binary()) -> integer(). +part1(Input) -> + Grid = utilities@array2d:parse_grid(Input), + _pipe = [{light, {posn, 0, -1}, right}], + energize(_pipe, gleam@set:new(), Grid). + +-spec part2(binary()) -> integer(). +part2(Input) -> + Grid = utilities@array2d:parse_grid(Input), + {posn, Rows, Cols} = (gleam@list:fold( + gleam@dict:keys(Grid), + {posn, 0, 0}, + fun(Acc, P) -> + case (erlang:element(2, Acc) + erlang:element(3, Acc)) > (erlang:element( + 2, + P + ) + + erlang:element(3, P)) of + true -> + Acc; + + false -> + P + end + end + )), + All_starts = gleam@list:concat( + [gleam@list:map( + gleam@list:range(0, Rows), + fun(R) -> {light, {posn, R, -1}, right} end + ), + gleam@list:map( + gleam@list:range(0, Rows), + fun(R@1) -> {light, {posn, R@1, Cols + 1}, left} end + ), + gleam@list:map( + gleam@list:range(0, Cols), + fun(C) -> {light, {posn, -1, C}, down} end + ), + gleam@list:map( + gleam@list:range(0, Cols), + fun(C@1) -> {light, {posn, Rows + 1, C@1}, up} end + )] + ), + gleam@list:fold( + All_starts, + 0, + fun(Acc@1, P@1) -> + Energized = energize([P@1], gleam@set:new(), Grid), + case Acc@1 > Energized of + true -> + Acc@1; + + false -> + Energized + end + end + ). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day16/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 107}) + end, + _assert_subject@1 = adglent:get_input(<<"16"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day16/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 108}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache new file mode 100644 index 0000000..a6202af Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta new file mode 100644 index 0000000..8198a7b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl new file mode 100644 index 0000000..38e725d --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl @@ -0,0 +1,52 @@ +-module(day17@day17_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"2413432311323 +3215453535623 +3255245654254 +3446585845452 +4546657867536 +1438598798454 +4457876987766 +3637877979653 +4654967986887 +4564679986453 +1224686865563 +2546548887735 +4322674655533"/utf8>>, + <<"102"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"2413432311323 +3215453535623 +3255245654254 +3446585845452 +4546657867536 +1438598798454 +4457876987766 +3637877979653 +4654967986887 +4564679986453 +1224686865563 +2546548887735 +4322674655533"/utf8>>, + <<"102"/utf8>>}], + fun(Example) -> _pipe@1 = day17@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [], + fun(Example) -> _pipe@1 = day17@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache new file mode 100644 index 0000000..f57cf43 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta new file mode 100644 index 0000000..de4425a Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl new file mode 100644 index 0000000..1eddde6 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl @@ -0,0 +1,231 @@ +-module(day17@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([state/0]). + +-type state() :: {state, + utilities@array2d:posn(), + integer(), + utilities@array2d:posn(), + list(utilities@array2d:posn())}. + +-spec same_dir(state()) -> list(utilities@array2d:posn()). +same_dir(S) -> + case erlang:element(5, S) of + [] -> + []; + + [First | _] = Deltas -> + _pipe = gleam@list:take_while(Deltas, fun(D) -> D =:= First end), + gleam@list:take(_pipe, 10) + end. + +-spec make_key(state()) -> {utilities@array2d:posn(), + list(utilities@array2d:posn())}. +make_key(S) -> + {erlang:element(2, S), same_dir(S)}. + +-spec is_goal(state(), integer(), utilities@array2d:posn()) -> boolean(). +is_goal(S, Min_run, Goal) -> + (Goal =:= erlang:element(2, S)) andalso (gleam@list:length(same_dir(S)) >= Min_run). + +-spec eliminate_bad_neighbors( + utilities@array2d:posn(), + state(), + integer(), + integer(), + gleam@dict:dict(utilities@array2d:posn(), any()) +) -> boolean(). +eliminate_bad_neighbors(D, S, Max, Min, Grid) -> + Neighbor = utilities@array2d:add_posns(D, erlang:element(2, S)), + gleam@bool:guard( + (Neighbor =:= erlang:element(4, S)) orelse not gleam@dict:has_key( + Grid, + Neighbor + ), + false, + fun() -> case {same_dir(S), gleam@list:length(same_dir(S))} of + {[Prev | _], L} when L =:= Max -> + D /= Prev; + + {_, 0} -> + true; + + {[Prev@1 | _], L@1} when L@1 < Min -> + D =:= Prev@1; + + {_, _} -> + true + end end + ). + +-spec make_state( + utilities@array2d:posn(), + state(), + gleam@dict:dict(utilities@array2d:posn(), integer()) +) -> state(). +make_state(D, S, Grid) -> + Neighbor = utilities@array2d:add_posns(D, erlang:element(2, S)), + _assert_subject = gleam@dict:get(Grid, Neighbor), + {ok, Heat_lost} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day17/solve"/utf8>>, + function => <<"make_state"/utf8>>, + line => 58}) + end, + {state, + Neighbor, + erlang:element(3, S) + Heat_lost, + erlang:element(2, S), + [D | erlang:element(5, S)]}. + +-spec find_good_neighbors( + integer(), + integer(), + state(), + gleam@dict:dict(utilities@array2d:posn(), integer()) +) -> list(state()). +find_good_neighbors(Max, Min, S, Grid) -> + _pipe = [{posn, -1, 0}, {posn, 1, 0}, {posn, 0, -1}, {posn, 0, 1}], + _pipe@1 = gleam@list:filter( + _pipe, + fun(_capture) -> + eliminate_bad_neighbors(_capture, S, Max, Min, Grid) + end + ), + gleam@list:map( + _pipe@1, + fun(_capture@1) -> make_state(_capture@1, S, Grid) end + ). + +-spec find_path( + gleam@dict:dict(utilities@array2d:posn(), integer()), + utilities@prioqueue:priority_queue(state()), + gleam@set:set({utilities@array2d:posn(), list(utilities@array2d:posn())}), + fun((state()) -> list(state())), + fun((state()) -> boolean()) +) -> integer(). +find_path(Grid, Queue, Seen, Get_neighbors, Is_goal) -> + _assert_subject = utilities@prioqueue:pop(Queue), + {ok, {State, Rest}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day17/solve"/utf8>>, + function => <<"find_path"/utf8>>, + line => 74}) + end, + Key = make_key( + begin + _pipe = State, + gleam@io:debug(_pipe) + end + ), + case gleam@set:contains(Seen, Key) of + true -> + find_path(Grid, Rest, Seen, Get_neighbors, Is_goal); + + false -> + Now_seen = gleam@set:insert(Seen, Key), + Neighbors = Get_neighbors(State), + case gleam@list:find(Neighbors, Is_goal) of + {ok, Final} -> + erlang:element(3, Final); + + _ -> + Now_queue = gleam@list:fold( + Neighbors, + Rest, + fun(Acc, N) -> + utilities@prioqueue:insert( + Acc, + N, + erlang:element(3, N) + ) + end + ), + find_path(Grid, Now_queue, Now_seen, Get_neighbors, Is_goal) + end + end. + +-spec part1(binary()) -> binary(). +part1(Input) -> + Raw_grid = begin + _pipe = Input, + utilities@array2d:to_list_of_lists(_pipe) + end, + Grid = utilities@array2d:to_2d_intarray(Raw_grid), + Rmax = gleam@list:length(Raw_grid), + _assert_subject = begin + _pipe@1 = Raw_grid, + _pipe@2 = gleam@list:first(_pipe@1), + gleam@result:map(_pipe@2, fun gleam@list:length/1) + end, + {ok, Cmax} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day17/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 107}) + end, + Start = {state, {posn, 0, 0}, 0, {posn, 0, 0}, []}, + Goal = {posn, Rmax, Cmax}, + _pipe@3 = find_path( + Grid, + utilities@prioqueue:insert(utilities@prioqueue:new(), Start, 0), + gleam@set:new(), + fun(_capture) -> find_good_neighbors(0, 3, _capture, Grid) end, + fun(_capture@1) -> is_goal(_capture@1, 1, Goal) end + ), + gleam@string:inspect(_pipe@3). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _pipe = Input, + gleam@string:inspect(_pipe). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day17/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 131}) + end, + _assert_subject@1 = adglent:get_input(<<"17"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day17/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 132}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache new file mode 100644 index 0000000..03f5c97 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta new file mode 100644 index 0000000..4d0ad03 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl new file mode 100644 index 0000000..9763a38 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl @@ -0,0 +1,84 @@ +-module(day18@day18_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)"/utf8>>, + <<"62"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)"/utf8>>, + <<"62"/utf8>>}], + fun(Example) -> _pipe@1 = day18@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)"/utf8>>, + <<"952408144115"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"R 6 (#70c710) +D 5 (#0dc571) +L 2 (#5713f0) +D 2 (#d2c081) +R 2 (#59c680) +D 2 (#411b91) +L 5 (#8ceee2) +U 2 (#caa173) +L 1 (#1b58a2) +U 2 (#caa171) +R 2 (#7807d2) +U 3 (#a77fa3) +L 2 (#015232) +U 2 (#7a21e3)"/utf8>>, + <<"952408144115"/utf8>>}], + fun(Example) -> _pipe@1 = day18@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache new file mode 100644 index 0000000..6fa850f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta new file mode 100644 index 0000000..5a4d476 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl new file mode 100644 index 0000000..3dc5e00 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl @@ -0,0 +1,218 @@ +-module(day18@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([coord/0, direction/0, dig/0]). + +-type coord() :: {coord, integer(), integer()}. + +-type direction() :: up | right | down | left. + +-type dig() :: {dig, direction(), integer()}. + +-spec to_direction(binary()) -> direction(). +to_direction(C) -> + case C of + <<"R"/utf8>> -> + right; + + <<"0"/utf8>> -> + right; + + <<"D"/utf8>> -> + down; + + <<"1"/utf8>> -> + down; + + <<"L"/utf8>> -> + left; + + <<"2"/utf8>> -> + left; + + <<"U"/utf8>> -> + up; + + <<"3"/utf8>> -> + up; + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"day18/solve"/utf8>>, + function => <<"to_direction"/utf8>>, + line => 30}) + end. + +-spec parse_front(binary()) -> dig(). +parse_front(Line) -> + _assert_subject = gleam@regex:from_string(<<"(.) (.*) \\(.*\\)"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day18/solve"/utf8>>, + function => <<"parse_front"/utf8>>, + line => 35}) + end, + _assert_subject@1 = gleam@regex:scan(Re, Line), + [{match, _, [{some, Dir}, {some, Dist}]}] = case _assert_subject@1 of + [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day18/solve"/utf8>>, + function => <<"parse_front"/utf8>>, + line => 36}) + end, + _assert_subject@2 = gleam@int:parse(Dist), + {ok, N} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day18/solve"/utf8>>, + function => <<"parse_front"/utf8>>, + line => 38}) + end, + {dig, to_direction(Dir), N}. + +-spec parse_hex(binary()) -> dig(). +parse_hex(Line) -> + _assert_subject = gleam@regex:from_string(<<"\\(#(.....)(.)\\)"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day18/solve"/utf8>>, + function => <<"parse_hex"/utf8>>, + line => 43}) + end, + _assert_subject@1 = gleam@regex:scan(Re, Line), + [{match, _, [{some, Dist}, {some, Dir}]}] = case _assert_subject@1 of + [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day18/solve"/utf8>>, + function => <<"parse_hex"/utf8>>, + line => 44}) + end, + _assert_subject@2 = gleam@int:base_parse(Dist, 16), + {ok, N} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day18/solve"/utf8>>, + function => <<"parse_hex"/utf8>>, + line => 46}) + end, + {dig, to_direction(Dir), N}. + +-spec go(coord(), dig()) -> coord(). +go(Current, Dig) -> + case Dig of + {dig, up, N} -> + {coord, erlang:element(2, Current), erlang:element(3, Current) + N}; + + {dig, right, N@1} -> + {coord, + erlang:element(2, Current) + N@1, + erlang:element(3, Current)}; + + {dig, down, N@2} -> + {coord, + erlang:element(2, Current), + erlang:element(3, Current) - N@2}; + + {dig, left, N@3} -> + {coord, + erlang:element(2, Current) - N@3, + erlang:element(3, Current)} + end. + +-spec double_triangle(coord(), coord()) -> integer(). +double_triangle(C1, C2) -> + (erlang:element(2, C1) * erlang:element(3, C2)) - (erlang:element(2, C2) * erlang:element( + 3, + C1 + )). + +-spec do_next_dig(list(dig()), coord(), integer(), integer()) -> integer(). +do_next_dig(Digs, Current, Area, Perimeter) -> + case Digs of + [] -> + ((gleam@int:absolute_value(Area) div 2) + (Perimeter div 2)) + 1; + + [Dig | Rest] -> + Next = go(Current, Dig), + Area@1 = Area + double_triangle(Current, Next), + Perimeter@1 = Perimeter + erlang:element(3, Dig), + do_next_dig(Rest, Next, Area@1, Perimeter@1) + end. + +-spec start_dig(list(dig())) -> integer(). +start_dig(Digs) -> + do_next_dig(Digs, {coord, 0, 0}, 0, 0). + +-spec solve_with(binary(), fun((binary()) -> dig())) -> binary(). +solve_with(Input, F) -> + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, F), + _pipe@3 = start_dig(_pipe@2), + gleam@string:inspect(_pipe@3). + +-spec part1(binary()) -> binary(). +part1(Input) -> + solve_with(Input, fun parse_front/1). + +-spec part2(binary()) -> binary(). +part2(Input) -> + solve_with(Input, fun parse_hex/1). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day18/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 101}) + end, + _assert_subject@1 = adglent:get_input(<<"18"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day18/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 102}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache new file mode 100644 index 0000000..3b5eab2 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta new file mode 100644 index 0000000..e633833 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl new file mode 100644 index 0000000..2404595 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl @@ -0,0 +1,96 @@ +-module(day19@day19_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}"/utf8>>, + <<"19114"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}"/utf8>>, + <<"19114"/utf8>>}], + fun(Example) -> _pipe@1 = day19@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}"/utf8>>, + <<"167409079868000"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"px{a<2006:qkq,m>2090:A,rfg} +pv{a>1716:R,A} +lnx{m>1548:A,A} +rfg{s<537:gd,x>2440:R,A} +qs{s>3448:A,lnx} +qkq{x<1416:A,crn} +crn{x>2662:A,R} +in{s<1351:px,qqz} +qqz{s>2770:qs,m<1801:hdj,R} +gd{a>3333:R,R} +hdj{m>838:A,pv} + +{x=787,m=2655,a=1222,s=2876} +{x=1679,m=44,a=2067,s=496} +{x=2036,m=264,a=79,s=2244} +{x=2461,m=1339,a=466,s=291} +{x=2127,m=1623,a=2188,s=1013}"/utf8>>, + <<"167409079868000"/utf8>>}], + fun(Example) -> _pipe@1 = day19@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache new file mode 100644 index 0000000..c7e00e3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta new file mode 100644 index 0000000..0424b05 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl new file mode 100644 index 0000000..242bd74 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl @@ -0,0 +1,459 @@ +-module(day19@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([rating/0, part/0, action/0, rule/0, interval/0, part_range/0]). + +-type rating() :: xtremely_cool | musical | aerodynamic | shiny. + +-type part() :: {part, integer(), integer(), integer(), integer()}. + +-type action() :: accept | reject | {send_to, binary()}. + +-type rule() :: {'if', rating(), gleam@order:order(), integer(), action()} | + {just, action()}. + +-type interval() :: {interval, integer(), integer()}. + +-type part_range() :: {part_range, + interval(), + interval(), + interval(), + interval()}. + +-spec to_instruction(binary()) -> action(). +to_instruction(Rule) -> + case Rule of + <<"A"/utf8>> -> + accept; + + <<"R"/utf8>> -> + reject; + + Name -> + {send_to, Name} + end. + +-spec to_rating(binary()) -> rating(). +to_rating(Rating) -> + case Rating of + <<"x"/utf8>> -> + xtremely_cool; + + <<"m"/utf8>> -> + musical; + + <<"a"/utf8>> -> + aerodynamic; + + _ -> + shiny + end. + +-spec get_rating(part(), rating()) -> integer(). +get_rating(Part, Rating) -> + case Rating of + xtremely_cool -> + erlang:element(2, Part); + + musical -> + erlang:element(3, Part); + + aerodynamic -> + erlang:element(4, Part); + + shiny -> + erlang:element(5, Part) + end. + +-spec to_comp(binary()) -> gleam@order:order(). +to_comp(Comp) -> + case Comp of + <<"<"/utf8>> -> + lt; + + _ -> + gt + end. + +-spec to_val(binary()) -> integer(). +to_val(Val) -> + _assert_subject = gleam@int:parse(Val), + {ok, N} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"to_val"/utf8>>, + line => 100}) + end, + N. + +-spec parse_rules(list(binary())) -> list(rule()). +parse_rules(Rules) -> + _assert_subject = gleam@regex:from_string(<<"(.*)(>|<)(.*):(.*)"/utf8>>), + {ok, Re_rule} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"parse_rules"/utf8>>, + line => 57}) + end, + gleam@list:map(Rules, fun(Rule) -> case gleam@regex:scan(Re_rule, Rule) of + [{match, _, [{some, R}, {some, C}, {some, T}, {some, I}]}] -> + {'if', + to_rating(R), + to_comp(C), + to_val(T), + to_instruction(I)}; + + _ -> + {just, to_instruction(Rule)} + end end). + +-spec parse_workflow(binary()) -> gleam@dict:dict(binary(), list(rule())). +parse_workflow(Input) -> + _assert_subject = gleam@regex:from_string(<<"(.*){(.*)}"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"parse_workflow"/utf8>>, + line => 45}) + end, + gleam@list:fold( + gleam@string:split(Input, <<"\n"/utf8>>), + gleam@dict:new(), + fun(Acc, Line) -> + _assert_subject@1 = gleam@regex:scan(Re, Line), + [{match, _, [{some, Name}, {some, All_rules}]}] = case _assert_subject@1 of + [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day19/solve"/utf8>>, + function => <<"parse_workflow"/utf8>>, + line => 48}) + end, + Rules = begin + _pipe = gleam@string:split(All_rules, <<","/utf8>>), + parse_rules(_pipe) + end, + gleam@dict:insert(Acc, Name, Rules) + end + ). + +-spec parse_parts(binary()) -> list(part()). +parse_parts(Input) -> + _assert_subject = gleam@regex:from_string( + <<"{x=(.*),m=(.*),a=(.*),s=(.*)}"/utf8>> + ), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"parse_parts"/utf8>>, + line => 105}) + end, + gleam@list:map( + gleam@string:split(Input, <<"\n"/utf8>>), + fun(Part) -> + _assert_subject@1 = gleam@regex:scan(Re, Part), + [{match, _, [{some, X}, {some, M}, {some, A}, {some, S}]}] = case _assert_subject@1 of + [{match, _, [{some, _}, {some, _}, {some, _}, {some, _}]}] -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day19/solve"/utf8>>, + function => <<"parse_parts"/utf8>>, + line => 108}) + end, + {part, to_val(X), to_val(M), to_val(A), to_val(S)} + end + ). + +-spec evaluate_rules(part(), list(rule())) -> action(). +evaluate_rules(Part, Rules) -> + case Rules of + [] -> + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"day19/solve"/utf8>>, + function => <<"evaluate_rules"/utf8>>, + line => 128}); + + [{just, Do} | _] -> + Do; + + [{'if', Rating, Comparison, Threshold, Do@1} | Rest] -> + case gleam@int:compare(get_rating(Part, Rating), Threshold) =:= Comparison of + true -> + Do@1; + + false -> + evaluate_rules(Part, Rest) + end + end. + +-spec evaluate_workflow( + part(), + binary(), + gleam@dict:dict(binary(), list(rule())) +) -> integer(). +evaluate_workflow(Part, Name, Workflow) -> + _assert_subject = gleam@dict:get(Workflow, Name), + {ok, Rules} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"evaluate_workflow"/utf8>>, + line => 118}) + end, + case evaluate_rules(Part, Rules) of + accept -> + ((erlang:element(2, Part) + erlang:element(3, Part)) + erlang:element( + 4, + Part + )) + + erlang:element(5, Part); + + reject -> + 0; + + {send_to, Name@1} -> + evaluate_workflow(Part, Name@1, Workflow) + end. + +-spec start_evaluating_workflow(part(), gleam@dict:dict(binary(), list(rule()))) -> integer(). +start_evaluating_workflow(Part, Workflow) -> + evaluate_workflow(Part, <<"in"/utf8>>, Workflow). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _assert_subject = gleam@string:split_once(Input, <<"\n\n"/utf8>>), + {ok, {Workflows_str, Parts_str}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 139}) + end, + Workflows = parse_workflow(Workflows_str), + Parts = parse_parts(Parts_str), + _pipe = gleam@list:map( + Parts, + fun(_capture) -> start_evaluating_workflow(_capture, Workflows) end + ), + _pipe@1 = gleam@int:sum(_pipe), + gleam@string:inspect(_pipe@1). + +-spec size(interval()) -> integer(). +size(Interval) -> + (erlang:element(3, Interval) - erlang:element(2, Interval)) + 1. + +-spec all_in_range(part_range()) -> integer(). +all_in_range(Pr) -> + ((size(erlang:element(2, Pr)) * size(erlang:element(3, Pr))) * size( + erlang:element(4, Pr) + )) + * size(erlang:element(5, Pr)). + +-spec get_partrange(part_range(), rating()) -> interval(). +get_partrange(Pr, Rating) -> + case Rating of + xtremely_cool -> + erlang:element(2, Pr); + + musical -> + erlang:element(3, Pr); + + aerodynamic -> + erlang:element(4, Pr); + + shiny -> + erlang:element(5, Pr) + end. + +-spec update_partrange(part_range(), rating(), interval()) -> part_range(). +update_partrange(Pr, Rating, I) -> + case Rating of + xtremely_cool -> + erlang:setelement(2, Pr, I); + + musical -> + erlang:setelement(3, Pr, I); + + aerodynamic -> + erlang:setelement(4, Pr, I); + + shiny -> + erlang:setelement(5, Pr, I) + end. + +-spec evaluate_rules_on_range( + part_range(), + list(rule()), + gleam@dict:dict(binary(), list(rule())) +) -> integer(). +evaluate_rules_on_range(Pr, Rules, Workflow) -> + case Rules of + [{just, accept} | _] -> + all_in_range(Pr); + + [{just, reject} | _] -> + 0; + + [{just, {send_to, Name}} | _] -> + evaluate_workflow_on_range(Pr, Name, Workflow); + + [{'if', Rating, Comparison, T, Action} | Rest] -> + Mod_i = get_partrange(Pr, Rating), + case Comparison of + lt -> + split_range( + update_partrange( + Pr, + Rating, + {interval, erlang:element(2, Mod_i), T - 1} + ), + Action, + update_partrange( + Pr, + Rating, + {interval, T, erlang:element(3, Mod_i)} + ), + Rest, + Workflow + ); + + _ -> + split_range( + update_partrange( + Pr, + Rating, + {interval, T + 1, erlang:element(3, Mod_i)} + ), + Action, + update_partrange( + Pr, + Rating, + {interval, erlang:element(2, Mod_i), T} + ), + Rest, + Workflow + ) + end; + + [] -> + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"day19/solve"/utf8>>, + function => <<"evaluate_rules_on_range"/utf8>>, + line => 225}) + end. + +-spec evaluate_workflow_on_range( + part_range(), + binary(), + gleam@dict:dict(binary(), list(rule())) +) -> integer(). +evaluate_workflow_on_range(Pr, Name, Workflow) -> + _assert_subject = gleam@dict:get(Workflow, Name), + {ok, Rules} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"evaluate_workflow_on_range"/utf8>>, + line => 191}) + end, + evaluate_rules_on_range(Pr, Rules, Workflow). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _assert_subject = gleam@string:split_once(Input, <<"\n\n"/utf8>>), + {ok, {Workflows_str, _}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 176}) + end, + Workflow = parse_workflow(Workflows_str), + Start = {interval, 1, 4000}, + _pipe = {part_range, Start, Start, Start, Start}, + _pipe@1 = evaluate_workflow_on_range(_pipe, <<"in"/utf8>>, Workflow), + gleam@string:inspect(_pipe@1). + +-spec split_range( + part_range(), + action(), + part_range(), + list(rule()), + gleam@dict:dict(binary(), list(rule())) +) -> integer(). +split_range(Keep, Action, Pass, Rest, Workflow) -> + gleam@int:add( + evaluate_rules_on_range(Keep, [{just, Action}], Workflow), + evaluate_rules_on_range(Pass, Rest, Workflow) + ). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day19/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 243}) + end, + _assert_subject@1 = adglent:get_input(<<"19"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day19/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 244}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache new file mode 100644 index 0000000..67b16ce Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta new file mode 100644 index 0000000..54af03d Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl new file mode 100644 index 0000000..8c7ab53 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl @@ -0,0 +1,50 @@ +-module(day1@day1_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet"/utf8>>, + <<"142"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet"/utf8>>, + <<"142"/utf8>>}], + fun(Example) -> _pipe@1 = day1@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen"/utf8>>, + <<"281"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen"/utf8>>, + <<"281"/utf8>>}], + fun(Example) -> _pipe@1 = day1@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache new file mode 100644 index 0000000..ea9b785 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta new file mode 100644 index 0000000..8291feb Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl new file mode 100644 index 0000000..15dd24e --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl @@ -0,0 +1,118 @@ +-module(day1@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _assert_subject = gleam@regex:from_string(<<"[1-9]"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day1/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 9}) + end, + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@2 = gleam@list:fold( + _pipe@1, + 0, + fun(Acc, S) -> + Matches = gleam@regex:scan(Re, S), + _assert_subject@1 = gleam@list:first(Matches), + {ok, {match, First, _}} = case _assert_subject@1 of + {ok, {match, _, _}} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day1/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 18}) + end, + _assert_subject@2 = gleam@list:last(Matches), + {ok, {match, Last, _}} = case _assert_subject@2 of + {ok, {match, _, _}} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day1/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 19}) + end, + _assert_subject@3 = gleam@int:parse(<>), + {ok, I} = case _assert_subject@3 of + {ok, _} -> _assert_subject@3; + _assert_fail@3 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@3, + module => <<"day1/solve"/utf8>>, + function => <<"part1"/utf8>>, + line => 20}) + end, + Acc + I + end + ), + gleam@string:inspect(_pipe@2). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _pipe = gleam@list:fold( + [{<<"one"/utf8>>, <<"o1e"/utf8>>}, + {<<"two"/utf8>>, <<"t2o"/utf8>>}, + {<<"three"/utf8>>, <<"t3e"/utf8>>}, + {<<"four"/utf8>>, <<"4"/utf8>>}, + {<<"five"/utf8>>, <<"5e"/utf8>>}, + {<<"six"/utf8>>, <<"6"/utf8>>}, + {<<"seven"/utf8>>, <<"7n"/utf8>>}, + {<<"eight"/utf8>>, <<"e8t"/utf8>>}, + {<<"nine"/utf8>>, <<"n9e"/utf8>>}], + Input, + fun(Acc, Sub) -> + {From, To} = Sub, + gleam@string:replace(Acc, From, To) + end + ), + part1(_pipe). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day1/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 52}) + end, + _assert_subject@1 = adglent:get_input(<<"1"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day1/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 53}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache new file mode 100644 index 0000000..7b0c4ff Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta new file mode 100644 index 0000000..684b2f3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl new file mode 100644 index 0000000..145fc1c --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl @@ -0,0 +1,52 @@ +-module(day20@day20_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"broadcaster -> a, b, c +%a -> b +%b -> c +%c -> inv +&inv -> a"/utf8>>, + <<"32000000"/utf8>>}, + {example, + <<"broadcaster -> a +%a -> inv, con +&inv -> b +%b -> con +&con -> output +output -> "/utf8>>, + <<"11687500"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"broadcaster -> a, b, c +%a -> b +%b -> c +%c -> inv +&inv -> a"/utf8>>, + <<"32000000"/utf8>>}, + {example, + <<"broadcaster -> a +%a -> inv, con +&inv -> b +%b -> con +&con -> output +output -> "/utf8>>, + <<"11687500"/utf8>>}], + fun(Example) -> _pipe@1 = day20@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [], + fun(Example) -> _pipe@1 = day20@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache new file mode 100644 index 0000000..74900a3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta new file mode 100644 index 0000000..e37bfb8 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl new file mode 100644 index 0000000..a4442a0 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl @@ -0,0 +1,237 @@ +-module(day20@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([node_/0, tone/0, power/0, tone_pitch/0]). + +-type node_() :: {broadcaster, list(binary())} | + {flipflop, list(binary()), power()} | + {conjunction, list(binary()), gleam@dict:dict(binary(), tone_pitch())} | + {ground, list(binary())}. + +-type tone() :: {tone, binary(), binary(), tone_pitch()}. + +-type power() :: on | off. + +-type tone_pitch() :: low | high. + +-spec flip_power(power()) -> power(). +flip_power(P) -> + case P of + on -> + off; + + off -> + on + end. + +-spec flip_flop_pitch(power()) -> tone_pitch(). +flip_flop_pitch(P) -> + case P of + off -> + high; + + on -> + low + end. + +-spec parse_node(binary()) -> {binary(), node_()}. +parse_node(Input) -> + _assert_subject = gleam@string:split(Input, <<" -> "/utf8>>), + [Full_name, Children_str] = case _assert_subject of + [_, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day20/solve"/utf8>>, + function => <<"parse_node"/utf8>>, + line => 45}) + end, + Children = gleam@string:split(Children_str, <<", "/utf8>>), + case Full_name of + <<"%"/utf8, Name/binary>> -> + {Name, {flipflop, Children, off}}; + + <<"&"/utf8, Name@1/binary>> -> + {Name@1, {conjunction, Children, gleam@dict:new()}}; + + <<"broadcaster"/utf8>> -> + {<<"broadcaster"/utf8>>, {broadcaster, Children}}; + + Name@2 -> + {Name@2, {ground, []}} + end. + +-spec to_initial_state(list({binary(), node_()})) -> gleam@dict:dict(binary(), node_()). +to_initial_state(Nodes) -> + Node_dict = gleam@dict:from_list(Nodes), + Node_names = gleam@dict:keys(Node_dict), + gleam@dict:map_values(Node_dict, fun(Name, Node) -> case Node of + {conjunction, Chs, _} -> + _pipe = Node_names, + _pipe@1 = gleam@list:filter( + _pipe, + fun(N) -> + _assert_subject = gleam@dict:get(Node_dict, N), + {ok, Node@1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day20/solve"/utf8>>, + function => <<"to_initial_state"/utf8>>, + line => 65}) + end, + gleam@list:contains(erlang:element(2, Node@1), Name) + end + ), + _pipe@2 = gleam@list:map( + _pipe@1, + fun(N@1) -> {N@1, low} end + ), + _pipe@3 = gleam@dict:from_list(_pipe@2), + (fun(Dict) -> {conjunction, Chs, Dict} end)(_pipe@3); + + Other -> + Other + end end). + +-spec press_button_once( + {gleam@dict:dict(binary(), node_()), integer(), integer()}, + gleam@queue:queue(tone()) +) -> {gleam@dict:dict(binary(), node_()), integer(), integer()}. +press_button_once(Initial, Queue) -> + {Nodes, High, Low} = Initial, + gleam@bool:guard( + gleam@queue:is_empty(Queue), + Initial, + fun() -> + _assert_subject = gleam@queue:pop_front(Queue), + {ok, {{tone, From_name, To_name, Pitch} = Tone, Rest}} = case _assert_subject of + {ok, {{tone, _, _, _}, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day20/solve"/utf8>>, + function => <<"press_button_once"/utf8>>, + line => 81}) + end, + gleam@io:debug(Tone), + _assert_subject@1 = gleam@dict:get(Nodes, To_name), + {ok, To_node} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day20/solve"/utf8>>, + function => <<"press_button_once"/utf8>>, + line => 84}) + end, + case To_node of + {broadcaster, Children} -> + _pipe = gleam@list:fold( + Children, + Rest, + fun(Acc, C) -> + gleam@queue:push_back( + Acc, + {tone, To_name, C, Pitch} + ) + end + ), + press_button_once(Initial, _pipe); + + {conjunction, _, _} -> + press_button_once(Initial, Rest); + + {flipflop, _, _} when Pitch =:= high -> + press_button_once(Initial, Rest); + + {flipflop, Children@1, State} -> + Updated_nodes = gleam@dict:insert( + Nodes, + To_name, + {flipflop, Children@1, flip_power(State)} + ), + Updated_queue = gleam@list:fold( + Children@1, + Rest, + fun(Acc@1, C@1) -> + gleam@queue:push_back( + Acc@1, + {tone, To_name, C@1, flip_flop_pitch(State)} + ) + end + ), + press_button_once({Updated_nodes, 0, 0}, Updated_queue); + + {ground, _} -> + press_button_once(Initial, Rest) + end + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + Initial_state = begin + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, fun parse_node/1), + to_initial_state(_pipe@2) + end, + press_button_once( + {Initial_state, 0, 1}, + begin + _pipe@3 = [{tone, <<"button"/utf8>>, <<"broadcaster"/utf8>>, low}], + gleam@queue:from_list(_pipe@3) + end + ), + <<"1"/utf8>>. + +-spec part2(binary()) -> any(). +part2(Input) -> + erlang:error(#{gleam_error => todo, + message => <<"Implement solution to part 2"/utf8>>, + module => <<"day20/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 130}). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day20/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 134}) + end, + _assert_subject@1 = adglent:get_input(<<"20"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day20/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 135}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache new file mode 100644 index 0000000..8014a5c Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta new file mode 100644 index 0000000..7f44851 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl new file mode 100644 index 0000000..8795f58 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl @@ -0,0 +1,54 @@ +-module(day2@day2_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, + 8}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, + 8}], + fun(Example) -> _pipe@1 = day2@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, + 2286}, + {example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green"/utf8>>, + 48}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green +Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue +Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red +Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red +Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, + 2286}, + {example, + <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green"/utf8>>, + 48}], + fun(Example) -> _pipe@1 = day2@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache new file mode 100644 index 0000000..7533395 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta new file mode 100644 index 0000000..237d90e Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl new file mode 100644 index 0000000..0cd8105 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl @@ -0,0 +1,166 @@ +-module(day2@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([game/0]). + +-type game() :: {game, integer(), integer(), integer()}. + +-spec parse(binary()) -> list(list(game())). +parse(Input) -> + gleam@list:map( + gleam@string:split(Input, <<"\n"/utf8>>), + fun(Line) -> + _assert_subject = gleam@string:split(Line, <<": "/utf8>>), + [_, Rounds] = case _assert_subject of + [_, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day2/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 13}) + end, + gleam@list:map( + gleam@string:split(Rounds, <<"; "/utf8>>), + fun(Match) -> + gleam@list:fold( + gleam@string:split(Match, <<", "/utf8>>), + {game, 0, 0, 0}, + fun(Acc, Draw) -> + _assert_subject@1 = gleam@string:split_once( + Draw, + <<" "/utf8>> + ), + {ok, {N_str, Color}} = case _assert_subject@1 of + {ok, {_, _}} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day2/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 19}) + end, + _assert_subject@2 = gleam@int:parse(N_str), + {ok, N} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day2/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 20}) + end, + case Color of + <<"red"/utf8>> -> + erlang:setelement(2, Acc, N); + + <<"blue"/utf8>> -> + erlang:setelement(3, Acc, N); + + <<"green"/utf8>> -> + erlang:setelement(4, Acc, N); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"unrecognized color"/utf8>>, + module => <<"day2/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 25}) + end + end + ) + end + ) + end + ). + +-spec part1(binary()) -> integer(). +part1(Input) -> + gleam@list:index_fold( + parse(Input), + 0, + fun(Acc, Game, I) -> + case gleam@list:any( + Game, + fun(M) -> + ((erlang:element(2, M) > 12) orelse (erlang:element(4, M) > 13)) + orelse (erlang:element(3, M) > 14) + end + ) of + false -> + (Acc + I) + 1; + + true -> + Acc + end + end + ). + +-spec part2(binary()) -> integer(). +part2(Input) -> + _pipe = (gleam@list:map( + parse(Input), + fun(Game) -> + gleam@list:fold( + Game, + {game, 0, 0, 0}, + fun(Acc, Match) -> + {game, Red, Blue, Green} = Match, + {game, + gleam@int:max(Red, erlang:element(2, Acc)), + gleam@int:max(Blue, erlang:element(3, Acc)), + gleam@int:max(Green, erlang:element(4, Acc))} + end + ) + end + )), + gleam@list:fold( + _pipe, + 0, + fun(Acc@1, G) -> + Acc@1 + ((erlang:element(2, G) * erlang:element(3, G)) * erlang:element( + 4, + G + )) + end + ). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day2/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 55}) + end, + _assert_subject@1 = adglent:get_input(<<"2"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day2/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 56}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache new file mode 100644 index 0000000..a3b1377 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta new file mode 100644 index 0000000..f603e6b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl new file mode 100644 index 0000000..31de387 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl @@ -0,0 +1,68 @@ +-module(day3@day3_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.."/utf8>>, + 4361}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.."/utf8>>, + 4361}], + fun(Example) -> _pipe@1 = day3@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.."/utf8>>, + 467835}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"467..114.. +...*...... +..35..633. +......#... +617*...... +.....+.58. +..592..... +......755. +...$.*.... +.664.598.."/utf8>>, + 467835}], + fun(Example) -> _pipe@1 = day3@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache new file mode 100644 index 0000000..13bc7af Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta new file mode 100644 index 0000000..7961cc1 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl new file mode 100644 index 0000000..d4df3d6 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl @@ -0,0 +1,254 @@ +-module(day3@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([coord/0, symbol_kind/0, symbol/0, cell/0, part/0]). + +-type coord() :: {coord, integer(), integer()}. + +-type symbol_kind() :: gear | something_else. + +-type symbol() :: {number, integer()} | {symbol, symbol_kind()} | empty. + +-type cell() :: {cell, coord(), symbol()}. + +-type part() :: {part, list(coord()), integer()}. + +-spec to_symbol(binary()) -> symbol(). +to_symbol(C) -> + case {gleam@int:parse(C), C} of + {{ok, N}, _} -> + {number, N}; + + {_, <<"."/utf8>>} -> + empty; + + {_, <<"*"/utf8>>} -> + {symbol, gear}; + + {_, _} -> + {symbol, something_else} + end. + +-spec to_board(binary()) -> gleam@dict:dict(coord(), symbol()). +to_board(Input) -> + _pipe = (gleam@list:index_map( + gleam@string:split(Input, <<"\n"/utf8>>), + fun(Y, R) -> + gleam@list:index_map( + gleam@string:to_graphemes(R), + fun(X, C) -> {{coord, X, Y}, to_symbol(C)} end + ) + end + )), + _pipe@1 = gleam@list:flatten(_pipe), + gleam@dict:from_list(_pipe@1). + +-spec cell_compare(cell(), cell()) -> gleam@order:order(). +cell_compare(A, B) -> + case gleam@int:compare( + erlang:element(3, erlang:element(2, A)), + erlang:element(3, erlang:element(2, B)) + ) of + eq -> + gleam@int:compare( + erlang:element(2, erlang:element(2, A)), + erlang:element(2, erlang:element(2, B)) + ); + + Other -> + Other + end. + +-spec find_all_part_digits(gleam@dict:dict(coord(), symbol())) -> list(cell()). +find_all_part_digits(B) -> + _pipe = B, + _pipe@1 = gleam@dict:filter(_pipe, fun(_, V) -> case V of + {number, _} -> + true; + + _ -> + false + end end), + _pipe@2 = gleam@dict:to_list(_pipe@1), + _pipe@3 = gleam@list:map( + _pipe@2, + fun(Tup) -> {cell, erlang:element(1, Tup), erlang:element(2, Tup)} end + ), + gleam@list:sort(_pipe@3, fun cell_compare/2). + +-spec do_parts(list(cell()), list(part())) -> list(part()). +do_parts(Cells, Parts) -> + case Cells of + [] -> + Parts; + + [{cell, Next, {number, N}} | T] -> + case Parts of + [] -> + do_parts(T, [{part, [Next], N} | Parts]); + + [{part, [Prev | _] = Coords, N0} | Rest_parts] -> + case {(erlang:element(2, Next) - erlang:element(2, Prev)), + (erlang:element(3, Next) - erlang:element(3, Prev))} of + {1, 0} -> + do_parts( + T, + [{part, [Next | Coords], (N0 * 10) + N} | + Rest_parts] + ); + + {_, _} -> + do_parts(T, [{part, [Next], N} | Parts]) + end; + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"day3/solve"/utf8>>, + function => <<"do_parts"/utf8>>, + line => 90}) + end; + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"day3/solve"/utf8>>, + function => <<"do_parts"/utf8>>, + line => 93}) + end. + +-spec to_parts(list(cell())) -> list(part()). +to_parts(Cells) -> + do_parts(Cells, []). + +-spec all_neighbors(coord()) -> list(coord()). +all_neighbors(C) -> + gleam@list:flat_map( + [-1, 0, 1], + fun(Dx) -> gleam@list:filter_map([-1, 0, 1], fun(Dy) -> case {Dx, Dy} of + {0, 0} -> + {error, nil}; + + {_, _} -> + {ok, + {coord, + erlang:element(2, C) + Dx, + erlang:element(3, C) + Dy}} + end end) end + ). + +-spec sum_valid_parts(integer(), part(), gleam@dict:dict(coord(), symbol())) -> integer(). +sum_valid_parts(Acc, Part, Board) -> + Neighbors = begin + _pipe = erlang:element(2, Part), + _pipe@1 = gleam@list:flat_map(_pipe, fun all_neighbors/1), + gleam@list:unique(_pipe@1) + end, + Sym = [{ok, {symbol, gear}}, {ok, {symbol, something_else}}], + case gleam@list:any( + Neighbors, + fun(C) -> gleam@list:contains(Sym, gleam@dict:get(Board, C)) end + ) of + true -> + Acc + erlang:element(3, Part); + + false -> + Acc + end. + +-spec part1(binary()) -> integer(). +part1(Input) -> + Board = to_board(Input), + _pipe = Board, + _pipe@1 = find_all_part_digits(_pipe), + _pipe@2 = to_parts(_pipe@1), + gleam@list:fold( + _pipe@2, + 0, + fun(Acc, P) -> sum_valid_parts(Acc, P, Board) end + ). + +-spec to_part_with_neighbors(part()) -> part(). +to_part_with_neighbors(Part) -> + _pipe = erlang:element(2, Part), + _pipe@1 = gleam@list:flat_map(_pipe, fun all_neighbors/1), + _pipe@2 = gleam@list:unique(_pipe@1), + {part, _pipe@2, erlang:element(3, Part)}. + +-spec find_part_numbers_near_gear(coord(), list(part())) -> list(integer()). +find_part_numbers_near_gear(Gear, Parts) -> + gleam@list:filter_map( + Parts, + fun(Part) -> case gleam@list:contains(erlang:element(2, Part), Gear) of + true -> + {ok, erlang:element(3, Part)}; + + false -> + {error, nil} + end end + ). + +-spec to_sum_of_gear_ratios(list(list(integer()))) -> integer(). +to_sum_of_gear_ratios(Adjacent_parts) -> + gleam@list:fold(Adjacent_parts, 0, fun(Acc, Ps) -> case Ps of + [P1, P2] -> + Acc + (P1 * P2); + + _ -> + Acc + end end). + +-spec part2(binary()) -> integer(). +part2(Input) -> + Board = to_board(Input), + Parts = begin + _pipe = Board, + _pipe@1 = find_all_part_digits(_pipe), + _pipe@2 = to_parts(_pipe@1), + gleam@list:map(_pipe@2, fun to_part_with_neighbors/1) + end, + _pipe@3 = Board, + _pipe@4 = gleam@dict:filter(_pipe@3, fun(_, V) -> V =:= {symbol, gear} end), + _pipe@5 = gleam@dict:keys(_pipe@4), + _pipe@6 = gleam@list:map( + _pipe@5, + fun(_capture) -> find_part_numbers_near_gear(_capture, Parts) end + ), + to_sum_of_gear_ratios(_pipe@6). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day3/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 168}) + end, + _assert_subject@1 = adglent:get_input(<<"3"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day3/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 169}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache new file mode 100644 index 0000000..0e2ffd5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta new file mode 100644 index 0000000..5874661 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl new file mode 100644 index 0000000..6044cef --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl @@ -0,0 +1,52 @@ +-module(day4@day4_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, + 13}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, + 13}], + fun(Example) -> _pipe@1 = day4@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, + 30}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, + 30}], + fun(Example) -> _pipe@1 = day4@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache new file mode 100644 index 0000000..b49cc67 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta new file mode 100644 index 0000000..e4e4c35 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl new file mode 100644 index 0000000..8feb45a --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl @@ -0,0 +1,169 @@ +-module(day4@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([card/0]). + +-type card() :: {card, integer(), integer()}. + +-spec numbers_to_set(binary()) -> gleam@set:set(integer()). +numbers_to_set(Str) -> + _pipe = Str, + _pipe@1 = gleam@string:split(_pipe, <<" "/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, fun gleam@int:parse/1), + _pipe@3 = gleam@result:values(_pipe@2), + gleam@set:from_list(_pipe@3). + +-spec parse_card(binary()) -> card(). +parse_card(Card) -> + _assert_subject = gleam@string:split_once(Card, <<": "/utf8>>), + {ok, {<<"Card"/utf8, N_str/binary>>, Rest}} = case _assert_subject of + {ok, {<<"Card"/utf8, _/binary>>, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day4/solve"/utf8>>, + function => <<"parse_card"/utf8>>, + line => 25}) + end, + _assert_subject@1 = gleam@string:split_once(Rest, <<" | "/utf8>>), + {ok, {Winning_str, Has_str}} = case _assert_subject@1 of + {ok, {_, _}} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day4/solve"/utf8>>, + function => <<"parse_card"/utf8>>, + line => 26}) + end, + _assert_subject@2 = gleam@int:parse(gleam@string:trim(N_str)), + {ok, N} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day4/solve"/utf8>>, + function => <<"parse_card"/utf8>>, + line => 27}) + end, + Winning = numbers_to_set(Winning_str), + Has = numbers_to_set(Has_str), + Winners = gleam@set:size(gleam@set:intersection(Winning, Has)), + {card, N, Winners}. + +-spec win_points(integer()) -> integer(). +win_points(N) -> + gleam@bool:guard(N < 2, N, fun() -> 2 * win_points(N - 1) end). + +-spec part1(binary()) -> integer(). +part1(Input) -> + gleam@list:fold( + gleam@string:split(Input, <<"\n"/utf8>>), + 0, + fun(Acc, C) -> _pipe = C, + _pipe@1 = parse_card(_pipe), + _pipe@2 = (fun(C@1) -> win_points(erlang:element(3, C@1)) end)( + _pipe@1 + ), + gleam@int:add(_pipe@2, Acc) end + ). + +-spec update_counts(integer(), card(), gleam@dict:dict(integer(), integer())) -> gleam@dict:dict(integer(), integer()). +update_counts(N, Card, Count) -> + _assert_subject = gleam@dict:get(Count, erlang:element(2, Card)), + {ok, Bonus} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day4/solve"/utf8>>, + function => <<"update_counts"/utf8>>, + line => 65}) + end, + gleam@list:fold( + gleam@list:range( + erlang:element(2, Card) + 1, + erlang:element(2, Card) + N + ), + Count, + fun(Acc, N@1) -> gleam@dict:update(Acc, N@1, fun(C) -> case C of + {some, I} -> + I + Bonus; + + none -> + erlang:error(#{gleam_error => panic, + message => <<"won a card that doesn't exist in the card pile"/utf8>>, + module => <<"day4/solve"/utf8>>, + function => <<"update_counts"/utf8>>, + line => 70}) + end end) end + ). + +-spec win_more_cards(list(binary()), gleam@dict:dict(integer(), integer())) -> integer(). +win_more_cards(Cards, Count) -> + case Cards of + [] -> + _pipe = Count, + _pipe@1 = gleam@dict:values(_pipe), + gleam@int:sum(_pipe@1); + + [Raw_card | Rest] -> + Card = parse_card(Raw_card), + case erlang:element(3, Card) of + 0 -> + win_more_cards(Rest, Count); + + N -> + win_more_cards(Rest, update_counts(N, Card, Count)) + end + end. + +-spec part2(binary()) -> integer(). +part2(Input) -> + Cards = gleam@string:split(Input, <<"\n"/utf8>>), + Count = begin + _pipe = gleam@list:range(1, gleam@list:length(Cards)), + _pipe@1 = gleam@list:map(_pipe, fun(N) -> {N, 1} end), + gleam@dict:from_list(_pipe@1) + end, + win_more_cards(Cards, Count). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day4/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 86}) + end, + _assert_subject@1 = adglent:get_input(<<"4"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day4/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 87}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache new file mode 100644 index 0000000..0b18c75 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta new file mode 100644 index 0000000..4224316 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl new file mode 100644 index 0000000..c3fe14d --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl @@ -0,0 +1,160 @@ +-module(day5@day5_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4"/utf8>>, + <<"35"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4"/utf8>>, + <<"35"/utf8>>}], + fun(Example) -> _pipe@1 = day5@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4"/utf8>>, + <<"46"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4"/utf8>>, + <<"46"/utf8>>}], + fun(Example) -> _pipe@1 = day5@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache new file mode 100644 index 0000000..b5e7372 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta new file mode 100644 index 0000000..8a8b5b8 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl new file mode 100644 index 0000000..f47ab25 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl @@ -0,0 +1,269 @@ +-module(day5@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([almanac/0, mapping_range/0, seed_range/0]). + +-type almanac() :: {almanac, list(integer()), list(list(mapping_range()))}. + +-type mapping_range() :: {m_range, integer(), integer(), integer()}. + +-type seed_range() :: {s_range, integer(), integer()}. + +-spec string_to_int_list(binary()) -> list(integer()). +string_to_int_list(Str) -> + _pipe = Str, + _pipe@1 = gleam@string:split(_pipe, <<" "/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, fun gleam@int:parse/1), + gleam@result:values(_pipe@2). + +-spec parse_mrange(binary()) -> mapping_range(). +parse_mrange(Str) -> + _assert_subject = string_to_int_list(Str), + [Destination, Source, Range_width] = case _assert_subject of + [_, _, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day5/solve"/utf8>>, + function => <<"parse_mrange"/utf8>>, + line => 55}) + end, + {m_range, Source, (Source + Range_width) - 1, Destination - Source}. + +-spec parse_mapper(list(binary())) -> list(mapping_range()). +parse_mapper(Strs) -> + [_ | Raw_ranges] = case Strs of + [_ | _] -> Strs; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day5/solve"/utf8>>, + function => <<"parse_mapper"/utf8>>, + line => 49}) + end, + _pipe = gleam@list:map(Raw_ranges, fun parse_mrange/1), + gleam@list:sort( + _pipe, + fun(A, B) -> + gleam@int:compare(erlang:element(2, A), erlang:element(2, B)) + end + ). + +-spec parse_input(binary()) -> almanac(). +parse_input(Input) -> + _assert_subject = gleam@string:split(Input, <<"\n\n"/utf8>>), + [<<"seeds: "/utf8, Raw_seeds/binary>> | Raw_mappers] = case _assert_subject of + [<<"seeds: "/utf8, _/binary>> | _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day5/solve"/utf8>>, + function => <<"parse_input"/utf8>>, + line => 29}) + end, + Seeds = string_to_int_list(Raw_seeds), + Mappers = gleam@list:map( + Raw_mappers, + gleam@function:compose( + fun(_capture) -> gleam@string:split(_capture, <<"\n"/utf8>>) end, + fun parse_mapper/1 + ) + ), + {almanac, Seeds, Mappers}. + +-spec correspond(integer(), list(mapping_range())) -> integer(). +correspond(N, Mapper) -> + gleam@list:fold_until( + Mapper, + N, + fun(Acc, Mrange) -> + case (erlang:element(2, Mrange) =< Acc) andalso (Acc =< erlang:element( + 3, + Mrange + )) of + true -> + {stop, Acc + erlang:element(4, Mrange)}; + + false -> + {continue, Acc} + end + end + ). + +-spec part1(binary()) -> binary(). +part1(Input) -> + {almanac, Seeds, Mappers} = parse_input(Input), + _pipe = gleam@list:map( + Seeds, + fun(_capture) -> + gleam@list:fold(Mappers, _capture, fun correspond/2) + end + ), + _pipe@1 = gleam@list:reduce(_pipe, fun gleam@int:min/2), + _pipe@2 = gleam@result:unwrap(_pipe@1, 0), + gleam@string:inspect(_pipe@2). + +-spec transform_range(seed_range(), mapping_range()) -> seed_range(). +transform_range(R, Mapper) -> + {s_range, + erlang:element(2, R) + erlang:element(4, Mapper), + erlang:element(3, R) + erlang:element(4, Mapper)}. + +-spec do_remap_range(seed_range(), list(mapping_range()), list(seed_range())) -> list(seed_range()). +do_remap_range(R, Mapper, Acc) -> + case Mapper of + [] -> + [R | Acc]; + + [M | _] when erlang:element(3, R) < erlang:element(2, M) -> + [R | Acc]; + + [M@1 | Ms] when erlang:element(2, R) > erlang:element(3, M@1) -> + do_remap_range(R, Ms, Acc); + + [M@2 | _] when (erlang:element(2, R) >= erlang:element(2, M@2)) andalso (erlang:element( + 3, + R + ) =< erlang:element(3, M@2)) -> + [transform_range(R, M@2) | Acc]; + + [M@3 | _] when (erlang:element(2, R) < erlang:element(2, M@3)) andalso (erlang:element( + 3, + R + ) =< erlang:element(3, M@3)) -> + [{s_range, erlang:element(2, R), erlang:element(2, M@3) - 1}, + transform_range( + {s_range, erlang:element(2, M@3), erlang:element(3, R)}, + M@3 + ) | + Acc]; + + [M@4 | Ms@1] when (erlang:element(2, R) >= erlang:element(2, M@4)) andalso (erlang:element( + 3, + R + ) > erlang:element(3, M@4)) -> + do_remap_range( + {s_range, erlang:element(3, M@4) + 1, erlang:element(3, R)}, + Ms@1, + [transform_range( + {s_range, erlang:element(2, R), erlang:element(3, M@4)}, + M@4 + ) | + Acc] + ); + + [M@5 | Ms@2] -> + do_remap_range( + {s_range, erlang:element(3, M@5) + 1, erlang:element(3, R)}, + Ms@2, + [{s_range, erlang:element(2, R), erlang:element(2, M@5) - 1}, + transform_range( + {s_range, + erlang:element(2, M@5), + erlang:element(3, M@5)}, + M@5 + ) | + Acc] + ) + end. + +-spec remap_range(seed_range(), list(mapping_range())) -> list(seed_range()). +remap_range(R, Mapper) -> + do_remap_range(R, Mapper, []). + +-spec remap_all_seed_ranges(list(seed_range()), list(list(mapping_range()))) -> list(seed_range()). +remap_all_seed_ranges(Srs, Mappers) -> + case Mappers of + [] -> + Srs; + + [Mapper | Rest] -> + _pipe = gleam@list:flat_map( + Srs, + fun(_capture) -> remap_range(_capture, Mapper) end + ), + remap_all_seed_ranges(_pipe, Rest) + end. + +-spec part2(binary()) -> binary(). +part2(Input) -> + {almanac, Seeds, Mappers} = parse_input(Input), + _assert_subject = begin + _pipe = Seeds, + _pipe@1 = gleam@list:sized_chunk(_pipe, 2), + _pipe@3 = gleam@list:map( + _pipe@1, + fun(Chunk) -> + [Start, Length] = case Chunk of + [_, _] -> Chunk; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day5/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 87}) + end, + _pipe@2 = [{s_range, Start, (Start + Length) - 1}], + remap_all_seed_ranges(_pipe@2, Mappers) + end + ), + _pipe@4 = gleam@list:flatten(_pipe@3), + gleam@list:sort( + _pipe@4, + fun(A, B) -> + gleam@int:compare(erlang:element(2, A), erlang:element(2, B)) + end + ) + end, + [{s_range, Answer, _} | _] = case _assert_subject of + [{s_range, _, _} | _] -> _assert_subject; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day5/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 83}) + end, + gleam@string:inspect(Answer). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day5/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 155}) + end, + _assert_subject@1 = adglent:get_input(<<"5"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day5/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 156}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache new file mode 100644 index 0000000..ebca7b3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta new file mode 100644 index 0000000..f9fa286 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl new file mode 100644 index 0000000..a306363 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl @@ -0,0 +1,36 @@ +-module(day6@day6_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"Time: 7 15 30 +Distance: 9 40 200"/utf8>>, + <<"288"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Time: 7 15 30 +Distance: 9 40 200"/utf8>>, + <<"288"/utf8>>}], + fun(Example) -> _pipe@1 = day6@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"Time: 7 15 30 +Distance: 9 40 200"/utf8>>, + <<"71503"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"Time: 7 15 30 +Distance: 9 40 200"/utf8>>, + <<"71503"/utf8>>}], + fun(Example) -> _pipe@1 = day6@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache new file mode 100644 index 0000000..2fa1771 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta new file mode 100644 index 0000000..a546033 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl new file mode 100644 index 0000000..86a8033 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl @@ -0,0 +1,131 @@ +-module(day6@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([race/0]). + +-type race() :: {race, integer(), integer()}. + +-spec parse_with_bad_kerning(binary()) -> list(race()). +parse_with_bad_kerning(Input) -> + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@5 = gleam@list:map(_pipe@1, fun(Str) -> _pipe@2 = Str, + _pipe@3 = gleam@string:split(_pipe@2, <<" "/utf8>>), + _pipe@4 = gleam@list:map(_pipe@3, fun gleam@int:parse/1), + gleam@result:values(_pipe@4) end), + _pipe@6 = gleam@list:transpose(_pipe@5), + gleam@list:map( + _pipe@6, + fun(Ns) -> + [T, D] = case Ns of + [_, _] -> Ns; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day6/solve"/utf8>>, + function => <<"parse_with_bad_kerning"/utf8>>, + line => 23}) + end, + {race, T, D} + end + ). + +-spec find_bound(race(), integer(), integer()) -> integer(). +find_bound(Race, Button_time, Step) -> + Travel_time = erlang:element(2, Race) - Button_time, + case (Button_time * Travel_time) > erlang:element(3, Race) of + true -> + Button_time; + + false -> + find_bound(Race, Button_time + Step, Step) + end. + +-spec lower_bound(race()) -> integer(). +lower_bound(Race) -> + find_bound(Race, 1, 1). + +-spec upper_bound(race()) -> integer(). +upper_bound(Race) -> + find_bound(Race, erlang:element(2, Race), -1). + +-spec part1(binary()) -> binary(). +part1(Input) -> + _pipe = (gleam@list:fold( + parse_with_bad_kerning(Input), + 1, + fun(Acc, Race) -> + Acc * ((upper_bound(Race) - lower_bound(Race)) + 1) + end + )), + gleam@string:inspect(_pipe). + +-spec parse_properly(binary()) -> list(integer()). +parse_properly(Input) -> + _pipe = Input, + _pipe@1 = gleam@string:replace(_pipe, <<" "/utf8>>, <<""/utf8>>), + _pipe@2 = gleam@string:split(_pipe@1, <<"\n"/utf8>>), + _pipe@3 = gleam@list:flat_map( + _pipe@2, + fun(_capture) -> gleam@string:split(_capture, <<":"/utf8>>) end + ), + _pipe@4 = gleam@list:map(_pipe@3, fun gleam@int:parse/1), + gleam@result:values(_pipe@4). + +-spec part2(binary()) -> binary(). +part2(Input) -> + _assert_subject = begin + _pipe = Input, + parse_properly(_pipe) + end, + [Time, Distance] = case _assert_subject of + [_, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day6/solve"/utf8>>, + function => <<"part2"/utf8>>, + line => 62}) + end, + Race = {race, Time, Distance}, + _pipe@1 = (upper_bound(Race) - lower_bound(Race)) + 1, + gleam@string:inspect(_pipe@1). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day6/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 73}) + end, + _assert_subject@1 = adglent:get_input(<<"6"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day6/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 74}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache new file mode 100644 index 0000000..44b76c4 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta new file mode 100644 index 0000000..416021b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl new file mode 100644 index 0000000..917a57e --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl @@ -0,0 +1,48 @@ +-module(day7@day7_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483"/utf8>>, + <<"6440"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483"/utf8>>, + <<"6440"/utf8>>}], + fun(Example) -> _pipe@1 = day7@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483"/utf8>>, + <<"5905"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483"/utf8>>, + <<"5905"/utf8>>}], + fun(Example) -> _pipe@1 = day7@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache new file mode 100644 index 0000000..5603a95 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta new file mode 100644 index 0000000..c381778 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl new file mode 100644 index 0000000..7666e16 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl @@ -0,0 +1,242 @@ +-module(day7@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([hand/0]). + +-type hand() :: {hand, list(integer()), integer()}. + +-spec card_counts(hand()) -> list(integer()). +card_counts(Hand) -> + _pipe = erlang:element(2, Hand), + _pipe@1 = gleam@list:sort(_pipe, fun gleam@int:compare/2), + _pipe@2 = gleam@list:chunk(_pipe@1, fun gleam@function:identity/1), + _pipe@3 = gleam@list:map(_pipe@2, fun gleam@list:length/1), + gleam@list:sort(_pipe@3, fun gleam@int:compare/2). + +-spec classify_hand(hand()) -> integer(). +classify_hand(Hand) -> + case {gleam@list:length(gleam@list:unique(erlang:element(2, Hand))), + card_counts(Hand)} of + {1, _} -> + 8; + + {2, [1, 4]} -> + 7; + + {2, [2, 3]} -> + 6; + + {3, [1, 1, 3]} -> + 5; + + {3, [1, 2, 2]} -> + 4; + + {4, _} -> + 3; + + {5, _} -> + 2; + + {_, _} -> + 1 + end. + +-spec card_rank(binary()) -> integer(). +card_rank(Card) -> + case {gleam@int:parse(Card), Card} of + {{ok, N}, _} -> + N; + + {_, <<"A"/utf8>>} -> + 14; + + {_, <<"K"/utf8>>} -> + 13; + + {_, <<"Q"/utf8>>} -> + 12; + + {_, <<"J"/utf8>>} -> + 11; + + {_, <<"T"/utf8>>} -> + 10; + + {_, _} -> + 1 + end. + +-spec parse_hand(binary()) -> hand(). +parse_hand(Str) -> + _assert_subject = gleam@string:split(Str, <<" "/utf8>>), + [Cards, Wager] = case _assert_subject of + [_, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day7/solve"/utf8>>, + function => <<"parse_hand"/utf8>>, + line => 19}) + end, + Cards@1 = begin + _pipe = gleam@string:to_graphemes(Cards), + gleam@list:map(_pipe, fun card_rank/1) + end, + _assert_subject@1 = gleam@int:parse(Wager), + {ok, Wager@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day7/solve"/utf8>>, + function => <<"parse_hand"/utf8>>, + line => 23}) + end, + {hand, Cards@1, Wager@1}. + +-spec compare_top_card(list(integer()), list(integer())) -> gleam@order:order(). +compare_top_card(Cards1, Cards2) -> + gleam@bool:guard( + (Cards1 =:= []) orelse (Cards2 =:= []), + eq, + fun() -> + [C1 | Rest1] = case Cards1 of + [_ | _] -> Cards1; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day7/solve"/utf8>>, + function => <<"compare_top_card"/utf8>>, + line => 70}) + end, + [C2 | Rest2] = case Cards2 of + [_ | _] -> Cards2; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day7/solve"/utf8>>, + function => <<"compare_top_card"/utf8>>, + line => 71}) + end, + case gleam@int:compare(C1, C2) of + eq -> + compare_top_card(Rest1, Rest2); + + Other -> + Other + end + end + ). + +-spec compare_hands(hand(), hand(), fun((hand()) -> integer())) -> gleam@order:order(). +compare_hands(Hand1, Hand2, Using) -> + case gleam@int:compare(Using(Hand1), Using(Hand2)) of + eq -> + compare_top_card(erlang:element(2, Hand1), erlang:element(2, Hand2)); + + Other -> + Other + end. + +-spec part(binary(), fun((hand(), hand()) -> gleam@order:order())) -> binary(). +part(Input, Comparator) -> + _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + _pipe@2 = gleam@list:map(_pipe@1, fun parse_hand/1), + _pipe@3 = gleam@list:sort(_pipe@2, Comparator), + _pipe@4 = gleam@list:index_map( + _pipe@3, + fun(I, H) -> (I + 1) * erlang:element(3, H) end + ), + _pipe@5 = gleam@int:sum(_pipe@4), + gleam@string:inspect(_pipe@5). + +-spec compare_without_wilds(hand(), hand()) -> gleam@order:order(). +compare_without_wilds(Hand1, Hand2) -> + compare_hands(Hand1, Hand2, fun classify_hand/1). + +-spec part1(binary()) -> binary(). +part1(Input) -> + part(Input, fun compare_without_wilds/2). + +-spec find_best_joker_substitution(hand()) -> hand(). +find_best_joker_substitution(Hand) -> + gleam@list:fold( + gleam@list:range(2, 14), + {hand, [], 0}, + fun(Acc, Card) -> + Subbed_cards = (gleam@list:map( + erlang:element(2, Hand), + fun(C) -> case C of + 1 -> + Card; + + Other -> + Other + end end + )), + Subbed_hand = erlang:setelement(2, Hand, Subbed_cards), + case compare_hands(Acc, Subbed_hand, fun classify_hand/1) of + lt -> + Subbed_hand; + + _ -> + Acc + end + end + ). + +-spec compare_hands_considering_jokers(hand(), hand()) -> gleam@order:order(). +compare_hands_considering_jokers(Hand1, Hand2) -> + compare_hands(Hand1, Hand2, fun(Hand) -> _pipe = Hand, + _pipe@1 = find_best_joker_substitution(_pipe), + classify_hand(_pipe@1) end). + +-spec part2(binary()) -> binary(). +part2(Input) -> + part( + gleam@string:replace(Input, <<"J"/utf8>>, <<"*"/utf8>>), + fun compare_hands_considering_jokers/2 + ). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day7/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 128}) + end, + _assert_subject@1 = adglent:get_input(<<"7"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day7/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 129}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache new file mode 100644 index 0000000..9a04fc8 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta new file mode 100644 index 0000000..ec825d2 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl new file mode 100644 index 0000000..2da8521 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl @@ -0,0 +1,58 @@ +-module(day8@day8_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ)"/utf8>>, + 6}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ)"/utf8>>, + 6}], + fun(Example) -> _pipe@1 = day8@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX)"/utf8>>, + 6}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX)"/utf8>>, + 6}], + fun(Example) -> _pipe@1 = day8@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache new file mode 100644 index 0000000..34f5889 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta new file mode 100644 index 0000000..b8df5b2 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl new file mode 100644 index 0000000..6ac3b18 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl @@ -0,0 +1,179 @@ +-module(day8@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). +-export_type([paths/0]). + +-type paths() :: {paths, binary(), binary()}. + +-spec parse(binary()) -> {gleam@iterator:iterator(binary()), + gleam@dict:dict(binary(), paths())}. +parse(Input) -> + _assert_subject = gleam@string:split(Input, <<"\n\n"/utf8>>), + [Directions_str, Maze_str] = case _assert_subject of + [_, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day8/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 20}) + end, + Directions = begin + _pipe = Directions_str, + _pipe@1 = gleam@string:to_graphemes(_pipe), + _pipe@2 = gleam@iterator:from_list(_pipe@1), + gleam@iterator:cycle(_pipe@2) + end, + _assert_subject@1 = gleam@regex:from_string( + <<"(...) = \\((...), (...)\\)"/utf8>> + ), + {ok, Re} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day8/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 28}) + end, + Maze = begin + _pipe@3 = Maze_str, + _pipe@4 = gleam@string:split(_pipe@3, <<"\n"/utf8>>), + _pipe@5 = gleam@list:map( + _pipe@4, + fun(Str) -> + _assert_subject@2 = gleam@regex:scan(Re, Str), + [{match, _, [{some, Name}, {some, Left}, {some, Right}]}] = case _assert_subject@2 of + [{match, _, [{some, _}, {some, _}, {some, _}]}] -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"day8/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 33}) + end, + {Name, {paths, Left, Right}} + end + ), + gleam@dict:from_list(_pipe@5) + end, + {Directions, Maze}. + +-spec to_next_step( + binary(), + binary(), + integer(), + gleam@iterator:iterator(binary()), + gleam@dict:dict(binary(), paths()) +) -> integer(). +to_next_step(Current, Stop_at, Count, Directions, Maze) -> + gleam@bool:guard( + gleam@string:ends_with(Current, Stop_at), + Count, + fun() -> + _assert_subject = gleam@iterator:step(Directions), + {next, Next_direction, Rest_directions} = case _assert_subject of + {next, _, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day8/solve"/utf8>>, + function => <<"to_next_step"/utf8>>, + line => 50}) + end, + _assert_subject@1 = gleam@dict:get(Maze, Current), + {ok, Paths} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day8/solve"/utf8>>, + function => <<"to_next_step"/utf8>>, + line => 51}) + end, + _pipe = case Next_direction of + <<"L"/utf8>> -> + erlang:element(2, Paths); + + <<"R"/utf8>> -> + erlang:element(3, Paths); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"bad direction"/utf8>>, + module => <<"day8/solve"/utf8>>, + function => <<"to_next_step"/utf8>>, + line => 55}) + end, + to_next_step(_pipe, Stop_at, Count + 1, Rest_directions, Maze) + end + ). + +-spec part1(binary()) -> integer(). +part1(Input) -> + {Directions, Maze} = parse(Input), + to_next_step(<<"AAA"/utf8>>, <<"ZZZ"/utf8>>, 0, Directions, Maze). + +-spec part2(binary()) -> integer(). +part2(Input) -> + {Directions, Maze} = parse(Input), + gleam@list:fold( + gleam@dict:keys(Maze), + 1, + fun(Acc, Name) -> case gleam@string:ends_with(Name, <<"A"/utf8>>) of + false -> + Acc; + + true -> + _pipe = to_next_step( + Name, + <<"Z"/utf8>>, + 0, + Directions, + Maze + ), + gleam_community@maths@arithmetics:lcm(_pipe, Acc) + end end + ). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day8/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 79}) + end, + _assert_subject@1 = adglent:get_input(<<"8"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day8/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 80}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache new file mode 100644 index 0000000..dac9de5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta new file mode 100644 index 0000000..8e61830 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl new file mode 100644 index 0000000..da0f25e --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl @@ -0,0 +1,40 @@ +-module(day9@day9_test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1_test/0, part2_test/0]). + +-spec part1_test() -> list(nil). +part1_test() -> + _pipe = [{example, + <<"0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45"/utf8>>, + <<"114"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45"/utf8>>, + <<"114"/utf8>>}], + fun(Example) -> _pipe@1 = day9@solve:part1(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). + +-spec part2_test() -> list(nil). +part2_test() -> + _pipe = [{example, + <<"0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45"/utf8>>, + <<"2"/utf8>>}], + showtime@tests@should:not_equal(_pipe, []), + gleam@list:map( + [{example, + <<"0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45"/utf8>>, + <<"2"/utf8>>}], + fun(Example) -> _pipe@1 = day9@solve:part2(erlang:element(2, Example)), + showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end + ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache new file mode 100644 index 0000000..d5b2b24 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta new file mode 100644 index 0000000..7378356 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl new file mode 100644 index 0000000..8bef41b --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl @@ -0,0 +1,133 @@ +-module(day9@solve). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([part1/1, part2/1, main/0]). + +-spec maybe_backwards(list(QXJ), boolean()) -> list(QXJ). +maybe_backwards(Xs, Backwards) -> + case Backwards of + false -> + gleam@list:reverse(Xs); + + true -> + Xs + end. + +-spec parse(binary(), boolean()) -> list(list(integer())). +parse(Input, Backwards) -> + gleam@list:map( + gleam@string:split(Input, <<"\n"/utf8>>), + fun(Line) -> + gleam@list:map( + maybe_backwards( + gleam@string:split(Line, <<" "/utf8>>), + Backwards + ), + fun(N_str) -> + _assert_subject = gleam@int:parse(N_str), + {ok, N} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day9/solve"/utf8>>, + function => <<"parse"/utf8>>, + line => 10}) + end, + N + end + ) + end + ). + +-spec is_constant(list(integer())) -> boolean(). +is_constant(Ns) -> + case gleam@list:unique(Ns) of + [_] -> + true; + + _ -> + false + end. + +-spec take_derivative(list(integer())) -> list(integer()). +take_derivative(Ns) -> + _pipe = Ns, + _pipe@1 = gleam@list:window_by_2(_pipe), + gleam@list:map( + _pipe@1, + fun(Tup) -> erlang:element(1, Tup) - erlang:element(2, Tup) end + ). + +-spec extrapolate(list(integer())) -> integer(). +extrapolate(Ns) -> + case {is_constant(Ns), Ns} of + {true, [N | _]} -> + N; + + {false, [N@1 | _]} -> + N@1 + extrapolate(take_derivative(Ns)); + + {_, _} -> + erlang:error(#{gleam_error => panic, + message => <<"list empty when it shouldn't be"/utf8>>, + module => <<"day9/solve"/utf8>>, + function => <<"extrapolate"/utf8>>, + line => 38}) + end. + +-spec part(binary(), boolean()) -> binary(). +part(Input, Backwards) -> + _pipe = Input, + _pipe@1 = parse(_pipe, Backwards), + _pipe@2 = gleam@list:fold( + _pipe@1, + 0, + fun(Acc, Ns) -> extrapolate(Ns) + Acc end + ), + gleam@string:inspect(_pipe@2). + +-spec part1(binary()) -> binary(). +part1(Input) -> + part(Input, false). + +-spec part2(binary()) -> binary(). +part2(Input) -> + part(Input, true). + +-spec main() -> nil. +main() -> + _assert_subject = adglent:get_part(), + {ok, Part} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"day9/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 58}) + end, + _assert_subject@1 = adglent:get_input(<<"9"/utf8>>), + {ok, Input} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"day9/solve"/utf8>>, + function => <<"main"/utf8>>, + line => 59}) + end, + case Part of + first -> + _pipe = part1(Input), + _pipe@1 = adglent:inspect(_pipe), + gleam@io:println(_pipe@1); + + second -> + _pipe@2 = part2(Input), + _pipe@3 = adglent:inspect(_pipe@2), + gleam@io:println(_pipe@3) + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache new file mode 100644 index 0000000..c060355 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta new file mode 100644 index 0000000..0e78598 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl new file mode 100644 index 0000000..8e6753e --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl @@ -0,0 +1,64 @@ +-module(utilities@array2d). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([add_posns/2, to_2d_array/1, to_2d_intarray/1, to_list_of_lists/1, parse_grid/1]). +-export_type([posn/0]). + +-type posn() :: {posn, integer(), integer()}. + +-spec add_posns(posn(), posn()) -> posn(). +add_posns(P1, P2) -> + case {P1, P2} of + {{posn, R1, C1}, {posn, R2, C2}} -> + {posn, R1 + R2, C1 + C2} + end. + +-spec to_2d_array(list(list(BDY))) -> gleam@dict:dict(posn(), BDY). +to_2d_array(Xss) -> + _pipe = (gleam@list:index_map( + Xss, + fun(R, Row) -> + gleam@list:index_map(Row, fun(C, Cell) -> {{posn, R, C}, Cell} end) + end + )), + _pipe@1 = gleam@list:flatten(_pipe), + gleam@dict:from_list(_pipe@1). + +-spec to_2d_intarray(list(list(binary()))) -> gleam@dict:dict(posn(), integer()). +to_2d_intarray(Xss) -> + _pipe = (gleam@list:index_map( + Xss, + fun(R, Row) -> + gleam@list:index_map( + Row, + fun(C, Cell) -> + _assert_subject = gleam@int:parse(Cell), + {ok, N} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"utilities/array2d"/utf8>>, + function => <<"to_2d_intarray"/utf8>>, + line => 33}) + end, + {{posn, R, C}, N} + end + ) + end + )), + _pipe@1 = gleam@list:flatten(_pipe), + gleam@dict:from_list(_pipe@1). + +-spec to_list_of_lists(binary()) -> list(list(binary())). +to_list_of_lists(Str) -> + _pipe = Str, + _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), + gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1). + +-spec parse_grid(binary()) -> gleam@dict:dict(posn(), binary()). +parse_grid(Str) -> + _pipe = Str, + _pipe@1 = to_list_of_lists(_pipe), + to_2d_array(_pipe@1). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache new file mode 100644 index 0000000..f8e9862 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta new file mode 100644 index 0000000..9452d09 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl new file mode 100644 index 0000000..2c7b126 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl @@ -0,0 +1,70 @@ +-module(utilities@memo). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([create/1, set/3, get/2, memoize/3]). +-export_type([message/2, cache/2]). + +-type message(BEO, BEP) :: shutdown | + {get, BEO, gleam@erlang@process:subject({ok, BEP} | {error, nil})} | + {set, BEO, BEP}. + +-opaque cache(BEQ, BER) :: {cache, + gleam@erlang@process:subject(message(BEQ, BER))}. + +-spec handle_message(message(BEX, BEY), gleam@dict:dict(BEX, BEY)) -> gleam@otp@actor:next(message(BEX, BEY), gleam@dict:dict(BEX, BEY)). +handle_message(Message, Dict) -> + case Message of + shutdown -> + {stop, normal}; + + {get, Key, Client} -> + gleam@erlang@process:send(Client, gleam@dict:get(Dict, Key)), + {continue, Dict, none}; + + {set, Key@1, Value} -> + {continue, gleam@dict:insert(Dict, Key@1, Value), none} + end. + +-spec create(fun((cache(any(), any())) -> BFN)) -> BFN. +create(Fun) -> + _assert_subject = gleam@otp@actor:start( + gleam@dict:new(), + fun handle_message/2 + ), + {ok, Server} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"utilities/memo"/utf8>>, + function => <<"create"/utf8>>, + line => 36}) + end, + Result = Fun({cache, Server}), + gleam@erlang@process:send(Server, shutdown), + Result. + +-spec set(cache(BFO, BFP), BFO, BFP) -> nil. +set(Cache, Key, Value) -> + gleam@erlang@process:send(erlang:element(2, Cache), {set, Key, Value}). + +-spec get(cache(BFS, BFT), BFS) -> {ok, BFT} | {error, nil}. +get(Cache, Key) -> + gleam@erlang@process:call( + erlang:element(2, Cache), + fun(C) -> {get, Key, C} end, + 1000 + ). + +-spec memoize(cache(BFY, BFZ), BFY, fun(() -> BFZ)) -> BFZ. +memoize(Cache, Key, Fun) -> + Result = case get(Cache, Key) of + {ok, Value} -> + Value; + + {error, nil} -> + Fun() + end, + set(Cache, Key, Result), + Result. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache new file mode 100644 index 0000000..c9c4130 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta new file mode 100644 index 0000000..274b278 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl new file mode 100644 index 0000000..e97eff6 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl @@ -0,0 +1,60 @@ +-module(utilities@prioqueue). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, insert/3, pop/1]). +-export_type([ref/0, p_queue/1, priority_queue/1, out_result/1]). + +-type ref() :: any(). + +-type p_queue(BBO) :: any() | {gleam_phantom, BBO}. + +-opaque priority_queue(BBP) :: {priority_queue, + p_queue({BBP, ref()}), + gleam@dict:dict(BBP, ref())}. + +-type out_result(BBQ) :: empty | {value, BBQ, integer()}. + +-spec new() -> priority_queue(any()). +new() -> + {priority_queue, pqueue2:new(), gleam@dict:new()}. + +-spec insert(priority_queue(BCC), BCC, integer()) -> priority_queue(BCC). +insert(Queue, Value, Priority) -> + Ref = erlang:make_ref(), + Refs = begin + _pipe = erlang:element(3, Queue), + gleam@dict:insert(_pipe, Value, Ref) + end, + {priority_queue, + pqueue2:in({Value, Ref}, Priority, erlang:element(2, Queue)), + Refs}. + +-spec pop(priority_queue(BCF)) -> {ok, {BCF, priority_queue(BCF)}} | + {error, nil}. +pop(Queue) -> + case pqueue2:pout(erlang:element(2, Queue)) of + {{value, {Value, Ref}, _}, Pqueue} -> + _assert_subject = gleam@dict:get(erlang:element(3, Queue), Value), + {ok, Recently_enqueued_ref} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"utilities/prioqueue"/utf8>>, + function => <<"pop"/utf8>>, + line => 52}) + end, + case Recently_enqueued_ref =:= Ref of + true -> + {ok, + {Value, + {priority_queue, Pqueue, erlang:element(3, Queue)}}}; + + false -> + pop({priority_queue, Pqueue, erlang:element(3, Queue)}) + end; + + {empty, _} -> + {error, nil} + end. diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app new file mode 100644 index 0000000..1d9ebe0 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app @@ -0,0 +1,15 @@ +{application, aoc2023, [ + {vsn, "0.1.0"}, + {applications, [adglent, + gleam_community_maths, + gleam_erlang, + gleam_otp, + gleam_stdlib, + gleeunit, + pqueue, + simplifile]}, + {description, ""}, + {modules, [day20@day20_test, + day20@solve]}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam new file mode 100644 index 0000000..5ef8b6b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam new file mode 100644 index 0000000..c4d93c5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam new file mode 100644 index 0000000..a77846a Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam new file mode 100644 index 0000000..30b4854 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam new file mode 100644 index 0000000..d9c6ff3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam new file mode 100644 index 0000000..dac7343 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam new file mode 100644 index 0000000..ed49a37 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam new file mode 100644 index 0000000..513d1a9 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam new file mode 100644 index 0000000..21f1e8b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam new file mode 100644 index 0000000..67e62de Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam new file mode 100644 index 0000000..a9eb3a5 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam new file mode 100644 index 0000000..5a6c67e Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam new file mode 100644 index 0000000..8db7efd Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam new file mode 100644 index 0000000..f8e4a5f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam new file mode 100644 index 0000000..2bf8472 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam new file mode 100644 index 0000000..091829f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam new file mode 100644 index 0000000..78a3f8c Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam new file mode 100644 index 0000000..5624a2f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam new file mode 100644 index 0000000..ca194b3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam new file mode 100644 index 0000000..2f9a32a Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam new file mode 100644 index 0000000..326ca15 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam new file mode 100644 index 0000000..f5cc6c3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam new file mode 100644 index 0000000..7ea70a3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam new file mode 100644 index 0000000..c01f17e Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam new file mode 100644 index 0000000..d2decc9 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam new file mode 100644 index 0000000..5bb689f Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam new file mode 100644 index 0000000..2a7a3b3 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam new file mode 100644 index 0000000..f10ea16 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam new file mode 100644 index 0000000..19a27da Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam new file mode 100644 index 0000000..a082170 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam new file mode 100644 index 0000000..803c647 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam new file mode 100644 index 0000000..35f5046 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam new file mode 100644 index 0000000..3278158 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam new file mode 100644 index 0000000..b03baf2 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam new file mode 100644 index 0000000..67980d7 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam new file mode 100644 index 0000000..5d8c4d4 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam new file mode 100644 index 0000000..8d47586 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam new file mode 100644 index 0000000..ae993b1 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam new file mode 100644 index 0000000..54ef711 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam new file mode 100644 index 0000000..e8adca4 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam new file mode 100644 index 0000000..c208dac Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam new file mode 100644 index 0000000..fac9c16 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam new file mode 100644 index 0000000..0f48b99 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam new file mode 100644 index 0000000..d30c73d Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam new file mode 100644 index 0000000..3bba319 Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam new file mode 100644 index 0000000..8cd709b Binary files /dev/null and b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam differ diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl new file mode 100644 index 0000000..7babf61 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl @@ -0,0 +1 @@ +-record(game, {red :: integer(), blue :: integer(), green :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl new file mode 100644 index 0000000..5c3086c --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl @@ -0,0 +1,4 @@ +-record(almanac, { + seeds :: list(integer()), + mappers :: list(list(day5@solve:mapping_range())) +}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl new file mode 100644 index 0000000..999313f --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl @@ -0,0 +1 @@ +-record(m_range, {start :: integer(), 'end' :: integer(), offset :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl new file mode 100644 index 0000000..56c67cd --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl @@ -0,0 +1 @@ +-record(s_range, {start :: integer(), 'end' :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl new file mode 100644 index 0000000..94da3d5 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl @@ -0,0 +1 @@ +-record(posn, {r :: integer(), c :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl new file mode 100644 index 0000000..941b746 --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl @@ -0,0 +1,3 @@ +-record(cache, { + server :: gleam@erlang@process:subject(utilities@memo:message(any(), any())) +}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl new file mode 100644 index 0000000..0e12dca --- /dev/null +++ b/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl @@ -0,0 +1,4 @@ +-record(priority_queue, { + queue :: utilities@prioqueue:p_queue({any(), utilities@prioqueue:ref()}), + refs :: gleam@dict:dict(any(), utilities@prioqueue:ref()) +}). diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache new file mode 100644 index 0000000..5e9f51b Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta new file mode 100644 index 0000000..3a247a0 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl new file mode 100644 index 0000000..f28094b --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl @@ -0,0 +1,538 @@ +-module(gap). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_styled/1, compare_strings_with_algorithm/3, compare_lists_with_algorithm/3, myers/2, compare_lists/2, compare_strings/2, lcs/2]). +-export_type([score/1]). + +-type score(GBX) :: {score, integer(), gleam@option:option(GBX)}. + +-spec to_styled(gap@comparison:comparison(any())) -> gap@styled_comparison:styled_comparison(). +to_styled(Comparison) -> + _pipe = Comparison, + _pipe@1 = gap@styling:from_comparison(_pipe), + _pipe@2 = gap@styling:highlight( + _pipe@1, + fun gap@styling:first_highlight_default/1, + fun gap@styling:second_highlight_default/1, + fun gap@styling:no_highlight/1 + ), + gap@styling:to_styled_comparison(_pipe@2). + +-spec compare_strings_with_algorithm( + binary(), + binary(), + fun((list(binary()), list(binary())) -> gap@comparison:comparison(binary())) +) -> gap@comparison:comparison(binary()). +compare_strings_with_algorithm(First, Second, Algorithm) -> + Comparison = Algorithm( + gleam@string:to_graphemes(First), + gleam@string:to_graphemes(Second) + ), + case Comparison of + {list_comparison, First@1, Second@1} -> + {string_comparison, First@1, Second@1}; + + {string_comparison, First@2, Second@2} -> + {string_comparison, First@2, Second@2} + end. + +-spec compare_lists_with_algorithm( + list(GCM), + list(GCM), + fun((list(GCM), list(GCM)) -> gap@comparison:comparison(GCM)) +) -> gap@comparison:comparison(GCM). +compare_lists_with_algorithm(First_sequence, Second_sequence, Algorithm) -> + Algorithm(First_sequence, Second_sequence). + +-spec myers(list(GCR), list(GCR)) -> gap@comparison:comparison(GCR). +myers(First_sequence, Second_sequence) -> + Edits = gap@myers:difference(First_sequence, Second_sequence), + _pipe = Edits, + _pipe@1 = gleam@list:reverse(_pipe), + gleam@list:fold( + _pipe@1, + {list_comparison, [], []}, + fun(Comparison, Edit) -> case Comparison of + {list_comparison, First, Second} -> + case Edit of + {eq, Segment} -> + {list_comparison, + [{match, Segment} | First], + [{match, Segment} | Second]}; + + {ins, Segment@1} -> + {list_comparison, + First, + [{no_match, Segment@1} | Second]}; + + {del, Segment@2} -> + {list_comparison, + [{no_match, Segment@2} | First], + Second} + end; + + {string_comparison, _, _} -> + Comparison + end end + ). + +-spec compare_lists(list(GCI), list(GCI)) -> gap@comparison:comparison(GCI). +compare_lists(First_sequence, Second_sequence) -> + myers(First_sequence, Second_sequence). + +-spec compare_strings(binary(), binary()) -> gap@comparison:comparison(binary()). +compare_strings(First, Second) -> + Comparison = compare_lists( + gleam@string:to_graphemes(First), + gleam@string:to_graphemes(Second) + ), + case Comparison of + {list_comparison, First@1, Second@1} -> + {string_comparison, First@1, Second@1}; + + {string_comparison, First@2, Second@2} -> + {string_comparison, First@2, Second@2} + end. + +-spec prepend_and_merge( + list(gap@comparison:match(list(GCZ))), + gap@comparison:match(list(GCZ)) +) -> list(gap@comparison:match(list(GCZ))). +prepend_and_merge(Matches, Match) -> + case {Matches, Match} of + {[], _} -> + [Match]; + + {[{match, First_match} | Rest], {match, _}} -> + [{match, + begin + _pipe = erlang:element(2, Match), + gleam@list:append(_pipe, First_match) + end} | + Rest]; + + {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> + [{no_match, + begin + _pipe@1 = erlang:element(2, Match), + gleam@list:append(_pipe@1, First_match@1) + end} | + Rest@1]; + + {Matches@1, Match@1} -> + [Match@1 | Matches@1] + end. + +-spec append_and_merge( + list(gap@comparison:match(list(GDI))), + gap@comparison:match(list(GDI)) +) -> list(gap@comparison:match(list(GDI))). +append_and_merge(Matches, Match) -> + _pipe@3 = case {begin + _pipe = Matches, + gleam@list:reverse(_pipe) + end, + Match} of + {[], _} -> + [Match]; + + {[{match, First_match} | Rest], {match, _}} -> + [{match, + begin + _pipe@1 = First_match, + gleam@list:append(_pipe@1, erlang:element(2, Match)) + end} | + Rest]; + + {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> + [{no_match, + begin + _pipe@2 = First_match@1, + gleam@list:append(_pipe@2, erlang:element(2, Match)) + end} | + Rest@1]; + + {Matches@1, Match@1} -> + [Match@1 | Matches@1] + end, + gleam@list:reverse(_pipe@3). + +-spec collect_matches( + gleam@dict:dict(GHJ, any()), + list(GDS), + fun((GHJ) -> integer()) +) -> list(gap@comparison:match(list(GDS))). +collect_matches(Tracking, Str, Extract_fun) -> + Matching_indexes = begin + _pipe = gleam@map:keys(Tracking), + _pipe@1 = gleam@list:map(_pipe, Extract_fun), + gleam@set:from_list(_pipe@1) + end, + Matches = begin + _pipe@2 = Str, + gleam@list:index_map( + _pipe@2, + fun(Index, Item) -> + case gleam@set:contains(Matching_indexes, Index) of + true -> + {match, Item}; + + false -> + {no_match, Item} + end + end + ) + end, + _pipe@3 = Matches, + _pipe@4 = gleam@list:chunk(_pipe@3, fun(Match) -> case Match of + {match, _} -> + true; + + {no_match, _} -> + false + end end), + gleam@list:map(_pipe@4, fun(Match_list) -> case Match_list of + [{match, _} | _] -> + {match, + gleam@list:filter_map( + Match_list, + fun(Match@1) -> case Match@1 of + {match, Item@1} -> + {ok, Item@1}; + + {no_match, _} -> + {error, nil} + end end + )}; + + [{no_match, _} | _] -> + {no_match, + gleam@list:filter_map( + Match_list, + fun(Match@2) -> case Match@2 of + {no_match, Item@2} -> + {ok, Item@2}; + + {match, _} -> + {error, nil} + end end + )} + end end). + +-spec back_track( + gleam@dict:dict({integer(), integer()}, score(GDW)), + integer(), + integer(), + list({{integer(), integer()}, GDW}) +) -> list({{integer(), integer()}, GDW}). +back_track(Diff_map, First_index, Second_index, Stack) -> + case (First_index =:= 0) orelse (Second_index =:= 0) of + true -> + This_score = begin + _pipe = gleam@map:get(Diff_map, {First_index, Second_index}), + gleam@result:unwrap(_pipe, {score, 0, none}) + end, + case This_score of + {score, _, {some, Item}} -> + [{{First_index, Second_index}, Item} | Stack]; + + _ -> + case {First_index, Second_index} of + {0, A} when A > 0 -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + {A@1, 0} when A@1 > 0 -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + {0, 0} -> + Stack; + + {_, _} -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ) + end + end; + + false -> + This_score@1 = begin + _pipe@1 = gleam@map:get(Diff_map, {First_index, Second_index}), + gleam@result:unwrap(_pipe@1, {score, 0, none}) + end, + case This_score@1 of + {score, _, {some, Item@1}} -> + back_track( + Diff_map, + First_index - 1, + Second_index - 1, + [{{First_index, Second_index}, Item@1} | Stack] + ); + + {score, _, none} -> + Up = begin + _pipe@2 = gleam@map:get( + Diff_map, + {First_index, Second_index - 1} + ), + gleam@result:unwrap(_pipe@2, {score, 0, none}) + end, + Back = begin + _pipe@3 = gleam@map:get( + Diff_map, + {First_index - 1, Second_index} + ), + gleam@result:unwrap(_pipe@3, {score, 0, none}) + end, + case gleam@int:compare( + erlang:element(2, Up), + erlang:element(2, Back) + ) of + gt -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + lt -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + eq -> + case {First_index, Second_index} of + {0, A@2} when A@2 > 0 -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + {A@3, 0} when A@3 > 0 -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + {0, 0} -> + Stack; + + {_, _} -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ) + end + end + end + end. + +-spec build_diff_map( + GEC, + integer(), + GEC, + integer(), + gleam@dict:dict({integer(), integer()}, score(GEC)) +) -> gleam@dict:dict({integer(), integer()}, score(GEC)). +build_diff_map(First_item, First_index, Second_item, Second_index, Diff_map) -> + Prev_score = begin + _pipe = gleam@map:get(Diff_map, {First_index - 1, Second_index - 1}), + gleam@result:unwrap(_pipe, {score, 0, none}) + end, + Derived_score_up = begin + _pipe@1 = Diff_map, + _pipe@2 = gleam@map:get(_pipe@1, {First_index, Second_index - 1}), + gleam@result:unwrap(_pipe@2, {score, 0, none}) + end, + Derived_score_back = begin + _pipe@3 = Diff_map, + _pipe@4 = gleam@map:get(_pipe@3, {First_index - 1, Second_index}), + gleam@result:unwrap(_pipe@4, {score, 0, none}) + end, + Derived_score = gleam@int:max( + erlang:element(2, Derived_score_up), + erlang:element(2, Derived_score_back) + ), + This_score = case First_item =:= Second_item of + true -> + {score, erlang:element(2, Prev_score) + 1, {some, First_item}}; + + false -> + {score, Derived_score, none} + end, + _pipe@5 = Diff_map, + gleam@map:insert(_pipe@5, {First_index, Second_index}, This_score). + +-spec lcs(list(GCV), list(GCV)) -> gap@comparison:comparison(GCV). +lcs(First_sequence, Second_sequence) -> + Leading_matches = begin + _pipe = gleam@list:zip(First_sequence, Second_sequence), + _pipe@1 = gleam@list:take_while( + _pipe, + fun(Pair) -> erlang:element(1, Pair) =:= erlang:element(2, Pair) end + ), + gleam@list:map(_pipe@1, fun gleam@pair:first/1) + end, + Num_leading_matches = gleam@list:length(Leading_matches), + Trailing_matches = begin + _pipe@2 = gleam@list:zip( + gleam@list:reverse(First_sequence), + gleam@list:reverse(Second_sequence) + ), + _pipe@3 = gleam@list:take_while( + _pipe@2, + fun(Pair@1) -> + erlang:element(1, Pair@1) =:= erlang:element(2, Pair@1) + end + ), + _pipe@4 = gleam@list:map(_pipe@3, fun gleam@pair:first/1), + gleam@list:reverse(_pipe@4) + end, + Num_trailing_matches = gleam@list:length(Trailing_matches), + First_sequence_to_diff = begin + _pipe@5 = First_sequence, + _pipe@6 = gleam@list:drop(_pipe@5, Num_leading_matches), + gleam@list:take( + _pipe@6, + (gleam@list:length(First_sequence) - Num_leading_matches) - Num_trailing_matches + ) + end, + Second_sequence_to_diff = begin + _pipe@7 = Second_sequence, + _pipe@8 = gleam@list:drop(_pipe@7, Num_leading_matches), + gleam@list:take( + _pipe@8, + (gleam@list:length(Second_sequence) - Num_leading_matches) - Num_trailing_matches + ) + end, + Diff_map@2 = begin + _pipe@9 = Second_sequence_to_diff, + gleam@list:index_fold( + _pipe@9, + gleam@map:new(), + fun(Diff_map, Item_second, Index_second) -> + _pipe@10 = First_sequence_to_diff, + gleam@list:index_fold( + _pipe@10, + Diff_map, + fun(Diff_map@1, Item_first, Index_first) -> + build_diff_map( + Item_first, + Index_first, + Item_second, + Index_second, + Diff_map@1 + ) + end + ) + end + ) + end, + {First_segments@1, Second_segments@1} = case {First_sequence_to_diff, + Second_sequence_to_diff} of + {[], []} -> + {[], []}; + + {First_matching, []} -> + {[{no_match, First_matching}], []}; + + {[], Second_matching} -> + {[], [{no_match, Second_matching}]}; + + {First_sequence_to_diff@1, Second_sequence_to_diff@1} -> + Tracking = begin + _pipe@11 = back_track( + Diff_map@2, + gleam@list:length(First_sequence_to_diff@1) - 1, + gleam@list:length(Second_sequence_to_diff@1) - 1, + [] + ), + gleam@map:from_list(_pipe@11) + end, + First_segments = collect_matches( + Tracking, + First_sequence_to_diff@1, + fun(Key) -> + {First, _} = Key, + First + end + ), + Second_segments = collect_matches( + Tracking, + Second_sequence_to_diff@1, + fun(Key@1) -> + {_, Second} = Key@1, + Second + end + ), + {First_segments, Second_segments} + end, + {First_segments_with_leading_trailing, + Second_segments_with_leading_trailing} = case {Leading_matches, + Trailing_matches} of + {[], []} -> + {First_segments@1, Second_segments@1}; + + {[], Trailing_matches@1} -> + {begin + _pipe@12 = First_segments@1, + append_and_merge(_pipe@12, {match, Trailing_matches@1}) + end, + begin + _pipe@13 = Second_segments@1, + append_and_merge(_pipe@13, {match, Trailing_matches@1}) + end}; + + {Leading_matches@1, []} -> + {begin + _pipe@14 = First_segments@1, + prepend_and_merge(_pipe@14, {match, Leading_matches@1}) + end, + begin + _pipe@15 = Second_segments@1, + prepend_and_merge(_pipe@15, {match, Leading_matches@1}) + end}; + + {Leading_matches@2, Trailing_matches@2} -> + {begin + _pipe@16 = First_segments@1, + _pipe@17 = prepend_and_merge( + _pipe@16, + {match, Leading_matches@2} + ), + append_and_merge(_pipe@17, {match, Trailing_matches@2}) + end, + begin + _pipe@18 = Second_segments@1, + _pipe@19 = prepend_and_merge( + _pipe@18, + {match, Leading_matches@2} + ), + append_and_merge(_pipe@19, {match, Trailing_matches@2}) + end} + end, + {list_comparison, + First_segments_with_leading_trailing, + Second_segments_with_leading_trailing}. diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache new file mode 100644 index 0000000..f754345 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta new file mode 100644 index 0000000..e3f3599 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl new file mode 100644 index 0000000..76c0ff2 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl @@ -0,0 +1,15 @@ +-module(gap@comparison). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([comparison/1, match/1]). + +-type comparison(FSE) :: {list_comparison, + list(match(list(FSE))), + list(match(list(FSE)))} | + {string_comparison, + list(match(list(binary()))), + list(match(list(binary())))}. + +-type match(FSF) :: {match, FSF} | {no_match, FSF}. + + diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache new file mode 100644 index 0000000..8935f36 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta new file mode 100644 index 0000000..6d51dd1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl new file mode 100644 index 0000000..ea26472 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl @@ -0,0 +1,156 @@ +-module(gap@myers). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([difference/2]). +-export_type([edit/1, path/1, status/1]). + +-type edit(FWG) :: {eq, list(FWG)} | {del, list(FWG)} | {ins, list(FWG)}. + +-type path(FWH) :: {path, + integer(), + integer(), + list(FWH), + list(FWH), + list(edit(FWH))}. + +-type status(FWI) :: {done, list(edit(FWI))} | + {next, list(path(FWI))} | + {cont, path(FWI)}. + +-spec compact_reverse(list(edit(FWS)), list(edit(FWS))) -> list(edit(FWS)). +compact_reverse(Edits, Acc) -> + case {Edits, Acc} of + {[], Acc@1} -> + Acc@1; + + {[{eq, Elem} | Rest], [{eq, Result} | Acc_rest]} -> + compact_reverse( + Rest, + [{eq, gleam@list:flatten([Elem, Result])} | Acc_rest] + ); + + {[{del, Elem@1} | Rest@1], [{del, Result@1} | Acc_rest@1]} -> + compact_reverse( + Rest@1, + [{del, gleam@list:flatten([Elem@1, Result@1])} | Acc_rest@1] + ); + + {[{ins, Elem@2} | Rest@2], [{ins, Result@2} | Acc_rest@2]} -> + compact_reverse( + Rest@2, + [{ins, gleam@list:flatten([Elem@2, Result@2])} | Acc_rest@2] + ); + + {[{eq, Elem@3} | Rest@3], Acc@2} -> + compact_reverse(Rest@3, [{eq, Elem@3} | Acc@2]); + + {[{del, Elem@4} | Rest@4], Acc@3} -> + compact_reverse(Rest@4, [{del, Elem@4} | Acc@3]); + + {[{ins, Elem@5} | Rest@5], Acc@4} -> + compact_reverse(Rest@5, [{ins, Elem@5} | Acc@4]) + end. + +-spec move_right(path(FXL)) -> path(FXL). +move_right(Path) -> + case Path of + {path, X, Y, List1, [Elem | Rest], Edits} -> + {path, X + 1, Y, List1, Rest, [{ins, [Elem]} | Edits]}; + + {path, X@1, Y@1, List1@1, [], Edits@1} -> + {path, X@1 + 1, Y@1, List1@1, [], Edits@1} + end. + +-spec move_down(path(FXO)) -> path(FXO). +move_down(Path) -> + case Path of + {path, X, Y, [Elem | Rest], List2, Edits} -> + {path, X, Y + 1, Rest, List2, [{del, [Elem]} | Edits]}; + + {path, X@1, Y@1, [], List2@1, Edits@1} -> + {path, X@1, Y@1 + 1, [], List2@1, Edits@1} + end. + +-spec proceed_path(integer(), integer(), list(path(FXF))) -> {path(FXF), + list(path(FXF))}. +proceed_path(Diag, Limit, Paths) -> + Neg_limit = - Limit, + case {Diag, Limit, Paths} of + {0, 0, [Path]} -> + {Path, []}; + + {Diag@1, _, [Path@1 | _] = Paths@1} when Diag@1 =:= Neg_limit -> + {move_down(Path@1), Paths@1}; + + {Diag@2, Limit@1, [Path@2 | _] = Paths@2} when Diag@2 =:= Limit@1 -> + {move_right(Path@2), Paths@2}; + + {_, _, [Path1, Path2 | Rest]} -> + case erlang:element(3, Path1) > erlang:element(3, Path2) of + true -> + {move_right(Path1), [Path2 | Rest]}; + + false -> + {move_down(Path2), [Path2 | Rest]} + end + end. + +-spec follow_snake(path(FXR)) -> status(FXR). +follow_snake(Path) -> + case Path of + {path, X, Y, [Elem1 | Rest1], [Elem2 | Rest2], Edits} when Elem1 =:= Elem2 -> + follow_snake( + {path, X + 1, Y + 1, Rest1, Rest2, [{eq, [Elem1]} | Edits]} + ); + + {path, _, _, [], [], Edits@1} -> + {done, Edits@1}; + + _ -> + {cont, Path} + end. + +-spec each_diagonal(integer(), integer(), list(path(FWZ)), list(path(FWZ))) -> status(FWZ). +each_diagonal(Diag, Limit, Paths, Next_paths) -> + case Diag > Limit of + true -> + {next, gleam@list:reverse(Next_paths)}; + + false -> + {Path, Rest} = proceed_path(Diag, Limit, Paths), + case follow_snake(Path) of + {cont, Path@1} -> + each_diagonal(Diag + 2, Limit, Rest, [Path@1 | Next_paths]); + + Other -> + Other + end + end. + +-spec find_script(integer(), integer(), list(path(FWO))) -> list(edit(FWO)). +find_script(Envelope, Max, Paths) -> + case Envelope > Max of + true -> + []; + + false -> + case each_diagonal(- Envelope, Envelope, Paths, []) of + {done, Edits} -> + compact_reverse(Edits, []); + + {next, Paths@1} -> + find_script(Envelope + 1, Max, Paths@1); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"Didn't expect a Cont here"/utf8>>, + module => <<"gap/myers"/utf8>>, + function => <<"find_script"/utf8>>, + line => 35}) + end + end. + +-spec difference(list(FWJ), list(FWJ)) -> list(edit(FWJ)). +difference(List1, List2) -> + Path = {path, 0, 0, List1, List2, []}, + find_script(0, gleam@list:length(List1) + gleam@list:length(List2), [Path]). diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache new file mode 100644 index 0000000..d7dfd29 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta new file mode 100644 index 0000000..dc9ffd0 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl new file mode 100644 index 0000000..14cc390 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl @@ -0,0 +1,8 @@ +-module(gap@styled_comparison). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([styled_comparison/0]). + +-type styled_comparison() :: {styled_comparison, binary(), binary()}. + + diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache new file mode 100644 index 0000000..7ff8b7f Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta new file mode 100644 index 0000000..f580983 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl new file mode 100644 index 0000000..4c14974 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl @@ -0,0 +1,202 @@ +-module(gap@styling). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_comparison/1, highlight/4, serialize/2, first_highlight_default/1, second_highlight_default/1, no_highlight/1, mk_generic_serializer/2, to_styled_comparison/1]). +-export_type([part/1, highlighters/0, styling/1]). + +-type part(FSP) :: {part, binary(), list(FSP), fun((binary()) -> binary())} | + {all, binary()}. + +-type highlighters() :: {highlighters, + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary())}. + +-opaque styling(FSQ) :: {styling, + gap@comparison:comparison(FSQ), + gleam@option:option(fun((part(FSQ)) -> binary())), + gleam@option:option(highlighters())}. + +-spec from_comparison(gap@comparison:comparison(FST)) -> styling(FST). +from_comparison(Comparison) -> + {styling, Comparison, none, none}. + +-spec highlight( + styling(FSW), + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()) +) -> styling(FSW). +highlight(Styling, First, Second, Matching) -> + erlang:setelement( + 4, + Styling, + {some, {highlighters, First, Second, Matching}} + ). + +-spec serialize(styling(FSZ), fun((part(FSZ)) -> binary())) -> styling(FSZ). +serialize(Styling, Serializer) -> + erlang:setelement(3, Styling, {some, Serializer}). + +-spec first_highlight_default(binary()) -> binary(). +first_highlight_default(String) -> + case String of + <<" "/utf8>> -> + _pipe = String, + _pipe@1 = gleam_community@ansi:underline(_pipe), + _pipe@2 = gleam_community@ansi:bold(_pipe@1), + gleam_community@ansi:green(_pipe@2); + + _ -> + _pipe@3 = String, + _pipe@4 = gleam_community@ansi:green(_pipe@3), + gleam_community@ansi:bold(_pipe@4) + end. + +-spec second_highlight_default(binary()) -> binary(). +second_highlight_default(String) -> + case String of + <<" "/utf8>> -> + _pipe = String, + _pipe@1 = gleam_community@ansi:underline(_pipe), + _pipe@2 = gleam_community@ansi:bold(_pipe@1), + gleam_community@ansi:red(_pipe@2); + + _ -> + _pipe@3 = String, + _pipe@4 = gleam_community@ansi:red(_pipe@3), + gleam_community@ansi:bold(_pipe@4) + end. + +-spec no_highlight(binary()) -> binary(). +no_highlight(String) -> + String. + +-spec string_serializer(part(binary())) -> binary(). +string_serializer(Part) -> + case Part of + {part, Acc, Sequence, Highlight} -> + <>) + end)/binary>>; + + {all, String} -> + String + end. + +-spec mk_generic_serializer(binary(), fun((binary()) -> binary())) -> fun((part(any())) -> binary()). +mk_generic_serializer(Separator, Around) -> + fun(Part) -> case Part of + {part, Acc, Sequence, Highlight} -> + Segment_separator = case Acc of + <<""/utf8>> -> + <<""/utf8>>; + + _ -> + Separator + end, + <<<>/binary, + (begin + _pipe = Sequence, + _pipe@1 = gleam@list:map( + _pipe, + fun gleam@string:inspect/1 + ), + _pipe@2 = gleam@list:map(_pipe@1, Highlight), + gleam@string:join(_pipe@2, Separator) + end)/binary>>; + + {all, String} -> + Around(String) + end end. + +-spec generic_serializer(part(any())) -> binary(). +generic_serializer(Part) -> + (mk_generic_serializer( + <<", "/utf8>>, + fun(All) -> <<<<"["/utf8, All/binary>>/binary, "]"/utf8>> end + ))(Part). + +-spec to_strings( + list(gap@comparison:match(list(FTJ))), + list(gap@comparison:match(list(FTJ))), + fun((part(FTJ)) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()) +) -> gap@styled_comparison:styled_comparison(). +to_strings( + First, + Second, + Serializer, + First_highlight, + Second_highlight, + No_highlight +) -> + First_styled = begin + _pipe = First, + gleam@list:fold(_pipe, <<""/utf8>>, fun(Str, Match) -> case Match of + {match, Item} -> + Serializer({part, Str, Item, No_highlight}); + + {no_match, Item@1} -> + Serializer({part, Str, Item@1, First_highlight}) + end end) + end, + Second_styled = begin + _pipe@1 = Second, + gleam@list:fold( + _pipe@1, + <<""/utf8>>, + fun(Str@1, Match@1) -> case Match@1 of + {match, Item@2} -> + Serializer({part, Str@1, Item@2, No_highlight}); + + {no_match, Item@3} -> + Serializer({part, Str@1, Item@3, Second_highlight}) + end end + ) + end, + {styled_comparison, + Serializer({all, First_styled}), + Serializer({all, Second_styled})}. + +-spec to_styled_comparison(styling(any())) -> gap@styled_comparison:styled_comparison(). +to_styled_comparison(Styling) -> + Highlight = begin + _pipe = erlang:element(4, Styling), + gleam@option:unwrap( + _pipe, + {highlighters, + fun first_highlight_default/1, + fun second_highlight_default/1, + fun no_highlight/1} + ) + end, + case erlang:element(2, Styling) of + {string_comparison, First, Second} -> + to_strings( + First, + Second, + fun string_serializer/1, + erlang:element(2, Highlight), + erlang:element(3, Highlight), + erlang:element(4, Highlight) + ); + + {list_comparison, First@1, Second@1} -> + to_strings( + First@1, + Second@1, + gleam@option:unwrap( + erlang:element(3, Styling), + fun generic_serializer/1 + ), + erlang:element(2, Highlight), + erlang:element(3, Highlight), + erlang:element(4, Highlight) + ) + end. diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs new file mode 100644 index 0000000..235c80b --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs @@ -0,0 +1,431 @@ +import { + Error, + List, + Ok, + inspect, + toList, + makeError, + isEqual, +} from "./gleam.mjs"; +import * as $option from "../gleam_stdlib/gleam/option.mjs"; + +const HASHCODE_CACHE = new WeakMap(); +const Nil = undefined; + +class MutableMap { + static #hashcode_cache = new WeakMap(); + + static hash(value) { + let existing = this.#hashcode_cache.get(value); + if (existing) { + return existing; + } else if (value instanceof Object) { + let hashcode = inspect(value); + HASHCODE_CACHE.set(value, hashcode); + return hashcode; + } else { + return value.toString(); + } + } + + constructor() { + this.entries = new globalThis.Map(); + } + + get size() { + return this.entries.size; + } + + inspect() { + let entries = [...this.entries.values()] + .map((pair) => inspect(pair)) + .join(", "); + return `map.from_list([${entries}])`; + } + + toList() { + return List.fromArray([...this.entries.values()]); + } + + insert(k, v) { + this.entries.set(MutableMap.hash(k), [k, v]); + return this; + } + + delete(k) { + this.entries.delete(MutableMap.hash(k)); + return this; + } + + get(key) { + let code = MutableMap.hash(key); + if (this.entries.has(code)) { + return new Ok(this.entries.get(code)[1]); + } else { + return new Error(Nil); + } + } +} + +export function new_mutable_map() { + return new MutableMap(); +} + +export function mutable_map_size(map) { + return map.size; +} + +export function mutable_map_to_list(map) { + return map.toList(); +} + +export function mutable_map_remove(k, map) { + return map.delete(k); +} + +export function mutable_map_get(map, key) { + return map.get(key); +} + +export function mutable_map_insert(key, value, map) { + return map.insert(key, value); +} + +// From map.mjs + +export function size(map) { + return mutable_map_size(map); +} + +export function to_list(map) { + return mutable_map_to_list(map); +} + +export function new$() { + return new_mutable_map(); +} + +export function get(from, get) { + return mutable_map_get(from, get); +} + +function do_has_key(key, map) { + return !isEqual(get(map, key), new Error(undefined)); +} + +export function has_key(map, key) { + return do_has_key(key, map); +} + +export function insert(map, key, value) { + return mutable_map_insert(key, value, map); +} + +function insert_pair(map, pair) { + return insert(map, pair[0], pair[1]); +} + +export function update(map, key, fun) { + let _pipe = map; + let _pipe$1 = get(_pipe, key); + let _pipe$2 = $option.from_result(_pipe$1); + let _pipe$3 = fun(_pipe$2); + return ((_capture) => { + return insert(map, key, _capture); + })(_pipe$3); +} + +export function delete$(map, key) { + return mutable_map_remove(key, map); +} + +function fold_list_of_pair(loop$list, loop$initial) { + while (true) { + let list = loop$list; + let initial = loop$initial; + if (list.hasLength(0)) { + return initial; + } else if (list.atLeastLength(1)) { + let x = list.head; + let rest = list.tail; + loop$list = rest; + loop$initial = insert(initial, x[0], x[1]); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 98, + "fold_list_of_pair", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_from_list(list) { + return fold_list_of_pair(list, new$()); +} + +export function from_list(list) { + return do_from_list(list); +} + +function do_fold(loop$list, loop$initial, loop$fun) { + while (true) { + let list = loop$list; + let initial = loop$initial; + let fun = loop$fun; + if (list.hasLength(0)) { + return initial; + } else if (list.atLeastLength(1)) { + let k = list.head[0]; + let v = list.head[1]; + let tail = list.tail; + loop$list = tail; + loop$initial = fun(initial, k, v); + loop$fun = fun; + } else { + throw makeError( + "case_no_match", + "gleam/map", + 558, + "do_fold", + "No case clause matched", + { values: [list] } + ); + } + } +} + +export function fold(map, initial, fun) { + let _pipe = map; + let _pipe$1 = to_list(_pipe); + return do_fold(_pipe$1, initial, fun); +} + +function do_map_values(f, map) { + let f$1 = (map, k, v) => { + return insert(map, k, f(k, v)); + }; + let _pipe = map; + return fold(_pipe, new$(), f$1); +} + +export function map_values(map, fun) { + return do_map_values(fun, map); +} + +function do_filter(f, map) { + let insert$1 = (map, k, v) => { + let $ = f(k, v); + if ($) { + return insert(map, k, v); + } else { + return map; + } + }; + let _pipe = map; + return fold(_pipe, new$(), insert$1); +} + +export function filter(map, property) { + return do_filter(property, map); +} + +function do_keys_acc(loop$list, loop$acc) { + while (true) { + let list = loop$list; + let acc = loop$acc; + if (list.hasLength(0)) { + return reverse_and_concat(acc, toList([])); + } else if (list.atLeastLength(1)) { + let x = list.head; + let xs = list.tail; + loop$list = xs; + loop$acc = toList([x[0]], acc); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 276, + "do_keys_acc", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_keys(map) { + let list_of_pairs = (() => { + let _pipe = map; + return to_list(_pipe); + })(); + return do_keys_acc(list_of_pairs, toList([])); +} + +export function keys(map) { + return do_keys(map); +} + +function reverse_and_concat(loop$remaining, loop$accumulator) { + while (true) { + let remaining = loop$remaining; + let accumulator = loop$accumulator; + if (remaining.hasLength(0)) { + return accumulator; + } else if (remaining.atLeastLength(1)) { + let item = remaining.head; + let rest = remaining.tail; + loop$remaining = rest; + loop$accumulator = toList([item], accumulator); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 269, + "reverse_and_concat", + "No case clause matched", + { values: [remaining] } + ); + } + } +} + +function do_values_acc(loop$list, loop$acc) { + while (true) { + let list = loop$list; + let acc = loop$acc; + if (list.hasLength(0)) { + return reverse_and_concat(acc, toList([])); + } else if (list.atLeastLength(1)) { + let x = list.head; + let xs = list.tail; + loop$list = xs; + loop$acc = toList([x[1]], acc); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 314, + "do_values_acc", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_values(map) { + let list_of_pairs = (() => { + let _pipe = map; + return to_list(_pipe); + })(); + return do_values_acc(list_of_pairs, toList([])); +} + +export function values(map) { + return do_values(map); +} + +function insert_taken(loop$map, loop$desired_keys, loop$acc) { + while (true) { + let map = loop$map; + let desired_keys = loop$desired_keys; + let acc = loop$acc; + let insert$1 = (taken, key) => { + let $ = get(map, key); + if ($.isOk()) { + let value = $[0]; + return insert(taken, key, value); + } else { + return taken; + } + }; + if (desired_keys.hasLength(0)) { + return acc; + } else if (desired_keys.atLeastLength(1)) { + let x = desired_keys.head; + let xs = desired_keys.tail; + loop$map = map; + loop$desired_keys = xs; + loop$acc = insert$1(acc, x); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 411, + "insert_taken", + "No case clause matched", + { values: [desired_keys] } + ); + } + } +} + +function do_take(desired_keys, map) { + return insert_taken(map, desired_keys, new$()); +} + +export function take(map, desired_keys) { + return do_take(desired_keys, map); +} + +function fold_inserts(loop$new_entries, loop$map) { + while (true) { + let new_entries = loop$new_entries; + let map = loop$map; + if (new_entries.hasLength(0)) { + return map; + } else if (new_entries.atLeastLength(1)) { + let x = new_entries.head; + let xs = new_entries.tail; + loop$new_entries = xs; + loop$map = insert_pair(map, x); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 451, + "fold_inserts", + "No case clause matched", + { values: [new_entries] } + ); + } + } +} + +function do_merge(map, new_entries) { + let _pipe = new_entries; + let _pipe$1 = to_list(_pipe); + return fold_inserts(_pipe$1, map); +} + +export function merge(map, new_entries) { + return do_merge(map, new_entries); +} + +export function drop(loop$map, loop$disallowed_keys) { + while (true) { + let map = loop$map; + let disallowed_keys = loop$disallowed_keys; + if (disallowed_keys.hasLength(0)) { + return map; + } else if (disallowed_keys.atLeastLength(1)) { + let x = disallowed_keys.head; + let xs = disallowed_keys.tail; + loop$map = delete$(map, x); + loop$disallowed_keys = xs; + } else { + throw makeError( + "case_no_match", + "gleam/map", + 514, + "drop", + "No case clause matched", + { values: [disallowed_keys] } + ); + } + } +} diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap.app b/aoc2023/build/dev/erlang/gap/ebin/gap.app new file mode 100644 index 0000000..ae37254 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/ebin/gap.app @@ -0,0 +1,8 @@ +{application, gap, [ + {vsn, "1.0.1"}, + {applications, [gleam_community_ansi, + gleam_stdlib]}, + {description, "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences."}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap.beam b/aoc2023/build/dev/erlang/gap/ebin/gap.beam new file mode 100644 index 0000000..e819167 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/ebin/gap.beam differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam new file mode 100644 index 0000000..50227cb Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam new file mode 100644 index 0000000..248a896 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam new file mode 100644 index 0000000..5d56885 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam new file mode 100644 index 0000000..d2d0cc3 Binary files /dev/null and b/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam differ diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl new file mode 100644 index 0000000..5e4b20d --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl @@ -0,0 +1,4 @@ +-record(list_comparison, { + first :: list(gap@comparison:match(list(any()))), + second :: list(gap@comparison:match(list(any()))) +}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl new file mode 100644 index 0000000..f1225dd --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl @@ -0,0 +1 @@ +-record(match, {item :: any()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl new file mode 100644 index 0000000..742783b --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl @@ -0,0 +1 @@ +-record(no_match, {item :: any()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl new file mode 100644 index 0000000..c0b1a75 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl @@ -0,0 +1,4 @@ +-record(string_comparison, { + first :: list(gap@comparison:match(list(binary()))), + second :: list(gap@comparison:match(list(binary()))) +}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl new file mode 100644 index 0000000..0e7c64a --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl @@ -0,0 +1 @@ +-record(styled_comparison, {first :: binary(), second :: binary()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl new file mode 100644 index 0000000..c11a9a6 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl @@ -0,0 +1 @@ +-record(all, {all :: binary()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl new file mode 100644 index 0000000..6e073b3 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl @@ -0,0 +1,5 @@ +-record(highlighters, { + first :: fun((binary()) -> binary()), + second :: fun((binary()) -> binary()), + matching :: fun((binary()) -> binary()) +}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl new file mode 100644 index 0000000..db45796 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl @@ -0,0 +1,5 @@ +-record(part, { + acc :: binary(), + part :: list(any()), + highlight :: fun((binary()) -> binary()) +}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl new file mode 100644 index 0000000..a7341c6 --- /dev/null +++ b/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl @@ -0,0 +1,5 @@ +-record(styling, { + comparison :: gap@comparison:comparison(any()), + serializer :: gleam@option:option(fun((gap@styling:part(any())) -> binary())), + highlight :: gleam@option:option(gap@styling:highlighters()) +}). diff --git a/aoc2023/build/dev/erlang/gleam.lock b/aoc2023/build/dev/erlang/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache new file mode 100644 index 0000000..d77f2c9 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta new file mode 100644 index 0000000..a01f4e8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl new file mode 100644 index 0000000..8b7a4c9 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl @@ -0,0 +1,263 @@ +-module(gleam_community@ansi). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([reset/1, bold/1, dim/1, italic/1, underline/1, inverse/1, hidden/1, strikethrough/1, black/1, red/1, green/1, yellow/1, blue/1, magenta/1, cyan/1, white/1, bright_black/1, grey/1, gray/1, bright_red/1, bright_green/1, bright_yellow/1, bright_blue/1, bright_magenta/1, bright_cyan/1, bright_white/1, hex/2, pink/1, colour/2, color/2, bg_black/1, bg_red/1, bg_green/1, bg_yellow/1, bg_blue/1, bg_magenta/1, bg_cyan/1, bg_white/1, bg_bright_black/1, bg_bright_red/1, bg_bright_green/1, bg_bright_yellow/1, bg_bright_blue/1, bg_bright_magenta/1, bg_bright_cyan/1, bg_bright_white/1, bg_hex/2, bg_pink/1, bg_colour/2, bg_color/2]). +-export_type([code/0]). + +-type code() :: {code, binary(), binary(), binary()}. + +-spec code(list(integer()), integer()) -> code(). +code(Open, Close) -> + Close_str = gleam@int:to_string(Close), + Open_strs = gleam@list:map(Open, fun gleam@int:to_string/1), + {code, + <<<<<<""/utf8, "["/utf8>>/binary, + (gleam@string:join(Open_strs, <<";"/utf8>>))/binary>>/binary, + "m"/utf8>>, + <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>, + <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>}. + +-spec run(binary(), code()) -> binary(). +run(Text, Code) -> + <<<<(erlang:element(2, Code))/binary, + (gleam@string:replace( + Text, + erlang:element(4, Code), + erlang:element(2, Code) + ))/binary>>/binary, + (erlang:element(3, Code))/binary>>. + +-spec reset(binary()) -> binary(). +reset(Text) -> + run(Text, code([0], 0)). + +-spec bold(binary()) -> binary(). +bold(Text) -> + run(Text, code([1], 22)). + +-spec dim(binary()) -> binary(). +dim(Text) -> + run(Text, code([2], 22)). + +-spec italic(binary()) -> binary(). +italic(Text) -> + run(Text, code([3], 23)). + +-spec underline(binary()) -> binary(). +underline(Text) -> + run(Text, code([4], 24)). + +-spec inverse(binary()) -> binary(). +inverse(Text) -> + run(Text, code([7], 27)). + +-spec hidden(binary()) -> binary(). +hidden(Text) -> + run(Text, code([8], 28)). + +-spec strikethrough(binary()) -> binary(). +strikethrough(Text) -> + run(Text, code([9], 29)). + +-spec black(binary()) -> binary(). +black(Text) -> + run(Text, code([30], 39)). + +-spec red(binary()) -> binary(). +red(Text) -> + run(Text, code([31], 39)). + +-spec green(binary()) -> binary(). +green(Text) -> + run(Text, code([32], 39)). + +-spec yellow(binary()) -> binary(). +yellow(Text) -> + run(Text, code([33], 39)). + +-spec blue(binary()) -> binary(). +blue(Text) -> + run(Text, code([34], 39)). + +-spec magenta(binary()) -> binary(). +magenta(Text) -> + run(Text, code([35], 39)). + +-spec cyan(binary()) -> binary(). +cyan(Text) -> + run(Text, code([36], 39)). + +-spec white(binary()) -> binary(). +white(Text) -> + run(Text, code([37], 39)). + +-spec bright_black(binary()) -> binary(). +bright_black(Text) -> + run(Text, code([90], 39)). + +-spec grey(binary()) -> binary(). +grey(Text) -> + bright_black(Text). + +-spec gray(binary()) -> binary(). +gray(Text) -> + bright_black(Text). + +-spec bright_red(binary()) -> binary(). +bright_red(Text) -> + run(Text, code([91], 39)). + +-spec bright_green(binary()) -> binary(). +bright_green(Text) -> + run(Text, code([92], 39)). + +-spec bright_yellow(binary()) -> binary(). +bright_yellow(Text) -> + run(Text, code([93], 39)). + +-spec bright_blue(binary()) -> binary(). +bright_blue(Text) -> + run(Text, code([94], 39)). + +-spec bright_magenta(binary()) -> binary(). +bright_magenta(Text) -> + run(Text, code([95], 39)). + +-spec bright_cyan(binary()) -> binary(). +bright_cyan(Text) -> + run(Text, code([96], 39)). + +-spec bright_white(binary()) -> binary(). +bright_white(Text) -> + run(Text, code([97], 39)). + +-spec hex(binary(), integer()) -> binary(). +hex(Text, Colour) -> + Colour@1 = gleam@int:clamp(Colour, 16#0, 16#ffffff), + run( + Text, + code( + [38, + 2, + begin + _pipe = erlang:'bsr'(Colour@1, 16), + erlang:'band'(_pipe, 16#ff) + end, + begin + _pipe@1 = erlang:'bsr'(Colour@1, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + erlang:'band'(Colour@1, 16#ff)], + 39 + ) + ). + +-spec pink(binary()) -> binary(). +pink(Text) -> + hex(Text, 16#ffaff3). + +-spec colour(binary(), gleam_community@colour:colour()) -> binary(). +colour(Text, Colour) -> + Hex_colour = gleam_community@colour:to_rgb_hex(Colour), + hex(Text, Hex_colour). + +-spec color(binary(), gleam_community@colour:colour()) -> binary(). +color(Text, Color) -> + colour(Text, Color). + +-spec bg_black(binary()) -> binary(). +bg_black(Text) -> + run(Text, code([40], 49)). + +-spec bg_red(binary()) -> binary(). +bg_red(Text) -> + run(Text, code([41], 49)). + +-spec bg_green(binary()) -> binary(). +bg_green(Text) -> + run(Text, code([42], 49)). + +-spec bg_yellow(binary()) -> binary(). +bg_yellow(Text) -> + run(Text, code([43], 49)). + +-spec bg_blue(binary()) -> binary(). +bg_blue(Text) -> + run(Text, code([44], 49)). + +-spec bg_magenta(binary()) -> binary(). +bg_magenta(Text) -> + run(Text, code([45], 49)). + +-spec bg_cyan(binary()) -> binary(). +bg_cyan(Text) -> + run(Text, code([46], 49)). + +-spec bg_white(binary()) -> binary(). +bg_white(Text) -> + run(Text, code([47], 49)). + +-spec bg_bright_black(binary()) -> binary(). +bg_bright_black(Text) -> + run(Text, code([100], 49)). + +-spec bg_bright_red(binary()) -> binary(). +bg_bright_red(Text) -> + run(Text, code([101], 49)). + +-spec bg_bright_green(binary()) -> binary(). +bg_bright_green(Text) -> + run(Text, code([102], 49)). + +-spec bg_bright_yellow(binary()) -> binary(). +bg_bright_yellow(Text) -> + run(Text, code([103], 49)). + +-spec bg_bright_blue(binary()) -> binary(). +bg_bright_blue(Text) -> + run(Text, code([104], 49)). + +-spec bg_bright_magenta(binary()) -> binary(). +bg_bright_magenta(Text) -> + run(Text, code([105], 49)). + +-spec bg_bright_cyan(binary()) -> binary(). +bg_bright_cyan(Text) -> + run(Text, code([106], 49)). + +-spec bg_bright_white(binary()) -> binary(). +bg_bright_white(Text) -> + run(Text, code([107], 49)). + +-spec bg_hex(binary(), integer()) -> binary(). +bg_hex(Text, Colour) -> + run( + Text, + code( + [48, + 2, + begin + _pipe = erlang:'bsr'(Colour, 16), + erlang:'band'(_pipe, 16#ff) + end, + begin + _pipe@1 = erlang:'bsr'(Colour, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + erlang:'band'(Colour, 16#ff)], + 49 + ) + ). + +-spec bg_pink(binary()) -> binary(). +bg_pink(Text) -> + bg_hex(Text, 16#ffaff3). + +-spec bg_colour(binary(), gleam_community@colour:colour()) -> binary(). +bg_colour(Text, Colour) -> + Hex_colour = gleam_community@colour:to_rgb_hex(Colour), + bg_hex(Text, Hex_colour). + +-spec bg_color(binary(), gleam_community@colour:colour()) -> binary(). +bg_color(Text, Colour) -> + bg_colour(Text, Colour). diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam new file mode 100644 index 0000000..f59ef96 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app new file mode 100644 index 0000000..90e4d4a --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app @@ -0,0 +1,8 @@ +{application, gleam_community_ansi, [ + {vsn, "1.2.0"}, + {applications, [gleam_community_colour, + gleam_stdlib]}, + {description, "ANSI colours, formatting, and control codes"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache new file mode 100644 index 0000000..7de2dd3 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta new file mode 100644 index 0000000..3584f7e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl new file mode 100644 index 0000000..ceaaaaa --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl @@ -0,0 +1,513 @@ +-module(gleam_community@colour). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_rgb255/3, from_rgb/3, from_rgba/4, from_hsla/4, from_hsl/3, from_rgb_hex/1, from_rgb_hex_string/1, from_rgba_hex/1, from_rgba_hex_string/1, to_rgba/1, to_hsla/1, to_css_rgba_string/1, to_rgba_hex/1, to_rgba_hex_string/1, to_rgb_hex/1, to_rgb_hex_string/1]). +-export_type([colour/0]). + +-opaque colour() :: {rgba, float(), float(), float(), float()} | + {hsla, float(), float(), float(), float()}. + +-spec valid_colour_value(float()) -> {ok, float()} | {error, nil}. +valid_colour_value(C) -> + case (C > 1.0) orelse (C < +0.0) of + true -> + {error, nil}; + + false -> + {ok, C} + end. + +-spec hue_to_rgb(float(), float(), float()) -> float(). +hue_to_rgb(Hue, M1, M2) -> + H = case Hue of + _ when Hue < +0.0 -> + Hue + 1.0; + + _ when Hue > 1.0 -> + Hue - 1.0; + + _ -> + Hue + end, + H_t_6 = H * 6.0, + H_t_2 = H * 2.0, + H_t_3 = H * 3.0, + case H of + _ when H_t_6 < 1.0 -> + M1 + (((M2 - M1) * H) * 6.0); + + _ when H_t_2 < 1.0 -> + M2; + + _ when H_t_3 < 2.0 -> + M1 + (((M2 - M1) * ((2.0 / 3.0) - H)) * 6.0); + + _ -> + M1 + end. + +-spec hex_string_to_int(binary()) -> {ok, integer()} | {error, nil}. +hex_string_to_int(Hex_string) -> + Hex = case Hex_string of + <<"#"/utf8, Hex_number/binary>> -> + Hex_number; + + <<"0x"/utf8, Hex_number@1/binary>> -> + Hex_number@1; + + _ -> + Hex_string + end, + _pipe = Hex, + _pipe@1 = gleam@string:lowercase(_pipe), + _pipe@2 = gleam@string:to_graphemes(_pipe@1), + _pipe@3 = gleam@list:reverse(_pipe@2), + gleam@list:index_fold( + _pipe@3, + {ok, 0}, + fun(Total, Char, Index) -> case Total of + {error, nil} -> + {error, nil}; + + {ok, V} -> + gleam@result:then(case Char of + <<"a"/utf8>> -> + {ok, 10}; + + <<"b"/utf8>> -> + {ok, 11}; + + <<"c"/utf8>> -> + {ok, 12}; + + <<"d"/utf8>> -> + {ok, 13}; + + <<"e"/utf8>> -> + {ok, 14}; + + <<"f"/utf8>> -> + {ok, 15}; + + _ -> + gleam@int:parse(Char) + end, fun(Num) -> + gleam@result:then( + gleam@int:power(16, gleam@int:to_float(Index)), + fun(Base) -> + {ok, + V + gleam@float:round( + gleam@int:to_float(Num) * Base + )} + end + ) + end) + end end + ). + +-spec hsla_to_rgba(float(), float(), float(), float()) -> {float(), + float(), + float(), + float()}. +hsla_to_rgba(H, S, L, A) -> + M2 = case L =< 0.5 of + true -> + L * (S + 1.0); + + false -> + (L + S) - (L * S) + end, + M1 = (L * 2.0) - M2, + R = hue_to_rgb(H + (1.0 / 3.0), M1, M2), + G = hue_to_rgb(H, M1, M2), + B = hue_to_rgb(H - (1.0 / 3.0), M1, M2), + {R, G, B, A}. + +-spec rgba_to_hsla(float(), float(), float(), float()) -> {float(), + float(), + float(), + float()}. +rgba_to_hsla(R, G, B, A) -> + Min_colour = gleam@float:min(R, gleam@float:min(G, B)), + Max_colour = gleam@float:max(R, gleam@float:max(G, B)), + H1 = case true of + _ when Max_colour =:= R -> + gleam@float:divide(G - B, Max_colour - Min_colour); + + _ when Max_colour =:= G -> + _pipe = gleam@float:divide(B - R, Max_colour - Min_colour), + gleam@result:then(_pipe, fun(D) -> {ok, 2.0 + D} end); + + _ -> + _pipe@1 = gleam@float:divide(R - G, Max_colour - Min_colour), + gleam@result:then(_pipe@1, fun(D@1) -> {ok, 4.0 + D@1} end) + end, + H2 = case H1 of + {ok, V} -> + {ok, V * (1.0 / 6.0)}; + + _ -> + H1 + end, + H3 = case H2 of + {ok, V@1} when V@1 < +0.0 -> + V@1 + 1.0; + + {ok, V@2} -> + V@2; + + _ -> + +0.0 + end, + L = (Min_colour + Max_colour) / 2.0, + S = case true of + _ when Min_colour =:= Max_colour -> + +0.0; + + _ when L < 0.5 -> + case (Max_colour + Min_colour) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> (Max_colour - Min_colour) / Gleam@denominator + end; + + _ -> + case ((2.0 - Max_colour) - Min_colour) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> (Max_colour - Min_colour) / Gleam@denominator@1 + end + end, + {H3, S, L, A}. + +-spec from_rgb255(integer(), integer(), integer()) -> {ok, colour()} | + {error, nil}. +from_rgb255(Red, Green, Blue) -> + gleam@result:then( + begin + _pipe = Red, + _pipe@1 = gleam@int:to_float(_pipe), + _pipe@2 = gleam@float:divide(_pipe@1, 255.0), + gleam@result:then(_pipe@2, fun valid_colour_value/1) + end, + fun(R) -> + gleam@result:then( + begin + _pipe@3 = Green, + _pipe@4 = gleam@int:to_float(_pipe@3), + _pipe@5 = gleam@float:divide(_pipe@4, 255.0), + gleam@result:then(_pipe@5, fun valid_colour_value/1) + end, + fun(G) -> + gleam@result:then( + begin + _pipe@6 = Blue, + _pipe@7 = gleam@int:to_float(_pipe@6), + _pipe@8 = gleam@float:divide(_pipe@7, 255.0), + gleam@result:then(_pipe@8, fun valid_colour_value/1) + end, + fun(B) -> {ok, {rgba, R, G, B, 1.0}} end + ) + end + ) + end + ). + +-spec from_rgb(float(), float(), float()) -> {ok, colour()} | {error, nil}. +from_rgb(Red, Green, Blue) -> + gleam@result:then( + valid_colour_value(Red), + fun(R) -> + gleam@result:then( + valid_colour_value(Green), + fun(G) -> + gleam@result:then( + valid_colour_value(Blue), + fun(B) -> {ok, {rgba, R, G, B, 1.0}} end + ) + end + ) + end + ). + +-spec from_rgba(float(), float(), float(), float()) -> {ok, colour()} | + {error, nil}. +from_rgba(Red, Green, Blue, Alpha) -> + gleam@result:then( + valid_colour_value(Red), + fun(R) -> + gleam@result:then( + valid_colour_value(Green), + fun(G) -> + gleam@result:then( + valid_colour_value(Blue), + fun(B) -> + gleam@result:then( + valid_colour_value(Alpha), + fun(A) -> {ok, {rgba, R, G, B, A}} end + ) + end + ) + end + ) + end + ). + +-spec from_hsla(float(), float(), float(), float()) -> {ok, colour()} | + {error, nil}. +from_hsla(Hue, Saturation, Lightness, Alpha) -> + gleam@result:then( + valid_colour_value(Hue), + fun(H) -> + gleam@result:then( + valid_colour_value(Saturation), + fun(S) -> + gleam@result:then( + valid_colour_value(Lightness), + fun(L) -> + gleam@result:then( + valid_colour_value(Alpha), + fun(A) -> {ok, {hsla, H, S, L, A}} end + ) + end + ) + end + ) + end + ). + +-spec from_hsl(float(), float(), float()) -> {ok, colour()} | {error, nil}. +from_hsl(Hue, Saturation, Lightness) -> + from_hsla(Hue, Saturation, Lightness, 1.0). + +-spec from_rgb_hex(integer()) -> {ok, colour()} | {error, nil}. +from_rgb_hex(Hex) -> + case (Hex > 16#ffffff) orelse (Hex < 0) of + true -> + {error, nil}; + + false -> + R = begin + _pipe = erlang:'bsr'(Hex, 16), + erlang:'band'(_pipe, 16#ff) + end, + G = begin + _pipe@1 = erlang:'bsr'(Hex, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + B = erlang:'band'(Hex, 16#ff), + from_rgb255(R, G, B) + end. + +-spec from_rgb_hex_string(binary()) -> {ok, colour()} | {error, nil}. +from_rgb_hex_string(Hex_string) -> + gleam@result:then( + hex_string_to_int(Hex_string), + fun(Hex_int) -> from_rgb_hex(Hex_int) end + ). + +-spec from_rgba_hex(integer()) -> {ok, colour()} | {error, nil}. +from_rgba_hex(Hex) -> + case (Hex > 16#ffffffff) orelse (Hex < 0) of + true -> + {error, nil}; + + false -> + _assert_subject = begin + _pipe = erlang:'bsr'(Hex, 24), + _pipe@1 = erlang:'band'(_pipe, 16#ff), + _pipe@2 = gleam@int:to_float(_pipe@1), + gleam@float:divide(_pipe@2, 255.0) + end, + {ok, R} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 588}) + end, + _assert_subject@1 = begin + _pipe@3 = erlang:'bsr'(Hex, 16), + _pipe@4 = erlang:'band'(_pipe@3, 16#ff), + _pipe@5 = gleam@int:to_float(_pipe@4), + gleam@float:divide(_pipe@5, 255.0) + end, + {ok, G} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 594}) + end, + _assert_subject@2 = begin + _pipe@6 = erlang:'bsr'(Hex, 8), + _pipe@7 = erlang:'band'(_pipe@6, 16#ff), + _pipe@8 = gleam@int:to_float(_pipe@7), + gleam@float:divide(_pipe@8, 255.0) + end, + {ok, B} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 600}) + end, + _assert_subject@3 = begin + _pipe@9 = erlang:'band'(Hex, 16#ff), + _pipe@10 = gleam@int:to_float(_pipe@9), + gleam@float:divide(_pipe@10, 255.0) + end, + {ok, A} = case _assert_subject@3 of + {ok, _} -> _assert_subject@3; + _assert_fail@3 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@3, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 606}) + end, + from_rgba(R, G, B, A) + end. + +-spec from_rgba_hex_string(binary()) -> {ok, colour()} | {error, nil}. +from_rgba_hex_string(Hex_string) -> + gleam@result:then( + hex_string_to_int(Hex_string), + fun(Hex_int) -> from_rgba_hex(Hex_int) end + ). + +-spec to_rgba(colour()) -> {float(), float(), float(), float()}. +to_rgba(Colour) -> + case Colour of + {rgba, R, G, B, A} -> + {R, G, B, A}; + + {hsla, H, S, L, A@1} -> + hsla_to_rgba(H, S, L, A@1) + end. + +-spec to_hsla(colour()) -> {float(), float(), float(), float()}. +to_hsla(Colour) -> + case Colour of + {hsla, H, S, L, A} -> + {H, S, L, A}; + + {rgba, R, G, B, A@1} -> + rgba_to_hsla(R, G, B, A@1) + end. + +-spec to_css_rgba_string(colour()) -> binary(). +to_css_rgba_string(Colour) -> + {R, G, B, A} = to_rgba(Colour), + Percent = fun(X) -> + _assert_subject = begin + _pipe = X, + _pipe@1 = gleam@float:multiply(_pipe, 10000.0), + _pipe@2 = gleam@float:round(_pipe@1), + _pipe@3 = gleam@int:to_float(_pipe@2), + gleam@float:divide(_pipe@3, 100.0) + end, + {ok, P} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour"/utf8>>, + function => <<"to_css_rgba_string"/utf8>>, + line => 704}) + end, + P + end, + Round_to = fun(X@1) -> + _assert_subject@1 = begin + _pipe@4 = X@1, + _pipe@5 = gleam@float:multiply(_pipe@4, 1000.0), + _pipe@6 = gleam@float:round(_pipe@5), + _pipe@7 = gleam@int:to_float(_pipe@6), + gleam@float:divide(_pipe@7, 1000.0) + end, + {ok, R@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/colour"/utf8>>, + function => <<"to_css_rgba_string"/utf8>>, + line => 716}) + end, + R@1 + end, + gleam@string:join( + [<<"rgba("/utf8>>, + <<(gleam@float:to_string(Percent(R)))/binary, "%,"/utf8>>, + <<(gleam@float:to_string(Percent(G)))/binary, "%,"/utf8>>, + <<(gleam@float:to_string(Percent(B)))/binary, "%,"/utf8>>, + gleam@float:to_string(Round_to(A)), + <<")"/utf8>>], + <<""/utf8>> + ). + +-spec to_rgba_hex(colour()) -> integer(). +to_rgba_hex(Colour) -> + {R, G, B, A} = to_rgba(Colour), + Red = begin + _pipe = R * 255.0, + _pipe@1 = gleam@float:round(_pipe), + erlang:'bsl'(_pipe@1, 24) + end, + Green = begin + _pipe@2 = G * 255.0, + _pipe@3 = gleam@float:round(_pipe@2), + erlang:'bsl'(_pipe@3, 16) + end, + Blue = begin + _pipe@4 = B * 255.0, + _pipe@5 = gleam@float:round(_pipe@4), + erlang:'bsl'(_pipe@5, 8) + end, + Alpha = begin + _pipe@6 = A * 255.0, + gleam@float:round(_pipe@6) + end, + ((Red + Green) + Blue) + Alpha. + +-spec to_rgba_hex_string(colour()) -> binary(). +to_rgba_hex_string(Colour) -> + _pipe = to_rgba_hex(Colour), + gleam@int:to_base16(_pipe). + +-spec to_rgb_hex(colour()) -> integer(). +to_rgb_hex(Colour) -> + {R, G, B, _} = to_rgba(Colour), + Red = begin + _pipe = R * 255.0, + _pipe@1 = gleam@float:round(_pipe), + erlang:'bsl'(_pipe@1, 16) + end, + Green = begin + _pipe@2 = G * 255.0, + _pipe@3 = gleam@float:round(_pipe@2), + erlang:'bsl'(_pipe@3, 8) + end, + Blue = begin + _pipe@4 = B * 255.0, + gleam@float:round(_pipe@4) + end, + (Red + Green) + Blue. + +-spec to_rgb_hex_string(colour()) -> binary(). +to_rgb_hex_string(Colour) -> + _pipe = to_rgb_hex(Colour), + gleam@int:to_base16(_pipe). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache new file mode 100644 index 0000000..0154b0b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta new file mode 100644 index 0000000..0c78df4 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl new file mode 100644 index 0000000..28ed9fd --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl @@ -0,0 +1,75 @@ +-module(gleam_community@colour@accessibility). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([luminance/1, contrast_ratio/2, maximum_contrast/2]). + +-spec intensity(float()) -> float(). +intensity(Colour_value) -> + case true of + _ when Colour_value =< 0.03928 -> + Colour_value / 12.92; + + _ -> + _assert_subject = gleam@float:power( + (Colour_value + 0.055) / 1.055, + 2.4 + ), + {ok, I} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour/accessibility"/utf8>>, + function => <<"intensity"/utf8>>, + line => 62}) + end, + I + end. + +-spec luminance(gleam_community@colour:colour()) -> float(). +luminance(Colour) -> + {R, G, B, _} = gleam_community@colour:to_rgba(Colour), + R_intensity = intensity(R), + G_intensity = intensity(G), + B_intensity = intensity(B), + ((0.2126 * R_intensity) + (0.7152 * G_intensity)) + (0.0722 * B_intensity). + +-spec contrast_ratio( + gleam_community@colour:colour(), + gleam_community@colour:colour() +) -> float(). +contrast_ratio(Colour_a, Colour_b) -> + Luminance_a = luminance(Colour_a) + 0.05, + Luminance_b = luminance(Colour_b) + 0.05, + case Luminance_a > Luminance_b of + true -> + case Luminance_b of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> Luminance_a / Gleam@denominator + end; + + false -> + case Luminance_a of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> Luminance_b / Gleam@denominator@1 + end + end. + +-spec maximum_contrast( + gleam_community@colour:colour(), + list(gleam_community@colour:colour()) +) -> {ok, gleam_community@colour:colour()} | {error, nil}. +maximum_contrast(Base, Colours) -> + _pipe = Colours, + _pipe@1 = gleam@list:sort( + _pipe, + fun(Colour_a, Colour_b) -> + Contrast_a = contrast_ratio(Base, Colour_a), + Contrast_b = contrast_ratio(Base, Colour_b), + gleam@float:compare(Contrast_b, Contrast_a) + end + ), + gleam@list:first(_pipe@1). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam new file mode 100644 index 0000000..e25d425 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam new file mode 100644 index 0000000..e599de6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app new file mode 100644 index 0000000..51800d3 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app @@ -0,0 +1,7 @@ +{application, gleam_community_colour, [ + {vsn, "1.2.0"}, + {applications, [gleam_stdlib]}, + {description, "Colour types, conversions, and other utilities"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl new file mode 100644 index 0000000..06116df --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl @@ -0,0 +1 @@ +-record(hsla, {h :: float(), s :: float(), l :: float(), a :: float()}). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl new file mode 100644 index 0000000..fff139e --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl @@ -0,0 +1 @@ +-record(rgba, {r :: float(), g :: float(), b :: float(), a :: float()}). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache new file mode 100644 index 0000000..c8def84 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta new file mode 100644 index 0000000..23d4726 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl new file mode 100644 index 0000000..9cdaccb --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl @@ -0,0 +1,172 @@ +-module(gleam_community@maths@arithmetics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([gcd/2, lcm/2, divisors/1, proper_divisors/1, float_sum/1, int_sum/1, float_product/1, int_product/1, float_cumulative_sum/1, int_cumulative_sum/1, float_cumumlative_product/1, int_cumulative_product/1]). + +-spec do_gcd(integer(), integer()) -> integer(). +do_gcd(X, Y) -> + case X =:= 0 of + true -> + Y; + + false -> + _assert_subject = gleam@int:modulo(Y, X), + {ok, Z} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/arithmetics"/utf8>>, + function => <<"do_gcd"/utf8>>, + line => 93}) + end, + do_gcd(Z, X) + end. + +-spec gcd(integer(), integer()) -> integer(). +gcd(X, Y) -> + Absx = gleam_community@maths@piecewise:int_absolute_value(X), + Absy = gleam_community@maths@piecewise:int_absolute_value(Y), + do_gcd(Absx, Absy). + +-spec lcm(integer(), integer()) -> integer(). +lcm(X, Y) -> + Absx = gleam_community@maths@piecewise:int_absolute_value(X), + Absy = gleam_community@maths@piecewise:int_absolute_value(Y), + case do_gcd(Absx, Absy) of + 0 -> 0; + Gleam@denominator -> Absx * Absy div Gleam@denominator + end. + +-spec find_divisors(integer()) -> list(integer()). +find_divisors(N) -> + Nabs = gleam_community@maths@piecewise:float_absolute_value( + gleam_community@maths@conversion:int_to_float(N) + ), + _assert_subject = gleam_community@maths@elementary:square_root(Nabs), + {ok, Sqrt_result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/arithmetics"/utf8>>, + function => <<"find_divisors"/utf8>>, + line => 176}) + end, + Max = gleam_community@maths@conversion:float_to_int(Sqrt_result) + 1, + _pipe = gleam@list:range(2, Max), + _pipe@1 = gleam@list:fold(_pipe, [1, N], fun(Acc, I) -> case (case I of + 0 -> 0; + Gleam@denominator -> N rem Gleam@denominator + end) =:= 0 of + true -> + [I, case I of + 0 -> 0; + Gleam@denominator@1 -> N div Gleam@denominator@1 + end | Acc]; + + false -> + Acc + end end), + _pipe@2 = gleam@list:unique(_pipe@1), + gleam@list:sort(_pipe@2, fun gleam@int:compare/2). + +-spec divisors(integer()) -> list(integer()). +divisors(N) -> + find_divisors(N). + +-spec proper_divisors(integer()) -> list(integer()). +proper_divisors(N) -> + Divisors = find_divisors(N), + _pipe = Divisors, + gleam@list:take(_pipe, gleam@list:length(Divisors) - 1). + +-spec float_sum(list(float())) -> float(). +float_sum(Arr) -> + case Arr of + [] -> + +0.0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, +0.0, fun(Acc, A) -> A + Acc end) + end. + +-spec int_sum(list(integer())) -> integer(). +int_sum(Arr) -> + case Arr of + [] -> + 0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec float_product(list(float())) -> float(). +float_product(Arr) -> + case Arr of + [] -> + 1.0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 1.0, fun(Acc, A) -> A * Acc end) + end. + +-spec int_product(list(integer())) -> integer(). +int_product(Arr) -> + case Arr of + [] -> + 1; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 1, fun(Acc, A) -> A * Acc end) + end. + +-spec float_cumulative_sum(list(float())) -> list(float()). +float_cumulative_sum(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, +0.0, fun(Acc, A) -> A + Acc end) + end. + +-spec int_cumulative_sum(list(integer())) -> list(integer()). +int_cumulative_sum(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec float_cumumlative_product(list(float())) -> list(float()). +float_cumumlative_product(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 1.0, fun(Acc, A) -> A * Acc end) + end. + +-spec int_cumulative_product(list(integer())) -> list(integer()). +int_cumulative_product(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 1, fun(Acc, A) -> A * Acc end) + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache new file mode 100644 index 0000000..3fffb45 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta new file mode 100644 index 0000000..f8262ee Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl new file mode 100644 index 0000000..d600fbe --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl @@ -0,0 +1,218 @@ +-module(gleam_community@maths@combinatorics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([combination/2, factorial/1, permutation/2, list_combination/2, list_permutation/1, cartesian_product/2]). + +-spec combination(integer(), integer()) -> {ok, integer()} | {error, binary()}. +combination(N, K) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case (K < 0) orelse (K > N) of + true -> + _pipe@1 = 0, + {ok, _pipe@1}; + + false -> + case (K =:= 0) orelse (K =:= N) of + true -> + _pipe@2 = 1, + {ok, _pipe@2}; + + false -> + Min = case K < (N - K) of + true -> + K; + + false -> + N - K + end, + _pipe@3 = gleam@list:range(1, Min), + _pipe@4 = gleam@list:fold( + _pipe@3, + 1, + fun(Acc, X) -> case X of + 0 -> 0; + Gleam@denominator -> Acc * ((N + 1) - X) + div Gleam@denominator + end end + ), + {ok, _pipe@4} + end + end + end. + +-spec factorial(integer()) -> {ok, integer()} | {error, binary()}. +factorial(N) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case N of + 0 -> + _pipe@1 = 1, + {ok, _pipe@1}; + + 1 -> + _pipe@2 = 1, + {ok, _pipe@2}; + + _ -> + _pipe@3 = gleam@list:range(1, N), + _pipe@4 = gleam@list:fold( + _pipe@3, + 1, + fun(Acc, X) -> Acc * X end + ), + {ok, _pipe@4} + end + end. + +-spec permutation(integer(), integer()) -> {ok, integer()} | {error, binary()}. +permutation(N, K) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case (K < 0) orelse (K > N) of + true -> + _pipe@1 = 0, + {ok, _pipe@1}; + + false -> + case K =:= N of + true -> + _pipe@2 = 1, + {ok, _pipe@2}; + + false -> + _assert_subject = factorial(N), + {ok, V1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"permutation"/utf8>>, + line => 241}) + end, + _assert_subject@1 = factorial(N - K), + {ok, V2} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"permutation"/utf8>>, + line => 242}) + end, + _pipe@3 = case V2 of + 0 -> 0; + Gleam@denominator -> V1 div Gleam@denominator + end, + {ok, _pipe@3} + end + end + end. + +-spec do_list_combination(list(ORJ), integer(), list(ORJ)) -> list(list(ORJ)). +do_list_combination(Arr, K, Prefix) -> + case K of + 0 -> + [gleam@list:reverse(Prefix)]; + + _ -> + case Arr of + [] -> + []; + + [X | Xs] -> + With_x = do_list_combination(Xs, K - 1, [X | Prefix]), + Without_x = do_list_combination(Xs, K, Prefix), + gleam@list:append(With_x, Without_x) + end + end. + +-spec list_combination(list(ORD), integer()) -> {ok, list(list(ORD))} | + {error, binary()}. +list_combination(Arr, K) -> + case K < 0 of + true -> + _pipe = <<"Invalid input argument: k < 0. Valid input is k > 0."/utf8>>, + {error, _pipe}; + + false -> + case K > gleam@list:length(Arr) of + true -> + _pipe@1 = <<"Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)."/utf8>>, + {error, _pipe@1}; + + false -> + _pipe@2 = do_list_combination(Arr, K, []), + {ok, _pipe@2} + end + end. + +-spec list_permutation(list(ORO)) -> list(list(ORO)). +list_permutation(Arr) -> + case Arr of + [] -> + [[]]; + + _ -> + gleam@list:flat_map( + Arr, + fun(X) -> + _assert_subject = gleam@list:pop(Arr, fun(Y) -> X =:= Y end), + {ok, {_, Remaining}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"list_permutation"/utf8>>, + line => 373}) + end, + gleam@list:map( + list_permutation(Remaining), + fun(Perm) -> [X | Perm] end + ) + end + ) + end. + +-spec cartesian_product(list(ORS), list(ORS)) -> list({ORS, ORS}). +cartesian_product(Xarr, Yarr) -> + Xset = begin + _pipe = Xarr, + gleam@set:from_list(_pipe) + end, + Yset = begin + _pipe@1 = Yarr, + gleam@set:from_list(_pipe@1) + end, + _pipe@2 = Xset, + _pipe@3 = gleam@set:fold( + _pipe@2, + gleam@set:new(), + fun(Accumulator0, Member0) -> + gleam@set:fold( + Yset, + Accumulator0, + fun(Accumulator1, Member1) -> + gleam@set:insert(Accumulator1, {Member0, Member1}) + end + ) + end + ), + gleam@set:to_list(_pipe@3). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache new file mode 100644 index 0000000..a95ea4b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta new file mode 100644 index 0000000..374a6fb Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl new file mode 100644 index 0000000..4923523 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl @@ -0,0 +1,24 @@ +-module(gleam_community@maths@conversion). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([int_to_float/1, float_to_int/1, degrees_to_radians/1, radians_to_degrees/1]). + +-spec int_to_float(integer()) -> float(). +int_to_float(X) -> + gleam@int:to_float(X). + +-spec float_to_int(float()) -> integer(). +float_to_int(X) -> + erlang:trunc(X). + +-spec degrees_to_radians(float()) -> float(). +degrees_to_radians(X) -> + (X * math:pi()) / 180.0. + +-spec radians_to_degrees(float()) -> float(). +radians_to_degrees(X) -> + case math:pi() of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> X * 180.0 / Gleam@denominator + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache new file mode 100644 index 0000000..8b9e7ca Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta new file mode 100644 index 0000000..8a3590f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl new file mode 100644 index 0000000..15d6abc --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl @@ -0,0 +1,286 @@ +-module(gleam_community@maths@elementary). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([acos/1, acosh/1, asin/1, asinh/1, atan/1, atan2/2, atanh/1, cos/1, cosh/1, sin/1, sinh/1, tan/1, tanh/1, exponential/1, natural_logarithm/1, logarithm_2/1, logarithm_10/1, logarithm/2, power/2, square_root/1, cube_root/1, nth_root/2, pi/0, tau/0, e/0]). + +-spec acos(float()) -> {ok, float()} | {error, binary()}. +acos(X) -> + case (X >= -1.0) andalso (X =< 1.0) of + true -> + _pipe = math:acos(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec acosh(float()) -> {ok, float()} | {error, binary()}. +acosh(X) -> + case X >= 1.0 of + true -> + _pipe = math:acosh(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x < 1. Valid input is x >= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec asin(float()) -> {ok, float()} | {error, binary()}. +asin(X) -> + case (X >= -1.0) andalso (X =< 1.0) of + true -> + _pipe = math:asin(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec asinh(float()) -> float(). +asinh(X) -> + math:asinh(X). + +-spec atan(float()) -> float(). +atan(X) -> + math:atan(X). + +-spec atan2(float(), float()) -> float(). +atan2(Y, X) -> + math:atan2(Y, X). + +-spec atanh(float()) -> {ok, float()} | {error, binary()}. +atanh(X) -> + case (X > -1.0) andalso (X < 1.0) of + true -> + _pipe = math:atanh(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1."/utf8>>, + {error, _pipe@1} + end. + +-spec cos(float()) -> float(). +cos(X) -> + math:cos(X). + +-spec cosh(float()) -> float(). +cosh(X) -> + math:cosh(X). + +-spec sin(float()) -> float(). +sin(X) -> + math:sin(X). + +-spec sinh(float()) -> float(). +sinh(X) -> + math:sinh(X). + +-spec tan(float()) -> float(). +tan(X) -> + math:tan(X). + +-spec tanh(float()) -> float(). +tanh(X) -> + math:tanh(X). + +-spec exponential(float()) -> float(). +exponential(X) -> + math:exp(X). + +-spec natural_logarithm(float()) -> {ok, float()} | {error, binary()}. +natural_logarithm(X) -> + case X > +0.0 of + true -> + _pipe = math:log(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm_2(float()) -> {ok, float()} | {error, binary()}. +logarithm_2(X) -> + case X > +0.0 of + true -> + _pipe = math:log2(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm_10(float()) -> {ok, float()} | {error, binary()}. +logarithm_10(X) -> + case X > +0.0 of + true -> + _pipe = math:log10(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm(float(), gleam@option:option(float())) -> {ok, float()} | + {error, binary()}. +logarithm(X, Base) -> + case X > +0.0 of + true -> + case Base of + {some, A} -> + case (A > +0.0) andalso (A /= 1.0) of + true -> + _assert_subject = logarithm_10(X), + {ok, Numerator} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"logarithm"/utf8>>, + line => 820}) + end, + _assert_subject@1 = logarithm_10(A), + {ok, Denominator} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"logarithm"/utf8>>, + line => 821}) + end, + _pipe = case Denominator of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> Numerator / Gleam@denominator + end, + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, + {error, _pipe@1} + end; + + _ -> + _pipe@2 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, + {error, _pipe@2} + end; + + _ -> + _pipe@3 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@3} + end. + +-spec power(float(), float()) -> {ok, float()} | {error, binary()}. +power(X, Y) -> + Fractional = (math:ceil(Y) - Y) > +0.0, + case ((X < +0.0) andalso Fractional) orelse ((X =:= +0.0) andalso (Y < +0.0)) of + true -> + _pipe = <<"Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0."/utf8>>, + {error, _pipe}; + + false -> + _pipe@1 = math:pow(X, Y), + {ok, _pipe@1} + end. + +-spec square_root(float()) -> {ok, float()} | {error, binary()}. +square_root(X) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0."/utf8>>, + {error, _pipe}; + + false -> + _assert_subject = power(X, 1.0 / 2.0), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"square_root"/utf8>>, + line => 1066}) + end, + _pipe@1 = Result, + {ok, _pipe@1} + end. + +-spec cube_root(float()) -> {ok, float()} | {error, binary()}. +cube_root(X) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0."/utf8>>, + {error, _pipe}; + + false -> + _assert_subject = power(X, 1.0 / 3.0), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"cube_root"/utf8>>, + line => 1118}) + end, + _pipe@1 = Result, + {ok, _pipe@1} + end. + +-spec nth_root(float(), integer()) -> {ok, float()} | {error, binary()}. +nth_root(X, N) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0. Valid input is x > 0"/utf8>>, + {error, _pipe}; + + false -> + case N >= 1 of + true -> + _assert_subject = power(X, case gleam@int:to_float(N) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"nth_root"/utf8>>, + line => 1175}) + end, + _pipe@1 = Result, + {ok, _pipe@1}; + + false -> + _pipe@2 = <<"Invalid input argument: n < 1. Valid input is n >= 2."/utf8>>, + {error, _pipe@2} + end + end. + +-spec pi() -> float(). +pi() -> + math:pi(). + +-spec tau() -> float(). +tau() -> + 2.0 * pi(). + +-spec e() -> float(). +e() -> + exponential(1.0). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache new file mode 100644 index 0000000..fc137ef Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta new file mode 100644 index 0000000..ad6a7f1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl new file mode 100644 index 0000000..9b0c432 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl @@ -0,0 +1,281 @@ +-module(gleam_community@maths@metrics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([norm/2, minkowski_distance/3, manhatten_distance/2, euclidean_distance/2, mean/1, median/1, variance/2, standard_deviation/2]). + +-spec norm(list(float()), float()) -> float(). +norm(Arr, P) -> + case Arr of + [] -> + +0.0; + + _ -> + Agg = begin + _pipe = Arr, + gleam@list:fold( + _pipe, + +0.0, + fun(Acc, A) -> + _assert_subject = gleam_community@maths@elementary:power( + gleam_community@maths@piecewise:float_absolute_value( + A + ), + P + ), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"norm"/utf8>>, + line => 101}) + end, + Result + Acc + end + ) + end, + _assert_subject@1 = gleam_community@maths@elementary:power( + Agg, + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end + ), + {ok, Result@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"norm"/utf8>>, + line => 106}) + end, + Result@1 + end. + +-spec minkowski_distance(list(float()), list(float()), float()) -> {ok, float()} | + {error, binary()}. +minkowski_distance(Xarr, Yarr, P) -> + Xlen = gleam@list:length(Xarr), + Ylen = gleam@list:length(Yarr), + case Xlen =:= Ylen of + false -> + _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, + {error, _pipe}; + + true -> + case P < 1.0 of + true -> + _pipe@1 = <<"Invalid input argument: p < 1. Valid input is p >= 1."/utf8>>, + {error, _pipe@1}; + + false -> + _pipe@2 = gleam@list:zip(Xarr, Yarr), + _pipe@3 = gleam@list:map( + _pipe@2, + fun(Tuple) -> + gleam@pair:first(Tuple) - gleam@pair:second(Tuple) + end + ), + _pipe@4 = norm(_pipe@3, P), + {ok, _pipe@4} + end + end. + +-spec manhatten_distance(list(float()), list(float())) -> {ok, float()} | + {error, binary()}. +manhatten_distance(Xarr, Yarr) -> + minkowski_distance(Xarr, Yarr, 1.0). + +-spec euclidean_distance(list(float()), list(float())) -> {ok, float()} | + {error, binary()}. +euclidean_distance(Xarr, Yarr) -> + minkowski_distance(Xarr, Yarr, 2.0). + +-spec mean(list(float())) -> {ok, float()} | {error, binary()}. +mean(Arr) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _pipe@1 = Arr, + _pipe@2 = gleam_community@maths@arithmetics:float_sum(_pipe@1), + _pipe@3 = (fun(A) -> + case gleam_community@maths@conversion:int_to_float( + gleam@list:length(Arr) + ) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> A / Gleam@denominator + end + end)(_pipe@2), + {ok, _pipe@3} + end. + +-spec median(list(float())) -> {ok, float()} | {error, binary()}. +median(Arr) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + Count = gleam@list:length(Arr), + Mid = gleam@list:length(Arr) div 2, + Sorted = gleam@list:sort(Arr, fun gleam@float:compare/2), + case gleam_community@maths@predicates:is_odd(Count) of + true -> + _assert_subject = gleam@list:at(Sorted, Mid), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 402}) + end, + _pipe@1 = Val0, + {ok, _pipe@1}; + + false -> + _assert_subject@1 = gleam@list:at(Sorted, Mid - 1), + {ok, Val0@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 409}) + end, + _assert_subject@2 = gleam@list:at(Sorted, Mid), + {ok, Val1} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 410}) + end, + _pipe@2 = [Val0@1, Val1], + mean(_pipe@2) + end + end. + +-spec variance(list(float()), integer()) -> {ok, float()} | {error, binary()}. +variance(Arr, Ddof) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + case Ddof < 0 of + true -> + _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, + {error, _pipe@1}; + + false -> + _assert_subject = mean(Arr), + {ok, Mean} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"variance"/utf8>>, + line => 475}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:map( + _pipe@2, + fun(A) -> + _assert_subject@1 = gleam_community@maths@elementary:power( + A - Mean, + 2.0 + ), + {ok, Result} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"variance"/utf8>>, + line => 478}) + end, + Result + end + ), + _pipe@4 = gleam_community@maths@arithmetics:float_sum( + _pipe@3 + ), + _pipe@5 = (fun(A@1) -> + case (gleam_community@maths@conversion:int_to_float( + gleam@list:length(Arr) + ) + - gleam_community@maths@conversion:int_to_float(Ddof)) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> A@1 / Gleam@denominator + end + end)(_pipe@4), + {ok, _pipe@5} + end + end. + +-spec standard_deviation(list(float()), integer()) -> {ok, float()} | + {error, binary()}. +standard_deviation(Arr, Ddof) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + case Ddof < 0 of + true -> + _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, + {error, _pipe@1}; + + false -> + _assert_subject = variance(Arr, Ddof), + {ok, Variance} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"standard_deviation"/utf8>>, + line => 551}) + end, + _assert_subject@1 = gleam_community@maths@elementary:square_root( + Variance + ), + {ok, Stdev} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"standard_deviation"/utf8>>, + line => 554}) + end, + _pipe@2 = Stdev, + {ok, _pipe@2} + end + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache new file mode 100644 index 0000000..e056dbf Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta new file mode 100644 index 0000000..21c97d4 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl new file mode 100644 index 0000000..85fc290 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl @@ -0,0 +1,563 @@ +-module(gleam_community@maths@piecewise). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([float_absolute_value/1, int_absolute_value/1, float_absolute_difference/2, int_absolute_difference/2, float_sign/1, round/3, ceiling/2, floor/2, truncate/2, int_sign/1, float_flip_sign/1, float_copy_sign/2, int_flip_sign/1, int_copy_sign/2, minimum/3, maximum/3, minmax/3, list_minimum/2, list_maximum/2, arg_minimum/2, arg_maximum/2, extrema/2]). +-export_type([rounding_mode/0]). + +-type rounding_mode() :: round_nearest | + round_ties_away | + round_ties_up | + round_to_zero | + round_down | + round_up. + +-spec truncate_float(float()) -> float(). +truncate_float(X) -> + erlang:trunc(X). + +-spec round_to_zero(float(), float()) -> float(). +round_to_zero(P, X) -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> truncate_float(X * P) / Gleam@denominator + end. + +-spec round_down(float(), float()) -> float(). +round_down(P, X) -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> math:floor(X * P) / Gleam@denominator + end. + +-spec round_up(float(), float()) -> float(). +round_up(P, X) -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> math:ceil(X * P) / Gleam@denominator + end. + +-spec float_absolute_value(float()) -> float(). +float_absolute_value(X) -> + case X > +0.0 of + true -> + X; + + false -> + -1.0 * X + end. + +-spec int_absolute_value(integer()) -> integer(). +int_absolute_value(X) -> + case X > 0 of + true -> + X; + + false -> + -1 * X + end. + +-spec float_absolute_difference(float(), float()) -> float(). +float_absolute_difference(A, B) -> + _pipe = A - B, + float_absolute_value(_pipe). + +-spec int_absolute_difference(integer(), integer()) -> integer(). +int_absolute_difference(A, B) -> + _pipe = A - B, + int_absolute_value(_pipe). + +-spec do_float_sign(float()) -> float(). +do_float_sign(X) -> + case X < +0.0 of + true -> + -1.0; + + false -> + case X =:= +0.0 of + true -> + +0.0; + + false -> + 1.0 + end + end. + +-spec float_sign(float()) -> float(). +float_sign(X) -> + do_float_sign(X). + +-spec round_to_nearest(float(), float()) -> float(). +round_to_nearest(P, X) -> + Xabs = float_absolute_value(X) * P, + Xabs_truncated = truncate_float(Xabs), + Remainder = Xabs - Xabs_truncated, + case Remainder of + _ when Remainder > 0.5 -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) + / Gleam@denominator + end; + + _ when Remainder =:= 0.5 -> + _assert_subject = gleam@int:modulo( + gleam_community@maths@conversion:float_to_int(Xabs), + 2 + ), + {ok, Is_even} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"round_to_nearest"/utf8>>, + line => 423}) + end, + case Is_even =:= 0 of + true -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> float_sign(X) * Xabs_truncated / Gleam@denominator@1 + end; + + false -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@2 -> float_sign(X) * truncate_float( + Xabs + 1.0 + ) + / Gleam@denominator@2 + end + end; + + _ -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@3 -> float_sign(X) * Xabs_truncated / Gleam@denominator@3 + end + end. + +-spec round_ties_away(float(), float()) -> float(). +round_ties_away(P, X) -> + Xabs = float_absolute_value(X) * P, + Remainder = Xabs - truncate_float(Xabs), + case Remainder of + _ when Remainder >= 0.5 -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) + / Gleam@denominator + end; + + _ -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> float_sign(X) * truncate_float(Xabs) / Gleam@denominator@1 + end + end. + +-spec round_ties_up(float(), float()) -> float(). +round_ties_up(P, X) -> + Xabs = float_absolute_value(X) * P, + Xabs_truncated = truncate_float(Xabs), + Remainder = Xabs - Xabs_truncated, + case Remainder of + _ when (Remainder >= 0.5) andalso (X >= +0.0) -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) + / Gleam@denominator + end; + + _ -> + case P of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> float_sign(X) * Xabs_truncated / Gleam@denominator@1 + end + end. + +-spec do_round(float(), float(), gleam@option:option(rounding_mode())) -> {ok, + float()} | + {error, binary()}. +do_round(P, X, Mode) -> + case Mode of + {some, round_nearest} -> + _pipe = round_to_nearest(P, X), + {ok, _pipe}; + + {some, round_ties_away} -> + _pipe@1 = round_ties_away(P, X), + {ok, _pipe@1}; + + {some, round_ties_up} -> + _pipe@2 = round_ties_up(P, X), + {ok, _pipe@2}; + + {some, round_to_zero} -> + _pipe@3 = round_to_zero(P, X), + {ok, _pipe@3}; + + {some, round_down} -> + _pipe@4 = round_down(P, X), + {ok, _pipe@4}; + + {some, round_up} -> + _pipe@5 = round_up(P, X), + {ok, _pipe@5}; + + none -> + _pipe@6 = round_to_nearest(P, X), + {ok, _pipe@6} + end. + +-spec round( + float(), + gleam@option:option(integer()), + gleam@option:option(rounding_mode()) +) -> {ok, float()} | {error, binary()}. +round(X, Digits, Mode) -> + case Digits of + {some, A} -> + _assert_subject = gleam_community@maths@elementary:power( + 10.0, + gleam_community@maths@conversion:int_to_float(A) + ), + {ok, P} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"round"/utf8>>, + line => 366}) + end, + do_round(P, X, Mode); + + none -> + do_round(1.0, X, Mode) + end. + +-spec ceiling(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +ceiling(X, Digits) -> + round(X, Digits, {some, round_up}). + +-spec floor(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +floor(X, Digits) -> + round(X, Digits, {some, round_down}). + +-spec truncate(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +truncate(X, Digits) -> + round(X, Digits, {some, round_to_zero}). + +-spec do_int_sign(integer()) -> integer(). +do_int_sign(X) -> + case X < 0 of + true -> + -1; + + false -> + case X =:= 0 of + true -> + 0; + + false -> + 1 + end + end. + +-spec int_sign(integer()) -> integer(). +int_sign(X) -> + do_int_sign(X). + +-spec float_flip_sign(float()) -> float(). +float_flip_sign(X) -> + -1.0 * X. + +-spec float_copy_sign(float(), float()) -> float(). +float_copy_sign(X, Y) -> + case float_sign(X) =:= float_sign(Y) of + true -> + X; + + false -> + float_flip_sign(X) + end. + +-spec int_flip_sign(integer()) -> integer(). +int_flip_sign(X) -> + -1 * X. + +-spec int_copy_sign(integer(), integer()) -> integer(). +int_copy_sign(X, Y) -> + case int_sign(X) =:= int_sign(Y) of + true -> + X; + + false -> + int_flip_sign(X) + end. + +-spec minimum(PCO, PCO, fun((PCO, PCO) -> gleam@order:order())) -> PCO. +minimum(X, Y, Compare) -> + case Compare(X, Y) of + lt -> + X; + + eq -> + X; + + gt -> + Y + end. + +-spec maximum(PCP, PCP, fun((PCP, PCP) -> gleam@order:order())) -> PCP. +maximum(X, Y, Compare) -> + case Compare(X, Y) of + lt -> + Y; + + eq -> + Y; + + gt -> + X + end. + +-spec minmax(PCQ, PCQ, fun((PCQ, PCQ) -> gleam@order:order())) -> {PCQ, PCQ}. +minmax(X, Y, Compare) -> + {minimum(X, Y, Compare), maximum(X, Y, Compare)}. + +-spec list_minimum(list(PCR), fun((PCR, PCR) -> gleam@order:order())) -> {ok, + PCR} | + {error, binary()}. +list_minimum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"list_minimum"/utf8>>, + line => 945}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + Val0, + fun(Acc, Element) -> case Compare(Element, Acc) of + lt -> + Element; + + _ -> + Acc + end end + ), + {ok, _pipe@2} + end. + +-spec list_maximum(list(PCV), fun((PCV, PCV) -> gleam@order:order())) -> {ok, + PCV} | + {error, binary()}. +list_maximum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"list_maximum"/utf8>>, + line => 1004}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + Val0, + fun(Acc, Element) -> case Compare(Acc, Element) of + lt -> + Element; + + _ -> + Acc + end end + ), + {ok, _pipe@2} + end. + +-spec arg_minimum(list(PCZ), fun((PCZ, PCZ) -> gleam@order:order())) -> {ok, + list(integer())} | + {error, binary()}. +arg_minimum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = begin + _pipe@1 = Arr, + list_minimum(_pipe@1, Compare) + end, + {ok, Min} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"arg_minimum"/utf8>>, + line => 1069}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:index_map( + _pipe@2, + fun(Index, Element) -> case Compare(Element, Min) of + eq -> + Index; + + _ -> + -1 + end end + ), + _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of + -1 -> + false; + + _ -> + true + end end), + {ok, _pipe@4} + end. + +-spec arg_maximum(list(PDE), fun((PDE, PDE) -> gleam@order:order())) -> {ok, + list(integer())} | + {error, binary()}. +arg_maximum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = begin + _pipe@1 = Arr, + list_maximum(_pipe@1, Compare) + end, + {ok, Max} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"arg_maximum"/utf8>>, + line => 1139}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:index_map( + _pipe@2, + fun(Index, Element) -> case Compare(Element, Max) of + eq -> + Index; + + _ -> + -1 + end end + ), + _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of + -1 -> + false; + + _ -> + true + end end), + {ok, _pipe@4} + end. + +-spec extrema(list(PDJ), fun((PDJ, PDJ) -> gleam@order:order())) -> {ok, + {PDJ, PDJ}} | + {error, binary()}. +extrema(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val_max} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"extrema"/utf8>>, + line => 1209}) + end, + _assert_subject@1 = gleam@list:at(Arr, 0), + {ok, Val_min} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"extrema"/utf8>>, + line => 1210}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + {Val_min, Val_max}, + fun(Acc, Element) -> + First = gleam@pair:first(Acc), + Second = gleam@pair:second(Acc), + case {Compare(Element, First), Compare(Second, Element)} of + {lt, lt} -> + {Element, Element}; + + {lt, _} -> + {Element, Second}; + + {_, lt} -> + {First, Element}; + + {_, _} -> + {First, Second} + end + end + ), + {ok, _pipe@2} + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache new file mode 100644 index 0000000..e9d8d6b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta new file mode 100644 index 0000000..549041c Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl new file mode 100644 index 0000000..d991d89 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl @@ -0,0 +1,118 @@ +-module(gleam_community@maths@predicates). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_close/4, all_close/4, is_fractional/1, is_power/2, is_perfect/1, is_even/1, is_odd/1]). + +-spec float_absolute_value(float()) -> float(). +float_absolute_value(X) -> + case X > +0.0 of + true -> + X; + + false -> + -1.0 * X + end. + +-spec float_absolute_difference(float(), float()) -> float(). +float_absolute_difference(A, B) -> + _pipe = A - B, + float_absolute_value(_pipe). + +-spec is_close(float(), float(), float(), float()) -> boolean(). +is_close(A, B, Rtol, Atol) -> + X = float_absolute_difference(A, B), + Y = Atol + (Rtol * float_absolute_value(B)), + case X =< Y of + true -> + true; + + false -> + false + end. + +-spec all_close(list(float()), list(float()), float(), float()) -> {ok, + list(boolean())} | + {error, binary()}. +all_close(Xarr, Yarr, Rtol, Atol) -> + Xlen = gleam@list:length(Xarr), + Ylen = gleam@list:length(Yarr), + case Xlen =:= Ylen of + false -> + _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, + {error, _pipe}; + + true -> + _pipe@1 = gleam@list:zip(Xarr, Yarr), + _pipe@2 = gleam@list:map( + _pipe@1, + fun(Z) -> + is_close( + gleam@pair:first(Z), + gleam@pair:second(Z), + Rtol, + Atol + ) + end + ), + {ok, _pipe@2} + end. + +-spec is_fractional(float()) -> boolean(). +is_fractional(X) -> + (math:ceil(X) - X) > +0.0. + +-spec is_power(integer(), integer()) -> boolean(). +is_power(X, Y) -> + _assert_subject = gleam_community@maths@elementary:logarithm( + gleam@int:to_float(X), + {some, gleam@int:to_float(Y)} + ), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/predicates"/utf8>>, + function => <<"is_power"/utf8>>, + line => 241}) + end, + _assert_subject@1 = gleam_community@maths@piecewise:truncate( + Value, + {some, 0} + ), + {ok, Truncated} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/predicates"/utf8>>, + function => <<"is_power"/utf8>>, + line => 243}) + end, + Rem = Value - Truncated, + Rem =:= +0.0. + +-spec do_sum(list(integer())) -> integer(). +do_sum(Arr) -> + case Arr of + [] -> + 0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec is_perfect(integer()) -> boolean(). +is_perfect(N) -> + do_sum(gleam_community@maths@arithmetics:proper_divisors(N)) =:= N. + +-spec is_even(integer()) -> boolean(). +is_even(X) -> + (X rem 2) =:= 0. + +-spec is_odd(integer()) -> boolean(). +is_odd(X) -> + (X rem 2) /= 0. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache new file mode 100644 index 0000000..5542bd9 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta new file mode 100644 index 0000000..3a025a2 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl new file mode 100644 index 0000000..a080286 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl @@ -0,0 +1,202 @@ +-module(gleam_community@maths@sequences). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([arange/3, linear_space/4, logarithmic_space/5, geometric_space/4]). + +-spec arange(float(), float(), float()) -> list(float()). +arange(Start, Stop, Step) -> + case ((Start >= Stop) andalso (Step > +0.0)) orelse ((Start =< Stop) andalso (Step + < +0.0)) of + true -> + []; + + false -> + Direction = case Start =< Stop of + true -> + 1.0; + + false -> + -1.0 + end, + Step_abs = gleam_community@maths@piecewise:float_absolute_value( + Step + ), + Num = case Step_abs of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator + end, + _pipe = gleam@list:range( + 0, + gleam_community@maths@conversion:float_to_int(Num) - 1 + ), + gleam@list:map( + _pipe, + fun(I) -> + Start + ((gleam_community@maths@conversion:int_to_float(I) * Step_abs) + * Direction) + end + ) + end. + +-spec linear_space(float(), float(), integer(), boolean()) -> {ok, + list(float())} | + {error, binary()}. +linear_space(Start, Stop, Num, Endpoint) -> + Direction = case Start =< Stop of + true -> + 1.0; + + false -> + -1.0 + end, + case Num > 0 of + true -> + case Endpoint of + true -> + Increment = case gleam_community@maths@conversion:int_to_float( + Num - 1 + ) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator + end, + _pipe = gleam@list:range(0, Num - 1), + _pipe@1 = gleam@list:map( + _pipe, + fun(I) -> + Start + ((gleam_community@maths@conversion:int_to_float( + I + ) + * Increment) + * Direction) + end + ), + {ok, _pipe@1}; + + false -> + Increment@1 = case gleam_community@maths@conversion:int_to_float( + Num + ) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator@1 + end, + _pipe@2 = gleam@list:range(0, Num - 1), + _pipe@3 = gleam@list:map( + _pipe@2, + fun(I@1) -> + Start + ((gleam_community@maths@conversion:int_to_float( + I@1 + ) + * Increment@1) + * Direction) + end + ), + {ok, _pipe@3} + end; + + false -> + _pipe@4 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@4} + end. + +-spec logarithmic_space(float(), float(), integer(), boolean(), float()) -> {ok, + list(float())} | + {error, binary()}. +logarithmic_space(Start, Stop, Num, Endpoint, Base) -> + case Num > 0 of + true -> + _assert_subject = linear_space(Start, Stop, Num, Endpoint), + {ok, Linspace} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"logarithmic_space"/utf8>>, + line => 221}) + end, + _pipe = Linspace, + _pipe@1 = gleam@list:map( + _pipe, + fun(I) -> + _assert_subject@1 = gleam_community@maths@elementary:power( + Base, + I + ), + {ok, Result} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"logarithmic_space"/utf8>>, + line => 224}) + end, + Result + end + ), + {ok, _pipe@1}; + + false -> + _pipe@2 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@2} + end. + +-spec geometric_space(float(), float(), integer(), boolean()) -> {ok, + list(float())} | + {error, binary()}. +geometric_space(Start, Stop, Num, Endpoint) -> + case (Start =:= +0.0) orelse (Stop =:= +0.0) of + true -> + _pipe = <<""/utf8>>, + {error, _pipe}; + + false -> + case Num > 0 of + true -> + _assert_subject = gleam_community@maths@elementary:logarithm_10( + Start + ), + {ok, Log_start} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"geometric_space"/utf8>>, + line => 293}) + end, + _assert_subject@1 = gleam_community@maths@elementary:logarithm_10( + Stop + ), + {ok, Log_stop} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"geometric_space"/utf8>>, + line => 294}) + end, + logarithmic_space(Log_start, Log_stop, Num, Endpoint, 10.0); + + false -> + _pipe@1 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@1} + end + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache new file mode 100644 index 0000000..7093e86 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta new file mode 100644 index 0000000..3c21994 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl new file mode 100644 index 0000000..ff0307f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl @@ -0,0 +1,163 @@ +-module(gleam_community@maths@special). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([erf/1, gamma/1, beta/2, incomplete_gamma/2]). + +-spec erf(float()) -> float(). +erf(X) -> + _assert_subject = [0.254829592, + -0.284496736, + 1.421413741, + -1.453152027, + 1.061405429], + [A1, A2, A3, A4, A5] = case _assert_subject of + [_, _, _, _, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"erf"/utf8>>, + line => 79}) + end, + P = 0.3275911, + Sign = gleam_community@maths@piecewise:float_sign(X), + X@1 = gleam_community@maths@piecewise:float_absolute_value(X), + T = case (1.0 + (P * X@1)) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end, + Y = 1.0 - ((((((((((A5 * T) + A4) * T) + A3) * T) + A2) * T) + A1) * T) * gleam_community@maths@elementary:exponential( + (-1.0 * X@1) * X@1 + )), + Sign * Y. + +-spec gamma_lanczos(float()) -> float(). +gamma_lanczos(X) -> + case X < 0.5 of + true -> + case (gleam_community@maths@elementary:sin( + gleam_community@maths@elementary:pi() * X + ) + * gamma_lanczos(1.0 - X)) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> gleam_community@maths@elementary:pi() / Gleam@denominator + end; + + false -> + Z = X - 1.0, + X@1 = gleam@list:index_fold( + [0.99999999999980993, + 676.5203681218851, + -1259.1392167224028, + 771.32342877765313, + -176.61502916214059, + 12.507343278686905, + -0.13857109526572012, + 0.0000099843695780195716, + 0.00000015056327351493116], + +0.0, + fun(Acc, V, Index) -> case Index > 0 of + true -> + Acc + (case (Z + gleam_community@maths@conversion:int_to_float( + Index + )) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator@1 -> V / Gleam@denominator@1 + end); + + false -> + V + end end + ), + T = (Z + 7.0) + 0.5, + _assert_subject = gleam_community@maths@elementary:power( + 2.0 * gleam_community@maths@elementary:pi(), + 0.5 + ), + {ok, V1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"gamma_lanczos"/utf8>>, + line => 146}) + end, + _assert_subject@1 = gleam_community@maths@elementary:power( + T, + Z + 0.5 + ), + {ok, V2} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"gamma_lanczos"/utf8>>, + line => 147}) + end, + ((V1 * V2) * gleam_community@maths@elementary:exponential(-1.0 * T)) + * X@1 + end. + +-spec gamma(float()) -> float(). +gamma(X) -> + gamma_lanczos(X). + +-spec beta(float(), float()) -> float(). +beta(X, Y) -> + case gamma(X + Y) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> gamma(X) * gamma(Y) / Gleam@denominator + end. + +-spec incomplete_gamma_sum(float(), float(), float(), float(), float()) -> float(). +incomplete_gamma_sum(A, X, T, S, N) -> + case T of + +0.0 -> + S; + + _ -> + Ns = S + T, + Nt = T * (case (A + N) of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> X / Gleam@denominator + end), + incomplete_gamma_sum(A, X, Nt, Ns, N + 1.0) + end. + +-spec incomplete_gamma(float(), float()) -> {ok, float()} | {error, binary()}. +incomplete_gamma(A, X) -> + case (A > +0.0) andalso (X >= +0.0) of + true -> + _assert_subject = gleam_community@maths@elementary:power(X, A), + {ok, V} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"incomplete_gamma"/utf8>>, + line => 173}) + end, + _pipe = (V * gleam_community@maths@elementary:exponential(-1.0 * X)) + * incomplete_gamma_sum(A, X, case A of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end, +0.0, 1.0), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0."/utf8>>, + {error, _pipe@1} + end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs new file mode 100644 index 0000000..5c5ab31 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs @@ -0,0 +1,95 @@ +export function sin(float) { + return Math.sin(float) +} + +export function pi() { + return Math.PI +} + +export function acos(float) { + return Math.acos(float) +} + +export function acosh(float) { + return Math.acosh(float) +} + +export function asin(float) { + return Math.asin(float) +} + +export function asinh(float) { + return Math.asinh(float) +} + +export function atan(float) { + return Math.atan(float) +} + +export function tan(float) { + return Math.tan(float) +} + +export function atan2(floaty, floatx) { + return Math.atan2(floaty, floatx) +} + +export function atanh(float) { + return Math.atanh(float) +} + +export function cos(float) { + return Math.cos(float) +} + +export function cosh(float) { + return Math.cosh(float) +} + +export function exponential(float) { + return Math.exp(float) +} + +export function ceiling(float) { + return Math.ceil(float) +} + +export function floor(float) { + return Math.floor(float) +} + +export function power(base, exponent) { + return Math.pow(base, exponent) +} + +export function logarithm(float) { + return Math.log(float) +} + +export function logarithm_10(float) { + return Math.log10(float) +} + +export function logarithm_2(float) { + return Math.log2(float) +} + +export function sinh(float) { + return Math.sinh(float) +} + +export function tanh(float) { + return Math.tanh(float) +} + +export function sign(float) { + return Math.sign(float) +} + +export function truncate(float) { + return Math.trunc(float) +} + +export function to_int(float) { + return Math.trunc(float) +} diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam new file mode 100644 index 0000000..42d317f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam new file mode 100644 index 0000000..5b0dcc5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam new file mode 100644 index 0000000..8e6afb8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam new file mode 100644 index 0000000..a54c3a0 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam new file mode 100644 index 0000000..f55fdc0 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam new file mode 100644 index 0000000..ca3947b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam new file mode 100644 index 0000000..8a5ecf4 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam new file mode 100644 index 0000000..d9defae Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam new file mode 100644 index 0000000..edfa64a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app new file mode 100644 index 0000000..b24eaf7 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app @@ -0,0 +1,7 @@ +{application, gleam_community_maths, [ + {vsn, "1.0.1"}, + {applications, [gleam_stdlib]}, + {description, "A basic maths library"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache new file mode 100644 index 0000000..d44adcc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta new file mode 100644 index 0000000..12933b2 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl new file mode 100644 index 0000000..2889892 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl @@ -0,0 +1,90 @@ +-module(gleam@erlang). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([format/1, term_to_binary/1, get_line/1, system_time/1, erlang_timestamp/0, rescue/1, binary_to_term/1, unsafe_binary_to_term/1, start_arguments/0, ensure_all_started/1, make_reference/0, priv_directory/1]). +-export_type([safe/0, get_line_error/0, time_unit/0, crash/0, ensure_all_started_error/0, reference_/0]). + +-type safe() :: safe. + +-type get_line_error() :: eof | no_data. + +-type time_unit() :: second | millisecond | microsecond | nanosecond. + +-type crash() :: {exited, gleam@dynamic:dynamic_()} | + {thrown, gleam@dynamic:dynamic_()} | + {errored, gleam@dynamic:dynamic_()}. + +-type ensure_all_started_error() :: {unknown_application, + gleam@erlang@atom:atom_()} | + {application_failed_to_start, + gleam@erlang@atom:atom_(), + gleam@dynamic:dynamic_()}. + +-type reference_() :: any(). + +-spec format(any()) -> binary(). +format(Term) -> + unicode:characters_to_binary(io_lib:format(<<"~p"/utf8>>, [Term])). + +-spec term_to_binary(any()) -> bitstring(). +term_to_binary(A) -> + erlang:term_to_binary(A). + +-spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. +get_line(Prompt) -> + gleam_erlang_ffi:get_line(Prompt). + +-spec system_time(time_unit()) -> integer(). +system_time(A) -> + os:system_time(A). + +-spec erlang_timestamp() -> {integer(), integer(), integer()}. +erlang_timestamp() -> + os:timestamp(). + +-spec rescue(fun(() -> GQE)) -> {ok, GQE} | {error, crash()}. +rescue(A) -> + gleam_erlang_ffi:rescue(A). + +-spec binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | + {error, nil}. +binary_to_term(Binary) -> + case gleam_erlang_ffi:rescue( + fun() -> erlang:binary_to_term(Binary, [safe]) end + ) of + {ok, Term} -> + {ok, Term}; + + {error, _} -> + {error, nil} + end. + +-spec unsafe_binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | + {error, nil}. +unsafe_binary_to_term(Binary) -> + case gleam_erlang_ffi:rescue(fun() -> erlang:binary_to_term(Binary, []) end) of + {ok, Term} -> + {ok, Term}; + + {error, _} -> + {error, nil} + end. + +-spec start_arguments() -> list(binary()). +start_arguments() -> + _pipe = init:get_plain_arguments(), + gleam@list:map(_pipe, fun unicode:characters_to_binary/1). + +-spec ensure_all_started(gleam@erlang@atom:atom_()) -> {ok, + list(gleam@erlang@atom:atom_())} | + {error, ensure_all_started_error()}. +ensure_all_started(Application) -> + gleam_erlang_ffi:ensure_all_started(Application). + +-spec make_reference() -> reference_(). +make_reference() -> + erlang:make_ref(). + +-spec priv_directory(binary()) -> {ok, binary()} | {error, nil}. +priv_directory(Name) -> + gleam_erlang_ffi:priv_directory(Name). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache new file mode 100644 index 0000000..858e310 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta new file mode 100644 index 0000000..be33011 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl new file mode 100644 index 0000000..e9ad530 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl @@ -0,0 +1,26 @@ +-module(gleam@erlang@atom). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, create_from_string/1, to_string/1, from_dynamic/1]). +-export_type([atom_/0, from_string_error/0]). + +-type atom_() :: any(). + +-type from_string_error() :: atom_not_loaded. + +-spec from_string(binary()) -> {ok, atom_()} | {error, from_string_error()}. +from_string(A) -> + gleam_erlang_ffi:atom_from_string(A). + +-spec create_from_string(binary()) -> atom_(). +create_from_string(A) -> + erlang:binary_to_atom(A). + +-spec to_string(atom_()) -> binary(). +to_string(A) -> + erlang:atom_to_binary(A). + +-spec from_dynamic(gleam@dynamic:dynamic_()) -> {ok, atom_()} | + {error, list(gleam@dynamic:decode_error())}. +from_dynamic(From) -> + gleam_erlang_ffi:atom_from_dynamic(From). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache new file mode 100644 index 0000000..707598f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta new file mode 100644 index 0000000..82cfdb5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl new file mode 100644 index 0000000..9f9c0fa --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl @@ -0,0 +1,15 @@ +-module(gleam@erlang@charlist). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_string/1, from_string/1]). +-export_type([charlist/0]). + +-type charlist() :: any(). + +-spec to_string(charlist()) -> binary(). +to_string(A) -> + unicode:characters_to_binary(A). + +-spec from_string(binary()) -> charlist(). +from_string(A) -> + unicode:characters_to_list(A). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache new file mode 100644 index 0000000..3083885 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta new file mode 100644 index 0000000..1cb342b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl new file mode 100644 index 0000000..1fe6628 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl @@ -0,0 +1,190 @@ +-module(gleam@erlang@file). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([file_info/1, link_info/1, is_directory/1, is_regular/1, file_exists/1, link_exists/1, make_directory/1, list_directory/1, delete_directory/1, recursive_delete/1, read/1, read_bits/1, write/2, write_bits/2, append/2, append_bits/2, delete/1]). +-export_type([reason/0, file_type/0, access/0, file_info/0]). + +-type reason() :: eacces | + eagain | + ebadf | + ebadmsg | + ebusy | + edeadlk | + edeadlock | + edquot | + eexist | + efault | + efbig | + eftype | + eintr | + einval | + eio | + eisdir | + eloop | + emfile | + emlink | + emultihop | + enametoolong | + enfile | + enobufs | + enodev | + enolck | + enolink | + enoent | + enomem | + enospc | + enosr | + enostr | + enosys | + enotblk | + enotdir | + enotsup | + enxio | + eopnotsupp | + eoverflow | + eperm | + epipe | + erange | + erofs | + espipe | + esrch | + estale | + etxtbsy | + exdev | + not_utf8. + +-type file_type() :: device | directory | other | regular | symlink. + +-type access() :: no_access | read | read_write | write. + +-type file_info() :: {file_info, + integer(), + file_type(), + access(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer()}. + +-spec file_info(binary()) -> {ok, file_info()} | {error, reason()}. +file_info(A) -> + gleam_erlang_ffi:file_info(A). + +-spec link_info(binary()) -> {ok, file_info()} | {error, reason()}. +link_info(A) -> + gleam_erlang_ffi:link_info(A). + +-spec is_directory(binary()) -> {ok, boolean()} | {error, reason()}. +is_directory(Path) -> + gleam@result:map( + gleam_erlang_ffi:file_info(Path), + fun(_use0) -> + {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, + File_type =:= directory + end + ). + +-spec is_regular(binary()) -> {ok, boolean()} | {error, reason()}. +is_regular(Path) -> + gleam@result:map( + gleam_erlang_ffi:file_info(Path), + fun(_use0) -> + {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, + File_type =:= regular + end + ). + +-spec file_exists(binary()) -> {ok, boolean()} | {error, reason()}. +file_exists(Path) -> + Result = begin + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:file_info(_pipe), + gleam@result:replace(_pipe@1, true) + end, + case Result of + {error, enoent} -> + {ok, false}; + + _ -> + Result + end. + +-spec link_exists(binary()) -> {ok, boolean()} | {error, reason()}. +link_exists(Path) -> + Result = begin + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:link_info(_pipe), + gleam@result:replace(_pipe@1, true) + end, + case Result of + {error, enoent} -> + {ok, false}; + + _ -> + Result + end. + +-spec make_directory(binary()) -> {ok, nil} | {error, reason()}. +make_directory(A) -> + gleam_erlang_ffi:make_directory(A). + +-spec list_directory(binary()) -> {ok, list(binary())} | {error, reason()}. +list_directory(A) -> + gleam_erlang_ffi:list_directory(A). + +-spec delete_directory(binary()) -> {ok, nil} | {error, reason()}. +delete_directory(A) -> + gleam_erlang_ffi:delete_directory(A). + +-spec recursive_delete(binary()) -> {ok, nil} | {error, reason()}. +recursive_delete(A) -> + gleam_erlang_ffi:recursive_delete(A). + +-spec read(binary()) -> {ok, binary()} | {error, reason()}. +read(Path) -> + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:read_file(_pipe), + gleam@result:then( + _pipe@1, + fun(Content) -> case gleam@bit_array:to_string(Content) of + {ok, String} -> + {ok, String}; + + {error, nil} -> + {error, not_utf8} + end end + ). + +-spec read_bits(binary()) -> {ok, bitstring()} | {error, reason()}. +read_bits(Path) -> + gleam_erlang_ffi:read_file(Path). + +-spec write(binary(), binary()) -> {ok, nil} | {error, reason()}. +write(Contents, Path) -> + _pipe = Contents, + _pipe@1 = gleam_stdlib:identity(_pipe), + gleam_erlang_ffi:write_file(_pipe@1, Path). + +-spec write_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. +write_bits(Contents, Path) -> + gleam_erlang_ffi:write_file(Contents, Path). + +-spec append(binary(), binary()) -> {ok, nil} | {error, reason()}. +append(Contents, Path) -> + _pipe = Contents, + _pipe@1 = gleam_stdlib:identity(_pipe), + gleam_erlang_ffi:append_file(_pipe@1, Path). + +-spec append_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. +append_bits(Contents, Path) -> + gleam_erlang_ffi:append_file(Contents, Path). + +-spec delete(binary()) -> {ok, nil} | {error, reason()}. +delete(A) -> + gleam_erlang_ffi:delete_file(A). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache new file mode 100644 index 0000000..6c2ad69 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta new file mode 100644 index 0000000..085886a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl new file mode 100644 index 0000000..f57d029 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl @@ -0,0 +1,33 @@ +-module(gleam@erlang@node). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([self/0, visible/0, connect/1, send/3, to_atom/1]). +-export_type([node_/0, do_not_leak/0, connect_error/0]). + +-type node_() :: any(). + +-type do_not_leak() :: any(). + +-type connect_error() :: failed_to_connect | local_node_is_not_alive. + +-spec self() -> node_(). +self() -> + erlang:node(). + +-spec visible() -> list(node_()). +visible() -> + erlang:nodes(). + +-spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} | + {error, connect_error()}. +connect(Node) -> + gleam_erlang_ffi:connect_node(Node). + +-spec send(node_(), gleam@erlang@atom:atom_(), any()) -> nil. +send(Node, Name, Message) -> + erlang:send({Name, Node}, Message), + nil. + +-spec to_atom(node_()) -> gleam@erlang@atom:atom_(). +to_atom(Node) -> + gleam_erlang_ffi:identity(Node). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache new file mode 100644 index 0000000..38dabf7 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta new file mode 100644 index 0000000..1d5fa83 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl new file mode 100644 index 0000000..c05e6c3 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl @@ -0,0 +1,27 @@ +-module(gleam@erlang@os). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_all_env/0, get_env/1, set_env/2, unset_env/1, family/0]). +-export_type([os_family/0]). + +-type os_family() :: windows_nt | linux | darwin | free_bsd | {other, binary()}. + +-spec get_all_env() -> gleam@dict:dict(binary(), binary()). +get_all_env() -> + gleam_erlang_ffi:get_all_env(). + +-spec get_env(binary()) -> {ok, binary()} | {error, nil}. +get_env(Name) -> + gleam_erlang_ffi:get_env(Name). + +-spec set_env(binary(), binary()) -> nil. +set_env(Name, Value) -> + gleam_erlang_ffi:set_env(Name, Value). + +-spec unset_env(binary()) -> nil. +unset_env(Name) -> + gleam_erlang_ffi:unset_env(Name). + +-spec family() -> os_family(). +family() -> + gleam_erlang_ffi:os_family(). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache new file mode 100644 index 0000000..57cc2e6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta new file mode 100644 index 0000000..ad9209c Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl new file mode 100644 index 0000000..abb7144 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl @@ -0,0 +1,374 @@ +-module(gleam@erlang@process). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([self/0, start/2, new_subject/0, subject_owner/1, send/2, new_selector/0, select/2, select_forever/1, map_selector/2, merge_selector/2, flush_messages/0, selecting_trapped_exits/2, selecting/3, 'receive'/2, selecting_record2/3, selecting_record3/3, selecting_record4/3, selecting_record5/3, selecting_record6/3, selecting_record7/3, selecting_record8/3, selecting_anything/2, sleep/1, sleep_forever/0, is_alive/1, monitor_process/1, selecting_process_down/3, demonitor_process/1, try_call/3, call/3, link/1, unlink/1, send_after/3, cancel_timer/1, kill/1, send_exit/1, send_abnormal_exit/2, trap_exits/1, register/2, unregister/1, named/1]). +-export_type([pid_/0, subject/1, do_not_leak/0, selector/1, exit_message/0, exit_reason/0, anything_selector_tag/0, process_monitor_flag/0, process_monitor/0, process_down/0, call_error/1, timer/0, cancelled/0, kill_flag/0]). + +-type pid_() :: any(). + +-opaque subject(GSA) :: {subject, pid_(), gleam@erlang:reference_()} | + {gleam_phantom, GSA}. + +-type do_not_leak() :: any(). + +-type selector(GSB) :: any() | {gleam_phantom, GSB}. + +-type exit_message() :: {exit_message, pid_(), exit_reason()}. + +-type exit_reason() :: normal | killed | {abnormal, binary()}. + +-type anything_selector_tag() :: anything. + +-type process_monitor_flag() :: process. + +-opaque process_monitor() :: {process_monitor, gleam@erlang:reference_()}. + +-type process_down() :: {process_down, pid_(), gleam@dynamic:dynamic_()}. + +-type call_error(GSC) :: {callee_down, gleam@dynamic:dynamic_()} | + call_timeout | + {gleam_phantom, GSC}. + +-type timer() :: any(). + +-type cancelled() :: timer_not_found | {cancelled, integer()}. + +-type kill_flag() :: kill. + +-spec self() -> pid_(). +self() -> + erlang:self(). + +-spec start(fun(() -> any()), boolean()) -> pid_(). +start(Implementation, Link) -> + case Link of + true -> + erlang:spawn_link(Implementation); + + false -> + erlang:spawn(Implementation) + end. + +-spec new_subject() -> subject(any()). +new_subject() -> + {subject, erlang:self(), erlang:make_ref()}. + +-spec subject_owner(subject(any())) -> pid_(). +subject_owner(Subject) -> + erlang:element(2, Subject). + +-spec send(subject(GSL), GSL) -> nil. +send(Subject, Message) -> + erlang:send( + erlang:element(2, Subject), + {erlang:element(3, Subject), Message} + ), + nil. + +-spec new_selector() -> selector(any()). +new_selector() -> + gleam_erlang_ffi:new_selector(). + +-spec select(selector(GST), integer()) -> {ok, GST} | {error, nil}. +select(From, Within) -> + gleam_erlang_ffi:select(From, Within). + +-spec select_forever(selector(GSX)) -> GSX. +select_forever(From) -> + gleam_erlang_ffi:select(From). + +-spec map_selector(selector(GSZ), fun((GSZ) -> GTB)) -> selector(GTB). +map_selector(A, B) -> + gleam_erlang_ffi:map_selector(A, B). + +-spec merge_selector(selector(GTD), selector(GTD)) -> selector(GTD). +merge_selector(A, B) -> + gleam_erlang_ffi:merge_selector(A, B). + +-spec flush_messages() -> nil. +flush_messages() -> + gleam_erlang_ffi:flush_messages(). + +-spec selecting_trapped_exits(selector(GTH), fun((exit_message()) -> GTH)) -> selector(GTH). +selecting_trapped_exits(Selector, Handler) -> + Tag = erlang:binary_to_atom(<<"EXIT"/utf8>>), + Handler@1 = fun(Message) -> + Reason = erlang:element(3, Message), + Normal = gleam@dynamic:from(normal), + Killed = gleam@dynamic:from(killed), + Reason@2 = case gleam@dynamic:string(Reason) of + _ when Reason =:= Normal -> + normal; + + _ when Reason =:= Killed -> + killed; + + {ok, Reason@1} -> + {abnormal, Reason@1}; + + {error, _} -> + {abnormal, gleam@string:inspect(Reason)} + end, + Handler({exit_message, erlang:element(2, Message), Reason@2}) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler@1). + +-spec selecting(selector(GTK), subject(GTM), fun((GTM) -> GTK)) -> selector(GTK). +selecting(Selector, Subject, Transform) -> + Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, + gleam_erlang_ffi:insert_selector_handler( + Selector, + {erlang:element(3, Subject), 2}, + Handler + ). + +-spec 'receive'(subject(GSN), integer()) -> {ok, GSN} | {error, nil}. +'receive'(Subject, Milliseconds) -> + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = selecting(_pipe, Subject, fun(X) -> X end), + gleam_erlang_ffi:select(_pipe@1, Milliseconds). + +-spec selecting_record2( + selector(GTP), + any(), + fun((gleam@dynamic:dynamic_()) -> GTP) +) -> selector(GTP). +selecting_record2(Selector, Tag, Transform) -> + Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 2}, Handler). + +-spec selecting_record3( + selector(GTT), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GTT) +) -> selector(GTT). +selecting_record3(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform(erlang:element(2, Message), erlang:element(3, Message)) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler). + +-spec selecting_record4( + selector(GTX), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GTX) +) -> selector(GTX). +selecting_record4(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 4}, Handler). + +-spec selecting_record5( + selector(GUB), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUB) +) -> selector(GUB). +selecting_record5(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 5}, Handler). + +-spec selecting_record6( + selector(GUF), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUF) +) -> selector(GUF). +selecting_record6(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 6}, Handler). + +-spec selecting_record7( + selector(GUJ), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUJ) +) -> selector(GUJ). +selecting_record7(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message), + erlang:element(7, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 7}, Handler). + +-spec selecting_record8( + selector(GUN), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUN) +) -> selector(GUN). +selecting_record8(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message), + erlang:element(7, Message), + erlang:element(8, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 8}, Handler). + +-spec selecting_anything(selector(GUR), fun((gleam@dynamic:dynamic_()) -> GUR)) -> selector(GUR). +selecting_anything(Selector, Handler) -> + gleam_erlang_ffi:insert_selector_handler(Selector, anything, Handler). + +-spec sleep(integer()) -> nil. +sleep(A) -> + gleam_erlang_ffi:sleep(A). + +-spec sleep_forever() -> nil. +sleep_forever() -> + gleam_erlang_ffi:sleep_forever(). + +-spec is_alive(pid_()) -> boolean(). +is_alive(A) -> + erlang:is_process_alive(A). + +-spec monitor_process(pid_()) -> process_monitor(). +monitor_process(Pid) -> + _pipe = process, + _pipe@1 = erlang:monitor(_pipe, Pid), + {process_monitor, _pipe@1}. + +-spec selecting_process_down( + selector(GUZ), + process_monitor(), + fun((process_down()) -> GUZ) +) -> selector(GUZ). +selecting_process_down(Selector, Monitor, Mapping) -> + gleam_erlang_ffi:insert_selector_handler( + Selector, + erlang:element(2, Monitor), + Mapping + ). + +-spec demonitor_process(process_monitor()) -> nil. +demonitor_process(Monitor) -> + gleam_erlang_ffi:demonitor(Monitor). + +-spec try_call(subject(GVC), fun((subject(GVE)) -> GVC), integer()) -> {ok, GVE} | + {error, call_error(GVE)}. +try_call(Subject, Make_request, Timeout) -> + Reply_subject = new_subject(), + Monitor = monitor_process(subject_owner(Subject)), + send(Subject, Make_request(Reply_subject)), + Result = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = selecting( + _pipe, + Reply_subject, + fun(Field@0) -> {ok, Field@0} end + ), + _pipe@2 = selecting_process_down( + _pipe@1, + Monitor, + fun(Down) -> {error, {callee_down, erlang:element(3, Down)}} end + ), + gleam_erlang_ffi:select(_pipe@2, Timeout) + end, + gleam_erlang_ffi:demonitor(Monitor), + case Result of + {error, nil} -> + {error, call_timeout}; + + {ok, Res} -> + Res + end. + +-spec call(subject(GVJ), fun((subject(GVL)) -> GVJ), integer()) -> GVL. +call(Subject, Make_request, Timeout) -> + _assert_subject = try_call(Subject, Make_request, Timeout), + {ok, Resp} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/erlang/process"/utf8>>, + function => <<"call"/utf8>>, + line => 593}) + end, + Resp. + +-spec link(pid_()) -> boolean(). +link(Pid) -> + gleam_erlang_ffi:link(Pid). + +-spec unlink(pid_()) -> nil. +unlink(Pid) -> + erlang:unlink(Pid), + nil. + +-spec send_after(subject(GVO), integer(), GVO) -> timer(). +send_after(Subject, Delay, Message) -> + erlang:send_after( + Delay, + erlang:element(2, Subject), + {erlang:element(3, Subject), Message} + ). + +-spec cancel_timer(timer()) -> cancelled(). +cancel_timer(Timer) -> + case gleam@dynamic:int(erlang:cancel_timer(Timer)) of + {ok, I} -> + {cancelled, I}; + + {error, _} -> + timer_not_found + end. + +-spec kill(pid_()) -> nil. +kill(Pid) -> + erlang:exit(Pid, kill), + nil. + +-spec send_exit(pid_()) -> nil. +send_exit(Pid) -> + erlang:exit(Pid, normal), + nil. + +-spec send_abnormal_exit(pid_(), binary()) -> nil. +send_abnormal_exit(Pid, Reason) -> + erlang:exit(Pid, {abnormal, Reason}), + nil. + +-spec trap_exits(boolean()) -> nil. +trap_exits(A) -> + gleam_erlang_ffi:trap_exits(A). + +-spec register(pid_(), gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. +register(Pid, Name) -> + gleam_erlang_ffi:register_process(Pid, Name). + +-spec unregister(gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. +unregister(Name) -> + gleam_erlang_ffi:unregister_process(Name). + +-spec named(gleam@erlang@atom:atom_()) -> {ok, pid_()} | {error, nil}. +named(Name) -> + gleam_erlang_ffi:process_named(Name). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl new file mode 100644 index 0000000..872126f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl @@ -0,0 +1,263 @@ +-module(gleam_erlang_ffi). +-export([ + atom_from_dynamic/1, rescue/1, atom_from_string/1, get_line/1, + ensure_all_started/1, sleep/1, os_family/0, sleep_forever/0, read_file/1, + append_file/2, write_file/2, delete_file/1, get_all_env/0, get_env/1, + set_env/2, unset_env/1, delete_directory/1, recursive_delete/1, + list_directory/1, demonitor/1, make_directory/1, new_selector/0, link/1, + insert_selector_handler/3, select/1, select/2, trap_exits/1, map_selector/2, + merge_selector/2, flush_messages/0, file_info/1, link_info/1, + priv_directory/1, connect_node/1, register_process/2, unregister_process/1, + process_named/1, identity/1 +]). + +-define(is_posix_error(Error), + Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse + Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse + Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse + Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse + Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse + Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse + Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse + Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse + Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse + Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse + Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse + Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse + Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse + Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse + Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse + Error =:= etxtbsy orelse Error =:= exdev +). + +-spec atom_from_string(binary()) -> {ok, atom()} | {error, atom_not_loaded}. +atom_from_string(S) -> + try {ok, binary_to_existing_atom(S)} + catch error:badarg -> {error, atom_not_loaded} + end. + +atom_from_dynamic(Data) when is_atom(Data) -> + {ok, Data}; +atom_from_dynamic(Data) -> + {error, [{decode_error, <<"Atom">>, gleam@dynamic:classify(Data), []}]}. + +-spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. +get_line(Prompt) -> + case io:get_line(Prompt) of + eof -> {error, eof}; + {error, _} -> {error, no_data}; + Data when is_binary(Data) -> {ok, Data}; + Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} + end. + +rescue(F) -> + try {ok, F()} + catch + throw:X -> {error, {thrown, X}}; + error:X -> {error, {errored, X}}; + exit:X -> {error, {exited, X}} + end. + +ensure_all_started(Application) -> + case application:ensure_all_started(Application) of + {ok, _} = Ok -> Ok; + + {error, {ProblemApp, {"no such file or directory", _}}} -> + {error, {unknown_application, ProblemApp}} + end. + +sleep(Microseconds) -> + timer:sleep(Microseconds), + nil. + +sleep_forever() -> + timer:sleep(infinity), + nil. + +file_info_result(Result) -> + case Result of + {ok, {file_info, Size, Type, Access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}} when Access =:= none -> + {ok, {file_info, Size, Type, no_access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}}; + {ok, _} -> + Result; + {error, Reason} when ?is_posix_error(Reason) -> + Result + end. + +file_info(Filename) -> + file_info_result(file:read_file_info(Filename, [{time, posix}])). + +link_info(Filename) -> + file_info_result(file:read_link_info(Filename, [{time, posix}])). + +posix_result(Result) -> + case Result of + ok -> {ok, nil}; + {ok, Value} -> {ok, Value}; + {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} + end. + +read_file(Filename) -> + posix_result(file:read_file(Filename)). + +write_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents)). + +append_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents, [append])). + +delete_file(Filename) -> + posix_result(file:delete(Filename)). + +make_directory(Dir) -> + posix_result(file:make_dir(Dir)). + +list_directory(Dir) -> + case file:list_dir(Dir) of + {ok, Filenames} -> + {ok, [list_to_binary(Filename) || Filename <- Filenames]}; + {error, Reason} when ?is_posix_error(Reason) -> + {error, Reason} + end. + +delete_directory(Dir) -> + posix_result(file:del_dir(Dir)). + +recursive_delete(Dir) -> + posix_result(file:del_dir_r(Dir)). + +get_all_env() -> + BinVars = lists:map(fun(VarString) -> + [VarName, VarVal] = string:split(VarString, "="), + {list_to_binary(VarName), list_to_binary(VarVal)} + end, os:getenv()), + maps:from_list(BinVars). + +get_env(Name) -> + case os:getenv(binary_to_list(Name)) of + false -> {error, nil}; + Value -> {ok, list_to_binary(Value)} + end. + +set_env(Name, Value) -> + os:putenv(binary_to_list(Name), binary_to_list(Value)), + nil. + +unset_env(Name) -> + os:unsetenv(binary_to_list(Name)), + nil. + +os_family() -> + case os:type() of + {win32, nt} -> + windows_nt; + {unix, linux} -> + linux; + {unix, darwin} -> + darwin; + {unix, freebsd} -> + free_bsd; + {_, Other} -> + {other, atom_to_binary(Other, utf8)} + end. + +new_selector() -> + {selector, #{}}. + +map_selector({selector, Handlers}, Fn) -> + MappedHandlers = maps:map(fun(_Tag, Handler) -> + fun(Message) -> Fn(Handler(Message)) end + end, Handlers), + {selector, MappedHandlers}. + +merge_selector({selector, HandlersA}, {selector, HandlersB}) -> + {selector, maps:merge(HandlersA, HandlersB)}. + +insert_selector_handler({selector, Handlers}, Tag, Fn) -> + {selector, Handlers#{Tag => Fn}}. + +select(Selector) -> + {ok, Message} = select(Selector, infinity), + Message. + +select({selector, Handlers}, Timeout) -> + AnythingHandler = maps:get(anything, Handlers, undefined), + receive + % Monitored process down messages. + % This is special cased so we can selectively receive based on the + % reference as well as the record tag. + {'DOWN', Ref, process, Pid, Reason} when is_map_key(Ref, Handlers) -> + Fn = maps:get(Ref, Handlers), + {ok, Fn({process_down, Pid, Reason})}; + + Msg when is_map_key({element(1, Msg), tuple_size(Msg)}, Handlers) -> + Fn = maps:get({element(1, Msg), tuple_size(Msg)}, Handlers), + {ok, Fn(Msg)}; + + Msg when AnythingHandler =/= undefined -> + {ok, AnythingHandler(Msg)} + after Timeout -> + {error, nil} + end. + +demonitor({_, Reference}) -> + erlang:demonitor(Reference, [flush]). + +link(Pid) -> + try + erlang:link(Pid) + catch + error:_ -> false + end. + +trap_exits(ShouldTrap) -> + erlang:process_flag(trap_exit, ShouldTrap), + nil. + +flush_messages() -> + receive _Message -> flush_messages() + after 0 -> nil + end. + +priv_directory(Name) -> + try erlang:binary_to_existing_atom(Name) of + Atom -> + case code:priv_dir(Atom) of + {error, _} -> {error, nil}; + Path -> {ok, unicode:characters_to_binary(Path)} + end + catch + error:badarg -> {error, nil} + end. + +connect_node(Node) -> + case net_kernel:connect_node(Node) of + true -> {ok, Node}; + false -> {error, failed_to_connect}; + ignored -> {error, local_node_is_not_alive} + end. + +register_process(Pid, Name) -> + try + true = erlang:register(Name, Pid), + {ok, nil} + catch + error:badarg -> {error, nil} + end. + +unregister_process(Name) -> + try + true = erlang:unregister(Name), + {ok, nil} + catch + error:badarg -> {error, nil} + end. + +process_named(Name) -> + case erlang:whereis(Name) of + Pid when is_pid(Pid) -> {ok, Pid}; + _ -> {error, nil} + end. + +identity(X) -> + X. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam new file mode 100644 index 0000000..d54ec07 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam new file mode 100644 index 0000000..78d457d Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam new file mode 100644 index 0000000..7624e6e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam new file mode 100644 index 0000000..972a12b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam new file mode 100644 index 0000000..4b2f578 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam new file mode 100644 index 0000000..c6b8f5e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam new file mode 100644 index 0000000..35e940f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app new file mode 100644 index 0000000..79950ab --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app @@ -0,0 +1,7 @@ +{application, gleam_erlang, [ + {vsn, "0.23.1"}, + {applications, [gleam_stdlib]}, + {description, "A Gleam library for working with Erlang"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam new file mode 100644 index 0000000..c659a9c Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl new file mode 100644 index 0000000..b38d11e --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl @@ -0,0 +1,15 @@ +-record(file_info, { + size :: integer(), + file_type :: gleam@erlang@file:file_type(), + access :: gleam@erlang@file:access(), + atime :: integer(), + mtime :: integer(), + ctime :: integer(), + mode :: integer(), + links :: integer(), + major_device :: integer(), + minor_device :: integer(), + inode :: integer(), + user_id :: integer(), + group_id :: integer() +}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl new file mode 100644 index 0000000..4cd0452 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl @@ -0,0 +1 @@ +-record(abnormal, {reason :: binary()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl new file mode 100644 index 0000000..5dd5047 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl @@ -0,0 +1 @@ +-record(callee_down, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl new file mode 100644 index 0000000..b82b49f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl @@ -0,0 +1 @@ +-record(cancelled, {time_remaining :: integer()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl new file mode 100644 index 0000000..c476308 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl @@ -0,0 +1,4 @@ +-record(exit_message, { + pid :: gleam@erlang@process:pid_(), + reason :: gleam@erlang@process:exit_reason() +}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl new file mode 100644 index 0000000..df0b6b7 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl @@ -0,0 +1,4 @@ +-record(process_down, { + pid :: gleam@erlang@process:pid_(), + reason :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl new file mode 100644 index 0000000..ce552e2 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl @@ -0,0 +1 @@ +-record(process_monitor, {tag :: gleam@erlang:reference_()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl new file mode 100644 index 0000000..abc46b2 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl @@ -0,0 +1,4 @@ +-record(subject, { + owner :: gleam@erlang@process:pid_(), + tag :: gleam@erlang:reference_() +}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl new file mode 100644 index 0000000..52c9896 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl @@ -0,0 +1,4 @@ +-record(application_failed_to_start, { + name :: gleam@erlang@atom:atom_(), + reason :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl new file mode 100644 index 0000000..fde3c61 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl @@ -0,0 +1 @@ +-record(unknown_application, {name :: gleam@erlang@atom:atom_()}). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache new file mode 100644 index 0000000..0b8931e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta new file mode 100644 index 0000000..dc85da7 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl new file mode 100644 index 0000000..91ee6e8 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl @@ -0,0 +1,626 @@ +-module(gleam@http). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse_method/1, method_to_string/1, scheme_to_string/1, scheme_from_string/1, parse_content_disposition/1, parse_multipart_body/2, method_from_dynamic/1, parse_multipart_headers/2]). +-export_type([method/0, scheme/0, multipart_headers/0, multipart_body/0, content_disposition/0]). + +-type method() :: get | + post | + head | + put | + delete | + trace | + connect | + options | + patch | + {other, binary()}. + +-type scheme() :: http | https. + +-type multipart_headers() :: {multipart_headers, + list({binary(), binary()}), + bitstring()} | + {more_required_for_headers, + fun((bitstring()) -> {ok, multipart_headers()} | {error, nil})}. + +-type multipart_body() :: {multipart_body, bitstring(), boolean(), bitstring()} | + {more_required_for_body, + bitstring(), + fun((bitstring()) -> {ok, multipart_body()} | {error, nil})}. + +-type content_disposition() :: {content_disposition, + binary(), + list({binary(), binary()})}. + +-spec parse_method(binary()) -> {ok, method()} | {error, nil}. +parse_method(S) -> + case gleam@string:lowercase(S) of + <<"connect"/utf8>> -> + {ok, connect}; + + <<"delete"/utf8>> -> + {ok, delete}; + + <<"get"/utf8>> -> + {ok, get}; + + <<"head"/utf8>> -> + {ok, head}; + + <<"options"/utf8>> -> + {ok, options}; + + <<"patch"/utf8>> -> + {ok, patch}; + + <<"post"/utf8>> -> + {ok, post}; + + <<"put"/utf8>> -> + {ok, put}; + + <<"trace"/utf8>> -> + {ok, trace}; + + _ -> + {error, nil} + end. + +-spec method_to_string(method()) -> binary(). +method_to_string(Method) -> + case Method of + connect -> + <<"connect"/utf8>>; + + delete -> + <<"delete"/utf8>>; + + get -> + <<"get"/utf8>>; + + head -> + <<"head"/utf8>>; + + options -> + <<"options"/utf8>>; + + patch -> + <<"patch"/utf8>>; + + post -> + <<"post"/utf8>>; + + put -> + <<"put"/utf8>>; + + trace -> + <<"trace"/utf8>>; + + {other, S} -> + S + end. + +-spec scheme_to_string(scheme()) -> binary(). +scheme_to_string(Scheme) -> + case Scheme of + http -> + <<"http"/utf8>>; + + https -> + <<"https"/utf8>> + end. + +-spec scheme_from_string(binary()) -> {ok, scheme()} | {error, nil}. +scheme_from_string(Scheme) -> + case gleam@string:lowercase(Scheme) of + <<"http"/utf8>> -> + {ok, http}; + + <<"https"/utf8>> -> + {ok, https}; + + _ -> + {error, nil} + end. + +-spec skip_whitespace(bitstring()) -> bitstring(). +skip_whitespace(Data) -> + case Data of + <<32, Data@1/binary>> -> + skip_whitespace(Data@1); + + <<9, Data@1/binary>> -> + skip_whitespace(Data@1); + + _ -> + Data + end. + +-spec more_please_headers( + fun((bitstring()) -> {ok, multipart_headers()} | {error, nil}), + bitstring() +) -> {ok, multipart_headers()} | {error, nil}. +more_please_headers(Continuation, Existing) -> + {ok, + {more_required_for_headers, + fun(More) -> + gleam@bool:guard( + More =:= <<>>, + {error, nil}, + fun() -> + Continuation(<>) + end + ) + end}}. + +-spec parse_rfc_2045_parameter_quoted_value(binary(), binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter_quoted_value(Header, Name, Value) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {error, nil}; + + {ok, {<<"\""/utf8>>, Rest}} -> + {ok, {{Name, Value}, Rest}}; + + {ok, {<<"\\"/utf8>>, Rest@1}} -> + gleam@result:'try'( + gleam@string:pop_grapheme(Rest@1), + fun(_use0) -> + {Grapheme, Rest@2} = _use0, + parse_rfc_2045_parameter_quoted_value( + Rest@2, + Name, + <> + ) + end + ); + + {ok, {Grapheme@1, Rest@3}} -> + parse_rfc_2045_parameter_quoted_value( + Rest@3, + Name, + <> + ) + end. + +-spec parse_rfc_2045_parameter_unquoted_value(binary(), binary(), binary()) -> {{binary(), + binary()}, + binary()}. +parse_rfc_2045_parameter_unquoted_value(Header, Name, Value) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {{Name, Value}, Header}; + + {ok, {<<";"/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {<<" "/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {<<"\t"/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {Grapheme, Rest@1}} -> + parse_rfc_2045_parameter_unquoted_value( + Rest@1, + Name, + <> + ) + end. + +-spec parse_rfc_2045_parameter_value(binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter_value(Header, Name) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {error, nil}; + + {ok, {<<"\""/utf8>>, Rest}} -> + parse_rfc_2045_parameter_quoted_value(Rest, Name, <<""/utf8>>); + + {ok, {Grapheme, Rest@1}} -> + {ok, + parse_rfc_2045_parameter_unquoted_value(Rest@1, Name, Grapheme)} + end. + +-spec parse_rfc_2045_parameter(binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter(Header, Name) -> + gleam@result:'try'( + gleam@string:pop_grapheme(Header), + fun(_use0) -> + {Grapheme, Rest} = _use0, + case Grapheme of + <<"="/utf8>> -> + parse_rfc_2045_parameter_value(Rest, Name); + + _ -> + parse_rfc_2045_parameter( + Rest, + <> + ) + end + end + ). + +-spec parse_rfc_2045_parameters(binary(), list({binary(), binary()})) -> {ok, + list({binary(), binary()})} | + {error, nil}. +parse_rfc_2045_parameters(Header, Parameters) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {ok, gleam@list:reverse(Parameters)}; + + {ok, {<<";"/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {<<" "/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {<<"\t"/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {Grapheme, Rest@1}} -> + Acc = gleam@string:lowercase(Grapheme), + gleam@result:'try'( + parse_rfc_2045_parameter(Rest@1, Acc), + fun(_use0) -> + {Parameter, Rest@2} = _use0, + parse_rfc_2045_parameters(Rest@2, [Parameter | Parameters]) + end + ) + end. + +-spec parse_content_disposition_type(binary(), binary()) -> {ok, + content_disposition()} | + {error, nil}. +parse_content_disposition_type(Header, Name) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {ok, {content_disposition, Name, []}}; + + {ok, {<<" "/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {<<"\t"/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {<<";"/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {Grapheme, Rest@1}} -> + parse_content_disposition_type( + Rest@1, + <> + ) + end. + +-spec parse_content_disposition(binary()) -> {ok, content_disposition()} | + {error, nil}. +parse_content_disposition(Header) -> + parse_content_disposition_type(Header, <<""/utf8>>). + +-spec more_please_body( + fun((bitstring()) -> {ok, multipart_body()} | {error, nil}), + bitstring(), + bitstring() +) -> {ok, multipart_body()} | {error, nil}. +more_please_body(Continuation, Chunk, Existing) -> + _pipe = fun(More) -> + gleam@bool:guard( + More =:= <<>>, + {error, nil}, + fun() -> Continuation(<>) end + ) + end, + _pipe@1 = {more_required_for_body, Chunk, _pipe}, + {ok, _pipe@1}. + +-spec parse_body_loop(bitstring(), bitstring(), bitstring()) -> {ok, + multipart_body()} | + {error, nil}. +parse_body_loop(Data, Boundary, Body) -> + Dsize = erlang:byte_size(Data), + Bsize = erlang:byte_size(Boundary), + Required = 6 + Bsize, + case Data of + _ when Dsize < Required -> + more_please_body( + fun(_capture) -> parse_body_loop(_capture, Boundary, <<>>) end, + Body, + Data + ); + + <<13, 10, Data@1/binary>> -> + Desired = <<45, 45, Boundary/bitstring>>, + Size = erlang:byte_size(Desired), + Dsize@1 = erlang:byte_size(Data@1), + Prefix = gleam_stdlib:bit_array_slice(Data@1, 0, Size), + Rest = gleam_stdlib:bit_array_slice(Data@1, Size, Dsize@1 - Size), + case {Prefix =:= {ok, Desired}, Rest} of + {true, {ok, <<13, 10, _/binary>>}} -> + {ok, {multipart_body, Body, false, Data@1}}; + + {true, {ok, <<45, 45, Data@2/binary>>}} -> + {ok, {multipart_body, Body, true, Data@2}}; + + {false, _} -> + parse_body_loop( + Data@1, + Boundary, + <> + ); + + {_, _} -> + {error, nil} + end; + + <> -> + parse_body_loop(Data@3, Boundary, <>) + end. + +-spec parse_body_with_bit_array(bitstring(), bitstring()) -> {ok, + multipart_body()} | + {error, nil}. +parse_body_with_bit_array(Data, Boundary) -> + Bsize = erlang:byte_size(Boundary), + Prefix = gleam_stdlib:bit_array_slice(Data, 0, 2 + Bsize), + case Prefix =:= {ok, <<45, 45, Boundary/bitstring>>} of + true -> + {ok, {multipart_body, <<>>, false, Data}}; + + false -> + parse_body_loop(Data, Boundary, <<>>) + end. + +-spec parse_multipart_body(bitstring(), binary()) -> {ok, multipart_body()} | + {error, nil}. +parse_multipart_body(Data, Boundary) -> + _pipe = Boundary, + _pipe@1 = gleam_stdlib:identity(_pipe), + parse_body_with_bit_array(Data, _pipe@1). + +-spec method_from_dynamic(gleam@dynamic:dynamic_()) -> {ok, method()} | + {error, list(gleam@dynamic:decode_error())}. +method_from_dynamic(Value) -> + case gleam_http_native:decode_method(Value) of + {ok, Method} -> + {ok, Method}; + + {error, _} -> + {error, + [{decode_error, + <<"HTTP method"/utf8>>, + gleam@dynamic:classify(Value), + []}]} + end. + +-spec parse_header_value( + bitstring(), + list({binary(), binary()}), + bitstring(), + bitstring() +) -> {ok, multipart_headers()} | {error, nil}. +parse_header_value(Data, Headers, Name, Value) -> + Size = erlang:byte_size(Data), + case Data of + _ when Size < 4 -> + _pipe@2 = fun(Data@1) -> _pipe = Data@1, + _pipe@1 = skip_whitespace(_pipe), + parse_header_value(_pipe@1, Headers, Name, Value) end, + more_please_headers(_pipe@2, Data); + + <<13, 10, 13, 10, Data@2/binary>> -> + gleam@result:'try'( + gleam@bit_array:to_string(Name), + fun(Name@1) -> + gleam@result:map( + gleam@bit_array:to_string(Value), + fun(Value@1) -> + Headers@1 = gleam@list:reverse( + [{gleam@string:lowercase(Name@1), Value@1} | + Headers] + ), + {multipart_headers, Headers@1, Data@2} + end + ) + end + ); + + <<13, 10, 32, Data@3/binary>> -> + parse_header_value(Data@3, Headers, Name, Value); + + <<13, 10, 9, Data@3/binary>> -> + parse_header_value(Data@3, Headers, Name, Value); + + <<13, 10, Data@4/binary>> -> + gleam@result:'try'( + gleam@bit_array:to_string(Name), + fun(Name@2) -> + gleam@result:'try'( + gleam@bit_array:to_string(Value), + fun(Value@2) -> + Headers@2 = [{gleam@string:lowercase(Name@2), + Value@2} | + Headers], + parse_header_name(Data@4, Headers@2, <<>>) + end + ) + end + ); + + <> -> + Value@3 = <>, + parse_header_value(Rest, Headers, Name, Value@3); + + _ -> + {error, nil} + end. + +-spec parse_header_name(bitstring(), list({binary(), binary()}), bitstring()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_header_name(Data, Headers, Name) -> + case skip_whitespace(Data) of + <<58, Data@1/binary>> -> + _pipe = Data@1, + _pipe@1 = skip_whitespace(_pipe), + parse_header_value(_pipe@1, Headers, Name, <<>>); + + <> -> + parse_header_name(Data@2, Headers, <>); + + <<>> -> + more_please_headers( + fun(_capture) -> parse_header_name(_capture, Headers, Name) end, + Data + ) + end. + +-spec do_parse_headers(bitstring()) -> {ok, multipart_headers()} | {error, nil}. +do_parse_headers(Data) -> + case Data of + <<13, 10, 13, 10, Data@1/binary>> -> + {ok, {multipart_headers, [], Data@1}}; + + <<13, 10, Data@2/binary>> -> + parse_header_name(Data@2, [], <<>>); + + <<13>> -> + more_please_headers(fun do_parse_headers/1, Data); + + <<>> -> + more_please_headers(fun do_parse_headers/1, Data); + + _ -> + {error, nil} + end. + +-spec parse_headers_after_prelude(bitstring(), bitstring()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_headers_after_prelude(Data, Boundary) -> + Dsize = erlang:byte_size(Data), + Bsize = erlang:byte_size(Boundary), + Required_size = Bsize + 4, + gleam@bool:guard( + Dsize < Required_size, + more_please_headers( + fun(_capture) -> parse_headers_after_prelude(_capture, Boundary) end, + Data + ), + fun() -> + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data, 0, Required_size - 2), + fun(Prefix) -> + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data, 2 + Bsize, 2), + fun(Second) -> + Desired = <<45, 45, Boundary/bitstring>>, + gleam@bool:guard( + Prefix /= Desired, + {error, nil}, + fun() -> case Second =:= <<45, 45>> of + true -> + Rest_size = Dsize - Required_size, + gleam@result:map( + gleam_stdlib:bit_array_slice( + Data, + Required_size, + Rest_size + ), + fun(Data@1) -> + {multipart_headers, + [], + Data@1} + end + ); + + false -> + Start = Required_size - 2, + Rest_size@1 = (Dsize - Required_size) + + 2, + gleam@result:'try'( + gleam_stdlib:bit_array_slice( + Data, + Start, + Rest_size@1 + ), + fun(Data@2) -> + do_parse_headers(Data@2) + end + ) + end end + ) + end + ) + end + ) + end + ). + +-spec skip_preamble(bitstring(), bitstring()) -> {ok, multipart_headers()} | + {error, nil}. +skip_preamble(Data, Boundary) -> + Data_size = erlang:byte_size(Data), + Boundary_size = erlang:byte_size(Boundary), + Required = Boundary_size + 4, + case Data of + _ when Data_size < Required -> + more_please_headers( + fun(_capture) -> skip_preamble(_capture, Boundary) end, + Data + ); + + <<13, 10, 45, 45, Data@1/binary>> -> + case gleam_stdlib:bit_array_slice(Data@1, 0, Boundary_size) of + {ok, Prefix} when Prefix =:= Boundary -> + Start = Boundary_size, + Length = erlang:byte_size(Data@1) - Boundary_size, + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data@1, Start, Length), + fun(Rest) -> do_parse_headers(Rest) end + ); + + {ok, _} -> + skip_preamble(Data@1, Boundary); + + {error, _} -> + {error, nil} + end; + + <<_, Data@2/binary>> -> + skip_preamble(Data@2, Boundary) + end. + +-spec parse_multipart_headers(bitstring(), binary()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_multipart_headers(Data, Boundary) -> + Boundary@1 = gleam_stdlib:identity(Boundary), + Prefix = <<45, 45, Boundary@1/bitstring>>, + case gleam_stdlib:bit_array_slice(Data, 0, erlang:byte_size(Prefix)) =:= {ok, + Prefix} of + true -> + parse_headers_after_prelude(Data, Boundary@1); + + false -> + skip_preamble(Data, Boundary@1) + end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache new file mode 100644 index 0000000..173ac86 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta new file mode 100644 index 0000000..1f65dce Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl new file mode 100644 index 0000000..9d6d13e --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl @@ -0,0 +1,153 @@ +-module(gleam@http@cookie). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([defaults/1, set_header/3, parse/1]). +-export_type([same_site_policy/0, attributes/0]). + +-type same_site_policy() :: lax | strict | none. + +-type attributes() :: {attributes, + gleam@option:option(integer()), + gleam@option:option(binary()), + gleam@option:option(binary()), + boolean(), + boolean(), + gleam@option:option(same_site_policy())}. + +-spec same_site_to_string(same_site_policy()) -> binary(). +same_site_to_string(Policy) -> + case Policy of + lax -> + <<"Lax"/utf8>>; + + strict -> + <<"Strict"/utf8>>; + + none -> + <<"None"/utf8>> + end. + +-spec defaults(gleam@http:scheme()) -> attributes(). +defaults(Scheme) -> + {attributes, + none, + none, + {some, <<"/"/utf8>>}, + Scheme =:= https, + true, + {some, lax}}. + +-spec cookie_attributes_to_list(attributes()) -> list(list(binary())). +cookie_attributes_to_list(Attributes) -> + {attributes, Max_age, Domain, Path, Secure, Http_only, Same_site} = Attributes, + _pipe = [case Max_age of + {some, 0} -> + {some, [<<"Expires=Thu, 01 Jan 1970 00:00:00 GMT"/utf8>>]}; + + _ -> + none + end, gleam@option:map( + Max_age, + fun(Max_age@1) -> + [<<"Max-Age="/utf8>>, gleam@int:to_string(Max_age@1)] + end + ), gleam@option:map( + Domain, + fun(Domain@1) -> [<<"Domain="/utf8>>, Domain@1] end + ), gleam@option:map(Path, fun(Path@1) -> [<<"Path="/utf8>>, Path@1] end), case Secure of + true -> + {some, [<<"Secure"/utf8>>]}; + + false -> + none + end, case Http_only of + true -> + {some, [<<"HttpOnly"/utf8>>]}; + + false -> + none + end, gleam@option:map( + Same_site, + fun(Same_site@1) -> + [<<"SameSite="/utf8>>, same_site_to_string(Same_site@1)] + end + )], + gleam@list:filter_map( + _pipe, + fun(_capture) -> gleam@option:to_result(_capture, nil) end + ). + +-spec set_header(binary(), binary(), attributes()) -> binary(). +set_header(Name, Value, Attributes) -> + _pipe = [[Name, <<"="/utf8>>, Value] | + cookie_attributes_to_list(Attributes)], + _pipe@1 = gleam@list:map( + _pipe, + fun(_capture) -> gleam@string:join(_capture, <<""/utf8>>) end + ), + gleam@string:join(_pipe@1, <<"; "/utf8>>). + +-spec check_token(binary()) -> {ok, nil} | {error, nil}. +check_token(Token) -> + case gleam@string:pop_grapheme(Token) of + {error, nil} -> + {ok, nil}; + + {ok, {<<" "/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\t"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\r"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\n"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\f"/utf8>>, _}} -> + {error, nil}; + + {ok, {_, Rest}} -> + check_token(Rest) + end. + +-spec parse(binary()) -> list({binary(), binary()}). +parse(Cookie_string) -> + _assert_subject = gleam@regex:from_string(<<"[,;]"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/http/cookie"/utf8>>, + function => <<"parse"/utf8>>, + line => 101}) + end, + _pipe = gleam@regex:split(Re, Cookie_string), + gleam@list:filter_map( + _pipe, + fun(Pair) -> + case gleam@string:split_once(gleam@string:trim(Pair), <<"="/utf8>>) of + {ok, {<<""/utf8>>, _}} -> + {error, nil}; + + {ok, {Key, Value}} -> + Key@1 = gleam@string:trim(Key), + Value@1 = gleam@string:trim(Value), + gleam@result:then( + check_token(Key@1), + fun(_) -> + gleam@result:then( + check_token(Value@1), + fun(_) -> {ok, {Key@1, Value@1}} end + ) + end + ); + + {error, nil} -> + {error, nil} + end + end + ). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache new file mode 100644 index 0000000..cf9bcd7 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta new file mode 100644 index 0000000..2108b82 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl new file mode 100644 index 0000000..e41d548 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl @@ -0,0 +1,202 @@ +-module(gleam@http@request). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_uri/1, from_uri/1, get_header/2, set_header/3, prepend_header/3, set_body/2, map/2, path_segments/1, get_query/1, set_query/2, set_method/2, new/0, to/1, set_scheme/2, set_host/2, set_port/2, set_path/2, set_cookie/3, get_cookies/1]). +-export_type([request/1]). + +-type request(IAV) :: {request, + gleam@http:method(), + list({binary(), binary()}), + IAV, + gleam@http:scheme(), + binary(), + gleam@option:option(integer()), + binary(), + gleam@option:option(binary())}. + +-spec to_uri(request(any())) -> gleam@uri:uri(). +to_uri(Request) -> + {uri, + {some, gleam@http:scheme_to_string(erlang:element(5, Request))}, + none, + {some, erlang:element(6, Request)}, + erlang:element(7, Request), + erlang:element(8, Request), + erlang:element(9, Request), + none}. + +-spec from_uri(gleam@uri:uri()) -> {ok, request(binary())} | {error, nil}. +from_uri(Uri) -> + gleam@result:then( + begin + _pipe = erlang:element(2, Uri), + _pipe@1 = gleam@option:unwrap(_pipe, <<""/utf8>>), + gleam@http:scheme_from_string(_pipe@1) + end, + fun(Scheme) -> + gleam@result:then( + begin + _pipe@2 = erlang:element(4, Uri), + gleam@option:to_result(_pipe@2, nil) + end, + fun(Host) -> + Req = {request, + get, + [], + <<""/utf8>>, + Scheme, + Host, + erlang:element(5, Uri), + erlang:element(6, Uri), + erlang:element(7, Uri)}, + {ok, Req} + end + ) + end + ). + +-spec get_header(request(any()), binary()) -> {ok, binary()} | {error, nil}. +get_header(Request, Key) -> + gleam@list:key_find(erlang:element(3, Request), gleam@string:lowercase(Key)). + +-spec set_header(request(IBF), binary(), binary()) -> request(IBF). +set_header(Request, Key, Value) -> + Headers = gleam@list:key_set( + erlang:element(3, Request), + gleam@string:lowercase(Key), + Value + ), + erlang:setelement(3, Request, Headers). + +-spec prepend_header(request(IBI), binary(), binary()) -> request(IBI). +prepend_header(Request, Key, Value) -> + Headers = [{gleam@string:lowercase(Key), Value} | + erlang:element(3, Request)], + erlang:setelement(3, Request, Headers). + +-spec set_body(request(any()), IBN) -> request(IBN). +set_body(Req, Body) -> + {request, Method, Headers, _, Scheme, Host, Port, Path, Query} = Req, + {request, Method, Headers, Body, Scheme, Host, Port, Path, Query}. + +-spec map(request(IBP), fun((IBP) -> IBR)) -> request(IBR). +map(Request, Transform) -> + _pipe = erlang:element(4, Request), + _pipe@1 = Transform(_pipe), + set_body(Request, _pipe@1). + +-spec path_segments(request(any())) -> list(binary()). +path_segments(Request) -> + _pipe = erlang:element(8, Request), + gleam@uri:path_segments(_pipe). + +-spec get_query(request(any())) -> {ok, list({binary(), binary()})} | + {error, nil}. +get_query(Request) -> + case erlang:element(9, Request) of + {some, Query_string} -> + gleam@uri:parse_query(Query_string); + + none -> + {ok, []} + end. + +-spec set_query(request(ICB), list({binary(), binary()})) -> request(ICB). +set_query(Req, Query) -> + Pair = fun(T) -> + gleam@string_builder:from_strings( + [erlang:element(1, T), <<"="/utf8>>, erlang:element(2, T)] + ) + end, + Query@1 = begin + _pipe = Query, + _pipe@1 = gleam@list:map(_pipe, Pair), + _pipe@2 = gleam@list:intersperse( + _pipe@1, + gleam@string_builder:from_string(<<"&"/utf8>>) + ), + _pipe@3 = gleam@string_builder:concat(_pipe@2), + _pipe@4 = gleam@string_builder:to_string(_pipe@3), + {some, _pipe@4} + end, + erlang:setelement(9, Req, Query@1). + +-spec set_method(request(ICF), gleam@http:method()) -> request(ICF). +set_method(Req, Method) -> + erlang:setelement(2, Req, Method). + +-spec new() -> request(binary()). +new() -> + {request, + get, + [], + <<""/utf8>>, + https, + <<"localhost"/utf8>>, + none, + <<""/utf8>>, + none}. + +-spec to(binary()) -> {ok, request(binary())} | {error, nil}. +to(Url) -> + _pipe = Url, + _pipe@1 = gleam@uri:parse(_pipe), + gleam@result:then(_pipe@1, fun from_uri/1). + +-spec set_scheme(request(ICM), gleam@http:scheme()) -> request(ICM). +set_scheme(Req, Scheme) -> + erlang:setelement(5, Req, Scheme). + +-spec set_host(request(ICP), binary()) -> request(ICP). +set_host(Req, Host) -> + erlang:setelement(6, Req, Host). + +-spec set_port(request(ICS), integer()) -> request(ICS). +set_port(Req, Port) -> + erlang:setelement(7, Req, {some, Port}). + +-spec set_path(request(ICV), binary()) -> request(ICV). +set_path(Req, Path) -> + erlang:setelement(8, Req, Path). + +-spec set_cookie(request(ICY), binary(), binary()) -> request(ICY). +set_cookie(Req, Name, Value) -> + New_cookie_string = gleam@string:join([Name, Value], <<"="/utf8>>), + {Cookies_string@2, Headers@1} = case gleam@list:key_pop( + erlang:element(3, Req), + <<"cookie"/utf8>> + ) of + {ok, {Cookies_string, Headers}} -> + Cookies_string@1 = gleam@string:join( + [Cookies_string, New_cookie_string], + <<"; "/utf8>> + ), + {Cookies_string@1, Headers}; + + {error, nil} -> + {New_cookie_string, erlang:element(3, Req)} + end, + erlang:setelement( + 3, + Req, + [{<<"cookie"/utf8>>, Cookies_string@2} | Headers@1] + ). + +-spec get_cookies(request(any())) -> list({binary(), binary()}). +get_cookies(Req) -> + {request, _, Headers, _, _, _, _, _, _} = Req, + _pipe = Headers, + _pipe@1 = gleam@list:filter_map( + _pipe, + fun(Header) -> + {Name, Value} = Header, + case Name of + <<"cookie"/utf8>> -> + {ok, gleam@http@cookie:parse(Value)}; + + _ -> + {error, nil} + end + end + ), + gleam@list:flatten(_pipe@1). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache new file mode 100644 index 0000000..5656963 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta new file mode 100644 index 0000000..1f05041 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl new file mode 100644 index 0000000..300726a --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl @@ -0,0 +1,97 @@ +-module(gleam@http@response). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/1, get_header/2, set_header/3, prepend_header/3, set_body/2, try_map/2, map/2, redirect/1, get_cookies/1, set_cookie/4, expire_cookie/3]). +-export_type([response/1]). + +-type response(HXJ) :: {response, integer(), list({binary(), binary()}), HXJ}. + +-spec new(integer()) -> response(binary()). +new(Status) -> + {response, Status, [], <<""/utf8>>}. + +-spec get_header(response(any()), binary()) -> {ok, binary()} | {error, nil}. +get_header(Response, Key) -> + gleam@list:key_find( + erlang:element(3, Response), + gleam@string:lowercase(Key) + ). + +-spec set_header(response(HXY), binary(), binary()) -> response(HXY). +set_header(Response, Key, Value) -> + Headers = gleam@list:key_set( + erlang:element(3, Response), + gleam@string:lowercase(Key), + Value + ), + erlang:setelement(3, Response, Headers). + +-spec prepend_header(response(HYB), binary(), binary()) -> response(HYB). +prepend_header(Response, Key, Value) -> + Headers = [{gleam@string:lowercase(Key), Value} | + erlang:element(3, Response)], + erlang:setelement(3, Response, Headers). + +-spec set_body(response(any()), HYG) -> response(HYG). +set_body(Response, Body) -> + {response, Status, Headers, _} = Response, + {response, Status, Headers, Body}. + +-spec try_map(response(HXK), fun((HXK) -> {ok, HXM} | {error, HXN})) -> {ok, + response(HXM)} | + {error, HXN}. +try_map(Response, Transform) -> + gleam@result:then( + Transform(erlang:element(4, Response)), + fun(Body) -> {ok, set_body(Response, Body)} end + ). + +-spec map(response(HYI), fun((HYI) -> HYK)) -> response(HYK). +map(Response, Transform) -> + _pipe = erlang:element(4, Response), + _pipe@1 = Transform(_pipe), + set_body(Response, _pipe@1). + +-spec redirect(binary()) -> response(binary()). +redirect(Uri) -> + {response, + 303, + [{<<"location"/utf8>>, Uri}], + gleam@string:append(<<"You are being redirected to "/utf8>>, Uri)}. + +-spec get_cookies(response(any())) -> list({binary(), binary()}). +get_cookies(Resp) -> + {response, _, Headers, _} = Resp, + _pipe = Headers, + _pipe@1 = gleam@list:filter_map( + _pipe, + fun(Header) -> + {Name, Value} = Header, + case Name of + <<"set-cookie"/utf8>> -> + {ok, gleam@http@cookie:parse(Value)}; + + _ -> + {error, nil} + end + end + ), + gleam@list:flatten(_pipe@1). + +-spec set_cookie( + response(HYP), + binary(), + binary(), + gleam@http@cookie:attributes() +) -> response(HYP). +set_cookie(Response, Name, Value, Attributes) -> + prepend_header( + Response, + <<"set-cookie"/utf8>>, + gleam@http@cookie:set_header(Name, Value, Attributes) + ). + +-spec expire_cookie(response(HYS), binary(), gleam@http@cookie:attributes()) -> response(HYS). +expire_cookie(Response, Name, Attributes) -> + Attrs = erlang:setelement(2, Attributes, {some, 0}), + set_cookie(Response, Name, <<""/utf8>>, Attrs). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache new file mode 100644 index 0000000..2bdc561 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta new file mode 100644 index 0000000..c0222d6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl new file mode 100644 index 0000000..7aa0ed5 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl @@ -0,0 +1,82 @@ +-module(gleam@http@service). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([map_response_body/2, prepend_response_header/3, method_override/1]). + +-spec map_response_body( + fun((gleam@http@request:request(IIL)) -> gleam@http@response:response(IIM)), + fun((IIM) -> IIP) +) -> fun((gleam@http@request:request(IIL)) -> gleam@http@response:response(IIP)). +map_response_body(Service, Mapper) -> + fun(Req) -> _pipe = Req, + _pipe@1 = Service(_pipe), + gleam@http@response:map(_pipe@1, Mapper) end. + +-spec prepend_response_header( + fun((gleam@http@request:request(IIS)) -> gleam@http@response:response(IIT)), + binary(), + binary() +) -> fun((gleam@http@request:request(IIS)) -> gleam@http@response:response(IIT)). +prepend_response_header(Service, Key, Value) -> + fun(Req) -> _pipe = Req, + _pipe@1 = Service(_pipe), + gleam@http@response:prepend_header(_pipe@1, Key, Value) end. + +-spec ensure_post(gleam@http@request:request(IIY)) -> {ok, + gleam@http@request:request(IIY)} | + {error, nil}. +ensure_post(Req) -> + case erlang:element(2, Req) of + post -> + {ok, Req}; + + _ -> + {error, nil} + end. + +-spec get_override_method(gleam@http@request:request(any())) -> {ok, + gleam@http:method()} | + {error, nil}. +get_override_method(Request) -> + gleam@result:then( + gleam@http@request:get_query(Request), + fun(Query_params) -> + gleam@result:then( + gleam@list:key_find(Query_params, <<"_method"/utf8>>), + fun(Method) -> + gleam@result:then( + gleam@http:parse_method(Method), + fun(Method@1) -> case Method@1 of + put -> + {ok, Method@1}; + + patch -> + {ok, Method@1}; + + delete -> + {ok, Method@1}; + + _ -> + {error, nil} + end end + ) + end + ) + end + ). + +-spec method_override( + fun((gleam@http@request:request(IJF)) -> gleam@http@response:response(IJG)) +) -> fun((gleam@http@request:request(IJF)) -> gleam@http@response:response(IJG)). +method_override(Service) -> + fun(Request) -> _pipe = Request, + _pipe@1 = ensure_post(_pipe), + _pipe@2 = gleam@result:then(_pipe@1, fun get_override_method/1), + _pipe@3 = gleam@result:map( + _pipe@2, + fun(_capture) -> + gleam@http@request:set_method(Request, _capture) + end + ), + _pipe@4 = gleam@result:unwrap(_pipe@3, Request), + Service(_pipe@4) end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl new file mode 100644 index 0000000..bb499bb --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl @@ -0,0 +1,88 @@ +-module(gleam_http_native). +-export([decode_method/1]). + +decode_method(Term) -> + case Term of + "connect" -> {ok, connect}; + "delete" -> {ok, delete}; + "get" -> {ok, get}; + "head" -> {ok, head}; + "options" -> {ok, options}; + "patch" -> {ok, patch}; + "post" -> {ok, post}; + "put" -> {ok, put}; + "trace" -> {ok, trace}; + "CONNECT" -> {ok, connect}; + "DELETE" -> {ok, delete}; + "GET" -> {ok, get}; + "HEAD" -> {ok, head}; + "OPTIONS" -> {ok, options}; + "PATCH" -> {ok, patch}; + "POST" -> {ok, post}; + "PUT" -> {ok, put}; + "TRACE" -> {ok, trace}; + "Connect" -> {ok, connect}; + "Delete" -> {ok, delete}; + "Get" -> {ok, get}; + "Head" -> {ok, head}; + "Options" -> {ok, options}; + "Patch" -> {ok, patch}; + "Post" -> {ok, post}; + "Put" -> {ok, put}; + "Trace" -> {ok, trace}; + 'connect' -> {ok, connect}; + 'delete' -> {ok, delete}; + 'get' -> {ok, get}; + 'head' -> {ok, head}; + 'options' -> {ok, options}; + 'patch' -> {ok, patch}; + 'post' -> {ok, post}; + 'put' -> {ok, put}; + 'trace' -> {ok, trace}; + 'CONNECT' -> {ok, connect}; + 'DELETE' -> {ok, delete}; + 'GET' -> {ok, get}; + 'HEAD' -> {ok, head}; + 'OPTIONS' -> {ok, options}; + 'PATCH' -> {ok, patch}; + 'POST' -> {ok, post}; + 'PUT' -> {ok, put}; + 'TRACE' -> {ok, trace}; + 'Connect' -> {ok, connect}; + 'Delete' -> {ok, delete}; + 'Get' -> {ok, get}; + 'Head' -> {ok, head}; + 'Options' -> {ok, options}; + 'Patch' -> {ok, patch}; + 'Post' -> {ok, post}; + 'Put' -> {ok, put}; + 'Trace' -> {ok, trace}; + <<"connect">> -> {ok, connect}; + <<"delete">> -> {ok, delete}; + <<"get">> -> {ok, get}; + <<"head">> -> {ok, head}; + <<"options">> -> {ok, options}; + <<"patch">> -> {ok, patch}; + <<"post">> -> {ok, post}; + <<"put">> -> {ok, put}; + <<"trace">> -> {ok, trace}; + <<"CONNECT">> -> {ok, connect}; + <<"DELETE">> -> {ok, delete}; + <<"GET">> -> {ok, get}; + <<"HEAD">> -> {ok, head}; + <<"OPTIONS">> -> {ok, options}; + <<"PATCH">> -> {ok, patch}; + <<"POST">> -> {ok, post}; + <<"PUT">> -> {ok, put}; + <<"TRACE">> -> {ok, trace}; + <<"Connect">> -> {ok, connect}; + <<"Delete">> -> {ok, delete}; + <<"Get">> -> {ok, get}; + <<"Head">> -> {ok, head}; + <<"Options">> -> {ok, options}; + <<"Patch">> -> {ok, patch}; + <<"Post">> -> {ok, post}; + <<"Put">> -> {ok, put}; + <<"Trace">> -> {ok, trace}; + _ -> {error, nil} + end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs new file mode 100644 index 0000000..c871a8b --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs @@ -0,0 +1,38 @@ +import { Ok, Error } from "./gleam.mjs"; +import { + Get, + Post, + Head, + Put, + Delete, + Trace, + Connect, + Options, + Patch, +} from "./gleam/http.mjs"; + +export function decode_method(value) { + try { + switch (value.toLowerCase()) { + case "get": + return new Ok(new Get()); + case "post": + return new Ok(new Post()); + case "head": + return new Ok(new Head()); + case "put": + return new Ok(new Put()); + case "delete": + return new Ok(new Delete()); + case "trace": + return new Ok(new Trace()); + case "connect": + return new Ok(new Connect()); + case "options": + return new Ok(new Options()); + case "patch": + return new Ok(new Patch()); + } + } catch {} + return new Error(undefined); +} diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam new file mode 100644 index 0000000..39142e6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam new file mode 100644 index 0000000..905fe68 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam new file mode 100644 index 0000000..f499969 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam new file mode 100644 index 0000000..1554f40 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam new file mode 100644 index 0000000..aa271f1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app new file mode 100644 index 0000000..5f55c6f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app @@ -0,0 +1,7 @@ +{application, gleam_http, [ + {vsn, "3.5.2"}, + {applications, [gleam_stdlib]}, + {description, "Types and functions for Gleam HTTP clients and servers"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam new file mode 100644 index 0000000..0b5e282 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl new file mode 100644 index 0000000..78a7d02 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl @@ -0,0 +1,8 @@ +-record(attributes, { + max_age :: gleam@option:option(integer()), + domain :: gleam@option:option(binary()), + path :: gleam@option:option(binary()), + secure :: boolean(), + http_only :: boolean(), + same_site :: gleam@option:option(gleam@http@cookie:same_site_policy()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl new file mode 100644 index 0000000..c8bbae6 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl @@ -0,0 +1,10 @@ +-record(request, { + method :: gleam@http:method(), + headers :: list({binary(), binary()}), + body :: any(), + scheme :: gleam@http:scheme(), + host :: binary(), + port :: gleam@option:option(integer()), + path :: binary(), + 'query' :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl new file mode 100644 index 0000000..ba6f077 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl @@ -0,0 +1,5 @@ +-record(response, { + status :: integer(), + headers :: list({binary(), binary()}), + body :: any() +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl new file mode 100644 index 0000000..abd56dd --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl @@ -0,0 +1,5 @@ +-record(more_required_for_body, { + chunk :: bitstring(), + continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_body()} | + {error, nil}) +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl new file mode 100644 index 0000000..43729c1 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl @@ -0,0 +1,4 @@ +-record(more_required_for_headers, { + continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_headers()} | + {error, nil}) +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl new file mode 100644 index 0000000..4521591 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl @@ -0,0 +1,5 @@ +-record(multipart_body, { + chunk :: bitstring(), + done :: boolean(), + remaining :: bitstring() +}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl new file mode 100644 index 0000000..d9fca5c --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl @@ -0,0 +1,4 @@ +-record(multipart_headers, { + headers :: list({binary(), binary()}), + remaining :: bitstring() +}). diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache new file mode 100644 index 0000000..59082af Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta new file mode 100644 index 0000000..a340156 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl new file mode 100644 index 0000000..1d634df --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl @@ -0,0 +1,118 @@ +-module(gleam@httpc). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([send_bits/1, send/1]). +-export_type([charlist/0, erl_http_option/0, body_format/0, erl_option/0]). + +-type charlist() :: any(). + +-type erl_http_option() :: any(). + +-type body_format() :: binary. + +-type erl_option() :: {body_format, body_format()}. + +-spec charlist_header({binary(), binary()}) -> {charlist(), charlist()}. +charlist_header(Header) -> + {K, V} = Header, + {erlang:binary_to_list(K), erlang:binary_to_list(V)}. + +-spec string_header({charlist(), charlist()}) -> {binary(), binary()}. +string_header(Header) -> + {K, V} = Header, + {erlang:list_to_binary(K), erlang:list_to_binary(V)}. + +-spec send_bits(gleam@http@request:request(bitstring())) -> {ok, + gleam@http@response:response(bitstring())} | + {error, gleam@dynamic:dynamic_()}. +send_bits(Req) -> + Erl_url = begin + _pipe = Req, + _pipe@1 = gleam@http@request:to_uri(_pipe), + _pipe@2 = gleam@uri:to_string(_pipe@1), + erlang:binary_to_list(_pipe@2) + end, + Erl_headers = gleam@list:map(erlang:element(3, Req), fun charlist_header/1), + Erl_http_options = [], + Erl_options = [{body_format, binary}], + gleam@result:then(case erlang:element(2, Req) of + options -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + head -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + get -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + _ -> + Erl_content_type = begin + _pipe@3 = Req, + _pipe@4 = gleam@http@request:get_header( + _pipe@3, + <<"content-type"/utf8>> + ), + _pipe@5 = gleam@result:unwrap( + _pipe@4, + <<"application/octet-stream"/utf8>> + ), + erlang:binary_to_list(_pipe@5) + end, + Erl_req@1 = {Erl_url, + Erl_headers, + Erl_content_type, + erlang:element(4, Req)}, + httpc:request( + erlang:element(2, Req), + Erl_req@1, + Erl_http_options, + Erl_options + ) + end, fun(Response) -> + {{_, Status, _}, Headers, Resp_body} = Response, + {ok, + {response, + Status, + gleam@list:map(Headers, fun string_header/1), + Resp_body}} + end). + +-spec send(gleam@http@request:request(binary())) -> {ok, + gleam@http@response:response(binary())} | + {error, gleam@dynamic:dynamic_()}. +send(Req) -> + gleam@result:then( + begin + _pipe = Req, + _pipe@1 = gleam@http@request:map(_pipe, fun gleam_stdlib:identity/1), + send_bits(_pipe@1) + end, + fun(Resp) -> case gleam@bit_array:to_string(erlang:element(4, Resp)) of + {ok, Body} -> + {ok, gleam@http@response:set_body(Resp, Body)}; + + {error, _} -> + {error, + gleam@dynamic:from( + <<"Response body was not valid UTF-8"/utf8>> + )} + end end + ). diff --git a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam new file mode 100644 index 0000000..1edf411 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app new file mode 100644 index 0000000..c99b5ea --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app @@ -0,0 +1,10 @@ +{application, gleam_httpc, [ + {vsn, "2.1.1"}, + {applications, [gleam_http, + gleam_stdlib, + inets, + ssl]}, + {description, "Gleam bindings to Erlang's built in HTTP client, httpc"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache new file mode 100644 index 0000000..5aa9880 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta new file mode 100644 index 0000000..d5f2a3e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl new file mode 100644 index 0000000..9b215cb --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl @@ -0,0 +1,273 @@ +-module(gleam@otp@actor). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([continue/1, with_selector/2, to_erlang_start_result/1, start_spec/1, start/2, send/2, call/3]). +-export_type([message/1, next/2, init_result/2, self/2, spec/2, start_error/0, start_init_message/1]). + +-type message(LTB) :: {message, LTB} | + {system, gleam@otp@system:system_message()} | + {unexpected, gleam@dynamic:dynamic_()}. + +-type next(LTC, LTD) :: {continue, + LTD, + gleam@option:option(gleam@erlang@process:selector(LTC))} | + {stop, gleam@erlang@process:exit_reason()}. + +-type init_result(LTE, LTF) :: {ready, LTE, gleam@erlang@process:selector(LTF)} | + {failed, binary()}. + +-type self(LTG, LTH) :: {self, + gleam@otp@system:mode(), + gleam@erlang@process:pid_(), + LTG, + gleam@erlang@process:subject(LTH), + gleam@erlang@process:selector(message(LTH)), + gleam@otp@system:debug_state(), + fun((LTH, LTG) -> next(LTH, LTG))}. + +-type spec(LTI, LTJ) :: {spec, + fun(() -> init_result(LTI, LTJ)), + integer(), + fun((LTJ, LTI) -> next(LTJ, LTI))}. + +-type start_error() :: init_timeout | + {init_failed, gleam@erlang@process:exit_reason()} | + {init_crashed, gleam@dynamic:dynamic_()}. + +-type start_init_message(LTK) :: {ack, + {ok, gleam@erlang@process:subject(LTK)} | + {error, gleam@erlang@process:exit_reason()}} | + {mon, gleam@erlang@process:process_down()}. + +-spec continue(LTR) -> next(any(), LTR). +continue(State) -> + {continue, State, none}. + +-spec with_selector(next(LTV, LTW), gleam@erlang@process:selector(LTV)) -> next(LTV, LTW). +with_selector(Value, Selector) -> + case Value of + {continue, State, _} -> + {continue, State, {some, Selector}}; + + _ -> + Value + end. + +-spec exit_process(gleam@erlang@process:exit_reason()) -> gleam@erlang@process:exit_reason(). +exit_process(Reason) -> + Reason. + +-spec selecting_system_messages(gleam@erlang@process:selector(message(LUH))) -> gleam@erlang@process:selector(message(LUH)). +selecting_system_messages(Selector) -> + _pipe = Selector, + gleam@erlang@process:selecting_record3( + _pipe, + erlang:binary_to_atom(<<"system"/utf8>>), + fun gleam_otp_external:convert_system_message/2 + ). + +-spec receive_message(self(any(), LUD)) -> message(LUD). +receive_message(Self) -> + Selector = case erlang:element(2, Self) of + suspended -> + _pipe = gleam_erlang_ffi:new_selector(), + selecting_system_messages(_pipe); + + running -> + _pipe@1 = gleam_erlang_ffi:new_selector(), + _pipe@2 = gleam@erlang@process:selecting_anything( + _pipe@1, + fun(Field@0) -> {unexpected, Field@0} end + ), + _pipe@3 = gleam_erlang_ffi:merge_selector( + _pipe@2, + erlang:element(6, Self) + ), + selecting_system_messages(_pipe@3) + end, + gleam_erlang_ffi:select(Selector). + +-spec process_status_info(self(any(), any())) -> gleam@otp@system:status_info(). +process_status_info(Self) -> + {status_info, + erlang:binary_to_atom(<<"gleam@otp@actor"/utf8>>), + erlang:element(3, Self), + erlang:element(2, Self), + erlang:element(7, Self), + gleam@dynamic:from(erlang:element(4, Self))}. + +-spec init_selector( + gleam@erlang@process:subject(LYW), + gleam@erlang@process:selector(LYW) +) -> gleam@erlang@process:selector(message(LYW)). +init_selector(Subject, Selector) -> + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Subject, + fun(Field@0) -> {message, Field@0} end + ), + gleam_erlang_ffi:merge_selector( + _pipe@1, + gleam_erlang_ffi:map_selector( + Selector, + fun(Field@0) -> {message, Field@0} end + ) + ). + +-spec loop(self(any(), any())) -> gleam@erlang@process:exit_reason(). +loop(Self) -> + case receive_message(Self) of + {system, System} -> + case System of + {get_state, Callback} -> + Callback(gleam@dynamic:from(erlang:element(4, Self))), + loop(Self); + + {resume, Callback@1} -> + Callback@1(), + loop(erlang:setelement(2, Self, running)); + + {suspend, Callback@2} -> + Callback@2(), + loop(erlang:setelement(2, Self, suspended)); + + {get_status, Callback@3} -> + Callback@3(process_status_info(Self)), + loop(Self) + end; + + {unexpected, Message} -> + logger:warning( + unicode:characters_to_list( + <<"Actor discarding unexpected message: ~s"/utf8>> + ), + [unicode:characters_to_list(gleam@string:inspect(Message))] + ), + loop(Self); + + {message, Msg} -> + case (erlang:element(8, Self))(Msg, erlang:element(4, Self)) of + {stop, Reason} -> + exit_process(Reason); + + {continue, State, New_selector} -> + Selector = begin + _pipe = New_selector, + _pipe@1 = gleam@option:map( + _pipe, + fun(_capture) -> + init_selector(erlang:element(5, Self), _capture) + end + ), + gleam@option:unwrap(_pipe@1, erlang:element(6, Self)) + end, + loop( + erlang:setelement( + 6, + erlang:setelement(4, Self, State), + Selector + ) + ) + end + end. + +-spec initialise_actor( + spec(any(), LUY), + gleam@erlang@process:subject({ok, gleam@erlang@process:subject(LUY)} | + {error, gleam@erlang@process:exit_reason()}) +) -> gleam@erlang@process:exit_reason(). +initialise_actor(Spec, Ack) -> + Subject = gleam@erlang@process:new_subject(), + case (erlang:element(2, Spec))() of + {ready, State, Selector} -> + Selector@1 = init_selector(Subject, Selector), + gleam@erlang@process:send(Ack, {ok, Subject}), + Self = {self, + running, + gleam@erlang@process:subject_owner(Ack), + State, + Subject, + Selector@1, + sys:debug_options([]), + erlang:element(4, Spec)}, + loop(Self); + + {failed, Reason} -> + gleam@erlang@process:send(Ack, {error, {abnormal, Reason}}), + exit_process({abnormal, Reason}) + end. + +-spec to_erlang_start_result( + {ok, gleam@erlang@process:subject(any())} | {error, start_error()} +) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. +to_erlang_start_result(Res) -> + case Res of + {ok, X} -> + {ok, gleam@erlang@process:subject_owner(X)}; + + {error, X@1} -> + {error, gleam@dynamic:from(X@1)} + end. + +-spec start_spec(spec(any(), LVM)) -> {ok, gleam@erlang@process:subject(LVM)} | + {error, start_error()}. +start_spec(Spec) -> + Ack_subject = gleam@erlang@process:new_subject(), + Child = gleam@erlang@process:start( + fun() -> initialise_actor(Spec, Ack_subject) end, + true + ), + Monitor = gleam@erlang@process:monitor_process(Child), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Ack_subject, + fun(Field@0) -> {ack, Field@0} end + ), + gleam@erlang@process:selecting_process_down( + _pipe@1, + Monitor, + fun(Field@0) -> {mon, Field@0} end + ) + end, + Result = case gleam_erlang_ffi:select(Selector, erlang:element(3, Spec)) of + {ok, {ack, {ok, Channel}}} -> + {ok, Channel}; + + {ok, {ack, {error, Reason}}} -> + {error, {init_failed, Reason}}; + + {ok, {mon, Down}} -> + {error, {init_crashed, erlang:element(3, Down)}}; + + {error, nil} -> + gleam@erlang@process:kill(Child), + {error, init_timeout} + end, + gleam_erlang_ffi:demonitor(Monitor), + Result. + +-spec start(LVS, fun((LVT, LVS) -> next(LVT, LVS))) -> {ok, + gleam@erlang@process:subject(LVT)} | + {error, start_error()}. +start(State, Loop) -> + start_spec( + {spec, + fun() -> {ready, State, gleam_erlang_ffi:new_selector()} end, + 5000, + Loop} + ). + +-spec send(gleam@erlang@process:subject(LVZ), LVZ) -> nil. +send(Subject, Msg) -> + gleam@erlang@process:send(Subject, Msg). + +-spec call( + gleam@erlang@process:subject(LWB), + fun((gleam@erlang@process:subject(LWD)) -> LWB), + integer() +) -> LWD. +call(Selector, Make_message, Timeout) -> + gleam@erlang@process:call(Selector, Make_message, Timeout). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache new file mode 100644 index 0000000..2970843 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta new file mode 100644 index 0000000..1997b5a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl new file mode 100644 index 0000000..8792f14 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl @@ -0,0 +1,53 @@ +-module(gleam@otp@intensity_tracker). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/2, trim_window/3, add_event/1]). +-export_type([intensity_tracker/0, too_intense/0]). + +-opaque intensity_tracker() :: {intensity_tracker, + integer(), + integer(), + list(integer())}. + +-type too_intense() :: too_intense. + +-spec new(integer(), integer()) -> intensity_tracker(). +new(Limit, Period) -> + {intensity_tracker, Limit, Period, []}. + +-spec now_seconds() -> integer(). +now_seconds() -> + erlang:monotonic_time(1). + +-spec trim_window(list(integer()), integer(), integer()) -> list(integer()). +trim_window(Events, Now, Period) -> + case Events of + [] -> + []; + + [Event | Events@1] -> + case Now >= (Event + Period) of + true -> + [Event | trim_window(Events@1, Now, Period)]; + + false -> + [] + end + end. + +-spec add_event(intensity_tracker()) -> {ok, intensity_tracker()} | + {error, too_intense()}. +add_event(Tracker) -> + Now = now_seconds(), + Events = trim_window( + [Now | erlang:element(4, Tracker)], + Now, + erlang:element(3, Tracker) + ), + case gleam@list:length(Events) >= erlang:element(2, Tracker) of + true -> + {error, too_intense}; + + false -> + {ok, erlang:setelement(4, Tracker, Events)} + end. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache new file mode 100644 index 0000000..e911262 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta new file mode 100644 index 0000000..5f1cb59 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl new file mode 100644 index 0000000..b205739 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl @@ -0,0 +1,8 @@ +-module(gleam@otp@port). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([port_/0]). + +-type port_() :: any(). + + diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache new file mode 100644 index 0000000..e3cbbc7 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta new file mode 100644 index 0000000..f6f257e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl new file mode 100644 index 0000000..75e6c9f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl @@ -0,0 +1,322 @@ +-module(gleam@otp@supervisor). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([add/2, supervisor/1, worker/1, returning/2, start_spec/1, start/1, application_stopped/0, to_erlang_start_result/1]). +-export_type([spec/2, children/1, child_spec/3, child_start_error/0, message/0, instruction/0, state/1, starter/1, child/1, handle_exit_error/0, application_start_mode/0, application_stop/0]). + +-type spec(MID, MIE) :: {spec, + MID, + integer(), + integer(), + fun((children(MID)) -> children(MIE))}. + +-opaque children(MIF) :: {ready, starter(MIF)} | {failed, child_start_error()}. + +-opaque child_spec(MIG, MIH, MII) :: {child_spec, + fun((MIH) -> {ok, gleam@erlang@process:subject(MIG)} | + {error, gleam@otp@actor:start_error()}), + fun((MIH, gleam@erlang@process:subject(MIG)) -> MII)}. + +-type child_start_error() :: {child_start_error, + gleam@option:option(gleam@erlang@process:pid_()), + gleam@otp@actor:start_error()}. + +-opaque message() :: {exit, gleam@erlang@process:exit_message()} | + {retry_restart, gleam@erlang@process:pid_()}. + +-type instruction() :: start_all | {start_from, gleam@erlang@process:pid_()}. + +-type state(MIJ) :: {state, + gleam@otp@intensity_tracker:intensity_tracker(), + starter(MIJ), + gleam@erlang@process:subject(gleam@erlang@process:pid_())}. + +-type starter(MIK) :: {starter, + MIK, + gleam@option:option(fun((instruction()) -> {ok, + {starter(MIK), instruction()}} | + {error, child_start_error()}))}. + +-type child(MIL) :: {child, gleam@erlang@process:pid_(), MIL}. + +-type handle_exit_error() :: {restart_failed, + gleam@erlang@process:pid_(), + gleam@otp@intensity_tracker:intensity_tracker()} | + too_many_restarts. + +-type application_start_mode() :: normal | + {takeover, gleam@erlang@node:node_()} | + {failover, gleam@erlang@node:node_()}. + +-type application_stop() :: any(). + +-spec start_child(child_spec(any(), MIP, MIQ), MIP) -> {ok, child(MIQ)} | + {error, child_start_error()}. +start_child(Child_spec, Argument) -> + gleam@result:then( + begin + _pipe = (erlang:element(2, Child_spec))(Argument), + gleam@result:map_error( + _pipe, + fun(_capture) -> {child_start_error, none, _capture} end + ) + end, + fun(Subject) -> + {ok, + {child, + gleam@erlang@process:subject_owner(Subject), + (erlang:element(3, Child_spec))(Argument, Subject)}} + end + ). + +-spec shutdown_child( + gleam@erlang@process:pid_(), + child_spec(any(), any(), any()) +) -> nil. +shutdown_child(Pid, _) -> + gleam@erlang@process:send_exit(Pid). + +-spec perform_instruction_for_child( + MJD, + instruction(), + child_spec(any(), MJD, MJF), + child(MJF) +) -> {ok, {child(MJF), instruction()}} | {error, child_start_error()}. +perform_instruction_for_child(Argument, Instruction, Child_spec, Child) -> + Current = erlang:element(2, Child), + case Instruction of + {start_from, Target} when Target =/= Current -> + {ok, {Child, Instruction}}; + + _ -> + shutdown_child(Current, Child_spec), + gleam@result:then( + start_child(Child_spec, Argument), + fun(Child@1) -> {ok, {Child@1, start_all}} end + ) + end. + +-spec add_child_to_starter( + starter(MJN), + child_spec(any(), MJN, MJQ), + child(MJQ) +) -> starter(MJQ). +add_child_to_starter(Starter, Child_spec, Child) -> + Starter@3 = fun(Instruction) -> + gleam@result:then(case erlang:element(3, Starter) of + {some, Start} -> + Start(Instruction); + + none -> + {ok, {Starter, Instruction}} + end, fun(_use0) -> + {Starter@1, Instruction@1} = _use0, + gleam@result:then( + perform_instruction_for_child( + erlang:element(2, Starter@1), + Instruction@1, + Child_spec, + Child + ), + fun(_use0@1) -> + {Child@1, Instruction@2} = _use0@1, + Starter@2 = add_child_to_starter( + Starter@1, + Child_spec, + Child@1 + ), + {ok, {Starter@2, Instruction@2}} + end + ) + end) + end, + {starter, erlang:element(3, Child), {some, Starter@3}}. + +-spec start_and_add_child(starter(MJW), child_spec(any(), MJW, MJZ)) -> children(MJZ). +start_and_add_child(State, Child_spec) -> + case start_child(Child_spec, erlang:element(2, State)) of + {ok, Child} -> + {ready, add_child_to_starter(State, Child_spec, Child)}; + + {error, Reason} -> + {failed, Reason} + end. + +-spec add(children(MKE), child_spec(any(), MKE, MKH)) -> children(MKH). +add(Children, Child_spec) -> + case Children of + {failed, Fail} -> + {failed, Fail}; + + {ready, State} -> + start_and_add_child(State, Child_spec) + end. + +-spec supervisor( + fun((MKM) -> {ok, gleam@erlang@process:subject(MKN)} | + {error, gleam@otp@actor:start_error()}) +) -> child_spec(MKN, MKM, MKM). +supervisor(Start) -> + {child_spec, Start, fun(Argument, _) -> Argument end}. + +-spec worker( + fun((MKU) -> {ok, gleam@erlang@process:subject(MKV)} | + {error, gleam@otp@actor:start_error()}) +) -> child_spec(MKV, MKU, MKU). +worker(Start) -> + {child_spec, Start, fun(Argument, _) -> Argument end}. + +-spec returning( + child_spec(MLC, MLD, any()), + fun((MLD, gleam@erlang@process:subject(MLC)) -> MLJ) +) -> child_spec(MLC, MLD, MLJ). +returning(Child, Updater) -> + {child_spec, erlang:element(2, Child), Updater}. + +-spec init(spec(any(), MLO)) -> gleam@otp@actor:init_result(state(MLO), message()). +init(Spec) -> + Retry = gleam@erlang@process:new_subject(), + gleam_erlang_ffi:trap_exits(true), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Retry, + fun(Field@0) -> {retry_restart, Field@0} end + ), + gleam@erlang@process:selecting_trapped_exits( + _pipe@1, + fun(Field@0) -> {exit, Field@0} end + ) + end, + Result = begin + _pipe@2 = {starter, erlang:element(2, Spec), none}, + _pipe@3 = {ready, _pipe@2}, + (erlang:element(5, Spec))(_pipe@3) + end, + case Result of + {ready, Starter} -> + Restarts = gleam@otp@intensity_tracker:new( + erlang:element(3, Spec), + erlang:element(4, Spec) + ), + State = {state, Restarts, Starter, Retry}, + {ready, State, Selector}; + + {failed, Error} -> + {failed, case erlang:element(3, Error) of + init_timeout -> + <<"Child initialisation timed out"/utf8>>; + + {init_crashed, Reason} -> + gleam@string:append( + <<"Child crashed during initialisation: "/utf8>>, + gleam@string:inspect(Reason) + ); + + {init_failed, Reason@1} -> + gleam@string:append( + <<"Child failed to start during initialisation: "/utf8>>, + gleam@string:inspect(Reason@1) + ) + end} + end. + +-spec handle_exit(gleam@erlang@process:pid_(), state(MLU)) -> gleam@otp@actor:next(message(), state(MLU)). +handle_exit(Pid, State) -> + Outcome = begin + _assert_subject = erlang:element(3, erlang:element(3, State)), + {some, Start} = case _assert_subject of + {some, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/supervisor"/utf8>>, + function => <<"handle_exit"/utf8>>, + line => 293}) + end, + gleam@result:then( + begin + _pipe = erlang:element(2, State), + _pipe@1 = gleam@otp@intensity_tracker:add_event(_pipe), + gleam@result:map_error(_pipe@1, fun(_) -> too_many_restarts end) + end, + fun(Restarts) -> + gleam@result:then( + begin + _pipe@2 = Start({start_from, Pid}), + gleam@result:map_error( + _pipe@2, + fun(E) -> + {restart_failed, + gleam@option:unwrap( + erlang:element(2, E), + Pid + ), + Restarts} + end + ) + end, + fun(_use0) -> + {Starter, _} = _use0, + {ok, + erlang:setelement( + 2, + erlang:setelement(3, State, Starter), + Restarts + )} + end + ) + end + ) + end, + case Outcome of + {ok, State@1} -> + gleam@otp@actor:continue(State@1); + + {error, {restart_failed, Failed_child, Restarts@1}} -> + gleam@erlang@process:send(erlang:element(4, State), Failed_child), + State@2 = erlang:setelement(2, State, Restarts@1), + gleam@otp@actor:continue(State@2); + + {error, too_many_restarts} -> + {stop, + {abnormal, + <<"Child processes restarted too many times within allowed period"/utf8>>}} + end. + +-spec loop(message(), state(MLZ)) -> gleam@otp@actor:next(message(), state(MLZ)). +loop(Message, State) -> + case Message of + {exit, Exit_message} -> + handle_exit(erlang:element(2, Exit_message), State); + + {retry_restart, Pid} -> + handle_exit(Pid, State) + end. + +-spec start_spec(spec(any(), any())) -> {ok, + gleam@erlang@process:subject(message())} | + {error, gleam@otp@actor:start_error()}. +start_spec(Spec) -> + gleam@otp@actor:start_spec( + {spec, fun() -> init(Spec) end, 60000, fun loop/2} + ). + +-spec start(fun((children(nil)) -> children(any()))) -> {ok, + gleam@erlang@process:subject(message())} | + {error, gleam@otp@actor:start_error()}. +start(Init) -> + start_spec({spec, nil, 1, 5, Init}). + +-spec application_stopped() -> application_stop(). +application_stopped() -> + gleam_otp_external:application_stopped(). + +-spec to_erlang_start_result( + {ok, gleam@erlang@process:subject(any())} | + {error, gleam@otp@actor:start_error()} +) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. +to_erlang_start_result(Res) -> + gleam@otp@actor:to_erlang_start_result(Res). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache new file mode 100644 index 0000000..1ecd94e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta new file mode 100644 index 0000000..9f64041 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl new file mode 100644 index 0000000..622e5ea --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl @@ -0,0 +1,43 @@ +-module(gleam@otp@system). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([debug_state/1, get_state/1, suspend/1, resume/1]). +-export_type([mode/0, debug_option/0, debug_state/0, status_info/0, system_message/0, do_not_leak/0]). + +-type mode() :: running | suspended. + +-type debug_option() :: no_debug. + +-type debug_state() :: any(). + +-type status_info() :: {status_info, + gleam@erlang@atom:atom_(), + gleam@erlang@process:pid_(), + mode(), + debug_state(), + gleam@dynamic:dynamic_()}. + +-type system_message() :: {resume, fun(() -> nil)} | + {suspend, fun(() -> nil)} | + {get_state, fun((gleam@dynamic:dynamic_()) -> nil)} | + {get_status, fun((status_info()) -> nil)}. + +-type do_not_leak() :: any(). + +-spec debug_state(list(debug_option())) -> debug_state(). +debug_state(A) -> + sys:debug_options(A). + +-spec get_state(gleam@erlang@process:pid_()) -> gleam@dynamic:dynamic_(). +get_state(From) -> + sys:get_state(From). + +-spec suspend(gleam@erlang@process:pid_()) -> nil. +suspend(Pid) -> + sys:suspend(Pid), + nil. + +-spec resume(gleam@erlang@process:pid_()) -> nil. +resume(Pid) -> + sys:resume(Pid), + nil. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache new file mode 100644 index 0000000..3360869 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta new file mode 100644 index 0000000..e4f89cf Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl new file mode 100644 index 0000000..ae4037d --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl @@ -0,0 +1,111 @@ +-module(gleam@otp@task). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([async/1, try_await/2, await/2, try_await_forever/1, await_forever/1]). +-export_type([task/1, await_error/0, message/1]). + +-opaque task(MEB) :: {task, + gleam@erlang@process:pid_(), + gleam@erlang@process:pid_(), + gleam@erlang@process:process_monitor(), + gleam@erlang@process:selector(message(MEB))}. + +-type await_error() :: timeout | {exit, gleam@dynamic:dynamic_()}. + +-type message(MEC) :: {from_monitor, gleam@erlang@process:process_down()} | + {from_subject, MEC}. + +-spec async(fun(() -> MED)) -> task(MED). +async(Work) -> + Owner = erlang:self(), + Subject = gleam@erlang@process:new_subject(), + Pid = gleam@erlang@process:start( + fun() -> gleam@erlang@process:send(Subject, Work()) end, + true + ), + Monitor = gleam@erlang@process:monitor_process(Pid), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting_process_down( + _pipe, + Monitor, + fun(Field@0) -> {from_monitor, Field@0} end + ), + gleam@erlang@process:selecting( + _pipe@1, + Subject, + fun(Field@0) -> {from_subject, Field@0} end + ) + end, + {task, Owner, Pid, Monitor, Selector}. + +-spec assert_owner(task(any())) -> nil. +assert_owner(Task) -> + Self = erlang:self(), + case erlang:element(2, Task) =:= Self of + true -> + nil; + + false -> + gleam@erlang@process:send_abnormal_exit( + Self, + <<"awaited on a task that does not belong to this process"/utf8>> + ) + end. + +-spec try_await(task(MEH), integer()) -> {ok, MEH} | {error, await_error()}. +try_await(Task, Timeout) -> + assert_owner(Task), + case gleam_erlang_ffi:select(erlang:element(5, Task), Timeout) of + {ok, {from_subject, X}} -> + gleam_erlang_ffi:demonitor(erlang:element(4, Task)), + {ok, X}; + + {ok, {from_monitor, {process_down, _, Reason}}} -> + {error, {exit, Reason}}; + + {error, nil} -> + {error, timeout} + end. + +-spec await(task(MEL), integer()) -> MEL. +await(Task, Timeout) -> + _assert_subject = try_await(Task, Timeout), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/task"/utf8>>, + function => <<"await"/utf8>>, + line => 117}) + end, + Value. + +-spec try_await_forever(task(MEN)) -> {ok, MEN} | {error, await_error()}. +try_await_forever(Task) -> + assert_owner(Task), + case gleam_erlang_ffi:select(erlang:element(5, Task)) of + {from_subject, X} -> + gleam_erlang_ffi:demonitor(erlang:element(4, Task)), + {ok, X}; + + {from_monitor, {process_down, _, Reason}} -> + {error, {exit, Reason}} + end. + +-spec await_forever(task(MER)) -> MER. +await_forever(Task) -> + _assert_subject = try_await_forever(Task), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/task"/utf8>>, + function => <<"await_forever"/utf8>>, + line => 149}) + end, + Value. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache new file mode 100644 index 0000000..601b922 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta new file mode 100644 index 0000000..6b7a3a8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl new file mode 100644 index 0000000..9381ad2 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl @@ -0,0 +1,28 @@ +-module(gleam_otp). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec spawn_task(integer()) -> gleam@otp@task:task(nil). +spawn_task(I) -> + gleam@otp@task:async(fun() -> case (I rem 500) =:= 0 of + true -> + gleam@io:println( + <<"Hello from "/utf8, (gleam@int:to_string(I))/binary>> + ); + + false -> + nil + end end). + +-spec main() -> integer(). +main() -> + gleam@io:debug( + gleam_otp_test_external:get_message_queue_length(erlang:self()) + ), + _pipe = gleam@list:range(0, 1000000), + _pipe@1 = gleam@list:map(_pipe, fun spawn_task/1), + gleam@list:each(_pipe@1, fun gleam@otp@task:await_forever/1), + gleam@io:debug( + gleam_otp_test_external:get_message_queue_length(erlang:self()) + ). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl new file mode 100644 index 0000000..8910a67 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl @@ -0,0 +1,43 @@ +-module(gleam_otp_external). + +-export([application_stopped/0, convert_system_message/2]). + +% TODO: support other system messages +% {replace_state, StateFn} +% {change_code, Mod, Vsn, Extra} +% {terminate, Reason} +% {debug, {log, Flag}} +% {debug, {trace, Flag}} +% {debug, {log_to_file, FileName}} +% {debug, {statistics, Flag}} +% {debug, no_debug} +% {debug, {install, {Func, FuncState}}} +% {debug, {install, {FuncId, Func, FuncState}}} +% {debug, {remove, FuncOrId}} +% GetStatus(Subject(StatusInfo)) +convert_system_message({From, Ref}, Request) when is_pid(From) -> + Reply = fun(Msg) -> + erlang:send(From, {Ref, Msg}), + nil + end, + System = fun(Callback) -> + {system, {Request, Callback}} + end, + case Request of + get_status -> System(fun(Status) -> Reply(process_status(Status)) end); + get_state -> System(Reply); + suspend -> System(fun() -> Reply(ok) end); + resume -> System(fun() -> Reply(ok) end); + Other -> {unexpeceted, Other} + end. + +process_status({status_info, Module, Parent, Mode, DebugState, State}) -> + Data = [ + get(), Mode, Parent, DebugState, + [{header, "Status for Gleam process " ++ pid_to_list(self())}, + {data, [{'Status', Mode}, {'Parent', Parent}, {'State', State}]}] + ], + {status, self(), {module, Module}, Data}. + +application_stopped() -> + ok. diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam new file mode 100644 index 0000000..1a777b4 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam new file mode 100644 index 0000000..5a126b5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam new file mode 100644 index 0000000..8b72b7d Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam new file mode 100644 index 0000000..72f4b32 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam new file mode 100644 index 0000000..3aefd21 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam new file mode 100644 index 0000000..c21bc3b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app new file mode 100644 index 0000000..21dd444 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app @@ -0,0 +1,8 @@ +{application, gleam_otp, [ + {vsn, "0.8.0"}, + {applications, [gleam_erlang, + gleam_stdlib]}, + {description, "Fault tolerant multicore Gleam programs with OTP"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam new file mode 100644 index 0000000..0a25445 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam new file mode 100644 index 0000000..f77f93b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl new file mode 100644 index 0000000..85677d1 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl @@ -0,0 +1,4 @@ +-record(continue, { + state :: any(), + selector :: gleam@option:option(gleam@erlang@process:selector(any())) +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl new file mode 100644 index 0000000..75faa95 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl @@ -0,0 +1 @@ +-record(ready, {state :: any(), selector :: gleam@erlang@process:selector(any())}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl new file mode 100644 index 0000000..5287439 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl @@ -0,0 +1,5 @@ +-record(spec, { + init :: fun(() -> gleam@otp@actor:init_result(any(), any())), + init_timeout :: integer(), + loop :: fun((any(), any()) -> gleam@otp@actor:next(any(), any())) +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl new file mode 100644 index 0000000..3ed0b01 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl @@ -0,0 +1,5 @@ +-record(intensity_tracker, { + limit :: integer(), + period :: integer(), + events :: list(integer()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl new file mode 100644 index 0000000..7afd07f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl @@ -0,0 +1,5 @@ +-record(child_spec, { + start :: fun((any()) -> {ok, gleam@erlang@process:subject(any())} | + {error, gleam@otp@actor:start_error()}), + returning :: fun((any(), gleam@erlang@process:subject(any())) -> any()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl new file mode 100644 index 0000000..b10bd9f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl @@ -0,0 +1,6 @@ +-record(spec, { + argument :: any(), + max_frequency :: integer(), + frequency_period :: integer(), + init :: fun((gleam@otp@supervisor:children(any())) -> gleam@otp@supervisor:children(any())) +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl new file mode 100644 index 0000000..99ab4cb --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl @@ -0,0 +1,7 @@ +-record(status_info, { + module :: gleam@erlang@atom:atom_(), + parent :: gleam@erlang@process:pid_(), + mode :: gleam@otp@system:mode(), + debug_state :: gleam@otp@system:debug_state(), + state :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl new file mode 100644 index 0000000..7c83874 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl @@ -0,0 +1 @@ +-record(exit, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl new file mode 100644 index 0000000..959bea8 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl @@ -0,0 +1,6 @@ +-record(task, { + owner :: gleam@erlang@process:pid_(), + pid :: gleam@erlang@process:pid_(), + monitor :: gleam@erlang@process:process_monitor(), + selector :: gleam@erlang@process:selector(gleam@otp@task:message(any())) +}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs new file mode 100644 index 0000000..a8309e0 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs @@ -0,0 +1,957 @@ +/** + * This file uses jsdoc to annotate types. + * These types can be checked using the typescript compiler with "checkjs" option. + */ + +import { isEqual } from "./gleam.mjs"; + +const referenceMap = new WeakMap(); +const tempDataView = new DataView(new ArrayBuffer(8)); +let referenceUID = 0; +/** + * hash the object by reference using a weak map and incrementing uid + * @param {any} o + * @returns {number} + */ +function hashByReference(o) { + const known = referenceMap.get(o); + if (known !== undefined) { + return known; + } + const hash = referenceUID++; + if (referenceUID === 0x7fffffff) { + referenceUID = 0; + } + referenceMap.set(o, hash); + return hash; +} +/** + * merge two hashes in an order sensitive way + * @param {number} a + * @param {number} b + * @returns {number} + */ +function hashMerge(a, b) { + return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; +} +/** + * standard string hash popularised by java + * @param {string} s + * @returns {number} + */ +function hashString(s) { + let hash = 0; + const len = s.length; + for (let i = 0; i < len; i++) { + hash = (Math.imul(31, hash) + s.charCodeAt(i)) | 0; + } + return hash; +} +/** + * hash a number by converting to two integers and do some jumbling + * @param {number} n + * @returns {number} + */ +function hashNumber(n) { + tempDataView.setFloat64(0, n); + const i = tempDataView.getInt32(0); + const j = tempDataView.getInt32(4); + return Math.imul(0x45d9f3b, (i >> 16) ^ i) ^ j; +} +/** + * hash a BigInt by converting it to a string and hashing that + * @param {BigInt} n + * @returns {number} + */ +function hashBigInt(n) { + return hashString(n.toString()); +} +/** + * hash any js object + * @param {any} o + * @returns {number} + */ +function hashObject(o) { + const proto = Object.getPrototypeOf(o); + if (proto !== null && typeof proto.hashCode === "function") { + try { + const code = o.hashCode(o); + if (typeof code === "number") { + return code; + } + } catch {} + } + if (o instanceof Promise || o instanceof WeakSet || o instanceof WeakMap) { + return hashByReference(o); + } + if (o instanceof Date) { + return hashNumber(o.getTime()); + } + let h = 0; + if (o instanceof ArrayBuffer) { + o = new Uint8Array(o); + } + if (Array.isArray(o) || o instanceof Uint8Array) { + for (let i = 0; i < o.length; i++) { + h = (Math.imul(31, h) + getHash(o[i])) | 0; + } + } else if (o instanceof Set) { + o.forEach((v) => { + h = (h + getHash(v)) | 0; + }); + } else if (o instanceof Map) { + o.forEach((v, k) => { + h = (h + hashMerge(getHash(v), getHash(k))) | 0; + }); + } else { + const keys = Object.keys(o); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + const v = o[k]; + h = (h + hashMerge(getHash(v), hashString(k))) | 0; + } + } + return h; +} +/** + * hash any js value + * @param {any} u + * @returns {number} + */ +export function getHash(u) { + if (u === null) return 0x42108422; + if (u === undefined) return 0x42108423; + if (u === true) return 0x42108421; + if (u === false) return 0x42108420; + switch (typeof u) { + case "number": + return hashNumber(u); + case "string": + return hashString(u); + case "bigint": + return hashBigInt(u); + case "object": + return hashObject(u); + case "symbol": + return hashByReference(u); + case "function": + return hashByReference(u); + default: + return 0; // should be unreachable + } +} +/** + * @template K,V + * @typedef {ArrayNode | IndexNode | CollisionNode} Node + */ +/** + * @template K,V + * @typedef {{ type: typeof ENTRY, k: K, v: V }} Entry + */ +/** + * @template K,V + * @typedef {{ type: typeof ARRAY_NODE, size: number, array: (undefined | Entry | Node)[] }} ArrayNode + */ +/** + * @template K,V + * @typedef {{ type: typeof INDEX_NODE, bitmap: number, array: (Entry | Node)[] }} IndexNode + */ +/** + * @template K,V + * @typedef {{ type: typeof COLLISION_NODE, hash: number, array: Entry[] }} CollisionNode + */ +/** + * @typedef {{ val: boolean }} Flag + */ +const SHIFT = 5; // number of bits you need to shift by to get the next bucket +const BUCKET_SIZE = Math.pow(2, SHIFT); +const MASK = BUCKET_SIZE - 1; // used to zero out all bits not in the bucket +const MAX_INDEX_NODE = BUCKET_SIZE / 2; // when does index node grow into array node +const MIN_ARRAY_NODE = BUCKET_SIZE / 4; // when does array node shrink to index node +const ENTRY = 0; +const ARRAY_NODE = 1; +const INDEX_NODE = 2; +const COLLISION_NODE = 3; +/** @type {IndexNode} */ +const EMPTY = { + type: INDEX_NODE, + bitmap: 0, + array: [], +}; +/** + * Mask the hash to get only the bucket corresponding to shift + * @param {number} hash + * @param {number} shift + * @returns {number} + */ +function mask(hash, shift) { + return (hash >>> shift) & MASK; +} +/** + * Set only the Nth bit where N is the masked hash + * @param {number} hash + * @param {number} shift + * @returns {number} + */ +function bitpos(hash, shift) { + return 1 << mask(hash, shift); +} +/** + * Count the number of 1 bits in a number + * @param {number} x + * @returns {number} + */ +function bitcount(x) { + x -= (x >> 1) & 0x55555555; + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0f0f0f0f; + x += x >> 8; + x += x >> 16; + return x & 0x7f; +} +/** + * Calculate the array index of an item in a bitmap index node + * @param {number} bitmap + * @param {number} bit + * @returns {number} + */ +function index(bitmap, bit) { + return bitcount(bitmap & (bit - 1)); +} +/** + * Efficiently copy an array and set one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @param {T} val + * @returns {T[]} + */ +function cloneAndSet(arr, at, val) { + const len = arr.length; + const out = new Array(len); + for (let i = 0; i < len; ++i) { + out[i] = arr[i]; + } + out[at] = val; + return out; +} +/** + * Efficiently copy an array and insert one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @param {T} val + * @returns {T[]} + */ +function spliceIn(arr, at, val) { + const len = arr.length; + const out = new Array(len + 1); + let i = 0; + let g = 0; + while (i < at) { + out[g++] = arr[i++]; + } + out[g++] = val; + while (i < len) { + out[g++] = arr[i++]; + } + return out; +} +/** + * Efficiently copy an array and remove one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @returns {T[]} + */ +function spliceOut(arr, at) { + const len = arr.length; + const out = new Array(len - 1); + let i = 0; + let g = 0; + while (i < at) { + out[g++] = arr[i++]; + } + ++i; + while (i < len) { + out[g++] = arr[i++]; + } + return out; +} +/** + * Create a new node containing two entries + * @template K,V + * @param {number} shift + * @param {K} key1 + * @param {V} val1 + * @param {number} key2hash + * @param {K} key2 + * @param {V} val2 + * @returns {Node} + */ +function createNode(shift, key1, val1, key2hash, key2, val2) { + const key1hash = getHash(key1); + if (key1hash === key2hash) { + return { + type: COLLISION_NODE, + hash: key1hash, + array: [ + { type: ENTRY, k: key1, v: val1 }, + { type: ENTRY, k: key2, v: val2 }, + ], + }; + } + const addedLeaf = { val: false }; + return assoc( + assocIndex(EMPTY, shift, key1hash, key1, val1, addedLeaf), + shift, + key2hash, + key2, + val2, + addedLeaf + ); +} +/** + * @template T,K,V + * @callback AssocFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @param {V} val + * @param {Flag} addedLeaf + * @returns {Node} + */ +/** + * Associate a node with a new entry, creating a new node + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assoc(root, shift, hash, key, val, addedLeaf) { + switch (root.type) { + case ARRAY_NODE: + return assocArray(root, shift, hash, key, val, addedLeaf); + case INDEX_NODE: + return assocIndex(root, shift, hash, key, val, addedLeaf); + case COLLISION_NODE: + return assocCollision(root, shift, hash, key, val, addedLeaf); + } +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocArray(root, shift, hash, key, val, addedLeaf) { + const idx = mask(hash, shift); + const node = root.array[idx]; + // if the corresponding index is empty set the index to a newly created node + if (node === undefined) { + addedLeaf.val = true; + return { + type: ARRAY_NODE, + size: root.size + 1, + array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), + }; + } + if (node.type === ENTRY) { + // if keys are equal replace the entry + if (isEqual(key, node.k)) { + if (val === node.v) { + return root; + } + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }), + }; + } + // otherwise upgrade the entry to a node and insert + addedLeaf.val = true; + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet( + root.array, + idx, + createNode(shift + SHIFT, node.k, node.v, hash, key, val) + ), + }; + } + // otherwise call assoc on the child node + const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); + // if the child node hasn't changed just return the old root + if (n === node) { + return root; + } + // otherwise set the index to the new node + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, n), + }; +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocIndex(root, shift, hash, key, val, addedLeaf) { + const bit = bitpos(hash, shift); + const idx = index(root.bitmap, bit); + // if there is already a item at this hash index.. + if ((root.bitmap & bit) !== 0) { + // if there is a node at the index (not an entry), call assoc on the child node + const node = root.array[idx]; + if (node.type !== ENTRY) { + const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); + if (n === node) { + return root; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, n), + }; + } + // otherwise there is an entry at the index + // if the keys are equal replace the entry with the updated value + const nodeKey = node.k; + if (isEqual(key, nodeKey)) { + if (val === node.v) { + return root; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }), + }; + } + // if the keys are not equal, replace the entry with a new child node + addedLeaf.val = true; + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet( + root.array, + idx, + createNode(shift + SHIFT, nodeKey, node.v, hash, key, val) + ), + }; + } else { + // else there is currently no item at the hash index + const n = root.array.length; + // if the number of nodes is at the maximum, expand this node into an array node + if (n >= MAX_INDEX_NODE) { + // create a 32 length array for the new array node (one for each bit in the hash) + const nodes = new Array(32); + // create and insert a node for the new entry + const jdx = mask(hash, shift); + nodes[jdx] = assocIndex(EMPTY, shift + SHIFT, hash, key, val, addedLeaf); + let j = 0; + let bitmap = root.bitmap; + // place each item in the index node into the correct spot in the array node + // loop through all 32 bits / array positions + for (let i = 0; i < 32; i++) { + if ((bitmap & 1) !== 0) { + const node = root.array[j++]; + nodes[i] = node; + } + // shift the bitmap to process the next bit + bitmap = bitmap >>> 1; + } + return { + type: ARRAY_NODE, + size: n + 1, + array: nodes, + }; + } else { + // else there is still space in this index node + // simply insert a new entry at the hash index + const newArray = spliceIn(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }); + addedLeaf.val = true; + return { + type: INDEX_NODE, + bitmap: root.bitmap | bit, + array: newArray, + }; + } + } +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocCollision(root, shift, hash, key, val, addedLeaf) { + // if there is a hash collision + if (hash === root.hash) { + const idx = collisionIndexOf(root, key); + // if this key already exists replace the entry with the new value + if (idx !== -1) { + const entry = root.array[idx]; + if (entry.v === val) { + return root; + } + return { + type: COLLISION_NODE, + hash: hash, + array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), + }; + } + // otherwise insert the entry at the end of the array + const size = root.array.length; + addedLeaf.val = true; + return { + type: COLLISION_NODE, + hash: hash, + array: cloneAndSet(root.array, size, { type: ENTRY, k: key, v: val }), + }; + } + // if there is no hash collision, upgrade to an index node + return assoc( + { + type: INDEX_NODE, + bitmap: bitpos(root.hash, shift), + array: [root], + }, + shift, + hash, + key, + val, + addedLeaf + ); +} +/** + * Find the index of a key in the collision node's array + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {number} + */ +function collisionIndexOf(root, key) { + const size = root.array.length; + for (let i = 0; i < size; i++) { + if (isEqual(key, root.array[i].k)) { + return i; + } + } + return -1; +} +/** + * @template T,K,V + * @callback FindFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @returns {undefined | Entry} + */ +/** + * Return the found entry or undefined if not present in the root + * @template K,V + * @type {FindFunction,K,V>} + */ +function find(root, shift, hash, key) { + switch (root.type) { + case ARRAY_NODE: + return findArray(root, shift, hash, key); + case INDEX_NODE: + return findIndex(root, shift, hash, key); + case COLLISION_NODE: + return findCollision(root, key); + } +} +/** + * @template K,V + * @type {FindFunction,K,V>} + */ +function findArray(root, shift, hash, key) { + const idx = mask(hash, shift); + const node = root.array[idx]; + if (node === undefined) { + return undefined; + } + if (node.type !== ENTRY) { + return find(node, shift + SHIFT, hash, key); + } + if (isEqual(key, node.k)) { + return node; + } + return undefined; +} +/** + * @template K,V + * @type {FindFunction,K,V>} + */ +function findIndex(root, shift, hash, key) { + const bit = bitpos(hash, shift); + if ((root.bitmap & bit) === 0) { + return undefined; + } + const idx = index(root.bitmap, bit); + const node = root.array[idx]; + if (node.type !== ENTRY) { + return find(node, shift + SHIFT, hash, key); + } + if (isEqual(key, node.k)) { + return node; + } + return undefined; +} +/** + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {undefined | Entry} + */ +function findCollision(root, key) { + const idx = collisionIndexOf(root, key); + if (idx < 0) { + return undefined; + } + return root.array[idx]; +} +/** + * @template T,K,V + * @callback WithoutFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @returns {undefined | Node} + */ +/** + * Remove an entry from the root, returning the updated root. + * Returns undefined if the node should be removed from the parent. + * @template K,V + * @type {WithoutFunction,K,V>} + * */ +function without(root, shift, hash, key) { + switch (root.type) { + case ARRAY_NODE: + return withoutArray(root, shift, hash, key); + case INDEX_NODE: + return withoutIndex(root, shift, hash, key); + case COLLISION_NODE: + return withoutCollision(root, key); + } +} +/** + * @template K,V + * @type {WithoutFunction,K,V>} + */ +function withoutArray(root, shift, hash, key) { + const idx = mask(hash, shift); + const node = root.array[idx]; + if (node === undefined) { + return root; // already empty + } + let n = undefined; + // if node is an entry and the keys are not equal there is nothing to remove + // if node is not an entry do a recursive call + if (node.type === ENTRY) { + if (!isEqual(node.k, key)) { + return root; // no changes + } + } else { + n = without(node, shift + SHIFT, hash, key); + if (n === node) { + return root; // no changes + } + } + // if the recursive call returned undefined the node should be removed + if (n === undefined) { + // if the number of child nodes is at the minimum, pack into an index node + if (root.size <= MIN_ARRAY_NODE) { + const arr = root.array; + const out = new Array(root.size - 1); + let i = 0; + let j = 0; + let bitmap = 0; + while (i < idx) { + const nv = arr[i]; + if (nv !== undefined) { + out[j] = nv; + bitmap |= 1 << i; + ++j; + } + ++i; + } + ++i; // skip copying the removed node + while (i < arr.length) { + const nv = arr[i]; + if (nv !== undefined) { + out[j] = nv; + bitmap |= 1 << i; + ++j; + } + ++i; + } + return { + type: INDEX_NODE, + bitmap: bitmap, + array: out, + }; + } + return { + type: ARRAY_NODE, + size: root.size - 1, + array: cloneAndSet(root.array, idx, n), + }; + } + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, n), + }; +} +/** + * @template K,V + * @type {WithoutFunction,K,V>} + */ +function withoutIndex(root, shift, hash, key) { + const bit = bitpos(hash, shift); + if ((root.bitmap & bit) === 0) { + return root; // already empty + } + const idx = index(root.bitmap, bit); + const node = root.array[idx]; + // if the item is not an entry + if (node.type !== ENTRY) { + const n = without(node, shift + SHIFT, hash, key); + if (n === node) { + return root; // no changes + } + // if not undefined, the child node still has items, so update it + if (n !== undefined) { + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, n), + }; + } + // otherwise the child node should be removed + // if it was the only child node, remove this node from the parent + if (root.bitmap === bit) { + return undefined; + } + // otherwise just remove the child node + return { + type: INDEX_NODE, + bitmap: root.bitmap ^ bit, + array: spliceOut(root.array, idx), + }; + } + // otherwise the item is an entry, remove it if the key matches + if (isEqual(key, node.k)) { + if (root.bitmap === bit) { + return undefined; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap ^ bit, + array: spliceOut(root.array, idx), + }; + } + return root; +} +/** + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {undefined | Node} + */ +function withoutCollision(root, key) { + const idx = collisionIndexOf(root, key); + // if the key not found, no changes + if (idx < 0) { + return root; + } + // otherwise the entry was found, remove it + // if it was the only entry in this node, remove the whole node + if (root.array.length === 1) { + return undefined; + } + // otherwise just remove the entry + return { + type: COLLISION_NODE, + hash: root.hash, + array: spliceOut(root.array, idx), + }; +} +/** + * @template K,V + * @param {undefined | Node} root + * @param {(value:V,key:K)=>void} fn + * @returns {void} + */ +function forEach(root, fn) { + if (root === undefined) { + return; + } + const items = root.array; + const size = items.length; + for (let i = 0; i < size; i++) { + const item = items[i]; + if (item === undefined) { + continue; + } + if (item.type === ENTRY) { + fn(item.v, item.k); + continue; + } + forEach(item, fn); + } +} +/** + * Extra wrapper to keep track of Dict size and clean up the API + * @template K,V + */ +export default class Dict { + /** + * @template V + * @param {Record} o + * @returns {Dict} + */ + static fromObject(o) { + const keys = Object.keys(o); + /** @type Dict */ + let m = Dict.new(); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + m = m.set(k, o[k]); + } + return m; + } + /** + * @template K,V + * @param {Map} o + * @returns {Dict} + */ + static fromMap(o) { + /** @type Dict */ + let m = Dict.new(); + o.forEach((v, k) => { + m = m.set(k, v); + }); + return m; + } + static new() { + return new Dict(undefined, 0); + } + /** + * @param {undefined | Node} root + * @param {number} size + */ + constructor(root, size) { + this.root = root; + this.size = size; + } + /** + * @template NotFound + * @param {K} key + * @param {NotFound} notFound + * @returns {NotFound | V} + */ + get(key, notFound) { + if (this.root === undefined) { + return notFound; + } + const found = find(this.root, 0, getHash(key), key); + if (found === undefined) { + return notFound; + } + return found.v; + } + /** + * @param {K} key + * @param {V} val + * @returns {Dict} + */ + set(key, val) { + const addedLeaf = { val: false }; + const root = this.root === undefined ? EMPTY : this.root; + const newRoot = assoc(root, 0, getHash(key), key, val, addedLeaf); + if (newRoot === this.root) { + return this; + } + return new Dict(newRoot, addedLeaf.val ? this.size + 1 : this.size); + } + /** + * @param {K} key + * @returns {Dict} + */ + delete(key) { + if (this.root === undefined) { + return this; + } + const newRoot = without(this.root, 0, getHash(key), key); + if (newRoot === this.root) { + return this; + } + if (newRoot === undefined) { + return Dict.new(); + } + return new Dict(newRoot, this.size - 1); + } + /** + * @param {K} key + * @returns {boolean} + */ + has(key) { + if (this.root === undefined) { + return false; + } + return find(this.root, 0, getHash(key), key) !== undefined; + } + /** + * @returns {[K,V][]} + */ + entries() { + if (this.root === undefined) { + return []; + } + /** @type [K,V][] */ + const result = []; + this.forEach((v, k) => result.push([k, v])); + return result; + } + /** + * + * @param {(val:V,key:K)=>void} fn + */ + forEach(fn) { + forEach(this.root, fn); + } + hashCode() { + let h = 0; + this.forEach((v, k) => { + h = (h + hashMerge(getHash(v), getHash(k))) | 0; + }); + return h; + } + /** + * @param {unknown} o + * @returns {boolean} + */ + equals(o) { + if (!(o instanceof Dict) || this.size !== o.size) { + return false; + } + let equal = true; + this.forEach((v, k) => { + equal = equal && isEqual(o.get(k, !v), v); + }); + return equal; + } +} diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache new file mode 100644 index 0000000..1a9b6c1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta new file mode 100644 index 0000000..a935fcc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl new file mode 100644 index 0000000..65bc3f6 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl @@ -0,0 +1,20 @@ +-module(gleam@base). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]). + +-spec encode64(bitstring(), boolean()) -> binary(). +encode64(Input, Padding) -> + gleam@bit_array:base64_encode(Input, Padding). + +-spec decode64(binary()) -> {ok, bitstring()} | {error, nil}. +decode64(Encoded) -> + gleam@bit_array:base64_decode(Encoded). + +-spec url_encode64(bitstring(), boolean()) -> binary(). +url_encode64(Input, Padding) -> + gleam@bit_array:base64_url_encode(Input, Padding). + +-spec url_decode64(binary()) -> {ok, bitstring()} | {error, nil}. +url_decode64(Encoded) -> + gleam@bit_array:base64_url_decode(Encoded). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache new file mode 100644 index 0000000..3b197e5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta new file mode 100644 index 0000000..bfd3dd8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl new file mode 100644 index 0000000..ba18dfa --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl @@ -0,0 +1,102 @@ +-module(gleam@bit_array). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, byte_size/1, slice/3, is_utf8/1, to_string/1, concat/1, append/2, base64_encode/2, base64_decode/1, base64_url_encode/2, base64_url_decode/1, base16_encode/1, base16_decode/1]). + +-spec from_string(binary()) -> bitstring(). +from_string(X) -> + gleam_stdlib:identity(X). + +-spec byte_size(bitstring()) -> integer(). +byte_size(X) -> + erlang:byte_size(X). + +-spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | + {error, nil}. +slice(String, Position, Length) -> + gleam_stdlib:bit_array_slice(String, Position, Length). + +-spec do_is_utf8(bitstring()) -> boolean(). +do_is_utf8(Bits) -> + case Bits of + <<>> -> + true; + + <<_/utf8, Rest/binary>> -> + do_is_utf8(Rest); + + _ -> + false + end. + +-spec is_utf8(bitstring()) -> boolean(). +is_utf8(Bits) -> + do_is_utf8(Bits). + +-spec do_to_string(bitstring()) -> {ok, binary()} | {error, nil}. +do_to_string(Bits) -> + case is_utf8(Bits) of + true -> + {ok, gleam_stdlib:identity(Bits)}; + + false -> + {error, nil} + end. + +-spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. +to_string(Bits) -> + do_to_string(Bits). + +-spec concat(list(bitstring())) -> bitstring(). +concat(Bit_arrays) -> + gleam_stdlib:bit_array_concat(Bit_arrays). + +-spec append(bitstring(), bitstring()) -> bitstring(). +append(First, Second) -> + gleam_stdlib:bit_array_concat([First, Second]). + +-spec base64_encode(bitstring(), boolean()) -> binary(). +base64_encode(Input, Padding) -> + Encoded = base64:encode(Input), + case Padding of + true -> + Encoded; + + false -> + gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>) + end. + +-spec base64_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base64_decode(Encoded) -> + Padded = case erlang:byte_size(gleam_stdlib:identity(Encoded)) rem 4 of + 0 -> + Encoded; + + N -> + gleam@string:append( + Encoded, + gleam@string:repeat(<<"="/utf8>>, 4 - N) + ) + end, + gleam_stdlib:base_decode64(Padded). + +-spec base64_url_encode(bitstring(), boolean()) -> binary(). +base64_url_encode(Input, Padding) -> + _pipe = base64_encode(Input, Padding), + _pipe@1 = gleam@string:replace(_pipe, <<"+"/utf8>>, <<"-"/utf8>>), + gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"_"/utf8>>). + +-spec base64_url_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base64_url_decode(Encoded) -> + _pipe = Encoded, + _pipe@1 = gleam@string:replace(_pipe, <<"-"/utf8>>, <<"+"/utf8>>), + _pipe@2 = gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<"/"/utf8>>), + base64_decode(_pipe@2). + +-spec base16_encode(bitstring()) -> binary(). +base16_encode(Input) -> + binary:encode_hex(Input). + +-spec base16_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base16_decode(Input) -> + gleam_stdlib:base16_decode(Input). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache new file mode 100644 index 0000000..d992172 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta new file mode 100644 index 0000000..bc4a1a5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl new file mode 100644 index 0000000..284c6d4 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl @@ -0,0 +1,66 @@ +-module(gleam@bit_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, prepend/2, append/2, prepend_builder/2, append_builder/2, prepend_string/2, append_string/2, concat/1, concat_bit_strings/1, from_string/1, from_string_builder/1, from_bit_string/1, to_bit_string/1, byte_size/1]). + +-spec new() -> gleam@bytes_builder:bytes_builder(). +new() -> + gleam@bytes_builder:new(). + +-spec prepend(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). +prepend(To, Prefix) -> + gleam@bytes_builder:prepend(To, Prefix). + +-spec append(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). +append(To, Suffix) -> + gleam@bytes_builder:append(To, Suffix). + +-spec prepend_builder( + gleam@bytes_builder:bytes_builder(), + gleam@bytes_builder:bytes_builder() +) -> gleam@bytes_builder:bytes_builder(). +prepend_builder(To, Prefix) -> + gleam@bytes_builder:prepend_builder(To, Prefix). + +-spec append_builder( + gleam@bytes_builder:bytes_builder(), + gleam@bytes_builder:bytes_builder() +) -> gleam@bytes_builder:bytes_builder(). +append_builder(First, Second) -> + gleam_stdlib:iodata_append(First, Second). + +-spec prepend_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). +prepend_string(To, Prefix) -> + gleam@bytes_builder:prepend_string(To, Prefix). + +-spec append_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). +append_string(To, Suffix) -> + gleam@bytes_builder:append_string(To, Suffix). + +-spec concat(list(gleam@bytes_builder:bytes_builder())) -> gleam@bytes_builder:bytes_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec concat_bit_strings(list(bitstring())) -> gleam@bytes_builder:bytes_builder(). +concat_bit_strings(Bits) -> + gleam_stdlib:identity(Bits). + +-spec from_string(binary()) -> gleam@bytes_builder:bytes_builder(). +from_string(String) -> + gleam_stdlib:wrap_list(String). + +-spec from_string_builder(gleam@string_builder:string_builder()) -> gleam@bytes_builder:bytes_builder(). +from_string_builder(Builder) -> + gleam_stdlib:wrap_list(Builder). + +-spec from_bit_string(bitstring()) -> gleam@bytes_builder:bytes_builder(). +from_bit_string(Bits) -> + gleam_stdlib:wrap_list(Bits). + +-spec to_bit_string(gleam@bytes_builder:bytes_builder()) -> bitstring(). +to_bit_string(Builder) -> + erlang:list_to_bitstring(Builder). + +-spec byte_size(gleam@bytes_builder:bytes_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache new file mode 100644 index 0000000..60cf27e Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta new file mode 100644 index 0000000..f9f229f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl new file mode 100644 index 0000000..7dabaa3 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl @@ -0,0 +1,33 @@ +-module(gleam@bit_string). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, byte_size/1, append/2, slice/3, is_utf8/1, to_string/1, concat/1]). + +-spec from_string(binary()) -> bitstring(). +from_string(X) -> + gleam_stdlib:identity(X). + +-spec byte_size(bitstring()) -> integer(). +byte_size(X) -> + erlang:byte_size(X). + +-spec append(bitstring(), bitstring()) -> bitstring(). +append(First, Second) -> + gleam@bit_array:append(First, Second). + +-spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | + {error, nil}. +slice(String, Position, Length) -> + gleam_stdlib:bit_array_slice(String, Position, Length). + +-spec is_utf8(bitstring()) -> boolean(). +is_utf8(Bits) -> + gleam@bit_array:is_utf8(Bits). + +-spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. +to_string(Bits) -> + gleam@bit_array:to_string(Bits). + +-spec concat(list(bitstring())) -> bitstring(). +concat(Bit_strings) -> + gleam_stdlib:bit_array_concat(Bit_strings). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache new file mode 100644 index 0000000..10a98f8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta new file mode 100644 index 0000000..33ef24c Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl new file mode 100644 index 0000000..57078cb --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl @@ -0,0 +1,162 @@ +-module(gleam@bool). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export(['and'/2, 'or'/2, negate/1, nor/2, nand/2, exclusive_or/2, exclusive_nor/2, compare/2, max/2, min/2, to_int/1, to_string/1, guard/3, lazy_guard/3]). + +-spec 'and'(boolean(), boolean()) -> boolean(). +'and'(A, B) -> + A andalso B. + +-spec 'or'(boolean(), boolean()) -> boolean(). +'or'(A, B) -> + A orelse B. + +-spec negate(boolean()) -> boolean(). +negate(Bool) -> + case Bool of + true -> + false; + + false -> + true + end. + +-spec nor(boolean(), boolean()) -> boolean(). +nor(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + false; + + {true, false} -> + false; + + {true, true} -> + false + end. + +-spec nand(boolean(), boolean()) -> boolean(). +nand(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + true; + + {true, false} -> + true; + + {true, true} -> + false + end. + +-spec exclusive_or(boolean(), boolean()) -> boolean(). +exclusive_or(A, B) -> + case {A, B} of + {false, false} -> + false; + + {false, true} -> + true; + + {true, false} -> + true; + + {true, true} -> + false + end. + +-spec exclusive_nor(boolean(), boolean()) -> boolean(). +exclusive_nor(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + false; + + {true, false} -> + false; + + {true, true} -> + true + end. + +-spec compare(boolean(), boolean()) -> gleam@order:order(). +compare(A, B) -> + case {A, B} of + {true, true} -> + eq; + + {true, false} -> + gt; + + {false, false} -> + eq; + + {false, true} -> + lt + end. + +-spec max(boolean(), boolean()) -> boolean(). +max(A, B) -> + case A of + true -> + true; + + false -> + B + end. + +-spec min(boolean(), boolean()) -> boolean(). +min(A, B) -> + case A of + false -> + false; + + true -> + B + end. + +-spec to_int(boolean()) -> integer(). +to_int(Bool) -> + case Bool of + false -> + 0; + + true -> + 1 + end. + +-spec to_string(boolean()) -> binary(). +to_string(Bool) -> + case Bool of + false -> + <<"False"/utf8>>; + + true -> + <<"True"/utf8>> + end. + +-spec guard(boolean(), EVP, fun(() -> EVP)) -> EVP. +guard(Requirement, Consequence, Alternative) -> + case Requirement of + true -> + Consequence; + + false -> + Alternative() + end. + +-spec lazy_guard(boolean(), fun(() -> EVQ), fun(() -> EVQ)) -> EVQ. +lazy_guard(Requirement, Consequence, Alternative) -> + case Requirement of + true -> + Consequence(); + + false -> + Alternative() + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache new file mode 100644 index 0000000..8962cfc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta new file mode 100644 index 0000000..7b614aa Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl new file mode 100644 index 0000000..2f6dd93 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl @@ -0,0 +1,87 @@ +-module(gleam@bytes_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([append_builder/2, prepend_builder/2, concat/1, new/0, from_string/1, prepend_string/2, append_string/2, from_string_builder/1, from_bit_array/1, prepend/2, append/2, concat_bit_arrays/1, to_bit_array/1, byte_size/1]). +-export_type([bytes_builder/0]). + +-opaque bytes_builder() :: {bytes, bitstring()} | + {text, gleam@string_builder:string_builder()} | + {many, list(bytes_builder())}. + +-spec append_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). +append_builder(First, Second) -> + gleam_stdlib:iodata_append(First, Second). + +-spec prepend_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). +prepend_builder(Second, First) -> + gleam_stdlib:iodata_append(First, Second). + +-spec concat(list(bytes_builder())) -> bytes_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec new() -> bytes_builder(). +new() -> + gleam_stdlib:identity([]). + +-spec from_string(binary()) -> bytes_builder(). +from_string(String) -> + gleam_stdlib:wrap_list(String). + +-spec prepend_string(bytes_builder(), binary()) -> bytes_builder(). +prepend_string(Second, First) -> + gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). + +-spec append_string(bytes_builder(), binary()) -> bytes_builder(). +append_string(First, Second) -> + gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). + +-spec from_string_builder(gleam@string_builder:string_builder()) -> bytes_builder(). +from_string_builder(Builder) -> + gleam_stdlib:wrap_list(Builder). + +-spec from_bit_array(bitstring()) -> bytes_builder(). +from_bit_array(Bits) -> + gleam_stdlib:wrap_list(Bits). + +-spec prepend(bytes_builder(), bitstring()) -> bytes_builder(). +prepend(Second, First) -> + gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). + +-spec append(bytes_builder(), bitstring()) -> bytes_builder(). +append(First, Second) -> + gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). + +-spec concat_bit_arrays(list(bitstring())) -> bytes_builder(). +concat_bit_arrays(Bits) -> + gleam_stdlib:identity(Bits). + +-spec to_list(list(list(bytes_builder())), list(bitstring())) -> list(bitstring()). +to_list(Stack, Acc) -> + case Stack of + [] -> + Acc; + + [[] | Remaining_stack] -> + to_list(Remaining_stack, Acc); + + [[{bytes, Bits} | Rest] | Remaining_stack@1] -> + to_list([Rest | Remaining_stack@1], [Bits | Acc]); + + [[{text, Builder} | Rest@1] | Remaining_stack@2] -> + Bits@1 = gleam_stdlib:identity( + gleam@string_builder:to_string(Builder) + ), + to_list([Rest@1 | Remaining_stack@2], [Bits@1 | Acc]); + + [[{many, Builders} | Rest@2] | Remaining_stack@3] -> + to_list([Builders, Rest@2 | Remaining_stack@3], Acc) + end. + +-spec to_bit_array(bytes_builder()) -> bitstring(). +to_bit_array(Builder) -> + erlang:list_to_bitstring(Builder). + +-spec byte_size(bytes_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache new file mode 100644 index 0000000..acf4017 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta new file mode 100644 index 0000000..4410520 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl new file mode 100644 index 0000000..44b89ea --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl @@ -0,0 +1,97 @@ +-module(gleam@dict). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). +-export_type([dict/2]). + +-type dict(KS, KT) :: any() | {gleam_phantom, KS, KT}. + +-spec size(dict(any(), any())) -> integer(). +size(Dict) -> + maps:size(Dict). + +-spec to_list(dict(LC, LD)) -> list({LC, LD}). +to_list(Dict) -> + maps:to_list(Dict). + +-spec from_list(list({LM, LN})) -> dict(LM, LN). +from_list(List) -> + maps:from_list(List). + +-spec has_key(dict(LW, any()), LW) -> boolean(). +has_key(Dict, Key) -> + maps:is_key(Key, Dict). + +-spec new() -> dict(any(), any()). +new() -> + maps:new(). + +-spec get(dict(MM, MN), MM) -> {ok, MN} | {error, nil}. +get(From, Get) -> + gleam_stdlib:map_get(From, Get). + +-spec insert(dict(MY, MZ), MY, MZ) -> dict(MY, MZ). +insert(Dict, Key, Value) -> + maps:put(Key, Value, Dict). + +-spec map_values(dict(NK, NL), fun((NK, NL) -> NO)) -> dict(NK, NO). +map_values(Dict, Fun) -> + maps:map(Fun, Dict). + +-spec keys(dict(NY, any())) -> list(NY). +keys(Dict) -> + maps:keys(Dict). + +-spec values(dict(any(), OJ)) -> list(OJ). +values(Dict) -> + maps:values(Dict). + +-spec filter(dict(OS, OT), fun((OS, OT) -> boolean())) -> dict(OS, OT). +filter(Dict, Predicate) -> + maps:filter(Predicate, Dict). + +-spec take(dict(PE, PF), list(PE)) -> dict(PE, PF). +take(Dict, Desired_keys) -> + maps:with(Desired_keys, Dict). + +-spec merge(dict(PS, PT), dict(PS, PT)) -> dict(PS, PT). +merge(Dict, New_entries) -> + maps:merge(Dict, New_entries). + +-spec delete(dict(QI, QJ), QI) -> dict(QI, QJ). +delete(Dict, Key) -> + maps:remove(Key, Dict). + +-spec drop(dict(QU, QV), list(QU)) -> dict(QU, QV). +drop(Dict, Disallowed_keys) -> + case Disallowed_keys of + [] -> + Dict; + + [X | Xs] -> + drop(delete(Dict, X), Xs) + end. + +-spec update(dict(RB, RC), RB, fun((gleam@option:option(RC)) -> RC)) -> dict(RB, RC). +update(Dict, Key, Fun) -> + _pipe = Dict, + _pipe@1 = get(_pipe, Key), + _pipe@2 = gleam@option:from_result(_pipe@1), + _pipe@3 = Fun(_pipe@2), + insert(Dict, Key, _pipe@3). + +-spec do_fold(list({RI, RJ}), RL, fun((RL, RI, RJ) -> RL)) -> RL. +do_fold(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [{K, V} | Rest] -> + do_fold(Rest, Fun(Initial, K, V), Fun) + end. + +-spec fold(dict(RM, RN), RQ, fun((RQ, RM, RN) -> RQ)) -> RQ. +fold(Dict, Initial, Fun) -> + _pipe = Dict, + _pipe@1 = to_list(_pipe), + do_fold(_pipe@1, Initial, Fun). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache new file mode 100644 index 0000000..f10ed2a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta new file mode 100644 index 0000000..9ae5074 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl new file mode 100644 index 0000000..2c6016f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl @@ -0,0 +1,808 @@ +-module(gleam@dynamic). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from/1, unsafe_coerce/1, dynamic/1, bit_array/1, bit_string/1, classify/1, int/1, float/1, bool/1, shallow_list/1, optional/1, any/1, decode1/2, result/2, list/1, string/1, field/2, optional_field/2, element/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, dict/2, map/2, decode2/3, decode3/4, decode4/5, decode5/6, decode6/7, decode7/8, decode8/9, decode9/10]). +-export_type([dynamic_/0, decode_error/0, unknown_tuple/0]). + +-type dynamic_() :: any(). + +-type decode_error() :: {decode_error, binary(), binary(), list(binary())}. + +-type unknown_tuple() :: any(). + +-spec from(any()) -> dynamic_(). +from(A) -> + gleam_stdlib:identity(A). + +-spec unsafe_coerce(dynamic_()) -> any(). +unsafe_coerce(A) -> + gleam_stdlib:identity(A). + +-spec dynamic(dynamic_()) -> {ok, dynamic_()} | {error, list(decode_error())}. +dynamic(Value) -> + {ok, Value}. + +-spec bit_array(dynamic_()) -> {ok, bitstring()} | {error, list(decode_error())}. +bit_array(Data) -> + gleam_stdlib:decode_bit_array(Data). + +-spec bit_string(dynamic_()) -> {ok, bitstring()} | + {error, list(decode_error())}. +bit_string(Data) -> + bit_array(Data). + +-spec put_expected(decode_error(), binary()) -> decode_error(). +put_expected(Error, Expected) -> + erlang:setelement(2, Error, Expected). + +-spec classify(dynamic_()) -> binary(). +classify(Data) -> + gleam_stdlib:classify_dynamic(Data). + +-spec int(dynamic_()) -> {ok, integer()} | {error, list(decode_error())}. +int(Data) -> + gleam_stdlib:decode_int(Data). + +-spec float(dynamic_()) -> {ok, float()} | {error, list(decode_error())}. +float(Data) -> + gleam_stdlib:decode_float(Data). + +-spec bool(dynamic_()) -> {ok, boolean()} | {error, list(decode_error())}. +bool(Data) -> + gleam_stdlib:decode_bool(Data). + +-spec shallow_list(dynamic_()) -> {ok, list(dynamic_())} | + {error, list(decode_error())}. +shallow_list(Value) -> + gleam_stdlib:decode_list(Value). + +-spec optional(fun((dynamic_()) -> {ok, DGM} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, + gleam@option:option(DGM)} | + {error, list(decode_error())}). +optional(Decode) -> + fun(Value) -> gleam_stdlib:decode_option(Value, Decode) end. + +-spec at_least_decode_tuple_error(integer(), dynamic_()) -> {ok, any()} | + {error, list(decode_error())}. +at_least_decode_tuple_error(Size, Data) -> + S = case Size of + 1 -> + <<""/utf8>>; + + _ -> + <<"s"/utf8>> + end, + Error = begin + _pipe = [<<"Tuple of at least "/utf8>>, + gleam@int:to_string(Size), + <<" element"/utf8>>, + S], + _pipe@1 = gleam@string_builder:from_strings(_pipe), + _pipe@2 = gleam@string_builder:to_string(_pipe@1), + {decode_error, _pipe@2, classify(Data), []} + end, + {error, [Error]}. + +-spec any(list(fun((dynamic_()) -> {ok, DKT} | {error, list(decode_error())}))) -> fun((dynamic_()) -> {ok, + DKT} | + {error, list(decode_error())}). +any(Decoders) -> + fun(Data) -> case Decoders of + [] -> + {error, + [{decode_error, <<"another type"/utf8>>, classify(Data), []}]}; + + [Decoder | Decoders@1] -> + case Decoder(Data) of + {ok, Decoded} -> + {ok, Decoded}; + + {error, _} -> + (any(Decoders@1))(Data) + end + end end. + +-spec all_errors({ok, any()} | {error, list(decode_error())}) -> list(decode_error()). +all_errors(Result) -> + case Result of + {ok, _} -> + []; + + {error, Errors} -> + Errors + end. + +-spec decode1( + fun((DKX) -> DKY), + fun((dynamic_()) -> {ok, DKX} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DKY} | {error, list(decode_error())}). +decode1(Constructor, T1) -> + fun(Value) -> case T1(Value) of + {ok, A} -> + {ok, Constructor(A)}; + + A@1 -> + {error, all_errors(A@1)} + end end. + +-spec push_path(decode_error(), any()) -> decode_error(). +push_path(Error, Name) -> + Name@1 = from(Name), + Decoder = any( + [fun string/1, + fun(X) -> gleam@result:map(int(X), fun gleam@int:to_string/1) end] + ), + Name@3 = case Decoder(Name@1) of + {ok, Name@2} -> + Name@2; + + {error, _} -> + _pipe = [<<"<"/utf8>>, classify(Name@1), <<">"/utf8>>], + _pipe@1 = gleam@string_builder:from_strings(_pipe), + gleam@string_builder:to_string(_pipe@1) + end, + erlang:setelement(4, Error, [Name@3 | erlang:element(4, Error)]). + +-spec result( + fun((dynamic_()) -> {ok, DGA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DGC} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {ok, DGA} | {error, DGC}} | + {error, list(decode_error())}). +result(Decode_ok, Decode_error) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_result(Value), + fun(Inner_result) -> case Inner_result of + {ok, Raw} -> + gleam@result:'try'( + begin + _pipe = Decode_ok(Raw), + map_errors( + _pipe, + fun(_capture) -> + push_path(_capture, <<"ok"/utf8>>) + end + ) + end, + fun(Value@1) -> {ok, {ok, Value@1}} end + ); + + {error, Raw@1} -> + gleam@result:'try'( + begin + _pipe@1 = Decode_error(Raw@1), + map_errors( + _pipe@1, + fun(_capture@1) -> + push_path(_capture@1, <<"error"/utf8>>) + end + ) + end, + fun(Value@2) -> {ok, {error, Value@2}} end + ) + end end + ) + end. + +-spec list(fun((dynamic_()) -> {ok, DGH} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, + list(DGH)} | + {error, list(decode_error())}). +list(Decoder_type) -> + fun(Dynamic) -> + gleam@result:'try'(shallow_list(Dynamic), fun(List) -> _pipe = List, + _pipe@1 = gleam@list:try_map(_pipe, Decoder_type), + map_errors( + _pipe@1, + fun(_capture) -> push_path(_capture, <<"*"/utf8>>) end + ) end) + end. + +-spec map_errors( + {ok, DEV} | {error, list(decode_error())}, + fun((decode_error()) -> decode_error()) +) -> {ok, DEV} | {error, list(decode_error())}. +map_errors(Result, F) -> + gleam@result:map_error( + Result, + fun(_capture) -> gleam@list:map(_capture, F) end + ). + +-spec decode_string(dynamic_()) -> {ok, binary()} | + {error, list(decode_error())}. +decode_string(Data) -> + _pipe = bit_array(Data), + _pipe@1 = map_errors( + _pipe, + fun(_capture) -> put_expected(_capture, <<"String"/utf8>>) end + ), + gleam@result:'try'( + _pipe@1, + fun(Raw) -> case gleam@bit_array:to_string(Raw) of + {ok, String} -> + {ok, String}; + + {error, nil} -> + {error, + [{decode_error, + <<"String"/utf8>>, + <<"BitArray"/utf8>>, + []}]} + end end + ). + +-spec string(dynamic_()) -> {ok, binary()} | {error, list(decode_error())}. +string(Data) -> + decode_string(Data). + +-spec field( + any(), + fun((dynamic_()) -> {ok, DGW} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DGW} | {error, list(decode_error())}). +field(Name, Inner_type) -> + fun(Value) -> + Missing_field_error = {decode_error, + <<"field"/utf8>>, + <<"nothing"/utf8>>, + []}, + gleam@result:'try'( + gleam_stdlib:decode_field(Value, Name), + fun(Maybe_inner) -> _pipe = Maybe_inner, + _pipe@1 = gleam@option:to_result(_pipe, [Missing_field_error]), + _pipe@2 = gleam@result:'try'(_pipe@1, Inner_type), + map_errors( + _pipe@2, + fun(_capture) -> push_path(_capture, Name) end + ) end + ) + end. + +-spec optional_field( + any(), + fun((dynamic_()) -> {ok, DHA} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@option:option(DHA)} | + {error, list(decode_error())}). +optional_field(Name, Inner_type) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_field(Value, Name), + fun(Maybe_inner) -> case Maybe_inner of + none -> + {ok, none}; + + {some, Dynamic_inner} -> + _pipe = Dynamic_inner, + _pipe@1 = gleam_stdlib:decode_option(_pipe, Inner_type), + map_errors( + _pipe@1, + fun(_capture) -> push_path(_capture, Name) end + ) + end end + ) + end. + +-spec element( + integer(), + fun((dynamic_()) -> {ok, DHI} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DHI} | {error, list(decode_error())}). +element(Index, Inner_type) -> + fun(Data) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple(Data), + fun(Tuple) -> + Size = gleam_stdlib:size_of_tuple(Tuple), + gleam@result:'try'(case Index >= 0 of + true -> + case Index < Size of + true -> + gleam_stdlib:tuple_get(Tuple, Index); + + false -> + at_least_decode_tuple_error(Index + 1, Data) + end; + + false -> + case gleam@int:absolute_value(Index) =< Size of + true -> + gleam_stdlib:tuple_get(Tuple, Size + Index); + + false -> + at_least_decode_tuple_error( + gleam@int:absolute_value(Index), + Data + ) + end + end, fun(Data@1) -> _pipe = Inner_type(Data@1), + map_errors( + _pipe, + fun(_capture) -> push_path(_capture, Index) end + ) end) + end + ) + end. + +-spec tuple_errors({ok, any()} | {error, list(decode_error())}, binary()) -> list(decode_error()). +tuple_errors(Result, Name) -> + case Result of + {ok, _} -> + []; + + {error, Errors} -> + gleam@list:map( + Errors, + fun(_capture) -> push_path(_capture, Name) end + ) + end. + +-spec tuple2( + fun((dynamic_()) -> {ok, DII} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DIK} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {DII, DIK}} | {error, list(decode_error())}). +tuple2(Decode1, Decode2) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple2(Value), + fun(_use0) -> + {A, B} = _use0, + case {Decode1(A), Decode2(B)} of + {{ok, A@1}, {ok, B@1}} -> + {ok, {A@1, B@1}}; + + {A@2, B@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + {error, _pipe@1} + end + end + ) + end. + +-spec tuple3( + fun((dynamic_()) -> {ok, DIN} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DIP} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DIR} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {DIN, DIP, DIR}} | {error, list(decode_error())}). +tuple3(Decode1, Decode2, Decode3) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple3(Value), + fun(_use0) -> + {A, B, C} = _use0, + case {Decode1(A), Decode2(B), Decode3(C)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}} -> + {ok, {A@1, B@1, C@1}}; + + {A@2, B@2, C@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + {error, _pipe@2} + end + end + ) + end. + +-spec tuple4( + fun((dynamic_()) -> {ok, DIU} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DIW} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DIY} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJA} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {DIU, DIW, DIY, DJA}} | + {error, list(decode_error())}). +tuple4(Decode1, Decode2, Decode3, Decode4) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple4(Value), + fun(_use0) -> + {A, B, C, D} = _use0, + case {Decode1(A), Decode2(B), Decode3(C), Decode4(D)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}} -> + {ok, {A@1, B@1, C@1, D@1}}; + + {A@2, B@2, C@2, D@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + {error, _pipe@3} + end + end + ) + end. + +-spec tuple5( + fun((dynamic_()) -> {ok, DJD} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJF} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJH} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJJ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJL} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {DJD, DJF, DJH, DJJ, DJL}} | + {error, list(decode_error())}). +tuple5(Decode1, Decode2, Decode3, Decode4, Decode5) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple5(Value), + fun(_use0) -> + {A, B, C, D, E} = _use0, + case {Decode1(A), + Decode2(B), + Decode3(C), + Decode4(D), + Decode5(E)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}, {ok, E@1}} -> + {ok, {A@1, B@1, C@1, D@1, E@1}}; + + {A@2, B@2, C@2, D@2, E@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + _pipe@4 = gleam@list:append( + _pipe@3, + tuple_errors(E@2, <<"4"/utf8>>) + ), + {error, _pipe@4} + end + end + ) + end. + +-spec tuple6( + fun((dynamic_()) -> {ok, DJO} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJQ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJS} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJU} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJW} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DJY} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {DJO, DJQ, DJS, DJU, DJW, DJY}} | + {error, list(decode_error())}). +tuple6(Decode1, Decode2, Decode3, Decode4, Decode5, Decode6) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple6(Value), + fun(_use0) -> + {A, B, C, D, E, F} = _use0, + case {Decode1(A), + Decode2(B), + Decode3(C), + Decode4(D), + Decode5(E), + Decode6(F)} of + {{ok, A@1}, + {ok, B@1}, + {ok, C@1}, + {ok, D@1}, + {ok, E@1}, + {ok, F@1}} -> + {ok, {A@1, B@1, C@1, D@1, E@1, F@1}}; + + {A@2, B@2, C@2, D@2, E@2, F@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + _pipe@4 = gleam@list:append( + _pipe@3, + tuple_errors(E@2, <<"4"/utf8>>) + ), + _pipe@5 = gleam@list:append( + _pipe@4, + tuple_errors(F@2, <<"5"/utf8>>) + ), + {error, _pipe@5} + end + end + ) + end. + +-spec dict( + fun((dynamic_()) -> {ok, DKB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DKD} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@dict:dict(DKB, DKD)} | + {error, list(decode_error())}). +dict(Key_type, Value_type) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_map(Value), + fun(Map) -> + gleam@result:'try'( + begin + _pipe = Map, + _pipe@1 = gleam@dict:to_list(_pipe), + gleam@list:try_map( + _pipe@1, + fun(Pair) -> + {K, V} = Pair, + gleam@result:'try'( + begin + _pipe@2 = Key_type(K), + map_errors( + _pipe@2, + fun(_capture) -> + push_path( + _capture, + <<"keys"/utf8>> + ) + end + ) + end, + fun(K@1) -> + gleam@result:'try'( + begin + _pipe@3 = Value_type(V), + map_errors( + _pipe@3, + fun(_capture@1) -> + push_path( + _capture@1, + <<"values"/utf8>> + ) + end + ) + end, + fun(V@1) -> {ok, {K@1, V@1}} end + ) + end + ) + end + ) + end, + fun(Pairs) -> {ok, gleam@dict:from_list(Pairs)} end + ) + end + ) + end. + +-spec map( + fun((dynamic_()) -> {ok, DKI} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DKK} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@dict:dict(DKI, DKK)} | + {error, list(decode_error())}). +map(Key_type, Value_type) -> + dict(Key_type, Value_type). + +-spec decode2( + fun((DLB, DLC) -> DLD), + fun((dynamic_()) -> {ok, DLB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLC} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DLD} | {error, list(decode_error())}). +decode2(Constructor, T1, T2) -> + fun(Value) -> case {T1(Value), T2(Value)} of + {{ok, A}, {ok, B}} -> + {ok, Constructor(A, B)}; + + {A@1, B@1} -> + {error, gleam@list:concat([all_errors(A@1), all_errors(B@1)])} + end end. + +-spec decode3( + fun((DLH, DLI, DLJ) -> DLK), + fun((dynamic_()) -> {ok, DLH} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLI} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLJ} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DLK} | {error, list(decode_error())}). +decode3(Constructor, T1, T2, T3) -> + fun(Value) -> case {T1(Value), T2(Value), T3(Value)} of + {{ok, A}, {ok, B}, {ok, C}} -> + {ok, Constructor(A, B, C)}; + + {A@1, B@1, C@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), all_errors(B@1), all_errors(C@1)] + )} + end end. + +-spec decode4( + fun((DLP, DLQ, DLR, DLS) -> DLT), + fun((dynamic_()) -> {ok, DLP} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLQ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLR} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DLS} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DLT} | {error, list(decode_error())}). +decode4(Constructor, T1, T2, T3, T4) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}} -> + {ok, Constructor(A, B, C, D)}; + + {A@1, B@1, C@1, D@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1)] + )} + end end. + +-spec decode5( + fun((DLZ, DMA, DMB, DMC, DMD) -> DME), + fun((dynamic_()) -> {ok, DLZ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMC} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMD} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DME} | {error, list(decode_error())}). +decode5(Constructor, T1, T2, T3, T4, T5) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}} -> + {ok, Constructor(A, B, C, D, E)}; + + {A@1, B@1, C@1, D@1, E@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1)] + )} + end end. + +-spec decode6( + fun((DML, DMM, DMN, DMO, DMP, DMQ) -> DMR), + fun((dynamic_()) -> {ok, DML} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMN} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMO} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMP} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DMQ} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DMR} | {error, list(decode_error())}). +decode6(Constructor, T1, T2, T3, T4, T5, T6) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}} -> + {ok, Constructor(A, B, C, D, E, F)}; + + {A@1, B@1, C@1, D@1, E@1, F@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1)] + )} + end end. + +-spec decode7( + fun((DMZ, DNA, DNB, DNC, DND, DNE, DNF) -> DNG), + fun((dynamic_()) -> {ok, DMZ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNC} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DND} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNE} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNF} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DNG} | {error, list(decode_error())}). +decode7(Constructor, T1, T2, T3, T4, T5, T6, T7) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}, {ok, G}} -> + {ok, Constructor(A, B, C, D, E, F, G)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1)] + )} + end end. + +-spec decode8( + fun((DNP, DNQ, DNR, DNS, DNT, DNU, DNV, DNW) -> DNX), + fun((dynamic_()) -> {ok, DNP} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNQ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNR} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNS} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNT} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNU} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNV} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DNW} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DNX} | {error, list(decode_error())}). +decode8(Constructor, T1, T2, T3, T4, T5, T6, T7, T8) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X)} of + {{ok, A}, + {ok, B}, + {ok, C}, + {ok, D}, + {ok, E}, + {ok, F}, + {ok, G}, + {ok, H}} -> + {ok, Constructor(A, B, C, D, E, F, G, H)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1), + all_errors(H@1)] + )} + end end. + +-spec decode9( + fun((DOH, DOI, DOJ, DOK, DOL, DOM, DON, DOO, DOP) -> DOQ), + fun((dynamic_()) -> {ok, DOH} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOI} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOJ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOK} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOL} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DON} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOO} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DOP} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, DOQ} | {error, list(decode_error())}). +decode9(Constructor, T1, T2, T3, T4, T5, T6, T7, T8, T9) -> + fun(X) -> + case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X), T9(X)} of + {{ok, A}, + {ok, B}, + {ok, C}, + {ok, D}, + {ok, E}, + {ok, F}, + {ok, G}, + {ok, H}, + {ok, I}} -> + {ok, Constructor(A, B, C, D, E, F, G, H, I)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1, I@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1), + all_errors(H@1), + all_errors(I@1)] + )} + end + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache new file mode 100644 index 0000000..677362b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta new file mode 100644 index 0000000..f10b39f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl new file mode 100644 index 0000000..33b3d4a --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl @@ -0,0 +1,181 @@ +-module(gleam@float). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse/1, to_string/1, compare/2, min/2, max/2, clamp/3, ceiling/1, floor/1, round/1, truncate/1, absolute_value/1, loosely_compare/3, loosely_equals/3, power/2, square_root/1, negate/1, sum/1, product/1, random/2, divide/2, add/2, multiply/2, subtract/2]). + +-spec parse(binary()) -> {ok, float()} | {error, nil}. +parse(String) -> + gleam_stdlib:parse_float(String). + +-spec to_string(float()) -> binary(). +to_string(X) -> + gleam_stdlib:float_to_string(X). + +-spec compare(float(), float()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. + +-spec min(float(), float()) -> float(). +min(A, B) -> + case A < B of + true -> + A; + + false -> + B + end. + +-spec max(float(), float()) -> float(). +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. + +-spec clamp(float(), float(), float()) -> float(). +clamp(X, Min_bound, Max_bound) -> + _pipe = X, + _pipe@1 = min(_pipe, Max_bound), + max(_pipe@1, Min_bound). + +-spec ceiling(float()) -> float(). +ceiling(X) -> + math:ceil(X). + +-spec floor(float()) -> float(). +floor(X) -> + math:floor(X). + +-spec round(float()) -> integer(). +round(X) -> + erlang:round(X). + +-spec truncate(float()) -> integer(). +truncate(X) -> + erlang:trunc(X). + +-spec absolute_value(float()) -> float(). +absolute_value(X) -> + case X >= +0.0 of + true -> + X; + + _ -> + +0.0 - X + end. + +-spec loosely_compare(float(), float(), float()) -> gleam@order:order(). +loosely_compare(A, B, Tolerance) -> + Difference = absolute_value(A - B), + case Difference =< Tolerance of + true -> + eq; + + false -> + compare(A, B) + end. + +-spec loosely_equals(float(), float(), float()) -> boolean(). +loosely_equals(A, B, Tolerance) -> + Difference = absolute_value(A - B), + Difference =< Tolerance. + +-spec power(float(), float()) -> {ok, float()} | {error, nil}. +power(Base, Exponent) -> + Fractional = (ceiling(Exponent) - Exponent) > +0.0, + case ((Base < +0.0) andalso Fractional) orelse ((Base =:= +0.0) andalso (Exponent + < +0.0)) of + true -> + {error, nil}; + + false -> + {ok, math:pow(Base, Exponent)} + end. + +-spec square_root(float()) -> {ok, float()} | {error, nil}. +square_root(X) -> + power(X, 0.5). + +-spec negate(float()) -> float(). +negate(X) -> + -1.0 * X. + +-spec do_sum(list(float()), float()) -> float(). +do_sum(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_sum(Rest, X + Initial) + end. + +-spec sum(list(float())) -> float(). +sum(Numbers) -> + _pipe = Numbers, + do_sum(_pipe, +0.0). + +-spec do_product(list(float()), float()) -> float(). +do_product(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_product(Rest, X * Initial) + end. + +-spec product(list(float())) -> float(). +product(Numbers) -> + case Numbers of + [] -> + 1.0; + + _ -> + do_product(Numbers, 1.0) + end. + +-spec random(float(), float()) -> float(). +random(Min, Max) -> + (rand:uniform() * (Max - Min)) + Min. + +-spec divide(float(), float()) -> {ok, float()} | {error, nil}. +divide(A, B) -> + case B of + +0.0 -> + {error, nil}; + + B@1 -> + {ok, case B@1 of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> A / Gleam@denominator + end} + end. + +-spec add(float(), float()) -> float(). +add(A, B) -> + A + B. + +-spec multiply(float(), float()) -> float(). +multiply(A, B) -> + A * B. + +-spec subtract(float(), float()) -> float(). +subtract(A, B) -> + A - B. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache new file mode 100644 index 0000000..2f3e554 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta new file mode 100644 index 0000000..ffb4624 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl new file mode 100644 index 0000000..75f142f --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl @@ -0,0 +1,67 @@ +-module(gleam@function). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1, constant/1, tap/2, apply1/2, apply2/3, apply3/4]). + +-spec compose(fun((ENH) -> ENI), fun((ENI) -> ENJ)) -> fun((ENH) -> ENJ). +compose(Fun1, Fun2) -> + fun(A) -> Fun2(Fun1(A)) end. + +-spec curry2(fun((ENK, ENL) -> ENM)) -> fun((ENK) -> fun((ENL) -> ENM)). +curry2(Fun) -> + fun(A) -> fun(B) -> Fun(A, B) end end. + +-spec curry3(fun((ENO, ENP, ENQ) -> ENR)) -> fun((ENO) -> fun((ENP) -> fun((ENQ) -> ENR))). +curry3(Fun) -> + fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. + +-spec curry4(fun((ENT, ENU, ENV, ENW) -> ENX)) -> fun((ENT) -> fun((ENU) -> fun((ENV) -> fun((ENW) -> ENX)))). +curry4(Fun) -> + fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. + +-spec curry5(fun((ENZ, EOA, EOB, EOC, EOD) -> EOE)) -> fun((ENZ) -> fun((EOA) -> fun((EOB) -> fun((EOC) -> fun((EOD) -> EOE))))). +curry5(Fun) -> + fun(A) -> + fun(B) -> + fun(C) -> fun(D) -> fun(E) -> Fun(A, B, C, D, E) end end end + end + end. + +-spec curry6(fun((EOG, EOH, EOI, EOJ, EOK, EOL) -> EOM)) -> fun((EOG) -> fun((EOH) -> fun((EOI) -> fun((EOJ) -> fun((EOK) -> fun((EOL) -> EOM)))))). +curry6(Fun) -> + fun(A) -> + fun(B) -> + fun(C) -> + fun(D) -> fun(E) -> fun(F) -> Fun(A, B, C, D, E, F) end end end + end + end + end. + +-spec flip(fun((EOO, EOP) -> EOQ)) -> fun((EOP, EOO) -> EOQ). +flip(Fun) -> + fun(B, A) -> Fun(A, B) end. + +-spec identity(EOR) -> EOR. +identity(X) -> + X. + +-spec constant(EOS) -> fun((any()) -> EOS). +constant(Value) -> + fun(_) -> Value end. + +-spec tap(EOU, fun((EOU) -> any())) -> EOU. +tap(Arg, Effect) -> + Effect(Arg), + Arg. + +-spec apply1(fun((EOW) -> EOX), EOW) -> EOX. +apply1(Fun, Arg1) -> + Fun(Arg1). + +-spec apply2(fun((EOY, EOZ) -> EPA), EOY, EOZ) -> EPA. +apply2(Fun, Arg1, Arg2) -> + Fun(Arg1, Arg2). + +-spec apply3(fun((EPB, EPC, EPD) -> EPE), EPB, EPC, EPD) -> EPE. +apply3(Fun, Arg1, Arg2, Arg3) -> + Fun(Arg1, Arg2, Arg3). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache new file mode 100644 index 0000000..62076d5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta new file mode 100644 index 0000000..2d987e1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl new file mode 100644 index 0000000..2a5dd2c --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl @@ -0,0 +1,332 @@ +-module(gleam@int). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([absolute_value/1, parse/1, base_parse/2, to_string/1, to_base_string/2, to_base2/1, to_base8/1, to_base16/1, to_base36/1, to_float/1, power/2, square_root/1, compare/2, min/2, max/2, clamp/3, is_even/1, is_odd/1, negate/1, sum/1, product/1, digits/2, undigits/2, random/2, divide/2, remainder/2, modulo/2, floor_divide/2, add/2, multiply/2, subtract/2, bitwise_and/2, bitwise_not/1, bitwise_or/2, bitwise_exclusive_or/2, bitwise_shift_left/2, bitwise_shift_right/2]). +-export_type([invalid_base/0]). + +-type invalid_base() :: invalid_base. + +-spec absolute_value(integer()) -> integer(). +absolute_value(X) -> + case X >= 0 of + true -> + X; + + false -> + X * -1 + end. + +-spec parse(binary()) -> {ok, integer()} | {error, nil}. +parse(String) -> + gleam_stdlib:parse_int(String). + +-spec base_parse(binary(), integer()) -> {ok, integer()} | {error, nil}. +base_parse(String, Base) -> + case (Base >= 2) andalso (Base =< 36) of + true -> + gleam_stdlib:int_from_base_string(String, Base); + + false -> + {error, nil} + end. + +-spec to_string(integer()) -> binary(). +to_string(X) -> + erlang:integer_to_binary(X). + +-spec to_base_string(integer(), integer()) -> {ok, binary()} | + {error, invalid_base()}. +to_base_string(X, Base) -> + case (Base >= 2) andalso (Base =< 36) of + true -> + {ok, erlang:integer_to_binary(X, Base)}; + + false -> + {error, invalid_base} + end. + +-spec to_base2(integer()) -> binary(). +to_base2(X) -> + erlang:integer_to_binary(X, 2). + +-spec to_base8(integer()) -> binary(). +to_base8(X) -> + erlang:integer_to_binary(X, 8). + +-spec to_base16(integer()) -> binary(). +to_base16(X) -> + erlang:integer_to_binary(X, 16). + +-spec to_base36(integer()) -> binary(). +to_base36(X) -> + erlang:integer_to_binary(X, 36). + +-spec to_float(integer()) -> float(). +to_float(X) -> + erlang:float(X). + +-spec power(integer(), float()) -> {ok, float()} | {error, nil}. +power(Base, Exponent) -> + _pipe = Base, + _pipe@1 = to_float(_pipe), + gleam@float:power(_pipe@1, Exponent). + +-spec square_root(integer()) -> {ok, float()} | {error, nil}. +square_root(X) -> + _pipe = X, + _pipe@1 = to_float(_pipe), + gleam@float:square_root(_pipe@1). + +-spec compare(integer(), integer()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. + +-spec min(integer(), integer()) -> integer(). +min(A, B) -> + case A < B of + true -> + A; + + false -> + B + end. + +-spec max(integer(), integer()) -> integer(). +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. + +-spec clamp(integer(), integer(), integer()) -> integer(). +clamp(X, Min_bound, Max_bound) -> + _pipe = X, + _pipe@1 = min(_pipe, Max_bound), + max(_pipe@1, Min_bound). + +-spec is_even(integer()) -> boolean(). +is_even(X) -> + (X rem 2) =:= 0. + +-spec is_odd(integer()) -> boolean(). +is_odd(X) -> + (X rem 2) /= 0. + +-spec negate(integer()) -> integer(). +negate(X) -> + -1 * X. + +-spec do_sum(list(integer()), integer()) -> integer(). +do_sum(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_sum(Rest, X + Initial) + end. + +-spec sum(list(integer())) -> integer(). +sum(Numbers) -> + _pipe = Numbers, + do_sum(_pipe, 0). + +-spec do_product(list(integer()), integer()) -> integer(). +do_product(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_product(Rest, X * Initial) + end. + +-spec product(list(integer())) -> integer(). +product(Numbers) -> + case Numbers of + [] -> + 1; + + _ -> + do_product(Numbers, 1) + end. + +-spec do_digits(integer(), integer(), list(integer())) -> list(integer()). +do_digits(X, Base, Acc) -> + case absolute_value(X) < Base of + true -> + [X | Acc]; + + false -> + do_digits(case Base of + 0 -> 0; + Gleam@denominator -> X div Gleam@denominator + end, Base, [case Base of + 0 -> 0; + Gleam@denominator@1 -> X rem Gleam@denominator@1 + end | Acc]) + end. + +-spec digits(integer(), integer()) -> {ok, list(integer())} | + {error, invalid_base()}. +digits(X, Base) -> + case Base < 2 of + true -> + {error, invalid_base}; + + false -> + {ok, do_digits(X, Base, [])} + end. + +-spec do_undigits(list(integer()), integer(), integer()) -> {ok, integer()} | + {error, invalid_base()}. +do_undigits(Numbers, Base, Acc) -> + case Numbers of + [] -> + {ok, Acc}; + + [Digit | _] when Digit >= Base -> + {error, invalid_base}; + + [Digit@1 | Rest] -> + do_undigits(Rest, Base, (Acc * Base) + Digit@1) + end. + +-spec undigits(list(integer()), integer()) -> {ok, integer()} | + {error, invalid_base()}. +undigits(Numbers, Base) -> + case Base < 2 of + true -> + {error, invalid_base}; + + false -> + do_undigits(Numbers, Base, 0) + end. + +-spec random(integer(), integer()) -> integer(). +random(Min, Max) -> + _pipe = gleam@float:random(to_float(Min), to_float(Max)), + _pipe@1 = gleam@float:floor(_pipe), + gleam@float:round(_pipe@1). + +-spec divide(integer(), integer()) -> {ok, integer()} | {error, nil}. +divide(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend div Gleam@denominator + end} + end. + +-spec remainder(integer(), integer()) -> {ok, integer()} | {error, nil}. +remainder(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end} + end. + +-spec modulo(integer(), integer()) -> {ok, integer()} | {error, nil}. +modulo(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + _ -> + Remainder = case Divisor of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end, + case (Remainder * Divisor) < 0 of + true -> + {ok, Remainder + Divisor}; + + false -> + {ok, Remainder} + end + end. + +-spec floor_divide(integer(), integer()) -> {ok, integer()} | {error, nil}. +floor_divide(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + case ((Dividend * Divisor@1) < 0) andalso ((case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end) /= 0) of + true -> + {ok, (case Divisor@1 of + 0 -> 0; + Gleam@denominator@1 -> Dividend div Gleam@denominator@1 + end) - 1}; + + false -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator@2 -> Dividend div Gleam@denominator@2 + end} + end + end. + +-spec add(integer(), integer()) -> integer(). +add(A, B) -> + A + B. + +-spec multiply(integer(), integer()) -> integer(). +multiply(A, B) -> + A * B. + +-spec subtract(integer(), integer()) -> integer(). +subtract(A, B) -> + A - B. + +-spec bitwise_and(integer(), integer()) -> integer(). +bitwise_and(X, Y) -> + erlang:'band'(X, Y). + +-spec bitwise_not(integer()) -> integer(). +bitwise_not(X) -> + erlang:'bnot'(X). + +-spec bitwise_or(integer(), integer()) -> integer(). +bitwise_or(X, Y) -> + erlang:'bor'(X, Y). + +-spec bitwise_exclusive_or(integer(), integer()) -> integer(). +bitwise_exclusive_or(X, Y) -> + erlang:'bxor'(X, Y). + +-spec bitwise_shift_left(integer(), integer()) -> integer(). +bitwise_shift_left(X, Y) -> + erlang:'bsl'(X, Y). + +-spec bitwise_shift_right(integer(), integer()) -> integer(). +bitwise_shift_right(X, Y) -> + erlang:'bsr'(X, Y). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache new file mode 100644 index 0000000..ddf78ca Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta new file mode 100644 index 0000000..06ce652 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl new file mode 100644 index 0000000..3ab9c35 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl @@ -0,0 +1,27 @@ +-module(gleam@io). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([print/1, print_error/1, println/1, println_error/1, debug/1]). + +-spec print(binary()) -> nil. +print(String) -> + gleam_stdlib:print(String). + +-spec print_error(binary()) -> nil. +print_error(String) -> + gleam_stdlib:print_error(String). + +-spec println(binary()) -> nil. +println(String) -> + gleam_stdlib:println(String). + +-spec println_error(binary()) -> nil. +println_error(String) -> + gleam_stdlib:println_error(String). + +-spec debug(FHE) -> FHE. +debug(Term) -> + _pipe = Term, + _pipe@1 = gleam@string:inspect(_pipe), + gleam_stdlib:println_error(_pipe@1), + Term. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache new file mode 100644 index 0000000..2582f43 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta new file mode 100644 index 0000000..2dcb80d Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl new file mode 100644 index 0000000..c7a4b31 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl @@ -0,0 +1,744 @@ +-module(gleam@iterator). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([unfold/2, repeatedly/1, repeat/1, from_list/1, transform/3, fold/3, run/1, to_list/1, step/1, take/2, drop/2, map/2, map2/3, append/2, flatten/1, concat/1, flat_map/2, filter/2, cycle/1, find/2, index/1, iterate/2, take_while/2, drop_while/2, scan/3, zip/2, chunk/2, sized_chunk/2, intersperse/2, any/2, all/2, group/2, reduce/2, last/1, empty/0, once/1, range/2, single/1, interleave/2, fold_until/3, try_fold/3, first/1, at/2, length/1, each/2, yield/2]). +-export_type([action/1, iterator/1, step/2, chunk/2, sized_chunk/1]). + +-type action(BUS) :: stop | {continue, BUS, fun(() -> action(BUS))}. + +-opaque iterator(BUT) :: {iterator, fun(() -> action(BUT))}. + +-type step(BUU, BUV) :: {next, BUU, BUV} | done. + +-type chunk(BUW, BUX) :: {another_by, + list(BUW), + BUX, + BUW, + fun(() -> action(BUW))} | + {last_by, list(BUW)}. + +-type sized_chunk(BUY) :: {another, list(BUY), fun(() -> action(BUY))} | + {last, list(BUY)} | + no_more. + +-spec stop() -> action(any()). +stop() -> + stop. + +-spec do_unfold(BVB, fun((BVB) -> step(BVC, BVB))) -> fun(() -> action(BVC)). +do_unfold(Initial, F) -> + fun() -> case F(Initial) of + {next, X, Acc} -> + {continue, X, do_unfold(Acc, F)}; + + done -> + stop + end end. + +-spec unfold(BVG, fun((BVG) -> step(BVH, BVG))) -> iterator(BVH). +unfold(Initial, F) -> + _pipe = Initial, + _pipe@1 = do_unfold(_pipe, F), + {iterator, _pipe@1}. + +-spec repeatedly(fun(() -> BVL)) -> iterator(BVL). +repeatedly(F) -> + unfold(nil, fun(_) -> {next, F(), nil} end). + +-spec repeat(BVN) -> iterator(BVN). +repeat(X) -> + repeatedly(fun() -> X end). + +-spec from_list(list(BVP)) -> iterator(BVP). +from_list(List) -> + Yield = fun(Acc) -> case Acc of + [] -> + done; + + [Head | Tail] -> + {next, Head, Tail} + end end, + unfold(List, Yield). + +-spec do_transform( + fun(() -> action(BVS)), + BVU, + fun((BVU, BVS) -> step(BVV, BVU)) +) -> fun(() -> action(BVV)). +do_transform(Continuation, State, F) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, El, Next} -> + case F(State, El) of + done -> + stop; + + {next, Yield, Next_state} -> + {continue, Yield, do_transform(Next, Next_state, F)} + end + end end. + +-spec transform(iterator(BVZ), BWB, fun((BWB, BVZ) -> step(BWC, BWB))) -> iterator(BWC). +transform(Iterator, Initial, F) -> + _pipe = do_transform(erlang:element(2, Iterator), Initial, F), + {iterator, _pipe}. + +-spec do_fold(fun(() -> action(BWG)), fun((BWI, BWG) -> BWI), BWI) -> BWI. +do_fold(Continuation, F, Accumulator) -> + case Continuation() of + {continue, Elem, Next} -> + do_fold(Next, F, F(Accumulator, Elem)); + + stop -> + Accumulator + end. + +-spec fold(iterator(BWJ), BWL, fun((BWL, BWJ) -> BWL)) -> BWL. +fold(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_fold(_pipe, F, Initial). + +-spec run(iterator(any())) -> nil. +run(Iterator) -> + fold(Iterator, nil, fun(_, _) -> nil end). + +-spec to_list(iterator(BWO)) -> list(BWO). +to_list(Iterator) -> + _pipe = Iterator, + _pipe@1 = fold(_pipe, [], fun(Acc, E) -> [E | Acc] end), + gleam@list:reverse(_pipe@1). + +-spec step(iterator(BWR)) -> step(BWR, iterator(BWR)). +step(Iterator) -> + case (erlang:element(2, Iterator))() of + stop -> + done; + + {continue, E, A} -> + {next, E, {iterator, A}} + end. + +-spec do_take(fun(() -> action(BWW)), integer()) -> fun(() -> action(BWW)). +do_take(Continuation, Desired) -> + fun() -> case Desired > 0 of + false -> + stop; + + true -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + {continue, E, do_take(Next, Desired - 1)} + end + end end. + +-spec take(iterator(BWZ), integer()) -> iterator(BWZ). +take(Iterator, Desired) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_take(_pipe, Desired), + {iterator, _pipe@1}. + +-spec do_drop(fun(() -> action(BXC)), integer()) -> action(BXC). +do_drop(Continuation, Desired) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Desired > 0 of + true -> + do_drop(Next, Desired - 1); + + false -> + {continue, E, Next} + end + end. + +-spec drop(iterator(BXF), integer()) -> iterator(BXF). +drop(Iterator, Desired) -> + _pipe = fun() -> do_drop(erlang:element(2, Iterator), Desired) end, + {iterator, _pipe}. + +-spec do_map(fun(() -> action(BXI)), fun((BXI) -> BXK)) -> fun(() -> action(BXK)). +do_map(Continuation, F) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Continuation@1} -> + {continue, F(E), do_map(Continuation@1, F)} + end end. + +-spec map(iterator(BXM), fun((BXM) -> BXO)) -> iterator(BXO). +map(Iterator, F) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_map(_pipe, F), + {iterator, _pipe@1}. + +-spec do_map2( + fun(() -> action(BXQ)), + fun(() -> action(BXS)), + fun((BXQ, BXS) -> BXU) +) -> fun(() -> action(BXU)). +do_map2(Continuation1, Continuation2, Fun) -> + fun() -> case Continuation1() of + stop -> + stop; + + {continue, A, Next_a} -> + case Continuation2() of + stop -> + stop; + + {continue, B, Next_b} -> + {continue, Fun(A, B), do_map2(Next_a, Next_b, Fun)} + end + end end. + +-spec map2(iterator(BXW), iterator(BXY), fun((BXW, BXY) -> BYA)) -> iterator(BYA). +map2(Iterator1, Iterator2, Fun) -> + _pipe = do_map2( + erlang:element(2, Iterator1), + erlang:element(2, Iterator2), + Fun + ), + {iterator, _pipe}. + +-spec do_append(fun(() -> action(BYC)), fun(() -> action(BYC))) -> action(BYC). +do_append(First, Second) -> + case First() of + {continue, E, First@1} -> + {continue, E, fun() -> do_append(First@1, Second) end}; + + stop -> + Second() + end. + +-spec append(iterator(BYG), iterator(BYG)) -> iterator(BYG). +append(First, Second) -> + _pipe = fun() -> + do_append(erlang:element(2, First), erlang:element(2, Second)) + end, + {iterator, _pipe}. + +-spec do_flatten(fun(() -> action(iterator(BYK)))) -> action(BYK). +do_flatten(Flattened) -> + case Flattened() of + stop -> + stop; + + {continue, It, Next_iterator} -> + do_append( + erlang:element(2, It), + fun() -> do_flatten(Next_iterator) end + ) + end. + +-spec flatten(iterator(iterator(BYO))) -> iterator(BYO). +flatten(Iterator) -> + _pipe = fun() -> do_flatten(erlang:element(2, Iterator)) end, + {iterator, _pipe}. + +-spec concat(list(iterator(BYS))) -> iterator(BYS). +concat(Iterators) -> + flatten(from_list(Iterators)). + +-spec flat_map(iterator(BYW), fun((BYW) -> iterator(BYY))) -> iterator(BYY). +flat_map(Iterator, F) -> + _pipe = Iterator, + _pipe@1 = map(_pipe, F), + flatten(_pipe@1). + +-spec do_filter(fun(() -> action(BZB)), fun((BZB) -> boolean())) -> action(BZB). +do_filter(Continuation, Predicate) -> + case Continuation() of + stop -> + stop; + + {continue, E, Iterator} -> + case Predicate(E) of + true -> + {continue, E, fun() -> do_filter(Iterator, Predicate) end}; + + false -> + do_filter(Iterator, Predicate) + end + end. + +-spec filter(iterator(BZE), fun((BZE) -> boolean())) -> iterator(BZE). +filter(Iterator, Predicate) -> + _pipe = fun() -> do_filter(erlang:element(2, Iterator), Predicate) end, + {iterator, _pipe}. + +-spec cycle(iterator(BZH)) -> iterator(BZH). +cycle(Iterator) -> + _pipe = repeat(Iterator), + flatten(_pipe). + +-spec do_find(fun(() -> action(BZL)), fun((BZL) -> boolean())) -> {ok, BZL} | + {error, nil}. +do_find(Continuation, F) -> + case Continuation() of + stop -> + {error, nil}; + + {continue, E, Next} -> + case F(E) of + true -> + {ok, E}; + + false -> + do_find(Next, F) + end + end. + +-spec find(iterator(BZP), fun((BZP) -> boolean())) -> {ok, BZP} | {error, nil}. +find(Haystack, Is_desired) -> + _pipe = erlang:element(2, Haystack), + do_find(_pipe, Is_desired). + +-spec do_index(fun(() -> action(BZT)), integer()) -> fun(() -> action({integer(), + BZT})). +do_index(Continuation, Next) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Continuation@1} -> + {continue, {Next, E}, do_index(Continuation@1, Next + 1)} + end end. + +-spec index(iterator(BZW)) -> iterator({integer(), BZW}). +index(Iterator) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_index(_pipe, 0), + {iterator, _pipe@1}. + +-spec iterate(BZZ, fun((BZZ) -> BZZ)) -> iterator(BZZ). +iterate(Initial, F) -> + unfold(Initial, fun(Element) -> {next, Element, F(Element)} end). + +-spec do_take_while(fun(() -> action(CAB)), fun((CAB) -> boolean())) -> fun(() -> action(CAB)). +do_take_while(Continuation, Predicate) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Predicate(E) of + false -> + stop; + + true -> + {continue, E, do_take_while(Next, Predicate)} + end + end end. + +-spec take_while(iterator(CAE), fun((CAE) -> boolean())) -> iterator(CAE). +take_while(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_take_while(_pipe, Predicate), + {iterator, _pipe@1}. + +-spec do_drop_while(fun(() -> action(CAH)), fun((CAH) -> boolean())) -> action(CAH). +do_drop_while(Continuation, Predicate) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Predicate(E) of + false -> + {continue, E, Next}; + + true -> + do_drop_while(Next, Predicate) + end + end. + +-spec drop_while(iterator(CAK), fun((CAK) -> boolean())) -> iterator(CAK). +drop_while(Iterator, Predicate) -> + _pipe = fun() -> do_drop_while(erlang:element(2, Iterator), Predicate) end, + {iterator, _pipe}. + +-spec do_scan(fun(() -> action(CAN)), fun((CAP, CAN) -> CAP), CAP) -> fun(() -> action(CAP)). +do_scan(Continuation, F, Accumulator) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, El, Next} -> + Accumulated = F(Accumulator, El), + {continue, Accumulated, do_scan(Next, F, Accumulated)} + end end. + +-spec scan(iterator(CAR), CAT, fun((CAT, CAR) -> CAT)) -> iterator(CAT). +scan(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_scan(_pipe, F, Initial), + {iterator, _pipe@1}. + +-spec do_zip(fun(() -> action(CAV)), fun(() -> action(CAX))) -> fun(() -> action({CAV, + CAX})). +do_zip(Left, Right) -> + fun() -> case Left() of + stop -> + stop; + + {continue, El_left, Next_left} -> + case Right() of + stop -> + stop; + + {continue, El_right, Next_right} -> + {continue, + {El_left, El_right}, + do_zip(Next_left, Next_right)} + end + end end. + +-spec zip(iterator(CBA), iterator(CBC)) -> iterator({CBA, CBC}). +zip(Left, Right) -> + _pipe = do_zip(erlang:element(2, Left), erlang:element(2, Right)), + {iterator, _pipe}. + +-spec next_chunk(fun(() -> action(CBF)), fun((CBF) -> CBH), CBH, list(CBF)) -> chunk(CBF, CBH). +next_chunk(Continuation, F, Previous_key, Current_chunk) -> + case Continuation() of + stop -> + {last_by, gleam@list:reverse(Current_chunk)}; + + {continue, E, Next} -> + Key = F(E), + case Key =:= Previous_key of + true -> + next_chunk(Next, F, Key, [E | Current_chunk]); + + false -> + {another_by, + gleam@list:reverse(Current_chunk), + Key, + E, + Next} + end + end. + +-spec do_chunk(fun(() -> action(CBL)), fun((CBL) -> CBN), CBN, CBL) -> action(list(CBL)). +do_chunk(Continuation, F, Previous_key, Previous_element) -> + case next_chunk(Continuation, F, Previous_key, [Previous_element]) of + {last_by, Chunk} -> + {continue, Chunk, fun stop/0}; + + {another_by, Chunk@1, Key, El, Next} -> + {continue, Chunk@1, fun() -> do_chunk(Next, F, Key, El) end} + end. + +-spec chunk(iterator(CBQ), fun((CBQ) -> any())) -> iterator(list(CBQ)). +chunk(Iterator, F) -> + _pipe = fun() -> case (erlang:element(2, Iterator))() of + stop -> + stop; + + {continue, E, Next} -> + do_chunk(Next, F, F(E), E) + end end, + {iterator, _pipe}. + +-spec next_sized_chunk(fun(() -> action(CBV)), integer(), list(CBV)) -> sized_chunk(CBV). +next_sized_chunk(Continuation, Left, Current_chunk) -> + case Continuation() of + stop -> + case Current_chunk of + [] -> + no_more; + + Remaining -> + {last, gleam@list:reverse(Remaining)} + end; + + {continue, E, Next} -> + Chunk = [E | Current_chunk], + case Left > 1 of + false -> + {another, gleam@list:reverse(Chunk), Next}; + + true -> + next_sized_chunk(Next, Left - 1, Chunk) + end + end. + +-spec do_sized_chunk(fun(() -> action(CBZ)), integer()) -> fun(() -> action(list(CBZ))). +do_sized_chunk(Continuation, Count) -> + fun() -> case next_sized_chunk(Continuation, Count, []) of + no_more -> + stop; + + {last, Chunk} -> + {continue, Chunk, fun stop/0}; + + {another, Chunk@1, Next_element} -> + {continue, Chunk@1, do_sized_chunk(Next_element, Count)} + end end. + +-spec sized_chunk(iterator(CCD), integer()) -> iterator(list(CCD)). +sized_chunk(Iterator, Count) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_sized_chunk(_pipe, Count), + {iterator, _pipe@1}. + +-spec do_intersperse(fun(() -> action(CCH)), CCH) -> action(CCH). +do_intersperse(Continuation, Separator) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + Next_interspersed = fun() -> do_intersperse(Next, Separator) end, + {continue, Separator, fun() -> {continue, E, Next_interspersed} end} + end. + +-spec intersperse(iterator(CCK), CCK) -> iterator(CCK). +intersperse(Iterator, Elem) -> + _pipe = fun() -> case (erlang:element(2, Iterator))() of + stop -> + stop; + + {continue, E, Next} -> + {continue, E, fun() -> do_intersperse(Next, Elem) end} + end end, + {iterator, _pipe}. + +-spec do_any(fun(() -> action(CCN)), fun((CCN) -> boolean())) -> boolean(). +do_any(Continuation, Predicate) -> + case Continuation() of + stop -> + false; + + {continue, E, Next} -> + case Predicate(E) of + true -> + true; + + false -> + do_any(Next, Predicate) + end + end. + +-spec any(iterator(CCP), fun((CCP) -> boolean())) -> boolean(). +any(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + do_any(_pipe, Predicate). + +-spec do_all(fun(() -> action(CCR)), fun((CCR) -> boolean())) -> boolean(). +do_all(Continuation, Predicate) -> + case Continuation() of + stop -> + true; + + {continue, E, Next} -> + case Predicate(E) of + true -> + do_all(Next, Predicate); + + false -> + false + end + end. + +-spec all(iterator(CCT), fun((CCT) -> boolean())) -> boolean(). +all(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + do_all(_pipe, Predicate). + +-spec update_group_with(CCV) -> fun((gleam@option:option(list(CCV))) -> list(CCV)). +update_group_with(El) -> + fun(Maybe_group) -> case Maybe_group of + {some, Group} -> + [El | Group]; + + none -> + [El] + end end. + +-spec group_updater(fun((CCZ) -> CDA)) -> fun((gleam@dict:dict(CDA, list(CCZ)), CCZ) -> gleam@dict:dict(CDA, list(CCZ))). +group_updater(F) -> + fun(Groups, Elem) -> _pipe = Groups, + gleam@dict:update(_pipe, F(Elem), update_group_with(Elem)) end. + +-spec group(iterator(CDH), fun((CDH) -> CDJ)) -> gleam@dict:dict(CDJ, list(CDH)). +group(Iterator, Key) -> + _pipe = Iterator, + _pipe@1 = fold(_pipe, gleam@dict:new(), group_updater(Key)), + gleam@dict:map_values( + _pipe@1, + fun(_, Group) -> gleam@list:reverse(Group) end + ). + +-spec reduce(iterator(CDN), fun((CDN, CDN) -> CDN)) -> {ok, CDN} | {error, nil}. +reduce(Iterator, F) -> + case (erlang:element(2, Iterator))() of + stop -> + {error, nil}; + + {continue, E, Next} -> + _pipe = do_fold(Next, F, E), + {ok, _pipe} + end. + +-spec last(iterator(CDR)) -> {ok, CDR} | {error, nil}. +last(Iterator) -> + _pipe = Iterator, + reduce(_pipe, fun(_, Elem) -> Elem end). + +-spec empty() -> iterator(any()). +empty() -> + {iterator, fun stop/0}. + +-spec once(fun(() -> CDX)) -> iterator(CDX). +once(F) -> + _pipe = fun() -> {continue, F(), fun stop/0} end, + {iterator, _pipe}. + +-spec range(integer(), integer()) -> iterator(integer()). +range(Start, Stop) -> + case gleam@int:compare(Start, Stop) of + eq -> + once(fun() -> Start end); + + gt -> + unfold(Start, fun(Current) -> case Current < Stop of + false -> + {next, Current, Current - 1}; + + true -> + done + end end); + + lt -> + unfold(Start, fun(Current@1) -> case Current@1 > Stop of + false -> + {next, Current@1, Current@1 + 1}; + + true -> + done + end end) + end. + +-spec single(CDZ) -> iterator(CDZ). +single(Elem) -> + once(fun() -> Elem end). + +-spec do_interleave(fun(() -> action(CEB)), fun(() -> action(CEB))) -> action(CEB). +do_interleave(Current, Next) -> + case Current() of + stop -> + Next(); + + {continue, E, Next_other} -> + {continue, E, fun() -> do_interleave(Next, Next_other) end} + end. + +-spec interleave(iterator(CEF), iterator(CEF)) -> iterator(CEF). +interleave(Left, Right) -> + _pipe = fun() -> + do_interleave(erlang:element(2, Left), erlang:element(2, Right)) + end, + {iterator, _pipe}. + +-spec do_fold_until( + fun(() -> action(CEJ)), + fun((CEL, CEJ) -> gleam@list:continue_or_stop(CEL)), + CEL +) -> CEL. +do_fold_until(Continuation, F, Accumulator) -> + case Continuation() of + stop -> + Accumulator; + + {continue, Elem, Next} -> + case F(Accumulator, Elem) of + {continue, Accumulator@1} -> + do_fold_until(Next, F, Accumulator@1); + + {stop, Accumulator@2} -> + Accumulator@2 + end + end. + +-spec fold_until( + iterator(CEN), + CEP, + fun((CEP, CEN) -> gleam@list:continue_or_stop(CEP)) +) -> CEP. +fold_until(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_fold_until(_pipe, F, Initial). + +-spec do_try_fold( + fun(() -> action(CER)), + fun((CET, CER) -> {ok, CET} | {error, CEU}), + CET +) -> {ok, CET} | {error, CEU}. +do_try_fold(Continuation, F, Accumulator) -> + case Continuation() of + stop -> + {ok, Accumulator}; + + {continue, Elem, Next} -> + gleam@result:'try'( + F(Accumulator, Elem), + fun(Accumulator@1) -> do_try_fold(Next, F, Accumulator@1) end + ) + end. + +-spec try_fold(iterator(CEZ), CFB, fun((CFB, CEZ) -> {ok, CFB} | {error, CFC})) -> {ok, + CFB} | + {error, CFC}. +try_fold(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_try_fold(_pipe, F, Initial). + +-spec first(iterator(CFH)) -> {ok, CFH} | {error, nil}. +first(Iterator) -> + case (erlang:element(2, Iterator))() of + stop -> + {error, nil}; + + {continue, E, _} -> + {ok, E} + end. + +-spec at(iterator(CFL), integer()) -> {ok, CFL} | {error, nil}. +at(Iterator, Index) -> + _pipe = Iterator, + _pipe@1 = drop(_pipe, Index), + first(_pipe@1). + +-spec do_length(fun(() -> action(any())), integer()) -> integer(). +do_length(Continuation, Length) -> + case Continuation() of + stop -> + Length; + + {continue, _, Next} -> + do_length(Next, Length + 1) + end. + +-spec length(iterator(any())) -> integer(). +length(Iterator) -> + _pipe = erlang:element(2, Iterator), + do_length(_pipe, 0). + +-spec each(iterator(CFT), fun((CFT) -> any())) -> nil. +each(Iterator, F) -> + _pipe = Iterator, + _pipe@1 = map(_pipe, F), + run(_pipe@1). + +-spec yield(CFW, fun(() -> iterator(CFW))) -> iterator(CFW). +yield(Element, Next) -> + {iterator, fun() -> {continue, Element, erlang:element(2, Next())} end}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache new file mode 100644 index 0000000..394792a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta new file mode 100644 index 0000000..56b294f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl new file mode 100644 index 0000000..6c2e684 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl @@ -0,0 +1,1129 @@ +-module(gleam@list). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([length/1, reverse/1, is_empty/1, contains/2, first/1, rest/1, filter/2, filter_map/2, map/2, map2/3, index_map/2, try_map/2, drop/2, take/2, new/0, append/2, prepend/2, concat/1, flatten/1, flat_map/2, fold/3, group/2, map_fold/3, fold_right/3, index_fold/3, try_fold/3, fold_until/3, find/2, find_map/2, all/2, any/2, zip/2, strict_zip/2, unzip/1, intersperse/2, at/2, unique/1, sort/2, range/2, repeat/2, split/2, split_while/2, key_find/2, key_filter/2, pop/2, pop_map/2, key_pop/2, key_set/3, each/2, try_each/2, partition/2, permutations/1, window/2, window_by_2/1, drop_while/2, take_while/2, chunk/2, sized_chunk/2, reduce/2, scan/3, last/1, combinations/2, combination_pairs/1, transpose/1, interleave/1, shuffle/1]). +-export_type([length_mismatch/0, continue_or_stop/1]). + +-type length_mismatch() :: length_mismatch. + +-type continue_or_stop(UD) :: {continue, UD} | {stop, UD}. + +-spec length(list(any())) -> integer(). +length(List) -> + erlang:length(List). + +-spec reverse(list(UI)) -> list(UI). +reverse(Xs) -> + lists:reverse(Xs). + +-spec is_empty(list(any())) -> boolean(). +is_empty(List) -> + List =:= []. + +-spec contains(list(UQ), UQ) -> boolean(). +contains(List, Elem) -> + case List of + [] -> + false; + + [First | _] when First =:= Elem -> + true; + + [_ | Rest] -> + contains(Rest, Elem) + end. + +-spec first(list(US)) -> {ok, US} | {error, nil}. +first(List) -> + case List of + [] -> + {error, nil}; + + [X | _] -> + {ok, X} + end. + +-spec rest(list(UW)) -> {ok, list(UW)} | {error, nil}. +rest(List) -> + case List of + [] -> + {error, nil}; + + [_ | Xs] -> + {ok, Xs} + end. + +-spec update_group(fun((VB) -> VC)) -> fun((gleam@dict:dict(VC, list(VB)), VB) -> gleam@dict:dict(VC, list(VB))). +update_group(F) -> + fun(Groups, Elem) -> case gleam@dict:get(Groups, F(Elem)) of + {ok, Existing} -> + gleam@dict:insert(Groups, F(Elem), [Elem | Existing]); + + {error, _} -> + gleam@dict:insert(Groups, F(Elem), [Elem]) + end end. + +-spec do_filter(list(VP), fun((VP) -> boolean()), list(VP)) -> list(VP). +do_filter(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + New_acc = case Fun(X) of + true -> + [X | Acc]; + + false -> + Acc + end, + do_filter(Xs, Fun, New_acc) + end. + +-spec filter(list(VT), fun((VT) -> boolean())) -> list(VT). +filter(List, Predicate) -> + do_filter(List, Predicate, []). + +-spec do_filter_map(list(VW), fun((VW) -> {ok, VY} | {error, any()}), list(VY)) -> list(VY). +do_filter_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + New_acc = case Fun(X) of + {ok, X@1} -> + [X@1 | Acc]; + + {error, _} -> + Acc + end, + do_filter_map(Xs, Fun, New_acc) + end. + +-spec filter_map(list(WE), fun((WE) -> {ok, WG} | {error, any()})) -> list(WG). +filter_map(List, Fun) -> + do_filter_map(List, Fun, []). + +-spec do_map(list(WL), fun((WL) -> WN), list(WN)) -> list(WN). +do_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_map(Xs, Fun, [Fun(X) | Acc]) + end. + +-spec map(list(WQ), fun((WQ) -> WS)) -> list(WS). +map(List, Fun) -> + do_map(List, Fun, []). + +-spec do_map2(list(XA), list(XC), fun((XA, XC) -> XE), list(XE)) -> list(XE). +do_map2(List1, List2, Fun, Acc) -> + case {List1, List2} of + {[], _} -> + reverse(Acc); + + {_, []} -> + reverse(Acc); + + {[A | As_], [B | Bs]} -> + do_map2(As_, Bs, Fun, [Fun(A, B) | Acc]) + end. + +-spec map2(list(WU), list(WW), fun((WU, WW) -> WY)) -> list(WY). +map2(List1, List2, Fun) -> + do_map2(List1, List2, Fun, []). + +-spec do_index_map(list(XM), fun((integer(), XM) -> XO), integer(), list(XO)) -> list(XO). +do_index_map(List, Fun, Index, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + Acc@1 = [Fun(Index, X) | Acc], + do_index_map(Xs, Fun, Index + 1, Acc@1) + end. + +-spec index_map(list(XR), fun((integer(), XR) -> XT)) -> list(XT). +index_map(List, Fun) -> + do_index_map(List, Fun, 0, []). + +-spec do_try_map(list(XV), fun((XV) -> {ok, XX} | {error, XY}), list(XX)) -> {ok, + list(XX)} | + {error, XY}. +do_try_map(List, Fun, Acc) -> + case List of + [] -> + {ok, reverse(Acc)}; + + [X | Xs] -> + case Fun(X) of + {ok, Y} -> + do_try_map(Xs, Fun, [Y | Acc]); + + {error, Error} -> + {error, Error} + end + end. + +-spec try_map(list(YF), fun((YF) -> {ok, YH} | {error, YI})) -> {ok, list(YH)} | + {error, YI}. +try_map(List, Fun) -> + do_try_map(List, Fun, []). + +-spec drop(list(YO), integer()) -> list(YO). +drop(List, N) -> + case N =< 0 of + true -> + List; + + false -> + case List of + [] -> + []; + + [_ | Xs] -> + drop(Xs, N - 1) + end + end. + +-spec do_take(list(YR), integer(), list(YR)) -> list(YR). +do_take(List, N, Acc) -> + case N =< 0 of + true -> + reverse(Acc); + + false -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_take(Xs, N - 1, [X | Acc]) + end + end. + +-spec take(list(YV), integer()) -> list(YV). +take(List, N) -> + do_take(List, N, []). + +-spec new() -> list(any()). +new() -> + []. + +-spec append(list(AAA), list(AAA)) -> list(AAA). +append(First, Second) -> + lists:append(First, Second). + +-spec prepend(list(AAI), AAI) -> list(AAI). +prepend(List, Item) -> + [Item | List]. + +-spec reverse_and_prepend(list(AAL), list(AAL)) -> list(AAL). +reverse_and_prepend(Prefix, Suffix) -> + case Prefix of + [] -> + Suffix; + + [First | Rest] -> + reverse_and_prepend(Rest, [First | Suffix]) + end. + +-spec do_concat(list(list(AAP)), list(AAP)) -> list(AAP). +do_concat(Lists, Acc) -> + case Lists of + [] -> + reverse(Acc); + + [List | Further_lists] -> + do_concat(Further_lists, reverse_and_prepend(List, Acc)) + end. + +-spec concat(list(list(AAU))) -> list(AAU). +concat(Lists) -> + do_concat(Lists, []). + +-spec flatten(list(list(AAY))) -> list(AAY). +flatten(Lists) -> + do_concat(Lists, []). + +-spec flat_map(list(ABC), fun((ABC) -> list(ABE))) -> list(ABE). +flat_map(List, Fun) -> + _pipe = map(List, Fun), + concat(_pipe). + +-spec fold(list(ABH), ABJ, fun((ABJ, ABH) -> ABJ)) -> ABJ. +fold(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [X | Rest] -> + fold(Rest, Fun(Initial, X), Fun) + end. + +-spec group(list(VJ), fun((VJ) -> VL)) -> gleam@dict:dict(VL, list(VJ)). +group(List, Key) -> + fold(List, gleam@dict:new(), update_group(Key)). + +-spec map_fold(list(XH), XJ, fun((XJ, XH) -> {XJ, XK})) -> {XJ, list(XK)}. +map_fold(List, Acc, Fun) -> + _pipe = fold( + List, + {Acc, []}, + fun(Acc@1, Item) -> + {Current_acc, Items} = Acc@1, + {Next_acc, Next_item} = Fun(Current_acc, Item), + {Next_acc, [Next_item | Items]} + end + ), + gleam@pair:map_second(_pipe, fun reverse/1). + +-spec fold_right(list(ABK), ABM, fun((ABM, ABK) -> ABM)) -> ABM. +fold_right(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [X | Rest] -> + Fun(fold_right(Rest, Initial, Fun), X) + end. + +-spec do_index_fold( + list(ABN), + ABP, + fun((ABP, ABN, integer()) -> ABP), + integer() +) -> ABP. +do_index_fold(Over, Acc, With, Index) -> + case Over of + [] -> + Acc; + + [First | Rest] -> + do_index_fold(Rest, With(Acc, First, Index), With, Index + 1) + end. + +-spec index_fold(list(ABQ), ABS, fun((ABS, ABQ, integer()) -> ABS)) -> ABS. +index_fold(Over, Initial, Fun) -> + do_index_fold(Over, Initial, Fun, 0). + +-spec try_fold(list(ABT), ABV, fun((ABV, ABT) -> {ok, ABV} | {error, ABW})) -> {ok, + ABV} | + {error, ABW}. +try_fold(Collection, Accumulator, Fun) -> + case Collection of + [] -> + {ok, Accumulator}; + + [First | Rest] -> + case Fun(Accumulator, First) of + {ok, Result} -> + try_fold(Rest, Result, Fun); + + {error, _} = Error -> + Error + end + end. + +-spec fold_until(list(ACB), ACD, fun((ACD, ACB) -> continue_or_stop(ACD))) -> ACD. +fold_until(Collection, Accumulator, Fun) -> + case Collection of + [] -> + Accumulator; + + [First | Rest] -> + case Fun(Accumulator, First) of + {continue, Next_accumulator} -> + fold_until(Rest, Next_accumulator, Fun); + + {stop, B} -> + B + end + end. + +-spec find(list(ACF), fun((ACF) -> boolean())) -> {ok, ACF} | {error, nil}. +find(Haystack, Is_desired) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Is_desired(X) of + true -> + {ok, X}; + + _ -> + find(Rest, Is_desired) + end + end. + +-spec find_map(list(ACJ), fun((ACJ) -> {ok, ACL} | {error, any()})) -> {ok, ACL} | + {error, nil}. +find_map(Haystack, Fun) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Fun(X) of + {ok, X@1} -> + {ok, X@1}; + + _ -> + find_map(Rest, Fun) + end + end. + +-spec all(list(ACR), fun((ACR) -> boolean())) -> boolean(). +all(List, Predicate) -> + case List of + [] -> + true; + + [First | Rest] -> + case Predicate(First) of + true -> + all(Rest, Predicate); + + false -> + false + end + end. + +-spec any(list(ACT), fun((ACT) -> boolean())) -> boolean(). +any(List, Predicate) -> + case List of + [] -> + false; + + [First | Rest] -> + case Predicate(First) of + true -> + true; + + false -> + any(Rest, Predicate) + end + end. + +-spec do_zip(list(ACV), list(ACX), list({ACV, ACX})) -> list({ACV, ACX}). +do_zip(Xs, Ys, Acc) -> + case {Xs, Ys} of + {[X | Xs@1], [Y | Ys@1]} -> + do_zip(Xs@1, Ys@1, [{X, Y} | Acc]); + + {_, _} -> + reverse(Acc) + end. + +-spec zip(list(ADB), list(ADD)) -> list({ADB, ADD}). +zip(List, Other) -> + do_zip(List, Other, []). + +-spec strict_zip(list(ADG), list(ADI)) -> {ok, list({ADG, ADI})} | + {error, length_mismatch()}. +strict_zip(List, Other) -> + case length(List) =:= length(Other) of + true -> + {ok, zip(List, Other)}; + + false -> + {error, length_mismatch} + end. + +-spec do_unzip(list({ATA, ATB}), list(ATA), list(ATB)) -> {list(ATA), list(ATB)}. +do_unzip(Input, Xs, Ys) -> + case Input of + [] -> + {reverse(Xs), reverse(Ys)}; + + [{X, Y} | Rest] -> + do_unzip(Rest, [X | Xs], [Y | Ys]) + end. + +-spec unzip(list({ADR, ADS})) -> {list(ADR), list(ADS)}. +unzip(Input) -> + do_unzip(Input, [], []). + +-spec do_intersperse(list(ADW), ADW, list(ADW)) -> list(ADW). +do_intersperse(List, Separator, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Rest] -> + do_intersperse(Rest, Separator, [X, Separator | Acc]) + end. + +-spec intersperse(list(AEA), AEA) -> list(AEA). +intersperse(List, Elem) -> + case List of + [] -> + List; + + [_] -> + List; + + [X | Rest] -> + do_intersperse(Rest, Elem, [X]) + end. + +-spec at(list(AED), integer()) -> {ok, AED} | {error, nil}. +at(List, Index) -> + case Index >= 0 of + true -> + _pipe = List, + _pipe@1 = drop(_pipe, Index), + first(_pipe@1); + + false -> + {error, nil} + end. + +-spec unique(list(AEH)) -> list(AEH). +unique(List) -> + case List of + [] -> + []; + + [X | Rest] -> + [X | unique(filter(Rest, fun(Y) -> Y /= X end))] + end. + +-spec merge_up( + integer(), + integer(), + list(AEK), + list(AEK), + list(AEK), + fun((AEK, AEK) -> gleam@order:order()) +) -> list(AEK). +merge_up(Na, Nb, A, B, Acc, Compare) -> + case {Na, Nb, A, B} of + {0, 0, _, _} -> + Acc; + + {_, 0, [Ax | Ar], _} -> + merge_up(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); + + {0, _, _, [Bx | Br]} -> + merge_up(Na, Nb - 1, A, Br, [Bx | Acc], Compare); + + {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> + case Compare(Ax@1, Bx@1) of + gt -> + merge_up(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare); + + _ -> + merge_up(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare) + end; + + {_, _, _, _} -> + Acc + end. + +-spec merge_down( + integer(), + integer(), + list(AEP), + list(AEP), + list(AEP), + fun((AEP, AEP) -> gleam@order:order()) +) -> list(AEP). +merge_down(Na, Nb, A, B, Acc, Compare) -> + case {Na, Nb, A, B} of + {0, 0, _, _} -> + Acc; + + {_, 0, [Ax | Ar], _} -> + merge_down(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); + + {0, _, _, [Bx | Br]} -> + merge_down(Na, Nb - 1, A, Br, [Bx | Acc], Compare); + + {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> + case Compare(Bx@1, Ax@1) of + lt -> + merge_down(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare); + + _ -> + merge_down(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare) + end; + + {_, _, _, _} -> + Acc + end. + +-spec merge_sort( + list(AEU), + integer(), + fun((AEU, AEU) -> gleam@order:order()), + boolean() +) -> list(AEU). +merge_sort(L, Ln, Compare, Down) -> + N = Ln div 2, + A = L, + B = drop(L, N), + case Ln < 3 of + true -> + case Down of + true -> + merge_down(N, Ln - N, A, B, [], Compare); + + false -> + merge_up(N, Ln - N, A, B, [], Compare) + end; + + false -> + case Down of + true -> + merge_down( + N, + Ln - N, + merge_sort(A, N, Compare, false), + merge_sort(B, Ln - N, Compare, false), + [], + Compare + ); + + false -> + merge_up( + N, + Ln - N, + merge_sort(A, N, Compare, true), + merge_sort(B, Ln - N, Compare, true), + [], + Compare + ) + end + end. + +-spec sort(list(AEX), fun((AEX, AEX) -> gleam@order:order())) -> list(AEX). +sort(List, Compare) -> + merge_sort(List, length(List), Compare, true). + +-spec tail_recursive_range(integer(), integer(), list(integer())) -> list(integer()). +tail_recursive_range(Start, Stop, Acc) -> + case gleam@int:compare(Start, Stop) of + eq -> + [Stop | Acc]; + + gt -> + tail_recursive_range(Start, Stop + 1, [Stop | Acc]); + + lt -> + tail_recursive_range(Start, Stop - 1, [Stop | Acc]) + end. + +-spec range(integer(), integer()) -> list(integer()). +range(Start, Stop) -> + tail_recursive_range(Start, Stop, []). + +-spec do_repeat(AFD, integer(), list(AFD)) -> list(AFD). +do_repeat(A, Times, Acc) -> + case Times =< 0 of + true -> + Acc; + + false -> + do_repeat(A, Times - 1, [A | Acc]) + end. + +-spec repeat(AFG, integer()) -> list(AFG). +repeat(A, Times) -> + do_repeat(A, Times, []). + +-spec do_split(list(AFI), integer(), list(AFI)) -> {list(AFI), list(AFI)}. +do_split(List, N, Taken) -> + case N =< 0 of + true -> + {reverse(Taken), List}; + + false -> + case List of + [] -> + {reverse(Taken), []}; + + [X | Xs] -> + do_split(Xs, N - 1, [X | Taken]) + end + end. + +-spec split(list(AFN), integer()) -> {list(AFN), list(AFN)}. +split(List, Index) -> + do_split(List, Index, []). + +-spec do_split_while(list(AFR), fun((AFR) -> boolean()), list(AFR)) -> {list(AFR), + list(AFR)}. +do_split_while(List, F, Acc) -> + case List of + [] -> + {reverse(Acc), []}; + + [X | Xs] -> + case F(X) of + false -> + {reverse(Acc), List}; + + _ -> + do_split_while(Xs, F, [X | Acc]) + end + end. + +-spec split_while(list(AFW), fun((AFW) -> boolean())) -> {list(AFW), list(AFW)}. +split_while(List, Predicate) -> + do_split_while(List, Predicate, []). + +-spec key_find(list({AGA, AGB}), AGA) -> {ok, AGB} | {error, nil}. +key_find(Keyword_list, Desired_key) -> + find_map( + Keyword_list, + fun(Keyword) -> + {Key, Value} = Keyword, + case Key =:= Desired_key of + true -> + {ok, Value}; + + false -> + {error, nil} + end + end + ). + +-spec key_filter(list({AGF, AGG}), AGF) -> list(AGG). +key_filter(Keyword_list, Desired_key) -> + filter_map( + Keyword_list, + fun(Keyword) -> + {Key, Value} = Keyword, + case Key =:= Desired_key of + true -> + {ok, Value}; + + false -> + {error, nil} + end + end + ). + +-spec do_pop(list(AWT), fun((AWT) -> boolean()), list(AWT)) -> {ok, + {AWT, list(AWT)}} | + {error, nil}. +do_pop(Haystack, Predicate, Checked) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Predicate(X) of + true -> + {ok, {X, append(reverse(Checked), Rest)}}; + + false -> + do_pop(Rest, Predicate, [X | Checked]) + end + end. + +-spec pop(list(AGN), fun((AGN) -> boolean())) -> {ok, {AGN, list(AGN)}} | + {error, nil}. +pop(Haystack, Is_desired) -> + do_pop(Haystack, Is_desired, []). + +-spec do_pop_map(list(AXH), fun((AXH) -> {ok, AXU} | {error, any()}), list(AXH)) -> {ok, + {AXU, list(AXH)}} | + {error, nil}. +do_pop_map(Haystack, Mapper, Checked) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Mapper(X) of + {ok, Y} -> + {ok, {Y, append(reverse(Checked), Rest)}}; + + {error, _} -> + do_pop_map(Rest, Mapper, [X | Checked]) + end + end. + +-spec pop_map(list(AGW), fun((AGW) -> {ok, AGY} | {error, any()})) -> {ok, + {AGY, list(AGW)}} | + {error, nil}. +pop_map(Haystack, Is_desired) -> + do_pop_map(Haystack, Is_desired, []). + +-spec key_pop(list({AHF, AHG}), AHF) -> {ok, {AHG, list({AHF, AHG})}} | + {error, nil}. +key_pop(Haystack, Key) -> + pop_map( + Haystack, + fun(Entry) -> + {K, V} = Entry, + case K of + K@1 when K@1 =:= Key -> + {ok, V}; + + _ -> + {error, nil} + end + end + ). + +-spec key_set(list({AHL, AHM}), AHL, AHM) -> list({AHL, AHM}). +key_set(List, Key, Value) -> + case List of + [] -> + [{Key, Value}]; + + [{K, _} | Rest] when K =:= Key -> + [{Key, Value} | Rest]; + + [First | Rest@1] -> + [First | key_set(Rest@1, Key, Value)] + end. + +-spec each(list(AHP), fun((AHP) -> any())) -> nil. +each(List, F) -> + case List of + [] -> + nil; + + [X | Xs] -> + F(X), + each(Xs, F) + end. + +-spec try_each(list(AHS), fun((AHS) -> {ok, any()} | {error, AHV})) -> {ok, nil} | + {error, AHV}. +try_each(List, Fun) -> + case List of + [] -> + {ok, nil}; + + [X | Xs] -> + case Fun(X) of + {ok, _} -> + try_each(Xs, Fun); + + {error, E} -> + {error, E} + end + end. + +-spec do_partition(list(AZB), fun((AZB) -> boolean()), list(AZB), list(AZB)) -> {list(AZB), + list(AZB)}. +do_partition(List, Categorise, Trues, Falses) -> + case List of + [] -> + {reverse(Trues), reverse(Falses)}; + + [X | Xs] -> + case Categorise(X) of + true -> + do_partition(Xs, Categorise, [X | Trues], Falses); + + false -> + do_partition(Xs, Categorise, Trues, [X | Falses]) + end + end. + +-spec partition(list(AIF), fun((AIF) -> boolean())) -> {list(AIF), list(AIF)}. +partition(List, Categorise) -> + do_partition(List, Categorise, [], []). + +-spec permutations(list(AIJ)) -> list(list(AIJ)). +permutations(L) -> + case L of + [] -> + [[]]; + + _ -> + _pipe = L, + _pipe@5 = index_map(_pipe, fun(I_idx, I) -> _pipe@1 = L, + _pipe@2 = index_fold( + _pipe@1, + [], + fun(Acc, J, J_idx) -> case I_idx =:= J_idx of + true -> + Acc; + + false -> + [J | Acc] + end end + ), + _pipe@3 = reverse(_pipe@2), + _pipe@4 = permutations(_pipe@3), + map(_pipe@4, fun(Permutation) -> [I | Permutation] end) end), + concat(_pipe@5) + end. + +-spec do_window(list(list(AIN)), list(AIN), integer()) -> list(list(AIN)). +do_window(Acc, L, N) -> + Window = take(L, N), + case length(Window) =:= N of + true -> + do_window([Window | Acc], drop(L, 1), N); + + false -> + Acc + end. + +-spec window(list(AIT), integer()) -> list(list(AIT)). +window(L, N) -> + _pipe = do_window([], L, N), + reverse(_pipe). + +-spec window_by_2(list(AIX)) -> list({AIX, AIX}). +window_by_2(L) -> + zip(L, drop(L, 1)). + +-spec drop_while(list(AJA), fun((AJA) -> boolean())) -> list(AJA). +drop_while(List, Predicate) -> + case List of + [] -> + []; + + [X | Xs] -> + case Predicate(X) of + true -> + drop_while(Xs, Predicate); + + false -> + [X | Xs] + end + end. + +-spec do_take_while(list(AJD), fun((AJD) -> boolean()), list(AJD)) -> list(AJD). +do_take_while(List, Predicate, Acc) -> + case List of + [] -> + reverse(Acc); + + [First | Rest] -> + case Predicate(First) of + true -> + do_take_while(Rest, Predicate, [First | Acc]); + + false -> + reverse(Acc) + end + end. + +-spec take_while(list(AJH), fun((AJH) -> boolean())) -> list(AJH). +take_while(List, Predicate) -> + do_take_while(List, Predicate, []). + +-spec do_chunk(list(AJK), fun((AJK) -> AJM), AJM, list(AJK), list(list(AJK))) -> list(list(AJK)). +do_chunk(List, F, Previous_key, Current_chunk, Acc) -> + case List of + [First | Rest] -> + Key = F(First), + case Key =:= Previous_key of + false -> + New_acc = [reverse(Current_chunk) | Acc], + do_chunk(Rest, F, Key, [First], New_acc); + + _ -> + do_chunk(Rest, F, Key, [First | Current_chunk], Acc) + end; + + _ -> + reverse([reverse(Current_chunk) | Acc]) + end. + +-spec chunk(list(AJS), fun((AJS) -> any())) -> list(list(AJS)). +chunk(List, F) -> + case List of + [] -> + []; + + [First | Rest] -> + do_chunk(Rest, F, F(First), [First], []) + end. + +-spec do_sized_chunk( + list(AJX), + integer(), + integer(), + list(AJX), + list(list(AJX)) +) -> list(list(AJX)). +do_sized_chunk(List, Count, Left, Current_chunk, Acc) -> + case List of + [] -> + case Current_chunk of + [] -> + reverse(Acc); + + Remaining -> + reverse([reverse(Remaining) | Acc]) + end; + + [First | Rest] -> + Chunk = [First | Current_chunk], + case Left > 1 of + false -> + do_sized_chunk( + Rest, + Count, + Count, + [], + [reverse(Chunk) | Acc] + ); + + true -> + do_sized_chunk(Rest, Count, Left - 1, Chunk, Acc) + end + end. + +-spec sized_chunk(list(AKE), integer()) -> list(list(AKE)). +sized_chunk(List, Count) -> + do_sized_chunk(List, Count, Count, [], []). + +-spec reduce(list(AKI), fun((AKI, AKI) -> AKI)) -> {ok, AKI} | {error, nil}. +reduce(List, Fun) -> + case List of + [] -> + {error, nil}; + + [First | Rest] -> + {ok, fold(Rest, First, Fun)} + end. + +-spec do_scan(list(AKM), AKO, list(AKO), fun((AKO, AKM) -> AKO)) -> list(AKO). +do_scan(List, Accumulator, Accumulated, Fun) -> + case List of + [] -> + reverse(Accumulated); + + [X | Xs] -> + Next = Fun(Accumulator, X), + do_scan(Xs, Next, [Next | Accumulated], Fun) + end. + +-spec scan(list(AKR), AKT, fun((AKT, AKR) -> AKT)) -> list(AKT). +scan(List, Initial, Fun) -> + do_scan(List, Initial, [], Fun). + +-spec last(list(AKV)) -> {ok, AKV} | {error, nil}. +last(List) -> + _pipe = List, + reduce(_pipe, fun(_, Elem) -> Elem end). + +-spec combinations(list(AKZ), integer()) -> list(list(AKZ)). +combinations(Items, N) -> + case N of + 0 -> + [[]]; + + _ -> + case Items of + [] -> + []; + + [X | Xs] -> + First_combinations = begin + _pipe = map( + combinations(Xs, N - 1), + fun(Com) -> [X | Com] end + ), + reverse(_pipe) + end, + fold( + First_combinations, + combinations(Xs, N), + fun(Acc, C) -> [C | Acc] end + ) + end + end. + +-spec do_combination_pairs(list(ALD)) -> list(list({ALD, ALD})). +do_combination_pairs(Items) -> + case Items of + [] -> + []; + + [X | Xs] -> + First_combinations = map(Xs, fun(Other) -> {X, Other} end), + [First_combinations | do_combination_pairs(Xs)] + end. + +-spec combination_pairs(list(ALH)) -> list({ALH, ALH}). +combination_pairs(Items) -> + _pipe = do_combination_pairs(Items), + concat(_pipe). + +-spec transpose(list(list(ALO))) -> list(list(ALO)). +transpose(List_of_list) -> + Take_first = fun(List) -> case List of + [] -> + []; + + [F] -> + [F]; + + [F@1 | _] -> + [F@1] + end end, + case List_of_list of + [] -> + []; + + [[] | Xss] -> + transpose(Xss); + + Rows -> + Firsts = begin + _pipe = Rows, + _pipe@1 = map(_pipe, Take_first), + concat(_pipe@1) + end, + Rest = transpose(map(Rows, fun(_capture) -> drop(_capture, 1) end)), + [Firsts | Rest] + end. + +-spec interleave(list(list(ALK))) -> list(ALK). +interleave(List) -> + _pipe = transpose(List), + concat(_pipe). + +-spec do_shuffle_pair_unwrap(list({float(), ALT}), list(ALT)) -> list(ALT). +do_shuffle_pair_unwrap(List, Acc) -> + case List of + [] -> + Acc; + + [Elem_pair | Enumerable] -> + do_shuffle_pair_unwrap( + Enumerable, + [erlang:element(2, Elem_pair) | Acc] + ) + end. + +-spec do_shuffle_by_pair_indexes(list({float(), ALX})) -> list({float(), ALX}). +do_shuffle_by_pair_indexes(List_of_pairs) -> + sort( + List_of_pairs, + fun(A_pair, B_pair) -> + gleam@float:compare( + erlang:element(1, A_pair), + erlang:element(1, B_pair) + ) + end + ). + +-spec shuffle(list(AMA)) -> list(AMA). +shuffle(List) -> + _pipe = List, + _pipe@1 = fold( + _pipe, + [], + fun(Acc, A) -> [{gleam@float:random(+0.0, 1.0), A} | Acc] end + ), + _pipe@2 = do_shuffle_by_pair_indexes(_pipe@1), + do_shuffle_pair_unwrap(_pipe@2, []). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache new file mode 100644 index 0000000..d0685b3 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta new file mode 100644 index 0000000..03b0ec9 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl new file mode 100644 index 0000000..4f90bbd --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl @@ -0,0 +1,76 @@ +-module(gleam@map). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). + +-spec size(gleam@dict:dict(any(), any())) -> integer(). +size(Map) -> + gleam@dict:size(Map). + +-spec to_list(gleam@dict:dict(FDO, FDP)) -> list({FDO, FDP}). +to_list(Map) -> + gleam@dict:to_list(Map). + +-spec from_list(list({FDR, FDS})) -> gleam@dict:dict(FDR, FDS). +from_list(List) -> + gleam@dict:from_list(List). + +-spec has_key(gleam@dict:dict(FDW, any()), FDW) -> boolean(). +has_key(Map, Key) -> + gleam@dict:has_key(Map, Key). + +-spec new() -> gleam@dict:dict(any(), any()). +new() -> + gleam@dict:new(). + +-spec get(gleam@dict:dict(FDZ, FEA), FDZ) -> {ok, FEA} | {error, nil}. +get(From, Get) -> + gleam@dict:get(From, Get). + +-spec insert(gleam@dict:dict(FEE, FEF), FEE, FEF) -> gleam@dict:dict(FEE, FEF). +insert(Map, Key, Value) -> + gleam@dict:insert(Map, Key, Value). + +-spec map_values(gleam@dict:dict(FEI, FEJ), fun((FEI, FEJ) -> FEK)) -> gleam@dict:dict(FEI, FEK). +map_values(Map, Fun) -> + gleam@dict:map_values(Map, Fun). + +-spec keys(gleam@dict:dict(FEN, any())) -> list(FEN). +keys(Map) -> + gleam@dict:keys(Map). + +-spec values(gleam@dict:dict(any(), FEQ)) -> list(FEQ). +values(Map) -> + gleam@dict:values(Map). + +-spec filter(gleam@dict:dict(FET, FEU), fun((FET, FEU) -> boolean())) -> gleam@dict:dict(FET, FEU). +filter(Map, Predicate) -> + gleam@dict:filter(Map, Predicate). + +-spec take(gleam@dict:dict(FEX, FGR), list(FEX)) -> gleam@dict:dict(FEX, FGR). +take(Map, Desired_keys) -> + gleam@dict:take(Map, Desired_keys). + +-spec merge(gleam@dict:dict(FGS, FGT), gleam@dict:dict(FGS, FGT)) -> gleam@dict:dict(FGS, FGT). +merge(Map, New_entries) -> + gleam@dict:merge(Map, New_entries). + +-spec delete(gleam@dict:dict(FFE, FGV), FFE) -> gleam@dict:dict(FFE, FGV). +delete(Map, Key) -> + gleam@dict:delete(Map, Key). + +-spec drop(gleam@dict:dict(FFH, FGX), list(FFH)) -> gleam@dict:dict(FFH, FGX). +drop(Map, Disallowed_keys) -> + gleam@dict:drop(Map, Disallowed_keys). + +-spec update( + gleam@dict:dict(FFL, FFM), + FFL, + fun((gleam@option:option(FFM)) -> FFM) +) -> gleam@dict:dict(FFL, FFM). +update(Map, Key, Fun) -> + gleam@dict:update(Map, Key, Fun). + +-spec fold(gleam@dict:dict(FFR, FFS), FFQ, fun((FFQ, FFR, FFS) -> FFQ)) -> FFQ. +fold(Map, Initial, Fun) -> + gleam@dict:fold(Map, Initial, Fun). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache new file mode 100644 index 0000000..b0763c1 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta new file mode 100644 index 0000000..ff8f8df Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl new file mode 100644 index 0000000..5c20713 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl @@ -0,0 +1,147 @@ +-module(gleam@option). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, lazy_unwrap/2, map/2, flatten/1, then/2, 'or'/2, lazy_or/2, values/1]). +-export_type([option/1]). + +-type option(GB) :: {some, GB} | none. + +-spec do_all(list(option(GC)), list(GC)) -> option(list(GC)). +do_all(List, Acc) -> + case List of + [] -> + {some, Acc}; + + [X | Rest] -> + Accumulate = fun(Acc@1, Item) -> case {Acc@1, Item} of + {{some, Values}, {some, Value}} -> + {some, [Value | Values]}; + + {_, _} -> + none + end end, + Accumulate(do_all(Rest, Acc), X) + end. + +-spec all(list(option(GI))) -> option(list(GI)). +all(List) -> + do_all(List, []). + +-spec is_some(option(any())) -> boolean(). +is_some(Option) -> + Option /= none. + +-spec is_none(option(any())) -> boolean(). +is_none(Option) -> + Option =:= none. + +-spec to_result(option(GR), GU) -> {ok, GR} | {error, GU}. +to_result(Option, E) -> + case Option of + {some, A} -> + {ok, A}; + + _ -> + {error, E} + end. + +-spec from_result({ok, GX} | {error, any()}) -> option(GX). +from_result(Result) -> + case Result of + {ok, A} -> + {some, A}; + + _ -> + none + end. + +-spec unwrap(option(HC), HC) -> HC. +unwrap(Option, Default) -> + case Option of + {some, X} -> + X; + + none -> + Default + end. + +-spec lazy_unwrap(option(HE), fun(() -> HE)) -> HE. +lazy_unwrap(Option, Default) -> + case Option of + {some, X} -> + X; + + none -> + Default() + end. + +-spec map(option(HG), fun((HG) -> HI)) -> option(HI). +map(Option, Fun) -> + case Option of + {some, X} -> + {some, Fun(X)}; + + none -> + none + end. + +-spec flatten(option(option(HK))) -> option(HK). +flatten(Option) -> + case Option of + {some, X} -> + X; + + none -> + none + end. + +-spec then(option(HO), fun((HO) -> option(HQ))) -> option(HQ). +then(Option, Fun) -> + case Option of + {some, X} -> + Fun(X); + + none -> + none + end. + +-spec 'or'(option(HT), option(HT)) -> option(HT). +'or'(First, Second) -> + case First of + {some, _} -> + First; + + none -> + Second + end. + +-spec lazy_or(option(HX), fun(() -> option(HX))) -> option(HX). +lazy_or(First, Second) -> + case First of + {some, _} -> + First; + + none -> + Second() + end. + +-spec do_values(list(option(IB)), list(IB)) -> list(IB). +do_values(List, Acc) -> + case List of + [] -> + Acc; + + [X | Xs] -> + Accumulate = fun(Acc@1, Item) -> case Item of + {some, Value} -> + [Value | Acc@1]; + + none -> + Acc@1 + end end, + Accumulate(do_values(Xs, Acc), X) + end. + +-spec values(list(option(IG))) -> list(IG). +values(Options) -> + do_values(Options, []). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache new file mode 100644 index 0000000..00f75bc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta new file mode 100644 index 0000000..c304185 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl new file mode 100644 index 0000000..61649b9 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl @@ -0,0 +1,79 @@ +-module(gleam@order). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([negate/1, to_int/1, compare/2, max/2, min/2, reverse/1]). +-export_type([order/0]). + +-type order() :: lt | eq | gt. + +-spec negate(order()) -> order(). +negate(Order) -> + case Order of + lt -> + gt; + + eq -> + eq; + + gt -> + lt + end. + +-spec to_int(order()) -> integer(). +to_int(Order) -> + case Order of + lt -> + -1; + + eq -> + 0; + + gt -> + 1 + end. + +-spec compare(order(), order()) -> order(). +compare(A, B) -> + case {A, B} of + {X, Y} when X =:= Y -> + eq; + + {lt, _} -> + lt; + + {eq, gt} -> + lt; + + {_, _} -> + gt + end. + +-spec max(order(), order()) -> order(). +max(A, B) -> + case {A, B} of + {gt, _} -> + gt; + + {eq, lt} -> + eq; + + {_, _} -> + B + end. + +-spec min(order(), order()) -> order(). +min(A, B) -> + case {A, B} of + {lt, _} -> + lt; + + {eq, gt} -> + eq; + + {_, _} -> + B + end. + +-spec reverse(fun((I, I) -> order())) -> fun((I, I) -> order()). +reverse(Orderer) -> + fun(A, B) -> Orderer(B, A) end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache new file mode 100644 index 0000000..5eb2973 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta new file mode 100644 index 0000000..8ee3fd8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl new file mode 100644 index 0000000..f4eff52 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl @@ -0,0 +1,33 @@ +-module(gleam@pair). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([first/1, second/1, swap/1, map_first/2, map_second/2, new/2]). + +-spec first({FM, any()}) -> FM. +first(Pair) -> + {A, _} = Pair, + A. + +-spec second({any(), FP}) -> FP. +second(Pair) -> + {_, A} = Pair, + A. + +-spec swap({FQ, FR}) -> {FR, FQ}. +swap(Pair) -> + {A, B} = Pair, + {B, A}. + +-spec map_first({FS, FT}, fun((FS) -> FU)) -> {FU, FT}. +map_first(Pair, Fun) -> + {A, B} = Pair, + {Fun(A), B}. + +-spec map_second({FV, FW}, fun((FW) -> FX)) -> {FV, FX}. +map_second(Pair, Fun) -> + {A, B} = Pair, + {A, Fun(B)}. + +-spec new(FY, FZ) -> {FY, FZ}. +new(First, Second) -> + {First, Second}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache new file mode 100644 index 0000000..a35d701 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta new file mode 100644 index 0000000..26ea872 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl new file mode 100644 index 0000000..d9ec12a --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl @@ -0,0 +1,121 @@ +-module(gleam@queue). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, from_list/1, to_list/1, is_empty/1, length/1, push_back/2, push_front/2, pop_back/1, pop_front/1, reverse/1, is_logically_equal/3, is_equal/2]). +-export_type([queue/1]). + +-opaque queue(BFE) :: {queue, list(BFE), list(BFE)}. + +-spec new() -> queue(any()). +new() -> + {queue, [], []}. + +-spec from_list(list(BFH)) -> queue(BFH). +from_list(List) -> + {queue, [], List}. + +-spec to_list(queue(BFK)) -> list(BFK). +to_list(Queue) -> + _pipe = erlang:element(3, Queue), + gleam@list:append(_pipe, gleam@list:reverse(erlang:element(2, Queue))). + +-spec is_empty(queue(any())) -> boolean(). +is_empty(Queue) -> + (erlang:element(2, Queue) =:= []) andalso (erlang:element(3, Queue) =:= []). + +-spec length(queue(any())) -> integer(). +length(Queue) -> + gleam@list:length(erlang:element(2, Queue)) + gleam@list:length( + erlang:element(3, Queue) + ). + +-spec push_back(queue(BFR), BFR) -> queue(BFR). +push_back(Queue, Item) -> + {queue, [Item | erlang:element(2, Queue)], erlang:element(3, Queue)}. + +-spec push_front(queue(BFU), BFU) -> queue(BFU). +push_front(Queue, Item) -> + {queue, erlang:element(2, Queue), [Item | erlang:element(3, Queue)]}. + +-spec pop_back(queue(BFX)) -> {ok, {BFX, queue(BFX)}} | {error, nil}. +pop_back(Queue) -> + case Queue of + {queue, [], []} -> + {error, nil}; + + {queue, [], Out} -> + pop_back({queue, gleam@list:reverse(Out), []}); + + {queue, [First | Rest], Out@1} -> + Queue@1 = {queue, Rest, Out@1}, + {ok, {First, Queue@1}} + end. + +-spec pop_front(queue(BGC)) -> {ok, {BGC, queue(BGC)}} | {error, nil}. +pop_front(Queue) -> + case Queue of + {queue, [], []} -> + {error, nil}; + + {queue, In, []} -> + pop_front({queue, [], gleam@list:reverse(In)}); + + {queue, In@1, [First | Rest]} -> + Queue@1 = {queue, In@1, Rest}, + {ok, {First, Queue@1}} + end. + +-spec reverse(queue(BGH)) -> queue(BGH). +reverse(Queue) -> + {queue, erlang:element(3, Queue), erlang:element(2, Queue)}. + +-spec check_equal( + list(BGK), + list(BGK), + list(BGK), + list(BGK), + fun((BGK, BGK) -> boolean()) +) -> boolean(). +check_equal(Xs, X_tail, Ys, Y_tail, Eq) -> + case {Xs, X_tail, Ys, Y_tail} of + {[], [], [], []} -> + true; + + {[X | Xs@1], _, [Y | Ys@1], _} -> + case Eq(X, Y) of + false -> + false; + + true -> + check_equal(Xs@1, X_tail, Ys@1, Y_tail, Eq) + end; + + {[], [_ | _], _, _} -> + check_equal(gleam@list:reverse(X_tail), [], Ys, Y_tail, Eq); + + {_, _, [], [_ | _]} -> + check_equal(Xs, X_tail, gleam@list:reverse(Y_tail), [], Eq); + + {_, _, _, _} -> + false + end. + +-spec is_logically_equal(queue(BGP), queue(BGP), fun((BGP, BGP) -> boolean())) -> boolean(). +is_logically_equal(A, B, Element_is_equal) -> + check_equal( + erlang:element(3, A), + erlang:element(2, A), + erlang:element(3, B), + erlang:element(2, B), + Element_is_equal + ). + +-spec is_equal(queue(BGS), queue(BGS)) -> boolean(). +is_equal(A, B) -> + check_equal( + erlang:element(3, A), + erlang:element(2, A), + erlang:element(3, B), + erlang:element(2, B), + fun(A@1, B@1) -> A@1 =:= B@1 end + ). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache new file mode 100644 index 0000000..de8820b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta new file mode 100644 index 0000000..ab416af Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl new file mode 100644 index 0000000..2d1c5fc --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl @@ -0,0 +1,33 @@ +-module(gleam@regex). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compile/2, from_string/1, check/2, split/2, scan/2]). +-export_type([regex/0, match/0, compile_error/0, options/0]). + +-type regex() :: any(). + +-type match() :: {match, binary(), list(gleam@option:option(binary()))}. + +-type compile_error() :: {compile_error, binary(), integer()}. + +-type options() :: {options, boolean(), boolean()}. + +-spec compile(binary(), options()) -> {ok, regex()} | {error, compile_error()}. +compile(Pattern, Options) -> + gleam_stdlib:compile_regex(Pattern, Options). + +-spec from_string(binary()) -> {ok, regex()} | {error, compile_error()}. +from_string(Pattern) -> + compile(Pattern, {options, false, false}). + +-spec check(regex(), binary()) -> boolean(). +check(Regex, Content) -> + gleam_stdlib:regex_check(Regex, Content). + +-spec split(regex(), binary()) -> list(binary()). +split(Regex, String) -> + gleam_stdlib:regex_split(Regex, String). + +-spec scan(regex(), binary()) -> list(match()). +scan(Regex, String) -> + gleam_stdlib:regex_scan(Regex, String). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache new file mode 100644 index 0000000..d7f9b5d Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta new file mode 100644 index 0000000..732654a Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl new file mode 100644 index 0000000..e7bdaff --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl @@ -0,0 +1,201 @@ +-module(gleam@result). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, 'try'/2, then/2, unwrap/2, lazy_unwrap/2, unwrap_error/2, unwrap_both/1, nil_error/1, 'or'/2, lazy_or/2, all/1, partition/1, replace/2, replace_error/2, values/1, try_recover/2]). + +-spec is_ok({ok, any()} | {error, any()}) -> boolean(). +is_ok(Result) -> + case Result of + {error, _} -> + false; + + {ok, _} -> + true + end. + +-spec is_error({ok, any()} | {error, any()}) -> boolean(). +is_error(Result) -> + case Result of + {ok, _} -> + false; + + {error, _} -> + true + end. + +-spec map({ok, BKA} | {error, BKB}, fun((BKA) -> BKE)) -> {ok, BKE} | + {error, BKB}. +map(Result, Fun) -> + case Result of + {ok, X} -> + {ok, Fun(X)}; + + {error, E} -> + {error, E} + end. + +-spec map_error({ok, BKH} | {error, BKI}, fun((BKI) -> BKL)) -> {ok, BKH} | + {error, BKL}. +map_error(Result, Fun) -> + case Result of + {ok, X} -> + {ok, X}; + + {error, Error} -> + {error, Fun(Error)} + end. + +-spec flatten({ok, {ok, BKO} | {error, BKP}} | {error, BKP}) -> {ok, BKO} | + {error, BKP}. +flatten(Result) -> + case Result of + {ok, X} -> + X; + + {error, Error} -> + {error, Error} + end. + +-spec 'try'({ok, BKW} | {error, BKX}, fun((BKW) -> {ok, BLA} | {error, BKX})) -> {ok, + BLA} | + {error, BKX}. +'try'(Result, Fun) -> + case Result of + {ok, X} -> + Fun(X); + + {error, E} -> + {error, E} + end. + +-spec then({ok, BLF} | {error, BLG}, fun((BLF) -> {ok, BLJ} | {error, BLG})) -> {ok, + BLJ} | + {error, BLG}. +then(Result, Fun) -> + 'try'(Result, Fun). + +-spec unwrap({ok, BLO} | {error, any()}, BLO) -> BLO. +unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default + end. + +-spec lazy_unwrap({ok, BLS} | {error, any()}, fun(() -> BLS)) -> BLS. +lazy_unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default() + end. + +-spec unwrap_error({ok, any()} | {error, BLX}, BLX) -> BLX. +unwrap_error(Result, Default) -> + case Result of + {ok, _} -> + Default; + + {error, E} -> + E + end. + +-spec unwrap_both({ok, BMA} | {error, BMA}) -> BMA. +unwrap_both(Result) -> + case Result of + {ok, A} -> + A; + + {error, A@1} -> + A@1 + end. + +-spec nil_error({ok, BMD} | {error, any()}) -> {ok, BMD} | {error, nil}. +nil_error(Result) -> + map_error(Result, fun(_) -> nil end). + +-spec 'or'({ok, BMJ} | {error, BMK}, {ok, BMJ} | {error, BMK}) -> {ok, BMJ} | + {error, BMK}. +'or'(First, Second) -> + case First of + {ok, _} -> + First; + + {error, _} -> + Second + end. + +-spec lazy_or({ok, BMR} | {error, BMS}, fun(() -> {ok, BMR} | {error, BMS})) -> {ok, + BMR} | + {error, BMS}. +lazy_or(First, Second) -> + case First of + {ok, _} -> + First; + + {error, _} -> + Second() + end. + +-spec all(list({ok, BMZ} | {error, BNA})) -> {ok, list(BMZ)} | {error, BNA}. +all(Results) -> + gleam@list:try_map(Results, fun(X) -> X end). + +-spec do_partition(list({ok, BNO} | {error, BNP}), list(BNO), list(BNP)) -> {list(BNO), + list(BNP)}. +do_partition(Results, Oks, Errors) -> + case Results of + [] -> + {Oks, Errors}; + + [{ok, A} | Rest] -> + do_partition(Rest, [A | Oks], Errors); + + [{error, E} | Rest@1] -> + do_partition(Rest@1, Oks, [E | Errors]) + end. + +-spec partition(list({ok, BNH} | {error, BNI})) -> {list(BNH), list(BNI)}. +partition(Results) -> + do_partition(Results, [], []). + +-spec replace({ok, any()} | {error, BNX}, BOA) -> {ok, BOA} | {error, BNX}. +replace(Result, Value) -> + case Result of + {ok, _} -> + {ok, Value}; + + {error, Error} -> + {error, Error} + end. + +-spec replace_error({ok, BOD} | {error, any()}, BOH) -> {ok, BOD} | {error, BOH}. +replace_error(Result, Error) -> + case Result of + {ok, X} -> + {ok, X}; + + {error, _} -> + {error, Error} + end. + +-spec values(list({ok, BOK} | {error, any()})) -> list(BOK). +values(Results) -> + gleam@list:filter_map(Results, fun(R) -> R end). + +-spec try_recover( + {ok, BOQ} | {error, BOR}, + fun((BOR) -> {ok, BOQ} | {error, BOU}) +) -> {ok, BOQ} | {error, BOU}. +try_recover(Result, Fun) -> + case Result of + {ok, Value} -> + {ok, Value}; + + {error, Error} -> + Fun(Error) + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache new file mode 100644 index 0000000..43fd2a5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta new file mode 100644 index 0000000..ee9607b Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl new file mode 100644 index 0000000..2a23b83 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl @@ -0,0 +1,85 @@ +-module(gleam@set). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, size/1, insert/2, contains/2, delete/2, to_list/1, from_list/1, fold/3, filter/2, drop/2, take/2, union/2, intersection/2]). +-export_type([set/1]). + +-opaque set(EYO) :: {set, gleam@dict:dict(EYO, list(nil))}. + +-spec new() -> set(any()). +new() -> + {set, gleam@dict:new()}. + +-spec size(set(any())) -> integer(). +size(Set) -> + gleam@dict:size(erlang:element(2, Set)). + +-spec insert(set(EYU), EYU) -> set(EYU). +insert(Set, Member) -> + {set, gleam@dict:insert(erlang:element(2, Set), Member, [])}. + +-spec contains(set(EYX), EYX) -> boolean(). +contains(Set, Member) -> + _pipe = erlang:element(2, Set), + _pipe@1 = gleam@dict:get(_pipe, Member), + gleam@result:is_ok(_pipe@1). + +-spec delete(set(EYZ), EYZ) -> set(EYZ). +delete(Set, Member) -> + {set, gleam@dict:delete(erlang:element(2, Set), Member)}. + +-spec to_list(set(EZC)) -> list(EZC). +to_list(Set) -> + gleam@dict:keys(erlang:element(2, Set)). + +-spec from_list(list(EZF)) -> set(EZF). +from_list(Members) -> + Map = gleam@list:fold( + Members, + gleam@dict:new(), + fun(M, K) -> gleam@dict:insert(M, K, []) end + ), + {set, Map}. + +-spec fold(set(EZI), EZK, fun((EZK, EZI) -> EZK)) -> EZK. +fold(Set, Initial, Reducer) -> + gleam@dict:fold( + erlang:element(2, Set), + Initial, + fun(A, K, _) -> Reducer(A, K) end + ). + +-spec filter(set(EZL), fun((EZL) -> boolean())) -> set(EZL). +filter(Set, Predicate) -> + {set, + gleam@dict:filter(erlang:element(2, Set), fun(M, _) -> Predicate(M) end)}. + +-spec drop(set(EZO), list(EZO)) -> set(EZO). +drop(Set, Disallowed) -> + gleam@list:fold(Disallowed, Set, fun delete/2). + +-spec take(set(EZS), list(EZS)) -> set(EZS). +take(Set, Desired) -> + {set, gleam@dict:take(erlang:element(2, Set), Desired)}. + +-spec order(set(EZW), set(EZW)) -> {set(EZW), set(EZW)}. +order(First, Second) -> + case gleam@dict:size(erlang:element(2, First)) > gleam@dict:size( + erlang:element(2, Second) + ) of + true -> + {First, Second}; + + false -> + {Second, First} + end. + +-spec union(set(FAB), set(FAB)) -> set(FAB). +union(First, Second) -> + {Larger, Smaller} = order(First, Second), + fold(Smaller, Larger, fun insert/2). + +-spec intersection(set(FAF), set(FAF)) -> set(FAF). +intersection(First, Second) -> + {Larger, Smaller} = order(First, Second), + take(Larger, to_list(Smaller)). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache new file mode 100644 index 0000000..d024425 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta new file mode 100644 index 0000000..300d752 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl new file mode 100644 index 0000000..6cba31d --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl @@ -0,0 +1,352 @@ +-module(gleam@string). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_empty/1, length/1, reverse/1, replace/3, lowercase/1, uppercase/1, compare/2, slice/3, crop/2, drop_left/2, drop_right/2, contains/2, starts_with/2, ends_with/2, split_once/2, append/2, concat/1, repeat/2, join/2, pad_left/3, pad_right/3, trim/1, trim_left/1, trim_right/1, pop_grapheme/1, to_graphemes/1, split/2, to_utf_codepoints/1, from_utf_codepoints/1, utf_codepoint/1, utf_codepoint_to_int/1, to_option/1, first/1, last/1, capitalise/1, inspect/1, byte_size/1]). +-export_type([direction/0]). + +-type direction() :: leading | trailing | both. + +-spec is_empty(binary()) -> boolean(). +is_empty(Str) -> + Str =:= <<""/utf8>>. + +-spec length(binary()) -> integer(). +length(String) -> + string:length(String). + +-spec do_reverse(binary()) -> binary(). +do_reverse(String) -> + _pipe = String, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:reverse(_pipe@1), + gleam@string_builder:to_string(_pipe@2). + +-spec reverse(binary()) -> binary(). +reverse(String) -> + do_reverse(String). + +-spec replace(binary(), binary(), binary()) -> binary(). +replace(String, Pattern, Substitute) -> + _pipe = String, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:replace(_pipe@1, Pattern, Substitute), + gleam@string_builder:to_string(_pipe@2). + +-spec lowercase(binary()) -> binary(). +lowercase(String) -> + string:lowercase(String). + +-spec uppercase(binary()) -> binary(). +uppercase(String) -> + string:uppercase(String). + +-spec compare(binary(), binary()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + _ -> + case gleam_stdlib:less_than(A, B) of + true -> + lt; + + _ -> + gt + end + end. + +-spec slice(binary(), integer(), integer()) -> binary(). +slice(String, Idx, Len) -> + case Len < 0 of + true -> + <<""/utf8>>; + + false -> + case Idx < 0 of + true -> + Translated_idx = length(String) + Idx, + case Translated_idx < 0 of + true -> + <<""/utf8>>; + + false -> + string:slice(String, Translated_idx, Len) + end; + + false -> + string:slice(String, Idx, Len) + end + end. + +-spec crop(binary(), binary()) -> binary(). +crop(String, Substring) -> + gleam_stdlib:crop_string(String, Substring). + +-spec drop_left(binary(), integer()) -> binary(). +drop_left(String, Num_graphemes) -> + case Num_graphemes < 0 of + true -> + String; + + false -> + slice(String, Num_graphemes, length(String) - Num_graphemes) + end. + +-spec drop_right(binary(), integer()) -> binary(). +drop_right(String, Num_graphemes) -> + case Num_graphemes < 0 of + true -> + String; + + false -> + slice(String, 0, length(String) - Num_graphemes) + end. + +-spec contains(binary(), binary()) -> boolean(). +contains(Haystack, Needle) -> + gleam_stdlib:contains_string(Haystack, Needle). + +-spec starts_with(binary(), binary()) -> boolean(). +starts_with(String, Prefix) -> + gleam_stdlib:string_starts_with(String, Prefix). + +-spec ends_with(binary(), binary()) -> boolean(). +ends_with(String, Suffix) -> + gleam_stdlib:string_ends_with(String, Suffix). + +-spec do_split_once(binary(), binary()) -> {ok, {binary(), binary()}} | + {error, nil}. +do_split_once(X, Substring) -> + case string:split(X, Substring) of + [First, Rest] -> + {ok, {First, Rest}}; + + _ -> + {error, nil} + end. + +-spec split_once(binary(), binary()) -> {ok, {binary(), binary()}} | + {error, nil}. +split_once(X, Substring) -> + do_split_once(X, Substring). + +-spec append(binary(), binary()) -> binary(). +append(First, Second) -> + _pipe = First, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:append(_pipe@1, Second), + gleam@string_builder:to_string(_pipe@2). + +-spec concat(list(binary())) -> binary(). +concat(Strings) -> + _pipe = Strings, + _pipe@1 = gleam@string_builder:from_strings(_pipe), + gleam@string_builder:to_string(_pipe@1). + +-spec repeat(binary(), integer()) -> binary(). +repeat(String, Times) -> + _pipe = gleam@iterator:repeat(String), + _pipe@1 = gleam@iterator:take(_pipe, Times), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec do_join(list(binary()), binary()) -> binary(). +do_join(Strings, Separator) -> + _pipe = Strings, + _pipe@1 = gleam@list:intersperse(_pipe, Separator), + concat(_pipe@1). + +-spec join(list(binary()), binary()) -> binary(). +join(Strings, Separator) -> + do_join(Strings, Separator). + +-spec padding(integer(), binary()) -> gleam@iterator:iterator(binary()). +padding(Size, Pad_string) -> + Pad_length = length(Pad_string), + Num_pads = case Pad_length of + 0 -> 0; + Gleam@denominator -> Size div Gleam@denominator + end, + Extra = case Pad_length of + 0 -> 0; + Gleam@denominator@1 -> Size rem Gleam@denominator@1 + end, + _pipe = gleam@iterator:repeat(Pad_string), + _pipe@1 = gleam@iterator:take(_pipe, Num_pads), + gleam@iterator:append( + _pipe@1, + gleam@iterator:single(slice(Pad_string, 0, Extra)) + ). + +-spec pad_left(binary(), integer(), binary()) -> binary(). +pad_left(String, Desired_length, Pad_string) -> + Current_length = length(String), + To_pad_length = Desired_length - Current_length, + _pipe = padding(To_pad_length, Pad_string), + _pipe@1 = gleam@iterator:append(_pipe, gleam@iterator:single(String)), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec pad_right(binary(), integer(), binary()) -> binary(). +pad_right(String, Desired_length, Pad_string) -> + Current_length = length(String), + To_pad_length = Desired_length - Current_length, + _pipe = gleam@iterator:single(String), + _pipe@1 = gleam@iterator:append(_pipe, padding(To_pad_length, Pad_string)), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec do_trim(binary()) -> binary(). +do_trim(String) -> + string:trim(String, both). + +-spec trim(binary()) -> binary(). +trim(String) -> + do_trim(String). + +-spec do_trim_left(binary()) -> binary(). +do_trim_left(String) -> + string:trim(String, leading). + +-spec trim_left(binary()) -> binary(). +trim_left(String) -> + do_trim_left(String). + +-spec do_trim_right(binary()) -> binary(). +do_trim_right(String) -> + string:trim(String, trailing). + +-spec trim_right(binary()) -> binary(). +trim_right(String) -> + do_trim_right(String). + +-spec pop_grapheme(binary()) -> {ok, {binary(), binary()}} | {error, nil}. +pop_grapheme(String) -> + gleam_stdlib:string_pop_grapheme(String). + +-spec do_to_graphemes(binary(), list(binary())) -> list(binary()). +do_to_graphemes(String, Acc) -> + case pop_grapheme(String) of + {ok, {Grapheme, Rest}} -> + do_to_graphemes(Rest, [Grapheme | Acc]); + + _ -> + Acc + end. + +-spec to_graphemes(binary()) -> list(binary()). +to_graphemes(String) -> + _pipe = do_to_graphemes(String, []), + gleam@list:reverse(_pipe). + +-spec split(binary(), binary()) -> list(binary()). +split(X, Substring) -> + case Substring of + <<""/utf8>> -> + to_graphemes(X); + + _ -> + _pipe = X, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:split(_pipe@1, Substring), + gleam@list:map(_pipe@2, fun gleam@string_builder:to_string/1) + end. + +-spec do_to_utf_codepoints_impl(bitstring(), list(integer())) -> list(integer()). +do_to_utf_codepoints_impl(Bit_array, Acc) -> + case Bit_array of + <> -> + do_to_utf_codepoints_impl(Rest, [First | Acc]); + + _ -> + Acc + end. + +-spec do_to_utf_codepoints(binary()) -> list(integer()). +do_to_utf_codepoints(String) -> + _pipe = do_to_utf_codepoints_impl(<>, []), + gleam@list:reverse(_pipe). + +-spec to_utf_codepoints(binary()) -> list(integer()). +to_utf_codepoints(String) -> + do_to_utf_codepoints(String). + +-spec from_utf_codepoints(list(integer())) -> binary(). +from_utf_codepoints(Utf_codepoints) -> + gleam_stdlib:utf_codepoint_list_to_string(Utf_codepoints). + +-spec utf_codepoint(integer()) -> {ok, integer()} | {error, nil}. +utf_codepoint(Value) -> + case Value of + I when I > 1114111 -> + {error, nil}; + + 65534 -> + {error, nil}; + + 65535 -> + {error, nil}; + + I@1 when (I@1 >= 55296) andalso (I@1 =< 57343) -> + {error, nil}; + + I@2 -> + {ok, gleam_stdlib:identity(I@2)} + end. + +-spec utf_codepoint_to_int(integer()) -> integer(). +utf_codepoint_to_int(Cp) -> + gleam_stdlib:identity(Cp). + +-spec to_option(binary()) -> gleam@option:option(binary()). +to_option(S) -> + case S of + <<""/utf8>> -> + none; + + _ -> + {some, S} + end. + +-spec first(binary()) -> {ok, binary()} | {error, nil}. +first(S) -> + case pop_grapheme(S) of + {ok, {First, _}} -> + {ok, First}; + + {error, E} -> + {error, E} + end. + +-spec last(binary()) -> {ok, binary()} | {error, nil}. +last(S) -> + case pop_grapheme(S) of + {ok, {First, <<""/utf8>>}} -> + {ok, First}; + + {ok, {_, Rest}} -> + {ok, slice(Rest, -1, 1)}; + + {error, E} -> + {error, E} + end. + +-spec capitalise(binary()) -> binary(). +capitalise(S) -> + case pop_grapheme(S) of + {ok, {First, Rest}} -> + append(uppercase(First), lowercase(Rest)); + + _ -> + <<""/utf8>> + end. + +-spec inspect(any()) -> binary(). +inspect(Term) -> + _pipe = gleam_stdlib:inspect(Term), + gleam@string_builder:to_string(_pipe). + +-spec byte_size(binary()) -> integer(). +byte_size(String) -> + erlang:byte_size(String). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache new file mode 100644 index 0000000..0d2c392 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta new file mode 100644 index 0000000..2ef42cf Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl new file mode 100644 index 0000000..693e840 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl @@ -0,0 +1,91 @@ +-module(gleam@string_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([prepend_builder/2, append_builder/2, new/0, from_strings/1, concat/1, from_string/1, prepend/2, append/2, to_string/1, byte_size/1, join/2, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). +-export_type([string_builder/0, direction/0]). + +-type string_builder() :: any(). + +-type direction() :: all. + +-spec prepend_builder(string_builder(), string_builder()) -> string_builder(). +prepend_builder(Builder, Prefix) -> + gleam_stdlib:iodata_append(Prefix, Builder). + +-spec append_builder(string_builder(), string_builder()) -> string_builder(). +append_builder(Builder, Suffix) -> + gleam_stdlib:iodata_append(Builder, Suffix). + +-spec new() -> string_builder(). +new() -> + gleam_stdlib:identity([]). + +-spec from_strings(list(binary())) -> string_builder(). +from_strings(Strings) -> + gleam_stdlib:identity(Strings). + +-spec concat(list(string_builder())) -> string_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec from_string(binary()) -> string_builder(). +from_string(String) -> + gleam_stdlib:identity(String). + +-spec prepend(string_builder(), binary()) -> string_builder(). +prepend(Builder, Prefix) -> + append_builder(from_string(Prefix), Builder). + +-spec append(string_builder(), binary()) -> string_builder(). +append(Builder, Second) -> + append_builder(Builder, from_string(Second)). + +-spec to_string(string_builder()) -> binary(). +to_string(Builder) -> + unicode:characters_to_binary(Builder). + +-spec byte_size(string_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). + +-spec join(list(string_builder()), binary()) -> string_builder(). +join(Builders, Sep) -> + _pipe = Builders, + _pipe@1 = gleam@list:intersperse(_pipe, from_string(Sep)), + concat(_pipe@1). + +-spec lowercase(string_builder()) -> string_builder(). +lowercase(Builder) -> + string:lowercase(Builder). + +-spec uppercase(string_builder()) -> string_builder(). +uppercase(Builder) -> + string:uppercase(Builder). + +-spec reverse(string_builder()) -> string_builder(). +reverse(Builder) -> + string:reverse(Builder). + +-spec do_split(string_builder(), binary()) -> list(string_builder()). +do_split(Iodata, Pattern) -> + string:split(Iodata, Pattern, all). + +-spec split(string_builder(), binary()) -> list(string_builder()). +split(Iodata, Pattern) -> + do_split(Iodata, Pattern). + +-spec do_replace(string_builder(), binary(), binary()) -> string_builder(). +do_replace(Iodata, Pattern, Substitute) -> + string:replace(Iodata, Pattern, Substitute, all). + +-spec replace(string_builder(), binary(), binary()) -> string_builder(). +replace(Builder, Pattern, Substitute) -> + do_replace(Builder, Pattern, Substitute). + +-spec is_equal(string_builder(), string_builder()) -> boolean(). +is_equal(A, B) -> + string:equal(A, B). + +-spec is_empty(string_builder()) -> boolean(). +is_empty(Builder) -> + string:is_empty(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache new file mode 100644 index 0000000..808bd6c Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta new file mode 100644 index 0000000..a8195fc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl new file mode 100644 index 0000000..e7c2696 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl @@ -0,0 +1,252 @@ +-module(gleam@uri). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse/1, parse_query/1, percent_encode/1, query_to_string/1, percent_decode/1, path_segments/1, to_string/1, origin/1, merge/2]). +-export_type([uri/0]). + +-type uri() :: {uri, + gleam@option:option(binary()), + gleam@option:option(binary()), + gleam@option:option(binary()), + gleam@option:option(integer()), + binary(), + gleam@option:option(binary()), + gleam@option:option(binary())}. + +-spec parse(binary()) -> {ok, uri()} | {error, nil}. +parse(Uri_string) -> + gleam_stdlib:uri_parse(Uri_string). + +-spec parse_query(binary()) -> {ok, list({binary(), binary()})} | {error, nil}. +parse_query(Query) -> + gleam_stdlib:parse_query(Query). + +-spec percent_encode(binary()) -> binary(). +percent_encode(Value) -> + gleam_stdlib:percent_encode(Value). + +-spec query_pair({binary(), binary()}) -> gleam@string_builder:string_builder(). +query_pair(Pair) -> + gleam@string_builder:from_strings( + [percent_encode(erlang:element(1, Pair)), + <<"="/utf8>>, + percent_encode(erlang:element(2, Pair))] + ). + +-spec query_to_string(list({binary(), binary()})) -> binary(). +query_to_string(Query) -> + _pipe = Query, + _pipe@1 = gleam@list:map(_pipe, fun query_pair/1), + _pipe@2 = gleam@list:intersperse( + _pipe@1, + gleam@string_builder:from_string(<<"&"/utf8>>) + ), + _pipe@3 = gleam@string_builder:concat(_pipe@2), + gleam@string_builder:to_string(_pipe@3). + +-spec percent_decode(binary()) -> {ok, binary()} | {error, nil}. +percent_decode(Value) -> + gleam_stdlib:percent_decode(Value). + +-spec do_remove_dot_segments(list(binary()), list(binary())) -> list(binary()). +do_remove_dot_segments(Input, Accumulator) -> + case Input of + [] -> + gleam@list:reverse(Accumulator); + + [Segment | Rest] -> + Accumulator@5 = case {Segment, Accumulator} of + {<<""/utf8>>, Accumulator@1} -> + Accumulator@1; + + {<<"."/utf8>>, Accumulator@2} -> + Accumulator@2; + + {<<".."/utf8>>, []} -> + []; + + {<<".."/utf8>>, [_ | Accumulator@3]} -> + Accumulator@3; + + {Segment@1, Accumulator@4} -> + [Segment@1 | Accumulator@4] + end, + do_remove_dot_segments(Rest, Accumulator@5) + end. + +-spec remove_dot_segments(list(binary())) -> list(binary()). +remove_dot_segments(Input) -> + do_remove_dot_segments(Input, []). + +-spec path_segments(binary()) -> list(binary()). +path_segments(Path) -> + remove_dot_segments(gleam@string:split(Path, <<"/"/utf8>>)). + +-spec to_string(uri()) -> binary(). +to_string(Uri) -> + Parts = case erlang:element(8, Uri) of + {some, Fragment} -> + [<<"#"/utf8>>, Fragment]; + + _ -> + [] + end, + Parts@1 = case erlang:element(7, Uri) of + {some, Query} -> + [<<"?"/utf8>>, Query | Parts]; + + _ -> + Parts + end, + Parts@2 = [erlang:element(6, Uri) | Parts@1], + Parts@3 = case {erlang:element(4, Uri), + gleam@string:starts_with(erlang:element(6, Uri), <<"/"/utf8>>)} of + {{some, Host}, false} when Host =/= <<""/utf8>> -> + [<<"/"/utf8>> | Parts@2]; + + {_, _} -> + Parts@2 + end, + Parts@4 = case {erlang:element(4, Uri), erlang:element(5, Uri)} of + {{some, _}, {some, Port}} -> + [<<":"/utf8>>, gleam@int:to_string(Port) | Parts@3]; + + {_, _} -> + Parts@3 + end, + Parts@5 = case {erlang:element(2, Uri), + erlang:element(3, Uri), + erlang:element(4, Uri)} of + {{some, S}, {some, U}, {some, H}} -> + [S, <<"://"/utf8>>, U, <<"@"/utf8>>, H | Parts@4]; + + {{some, S@1}, none, {some, H@1}} -> + [S@1, <<"://"/utf8>>, H@1 | Parts@4]; + + {{some, S@2}, {some, _}, none} -> + [S@2, <<":"/utf8>> | Parts@4]; + + {{some, S@2}, none, none} -> + [S@2, <<":"/utf8>> | Parts@4]; + + {none, none, {some, H@2}} -> + [<<"//"/utf8>>, H@2 | Parts@4]; + + {_, _, _} -> + Parts@4 + end, + gleam@string:concat(Parts@5). + +-spec origin(uri()) -> {ok, binary()} | {error, nil}. +origin(Uri) -> + {uri, Scheme, _, Host, Port, _, _, _} = Uri, + case Scheme of + {some, <<"https"/utf8>>} when Port =:= {some, 443} -> + Origin = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, + {ok, to_string(Origin)}; + + {some, <<"http"/utf8>>} when Port =:= {some, 80} -> + Origin@1 = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, + {ok, to_string(Origin@1)}; + + {some, S} when (S =:= <<"http"/utf8>>) orelse (S =:= <<"https"/utf8>>) -> + Origin@2 = {uri, Scheme, none, Host, Port, <<""/utf8>>, none, none}, + {ok, to_string(Origin@2)}; + + _ -> + {error, nil} + end. + +-spec drop_last(list(ERB)) -> list(ERB). +drop_last(Elements) -> + gleam@list:take(Elements, gleam@list:length(Elements) - 1). + +-spec join_segments(list(binary())) -> binary(). +join_segments(Segments) -> + gleam@string:join([<<""/utf8>> | Segments], <<"/"/utf8>>). + +-spec merge(uri(), uri()) -> {ok, uri()} | {error, nil}. +merge(Base, Relative) -> + case Base of + {uri, {some, _}, _, {some, _}, _, _, _, _} -> + case Relative of + {uri, _, _, {some, _}, _, _, _, _} -> + Path = begin + _pipe = gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ), + _pipe@1 = remove_dot_segments(_pipe), + join_segments(_pipe@1) + end, + Resolved = {uri, + gleam@option:'or'( + erlang:element(2, Relative), + erlang:element(2, Base) + ), + none, + erlang:element(4, Relative), + gleam@option:'or'( + erlang:element(5, Relative), + erlang:element(5, Base) + ), + Path, + erlang:element(7, Relative), + erlang:element(8, Relative)}, + {ok, Resolved}; + + _ -> + {New_path, New_query} = case erlang:element(6, Relative) of + <<""/utf8>> -> + {erlang:element(6, Base), + gleam@option:'or'( + erlang:element(7, Relative), + erlang:element(7, Base) + )}; + + _ -> + Path_segments = case gleam@string:starts_with( + erlang:element(6, Relative), + <<"/"/utf8>> + ) of + true -> + gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ); + + false -> + _pipe@2 = gleam@string:split( + erlang:element(6, Base), + <<"/"/utf8>> + ), + _pipe@3 = drop_last(_pipe@2), + gleam@list:append( + _pipe@3, + gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ) + ) + end, + Path@1 = begin + _pipe@4 = Path_segments, + _pipe@5 = remove_dot_segments(_pipe@4), + join_segments(_pipe@5) + end, + {Path@1, erlang:element(7, Relative)} + end, + Resolved@1 = {uri, + erlang:element(2, Base), + none, + erlang:element(4, Base), + erlang:element(5, Base), + New_path, + New_query, + erlang:element(8, Relative)}, + {ok, Resolved@1} + end; + + _ -> + {error, nil} + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl new file mode 100644 index 0000000..c6ea125 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl @@ -0,0 +1,529 @@ +-module(gleam_stdlib). + +-export([ + map_get/2, iodata_append/2, identity/1, decode_int/1, decode_bool/1, + decode_float/1, decode_list/1, decode_option/2, decode_field/2, parse_int/1, + parse_float/1, less_than/2, string_pop_grapheme/1, string_starts_with/2, + wrap_list/1, string_ends_with/2, string_pad/4, decode_map/1, uri_parse/1, + bit_array_int_to_u32/1, bit_array_int_from_u32/1, decode_result/1, + bit_array_slice/3, decode_bit_array/1, compile_regex/2, regex_scan/2, + percent_encode/1, percent_decode/1, regex_check/2, regex_split/2, + base_decode64/1, parse_query/1, bit_array_concat/1, size_of_tuple/1, + decode_tuple/1, decode_tuple2/1, decode_tuple3/1, decode_tuple4/1, + decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1, + println/1, print_error/1, println_error/1, inspect/1, float_to_string/1, + int_from_base_string/2, utf_codepoint_list_to_string/1, contains_string/2, + crop_string/2, base16_decode/1 +]). + +%% Taken from OTP's uri_string module +-define(DEC2HEX(X), + if ((X) >= 0) andalso ((X) =< 9) -> (X) + $0; + ((X) >= 10) andalso ((X) =< 15) -> (X) + $A - 10 + end). + +%% Taken from OTP's uri_string module +-define(HEX2DEC(X), + if ((X) >= $0) andalso ((X) =< $9) -> (X) - $0; + ((X) >= $A) andalso ((X) =< $F) -> (X) - $A + 10; + ((X) >= $a) andalso ((X) =< $f) -> (X) - $a + 10 + end). + +-define(is_lowercase_char(X), (X > 96 andalso X < 123)). +-define(is_underscore_char(X), (X == 95)). +-define(is_digit_char(X), (X > 47 andalso X < 58)). + +uppercase(X) -> X - 32. + +map_get(Map, Key) -> + case maps:find(Key, Map) of + error -> {error, nil}; + OkFound -> OkFound + end. + +iodata_append(Iodata, String) -> [Iodata, String]. + +identity(X) -> X. + +decode_error_msg(Expected, Data) when is_binary(Expected) -> + decode_error(Expected, classify_dynamic(Data)). +decode_error(Expected, Got) when is_binary(Expected) andalso is_binary(Got) -> + {error, [{decode_error, Expected, Got, []}]}. + +classify_dynamic(nil) -> <<"Nil">>; +classify_dynamic(X) when is_atom(X) -> <<"Atom">>; +classify_dynamic(X) when is_binary(X) -> <<"String">>; +classify_dynamic(X) when is_bitstring(X) -> <<"BitArray">>; +classify_dynamic(X) when is_integer(X) -> <<"Int">>; +classify_dynamic(X) when is_float(X) -> <<"Float">>; +classify_dynamic(X) when is_list(X) -> <<"List">>; +classify_dynamic(X) when is_boolean(X) -> <<"Bool">>; +classify_dynamic(X) when is_map(X) -> <<"Map">>; +classify_dynamic(X) when is_tuple(X) -> + iolist_to_binary(["Tuple of ", integer_to_list(tuple_size(X)), " elements"]); +classify_dynamic(X) when + is_function(X, 0) orelse is_function(X, 1) orelse is_function(X, 2) orelse + is_function(X, 3) orelse is_function(X, 4) orelse is_function(X, 5) orelse + is_function(X, 6) orelse is_function(X, 7) orelse is_function(X, 8) orelse + is_function(X, 9) orelse is_function(X, 10) orelse is_function(X, 11) orelse + is_function(X, 12) -> <<"Function">>; +classify_dynamic(_) -> <<"Some other type">>. + +decode_map(Data) when is_map(Data) -> {ok, Data}; +decode_map(Data) -> decode_error_msg(<<"Map">>, Data). + +decode_bit_array(Data) when is_bitstring(Data) -> {ok, Data}; +decode_bit_array(Data) -> decode_error_msg(<<"BitArray">>, Data). + +decode_int(Data) when is_integer(Data) -> {ok, Data}; +decode_int(Data) -> decode_error_msg(<<"Int">>, Data). + +decode_float(Data) when is_float(Data) -> {ok, Data}; +decode_float(Data) -> decode_error_msg(<<"Float">>, Data). + +decode_bool(Data) when is_boolean(Data) -> {ok, Data}; +decode_bool(Data) -> decode_error_msg(<<"Bool">>, Data). + +decode_list(Data) when is_list(Data) -> {ok, Data}; +decode_list(Data) -> decode_error_msg(<<"List">>, Data). + +decode_field(Data, Key) when is_map(Data) -> + case Data of + #{Key := Value} -> {ok, {some, Value}}; + _ -> + {ok, none} + end; +decode_field(Data, _) -> + decode_error_msg(<<"Map">>, Data). + +size_of_tuple(Data) -> tuple_size(Data). + +tuple_get(_tup, Index) when Index < 0 -> {error, nil}; +tuple_get(Data, Index) when Index >= tuple_size(Data) -> {error, nil}; +tuple_get(Data, Index) -> {ok, element(Index + 1, Data)}. + +decode_tuple(Data) when is_tuple(Data) -> {ok, Data}; +decode_tuple(Data) -> decode_error_msg(<<"Tuple">>, Data). + +decode_tuple2({_,_} = A) -> {ok, A}; +decode_tuple2([A,B]) -> {ok, {A,B}}; +decode_tuple2(Data) -> decode_error_msg(<<"Tuple of 2 elements">>, Data). + +decode_tuple3({_,_,_} = A) -> {ok, A}; +decode_tuple3([A,B,C]) -> {ok, {A,B,C}}; +decode_tuple3(Data) -> decode_error_msg(<<"Tuple of 3 elements">>, Data). + +decode_tuple4({_,_,_,_} = A) -> {ok, A}; +decode_tuple4([A,B,C,D]) -> {ok, {A,B,C,D}}; +decode_tuple4(Data) -> decode_error_msg(<<"Tuple of 4 elements">>, Data). + +decode_tuple5({_,_,_,_,_} = A) -> {ok, A}; +decode_tuple5([A,B,C,D,E]) -> {ok, {A,B,C,D,E}}; +decode_tuple5(Data) -> decode_error_msg(<<"Tuple of 5 elements">>, Data). + +decode_tuple6({_,_,_,_,_,_} = A) -> {ok, A}; +decode_tuple6([A,B,C,D,E,F]) -> {ok, {A,B,C,D,E,F}}; +decode_tuple6(Data) -> decode_error_msg(<<"Tuple of 6 elements">>, Data). + +decode_option(Term, F) -> + Decode = fun(Inner) -> + case F(Inner) of + {ok, Decoded} -> {ok, {some, Decoded}}; + Error -> Error + end + end, + case Term of + undefined -> {ok, none}; + error -> {ok, none}; + null -> {ok, none}; + none -> {ok, none}; + nil -> {ok, none}; + {some, Inner} -> Decode(Inner); + _ -> Decode(Term) + end. + +decode_result(Term) -> + case Term of + {ok, Inner} -> {ok, {ok, Inner}}; + ok -> {ok, {ok, nil}}; + {error, Inner} -> {ok, {error, Inner}}; + error -> {ok, {error, nil}}; + _ -> decode_error_msg(<<"Result">>, Term) + end. + +int_from_base_string(String, Base) -> + case catch binary_to_integer(String, Base) of + Int when is_integer(Int) -> {ok, Int}; + _ -> {error, nil} + end. + +parse_int(String) -> + case catch binary_to_integer(String) of + Int when is_integer(Int) -> {ok, Int}; + _ -> {error, nil} + end. + +parse_float(String) -> + case catch binary_to_float(String) of + Float when is_float(Float) -> {ok, Float}; + _ -> {error, nil} + end. + +less_than(Lhs, Rhs) -> + Lhs < Rhs. + +string_starts_with(_, <<>>) -> true; +string_starts_with(String, Prefix) when byte_size(Prefix) > byte_size(String) -> false; +string_starts_with(String, Prefix) -> + PrefixSize = byte_size(Prefix), + Prefix == binary_part(String, 0, PrefixSize). + +string_ends_with(_, <<>>) -> true; +string_ends_with(String, Suffix) when byte_size(Suffix) > byte_size(String) -> false; +string_ends_with(String, Suffix) -> + SuffixSize = byte_size(Suffix), + Suffix == binary_part(String, byte_size(String) - SuffixSize, SuffixSize). + +string_pad(String, Length, Dir, PadString) -> + Chars = string:pad(String, Length, Dir, binary_to_list(PadString)), + case unicode:characters_to_binary(Chars) of + Bin when is_binary(Bin) -> Bin; + Error -> erlang:error({gleam_error, {string_invalid_utf8, Error}}) + end. + +string_pop_grapheme(String) -> + case string:next_grapheme(String) of + [ Next | Rest ] -> + {ok, {unicode:characters_to_binary([Next]), unicode:characters_to_binary(Rest)}}; + _ -> {error, nil} + end. + +bit_array_concat(BitArrays) -> + list_to_bitstring(BitArrays). + +bit_array_slice(Bin, Pos, Len) -> + try {ok, binary:part(Bin, Pos, Len)} + catch error:badarg -> {error, nil} + end. + +bit_array_int_to_u32(I) when 0 =< I, I < 4294967296 -> + {ok, <>}; +bit_array_int_to_u32(_) -> + {error, nil}. + +bit_array_int_from_u32(<>) -> + {ok, I}; +bit_array_int_from_u32(_) -> + {error, nil}. + +compile_regex(String, Options) -> + {options, Caseless, Multiline} = Options, + OptionsList = [ + unicode, + ucp, + Caseless andalso caseless, + Multiline andalso multiline + ], + FilteredOptions = [Option || Option <- OptionsList, Option /= false], + case re:compile(String, FilteredOptions) of + {ok, MP} -> {ok, MP}; + {error, {Str, Pos}} -> + {error, {compile_error, unicode:characters_to_binary(Str), Pos}} + end. + +regex_check(Regex, String) -> + re:run(String, Regex) /= nomatch. + +regex_split(Regex, String) -> + re:split(String, Regex). + +regex_submatches(_, {-1, 0}) -> none; +regex_submatches(String, {Start, Length}) -> + BinarySlice = binary:part(String, {Start, Length}), + case string:is_empty(binary_to_list(BinarySlice)) of + true -> none; + false -> {some, BinarySlice} + end. + +regex_matches(String, [{Start, Length} | Submatches]) -> + Submatches1 = lists:map(fun(X) -> regex_submatches(String, X) end, Submatches), + {match, binary:part(String, Start, Length), Submatches1}. + +regex_scan(Regex, String) -> + case re:run(String, Regex, [global]) of + {match, Captured} -> lists:map(fun(X) -> regex_matches(String, X) end, Captured); + nomatch -> [] + end. + +base_decode64(S) -> + try {ok, base64:decode(S)} + catch error:_ -> {error, nil} + end. + +wrap_list(X) when is_list(X) -> X; +wrap_list(X) -> [X]. + +parse_query(Query) -> + case uri_string:dissect_query(Query) of + {error, _, _} -> {error, nil}; + Pairs -> + Pairs1 = lists:map(fun + ({K, true}) -> {K, <<"">>}; + (Pair) -> Pair + end, Pairs), + {ok, Pairs1} + end. + +percent_encode(B) -> percent_encode(B, <<>>). +percent_encode(<<>>, Acc) -> + Acc; +percent_encode(<>, Acc) -> + case percent_ok(H) of + true -> + percent_encode(T, <>); + false -> + <> = <>, + percent_encode(T, <>) + end. + +percent_decode(Cs) -> percent_decode(Cs, <<>>). +percent_decode(<<$%, C0, C1, Cs/binary>>, Acc) -> + case is_hex_digit(C0) andalso is_hex_digit(C1) of + true -> + B = ?HEX2DEC(C0)*16+?HEX2DEC(C1), + percent_decode(Cs, <>); + false -> + {error, nil} + end; +percent_decode(<>, Acc) -> + percent_decode(Cs, <>); +percent_decode(<<>>, Acc) -> + check_utf8(Acc). + +percent_ok($!) -> true; +percent_ok($$) -> true; +percent_ok($') -> true; +percent_ok($() -> true; +percent_ok($)) -> true; +percent_ok($*) -> true; +percent_ok($+) -> true; +percent_ok($-) -> true; +percent_ok($.) -> true; +percent_ok($_) -> true; +percent_ok($~) -> true; +percent_ok(C) when $0 =< C, C =< $9 -> true; +percent_ok(C) when $A =< C, C =< $Z -> true; +percent_ok(C) when $a =< C, C =< $z -> true; +percent_ok(_) -> false. + +is_hex_digit(C) -> + ($0 =< C andalso C =< $9) orelse ($a =< C andalso C =< $f) orelse ($A =< C andalso C =< $F). + +check_utf8(Cs) -> + case unicode:characters_to_list(Cs) of + {incomplete, _, _} -> {error, nil}; + {error, _, _} -> {error, nil}; + _ -> {ok, Cs} + end. + +uri_parse(String) -> + case uri_string:parse(String) of + {error, _, _} -> {error, nil}; + Uri -> + {ok, {uri, + maps_get_optional(Uri, scheme), + maps_get_optional(Uri, userinfo), + maps_get_optional(Uri, host), + maps_get_optional(Uri, port), + maps_get_or(Uri, path, <<>>), + maps_get_optional(Uri, query), + maps_get_optional(Uri, fragment) + }} + end. + +maps_get_optional(Map, Key) -> + try {some, maps:get(Key, Map)} + catch _:_ -> none + end. + +maps_get_or(Map, Key, Default) -> + try maps:get(Key, Map) + catch _:_ -> Default + end. + +print(String) -> + io:put_chars(String), + nil. + +println(String) -> + io:put_chars([String, $\n]), + nil. + +print_error(String) -> + io:put_chars(standard_error, String), + nil. + +println_error(String) -> + io:put_chars(standard_error, [String, $\n]), + nil. + +inspect(true) -> + "True"; +inspect(false) -> + "False"; +inspect(nil) -> + "Nil"; +inspect(Data) when is_map(Data) -> + Fields = [ + [<<"#(">>, inspect(Key), <<", ">>, inspect(Value), <<")">>] + || {Key, Value} <- maps:to_list(Data) + ], + ["dict.from_list([", lists:join(", ", Fields), "])"]; +inspect(Atom) when is_atom(Atom) -> + Binary = erlang:atom_to_binary(Atom), + case inspect_maybe_gleam_atom(Binary, none, <<>>) of + {ok, Inspected} -> Inspected; + {error, _} -> ["atom.create_from_string(\"", Binary, "\")"] + end; +inspect(Any) when is_integer(Any) -> + erlang:integer_to_list(Any); +inspect(Any) when is_float(Any) -> + io_lib_format:fwrite_g(Any); +inspect(Binary) when is_binary(Binary) -> + case inspect_maybe_utf8_string(Binary, <<>>) of + {ok, InspectedUtf8String} -> InspectedUtf8String; + {error, not_a_utf8_string} -> + Segments = [erlang:integer_to_list(X) || <> <= Binary], + ["<<", lists:join(", ", Segments), ">>"] + end; +inspect(Bits) when is_bitstring(Bits) -> + inspect_bit_array(Bits); +inspect(List) when is_list(List) -> + case inspect_list(List) of + {proper, Elements} -> ["[", Elements, "]"]; + {improper, Elements} -> ["//erl([", Elements, "])"] + end; +inspect(Any) when is_tuple(Any) % Record constructors + andalso is_atom(element(1, Any)) + andalso element(1, Any) =/= false + andalso element(1, Any) =/= true + andalso element(1, Any) =/= nil +-> + [Atom | ArgsList] = erlang:tuple_to_list(Any), + Args = lists:join(<<", ">>, + lists:map(fun inspect/1, ArgsList) + ), + [inspect(Atom), "(", Args, ")"]; +inspect(Tuple) when is_tuple(Tuple) -> + Elements = lists:map(fun inspect/1, erlang:tuple_to_list(Tuple)), + ["#(", lists:join(", ", Elements), ")"]; +inspect(Any) when is_function(Any) -> + {arity, Arity} = erlang:fun_info(Any, arity), + ArgsAsciiCodes = lists:seq($a, $a + Arity - 1), + Args = lists:join(<<", ">>, + lists:map(fun(Arg) -> <> end, ArgsAsciiCodes) + ), + ["//fn(", Args, ") { ... }"]; +inspect(Any) -> + ["//erl(", io_lib:format("~p", [Any]), ")"]. + + +inspect_maybe_gleam_atom(<<>>, none, _) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, none, _) when ?is_digit_char(First) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, none, _) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_">>, _PrevChar, _Acc) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, $_, _Acc) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, _PrevChar, _Acc) + when not (?is_lowercase_char(First) orelse ?is_underscore_char(First) orelse ?is_digit_char(First)) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, none, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<<"_", Rest/binary>>, _PrevChar, Acc) -> + inspect_maybe_gleam_atom(Rest, $_, Acc); +inspect_maybe_gleam_atom(<>, $_, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<>, _PrevChar, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<<>>, _PrevChar, Acc) -> + {ok, Acc}; +inspect_maybe_gleam_atom(A, B, C) -> + erlang:display({A, B, C}), + throw({gleam_error, A, B, C}). + +inspect_list([]) -> + {proper, []}; +inspect_list([First]) -> + {proper, [inspect(First)]}; +inspect_list([First | Rest]) when is_list(Rest) -> + {Kind, Inspected} = inspect_list(Rest), + {Kind, [inspect(First), <<", ">> | Inspected]}; +inspect_list([First | ImproperTail]) -> + {improper, [inspect(First), <<" | ">>, inspect(ImproperTail)]}. + +inspect_bit_array(Bits) -> + Text = inspect_bit_array(Bits, <<"<<">>), + <>">>. + +inspect_bit_array(<<>>, Acc) -> + Acc; +inspect_bit_array(<>, Acc) -> + inspect_bit_array(Rest, append_segment(Acc, erlang:integer_to_binary(X))); +inspect_bit_array(Rest, Acc) -> + Size = bit_size(Rest), + <> = Rest, + X1 = erlang:integer_to_binary(X), + Size1 = erlang:integer_to_binary(Size), + Segment = <>, + inspect_bit_array(<<>>, append_segment(Acc, Segment)). + +append_segment(<<"<<">>, Segment) -> + <<"<<", Segment/binary>>; +append_segment(Acc, Segment) -> + <>. + + +inspect_maybe_utf8_string(Binary, Acc) -> + case Binary of + <<>> -> {ok, <<$", Acc/binary, $">>}; + <> -> + Escaped = case First of + $" -> <<$\\, $">>; + $\\ -> <<$\\, $\\>>; + $\r -> <<$\\, $r>>; + $\n -> <<$\\, $n>>; + $\t -> <<$\\, $t>>; + Other -> <> + end, + inspect_maybe_utf8_string(Rest, <>); + _ -> {error, not_a_utf8_string} + end. + +float_to_string(Float) when is_float(Float) -> + erlang:iolist_to_binary(io_lib_format:fwrite_g(Float)). + +utf_codepoint_list_to_string(List) -> + case unicode:characters_to_binary(List) of + {error, _} -> erlang:error({gleam_error, {string_invalid_utf8, List}}); + Binary -> Binary + end. + +crop_string(String, Prefix) -> + case string:find(String, Prefix) of + nomatch -> String; + New -> New + end. + +contains_string(String, Substring) -> + is_bitstring(string:find(String, Substring)). + +base16_decode(String) -> + try + {ok, binary:decode_hex(String)} + catch + _:_ -> {error, nil} + end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs new file mode 100644 index 0000000..a908b23 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs @@ -0,0 +1,875 @@ +import { + BitArray, + Error, + List, + Ok, + Result, + UtfCodepoint, + stringBits, + toBitArray, + NonEmpty, + CustomType, +} from "./gleam.mjs"; +import { + CompileError as RegexCompileError, + Match as RegexMatch, +} from "./gleam/regex.mjs"; +import { DecodeError } from "./gleam/dynamic.mjs"; +import { Some, None } from "./gleam/option.mjs"; +import Dict from "./dict.mjs"; + +const Nil = undefined; +const NOT_FOUND = {}; + +export function identity(x) { + return x; +} + +export function parse_int(value) { + if (/^[-+]?(\d+)$/.test(value)) { + return new Ok(parseInt(value)); + } else { + return new Error(Nil); + } +} + +export function parse_float(value) { + if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { + return new Ok(parseFloat(value)); + } else { + return new Error(Nil); + } +} + +export function to_string(term) { + return term.toString(); +} + +export function float_to_string(float) { + const string = float.toString(); + if (string.indexOf(".") >= 0) { + return string; + } else { + return string + ".0"; + } +} + +export function int_to_base_string(int, base) { + return int.toString(base).toUpperCase(); +} + +const int_base_patterns = { + 2: /[^0-1]/, + 3: /[^0-2]/, + 4: /[^0-3]/, + 5: /[^0-4]/, + 6: /[^0-5]/, + 7: /[^0-6]/, + 8: /[^0-7]/, + 9: /[^0-8]/, + 10: /[^0-9]/, + 11: /[^0-9a]/, + 12: /[^0-9a-b]/, + 13: /[^0-9a-c]/, + 14: /[^0-9a-d]/, + 15: /[^0-9a-e]/, + 16: /[^0-9a-f]/, + 17: /[^0-9a-g]/, + 18: /[^0-9a-h]/, + 19: /[^0-9a-i]/, + 20: /[^0-9a-j]/, + 21: /[^0-9a-k]/, + 22: /[^0-9a-l]/, + 23: /[^0-9a-m]/, + 24: /[^0-9a-n]/, + 25: /[^0-9a-o]/, + 26: /[^0-9a-p]/, + 27: /[^0-9a-q]/, + 28: /[^0-9a-r]/, + 29: /[^0-9a-s]/, + 30: /[^0-9a-t]/, + 31: /[^0-9a-u]/, + 32: /[^0-9a-v]/, + 33: /[^0-9a-w]/, + 34: /[^0-9a-x]/, + 35: /[^0-9a-y]/, + 36: /[^0-9a-z]/, +}; + +export function int_from_base_string(string, base) { + if (int_base_patterns[base].test(string.replace(/^-/, "").toLowerCase())) { + return new Error(Nil); + } + + const result = parseInt(string, base); + + if (isNaN(result)) { + return new Error(Nil); + } + + return new Ok(result); +} + +export function string_replace(string, target, substitute) { + if (typeof string.replaceAll !== "undefined") { + return string.replaceAll(target, substitute); + } + // Fallback for older Node.js versions: + // 1. + // 2. + // TODO: This fallback could be remove once Node.js 14 is EOL + // aka on or after 2024-04-30 + return string.replace( + // $& means the whole matched string + new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), + substitute + ); +} + +export function string_reverse(string) { + return [...string].reverse().join(""); +} + +export function string_length(string) { + if (string === "") { + return 0; + } + const iterator = graphemes_iterator(string); + if (iterator) { + let i = 0; + for (const _ of iterator) { + i++; + } + return i; + } else { + return string.match(/./gsu).length; + } +} + +export function graphemes(string) { + return List.fromArray( + Array.from(graphemes_iterator(string)).map((item) => item.segment) + ); +} + +function graphemes_iterator(string) { + if (Intl && Intl.Segmenter) { + return new Intl.Segmenter().segment(string)[Symbol.iterator](); + } +} + +export function pop_grapheme(string) { + let first; + const iterator = graphemes_iterator(string); + if (iterator) { + first = iterator.next().value?.segment; + } else { + first = string.match(/./su)?.[0]; + } + if (first) { + return new Ok([first, string.slice(first.length)]); + } else { + return new Error(Nil); + } +} + +export function lowercase(string) { + return string.toLowerCase(); +} + +export function uppercase(string) { + return string.toUpperCase(); +} + +export function less_than(a, b) { + return a < b; +} + +export function add(a, b) { + return a + b; +} + +export function equal(a, b) { + return a === b; +} + +export function split(xs, pattern) { + return List.fromArray(xs.split(pattern)); +} + +export function join(xs, separator) { + const iterator = xs[Symbol.iterator](); + let result = iterator.next().value || ""; + let current = iterator.next(); + while (!current.done) { + result = result + separator + current.value; + current = iterator.next(); + } + return result; +} + +export function concat(xs) { + let result = ""; + for (const x of xs) { + result = result + x; + } + return result; +} + +export function length(data) { + return data.length; +} + +export function crop_string(string, substring) { + return string.substring(string.indexOf(substring)); +} + +export function contains_string(haystack, needle) { + return haystack.indexOf(needle) >= 0; +} + +export function starts_with(haystack, needle) { + return haystack.startsWith(needle); +} + +export function ends_with(haystack, needle) { + return haystack.endsWith(needle); +} + +export function split_once(haystack, needle) { + const index = haystack.indexOf(needle); + if (index >= 0) { + const before = haystack.slice(0, index); + const after = haystack.slice(index + needle.length); + return new Ok([before, after]); + } else { + return new Error(Nil); + } +} + +export function trim(string) { + return string.trim(); +} + +export function trim_left(string) { + return string.trimLeft(); +} + +export function trim_right(string) { + return string.trimRight(); +} + +export function bit_array_from_string(string) { + return toBitArray([stringBits(string)]); +} + +export function bit_array_concat(bit_arrays) { + return toBitArray(bit_arrays.toArray().map((b) => b.buffer)); +} + +export function console_log(term) { + console.log(term); +} + +export function console_error(term) { + console.error(term); +} + +export function crash(message) { + throw new globalThis.Error(message); +} + +export function bit_array_to_string(bit_array) { + try { + const decoder = new TextDecoder("utf-8", { fatal: true }); + return new Ok(decoder.decode(bit_array.buffer)); + } catch (_error) { + return new Error(Nil); + } +} + +export function print(string) { + if (typeof process === "object") { + process.stdout.write(string); // We can write without a trailing newline + } else if (typeof Deno === "object") { + Deno.stdout.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline + } else { + console.log(string); // We're in a browser. Newlines are mandated + } +} + +export function print_error(string) { + if (typeof process === "object" && process.stderr?.write) { + process.stderr.write(string); // We can write without a trailing newline + } else if (typeof Deno === "object") { + Deno.stderr.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline + } else { + console.error(string); // We're in a browser. Newlines are mandated + } +} + +export function print_debug(string) { + if (typeof process === "object" && process.stderr?.write) { + process.stderr.write(string + "\n"); // If we're in Node.js, use `stderr` + } else if (typeof Deno === "object") { + Deno.stderr.writeSync(new TextEncoder().encode(string + "\n")); // If we're in Deno, use `stderr` + } else { + console.log(string); // Otherwise, use `console.log` (so that it doesn't look like an error) + } +} + +export function ceiling(float) { + return Math.ceil(float); +} + +export function floor(float) { + return Math.floor(float); +} + +export function round(float) { + return Math.round(float); +} + +export function truncate(float) { + return Math.trunc(float); +} + +export function power(base, exponent) { + // It is checked in Gleam that: + // - The base is non-negative and that the exponent is not fractional. + // - The base is non-zero and the exponent is non-negative (otherwise + // the result will essentially be division by zero). + // It can thus be assumed that valid input is passed to the Math.pow + // function and a NaN or Infinity value will not be produced. + return Math.pow(base, exponent); +} + +export function random_uniform() { + const random_uniform_result = Math.random(); + // With round-to-nearest-even behavior, the ranges claimed for the functions below + // (excluding the one for Math.random() itself) aren't exact. + // If extremely large bounds are chosen (2^53 or higher), + // it's possible in extremely rare cases to calculate the usually-excluded upper bound. + // Note that as numbers in JavaScript are IEEE 754 floating point numbers + // See: + // Because of this, we just loop 'until' we get a valid result where 0.0 <= x < 1.0: + if (random_uniform_result === 1.0) { + return random_uniform(); + } + return random_uniform_result; +} + +export function bit_array_slice(bits, position, length) { + const start = Math.min(position, position + length); + const end = Math.max(position, position + length); + if (start < 0 || end > bits.length) return new Error(Nil); + const buffer = new Uint8Array(bits.buffer.buffer, start, Math.abs(length)); + return new Ok(new BitArray(buffer)); +} + +export function codepoint(int) { + return new UtfCodepoint(int); +} + +export function string_to_codepoint_integer_list(string) { + return List.fromArray(Array.from(string).map((item) => item.codePointAt(0))); +} + +export function utf_codepoint_list_to_string(utf_codepoint_integer_list) { + return utf_codepoint_integer_list + .toArray() + .map((x) => String.fromCodePoint(x.value)) + .join(""); +} + +export function utf_codepoint_to_int(utf_codepoint) { + return utf_codepoint.value; +} + +export function regex_check(regex, string) { + regex.lastIndex = 0; + return regex.test(string); +} + +export function compile_regex(pattern, options) { + try { + let flags = "gu"; + if (options.case_insensitive) flags += "i"; + if (options.multi_line) flags += "m"; + return new Ok(new RegExp(pattern, flags)); + } catch (error) { + const number = (error.columnNumber || 0) | 0; + return new Error(new RegexCompileError(error.message, number)); + } +} + +export function regex_scan(regex, string) { + const matches = Array.from(string.matchAll(regex)).map((match) => { + const content = match[0]; + const submatches = []; + for (let n = match.length - 1; n > 0; n--) { + if (match[n]) { + submatches[n - 1] = new Some(match[n]); + continue; + } + if (submatches.length > 0) { + submatches[n - 1] = new None(); + } + } + return new RegexMatch(content, List.fromArray(submatches)); + }); + return List.fromArray(matches); +} + +export function new_map() { + return Dict.new(); +} + +export function map_size(map) { + return map.size; +} + +export function map_to_list(map) { + return List.fromArray(map.entries()); +} + +export function map_remove(key, map) { + return map.delete(key); +} + +export function map_get(map, key) { + const value = map.get(key, NOT_FOUND); + if (value === NOT_FOUND) { + return new Error(Nil); + } + return new Ok(value); +} + +export function map_insert(key, value, map) { + return map.set(key, value); +} + +function unsafe_percent_decode(string) { + return decodeURIComponent((string || "").replace("+", " ")); +} + +export function percent_decode(string) { + try { + return new Ok(unsafe_percent_decode(string)); + } catch (_error) { + return new Error(Nil); + } +} + +export function percent_encode(string) { + return encodeURIComponent(string); +} + +export function parse_query(query) { + try { + const pairs = []; + for (const section of query.split("&")) { + const [key, value] = section.split("="); + if (!key) continue; + pairs.push([unsafe_percent_decode(key), unsafe_percent_decode(value)]); + } + return new Ok(List.fromArray(pairs)); + } catch (_error) { + return new Error(Nil); + } +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +export function encode64(bit_array) { + const aBytes = bit_array.buffer; + let nMod3 = 2; + let sB64Enc = ""; + + for (let nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { + nMod3 = nIdx % 3; + if (nIdx > 0 && ((nIdx * 4) / 3) % 76 === 0) { + sB64Enc += "\r\n"; + } + nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24); + if (nMod3 === 2 || aBytes.length - nIdx === 1) { + sB64Enc += String.fromCharCode( + uint6ToB64((nUint24 >>> 18) & 63), + uint6ToB64((nUint24 >>> 12) & 63), + uint6ToB64((nUint24 >>> 6) & 63), + uint6ToB64(nUint24 & 63) + ); + nUint24 = 0; + } + } + + return ( + sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + + (nMod3 === 2 ? "" : nMod3 === 1 ? "=" : "==") + ); +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +function uint6ToB64(nUint6) { + return nUint6 < 26 + ? nUint6 + 65 + : nUint6 < 52 + ? nUint6 + 71 + : nUint6 < 62 + ? nUint6 - 4 + : nUint6 === 62 + ? 43 + : nUint6 === 63 + ? 47 + : 65; +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +function b64ToUint6(nChr) { + return nChr > 64 && nChr < 91 + ? nChr - 65 + : nChr > 96 && nChr < 123 + ? nChr - 71 + : nChr > 47 && nChr < 58 + ? nChr + 4 + : nChr === 43 + ? 62 + : nChr === 47 + ? 63 + : 0; +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +export function decode64(sBase64) { + if (sBase64.match(/[^A-Za-z0-9\+\/=]/g)) return new Error(Nil); + const sB64Enc = sBase64.replace(/=/g, ""); + const nInLen = sB64Enc.length; + const nOutLen = (nInLen * 3 + 1) >> 2; + const taBytes = new Uint8Array(nOutLen); + + for ( + let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; + nInIdx < nInLen; + nInIdx++ + ) { + nMod4 = nInIdx & 3; + nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4)); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { + taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255; + } + nUint24 = 0; + } + } + + return new Ok(new BitArray(taBytes)); +} + +export function classify_dynamic(data) { + if (typeof data === "string") { + return "String"; + } else if (data instanceof Result) { + return "Result"; + } else if (data instanceof List) { + return "List"; + } else if (data instanceof BitArray) { + return "BitArray"; + } else if (data instanceof Dict) { + return "Map"; + } else if (Number.isInteger(data)) { + return "Int"; + } else if (Array.isArray(data)) { + return `Tuple of ${data.length} elements`; + } else if (typeof data === "number") { + return "Float"; + } else if (data === null) { + return "Null"; + } else if (data === undefined) { + return "Nil"; + } else { + const type = typeof data; + return type.charAt(0).toUpperCase() + type.slice(1); + } +} + +function decoder_error(expected, got) { + return decoder_error_no_classify(expected, classify_dynamic(got)); +} + +function decoder_error_no_classify(expected, got) { + return new Error( + List.fromArray([new DecodeError(expected, got, List.fromArray([]))]) + ); +} + +export function decode_string(data) { + return typeof data === "string" + ? new Ok(data) + : decoder_error("String", data); +} + +export function decode_int(data) { + return Number.isInteger(data) ? new Ok(data) : decoder_error("Int", data); +} + +export function decode_float(data) { + return typeof data === "number" ? new Ok(data) : decoder_error("Float", data); +} + +export function decode_bool(data) { + return typeof data === "boolean" ? new Ok(data) : decoder_error("Bool", data); +} + +export function decode_bit_array(data) { + if (data instanceof BitArray) { + return new Ok(data); + } + if (data instanceof Uint8Array) { + return new Ok(new BitArray(data)); + } + return decoder_error("BitArray", data); +} + +export function decode_tuple(data) { + return Array.isArray(data) ? new Ok(data) : decoder_error("Tuple", data); +} + +export function decode_tuple2(data) { + return decode_tupleN(data, 2); +} + +export function decode_tuple3(data) { + return decode_tupleN(data, 3); +} + +export function decode_tuple4(data) { + return decode_tupleN(data, 4); +} + +export function decode_tuple5(data) { + return decode_tupleN(data, 5); +} + +export function decode_tuple6(data) { + return decode_tupleN(data, 6); +} + +function decode_tupleN(data, n) { + if (Array.isArray(data) && data.length == n) { + return new Ok(data); + } + + const list = decode_exact_length_list(data, n); + if (list) return new Ok(list); + + return decoder_error(`Tuple of ${n} elements`, data); +} + +function decode_exact_length_list(data, n) { + if (!(data instanceof List)) return; + + const elements = []; + let current = data; + + for (let i = 0; i < n; i++) { + if (!(current instanceof NonEmpty)) break; + elements.push(current.head); + current = current.tail; + } + + if (elements.length === n && !(current instanceof NonEmpty)) return elements; +} + +export function tuple_get(data, index) { + return index >= 0 && data.length > index + ? new Ok(data[index]) + : new Error(Nil); +} + +export function decode_list(data) { + if (Array.isArray(data)) { + return new Ok(List.fromArray(data)); + } + return data instanceof List ? new Ok(data) : decoder_error("List", data); +} + +export function decode_result(data) { + return data instanceof Result ? new Ok(data) : decoder_error("Result", data); +} + +export function decode_map(data) { + if (data instanceof Dict) { + return new Ok(Dict.fromMap(data)); + } + if (data == null) { + return decoder_error("Map", data); + } + if (typeof data !== "object") { + return decoder_error("Map", data); + } + const proto = Object.getPrototypeOf(data); + if (proto === Object.prototype || proto === null) { + return new Ok(Dict.fromObject(data)); + } + return decoder_error("Map", data); +} + +export function decode_option(data, decoder) { + if (data === null || data === undefined || data instanceof None) + return new Ok(new None()); + if (data instanceof Some) data = data[0]; + const result = decoder(data); + if (result.isOk()) { + return new Ok(new Some(result[0])); + } else { + return result; + } +} + +export function decode_field(value, name) { + const not_a_map_error = () => decoder_error("Map", value); + + if ( + value instanceof Dict || + value instanceof WeakMap || + value instanceof Map + ) { + const entry = map_get(value, name); + return new Ok(entry.isOk() ? new Some(entry[0]) : new None()); + } else if (Object.getPrototypeOf(value) == Object.prototype) { + return try_get_field(value, name, () => new Ok(new None())); + } else { + return try_get_field(value, name, not_a_map_error); + } +} + +function try_get_field(value, field, or_else) { + try { + return field in value ? new Ok(new Some(value[field])) : or_else(); + } catch { + return or_else(); + } +} + +export function byte_size(string) { + return new TextEncoder().encode(string).length; +} + +// In Javascript bitwise operations convert numbers to a sequence of 32 bits +// while Erlang uses arbitrary precision. +// To get around this problem and get consistent results use BigInt and then +// downcast the value back to a Number value. + +export function bitwise_and(x, y) { + return Number(BigInt(x) & BigInt(y)); +} + +export function bitwise_not(x) { + return Number(~BigInt(x)); +} + +export function bitwise_or(x, y) { + return Number(BigInt(x) | BigInt(y)); +} + +export function bitwise_exclusive_or(x, y) { + return Number(BigInt(x) ^ BigInt(y)); +} + +export function bitwise_shift_left(x, y) { + return Number(BigInt(x) << BigInt(y)); +} + +export function bitwise_shift_right(x, y) { + return Number(BigInt(x) >> BigInt(y)); +} + +export function inspect(v) { + const t = typeof v; + if (v === true) return "True"; + if (v === false) return "False"; + if (v === null) return "//js(null)"; + if (v === undefined) return "Nil"; + if (t === "string") return JSON.stringify(v); + if (t === "bigint" || t === "number") return v.toString(); + if (Array.isArray(v)) return `#(${v.map(inspect).join(", ")})`; + if (v instanceof List) return inspectList(v); + if (v instanceof UtfCodepoint) return inspectUtfCodepoint(v); + if (v instanceof BitArray) return inspectBitArray(v); + if (v instanceof CustomType) return inspectCustomType(v); + if (v instanceof Dict) return inspectDict(v); + if (v instanceof Set) return `//js(Set(${[...v].map(inspect).join(", ")}))`; + if (v instanceof RegExp) return `//js(${v})`; + if (v instanceof Date) return `//js(Date("${v.toISOString()}"))`; + if (v instanceof Function) { + const args = []; + for (const i of Array(v.length).keys()) + args.push(String.fromCharCode(i + 97)); + return `//fn(${args.join(", ")}) { ... }`; + } + return inspectObject(v); +} + +function inspectDict(map) { + let body = "dict.from_list(["; + let first = true; + map.forEach((value, key) => { + if (!first) body = body + ", "; + body = body + "#(" + inspect(key) + ", " + inspect(value) + ")"; + first = false; + }); + return body + "])"; +} + +function inspectObject(v) { + const name = Object.getPrototypeOf(v)?.constructor?.name || "Object"; + const props = []; + for (const k of Object.keys(v)) { + props.push(`${inspect(k)}: ${inspect(v[k])}`); + } + const body = props.length ? " " + props.join(", ") + " " : ""; + const head = name === "Object" ? "" : name + " "; + return `//js(${head}{${body}})`; +} + +function inspectCustomType(record) { + const props = Object.keys(record) + .map((label) => { + const value = inspect(record[label]); + return isNaN(parseInt(label)) ? `${label}: ${value}` : value; + }) + .join(", "); + return props + ? `${record.constructor.name}(${props})` + : record.constructor.name; +} + +export function inspectList(list) { + return `[${list.toArray().map(inspect).join(", ")}]`; +} + +export function inspectBitArray(bits) { + return `<<${Array.from(bits.buffer).join(", ")}>>`; +} + +export function inspectUtfCodepoint(codepoint) { + return `//utfcodepoint(${String.fromCodePoint(codepoint.value)})`; +} + +export function base16_encode(bit_array) { + let result = ""; + for (const byte of bit_array.buffer) { + result += byte.toString(16).padStart(2, "0").toUpperCase(); + } + return result; +} + +export function base16_decode(string) { + const bytes = new Uint8Array(string.length / 2); + for (let i = 0; i < string.length; i += 2) { + const a = parseInt(string[i], 16); + const b = parseInt(string[i + 1], 16); + if (isNaN(a) || isNaN(b)) return new Error(Nil); + bytes[i / 2] = a * 16 + b; + } + return new Ok(new BitArray(bytes)); +} diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam new file mode 100644 index 0000000..66ecfaf Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam new file mode 100644 index 0000000..12fe362 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam new file mode 100644 index 0000000..ea1ebc6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam new file mode 100644 index 0000000..b8a7f29 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam new file mode 100644 index 0000000..49ceff6 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam new file mode 100644 index 0000000..768e658 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam new file mode 100644 index 0000000..91ac492 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam new file mode 100644 index 0000000..4945547 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam new file mode 100644 index 0000000..b0b6b33 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam new file mode 100644 index 0000000..1a0aca0 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam new file mode 100644 index 0000000..a8594f4 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam new file mode 100644 index 0000000..fdadf55 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam new file mode 100644 index 0000000..e7997d2 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam new file mode 100644 index 0000000..2d8125f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam new file mode 100644 index 0000000..ba9c9e2 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam new file mode 100644 index 0000000..ed16040 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam new file mode 100644 index 0000000..e5a5990 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam new file mode 100644 index 0000000..1db55b8 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam new file mode 100644 index 0000000..c4e81fc Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam new file mode 100644 index 0000000..d4daa3f Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam new file mode 100644 index 0000000..13eeb10 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam new file mode 100644 index 0000000..ad16119 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam new file mode 100644 index 0000000..6565dd5 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam new file mode 100644 index 0000000..f968a74 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam new file mode 100644 index 0000000..8c0d9ec Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app new file mode 100644 index 0000000..8231979 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app @@ -0,0 +1,7 @@ +{application, gleam_stdlib, [ + {vsn, "0.33.0"}, + {applications, []}, + {description, "A standard library for the Gleam programming language"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam new file mode 100644 index 0000000..4215626 Binary files /dev/null and b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl new file mode 100644 index 0000000..b1135f2 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl @@ -0,0 +1,5 @@ +-record(decode_error, { + expected :: binary(), + found :: binary(), + path :: list(binary()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl new file mode 100644 index 0000000..b0d08dc --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl @@ -0,0 +1 @@ +-record(iterator, {continuation :: fun(() -> gleam@iterator:action(any()))}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl new file mode 100644 index 0000000..1f61922 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl @@ -0,0 +1 @@ +-record(next, {element :: any(), accumulator :: any()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl new file mode 100644 index 0000000..88ac25e --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl @@ -0,0 +1 @@ +-record(queue, {in :: list(any()), out :: list(any())}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl new file mode 100644 index 0000000..ad5511e --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl @@ -0,0 +1 @@ +-record(compile_error, {error :: binary(), byte_index :: integer()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl new file mode 100644 index 0000000..4216619 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl @@ -0,0 +1,4 @@ +-record(match, { + content :: binary(), + submatches :: list(gleam@option:option(binary())) +}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl new file mode 100644 index 0000000..0074603 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl @@ -0,0 +1 @@ +-record(options, {case_insensitive :: boolean(), multi_line :: boolean()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl new file mode 100644 index 0000000..6e1e226 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl @@ -0,0 +1 @@ +-record(set, {map :: gleam@dict:dict(any(), list(nil))}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl new file mode 100644 index 0000000..50150f4 --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl @@ -0,0 +1,9 @@ +-record(uri, { + scheme :: gleam@option:option(binary()), + userinfo :: gleam@option:option(binary()), + host :: gleam@option:option(binary()), + port :: gleam@option:option(integer()), + path :: binary(), + 'query' :: gleam@option:option(binary()), + fragment :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/dev/erlang/gleam_version b/aoc2023/build/dev/erlang/gleam_version new file mode 100644 index 0000000..048acbd --- /dev/null +++ b/aoc2023/build/dev/erlang/gleam_version @@ -0,0 +1 @@ +0.33.0-rc2 \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache new file mode 100644 index 0000000..d1a66cb Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta new file mode 100644 index 0000000..23d66d7 Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl new file mode 100644 index 0000000..13ae369 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl @@ -0,0 +1,513 @@ +-module(glint). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([with_config/2, with_pretty_help/2, without_pretty_help/1, with_name/2, new/0, command/1, description/2, flag/3, flag_tuple/2, flags/2, global_flag/3, global_flag_tuple/2, global_flags/2, default_pretty_help/0, add/3, help_flag/0, execute/2, run_and_handle/3, run/2, add_command_from_stub/2]). +-export_type([config/0, pretty_help/0, glint/1, command/1, command_input/0, command_node/1, out/1, stub/1]). + +-type config() :: {config, + gleam@option:option(pretty_help()), + gleam@option:option(binary())}. + +-type pretty_help() :: {pretty_help, + gleam_community@colour:colour(), + gleam_community@colour:colour(), + gleam_community@colour:colour()}. + +-opaque glint(JFP) :: {glint, + config(), + command_node(JFP), + gleam@dict:dict(binary(), glint@flag:flag())}. + +-opaque command(JFQ) :: {command, + fun((command_input()) -> JFQ), + gleam@dict:dict(binary(), glint@flag:flag()), + binary()}. + +-type command_input() :: {command_input, + list(binary()), + gleam@dict:dict(binary(), glint@flag:flag())}. + +-type command_node(JFR) :: {command_node, + gleam@option:option(command(JFR)), + gleam@dict:dict(binary(), command_node(JFR))}. + +-type out(JFS) :: {out, JFS} | {help, binary()}. + +-type stub(JFT) :: {stub, + list(binary()), + fun((command_input()) -> JFT), + list({binary(), glint@flag:flag()}), + binary()}. + +-spec with_config(glint(JFY), config()) -> glint(JFY). +with_config(Glint, Config) -> + erlang:setelement(2, Glint, Config). + +-spec with_pretty_help(glint(JGB), pretty_help()) -> glint(JGB). +with_pretty_help(Glint, Pretty) -> + _pipe = erlang:setelement(2, erlang:element(2, Glint), {some, Pretty}), + with_config(Glint, _pipe). + +-spec without_pretty_help(glint(JGE)) -> glint(JGE). +without_pretty_help(Glint) -> + _pipe = erlang:setelement(2, erlang:element(2, Glint), none), + with_config(Glint, _pipe). + +-spec with_name(glint(JGH), binary()) -> glint(JGH). +with_name(Glint, Name) -> + _pipe = erlang:setelement(3, erlang:element(2, Glint), {some, Name}), + with_config(Glint, _pipe). + +-spec empty_command() -> command_node(any()). +empty_command() -> + {command_node, none, gleam@map:new()}. + +-spec new() -> glint(any()). +new() -> + {glint, {config, none, none}, empty_command(), gleam@map:new()}. + +-spec do_add(command_node(JGR), list(binary()), command(JGR)) -> command_node(JGR). +do_add(Root, Path, Contents) -> + case Path of + [] -> + erlang:setelement(2, Root, {some, Contents}); + + [X | Xs] -> + erlang:setelement( + 3, + Root, + (gleam@map:update( + erlang:element(3, Root), + X, + fun(Node) -> _pipe = Node, + _pipe@1 = gleam@option:lazy_unwrap( + _pipe, + fun empty_command/0 + ), + do_add(_pipe@1, Xs, Contents) end + )) + ) + end. + +-spec command(fun((command_input()) -> JHA)) -> command(JHA). +command(Runner) -> + {command, Runner, gleam@map:new(), <<""/utf8>>}. + +-spec description(command(JHD), binary()) -> command(JHD). +description(Cmd, Description) -> + erlang:setelement(4, Cmd, Description). + +-spec flag(command(JHG), binary(), glint@flag:flag_builder(any())) -> command(JHG). +flag(Cmd, Key, Flag) -> + erlang:setelement( + 3, + Cmd, + gleam@map:insert(erlang:element(3, Cmd), Key, glint@flag:build(Flag)) + ). + +-spec flag_tuple(command(JHL), {binary(), glint@flag:flag_builder(any())}) -> command(JHL). +flag_tuple(Cmd, Tup) -> + flag(Cmd, erlang:element(1, Tup), erlang:element(2, Tup)). + +-spec flags(command(JHQ), list({binary(), glint@flag:flag()})) -> command(JHQ). +flags(Cmd, Flags) -> + gleam@list:fold( + Flags, + Cmd, + fun(Cmd@1, _use1) -> + {Key, Flag} = _use1, + erlang:setelement( + 3, + Cmd@1, + gleam@map:insert(erlang:element(3, Cmd@1), Key, Flag) + ) + end + ). + +-spec global_flag(glint(JHU), binary(), glint@flag:flag_builder(any())) -> glint(JHU). +global_flag(Glint, Key, Flag) -> + erlang:setelement( + 4, + Glint, + gleam@map:insert(erlang:element(4, Glint), Key, glint@flag:build(Flag)) + ). + +-spec global_flag_tuple(glint(JHZ), {binary(), glint@flag:flag_builder(any())}) -> glint(JHZ). +global_flag_tuple(Glint, Tup) -> + global_flag(Glint, erlang:element(1, Tup), erlang:element(2, Tup)). + +-spec global_flags(glint(JIE), list({binary(), glint@flag:flag()})) -> glint(JIE). +global_flags(Glint, Flags) -> + erlang:setelement( + 4, + Glint, + (gleam@list:fold( + Flags, + erlang:element(4, Glint), + fun(Acc, Tup) -> + gleam@map:insert( + Acc, + erlang:element(1, Tup), + erlang:element(2, Tup) + ) + end + )) + ). + +-spec execute_root( + command_node(JIS), + gleam@dict:dict(binary(), glint@flag:flag()), + list(binary()), + list(binary()) +) -> {ok, out(JIS)} | {error, snag:snag()}. +execute_root(Cmd, Global_flags, Args, Flag_inputs) -> + _pipe@3 = case erlang:element(2, Cmd) of + {some, Contents} -> + gleam@result:'try'( + gleam@list:try_fold( + Flag_inputs, + gleam@map:merge(Global_flags, erlang:element(3, Contents)), + fun glint@flag:update_flags/2 + ), + fun(New_flags) -> _pipe = {command_input, Args, New_flags}, + _pipe@1 = (erlang:element(2, Contents))(_pipe), + _pipe@2 = {out, _pipe@1}, + {ok, _pipe@2} end + ); + + none -> + snag:error(<<"command not found"/utf8>>) + end, + snag:context(_pipe@3, <<"failed to run command"/utf8>>). + +-spec default_pretty_help() -> pretty_help(). +default_pretty_help() -> + _assert_subject = gleam_community@colour:from_rgb255(182, 255, 234), + {ok, Usage_colour} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 404}) + end, + _assert_subject@1 = gleam_community@colour:from_rgb255(255, 175, 243), + {ok, Flags_colour} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 405}) + end, + _assert_subject@2 = gleam_community@colour:from_rgb255(252, 226, 174), + {ok, Subcommands_colour} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 406}) + end, + {pretty_help, Usage_colour, Flags_colour, Subcommands_colour}. + +-spec is_not_empty(binary()) -> boolean(). +is_not_empty(S) -> + S /= <<""/utf8>>. + +-spec sanitize_path(list(binary())) -> list(binary()). +sanitize_path(Path) -> + _pipe = Path, + _pipe@1 = gleam@list:map(_pipe, fun gleam@string:trim/1), + gleam@list:filter(_pipe@1, fun is_not_empty/1). + +-spec add(glint(JGM), list(binary()), command(JGM)) -> glint(JGM). +add(Glint, Path, Contents) -> + erlang:setelement( + 3, + Glint, + begin + _pipe = Path, + _pipe@1 = sanitize_path(_pipe), + do_add(erlang:element(3, Glint), _pipe@1, Contents) + end + ). + +-spec help_flag() -> binary(). +help_flag() -> + <<(<<"--"/utf8>>)/binary, "help"/utf8>>. + +-spec wrap_with_space(binary()) -> binary(). +wrap_with_space(S) -> + case S of + <<""/utf8>> -> + <<" "/utf8>>; + + _ -> + <<<<" "/utf8, S/binary>>/binary, " "/utf8>> + end. + +-spec subcommand_help(binary(), command_node(any())) -> binary(). +subcommand_help(Name, Cmd) -> + case erlang:element(2, Cmd) of + none -> + Name; + + {some, Contents} -> + <<<>/binary, + (erlang:element(4, Contents))/binary>> + end. + +-spec subcommands_help(gleam@dict:dict(binary(), command_node(any()))) -> binary(). +subcommands_help(Cmds) -> + _pipe = Cmds, + _pipe@1 = gleam@map:map_values(_pipe, fun subcommand_help/2), + _pipe@2 = gleam@map:values(_pipe@1), + _pipe@3 = gleam@list:sort(_pipe@2, fun gleam@string:compare/2), + gleam@string:join(_pipe@3, <<"\n\t"/utf8>>). + +-spec heading_style(binary(), gleam_community@colour:colour()) -> binary(). +heading_style(Heading, Colour) -> + _pipe = Heading, + _pipe@1 = gleam_community@ansi:bold(_pipe), + _pipe@2 = gleam_community@ansi:underline(_pipe@1), + _pipe@3 = gleam_community@ansi:italic(_pipe@2), + _pipe@4 = gleam_community@ansi:hex( + _pipe@3, + gleam_community@colour:to_rgb_hex(Colour) + ), + gleam_community@ansi:reset(_pipe@4). + +-spec usage_help( + binary(), + gleam@dict:dict(binary(), glint@flag:flag()), + config() +) -> binary(). +usage_help(Cmd_name, Flags, Config) -> + App_name = gleam@option:unwrap( + erlang:element(3, Config), + <<"gleam run"/utf8>> + ), + Flags@1 = begin + _pipe = Flags, + _pipe@1 = gleam@map:to_list(_pipe), + _pipe@2 = gleam@list:map(_pipe@1, fun glint@flag:flag_type_help/1), + gleam@list:sort(_pipe@2, fun gleam@string:compare/2) + end, + Flag_sb = case Flags@1 of + [] -> + gleam@string_builder:new(); + + _ -> + _pipe@3 = Flags@1, + _pipe@4 = gleam@list:intersperse(_pipe@3, <<" "/utf8>>), + _pipe@5 = gleam@string_builder:from_strings(_pipe@4), + _pipe@6 = gleam@string_builder:prepend(_pipe@5, <<" [ "/utf8>>), + gleam@string_builder:append(_pipe@6, <<" ]"/utf8>>) + end, + _pipe@7 = [App_name, wrap_with_space(Cmd_name), <<"[ ARGS ]"/utf8>>], + _pipe@8 = gleam@string_builder:from_strings(_pipe@7), + _pipe@9 = gleam@string_builder:append_builder(_pipe@8, Flag_sb), + _pipe@12 = gleam@string_builder:prepend( + _pipe@9, + <<(begin + _pipe@10 = erlang:element(2, Config), + _pipe@11 = gleam@option:map( + _pipe@10, + fun(Styling) -> + heading_style( + <<"USAGE:"/utf8>>, + erlang:element(2, Styling) + ) + end + ), + gleam@option:unwrap(_pipe@11, <<"USAGE:"/utf8>>) + end)/binary, + "\n\t"/utf8>> + ), + gleam@string_builder:to_string(_pipe@12). + +-spec cmd_help( + list(binary()), + command_node(any()), + config(), + gleam@dict:dict(binary(), glint@flag:flag()) +) -> binary(). +cmd_help(Path, Cmd, Config, Global_flags) -> + Name = begin + _pipe = Path, + _pipe@1 = gleam@list:reverse(_pipe), + gleam@string:join(_pipe@1, <<" "/utf8>>) + end, + Flags = begin + _pipe@2 = gleam@option:map( + erlang:element(2, Cmd), + fun(Contents) -> erlang:element(3, Contents) end + ), + _pipe@3 = gleam@option:lazy_unwrap(_pipe@2, fun gleam@map:new/0), + gleam@map:merge(Global_flags, _pipe@3) + end, + Flags_help_body = <<<<(begin + _pipe@4 = erlang:element(2, Config), + _pipe@5 = gleam@option:map( + _pipe@4, + fun(P) -> + heading_style(<<"FLAGS:"/utf8>>, erlang:element(3, P)) + end + ), + gleam@option:unwrap(_pipe@5, <<"FLAGS:"/utf8>>) + end)/binary, + "\n\t"/utf8>>/binary, + (gleam@string:join( + gleam@list:sort( + [<<"--help\t\t\tPrint help information"/utf8>> | + glint@flag:flags_help(Flags)], + fun gleam@string:compare/2 + ), + <<"\n\t"/utf8>> + ))/binary>>, + Usage = usage_help(Name, Flags, Config), + Description = begin + _pipe@6 = erlang:element(2, Cmd), + _pipe@7 = gleam@option:map( + _pipe@6, + fun(Contents@1) -> erlang:element(4, Contents@1) end + ), + gleam@option:unwrap(_pipe@7, <<""/utf8>>) + end, + Header_items = begin + _pipe@8 = [Name, Description], + _pipe@9 = gleam@list:filter(_pipe@8, fun is_not_empty/1), + gleam@string:join(_pipe@9, <<"\n"/utf8>>) + end, + Subcommands = case subcommands_help(erlang:element(3, Cmd)) of + <<""/utf8>> -> + <<""/utf8>>; + + Subcommands_help_body -> + <<<<(begin + _pipe@10 = erlang:element(2, Config), + _pipe@11 = gleam@option:map( + _pipe@10, + fun(P@1) -> + heading_style( + <<"SUBCOMMANDS:"/utf8>>, + erlang:element(4, P@1) + ) + end + ), + gleam@option:unwrap(_pipe@11, <<"SUBCOMMANDS:"/utf8>>) + end)/binary, + "\n\t"/utf8>>/binary, + Subcommands_help_body/binary>> + end, + _pipe@12 = [Header_items, Usage, Flags_help_body, Subcommands], + _pipe@13 = gleam@list:filter(_pipe@12, fun is_not_empty/1), + gleam@string:join(_pipe@13, <<"\n\n"/utf8>>). + +-spec do_execute( + command_node(JIM), + config(), + gleam@dict:dict(binary(), glint@flag:flag()), + list(binary()), + list(binary()), + boolean(), + list(binary()) +) -> {ok, out(JIM)} | {error, snag:snag()}. +do_execute(Cmd, Config, Global_flags, Args, Flags, Help, Command_path) -> + case Args of + [] when Help -> + _pipe = Command_path, + _pipe@1 = cmd_help(_pipe, Cmd, Config, Global_flags), + _pipe@2 = {help, _pipe@1}, + {ok, _pipe@2}; + + [] -> + execute_root(Cmd, Global_flags, [], Flags); + + [Arg | Rest] -> + case gleam@map:get(erlang:element(3, Cmd), Arg) of + {ok, Cmd@1} -> + do_execute( + Cmd@1, + Config, + Global_flags, + Rest, + Flags, + Help, + [Arg | Command_path] + ); + + _ when Help -> + _pipe@3 = Command_path, + _pipe@4 = cmd_help(_pipe@3, Cmd, Config, Global_flags), + _pipe@5 = {help, _pipe@4}, + {ok, _pipe@5}; + + _ -> + execute_root(Cmd, Global_flags, Args, Flags) + end + end. + +-spec execute(glint(JII), list(binary())) -> {ok, out(JII)} | + {error, snag:snag()}. +execute(Glint, Args) -> + Help_flag = help_flag(), + {Help, Args@2} = case gleam@list:pop(Args, fun(S) -> S =:= Help_flag end) of + {ok, {_, Args@1}} -> + {true, Args@1}; + + _ -> + {false, Args} + end, + {Flags, Args@3} = gleam@list:partition( + Args@2, + fun(_capture) -> gleam@string:starts_with(_capture, <<"--"/utf8>>) end + ), + do_execute( + erlang:element(3, Glint), + erlang:element(2, Glint), + erlang:element(4, Glint), + Args@3, + Flags, + Help, + [] + ). + +-spec run_and_handle(glint(JJA), list(binary()), fun((JJA) -> any())) -> nil. +run_and_handle(Glint, Args, Handle) -> + case execute(Glint, Args) of + {error, Err} -> + _pipe = Err, + _pipe@1 = snag:pretty_print(_pipe), + gleam@io:println(_pipe@1); + + {ok, {help, Help}} -> + gleam@io:println(Help); + + {ok, {out, Out}} -> + Handle(Out), + nil + end. + +-spec run(glint(any()), list(binary())) -> nil. +run(Glint, Args) -> + run_and_handle(Glint, Args, gleam@function:constant(nil)). + +-spec add_command_from_stub(glint(JJN), stub(JJN)) -> glint(JJN). +add_command_from_stub(Glint, Stub) -> + add( + Glint, + erlang:element(2, Stub), + begin + _pipe = command(erlang:element(3, Stub)), + _pipe@1 = flags(_pipe, erlang:element(4, Stub)), + description(_pipe@1, erlang:element(5, Stub)) + end + ). diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache new file mode 100644 index 0000000..90aed37 Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta new file mode 100644 index 0000000..be367e3 Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl new file mode 100644 index 0000000..634b37b --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl @@ -0,0 +1,523 @@ +-module(glint@flag). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([string/0, string_list/0, build/1, constraint/2, description/2, default/2, build_map/1, int/0, int_list/0, float/0, float_list/0, bool/0, flag_type_help/1, flags_help/1, update_flags/2, get_int_value/1, get_int/2, get_ints_value/1, get_ints/2, get_bool_value/1, get_bool/2, get_string_value/1, get_string/2, get_strings_value/1, get_strings/2, get_float_value/1, get_float/2, get_floats_value/1, get_floats/2]). +-export_type([value/0, flag_builder/1, internal/1, flag/0]). + +-type value() :: {b, internal(boolean())} | + {i, internal(integer())} | + {li, internal(list(integer()))} | + {f, internal(float())} | + {lf, internal(list(float()))} | + {s, internal(binary())} | + {ls, internal(list(binary()))}. + +-opaque flag_builder(IRX) :: {flag_builder, + binary(), + fun((binary()) -> {ok, IRX} | {error, snag:snag()}), + fun((internal(IRX)) -> value()), + gleam@option:option(IRX)}. + +-opaque internal(IRY) :: {internal, + gleam@option:option(IRY), + fun((binary()) -> {ok, IRY} | {error, snag:snag()})}. + +-type flag() :: {flag, value(), binary()}. + +-spec new( + fun((internal(ISP)) -> value()), + fun((binary()) -> {ok, ISP} | {error, snag:snag()}) +) -> flag_builder(ISP). +new(Valuer, P) -> + {flag_builder, <<""/utf8>>, P, Valuer, none}. + +-spec string() -> flag_builder(binary()). +string() -> + new(fun(Field@0) -> {s, Field@0} end, fun(S) -> {ok, S} end). + +-spec string_list() -> flag_builder(list(binary())). +string_list() -> + new(fun(Field@0) -> {ls, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + {ok, _pipe@1} end). + +-spec build(flag_builder(any())) -> flag(). +build(Fb) -> + {flag, + (erlang:element(4, Fb))( + {internal, erlang:element(5, Fb), erlang:element(3, Fb)} + ), + erlang:element(2, Fb)}. + +-spec attempt( + {ok, ITG} | {error, ITH}, + fun((ITG) -> {ok, any()} | {error, ITH}) +) -> {ok, ITG} | {error, ITH}. +attempt(Val, F) -> + gleam@result:'try'(Val, fun(A) -> gleam@result:replace(F(A), A) end). + +-spec wrap_with_constraint( + fun((binary()) -> {ok, ITA} | {error, snag:snag()}), + fun((ITA) -> {ok, nil} | {error, snag:snag()}) +) -> fun((binary()) -> {ok, ITA} | {error, snag:snag()}). +wrap_with_constraint(P, Constraint) -> + fun(Input) -> attempt(P(Input), Constraint) end. + +-spec constraint( + flag_builder(ISW), + fun((ISW) -> {ok, nil} | {error, snag:snag()}) +) -> flag_builder(ISW). +constraint(Builder, Constraint) -> + erlang:setelement( + 3, + Builder, + wrap_with_constraint(erlang:element(3, Builder), Constraint) + ). + +-spec description(flag_builder(ITP), binary()) -> flag_builder(ITP). +description(Builder, Description) -> + erlang:setelement(2, Builder, Description). + +-spec default(flag_builder(ITS), ITS) -> flag_builder(ITS). +default(Builder, Default) -> + erlang:setelement(5, Builder, {some, Default}). + +-spec build_map(list({binary(), flag()})) -> gleam@dict:dict(binary(), flag()). +build_map(Flags) -> + gleam@map:from_list(Flags). + +-spec access_type_error(binary()) -> {ok, any()} | {error, snag:snag()}. +access_type_error(Flag_type) -> + snag:error(<<"cannot access flag as "/utf8, Flag_type/binary>>). + +-spec flag_not_provided_error() -> {ok, any()} | {error, snag:snag()}. +flag_not_provided_error() -> + snag:error(<<"no value provided"/utf8>>). + +-spec construct_value(binary(), internal(IUC), fun((internal(IUC)) -> value())) -> {ok, + value()} | + {error, snag:snag()}. +construct_value(Input, Internal, Constructor) -> + gleam@result:map( + (erlang:element(3, Internal))(Input), + fun(Val) -> Constructor(erlang:setelement(2, Internal, {some, Val})) end + ). + +-spec compute_flag(binary(), value()) -> {ok, value()} | {error, snag:snag()}. +compute_flag(Input, Current) -> + _pipe = Input, + _pipe@1 = case Current of + {i, Internal} -> + fun(_capture) -> + construct_value( + _capture, + Internal, + fun(Field@0) -> {i, Field@0} end + ) + end; + + {li, Internal@1} -> + fun(_capture@1) -> + construct_value( + _capture@1, + Internal@1, + fun(Field@0) -> {li, Field@0} end + ) + end; + + {f, Internal@2} -> + fun(_capture@2) -> + construct_value( + _capture@2, + Internal@2, + fun(Field@0) -> {f, Field@0} end + ) + end; + + {lf, Internal@3} -> + fun(_capture@3) -> + construct_value( + _capture@3, + Internal@3, + fun(Field@0) -> {lf, Field@0} end + ) + end; + + {s, Internal@4} -> + fun(_capture@4) -> + construct_value( + _capture@4, + Internal@4, + fun(Field@0) -> {s, Field@0} end + ) + end; + + {ls, Internal@5} -> + fun(_capture@5) -> + construct_value( + _capture@5, + Internal@5, + fun(Field@0) -> {ls, Field@0} end + ) + end; + + {b, Internal@6} -> + fun(_capture@6) -> + construct_value( + _capture@6, + Internal@6, + fun(Field@0) -> {b, Field@0} end + ) + end + end(_pipe), + snag:context(_pipe@1, <<"failed to compute value for flag"/utf8>>). + +-spec layer_invalid_flag(snag:snag(), binary()) -> snag:snag(). +layer_invalid_flag(Err, Flag) -> + snag:layer(Err, <<<<"invalid flag '"/utf8, Flag/binary>>/binary, "'"/utf8>>). + +-spec no_value_flag_err(binary()) -> snag:snag(). +no_value_flag_err(Flag_input) -> + _pipe = (<<<<"flag '"/utf8, Flag_input/binary>>/binary, + "' has no assigned value"/utf8>>), + _pipe@1 = snag:new(_pipe), + layer_invalid_flag(_pipe@1, Flag_input). + +-spec undefined_flag_err(binary()) -> snag:snag(). +undefined_flag_err(Key) -> + _pipe = <<"flag provided but not defined"/utf8>>, + _pipe@1 = snag:new(_pipe), + layer_invalid_flag(_pipe@1, Key). + +-spec cannot_parse(binary(), binary()) -> snag:snag(). +cannot_parse(Value, Kind) -> + _pipe = (<<<<<<"cannot parse value '"/utf8, Value/binary>>/binary, + "' as "/utf8>>/binary, + Kind/binary>>), + snag:new(_pipe). + +-spec int() -> flag_builder(integer()). +int() -> + new(fun(Field@0) -> {i, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@int:parse(_pipe), + gleam@result:replace_error( + _pipe@1, + cannot_parse(Input, <<"int"/utf8>>) + ) end). + +-spec int_list() -> flag_builder(list(integer())). +int_list() -> + new(fun(Field@0) -> {li, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@int:parse/1), + gleam@result:replace_error( + _pipe@2, + cannot_parse(Input, <<"int list"/utf8>>) + ) end). + +-spec float() -> flag_builder(float()). +float() -> + new(fun(Field@0) -> {f, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@float:parse(_pipe), + gleam@result:replace_error( + _pipe@1, + cannot_parse(Input, <<"float"/utf8>>) + ) end). + +-spec float_list() -> flag_builder(list(float())). +float_list() -> + new(fun(Field@0) -> {lf, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@float:parse/1), + gleam@result:replace_error( + _pipe@2, + cannot_parse(Input, <<"float list"/utf8>>) + ) end). + +-spec bool() -> flag_builder(boolean()). +bool() -> + new( + fun(Field@0) -> {b, Field@0} end, + fun(Input) -> case gleam@string:lowercase(Input) of + <<"true"/utf8>> -> + {ok, true}; + + <<"t"/utf8>> -> + {ok, true}; + + <<"false"/utf8>> -> + {ok, false}; + + <<"f"/utf8>> -> + {ok, false}; + + _ -> + {error, cannot_parse(Input, <<"bool"/utf8>>)} + end end + ). + +-spec flag_type_help({binary(), flag()}) -> binary(). +flag_type_help(Flag) -> + {Name, Contents} = Flag, + Kind = case erlang:element(2, Contents) of + {i, _} -> + <<"INT"/utf8>>; + + {b, _} -> + <<"BOOL"/utf8>>; + + {f, _} -> + <<"FLOAT"/utf8>>; + + {lf, _} -> + <<"FLOAT_LIST"/utf8>>; + + {li, _} -> + <<"INT_LIST"/utf8>>; + + {ls, _} -> + <<"STRING_LIST"/utf8>>; + + {s, _} -> + <<"STRING"/utf8>> + end, + <<<<<<<<<<"--"/utf8, Name/binary>>/binary, "="/utf8>>/binary, "<"/utf8>>/binary, + Kind/binary>>/binary, + ">"/utf8>>. + +-spec flag_help({binary(), flag()}) -> binary(). +flag_help(Flag) -> + <<<<(flag_type_help(Flag))/binary, "\t\t"/utf8>>/binary, + (erlang:element(3, (erlang:element(2, Flag))))/binary>>. + +-spec flags_help(gleam@dict:dict(binary(), flag())) -> list(binary()). +flags_help(Flags) -> + _pipe = Flags, + _pipe@1 = gleam@map:to_list(_pipe), + gleam@list:map(_pipe@1, fun flag_help/1). + +-spec access(gleam@dict:dict(binary(), flag()), binary()) -> {ok, flag()} | + {error, snag:snag()}. +access(Flags, Name) -> + _pipe = gleam@map:get(Flags, Name), + gleam@result:replace_error(_pipe, undefined_flag_err(Name)). + +-spec update_flag_value(gleam@dict:dict(binary(), flag()), {binary(), binary()}) -> {ok, + gleam@dict:dict(binary(), flag())} | + {error, snag:snag()}. +update_flag_value(Flags, Data) -> + {Key, Input} = Data, + gleam@result:'try'( + access(Flags, Key), + fun(Contents) -> + gleam@result:map( + begin + _pipe = compute_flag(Input, erlang:element(2, Contents)), + gleam@result:map_error( + _pipe, + fun(_capture) -> layer_invalid_flag(_capture, Key) end + ) + end, + fun(Value) -> + gleam@map:insert( + Flags, + Key, + erlang:setelement(2, Contents, Value) + ) + end + ) + end + ). + +-spec attempt_toggle_flag(gleam@dict:dict(binary(), flag()), binary()) -> {ok, + gleam@dict:dict(binary(), flag())} | + {error, snag:snag()}. +attempt_toggle_flag(Flags, Key) -> + gleam@result:'try'( + access(Flags, Key), + fun(Contents) -> case erlang:element(2, Contents) of + {b, {internal, none, _} = Internal} -> + _pipe = erlang:setelement(2, Internal, {some, true}), + _pipe@1 = {b, _pipe}, + _pipe@2 = (fun(Val) -> + erlang:setelement(2, Contents, Val) + end)(_pipe@1), + _pipe@3 = gleam@map:insert(Flags, Key, _pipe@2), + {ok, _pipe@3}; + + {b, {internal, {some, Val@1}, _} = Internal@1} -> + _pipe@4 = erlang:setelement( + 2, + Internal@1, + {some, not Val@1} + ), + _pipe@5 = {b, _pipe@4}, + _pipe@6 = (fun(Val@2) -> + erlang:setelement(2, Contents, Val@2) + end)(_pipe@5), + _pipe@7 = gleam@map:insert(Flags, Key, _pipe@6), + {ok, _pipe@7}; + + _ -> + {error, no_value_flag_err(Key)} + end end + ). + +-spec update_flags(gleam@dict:dict(binary(), flag()), binary()) -> {ok, + gleam@dict:dict(binary(), flag())} | + {error, snag:snag()}. +update_flags(Flags, Flag_input) -> + Flag_input@1 = gleam@string:drop_left( + Flag_input, + gleam@string:length(<<"--"/utf8>>) + ), + case gleam@string:split_once(Flag_input@1, <<"="/utf8>>) of + {ok, Data} -> + update_flag_value(Flags, Data); + + {error, _} -> + attempt_toggle_flag(Flags, Flag_input@1) + end. + +-spec get_value( + gleam@dict:dict(binary(), flag()), + binary(), + fun((flag()) -> {ok, IUK} | {error, snag:snag()}) +) -> {ok, IUK} | {error, snag:snag()}. +get_value(Flags, Key, Kind) -> + _pipe = access(Flags, Key), + _pipe@1 = gleam@result:'try'(_pipe, Kind), + snag:context( + _pipe@1, + <<<<"failed to retrieve value for flag '"/utf8, Key/binary>>/binary, + "'"/utf8>> + ). + +-spec get_int_value(flag()) -> {ok, integer()} | {error, snag:snag()}. +get_int_value(Flag) -> + case erlang:element(2, Flag) of + {i, {internal, {some, Val}, _}} -> + {ok, Val}; + + {i, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"int"/utf8>>) + end. + +-spec get_int(gleam@dict:dict(binary(), flag()), binary()) -> {ok, integer()} | + {error, snag:snag()}. +get_int(Flags, Name) -> + get_value(Flags, Name, fun get_int_value/1). + +-spec get_ints_value(flag()) -> {ok, list(integer())} | {error, snag:snag()}. +get_ints_value(Flag) -> + case erlang:element(2, Flag) of + {li, {internal, {some, Val}, _}} -> + {ok, Val}; + + {li, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"int list"/utf8>>) + end. + +-spec get_ints(gleam@dict:dict(binary(), flag()), binary()) -> {ok, + list(integer())} | + {error, snag:snag()}. +get_ints(Flags, Name) -> + get_value(Flags, Name, fun get_ints_value/1). + +-spec get_bool_value(flag()) -> {ok, boolean()} | {error, snag:snag()}. +get_bool_value(Flag) -> + case erlang:element(2, Flag) of + {b, {internal, {some, Val}, _}} -> + {ok, Val}; + + {b, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"bool"/utf8>>) + end. + +-spec get_bool(gleam@dict:dict(binary(), flag()), binary()) -> {ok, boolean()} | + {error, snag:snag()}. +get_bool(Flags, Name) -> + get_value(Flags, Name, fun get_bool_value/1). + +-spec get_string_value(flag()) -> {ok, binary()} | {error, snag:snag()}. +get_string_value(Flag) -> + case erlang:element(2, Flag) of + {s, {internal, {some, Val}, _}} -> + {ok, Val}; + + {s, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"string"/utf8>>) + end. + +-spec get_string(gleam@dict:dict(binary(), flag()), binary()) -> {ok, binary()} | + {error, snag:snag()}. +get_string(Flags, Name) -> + get_value(Flags, Name, fun get_string_value/1). + +-spec get_strings_value(flag()) -> {ok, list(binary())} | {error, snag:snag()}. +get_strings_value(Flag) -> + case erlang:element(2, Flag) of + {ls, {internal, {some, Val}, _}} -> + {ok, Val}; + + {ls, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"string list"/utf8>>) + end. + +-spec get_strings(gleam@dict:dict(binary(), flag()), binary()) -> {ok, + list(binary())} | + {error, snag:snag()}. +get_strings(Flags, Name) -> + get_value(Flags, Name, fun get_strings_value/1). + +-spec get_float_value(flag()) -> {ok, float()} | {error, snag:snag()}. +get_float_value(Flag) -> + case erlang:element(2, Flag) of + {f, {internal, {some, Val}, _}} -> + {ok, Val}; + + {f, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"float"/utf8>>) + end. + +-spec get_float(gleam@dict:dict(binary(), flag()), binary()) -> {ok, float()} | + {error, snag:snag()}. +get_float(Flags, Name) -> + get_value(Flags, Name, fun get_float_value/1). + +-spec get_floats_value(flag()) -> {ok, list(float())} | {error, snag:snag()}. +get_floats_value(Flag) -> + case erlang:element(2, Flag) of + {lf, {internal, {some, Val}, _}} -> + {ok, Val}; + + {lf, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"float list"/utf8>>) + end. + +-spec get_floats(gleam@dict:dict(binary(), flag()), binary()) -> {ok, + list(float())} | + {error, snag:snag()}. +get_floats(Flags, Name) -> + get_value(Flags, Name, fun get_floats_value/1). diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache new file mode 100644 index 0000000..6881dda Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta new file mode 100644 index 0000000..355567d Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl new file mode 100644 index 0000000..52eb319 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl @@ -0,0 +1,68 @@ +-module(glint@flag@constraint). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([one_of/1, none_of/1, each/1]). + +-spec one_of(list(IQG)) -> fun((IQG) -> {ok, nil} | {error, snag:snag()}). +one_of(Allowed) -> + Allowed_set = gleam@set:from_list(Allowed), + fun(Val) -> case gleam@set:contains(Allowed_set, Val) of + true -> + {ok, nil}; + + false -> + snag:error( + <<<<<<"invalid value '"/utf8, + (gleam@string:inspect(Val))/binary>>/binary, + "', must be one of: ["/utf8>>/binary, + ((<<(begin + _pipe = Allowed, + _pipe@1 = gleam@list:map( + _pipe, + fun(A) -> + <<<<"'"/utf8, + (gleam@string:inspect(A))/binary>>/binary, + "'"/utf8>> + end + ), + gleam@string:join(_pipe@1, <<", "/utf8>>) + end)/binary, + "]"/utf8>>))/binary>> + ) + end end. + +-spec none_of(list(IQJ)) -> fun((IQJ) -> {ok, nil} | {error, snag:snag()}). +none_of(Disallowed) -> + Disallowed_set = gleam@set:from_list(Disallowed), + fun(Val) -> case gleam@set:contains(Disallowed_set, Val) of + false -> + {ok, nil}; + + true -> + snag:error( + <<<<<<"invalid value '"/utf8, + (gleam@string:inspect(Val))/binary>>/binary, + "', must not be one of: ["/utf8>>/binary, + (((<<(begin + _pipe = Disallowed, + _pipe@1 = gleam@list:map( + _pipe, + fun(A) -> + <<<<"'"/utf8, + (gleam@string:inspect(A))/binary>>/binary, + "'"/utf8>> + end + ), + gleam@string:join(_pipe@1, <<", "/utf8>>) + end)/binary, + "]"/utf8>>)))/binary>> + ) + end end. + +-spec each(fun((IQM) -> {ok, nil} | {error, snag:snag()})) -> fun((list(IQM)) -> {ok, + nil} | + {error, snag:snag()}). +each(Constraint) -> + fun(L) -> _pipe = L, + _pipe@1 = gleam@list:try_map(_pipe, Constraint), + gleam@result:replace(_pipe@1, nil) end. diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint.app b/aoc2023/build/dev/erlang/glint/ebin/glint.app new file mode 100644 index 0000000..41fba79 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/ebin/glint.app @@ -0,0 +1,10 @@ +{application, glint, [ + {vsn, "0.13.0"}, + {applications, [gleam_community_ansi, + gleam_community_colour, + gleam_stdlib, + snag]}, + {description, "Gleam command line argument parsing with basic flag support."}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint.beam b/aoc2023/build/dev/erlang/glint/ebin/glint.beam new file mode 100644 index 0000000..39b9ce7 Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/ebin/glint.beam differ diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam b/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam new file mode 100644 index 0000000..14b7dec Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam differ diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam b/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam new file mode 100644 index 0000000..1d36d10 Binary files /dev/null and b/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam differ diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl new file mode 100644 index 0000000..645cb12 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl @@ -0,0 +1 @@ +-record(flag, {value :: glint@flag:value(), description :: binary()}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl new file mode 100644 index 0000000..b5e21a2 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl @@ -0,0 +1,6 @@ +-record(flag_builder, { + desc :: binary(), + parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}), + value :: fun((glint@flag:internal(any())) -> glint@flag:value()), + default :: gleam@option:option(any()) +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl new file mode 100644 index 0000000..281bbd0 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl @@ -0,0 +1,4 @@ +-record(internal, { + value :: gleam@option:option(any()), + parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}) +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl new file mode 100644 index 0000000..2761365 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl @@ -0,0 +1,5 @@ +-record(command, { + do :: fun((glint:command_input()) -> any()), + flags :: gleam@dict:dict(binary(), glint@flag:flag()), + description :: binary() +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl b/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl new file mode 100644 index 0000000..e0e1a81 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl @@ -0,0 +1,4 @@ +-record(command_input, { + args :: list(binary()), + flags :: gleam@dict:dict(binary(), glint@flag:flag()) +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl new file mode 100644 index 0000000..70cf645 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl @@ -0,0 +1,4 @@ +-record(config, { + pretty_help :: gleam@option:option(glint:pretty_help()), + name :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl new file mode 100644 index 0000000..f14c34c --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl @@ -0,0 +1,5 @@ +-record(glint, { + config :: glint:config(), + cmd :: glint:command_node(any()), + global_flags :: gleam@dict:dict(binary(), glint@flag:flag()) +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl b/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl new file mode 100644 index 0000000..79bd887 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl @@ -0,0 +1,5 @@ +-record(pretty_help, { + usage :: gleam_community@colour:colour(), + flags :: gleam_community@colour:colour(), + subcommands :: gleam_community@colour:colour() +}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl new file mode 100644 index 0000000..5aa5d83 --- /dev/null +++ b/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl @@ -0,0 +1,6 @@ +-record(stub, { + path :: list(binary()), + run :: fun((glint:command_input()) -> any()), + flags :: list({binary(), glint@flag:flag()}), + description :: binary() +}). diff --git a/aoc2023/build/dev/erlang/pqueue/LICENSE b/aoc2023/build/dev/erlang/pqueue/LICENSE new file mode 100644 index 0000000..5697803 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2011-2023 Michael Truog + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/aoc2023/build/dev/erlang/pqueue/README.markdown b/aoc2023/build/dev/erlang/pqueue/README.markdown new file mode 100644 index 0000000..77aaf1c --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/README.markdown @@ -0,0 +1,31 @@ +Erlang Priority Queue Implementation +==================================== + +The priority queue implementations implement a subset of the stdlib Erlang queue interface as seen in the implementation used by both [Riak and RabbitMQ](https://github.com/basho/riak_core/blob/master/src/riak_core_priority_queue.erl). + +The implementations: + +* `priority_queue` (fastest for any priorities when only using a single priority at a time) +* `pqueue` (fastest for 41 priorities, -20 (high) to 20 (low), when using 2 or more priorities at the same time) +* `pqueue2` (slower heap implementation) +* `pqueue3` (faster than `pqueue2` and `priority_queue` when using 64 or more priorities at the same time) +* `pqueue4` (slightly slower than `pqueue` but fastest for allowing 257 priorities, -128 (high) to 128 (low), i.e., fastest when using 42 or more priorities at the same time) + +[The latest results are here](http://okeuday.livejournal.com/19539.html), with [the benchmark here](http://github.com/okeuday/erlbench). + +Author +------ + +Michael Truog (mjtruog at protonmail dot com) + +Thanks +------ + +* Jesper Louis andersen (PropEr integration and testing) +* Ulf Wiger (suggestions and insight) + +License +------- + +MIT License + diff --git a/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag b/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag new file mode 100644 index 0000000..fe3f9f8 Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag differ diff --git a/aoc2023/build/dev/erlang/pqueue/doc/edoc-info b/aoc2023/build/dev/erlang/pqueue/doc/edoc-info new file mode 100644 index 0000000..5e5a8d3 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/edoc-info @@ -0,0 +1,3 @@ +%% encoding: UTF-8 +{application,pqueue}. +{modules,[pqueue,pqueue2,pqueue3,pqueue4]}. diff --git a/aoc2023/build/dev/erlang/pqueue/doc/erlang.png b/aoc2023/build/dev/erlang/pqueue/doc/erlang.png new file mode 100644 index 0000000..987a618 Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/doc/erlang.png differ diff --git a/aoc2023/build/dev/erlang/pqueue/doc/index.html b/aoc2023/build/dev/erlang/pqueue/doc/index.html new file mode 100644 index 0000000..d55b5e6 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/index.html @@ -0,0 +1,17 @@ + + + +The pqueue application + + + + + + +<h2>This page uses frames</h2> +<p>Your browser does not accept frames. +<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead. +</p> + + + \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html b/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html new file mode 100644 index 0000000..5a87cc4 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html @@ -0,0 +1,15 @@ + + + +The pqueue application + + + +

Modules

+ + + + +
pqueue
pqueue2
pqueue3
pqueue4
+ + \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html b/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html new file mode 100644 index 0000000..e2f8906 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html @@ -0,0 +1,16 @@ + + + + +The pqueue application + + + + +

The pqueue application

+ +
+ +

Generated by EDoc

+ + diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html new file mode 100644 index 0000000..40b05ac --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html @@ -0,0 +1,166 @@ + + + + +Module pqueue + + + + +
+ +

Module pqueue

+ +

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-20 (high) to 20 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:34 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-20 (high) to 20 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. This implementation was created to + avoid the slowness within the priority queue used by both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue()

+

pqueue() = {integer(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}} | {empty, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}}

+ + +

Function Index

+ + + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
join/2 +

Join two priority queues.

+ O(N).
len/1 +

Determine the length of a priority queue.

+ O(N).
new/0 +

Create a new priority queue.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
test/0 +

Regression test.

.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
+ +

Function Details

+ +

in/2

+
+

in(X::term(), Q::pqueue()) -> pqueue()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(X::term(), P::integer(), Q::pqueue()) -> pqueue()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(X1::pqueue()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

join/2

+
+

join(X1::pqueue(), X2::pqueue()) -> pqueue()

+

+

Join two priority queues.

+ O(N)

+ +

len/1

+
+

len(X1::pqueue()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(N)

+ +

new/0

+
+

new() -> pqueue()

+

+

Create a new priority queue.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue()) -> {{value, term(), integer()}, pqueue()} | {empty, pqueue()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

test/0

+
+

test() -> any()

+

+

Regression test.

+

+ +

to_list/1

+
+

to_list(X1::pqueue()) -> [term()]

+

+

Convert the priority queue to a list.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html new file mode 100644 index 0000000..2942b84 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html @@ -0,0 +1,143 @@ + + + + +Module pqueue2 + + + + +
+ +

Module pqueue2

+ +

Skew Heap Priority Queue.

+ Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority + queue implementation. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:32 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Skew Heap Priority Queue.

+ Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority + queue implementation. Unfortunately, testing has shown this solution to + be more than 2 times slower than pqueue. +

Data Types

+ +

pqueue2()

+

pqueue2() = empty | {integer(), pqueue2(), pqueue2(), element, term()} | {integer(), pqueue2(), pqueue2(), queue, queue:queue()}

+ + +

Function Index

+ + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

.
in/3 +

Append an item to the tail of a specific priority queue.

.
is_empty/1 +

Check if the priority queue is empty.

.
is_queue/1 +

Check if the priority queue type is as expected.

.
len/1 +

Determine the length of a priority queue.

.
new/0 +

Create a new priority queue.

.
out/1 +

Take an item from the head of the priority queue.

.
out/2 +

Take an item of a specific priority from the head of the queue.

.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
test/0 +

Regression test.

.
to_list/1 +

Convert the priority queue to a list.

.
+ +

Function Details

+ +

in/2

+
+

in(Value::term(), H::pqueue2()) -> pqueue2()

+

+

Append an item to the tail of the 0 priority queue.

+

+ +

in/3

+
+

in(Value::term(), P::integer(), H::pqueue2()) -> pqueue2()

+

+

Append an item to the tail of a specific priority queue.

+

+ +

is_empty/1

+
+

is_empty(X1::pqueue2()) -> true | false

+

+

Check if the priority queue is empty.

+

+ +

is_queue/1

+
+

is_queue(X1::pqueue2()) -> true | false

+

+

Check if the priority queue type is as expected.

+

+ +

len/1

+
+

len(H::pqueue2()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+

+ +

new/0

+
+

new() -> pqueue2()

+

+

Create a new priority queue.

+

+ +

out/1

+
+

out(X1::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item from the head of the priority queue.

+

+ +

out/2

+
+

out(P::integer(), H::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item of a specific priority from the head of the queue.

+

+ +

pout/1

+
+

pout(X1::pqueue2()) -> {{value, term(), integer()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value.

+ +

test/0

+
+

test() -> any()

+

+

Regression test.

+

+ +

to_list/1

+
+

to_list(H::pqueue2()) -> [term()]

+

+

Convert the priority queue to a list.

+

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html new file mode 100644 index 0000000..35f1a7b --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html @@ -0,0 +1,162 @@ + + + + +Module pqueue3 + + + + +
+ +

Module pqueue3

+ +

A Large Priority Queue.

+ This priority queue implementation depends on layered tuples, so that tuple + access times can be exploited for quick in/out priority queue operations + when using 64 or more total priorities. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:32 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

A Large Priority Queue.

+ This priority queue implementation depends on layered tuples, so that tuple + access times can be exploited for quick in/out priority queue operations + when using 64 or more total priorities. This implementation was created + to avoid the slowness within the priority queue used by + both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue3()

+

pqueue3() = {integer(), integer(), empty | integer(), tuple()}

+ + +

pqueue3_empty()

+

pqueue3_empty() = {integer(), integer(), empty, tuple()}

+ + +

Function Index

+ + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
len/1 +

Determine the length of a priority queue.

+ O(N).
new/0 +

Create a new priority queue.

+ O(1).
new/1 +

Create a new priority queue with customization options.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
+ +

Function Details

+ +

in/2

+
+

in(Value::term(), Q::pqueue3()) -> pqueue3()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(Value::term(), P::integer(), X3::pqueue3()) -> pqueue3()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(Q::pqueue3()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue3()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

len/1

+
+

len(Q::pqueue3()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(N)

+ +

new/0

+
+

new() -> pqueue3_empty()

+

+

Create a new priority queue.

+ O(1)

+ +

new/1

+
+

new(Options::[{atom(), term()}]) -> pqueue3()

+

+

Create a new priority queue with customization options.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue3()) -> {{value, term(), integer()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

to_list/1

+
+

to_list(Q::pqueue3()) -> [term()]

+

+

Convert the priority queue to a list.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html new file mode 100644 index 0000000..edcdb6e --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html @@ -0,0 +1,205 @@ + + + + +Module pqueue4 + + + + +
+ +

Module pqueue4

+ +

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-128 (high) to 128 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:34 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-128 (high) to 128 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. This implementation was created to + avoid the slowness within the priority queue used by both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue4()

+

pqueue4() = pqueue4(any())

+ + +

pqueue4()

+

pqueue4(T) = {priority() | empty, non_neg_integer(), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, queue:queue(T), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}

+ + +

priority()

+

priority() = -128..128

+ + +

Function Index

+ + + + + + + + + + + + + + + +
filter/2 +

Filter the priority queue.

+ O(N).
filter/3 +

Filter a specific priority within the priority queue.

+ O(N).
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
len/1 +

Determine the length of a priority queue.

+ O(1).
new/0 +

Create a new priority queue.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
remove_unique/2 +

Remove a unique value from the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/2.
remove_unique/3 +

Remove a unique value in a specific priority within the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/3.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
to_plist/1 +

Convert the priority queue to a list with priorities.

+ O(N).
+ +

Function Details

+ +

filter/2

+
+

filter(F::fun((any()) -> boolean()), Q::pqueue4()) -> pqueue4()

+

+

Filter the priority queue.

+ O(N)

+ +

filter/3

+
+

filter(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> pqueue4()

+

+

Filter a specific priority within the priority queue.

+ O(N)

+ +

in/2

+
+

in(X::any(), Q::pqueue4()) -> pqueue4()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(X::any(), P::integer(), Q::pqueue4()) -> pqueue4()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(X1::pqueue4()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue4()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

len/1

+
+

len(X1::pqueue4()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(1)

+ +

new/0

+
+

new() -> pqueue4()

+

+

Create a new priority queue.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue4()) -> {{value, any(), integer()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

remove_unique/2

+
+

remove_unique(F::fun((any()) -> boolean()), Q::pqueue4()) -> {boolean(), pqueue4()}

+

+

Remove a unique value from the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/2

+ +

remove_unique/3

+
+

remove_unique(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> {boolean(), pqueue4()}

+

+

Remove a unique value in a specific priority within the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/3

+ +

to_list/1

+
+

to_list(Q::pqueue4()) -> list()

+

+

Convert the priority queue to a list.

+ O(N)

+ +

to_plist/1

+
+

to_plist(Q::pqueue4()) -> [{priority(), list()}]

+

+

Convert the priority queue to a list with priorities.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css b/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css new file mode 100644 index 0000000..ab170c0 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css @@ -0,0 +1,55 @@ +/* standard EDoc style sheet */ +body { + font-family: Verdana, Arial, Helvetica, sans-serif; + margin-left: .25in; + margin-right: .2in; + margin-top: 0.2in; + margin-bottom: 0.2in; + color: #000000; + background-color: #ffffff; +} +h1,h2 { + margin-left: -0.2in; +} +div.navbar { + background-color: #add8e6; + padding: 0.2em; +} +h2.indextitle { + padding: 0.4em; + background-color: #add8e6; +} +h3.function,h3.typedecl { + background-color: #add8e6; + padding-left: 1em; +} +div.spec { + margin-left: 2em; + background-color: #eeeeee; +} +a.module { + text-decoration:none +} +a.module:hover { + background-color: #eeeeee; +} +ul.definitions { + list-style-type: none; +} +ul.index { + list-style-type: none; + background-color: #eeeeee; +} + +/* + * Minor style tweaks + */ +ul { + list-style-type: square; +} +table { + border-collapse: collapse; +} +td { + padding: 3 +} diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app new file mode 100644 index 0000000..974098f --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app @@ -0,0 +1,6 @@ +{application,pqueue, + [{description,"Priority Queue Data Structures"}, + {vsn,"2.0.7"}, + {modules,[pqueue,pqueue2,pqueue3,pqueue4]}, + {registered,[]}, + {applications,[stdlib,kernel]}]}. diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam new file mode 100644 index 0000000..bf379ea Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam new file mode 100644 index 0000000..2913682 Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam new file mode 100644 index 0000000..1d55303 Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam new file mode 100644 index 0000000..13f75f5 Binary files /dev/null and b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam differ diff --git a/aoc2023/build/dev/erlang/pqueue/rebar.config b/aoc2023/build/dev/erlang/pqueue/rebar.config new file mode 100644 index 0000000..f8022f0 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/rebar.config @@ -0,0 +1,14 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: + +{erl_opts, + [{platform_define, "^R16", 'ERLANG_OTP_VERSION_16'}, + {platform_define, "^17\.", 'ERLANG_OTP_VERSION_17'}, + {platform_define, "^18\.", 'ERLANG_OTP_VERSION_18'}, + {platform_define, "^19\.", 'ERLANG_OTP_VERSION_19'}, + {platform_define, "^20\.", 'ERLANG_OTP_VERSION_20'}, + warn_export_vars, + warn_unused_import, + %warn_missing_spec, + warnings_as_errors]}. +{edoc_opts, [{preprocess, true}]}. diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src b/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src new file mode 100644 index 0000000..b153ad1 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src @@ -0,0 +1,10 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: + +{application, pqueue, + [{description, "Priority Queue Data Structures"}, + {vsn, "2.0.7"}, + {modules, [pqueue, pqueue2, pqueue3, pqueue4]}, + {registered, []}, + {applications, [stdlib, kernel]}]}. + diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl new file mode 100644 index 0000000..2c57fa2 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl @@ -0,0 +1,2246 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Static Priority Queue.== +%%% This priority queue implementation depends on a static number of priorities +%%% (-20 (high) to 20 (low)) so that tuple access times can be exploited for +%%% quick in/out priority queue operations. This implementation was created to +%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + join/2, % O(N) typically (?) + len/1, % O(N) + new/0, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + to_list/1, % O(N) + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue() :: + {integer(), + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}} | + {'empty', + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. +-else. +-type pqueue() :: + {integer(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + queue:queue(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}} | + {'empty', + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + queue:queue(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}}. +-endif. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue()) -> pqueue(). + +in(X, Q) -> + in(X, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue()) -> pqueue(). + +in(_, P, _) + when P < -20; P > 20 -> + erlang:exit(badarg); +in(X, P, {empty, _, _, _, _, _, _, _} = Q) -> + in_higher(P, Q, X); +in(X, P, {Pc, _, _, _, _, _, _, _} = Q) + when P < Pc -> + in_higher(P, Q, X); +in(X, P, Q) -> + in_lower(P, Q, X). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue()) -> 'true' | 'false'. + +is_empty({empty, _, _, _, _, _, _, _}) -> + true; +is_empty({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:is_empty(Qn20) and queue:is_empty(Qn19) and queue:is_empty(Qn18) and + queue:is_empty(Qn17) and queue:is_empty(Qn16) and queue:is_empty(Qn15) and + queue:is_empty(Qn14) and + queue:is_empty(Qn13) and queue:is_empty(Qn12) and queue:is_empty(Qn11) and + queue:is_empty(Qn10) and queue:is_empty(Qn9) and queue:is_empty(Qn8) and + queue:is_empty(Qn7) and + queue:is_empty(Qn6) and queue:is_empty(Qn5) and queue:is_empty(Qn4) and + queue:is_empty(Qn3) and queue:is_empty(Qn2) and queue:is_empty(Qn1) and + queue:is_empty(Q0) and + queue:is_empty(Qp1) and queue:is_empty(Qp2) and queue:is_empty(Qp3) and + queue:is_empty(Qp4) and queue:is_empty(Qp5) and queue:is_empty(Qp6) and + queue:is_empty(Qp7) and queue:is_empty(Qp8) and queue:is_empty(Qp9) and + queue:is_empty(Qp10) and queue:is_empty(Qp11) and queue:is_empty(Qp12) and + queue:is_empty(Qp13) and + queue:is_empty(Qp14) and queue:is_empty(Qp15) and queue:is_empty(Qp16) and + queue:is_empty(Qp17) and queue:is_empty(Qp18) and queue:is_empty(Qp19) and + queue:is_empty(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue()) -> 'true' | 'false'. + +is_queue({Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) + when tuple_size(Qsn14) == 7, tuple_size(Qsn7) == 7, tuple_size(Qsn1) == 6, + tuple_size(Qsp14) == 7, tuple_size(Qsp7) == 7, tuple_size(Qsp1) == 6 -> + (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Join two priority queues.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec join(pqueue(), pqueue()) -> pqueue(). + +join({P1c, + {Q1_n20, Q1_n19, Q1_n18, Q1_n17, Q1_n16, Q1_n15, Q1_n14}, + {Q1_n13, Q1_n12, Q1_n11, Q1_n10, Q1_n9, Q1_n8, Q1_n7}, + {Q1_n6, Q1_n5, Q1_n4, Q1_n3, Q1_n2, Q1_n1}, + Q1_0, + {Q1_p1, Q1_p2, Q1_p3, Q1_p4, Q1_p5, Q1_p6}, + {Q1_p7, Q1_p8, Q1_p9, Q1_p10, Q1_p11, Q1_p12, Q1_p13}, + {Q1_p14, Q1_p15, Q1_p16, Q1_p17, Q1_p18, Q1_p19, Q1_p20}}, + {P2c, + {Q2_n20, Q2_n19, Q2_n18, Q2_n17, Q2_n16, Q2_n15, Q2_n14}, + {Q2_n13, Q2_n12, Q2_n11, Q2_n10, Q2_n9, Q2_n8, Q2_n7}, + {Q2_n6, Q2_n5, Q2_n4, Q2_n3, Q2_n2, Q2_n1}, + Q2_0, + {Q2_p1, Q2_p2, Q2_p3, Q2_p4, Q2_p5, Q2_p6}, + {Q2_p7, Q2_p8, Q2_p9, Q2_p10, Q2_p11, Q2_p12, Q2_p13}, + {Q2_p14, Q2_p15, Q2_p16, Q2_p17, Q2_p18, Q2_p19, Q2_p20}}) -> + {erlang:min(P1c, P2c), + {queue:join(Q1_n20, Q2_n20), queue:join(Q1_n19, Q2_n19), + queue:join(Q1_n18, Q2_n18), queue:join(Q1_n17, Q2_n17), + queue:join(Q1_n16, Q2_n16), queue:join(Q1_n15, Q2_n15), + queue:join(Q1_n14, Q2_n14)}, + {queue:join(Q1_n13, Q2_n13), queue:join(Q1_n12, Q2_n12), + queue:join(Q1_n11, Q2_n11), queue:join(Q1_n10, Q2_n10), + queue:join(Q1_n9, Q2_n9), queue:join(Q1_n8, Q2_n8), + queue:join(Q1_n7, Q2_n7)}, + {queue:join(Q1_n6, Q2_n6), queue:join(Q1_n5, Q2_n5), + queue:join(Q1_n4, Q2_n4), queue:join(Q1_n3, Q2_n3), + queue:join(Q1_n2, Q2_n2), queue:join(Q1_n1, Q2_n1)}, + queue:join(Q1_0, Q2_0), + {queue:join(Q1_p1, Q2_p1), queue:join(Q1_p2, Q2_p2), + queue:join(Q1_p3, Q2_p3), queue:join(Q1_p4, Q2_p4), + queue:join(Q1_p5, Q2_p5), queue:join(Q1_p6, Q2_p6)}, + {queue:join(Q1_p7, Q2_p7), queue:join(Q1_p8, Q2_p8), + queue:join(Q1_p9, Q2_p9), queue:join(Q1_p10, Q2_p10), + queue:join(Q1_p11, Q2_p11), queue:join(Q1_p12, Q2_p12), + queue:join(Q1_p13, Q2_p13)}, + {queue:join(Q1_p14, Q2_p14), queue:join(Q1_p15, Q2_p15), + queue:join(Q1_p16, Q2_p16), queue:join(Q1_p17, Q2_p17), + queue:join(Q1_p18, Q2_p18), queue:join(Q1_p19, Q2_p19), + queue:join(Q1_p20, Q2_p20)}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue()) -> non_neg_integer(). + +len({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:len(Qn20) + queue:len(Qn19) + queue:len(Qn18) + queue:len(Qn17) + + queue:len(Qn16) + queue:len(Qn15) + queue:len(Qn14) + + queue:len(Qn13) + queue:len(Qn12) + queue:len(Qn11) + queue:len(Qn10) + + queue:len(Qn9) + queue:len(Qn8) + queue:len(Qn7) + + queue:len(Qn6) + queue:len(Qn5) + queue:len(Qn4) + queue:len(Qn3) + + queue:len(Qn2) + queue:len(Qn1) + + queue:len(Q0) + + queue:len(Qp1) + queue:len(Qp2) + queue:len(Qp3) + queue:len(Qp4) + + queue:len(Qp5) + queue:len(Qp6) + + queue:len(Qp7) + queue:len(Qp8) + queue:len(Qp9) + queue:len(Qp10) + + queue:len(Qp11) + queue:len(Qp12) + queue:len(Qp13) + + queue:len(Qp14) + queue:len(Qp15) + queue:len(Qp16) + queue:len(Qp17) + + queue:len(Qp18) + queue:len(Qp19) + queue:len(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue(). + +new() -> + {empty, % current priority + erlang:make_tuple(7, queue:new()), % priority [-20..-14] + erlang:make_tuple(7, queue:new()), % priority [-13.. -7] + erlang:make_tuple(6, queue:new()), % priority [ -6.. -1] + queue:new(), % priority 0 (default) + erlang:make_tuple(6, queue:new()), % priority [ 1.. 6] + erlang:make_tuple(7, queue:new()), % priority [ 7.. 13] + erlang:make_tuple(7, queue:new())}. % priority [ 14.. 20] + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue()) -> + {{'value', term()}, pqueue()} | {'empty', pqueue()}. + +out({empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out({Pc, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q, nopriority). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue()) -> + {{'value', term()}, pqueue()} | {'empty', pqueue()}. + +out(P, _) + when P < -20; P > 20 -> + erlang:exit(badarg); +out(_, {empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out(P, Q) -> + out_specific(P, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue()) -> + {{'value', term(), integer()}, pqueue()} | {'empty', pqueue()}. + +pout({empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +pout({Pc, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q, priority). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue()) -> list(term()). + +to_list({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:to_list(Qn20) ++ queue:to_list(Qn19) ++ queue:to_list(Qn18) ++ + queue:to_list(Qn17) ++ queue:to_list(Qn16) ++ queue:to_list(Qn15) ++ + queue:to_list(Qn14) ++ + queue:to_list(Qn13) ++ queue:to_list(Qn12) ++ queue:to_list(Qn11) ++ + queue:to_list(Qn10) ++ queue:to_list(Qn9) ++ queue:to_list(Qn8) ++ + queue:to_list(Qn7) ++ + queue:to_list(Qn6) ++ queue:to_list(Qn5) ++ queue:to_list(Qn4) ++ + queue:to_list(Qn3) ++ queue:to_list(Qn2) ++ queue:to_list(Qn1) ++ + queue:to_list(Q0) ++ + queue:to_list(Qp1) ++ queue:to_list(Qp2) ++ queue:to_list(Qp3) ++ + queue:to_list(Qp4) ++ queue:to_list(Qp5) ++ queue:to_list(Qp6) ++ + queue:to_list(Qp7) ++ queue:to_list(Qp8) ++ queue:to_list(Qp9) ++ + queue:to_list(Qp10) ++ queue:to_list(Qp11) ++ queue:to_list(Qp12) ++ + queue:to_list(Qp13) ++ + queue:to_list(Qp14) ++ queue:to_list(Qp15) ++ queue:to_list(Qp16) ++ + queue:to_list(Qp17) ++ queue:to_list(Qp18) ++ queue:to_list(Qp19) ++ + queue:to_list(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue:new(), + true = pqueue:is_queue(Q0), + Q1 = pqueue:in(20, 20, Q0), + Q2 = pqueue:in(19, 19, Q1), + Q3 = pqueue:in(18, 18, Q2), + Q4 = pqueue:in(17, 17, Q3), + Q5 = pqueue:in(16, 16, Q4), + Q6 = pqueue:in(15, 15, Q5), + Q7 = pqueue:in(14, 14, Q6), + Q8 = pqueue:in(13, 13, Q7), + Q9 = pqueue:in(12, 12, Q8), + Q10 = pqueue:in(11, 11, Q9), + Q11 = pqueue:in(10, 10, Q10), + Q12 = pqueue:in(9, 9, Q11), + Q13 = pqueue:in(8, 8, Q12), + Q14 = pqueue:in(7, 7, Q13), + Q15 = pqueue:in(6, 6, Q14), + Q16 = pqueue:in(5, 5, Q15), + Q17 = pqueue:in(4, 4, Q16), + Q18 = pqueue:in(3, 3, Q17), + Q19 = pqueue:in(2, 2, Q18), + Q20 = pqueue:in(1, 1, Q19), + Q21 = pqueue:in(0, 0, Q20), + Q22 = pqueue:in(-1, -1, Q21), + Q23 = pqueue:in(-2, -2, Q22), + Q24 = pqueue:in(-3, -3, Q23), + Q25 = pqueue:in(-4, -4, Q24), + Q26 = pqueue:in(-5, -5, Q25), + Q27 = pqueue:in(-6, -6, Q26), + Q28 = pqueue:in(-7, -7, Q27), + Q29 = pqueue:in(-8, -8, Q28), + Q30 = pqueue:in(-9, -9, Q29), + Q31 = pqueue:in(-10, -10, Q30), + Q32 = pqueue:in(-11, -11, Q31), + Q33 = pqueue:in(-12, -12, Q32), + Q34 = pqueue:in(-13, -13, Q33), + Q35 = pqueue:in(-14, -14, Q34), + Q36 = pqueue:in(-15, -15, Q35), + Q37 = pqueue:in(-16, -16, Q36), + Q38 = pqueue:in(-17, -17, Q37), + Q39 = pqueue:in(-18, -18, Q38), + Q40 = pqueue:in(-19, -19, Q39), + Q41 = pqueue:in(-20, -20, Q40), + Q42 = pqueue:in(-20, -20, Q41), + Q43 = pqueue:in(-19, -19, Q42), + Q44 = pqueue:in(-18, -18, Q43), + Q45 = pqueue:in(-17, -17, Q44), + Q46 = pqueue:in(-16, -16, Q45), + Q47 = pqueue:in(-15, -15, Q46), + Q48 = pqueue:in(-14, -14, Q47), + Q49 = pqueue:in(-13, -13, Q48), + Q50 = pqueue:in(-12, -12, Q49), + Q51 = pqueue:in(-11, -11, Q50), + Q52 = pqueue:in(-10, -10, Q51), + Q53 = pqueue:in(-9, -9, Q52), + Q54 = pqueue:in(-8, -8, Q53), + Q55 = pqueue:in(-7, -7, Q54), + Q56 = pqueue:in(-6, -6, Q55), + Q57 = pqueue:in(-5, -5, Q56), + Q58 = pqueue:in(-4, -4, Q57), + Q59 = pqueue:in(-3, -3, Q58), + Q60 = pqueue:in(-2, -2, Q59), + Q61 = pqueue:in(-1, -1, Q60), + Q62 = pqueue:in(0, 0, Q61), + Q63 = pqueue:in(1, 1, Q62), + Q64 = pqueue:in(2, 2, Q63), + Q65 = pqueue:in(3, 3, Q64), + Q66 = pqueue:in(4, 4, Q65), + Q67 = pqueue:in(5, 5, Q66), + Q68 = pqueue:in(6, 6, Q67), + Q69 = pqueue:in(7, 7, Q68), + Q70 = pqueue:in(8, 8, Q69), + Q71 = pqueue:in(9, 9, Q70), + Q72 = pqueue:in(10, 10, Q71), + Q73 = pqueue:in(11, 11, Q72), + Q74 = pqueue:in(12, 12, Q73), + Q75 = pqueue:in(13, 13, Q74), + Q76 = pqueue:in(14, 14, Q75), + Q77 = pqueue:in(15, 15, Q76), + Q78 = pqueue:in(16, 16, Q77), + Q79 = pqueue:in(17, 17, Q78), + Q80 = pqueue:in(18, 18, Q79), + Q81 = pqueue:in(19, 19, Q80), + Q82 = pqueue:in(20, 20, Q81), + true = pqueue:is_queue(Q82), + 82 = pqueue:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue:to_list(Q82), + {{value, -20}, Q83} = pqueue:out(Q82), + {{value, -20}, Q84} = pqueue:out(Q83), + {{value, -19}, Q85} = pqueue:out(Q84), + {{value, -19}, Q86} = pqueue:out(Q85), + {{value, -18}, Q87} = pqueue:out(Q86), + {{value, -18}, Q88} = pqueue:out(Q87), + {{value, 0}, Q89} = pqueue:out(0, Q88), + {{value, 0}, Q90} = pqueue:out(0, Q89), + {empty, _} = pqueue:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue:pout(Q90), + {{value, -17, -17}, Q92} = pqueue:pout(Q91), + {{value, -16, -16}, Q93} = pqueue:pout(Q92), + {{value, -16, -16}, Q94} = pqueue:pout(Q93), + {{value, -15, -15}, Q95} = pqueue:pout(Q94), + {{value, -15, -15}, Q96} = pqueue:pout(Q95), + {{value, -14, -14}, Q97} = pqueue:pout(Q96), + {{value, -14, -14}, Q98} = pqueue:pout(Q97), + {{value, -13, -13}, Q99} = pqueue:pout(Q98), + {{value, -13, -13}, Q100} = pqueue:pout(Q99), + {{value, -12, -12}, Q101} = pqueue:pout(Q100), + {{value, -12, -12}, Q102} = pqueue:pout(Q101), + {{value, -11, -11}, Q103} = pqueue:pout(Q102), + {{value, -11, -11}, Q104} = pqueue:pout(Q103), + {{value, -10, -10}, Q105} = pqueue:pout(Q104), + {{value, -10, -10}, Q106} = pqueue:pout(Q105), + {{value, -9, -9}, Q107} = pqueue:pout(Q106), + {{value, -9, -9}, Q108} = pqueue:pout(Q107), + {{value, -8, -8}, Q109} = pqueue:pout(Q108), + {{value, -8, -8}, Q110} = pqueue:pout(Q109), + {{value, -7, -7}, Q111} = pqueue:pout(Q110), + {{value, -7, -7}, Q112} = pqueue:pout(Q111), + {{value, -6, -6}, Q113} = pqueue:pout(Q112), + {{value, -6, -6}, Q114} = pqueue:pout(Q113), + {{value, -5, -5}, Q115} = pqueue:pout(Q114), + {{value, -5, -5}, Q116} = pqueue:pout(Q115), + {{value, -4, -4}, Q117} = pqueue:pout(Q116), + {{value, -4, -4}, Q118} = pqueue:pout(Q117), + {{value, -3, -3}, Q119} = pqueue:pout(Q118), + {{value, -3, -3}, Q120} = pqueue:pout(Q119), + {{value, -2, -2}, Q121} = pqueue:pout(Q120), + {{value, -2, -2}, Q122} = pqueue:pout(Q121), + {{value, -1, -1}, Q123} = pqueue:pout(Q122), + {{value, -1, -1}, Q124} = pqueue:pout(Q123), + {{value, 1, 1}, Q125} = pqueue:pout(Q124), + {{value, 1, 1}, Q126} = pqueue:pout(Q125), + {{value, 2, 2}, Q127} = pqueue:pout(Q126), + {{value, 2, 2}, Q128} = pqueue:pout(Q127), + {{value, 3, 3}, Q129} = pqueue:pout(Q128), + {{value, 3, 3}, Q130} = pqueue:pout(Q129), + {{value, 4, 4}, Q131} = pqueue:pout(Q130), + {{value, 4, 4}, Q132} = pqueue:pout(Q131), + {{value, 5, 5}, Q133} = pqueue:pout(Q132), + {{value, 5, 5}, Q134} = pqueue:pout(Q133), + {{value, 6, 6}, Q135} = pqueue:pout(Q134), + {{value, 6, 6}, Q136} = pqueue:pout(Q135), + {{value, 7, 7}, Q137} = pqueue:pout(Q136), + {{value, 7, 7}, Q138} = pqueue:pout(Q137), + {{value, 8, 8}, Q139} = pqueue:pout(Q138), + {{value, 8, 8}, Q140} = pqueue:pout(Q139), + {{value, 9, 9}, Q141} = pqueue:pout(Q140), + {{value, 9, 9}, Q142} = pqueue:pout(Q141), + {{value, 10, 10}, Q143} = pqueue:pout(Q142), + {{value, 10, 10}, Q144} = pqueue:pout(Q143), + {{value, 11, 11}, Q145} = pqueue:pout(Q144), + {{value, 11, 11}, Q146} = pqueue:pout(Q145), + {{value, 12, 12}, Q147} = pqueue:pout(Q146), + {{value, 12, 12}, Q148} = pqueue:pout(Q147), + {{value, 13, 13}, Q149} = pqueue:pout(Q148), + {{value, 13, 13}, Q150} = pqueue:pout(Q149), + {{value, 14, 14}, Q151} = pqueue:pout(Q150), + {{value, 14, 14}, Q152} = pqueue:pout(Q151), + {{value, 15, 15}, Q153} = pqueue:pout(Q152), + {{value, 15, 15}, Q154} = pqueue:pout(Q153), + {{value, 16, 16}, Q155} = pqueue:pout(Q154), + {{value, 16, 16}, Q156} = pqueue:pout(Q155), + {{value, 17, 17}, Q157} = pqueue:pout(Q156), + {{value, 17, 17}, Q158} = pqueue:pout(Q157), + {{value, 18, 18}, Q159} = pqueue:pout(Q158), + {{value, 18, 18}, Q160} = pqueue:pout(Q159), + {{value, 19, 19}, Q161} = pqueue:pout(Q160), + {{value, 19, 19}, Q162} = pqueue:pout(Q161), + {{value, 20, 20}, Q163} = pqueue:pout(Q162), + {{value, 20, 20}, Q164} = pqueue:pout(Q163), + true = pqueue:is_empty(Q164), + {empty, Q165} = pqueue:pout(Q164), + true = pqueue:is_empty(Q165), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +in_higher(-20, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-20, + {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-19, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-19, + {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-18, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-18, + {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-17, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-17, + {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-16, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-16, + {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-15, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-15, + {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-14, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-14, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-13, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-13, Qsn14, + {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-12, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-12, Qsn14, + {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-11, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-11, Qsn14, + {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-10, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-10, Qsn14, + {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-9, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-9, Qsn14, + {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-8, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-8, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-7, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-7, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-6, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-6, Qsn14, Qsn7, + {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-5, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-5, Qsn14, Qsn7, + {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-4, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-4, Qsn14, Qsn7, + {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-3, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-3, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-2, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-2, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-1, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-1, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(0, {_, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {0, Qsn14, Qsn7, Qsn1, + queue:in(X, Q0), + Qsp1, Qsp7, Qsp14}; +in_higher(1, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {1, Qsn14, Qsn7, Qsn1, Q0, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(2, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {2, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(3, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {3, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(4, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {4, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(5, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {5, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, + Qsp7, Qsp14}; +in_higher(6, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {6, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, + Qsp7, Qsp14}; +in_higher(7, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(8, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(9, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(10, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(11, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, + Qsp14}; +in_higher(12, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, + Qsp14}; +in_higher(13, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, + Qsp14}; +in_higher(14, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_higher(15, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_higher(16, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; +in_higher(17, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; +in_higher(18, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; +in_higher(19, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; +in_higher(20, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. + +in_lower(-20, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-19, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-18, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-17, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-16, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-15, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-14, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-13, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-12, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-11, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-10, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-9, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-8, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-7, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-6, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-5, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-4, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-3, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-2, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-1, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(0, {Pc, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, + queue:in(X, Q0), + Qsp1, Qsp7, Qsp14}; +in_lower(1, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(2, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(3, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(4, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(5, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, + Qsp7, Qsp14}; +in_lower(6, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, + Qsp7, Qsp14}; +in_lower(7, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(8, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(9, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(10, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(11, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, + Qsp14}; +in_lower(12, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, + Qsp14}; +in_lower(13, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, + Qsp14}; +in_lower(14, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_lower(15, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_lower(16, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; +in_lower(17, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; +in_lower(18, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; +in_lower(19, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; +in_lower(20, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. + +out_current(-20, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn20} = queue:out(Qn20), + if + Value =:= empty -> + out_current(-19, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -20}; + true -> + Value + end, + {NewValue, + {-20, + {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-19, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn19} = queue:out(Qn19), + if + Value =:= empty -> + out_current(-18, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -19}; + true -> + Value + end, + {NewValue, + {-19, + {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-18, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn18} = queue:out(Qn18), + if + Value =:= empty -> + out_current(-17, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -18}; + true -> + Value + end, + {NewValue, + {-18, + {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-17, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn17} = queue:out(Qn17), + if + Value =:= empty -> + out_current(-16, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -17}; + true -> + Value + end, + {NewValue, + {-17, + {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-16, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn16} = queue:out(Qn16), + if + Value =:= empty -> + out_current(-15, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -16}; + true -> + Value + end, + {NewValue, + {-16, + {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-15, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn15} = queue:out(Qn15), + if + Value =:= empty -> + out_current(-14, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -15}; + true -> + Value + end, + {NewValue, + {-15, + {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-14, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn14} = queue:out(Qn14), + if + Value =:= empty -> + out_current(-13, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -14}; + true -> + Value + end, + {NewValue, + {-14, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-13, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn13} = queue:out(Qn13), + if + Value =:= empty -> + out_current(-12, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -13}; + true -> + Value + end, + {NewValue, + {-13, Qsn14, + {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-12, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn12} = queue:out(Qn12), + if + Value =:= empty -> + out_current(-11, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -12}; + true -> + Value + end, + {NewValue, + {-12, Qsn14, + {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-11, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn11} = queue:out(Qn11), + if + Value =:= empty -> + out_current(-10, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -11}; + true -> + Value + end, + {NewValue, + {-11, Qsn14, + {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-10, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn10} = queue:out(Qn10), + if + Value =:= empty -> + out_current(-9, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -10}; + true -> + Value + end, + {NewValue, + {-10, Qsn14, + {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-9, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn9} = queue:out(Qn9), + if + Value =:= empty -> + out_current(-8, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -9}; + true -> + Value + end, + {NewValue, + {-9, Qsn14, + {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-8, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn8} = queue:out(Qn8), + if + Value =:= empty -> + out_current(-7, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -8}; + true -> + Value + end, + {NewValue, + {-8, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-7, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn7} = queue:out(Qn7), + if + Value =:= empty -> + out_current(-6, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -7}; + true -> + Value + end, + {NewValue, + {-7, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-6, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn6} = queue:out(Qn6), + if + Value =:= empty -> + out_current(-5, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -6}; + true -> + Value + end, + {NewValue, + {-6, Qsn14, Qsn7, + {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-5, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn5} = queue:out(Qn5), + if + Value =:= empty -> + out_current(-4, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -5}; + true -> + Value + end, + {NewValue, + {-5, Qsn14, Qsn7, + {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-4, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn4} = queue:out(Qn4), + if + Value =:= empty -> + out_current(-3, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -4}; + true -> + Value + end, + {NewValue, + {-4, Qsn14, Qsn7, + {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-3, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn3} = queue:out(Qn3), + if + Value =:= empty -> + out_current(-2, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -3}; + true -> + Value + end, + {NewValue, + {-3, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-2, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn2} = queue:out(Qn2), + if + Value =:= empty -> + out_current(-1, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -2}; + true -> + Value + end, + {NewValue, + {-2, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-1, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn1} = queue:out(Qn1), + if + Value =:= empty -> + out_current(0, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -1}; + true -> + Value + end, + {NewValue, + {-1, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(0, + {_, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQ0} = queue:out(Q0), + if + Value =:= empty -> + out_current(1, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 0}; + true -> + Value + end, + {NewValue, + {0, Qsn14, Qsn7, Qsn1, + NewQ0, + Qsp1, Qsp7, Qsp14}} + end; +out_current(1, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp1} = queue:out(Qp1), + if + Value =:= empty -> + out_current(2, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 1}; + true -> + Value + end, + {NewValue, + {1, Qsn14, Qsn7, Qsn1, Q0, + {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(2, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp2} = queue:out(Qp2), + if + Value =:= empty -> + out_current(3, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 2}; + true -> + Value + end, + {NewValue, + {2, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(3, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp3} = queue:out(Qp3), + if + Value =:= empty -> + out_current(4, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 3}; + true -> + Value + end, + {NewValue, + {3, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(4, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp4} = queue:out(Qp4), + if + Value =:= empty -> + out_current(5, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 4}; + true -> + Value + end, + {NewValue, + {4, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(5, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp5} = queue:out(Qp5), + if + Value =:= empty -> + out_current(6, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 5}; + true -> + Value + end, + {NewValue, + {5, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(6, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp6} = queue:out(Qp6), + if + Value =:= empty -> + out_current(7, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 6}; + true -> + Value + end, + {NewValue, + {6, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, + Qsp7, Qsp14}} + end; +out_current(7, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp7} = queue:out(Qp7), + if + Value =:= empty -> + out_current(8, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 7}; + true -> + Value + end, + {NewValue, + {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(8, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp8} = queue:out(Qp8), + if + Value =:= empty -> + out_current(9, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 8}; + true -> + Value + end, + {NewValue, + {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(9, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp9} = queue:out(Qp9), + if + Value =:= empty -> + out_current(10, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 9}; + true -> + Value + end, + {NewValue, + {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(10, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp10} = queue:out(Qp10), + if + Value =:= empty -> + out_current(11, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 10}; + true -> + Value + end, + {NewValue, + {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(11, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp11} = queue:out(Qp11), + if + Value =:= empty -> + out_current(12, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 11}; + true -> + Value + end, + {NewValue, + {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(12, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp12} = queue:out(Qp12), + if + Value =:= empty -> + out_current(13, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 12}; + true -> + Value + end, + {NewValue, + {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, + Qsp14}} + end; +out_current(13, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp13} = queue:out(Qp13), + if + Value =:= empty -> + out_current(14, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 13}; + true -> + Value + end, + {NewValue, + {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, + Qsp14}} + end; +out_current(14, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp14} = queue:out(Qp14), + if + Value =:= empty -> + out_current(15, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 14}; + true -> + Value + end, + {NewValue, + {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(15, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp15} = queue:out(Qp15), + if + Value =:= empty -> + out_current(16, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 15}; + true -> + Value + end, + {NewValue, + {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(16, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp16} = queue:out(Qp16), + if + Value =:= empty -> + out_current(17, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 16}; + true -> + Value + end, + {NewValue, + {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(17, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp17} = queue:out(Qp17), + if + Value =:= empty -> + out_current(18, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 17}; + true -> + Value + end, + {NewValue, + {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}} + end; +out_current(18, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp18} = queue:out(Qp18), + if + Value =:= empty -> + out_current(19, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 18}; + true -> + Value + end, + {NewValue, + {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}} + end; +out_current(19, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp19} = queue:out(Qp19), + if + Value =:= empty -> + out_current(20, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 19}; + true -> + Value + end, + {NewValue, + {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}} + end; +out_current(20, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20} = Qsp14}, ReturnType) -> + {Value, NewQp20} = queue:out(Qp20), + if + Value =:= empty -> + {empty, {empty, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 20}; + true -> + Value + end, + {NewValue, + {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}} + end. + +out_specific(-20, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn20} = queue:out(Qn20), + {Value, + {Pc, + {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-19, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn19} = queue:out(Qn19), + {Value, + {Pc, + {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-18, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn18} = queue:out(Qn18), + {Value, + {Pc, + {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-17, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn17} = queue:out(Qn17), + {Value, + {Pc, + {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-16, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn16} = queue:out(Qn16), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-15, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn15} = queue:out(Qn15), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-14, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn14} = queue:out(Qn14), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-13, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn13} = queue:out(Qn13), + {Value, + {Pc, Qsn14, + {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-12, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn12} = queue:out(Qn12), + {Value, + {Pc, Qsn14, + {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-11, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn11} = queue:out(Qn11), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-10, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn10} = queue:out(Qn10), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-9, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn9} = queue:out(Qn9), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-8, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn8} = queue:out(Qn8), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-7, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn7} = queue:out(Qn7), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-6, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn6} = queue:out(Qn6), + {Value, + {Pc, Qsn14, Qsn7, + {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-5, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn5} = queue:out(Qn5), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-4, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn4} = queue:out(Qn4), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-3, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn3} = queue:out(Qn3), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-2, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn2} = queue:out(Qn2), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-1, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn1} = queue:out(Qn1), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(0, + {Pc, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQ0} = queue:out(Q0), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, + NewQ0, + Qsp1, Qsp7, Qsp14}}; +out_specific(1, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp1} = queue:out(Qp1), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(2, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp2} = queue:out(Qp2), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(3, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp3} = queue:out(Qp3), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(4, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp4} = queue:out(Qp4), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(5, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp5} = queue:out(Qp5), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(6, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp6} = queue:out(Qp6), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, + Qsp7, Qsp14}}; +out_specific(7, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp7} = queue:out(Qp7), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(8, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp8} = queue:out(Qp8), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(9, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp9} = queue:out(Qp9), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(10, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp10} = queue:out(Qp10), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(11, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp11} = queue:out(Qp11), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, + Qsp14}}; +out_specific(12, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp12} = queue:out(Qp12), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, + Qsp14}}; +out_specific(13, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp13} = queue:out(Qp13), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, + Qsp14}}; +out_specific(14, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp14} = queue:out(Qp14), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(15, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp15} = queue:out(Qp15), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(16, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp16} = queue:out(Qp16), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(17, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp17} = queue:out(Qp17), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}}; +out_specific(18, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp18} = queue:out(Qp18), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}}; +out_specific(19, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp19} = queue:out(Qp19), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}}; +out_specific(20, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp20} = queue:out(Qp20), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}}. + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl new file mode 100644 index 0000000..bbdeaaf --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl @@ -0,0 +1,483 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Skew Heap Priority Queue.== +%%% Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority +%%% queue implementation. Unfortunately, testing has shown this solution to +%%% be more than 2 times slower than pqueue. +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue2). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, + in/3, + is_empty/1, + is_queue/1, + len/1, + new/0, + out/1, + out/2, + pout/1, + to_list/1, + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue2() :: + empty | + {integer(), pqueue2(), pqueue2(), element, term()} | + {integer(), pqueue2(), pqueue2(), queue, queue()}. +-else. +-type pqueue2() :: + empty | + {integer(), pqueue2(), pqueue2(), element, term()} | + {integer(), pqueue2(), pqueue2(), queue, queue:queue()}. +-endif. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue2()) -> pqueue2(). + +in(Value, H) -> + in(Value, 0, H). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue2()) -> pqueue2(). + +in(Value, P, H) -> + merge({P, empty, empty, element, Value}, H). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue2()) -> 'true' | 'false'. + +is_empty(empty) -> + true; +is_empty({_, HL, HR, queue, Queue}) -> + is_empty(HL) andalso is_empty(HR) andalso queue:is_empty(Queue); +is_empty(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue2()) -> 'true' | 'false'. + +is_queue(empty) -> + true; +is_queue({P, _, _, element, _}) + when is_integer(P) -> + true; +is_queue({P, _, _, queue, Queue}) + when is_integer(P) -> + queue:is_queue(Queue); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue2()) -> non_neg_integer(). + +len(H) -> + len(0, out(H)). +len(I, {empty, _}) -> + I; +len(I, {{value, _}, H}) -> + len(I + 1, out(H)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue2(). + +new() -> + empty. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue2()) -> + {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. + +out(empty) -> + {empty, empty}; +out({_, HL, HR, element, Value}) -> + {{value, Value}, merge(HL, HR)}; +out({P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, _} = Result, NewQueue} -> + {Result, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + out(merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue2()) -> + {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. + +out(_, empty) -> + {empty, empty}; +out(P, {P1, _, _, _, _} = H) when P < P1 -> + {empty, H}; +out(P, {P1, HL1, HR1, T, D}) when P > P1 -> + case out(P, HL1) of + {{value, _} = Result, HL2} -> + {Result, {P1, HL2, HR1, T, D}}; + {empty, HL2} -> + case out(P, HR1) of + {{value, _} = Result, HR2} -> + {Result, {P1, HL2, HR2, T, D}}; + {empty, HR2} -> + {empty, {P1, HL2, HR2, T, D}} + end + end; +out(P, {P, HL, HR, element, Value}) -> + {{value, Value}, merge(HL, HR)}; +out(P, {P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, _} = Result, NewQueue} -> + {Result, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + out(P, merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue2()) -> + {{'value', term(), integer()}, pqueue2()} | {'empty', pqueue2()}. + +pout(empty) -> + {empty, empty}; +pout({P, HL, HR, element, Value}) -> + {{value, Value, P}, merge(HL, HR)}; +pout({P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, Value}, NewQueue} -> + {{value, Value, P}, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + pout(merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue2()) -> list(term()). + +to_list(H) -> + to_list([], out(H)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, H}) -> + to_list([Value | L], out(H)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue2:new(), + true = pqueue2:is_queue(Q0), + Q1 = pqueue2:in(20, 20, Q0), + Q2 = pqueue2:in(19, 19, Q1), + Q3 = pqueue2:in(18, 18, Q2), + Q4 = pqueue2:in(17, 17, Q3), + Q5 = pqueue2:in(16, 16, Q4), + Q6 = pqueue2:in(15, 15, Q5), + Q7 = pqueue2:in(14, 14, Q6), + Q8 = pqueue2:in(13, 13, Q7), + Q9 = pqueue2:in(12, 12, Q8), + Q10 = pqueue2:in(11, 11, Q9), + Q11 = pqueue2:in(10, 10, Q10), + Q12 = pqueue2:in(9, 9, Q11), + Q13 = pqueue2:in(8, 8, Q12), + Q14 = pqueue2:in(7, 7, Q13), + Q15 = pqueue2:in(6, 6, Q14), + Q16 = pqueue2:in(5, 5, Q15), + Q17 = pqueue2:in(4, 4, Q16), + Q18 = pqueue2:in(3, 3, Q17), + Q19 = pqueue2:in(2, 2, Q18), + Q20 = pqueue2:in(1, 1, Q19), + Q21 = pqueue2:in(0, 0, Q20), + Q22 = pqueue2:in(-1, -1, Q21), + Q23 = pqueue2:in(-2, -2, Q22), + Q24 = pqueue2:in(-3, -3, Q23), + Q25 = pqueue2:in(-4, -4, Q24), + Q26 = pqueue2:in(-5, -5, Q25), + Q27 = pqueue2:in(-6, -6, Q26), + Q28 = pqueue2:in(-7, -7, Q27), + Q29 = pqueue2:in(-8, -8, Q28), + Q30 = pqueue2:in(-9, -9, Q29), + Q31 = pqueue2:in(-10, -10, Q30), + Q32 = pqueue2:in(-11, -11, Q31), + Q33 = pqueue2:in(-12, -12, Q32), + Q34 = pqueue2:in(-13, -13, Q33), + Q35 = pqueue2:in(-14, -14, Q34), + Q36 = pqueue2:in(-15, -15, Q35), + Q37 = pqueue2:in(-16, -16, Q36), + Q38 = pqueue2:in(-17, -17, Q37), + Q39 = pqueue2:in(-18, -18, Q38), + Q40 = pqueue2:in(-19, -19, Q39), + Q41 = pqueue2:in(-20, -20, Q40), + Q42 = pqueue2:in(-20, -20, Q41), + Q43 = pqueue2:in(-19, -19, Q42), + Q44 = pqueue2:in(-18, -18, Q43), + Q45 = pqueue2:in(-17, -17, Q44), + Q46 = pqueue2:in(-16, -16, Q45), + Q47 = pqueue2:in(-15, -15, Q46), + Q48 = pqueue2:in(-14, -14, Q47), + Q49 = pqueue2:in(-13, -13, Q48), + Q50 = pqueue2:in(-12, -12, Q49), + Q51 = pqueue2:in(-11, -11, Q50), + Q52 = pqueue2:in(-10, -10, Q51), + Q53 = pqueue2:in(-9, -9, Q52), + Q54 = pqueue2:in(-8, -8, Q53), + Q55 = pqueue2:in(-7, -7, Q54), + Q56 = pqueue2:in(-6, -6, Q55), + Q57 = pqueue2:in(-5, -5, Q56), + Q58 = pqueue2:in(-4, -4, Q57), + Q59 = pqueue2:in(-3, -3, Q58), + Q60 = pqueue2:in(-2, -2, Q59), + Q61 = pqueue2:in(-1, -1, Q60), + Q62 = pqueue2:in(0, 0, Q61), + Q63 = pqueue2:in(1, 1, Q62), + Q64 = pqueue2:in(2, 2, Q63), + Q65 = pqueue2:in(3, 3, Q64), + Q66 = pqueue2:in(4, 4, Q65), + Q67 = pqueue2:in(5, 5, Q66), + Q68 = pqueue2:in(6, 6, Q67), + Q69 = pqueue2:in(7, 7, Q68), + Q70 = pqueue2:in(8, 8, Q69), + Q71 = pqueue2:in(9, 9, Q70), + Q72 = pqueue2:in(10, 10, Q71), + Q73 = pqueue2:in(11, 11, Q72), + Q74 = pqueue2:in(12, 12, Q73), + Q75 = pqueue2:in(13, 13, Q74), + Q76 = pqueue2:in(14, 14, Q75), + Q77 = pqueue2:in(15, 15, Q76), + Q78 = pqueue2:in(16, 16, Q77), + Q79 = pqueue2:in(17, 17, Q78), + Q80 = pqueue2:in(18, 18, Q79), + Q81 = pqueue2:in(19, 19, Q80), + Q82 = pqueue2:in(20, 20, Q81), + true = pqueue2:is_queue(Q82), + 82 = pqueue2:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue2:to_list(Q82), + {{value, -20}, Q83} = pqueue2:out(Q82), + {{value, -20}, Q84} = pqueue2:out(Q83), + {{value, -19}, Q85} = pqueue2:out(Q84), + {{value, -19}, Q86} = pqueue2:out(Q85), + {{value, -18}, Q87} = pqueue2:out(Q86), + {{value, -18}, Q88} = pqueue2:out(Q87), + {{value, 0}, Q89} = pqueue2:out(0, Q88), + {{value, 0}, Q90} = pqueue2:out(0, Q89), + {empty, _} = pqueue2:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue2:pout(Q90), + {{value, -17, -17}, Q92} = pqueue2:pout(Q91), + {{value, -16, -16}, Q93} = pqueue2:pout(Q92), + {{value, -16, -16}, Q94} = pqueue2:pout(Q93), + {{value, -15, -15}, Q95} = pqueue2:pout(Q94), + {{value, -15, -15}, Q96} = pqueue2:pout(Q95), + {{value, -14, -14}, Q97} = pqueue2:pout(Q96), + {{value, -14, -14}, Q98} = pqueue2:pout(Q97), + {{value, -13, -13}, Q99} = pqueue2:pout(Q98), + {{value, -13, -13}, Q100} = pqueue2:pout(Q99), + {{value, -12, -12}, Q101} = pqueue2:pout(Q100), + {{value, -12, -12}, Q102} = pqueue2:pout(Q101), + {{value, -11, -11}, Q103} = pqueue2:pout(Q102), + {{value, -11, -11}, Q104} = pqueue2:pout(Q103), + {{value, -10, -10}, Q105} = pqueue2:pout(Q104), + {{value, -10, -10}, Q106} = pqueue2:pout(Q105), + {{value, -9, -9}, Q107} = pqueue2:pout(Q106), + {{value, -9, -9}, Q108} = pqueue2:pout(Q107), + {{value, -8, -8}, Q109} = pqueue2:pout(Q108), + {{value, -8, -8}, Q110} = pqueue2:pout(Q109), + {{value, -7, -7}, Q111} = pqueue2:pout(Q110), + {{value, -7, -7}, Q112} = pqueue2:pout(Q111), + {{value, -6, -6}, Q113} = pqueue2:pout(Q112), + {{value, -6, -6}, Q114} = pqueue2:pout(Q113), + {{value, -5, -5}, Q115} = pqueue2:pout(Q114), + {{value, -5, -5}, Q116} = pqueue2:pout(Q115), + {{value, -4, -4}, Q117} = pqueue2:pout(Q116), + {{value, -4, -4}, Q118} = pqueue2:pout(Q117), + {{value, -3, -3}, Q119} = pqueue2:pout(Q118), + {{value, -3, -3}, Q120} = pqueue2:pout(Q119), + {{value, -2, -2}, Q121} = pqueue2:pout(Q120), + {{value, -2, -2}, Q122} = pqueue2:pout(Q121), + {{value, -1, -1}, Q123} = pqueue2:pout(Q122), + {{value, -1, -1}, Q124} = pqueue2:pout(Q123), + {{value, 1, 1}, Q125} = pqueue2:pout(Q124), + {{value, 1, 1}, Q126} = pqueue2:pout(Q125), + {{value, 2, 2}, Q127} = pqueue2:pout(Q126), + {{value, 2, 2}, Q128} = pqueue2:pout(Q127), + {{value, 3, 3}, Q129} = pqueue2:pout(Q128), + {{value, 3, 3}, Q130} = pqueue2:pout(Q129), + {{value, 4, 4}, Q131} = pqueue2:pout(Q130), + {{value, 4, 4}, Q132} = pqueue2:pout(Q131), + {{value, 5, 5}, Q133} = pqueue2:pout(Q132), + {{value, 5, 5}, Q134} = pqueue2:pout(Q133), + {{value, 6, 6}, Q135} = pqueue2:pout(Q134), + {{value, 6, 6}, Q136} = pqueue2:pout(Q135), + {{value, 7, 7}, Q137} = pqueue2:pout(Q136), + {{value, 7, 7}, Q138} = pqueue2:pout(Q137), + {{value, 8, 8}, Q139} = pqueue2:pout(Q138), + {{value, 8, 8}, Q140} = pqueue2:pout(Q139), + {{value, 9, 9}, Q141} = pqueue2:pout(Q140), + {{value, 9, 9}, Q142} = pqueue2:pout(Q141), + {{value, 10, 10}, Q143} = pqueue2:pout(Q142), + {{value, 10, 10}, Q144} = pqueue2:pout(Q143), + {{value, 11, 11}, Q145} = pqueue2:pout(Q144), + {{value, 11, 11}, Q146} = pqueue2:pout(Q145), + {{value, 12, 12}, Q147} = pqueue2:pout(Q146), + {{value, 12, 12}, Q148} = pqueue2:pout(Q147), + {{value, 13, 13}, Q149} = pqueue2:pout(Q148), + {{value, 13, 13}, Q150} = pqueue2:pout(Q149), + {{value, 14, 14}, Q151} = pqueue2:pout(Q150), + {{value, 14, 14}, Q152} = pqueue2:pout(Q151), + {{value, 15, 15}, Q153} = pqueue2:pout(Q152), + {{value, 15, 15}, Q154} = pqueue2:pout(Q153), + {{value, 16, 16}, Q155} = pqueue2:pout(Q154), + {{value, 16, 16}, Q156} = pqueue2:pout(Q155), + {{value, 17, 17}, Q157} = pqueue2:pout(Q156), + {{value, 17, 17}, Q158} = pqueue2:pout(Q157), + {{value, 18, 18}, Q159} = pqueue2:pout(Q158), + {{value, 18, 18}, Q160} = pqueue2:pout(Q159), + {{value, 19, 19}, Q161} = pqueue2:pout(Q160), + {{value, 19, 19}, Q162} = pqueue2:pout(Q161), + {{value, 20, 20}, Q163} = pqueue2:pout(Q162), + {{value, 20, 20}, Q164} = pqueue2:pout(Q163), + true = pqueue2:is_empty(Q164), + {empty, Q165} = pqueue2:pout(Q164), + true = pqueue2:is_empty(Q165), + % test case 1, based on proper testing + C1V0 = pqueue2:in(-18, pqueue2:new()), + C1V1 = pqueue2:in(9, C1V0), + C1V2 = pqueue2:in(-10, -4, C1V1), + C1V3 = pqueue2:in(-29, C1V2), + C1V4 = pqueue2:in(11, C1V3), + 5 = pqueue2:len(C1V4), + [-10, -18, 9, -29, 11] = pqueue2:to_list(C1V4), + % test case 2, based on proper testing + C2V0 = pqueue2:in(-4, -15, pqueue2:new()), + C2V1 = pqueue2:in(13, C2V0), + C2V2 = pqueue2:in(2, C2V1), + [-4, 13, 2] = to_list(C2V2), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +merge(empty, empty) -> + empty; +merge(empty, {_, _, _, _, _} = H) -> + H; +merge({_, _, _, _, _} = H, empty) -> + H; +merge({P1, HL1, HR1, T, D}, {P2, _, _, _, _} = H2) when P1 < P2 -> + {P1, HL1, merge(HR1, H2), T, D}; +merge({P1, _, _, _, _} = H1, {P2, HL2, HR2, T, D}) when P1 > P2 -> + {P2, HL2, merge(H1, HR2), T, D}; +merge({P, HL1, HR1, element, Value1}, {P, HL2, HR2, element, Value2}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, + queue:from_list([Value2, Value1])}; +merge({P, HL1, HR1, queue, Queue}, {P, HL2, HR2, element, Value}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}; +merge({P, HL1, HR1, element, Value}, {P, HL2, HR2, queue, Queue}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}. + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq2())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl new file mode 100644 index 0000000..03b370a --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl @@ -0,0 +1,404 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==A Large Priority Queue.== +%%% This priority queue implementation depends on layered tuples, so that tuple +%%% access times can be exploited for quick in/out priority queue operations +%%% when using 64 or more total priorities. This implementation was created +%%% to avoid the slowness within the priority queue used by +%%% both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue3). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + len/1, % O(N) + new/0, % O(1) + new/1, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + to_list/1]). % O(N) + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-type pqueue3() :: {integer(), integer(), empty | integer(), tuple()}. +-type pqueue3_empty() :: {integer(), integer(), empty, tuple()}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue3()) -> pqueue3(). + +in(Value, Q) -> + in(Value, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue3()) -> pqueue3(). + +in(_, P, {Size, Offset, _, _}) + when (P + Offset) < 0; (P + Offset) > Size -> + erlang:exit(badarg); +in(Value, P, {Size, Offset, empty, Bins}) -> + PriorityIndex = P + Offset, + {Size, Offset, PriorityIndex, + in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; +in(Value, P, {Size, Offset, I, Bins}) + when (P + Offset) < I -> + PriorityIndex = P + Offset, + {Size, Offset, PriorityIndex, + in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; +in(Value, P, {Size, Offset, I, Bins}) -> + {Size, Offset, I, + in_queue(layer_indexes(Size, P + Offset), Value, Bins)}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue3()) -> 'true' | 'false'. + +is_empty({_, _, empty, _}) -> + true; +is_empty({_, _, _, _} = Q) -> + case out(Q) of + {empty, _} -> + true; + {{value, _}, _} -> + false + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue3()) -> 'true' | 'false'. + +is_queue({Size, Offset, I, Bins}) + when is_integer(Size), is_integer(Offset), is_tuple(Bins) -> + (I =:= empty) or is_integer(I); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue3()) -> non_neg_integer(). + +len(Q) -> + len(0, out(Q)). +len(I, {empty, _}) -> + I; +len(I, {{value, _}, Q}) -> + len(I + 1, out(Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue3_empty(). + +new() -> + new([]). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue with customization options.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new(list({atom(), term()})) -> pqueue3(). + +new(Options) -> + Size = proplists:get_value(priorities, Options, 256), + MiddleZero = proplists:get_value(middle_priority_zero, Options, true), + Offset = if + MiddleZero =:= true -> + erlang:round((Size / 2) + 0.5) - 1; + true -> + 0 + end, + {Size, Offset, empty, create(layer_sizes(Size))}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue3()) -> + {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. + +out({_, _, empty, _} = Q) -> + {empty, Q}; +out({Size, Offset, I, Bins}) -> + {Result, NewI, NewBins} = out_check( + I, Size, out_queue(layer_indexes(Size, I), Bins) + ), + {Result, {Size, Offset, NewI, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue3()) -> + {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. + +out(P, {Size, Offset, _, _}) + when (P + Offset) < 0; (P + Offset) > Size -> + erlang:exit(badarg); +out(_, {_, _, empty, _} = Q) -> + {empty, Q}; +out(P, {Size, Offset, I, Bins}) -> + {Result, NewBins} = out_queue(layer_indexes(Size, P + Offset), Bins), + {Result, {Size, Offset, I, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue3()) -> + {{'value', term(), integer()}, pqueue3()} | {'empty', pqueue3()}. + +pout({_, _, empty, _} = Q) -> + {empty, Q}; +pout({Size, Offset, I, Bins}) -> + {Result, NewI, NewBins} = pout_check( + I, Size, Offset, out_queue(layer_indexes(Size, I), Bins) + ), + {Result, {Size, Offset, NewI, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue3()) -> list(term()). + +to_list(Q) -> + to_list([], out(Q)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, Q}) -> + to_list([Value | L], out(Q)). + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +create([]) -> + queue:new(); + +create([I | Is]) -> + erlang:make_tuple(I + 1, create(Is)). + +in_queue({I1}, Value, Bins1) -> + erlang:setelement(I1, Bins1, queue:in(Value, erlang:element(I1, Bins1))); + +in_queue({I1, I2}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, queue:in(Value, erlang:element(I2, Bins2)))); + +in_queue({I1, I2, I3}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, queue:in(Value, erlang:element(I3, Bins3))))); + +in_queue({I1, I2, I3, I4}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + Bins4 = erlang:element(I3, Bins3), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, + erlang:setelement(I4, Bins4, queue:in(Value, erlang:element(I4, Bins4)))))). + +pout_check(Size, Size, _, {empty, Bins}) -> + {empty, empty, Bins}; +pout_check(I, _, Offset, {{value, Value}, Bins}) -> + {{value, Value, I - Offset}, I, Bins}; +pout_check(I, Size, Offset, {empty, Bins}) -> + NewI = I + 1, + pout_check(NewI, Size, Offset, out_queue(layer_indexes(Size, NewI), Bins)). + +out_check(Size, Size, {empty, Bins}) -> + {empty, empty, Bins}; +out_check(I, _, {{value, _} = Result, Bins}) -> + {Result, I, Bins}; +out_check(I, Size, {empty, Bins}) -> + NewI = I + 1, + out_check(NewI, Size, out_queue(layer_indexes(Size, NewI), Bins)). + +out_queue({I1}, Bins1) -> + {Result, NewQueue} = queue:out(erlang:element(I1, Bins1)), + {Result, + erlang:setelement(I1, Bins1, NewQueue)}; + +out_queue({I1, I2}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + {Result, NewQueue} = queue:out(erlang:element(I2, Bins2)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, NewQueue))}; + +out_queue({I1, I2, I3}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + {Result, NewQueue} = queue:out(erlang:element(I3, Bins3)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, NewQueue)))}; + +out_queue({I1, I2, I3, I4}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + Bins4 = erlang:element(I3, Bins3), + {Result, NewQueue} = queue:out(erlang:element(I4, Bins4)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, + erlang:setelement(I4, Bins4, NewQueue))))}. + +layer_indexes(Size, PriorityIndex) -> + if + Size =< 127 -> + {PriorityIndex + 1}; + Size =< 255 -> + <> = <>, + {I1 + 1, I2 + 1}; + Size =< 511 -> + <> = <>, + {I1 + 1, I2 + 1}; + Size =< 1023 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 2047 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 4095 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 8191 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 16383 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 32767 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1, I4 + 1}; + Size =< 65535 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1, I4 + 1} + end. + +layer_sizes(Size) -> + if + Size =< 127 -> + <> = <<127:7>>, + [I1]; + Size =< 255 -> + <> = <<255:8>>, + [I1, I2]; + Size =< 511 -> + <> = <<511:9>>, + [I1, I2]; + Size =< 1023 -> + <> = <<1023:10>>, + [I1, I2, I3]; + Size =< 2047 -> + <> = <<2047:11>>, + [I1, I2, I3]; + Size =< 4095 -> + <> = <<4095:12>>, + [I1, I2, I3]; + Size =< 8191 -> + <> = <<8191:13>>, + [I1, I2, I3]; + Size =< 16383 -> + <> = <<16383:14>>, + [I1, I2, I3]; + Size =< 32767 -> + <> = <<32767:15>>, + [I1, I2, I3, I4]; + Size =< 65535 -> + <> = <<65535:16>>, + [I1, I2, I3, I4] + end. + diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl new file mode 100644 index 0000000..30b188d --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl @@ -0,0 +1,11662 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Static Priority Queue.== +%%% This priority queue implementation depends on a static number of priorities +%%% (-128 (high) to 128 (low)) so that tuple access times can be exploited for +%%% quick in/out priority queue operations. This implementation was created to +%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% +%%% queue_remove_unique/2 is based on queue:filter/2 +%%% which is under the Apache License 2.0: +%%% +%%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%%% +%%% Licensed under the Apache License, Version 2.0 (the "License"); +%%% you may not use this file except in compliance with the License. +%%% You may obtain a copy of the License at +%%% +%%% http://www.apache.org/licenses/LICENSE-2.0 +%%% +%%% Unless required by applicable law or agreed to in writing, software +%%% distributed under the License is distributed on an "AS IS" BASIS, +%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%%% See the License for the specific language governing permissions and +%%% limitations under the License. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue4). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([filter/2, % O(N) + filter/3, % O(N) + in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + len/1, % O(1) + new/0, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + remove_unique/2, % O(N) but smaller constant than filter/2 + remove_unique/3, % O(N) but smaller constant than filter/3 + to_list/1, % O(N) + to_plist/1, % O(N) + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-type priority() :: -128..128. +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue4(_) :: + {priority() | 'empty', % current priority + non_neg_integer(), % total size + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. +-else. +-type pqueue4(T) :: + {priority() | 'empty', % current priority + non_neg_integer(), % total size + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + queue:queue(T), + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}. +-endif. +-type pqueue4() :: pqueue4(any()). +-export_type([pqueue4/0, pqueue4/1]). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Filter the priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec filter(fun((any()) -> boolean()), pqueue4()) -> pqueue4(). + +filter(F, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + Q; +filter(F, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + filter_all(Pc, F, Q). + +filter_all(_, _, {_, 0, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) -> + Q; +filter_all(128, F, Q) -> + filter_priority(128, F, Q); +filter_all(P, F, Q) when is_integer(P) -> + filter_all(P + 1, F, filter_priority(P, F, Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Filter a specific priority within the priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec filter(fun((any()) -> boolean()), integer(), pqueue4()) -> pqueue4(). + +filter(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +filter(F, P, Q) when is_function(F, 1) -> + filter_priority(P, F, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(any(), pqueue4()) -> pqueue4(). + +in(X, Q) -> + in(X, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(any(), integer(), pqueue4()) -> pqueue4(). + +in(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +in(X, P, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + in_higher(P, Q, X); % (in a higher priority) +in(X, P, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when P < Pc -> + in_higher(P, Q, X); % (in a higher priority) +in(X, P, Q) -> + in_lower(P, Q, X). % (in a lower priority) + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue4()) -> 'true' | 'false'. + +is_empty({_, 0, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + true; +is_empty({_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue4()) -> 'true' | 'false'. + +is_queue({Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) + when is_integer(Size), + tuple_size(Qn128) == 16, tuple_size(Qn112) == 16, + tuple_size(Qn96) == 16, tuple_size(Qn80) == 16, + tuple_size(Qn64) == 16, tuple_size(Qn48) == 16, + tuple_size(Qn32) == 16, tuple_size(Qn16) == 16, + tuple_size(Qp16) == 16, tuple_size(Qp32) == 16, + tuple_size(Qp48) == 16, tuple_size(Qp64) == 16, + tuple_size(Qp80) == 16, tuple_size(Qp96) == 16, + tuple_size(Qp112) == 16, tuple_size(Qp128) == 16 -> + (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue4()) -> non_neg_integer(). + +len({_, Size, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + Size. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue4(). + +new() -> + {empty, % current priority + 0, % current size + erlang:make_tuple(16, queue:new()), % priority [-128..-113] + erlang:make_tuple(16, queue:new()), % priority [-112.. -97] + erlang:make_tuple(16, queue:new()), % priority [ -96.. -81] + erlang:make_tuple(16, queue:new()), % priority [ -80.. -65] + erlang:make_tuple(16, queue:new()), % priority [ -64.. -49] + erlang:make_tuple(16, queue:new()), % priority [ -48.. -33] + erlang:make_tuple(16, queue:new()), % priority [ -32.. -17] + erlang:make_tuple(16, queue:new()), % priority [ -16.. -1] + queue:new(), % priority 0 (default) + erlang:make_tuple(16, queue:new()), % priority [ 1.. 16] + erlang:make_tuple(16, queue:new()), % priority [ 17.. 32] + erlang:make_tuple(16, queue:new()), % priority [ 33.. 48] + erlang:make_tuple(16, queue:new()), % priority [ 49.. 64] + erlang:make_tuple(16, queue:new()), % priority [ 65.. 80] + erlang:make_tuple(16, queue:new()), % priority [ 81.. 96] + erlang:make_tuple(16, queue:new()), % priority [ 97.. 112] + erlang:make_tuple(16, queue:new())}. % priority [ 113.. 128] + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue4()) -> + {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. + +out({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue4()) -> + {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. + +out(P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +out(_, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out(P, Q) -> + out_specific(P, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue4()) -> + {{'value', any(), integer()}, pqueue4()} | {'empty', pqueue4()}. + +pout({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +pout({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + out_current_p(Pc, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Remove a unique value from the priority queue with a binary predicate.=== +%% O(N) but smaller constant than filter/2 +%% @end +%%------------------------------------------------------------------------- + +-spec remove_unique(fun((any()) -> boolean()), pqueue4()) -> + {boolean(), pqueue4()}. + +remove_unique(F, {_, 0, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + {false, Q}; +remove_unique(F, {Pc, _, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + remove_unique_all(Pc, F, Q). + +remove_unique_all(128, F, Q) -> + remove_unique_p(128, F, Q); +remove_unique_all(P, F, Q) when is_integer(P) -> + case remove_unique_p(P, F, Q) of + {true, _} = Result -> + Result; + {false, Q} -> + remove_unique_all(P + 1, F, Q) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Remove a unique value in a specific priority within the priority queue with a binary predicate.=== +%% O(N) but smaller constant than filter/3 +%% @end +%%------------------------------------------------------------------------- + +-spec remove_unique(fun((any()) -> boolean()), integer(), pqueue4()) -> + {boolean(), pqueue4()}. + +remove_unique(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +remove_unique(F, P, Q) when is_function(F, 1) -> + remove_unique_p(P, F, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue4()) -> list(). + +to_list(Q) -> + to_list([], out(Q)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, Q}) -> + to_list([Value | L], out(Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list with priorities.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_plist(pqueue4()) -> list({priority(), list()}). + +to_plist(Q) -> + to_plist([], [], undefined, pout(Q)). +to_plist(L, [], _, {empty, _}) -> + lists:reverse(L); +to_plist(L, Lp, Pc, {empty, _}) -> + lists:reverse([{Pc, lists:reverse(Lp)} | L]); +to_plist(L, Lp, Pc, {{value, Value, Pc}, Q}) -> + to_plist(L, [Value | Lp], Pc, pout(Q)); +to_plist(L, [], _, {{value, Value, Pc}, Q}) -> + to_plist(L, [Value], Pc, pout(Q)); +to_plist(L, Lp, P, {{value, Value, Pc}, Q}) -> + to_plist([{P, lists:reverse(Lp)} | L], [Value], Pc, pout(Q)). + +%%------------------------------------------------------------------------- +%% @private +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue4:new(), + true = pqueue4:is_queue(Q0), + Q1 = pqueue4:in(20, 20, Q0), + Q2 = pqueue4:in(19, 19, Q1), + Q3 = pqueue4:in(18, 18, Q2), + Q4 = pqueue4:in(17, 17, Q3), + Q5 = pqueue4:in(16, 16, Q4), + Q6 = pqueue4:in(15, 15, Q5), + Q7 = pqueue4:in(14, 14, Q6), + Q8 = pqueue4:in(13, 13, Q7), + Q9 = pqueue4:in(12, 12, Q8), + Q10 = pqueue4:in(11, 11, Q9), + Q11 = pqueue4:in(10, 10, Q10), + Q12 = pqueue4:in(9, 9, Q11), + Q13 = pqueue4:in(8, 8, Q12), + Q14 = pqueue4:in(7, 7, Q13), + Q15 = pqueue4:in(6, 6, Q14), + Q16 = pqueue4:in(5, 5, Q15), + Q17 = pqueue4:in(4, 4, Q16), + Q18 = pqueue4:in(3, 3, Q17), + Q19 = pqueue4:in(2, 2, Q18), + Q20 = pqueue4:in(1, 1, Q19), + Q21 = pqueue4:in(0, 0, Q20), + Q22 = pqueue4:in(-1, -1, Q21), + Q23 = pqueue4:in(-2, -2, Q22), + Q24 = pqueue4:in(-3, -3, Q23), + Q25 = pqueue4:in(-4, -4, Q24), + Q26 = pqueue4:in(-5, -5, Q25), + Q27 = pqueue4:in(-6, -6, Q26), + Q28 = pqueue4:in(-7, -7, Q27), + Q29 = pqueue4:in(-8, -8, Q28), + Q30 = pqueue4:in(-9, -9, Q29), + Q31 = pqueue4:in(-10, -10, Q30), + Q32 = pqueue4:in(-11, -11, Q31), + Q33 = pqueue4:in(-12, -12, Q32), + Q34 = pqueue4:in(-13, -13, Q33), + Q35 = pqueue4:in(-14, -14, Q34), + Q36 = pqueue4:in(-15, -15, Q35), + Q37 = pqueue4:in(-16, -16, Q36), + Q38 = pqueue4:in(-17, -17, Q37), + Q39 = pqueue4:in(-18, -18, Q38), + Q40 = pqueue4:in(-19, -19, Q39), + Q41 = pqueue4:in(-20, -20, Q40), + Q42 = pqueue4:in(-20, -20, Q41), + Q43 = pqueue4:in(-19, -19, Q42), + Q44 = pqueue4:in(-18, -18, Q43), + Q45 = pqueue4:in(-17, -17, Q44), + Q46 = pqueue4:in(-16, -16, Q45), + Q47 = pqueue4:in(-15, -15, Q46), + Q48 = pqueue4:in(-14, -14, Q47), + Q49 = pqueue4:in(-13, -13, Q48), + Q50 = pqueue4:in(-12, -12, Q49), + Q51 = pqueue4:in(-11, -11, Q50), + Q52 = pqueue4:in(-10, -10, Q51), + Q53 = pqueue4:in(-9, -9, Q52), + Q54 = pqueue4:in(-8, -8, Q53), + Q55 = pqueue4:in(-7, -7, Q54), + Q56 = pqueue4:in(-6, -6, Q55), + Q57 = pqueue4:in(-5, -5, Q56), + Q58 = pqueue4:in(-4, -4, Q57), + Q59 = pqueue4:in(-3, -3, Q58), + Q60 = pqueue4:in(-2, -2, Q59), + Q61 = pqueue4:in(-1, -1, Q60), + Q62 = pqueue4:in(0, 0, Q61), + Q63 = pqueue4:in(1, 1, Q62), + Q64 = pqueue4:in(2, 2, Q63), + Q65 = pqueue4:in(3, 3, Q64), + Q66 = pqueue4:in(4, 4, Q65), + Q67 = pqueue4:in(5, 5, Q66), + Q68 = pqueue4:in(6, 6, Q67), + Q69 = pqueue4:in(7, 7, Q68), + Q70 = pqueue4:in(8, 8, Q69), + Q71 = pqueue4:in(9, 9, Q70), + Q72 = pqueue4:in(10, 10, Q71), + Q73 = pqueue4:in(11, 11, Q72), + Q74 = pqueue4:in(12, 12, Q73), + Q75 = pqueue4:in(13, 13, Q74), + Q76 = pqueue4:in(14, 14, Q75), + Q77 = pqueue4:in(15, 15, Q76), + Q78 = pqueue4:in(16, 16, Q77), + Q79 = pqueue4:in(17, 17, Q78), + Q80 = pqueue4:in(18, 18, Q79), + Q81 = pqueue4:in(19, 19, Q80), + Q82 = pqueue4:in(20, 20, Q81), + true = pqueue4:is_queue(Q82), + 82 = pqueue4:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue4:to_list(Q82), + [{-20, [-20, -20]}, {-19, [-19, -19]}, {-18, [-18, -18]}, + {-17, [-17, -17]}, {-16, [-16, -16]}, {-15, [-15, -15]}, + {-14, [-14, -14]}, {-13, [-13, -13]}, {-12, [-12, -12]}, + {-11, [-11, -11]}, {-10, [-10, -10]}, {-9, [-9, -9]}, + {-8, [-8, -8]}, {-7, [-7, -7]}, {-6, [-6, -6]}, + {-5, [-5, -5]}, {-4, [-4, -4]}, {-3, [-3, -3]}, + {-2, [-2, -2]}, {-1, [-1, -1]}, {0, [0, 0]}, + {1, [1, 1]}, {2, [2, 2]}, {3, [3, 3]}, + {4, [4, 4]}, {5, [5, 5]}, {6, [6, 6]}, + {7, [7, 7]}, {8, [8, 8]}, {9, [9, 9]}, + {10, [10, 10]}, {11, [11, 11]}, {12, [12, 12]}, + {13, [13, 13]}, {14, [14, 14]}, {15, [15, 15]}, + {16, [16, 16]}, {17, [17, 17]}, {18, [18, 18]}, + {19, [19, 19]}, {20, [20, 20]}] = pqueue4:to_plist(Q82), + {{value, -20}, Q83} = pqueue4:out(Q82), + {{value, -20}, Q84} = pqueue4:out(Q83), + {{value, -19}, Q85} = pqueue4:out(Q84), + {{value, -19}, Q86} = pqueue4:out(Q85), + {{value, -18}, Q87} = pqueue4:out(Q86), + {{value, -18}, Q88} = pqueue4:out(Q87), + {{value, 0}, Q89} = pqueue4:out(0, Q88), + {{value, 0}, Q90} = pqueue4:out(0, Q89), + {empty, _} = pqueue4:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue4:pout(Q90), + {{value, -17, -17}, Q92} = pqueue4:pout(Q91), + {{value, -16, -16}, Q93} = pqueue4:pout(Q92), + {{value, -16, -16}, Q94} = pqueue4:pout(Q93), + {{value, -15, -15}, Q95} = pqueue4:pout(Q94), + {{value, -15, -15}, Q96} = pqueue4:pout(Q95), + {{value, -14, -14}, Q97} = pqueue4:pout(Q96), + {{value, -14, -14}, Q98} = pqueue4:pout(Q97), + {{value, -13, -13}, Q99} = pqueue4:pout(Q98), + {{value, -13, -13}, Q100} = pqueue4:pout(Q99), + {{value, -12, -12}, Q101} = pqueue4:pout(Q100), + {{value, -12, -12}, Q102} = pqueue4:pout(Q101), + {{value, -11, -11}, Q103} = pqueue4:pout(Q102), + {{value, -11, -11}, Q104} = pqueue4:pout(Q103), + {{value, -10, -10}, Q105} = pqueue4:pout(Q104), + {{value, -10, -10}, Q106} = pqueue4:pout(Q105), + {{value, -9, -9}, Q107} = pqueue4:pout(Q106), + {{value, -9, -9}, Q108} = pqueue4:pout(Q107), + {{value, -8, -8}, Q109} = pqueue4:pout(Q108), + {{value, -8, -8}, Q110} = pqueue4:pout(Q109), + {{value, -7, -7}, Q111} = pqueue4:pout(Q110), + {{value, -7, -7}, Q112} = pqueue4:pout(Q111), + {{value, -6, -6}, Q113} = pqueue4:pout(Q112), + {{value, -6, -6}, Q114} = pqueue4:pout(Q113), + {{value, -5, -5}, Q115} = pqueue4:pout(Q114), + {{value, -5, -5}, Q116} = pqueue4:pout(Q115), + {{value, -4, -4}, Q117} = pqueue4:pout(Q116), + {{value, -4, -4}, Q118} = pqueue4:pout(Q117), + {{value, -3, -3}, Q119} = pqueue4:pout(Q118), + {{value, -3, -3}, Q120} = pqueue4:pout(Q119), + {{value, -2, -2}, Q121} = pqueue4:pout(Q120), + {{value, -2, -2}, Q122} = pqueue4:pout(Q121), + {{value, -1, -1}, Q123} = pqueue4:pout(Q122), + {{value, -1, -1}, Q124} = pqueue4:pout(Q123), + {{value, 1, 1}, Q125} = pqueue4:pout(Q124), + {{value, 1, 1}, Q126} = pqueue4:pout(Q125), + {{value, 2, 2}, Q127} = pqueue4:pout(Q126), + {{value, 2, 2}, Q128} = pqueue4:pout(Q127), + {{value, 3, 3}, Q129} = pqueue4:pout(Q128), + {{value, 3, 3}, Q130} = pqueue4:pout(Q129), + {{value, 4, 4}, Q131} = pqueue4:pout(Q130), + {{value, 4, 4}, Q132} = pqueue4:pout(Q131), + {{value, 5, 5}, Q133} = pqueue4:pout(Q132), + {{value, 5, 5}, Q134} = pqueue4:pout(Q133), + {{value, 6, 6}, Q135} = pqueue4:pout(Q134), + {{value, 6, 6}, Q136} = pqueue4:pout(Q135), + {{value, 7, 7}, Q137} = pqueue4:pout(Q136), + {{value, 7, 7}, Q138} = pqueue4:pout(Q137), + {{value, 8, 8}, Q139} = pqueue4:pout(Q138), + {{value, 8, 8}, Q140} = pqueue4:pout(Q139), + {{value, 9, 9}, Q141} = pqueue4:pout(Q140), + {{value, 9, 9}, Q142} = pqueue4:pout(Q141), + {{value, 10, 10}, Q143} = pqueue4:pout(Q142), + {{value, 10, 10}, Q144} = pqueue4:pout(Q143), + {{value, 11, 11}, Q145} = pqueue4:pout(Q144), + {{value, 11, 11}, Q146} = pqueue4:pout(Q145), + {{value, 12, 12}, Q147} = pqueue4:pout(Q146), + {{value, 12, 12}, Q148} = pqueue4:pout(Q147), + {{value, 13, 13}, Q149} = pqueue4:pout(Q148), + {{value, 13, 13}, Q150} = pqueue4:pout(Q149), + {{value, 14, 14}, Q151} = pqueue4:pout(Q150), + {{value, 14, 14}, Q152} = pqueue4:pout(Q151), + {{value, 15, 15}, Q153} = pqueue4:pout(Q152), + {{value, 15, 15}, Q154} = pqueue4:pout(Q153), + {{value, 16, 16}, Q155} = pqueue4:pout(Q154), + {{value, 16, 16}, Q156} = pqueue4:pout(Q155), + {{value, 17, 17}, Q157} = pqueue4:pout(Q156), + {{value, 17, 17}, Q158} = pqueue4:pout(Q157), + {{value, 18, 18}, Q159} = pqueue4:pout(Q158), + {{value, 18, 18}, Q160} = pqueue4:pout(Q159), + {{value, 19, 19}, Q161} = pqueue4:pout(Q160), + {{value, 19, 19}, Q162} = pqueue4:pout(Q161), + {{value, 20, 20}, Q163} = pqueue4:pout(Q162), + {{value, 20, 20}, Q164} = pqueue4:pout(Q163), + {{value, 20}, Q164} = pqueue4:out(Q163), + {{value, 20}, Q164} = pqueue4:out(20, Q163), + true = pqueue4:is_empty(Q164), + empty = erlang:element(1, Q164), % current priority + 0 = erlang:element(2, Q164), % size + {empty, Q164} = pqueue4:pout(Q164), + {empty, Q164} = pqueue4:out(Q164), + {empty, Q164} = pqueue4:out(20, Q164), + + Queue0 = queue:new(), + "{[],[]}" = lists:flatten(io_lib:format("~p", [Queue0])), + Queue1 = queue:in(1, Queue0), + Queue2 = queue:in(2, Queue1), + Queue3 = queue:in(3, Queue2), + {{value, 1}, _} = queue:out(Queue2), + "{[3,2],[1]}" = lists:flatten(io_lib:format("~p", [Queue3])), + {true, {[3],[1]}} = queue_remove_unique(fun(I) -> I == 2 end, {[3,2],[1]}), + Queue4 = queue:filter(fun(I) -> not (I == 2) end, Queue3), + "{[3],[1]}" = lists:flatten(io_lib:format("~p", [Queue4])), + 2 = queue:len(Queue4), + {{value, 1}, _} = queue:out(Queue4), + [1, 3] = queue:to_list(Queue4), + + Q166 = pqueue4:new(), + true = pqueue4:is_queue(Q166), + Q167 = pqueue4:in(6, 1, Q166), + Q168 = pqueue4:in(7, 1, Q167), + Q169 = pqueue4:in(8, 1, Q168), + Q170 = pqueue4:in(3, 0, Q169), + Q171 = pqueue4:in(4, 0, Q170), + Q172 = pqueue4:in(5, 0, Q171), + Q173 = pqueue4:in(0, -1, Q172), + Q174 = pqueue4:in(1, -1, Q173), + Q175 = pqueue4:in(2, -1, Q174), + [{-1, [0, 1, 2]}, {0, [3, 4, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q175), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> I > 5 end, Q175)), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> I < 3 end, Q175)), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> (I < 1) orelse (I > 6) end, Q175)), + {true, Q176} = pqueue4:remove_unique(fun(I) -> I == 4 end, Q175), + [{-1, [0, 1, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q176), + {true, Q177} = pqueue4:remove_unique(fun(I) -> I == 1 end, Q176), + [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q177), + {true, Q178} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q177), + [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 8]}] = pqueue4:to_plist(Q178), + 6 = pqueue4:len(Q178), + {{value, 0, -1}, Q179} = pqueue4:pout(Q178), + {{value, 2}, Q180} = pqueue4:out(Q179), + {{value, 6}, Q181} = pqueue4:out(1, Q180), + {false, Q181} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q181), + [{0, [3, 5]}, {1, [8]}] = pqueue4:to_plist(Q181), + {true, Q182} = pqueue4:remove_unique(fun(I) -> I == 5 end, Q181), + {true, Q183} = pqueue4:remove_unique(fun(I) -> I == 8 end, 1, Q182), + {true, Q184} = pqueue4:remove_unique(fun(I) -> I == 3 end, Q183), + {empty, Q184} = pqueue4:pout(Q184), + {empty, Q184} = pqueue4:out(Q184), + {empty, Q184} = pqueue4:out(0, Q184), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +%% @hidden +-define(FILTER_P_Qn128(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn112(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn96(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn80(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn64(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn48(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn32(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn16(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp16(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp32(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp48(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp64(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp80(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp96(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}). +-define(FILTER_P_Qp112(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}). +-define(FILTER_P_Qp128(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}). + +?FILTER_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?FILTER_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?FILTER_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?FILTER_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?FILTER_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?FILTER_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?FILTER_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?FILTER_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?FILTER_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?FILTER_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?FILTER_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?FILTER_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?FILTER_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?FILTER_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?FILTER_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?FILTER_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?FILTER_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?FILTER_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?FILTER_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?FILTER_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?FILTER_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?FILTER_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?FILTER_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?FILTER_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +filter_priority(0, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + NewQ0 = queue:filter(F, Q0), + NewSize = Size - (queue:len(Q0) - queue:len(NewQ0)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?FILTER_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?FILTER_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?FILTER_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?FILTER_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?FILTER_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?FILTER_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?FILTER_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?FILTER_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?FILTER_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?FILTER_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?FILTER_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?FILTER_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?FILTER_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?FILTER_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?FILTER_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?FILTER_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?FILTER_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?FILTER_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?FILTER_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?FILTER_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?FILTER_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?FILTER_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?FILTER_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?FILTER_P_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +%% @hidden +-define(IN_HIGHER_Qn128(P, V), +in_higher(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + V, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn112(P, V), +in_higher(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, + V, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn96(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, + V, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn80(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, + V, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn64(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, + V, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn48(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, + V, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn32(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn16(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp16(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp32(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp48(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp64(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V, + Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp80(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V, + Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp96(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V, + Qp112, Qp128}). +-define(IN_HIGHER_Qp112(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V, + Qp128}). +-define(IN_HIGHER_Qp128(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V}). + +?IN_HIGHER_Qn128(-128, + {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-127, + {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-126, + {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-125, + {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-124, + {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); +?IN_HIGHER_Qn128(-114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); +?IN_HIGHER_Qn128(-113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); +?IN_HIGHER_Qn112(-112, + {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-111, + {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-110, + {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-109, + {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-108, + {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); +?IN_HIGHER_Qn112(-98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); +?IN_HIGHER_Qn112(-97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); +?IN_HIGHER_Qn96(-96, + {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-95, + {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-94, + {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-93, + {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-92, + {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); +?IN_HIGHER_Qn96(-82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); +?IN_HIGHER_Qn96(-81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); +?IN_HIGHER_Qn80(-80, + {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-79, + {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-78, + {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-77, + {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-76, + {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); +?IN_HIGHER_Qn80(-66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); +?IN_HIGHER_Qn80(-65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); +?IN_HIGHER_Qn64(-64, + {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-63, + {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-62, + {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-61, + {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-60, + {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); +?IN_HIGHER_Qn64(-50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); +?IN_HIGHER_Qn64(-49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); +?IN_HIGHER_Qn48(-48, + {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-47, + {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-46, + {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-45, + {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-44, + {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); +?IN_HIGHER_Qn48(-34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); +?IN_HIGHER_Qn48(-33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); +?IN_HIGHER_Qn32(-32, + {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-31, + {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-30, + {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-29, + {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-28, + {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); +?IN_HIGHER_Qn32(-18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); +?IN_HIGHER_Qn32(-17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); +?IN_HIGHER_Qn16(-16, + {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-15, + {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-14, + {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-13, + {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-12, + {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); +?IN_HIGHER_Qn16(-2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); +?IN_HIGHER_Qn16(-1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); +in_higher(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {0, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + queue:in(X, Q0), + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?IN_HIGHER_Qp16(1, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(2, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(3, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(4, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(5, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); +?IN_HIGHER_Qp16(15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); +?IN_HIGHER_Qp16(16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); +?IN_HIGHER_Qp32(17, + {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(18, + {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(19, + {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(20, + {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(21, + {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); +?IN_HIGHER_Qp32(31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); +?IN_HIGHER_Qp32(32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); +?IN_HIGHER_Qp48(33, + {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(34, + {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(35, + {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(36, + {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(37, + {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); +?IN_HIGHER_Qp48(47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); +?IN_HIGHER_Qp48(48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); +?IN_HIGHER_Qp64(49, + {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(50, + {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(51, + {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(52, + {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(53, + {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); +?IN_HIGHER_Qp64(63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); +?IN_HIGHER_Qp64(64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); +?IN_HIGHER_Qp80(65, + {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(66, + {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(67, + {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(68, + {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(69, + {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); +?IN_HIGHER_Qp80(79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); +?IN_HIGHER_Qp80(80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); +?IN_HIGHER_Qp96(81, + {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(82, + {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(83, + {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(84, + {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(85, + {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); +?IN_HIGHER_Qp96(95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); +?IN_HIGHER_Qp96(96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); +?IN_HIGHER_Qp112(97, + {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(98, + {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(99, + {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(100, + {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(101, + {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); +?IN_HIGHER_Qp112(111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); +?IN_HIGHER_Qp112(112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); +?IN_HIGHER_Qp128(113, + {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(114, + {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(115, + {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(116, + {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(117, + {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); +?IN_HIGHER_Qp128(127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); +?IN_HIGHER_Qp128(128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). + +%% @hidden +-define(IN_LOWER_Qn128(P, V), +in_lower(P, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + V, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn112(P, V), +in_lower(P, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, + V, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn96(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, + V, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn80(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, + V, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn64(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, + V, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn48(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, + V, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn32(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn16(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp16(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp32(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp48(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp64(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V, + Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp80(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V, + Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp96(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V, + Qp112, Qp128}). +-define(IN_LOWER_Qp112(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V, + Qp128}). +-define(IN_LOWER_Qp128(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V}). + +?IN_LOWER_Qn128(-128, + {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-127, + {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-126, + {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-125, + {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-124, + {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); +?IN_LOWER_Qn128(-114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); +?IN_LOWER_Qn128(-113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); +?IN_LOWER_Qn112(-112, + {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-111, + {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-110, + {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-109, + {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-108, + {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); +?IN_LOWER_Qn112(-98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); +?IN_LOWER_Qn112(-97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); +?IN_LOWER_Qn96(-96, + {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-95, + {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-94, + {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-93, + {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-92, + {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); +?IN_LOWER_Qn96(-82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); +?IN_LOWER_Qn96(-81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); +?IN_LOWER_Qn80(-80, + {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-79, + {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-78, + {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-77, + {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-76, + {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); +?IN_LOWER_Qn80(-66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); +?IN_LOWER_Qn80(-65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); +?IN_LOWER_Qn64(-64, + {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-63, + {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-62, + {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-61, + {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-60, + {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); +?IN_LOWER_Qn64(-50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); +?IN_LOWER_Qn64(-49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); +?IN_LOWER_Qn48(-48, + {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-47, + {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-46, + {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-45, + {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-44, + {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); +?IN_LOWER_Qn48(-34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); +?IN_LOWER_Qn48(-33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); +?IN_LOWER_Qn32(-32, + {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-31, + {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-30, + {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-29, + {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-28, + {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); +?IN_LOWER_Qn32(-18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); +?IN_LOWER_Qn32(-17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); +?IN_LOWER_Qn16(-16, + {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-15, + {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-14, + {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-13, + {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-12, + {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); +?IN_LOWER_Qn16(-2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); +?IN_LOWER_Qn16(-1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); +in_lower(0, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + queue:in(X, Q0), + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?IN_LOWER_Qp16(1, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(2, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(3, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(4, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(5, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); +?IN_LOWER_Qp16(15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); +?IN_LOWER_Qp16(16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); +?IN_LOWER_Qp32(17, + {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(18, + {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(19, + {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(20, + {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(21, + {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); +?IN_LOWER_Qp32(31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); +?IN_LOWER_Qp32(32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); +?IN_LOWER_Qp48(33, + {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(34, + {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(35, + {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(36, + {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(37, + {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); +?IN_LOWER_Qp48(47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); +?IN_LOWER_Qp48(48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); +?IN_LOWER_Qp64(49, + {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(50, + {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(51, + {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(52, + {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(53, + {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); +?IN_LOWER_Qp64(63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); +?IN_LOWER_Qp64(64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); +?IN_LOWER_Qp80(65, + {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(66, + {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(67, + {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(68, + {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(69, + {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); +?IN_LOWER_Qp80(79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); +?IN_LOWER_Qp80(80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); +?IN_LOWER_Qp96(81, + {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(82, + {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(83, + {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(84, + {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(85, + {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); +?IN_LOWER_Qp96(95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); +?IN_LOWER_Qp96(96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); +?IN_LOWER_Qp112(97, + {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(98, + {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(99, + {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(100, + {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(101, + {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); +?IN_LOWER_Qp112(111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); +?IN_LOWER_Qp112(112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); +?IN_LOWER_Qp128(113, + {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(114, + {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(115, + {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(116, + {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(117, + {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); +?IN_LOWER_Qp128(127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); +?IN_LOWER_Qp128(128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). + +%% @hidden +-define(OUT_CURRENT_Qn128(P, V1, V2, V3), +out_current(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn112(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn96(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn80(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn64(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn48(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn32(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn16(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp16(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp32(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp48(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp64(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp80(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp96(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp112(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}} + end). +-define(OUT_CURRENT_Qp128(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}} + end). + +?OUT_CURRENT_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_CURRENT_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_CURRENT_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_CURRENT_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_CURRENT_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_CURRENT_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_CURRENT_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_CURRENT_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_CURRENT_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_CURRENT_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_CURRENT_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_CURRENT_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_CURRENT_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_CURRENT_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_CURRENT_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_CURRENT_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_current(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, NewQ0} = queue:out(Q0), + if + Value =:= empty -> + out_current(1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> 0 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end; +?OUT_CURRENT_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_CURRENT_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_CURRENT_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_CURRENT_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_CURRENT_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_CURRENT_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_CURRENT_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_CURRENT_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_CURRENT_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_CURRENT_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_CURRENT_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_CURRENT_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_CURRENT_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_CURRENT_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_CURRENT_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +out_current(128, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, NewQp128} = queue:out(Qp128), + if + Value =:= empty -> + {empty, + {empty, + 0, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}}; + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> 128 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} + end. + +%% @hidden +-define(OUT_CURRENT_P_Qn128(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn112(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn96(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn80(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn64(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn48(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn32(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn16(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp16(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp32(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp48(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp64(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp80(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp96(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp112(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}} + end). +-define(OUT_CURRENT_P_Qp128(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}} + end). + +?OUT_CURRENT_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_CURRENT_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_CURRENT_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_CURRENT_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_CURRENT_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_CURRENT_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_CURRENT_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_CURRENT_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_CURRENT_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_CURRENT_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_CURRENT_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_CURRENT_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_CURRENT_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_CURRENT_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_CURRENT_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_CURRENT_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_current_p(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(Q0) of + {empty, _} -> + out_current_p(1, Q); + {{value, X}, NewQ0} -> + NewSize = Size - 1, + {{value, X, 0}, + {if NewSize == 0 -> empty; true -> 0 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end; +?OUT_CURRENT_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_CURRENT_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_CURRENT_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_CURRENT_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_CURRENT_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_CURRENT_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_CURRENT_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_CURRENT_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_CURRENT_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_CURRENT_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_CURRENT_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_CURRENT_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_CURRENT_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_CURRENT_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_CURRENT_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +out_current_p(128, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + case queue:out(Qp128) of + {empty, _} -> + {empty, + {empty, + 0, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}}; + {{value, X}, NewQp128} -> + NewSize = Size - 1, + {{value, X, 128}, + {if NewSize == 0 -> empty; true -> 128 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} + end. + +%% @hidden +-define(OUT_SPECIFIC_Qn128(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn112(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn96(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn80(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn64(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn48(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn32(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn16(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp16(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp32(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp48(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp64(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp80(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp96(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp112(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}}). +-define(OUT_SPECIFIC_Qp128(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}}). + +?OUT_SPECIFIC_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_SPECIFIC_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_SPECIFIC_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_SPECIFIC_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_SPECIFIC_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_SPECIFIC_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_SPECIFIC_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_SPECIFIC_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_SPECIFIC_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_SPECIFIC_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_SPECIFIC_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_SPECIFIC_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_SPECIFIC_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_SPECIFIC_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_SPECIFIC_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_SPECIFIC_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_specific(0, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, NewQ0} = queue:out(Q0), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; +?OUT_SPECIFIC_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_SPECIFIC_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_SPECIFIC_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_SPECIFIC_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_SPECIFIC_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_SPECIFIC_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_SPECIFIC_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_SPECIFIC_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_SPECIFIC_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_SPECIFIC_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_SPECIFIC_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_SPECIFIC_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_SPECIFIC_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_SPECIFIC_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_SPECIFIC_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?OUT_SPECIFIC_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +%% @hidden +-define(REMOVE_UNIQ_P_Qn128(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn112(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn96(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn80(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn64(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn48(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn32(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn16(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp16(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp32(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp48(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp64(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp80(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp96(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp112(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}}). +-define(REMOVE_UNIQ_P_Qp128(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}}). + +?REMOVE_UNIQ_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?REMOVE_UNIQ_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?REMOVE_UNIQ_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?REMOVE_UNIQ_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?REMOVE_UNIQ_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?REMOVE_UNIQ_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?REMOVE_UNIQ_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?REMOVE_UNIQ_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +remove_unique_p(0, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, NewQ0} = queue_remove_unique(F, Q0), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; +?REMOVE_UNIQ_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?REMOVE_UNIQ_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?REMOVE_UNIQ_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?REMOVE_UNIQ_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?REMOVE_UNIQ_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?REMOVE_UNIQ_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?REMOVE_UNIQ_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?REMOVE_UNIQ_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq4())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + +%%------------------------------------------------------------------------- +%% @hidden +%% remove a unique value from a queue based on a binary predicate, +%% traversal order is undefined to keep it efficient (i.e., shouldn't matter) +%% (based on the implementation of queue:filter/2 +%% which is under the Apache License 2.0) +%%------------------------------------------------------------------------- + +-spec queue_remove_unique(F :: fun((any()) -> boolean()), + Q :: {list(), list()}) -> + {boolean(), {list(), list()}}. + +queue_remove_unique(Fun, {R0, F0} = Q) + when is_function(Fun, 1), is_list(R0), is_list(F0) -> + case queue_remove_unique_f(Fun, F0) of + {true, []} -> + {true, queue_r2f(R0)}; + {true, F1} -> + {true, {R0, F1}}; + {false, F1} -> + %true = F1 == F0, + case queue_remove_unique_f(Fun, R0) of % backwards + {true, []} -> + {true, queue_f2r(F1)}; + {true, R1} -> + {true, {R1, F1}}; + {false, _} -> + {false, Q} + end + end; +queue_remove_unique(Fun, Q) -> + erlang:error(badarg, [Fun,Q]). + +% Call Fun in front to back order +queue_remove_unique_f(_, [] = F) -> + {false, F}; +queue_remove_unique_f(Fun, F) -> + queue_remove_unique_f(F, [], F, Fun). + +queue_remove_unique_f([], _, F, _) -> + {false, F}; +queue_remove_unique_f([X | F0], F1, F, Fun) -> + case Fun(X) of + true -> + {true, lists:reverse(F1, F0)}; + false -> + queue_remove_unique_f(F0, [X | F1], F, Fun) + end. + +-compile({inline, [{queue_r2f,1},{queue_f2r,1}]}). + +% Move half of elements from R to F, if there are at least three +queue_r2f([]) -> + {[],[]}; +queue_r2f([_]=R) -> + {[],R}; +queue_r2f([X,Y]) -> + {[X],[Y]}; +queue_r2f(List) -> + {FF,RR} = lists:split(length(List) div 2 + 1, List), + {FF,lists:reverse(RR, [])}. + +% Move half of elements from F to R, if there are enough +queue_f2r([]) -> + {[],[]}; +queue_f2r([_]=F) -> + {F,[]}; +queue_f2r([X,Y]) -> + {[Y],[X]}; +queue_f2r(List) -> + {FF,RR} = lists:split(length(List) div 2 + 1, List), + {lists:reverse(RR, []),FF}. + diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl b/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl new file mode 100644 index 0000000..cedffe0 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl @@ -0,0 +1,49 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% pqueue eunit common functionality +%%% +%%% MIT License +%%% +%%% Copyright (c) 2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%%------------------------------------------------------------------------ + +-ifndef(_assertOk). +-define(_assertOk(Expr), ?_assertEqual(ok, Expr)). +-endif. + +-ifdef(CLOUDI_TEST_TIMEOUT). +-define(TEST_TIMEOUT, ?CLOUDI_TEST_TIMEOUT). % seconds +-else. +-define(TEST_TIMEOUT, 10). % seconds +-endif. +-ifndef(CLOUDI_LONG_TEST_TIMEOUT). +-define(CLOUDI_LONG_TEST_TIMEOUT, 60). % minutes +-endif. + +test_condition(_, 0) -> + []; +test_condition(L, LongTestTimeout) + when LongTestTimeout > 0 -> + {timeout, LongTestTimeout * 60, L}. + diff --git a/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl b/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl new file mode 100644 index 0000000..6702960 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl @@ -0,0 +1,156 @@ +-module(pqueue_proper). +-ifdef(TEST). +-include_lib("proper/include/proper.hrl"). + +-behaviour(proper_statem). + +-export([qc_pq/0, qc_pq2/0, qc_pq3/0, qc_pq4/0, correct/1]). + +-export([command/1, initial_state/0, next_state/3, postcondition/3, + precondition/2]). + +-type value() :: integer(). +-record(state, { in_queue :: [{value(), term()}] }). +-define(SERVER, queue_srv). + +priority() -> + integer(-20, 20). + +%% Selects priorities we have added +priority(InQ) -> + elements([P || {P, _} <- InQ]). + +value() -> + integer(). + +initial_state() -> + #state { in_queue = [] }. + +command(#state { in_queue = InQ }) -> + oneof([{call, ?SERVER, in, [value()]}, + {call, ?SERVER, in, [value(), priority()]}, + {call, ?SERVER, is_empty, []}, + {call, ?SERVER, is_queue, []}, + {call, ?SERVER, len, []}, + {call, ?SERVER, out, []}] ++ + [{call, ?SERVER, out, [priority(InQ)]} || InQ =/= []] ++ + [{call, ?SERVER, pout, []}, + {call, ?SERVER, to_list, []}]). + +next_state(#state { in_queue = InQ } = S, _V, {call, _, out, []}) -> + S#state { in_queue = listq_rem(InQ) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, out, [Prio]}) -> + S#state { in_queue = listq_rem(InQ, Prio) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, pout, _}) -> + S#state { in_queue = listq_rem(InQ) }; +next_state(S, _V, {call, _, to_list, _}) -> S; +next_state(S, _V, {call, _, is_queue, _}) -> S; +next_state(S, _V, {call, _, is_empty, _}) -> S; +next_state(S, _V, {call, _, len, _}) -> S; +next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value, Prio]}) -> + S#state { in_queue = listq_insert({Prio, Value}, InQ) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value]}) -> + S#state { in_queue = listq_insert({0, Value}, InQ) }. + +precondition(_S, _Call) -> + true. % No limitation on the things we can call at all. + +postcondition(#state { in_queue = InQ }, {call, _, out, [Prio]}, R) -> + R == listq_prio_peek(InQ, Prio); +postcondition(#state { in_queue = InQ }, {call, _, pout, _}, R) -> + R == listq_ppeek(InQ); +postcondition(#state { in_queue = InQ }, {call, _, out, _}, R) -> + R == listq_peek(InQ); +postcondition(S, {call, _, to_list, _}, R) -> + R == listq_to_list(S#state.in_queue); +postcondition(S, {call, _, len, _}, L) -> + L == listq_length(S#state.in_queue); +postcondition(_S, {call, _, is_queue, _}, true) -> true; +postcondition(S, {call, _, is_empty, _}, Res) -> + Res == (S#state.in_queue == []); +postcondition(_S, {call, _, in, _}, _) -> + true; +postcondition(_, _, _) -> + false. + +correct(M) -> + ?FORALL(Cmds, commands(?MODULE), + ?TRAPEXIT( + begin + ?SERVER:start_link(M), + {History,State,Result} = run_commands(?MODULE, Cmds), + ?SERVER:stop(), + ?WHENFAIL(io:format("History: ~w\nState: ~w\nResult: ~w\n", + [History,State,Result]), + aggregate(command_names(Cmds), Result =:= ok)) + end)). + +qc_opts() -> + [{numtests, 10000}]. + +qc_pq() -> + proper:quickcheck(pqueue_proper:correct(pqueue), qc_opts()). + +qc_pq2() -> + proper:quickcheck(pqueue_proper:correct(pqueue2), qc_opts()). + +qc_pq3() -> + proper:quickcheck(pqueue_proper:correct(pqueue3), qc_opts()). + +qc_pq4() -> + proper:quickcheck(pqueue_proper:correct(pqueue4), qc_opts()). + +%% ---------------------------------------------------------------------- + +%% A listq is a sorted list of priorities +listq_insert({P, V}, []) -> + [{P, [V]}]; +listq_insert({P, V}, [{P1, _} | _] = LQ) when P < P1 -> + [{P, [V]} | LQ]; +listq_insert({P, V}, [{P1, Vs} | Next]) when P == P1 -> + [{P, Vs ++ [V]} | Next]; +listq_insert({P, V}, [{P1, Vs} | Next]) when P > P1 -> + [{P1, Vs} | listq_insert({P, V}, Next)]. + +listq_to_list(L) -> + lists:concat( + [ Vals || {_Prio, Vals} <- L]). + +listq_length(L) -> + lists:sum( + [ length(Vs) || {_Prio, Vs} <- L]). + +listq_rem([]) -> + []; +listq_rem([{_P, [_V]} | Next]) -> + Next; +listq_rem([{P, [_V1 | Vs]} | Next]) -> + [{P, Vs} | Next]. + +listq_rem([], _P) -> + []; +listq_rem([{P, [_]} | Next], P) -> + Next; +listq_rem([{P, [_ | Vs]} | Next], P) -> + [{P, Vs} | Next]; +listq_rem([{P1, Vs} | Next], P) -> + [{P1, Vs} | listq_rem(Next, P)]. + +listq_peek([]) -> + empty; +listq_peek([{_P, [V | _]} | _]) -> + {value, V}. + +listq_prio_peek([{P, [V | _]} | _], P) -> + {value, V}; +listq_prio_peek([{_P1, _} | Next], P) -> + listq_prio_peek(Next, P); +listq_prio_peek([], _P) -> + empty. + +listq_ppeek([]) -> + empty; +listq_ppeek([{P, [V | _]} | _]) -> + {value, V, P}. + +-endif. diff --git a/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl b/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl new file mode 100644 index 0000000..7fcb0a1 --- /dev/null +++ b/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl @@ -0,0 +1,183 @@ +%%%------------------------------------------------------------------- +%%% @author Jesper Louis andersen <> +%%% @copyright (C) 2011, Jesper Louis andersen +%%% @doc +%%% +%%% @end +%%% Created : 11 Nov 2011 by Jesper Louis andersen <> +%%%------------------------------------------------------------------- +-module(queue_srv). + +-behaviour(gen_server). + +%% API +-export([start_link/1, stop/0, len/0, in/1, in/2, is_empty/0, + out/0, out/1, pout/0, + is_queue/0, to_list/0]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +-define(SERVER, ?MODULE). + +-record(state, { mod, q }). + +%%%=================================================================== +%%% API +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @doc +%% Starts the server +%% +%% @spec start_link(Mod) -> {ok, Pid} | ignore | {error, Error} +%% @end +%%-------------------------------------------------------------------- +start_link(Mod) -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [Mod], []). + +stop() -> + gen_server:stop(?SERVER). + +call(M) -> + gen_server:call(?SERVER, M, infinity). + +in(I) -> + call({in, I}). + +in(I, P) -> + call({in, I, P}). + +len() -> + call(len). + +is_empty() -> + call(is_empty). + +is_queue() -> + call(is_queue). + +to_list() -> + call(to_list). + +out() -> + call(out). + +out(P) -> + call({out, P}). + +pout() -> + call(pout). + +%%%=================================================================== +%%% gen_server callbacks +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Initializes the server +%% +%% @spec init(Args) -> {ok, State} | +%% {ok, State, Timeout} | +%% ignore | +%% {stop, Reason} +%% @end +%%-------------------------------------------------------------------- +init([Mod]) -> + {ok, #state{ mod = Mod, + q = Mod:new() }}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling call messages +%% +%% @spec handle_call(Request, From, State) -> +%% {reply, Reply, State} | +%% {reply, Reply, State, Timeout} | +%% {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, Reply, State} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_call({in, Item}, _F, #state { q = Q, mod = M } = S) -> + NQ = M:in(Item, Q), + {reply, ok, S#state { q = NQ }}; +handle_call({in, Item, Prio}, _F, #state { q = Q, mod = M } = S) -> + NQ = M:in(Item, Prio, Q), + {reply, ok, S#state { q = NQ }}; +handle_call({out, P}, _F, #state { q = Q, mod = M } = S) -> + {R, NQ} = M:out(P, Q), + {reply, R, S#state { q = NQ }}; +handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == out; + Ty == pout -> + {R, NQ} = M:Ty(Q), + {reply, R, S#state { q = NQ }}; +handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == is_queue; + Ty == is_empty; + Ty == len; + Ty == to_list -> + R = M:Ty(Q), + {reply, R, S}; +handle_call(Req, From, State) -> + error_logger:info_report([{handle_call, Req, From, State}]), + Reply = ok, + {reply, Reply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling cast messages +%% +%% @spec handle_cast(Msg, State) -> {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_cast(_Msg, State) -> + {noreply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling all non call/cast messages +%% +%% @spec handle_info(Info, State) -> {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_info(_Info, State) -> + {noreply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% This function is called by a gen_server when it is about to +%% terminate. It should be the opposite of Module:init/1 and do any +%% necessary cleaning up. When it returns, the gen_server terminates +%% with Reason. The return value is ignored. +%% +%% @spec terminate(Reason, State) -> void() +%% @end +%%-------------------------------------------------------------------- +terminate(_Reason, _State) -> + ok. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Convert process state when code is changed +%% +%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState} +%% @end +%%-------------------------------------------------------------------- +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache new file mode 100644 index 0000000..4ef501f Binary files /dev/null and b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache differ diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta new file mode 100644 index 0000000..90aa893 Binary files /dev/null and b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta differ diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl new file mode 100644 index 0000000..59361a2 --- /dev/null +++ b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl @@ -0,0 +1,287 @@ +-module(simplifile). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([read/1, write/2, delete/1, delete_all/1, append/2, read_bits/1, write_bits/2, append_bits/2, is_directory/1, create_directory/1, read_directory/1, is_file/1, create_file/1, get_files/1, create_directory_all/1, copy_directory/2, rename_directory/2, copy_file/2, rename_file/2]). +-export_type([file_error/0]). + +-type file_error() :: eacces | + eagain | + ebadf | + ebadmsg | + ebusy | + edeadlk | + edeadlock | + edquot | + eexist | + efault | + efbig | + eftype | + eintr | + einval | + eio | + eisdir | + eloop | + emfile | + emlink | + emultihop | + enametoolong | + enfile | + enobufs | + enodev | + enolck | + enolink | + enoent | + enomem | + enospc | + enosr | + enostr | + enosys | + enotblk | + enotdir | + enotsup | + enxio | + eopnotsupp | + eoverflow | + eperm | + epipe | + erange | + erofs | + espipe | + esrch | + estale | + etxtbsy | + exdev | + not_utf8 | + unknown. + +-spec do_append(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_append(Content, Filepath) -> + _pipe = Content, + _pipe@1 = gleam_stdlib:identity(_pipe), + simplifile_erl:append_file(_pipe@1, Filepath). + +-spec do_write(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_write(Content, Filepath) -> + _pipe = Content, + _pipe@1 = gleam_stdlib:identity(_pipe), + simplifile_erl:write_file(_pipe@1, Filepath). + +-spec do_read(binary()) -> {ok, binary()} | {error, file_error()}. +do_read(Filepath) -> + case simplifile_erl:read_file(Filepath) of + {ok, Bits} -> + case gleam@bit_array:to_string(Bits) of + {ok, Str} -> + {ok, Str}; + + _ -> + {error, not_utf8} + end; + + {error, E} -> + {error, E} + end. + +-spec cast_error({ok, JXG} | {error, file_error()}) -> {ok, JXG} | + {error, file_error()}. +cast_error(Input) -> + Input. + +-spec read(binary()) -> {ok, binary()} | {error, file_error()}. +read(Filepath) -> + _pipe = do_read(Filepath), + cast_error(_pipe). + +-spec write(binary(), binary()) -> {ok, nil} | {error, file_error()}. +write(Filepath, Contents) -> + _pipe = do_write(Contents, Filepath), + cast_error(_pipe). + +-spec delete(binary()) -> {ok, nil} | {error, file_error()}. +delete(Path) -> + _pipe = simplifile_erl:recursive_delete(Path), + cast_error(_pipe). + +-spec delete_all(list(binary())) -> {ok, nil} | {error, file_error()}. +delete_all(Paths) -> + case Paths of + [] -> + {ok, nil}; + + [Path | Rest] -> + case delete(Path) of + {ok, nil} -> + delete_all(Rest); + + {error, enoent} -> + delete_all(Rest); + + E -> + E + end + end. + +-spec append(binary(), binary()) -> {ok, nil} | {error, file_error()}. +append(Filepath, Contents) -> + _pipe = do_append(Contents, Filepath), + cast_error(_pipe). + +-spec read_bits(binary()) -> {ok, bitstring()} | {error, file_error()}. +read_bits(Filepath) -> + _pipe = simplifile_erl:read_file(Filepath), + cast_error(_pipe). + +-spec write_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. +write_bits(Filepath, Bits) -> + _pipe = simplifile_erl:write_file(Bits, Filepath), + cast_error(_pipe). + +-spec append_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. +append_bits(Filepath, Bits) -> + _pipe = simplifile_erl:append_file(Bits, Filepath), + cast_error(_pipe). + +-spec is_directory(binary()) -> boolean(). +is_directory(Filepath) -> + filelib:is_dir(Filepath). + +-spec create_directory(binary()) -> {ok, nil} | {error, file_error()}. +create_directory(Filepath) -> + _pipe = simplifile_erl:make_directory(Filepath), + cast_error(_pipe). + +-spec read_directory(binary()) -> {ok, list(binary())} | {error, file_error()}. +read_directory(Path) -> + _pipe = simplifile_erl:list_directory(Path), + cast_error(_pipe). + +-spec is_file(binary()) -> boolean(). +is_file(Filepath) -> + simplifile_erl:is_file(Filepath). + +-spec create_file(binary()) -> {ok, nil} | {error, file_error()}. +create_file(Filepath) -> + case begin + _pipe = Filepath, + is_file(_pipe) + end + orelse begin + _pipe@1 = Filepath, + is_directory(_pipe@1) + end of + true -> + {error, eexist}; + + false -> + write_bits(Filepath, <<>>) + end. + +-spec do_copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_copy_directory(Src, Dest) -> + gleam@result:'try'( + read_directory(Src), + fun(Segments) -> + _pipe = Segments, + gleam@list:each( + _pipe, + fun(Segment) -> + Src_path = <<<>/binary, + Segment/binary>>, + Dest_path = <<<>/binary, + Segment/binary>>, + case {is_file(Src_path), is_directory(Src_path)} of + {true, false} -> + gleam@result:'try'( + read_bits(Src_path), + fun(Content) -> _pipe@1 = Content, + write_bits(Dest_path, _pipe@1) end + ); + + {false, true} -> + gleam@result:'try'( + create_directory(Dest_path), + fun(_) -> + do_copy_directory(Src_path, Dest_path) + end + ); + + {_, _} -> + erlang:error(#{gleam_error => panic, + message => <<"unreachable"/utf8>>, + module => <<"simplifile"/utf8>>, + function => <<"do_copy_directory"/utf8>>, + line => 341}) + end + end + ), + {ok, nil} + end + ). + +-spec get_files(binary()) -> {ok, list(binary())} | {error, file_error()}. +get_files(Directory) -> + gleam@result:'try'( + read_directory(Directory), + fun(Contents) -> + Paths = gleam@list:map( + Contents, + fun(Segment) -> + <<<>/binary, Segment/binary>> + end + ), + Files = gleam@list:filter(Paths, fun is_file/1), + case gleam@list:filter(Paths, fun is_directory/1) of + [] -> + {ok, Files}; + + Directories -> + gleam@result:'try'( + gleam@list:try_map(Directories, fun get_files/1), + fun(Nested_files) -> + {ok, + gleam@list:append( + Files, + gleam@list:flatten(Nested_files) + )} + end + ) + end + end + ). + +-spec create_directory_all(binary()) -> {ok, nil} | {error, file_error()}. +create_directory_all(Dirpath) -> + Path = case begin + _pipe = Dirpath, + gleam@string:ends_with(_pipe, <<"/"/utf8>>) + end of + true -> + Dirpath; + + false -> + <> + end, + _pipe@1 = simplifile_erl:create_dir_all(Path), + cast_error(_pipe@1). + +-spec copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +copy_directory(Src, Dest) -> + gleam@result:'try'( + create_directory_all(Dest), + fun(_) -> do_copy_directory(Src, Dest) end + ). + +-spec rename_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +rename_directory(Src, Dest) -> + gleam@result:'try'(copy_directory(Src, Dest), fun(_) -> delete(Src) end). + +-spec copy_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. +copy_file(Src, Dest) -> + _pipe = file:copy(Src, Dest), + _pipe@1 = gleam@result:replace(_pipe, nil), + cast_error(_pipe@1). + +-spec rename_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. +rename_file(Src, Dest) -> + _pipe = simplifile_erl:rename_file(Src, Dest), + cast_error(_pipe). diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl new file mode 100644 index 0000000..dac135a --- /dev/null +++ b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl @@ -0,0 +1,70 @@ +-module(simplifile_erl). +-export([ + read_file/1, + append_file/2, write_file/2, delete_file/1, delete_directory/1, recursive_delete/1, + list_directory/1, make_directory/1, is_file/1, create_dir_all/1, rename_file/2 +]). + +-define(is_posix_error(Error), + Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse + Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse + Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse + Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse + Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse + Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse + Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse + Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse + Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse + Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse + Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse + Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse + Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse + Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse + Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse + Error =:= etxtbsy orelse Error =:= exdev +). + +posix_result(Result) -> + case Result of + ok -> {ok, nil}; + {ok, Value} -> {ok, Value}; + {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} + end. + +read_file(Filename) -> + posix_result(file:read_file(Filename)). + +write_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents)). + +append_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents, [append])). + +delete_file(Filename) -> + posix_result(file:delete(Filename)). + +make_directory(Dir) -> + posix_result(file:make_dir(Dir)). + +list_directory(Dir) -> + case file:list_dir(Dir) of + {ok, Filenames} -> + {ok, [list_to_binary(Filename) || Filename <- Filenames]}; + {error, Reason} when ?is_posix_error(Reason) -> + {error, Reason} + end. + +delete_directory(Dir) -> + posix_result(file:del_dir(Dir)). + +recursive_delete(Dir) -> + posix_result(file:del_dir_r(Dir)). + +is_file(Filename) -> + not (file:read_file_info(Filename) == {error, enoent}) and not filelib: is_dir(Filename). + +create_dir_all(Filename) -> + posix_result(filelib:ensure_dir(Filename)). + +rename_file(Source, Destination) -> + posix_result(file:rename(Source, Destination)). diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs new file mode 100644 index 0000000..faf4109 --- /dev/null +++ b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs @@ -0,0 +1,102 @@ +import fs from "node:fs" +import path from "node:path" +import { BitArray, Ok, Error as GError, toList} from "./gleam.mjs"; + +export function readBits(filepath) { + try { + const contents = fs.readFileSync(path.normalize(filepath)) + return new Ok(new BitArray(new Uint8Array(contents))) + } catch(e) { + return new GError(stringifyError(e)) + } +} + +export function writeBits(contents, filepath) { + try { + fs.writeFileSync(path.normalize(filepath), contents.buffer) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function appendBits(contents, filepath) { + try { + fs.appendFileSync(path.normalize(filepath), contents.buffer) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +function stringifyError(e) { + return e.code +} + +export function isFile(filepath) { + let fp = path.normalize(filepath) + return fs.existsSync(fp) && fs.lstatSync(fp).isFile(); +} + +export function isDirectory(filepath) { + let fp = path.normalize(filepath) + return fs.existsSync(fp) && fs.lstatSync(fp).isDirectory(); +} + +export function makeDirectory(filepath) { + try { + fs.mkdirSync(path.normalize(filepath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function createDirAll(filepath) { + try { + fs.mkdirSync(filepath, { recursive: true }) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function deleteFileOrDirRecursive(fileOrDirPath) { + try { + if (isDirectory(fileOrDirPath)) { + fs.rmSync(path.normalize(fileOrDirPath), { recursive: true }) + } else { + fs.unlinkSync(path.normalize(fileOrDirPath)) + } + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function listContents(filepath) { + try { + const stuff = toList(fs.readdirSync(path.normalize(filepath))) + return new Ok(stuff) + } catch(e) { + return new GError(stringifyError(e)) + } +} + +export function copyFile(srcpath, destpath) { + try { + fs.copyFileSync(path.normalize(srcpath), path.normalize(destpath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function renameFile(srcpath, destpath) { + try { + fs.renameSync(path.normalize(srcpath), path.normalize(destpath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app new file mode 100644 index 0000000..3bb63fa --- /dev/null +++ b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app @@ -0,0 +1,7 @@ +{application, simplifile, [ + {vsn, "1.0.0"}, + {applications, [gleam_stdlib]}, + {description, "Basic file operations that work on all targets"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam new file mode 100644 index 0000000..7d3bcd6 Binary files /dev/null and b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam differ diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam new file mode 100644 index 0000000..b859e1e Binary files /dev/null and b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache new file mode 100644 index 0000000..7fa2fe5 Binary files /dev/null and b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta new file mode 100644 index 0000000..daef1e9 Binary files /dev/null and b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl new file mode 100644 index 0000000..a3ad8f4 --- /dev/null +++ b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl @@ -0,0 +1,74 @@ +-module(snag). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/1, error/1, layer/2, context/2, pretty_print/1, line_print/1]). +-export_type([snag/0]). + +-type snag() :: {snag, binary(), list(binary())}. + +-spec new(binary()) -> snag(). +new(Issue) -> + {snag, Issue, []}. + +-spec error(binary()) -> {ok, any()} | {error, snag()}. +error(Issue) -> + {error, new(Issue)}. + +-spec layer(snag(), binary()) -> snag(). +layer(Snag, Issue) -> + {snag, Issue, [erlang:element(2, Snag) | erlang:element(3, Snag)]}. + +-spec context({ok, IOV} | {error, snag()}, binary()) -> {ok, IOV} | + {error, snag()}. +context(Result, Issue) -> + case Result of + {ok, _} -> + Result; + + {error, Snag} -> + {error, layer(Snag, Issue)} + end. + +-spec pretty_print_cause(list(binary())) -> gleam@string_builder:string_builder(). +pretty_print_cause(Cause) -> + _pipe = Cause, + _pipe@1 = gleam@list:index_map( + _pipe, + fun(Index, Line) -> + gleam@string:concat( + [<<" "/utf8>>, + gleam@int:to_string(Index), + <<": "/utf8>>, + Line, + <<"\n"/utf8>>] + ) + end + ), + gleam@string_builder:from_strings(_pipe@1). + +-spec pretty_print(snag()) -> binary(). +pretty_print(Snag) -> + Builder = gleam@string_builder:from_strings( + [<<"error: "/utf8>>, erlang:element(2, Snag), <<"\n"/utf8>>] + ), + gleam@string_builder:to_string(case erlang:element(3, Snag) of + [] -> + Builder; + + Cause -> + _pipe = Builder, + _pipe@1 = gleam@string_builder:append( + _pipe, + <<"\ncause:\n"/utf8>> + ), + gleam@string_builder:append_builder( + _pipe@1, + pretty_print_cause(Cause) + ) + end). + +-spec line_print(snag()) -> binary(). +line_print(Snag) -> + _pipe = [gleam@string:append(<<"error: "/utf8>>, erlang:element(2, Snag)) | + erlang:element(3, Snag)], + gleam@string:join(_pipe, <<" <- "/utf8>>). diff --git a/aoc2023/build/dev/erlang/snag/ebin/snag.app b/aoc2023/build/dev/erlang/snag/ebin/snag.app new file mode 100644 index 0000000..724fb97 --- /dev/null +++ b/aoc2023/build/dev/erlang/snag/ebin/snag.app @@ -0,0 +1,7 @@ +{application, snag, [ + {vsn, "0.2.1"}, + {applications, [gleam_stdlib]}, + {description, "A boilerplate-free ad-hoc error type"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/snag/ebin/snag.beam b/aoc2023/build/dev/erlang/snag/ebin/snag.beam new file mode 100644 index 0000000..4af73ad Binary files /dev/null and b/aoc2023/build/dev/erlang/snag/ebin/snag.beam differ diff --git a/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl b/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl new file mode 100644 index 0000000..5d6614e --- /dev/null +++ b/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl @@ -0,0 +1 @@ +-record(snag, {issue :: binary(), cause :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl new file mode 100644 index 0000000..543db88 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl @@ -0,0 +1,157 @@ +#!/usr/bin/env escript + +% TODO: Don't concurrently print warnings and errors +% TODO: Some tests + +-record(arguments, {lib = "./", out = "./", modules = []}). + +main(Args) -> + #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), + IsElixirModule = fun(Module) -> + filename:extension(Module) =:= ".ex" + end, + {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), + ok = configure_logging(), + ok = add_lib_to_erlang_path(Lib), + ok = filelib:ensure_dir([Out, $/]), + {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), + {ElixirOk, _ElixirBeams} = case ErlangOk of + true -> compile_elixir(ElixirModules, Out); + false -> {false, []} + end, + case ErlangOk and ElixirOk of + true -> ok; + false -> erlang:halt(1) + end. + +compile_erlang(Modules, Out) -> + Workers = start_compiler_workers(Out), + ok = producer_loop(Modules, Workers), + collect_results({true, []}). + +collect_results(Acc = {Result, Beams}) -> + receive + {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); + failed -> collect_results({false, Beams}) + after 0 -> Acc + end. + +producer_loop([], 0) -> + ok; +producer_loop([], Workers) -> + receive + {work_please, _} -> producer_loop([], Workers - 1) + end; +producer_loop([Module | Modules], Workers) -> + receive + {work_please, Worker} -> + erlang:send(Worker, {module, Module}), + producer_loop(Modules, Workers) + end. + +start_compiler_workers(Out) -> + Parent = self(), + NumSchedulers = erlang:system_info(schedulers), + SpawnWorker = fun(_) -> + erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) + end, + lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), + NumSchedulers. + +worker_loop(Parent, Out) -> + Options = [report_errors, report_warnings, debug_info, {outdir, Out}], + erlang:send(Parent, {work_please, self()}), + receive + {module, Module} -> + log({compiling, Module}), + case compile:file(Module, Options) of + {ok, ModuleName} -> + Beam = filename:join(Out, ModuleName) ++ ".beam", + Message = {compiled, Beam}, + log(Message), + erlang:send(Parent, Message); + error -> + log({failed, Module}), + erlang:send(Parent, failed) + end, + worker_loop(Parent, Out) + end. + +compile_elixir(Modules, Out) -> + Error = [ + "The program elixir was not found. Is it installed?", + $\n, + "Documentation for installing Elixir can be viewed here:", + $\n, + "https://elixir-lang.org/install.html" + ], + case Modules of + [] -> {true, []}; + _ -> + log({starting, "compiler.app"}), + ok = application:start(compiler), + log({starting, "elixir.app"}), + case application:start(elixir) of + ok -> do_compile_elixir(Modules, Out); + _ -> + io:put_chars(standard_error, [Error, $\n]), + {false, []} + end + end. + +do_compile_elixir(Modules, Out) -> + ModuleBins = lists:map(fun(Module) -> + log({compiling, Module}), + list_to_binary(Module) + end, Modules), + OutBin = list_to_binary(Out), + Options = [{dest, OutBin}], + % Silence "redefining module" warnings. + % Compiled modules in the build directory are added to the code path. + % These warnings result from recompiling loaded modules. + % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. + 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), + case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of + {ok, ModuleAtoms, _} -> + ToBeam = fun(ModuleAtom) -> + Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", + log({compiled, Beam}), + Beam + end, + {true, lists:map(ToBeam, ModuleAtoms)}; + {error, Errors, _} -> + % Log all filenames associated with modules that failed to compile. + % Note: The compiler prints compilation errors upon encountering them. + ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), + Log = fun(File) -> + log({failed, binary_to_list(File)}) + end, + lists:foreach(Log, ErrorFiles), + {false, []}; + _ -> {false, []} + end. + +add_lib_to_erlang_path(Lib) -> + code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). + +parse(Args) -> + parse(Args, #arguments{}). + +parse([], Arguments) -> + Arguments; +parse(["--lib", Lib | Rest], Arguments) -> + parse(Rest, Arguments#arguments{lib = Lib}); +parse(["--out", Out | Rest], Arguments) -> + parse(Rest, Arguments#arguments{out = Out}); +parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> + parse(Rest, Arguments#arguments{modules = [Module | Modules]}). + +configure_logging() -> + Enabled = os:getenv("GLEAM_LOG") /= false, + persistent_term:put(gleam_logging_enabled, Enabled). + +log(Term) -> + case persistent_term:get(gleam_logging_enabled) of + true -> erlang:display(Term), ok; + false -> ok + end. diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache new file mode 100644 index 0000000..036c033 Binary files /dev/null and b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache differ diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta new file mode 100644 index 0000000..492599b Binary files /dev/null and b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta differ diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl new file mode 100644 index 0000000..0429a31 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl @@ -0,0 +1,2142 @@ +-module(tom). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get/2, get_int/2, get_float/2, get_bool/2, get_string/2, get_date/2, get_time/2, get_date_time/2, get_array/2, get_table/2, get_number/2, parse/1]). +-export_type([toml/0, date_time/0, date/0, time/0, offset/0, sign/0, parse_error/0, number_/0, get_error/0]). + +-type toml() :: {int, integer()} | + {float, float()} | + {infinity, sign()} | + {nan, sign()} | + {bool, boolean()} | + {string, binary()} | + {date, date()} | + {time, time()} | + {date_time, date_time()} | + {array, list(toml())} | + {array_of_tables, list(gleam@dict:dict(binary(), toml()))} | + {table, gleam@dict:dict(binary(), toml())} | + {inline_table, gleam@dict:dict(binary(), toml())}. + +-type date_time() :: {date_time_value, date(), time(), offset()}. + +-type date() :: {date_value, integer(), integer(), integer()}. + +-type time() :: {time_value, integer(), integer(), integer(), integer()}. + +-type offset() :: local | {offset, sign(), integer(), integer()}. + +-type sign() :: positive | negative. + +-type parse_error() :: {unexpected, binary(), binary()} | + {key_already_in_use, list(binary())}. + +-type number_() :: {number_int, integer()} | + {number_float, float()} | + {number_infinity, sign()} | + {number_nan, sign()}. + +-type get_error() :: {not_found, list(binary())} | + {wrong_type, list(binary()), binary(), binary()}. + +-spec classify(toml()) -> binary(). +classify(Toml) -> + case Toml of + {int, _} -> + <<"Int"/utf8>>; + + {float, _} -> + <<"Float"/utf8>>; + + {nan, positive} -> + <<"NaN"/utf8>>; + + {nan, negative} -> + <<"Negative NaN"/utf8>>; + + {infinity, positive} -> + <<"Infinity"/utf8>>; + + {infinity, negative} -> + <<"Negative Infinity"/utf8>>; + + {bool, _} -> + <<"Bool"/utf8>>; + + {string, _} -> + <<"String"/utf8>>; + + {date, _} -> + <<"Date"/utf8>>; + + {time, _} -> + <<"Time"/utf8>>; + + {date_time, _} -> + <<"DateTime"/utf8>>; + + {array, _} -> + <<"Array"/utf8>>; + + {array_of_tables, _} -> + <<"Array"/utf8>>; + + {table, _} -> + <<"Table"/utf8>>; + + {inline_table, _} -> + <<"Table"/utf8>> + end. + +-spec push_key({ok, KFC} | {error, get_error()}, binary()) -> {ok, KFC} | + {error, get_error()}. +push_key(Result, Key) -> + case Result of + {ok, T} -> + {ok, T}; + + {error, {not_found, Path}} -> + {error, {not_found, [Key | Path]}}; + + {error, {wrong_type, Path@1, Expected, Got}} -> + {error, {wrong_type, [Key | Path@1], Expected, Got}} + end. + +-spec get(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, toml()} | + {error, get_error()}. +get(Toml, Key) -> + case Key of + [] -> + {error, {not_found, []}}; + + [K] -> + gleam@result:replace_error(gleam@map:get(Toml, K), {not_found, [K]}); + + [K@1 | Key@1] -> + case gleam@map:get(Toml, K@1) of + {ok, {table, T}} -> + push_key(get(T, Key@1), K@1); + + {ok, Other} -> + {error, + {wrong_type, [K@1], <<"Table"/utf8>>, classify(Other)}}; + + {error, _} -> + {error, {not_found, [K@1]}} + end + end. + +-spec get_int(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + integer()} | + {error, get_error()}. +get_int(Toml, Key) -> + case get(Toml, Key) of + {ok, {int, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Int"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_float(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + float()} | + {error, get_error()}. +get_float(Toml, Key) -> + case get(Toml, Key) of + {ok, {float, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Float"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_bool(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + boolean()} | + {error, get_error()}. +get_bool(Toml, Key) -> + case get(Toml, Key) of + {ok, {bool, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Bool"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_string(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + binary()} | + {error, get_error()}. +get_string(Toml, Key) -> + case get(Toml, Key) of + {ok, {string, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"String"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_date(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + date()} | + {error, get_error()}. +get_date(Toml, Key) -> + case get(Toml, Key) of + {ok, {date, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Date"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_time(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + time()} | + {error, get_error()}. +get_time(Toml, Key) -> + case get(Toml, Key) of + {ok, {time, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Time"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_date_time(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + date_time()} | + {error, get_error()}. +get_date_time(Toml, Key) -> + case get(Toml, Key) of + {ok, {date_time, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"DateTime"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_array(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + list(toml())} | + {error, get_error()}. +get_array(Toml, Key) -> + case get(Toml, Key) of + {ok, {array, I}} -> + {ok, I}; + + {ok, {array_of_tables, I@1}} -> + {ok, gleam@list:map(I@1, fun(Field@0) -> {table, Field@0} end)}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Array"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_table(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + gleam@dict:dict(binary(), toml())} | + {error, get_error()}. +get_table(Toml, Key) -> + case get(Toml, Key) of + {ok, {table, I}} -> + {ok, I}; + + {ok, {inline_table, I@1}} -> + {ok, I@1}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Table"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_number(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, + number_()} | + {error, get_error()}. +get_number(Toml, Key) -> + case get(Toml, Key) of + {ok, {int, X}} -> + {ok, {number_int, X}}; + + {ok, {float, X@1}} -> + {ok, {number_float, X@1}}; + + {ok, {nan, X@2}} -> + {ok, {number_nan, X@2}}; + + {ok, {infinity, X@3}} -> + {ok, {number_infinity, X@3}}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Number"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec merge(gleam@dict:dict(binary(), toml()), binary(), toml(), toml()) -> {ok, + gleam@dict:dict(binary(), toml())} | + {error, list(binary())}. +merge(Table, Key, Old, New) -> + case {Old, New} of + {{array_of_tables, Tables}, {array_of_tables, New@1}} -> + {ok, + gleam@map:insert( + Table, + Key, + {array_of_tables, gleam@list:append(New@1, Tables)} + )}; + + {_, _} -> + {error, [Key]} + end. + +-spec insert_loop(gleam@dict:dict(binary(), toml()), list(binary()), toml()) -> {ok, + gleam@dict:dict(binary(), toml())} | + {error, list(binary())}. +insert_loop(Table, Key, Value) -> + case Key of + [] -> + erlang:error(#{gleam_error => panic, + message => <<"unreachable"/utf8>>, + module => <<"tom"/utf8>>, + function => <<"insert_loop"/utf8>>, + line => 511}); + + [K] -> + case gleam@map:get(Table, K) of + {error, nil} -> + {ok, gleam@map:insert(Table, K, Value)}; + + {ok, Old} -> + merge(Table, K, Old, Value) + end; + + [K@1 | Key@1] -> + case gleam@map:get(Table, K@1) of + {error, nil} -> + case insert_loop(gleam@map:new(), Key@1, Value) of + {ok, Inner} -> + {ok, gleam@map:insert(Table, K@1, {table, Inner})}; + + {error, Path} -> + {error, [K@1 | Path]} + end; + + {ok, {array_of_tables, [Inner@1 | Rest]}} -> + case insert_loop(Inner@1, Key@1, Value) of + {ok, Inner@2} -> + {ok, + gleam@map:insert( + Table, + K@1, + {array_of_tables, [Inner@2 | Rest]} + )}; + + {error, Path@1} -> + {error, [K@1 | Path@1]} + end; + + {ok, {table, Inner@3}} -> + case insert_loop(Inner@3, Key@1, Value) of + {ok, Inner@4} -> + {ok, gleam@map:insert(Table, K@1, {table, Inner@4})}; + + {error, Path@2} -> + {error, [K@1 | Path@2]} + end; + + {ok, _} -> + {error, [K@1]} + end + end. + +-spec insert(gleam@dict:dict(binary(), toml()), list(binary()), toml()) -> {ok, + gleam@dict:dict(binary(), toml())} | + {error, parse_error()}. +insert(Table, Key, Value) -> + case insert_loop(Table, Key, Value) of + {ok, Table@1} -> + {ok, Table@1}; + + {error, Path} -> + {error, {key_already_in_use, Path}} + end. + +-spec expect_end_of_line( + list(binary()), + fun((list(binary())) -> {ok, {KHH, list(binary())}} | {error, parse_error()}) +) -> {ok, {KHH, list(binary())}} | {error, parse_error()}. +expect_end_of_line(Input, Next) -> + case Input of + [<<"\n"/utf8>> | Input@1] -> + Next(Input@1); + + [<<"\r\n"/utf8>> | Input@2] -> + Next(Input@2); + + [G | _] -> + {error, {unexpected, G, <<"\n"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\n"/utf8>>}} + end. + +-spec parse_key_quoted(list(binary()), binary(), binary()) -> {ok, + {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_quoted(Input, Close, Name) -> + case Input of + [G | Input@1] when G =:= Close -> + {ok, {Name, Input@1}}; + + [G@1 | Input@2] -> + parse_key_quoted(Input@2, Close, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Close}} + end. + +-spec parse_key_bare(list(binary()), binary()) -> {ok, + {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_bare(Input, Name) -> + case Input of + [<<" "/utf8>> | Input@1] when Name =/= <<""/utf8>> -> + {ok, {Name, Input@1}}; + + [<<"="/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<"."/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<"]"/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<","/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<","/utf8>>, <<"="/utf8>>}}; + + [<<"\n"/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<"\n"/utf8>>, <<"="/utf8>>}}; + + [<<"\r\n"/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"="/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"key"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"key"/utf8>>}}; + + [<<"]"/utf8>> | _] -> + {error, {unexpected, <<"]"/utf8>>, <<"key"/utf8>>}}; + + [<<","/utf8>> | _] -> + {error, {unexpected, <<","/utf8>>, <<"key"/utf8>>}}; + + [G | Input@2] -> + parse_key_bare(Input@2, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"key"/utf8>>}} + end. + +-spec skip_line_whitespace(list(binary())) -> list(binary()). +skip_line_whitespace(Input) -> + gleam@list:drop_while( + Input, + fun(G) -> (G =:= <<" "/utf8>>) orelse (G =:= <<"\t"/utf8>>) end + ). + +-spec parse_key_segment(list(binary())) -> {ok, {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_segment(Input) -> + Input@1 = skip_line_whitespace(Input), + case Input@1 of + [<<"="/utf8>> | _] -> + {error, {unexpected, <<"="/utf8>>, <<"Key"/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"Key"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"Key"/utf8>>}}; + + [<<"["/utf8>> | _] -> + {error, {unexpected, <<"["/utf8>>, <<"Key"/utf8>>}}; + + [<<"\""/utf8>> | Input@2] -> + parse_key_quoted(Input@2, <<"\""/utf8>>, <<""/utf8>>); + + [<<"'"/utf8>> | Input@3] -> + parse_key_quoted(Input@3, <<"'"/utf8>>, <<""/utf8>>); + + _ -> + parse_key_bare(Input@1, <<""/utf8>>) + end. + +-spec skip_whitespace(list(binary())) -> list(binary()). +skip_whitespace(Input) -> + case Input of + [<<" "/utf8>> | Input@1] -> + skip_whitespace(Input@1); + + [<<"\t"/utf8>> | Input@2] -> + skip_whitespace(Input@2); + + [<<"\n"/utf8>> | Input@3] -> + skip_whitespace(Input@3); + + [<<"\r\n"/utf8>> | Input@4] -> + skip_whitespace(Input@4); + + Input@5 -> + Input@5 + end. + +-spec drop_comments(list(binary()), list(binary())) -> list(binary()). +drop_comments(Input, Acc) -> + case Input of + [<<"#"/utf8>> | Input@1] -> + _pipe = Input@1, + _pipe@1 = gleam@list:drop_while( + _pipe, + fun(G) -> G /= <<"\n"/utf8>> end + ), + drop_comments(_pipe@1, Acc); + + [G@1 | Input@2] -> + drop_comments(Input@2, [G@1 | Acc]); + + [] -> + gleam@list:reverse(Acc) + end. + +-spec do( + {ok, {KHS, list(binary())}} | {error, parse_error()}, + fun((KHS, list(binary())) -> {ok, KHV} | {error, parse_error()}) +) -> {ok, KHV} | {error, parse_error()}. +do(Result, Next) -> + case Result of + {ok, {A, Input}} -> + Next(A, Input); + + {error, E} -> + {error, E} + end. + +-spec parse_key(list(binary()), list(binary())) -> {ok, + {list(binary()), list(binary())}} | + {error, parse_error()}. +parse_key(Input, Segments) -> + do( + parse_key_segment(Input), + fun(Segment, Input@1) -> + Segments@1 = [Segment | Segments], + Input@2 = skip_line_whitespace(Input@1), + case Input@2 of + [<<"."/utf8>> | Input@3] -> + parse_key(Input@3, Segments@1); + + _ -> + {ok, {gleam@list:reverse(Segments@1), Input@2}} + end + end + ). + +-spec expect( + list(binary()), + binary(), + fun((list(binary())) -> {ok, {KIA, list(binary())}} | {error, parse_error()}) +) -> {ok, {KIA, list(binary())}} | {error, parse_error()}. +expect(Input, Expected, Next) -> + case Input of + [G | Input@1] when G =:= Expected -> + Next(Input@1); + + [G@1 | _] -> + {error, {unexpected, G@1, Expected}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Expected}} + end. + +-spec parse_table_header(list(binary())) -> {ok, + {list(binary()), list(binary())}} | + {error, parse_error()}. +parse_table_header(Input) -> + Input@1 = skip_line_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + expect( + Input@2, + <<"]"/utf8>>, + fun(Input@3) -> + Input@4 = skip_line_whitespace(Input@3), + expect_end_of_line( + Input@4, + fun(Input@5) -> {ok, {Key, Input@5}} end + ) + end + ) + end + ). + +-spec parse_hex(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_hex(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_hex(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_hex(Input@2, (Number * 16) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_hex(Input@3, (Number * 16) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_hex(Input@4, (Number * 16) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_hex(Input@5, (Number * 16) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_hex(Input@6, (Number * 16) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_hex(Input@7, (Number * 16) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_hex(Input@8, (Number * 16) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_hex(Input@9, (Number * 16) + 7, Sign); + + [<<"8"/utf8>> | Input@10] -> + parse_hex(Input@10, (Number * 16) + 8, Sign); + + [<<"9"/utf8>> | Input@11] -> + parse_hex(Input@11, (Number * 16) + 9, Sign); + + [<<"a"/utf8>> | Input@12] -> + parse_hex(Input@12, (Number * 16) + 10, Sign); + + [<<"b"/utf8>> | Input@13] -> + parse_hex(Input@13, (Number * 16) + 11, Sign); + + [<<"c"/utf8>> | Input@14] -> + parse_hex(Input@14, (Number * 16) + 12, Sign); + + [<<"d"/utf8>> | Input@15] -> + parse_hex(Input@15, (Number * 16) + 13, Sign); + + [<<"e"/utf8>> | Input@16] -> + parse_hex(Input@16, (Number * 16) + 14, Sign); + + [<<"f"/utf8>> | Input@17] -> + parse_hex(Input@17, (Number * 16) + 15, Sign); + + [<<"A"/utf8>> | Input@18] -> + parse_hex(Input@18, (Number * 16) + 10, Sign); + + [<<"B"/utf8>> | Input@19] -> + parse_hex(Input@19, (Number * 16) + 11, Sign); + + [<<"C"/utf8>> | Input@20] -> + parse_hex(Input@20, (Number * 16) + 12, Sign); + + [<<"D"/utf8>> | Input@21] -> + parse_hex(Input@21, (Number * 16) + 13, Sign); + + [<<"E"/utf8>> | Input@22] -> + parse_hex(Input@22, (Number * 16) + 14, Sign); + + [<<"F"/utf8>> | Input@23] -> + parse_hex(Input@23, (Number * 16) + 15, Sign); + + Input@24 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@24}} + end. + +-spec parse_octal(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_octal(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_octal(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_octal(Input@2, (Number * 8) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_octal(Input@3, (Number * 8) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_octal(Input@4, (Number * 8) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_octal(Input@5, (Number * 8) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_octal(Input@6, (Number * 8) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_octal(Input@7, (Number * 8) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_octal(Input@8, (Number * 8) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_octal(Input@9, (Number * 8) + 7, Sign); + + Input@10 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@10}} + end. + +-spec parse_binary(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_binary(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_binary(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_binary(Input@2, (Number * 2) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_binary(Input@3, (Number * 2) + 1, Sign); + + Input@4 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@4}} + end. + +-spec parse_exponent(list(binary()), float(), sign(), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_exponent(Input, N, N_sign, Ex, Ex_sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_exponent(Input@1, N, N_sign, Ex, Ex_sign); + + [<<"0"/utf8>> | Input@2] -> + parse_exponent(Input@2, N, N_sign, Ex * 10, Ex_sign); + + [<<"1"/utf8>> | Input@3] -> + parse_exponent(Input@3, N, N_sign, (Ex * 10) + 1, Ex_sign); + + [<<"2"/utf8>> | Input@4] -> + parse_exponent(Input@4, N, N_sign, (Ex * 10) + 2, Ex_sign); + + [<<"3"/utf8>> | Input@5] -> + parse_exponent(Input@5, N, N_sign, (Ex * 10) + 3, Ex_sign); + + [<<"4"/utf8>> | Input@6] -> + parse_exponent(Input@6, N, N_sign, (Ex * 10) + 4, Ex_sign); + + [<<"5"/utf8>> | Input@7] -> + parse_exponent(Input@7, N, N_sign, (Ex * 10) + 5, Ex_sign); + + [<<"6"/utf8>> | Input@8] -> + parse_exponent(Input@8, N, N_sign, (Ex * 10) + 6, Ex_sign); + + [<<"7"/utf8>> | Input@9] -> + parse_exponent(Input@9, N, N_sign, (Ex * 10) + 7, Ex_sign); + + [<<"8"/utf8>> | Input@10] -> + parse_exponent(Input@10, N, N_sign, (Ex * 10) + 8, Ex_sign); + + [<<"9"/utf8>> | Input@11] -> + parse_exponent(Input@11, N, N_sign, (Ex * 10) + 9, Ex_sign); + + Input@12 -> + Number = case N_sign of + positive -> + N; + + negative -> + N * -1.0 + end, + Exponent = gleam@int:to_float(case Ex_sign of + positive -> + Ex; + + negative -> + - Ex + end), + Multiplier@1 = case gleam@float:power(10.0, Exponent) of + {ok, Multiplier} -> + Multiplier; + + {error, _} -> + 1.0 + end, + {ok, {{float, Number * Multiplier@1}, Input@12}} + end. + +-spec parse_float(list(binary()), float(), sign(), float()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_float(Input, Number, Sign, Unit) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_float(Input@1, Number, Sign, Unit); + + [<<"0"/utf8>> | Input@2] -> + parse_float(Input@2, Number, Sign, Unit * 0.1); + + [<<"1"/utf8>> | Input@3] -> + parse_float(Input@3, Number + (1.0 * Unit), Sign, Unit * 0.1); + + [<<"2"/utf8>> | Input@4] -> + parse_float(Input@4, Number + (2.0 * Unit), Sign, Unit * 0.1); + + [<<"3"/utf8>> | Input@5] -> + parse_float(Input@5, Number + (3.0 * Unit), Sign, Unit * 0.1); + + [<<"4"/utf8>> | Input@6] -> + parse_float(Input@6, Number + (4.0 * Unit), Sign, Unit * 0.1); + + [<<"5"/utf8>> | Input@7] -> + parse_float(Input@7, Number + (5.0 * Unit), Sign, Unit * 0.1); + + [<<"6"/utf8>> | Input@8] -> + parse_float(Input@8, Number + (6.0 * Unit), Sign, Unit * 0.1); + + [<<"7"/utf8>> | Input@9] -> + parse_float(Input@9, Number + (7.0 * Unit), Sign, Unit * 0.1); + + [<<"8"/utf8>> | Input@10] -> + parse_float(Input@10, Number + (8.0 * Unit), Sign, Unit * 0.1); + + [<<"9"/utf8>> | Input@11] -> + parse_float(Input@11, Number + (9.0 * Unit), Sign, Unit * 0.1); + + [<<"e"/utf8>>, <<"+"/utf8>> | Input@12] -> + parse_exponent(Input@12, Number, Sign, 0, positive); + + [<<"e"/utf8>>, <<"-"/utf8>> | Input@13] -> + parse_exponent(Input@13, Number, Sign, 0, negative); + + [<<"e"/utf8>> | Input@14] -> + parse_exponent(Input@14, Number, Sign, 0, positive); + + [<<"E"/utf8>>, <<"+"/utf8>> | Input@15] -> + parse_exponent(Input@15, Number, Sign, 0, positive); + + [<<"E"/utf8>>, <<"-"/utf8>> | Input@16] -> + parse_exponent(Input@16, Number, Sign, 0, negative); + + [<<"E"/utf8>> | Input@17] -> + parse_exponent(Input@17, Number, Sign, 0, positive); + + Input@18 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + Number * -1.0 + end, + {ok, {{float, Number@1}, Input@18}} + end. + +-spec parse_string(list(binary()), binary()) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_string(Input, String) -> + case Input of + [<<"\""/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\\"/utf8>>, <<"t"/utf8>> | Input@2] -> + parse_string(Input@2, <>); + + [<<"\\"/utf8>>, <<"n"/utf8>> | Input@3] -> + parse_string(Input@3, <>); + + [<<"\\"/utf8>>, <<"r"/utf8>> | Input@4] -> + parse_string(Input@4, <>); + + [<<"\\"/utf8>>, <<"\""/utf8>> | Input@5] -> + parse_string(Input@5, <>); + + [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@6] -> + parse_string(Input@6, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"\""/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"\""/utf8>>}}; + + [G | Input@7] -> + parse_string(Input@7, <>) + end. + +-spec parse_multi_line_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_multi_line_string(Input, String) -> + case Input of + [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\\"/utf8>>, <<"\n"/utf8>> | Input@2] -> + parse_multi_line_string(skip_whitespace(Input@2), String); + + [<<"\\"/utf8>>, <<"\r\n"/utf8>> | Input@3] -> + parse_multi_line_string(skip_whitespace(Input@3), String); + + [<<"\r\n"/utf8>> | Input@4] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@4, String); + + [<<"\n"/utf8>> | Input@5] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@5, String); + + [<<"\r\n"/utf8>> | Input@6] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@6, String); + + [<<"\\"/utf8>>, <<"t"/utf8>> | Input@7] -> + parse_multi_line_string(Input@7, <>); + + [<<"\\"/utf8>>, <<"n"/utf8>> | Input@8] -> + parse_multi_line_string(Input@8, <>); + + [<<"\\"/utf8>>, <<"r"/utf8>> | Input@9] -> + parse_multi_line_string(Input@9, <>); + + [<<"\\"/utf8>>, <<"\""/utf8>> | Input@10] -> + parse_multi_line_string(Input@10, <>); + + [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@11] -> + parse_multi_line_string(Input@11, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [G | Input@12] -> + parse_multi_line_string(Input@12, <>) + end. + +-spec parse_multi_line_literal_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_multi_line_literal_string(Input, String) -> + case Input of + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | _] -> + {error, {unexpected, <<"''''"/utf8>>, <<"'''"/utf8>>}}; + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\n"/utf8>> | Input@2] when String =:= <<""/utf8>> -> + parse_multi_line_literal_string(Input@2, String); + + [<<"\r\n"/utf8>> | Input@3] when String =:= <<""/utf8>> -> + parse_multi_line_literal_string(Input@3, String); + + [G | Input@4] -> + parse_multi_line_literal_string( + Input@4, + <> + ) + end. + +-spec parse_literal_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_literal_string(Input, String) -> + case Input of + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"'"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"'"/utf8>>}}; + + [<<"'"/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [G | Input@2] -> + parse_literal_string(Input@2, <>) + end. + +-spec parse_time_ms(list(binary()), integer(), integer()) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_time_ms(Input, Seconds, Ms) -> + case Input of + [<<"0"/utf8>> | Input@1] when Ms < 100000 -> + parse_time_ms(Input@1, Seconds, (Ms * 10) + 0); + + [<<"1"/utf8>> | Input@2] when Ms < 100000 -> + parse_time_ms(Input@2, Seconds, (Ms * 10) + 1); + + [<<"2"/utf8>> | Input@3] when Ms < 100000 -> + parse_time_ms(Input@3, Seconds, (Ms * 10) + 2); + + [<<"3"/utf8>> | Input@4] when Ms < 100000 -> + parse_time_ms(Input@4, Seconds, (Ms * 10) + 3); + + [<<"4"/utf8>> | Input@5] when Ms < 100000 -> + parse_time_ms(Input@5, Seconds, (Ms * 10) + 4); + + [<<"5"/utf8>> | Input@6] when Ms < 100000 -> + parse_time_ms(Input@6, Seconds, (Ms * 10) + 5); + + [<<"6"/utf8>> | Input@7] when Ms < 100000 -> + parse_time_ms(Input@7, Seconds, (Ms * 10) + 6); + + [<<"7"/utf8>> | Input@8] when Ms < 100000 -> + parse_time_ms(Input@8, Seconds, (Ms * 10) + 7); + + [<<"8"/utf8>> | Input@9] when Ms < 100000 -> + parse_time_ms(Input@9, Seconds, (Ms * 10) + 8); + + [<<"9"/utf8>> | Input@10] when Ms < 100000 -> + parse_time_ms(Input@10, Seconds, (Ms * 10) + 9); + + _ -> + {ok, {{Seconds, Ms}, Input}} + end. + +-spec parse_number_under_60(list(binary()), binary()) -> {ok, + {integer(), list(binary())}} | + {error, parse_error()}. +parse_number_under_60(Input, Expected) -> + case Input of + [<<"0"/utf8>>, <<"0"/utf8>> | Input@1] -> + {ok, {0, Input@1}}; + + [<<"0"/utf8>>, <<"1"/utf8>> | Input@2] -> + {ok, {1, Input@2}}; + + [<<"0"/utf8>>, <<"2"/utf8>> | Input@3] -> + {ok, {2, Input@3}}; + + [<<"0"/utf8>>, <<"3"/utf8>> | Input@4] -> + {ok, {3, Input@4}}; + + [<<"0"/utf8>>, <<"4"/utf8>> | Input@5] -> + {ok, {4, Input@5}}; + + [<<"0"/utf8>>, <<"5"/utf8>> | Input@6] -> + {ok, {5, Input@6}}; + + [<<"0"/utf8>>, <<"6"/utf8>> | Input@7] -> + {ok, {6, Input@7}}; + + [<<"0"/utf8>>, <<"7"/utf8>> | Input@8] -> + {ok, {7, Input@8}}; + + [<<"0"/utf8>>, <<"8"/utf8>> | Input@9] -> + {ok, {8, Input@9}}; + + [<<"0"/utf8>>, <<"9"/utf8>> | Input@10] -> + {ok, {9, Input@10}}; + + [<<"1"/utf8>>, <<"0"/utf8>> | Input@11] -> + {ok, {10, Input@11}}; + + [<<"1"/utf8>>, <<"1"/utf8>> | Input@12] -> + {ok, {11, Input@12}}; + + [<<"1"/utf8>>, <<"2"/utf8>> | Input@13] -> + {ok, {12, Input@13}}; + + [<<"1"/utf8>>, <<"3"/utf8>> | Input@14] -> + {ok, {13, Input@14}}; + + [<<"1"/utf8>>, <<"4"/utf8>> | Input@15] -> + {ok, {14, Input@15}}; + + [<<"1"/utf8>>, <<"5"/utf8>> | Input@16] -> + {ok, {15, Input@16}}; + + [<<"1"/utf8>>, <<"6"/utf8>> | Input@17] -> + {ok, {16, Input@17}}; + + [<<"1"/utf8>>, <<"7"/utf8>> | Input@18] -> + {ok, {17, Input@18}}; + + [<<"1"/utf8>>, <<"8"/utf8>> | Input@19] -> + {ok, {18, Input@19}}; + + [<<"1"/utf8>>, <<"9"/utf8>> | Input@20] -> + {ok, {19, Input@20}}; + + [<<"2"/utf8>>, <<"0"/utf8>> | Input@21] -> + {ok, {20, Input@21}}; + + [<<"2"/utf8>>, <<"1"/utf8>> | Input@22] -> + {ok, {21, Input@22}}; + + [<<"2"/utf8>>, <<"2"/utf8>> | Input@23] -> + {ok, {22, Input@23}}; + + [<<"2"/utf8>>, <<"3"/utf8>> | Input@24] -> + {ok, {23, Input@24}}; + + [<<"2"/utf8>>, <<"4"/utf8>> | Input@25] -> + {ok, {24, Input@25}}; + + [<<"2"/utf8>>, <<"5"/utf8>> | Input@26] -> + {ok, {25, Input@26}}; + + [<<"2"/utf8>>, <<"6"/utf8>> | Input@27] -> + {ok, {26, Input@27}}; + + [<<"2"/utf8>>, <<"7"/utf8>> | Input@28] -> + {ok, {27, Input@28}}; + + [<<"2"/utf8>>, <<"8"/utf8>> | Input@29] -> + {ok, {28, Input@29}}; + + [<<"2"/utf8>>, <<"9"/utf8>> | Input@30] -> + {ok, {29, Input@30}}; + + [<<"3"/utf8>>, <<"0"/utf8>> | Input@31] -> + {ok, {30, Input@31}}; + + [<<"3"/utf8>>, <<"1"/utf8>> | Input@32] -> + {ok, {31, Input@32}}; + + [<<"3"/utf8>>, <<"2"/utf8>> | Input@33] -> + {ok, {32, Input@33}}; + + [<<"3"/utf8>>, <<"3"/utf8>> | Input@34] -> + {ok, {33, Input@34}}; + + [<<"3"/utf8>>, <<"4"/utf8>> | Input@35] -> + {ok, {34, Input@35}}; + + [<<"3"/utf8>>, <<"5"/utf8>> | Input@36] -> + {ok, {35, Input@36}}; + + [<<"3"/utf8>>, <<"6"/utf8>> | Input@37] -> + {ok, {36, Input@37}}; + + [<<"3"/utf8>>, <<"7"/utf8>> | Input@38] -> + {ok, {37, Input@38}}; + + [<<"3"/utf8>>, <<"8"/utf8>> | Input@39] -> + {ok, {38, Input@39}}; + + [<<"3"/utf8>>, <<"9"/utf8>> | Input@40] -> + {ok, {39, Input@40}}; + + [<<"4"/utf8>>, <<"0"/utf8>> | Input@41] -> + {ok, {40, Input@41}}; + + [<<"4"/utf8>>, <<"1"/utf8>> | Input@42] -> + {ok, {41, Input@42}}; + + [<<"4"/utf8>>, <<"2"/utf8>> | Input@43] -> + {ok, {42, Input@43}}; + + [<<"4"/utf8>>, <<"3"/utf8>> | Input@44] -> + {ok, {43, Input@44}}; + + [<<"4"/utf8>>, <<"4"/utf8>> | Input@45] -> + {ok, {44, Input@45}}; + + [<<"4"/utf8>>, <<"5"/utf8>> | Input@46] -> + {ok, {45, Input@46}}; + + [<<"4"/utf8>>, <<"6"/utf8>> | Input@47] -> + {ok, {46, Input@47}}; + + [<<"4"/utf8>>, <<"7"/utf8>> | Input@48] -> + {ok, {47, Input@48}}; + + [<<"4"/utf8>>, <<"8"/utf8>> | Input@49] -> + {ok, {48, Input@49}}; + + [<<"4"/utf8>>, <<"9"/utf8>> | Input@50] -> + {ok, {49, Input@50}}; + + [<<"5"/utf8>>, <<"0"/utf8>> | Input@51] -> + {ok, {50, Input@51}}; + + [<<"5"/utf8>>, <<"1"/utf8>> | Input@52] -> + {ok, {51, Input@52}}; + + [<<"5"/utf8>>, <<"2"/utf8>> | Input@53] -> + {ok, {52, Input@53}}; + + [<<"5"/utf8>>, <<"3"/utf8>> | Input@54] -> + {ok, {53, Input@54}}; + + [<<"5"/utf8>>, <<"4"/utf8>> | Input@55] -> + {ok, {54, Input@55}}; + + [<<"5"/utf8>>, <<"5"/utf8>> | Input@56] -> + {ok, {55, Input@56}}; + + [<<"5"/utf8>>, <<"6"/utf8>> | Input@57] -> + {ok, {56, Input@57}}; + + [<<"5"/utf8>>, <<"7"/utf8>> | Input@58] -> + {ok, {57, Input@58}}; + + [<<"5"/utf8>>, <<"8"/utf8>> | Input@59] -> + {ok, {58, Input@59}}; + + [<<"5"/utf8>>, <<"9"/utf8>> | Input@60] -> + {ok, {59, Input@60}}; + + [G | _] -> + {error, {unexpected, G, Expected}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Expected}} + end. + +-spec parse_hour_minute(list(binary())) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_hour_minute(Input) -> + do(case Input of + [<<"0"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@1] -> + {ok, {0, Input@1}}; + + [<<"0"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@2] -> + {ok, {1, Input@2}}; + + [<<"0"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@3] -> + {ok, {2, Input@3}}; + + [<<"0"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@4] -> + {ok, {3, Input@4}}; + + [<<"0"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@5] -> + {ok, {4, Input@5}}; + + [<<"0"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@6] -> + {ok, {5, Input@6}}; + + [<<"0"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@7] -> + {ok, {6, Input@7}}; + + [<<"0"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@8] -> + {ok, {7, Input@8}}; + + [<<"0"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@9] -> + {ok, {8, Input@9}}; + + [<<"0"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@10] -> + {ok, {9, Input@10}}; + + [<<"1"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@11] -> + {ok, {10, Input@11}}; + + [<<"1"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@12] -> + {ok, {11, Input@12}}; + + [<<"1"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@13] -> + {ok, {12, Input@13}}; + + [<<"1"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@14] -> + {ok, {13, Input@14}}; + + [<<"1"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@15] -> + {ok, {14, Input@15}}; + + [<<"1"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@16] -> + {ok, {15, Input@16}}; + + [<<"1"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@17] -> + {ok, {16, Input@17}}; + + [<<"1"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@18] -> + {ok, {17, Input@18}}; + + [<<"1"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@19] -> + {ok, {18, Input@19}}; + + [<<"1"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@20] -> + {ok, {19, Input@20}}; + + [<<"2"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@21] -> + {ok, {20, Input@21}}; + + [<<"2"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@22] -> + {ok, {21, Input@22}}; + + [<<"2"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@23] -> + {ok, {22, Input@23}}; + + [<<"2"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@24] -> + {ok, {23, Input@24}}; + + [G | _] -> + {error, {unexpected, G, <<"time"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"time"/utf8>>}} + end, fun(Hours, Input@25) -> + do( + parse_number_under_60(Input@25, <<"minutes"/utf8>>), + fun(Minutes, Input@26) -> {ok, {{Hours, Minutes}, Input@26}} end + ) + end). + +-spec parse_time_s_ms(list(binary())) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_time_s_ms(Input) -> + case Input of + [<<":"/utf8>> | Input@1] -> + do( + parse_number_under_60(Input@1, <<"seconds"/utf8>>), + fun(Seconds, Input@2) -> case Input@2 of + [<<"."/utf8>> | Input@3] -> + parse_time_ms(Input@3, Seconds, 0); + + _ -> + {ok, {{Seconds, 0}, Input@2}} + end end + ); + + _ -> + {ok, {{0, 0}, Input}} + end. + +-spec parse_time_minute(list(binary()), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_time_minute(Input, Hours) -> + do( + parse_number_under_60(Input, <<"minutes"/utf8>>), + fun(Minutes, Input@1) -> + do( + parse_time_s_ms(Input@1), + fun(_use0, Input@2) -> + {Seconds, Ms} = _use0, + Time = {time_value, Hours, Minutes, Seconds, Ms}, + {ok, {{time, Time}, Input@2}} + end + ) + end + ). + +-spec parse_time_value(list(binary())) -> {ok, {time(), list(binary())}} | + {error, parse_error()}. +parse_time_value(Input) -> + do( + parse_hour_minute(Input), + fun(_use0, Input@1) -> + {Hours, Minutes} = _use0, + do( + parse_time_s_ms(Input@1), + fun(_use0@1, Input@2) -> + {Seconds, Ms} = _use0@1, + Time = {time_value, Hours, Minutes, Seconds, Ms}, + {ok, {Time, Input@2}} + end + ) + end + ). + +-spec parse_offset_hours(list(binary()), sign()) -> {ok, + {offset(), list(binary())}} | + {error, parse_error()}. +parse_offset_hours(Input, Sign) -> + do( + parse_hour_minute(Input), + fun(_use0, Input@1) -> + {Hours, Minutes} = _use0, + {ok, {{offset, Sign, Hours, Minutes}, Input@1}} + end + ). + +-spec parse_offset(list(binary())) -> {ok, {offset(), list(binary())}} | + {error, parse_error()}. +parse_offset(Input) -> + case Input of + [<<"Z"/utf8>> | Input@1] -> + {ok, {{offset, positive, 0, 0}, Input@1}}; + + [<<"+"/utf8>> | Input@2] -> + parse_offset_hours(Input@2, positive); + + [<<"-"/utf8>> | Input@3] -> + parse_offset_hours(Input@3, negative); + + _ -> + {ok, {local, Input}} + end. + +-spec parse_date_end(list(binary()), integer(), integer(), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_date_end(Input, Year, Month, Day) -> + Date = {date_value, Year, Month, Day}, + case Input of + [<<" "/utf8>> | Input@1] -> + do( + parse_time_value(Input@1), + fun(Time, Input@2) -> + do( + parse_offset(Input@2), + fun(Offset, Input@3) -> + {ok, + {{date_time, + {date_time_value, Date, Time, Offset}}, + Input@3}} + end + ) + end + ); + + [<<"T"/utf8>> | Input@1] -> + do( + parse_time_value(Input@1), + fun(Time, Input@2) -> + do( + parse_offset(Input@2), + fun(Offset, Input@3) -> + {ok, + {{date_time, + {date_time_value, Date, Time, Offset}}, + Input@3}} + end + ) + end + ); + + _ -> + {ok, {{date, Date}, Input}} + end. + +-spec parse_date_day(list(binary()), integer(), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_date_day(Input, Year, Month) -> + case Input of + [<<"0"/utf8>>, <<"1"/utf8>> | Input@1] -> + parse_date_end(Input@1, Year, Month, 1); + + [<<"0"/utf8>>, <<"2"/utf8>> | Input@2] -> + parse_date_end(Input@2, Year, Month, 2); + + [<<"0"/utf8>>, <<"3"/utf8>> | Input@3] -> + parse_date_end(Input@3, Year, Month, 3); + + [<<"0"/utf8>>, <<"4"/utf8>> | Input@4] -> + parse_date_end(Input@4, Year, Month, 4); + + [<<"0"/utf8>>, <<"5"/utf8>> | Input@5] -> + parse_date_end(Input@5, Year, Month, 5); + + [<<"0"/utf8>>, <<"6"/utf8>> | Input@6] -> + parse_date_end(Input@6, Year, Month, 6); + + [<<"0"/utf8>>, <<"7"/utf8>> | Input@7] -> + parse_date_end(Input@7, Year, Month, 7); + + [<<"0"/utf8>>, <<"8"/utf8>> | Input@8] -> + parse_date_end(Input@8, Year, Month, 8); + + [<<"0"/utf8>>, <<"9"/utf8>> | Input@9] -> + parse_date_end(Input@9, Year, Month, 9); + + [<<"1"/utf8>>, <<"0"/utf8>> | Input@10] -> + parse_date_end(Input@10, Year, Month, 10); + + [<<"1"/utf8>>, <<"1"/utf8>> | Input@11] -> + parse_date_end(Input@11, Year, Month, 11); + + [<<"1"/utf8>>, <<"2"/utf8>> | Input@12] -> + parse_date_end(Input@12, Year, Month, 12); + + [<<"1"/utf8>>, <<"3"/utf8>> | Input@13] -> + parse_date_end(Input@13, Year, Month, 13); + + [<<"1"/utf8>>, <<"4"/utf8>> | Input@14] -> + parse_date_end(Input@14, Year, Month, 14); + + [<<"1"/utf8>>, <<"5"/utf8>> | Input@15] -> + parse_date_end(Input@15, Year, Month, 15); + + [<<"1"/utf8>>, <<"6"/utf8>> | Input@16] -> + parse_date_end(Input@16, Year, Month, 16); + + [<<"1"/utf8>>, <<"7"/utf8>> | Input@17] -> + parse_date_end(Input@17, Year, Month, 17); + + [<<"1"/utf8>>, <<"8"/utf8>> | Input@18] -> + parse_date_end(Input@18, Year, Month, 18); + + [<<"1"/utf8>>, <<"9"/utf8>> | Input@19] -> + parse_date_end(Input@19, Year, Month, 19); + + [<<"2"/utf8>>, <<"0"/utf8>> | Input@20] -> + parse_date_end(Input@20, Year, Month, 20); + + [<<"2"/utf8>>, <<"1"/utf8>> | Input@21] -> + parse_date_end(Input@21, Year, Month, 21); + + [<<"2"/utf8>>, <<"2"/utf8>> | Input@22] -> + parse_date_end(Input@22, Year, Month, 22); + + [<<"2"/utf8>>, <<"3"/utf8>> | Input@23] -> + parse_date_end(Input@23, Year, Month, 23); + + [<<"2"/utf8>>, <<"4"/utf8>> | Input@24] -> + parse_date_end(Input@24, Year, Month, 24); + + [<<"2"/utf8>>, <<"5"/utf8>> | Input@25] -> + parse_date_end(Input@25, Year, Month, 25); + + [<<"2"/utf8>>, <<"6"/utf8>> | Input@26] -> + parse_date_end(Input@26, Year, Month, 26); + + [<<"2"/utf8>>, <<"7"/utf8>> | Input@27] -> + parse_date_end(Input@27, Year, Month, 27); + + [<<"2"/utf8>>, <<"8"/utf8>> | Input@28] -> + parse_date_end(Input@28, Year, Month, 28); + + [<<"2"/utf8>>, <<"9"/utf8>> | Input@29] -> + parse_date_end(Input@29, Year, Month, 29); + + [<<"3"/utf8>>, <<"0"/utf8>> | Input@30] -> + parse_date_end(Input@30, Year, Month, 30); + + [<<"3"/utf8>>, <<"1"/utf8>> | Input@31] -> + parse_date_end(Input@31, Year, Month, 31); + + [G | _] -> + {error, {unexpected, G, <<"date day"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"date day"/utf8>>}} + end. + +-spec parse_date(list(binary()), integer()) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_date(Input, Year) -> + case Input of + [<<"0"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@1] -> + parse_date_day(Input@1, Year, 1); + + [<<"0"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@2] -> + parse_date_day(Input@2, Year, 2); + + [<<"0"/utf8>>, <<"3"/utf8>>, <<"-"/utf8>> | Input@3] -> + parse_date_day(Input@3, Year, 3); + + [<<"0"/utf8>>, <<"4"/utf8>>, <<"-"/utf8>> | Input@4] -> + parse_date_day(Input@4, Year, 4); + + [<<"0"/utf8>>, <<"5"/utf8>>, <<"-"/utf8>> | Input@5] -> + parse_date_day(Input@5, Year, 5); + + [<<"0"/utf8>>, <<"6"/utf8>>, <<"-"/utf8>> | Input@6] -> + parse_date_day(Input@6, Year, 6); + + [<<"0"/utf8>>, <<"7"/utf8>>, <<"-"/utf8>> | Input@7] -> + parse_date_day(Input@7, Year, 7); + + [<<"0"/utf8>>, <<"8"/utf8>>, <<"-"/utf8>> | Input@8] -> + parse_date_day(Input@8, Year, 8); + + [<<"0"/utf8>>, <<"9"/utf8>>, <<"-"/utf8>> | Input@9] -> + parse_date_day(Input@9, Year, 9); + + [<<"1"/utf8>>, <<"0"/utf8>>, <<"-"/utf8>> | Input@10] -> + parse_date_day(Input@10, Year, 10); + + [<<"1"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@11] -> + parse_date_day(Input@11, Year, 11); + + [<<"1"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@12] -> + parse_date_day(Input@12, Year, 12); + + [G | _] -> + {error, {unexpected, G, <<"date month"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"date month"/utf8>>}} + end. + +-spec parse_number(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_number(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_number(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_number(Input@2, (Number * 10) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_number(Input@3, (Number * 10) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_number(Input@4, (Number * 10) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_number(Input@5, (Number * 10) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_number(Input@6, (Number * 10) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_number(Input@7, (Number * 10) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_number(Input@8, (Number * 10) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_number(Input@9, (Number * 10) + 7, Sign); + + [<<"8"/utf8>> | Input@10] -> + parse_number(Input@10, (Number * 10) + 8, Sign); + + [<<"9"/utf8>> | Input@11] -> + parse_number(Input@11, (Number * 10) + 9, Sign); + + [<<"-"/utf8>> | Input@12] -> + parse_date(Input@12, Number); + + [<<":"/utf8>> | Input@13] when Number < 24 -> + parse_time_minute(Input@13, Number); + + [<<"."/utf8>> | Input@14] -> + parse_float(Input@14, gleam@int:to_float(Number), Sign, 0.1); + + [<<"e"/utf8>>, <<"+"/utf8>> | Input@15] -> + parse_exponent( + Input@15, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"e"/utf8>>, <<"-"/utf8>> | Input@16] -> + parse_exponent( + Input@16, + gleam@int:to_float(Number), + Sign, + 0, + negative + ); + + [<<"e"/utf8>> | Input@17] -> + parse_exponent( + Input@17, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"E"/utf8>>, <<"+"/utf8>> | Input@18] -> + parse_exponent( + Input@18, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"E"/utf8>>, <<"-"/utf8>> | Input@19] -> + parse_exponent( + Input@19, + gleam@int:to_float(Number), + Sign, + 0, + negative + ); + + [<<"E"/utf8>> | Input@20] -> + parse_exponent( + Input@20, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + Input@21 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@21}} + end. + +-spec reverse_arrays_of_tables(toml()) -> toml(). +reverse_arrays_of_tables(Toml) -> + case Toml of + {array_of_tables, Tables} -> + {array_of_tables, reverse_arrays_of_tables_array(Tables, [])}; + + {table, Table} -> + {table, reverse_arrays_of_tables_table(Table)}; + + _ -> + Toml + end. + +-spec reverse_arrays_of_tables_table(gleam@dict:dict(binary(), toml())) -> gleam@dict:dict(binary(), toml()). +reverse_arrays_of_tables_table(Table) -> + gleam@map:map_values(Table, fun(_, V) -> reverse_arrays_of_tables(V) end). + +-spec reverse_arrays_of_tables_array( + list(gleam@dict:dict(binary(), toml())), + list(gleam@dict:dict(binary(), toml())) +) -> list(gleam@dict:dict(binary(), toml())). +reverse_arrays_of_tables_array(Array, Acc) -> + case Array of + [] -> + Acc; + + [First | Rest] -> + First@1 = reverse_arrays_of_tables_table(First), + reverse_arrays_of_tables_array(Rest, [First@1 | Acc]) + end. + +-spec parse_inline_table_property( + list(binary()), + gleam@dict:dict(binary(), toml()) +) -> {ok, {gleam@dict:dict(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_inline_table_property(Input, Properties) -> + Input@1 = skip_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + Input@3 = skip_line_whitespace(Input@2), + expect( + Input@3, + <<"="/utf8>>, + fun(Input@4) -> + Input@5 = skip_line_whitespace(Input@4), + do( + parse_value(Input@5), + fun(Value, Input@6) -> + case insert(Properties, Key, Value) of + {ok, Properties@1} -> + {ok, {Properties@1, Input@6}}; + + {error, E} -> + {error, E} + end + end + ) + end + ) + end + ). + +-spec parse_value(list(binary())) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_value(Input) -> + case Input of + [<<"t"/utf8>>, <<"r"/utf8>>, <<"u"/utf8>>, <<"e"/utf8>> | Input@1] -> + {ok, {{bool, true}, Input@1}}; + + [<<"f"/utf8>>, + <<"a"/utf8>>, + <<"l"/utf8>>, + <<"s"/utf8>>, + <<"e"/utf8>> | + Input@2] -> + {ok, {{bool, false}, Input@2}}; + + [<<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@3] -> + {ok, {{nan, positive}, Input@3}}; + + [<<"+"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@4] -> + {ok, {{nan, positive}, Input@4}}; + + [<<"-"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@5] -> + {ok, {{nan, negative}, Input@5}}; + + [<<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@6] -> + {ok, {{infinity, positive}, Input@6}}; + + [<<"+"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@7] -> + {ok, {{infinity, positive}, Input@7}}; + + [<<"-"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@8] -> + {ok, {{infinity, negative}, Input@8}}; + + [<<"["/utf8>> | Input@9] -> + parse_array(Input@9, []); + + [<<"{"/utf8>> | Input@10] -> + parse_inline_table(Input@10, gleam@map:new()); + + [<<"0"/utf8>>, <<"x"/utf8>> | Input@11] -> + parse_hex(Input@11, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@12] -> + parse_hex(Input@12, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@13] -> + parse_hex(Input@13, 0, negative); + + [<<"0"/utf8>>, <<"o"/utf8>> | Input@14] -> + parse_octal(Input@14, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@15] -> + parse_octal(Input@15, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@16] -> + parse_octal(Input@16, 0, negative); + + [<<"0"/utf8>>, <<"b"/utf8>> | Input@17] -> + parse_binary(Input@17, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@18] -> + parse_binary(Input@18, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@19] -> + parse_binary(Input@19, 0, negative); + + [<<"+"/utf8>> | Input@20] -> + parse_number(Input@20, 0, positive); + + [<<"-"/utf8>> | Input@21] -> + parse_number(Input@21, 0, negative); + + [<<"0"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"1"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"2"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"3"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"4"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"5"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"6"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"7"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"8"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"9"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@22] -> + parse_multi_line_string(Input@22, <<""/utf8>>); + + [<<"\""/utf8>> | Input@23] -> + parse_string(Input@23, <<""/utf8>>); + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@24] -> + parse_multi_line_literal_string(Input@24, <<""/utf8>>); + + [<<"'"/utf8>> | Input@25] -> + parse_literal_string(Input@25, <<""/utf8>>); + + [G | _] -> + {error, {unexpected, G, <<"value"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"value"/utf8>>}} + end. + +-spec parse_inline_table(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_inline_table(Input, Properties) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"}"/utf8>> | Input@2] -> + {ok, {{inline_table, Properties}, Input@2}}; + + _ -> + case parse_inline_table_property(Input@1, Properties) of + {ok, {Properties@1, Input@3}} -> + Input@4 = skip_whitespace(Input@3), + case Input@4 of + [<<"}"/utf8>> | Input@5] -> + {ok, {{inline_table, Properties@1}, Input@5}}; + + [<<","/utf8>> | Input@6] -> + Input@7 = skip_whitespace(Input@6), + parse_inline_table(Input@7, Properties@1); + + [G | _] -> + {error, {unexpected, G, <<"}"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"}"/utf8>>}} + end; + + {error, E} -> + {error, E} + end + end. + +-spec parse_key_value(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, + {gleam@dict:dict(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_key_value(Input, Toml) -> + do( + parse_key(Input, []), + fun(Key, Input@1) -> + Input@2 = skip_line_whitespace(Input@1), + expect( + Input@2, + <<"="/utf8>>, + fun(Input@3) -> + Input@4 = skip_line_whitespace(Input@3), + do( + parse_value(Input@4), + fun(Value, Input@5) -> case insert(Toml, Key, Value) of + {ok, Toml@1} -> + {ok, {Toml@1, Input@5}}; + + {error, E} -> + {error, E} + end end + ) + end + ) + end + ). + +-spec parse_table(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, + {gleam@dict:dict(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_table(Input, Toml) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"["/utf8>> | _] -> + {ok, {Toml, Input@1}}; + + [] -> + {ok, {Toml, Input@1}}; + + _ -> + case parse_key_value(Input@1, Toml) of + {ok, {Toml@1, Input@2}} -> + case skip_line_whitespace(Input@2) of + [] -> + {ok, {Toml@1, []}}; + + [<<"\n"/utf8>> | In] -> + parse_table(In, Toml@1); + + [<<"\r\n"/utf8>> | In] -> + parse_table(In, Toml@1); + + [G | _] -> + {error, {unexpected, G, <<"\n"/utf8>>}} + end; + + E -> + E + end + end. + +-spec parse_array_of_tables(list(binary())) -> {ok, + {{list(binary()), gleam@dict:dict(binary(), toml())}, list(binary())}} | + {error, parse_error()}. +parse_array_of_tables(Input) -> + Input@1 = skip_line_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + expect( + Input@2, + <<"]"/utf8>>, + fun(Input@3) -> + expect( + Input@3, + <<"]"/utf8>>, + fun(Input@4) -> + do( + parse_table(Input@4, gleam@map:new()), + fun(Table, Input@5) -> + {ok, {{Key, Table}, Input@5}} + end + ) + end + ) + end + ) + end + ). + +-spec parse_table_and_header(list(binary())) -> {ok, + {{list(binary()), gleam@dict:dict(binary(), toml())}, list(binary())}} | + {error, parse_error()}. +parse_table_and_header(Input) -> + do( + parse_table_header(Input), + fun(Key, Input@1) -> + do( + parse_table(Input@1, gleam@map:new()), + fun(Table, Input@2) -> {ok, {{Key, Table}, Input@2}} end + ) + end + ). + +-spec parse_tables(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, + gleam@dict:dict(binary(), toml())} | + {error, parse_error()}. +parse_tables(Input, Toml) -> + case Input of + [<<"["/utf8>>, <<"["/utf8>> | Input@1] -> + case parse_array_of_tables(Input@1) of + {error, E} -> + {error, E}; + + {ok, {{Key, Table}, Input@2}} -> + case insert(Toml, Key, {array_of_tables, [Table]}) of + {ok, Toml@1} -> + parse_tables(Input@2, Toml@1); + + {error, E@1} -> + {error, E@1} + end + end; + + [<<"["/utf8>> | Input@3] -> + case parse_table_and_header(Input@3) of + {error, E@2} -> + {error, E@2}; + + {ok, {{Key@1, Table@1}, Input@4}} -> + case insert(Toml, Key@1, {table, Table@1}) of + {ok, Toml@2} -> + parse_tables(Input@4, Toml@2); + + {error, E@3} -> + {error, E@3} + end + end; + + [G | _] -> + {error, {unexpected, G, <<"["/utf8>>}}; + + [] -> + {ok, Toml} + end. + +-spec parse(binary()) -> {ok, gleam@dict:dict(binary(), toml())} | + {error, parse_error()}. +parse(Input) -> + Input@1 = gleam@string:to_graphemes(Input), + Input@2 = drop_comments(Input@1, []), + Input@3 = skip_whitespace(Input@2), + do( + parse_table(Input@3, gleam@map:new()), + fun(Toml, Input@4) -> case parse_tables(Input@4, Toml) of + {ok, Toml@1} -> + {ok, reverse_arrays_of_tables_table(Toml@1)}; + + {error, E} -> + {error, E} + end end + ). + +-spec parse_array(list(binary()), list(toml())) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_array(Input, Elements) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"]"/utf8>> | Input@2] -> + {ok, {{array, gleam@list:reverse(Elements)}, Input@2}}; + + _ -> + do( + parse_value(Input@1), + fun(Element, Input@3) -> + Elements@1 = [Element | Elements], + Input@4 = skip_whitespace(Input@3), + case Input@4 of + [<<"]"/utf8>> | Input@5] -> + {ok, + {{array, gleam@list:reverse(Elements@1)}, + Input@5}}; + + [<<","/utf8>> | Input@6] -> + Input@7 = skip_whitespace(Input@6), + parse_array(Input@7, Elements@1); + + [G | _] -> + {error, {unexpected, G, <<"]"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"]"/utf8>>}} + end + end + ) + end. diff --git a/aoc2023/build/dev/erlang/tom/ebin/tom.app b/aoc2023/build/dev/erlang/tom/ebin/tom.app new file mode 100644 index 0000000..ade9be1 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/ebin/tom.app @@ -0,0 +1,7 @@ +{application, tom, [ + {vsn, "0.2.1"}, + {applications, [gleam_stdlib]}, + {description, "A pure Gleam TOML parser!"}, + {modules, []}, + {registered, []} +]}. diff --git a/aoc2023/build/dev/erlang/tom/ebin/tom.beam b/aoc2023/build/dev/erlang/tom/ebin/tom.beam new file mode 100644 index 0000000..0d4e0d2 Binary files /dev/null and b/aoc2023/build/dev/erlang/tom/ebin/tom.beam differ diff --git a/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl new file mode 100644 index 0000000..3b1e660 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl @@ -0,0 +1,5 @@ +-record(date_time_value, { + date :: tom:date(), + time :: tom:time(), + offset :: tom:offset() +}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl new file mode 100644 index 0000000..c41f901 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl @@ -0,0 +1 @@ +-record(date_value, {year :: integer(), month :: integer(), day :: integer()}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl b/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl new file mode 100644 index 0000000..930df26 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl @@ -0,0 +1 @@ +-record(key_already_in_use, {key :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl b/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl new file mode 100644 index 0000000..19c9a17 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl @@ -0,0 +1 @@ +-record(not_found, {key :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl b/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl new file mode 100644 index 0000000..a58a8e1 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl @@ -0,0 +1,5 @@ +-record(offset, { + direction :: tom:sign(), + hours :: integer(), + minutes :: integer() +}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl new file mode 100644 index 0000000..e1275de --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl @@ -0,0 +1,6 @@ +-record(time_value, { + hour :: integer(), + minute :: integer(), + second :: integer(), + millisecond :: integer() +}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl b/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl new file mode 100644 index 0000000..ab1091c --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl @@ -0,0 +1 @@ +-record(unexpected, {got :: binary(), expected :: binary()}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl b/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl new file mode 100644 index 0000000..ae57352 --- /dev/null +++ b/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl @@ -0,0 +1,5 @@ +-record(wrong_type, { + key :: list(binary()), + expected :: binary(), + got :: binary() +}). diff --git a/aoc2023/build/dev/javascript/gleam.lock b/aoc2023/build/dev/javascript/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache new file mode 100644 index 0000000..521ceaf Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta new file mode 100644 index 0000000..5b2e4fa Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache new file mode 100644 index 0000000..4a84a17 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta new file mode 100644 index 0000000..13db829 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache new file mode 100644 index 0000000..fc93f49 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta new file mode 100644 index 0000000..25d46c5 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache new file mode 100644 index 0000000..3f2627e Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta new file mode 100644 index 0000000..ea20543 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache new file mode 100644 index 0000000..6b372e3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta new file mode 100644 index 0000000..d74550f Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache new file mode 100644 index 0000000..892378a Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta new file mode 100644 index 0000000..6069b5f Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache new file mode 100644 index 0000000..59c03e8 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta new file mode 100644 index 0000000..4280edf Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache new file mode 100644 index 0000000..eabceb6 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta new file mode 100644 index 0000000..efc3c1e Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache new file mode 100644 index 0000000..7941b60 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta new file mode 100644 index 0000000..a43f871 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache new file mode 100644 index 0000000..3c13e17 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta new file mode 100644 index 0000000..171b42d Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache new file mode 100644 index 0000000..6f3ef24 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta new file mode 100644 index 0000000..943d5d1 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache new file mode 100644 index 0000000..689de34 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta new file mode 100644 index 0000000..dd43210 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache new file mode 100644 index 0000000..222be7f Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta new file mode 100644 index 0000000..a6a146a Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache new file mode 100644 index 0000000..2827e6a Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta new file mode 100644 index 0000000..7772183 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache new file mode 100644 index 0000000..be4949e Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta new file mode 100644 index 0000000..c4fec3d Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache new file mode 100644 index 0000000..e21cf07 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta new file mode 100644 index 0000000..1756ecb Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache new file mode 100644 index 0000000..6fc886b Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta new file mode 100644 index 0000000..6ee96ca Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache new file mode 100644 index 0000000..1fb5bce Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta new file mode 100644 index 0000000..f515230 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache new file mode 100644 index 0000000..a37646a Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta new file mode 100644 index 0000000..7cfc212 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache new file mode 100644 index 0000000..2215915 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta new file mode 100644 index 0000000..39219c2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache new file mode 100644 index 0000000..6d99c72 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta new file mode 100644 index 0000000..3c79f10 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache new file mode 100644 index 0000000..552c884 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta new file mode 100644 index 0000000..b8918d9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache new file mode 100644 index 0000000..1a93299 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta new file mode 100644 index 0000000..8edfde1 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache new file mode 100644 index 0000000..90c98f2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta new file mode 100644 index 0000000..b116b96 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache new file mode 100644 index 0000000..6fbddc2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta new file mode 100644 index 0000000..ff3b647 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache new file mode 100644 index 0000000..6d293dd Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta new file mode 100644 index 0000000..1236a4e Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache new file mode 100644 index 0000000..56d5588 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta new file mode 100644 index 0000000..8458464 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache new file mode 100644 index 0000000..18e4c90 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta new file mode 100644 index 0000000..784c0c6 Binary files /dev/null and b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache new file mode 100644 index 0000000..03ccd8d Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta new file mode 100644 index 0000000..010588b Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache new file mode 100644 index 0000000..a3e359f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta new file mode 100644 index 0000000..7e5812c Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache new file mode 100644 index 0000000..679e63b Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta new file mode 100644 index 0000000..492226f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache new file mode 100644 index 0000000..cac1824 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta new file mode 100644 index 0000000..f684afc Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache new file mode 100644 index 0000000..1924a60 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta new file mode 100644 index 0000000..e9f22f9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache new file mode 100644 index 0000000..94061b3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta new file mode 100644 index 0000000..fb68ddf Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache new file mode 100644 index 0000000..ae12c19 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta new file mode 100644 index 0000000..8696694 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache new file mode 100644 index 0000000..d66a1b7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta new file mode 100644 index 0000000..dbcb771 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache new file mode 100644 index 0000000..6605c0f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta new file mode 100644 index 0000000..e8e1290 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache new file mode 100644 index 0000000..285fc49 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta new file mode 100644 index 0000000..7ef4eea Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache new file mode 100644 index 0000000..99eb8b4 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta new file mode 100644 index 0000000..c6b6dc6 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache new file mode 100644 index 0000000..19fc049 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta new file mode 100644 index 0000000..eb4b13e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache new file mode 100644 index 0000000..2cd9b6f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta new file mode 100644 index 0000000..a5a8349 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache new file mode 100644 index 0000000..ec1b22a Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta new file mode 100644 index 0000000..c27e086 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache new file mode 100644 index 0000000..9aed405 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta new file mode 100644 index 0000000..a3e7398 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache new file mode 100644 index 0000000..30d5d19 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta new file mode 100644 index 0000000..09cc64c Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache new file mode 100644 index 0000000..a859e78 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta new file mode 100644 index 0000000..1de55c9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache new file mode 100644 index 0000000..2efed01 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta new file mode 100644 index 0000000..71761c7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache new file mode 100644 index 0000000..65f231e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta new file mode 100644 index 0000000..8373480 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache new file mode 100644 index 0000000..f9f0f27 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta new file mode 100644 index 0000000..dcebbaf Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache new file mode 100644 index 0000000..b29c52a Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta new file mode 100644 index 0000000..51fdff1 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache new file mode 100644 index 0000000..586dc8a Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta new file mode 100644 index 0000000..7d7d9f7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache new file mode 100644 index 0000000..81e1b95 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta new file mode 100644 index 0000000..216bc61 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache new file mode 100644 index 0000000..7fb41c1 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta new file mode 100644 index 0000000..683844e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache new file mode 100644 index 0000000..17bd031 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta new file mode 100644 index 0000000..a62c67e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache new file mode 100644 index 0000000..b0eb623 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta new file mode 100644 index 0000000..2fec13e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache new file mode 100644 index 0000000..6ca601f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta new file mode 100644 index 0000000..d2ccb36 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache new file mode 100644 index 0000000..696553d Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta new file mode 100644 index 0000000..d86557e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache new file mode 100644 index 0000000..ba7b665 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta new file mode 100644 index 0000000..e3b757f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache new file mode 100644 index 0000000..4367d01 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta new file mode 100644 index 0000000..1debfe9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache new file mode 100644 index 0000000..a911091 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta new file mode 100644 index 0000000..828230e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache new file mode 100644 index 0000000..9b88d01 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta new file mode 100644 index 0000000..35a9a48 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache new file mode 100644 index 0000000..482a3bf Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta new file mode 100644 index 0000000..2af1fbe Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache new file mode 100644 index 0000000..50d9065 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta new file mode 100644 index 0000000..e326f72 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache new file mode 100644 index 0000000..80b9225 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta new file mode 100644 index 0000000..e9df393 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache new file mode 100644 index 0000000..52a1a03 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta new file mode 100644 index 0000000..bb3d942 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache new file mode 100644 index 0000000..9adb008 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta new file mode 100644 index 0000000..d80de98 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache new file mode 100644 index 0000000..fc70a08 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta new file mode 100644 index 0000000..3b1a2a0 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache new file mode 100644 index 0000000..d2b4607 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta new file mode 100644 index 0000000..eca9fea Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache new file mode 100644 index 0000000..0a13d69 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta new file mode 100644 index 0000000..054cd0e Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache new file mode 100644 index 0000000..6764230 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta new file mode 100644 index 0000000..d316cb3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache new file mode 100644 index 0000000..0172460 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta new file mode 100644 index 0000000..bd28173 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache new file mode 100644 index 0000000..fefff2d Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta new file mode 100644 index 0000000..5355703 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache new file mode 100644 index 0000000..2c9cded Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta new file mode 100644 index 0000000..a7d2130 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache new file mode 100644 index 0000000..4d54d49 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta new file mode 100644 index 0000000..4f164d5 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache new file mode 100644 index 0000000..5fa8a20 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta new file mode 100644 index 0000000..c13d429 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache new file mode 100644 index 0000000..a99c932 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta new file mode 100644 index 0000000..bff2f05 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache new file mode 100644 index 0000000..beefe36 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta new file mode 100644 index 0000000..de6a9ae Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache new file mode 100644 index 0000000..afe092f Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta new file mode 100644 index 0000000..88a04e0 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache new file mode 100644 index 0000000..9273efb Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta new file mode 100644 index 0000000..f81ca7a Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache new file mode 100644 index 0000000..5a113a7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta new file mode 100644 index 0000000..f3cebb8 Binary files /dev/null and b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache new file mode 100644 index 0000000..58fdf0a Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta new file mode 100644 index 0000000..edd8d2a Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache new file mode 100644 index 0000000..df62224 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta new file mode 100644 index 0000000..3bc139d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache new file mode 100644 index 0000000..bbfe5ed Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta new file mode 100644 index 0000000..4a36f3c Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache new file mode 100644 index 0000000..65752d7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta new file mode 100644 index 0000000..ca915f3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache new file mode 100644 index 0000000..c0172d9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta new file mode 100644 index 0000000..3773567 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam.lock b/aoc2023/build/lsp/erlang/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache new file mode 100644 index 0000000..5163da7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta new file mode 100644 index 0000000..6988904 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache new file mode 100644 index 0000000..d1acf6b Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta new file mode 100644 index 0000000..53e1ad9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache new file mode 100644 index 0000000..7012d28 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta new file mode 100644 index 0000000..e926edf Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache new file mode 100644 index 0000000..dbe18f4 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta new file mode 100644 index 0000000..ac9cd0c Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache new file mode 100644 index 0000000..82de246 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta new file mode 100644 index 0000000..8124d25 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache new file mode 100644 index 0000000..18e058a Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta new file mode 100644 index 0000000..eada136 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache new file mode 100644 index 0000000..706c48f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta new file mode 100644 index 0000000..ade0e09 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache new file mode 100644 index 0000000..e21f351 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta new file mode 100644 index 0000000..7edd566 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache new file mode 100644 index 0000000..31e4bd8 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta new file mode 100644 index 0000000..14c1d0f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache new file mode 100644 index 0000000..a0c65e8 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta new file mode 100644 index 0000000..8d56c49 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache new file mode 100644 index 0000000..c1adae5 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta new file mode 100644 index 0000000..3cfa2ef Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache new file mode 100644 index 0000000..ecca197 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta new file mode 100644 index 0000000..e8cada3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache new file mode 100644 index 0000000..9cb4b7e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta new file mode 100644 index 0000000..d76e6b6 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache new file mode 100644 index 0000000..ee9e3c5 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta new file mode 100644 index 0000000..bfd938d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache new file mode 100644 index 0000000..223f016 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta new file mode 100644 index 0000000..7996afc Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache new file mode 100644 index 0000000..e935a8b Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta new file mode 100644 index 0000000..e194cad Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache new file mode 100644 index 0000000..b0b77f7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta new file mode 100644 index 0000000..4423143 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache new file mode 100644 index 0000000..977e362 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta new file mode 100644 index 0000000..a5a851f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache new file mode 100644 index 0000000..4c47a8f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta new file mode 100644 index 0000000..90df4b9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache new file mode 100644 index 0000000..6b925a9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta new file mode 100644 index 0000000..f53edb8 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache new file mode 100644 index 0000000..ab6b66d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta new file mode 100644 index 0000000..89d9a4d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache new file mode 100644 index 0000000..a5cf562 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta new file mode 100644 index 0000000..91001e2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache new file mode 100644 index 0000000..19c78e4 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta new file mode 100644 index 0000000..37ee645 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache new file mode 100644 index 0000000..903ffa4 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta new file mode 100644 index 0000000..30e0838 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache new file mode 100644 index 0000000..ba9ef78 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta new file mode 100644 index 0000000..d66a2c3 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache new file mode 100644 index 0000000..739be7d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta new file mode 100644 index 0000000..01991ea Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache new file mode 100644 index 0000000..24b814e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta new file mode 100644 index 0000000..ad921d2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache new file mode 100644 index 0000000..b35f9fd Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta new file mode 100644 index 0000000..ac4a4c2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache new file mode 100644 index 0000000..30fbb09 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta new file mode 100644 index 0000000..a58472a Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache new file mode 100644 index 0000000..9992f8e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta new file mode 100644 index 0000000..830d435 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache new file mode 100644 index 0000000..fb7d4a6 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta new file mode 100644 index 0000000..26c03cf Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache new file mode 100644 index 0000000..c447835 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta new file mode 100644 index 0000000..6beed5e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache new file mode 100644 index 0000000..e295cef Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta new file mode 100644 index 0000000..d03bd4e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache new file mode 100644 index 0000000..6b43913 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta new file mode 100644 index 0000000..09e2f8a Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache new file mode 100644 index 0000000..122b269 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta new file mode 100644 index 0000000..b59a80e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache new file mode 100644 index 0000000..7a80622 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta new file mode 100644 index 0000000..e7f013d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache new file mode 100644 index 0000000..06a6c96 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta new file mode 100644 index 0000000..e616ec0 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache new file mode 100644 index 0000000..01ea426 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta new file mode 100644 index 0000000..701db1f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache new file mode 100644 index 0000000..49f4e5c Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta new file mode 100644 index 0000000..fd97a7e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache new file mode 100644 index 0000000..cbc0f1c Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta new file mode 100644 index 0000000..e0ebbda Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache new file mode 100644 index 0000000..189b9ad Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta new file mode 100644 index 0000000..8778fab Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache new file mode 100644 index 0000000..726a070 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta new file mode 100644 index 0000000..8bfae6d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache new file mode 100644 index 0000000..83be3b0 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta new file mode 100644 index 0000000..7c99d5d Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache new file mode 100644 index 0000000..b20af0e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta new file mode 100644 index 0000000..48ca73e Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache new file mode 100644 index 0000000..c3d8348 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta new file mode 100644 index 0000000..fb52d57 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache new file mode 100644 index 0000000..752dab0 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta new file mode 100644 index 0000000..6587875 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache new file mode 100644 index 0000000..ba87194 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta new file mode 100644 index 0000000..0b52486 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache new file mode 100644 index 0000000..100fb62 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta new file mode 100644 index 0000000..8b36f47 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache new file mode 100644 index 0000000..cf6532f Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta new file mode 100644 index 0000000..2395015 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache new file mode 100644 index 0000000..8b90bd7 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta new file mode 100644 index 0000000..a2089a5 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache new file mode 100644 index 0000000..cbb4139 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta new file mode 100644 index 0000000..6ec02d2 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache new file mode 100644 index 0000000..04900e9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta new file mode 100644 index 0000000..d6129ae Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache new file mode 100644 index 0000000..fa35d18 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta new file mode 100644 index 0000000..f4e8874 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache new file mode 100644 index 0000000..d33ebc9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta new file mode 100644 index 0000000..e4e832b Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache new file mode 100644 index 0000000..64e10ec Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta new file mode 100644 index 0000000..0f375fd Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache new file mode 100644 index 0000000..2130157 Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta new file mode 100644 index 0000000..b367bfd Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache new file mode 100644 index 0000000..0e387bb Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta new file mode 100644 index 0000000..2ae412b Binary files /dev/null and b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/gleam_version b/aoc2023/build/lsp/erlang/gleam_version new file mode 100644 index 0000000..048acbd --- /dev/null +++ b/aoc2023/build/lsp/erlang/gleam_version @@ -0,0 +1 @@ +0.33.0-rc2 \ No newline at end of file diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache new file mode 100644 index 0000000..eb7ff68 Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta new file mode 100644 index 0000000..961512a Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache new file mode 100644 index 0000000..80596e9 Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta new file mode 100644 index 0000000..1c9f1af Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache new file mode 100644 index 0000000..cc6fd56 Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta new file mode 100644 index 0000000..9339182 Binary files /dev/null and b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache new file mode 100644 index 0000000..6012ccd Binary files /dev/null and b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache differ diff --git a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta new file mode 100644 index 0000000..2120b13 Binary files /dev/null and b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache new file mode 100644 index 0000000..72355df Binary files /dev/null and b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache differ diff --git a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta new file mode 100644 index 0000000..181b01e Binary files /dev/null and b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta differ diff --git a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache new file mode 100644 index 0000000..c632faf Binary files /dev/null and b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache differ diff --git a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta new file mode 100644 index 0000000..3371771 Binary files /dev/null and b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta differ diff --git a/aoc2023/build/lsp/javascript/gleam.lock b/aoc2023/build/lsp/javascript/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/packages/adglent/LICENSE b/aoc2023/build/packages/adglent/LICENSE new file mode 100644 index 0000000..c7c82cc --- /dev/null +++ b/aoc2023/build/packages/adglent/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright 2023 John Björk + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/aoc2023/build/packages/adglent/README.md b/aoc2023/build/packages/adglent/README.md new file mode 100644 index 0000000..fcd81eb --- /dev/null +++ b/aoc2023/build/packages/adglent/README.md @@ -0,0 +1,115 @@ +# adglent + +[![Package Version](https://img.shields.io/hexpm/v/adglent)](https://hex.pm/packages/adglent) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/adglent/) + +## About + +`adglent` is a Gleam library which can be used to setup testing code and a template for implementing solution to [Advent of code](https://adventofcode.com/) problems. + +> NOTE: `adglent` **only** supports `erlang` target (default) for Gleam. + +## Prerequisites + +`adglent` is written in `gleam` and runs and tests solutions written in Gleam. Read more about `gleam` at [gleam.run](https://gleam.run). + +The easiest way to install `gleam` is to use `asdf`: + +1. Install `asdf` according to the instructions at the [asdf website](https://asdf-vm.com/) +2. Install the gleam asdf plugin: `asdf plugin-add gleam` +3. Install the latest `asdf install gleam latest` +4. Use the latest gleam version globally: `asdf global gleam latest` + +> HINT: `asdf` can manage multiple versions of gleam and the version can be set globally and also locally (`asdf local gleam `) to use a specific gleam version in a project. + +## Installation + +Start a new gleam project for your AOC soluctions with `gleam new`. In the project folder run: + +```sh +gleam add --dev adglent +``` + +## Usage + +### Initializing + +First log in to [Advent of code](https://adventofcode.com/) and copy your personal `session-cookie`. The value can be found using developer tools in the browser (in Chrome: "Application->Cookies->https://adventofcode.com->session" and copy the Cookie-value) + +```sh +gleam run -m adglent/init +``` + +Input the AOC year, you personal AOC session cookie and select if `showtime` should be used for tests (otherwise it will assume the project uses `gleeunit` as is default for `gleam new `) + +> NOTE: `showtime` is an alternate gleam test-runner. It is still quite new and havn't been tested in as many project as `gleeunit`. It has a different way of formatting the test-results and also supports the possibility to run specific test-modules (which can be useful in AOC). `showtime` is a standalone project but have been embedded into `adglent`. + +### Add day + +To start working on the solution for a specific day run: + +```sh +gleam run -m adglent/day +``` + +Where `` is the day number of the day you want to solve a problem for. + +> Example (start solving 1st of December): +> +> ```sh +> gleam run -m adglent/day 1 +> ``` + +Adding a day will add tests in `test/day/day_test.gleam`and a `src/day/solve.gleam` file where the solution can be implemented. + +Furthermore it will also download the input for the problem to `src/day/input.txt` + +Before running the tests you need to provide one or more example. These can be found in the problem description for that day at the AOC website. + +Add an example to a part of the problem by adding examples to the `part1_examples` or `part2_examples` lists. + +> Example (input "Hello Joe!" should give answer 613411): +> +> ```gleam +> const part1_examples: List(Example(Problem1AnswerType)) = [ +> Example("Hello Joe!", "613411"), +> ] +> ``` + +The type of the answer for a part can be adjusted if needed by changing the type aliases `Problem1AnswerType` / `Problem2AnswerType`. Note that this will change the type that the `part1` / `part2` functions in `solve.gleam` expect to return. + +### Testing + +To test all days in the project use: + +```sh +gleam test +``` + +If you are using `showtime` you can test a single day by running: + +```sh +gleam test -- --modules=day/day_test +``` + +> Example (test solution for 1st of December): +> +> ```sh +> gleam test -- modules=day1/day1_test +> ``` + +### Get the answer + +To get the (hopefully correct) answer after the tests are ok run: + +```sh +gleam run -m day/solve +``` + +where `` is the day to solve and `` is the part of the problem (1 or 2) to solve. + +This will run the solver and print the answer to stdout. + +### Module documentation + +Module documentation can be found at . diff --git a/aoc2023/build/packages/adglent/gleam.toml b/aoc2023/build/packages/adglent/gleam.toml new file mode 100644 index 0000000..e1d81b8 --- /dev/null +++ b/aoc2023/build/packages/adglent/gleam.toml @@ -0,0 +1,29 @@ +name = "adglent" +version = "1.2.0" + +description = "Advent of code helper - automating setup of tests, solution template and problem input" +licences = ["Apache-2.0"] +repository = { type = "github", user = "JohnBjrk", repo = "adglent" } + +internal_modules = [ + "adglent/priv", + "adglent/priv/*", + "showtime/internal/*", +] +gleam = ">= 0.32.0" + +[dependencies] +gleam_stdlib = "~> 0.32" +simplifile = "~> 1.0" +gleam_http = "~> 3.5" +gleam_erlang = "~> 0.23.0" +gleam_otp = "~> 0.8.0" +gleam_community_ansi = "~> 1.2" +glint = "~> 0.13.0" +gap = "~> 1.0" +snag = "~> 0.2.0" +tom = "~> 0.2.0" +gleam_httpc = "~> 2.1" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/adglent/include/adglent_Example.hrl b/aoc2023/build/packages/adglent/include/adglent_Example.hrl new file mode 100644 index 0000000..615e473 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/adglent_Example.hrl @@ -0,0 +1 @@ +-record(example, {input :: binary(), answer :: any()}). diff --git a/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl b/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl new file mode 100644 index 0000000..4cd5ddd --- /dev/null +++ b/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl @@ -0,0 +1 @@ +-record(tom_get_error, {error :: tom:get_error()}). diff --git a/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl b/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl new file mode 100644 index 0000000..7306934 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl @@ -0,0 +1 @@ +-record(tom_parse_error, {error :: tom:parse_error()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl new file mode 100644 index 0000000..7d24e52 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl @@ -0,0 +1 @@ +-record(finished, {num_modules :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl new file mode 100644 index 0000000..2eceb23 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl @@ -0,0 +1,5 @@ +-record(handler_state, { + test_state :: showtime@internal@common@common_event_handler:test_state(), + num_done :: integer(), + events :: gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run())) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl new file mode 100644 index 0000000..79f34f8 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl @@ -0,0 +1 @@ +-record(arg_list, {arg_list :: list(gleam@dynamic:dynamic_())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl new file mode 100644 index 0000000..c6458ba --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl @@ -0,0 +1,3 @@ +-record(assert_equal, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl new file mode 100644 index 0000000..4920304 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl @@ -0,0 +1,3 @@ +-record(assert_match, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl new file mode 100644 index 0000000..221c15f --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl @@ -0,0 +1,3 @@ +-record(assert_not_equal, { + details :: list(showtime@internal@common@test_result:reason_detail()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl new file mode 100644 index 0000000..9a31ba8 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl @@ -0,0 +1,6 @@ +-record(erlang_exception, { + class :: showtime@internal@common@test_result:class(), + reason :: showtime@internal@common@test_result:reason(), + stacktrace :: showtime@internal@common@test_result:trace_list(), + output_buffer :: list(binary()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl new file mode 100644 index 0000000..97d0802 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl @@ -0,0 +1,3 @@ +-record(error_info, { + error_info :: gleam@map:map_(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl new file mode 100644 index 0000000..5e40ad3 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl @@ -0,0 +1 @@ +-record(expected, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl new file mode 100644 index 0000000..7aa0c35 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl @@ -0,0 +1 @@ +-record(expression, {expression :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl new file mode 100644 index 0000000..1274b74 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl @@ -0,0 +1 @@ +-record(file, {filename :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl new file mode 100644 index 0000000..7c33d0d --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl @@ -0,0 +1 @@ +-record(generic_exception, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl new file mode 100644 index 0000000..095748c --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl @@ -0,0 +1 @@ +-record(gleam_assert, {value :: gleam@dynamic:dynamic_(), line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl new file mode 100644 index 0000000..68e6645 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl @@ -0,0 +1,3 @@ +-record(gleam_error, { + details :: showtime@internal@common@test_result:gleam_error_detail() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl new file mode 100644 index 0000000..87b7e2f --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl @@ -0,0 +1 @@ +-record(ignored, {reason :: showtime@internal@common@test_result:ignore_reason()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl new file mode 100644 index 0000000..5f3f60d --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl @@ -0,0 +1,7 @@ +-record(let_assert, { + module :: binary(), + function :: binary(), + line_no :: integer(), + message :: binary(), + value :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl new file mode 100644 index 0000000..9807df6 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl @@ -0,0 +1 @@ +-record(line, {line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl new file mode 100644 index 0000000..8002c0c --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl @@ -0,0 +1 @@ +-record(module, {name :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl new file mode 100644 index 0000000..c36efa3 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl @@ -0,0 +1 @@ +-record(num, {arity :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl new file mode 100644 index 0000000..6aa9c84 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl @@ -0,0 +1 @@ +-record(pattern, {pattern :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl new file mode 100644 index 0000000..b7ad1ab --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl @@ -0,0 +1 @@ +-record(reason_line, {line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl new file mode 100644 index 0000000..b0bc294 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl @@ -0,0 +1,4 @@ +-record(test_function_return, { + value :: gleam@dynamic:dynamic_(), + output_buffer :: list(binary()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl new file mode 100644 index 0000000..4cb007c --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl @@ -0,0 +1,5 @@ +-record(trace, { + function :: binary(), + arity :: showtime@internal@common@test_result:arity_(), + extra_info :: list(showtime@internal@common@test_result:extra_info()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl new file mode 100644 index 0000000..c1aa9c5 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl @@ -0,0 +1,3 @@ +-record(trace_list, { + traces :: list(showtime@internal@common@test_result:trace()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl new file mode 100644 index 0000000..595362f --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl @@ -0,0 +1,6 @@ +-record(trace_module, { + module :: binary(), + function :: binary(), + arity :: showtime@internal@common@test_result:arity_(), + extra_info :: list(showtime@internal@common@test_result:extra_info()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl new file mode 100644 index 0000000..3a4b0dd --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl @@ -0,0 +1 @@ +-record(value, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl new file mode 100644 index 0000000..927a0cf --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl @@ -0,0 +1,6 @@ +-record(completed_test_run, { + test_function :: showtime@internal@common@test_suite:test_function(), + total_time :: integer(), + result :: {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()} +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl new file mode 100644 index 0000000..13df1bf --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl @@ -0,0 +1,6 @@ +-record(end_test, { + test_module :: showtime@internal@common@test_suite:test_module(), + test_function :: showtime@internal@common@test_suite:test_function(), + result :: {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()} +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl new file mode 100644 index 0000000..3f78991 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl @@ -0,0 +1 @@ +-record(end_test_run, {num_modules :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl new file mode 100644 index 0000000..a7f37b3 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl @@ -0,0 +1,3 @@ +-record(end_test_suite, { + test_module :: showtime@internal@common@test_suite:test_module() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl new file mode 100644 index 0000000..f52e5cc --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl @@ -0,0 +1,4 @@ +-record(ongoing_test_run, { + test_function :: showtime@internal@common@test_suite:test_function(), + started_at :: integer() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl new file mode 100644 index 0000000..d532609 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl @@ -0,0 +1,4 @@ +-record(start_test, { + test_module :: showtime@internal@common@test_suite:test_module(), + test_function :: showtime@internal@common@test_suite:test_function() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl new file mode 100644 index 0000000..d5a03d3 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl @@ -0,0 +1,3 @@ +-record(start_test_suite, { + test_module :: showtime@internal@common@test_suite:test_module() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl new file mode 100644 index 0000000..a783ba4 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl @@ -0,0 +1 @@ +-record(test_function, {name :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl new file mode 100644 index 0000000..ee9baaf --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl @@ -0,0 +1 @@ +-record(test_module, {name :: binary(), path :: gleam@option:option(binary())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl new file mode 100644 index 0000000..253a946 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl @@ -0,0 +1,4 @@ +-record(test_suite, { + module :: showtime@internal@common@test_suite:test_module(), + tests :: list(showtime@internal@common@test_suite:test_function()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl new file mode 100644 index 0000000..ca52968 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl @@ -0,0 +1,4 @@ +-record(align_left, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl new file mode 100644 index 0000000..8d5a673 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl @@ -0,0 +1,4 @@ +-record(align_left_overflow, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl new file mode 100644 index 0000000..7f7a3f0 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl @@ -0,0 +1,4 @@ +-record(align_right, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl new file mode 100644 index 0000000..4fc4536 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl @@ -0,0 +1,4 @@ +-record(align_right_overflow, { + content :: showtime@internal@reports@table:content(), + margin :: integer() +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl new file mode 100644 index 0000000..2343dfd --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl @@ -0,0 +1 @@ +-record(aligned, {content :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl new file mode 100644 index 0000000..044891b --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl @@ -0,0 +1 @@ +-record(content, {unstyled_text :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl new file mode 100644 index 0000000..db3f822 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl @@ -0,0 +1 @@ +-record(separator, {char :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl new file mode 100644 index 0000000..ed500df --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl @@ -0,0 +1 @@ +-record(styled_content, {styled_text :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl new file mode 100644 index 0000000..5b41bb1 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl @@ -0,0 +1,4 @@ +-record(table, { + header :: gleam@option:option(binary()), + rows :: list(list(showtime@internal@reports@table:col())) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl new file mode 100644 index 0000000..14184fb --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl @@ -0,0 +1 @@ +-record(meta, {description :: binary(), tags :: list(binary())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl new file mode 100644 index 0000000..6ebea34 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl @@ -0,0 +1,5 @@ +-record(eq, { + a :: any(), + b :: any(), + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl new file mode 100644 index 0000000..cf06a3c --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl @@ -0,0 +1 @@ +-record(fail, {meta :: gleam@option:option(showtime@tests@meta:meta())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl new file mode 100644 index 0000000..e9cabf3 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl @@ -0,0 +1,4 @@ +-record(is_error, { + a :: {ok, any()} | {error, any()}, + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl new file mode 100644 index 0000000..37c24ca --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl @@ -0,0 +1,4 @@ +-record(is_ok, { + a :: {ok, any()} | {error, any()}, + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl new file mode 100644 index 0000000..2a6bf48 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl @@ -0,0 +1,5 @@ +-record(not_eq, { + a :: any(), + b :: any(), + meta :: gleam@option:option(showtime@tests@meta:meta()) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl new file mode 100644 index 0000000..a814a93 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl @@ -0,0 +1,4 @@ +-record(meta_should, { + equal :: fun((any(), any()) -> nil), + not_equal :: fun((any(), any()) -> nil) +}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl new file mode 100644 index 0000000..e75a0b7 --- /dev/null +++ b/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl @@ -0,0 +1,4 @@ +-record(test, { + meta :: showtime@tests@meta:meta(), + test_function :: fun(() -> nil) +}). diff --git a/aoc2023/build/packages/adglent/src/adglent.app.src b/aoc2023/build/packages/adglent/src/adglent.app.src new file mode 100644 index 0000000..aa44f8b --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent.app.src @@ -0,0 +1,45 @@ +{application, adglent, [ + {vsn, "1.2.0"}, + {applications, [gap, + gleam_community_ansi, + gleam_erlang, + gleam_http, + gleam_httpc, + gleam_otp, + gleam_stdlib, + gleeunit, + glint, + simplifile, + snag, + tom]}, + {description, "Advent of code helper - automating setup of tests, solution template and problem input"}, + {modules, [adglent, + adglent@day, + adglent@init, + priv@aoc_client, + priv@errors, + priv@prompt, + priv@template, + priv@templates@solution, + priv@templates@test_main, + priv@templates@testfile_gleeunit, + priv@templates@testfile_showtime, + priv@toml, + showtime, + showtime@internal@common@cli, + showtime@internal@common@common_event_handler, + showtime@internal@common@test_result, + showtime@internal@common@test_suite, + showtime@internal@erlang@discover, + showtime@internal@erlang@event_handler, + showtime@internal@erlang@module_handler, + showtime@internal@erlang@runner, + showtime@internal@reports@compare, + showtime@internal@reports@formatter, + showtime@internal@reports@styles, + showtime@internal@reports@table, + showtime@tests@meta, + showtime@tests@should, + showtime@tests@test]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/adglent/src/adglent.erl b/aoc2023/build/packages/adglent/src/adglent.erl new file mode 100644 index 0000000..e9df2b7 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent.erl @@ -0,0 +1,55 @@ +-module(adglent). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([inspect/1, get_input/1, get_test_folder/1, start_arguments/0, get_part/0]). +-export_type([example/1, problem/0, charlist/0]). + +-type example(OFF) :: {example, binary(), OFF}. + +-type problem() :: first | second. + +-type charlist() :: any(). + +-spec inspect(any()) -> binary(). +inspect(Value) -> + Inspected_value = gleam@string:inspect(Value), + case begin + _pipe = Inspected_value, + gleam@string:starts_with(_pipe, <<"\""/utf8>>) + end of + true -> + _pipe@1 = Inspected_value, + _pipe@2 = gleam@string:drop_left(_pipe@1, 1), + gleam@string:drop_right(_pipe@2, 1); + + false -> + Inspected_value + end. + +-spec get_input(binary()) -> {ok, binary()} | {error, simplifile:file_error()}. +get_input(Day) -> + simplifile:read( + <<<<"src/day"/utf8, Day/binary>>/binary, "/input.txt"/utf8>> + ). + +-spec get_test_folder(binary()) -> binary(). +get_test_folder(Day) -> + <<"test/day"/utf8, Day/binary>>. + +-spec start_arguments() -> list(binary()). +start_arguments() -> + _pipe = init:get_plain_arguments(), + gleam@list:map(_pipe, fun unicode:characters_to_binary/1). + +-spec get_part() -> {ok, problem()} | {error, nil}. +get_part() -> + case start_arguments() of + [<<"1"/utf8>>] -> + {ok, first}; + + [<<"2"/utf8>>] -> + {ok, second}; + + _ -> + {error, nil} + end. diff --git a/aoc2023/build/packages/adglent/src/adglent.gleam b/aoc2023/build/packages/adglent/src/adglent.gleam new file mode 100644 index 0000000..077d49d --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent.gleam @@ -0,0 +1,56 @@ +import simplifile.{type FileError} +import gleam/list +import gleam/string + +pub type Example(a) { + Example(input: String, answer: a) +} + +pub fn inspect(value: a) -> String { + let inspected_value = string.inspect(value) + case + inspected_value + |> string.starts_with("\"") + { + True -> + inspected_value + |> string.drop_left(1) + |> string.drop_right(1) + False -> inspected_value + } +} + +pub fn get_input(day: String) -> Result(String, FileError) { + simplifile.read("src/day" <> day <> "/input.txt") +} + +pub fn get_test_folder(day: String) -> String { + "test/day" <> day +} + +pub type Problem { + First + Second +} + +pub fn get_part() -> Result(Problem, Nil) { + case start_arguments() { + ["1"] -> Ok(First) + ["2"] -> Ok(Second) + _ -> Error(Nil) + } +} + +pub fn start_arguments() -> List(String) { + get_start_arguments() + |> list.map(to_string) +} + +type Charlist + +/// Transform a charlist to a string +@external(erlang, "unicode", "characters_to_binary") +fn to_string(a: Charlist) -> String + +@external(erlang, "init", "get_plain_arguments") +fn get_start_arguments() -> List(Charlist) diff --git a/aoc2023/build/packages/adglent/src/adglent/day.gleam b/aoc2023/build/packages/adglent/src/adglent/day.gleam new file mode 100644 index 0000000..69e4ccc --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent/day.gleam @@ -0,0 +1,126 @@ +import adglent +import gleam/string +import gleam/result +import priv/template +import priv/templates/testfile_gleeunit +import priv/templates/testfile_showtime +import priv/templates/solution +import priv/toml +import priv/aoc_client +import priv/errors +import simplifile + +pub fn main() { + let day = + case adglent.start_arguments() { + [day] -> Ok(day) + args -> Error("Expected day - found: " <> string.join(args, ", ")) + } + |> errors.map_error("Error when parsing command args") + |> errors.print_error + |> errors.assert_ok + + let aoc_toml = + simplifile.read("aoc.toml") + |> errors.map_error("Could not read aoc.toml") + |> errors.print_error + |> errors.assert_ok + + let aoc_toml_version = toml.get_int(aoc_toml, ["version"]) + let year = + toml.get_string(aoc_toml, ["year"]) + |> errors.map_error("Could not read \"year\" from aoc.toml") + |> errors.print_error + |> errors.assert_ok + let session = + toml.get_string(aoc_toml, ["session"]) + |> errors.map_error("Could not read \"session\" from aoc.toml") + |> errors.print_error + |> errors.assert_ok + + let showtime = case aoc_toml_version { + Ok(2) -> { + toml.get_bool(aoc_toml, ["showtime"]) + |> errors.map_error("Could not read \"showtime\" from aoc.toml") + |> errors.print_error + |> errors.assert_ok + } + _ -> + toml.get_string(aoc_toml, ["showtime"]) + |> result.map(fn(bool_string) { + case bool_string { + "True" -> True + _ -> False + } + }) + |> errors.map_error("Could not read \"showtime\" from aoc.toml") + |> errors.print_error + |> errors.assert_ok + } + + let test_folder = adglent.get_test_folder(day) + let test_file = test_folder <> "/day" <> day <> "_test.gleam" + + simplifile.create_directory_all(test_folder) + |> errors.map_error("Could not create folder \"" <> test_folder <> "\"") + |> errors.print_error + |> errors.assert_ok + + let testfile_template = case showtime { + True -> testfile_showtime.template + False -> testfile_gleeunit.template + } + + template.render(testfile_template, [#("day", day)]) + |> create_file_if_not_present(test_file) + |> errors.print_result + |> errors.assert_ok + + let solutions_folder = "src/day" <> day + let solution_file = solutions_folder <> "/solve.gleam" + + simplifile.create_directory_all(solutions_folder) + |> errors.map_error("Could not create folder \"" <> solutions_folder <> "\"") + |> errors.print_error + |> errors.assert_ok + + template.render(solution.template, [#("day", day)]) + |> create_file_if_not_present(solution_file) + |> errors.print_result + |> errors.assert_ok + + create_file_if_not_present("input.txt", solutions_folder <> "/.gitignore") + |> errors.print_result + |> errors.assert_ok + + let input = + aoc_client.get_input(year, day, session) + |> errors.map_error("Error when fetching input") + |> errors.print_error + |> errors.assert_ok + + input + |> string.trim + |> create_file_if_not_present(solutions_folder <> "/input.txt") + |> errors.print_result + |> errors.assert_ok +} + +fn create_file_if_not_present( + content: String, + path: String, +) -> Result(String, String) { + case simplifile.is_file(path) { + True -> { + Ok(path <> " already exists - skipped") + } + False -> { + use _ <- result.try( + simplifile.create_file(path) + |> errors.map_messages("Created " <> path, "Could not create " <> path), + ) + simplifile.write(content, to: path) + |> errors.map_messages("Wrote " <> path, "Could not write to " <> path) + } + } +} diff --git a/aoc2023/build/packages/adglent/src/adglent/init.gleam b/aoc2023/build/packages/adglent/src/adglent/init.gleam new file mode 100644 index 0000000..42eb833 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent/init.gleam @@ -0,0 +1,110 @@ +import priv/prompt +import priv/template +import priv/templates/test_main +import priv/errors +import priv/toml +import simplifile +import gleam/string +import gleam/list +import gleam/result +import gleam/bool + +const aoc_toml_template = " +version = {{ version }} +year = \"{{ year }}\" +session = \"{{ session }}\" +showtime = {{ showtime }} +" + +pub fn main() { + let year = prompt.value("Year", "2023", False) + let session = prompt.value("Session Cookie", "", False) + let use_showtime = prompt.confirm("Use showtime", False) + + let aoc_toml_file = "aoc.toml" + let overwrite = case simplifile.create_file(aoc_toml_file) { + Ok(_) -> True + Error(simplifile.Eexist) -> + prompt.confirm("aoc.toml exits - overwrite", False) + _ -> panic as "Could not create aoc.toml" + } + case overwrite { + True -> { + template.render( + aoc_toml_template, + [ + #("version", "2"), + #("year", year), + #("session", session), + #( + "showtime", + bool.to_string(use_showtime) + |> string.lowercase, + ), + ], + ) + |> simplifile.write(to: aoc_toml_file) + |> errors.map_messages( + "aoc.toml - written", + "Error when writing aoc.toml", + ) + } + + False -> Ok("aoc.toml - skipped") + } + |> errors.print_result + + let gleam_toml = + simplifile.read("gleam.toml") + |> errors.map_error("Could not read gleam.toml") + |> errors.print_error + |> errors.assert_ok + + let name = + toml.get_string(gleam_toml, ["name"]) + |> errors.map_error("Could not read \"name\" from gleam.toml") + |> errors.print_error + |> errors.assert_ok + + let test_main_file = "test/" <> name <> "_test.gleam" + + case use_showtime { + True -> { + template.render(test_main.template, []) + |> simplifile.write(to: test_main_file) + |> errors.map_messages( + "Wrote " <> test_main_file, + "Could not write to " <> test_main_file, + ) + } + False -> Ok("Using existing (gleeunit) " <> test_main_file) + } + |> errors.print_result + |> errors.assert_ok + + case simplifile.is_file(".gitignore") { + True -> { + use gitignore <- result.try( + simplifile.read(".gitignore") + |> result.map_error(fn(err) { + "Could not read .gitignore: " <> string.inspect(err) + }), + ) + let aoc_toml_ignored = + string.split(gitignore, "\n") + |> list.find(fn(line) { line == "aoc.toml" }) + case aoc_toml_ignored { + Error(_) -> { + simplifile.append("\naoc.toml", to: ".gitignore") + |> errors.map_messages( + ".gitignore written", + "Error when writing .gitignore", + ) + } + Ok(_) -> Ok(".gitignore - skipped (already configured)") + } + } + False -> Error("Could not find .gitignore") + } + |> errors.print_result +} diff --git a/aoc2023/build/packages/adglent/src/adglent@day.erl b/aoc2023/build/packages/adglent/src/adglent@day.erl new file mode 100644 index 0000000..b80368f --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent@day.erl @@ -0,0 +1,278 @@ +-module(adglent@day). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec create_file_if_not_present(binary(), binary()) -> {ok, binary()} | + {error, binary()}. +create_file_if_not_present(Content, Path) -> + case simplifile:is_file(Path) of + true -> + {ok, <>}; + + false -> + gleam@result:'try'( + begin + _pipe = simplifile:create_file(Path), + priv@errors:map_messages( + _pipe, + <<"Created "/utf8, Path/binary>>, + <<"Could not create "/utf8, Path/binary>> + ) + end, + fun(_) -> _pipe@1 = simplifile:write(Path, Content), + priv@errors:map_messages( + _pipe@1, + <<"Wrote "/utf8, Path/binary>>, + <<"Could not write to "/utf8, Path/binary>> + ) end + ) + end. + +-spec main() -> binary(). +main() -> + Day@1 = begin + _pipe = case adglent:start_arguments() of + [Day] -> + {ok, Day}; + + Args -> + {error, + <<"Expected day - found: "/utf8, + (gleam@string:join(Args, <<", "/utf8>>))/binary>>} + end, + _pipe@1 = priv@errors:map_error( + _pipe, + <<"Error when parsing command args"/utf8>> + ), + _pipe@2 = priv@errors:print_error(_pipe@1), + priv@errors:assert_ok(_pipe@2) + end, + Aoc_toml = begin + _pipe@3 = simplifile:read(<<"aoc.toml"/utf8>>), + _pipe@4 = priv@errors:map_error( + _pipe@3, + <<"Could not read aoc.toml"/utf8>> + ), + _pipe@5 = priv@errors:print_error(_pipe@4), + priv@errors:assert_ok(_pipe@5) + end, + Aoc_toml_version = priv@toml:get_int(Aoc_toml, [<<"version"/utf8>>]), + Year = begin + _pipe@6 = priv@toml:get_string(Aoc_toml, [<<"year"/utf8>>]), + _pipe@7 = priv@errors:map_error( + _pipe@6, + <<"Could not read \"year\" from aoc.toml"/utf8>> + ), + _pipe@8 = priv@errors:print_error(_pipe@7), + priv@errors:assert_ok(_pipe@8) + end, + Session = begin + _pipe@9 = priv@toml:get_string(Aoc_toml, [<<"session"/utf8>>]), + _pipe@10 = priv@errors:map_error( + _pipe@9, + <<"Could not read \"session\" from aoc.toml"/utf8>> + ), + _pipe@11 = priv@errors:print_error(_pipe@10), + priv@errors:assert_ok(_pipe@11) + end, + Showtime = case Aoc_toml_version of + {ok, 2} -> + _pipe@12 = priv@toml:get_bool(Aoc_toml, [<<"showtime"/utf8>>]), + _pipe@13 = priv@errors:map_error( + _pipe@12, + <<"Could not read \"showtime\" from aoc.toml"/utf8>> + ), + _pipe@14 = priv@errors:print_error(_pipe@13), + priv@errors:assert_ok(_pipe@14); + + _ -> + _pipe@15 = priv@toml:get_string(Aoc_toml, [<<"showtime"/utf8>>]), + _pipe@16 = gleam@result:map( + _pipe@15, + fun(Bool_string) -> case Bool_string of + <<"True"/utf8>> -> + true; + + _ -> + false + end end + ), + _pipe@17 = priv@errors:map_error( + _pipe@16, + <<"Could not read \"showtime\" from aoc.toml"/utf8>> + ), + _pipe@18 = priv@errors:print_error(_pipe@17), + priv@errors:assert_ok(_pipe@18) + end, + Test_folder = adglent:get_test_folder(Day@1), + Test_file = <<<<<>/binary, Day@1/binary>>/binary, + "_test.gleam"/utf8>>, + _pipe@19 = simplifile:create_directory_all(Test_folder), + _pipe@20 = priv@errors:map_error( + _pipe@19, + <<<<"Could not create folder \""/utf8, Test_folder/binary>>/binary, + "\""/utf8>> + ), + _pipe@21 = priv@errors:print_error(_pipe@20), + priv@errors:assert_ok(_pipe@21), + Testfile_template = case Showtime of + true -> + <<" +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +"/utf8>>; + + false -> + <<" +import gleam/list +import gleeunit/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +"/utf8>> + end, + _pipe@22 = priv@template:render( + Testfile_template, + [{<<"day"/utf8>>, Day@1}] + ), + _pipe@23 = create_file_if_not_present(_pipe@22, Test_file), + _pipe@24 = priv@errors:print_result(_pipe@23), + priv@errors:assert_ok(_pipe@24), + Solutions_folder = <<"src/day"/utf8, Day@1/binary>>, + Solution_file = <>, + _pipe@25 = simplifile:create_directory_all(Solutions_folder), + _pipe@26 = priv@errors:map_error( + _pipe@25, + <<<<"Could not create folder \""/utf8, Solutions_folder/binary>>/binary, + "\""/utf8>> + ), + _pipe@27 = priv@errors:print_error(_pipe@26), + priv@errors:assert_ok(_pipe@27), + _pipe@28 = priv@template:render( + <<" +import adglent.{First, Second} +import gleam/io + +pub fn part1(input: String) { + todo as \"Implement solution to part 1\" +} + +pub fn part2(input: String) { + todo as \"Implement solution to part 2\" +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input(\"{{ day }}\") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} +"/utf8>>, + [{<<"day"/utf8>>, Day@1}] + ), + _pipe@29 = create_file_if_not_present(_pipe@28, Solution_file), + _pipe@30 = priv@errors:print_result(_pipe@29), + priv@errors:assert_ok(_pipe@30), + _pipe@31 = create_file_if_not_present( + <<"input.txt"/utf8>>, + <> + ), + _pipe@32 = priv@errors:print_result(_pipe@31), + priv@errors:assert_ok(_pipe@32), + Input = begin + _pipe@33 = priv@aoc_client:get_input(Year, Day@1, Session), + _pipe@34 = priv@errors:map_error( + _pipe@33, + <<"Error when fetching input"/utf8>> + ), + _pipe@35 = priv@errors:print_error(_pipe@34), + priv@errors:assert_ok(_pipe@35) + end, + _pipe@36 = Input, + _pipe@37 = gleam@string:trim(_pipe@36), + _pipe@38 = create_file_if_not_present( + _pipe@37, + <> + ), + _pipe@39 = priv@errors:print_result(_pipe@38), + priv@errors:assert_ok(_pipe@39). diff --git a/aoc2023/build/packages/adglent/src/adglent@init.erl b/aoc2023/build/packages/adglent/src/adglent@init.erl new file mode 100644 index 0000000..fb28101 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent@init.erl @@ -0,0 +1,142 @@ +-module(adglent@init). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec main() -> {ok, binary()} | {error, binary()}. +main() -> + Year = priv@prompt:value(<<"Year"/utf8>>, <<"2023"/utf8>>, false), + Session = priv@prompt:value(<<"Session Cookie"/utf8>>, <<""/utf8>>, false), + Use_showtime = priv@prompt:confirm(<<"Use showtime"/utf8>>, false), + Aoc_toml_file = <<"aoc.toml"/utf8>>, + Overwrite = case simplifile:create_file(Aoc_toml_file) of + {ok, _} -> + true; + + {error, eexist} -> + priv@prompt:confirm(<<"aoc.toml exits - overwrite"/utf8>>, false); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"Could not create aoc.toml"/utf8>>, + module => <<"adglent/init"/utf8>>, + function => <<"main"/utf8>>, + line => 29}) + end, + _pipe@3 = case Overwrite of + true -> + _pipe@1 = priv@template:render( + <<" +version = {{ version }} +year = \"{{ year }}\" +session = \"{{ session }}\" +showtime = {{ showtime }} +"/utf8>>, + [{<<"version"/utf8>>, <<"2"/utf8>>}, + {<<"year"/utf8>>, Year}, + {<<"session"/utf8>>, Session}, + {<<"showtime"/utf8>>, + begin + _pipe = gleam@bool:to_string(Use_showtime), + gleam@string:lowercase(_pipe) + end}] + ), + _pipe@2 = simplifile:write(Aoc_toml_file, _pipe@1), + priv@errors:map_messages( + _pipe@2, + <<"aoc.toml - written"/utf8>>, + <<"Error when writing aoc.toml"/utf8>> + ); + + false -> + {ok, <<"aoc.toml - skipped"/utf8>>} + end, + priv@errors:print_result(_pipe@3), + Gleam_toml = begin + _pipe@4 = simplifile:read(<<"gleam.toml"/utf8>>), + _pipe@5 = priv@errors:map_error( + _pipe@4, + <<"Could not read gleam.toml"/utf8>> + ), + _pipe@6 = priv@errors:print_error(_pipe@5), + priv@errors:assert_ok(_pipe@6) + end, + Name = begin + _pipe@7 = priv@toml:get_string(Gleam_toml, [<<"name"/utf8>>]), + _pipe@8 = priv@errors:map_error( + _pipe@7, + <<"Could not read \"name\" from gleam.toml"/utf8>> + ), + _pipe@9 = priv@errors:print_error(_pipe@8), + priv@errors:assert_ok(_pipe@9) + end, + Test_main_file = <<<<"test/"/utf8, Name/binary>>/binary, + "_test.gleam"/utf8>>, + _pipe@12 = case Use_showtime of + true -> + _pipe@10 = priv@template:render( + <<" +import showtime + +pub fn main() { + showtime.main() +} +"/utf8>>, + [] + ), + _pipe@11 = simplifile:write(Test_main_file, _pipe@10), + priv@errors:map_messages( + _pipe@11, + <<"Wrote "/utf8, Test_main_file/binary>>, + <<"Could not write to "/utf8, Test_main_file/binary>> + ); + + false -> + {ok, <<"Using existing (gleeunit) "/utf8, Test_main_file/binary>>} + end, + _pipe@13 = priv@errors:print_result(_pipe@12), + priv@errors:assert_ok(_pipe@13), + _pipe@17 = case simplifile:is_file(<<".gitignore"/utf8>>) of + true -> + gleam@result:'try'( + begin + _pipe@14 = simplifile:read(<<".gitignore"/utf8>>), + gleam@result:map_error( + _pipe@14, + fun(Err) -> + <<"Could not read .gitignore: "/utf8, + (gleam@string:inspect(Err))/binary>> + end + ) + end, + fun(Gitignore) -> + Aoc_toml_ignored = begin + _pipe@15 = gleam@string:split(Gitignore, <<"\n"/utf8>>), + gleam@list:find( + _pipe@15, + fun(Line) -> Line =:= <<"aoc.toml"/utf8>> end + ) + end, + case Aoc_toml_ignored of + {error, _} -> + _pipe@16 = simplifile:append( + <<".gitignore"/utf8>>, + <<"\naoc.toml"/utf8>> + ), + priv@errors:map_messages( + _pipe@16, + <<".gitignore written"/utf8>>, + <<"Error when writing .gitignore"/utf8>> + ); + + {ok, _} -> + {ok, + <<".gitignore - skipped (already configured)"/utf8>>} + end + end + ); + + false -> + {error, <<"Could not find .gitignore"/utf8>>} + end, + priv@errors:print_result(_pipe@17). diff --git a/aoc2023/build/packages/adglent/src/adglent_ffi.erl b/aoc2023/build/packages/adglent/src/adglent_ffi.erl new file mode 100644 index 0000000..a6a92e6 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/adglent_ffi.erl @@ -0,0 +1,12 @@ +-module(adglent_ffi). + +-export([get_line/1]). + +-spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. +get_line(Prompt) -> + case io:get_line(Prompt) of + eof -> {error, eof}; + {error, _} -> {error, no_data}; + Data when is_binary(Data) -> {ok, Data}; + Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} + end. diff --git a/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam b/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam new file mode 100644 index 0000000..e18bafa --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam @@ -0,0 +1,37 @@ +import gleam/result.{try} +import gleam/httpc +import gleam/http/request +import gleam/int +import gleam/string + +pub fn get_input( + year: String, + day: String, + session: String, +) -> Result(String, String) { + let url = "https://adventofcode.com/" <> year <> "/day/" <> day <> "/input" + use request <- try( + request.to(url) + |> result.map_error(fn(error) { + "Could not create request for \"" <> url <> "\": " <> string.inspect( + error, + ) + }), + ) + + // Send the HTTP request to the server + use response <- try( + request + |> request.prepend_header("Accept", "application/json") + |> request.prepend_header("Cookie", "session=" <> session <> ";") + |> httpc.send + |> result.map_error(fn(error) { + "Error when requesting \"" <> url <> "\": " <> string.inspect(error) + }), + ) + + case response.status { + status if status >= 200 && status < 300 -> Ok(response.body) + status -> Error(int.to_string(status) <> " - " <> response.body) + } +} diff --git a/aoc2023/build/packages/adglent/src/priv/errors.gleam b/aoc2023/build/packages/adglent/src/priv/errors.gleam new file mode 100644 index 0000000..14c35ca --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/errors.gleam @@ -0,0 +1,54 @@ +import gleam/result +import gleam/string +import gleam/io + +pub fn map_messages( + result: Result(a, b), + success_message: String, + error_message: String, +) -> Result(String, String) { + result + |> result.map_error(fn(error) { + "Error - " <> error_message <> ": " <> string.inspect(error) + }) + |> result.replace(success_message) +} + +pub fn map_error( + result: Result(a, b), + error_message: String, +) -> Result(a, String) { + result + |> result.map_error(fn(error) { + error_message <> ": " <> string.inspect(error) + }) +} + +pub fn print_result(result: Result(String, String)) { + result + |> result.unwrap_both + |> io.println + result +} + +pub fn print_error(result: Result(a, String)) { + result + |> result.map_error(fn(err) { + io.println(err) + err + }) +} + +pub fn assert_ok(result: Result(a, String)) { + let assert Ok(value) = + result + |> result.map_error(fn(err) { + halt(1) + err + }) + value +} + +@target(erlang) +@external(erlang, "erlang", "halt") +fn halt(a: Int) -> Nil diff --git a/aoc2023/build/packages/adglent/src/priv/prompt.gleam b/aoc2023/build/packages/adglent/src/priv/prompt.gleam new file mode 100644 index 0000000..6cee35a --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/prompt.gleam @@ -0,0 +1,38 @@ +import gleam/result +import gleam/string + +pub fn confirm(message: String, auto_accept: Bool) -> Bool { + auto_accept || case + get_line(message <> "? (Y/N): ") + |> result.unwrap("n") + |> string.trim() + { + "Y" | "y" -> True + _ -> False + } +} + +pub fn value(message: String, default: String, auto_accept: Bool) -> String { + case get_value_of_default(message, default, auto_accept) { + "" -> default + value -> value + } +} + +fn get_value_of_default(message: String, default: String, auto_accept: Bool) { + case auto_accept { + True -> default + False -> + get_line(message <> "? (" <> default <> "): ") + |> result.unwrap("") + |> string.trim() + } +} + +pub type GetLineError { + Eof + NoData +} + +@external(erlang, "adglent_ffi", "get_line") +pub fn get_line(prompt prompt: String) -> Result(String, GetLineError) diff --git a/aoc2023/build/packages/adglent/src/priv/template.gleam b/aoc2023/build/packages/adglent/src/priv/template.gleam new file mode 100644 index 0000000..e946888 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/template.gleam @@ -0,0 +1,18 @@ +import gleam/list +import gleam/string + +pub fn render( + template: String, + substitutions: List(#(String, String)), +) -> String { + substitutions + |> list.fold( + template, + fn(template, substitution) { + let #(name, value) = substitution + template + |> string.replace("{{ " <> name <> " }}", value) + }, + ) + |> string.trim <> "\n" +} diff --git a/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam b/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam new file mode 100644 index 0000000..96085c3 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam @@ -0,0 +1,27 @@ +pub const template = " +import adglent.{First, Second} +import gleam/io + +pub fn part1(input: String) { + todo as \"Implement solution to part 1\" +} + +pub fn part2(input: String) { + todo as \"Implement solution to part 2\" +} + +pub fn main() { + let assert Ok(part) = adglent.get_part() + let assert Ok(input) = adglent.get_input(\"{{ day }}\") + case part { + First -> + part1(input) + |> adglent.inspect + |> io.println + Second -> + part2(input) + |> adglent.inspect + |> io.println + } +} +" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam b/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam new file mode 100644 index 0000000..27548d3 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam @@ -0,0 +1,7 @@ +pub const template = " +import showtime + +pub fn main() { + showtime.main() +} +" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam b/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam new file mode 100644 index 0000000..a1d56f6 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam @@ -0,0 +1,41 @@ +pub const template = " +import gleam/list +import gleeunit/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam b/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam new file mode 100644 index 0000000..699feb2 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam @@ -0,0 +1,41 @@ +pub const template = " +import gleam/list +import showtime/tests/should +import adglent.{type Example, Example} +import day{{ day }}/solve + +type Problem1AnswerType = + String + +type Problem2AnswerType = + String + +/// Add examples for part 1 here: +/// ```gleam +///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part1_examples: List(Example(Problem1AnswerType)) = [] + +/// Add examples for part 2 here: +/// ```gleam +///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] +/// ``` +const part2_examples: List(Example(Problem2AnswerType)) = [] + +pub fn part1_test() { + part1_examples + |> should.not_equal([]) + use example <- list.map(part1_examples) + solve.part1(example.input) + |> should.equal(example.answer) +} + +pub fn part2_test() { + part2_examples + |> should.not_equal([]) + use example <- list.map(part2_examples) + solve.part2(example.input) + |> should.equal(example.answer) +} + +" diff --git a/aoc2023/build/packages/adglent/src/priv/toml.gleam b/aoc2023/build/packages/adglent/src/priv/toml.gleam new file mode 100644 index 0000000..7042833 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv/toml.gleam @@ -0,0 +1,52 @@ +import tom +import gleam/result + +pub type TomError { + TomParseError(error: tom.ParseError) + TomGetError(error: tom.GetError) +} + +pub fn get_string( + toml_content: String, + key_path: List(String), +) -> Result(String, TomError) { + use toml <- result.try( + tom.parse(toml_content <> "\n") + |> result.map_error(TomParseError), + ) + use value <- result.try( + tom.get_string(toml, key_path) + |> result.map_error(TomGetError), + ) + Ok(value) +} + +pub fn get_bool( + toml_content: String, + key_path: List(String), +) -> Result(Bool, TomError) { + use toml <- result.try( + tom.parse(toml_content <> "\n") + |> result.map_error(TomParseError), + ) + use value <- result.try( + tom.get_bool(toml, key_path) + |> result.map_error(TomGetError), + ) + Ok(value) +} + +pub fn get_int( + toml_content: String, + key_path: List(String), +) -> Result(Int, TomError) { + use toml <- result.try( + tom.parse(toml_content <> "\n") + |> result.map_error(TomParseError), + ) + use value <- result.try( + tom.get_int(toml, key_path) + |> result.map_error(TomGetError), + ) + Ok(value) +} diff --git a/aoc2023/build/packages/adglent/src/priv@aoc_client.erl b/aoc2023/build/packages/adglent/src/priv@aoc_client.erl new file mode 100644 index 0000000..1acb9b5 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@aoc_client.erl @@ -0,0 +1,61 @@ +-module(priv@aoc_client). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_input/3]). + +-spec get_input(binary(), binary(), binary()) -> {ok, binary()} | + {error, binary()}. +get_input(Year, Day, Session) -> + Url = <<<<<<<<"https://adventofcode.com/"/utf8, Year/binary>>/binary, + "/day/"/utf8>>/binary, + Day/binary>>/binary, + "/input"/utf8>>, + gleam@result:'try'( + begin + _pipe = gleam@http@request:to(Url), + gleam@result:map_error( + _pipe, + fun(Error) -> + <<<<<<"Could not create request for \""/utf8, Url/binary>>/binary, + "\": "/utf8>>/binary, + (gleam@string:inspect(Error))/binary>> + end + ) + end, + fun(Request) -> + gleam@result:'try'( + begin + _pipe@1 = Request, + _pipe@2 = gleam@http@request:prepend_header( + _pipe@1, + <<"Accept"/utf8>>, + <<"application/json"/utf8>> + ), + _pipe@3 = gleam@http@request:prepend_header( + _pipe@2, + <<"Cookie"/utf8>>, + <<<<"session="/utf8, Session/binary>>/binary, ";"/utf8>> + ), + _pipe@4 = gleam@httpc:send(_pipe@3), + gleam@result:map_error( + _pipe@4, + fun(Error@1) -> + <<<<<<"Error when requesting \""/utf8, Url/binary>>/binary, + "\": "/utf8>>/binary, + (gleam@string:inspect(Error@1))/binary>> + end + ) + end, + fun(Response) -> case erlang:element(2, Response) of + Status when (Status >= 200) andalso (Status < 300) -> + {ok, erlang:element(4, Response)}; + + Status@1 -> + {error, + <<<<(gleam@int:to_string(Status@1))/binary, + " - "/utf8>>/binary, + (erlang:element(4, Response))/binary>>} + end end + ) + end + ). diff --git a/aoc2023/build/packages/adglent/src/priv@errors.erl b/aoc2023/build/packages/adglent/src/priv@errors.erl new file mode 100644 index 0000000..978c675 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@errors.erl @@ -0,0 +1,74 @@ +-module(priv@errors). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([map_messages/3, map_error/2, print_result/1, print_error/1, assert_ok/1]). + +-spec map_messages({ok, any()} | {error, any()}, binary(), binary()) -> {ok, + binary()} | + {error, binary()}. +map_messages(Result, Success_message, Error_message) -> + _pipe = Result, + _pipe@1 = gleam@result:map_error( + _pipe, + fun(Error) -> + <<<<<<"Error - "/utf8, Error_message/binary>>/binary, ": "/utf8>>/binary, + (gleam@string:inspect(Error))/binary>> + end + ), + gleam@result:replace(_pipe@1, Success_message). + +-spec map_error({ok, NIB} | {error, any()}, binary()) -> {ok, NIB} | + {error, binary()}. +map_error(Result, Error_message) -> + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Error) -> + <<<>/binary, + (gleam@string:inspect(Error))/binary>> + end + ). + +-spec print_result({ok, binary()} | {error, binary()}) -> {ok, binary()} | + {error, binary()}. +print_result(Result) -> + _pipe = Result, + _pipe@1 = gleam@result:unwrap_both(_pipe), + gleam@io:println(_pipe@1), + Result. + +-spec print_error({ok, NIK} | {error, binary()}) -> {ok, NIK} | + {error, binary()}. +print_error(Result) -> + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Err) -> + gleam@io:println(Err), + Err + end + ). + +-spec assert_ok({ok, NIO} | {error, binary()}) -> NIO. +assert_ok(Result) -> + _assert_subject = begin + _pipe = Result, + gleam@result:map_error( + _pipe, + fun(Err) -> + erlang:halt(1), + Err + end + ) + end, + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"priv/errors"/utf8>>, + function => <<"assert_ok"/utf8>>, + line => 43}) + end, + Value. diff --git a/aoc2023/build/packages/adglent/src/priv@prompt.erl b/aoc2023/build/packages/adglent/src/priv@prompt.erl new file mode 100644 index 0000000..0277f14 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@prompt.erl @@ -0,0 +1,53 @@ +-module(priv@prompt). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_line/1, confirm/2, value/3]). +-export_type([get_line_error/0]). + +-type get_line_error() :: eof | no_data. + +-spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. +get_line(Prompt) -> + adglent_ffi:get_line(Prompt). + +-spec confirm(binary(), boolean()) -> boolean(). +confirm(Message, Auto_accept) -> + Auto_accept orelse case begin + _pipe = adglent_ffi:get_line(<>), + _pipe@1 = gleam@result:unwrap(_pipe, <<"n"/utf8>>), + gleam@string:trim(_pipe@1) + end of + <<"Y"/utf8>> -> + true; + + <<"y"/utf8>> -> + true; + + _ -> + false + end. + +-spec get_value_of_default(binary(), binary(), boolean()) -> binary(). +get_value_of_default(Message, Default, Auto_accept) -> + case Auto_accept of + true -> + Default; + + false -> + _pipe = adglent_ffi:get_line( + <<<<<>/binary, Default/binary>>/binary, + "): "/utf8>> + ), + _pipe@1 = gleam@result:unwrap(_pipe, <<""/utf8>>), + gleam@string:trim(_pipe@1) + end. + +-spec value(binary(), binary(), boolean()) -> binary(). +value(Message, Default, Auto_accept) -> + case get_value_of_default(Message, Default, Auto_accept) of + <<""/utf8>> -> + Default; + + Value -> + Value + end. diff --git a/aoc2023/build/packages/adglent/src/priv@template.erl b/aoc2023/build/packages/adglent/src/priv@template.erl new file mode 100644 index 0000000..6a5d0bf --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@template.erl @@ -0,0 +1,25 @@ +-module(priv@template). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([render/2]). + +-spec render(binary(), list({binary(), binary()})) -> binary(). +render(Template, Substitutions) -> + <<(begin + _pipe = Substitutions, + _pipe@2 = gleam@list:fold( + _pipe, + Template, + fun(Template@1, Substitution) -> + {Name, Value} = Substitution, + _pipe@1 = Template@1, + gleam@string:replace( + _pipe@1, + <<<<"{{ "/utf8, Name/binary>>/binary, " }}"/utf8>>, + Value + ) + end + ), + gleam@string:trim(_pipe@2) + end)/binary, + "\n"/utf8>>. diff --git a/aoc2023/build/packages/adglent/src/priv@templates@solution.erl b/aoc2023/build/packages/adglent/src/priv@templates@solution.erl new file mode 100644 index 0000000..7e36387 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@templates@solution.erl @@ -0,0 +1 @@ +-module(priv@templates@solution). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl b/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl new file mode 100644 index 0000000..ca6b127 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl @@ -0,0 +1 @@ +-module(priv@templates@test_main). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl b/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl new file mode 100644 index 0000000..2f5a41e --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl @@ -0,0 +1 @@ +-module(priv@templates@testfile_gleeunit). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl b/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl new file mode 100644 index 0000000..bbbc8b2 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl @@ -0,0 +1 @@ +-module(priv@templates@testfile_showtime). diff --git a/aoc2023/build/packages/adglent/src/priv@toml.erl b/aoc2023/build/packages/adglent/src/priv@toml.erl new file mode 100644 index 0000000..6c41fbf --- /dev/null +++ b/aoc2023/build/packages/adglent/src/priv@toml.erl @@ -0,0 +1,83 @@ +-module(priv@toml). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_string/2, get_bool/2, get_int/2]). +-export_type([tom_error/0]). + +-type tom_error() :: {tom_parse_error, tom:parse_error()} | + {tom_get_error, tom:get_error()}. + +-spec get_string(binary(), list(binary())) -> {ok, binary()} | + {error, tom_error()}. +get_string(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_string(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). + +-spec get_bool(binary(), list(binary())) -> {ok, boolean()} | + {error, tom_error()}. +get_bool(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_bool(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). + +-spec get_int(binary(), list(binary())) -> {ok, integer()} | + {error, tom_error()}. +get_int(Toml_content, Key_path) -> + gleam@result:'try'( + begin + _pipe = tom:parse(<>), + gleam@result:map_error( + _pipe, + fun(Field@0) -> {tom_parse_error, Field@0} end + ) + end, + fun(Toml) -> + gleam@result:'try'( + begin + _pipe@1 = tom:get_int(Toml, Key_path), + gleam@result:map_error( + _pipe@1, + fun(Field@0) -> {tom_get_error, Field@0} end + ) + end, + fun(Value) -> {ok, Value} end + ) + end + ). diff --git a/aoc2023/build/packages/adglent/src/showtime.erl b/aoc2023/build/packages/adglent/src/showtime.erl new file mode 100644 index 0000000..721bad4 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime.erl @@ -0,0 +1,155 @@ +-module(showtime). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec mk_runner( + fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> OBY), + glint:command_input() +) -> OBY. +mk_runner(Func, Command) -> + _assert_subject = begin + _pipe = erlang:element(3, Command), + _pipe@1 = glint@flag:get_strings(_pipe, <<"modules"/utf8>>), + gleam@result:map(_pipe@1, fun(Modules) -> case Modules of + [] -> + none; + + Modules@1 -> + {some, Modules@1} + end end) + end, + {ok, Module_list} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 91}) + end, + _assert_subject@1 = begin + _pipe@2 = erlang:element(3, Command), + glint@flag:get_strings(_pipe@2, <<"ignore"/utf8>>) + end, + {ok, Ignore_tags} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 100}) + end, + _assert_subject@2 = begin + _pipe@3 = erlang:element(3, Command), + _pipe@4 = glint@flag:get_string(_pipe@3, <<"capture"/utf8>>), + _pipe@5 = gleam@result:map( + _pipe@4, + fun(Arg) -> gleam@string:lowercase(Arg) end + ), + gleam@result:map(_pipe@5, fun(Arg@1) -> case Arg@1 of + <<"no"/utf8>> -> + no; + + <<"yes"/utf8>> -> + yes; + + <<"mixed"/utf8>> -> + mixed + end end) + end, + {ok, Capture_output} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"showtime"/utf8>>, + function => <<"mk_runner"/utf8>>, + line => 104}) + end, + Func(Module_list, Ignore_tags, Capture_output). + +-spec start_with_args( + list(binary()), + fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> any()) +) -> nil. +start_with_args(Args, Func) -> + Modules_flag = begin + _pipe = glint@flag:string_list(), + _pipe@1 = glint@flag:default(_pipe, []), + glint@flag:description( + _pipe@1, + <<"Run only tests in the modules in this list"/utf8>> + ) + end, + Ignore_flag = begin + _pipe@2 = glint@flag:string_list(), + _pipe@3 = glint@flag:default(_pipe@2, []), + glint@flag:description( + _pipe@3, + <<"Ignore tests that are have tags matching a tag in this list"/utf8>> + ) + end, + Capture_flag = begin + _pipe@4 = glint@flag:string(), + _pipe@5 = glint@flag:default(_pipe@4, <<"no"/utf8>>), + _pipe@6 = glint@flag:constraint( + _pipe@5, + glint@flag@constraint:one_of( + [<<"yes"/utf8>>, <<"no"/utf8>>, <<"mixed"/utf8>>] + ) + ), + glint@flag:description( + _pipe@6, + <<"Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report"/utf8>> + ) + end, + _pipe@7 = glint:new(), + _pipe@12 = glint:add( + _pipe@7, + [], + begin + _pipe@8 = glint:command( + fun(_capture) -> mk_runner(Func, _capture) end + ), + _pipe@9 = glint:flag(_pipe@8, <<"modules"/utf8>>, Modules_flag), + _pipe@10 = glint:flag(_pipe@9, <<"ignore"/utf8>>, Ignore_flag), + _pipe@11 = glint:flag(_pipe@10, <<"capture"/utf8>>, Capture_flag), + glint:description(_pipe@11, <<"Runs test"/utf8>>) + end + ), + _pipe@13 = glint:with_pretty_help(_pipe@12, glint:default_pretty_help()), + glint:run(_pipe@13, Args). + +-spec main() -> nil. +main() -> + start_with_args( + gleam@erlang:start_arguments(), + fun(Module_list, Ignore_tags, Capture) -> + Test_event_handler = showtime@internal@erlang@event_handler:start(), + Test_module_handler = showtime@internal@erlang@module_handler:start( + Test_event_handler, + fun showtime@internal@erlang@discover:collect_test_functions/1, + fun showtime@internal@erlang@runner:run_test_suite/4, + Ignore_tags, + Capture + ), + Test_event_handler(start_test_run), + Modules = showtime@internal@erlang@discover:collect_modules( + Test_module_handler, + Module_list + ), + Test_event_handler( + {end_test_run, + begin + _pipe = Modules, + gleam@list:length(_pipe) + end} + ), + nil + end + ). diff --git a/aoc2023/build/packages/adglent/src/showtime.gleam b/aoc2023/build/packages/adglent/src/showtime.gleam new file mode 100644 index 0000000..f0401c9 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime.gleam @@ -0,0 +1,116 @@ +import glint.{type CommandInput, flag} +import glint/flag +import glint/flag/constraint.{one_of} +import gleam/result +import gleam/string +import showtime/internal/common/cli.{Mixed, No, Yes} +@target(erlang) +import gleam/list +@target(erlang) +import gleam/option.{None, Some} +@target(erlang) +import gleam/erlang.{start_arguments} +@target(erlang) +import showtime/internal/common/test_suite.{EndTestRun, StartTestRun} +@target(erlang) +import showtime/internal/erlang/event_handler +@target(erlang) +import showtime/internal/erlang/module_handler +@target(erlang) +import showtime/internal/erlang/runner +@target(erlang) +import showtime/internal/erlang/discover.{ + collect_modules, collect_test_functions, +} + +// @target(javascript) +// import gleam/io + +@target(erlang) +pub fn main() { + use module_list, ignore_tags, capture <- start_with_args(start_arguments()) + // Start event handler which will collect test-results and eventually + // print test report + let test_event_handler = event_handler.start() + // Start module handler which receives msg about modules to test and + // runs the test-suite for the module + let test_module_handler = + module_handler.start( + test_event_handler, + collect_test_functions, + runner.run_test_suite, + ignore_tags, + capture, + ) + + test_event_handler(StartTestRun) + // Collect modules and notify the module handler to start the test-suites + let modules = collect_modules(test_module_handler, module_list) + test_event_handler(EndTestRun( + modules + |> list.length(), + )) + Nil +} + +fn start_with_args(args, func) { + let modules_flag = + flag.string_list() + |> flag.default([]) + |> flag.description("Run only tests in the modules in this list") + + let ignore_flag = + flag.string_list() + |> flag.default([]) + |> flag.description( + "Ignore tests that are have tags matching a tag in this list", + ) + + let capture_flag = + flag.string() + |> flag.default("no") + |> flag.constraint(one_of(["yes", "no", "mixed"])) + |> flag.description( + "Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report", + ) + + glint.new() + |> glint.add( + at: [], + do: glint.command(mk_runner(func, _)) + |> glint.flag("modules", modules_flag) + |> glint.flag("ignore", ignore_flag) + |> glint.flag("capture", capture_flag) + |> glint.description("Runs test"), + ) + |> glint.with_pretty_help(glint.default_pretty_help()) + |> glint.run(args) +} + +fn mk_runner(func, command: CommandInput) { + let assert Ok(module_list) = + command.flags + |> flag.get_strings("modules") + |> result.map(fn(modules) { + case modules { + [] -> None + modules -> Some(modules) + } + }) + let assert Ok(ignore_tags) = + command.flags + |> flag.get_strings("ignore") + + let assert Ok(capture_output) = + command.flags + |> flag.get_string("capture") + |> result.map(fn(arg) { string.lowercase(arg) }) + |> result.map(fn(arg) { + case arg { + "no" -> No + "yes" -> Yes + "mixed" -> Mixed + } + }) + func(module_list, ignore_tags, capture_output) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam new file mode 100644 index 0000000..1c03211 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam @@ -0,0 +1,5 @@ +pub type Capture { + Yes + No + Mixed +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam new file mode 100644 index 0000000..b90af14 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam @@ -0,0 +1,101 @@ +import gleam/map.{type Map} +import showtime/internal/common/test_suite.{ + type TestEvent, type TestRun, CompletedTestRun, EndTest, EndTestRun, + EndTestSuite, OngoingTestRun, StartTest, StartTestRun, StartTestSuite, +} + +pub type TestState { + NotStarted + Running + Finished(num_modules: Int) +} + +pub type HandlerState { + HandlerState( + test_state: TestState, + num_done: Int, + events: Map(String, Map(String, TestRun)), + ) +} + +// This is the common event-handler (shared between erlang/JS targets) +// The main strategy is to collect the test-results in a map of maps: +// module_name -> +// test_name -> test_result +// It will also keep track of if it is running (i.e. did it receive the EndTestRun) +// so that the caller can determine when to print test-results +pub fn handle_event( + msg: TestEvent, + system_time: fn() -> Int, + state: HandlerState, +) { + let test_state = state.test_state + let num_done = state.num_done + let events = state.events + let #(updated_test_state, updated_num_done, updated_events) = case msg { + StartTestRun -> #(Running, num_done, events) + StartTestSuite(module) -> { + let maybe_module_events = map.get(events, module.name) + let new_events = case maybe_module_events { + Ok(_) -> events + Error(_) -> + events + |> map.insert(module.name, map.new()) + } + #(test_state, num_done, new_events) + } + StartTest(module, test) -> { + let current_time = system_time() + let maybe_module_events = map.get(events, module.name) + let new_events = case maybe_module_events { + Ok(module_events) -> { + let maybe_test_event = map.get(module_events, test.name) + case maybe_test_event { + Error(_) -> + events + |> map.insert( + module.name, + module_events + |> map.insert(test.name, OngoingTestRun(test, current_time)), + ) + Ok(_) -> events + } + } + Error(_) -> events + } + #(test_state, num_done, new_events) + } + EndTest(module, test, result) -> { + let current_time = system_time() + let maybe_module_events = map.get(events, module.name) + let new_events = case maybe_module_events { + Ok(module_events) -> { + let maybe_test_run = + module_events + |> map.get(test.name) + let updated_module_events = case maybe_test_run { + Ok(OngoingTestRun(test_function, started_at)) -> + module_events + |> map.insert( + test.name, + CompletedTestRun( + test_function, + current_time - started_at, + result, + ), + ) + Error(_) -> module_events + } + events + |> map.insert(module.name, updated_module_events) + } + Error(_) -> events + } + #(test_state, num_done, new_events) + } + EndTestSuite(_) -> #(test_state, num_done + 1, events) + EndTestRun(num_modules) -> #(Finished(num_modules), num_done, events) + _ -> #(Running, num_done, events) + } + HandlerState(updated_test_state, updated_num_done, updated_events) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam new file mode 100644 index 0000000..a1d6bd9 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam @@ -0,0 +1,119 @@ +import gleam/dynamic.{type Dynamic} +import gleam/map.{type Map} + +// These are all the types used for test-results +// NOTE: These are heavily used in the erlang/js ffi:s +// so any changes here are likely to break the ffi:s unless +// the corresponding change is introduced there +// +// Futhermore this has some erlang related names that should +// probably be cleaned up, but it is used by both the ffi:s + +// Currently only one reason, but could be possible to support +// more reasons in the future +pub type IgnoreReason { + Ignore +} + +// This is the return value from running the test-function +// or ignored if the test was ignored +pub type TestReturn { + TestFunctionReturn(value: Dynamic, output_buffer: List(String)) + Ignored(reason: IgnoreReason) +} + +// All data about an exception in the test function is captured +// in this type. +// This is also where the data about the assertions will end up (in reason) +pub type Exception { + ErlangException( + class: Class, + reason: Reason, + stacktrace: TraceList, + output_buffer: List(String), + ) +} + +// Alias for the test-result which is either a TestResult (passed test, ignored or a test-definition) +// or an Exception (failed test) +pub type TestResult = + Result(TestReturn, Exception) + +// Reason is either an assert equal (which is if the error was produced by gleeunit should) +// TODO: Add other asserts +// or it is a gleam error meaning that is was produced by showtime should +// TODO: Rename GleamError to ShowtimeError +pub type Reason { + AssertEqual(details: List(ReasonDetail)) + AssertNotEqual(details: List(ReasonDetail)) + AssertMatch(details: List(ReasonDetail)) + GleamError(details: GleamErrorDetail) + GleamAssert(value: Dynamic, line_no: Int) + GenericException(value: Dynamic) +} + +// ReasonDetail is the union-type used in erlang-exceptions where the reason +// is a list of such details +pub type ReasonDetail { + Module(name: String) + ReasonLine(line_no: Int) + Expression(expression: String) + Expected(value: Dynamic) + Value(value: Dynamic) + Pattern(pattern: String) +} + +// Gleam error detail is produced by showtime should and will hold all the information +// about the assertion (both expected and got) +pub type GleamErrorDetail { + LetAssert( + module: String, + function: String, + line_no: Int, + message: String, + value: Dynamic, + ) +} + +// Class is a part of standard erlang exceptions, but also used on js-side +// TODO: Extend to include a JS specific constructor +pub type Class { + ErlangError + Exit + Throw +} + +// The trace list is part of the standard erlang exception, but is also +// emulated on js-side. +// TODO: Maybe we need a js-version that contain some js-specific trace-elements +pub type TraceList { + TraceList(traces: List(Trace)) +} + +// Trace are the elements in the trace list in an erlang exception +// TODO: Maybe add a js-specific trace (since arity is not really a js attribute) +pub type Trace { + Trace(function: String, arity: Arity, extra_info: List(ExtraInfo)) + TraceModule( + module: String, + function: String, + arity: Arity, + extra_info: List(ExtraInfo), + ) +} + +// Extra info holds information about the file and line +// as well as some dynamic data in a map +// This is currently not used in the reporter +pub type ExtraInfo { + ErrorInfo(error_info: Map(Dynamic, Dynamic)) + File(filename: String) + Line(line_no: Int) +} + +// Arity is the erlang type for arity +// Can be either a number, or a list of arguments +pub type Arity { + Num(arity: Int) + ArgList(arg_list: List(Dynamic)) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam new file mode 100644 index 0000000..eb58d64 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam @@ -0,0 +1,63 @@ +import gleam/option.{type Option} +import showtime/internal/common/test_result.{type TestResult} +import showtime/internal/common/cli.{type Capture} + +// The state (and result) of a test function +pub type TestRun { + OngoingTestRun(test_function: TestFunction, started_at: Int) + CompletedTestRun( + test_function: TestFunction, + total_time: Int, + result: TestResult, + ) +} + +// A test module (found by discovery) +pub type TestModule { + TestModule(name: String, path: Option(String)) +} + +// A test function +pub type TestFunction { + TestFunction(name: String) +} + +// A test suite is a test module together with the test functions +// that were collected from that module +pub type TestSuite { + TestSuite(module: TestModule, tests: List(TestFunction)) +} + +// Test event for the event handler +pub type TestEvent { + StartTestRun + StartTestSuite(test_module: TestModule) + StartTest(test_module: TestModule, test_function: TestFunction) + EndTest( + test_module: TestModule, + test_function: TestFunction, + result: TestResult, + ) + EndTestSuite(test_module: TestModule) + EndTestRun(num_modules: Int) +} + +// Interface for the module handler +pub type TestModuleHandler = + fn(TestModule) -> Nil + +// Interface for the event handler +pub type TestEventHandler = + fn(TestEvent) -> Nil + +// Interface for the module collector +pub type ModuleCollector = + fn(TestModuleHandler) -> List(TestModule) + +// Interface for the function collector +pub type TestFunctionCollector = + fn(TestModule) -> TestSuite + +// Interface for the test runner +pub type TestRunner = + fn(TestSuite, TestEventHandler, List(String), Capture) -> Nil diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam new file mode 100644 index 0000000..ecb752d --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam @@ -0,0 +1,167 @@ +@target(erlang) +import gleam/io +@target(erlang) +import gleam/dynamic.{type Dynamic} +@target(erlang) +import gleam/list +@target(erlang) +import gleam/string +@target(erlang) +import gleam/int +@target(erlang) +import gleam/option.{type Option, None, Some} +@target(erlang) +import gleam/erlang/atom.{type Atom} +@target(erlang) +import showtime/internal/common/test_suite.{ + type TestModule, type TestModuleHandler, type TestSuite, TestFunction, + TestModule, TestSuite, +} +import simplifile + +// Module collector for erlang +// Will search the test folder for files ending with _test and notify +// the module handler about each module it finds +@target(erlang) +pub fn collect_modules( + test_module_handler: TestModuleHandler, + only_modules: Option(List(String)), +) -> List(TestModule) { + collect_modules_in_folder("./test", test_module_handler, only_modules) +} + +@target(erlang) +fn collect_modules_in_folder( + path: String, + test_module_handler: TestModuleHandler, + only_modules: Option(List(String)), +) { + let module_prefix = get_module_prefix(path) + let assert Ok(files) = simplifile.read_directory(path) + let test_modules_in_folder = + files + |> list.filter(string.ends_with(_, "_test.gleam")) + |> list.filter_map(fn(test_module_file) { + let module_name = + module_prefix <> { + test_module_file + |> string.replace(".gleam", "") + } + case only_modules { + Some(only_modules_list) -> { + let module_in_list = + only_modules_list + |> list.any(fn(only_module_name) { + only_module_name == module_name + |> string.replace("@", "/") + }) + case module_in_list { + True -> { + let test_module = TestModule(module_name, Some(test_module_file)) + test_module_handler(test_module) + Ok(test_module) + } + + False -> Error(Nil) + } + } + None -> { + let test_module = TestModule(module_name, Some(test_module_file)) + test_module_handler(test_module) + Ok(test_module) + } + } + }) + let test_modules_in_subfolders = + files + |> list.map(fn(filename) { path <> "/" <> filename }) + |> list.filter(fn(file) { simplifile.is_directory(file) }) + |> list.fold( + [], + fn(modules, subfolder) { + modules + |> list.append(collect_modules_in_folder( + subfolder, + test_module_handler, + only_modules, + )) + }, + ) + test_modules_in_folder + |> list.append(test_modules_in_subfolders) +} + +@target(erlang) +fn get_module_prefix(path) { + let path_without_test = + path + |> string.replace("./test", "") + + let path_without_leading_slash = case + string.starts_with(path_without_test, "/") + { + True -> string.drop_left(path_without_test, 1) + False -> path_without_test + } + let module_prefix = + path_without_leading_slash + |> string.replace("/", "@") + case string.length(module_prefix) { + 0 -> module_prefix + _ -> module_prefix <> "@" + } +} + +// Test function collector for erlang +// Uses erlang `apply` to run `module_info` for the test module +// and collects all the exports ending with _test into a `TestSuite` +@target(erlang) +pub fn collect_test_functions(module: TestModule) -> TestSuite { + let test_functions: List(#(Atom, Int)) = + apply( + atom.create_from_string(module.name), + atom.create_from_string("module_info"), + [dynamic.from(atom.create_from_string("exports"))], + ) + |> dynamic.unsafe_coerce() + + let test_functions_filtered = + test_functions + |> list.map(fn(entry) { + let assert #(name, arity) = entry + #( + name + |> atom.to_string(), + arity, + ) + }) + |> list.filter_map(fn(entry) { + let assert #(name, arity) = entry + case string.ends_with(name, "_test") { + True -> + case arity { + 0 -> Ok(name) + _ -> { + io.println( + "WARNING: function \"" <> name <> "\" has arity: " <> int.to_string( + arity, + ) <> " - cannot be used as test (needs to be 0)", + ) + Error("Wrong arity") + } + } + False -> Error("Non matching name") + } + }) + |> list.filter(string.ends_with(_, "_test")) + |> list.map(fn(function_name) { TestFunction(function_name) }) + TestSuite(module, test_functions_filtered) +} + +@target(erlang) +@external(erlang, "erlang", "apply") +fn apply( + module module: Atom, + function function: Atom, + args args: List(Dynamic), +) -> Dynamic diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam new file mode 100644 index 0000000..62a9caf --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam @@ -0,0 +1,91 @@ +@target(erlang) +import gleam/io +@target(erlang) +import gleam/otp/actor.{Continue, Stop} +@target(erlang) +import gleam/erlang/process.{type Subject, Normal} +@target(erlang) +import gleam/map +@target(erlang) +import showtime/internal/common/test_suite.{type TestEvent, EndTestRun} +@target(erlang) +import showtime/internal/common/common_event_handler.{ + Finished, HandlerState, NotStarted, handle_event, +} +@target(erlang) +import showtime/internal/reports/formatter.{create_test_report} +@target(erlang) +import gleam/erlang.{Millisecond} +@target(erlang) +import gleam/option.{None} + +@target(erlang) +type EventHandlerMessage { + EventHandlerMessage(test_event: TestEvent, reply_to: Subject(Int)) +} + +// Starts an actor that receives test events and forwards the to the event handler +// When handler updates the state to `Finished` the actor will wait until handler +// reports that all modules are done and the stop +@target(erlang) +pub fn start() { + let assert Ok(subject) = + actor.start( + #(NotStarted, 0, map.new()), + fn(msg: EventHandlerMessage, state) { + let EventHandlerMessage(test_event, reply_to) = msg + let #(test_state, num_done, events) = state + let updated_state = + handle_event( + test_event, + system_time, + HandlerState(test_state, num_done, events), + ) + case updated_state { + HandlerState(Finished(num_modules), num_done, events) if num_done == num_modules -> { + let #(test_report, num_failed) = create_test_report(events) + io.println(test_report) + process.send(reply_to, num_failed) + Stop(Normal) + } + HandlerState(test_state, num_done, events) -> + Continue(#(test_state, num_done, events), None) + } + }, + ) + let parent_subject = process.new_subject() + + let selector = + process.new_selector() + |> process.selecting(parent_subject, fn(x) { x }) + + // Returns a callback that can receive test events + fn(test_event: TestEvent) { + case test_event { + EndTestRun(..) -> { + // When EndTestRun has been received the callback will wait until the + // actor has stopped + // TODO: Use a timeout? + process.send(subject, EventHandlerMessage(test_event, parent_subject)) + let num_failed = process.select_forever(selector) + case num_failed > 0 { + True -> halt(1) + False -> halt(0) + } + } + + // Normally just send the test event to the actor + _ -> + process.send(subject, EventHandlerMessage(test_event, parent_subject)) + } + } +} + +@target(erlang) +@external(erlang, "erlang", "halt") +fn halt(a: Int) -> Nil + +@target(erlang) +fn system_time() { + erlang.system_time(Millisecond) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam new file mode 100644 index 0000000..88cc251 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam @@ -0,0 +1,43 @@ +@target(erlang) +import gleam/otp/actor.{Continue} +@target(erlang) +import gleam/erlang/process +@target(erlang) +import showtime/internal/common/test_suite.{ + type TestEventHandler, type TestFunctionCollector, type TestModule, + type TestRunner, EndTestSuite, StartTestSuite, +} +@target(erlang) +import showtime/internal/common/cli.{type Capture} +@target(erlang) +import gleam/option.{None} + +@target(erlang) +pub fn start( + test_event_handler: TestEventHandler, + test_function_collector: TestFunctionCollector, + run_test_suite: TestRunner, + ignore_tags: List(String), + capture: Capture, +) { + let assert Ok(subject) = + actor.start( + Nil, + fn(module: TestModule, state) { + process.start( + fn() { + let test_suite = test_function_collector(module) + test_event_handler(StartTestSuite(module)) + run_test_suite(test_suite, test_event_handler, ignore_tags, capture) + test_event_handler(EndTestSuite(module)) + }, + False, + ) + Continue(state, None) + }, + ) + fn(test_module: TestModule) { + process.send(subject, test_module) + Nil + } +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam new file mode 100644 index 0000000..ebbf426 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam @@ -0,0 +1,59 @@ +@target(erlang) +import gleam/list +@target(erlang) +import gleam/erlang/atom.{type Atom} +@target(erlang) +import showtime/internal/common/test_suite.{ + type TestEventHandler, type TestSuite, EndTest, StartTest, +} +@target(erlang) +import showtime/internal/common/test_result.{type TestResult} +@target(erlang) +import showtime/internal/common/cli.{type Capture} + +// Runs all tests in a test suite +@target(erlang) +pub fn run_test_suite( + test_suite: TestSuite, + test_event_handler: TestEventHandler, + ignore_tags: List(String), + capture: Capture, +) { + test_suite.tests + |> list.each(fn(test) { + test_event_handler(StartTest(test_suite.module, test)) + let result = + run_test(test_suite.module.name, test.name, ignore_tags, capture) + test_event_handler(EndTest(test_suite.module, test, result)) + }) +} + +// Wrapper around the ffi function that converts names to atoms +@target(erlang) +pub fn run_test( + module_name: String, + test_name: String, + ignore_tags: List(String), + capture: Capture, +) -> TestResult { + let result = + run_test_ffi( + atom.create_from_string(module_name), + atom.create_from_string(test_name), + ignore_tags, + capture, + ) + result +} + +// Calls ffi for running a test function +// The ffi will take care of mapping the result and exception to the data-types +// used in gleam +@target(erlang) +@external(erlang, "showtime_ffi", "run_test") +fn run_test_ffi( + module module: Atom, + function function: Atom, + ignore_tags ignore_tags: List(String), + capture capture: Capture, +) -> TestResult diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam new file mode 100644 index 0000000..5ccddee --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam @@ -0,0 +1,42 @@ +import gleam/dynamic.{type Dynamic} +import gleam/string +import showtime/internal/reports/styles.{expected_highlight, got_highlight} +import gap.{compare_lists, compare_strings} +import gap/styling.{from_comparison, highlight, to_styled_comparison} + +pub fn compare(expected: Dynamic, got: Dynamic) -> #(String, String) { + let expected_as_list = + expected + |> dynamic.list(dynamic.dynamic) + let got_as_list = + got + |> dynamic.list(dynamic.dynamic) + let expected_as_string = + expected + |> dynamic.string() + let got_as_string = + got + |> dynamic.string() + case expected_as_list, got_as_list, expected_as_string, got_as_string { + Ok(expected_list), Ok(got_list), _, _ -> { + let comparison = + compare_lists(expected_list, got_list) + |> from_comparison() + |> highlight(expected_highlight, got_highlight, fn(item) { item }) + |> to_styled_comparison() + #(comparison.first, comparison.second) + } + _, _, Ok(expected_string), Ok(got_string) -> { + let comparison = + compare_strings(expected_string, got_string) + |> from_comparison() + |> highlight(expected_highlight, got_highlight, fn(item) { item }) + |> to_styled_comparison() + #(comparison.first, comparison.second) + } + _, _, _, _ -> #( + expected_highlight(string.inspect(expected)), + got_highlight(string.inspect(got)), + ) + } +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam new file mode 100644 index 0000000..8c1a6ac --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam @@ -0,0 +1,480 @@ +import gleam/io +import gleam/int +import gleam/list +import gleam/string +import gleam/option.{type Option, None, Some} +import gleam/map.{type Map} +import gleam/dynamic.{type Dynamic} +import showtime/internal/common/test_result.{ + type GleamErrorDetail, type ReasonDetail, type Trace, AssertEqual, AssertMatch, + AssertNotEqual, Expected, Expression, GenericException, GleamAssert, + GleamError, Ignored, LetAssert, Pattern, Trace, TraceModule, Value, +} +import showtime/internal/common/test_suite.{type TestRun, CompletedTestRun} +import showtime/tests/should.{type Assertion, Eq, Fail, IsError, IsOk, NotEq} +import showtime/internal/reports/styles.{ + error_style, expected_highlight, failed_style, function_style, got_highlight, + heading_style, ignored_style, not_style, passed_style, stacktrace_style, +} +import showtime/internal/reports/compare.{compare} +import showtime/internal/reports/table.{ + AlignLeft, AlignLeftOverflow, AlignRight, Content, Separator, StyledContent, + Table, align_table, to_string, +} +import showtime/tests/meta.{type Meta} + +type GleeUnitAssertionType { + GleeUnitAssertEqual(message: String) + GleeUnitAssertNotEqual(message: String) + GleeUnitAssertMatch(message: String) +} + +type ModuleAndTest { + ModuleAndTestRun(module_name: String, test_run: TestRun) +} + +type UnifiedError { + UnifiedError( + meta: Option(Meta), + reason: String, + message: String, + expected: String, + got: String, + line: Option(Int), + stacktrace: List(Trace), + ) +} + +pub fn create_test_report(test_results: Map(String, Map(String, TestRun))) { + let all_test_runs = + test_results + |> map.values() + |> list.flat_map(map.values) + let failed_test_runs = + test_results + |> map.to_list() + |> list.flat_map(fn(entry) { + let #(module_name, test_module_results) = entry + test_module_results + |> map.values() + |> list.filter_map(fn(test_run) { + case test_run { + CompletedTestRun(_test_function, _, result) -> + case result { + Error(_) -> Ok(ModuleAndTestRun(module_name, test_run)) + Ok(Ignored(_)) -> Error(Nil) + Ok(_) -> Error(Nil) + } + _ -> { + test_run + |> io.debug() + Error(Nil) + } + } + }) + }) + + let ignored_test_runs = + test_results + |> map.to_list() + |> list.flat_map(fn(entry) { + let #(module_name, test_module_results) = entry + test_module_results + |> map.values() + |> list.filter_map(fn(test_run) { + case test_run { + CompletedTestRun(test_function, _, result) -> + case result { + Ok(Ignored(reason)) -> + Ok(#(module_name <> "." <> test_function.name, reason)) + _ -> Error(Nil) + } + _ -> Error(Nil) + } + }) + }) + + let failed_tests_report = + failed_test_runs + |> list.filter_map(fn(module_and_test_run) { + case module_and_test_run.test_run { + CompletedTestRun(test_function, _total_time, result) -> + case result { + Error(exception) -> + case exception.reason { + AssertEqual(reason_details) -> + Ok(format_reason( + erlang_error_to_unified( + reason_details, + GleeUnitAssertEqual("Assert equal"), + exception.stacktrace.traces, + ), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + AssertNotEqual(reason_details) -> + Ok(format_reason( + erlang_error_to_unified( + reason_details, + GleeUnitAssertNotEqual("Assert not equal"), + exception.stacktrace.traces, + ), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + AssertMatch(reason_details) -> + Ok(format_reason( + erlang_error_to_unified( + reason_details, + GleeUnitAssertMatch("Assert match"), + exception.stacktrace.traces, + ), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + GleamError(reason) -> + Ok(format_reason( + gleam_error_to_unified(reason, exception.stacktrace.traces), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + // GleamAssert(value) -> Error(Nil) + GleamAssert(value, line_no) -> + Ok(format_reason( + UnifiedError( + None, + "gleam assert", + "Assert failed", + "Patterns should match", + error_style(string.inspect(value)), + Some(line_no), + exception.stacktrace.traces, + ), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + GenericException(value) -> + Ok(format_reason( + UnifiedError( + None, + "generic exception", + "Test function threw an exception", + "Exception in test function", + error_style(string.inspect(value)), + None, + exception.stacktrace.traces, + ), + module_and_test_run.module_name, + test_function.name, + exception.output_buffer, + )) + other -> { + io.println("Other: " <> string.inspect(other)) + panic + Error(Nil) + } + } + _ -> Error(Nil) + } + _ -> Error(Nil) + } + }) + |> list.fold([], fn(rows, test_rows) { list.append(rows, test_rows) }) + + let all_test_execution_time_reports = + all_test_runs + |> list.filter_map(fn(test_run) { + case test_run { + CompletedTestRun(test_function, total_time, _) -> + Ok(test_function.name <> ": " <> int.to_string(total_time) <> " ms") + _ -> Error(Nil) + } + }) + let _execution_times_report = + all_test_execution_time_reports + |> string.join("\n") + + let all_tests_count = + all_test_runs + |> list.length() + let ignored_tests_count = + ignored_test_runs + |> list.length() + let failed_tests_count = + failed_test_runs + |> list.length() + + let passed = + passed_style( + int.to_string(all_tests_count - failed_tests_count - ignored_tests_count) <> " passed", + ) + let failed = failed_style(int.to_string(failed_tests_count) <> " failed") + let ignored = case ignored_tests_count { + 0 -> "" + _ -> ", " <> ignored_style(int.to_string(ignored_tests_count) <> " ignored") + } + + let failed_tests_table = + Table(None, failed_tests_report) + |> align_table() + |> to_string() + + let test_report = + "\n" <> failed_tests_table <> "\n" <> passed <> ", " <> failed <> ignored + #(test_report, failed_tests_count) +} + +fn erlang_error_to_unified( + error_details: List(ReasonDetail), + assertion_type: GleeUnitAssertionType, + stacktrace: List(Trace), +) { + error_details + |> list.fold( + UnifiedError( + None, + "not_set", + assertion_type.message, + "", + "", + None, + stacktrace, + ), + fn(unified, reason) { + case reason { + Expression(expression) -> UnifiedError(..unified, reason: expression) + Expected(value) -> + case assertion_type { + GleeUnitAssertEqual(_messaged) -> + UnifiedError( + ..unified, + expected: expected_highlight(string.inspect(value)), + ) + _ -> unified + } + Value(value) -> + case assertion_type { + GleeUnitAssertNotEqual(_message) -> + UnifiedError( + ..unified, + expected: not_style("not ") <> string.inspect(value), + got: got_highlight(string.inspect(value)), + ) + _ -> + UnifiedError(..unified, got: got_highlight(string.inspect(value))) + } + Pattern(pattern) -> + case pattern { + "{ ok , _ }" -> + UnifiedError(..unified, expected: expected_highlight("Ok(_)")) + "{ error , _ }" -> + UnifiedError(..unified, expected: expected_highlight("Error(_)")) + _ -> unified + } + _ -> unified + } + }, + ) +} + +fn gleam_error_to_unified( + gleam_error: GleamErrorDetail, + stacktrace: List(Trace), +) -> UnifiedError { + case gleam_error { + LetAssert(_module, _function, _line_no, _message, value) -> { + let result: Result(Dynamic, Assertion(Dynamic, Dynamic)) = + dynamic.unsafe_coerce(value) + let assert Error(assertion) = result + case assertion { + Eq(got, expected, meta) -> { + let #(expected, got) = compare(expected, got) + UnifiedError( + meta, + "assert", + "Assert equal", + expected, + got, + None, + stacktrace, + ) + } + NotEq(got, expected, meta) -> + UnifiedError( + meta, + "assert", + "Assert not equal", + not_style("not ") <> string.inspect(expected), + string.inspect(got), + None, + stacktrace, + ) + IsOk(got, meta) -> + UnifiedError( + meta, + "assert", + "Assert is Ok", + expected_highlight("Ok(_)"), + got_highlight(string.inspect(got)), + None, + stacktrace, + ) + IsError(got, meta) -> + UnifiedError( + meta, + "assert", + "Assert is Ok", + expected_highlight("Error(_)"), + got_highlight(string.inspect(got)), + None, + stacktrace, + ) + Fail(meta) -> + UnifiedError( + meta, + "assert", + "Assert is Ok", + got_highlight("should.fail()"), + got_highlight("N/A - test always expected to fail"), + None, + stacktrace, + ) + } + } + } +} + +fn format_reason( + error: UnifiedError, + module: String, + function: String, + output_buffer: List(String), +) { + let meta = case error.meta { + Some(meta) -> + Some([ + AlignRight(StyledContent(heading_style("Description")), 2), + Separator(": "), + AlignLeft(Content(meta.description), 0), + ]) + + None -> None + } + + let stacktrace = + error.stacktrace + |> list.map(fn(trace) { + case trace { + Trace(function, _, _) if function == "" -> "(anonymous)" + TraceModule(module, function, _, _) if function == "" -> + module <> "." <> "(anonymous)" + Trace(function, _, _) -> function + TraceModule(module, function, _, _) -> module <> "." <> function + } + }) + let stacktrace_rows = case stacktrace { + [] -> [] + [first, ..rest] -> { + let first_row = + Some([ + AlignRight(StyledContent(heading_style("Stacktrace")), 2), + Separator(": "), + AlignLeft(StyledContent(stacktrace_style(first)), 0), + ]) + let rest_rows = + rest + |> list.map(fn(row) { + Some([ + AlignRight(Content(""), 2), + Separator(" "), + AlignLeft(StyledContent(stacktrace_style(row)), 0), + ]) + }) + [first_row, ..rest_rows] + } + } + + let output_rows = case + output_buffer + |> list.reverse() + |> list.map(fn(row) { string.trim_right(row) }) + { + [] -> [] + [first, ..rest] -> { + let first_row = + Some([ + AlignRight(StyledContent(heading_style("Output")), 2), + Separator(": "), + AlignLeftOverflow(StyledContent(stacktrace_style(first)), 0), + ]) + let rest_rows = + rest + |> list.map(fn(row) { + Some([ + AlignRight(Content(""), 2), + Separator(" "), + AlignLeftOverflow(StyledContent(stacktrace_style(row)), 0), + ]) + }) + [first_row, ..rest_rows] + } + } + + let line = + error.line + |> option.map(fn(line) { ":" <> int.to_string(line) }) + |> option.unwrap("") + + let arrow = + string.join( + list.repeat( + "-", + string.length(module) + 1 + { + string.length(function) + string.length(line) + } / 2, + ), + "", + ) <> "⌄" + let standard_table_rows = [ + Some([ + AlignRight(StyledContent(error_style("Failed")), 2), + Separator(": "), + AlignLeft(Content(arrow), 0), + ]), + Some([ + AlignRight(StyledContent(heading_style("Test")), 2), + Separator(": "), + AlignLeft( + StyledContent(module <> "." <> function_style(function <> line)), + 0, + ), + ]), + meta, + Some([ + AlignRight(StyledContent(heading_style("Expected")), 2), + Separator(": "), + AlignLeftOverflow(StyledContent(error.expected), 0), + ]), + Some([ + AlignRight(StyledContent(heading_style("Got")), 2), + Separator(": "), + AlignLeftOverflow(StyledContent(error.got), 0), + ]), + ] + standard_table_rows + |> list.append(stacktrace_rows) + |> list.append(output_rows) + |> list.append([ + Some([ + AlignRight(Content(""), 0), + AlignRight(Content(""), 0), + AlignRight(Content(""), 0), + ]), + ]) + |> list.filter_map(fn(row) { option.to_result(row, Nil) }) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam new file mode 100644 index 0000000..b051dd3 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam @@ -0,0 +1,84 @@ +import gleam_community/ansi +import gleam/list +import gleam/string +import gleam/bit_array + +pub fn passed_style(text) { + bold_green(text) +} + +pub fn failed_style(text) { + bold_red(text) +} + +pub fn ignored_style(text) { + bold_yellow(text) +} + +pub fn error_style(text) { + bold_red(text) +} + +pub fn expected_highlight(text) { + bold_green(text) +} + +pub fn got_highlight(text) { + bold_red(text) +} + +pub fn not_style(text) { + ansi.bold(text) +} + +pub fn module_style(text: String) { + ansi.cyan(text) +} + +pub fn heading_style(text: String) { + ansi.cyan(text) +} + +pub fn function_style(text: String) { + bold_cyan(text) +} + +pub fn stacktrace_style(text: String) { + text +} + +fn bold_red(text: String) { + ansi.bold(ansi.red(text)) +} + +fn bold_green(text) { + ansi.bold(ansi.green(text)) +} + +fn bold_yellow(text) { + ansi.bold(ansi.yellow(text)) +} + +fn bold_cyan(text) { + ansi.bold(ansi.cyan(text)) +} + +pub fn strip_style(text) { + let #(new_text, _) = + text + |> string.to_graphemes() + |> list.fold( + #("", False), + fn(acc, char) { + let #(str, removing) = acc + let bit_char = bit_array.from_string(char) + case bit_char, removing { + <<0x1b>>, _ -> #(str, True) + <<0x6d>>, True -> #(str, False) + _, True -> #(str, True) + _, False -> #(str <> char, False) + } + }, + ) + new_text +} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam new file mode 100644 index 0000000..f8bc00c --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam @@ -0,0 +1,148 @@ +import gleam/list +import gleam/string +import gleam/int +import gleam/option.{type Option} +import showtime/internal/reports/styles.{strip_style} + +pub type Content { + Content(unstyled_text: String) + StyledContent(styled_text: String) +} + +pub type Col { + AlignRight(content: Content, margin: Int) + AlignLeft(content: Content, margin: Int) + AlignRightOverflow(content: Content, margin: Int) + AlignLeftOverflow(content: Content, margin: Int) + Separator(char: String) + Aligned(content: String) +} + +pub type Table { + Table(header: Option(String), rows: List(List(Col))) +} + +pub fn to_string(table: Table) -> String { + let rows = + table.rows + |> list.map(fn(row) { + row + |> list.filter_map(fn(col) { + case col { + Separator(char) -> Ok(char) + Aligned(content) -> Ok(content) + _ -> Error(Nil) + } + }) + |> string.join("") + }) + |> string.join("\n") + let header = + table.header + |> option.map(fn(header) { header <> "\n" }) + |> option.unwrap("") + header <> rows +} + +pub fn align_table(table: Table) -> Table { + let cols = + table.rows + |> list.transpose() + let col_width = + cols + |> list.map(fn(col) { + col + |> list.map(fn(content) { + case content { + AlignRight(Content(unstyled), _) -> unstyled + AlignRight(StyledContent(styled), _) -> strip_style(styled) + AlignLeft(Content(unstyled), _) -> unstyled + AlignLeft(StyledContent(styled), _) -> strip_style(styled) + AlignLeftOverflow(_, _) -> "" + AlignRightOverflow(_, _) -> "" + Separator(char) -> char + Aligned(content) -> content + } + }) + |> list.fold(0, fn(max, str) { int.max(max, string.length(str)) }) + }) + let aligned_col = + cols + |> list.zip(col_width) + |> list.map(fn(col_and_width) { + let #(col, width) = col_and_width + col + |> list.map(fn(content) { + case content { + AlignRight(Content(unstyled), margin) -> + Aligned(pad_left( + unstyled, + width + margin - string.length(unstyled), + " ", + )) + AlignRight(StyledContent(styled), margin) -> + Aligned(pad_left( + styled, + width + margin - string.length(strip_style(styled)), + " ", + )) + AlignRightOverflow(Content(unstyled), margin) -> + Aligned(pad_left( + unstyled, + width + margin - string.length(unstyled), + " ", + )) + AlignRightOverflow(StyledContent(styled), margin) -> + Aligned(pad_left( + styled, + width + margin - string.length(strip_style(styled)), + " ", + )) + AlignLeft(Content(unstyled), margin) -> + Aligned(pad_right( + unstyled, + width + margin - string.length(unstyled), + " ", + )) + AlignLeft(StyledContent(styled), margin) -> + Aligned(pad_right( + styled, + width + margin - string.length(strip_style(styled)), + " ", + )) + AlignLeftOverflow(Content(unstyled), margin) -> + Aligned(pad_right( + unstyled, + width + margin - string.length(unstyled), + " ", + )) + AlignLeftOverflow(StyledContent(styled), margin) -> + Aligned(pad_right( + styled, + width + margin - string.length(strip_style(styled)), + " ", + )) + Separator(char) -> Separator(char) + Aligned(content) -> Aligned(content) + } + }) + }) + let aligned_rows = + aligned_col + |> list.transpose() + Table(..table, rows: aligned_rows) +} + +fn pad_left(str: String, num: Int, char: String) { + let padding = + list.repeat(char, num) + |> string.join("") + padding <> str +} + +fn pad_right(str: String, num: Int, char: String) { + let padding = + list.repeat(char, num) + |> string.join("") + str <> padding +} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam new file mode 100644 index 0000000..cbba414 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam @@ -0,0 +1,3 @@ +pub type Meta { + Meta(description: String, tags: List(String)) +} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam new file mode 100644 index 0000000..71578c7 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam @@ -0,0 +1,113 @@ +import gleam/option.{type Option, None, Some} +import showtime/tests/meta.{type Meta} + +pub type Assertion(t, e) { + Eq(a: t, b: t, meta: Option(Meta)) + NotEq(a: t, b: t, meta: Option(Meta)) + IsOk(a: Result(t, e), meta: Option(Meta)) + IsError(a: Result(t, e), meta: Option(Meta)) + Fail(meta: Option(Meta)) +} + +pub fn equal(a: t, b: t) { + evaluate(Eq(a, b, None)) +} + +pub fn equal_meta(a: t, b: t, meta: Meta) { + evaluate(Eq(a, b, Some(meta))) +} + +pub fn not_equal(a: t, b: t) { + evaluate(NotEq(a, b, None)) +} + +pub fn not_equal_meta(a: t, b: t, meta: Meta) { + evaluate(NotEq(a, b, Some(meta))) +} + +pub fn be_ok(a: Result(o, e)) { + evaluate(IsOk(a, None)) + let assert Ok(value) = a + value +} + +pub fn be_ok_meta(a: Result(o, e), meta: Meta) { + evaluate(IsOk(a, Some(meta))) +} + +pub fn be_error(a: Result(o, e)) { + evaluate(IsError(a, None)) + let assert Error(value) = a + value +} + +pub fn be_error_meta(a: Result(o, e), meta: Meta) { + evaluate(IsError(a, Some(meta))) +} + +pub fn fail() { + evaluate(Fail(None)) +} + +pub fn fail_meta(meta: Meta) { + evaluate(Fail(Some(meta))) +} + +pub fn be_true(a: Bool) { + a + |> equal(True) +} + +pub fn be_true_meta(a: Bool, meta: Meta) { + a + |> equal_meta(True, meta) +} + +pub fn be_false(a: Bool) { + a + |> equal(False) +} + +pub fn be_false_meta(a: Bool, meta: Meta) { + a + |> equal_meta(False, meta) +} + +@external(erlang, "showtime_ffi", "gleam_error") +fn gleam_error(value: Result(Nil, Assertion(a, b))) -> Nil + +pub fn evaluate(assertion) -> Nil { + case assertion { + Eq(a, b, _meta) -> + case a == b { + True -> Nil + False -> { + gleam_error(Error(assertion)) + } + } + NotEq(a, b, _meta) -> + case a != b { + True -> Nil + False -> { + gleam_error(Error(assertion)) + } + } + IsOk(a, _meta) -> + case a { + Ok(_) -> Nil + Error(_) -> { + gleam_error(Error(assertion)) + } + } + IsError(a, _meta) -> + case a { + Error(_) -> Nil + Ok(_) -> { + gleam_error(Error(assertion)) + } + } + Fail(_meta) -> { + gleam_error(Error(assertion)) + } + } +} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam new file mode 100644 index 0000000..730f943 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam @@ -0,0 +1,57 @@ +import showtime/tests/should +import showtime/tests/meta.{type Meta} +import gleam/io + +pub type Test { + Test(meta: Meta, test_function: fn() -> Nil) +} + +pub type MetaShould(t) { + MetaShould(equal: fn(t, t) -> Nil, not_equal: fn(t, t) -> Nil) +} + +pub fn test(meta: Meta, test_function: fn(Meta) -> Nil) { + Test(meta, fn() { test_function(meta) }) +} + +pub fn with_meta(meta: Meta, test_function: fn(MetaShould(a)) -> Nil) { + Test( + meta, + fn() { + test_function(MetaShould( + fn(a, b) { equal(a, b, meta) }, + fn(a, b) { not_equal(a, b, meta) }, + )) + }, + ) +} + +pub fn equal(a: t, b: t, meta: Meta) { + io.debug(a) + io.debug(b) + should.equal_meta(a, b, meta) +} + +pub fn not_equal(a: t, b: t, meta: Meta) { + should.equal_meta(a, b, meta) +} + +pub fn be_ok(a: Result(o, e), meta: Meta) { + should.be_ok_meta(a, meta) +} + +pub fn be_error(a: Result(o, e), meta: Meta) { + should.be_error_meta(a, meta) +} + +pub fn fail(meta: Meta) { + should.fail_meta(meta) +} + +pub fn be_true(a: Bool, meta: Meta) { + should.be_true_meta(a, meta) +} + +pub fn be_false(a: Bool, meta: Meta) { + should.be_false_meta(a, meta) +} diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl new file mode 100644 index 0000000..f2d2396 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl @@ -0,0 +1,8 @@ +-module(showtime@internal@common@cli). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([capture/0]). + +-type capture() :: yes | no | mixed. + + diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl new file mode 100644 index 0000000..b0a6d7a --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl @@ -0,0 +1,131 @@ +-module(showtime@internal@common@common_event_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([handle_event/3]). +-export_type([test_state/0, handler_state/0]). + +-type test_state() :: not_started | running | {finished, integer()}. + +-type handler_state() :: {handler_state, + test_state(), + integer(), + gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run()))}. + +-spec handle_event( + showtime@internal@common@test_suite:test_event(), + fun(() -> integer()), + handler_state() +) -> handler_state(). +handle_event(Msg, System_time, State) -> + Test_state = erlang:element(2, State), + Num_done = erlang:element(3, State), + Events = erlang:element(4, State), + {Updated_test_state, Updated_num_done, Updated_events} = case Msg of + start_test_run -> + {running, Num_done, Events}; + + {start_test_suite, Module} -> + Maybe_module_events = gleam@map:get( + Events, + erlang:element(2, Module) + ), + New_events = case Maybe_module_events of + {ok, _} -> + Events; + + {error, _} -> + _pipe = Events, + gleam@map:insert( + _pipe, + erlang:element(2, Module), + gleam@map:new() + ) + end, + {Test_state, Num_done, New_events}; + + {start_test, Module@1, Test} -> + Current_time = System_time(), + Maybe_module_events@1 = gleam@map:get( + Events, + erlang:element(2, Module@1) + ), + New_events@1 = case Maybe_module_events@1 of + {ok, Module_events} -> + Maybe_test_event = gleam@map:get( + Module_events, + erlang:element(2, Test) + ), + case Maybe_test_event of + {error, _} -> + _pipe@1 = Events, + gleam@map:insert( + _pipe@1, + erlang:element(2, Module@1), + begin + _pipe@2 = Module_events, + gleam@map:insert( + _pipe@2, + erlang:element(2, Test), + {ongoing_test_run, Test, Current_time} + ) + end + ); + + {ok, _} -> + Events + end; + + {error, _} -> + Events + end, + {Test_state, Num_done, New_events@1}; + + {end_test, Module@2, Test@1, Result} -> + Current_time@1 = System_time(), + Maybe_module_events@2 = gleam@map:get( + Events, + erlang:element(2, Module@2) + ), + New_events@2 = case Maybe_module_events@2 of + {ok, Module_events@1} -> + Maybe_test_run = begin + _pipe@3 = Module_events@1, + gleam@map:get(_pipe@3, erlang:element(2, Test@1)) + end, + Updated_module_events = case Maybe_test_run of + {ok, {ongoing_test_run, Test_function, Started_at}} -> + _pipe@4 = Module_events@1, + gleam@map:insert( + _pipe@4, + erlang:element(2, Test@1), + {completed_test_run, + Test_function, + Current_time@1 - Started_at, + Result} + ); + + {error, _} -> + Module_events@1 + end, + _pipe@5 = Events, + gleam@map:insert( + _pipe@5, + erlang:element(2, Module@2), + Updated_module_events + ); + + {error, _} -> + Events + end, + {Test_state, Num_done, New_events@2}; + + {end_test_suite, _} -> + {Test_state, Num_done + 1, Events}; + + {end_test_run, Num_modules} -> + {{finished, Num_modules}, Num_done, Events}; + + _ -> + {running, Num_done, Events} + end, + {handler_state, Updated_test_state, Updated_num_done, Updated_events}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl new file mode 100644 index 0000000..b7b73be --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl @@ -0,0 +1,54 @@ +-module(showtime@internal@common@test_result). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([ignore_reason/0, test_return/0, exception/0, reason/0, reason_detail/0, gleam_error_detail/0, class/0, trace_list/0, trace/0, extra_info/0, arity_/0]). + +-type ignore_reason() :: ignore. + +-type test_return() :: {test_function_return, + gleam@dynamic:dynamic_(), + list(binary())} | + {ignored, ignore_reason()}. + +-type exception() :: {erlang_exception, + class(), + reason(), + trace_list(), + list(binary())}. + +-type reason() :: {assert_equal, list(reason_detail())} | + {assert_not_equal, list(reason_detail())} | + {assert_match, list(reason_detail())} | + {gleam_error, gleam_error_detail()} | + {gleam_assert, gleam@dynamic:dynamic_(), integer()} | + {generic_exception, gleam@dynamic:dynamic_()}. + +-type reason_detail() :: {module, binary()} | + {reason_line, integer()} | + {expression, binary()} | + {expected, gleam@dynamic:dynamic_()} | + {value, gleam@dynamic:dynamic_()} | + {pattern, binary()}. + +-type gleam_error_detail() :: {let_assert, + binary(), + binary(), + integer(), + binary(), + gleam@dynamic:dynamic_()}. + +-type class() :: erlang_error | exit | throw. + +-type trace_list() :: {trace_list, list(trace())}. + +-type trace() :: {trace, binary(), arity_(), list(extra_info())} | + {trace_module, binary(), binary(), arity_(), list(extra_info())}. + +-type extra_info() :: {error_info, + gleam@map:map_(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_())} | + {file, binary()} | + {line, integer()}. + +-type arity_() :: {num, integer()} | {arg_list, list(gleam@dynamic:dynamic_())}. + + diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl new file mode 100644 index 0000000..6a56de8 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl @@ -0,0 +1,30 @@ +-module(showtime@internal@common@test_suite). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([test_run/0, test_module/0, test_function/0, test_suite/0, test_event/0]). + +-type test_run() :: {ongoing_test_run, test_function(), integer()} | + {completed_test_run, + test_function(), + integer(), + {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}}. + +-type test_module() :: {test_module, binary(), gleam@option:option(binary())}. + +-type test_function() :: {test_function, binary()}. + +-type test_suite() :: {test_suite, test_module(), list(test_function())}. + +-type test_event() :: start_test_run | + {start_test_suite, test_module()} | + {start_test, test_module(), test_function()} | + {end_test, + test_module(), + test_function(), + {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}} | + {end_test_suite, test_module()} | + {end_test_run, integer()}. + + diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl new file mode 100644 index 0000000..f0548aa --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl @@ -0,0 +1,230 @@ +-module(showtime@internal@erlang@discover). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([collect_modules/2, collect_test_functions/1]). + +-spec get_module_prefix(binary()) -> binary(). +get_module_prefix(Path) -> + Path_without_test = begin + _pipe = Path, + gleam@string:replace(_pipe, <<"./test"/utf8>>, <<""/utf8>>) + end, + Path_without_leading_slash = case gleam@string:starts_with( + Path_without_test, + <<"/"/utf8>> + ) of + true -> + gleam@string:drop_left(Path_without_test, 1); + + false -> + Path_without_test + end, + Module_prefix = begin + _pipe@1 = Path_without_leading_slash, + gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"@"/utf8>>) + end, + case gleam@string:length(Module_prefix) of + 0 -> + Module_prefix; + + _ -> + <> + end. + +-spec collect_modules_in_folder( + binary(), + fun((showtime@internal@common@test_suite:test_module()) -> nil), + gleam@option:option(list(binary())) +) -> list(showtime@internal@common@test_suite:test_module()). +collect_modules_in_folder(Path, Test_module_handler, Only_modules) -> + Module_prefix = get_module_prefix(Path), + _assert_subject = simplifile:read_directory(Path), + {ok, Files} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_modules_in_folder"/utf8>>, + line => 40}) + end, + Test_modules_in_folder = begin + _pipe = Files, + _pipe@1 = gleam@list:filter( + _pipe, + fun(_capture) -> + gleam@string:ends_with(_capture, <<"_test.gleam"/utf8>>) + end + ), + gleam@list:filter_map( + _pipe@1, + fun(Test_module_file) -> + Module_name = <>, + <<""/utf8>> + ) + end)/binary>>, + case Only_modules of + {some, Only_modules_list} -> + Module_in_list = begin + _pipe@3 = Only_modules_list, + gleam@list:any( + _pipe@3, + fun(Only_module_name) -> + Only_module_name =:= begin + _pipe@4 = Module_name, + gleam@string:replace( + _pipe@4, + <<"@"/utf8>>, + <<"/"/utf8>> + ) + end + end + ) + end, + case Module_in_list of + true -> + Test_module = {test_module, + Module_name, + {some, Test_module_file}}, + Test_module_handler(Test_module), + {ok, Test_module}; + + false -> + {error, nil} + end; + + none -> + Test_module@1 = {test_module, + Module_name, + {some, Test_module_file}}, + Test_module_handler(Test_module@1), + {ok, Test_module@1} + end + end + ) + end, + Test_modules_in_subfolders = begin + _pipe@5 = Files, + _pipe@6 = gleam@list:map( + _pipe@5, + fun(Filename) -> + <<<>/binary, Filename/binary>> + end + ), + _pipe@7 = gleam@list:filter( + _pipe@6, + fun(File) -> simplifile:is_directory(File) end + ), + gleam@list:fold( + _pipe@7, + [], + fun(Modules, Subfolder) -> _pipe@8 = Modules, + gleam@list:append( + _pipe@8, + collect_modules_in_folder( + Subfolder, + Test_module_handler, + Only_modules + ) + ) end + ) + end, + _pipe@9 = Test_modules_in_folder, + gleam@list:append(_pipe@9, Test_modules_in_subfolders). + +-spec collect_modules( + fun((showtime@internal@common@test_suite:test_module()) -> nil), + gleam@option:option(list(binary())) +) -> list(showtime@internal@common@test_suite:test_module()). +collect_modules(Test_module_handler, Only_modules) -> + collect_modules_in_folder( + <<"./test"/utf8>>, + Test_module_handler, + Only_modules + ). + +-spec collect_test_functions(showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite(). +collect_test_functions(Module) -> + Test_functions = begin + _pipe = erlang:apply( + erlang:binary_to_atom(erlang:element(2, Module)), + erlang:binary_to_atom(<<"module_info"/utf8>>), + [gleam@dynamic:from(erlang:binary_to_atom(<<"exports"/utf8>>))] + ), + gleam@dynamic:unsafe_coerce(_pipe) + end, + Test_functions_filtered = begin + _pipe@1 = Test_functions, + _pipe@3 = gleam@list:map( + _pipe@1, + fun(Entry) -> + {Name, Arity} = case Entry of + {_, _} -> Entry; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_test_functions"/utf8>>, + line => 131}) + end, + {begin + _pipe@2 = Name, + erlang:atom_to_binary(_pipe@2) + end, + Arity} + end + ), + _pipe@4 = gleam@list:filter_map( + _pipe@3, + fun(Entry@1) -> + {Name@1, Arity@1} = case Entry@1 of + {_, _} -> Entry@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"showtime/internal/erlang/discover"/utf8>>, + function => <<"collect_test_functions"/utf8>>, + line => 139}) + end, + case gleam@string:ends_with(Name@1, <<"_test"/utf8>>) of + true -> + case Arity@1 of + 0 -> + {ok, Name@1}; + + _ -> + gleam@io:println( + <<<<<<<<"WARNING: function \""/utf8, + Name@1/binary>>/binary, + "\" has arity: "/utf8>>/binary, + (gleam@int:to_string(Arity@1))/binary>>/binary, + " - cannot be used as test (needs to be 0)"/utf8>> + ), + {error, <<"Wrong arity"/utf8>>} + end; + + false -> + {error, <<"Non matching name"/utf8>>} + end + end + ), + _pipe@5 = gleam@list:filter( + _pipe@4, + fun(_capture) -> + gleam@string:ends_with(_capture, <<"_test"/utf8>>) + end + ), + gleam@list:map( + _pipe@5, + fun(Function_name) -> {test_function, Function_name} end + ) + end, + {test_suite, Module, Test_functions_filtered}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl new file mode 100644 index 0000000..d72ce2c --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl @@ -0,0 +1,76 @@ +-module(showtime@internal@erlang@event_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([start/0]). +-export_type([event_handler_message/0]). + +-type event_handler_message() :: {event_handler_message, + showtime@internal@common@test_suite:test_event(), + gleam@erlang@process:subject(integer())}. + +-spec system_time() -> integer(). +system_time() -> + os:system_time(millisecond). + +-spec start() -> fun((showtime@internal@common@test_suite:test_event()) -> nil). +start() -> + _assert_subject = gleam@otp@actor:start( + {not_started, 0, gleam@map:new()}, + fun(Msg, State) -> + {event_handler_message, Test_event, Reply_to} = Msg, + {Test_state, Num_done, Events} = State, + Updated_state = showtime@internal@common@common_event_handler:handle_event( + Test_event, + fun system_time/0, + {handler_state, Test_state, Num_done, Events} + ), + case Updated_state of + {handler_state, {finished, Num_modules}, Num_done@1, Events@1} when Num_done@1 =:= Num_modules -> + {Test_report, Num_failed} = showtime@internal@reports@formatter:create_test_report( + Events@1 + ), + gleam@io:println(Test_report), + gleam@erlang@process:send(Reply_to, Num_failed), + {stop, normal}; + + {handler_state, Test_state@1, Num_done@2, Events@2} -> + {continue, {Test_state@1, Num_done@2, Events@2}, none} + end + end + ), + {ok, Subject} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/event_handler"/utf8>>, + function => <<"start"/utf8>>, + line => 32}) + end, + Parent_subject = gleam@erlang@process:new_subject(), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + gleam@erlang@process:selecting(_pipe, Parent_subject, fun(X) -> X end) + end, + fun(Test_event@1) -> case Test_event@1 of + {end_test_run, _} -> + gleam@erlang@process:send( + Subject, + {event_handler_message, Test_event@1, Parent_subject} + ), + Num_failed@1 = gleam_erlang_ffi:select(Selector), + case Num_failed@1 > 0 of + true -> + erlang:halt(1); + + false -> + erlang:halt(0) + end; + + _ -> + gleam@erlang@process:send( + Subject, + {event_handler_message, Test_event@1, Parent_subject} + ) + end end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl new file mode 100644 index 0000000..a6959f5 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl @@ -0,0 +1,53 @@ +-module(showtime@internal@erlang@module_handler). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([start/5]). + +-spec start( + fun((showtime@internal@common@test_suite:test_event()) -> nil), + fun((showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite()), + fun((showtime@internal@common@test_suite:test_suite(), fun((showtime@internal@common@test_suite:test_event()) -> nil), list(binary()), showtime@internal@common@cli:capture()) -> nil), + list(binary()), + showtime@internal@common@cli:capture() +) -> fun((showtime@internal@common@test_suite:test_module()) -> nil). +start( + Test_event_handler, + Test_function_collector, + Run_test_suite, + Ignore_tags, + Capture +) -> + _assert_subject = gleam@otp@actor:start( + nil, + fun(Module, State) -> + gleam@erlang@process:start( + fun() -> + Test_suite = Test_function_collector(Module), + Test_event_handler({start_test_suite, Module}), + Run_test_suite( + Test_suite, + Test_event_handler, + Ignore_tags, + Capture + ), + Test_event_handler({end_test_suite, Module}) + end, + false + ), + {continue, State, none} + end + ), + {ok, Subject} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/erlang/module_handler"/utf8>>, + function => <<"start"/utf8>>, + line => 23}) + end, + fun(Test_module) -> + gleam@erlang@process:send(Subject, Test_module), + nil + end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl new file mode 100644 index 0000000..702fb75 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl @@ -0,0 +1,46 @@ +-module(showtime@internal@erlang@runner). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([run_test/4, run_test_suite/4]). + +-spec run_test( + binary(), + binary(), + list(binary()), + showtime@internal@common@cli:capture() +) -> {ok, showtime@internal@common@test_result:test_return()} | + {error, showtime@internal@common@test_result:exception()}. +run_test(Module_name, Test_name, Ignore_tags, Capture) -> + Result = showtime_ffi:run_test( + erlang:binary_to_atom(Module_name), + erlang:binary_to_atom(Test_name), + Ignore_tags, + Capture + ), + Result. + +-spec run_test_suite( + showtime@internal@common@test_suite:test_suite(), + fun((showtime@internal@common@test_suite:test_event()) -> nil), + list(binary()), + showtime@internal@common@cli:capture() +) -> nil. +run_test_suite(Test_suite, Test_event_handler, Ignore_tags, Capture) -> + _pipe = erlang:element(3, Test_suite), + gleam@list:each( + _pipe, + fun(Test) -> + Test_event_handler( + {start_test, erlang:element(2, Test_suite), Test} + ), + Result = run_test( + erlang:element(2, erlang:element(2, Test_suite)), + erlang:element(2, Test), + Ignore_tags, + Capture + ), + Test_event_handler( + {end_test, erlang:element(2, Test_suite), Test, Result} + ) + end + ). diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl new file mode 100644 index 0000000..d2969b2 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl @@ -0,0 +1,61 @@ +-module(showtime@internal@reports@compare). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compare/2]). + +-spec compare(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> {binary(), + binary()}. +compare(Expected, Got) -> + Expected_as_list = begin + _pipe = Expected, + (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe) + end, + Got_as_list = begin + _pipe@1 = Got, + (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe@1) + end, + Expected_as_string = begin + _pipe@2 = Expected, + gleam@dynamic:string(_pipe@2) + end, + Got_as_string = begin + _pipe@3 = Got, + gleam@dynamic:string(_pipe@3) + end, + case {Expected_as_list, Got_as_list, Expected_as_string, Got_as_string} of + {{ok, Expected_list}, {ok, Got_list}, _, _} -> + Comparison = begin + _pipe@4 = gap:compare_lists(Expected_list, Got_list), + _pipe@5 = gap@styling:from_comparison(_pipe@4), + _pipe@6 = gap@styling:highlight( + _pipe@5, + fun showtime@internal@reports@styles:expected_highlight/1, + fun showtime@internal@reports@styles:got_highlight/1, + fun(Item) -> Item end + ), + gap@styling:to_styled_comparison(_pipe@6) + end, + {erlang:element(2, Comparison), erlang:element(3, Comparison)}; + + {_, _, {ok, Expected_string}, {ok, Got_string}} -> + Comparison@1 = begin + _pipe@7 = gap:compare_strings(Expected_string, Got_string), + _pipe@8 = gap@styling:from_comparison(_pipe@7), + _pipe@9 = gap@styling:highlight( + _pipe@8, + fun showtime@internal@reports@styles:expected_highlight/1, + fun showtime@internal@reports@styles:got_highlight/1, + fun(Item@1) -> Item@1 end + ), + gap@styling:to_styled_comparison(_pipe@9) + end, + {erlang:element(2, Comparison@1), erlang:element(3, Comparison@1)}; + + {_, _, _, _} -> + {showtime@internal@reports@styles:expected_highlight( + gleam@string:inspect(Expected) + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got) + )} + end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl new file mode 100644 index 0000000..faea091 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl @@ -0,0 +1,749 @@ +-module(showtime@internal@reports@formatter). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([create_test_report/1]). +-export_type([glee_unit_assertion_type/0, module_and_test/0, unified_error/0]). + +-type glee_unit_assertion_type() :: {glee_unit_assert_equal, binary()} | + {glee_unit_assert_not_equal, binary()} | + {glee_unit_assert_match, binary()}. + +-type module_and_test() :: {module_and_test_run, + binary(), + showtime@internal@common@test_suite:test_run()}. + +-type unified_error() :: {unified_error, + gleam@option:option(showtime@tests@meta:meta()), + binary(), + binary(), + binary(), + binary(), + gleam@option:option(integer()), + list(showtime@internal@common@test_result:trace())}. + +-spec erlang_error_to_unified( + list(showtime@internal@common@test_result:reason_detail()), + glee_unit_assertion_type(), + list(showtime@internal@common@test_result:trace()) +) -> unified_error(). +erlang_error_to_unified(Error_details, Assertion_type, Stacktrace) -> + _pipe = Error_details, + gleam@list:fold( + _pipe, + {unified_error, + none, + <<"not_set"/utf8>>, + erlang:element(2, Assertion_type), + <<""/utf8>>, + <<""/utf8>>, + none, + Stacktrace}, + fun(Unified, Reason) -> case Reason of + {expression, Expression} -> + erlang:setelement(3, Unified, Expression); + + {expected, Value} -> + case Assertion_type of + {glee_unit_assert_equal, _} -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + gleam@string:inspect(Value) + ) + ); + + _ -> + Unified + end; + + {value, Value@1} -> + case Assertion_type of + {glee_unit_assert_not_equal, _} -> + erlang:setelement( + 6, + erlang:setelement( + 5, + Unified, + <<(showtime@internal@reports@styles:not_style( + <<"not "/utf8>> + ))/binary, + (gleam@string:inspect(Value@1))/binary>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Value@1) + ) + ); + + _ -> + erlang:setelement( + 6, + Unified, + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Value@1) + ) + ) + end; + + {pattern, Pattern} -> + case Pattern of + <<"{ ok , _ }"/utf8>> -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + <<"Ok(_)"/utf8>> + ) + ); + + <<"{ error , _ }"/utf8>> -> + erlang:setelement( + 5, + Unified, + showtime@internal@reports@styles:expected_highlight( + <<"Error(_)"/utf8>> + ) + ); + + _ -> + Unified + end; + + _ -> + Unified + end end + ). + +-spec gleam_error_to_unified( + showtime@internal@common@test_result:gleam_error_detail(), + list(showtime@internal@common@test_result:trace()) +) -> unified_error(). +gleam_error_to_unified(Gleam_error, Stacktrace) -> + case Gleam_error of + {let_assert, _, _, _, _, Value} -> + Result = gleam@dynamic:unsafe_coerce(Value), + {error, Assertion} = case Result of + {error, _} -> Result; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/internal/reports/formatter"/utf8>>, + function => <<"gleam_error_to_unified"/utf8>>, + line => 293}) + end, + case Assertion of + {eq, Got, Expected, Meta} -> + {Expected@1, Got@1} = showtime@internal@reports@compare:compare( + Expected, + Got + ), + {unified_error, + Meta, + <<"assert"/utf8>>, + <<"Assert equal"/utf8>>, + Expected@1, + Got@1, + none, + Stacktrace}; + + {not_eq, Got@2, Expected@2, Meta@1} -> + {unified_error, + Meta@1, + <<"assert"/utf8>>, + <<"Assert not equal"/utf8>>, + <<(showtime@internal@reports@styles:not_style( + <<"not "/utf8>> + ))/binary, + (gleam@string:inspect(Expected@2))/binary>>, + gleam@string:inspect(Got@2), + none, + Stacktrace}; + + {is_ok, Got@3, Meta@2} -> + {unified_error, + Meta@2, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:expected_highlight( + <<"Ok(_)"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got@3) + ), + none, + Stacktrace}; + + {is_error, Got@4, Meta@3} -> + {unified_error, + Meta@3, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:expected_highlight( + <<"Error(_)"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + gleam@string:inspect(Got@4) + ), + none, + Stacktrace}; + + {fail, Meta@4} -> + {unified_error, + Meta@4, + <<"assert"/utf8>>, + <<"Assert is Ok"/utf8>>, + showtime@internal@reports@styles:got_highlight( + <<"should.fail()"/utf8>> + ), + showtime@internal@reports@styles:got_highlight( + <<"N/A - test always expected to fail"/utf8>> + ), + none, + Stacktrace} + end + end. + +-spec format_reason(unified_error(), binary(), binary(), list(binary())) -> list(list(showtime@internal@reports@table:col())). +format_reason(Error, Module, Function, Output_buffer) -> + Meta@1 = case erlang:element(2, Error) of + {some, Meta} -> + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Description"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, {content, erlang:element(2, Meta)}, 0}]}; + + none -> + none + end, + Stacktrace = begin + _pipe = erlang:element(8, Error), + gleam@list:map(_pipe, fun(Trace) -> case Trace of + {trace, Function@1, _, _} when Function@1 =:= <<""/utf8>> -> + <<"(anonymous)"/utf8>>; + + {trace_module, Module@1, Function@2, _, _} when Function@2 =:= <<""/utf8>> -> + <<<>/binary, + "(anonymous)"/utf8>>; + + {trace, Function@3, _, _} -> + Function@3; + + {trace_module, Module@2, Function@4, _, _} -> + <<<>/binary, + Function@4/binary>> + end end) + end, + Stacktrace_rows = case Stacktrace of + [] -> + []; + + [First | Rest] -> + First_row = {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Stacktrace"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + First + )}, + 0}]}, + Rest_rows = begin + _pipe@1 = Rest, + gleam@list:map( + _pipe@1, + fun(Row) -> + {some, + [{align_right, {content, <<""/utf8>>}, 2}, + {separator, <<" "/utf8>>}, + {align_left, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + Row + )}, + 0}]} + end + ) + end, + [First_row | Rest_rows] + end, + Output_rows = case begin + _pipe@2 = Output_buffer, + _pipe@3 = gleam@list:reverse(_pipe@2), + gleam@list:map( + _pipe@3, + fun(Row@1) -> gleam@string:trim_right(Row@1) end + ) + end of + [] -> + []; + + [First@1 | Rest@1] -> + First_row@1 = {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Output"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + First@1 + )}, + 0}]}, + Rest_rows@1 = begin + _pipe@4 = Rest@1, + gleam@list:map( + _pipe@4, + fun(Row@2) -> + {some, + [{align_right, {content, <<""/utf8>>}, 2}, + {separator, <<" "/utf8>>}, + {align_left_overflow, + {styled_content, + showtime@internal@reports@styles:stacktrace_style( + Row@2 + )}, + 0}]} + end + ) + end, + [First_row@1 | Rest_rows@1] + end, + Line@1 = begin + _pipe@5 = erlang:element(7, Error), + _pipe@6 = gleam@option:map( + _pipe@5, + fun(Line) -> <<":"/utf8, (gleam@int:to_string(Line))/binary>> end + ), + gleam@option:unwrap(_pipe@6, <<""/utf8>>) + end, + Arrow = <<(gleam@string:join( + gleam@list:repeat( + <<"-"/utf8>>, + (gleam@string:length(Module) + 1) + ((gleam@string:length( + Function + ) + + gleam@string:length(Line@1)) + div 2) + ), + <<""/utf8>> + ))/binary, + "⌄"/utf8>>, + Standard_table_rows = [{some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:error_style( + <<"Failed"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, {content, Arrow}, 0}]}, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Test"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left, + {styled_content, + <<<>/binary, + (showtime@internal@reports@styles:function_style( + <> + ))/binary>>}, + 0}]}, + Meta@1, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Expected"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, erlang:element(5, Error)}, + 0}]}, + {some, + [{align_right, + {styled_content, + showtime@internal@reports@styles:heading_style( + <<"Got"/utf8>> + )}, + 2}, + {separator, <<": "/utf8>>}, + {align_left_overflow, + {styled_content, erlang:element(6, Error)}, + 0}]}], + _pipe@7 = Standard_table_rows, + _pipe@8 = gleam@list:append(_pipe@7, Stacktrace_rows), + _pipe@9 = gleam@list:append(_pipe@8, Output_rows), + _pipe@10 = gleam@list:append( + _pipe@9, + [{some, + [{align_right, {content, <<""/utf8>>}, 0}, + {align_right, {content, <<""/utf8>>}, 0}, + {align_right, {content, <<""/utf8>>}, 0}]}] + ), + gleam@list:filter_map( + _pipe@10, + fun(Row@3) -> gleam@option:to_result(Row@3, nil) end + ). + +-spec create_test_report( + gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run())) +) -> {binary(), integer()}. +create_test_report(Test_results) -> + All_test_runs = begin + _pipe = Test_results, + _pipe@1 = gleam@map:values(_pipe), + gleam@list:flat_map(_pipe@1, fun gleam@map:values/1) + end, + Failed_test_runs = begin + _pipe@2 = Test_results, + _pipe@3 = gleam@map:to_list(_pipe@2), + gleam@list:flat_map( + _pipe@3, + fun(Entry) -> + {Module_name, Test_module_results} = Entry, + _pipe@4 = Test_module_results, + _pipe@5 = gleam@map:values(_pipe@4), + gleam@list:filter_map(_pipe@5, fun(Test_run) -> case Test_run of + {completed_test_run, _, _, Result} -> + case Result of + {error, _} -> + {ok, + {module_and_test_run, + Module_name, + Test_run}}; + + {ok, {ignored, _}} -> + {error, nil}; + + {ok, _} -> + {error, nil} + end; + + _ -> + _pipe@6 = Test_run, + gleam@io:debug(_pipe@6), + {error, nil} + end end) + end + ) + end, + Ignored_test_runs = begin + _pipe@7 = Test_results, + _pipe@8 = gleam@map:to_list(_pipe@7), + gleam@list:flat_map( + _pipe@8, + fun(Entry@1) -> + {Module_name@1, Test_module_results@1} = Entry@1, + _pipe@9 = Test_module_results@1, + _pipe@10 = gleam@map:values(_pipe@9), + gleam@list:filter_map( + _pipe@10, + fun(Test_run@1) -> case Test_run@1 of + {completed_test_run, Test_function, _, Result@1} -> + case Result@1 of + {ok, {ignored, Reason}} -> + {ok, + {<<<>/binary, + (erlang:element( + 2, + Test_function + ))/binary>>, + Reason}}; + + _ -> + {error, nil} + end; + + _ -> + {error, nil} + end end + ) + end + ) + end, + Failed_tests_report = begin + _pipe@11 = Failed_test_runs, + _pipe@12 = gleam@list:filter_map( + _pipe@11, + fun(Module_and_test_run) -> + case erlang:element(3, Module_and_test_run) of + {completed_test_run, Test_function@1, _, Result@2} -> + case Result@2 of + {error, Exception} -> + case erlang:element(3, Exception) of + {assert_equal, Reason_details} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details, + {glee_unit_assert_equal, + <<"Assert equal"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {assert_not_equal, Reason_details@1} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details@1, + {glee_unit_assert_not_equal, + <<"Assert not equal"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {assert_match, Reason_details@2} -> + {ok, + format_reason( + erlang_error_to_unified( + Reason_details@2, + {glee_unit_assert_match, + <<"Assert match"/utf8>>}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {gleam_error, Reason@1} -> + {ok, + format_reason( + gleam_error_to_unified( + Reason@1, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + ) + ), + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {gleam_assert, Value, Line_no} -> + {ok, + format_reason( + {unified_error, + none, + <<"gleam assert"/utf8>>, + <<"Assert failed"/utf8>>, + <<"Patterns should match"/utf8>>, + showtime@internal@reports@styles:error_style( + gleam@string:inspect( + Value + ) + ), + {some, Line_no}, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + )}, + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + {generic_exception, Value@1} -> + {ok, + format_reason( + {unified_error, + none, + <<"generic exception"/utf8>>, + <<"Test function threw an exception"/utf8>>, + <<"Exception in test function"/utf8>>, + showtime@internal@reports@styles:error_style( + gleam@string:inspect( + Value@1 + ) + ), + none, + erlang:element( + 2, + erlang:element( + 4, + Exception + ) + )}, + erlang:element( + 2, + Module_and_test_run + ), + erlang:element( + 2, + Test_function@1 + ), + erlang:element(5, Exception) + )}; + + Other -> + gleam@io:println( + <<"Other: "/utf8, + (gleam@string:inspect(Other))/binary>> + ), + erlang:error(#{gleam_error => panic, + message => <<"panic expression evaluated"/utf8>>, + module => <<"showtime/internal/reports/formatter"/utf8>>, + function => <<"create_test_report"/utf8>>, + line => 178}), + {error, nil} + end; + + _ -> + {error, nil} + end; + + _ -> + {error, nil} + end + end + ), + gleam@list:fold( + _pipe@12, + [], + fun(Rows, Test_rows) -> gleam@list:append(Rows, Test_rows) end + ) + end, + All_test_execution_time_reports = begin + _pipe@13 = All_test_runs, + gleam@list:filter_map(_pipe@13, fun(Test_run@2) -> case Test_run@2 of + {completed_test_run, Test_function@2, Total_time, _} -> + {ok, + <<<<<<(erlang:element(2, Test_function@2))/binary, + ": "/utf8>>/binary, + (gleam@int:to_string(Total_time))/binary>>/binary, + " ms"/utf8>>}; + + _ -> + {error, nil} + end end) + end, + _ = begin + _pipe@14 = All_test_execution_time_reports, + gleam@string:join(_pipe@14, <<"\n"/utf8>>) + end, + All_tests_count = begin + _pipe@15 = All_test_runs, + gleam@list:length(_pipe@15) + end, + Ignored_tests_count = begin + _pipe@16 = Ignored_test_runs, + gleam@list:length(_pipe@16) + end, + Failed_tests_count = begin + _pipe@17 = Failed_test_runs, + gleam@list:length(_pipe@17) + end, + Passed = showtime@internal@reports@styles:passed_style( + <<(gleam@int:to_string( + (All_tests_count - Failed_tests_count) - Ignored_tests_count + ))/binary, + " passed"/utf8>> + ), + Failed = showtime@internal@reports@styles:failed_style( + <<(gleam@int:to_string(Failed_tests_count))/binary, " failed"/utf8>> + ), + Ignored = case Ignored_tests_count of + 0 -> + <<""/utf8>>; + + _ -> + <<", "/utf8, + (showtime@internal@reports@styles:ignored_style( + <<(gleam@int:to_string(Ignored_tests_count))/binary, + " ignored"/utf8>> + ))/binary>> + end, + Failed_tests_table = begin + _pipe@18 = {table, none, Failed_tests_report}, + _pipe@19 = showtime@internal@reports@table:align_table(_pipe@18), + showtime@internal@reports@table:to_string(_pipe@19) + end, + Test_report = <<<<<<<<<<<<"\n"/utf8, Failed_tests_table/binary>>/binary, + "\n"/utf8>>/binary, + Passed/binary>>/binary, + ", "/utf8>>/binary, + Failed/binary>>/binary, + Ignored/binary>>, + {Test_report, Failed_tests_count}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl new file mode 100644 index 0000000..ec6230c --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl @@ -0,0 +1,93 @@ +-module(showtime@internal@reports@styles). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([not_style/1, module_style/1, heading_style/1, stacktrace_style/1, failed_style/1, error_style/1, got_highlight/1, passed_style/1, expected_highlight/1, ignored_style/1, function_style/1, strip_style/1]). + +-spec not_style(binary()) -> binary(). +not_style(Text) -> + gleam_community@ansi:bold(Text). + +-spec module_style(binary()) -> binary(). +module_style(Text) -> + gleam_community@ansi:cyan(Text). + +-spec heading_style(binary()) -> binary(). +heading_style(Text) -> + gleam_community@ansi:cyan(Text). + +-spec stacktrace_style(binary()) -> binary(). +stacktrace_style(Text) -> + Text. + +-spec bold_red(binary()) -> binary(). +bold_red(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:red(Text)). + +-spec failed_style(binary()) -> binary(). +failed_style(Text) -> + bold_red(Text). + +-spec error_style(binary()) -> binary(). +error_style(Text) -> + bold_red(Text). + +-spec got_highlight(binary()) -> binary(). +got_highlight(Text) -> + bold_red(Text). + +-spec bold_green(binary()) -> binary(). +bold_green(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:green(Text)). + +-spec passed_style(binary()) -> binary(). +passed_style(Text) -> + bold_green(Text). + +-spec expected_highlight(binary()) -> binary(). +expected_highlight(Text) -> + bold_green(Text). + +-spec bold_yellow(binary()) -> binary(). +bold_yellow(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:yellow(Text)). + +-spec ignored_style(binary()) -> binary(). +ignored_style(Text) -> + bold_yellow(Text). + +-spec bold_cyan(binary()) -> binary(). +bold_cyan(Text) -> + gleam_community@ansi:bold(gleam_community@ansi:cyan(Text)). + +-spec function_style(binary()) -> binary(). +function_style(Text) -> + bold_cyan(Text). + +-spec strip_style(binary()) -> binary(). +strip_style(Text) -> + {New_text, _} = begin + _pipe = Text, + _pipe@1 = gleam@string:to_graphemes(_pipe), + gleam@list:fold( + _pipe@1, + {<<""/utf8>>, false}, + fun(Acc, Char) -> + {Str, Removing} = Acc, + Bit_char = gleam_stdlib:identity(Char), + case {Bit_char, Removing} of + {<<16#1b>>, _} -> + {Str, true}; + + {<<16#6d>>, true} -> + {Str, false}; + + {_, true} -> + {Str, true}; + + {_, false} -> + {<>, false} + end + end + ) + end, + New_text. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl new file mode 100644 index 0000000..35dbba3 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl @@ -0,0 +1,229 @@ +-module(showtime@internal@reports@table). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_string/1, align_table/1]). +-export_type([content/0, col/0, table/0]). + +-type content() :: {content, binary()} | {styled_content, binary()}. + +-type col() :: {align_right, content(), integer()} | + {align_left, content(), integer()} | + {align_right_overflow, content(), integer()} | + {align_left_overflow, content(), integer()} | + {separator, binary()} | + {aligned, binary()}. + +-type table() :: {table, gleam@option:option(binary()), list(list(col()))}. + +-spec to_string(table()) -> binary(). +to_string(Table) -> + Rows = begin + _pipe = erlang:element(3, Table), + _pipe@3 = gleam@list:map(_pipe, fun(Row) -> _pipe@1 = Row, + _pipe@2 = gleam@list:filter_map(_pipe@1, fun(Col) -> case Col of + {separator, Char} -> + {ok, Char}; + + {aligned, Content} -> + {ok, Content}; + + _ -> + {error, nil} + end end), + gleam@string:join(_pipe@2, <<""/utf8>>) end), + gleam@string:join(_pipe@3, <<"\n"/utf8>>) + end, + Header@1 = begin + _pipe@4 = erlang:element(2, Table), + _pipe@5 = gleam@option:map( + _pipe@4, + fun(Header) -> <
> end + ), + gleam@option:unwrap(_pipe@5, <<""/utf8>>) + end, + <>. + +-spec pad_left(binary(), integer(), binary()) -> binary(). +pad_left(Str, Num, Char) -> + Padding = begin + _pipe = gleam@list:repeat(Char, Num), + gleam@string:join(_pipe, <<""/utf8>>) + end, + <>. + +-spec pad_right(binary(), integer(), binary()) -> binary(). +pad_right(Str, Num, Char) -> + Padding = begin + _pipe = gleam@list:repeat(Char, Num), + gleam@string:join(_pipe, <<""/utf8>>) + end, + <>. + +-spec align_table(table()) -> table(). +align_table(Table) -> + Cols = begin + _pipe = erlang:element(3, Table), + gleam@list:transpose(_pipe) + end, + Col_width = begin + _pipe@1 = Cols, + gleam@list:map(_pipe@1, fun(Col) -> _pipe@2 = Col, + _pipe@3 = gleam@list:map( + _pipe@2, + fun(Content) -> case Content of + {align_right, {content, Unstyled}, _} -> + Unstyled; + + {align_right, {styled_content, Styled}, _} -> + showtime@internal@reports@styles:strip_style( + Styled + ); + + {align_left, {content, Unstyled@1}, _} -> + Unstyled@1; + + {align_left, {styled_content, Styled@1}, _} -> + showtime@internal@reports@styles:strip_style( + Styled@1 + ); + + {align_left_overflow, _, _} -> + <<""/utf8>>; + + {align_right_overflow, _, _} -> + <<""/utf8>>; + + {separator, Char} -> + Char; + + {aligned, Content@1} -> + Content@1 + end end + ), + gleam@list:fold( + _pipe@3, + 0, + fun(Max, Str) -> + gleam@int:max(Max, gleam@string:length(Str)) + end + ) end) + end, + Aligned_col = begin + _pipe@4 = Cols, + _pipe@5 = gleam@list:zip(_pipe@4, Col_width), + gleam@list:map( + _pipe@5, + fun(Col_and_width) -> + {Col@1, Width} = Col_and_width, + _pipe@6 = Col@1, + gleam@list:map(_pipe@6, fun(Content@2) -> case Content@2 of + {align_right, {content, Unstyled@2}, Margin} -> + {aligned, + pad_left( + Unstyled@2, + (Width + Margin) - gleam@string:length( + Unstyled@2 + ), + <<" "/utf8>> + )}; + + {align_right, {styled_content, Styled@2}, Margin@1} -> + {aligned, + pad_left( + Styled@2, + (Width + Margin@1) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@2 + ) + ), + <<" "/utf8>> + )}; + + {align_right_overflow, + {content, Unstyled@3}, + Margin@2} -> + {aligned, + pad_left( + Unstyled@3, + (Width + Margin@2) - gleam@string:length( + Unstyled@3 + ), + <<" "/utf8>> + )}; + + {align_right_overflow, + {styled_content, Styled@3}, + Margin@3} -> + {aligned, + pad_left( + Styled@3, + (Width + Margin@3) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@3 + ) + ), + <<" "/utf8>> + )}; + + {align_left, {content, Unstyled@4}, Margin@4} -> + {aligned, + pad_right( + Unstyled@4, + (Width + Margin@4) - gleam@string:length( + Unstyled@4 + ), + <<" "/utf8>> + )}; + + {align_left, {styled_content, Styled@4}, Margin@5} -> + {aligned, + pad_right( + Styled@4, + (Width + Margin@5) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@4 + ) + ), + <<" "/utf8>> + )}; + + {align_left_overflow, + {content, Unstyled@5}, + Margin@6} -> + {aligned, + pad_right( + Unstyled@5, + (Width + Margin@6) - gleam@string:length( + Unstyled@5 + ), + <<" "/utf8>> + )}; + + {align_left_overflow, + {styled_content, Styled@5}, + Margin@7} -> + {aligned, + pad_right( + Styled@5, + (Width + Margin@7) - gleam@string:length( + showtime@internal@reports@styles:strip_style( + Styled@5 + ) + ), + <<" "/utf8>> + )}; + + {separator, Char@1} -> + {separator, Char@1}; + + {aligned, Content@3} -> + {aligned, Content@3} + end end) + end + ) + end, + Aligned_rows = begin + _pipe@7 = Aligned_col, + gleam@list:transpose(_pipe@7) + end, + erlang:setelement(3, Table, Aligned_rows). diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl b/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl new file mode 100644 index 0000000..c975467 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl @@ -0,0 +1,8 @@ +-module(showtime@tests@meta). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([meta/0]). + +-type meta() :: {meta, binary(), list(binary())}. + + diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@should.erl b/aoc2023/build/packages/adglent/src/showtime@tests@should.erl new file mode 100644 index 0000000..29906b4 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@tests@should.erl @@ -0,0 +1,143 @@ +-module(showtime@tests@should). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([evaluate/1, equal/2, equal_meta/3, not_equal/2, not_equal_meta/3, be_ok/1, be_ok_meta/2, be_error/1, be_error_meta/2, fail/0, fail_meta/1, be_true/1, be_true_meta/2, be_false/1, be_false_meta/2]). +-export_type([assertion/2]). + +-type assertion(MXP, MXQ) :: {eq, + MXP, + MXP, + gleam@option:option(showtime@tests@meta:meta())} | + {not_eq, MXP, MXP, gleam@option:option(showtime@tests@meta:meta())} | + {is_ok, + {ok, MXP} | {error, MXQ}, + gleam@option:option(showtime@tests@meta:meta())} | + {is_error, + {ok, MXP} | {error, MXQ}, + gleam@option:option(showtime@tests@meta:meta())} | + {fail, gleam@option:option(showtime@tests@meta:meta())}. + +-spec evaluate(assertion(any(), any())) -> nil. +evaluate(Assertion) -> + case Assertion of + {eq, A, B, _} -> + case A =:= B of + true -> + nil; + + false -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {not_eq, A@1, B@1, _} -> + case A@1 /= B@1 of + true -> + nil; + + false -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {is_ok, A@2, _} -> + case A@2 of + {ok, _} -> + nil; + + {error, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {is_error, A@3, _} -> + case A@3 of + {error, _} -> + nil; + + {ok, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end; + + {fail, _} -> + showtime_ffi:gleam_error({error, Assertion}) + end. + +-spec equal(MXR, MXR) -> nil. +equal(A, B) -> + evaluate({eq, A, B, none}). + +-spec equal_meta(MXT, MXT, showtime@tests@meta:meta()) -> nil. +equal_meta(A, B, Meta) -> + evaluate({eq, A, B, {some, Meta}}). + +-spec not_equal(MXV, MXV) -> nil. +not_equal(A, B) -> + evaluate({not_eq, A, B, none}). + +-spec not_equal_meta(MXX, MXX, showtime@tests@meta:meta()) -> nil. +not_equal_meta(A, B, Meta) -> + evaluate({not_eq, A, B, {some, Meta}}). + +-spec be_ok({ok, MXZ} | {error, any()}) -> MXZ. +be_ok(A) -> + evaluate({is_ok, A, none}), + {ok, Value} = case A of + {ok, _} -> A; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/tests/should"/utf8>>, + function => <<"be_ok"/utf8>>, + line => 30}) + end, + Value. + +-spec be_ok_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_ok_meta(A, Meta) -> + evaluate({is_ok, A, {some, Meta}}). + +-spec be_error({ok, any()} | {error, MYK}) -> MYK. +be_error(A) -> + evaluate({is_error, A, none}), + {error, Value} = case A of + {error, _} -> A; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"showtime/tests/should"/utf8>>, + function => <<"be_error"/utf8>>, + line => 40}) + end, + Value. + +-spec be_error_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_error_meta(A, Meta) -> + evaluate({is_error, A, {some, Meta}}). + +-spec fail() -> nil. +fail() -> + evaluate({fail, none}). + +-spec fail_meta(showtime@tests@meta:meta()) -> nil. +fail_meta(Meta) -> + evaluate({fail, {some, Meta}}). + +-spec be_true(boolean()) -> nil. +be_true(A) -> + _pipe = A, + equal(_pipe, true). + +-spec be_true_meta(boolean(), showtime@tests@meta:meta()) -> nil. +be_true_meta(A, Meta) -> + _pipe = A, + equal_meta(_pipe, true, Meta). + +-spec be_false(boolean()) -> nil. +be_false(A) -> + _pipe = A, + equal(_pipe, false). + +-spec be_false_meta(boolean(), showtime@tests@meta:meta()) -> nil. +be_false_meta(A, Meta) -> + _pipe = A, + equal_meta(_pipe, false, Meta). diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@test.erl b/aoc2023/build/packages/adglent/src/showtime@tests@test.erl new file mode 100644 index 0000000..2f23b9f --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime@tests@test.erl @@ -0,0 +1,57 @@ +-module(showtime@tests@test). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([test/2, equal/3, not_equal/3, with_meta/2, be_ok/2, be_error/2, fail/1, be_true/2, be_false/2]). +-export_type([test/0, meta_should/1]). + +-type test() :: {test, showtime@tests@meta:meta(), fun(() -> nil)}. + +-type meta_should(NDO) :: {meta_should, + fun((NDO, NDO) -> nil), + fun((NDO, NDO) -> nil)}. + +-spec test(showtime@tests@meta:meta(), fun((showtime@tests@meta:meta()) -> nil)) -> test(). +test(Meta, Test_function) -> + {test, Meta, fun() -> Test_function(Meta) end}. + +-spec equal(NDT, NDT, showtime@tests@meta:meta()) -> nil. +equal(A, B, Meta) -> + gleam@io:debug(A), + gleam@io:debug(B), + showtime@tests@should:equal_meta(A, B, Meta). + +-spec not_equal(NDV, NDV, showtime@tests@meta:meta()) -> nil. +not_equal(A, B, Meta) -> + showtime@tests@should:equal_meta(A, B, Meta). + +-spec with_meta(showtime@tests@meta:meta(), fun((meta_should(any())) -> nil)) -> test(). +with_meta(Meta, Test_function) -> + {test, + Meta, + fun() -> + Test_function( + {meta_should, + fun(A, B) -> equal(A, B, Meta) end, + fun(A@1, B@1) -> not_equal(A@1, B@1, Meta) end} + ) + end}. + +-spec be_ok({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_ok(A, Meta) -> + showtime@tests@should:be_ok_meta(A, Meta). + +-spec be_error({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. +be_error(A, Meta) -> + showtime@tests@should:be_error_meta(A, Meta). + +-spec fail(showtime@tests@meta:meta()) -> nil. +fail(Meta) -> + showtime@tests@should:fail_meta(Meta). + +-spec be_true(boolean(), showtime@tests@meta:meta()) -> nil. +be_true(A, Meta) -> + showtime@tests@should:be_true_meta(A, Meta). + +-spec be_false(boolean(), showtime@tests@meta:meta()) -> nil. +be_false(A, Meta) -> + showtime@tests@should:be_false_meta(A, Meta). diff --git a/aoc2023/build/packages/adglent/src/showtime_ffi.erl b/aoc2023/build/packages/adglent/src/showtime_ffi.erl new file mode 100644 index 0000000..3259623 --- /dev/null +++ b/aoc2023/build/packages/adglent/src/showtime_ffi.erl @@ -0,0 +1,187 @@ +-module(showtime_ffi). + +-export([run_test/4, functions/0, capture_output/1, gleam_error/1]). + +gleam_error(Value) -> + erlang:error(#{ + gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => Value, + module => <<"this/is/not/used"/utf8>>, + function => <<"gleam_error"/utf8>>, + % Not used + line => 0 + }). + +start_output_capture(Capture) -> + OldGroupLeader = group_leader(), + CapturePid = spawn(showtime_ffi, capture_output, [{[], {OldGroupLeader, Capture}}]), + group_leader(CapturePid, self()), + {CapturePid, OldGroupLeader}. + +stop_output_capture({CapturePid, OldGroupLeader}) -> + group_leader(OldGroupLeader, self()), + CapturePid ! {capture_done, self()}, + receive + Buffer -> + Buffer + end. + +capture_output({Buffer, {OldGroupLeader, Capture}}) -> + receive + {io_request, From, ReplyAs, {put_chars, unicode, BitString}} -> + case Capture of + yes -> + From ! {io_reply, ReplyAs, ok}, + capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); + mixed -> + OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, + capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); + no -> + OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, + capture_output({Buffer, {OldGroupLeader, Capture}}) + end; + {capture_done, SenderPid} -> + SenderPid ! Buffer; + OtherMessage -> + OldGroupLeader ! OtherMessage, + capture_output({Buffer, {OldGroupLeader, Capture}}) + end. + +run_test(Module, Function, IgnoreTags, Capture) -> + OutputCapture = start_output_capture(Capture), + try + Result = apply(Module, Function, []), + {ResultType, FinalResult} = + case Result of + {test, {meta, _Description, Tags}, TestFun} -> + case + lists:any( + fun(Tag) -> + lists:any(fun(IgnoreTag) -> IgnoreTag == Tag end, IgnoreTags) + end, + Tags + ) + of + true -> + {ignored, ignore}; + false -> + {test_function_return, TestFun()} + end; + DirectResult -> + {test_function_return, DirectResult} + end, + OutputCaptureBuffer = stop_output_capture(OutputCapture), + case ResultType of + ignored -> {ok, {ResultType, FinalResult}}; + _ -> {ok, {ResultType, FinalResult, OutputCaptureBuffer}} + end + catch + Class:Reason:Stacktrace -> + GleamReason = + case Reason of + {Assertion, ReasonList} -> + ErlangReasonList = + lists:map( + fun(ReasonDetail) -> + case ReasonDetail of + {line, LineNo} -> + {reason_line, LineNo}; + {expression, List} -> + {expression, list_to_binary(List)}; + {module, ModuleAtom} -> + {module, atom_to_binary(ModuleAtom)}; + {pattern, Pattern} -> + {pattern, list_to_binary(Pattern)}; + Other -> + Other + end + end, + ReasonList + ), + GleamAssertionType = + case Assertion of + assertEqual -> + assert_equal; + assertNotEqual -> + assert_not_equal; + assertMatch -> + assert_match; + OtherAssertionType -> + OtherAssertionType + end, + {GleamAssertionType, ErlangReasonList}; + #{ + function := GleamFunction, + gleam_error := GleamError, + line := Line, + message := Message, + module := GleamModule, + value := Value + } -> + case Value of + {error, {OkValue, _, _, _}} when OkValue == not_eq; OkValue == eq -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + {error, {OkValue, _, _}} when OkValue == is_ok; OkValue == is_error -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + {error, {OkValue, _}} when OkValue == fail -> + {gleam_error, + {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; + _ -> + {gleam_assert, Value, Line} + end; + OtherReason -> + {generic_exception, OtherReason} + end, + GleamClass = + case Class of + error -> + erlang_error; + Other -> + Other + end, + GleamTraceList = + lists:map( + fun(Trace) -> + case Trace of + {ModuleName, FunctionName, Arity, ExtraInfoList} -> + {trace_module, atom_to_binary(ModuleName), + atom_to_binary(FunctionName), map_arity(Arity), + map_extra_info_list(ExtraInfoList)}; + {FunctionName, Arity, ExtraInfoList} -> + {trace, atom_to_binary(FunctionName), map_arity(Arity), + map_extra_info_list(ExtraInfoList)} + end + end, + Stacktrace + ), + OutputCaptureBufferCatch = stop_output_capture(OutputCapture), + {error, + {erlang_exception, GleamClass, GleamReason, {trace_list, GleamTraceList}, + OutputCaptureBufferCatch}} + end. + +map_extra_info_list(ExtraInfoList) -> + lists:map( + fun(ExtraInfo) -> + case ExtraInfo of + {file, FileNameList} -> {file, list_to_binary(FileNameList)}; + Other -> Other + end + end, + ExtraInfoList + ). + +map_arity(Arity) -> + if + is_list(Arity) -> + {arg_list, Arity}; + is_integer(Arity) -> + {num, Arity} + end. + +functions() -> + Funs = module_info(exports), + Funs. diff --git a/aoc2023/build/packages/gap/LICENSE b/aoc2023/build/packages/gap/LICENSE new file mode 100644 index 0000000..d1cec9b --- /dev/null +++ b/aoc2023/build/packages/gap/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2023 John Björk + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gap/README.md b/aoc2023/build/packages/gap/README.md new file mode 100644 index 0000000..3e02686 --- /dev/null +++ b/aoc2023/build/packages/gap/README.md @@ -0,0 +1,202 @@ +# gap + +[![Package Version](https://img.shields.io/hexpm/v/gap)](https://hex.pm/packages/gap) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gap/) + +A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences. + +A typical styled output from the comparison can look like this: + +Image of two strings with highlighted differences + +## Installation + +If available on Hex this package can be added to your Gleam project: + +```sh +gleam add gap +``` + +Documentation can be found at . + +## Usage + +# Introduction + +Gap implements string/list comparison by finding the longest common subsequence. The result of the comparison are two sequences +(one for each of the compared strings/lists) consisting of subsequences that are annotated as matching or non-matching. + +For example comparing the strings in the example above will look as follows: + +```gleam +let comparison = +compare_strings( + "lucy in the sky with diamonds", + "lucy is the shy with diagrams", +) +|> io.debug() +// StringComparison( +// [ +// Match(["l", "u", "c", "y", " ", "i"]), +// NoMatch(["n"]), +// Match([" ", "t", "h", "e", " ", "s"]), +// NoMatch(["k"]), +// Match(["y", " ", "w", "i", "t", "h", " ", "d", "i", "a", "m"]), +// NoMatch(["o", "n", "d"]), +// Match(["s"]), +// ], +// [ +// Match(["l", "u", "c", "y", " ", "i"]), +// NoMatch(["s", " "]), +// Match([" ", "t", "h", "e", " ", "s"]), +// NoMatch(["h"]), +// Match(["y", " ", "w", "i", "t", "h", " ", "d", "i"]), +// NoMatch(["a", "g", "r"]), +// Match(["a", "m", "s"]), +// ], +// ) +``` + +## Styling + +This is useful information but a bit overwhelming to look at (specially for longer string) so the library +has some built in functions to display the differences using colors instead. + +Using the same example again we can style the result and print it to the console + +```gleam +let comparison = +compare_strings( + "lucy in the sky with diamonds", + "lucy is the shy with diagrams", +) +|> to_styled() +io.println(comparison.first) +io.println(comparison.second) +``` + +This will give us something similar to the output above. + +## Comparing list + +It is also possible to compare lists with elements of arbitrary types. + +```gleam +pub type Warning { + Please + Mind + The(what: String) +} + +compare_lists([Mind, The("Gap")], [Please, Mind, The("What")]) +|> io.debug() +// ListComparison( +// [Match([Mind]), NoMatch([The("Gap")])], +// [NoMatch([Please]), Match([Mind]), NoMatch([The("What")])], +// ) +``` + +## Customize styling + +The visual representation of the comparison can be customized. To do this use a `Styling` created from +the comparison that should be styled. This example uses [gleam_community/ansi](https://hexdocs.pm/gleam_community_ansi/index.html) +to highlight the non-matches in different colors. + +```gleam +let comparison = +compare_strings( + "Strings are made of smaller things", + "Things are maybe smaller string", +) +|> from_comparison() +|> highlight( + fn(first) { ansi.cyan(first) }, + fn(second) { ansi.magenta(second) }, + fn(matching) { matching }, +) +|> to_styled_comparison() +io.println(comparison.first) +io.println(comparison.second) +``` + +This will output something similar to this + +Image of two strings with highlighted differences + +### Serialization + +Furthermore it is also possible to customize the styling by changing the way that the comparison is serialized. An easy way to do +this is to use the utility function `mk_generic_serializer` which creates a serializer which some specific separator and a hook +for surrounding the result with some content. Here is a somewhat contrived example + +```gleam +let comparison = +compare_lists(["one", "two", "three"], ["two", "two", "tree"]) +|> from_comparison() +|> highlight( + fn(first) { first <> " was not found in other" }, + fn(second) { second <> " was not found in other" }, +) +|> serialize(mk_generic_serializer( + ", and ", + fn(result) { "Comparing the lists gave the following result: " <> result }, +)) +|> to_styled_comparison() +io.println(comparison.first) +io.println(comparison.second) +// Comparing the lists gave the following result: "one" was not found in other, and "two" was found in other, and "three" was not found in other +// Comparing the lists gave the following result: "two" was not found in other, and "two" was found in other, and "tree" was not found in other +``` + +### Custom serialization + +Serializers can of course have a custom implementation. The following example utilizes this together with custom highlighters, +creating a patch-like output (this is not exactly the same as patch-format since that shows the changes in relation to the original - to do +that both lists of matching/non-matching lines would need to be processed together) + +```gleam +let comparison = +compare_lists( + [ + "pub type Gap = List(EmptyString)", "", "pub type Traveler {", + " OnTrain", " OverGap(gap: Gap)", " OnPlatform", "}", + ], + [ + "pub type Traveler {", " OnTrain", " OverGap(gap: String)", + " OnPlatform", "}", + ], +) +|> from_comparison() +|> highlight( + fn(first) { "+" <> first }, + fn(second) { "-" <> second }, + fn(matching) { " " <> matching }, +) +|> serialize(fn(part) { + case part { + Part(acc, lines, highlight) -> + acc <> { + lines + |> list.map(fn(line) { highlight(line) }) + |> string.join("\n") + } <> "\n" + All(result) -> result + } +}) +|> to_styled_comparison() +io.println(comparison.first) +io.println(comparison.second) +// +pub type Gap = List(EmptyString) +// + +// pub type Traveler { +// OnTrain +// + OverGap(gap: Gap) +// OnPlatform +// } +// +// pub type Traveler { +// OnTrain +// - OverGap(gap: String) +// OnPlatform +// } +``` diff --git a/aoc2023/build/packages/gap/gleam.toml b/aoc2023/build/packages/gap/gleam.toml new file mode 100644 index 0000000..ec35329 --- /dev/null +++ b/aoc2023/build/packages/gap/gleam.toml @@ -0,0 +1,18 @@ +name = "gap" +gleam = ">= 0.32.2" +version = "1.0.1" +description = "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences." + +# Fill out these fields if you intend to generate HTML documentation or publish +# your project to the Hex package manager. +# +licences = ["Apache-2.0"] +repository = { type = "github", user = "JohnBjrk", repo = "gap" } +# links = [{ title = "Website", href = "https://gleam.run" }] + +[dependencies] +gleam_stdlib = "~> 0.32" +gleam_community_ansi = "~> 1.2" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl b/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl new file mode 100644 index 0000000..5e4b20d --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl @@ -0,0 +1,4 @@ +-record(list_comparison, { + first :: list(gap@comparison:match(list(any()))), + second :: list(gap@comparison:match(list(any()))) +}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl b/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl new file mode 100644 index 0000000..f1225dd --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl @@ -0,0 +1 @@ +-record(match, {item :: any()}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl b/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl new file mode 100644 index 0000000..742783b --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl @@ -0,0 +1 @@ +-record(no_match, {item :: any()}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl b/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl new file mode 100644 index 0000000..c0b1a75 --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl @@ -0,0 +1,4 @@ +-record(string_comparison, { + first :: list(gap@comparison:match(list(binary()))), + second :: list(gap@comparison:match(list(binary()))) +}). diff --git a/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl b/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl new file mode 100644 index 0000000..0e7c64a --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl @@ -0,0 +1 @@ +-record(styled_comparison, {first :: binary(), second :: binary()}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_All.hrl b/aoc2023/build/packages/gap/include/gap@styling_All.hrl new file mode 100644 index 0000000..c11a9a6 --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@styling_All.hrl @@ -0,0 +1 @@ +-record(all, {all :: binary()}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl b/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl new file mode 100644 index 0000000..6e073b3 --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl @@ -0,0 +1,5 @@ +-record(highlighters, { + first :: fun((binary()) -> binary()), + second :: fun((binary()) -> binary()), + matching :: fun((binary()) -> binary()) +}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Part.hrl b/aoc2023/build/packages/gap/include/gap@styling_Part.hrl new file mode 100644 index 0000000..db45796 --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@styling_Part.hrl @@ -0,0 +1,5 @@ +-record(part, { + acc :: binary(), + part :: list(any()), + highlight :: fun((binary()) -> binary()) +}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl b/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl new file mode 100644 index 0000000..a7341c6 --- /dev/null +++ b/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl @@ -0,0 +1,5 @@ +-record(styling, { + comparison :: gap@comparison:comparison(any()), + serializer :: gleam@option:option(fun((gap@styling:part(any())) -> binary())), + highlight :: gleam@option:option(gap@styling:highlighters()) +}). diff --git a/aoc2023/build/packages/gap/src/gap.app.src b/aoc2023/build/packages/gap/src/gap.app.src new file mode 100644 index 0000000..1abc7df --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap.app.src @@ -0,0 +1,13 @@ +{application, gap, [ + {vsn, "1.0.1"}, + {applications, [gleam_community_ansi, + gleam_stdlib, + gleeunit]}, + {description, "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences."}, + {modules, [gap, + gap@comparison, + gap@myers, + gap@styled_comparison, + gap@styling]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gap/src/gap.erl b/aoc2023/build/packages/gap/src/gap.erl new file mode 100644 index 0000000..827e5ce --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap.erl @@ -0,0 +1,538 @@ +-module(gap). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_styled/1, compare_strings_with_algorithm/3, compare_lists_with_algorithm/3, myers/2, compare_lists/2, compare_strings/2, lcs/2]). +-export_type([score/1]). + +-type score(GAM) :: {score, integer(), gleam@option:option(GAM)}. + +-spec to_styled(gap@comparison:comparison(any())) -> gap@styled_comparison:styled_comparison(). +to_styled(Comparison) -> + _pipe = Comparison, + _pipe@1 = gap@styling:from_comparison(_pipe), + _pipe@2 = gap@styling:highlight( + _pipe@1, + fun gap@styling:first_highlight_default/1, + fun gap@styling:second_highlight_default/1, + fun gap@styling:no_highlight/1 + ), + gap@styling:to_styled_comparison(_pipe@2). + +-spec compare_strings_with_algorithm( + binary(), + binary(), + fun((list(binary()), list(binary())) -> gap@comparison:comparison(binary())) +) -> gap@comparison:comparison(binary()). +compare_strings_with_algorithm(First, Second, Algorithm) -> + Comparison = Algorithm( + gleam@string:to_graphemes(First), + gleam@string:to_graphemes(Second) + ), + case Comparison of + {list_comparison, First@1, Second@1} -> + {string_comparison, First@1, Second@1}; + + {string_comparison, First@2, Second@2} -> + {string_comparison, First@2, Second@2} + end. + +-spec compare_lists_with_algorithm( + list(GBB), + list(GBB), + fun((list(GBB), list(GBB)) -> gap@comparison:comparison(GBB)) +) -> gap@comparison:comparison(GBB). +compare_lists_with_algorithm(First_sequence, Second_sequence, Algorithm) -> + Algorithm(First_sequence, Second_sequence). + +-spec myers(list(GBG), list(GBG)) -> gap@comparison:comparison(GBG). +myers(First_sequence, Second_sequence) -> + Edits = gap@myers:difference(First_sequence, Second_sequence), + _pipe = Edits, + _pipe@1 = gleam@list:reverse(_pipe), + gleam@list:fold( + _pipe@1, + {list_comparison, [], []}, + fun(Comparison, Edit) -> case Comparison of + {list_comparison, First, Second} -> + case Edit of + {eq, Segment} -> + {list_comparison, + [{match, Segment} | First], + [{match, Segment} | Second]}; + + {ins, Segment@1} -> + {list_comparison, + First, + [{no_match, Segment@1} | Second]}; + + {del, Segment@2} -> + {list_comparison, + [{no_match, Segment@2} | First], + Second} + end; + + {string_comparison, _, _} -> + Comparison + end end + ). + +-spec compare_lists(list(GAX), list(GAX)) -> gap@comparison:comparison(GAX). +compare_lists(First_sequence, Second_sequence) -> + myers(First_sequence, Second_sequence). + +-spec compare_strings(binary(), binary()) -> gap@comparison:comparison(binary()). +compare_strings(First, Second) -> + Comparison = compare_lists( + gleam@string:to_graphemes(First), + gleam@string:to_graphemes(Second) + ), + case Comparison of + {list_comparison, First@1, Second@1} -> + {string_comparison, First@1, Second@1}; + + {string_comparison, First@2, Second@2} -> + {string_comparison, First@2, Second@2} + end. + +-spec prepend_and_merge( + list(gap@comparison:match(list(GBO))), + gap@comparison:match(list(GBO)) +) -> list(gap@comparison:match(list(GBO))). +prepend_and_merge(Matches, Match) -> + case {Matches, Match} of + {[], _} -> + [Match]; + + {[{match, First_match} | Rest], {match, _}} -> + [{match, + begin + _pipe = erlang:element(2, Match), + gleam@list:append(_pipe, First_match) + end} | + Rest]; + + {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> + [{no_match, + begin + _pipe@1 = erlang:element(2, Match), + gleam@list:append(_pipe@1, First_match@1) + end} | + Rest@1]; + + {Matches@1, Match@1} -> + [Match@1 | Matches@1] + end. + +-spec append_and_merge( + list(gap@comparison:match(list(GBX))), + gap@comparison:match(list(GBX)) +) -> list(gap@comparison:match(list(GBX))). +append_and_merge(Matches, Match) -> + _pipe@3 = case {begin + _pipe = Matches, + gleam@list:reverse(_pipe) + end, + Match} of + {[], _} -> + [Match]; + + {[{match, First_match} | Rest], {match, _}} -> + [{match, + begin + _pipe@1 = First_match, + gleam@list:append(_pipe@1, erlang:element(2, Match)) + end} | + Rest]; + + {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> + [{no_match, + begin + _pipe@2 = First_match@1, + gleam@list:append(_pipe@2, erlang:element(2, Match)) + end} | + Rest@1]; + + {Matches@1, Match@1} -> + [Match@1 | Matches@1] + end, + gleam@list:reverse(_pipe@3). + +-spec collect_matches( + gleam@map:map_(GFY, any()), + list(GCH), + fun((GFY) -> integer()) +) -> list(gap@comparison:match(list(GCH))). +collect_matches(Tracking, Str, Extract_fun) -> + Matching_indexes = begin + _pipe = gleam@map:keys(Tracking), + _pipe@1 = gleam@list:map(_pipe, Extract_fun), + gleam@set:from_list(_pipe@1) + end, + Matches = begin + _pipe@2 = Str, + gleam@list:index_map( + _pipe@2, + fun(Index, Item) -> + case gleam@set:contains(Matching_indexes, Index) of + true -> + {match, Item}; + + false -> + {no_match, Item} + end + end + ) + end, + _pipe@3 = Matches, + _pipe@4 = gleam@list:chunk(_pipe@3, fun(Match) -> case Match of + {match, _} -> + true; + + {no_match, _} -> + false + end end), + gleam@list:map(_pipe@4, fun(Match_list) -> case Match_list of + [{match, _} | _] -> + {match, + gleam@list:filter_map( + Match_list, + fun(Match@1) -> case Match@1 of + {match, Item@1} -> + {ok, Item@1}; + + {no_match, _} -> + {error, nil} + end end + )}; + + [{no_match, _} | _] -> + {no_match, + gleam@list:filter_map( + Match_list, + fun(Match@2) -> case Match@2 of + {no_match, Item@2} -> + {ok, Item@2}; + + {match, _} -> + {error, nil} + end end + )} + end end). + +-spec back_track( + gleam@map:map_({integer(), integer()}, score(GCL)), + integer(), + integer(), + list({{integer(), integer()}, GCL}) +) -> list({{integer(), integer()}, GCL}). +back_track(Diff_map, First_index, Second_index, Stack) -> + case (First_index =:= 0) orelse (Second_index =:= 0) of + true -> + This_score = begin + _pipe = gleam@map:get(Diff_map, {First_index, Second_index}), + gleam@result:unwrap(_pipe, {score, 0, none}) + end, + case This_score of + {score, _, {some, Item}} -> + [{{First_index, Second_index}, Item} | Stack]; + + _ -> + case {First_index, Second_index} of + {0, A} when A > 0 -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + {A@1, 0} when A@1 > 0 -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + {0, 0} -> + Stack; + + {_, _} -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ) + end + end; + + false -> + This_score@1 = begin + _pipe@1 = gleam@map:get(Diff_map, {First_index, Second_index}), + gleam@result:unwrap(_pipe@1, {score, 0, none}) + end, + case This_score@1 of + {score, _, {some, Item@1}} -> + back_track( + Diff_map, + First_index - 1, + Second_index - 1, + [{{First_index, Second_index}, Item@1} | Stack] + ); + + {score, _, none} -> + Up = begin + _pipe@2 = gleam@map:get( + Diff_map, + {First_index, Second_index - 1} + ), + gleam@result:unwrap(_pipe@2, {score, 0, none}) + end, + Back = begin + _pipe@3 = gleam@map:get( + Diff_map, + {First_index - 1, Second_index} + ), + gleam@result:unwrap(_pipe@3, {score, 0, none}) + end, + case gleam@int:compare( + erlang:element(2, Up), + erlang:element(2, Back) + ) of + gt -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + lt -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + eq -> + case {First_index, Second_index} of + {0, A@2} when A@2 > 0 -> + back_track( + Diff_map, + First_index, + Second_index - 1, + Stack + ); + + {A@3, 0} when A@3 > 0 -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ); + + {0, 0} -> + Stack; + + {_, _} -> + back_track( + Diff_map, + First_index - 1, + Second_index, + Stack + ) + end + end + end + end. + +-spec build_diff_map( + GCR, + integer(), + GCR, + integer(), + gleam@map:map_({integer(), integer()}, score(GCR)) +) -> gleam@map:map_({integer(), integer()}, score(GCR)). +build_diff_map(First_item, First_index, Second_item, Second_index, Diff_map) -> + Prev_score = begin + _pipe = gleam@map:get(Diff_map, {First_index - 1, Second_index - 1}), + gleam@result:unwrap(_pipe, {score, 0, none}) + end, + Derived_score_up = begin + _pipe@1 = Diff_map, + _pipe@2 = gleam@map:get(_pipe@1, {First_index, Second_index - 1}), + gleam@result:unwrap(_pipe@2, {score, 0, none}) + end, + Derived_score_back = begin + _pipe@3 = Diff_map, + _pipe@4 = gleam@map:get(_pipe@3, {First_index - 1, Second_index}), + gleam@result:unwrap(_pipe@4, {score, 0, none}) + end, + Derived_score = gleam@int:max( + erlang:element(2, Derived_score_up), + erlang:element(2, Derived_score_back) + ), + This_score = case First_item =:= Second_item of + true -> + {score, erlang:element(2, Prev_score) + 1, {some, First_item}}; + + false -> + {score, Derived_score, none} + end, + _pipe@5 = Diff_map, + gleam@map:insert(_pipe@5, {First_index, Second_index}, This_score). + +-spec lcs(list(GBK), list(GBK)) -> gap@comparison:comparison(GBK). +lcs(First_sequence, Second_sequence) -> + Leading_matches = begin + _pipe = gleam@list:zip(First_sequence, Second_sequence), + _pipe@1 = gleam@list:take_while( + _pipe, + fun(Pair) -> erlang:element(1, Pair) =:= erlang:element(2, Pair) end + ), + gleam@list:map(_pipe@1, fun gleam@pair:first/1) + end, + Num_leading_matches = gleam@list:length(Leading_matches), + Trailing_matches = begin + _pipe@2 = gleam@list:zip( + gleam@list:reverse(First_sequence), + gleam@list:reverse(Second_sequence) + ), + _pipe@3 = gleam@list:take_while( + _pipe@2, + fun(Pair@1) -> + erlang:element(1, Pair@1) =:= erlang:element(2, Pair@1) + end + ), + _pipe@4 = gleam@list:map(_pipe@3, fun gleam@pair:first/1), + gleam@list:reverse(_pipe@4) + end, + Num_trailing_matches = gleam@list:length(Trailing_matches), + First_sequence_to_diff = begin + _pipe@5 = First_sequence, + _pipe@6 = gleam@list:drop(_pipe@5, Num_leading_matches), + gleam@list:take( + _pipe@6, + (gleam@list:length(First_sequence) - Num_leading_matches) - Num_trailing_matches + ) + end, + Second_sequence_to_diff = begin + _pipe@7 = Second_sequence, + _pipe@8 = gleam@list:drop(_pipe@7, Num_leading_matches), + gleam@list:take( + _pipe@8, + (gleam@list:length(Second_sequence) - Num_leading_matches) - Num_trailing_matches + ) + end, + Diff_map@2 = begin + _pipe@9 = Second_sequence_to_diff, + gleam@list:index_fold( + _pipe@9, + gleam@map:new(), + fun(Diff_map, Item_second, Index_second) -> + _pipe@10 = First_sequence_to_diff, + gleam@list:index_fold( + _pipe@10, + Diff_map, + fun(Diff_map@1, Item_first, Index_first) -> + build_diff_map( + Item_first, + Index_first, + Item_second, + Index_second, + Diff_map@1 + ) + end + ) + end + ) + end, + {First_segments@1, Second_segments@1} = case {First_sequence_to_diff, + Second_sequence_to_diff} of + {[], []} -> + {[], []}; + + {First_matching, []} -> + {[{no_match, First_matching}], []}; + + {[], Second_matching} -> + {[], [{no_match, Second_matching}]}; + + {First_sequence_to_diff@1, Second_sequence_to_diff@1} -> + Tracking = begin + _pipe@11 = back_track( + Diff_map@2, + gleam@list:length(First_sequence_to_diff@1) - 1, + gleam@list:length(Second_sequence_to_diff@1) - 1, + [] + ), + gleam@map:from_list(_pipe@11) + end, + First_segments = collect_matches( + Tracking, + First_sequence_to_diff@1, + fun(Key) -> + {First, _} = Key, + First + end + ), + Second_segments = collect_matches( + Tracking, + Second_sequence_to_diff@1, + fun(Key@1) -> + {_, Second} = Key@1, + Second + end + ), + {First_segments, Second_segments} + end, + {First_segments_with_leading_trailing, + Second_segments_with_leading_trailing} = case {Leading_matches, + Trailing_matches} of + {[], []} -> + {First_segments@1, Second_segments@1}; + + {[], Trailing_matches@1} -> + {begin + _pipe@12 = First_segments@1, + append_and_merge(_pipe@12, {match, Trailing_matches@1}) + end, + begin + _pipe@13 = Second_segments@1, + append_and_merge(_pipe@13, {match, Trailing_matches@1}) + end}; + + {Leading_matches@1, []} -> + {begin + _pipe@14 = First_segments@1, + prepend_and_merge(_pipe@14, {match, Leading_matches@1}) + end, + begin + _pipe@15 = Second_segments@1, + prepend_and_merge(_pipe@15, {match, Leading_matches@1}) + end}; + + {Leading_matches@2, Trailing_matches@2} -> + {begin + _pipe@16 = First_segments@1, + _pipe@17 = prepend_and_merge( + _pipe@16, + {match, Leading_matches@2} + ), + append_and_merge(_pipe@17, {match, Trailing_matches@2}) + end, + begin + _pipe@18 = Second_segments@1, + _pipe@19 = prepend_and_merge( + _pipe@18, + {match, Leading_matches@2} + ), + append_and_merge(_pipe@19, {match, Trailing_matches@2}) + end} + end, + {list_comparison, + First_segments_with_leading_trailing, + Second_segments_with_leading_trailing}. diff --git a/aoc2023/build/packages/gap/src/gap.gleam b/aoc2023/build/packages/gap/src/gap.gleam new file mode 100644 index 0000000..7eb0e7f --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap.gleam @@ -0,0 +1,438 @@ +import gleam/string +import gleam/list +import gleam/pair +import gleam/map.{type Map} +import gleam/result +import gleam/option.{type Option, None, Some} +import gleam/int +import gleam/order.{Eq, Gt, Lt} +import gleam/set +import gap/comparison.{ + type Comparison, type Match, type Segments, ListComparison, Match, NoMatch, + StringComparison, +} +import gap/styled_comparison.{type StyledComparison} +import gap/styling.{ + first_highlight_default, from_comparison, highlight, no_highlight, + second_highlight_default, to_styled_comparison, +} +import gap/myers.{type Edit, Del, Eq as MyerEq, Ins} + +type MatchedItem(a) = + #(#(Int, Int), a) + +type Score(a) { + Score(value: Int, item: Option(a)) +} + +type DiffMap(a) = + Map(#(Int, Int), Score(a)) + +/// Creates a `StyledComparison` from `Comparison` using default values for +/// highting and serialization. +/// +/// ## Example +/// +/// ```gleam +/// > compare_strings("abc", "abe") |> to_styled() +/// ``` +/// This will return a `StyledComparison(first, second)` where "c" in `first` is green +/// and "e" in `second` is red. +pub fn to_styled(comparison: Comparison(a)) -> StyledComparison { + comparison + |> from_comparison() + |> highlight(first_highlight_default, second_highlight_default, no_highlight) + |> to_styled_comparison() +} + +/// Compare two string and return a `StringComparison` which will be styled as string +/// when passed to `to_styled` +/// +/// Will use the default `myers` algorithm +pub fn compare_strings(first: String, second: String) -> Comparison(String) { + let comparison = + compare_lists(string.to_graphemes(first), string.to_graphemes(second)) + case comparison { + ListComparison(first, second) -> StringComparison(first, second) + StringComparison(first, second) -> StringComparison(first, second) + } +} + +/// Compare two string and return a `StringComparison` which will be styled as string +/// when passed to `to_styled` +/// +/// Algorithm can be used to select either `myers` or the legacy `lcs` algorithm +pub fn compare_strings_with_algorithm( + first: String, + second: String, + algorithm, +) -> Comparison(String) { + let comparison = + algorithm(string.to_graphemes(first), string.to_graphemes(second)) + case comparison { + ListComparison(first, second) -> StringComparison(first, second) + StringComparison(first, second) -> StringComparison(first, second) + } +} + +/// Compare two lists and return a `ListComparison` which will be styled as list +/// when passed to `to_styled` +/// +/// Will use the default `myers` algorithm +pub fn compare_lists( + first_sequence: List(a), + second_sequence: List(a), +) -> Comparison(a) { + myers(first_sequence, second_sequence) +} + +/// Compare two lists and return a `ListComparison` which will be styled as list +/// when passed to `to_styled` +/// +/// Algorithm can be used to select either `myers` or the legacy `lcs` algorithm +pub fn compare_lists_with_algorithm( + first_sequence: List(a), + second_sequence: List(a), + algorithm, +) -> Comparison(a) { + algorithm(first_sequence, second_sequence) +} + +/// An adapter for the the `myers` algorithm. +/// Intended to be use as an argument to `compare_strings_with_algorithm` or +/// `compare_lists_with_algorithm` +pub fn myers(first_sequence: List(a), second_sequence: List(a)) -> Comparison(a) { + let edits = myers.difference(first_sequence, second_sequence) + edits + |> list.reverse() + |> list.fold( + ListComparison([], []), + fn(comparison: Comparison(a), edit: Edit(a)) { + case comparison { + ListComparison(first, second) -> { + case edit { + MyerEq(segment) -> + ListComparison( + [Match(segment), ..first], + [Match(segment), ..second], + ) + Ins(segment) -> ListComparison(first, [NoMatch(segment), ..second]) + Del(segment) -> ListComparison([NoMatch(segment), ..first], second) + } + } + StringComparison(..) -> comparison + } + }, + ) +} + +/// An adapter for the the `lcs` (longest common subsequence) algorithm. +/// Intended to be use as an argument to `compare_strings_with_algorithm` or +/// `compare_lists_with_algorithm` +pub fn lcs(first_sequence: List(a), second_sequence: List(a)) -> Comparison(a) { + let leading_matches = + list.zip(first_sequence, second_sequence) + |> list.take_while(fn(pair) { pair.0 == pair.1 }) + |> list.map(pair.first) + let num_leading_matches = list.length(leading_matches) + let trailing_matches = + list.zip(list.reverse(first_sequence), list.reverse(second_sequence)) + |> list.take_while(fn(pair) { pair.0 == pair.1 }) + |> list.map(pair.first) + |> list.reverse() + let num_trailing_matches = list.length(trailing_matches) + let first_sequence_to_diff = + first_sequence + |> list.drop(num_leading_matches) + |> list.take( + list.length(first_sequence) - num_leading_matches - num_trailing_matches, + ) + let second_sequence_to_diff = + second_sequence + |> list.drop(num_leading_matches) + |> list.take( + list.length(second_sequence) - num_leading_matches - num_trailing_matches, + ) + + let diff_map = + second_sequence_to_diff + |> list.index_fold( + map.new(), + fn(diff_map, item_second, index_second) { + first_sequence_to_diff + |> list.index_fold( + diff_map, + fn(diff_map, item_first, index_first) { + build_diff_map( + item_first, + index_first, + item_second, + index_second, + diff_map, + ) + }, + ) + }, + ) + let #(first_segments, second_segments) = case + first_sequence_to_diff, + second_sequence_to_diff + { + [], [] -> #([], []) + first_matching, [] -> #([NoMatch(first_matching)], []) + [], second_matching -> #([], [NoMatch(second_matching)]) + first_sequence_to_diff, second_sequence_to_diff -> { + let tracking = + back_track( + diff_map, + list.length(first_sequence_to_diff) - 1, + list.length(second_sequence_to_diff) - 1, + [], + ) + |> map.from_list() + + let first_segments = + collect_matches( + tracking, + first_sequence_to_diff, + fn(key) { + let #(first, _) = key + first + }, + ) + let second_segments = + collect_matches( + tracking, + second_sequence_to_diff, + fn(key) { + let #(_, second) = key + second + }, + ) + #(first_segments, second_segments) + } + } + + let #( + first_segments_with_leading_trailing, + second_segments_with_leading_trailing, + ) = case leading_matches, trailing_matches { + [], [] -> #(first_segments, second_segments) + [], trailing_matches -> #( + first_segments + |> append_and_merge(Match(trailing_matches)), + second_segments + |> append_and_merge(Match(trailing_matches)), + ) + leading_matches, [] -> #( + first_segments + |> prepend_and_merge(Match(leading_matches)), + second_segments + |> prepend_and_merge(Match(leading_matches)), + ) + leading_matches, trailing_matches -> #( + first_segments + |> prepend_and_merge(Match(leading_matches)) + |> append_and_merge(Match(trailing_matches)), + second_segments + |> prepend_and_merge(Match(leading_matches)) + |> append_and_merge(Match(trailing_matches)), + ) + } + + ListComparison( + first_segments_with_leading_trailing, + second_segments_with_leading_trailing, + ) +} + +fn prepend_and_merge( + matches: List(Match(List(a))), + match: Match(List(a)), +) -> List(Match(List(a))) { + case matches, match { + [], _ -> [match] + [Match(first_match), ..rest], Match(_) -> [ + Match( + match.item + |> list.append(first_match), + ), + ..rest + ] + [NoMatch(first_match), ..rest], NoMatch(_) -> [ + NoMatch( + match.item + |> list.append(first_match), + ), + ..rest + ] + matches, match -> [match, ..matches] + } +} + +fn append_and_merge( + matches: List(Match(List(a))), + match: Match(List(a)), +) -> List(Match(List(a))) { + case + matches + |> list.reverse(), + match + { + [], _ -> [match] + [Match(first_match), ..rest], Match(_) -> [ + Match( + first_match + |> list.append(match.item), + ), + ..rest + ] + [NoMatch(first_match), ..rest], NoMatch(_) -> [ + NoMatch( + first_match + |> list.append(match.item), + ), + ..rest + ] + matches, match -> [match, ..matches] + } + |> list.reverse() +} + +fn collect_matches(tracking, str: List(a), extract_fun) -> Segments(a) { + let matching_indexes = + map.keys(tracking) + |> list.map(extract_fun) + |> set.from_list() + + let matches = + str + |> list.index_map(fn(index, item) { + case set.contains(matching_indexes, index) { + True -> Match(item) + False -> NoMatch(item) + } + }) + + matches + |> list.chunk(fn(match) { + case match { + Match(_) -> True + NoMatch(_) -> False + } + }) + |> list.map(fn(match_list) { + case match_list { + [Match(_), ..] -> + Match(list.filter_map( + match_list, + fn(match) { + case match { + Match(item) -> Ok(item) + NoMatch(_) -> Error(Nil) + } + }, + )) + [NoMatch(_), ..] -> + NoMatch(list.filter_map( + match_list, + fn(match) { + case match { + NoMatch(item) -> Ok(item) + Match(_) -> Error(Nil) + } + }, + )) + } + }) +} + +fn back_track( + diff_map: DiffMap(a), + first_index: Int, + second_index: Int, + stack: List(MatchedItem(a)), +) -> List(MatchedItem(a)) { + case first_index == 0 || second_index == 0 { + True -> { + let this_score = + map.get(diff_map, #(first_index, second_index)) + |> result.unwrap(Score(0, None)) + case this_score { + Score(_, Some(item)) -> [#(#(first_index, second_index), item), ..stack] + _ -> + case first_index, second_index { + 0, a if a > 0 -> + back_track(diff_map, first_index, second_index - 1, stack) + a, 0 if a > 0 -> + back_track(diff_map, first_index - 1, second_index, stack) + 0, 0 -> stack + _, _ -> back_track(diff_map, first_index - 1, second_index, stack) + } + } + } + False -> { + let this_score = + map.get(diff_map, #(first_index, second_index)) + |> result.unwrap(Score(0, None)) + case this_score { + Score(_, Some(item)) -> + back_track( + diff_map, + first_index - 1, + second_index - 1, + [#(#(first_index, second_index), item), ..stack], + ) + Score(_, None) -> { + let up = + map.get(diff_map, #(first_index, second_index - 1)) + |> result.unwrap(Score(0, None)) + let back = + map.get(diff_map, #(first_index - 1, second_index)) + |> result.unwrap(Score(0, None)) + case int.compare(up.value, back.value) { + Gt -> back_track(diff_map, first_index, second_index - 1, stack) + Lt -> back_track(diff_map, first_index - 1, second_index, stack) + Eq -> + case first_index, second_index { + 0, a if a > 0 -> + back_track(diff_map, first_index, second_index - 1, stack) + a, 0 if a > 0 -> + back_track(diff_map, first_index - 1, second_index, stack) + 0, 0 -> stack + _, _ -> + back_track(diff_map, first_index - 1, second_index, stack) + } + } + } + } + } + } +} + +fn build_diff_map( + first_item: a, + first_index: Int, + second_item: a, + second_index: Int, + diff_map: DiffMap(a), +) -> DiffMap(a) { + let prev_score = + map.get(diff_map, #(first_index - 1, second_index - 1)) + |> result.unwrap(Score(0, None)) + let derived_score_up = + diff_map + |> map.get(#(first_index, second_index - 1)) + |> result.unwrap(Score(0, None)) + let derived_score_back = + diff_map + |> map.get(#(first_index - 1, second_index)) + |> result.unwrap(Score(0, None)) + let derived_score = int.max(derived_score_up.value, derived_score_back.value) + let this_score = case first_item == second_item { + True -> Score(prev_score.value + 1, Some(first_item)) + False -> Score(derived_score, None) + } + diff_map + |> map.insert(#(first_index, second_index), this_score) +} diff --git a/aoc2023/build/packages/gap/src/gap/comparison.gleam b/aoc2023/build/packages/gap/src/gap/comparison.gleam new file mode 100644 index 0000000..da30c29 --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap/comparison.gleam @@ -0,0 +1,22 @@ +/// Comparison of two strings or lists +/// +/// The comparison consists of two lists of matched segments. The segments represent +/// a sequence of succeeding matches or non-matches (up until the next match/non-match) +/// +/// For lists the elements in the segment will be same as the elements in the list, and +/// for strings the elements will be the graphemes of the string +pub type Comparison(a) { + ListComparison(first: Segments(a), second: Segments(a)) + StringComparison(first: Segments(String), second: Segments(String)) +} + +/// Indicating that the item has a matching (`Match`) or no matching (`NoMatch`) item in the +/// other string/list +pub type Match(a) { + Match(item: a) + NoMatch(item: a) +} + +/// List of segments of succeeding matches / non-matches +pub type Segments(a) = + List(Match(List(a))) diff --git a/aoc2023/build/packages/gap/src/gap/myers.gleam b/aoc2023/build/packages/gap/src/gap/myers.gleam new file mode 100644 index 0000000..f0b8ddc --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap/myers.gleam @@ -0,0 +1,122 @@ +import gleam/list + +pub type Edit(a) { + Eq(List(a)) + Del(List(a)) + Ins(List(a)) +} + +type Path(a) { + Path(x: Int, y: Int, list1: List(a), list2: List(a), edits: List(Edit(a))) +} + +type Status(a) { + Done(edits: List(Edit(a))) + Next(paths: List(Path(a))) + Cont(path: Path(a)) +} + +/// The algorithm is outlined in the +/// "An O(ND) Difference Algorithm and Its Variations" paper by E. Myers. +/// +/// Adapted from the implementation of "myers_difference" in Elixirs List module +pub fn difference(list1: List(a), list2: List(a)) -> List(Edit(a)) { + let path = Path(0, 0, list1, list2, []) + find_script(0, list.length(list1) + list.length(list2), [path]) +} + +fn find_script(envelope: Int, max: Int, paths: List(Path(a))) { + case envelope > max { + True -> [] + False -> { + case each_diagonal(-envelope, envelope, paths, []) { + Done(edits) -> compact_reverse(edits, []) + Next(paths) -> find_script(envelope + 1, max, paths) + _ -> panic as "Didn't expect a Cont here" + } + } + } +} + +fn compact_reverse(edits: List(Edit(a)), acc: List(Edit(a))) -> List(Edit(a)) { + case edits, acc { + [], acc -> acc + [Eq(elem), ..rest], [Eq(result), ..acc_rest] -> + compact_reverse(rest, [Eq(list.flatten([elem, result])), ..acc_rest]) + [Del(elem), ..rest], [Del(result), ..acc_rest] -> + compact_reverse(rest, [Del(list.flatten([elem, result])), ..acc_rest]) + [Ins(elem), ..rest], [Ins(result), ..acc_rest] -> + compact_reverse(rest, [Ins(list.flatten([elem, result])), ..acc_rest]) + [Eq(elem), ..rest], acc -> compact_reverse(rest, [Eq(elem), ..acc]) + [Del(elem), ..rest], acc -> compact_reverse(rest, [Del(elem), ..acc]) + [Ins(elem), ..rest], acc -> compact_reverse(rest, [Ins(elem), ..acc]) + } +} + +fn each_diagonal( + diag: Int, + limit: Int, + paths: List(Path(a)), + next_paths: List(Path(a)), +) -> Status(a) { + case diag > limit { + True -> Next(list.reverse(next_paths)) + False -> { + let #(path, rest) = proceed_path(diag, limit, paths) + case follow_snake(path) { + Cont(path) -> each_diagonal(diag + 2, limit, rest, [path, ..next_paths]) + other -> other + } + } + } +} + +fn proceed_path( + diag: Int, + limit: Int, + paths: List(Path(a)), +) -> #(Path(a), List(Path(a))) { + let neg_limit = -limit + case diag, limit, paths { + 0, 0, [path] -> #(path, []) + diag, _limit, [path, ..] as paths if diag == neg_limit -> #( + move_down(path), + paths, + ) + diag, limit, [path, ..] as paths if diag == limit -> #( + move_right(path), + paths, + ) + _diag, _limit, [path1, path2, ..rest] -> { + case path1.y > path2.y { + True -> #(move_right(path1), [path2, ..rest]) + False -> #(move_down(path2), [path2, ..rest]) + } + } + } +} + +fn move_right(path: Path(a)) -> Path(a) { + case path { + Path(x, y, list1, [elem, ..rest], edits) -> + Path(x + 1, y, list1, rest, [Ins([elem]), ..edits]) + Path(x, y, list1, [], edits) -> Path(x + 1, y, list1, [], edits) + } +} + +fn move_down(path: Path(a)) -> Path(a) { + case path { + Path(x, y, [elem, ..rest], list2, edits) -> + Path(x, y + 1, rest, list2, [Del([elem]), ..edits]) + Path(x, y, [], list2, edits) -> Path(x, y + 1, [], list2, edits) + } +} + +fn follow_snake(path: Path(a)) -> Status(a) { + case path { + Path(x, y, [elem1, ..rest1], [elem2, ..rest2], edits) if elem1 == elem2 -> + follow_snake(Path(x + 1, y + 1, rest1, rest2, [Eq([elem1]), ..edits])) + Path(_x, _y, [], [], edits) -> Done(edits) + _ -> Cont(path) + } +} diff --git a/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam b/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam new file mode 100644 index 0000000..7103c2e --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam @@ -0,0 +1,4 @@ +/// A comparison where the parts have been styled (serialized and highlighted) +pub type StyledComparison { + StyledComparison(first: String, second: String) +} diff --git a/aoc2023/build/packages/gap/src/gap/styling.gleam b/aoc2023/build/packages/gap/src/gap/styling.gleam new file mode 100644 index 0000000..623ae8a --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap/styling.gleam @@ -0,0 +1,233 @@ +import gleam/option.{type Option, None, Some} +import gleam/list +import gleam/string +import gleam_community/ansi +import gap/comparison.{ + type Comparison, type Segments, ListComparison, Match, NoMatch, + StringComparison, +} +import gap/styled_comparison.{type StyledComparison, StyledComparison} + +/// The `Highlighter`takes a string representation of the item that was not matching +/// and should return a string representation that can be used to visually indicate that +/// it is a non-matching item. +/// +/// The default implementation of the highlighters uses the +/// [gleam_community/ansi](https://hexdocs.pm/gleam_community_ansi/index.html) library +/// to set a different color for the item, but any type if indication can be used as long +/// as it returns a valid string +pub type Highlighter = + fn(String) -> String + +/// `Part` is used to indicate to a custom serializer if it should produce a serialization +/// based on a segment with items or the final string that contains already serialized segments +pub type Part(a) { + /// `acc` the already serialized part of the result, `part` is the current segment that should be serialized and appended and `highlighter` is the `Highlighter` that can be used to indicate non-matching items + Part(acc: String, part: List(a), highlight: Highlighter) + /// `all` is a string representing all serialized segments. This can be useful if some string should be prepended/appended to the final result + All(all: String) +} + +/// A `Serializer`can be used to create string representation of the comparison results +/// +/// See [serialize](#serialize) for adding custom serializers and [mk_generic_serializer](#mk_generic_serializer) +pub type Serializer(a) = + fn(Part(a)) -> String + +/// Highlighters to use for indicating matches / non-matches +/// +/// `first` is used to highlight non-matches in the first string/list +/// `second` is used to highlight non-matches in the second string/list +/// `matching` is used to highlight matches in the both strings/lists +pub type Highlighters { + Highlighters(first: Highlighter, second: Highlighter, matching: Highlighter) +} + +/// Styling of a `Comparison` +/// +/// See [from_comparison](#from_comparison) +pub opaque type Styling(a) { + Styling( + comparison: Comparison(a), + serializer: Option(Serializer(a)), + highlight: Option(Highlighters), + ) +} + +/// Create a new `Styling` from a `Comparison` +/// +/// The `Styling` can be customized by adding highlighters and a serializer +/// See [highlight](#highlight) and [serialize](#serialize) +pub fn from_comparison(comparison: Comparison(a)) -> Styling(a) { + Styling(comparison, None, None) +} + +/// Add highlighters to the `Styling` +/// +/// The highlighters are used to mark the matching/non-matching items in the +/// first/second list/string +pub fn highlight( + styling: Styling(a), + first: Highlighter, + second: Highlighter, + matching: Highlighter, +) -> Styling(a) { + Styling(..styling, highlight: Some(Highlighters(first, second, matching))) +} + +/// Add a serializer to the `Styling` +/// +/// The serializer is used to create string representation of the items in the segments of the `Comparison` +/// See [Part](#part) for details +/// +/// > **NOTE:** `StringComparison` will always use the default string serializer (concatenating the graphemes). +/// > If there is a need for custom serialization of `StringComparison` convert the string to a list of +/// > graphemes and treat it as a `ListComparison` +pub fn serialize(styling: Styling(a), serializer: Serializer(a)) -> Styling(a) { + Styling(..styling, serializer: Some(serializer)) +} + +/// Creates a styled comparison using either custom highlighters/serializer if they where added or default +/// highlighters and/or serializer +pub fn to_styled_comparison(styling: Styling(a)) -> StyledComparison { + let highlight = + styling.highlight + |> option.unwrap(Highlighters( + first_highlight_default, + second_highlight_default, + no_highlight, + )) + case styling.comparison { + StringComparison(first, second) -> + to_strings( + first, + second, + // NOTE: Using string serializer here because otherwise we need to have a specific string serializer on the styling + string_serializer, + highlight.first, + highlight.second, + highlight.matching, + ) + ListComparison(first, second) -> + to_strings( + first, + second, + option.unwrap(styling.serializer, generic_serializer), + highlight.first, + highlight.second, + highlight.matching, + ) + } +} + +/// Default highlighter for the first string/list in the comparison +pub fn first_highlight_default(string: String) -> String { + case string { + " " -> + string + |> ansi.underline() + |> ansi.bold() + |> ansi.green() + + _ -> + string + |> ansi.green() + |> ansi.bold() + } +} + +/// Default highlighter for the second string/list in the comparison +pub fn second_highlight_default(string: String) -> String { + case string { + " " -> + string + |> ansi.underline() + |> ansi.bold() + |> ansi.red() + + _ -> + string + |> ansi.red() + |> ansi.bold() + } +} + +/// Default highlighter used for matching items +pub fn no_highlight(string: String) -> String { + string +} + +fn string_serializer(part: Part(String)) -> String { + case part { + Part(acc, sequence, highlight) -> + acc <> { + sequence + |> list.map(highlight) + |> string.join("") + } + All(string) -> string + } +} + +fn generic_serializer(part: Part(a)) -> String { + mk_generic_serializer(", ", fn(all) { "[" <> all <> "]" })(part) +} + +/// Creates a generic serializer that uses `separator` between all items and calls +/// `around` for possibility to prepend/append strings to the final result +pub fn mk_generic_serializer(separator: String, around: fn(String) -> String) { + fn(part) { + case part { + Part(acc, sequence, highlight) -> { + let segment_separator = case acc { + "" -> "" + _ -> separator + } + acc <> segment_separator <> { + sequence + |> list.map(string.inspect) + |> list.map(highlight) + |> string.join(separator) + } + } + All(string) -> around(string) + } + } +} + +fn to_strings( + first: Segments(a), + second: Segments(a), + serializer: Serializer(a), + first_highlight: Highlighter, + second_highlight: Highlighter, + no_highlight: Highlighter, +) -> StyledComparison { + let first_styled = + first + |> list.fold( + "", + fn(str, match) { + case match { + Match(item) -> serializer(Part(str, item, no_highlight)) + NoMatch(item) -> serializer(Part(str, item, first_highlight)) + } + }, + ) + let second_styled = + second + |> list.fold( + "", + fn(str, match) { + case match { + Match(item) -> serializer(Part(str, item, no_highlight)) + NoMatch(item) -> serializer(Part(str, item, second_highlight)) + } + }, + ) + + StyledComparison( + serializer(All(first_styled)), + serializer(All(second_styled)), + ) +} diff --git a/aoc2023/build/packages/gap/src/gap@comparison.erl b/aoc2023/build/packages/gap/src/gap@comparison.erl new file mode 100644 index 0000000..36bd1c3 --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap@comparison.erl @@ -0,0 +1,15 @@ +-module(gap@comparison). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([comparison/1, match/1]). + +-type comparison(FQT) :: {list_comparison, + list(match(list(FQT))), + list(match(list(FQT)))} | + {string_comparison, + list(match(list(binary()))), + list(match(list(binary())))}. + +-type match(FQU) :: {match, FQU} | {no_match, FQU}. + + diff --git a/aoc2023/build/packages/gap/src/gap@myers.erl b/aoc2023/build/packages/gap/src/gap@myers.erl new file mode 100644 index 0000000..6a8ad35 --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap@myers.erl @@ -0,0 +1,156 @@ +-module(gap@myers). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([difference/2]). +-export_type([edit/1, path/1, status/1]). + +-type edit(FUV) :: {eq, list(FUV)} | {del, list(FUV)} | {ins, list(FUV)}. + +-type path(FUW) :: {path, + integer(), + integer(), + list(FUW), + list(FUW), + list(edit(FUW))}. + +-type status(FUX) :: {done, list(edit(FUX))} | + {next, list(path(FUX))} | + {cont, path(FUX)}. + +-spec compact_reverse(list(edit(FVH)), list(edit(FVH))) -> list(edit(FVH)). +compact_reverse(Edits, Acc) -> + case {Edits, Acc} of + {[], Acc@1} -> + Acc@1; + + {[{eq, Elem} | Rest], [{eq, Result} | Acc_rest]} -> + compact_reverse( + Rest, + [{eq, gleam@list:flatten([Elem, Result])} | Acc_rest] + ); + + {[{del, Elem@1} | Rest@1], [{del, Result@1} | Acc_rest@1]} -> + compact_reverse( + Rest@1, + [{del, gleam@list:flatten([Elem@1, Result@1])} | Acc_rest@1] + ); + + {[{ins, Elem@2} | Rest@2], [{ins, Result@2} | Acc_rest@2]} -> + compact_reverse( + Rest@2, + [{ins, gleam@list:flatten([Elem@2, Result@2])} | Acc_rest@2] + ); + + {[{eq, Elem@3} | Rest@3], Acc@2} -> + compact_reverse(Rest@3, [{eq, Elem@3} | Acc@2]); + + {[{del, Elem@4} | Rest@4], Acc@3} -> + compact_reverse(Rest@4, [{del, Elem@4} | Acc@3]); + + {[{ins, Elem@5} | Rest@5], Acc@4} -> + compact_reverse(Rest@5, [{ins, Elem@5} | Acc@4]) + end. + +-spec move_right(path(FWA)) -> path(FWA). +move_right(Path) -> + case Path of + {path, X, Y, List1, [Elem | Rest], Edits} -> + {path, X + 1, Y, List1, Rest, [{ins, [Elem]} | Edits]}; + + {path, X@1, Y@1, List1@1, [], Edits@1} -> + {path, X@1 + 1, Y@1, List1@1, [], Edits@1} + end. + +-spec move_down(path(FWD)) -> path(FWD). +move_down(Path) -> + case Path of + {path, X, Y, [Elem | Rest], List2, Edits} -> + {path, X, Y + 1, Rest, List2, [{del, [Elem]} | Edits]}; + + {path, X@1, Y@1, [], List2@1, Edits@1} -> + {path, X@1, Y@1 + 1, [], List2@1, Edits@1} + end. + +-spec proceed_path(integer(), integer(), list(path(FVU))) -> {path(FVU), + list(path(FVU))}. +proceed_path(Diag, Limit, Paths) -> + Neg_limit = - Limit, + case {Diag, Limit, Paths} of + {0, 0, [Path]} -> + {Path, []}; + + {Diag@1, _, [Path@1 | _] = Paths@1} when Diag@1 =:= Neg_limit -> + {move_down(Path@1), Paths@1}; + + {Diag@2, Limit@1, [Path@2 | _] = Paths@2} when Diag@2 =:= Limit@1 -> + {move_right(Path@2), Paths@2}; + + {_, _, [Path1, Path2 | Rest]} -> + case erlang:element(3, Path1) > erlang:element(3, Path2) of + true -> + {move_right(Path1), [Path2 | Rest]}; + + false -> + {move_down(Path2), [Path2 | Rest]} + end + end. + +-spec follow_snake(path(FWG)) -> status(FWG). +follow_snake(Path) -> + case Path of + {path, X, Y, [Elem1 | Rest1], [Elem2 | Rest2], Edits} when Elem1 =:= Elem2 -> + follow_snake( + {path, X + 1, Y + 1, Rest1, Rest2, [{eq, [Elem1]} | Edits]} + ); + + {path, _, _, [], [], Edits@1} -> + {done, Edits@1}; + + _ -> + {cont, Path} + end. + +-spec each_diagonal(integer(), integer(), list(path(FVO)), list(path(FVO))) -> status(FVO). +each_diagonal(Diag, Limit, Paths, Next_paths) -> + case Diag > Limit of + true -> + {next, gleam@list:reverse(Next_paths)}; + + false -> + {Path, Rest} = proceed_path(Diag, Limit, Paths), + case follow_snake(Path) of + {cont, Path@1} -> + each_diagonal(Diag + 2, Limit, Rest, [Path@1 | Next_paths]); + + Other -> + Other + end + end. + +-spec find_script(integer(), integer(), list(path(FVD))) -> list(edit(FVD)). +find_script(Envelope, Max, Paths) -> + case Envelope > Max of + true -> + []; + + false -> + case each_diagonal(- Envelope, Envelope, Paths, []) of + {done, Edits} -> + compact_reverse(Edits, []); + + {next, Paths@1} -> + find_script(Envelope + 1, Max, Paths@1); + + _ -> + erlang:error(#{gleam_error => panic, + message => <<"Didn't expect a Cont here"/utf8>>, + module => <<"gap/myers"/utf8>>, + function => <<"find_script"/utf8>>, + line => 35}) + end + end. + +-spec difference(list(FUY), list(FUY)) -> list(edit(FUY)). +difference(List1, List2) -> + Path = {path, 0, 0, List1, List2, []}, + find_script(0, gleam@list:length(List1) + gleam@list:length(List2), [Path]). diff --git a/aoc2023/build/packages/gap/src/gap@styled_comparison.erl b/aoc2023/build/packages/gap/src/gap@styled_comparison.erl new file mode 100644 index 0000000..14cc390 --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap@styled_comparison.erl @@ -0,0 +1,8 @@ +-module(gap@styled_comparison). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([styled_comparison/0]). + +-type styled_comparison() :: {styled_comparison, binary(), binary()}. + + diff --git a/aoc2023/build/packages/gap/src/gap@styling.erl b/aoc2023/build/packages/gap/src/gap@styling.erl new file mode 100644 index 0000000..ba226c3 --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap@styling.erl @@ -0,0 +1,202 @@ +-module(gap@styling). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_comparison/1, highlight/4, serialize/2, first_highlight_default/1, second_highlight_default/1, no_highlight/1, mk_generic_serializer/2, to_styled_comparison/1]). +-export_type([part/1, highlighters/0, styling/1]). + +-type part(FRE) :: {part, binary(), list(FRE), fun((binary()) -> binary())} | + {all, binary()}. + +-type highlighters() :: {highlighters, + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary())}. + +-opaque styling(FRF) :: {styling, + gap@comparison:comparison(FRF), + gleam@option:option(fun((part(FRF)) -> binary())), + gleam@option:option(highlighters())}. + +-spec from_comparison(gap@comparison:comparison(FRI)) -> styling(FRI). +from_comparison(Comparison) -> + {styling, Comparison, none, none}. + +-spec highlight( + styling(FRL), + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()) +) -> styling(FRL). +highlight(Styling, First, Second, Matching) -> + erlang:setelement( + 4, + Styling, + {some, {highlighters, First, Second, Matching}} + ). + +-spec serialize(styling(FRO), fun((part(FRO)) -> binary())) -> styling(FRO). +serialize(Styling, Serializer) -> + erlang:setelement(3, Styling, {some, Serializer}). + +-spec first_highlight_default(binary()) -> binary(). +first_highlight_default(String) -> + case String of + <<" "/utf8>> -> + _pipe = String, + _pipe@1 = gleam_community@ansi:underline(_pipe), + _pipe@2 = gleam_community@ansi:bold(_pipe@1), + gleam_community@ansi:green(_pipe@2); + + _ -> + _pipe@3 = String, + _pipe@4 = gleam_community@ansi:green(_pipe@3), + gleam_community@ansi:bold(_pipe@4) + end. + +-spec second_highlight_default(binary()) -> binary(). +second_highlight_default(String) -> + case String of + <<" "/utf8>> -> + _pipe = String, + _pipe@1 = gleam_community@ansi:underline(_pipe), + _pipe@2 = gleam_community@ansi:bold(_pipe@1), + gleam_community@ansi:red(_pipe@2); + + _ -> + _pipe@3 = String, + _pipe@4 = gleam_community@ansi:red(_pipe@3), + gleam_community@ansi:bold(_pipe@4) + end. + +-spec no_highlight(binary()) -> binary(). +no_highlight(String) -> + String. + +-spec string_serializer(part(binary())) -> binary(). +string_serializer(Part) -> + case Part of + {part, Acc, Sequence, Highlight} -> + <>) + end)/binary>>; + + {all, String} -> + String + end. + +-spec mk_generic_serializer(binary(), fun((binary()) -> binary())) -> fun((part(any())) -> binary()). +mk_generic_serializer(Separator, Around) -> + fun(Part) -> case Part of + {part, Acc, Sequence, Highlight} -> + Segment_separator = case Acc of + <<""/utf8>> -> + <<""/utf8>>; + + _ -> + Separator + end, + <<<>/binary, + (begin + _pipe = Sequence, + _pipe@1 = gleam@list:map( + _pipe, + fun gleam@string:inspect/1 + ), + _pipe@2 = gleam@list:map(_pipe@1, Highlight), + gleam@string:join(_pipe@2, Separator) + end)/binary>>; + + {all, String} -> + Around(String) + end end. + +-spec generic_serializer(part(any())) -> binary(). +generic_serializer(Part) -> + (mk_generic_serializer( + <<", "/utf8>>, + fun(All) -> <<<<"["/utf8, All/binary>>/binary, "]"/utf8>> end + ))(Part). + +-spec to_strings( + list(gap@comparison:match(list(FRY))), + list(gap@comparison:match(list(FRY))), + fun((part(FRY)) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()), + fun((binary()) -> binary()) +) -> gap@styled_comparison:styled_comparison(). +to_strings( + First, + Second, + Serializer, + First_highlight, + Second_highlight, + No_highlight +) -> + First_styled = begin + _pipe = First, + gleam@list:fold(_pipe, <<""/utf8>>, fun(Str, Match) -> case Match of + {match, Item} -> + Serializer({part, Str, Item, No_highlight}); + + {no_match, Item@1} -> + Serializer({part, Str, Item@1, First_highlight}) + end end) + end, + Second_styled = begin + _pipe@1 = Second, + gleam@list:fold( + _pipe@1, + <<""/utf8>>, + fun(Str@1, Match@1) -> case Match@1 of + {match, Item@2} -> + Serializer({part, Str@1, Item@2, No_highlight}); + + {no_match, Item@3} -> + Serializer({part, Str@1, Item@3, Second_highlight}) + end end + ) + end, + {styled_comparison, + Serializer({all, First_styled}), + Serializer({all, Second_styled})}. + +-spec to_styled_comparison(styling(any())) -> gap@styled_comparison:styled_comparison(). +to_styled_comparison(Styling) -> + Highlight = begin + _pipe = erlang:element(4, Styling), + gleam@option:unwrap( + _pipe, + {highlighters, + fun first_highlight_default/1, + fun second_highlight_default/1, + fun no_highlight/1} + ) + end, + case erlang:element(2, Styling) of + {string_comparison, First, Second} -> + to_strings( + First, + Second, + fun string_serializer/1, + erlang:element(2, Highlight), + erlang:element(3, Highlight), + erlang:element(4, Highlight) + ); + + {list_comparison, First@1, Second@1} -> + to_strings( + First@1, + Second@1, + gleam@option:unwrap( + erlang:element(3, Styling), + fun generic_serializer/1 + ), + erlang:element(2, Highlight), + erlang:element(3, Highlight), + erlang:element(4, Highlight) + ) + end. diff --git a/aoc2023/build/packages/gap/src/gap_ffi.mjs b/aoc2023/build/packages/gap/src/gap_ffi.mjs new file mode 100644 index 0000000..235c80b --- /dev/null +++ b/aoc2023/build/packages/gap/src/gap_ffi.mjs @@ -0,0 +1,431 @@ +import { + Error, + List, + Ok, + inspect, + toList, + makeError, + isEqual, +} from "./gleam.mjs"; +import * as $option from "../gleam_stdlib/gleam/option.mjs"; + +const HASHCODE_CACHE = new WeakMap(); +const Nil = undefined; + +class MutableMap { + static #hashcode_cache = new WeakMap(); + + static hash(value) { + let existing = this.#hashcode_cache.get(value); + if (existing) { + return existing; + } else if (value instanceof Object) { + let hashcode = inspect(value); + HASHCODE_CACHE.set(value, hashcode); + return hashcode; + } else { + return value.toString(); + } + } + + constructor() { + this.entries = new globalThis.Map(); + } + + get size() { + return this.entries.size; + } + + inspect() { + let entries = [...this.entries.values()] + .map((pair) => inspect(pair)) + .join(", "); + return `map.from_list([${entries}])`; + } + + toList() { + return List.fromArray([...this.entries.values()]); + } + + insert(k, v) { + this.entries.set(MutableMap.hash(k), [k, v]); + return this; + } + + delete(k) { + this.entries.delete(MutableMap.hash(k)); + return this; + } + + get(key) { + let code = MutableMap.hash(key); + if (this.entries.has(code)) { + return new Ok(this.entries.get(code)[1]); + } else { + return new Error(Nil); + } + } +} + +export function new_mutable_map() { + return new MutableMap(); +} + +export function mutable_map_size(map) { + return map.size; +} + +export function mutable_map_to_list(map) { + return map.toList(); +} + +export function mutable_map_remove(k, map) { + return map.delete(k); +} + +export function mutable_map_get(map, key) { + return map.get(key); +} + +export function mutable_map_insert(key, value, map) { + return map.insert(key, value); +} + +// From map.mjs + +export function size(map) { + return mutable_map_size(map); +} + +export function to_list(map) { + return mutable_map_to_list(map); +} + +export function new$() { + return new_mutable_map(); +} + +export function get(from, get) { + return mutable_map_get(from, get); +} + +function do_has_key(key, map) { + return !isEqual(get(map, key), new Error(undefined)); +} + +export function has_key(map, key) { + return do_has_key(key, map); +} + +export function insert(map, key, value) { + return mutable_map_insert(key, value, map); +} + +function insert_pair(map, pair) { + return insert(map, pair[0], pair[1]); +} + +export function update(map, key, fun) { + let _pipe = map; + let _pipe$1 = get(_pipe, key); + let _pipe$2 = $option.from_result(_pipe$1); + let _pipe$3 = fun(_pipe$2); + return ((_capture) => { + return insert(map, key, _capture); + })(_pipe$3); +} + +export function delete$(map, key) { + return mutable_map_remove(key, map); +} + +function fold_list_of_pair(loop$list, loop$initial) { + while (true) { + let list = loop$list; + let initial = loop$initial; + if (list.hasLength(0)) { + return initial; + } else if (list.atLeastLength(1)) { + let x = list.head; + let rest = list.tail; + loop$list = rest; + loop$initial = insert(initial, x[0], x[1]); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 98, + "fold_list_of_pair", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_from_list(list) { + return fold_list_of_pair(list, new$()); +} + +export function from_list(list) { + return do_from_list(list); +} + +function do_fold(loop$list, loop$initial, loop$fun) { + while (true) { + let list = loop$list; + let initial = loop$initial; + let fun = loop$fun; + if (list.hasLength(0)) { + return initial; + } else if (list.atLeastLength(1)) { + let k = list.head[0]; + let v = list.head[1]; + let tail = list.tail; + loop$list = tail; + loop$initial = fun(initial, k, v); + loop$fun = fun; + } else { + throw makeError( + "case_no_match", + "gleam/map", + 558, + "do_fold", + "No case clause matched", + { values: [list] } + ); + } + } +} + +export function fold(map, initial, fun) { + let _pipe = map; + let _pipe$1 = to_list(_pipe); + return do_fold(_pipe$1, initial, fun); +} + +function do_map_values(f, map) { + let f$1 = (map, k, v) => { + return insert(map, k, f(k, v)); + }; + let _pipe = map; + return fold(_pipe, new$(), f$1); +} + +export function map_values(map, fun) { + return do_map_values(fun, map); +} + +function do_filter(f, map) { + let insert$1 = (map, k, v) => { + let $ = f(k, v); + if ($) { + return insert(map, k, v); + } else { + return map; + } + }; + let _pipe = map; + return fold(_pipe, new$(), insert$1); +} + +export function filter(map, property) { + return do_filter(property, map); +} + +function do_keys_acc(loop$list, loop$acc) { + while (true) { + let list = loop$list; + let acc = loop$acc; + if (list.hasLength(0)) { + return reverse_and_concat(acc, toList([])); + } else if (list.atLeastLength(1)) { + let x = list.head; + let xs = list.tail; + loop$list = xs; + loop$acc = toList([x[0]], acc); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 276, + "do_keys_acc", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_keys(map) { + let list_of_pairs = (() => { + let _pipe = map; + return to_list(_pipe); + })(); + return do_keys_acc(list_of_pairs, toList([])); +} + +export function keys(map) { + return do_keys(map); +} + +function reverse_and_concat(loop$remaining, loop$accumulator) { + while (true) { + let remaining = loop$remaining; + let accumulator = loop$accumulator; + if (remaining.hasLength(0)) { + return accumulator; + } else if (remaining.atLeastLength(1)) { + let item = remaining.head; + let rest = remaining.tail; + loop$remaining = rest; + loop$accumulator = toList([item], accumulator); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 269, + "reverse_and_concat", + "No case clause matched", + { values: [remaining] } + ); + } + } +} + +function do_values_acc(loop$list, loop$acc) { + while (true) { + let list = loop$list; + let acc = loop$acc; + if (list.hasLength(0)) { + return reverse_and_concat(acc, toList([])); + } else if (list.atLeastLength(1)) { + let x = list.head; + let xs = list.tail; + loop$list = xs; + loop$acc = toList([x[1]], acc); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 314, + "do_values_acc", + "No case clause matched", + { values: [list] } + ); + } + } +} + +function do_values(map) { + let list_of_pairs = (() => { + let _pipe = map; + return to_list(_pipe); + })(); + return do_values_acc(list_of_pairs, toList([])); +} + +export function values(map) { + return do_values(map); +} + +function insert_taken(loop$map, loop$desired_keys, loop$acc) { + while (true) { + let map = loop$map; + let desired_keys = loop$desired_keys; + let acc = loop$acc; + let insert$1 = (taken, key) => { + let $ = get(map, key); + if ($.isOk()) { + let value = $[0]; + return insert(taken, key, value); + } else { + return taken; + } + }; + if (desired_keys.hasLength(0)) { + return acc; + } else if (desired_keys.atLeastLength(1)) { + let x = desired_keys.head; + let xs = desired_keys.tail; + loop$map = map; + loop$desired_keys = xs; + loop$acc = insert$1(acc, x); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 411, + "insert_taken", + "No case clause matched", + { values: [desired_keys] } + ); + } + } +} + +function do_take(desired_keys, map) { + return insert_taken(map, desired_keys, new$()); +} + +export function take(map, desired_keys) { + return do_take(desired_keys, map); +} + +function fold_inserts(loop$new_entries, loop$map) { + while (true) { + let new_entries = loop$new_entries; + let map = loop$map; + if (new_entries.hasLength(0)) { + return map; + } else if (new_entries.atLeastLength(1)) { + let x = new_entries.head; + let xs = new_entries.tail; + loop$new_entries = xs; + loop$map = insert_pair(map, x); + } else { + throw makeError( + "case_no_match", + "gleam/map", + 451, + "fold_inserts", + "No case clause matched", + { values: [new_entries] } + ); + } + } +} + +function do_merge(map, new_entries) { + let _pipe = new_entries; + let _pipe$1 = to_list(_pipe); + return fold_inserts(_pipe$1, map); +} + +export function merge(map, new_entries) { + return do_merge(map, new_entries); +} + +export function drop(loop$map, loop$disallowed_keys) { + while (true) { + let map = loop$map; + let disallowed_keys = loop$disallowed_keys; + if (disallowed_keys.hasLength(0)) { + return map; + } else if (disallowed_keys.atLeastLength(1)) { + let x = disallowed_keys.head; + let xs = disallowed_keys.tail; + loop$map = delete$(map, x); + loop$disallowed_keys = xs; + } else { + throw makeError( + "case_no_match", + "gleam/map", + 514, + "drop", + "No case clause matched", + { values: [disallowed_keys] } + ); + } + } +} diff --git a/aoc2023/build/packages/gleam.lock b/aoc2023/build/packages/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/packages/gleam_community_ansi/LICENCE b/aoc2023/build/packages/gleam_community_ansi/LICENCE new file mode 100644 index 0000000..a84f0ec --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/LICENCE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2023 Gleam Community Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_ansi/README.md b/aoc2023/build/packages/gleam_community_ansi/README.md new file mode 100644 index 0000000..90ab0d5 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/README.md @@ -0,0 +1,72 @@ +# gleam-community/ansi + +Format text with ANSI escape sequences. + +[![Package Version](https://img.shields.io/hexpm/v/gleam_community_ansi)](https://hex.pm/packages/gleam_community_ansi) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_ansi/) + +✨ This project is written in _pure Gleam_ so you can use it anywhere Gleam runs: +Erlang, Elixir, Node, Deno, even [some browsers](https://bit.ly/devtools-console-ansi-support)! + +--- + +## Quickstart + +```gleam +import gleam/io +import gleam_community/ansi + +pub fn main() { + let greeting = "Hello, " <> ansi.pink("world") <> "!" + + greeting + |> ansi.bg_white + |> io.println +} + +``` + +## Installation + +`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_ansi) +with the prefix `gleam_community_`. You can add them to your Gleam projects directly: + +```sh +gleam add gleam_community_ansi +``` + +The docs can be found over at [hexdocs.pm](https://hexdocs.pm/gleam_community_ansi). + +## ANSI-what? + +ANSI escape sequences date back to the 70s as a standard way to format text on +various video text terminals. Since then they have been adopted by many software +terminal emulators and platforms, including some Web browsers, and are a simple +way to format text without platform-specific APIs. + +The point of this package is to abstract the specific codes away and give you an +easy-to-understand API for formatting and colouring terminal text. Still, here is +a quick couple of examples of what's happening under the hood. + +You can copy these examples straight into your terminal to see them in action! + +- Colour text yellow: + + ```shell + $ echo "\e[33mhello" + ``` + +- Colour the background pink: + + ```shell + $ echo "\e[45mhello" + ``` + +- Render text italic: + + ```shell + $ echo "\e[3mhello\e[23m" + ``` + +As you can see, the escape sequences are a bit obscure. Sure, you could hard code +them, or you could use this package! diff --git a/aoc2023/build/packages/gleam_community_ansi/gleam.toml b/aoc2023/build/packages/gleam_community_ansi/gleam.toml new file mode 100644 index 0000000..5da1f7e --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/gleam.toml @@ -0,0 +1,13 @@ +name = "gleam_community_ansi" +version = "1.2.0" +licences = ["Apache-2.0"] +description = "ANSI colours, formatting, and control codes" +repository = { type = "github", user = "gleam-community", repo = "ansi" } +gleam = ">= 0.32.0" + +[dependencies] +gleam_stdlib = "~> 0.32" +gleam_community_colour = "~> 1.2" + +[dev-dependencies] +gleeunit = "~> 0.11" diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam new file mode 100644 index 0000000..a542dda --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam @@ -0,0 +1,2317 @@ +//// +//// - **Text style** +//// - [`bold`](#bold) +//// - [`italic`](#italic) +//// - [`underline`](#underline) +//// - [`strikethrough`](#strikethrough) +//// - [`inverse`](#inverse) +//// - [`dim`](#dim) +//// - [`hidden`](#hidden) +//// - [`reset`](#reset) +//// - **Text colour** +//// - [`black`](#black) +//// - [`red`](#red) +//// - [`green`](#green) +//// - [`yellow`](#yellow) +//// - [`blue`](#blue) +//// - [`magenta`](#magenta) +//// - [`cyan`](#cyan) +//// - [`white`](#white) +//// - [`pink`](#pink) +//// - [`grey`](#grey) +//// - [`gray`](#gray) +//// - [`bright_black`](#bright_black) +//// - [`bright_red`](#bright_red) +//// - [`bright_green`](#bright_green) +//// - [`bright_yellow`](#bright_yellow) +//// - [`bright_blue`](#bright_blue) +//// - [`bright_magenta`](#bright_magenta) +//// - [`bright_cyan`](#bright_cyan) +//// - [`bright_white`](#bright_white) +//// - [`hex`](#hex) +//// - [`colour`](#colour) +//// - [`color`](#color) +//// - **Background colour** +//// - [`bg_black`](#bg_black) +//// - [`bg_red`](#bg_red) +//// - [`bg_green`](#bg_green) +//// - [`bg_yellow`](#bg_yellow) +//// - [`bg_blue`](#bg_blue) +//// - [`bg_magenta`](#bg_magenta) +//// - [`bg_cyan`](#bg_cyan) +//// - [`bg_white`](#bg_white) +//// - [`bg_pink`](#bg_pink) +//// - [`bg_bright_black`](#bg_bright_black) +//// - [`bg_bright_red`](#bg_bright_red) +//// - [`bg_bright_green`](#bg_bright_green) +//// - [`bg_bright_yellow`](#bg_bright_yellow) +//// - [`bg_bright_blue`](#bg_bright_blue) +//// - [`bg_bright_magenta`](#bg_bright_magenta) +//// - [`bg_bright_cyan`](#bg_bright_cyan) +//// - [`bg_bright_white`](#bg_bright_white) +//// - [`bg_hex`](#bg_hex) +//// - [`bg_colour`](#bg_colour) +//// - [`bg_color`](#bg_color) +//// +//// --- +//// +//// This package was heavily inspired by the `colours` module in the Deno standard +//// library. The original source code can be found +//// here. +//// +////
+//// The license of that package is produced below: +//// +//// +//// > MIT License +//// +//// > Copyright 2018-2022 the Deno authors. +//// +//// > Permission is hereby granted, free of charge, to any person obtaining a copy +//// of this software and associated documentation files (the "Software"), to deal +//// in the Software without restriction, including without limitation the rights +//// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//// copies of the Software, and to permit persons to whom the Software is +//// furnished to do so, subject to the following conditions: +//// +//// > The above copyright notice and this permission notice shall be included in all +//// copies or substantial portions of the Software. +////
+//// + +// Just in case we decide in the future to no longer include the above reference +// and license, this package was initially a port of the Deno `colours` module: +// +// https://deno.land/std@0.167.0/fmt/colours.ts +// + +// This seems like a really handy reference if/when we want to expand this beyond +// formatting escape sequences: +// +// https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797 +// + +// IMPORTS -------------------------------------------------------------------- + +import gleam/int +import gleam/list +import gleam/string +import gleam_community/colour.{type Colour} as gc_colour + +// CONSTS --------------------------------------------------------------------- + +const asci_escape_character = "" + +// TYPES ---------------------------------------------------------------------- + +type Code { + Code(open: String, close: String, regexp: String) +} + +// UTILITY -------------------------------------------------------------------- + +/// Builds colour code +fn code(open: List(Int), close: Int) -> Code { + let close_str = int.to_string(close) + let open_strs = list.map(open, int.to_string) + + Code( + open: asci_escape_character <> "[" <> string.join(open_strs, ";") <> "m", + close: asci_escape_character <> "[" <> close_str <> "m", + regexp: asci_escape_character <> "[" <> close_str <> "m", + ) +} + +/// Applies colour and background based on colour code and its associated text +fn run(text: String, code: Code) -> String { + code.open <> string.replace(text, code.regexp, code.open) <> code.close +} + +// STYLES --------------------------------------------------------------------- + +/// Reset the text modified +pub fn reset(text: String) -> String { + run(text, code([0], 0)) +} + +/// Style the given text bold. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bold("lucy") +/// // => "\x1B[1mlucy\x1B[22m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[22m"` added to the string. This is the escape code +/// for the "default" bold/dim style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn bold(text: String) -> String { + run(text, code([1], 22)) +} + +/// Style the given text's colour to be dimmer. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("lucy") +/// // => "\x1B[2mlucy\x1B[22m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[22m"` added to the string. This is the escape code +/// for the "default" bold/dim style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn dim(text: String) -> String { + run(text, code([2], 22)) +} + +/// Style the given text italic. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.italic("lucy") +/// // => "\x1B[3mlucy\x1B[23m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[23m"` added to the string. This is the escape code +/// for the "default" italic style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.underline("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be underlined but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn italic(text: String) -> String { + run(text, code([3], 23)) +} + +/// Style the given text's colour to be dimmer. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.underline("lucy") +/// // => "\x1B[4mlucy\x1B[24m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[24m"` added to the string. This is the escape code +/// for the "default" underline style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn underline(text: String) -> String { + run(text, code([4], 24)) +} + +/// Inverse the given text's colour, and background colour. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.inverse("lucy") +/// // => "\x1B[7mlucy\x1B[27m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[27m"` added to the string. This is the escape code +/// for the "default" inverse style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn inverse(text: String) -> String { + run(text, code([7], 27)) +} + +/// Style the given text to be hidden. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.hidden("lucy") +/// // => "\x1B[8mlucy\x1B[28m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[28m"` added to the string. This is the escape code +/// for the "default" hidden style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn hidden(text: String) -> String { + run(text, code([8], 28)) +} + +/// Style the given text to be striked through. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.strikethrough("lucy") +/// // => "\x1B[9mlucy\x1B[29m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[29m"` added to the string. This is the escape code +/// for the "default" strikethrough style of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// style, it will use both the outter style and the inner style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be dim but the text "fun?" will be +/// both underlined, *and* bold! +///
+/// +/// +/// +pub fn strikethrough(text: String) -> String { + run(text, code([9], 29)) +} + +// FOREGROUND ----------------------------------------------------------------- + +/// Colour the given text black. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.black("lucy") +/// // => "\x1B[30mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn black(text: String) -> String { + run(text, code([30], 39)) +} + +/// Colour the given text red. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.red("lucy") +/// // => "\x1B[31mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn red(text: String) -> String { + run(text, code([31], 39)) +} + +/// Colour the given text green. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.green("lucy") +/// // => "\x1B[32mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn green(text: String) -> String { + run(text, code([32], 39)) +} + +/// Colour the given text yellow. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("lucy") +/// // => "\x1B[33mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn yellow(text: String) -> String { + run(text, code([33], 39)) +} + +/// Colour the given text blue. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.blue("lucy") +/// // => "\x1B[34mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn blue(text: String) -> String { + run(text, code([34], 39)) +} + +/// Colour the given text magenta. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.magenta("lucy") +/// // => "\x1B[35mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn magenta(text: String) -> String { + run(text, code([35], 39)) +} + +/// Colour the given text cyan. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.cyan("lucy") +/// // => "\x1B[36mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn cyan(text: String) -> String { + run(text, code([36], 39)) +} + +/// Colour the given text white. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.white("lucy") +/// // => "\x1B[37mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn white(text: String) -> String { + run(text, code([37], 39)) +} + +/// Colour the given text gray. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.gray("lucy") +/// // => "\x1B[90mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn grey(text: String) -> String { + bright_black(text) +} + +/// This is an alias for [`grey`](#grey) for those who prefer the American English +/// spelling. +/// +pub fn gray(text: String) -> String { + bright_black(text) +} + +/// Colour the given text bright black. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bright_black("lucy") +/// // => "\x1B[90mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_black(text: String) -> String { + run(text, code([90], 39)) +} + +/// Colour the given text bright red. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bright_red("lucy") +/// // => "\x1B[91mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_red(text: String) -> String { + run(text, code([91], 39)) +} + +/// Colour the given text bright green. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_green("lucy") +/// // => "\x1B[92mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_green(text: String) -> String { + run(text, code([92], 39)) +} + +/// Colour the given text bright yellow. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_yellow("lucy") +/// // => "\x1B[93mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_yellow(text: String) -> String { + run(text, code([93], 39)) +} + +/// Colour the given text bright blue. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_blue("lucy") +/// // => "\x1B[94mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_blue(text: String) -> String { + run(text, code([94], 39)) +} + +/// Colour the given text bright gremagentaen. This should increase the luminosity +/// of the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_magenta("lucy") +/// // => "\x1B[95mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_magenta(text: String) -> String { + run(text, code([95], 39)) +} + +/// Colour the given text bright cyan. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_cyan("lucy") +/// // => "\x1B[96mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_cyan(text: String) -> String { + run(text, code([96], 39)) +} + +/// Colour the given text bright white. This should increase the luminosity of +/// the base colour, but some terminals will interpret this as bold instead. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// ansi.bright_white("lucy") +/// // => "\x1B[97mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bright_white(text: String) -> String { + run(text, code([97], 39)) +} + +/// Colour the given text pink. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.pink("lucy") +/// // => "\x1B[38;2;255;175;243mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn pink(text: String) -> String { + hex(text, 0xffaff3) +} + +/// Colour the given text the given colour represented by a hex `Int`. +/// +/// The given hex Int can be any valid [shorthand hexadecimal form](https://en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form). +/// +/// ❗️ Note that if supplied hex Int is less than 0 or larger than 0xfffff the +/// colour will be set to black and white respectively. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.hex("lucy", 0xffaff3) +/// // => "\x1B[38;2;255;175;243mlucy\x1B[39m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn hex(text: String, colour: Int) -> String { + let colour = int.clamp(colour, max: 0xffffff, min: 0x0) + run( + text, + code( + [ + 38, + 2, + int.bitwise_shift_right(colour, 16) + |> int.bitwise_and(0xff), + int.bitwise_shift_right(colour, 8) + |> int.bitwise_and(0xff), + int.bitwise_and(colour, 0xff), + ], + 39, + ), + ) +} + +/// Colour the given text the given colour represented by a `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// import gleam_community/colour.{Colour} +/// +/// fn example() { +/// let pink = colour.from_hsl(0.8583, 1.0, 0,84) +/// ansi.colour("lucy", pink) +/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn colour(text: String, colour: Colour) -> String { + let hex_colour = gc_colour.to_rgb_hex(colour) + hex(text, hex_colour) +} + +/// This is an alias for [`colour`](#colour) for those who prefer the American English +/// spelling. +/// +pub fn color(text: String, color: Colour) -> String { + colour(text, color) +} + +// BACKGROUND ----------------------------------------------------------------- + +/// Colour the given text's background black. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_black("lucy") +/// // => "\x1B[40mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_black(text: String) -> String { + run(text, code([40], 49)) +} + +/// Colour the given text's background red. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_red("lucy") +/// // => "\x1B[41mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_red(text: String) -> String { + run(text, code([41], 49)) +} + +/// Colour the given text's background green. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_green("lucy") +/// // => "\x1B[42mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_green(text: String) -> String { + run(text, code([42], 49)) +} + +/// Colour the given text's background yellow. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_yellow("lucy") +/// // => "\x1B[43mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_yellow(text: String) -> String { + run(text, code([43], 49)) +} + +/// Colour the given text's background blue. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_blue("lucy") +/// // => "\x1B[44mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_blue(text: String) -> String { + run(text, code([44], 49)) +} + +/// Colour the given text's background magenta. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_magenta("lucy") +/// // => "\x1B[45mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_magenta(text: String) -> String { + run(text, code([45], 49)) +} + +/// Colour the given text's background cyan. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_cyan("lucy") +/// // => "\x1B[46mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_cyan(text: String) -> String { + run(text, code([46], 49)) +} + +/// Colour the given text's background white. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_white("lucy") +/// // => "\x1B[47mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_white(text: String) -> String { + run(text, code([47], 49)) +} + +/// Colour the given text's background bright black. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_black("lucy") +/// // => "\x1B[100mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_black(text: String) -> String { + run(text, code([100], 49)) +} + +/// Colour the given text's background bright red. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_red("lucy") +/// // => "\x1B[101mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_red(text: String) -> String { + run(text, code([101], 49)) +} + +/// Colour the given text's background bright green. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_green("lucy") +/// // => "\x1B[102mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_green(text: String) -> String { + run(text, code([102], 49)) +} + +/// Colour the given text's background bright yellow. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_yellow("lucy") +/// // => "\x1B[103mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_yellow(text: String) -> String { + run(text, code([103], 49)) +} + +/// Colour the given text's background bright blue. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_blue("lucy") +/// // => "\x1B[104mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_blue(text: String) -> String { + run(text, code([104], 49)) +} + +/// Colour the given text's background bright magenta. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_magenta("lucy") +/// // => "\x1B[105mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_magenta(text: String) -> String { + run(text, code([105], 49)) +} + +/// Colour the given text's background bright cyan. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_cyan("lucy") +/// // => "\x1B[106mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_cyan(text: String) -> String { + run(text, code([106], 49)) +} + +/// Colour the given text's background bright white. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_bright_white("lucy") +/// // => "\x1B[107mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_bright_white(text: String) -> String { + run(text, code([107], 49)) +} + +/// Colour the given text's background pink. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.bg_pink("lucy") +/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_pink(text: String) -> String { + bg_hex(text, 0xffaff3) +} + +/// Colour the given text's background the given colour represented by a hex `Int`. +/// +/// The given hex Int can be any valid [shorthand hexadecimal form](https://en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form). +/// +/// ❗️ Note that if supplied hex Int is less than 0 or larger than 0xfffff the +/// colour will be set to black and white respectively. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.hex("lucy", 0xffaff3) +/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_hex(text: String, colour: Int) -> String { + run( + text, + code( + [ + 48, + 2, + int.bitwise_shift_right(colour, 16) + |> int.bitwise_and(0xff), + int.bitwise_shift_right(colour, 8) + |> int.bitwise_and(0xff), + int.bitwise_and(colour, 0xff), + ], + 49, + ), + ) +} + +/// Colour the given text's background with the given colour represented by a `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// import gleam_community/ansi +/// import gleam_community/colour.{Colour} +/// +/// fn example() { +/// let pink = colour.from_hsl(0.8583, 1.0, 0,84) +/// ansi.bg_colour("lucy", pink) +/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" +/// } +/// ``` +/// +/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code +/// for the "default" colour of the terminal. This means text you write after +/// this will revert back to default. +/// +/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default +/// colour, it will use the colour of the outter style. +/// +/// ```gleam +/// import gleam_community/ansi +/// +/// fn example() { +/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") +/// } +/// ``` +/// +/// In this example, the text "Gleam" will be pink but the text "fun?" will be +/// yellow, *not* the default colour! +///
+/// +/// +/// +pub fn bg_colour(text: String, colour: Colour) -> String { + let hex_colour = gc_colour.to_rgb_hex(colour) + bg_hex(text, hex_colour) +} + +/// This is an alias for [`bg_colour`](#bg_colour) for those who prefer the American English +/// spelling. +/// +pub fn bg_color(text: String, colour: Colour) -> String { + bg_colour(text, colour) +} diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl new file mode 100644 index 0000000..8b7a4c9 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl @@ -0,0 +1,263 @@ +-module(gleam_community@ansi). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([reset/1, bold/1, dim/1, italic/1, underline/1, inverse/1, hidden/1, strikethrough/1, black/1, red/1, green/1, yellow/1, blue/1, magenta/1, cyan/1, white/1, bright_black/1, grey/1, gray/1, bright_red/1, bright_green/1, bright_yellow/1, bright_blue/1, bright_magenta/1, bright_cyan/1, bright_white/1, hex/2, pink/1, colour/2, color/2, bg_black/1, bg_red/1, bg_green/1, bg_yellow/1, bg_blue/1, bg_magenta/1, bg_cyan/1, bg_white/1, bg_bright_black/1, bg_bright_red/1, bg_bright_green/1, bg_bright_yellow/1, bg_bright_blue/1, bg_bright_magenta/1, bg_bright_cyan/1, bg_bright_white/1, bg_hex/2, bg_pink/1, bg_colour/2, bg_color/2]). +-export_type([code/0]). + +-type code() :: {code, binary(), binary(), binary()}. + +-spec code(list(integer()), integer()) -> code(). +code(Open, Close) -> + Close_str = gleam@int:to_string(Close), + Open_strs = gleam@list:map(Open, fun gleam@int:to_string/1), + {code, + <<<<<<""/utf8, "["/utf8>>/binary, + (gleam@string:join(Open_strs, <<";"/utf8>>))/binary>>/binary, + "m"/utf8>>, + <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>, + <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>}. + +-spec run(binary(), code()) -> binary(). +run(Text, Code) -> + <<<<(erlang:element(2, Code))/binary, + (gleam@string:replace( + Text, + erlang:element(4, Code), + erlang:element(2, Code) + ))/binary>>/binary, + (erlang:element(3, Code))/binary>>. + +-spec reset(binary()) -> binary(). +reset(Text) -> + run(Text, code([0], 0)). + +-spec bold(binary()) -> binary(). +bold(Text) -> + run(Text, code([1], 22)). + +-spec dim(binary()) -> binary(). +dim(Text) -> + run(Text, code([2], 22)). + +-spec italic(binary()) -> binary(). +italic(Text) -> + run(Text, code([3], 23)). + +-spec underline(binary()) -> binary(). +underline(Text) -> + run(Text, code([4], 24)). + +-spec inverse(binary()) -> binary(). +inverse(Text) -> + run(Text, code([7], 27)). + +-spec hidden(binary()) -> binary(). +hidden(Text) -> + run(Text, code([8], 28)). + +-spec strikethrough(binary()) -> binary(). +strikethrough(Text) -> + run(Text, code([9], 29)). + +-spec black(binary()) -> binary(). +black(Text) -> + run(Text, code([30], 39)). + +-spec red(binary()) -> binary(). +red(Text) -> + run(Text, code([31], 39)). + +-spec green(binary()) -> binary(). +green(Text) -> + run(Text, code([32], 39)). + +-spec yellow(binary()) -> binary(). +yellow(Text) -> + run(Text, code([33], 39)). + +-spec blue(binary()) -> binary(). +blue(Text) -> + run(Text, code([34], 39)). + +-spec magenta(binary()) -> binary(). +magenta(Text) -> + run(Text, code([35], 39)). + +-spec cyan(binary()) -> binary(). +cyan(Text) -> + run(Text, code([36], 39)). + +-spec white(binary()) -> binary(). +white(Text) -> + run(Text, code([37], 39)). + +-spec bright_black(binary()) -> binary(). +bright_black(Text) -> + run(Text, code([90], 39)). + +-spec grey(binary()) -> binary(). +grey(Text) -> + bright_black(Text). + +-spec gray(binary()) -> binary(). +gray(Text) -> + bright_black(Text). + +-spec bright_red(binary()) -> binary(). +bright_red(Text) -> + run(Text, code([91], 39)). + +-spec bright_green(binary()) -> binary(). +bright_green(Text) -> + run(Text, code([92], 39)). + +-spec bright_yellow(binary()) -> binary(). +bright_yellow(Text) -> + run(Text, code([93], 39)). + +-spec bright_blue(binary()) -> binary(). +bright_blue(Text) -> + run(Text, code([94], 39)). + +-spec bright_magenta(binary()) -> binary(). +bright_magenta(Text) -> + run(Text, code([95], 39)). + +-spec bright_cyan(binary()) -> binary(). +bright_cyan(Text) -> + run(Text, code([96], 39)). + +-spec bright_white(binary()) -> binary(). +bright_white(Text) -> + run(Text, code([97], 39)). + +-spec hex(binary(), integer()) -> binary(). +hex(Text, Colour) -> + Colour@1 = gleam@int:clamp(Colour, 16#0, 16#ffffff), + run( + Text, + code( + [38, + 2, + begin + _pipe = erlang:'bsr'(Colour@1, 16), + erlang:'band'(_pipe, 16#ff) + end, + begin + _pipe@1 = erlang:'bsr'(Colour@1, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + erlang:'band'(Colour@1, 16#ff)], + 39 + ) + ). + +-spec pink(binary()) -> binary(). +pink(Text) -> + hex(Text, 16#ffaff3). + +-spec colour(binary(), gleam_community@colour:colour()) -> binary(). +colour(Text, Colour) -> + Hex_colour = gleam_community@colour:to_rgb_hex(Colour), + hex(Text, Hex_colour). + +-spec color(binary(), gleam_community@colour:colour()) -> binary(). +color(Text, Color) -> + colour(Text, Color). + +-spec bg_black(binary()) -> binary(). +bg_black(Text) -> + run(Text, code([40], 49)). + +-spec bg_red(binary()) -> binary(). +bg_red(Text) -> + run(Text, code([41], 49)). + +-spec bg_green(binary()) -> binary(). +bg_green(Text) -> + run(Text, code([42], 49)). + +-spec bg_yellow(binary()) -> binary(). +bg_yellow(Text) -> + run(Text, code([43], 49)). + +-spec bg_blue(binary()) -> binary(). +bg_blue(Text) -> + run(Text, code([44], 49)). + +-spec bg_magenta(binary()) -> binary(). +bg_magenta(Text) -> + run(Text, code([45], 49)). + +-spec bg_cyan(binary()) -> binary(). +bg_cyan(Text) -> + run(Text, code([46], 49)). + +-spec bg_white(binary()) -> binary(). +bg_white(Text) -> + run(Text, code([47], 49)). + +-spec bg_bright_black(binary()) -> binary(). +bg_bright_black(Text) -> + run(Text, code([100], 49)). + +-spec bg_bright_red(binary()) -> binary(). +bg_bright_red(Text) -> + run(Text, code([101], 49)). + +-spec bg_bright_green(binary()) -> binary(). +bg_bright_green(Text) -> + run(Text, code([102], 49)). + +-spec bg_bright_yellow(binary()) -> binary(). +bg_bright_yellow(Text) -> + run(Text, code([103], 49)). + +-spec bg_bright_blue(binary()) -> binary(). +bg_bright_blue(Text) -> + run(Text, code([104], 49)). + +-spec bg_bright_magenta(binary()) -> binary(). +bg_bright_magenta(Text) -> + run(Text, code([105], 49)). + +-spec bg_bright_cyan(binary()) -> binary(). +bg_bright_cyan(Text) -> + run(Text, code([106], 49)). + +-spec bg_bright_white(binary()) -> binary(). +bg_bright_white(Text) -> + run(Text, code([107], 49)). + +-spec bg_hex(binary(), integer()) -> binary(). +bg_hex(Text, Colour) -> + run( + Text, + code( + [48, + 2, + begin + _pipe = erlang:'bsr'(Colour, 16), + erlang:'band'(_pipe, 16#ff) + end, + begin + _pipe@1 = erlang:'bsr'(Colour, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + erlang:'band'(Colour, 16#ff)], + 49 + ) + ). + +-spec bg_pink(binary()) -> binary(). +bg_pink(Text) -> + bg_hex(Text, 16#ffaff3). + +-spec bg_colour(binary(), gleam_community@colour:colour()) -> binary(). +bg_colour(Text, Colour) -> + Hex_colour = gleam_community@colour:to_rgb_hex(Colour), + bg_hex(Text, Hex_colour). + +-spec bg_color(binary(), gleam_community@colour:colour()) -> binary(). +bg_color(Text, Colour) -> + bg_colour(Text, Colour). diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src new file mode 100644 index 0000000..dfcfdc3 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src @@ -0,0 +1,9 @@ +{application, gleam_community_ansi, [ + {vsn, "1.2.0"}, + {applications, [gleam_community_colour, + gleam_stdlib, + gleeunit]}, + {description, "ANSI colours, formatting, and control codes"}, + {modules, [gleam_community@ansi]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_community_colour/LICENCE b/aoc2023/build/packages/gleam_community_colour/LICENCE new file mode 100644 index 0000000..a84f0ec --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/LICENCE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2023 Gleam Community Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_colour/README.md b/aoc2023/build/packages/gleam_community_colour/README.md new file mode 100644 index 0000000..0eccdd7 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/README.md @@ -0,0 +1,36 @@ +# gleam-community/colour + +A package for a standard Colour type, conversions, and other utilities. + +[![Package Version](https://img.shields.io/hexpm/v/gleam_community_colour)](https://hex.pm/packages/gleam_community_colour) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_colour/) + +✨ This project is written in pure Gleam so you can use it anywhere Gleam runs: Erlang, Elixir, Node, Deno, and the browser! + +--- + +## Quickstart + +```gleam +import gleam_community/colour +import gleam_community/colour/accessibility + +pub fn main() { + let foreground = colour.from_hsl(h: 0.858, s: 1.0, l: 0.843) + + let background_options = [colour.light_grey, colour.dark_grey] + + let background = accessibility.maximum_contrast(foreground, background_options) +} +``` + +## Installation + +`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_colour) +with the prefix `gleam_community_`. You can add them to your Gleam projects directly: + +```sh +gleam add gleam_community_colour +``` + +The docs can be found over at [hexdocs.pm](https://hexdocs.pm/gleam_community_colour). diff --git a/aoc2023/build/packages/gleam_community_colour/gleam.toml b/aoc2023/build/packages/gleam_community_colour/gleam.toml new file mode 100644 index 0000000..07a81bf --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/gleam.toml @@ -0,0 +1,11 @@ +name = "gleam_community_colour" +version = "1.2.0" +licences = ["Apache-2.0"] +description = "Colour types, conversions, and other utilities" +repository = { type = "github", user = "gleam-community", repo = "colour" } + +[dependencies] +gleam_stdlib = "~> 0.32" + +[dev-dependencies] +gleeunit = "~> 0.11" diff --git a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl new file mode 100644 index 0000000..06116df --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl @@ -0,0 +1 @@ +-record(hsla, {h :: float(), s :: float(), l :: float(), a :: float()}). diff --git a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl new file mode 100644 index 0000000..fff139e --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl @@ -0,0 +1 @@ +-record(rgba, {r :: float(), g :: float(), b :: float(), a :: float()}). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam new file mode 100644 index 0000000..1f5872f --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam @@ -0,0 +1,1126 @@ +//// +//// - **Types** +//// - [`Colour`](#Colour) +//// - [`Color`](#Color) +//// - **Constructors** +//// - [`from_rgb255`](#from_rgb255) +//// - [`from_rgb`](#from_rgb) +//// - [`from_rgba`](#from_rgba) +//// - [`from_hsl`](#from_hsl) +//// - [`from_hsla`](#from_hsla) +//// - [`from_rgb_hex`](#from_rgb_hex) +//// - [`from_rgba_hex`](#from_rgba_hex) +//// - [`from_rgb_hex_string`](#from_rgb_hex_string) +//// - [`from_rgba_hex_string`](#from_rgba_hex_string) +//// - **Conversions** +//// - [`to_rgba`](#to_rgba) +//// - [`to_hsla`](#hsla) +//// - [`to_css_rgba_string`](#to_css_rgba_string) +//// - [`to_rgba_hex_string`](#to_rgba_hex_string) +//// - [`to_rgb_hex_string`](#to_rgb_hex_string) +//// - [`to_rgba_hex`](#to_rgba_hex) +//// - [`to_rgb_hex`](#to_rgb_hex) +//// - **Colours** +//// - [`light_red`](#light_red) +//// - [`red`](#red) +//// - [`dark_red`](#dark_red) +//// - [`light_orange`](#light_orange) +//// - [`orange`](#orange) +//// - [`dark_orange`](#dark_orange) +//// - [`light_yellow`](#light_yellow) +//// - [`yellow`](#yellow) +//// - [`dark_yellow`](#dark_yellow) +//// - [`light_green`](#light_green) +//// - [`green`](#green) +//// - [`dark_green`](#dark_green) +//// - [`light_blue`](#light_blue) +//// - [`blue`](#blue) +//// - [`dark_blue`](#dark_blue) +//// - [`light_purple`](#light_purple) +//// - [`purple`](#purple) +//// - [`dark_purple`](#dark_purple) +//// - [`light_brown`](#light_brown) +//// - [`brown`](#brown) +//// - [`dark_brown`](#dark_brown) +//// - [`black`](#black) +//// - [`white`](#white) +//// - [`light_grey`](#light_grey) +//// - [`grey`](#grey) +//// - [`dark_grey`](#dark_grey) +//// - [`light_gray`](#light_gray) +//// - [`gray`](#gray) +//// - [`dark_gray`](#dark_gray) +//// - [`light_charcoal`](#light_charcoal) +//// - [`charcoal`](#charcoal) +//// - [`dark_charcoal`](#dark_charcoal) +//// - [`pink`](#pink) +//// +//// --- +//// +//// This package was heavily inspired by the `elm-color` module. +//// The original source code can be found +//// here. +//// +////
+//// The license of that package is produced below: +//// +//// +//// > MIT License +//// +//// > Copyright 2018 Aaron VonderHaar +//// +//// > Redistribution and use in source and binary forms, with or without modification, +//// are permitted provided that the following conditions are met: +//// +//// 1. Redistributions of source code must retain the above copyright notice, +//// this list of conditions and the following disclaimer. +//// +//// 2. Redistributions in binary form must reproduce the above copyright notice, +//// this list of conditions and the following disclaimer in the documentation +//// and/or other materials provided with the distribution. +//// +//// 3. Neither the name of the copyright holder nor the names of its contributors +//// may be used to endorse or promote products derived from this software without +//// specific prior written permission. +//// +//// > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +//// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +//// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +//// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +//// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +//// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +//// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +//// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +//// +//// > The above copyright notice and this permission notice shall be included in all +//// copies or substantial portions of the Software. +////
+//// + +// Just in case we decide in the future to no longer include the above reference +// and license, this package was initially a port of the `elm-color` module: +// +// https://github.com/avh4/elm-color/ +// + +// IMPORTS -------------------------------------------------------------------- + +import gleam/int +import gleam/float +import gleam/result +import gleam/string +import gleam/list + +// TYPES ---------------------------------------------------------------------- + +/// A representation of a colour that can be converted to RGBA or HSLA format. +/// +/// +///
+/// +pub opaque type Colour { + Rgba(r: Float, g: Float, b: Float, a: Float) + Hsla(h: Float, s: Float, l: Float, a: Float) +} + +/// Type alias for `Colour` +/// +/// +///
+/// +pub type Color = + Colour + +// UTILITY -------------------------------------------------------------------- + +fn valid_colour_value(c: Float) -> Result(Float, Nil) { + case c >. 1.0 || c <. 0.0 { + True -> Error(Nil) + False -> Ok(c) + } +} + +fn hue_to_rgb(hue: Float, m1: Float, m2: Float) -> Float { + let h = case hue { + _ if hue <. 0.0 -> hue +. 1.0 + _ if hue >. 1.0 -> hue -. 1.0 + _ -> hue + } + + let h_t_6 = h *. 6.0 + let h_t_2 = h *. 2.0 + let h_t_3 = h *. 3.0 + + case h { + _ if h_t_6 <. 1.0 -> m1 +. { m2 -. m1 } *. h *. 6.0 + _ if h_t_2 <. 1.0 -> m2 + _ if h_t_3 <. 2.0 -> m1 +. { m2 -. m1 } *. { 2.0 /. 3.0 -. h } *. 6.0 + _ -> m1 + } +} + +fn hex_string_to_int(hex_string: String) -> Result(Int, Nil) { + let hex = case hex_string { + "#" <> hex_number -> hex_number + "0x" <> hex_number -> hex_number + _ -> hex_string + } + + hex + |> string.lowercase() + |> string.to_graphemes() + |> list.reverse() + |> list.index_fold( + Ok(0), + fn(total, char, index) { + case total { + Error(Nil) -> Error(Nil) + Ok(v) -> { + use num <- result.then(case char { + "a" -> Ok(10) + "b" -> Ok(11) + "c" -> Ok(12) + "d" -> Ok(13) + "e" -> Ok(14) + "f" -> Ok(15) + _ -> int.parse(char) + }) + use base <- result.then(int.power(16, int.to_float(index))) + Ok(v + float.round(int.to_float(num) *. base)) + } + } + }, + ) +} + +fn hsla_to_rgba( + h: Float, + s: Float, + l: Float, + a: Float, +) -> #(Float, Float, Float, Float) { + let m2 = case l <=. 0.5 { + True -> l *. { s +. 1.0 } + False -> l +. s -. l *. s + } + + let m1 = l *. 2.0 -. m2 + + let r = hue_to_rgb(h +. 1.0 /. 3.0, m1, m2) + let g = hue_to_rgb(h, m1, m2) + let b = hue_to_rgb(h -. 1.0 /. 3.0, m1, m2) + + #(r, g, b, a) +} + +fn rgba_to_hsla( + r: Float, + g: Float, + b: Float, + a: Float, +) -> #(Float, Float, Float, Float) { + let min_colour = float.min(r, float.min(g, b)) + + let max_colour = float.max(r, float.max(g, b)) + + let h1 = case True { + _ if max_colour == r -> float.divide(g -. b, max_colour -. min_colour) + _ if max_colour == g -> + float.divide(b -. r, max_colour -. min_colour) + |> result.then(fn(d) { Ok(2.0 +. d) }) + _ -> + float.divide(r -. g, max_colour -. min_colour) + |> result.then(fn(d) { Ok(4.0 +. d) }) + } + + let h2 = case h1 { + Ok(v) -> Ok(v *. { 1.0 /. 6.0 }) + _ -> h1 + } + + let h3 = case h2 { + Ok(v) if v <. 0.0 -> v +. 1.0 + Ok(v) -> v + _ -> 0.0 + } + + let l = { min_colour +. max_colour } /. 2.0 + + let s = case True { + _ if min_colour == max_colour -> 0.0 + _ if l <. 0.5 -> + { max_colour -. min_colour } /. { max_colour +. min_colour } + _ -> { max_colour -. min_colour } /. { 2.0 -. max_colour -. min_colour } + } + + #(h3, s, l, a) +} + +// CONSTRUCTORS --------------------------------------------------------------- + +/// Returns a `Result(Colour)` created from the given 8 bit RGB values. +/// +/// Returns `Error(Nil)` if the supplied RGB values are greater than 255 or less than 0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb255(255, 0, 0) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgb255(r red: Int, g green: Int, b blue: Int) -> Result(Colour, Nil) { + use r <- result.then( + red + |> int.to_float() + |> float.divide(255.0) + |> result.then(valid_colour_value), + ) + + use g <- result.then( + green + |> int.to_float() + |> float.divide(255.0) + |> result.then(valid_colour_value), + ) + + use b <- result.then( + blue + |> int.to_float() + |> float.divide(255.0) + |> result.then(valid_colour_value), + ) + + Ok(Rgba(r: r, g: g, b: b, a: 1.0)) +} + +/// Returns `Result(Colour)` created from the given RGB values. +/// +/// If the supplied RGB values are greater than 1.0 or less than 0.0 returns `Error(Nil)` +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb(1.0, 0.0, 0.0) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgb( + r red: Float, + g green: Float, + b blue: Float, +) -> Result(Colour, Nil) { + use r <- result.then(valid_colour_value(red)) + use g <- result.then(valid_colour_value(green)) + use b <- result.then(valid_colour_value(blue)) + + Ok(Rgba(r: r, g: g, b: b, a: 1.0)) +} + +/// Returns `Result(Colour)` created from the given RGBA values. +/// +/// Returns `Error(Nil)` if the supplied RGBA values are greater than 1.0 or less than 0.0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red_half_opacity) = from_rbga(1.0, 0.0, 0.0, 0.5) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgba( + r red: Float, + g green: Float, + b blue: Float, + a alpha: Float, +) -> Result(Colour, Nil) { + use r <- result.then(valid_colour_value(red)) + use g <- result.then(valid_colour_value(green)) + use b <- result.then(valid_colour_value(blue)) + use a <- result.then(valid_colour_value(alpha)) + + Ok(Rgba(r: r, g: g, b: b, a: a)) +} + +/// Returns `Result(Colour)` created from the given HSLA values. +/// +/// Returns `Error(Nil)`f the supplied HSLA values are greater than 1.0 or less than 0.0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red_half_opacity) = from_hsla(0.0, 1.0, 0.5, 0.5) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_hsla( + h hue: Float, + s saturation: Float, + l lightness: Float, + a alpha: Float, +) -> Result(Colour, Nil) { + use h <- result.then(valid_colour_value(hue)) + use s <- result.then(valid_colour_value(saturation)) + use l <- result.then(valid_colour_value(lightness)) + use a <- result.then(valid_colour_value(alpha)) + + Ok(Hsla(h: h, s: s, l: l, a: a)) +} + +/// Returns `Result(Colour)` created from the given HSL values. +/// +/// Returns `Error(Nil)` if the supplied HSL values are greater than 1.0 or less than 0.0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_hsla(0.0, 1.0, 0.5) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_hsl( + h hue: Float, + s saturation: Float, + l lightness: Float, +) -> Result(Colour, Nil) { + from_hsla(hue, saturation, lightness, 1.0) +} + +/// Returns a `Result(Colour)` created from the given hex `Int`. +/// +/// Returns `Error(Nil)` if the supplied hex `Int is greater than 0xffffff or less than 0x0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb_hex(0xff0000) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgb_hex(hex: Int) -> Result(Colour, Nil) { + case hex > 0xffffff || hex < 0 { + True -> Error(Nil) + False -> { + let r = + int.bitwise_shift_right(hex, 16) + |> int.bitwise_and(0xff) + let g = + int.bitwise_shift_right(hex, 8) + |> int.bitwise_and(0xff) + let b = int.bitwise_and(hex, 0xff) + from_rgb255(r, g, b) + } + } +} + +/// Returns a `Result(Colour)` created from the given RGB hex `String`. +/// +/// Returns `Error(Nil)` if the supplied hex `String` is invalid, or greater than `"#ffffff" or less than `"#0"` +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb_hex_string("#ff0000") +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgb_hex_string(hex_string: String) -> Result(Colour, Nil) { + use hex_int <- result.then(hex_string_to_int(hex_string)) + + from_rgb_hex(hex_int) +} + +/// Returns a `Result(Colour)` created from the given RGBA hex `String`. +/// +/// Returns `Error(Nil)` if the supplied hex `String` is invalid, or greater than `"#ffffffff" or less than `"#0"` +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red_half_opacity) = from_rgba_hex_string("#ff00007f") +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgba_hex_string(hex_string: String) -> Result(Colour, Nil) { + use hex_int <- result.then(hex_string_to_int(hex_string)) + + from_rgba_hex(hex_int) +} + +/// Returns a `Result(Colour)` created from the given hex `Int`. +/// +/// Returns `Error(Nil)` if the supplied hex `Int is greater than 0xffffffff or less than 0x0. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red_half_opacity) = from_rgba_hex(0xff00007f) +/// } +/// ``` +///
+/// +/// +/// +pub fn from_rgba_hex(hex: Int) -> Result(Colour, Nil) { + case hex > 0xffffffff || hex < 0 { + True -> Error(Nil) + False -> { + // This won't fail because we are always dividing by 255.0 + let assert Ok(r) = + int.bitwise_shift_right(hex, 24) + |> int.bitwise_and(0xff) + |> int.to_float() + |> float.divide(255.0) + // This won't fail because we are always dividing by 255.0 + let assert Ok(g) = + int.bitwise_shift_right(hex, 16) + |> int.bitwise_and(0xff) + |> int.to_float() + |> float.divide(255.0) + // This won't fail because we are always dividing by 255.0 + let assert Ok(b) = + int.bitwise_shift_right(hex, 8) + |> int.bitwise_and(0xff) + |> int.to_float() + |> float.divide(255.0) + // This won't fail because we are always dividing by 255.0 + let assert Ok(a) = + int.bitwise_and(hex, 0xff) + |> int.to_float() + |> float.divide(255.0) + from_rgba(r, g, b, a) + } + } +} + +// CONVERSIONS ---------------------------------------------------------------- + +/// Returns `#(Float, Float, Float, Float)` representing the given `Colour`'s +/// R, G, B, and A values respectively. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb255(255, 0, 0) +/// let #(r, g, b, a) = to_rgba(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_rgba(colour: Colour) -> #(Float, Float, Float, Float) { + case colour { + Rgba(r, g, b, a) -> #(r, g, b, a) + Hsla(h, s, l, a) -> hsla_to_rgba(h, s, l, a) + } +} + +/// Returns `#(Float, Float, Float, Float)` representing the given `Colour`'s +/// H, S, L, and A values respectively. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb255(255, 0, 0) +/// let #(h, s, l, a) = to_hsla(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_hsla(colour: Colour) -> #(Float, Float, Float, Float) { + case colour { + Hsla(h, s, l, a) -> #(h, s, l, a) + Rgba(r, g, b, a) -> rgba_to_hsla(r, g, b, a) + } +} + +/// Returns an rgba formatted CSS `String` created from the given `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgb255(255, 0, 0) +/// let css_red = to_css_rgba_string(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_css_rgba_string(colour: Colour) -> String { + let #(r, g, b, a) = to_rgba(colour) + + let percent = fn(x: Float) -> Float { + // This won't fail because we are always dividing by 100.0 + let assert Ok(p) = + x + |> float.multiply(10_000.0) + |> float.round() + |> int.to_float() + |> float.divide(100.0) + + p + } + + let round_to = fn(x: Float) -> Float { + // This won't fail because we are always dividing by 1000.0 + let assert Ok(r) = + x + |> float.multiply(1000.0) + |> float.round() + |> int.to_float() + |> float.divide(1000.0) + + r + } + + string.join( + [ + "rgba(", + float.to_string(percent(r)) <> "%,", + float.to_string(percent(g)) <> "%,", + float.to_string(percent(b)) <> "%,", + float.to_string(round_to(a)), + ")", + ], + "", + ) +} + +/// Returns an rgba hex formatted `String` created from the given `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgba(1.0, 0.0, 0.0, 1.0) +/// let red_hex = to_rgba_hex_string(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_rgba_hex_string(colour: Colour) -> String { + to_rgba_hex(colour) + |> int.to_base16() +} + +/// Returns an rgb hex formatted `String` created from the given `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgba(255, 0, 0) +/// let red_hex = to_rgb_hex_string(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_rgb_hex_string(colour: Colour) -> String { + to_rgb_hex(colour) + |> int.to_base16() +} + +/// Returns an hex `Int` created from the given `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgba(1.0, 0.0, 0.0, 1.0) +/// let red_hex_int = to_rgba_hex(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_rgba_hex(colour: Colour) -> Int { + let #(r, g, b, a) = to_rgba(colour) + + let red = + r *. 255.0 + |> float.round() + |> int.bitwise_shift_left(24) + + let green = + g *. 255.0 + |> float.round() + |> int.bitwise_shift_left(16) + + let blue = + b *. 255.0 + |> float.round() + |> int.bitwise_shift_left(8) + + let alpha = + a *. 255.0 + |> float.round() + + red + green + blue + alpha +} + +/// Returns a rgb hex `Int` created from the given `Colour`. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// assert Ok(red) = from_rgba(255, 0, 0) +/// let red_hex_int = to_rgb_hex(red) +/// } +/// ``` +///
+/// +/// +/// +pub fn to_rgb_hex(colour: Colour) -> Int { + let #(r, g, b, _) = to_rgba(colour) + + let red = + r *. 255.0 + |> float.round() + |> int.bitwise_shift_left(16) + + let green = + g *. 255.0 + |> float.round() + |> int.bitwise_shift_left(8) + + let blue = + b *. 255.0 + |> float.round() + + red + green + blue +} + +// COLOURS -------------------------------------------------------------------- + +/// A `Colour` reprsenting the colour RGBA(239, 41, 41, 1.0) +pub const light_red = Rgba( + r: 0.9372549019607843, + g: 0.1607843137254902, + b: 0.1607843137254902, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(204, 0, 0, 1.0) +pub const red = Rgba(r: 0.8, g: 0.0, b: 0.0, a: 1.0) + +/// A `Colour` reprsenting the colour RGBA(164, 0, 0, 1.0) +pub const dark_red = Rgba(r: 0.6431372549019608, g: 0.0, b: 0.0, a: 1.0) + +/// A `Colour` reprsenting the colour RGBA(252, 175, 62, 1.0) +pub const light_orange = Rgba( + r: 0.9882352941176471, + g: 0.6862745098039216, + b: 0.24313725490196078, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(245, 121, 0, 1.0) +pub const orange = Rgba( + r: 0.9607843137254902, + g: 0.4745098039215686, + b: 0.0, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(206, 92, 0, 1.0) +pub const dark_orange = Rgba( + r: 0.807843137254902, + g: 0.3607843137254902, + b: 0.0, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(255, 233, 79, 1.0) +pub const light_yellow = Rgba( + r: 1.0, + g: 0.9137254901960784, + b: 0.30980392156862746, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(237, 212, 0, 1.0) +pub const yellow = Rgba( + r: 0.9294117647058824, + g: 0.8313725490196079, + b: 0.0, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(196, 160, 0, 1.0) +pub const dark_yellow = Rgba( + r: 0.7686274509803922, + g: 0.6274509803921569, + b: 0.0, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(138, 226, 52, 1.0) +pub const light_green = Rgba( + r: 0.5411764705882353, + g: 0.8862745098039215, + b: 0.20392156862745098, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(115, 210, 22, 1.0) +pub const green = Rgba( + r: 0.45098039215686275, + g: 0.8235294117647058, + b: 0.08627450980392157, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(78, 154, 6, 1.0) +pub const dark_green = Rgba( + r: 0.3058823529411765, + g: 0.6039215686274509, + b: 0.023529411764705882, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(114, 159, 207, 1.0) +pub const light_blue = Rgba( + r: 0.4470588235294118, + g: 0.6235294117647059, + b: 0.8117647058823529, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(52, 101, 164, 1.0) +pub const blue = Rgba( + r: 0.20392156862745098, + g: 0.396078431372549, + b: 0.6431372549019608, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(32, 74, 135, 1.0) +pub const dark_blue = Rgba( + r: 0.12549019607843137, + g: 0.2901960784313726, + b: 0.5294117647058824, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(173, 127, 168, 1.0) +pub const light_purple = Rgba( + r: 0.6784313725490196, + g: 0.4980392156862745, + b: 0.6588235294117647, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(117, 80, 123, 1.0) +pub const purple = Rgba( + r: 0.4588235294117647, + g: 0.3137254901960784, + b: 0.4823529411764706, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(92, 53, 102, 1.0) +pub const dark_purple = Rgba( + r: 0.3607843137254902, + g: 0.20784313725490197, + b: 0.4, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(233, 185, 110, 1.0) +pub const light_brown = Rgba( + r: 0.9137254901960784, + g: 0.7254901960784313, + b: 0.43137254901960786, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(193, 125, 17, 1.0) +pub const brown = Rgba( + r: 0.7568627450980392, + g: 0.49019607843137253, + b: 0.06666666666666667, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(143, 89, 2, 1.0) +pub const dark_brown = Rgba( + r: 0.5607843137254902, + g: 0.34901960784313724, + b: 0.00784313725490196, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(0, 0, 0, 1.0) +pub const black = Rgba(r: 0.0, g: 0.0, b: 0.0, a: 1.0) + +/// A `Colour` reprsenting the colour RGBA(255, 255, 255, 1.0) +pub const white = Rgba(r: 1.0, g: 1.0, b: 1.0, a: 1.0) + +/// A `Colour` reprsenting the colour RGBA(238, 238, 236, 1.0) +pub const light_grey = Rgba( + r: 0.9333333333333333, + g: 0.9333333333333333, + b: 0.9254901960784314, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(211, 215, 207, 1.0) +pub const grey = Rgba( + r: 0.8274509803921568, + g: 0.8431372549019608, + b: 0.8117647058823529, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(186, 189, 182, 1.0) +pub const dark_grey = Rgba( + r: 0.7294117647058823, + g: 0.7411764705882353, + b: 0.7137254901960784, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(238, 238, 236, 1.0) +pub const light_gray = Rgba( + r: 0.9333333333333333, + g: 0.9333333333333333, + b: 0.9254901960784314, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(211, 215, 207, 1.0) +pub const gray = Rgba( + r: 0.8274509803921568, + g: 0.8431372549019608, + b: 0.8117647058823529, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(186, 189, 182, 1.0) +pub const dark_gray = Rgba( + r: 0.7294117647058823, + g: 0.7411764705882353, + b: 0.7137254901960784, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(136, 138, 133, 1.0) +pub const light_charcoal = Rgba( + r: 0.5333333333333333, + g: 0.5411764705882353, + b: 0.5215686274509804, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(85, 87, 83, 1.0) +pub const charcoal = Rgba( + r: 0.3333333333333333, + g: 0.3411764705882353, + b: 0.3254901960784314, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(46, 52, 54, 1.0) +pub const dark_charcoal = Rgba( + r: 0.1803921568627451, + g: 0.20392156862745098, + b: 0.21176470588235294, + a: 1.0, +) + +/// A `Colour` reprsenting the colour RGBA(255, 175, 243, 1.0) +pub const pink = Rgba( + r: 1.0, + g: 0.6862745098039216, + b: 0.9529411764705882, + a: 1.0, +) diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam new file mode 100644 index 0000000..54f75e4 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam @@ -0,0 +1,173 @@ +//// +//// - **Accessibility** +//// - [`luminance`](#luminance) +//// - [`contrast_ratio`](#contrast_ratio) +//// - [`maximum_contrast`](#maximum_contrast) +//// +//// --- +//// +//// This package was heavily inspired by the `elm-color-extra` module. +//// The original source code can be found +//// here. +//// +////
+//// The license of that package is produced below: +//// +//// +//// > MIT License +//// +//// > Copyright (c) 2016 Andreas Köberle +//// +//// > Permission is hereby granted, free of charge, to any person obtaining a copy +//// of this software and associated documentation files (the "Software"), to deal +//// in the Software without restriction, including without limitation the rights +//// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//// copies of the Software, and to permit persons to whom the Software is +//// furnished to do so, subject to the following conditions: +//// +//// > The above copyright notice and this permission notice shall be included in all +//// copies or substantial portions of the Software. +//// +//// > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//// SOFTWARE. +//// +////
+//// + +// Just in case we decide in the future to no longer include the above reference +// and license, this package was initially a port of the `elm-color-extra` module: +// +// https://github.com/noahzgordon/elm-color-extra +// + +// IMPORTS -------------------------------------------------------------------- + +import gleam/float +import gleam/list +import gleam_community/colour.{type Colour} + +// UTILITIES ------------------------------------------------------------------ + +fn intensity(colour_value: Float) -> Float { + // Calculation taken from https://www.w3.org/TR/WCAG20/#relativeluminancedef + case True { + _ if colour_value <=. 0.03928 -> colour_value /. 12.92 + _ -> { + // Is this guaranteed to be `OK`? + let assert Ok(i) = float.power({ colour_value +. 0.055 } /. 1.055, 2.4) + i + } + } +} + +// ACCESSIBILITY -------------------------------------------------------------- + +/// Returns the relative brightness of the given `Colour` as a `Float` between +/// 0.0, and 1.0 with 0.0 being the darkest possible colour and 1.0 being the lightest. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// luminance(colour.white) // 1.0 +/// } +/// ``` +///
+/// +/// +/// +pub fn luminance(colour: Colour) -> Float { + // Calculation taken from https://www.w3.org/TR/WCAG20/#relativeluminancedef + let #(r, g, b, _) = colour.to_rgba(colour) + + let r_intensity = intensity(r) + let g_intensity = intensity(g) + let b_intensity = intensity(b) + + 0.2126 *. r_intensity +. 0.7152 *. g_intensity +. 0.0722 *. b_intensity +} + +/// Returns the contrast between two `Colour` values as a `Float` between 1.0, +/// and 21.0 with 1.0 being no contrast and, 21.0 being the highest possible contrast. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// contrast_ratio(between: colour.white, and: colour.black) // 21.0 +/// } +/// ``` +///
+/// +/// +/// +pub fn contrast_ratio(between colour_a: Colour, and colour_b: Colour) -> Float { + // Calculation taken from https://www.w3.org/TR/WCAG20/#contrast-ratiodef + let luminance_a = luminance(colour_a) +. 0.05 + let luminance_b = luminance(colour_b) +. 0.05 + + case luminance_a >. luminance_b { + True -> luminance_a /. luminance_b + False -> luminance_b /. luminance_a + } +} + +/// Returns the `Colour` with the highest contrast between the base `Colour`, +/// and and the other provided `Colour` values. +/// +///
+/// Example: +/// +/// ```gleam +/// fn example() { +/// maximum_contrast( +/// colour.yellow, +/// [colour.white, colour.dark_blue, colour.green], +/// ) +/// } +/// ``` +///
+/// +/// +/// +pub fn maximum_contrast( + base: Colour, + colours: List(Colour), +) -> Result(Colour, Nil) { + colours + |> list.sort(fn(colour_a, colour_b) { + let contrast_a = contrast_ratio(base, colour_a) + let contrast_b = contrast_ratio(base, colour_b) + + float.compare(contrast_b, contrast_a) + }) + |> list.first() +} diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl new file mode 100644 index 0000000..21e4c81 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl @@ -0,0 +1,511 @@ +-module(gleam_community@colour). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_rgb255/3, from_rgb/3, from_rgba/4, from_hsla/4, from_hsl/3, from_rgb_hex/1, from_rgb_hex_string/1, from_rgba_hex/1, from_rgba_hex_string/1, to_rgba/1, to_hsla/1, to_css_rgba_string/1, to_rgba_hex/1, to_rgba_hex_string/1, to_rgb_hex/1, to_rgb_hex_string/1]). +-export_type([colour/0]). + +-opaque colour() :: {rgba, float(), float(), float(), float()} | + {hsla, float(), float(), float(), float()}. + +-spec valid_colour_value(float()) -> {ok, float()} | {error, nil}. +valid_colour_value(C) -> + case (C > 1.0) orelse (C < +0.0) of + true -> + {error, nil}; + + false -> + {ok, C} + end. + +-spec hue_to_rgb(float(), float(), float()) -> float(). +hue_to_rgb(Hue, M1, M2) -> + H = case Hue of + _ when Hue < +0.0 -> + Hue + 1.0; + + _ when Hue > 1.0 -> + Hue - 1.0; + + _ -> + Hue + end, + H_t_6 = H * 6.0, + H_t_2 = H * 2.0, + H_t_3 = H * 3.0, + case H of + _ when H_t_6 < 1.0 -> + M1 + (((M2 - M1) * H) * 6.0); + + _ when H_t_2 < 1.0 -> + M2; + + _ when H_t_3 < 2.0 -> + M1 + (((M2 - M1) * ((2.0 / 3.0) - H)) * 6.0); + + _ -> + M1 + end. + +-spec hex_string_to_int(binary()) -> {ok, integer()} | {error, nil}. +hex_string_to_int(Hex_string) -> + Hex = case Hex_string of + <<"#"/utf8, Hex_number/binary>> -> + Hex_number; + + <<"0x"/utf8, Hex_number@1/binary>> -> + Hex_number@1; + + _ -> + Hex_string + end, + _pipe = Hex, + _pipe@1 = gleam@string:lowercase(_pipe), + _pipe@2 = gleam@string:to_graphemes(_pipe@1), + _pipe@3 = gleam@list:reverse(_pipe@2), + gleam@list:index_fold( + _pipe@3, + {ok, 0}, + fun(Total, Char, Index) -> case Total of + {error, nil} -> + {error, nil}; + + {ok, V} -> + gleam@result:then(case Char of + <<"a"/utf8>> -> + {ok, 10}; + + <<"b"/utf8>> -> + {ok, 11}; + + <<"c"/utf8>> -> + {ok, 12}; + + <<"d"/utf8>> -> + {ok, 13}; + + <<"e"/utf8>> -> + {ok, 14}; + + <<"f"/utf8>> -> + {ok, 15}; + + _ -> + gleam@int:parse(Char) + end, fun(Num) -> + gleam@result:then( + gleam@int:power(16, gleam@int:to_float(Index)), + fun(Base) -> + {ok, + V + gleam@float:round( + gleam@int:to_float(Num) * Base + )} + end + ) + end) + end end + ). + +-spec hsla_to_rgba(float(), float(), float(), float()) -> {float(), + float(), + float(), + float()}. +hsla_to_rgba(H, S, L, A) -> + M2 = case L =< 0.5 of + true -> + L * (S + 1.0); + + false -> + (L + S) - (L * S) + end, + M1 = (L * 2.0) - M2, + R = hue_to_rgb(H + (1.0 / 3.0), M1, M2), + G = hue_to_rgb(H, M1, M2), + B = hue_to_rgb(H - (1.0 / 3.0), M1, M2), + {R, G, B, A}. + +-spec rgba_to_hsla(float(), float(), float(), float()) -> {float(), + float(), + float(), + float()}. +rgba_to_hsla(R, G, B, A) -> + Min_colour = gleam@float:min(R, gleam@float:min(G, B)), + Max_colour = gleam@float:max(R, gleam@float:max(G, B)), + H1 = case true of + _ when Max_colour =:= R -> + gleam@float:divide(G - B, Max_colour - Min_colour); + + _ when Max_colour =:= G -> + _pipe = gleam@float:divide(B - R, Max_colour - Min_colour), + gleam@result:then(_pipe, fun(D) -> {ok, 2.0 + D} end); + + _ -> + _pipe@1 = gleam@float:divide(R - G, Max_colour - Min_colour), + gleam@result:then(_pipe@1, fun(D@1) -> {ok, 4.0 + D@1} end) + end, + H2 = case H1 of + {ok, V} -> + {ok, V * (1.0 / 6.0)}; + + _ -> + H1 + end, + H3 = case H2 of + {ok, V@1} when V@1 < +0.0 -> + V@1 + 1.0; + + {ok, V@2} -> + V@2; + + _ -> + +0.0 + end, + L = (Min_colour + Max_colour) / 2.0, + S = case true of + _ when Min_colour =:= Max_colour -> + +0.0; + + _ when L < 0.5 -> + case (Max_colour + Min_colour) of + 0.0 -> 0.0; + Gleam@denominator -> (Max_colour - Min_colour) / Gleam@denominator + end; + + _ -> + case ((2.0 - Max_colour) - Min_colour) of + 0.0 -> 0.0; + Gleam@denominator@1 -> (Max_colour - Min_colour) / Gleam@denominator@1 + end + end, + {H3, S, L, A}. + +-spec from_rgb255(integer(), integer(), integer()) -> {ok, colour()} | + {error, nil}. +from_rgb255(Red, Green, Blue) -> + gleam@result:then( + begin + _pipe = Red, + _pipe@1 = gleam@int:to_float(_pipe), + _pipe@2 = gleam@float:divide(_pipe@1, 255.0), + gleam@result:then(_pipe@2, fun valid_colour_value/1) + end, + fun(R) -> + gleam@result:then( + begin + _pipe@3 = Green, + _pipe@4 = gleam@int:to_float(_pipe@3), + _pipe@5 = gleam@float:divide(_pipe@4, 255.0), + gleam@result:then(_pipe@5, fun valid_colour_value/1) + end, + fun(G) -> + gleam@result:then( + begin + _pipe@6 = Blue, + _pipe@7 = gleam@int:to_float(_pipe@6), + _pipe@8 = gleam@float:divide(_pipe@7, 255.0), + gleam@result:then(_pipe@8, fun valid_colour_value/1) + end, + fun(B) -> {ok, {rgba, R, G, B, 1.0}} end + ) + end + ) + end + ). + +-spec from_rgb(float(), float(), float()) -> {ok, colour()} | {error, nil}. +from_rgb(Red, Green, Blue) -> + gleam@result:then( + valid_colour_value(Red), + fun(R) -> + gleam@result:then( + valid_colour_value(Green), + fun(G) -> + gleam@result:then( + valid_colour_value(Blue), + fun(B) -> {ok, {rgba, R, G, B, 1.0}} end + ) + end + ) + end + ). + +-spec from_rgba(float(), float(), float(), float()) -> {ok, colour()} | + {error, nil}. +from_rgba(Red, Green, Blue, Alpha) -> + gleam@result:then( + valid_colour_value(Red), + fun(R) -> + gleam@result:then( + valid_colour_value(Green), + fun(G) -> + gleam@result:then( + valid_colour_value(Blue), + fun(B) -> + gleam@result:then( + valid_colour_value(Alpha), + fun(A) -> {ok, {rgba, R, G, B, A}} end + ) + end + ) + end + ) + end + ). + +-spec from_hsla(float(), float(), float(), float()) -> {ok, colour()} | + {error, nil}. +from_hsla(Hue, Saturation, Lightness, Alpha) -> + gleam@result:then( + valid_colour_value(Hue), + fun(H) -> + gleam@result:then( + valid_colour_value(Saturation), + fun(S) -> + gleam@result:then( + valid_colour_value(Lightness), + fun(L) -> + gleam@result:then( + valid_colour_value(Alpha), + fun(A) -> {ok, {hsla, H, S, L, A}} end + ) + end + ) + end + ) + end + ). + +-spec from_hsl(float(), float(), float()) -> {ok, colour()} | {error, nil}. +from_hsl(Hue, Saturation, Lightness) -> + from_hsla(Hue, Saturation, Lightness, 1.0). + +-spec from_rgb_hex(integer()) -> {ok, colour()} | {error, nil}. +from_rgb_hex(Hex) -> + case (Hex > 16#ffffff) orelse (Hex < 0) of + true -> + {error, nil}; + + false -> + R = begin + _pipe = erlang:'bsr'(Hex, 16), + erlang:'band'(_pipe, 16#ff) + end, + G = begin + _pipe@1 = erlang:'bsr'(Hex, 8), + erlang:'band'(_pipe@1, 16#ff) + end, + B = erlang:'band'(Hex, 16#ff), + from_rgb255(R, G, B) + end. + +-spec from_rgb_hex_string(binary()) -> {ok, colour()} | {error, nil}. +from_rgb_hex_string(Hex_string) -> + gleam@result:then( + hex_string_to_int(Hex_string), + fun(Hex_int) -> from_rgb_hex(Hex_int) end + ). + +-spec from_rgba_hex(integer()) -> {ok, colour()} | {error, nil}. +from_rgba_hex(Hex) -> + case (Hex > 16#ffffffff) orelse (Hex < 0) of + true -> + {error, nil}; + + false -> + _assert_subject = begin + _pipe = erlang:'bsr'(Hex, 24), + _pipe@1 = erlang:'band'(_pipe, 16#ff), + _pipe@2 = gleam@int:to_float(_pipe@1), + gleam@float:divide(_pipe@2, 255.0) + end, + {ok, R} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 588}) + end, + _assert_subject@1 = begin + _pipe@3 = erlang:'bsr'(Hex, 16), + _pipe@4 = erlang:'band'(_pipe@3, 16#ff), + _pipe@5 = gleam@int:to_float(_pipe@4), + gleam@float:divide(_pipe@5, 255.0) + end, + {ok, G} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 594}) + end, + _assert_subject@2 = begin + _pipe@6 = erlang:'bsr'(Hex, 8), + _pipe@7 = erlang:'band'(_pipe@6, 16#ff), + _pipe@8 = gleam@int:to_float(_pipe@7), + gleam@float:divide(_pipe@8, 255.0) + end, + {ok, B} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 600}) + end, + _assert_subject@3 = begin + _pipe@9 = erlang:'band'(Hex, 16#ff), + _pipe@10 = gleam@int:to_float(_pipe@9), + gleam@float:divide(_pipe@10, 255.0) + end, + {ok, A} = case _assert_subject@3 of + {ok, _} -> _assert_subject@3; + _assert_fail@3 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@3, + module => <<"gleam_community/colour"/utf8>>, + function => <<"from_rgba_hex"/utf8>>, + line => 606}) + end, + from_rgba(R, G, B, A) + end. + +-spec from_rgba_hex_string(binary()) -> {ok, colour()} | {error, nil}. +from_rgba_hex_string(Hex_string) -> + gleam@result:then( + hex_string_to_int(Hex_string), + fun(Hex_int) -> from_rgba_hex(Hex_int) end + ). + +-spec to_rgba(colour()) -> {float(), float(), float(), float()}. +to_rgba(Colour) -> + case Colour of + {rgba, R, G, B, A} -> + {R, G, B, A}; + + {hsla, H, S, L, A@1} -> + hsla_to_rgba(H, S, L, A@1) + end. + +-spec to_hsla(colour()) -> {float(), float(), float(), float()}. +to_hsla(Colour) -> + case Colour of + {hsla, H, S, L, A} -> + {H, S, L, A}; + + {rgba, R, G, B, A@1} -> + rgba_to_hsla(R, G, B, A@1) + end. + +-spec to_css_rgba_string(colour()) -> binary(). +to_css_rgba_string(Colour) -> + {R, G, B, A} = to_rgba(Colour), + Percent = fun(X) -> + _assert_subject = begin + _pipe = X, + _pipe@1 = gleam@float:multiply(_pipe, 10000.0), + _pipe@2 = gleam@float:round(_pipe@1), + _pipe@3 = gleam@int:to_float(_pipe@2), + gleam@float:divide(_pipe@3, 100.0) + end, + {ok, P} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour"/utf8>>, + function => <<"to_css_rgba_string"/utf8>>, + line => 704}) + end, + P + end, + Round_to = fun(X@1) -> + _assert_subject@1 = begin + _pipe@4 = X@1, + _pipe@5 = gleam@float:multiply(_pipe@4, 1000.0), + _pipe@6 = gleam@float:round(_pipe@5), + _pipe@7 = gleam@int:to_float(_pipe@6), + gleam@float:divide(_pipe@7, 1000.0) + end, + {ok, R@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/colour"/utf8>>, + function => <<"to_css_rgba_string"/utf8>>, + line => 716}) + end, + R@1 + end, + gleam@string:join( + [<<"rgba("/utf8>>, + <<(gleam@float:to_string(Percent(R)))/binary, "%,"/utf8>>, + <<(gleam@float:to_string(Percent(G)))/binary, "%,"/utf8>>, + <<(gleam@float:to_string(Percent(B)))/binary, "%,"/utf8>>, + gleam@float:to_string(Round_to(A)), + <<")"/utf8>>], + <<""/utf8>> + ). + +-spec to_rgba_hex(colour()) -> integer(). +to_rgba_hex(Colour) -> + {R, G, B, A} = to_rgba(Colour), + Red = begin + _pipe = R * 255.0, + _pipe@1 = gleam@float:round(_pipe), + erlang:'bsl'(_pipe@1, 24) + end, + Green = begin + _pipe@2 = G * 255.0, + _pipe@3 = gleam@float:round(_pipe@2), + erlang:'bsl'(_pipe@3, 16) + end, + Blue = begin + _pipe@4 = B * 255.0, + _pipe@5 = gleam@float:round(_pipe@4), + erlang:'bsl'(_pipe@5, 8) + end, + Alpha = begin + _pipe@6 = A * 255.0, + gleam@float:round(_pipe@6) + end, + ((Red + Green) + Blue) + Alpha. + +-spec to_rgba_hex_string(colour()) -> binary(). +to_rgba_hex_string(Colour) -> + _pipe = to_rgba_hex(Colour), + gleam@int:to_base16(_pipe). + +-spec to_rgb_hex(colour()) -> integer(). +to_rgb_hex(Colour) -> + {R, G, B, _} = to_rgba(Colour), + Red = begin + _pipe = R * 255.0, + _pipe@1 = gleam@float:round(_pipe), + erlang:'bsl'(_pipe@1, 16) + end, + Green = begin + _pipe@2 = G * 255.0, + _pipe@3 = gleam@float:round(_pipe@2), + erlang:'bsl'(_pipe@3, 8) + end, + Blue = begin + _pipe@4 = B * 255.0, + gleam@float:round(_pipe@4) + end, + (Red + Green) + Blue. + +-spec to_rgb_hex_string(colour()) -> binary(). +to_rgb_hex_string(Colour) -> + _pipe = to_rgb_hex(Colour), + gleam@int:to_base16(_pipe). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl new file mode 100644 index 0000000..64d37bf --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl @@ -0,0 +1,73 @@ +-module(gleam_community@colour@accessibility). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([luminance/1, contrast_ratio/2, maximum_contrast/2]). + +-spec intensity(float()) -> float(). +intensity(Colour_value) -> + case true of + _ when Colour_value =< 0.03928 -> + Colour_value / 12.92; + + _ -> + _assert_subject = gleam@float:power( + (Colour_value + 0.055) / 1.055, + 2.4 + ), + {ok, I} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/colour/accessibility"/utf8>>, + function => <<"intensity"/utf8>>, + line => 62}) + end, + I + end. + +-spec luminance(gleam_community@colour:colour()) -> float(). +luminance(Colour) -> + {R, G, B, _} = gleam_community@colour:to_rgba(Colour), + R_intensity = intensity(R), + G_intensity = intensity(G), + B_intensity = intensity(B), + ((0.2126 * R_intensity) + (0.7152 * G_intensity)) + (0.0722 * B_intensity). + +-spec contrast_ratio( + gleam_community@colour:colour(), + gleam_community@colour:colour() +) -> float(). +contrast_ratio(Colour_a, Colour_b) -> + Luminance_a = luminance(Colour_a) + 0.05, + Luminance_b = luminance(Colour_b) + 0.05, + case Luminance_a > Luminance_b of + true -> + case Luminance_b of + 0.0 -> 0.0; + Gleam@denominator -> Luminance_a / Gleam@denominator + end; + + false -> + case Luminance_a of + 0.0 -> 0.0; + Gleam@denominator@1 -> Luminance_b / Gleam@denominator@1 + end + end. + +-spec maximum_contrast( + gleam_community@colour:colour(), + list(gleam_community@colour:colour()) +) -> {ok, gleam_community@colour:colour()} | {error, nil}. +maximum_contrast(Base, Colours) -> + _pipe = Colours, + _pipe@1 = gleam@list:sort( + _pipe, + fun(Colour_a, Colour_b) -> + Contrast_a = contrast_ratio(Base, Colour_a), + Contrast_b = contrast_ratio(Base, Colour_b), + gleam@float:compare(Contrast_b, Contrast_a) + end + ), + gleam@list:first(_pipe@1). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src b/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src new file mode 100644 index 0000000..a327650 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src @@ -0,0 +1,9 @@ +{application, gleam_community_colour, [ + {vsn, "1.2.0"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "Colour types, conversions, and other utilities"}, + {modules, [gleam_community@colour, + gleam_community@colour@accessibility]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_community_maths/LICENCE b/aoc2023/build/packages/gleam_community_maths/LICENCE new file mode 100644 index 0000000..a84f0ec --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/LICENCE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2023 Gleam Community Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_maths/README.md b/aoc2023/build/packages/gleam_community_maths/README.md new file mode 100644 index 0000000..c912757 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/README.md @@ -0,0 +1,59 @@ +# gleam-community/maths + +[![Package Version](https://img.shields.io/hexpm/v/gleam_community_maths)](https://hex.pm/packages/gleam_community_maths) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_maths/) + +A basic mathematics library that contains some of the most fundamental mathematics functions and utilities. + +The library supports both targets: Erlang and JavaScript. + +## Quickstart + +```gleam +import gleam_community/maths/arithmetics +import gleam_community/maths/combinatorics +import gleam_community/maths/elementary +import gleam_community/maths/piecewise +import gleam_community/maths/predicates +import gleam/float + +pub fn main() { + // Evaluate the sine function + elementary.sin(elementary.pi()) + // Returns Float: 0.0 + + // Find the greatest common divisor + arithmetics.gcd(54, 24) + // Returns Int: 6 + + // Find the minimum and maximum of a list + piecewise.extrema([10.0, 3.0, 50.0, 20.0, 3.0], float.compare) + // Returns Tuple: Ok(#(3.0, 50.0)) + + // Find the list indices of the smallest value + piecewise.arg_minimum([10, 3, 50, 20, 3], float.compare) + // Returns List: Ok([1, 4]) + + // Determine if a number is fractional + predicates.is_fractional(0.3333) + // Returns Bool: True + + // Determine if 28 is a power of 3 + predicates.is_power(28, 3) + // Returns Bool: False + + // Generate all k = 1 combinations of [1, 2] + combinatorics.list_combination([1, 2], 1) + // Returns List: Ok([[1], [2]]) +} + +``` + +## Installation + +`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_maths) +with the prefix `gleam_community_`. You can add them to your Gleam projects directly: + +```sh +gleam add gleam_community_maths +``` diff --git a/aoc2023/build/packages/gleam_community_maths/gleam.toml b/aoc2023/build/packages/gleam_community_maths/gleam.toml new file mode 100644 index 0000000..9dc5fd7 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/gleam.toml @@ -0,0 +1,12 @@ +name = "gleam_community_maths" +version = "1.0.1" + +licences = ["Apache-2.0"] +description = "A basic maths library" +repository = { type = "github", user = "gleam-community", repo = "maths" } + +[dependencies] +gleam_stdlib = "~> 0.33" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam new file mode 100644 index 0000000..3e0f63a --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam @@ -0,0 +1,618 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Arithmetics: A module containing a collection of fundamental mathematical functions relating to simple arithmetics (addition, subtraction, multiplication, etc.), but also number theory. +//// +//// * **Division functions** +//// * [`gcd`](#gcd) +//// * [`lcm`](#lcm) +//// * [`divisors`](#divisors) +//// * [`proper_divisors`](#proper_divisors) +//// * **Sums and products** +//// * [`float_sum`](#float_sum) +//// * [`int_sum`](#int_sum) +//// * [`float_product`](#float_product) +//// * [`int_product`](#int_product) +//// * [`float_cumulative_sum`](#float_cumulative_sum) +//// * [`int_cumulative_sum`](#int_cumulative_sum) +//// * [`float_cumulative_product`](#float_cumulative_product) +//// * [`int_cumulative_product`](#int_cumulative_product) +//// + +import gleam/int +import gleam/list +import gleam_community/maths/conversion +import gleam_community/maths/elementary +import gleam_community/maths/piecewise + +/// +/// +/// The function calculates the greatest common multiple of two integers $$x, y \in \mathbb{Z}$$. +/// The greatest common multiple is the largest positive integer that is divisible by both $$x$$ and $$y$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example() { +/// arithmetics.lcm(1, 1) +/// |> should.equal(1) +/// +/// arithmetics.lcm(100, 10) +/// |> should.equal(10) +/// +/// arithmetics.gcd(-36, -17) +/// |> should.equal(1) +/// } +///
+/// +/// +/// +pub fn gcd(x: Int, y: Int) -> Int { + let absx: Int = piecewise.int_absolute_value(x) + let absy: Int = piecewise.int_absolute_value(y) + do_gcd(absx, absy) +} + +fn do_gcd(x: Int, y: Int) -> Int { + case x == 0 { + True -> y + False -> { + let assert Ok(z) = int.modulo(y, x) + do_gcd(z, x) + } + } +} + +/// +/// +/// The function calculates the least common multiple of two integers $$x, y \in \mathbb{Z}$$. +/// The least common multiple is the smallest positive integer that has both $$x$$ and $$y$$ as factors. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example() { +/// arithmetics.lcm(1, 1) +/// |> should.equal(1) +/// +/// arithmetics.lcm(100, 10) +/// |> should.equal(100) +/// +/// arithmetics.lcm(-36, -17) +/// |> should.equal(612) +/// } +///
+/// +/// +/// +pub fn lcm(x: Int, y: Int) -> Int { + let absx: Int = piecewise.int_absolute_value(x) + let absy: Int = piecewise.int_absolute_value(y) + absx * absy / do_gcd(absx, absy) +} + +/// +/// +/// The function returns all the positive divisors of an integer, including the number iteself. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example() { +/// arithmetics.divisors(4) +/// |> should.equal([1, 2, 4]) +/// +/// arithmetics.divisors(6) +/// |> should.equal([1, 2, 3, 6]) +/// +/// arithmetics.proper_divisors(13) +/// |> should.equal([1, 13]) +/// } +///
+/// +/// +/// +pub fn divisors(n: Int) -> List(Int) { + find_divisors(n) +} + +fn find_divisors(n: Int) -> List(Int) { + let nabs: Float = piecewise.float_absolute_value(conversion.int_to_float(n)) + let assert Ok(sqrt_result) = elementary.square_root(nabs) + let max: Int = conversion.float_to_int(sqrt_result) + 1 + list.range(2, max) + |> list.fold( + [1, n], + fn(acc: List(Int), i: Int) -> List(Int) { + case n % i == 0 { + True -> [i, n / i, ..acc] + False -> acc + } + }, + ) + |> list.unique() + |> list.sort(int.compare) +} + +/// +/// +/// The function returns all the positive divisors of an integer, excluding the number iteself. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example() { +/// arithmetics.proper_divisors(4) +/// |> should.equal([1, 2]) +/// +/// arithmetics.proper_divisors(6) +/// |> should.equal([1, 2, 3]) +/// +/// arithmetics.proper_divisors(13) +/// |> should.equal([1]) +/// } +///
+/// +/// +/// +pub fn proper_divisors(n: Int) -> List(Int) { + let divisors: List(Int) = find_divisors(n) + divisors + |> list.take(list.length(divisors) - 1) +} + +/// +/// +/// Calculcate the sum of the elements in a list: +/// +/// \\[ +/// \sum_{i=1}^n x_i +/// \\] +/// +/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns an error +/// [] +/// |> arithmetics.float_sum() +/// |> should.equal(0.0) +/// +/// // Valid input returns a result +/// [1.0, 2.0, 3.0] +/// |> arithmetics.float_sum() +/// |> should.equal(6.0) +/// } +///
+/// +/// +/// +pub fn float_sum(arr: List(Float)) -> Float { + case arr { + [] -> 0.0 + _ -> + arr + |> list.fold(0.0, fn(acc: Float, a: Float) -> Float { a +. acc }) + } +} + +/// +/// +/// Calculcate the sum of the elements in a list: +/// +/// \\[ +/// \sum_{i=1}^n x_i +/// \\] +/// +/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns 0 +/// [] +/// |> arithmetics.int_sum() +/// |> should.equal(0) +/// +/// // Valid input returns a result +/// [1, 2, 3] +/// |> arithmetics.int_sum() +/// |> should.equal(6) +/// } +///
+/// +/// +/// +pub fn int_sum(arr: List(Int)) -> Int { + case arr { + [] -> 0 + _ -> + arr + |> list.fold(0, fn(acc: Int, a: Int) -> Int { a + acc }) + } +} + +/// +/// +/// Calculcate the product of the elements in a list: +/// +/// \\[ +/// \prod_{i=1}^n x_i +/// \\] +/// +/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns 0.0 +/// [] +/// |> arithmetics.float_product() +/// |> should.equal(0.0) +/// +/// // Valid input returns a result +/// [1.0, 2.0, 3.0] +/// |> arithmetics.float_product() +/// |> should.equal(6.0) +/// } +///
+/// +/// +/// +pub fn float_product(arr: List(Float)) -> Float { + case arr { + [] -> 1.0 + _ -> + arr + |> list.fold(1.0, fn(acc: Float, a: Float) -> Float { a *. acc }) + } +} + +/// +/// +/// Calculcate the product of the elements in a list: +/// +/// \\[ +/// \prod_{i=1}^n x_i +/// \\] +/// +/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns 0 +/// [] +/// |> arithmetics.int_product() +/// |> should.equal(0) +/// +/// // Valid input returns a result +/// [1, 2, 3] +/// |> arithmetics.int_product() +/// |> should.equal(6) +/// } +///
+/// +/// +/// +pub fn int_product(arr: List(Int)) -> Int { + case arr { + [] -> 1 + _ -> + arr + |> list.fold(1, fn(acc: Int, a: Int) -> Int { a * acc }) + } +} + +/// +/// +/// Calculcate the cumulative sum of the elements in a list: +/// +/// \\[ +/// v_j = \sum_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n +/// \\] +/// +/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative sum of $$n$$ elements. +/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. +/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// [] +/// |> arithmetics.float_cumulative_sum() +/// |> should.equal([]) +/// +/// // Valid input returns a result +/// [1.0, 2.0, 3.0] +/// |> arithmetics.float_cumulative_sum() +/// |> should.equal([1.0, 3.0, 6.0]) +/// } +///
+/// +/// +/// +pub fn float_cumulative_sum(arr: List(Float)) -> List(Float) { + case arr { + [] -> [] + _ -> + arr + |> list.scan(0.0, fn(acc: Float, a: Float) -> Float { a +. acc }) + } +} + +/// +/// +/// Calculcate the cumulative sum of the elements in a list: +/// +/// \\[ +/// v_j = \sum_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n +/// \\] +/// +/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative sum of $$n$$ elements. +/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. +/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// [] +/// |> arithmetics.int_cumulative_sum() +/// |> should.equal([]) +/// +/// // Valid input returns a result +/// [1, 2, 3] +/// |> arithmetics.int_cumulative_sum() +/// |> should.equal([1, 3, 6]) +/// } +///
+/// +/// +/// +pub fn int_cumulative_sum(arr: List(Int)) -> List(Int) { + case arr { + [] -> [] + _ -> + arr + |> list.scan(0, fn(acc: Int, a: Int) -> Int { a + acc }) + } +} + +/// +/// +/// Calculcate the cumulative product of the elements in a list: +/// +/// \\[ +/// v_j = \prod_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n +/// \\] +/// +/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative product of $$n$$ elements. +/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. +/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns an error +/// [] +/// |> arithmetics.float_cumulative_product() +/// |> should.equal([]) +/// +/// // Valid input returns a result +/// [1.0, 2.0, 3.0] +/// |> arithmetics.float_cumulative_product() +/// |> should.equal([1.0, 2.0, 6.0]) +/// } +///
+/// +/// +/// +pub fn float_cumumlative_product(arr: List(Float)) -> List(Float) { + case arr { + [] -> [] + _ -> + arr + |> list.scan(1.0, fn(acc: Float, a: Float) -> Float { a *. acc }) + } +} + +/// +/// +/// Calculcate the cumulative product of the elements in a list: +/// +/// \\[ +/// v_j = \prod_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n +/// \\] +/// +/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative product of $$n$$ elements. +/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. +/// The value $$v_j$$ is thus the product of the $$1$$ to $$j$$ first elements in the given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/arithmetics +/// +/// pub fn example () { +/// // An empty list returns an error +/// [] +/// |> arithmetics.int_cumulative_product() +/// |> should.equal([]) +/// +/// // Valid input returns a result +/// [1, 2, 3] +/// |> arithmetics.int_cumulative_product() +/// |> should.equal([1, 2, 6]) +/// } +///
+/// +/// +/// +pub fn int_cumulative_product(arr: List(Int)) -> List(Int) { + case arr { + [] -> [] + _ -> + arr + |> list.scan(1, fn(acc: Int, a: Int) -> Int { a * acc }) + } +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam new file mode 100644 index 0000000..ee771a1 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam @@ -0,0 +1,432 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Combinatorics: A module that offers mathematical functions related to counting, arrangements, and combinations. +//// +//// * **Combinatorial functions** +//// * [`combination`](#combination) +//// * [`factorial`](#factorial) +//// * [`permutation`](#permutation) +//// * [`list_combination`](#list_combination) +//// * [`list_permutation`](#list_permutation) +//// * [`cartesian_product`](#cartesian_product) +//// + +import gleam/list +import gleam/set + +/// +/// +/// A combinatorial function for computing the number of a $$k$$-combinations of $$n$$ elements: +/// +/// \\[ +/// C(n, k) = \binom{n}{k} = \frac{n!}{k! (n-k)!} +/// \\] +/// Also known as "$$n$$ choose $$k$$" or the binomial coefficient. +/// +/// The implementation uses the effecient iterative multiplicative formula for the computation. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/combinatorics +/// +/// pub fn example() { +/// // Invalid input gives an error +/// // Error on: n = -1 < 0 +/// combinatorics.combination(-1, 1) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// combinatorics.combination(4, 0) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.combination(4, 4) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.combination(4, 2) +/// |> should.equal(Ok(6)) +/// } +///
+/// +/// +/// +pub fn combination(n: Int, k: Int) -> Result(Int, String) { + case n < 0 { + True -> + "Invalid input argument: n < 0. Valid input is n > 0." + |> Error + False -> + case k < 0 || k > n { + True -> + 0 + |> Ok + False -> + case k == 0 || k == n { + True -> + 1 + |> Ok + False -> { + let min = case k < n - k { + True -> k + False -> n - k + } + list.range(1, min) + |> list.fold( + 1, + fn(acc: Int, x: Int) -> Int { acc * { n + 1 - x } / x }, + ) + |> Ok + } + } + } + } +} + +/// +/// +/// A combinatorial function for computing the total number of combinations of $$n$$ +/// elements, that is $$n!$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/combinatorics +/// +/// pub fn example() { +/// // Invalid input gives an error +/// combinatorics.factorial(-1) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// combinatorics.factorial(0) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.factorial(1) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.factorial(2) +/// |> should.equal(Ok(2)) +/// +/// combinatorics.factorial(3) +/// |> should.equal(Ok(6)) +/// +/// combinatorics.factorial(4) +/// |> should.equal(Ok(24)) +/// } +///
+/// +/// +/// +pub fn factorial(n) -> Result(Int, String) { + case n < 0 { + True -> + "Invalid input argument: n < 0. Valid input is n > 0." + |> Error + False -> + case n { + 0 -> + 1 + |> Ok + 1 -> + 1 + |> Ok + _ -> + list.range(1, n) + |> list.fold(1, fn(acc: Int, x: Int) { acc * x }) + |> Ok + } + } +} + +/// +/// +/// A combinatorial function for computing the number of $$k$$-permuations (without repetitions) +/// of $$n$$ elements: +/// +/// \\[ +/// P(n, k) = \frac{n!}{(n - k)!} +/// \\] +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/combinatorics +/// +/// pub fn example() { +/// // Invalid input gives an error +/// // Error on: n = -1 < 0 +/// combinatorics.permutation(-1, 1) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// combinatorics.permutation(4, 0) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.permutation(4, 4) +/// |> should.equal(Ok(1)) +/// +/// combinatorics.permutation(4, 2) +/// |> should.equal(Ok(12)) +/// } +///
+/// +/// +/// +pub fn permutation(n: Int, k: Int) -> Result(Int, String) { + case n < 0 { + True -> + "Invalid input argument: n < 0. Valid input is n > 0." + |> Error + False -> + case k < 0 || k > n { + True -> + 0 + |> Ok + False -> + case k == n { + True -> + 1 + |> Ok + False -> { + let assert Ok(v1) = factorial(n) + let assert Ok(v2) = factorial(n - k) + v1 / v2 + |> Ok + } + } + } + } +} + +/// +/// +/// Generate all $$k$$-combinations based on a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/set +/// import gleam_community/maths/combinatorics +/// +/// pub fn example () { +/// let assert Ok(result) = combinatorics.list_combination([1, 2, 3, 4], 3) +/// result +/// |> set.from_list() +/// |> should.equal(set.from_list([[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]])) +/// } +///
+/// +/// +/// +pub fn list_combination(arr: List(a), k: Int) -> Result(List(List(a)), String) { + case k < 0 { + True -> + "Invalid input argument: k < 0. Valid input is k > 0." + |> Error + False -> { + case k > list.length(arr) { + True -> + "Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)." + |> Error + False -> { + do_list_combination(arr, k, []) + |> Ok + } + } + } + } +} + +fn do_list_combination(arr: List(a), k: Int, prefix: List(a)) -> List(List(a)) { + case k { + 0 -> [list.reverse(prefix)] + _ -> + case arr { + [] -> [] + [x, ..xs] -> { + let with_x = do_list_combination(xs, k - 1, [x, ..prefix]) + let without_x = do_list_combination(xs, k, prefix) + list.append(with_x, without_x) + } + } + } +} + +/// +/// +/// Generate all permutations of a given list. +/// +/// Repeated elements are treated as distinct for the +/// purpose of permutations, so two identical elements +/// for example will appear "both ways round". This +/// means lists with repeated elements return the same +/// number of permutations as ones without. +/// +/// N.B. The output of this function is a list of size +/// factorial in the size of the input list. Caution is +/// advised on input lists longer than ~11 elements, which +/// may cause the VM to use unholy amounts of memory for +/// the output. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/set +/// import gleam_community/maths/combinatorics +/// +/// pub fn example () { +/// [1, 2, 3] +/// |> combinatorics.list_permutation() +/// |> set.from_list() +/// |> should.equal(set.from_list([ +/// [1, 2, 3], +/// [2, 1, 3], +/// [3, 1, 2], +/// [1, 3, 2], +/// [2, 3, 1], +/// [3, 2, 1], +/// ])) +/// +/// [1.0, 1.0] +/// |> combinatorics.list_permutation() +/// |> should.equal([[1.0, 1.0], [1.0, 1.0]]) +/// } +///
+/// +/// +/// +pub fn list_permutation(arr: List(a)) -> List(List(a)) { + case arr { + [] -> [[]] + _ -> { + use x <- list.flat_map(arr) + // `x` is drawn from the list `arr` above, + // so Ok(...) can be safely asserted as the result of `list.pop` below + let assert Ok(#(_, remaining)) = list.pop(arr, fn(y) { x == y }) + list.map(list_permutation(remaining), fn(perm) { [x, ..perm] }) + } + } +} + +/// +/// +/// Generate a list containing all combinations of pairs of elements coming from two given lists. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/list +/// import gleam_community/maths/combinatorics +/// +/// pub fn example () { +/// [] +/// |> combinatorics.cartesian_product([]) +/// |> should.equal([]) +/// +/// [1.0, 10.0] +/// |> combinatorics.cartesian_product([1.0, 2.0]) +/// |> should.equal([#(1.0, 1.0), #(1.0, 2.0), #(10.0, 1.0), #(10.0, 2.0)]) +/// } +///
+/// +/// +/// +pub fn cartesian_product(xarr: List(a), yarr: List(a)) -> List(#(a, a)) { + let xset: set.Set(a) = + xarr + |> set.from_list() + let yset: set.Set(a) = + yarr + |> set.from_list() + xset + |> set.fold( + set.new(), + fn(accumulator0: set.Set(#(a, a)), member0: a) -> set.Set(#(a, a)) { + set.fold( + yset, + accumulator0, + fn(accumulator1: set.Set(#(a, a)), member1: a) -> set.Set(#(a, a)) { + set.insert(accumulator1, #(member0, member1)) + }, + ) + }, + ) + |> set.to_list() +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam new file mode 100644 index 0000000..017aabd --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam @@ -0,0 +1,183 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Conversion: A module containing various functions for converting between types and quantities. +//// +//// * **Misc. functions** +//// * [`float_to_int`](#float_to_int) +//// * [`int_to_float`](#int_to_float) +//// * [`degrees_to_radians`](#degrees_to_radians) +//// * [`radians_to_degrees`](#radians_to_degrees) + +import gleam/int + +/// +/// +/// A function that produces a number of type `Float` from an `Int`. +/// +/// Note: The function is equivalent to the `int.to_float` function in the Gleam stdlib. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/conversion +/// +/// pub fn example() { +/// conversion.int_to_float(-1) +/// |> should.equal(-1.0) +/// +/// conversion.int_to_float(1) +/// |> should.equal(1.0) +/// } +///
+/// +/// +/// +pub fn int_to_float(x: Int) -> Float { + int.to_float(x) +} + +/// +/// +/// The function returns the integral part of a given floating point value. +/// That is, everything after the decimal point of a given floating point value is discarded and only the integer value before the decimal point is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/conversion +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// conversion.float_to_int(12.0654) +/// |> should.equal(12) +/// +/// // Note: Making the following function call is equivalent +/// // but instead of returning a value of type 'Int' a value +/// // of type 'Float' is returned. +/// piecewise.round(12.0654, option.Some(0), option.Some(piecewise.RoundToZero)) +/// |> should.equal(Ok(12.0)) +/// } +///
+/// +/// +/// +pub fn float_to_int(x: Float) -> Int { + do_to_int(x) +} + +@external(erlang, "erlang", "trunc") +@external(javascript, "../../maths.mjs", "truncate") +fn do_to_int(a: Float) -> Int + +/// +/// +/// Convert a value in degrees to a value measured in radians. +/// That is, $$1 \text{ degrees } = \frac{\pi}{180} \text{ radians }$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/conversion +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// conversion.degrees_to_radians(360.) +/// |> should.equal(2. *. elementary.pi()) +/// } +///
+/// +/// +/// +pub fn degrees_to_radians(x: Float) -> Float { + x *. do_pi() /. 180.0 +} + +/// +/// +/// Convert a value in degrees to a value measured in radians. +/// That is, $$1 \text{ radians } = \frac{180}{\pi} \text{ degrees }$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/conversion +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// conversion.radians_to_degrees(0.0) +/// |> should.equal(0.0) +/// +/// conversion.radians_to_degrees(2. *. elementary.pi()) +/// |> should.equal(360.) +/// } +///
+/// +/// +/// +pub fn radians_to_degrees(x: Float) -> Float { + x *. 180.0 /. do_pi() +} + +@external(erlang, "math", "pi") +@external(javascript, "../../maths.mjs", "pi") +fn do_pi() -> Float diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam new file mode 100644 index 0000000..1b518a4 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam @@ -0,0 +1,1256 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Elementary: A module containing a comprehensive set of foundational mathematical functions and constants. +//// +//// * **Trigonometric and hyperbolic functions** +//// * [`acos`](#acos) +//// * [`acosh`](#acosh) +//// * [`asin`](#asin) +//// * [`asinh`](#asinh) +//// * [`atan`](#atan) +//// * [`atan2`](#atan2) +//// * [`atanh`](#atanh) +//// * [`cos`](#cos) +//// * [`cosh`](#cosh) +//// * [`sin`](#sin) +//// * [`sinh`](#sinh) +//// * [`tan`](#tan) +//// * [`tanh`](#tanh) +//// * **Powers, logs and roots** +//// * [`exponential`](#exponential) +//// * [`natural_logarithm`](#natural_logarithm) +//// * [`logarithm`](#logarithm) +//// * [`logarithm_2`](#logarithm_2) +//// * [`logarithm_10`](#logarithm_10) +//// * [`power`](#power) +//// * [`square_root`](#square_root) +//// * [`cube_root`](#cube_root) +//// * [`nth_root`](#nth_root) +//// * **Mathematical constants** +//// * [`pi`](#pi) +//// * [`tau`](#tau) +//// * [`e`](#e) +//// + +import gleam/int +import gleam/option + +/// +/// +/// The inverse cosine function: +/// +/// \\[ +/// \forall x \in \[-1, 1\], \\; \cos^{-1}{(x)} = y \in \[0, \pi \] +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\[-1, 1\]$$ as input and returns a +/// numeric value $$y$$ that lies in the range $$\[0, \pi \]$$ (an angle in radians). +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.acos(1.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.acos(1.1) +/// |> should.be_error() +/// +/// elementary.acos(-1.1) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn acos(x: Float) -> Result(Float, String) { + case x >=. -1.0 && x <=. 1.0 { + True -> + do_acos(x) + |> Ok + False -> + "Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1." + |> Error + } +} + +@external(erlang, "math", "acos") +@external(javascript, "../../maths.mjs", "acos") +fn do_acos(a: Float) -> Float + +/// +/// +/// The inverse hyperbolic cosine function: +/// +/// \\[ +/// \forall x \in [1, +\infty\), \\; \cosh^{-1}{(x)} = y \in \[0, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\[1, +\infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\[0, +\infty\)$$ (an angle in radians). +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.acosh(1.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.acosh(0.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn acosh(x: Float) -> Result(Float, String) { + case x >=. 1.0 { + True -> + do_acosh(x) + |> Ok + False -> + "Invalid input argument: x < 1. Valid input is x >= 1." + |> Error + } +} + +@external(erlang, "math", "acosh") +@external(javascript, "../../maths.mjs", "acosh") +fn do_acosh(a: Float) -> Float + +/// +/// +/// The inverse sine function: +/// +/// \\[ +/// \forall x \in \[-1, 1\], \\; \sin^{-1}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\[-1, 1\]$$ as input and returns a numeric +/// value $$y$$ that lies in the range $$\[-\frac{\pi}{2}, \frac{\pi}{2}\]$$ (an angle in radians). +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.asin(0.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.asin(1.1) +/// |> should.be_error() +/// +/// elementary.asin(-1.1) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn asin(x: Float) -> Result(Float, String) { + case x >=. -1.0 && x <=. 1.0 { + True -> + do_asin(x) + |> Ok + False -> + "Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1." + |> Error + } +} + +@external(erlang, "math", "asin") +@external(javascript, "../../maths.mjs", "asin") +fn do_asin(a: Float) -> Float + +/// +/// +/// The inverse hyperbolic sine function: +/// +/// \\[ +/// \forall x \in \(-\infty, \infty\), \\; \sinh^{-1}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, +\infty\)$$ (an angle in radians). +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.asinh(0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn asinh(x: Float) -> Float { + do_asinh(x) +} + +@external(erlang, "math", "asinh") +@external(javascript, "../../maths.mjs", "asinh") +fn do_asinh(a: Float) -> Float + +/// +/// +/// The inverse tangent function: +/// +/// \\[ +/// \forall x \in \(-\infty, \infty\), \\; \tan^{-1}{(x)} = y \in \[-\frac{\pi}{2}, \frac{\pi}{2}\] +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\[-\frac{\pi}{2}, \frac{\pi}{2}\]$$ (an angle in radians). +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.atan(0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn atan(x: Float) -> Float { + do_atan(x) +} + +@external(erlang, "math", "atan") +@external(javascript, "../../maths.mjs", "atan") +fn do_atan(a: Float) -> Float + +/// +/// +/// The inverse 2-argument tangent function: +/// +/// \\[ +/// \text{atan2}(y, x) = +/// \begin{cases} +/// \tan^{-1}(\frac y x) &\text{if } x > 0, \\\\ +/// \tan^{-1}(\frac y x) + \pi &\text{if } x < 0 \text{ and } y \ge 0, \\\\ +/// \tan^{-1}(\frac y x) - \pi &\text{if } x < 0 \text{ and } y < 0, \\\\ +/// +\frac{\pi}{2} &\text{if } x = 0 \text{ and } y > 0, \\\\ +/// -\frac{\pi}{2} &\text{if } x = 0 \text{ and } y < 0, \\\\ +/// \text{undefined} &\text{if } x = 0 \text{ and } y = 0. +/// \end{cases} +/// \\] +/// +/// The function returns the angle in radians from the x-axis to the line containing the +/// origin $$\(0, 0\)$$ and a point given as input with coordinates $$\(x, y\)$$. The numeric value +/// returned by $$\text{atan2}(y, x)$$ is in the range $$\[-\pi, \pi\]$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.atan2(0.0, 0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn atan2(y: Float, x: Float) -> Float { + do_atan2(y, x) +} + +@external(erlang, "math", "atan2") +@external(javascript, "../../maths.mjs", "atan2") +fn do_atan2(a: Float, b: Float) -> Float + +/// +/// +/// The inverse hyperbolic tangent function: +/// +/// \\[ +/// \forall x \in \(-1, 1\), \\; \tanh^{-1}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-1, 1\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$ (an angle in radians). +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.atanh(0.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.atanh(1.0) +/// |> should.be_error() +/// +/// elementary.atanh(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn atanh(x: Float) -> Result(Float, String) { + case x >. -1.0 && x <. 1.0 { + True -> + do_atanh(x) + |> Ok + False -> + "Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1." + |> Error + } +} + +@external(erlang, "math", "atanh") +@external(javascript, "../../maths.mjs", "atanh") +fn do_atanh(a: Float) -> Float + +/// +/// +/// The cosine function: +/// +/// \\[ +/// \forall x \in \(-\infty, +\infty\), \\; \cos{(x)} = y \in \[-1, 1\] +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ (an angle in radians) +/// as input and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.cos(0.0) +/// |> should.equal(1.0) +/// +/// elementary.cos(elementary.pi()) +/// |> should.equal(-1.0) +/// } +///
+/// +/// +/// +pub fn cos(x: Float) -> Float { + do_cos(x) +} + +@external(erlang, "math", "cos") +@external(javascript, "../../maths.mjs", "cos") +fn do_cos(a: Float) -> Float + +/// +/// +/// The hyperbolic cosine function: +/// +/// \\[ +/// \forall x \in \(-\infty, \infty\), \\; \cosh{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ as input (an angle in radians) +/// and returns a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. +/// If the input value is too large an overflow error might occur. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.cosh(0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn cosh(x: Float) -> Float { + do_cosh(x) +} + +@external(erlang, "math", "cosh") +@external(javascript, "../../maths.mjs", "cosh") +fn do_cosh(a: Float) -> Float + +/// +/// +/// The sine function: +/// +/// \\[ +/// \forall x \in \(-\infty, +\infty\), \\; \sin{(x)} = y \in \[-1, 1\] +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ (an angle in radians) +/// as input and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.sin(0.0) +/// |> should.equal(0.0) +/// +/// elementary.sin(0.5 *. elementary.pi()) +/// |> should.equal(1.0) +/// } +///
+/// +/// +/// +pub fn sin(x: Float) -> Float { + do_sin(x) +} + +@external(erlang, "math", "sin") +@external(javascript, "../../maths.mjs", "sin") +fn do_sin(a: Float) -> Float + +/// +/// +/// The hyperbolic sine function: +/// +/// \\[ +/// \forall x \in \(-\infty, +\infty\), \\; \sinh{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input +/// (an angle in radians) and returns a numeric value $$y$$ that lies in the range +/// $$\(-\infty, +\infty\)$$. If the input value is too large an overflow error might +/// occur. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.sinh(0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn sinh(x: Float) -> Float { + do_sinh(x) +} + +@external(erlang, "math", "sinh") +@external(javascript, "../../maths.mjs", "sinh") +fn do_sinh(a: Float) -> Float + +/// +/// +/// The tangent function: +/// +/// \\[ +/// \forall x \in \(-\infty, +\infty\), \\; \tan{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input +/// (an angle in radians) and returns a numeric value $$y$$ that lies in the range +/// $$\(-\infty, +\infty\)$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.tan(0.0) +/// |> should.equal(0.0) +/// } +///
+/// +/// +/// +pub fn tan(x: Float) -> Float { + do_tan(x) +} + +@external(erlang, "math", "tan") +@external(javascript, "../../maths.mjs", "tan") +fn do_tan(a: Float) -> Float + +/// +/// +/// The hyperbolic tangent function: +/// +/// \\[ +/// \forall x \in \(-\infty, \infty\), \\; \tanh{(x)} = y \in \[-1, 1\] +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ as input (an angle in radians) +/// and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example () { +/// elementary.tanh(0.0) +/// |> should.equal(0.0) +/// +/// elementary.tanh(25.0) +/// |> should.equal(1.0) +/// +/// elementary.tanh(-25.0) +/// |> should.equal(-1.0) +/// } +///
+/// +/// +/// +pub fn tanh(x: Float) -> Float { + do_tanh(x) +} + +@external(erlang, "math", "tanh") +@external(javascript, "../../maths.mjs", "tanh") +fn do_tanh(a: Float) -> Float + +/// +/// +/// The exponential function: +/// +/// \\[ +/// \forall x \in \(-\infty, \infty\), \\; e^{(x)} = y \in \(0, +\infty\) +/// \\] +/// +/// $$e \approx 2.71828\dots$$ is Eulers' number. +/// +/// Note: If the input value $$x$$ is too large an overflow error might occur. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.exponential(0.0) +/// |> should.equal(1.0) +/// } +///
+/// +/// +/// +pub fn exponential(x: Float) -> Float { + do_exponential(x) +} + +@external(erlang, "math", "exp") +@external(javascript, "../../maths.mjs", "exponential") +fn do_exponential(a: Float) -> Float + +/// +/// +/// The natural logarithm function: +/// +/// \\[ +/// \forall x \in \(0, \infty\), \\; \log_{e}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example () { +/// elementary.natural_logarithm(1.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.natural_logarithm(elementary.e()) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.natural_logarithm(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +/// +pub fn natural_logarithm(x: Float) -> Result(Float, String) { + case x >. 0.0 { + True -> + do_natural_logarithm(x) + |> Ok + False -> + "Invalid input argument: x <= 0. Valid input is x > 0." + |> Error + } +} + +@external(erlang, "math", "log") +@external(javascript, "../../maths.mjs", "logarithm") +fn do_natural_logarithm(a: Float) -> Float + +/// +/// +/// The base $$b$$ logarithm function (computed through the "change of base" formula): +/// +/// \\[ +/// \forall x \in \(0, \infty\) \textnormal{ and } b > 1, \\; \log_{b}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ and a base $$b > 1$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/elementary +/// +/// pub fn example () { +/// elementary.logarithm(1.0, option.Some(10.0)) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.logarithm(elementary.e(), option.Some(elementary.e())) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.logarithm(-1.0, option.Some(2.0)) +/// |> should.be_error() +/// } +///
+/// +/// +/// +/// +pub fn logarithm(x: Float, base: option.Option(Float)) -> Result(Float, String) { + case x >. 0.0 { + True -> + case base { + option.Some(a) -> + case a >. 0.0 && a != 1.0 { + True -> { + // Apply the "change of base formula" + let assert Ok(numerator) = logarithm_10(x) + let assert Ok(denominator) = logarithm_10(a) + numerator /. denominator + |> Ok + } + False -> + "Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1." + |> Error + } + _ -> + "Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1." + |> Error + } + _ -> + "Invalid input argument: x <= 0. Valid input is x > 0." + |> Error + } +} + +/// +/// +/// The The base-2 logarithm function: +/// +/// \\[ +/// \forall x \in \(0, \infty), \\; \log_{2}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example () { +/// elementary.logarithm_2(1.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.logarithm_2(2.0) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.logarithm_2(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn logarithm_2(x: Float) -> Result(Float, String) { + case x >. 0.0 { + True -> + do_logarithm_2(x) + |> Ok + False -> + "Invalid input argument: x <= 0. Valid input is x > 0." + |> Error + } +} + +@external(erlang, "math", "log2") +@external(javascript, "../../maths.mjs", "logarithm_2") +fn do_logarithm_2(a: Float) -> Float + +/// +/// +/// The base-10 logarithm function: +/// +/// \\[ +/// \forall x \in \(0, \infty), \\; \log_{10}{(x)} = y \in \(-\infty, +\infty\) +/// \\] +/// +/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns +/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. +/// If the input value is outside the domain of the function an error is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example () { +/// elementary.logarithm_10(1.0) +/// |> should.equal(Ok(0.0)) +/// +/// elementary.logarithm_10(10.0) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.logarithm_10(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn logarithm_10(x: Float) -> Result(Float, String) { + case x >. 0.0 { + True -> + do_logarithm_10(x) + |> Ok + False -> + "Invalid input argument: x <= 0. Valid input is x > 0." + |> Error + } +} + +@external(erlang, "math", "log10") +@external(javascript, "../../maths.mjs", "logarithm_10") +fn do_logarithm_10(a: Float) -> Float + +/// +/// +/// +/// +/// The exponentiation function: $$y = x^{a}$$. +/// +/// Note that the function is not defined if: +/// 1. The base is negative ($$x < 0$$) and the exponent is fractional +/// ($$a = \frac{n}{m}$$ is an irrreducible fraction). An error will be returned +/// as an imaginary number will otherwise have to be returned. +/// 2. The base is zero ($$x = 0$$) and the exponent is negative ($$a < 0$$) then the +/// expression is equivalent to the exponent $$y$$ divided by $$0$$ and an +/// error will have to be returned as the expression is otherwise undefined. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.power(2., -1.) +/// |> should.equal(Ok(0.5)) +/// +/// elementary.power(2., 2.) +/// |> should.equal(Ok(4.0)) +/// +/// elementary.power(-1., 0.5) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn power(x: Float, y: Float) -> Result(Float, String) { + let fractional: Bool = do_ceiling(y) -. y >. 0.0 + // In the following check: + // 1. If the base (x) is negative and the exponent (y) is fractional + // then return an error as it will otherwise be an imaginary number + // 2. If the base (x) is 0 and the exponent (y) is negative then the + // expression is equivalent to the exponent (y) divided by 0 and an + // error should be returned + case x <. 0.0 && fractional || x == 0.0 && y <. 0.0 { + True -> + "Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0." + |> Error + False -> + do_power(x, y) + |> Ok + } +} + +@external(erlang, "math", "pow") +@external(javascript, "../../maths.mjs", "power") +fn do_power(a: Float, b: Float) -> Float + +@external(erlang, "math", "ceil") +@external(javascript, "../../maths.mjs", "ceiling") +fn do_ceiling(a: Float) -> Float + +/// +/// +/// The square root function: $$y = \sqrt[2]{x} = x^{\frac{1}{2}}$$. +/// +/// Note that the function is not defined if: +/// 1. The input is negative ($$x < 0$$). An error will be returned +/// as an imaginary number will otherwise have to be returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.square_root(1.0) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.square_root(4.0) +/// |> should.equal(Ok(2.0)) +/// +/// elementary.square_root(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn square_root(x: Float) -> Result(Float, String) { + // In the following check: + // 1. If x is negative then return an error as it will otherwise be an + // imaginary number + case x <. 0.0 { + True -> + "Invalid input argument: x < 0." + |> Error + False -> { + let assert Ok(result) = power(x, 1.0 /. 2.0) + result + |> Ok + } + } +} + +/// +/// +/// The cube root function: $$y = \sqrt[3]{x} = x^{\frac{1}{3}}$$. +/// +/// Note that the function is not defined if: +/// 1. The input is negative ($$x < 0$$). An error will be returned +/// as an imaginary number will otherwise have to be returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.cube_root(1.0) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.cube_root(27.0) +/// |> should.equal(Ok(3.0)) +/// +/// elementary.cube_root(-1.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn cube_root(x: Float) -> Result(Float, String) { + // In the following check: + // 1. If x is negative then return an error as it will otherwise be an + // imaginary number + case x <. 0.0 { + True -> + "Invalid input argument: x < 0." + |> Error + False -> { + let assert Ok(result) = power(x, 1.0 /. 3.0) + result + |> Ok + } + } +} + +/// +/// +/// The $$n$$'th root function: $$y = \sqrt[n]{x} = x^{\frac{1}{n}}$$. +/// +/// Note that the function is not defined if: +/// 1. The input is negative ($$x < 0$$). An error will be returned +/// as an imaginary number will otherwise have to be returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// elementary.nth_root(1.0, 2) +/// |> should.equal(Ok(1.0)) +/// +/// elementary.nth_root(27.0, 3) +/// |> should.equal(Ok(3.0)) +/// +/// elementary.nth_root(256.0, 4) +/// |> should.equal(Ok(4.0)) +/// +/// elementary.nth_root(-1.0, 2) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn nth_root(x: Float, n: Int) -> Result(Float, String) { + // In the following check: + // 1. If x is negative then return an error as it will otherwise be an + // imaginary number + case x <. 0.0 { + True -> + "Invalid input argument: x < 0. Valid input is x > 0" + |> Error + False -> + case n >= 1 { + True -> { + let assert Ok(result) = power(x, 1.0 /. int.to_float(n)) + result + |> Ok + } + False -> + "Invalid input argument: n < 1. Valid input is n >= 2." + |> Error + } + } +} + +/// +/// +/// The mathematical constant pi: $$\pi \approx 3.1415\dots$$ +/// +/// +/// +pub fn pi() -> Float { + do_pi() +} + +@external(erlang, "math", "pi") +@external(javascript, "../../maths.mjs", "pi") +fn do_pi() -> Float + +/// +/// +/// The mathematical constant tau: $$\tau = 2 \cdot \pi \approx 6.283\dots$$ +/// +/// +/// +pub fn tau() -> Float { + 2.0 *. pi() +} + +/// +/// +/// Euler's number $$e \approx 2.71828\dots$$. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// +/// pub fn example() { +/// // Test that the constant is approximately equal to 2.7128... +/// elementary.e() +/// |> elementary.is_close(2.7128, 0.0, 0.000001) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn e() -> Float { + exponential(1.0) +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam new file mode 100644 index 0000000..1dab2b4 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam @@ -0,0 +1,560 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Metrics: A module offering functions for calculating distances and other types of metrics. +//// +//// * **Distances** +//// * [`norm`](#norm) +//// * [`manhatten_distance`](#float_manhatten_distance) +//// * [`minkowski_distance`](#minkowski_distance) +//// * [`euclidean_distance`](#euclidean_distance) +//// * **Basic statistical measures** +//// * [`mean`](#mean) +//// * [`median`](#median) +//// * [`variance`](#variance) +//// * [`standard_deviation`](#standard_deviation) +//// + +import gleam_community/maths/elementary +import gleam_community/maths/piecewise +import gleam_community/maths/arithmetics +import gleam_community/maths/predicates +import gleam_community/maths/conversion +import gleam/list +import gleam/pair +import gleam/float + +/// +/// +/// Calculcate the $$p$$-norm of a list (representing a vector): +/// +/// \\[ +/// \left( \sum_{i=1}^n \left|x_i\right|^{p} \right)^{\frac{1}{p}} +/// \\] +/// +/// In the formula, $$n$$ is the length of the list and $$x_i$$ is the value in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/metrics +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// +/// [1.0, 1.0, 1.0] +/// |> metrics.norm(1.0) +/// |> predicates.is_close(3.0, 0.0, tol) +/// |> should.be_true() +/// +/// [1.0, 1.0, 1.0] +/// |> metrics.norm(-1.0) +/// |> predicates.is_close(0.3333333333333333, 0.0, tol) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn norm(arr: List(Float), p: Float) -> Float { + case arr { + [] -> 0.0 + _ -> { + let agg: Float = + arr + |> list.fold( + 0.0, + fn(acc: Float, a: Float) -> Float { + let assert Ok(result) = + elementary.power(piecewise.float_absolute_value(a), p) + result +. acc + }, + ) + let assert Ok(result) = elementary.power(agg, 1.0 /. p) + result + } + } +} + +/// +/// +/// Calculcate the Manhatten distance between two lists (representing vectors): +/// +/// \\[ +/// \sum_{i=1}^n \left|x_i - y_i \right| +/// \\] +/// +/// In the formula, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/metrics +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// +/// // Empty lists returns 0.0 +/// metrics.float_manhatten_distance([], []) +/// |> should.equal(Ok(0.0)) +/// +/// // Differing lengths returns error +/// metrics.manhatten_distance([], [1.0]) +/// |> should.be_error() +/// +/// let assert Ok(result) = metrics.manhatten_distance([0.0, 0.0], [1.0, 2.0]) +/// result +/// |> predicates.is_close(3.0, 0.0, tol) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn manhatten_distance( + xarr: List(Float), + yarr: List(Float), +) -> Result(Float, String) { + minkowski_distance(xarr, yarr, 1.0) +} + +/// +/// +/// Calculcate the Minkowski distance between two lists (representing vectors): +/// +/// \\[ +/// \left( \sum_{i=1}^n \left|x_i - y_i \right|^{p} \right)^{\frac{1}{p}} +/// \\] +/// +/// In the formula, $$p >= 1$$ is the order, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. +/// +/// The Minkowski distance is a generalization of both the Euclidean distance ($$p=2$$) and the Manhattan distance ($$p = 1$$). +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/metrics +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// +/// // Empty lists returns 0.0 +/// metrics.minkowski_distance([], [], 1.0) +/// |> should.equal(Ok(0.0)) +/// +/// // Differing lengths returns error +/// metrics.minkowski_distance([], [1.0], 1.0) +/// |> should.be_error() +/// +/// // Test order < 1 +/// metrics.minkowski_distance([0.0, 0.0], [0.0, 0.0], -1.0) +/// |> should.be_error() +/// +/// let assert Ok(result) = metrics.minkowski_distance([0.0, 0.0], [1.0, 2.0], 1.0) +/// result +/// |> predicates.is_close(3.0, 0.0, tol) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn minkowski_distance( + xarr: List(Float), + yarr: List(Float), + p: Float, +) -> Result(Float, String) { + let xlen: Int = list.length(xarr) + let ylen: Int = list.length(yarr) + case xlen == ylen { + False -> + "Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)." + |> Error + True -> + case p <. 1.0 { + True -> + "Invalid input argument: p < 1. Valid input is p >= 1." + |> Error + False -> + list.zip(xarr, yarr) + |> list.map(fn(tuple: #(Float, Float)) -> Float { + pair.first(tuple) -. pair.second(tuple) + }) + |> norm(p) + |> Ok + } + } +} + +/// +/// +/// Calculcate the Euclidean distance between two lists (representing vectors): +/// +/// \\[ +/// \left( \sum_{i=1}^n \left|x_i - y_i \right|^{2} \right)^{\frac{1}{2}} +/// \\] +/// +/// In the formula, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/metrics +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// +/// // Empty lists returns 0.0 +/// metrics.euclidean_distance([], []) +/// |> should.equal(Ok(0.0)) +/// +/// // Differing lengths returns error +/// metrics.euclidean_distance([], [1.0]) +/// |> should.be_error() +/// +/// let assert Ok(result) = metrics.euclidean_distance([0.0, 0.0], [1.0, 2.0]) +/// result +/// |> predicates.is_close(2.23606797749979, 0.0, tol) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn euclidean_distance( + xarr: List(Float), + yarr: List(Float), +) -> Result(Float, String) { + minkowski_distance(xarr, yarr, 2.0) +} + +/// +/// +/// Calculcate the arithmetic mean of the elements in a list: +/// +/// \\[ +/// \bar{x} = \frac{1}{n}\sum_{i=1}^n x_i +/// \\] +/// +/// In the formula, $$n$$ is the sample size (the length of the list) and +/// $$x_i$$ is the sample point in the input list indexed by $$i$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/metrics +/// +/// pub fn example () { +/// // An empty list returns an error +/// [] +/// |> metrics.mean() +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [1., 2., 3.] +/// |> metrics.mean() +/// |> should.equal(Ok(2.)) +/// } +///
+/// +/// +/// +pub fn mean(arr: List(Float)) -> Result(Float, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> + arr + |> arithmetics.float_sum() + |> fn(a: Float) -> Float { + a /. conversion.int_to_float(list.length(arr)) + } + |> Ok + } +} + +/// +/// +/// Calculcate the median of the elements in a list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/metrics +/// +/// pub fn example () { +/// // An empty list returns an error +/// [] +/// |> metrics.median() +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [1., 2., 3.] +/// |> metrics.median() +/// |> should.equal(Ok(2.)) +/// +/// [1., 2., 3., 4.] +/// |> metrics.median() +/// |> should.equal(Ok(2.5)) +/// } +///
+/// +/// +/// +pub fn median(arr: List(Float)) -> Result(Float, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let count: Int = list.length(arr) + let mid: Int = list.length(arr) / 2 + let sorted: List(Float) = list.sort(arr, float.compare) + case predicates.is_odd(count) { + // If there is an odd number of elements in the list, then the median + // is just the middle value + True -> { + let assert Ok(val0) = list.at(sorted, mid) + val0 + |> Ok + } + // If there is an even number of elements in the list, then the median + // is the mean of the two middle values + False -> { + let assert Ok(val0) = list.at(sorted, mid - 1) + let assert Ok(val1) = list.at(sorted, mid) + [val0, val1] + |> mean() + } + } + } + } +} + +/// +/// +/// Calculcate the sample variance of the elements in a list: +/// \\[ +/// s^{2} = \frac{1}{n - d} \sum_{i=1}^{n}(x_i - \bar{x}) +/// \\] +/// +/// In the formula, $$n$$ is the sample size (the length of the list) and +/// $$x_i$$ is the sample point in the input list indexed by $$i$$. +/// Furthermore, $$\bar{x}$$ is the sample mean and $$d$$ is the "Delta +/// Degrees of Freedom", and is by default set to $$d = 0$$, which gives a biased +/// estimate of the sample variance. Setting $$d = 1$$ gives an unbiased estimate. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/metrics +/// +/// pub fn example () { +/// // Degrees of freedom +/// let ddof: Int = 1 +/// +/// // An empty list returns an error +/// [] +/// |> metrics.variance(ddof) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [1., 2., 3.] +/// |> metrics.variance(ddof) +/// |> should.equal(Ok(1.)) +/// } +///
+/// +/// +/// +pub fn variance(arr: List(Float), ddof: Int) -> Result(Float, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> + case ddof < 0 { + True -> + "Invalid input argument: ddof < 0. Valid input is ddof >= 0." + |> Error + False -> { + let assert Ok(mean) = mean(arr) + arr + |> list.map(fn(a: Float) -> Float { + let assert Ok(result) = elementary.power(a -. mean, 2.0) + result + }) + |> arithmetics.float_sum() + |> fn(a: Float) -> Float { + a /. { + conversion.int_to_float(list.length(arr)) -. conversion.int_to_float( + ddof, + ) + } + } + |> Ok + } + } + } +} + +/// +/// +/// Calculcate the sample standard deviation of the elements in a list: +/// \\[ +/// s = \left(\frac{1}{n - d} \sum_{i=1}^{n}(x_i - \bar{x})\right)^{\frac{1}{2}} +/// \\] +/// +/// In the formula, $$n$$ is the sample size (the length of the list) and +/// $$x_i$$ is the sample point in the input list indexed by $$i$$. +/// Furthermore, $$\bar{x}$$ is the sample mean and $$d$$ is the "Delta +/// Degrees of Freedom", and is by default set to $$d = 0$$, which gives a biased +/// estimate of the sample standard deviation. Setting $$d = 1$$ gives an unbiased estimate. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/metrics +/// +/// pub fn example () { +/// // Degrees of freedom +/// let ddof: Int = 1 +/// +/// // An empty list returns an error +/// [] +/// |> metrics.standard_deviationddof) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [1., 2., 3.] +/// |> metrics.standard_deviation(ddof) +/// |> should.equal(Ok(1.)) +/// } +///
+/// +/// +/// +pub fn standard_deviation(arr: List(Float), ddof: Int) -> Result(Float, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> + case ddof < 0 { + True -> + "Invalid input argument: ddof < 0. Valid input is ddof >= 0." + |> Error + False -> { + let assert Ok(variance) = variance(arr, ddof) + // The computed variance will always be positive + // So an error should never be returned + let assert Ok(stdev) = elementary.square_root(variance) + stdev + |> Ok + } + } + } +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam new file mode 100644 index 0000000..3b40a18 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam @@ -0,0 +1,1228 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Piecewise: A module containing functions that have different definitions depending on conditions or intervals of their domain. +//// +//// * **Rounding functions** +//// * [`ceiling`](#ceiling) +//// * [`floor`](#floor) +//// * [`truncate`](#truncate) +//// * [`round`](#round) +//// * **Sign and absolute value functions** +//// * [`float_absolute_value`](#float_absolute_value) +//// * [`int_absolute_value`](#int_absolute_value) +//// * [`float_absolute_difference`](#float_absolute_difference) +//// * [`int_absolute_difference`](#int_absolute_difference) +//// * [`float_sign`](#float_sign) +//// * [`int_sign`](#int_sign) +//// * [`float_copy_sign`](#float_copy_sign) +//// * [`int_copy_sign`](#float_copy_sign) +//// * [`float_flip_sign`](#float_flip_sign) +//// * [`int_flip_sign`](#int_flip_sign) +//// * **Misc. mathematical functions** +//// * [`minimum`](#minimum) +//// * [`maximum`](#maximum) +//// * [`minmax`](#minmax) +//// * [`list_minimum`](#list_minimum) +//// * [`list_maximum`](#list_maximum) +//// * [`extrema`](#extrema) +//// * [`arg_minimum`](#arg_minimum) +//// * [`arg_maximum`](#arg_maximum) +//// + +import gleam/option +import gleam/list +import gleam/order +import gleam/pair +import gleam/int +import gleam_community/maths/conversion +import gleam_community/maths/elementary + +/// +/// +/// The ceiling function rounds a given input value $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is larger than or equal to the input $$x$$. +/// +/// Note: The ceiling function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundUp`. +/// +///
+/// Details +/// +/// For example, $$12.0654$$ is rounded to: +/// - $$13.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) +/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.066$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// For example, $$12.0654$$ is rounded to: +/// - $$20.0$$ for 1 digit places before the decimal point (`digit = -1`) +/// - $$100.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$1000.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +///
+/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.ceiling(12.0654, option.Some(1)) +/// |> should.equal(Ok(12.1)) +/// +/// piecewise.ceiling(12.0654, option.Some(2)) +/// |> should.equal(Ok(12.07)) +/// +/// piecewise.ceiling(12.0654, option.Some(3)) +/// |> should.equal(Ok(12.066)) +/// } +///
+/// +/// +/// +pub fn ceiling(x: Float, digits: option.Option(Int)) -> Result(Float, String) { + round(x, digits, option.Some(RoundUp)) +} + +/// +/// +/// The floor function rounds input $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is less than or equal to the input $$x$$. +/// +/// Note: The floor function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundDown`. +/// +///
+/// Details +/// +/// For example, $$12.0654$$ is rounded to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) +/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +///
+/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.floor(12.0654, option.Some(1)) +/// |> should.equal(Ok(12.0)) +/// +/// piecewise.floor(12.0654, option.Some(2)) +/// |> should.equal(Ok(12.06)) +/// +/// piecewise.floor(12.0654, option.Some(3)) +/// |> should.equal(Ok(12.065)) +/// } +///
+/// +/// +/// +pub fn floor(x: Float, digits: option.Option(Int)) -> Result(Float, String) { + round(x, digits, option.Some(RoundDown)) +} + +/// +/// +/// The truncate function rounds a given input $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is less than or equal to the absolute value of the input $$x$$. +/// +/// Note: The truncate function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundToZero`. +/// +///
+/// Details +/// +/// For example, $$12.0654$$ is rounded to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) +/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +///
+/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.truncate(12.0654, option.Some(1)) +/// |> should.equal(Ok(12.0)) +/// +/// piecewise.truncate(12.0654, option.Some(2)) +/// |> should.equal(Ok(12.0)) +/// +/// piecewise.truncate(12.0654, option.Some(3)) +/// |> should.equal(Ok(12.0)) +/// } +///
+/// +/// +/// +pub fn truncate(x: Float, digits: option.Option(Int)) -> Result(Float, String) { + round(x, digits, option.Some(RoundToZero)) +} + +/// +/// +/// The function rounds a float to a specific number of digits (after the decimal place or before if negative) using a specified rounding mode. +/// +/// Valid rounding modes include: +/// - `RoundNearest` (default): The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded to the nearest even integer. +/// - `RoundTiesAway`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded away from zero (C/C++ rounding behavior). +/// - `RoundTiesUp`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded towards $$+\infty$$ (Java/JavaScript rounding behaviour). +/// - `RoundToZero`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is less than or equal to the absolute value of the input $$x$$. An alias for this rounding mode is [`truncate`](#truncate). +/// - `RoundDown`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is less than or equal to the input $$x$$. An alias for this rounding mode is [`floor`](#floor). +/// - `RoundUp`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is larger than or equal to the input $$x$$. An alias for this rounding mode is [`ceiling`](#ceiling). +/// +///
+/// Details +/// +/// The `RoundNearest` rounding mode, rounds $$12.0654$$ to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) +/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +/// The `RoundTiesAway` rounding mode, rounds $$12.0654$$ to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) +/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +/// The `RoundTiesUp` rounding mode, rounds $$12.0654$$ to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.1$$ for 1 digits after the decimal point (`digits = 1`) +/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +/// The `RoundToZero` rounding mode, rounds $$12.0654$$ to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.0$$ for 1 digit after the decimal point (`digits = 1`) +/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +/// The `RoundDown` rounding mode, rounds $$12.0654$$ to: +/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) +/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) +/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +/// The `RoundUp` rounding mode, rounds $$12.0654$$ to: +/// - $$13.0$$ for 0 digits after the decimal point (`digits = 0`) +/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) +/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) +/// - $$12.066$$ for 3 digits after the decimal point (`digits = 3`) +/// +/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. +/// - $$20.0$$ for 1 digit places before the decimal point (`digit = -1`) +/// - $$100.0$$ for 2 digits before the decimal point (`digits = -2`) +/// - $$1000.0$$ for 3 digits before the decimal point (`digits = -3`) +/// +///
+/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/option +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// // The default number of digits is 0 if None is provided +/// piecewise.round(12.0654, option.None, option.Some(piecewise.RoundNearest)) +/// |> should.equal(Ok(12.0)) +/// +/// // The default rounding mode is "RoundNearest" if None is provided +/// piecewise.round(12.0654, option.None, option.None) +/// |> should.equal(Ok(12.0)) +/// +/// // Try different rounding modes +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundNearest)) +/// |> should.equal(Ok(12.07)) +/// +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundTiesAway)) +/// |> should.equal(Ok(12.07)) +/// +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundTiesUp)) +/// |> should.equal(Ok(12.07)) +/// +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundToZero)) +/// |> should.equal(Ok(12.06)) +/// +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundDown)) +/// |> should.equal(Ok(12.06)) +/// +/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundUp)) +/// |> should.equal(Ok(12.07)) +/// } +///
+/// +/// +/// +pub fn round( + x: Float, + digits: option.Option(Int), + mode: option.Option(RoundingMode), +) -> Result(Float, String) { + case digits { + option.Some(a) -> { + let assert Ok(p) = elementary.power(10.0, conversion.int_to_float(a)) + // Round the given input x using at the specified digit + do_round(p, x, mode) + } + // Round the given input x using at the default digit + option.None -> do_round(1.0, x, mode) + } +} + +pub type RoundingMode { + RoundNearest + RoundTiesAway + RoundTiesUp + RoundToZero + RoundDown + RoundUp +} + +fn do_round( + p: Float, + x: Float, + mode: option.Option(RoundingMode), +) -> Result(Float, String) { + case mode { + // Determine the rounding mode + option.Some(RoundNearest) -> + round_to_nearest(p, x) + |> Ok + option.Some(RoundTiesAway) -> + round_ties_away(p, x) + |> Ok + option.Some(RoundTiesUp) -> + round_ties_up(p, x) + |> Ok + option.Some(RoundToZero) -> + round_to_zero(p, x) + |> Ok + option.Some(RoundDown) -> + round_down(p, x) + |> Ok + option.Some(RoundUp) -> + round_up(p, x) + |> Ok + // Otherwise, use the default rounding mode + option.None -> + round_to_nearest(p, x) + |> Ok + } +} + +fn round_to_nearest(p: Float, x: Float) -> Float { + let xabs: Float = float_absolute_value(x) *. p + let xabs_truncated: Float = truncate_float(xabs) + let remainder: Float = xabs -. xabs_truncated + case remainder { + _ if remainder >. 0.5 -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p + _ if remainder == 0.5 -> { + let assert Ok(is_even) = int.modulo(conversion.float_to_int(xabs), 2) + case is_even == 0 { + True -> float_sign(x) *. xabs_truncated /. p + False -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p + } + } + _ -> float_sign(x) *. xabs_truncated /. p + } +} + +fn round_ties_away(p: Float, x: Float) -> Float { + let xabs: Float = float_absolute_value(x) *. p + let remainder: Float = xabs -. truncate_float(xabs) + case remainder { + _ if remainder >=. 0.5 -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p + _ -> float_sign(x) *. truncate_float(xabs) /. p + } +} + +fn round_ties_up(p: Float, x: Float) -> Float { + let xabs: Float = float_absolute_value(x) *. p + let xabs_truncated: Float = truncate_float(xabs) + let remainder: Float = xabs -. xabs_truncated + case remainder { + _ if remainder >=. 0.5 && x >=. 0.0 -> + float_sign(x) *. truncate_float(xabs +. 1.0) /. p + _ -> float_sign(x) *. xabs_truncated /. p + } +} + +// Rounding mode: ToZero / Truncate +fn round_to_zero(p: Float, x: Float) -> Float { + truncate_float(x *. p) /. p +} + +fn truncate_float(x: Float) -> Float { + do_truncate_float(x) +} + +@external(erlang, "erlang", "trunc") +@external(javascript, "../../maths.mjs", "truncate") +fn do_truncate_float(a: Float) -> Float + +// Rounding mode: Down / Floor +fn round_down(p: Float, x: Float) -> Float { + do_floor(x *. p) /. p +} + +@external(erlang, "math", "floor") +@external(javascript, "../../maths.mjs", "floor") +fn do_floor(a: Float) -> Float + +// Rounding mode: Up / Ceiling +fn round_up(p: Float, x: Float) -> Float { + do_ceiling(x *. p) /. p +} + +@external(erlang, "math", "ceil") +@external(javascript, "../../maths.mjs", "ceiling") +fn do_ceiling(a: Float) -> Float + +/// +/// +/// The absolute value: +/// +/// \\[ +/// \forall x, y \in \mathbb{R}, \\; |x| \in \mathbb{R}_{+}. +/// \\] +/// +/// The function takes an input $$x$$ and returns a positive float value. +/// +/// +/// +/// +/// +pub fn float_absolute_value(x: Float) -> Float { + case x >. 0.0 { + True -> x + False -> -1.0 *. x + } +} + +/// +/// +/// The absolute value: +/// +/// \\[ +/// \forall x, y \in \mathbb{Z}, \\; |x| \in \mathbb{Z}_{+}. +/// \\] +/// +/// The function takes an input $$x$$ and returns a positive integer value. +/// +/// +/// +/// +/// +pub fn int_absolute_value(x: Int) -> Int { + case x > 0 { + True -> x + False -> -1 * x + } +} + +/// +/// +/// The absolute difference: +/// +/// \\[ +/// \forall x, y \in \mathbb{R}, \\; |x - y| \in \mathbb{R}_{+}. +/// \\] +/// +/// The function takes two inputs $$x$$ and $$y$$ and returns a positive float +/// value which is the the absolute difference of the inputs. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.float_absolute_difference(-10.0, 10.0) +/// |> should.equal(20.0) +/// +/// piecewise.float_absolute_difference(0.0, -2.0) +/// |> should.equal(2.0) +/// } +///
+/// +/// +/// +pub fn float_absolute_difference(a: Float, b: Float) -> Float { + a -. b + |> float_absolute_value() +} + +/// +/// +/// The absolute difference: +/// +/// \\[ +/// \forall x, y \in \mathbb{Z}, \\; |x - y| \in \mathbb{Z}_{+}. +/// \\] +/// +/// The function takes two inputs $$x$$ and $$y$$ and returns a positive integer value which is the the absolute difference of the inputs. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.absolute_difference(-10, 10) +/// |> should.equal(20) +/// +/// piecewise.absolute_difference(0, -2) +/// |> should.equal(2) +/// } +///
+/// +/// +/// +pub fn int_absolute_difference(a: Int, b: Int) -> Int { + a - b + |> int_absolute_value() +} + +/// +/// +/// The function takes an input $$x \in \mathbb{R}$$ and returns the sign of +/// the input, indicating whether it is positive (+1.0), negative (-1.0), or +/// zero (0.0). +/// +/// +/// +pub fn float_sign(x: Float) -> Float { + do_float_sign(x) +} + +@target(erlang) +fn do_float_sign(x: Float) -> Float { + case x <. 0.0 { + True -> -1.0 + False -> + case x == 0.0 { + True -> 0.0 + False -> 1.0 + } + } +} + +@target(javascript) +@external(javascript, "../../maths.mjs", "sign") +fn do_float_sign(a: Float) -> Float + +/// +/// +/// The function takes an input $$x \in \mathbb{Z}$$ and returns the sign of +/// the input, indicating whether it is positive (+1), negative (-1), or zero +/// (0). +/// +/// +/// +pub fn int_sign(x: Int) -> Int { + do_int_sign(x) +} + +@target(erlang) +fn do_int_sign(x: Int) -> Int { + case x < 0 { + True -> -1 + False -> + case x == 0 { + True -> 0 + False -> 1 + } + } +} + +@target(javascript) +@external(javascript, "../../maths.mjs", "sign") +fn do_int_sign(a: Int) -> Int + +/// +/// +/// The function takes two arguments $$x, y \in \mathbb{R}$$ and returns $$x$$ such that it has the same sign as $$y$$. +/// +/// +/// +pub fn float_copy_sign(x: Float, y: Float) -> Float { + case float_sign(x) == float_sign(y) { + // x and y have the same sign, just return x + True -> x + // x and y have different signs: + // - x is positive and y is negative, then flip sign of x + // - x is negative and y is positive, then flip sign of x + False -> float_flip_sign(x) + } +} + +/// +/// +/// The function takes two arguments $$x, y \in \mathbb{Z}$$ and returns $$x$$ such that it has the same sign as $$y$$. +/// +/// +/// +pub fn int_copy_sign(x: Int, y: Int) -> Int { + case int_sign(x) == int_sign(y) { + // x and y have the same sign, just return x + True -> x + // x and y have different signs: + // - x is positive and y is negative, then flip sign of x + // - x is negative and y is positive, then flip sign of x + False -> int_flip_sign(x) + } +} + +/// +/// +/// The function flips the sign of a given input value $$x \in \mathbb{R}$$. +/// +/// +/// +pub fn float_flip_sign(x: Float) -> Float { + -1.0 *. x +} + +/// +/// +/// The function flips the sign of a given input value $$x \in \mathbb{Z}$$. +/// +/// +/// +pub fn int_flip_sign(x: Int) -> Int { + -1 * x +} + +/// +/// +/// The minimum function takes two arguments $$x, y$$ along with a function +/// for comparing $$x, y$$. The function returns the smallest of the two given +/// values. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.minimum(2.0, 1.5, float.compare) +/// |> should.equal(1.5) +/// +/// piecewise.minimum(1.5, 2.0, float.compare) +/// |> should.equal(1.5) +/// } +///
+/// +/// +/// +pub fn minimum(x: a, y: a, compare: fn(a, a) -> order.Order) -> a { + case compare(x, y) { + order.Lt -> x + order.Eq -> x + order.Gt -> y + } +} + +/// +/// +/// +/// +/// The maximum function takes two arguments $$x, y$$ along with a function +/// for comparing $$x, y$$. The function returns the largest of the two given +/// values. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.maximum(2.0, 1.5, float.compare) +/// |> should.equal(1.5) +/// +/// piecewise.maximum(1.5, 2.0, float.compare) +/// |> should.equal(1.5) +/// } +///
+/// +/// +/// +pub fn maximum(x: a, y: a, compare: fn(a, a) -> order.Order) -> a { + case compare(x, y) { + order.Lt -> y + order.Eq -> y + order.Gt -> x + } +} + +/// +/// +/// The minmax function takes two arguments $$x, y$$ along with a function +/// for comparing $$x, y$$. The function returns a tuple with the smallest +/// value first and largest second. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example() { +/// piecewise.minmax(2.0, 1.5, float.compare) +/// |> should.equal(#(1.5, 2.0)) +/// +/// piecewise.minmax(1.5, 2.0, float.compare) +/// |> should.equal(#(1.5, 2.0)) +/// } +///
+/// +/// +/// +pub fn minmax(x: a, y: a, compare: fn(a, a) -> order.Order) -> #(a, a) { + #(minimum(x, y, compare), maximum(x, y, compare)) +} + +/// +/// +/// Returns the minimum value of a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/int +/// import gleam_community/maths/piecewise +/// +/// pub fn example () { +/// // An empty lists returns an error +/// [] +/// |> piecewise.list_minimum(int.compare) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [4, 4, 3, 2, 1] +/// |> piecewise.list_minimum(int.compare) +/// |> should.equal(Ok(1)) +/// } +///
+/// +/// +pub fn list_minimum( + arr: List(a), + compare: fn(a, a) -> order.Order, +) -> Result(a, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let assert Ok(val0) = list.at(arr, 0) + arr + |> list.fold( + val0, + fn(acc: a, element: a) { + case compare(element, acc) { + order.Lt -> element + _ -> acc + } + }, + ) + |> Ok + } + } +} + +/// +/// +/// Returns the maximum value of a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example () { +/// // An empty lists returns an error +/// [] +/// |> piecewise.list_maximum(float.compare) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [4.0, 4.0, 3.0, 2.0, 1.0] +/// |> piecewise.list_maximum(float.compare) +/// |> should.equal(Ok(4.0)) +/// } +///
+/// +/// +/// +pub fn list_maximum( + arr: List(a), + compare: fn(a, a) -> order.Order, +) -> Result(a, String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let assert Ok(val0) = list.at(arr, 0) + arr + |> list.fold( + val0, + fn(acc: a, element: a) { + case compare(acc, element) { + order.Lt -> element + _ -> acc + } + }, + ) + |> Ok + } + } +} + +/// +/// +/// +/// +/// Returns the indices of the minimum values in a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example () { +/// // An empty lists returns an error +/// [] +/// |> piecewise.arg_minimum(float.compare) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [4.0, 4.0, 3.0, 2.0, 1.0] +/// |> piecewise.arg_minimum(float.compare) +/// |> should.equal(Ok([4])) +/// } +///
+/// +/// +/// +pub fn arg_minimum( + arr: List(a), + compare: fn(a, a) -> order.Order, +) -> Result(List(Int), String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let assert Ok(min) = + arr + |> list_minimum(compare) + arr + |> list.index_map(fn(index: Int, element: a) -> Int { + case compare(element, min) { + order.Eq -> index + _ -> -1 + } + }) + |> list.filter(fn(index: Int) -> Bool { + case index { + -1 -> False + _ -> True + } + }) + |> Ok + } + } +} + +/// +/// +/// +/// +/// Returns the indices of the maximum values in a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example () { +/// // An empty lists returns an error +/// [] +/// |> piecewise.arg_maximum(float.compare) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [4.0, 4.0, 3.0, 2.0, 1.0] +/// |> piecewise.arg_maximum(float.compare) +/// |> should.equal(Ok([0, 1])) +/// } +///
+/// +/// +/// +pub fn arg_maximum( + arr: List(a), + compare: fn(a, a) -> order.Order, +) -> Result(List(Int), String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let assert Ok(max) = + arr + |> list_maximum(compare) + arr + |> list.index_map(fn(index: Int, element: a) -> Int { + case compare(element, max) { + order.Eq -> index + _ -> -1 + } + }) + |> list.filter(fn(index: Int) -> Bool { + case index { + -1 -> False + _ -> True + } + }) + |> Ok + } + } +} + +/// +/// +/// +/// +/// Returns a tuple consisting of the minimum and maximum values of a given list. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/float +/// import gleam_community/maths/piecewise +/// +/// pub fn example () { +/// // An empty lists returns an error +/// [] +/// |> piecewise.extrema(float.compare) +/// |> should.be_error() +/// +/// // Valid input returns a result +/// [4.0, 4.0, 3.0, 2.0, 1.0] +/// |> piecewise.extrema(float.compare) +/// |> should.equal(Ok(#(1.0, 4.0))) +/// } +///
+/// +/// +/// +pub fn extrema( + arr: List(a), + compare: fn(a, a) -> order.Order, +) -> Result(#(a, a), String) { + case arr { + [] -> + "Invalid input argument: The list is empty." + |> Error + _ -> { + let assert Ok(val_max) = list.at(arr, 0) + let assert Ok(val_min) = list.at(arr, 0) + arr + |> list.fold( + #(val_min, val_max), + fn(acc: #(a, a), element: a) { + let first: a = pair.first(acc) + let second: a = pair.second(acc) + case compare(element, first), compare(second, element) { + order.Lt, order.Lt -> #(element, element) + order.Lt, _ -> #(element, second) + _, order.Lt -> #(first, element) + _, _ -> #(first, second) + } + }, + ) + |> Ok + } + } +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam new file mode 100644 index 0000000..f8d357c --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam @@ -0,0 +1,363 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Predicates: A module containing functions for testing various mathematical properties of numbers. +//// +//// * **Tests** +//// * [`is_close`](#is_close) +//// * [`list_all_close`](#all_close) +//// * [`is_fractional`](#is_fractional) +//// * [`is_power`](#is_power) +//// * [`is_perfect`](#is_perfect) +//// * [`is_even`](#is_even) +//// * [`is_odd`](#is_odd) + +import gleam/pair +import gleam/int +import gleam/list +import gleam/option +import gleam_community/maths/elementary +import gleam_community/maths/piecewise +import gleam_community/maths/arithmetics + +/// +/// +/// Determine if a given value $$a$$ is close to or equivalent to a reference value +/// $$b$$ based on supplied relative $$r_{tol}$$ and absolute $$a_{tol}$$ tolerance values. +/// The equivalance of the two given values are then determined based on the equation: +/// +/// \\[ +/// \|a - b\| \leq (a_{tol} + r_{tol} \cdot \|b\|) +/// \\] +/// +/// `True` is returned if statement holds, otherwise `False` is returned. +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example () { +/// let val: Float = 99. +/// let ref_val: Float = 100. +/// // We set 'atol' and 'rtol' such that the values are equivalent +/// // if 'val' is within 1 percent of 'ref_val' +/- 0.1 +/// let rtol: Float = 0.01 +/// let atol: Float = 0.10 +/// floatx.is_close(val, ref_val, rtol, atol) +/// |> should.be_true() +/// } +///
+/// +/// +/// +pub fn is_close(a: Float, b: Float, rtol: Float, atol: Float) -> Bool { + let x: Float = float_absolute_difference(a, b) + let y: Float = atol +. rtol *. float_absolute_value(b) + case x <=. y { + True -> True + False -> False + } +} + +fn float_absolute_value(x: Float) -> Float { + case x >. 0.0 { + True -> x + False -> -1.0 *. x + } +} + +fn float_absolute_difference(a: Float, b: Float) -> Float { + a -. b + |> float_absolute_value() +} + +/// +/// +/// Determine if a list of values are close to or equivalent to a another list of reference values. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam/list +/// import gleam_community/maths/tests +/// +/// pub fn example () { +/// let val: Float = 99. +/// let ref_val: Float = 100. +/// let xarr: List(Float) = list.repeat(val, 42) +/// let yarr: List(Float) = list.repeat(ref_val, 42) +/// // We set 'atol' and 'rtol' such that the values are equivalent +/// // if 'val' is within 1 percent of 'ref_val' +/- 0.1 +/// let rtol: Float = 0.01 +/// let atol: Float = 0.10 +/// tests.all_close(xarr, yarr, rtol, atol) +/// |> fn(zarr: Result(List(Bool), String)) -> Result(Bool, Nil) { +/// case zarr { +/// Ok(arr) -> +/// arr +/// |> list.all(fn(a: Bool) -> Bool { a }) +/// |> Ok +/// _ -> Nil |> Error +/// } +/// } +/// |> should.equal(Ok(True)) +/// } +///
+/// +/// +/// +pub fn all_close( + xarr: List(Float), + yarr: List(Float), + rtol: Float, + atol: Float, +) -> Result(List(Bool), String) { + let xlen: Int = list.length(xarr) + let ylen: Int = list.length(yarr) + case xlen == ylen { + False -> + "Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)." + |> Error + True -> + list.zip(xarr, yarr) + |> list.map(fn(z: #(Float, Float)) -> Bool { + is_close(pair.first(z), pair.second(z), rtol, atol) + }) + |> Ok + } +} + +/// +/// +/// Determine if a given value is fractional. +/// +/// `True` is returned if the given value is fractional, otherwise `False` is returned. +/// +///
+/// Example +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example () { +/// tests.is_fractional(0.3333) +/// |> should.equal(True) +/// +/// tests.is_fractional(1.0) +/// |> should.equal(False) +/// } +///
+/// +/// +/// +pub fn is_fractional(x: Float) -> Bool { + do_ceiling(x) -. x >. 0.0 +} + +@external(erlang, "math", "ceil") +@external(javascript, "../../maths.mjs", "ceiling") +fn do_ceiling(a: Float) -> Float + +/// +/// +/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is a power of another integer value $$y \in \mathbb{Z}$$. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example() { +/// // Check if 4 is a power of 2 (it is) +/// tests.is_power(4, 2) +/// |> should.equal(True) +/// +/// // Check if 5 is a power of 2 (it is not) +/// tests.is_power(5, 2) +/// |> should.equal(False) +/// } +///
+/// +/// +/// +pub fn is_power(x: Int, y: Int) -> Bool { + let assert Ok(value) = + elementary.logarithm(int.to_float(x), option.Some(int.to_float(y))) + let assert Ok(truncated) = piecewise.truncate(value, option.Some(0)) + let rem = value -. truncated + rem == 0.0 +} + +/// +/// +/// A function that tests whether a given integer value $$n \in \mathbb{Z}$$ is a perfect number. A number is perfect if it is equal to the sum of its proper positive divisors. +/// +///
+/// Details +/// +/// For example: +/// - $$6$$ is a perfect number since the divisors of 6 are $$1 + 2 + 3 = 6$$. +/// - $$28$$ is a perfect number since the divisors of 28 are $$1 + 2 + 4 + 7 + 14 = 28$$ +/// +///
+/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example() { +/// tests.is_perfect(6) +/// |> should.equal(True) +/// +/// tests.is_perfect(28) +/// |> should.equal(True) +/// } +///
+/// +/// +/// +pub fn is_perfect(n: Int) -> Bool { + do_sum(arithmetics.proper_divisors(n)) == n +} + +fn do_sum(arr: List(Int)) -> Int { + case arr { + [] -> 0 + _ -> + arr + |> list.fold(0, fn(acc: Int, a: Int) -> Int { a + acc }) + } +} + +/// +/// +/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is even. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example() { +/// tests.is_even(-3) +/// |> should.equal(False) +/// +/// tests.is_even(-4) +/// |> should.equal(True) +/// } +///
+/// +/// +/// +pub fn is_even(x: Int) -> Bool { + x % 2 == 0 +} + +/// +/// +/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is odd. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/tests +/// +/// pub fn example() { +/// tests.is_odd(-3) +/// |> should.equal(True) +/// +/// tests.is_odd(-4) +/// |> should.equal(False) +/// } +///
+/// +/// +/// +pub fn is_odd(x: Int) -> Bool { + x % 2 != 0 +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam new file mode 100644 index 0000000..e7c0388 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam @@ -0,0 +1,302 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Sequences: A module containing functions for generating various types of sequences, ranges and intervals. +//// +//// * **Ranges and intervals** +//// * [`arange`](#arange) +//// * [`linear_space`](#linear_space) +//// * [`logarithmic_space`](#logarithmic_space) +//// * [`geometric_space`](#geometric_space) + +import gleam_community/maths/elementary +import gleam_community/maths/piecewise +import gleam_community/maths/conversion +import gleam/list + +/// +/// +/// The function returns a list with evenly spaced values within a given interval based on a start, stop value and a given increment (step-length) between consecutive values. +/// The list returned includes the given start value but excludes the stop value. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/sequences +/// +/// pub fn example () { +/// sequences.arange(1.0, 5.0, 1.0) +/// |> should.equal([1.0, 2.0, 3.0, 4.0]) +/// +/// // No points returned since +/// // start smaller than stop and positive step +/// sequences.arange(5.0, 1.0, 1.0) +/// |> should.equal([]) +/// +/// // Points returned since +/// // start smaller than stop but negative step +/// sequences.arange(5.0, 1.0, -1.0) +/// |> should.equal([5.0, 4.0, 3.0, 2.0]) +/// } +///
+/// +/// +/// +pub fn arange(start: Float, stop: Float, step: Float) -> List(Float) { + case start >=. stop && step >. 0.0 || start <=. stop && step <. 0.0 { + True -> [] + False -> { + let direction: Float = case start <=. stop { + True -> 1.0 + False -> -1.0 + } + let step_abs: Float = piecewise.float_absolute_value(step) + let num: Float = piecewise.float_absolute_value(start -. stop) /. step_abs + + list.range(0, conversion.float_to_int(num) - 1) + |> list.map(fn(i: Int) -> Float { + start +. conversion.int_to_float(i) *. step_abs *. direction + }) + } + } +} + +/// +/// +/// Generate a linearly spaced list of points over a specified interval. The endpoint of the interval can optionally be included/excluded. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/sequences +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// let assert Ok(linspace) = sequences.linear_space(10.0, 50.0, 5, True) +/// let assert Ok(result) = +/// predicates.all_close(linspace, [10.0, 20.0, 30.0, 40.0, 50.0], 0.0, tol) +/// result +/// |> list.all(fn(x) { x == True }) +/// |> should.be_true() +/// +/// // A negative number of points (-5) does not work +/// sequences.linear_space(10.0, 50.0, -5, True) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn linear_space( + start: Float, + stop: Float, + num: Int, + endpoint: Bool, +) -> Result(List(Float), String) { + let direction: Float = case start <=. stop { + True -> 1.0 + False -> -1.0 + } + case num > 0 { + True -> + case endpoint { + True -> { + let increment: Float = + piecewise.float_absolute_value(start -. stop) /. conversion.int_to_float( + num - 1, + ) + list.range(0, num - 1) + |> list.map(fn(i: Int) -> Float { + start +. conversion.int_to_float(i) *. increment *. direction + }) + |> Ok + } + False -> { + let increment: Float = + piecewise.float_absolute_value(start -. stop) /. conversion.int_to_float( + num, + ) + list.range(0, num - 1) + |> list.map(fn(i: Int) -> Float { + start +. conversion.int_to_float(i) *. increment *. direction + }) + |> Ok + } + } + + False -> + "Invalid input: num < 0. Valid input is num > 0." + |> Error + } +} + +/// +/// +/// Generate a logarithmically spaced list of points over a specified interval. The endpoint of the interval can optionally be included/excluded. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/sequences +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// let assert Ok(logspace) = sequences.logarithmic_space(1.0, 3.0, 3, True, 10.0) +/// let assert Ok(result) = +/// predicates.all_close(logspace, [10.0, 100.0, 1000.0], 0.0, tol) +/// result +/// |> list.all(fn(x) { x == True }) +/// |> should.be_true() +/// +/// // A negative number of points (-3) does not work +/// sequences.logarithmic_space(1.0, 3.0, -3, False, 10.0) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn logarithmic_space( + start: Float, + stop: Float, + num: Int, + endpoint: Bool, + base: Float, +) -> Result(List(Float), String) { + case num > 0 { + True -> { + let assert Ok(linspace) = linear_space(start, stop, num, endpoint) + linspace + |> list.map(fn(i: Float) -> Float { + let assert Ok(result) = elementary.power(base, i) + result + }) + |> Ok + } + False -> + "Invalid input: num < 0. Valid input is num > 0." + |> Error + } +} + +/// +/// +/// The function returns a list of numbers spaced evenly on a log scale (a geometric progression). Each point in the list is a constant multiple of the previous. +/// The function is similar to the [`logarithmic_space`](#logarithmic_space) function, but with endpoints specified directly. +/// +///
+/// Example: +/// +/// import gleeunit/should +/// import gleam_community/maths/elementary +/// import gleam_community/maths/sequences +/// import gleam_community/maths/predicates +/// +/// pub fn example () { +/// let assert Ok(tol) = elementary.power(-10.0, -6.0) +/// let assert Ok(logspace) = sequences.geometric_space(10.0, 1000.0, 3, True) +/// let assert Ok(result) = +/// predicates.all_close(logspace, [10.0, 100.0, 1000.0], 0.0, tol) +/// result +/// |> list.all(fn(x) { x == True }) +/// |> should.be_true() +/// +/// // Input (start and stop can't be equal to 0.0) +/// sequences.geometric_space(0.0, 1000.0, 3, False) +/// |> should.be_error() +/// +/// sequences.geometric_space(-1000.0, 0.0, 3, False) +/// |> should.be_error() +/// +/// // A negative number of points (-3) does not work +/// sequences.geometric_space(10.0, 1000.0, -3, False) +/// |> should.be_error() +/// } +///
+/// +/// +/// +pub fn geometric_space( + start: Float, + stop: Float, + num: Int, + endpoint: Bool, +) -> Result(List(Float), String) { + case start == 0.0 || stop == 0.0 { + True -> + "" + |> Error + False -> + case num > 0 { + True -> { + let assert Ok(log_start) = elementary.logarithm_10(start) + let assert Ok(log_stop) = elementary.logarithm_10(stop) + logarithmic_space(log_start, log_stop, num, endpoint, 10.0) + } + False -> + "Invalid input: num < 0. Valid input is num > 0." + |> Error + } + } +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam new file mode 100644 index 0000000..dfd9cbb --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam @@ -0,0 +1,205 @@ +//// +//// +//// +//// +//// +//// +//// --- +//// +//// Special: A module containing special mathematical functions. +//// +//// * **Special mathematical functions** +//// * [`beta`](#beta) +//// * [`erf`](#erf) +//// * [`gamma`](#gamma) +//// * [`incomplete_gamma`](#incomplete_gamma) +//// + +import gleam_community/maths/conversion +import gleam_community/maths/elementary +import gleam_community/maths/piecewise +import gleam/list + +/// +/// +/// The beta function over the real numbers: +/// +/// \\[ +/// \text{B}(x, y) = \frac{\Gamma(x) \cdot \Gamma(y)}{\Gamma(x + y)} +/// \\] +/// +/// The beta function is evaluated through the use of the gamma function. +/// +/// +/// +pub fn beta(x: Float, y: Float) -> Float { + gamma(x) *. gamma(y) /. gamma(x +. y) +} + +/// +/// +/// The error function. +/// +/// +/// +pub fn erf(x: Float) -> Float { + let assert [a1, a2, a3, a4, a5]: List(Float) = [ + 0.254829592, -0.284496736, 1.421413741, -1.453152027, 1.061405429, + ] + let p: Float = 0.3275911 + + let sign: Float = piecewise.float_sign(x) + let x: Float = piecewise.float_absolute_value(x) + + // Formula 7.1.26 given in Abramowitz and Stegun. + let t: Float = 1.0 /. { 1.0 +. p *. x } + let y: Float = + 1.0 -. { { { { a5 *. t +. a4 } *. t +. a3 } *. t +. a2 } *. t +. a1 } *. t *. elementary.exponential( + -1.0 *. x *. x, + ) + sign *. y +} + +/// +/// +/// The gamma function over the real numbers. The function is essentially equal to the +/// factorial for any positive integer argument: $$\Gamma(n) = (n - 1)!$$ +/// +/// The implemented gamma function is approximated through Lanczos approximation +/// using the same coefficients used by the GNU Scientific Library. +/// +/// +/// +pub fn gamma(x: Float) -> Float { + gamma_lanczos(x) +} + +const lanczos_g: Float = 7.0 + +const lanczos_p: List(Float) = [ + 0.99999999999980993, 676.5203681218851, -1259.1392167224028, + 771.32342877765313, -176.61502916214059, 12.507343278686905, + -0.13857109526572012, 0.0000099843695780195716, 0.00000015056327351493116, +] + +fn gamma_lanczos(x: Float) -> Float { + case x <. 0.5 { + True -> + elementary.pi() /. { + elementary.sin(elementary.pi() *. x) *. gamma_lanczos(1.0 -. x) + } + False -> { + let z = x -. 1.0 + let x: Float = + list.index_fold( + lanczos_p, + 0.0, + fn(acc: Float, v: Float, index: Int) { + case index > 0 { + True -> acc +. v /. { z +. conversion.int_to_float(index) } + False -> v + } + }, + ) + let t: Float = z +. lanczos_g +. 0.5 + let assert Ok(v1) = elementary.power(2.0 *. elementary.pi(), 0.5) + let assert Ok(v2) = elementary.power(t, z +. 0.5) + v1 *. v2 *. elementary.exponential(-1.0 *. t) *. x + } + } +} + +/// +/// +/// The lower incomplete gamma function over the real numbers. +/// +/// The implemented incomplete gamma function is evaluated through a power series +/// expansion. +/// +/// +/// +pub fn incomplete_gamma(a: Float, x: Float) -> Result(Float, String) { + case a >. 0.0 && x >=. 0.0 { + True -> { + let assert Ok(v) = elementary.power(x, a) + v *. elementary.exponential(-1.0 *. x) *. incomplete_gamma_sum( + a, + x, + 1.0 /. a, + 0.0, + 1.0, + ) + |> Ok + } + + False -> + "Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0." + |> Error + } +} + +fn incomplete_gamma_sum( + a: Float, + x: Float, + t: Float, + s: Float, + n: Float, +) -> Float { + case t { + 0.0 -> s + _ -> { + let ns: Float = s +. t + let nt: Float = t *. { x /. { a +. n } } + incomplete_gamma_sum(a, x, nt, ns, n +. 1.0) + } + } +} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl new file mode 100644 index 0000000..ca266c8 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl @@ -0,0 +1,172 @@ +-module(gleam_community@maths@arithmetics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([gcd/2, lcm/2, divisors/1, proper_divisors/1, float_sum/1, int_sum/1, float_product/1, int_product/1, float_cumulative_sum/1, int_cumulative_sum/1, float_cumumlative_product/1, int_cumulative_product/1]). + +-spec do_gcd(integer(), integer()) -> integer(). +do_gcd(X, Y) -> + case X =:= 0 of + true -> + Y; + + false -> + _assert_subject = gleam@int:modulo(Y, X), + {ok, Z} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/arithmetics"/utf8>>, + function => <<"do_gcd"/utf8>>, + line => 93}) + end, + do_gcd(Z, X) + end. + +-spec gcd(integer(), integer()) -> integer(). +gcd(X, Y) -> + Absx = gleam_community@maths@piecewise:int_absolute_value(X), + Absy = gleam_community@maths@piecewise:int_absolute_value(Y), + do_gcd(Absx, Absy). + +-spec lcm(integer(), integer()) -> integer(). +lcm(X, Y) -> + Absx = gleam_community@maths@piecewise:int_absolute_value(X), + Absy = gleam_community@maths@piecewise:int_absolute_value(Y), + case do_gcd(Absx, Absy) of + 0 -> 0; + Gleam@denominator -> (Absx * Absy) div Gleam@denominator + end. + +-spec find_divisors(integer()) -> list(integer()). +find_divisors(N) -> + Nabs = gleam_community@maths@piecewise:float_absolute_value( + gleam_community@maths@conversion:int_to_float(N) + ), + _assert_subject = gleam_community@maths@elementary:square_root(Nabs), + {ok, Sqrt_result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/arithmetics"/utf8>>, + function => <<"find_divisors"/utf8>>, + line => 176}) + end, + Max = gleam_community@maths@conversion:float_to_int(Sqrt_result) + 1, + _pipe = gleam@list:range(2, Max), + _pipe@1 = gleam@list:fold(_pipe, [1, N], fun(Acc, I) -> case (case I of + 0 -> 0; + Gleam@denominator -> N rem Gleam@denominator + end) =:= 0 of + true -> + [I, case I of + 0 -> 0; + Gleam@denominator@1 -> N div Gleam@denominator@1 + end | Acc]; + + false -> + Acc + end end), + _pipe@2 = gleam@list:unique(_pipe@1), + gleam@list:sort(_pipe@2, fun gleam@int:compare/2). + +-spec divisors(integer()) -> list(integer()). +divisors(N) -> + find_divisors(N). + +-spec proper_divisors(integer()) -> list(integer()). +proper_divisors(N) -> + Divisors = find_divisors(N), + _pipe = Divisors, + gleam@list:take(_pipe, gleam@list:length(Divisors) - 1). + +-spec float_sum(list(float())) -> float(). +float_sum(Arr) -> + case Arr of + [] -> + +0.0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, +0.0, fun(Acc, A) -> A + Acc end) + end. + +-spec int_sum(list(integer())) -> integer(). +int_sum(Arr) -> + case Arr of + [] -> + 0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec float_product(list(float())) -> float(). +float_product(Arr) -> + case Arr of + [] -> + 1.0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 1.0, fun(Acc, A) -> A * Acc end) + end. + +-spec int_product(list(integer())) -> integer(). +int_product(Arr) -> + case Arr of + [] -> + 1; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 1, fun(Acc, A) -> A * Acc end) + end. + +-spec float_cumulative_sum(list(float())) -> list(float()). +float_cumulative_sum(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, +0.0, fun(Acc, A) -> A + Acc end) + end. + +-spec int_cumulative_sum(list(integer())) -> list(integer()). +int_cumulative_sum(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec float_cumumlative_product(list(float())) -> list(float()). +float_cumumlative_product(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 1.0, fun(Acc, A) -> A * Acc end) + end. + +-spec int_cumulative_product(list(integer())) -> list(integer()). +int_cumulative_product(Arr) -> + case Arr of + [] -> + []; + + _ -> + _pipe = Arr, + gleam@list:scan(_pipe, 1, fun(Acc, A) -> A * Acc end) + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl new file mode 100644 index 0000000..17644c4 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl @@ -0,0 +1,218 @@ +-module(gleam_community@maths@combinatorics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([combination/2, factorial/1, permutation/2, list_combination/2, list_permutation/1, cartesian_product/2]). + +-spec combination(integer(), integer()) -> {ok, integer()} | {error, binary()}. +combination(N, K) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case (K < 0) orelse (K > N) of + true -> + _pipe@1 = 0, + {ok, _pipe@1}; + + false -> + case (K =:= 0) orelse (K =:= N) of + true -> + _pipe@2 = 1, + {ok, _pipe@2}; + + false -> + Min = case K < (N - K) of + true -> + K; + + false -> + N - K + end, + _pipe@3 = gleam@list:range(1, Min), + _pipe@4 = gleam@list:fold( + _pipe@3, + 1, + fun(Acc, X) -> case X of + 0 -> 0; + Gleam@denominator -> (Acc * ((N + 1) - X)) + div Gleam@denominator + end end + ), + {ok, _pipe@4} + end + end + end. + +-spec factorial(integer()) -> {ok, integer()} | {error, binary()}. +factorial(N) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case N of + 0 -> + _pipe@1 = 1, + {ok, _pipe@1}; + + 1 -> + _pipe@2 = 1, + {ok, _pipe@2}; + + _ -> + _pipe@3 = gleam@list:range(1, N), + _pipe@4 = gleam@list:fold( + _pipe@3, + 1, + fun(Acc, X) -> Acc * X end + ), + {ok, _pipe@4} + end + end. + +-spec permutation(integer(), integer()) -> {ok, integer()} | {error, binary()}. +permutation(N, K) -> + case N < 0 of + true -> + _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, + {error, _pipe}; + + false -> + case (K < 0) orelse (K > N) of + true -> + _pipe@1 = 0, + {ok, _pipe@1}; + + false -> + case K =:= N of + true -> + _pipe@2 = 1, + {ok, _pipe@2}; + + false -> + _assert_subject = factorial(N), + {ok, V1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"permutation"/utf8>>, + line => 241}) + end, + _assert_subject@1 = factorial(N - K), + {ok, V2} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"permutation"/utf8>>, + line => 242}) + end, + _pipe@3 = case V2 of + 0 -> 0; + Gleam@denominator -> V1 div Gleam@denominator + end, + {ok, _pipe@3} + end + end + end. + +-spec do_list_combination(list(GIO), integer(), list(GIO)) -> list(list(GIO)). +do_list_combination(Arr, K, Prefix) -> + case K of + 0 -> + [gleam@list:reverse(Prefix)]; + + _ -> + case Arr of + [] -> + []; + + [X | Xs] -> + With_x = do_list_combination(Xs, K - 1, [X | Prefix]), + Without_x = do_list_combination(Xs, K, Prefix), + gleam@list:append(With_x, Without_x) + end + end. + +-spec list_combination(list(GII), integer()) -> {ok, list(list(GII))} | + {error, binary()}. +list_combination(Arr, K) -> + case K < 0 of + true -> + _pipe = <<"Invalid input argument: k < 0. Valid input is k > 0."/utf8>>, + {error, _pipe}; + + false -> + case K > gleam@list:length(Arr) of + true -> + _pipe@1 = <<"Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)."/utf8>>, + {error, _pipe@1}; + + false -> + _pipe@2 = do_list_combination(Arr, K, []), + {ok, _pipe@2} + end + end. + +-spec list_permutation(list(GIT)) -> list(list(GIT)). +list_permutation(Arr) -> + case Arr of + [] -> + [[]]; + + _ -> + gleam@list:flat_map( + Arr, + fun(X) -> + _assert_subject = gleam@list:pop(Arr, fun(Y) -> X =:= Y end), + {ok, {_, Remaining}} = case _assert_subject of + {ok, {_, _}} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/combinatorics"/utf8>>, + function => <<"list_permutation"/utf8>>, + line => 373}) + end, + gleam@list:map( + list_permutation(Remaining), + fun(Perm) -> [X | Perm] end + ) + end + ) + end. + +-spec cartesian_product(list(GIX), list(GIX)) -> list({GIX, GIX}). +cartesian_product(Xarr, Yarr) -> + Xset = begin + _pipe = Xarr, + gleam@set:from_list(_pipe) + end, + Yset = begin + _pipe@1 = Yarr, + gleam@set:from_list(_pipe@1) + end, + _pipe@2 = Xset, + _pipe@3 = gleam@set:fold( + _pipe@2, + gleam@set:new(), + fun(Accumulator0, Member0) -> + gleam@set:fold( + Yset, + Accumulator0, + fun(Accumulator1, Member1) -> + gleam@set:insert(Accumulator1, {Member0, Member1}) + end + ) + end + ), + gleam@set:to_list(_pipe@3). diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl new file mode 100644 index 0000000..0f6decb --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl @@ -0,0 +1,23 @@ +-module(gleam_community@maths@conversion). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([int_to_float/1, float_to_int/1, degrees_to_radians/1, radians_to_degrees/1]). + +-spec int_to_float(integer()) -> float(). +int_to_float(X) -> + gleam@int:to_float(X). + +-spec float_to_int(float()) -> integer(). +float_to_int(X) -> + erlang:trunc(X). + +-spec degrees_to_radians(float()) -> float(). +degrees_to_radians(X) -> + (X * math:pi()) / 180.0. + +-spec radians_to_degrees(float()) -> float(). +radians_to_degrees(X) -> + case math:pi() of + 0.0 -> 0.0; + Gleam@denominator -> (X * 180.0) / Gleam@denominator + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl new file mode 100644 index 0000000..dab5d68 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl @@ -0,0 +1,284 @@ +-module(gleam_community@maths@elementary). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([acos/1, acosh/1, asin/1, asinh/1, atan/1, atan2/2, atanh/1, cos/1, cosh/1, sin/1, sinh/1, tan/1, tanh/1, exponential/1, natural_logarithm/1, logarithm_2/1, logarithm_10/1, logarithm/2, power/2, square_root/1, cube_root/1, nth_root/2, pi/0, tau/0, e/0]). + +-spec acos(float()) -> {ok, float()} | {error, binary()}. +acos(X) -> + case (X >= -1.0) andalso (X =< 1.0) of + true -> + _pipe = math:acos(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec acosh(float()) -> {ok, float()} | {error, binary()}. +acosh(X) -> + case X >= 1.0 of + true -> + _pipe = math:acosh(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x < 1. Valid input is x >= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec asin(float()) -> {ok, float()} | {error, binary()}. +asin(X) -> + case (X >= -1.0) andalso (X =< 1.0) of + true -> + _pipe = math:asin(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, + {error, _pipe@1} + end. + +-spec asinh(float()) -> float(). +asinh(X) -> + math:asinh(X). + +-spec atan(float()) -> float(). +atan(X) -> + math:atan(X). + +-spec atan2(float(), float()) -> float(). +atan2(Y, X) -> + math:atan2(Y, X). + +-spec atanh(float()) -> {ok, float()} | {error, binary()}. +atanh(X) -> + case (X > -1.0) andalso (X < 1.0) of + true -> + _pipe = math:atanh(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1."/utf8>>, + {error, _pipe@1} + end. + +-spec cos(float()) -> float(). +cos(X) -> + math:cos(X). + +-spec cosh(float()) -> float(). +cosh(X) -> + math:cosh(X). + +-spec sin(float()) -> float(). +sin(X) -> + math:sin(X). + +-spec sinh(float()) -> float(). +sinh(X) -> + math:sinh(X). + +-spec tan(float()) -> float(). +tan(X) -> + math:tan(X). + +-spec tanh(float()) -> float(). +tanh(X) -> + math:tanh(X). + +-spec exponential(float()) -> float(). +exponential(X) -> + math:exp(X). + +-spec natural_logarithm(float()) -> {ok, float()} | {error, binary()}. +natural_logarithm(X) -> + case X > +0.0 of + true -> + _pipe = math:log(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm_2(float()) -> {ok, float()} | {error, binary()}. +logarithm_2(X) -> + case X > +0.0 of + true -> + _pipe = math:log2(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm_10(float()) -> {ok, float()} | {error, binary()}. +logarithm_10(X) -> + case X > +0.0 of + true -> + _pipe = math:log10(X), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@1} + end. + +-spec logarithm(float(), gleam@option:option(float())) -> {ok, float()} | + {error, binary()}. +logarithm(X, Base) -> + case X > +0.0 of + true -> + case Base of + {some, A} -> + case (A > +0.0) andalso (A /= 1.0) of + true -> + _assert_subject = logarithm_10(X), + {ok, Numerator} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"logarithm"/utf8>>, + line => 820}) + end, + _assert_subject@1 = logarithm_10(A), + {ok, Denominator} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"logarithm"/utf8>>, + line => 821}) + end, + _pipe = case Denominator of + 0.0 -> 0.0; + Gleam@denominator -> Numerator / Gleam@denominator + end, + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, + {error, _pipe@1} + end; + + _ -> + _pipe@2 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, + {error, _pipe@2} + end; + + _ -> + _pipe@3 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, + {error, _pipe@3} + end. + +-spec power(float(), float()) -> {ok, float()} | {error, binary()}. +power(X, Y) -> + Fractional = (math:ceil(Y) - Y) > +0.0, + case ((X < +0.0) andalso Fractional) orelse ((X =:= +0.0) andalso (Y < +0.0)) of + true -> + _pipe = <<"Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0."/utf8>>, + {error, _pipe}; + + false -> + _pipe@1 = math:pow(X, Y), + {ok, _pipe@1} + end. + +-spec square_root(float()) -> {ok, float()} | {error, binary()}. +square_root(X) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0."/utf8>>, + {error, _pipe}; + + false -> + _assert_subject = power(X, 1.0 / 2.0), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"square_root"/utf8>>, + line => 1066}) + end, + _pipe@1 = Result, + {ok, _pipe@1} + end. + +-spec cube_root(float()) -> {ok, float()} | {error, binary()}. +cube_root(X) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0."/utf8>>, + {error, _pipe}; + + false -> + _assert_subject = power(X, 1.0 / 3.0), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"cube_root"/utf8>>, + line => 1118}) + end, + _pipe@1 = Result, + {ok, _pipe@1} + end. + +-spec nth_root(float(), integer()) -> {ok, float()} | {error, binary()}. +nth_root(X, N) -> + case X < +0.0 of + true -> + _pipe = <<"Invalid input argument: x < 0. Valid input is x > 0"/utf8>>, + {error, _pipe}; + + false -> + case N >= 1 of + true -> + _assert_subject = power(X, case gleam@int:to_float(N) of + 0.0 -> 0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/elementary"/utf8>>, + function => <<"nth_root"/utf8>>, + line => 1175}) + end, + _pipe@1 = Result, + {ok, _pipe@1}; + + false -> + _pipe@2 = <<"Invalid input argument: n < 1. Valid input is n >= 2."/utf8>>, + {error, _pipe@2} + end + end. + +-spec pi() -> float(). +pi() -> + math:pi(). + +-spec tau() -> float(). +tau() -> + 2.0 * pi(). + +-spec e() -> float(). +e() -> + exponential(1.0). diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl new file mode 100644 index 0000000..2a58da6 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl @@ -0,0 +1,278 @@ +-module(gleam_community@maths@metrics). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([norm/2, minkowski_distance/3, manhatten_distance/2, euclidean_distance/2, mean/1, median/1, variance/2, standard_deviation/2]). + +-spec norm(list(float()), float()) -> float(). +norm(Arr, P) -> + case Arr of + [] -> + +0.0; + + _ -> + Agg = begin + _pipe = Arr, + gleam@list:fold( + _pipe, + +0.0, + fun(Acc, A) -> + _assert_subject = gleam_community@maths@elementary:power( + gleam_community@maths@piecewise:float_absolute_value( + A + ), + P + ), + {ok, Result} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"norm"/utf8>>, + line => 101}) + end, + Result + Acc + end + ) + end, + _assert_subject@1 = gleam_community@maths@elementary:power( + Agg, + case P of + 0.0 -> 0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end + ), + {ok, Result@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"norm"/utf8>>, + line => 106}) + end, + Result@1 + end. + +-spec minkowski_distance(list(float()), list(float()), float()) -> {ok, float()} | + {error, binary()}. +minkowski_distance(Xarr, Yarr, P) -> + Xlen = gleam@list:length(Xarr), + Ylen = gleam@list:length(Yarr), + case Xlen =:= Ylen of + false -> + _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, + {error, _pipe}; + + true -> + case P < 1.0 of + true -> + _pipe@1 = <<"Invalid input argument: p < 1. Valid input is p >= 1."/utf8>>, + {error, _pipe@1}; + + false -> + _pipe@2 = gleam@list:zip(Xarr, Yarr), + _pipe@3 = gleam@list:map( + _pipe@2, + fun(Tuple) -> + gleam@pair:first(Tuple) - gleam@pair:second(Tuple) + end + ), + _pipe@4 = norm(_pipe@3, P), + {ok, _pipe@4} + end + end. + +-spec manhatten_distance(list(float()), list(float())) -> {ok, float()} | + {error, binary()}. +manhatten_distance(Xarr, Yarr) -> + minkowski_distance(Xarr, Yarr, 1.0). + +-spec euclidean_distance(list(float()), list(float())) -> {ok, float()} | + {error, binary()}. +euclidean_distance(Xarr, Yarr) -> + minkowski_distance(Xarr, Yarr, 2.0). + +-spec mean(list(float())) -> {ok, float()} | {error, binary()}. +mean(Arr) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _pipe@1 = Arr, + _pipe@2 = gleam_community@maths@arithmetics:float_sum(_pipe@1), + _pipe@3 = (fun(A) -> + case gleam_community@maths@conversion:int_to_float( + gleam@list:length(Arr) + ) of + 0.0 -> 0.0; + Gleam@denominator -> A / Gleam@denominator + end + end)(_pipe@2), + {ok, _pipe@3} + end. + +-spec median(list(float())) -> {ok, float()} | {error, binary()}. +median(Arr) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + Count = gleam@list:length(Arr), + Mid = gleam@list:length(Arr) div 2, + Sorted = gleam@list:sort(Arr, fun gleam@float:compare/2), + case gleam_community@maths@predicates:is_odd(Count) of + true -> + _assert_subject = gleam@list:at(Sorted, Mid), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 402}) + end, + _pipe@1 = Val0, + {ok, _pipe@1}; + + false -> + _assert_subject@1 = gleam@list:at(Sorted, Mid - 1), + {ok, Val0@1} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 409}) + end, + _assert_subject@2 = gleam@list:at(Sorted, Mid), + {ok, Val1} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"median"/utf8>>, + line => 410}) + end, + _pipe@2 = [Val0@1, Val1], + mean(_pipe@2) + end + end. + +-spec variance(list(float()), integer()) -> {ok, float()} | {error, binary()}. +variance(Arr, Ddof) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + case Ddof < 0 of + true -> + _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, + {error, _pipe@1}; + + false -> + _assert_subject = mean(Arr), + {ok, Mean} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"variance"/utf8>>, + line => 475}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:map( + _pipe@2, + fun(A) -> + _assert_subject@1 = gleam_community@maths@elementary:power( + A - Mean, + 2.0 + ), + {ok, Result} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"variance"/utf8>>, + line => 478}) + end, + Result + end + ), + _pipe@4 = gleam_community@maths@arithmetics:float_sum( + _pipe@3 + ), + _pipe@5 = (fun(A@1) -> + case (gleam_community@maths@conversion:int_to_float( + gleam@list:length(Arr) + ) + - gleam_community@maths@conversion:int_to_float(Ddof)) of + 0.0 -> 0.0; + Gleam@denominator -> A@1 / Gleam@denominator + end + end)(_pipe@4), + {ok, _pipe@5} + end + end. + +-spec standard_deviation(list(float()), integer()) -> {ok, float()} | + {error, binary()}. +standard_deviation(Arr, Ddof) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + case Ddof < 0 of + true -> + _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, + {error, _pipe@1}; + + false -> + _assert_subject = variance(Arr, Ddof), + {ok, Variance} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"standard_deviation"/utf8>>, + line => 551}) + end, + _assert_subject@1 = gleam_community@maths@elementary:square_root( + Variance + ), + {ok, Stdev} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/metrics"/utf8>>, + function => <<"standard_deviation"/utf8>>, + line => 554}) + end, + _pipe@2 = Stdev, + {ok, _pipe@2} + end + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl new file mode 100644 index 0000000..258d879 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl @@ -0,0 +1,553 @@ +-module(gleam_community@maths@piecewise). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([float_absolute_value/1, int_absolute_value/1, float_absolute_difference/2, int_absolute_difference/2, float_sign/1, round/3, ceiling/2, floor/2, truncate/2, int_sign/1, float_flip_sign/1, float_copy_sign/2, int_flip_sign/1, int_copy_sign/2, minimum/3, maximum/3, minmax/3, list_minimum/2, list_maximum/2, arg_minimum/2, arg_maximum/2, extrema/2]). +-export_type([rounding_mode/0]). + +-type rounding_mode() :: round_nearest | + round_ties_away | + round_ties_up | + round_to_zero | + round_down | + round_up. + +-spec truncate_float(float()) -> float(). +truncate_float(X) -> + erlang:trunc(X). + +-spec round_to_zero(float(), float()) -> float(). +round_to_zero(P, X) -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> truncate_float(X * P) / Gleam@denominator + end. + +-spec round_down(float(), float()) -> float(). +round_down(P, X) -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> math:floor(X * P) / Gleam@denominator + end. + +-spec round_up(float(), float()) -> float(). +round_up(P, X) -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> math:ceil(X * P) / Gleam@denominator + end. + +-spec float_absolute_value(float()) -> float(). +float_absolute_value(X) -> + case X > +0.0 of + true -> + X; + + false -> + -1.0 * X + end. + +-spec int_absolute_value(integer()) -> integer(). +int_absolute_value(X) -> + case X > 0 of + true -> + X; + + false -> + -1 * X + end. + +-spec float_absolute_difference(float(), float()) -> float(). +float_absolute_difference(A, B) -> + _pipe = A - B, + float_absolute_value(_pipe). + +-spec int_absolute_difference(integer(), integer()) -> integer(). +int_absolute_difference(A, B) -> + _pipe = A - B, + int_absolute_value(_pipe). + +-spec do_float_sign(float()) -> float(). +do_float_sign(X) -> + case X < +0.0 of + true -> + -1.0; + + false -> + case X =:= +0.0 of + true -> + +0.0; + + false -> + 1.0 + end + end. + +-spec float_sign(float()) -> float(). +float_sign(X) -> + do_float_sign(X). + +-spec round_to_nearest(float(), float()) -> float(). +round_to_nearest(P, X) -> + Xabs = float_absolute_value(X) * P, + Xabs_truncated = truncate_float(Xabs), + Remainder = Xabs - Xabs_truncated, + case Remainder of + _ when Remainder > 0.5 -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) + / Gleam@denominator + end; + + _ when Remainder =:= 0.5 -> + _assert_subject = gleam@int:modulo( + gleam_community@maths@conversion:float_to_int(Xabs), + 2 + ), + {ok, Is_even} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"round_to_nearest"/utf8>>, + line => 423}) + end, + case Is_even =:= 0 of + true -> + case P of + 0.0 -> 0.0; + Gleam@denominator@1 -> (float_sign(X) * Xabs_truncated) + / Gleam@denominator@1 + end; + + false -> + case P of + 0.0 -> 0.0; + Gleam@denominator@2 -> (float_sign(X) * truncate_float( + Xabs + 1.0 + )) + / Gleam@denominator@2 + end + end; + + _ -> + case P of + 0.0 -> 0.0; + Gleam@denominator@3 -> (float_sign(X) * Xabs_truncated) / Gleam@denominator@3 + end + end. + +-spec round_ties_away(float(), float()) -> float(). +round_ties_away(P, X) -> + Xabs = float_absolute_value(X) * P, + Remainder = Xabs - truncate_float(Xabs), + case Remainder of + _ when Remainder >= 0.5 -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) + / Gleam@denominator + end; + + _ -> + case P of + 0.0 -> 0.0; + Gleam@denominator@1 -> (float_sign(X) * truncate_float(Xabs)) / Gleam@denominator@1 + end + end. + +-spec round_ties_up(float(), float()) -> float(). +round_ties_up(P, X) -> + Xabs = float_absolute_value(X) * P, + Xabs_truncated = truncate_float(Xabs), + Remainder = Xabs - Xabs_truncated, + case Remainder of + _ when (Remainder >= 0.5) andalso (X >= +0.0) -> + case P of + 0.0 -> 0.0; + Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) + / Gleam@denominator + end; + + _ -> + case P of + 0.0 -> 0.0; + Gleam@denominator@1 -> (float_sign(X) * Xabs_truncated) / Gleam@denominator@1 + end + end. + +-spec do_round(float(), float(), gleam@option:option(rounding_mode())) -> {ok, + float()} | + {error, binary()}. +do_round(P, X, Mode) -> + case Mode of + {some, round_nearest} -> + _pipe = round_to_nearest(P, X), + {ok, _pipe}; + + {some, round_ties_away} -> + _pipe@1 = round_ties_away(P, X), + {ok, _pipe@1}; + + {some, round_ties_up} -> + _pipe@2 = round_ties_up(P, X), + {ok, _pipe@2}; + + {some, round_to_zero} -> + _pipe@3 = round_to_zero(P, X), + {ok, _pipe@3}; + + {some, round_down} -> + _pipe@4 = round_down(P, X), + {ok, _pipe@4}; + + {some, round_up} -> + _pipe@5 = round_up(P, X), + {ok, _pipe@5}; + + none -> + _pipe@6 = round_to_nearest(P, X), + {ok, _pipe@6} + end. + +-spec round( + float(), + gleam@option:option(integer()), + gleam@option:option(rounding_mode()) +) -> {ok, float()} | {error, binary()}. +round(X, Digits, Mode) -> + case Digits of + {some, A} -> + _assert_subject = gleam_community@maths@elementary:power( + 10.0, + gleam_community@maths@conversion:int_to_float(A) + ), + {ok, P} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"round"/utf8>>, + line => 366}) + end, + do_round(P, X, Mode); + + none -> + do_round(1.0, X, Mode) + end. + +-spec ceiling(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +ceiling(X, Digits) -> + round(X, Digits, {some, round_up}). + +-spec floor(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +floor(X, Digits) -> + round(X, Digits, {some, round_down}). + +-spec truncate(float(), gleam@option:option(integer())) -> {ok, float()} | + {error, binary()}. +truncate(X, Digits) -> + round(X, Digits, {some, round_to_zero}). + +-spec do_int_sign(integer()) -> integer(). +do_int_sign(X) -> + case X < 0 of + true -> + -1; + + false -> + case X =:= 0 of + true -> + 0; + + false -> + 1 + end + end. + +-spec int_sign(integer()) -> integer(). +int_sign(X) -> + do_int_sign(X). + +-spec float_flip_sign(float()) -> float(). +float_flip_sign(X) -> + -1.0 * X. + +-spec float_copy_sign(float(), float()) -> float(). +float_copy_sign(X, Y) -> + case float_sign(X) =:= float_sign(Y) of + true -> + X; + + false -> + float_flip_sign(X) + end. + +-spec int_flip_sign(integer()) -> integer(). +int_flip_sign(X) -> + -1 * X. + +-spec int_copy_sign(integer(), integer()) -> integer(). +int_copy_sign(X, Y) -> + case int_sign(X) =:= int_sign(Y) of + true -> + X; + + false -> + int_flip_sign(X) + end. + +-spec minimum(FQL, FQL, fun((FQL, FQL) -> gleam@order:order())) -> FQL. +minimum(X, Y, Compare) -> + case Compare(X, Y) of + lt -> + X; + + eq -> + X; + + gt -> + Y + end. + +-spec maximum(FQM, FQM, fun((FQM, FQM) -> gleam@order:order())) -> FQM. +maximum(X, Y, Compare) -> + case Compare(X, Y) of + lt -> + Y; + + eq -> + Y; + + gt -> + X + end. + +-spec minmax(FQN, FQN, fun((FQN, FQN) -> gleam@order:order())) -> {FQN, FQN}. +minmax(X, Y, Compare) -> + {minimum(X, Y, Compare), maximum(X, Y, Compare)}. + +-spec list_minimum(list(FQO), fun((FQO, FQO) -> gleam@order:order())) -> {ok, + FQO} | + {error, binary()}. +list_minimum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"list_minimum"/utf8>>, + line => 945}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + Val0, + fun(Acc, Element) -> case Compare(Element, Acc) of + lt -> + Element; + + _ -> + Acc + end end + ), + {ok, _pipe@2} + end. + +-spec list_maximum(list(FQS), fun((FQS, FQS) -> gleam@order:order())) -> {ok, + FQS} | + {error, binary()}. +list_maximum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val0} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"list_maximum"/utf8>>, + line => 1004}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + Val0, + fun(Acc, Element) -> case Compare(Acc, Element) of + lt -> + Element; + + _ -> + Acc + end end + ), + {ok, _pipe@2} + end. + +-spec arg_minimum(list(FQW), fun((FQW, FQW) -> gleam@order:order())) -> {ok, + list(integer())} | + {error, binary()}. +arg_minimum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = begin + _pipe@1 = Arr, + list_minimum(_pipe@1, Compare) + end, + {ok, Min} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"arg_minimum"/utf8>>, + line => 1069}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:index_map( + _pipe@2, + fun(Index, Element) -> case Compare(Element, Min) of + eq -> + Index; + + _ -> + -1 + end end + ), + _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of + -1 -> + false; + + _ -> + true + end end), + {ok, _pipe@4} + end. + +-spec arg_maximum(list(FRB), fun((FRB, FRB) -> gleam@order:order())) -> {ok, + list(integer())} | + {error, binary()}. +arg_maximum(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = begin + _pipe@1 = Arr, + list_maximum(_pipe@1, Compare) + end, + {ok, Max} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"arg_maximum"/utf8>>, + line => 1139}) + end, + _pipe@2 = Arr, + _pipe@3 = gleam@list:index_map( + _pipe@2, + fun(Index, Element) -> case Compare(Element, Max) of + eq -> + Index; + + _ -> + -1 + end end + ), + _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of + -1 -> + false; + + _ -> + true + end end), + {ok, _pipe@4} + end. + +-spec extrema(list(FRG), fun((FRG, FRG) -> gleam@order:order())) -> {ok, + {FRG, FRG}} | + {error, binary()}. +extrema(Arr, Compare) -> + case Arr of + [] -> + _pipe = <<"Invalid input argument: The list is empty."/utf8>>, + {error, _pipe}; + + _ -> + _assert_subject = gleam@list:at(Arr, 0), + {ok, Val_max} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"extrema"/utf8>>, + line => 1209}) + end, + _assert_subject@1 = gleam@list:at(Arr, 0), + {ok, Val_min} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/piecewise"/utf8>>, + function => <<"extrema"/utf8>>, + line => 1210}) + end, + _pipe@1 = Arr, + _pipe@2 = gleam@list:fold( + _pipe@1, + {Val_min, Val_max}, + fun(Acc, Element) -> + First = gleam@pair:first(Acc), + Second = gleam@pair:second(Acc), + case {Compare(Element, First), Compare(Second, Element)} of + {lt, lt} -> + {Element, Element}; + + {lt, _} -> + {Element, Second}; + + {_, lt} -> + {First, Element}; + + {_, _} -> + {First, Second} + end + end + ), + {ok, _pipe@2} + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl new file mode 100644 index 0000000..d991d89 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl @@ -0,0 +1,118 @@ +-module(gleam_community@maths@predicates). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_close/4, all_close/4, is_fractional/1, is_power/2, is_perfect/1, is_even/1, is_odd/1]). + +-spec float_absolute_value(float()) -> float(). +float_absolute_value(X) -> + case X > +0.0 of + true -> + X; + + false -> + -1.0 * X + end. + +-spec float_absolute_difference(float(), float()) -> float(). +float_absolute_difference(A, B) -> + _pipe = A - B, + float_absolute_value(_pipe). + +-spec is_close(float(), float(), float(), float()) -> boolean(). +is_close(A, B, Rtol, Atol) -> + X = float_absolute_difference(A, B), + Y = Atol + (Rtol * float_absolute_value(B)), + case X =< Y of + true -> + true; + + false -> + false + end. + +-spec all_close(list(float()), list(float()), float(), float()) -> {ok, + list(boolean())} | + {error, binary()}. +all_close(Xarr, Yarr, Rtol, Atol) -> + Xlen = gleam@list:length(Xarr), + Ylen = gleam@list:length(Yarr), + case Xlen =:= Ylen of + false -> + _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, + {error, _pipe}; + + true -> + _pipe@1 = gleam@list:zip(Xarr, Yarr), + _pipe@2 = gleam@list:map( + _pipe@1, + fun(Z) -> + is_close( + gleam@pair:first(Z), + gleam@pair:second(Z), + Rtol, + Atol + ) + end + ), + {ok, _pipe@2} + end. + +-spec is_fractional(float()) -> boolean(). +is_fractional(X) -> + (math:ceil(X) - X) > +0.0. + +-spec is_power(integer(), integer()) -> boolean(). +is_power(X, Y) -> + _assert_subject = gleam_community@maths@elementary:logarithm( + gleam@int:to_float(X), + {some, gleam@int:to_float(Y)} + ), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/predicates"/utf8>>, + function => <<"is_power"/utf8>>, + line => 241}) + end, + _assert_subject@1 = gleam_community@maths@piecewise:truncate( + Value, + {some, 0} + ), + {ok, Truncated} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/predicates"/utf8>>, + function => <<"is_power"/utf8>>, + line => 243}) + end, + Rem = Value - Truncated, + Rem =:= +0.0. + +-spec do_sum(list(integer())) -> integer(). +do_sum(Arr) -> + case Arr of + [] -> + 0; + + _ -> + _pipe = Arr, + gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) + end. + +-spec is_perfect(integer()) -> boolean(). +is_perfect(N) -> + do_sum(gleam_community@maths@arithmetics:proper_divisors(N)) =:= N. + +-spec is_even(integer()) -> boolean(). +is_even(X) -> + (X rem 2) =:= 0. + +-spec is_odd(integer()) -> boolean(). +is_odd(X) -> + (X rem 2) /= 0. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl new file mode 100644 index 0000000..74dcff4 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl @@ -0,0 +1,199 @@ +-module(gleam_community@maths@sequences). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([arange/3, linear_space/4, logarithmic_space/5, geometric_space/4]). + +-spec arange(float(), float(), float()) -> list(float()). +arange(Start, Stop, Step) -> + case ((Start >= Stop) andalso (Step > +0.0)) orelse ((Start =< Stop) andalso (Step + < +0.0)) of + true -> + []; + + false -> + Direction = case Start =< Stop of + true -> + 1.0; + + false -> + -1.0 + end, + Step_abs = gleam_community@maths@piecewise:float_absolute_value( + Step + ), + Num = case Step_abs of + 0.0 -> 0.0; + Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator + end, + _pipe = gleam@list:range( + 0, + gleam_community@maths@conversion:float_to_int(Num) - 1 + ), + gleam@list:map( + _pipe, + fun(I) -> + Start + ((gleam_community@maths@conversion:int_to_float(I) * Step_abs) + * Direction) + end + ) + end. + +-spec linear_space(float(), float(), integer(), boolean()) -> {ok, + list(float())} | + {error, binary()}. +linear_space(Start, Stop, Num, Endpoint) -> + Direction = case Start =< Stop of + true -> + 1.0; + + false -> + -1.0 + end, + case Num > 0 of + true -> + case Endpoint of + true -> + Increment = case gleam_community@maths@conversion:int_to_float( + Num - 1 + ) of + 0.0 -> 0.0; + Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator + end, + _pipe = gleam@list:range(0, Num - 1), + _pipe@1 = gleam@list:map( + _pipe, + fun(I) -> + Start + ((gleam_community@maths@conversion:int_to_float( + I + ) + * Increment) + * Direction) + end + ), + {ok, _pipe@1}; + + false -> + Increment@1 = case gleam_community@maths@conversion:int_to_float( + Num + ) of + 0.0 -> 0.0; + Gleam@denominator@1 -> gleam_community@maths@piecewise:float_absolute_value( + Start - Stop + ) + / Gleam@denominator@1 + end, + _pipe@2 = gleam@list:range(0, Num - 1), + _pipe@3 = gleam@list:map( + _pipe@2, + fun(I@1) -> + Start + ((gleam_community@maths@conversion:int_to_float( + I@1 + ) + * Increment@1) + * Direction) + end + ), + {ok, _pipe@3} + end; + + false -> + _pipe@4 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@4} + end. + +-spec logarithmic_space(float(), float(), integer(), boolean(), float()) -> {ok, + list(float())} | + {error, binary()}. +logarithmic_space(Start, Stop, Num, Endpoint, Base) -> + case Num > 0 of + true -> + _assert_subject = linear_space(Start, Stop, Num, Endpoint), + {ok, Linspace} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"logarithmic_space"/utf8>>, + line => 221}) + end, + _pipe = Linspace, + _pipe@1 = gleam@list:map( + _pipe, + fun(I) -> + _assert_subject@1 = gleam_community@maths@elementary:power( + Base, + I + ), + {ok, Result} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"logarithmic_space"/utf8>>, + line => 224}) + end, + Result + end + ), + {ok, _pipe@1}; + + false -> + _pipe@2 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@2} + end. + +-spec geometric_space(float(), float(), integer(), boolean()) -> {ok, + list(float())} | + {error, binary()}. +geometric_space(Start, Stop, Num, Endpoint) -> + case (Start =:= +0.0) orelse (Stop =:= +0.0) of + true -> + _pipe = <<""/utf8>>, + {error, _pipe}; + + false -> + case Num > 0 of + true -> + _assert_subject = gleam_community@maths@elementary:logarithm_10( + Start + ), + {ok, Log_start} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"geometric_space"/utf8>>, + line => 293}) + end, + _assert_subject@1 = gleam_community@maths@elementary:logarithm_10( + Stop + ), + {ok, Log_stop} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/sequences"/utf8>>, + function => <<"geometric_space"/utf8>>, + line => 294}) + end, + logarithmic_space(Log_start, Log_stop, Num, Endpoint, 10.0); + + false -> + _pipe@1 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, + {error, _pipe@1} + end + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl new file mode 100644 index 0000000..925f4bb --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl @@ -0,0 +1,157 @@ +-module(gleam_community@maths@special). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([erf/1, gamma/1, beta/2, incomplete_gamma/2]). + +-spec erf(float()) -> float(). +erf(X) -> + _assert_subject = [0.254829592, + -0.284496736, + 1.421413741, + -1.453152027, + 1.061405429], + [A1, A2, A3, A4, A5] = case _assert_subject of + [_, _, _, _, _] -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"erf"/utf8>>, + line => 79}) + end, + P = 0.3275911, + Sign = gleam_community@maths@piecewise:float_sign(X), + X@1 = gleam_community@maths@piecewise:float_absolute_value(X), + T = case (1.0 + (P * X@1)) of + 0.0 -> 0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end, + Y = 1.0 - ((((((((((A5 * T) + A4) * T) + A3) * T) + A2) * T) + A1) * T) * gleam_community@maths@elementary:exponential( + (-1.0 * X@1) * X@1 + )), + Sign * Y. + +-spec gamma_lanczos(float()) -> float(). +gamma_lanczos(X) -> + case X < 0.5 of + true -> + case (gleam_community@maths@elementary:sin( + gleam_community@maths@elementary:pi() * X + ) + * gamma_lanczos(1.0 - X)) of + 0.0 -> 0.0; + Gleam@denominator -> gleam_community@maths@elementary:pi() / Gleam@denominator + end; + + false -> + Z = X - 1.0, + X@1 = gleam@list:index_fold( + [0.99999999999980993, + 676.5203681218851, + -1259.1392167224028, + 771.32342877765313, + -176.61502916214059, + 12.507343278686905, + -0.13857109526572012, + 0.0000099843695780195716, + 0.00000015056327351493116], + +0.0, + fun(Acc, V, Index) -> case Index > 0 of + true -> + Acc + (case (Z + gleam_community@maths@conversion:int_to_float( + Index + )) of + 0.0 -> 0.0; + Gleam@denominator@1 -> V / Gleam@denominator@1 + end); + + false -> + V + end end + ), + T = (Z + 7.0) + 0.5, + _assert_subject = gleam_community@maths@elementary:power( + 2.0 * gleam_community@maths@elementary:pi(), + 0.5 + ), + {ok, V1} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"gamma_lanczos"/utf8>>, + line => 146}) + end, + _assert_subject@1 = gleam_community@maths@elementary:power( + T, + Z + 0.5 + ), + {ok, V2} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"gamma_lanczos"/utf8>>, + line => 147}) + end, + ((V1 * V2) * gleam_community@maths@elementary:exponential(-1.0 * T)) + * X@1 + end. + +-spec gamma(float()) -> float(). +gamma(X) -> + gamma_lanczos(X). + +-spec beta(float(), float()) -> float(). +beta(X, Y) -> + case gamma(X + Y) of + 0.0 -> 0.0; + Gleam@denominator -> (gamma(X) * gamma(Y)) / Gleam@denominator + end. + +-spec incomplete_gamma_sum(float(), float(), float(), float(), float()) -> float(). +incomplete_gamma_sum(A, X, T, S, N) -> + case T of + +0.0 -> + S; + + _ -> + Ns = S + T, + Nt = T * (case (A + N) of + 0.0 -> 0.0; + Gleam@denominator -> X / Gleam@denominator + end), + incomplete_gamma_sum(A, X, Nt, Ns, N + 1.0) + end. + +-spec incomplete_gamma(float(), float()) -> {ok, float()} | {error, binary()}. +incomplete_gamma(A, X) -> + case (A > +0.0) andalso (X >= +0.0) of + true -> + _assert_subject = gleam_community@maths@elementary:power(X, A), + {ok, V} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam_community/maths/special"/utf8>>, + function => <<"incomplete_gamma"/utf8>>, + line => 173}) + end, + _pipe = (V * gleam_community@maths@elementary:exponential(-1.0 * X)) + * incomplete_gamma_sum(A, X, case A of + 0.0 -> 0.0; + Gleam@denominator -> 1.0 / Gleam@denominator + end, +0.0, 1.0), + {ok, _pipe}; + + false -> + _pipe@1 = <<"Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0."/utf8>>, + {error, _pipe@1} + end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src b/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src new file mode 100644 index 0000000..091e679 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src @@ -0,0 +1,16 @@ +{application, gleam_community_maths, [ + {vsn, "1.0.1"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "A basic maths library"}, + {modules, [gleam_community@maths@arithmetics, + gleam_community@maths@combinatorics, + gleam_community@maths@conversion, + gleam_community@maths@elementary, + gleam_community@maths@metrics, + gleam_community@maths@piecewise, + gleam_community@maths@predicates, + gleam_community@maths@sequences, + gleam_community@maths@special]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_community_maths/src/maths.mjs b/aoc2023/build/packages/gleam_community_maths/src/maths.mjs new file mode 100644 index 0000000..5c5ab31 --- /dev/null +++ b/aoc2023/build/packages/gleam_community_maths/src/maths.mjs @@ -0,0 +1,95 @@ +export function sin(float) { + return Math.sin(float) +} + +export function pi() { + return Math.PI +} + +export function acos(float) { + return Math.acos(float) +} + +export function acosh(float) { + return Math.acosh(float) +} + +export function asin(float) { + return Math.asin(float) +} + +export function asinh(float) { + return Math.asinh(float) +} + +export function atan(float) { + return Math.atan(float) +} + +export function tan(float) { + return Math.tan(float) +} + +export function atan2(floaty, floatx) { + return Math.atan2(floaty, floatx) +} + +export function atanh(float) { + return Math.atanh(float) +} + +export function cos(float) { + return Math.cos(float) +} + +export function cosh(float) { + return Math.cosh(float) +} + +export function exponential(float) { + return Math.exp(float) +} + +export function ceiling(float) { + return Math.ceil(float) +} + +export function floor(float) { + return Math.floor(float) +} + +export function power(base, exponent) { + return Math.pow(base, exponent) +} + +export function logarithm(float) { + return Math.log(float) +} + +export function logarithm_10(float) { + return Math.log10(float) +} + +export function logarithm_2(float) { + return Math.log2(float) +} + +export function sinh(float) { + return Math.sinh(float) +} + +export function tanh(float) { + return Math.tanh(float) +} + +export function sign(float) { + return Math.sign(float) +} + +export function truncate(float) { + return Math.trunc(float) +} + +export function to_int(float) { + return Math.trunc(float) +} diff --git a/aoc2023/build/packages/gleam_erlang/LICENSE b/aoc2023/build/packages/gleam_erlang/LICENSE new file mode 100644 index 0000000..59e1345 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright {{copyright_year}}, {{author_name}} <{{author_email}}>. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/aoc2023/build/packages/gleam_erlang/README.md b/aoc2023/build/packages/gleam_erlang/README.md new file mode 100644 index 0000000..ffee4cd --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/README.md @@ -0,0 +1,37 @@ +# Gleam Erlang 🐙 + +A library for making use of Erlang specific code! + +## Features + +- Typed Erlang processes and message sending. +- Erlang binary format (de)serialisation. +- Functions for working with Erlang's charlists. +- Reading, writing, and deletion of files. +- Basic distributed Erlang support and working with nodes. +- Reading and writing of environment variables. +- Functions for working with atoms. + +## Usage + +Add this library to your Gleam project + +```shell +gleam add gleam_erlang +``` + +And then use it in your code + +```gleam +import gleam/io +import gleam/erlang/file + +pub fn main() { + assert Ok(contents) = file.read("pokedex.txt") + io.println(contents) +} +``` + +Documentation can be found at . + +This library requires OTP 23.0 or higher. diff --git a/aoc2023/build/packages/gleam_erlang/gleam.toml b/aoc2023/build/packages/gleam_erlang/gleam.toml new file mode 100644 index 0000000..8d62603 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/gleam.toml @@ -0,0 +1,18 @@ +name = "gleam_erlang" + +version = "0.23.1" +licences = ["Apache-2.0"] +description = "A Gleam library for working with Erlang" + +repository = { type = "github", user = "gleam-lang", repo = "erlang" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] +gleam = ">= 0.32.0" + +[dependencies] +gleam_stdlib = "~> 0.32" + +[dev-dependencies] +gleeunit = "~> 0.6" diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl new file mode 100644 index 0000000..b38d11e --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl @@ -0,0 +1,15 @@ +-record(file_info, { + size :: integer(), + file_type :: gleam@erlang@file:file_type(), + access :: gleam@erlang@file:access(), + atime :: integer(), + mtime :: integer(), + ctime :: integer(), + mode :: integer(), + links :: integer(), + major_device :: integer(), + minor_device :: integer(), + inode :: integer(), + user_id :: integer(), + group_id :: integer() +}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl new file mode 100644 index 0000000..4cd0452 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl @@ -0,0 +1 @@ +-record(abnormal, {reason :: binary()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl new file mode 100644 index 0000000..5dd5047 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl @@ -0,0 +1 @@ +-record(callee_down, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl new file mode 100644 index 0000000..b82b49f --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl @@ -0,0 +1 @@ +-record(cancelled, {time_remaining :: integer()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl new file mode 100644 index 0000000..c476308 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl @@ -0,0 +1,4 @@ +-record(exit_message, { + pid :: gleam@erlang@process:pid_(), + reason :: gleam@erlang@process:exit_reason() +}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl new file mode 100644 index 0000000..df0b6b7 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl @@ -0,0 +1,4 @@ +-record(process_down, { + pid :: gleam@erlang@process:pid_(), + reason :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl new file mode 100644 index 0000000..ce552e2 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl @@ -0,0 +1 @@ +-record(process_monitor, {tag :: gleam@erlang:reference_()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl new file mode 100644 index 0000000..abc46b2 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl @@ -0,0 +1,4 @@ +-record(subject, { + owner :: gleam@erlang@process:pid_(), + tag :: gleam@erlang:reference_() +}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl new file mode 100644 index 0000000..52c9896 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl @@ -0,0 +1,4 @@ +-record(application_failed_to_start, { + name :: gleam@erlang@atom:atom_(), + reason :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl new file mode 100644 index 0000000..fde3c61 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl @@ -0,0 +1 @@ +-record(unknown_application, {name :: gleam@erlang@atom:atom_()}). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam new file mode 100644 index 0000000..783cd53 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam @@ -0,0 +1,158 @@ +import gleam/dynamic.{type Dynamic} +import gleam/list +import gleam/erlang/atom.{type Atom} +import gleam/erlang/charlist.{type Charlist} + +@external(erlang, "io_lib", "format") +fn erl_format(a: String, b: List(a)) -> Charlist + +/// Return a string representation of any term +pub fn format(term: any) -> String { + charlist.to_string(erl_format("~p", [term])) +} + +@external(erlang, "erlang", "term_to_binary") +pub fn term_to_binary(a: a) -> BitArray + +type Safe { + Safe +} + +@external(erlang, "erlang", "binary_to_term") +fn erl_binary_to_term(a: BitArray, b: List(Safe)) -> Dynamic + +pub fn binary_to_term(binary: BitArray) -> Result(Dynamic, Nil) { + case rescue(fn() { erl_binary_to_term(binary, [Safe]) }) { + Ok(term) -> Ok(term) + Error(_) -> Error(Nil) + } +} + +pub fn unsafe_binary_to_term(binary: BitArray) -> Result(Dynamic, Nil) { + case rescue(fn() { erl_binary_to_term(binary, []) }) { + Ok(term) -> Ok(term) + Error(_) -> Error(Nil) + } +} + +/// Error value returned by `get_line` function +/// +pub type GetLineError { + Eof + NoData +} + +/// Reads a line from standard input with the given prompt. +/// +/// # Example +/// +/// > get_line("Language: ") +/// // -> Language: <- gleam +/// Ok("gleam\n") +/// +@external(erlang, "gleam_erlang_ffi", "get_line") +pub fn get_line(prompt prompt: String) -> Result(String, GetLineError) + +pub type TimeUnit { + Second + Millisecond + Microsecond + Nanosecond +} + +/// Returns the current OS system time. +/// +/// +@external(erlang, "os", "system_time") +pub fn system_time(a: TimeUnit) -> Int + +/// Returns the current OS system time as a tuple of Ints +/// +/// http://erlang.org/doc/man/os.html#timestamp-0 +@external(erlang, "os", "timestamp") +pub fn erlang_timestamp() -> #(Int, Int, Int) + +/// Gleam doesn't offer any way to raise exceptions, but they may still occur +/// due to bugs when working with unsafe code, such as when calling Erlang +/// function. +/// +/// This function will catch any error thrown and convert it into a result +/// rather than crashing the process. +/// +@external(erlang, "gleam_erlang_ffi", "rescue") +pub fn rescue(a: fn() -> a) -> Result(a, Crash) + +pub type Crash { + Exited(Dynamic) + Thrown(Dynamic) + Errored(Dynamic) +} + +@external(erlang, "init", "get_plain_arguments") +fn get_start_arguments() -> List(Charlist) + +/// Get the arguments given to the program when it was started. +/// +/// This is sometimes called `argv` in other languages. +pub fn start_arguments() -> List(String) { + get_start_arguments() + |> list.map(charlist.to_string) +} + +/// Starts an OTP application's process tree in the background, as well as +/// the trees of any applications that the given application depends upon. An +/// OTP application typically maps onto a Gleam or Hex package. +/// +/// Returns a list of the applications that were started. Calling this function +/// for application that have already been started is a no-op so you do not need +/// to check the application state beforehand. +/// +/// In Gleam we prefer to not use these implicit background process trees, but +/// you will likely still need to start the trees of OTP applications written in +/// other BEAM languages such as Erlang or Elixir, including those included by +/// default with Erlang/OTP. +/// +/// For more information see the OTP documentation. +/// - +/// - +/// +@external(erlang, "gleam_erlang_ffi", "ensure_all_started") +pub fn ensure_all_started( + application application: Atom, +) -> Result(List(Atom), EnsureAllStartedError) + +pub type EnsureAllStartedError { + UnknownApplication(name: Atom) + ApplicationFailedToStart(name: Atom, reason: Dynamic) +} + +/// A unique reference value. +/// +/// It holds no particular meaning or value, but unique values are often useful +/// in programs are used heavily within both Gleam and Erlang's OTP frameworks. +/// +/// More can be read about references in the [Erlang documentation][1]. +/// +/// [1]: https://www.erlang.org/doc/efficiency_guide/advanced.html#unique_references +/// +pub type Reference + +/// Create a new unique reference. +/// +@external(erlang, "erlang", "make_ref") +pub fn make_reference() -> Reference + +/// Returns the path of a package's `priv` directory, where extra non-Gleam +/// or Erlang files are typically kept. +/// +/// Returns an error if no package was found with the given name. +/// +/// # Example +/// +/// ```gleam +/// > erlang.priv_directory("my_app") +/// // -> Ok("/some/location/my_app/priv") +/// ``` +/// +@external(erlang, "gleam_erlang_ffi", "priv_directory") +pub fn priv_directory(name: String) -> Result(String, Nil) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam new file mode 100644 index 0000000..a27289c --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam @@ -0,0 +1,79 @@ +import gleam/dynamic.{type DecodeErrors, type Dynamic} + +/// Atom is a special string-like data-type that is most commonly used for +/// interfacing with code written in other BEAM languages such as Erlang and +/// Elixir. It is preferable to define your own custom types to use instead of +/// atoms where possible. +/// +/// Atoms are not used much in typical Gleam code! +/// +/// ## Creating atoms +/// +/// We can create atoms with the the [`create_from_string`](#create_from_string) +/// function, though we must be careful when doing so as atoms are never +/// garbage collected. If we create too many atoms (for example, if we convert +/// user input into atoms) we may hit the max limit of atoms and cause the +/// virtual machine to crash. +/// +pub type Atom + +/// An error returned when no atom is found in the virtual machine's atom table +/// for a given string when calling the [`from_string`](#from_string) function. +pub type FromStringError { + AtomNotLoaded +} + +/// Finds an existing Atom for the given String. +/// +/// If no atom is found in the virtual machine's atom table for the String then +/// an error is returned. +/// +/// ## Examples +/// +/// > from_string("ok") +/// Ok(create_from_string("ok")) +/// +/// > from_string("some_new_atom") +/// Error(AtomNotLoaded) +/// +@external(erlang, "gleam_erlang_ffi", "atom_from_string") +pub fn from_string(a: String) -> Result(Atom, FromStringError) + +/// Creates an atom from a string, inserting a new value into the virtual +/// machine's atom table if an atom does not already exist for the given +/// string. +/// +/// We must be careful when using this function as there is a limit to the +/// number of atom that can fit in the virtual machine's atom table. Never +/// convert user input into atoms as filling the atom table will cause the +/// virtual machine to crash! +/// +@external(erlang, "erlang", "binary_to_atom") +pub fn create_from_string(a: String) -> Atom + +/// Returns a `String` corresponding to the text representation of the given +/// `Atom`. +/// +/// ## Examples +/// +/// > let ok_atom = create_from_string("ok") +/// > to_string(ok_atom) +/// "ok" +/// +@external(erlang, "erlang", "atom_to_binary") +pub fn to_string(a: Atom) -> String + +/// Checks to see whether a `Dynamic` value is an atom, and return the atom if +/// it is. +/// +/// ## Examples +/// +/// > import gleam/dynamic +/// > from_dynamic(dynamic.from(create_from_string("hello"))) +/// Ok(create_from_string("hello")) +/// +/// > from_dynamic(dynamic.from(123)) +/// Error([DecodeError(expected: "Atom", found: "Int", path: [])]) +/// +@external(erlang, "gleam_erlang_ffi", "atom_from_dynamic") +pub fn from_dynamic(from from: Dynamic) -> Result(Atom, DecodeErrors) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam new file mode 100644 index 0000000..e5b6d65 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam @@ -0,0 +1,25 @@ +//// A charlist is a list of integers where all the integers are valid code +//// points. +//// +//// In practice, you will not come across them often, except perhaps when +//// interfacing with Erlang, in particular when using older libraries that do +//// not accept binaries as arguments. + +/// A list of characters represented as ints. Commonly used by older Erlang +/// modules. +pub type Charlist + +/// Transform a charlist to a string +@external(erlang, "unicode", "characters_to_binary") +pub fn to_string(a: Charlist) -> String + +// Calls `unicode:characters_to_binary(Data, unicode, unicode)` +// Note: `unicode is an alias for utf8` +// See + +/// Transform a string to a charlist +@external(erlang, "unicode", "characters_to_list") +pub fn from_string(a: String) -> Charlist +// Calls `unicode:characters_to_list(Data, unicode)` +// Note: `unicode is an alias for utf8` +// See diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam new file mode 100644 index 0000000..48e11a7 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam @@ -0,0 +1,737 @@ +//// Working with files on the filesystem. +//// +//// The functions included in this module are for high-level concepts such as +//// reading and writing. + +import gleam/bit_array +import gleam/result + +/// Reason represents all of the reasons that Erlang surfaces of why a file +/// system operation could fail. Most of these reasons are POSIX errors, which +/// come from the operating system and start with `E`. Others have been added to +/// represent other issues that may arise. +pub type Reason { + /// Permission denied. + Eacces + /// Resource temporarily unavailable. + Eagain + /// Bad file number + Ebadf + /// Bad message. + Ebadmsg + /// File busy. + Ebusy + /// Resource deadlock avoided. + Edeadlk + /// On most architectures, same as `Edeadlk`. On some architectures, it + /// means "File locking deadlock error." + Edeadlock + /// Disk quota exceeded. + Edquot + /// File already exists. + Eexist + /// Bad address in system call argument. + Efault + /// File too large. + Efbig + /// Inappropriate file type or format. Usually caused by trying to set the + /// "sticky bit" on a regular file (not a directory). + Eftype + /// Interrupted system call. + Eintr + /// Invalid argument. + Einval + /// I/O error. + Eio + /// Illegal operation on a directory. + Eisdir + /// Too many levels of symbolic links. + Eloop + /// Too many open files. + Emfile + /// Too many links. + Emlink + /// Multihop attempted. + Emultihop + /// Filename too long + Enametoolong + /// File table overflow + Enfile + /// No buffer space available. + Enobufs + /// No such device. + Enodev + /// No locks available. + Enolck + /// Link has been severed. + Enolink + /// No such file or directory. + Enoent + /// Not enough memory. + Enomem + /// No space left on device. + Enospc + /// No STREAM resources. + Enosr + /// Not a STREAM. + Enostr + /// Function not implemented. + Enosys + /// Block device required. + Enotblk + /// Not a directory. + Enotdir + /// Operation not supported. + Enotsup + /// No such device or address. + Enxio + /// Operation not supported on socket. + Eopnotsupp + /// Value too large to be stored in data type. + Eoverflow + /// Not owner. + Eperm + /// Broken pipe. + Epipe + /// Result too large. + Erange + /// Read-only file system. + Erofs + /// Invalid seek. + Espipe + /// No such process. + Esrch + /// Stale remote file handle. + Estale + /// Text file busy. + Etxtbsy + /// Cross-domain link. + Exdev + /// File was requested to be read as UTF-8, but is not UTF-8 encoded. + NotUtf8 +} + +/// The type of file found by `file_info` or `link_info`. +/// +pub type FileType { + Device + Directory + Other + Regular + Symlink +} + +/// The read/write permissions a user can have for a file. +/// +pub type Access { + NoAccess + Read + ReadWrite + Write +} + +/// Meta information for a file. +/// +/// Timestamps are in seconds before or after the Unix time epoch, +/// `1970-01-01 00:00:00 UTC`. +/// +pub type FileInfo { + FileInfo( + /// File size in bytes. + /// + size: Int, + /// `Regular`, `Directory`, `Symlink`, `Device`, or `Other`. + /// + file_type: FileType, + /// `ReadWrite`, `Read`, `Write`, or `NoAccess`. + /// + access: Access, + /// Timestamp of most recent access. + /// + atime: Int, + /// Timestamp of most recent modification. + /// + mtime: Int, + /// Timestamp of most recent change (or file creation, depending on + /// operating system). + /// + ctime: Int, + /// File permissions encoded as a sum of bit values, including but not + /// limited to: + /// + /// Owner read, write, execute. + /// + /// `0o400`, `0o200`, `0o100` + /// + /// Group read, write, execute. + /// + /// `0o40`, `0o20`, `0o10` + /// + /// Other read, write, execute. + /// + /// `0o4`, `0o2`, `0o1` + /// + /// Set user ID, group ID on execution. + /// + /// `0x800`, `0x400` + /// + mode: Int, + /// Total links to a file (always `1` for file systems without links). + /// + links: Int, + /// The file system where a file is located (`0` for drive `A:` on Windows, + /// `1` for `B:`, etc.). + /// + major_device: Int, + /// Character device (or `0` on non-Unix systems). + /// + minor_device: Int, + /// The `inode` number for a file (always `0` on non-Unix file systems). + /// + inode: Int, + /// The owner of a file (always `0` on non-Unix file systems). + /// + user_id: Int, + /// The group id of a file (always `0` on non-Unix file systems). + /// + group_id: Int, + ) +} + +/// Results in `FileInfo` about the given `path` on success, otherwise a +/// `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link's target. +/// To get `FileInfo` about a symlink itself, use `link_info`. +/// +/// ## Examples +/// +/// ```gleam +/// > file_info("gleam.toml") +/// Ok(FileInfo( +/// size: 430, +/// file_type: Regular, +/// access: ReadWrite, +/// atime: 1680580321, +/// mtime: 1680580272, +/// ctime: 1680580272, +/// mode: 33188, +/// links: 1, +/// major_device: 64, +/// minor_device: 0, +/// inode: 469028, +/// user_id: 1000, +/// group_id: 1000, +/// )) +/// +/// > file_info("/root") +/// Ok(FileInfo( +/// size: 16, +/// file_type: Directory, +/// access: Read, +/// atime: 1677789967, +/// mtime: 1664561240, +/// ctime: 1664561240, +/// mode: 16877, +/// links: 11, +/// major_device: 54, +/// minor_device: 0, +/// inode: 34, +/// user_id: 0, +/// group_id: 0, +/// )) +/// +/// > file_info("./build/dev/erlang/rad/priv") +/// Ok(FileInfo( +/// size: 140, +/// file_type: Directory, +/// access: ReadWrite, +/// atime: 1680580321, +/// mtime: 1680580272, +/// ctime: 1680580272, +/// mode: 33188, +/// links: 1, +/// major_device: 64, +/// minor_device: 0, +/// inode: 469028, +/// user_id: 1000, +/// group_id: 1000, +/// )) +/// +/// > file_info("/does_not_exist") +/// Error(Enoent) +/// +/// > file_info("/root/.local/maybe_exists") +/// Error(Eacces) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn file_info(a: String) -> Result(FileInfo, Reason) { + do_file_info(a) +} + +@external(erlang, "gleam_erlang_ffi", "file_info") +fn do_file_info(a: String) -> Result(FileInfo, Reason) + +/// Results in `FileInfo` about the given `path` on success, otherwise a +/// `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link itself. +/// To get `FileInfo` about a symlink's target, use `file_info`. +/// +/// ## Examples +/// +/// ```gleam +/// > link_info("gleam.toml") +/// Ok(FileInfo( +/// size: 430, +/// file_type: Regular, +/// access: ReadWrite, +/// atime: 1680580321, +/// mtime: 1680580272, +/// ctime: 1680580272, +/// mode: 33188, +/// links: 1, +/// major_device: 64, +/// minor_device: 0, +/// inode: 469028, +/// user_id: 1000, +/// group_id: 1000, +/// )) +/// +/// > link_info("/root") +/// Ok(FileInfo( +/// size: 16, +/// file_type: Directory, +/// access: Read, +/// atime: 1677789967, +/// mtime: 1664561240, +/// ctime: 1664561240, +/// mode: 16877, +/// links: 11, +/// major_device: 54, +/// minor_device: 0, +/// inode: 34, +/// user_id: 0, +/// group_id: 0, +/// )) +/// +/// > link_info("./build/dev/erlang/rad/priv") +/// Ok(FileInfo( +/// size: 41, +/// file_type: Symlink, +/// access: ReadWrite, +/// atime: 1680581150, +/// mtime: 1680581150, +/// ctime: 1680581150, +/// mode: 41471, +/// links: 1, +/// major_device: 64, +/// minor_device: 0, +/// inode: 471587, +/// user_id: 1000, +/// group_id: 1000, +/// )) +/// +/// > link_info("/does_not_exist") +/// Error(Enoent) +/// +/// > link_info("/root/.local/maybe_exists") +/// Error(Eacces) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn link_info(a: String) -> Result(FileInfo, Reason) { + do_link_info(a) +} + +@external(erlang, "gleam_erlang_ffi", "link_info") +fn do_link_info(a: String) -> Result(FileInfo, Reason) + +/// Results in a `Bool` on success that indicates whether the given `path` has +/// a `Directory` `FileType`, otherwise a `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link's target. +/// +/// ## Examples +/// +/// ```gleam +/// > is_directory("/tmp") +/// Ok(True) +/// +/// > is_directory("resume.pdf") +/// Ok(False) +/// +/// > is_directory("/does_not_exist") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn is_directory(path: String) -> Result(Bool, Reason) { + use FileInfo(file_type: file_type, ..) <- result.map(over: do_file_info(path)) + file_type == Directory +} + +/// Results in a `Bool` on success that indicates whether the given `path` has +/// a `Regular` `FileType`, otherwise a `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link's target. +/// +/// ## Examples +/// +/// ```gleam +/// > is_regular("resume.pdf") +/// Ok(True) +/// +/// > is_regular("/tmp") +/// Ok(False) +/// +/// > is_regular("/does_not_exist.txt") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn is_regular(path: String) -> Result(Bool, Reason) { + use FileInfo(file_type: file_type, ..) <- result.map(over: do_file_info(path)) + file_type == Regular +} + +/// Results in a `Bool` on success that indicates whether the given `path` +/// exists, otherwise a `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link's target. +/// To find whether a symlink itself exists, use `link_exists`. +/// +/// ## Examples +/// +/// ```gleam +/// > file_exists("resume.pdf") +/// Ok(True) +/// +/// > file_exists("/tmp") +/// Ok(True) +/// +/// > file_exists("/does_not_exist") +/// Ok(False) +/// +/// > file_exists("/root/.local/maybe_exists") +/// Error(Eacces) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn file_exists(path: String) -> Result(Bool, Reason) { + let result = + path + |> do_file_info + |> result.replace(True) + case result { + Error(Enoent) -> Ok(False) + _ -> result + } +} + +/// Results in a `Bool` on success that indicates whether the given `path` +/// exists, otherwise a `Reason` for failure. +/// +/// When `path` refers to a symlink, the result pertains to the link itself. +/// To find whether a symlink's target exists, use `file_exists`. +/// +/// ## Examples +/// +/// ```gleam +/// > link_exists("resume.pdf") +/// Ok(True) +/// +/// > link_exists("/tmp") +/// Ok(True) +/// +/// > link_exists("/does_not_exist") +/// Ok(False) +/// +/// > link_exists("/root/.local/maybe_exists") +/// Error(Eacces) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn link_exists(path: String) -> Result(Bool, Reason) { + let result = + path + |> do_link_info + |> result.replace(True) + case result { + Error(Enoent) -> Ok(False) + _ -> result + } +} + +/// Tries to create a directory. Missing parent directories are not created. +/// +/// Returns a Result of nil if the directory is created or Reason if the +/// operation failed. +/// +/// ## Examples +/// +/// ```gleam +/// > make_directory("/tmp/foo") +/// Ok(Nil) +/// +/// > make_directory("relative_directory") +/// Ok(Nil) +/// +/// > make_directory("/tmp/missing_intermediate_directory/foo") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +@external(erlang, "gleam_erlang_ffi", "make_directory") +pub fn make_directory(a: String) -> Result(Nil, Reason) + +/// Lists all files in a directory, except files with +/// [raw filenames](https://www.erlang.org/doc/apps/stdlib/unicode_usage.html#notes-about-raw-filenames). +/// +/// Returns a Result containing the list of filenames in the directory, or Reason +/// if the operation failed. +/// +/// ## Examples +/// +/// ```gleam +/// > list_directory("/tmp") +/// Ok(["FB01293B-8597-4359-80D5-130140A0C0DE","AlTest2.out"]) +/// +/// > list_directory("resume.docx") +/// Error(Enotdir) +/// ``` +/// +@deprecated("Use the simplifile package instead") +@external(erlang, "gleam_erlang_ffi", "list_directory") +pub fn list_directory(a: String) -> Result(List(String), Reason) + +/// Deletes a directory. +/// +/// The directory must be empty before it can be deleted. Returns a nil Success +/// or Reason if the operation failed. +/// +/// ## Examples +/// +/// ```gleam +/// > delete_directory("foo") +/// Ok(Nil) +/// +/// > delete_directory("does_not_exist/") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +@external(erlang, "gleam_erlang_ffi", "delete_directory") +pub fn delete_directory(a: String) -> Result(Nil, Reason) + +/// Deletes a file or directory recursively. +/// +/// Returns a nil Success or Reason if the operation failed. +/// +/// ## Examples +/// +/// ```gleam +/// > recursive_delete("foo") +/// Ok(Nil) +/// +/// > recursive_delete("/bar") +/// Ok(Nil) +/// +/// > recursive_delete("does_not_exist/") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +@external(erlang, "gleam_erlang_ffi", "recursive_delete") +pub fn recursive_delete(a: String) -> Result(Nil, Reason) + +/// Read the contents of the given file as a String +/// +/// Assumes the file is UTF-8 encoded. Returns a Result containing the file's +/// contents as a String if the operation was successful, or Reason if the file +/// operation failed. If the file is not UTF-8 encoded, the `NotUTF8` variant +/// will be returned. +/// +/// ## Examples +/// +/// ```gleam +/// > read("example.txt") +/// Ok("Hello, World!") +/// +/// > read(from: "example.txt") +/// Ok("Hello, World!") +/// +/// > read("does_not_exist.txt") +/// Error(Enoent) +/// +/// > read("cat.gif") +/// Error(NotUTF8) +/// ``` +/// +@deprecated("Use the simplifile package instead?") +pub fn read(from path: String) -> Result(String, Reason) { + path + |> do_read_bits() + |> result.then(fn(content) { + case bit_array.to_string(content) { + Ok(string) -> Ok(string) + Error(Nil) -> Error(NotUtf8) + } + }) +} + +/// Read the contents of the given file as a BitString +/// +/// Returns a Result containing the file's contents as a BitString if the +/// operation was successful, or Reason if the operation failed. +/// +/// ## Examples +/// +/// ```gleam +/// > read_bits("example.txt") +/// Ok(<<"Hello, World!">>) +/// +/// > read_bits(from: "cat.gif") +/// Ok(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) +/// +/// > read_bits("does_not_exist.txt") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn read_bits(from path: String) -> Result(BitArray, Reason) { + do_read_bits(path) +} + +@external(erlang, "gleam_erlang_ffi", "read_file") +fn do_read_bits(a: path) -> Result(BitArray, Reason) + +/// Write the given String contents to a file of the given name. +/// +/// Returns a Result with Nil if the operation was successful or a Reason +/// otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > write("Hello, World!", "file.txt") +/// Ok(Nil) +/// +/// > write(to: "file.txt", contents: "Hello, World!") +/// Ok(Nil) +/// +/// > write("Hello, World!", "does_not_exist/file.txt") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn write(contents contents: String, to path: String) -> Result(Nil, Reason) { + contents + |> bit_array.from_string + |> do_write_bits(path) +} + +/// Write the given BitString contents to a file of the given name. +/// +/// Returns a Result with Nil if the operation was successful or a Reason +/// otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > write_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "cat.gif") +/// Ok(Nil) +/// +/// > write_bits(to: "cat.gif", contents: <<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) +/// Ok(Nil) +/// +/// > write_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "does_not_exist/cat.gif") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn write_bits( + contents contents: BitArray, + to path: String, +) -> Result(Nil, Reason) { + do_write_bits(contents, path) +} + +@external(erlang, "gleam_erlang_ffi", "write_file") +fn do_write_bits(a: BitArray, b: String) -> Result(Nil, Reason) + +/// Append the given String contents to a file of the given name. +/// +/// Returns a Result with Nil if the operation was successful or a Reason +/// otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > append("Hello, World!", "file.txt") +/// Ok(Nil) +/// +/// > append(to: "file.txt", contents: "Hello, World!") +/// Ok(Nil) +/// +/// > append("Hello, World!", "does_not_exist/file.txt") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +pub fn append(contents contents: String, to path: String) -> Result(Nil, Reason) { + contents + |> bit_array.from_string + |> do_append_bits(path) +} + +/// Append the given BitString contents to a file of the given name. +/// +/// Returns a Result with Nil if the operation was successful or a Reason +/// otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > append_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "cat.gif") +/// Ok(Nil) +/// +/// > append_bits(to: "cat.gif", contents: <<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) +/// Ok(Nil) +/// +/// > append_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "does_not_exist/cat.gif") +/// Error(Enoent) +/// ``` +/// +pub fn append_bits( + contents contents: BitArray, + to path: String, +) -> Result(Nil, Reason) { + do_append_bits(contents, path) +} + +@external(erlang, "gleam_erlang_ffi", "append_file") +fn do_append_bits( + contents contents: BitArray, + path path: String, +) -> Result(Nil, Reason) + +/// Delete the given file. +/// +/// Returns a Result with Nil if the operation was successful or a Reason +/// otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > delete("file.txt") +/// Ok(Nil) +/// +/// > delete("does_not_exist.txt") +/// Error(Enoent) +/// ``` +/// +@deprecated("Use the simplifile package instead") +@external(erlang, "gleam_erlang_ffi", "delete_file") +pub fn delete(a: String) -> Result(Nil, Reason) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam new file mode 100644 index 0000000..339415c --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam @@ -0,0 +1,62 @@ +import gleam/erlang/atom.{type Atom} + +pub type Node + +type DoNotLeak + +/// Return the current node. +/// +@external(erlang, "erlang", "node") +pub fn self() -> Node + +/// Return a list of all visible nodes in the cluster, not including the current +/// node. +/// +/// The current node can be included by calling `self()` and prepending the +/// result. +/// +/// ```gleam +/// let all_nodes = [node.self(), ..node.visible()] +/// ``` +/// +@external(erlang, "erlang", "nodes") +pub fn visible() -> List(Node) + +pub type ConnectError { + /// Was unable to connect to the node. + FailedToConnect + /// The local node is not alive, so it is not possible to connect to the other + /// node. + LocalNodeIsNotAlive +} + +// TODO: test unknown node +// TODO: test successfully connecting +/// Establish a connection to a node, so the nodes can send messages to each +/// other and any other connected nodes. +/// +/// Returns `Error(FailedToConnect)` if the node is not reachable. +/// +/// Returns `Error(LocalNodeIsNotAlive)` if the local node is not alive, meaning +/// it is not running in distributed mode. +/// +@external(erlang, "gleam_erlang_ffi", "connect_node") +pub fn connect(node: Atom) -> Result(Node, ConnectError) + +// TODO: test +/// Send a message to a named process on a given node. +/// +/// These messages are untyped, like regular Erlang messages. +/// +pub fn send(node: Node, name: Atom, message: message) -> Nil { + raw_send(#(name, node), message) + Nil +} + +@external(erlang, "erlang", "send") +fn raw_send(receiver: #(Atom, Node), message: message) -> DoNotLeak + +/// Convert a node to the atom of its name. +/// +@external(erlang, "gleam_erlang_ffi", "identity") +pub fn to_atom(node: Node) -> Atom diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam new file mode 100644 index 0000000..e135974 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam @@ -0,0 +1,95 @@ +//// Access to the shell's environment variables + +import gleam/map.{type Map} + +/// Returns the list of all available environment variables as a list of key, +/// tuples. +/// +/// ## Examples +/// +/// > get_all_env() +/// map.from_list([ +/// #("SHELL", "/bin/bash"), +/// #("PWD", "/home/j3rn"), +/// ... +/// ]) +/// +@external(erlang, "gleam_erlang_ffi", "get_all_env") +pub fn get_all_env() -> Map(String, String) + +/// Returns the value associated with the given environment variable name. +/// +/// ## Examples +/// +/// > get_env("SHELL") +/// "/bin/bash" +/// +/// > get_env(name: "PWD") +/// "/home/j3rn" +/// +@external(erlang, "gleam_erlang_ffi", "get_env") +pub fn get_env(name name: String) -> Result(String, Nil) + +/// Associates the given value with the given environment variable name. +/// +/// ## Examples +/// +/// > set_env("MYVAR", "MYVALUE") +/// Nil +/// > get_env("MYVAR") +/// "MYVALUE" +/// +/// > set_env(value: "MYVALUE", name: "MYVAR") +/// Nil +/// +@external(erlang, "gleam_erlang_ffi", "set_env") +pub fn set_env(name name: String, value value: String) -> Nil + +/// Removes the environment variable with the given name. +/// +/// Returns Nil regardless of whether the variable ever existed. +/// +/// ## Examples +/// +/// > get_env("MYVAR") +/// Ok("MYVALUE") +/// > unset_env("MYVAR") +/// Nil +/// > get_env("MYVAR") +/// Error(Nil) +/// +/// > unset_env(name: "MYVAR") +/// Nil +/// +@external(erlang, "gleam_erlang_ffi", "unset_env") +pub fn unset_env(name name: String) -> Nil + +/// Represents operating system kernels +pub type OsFamily { + // The family which includes modern versions of the Windows operating system. + WindowsNt + // The family of operating systems based on the open source Linux kernel. + Linux + // The family of Apple operating systems such as macOS and iOS. + Darwin + // The family of operating systems based on the FreeBSD kernel. + FreeBsd + // An operating system kernel other than Linux, Darwin, FreeBSD, or NT. + Other(String) +} + +/// Returns the kernel of the host operating system. +/// +/// Unknown kernels are reported as `Other(String)`; e.g. `Other("sunos")`. +/// +/// ## Examples +/// +/// > family() +/// Linux +/// > family() +/// Darwin +/// > family() +/// Other("sunos") +/// +@external(erlang, "gleam_erlang_ffi", "os_family") +pub fn family() -> OsFamily diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam new file mode 100644 index 0000000..f660306 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam @@ -0,0 +1,744 @@ +import gleam/string +import gleam/dynamic.{type Dynamic} +import gleam/erlang.{type Reference} +import gleam/erlang/atom.{type Atom} + +/// A `Pid` (or Process identifier) is a reference to an Erlang process. Each +/// process has a `Pid` and it is one of the lowest level building blocks of +/// inter-process communication in the Erlang and Gleam OTP frameworks. +/// +pub type Pid + +/// Get the `Pid` for the current process. +@external(erlang, "erlang", "self") +pub fn self() -> Pid + +/// Create a new Erlang process that runs concurrently to the creator. In other +/// languages this might be called a fibre, a green thread, or a coroutine. +/// +/// If `linked` is `True` then the created process is linked to the creator +/// process. When a process terminates an exit signal is sent to all other +/// processes that are linked to it, causing the process to either terminate or +/// have to handle the signal. +/// +/// More can be read about processes and links in the [Erlang documentation][1]. +/// +/// [1]: https://www.erlang.org/doc/reference_manual/processes.html +/// +pub fn start(running implementation: fn() -> anything, linked link: Bool) -> Pid { + case link { + True -> spawn_link(implementation) + False -> spawn(implementation) + } +} + +@external(erlang, "erlang", "spawn") +fn spawn(a: fn() -> anything) -> Pid + +@external(erlang, "erlang", "spawn_link") +fn spawn_link(a: fn() -> anything) -> Pid + +/// A `Subject` is a value that processes can use to send and receive messages +/// to and from each other in a well typed way. +/// +/// Each subject is "owned" by the process that created it. Any process can use +/// the `send` function to sent a message of the correct type to the process +/// that owns the subject, and the owner can use the `receive` function or the +/// `Selector` type to receive these messages. +/// +/// The `Subject` type is similar to the "channel" types found in other +/// languages and the "topic" concept found in some pub-sub systems. +/// +/// # Examples +/// +/// ```gleam +/// let subject = new_subject() +/// +/// // Send a message with the subject +/// send(subject, "Hello, Joe!") +/// +/// // Receive the message +/// receive(subject, within: 10) +/// ``` +/// +pub opaque type Subject(message) { + Subject(owner: Pid, tag: Reference) +} + +/// Create a new `Subject` owned by the current process. +/// +pub fn new_subject() -> Subject(message) { + Subject(owner: self(), tag: erlang.make_reference()) +} + +/// Get the owner process for a `Subject`. This is the process that created the +/// `Subject` and will receive messages sent with it. +/// +pub fn subject_owner(subject: Subject(message)) -> Pid { + subject.owner +} + +type DoNotLeak + +@external(erlang, "erlang", "send") +fn raw_send(a: Pid, b: message) -> DoNotLeak + +/// Send a message to a process using a `Subject`. The message must be of the +/// type that the `Subject` accepts. +/// +/// This function does not wait for the `Subject` owner process to call the +/// `receive` function, instead it returns once the message has been placed in +/// the process' mailbox. +/// +/// # Ordering +/// +/// If process P1 sends two messages to process P2 it is guaranteed that process +/// P1 will receive the messages in the order they were sent. +/// +/// If you wish to receive the messages in a different order you can send them +/// on two different subjects and the receiver function can call the `receive` +/// function for each subject in the desired order, or you can write some Erlang +/// code to perform a selective receive. +/// +/// # Examples +/// +/// ```gleam +/// let subject = new_subject() +/// send(subject, "Hello, Joe!") +/// ``` +/// +pub fn send(subject: Subject(message), message: message) -> Nil { + raw_send(subject.owner, #(subject.tag, message)) + Nil +} + +/// Receive a message that has been sent to current process using the `Subject`. +/// +/// If there is not an existing message for the `Subject` in the process' +/// mailbox or one does not arrive `within` the permitted timeout then the +/// `Error(Nil)` is returned. +/// +/// Only the process that is owner of the `Subject` can receive a message using +/// it. If a process that does not own the `Subject` attempts to receive with it +/// then it will not receive a message. +/// +/// To wait for messages from multiple `Subject`s at the same time see the +/// `Selector` type. +/// +pub fn receive( + from subject: Subject(message), + within milliseconds: Int, +) -> Result(message, Nil) { + new_selector() + |> selecting(subject, fn(x) { x }) + |> select(within: milliseconds) +} + +/// A type that enables a process to wait for messages from multiple `Subject`s +/// at the same time, returning whichever message arrives first. +/// +/// Used with the `new_selector`, `selecting`, and `select` functions. +/// +/// # Examples +/// +/// ```gleam +/// > let int_subject = new_subject() +/// > let float_subject = new_subject() +/// > send(int_subject, 1) +/// > +/// > let selector = +/// > new_selector() +/// > |> selecting(int_subject, int.to_string) +/// > |> selecting(float_subject, float.to_string) +/// > +/// > select(selector, 10) +/// Ok("1") +/// ``` +/// +pub type Selector(payload) + +/// Create a new `Selector` which can be used to receive messages on multiple +/// `Subject`s at once. +/// +@external(erlang, "gleam_erlang_ffi", "new_selector") +pub fn new_selector() -> Selector(payload) + +/// Receive a message that has been sent to current process using any of the +/// `Subject`s that have been added to the `Selector` with the `selecting` +/// function. +/// +/// If there is not an existing message for the `Selector` in the process' +/// mailbox or one does not arrive `within` the permitted timeout then the +/// `Error(Nil)` is returned. +/// +/// Only the process that is owner of the `Subject`s can receive a message using +/// them. If a process that does not own the a `Subject` attempts to receive +/// with it then it will not receive a message. +/// +/// To wait forever for the next message rather than for a limited amount of +/// time see the `select_forever` function. +/// +@external(erlang, "gleam_erlang_ffi", "select") +pub fn select( + from from: Selector(payload), + within within: Int, +) -> Result(payload, Nil) + +/// Similar to the `select` function but will wait forever for a message to +/// arrive rather than timing out after a specified amount of time. +/// +@external(erlang, "gleam_erlang_ffi", "select") +pub fn select_forever(from from: Selector(payload)) -> payload + +/// Add a transformation function to a selector. When a message is received +/// using this selector the transformation function is applied to the message. +/// +/// This function can be used to change the type of messages received and may +/// be useful when combined with the `merge_selector` function. +/// +@external(erlang, "gleam_erlang_ffi", "map_selector") +pub fn map_selector(a: Selector(a), b: fn(a) -> b) -> Selector(b) + +/// Merge one selector into another, producing a selector that contains the +/// message handlers of both. +/// +/// If a subject is handled by both selectors the handler function of the +/// second selector is used. +/// +@external(erlang, "gleam_erlang_ffi", "merge_selector") +pub fn merge_selector(a: Selector(a), b: Selector(a)) -> Selector(a) + +pub type ExitMessage { + ExitMessage(pid: Pid, reason: ExitReason) +} + +pub type ExitReason { + Normal + Killed + Abnormal(reason: String) +} + +/// Add a handler for trapped exit messages. In order for these messages to be +/// sent to the process when a linked process exits the process must call the +/// `trap_exit` beforehand. +/// +pub fn selecting_trapped_exits( + selector: Selector(a), + handler: fn(ExitMessage) -> a, +) -> Selector(a) { + let tag = atom.create_from_string("EXIT") + let handler = fn(message: #(Atom, Pid, Dynamic)) -> a { + let reason = message.2 + let normal = dynamic.from(Normal) + let killed = dynamic.from(Killed) + let reason = case dynamic.string(reason) { + _ if reason == normal -> Normal + _ if reason == killed -> Killed + Ok(reason) -> Abnormal(reason) + Error(_) -> Abnormal(string.inspect(reason)) + } + handler(ExitMessage(message.1, reason)) + } + insert_selector_handler(selector, #(tag, 3), handler) +} + +// TODO: implement in Gleam +/// Discard all messages in the current process' mailbox. +/// +/// Warning: This function may cause other processes to crash if they sent a +/// message to the current process and are waiting for a response, so use with +/// caution. +/// +@external(erlang, "gleam_erlang_ffi", "flush_messages") +pub fn flush_messages() -> Nil + +/// Add a new `Subject` to the `Selector` to that it's messages can be received. +/// +/// The `mapping` function provided with the `Subject` can be used to convert +/// the type of messages received using this `Subject`. This is useful for when +/// you wish to add multiple `Subject`s to a `Seletor` when they have differing +/// message types. If you do not wish to transform the incoming messages in any +/// way then the `identity` function can be given. +/// +pub fn selecting( + selector: Selector(payload), + for subject: Subject(message), + mapping transform: fn(message) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(Reference, message)) { transform(message.1) } + insert_selector_handler(selector, #(subject.tag, 2), handler) +} + +/// Add a handler to a selector for 2 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record2( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(tag, Dynamic)) { transform(message.1) } + insert_selector_handler(selector, #(tag, 2), handler) +} + +/// Add a handler to a selector for 3 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record3( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic, Dynamic) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(tag, Dynamic, Dynamic)) { + transform(message.1, message.2) + } + insert_selector_handler(selector, #(tag, 3), handler) +} + +/// Add a handler to a selector for 4 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record4( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic, Dynamic, Dynamic) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic)) { + transform(message.1, message.2, message.3) + } + insert_selector_handler(selector, #(tag, 4), handler) +} + +/// Add a handler to a selector for 5 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record5( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic)) { + transform(message.1, message.2, message.3, message.4) + } + insert_selector_handler(selector, #(tag, 5), handler) +} + +/// Add a handler to a selector for 6 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record6( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> payload, +) -> Selector(payload) { + let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic)) { + transform(message.1, message.2, message.3, message.4, message.5) + } + insert_selector_handler(selector, #(tag, 6), handler) +} + +/// Add a handler to a selector for 7 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record7( + selector: Selector(payload), + tag: tag, + mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> + payload, +) -> Selector(payload) { + let handler = fn( + message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), + ) { + transform(message.1, message.2, message.3, message.4, message.5, message.6) + } + insert_selector_handler(selector, #(tag, 7), handler) +} + +/// Add a handler to a selector for 8 element tuple messages with a given tag +/// element in the first position. +/// +/// Typically you want to use the `selecting` function with a `Subject` instead, +/// but this function may be useful if you need to receive messages sent from +/// other BEAM languages that do not use the `Subject` type. +/// +pub fn selecting_record8( + selector: Selector(payload), + tag: tag, + mapping transform: fn( + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + ) -> + payload, +) -> Selector(payload) { + let handler = fn( + message: #( + tag, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + Dynamic, + ), + ) { + transform( + message.1, + message.2, + message.3, + message.4, + message.5, + message.6, + message.7, + ) + } + insert_selector_handler(selector, #(tag, 8), handler) +} + +type AnythingSelectorTag { + Anything +} + +/// Add a catch-all handler to a selector that will be used when no other +/// handler in a selector is suitable for a given message. +/// +/// This may be useful for when you want to ensure that any message in the inbox +/// is handled, or when you need to handle messages from other BEAM languages +/// which do not use subjects or record format messages. +/// +pub fn selecting_anything( + selector: Selector(payload), + mapping handler: fn(Dynamic) -> payload, +) -> Selector(payload) { + insert_selector_handler(selector, Anything, handler) +} + +@external(erlang, "gleam_erlang_ffi", "insert_selector_handler") +fn insert_selector_handler( + a: Selector(payload), + for for: tag, + mapping mapping: fn(message) -> payload, +) -> Selector(payload) + +/// Suspends the process calling this function for the specified number of +/// milliseconds. +/// +@external(erlang, "gleam_erlang_ffi", "sleep") +pub fn sleep(a: Int) -> Nil + +/// Suspends the process forever! This may be useful for suspending the main +/// process in a Gleam program when it has no more work to do but we want other +/// processes to continue to work. +/// +@external(erlang, "gleam_erlang_ffi", "sleep_forever") +pub fn sleep_forever() -> Nil + +/// Check to see whether the process for a given `Pid` is alive. +/// +/// See the [Erlang documentation][1] for more information. +/// +/// [1]: http://erlang.org/doc/man/erlang.html#is_process_alive-1 +/// +@external(erlang, "erlang", "is_process_alive") +pub fn is_alive(a: Pid) -> Bool + +type ProcessMonitorFlag { + Process +} + +@external(erlang, "erlang", "monitor") +fn erlang_monitor_process(a: ProcessMonitorFlag, b: Pid) -> Reference + +pub opaque type ProcessMonitor { + ProcessMonitor(tag: Reference) +} + +/// A message received when a monitored process exits. +/// +pub type ProcessDown { + ProcessDown(pid: Pid, reason: Dynamic) +} + +/// Start monitoring a process so that when the monitored process exits a +/// message is sent to the monitoring process. +/// +/// The message is only sent once, when the target process exits. If the +/// process was not alive when this function is called the message will never +/// be received. +/// +/// The down message can be received with a `Selector` and the +/// `selecting_process_down` function. +/// +/// The process can be demonitored with the `demonitor_process` function. +/// +pub fn monitor_process(pid: Pid) -> ProcessMonitor { + Process + |> erlang_monitor_process(pid) + |> ProcessMonitor +} + +/// Add a `ProcessMonitor` to a `Selector` so that the `ProcessDown` message can +/// be received using the `Selector` and the `select` function. +/// +pub fn selecting_process_down( + selector: Selector(payload), + monitor: ProcessMonitor, + mapping: fn(ProcessDown) -> payload, +) -> Selector(payload) { + insert_selector_handler(selector, monitor.tag, mapping) +} + +/// Remove the monitor for a process so that when the monitor process exits a +/// `ProcessDown` message is not sent to the monitoring process. +/// +/// If the message has already been sent it is removed from the monitoring +/// process' mailbox. +/// +@external(erlang, "gleam_erlang_ffi", "demonitor") +pub fn demonitor_process(monitor monitor: ProcessMonitor) -> Nil + +/// An error returned when making a call to a process. +/// +pub type CallError(msg) { + /// The process being called exited before it sent a response. + /// + CalleeDown(reason: Dynamic) + + /// The process being called did not response within the permitted amount of + /// time. + /// + CallTimeout +} + +// This function is based off of Erlang's gen:do_call/4. +/// Send a message to a process and wait for a reply. +/// +/// If the receiving process exits or does not reply within the allowed amount +/// of time then an error is returned. +/// +pub fn try_call( + subject: Subject(request), + make_request: fn(Subject(response)) -> request, + within timeout: Int, +) -> Result(response, CallError(response)) { + let reply_subject = new_subject() + + // Monitor the callee process so we can tell if it goes down (meaning we + // won't get a reply) + let monitor = monitor_process(subject_owner(subject)) + + // Send the request to the process over the channel + send(subject, make_request(reply_subject)) + + // Await a reply or handle failure modes (timeout, process down, etc) + let result = + new_selector() + |> selecting(reply_subject, Ok) + |> selecting_process_down( + monitor, + fn(down: ProcessDown) { Error(CalleeDown(reason: down.reason)) }, + ) + |> select(timeout) + + // Demonitor the process and close the channels as we're done + demonitor_process(monitor) + + // Prepare an appropriate error (if present) for the caller + case result { + Error(Nil) -> Error(CallTimeout) + Ok(res) -> res + } +} + +/// Send a message to a process and wait for a reply. +/// +/// If the receiving process exits or does not reply within the allowed amount +/// of time the calling process crashes. If you wish an error to be returned +/// instead see the `try_call` function. +/// +pub fn call( + subject: Subject(request), + make_request: fn(Subject(response)) -> request, + within timeout: Int, +) -> response { + let assert Ok(resp) = try_call(subject, make_request, timeout) + resp +} + +/// Creates a link between the calling process and another process. +/// +/// When a process crashes any linked processes will also crash. This is useful +/// to ensure that groups of processes that depend on each other all either +/// succeed or fail together. +/// +/// Returns `True` if the link was created successfully, returns `False` if the +/// process was not alive and as such could not be linked. +/// +@external(erlang, "gleam_erlang_ffi", "link") +pub fn link(pid pid: Pid) -> Bool + +@external(erlang, "erlang", "unlink") +fn erlang_unlink(pid pid: Pid) -> Bool + +/// Removes any existing link between the caller process and the target process. +/// +pub fn unlink(pid: Pid) -> Nil { + erlang_unlink(pid) + Nil +} + +pub type Timer + +@external(erlang, "erlang", "send_after") +fn erlang_send_after(a: Int, b: Pid, c: msg) -> Timer + +/// Send a message over a channel after a specified number of milliseconds. +/// +pub fn send_after(subject: Subject(msg), delay: Int, message: msg) -> Timer { + erlang_send_after(delay, subject.owner, #(subject.tag, message)) +} + +@external(erlang, "erlang", "cancel_timer") +fn erlang_cancel_timer(a: Timer) -> Dynamic + +/// Values returned when a timer is cancelled. +/// +pub type Cancelled { + /// The timer could not be found. It likely has already triggered. + /// + TimerNotFound + + /// The timer was found and cancelled before it triggered. + /// + /// The amount of remaining time before the timer was due to be triggered is + /// returned in milliseconds. + /// + Cancelled(time_remaining: Int) +} + +/// Cancel a given timer, causing it not to trigger if it has not done already. +/// +pub fn cancel_timer(timer: Timer) -> Cancelled { + case dynamic.int(erlang_cancel_timer(timer)) { + Ok(i) -> Cancelled(i) + Error(_) -> TimerNotFound + } +} + +type KillFlag { + Kill +} + +@external(erlang, "erlang", "exit") +fn erlang_kill(to to: Pid, because because: KillFlag) -> Bool + +// Go, my pretties. Kill! Kill! +// - Bart Simpson +// +/// Send an untrappable `kill` exit signal to the target process. +/// +/// See the documentation for the Erlang [`erlang:exit`][1] function for more +/// information. +/// +/// [1]: https://erlang.org/doc/man/erlang.html#exit-1 +/// +pub fn kill(pid: Pid) -> Nil { + erlang_kill(pid, Kill) + Nil +} + +@external(erlang, "erlang", "exit") +fn erlang_send_exit(to to: Pid, because because: whatever) -> Bool + +// TODO: test +/// Sends an exit signal to a process, indicating that the process is to shut +/// down. +/// +/// See the [Erlang documentation][erl] for more information. +/// [erl]: http://erlang.org/doc/man/erlang.html#exit-2 +/// +pub fn send_exit(to pid: Pid) -> Nil { + erlang_send_exit(pid, Normal) + Nil +} + +/// Sends an exit signal to a process, indicating that the process is to shut +/// down due to an abnormal reason such as a failure. +/// +/// See the [Erlang documentation][erl] for more information. +/// [erl]: http://erlang.org/doc/man/erlang.html#exit-2 +/// +pub fn send_abnormal_exit(pid: Pid, reason: String) -> Nil { + erlang_send_exit(pid, Abnormal(reason)) + Nil +} + +/// Set whether the current process is to trap exit signals or not. +/// +/// When not trapping exits if a linked process crashes the exit signal +/// propagates to the process which will also crash. +/// This is the normal behaviour before this function is called. +/// +/// When trapping exits (after this function is called) if a linked process +/// crashes an exit message is sent to the process instead. These messages can +/// be handled with the `selecting_trapped_exits` function. +/// +@external(erlang, "gleam_erlang_ffi", "trap_exits") +pub fn trap_exits(a: Bool) -> Nil + +/// Register a process under a given name, allowing it to be looked up using +/// the `named` function. +/// +/// This function will return an error under the following conditions: +/// - The process for the pid no longer exists. +/// - The name has already been registered. +/// - The process already has a name. +/// - The name is the atom `undefined`, which is reserved by Erlang. +/// +@external(erlang, "gleam_erlang_ffi", "register_process") +pub fn register(pid: Pid, name: Atom) -> Result(Nil, Nil) + +/// Un-register a process name, after which the process can no longer be looked +/// up by that name, and both the name and the process can be re-used in other +/// registrations. +/// +/// It is possible to un-register process that are not from your application, +/// including those from Erlang/OTP itself. This is not recommended and will +/// likely result in undesirable behaviour and crashes. +/// +@external(erlang, "gleam_erlang_ffi", "unregister_process") +pub fn unregister(name: Atom) -> Result(Nil, Nil) + +/// Look up a process by name, returning the pid if it exists. +/// +@external(erlang, "gleam_erlang_ffi", "process_named") +pub fn named(name: Atom) -> Result(Pid, Nil) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl new file mode 100644 index 0000000..14a5538 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl @@ -0,0 +1,90 @@ +-module(gleam@erlang). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([format/1, term_to_binary/1, get_line/1, system_time/1, erlang_timestamp/0, rescue/1, binary_to_term/1, unsafe_binary_to_term/1, start_arguments/0, ensure_all_started/1, make_reference/0, priv_directory/1]). +-export_type([safe/0, get_line_error/0, time_unit/0, crash/0, ensure_all_started_error/0, reference_/0]). + +-type safe() :: safe. + +-type get_line_error() :: eof | no_data. + +-type time_unit() :: second | millisecond | microsecond | nanosecond. + +-type crash() :: {exited, gleam@dynamic:dynamic_()} | + {thrown, gleam@dynamic:dynamic_()} | + {errored, gleam@dynamic:dynamic_()}. + +-type ensure_all_started_error() :: {unknown_application, + gleam@erlang@atom:atom_()} | + {application_failed_to_start, + gleam@erlang@atom:atom_(), + gleam@dynamic:dynamic_()}. + +-type reference_() :: any(). + +-spec format(any()) -> binary(). +format(Term) -> + unicode:characters_to_binary(io_lib:format(<<"~p"/utf8>>, [Term])). + +-spec term_to_binary(any()) -> bitstring(). +term_to_binary(A) -> + erlang:term_to_binary(A). + +-spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. +get_line(Prompt) -> + gleam_erlang_ffi:get_line(Prompt). + +-spec system_time(time_unit()) -> integer(). +system_time(A) -> + os:system_time(A). + +-spec erlang_timestamp() -> {integer(), integer(), integer()}. +erlang_timestamp() -> + os:timestamp(). + +-spec rescue(fun(() -> FHH)) -> {ok, FHH} | {error, crash()}. +rescue(A) -> + gleam_erlang_ffi:rescue(A). + +-spec binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | + {error, nil}. +binary_to_term(Binary) -> + case gleam_erlang_ffi:rescue( + fun() -> erlang:binary_to_term(Binary, [safe]) end + ) of + {ok, Term} -> + {ok, Term}; + + {error, _} -> + {error, nil} + end. + +-spec unsafe_binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | + {error, nil}. +unsafe_binary_to_term(Binary) -> + case gleam_erlang_ffi:rescue(fun() -> erlang:binary_to_term(Binary, []) end) of + {ok, Term} -> + {ok, Term}; + + {error, _} -> + {error, nil} + end. + +-spec start_arguments() -> list(binary()). +start_arguments() -> + _pipe = init:get_plain_arguments(), + gleam@list:map(_pipe, fun unicode:characters_to_binary/1). + +-spec ensure_all_started(gleam@erlang@atom:atom_()) -> {ok, + list(gleam@erlang@atom:atom_())} | + {error, ensure_all_started_error()}. +ensure_all_started(Application) -> + gleam_erlang_ffi:ensure_all_started(Application). + +-spec make_reference() -> reference_(). +make_reference() -> + erlang:make_ref(). + +-spec priv_directory(binary()) -> {ok, binary()} | {error, nil}. +priv_directory(Name) -> + gleam_erlang_ffi:priv_directory(Name). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl new file mode 100644 index 0000000..e9ad530 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl @@ -0,0 +1,26 @@ +-module(gleam@erlang@atom). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, create_from_string/1, to_string/1, from_dynamic/1]). +-export_type([atom_/0, from_string_error/0]). + +-type atom_() :: any(). + +-type from_string_error() :: atom_not_loaded. + +-spec from_string(binary()) -> {ok, atom_()} | {error, from_string_error()}. +from_string(A) -> + gleam_erlang_ffi:atom_from_string(A). + +-spec create_from_string(binary()) -> atom_(). +create_from_string(A) -> + erlang:binary_to_atom(A). + +-spec to_string(atom_()) -> binary(). +to_string(A) -> + erlang:atom_to_binary(A). + +-spec from_dynamic(gleam@dynamic:dynamic_()) -> {ok, atom_()} | + {error, list(gleam@dynamic:decode_error())}. +from_dynamic(From) -> + gleam_erlang_ffi:atom_from_dynamic(From). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl new file mode 100644 index 0000000..9f9c0fa --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl @@ -0,0 +1,15 @@ +-module(gleam@erlang@charlist). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_string/1, from_string/1]). +-export_type([charlist/0]). + +-type charlist() :: any(). + +-spec to_string(charlist()) -> binary(). +to_string(A) -> + unicode:characters_to_binary(A). + +-spec from_string(binary()) -> charlist(). +from_string(A) -> + unicode:characters_to_list(A). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl new file mode 100644 index 0000000..1fe6628 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl @@ -0,0 +1,190 @@ +-module(gleam@erlang@file). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([file_info/1, link_info/1, is_directory/1, is_regular/1, file_exists/1, link_exists/1, make_directory/1, list_directory/1, delete_directory/1, recursive_delete/1, read/1, read_bits/1, write/2, write_bits/2, append/2, append_bits/2, delete/1]). +-export_type([reason/0, file_type/0, access/0, file_info/0]). + +-type reason() :: eacces | + eagain | + ebadf | + ebadmsg | + ebusy | + edeadlk | + edeadlock | + edquot | + eexist | + efault | + efbig | + eftype | + eintr | + einval | + eio | + eisdir | + eloop | + emfile | + emlink | + emultihop | + enametoolong | + enfile | + enobufs | + enodev | + enolck | + enolink | + enoent | + enomem | + enospc | + enosr | + enostr | + enosys | + enotblk | + enotdir | + enotsup | + enxio | + eopnotsupp | + eoverflow | + eperm | + epipe | + erange | + erofs | + espipe | + esrch | + estale | + etxtbsy | + exdev | + not_utf8. + +-type file_type() :: device | directory | other | regular | symlink. + +-type access() :: no_access | read | read_write | write. + +-type file_info() :: {file_info, + integer(), + file_type(), + access(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer(), + integer()}. + +-spec file_info(binary()) -> {ok, file_info()} | {error, reason()}. +file_info(A) -> + gleam_erlang_ffi:file_info(A). + +-spec link_info(binary()) -> {ok, file_info()} | {error, reason()}. +link_info(A) -> + gleam_erlang_ffi:link_info(A). + +-spec is_directory(binary()) -> {ok, boolean()} | {error, reason()}. +is_directory(Path) -> + gleam@result:map( + gleam_erlang_ffi:file_info(Path), + fun(_use0) -> + {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, + File_type =:= directory + end + ). + +-spec is_regular(binary()) -> {ok, boolean()} | {error, reason()}. +is_regular(Path) -> + gleam@result:map( + gleam_erlang_ffi:file_info(Path), + fun(_use0) -> + {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, + File_type =:= regular + end + ). + +-spec file_exists(binary()) -> {ok, boolean()} | {error, reason()}. +file_exists(Path) -> + Result = begin + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:file_info(_pipe), + gleam@result:replace(_pipe@1, true) + end, + case Result of + {error, enoent} -> + {ok, false}; + + _ -> + Result + end. + +-spec link_exists(binary()) -> {ok, boolean()} | {error, reason()}. +link_exists(Path) -> + Result = begin + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:link_info(_pipe), + gleam@result:replace(_pipe@1, true) + end, + case Result of + {error, enoent} -> + {ok, false}; + + _ -> + Result + end. + +-spec make_directory(binary()) -> {ok, nil} | {error, reason()}. +make_directory(A) -> + gleam_erlang_ffi:make_directory(A). + +-spec list_directory(binary()) -> {ok, list(binary())} | {error, reason()}. +list_directory(A) -> + gleam_erlang_ffi:list_directory(A). + +-spec delete_directory(binary()) -> {ok, nil} | {error, reason()}. +delete_directory(A) -> + gleam_erlang_ffi:delete_directory(A). + +-spec recursive_delete(binary()) -> {ok, nil} | {error, reason()}. +recursive_delete(A) -> + gleam_erlang_ffi:recursive_delete(A). + +-spec read(binary()) -> {ok, binary()} | {error, reason()}. +read(Path) -> + _pipe = Path, + _pipe@1 = gleam_erlang_ffi:read_file(_pipe), + gleam@result:then( + _pipe@1, + fun(Content) -> case gleam@bit_array:to_string(Content) of + {ok, String} -> + {ok, String}; + + {error, nil} -> + {error, not_utf8} + end end + ). + +-spec read_bits(binary()) -> {ok, bitstring()} | {error, reason()}. +read_bits(Path) -> + gleam_erlang_ffi:read_file(Path). + +-spec write(binary(), binary()) -> {ok, nil} | {error, reason()}. +write(Contents, Path) -> + _pipe = Contents, + _pipe@1 = gleam_stdlib:identity(_pipe), + gleam_erlang_ffi:write_file(_pipe@1, Path). + +-spec write_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. +write_bits(Contents, Path) -> + gleam_erlang_ffi:write_file(Contents, Path). + +-spec append(binary(), binary()) -> {ok, nil} | {error, reason()}. +append(Contents, Path) -> + _pipe = Contents, + _pipe@1 = gleam_stdlib:identity(_pipe), + gleam_erlang_ffi:append_file(_pipe@1, Path). + +-spec append_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. +append_bits(Contents, Path) -> + gleam_erlang_ffi:append_file(Contents, Path). + +-spec delete(binary()) -> {ok, nil} | {error, reason()}. +delete(A) -> + gleam_erlang_ffi:delete_file(A). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl new file mode 100644 index 0000000..f57d029 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl @@ -0,0 +1,33 @@ +-module(gleam@erlang@node). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([self/0, visible/0, connect/1, send/3, to_atom/1]). +-export_type([node_/0, do_not_leak/0, connect_error/0]). + +-type node_() :: any(). + +-type do_not_leak() :: any(). + +-type connect_error() :: failed_to_connect | local_node_is_not_alive. + +-spec self() -> node_(). +self() -> + erlang:node(). + +-spec visible() -> list(node_()). +visible() -> + erlang:nodes(). + +-spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} | + {error, connect_error()}. +connect(Node) -> + gleam_erlang_ffi:connect_node(Node). + +-spec send(node_(), gleam@erlang@atom:atom_(), any()) -> nil. +send(Node, Name, Message) -> + erlang:send({Name, Node}, Message), + nil. + +-spec to_atom(node_()) -> gleam@erlang@atom:atom_(). +to_atom(Node) -> + gleam_erlang_ffi:identity(Node). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl new file mode 100644 index 0000000..6604255 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl @@ -0,0 +1,27 @@ +-module(gleam@erlang@os). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get_all_env/0, get_env/1, set_env/2, unset_env/1, family/0]). +-export_type([os_family/0]). + +-type os_family() :: windows_nt | linux | darwin | free_bsd | {other, binary()}. + +-spec get_all_env() -> gleam@map:map_(binary(), binary()). +get_all_env() -> + gleam_erlang_ffi:get_all_env(). + +-spec get_env(binary()) -> {ok, binary()} | {error, nil}. +get_env(Name) -> + gleam_erlang_ffi:get_env(Name). + +-spec set_env(binary(), binary()) -> nil. +set_env(Name, Value) -> + gleam_erlang_ffi:set_env(Name, Value). + +-spec unset_env(binary()) -> nil. +unset_env(Name) -> + gleam_erlang_ffi:unset_env(Name). + +-spec family() -> os_family(). +family() -> + gleam_erlang_ffi:os_family(). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl new file mode 100644 index 0000000..fc8e0ff --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl @@ -0,0 +1,374 @@ +-module(gleam@erlang@process). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([self/0, start/2, new_subject/0, subject_owner/1, send/2, new_selector/0, select/2, select_forever/1, map_selector/2, merge_selector/2, flush_messages/0, selecting_trapped_exits/2, selecting/3, 'receive'/2, selecting_record2/3, selecting_record3/3, selecting_record4/3, selecting_record5/3, selecting_record6/3, selecting_record7/3, selecting_record8/3, selecting_anything/2, sleep/1, sleep_forever/0, is_alive/1, monitor_process/1, selecting_process_down/3, demonitor_process/1, try_call/3, call/3, link/1, unlink/1, send_after/3, cancel_timer/1, kill/1, send_exit/1, send_abnormal_exit/2, trap_exits/1, register/2, unregister/1, named/1]). +-export_type([pid_/0, subject/1, do_not_leak/0, selector/1, exit_message/0, exit_reason/0, anything_selector_tag/0, process_monitor_flag/0, process_monitor/0, process_down/0, call_error/1, timer/0, cancelled/0, kill_flag/0]). + +-type pid_() :: any(). + +-opaque subject(FJD) :: {subject, pid_(), gleam@erlang:reference_()} | + {gleam_phantom, FJD}. + +-type do_not_leak() :: any(). + +-type selector(FJE) :: any() | {gleam_phantom, FJE}. + +-type exit_message() :: {exit_message, pid_(), exit_reason()}. + +-type exit_reason() :: normal | killed | {abnormal, binary()}. + +-type anything_selector_tag() :: anything. + +-type process_monitor_flag() :: process. + +-opaque process_monitor() :: {process_monitor, gleam@erlang:reference_()}. + +-type process_down() :: {process_down, pid_(), gleam@dynamic:dynamic_()}. + +-type call_error(FJF) :: {callee_down, gleam@dynamic:dynamic_()} | + call_timeout | + {gleam_phantom, FJF}. + +-type timer() :: any(). + +-type cancelled() :: timer_not_found | {cancelled, integer()}. + +-type kill_flag() :: kill. + +-spec self() -> pid_(). +self() -> + erlang:self(). + +-spec start(fun(() -> any()), boolean()) -> pid_(). +start(Implementation, Link) -> + case Link of + true -> + erlang:spawn_link(Implementation); + + false -> + erlang:spawn(Implementation) + end. + +-spec new_subject() -> subject(any()). +new_subject() -> + {subject, erlang:self(), erlang:make_ref()}. + +-spec subject_owner(subject(any())) -> pid_(). +subject_owner(Subject) -> + erlang:element(2, Subject). + +-spec send(subject(FJO), FJO) -> nil. +send(Subject, Message) -> + erlang:send( + erlang:element(2, Subject), + {erlang:element(3, Subject), Message} + ), + nil. + +-spec new_selector() -> selector(any()). +new_selector() -> + gleam_erlang_ffi:new_selector(). + +-spec select(selector(FJW), integer()) -> {ok, FJW} | {error, nil}. +select(From, Within) -> + gleam_erlang_ffi:select(From, Within). + +-spec select_forever(selector(FKA)) -> FKA. +select_forever(From) -> + gleam_erlang_ffi:select(From). + +-spec map_selector(selector(FKC), fun((FKC) -> FKE)) -> selector(FKE). +map_selector(A, B) -> + gleam_erlang_ffi:map_selector(A, B). + +-spec merge_selector(selector(FKG), selector(FKG)) -> selector(FKG). +merge_selector(A, B) -> + gleam_erlang_ffi:merge_selector(A, B). + +-spec flush_messages() -> nil. +flush_messages() -> + gleam_erlang_ffi:flush_messages(). + +-spec selecting_trapped_exits(selector(FKK), fun((exit_message()) -> FKK)) -> selector(FKK). +selecting_trapped_exits(Selector, Handler) -> + Tag = erlang:binary_to_atom(<<"EXIT"/utf8>>), + Handler@1 = fun(Message) -> + Reason = erlang:element(3, Message), + Normal = gleam@dynamic:from(normal), + Killed = gleam@dynamic:from(killed), + Reason@2 = case gleam@dynamic:string(Reason) of + _ when Reason =:= Normal -> + normal; + + _ when Reason =:= Killed -> + killed; + + {ok, Reason@1} -> + {abnormal, Reason@1}; + + {error, _} -> + {abnormal, gleam@string:inspect(Reason)} + end, + Handler({exit_message, erlang:element(2, Message), Reason@2}) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler@1). + +-spec selecting(selector(FKN), subject(FKP), fun((FKP) -> FKN)) -> selector(FKN). +selecting(Selector, Subject, Transform) -> + Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, + gleam_erlang_ffi:insert_selector_handler( + Selector, + {erlang:element(3, Subject), 2}, + Handler + ). + +-spec 'receive'(subject(FJQ), integer()) -> {ok, FJQ} | {error, nil}. +'receive'(Subject, Milliseconds) -> + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = selecting(_pipe, Subject, fun(X) -> X end), + gleam_erlang_ffi:select(_pipe@1, Milliseconds). + +-spec selecting_record2( + selector(FKS), + any(), + fun((gleam@dynamic:dynamic_()) -> FKS) +) -> selector(FKS). +selecting_record2(Selector, Tag, Transform) -> + Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 2}, Handler). + +-spec selecting_record3( + selector(FKW), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FKW) +) -> selector(FKW). +selecting_record3(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform(erlang:element(2, Message), erlang:element(3, Message)) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler). + +-spec selecting_record4( + selector(FLA), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLA) +) -> selector(FLA). +selecting_record4(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 4}, Handler). + +-spec selecting_record5( + selector(FLE), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLE) +) -> selector(FLE). +selecting_record5(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 5}, Handler). + +-spec selecting_record6( + selector(FLI), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLI) +) -> selector(FLI). +selecting_record6(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 6}, Handler). + +-spec selecting_record7( + selector(FLM), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLM) +) -> selector(FLM). +selecting_record7(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message), + erlang:element(7, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 7}, Handler). + +-spec selecting_record8( + selector(FLQ), + any(), + fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLQ) +) -> selector(FLQ). +selecting_record8(Selector, Tag, Transform) -> + Handler = fun(Message) -> + Transform( + erlang:element(2, Message), + erlang:element(3, Message), + erlang:element(4, Message), + erlang:element(5, Message), + erlang:element(6, Message), + erlang:element(7, Message), + erlang:element(8, Message) + ) + end, + gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 8}, Handler). + +-spec selecting_anything(selector(FLU), fun((gleam@dynamic:dynamic_()) -> FLU)) -> selector(FLU). +selecting_anything(Selector, Handler) -> + gleam_erlang_ffi:insert_selector_handler(Selector, anything, Handler). + +-spec sleep(integer()) -> nil. +sleep(A) -> + gleam_erlang_ffi:sleep(A). + +-spec sleep_forever() -> nil. +sleep_forever() -> + gleam_erlang_ffi:sleep_forever(). + +-spec is_alive(pid_()) -> boolean(). +is_alive(A) -> + erlang:is_process_alive(A). + +-spec monitor_process(pid_()) -> process_monitor(). +monitor_process(Pid) -> + _pipe = process, + _pipe@1 = erlang:monitor(_pipe, Pid), + {process_monitor, _pipe@1}. + +-spec selecting_process_down( + selector(FMC), + process_monitor(), + fun((process_down()) -> FMC) +) -> selector(FMC). +selecting_process_down(Selector, Monitor, Mapping) -> + gleam_erlang_ffi:insert_selector_handler( + Selector, + erlang:element(2, Monitor), + Mapping + ). + +-spec demonitor_process(process_monitor()) -> nil. +demonitor_process(Monitor) -> + gleam_erlang_ffi:demonitor(Monitor). + +-spec try_call(subject(FMF), fun((subject(FMH)) -> FMF), integer()) -> {ok, FMH} | + {error, call_error(FMH)}. +try_call(Subject, Make_request, Timeout) -> + Reply_subject = new_subject(), + Monitor = monitor_process(subject_owner(Subject)), + send(Subject, Make_request(Reply_subject)), + Result = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = selecting( + _pipe, + Reply_subject, + fun(Field@0) -> {ok, Field@0} end + ), + _pipe@2 = selecting_process_down( + _pipe@1, + Monitor, + fun(Down) -> {error, {callee_down, erlang:element(3, Down)}} end + ), + gleam_erlang_ffi:select(_pipe@2, Timeout) + end, + gleam_erlang_ffi:demonitor(Monitor), + case Result of + {error, nil} -> + {error, call_timeout}; + + {ok, Res} -> + Res + end. + +-spec call(subject(FMM), fun((subject(FMO)) -> FMM), integer()) -> FMO. +call(Subject, Make_request, Timeout) -> + _assert_subject = try_call(Subject, Make_request, Timeout), + {ok, Resp} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/erlang/process"/utf8>>, + function => <<"call"/utf8>>, + line => 593}) + end, + Resp. + +-spec link(pid_()) -> boolean(). +link(Pid) -> + gleam_erlang_ffi:link(Pid). + +-spec unlink(pid_()) -> nil. +unlink(Pid) -> + erlang:unlink(Pid), + nil. + +-spec send_after(subject(FMR), integer(), FMR) -> timer(). +send_after(Subject, Delay, Message) -> + erlang:send_after( + Delay, + erlang:element(2, Subject), + {erlang:element(3, Subject), Message} + ). + +-spec cancel_timer(timer()) -> cancelled(). +cancel_timer(Timer) -> + case gleam@dynamic:int(erlang:cancel_timer(Timer)) of + {ok, I} -> + {cancelled, I}; + + {error, _} -> + timer_not_found + end. + +-spec kill(pid_()) -> nil. +kill(Pid) -> + erlang:exit(Pid, kill), + nil. + +-spec send_exit(pid_()) -> nil. +send_exit(Pid) -> + erlang:exit(Pid, normal), + nil. + +-spec send_abnormal_exit(pid_(), binary()) -> nil. +send_abnormal_exit(Pid, Reason) -> + erlang:exit(Pid, {abnormal, Reason}), + nil. + +-spec trap_exits(boolean()) -> nil. +trap_exits(A) -> + gleam_erlang_ffi:trap_exits(A). + +-spec register(pid_(), gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. +register(Pid, Name) -> + gleam_erlang_ffi:register_process(Pid, Name). + +-spec unregister(gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. +unregister(Name) -> + gleam_erlang_ffi:unregister_process(Name). + +-spec named(gleam@erlang@atom:atom_()) -> {ok, pid_()} | {error, nil}. +named(Name) -> + gleam_erlang_ffi:process_named(Name). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src new file mode 100644 index 0000000..bb1b8e6 --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src @@ -0,0 +1,14 @@ +{application, gleam_erlang, [ + {vsn, "0.23.1"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "A Gleam library for working with Erlang"}, + {modules, [gleam@erlang, + gleam@erlang@atom, + gleam@erlang@charlist, + gleam@erlang@file, + gleam@erlang@node, + gleam@erlang@os, + gleam@erlang@process]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl new file mode 100644 index 0000000..872126f --- /dev/null +++ b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl @@ -0,0 +1,263 @@ +-module(gleam_erlang_ffi). +-export([ + atom_from_dynamic/1, rescue/1, atom_from_string/1, get_line/1, + ensure_all_started/1, sleep/1, os_family/0, sleep_forever/0, read_file/1, + append_file/2, write_file/2, delete_file/1, get_all_env/0, get_env/1, + set_env/2, unset_env/1, delete_directory/1, recursive_delete/1, + list_directory/1, demonitor/1, make_directory/1, new_selector/0, link/1, + insert_selector_handler/3, select/1, select/2, trap_exits/1, map_selector/2, + merge_selector/2, flush_messages/0, file_info/1, link_info/1, + priv_directory/1, connect_node/1, register_process/2, unregister_process/1, + process_named/1, identity/1 +]). + +-define(is_posix_error(Error), + Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse + Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse + Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse + Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse + Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse + Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse + Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse + Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse + Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse + Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse + Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse + Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse + Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse + Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse + Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse + Error =:= etxtbsy orelse Error =:= exdev +). + +-spec atom_from_string(binary()) -> {ok, atom()} | {error, atom_not_loaded}. +atom_from_string(S) -> + try {ok, binary_to_existing_atom(S)} + catch error:badarg -> {error, atom_not_loaded} + end. + +atom_from_dynamic(Data) when is_atom(Data) -> + {ok, Data}; +atom_from_dynamic(Data) -> + {error, [{decode_error, <<"Atom">>, gleam@dynamic:classify(Data), []}]}. + +-spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. +get_line(Prompt) -> + case io:get_line(Prompt) of + eof -> {error, eof}; + {error, _} -> {error, no_data}; + Data when is_binary(Data) -> {ok, Data}; + Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} + end. + +rescue(F) -> + try {ok, F()} + catch + throw:X -> {error, {thrown, X}}; + error:X -> {error, {errored, X}}; + exit:X -> {error, {exited, X}} + end. + +ensure_all_started(Application) -> + case application:ensure_all_started(Application) of + {ok, _} = Ok -> Ok; + + {error, {ProblemApp, {"no such file or directory", _}}} -> + {error, {unknown_application, ProblemApp}} + end. + +sleep(Microseconds) -> + timer:sleep(Microseconds), + nil. + +sleep_forever() -> + timer:sleep(infinity), + nil. + +file_info_result(Result) -> + case Result of + {ok, {file_info, Size, Type, Access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}} when Access =:= none -> + {ok, {file_info, Size, Type, no_access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}}; + {ok, _} -> + Result; + {error, Reason} when ?is_posix_error(Reason) -> + Result + end. + +file_info(Filename) -> + file_info_result(file:read_file_info(Filename, [{time, posix}])). + +link_info(Filename) -> + file_info_result(file:read_link_info(Filename, [{time, posix}])). + +posix_result(Result) -> + case Result of + ok -> {ok, nil}; + {ok, Value} -> {ok, Value}; + {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} + end. + +read_file(Filename) -> + posix_result(file:read_file(Filename)). + +write_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents)). + +append_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents, [append])). + +delete_file(Filename) -> + posix_result(file:delete(Filename)). + +make_directory(Dir) -> + posix_result(file:make_dir(Dir)). + +list_directory(Dir) -> + case file:list_dir(Dir) of + {ok, Filenames} -> + {ok, [list_to_binary(Filename) || Filename <- Filenames]}; + {error, Reason} when ?is_posix_error(Reason) -> + {error, Reason} + end. + +delete_directory(Dir) -> + posix_result(file:del_dir(Dir)). + +recursive_delete(Dir) -> + posix_result(file:del_dir_r(Dir)). + +get_all_env() -> + BinVars = lists:map(fun(VarString) -> + [VarName, VarVal] = string:split(VarString, "="), + {list_to_binary(VarName), list_to_binary(VarVal)} + end, os:getenv()), + maps:from_list(BinVars). + +get_env(Name) -> + case os:getenv(binary_to_list(Name)) of + false -> {error, nil}; + Value -> {ok, list_to_binary(Value)} + end. + +set_env(Name, Value) -> + os:putenv(binary_to_list(Name), binary_to_list(Value)), + nil. + +unset_env(Name) -> + os:unsetenv(binary_to_list(Name)), + nil. + +os_family() -> + case os:type() of + {win32, nt} -> + windows_nt; + {unix, linux} -> + linux; + {unix, darwin} -> + darwin; + {unix, freebsd} -> + free_bsd; + {_, Other} -> + {other, atom_to_binary(Other, utf8)} + end. + +new_selector() -> + {selector, #{}}. + +map_selector({selector, Handlers}, Fn) -> + MappedHandlers = maps:map(fun(_Tag, Handler) -> + fun(Message) -> Fn(Handler(Message)) end + end, Handlers), + {selector, MappedHandlers}. + +merge_selector({selector, HandlersA}, {selector, HandlersB}) -> + {selector, maps:merge(HandlersA, HandlersB)}. + +insert_selector_handler({selector, Handlers}, Tag, Fn) -> + {selector, Handlers#{Tag => Fn}}. + +select(Selector) -> + {ok, Message} = select(Selector, infinity), + Message. + +select({selector, Handlers}, Timeout) -> + AnythingHandler = maps:get(anything, Handlers, undefined), + receive + % Monitored process down messages. + % This is special cased so we can selectively receive based on the + % reference as well as the record tag. + {'DOWN', Ref, process, Pid, Reason} when is_map_key(Ref, Handlers) -> + Fn = maps:get(Ref, Handlers), + {ok, Fn({process_down, Pid, Reason})}; + + Msg when is_map_key({element(1, Msg), tuple_size(Msg)}, Handlers) -> + Fn = maps:get({element(1, Msg), tuple_size(Msg)}, Handlers), + {ok, Fn(Msg)}; + + Msg when AnythingHandler =/= undefined -> + {ok, AnythingHandler(Msg)} + after Timeout -> + {error, nil} + end. + +demonitor({_, Reference}) -> + erlang:demonitor(Reference, [flush]). + +link(Pid) -> + try + erlang:link(Pid) + catch + error:_ -> false + end. + +trap_exits(ShouldTrap) -> + erlang:process_flag(trap_exit, ShouldTrap), + nil. + +flush_messages() -> + receive _Message -> flush_messages() + after 0 -> nil + end. + +priv_directory(Name) -> + try erlang:binary_to_existing_atom(Name) of + Atom -> + case code:priv_dir(Atom) of + {error, _} -> {error, nil}; + Path -> {ok, unicode:characters_to_binary(Path)} + end + catch + error:badarg -> {error, nil} + end. + +connect_node(Node) -> + case net_kernel:connect_node(Node) of + true -> {ok, Node}; + false -> {error, failed_to_connect}; + ignored -> {error, local_node_is_not_alive} + end. + +register_process(Pid, Name) -> + try + true = erlang:register(Name, Pid), + {ok, nil} + catch + error:badarg -> {error, nil} + end. + +unregister_process(Name) -> + try + true = erlang:unregister(Name), + {ok, nil} + catch + error:badarg -> {error, nil} + end. + +process_named(Name) -> + case erlang:whereis(Name) of + Pid when is_pid(Pid) -> {ok, Pid}; + _ -> {error, nil} + end. + +identity(X) -> + X. diff --git a/aoc2023/build/packages/gleam_http/LICENSE b/aoc2023/build/packages/gleam_http/LICENSE new file mode 100644 index 0000000..619ec77 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2019, Louis Pilfold . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/aoc2023/build/packages/gleam_http/README.md b/aoc2023/build/packages/gleam_http/README.md new file mode 100644 index 0000000..9e06952 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/README.md @@ -0,0 +1,67 @@ +# Gleam HTTP + +Types and functions for HTTP clients and servers! + +## HTTP Service Example + +```gleam +import gleam/http/elli +import gleam/http/response.{Response} +import gleam/http/request.{Request} +import gleam/bit_builder.{BitBuilder} + +// Define a HTTP service +// +pub fn my_service(request: Request(t)) -> Response(BitBuilder) { + let body = bit_builder.from_string("Hello, world!") + + response.new(200) + |> response.prepend_header("made-with", "Gleam") + |> response.set_body(body) +} + +// Start it on port 3000 using the Elli web server +// +pub fn main() { + elli.become(my_service, on_port: 3000) +} +``` + +## Server adapters + +In the example above the Elli Erlang web server is used to run the Gleam HTTP +service. Here's a full list of the server adapters available, sorted +alphabetically. + +| Adapter | About | +| --- | --- | +| [Mist][mist] | [Mist][mist] is a high performance pure Gleam web server | +| [gleam_cowboy][cowboy-adapter] | [Cowboy][cowboy] is an Erlang HTTP2 & HTTP1.1 web server | +| [gleam_elli][elli-adapter] | [Elli][elli] is an Erlang HTTP1.1 web server | +| [gleam_plug][plug-adapter] | [Plug][plug] is an Elixir web application interface | + +[cowboy]:https://github.com/ninenines/cowboy +[cowboy-adapter]: https://github.com/gleam-lang/cowboy +[elli]:https://github.com/elli-lib/elli +[elli-adapter]: https://github.com/gleam-lang/elli +[plug]:https://github.com/elixir-plug/plug +[plug-adapter]: https://github.com/gleam-lang/plug +[mist]: https://github.com/rawhat/mist + +## Client adapters + +Client adapters are used to send HTTP requests to services over the network. +Here's a full list of the client adapters available, sorted alphabetically. + +| Adapter | About | +| --- | --- | +| [gleam_fetch][fetch-adapter] | [fetch][fetch] is a HTTP client included with JavaScript | +| [gleam_hackney][hackney-adapter] | [Hackney][hackney] is a simple HTTP client for Erlang | +| [gleam_httpc][httpc-adapter] | [httpc][httpc] is a HTTP client included with Erlang | + +[hackney]: https://github.com/benoitc/hackney +[hackney-adapter]: https://github.com/gleam-lang/hackney +[httpc]: https://erlang.org/doc/man/httpc.html +[httpc-adapter]: https://github.com/gleam-lang/httpc +[fetch]: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API +[fetch-adapter]: https://github.com/gleam-lang/fetch diff --git a/aoc2023/build/packages/gleam_http/gleam.toml b/aoc2023/build/packages/gleam_http/gleam.toml new file mode 100644 index 0000000..ba733e8 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/gleam.toml @@ -0,0 +1,17 @@ +name = "gleam_http" +version = "3.5.2" +licences = ["Apache-2.0"] +description = "Types and functions for Gleam HTTP clients and servers" +gleam = ">= 0.32.0" + +repository = { type = "github", user = "gleam-lang", repo = "http" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] + +[dependencies] +gleam_stdlib = "~> 0.32" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl new file mode 100644 index 0000000..78a7d02 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl @@ -0,0 +1,8 @@ +-record(attributes, { + max_age :: gleam@option:option(integer()), + domain :: gleam@option:option(binary()), + path :: gleam@option:option(binary()), + secure :: boolean(), + http_only :: boolean(), + same_site :: gleam@option:option(gleam@http@cookie:same_site_policy()) +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl new file mode 100644 index 0000000..c8bbae6 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl @@ -0,0 +1,10 @@ +-record(request, { + method :: gleam@http:method(), + headers :: list({binary(), binary()}), + body :: any(), + scheme :: gleam@http:scheme(), + host :: binary(), + port :: gleam@option:option(integer()), + path :: binary(), + 'query' :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl new file mode 100644 index 0000000..ba6f077 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl @@ -0,0 +1,5 @@ +-record(response, { + status :: integer(), + headers :: list({binary(), binary()}), + body :: any() +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl new file mode 100644 index 0000000..abd56dd --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl @@ -0,0 +1,5 @@ +-record(more_required_for_body, { + chunk :: bitstring(), + continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_body()} | + {error, nil}) +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl new file mode 100644 index 0000000..43729c1 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl @@ -0,0 +1,4 @@ +-record(more_required_for_headers, { + continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_headers()} | + {error, nil}) +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl new file mode 100644 index 0000000..4521591 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl @@ -0,0 +1,5 @@ +-record(multipart_body, { + chunk :: bitstring(), + done :: boolean(), + remaining :: bitstring() +}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl new file mode 100644 index 0000000..d9fca5c --- /dev/null +++ b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl @@ -0,0 +1,4 @@ +-record(multipart_headers, { + headers :: list({binary(), binary()}), + remaining :: bitstring() +}). diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http.gleam new file mode 100644 index 0000000..a892006 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam/http.gleam @@ -0,0 +1,560 @@ +//// Functions for working with HTTP data structures in Gleam. +//// +//// This module makes it easy to create and modify Requests and Responses, data types. +//// A general HTTP message type is defined that enables functions to work on both requests and responses. +//// +//// This module does not implement a HTTP client or HTTP server, but it can be used as a base for them. + +import gleam/dynamic.{type DecodeError, type Dynamic, DecodeError} +import gleam/string +import gleam/bit_array +import gleam/result +import gleam/list +import gleam/bool + +/// HTTP standard method as defined by [RFC 2616](https://tools.ietf.org/html/rfc2616), +/// and PATCH which is defined by [RFC 5789](https://tools.ietf.org/html/rfc5789). +pub type Method { + Get + Post + Head + Put + Delete + Trace + Connect + Options + Patch + + /// Non-standard but valid HTTP methods. + Other(String) +} + +// TODO: check if the a is a valid HTTP method (i.e. it is a token, as per the +// spec) and return Ok(Other(s)) if so. +pub fn parse_method(s) -> Result(Method, Nil) { + case string.lowercase(s) { + "connect" -> Ok(Connect) + "delete" -> Ok(Delete) + "get" -> Ok(Get) + "head" -> Ok(Head) + "options" -> Ok(Options) + "patch" -> Ok(Patch) + "post" -> Ok(Post) + "put" -> Ok(Put) + "trace" -> Ok(Trace) + _ -> Error(Nil) + } +} + +pub fn method_to_string(method: Method) -> String { + case method { + Connect -> "connect" + Delete -> "delete" + Get -> "get" + Head -> "head" + Options -> "options" + Patch -> "patch" + Post -> "post" + Put -> "put" + Trace -> "trace" + Other(s) -> s + } +} + +/// The two URI schemes for HTTP +/// +pub type Scheme { + Http + Https +} + +/// Convert a scheme into a string. +/// +/// # Examples +/// +/// > scheme_to_string(Http) +/// "http" +/// +/// > scheme_to_string(Https) +/// "https" +/// +pub fn scheme_to_string(scheme: Scheme) -> String { + case scheme { + Http -> "http" + Https -> "https" + } +} + +/// Parse a HTTP scheme from a string +/// +/// # Examples +/// +/// > scheme_from_string("http") +/// Ok(Http) +/// +/// > scheme_from_string("ftp") +/// Error(Nil) +/// +pub fn scheme_from_string(scheme: String) -> Result(Scheme, Nil) { + case string.lowercase(scheme) { + "http" -> Ok(Http) + "https" -> Ok(Https) + _ -> Error(Nil) + } +} + +pub fn method_from_dynamic(value: Dynamic) -> Result(Method, List(DecodeError)) { + case do_method_from_dynamic(value) { + Ok(method) -> Ok(method) + Error(_) -> Error([DecodeError("HTTP method", dynamic.classify(value), [])]) + } +} + +pub type MultipartHeaders { + /// The headers for the part have been fully parsed. + MultipartHeaders( + headers: List(Header), + /// The remaining content that has not yet been parsed. This will contain + /// the body for this part, if any, and can be parsed with the + /// `parse_multipart_body` function. + remaining: BitArray, + ) + /// More input is required to parse the headers for this part. + MoreRequiredForHeaders( + /// Call this function to continue parsing the headers for this part. + continuation: fn(BitArray) -> Result(MultipartHeaders, Nil), + ) +} + +pub type MultipartBody { + /// The body for the part has been fully parsed. + MultipartBody( + // The rest of the body for this part. The full body of the part is this + // concatenated onto the end of each chunk returned by any previous + // `MoreRequiredForBody` returns. + chunk: BitArray, + /// This is `True` if this was the last part in the multipart message, + /// otherwise there are more parts to parse. + done: Bool, + /// The remaining content that has not yet been parsed. This will contain + /// the next part if `done` is `False`, otherwise it will contain the + /// epilogue, if any. + remaining: BitArray, + ) + MoreRequiredForBody( + // The body that has been parsed so far. The full body of the part is this + // concatenated with the chunk returned by each `MoreRequiredForBody` return + // value, and the final `MultipartBody` return value. + chunk: BitArray, + /// Call this function to continue parsing the body for this part. + continuation: fn(BitArray) -> Result(MultipartBody, Nil), + ) +} + +/// Parse the headers for part of a multipart message, as defined in RFC 2045. +/// +/// This function skips any preamble before the boundary. The preamble may be +/// retrieved using `parse_multipart_body`. +/// +/// This function will accept input of any size, it is up to the caller to limit +/// it if needed. +/// +/// To enable streaming parsing of multipart messages, this function will return +/// a continuation if there is not enough data to fully parse the headers. +/// Further information is available in the documentation for `MultipartBody`. +/// +pub fn parse_multipart_headers( + data: BitArray, + boundary: String, +) -> Result(MultipartHeaders, Nil) { + let boundary = bit_array.from_string(boundary) + // TODO: rewrite this to use a bit pattern once JavaScript supports + // the `b:binary-size(bsize)` pattern. + let prefix = <<45, 45, boundary:bits>> + case bit_array.slice(data, 0, bit_array.byte_size(prefix)) == Ok(prefix) { + // There is no preamble, parse the headers. + True -> parse_headers_after_prelude(data, boundary) + // There is a preamble, skip it before parsing. + False -> skip_preamble(data, boundary) + } +} + +/// Parse the body for part of a multipart message, as defined in RFC 2045. The +/// body is everything until the next boundary. This function is generally to be +/// called after calling `parse_multipart_headers` for a given part. +/// +/// This function will accept input of any size, it is up to the caller to limit +/// it if needed. +/// +/// To enable streaming parsing of multipart messages, this function will return +/// a continuation if there is not enough data to fully parse the body, along +/// with the data that has been parsed so far. Further information is available +/// in the documentation for `MultipartBody`. +/// +pub fn parse_multipart_body( + data: BitArray, + boundary: String, +) -> Result(MultipartBody, Nil) { + boundary + |> bit_array.from_string + |> parse_body_with_bit_array(data, _) +} + +fn parse_body_with_bit_array( + data: BitArray, + boundary: BitArray, +) -> Result(MultipartBody, Nil) { + let bsize = bit_array.byte_size(boundary) + let prefix = bit_array.slice(data, 0, 2 + bsize) + case prefix == Ok(<<45, 45, boundary:bits>>) { + True -> Ok(MultipartBody(<<>>, done: False, remaining: data)) + False -> parse_body_loop(data, boundary, <<>>) + } +} + +fn parse_body_loop( + data: BitArray, + boundary: BitArray, + body: BitArray, +) -> Result(MultipartBody, Nil) { + let dsize = bit_array.byte_size(data) + let bsize = bit_array.byte_size(boundary) + let required = 6 + bsize + case data { + _ if dsize < required -> { + more_please_body(parse_body_loop(_, boundary, <<>>), body, data) + } + + // TODO: flatten this into a single case expression once JavaScript supports + // the `b:binary-size(bsize)` pattern. + // + // \r\n + <<13, 10, data:bytes>> -> { + let desired = <<45, 45, boundary:bits>> + let size = bit_array.byte_size(desired) + let dsize = bit_array.byte_size(data) + let prefix = bit_array.slice(data, 0, size) + let rest = bit_array.slice(data, size, dsize - size) + case prefix == Ok(desired), rest { + // --boundary\r\n + True, Ok(<<13, 10, _:bytes>>) -> + Ok(MultipartBody(body, done: False, remaining: data)) + + // --boundary-- + True, Ok(<<45, 45, data:bytes>>) -> + Ok(MultipartBody(body, done: True, remaining: data)) + + False, _ -> parse_body_loop(data, boundary, <>) + _, _ -> Error(Nil) + } + } + + <> -> { + parse_body_loop(data, boundary, <>) + } + } +} + +fn parse_headers_after_prelude( + data: BitArray, + boundary: BitArray, +) -> Result(MultipartHeaders, Nil) { + let dsize = bit_array.byte_size(data) + let bsize = bit_array.byte_size(boundary) + let required_size = bsize + 4 + + // TODO: this could be written as a single case expression if JavaScript had + // support for the `b:binary-size(bsize)` pattern. Rewrite this once the + // compiler support this. + + use <- bool.guard( + when: dsize < required_size, + return: more_please_headers(parse_headers_after_prelude(_, boundary), data), + ) + + use prefix <- result.try(bit_array.slice(data, 0, required_size - 2)) + use second <- result.try(bit_array.slice(data, 2 + bsize, 2)) + let desired = <<45, 45, boundary:bits>> + + use <- bool.guard(prefix != desired, return: Error(Nil)) + + case second == <<45, 45>> { + // --boundary-- + // The last boundary. Return the epilogue. + True -> { + let rest_size = dsize - required_size + use data <- result.map(bit_array.slice(data, required_size, rest_size)) + MultipartHeaders([], remaining: data) + } + + // --boundary + False -> { + let start = required_size - 2 + let rest_size = dsize - required_size + 2 + use data <- result.try(bit_array.slice(data, start, rest_size)) + do_parse_headers(data) + } + } +} + +fn skip_preamble( + data: BitArray, + boundary: BitArray, +) -> Result(MultipartHeaders, Nil) { + let data_size = bit_array.byte_size(data) + let boundary_size = bit_array.byte_size(boundary) + let required = boundary_size + 4 + case data { + _ if data_size < required -> + more_please_headers(skip_preamble(_, boundary), data) + + // TODO: change this to use one non-nested case expression once the compiler + // supports the `b:binary-size(bsize)` pattern on JS. + // \r\n-- + <<13, 10, 45, 45, data:bytes>> -> { + case bit_array.slice(data, 0, boundary_size) { + // --boundary + Ok(prefix) if prefix == boundary -> { + let start = boundary_size + let length = bit_array.byte_size(data) - boundary_size + use rest <- result.try(bit_array.slice(data, start, length)) + do_parse_headers(rest) + } + Ok(_) -> skip_preamble(data, boundary) + Error(_) -> Error(Nil) + } + } + + <<_, data:bytes>> -> skip_preamble(data, boundary) + } +} + +fn skip_whitespace(data: BitArray) -> BitArray { + case data { + // Space or tab. + <<32, data:bytes>> | <<9, data:bytes>> -> skip_whitespace(data) + _ -> data + } +} + +fn do_parse_headers(data: BitArray) -> Result(MultipartHeaders, Nil) { + case data { + // \r\n\r\n + // We've reached the end, there are no headers. + <<13, 10, 13, 10, data:bytes>> -> Ok(MultipartHeaders([], remaining: data)) + + // \r\n + // Skip the line break after the boundary. + <<13, 10, data:bytes>> -> parse_header_name(data, [], <<>>) + + <<13>> | <<>> -> more_please_headers(do_parse_headers, data) + + _ -> Error(Nil) + } +} + +fn parse_header_name( + data: BitArray, + headers: List(Header), + name: BitArray, +) -> Result(MultipartHeaders, Nil) { + case skip_whitespace(data) { + // : + <<58, data:bytes>> -> + data + |> skip_whitespace + |> parse_header_value(headers, name, <<>>) + + <> -> + parse_header_name(data, headers, <>) + + <<>> -> more_please_headers(parse_header_name(_, headers, name), data) + } +} + +fn parse_header_value( + data: BitArray, + headers: List(Header), + name: BitArray, + value: BitArray, +) -> Result(MultipartHeaders, Nil) { + let size = bit_array.byte_size(data) + case data { + // We need at least 4 bytes to check for the end of the headers. + _ if size < 4 -> + fn(data) { + data + |> skip_whitespace + |> parse_header_value(headers, name, value) + } + |> more_please_headers(data) + + // \r\n\r\n + <<13, 10, 13, 10, data:bytes>> -> { + use name <- result.try(bit_array.to_string(name)) + use value <- result.map(bit_array.to_string(value)) + let headers = list.reverse([#(string.lowercase(name), value), ..headers]) + MultipartHeaders(headers, data) + } + + // \r\n\s + // \r\n\t + <<13, 10, 32, data:bytes>> | <<13, 10, 9, data:bytes>> -> + parse_header_value(data, headers, name, value) + + // \r\n + <<13, 10, data:bytes>> -> { + use name <- result.try(bit_array.to_string(name)) + use value <- result.try(bit_array.to_string(value)) + let headers = [#(string.lowercase(name), value), ..headers] + parse_header_name(data, headers, <<>>) + } + + <> -> { + let value = <> + parse_header_value(rest, headers, name, value) + } + + _ -> Error(Nil) + } +} + +fn more_please_headers( + continuation: fn(BitArray) -> Result(MultipartHeaders, Nil), + existing: BitArray, +) -> Result(MultipartHeaders, Nil) { + Ok(MoreRequiredForHeaders(fn(more) { + use <- bool.guard(more == <<>>, return: Error(Nil)) + continuation(<>) + })) +} + +pub type ContentDisposition { + ContentDisposition(String, parameters: List(#(String, String))) +} + +pub fn parse_content_disposition( + header: String, +) -> Result(ContentDisposition, Nil) { + parse_content_disposition_type(header, "") +} + +fn parse_content_disposition_type( + header: String, + name: String, +) -> Result(ContentDisposition, Nil) { + case string.pop_grapheme(header) { + Error(Nil) -> Ok(ContentDisposition(name, [])) + + Ok(#(" ", rest)) | Ok(#("\t", rest)) | Ok(#(";", rest)) -> { + let result = parse_rfc_2045_parameters(rest, []) + use parameters <- result.map(result) + ContentDisposition(name, parameters) + } + + Ok(#(grapheme, rest)) -> + parse_content_disposition_type(rest, name <> string.lowercase(grapheme)) + } +} + +fn parse_rfc_2045_parameters( + header: String, + parameters: List(#(String, String)), +) -> Result(List(#(String, String)), Nil) { + case string.pop_grapheme(header) { + Error(Nil) -> Ok(list.reverse(parameters)) + + Ok(#(";", rest)) | Ok(#(" ", rest)) | Ok(#("\t", rest)) -> + parse_rfc_2045_parameters(rest, parameters) + + Ok(#(grapheme, rest)) -> { + let acc = string.lowercase(grapheme) + use #(parameter, rest) <- result.try(parse_rfc_2045_parameter(rest, acc)) + parse_rfc_2045_parameters(rest, [parameter, ..parameters]) + } + } +} + +fn parse_rfc_2045_parameter( + header: String, + name: String, +) -> Result(#(#(String, String), String), Nil) { + use #(grapheme, rest) <- result.try(string.pop_grapheme(header)) + case grapheme { + "=" -> parse_rfc_2045_parameter_value(rest, name) + _ -> parse_rfc_2045_parameter(rest, name <> string.lowercase(grapheme)) + } +} + +fn parse_rfc_2045_parameter_value( + header: String, + name: String, +) -> Result(#(#(String, String), String), Nil) { + case string.pop_grapheme(header) { + Error(Nil) -> Error(Nil) + Ok(#("\"", rest)) -> parse_rfc_2045_parameter_quoted_value(rest, name, "") + Ok(#(grapheme, rest)) -> + Ok(parse_rfc_2045_parameter_unquoted_value(rest, name, grapheme)) + } +} + +fn parse_rfc_2045_parameter_quoted_value( + header: String, + name: String, + value: String, +) -> Result(#(#(String, String), String), Nil) { + case string.pop_grapheme(header) { + Error(Nil) -> Error(Nil) + Ok(#("\"", rest)) -> Ok(#(#(name, value), rest)) + Ok(#("\\", rest)) -> { + use #(grapheme, rest) <- result.try(string.pop_grapheme(rest)) + parse_rfc_2045_parameter_quoted_value(rest, name, value <> grapheme) + } + Ok(#(grapheme, rest)) -> + parse_rfc_2045_parameter_quoted_value(rest, name, value <> grapheme) + } +} + +fn parse_rfc_2045_parameter_unquoted_value( + header: String, + name: String, + value: String, +) -> #(#(String, String), String) { + case string.pop_grapheme(header) { + Error(Nil) -> #(#(name, value), header) + + Ok(#(";", rest)) | Ok(#(" ", rest)) | Ok(#("\t", rest)) -> #( + #(name, value), + rest, + ) + + Ok(#(grapheme, rest)) -> + parse_rfc_2045_parameter_unquoted_value(rest, name, value <> grapheme) + } +} + +fn more_please_body( + continuation: fn(BitArray) -> Result(MultipartBody, Nil), + chunk: BitArray, + existing: BitArray, +) -> Result(MultipartBody, Nil) { + fn(more) { + use <- bool.guard(more == <<>>, return: Error(Nil)) + continuation(<>) + } + |> MoreRequiredForBody(chunk, _) + |> Ok +} + +@target(erlang) +@external(erlang, "gleam_http_native", "decode_method") +fn do_method_from_dynamic(a: Dynamic) -> Result(Method, nil) + +@target(javascript) +@external(javascript, "../gleam_http_native.mjs", "decode_method") +fn do_method_from_dynamic(a: Dynamic) -> Result(Method, Nil) + +/// A HTTP header is a key-value pair. Header keys should be all lowercase +/// characters. +pub type Header = + #(String, String) diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam new file mode 100644 index 0000000..e9ccb55 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam @@ -0,0 +1,128 @@ +import gleam/result +import gleam/int +import gleam/list +import gleam/regex +import gleam/string +import gleam/option.{type Option, Some} +import gleam/http.{type Scheme} + +/// Policy options for the SameSite cookie attribute +/// +/// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite +pub type SameSitePolicy { + Lax + Strict + None +} + +fn same_site_to_string(policy) { + case policy { + Lax -> "Lax" + Strict -> "Strict" + None -> "None" + } +} + +/// Attributes of a cookie when sent to a client in the `set-cookie` header. +pub type Attributes { + Attributes( + max_age: Option(Int), + domain: Option(String), + path: Option(String), + secure: Bool, + http_only: Bool, + same_site: Option(SameSitePolicy), + ) +} + +/// Helper to create sensible default attributes for a set cookie. +/// +/// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Attributes +pub fn defaults(scheme: Scheme) { + Attributes( + max_age: option.None, + domain: option.None, + path: option.Some("/"), + secure: scheme == http.Https, + http_only: True, + same_site: Some(Lax), + ) +} + +const epoch = "Expires=Thu, 01 Jan 1970 00:00:00 GMT" + +fn cookie_attributes_to_list(attributes) { + let Attributes( + max_age: max_age, + domain: domain, + path: path, + secure: secure, + http_only: http_only, + same_site: same_site, + ) = attributes + [ + // Expires is a deprecated attribute for cookies, it has been replaced with MaxAge + // MaxAge is widely supported and so Expires values are not set. + // Only when deleting cookies is the exception made to use the old format, + // to ensure complete clearup of cookies if required by an application. + case max_age { + option.Some(0) -> option.Some([epoch]) + _ -> option.None + }, + option.map(max_age, fn(max_age) { ["Max-Age=", int.to_string(max_age)] }), + option.map(domain, fn(domain) { ["Domain=", domain] }), + option.map(path, fn(path) { ["Path=", path] }), + case secure { + True -> option.Some(["Secure"]) + False -> option.None + }, + case http_only { + True -> option.Some(["HttpOnly"]) + False -> option.None + }, + option.map( + same_site, + fn(same_site) { ["SameSite=", same_site_to_string(same_site)] }, + ), + ] + |> list.filter_map(option.to_result(_, Nil)) +} + +pub fn set_header(name: String, value: String, attributes: Attributes) -> String { + [[name, "=", value], ..cookie_attributes_to_list(attributes)] + |> list.map(string.join(_, "")) + |> string.join("; ") +} + +/// Parse a list of cookies from a header string. Any malformed cookies will be +/// discarded. +/// +pub fn parse(cookie_string: String) -> List(#(String, String)) { + let assert Ok(re) = regex.from_string("[,;]") + regex.split(re, cookie_string) + |> list.filter_map(fn(pair) { + case string.split_once(string.trim(pair), "=") { + Ok(#("", _)) -> Error(Nil) + Ok(#(key, value)) -> { + let key = string.trim(key) + let value = string.trim(value) + use _ <- result.then(check_token(key)) + use _ <- result.then(check_token(value)) + Ok(#(key, value)) + } + Error(Nil) -> Error(Nil) + } + }) +} + +fn check_token(token: String) -> Result(Nil, Nil) { + case string.pop_grapheme(token) { + Error(Nil) -> Ok(Nil) + Ok(#(" ", _)) -> Error(Nil) + Ok(#("\t", _)) -> Error(Nil) + Ok(#("\r", _)) -> Error(Nil) + Ok(#("\n", _)) -> Error(Nil) + Ok(#("\f", _)) -> Error(Nil) + Ok(#(_, rest)) -> check_token(rest) + } +} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam new file mode 100644 index 0000000..0bf9af9 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam @@ -0,0 +1,267 @@ +import gleam/result +// TODO: validate_req +import gleam/http.{type Header, type Method, type Scheme, Get} +import gleam/http/cookie +import gleam/option.{type Option} +import gleam/uri.{type Uri, Uri} +import gleam/list +import gleam/string +import gleam/string_builder + +// TODO: document +pub type Request(body) { + Request( + method: Method, + headers: List(Header), + body: body, + scheme: Scheme, + host: String, + port: Option(Int), + path: String, + query: Option(String), + ) +} + +/// Return the uri that a request was sent to. +/// +pub fn to_uri(request: Request(a)) -> Uri { + Uri( + scheme: option.Some(http.scheme_to_string(request.scheme)), + userinfo: option.None, + host: option.Some(request.host), + port: request.port, + path: request.path, + query: request.query, + fragment: option.None, + ) +} + +/// Construct a request from a URI. +/// +pub fn from_uri(uri: Uri) -> Result(Request(String), Nil) { + use scheme <- result.then( + uri.scheme + |> option.unwrap("") + |> http.scheme_from_string, + ) + use host <- result.then( + uri.host + |> option.to_result(Nil), + ) + let req = + Request( + method: Get, + headers: [], + body: "", + scheme: scheme, + host: host, + port: uri.port, + path: uri.path, + query: uri.query, + ) + Ok(req) +} + +/// Get the value for a given header. +/// +/// If the request does not have that header then `Error(Nil)` is returned. +/// +pub fn get_header(request: Request(body), key: String) -> Result(String, Nil) { + list.key_find(request.headers, string.lowercase(key)) +} + +/// Set the header with the given value under the given header key. +/// +/// If already present, it is replaced. +pub fn set_header( + request: Request(body), + key: String, + value: String, +) -> Request(body) { + let headers = list.key_set(request.headers, string.lowercase(key), value) + Request(..request, headers: headers) +} + +/// Prepend the header with the given value under the given header key. +/// +/// Similar to `set_header` except if the header already exists it prepends +/// another header with the same key. +pub fn prepend_header( + request: Request(body), + key: String, + value: String, +) -> Request(body) { + let headers = [#(string.lowercase(key), value), ..request.headers] + Request(..request, headers: headers) +} + +// TODO: record update syntax, which can't be done currently as body type changes +/// Set the body of the request, overwriting any existing body. +/// +pub fn set_body(req: Request(old_body), body: new_body) -> Request(new_body) { + let Request( + method: method, + headers: headers, + scheme: scheme, + host: host, + port: port, + path: path, + query: query, + .., + ) = req + Request( + method: method, + headers: headers, + body: body, + scheme: scheme, + host: host, + port: port, + path: path, + query: query, + ) +} + +/// Update the body of a request using a given function. +/// +pub fn map( + request: Request(old_body), + transform: fn(old_body) -> new_body, +) -> Request(new_body) { + request.body + |> transform + |> set_body(request, _) +} + +/// Return the non-empty segments of a request path. +/// +/// # Examples +/// +/// ```gleam +/// > new() +/// > |> set_path("/one/two/three") +/// > |> path_segments +/// ["one", "two", "three"] +/// ``` +/// +pub fn path_segments(request: Request(body)) -> List(String) { + request.path + |> uri.path_segments +} + +/// Decode the query of a request. +pub fn get_query(request: Request(body)) -> Result(List(#(String, String)), Nil) { + case request.query { + option.Some(query_string) -> uri.parse_query(query_string) + option.None -> Ok([]) + } +} + +// TODO: escape +/// Set the query of the request. +/// +pub fn set_query( + req: Request(body), + query: List(#(String, String)), +) -> Request(body) { + let pair = fn(t: #(String, String)) { + string_builder.from_strings([t.0, "=", t.1]) + } + let query = + query + |> list.map(pair) + |> list.intersperse(string_builder.from_string("&")) + |> string_builder.concat + |> string_builder.to_string + |> option.Some + Request(..req, query: query) +} + +/// Set the method of the request. +/// +pub fn set_method(req: Request(body), method: Method) -> Request(body) { + Request(..req, method: method) +} + +/// A request with commonly used default values. This request can be used as +/// an initial value and then update to create the desired request. +/// +pub fn new() -> Request(String) { + Request( + method: Get, + headers: [], + body: "", + scheme: http.Https, + host: "localhost", + port: option.None, + path: "", + query: option.None, + ) +} + +/// Construct a request from a URL string +/// +pub fn to(url: String) -> Result(Request(String), Nil) { + url + |> uri.parse + |> result.then(from_uri) +} + +/// Set the scheme (protocol) of the request. +/// +pub fn set_scheme(req: Request(body), scheme: Scheme) -> Request(body) { + Request(..req, scheme: scheme) +} + +/// Set the method of the request. +/// +pub fn set_host(req: Request(body), host: String) -> Request(body) { + Request(..req, host: host) +} + +/// Set the port of the request. +/// +pub fn set_port(req: Request(body), port: Int) -> Request(body) { + Request(..req, port: option.Some(port)) +} + +/// Set the path of the request. +/// +pub fn set_path(req: Request(body), path: String) -> Request(body) { + Request(..req, path: path) +} + +/// Send a cookie with a request +/// +/// Multiple cookies are added to the same cookie header. +pub fn set_cookie(req: Request(body), name: String, value: String) { + let new_cookie_string = string.join([name, value], "=") + + let #(cookies_string, headers) = case list.key_pop(req.headers, "cookie") { + Ok(#(cookies_string, headers)) -> { + let cookies_string = + string.join([cookies_string, new_cookie_string], "; ") + #(cookies_string, headers) + } + Error(Nil) -> #(new_cookie_string, req.headers) + } + + Request(..req, headers: [#("cookie", cookies_string), ..headers]) +} + +/// Fetch the cookies sent in a request. +/// +/// Note badly formed cookie pairs will be ignored. +/// RFC6265 specifies that invalid cookie names/attributes should be ignored. +pub fn get_cookies(req) -> List(#(String, String)) { + let Request(headers: headers, ..) = req + + headers + |> list.filter_map(fn(header) { + let #(name, value) = header + case name { + "cookie" -> Ok(cookie.parse(value)) + _ -> Error(Nil) + } + }) + |> list.flatten() +} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam new file mode 100644 index 0000000..87f9140 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam @@ -0,0 +1,141 @@ +import gleam/result +import gleam/http.{type Header} +import gleam/http/cookie +import gleam/list +import gleam/string +import gleam/option + +// TODO: document +pub type Response(body) { + Response(status: Int, headers: List(Header), body: body) +} + +/// Update the body of a response using a given result returning function. +/// +/// If the given function returns an `Ok` value the body is set, if it returns +/// an `Error` value then the error is returned. +/// +pub fn try_map( + response: Response(old_body), + transform: fn(old_body) -> Result(new_body, error), +) -> Result(Response(new_body), error) { + use body <- result.then(transform(response.body)) + Ok(set_body(response, body)) +} + +/// Construct an empty Response. +/// +/// The body type of the returned response is `String` and could be set with a +/// call to `set_body`. +/// +pub fn new(status: Int) -> Response(String) { + Response(status: status, headers: [], body: "") +} + +/// Get the value for a given header. +/// +/// If the response does not have that header then `Error(Nil)` is returned. +/// +pub fn get_header(response: Response(body), key: String) -> Result(String, Nil) { + list.key_find(response.headers, string.lowercase(key)) +} + +/// Set the header with the given value under the given header key. +/// +/// If the response already has that key, it is replaced. +pub fn set_header( + response: Response(body), + key: String, + value: String, +) -> Response(body) { + let headers = list.key_set(response.headers, string.lowercase(key), value) + Response(..response, headers: headers) +} + +/// Prepend the header with the given value under the given header key. +/// +/// Similar to `set_header` except if the header already exists it prepends +/// another header with the same key. +pub fn prepend_header( + response: Response(body), + key: String, + value: String, +) -> Response(body) { + let headers = [#(string.lowercase(key), value), ..response.headers] + Response(..response, headers: headers) +} + +/// Set the body of the response, overwriting any existing body. +/// +pub fn set_body( + response: Response(old_body), + body: new_body, +) -> Response(new_body) { + let Response(status: status, headers: headers, ..) = response + Response(status: status, headers: headers, body: body) +} + +/// Update the body of a response using a given function. +/// +pub fn map( + response: Response(old_body), + transform: fn(old_body) -> new_body, +) -> Response(new_body) { + response.body + |> transform + |> set_body(response, _) +} + +/// Create a response that redirects to the given uri. +/// +pub fn redirect(uri: String) -> Response(String) { + Response( + status: 303, + headers: [#("location", uri)], + body: string.append("You are being redirected to ", uri), + ) +} + +/// Fetch the cookies sent in a response. +/// +/// Badly formed cookies will be discarded. +/// +pub fn get_cookies(resp) -> List(#(String, String)) { + let Response(headers: headers, ..) = resp + headers + |> list.filter_map(fn(header) { + let #(name, value) = header + case name { + "set-cookie" -> Ok(cookie.parse(value)) + _ -> Error(Nil) + } + }) + |> list.flatten() +} + +/// Set a cookie value for a client +/// +pub fn set_cookie( + response: Response(t), + name: String, + value: String, + attributes: cookie.Attributes, +) -> Response(t) { + prepend_header( + response, + "set-cookie", + cookie.set_header(name, value, attributes), + ) +} + +/// Expire a cookie value for a client +/// +/// Note: The attributes value should be the same as when the response cookie was set. +pub fn expire_cookie( + response: Response(t), + name: String, + attributes: cookie.Attributes, +) -> Response(t) { + let attrs = cookie.Attributes(..attributes, max_age: option.Some(0)) + set_cookie(response, name, "", attrs) +} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam new file mode 100644 index 0000000..3dfac87 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam @@ -0,0 +1,82 @@ +import gleam/http.{Delete, Patch, Post, Put} +import gleam/http/request.{type Request} +import gleam/http/response.{type Response} +import gleam/list +import gleam/result + +// TODO: document +pub type Service(in, out) = + fn(Request(in)) -> Response(out) + +pub type Middleware(before_req, before_resp, after_req, after_resp) = + fn(Service(before_req, before_resp)) -> Service(after_req, after_resp) + +/// A middleware that transform the response body returned by the service using +/// a given function. +/// +pub fn map_response_body( + service: Service(req, a), + with mapper: fn(a) -> b, +) -> Service(req, b) { + fn(req) { + req + |> service + |> response.map(mapper) + } +} + +/// A middleware that prepends a header to the request. +/// +pub fn prepend_response_header( + service: Service(req, resp), + key: String, + value: String, +) -> Service(req, resp) { + fn(req) { + req + |> service + |> response.prepend_header(key, value) + } +} + +fn ensure_post(req: Request(a)) { + case req.method { + Post -> Ok(req) + _ -> Error(Nil) + } +} + +fn get_override_method(request: Request(t)) -> Result(http.Method, Nil) { + use query_params <- result.then(request.get_query(request)) + use method <- result.then(list.key_find(query_params, "_method")) + use method <- result.then(http.parse_method(method)) + case method { + Put | Patch | Delete -> Ok(method) + _ -> Error(Nil) + } +} + +/// A middleware that overrides an incoming POST request with a method given in +/// the request's `_method` query paramerter. This is useful as web browsers +/// typically only support GET and POST requests, but our application may +/// expect other HTTP methods that are more semantically correct. +/// +/// The methods PUT, PATCH, and DELETE are accepted for overriding, all others +/// are ignored. +/// +/// The `_method` query paramerter can be specified in a HTML form like so: +/// +///
+/// +///
+/// +pub fn method_override(service: Service(req, resp)) -> Service(req, resp) { + fn(request) { + request + |> ensure_post + |> result.then(get_override_method) + |> result.map(request.set_method(request, _)) + |> result.unwrap(request) + |> service + } +} diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http.erl b/aoc2023/build/packages/gleam_http/src/gleam@http.erl new file mode 100644 index 0000000..91ee6e8 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam@http.erl @@ -0,0 +1,626 @@ +-module(gleam@http). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse_method/1, method_to_string/1, scheme_to_string/1, scheme_from_string/1, parse_content_disposition/1, parse_multipart_body/2, method_from_dynamic/1, parse_multipart_headers/2]). +-export_type([method/0, scheme/0, multipart_headers/0, multipart_body/0, content_disposition/0]). + +-type method() :: get | + post | + head | + put | + delete | + trace | + connect | + options | + patch | + {other, binary()}. + +-type scheme() :: http | https. + +-type multipart_headers() :: {multipart_headers, + list({binary(), binary()}), + bitstring()} | + {more_required_for_headers, + fun((bitstring()) -> {ok, multipart_headers()} | {error, nil})}. + +-type multipart_body() :: {multipart_body, bitstring(), boolean(), bitstring()} | + {more_required_for_body, + bitstring(), + fun((bitstring()) -> {ok, multipart_body()} | {error, nil})}. + +-type content_disposition() :: {content_disposition, + binary(), + list({binary(), binary()})}. + +-spec parse_method(binary()) -> {ok, method()} | {error, nil}. +parse_method(S) -> + case gleam@string:lowercase(S) of + <<"connect"/utf8>> -> + {ok, connect}; + + <<"delete"/utf8>> -> + {ok, delete}; + + <<"get"/utf8>> -> + {ok, get}; + + <<"head"/utf8>> -> + {ok, head}; + + <<"options"/utf8>> -> + {ok, options}; + + <<"patch"/utf8>> -> + {ok, patch}; + + <<"post"/utf8>> -> + {ok, post}; + + <<"put"/utf8>> -> + {ok, put}; + + <<"trace"/utf8>> -> + {ok, trace}; + + _ -> + {error, nil} + end. + +-spec method_to_string(method()) -> binary(). +method_to_string(Method) -> + case Method of + connect -> + <<"connect"/utf8>>; + + delete -> + <<"delete"/utf8>>; + + get -> + <<"get"/utf8>>; + + head -> + <<"head"/utf8>>; + + options -> + <<"options"/utf8>>; + + patch -> + <<"patch"/utf8>>; + + post -> + <<"post"/utf8>>; + + put -> + <<"put"/utf8>>; + + trace -> + <<"trace"/utf8>>; + + {other, S} -> + S + end. + +-spec scheme_to_string(scheme()) -> binary(). +scheme_to_string(Scheme) -> + case Scheme of + http -> + <<"http"/utf8>>; + + https -> + <<"https"/utf8>> + end. + +-spec scheme_from_string(binary()) -> {ok, scheme()} | {error, nil}. +scheme_from_string(Scheme) -> + case gleam@string:lowercase(Scheme) of + <<"http"/utf8>> -> + {ok, http}; + + <<"https"/utf8>> -> + {ok, https}; + + _ -> + {error, nil} + end. + +-spec skip_whitespace(bitstring()) -> bitstring(). +skip_whitespace(Data) -> + case Data of + <<32, Data@1/binary>> -> + skip_whitespace(Data@1); + + <<9, Data@1/binary>> -> + skip_whitespace(Data@1); + + _ -> + Data + end. + +-spec more_please_headers( + fun((bitstring()) -> {ok, multipart_headers()} | {error, nil}), + bitstring() +) -> {ok, multipart_headers()} | {error, nil}. +more_please_headers(Continuation, Existing) -> + {ok, + {more_required_for_headers, + fun(More) -> + gleam@bool:guard( + More =:= <<>>, + {error, nil}, + fun() -> + Continuation(<>) + end + ) + end}}. + +-spec parse_rfc_2045_parameter_quoted_value(binary(), binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter_quoted_value(Header, Name, Value) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {error, nil}; + + {ok, {<<"\""/utf8>>, Rest}} -> + {ok, {{Name, Value}, Rest}}; + + {ok, {<<"\\"/utf8>>, Rest@1}} -> + gleam@result:'try'( + gleam@string:pop_grapheme(Rest@1), + fun(_use0) -> + {Grapheme, Rest@2} = _use0, + parse_rfc_2045_parameter_quoted_value( + Rest@2, + Name, + <> + ) + end + ); + + {ok, {Grapheme@1, Rest@3}} -> + parse_rfc_2045_parameter_quoted_value( + Rest@3, + Name, + <> + ) + end. + +-spec parse_rfc_2045_parameter_unquoted_value(binary(), binary(), binary()) -> {{binary(), + binary()}, + binary()}. +parse_rfc_2045_parameter_unquoted_value(Header, Name, Value) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {{Name, Value}, Header}; + + {ok, {<<";"/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {<<" "/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {<<"\t"/utf8>>, Rest}} -> + {{Name, Value}, Rest}; + + {ok, {Grapheme, Rest@1}} -> + parse_rfc_2045_parameter_unquoted_value( + Rest@1, + Name, + <> + ) + end. + +-spec parse_rfc_2045_parameter_value(binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter_value(Header, Name) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {error, nil}; + + {ok, {<<"\""/utf8>>, Rest}} -> + parse_rfc_2045_parameter_quoted_value(Rest, Name, <<""/utf8>>); + + {ok, {Grapheme, Rest@1}} -> + {ok, + parse_rfc_2045_parameter_unquoted_value(Rest@1, Name, Grapheme)} + end. + +-spec parse_rfc_2045_parameter(binary(), binary()) -> {ok, + {{binary(), binary()}, binary()}} | + {error, nil}. +parse_rfc_2045_parameter(Header, Name) -> + gleam@result:'try'( + gleam@string:pop_grapheme(Header), + fun(_use0) -> + {Grapheme, Rest} = _use0, + case Grapheme of + <<"="/utf8>> -> + parse_rfc_2045_parameter_value(Rest, Name); + + _ -> + parse_rfc_2045_parameter( + Rest, + <> + ) + end + end + ). + +-spec parse_rfc_2045_parameters(binary(), list({binary(), binary()})) -> {ok, + list({binary(), binary()})} | + {error, nil}. +parse_rfc_2045_parameters(Header, Parameters) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {ok, gleam@list:reverse(Parameters)}; + + {ok, {<<";"/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {<<" "/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {<<"\t"/utf8>>, Rest}} -> + parse_rfc_2045_parameters(Rest, Parameters); + + {ok, {Grapheme, Rest@1}} -> + Acc = gleam@string:lowercase(Grapheme), + gleam@result:'try'( + parse_rfc_2045_parameter(Rest@1, Acc), + fun(_use0) -> + {Parameter, Rest@2} = _use0, + parse_rfc_2045_parameters(Rest@2, [Parameter | Parameters]) + end + ) + end. + +-spec parse_content_disposition_type(binary(), binary()) -> {ok, + content_disposition()} | + {error, nil}. +parse_content_disposition_type(Header, Name) -> + case gleam@string:pop_grapheme(Header) of + {error, nil} -> + {ok, {content_disposition, Name, []}}; + + {ok, {<<" "/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {<<"\t"/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {<<";"/utf8>>, Rest}} -> + Result = parse_rfc_2045_parameters(Rest, []), + gleam@result:map( + Result, + fun(Parameters) -> {content_disposition, Name, Parameters} end + ); + + {ok, {Grapheme, Rest@1}} -> + parse_content_disposition_type( + Rest@1, + <> + ) + end. + +-spec parse_content_disposition(binary()) -> {ok, content_disposition()} | + {error, nil}. +parse_content_disposition(Header) -> + parse_content_disposition_type(Header, <<""/utf8>>). + +-spec more_please_body( + fun((bitstring()) -> {ok, multipart_body()} | {error, nil}), + bitstring(), + bitstring() +) -> {ok, multipart_body()} | {error, nil}. +more_please_body(Continuation, Chunk, Existing) -> + _pipe = fun(More) -> + gleam@bool:guard( + More =:= <<>>, + {error, nil}, + fun() -> Continuation(<>) end + ) + end, + _pipe@1 = {more_required_for_body, Chunk, _pipe}, + {ok, _pipe@1}. + +-spec parse_body_loop(bitstring(), bitstring(), bitstring()) -> {ok, + multipart_body()} | + {error, nil}. +parse_body_loop(Data, Boundary, Body) -> + Dsize = erlang:byte_size(Data), + Bsize = erlang:byte_size(Boundary), + Required = 6 + Bsize, + case Data of + _ when Dsize < Required -> + more_please_body( + fun(_capture) -> parse_body_loop(_capture, Boundary, <<>>) end, + Body, + Data + ); + + <<13, 10, Data@1/binary>> -> + Desired = <<45, 45, Boundary/bitstring>>, + Size = erlang:byte_size(Desired), + Dsize@1 = erlang:byte_size(Data@1), + Prefix = gleam_stdlib:bit_array_slice(Data@1, 0, Size), + Rest = gleam_stdlib:bit_array_slice(Data@1, Size, Dsize@1 - Size), + case {Prefix =:= {ok, Desired}, Rest} of + {true, {ok, <<13, 10, _/binary>>}} -> + {ok, {multipart_body, Body, false, Data@1}}; + + {true, {ok, <<45, 45, Data@2/binary>>}} -> + {ok, {multipart_body, Body, true, Data@2}}; + + {false, _} -> + parse_body_loop( + Data@1, + Boundary, + <> + ); + + {_, _} -> + {error, nil} + end; + + <> -> + parse_body_loop(Data@3, Boundary, <>) + end. + +-spec parse_body_with_bit_array(bitstring(), bitstring()) -> {ok, + multipart_body()} | + {error, nil}. +parse_body_with_bit_array(Data, Boundary) -> + Bsize = erlang:byte_size(Boundary), + Prefix = gleam_stdlib:bit_array_slice(Data, 0, 2 + Bsize), + case Prefix =:= {ok, <<45, 45, Boundary/bitstring>>} of + true -> + {ok, {multipart_body, <<>>, false, Data}}; + + false -> + parse_body_loop(Data, Boundary, <<>>) + end. + +-spec parse_multipart_body(bitstring(), binary()) -> {ok, multipart_body()} | + {error, nil}. +parse_multipart_body(Data, Boundary) -> + _pipe = Boundary, + _pipe@1 = gleam_stdlib:identity(_pipe), + parse_body_with_bit_array(Data, _pipe@1). + +-spec method_from_dynamic(gleam@dynamic:dynamic_()) -> {ok, method()} | + {error, list(gleam@dynamic:decode_error())}. +method_from_dynamic(Value) -> + case gleam_http_native:decode_method(Value) of + {ok, Method} -> + {ok, Method}; + + {error, _} -> + {error, + [{decode_error, + <<"HTTP method"/utf8>>, + gleam@dynamic:classify(Value), + []}]} + end. + +-spec parse_header_value( + bitstring(), + list({binary(), binary()}), + bitstring(), + bitstring() +) -> {ok, multipart_headers()} | {error, nil}. +parse_header_value(Data, Headers, Name, Value) -> + Size = erlang:byte_size(Data), + case Data of + _ when Size < 4 -> + _pipe@2 = fun(Data@1) -> _pipe = Data@1, + _pipe@1 = skip_whitespace(_pipe), + parse_header_value(_pipe@1, Headers, Name, Value) end, + more_please_headers(_pipe@2, Data); + + <<13, 10, 13, 10, Data@2/binary>> -> + gleam@result:'try'( + gleam@bit_array:to_string(Name), + fun(Name@1) -> + gleam@result:map( + gleam@bit_array:to_string(Value), + fun(Value@1) -> + Headers@1 = gleam@list:reverse( + [{gleam@string:lowercase(Name@1), Value@1} | + Headers] + ), + {multipart_headers, Headers@1, Data@2} + end + ) + end + ); + + <<13, 10, 32, Data@3/binary>> -> + parse_header_value(Data@3, Headers, Name, Value); + + <<13, 10, 9, Data@3/binary>> -> + parse_header_value(Data@3, Headers, Name, Value); + + <<13, 10, Data@4/binary>> -> + gleam@result:'try'( + gleam@bit_array:to_string(Name), + fun(Name@2) -> + gleam@result:'try'( + gleam@bit_array:to_string(Value), + fun(Value@2) -> + Headers@2 = [{gleam@string:lowercase(Name@2), + Value@2} | + Headers], + parse_header_name(Data@4, Headers@2, <<>>) + end + ) + end + ); + + <> -> + Value@3 = <>, + parse_header_value(Rest, Headers, Name, Value@3); + + _ -> + {error, nil} + end. + +-spec parse_header_name(bitstring(), list({binary(), binary()}), bitstring()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_header_name(Data, Headers, Name) -> + case skip_whitespace(Data) of + <<58, Data@1/binary>> -> + _pipe = Data@1, + _pipe@1 = skip_whitespace(_pipe), + parse_header_value(_pipe@1, Headers, Name, <<>>); + + <> -> + parse_header_name(Data@2, Headers, <>); + + <<>> -> + more_please_headers( + fun(_capture) -> parse_header_name(_capture, Headers, Name) end, + Data + ) + end. + +-spec do_parse_headers(bitstring()) -> {ok, multipart_headers()} | {error, nil}. +do_parse_headers(Data) -> + case Data of + <<13, 10, 13, 10, Data@1/binary>> -> + {ok, {multipart_headers, [], Data@1}}; + + <<13, 10, Data@2/binary>> -> + parse_header_name(Data@2, [], <<>>); + + <<13>> -> + more_please_headers(fun do_parse_headers/1, Data); + + <<>> -> + more_please_headers(fun do_parse_headers/1, Data); + + _ -> + {error, nil} + end. + +-spec parse_headers_after_prelude(bitstring(), bitstring()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_headers_after_prelude(Data, Boundary) -> + Dsize = erlang:byte_size(Data), + Bsize = erlang:byte_size(Boundary), + Required_size = Bsize + 4, + gleam@bool:guard( + Dsize < Required_size, + more_please_headers( + fun(_capture) -> parse_headers_after_prelude(_capture, Boundary) end, + Data + ), + fun() -> + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data, 0, Required_size - 2), + fun(Prefix) -> + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data, 2 + Bsize, 2), + fun(Second) -> + Desired = <<45, 45, Boundary/bitstring>>, + gleam@bool:guard( + Prefix /= Desired, + {error, nil}, + fun() -> case Second =:= <<45, 45>> of + true -> + Rest_size = Dsize - Required_size, + gleam@result:map( + gleam_stdlib:bit_array_slice( + Data, + Required_size, + Rest_size + ), + fun(Data@1) -> + {multipart_headers, + [], + Data@1} + end + ); + + false -> + Start = Required_size - 2, + Rest_size@1 = (Dsize - Required_size) + + 2, + gleam@result:'try'( + gleam_stdlib:bit_array_slice( + Data, + Start, + Rest_size@1 + ), + fun(Data@2) -> + do_parse_headers(Data@2) + end + ) + end end + ) + end + ) + end + ) + end + ). + +-spec skip_preamble(bitstring(), bitstring()) -> {ok, multipart_headers()} | + {error, nil}. +skip_preamble(Data, Boundary) -> + Data_size = erlang:byte_size(Data), + Boundary_size = erlang:byte_size(Boundary), + Required = Boundary_size + 4, + case Data of + _ when Data_size < Required -> + more_please_headers( + fun(_capture) -> skip_preamble(_capture, Boundary) end, + Data + ); + + <<13, 10, 45, 45, Data@1/binary>> -> + case gleam_stdlib:bit_array_slice(Data@1, 0, Boundary_size) of + {ok, Prefix} when Prefix =:= Boundary -> + Start = Boundary_size, + Length = erlang:byte_size(Data@1) - Boundary_size, + gleam@result:'try'( + gleam_stdlib:bit_array_slice(Data@1, Start, Length), + fun(Rest) -> do_parse_headers(Rest) end + ); + + {ok, _} -> + skip_preamble(Data@1, Boundary); + + {error, _} -> + {error, nil} + end; + + <<_, Data@2/binary>> -> + skip_preamble(Data@2, Boundary) + end. + +-spec parse_multipart_headers(bitstring(), binary()) -> {ok, + multipart_headers()} | + {error, nil}. +parse_multipart_headers(Data, Boundary) -> + Boundary@1 = gleam_stdlib:identity(Boundary), + Prefix = <<45, 45, Boundary@1/bitstring>>, + case gleam_stdlib:bit_array_slice(Data, 0, erlang:byte_size(Prefix)) =:= {ok, + Prefix} of + true -> + parse_headers_after_prelude(Data, Boundary@1); + + false -> + skip_preamble(Data, Boundary@1) + end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl new file mode 100644 index 0000000..9d6d13e --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl @@ -0,0 +1,153 @@ +-module(gleam@http@cookie). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([defaults/1, set_header/3, parse/1]). +-export_type([same_site_policy/0, attributes/0]). + +-type same_site_policy() :: lax | strict | none. + +-type attributes() :: {attributes, + gleam@option:option(integer()), + gleam@option:option(binary()), + gleam@option:option(binary()), + boolean(), + boolean(), + gleam@option:option(same_site_policy())}. + +-spec same_site_to_string(same_site_policy()) -> binary(). +same_site_to_string(Policy) -> + case Policy of + lax -> + <<"Lax"/utf8>>; + + strict -> + <<"Strict"/utf8>>; + + none -> + <<"None"/utf8>> + end. + +-spec defaults(gleam@http:scheme()) -> attributes(). +defaults(Scheme) -> + {attributes, + none, + none, + {some, <<"/"/utf8>>}, + Scheme =:= https, + true, + {some, lax}}. + +-spec cookie_attributes_to_list(attributes()) -> list(list(binary())). +cookie_attributes_to_list(Attributes) -> + {attributes, Max_age, Domain, Path, Secure, Http_only, Same_site} = Attributes, + _pipe = [case Max_age of + {some, 0} -> + {some, [<<"Expires=Thu, 01 Jan 1970 00:00:00 GMT"/utf8>>]}; + + _ -> + none + end, gleam@option:map( + Max_age, + fun(Max_age@1) -> + [<<"Max-Age="/utf8>>, gleam@int:to_string(Max_age@1)] + end + ), gleam@option:map( + Domain, + fun(Domain@1) -> [<<"Domain="/utf8>>, Domain@1] end + ), gleam@option:map(Path, fun(Path@1) -> [<<"Path="/utf8>>, Path@1] end), case Secure of + true -> + {some, [<<"Secure"/utf8>>]}; + + false -> + none + end, case Http_only of + true -> + {some, [<<"HttpOnly"/utf8>>]}; + + false -> + none + end, gleam@option:map( + Same_site, + fun(Same_site@1) -> + [<<"SameSite="/utf8>>, same_site_to_string(Same_site@1)] + end + )], + gleam@list:filter_map( + _pipe, + fun(_capture) -> gleam@option:to_result(_capture, nil) end + ). + +-spec set_header(binary(), binary(), attributes()) -> binary(). +set_header(Name, Value, Attributes) -> + _pipe = [[Name, <<"="/utf8>>, Value] | + cookie_attributes_to_list(Attributes)], + _pipe@1 = gleam@list:map( + _pipe, + fun(_capture) -> gleam@string:join(_capture, <<""/utf8>>) end + ), + gleam@string:join(_pipe@1, <<"; "/utf8>>). + +-spec check_token(binary()) -> {ok, nil} | {error, nil}. +check_token(Token) -> + case gleam@string:pop_grapheme(Token) of + {error, nil} -> + {ok, nil}; + + {ok, {<<" "/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\t"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\r"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\n"/utf8>>, _}} -> + {error, nil}; + + {ok, {<<"\f"/utf8>>, _}} -> + {error, nil}; + + {ok, {_, Rest}} -> + check_token(Rest) + end. + +-spec parse(binary()) -> list({binary(), binary()}). +parse(Cookie_string) -> + _assert_subject = gleam@regex:from_string(<<"[,;]"/utf8>>), + {ok, Re} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/http/cookie"/utf8>>, + function => <<"parse"/utf8>>, + line => 101}) + end, + _pipe = gleam@regex:split(Re, Cookie_string), + gleam@list:filter_map( + _pipe, + fun(Pair) -> + case gleam@string:split_once(gleam@string:trim(Pair), <<"="/utf8>>) of + {ok, {<<""/utf8>>, _}} -> + {error, nil}; + + {ok, {Key, Value}} -> + Key@1 = gleam@string:trim(Key), + Value@1 = gleam@string:trim(Value), + gleam@result:then( + check_token(Key@1), + fun(_) -> + gleam@result:then( + check_token(Value@1), + fun(_) -> {ok, {Key@1, Value@1}} end + ) + end + ); + + {error, nil} -> + {error, nil} + end + end + ). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl new file mode 100644 index 0000000..630788d --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl @@ -0,0 +1,202 @@ +-module(gleam@http@request). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([to_uri/1, from_uri/1, get_header/2, set_header/3, prepend_header/3, set_body/2, map/2, path_segments/1, get_query/1, set_query/2, set_method/2, new/0, to/1, set_scheme/2, set_host/2, set_port/2, set_path/2, set_cookie/3, get_cookies/1]). +-export_type([request/1]). + +-type request(FYJ) :: {request, + gleam@http:method(), + list({binary(), binary()}), + FYJ, + gleam@http:scheme(), + binary(), + gleam@option:option(integer()), + binary(), + gleam@option:option(binary())}. + +-spec to_uri(request(any())) -> gleam@uri:uri(). +to_uri(Request) -> + {uri, + {some, gleam@http:scheme_to_string(erlang:element(5, Request))}, + none, + {some, erlang:element(6, Request)}, + erlang:element(7, Request), + erlang:element(8, Request), + erlang:element(9, Request), + none}. + +-spec from_uri(gleam@uri:uri()) -> {ok, request(binary())} | {error, nil}. +from_uri(Uri) -> + gleam@result:then( + begin + _pipe = erlang:element(2, Uri), + _pipe@1 = gleam@option:unwrap(_pipe, <<""/utf8>>), + gleam@http:scheme_from_string(_pipe@1) + end, + fun(Scheme) -> + gleam@result:then( + begin + _pipe@2 = erlang:element(4, Uri), + gleam@option:to_result(_pipe@2, nil) + end, + fun(Host) -> + Req = {request, + get, + [], + <<""/utf8>>, + Scheme, + Host, + erlang:element(5, Uri), + erlang:element(6, Uri), + erlang:element(7, Uri)}, + {ok, Req} + end + ) + end + ). + +-spec get_header(request(any()), binary()) -> {ok, binary()} | {error, nil}. +get_header(Request, Key) -> + gleam@list:key_find(erlang:element(3, Request), gleam@string:lowercase(Key)). + +-spec set_header(request(FYT), binary(), binary()) -> request(FYT). +set_header(Request, Key, Value) -> + Headers = gleam@list:key_set( + erlang:element(3, Request), + gleam@string:lowercase(Key), + Value + ), + erlang:setelement(3, Request, Headers). + +-spec prepend_header(request(FYW), binary(), binary()) -> request(FYW). +prepend_header(Request, Key, Value) -> + Headers = [{gleam@string:lowercase(Key), Value} | + erlang:element(3, Request)], + erlang:setelement(3, Request, Headers). + +-spec set_body(request(any()), FZB) -> request(FZB). +set_body(Req, Body) -> + {request, Method, Headers, _, Scheme, Host, Port, Path, Query} = Req, + {request, Method, Headers, Body, Scheme, Host, Port, Path, Query}. + +-spec map(request(FZD), fun((FZD) -> FZF)) -> request(FZF). +map(Request, Transform) -> + _pipe = erlang:element(4, Request), + _pipe@1 = Transform(_pipe), + set_body(Request, _pipe@1). + +-spec path_segments(request(any())) -> list(binary()). +path_segments(Request) -> + _pipe = erlang:element(8, Request), + gleam@uri:path_segments(_pipe). + +-spec get_query(request(any())) -> {ok, list({binary(), binary()})} | + {error, nil}. +get_query(Request) -> + case erlang:element(9, Request) of + {some, Query_string} -> + gleam@uri:parse_query(Query_string); + + none -> + {ok, []} + end. + +-spec set_query(request(FZP), list({binary(), binary()})) -> request(FZP). +set_query(Req, Query) -> + Pair = fun(T) -> + gleam@string_builder:from_strings( + [erlang:element(1, T), <<"="/utf8>>, erlang:element(2, T)] + ) + end, + Query@1 = begin + _pipe = Query, + _pipe@1 = gleam@list:map(_pipe, Pair), + _pipe@2 = gleam@list:intersperse( + _pipe@1, + gleam@string_builder:from_string(<<"&"/utf8>>) + ), + _pipe@3 = gleam@string_builder:concat(_pipe@2), + _pipe@4 = gleam@string_builder:to_string(_pipe@3), + {some, _pipe@4} + end, + erlang:setelement(9, Req, Query@1). + +-spec set_method(request(FZT), gleam@http:method()) -> request(FZT). +set_method(Req, Method) -> + erlang:setelement(2, Req, Method). + +-spec new() -> request(binary()). +new() -> + {request, + get, + [], + <<""/utf8>>, + https, + <<"localhost"/utf8>>, + none, + <<""/utf8>>, + none}. + +-spec to(binary()) -> {ok, request(binary())} | {error, nil}. +to(Url) -> + _pipe = Url, + _pipe@1 = gleam@uri:parse(_pipe), + gleam@result:then(_pipe@1, fun from_uri/1). + +-spec set_scheme(request(GAA), gleam@http:scheme()) -> request(GAA). +set_scheme(Req, Scheme) -> + erlang:setelement(5, Req, Scheme). + +-spec set_host(request(GAD), binary()) -> request(GAD). +set_host(Req, Host) -> + erlang:setelement(6, Req, Host). + +-spec set_port(request(GAG), integer()) -> request(GAG). +set_port(Req, Port) -> + erlang:setelement(7, Req, {some, Port}). + +-spec set_path(request(GAJ), binary()) -> request(GAJ). +set_path(Req, Path) -> + erlang:setelement(8, Req, Path). + +-spec set_cookie(request(GAM), binary(), binary()) -> request(GAM). +set_cookie(Req, Name, Value) -> + New_cookie_string = gleam@string:join([Name, Value], <<"="/utf8>>), + {Cookies_string@2, Headers@1} = case gleam@list:key_pop( + erlang:element(3, Req), + <<"cookie"/utf8>> + ) of + {ok, {Cookies_string, Headers}} -> + Cookies_string@1 = gleam@string:join( + [Cookies_string, New_cookie_string], + <<"; "/utf8>> + ), + {Cookies_string@1, Headers}; + + {error, nil} -> + {New_cookie_string, erlang:element(3, Req)} + end, + erlang:setelement( + 3, + Req, + [{<<"cookie"/utf8>>, Cookies_string@2} | Headers@1] + ). + +-spec get_cookies(request(any())) -> list({binary(), binary()}). +get_cookies(Req) -> + {request, _, Headers, _, _, _, _, _, _} = Req, + _pipe = Headers, + _pipe@1 = gleam@list:filter_map( + _pipe, + fun(Header) -> + {Name, Value} = Header, + case Name of + <<"cookie"/utf8>> -> + {ok, gleam@http@cookie:parse(Value)}; + + _ -> + {error, nil} + end + end + ), + gleam@list:flatten(_pipe@1). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl new file mode 100644 index 0000000..b073c1d --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl @@ -0,0 +1,97 @@ +-module(gleam@http@response). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/1, get_header/2, set_header/3, prepend_header/3, set_body/2, try_map/2, map/2, redirect/1, get_cookies/1, set_cookie/4, expire_cookie/3]). +-export_type([response/1]). + +-type response(GFN) :: {response, integer(), list({binary(), binary()}), GFN}. + +-spec new(integer()) -> response(binary()). +new(Status) -> + {response, Status, [], <<""/utf8>>}. + +-spec get_header(response(any()), binary()) -> {ok, binary()} | {error, nil}. +get_header(Response, Key) -> + gleam@list:key_find( + erlang:element(3, Response), + gleam@string:lowercase(Key) + ). + +-spec set_header(response(GGC), binary(), binary()) -> response(GGC). +set_header(Response, Key, Value) -> + Headers = gleam@list:key_set( + erlang:element(3, Response), + gleam@string:lowercase(Key), + Value + ), + erlang:setelement(3, Response, Headers). + +-spec prepend_header(response(GGF), binary(), binary()) -> response(GGF). +prepend_header(Response, Key, Value) -> + Headers = [{gleam@string:lowercase(Key), Value} | + erlang:element(3, Response)], + erlang:setelement(3, Response, Headers). + +-spec set_body(response(any()), GGK) -> response(GGK). +set_body(Response, Body) -> + {response, Status, Headers, _} = Response, + {response, Status, Headers, Body}. + +-spec try_map(response(GFO), fun((GFO) -> {ok, GFQ} | {error, GFR})) -> {ok, + response(GFQ)} | + {error, GFR}. +try_map(Response, Transform) -> + gleam@result:then( + Transform(erlang:element(4, Response)), + fun(Body) -> {ok, set_body(Response, Body)} end + ). + +-spec map(response(GGM), fun((GGM) -> GGO)) -> response(GGO). +map(Response, Transform) -> + _pipe = erlang:element(4, Response), + _pipe@1 = Transform(_pipe), + set_body(Response, _pipe@1). + +-spec redirect(binary()) -> response(binary()). +redirect(Uri) -> + {response, + 303, + [{<<"location"/utf8>>, Uri}], + gleam@string:append(<<"You are being redirected to "/utf8>>, Uri)}. + +-spec get_cookies(response(any())) -> list({binary(), binary()}). +get_cookies(Resp) -> + {response, _, Headers, _} = Resp, + _pipe = Headers, + _pipe@1 = gleam@list:filter_map( + _pipe, + fun(Header) -> + {Name, Value} = Header, + case Name of + <<"set-cookie"/utf8>> -> + {ok, gleam@http@cookie:parse(Value)}; + + _ -> + {error, nil} + end + end + ), + gleam@list:flatten(_pipe@1). + +-spec set_cookie( + response(GGT), + binary(), + binary(), + gleam@http@cookie:attributes() +) -> response(GGT). +set_cookie(Response, Name, Value, Attributes) -> + prepend_header( + Response, + <<"set-cookie"/utf8>>, + gleam@http@cookie:set_header(Name, Value, Attributes) + ). + +-spec expire_cookie(response(GGW), binary(), gleam@http@cookie:attributes()) -> response(GGW). +expire_cookie(Response, Name, Attributes) -> + Attrs = erlang:setelement(2, Attributes, {some, 0}), + set_cookie(Response, Name, <<""/utf8>>, Attrs). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl new file mode 100644 index 0000000..d07b31f --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl @@ -0,0 +1,82 @@ +-module(gleam@http@service). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([map_response_body/2, prepend_response_header/3, method_override/1]). + +-spec map_response_body( + fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJM)), + fun((GJM) -> GJP) +) -> fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJP)). +map_response_body(Service, Mapper) -> + fun(Req) -> _pipe = Req, + _pipe@1 = Service(_pipe), + gleam@http@response:map(_pipe@1, Mapper) end. + +-spec prepend_response_header( + fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)), + binary(), + binary() +) -> fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)). +prepend_response_header(Service, Key, Value) -> + fun(Req) -> _pipe = Req, + _pipe@1 = Service(_pipe), + gleam@http@response:prepend_header(_pipe@1, Key, Value) end. + +-spec ensure_post(gleam@http@request:request(GJY)) -> {ok, + gleam@http@request:request(GJY)} | + {error, nil}. +ensure_post(Req) -> + case erlang:element(2, Req) of + post -> + {ok, Req}; + + _ -> + {error, nil} + end. + +-spec get_override_method(gleam@http@request:request(any())) -> {ok, + gleam@http:method()} | + {error, nil}. +get_override_method(Request) -> + gleam@result:then( + gleam@http@request:get_query(Request), + fun(Query_params) -> + gleam@result:then( + gleam@list:key_find(Query_params, <<"_method"/utf8>>), + fun(Method) -> + gleam@result:then( + gleam@http:parse_method(Method), + fun(Method@1) -> case Method@1 of + put -> + {ok, Method@1}; + + patch -> + {ok, Method@1}; + + delete -> + {ok, Method@1}; + + _ -> + {error, nil} + end end + ) + end + ) + end + ). + +-spec method_override( + fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG)) +) -> fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG)). +method_override(Service) -> + fun(Request) -> _pipe = Request, + _pipe@1 = ensure_post(_pipe), + _pipe@2 = gleam@result:then(_pipe@1, fun get_override_method/1), + _pipe@3 = gleam@result:map( + _pipe@2, + fun(_capture) -> + gleam@http@request:set_method(Request, _capture) + end + ), + _pipe@4 = gleam@result:unwrap(_pipe@3, Request), + Service(_pipe@4) end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http.app.src b/aoc2023/build/packages/gleam_http/src/gleam_http.app.src new file mode 100644 index 0000000..c37ad54 --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam_http.app.src @@ -0,0 +1,12 @@ +{application, gleam_http, [ + {vsn, "3.5.2"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "Types and functions for Gleam HTTP clients and servers"}, + {modules, [gleam@http, + gleam@http@cookie, + gleam@http@request, + gleam@http@response, + gleam@http@service]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl b/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl new file mode 100644 index 0000000..bb499bb --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl @@ -0,0 +1,88 @@ +-module(gleam_http_native). +-export([decode_method/1]). + +decode_method(Term) -> + case Term of + "connect" -> {ok, connect}; + "delete" -> {ok, delete}; + "get" -> {ok, get}; + "head" -> {ok, head}; + "options" -> {ok, options}; + "patch" -> {ok, patch}; + "post" -> {ok, post}; + "put" -> {ok, put}; + "trace" -> {ok, trace}; + "CONNECT" -> {ok, connect}; + "DELETE" -> {ok, delete}; + "GET" -> {ok, get}; + "HEAD" -> {ok, head}; + "OPTIONS" -> {ok, options}; + "PATCH" -> {ok, patch}; + "POST" -> {ok, post}; + "PUT" -> {ok, put}; + "TRACE" -> {ok, trace}; + "Connect" -> {ok, connect}; + "Delete" -> {ok, delete}; + "Get" -> {ok, get}; + "Head" -> {ok, head}; + "Options" -> {ok, options}; + "Patch" -> {ok, patch}; + "Post" -> {ok, post}; + "Put" -> {ok, put}; + "Trace" -> {ok, trace}; + 'connect' -> {ok, connect}; + 'delete' -> {ok, delete}; + 'get' -> {ok, get}; + 'head' -> {ok, head}; + 'options' -> {ok, options}; + 'patch' -> {ok, patch}; + 'post' -> {ok, post}; + 'put' -> {ok, put}; + 'trace' -> {ok, trace}; + 'CONNECT' -> {ok, connect}; + 'DELETE' -> {ok, delete}; + 'GET' -> {ok, get}; + 'HEAD' -> {ok, head}; + 'OPTIONS' -> {ok, options}; + 'PATCH' -> {ok, patch}; + 'POST' -> {ok, post}; + 'PUT' -> {ok, put}; + 'TRACE' -> {ok, trace}; + 'Connect' -> {ok, connect}; + 'Delete' -> {ok, delete}; + 'Get' -> {ok, get}; + 'Head' -> {ok, head}; + 'Options' -> {ok, options}; + 'Patch' -> {ok, patch}; + 'Post' -> {ok, post}; + 'Put' -> {ok, put}; + 'Trace' -> {ok, trace}; + <<"connect">> -> {ok, connect}; + <<"delete">> -> {ok, delete}; + <<"get">> -> {ok, get}; + <<"head">> -> {ok, head}; + <<"options">> -> {ok, options}; + <<"patch">> -> {ok, patch}; + <<"post">> -> {ok, post}; + <<"put">> -> {ok, put}; + <<"trace">> -> {ok, trace}; + <<"CONNECT">> -> {ok, connect}; + <<"DELETE">> -> {ok, delete}; + <<"GET">> -> {ok, get}; + <<"HEAD">> -> {ok, head}; + <<"OPTIONS">> -> {ok, options}; + <<"PATCH">> -> {ok, patch}; + <<"POST">> -> {ok, post}; + <<"PUT">> -> {ok, put}; + <<"TRACE">> -> {ok, trace}; + <<"Connect">> -> {ok, connect}; + <<"Delete">> -> {ok, delete}; + <<"Get">> -> {ok, get}; + <<"Head">> -> {ok, head}; + <<"Options">> -> {ok, options}; + <<"Patch">> -> {ok, patch}; + <<"Post">> -> {ok, post}; + <<"Put">> -> {ok, put}; + <<"Trace">> -> {ok, trace}; + _ -> {error, nil} + end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs b/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs new file mode 100644 index 0000000..c871a8b --- /dev/null +++ b/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs @@ -0,0 +1,38 @@ +import { Ok, Error } from "./gleam.mjs"; +import { + Get, + Post, + Head, + Put, + Delete, + Trace, + Connect, + Options, + Patch, +} from "./gleam/http.mjs"; + +export function decode_method(value) { + try { + switch (value.toLowerCase()) { + case "get": + return new Ok(new Get()); + case "post": + return new Ok(new Post()); + case "head": + return new Ok(new Head()); + case "put": + return new Ok(new Put()); + case "delete": + return new Ok(new Delete()); + case "trace": + return new Ok(new Trace()); + case "connect": + return new Ok(new Connect()); + case "options": + return new Ok(new Options()); + case "patch": + return new Ok(new Patch()); + } + } catch {} + return new Error(undefined); +} diff --git a/aoc2023/build/packages/gleam_httpc/LICENSE b/aoc2023/build/packages/gleam_httpc/LICENSE new file mode 100644 index 0000000..59e1345 --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright {{copyright_year}}, {{author_name}} <{{author_email}}>. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/aoc2023/build/packages/gleam_httpc/README.md b/aoc2023/build/packages/gleam_httpc/README.md new file mode 100644 index 0000000..c2363c5 --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/README.md @@ -0,0 +1,52 @@ +# httpc +GitHub release +Discord chat +![CI](https://github.com/gleam-lang/httpc/workflows/test/badge.svg?branch=main) + +Bindings to Erlang's built in HTTP client, `httpc`. + +```gleam +import gleam/httpc +import gleam/http.{Get} +import gleam/http/request +import gleam/http/response +import gleeunit/should + +pub fn main() { + // Prepare a HTTP request record + let request = request.new() + |> request.set_method(Get) + |> request.set_host("test-api.service.hmrc.gov.uk") + |> request.set_path("/hello/world") + |> request.prepend_header("accept", "application/vnd.hmrc.1.0+json") + + // Send the HTTP request to the server + try resp = httpc.send(req) + + // We get a response record back + resp.status + |> should.equal(200) + + resp + |> response.get_header("content-type") + |> should.equal(Ok("application/json")) + + resp.body + |> should.equal("{\"message\":\"Hello World\"}") + + Ok(resp) +} +``` + +## Installation + +```shell +gleam add gleam_httpc +``` + +## Use with Erlang/OTP versions older than 26.0 + +Older versions of HTTPC do not verify TLS connections by default, so with them +your connection may not be secure when using this library. Consider upgrading to +a newer version of Erlang/OTP, or using a different HTTP client such as +[hackney](https://github.com/gleam-lang/hackney). diff --git a/aoc2023/build/packages/gleam_httpc/gleam.toml b/aoc2023/build/packages/gleam_httpc/gleam.toml new file mode 100644 index 0000000..d623a94 --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/gleam.toml @@ -0,0 +1,23 @@ +name = "gleam_httpc" +version = "2.1.1" +gleam = ">= 0.32.0" + +licences = ["Apache-2.0"] +description = "Gleam bindings to Erlang's built in HTTP client, httpc" + +repository = { type = "github", user = "gleam-lang", repo = "httpc" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] + +[erlang] +extra_applications = ["inets", "ssl"] + +[dependencies] +gleam_stdlib = "~> 0.32" +gleam_http = "~> 3.0" + +[dev-dependencies] +gleeunit = "~> 0.6" +gleam_erlang = "~> 0.9" diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam b/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam new file mode 100644 index 0000000..cf166c3 --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam @@ -0,0 +1,105 @@ +import gleam/dynamic.{type Dynamic} +import gleam/http.{type Method} +import gleam/http/response.{type Response, Response} +import gleam/http/request.{type Request} +import gleam/bit_array +import gleam/result +import gleam/list +import gleam/uri + +type Charlist + +@external(erlang, "erlang", "binary_to_list") +fn binary_to_list(a: String) -> Charlist + +@external(erlang, "erlang", "list_to_binary") +fn list_to_binary(a: Charlist) -> String + +type ErlHttpOption + +type BodyFormat { + Binary +} + +type ErlOption { + BodyFormat(BodyFormat) +} + +@external(erlang, "httpc", "request") +fn erl_request( + a: Method, + b: #(Charlist, List(#(Charlist, Charlist)), Charlist, BitArray), + c: List(ErlHttpOption), + d: List(ErlOption), +) -> Result( + #(#(Charlist, Int, Charlist), List(#(Charlist, Charlist)), BitArray), + Dynamic, +) + +@external(erlang, "httpc", "request") +fn erl_request_no_body( + a: Method, + b: #(Charlist, List(#(Charlist, Charlist))), + c: List(ErlHttpOption), + d: List(ErlOption), +) -> Result( + #(#(Charlist, Int, Charlist), List(#(Charlist, Charlist)), BitArray), + Dynamic, +) + +fn charlist_header(header: #(String, String)) -> #(Charlist, Charlist) { + let #(k, v) = header + #(binary_to_list(k), binary_to_list(v)) +} + +fn string_header(header: #(Charlist, Charlist)) -> #(String, String) { + let #(k, v) = header + #(list_to_binary(k), list_to_binary(v)) +} + +// TODO: test +// TODO: refine error type +pub fn send_bits(req: Request(BitArray)) -> Result(Response(BitArray), Dynamic) { + let erl_url = + req + |> request.to_uri + |> uri.to_string + |> binary_to_list + let erl_headers = list.map(req.headers, charlist_header) + let erl_http_options = [] + let erl_options = [BodyFormat(Binary)] + + use response <- result.then(case req.method { + http.Options | http.Head | http.Get -> { + let erl_req = #(erl_url, erl_headers) + erl_request_no_body(req.method, erl_req, erl_http_options, erl_options) + } + _ -> { + let erl_content_type = + req + |> request.get_header("content-type") + |> result.unwrap("application/octet-stream") + |> binary_to_list + let erl_req = #(erl_url, erl_headers, erl_content_type, req.body) + erl_request(req.method, erl_req, erl_http_options, erl_options) + } + }) + + let #(#(_version, status, _status), headers, resp_body) = response + Ok(Response(status, list.map(headers, string_header), resp_body)) +} + +// TODO: test +// TODO: refine error type +pub fn send(req: Request(String)) -> Result(Response(String), Dynamic) { + use resp <- result.then( + req + |> request.map(bit_array.from_string) + |> send_bits, + ) + + case bit_array.to_string(resp.body) { + Ok(body) -> Ok(response.set_body(resp, body)) + Error(_) -> Error(dynamic.from("Response body was not valid UTF-8")) + } +} diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl b/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl new file mode 100644 index 0000000..1d634df --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl @@ -0,0 +1,118 @@ +-module(gleam@httpc). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([send_bits/1, send/1]). +-export_type([charlist/0, erl_http_option/0, body_format/0, erl_option/0]). + +-type charlist() :: any(). + +-type erl_http_option() :: any(). + +-type body_format() :: binary. + +-type erl_option() :: {body_format, body_format()}. + +-spec charlist_header({binary(), binary()}) -> {charlist(), charlist()}. +charlist_header(Header) -> + {K, V} = Header, + {erlang:binary_to_list(K), erlang:binary_to_list(V)}. + +-spec string_header({charlist(), charlist()}) -> {binary(), binary()}. +string_header(Header) -> + {K, V} = Header, + {erlang:list_to_binary(K), erlang:list_to_binary(V)}. + +-spec send_bits(gleam@http@request:request(bitstring())) -> {ok, + gleam@http@response:response(bitstring())} | + {error, gleam@dynamic:dynamic_()}. +send_bits(Req) -> + Erl_url = begin + _pipe = Req, + _pipe@1 = gleam@http@request:to_uri(_pipe), + _pipe@2 = gleam@uri:to_string(_pipe@1), + erlang:binary_to_list(_pipe@2) + end, + Erl_headers = gleam@list:map(erlang:element(3, Req), fun charlist_header/1), + Erl_http_options = [], + Erl_options = [{body_format, binary}], + gleam@result:then(case erlang:element(2, Req) of + options -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + head -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + get -> + Erl_req = {Erl_url, Erl_headers}, + httpc:request( + erlang:element(2, Req), + Erl_req, + Erl_http_options, + Erl_options + ); + + _ -> + Erl_content_type = begin + _pipe@3 = Req, + _pipe@4 = gleam@http@request:get_header( + _pipe@3, + <<"content-type"/utf8>> + ), + _pipe@5 = gleam@result:unwrap( + _pipe@4, + <<"application/octet-stream"/utf8>> + ), + erlang:binary_to_list(_pipe@5) + end, + Erl_req@1 = {Erl_url, + Erl_headers, + Erl_content_type, + erlang:element(4, Req)}, + httpc:request( + erlang:element(2, Req), + Erl_req@1, + Erl_http_options, + Erl_options + ) + end, fun(Response) -> + {{_, Status, _}, Headers, Resp_body} = Response, + {ok, + {response, + Status, + gleam@list:map(Headers, fun string_header/1), + Resp_body}} + end). + +-spec send(gleam@http@request:request(binary())) -> {ok, + gleam@http@response:response(binary())} | + {error, gleam@dynamic:dynamic_()}. +send(Req) -> + gleam@result:then( + begin + _pipe = Req, + _pipe@1 = gleam@http@request:map(_pipe, fun gleam_stdlib:identity/1), + send_bits(_pipe@1) + end, + fun(Resp) -> case gleam@bit_array:to_string(erlang:element(4, Resp)) of + {ok, Body} -> + {ok, gleam@http@response:set_body(Resp, Body)}; + + {error, _} -> + {error, + gleam@dynamic:from( + <<"Response body was not valid UTF-8"/utf8>> + )} + end end + ). diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src b/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src new file mode 100644 index 0000000..c0d2b20 --- /dev/null +++ b/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src @@ -0,0 +1,12 @@ +{application, gleam_httpc, [ + {vsn, "2.1.1"}, + {applications, [gleam_erlang, + gleam_http, + gleam_stdlib, + gleeunit, + inets, + ssl]}, + {description, "Gleam bindings to Erlang's built in HTTP client, httpc"}, + {modules, [gleam@httpc]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_otp/LICENCE b/aoc2023/build/packages/gleam_otp/LICENCE new file mode 100644 index 0000000..619ec77 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/LICENCE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2019, Louis Pilfold . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/aoc2023/build/packages/gleam_otp/README.md b/aoc2023/build/packages/gleam_otp/README.md new file mode 100644 index 0000000..3c313a1 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/README.md @@ -0,0 +1,91 @@ +# Gleam OTP + +GitHub release +Discord chat +![CI](https://github.com/gleam-lang/otp/workflows/test/badge.svg?branch=main) + +A Gleam library for building fault tolerant multi-core programs using the +actor model. It is compatible with Erlang's OTP framework. + +This library is experimental and will likely have many breaking changes in the +future! + +Gleam’s actor system is built with a few primary goals: + +- Full type safety of actors and messages. +- Be compatible with Erlang’s OTP actor framework. +- Provide fault tolerance and self-healing through supervisors. +- Have equivalent performance to Erlang’s OTP. + +This library documents its abstractions and functionality, but you may also wish +to read the documentation or other material on Erlang’s OTP framework to get a +fuller understanding of OTP, the problems it solves, and and the motivations for +its design. + +## Usage + +Add this library to your Gleam project. + +```shell +gleam add gleam_otp +``` + +## Actor hierarchy + +This library provides several different types of actor that can be used in +Gleam programs. + +### Process + +The process is the lowest level building block of OTP, all other actors are +built on top of processes either directly or indirectly. Typically this +abstraction would be not be used very often in Gleam applications, favour +other actor types that provide more functionality. + +Gleam's process module is defined in the `gleam_erlang` library. + +[[Documentation]](https://hexdocs.pm/gleam_erlang/gleam/erlang/process.html) + +### Actor + +The `actor` is the most commonly used process type in Gleam and serves as a good +building block for other abstractions. Like Erlang's `gen_server` it handles +OTP's system messages automatically to enable OTP's debugging and tracing +functionality. + +[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/actor.html) + +### Task + +A task is a kind of process that performs a single task and then shuts down. +Commonly tasks are used to convert sequential code into concurrent code by +performing computation in another process. + +[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/task.html) + +### Supervisor + +Supervisors is a process that starts and then supervises a group of processes, +restarting them if they crash. Supervisors can start other supervisors, +resulting in a hierarchical process structure called a supervision tree, +providing fault tolerance to a Gleam application. + +[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/supervisor.html) + +## Limitations and known issues + +This library is experimental there are some limitations that not yet been resolved. + +- There is no support for named processes. They are untyped global mutable + variables which may be uninitialized, more research is needed to find a + suitable type safe alternative. +- There are relatively few actor abstractions provided by this library. More + will be added in the future. +- Actors do not yet support all OTP system messages. Unsupported messages are + dropped. +- Supervisors do not yet support different shutdown periods per child. In + practice this means that children that are supervisors do not get an + unlimited amount of time to shut down, as is expected in Erlang or Elixir. +- This library has not seen much testing compared to the Erlang OTP + libraries, both in terms of unit tests and real world testing in + applications. diff --git a/aoc2023/build/packages/gleam_otp/gleam.toml b/aoc2023/build/packages/gleam_otp/gleam.toml new file mode 100644 index 0000000..26e451b --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/gleam.toml @@ -0,0 +1,19 @@ +name = "gleam_otp" +version = "0.8.0" +licences = ["Apache-2.0"] +description = "Fault tolerant multicore Gleam programs with OTP" + +gleam = ">= 0.32.0" + +repository = { type = "github", user = "gleam-lang", repo = "otp" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] + +[dependencies] +gleam_stdlib = "~> 0.32" +gleam_erlang = "~> 0.22" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl new file mode 100644 index 0000000..85677d1 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl @@ -0,0 +1,4 @@ +-record(continue, { + state :: any(), + selector :: gleam@option:option(gleam@erlang@process:selector(any())) +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl new file mode 100644 index 0000000..75faa95 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl @@ -0,0 +1 @@ +-record(ready, {state :: any(), selector :: gleam@erlang@process:selector(any())}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl new file mode 100644 index 0000000..5287439 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl @@ -0,0 +1,5 @@ +-record(spec, { + init :: fun(() -> gleam@otp@actor:init_result(any(), any())), + init_timeout :: integer(), + loop :: fun((any(), any()) -> gleam@otp@actor:next(any(), any())) +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl new file mode 100644 index 0000000..3ed0b01 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl @@ -0,0 +1,5 @@ +-record(intensity_tracker, { + limit :: integer(), + period :: integer(), + events :: list(integer()) +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl new file mode 100644 index 0000000..7afd07f --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl @@ -0,0 +1,5 @@ +-record(child_spec, { + start :: fun((any()) -> {ok, gleam@erlang@process:subject(any())} | + {error, gleam@otp@actor:start_error()}), + returning :: fun((any(), gleam@erlang@process:subject(any())) -> any()) +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl new file mode 100644 index 0000000..b10bd9f --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl @@ -0,0 +1,6 @@ +-record(spec, { + argument :: any(), + max_frequency :: integer(), + frequency_period :: integer(), + init :: fun((gleam@otp@supervisor:children(any())) -> gleam@otp@supervisor:children(any())) +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl new file mode 100644 index 0000000..99ab4cb --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl @@ -0,0 +1,7 @@ +-record(status_info, { + module :: gleam@erlang@atom:atom_(), + parent :: gleam@erlang@process:pid_(), + mode :: gleam@otp@system:mode(), + debug_state :: gleam@otp@system:debug_state(), + state :: gleam@dynamic:dynamic_() +}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl new file mode 100644 index 0000000..7c83874 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl @@ -0,0 +1 @@ +-record(exit, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl new file mode 100644 index 0000000..959bea8 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl @@ -0,0 +1,6 @@ +-record(task, { + owner :: gleam@erlang@process:pid_(), + pid :: gleam@erlang@process:pid_(), + monitor :: gleam@erlang@process:process_monitor(), + selector :: gleam@erlang@process:selector(gleam@otp@task:message(any())) +}). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam new file mode 100644 index 0000000..9f6a6c4 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam @@ -0,0 +1,504 @@ +//// This module provides the _Actor_ abstraction, one of the most common +//// building blocks of Gleam OTP programs. +//// +//// An Actor is a process like any other BEAM process and can be be used to hold +//// state, execute code, and communicate with other processes by sending and +//// receiving messages. The advantage of using the actor abstraction over a bare +//// process is that it provides a single interface for commonly needed +//// functionality, including support for the [tracing and debugging +//// features in OTP](erlang-sys). +//// +//// Gleam's Actor is similar to Erlang's `gen_server` and Elixir's `GenServer` +//// but differs in that it offers a fully typed interface. This different API is +//// why Gleam uses the name Actor rather than some variation of generic-server. +//// +//// [erlang-sys]: https://www.erlang.org/doc/man/sys.html +//// +//// ## Example +//// +//// An Actor can be used to create a client-server interaction between an Actor +//// (the server) and other processes (the clients). In this example we have an +//// Actor that works as a stack, allowing clients to push and pop elements. +//// +//// ```gleam +//// pub fn main() { +//// // Start the actor with initial state of an empty list, and the +//// // `handle_message` callback function (defined below). +//// // We assert that it starts successfully. +//// // +//// // In real-world Gleam OTP programs we would likely write a wrapper functions +//// // called `start`, `push` `pop`, `shutdown` to start and interact with the +//// // Actor. We are not doing that here for the sake of showing how the Actor +//// // API works. +//// let assert Ok(actor) = actor.start([], handle_message) +//// +//// // We can send a message to the actor to push elements onto the stack. +//// process.send(actor, Push("Joe")) +//// process.send(actor, Push("Mike")) +//// process.send(actor, Push("Robert")) +//// +//// // The `Push` message expects no response, these messages are sent purely for +//// // the side effect of mutating the state held by the actor. +//// // +//// // We can also send the `Pop` message to take a value off of the actor's +//// // stack. This message expects a response, so we use `process.call` to send a +//// // message and wait until a reply is received. +//// // +//// // In this instance we are giving the actor 10 milliseconds to reply, if the +//// // `call` function doesn't get a reply within this time it will panic and +//// // crash the client process. +//// let assert Ok("Robert") = process.call(actor, Pop, 10) +//// let assert Ok("Mike") = process.call(actor, Pop, 10) +//// let assert Ok("Joe") = process.call(actor, Pop, 10) +//// +//// // The stack is now empty, so if we pop again the actor replies with an error. +//// let assert Error(Nil) = process.call(actor, Pop, 10) +//// +//// // Lastly, we can send a message to the actor asking it to shut down. +//// process.send(actor, Shutdown) +//// } +//// ``` +//// +//// Here is the code that is used to implement this actor: +//// +//// ```gleam +//// // First step of implementing the stack Actor is to define the message type that +//// // it can receive. +//// // +//// // The type of the elements in the stack is no fixed so a type parameter is used +//// // for it instead of a concrete type such as `String` or `Int`. +//// pub type Message(element) { +//// // The `Shutdown` message is used to tell the actor to stop. +//// // It is the simplest message type, it contains no data. +//// Shutdown +//// +//// // The `Push` message is used to add a new element to the stack. +//// // It contains the item to add, the type of which is the `element` +//// // parameterised type. +//// Push(push: element) +//// +//// // The `Pop` message is used to remove an element from the stack. +//// // It contains a `Subject`, which is used to send the response back to the +//// // message sender. In this case the reply is of type `Result(element, Nil)`. +//// Pop(reply_with: Subject(Result(element, Nil))) +//// } +//// +//// // The last part is to implement the `handle_message` callback function. +//// // +//// // This function is called by the Actor each for each message it receives. +//// // Actor is single threaded only does one thing at a time, so it handles +//// // messages sequentially and one at a time, in the order they are received. +//// // +//// // The function takes the message and the current state, and returns a data +//// // structure that indicates what to do next, along with the new state. +//// fn handle_message( +//// message: Message(e), +//// stack: List(e), +//// ) -> actor.Next(Message(e), List(e)) { +//// case message { +//// // For the `Shutdown` message we return the `actor.Stop` value, which causes +//// // the actor to discard any remaining messages and stop. +//// Shutdown -> actor.Stop(process.Normal) +//// +//// // For the `Push` message we add the new element to the stack and return +//// // `actor.continue` with this new stack, causing the actor to process any +//// // queued messages or wait for more. +//// Push(value) -> { +//// let new_state = [value, ..stack] +//// actor.continue(new_state) +//// } +//// +//// // For the `Pop` message we attempt to remove an element from the stack, +//// // sending it or an error back to the caller, before continuing. +//// Pop(client) -> +//// case stack { +//// [] -> { +//// // When the stack is empty we can't pop an element, so we send an +//// // error back. +//// process.send(client, Error(Nil)) +//// actor.continue([]) +//// } +//// +//// [first, ..rest] -> { +//// // Otherwise we send the first element back and use the remaining +//// // elements as the new state. +//// process.send(client, Ok(first)) +//// actor.continue(rest) +//// } +//// } +//// } +//// } +//// ``` + +import gleam/erlang/process.{ + type ExitReason, type Pid, type Selector, type Subject, Abnormal, +} +import gleam/erlang/charlist.{type Charlist} +import gleam/otp/system.{ + type DebugState, type Mode, type StatusInfo, type SystemMessage, GetState, + GetStatus, Resume, Running, StatusInfo, Suspend, Suspended, +} +import gleam/string +import gleam/dynamic.{type Dynamic} +import gleam/erlang/atom +import gleam/option.{type Option, None, Some} + +type Message(message) { + /// A regular message excepted by the process + Message(message) + + /// An OTP system message, for debugging or maintenance + System(SystemMessage) + + /// An unexpected message + Unexpected(Dynamic) +} + +/// The type used to indicate what to do after handling a message. +/// +pub type Next(message, state) { + /// Continue handling messages. + /// + Continue(state: state, selector: Option(Selector(message))) + + /// Stop handling messages and shut down. + /// + Stop(ExitReason) +} + +pub fn continue(state: state) -> Next(message, state) { + Continue(state, None) +} + +pub fn with_selector( + value: Next(message, state), + selector: Selector(message), +) -> Next(message, state) { + case value { + Continue(state, _) -> Continue(state, Some(selector)) + _ -> value + } +} + +/// The type used to indicate whether an actor has started successfully or not. +/// +pub type InitResult(state, message) { + /// The actor has successfully initialised. The actor can start handling + /// messages and actor's channel sender can be returned to the parent + /// process. + /// + Ready(state: state, selector: Selector(message)) + + /// The actor has failed to initialise. The actor shuts down and an error is + /// returned to the parent process. + /// + Failed(String) +} + +type Self(state, msg) { + Self( + mode: Mode, + parent: Pid, + state: state, + subject: Subject(msg), + selector: Selector(Message(msg)), + debug_state: DebugState, + message_handler: fn(msg, state) -> Next(msg, state), + ) +} + +/// This data structure holds all the values required by the `start_spec` +/// function in order to create an actor. +/// +/// If you do not need to configure the initialisation behaviour of your actor +/// consider using the `start` function. +/// +pub type Spec(state, msg) { + Spec( + /// The initialisation functionality for the actor. This function is called + /// just after the actor starts but before the channel sender is returned + /// to the parent. + /// + /// This function is used to ensure that any required data or state is + /// correct. If this function returns an error it means that the actor has + /// failed to start and an error is returned to the parent. + /// + init: fn() -> InitResult(state, msg), + /// How many milliseconds the `init` function has to return before it is + /// considered to have taken too long and failed. + /// + init_timeout: Int, + /// This function is called to handle each message that the actor receives. + /// + loop: fn(msg, state) -> Next(msg, state), + ) +} + +// TODO: Check needed functionality here to be OTP compatible +fn exit_process(reason: ExitReason) -> ExitReason { + // TODO + reason +} + +fn receive_message(self: Self(state, msg)) -> Message(msg) { + let selector = case self.mode { + // When suspended we only respond to system messages + Suspended -> + process.new_selector() + |> selecting_system_messages + + // When running we respond to all messages + Running -> + // We add the handler for unexpected messages first so that the user + // supplied selector can override it if desired + process.new_selector() + |> process.selecting_anything(Unexpected) + |> process.merge_selector(self.selector) + |> selecting_system_messages + } + + process.select_forever(selector) +} + +fn selecting_system_messages( + selector: Selector(Message(msg)), +) -> Selector(Message(msg)) { + selector + |> process.selecting_record3( + atom.create_from_string("system"), + convert_system_message, + ) +} + +@external(erlang, "gleam_otp_external", "convert_system_message") +fn convert_system_message(a: Dynamic, b: Dynamic) -> Message(msg) + +fn process_status_info(self: Self(state, msg)) -> StatusInfo { + StatusInfo( + module: atom.create_from_string("gleam@otp@actor"), + parent: self.parent, + mode: self.mode, + debug_state: self.debug_state, + state: dynamic.from(self.state), + ) +} + +fn loop(self: Self(state, msg)) -> ExitReason { + case receive_message(self) { + System(system) -> + case system { + GetState(callback) -> { + callback(dynamic.from(self.state)) + loop(self) + } + Resume(callback) -> { + callback() + loop(Self(..self, mode: Running)) + } + Suspend(callback) -> { + callback() + loop(Self(..self, mode: Suspended)) + } + GetStatus(callback) -> { + callback(process_status_info(self)) + loop(self) + } + } + + Unexpected(message) -> { + log_warning( + charlist.from_string("Actor discarding unexpected message: ~s"), + [charlist.from_string(string.inspect(message))], + ) + loop(self) + } + + Message(msg) -> + case self.message_handler(msg, self.state) { + Stop(reason) -> exit_process(reason) + Continue(state: state, selector: new_selector) -> { + let selector = + new_selector + |> option.map(init_selector(self.subject, _)) + |> option.unwrap(self.selector) + loop(Self(..self, state: state, selector: selector)) + } + } + } +} + +// TODO: replace this when we have Gleam bindings to the logger +@external(erlang, "logger", "warning") +fn log_warning(a: Charlist, b: List(Charlist)) -> Nil + +fn initialise_actor( + spec: Spec(state, msg), + ack: Subject(Result(Subject(msg), ExitReason)), +) { + let subject = process.new_subject() + case spec.init() { + Ready(state, selector) -> { + let selector = init_selector(subject, selector) + // Signal to parent that the process has initialised successfully + process.send(ack, Ok(subject)) + // Start message receive loop + let self = + Self( + state: state, + parent: process.subject_owner(ack), + subject: subject, + selector: selector, + message_handler: spec.loop, + debug_state: system.debug_state([]), + mode: Running, + ) + loop(self) + } + + Failed(reason) -> { + process.send(ack, Error(Abnormal(reason))) + exit_process(Abnormal(reason)) + } + } +} + +fn init_selector(subject, selector) { + process.new_selector() + |> process.selecting(subject, Message) + |> process.merge_selector(process.map_selector(selector, Message)) +} + +pub type StartError { + InitTimeout + InitFailed(ExitReason) + InitCrashed(Dynamic) +} + +/// The result of starting a Gleam actor. +/// +/// This type is compatible with Gleam supervisors. If you wish to convert it +/// to a type compatible with Erlang supervisors see the `ErlangStartResult` +/// type and `erlang_start_result` function. +/// +pub type StartResult(msg) = + Result(Subject(msg), StartError) + +/// An Erlang supervisor compatible process start result. +/// +/// If you wish to convert this into a `StartResult` compatible with Gleam +/// supervisors see the `from_erlang_start_result` and `wrap_erlang_starter` +/// functions. +/// +pub type ErlangStartResult = + Result(Pid, Dynamic) + +/// Convert a Gleam actor start result into an Erlang supervisor compatible +/// process start result. +/// +pub fn to_erlang_start_result(res: StartResult(msg)) -> ErlangStartResult { + case res { + Ok(x) -> Ok(process.subject_owner(x)) + Error(x) -> Error(dynamic.from(x)) + } +} + +type StartInitMessage(msg) { + Ack(Result(Subject(msg), ExitReason)) + Mon(process.ProcessDown) +} + +// TODO: test init_timeout. Currently if we test it eunit prints an error from +// the process death. How do we avoid this? +// +/// Start an actor from a given specification. If the actor's `init` function +/// returns an error or does not return within `init_timeout` then an error is +/// returned. +/// +/// If you do not need to specify the initialisation behaviour of your actor +/// consider using the `start` function. +/// +pub fn start_spec(spec: Spec(state, msg)) -> Result(Subject(msg), StartError) { + let ack_subject = process.new_subject() + + let child = + process.start( + linked: True, + running: fn() { initialise_actor(spec, ack_subject) }, + ) + + let monitor = process.monitor_process(child) + let selector = + process.new_selector() + |> process.selecting(ack_subject, Ack) + |> process.selecting_process_down(monitor, Mon) + + let result = case process.select(selector, spec.init_timeout) { + // Child started OK + Ok(Ack(Ok(channel))) -> Ok(channel) + + // Child initialiser returned an error + Ok(Ack(Error(reason))) -> Error(InitFailed(reason)) + + // Child went down while initialising + Ok(Mon(down)) -> Error(InitCrashed(down.reason)) + + // Child did not finish initialising in time + Error(Nil) -> { + process.kill(child) + Error(InitTimeout) + } + } + + // Remove the monitor used for the starting of the actor as to avoid an extra + // message arriving at the parent if the child dies later. + process.demonitor_process(monitor) + + result +} + +/// Start an actor with a given initial state and message handling loop +/// function. +/// +/// This function returns a `Result` but it will always be `Ok` so it is safe +/// to use with `assert` if you are not starting this actor as part of a +/// supervision tree. +/// +/// If you wish to configure the initialisation behaviour of a new actor see +/// the `Spec` record and the `start_spec` function. +/// +pub fn start( + state: state, + loop: fn(msg, state) -> Next(msg, state), +) -> Result(Subject(msg), StartError) { + start_spec(Spec( + init: fn() { Ready(state, process.new_selector()) }, + loop: loop, + init_timeout: 5000, + )) +} + +/// Send a message over a given channel. +/// +/// This is a re-export of `process.send`, for the sake of convenience. +/// +pub fn send(subject: Subject(msg), msg: msg) -> Nil { + process.send(subject, msg) +} + +// TODO: test +/// Send a synchronous message and wait for a response from the receiving +/// process. +/// +/// If a reply is not received within the given timeout then the sender process +/// crashes. If you wish receive a `Result` rather than crashing see the +/// `process.try_call` function. +/// +/// This is a re-export of `process.call`, for the sake of convenience. +/// +pub fn call( + selector: Subject(message), + make_message: fn(Subject(reply)) -> message, + timeout: Int, +) -> reply { + process.call(selector, make_message, timeout) +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam new file mode 100644 index 0000000..2044be0 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam @@ -0,0 +1,46 @@ +//// The intensity tracker is used to monitor how frequently an event happens, +//// erroring if it happens too many times within a period of time. + +import gleam/list + +// TODO: test +pub opaque type IntensityTracker { + IntensityTracker(limit: Int, period: Int, events: List(Int)) +} + +pub type TooIntense { + TooIntense +} + +pub fn new(limit limit: Int, period period: Int) -> IntensityTracker { + IntensityTracker(limit: limit, period: period, events: []) +} + +@external(erlang, "erlang", "monotonic_time") +fn monotonic_time(a: Int) -> Int + +fn now_seconds() -> Int { + monotonic_time(1) +} + +pub fn trim_window(events: List(Int), now: Int, period: Int) -> List(Int) { + case events { + [] -> [] + [event, ..events] -> + case now >= event + period { + True -> [event, ..trim_window(events, now, period)] + False -> [] + } + } +} + +pub fn add_event( + tracker: IntensityTracker, +) -> Result(IntensityTracker, TooIntense) { + let now = now_seconds() + let events = trim_window([now, ..tracker.events], now, tracker.period) + case list.length(events) >= tracker.limit { + True -> Error(TooIntense) + False -> Ok(IntensityTracker(..tracker, events: events)) + } +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam new file mode 100644 index 0000000..4e1b4d8 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam @@ -0,0 +1,9 @@ +/// Ports are how code running on the Erlang virtual machine interacts with +/// the outside world. Bytes of data can be sent to and read from ports, +/// providing a form of message passing to an external program or resource. +/// +/// For more information on ports see the [Erlang ports documentation][1]. +/// +/// [1]: https://erlang.org/doc/reference_manual/ports.html +/// +pub type Port diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam new file mode 100644 index 0000000..b99ad8e --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam @@ -0,0 +1,410 @@ +// TODO: specify amount of time permitted for shut-down +import gleam/result +import gleam/string +import gleam/option.{type Option, None, Some} +import gleam/erlang/process.{type Pid, type Subject} +import gleam/otp/actor.{type StartError} +import gleam/otp/intensity_tracker.{type IntensityTracker} +import gleam/erlang/node.{type Node} + +/// This data structure holds all the values required by the `start_spec` +/// function in order to create an supervisor. +/// +/// If you do not need to configure the behaviour of your supervisor consider +/// using the `start` function. +/// +pub type Spec(argument, return) { + Spec( + argument: argument, + max_frequency: Int, + frequency_period: Int, + init: fn(Children(argument)) -> Children(return), + ) +} + +/// This type represents the starting children of a supervisor within the +/// `init` function. +/// +pub opaque type Children(argument) { + Ready(Starter(argument)) + Failed(ChildStartError) +} + +/// This type contains all the information required to start a new child and +/// add it to the `Children`. +/// +/// This is typically created with the `worker` function. +/// +pub opaque type ChildSpec(msg, argument, returning) { + ChildSpec( + // TODO: merge this into one field + start: fn(argument) -> Result(Subject(msg), StartError), + returning: fn(argument, Subject(msg)) -> returning, + ) +} + +type ChildStartError { + ChildStartError(previous_pid: Option(Pid), error: StartError) +} + +pub opaque type Message { + Exit(process.ExitMessage) + RetryRestart(Pid) +} + +type Instruction { + StartAll + StartFrom(Pid) +} + +type State(a) { + State( + restarts: IntensityTracker, + starter: Starter(a), + retry_restarts: Subject(Pid), + ) +} + +type Starter(argument) { + Starter( + argument: argument, + exec: Option( + fn(Instruction) -> + Result(#(Starter(argument), Instruction), ChildStartError), + ), + ) +} + +type Child(argument) { + Child(pid: Pid, argument: argument) +} + +fn start_child( + child_spec: ChildSpec(msg, argument_in, argument_out), + argument: argument_in, +) -> Result(Child(argument_out), ChildStartError) { + use subject <- result.then( + child_spec.start(argument) + |> result.map_error(ChildStartError(None, _)), + ) + + Ok(Child( + pid: process.subject_owner(subject), + // Merge the new child's pid into the argument to produce the new argument + // used to start any remaining children. + argument: child_spec.returning(argument, subject), + )) +} + +// TODO: more sophsiticated stopping of processes. i.e. give supervisors +// more time to shut down. +fn shutdown_child(pid: Pid, _spec: ChildSpec(msg, arg_1, arg_2)) -> Nil { + process.send_exit(pid) +} + +fn perform_instruction_for_child( + argument: argument_in, + instruction: Instruction, + child_spec: ChildSpec(msg, argument_in, argument_out), + child: Child(argument_out), +) -> Result(#(Child(argument_out), Instruction), ChildStartError) { + let current = child.pid + case instruction { + // This child is older than the StartFrom target, we don't need to + // restart it + StartFrom(target) if target != current -> Ok(#(child, instruction)) + + // This pid either is the cause of the problem, or we have the StartAll + // instruction. Either way it and its younger siblings need to be restarted. + _ -> { + shutdown_child(current, child_spec) + use child <- result.then(start_child(child_spec, argument)) + Ok(#(child, StartAll)) + } + } +} + +fn add_child_to_starter( + starter: Starter(argument_in), + child_spec: ChildSpec(msg, argument_in, argument_out), + child: Child(argument_out), +) -> Starter(argument_out) { + let starter = fn(instruction) { + // Restart the older children. We use `try` to return early if the older + // children failed to start + use #(starter, instruction) <- result.then(case starter.exec { + Some(start) -> start(instruction) + None -> Ok(#(starter, instruction)) + }) + + // Perform the instruction, restarting the child as required + use #(child, instruction) <- result.then(perform_instruction_for_child( + starter.argument, + instruction, + child_spec, + child, + )) + + // Create a new starter for the next time the supervisor needs to restart + let starter = add_child_to_starter(starter, child_spec, child) + + Ok(#(starter, instruction)) + } + + Starter(exec: Some(starter), argument: child.argument) +} + +fn start_and_add_child( + state: Starter(argument_0), + child_spec: ChildSpec(msg, argument_0, argument_1), +) -> Children(argument_1) { + case start_child(child_spec, state.argument) { + Ok(child) -> Ready(add_child_to_starter(state, child_spec, child)) + Error(reason) -> Failed(reason) + } +} + +/// Add a child to the collection of children of the supervisor +/// +/// This function starts the child from the child spec. +/// +pub fn add( + children: Children(argument), + child_spec: ChildSpec(msg, argument, new_argument), +) -> Children(new_argument) { + case children { + // If one of the previous children has failed then we cannot continue + Failed(fail) -> Failed(fail) + + // If everything is OK so far then we can add the child + Ready(state) -> start_and_add_child(state, child_spec) + } +} + +// TODO: test +// TODO: unlimitd shut down duration +/// Prepare a new supervisor type child. +/// +/// If you wish to prepare a new non-supervisor type child see the `worker` +/// function. +/// +/// If you wish to change the type of the argument for later children see the +/// `returning` function. +/// +/// Note: Gleam supervisors do not yet support different shutdown periods per +/// child so this function is currently identical in behaviour to `worker`. It is +/// recommended to use this function for supervisor children nevertheless so the +/// correct shut down behaviour is used in later releases of this library. +/// +pub fn supervisor( + start: fn(argument) -> Result(Subject(msg), StartError), +) -> ChildSpec(msg, argument, argument) { + ChildSpec(start: start, returning: fn(argument, _channel) { argument }) +} + +/// Prepare a new worker type child. +/// +/// If you wish to prepare a new supervisor type child see the `supervisor` +/// function. +/// +/// If you wish to change the type of the argument for later children see the +/// `returning` function. +/// +pub fn worker( + start: fn(argument) -> Result(Subject(msg), StartError), +) -> ChildSpec(msg, argument, argument) { + ChildSpec(start: start, returning: fn(argument, _channel) { argument }) +} + +// TODO: test +/// As each child is added to a supervisors children a new argument is prepared +/// with which to start the next child. By default argument is the same as the +/// previous argument, but this function can be used to change it to something +/// else by passing a function that takes the previous argument and the sender +/// of the previous child. +/// +pub fn returning( + child: ChildSpec(msg, argument_a, argument_b), + updater: fn(argument_a, Subject(msg)) -> argument_c, +) -> ChildSpec(msg, argument_a, argument_c) { + ChildSpec(start: child.start, returning: updater) +} + +fn init( + spec: Spec(argument, return), +) -> actor.InitResult(State(return), Message) { + // Create a subject so that we can asynchronously retry restarting when we + // fail to bring an exited child + let retry = process.new_subject() + + // Trap exits so that we get a message when a child crashes + process.trap_exits(True) + + // Combine selectors + let selector = + process.new_selector() + |> process.selecting(retry, RetryRestart) + |> process.selecting_trapped_exits(Exit) + + // Start any children + let result = + Starter(argument: spec.argument, exec: None) + |> Ready + |> spec.init + + // Pass back up the result + case result { + Ready(starter) -> { + let restarts = + intensity_tracker.new( + limit: spec.max_frequency, + period: spec.frequency_period, + ) + let state = + State(starter: starter, restarts: restarts, retry_restarts: retry) + actor.Ready(state, selector) + } + + Failed(error) -> + actor.Failed(case error.error { + actor.InitTimeout -> "Child initialisation timed out" + actor.InitCrashed(reason) -> + string.append( + "Child crashed during initialisation: ", + string.inspect(reason), + ) + actor.InitFailed(reason) -> + string.append( + "Child failed to start during initialisation: ", + string.inspect(reason), + ) + }) + } +} + +type HandleExitError { + RestartFailed(pid: Pid, restarts: IntensityTracker) + TooManyRestarts +} + +fn handle_exit(pid: Pid, state: State(a)) -> actor.Next(Message, State(a)) { + let outcome = { + // If we are handling an exit then we must have some children + let assert Some(start) = state.starter.exec + + // Check to see if there has been too many restarts in this period + use restarts <- result.then( + state.restarts + |> intensity_tracker.add_event + |> result.map_error(fn(_) { TooManyRestarts }), + ) + + // Restart the exited child and any following children + use #(starter, _) <- result.then( + start(StartFrom(pid)) + |> result.map_error(fn(e: ChildStartError) { + RestartFailed(option.unwrap(e.previous_pid, pid), restarts) + }), + ) + + Ok(State(..state, starter: starter, restarts: restarts)) + } + + case outcome { + Ok(state) -> actor.continue(state) + Error(RestartFailed(failed_child, restarts)) -> { + // Asynchronously enqueue the restarting of this child again as we were + // unable to restart them this time. We do this asynchronously as we want + // to have a chance to handle any system messages that have come in. + process.send(state.retry_restarts, failed_child) + let state = State(..state, restarts: restarts) + actor.continue(state) + } + Error(TooManyRestarts) -> + actor.Stop(process.Abnormal( + "Child processes restarted too many times within allowed period", + )) + } +} + +fn loop( + message: Message, + state: State(argument), +) -> actor.Next(Message, State(argument)) { + case message { + Exit(exit_message) -> handle_exit(exit_message.pid, state) + RetryRestart(pid) -> handle_exit(pid, state) + } +} + +/// Start a supervisor from a given specification. +/// +pub fn start_spec(spec: Spec(a, b)) -> Result(Subject(Message), StartError) { + actor.start_spec(actor.Spec( + init: fn() { init(spec) }, + loop: loop, + init_timeout: 60_000, + )) +} + +/// Start a supervisor from a given `init` function. +/// +/// The init argument passed to children will be `Nil` and the maximum restart +/// intensity will be 1 restart per 5 seconds (the same as the default for +/// [Erlang supervisors][erl-sup]). If you wish to specify these values, see +/// the `start_spec` function and the `Spec` type. +/// +/// [erl-sup]: https://www.erlang.org/doc/design_principles/sup_princ.html#maximum-restart-intensity +/// +pub fn start( + init: fn(Children(Nil)) -> Children(a), +) -> Result(Subject(Message), StartError) { + start_spec(Spec( + init: init, + argument: Nil, + max_frequency: 1, + frequency_period: 5, + )) +} + +/// A type used to describe the situation in which an Erlang based application +/// is starting. +/// +/// For more information see the [Erlang distributed application +/// documentation][1] and the Learn Your Some Erlang chapter on [distributed +/// applications][2]. +/// +/// [1]: https://erlang.org/doc/design_principles/distributed_applications.html +/// [2]: https://learnyousomeerlang.com/distributed-otp-applications +/// +pub type ApplicationStartMode { + Normal + Takeover(Node) + Failover(Node) +} + +pub type ApplicationStop + +@external(erlang, "gleam_otp_external", "application_stopped") +pub fn application_stopped() -> ApplicationStop + +/// The result of starting a Gleam actor. +/// +/// This type is compatible with Gleam supervisors. If you wish to convert it +/// to a type compatible with Erlang supervisors see the `ErlangStartResult` +/// type and `erlang_start_result` function. +/// +pub type StartResult(msg) = + actor.StartResult(msg) + +/// An Erlang supervisor compatible process start result. +/// +pub type ErlangStartResult = + actor.ErlangStartResult + +/// Convert a Gleam actor start result into an Erlang supervisor compatible +/// process start result. +/// +pub fn to_erlang_start_result(res: StartResult(msg)) -> ErlangStartResult { + actor.to_erlang_start_result(res) +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam new file mode 100644 index 0000000..c05646b --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam @@ -0,0 +1,89 @@ +import gleam/dynamic.{type Dynamic} +import gleam/erlang/atom.{type Atom} +import gleam/erlang/process.{type Pid} + +pub type Mode { + Running + Suspended +} + +pub type DebugOption { + NoDebug +} + +pub type DebugState + +@external(erlang, "sys", "debug_options") +pub fn debug_state(a: List(DebugOption)) -> DebugState + +pub type StatusInfo { + StatusInfo( + module: Atom, + parent: Pid, + mode: Mode, + debug_state: DebugState, + state: Dynamic, + ) +} + +// TODO: document +// TODO: implement remaining messages +pub type SystemMessage { + // {replace_state, StateFn} + // {change_code, Mod, Vsn, Extra} + // {terminate, Reason} + // {debug, {log, Flag}} + // {debug, {trace, Flag}} + // {debug, {log_to_file, FileName}} + // {debug, {statistics, Flag}} + // {debug, no_debug} + // {debug, {install, {Func, FuncState}}} + // {debug, {install, {FuncId, Func, FuncState}}} + // {debug, {remove, FuncOrId}} + Resume(fn() -> Nil) + Suspend(fn() -> Nil) + GetState(fn(Dynamic) -> Nil) + GetStatus(fn(StatusInfo) -> Nil) +} + +type DoNotLeak + +/// Get the state of a given OTP compatible process. This function is only +/// intended for debugging. +/// +/// For more information see the [Erlang documentation][1]. +/// +/// [1]: https://erlang.org/doc/man/sys.html#get_state-1 +/// +@external(erlang, "sys", "get_state") +pub fn get_state(from from: Pid) -> Dynamic + +@external(erlang, "sys", "suspend") +fn erl_suspend(a: Pid) -> DoNotLeak + +/// Request an OTP compatible process to suspend, causing it to only handle +/// system messages. +/// +/// For more information see the [Erlang documentation][1]. +/// +/// [1]: https://erlang.org/doc/man/sys.html#suspend-1 +/// +pub fn suspend(pid: Pid) -> Nil { + erl_suspend(pid) + Nil +} + +@external(erlang, "sys", "resume") +fn erl_resume(from from: Pid) -> DoNotLeak + +/// Request a suspended OTP compatible process to result, causing it to handle +/// all messages rather than only system messages. +/// +/// For more information see the [Erlang documentation][1]. +/// +/// [1]: https://erlang.org/doc/man/sys.html#resume-1 +/// +pub fn resume(pid: Pid) -> Nil { + erl_resume(pid) + Nil +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam new file mode 100644 index 0000000..b2b2c5c --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam @@ -0,0 +1,151 @@ +//// A task is a kind of process that performs a single task and then shuts +//// down. Commonly tasks are used to convert sequential code into concurrent +//// code by performing computation in another process. +//// +//// let task = task.async(fn() { do_some_work() }) +//// let value = do_some_other_work() +//// value + task.await(task, 100) +//// +//// Tasks spawned with async can be awaited on by their caller process (and +//// only their caller) as shown in the example above. They are implemented by +//// spawning a process that sends a message to the caller once the given +//// computation is performed. +//// +//// There are two important things to consider when using `async`: +//// +//// 1. If you are using async tasks, you must await a reply as they are always +//// sent. +//// +//// 2. async tasks link the caller and the spawned process. This means that, +//// if the caller crashes, the task will crash too and vice-versa. This is +//// on purpose: if the process meant to receive the result no longer +//// exists, there is no purpose in completing the computation. +//// +//// This module is inspired by Elixir's [Task module][1]. +//// +//// [1]: https://hexdocs.pm/elixir/master/Task.html +//// + +// TODO: await_many +import gleam/erlang/process.{type Pid, type ProcessMonitor, type Selector} +import gleam/dynamic.{type Dynamic} + +pub opaque type Task(value) { + Task( + owner: Pid, + pid: Pid, + monitor: ProcessMonitor, + selector: Selector(Message(value)), + ) +} + +// TODO: test +/// Spawn a task process that calls a given function in order to perform some +/// work. The result of this function is send back to the parent and can be +/// received using the `await` function. +/// +/// See the top level module documentation for more information on async/await. +/// +pub fn async(work: fn() -> value) -> Task(value) { + let owner = process.self() + let subject = process.new_subject() + let pid = + process.start(linked: True, running: fn() { process.send(subject, work()) }) + let monitor = process.monitor_process(pid) + let selector = + process.new_selector() + |> process.selecting_process_down(monitor, FromMonitor) + |> process.selecting(subject, FromSubject) + Task(owner: owner, pid: pid, monitor: monitor, selector: selector) +} + +pub type AwaitError { + Timeout + Exit(reason: Dynamic) +} + +// We can only wait on a task if we are the owner of it so crash if we are +// waiting on a task we don't own. +fn assert_owner(task: Task(a)) -> Nil { + let self = process.self() + case task.owner == self { + True -> Nil + False -> + process.send_abnormal_exit( + self, + "awaited on a task that does not belong to this process", + ) + } +} + +type Message(value) { + FromMonitor(process.ProcessDown) + FromSubject(value) +} + +// TODO: test +/// Wait for the value computed by a task. +/// +/// If the a value is not received before the timeout has elapsed or if the +/// task process crashes then an error is returned. +/// +pub fn try_await(task: Task(value), timeout: Int) -> Result(value, AwaitError) { + assert_owner(task) + case process.select(task.selector, timeout) { + // The task process has sent back a value + Ok(FromSubject(x)) -> { + process.demonitor_process(task.monitor) + Ok(x) + } + + // The task process crashed without sending a value + Ok(FromMonitor(process.ProcessDown(reason: reason, ..))) -> + Error(Exit(reason)) + + // The task process is alive but has not sent a value yet + Error(Nil) -> Error(Timeout) + } +} + +// TODO: test +/// Wait for the value computed by a task. +/// +/// If the a value is not received before the timeout has elapsed or if the +/// task process crashes then this function crashes. +/// +pub fn await(task: Task(value), timeout: Int) -> value { + let assert Ok(value) = try_await(task, timeout) + value +} + +/// Wait endlessly for the value computed by a task. +/// +/// Be Careful! This function does not return until there is a value to +/// receive. If a value is not received then the process will be stuck waiting +/// forever. +/// +pub fn try_await_forever(task: Task(value)) -> Result(value, AwaitError) { + assert_owner(task) + case process.select_forever(task.selector) { + // The task process has sent back a value + FromSubject(x) -> { + process.demonitor_process(task.monitor) + Ok(x) + } + + // The task process crashed without sending a value + FromMonitor(process.ProcessDown(reason: reason, ..)) -> Error(Exit(reason)) + } +} + +/// Wait endlessly for the value computed by a task. +/// +/// Be Careful! Like `try_await_forever`, this function does not return until there is a value to +/// receive. +/// +/// If the task process crashes then this function crashes. +/// +pub fn await_forever(task: Task(value)) -> value { + let assert Ok(value) = try_await_forever(task) + value +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl new file mode 100644 index 0000000..0606147 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl @@ -0,0 +1,273 @@ +-module(gleam@otp@actor). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([continue/1, with_selector/2, to_erlang_start_result/1, start_spec/1, start/2, send/2, call/3]). +-export_type([message/1, next/2, init_result/2, self/2, spec/2, start_error/0, start_init_message/1]). + +-type message(GAS) :: {message, GAS} | + {system, gleam@otp@system:system_message()} | + {unexpected, gleam@dynamic:dynamic_()}. + +-type next(GAT, GAU) :: {continue, + GAU, + gleam@option:option(gleam@erlang@process:selector(GAT))} | + {stop, gleam@erlang@process:exit_reason()}. + +-type init_result(GAV, GAW) :: {ready, GAV, gleam@erlang@process:selector(GAW)} | + {failed, binary()}. + +-type self(GAX, GAY) :: {self, + gleam@otp@system:mode(), + gleam@erlang@process:pid_(), + GAX, + gleam@erlang@process:subject(GAY), + gleam@erlang@process:selector(message(GAY)), + gleam@otp@system:debug_state(), + fun((GAY, GAX) -> next(GAY, GAX))}. + +-type spec(GAZ, GBA) :: {spec, + fun(() -> init_result(GAZ, GBA)), + integer(), + fun((GBA, GAZ) -> next(GBA, GAZ))}. + +-type start_error() :: init_timeout | + {init_failed, gleam@erlang@process:exit_reason()} | + {init_crashed, gleam@dynamic:dynamic_()}. + +-type start_init_message(GBB) :: {ack, + {ok, gleam@erlang@process:subject(GBB)} | + {error, gleam@erlang@process:exit_reason()}} | + {mon, gleam@erlang@process:process_down()}. + +-spec continue(GBI) -> next(any(), GBI). +continue(State) -> + {continue, State, none}. + +-spec with_selector(next(GBM, GBN), gleam@erlang@process:selector(GBM)) -> next(GBM, GBN). +with_selector(Value, Selector) -> + case Value of + {continue, State, _} -> + {continue, State, {some, Selector}}; + + _ -> + Value + end. + +-spec exit_process(gleam@erlang@process:exit_reason()) -> gleam@erlang@process:exit_reason(). +exit_process(Reason) -> + Reason. + +-spec selecting_system_messages(gleam@erlang@process:selector(message(GBY))) -> gleam@erlang@process:selector(message(GBY)). +selecting_system_messages(Selector) -> + _pipe = Selector, + gleam@erlang@process:selecting_record3( + _pipe, + erlang:binary_to_atom(<<"system"/utf8>>), + fun gleam_otp_external:convert_system_message/2 + ). + +-spec receive_message(self(any(), GBU)) -> message(GBU). +receive_message(Self) -> + Selector = case erlang:element(2, Self) of + suspended -> + _pipe = gleam_erlang_ffi:new_selector(), + selecting_system_messages(_pipe); + + running -> + _pipe@1 = gleam_erlang_ffi:new_selector(), + _pipe@2 = gleam@erlang@process:selecting_anything( + _pipe@1, + fun(Field@0) -> {unexpected, Field@0} end + ), + _pipe@3 = gleam_erlang_ffi:merge_selector( + _pipe@2, + erlang:element(6, Self) + ), + selecting_system_messages(_pipe@3) + end, + gleam_erlang_ffi:select(Selector). + +-spec process_status_info(self(any(), any())) -> gleam@otp@system:status_info(). +process_status_info(Self) -> + {status_info, + erlang:binary_to_atom(<<"gleam@otp@actor"/utf8>>), + erlang:element(3, Self), + erlang:element(2, Self), + erlang:element(7, Self), + gleam@dynamic:from(erlang:element(4, Self))}. + +-spec init_selector( + gleam@erlang@process:subject(GGN), + gleam@erlang@process:selector(GGN) +) -> gleam@erlang@process:selector(message(GGN)). +init_selector(Subject, Selector) -> + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Subject, + fun(Field@0) -> {message, Field@0} end + ), + gleam_erlang_ffi:merge_selector( + _pipe@1, + gleam_erlang_ffi:map_selector( + Selector, + fun(Field@0) -> {message, Field@0} end + ) + ). + +-spec loop(self(any(), any())) -> gleam@erlang@process:exit_reason(). +loop(Self) -> + case receive_message(Self) of + {system, System} -> + case System of + {get_state, Callback} -> + Callback(gleam@dynamic:from(erlang:element(4, Self))), + loop(Self); + + {resume, Callback@1} -> + Callback@1(), + loop(erlang:setelement(2, Self, running)); + + {suspend, Callback@2} -> + Callback@2(), + loop(erlang:setelement(2, Self, suspended)); + + {get_status, Callback@3} -> + Callback@3(process_status_info(Self)), + loop(Self) + end; + + {unexpected, Message} -> + logger:warning( + unicode:characters_to_list( + <<"Actor discarding unexpected message: ~s"/utf8>> + ), + [unicode:characters_to_list(gleam@string:inspect(Message))] + ), + loop(Self); + + {message, Msg} -> + case (erlang:element(8, Self))(Msg, erlang:element(4, Self)) of + {stop, Reason} -> + exit_process(Reason); + + {continue, State, New_selector} -> + Selector = begin + _pipe = New_selector, + _pipe@1 = gleam@option:map( + _pipe, + fun(_capture) -> + init_selector(erlang:element(5, Self), _capture) + end + ), + gleam@option:unwrap(_pipe@1, erlang:element(6, Self)) + end, + loop( + erlang:setelement( + 6, + erlang:setelement(4, Self, State), + Selector + ) + ) + end + end. + +-spec initialise_actor( + spec(any(), GCP), + gleam@erlang@process:subject({ok, gleam@erlang@process:subject(GCP)} | + {error, gleam@erlang@process:exit_reason()}) +) -> gleam@erlang@process:exit_reason(). +initialise_actor(Spec, Ack) -> + Subject = gleam@erlang@process:new_subject(), + case (erlang:element(2, Spec))() of + {ready, State, Selector} -> + Selector@1 = init_selector(Subject, Selector), + gleam@erlang@process:send(Ack, {ok, Subject}), + Self = {self, + running, + gleam@erlang@process:subject_owner(Ack), + State, + Subject, + Selector@1, + sys:debug_options([]), + erlang:element(4, Spec)}, + loop(Self); + + {failed, Reason} -> + gleam@erlang@process:send(Ack, {error, {abnormal, Reason}}), + exit_process({abnormal, Reason}) + end. + +-spec to_erlang_start_result( + {ok, gleam@erlang@process:subject(any())} | {error, start_error()} +) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. +to_erlang_start_result(Res) -> + case Res of + {ok, X} -> + {ok, gleam@erlang@process:subject_owner(X)}; + + {error, X@1} -> + {error, gleam@dynamic:from(X@1)} + end. + +-spec start_spec(spec(any(), GDD)) -> {ok, gleam@erlang@process:subject(GDD)} | + {error, start_error()}. +start_spec(Spec) -> + Ack_subject = gleam@erlang@process:new_subject(), + Child = gleam@erlang@process:start( + fun() -> initialise_actor(Spec, Ack_subject) end, + true + ), + Monitor = gleam@erlang@process:monitor_process(Child), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Ack_subject, + fun(Field@0) -> {ack, Field@0} end + ), + gleam@erlang@process:selecting_process_down( + _pipe@1, + Monitor, + fun(Field@0) -> {mon, Field@0} end + ) + end, + Result = case gleam_erlang_ffi:select(Selector, erlang:element(3, Spec)) of + {ok, {ack, {ok, Channel}}} -> + {ok, Channel}; + + {ok, {ack, {error, Reason}}} -> + {error, {init_failed, Reason}}; + + {ok, {mon, Down}} -> + {error, {init_crashed, erlang:element(3, Down)}}; + + {error, nil} -> + gleam@erlang@process:kill(Child), + {error, init_timeout} + end, + gleam_erlang_ffi:demonitor(Monitor), + Result. + +-spec start(GDJ, fun((GDK, GDJ) -> next(GDK, GDJ))) -> {ok, + gleam@erlang@process:subject(GDK)} | + {error, start_error()}. +start(State, Loop) -> + start_spec( + {spec, + fun() -> {ready, State, gleam_erlang_ffi:new_selector()} end, + 5000, + Loop} + ). + +-spec send(gleam@erlang@process:subject(GDQ), GDQ) -> nil. +send(Subject, Msg) -> + gleam@erlang@process:send(Subject, Msg). + +-spec call( + gleam@erlang@process:subject(GDS), + fun((gleam@erlang@process:subject(GDU)) -> GDS), + integer() +) -> GDU. +call(Selector, Make_message, Timeout) -> + gleam@erlang@process:call(Selector, Make_message, Timeout). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl new file mode 100644 index 0000000..8792f14 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl @@ -0,0 +1,53 @@ +-module(gleam@otp@intensity_tracker). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/2, trim_window/3, add_event/1]). +-export_type([intensity_tracker/0, too_intense/0]). + +-opaque intensity_tracker() :: {intensity_tracker, + integer(), + integer(), + list(integer())}. + +-type too_intense() :: too_intense. + +-spec new(integer(), integer()) -> intensity_tracker(). +new(Limit, Period) -> + {intensity_tracker, Limit, Period, []}. + +-spec now_seconds() -> integer(). +now_seconds() -> + erlang:monotonic_time(1). + +-spec trim_window(list(integer()), integer(), integer()) -> list(integer()). +trim_window(Events, Now, Period) -> + case Events of + [] -> + []; + + [Event | Events@1] -> + case Now >= (Event + Period) of + true -> + [Event | trim_window(Events@1, Now, Period)]; + + false -> + [] + end + end. + +-spec add_event(intensity_tracker()) -> {ok, intensity_tracker()} | + {error, too_intense()}. +add_event(Tracker) -> + Now = now_seconds(), + Events = trim_window( + [Now | erlang:element(4, Tracker)], + Now, + erlang:element(3, Tracker) + ), + case gleam@list:length(Events) >= erlang:element(2, Tracker) of + true -> + {error, too_intense}; + + false -> + {ok, erlang:setelement(4, Tracker, Events)} + end. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl new file mode 100644 index 0000000..b205739 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl @@ -0,0 +1,8 @@ +-module(gleam@otp@port). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export_type([port_/0]). + +-type port_() :: any(). + + diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl new file mode 100644 index 0000000..39118f1 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl @@ -0,0 +1,322 @@ +-module(gleam@otp@supervisor). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([add/2, supervisor/1, worker/1, returning/2, start_spec/1, start/1, application_stopped/0, to_erlang_start_result/1]). +-export_type([spec/2, children/1, child_spec/3, child_start_error/0, message/0, instruction/0, state/1, starter/1, child/1, handle_exit_error/0, application_start_mode/0, application_stop/0]). + +-type spec(GLS, GLT) :: {spec, + GLS, + integer(), + integer(), + fun((children(GLS)) -> children(GLT))}. + +-opaque children(GLU) :: {ready, starter(GLU)} | {failed, child_start_error()}. + +-opaque child_spec(GLV, GLW, GLX) :: {child_spec, + fun((GLW) -> {ok, gleam@erlang@process:subject(GLV)} | + {error, gleam@otp@actor:start_error()}), + fun((GLW, gleam@erlang@process:subject(GLV)) -> GLX)}. + +-type child_start_error() :: {child_start_error, + gleam@option:option(gleam@erlang@process:pid_()), + gleam@otp@actor:start_error()}. + +-opaque message() :: {exit, gleam@erlang@process:exit_message()} | + {retry_restart, gleam@erlang@process:pid_()}. + +-type instruction() :: start_all | {start_from, gleam@erlang@process:pid_()}. + +-type state(GLY) :: {state, + gleam@otp@intensity_tracker:intensity_tracker(), + starter(GLY), + gleam@erlang@process:subject(gleam@erlang@process:pid_())}. + +-type starter(GLZ) :: {starter, + GLZ, + gleam@option:option(fun((instruction()) -> {ok, + {starter(GLZ), instruction()}} | + {error, child_start_error()}))}. + +-type child(GMA) :: {child, gleam@erlang@process:pid_(), GMA}. + +-type handle_exit_error() :: {restart_failed, + gleam@erlang@process:pid_(), + gleam@otp@intensity_tracker:intensity_tracker()} | + too_many_restarts. + +-type application_start_mode() :: normal | + {takeover, gleam@erlang@node:node_()} | + {failover, gleam@erlang@node:node_()}. + +-type application_stop() :: any(). + +-spec start_child(child_spec(any(), GME, GMF), GME) -> {ok, child(GMF)} | + {error, child_start_error()}. +start_child(Child_spec, Argument) -> + gleam@result:then( + begin + _pipe = (erlang:element(2, Child_spec))(Argument), + gleam@result:map_error( + _pipe, + fun(_capture) -> {child_start_error, none, _capture} end + ) + end, + fun(Subject) -> + {ok, + {child, + gleam@erlang@process:subject_owner(Subject), + (erlang:element(3, Child_spec))(Argument, Subject)}} + end + ). + +-spec shutdown_child( + gleam@erlang@process:pid_(), + child_spec(any(), any(), any()) +) -> nil. +shutdown_child(Pid, _) -> + gleam@erlang@process:send_exit(Pid). + +-spec perform_instruction_for_child( + GMS, + instruction(), + child_spec(any(), GMS, GMU), + child(GMU) +) -> {ok, {child(GMU), instruction()}} | {error, child_start_error()}. +perform_instruction_for_child(Argument, Instruction, Child_spec, Child) -> + Current = erlang:element(2, Child), + case Instruction of + {start_from, Target} when Target =/= Current -> + {ok, {Child, Instruction}}; + + _ -> + shutdown_child(Current, Child_spec), + gleam@result:then( + start_child(Child_spec, Argument), + fun(Child@1) -> {ok, {Child@1, start_all}} end + ) + end. + +-spec add_child_to_starter( + starter(GNC), + child_spec(any(), GNC, GNF), + child(GNF) +) -> starter(GNF). +add_child_to_starter(Starter, Child_spec, Child) -> + Starter@3 = fun(Instruction) -> + gleam@result:then(case erlang:element(3, Starter) of + {some, Start} -> + Start(Instruction); + + none -> + {ok, {Starter, Instruction}} + end, fun(_use0) -> + {Starter@1, Instruction@1} = _use0, + gleam@result:then( + perform_instruction_for_child( + erlang:element(2, Starter@1), + Instruction@1, + Child_spec, + Child + ), + fun(_use0@1) -> + {Child@1, Instruction@2} = _use0@1, + Starter@2 = add_child_to_starter( + Starter@1, + Child_spec, + Child@1 + ), + {ok, {Starter@2, Instruction@2}} + end + ) + end) + end, + {starter, erlang:element(3, Child), {some, Starter@3}}. + +-spec start_and_add_child(starter(GNL), child_spec(any(), GNL, GNO)) -> children(GNO). +start_and_add_child(State, Child_spec) -> + case start_child(Child_spec, erlang:element(2, State)) of + {ok, Child} -> + {ready, add_child_to_starter(State, Child_spec, Child)}; + + {error, Reason} -> + {failed, Reason} + end. + +-spec add(children(GNT), child_spec(any(), GNT, GNW)) -> children(GNW). +add(Children, Child_spec) -> + case Children of + {failed, Fail} -> + {failed, Fail}; + + {ready, State} -> + start_and_add_child(State, Child_spec) + end. + +-spec supervisor( + fun((GOB) -> {ok, gleam@erlang@process:subject(GOC)} | + {error, gleam@otp@actor:start_error()}) +) -> child_spec(GOC, GOB, GOB). +supervisor(Start) -> + {child_spec, Start, fun(Argument, _) -> Argument end}. + +-spec worker( + fun((GOJ) -> {ok, gleam@erlang@process:subject(GOK)} | + {error, gleam@otp@actor:start_error()}) +) -> child_spec(GOK, GOJ, GOJ). +worker(Start) -> + {child_spec, Start, fun(Argument, _) -> Argument end}. + +-spec returning( + child_spec(GOR, GOS, any()), + fun((GOS, gleam@erlang@process:subject(GOR)) -> GOY) +) -> child_spec(GOR, GOS, GOY). +returning(Child, Updater) -> + {child_spec, erlang:element(2, Child), Updater}. + +-spec init(spec(any(), GPD)) -> gleam@otp@actor:init_result(state(GPD), message()). +init(Spec) -> + Retry = gleam@erlang@process:new_subject(), + gleam_erlang_ffi:trap_exits(true), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting( + _pipe, + Retry, + fun(Field@0) -> {retry_restart, Field@0} end + ), + gleam@erlang@process:selecting_trapped_exits( + _pipe@1, + fun(Field@0) -> {exit, Field@0} end + ) + end, + Result = begin + _pipe@2 = {starter, erlang:element(2, Spec), none}, + _pipe@3 = {ready, _pipe@2}, + (erlang:element(5, Spec))(_pipe@3) + end, + case Result of + {ready, Starter} -> + Restarts = gleam@otp@intensity_tracker:new( + erlang:element(3, Spec), + erlang:element(4, Spec) + ), + State = {state, Restarts, Starter, Retry}, + {ready, State, Selector}; + + {failed, Error} -> + {failed, case erlang:element(3, Error) of + init_timeout -> + <<"Child initialisation timed out"/utf8>>; + + {init_crashed, Reason} -> + gleam@string:append( + <<"Child crashed during initialisation: "/utf8>>, + gleam@string:inspect(Reason) + ); + + {init_failed, Reason@1} -> + gleam@string:append( + <<"Child failed to start during initialisation: "/utf8>>, + gleam@string:inspect(Reason@1) + ) + end} + end. + +-spec handle_exit(gleam@erlang@process:pid_(), state(GPJ)) -> gleam@otp@actor:next(message(), state(GPJ)). +handle_exit(Pid, State) -> + Outcome = begin + _assert_subject = erlang:element(3, erlang:element(3, State)), + {some, Start} = case _assert_subject of + {some, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/supervisor"/utf8>>, + function => <<"handle_exit"/utf8>>, + line => 293}) + end, + gleam@result:then( + begin + _pipe = erlang:element(2, State), + _pipe@1 = gleam@otp@intensity_tracker:add_event(_pipe), + gleam@result:map_error(_pipe@1, fun(_) -> too_many_restarts end) + end, + fun(Restarts) -> + gleam@result:then( + begin + _pipe@2 = Start({start_from, Pid}), + gleam@result:map_error( + _pipe@2, + fun(E) -> + {restart_failed, + gleam@option:unwrap( + erlang:element(2, E), + Pid + ), + Restarts} + end + ) + end, + fun(_use0) -> + {Starter, _} = _use0, + {ok, + erlang:setelement( + 2, + erlang:setelement(3, State, Starter), + Restarts + )} + end + ) + end + ) + end, + case Outcome of + {ok, State@1} -> + gleam@otp@actor:continue(State@1); + + {error, {restart_failed, Failed_child, Restarts@1}} -> + gleam@erlang@process:send(erlang:element(4, State), Failed_child), + State@2 = erlang:setelement(2, State, Restarts@1), + gleam@otp@actor:continue(State@2); + + {error, too_many_restarts} -> + {stop, + {abnormal, + <<"Child processes restarted too many times within allowed period"/utf8>>}} + end. + +-spec loop(message(), state(GPO)) -> gleam@otp@actor:next(message(), state(GPO)). +loop(Message, State) -> + case Message of + {exit, Exit_message} -> + handle_exit(erlang:element(2, Exit_message), State); + + {retry_restart, Pid} -> + handle_exit(Pid, State) + end. + +-spec start_spec(spec(any(), any())) -> {ok, + gleam@erlang@process:subject(message())} | + {error, gleam@otp@actor:start_error()}. +start_spec(Spec) -> + gleam@otp@actor:start_spec( + {spec, fun() -> init(Spec) end, 60000, fun loop/2} + ). + +-spec start(fun((children(nil)) -> children(any()))) -> {ok, + gleam@erlang@process:subject(message())} | + {error, gleam@otp@actor:start_error()}. +start(Init) -> + start_spec({spec, nil, 1, 5, Init}). + +-spec application_stopped() -> application_stop(). +application_stopped() -> + gleam_otp_external:application_stopped(). + +-spec to_erlang_start_result( + {ok, gleam@erlang@process:subject(any())} | + {error, gleam@otp@actor:start_error()} +) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. +to_erlang_start_result(Res) -> + gleam@otp@actor:to_erlang_start_result(Res). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl new file mode 100644 index 0000000..622e5ea --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl @@ -0,0 +1,43 @@ +-module(gleam@otp@system). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([debug_state/1, get_state/1, suspend/1, resume/1]). +-export_type([mode/0, debug_option/0, debug_state/0, status_info/0, system_message/0, do_not_leak/0]). + +-type mode() :: running | suspended. + +-type debug_option() :: no_debug. + +-type debug_state() :: any(). + +-type status_info() :: {status_info, + gleam@erlang@atom:atom_(), + gleam@erlang@process:pid_(), + mode(), + debug_state(), + gleam@dynamic:dynamic_()}. + +-type system_message() :: {resume, fun(() -> nil)} | + {suspend, fun(() -> nil)} | + {get_state, fun((gleam@dynamic:dynamic_()) -> nil)} | + {get_status, fun((status_info()) -> nil)}. + +-type do_not_leak() :: any(). + +-spec debug_state(list(debug_option())) -> debug_state(). +debug_state(A) -> + sys:debug_options(A). + +-spec get_state(gleam@erlang@process:pid_()) -> gleam@dynamic:dynamic_(). +get_state(From) -> + sys:get_state(From). + +-spec suspend(gleam@erlang@process:pid_()) -> nil. +suspend(Pid) -> + sys:suspend(Pid), + nil. + +-spec resume(gleam@erlang@process:pid_()) -> nil. +resume(Pid) -> + sys:resume(Pid), + nil. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl new file mode 100644 index 0000000..e004284 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl @@ -0,0 +1,111 @@ +-module(gleam@otp@task). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([async/1, try_await/2, await/2, try_await_forever/1, await_forever/1]). +-export_type([task/1, await_error/0, message/1]). + +-opaque task(FWJ) :: {task, + gleam@erlang@process:pid_(), + gleam@erlang@process:pid_(), + gleam@erlang@process:process_monitor(), + gleam@erlang@process:selector(message(FWJ))}. + +-type await_error() :: timeout | {exit, gleam@dynamic:dynamic_()}. + +-type message(FWK) :: {from_monitor, gleam@erlang@process:process_down()} | + {from_subject, FWK}. + +-spec async(fun(() -> FWL)) -> task(FWL). +async(Work) -> + Owner = erlang:self(), + Subject = gleam@erlang@process:new_subject(), + Pid = gleam@erlang@process:start( + fun() -> gleam@erlang@process:send(Subject, Work()) end, + true + ), + Monitor = gleam@erlang@process:monitor_process(Pid), + Selector = begin + _pipe = gleam_erlang_ffi:new_selector(), + _pipe@1 = gleam@erlang@process:selecting_process_down( + _pipe, + Monitor, + fun(Field@0) -> {from_monitor, Field@0} end + ), + gleam@erlang@process:selecting( + _pipe@1, + Subject, + fun(Field@0) -> {from_subject, Field@0} end + ) + end, + {task, Owner, Pid, Monitor, Selector}. + +-spec assert_owner(task(any())) -> nil. +assert_owner(Task) -> + Self = erlang:self(), + case erlang:element(2, Task) =:= Self of + true -> + nil; + + false -> + gleam@erlang@process:send_abnormal_exit( + Self, + <<"awaited on a task that does not belong to this process"/utf8>> + ) + end. + +-spec try_await(task(FWP), integer()) -> {ok, FWP} | {error, await_error()}. +try_await(Task, Timeout) -> + assert_owner(Task), + case gleam_erlang_ffi:select(erlang:element(5, Task), Timeout) of + {ok, {from_subject, X}} -> + gleam_erlang_ffi:demonitor(erlang:element(4, Task)), + {ok, X}; + + {ok, {from_monitor, {process_down, _, Reason}}} -> + {error, {exit, Reason}}; + + {error, nil} -> + {error, timeout} + end. + +-spec await(task(FWT), integer()) -> FWT. +await(Task, Timeout) -> + _assert_subject = try_await(Task, Timeout), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/task"/utf8>>, + function => <<"await"/utf8>>, + line => 117}) + end, + Value. + +-spec try_await_forever(task(FWV)) -> {ok, FWV} | {error, await_error()}. +try_await_forever(Task) -> + assert_owner(Task), + case gleam_erlang_ffi:select(erlang:element(5, Task)) of + {from_subject, X} -> + gleam_erlang_ffi:demonitor(erlang:element(4, Task)), + {ok, X}; + + {from_monitor, {process_down, _, Reason}} -> + {error, {exit, Reason}} + end. + +-spec await_forever(task(FWZ)) -> FWZ. +await_forever(Task) -> + _assert_subject = try_await_forever(Task), + {ok, Value} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"gleam/otp/task"/utf8>>, + function => <<"await_forever"/utf8>>, + line => 149}) + end, + Value. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src b/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src new file mode 100644 index 0000000..5c52295 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src @@ -0,0 +1,15 @@ +{application, gleam_otp, [ + {vsn, "0.8.0"}, + {applications, [gleam_erlang, + gleam_stdlib, + gleeunit]}, + {description, "Fault tolerant multicore Gleam programs with OTP"}, + {modules, [gleam@otp@actor, + gleam@otp@intensity_tracker, + gleam@otp@port, + gleam@otp@supervisor, + gleam@otp@system, + gleam@otp@task, + gleam_otp]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl b/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl new file mode 100644 index 0000000..9381ad2 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl @@ -0,0 +1,28 @@ +-module(gleam_otp). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([main/0]). + +-spec spawn_task(integer()) -> gleam@otp@task:task(nil). +spawn_task(I) -> + gleam@otp@task:async(fun() -> case (I rem 500) =:= 0 of + true -> + gleam@io:println( + <<"Hello from "/utf8, (gleam@int:to_string(I))/binary>> + ); + + false -> + nil + end end). + +-spec main() -> integer(). +main() -> + gleam@io:debug( + gleam_otp_test_external:get_message_queue_length(erlang:self()) + ), + _pipe = gleam@list:range(0, 1000000), + _pipe@1 = gleam@list:map(_pipe, fun spawn_task/1), + gleam@list:each(_pipe@1, fun gleam@otp@task:await_forever/1), + gleam@io:debug( + gleam_otp_test_external:get_message_queue_length(erlang:self()) + ). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam b/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam new file mode 100644 index 0000000..69cdd5b --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam @@ -0,0 +1,27 @@ +import gleam/io +import gleam/int +import gleam/list +import gleam/otp/task +import gleam/erlang/process.{type Pid} + +@external(erlang, "gleam_otp_test_external", "get_message_queue_length") +fn get_message_queue_length(pid pid: Pid) -> Int + +fn spawn_task(i) { + task.async(fn() { + case i % 500 == 0 { + True -> io.println("Hello from " <> int.to_string(i)) + False -> Nil + } + }) +} + +pub fn main() { + io.debug(get_message_queue_length(process.self())) + + list.range(0, 1_000_000) + |> list.map(spawn_task) + |> list.each(task.await_forever) + + io.debug(get_message_queue_length(process.self())) +} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl b/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl new file mode 100644 index 0000000..8910a67 --- /dev/null +++ b/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl @@ -0,0 +1,43 @@ +-module(gleam_otp_external). + +-export([application_stopped/0, convert_system_message/2]). + +% TODO: support other system messages +% {replace_state, StateFn} +% {change_code, Mod, Vsn, Extra} +% {terminate, Reason} +% {debug, {log, Flag}} +% {debug, {trace, Flag}} +% {debug, {log_to_file, FileName}} +% {debug, {statistics, Flag}} +% {debug, no_debug} +% {debug, {install, {Func, FuncState}}} +% {debug, {install, {FuncId, Func, FuncState}}} +% {debug, {remove, FuncOrId}} +% GetStatus(Subject(StatusInfo)) +convert_system_message({From, Ref}, Request) when is_pid(From) -> + Reply = fun(Msg) -> + erlang:send(From, {Ref, Msg}), + nil + end, + System = fun(Callback) -> + {system, {Request, Callback}} + end, + case Request of + get_status -> System(fun(Status) -> Reply(process_status(Status)) end); + get_state -> System(Reply); + suspend -> System(fun() -> Reply(ok) end); + resume -> System(fun() -> Reply(ok) end); + Other -> {unexpeceted, Other} + end. + +process_status({status_info, Module, Parent, Mode, DebugState, State}) -> + Data = [ + get(), Mode, Parent, DebugState, + [{header, "Status for Gleam process " ++ pid_to_list(self())}, + {data, [{'Status', Mode}, {'Parent', Parent}, {'State', State}]}] + ], + {status, self(), {module, Module}, Data}. + +application_stopped() -> + ok. diff --git a/aoc2023/build/packages/gleam_stdlib/LICENCE b/aoc2023/build/packages/gleam_stdlib/LICENCE new file mode 100644 index 0000000..c1dabd0 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/LICENCE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2018, Louis Pilfold . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/aoc2023/build/packages/gleam_stdlib/README.md b/aoc2023/build/packages/gleam_stdlib/README.md new file mode 100644 index 0000000..05c68ca --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/README.md @@ -0,0 +1,39 @@ +# stdlib + +GitHub release +Discord chat +![CI](https://github.com/gleam-lang/stdlib/workflows/CI/badge.svg?branch=main) + +Gleam's standard library! +Documentation available on [HexDocs](https://hexdocs.pm/gleam_stdlib/). + +## Installation + +Add `gleam_stdlib` to your Gleam project. + +```sh +gleam add gleam_stdlib +``` + +## Usage + +Import the modules you want to use and write some code! + +```gleam +import gleam/string + +pub fn greet(name: String) -> String { + string.concat(["Hello ", name, "!"]) +} +``` + +## Targets + +Gleam's standard library supports both targets: Erlang and JavaScript. + +### Compatibility + +This library is compatible with all versions of Erlang/OTP, NodeJS, and +major browsers that are currently supported by their maintainers. If you +have a compatibility issue with any platform open an issue and we'll see +what we can do to help. diff --git a/aoc2023/build/packages/gleam_stdlib/gleam.toml b/aoc2023/build/packages/gleam_stdlib/gleam.toml new file mode 100644 index 0000000..0cb0531 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/gleam.toml @@ -0,0 +1,16 @@ +name = "gleam_stdlib" +version = "0.33.0" +gleam = ">= 0.32.0" +licences = ["Apache-2.0"] +description = "A standard library for the Gleam programming language" + +repository = { type = "github", user = "gleam-lang", repo = "stdlib" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] + +[javascript.deno] +allow_read = [ + "./", +] diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl new file mode 100644 index 0000000..b1135f2 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl @@ -0,0 +1,5 @@ +-record(decode_error, { + expected :: binary(), + found :: binary(), + path :: list(binary()) +}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl new file mode 100644 index 0000000..b0d08dc --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl @@ -0,0 +1 @@ +-record(iterator, {continuation :: fun(() -> gleam@iterator:action(any()))}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl new file mode 100644 index 0000000..1f61922 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl @@ -0,0 +1 @@ +-record(next, {element :: any(), accumulator :: any()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl new file mode 100644 index 0000000..88ac25e --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl @@ -0,0 +1 @@ +-record(queue, {in :: list(any()), out :: list(any())}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl new file mode 100644 index 0000000..ad5511e --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl @@ -0,0 +1 @@ +-record(compile_error, {error :: binary(), byte_index :: integer()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl new file mode 100644 index 0000000..4216619 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl @@ -0,0 +1,4 @@ +-record(match, { + content :: binary(), + submatches :: list(gleam@option:option(binary())) +}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl new file mode 100644 index 0000000..0074603 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl @@ -0,0 +1 @@ +-record(options, {case_insensitive :: boolean(), multi_line :: boolean()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl new file mode 100644 index 0000000..6e1e226 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl @@ -0,0 +1 @@ +-record(set, {map :: gleam@dict:dict(any(), list(nil))}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl new file mode 100644 index 0000000..50150f4 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl @@ -0,0 +1,9 @@ +-record(uri, { + scheme :: gleam@option:option(binary()), + userinfo :: gleam@option:option(binary()), + host :: gleam@option:option(binary()), + port :: gleam@option:option(integer()), + path :: binary(), + 'query' :: gleam@option:option(binary()), + fragment :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/packages/gleam_stdlib/src/dict.mjs b/aoc2023/build/packages/gleam_stdlib/src/dict.mjs new file mode 100644 index 0000000..a8309e0 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/dict.mjs @@ -0,0 +1,957 @@ +/** + * This file uses jsdoc to annotate types. + * These types can be checked using the typescript compiler with "checkjs" option. + */ + +import { isEqual } from "./gleam.mjs"; + +const referenceMap = new WeakMap(); +const tempDataView = new DataView(new ArrayBuffer(8)); +let referenceUID = 0; +/** + * hash the object by reference using a weak map and incrementing uid + * @param {any} o + * @returns {number} + */ +function hashByReference(o) { + const known = referenceMap.get(o); + if (known !== undefined) { + return known; + } + const hash = referenceUID++; + if (referenceUID === 0x7fffffff) { + referenceUID = 0; + } + referenceMap.set(o, hash); + return hash; +} +/** + * merge two hashes in an order sensitive way + * @param {number} a + * @param {number} b + * @returns {number} + */ +function hashMerge(a, b) { + return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; +} +/** + * standard string hash popularised by java + * @param {string} s + * @returns {number} + */ +function hashString(s) { + let hash = 0; + const len = s.length; + for (let i = 0; i < len; i++) { + hash = (Math.imul(31, hash) + s.charCodeAt(i)) | 0; + } + return hash; +} +/** + * hash a number by converting to two integers and do some jumbling + * @param {number} n + * @returns {number} + */ +function hashNumber(n) { + tempDataView.setFloat64(0, n); + const i = tempDataView.getInt32(0); + const j = tempDataView.getInt32(4); + return Math.imul(0x45d9f3b, (i >> 16) ^ i) ^ j; +} +/** + * hash a BigInt by converting it to a string and hashing that + * @param {BigInt} n + * @returns {number} + */ +function hashBigInt(n) { + return hashString(n.toString()); +} +/** + * hash any js object + * @param {any} o + * @returns {number} + */ +function hashObject(o) { + const proto = Object.getPrototypeOf(o); + if (proto !== null && typeof proto.hashCode === "function") { + try { + const code = o.hashCode(o); + if (typeof code === "number") { + return code; + } + } catch {} + } + if (o instanceof Promise || o instanceof WeakSet || o instanceof WeakMap) { + return hashByReference(o); + } + if (o instanceof Date) { + return hashNumber(o.getTime()); + } + let h = 0; + if (o instanceof ArrayBuffer) { + o = new Uint8Array(o); + } + if (Array.isArray(o) || o instanceof Uint8Array) { + for (let i = 0; i < o.length; i++) { + h = (Math.imul(31, h) + getHash(o[i])) | 0; + } + } else if (o instanceof Set) { + o.forEach((v) => { + h = (h + getHash(v)) | 0; + }); + } else if (o instanceof Map) { + o.forEach((v, k) => { + h = (h + hashMerge(getHash(v), getHash(k))) | 0; + }); + } else { + const keys = Object.keys(o); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + const v = o[k]; + h = (h + hashMerge(getHash(v), hashString(k))) | 0; + } + } + return h; +} +/** + * hash any js value + * @param {any} u + * @returns {number} + */ +export function getHash(u) { + if (u === null) return 0x42108422; + if (u === undefined) return 0x42108423; + if (u === true) return 0x42108421; + if (u === false) return 0x42108420; + switch (typeof u) { + case "number": + return hashNumber(u); + case "string": + return hashString(u); + case "bigint": + return hashBigInt(u); + case "object": + return hashObject(u); + case "symbol": + return hashByReference(u); + case "function": + return hashByReference(u); + default: + return 0; // should be unreachable + } +} +/** + * @template K,V + * @typedef {ArrayNode | IndexNode | CollisionNode} Node + */ +/** + * @template K,V + * @typedef {{ type: typeof ENTRY, k: K, v: V }} Entry + */ +/** + * @template K,V + * @typedef {{ type: typeof ARRAY_NODE, size: number, array: (undefined | Entry | Node)[] }} ArrayNode + */ +/** + * @template K,V + * @typedef {{ type: typeof INDEX_NODE, bitmap: number, array: (Entry | Node)[] }} IndexNode + */ +/** + * @template K,V + * @typedef {{ type: typeof COLLISION_NODE, hash: number, array: Entry[] }} CollisionNode + */ +/** + * @typedef {{ val: boolean }} Flag + */ +const SHIFT = 5; // number of bits you need to shift by to get the next bucket +const BUCKET_SIZE = Math.pow(2, SHIFT); +const MASK = BUCKET_SIZE - 1; // used to zero out all bits not in the bucket +const MAX_INDEX_NODE = BUCKET_SIZE / 2; // when does index node grow into array node +const MIN_ARRAY_NODE = BUCKET_SIZE / 4; // when does array node shrink to index node +const ENTRY = 0; +const ARRAY_NODE = 1; +const INDEX_NODE = 2; +const COLLISION_NODE = 3; +/** @type {IndexNode} */ +const EMPTY = { + type: INDEX_NODE, + bitmap: 0, + array: [], +}; +/** + * Mask the hash to get only the bucket corresponding to shift + * @param {number} hash + * @param {number} shift + * @returns {number} + */ +function mask(hash, shift) { + return (hash >>> shift) & MASK; +} +/** + * Set only the Nth bit where N is the masked hash + * @param {number} hash + * @param {number} shift + * @returns {number} + */ +function bitpos(hash, shift) { + return 1 << mask(hash, shift); +} +/** + * Count the number of 1 bits in a number + * @param {number} x + * @returns {number} + */ +function bitcount(x) { + x -= (x >> 1) & 0x55555555; + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0f0f0f0f; + x += x >> 8; + x += x >> 16; + return x & 0x7f; +} +/** + * Calculate the array index of an item in a bitmap index node + * @param {number} bitmap + * @param {number} bit + * @returns {number} + */ +function index(bitmap, bit) { + return bitcount(bitmap & (bit - 1)); +} +/** + * Efficiently copy an array and set one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @param {T} val + * @returns {T[]} + */ +function cloneAndSet(arr, at, val) { + const len = arr.length; + const out = new Array(len); + for (let i = 0; i < len; ++i) { + out[i] = arr[i]; + } + out[at] = val; + return out; +} +/** + * Efficiently copy an array and insert one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @param {T} val + * @returns {T[]} + */ +function spliceIn(arr, at, val) { + const len = arr.length; + const out = new Array(len + 1); + let i = 0; + let g = 0; + while (i < at) { + out[g++] = arr[i++]; + } + out[g++] = val; + while (i < len) { + out[g++] = arr[i++]; + } + return out; +} +/** + * Efficiently copy an array and remove one value at an index + * @template T + * @param {T[]} arr + * @param {number} at + * @returns {T[]} + */ +function spliceOut(arr, at) { + const len = arr.length; + const out = new Array(len - 1); + let i = 0; + let g = 0; + while (i < at) { + out[g++] = arr[i++]; + } + ++i; + while (i < len) { + out[g++] = arr[i++]; + } + return out; +} +/** + * Create a new node containing two entries + * @template K,V + * @param {number} shift + * @param {K} key1 + * @param {V} val1 + * @param {number} key2hash + * @param {K} key2 + * @param {V} val2 + * @returns {Node} + */ +function createNode(shift, key1, val1, key2hash, key2, val2) { + const key1hash = getHash(key1); + if (key1hash === key2hash) { + return { + type: COLLISION_NODE, + hash: key1hash, + array: [ + { type: ENTRY, k: key1, v: val1 }, + { type: ENTRY, k: key2, v: val2 }, + ], + }; + } + const addedLeaf = { val: false }; + return assoc( + assocIndex(EMPTY, shift, key1hash, key1, val1, addedLeaf), + shift, + key2hash, + key2, + val2, + addedLeaf + ); +} +/** + * @template T,K,V + * @callback AssocFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @param {V} val + * @param {Flag} addedLeaf + * @returns {Node} + */ +/** + * Associate a node with a new entry, creating a new node + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assoc(root, shift, hash, key, val, addedLeaf) { + switch (root.type) { + case ARRAY_NODE: + return assocArray(root, shift, hash, key, val, addedLeaf); + case INDEX_NODE: + return assocIndex(root, shift, hash, key, val, addedLeaf); + case COLLISION_NODE: + return assocCollision(root, shift, hash, key, val, addedLeaf); + } +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocArray(root, shift, hash, key, val, addedLeaf) { + const idx = mask(hash, shift); + const node = root.array[idx]; + // if the corresponding index is empty set the index to a newly created node + if (node === undefined) { + addedLeaf.val = true; + return { + type: ARRAY_NODE, + size: root.size + 1, + array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), + }; + } + if (node.type === ENTRY) { + // if keys are equal replace the entry + if (isEqual(key, node.k)) { + if (val === node.v) { + return root; + } + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }), + }; + } + // otherwise upgrade the entry to a node and insert + addedLeaf.val = true; + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet( + root.array, + idx, + createNode(shift + SHIFT, node.k, node.v, hash, key, val) + ), + }; + } + // otherwise call assoc on the child node + const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); + // if the child node hasn't changed just return the old root + if (n === node) { + return root; + } + // otherwise set the index to the new node + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, n), + }; +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocIndex(root, shift, hash, key, val, addedLeaf) { + const bit = bitpos(hash, shift); + const idx = index(root.bitmap, bit); + // if there is already a item at this hash index.. + if ((root.bitmap & bit) !== 0) { + // if there is a node at the index (not an entry), call assoc on the child node + const node = root.array[idx]; + if (node.type !== ENTRY) { + const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); + if (n === node) { + return root; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, n), + }; + } + // otherwise there is an entry at the index + // if the keys are equal replace the entry with the updated value + const nodeKey = node.k; + if (isEqual(key, nodeKey)) { + if (val === node.v) { + return root; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }), + }; + } + // if the keys are not equal, replace the entry with a new child node + addedLeaf.val = true; + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet( + root.array, + idx, + createNode(shift + SHIFT, nodeKey, node.v, hash, key, val) + ), + }; + } else { + // else there is currently no item at the hash index + const n = root.array.length; + // if the number of nodes is at the maximum, expand this node into an array node + if (n >= MAX_INDEX_NODE) { + // create a 32 length array for the new array node (one for each bit in the hash) + const nodes = new Array(32); + // create and insert a node for the new entry + const jdx = mask(hash, shift); + nodes[jdx] = assocIndex(EMPTY, shift + SHIFT, hash, key, val, addedLeaf); + let j = 0; + let bitmap = root.bitmap; + // place each item in the index node into the correct spot in the array node + // loop through all 32 bits / array positions + for (let i = 0; i < 32; i++) { + if ((bitmap & 1) !== 0) { + const node = root.array[j++]; + nodes[i] = node; + } + // shift the bitmap to process the next bit + bitmap = bitmap >>> 1; + } + return { + type: ARRAY_NODE, + size: n + 1, + array: nodes, + }; + } else { + // else there is still space in this index node + // simply insert a new entry at the hash index + const newArray = spliceIn(root.array, idx, { + type: ENTRY, + k: key, + v: val, + }); + addedLeaf.val = true; + return { + type: INDEX_NODE, + bitmap: root.bitmap | bit, + array: newArray, + }; + } + } +} +/** + * @template T,K,V + * @type {AssocFunction,K,V>} + */ +function assocCollision(root, shift, hash, key, val, addedLeaf) { + // if there is a hash collision + if (hash === root.hash) { + const idx = collisionIndexOf(root, key); + // if this key already exists replace the entry with the new value + if (idx !== -1) { + const entry = root.array[idx]; + if (entry.v === val) { + return root; + } + return { + type: COLLISION_NODE, + hash: hash, + array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), + }; + } + // otherwise insert the entry at the end of the array + const size = root.array.length; + addedLeaf.val = true; + return { + type: COLLISION_NODE, + hash: hash, + array: cloneAndSet(root.array, size, { type: ENTRY, k: key, v: val }), + }; + } + // if there is no hash collision, upgrade to an index node + return assoc( + { + type: INDEX_NODE, + bitmap: bitpos(root.hash, shift), + array: [root], + }, + shift, + hash, + key, + val, + addedLeaf + ); +} +/** + * Find the index of a key in the collision node's array + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {number} + */ +function collisionIndexOf(root, key) { + const size = root.array.length; + for (let i = 0; i < size; i++) { + if (isEqual(key, root.array[i].k)) { + return i; + } + } + return -1; +} +/** + * @template T,K,V + * @callback FindFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @returns {undefined | Entry} + */ +/** + * Return the found entry or undefined if not present in the root + * @template K,V + * @type {FindFunction,K,V>} + */ +function find(root, shift, hash, key) { + switch (root.type) { + case ARRAY_NODE: + return findArray(root, shift, hash, key); + case INDEX_NODE: + return findIndex(root, shift, hash, key); + case COLLISION_NODE: + return findCollision(root, key); + } +} +/** + * @template K,V + * @type {FindFunction,K,V>} + */ +function findArray(root, shift, hash, key) { + const idx = mask(hash, shift); + const node = root.array[idx]; + if (node === undefined) { + return undefined; + } + if (node.type !== ENTRY) { + return find(node, shift + SHIFT, hash, key); + } + if (isEqual(key, node.k)) { + return node; + } + return undefined; +} +/** + * @template K,V + * @type {FindFunction,K,V>} + */ +function findIndex(root, shift, hash, key) { + const bit = bitpos(hash, shift); + if ((root.bitmap & bit) === 0) { + return undefined; + } + const idx = index(root.bitmap, bit); + const node = root.array[idx]; + if (node.type !== ENTRY) { + return find(node, shift + SHIFT, hash, key); + } + if (isEqual(key, node.k)) { + return node; + } + return undefined; +} +/** + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {undefined | Entry} + */ +function findCollision(root, key) { + const idx = collisionIndexOf(root, key); + if (idx < 0) { + return undefined; + } + return root.array[idx]; +} +/** + * @template T,K,V + * @callback WithoutFunction + * @param {T} root + * @param {number} shift + * @param {number} hash + * @param {K} key + * @returns {undefined | Node} + */ +/** + * Remove an entry from the root, returning the updated root. + * Returns undefined if the node should be removed from the parent. + * @template K,V + * @type {WithoutFunction,K,V>} + * */ +function without(root, shift, hash, key) { + switch (root.type) { + case ARRAY_NODE: + return withoutArray(root, shift, hash, key); + case INDEX_NODE: + return withoutIndex(root, shift, hash, key); + case COLLISION_NODE: + return withoutCollision(root, key); + } +} +/** + * @template K,V + * @type {WithoutFunction,K,V>} + */ +function withoutArray(root, shift, hash, key) { + const idx = mask(hash, shift); + const node = root.array[idx]; + if (node === undefined) { + return root; // already empty + } + let n = undefined; + // if node is an entry and the keys are not equal there is nothing to remove + // if node is not an entry do a recursive call + if (node.type === ENTRY) { + if (!isEqual(node.k, key)) { + return root; // no changes + } + } else { + n = without(node, shift + SHIFT, hash, key); + if (n === node) { + return root; // no changes + } + } + // if the recursive call returned undefined the node should be removed + if (n === undefined) { + // if the number of child nodes is at the minimum, pack into an index node + if (root.size <= MIN_ARRAY_NODE) { + const arr = root.array; + const out = new Array(root.size - 1); + let i = 0; + let j = 0; + let bitmap = 0; + while (i < idx) { + const nv = arr[i]; + if (nv !== undefined) { + out[j] = nv; + bitmap |= 1 << i; + ++j; + } + ++i; + } + ++i; // skip copying the removed node + while (i < arr.length) { + const nv = arr[i]; + if (nv !== undefined) { + out[j] = nv; + bitmap |= 1 << i; + ++j; + } + ++i; + } + return { + type: INDEX_NODE, + bitmap: bitmap, + array: out, + }; + } + return { + type: ARRAY_NODE, + size: root.size - 1, + array: cloneAndSet(root.array, idx, n), + }; + } + return { + type: ARRAY_NODE, + size: root.size, + array: cloneAndSet(root.array, idx, n), + }; +} +/** + * @template K,V + * @type {WithoutFunction,K,V>} + */ +function withoutIndex(root, shift, hash, key) { + const bit = bitpos(hash, shift); + if ((root.bitmap & bit) === 0) { + return root; // already empty + } + const idx = index(root.bitmap, bit); + const node = root.array[idx]; + // if the item is not an entry + if (node.type !== ENTRY) { + const n = without(node, shift + SHIFT, hash, key); + if (n === node) { + return root; // no changes + } + // if not undefined, the child node still has items, so update it + if (n !== undefined) { + return { + type: INDEX_NODE, + bitmap: root.bitmap, + array: cloneAndSet(root.array, idx, n), + }; + } + // otherwise the child node should be removed + // if it was the only child node, remove this node from the parent + if (root.bitmap === bit) { + return undefined; + } + // otherwise just remove the child node + return { + type: INDEX_NODE, + bitmap: root.bitmap ^ bit, + array: spliceOut(root.array, idx), + }; + } + // otherwise the item is an entry, remove it if the key matches + if (isEqual(key, node.k)) { + if (root.bitmap === bit) { + return undefined; + } + return { + type: INDEX_NODE, + bitmap: root.bitmap ^ bit, + array: spliceOut(root.array, idx), + }; + } + return root; +} +/** + * @template K,V + * @param {CollisionNode} root + * @param {K} key + * @returns {undefined | Node} + */ +function withoutCollision(root, key) { + const idx = collisionIndexOf(root, key); + // if the key not found, no changes + if (idx < 0) { + return root; + } + // otherwise the entry was found, remove it + // if it was the only entry in this node, remove the whole node + if (root.array.length === 1) { + return undefined; + } + // otherwise just remove the entry + return { + type: COLLISION_NODE, + hash: root.hash, + array: spliceOut(root.array, idx), + }; +} +/** + * @template K,V + * @param {undefined | Node} root + * @param {(value:V,key:K)=>void} fn + * @returns {void} + */ +function forEach(root, fn) { + if (root === undefined) { + return; + } + const items = root.array; + const size = items.length; + for (let i = 0; i < size; i++) { + const item = items[i]; + if (item === undefined) { + continue; + } + if (item.type === ENTRY) { + fn(item.v, item.k); + continue; + } + forEach(item, fn); + } +} +/** + * Extra wrapper to keep track of Dict size and clean up the API + * @template K,V + */ +export default class Dict { + /** + * @template V + * @param {Record} o + * @returns {Dict} + */ + static fromObject(o) { + const keys = Object.keys(o); + /** @type Dict */ + let m = Dict.new(); + for (let i = 0; i < keys.length; i++) { + const k = keys[i]; + m = m.set(k, o[k]); + } + return m; + } + /** + * @template K,V + * @param {Map} o + * @returns {Dict} + */ + static fromMap(o) { + /** @type Dict */ + let m = Dict.new(); + o.forEach((v, k) => { + m = m.set(k, v); + }); + return m; + } + static new() { + return new Dict(undefined, 0); + } + /** + * @param {undefined | Node} root + * @param {number} size + */ + constructor(root, size) { + this.root = root; + this.size = size; + } + /** + * @template NotFound + * @param {K} key + * @param {NotFound} notFound + * @returns {NotFound | V} + */ + get(key, notFound) { + if (this.root === undefined) { + return notFound; + } + const found = find(this.root, 0, getHash(key), key); + if (found === undefined) { + return notFound; + } + return found.v; + } + /** + * @param {K} key + * @param {V} val + * @returns {Dict} + */ + set(key, val) { + const addedLeaf = { val: false }; + const root = this.root === undefined ? EMPTY : this.root; + const newRoot = assoc(root, 0, getHash(key), key, val, addedLeaf); + if (newRoot === this.root) { + return this; + } + return new Dict(newRoot, addedLeaf.val ? this.size + 1 : this.size); + } + /** + * @param {K} key + * @returns {Dict} + */ + delete(key) { + if (this.root === undefined) { + return this; + } + const newRoot = without(this.root, 0, getHash(key), key); + if (newRoot === this.root) { + return this; + } + if (newRoot === undefined) { + return Dict.new(); + } + return new Dict(newRoot, this.size - 1); + } + /** + * @param {K} key + * @returns {boolean} + */ + has(key) { + if (this.root === undefined) { + return false; + } + return find(this.root, 0, getHash(key), key) !== undefined; + } + /** + * @returns {[K,V][]} + */ + entries() { + if (this.root === undefined) { + return []; + } + /** @type [K,V][] */ + const result = []; + this.forEach((v, k) => result.push([k, v])); + return result; + } + /** + * + * @param {(val:V,key:K)=>void} fn + */ + forEach(fn) { + forEach(this.root, fn); + } + hashCode() { + let h = 0; + this.forEach((v, k) => { + h = (h + hashMerge(getHash(v), getHash(k))) | 0; + }); + return h; + } + /** + * @param {unknown} o + * @returns {boolean} + */ + equals(o) { + if (!(o instanceof Dict) || this.size !== o.size) { + return false; + } + let equal = true; + this.forEach((v, k) => { + equal = equal && isEqual(o.get(k, !v), v); + }); + return equal; + } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam new file mode 100644 index 0000000..eab2f0b --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam @@ -0,0 +1,21 @@ +import gleam/bit_array + +@deprecated("Please use `base64_encode` in the `gleam/bit_array` module instead.") +pub fn encode64(input: BitArray, padding: Bool) -> String { + bit_array.base64_encode(input, padding) +} + +@deprecated("Please use `base64_decode` in the `gleam/bit_array` module instead.") +pub fn decode64(encoded: String) -> Result(BitArray, Nil) { + bit_array.base64_decode(encoded) +} + +@deprecated("Please use `base64_url_encode` in the `gleam/bit_array` module instead.") +pub fn url_encode64(input: BitArray, padding: Bool) -> String { + bit_array.base64_url_encode(input, padding) +} + +@deprecated("Please use `base64_url_decode` in the `gleam/bit_array` module instead.") +pub fn url_decode64(encoded: String) -> Result(BitArray, Nil) { + bit_array.base64_url_decode(encoded) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam new file mode 100644 index 0000000..79860e9 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam @@ -0,0 +1,157 @@ +//// BitArrays are a sequence of binary data of any length. + +import gleam/string + +/// Converts a UTF-8 `String` type into a `BitArray`. +/// +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "bit_array_from_string") +pub fn from_string(x: String) -> BitArray + +/// Returns an integer which is the number of bytes in the bit array. +/// +@external(erlang, "erlang", "byte_size") +@external(javascript, "../gleam_stdlib.mjs", "length") +pub fn byte_size(x: BitArray) -> Int + +/// Creates a new bit array by joining two bit arrays. +/// +/// ## Examples +/// +/// ```gleam +/// > append(to: from_string("butter"), suffix: from_string("fly")) +/// from_string("butterfly") +/// ``` +/// +pub fn append(to first: BitArray, suffix second: BitArray) -> BitArray { + concat([first, second]) +} + +/// Extracts a sub-section of a bit array. +/// +/// The slice will start at given position and continue up to specified +/// length. +/// A negative length can be used to extract bytes at the end of a bit array. +/// +/// This function runs in constant time. +/// +@external(erlang, "gleam_stdlib", "bit_array_slice") +@external(javascript, "../gleam_stdlib.mjs", "bit_array_slice") +pub fn slice( + from string: BitArray, + at position: Int, + take length: Int, +) -> Result(BitArray, Nil) + +/// Tests to see whether a bit array is valid UTF-8. +/// +pub fn is_utf8(bits: BitArray) -> Bool { + do_is_utf8(bits) +} + +@target(erlang) +fn do_is_utf8(bits: BitArray) -> Bool { + case bits { + <<>> -> True + <<_:utf8, rest:bytes>> -> do_is_utf8(rest) + _ -> False + } +} + +@target(javascript) +fn do_is_utf8(bits: BitArray) -> Bool { + case to_string(bits) { + Ok(_) -> True + _ -> False + } +} + +/// Converts a bit array to a string. +/// +/// Returns an error if the bit array is invalid UTF-8 data. +/// +pub fn to_string(bits: BitArray) -> Result(String, Nil) { + do_to_string(bits) +} + +@target(erlang) +@external(erlang, "gleam_stdlib", "identity") +fn unsafe_to_string(a: BitArray) -> String + +@target(erlang) +fn do_to_string(bits: BitArray) -> Result(String, Nil) { + case is_utf8(bits) { + True -> Ok(unsafe_to_string(bits)) + False -> Error(Nil) + } +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "bit_array_to_string") +fn do_to_string(a: BitArray) -> Result(String, Nil) + +/// Creates a new bit array by joining multiple binaries. +/// +/// ## Examples +/// +/// ```gleam +/// > concat([from_string("butter"), from_string("fly")]) +/// from_string("butterfly") +/// ``` +/// +@external(erlang, "gleam_stdlib", "bit_array_concat") +@external(javascript, "../gleam_stdlib.mjs", "bit_array_concat") +pub fn concat(bit_arrays: List(BitArray)) -> BitArray + +/// Encodes a BitArray into a base 64 encoded string. +/// +pub fn base64_encode(input: BitArray, padding: Bool) -> String { + let encoded = encode64(input) + case padding { + True -> encoded + False -> string.replace(encoded, "=", "") + } +} + +@external(erlang, "base64", "encode") +@external(javascript, "../gleam_stdlib.mjs", "encode64") +fn encode64(a: BitArray) -> String + +/// Decodes a base 64 encoded string into a `BitArray`. +/// +pub fn base64_decode(encoded: String) -> Result(BitArray, Nil) { + let padded = case byte_size(from_string(encoded)) % 4 { + 0 -> encoded + n -> string.append(encoded, string.repeat("=", 4 - n)) + } + decode64(padded) +} + +@external(erlang, "gleam_stdlib", "base_decode64") +@external(javascript, "../gleam_stdlib.mjs", "decode64") +fn decode64(a: String) -> Result(BitArray, Nil) + +/// Encodes a `BitArray` into a base 64 encoded string with URL and filename safe alphabet. +/// +pub fn base64_url_encode(input: BitArray, padding: Bool) -> String { + base64_encode(input, padding) + |> string.replace("+", "-") + |> string.replace("/", "_") +} + +/// Decodes a base 64 encoded string with URL and filename safe alphabet into a `BitArray`. +/// +pub fn base64_url_decode(encoded: String) -> Result(BitArray, Nil) { + encoded + |> string.replace("-", "+") + |> string.replace("_", "/") + |> base64_decode() +} + +@external(erlang, "binary", "encode_hex") +@external(javascript, "../gleam_stdlib.mjs", "base16_encode") +pub fn base16_encode(input: BitArray) -> String + +@external(erlang, "gleam_stdlib", "base16_decode") +@external(javascript, "../gleam_stdlib.mjs", "base16_decode") +pub fn base16_decode(input: String) -> Result(BitArray, Nil) diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam new file mode 100644 index 0000000..ce6fe52 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam @@ -0,0 +1,80 @@ +//// This module has been deprecated in favour of `gleam/bytes_builder`. + +import gleam/bytes_builder +import gleam/string_builder.{type StringBuilder} + +pub type BitBuilder = + bytes_builder.BytesBuilder + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn new() -> BitBuilder { + bytes_builder.new() +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn prepend(to: BitBuilder, prefix: BitArray) -> BitBuilder { + bytes_builder.prepend(to, prefix) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn append(to: BitBuilder, suffix: BitArray) -> BitBuilder { + bytes_builder.append(to, suffix) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn prepend_builder(to: BitBuilder, prefix: BitBuilder) -> BitBuilder { + bytes_builder.prepend_builder(to, prefix) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn append_builder( + to first: BitBuilder, + suffix second: BitBuilder, +) -> BitBuilder { + bytes_builder.append_builder(first, second) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn prepend_string(to: BitBuilder, prefix: String) -> BitBuilder { + bytes_builder.prepend_string(to, prefix) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn append_string(to: BitBuilder, suffix: String) -> BitBuilder { + bytes_builder.append_string(to, suffix) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn concat(builders: List(BitBuilder)) -> BitBuilder { + bytes_builder.concat(builders) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn concat_bit_strings(bits: List(BitArray)) -> BitBuilder { + bytes_builder.concat_bit_arrays(bits) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn from_string(string: String) -> BitBuilder { + bytes_builder.from_string(string) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn from_string_builder(builder: StringBuilder) -> BitBuilder { + bytes_builder.from_string_builder(builder) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn from_bit_string(bits: BitArray) -> BitBuilder { + bytes_builder.from_bit_array(bits) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn to_bit_string(builder: BitBuilder) -> BitArray { + bytes_builder.to_bit_array(builder) +} + +@deprecated("Please use the `gleam/bytes_builder` module instead.") +pub fn byte_size(builder: BitBuilder) -> Int { + bytes_builder.byte_size(builder) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam new file mode 100644 index 0000000..b703da0 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam @@ -0,0 +1,43 @@ +//// This module has been deprecated. Please use the `gleam/bit_array` module +//// instead. + +import gleam/bit_array + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn from_string(x: String) -> BitArray { + bit_array.from_string(x) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn byte_size(x: BitArray) -> Int { + bit_array.byte_size(x) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn append(to first: BitArray, suffix second: BitArray) -> BitArray { + bit_array.append(first, second) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn slice( + from string: BitArray, + at position: Int, + take length: Int, +) -> Result(BitArray, Nil) { + bit_array.slice(string, position, length) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn is_utf8(bits: BitArray) -> Bool { + bit_array.is_utf8(bits) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn to_string(bits: BitArray) -> Result(String, Nil) { + bit_array.to_string(bits) +} + +@deprecated("Please use the `gleam/bit_array` module instead.") +pub fn concat(bit_strings: List(BitArray)) -> BitArray { + bit_array.concat(bit_strings) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam new file mode 100644 index 0000000..91bd6b7 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam @@ -0,0 +1,428 @@ +//// A type with two possible values, `True` and `False`. Used to indicate whether +//// things are... true or false! +//// +//// Often is it clearer and offers more type safety to define a custom type +//// than to use `Bool`. For example, rather than having a `is_teacher: Bool` +//// field consider having a `role: SchoolRole` field where `SchoolRole` is a custom +//// type that can be either `Student` or `Teacher`. + +import gleam/order.{type Order} + +/// Returns the and of two bools, but it evaluates both arguments. +/// +/// It's the function equivalent of the `&&` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > and(True, True) +/// True +/// ``` +/// +/// ```gleam +/// > and(False, True) +/// False +/// ``` +/// +/// ```gleam +/// > False |> and(True) +/// False +/// ``` +/// +pub fn and(a: Bool, b: Bool) -> Bool { + a && b +} + +/// Returns the or of two bools, but it evaluates both arguments. +/// +/// It's the function equivalent of the `||` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > or(True, True) +/// True +/// ``` +/// +/// ```gleam +/// > or(False, True) +/// True +/// ``` +/// +/// ```gleam +/// > False |> or(True) +/// True +/// ``` +/// +pub fn or(a: Bool, b: Bool) -> Bool { + a || b +} + +/// Returns the opposite bool value. +/// +/// This is the same as the `!` or `not` operators in some other languages. +/// +/// ## Examples +/// +/// ```gleam +/// > negate(True) +/// False +/// ``` +/// +/// ```gleam +/// > negate(False) +/// True +/// ``` +/// +pub fn negate(bool: Bool) -> Bool { + case bool { + True -> False + False -> True + } +} + +/// Returns the nor of two bools. +/// +/// ## Examples +/// +/// ```gleam +/// > nor(False, False) +/// True +/// ``` +/// +/// ```gleam +/// > nor(False, True) +/// False +/// ``` +/// +/// ```gleam +/// > nor(True, False) +/// False +/// ``` +/// +/// ```gleam +/// > nor(True, True) +/// False +/// ``` +/// +pub fn nor(a: Bool, b: Bool) -> Bool { + case a, b { + False, False -> True + False, True -> False + True, False -> False + True, True -> False + } +} + +/// Returns the nand of two bools. +/// +/// ## Examples +/// +/// ```gleam +/// > nand(False, False) +/// True +/// ``` +/// +/// ```gleam +/// > nand(False, True) +/// True +/// ``` +/// +/// ```gleam +/// > nand(True, False) +/// True +/// ``` +/// +/// ```gleam +/// > nand(True, True) +/// False +/// ``` +/// +pub fn nand(a: Bool, b: Bool) -> Bool { + case a, b { + False, False -> True + False, True -> True + True, False -> True + True, True -> False + } +} + +/// Returns the exclusive or of two bools. +/// +/// ## Examples +/// +/// ```gleam +/// > exclusive_or(False, False) +/// False +/// ``` +/// +/// ```gleam +/// > exclusive_or(False, True) +/// True +/// ``` +/// +/// ```gleam +/// > exclusive_or(True, False) +/// True +/// ``` +/// +/// ```gleam +/// > exclusive_or(True, True) +/// False +/// ``` +/// +pub fn exclusive_or(a: Bool, b: Bool) -> Bool { + case a, b { + False, False -> False + False, True -> True + True, False -> True + True, True -> False + } +} + +/// Returns the exclusive nor of two bools. +/// +/// ## Examples +/// +/// ```gleam +/// > exclusive_nor(False, False) +/// True +/// ``` +/// +/// ```gleam +/// > exclusive_nor(False, True) +/// False +/// ``` +/// +/// ```gleam +/// > exclusive_nor(True, False) +/// False +/// ``` +/// +/// ```gleam +/// > exclusive_nor(True, True) +/// True +/// ``` +/// +pub fn exclusive_nor(a: Bool, b: Bool) -> Bool { + case a, b { + False, False -> True + False, True -> False + True, False -> False + True, True -> True + } +} + +/// Compares two bools and returns the first value's `Order` to the second. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/order +/// > compare(True, False) +/// order.Gt +/// ``` +/// +pub fn compare(a: Bool, with b: Bool) -> Order { + case a, b { + True, True -> order.Eq + True, False -> order.Gt + False, False -> order.Eq + False, True -> order.Lt + } +} + +/// Returns `True` if either argument's value is `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > max(True, False) +/// True +/// ``` +/// +/// ```gleam +/// > max(False, True) +/// True +/// ``` +/// +/// ```gleam +/// > max(False, False) +/// False +/// ``` +/// +pub fn max(a: Bool, b: Bool) -> Bool { + case a { + True -> True + False -> b + } +} + +/// Returns `False` if either bool value is `False`. +/// +/// ## Examples +/// +/// ```gleam +/// > min(True, False) +/// False +/// ``` +/// +/// ```gleam +/// > min(False, True) +/// False +/// +/// > min(False, False) +/// False +/// ``` +/// +pub fn min(a: Bool, b: Bool) -> Bool { + case a { + False -> False + True -> b + } +} + +/// Returns a numeric representation of the given bool. +/// +/// ## Examples +/// +/// ```gleam +/// > to_int(True) +/// 1 +/// +/// > to_int(False) +/// 0 +/// ``` +/// +pub fn to_int(bool: Bool) -> Int { + case bool { + False -> 0 + True -> 1 + } +} + +/// Returns a string representation of the given bool. +/// +/// ## Examples +/// +/// ```gleam +/// > to_string(True) +/// "True" +/// ``` +/// +/// ```gleam +/// > to_string(False) +/// "False" +/// ``` +/// +pub fn to_string(bool: Bool) -> String { + case bool { + False -> "False" + True -> "True" + } +} + +/// Run a callback function if the given bool is `False`, otherwise return a +/// default value. +/// +/// With a `use` expression this function can simulate the early-return pattern +/// found in some other programming languages. +/// +/// In a procedural language: +/// +/// ```js +/// if (predicate) return value; +/// // ... +/// ``` +/// +/// In Gleam with a `use` expression: +/// +/// ```gleam +/// use <- guard(when: predicate, return: value) +/// // ... +/// ``` +/// +/// Like everything in Gleam `use` is an expression, so it short circuits the +/// current block, not the entire function. As a result you can assign the value +/// to a variable: +/// +/// ```gleam +/// let x = { +/// use <- guard(when: predicate, return: value) +/// // ... +/// } +/// ``` +/// +/// Note that unlike in procedural languages the `return` value is evaluated +/// even when the predicate is `False`, so it is advisable not to perform +/// expensive computation there. +/// +/// +/// ## Examples +/// +/// ```gleam +/// > let name = "" +/// > use <- guard(when: name == "", return: "Welcome!") +/// > "Hello, " <> name +/// "Welcome!" +/// ``` +/// +/// ```gleam +/// > let name = "Kamaka" +/// > use <- guard(when: name == "", return: "Welcome!") +/// > "Hello, " <> name +/// "Hello, Kamaka" +/// ``` +/// +pub fn guard( + when requirement: Bool, + return consequence: t, + otherwise alternative: fn() -> t, +) -> t { + case requirement { + True -> consequence + False -> alternative() + } +} + +/// Runs a callback function if the given bool is `True`, otherwise runs an +/// alternative callback function. +/// +/// Useful when further computation should be delayed regardless of the given +/// bool's value. +/// +/// See [`guard`](#guard) for more info. +/// +/// ## Examples +/// +/// ```gleam +/// > let name = "Kamaka" +/// > let inquiry = fn() { "How may we address you?" } +/// > use <- lazy_guard(when: name == "", return: inquiry) +/// > "Hello, " <> name +/// "Hello, Kamaka" +/// ``` +/// +/// ```gleam +/// > import gleam/int +/// > let name = "" +/// > let greeting = fn() { "Hello, " <> name } +/// > use <- lazy_guard(when: name == "", otherwise: greeting) +/// > let number = int.random(1, 99) +/// > let name = "User " <> int.to_string(number) +/// > "Welcome, " <> name +/// "Welcome, User 54" +/// ``` +/// +pub fn lazy_guard( + when requirement: Bool, + return consequence: fn() -> a, + otherwise alternative: fn() -> a, +) -> a { + case requirement { + True -> consequence() + False -> alternative() + } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam new file mode 100644 index 0000000..20c145d --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam @@ -0,0 +1,197 @@ +//// BytesBuilder is a type used for efficiently concatenating bytes together +//// without copying. +//// +//// If we append one bit array to another the bit arrays must be copied to a +//// new location in memory so that they can sit together. This behaviour +//// enables efficient reading of the string but copying can be expensive, +//// especially if we want to join many bit arrays together. +//// +//// BytesBuilder is different in that it can be joined together in constant +//// time using minimal memory, and then can be efficiently converted to a +//// bit array using the `to_bit_array` function. +//// +//// Byte builders are always byte aligned, so that a number of bits that is not +//// divisible by 8 will be padded with 0s. +//// +//// On Erlang this type is compatible with Erlang's iolists. + +// TODO: pad bit arrays to byte boundaries when adding to a builder. +import gleam/string_builder.{type StringBuilder} +import gleam/list +import gleam/bit_array + +pub opaque type BytesBuilder { + Bytes(BitArray) + Text(StringBuilder) + Many(List(BytesBuilder)) +} + +/// Create an empty `BytesBuilder`. Useful as the start of a pipe chaining many +/// builders together. +/// +pub fn new() -> BytesBuilder { + concat([]) +} + +/// Prepends a bit array to the start of a builder. +/// +/// Runs in constant time. +/// +pub fn prepend(to second: BytesBuilder, prefix first: BitArray) -> BytesBuilder { + append_builder(from_bit_array(first), second) +} + +/// Appends a bit array to the end of a builder. +/// +/// Runs in constant time. +/// +pub fn append(to first: BytesBuilder, suffix second: BitArray) -> BytesBuilder { + append_builder(first, from_bit_array(second)) +} + +/// Prepends a builder onto the start of another. +/// +/// Runs in constant time. +/// +pub fn prepend_builder( + to second: BytesBuilder, + prefix first: BytesBuilder, +) -> BytesBuilder { + append_builder(first, second) +} + +/// Appends a builder onto the end of another. +/// +/// Runs in constant time. +/// +@external(erlang, "gleam_stdlib", "iodata_append") +pub fn append_builder( + to first: BytesBuilder, + suffix second: BytesBuilder, +) -> BytesBuilder { + case second { + Many(builders) -> Many([first, ..builders]) + _ -> Many([first, second]) + } +} + +/// Prepends a string onto the start of a builder. +/// +/// Runs in constant time when running on Erlang. +/// Runs in linear time with the length of the string otherwise. +/// +pub fn prepend_string( + to second: BytesBuilder, + prefix first: String, +) -> BytesBuilder { + append_builder(from_string(first), second) +} + +/// Appends a string onto the end of a builder. +/// +/// Runs in constant time when running on Erlang. +/// Runs in linear time with the length of the string otherwise. +/// +pub fn append_string( + to first: BytesBuilder, + suffix second: String, +) -> BytesBuilder { + append_builder(first, from_string(second)) +} + +/// Joins a list of builders into a single builder. +/// +/// Runs in constant time. +/// +@external(erlang, "gleam_stdlib", "identity") +pub fn concat(builders: List(BytesBuilder)) -> BytesBuilder { + Many(builders) +} + +/// Joins a list of bit arrays into a single builder. +/// +/// Runs in constant time. +/// +@external(erlang, "gleam_stdlib", "identity") +pub fn concat_bit_arrays(bits: List(BitArray)) -> BytesBuilder { + bits + |> list.map(fn(b) { from_bit_array(b) }) + |> concat() +} + +/// Creates a new builder from a string. +/// +/// Runs in constant time when running on Erlang. +/// Runs in linear time otherwise. +/// +@external(erlang, "gleam_stdlib", "wrap_list") +pub fn from_string(string: String) -> BytesBuilder { + Text(string_builder.from_string(string)) +} + +/// Creates a new builder from a string builder. +/// +/// Runs in constant time when running on Erlang. +/// Runs in linear time otherwise. +/// +@external(erlang, "gleam_stdlib", "wrap_list") +pub fn from_string_builder(builder: StringBuilder) -> BytesBuilder { + Text(builder) +} + +/// Creates a new builder from a bit array. +/// +/// Runs in constant time. +/// +@external(erlang, "gleam_stdlib", "wrap_list") +pub fn from_bit_array(bits: BitArray) -> BytesBuilder { + Bytes(bits) +} + +/// Turns an builder into a bit array. +/// +/// Runs in linear time. +/// +/// When running on Erlang this function is implemented natively by the +/// virtual machine and is highly optimised. +/// +@external(erlang, "erlang", "list_to_bitstring") +pub fn to_bit_array(builder: BytesBuilder) -> BitArray { + [[builder]] + |> to_list([]) + |> list.reverse + |> bit_array.concat +} + +fn to_list( + stack: List(List(BytesBuilder)), + acc: List(BitArray), +) -> List(BitArray) { + case stack { + [] -> acc + + [[], ..remaining_stack] -> to_list(remaining_stack, acc) + + [[Bytes(bits), ..rest], ..remaining_stack] -> + to_list([rest, ..remaining_stack], [bits, ..acc]) + + [[Text(builder), ..rest], ..remaining_stack] -> { + let bits = bit_array.from_string(string_builder.to_string(builder)) + to_list([rest, ..remaining_stack], [bits, ..acc]) + } + + [[Many(builders), ..rest], ..remaining_stack] -> + to_list([builders, rest, ..remaining_stack], acc) + } +} + +/// Returns the size of the builder's content in bytes. +/// +/// Runs in linear time. +/// +@external(erlang, "erlang", "iolist_size") +pub fn byte_size(builder: BytesBuilder) -> Int { + [[builder]] + |> to_list([]) + |> list.fold(0, fn(acc, builder) { bit_array.byte_size(builder) + acc }) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam new file mode 100644 index 0000000..280bf9d --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam @@ -0,0 +1,544 @@ +import gleam/option.{type Option} + +/// A dictionary of keys and values. +/// +/// Any type can be used for the keys and values of a dict, but all the keys +/// must be of the same type and all the values must be of the same type. +/// +/// Each key can only be present in a dict once. +/// +/// Dicts are not ordered in any way, and any unintentional ordering is not to +/// be relied upon in your code as it may change in future versions of Erlang +/// or Gleam. +/// +/// See [the Erlang map module](https://erlang.org/doc/man/maps.html) for more +/// information. +/// +pub type Dict(key, value) + +/// Determines the number of key-value pairs in the dict. +/// This function runs in constant time and does not need to iterate the dict. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> size() +/// 0 +/// ``` +/// +/// ```gleam +/// > new() |> insert("key", "value") |> size() +/// 1 +/// ``` +/// +pub fn size(dict: Dict(k, v)) -> Int { + do_size(dict) +} + +@external(erlang, "maps", "size") +@external(javascript, "../gleam_stdlib.mjs", "map_size") +fn do_size(a: Dict(k, v)) -> Int + +/// Converts the dict to a list of 2-element tuples `#(key, value)`, one for +/// each key-value pair in the dict. +/// +/// The tuples in the list have no specific order. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> to_list() +/// [] +/// ``` +/// +/// ```gleam +/// > new() |> insert("key", 0) |> to_list() +/// [#("key", 0)] +/// ``` +/// +pub fn to_list(dict: Dict(key, value)) -> List(#(key, value)) { + do_to_list(dict) +} + +@external(erlang, "maps", "to_list") +@external(javascript, "../gleam_stdlib.mjs", "map_to_list") +fn do_to_list(a: Dict(key, value)) -> List(#(key, value)) + +/// Converts a list of 2-element tuples `#(key, value)` to a dict. +/// +/// If two tuples have the same key the last one in the list will be the one +/// that is present in the dict. +/// +pub fn from_list(list: List(#(k, v))) -> Dict(k, v) { + do_from_list(list) +} + +@target(erlang) +@external(erlang, "maps", "from_list") +fn do_from_list(a: List(#(key, value))) -> Dict(key, value) + +@target(javascript) +fn fold_list_of_pair( + over list: List(#(k, v)), + from initial: Dict(k, v), +) -> Dict(k, v) { + case list { + [] -> initial + [x, ..rest] -> fold_list_of_pair(rest, insert(initial, x.0, x.1)) + } +} + +@target(javascript) +fn do_from_list(list: List(#(k, v))) -> Dict(k, v) { + fold_list_of_pair(list, new()) +} + +/// Determines whether or not a value present in the dict for a given key. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> insert("a", 0) |> has_key("a") +/// True +/// ``` +/// +/// ```gleam +/// > new() |> insert("a", 0) |> has_key("b") +/// False +/// ``` +/// +pub fn has_key(dict: Dict(k, v), key: k) -> Bool { + do_has_key(key, dict) +} + +@target(erlang) +@external(erlang, "maps", "is_key") +fn do_has_key(a: key, b: Dict(key, v)) -> Bool + +@target(javascript) +fn do_has_key(key: k, dict: Dict(k, v)) -> Bool { + get(dict, key) != Error(Nil) +} + +/// Creates a fresh dict that contains no values. +/// +pub fn new() -> Dict(key, value) { + do_new() +} + +@external(erlang, "maps", "new") +@external(javascript, "../gleam_stdlib.mjs", "new_map") +fn do_new() -> Dict(key, value) + +/// Fetches a value from a dict for a given key. +/// +/// The dict may not have a value for the key, so the value is wrapped in a +/// `Result`. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> insert("a", 0) |> get("a") +/// Ok(0) +/// ``` +/// +/// ```gleam +/// > new() |> insert("a", 0) |> get("b") +/// Error(Nil) +/// ``` +/// +pub fn get(from: Dict(key, value), get: key) -> Result(value, Nil) { + do_get(from, get) +} + +@external(erlang, "gleam_stdlib", "map_get") +@external(javascript, "../gleam_stdlib.mjs", "map_get") +fn do_get(a: Dict(key, value), b: key) -> Result(value, Nil) + +/// Inserts a value into the dict with the given key. +/// +/// If the dict already has a value for the given key then the value is +/// replaced with the new value. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> insert("a", 0) |> to_list +/// [#("a", 0)] +/// ``` +/// +/// ```gleam +/// > new() |> insert("a", 0) |> insert("a", 5) |> to_list +/// [#("a", 5)] +/// ``` +/// +pub fn insert(into dict: Dict(k, v), for key: k, insert value: v) -> Dict(k, v) { + do_insert(key, value, dict) +} + +@external(erlang, "maps", "put") +@external(javascript, "../gleam_stdlib.mjs", "map_insert") +fn do_insert(a: key, b: value, c: Dict(key, value)) -> Dict(key, value) + +/// Updates all values in a given dict by calling a given function on each key +/// and value. +/// +/// ## Examples +/// +/// ```gleam +/// > [#(3, 3), #(2, 4)] +/// > |> from_list +/// > |> map_values(fn(key, value) { key * value }) +/// [#(3, 9), #(2, 8)] +/// ``` +/// +pub fn map_values(in dict: Dict(k, v), with fun: fn(k, v) -> w) -> Dict(k, w) { + do_map_values(fun, dict) +} + +@target(erlang) +@external(erlang, "maps", "map") +fn do_map_values(a: fn(key, value) -> b, b: Dict(key, value)) -> Dict(key, b) + +@target(javascript) +fn do_map_values(f: fn(key, value) -> b, dict: Dict(key, value)) -> Dict(key, b) { + let f = fn(dict, k, v) { insert(dict, k, f(k, v)) } + dict + |> fold(from: new(), with: f) +} + +/// Gets a list of all keys in a given dict. +/// +/// Dicts are not ordered so the keys are not returned in any specific order. Do +/// not write code that relies on the order keys are returned by this function +/// as it may change in later versions of Gleam or Erlang. +/// +/// ## Examples +/// +/// ```gleam +/// > keys([#("a", 0), #("b", 1)]) +/// ["a", "b"] +/// ``` +/// +pub fn keys(dict: Dict(keys, v)) -> List(keys) { + do_keys(dict) +} + +@target(erlang) +@external(erlang, "maps", "keys") +fn do_keys(a: Dict(keys, v)) -> List(keys) + +@target(javascript) +fn reverse_and_concat(remaining, accumulator) { + case remaining { + [] -> accumulator + [item, ..rest] -> reverse_and_concat(rest, [item, ..accumulator]) + } +} + +@target(javascript) +fn do_keys_acc(list: List(#(k, v)), acc: List(k)) -> List(k) { + case list { + [] -> reverse_and_concat(acc, []) + [x, ..xs] -> do_keys_acc(xs, [x.0, ..acc]) + } +} + +@target(javascript) +fn do_keys(dict: Dict(k, v)) -> List(k) { + let list_of_pairs = to_list(dict) + do_keys_acc(list_of_pairs, []) +} + +/// Gets a list of all values in a given dict. +/// +/// Dicts are not ordered so the values are not returned in any specific order. Do +/// not write code that relies on the order values are returned by this function +/// as it may change in later versions of Gleam or Erlang. +/// +/// ## Examples +/// +/// ```gleam +/// > values(from_list([#("a", 0), #("b", 1)])) +/// [0, 1] +/// ``` +/// +pub fn values(dict: Dict(k, values)) -> List(values) { + do_values(dict) +} + +@target(erlang) +@external(erlang, "maps", "values") +fn do_values(a: Dict(k, values)) -> List(values) + +@target(javascript) +fn do_values_acc(list: List(#(k, v)), acc: List(v)) -> List(v) { + case list { + [] -> reverse_and_concat(acc, []) + [x, ..xs] -> do_values_acc(xs, [x.1, ..acc]) + } +} + +@target(javascript) +fn do_values(dict: Dict(k, v)) -> List(v) { + let list_of_pairs = to_list(dict) + do_values_acc(list_of_pairs, []) +} + +/// Creates a new dict from a given dict, minus any entries that a given function +/// returns `False` for. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([#("a", 0), #("b", 1)]) +/// > |> filter(fn(key, value) { value != 0 }) +/// from_list([#("b", 1)]) +/// ``` +/// +/// ```gleam +/// > from_list([#("a", 0), #("b", 1)]) +/// > |> filter(fn(key, value) { True }) +/// from_list([#("a", 0), #("b", 1)]) +/// ``` +/// +pub fn filter( + in dict: Dict(k, v), + keeping predicate: fn(k, v) -> Bool, +) -> Dict(k, v) { + do_filter(predicate, dict) +} + +@target(erlang) +@external(erlang, "maps", "filter") +fn do_filter(a: fn(key, value) -> Bool, b: Dict(key, value)) -> Dict(key, value) + +@target(javascript) +fn do_filter( + f: fn(key, value) -> Bool, + dict: Dict(key, value), +) -> Dict(key, value) { + let insert = fn(dict, k, v) { + case f(k, v) { + True -> insert(dict, k, v) + _ -> dict + } + } + dict + |> fold(from: new(), with: insert) +} + +/// Creates a new dict from a given dict, only including any entries for which the +/// keys are in a given list. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([#("a", 0), #("b", 1)]) +/// > |> take(["b"]) +/// from_list([#("b", 1)]) +/// ``` +/// +/// ```gleam +/// > from_list([#("a", 0), #("b", 1)]) +/// > |> take(["a", "b", "c"]) +/// from_list([#("a", 0), #("b", 1)]) +/// ``` +/// +pub fn take(from dict: Dict(k, v), keeping desired_keys: List(k)) -> Dict(k, v) { + do_take(desired_keys, dict) +} + +@target(erlang) +@external(erlang, "maps", "with") +fn do_take(a: List(k), b: Dict(k, v)) -> Dict(k, v) + +@target(javascript) +fn insert_taken( + dict: Dict(k, v), + desired_keys: List(k), + acc: Dict(k, v), +) -> Dict(k, v) { + let insert = fn(taken, key) { + case get(dict, key) { + Ok(value) -> insert(taken, key, value) + _ -> taken + } + } + case desired_keys { + [] -> acc + [x, ..xs] -> insert_taken(dict, xs, insert(acc, x)) + } +} + +@target(javascript) +fn do_take(desired_keys: List(k), dict: Dict(k, v)) -> Dict(k, v) { + insert_taken(dict, desired_keys, new()) +} + +/// Creates a new dict from a pair of given dicts by combining their entries. +/// +/// If there are entries with the same keys in both dicts the entry from the +/// second dict takes precedence. +/// +/// ## Examples +/// +/// ```gleam +/// > let a = from_list([#("a", 0), #("b", 1)]) +/// > let b = from_list([#("b", 2), #("c", 3)]) +/// > merge(a, b) +/// from_list([#("a", 0), #("b", 2), #("c", 3)]) +/// ``` +/// +pub fn merge(into dict: Dict(k, v), from new_entries: Dict(k, v)) -> Dict(k, v) { + do_merge(dict, new_entries) +} + +@target(erlang) +@external(erlang, "maps", "merge") +fn do_merge(a: Dict(k, v), b: Dict(k, v)) -> Dict(k, v) + +@target(javascript) +fn insert_pair(dict: Dict(k, v), pair: #(k, v)) -> Dict(k, v) { + insert(dict, pair.0, pair.1) +} + +@target(javascript) +fn fold_inserts(new_entries: List(#(k, v)), dict: Dict(k, v)) -> Dict(k, v) { + case new_entries { + [] -> dict + [x, ..xs] -> fold_inserts(xs, insert_pair(dict, x)) + } +} + +@target(javascript) +fn do_merge(dict: Dict(k, v), new_entries: Dict(k, v)) -> Dict(k, v) { + new_entries + |> to_list + |> fold_inserts(dict) +} + +/// Creates a new dict from a given dict with all the same entries except for the +/// one with a given key, if it exists. +/// +/// ## Examples +/// +/// ```gleam +/// > delete([#("a", 0), #("b", 1)], "a") +/// from_list([#("b", 1)]) +/// ``` +/// +/// ```gleam +/// > delete([#("a", 0), #("b", 1)], "c") +/// from_list([#("a", 0), #("b", 1)]) +/// ``` +/// +pub fn delete(from dict: Dict(k, v), delete key: k) -> Dict(k, v) { + do_delete(key, dict) +} + +@external(erlang, "maps", "remove") +@external(javascript, "../gleam_stdlib.mjs", "map_remove") +fn do_delete(a: k, b: Dict(k, v)) -> Dict(k, v) + +/// Creates a new dict from a given dict with all the same entries except any with +/// keys found in a given list. +/// +/// ## Examples +/// +/// ```gleam +/// > drop([#("a", 0), #("b", 1)], ["a"]) +/// from_list([#("b", 2)]) +/// ``` +/// +/// ```gleam +/// > delete([#("a", 0), #("b", 1)], ["c"]) +/// from_list([#("a", 0), #("b", 1)]) +/// ``` +/// +/// ```gleam +/// > drop([#("a", 0), #("b", 1)], ["a", "b", "c"]) +/// from_list([]) +/// ``` +/// +pub fn drop(from dict: Dict(k, v), drop disallowed_keys: List(k)) -> Dict(k, v) { + case disallowed_keys { + [] -> dict + [x, ..xs] -> drop(delete(dict, x), xs) + } +} + +/// Creates a new dict with one entry updated using a given function. +/// +/// If there was not an entry in the dict for the given key then the function +/// gets `None` as its argument, otherwise it gets `Some(value)`. +/// +/// ## Example +/// +/// ```gleam +/// > let increment = fn(x) { +/// > case x { +/// > Some(i) -> i + 1 +/// > None -> 0 +/// > } +/// > } +/// > let dict = from_list([#("a", 0)]) +/// > +/// > update(dict, "a", increment) +/// from_list([#("a", 1)]) +/// ``` +/// +/// ```gleam +/// > update(dict, "b", increment) +/// from_list([#("a", 0), #("b", 0)]) +/// ``` +/// +pub fn update( + in dict: Dict(k, v), + update key: k, + with fun: fn(Option(v)) -> v, +) -> Dict(k, v) { + dict + |> get(key) + |> option.from_result + |> fun + |> insert(dict, key, _) +} + +fn do_fold(list: List(#(k, v)), initial: acc, fun: fn(acc, k, v) -> acc) -> acc { + case list { + [] -> initial + [#(k, v), ..rest] -> do_fold(rest, fun(initial, k, v), fun) + } +} + +/// Combines all entries into a single value by calling a given function on each +/// one. +/// +/// Dicts are not ordered so the values are not returned in any specific order. Do +/// not write code that relies on the order entries are used by this function +/// as it may change in later versions of Gleam or Erlang. +/// +/// # Examples +/// +/// ```gleam +/// > let dict = from_list([#("a", 1), #("b", 3), #("c", 9)]) +/// > fold(dict, 0, fn(accumulator, key, value) { accumulator + value }) +/// 13 +/// ``` +/// +/// ```gleam +/// > import gleam/string.{append} +/// > fold(dict, "", fn(accumulator, key, value) { append(accumulator, key) }) +/// "abc" +/// ``` +/// +pub fn fold( + over dict: Dict(k, v), + from initial: acc, + with fun: fn(acc, k, v) -> acc, +) -> acc { + dict + |> to_list + |> do_fold(initial, fun) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam new file mode 100644 index 0000000..c71c6f3 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam @@ -0,0 +1,1508 @@ +import gleam/int +import gleam/list +import gleam/dict.{type Dict} +import gleam/option.{type Option} +import gleam/result +import gleam/string_builder +@target(erlang) +import gleam/bit_array + +/// `Dynamic` data is data that we don't know the type of yet. +/// We likely get data like this from interop with Erlang, or from +/// IO with the outside world. +/// +pub type Dynamic + +/// Error returned when unexpected data is encountered +/// +pub type DecodeError { + DecodeError(expected: String, found: String, path: List(String)) +} + +pub type DecodeErrors = + List(DecodeError) + +pub type Decoder(t) = + fn(Dynamic) -> Result(t, DecodeErrors) + +/// Converts any Gleam data into `Dynamic` data. +/// +pub fn from(a) -> Dynamic { + do_from(a) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "identity") +fn do_from(a: anything) -> Dynamic + +/// Unsafely casts a Dynamic value into any other type. +/// +/// This is an escape hatch for the type system that may be useful when wrapping +/// native Erlang APIs. It is to be used as a last measure only! +/// +/// If you can avoid using this function, do! +/// +pub fn unsafe_coerce(a: Dynamic) -> anything { + do_unsafe_coerce(a) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "identity") +fn do_unsafe_coerce(a: Dynamic) -> a + +/// Decodes a `Dynamic` value from a `Dynamic` value. +/// +/// This function doesn't seem very useful at first, but it can be convenient +/// when you need to give a decoder function but you don't actually care what +/// the to-decode value is. +/// +pub fn dynamic(value: Dynamic) -> Result(Dynamic, List(DecodeError)) { + Ok(value) +} + +/// Checks to see whether a `Dynamic` value is a bit array, and returns that bit +/// array if it is. +/// +/// ## Examples +/// +/// ```gleam +/// > bit_array(from("Hello")) == bit_array.from_string("Hello") +/// True +/// ``` +/// +/// ```gleam +/// > bit_array(from(123)) +/// Error([DecodeError(expected: "BitArray", found: "Int", path: [])]) +/// ``` +/// +pub fn bit_array(from data: Dynamic) -> Result(BitArray, DecodeErrors) { + decode_bit_array(data) +} + +@deprecated("Please use `bit_array` instead") +pub fn bit_string(from data: Dynamic) -> Result(BitArray, DecodeErrors) { + bit_array(data) +} + +@external(erlang, "gleam_stdlib", "decode_bit_array") +@external(javascript, "../gleam_stdlib.mjs", "decode_bit_array") +fn decode_bit_array(a: Dynamic) -> Result(BitArray, DecodeErrors) + +/// Checks to see whether a `Dynamic` value is a string, and returns that string if +/// it is. +/// +/// ## Examples +/// +/// ```gleam +/// > string(from("Hello")) +/// Ok("Hello") +/// ``` +/// +/// ```gleam +/// > string(from(123)) +/// Error([DecodeError(expected: "String", found: "Int", path: [])]) +/// ``` +/// +pub fn string(from data: Dynamic) -> Result(String, DecodeErrors) { + decode_string(data) +} + +fn map_errors( + result: Result(t, DecodeErrors), + f: fn(DecodeError) -> DecodeError, +) -> Result(t, DecodeErrors) { + result.map_error(result, list.map(_, f)) +} + +@target(erlang) +fn decode_string(data: Dynamic) -> Result(String, DecodeErrors) { + bit_array(data) + |> map_errors(put_expected(_, "String")) + |> result.try(fn(raw) { + case bit_array.to_string(raw) { + Ok(string) -> Ok(string) + Error(Nil) -> + Error([DecodeError(expected: "String", found: "BitArray", path: [])]) + } + }) +} + +@target(erlang) +fn put_expected(error: DecodeError, expected: String) -> DecodeError { + DecodeError(..error, expected: expected) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "decode_string") +fn decode_string(a: Dynamic) -> Result(String, DecodeErrors) + +/// Return a string indicating the type of the dynamic value. +/// +/// ```gleam +/// > classify(from("Hello")) +/// "String" +/// ``` +/// +pub fn classify(data: Dynamic) -> String { + do_classify(data) +} + +@external(erlang, "gleam_stdlib", "classify_dynamic") +@external(javascript, "../gleam_stdlib.mjs", "classify_dynamic") +fn do_classify(a: Dynamic) -> String + +/// Checks to see whether a `Dynamic` value is an int, and returns that int if it +/// is. +/// +/// ## Examples +/// +/// ```gleam +/// > int(from(123)) +/// Ok(123) +/// ``` +/// +/// ```gleam +/// > int(from("Hello")) +/// Error([DecodeError(expected: "Int", found: "String", path: [])]) +/// ``` +/// +pub fn int(from data: Dynamic) -> Result(Int, DecodeErrors) { + decode_int(data) +} + +@external(erlang, "gleam_stdlib", "decode_int") +@external(javascript, "../gleam_stdlib.mjs", "decode_int") +fn decode_int(a: Dynamic) -> Result(Int, DecodeErrors) + +/// Checks to see whether a `Dynamic` value is a float, and returns that float if +/// it is. +/// +/// ## Examples +/// +/// ```gleam +/// > float(from(2.0)) +/// Ok(2.0) +/// ``` +/// +/// ```gleam +/// > float(from(123)) +/// Error([DecodeError(expected: "Float", found: "Int", path: [])]) +/// ``` +/// +pub fn float(from data: Dynamic) -> Result(Float, DecodeErrors) { + decode_float(data) +} + +@external(erlang, "gleam_stdlib", "decode_float") +@external(javascript, "../gleam_stdlib.mjs", "decode_float") +fn decode_float(a: Dynamic) -> Result(Float, DecodeErrors) + +/// Checks to see whether a `Dynamic` value is a bool, and returns that bool if +/// it is. +/// +/// ## Examples +/// +/// ```gleam +/// > bool(from(True)) +/// Ok(True) +/// ``` +/// +/// ```gleam +/// > bool(from(123)) +/// Error([DecodeError(expected: "Bool", found: "Int", path: [])]) +/// ``` +/// +pub fn bool(from data: Dynamic) -> Result(Bool, DecodeErrors) { + decode_bool(data) +} + +@external(erlang, "gleam_stdlib", "decode_bool") +@external(javascript, "../gleam_stdlib.mjs", "decode_bool") +fn decode_bool(a: Dynamic) -> Result(Bool, DecodeErrors) + +/// Checks to see whether a `Dynamic` value is a list, and returns that list if it +/// is. The types of the elements are not checked. +/// +/// If you wish to decode all the elements in the list use the `list` function +/// instead. +/// +/// ## Examples +/// +/// ```gleam +/// > shallow_list(from(["a", "b", "c"])) +/// Ok([from("a"), from("b"), from("c")]) +/// ``` +/// +/// ```gleam +/// > shallow_list(1) +/// Error([DecodeError(expected: "List", found: "Int", path: [])]) +/// ``` +/// +pub fn shallow_list(from value: Dynamic) -> Result(List(Dynamic), DecodeErrors) { + decode_list(value) +} + +@external(erlang, "gleam_stdlib", "decode_list") +@external(javascript, "../gleam_stdlib.mjs", "decode_list") +fn decode_list(a: Dynamic) -> Result(List(Dynamic), DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_result") +@external(javascript, "../gleam_stdlib.mjs", "decode_result") +fn decode_result(a: Dynamic) -> Result(Result(a, e), DecodeErrors) + +/// Checks to see whether a `Dynamic` value is a result of a particular type, and +/// returns that result if it is. +/// +/// The `ok` and `error` arguments are decoders for decoding the `Ok` and +/// `Error` values of the result. +/// +/// ## Examples +/// +/// ```gleam +/// > from(Ok(1)) +/// > |> result(ok: int, error: string) +/// Ok(Ok(1)) +/// ``` +/// +/// ```gleam +/// > from(Error("boom")) +/// > |> result(ok: int, error: string) +/// Ok(Error("boom")) +/// ``` +/// +/// ```gleam +/// > from(123) +/// > |> result(ok: int, error: string) +/// Error([DecodeError(expected: "Result", found: "Int", path: [])]) +/// ``` +/// +pub fn result( + ok decode_ok: Decoder(a), + error decode_error: Decoder(e), +) -> Decoder(Result(a, e)) { + fn(value) { + use inner_result <- result.try(decode_result(value)) + + case inner_result { + Ok(raw) -> { + use value <- result.try( + decode_ok(raw) + |> map_errors(push_path(_, "ok")), + ) + Ok(Ok(value)) + } + Error(raw) -> { + use value <- result.try( + decode_error(raw) + |> map_errors(push_path(_, "error")), + ) + Ok(Error(value)) + } + } + } +} + +/// Checks to see whether a `Dynamic` value is a list of a particular type, and +/// returns that list if it is. +/// +/// The second argument is a decoder function used to decode the elements of +/// the list. The list is only decoded if all elements in the list can be +/// successfully decoded using this function. +/// +/// If you do not wish to decode all the elements in the list use the `shallow_list` +/// function instead. +/// +/// ## Examples +/// +/// ```gleam +/// > from(["a", "b", "c"]) +/// > |> list(of: string) +/// Ok(["a", "b", "c"]) +/// ``` +/// +/// ```gleam +/// > from([1, 2, 3]) +/// > |> list(of: string) +/// Error([DecodeError(expected: "String", found: "Int", path: ["*"])]) +/// ``` +/// +/// ```gleam +/// > from("ok") +/// > |> list(of: string) +/// Error([DecodeError(expected: "List", found: "String", path: [])]) +/// ``` +/// +pub fn list( + of decoder_type: fn(Dynamic) -> Result(inner, DecodeErrors), +) -> Decoder(List(inner)) { + fn(dynamic) { + use list <- result.try(shallow_list(dynamic)) + list + |> list.try_map(decoder_type) + |> map_errors(push_path(_, "*")) + } +} + +/// Checks to see if a `Dynamic` value is a nullable version of a particular +/// type, and returns a corresponding `Option` if it is. +/// +/// ## Examples +/// +/// ```gleam +/// > from("Hello") +/// > |> optional(string) +/// Ok(Some("Hello")) +/// ``` +/// +/// ```gleam +/// > from("Hello") +/// > |> optional(string) +/// Ok(Some("Hello")) +/// ``` +/// +/// ```gleam +/// > from(atom.from_string("null")) +/// > |> optional(string) +/// Ok(None) +/// ``` +/// +/// ```gleam +/// > from(atom.from_string("nil")) +/// > |> optional(string) +/// Ok(None) +/// ``` +/// +/// ```gleam +/// > from(atom.from_string("undefined")) +/// > |> optional(string) +/// Ok(None) +/// ``` +/// +/// ```gleam +/// > from(123) +/// > |> optional(string) +/// Error([DecodeError(expected: "String", found: "Int", path: [])]) +/// ``` +/// +pub fn optional(of decode: Decoder(inner)) -> Decoder(Option(inner)) { + fn(value) { decode_optional(value, decode) } +} + +@external(erlang, "gleam_stdlib", "decode_option") +@external(javascript, "../gleam_stdlib.mjs", "decode_option") +fn decode_optional(a: Dynamic, b: Decoder(a)) -> Result(Option(a), DecodeErrors) + +/// Checks to see if a `Dynamic` value is a map with a specific field, and returns +/// the value of that field if it is. +/// +/// This will not succeed on a record. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/dict +/// > dict.new() +/// > |> dict.insert("Hello", "World") +/// > |> from +/// > |> field(named: "Hello", of: string) +/// Ok("World") +/// ``` +/// +/// ```gleam +/// > from(123) +/// > |> field("Hello", string) +/// Error([DecodeError(expected: "Map", found: "Int", path: [])]) +/// ``` +/// +pub fn field(named name: a, of inner_type: Decoder(t)) -> Decoder(t) { + fn(value) { + let missing_field_error = + DecodeError(expected: "field", found: "nothing", path: []) + + use maybe_inner <- result.try(decode_field(value, name)) + maybe_inner + |> option.to_result([missing_field_error]) + |> result.try(inner_type) + |> map_errors(push_path(_, name)) + } +} + +/// Checks to see if a `Dynamic` value is a map with a specific field. +/// If the map does not have the specified field, returns an `Ok(None)` instead of failing; otherwise, +/// returns the decoded field wrapped in `Some(_)`. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/dict +/// > dict.new() +/// > |> dict.insert("Hello", "World") +/// > |> from +/// > |> field(named: "Hello", of: string) +/// Ok(Some("World")) +/// ``` +/// +/// ```gleam +/// > import gleam/dict +/// > dict.new() +/// > |> from +/// > |> field(named: "Hello", of: string) +/// Ok(None) +/// ``` +/// +/// ```gleam +/// > from(123) +/// > |> field("Hello", string) +/// Error([DecodeError(expected: "Map", found: "Int", path: [])]) +/// ``` +/// +pub fn optional_field( + named name: a, + of inner_type: Decoder(t), +) -> Decoder(Option(t)) { + fn(value) { + use maybe_inner <- result.try(decode_field(value, name)) + case maybe_inner { + option.None -> Ok(option.None) + option.Some(dynamic_inner) -> + dynamic_inner + |> decode_optional(inner_type) + |> map_errors(push_path(_, name)) + } + } +} + +@external(erlang, "gleam_stdlib", "decode_field") +@external(javascript, "../gleam_stdlib.mjs", "decode_field") +fn decode_field(a: Dynamic, b: name) -> Result(Option(Dynamic), DecodeErrors) + +/// Checks to see if a `Dynamic` value is a tuple large enough to have a certain +/// index, and returns the value of that index if it is. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> element(0, int) +/// Ok(from(1)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> element(2, int) +/// Error([ +/// DecodeError( +/// expected: "Tuple of at least 3 elements", +/// found: "Tuple of 2 elements", +/// path: [], +/// ), +/// ]) +/// ``` +/// +pub fn element(at index: Int, of inner_type: Decoder(t)) -> Decoder(t) { + fn(data: Dynamic) { + use tuple <- result.try(decode_tuple(data)) + let size = tuple_size(tuple) + use data <- result.try(case index >= 0 { + True -> + case index < size { + True -> tuple_get(tuple, index) + False -> at_least_decode_tuple_error(index + 1, data) + } + False -> + case int.absolute_value(index) <= size { + True -> tuple_get(tuple, size + index) + False -> at_least_decode_tuple_error(int.absolute_value(index), data) + } + }) + inner_type(data) + |> map_errors(push_path(_, index)) + } +} + +fn at_least_decode_tuple_error( + size: Int, + data: Dynamic, +) -> Result(a, DecodeErrors) { + let s = case size { + 1 -> "" + _ -> "s" + } + let error = + ["Tuple of at least ", int.to_string(size), " element", s] + |> string_builder.from_strings + |> string_builder.to_string + |> DecodeError(found: classify(data), path: []) + Error([error]) +} + +// A tuple of unknown size +type UnknownTuple + +@external(erlang, "gleam_stdlib", "decode_tuple") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple") +fn decode_tuple(a: Dynamic) -> Result(UnknownTuple, DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_tuple2") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple2") +fn decode_tuple2(a: Dynamic) -> Result(#(Dynamic, Dynamic), DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_tuple3") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple3") +fn decode_tuple3( + a: Dynamic, +) -> Result(#(Dynamic, Dynamic, Dynamic), DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_tuple4") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple4") +fn decode_tuple4( + a: Dynamic, +) -> Result(#(Dynamic, Dynamic, Dynamic, Dynamic), DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_tuple5") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple5") +fn decode_tuple5( + a: Dynamic, +) -> Result(#(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), DecodeErrors) + +@external(erlang, "gleam_stdlib", "decode_tuple6") +@external(javascript, "../gleam_stdlib.mjs", "decode_tuple6") +fn decode_tuple6( + a: Dynamic, +) -> Result( + #(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), + DecodeErrors, +) + +@external(erlang, "gleam_stdlib", "tuple_get") +@external(javascript, "../gleam_stdlib.mjs", "tuple_get") +fn tuple_get(a: UnknownTuple, b: Int) -> Result(Dynamic, DecodeErrors) + +@external(erlang, "gleam_stdlib", "size_of_tuple") +@external(javascript, "../gleam_stdlib.mjs", "length") +fn tuple_size(a: UnknownTuple) -> Int + +fn tuple_errors( + result: Result(a, List(DecodeError)), + name: String, +) -> List(DecodeError) { + case result { + Ok(_) -> [] + Error(errors) -> list.map(errors, push_path(_, name)) + } +} + +fn push_path(error: DecodeError, name: t) -> DecodeError { + let name = from(name) + let decoder = any([string, fn(x) { result.map(int(x), int.to_string) }]) + let name = case decoder(name) { + Ok(name) -> name + Error(_) -> + ["<", classify(name), ">"] + |> string_builder.from_strings + |> string_builder.to_string + } + DecodeError(..error, path: [name, ..error.path]) +} + +/// Checks to see if a `Dynamic` value is a 2-element tuple, list or array containing +/// specifically typed elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> tuple2(int, int) +/// Ok(#(1, 2)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2.0)) +/// > |> tuple2(int, float) +/// Ok(#(1, 2.0)) +/// ``` +/// +/// ```gleam +/// > from([1, 2]) +/// > |> tuple2(int, int) +/// Ok(#(1, 2)) +/// ``` +/// +/// ```gleam +/// > from([from(1), from(2.0)]) +/// > |> tuple2(int, float) +/// Ok(#(1, 2.0)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2, 3)) +/// > |> tuple2(int, float) +/// Error([ +/// DecodeError(expected: "Tuple of 2 elements", found: "Tuple of 3 elements", path: []), +/// ]) +/// ``` +/// +/// ```gleam +/// > from("") +/// > |> tuple2(int, float) +/// Error([DecodeError(expected: "Tuple of 2 elements", found: "String", path: [])]) +/// ``` +/// +pub fn tuple2( + first decode1: Decoder(a), + second decode2: Decoder(b), +) -> Decoder(#(a, b)) { + fn(value) { + use #(a, b) <- result.try(decode_tuple2(value)) + case decode1(a), decode2(b) { + Ok(a), Ok(b) -> Ok(#(a, b)) + a, b -> + tuple_errors(a, "0") + |> list.append(tuple_errors(b, "1")) + |> Error + } + } +} + +/// Checks to see if a `Dynamic` value is a 3-element tuple, list or array containing +/// specifically typed elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2, 3)) +/// > |> tuple3(int, int, int) +/// Ok(#(1, 2, 3)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2.0, "3")) +/// > |> tuple3(int, float, string) +/// Ok(#(1, 2.0, "3")) +/// ``` +/// +/// ```gleam +/// > from([1, 2, 3]) +/// > |> tuple3(int, int, int) +/// Ok(#(1, 2, 3)) +/// ``` +/// +/// ```gleam +/// > from([from(1), from(2.0), from("3")]) +/// > |> tuple3(int, float, string) +/// Ok(#(1, 2.0, "3")) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> tuple3(int, float, string) +/// Error([ +/// DecodeError(expected: "Tuple of 3 elements", found: "Tuple of 2 elements", path: [])), +/// ]) +/// ``` +/// +/// ```gleam +/// > from("") +/// > |> tuple3(int, float, string) +/// Error([ +/// DecodeError(expected: "Tuple of 3 elements", found: "String", path: []), +/// ]) +/// ``` +/// +pub fn tuple3( + first decode1: Decoder(a), + second decode2: Decoder(b), + third decode3: Decoder(c), +) -> Decoder(#(a, b, c)) { + fn(value) { + use #(a, b, c) <- result.try(decode_tuple3(value)) + case decode1(a), decode2(b), decode3(c) { + Ok(a), Ok(b), Ok(c) -> Ok(#(a, b, c)) + a, b, c -> + tuple_errors(a, "0") + |> list.append(tuple_errors(b, "1")) + |> list.append(tuple_errors(c, "2")) + |> Error + } + } +} + +/// Checks to see if a `Dynamic` value is a 4-element tuple, list or array containing +/// specifically typed elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2, 3, 4)) +/// > |> tuple4(int, int, int, int) +/// Ok(#(1, 2, 3, 4)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2.0, "3", 4)) +/// > |> tuple4(int, float, string, int) +/// Ok(#(1, 2.0, "3", 4)) +/// ``` +/// +/// ```gleam +/// > from([1, 2, 3, 4]) +/// > |> tuple4(int, int, int, int) +/// Ok(#(1, 2, 3, 4)) +/// ``` +/// +/// ```gleam +/// > from([from(1), from(2.0), from("3"), from(4)]) +/// > |> tuple4(int, float, string, int) +/// Ok(#(1, 2.0, "3", 4)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> tuple4(int, float, string, int) +/// Error([ +/// DecodeError(expected: "Tuple of 4 elements", found: "Tuple of 2 elements", path: []), +/// ]) +/// ``` +/// +/// ```gleam +/// > from("") +/// > |> tuple4(int, float, string, int) +/// Error([ +/// DecodeError(expected: "Tuple of 4 elements", found: "String", path: []), +/// ]) +/// ``` +/// +pub fn tuple4( + first decode1: Decoder(a), + second decode2: Decoder(b), + third decode3: Decoder(c), + fourth decode4: Decoder(d), +) -> Decoder(#(a, b, c, d)) { + fn(value) { + use #(a, b, c, d) <- result.try(decode_tuple4(value)) + case decode1(a), decode2(b), decode3(c), decode4(d) { + Ok(a), Ok(b), Ok(c), Ok(d) -> Ok(#(a, b, c, d)) + a, b, c, d -> + tuple_errors(a, "0") + |> list.append(tuple_errors(b, "1")) + |> list.append(tuple_errors(c, "2")) + |> list.append(tuple_errors(d, "3")) + |> Error + } + } +} + +/// Checks to see if a `Dynamic` value is a 5-element tuple, list or array containing +/// specifically typed elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2, 3, 4, 5)) +/// > |> tuple5(int, int, int, int, int) +/// Ok(#(1, 2, 3, 4, 5)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2.0, "3", 4, 5)) +/// > |> tuple5(int, float, string, int, int) +/// Ok(#(1, 2.0, "3", 4, 5)) +/// ``` +/// +/// ```gleam +/// > from([1, 2, 3, 4, 5]) +/// > |> tuple5(int, int, int, int, int) +/// Ok(#(1, 2, 3, 4, 5)) +/// ``` +/// +/// ```gleam +/// > from([from(1), from(2.0), from("3"), from(4), from(True)]) +/// > |> tuple5(int, float, string, int, bool) +/// Ok(#(1, 2.0, "3", 4, True)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> tuple5(int, float, string, int, int) +/// Error([ +/// DecodeError(expected: "Tuple of 5 elements", found: "Tuple of 2 elements", path: [])), +/// ]) +/// ``` +/// +/// ```gleam +/// > from("") +/// > |> tuple5(int, float, string, int, int) +/// Error([DecodeError(expected: "Tuple of 5 elements", found: "String", path: [])]) +/// ``` +/// +pub fn tuple5( + first decode1: Decoder(a), + second decode2: Decoder(b), + third decode3: Decoder(c), + fourth decode4: Decoder(d), + fifth decode5: Decoder(e), +) -> Decoder(#(a, b, c, d, e)) { + fn(value) { + use #(a, b, c, d, e) <- result.try(decode_tuple5(value)) + case decode1(a), decode2(b), decode3(c), decode4(d), decode5(e) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e) -> Ok(#(a, b, c, d, e)) + a, b, c, d, e -> + tuple_errors(a, "0") + |> list.append(tuple_errors(b, "1")) + |> list.append(tuple_errors(c, "2")) + |> list.append(tuple_errors(d, "3")) + |> list.append(tuple_errors(e, "4")) + |> Error + } + } +} + +/// Checks to see if a `Dynamic` value is a 6-element tuple, list or array containing +/// specifically typed elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2, 3, 4, 5, 6)) +/// > |> tuple6(int, int, int, int, int, int) +/// Ok(#(1, 2, 3, 4, 5, 6)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2.0, "3", 4, 5, 6)) +/// > |> tuple6(int, float, string, int, int, int) +/// Ok(#(1, 2.0, "3", 4, 5, 6)) +/// ``` +/// +/// ```gleam +/// > from([1, 2, 3, 4, 5, 6]) +/// > |> tuple6(int, int, int, int, int, int) +/// Ok(#(1, 2, 3, 4, 5, 6)) +/// ``` +/// +/// ```gleam +/// > from([from(1), from(2.0), from("3"), from(4), from(True), from(False)]) +/// > |> tuple6(int, float, string, int, bool, bool) +/// Ok(#(1, 2.0, "3", 4, True, False)) +/// ``` +/// +/// ```gleam +/// > from(#(1, 2)) +/// > |> tuple6(int, float, string, int, int, int) +/// Error([ +/// DecodeError(expected: "Tuple of 6 elements", found: "Tuple of 2 elements", path: []), +/// ]) +/// ``` +/// +/// ```gleam +/// > from("") +/// > |> tuple6(int, float, string, int, int, int) +/// Error([DecodeError(expected: "Tuple of 6 elements", found: "String", path: [])]) +/// ``` +/// +pub fn tuple6( + first decode1: Decoder(a), + second decode2: Decoder(b), + third decode3: Decoder(c), + fourth decode4: Decoder(d), + fifth decode5: Decoder(e), + sixth decode6: Decoder(f), +) -> Decoder(#(a, b, c, d, e, f)) { + fn(value) { + use #(a, b, c, d, e, f) <- result.try(decode_tuple6(value)) + case + decode1(a), + decode2(b), + decode3(c), + decode4(d), + decode5(e), + decode6(f) + { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f) -> Ok(#(a, b, c, d, e, f)) + a, b, c, d, e, f -> + tuple_errors(a, "0") + |> list.append(tuple_errors(b, "1")) + |> list.append(tuple_errors(c, "2")) + |> list.append(tuple_errors(d, "3")) + |> list.append(tuple_errors(e, "4")) + |> list.append(tuple_errors(f, "5")) + |> Error + } + } +} + +/// Checks to see if a `Dynamic` value is a dict. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/dict +/// > dict.new() |> from |> map(string, int) +/// Ok(dict.new()) +/// ``` +/// +/// ```gleam +/// > from(1) |> map(string, int) +/// Error(DecodeError(expected: "Map", found: "Int", path: [])) +/// ``` +/// +/// ```gleam +/// > from("") |> map(string, int) +/// Error(DecodeError(expected: "Map", found: "String", path: [])) +/// ``` +/// +pub fn dict( + of key_type: Decoder(k), + to value_type: Decoder(v), +) -> Decoder(Dict(k, v)) { + fn(value) { + use map <- result.try(decode_map(value)) + use pairs <- result.try( + map + |> dict.to_list + |> list.try_map(fn(pair) { + let #(k, v) = pair + use k <- result.try( + key_type(k) + |> map_errors(push_path(_, "keys")), + ) + use v <- result.try( + value_type(v) + |> map_errors(push_path(_, "values")), + ) + Ok(#(k, v)) + }), + ) + Ok(dict.from_list(pairs)) + } +} + +@deprecated("Use `dict` instead") +pub fn map( + of key_type: Decoder(k), + to value_type: Decoder(v), +) -> Decoder(Dict(k, v)) { + dict(key_type, value_type) +} + +@external(erlang, "gleam_stdlib", "decode_map") +@external(javascript, "../gleam_stdlib.mjs", "decode_map") +fn decode_map(a: Dynamic) -> Result(Dict(Dynamic, Dynamic), DecodeErrors) + +/// Joins multiple decoders into one. When run they will each be tried in turn +/// until one succeeds, or they all fail. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/result +/// > let bool_or_string = any(of: [ +/// > string, +/// > fn(x) { result.map(bool(x), fn(_) { "a bool" }) } +/// > ]) +/// > bool_or_string(from("ok")) +/// Ok("ok") +/// ``` +/// +/// ```gleam +/// > bool_or_string(from(True)) +/// Ok("a bool") +/// ``` +/// +/// ```gleam +/// > bool_or_string(from(1)) +/// Error(DecodeError(expected: "another type", found: "Int", path: [])) +/// ``` +/// +pub fn any(of decoders: List(Decoder(t))) -> Decoder(t) { + fn(data) { + case decoders { + [] -> + Error([ + DecodeError(found: classify(data), expected: "another type", path: []), + ]) + + [decoder, ..decoders] -> + case decoder(data) { + Ok(decoded) -> Ok(decoded) + Error(_) -> any(decoders)(data) + } + } + } +} + +/// Decode 1 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.0, "3")) +/// > |> decode1(MyRecord, element(0, int)) +/// Ok(MyRecord(1)) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "")) +/// > |> decode1(MyRecord, element(0, int)) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// ]) +/// ``` +/// +pub fn decode1(constructor: fn(t1) -> t, t1: Decoder(t1)) -> Decoder(t) { + fn(value) { + case t1(value) { + Ok(a) -> Ok(constructor(a)) + a -> Error(all_errors(a)) + } + } +} + +/// Decode 2 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.0, "3")) +/// > |> decode2(MyRecord, element(0, int), element(1, float)) +/// Ok(MyRecord(1, 2.0)) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "")) +/// > |> decode2(MyRecord, element(0, int), element(1, float)) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode2( + constructor: fn(t1, t2) -> t, + t1: Decoder(t1), + t2: Decoder(t2), +) -> Decoder(t) { + fn(value) { + case t1(value), t2(value) { + Ok(a), Ok(b) -> Ok(constructor(a, b)) + a, b -> Error(list.concat([all_errors(a), all_errors(b)])) + } + } +} + +/// Decode 3 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.0, "3")) +/// > |> decode3(MyRecord, element(0, int), element(1, float), element(2, string)) +/// Ok(MyRecord(1, 2.0, "3")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "")) +/// > |> decode3(MyRecord, element(0, int), element(1, float), element(2, string)) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode3( + constructor: fn(t1, t2, t3) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), +) -> Decoder(t) { + fn(value) { + case t1(value), t2(value), t3(value) { + Ok(a), Ok(b), Ok(c) -> Ok(constructor(a, b, c)) + a, b, c -> + Error(list.concat([all_errors(a), all_errors(b), all_errors(c)])) + } + } +} + +/// Decode 4 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4")) +/// > |> decode4( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "")) +/// > |> decode4( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode4( + constructor: fn(t1, t2, t3, t4) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x) { + Ok(a), Ok(b), Ok(c), Ok(d) -> Ok(constructor(a, b, c, d)) + a, b, c, d -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + ])) + } + } +} + +/// Decode 5 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4", "5")) +/// > |> decode5( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4", "5")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "", "")) +/// > |> decode5( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode5( + constructor: fn(t1, t2, t3, t4, t5) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), + t5: Decoder(t5), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x), t5(x) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e) -> Ok(constructor(a, b, c, d, e)) + a, b, c, d, e -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + all_errors(e), + ])) + } + } +} + +/// Decode 6 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4", "5", "6")) +/// > |> decode6( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "", "", "")) +/// > |> decode6( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode6( + constructor: fn(t1, t2, t3, t4, t5, t6) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), + t5: Decoder(t5), + t6: Decoder(t6), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f) -> + Ok(constructor(a, b, c, d, e, f)) + a, b, c, d, e, f -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + all_errors(e), + all_errors(f), + ])) + } + } +} + +/// Decode 7 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4", "5", "6")) +/// > |> decode7( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "", "", "", "")) +/// > |> decode7( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode7( + constructor: fn(t1, t2, t3, t4, t5, t6, t7) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), + t5: Decoder(t5), + t6: Decoder(t6), + t7: Decoder(t7), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g) -> + Ok(constructor(a, b, c, d, e, f, g)) + a, b, c, d, e, f, g -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + all_errors(e), + all_errors(f), + all_errors(g), + ])) + } + } +} + +/// Decode 8 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4", "5", "6", "7", "8")) +/// > |> decode8( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > element(7, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7", "8")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "", "", "", "", "")) +/// > |> decode8( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > element(7, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode8( + constructor: fn(t1, t2, t3, t4, t5, t6, t7, t8) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), + t5: Decoder(t5), + t6: Decoder(t6), + t7: Decoder(t7), + t8: Decoder(t8), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x), t8(x) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g), Ok(h) -> + Ok(constructor(a, b, c, d, e, f, g, h)) + a, b, c, d, e, f, g, h -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + all_errors(e), + all_errors(f), + all_errors(g), + all_errors(h), + ])) + } + } +} + +/// Decode 9 values from a `Dynamic` value. +/// +/// ## Examples +/// +/// ```gleam +/// > from(#(1, 2.1, "3", "4", "5", "6", "7", "8", "9")) +/// > |> decode9( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > element(7, string), +/// > element(8, string), +/// > ) +/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7", "8", "9")) +/// ``` +/// +/// ```gleam +/// > from(#("", "", "", "", "", "", "", "", "")) +/// > |> decode9( +/// > MyRecord, +/// > element(0, int), +/// > element(1, float), +/// > element(2, string), +/// > element(3, string), +/// > element(4, string), +/// > element(5, string), +/// > element(6, string), +/// > element(7, string), +/// > element(8, string), +/// > ) +/// Error([ +/// DecodeError(expected: "Int", found: "String", path: ["0"]), +/// DecodeError(expected: "Float", found: "String", path: ["1"]), +/// ]) +/// ``` +/// +pub fn decode9( + constructor: fn(t1, t2, t3, t4, t5, t6, t7, t8, t9) -> t, + t1: Decoder(t1), + t2: Decoder(t2), + t3: Decoder(t3), + t4: Decoder(t4), + t5: Decoder(t5), + t6: Decoder(t6), + t7: Decoder(t7), + t8: Decoder(t8), + t9: Decoder(t9), +) -> Decoder(t) { + fn(x: Dynamic) { + case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x), t8(x), t9(x) { + Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g), Ok(h), Ok(i) -> + Ok(constructor(a, b, c, d, e, f, g, h, i)) + a, b, c, d, e, f, g, h, i -> + Error(list.concat([ + all_errors(a), + all_errors(b), + all_errors(c), + all_errors(d), + all_errors(e), + all_errors(f), + all_errors(g), + all_errors(h), + all_errors(i), + ])) + } + } +} + +fn all_errors(result: Result(a, List(DecodeError))) -> List(DecodeError) { + case result { + Ok(_) -> [] + Error(errors) -> errors + } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam new file mode 100644 index 0000000..5d62419 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam @@ -0,0 +1,546 @@ +//// Functions for working with floats. +//// +//// ## Division by zero +//// +//// Gleam runs on the Erlang virtual machine, which does not follow the IEEE +//// 754 standard for floating point arithmetic and does not have an `Infinity` +//// value. In Erlang division by zero results in a crash, however Gleam does +//// not have partial functions and operators in core so instead division by zero +//// returns zero, a behaviour taken from Pony, Coq, and Lean. +//// +//// This may seem unexpected at first, but it is no less mathematically valid +//// than crashing or returning a special value. Division by zero is undefined +//// in mathematics. + +import gleam/order.{type Order} + +/// Attempts to parse a string as a `Float`, returning `Error(Nil)` if it was +/// not possible. +/// +/// ## Examples +/// +/// ```gleam +/// > parse("2.3") +/// Ok(2.3) +/// ``` +/// +/// ```gleam +/// > parse("ABC") +/// Error(Nil) +/// ``` +/// +pub fn parse(string: String) -> Result(Float, Nil) { + do_parse(string) +} + +@external(erlang, "gleam_stdlib", "parse_float") +@external(javascript, "../gleam_stdlib.mjs", "parse_float") +fn do_parse(a: String) -> Result(Float, Nil) + +/// Returns the string representation of the provided `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > to_string(2.3) +/// "2.3" +/// ``` +/// +pub fn to_string(x: Float) -> String { + do_to_string(x) +} + +@external(erlang, "gleam_stdlib", "float_to_string") +@external(javascript, "../gleam_stdlib.mjs", "float_to_string") +fn do_to_string(a: Float) -> String + +/// Restricts a `Float` between a lower and upper bound. +/// +/// ## Examples +/// +/// ```gleam +/// > clamp(1.2, min: 1.4, max: 1.6) +/// 1.4 +/// ``` +/// +pub fn clamp(x: Float, min min_bound: Float, max max_bound: Float) -> Float { + x + |> min(max_bound) + |> max(min_bound) +} + +/// Compares two `Float`s, returning an `Order`: +/// `Lt` for lower than, `Eq` for equals, or `Gt` for greater than. +/// +/// ## Examples +/// +/// ```gleam +/// > compare(2.0, 2.3) +/// Lt +/// ``` +/// +/// To handle +/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems) +/// you may use [`loosely_compare`](#loosely_compare) instead. +/// +pub fn compare(a: Float, with b: Float) -> Order { + case a == b { + True -> order.Eq + False -> + case a <. b { + True -> order.Lt + False -> order.Gt + } + } +} + +/// Compares two `Float`s within a tolerance, returning an `Order`: +/// `Lt` for lower than, `Eq` for equals, or `Gt` for greater than. +/// +/// This function allows Float comparison while handling +/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems). +/// +/// Notice: For `Float`s the tolerance won't be exact: +/// `5.3 - 5.0` is not exactly `0.3`. +/// +/// ## Examples +/// +/// ```gleam +/// > loosely_compare(5.0, with: 5.3, tolerating: 0.5) +/// Eq +/// ``` +/// +/// If you want to check only for equality you may use +/// [`loosely_equals`](#loosely_equals) instead. +/// +pub fn loosely_compare( + a: Float, + with b: Float, + tolerating tolerance: Float, +) -> Order { + let difference = absolute_value(a -. b) + case difference <=. tolerance { + True -> order.Eq + False -> compare(a, b) + } +} + +/// Checks for equality of two `Float`s within a tolerance, +/// returning an `Bool`. +/// +/// This function allows Float comparison while handling +/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems). +/// +/// Notice: For `Float`s the tolerance won't be exact: +/// `5.3 - 5.0` is not exactly `0.3`. +/// +/// ## Examples +/// +/// ```gleam +/// > loosely_equals(5.0, with: 5.3, tolerating: 0.5) +/// True +/// ``` +/// +/// ```gleam +/// > loosely_equals(5.0, with: 5.1, tolerating: 0.1) +/// False +/// ``` +/// +pub fn loosely_equals( + a: Float, + with b: Float, + tolerating tolerance: Float, +) -> Bool { + let difference = absolute_value(a -. b) + difference <=. tolerance +} + +/// Compares two `Float`s, returning the smaller of the two. +/// +/// ## Examples +/// +/// ```gleam +/// > min(2.0, 2.3) +/// 2.0 +/// ``` +/// +pub fn min(a: Float, b: Float) -> Float { + case a <. b { + True -> a + False -> b + } +} + +/// Compares two `Float`s, returning the larger of the two. +/// +/// ## Examples +/// +/// ```gleam +/// > max(2.0, 2.3) +/// 2.3 +/// ``` +/// +pub fn max(a: Float, b: Float) -> Float { + case a >. b { + True -> a + False -> b + } +} + +/// Rounds the value to the next highest whole number as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > ceiling(2.3) +/// 3.0 +/// ``` +/// +pub fn ceiling(x: Float) -> Float { + do_ceiling(x) +} + +@external(erlang, "math", "ceil") +@external(javascript, "../gleam_stdlib.mjs", "ceiling") +fn do_ceiling(a: Float) -> Float + +/// Rounds the value to the next lowest whole number as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > floor(2.3) +/// 2.0 +/// ``` +/// +pub fn floor(x: Float) -> Float { + do_floor(x) +} + +@external(erlang, "math", "floor") +@external(javascript, "../gleam_stdlib.mjs", "floor") +fn do_floor(a: Float) -> Float + +/// Rounds the value to the nearest whole number as an `Int`. +/// +/// ## Examples +/// +/// ```gleam +/// > round(2.3) +/// 2 +/// ``` +/// +/// ```gleam +/// > round(2.5) +/// 3 +/// ``` +/// +pub fn round(x: Float) -> Int { + do_round(x) +} + +@target(erlang) +@external(erlang, "erlang", "round") +fn do_round(a: Float) -> Int + +@target(javascript) +fn do_round(x: Float) -> Int { + case x >=. 0.0 { + True -> js_round(x) + _ -> 0 - js_round(negate(x)) + } +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "round") +fn js_round(a: Float) -> Int + +/// Returns the value as an `Int`, truncating all decimal digits. +/// +/// ## Examples +/// +/// ```gleam +/// > truncate(2.4343434847383438) +/// 2 +/// ``` +/// +pub fn truncate(x: Float) -> Int { + do_truncate(x) +} + +@external(erlang, "erlang", "trunc") +@external(javascript, "../gleam_stdlib.mjs", "truncate") +fn do_truncate(a: Float) -> Int + +/// Returns the absolute value of the input as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > absolute_value(-12.5) +/// 12.5 +/// ``` +/// +/// ```gleam +/// > absolute_value(10.2) +/// 10.2 +/// ``` +/// +pub fn absolute_value(x: Float) -> Float { + case x >=. 0.0 { + True -> x + _ -> 0.0 -. x + } +} + +/// Returns the results of the base being raised to the power of the +/// exponent, as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > power(2.0, -1.0) +/// Ok(0.5) +/// ``` +/// +/// ```gleam +/// > power(2.0, 2.0) +/// Ok(4.0) +/// ``` +/// +/// ```gleam +/// > power(8.0, 1.5) +/// Ok(22.627416997969522) +/// ``` +/// +/// ```gleam +/// > 4.0 |> power(of: 2.0) +/// Ok(16.0) +/// ``` +/// +/// ```gleam +/// > power(-1.0, 0.5) +/// Error(Nil) +/// ``` +/// +pub fn power(base: Float, of exponent: Float) -> Result(Float, Nil) { + let fractional: Bool = ceiling(exponent) -. exponent >. 0.0 + // In the following check: + // 1. If the base is negative and the exponent is fractional then + // return an error as it will otherwise be an imaginary number + // 2. If the base is 0 and the exponent is negative then the expression + // is equivalent to the exponent divided by 0 and an error should be + // returned + case base <. 0.0 && fractional || base == 0.0 && exponent <. 0.0 { + True -> Error(Nil) + False -> Ok(do_power(base, exponent)) + } +} + +@external(erlang, "math", "pow") +@external(javascript, "../gleam_stdlib.mjs", "power") +fn do_power(a: Float, b: Float) -> Float + +/// Returns the square root of the input as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > square_root(4.0) +/// Ok(2.0) +/// ``` +/// +/// ```gleam +/// > square_root(-16.0) +/// Error(Nil) +/// ``` +/// +pub fn square_root(x: Float) -> Result(Float, Nil) { + power(x, 0.5) +} + +/// Returns the negative of the value provided. +/// +/// ## Examples +/// +/// ```gleam +/// > negate(1.0) +/// -1.0 +/// ``` +/// +pub fn negate(x: Float) -> Float { + -1.0 *. x +} + +/// Sums a list of `Float`s. +/// +/// ## Example +/// +/// ```gleam +/// > sum([1.0, 2.2, 3.3]) +/// 6.5 +/// ``` +/// +pub fn sum(numbers: List(Float)) -> Float { + numbers + |> do_sum(0.0) +} + +fn do_sum(numbers: List(Float), initial: Float) -> Float { + case numbers { + [] -> initial + [x, ..rest] -> do_sum(rest, x +. initial) + } +} + +/// Multiplies a list of `Float`s and returns the product. +/// +/// ## Example +/// +/// ```gleam +/// > product([2.5, 3.2, 4.2]) +/// 33.6 +/// ``` +/// +pub fn product(numbers: List(Float)) -> Float { + case numbers { + [] -> 1.0 + _ -> do_product(numbers, 1.0) + } +} + +fn do_product(numbers: List(Float), initial: Float) -> Float { + case numbers { + [] -> initial + [x, ..rest] -> do_product(rest, x *. initial) + } +} + +/// Generates a random float between the given minimum and maximum values. +/// +/// +/// ## Examples +/// +/// ```gleam +/// > random(1.0, 5.0) +/// 2.646355926896028 +/// ``` +/// +pub fn random(min: Float, max: Float) -> Float { + do_random_uniform() *. { max -. min } +. min +} + +/// Returns a random float uniformly distributed in the value range +/// 0.0 =< X < 1.0 and updates the state in the process dictionary. +/// See: +/// +@external(erlang, "rand", "uniform") +@external(javascript, "../gleam_stdlib.mjs", "random_uniform") +fn do_random_uniform() -> Float + +/// Returns division of the inputs as a `Result`. +/// +/// ## Examples +/// +/// ```gleam +/// > divide(0.0, 1.0) +/// Ok(1.0) +/// ``` +/// +/// ```gleam +/// > divide(1.0, 0.0) +/// Error(Nil) +/// ``` +/// +pub fn divide(a: Float, by b: Float) -> Result(Float, Nil) { + case b { + 0.0 -> Error(Nil) + b -> Ok(a /. b) + } +} + +/// Adds two floats together. +/// +/// It's the function equivalent of the `+.` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > add(1.0, 2.0) +/// 3.0 +/// ``` +/// +/// ```gleam +/// > import gleam/list +/// > list.fold([1.0, 2.0, 3.0], 0.0, add) +/// 6.0 +/// ``` +/// +/// ```gleam +/// > 3.0 |> add(2.0) +/// 5.0 +/// ``` +/// +pub fn add(a: Float, b: Float) -> Float { + a +. b +} + +/// Multiplies two floats together. +/// +/// It's the function equivalent of the `*.` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > multiply(2.0, 4.0) +/// 8.0 +/// ``` +/// +/// ```gleam +/// import gleam/list +/// > list.fold([2.0, 3.0, 4.0], 1.0, multiply) +/// 24.0 +/// ``` +/// +/// ```gleam +/// > 3.0 |> multiply(2.0) +/// 6.0 +/// ``` +/// +pub fn multiply(a: Float, b: Float) -> Float { + a *. b +} + +/// Subtracts one float from another. +/// +/// It's the function equivalent of the `-.` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > subtract(3.0, 1.0) +/// 2.0 +/// ``` +/// +/// ```gleam +/// > import gleam/list +/// > list.fold([1.0, 2.0, 3.0], 10.0, subtract) +/// 4.0 +/// ``` +/// +/// ```gleam +/// > 3.0 |> subtract(_, 2.0) +/// 1.0 +/// ``` +/// +/// ```gleam +/// > 3.0 |> subtract(2.0, _) +/// -1.0 +/// ``` +/// +pub fn subtract(a: Float, b: Float) -> Float { + a -. b +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam new file mode 100644 index 0000000..daa997d --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam @@ -0,0 +1,162 @@ +/// Takes two functions and chains them together to form one function that +/// takes the input from the first and returns the output of the second. +/// +pub fn compose(fun1: fn(a) -> b, fun2: fn(b) -> c) -> fn(a) -> c { + fn(a) { fun2(fun1(a)) } +} + +/// Takes a function with `2` arguments (an arity of `2`), and returns the +/// curried equivalent. +/// +/// `fn(a, b) -> c` becomes `fn(a) -> fn(b) -> c`. +/// +/// ## Examples +/// +/// *Currying* creates a new function that is identical to the given function +/// except that arguments must now be supplied one by one over several function +/// calls. It thus is the process of taking a function with `n` arguments +/// and producing a sequence of `n` single-argument functions. Given: +/// +/// ```gleam +/// > fn my_fun(i: Int, s: String) -> String { ... } +/// ``` +/// +/// …calling `curry2(my_fun)` would return the curried equivalent, like so: +/// +/// ```gleam +/// > curry2(my_fun) +/// fn(Int) -> fn(String) -> String +/// ``` +/// +/// Currying is useful when you want to partially apply a function with +/// some arguments and then pass it somewhere else, for example: +/// +/// ```gleam +/// > import gleam/list +/// > let multiply = curry2(fn(x, y) { x * y }) +/// > let doubles = list.map([1, 2, 3], multiply(2)) +/// [2, 4, 6] +/// ``` +/// +pub fn curry2(fun: fn(a, b) -> value) { + fn(a) { fn(b) { fun(a, b) } } +} + +/// Takes a function with `3` arguments (an arity of `3`), and returns the +/// curried equivalent. +/// +/// `fn(a, b, c) -> d` becomes `fn(a) -> fn(b) -> fn(c) -> d`. +/// +/// See [`curry2`](#curry2) for a detailed explanation. +/// +pub fn curry3(fun: fn(a, b, c) -> value) { + fn(a) { fn(b) { fn(c) { fun(a, b, c) } } } +} + +/// Takes a function with `4` arguments (an arity of `4`), and returns the +/// curried equivalent. +/// +/// `fn(a, b, c, d) -> e` becomes `fn(a) -> fn(b) -> fn(c) -> fn(d) -> e`. +/// +/// See [`curry2`](#curry2) for a detailed explanation. +/// +pub fn curry4(fun: fn(a, b, c, d) -> value) { + fn(a) { fn(b) { fn(c) { fn(d) { fun(a, b, c, d) } } } } +} + +/// Takes a function with `5` arguments (an arity of `5`), and returns the +/// curried equivalent. +/// +/// `fn(a, b, c, d, e) -> f` becomes +/// `fn(a) -> fn(b) -> fn(c) -> fn(d) -> fn(e) -> f`. +/// +/// See [`curry2`](#curry2) for a detailed explanation. +/// +pub fn curry5(fun: fn(a, b, c, d, e) -> value) { + fn(a) { fn(b) { fn(c) { fn(d) { fn(e) { fun(a, b, c, d, e) } } } } } +} + +/// Takes a function with `6` arguments (an arity of `6`), and returns the +/// curried equivalent. +/// +/// `fn(a, b, c, d, e, f) -> g` becomes +/// `fn(a) -> fn(b) -> fn(c) -> fn(d) -> fn(e) -> fn(f) -> g`. +/// +/// See [`curry2`](#curry2) for a detailed explanation. +/// +pub fn curry6(fun: fn(a, b, c, d, e, f) -> value) { + fn(a) { + fn(b) { fn(c) { fn(d) { fn(e) { fn(f) { fun(a, b, c, d, e, f) } } } } } + } +} + +/// Takes a function that takes two arguments and returns a new function that +/// takes the same two arguments, but in reverse order. +/// +pub fn flip(fun: fn(a, b) -> c) -> fn(b, a) -> c { + fn(b, a) { fun(a, b) } +} + +/// Takes a single argument and always returns its input value. +/// +pub fn identity(x: a) -> a { + x +} + +/// Takes a single argument and returns a new function that +/// ignores its argument and always returns the input value. +/// +pub fn constant(value: a) -> fn(b) -> a { + fn(_) { value } +} + +/// Takes an argument and a single function, +/// calls that function with that argument +/// and returns that argument instead of the function return value. +/// Useful for running synchronous side effects in a pipeline. +/// +pub fn tap(arg: a, effect: fn(a) -> b) -> a { + effect(arg) + arg +} + +/// Takes a function with arity one and an argument, +/// calls that function with the argument and returns the function return value. +/// +/// Useful for concisely calling functions returned as a part of a pipeline. +/// +/// ## Example +/// +/// ```gleam +/// > let doubler = fn() { +/// > fn(x: Int) { x * 2 } +/// > } +/// > +/// > doubler() +/// > |> apply1(2) +/// 4 +/// ``` +/// +pub fn apply1(fun: fn(a) -> value, arg1: a) -> value { + fun(arg1) +} + +/// Takes a function with arity two and two arguments, +/// calls that function with the arguments +/// and returns the function return value. +/// +/// See [`apply1`](#apply1) for more details. +/// +pub fn apply2(fun: fn(a, b) -> value, arg1: a, arg2: b) -> value { + fun(arg1, arg2) +} + +/// Takes a function with arity three and three arguments, +/// calls that function with the arguments +/// and returns the function return value. +/// +/// See [`apply1`](#apply1) for more details. +/// +pub fn apply3(fun: fn(a, b, c) -> value, arg1: a, arg2: b, arg3: c) -> value { + fun(arg1, arg2, arg3) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam new file mode 100644 index 0000000..d93c16a --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam @@ -0,0 +1,874 @@ +//// Functions for working with integers. +//// +//// ## Division by zero +//// +//// In Erlang division by zero results in a crash, however Gleam does not have +//// partial functions and operators in core so instead division by zero returns +//// zero, a behaviour taken from Pony, Coq, and Lean. +//// +//// This may seem unexpected at first, but it is no less mathematically valid +//// than crashing or returning a special value. Division by zero is undefined +//// in mathematics. + +import gleam/float +import gleam/order.{type Order} + +/// Returns the absolute value of the input. +/// +/// ## Examples +/// +/// ```gleam +/// > absolute_value(-12) +/// 12 +/// ``` +/// +/// ```gleam +/// > absolute_value(10) +/// 10 +/// ``` +/// +pub fn absolute_value(x: Int) -> Int { + case x >= 0 { + True -> x + False -> x * -1 + } +} + +/// Returns the results of the base being raised to the power of the +/// exponent, as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > power(2, -1.0) +/// Ok(0.5) +/// ``` +/// +/// ```gleam +/// > power(2, 2.0) +/// Ok(4.0) +/// ``` +/// +/// ```gleam +/// > power(8, 1.5) +/// Ok(22.627416997969522) +/// ``` +/// +/// ```gleam +/// > 4 |> power(of: 2.0) +/// Ok(16.0) +/// ``` +/// +/// ```gleam +/// > power(-1, 0.5) +/// Error(Nil) +/// ``` +/// +pub fn power(base: Int, of exponent: Float) -> Result(Float, Nil) { + base + |> to_float() + |> float.power(exponent) +} + +/// Returns the square root of the input as a `Float`. +/// +/// ## Examples +/// +/// ```gleam +/// > square_root(4) +/// Ok(2.0) +/// ``` +/// +/// ```gleam +/// > square_root(-16) +/// Error(Nil) +/// ``` +/// +pub fn square_root(x: Int) -> Result(Float, Nil) { + x + |> to_float() + |> float.square_root() +} + +/// Parses a given string as an int if possible. +/// +/// ## Examples +/// +/// ```gleam +/// > parse("2") +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > parse("ABC") +/// Error(Nil) +/// ``` +/// +pub fn parse(string: String) -> Result(Int, Nil) { + do_parse(string) +} + +@external(erlang, "gleam_stdlib", "parse_int") +@external(javascript, "../gleam_stdlib.mjs", "parse_int") +fn do_parse(a: String) -> Result(Int, Nil) + +/// Parses a given string as an int in a given base if possible. +/// Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`. +/// +/// ## Examples +/// +/// ```gleam +/// > base_parse("10", 2) +/// Ok(2) +/// +/// > base_parse("30", 16) +/// Ok(48) +/// +/// > base_parse("1C", 36) +/// Ok(48) +/// +/// > base_parse("48", 1) +/// Error(Nil) +/// +/// > base_parse("48", 37) +/// Error(Nil) +/// ``` +/// +pub fn base_parse(string: String, base: Int) -> Result(Int, Nil) { + case base >= 2 && base <= 36 { + True -> do_base_parse(string, base) + False -> Error(Nil) + } +} + +@external(erlang, "gleam_stdlib", "int_from_base_string") +@external(javascript, "../gleam_stdlib.mjs", "int_from_base_string") +fn do_base_parse(a: String, b: Int) -> Result(Int, Nil) + +/// Prints a given int to a string. +/// +/// ## Examples +/// +/// ```gleam +/// > to_string(2) +/// "2" +/// ``` +/// +pub fn to_string(x: Int) { + do_to_string(x) +} + +@external(erlang, "erlang", "integer_to_binary") +@external(javascript, "../gleam_stdlib.mjs", "to_string") +fn do_to_string(a: Int) -> String + +/// Error value when trying to operate with a base out of the allowed range. +/// +pub type InvalidBase { + InvalidBase +} + +/// Prints a given int to a string using the base number provided. +/// Supports only bases 2 to 36, for values outside of which this function returns an `Error(InvalidBase)`. +/// For common bases (2, 8, 16, 36), use the `to_baseN` functions. +/// +/// ## Examples +/// +/// ```gleam +/// > to_base_string(2, 2) +/// Ok("10") +/// ``` +/// +/// ```gleam +/// > to_base_string(48, 16) +/// Ok("30") +/// ``` +/// +/// ```gleam +/// > to_base_string(48, 36) +/// Ok("1C") +/// ``` +/// +/// ```gleam +/// > to_base_string(48, 1) +/// Error(InvalidBase) +/// ``` +/// +/// ```gleam +/// > to_base_string(48, 37) +/// Error(InvalidBase) +/// ``` +/// +pub fn to_base_string(x: Int, base: Int) -> Result(String, InvalidBase) { + case base >= 2 && base <= 36 { + True -> Ok(do_to_base_string(x, base)) + False -> Error(InvalidBase) + } +} + +@external(erlang, "erlang", "integer_to_binary") +@external(javascript, "../gleam_stdlib.mjs", "int_to_base_string") +fn do_to_base_string(a: Int, b: Int) -> String + +/// Prints a given int to a string using base-2. +/// +/// ## Examples +/// +/// ```gleam +/// > to_base2(2) +/// "10" +/// ``` +/// +pub fn to_base2(x: Int) -> String { + do_to_base_string(x, 2) +} + +/// Prints a given int to a string using base-8. +/// +/// ## Examples +/// +/// ```gleam +/// > to_base8(15) +/// "17" +/// ``` +/// +pub fn to_base8(x: Int) -> String { + do_to_base_string(x, 8) +} + +/// Prints a given int to a string using base-16. +/// +/// ## Examples +/// +/// ```gleam +/// > to_base16(48) +/// "30" +/// ``` +/// +pub fn to_base16(x: Int) -> String { + do_to_base_string(x, 16) +} + +/// Prints a given int to a string using base-36. +/// +/// ## Examples +/// +/// ```gleam +/// > to_base36(48) +/// "1C" +/// ``` +/// +pub fn to_base36(x: Int) -> String { + do_to_base_string(x, 36) +} + +/// Takes an int and returns its value as a float. +/// +/// ## Examples +/// +/// ```gleam +/// > to_float(5) +/// 5.0 +/// ``` +/// +/// ```gleam +/// > to_float(0) +/// 0.0 +/// ``` +/// +/// ```gleam +/// > to_float(-3) +/// -3.0 +/// ``` +/// +pub fn to_float(x: Int) -> Float { + do_to_float(x) +} + +@external(erlang, "erlang", "float") +@external(javascript, "../gleam_stdlib.mjs", "identity") +fn do_to_float(a: Int) -> Float + +/// Restricts an int between a lower and upper bound. +/// +/// ## Examples +/// +/// ```gleam +/// > clamp(40, min: 50, max: 60) +/// 50 +/// ``` +/// +pub fn clamp(x: Int, min min_bound: Int, max max_bound: Int) -> Int { + x + |> min(max_bound) + |> max(min_bound) +} + +/// Compares two ints, returning an order. +/// +/// ## Examples +/// +/// ```gleam +/// > compare(2, 3) +/// Lt +/// ``` +/// +/// ```gleam +/// > compare(4, 3) +/// Gt +/// ``` +/// +/// ```gleam +/// > compare(3, 3) +/// Eq +/// ``` +/// +pub fn compare(a: Int, with b: Int) -> Order { + case a == b { + True -> order.Eq + False -> + case a < b { + True -> order.Lt + False -> order.Gt + } + } +} + +/// Compares two ints, returning the smaller of the two. +/// +/// ## Examples +/// +/// ```gleam +/// > min(2, 3) +/// 2 +/// ``` +/// +pub fn min(a: Int, b: Int) -> Int { + case a < b { + True -> a + False -> b + } +} + +/// Compares two ints, returning the larger of the two. +/// +/// ## Examples +/// +/// ```gleam +/// > max(2, 3) +/// 3 +/// ``` +/// +pub fn max(a: Int, b: Int) -> Int { + case a > b { + True -> a + False -> b + } +} + +/// Returns whether the value provided is even. +/// +/// ## Examples +/// +/// ```gleam +/// > is_even(2) +/// True +/// ``` +/// +/// ```gleam +/// > is_even(3) +/// False +/// ``` +/// +pub fn is_even(x: Int) -> Bool { + x % 2 == 0 +} + +/// Returns whether the value provided is odd. +/// +/// ## Examples +/// +/// ```gleam +/// > is_odd(3) +/// True +/// ``` +/// +/// ```gleam +/// > is_odd(2) +/// False +/// ``` +/// +pub fn is_odd(x: Int) -> Bool { + x % 2 != 0 +} + +/// Returns the negative of the value provided. +/// +/// ## Examples +/// +/// ```gleam +/// > negate(1) +/// -1 +/// ``` +/// +pub fn negate(x: Int) -> Int { + -1 * x +} + +/// Sums a list of ints. +/// +/// ## Example +/// +/// ```gleam +/// > sum([1, 2, 3]) +/// 6 +/// ``` +/// +pub fn sum(numbers: List(Int)) -> Int { + numbers + |> do_sum(0) +} + +fn do_sum(numbers: List(Int), initial: Int) -> Int { + case numbers { + [] -> initial + [x, ..rest] -> do_sum(rest, x + initial) + } +} + +/// Multiplies a list of ints and returns the product. +/// +/// ## Example +/// +/// ```gleam +/// > product([2, 3, 4]) +/// 24 +/// ``` +/// +pub fn product(numbers: List(Int)) -> Int { + case numbers { + [] -> 1 + _ -> do_product(numbers, 1) + } +} + +fn do_product(numbers: List(Int), initial: Int) -> Int { + case numbers { + [] -> initial + [x, ..rest] -> do_product(rest, x * initial) + } +} + +/// Splits an integer into its digit representation in the specified base +/// +/// ## Examples +/// +/// ```gleam +/// > digits(234, 10) +/// Ok([2,3,4]) +/// ``` +/// +/// ```gleam +/// > digits(234, 1) +/// Error(InvalidBase) +/// ``` +/// +pub fn digits(x: Int, base: Int) -> Result(List(Int), InvalidBase) { + case base < 2 { + True -> Error(InvalidBase) + False -> Ok(do_digits(x, base, [])) + } +} + +fn do_digits(x: Int, base: Int, acc: List(Int)) -> List(Int) { + case absolute_value(x) < base { + True -> [x, ..acc] + False -> do_digits(x / base, base, [x % base, ..acc]) + } +} + +/// Joins a list of digits into a single value. +/// Returns an error if the base is less than 2 or if the list contains a digit greater than or equal to the specified base. +/// +/// ## Examples +/// +/// ```gleam +/// > undigits([2,3,4], 10) +/// Ok(234) +/// ``` +/// +/// ```gleam +/// > undigits([2,3,4], 1) +/// Error(InvalidBase) +/// ``` +/// +/// ```gleam +/// > undigits([2,3,4], 2) +/// Error(InvalidBase) +/// ``` +/// +pub fn undigits(numbers: List(Int), base: Int) -> Result(Int, InvalidBase) { + case base < 2 { + True -> Error(InvalidBase) + False -> do_undigits(numbers, base, 0) + } +} + +fn do_undigits( + numbers: List(Int), + base: Int, + acc: Int, +) -> Result(Int, InvalidBase) { + case numbers { + [] -> Ok(acc) + [digit, ..] if digit >= base -> Error(InvalidBase) + [digit, ..rest] -> do_undigits(rest, base, acc * base + digit) + } +} + +/// Generates a random int between the given minimum and maximum values. +/// +/// ## Examples +/// +/// ```gleam +/// > random(1, 5) +/// 2 +/// ``` +/// +pub fn random(min: Int, max: Int) -> Int { + float.random(to_float(min), to_float(max)) + |> float.floor() + |> float.round() +} + +/// Performs a truncated integer division. +/// +/// Returns division of the inputs as a `Result`: If the given divisor equals +/// `0`, this function returns an `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > divide(0, 1) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > divide(1, 0) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > divide(5, 2) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > divide(-99, 2) +/// Ok(-49) +/// ``` +/// +pub fn divide(dividend: Int, by divisor: Int) -> Result(Int, Nil) { + case divisor { + 0 -> Error(Nil) + divisor -> Ok(dividend / divisor) + } +} + +/// Computes the remainder of an integer division of inputs as a `Result`. +/// +/// Returns division of the inputs as a `Result`: If the given divisor equals +/// `0`, this function returns an `Error`. +/// +/// Most the time you will want to use the `%` operator instead of this +/// function. +/// +/// ## Examples +/// +/// ```gleam +/// > remainder(3, 2) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > remainder(1, 0) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > remainder(10, -1) +/// Ok(0) +/// ``` +/// +/// ```gleam +/// > remainder(13, by: 3) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > remainder(-13, by: 3) +/// Ok(-1) +/// ``` +/// +/// ```gleam +/// > remainder(13, by: -3) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > remainder(-13, by: -3) +/// Ok(-1) +/// ``` +/// +pub fn remainder(dividend: Int, by divisor: Int) -> Result(Int, Nil) { + case divisor { + 0 -> Error(Nil) + divisor -> Ok(dividend % divisor) + } +} + +/// Computes the modulo of an integer division of inputs as a `Result`. +/// +/// Returns division of the inputs as a `Result`: If the given divisor equals +/// `0`, this function returns an `Error`. +/// +/// Most the time you will want to use the `%` operator instead of this +/// function. +/// +/// ## Examples +/// +/// ```gleam +/// > modulo(3, 2) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > modulo(1, 0) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > modulo(10, -1) +/// Ok(0) +/// ``` +/// +/// ```gleam +/// > modulo(13, by: 3) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > modulo(-13, by: 3) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > modulo(13, by: -3) +/// Ok(-2) +/// ``` +/// +/// ```gleam +/// > modulo(-13, by: -3) +/// Ok(-1) +/// ``` +/// +pub fn modulo(dividend: Int, by divisor: Int) -> Result(Int, Nil) { + case divisor { + 0 -> Error(Nil) + _ -> { + let remainder = dividend % divisor + case remainder * divisor < 0 { + True -> Ok(remainder + divisor) + False -> Ok(remainder) + } + } + } +} + +/// Performs a *floored* integer division, which means that the result will +/// always be rounded towards negative infinity. +/// +/// If you want to perform truncated integer division (rounding towards zero), +/// use `int.divide()` or the `/` operator instead. +/// +/// Returns division of the inputs as a `Result`: If the given divisor equals +/// `0`, this function returns an `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > floor_divide(1, 0) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > floor_divide(5, 2) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > floor_divide(6, -4) +/// Ok(-2) +/// ``` +/// +/// ```gleam +/// > floor_divide(-99, 2) +/// Ok(-50) +/// ``` +/// +pub fn floor_divide(dividend: Int, by divisor: Int) -> Result(Int, Nil) { + case divisor { + 0 -> Error(Nil) + divisor -> + case dividend * divisor < 0 && dividend % divisor != 0 { + True -> Ok(dividend / divisor - 1) + False -> Ok(dividend / divisor) + } + } +} + +/// Adds two integers together. +/// +/// It's the function equivalent of the `+` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > add(1, 2) +/// 3 +/// ``` +/// +/// ```gleam +/// import gleam/list +/// > list.fold([1, 2, 3], 0, add) +/// 6 +/// ``` +/// +/// ```gleam +/// > 3 |> add(2) +/// 5 +/// ``` +/// +pub fn add(a: Int, b: Int) -> Int { + a + b +} + +/// Multiplies two integers together. +/// +/// It's the function equivalent of the `*` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > multiply(2, 4) +/// 8 +/// ``` +/// +/// ```gleam +/// import gleam/list +/// > list.fold([2, 3, 4], 1, multiply) +/// 24 +/// ``` +/// +/// ```gleam +/// > 3 |> multiply(2) +/// 6 +/// ``` +/// +pub fn multiply(a: Int, b: Int) -> Int { + a * b +} + +/// Subtracts one int from another. +/// +/// It's the function equivalent of the `-` operator. +/// This function is useful in higher order functions or pipes. +/// +/// ## Examples +/// +/// ```gleam +/// > subtract(3, 1) +/// 2.0 +/// ``` +/// +/// ```gleam +/// import gleam/list +/// > list.fold([1, 2, 3], 10, subtract) +/// 4 +/// ``` +/// +/// ```gleam +/// > 3 |> subtract(2) +/// 1 +/// ``` +/// +/// ```gleam +/// > 3 |> subtract(2, _) +/// -1 +/// ``` +/// +pub fn subtract(a: Int, b: Int) -> Int { + a - b +} + +/// Calculates the bitwise AND of its arguments. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "band") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_and") +pub fn bitwise_and(x: Int, y: Int) -> Int + +/// Calculates the bitwise NOT of its argument. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "bnot") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_not") +pub fn bitwise_not(x: Int) -> Int + +/// Calculates the bitwise OR of its arguments. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "bor") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_or") +pub fn bitwise_or(x: Int, y: Int) -> Int + +/// Calculates the bitwise XOR of its arguments. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "bxor") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_exclusive_or") +pub fn bitwise_exclusive_or(x: Int, y: Int) -> Int + +/// Calculates the result of an arithmetic left bitshift. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "bsl") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_shift_left") +pub fn bitwise_shift_left(x: Int, y: Int) -> Int + +/// Calculates the result of an arithmetic right bitshift. +/// +/// The exact behaviour of this function depends on the target platform. +/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it +/// is equivalent to bitwise operations on big-ints. +/// +@external(erlang, "erlang", "bsr") +@external(javascript, "../gleam_stdlib.mjs", "bitwise_shift_right") +pub fn bitwise_shift_right(x: Int, y: Int) -> Int diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam new file mode 100644 index 0000000..0c0a3ee --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam @@ -0,0 +1,117 @@ +import gleam/string + +/// Writes a string to standard output. +/// +/// If you want your output to be printed on its own line see `println`. +/// +/// ## Example +/// +/// ```gleam +/// > io.print("Hi mum") +/// // -> Hi mum +/// Nil +/// ``` +/// +pub fn print(string: String) -> Nil { + do_print(string) +} + +@external(erlang, "gleam_stdlib", "print") +@external(javascript, "../gleam_stdlib.mjs", "print") +fn do_print(string string: String) -> Nil + +/// Writes a string to standard error. +/// +/// If you want your output to be printed on its own line see `println_error`. +/// +/// ## Example +/// +/// ``` +/// > io.print_error("Hi pop") +/// // -> Hi pop +/// Nil +/// ``` +/// +pub fn print_error(string: String) -> Nil { + do_print_error(string) +} + +@external(erlang, "gleam_stdlib", "print_error") +@external(javascript, "../gleam_stdlib.mjs", "print_error") +fn do_print_error(string string: String) -> Nil + +/// Writes a string to standard output, appending a newline to the end. +/// +/// ## Example +/// +/// ```gleam +/// > io.println("Hi mum") +/// // -> Hi mum +/// Nil +/// ``` +/// +pub fn println(string: String) -> Nil { + do_println(string) +} + +@external(erlang, "gleam_stdlib", "println") +@external(javascript, "../gleam_stdlib.mjs", "console_log") +fn do_println(string string: String) -> Nil + +/// Writes a string to standard error, appending a newline to the end. +/// +/// ## Example +/// +/// ```gleam +/// > io.println_error("Hi pop") +/// // -> Hi mum +/// Nil +/// ``` +/// +pub fn println_error(string: String) -> Nil { + do_println_error(string) +} + +@external(erlang, "gleam_stdlib", "println_error") +@external(javascript, "../gleam_stdlib.mjs", "console_error") +fn do_println_error(string string: String) -> Nil + +/// Prints a value to standard error (stderr) yielding Gleam syntax. +/// +/// The value is returned after being printed so it can be used in pipelines. +/// +/// ## Example +/// +/// ```gleam +/// > debug("Hi mum") +/// // -> <<"Hi mum">> +/// "Hi mum" +/// ``` +/// +/// ```gleam +/// > debug(Ok(1)) +/// // -> {ok, 1} +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > import list +/// > [1, 2] +/// > |> list.map(fn(x) { x + 1 }) +/// > |> debug +/// > |> list.map(fn(x) { x * 2 }) +/// // -> [2, 3] +/// [4, 6] +/// ``` +/// +pub fn debug(term: anything) -> anything { + term + |> string.inspect + |> do_debug_println + + term +} + +@external(erlang, "gleam_stdlib", "println_error") +@external(javascript, "../gleam_stdlib.mjs", "print_debug") +fn do_debug_println(string string: String) -> Nil diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam new file mode 100644 index 0000000..c57e7fd --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam @@ -0,0 +1,1530 @@ +import gleam/result +import gleam/int +import gleam/list +import gleam/dict.{type Dict} +import gleam/option.{type Option, None, Some} +import gleam/order + +// Internal private representation of an Iterator +type Action(element) { + // Dedicated to Electric Six + // https://youtu.be/_30t2dzEgiw?t=162 + Stop + Continue(element, fn() -> Action(element)) +} + +/// An iterator is a lazily evaluated sequence of element. +/// +/// Iterators are useful when working with collections that are too large to +/// fit in memory (or those that are infinite in size) as they only require the +/// elements currently being processed to be in memory. +/// +/// As a lazy data structure no work is done when an iterator is filters, +/// mapped, etc, instead a new iterator is returned with these transformations +/// applied to the stream. Once the stream has all the required transformations +/// applied it can be evaluated using functions such as `fold` and `to_list`. +/// +pub opaque type Iterator(element) { + Iterator(continuation: fn() -> Action(element)) +} + +// Public API for iteration +pub type Step(element, accumulator) { + Next(element: element, accumulator: accumulator) + Done +} + +// Shortcut for an empty iterator. +fn stop() -> Action(element) { + Stop +} + +// Creating Iterators +fn do_unfold( + initial: acc, + f: fn(acc) -> Step(element, acc), +) -> fn() -> Action(element) { + fn() { + case f(initial) { + Next(x, acc) -> Continue(x, do_unfold(acc, f)) + Done -> Stop + } + } +} + +/// Creates an iterator from a given function and accumulator. +/// +/// The function is called on the accumulator and returns either `Done`, +/// indicating the iterator has no more elements, or `Next` which contains a +/// new element and accumulator. The element is yielded by the iterator and the +/// new accumulator is used with the function to compute the next element in +/// the sequence. +/// +/// ## Examples +/// +/// ```gleam +/// > unfold(from: 5, with: fn(n) { +/// > case n { +/// > 0 -> Done +/// > n -> Next(element: n, accumulator: n - 1) +/// > } +/// > }) +/// > |> to_list +/// [5, 4, 3, 2, 1] +/// ``` +/// +pub fn unfold( + from initial: acc, + with f: fn(acc) -> Step(element, acc), +) -> Iterator(element) { + initial + |> do_unfold(f) + |> Iterator +} + +// TODO: test +/// Creates an iterator that yields values created by calling a given function +/// repeatedly. +/// +pub fn repeatedly(f: fn() -> element) -> Iterator(element) { + unfold(Nil, fn(_) { Next(f(), Nil) }) +} + +/// Creates an iterator that returns the same value infinitely. +/// +/// ## Examples +/// +/// ```gleam +/// > repeat(10) +/// > |> take(4) +/// > |> to_list +/// [10, 10, 10, 10] +/// ``` +/// +pub fn repeat(x: element) -> Iterator(element) { + repeatedly(fn() { x }) +} + +/// Creates an iterator that yields each element from the given list. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) +/// > |> to_list +/// [1, 2, 3, 4] +/// ``` +/// +pub fn from_list(list: List(element)) -> Iterator(element) { + let yield = fn(acc) { + case acc { + [] -> Done + [head, ..tail] -> Next(head, tail) + } + } + unfold(list, yield) +} + +// Consuming Iterators +fn do_transform( + continuation: fn() -> Action(a), + state: acc, + f: fn(acc, a) -> Step(b, acc), +) -> fn() -> Action(b) { + fn() { + case continuation() { + Stop -> Stop + Continue(el, next) -> + case f(state, el) { + Done -> Stop + Next(yield, next_state) -> + Continue(yield, do_transform(next, next_state, f)) + } + } + } +} + +/// Creates an iterator from an existing iterator +/// and a stateful function that may short-circuit. +/// +/// `f` takes arguments `acc` for current state and `el` for current element from underlying iterator, +/// and returns either `Next` with yielded element and new state value, or `Done` to halt the iterator. +/// +/// ## Examples +/// +/// Approximate implementation of `index` in terms of `transform`: +/// +/// ```gleam +/// > from_list(["a", "b", "c"]) +/// > |> transform(0, fn(i, el) { Next(#(i, el), i + 1) }) +/// > |> to_list +/// [#(0, "a"), #(1, "b"), #(2, "c")] +/// ``` +pub fn transform( + over iterator: Iterator(a), + from initial: acc, + with f: fn(acc, a) -> Step(b, acc), +) -> Iterator(b) { + do_transform(iterator.continuation, initial, f) + |> Iterator +} + +fn do_fold( + continuation: fn() -> Action(e), + f: fn(acc, e) -> acc, + accumulator: acc, +) -> acc { + case continuation() { + Continue(elem, next) -> do_fold(next, f, f(accumulator, elem)) + Stop -> accumulator + } +} + +/// Reduces an iterator of elements into a single value by calling a given +/// function on each element in turn. +/// +/// If called on an iterator of infinite length then this function will never +/// return. +/// +/// If you do not care about the end value and only wish to evaluate the +/// iterator for side effects consider using the `run` function instead. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4] +/// > |> from_list +/// > |> fold(from: 0, with: fn(acc, element) { element + acc }) +/// 10 +/// ``` +/// +pub fn fold( + over iterator: Iterator(e), + from initial: acc, + with f: fn(acc, e) -> acc, +) -> acc { + iterator.continuation + |> do_fold(f, initial) +} + +// TODO: test +/// Evaluates all elements emitted by the given iterator. This function is useful for when +/// you wish to trigger any side effects that would occur when evaluating +/// the iterator. +/// +pub fn run(iterator: Iterator(e)) -> Nil { + fold(iterator, Nil, fn(_, _) { Nil }) +} + +/// Evaluates an iterator and returns all the elements as a list. +/// +/// If called on an iterator of infinite length then this function will never +/// return. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3] +/// > |> from_list +/// > |> map(fn(x) { x * 2 }) +/// > |> to_list +/// [2, 4, 6] +/// ``` +/// +pub fn to_list(iterator: Iterator(element)) -> List(element) { + iterator + |> fold([], fn(acc, e) { [e, ..acc] }) + |> list.reverse +} + +/// Eagerly accesses the first value of an iterator, returning a `Next` +/// that contains the first value and the rest of the iterator. +/// +/// If called on an empty iterator, `Done` is returned. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Next(first, rest) = [1, 2, 3, 4] +/// > |> from_list +/// > |> step +/// > first +/// 1 +/// ``` +/// +/// ```gleam +/// > rest |> to_list +/// [2, 3, 4] +/// ``` +/// +/// ```gleam +/// > empty() |> step +/// Done +/// ``` +/// +pub fn step(iterator: Iterator(e)) -> Step(e, Iterator(e)) { + case iterator.continuation() { + Stop -> Done + Continue(e, a) -> Next(e, Iterator(a)) + } +} + +fn do_take(continuation: fn() -> Action(e), desired: Int) -> fn() -> Action(e) { + fn() { + case desired > 0 { + False -> Stop + True -> + case continuation() { + Stop -> Stop + Continue(e, next) -> Continue(e, do_take(next, desired - 1)) + } + } + } +} + +/// Creates an iterator that only yields the first `desired` elements. +/// +/// If the iterator does not have enough elements all of them are yielded. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4, 5] +/// > |> from_list +/// > |> take(up_to: 3) +/// > |> to_list +/// [1, 2, 3] +/// ``` +/// +/// ```gleam +/// > [1, 2] +/// > |> from_list +/// > |> take(up_to: 3) +/// > |> to_list +/// [1, 2] +/// ``` +/// +pub fn take(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { + iterator.continuation + |> do_take(desired) + |> Iterator +} + +fn do_drop(continuation: fn() -> Action(e), desired: Int) -> Action(e) { + case continuation() { + Stop -> Stop + Continue(e, next) -> + case desired > 0 { + True -> do_drop(next, desired - 1) + False -> Continue(e, next) + } + } +} + +/// Evaluates and discards the first N elements in an iterator, returning a new +/// iterator. +/// +/// If the iterator does not have enough elements an empty iterator is +/// returned. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4, 5] +/// > |> from_list +/// > |> drop(up_to: 3) +/// > |> to_list +/// [4, 5] +/// ``` +/// +/// ```gleam +/// > [1, 2] +/// > |> from_list +/// > |> drop(up_to: 3) +/// > |> to_list +/// [] +/// ``` +/// +pub fn drop(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { + fn() { do_drop(iterator.continuation, desired) } + |> Iterator +} + +fn do_map(continuation: fn() -> Action(a), f: fn(a) -> b) -> fn() -> Action(b) { + fn() { + case continuation() { + Stop -> Stop + Continue(e, continuation) -> Continue(f(e), do_map(continuation, f)) + } + } +} + +/// Creates an iterator from an existing iterator and a transformation function. +/// +/// Each element in the new iterator will be the result of calling the given +/// function on the elements in the given iterator. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3] +/// > |> from_list +/// > |> map(fn(x) { x * 2 }) +/// > |> to_list +/// [2, 4, 6] +/// ``` +/// +pub fn map(over iterator: Iterator(a), with f: fn(a) -> b) -> Iterator(b) { + iterator.continuation + |> do_map(f) + |> Iterator +} + +fn do_map2( + continuation1: fn() -> Action(a), + continuation2: fn() -> Action(b), + with fun: fn(a, b) -> c, +) -> fn() -> Action(c) { + fn() { + case continuation1() { + Stop -> Stop + Continue(a, next_a) -> + case continuation2() { + Stop -> Stop + Continue(b, next_b) -> + Continue(fun(a, b), do_map2(next_a, next_b, fun)) + } + } + } +} + +/// Combines two interators into a single one using the given function. +/// +/// If an iterator is longer than the other the extra elements are dropped. +/// +/// This function does not evaluate the elements of the two iterators, the +/// computation is performed when the resulting iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// let first = from_list([1, 2, 3]) +/// let second = from_list([4, 5, 6]) +/// map2(first, second, fn(x, y) { x + y }) |> to_list +/// // -> [5, 7, 9] +/// ``` +/// +/// ```gleam +/// let first = from_list([1, 2]) +/// let second = from_list(["a", "b", "c"]) +/// map2(first, second, fn(i, x) { #(i, x) }) |> to_list +/// // -> [#(1, "a"), #(2, "b")] +/// ``` +/// +pub fn map2( + iterator1: Iterator(a), + iterator2: Iterator(b), + with fun: fn(a, b) -> c, +) -> Iterator(c) { + do_map2(iterator1.continuation, iterator2.continuation, fun) + |> Iterator +} + +fn do_append(first: fn() -> Action(a), second: fn() -> Action(a)) -> Action(a) { + case first() { + Continue(e, first) -> Continue(e, fn() { do_append(first, second) }) + Stop -> second() + } +} + +/// Appends two iterators, producing a new iterator. +/// +/// This function does not evaluate the elements of the iterators, the +/// computation is performed when the resulting iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2] +/// > |> from_list +/// > |> append([3, 4] |> from_list) +/// > |> to_list +/// [1, 2, 3, 4] +/// ``` +/// +pub fn append(to first: Iterator(a), suffix second: Iterator(a)) -> Iterator(a) { + fn() { do_append(first.continuation, second.continuation) } + |> Iterator +} + +fn do_flatten(flattened: fn() -> Action(Iterator(a))) -> Action(a) { + case flattened() { + Stop -> Stop + Continue(it, next_iterator) -> + do_append(it.continuation, fn() { do_flatten(next_iterator) }) + } +} + +/// Flattens an iterator of iterators, creating a new iterator. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([[1, 2], [3, 4]]) +/// > |> map(from_list) +/// > |> flatten +/// > |> to_list +/// [1, 2, 3, 4] +/// ``` +/// +pub fn flatten(iterator: Iterator(Iterator(a))) -> Iterator(a) { + fn() { do_flatten(iterator.continuation) } + |> Iterator +} + +/// Joins a list of iterators into a single iterator. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > [[1, 2], [3, 4]] +/// > |> map(from_list) +/// > |> concat +/// > |> to_list +/// [1, 2, 3, 4] +/// ``` +/// +pub fn concat(iterators: List(Iterator(a))) -> Iterator(a) { + flatten(from_list(iterators)) +} + +/// Creates an iterator from an existing iterator and a transformation function. +/// +/// Each element in the new iterator will be the result of calling the given +/// function on the elements in the given iterator and then flattening the +/// results. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2] +/// > |> from_list +/// > |> flat_map(fn(x) { from_list([x, x + 1]) }) +/// > |> to_list +/// [1, 2, 2, 3] +/// ``` +/// +pub fn flat_map( + over iterator: Iterator(a), + with f: fn(a) -> Iterator(b), +) -> Iterator(b) { + iterator + |> map(f) + |> flatten +} + +fn do_filter( + continuation: fn() -> Action(e), + predicate: fn(e) -> Bool, +) -> Action(e) { + case continuation() { + Stop -> Stop + Continue(e, iterator) -> + case predicate(e) { + True -> Continue(e, fn() { do_filter(iterator, predicate) }) + False -> do_filter(iterator, predicate) + } + } +} + +/// Creates an iterator from an existing iterator and a predicate function. +/// +/// The new iterator will contain elements from the first iterator for which +/// the given function returns `True`. +/// +/// This function does not evaluate the elements of the iterator, the +/// computation is performed when the iterator is later run. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/int +/// > [1, 2, 3, 4] +/// > |> from_list +/// > |> filter(int.is_even) +/// > |> to_list +/// [2, 4] +/// ``` +/// +pub fn filter( + iterator: Iterator(a), + keeping predicate: fn(a) -> Bool, +) -> Iterator(a) { + fn() { do_filter(iterator.continuation, predicate) } + |> Iterator +} + +/// Creates an iterator that repeats a given iterator infinitely. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2] +/// > |> from_list +/// > |> cycle +/// > |> take(6) +/// > |> to_list +/// [1, 2, 1, 2, 1, 2] +/// ``` +/// +pub fn cycle(iterator: Iterator(a)) -> Iterator(a) { + repeat(iterator) + |> flatten +} + +/// Creates an iterator of ints, starting at a given start int and stepping by +/// one to a given end int. +/// +/// ## Examples +/// +/// ```gleam +/// > range(from: 1, to: 5) |> to_list +/// [1, 2, 3, 4, 5] +/// ``` +/// +/// ```gleam +/// > range(from: 1, to: -2) |> to_list +/// [1, 0, -1, -2] +/// ``` +/// +/// ```gleam +/// > range(from: 0, to: 0) |> to_list +/// [0] +/// ``` +/// +pub fn range(from start: Int, to stop: Int) -> Iterator(Int) { + case int.compare(start, stop) { + order.Eq -> once(fn() { start }) + order.Gt -> + unfold( + from: start, + with: fn(current) { + case current < stop { + False -> Next(current, current - 1) + True -> Done + } + }, + ) + + order.Lt -> + unfold( + from: start, + with: fn(current) { + case current > stop { + False -> Next(current, current + 1) + True -> Done + } + }, + ) + } +} + +fn do_find(continuation: fn() -> Action(a), f: fn(a) -> Bool) -> Result(a, Nil) { + case continuation() { + Stop -> Error(Nil) + Continue(e, next) -> + case f(e) { + True -> Ok(e) + False -> do_find(next, f) + } + } +} + +/// Finds the first element in a given iterator for which the given function returns +/// `True`. +/// +/// Returns `Error(Nil)` if the function does not return `True` for any of the +/// elements. +/// +/// ## Examples +/// +/// ```gleam +/// > find(from_list([1, 2, 3]), fn(x) { x > 2 }) +/// Ok(3) +/// ``` +/// +/// ```gleam +/// > find(from_list([1, 2, 3]), fn(x) { x > 4 }) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > find(empty(), fn(_) { True }) +/// Error(Nil) +/// ``` +/// +pub fn find( + in haystack: Iterator(a), + one_that is_desired: fn(a) -> Bool, +) -> Result(a, Nil) { + haystack.continuation + |> do_find(is_desired) +} + +fn do_index( + continuation: fn() -> Action(element), + next: Int, +) -> fn() -> Action(#(Int, element)) { + fn() { + case continuation() { + Stop -> Stop + Continue(e, continuation) -> + Continue(#(next, e), do_index(continuation, next + 1)) + } + } +} + +/// Wraps values yielded from an iterator with indices, starting from 0. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list(["a", "b", "c"]) |> index |> to_list +/// [#(0, "a"), #(1, "b"), #(2, "c")] +/// ``` +/// +pub fn index(over iterator: Iterator(element)) -> Iterator(#(Int, element)) { + iterator.continuation + |> do_index(0) + |> Iterator +} + +/// Creates an iterator that inifinitely applies a function to a value. +/// +/// ## Examples +/// +/// ```gleam +/// > iterate(1, fn(n) { n * 3 }) |> take(5) |> to_list +/// [1, 3, 9, 27, 81] +/// ``` +/// +pub fn iterate( + from initial: element, + with f: fn(element) -> element, +) -> Iterator(element) { + unfold(initial, fn(element) { Next(element, f(element)) }) +} + +fn do_take_while( + continuation: fn() -> Action(element), + predicate: fn(element) -> Bool, +) -> fn() -> Action(element) { + fn() { + case continuation() { + Stop -> Stop + Continue(e, next) -> + case predicate(e) { + False -> Stop + True -> Continue(e, do_take_while(next, predicate)) + } + } + } +} + +/// Creates an iterator that yields elements while the predicate returns `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 2, 4]) +/// > |> take_while(satisfying: fn(x) { x < 3 }) +/// > |> to_list +/// [1, 2] +/// ``` +/// +pub fn take_while( + in iterator: Iterator(element), + satisfying predicate: fn(element) -> Bool, +) -> Iterator(element) { + iterator.continuation + |> do_take_while(predicate) + |> Iterator +} + +fn do_drop_while( + continuation: fn() -> Action(element), + predicate: fn(element) -> Bool, +) -> Action(element) { + case continuation() { + Stop -> Stop + Continue(e, next) -> + case predicate(e) { + False -> Continue(e, next) + True -> do_drop_while(next, predicate) + } + } +} + +/// Creates an iterator that drops elements while the predicate returns `True`, +/// and then yields the remaining elements. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4, 2, 5]) +/// > |> drop_while(satisfying: fn(x) { x < 4 }) +/// > |> to_list +/// [4, 2, 5] +/// ``` +/// +pub fn drop_while( + in iterator: Iterator(element), + satisfying predicate: fn(element) -> Bool, +) -> Iterator(element) { + fn() { do_drop_while(iterator.continuation, predicate) } + |> Iterator +} + +fn do_scan( + continuation: fn() -> Action(element), + f: fn(acc, element) -> acc, + accumulator: acc, +) -> fn() -> Action(acc) { + fn() { + case continuation() { + Stop -> Stop + Continue(el, next) -> { + let accumulated = f(accumulator, el) + Continue(accumulated, do_scan(next, f, accumulated)) + } + } + } +} + +/// Creates an iterator from an existing iterator and a stateful function. +/// +/// Specifically, this behaves like `fold`, but yields intermediate results. +/// +/// ## Examples +/// +/// ```gleam +/// // Generate a sequence of partial sums +/// > from_list([1, 2, 3, 4, 5]) +/// > |> scan(from: 0, with: fn(acc, el) { acc + el }) +/// > |> to_list +/// [1, 3, 6, 10, 15] +/// ``` +/// +pub fn scan( + over iterator: Iterator(element), + from initial: acc, + with f: fn(acc, element) -> acc, +) -> Iterator(acc) { + iterator.continuation + |> do_scan(f, initial) + |> Iterator +} + +fn do_zip( + left: fn() -> Action(a), + right: fn() -> Action(b), +) -> fn() -> Action(#(a, b)) { + fn() { + case left() { + Stop -> Stop + Continue(el_left, next_left) -> + case right() { + Stop -> Stop + Continue(el_right, next_right) -> + Continue(#(el_left, el_right), do_zip(next_left, next_right)) + } + } + } +} + +/// Zips two iterators together, emitting values from both +/// until the shorter one runs out. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list(["a", "b", "c"]) +/// > |> zip(range(20, 30)) +/// > |> to_list +/// [#("a", 20), #("b", 21), #("c", 22)] +/// ``` +/// +pub fn zip(left: Iterator(a), right: Iterator(b)) -> Iterator(#(a, b)) { + do_zip(left.continuation, right.continuation) + |> Iterator +} + +// Result of collecting a single chunk by key +type Chunk(element, key) { + AnotherBy(List(element), key, element, fn() -> Action(element)) + LastBy(List(element)) +} + +fn next_chunk( + continuation: fn() -> Action(element), + f: fn(element) -> key, + previous_key: key, + current_chunk: List(element), +) -> Chunk(element, key) { + case continuation() { + Stop -> LastBy(list.reverse(current_chunk)) + Continue(e, next) -> { + let key = f(e) + case key == previous_key { + True -> next_chunk(next, f, key, [e, ..current_chunk]) + False -> AnotherBy(list.reverse(current_chunk), key, e, next) + } + } + } +} + +fn do_chunk( + continuation: fn() -> Action(element), + f: fn(element) -> key, + previous_key: key, + previous_element: element, +) -> Action(List(element)) { + case next_chunk(continuation, f, previous_key, [previous_element]) { + LastBy(chunk) -> Continue(chunk, stop) + AnotherBy(chunk, key, el, next) -> + Continue(chunk, fn() { do_chunk(next, f, key, el) }) + } +} + +/// Creates an iterator that emits chunks of elements +/// for which `f` returns the same value. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 2, 3, 4, 4, 6, 7, 7]) +/// > |> chunk(by: fn(n) { n % 2 }) +/// > |> to_list +/// [[1], [2, 2], [3], [4, 4, 6], [7, 7]] +/// ``` +/// +pub fn chunk( + over iterator: Iterator(element), + by f: fn(element) -> key, +) -> Iterator(List(element)) { + fn() { + case iterator.continuation() { + Stop -> Stop + Continue(e, next) -> do_chunk(next, f, f(e), e) + } + } + |> Iterator +} + +// Result of collecting a single sized chunk +type SizedChunk(element) { + Another(List(element), fn() -> Action(element)) + Last(List(element)) + NoMore +} + +fn next_sized_chunk( + continuation: fn() -> Action(element), + left: Int, + current_chunk: List(element), +) -> SizedChunk(element) { + case continuation() { + Stop -> + case current_chunk { + [] -> NoMore + remaining -> Last(list.reverse(remaining)) + } + Continue(e, next) -> { + let chunk = [e, ..current_chunk] + case left > 1 { + False -> Another(list.reverse(chunk), next) + True -> next_sized_chunk(next, left - 1, chunk) + } + } + } +} + +fn do_sized_chunk( + continuation: fn() -> Action(element), + count: Int, +) -> fn() -> Action(List(element)) { + fn() { + case next_sized_chunk(continuation, count, []) { + NoMore -> Stop + Last(chunk) -> Continue(chunk, stop) + Another(chunk, next_element) -> + Continue(chunk, do_sized_chunk(next_element, count)) + } + } +} + +/// Creates an iterator that emits chunks of given size. +/// +/// If the last chunk does not have `count` elements, it is yielded +/// as a partial chunk, with less than `count` elements. +/// +/// For any `count` less than 1 this function behaves as if it was set to 1. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4, 5, 6]) +/// > |> sized_chunk(into: 2) +/// > |> to_list +/// [[1, 2], [3, 4], [5, 6]] +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 3, 4, 5, 6, 7, 8]) +/// > |> sized_chunk(into: 3) +/// > |> to_list +/// [[1, 2, 3], [4, 5, 6], [7, 8]] +/// ``` +/// +pub fn sized_chunk( + over iterator: Iterator(element), + into count: Int, +) -> Iterator(List(element)) { + iterator.continuation + |> do_sized_chunk(count) + |> Iterator +} + +fn do_intersperse( + continuation: fn() -> Action(element), + separator: element, +) -> Action(element) { + case continuation() { + Stop -> Stop + Continue(e, next) -> { + let next_interspersed = fn() { do_intersperse(next, separator) } + Continue(separator, fn() { Continue(e, next_interspersed) }) + } + } +} + +/// Creates an iterator that yields the given `elem` element +/// between elements emitted by the underlying iterator. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() +/// > |> intersperse(with: 0) +/// > |> to_list +/// [] +/// +/// > from_list([1]) +/// > |> intersperse(with: 0) +/// > |> to_list +/// [1] +/// +/// > from_list([1, 2, 3, 4, 5]) +/// > |> intersperse(with: 0) +/// > |> to_list +/// [1, 0, 2, 0, 3, 0, 4, 0, 5] +/// ``` +/// +pub fn intersperse( + over iterator: Iterator(element), + with elem: element, +) -> Iterator(element) { + fn() { + case iterator.continuation() { + Stop -> Stop + Continue(e, next) -> Continue(e, fn() { do_intersperse(next, elem) }) + } + } + |> Iterator +} + +fn do_any( + continuation: fn() -> Action(element), + predicate: fn(element) -> Bool, +) -> Bool { + case continuation() { + Stop -> False + Continue(e, next) -> + case predicate(e) { + True -> True + False -> do_any(next, predicate) + } + } +} + +/// Returns `True` if any element emitted by the iterator satisfies the given predicate, +/// `False` otherwise. +/// +/// This function short-circuits once it finds a satisfying element. +/// +/// An empty iterator results in `False`. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> any(fn(n) { n % 2 == 0 }) +/// False +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 5, 7, 9]) |> any(fn(n) { n % 2 == 0 }) +/// True +/// ``` +/// +/// ```gleam +/// > from_list([1, 3, 5, 7, 9]) |> any(fn(n) { n % 2 == 0 }) +/// False +/// ``` +/// +pub fn any( + in iterator: Iterator(element), + satisfying predicate: fn(element) -> Bool, +) -> Bool { + iterator.continuation + |> do_any(predicate) +} + +fn do_all( + continuation: fn() -> Action(element), + predicate: fn(element) -> Bool, +) -> Bool { + case continuation() { + Stop -> True + Continue(e, next) -> + case predicate(e) { + True -> do_all(next, predicate) + False -> False + } + } +} + +/// Returns `True` if all elements emitted by the iterator satisfy the given predicate, +/// `False` otherwise. +/// +/// This function short-circuits once it finds a non-satisfying element. +/// +/// An empty iterator results in `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> all(fn(n) { n % 2 == 0 }) +/// True +/// ``` +/// +/// ```gleam +/// > from_list([2, 4, 6, 8]) |> all(fn(n) { n % 2 == 0 }) +/// True +/// ``` +/// +/// ```gleam +/// > from_list([2, 4, 5, 8]) |> all(fn(n) { n % 2 == 0 }) +/// False +/// ``` +/// +pub fn all( + in iterator: Iterator(element), + satisfying predicate: fn(element) -> Bool, +) -> Bool { + iterator.continuation + |> do_all(predicate) +} + +fn update_group_with(el: element) -> fn(Option(List(element))) -> List(element) { + fn(maybe_group) { + case maybe_group { + Some(group) -> [el, ..group] + None -> [el] + } + } +} + +fn group_updater( + f: fn(element) -> key, +) -> fn(Dict(key, List(element)), element) -> Dict(key, List(element)) { + fn(groups, elem) { + groups + |> dict.update(f(elem), update_group_with(elem)) + } +} + +/// Returns a `Dict(k, List(element))` of elements from the given iterator +/// grouped with the given key function. +/// +/// The order within each group is preserved from the iterator. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4, 5, 6]) |> group(by: fn(n) { n % 3 }) +/// dict.from_list([#(0, [3, 6]), #(1, [1, 4]), #(2, [2, 5])]) +/// ``` +/// +pub fn group( + in iterator: Iterator(element), + by key: fn(element) -> key, +) -> Dict(key, List(element)) { + iterator + |> fold(dict.new(), group_updater(key)) + |> dict.map_values(fn(_, group) { list.reverse(group) }) +} + +/// This function acts similar to fold, but does not take an initial state. +/// Instead, it starts from the first yielded element +/// and combines it with each subsequent element in turn using the given function. +/// The function is called as `f(accumulator, current_element)`. +/// +/// Returns `Ok` to indicate a successful run, and `Error` if called on an empty iterator. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([]) |> reduce(fn(acc, x) { acc + x }) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 3, 4, 5]) |> reduce(fn(acc, x) { acc + x }) +/// Ok(15) +/// ``` +/// +pub fn reduce( + over iterator: Iterator(e), + with f: fn(e, e) -> e, +) -> Result(e, Nil) { + case iterator.continuation() { + Stop -> Error(Nil) + Continue(e, next) -> + do_fold(next, f, e) + |> Ok + } +} + +/// Returns the last element in the given iterator. +/// +/// Returns `Error(Nil)` if the iterator is empty. +/// +/// This function runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> last +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > range(1, 10) |> last +/// Ok(9) +/// ``` +/// +pub fn last(iterator: Iterator(element)) -> Result(element, Nil) { + iterator + |> reduce(fn(_, elem) { elem }) +} + +/// Creates an iterator that yields no elements. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> to_list +/// [] +/// ``` +/// +pub fn empty() -> Iterator(element) { + Iterator(stop) +} + +/// Creates an iterator that yields exactly one element provided by calling the given function. +/// +/// ## Examples +/// +/// ```gleam +/// > once(fn() { 1 }) |> to_list +/// [1] +/// ``` +/// +pub fn once(f: fn() -> element) -> Iterator(element) { + fn() { Continue(f(), stop) } + |> Iterator +} + +/// Creates an iterator that yields the given element exactly once. +/// +/// ## Examples +/// +/// ```gleam +/// > single(1) |> to_list +/// [1] +/// ``` +/// +pub fn single(elem: element) -> Iterator(element) { + once(fn() { elem }) +} + +fn do_interleave( + current: fn() -> Action(element), + next: fn() -> Action(element), +) -> Action(element) { + case current() { + Stop -> next() + Continue(e, next_other) -> + Continue(e, fn() { do_interleave(next, next_other) }) + } +} + +/// Creates an iterator that alternates between the two given iterators +/// until both have run out. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) |> interleave(from_list([11, 12, 13, 14])) |> to_list +/// [1, 11, 2, 12, 3, 13, 4, 14] +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) |> interleave(from_list([100])) |> to_list +/// [1, 100, 2, 3, 4] +/// ``` +/// +pub fn interleave( + left: Iterator(element), + with right: Iterator(element), +) -> Iterator(element) { + fn() { do_interleave(left.continuation, right.continuation) } + |> Iterator +} + +fn do_fold_until( + continuation: fn() -> Action(e), + f: fn(acc, e) -> list.ContinueOrStop(acc), + accumulator: acc, +) -> acc { + case continuation() { + Stop -> accumulator + Continue(elem, next) -> + case f(accumulator, elem) { + list.Continue(accumulator) -> do_fold_until(next, f, accumulator) + list.Stop(accumulator) -> accumulator + } + } +} + +/// Like `fold`, `fold_until` reduces an iterator of elements into a single value by calling a given +/// function on each element in turn, but uses `list.ContinueOrStop` to determine +/// whether or not to keep iterating. +/// +/// If called on an iterator of infinite length then this function will only ever +/// return if the function returns `list.Stop`. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/list +/// > let f = fn(acc, e) { +/// > case e { +/// > _ if e < 4 -> list.Continue(e + acc) +/// > _ -> list.Stop(acc) +/// > } +/// > } +/// > +/// > [1, 2, 3, 4] +/// > |> from_list +/// > |> fold_until(from: acc, with: f) +/// 6 +/// ``` +/// +pub fn fold_until( + over iterator: Iterator(e), + from initial: acc, + with f: fn(acc, e) -> list.ContinueOrStop(acc), +) -> acc { + iterator.continuation + |> do_fold_until(f, initial) +} + +fn do_try_fold( + over continuation: fn() -> Action(a), + with f: fn(acc, a) -> Result(acc, err), + from accumulator: acc, +) -> Result(acc, err) { + case continuation() { + Stop -> Ok(accumulator) + Continue(elem, next) -> { + use accumulator <- result.try(f(accumulator, elem)) + do_try_fold(next, f, accumulator) + } + } +} + +/// A variant of fold that might fail. +/// +/// The folding function should return `Result(accumulator, error)`. +/// If the returned value is `Ok(accumulator)` try_fold will try the next value in the iterator. +/// If the returned value is `Error(error)` try_fold will stop and return that error. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4] +/// > |> iterator.from_list() +/// > |> try_fold(0, fn(acc, i) { +/// > case i < 3 { +/// > True -> Ok(acc + i) +/// > False -> Error(Nil) +/// > } +/// > }) +/// Error(Nil) +/// ``` +/// +pub fn try_fold( + over iterator: Iterator(e), + from initial: acc, + with f: fn(acc, e) -> Result(acc, err), +) -> Result(acc, err) { + iterator.continuation + |> do_try_fold(f, initial) +} + +/// Returns the first element yielded by the given iterator, if it exists, +/// or `Error(Nil)` otherwise. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3]) |> first +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > empty() |> first +/// Error(Nil) +/// ``` +pub fn first(from iterator: Iterator(e)) -> Result(e, Nil) { + case iterator.continuation() { + Stop -> Error(Nil) + Continue(e, _) -> Ok(e) + } +} + +/// Returns nth element yielded by the given iterator, where `0` means the first element. +/// +/// If there are not enough elements in the iterator, `Error(Nil)` is returned. +/// +/// For any `index` less than `0` this function behaves as if it was set to `0`. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) |> at(2) +/// Ok(3) +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) |> at(4) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > empty() |> at(0) +/// Error(Nil) +/// ``` +/// +pub fn at(in iterator: Iterator(e), get index: Int) -> Result(e, Nil) { + iterator + |> drop(index) + |> first +} + +fn do_length(over continuation: fn() -> Action(e), with length: Int) -> Int { + case continuation() { + Stop -> length + Continue(_, next) -> do_length(next, length + 1) + } +} + +/// Counts the number of elements in the given iterator. +/// +/// This function has to traverse the entire iterator to count its elements, +/// so it runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> length +/// 0 +/// ``` +/// +/// ```gleam +/// > from_list([1, 2, 3, 4]) |> length +/// 4 +/// ``` +/// +pub fn length(over iterator: Iterator(e)) -> Int { + iterator.continuation + |> do_length(0) +} + +/// Traverse an iterator, calling a function on each element. +/// +/// ## Examples +/// +/// ```gleam +/// > empty() |> each(io.println) +/// Nil +/// ``` +/// +/// ```gleam +/// > from_list(["Tom", "Malory", "Louis"]) |> each(io.println) +/// // -> Tom +/// // -> Malory +/// // -> Louis +/// Nil +/// ``` +/// +pub fn each(over iterator: Iterator(a), with f: fn(a) -> b) -> Nil { + iterator + |> map(f) + |> run +} + +/// Add a new element to the start of an iterator. +/// +/// This function is for use with `use` expressions, to replicate the behaviour +/// of the `yield` keyword found in other languages. +/// +/// ## Examples +/// +/// ```gleam +/// > use <- iterator.yield(1) +/// > use <- iterator.yield(2) +/// > use <- iterator.yield(3) +/// > iterator.empty() +/// iterator.from_list([1, 2, 3]) +/// ``` +/// +pub fn yield(element: a, next: fn() -> Iterator(a)) -> Iterator(a) { + Iterator(fn() { Continue(element, next().continuation) }) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam new file mode 100644 index 0000000..a5cffa9 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam @@ -0,0 +1,2154 @@ +//// Lists are an ordered sequence of elements and are one of the most common +//// data types in Gleam. +//// +//// New elements can be added and removed from the front of a list in +//// constant time, while adding and removing from the end requires traversing +//// the copying the whole list, so keep this in mind when designing your +//// programs. +//// +//// There is a dedicated syntax for prefixing to a list: +//// +//// ```gleam +//// let new_list = [1, 2, ..existing_list] +//// ``` +//// +//// And a matching syntax for getting the first elements of a list: +//// +//// ```gleam +//// case list { +//// [first_element, ..rest] -> first_element +//// _ -> "this pattern matches when the list is empty" +//// } +//// ``` +//// + +import gleam/int +import gleam/float +import gleam/order.{type Order} +import gleam/pair +import gleam/dict.{type Dict} + +/// An error value returned by the `strict_zip` function. +/// +pub type LengthMismatch { + LengthMismatch +} + +/// Counts the number of elements in a given list. +/// +/// This function has to traverse the list to determine the number of elements, +/// so it runs in linear time. +/// +/// This function is natively implemented by the virtual machine and is highly +/// optimised. +/// +/// ## Examples +/// +/// ```gleam +/// > length([]) +/// 0 +/// ``` +/// +/// ```gleam +/// > length([1]) +/// 1 +/// ``` +/// +/// ```gleam +/// > length([1, 2]) +/// 2 +/// ``` +/// +pub fn length(of list: List(a)) -> Int { + do_length(list) +} + +@target(erlang) +@external(erlang, "erlang", "length") +fn do_length(a: List(a)) -> Int + +@target(javascript) +fn do_length(list: List(a)) -> Int { + do_length_acc(list, 0) +} + +@target(javascript) +fn do_length_acc(list: List(a), count: Int) -> Int { + case list { + [_, ..list] -> do_length_acc(list, count + 1) + _ -> count + } +} + +/// Creates a new list from a given list containing the same elements but in the +/// opposite order. +/// +/// This function has to traverse the list to create the new reversed list, so +/// it runs in linear time. +/// +/// This function is natively implemented by the virtual machine and is highly +/// optimised. +/// +/// ## Examples +/// +/// ```gleam +/// > reverse([]) +/// [] +/// ``` +/// +/// ```gleam +/// > reverse([1]) +/// [1] +/// ``` +/// +/// ```gleam +/// > reverse([1, 2]) +/// [2, 1] +/// ``` +/// +pub fn reverse(xs: List(a)) -> List(a) { + do_reverse(xs) +} + +@target(erlang) +@external(erlang, "lists", "reverse") +fn do_reverse(a: List(a)) -> List(a) + +@target(javascript) +fn do_reverse(list) { + do_reverse_acc(list, []) +} + +@target(javascript) +fn do_reverse_acc(remaining, accumulator) { + case remaining { + [] -> accumulator + [item, ..rest] -> do_reverse_acc(rest, [item, ..accumulator]) + } +} + +/// Determines whether or not the list is empty. +/// +/// This function runs in constant time. +/// +/// ## Examples +/// +/// ```gleam +/// > is_empty([]) +/// True +/// ``` +/// +/// ```gleam +/// > is_empty([1]) +/// False +/// ``` +/// +/// ```gleam +/// > is_empty([1, 1]) +/// False +/// ``` +/// +pub fn is_empty(list: List(a)) -> Bool { + list == [] +} + +/// Determines whether or not a given element exists within a given list. +/// +/// This function traverses the list to find the element, so it runs in linear +/// time. +/// +/// ## Examples +/// +/// ```gleam +/// > [] |> contains(any: 0) +/// False +/// ``` +/// +/// ```gleam +/// > [0] |> contains(any: 0) +/// True +/// ``` +/// +/// ```gleam +/// > [1] |> contains(any: 0) +/// False +/// ``` +/// +/// ```gleam +/// > [1, 1] |> contains(any: 0) +/// False +/// ``` +/// +/// ```gleam +/// > [1, 0] |> contains(any: 0) +/// True +/// ``` +/// +pub fn contains(list: List(a), any elem: a) -> Bool { + case list { + [] -> False + [first, ..] if first == elem -> True + [_, ..rest] -> contains(rest, elem) + } +} + +/// Gets the first element from the start of the list, if there is one. +/// +/// ## Examples +/// +/// ```gleam +/// > first([]) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > first([0]) +/// Ok(0) +/// ``` +/// +/// ```gleam +/// > first([1, 2]) +/// Ok(1) +/// ``` +/// +pub fn first(list: List(a)) -> Result(a, Nil) { + case list { + [] -> Error(Nil) + [x, ..] -> Ok(x) + } +} + +/// Returns the list minus the first element. If the list is empty, `Error(Nil)` is +/// returned. +/// +/// This function runs in constant time and does not make a copy of the list. +/// +/// ## Examples +/// +/// ```gleam +/// > rest([]) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > rest([0]) +/// Ok([]) +/// ``` +/// +/// ```gleam +/// > rest([1, 2]) +/// Ok([2]) +/// ``` +/// +pub fn rest(list: List(a)) -> Result(List(a), Nil) { + case list { + [] -> Error(Nil) + [_, ..xs] -> Ok(xs) + } +} + +fn update_group( + f: fn(element) -> key, +) -> fn(Dict(key, List(element)), element) -> Dict(key, List(element)) { + fn(groups, elem) { + case dict.get(groups, f(elem)) { + Ok(existing) -> dict.insert(groups, f(elem), [elem, ..existing]) + Error(_) -> dict.insert(groups, f(elem), [elem]) + } + } +} + +/// Takes a list and groups the values by a key +/// which is built from a key function. +/// +/// Does not preserve the initial value order. +/// +/// ## Examples +/// +/// ```gleam +/// > [Ok(3), Error("Wrong"), Ok(200), Ok(73)] +/// |> group(by: fn(i) { +/// case i { +/// Ok(_) -> "Successful" +/// Error(_) -> "Failed" +/// } +/// }) +/// |> dict.to_list +/// +/// [ +/// #("Failed", [Error("Wrong")]), +/// #("Successful", [Ok(73), Ok(200), Ok(3)]) +/// ] +/// +/// > group([1,2,3,4,5], by: fn(i) { i - i / 3 * 3 }) +/// |> dict.to_list +/// [#(0, [3]), #(1, [4, 1]), #(2, [5, 2])] +/// ``` +/// +pub fn group(list: List(v), by key: fn(v) -> k) -> Dict(k, List(v)) { + fold(list, dict.new(), update_group(key)) +} + +fn do_filter(list: List(a), fun: fn(a) -> Bool, acc: List(a)) -> List(a) { + case list { + [] -> reverse(acc) + [x, ..xs] -> { + let new_acc = case fun(x) { + True -> [x, ..acc] + False -> acc + } + do_filter(xs, fun, new_acc) + } + } +} + +/// Returns a new list containing only the elements from the first list for +/// which the given functions returns `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > filter([2, 4, 6, 1], fn(x) { x > 2 }) +/// [4, 6] +/// ``` +/// +/// ```gleam +/// > filter([2, 4, 6, 1], fn(x) { x > 6 }) +/// [] +/// ``` +/// +pub fn filter(list: List(a), keeping predicate: fn(a) -> Bool) -> List(a) { + do_filter(list, predicate, []) +} + +fn do_filter_map( + list: List(a), + fun: fn(a) -> Result(b, e), + acc: List(b), +) -> List(b) { + case list { + [] -> reverse(acc) + [x, ..xs] -> { + let new_acc = case fun(x) { + Ok(x) -> [x, ..acc] + Error(_) -> acc + } + do_filter_map(xs, fun, new_acc) + } + } +} + +/// Returns a new list containing only the elements from the first list for +/// which the given functions returns `Ok(_)`. +/// +/// ## Examples +/// +/// ```gleam +/// > filter_map([2, 4, 6, 1], Error) +/// [] +/// ``` +/// +/// ```gleam +/// > filter_map([2, 4, 6, 1], fn(x) { Ok(x + 1) }) +/// [3, 5, 7, 2] +/// ``` +/// +pub fn filter_map(list: List(a), with fun: fn(a) -> Result(b, e)) -> List(b) { + do_filter_map(list, fun, []) +} + +fn do_map(list: List(a), fun: fn(a) -> b, acc: List(b)) -> List(b) { + case list { + [] -> reverse(acc) + [x, ..xs] -> do_map(xs, fun, [fun(x), ..acc]) + } +} + +/// Returns a new list containing only the elements of the first list after the +/// function has been applied to each one. +/// +/// ## Examples +/// +/// ```gleam +/// > map([2, 4, 6], fn(x) { x * 2 }) +/// [4, 8, 12] +/// ``` +/// +pub fn map(list: List(a), with fun: fn(a) -> b) -> List(b) { + do_map(list, fun, []) +} + +/// Combines two lists into a single list using the given function. +/// +/// If a list is longer than the other the extra elements are dropped. +/// +/// ## Examples +/// +/// ```gleam +/// > map2([1, 2, 3], [4, 5, 6], fn(x, y) { x + y }) +/// [5, 7, 9] +/// ``` +/// +/// ```gleam +/// > map2([1, 2], ["a", "b", "c"], fn(i, x) { #(i, x) }) +/// [#(1, "a"), #(2, "b")] +/// ``` +/// +pub fn map2(list1: List(a), list2: List(b), with fun: fn(a, b) -> c) -> List(c) { + do_map2(list1, list2, fun, []) +} + +fn do_map2( + list1: List(a), + list2: List(b), + fun: fn(a, b) -> c, + acc: List(c), +) -> List(c) { + case list1, list2 { + [], _ | _, [] -> reverse(acc) + [a, ..as_], [b, ..bs] -> do_map2(as_, bs, fun, [fun(a, b), ..acc]) + } +} + +/// Similar to `map` but also lets you pass around an accumulated value. +/// +/// ## Examples +/// +/// ```gleam +/// > map_fold( +/// over: [1, 2, 3], +/// from: 100, +/// with: fn(memo, i) { #(memo + i, i * 2) } +/// ) +/// #(106, [2, 4, 6]) +/// ``` +/// +pub fn map_fold( + over list: List(a), + from acc: acc, + with fun: fn(acc, a) -> #(acc, b), +) -> #(acc, List(b)) { + fold( + over: list, + from: #(acc, []), + with: fn(acc, item) { + let #(current_acc, items) = acc + let #(next_acc, next_item) = fun(current_acc, item) + #(next_acc, [next_item, ..items]) + }, + ) + |> pair.map_second(reverse) +} + +fn do_index_map( + list: List(a), + fun: fn(Int, a) -> b, + index: Int, + acc: List(b), +) -> List(b) { + case list { + [] -> reverse(acc) + [x, ..xs] -> { + let acc = [fun(index, x), ..acc] + do_index_map(xs, fun, index + 1, acc) + } + } +} + +/// Returns a new list containing only the elements of the first list after the +/// function has been applied to each one and their index. +/// +/// The index starts at 0, so the first element is 0, the second is 1, and so +/// on. +/// +/// ## Examples +/// +/// ```gleam +/// > index_map(["a", "b"], fn(i, x) { #(i, x) }) +/// [#(0, "a"), #(1, "b")] +/// ``` +/// +pub fn index_map(list: List(a), with fun: fn(Int, a) -> b) -> List(b) { + do_index_map(list, fun, 0, []) +} + +fn do_try_map( + list: List(a), + fun: fn(a) -> Result(b, e), + acc: List(b), +) -> Result(List(b), e) { + case list { + [] -> Ok(reverse(acc)) + [x, ..xs] -> + case fun(x) { + Ok(y) -> do_try_map(xs, fun, [y, ..acc]) + Error(error) -> Error(error) + } + } +} + +/// Takes a function that returns a `Result` and applies it to each element in a +/// given list in turn. +/// +/// If the function returns `Ok(new_value)` for all elements in the list then a +/// list of the new values is returned. +/// +/// If the function returns `Error(reason)` for any of the elements then it is +/// returned immediately. None of the elements in the list are processed after +/// one returns an `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > try_map([1, 2, 3], fn(x) { Ok(x + 2) }) +/// Ok([3, 4, 5]) +/// ``` +/// +/// ```gleam +/// > try_map([1, 2, 3], fn(_) { Error(0) }) +/// Error(0) +/// ``` +/// +/// ```gleam +/// > try_map([[1], [2, 3]], first) +/// Ok([1, 2]) +/// ``` +/// +/// ```gleam +/// > try_map([[1], [], [2]], first) +/// Error(Nil) +/// ``` +/// +pub fn try_map( + over list: List(a), + with fun: fn(a) -> Result(b, e), +) -> Result(List(b), e) { + do_try_map(list, fun, []) +} + +/// Returns a list that is the given list with up to the given number of +/// elements removed from the front of the list. +/// +/// If the element has less than the number of elements an empty list is +/// returned. +/// +/// This function runs in linear time but does not copy the list. +/// +/// ## Examples +/// +/// ```gleam +/// > drop([1, 2, 3, 4], 2) +/// [3, 4] +/// ``` +/// +/// ```gleam +/// > drop([1, 2, 3, 4], 9) +/// [] +/// ``` +/// +pub fn drop(from list: List(a), up_to n: Int) -> List(a) { + case n <= 0 { + True -> list + False -> + case list { + [] -> [] + [_, ..xs] -> drop(xs, n - 1) + } + } +} + +fn do_take(list: List(a), n: Int, acc: List(a)) -> List(a) { + case n <= 0 { + True -> reverse(acc) + False -> + case list { + [] -> reverse(acc) + [x, ..xs] -> do_take(xs, n - 1, [x, ..acc]) + } + } +} + +/// Returns a list containing the first given number of elements from the given +/// list. +/// +/// If the element has less than the number of elements then the full list is +/// returned. +/// +/// This function runs in linear time but does not copy the list. +/// +/// ## Examples +/// +/// ```gleam +/// > take([1, 2, 3, 4], 2) +/// [1, 2] +/// ``` +/// +/// ```gleam +/// > take([1, 2, 3, 4], 9) +/// [1, 2, 3, 4] +/// ``` +/// +pub fn take(from list: List(a), up_to n: Int) -> List(a) { + do_take(list, n, []) +} + +/// Returns a new empty list. +/// +/// ## Examples +/// +/// ```gleam +/// > new() +/// [] +/// ``` +/// +pub fn new() -> List(a) { + [] +} + +/// Joins one list onto the end of another. +/// +/// This function runs in linear time, and it traverses and copies the first +/// list. +/// +/// ## Examples +/// +/// ```gleam +/// > append([1, 2], [3]) +/// [1, 2, 3] +/// ``` +/// +pub fn append(first: List(a), second: List(a)) -> List(a) { + do_append(first, second) +} + +@target(erlang) +@external(erlang, "lists", "append") +fn do_append(a: List(a), b: List(a)) -> List(a) + +@target(javascript) +fn do_append(first: List(a), second: List(a)) -> List(a) { + do_append_acc(reverse(first), second) +} + +@target(javascript) +fn do_append_acc(first: List(a), second: List(a)) -> List(a) { + case first { + [] -> second + [item, ..rest] -> do_append_acc(rest, [item, ..second]) + } +} + +/// Prefixes an item to a list. This can also be done using the dedicated +/// syntax instead +/// +/// ```gleam +/// let new_list = [1, ..existing_list] +/// ``` +/// +pub fn prepend(to list: List(a), this item: a) -> List(a) { + [item, ..list] +} + +// Reverses a list and prepends it to another list +fn reverse_and_prepend(list prefix: List(a), to suffix: List(a)) -> List(a) { + case prefix { + [] -> suffix + [first, ..rest] -> reverse_and_prepend(list: rest, to: [first, ..suffix]) + } +} + +fn do_concat(lists: List(List(a)), acc: List(a)) -> List(a) { + case lists { + [] -> reverse(acc) + [list, ..further_lists] -> + do_concat(further_lists, reverse_and_prepend(list: list, to: acc)) + } +} + +/// Joins a list of lists into a single list. +/// +/// This function traverses all elements twice. +/// +/// ## Examples +/// +/// ```gleam +/// > concat([[1], [2, 3], []]) +/// [1, 2, 3] +/// ``` +/// +pub fn concat(lists: List(List(a))) -> List(a) { + do_concat(lists, []) +} + +/// This is the same as `concat`: it joins a list of lists into a single +/// list. +/// +/// This function traverses all elements twice. +/// +/// ## Examples +/// +/// ```gleam +/// > flatten([[1], [2, 3], []]) +/// [1, 2, 3] +/// ``` +/// +pub fn flatten(lists: List(List(a))) -> List(a) { + do_concat(lists, []) +} + +/// Maps the list with the given function into a list of lists, and then flattens it. +/// +/// ## Examples +/// +/// ```gleam +/// > flat_map([2, 4, 6], fn(x) { [x, x + 1] }) +/// [2, 3, 4, 5, 6, 7] +/// ``` +/// +pub fn flat_map(over list: List(a), with fun: fn(a) -> List(b)) -> List(b) { + map(list, fun) + |> concat +} + +/// Reduces a list of elements into a single value by calling a given function +/// on each element, going from left to right. +/// +/// `fold([1, 2, 3], 0, add)` is the equivalent of +/// `add(add(add(0, 1), 2), 3)`. +/// +/// This function runs in linear time. +/// +pub fn fold( + over list: List(a), + from initial: acc, + with fun: fn(acc, a) -> acc, +) -> acc { + case list { + [] -> initial + [x, ..rest] -> fold(rest, fun(initial, x), fun) + } +} + +/// Reduces a list of elements into a single value by calling a given function +/// on each element, going from right to left. +/// +/// `fold_right([1, 2, 3], 0, add)` is the equivalent of +/// `add(add(add(0, 3), 2), 1)`. +/// +/// This function runs in linear time. +/// +/// Unlike `fold` this function is not tail recursive. Where possible use +/// `fold` instead as it will use less memory. +/// +pub fn fold_right( + over list: List(a), + from initial: acc, + with fun: fn(acc, a) -> acc, +) -> acc { + case list { + [] -> initial + [x, ..rest] -> fun(fold_right(rest, initial, fun), x) + } +} + +fn do_index_fold( + over: List(a), + acc: acc, + with: fn(acc, a, Int) -> acc, + index: Int, +) -> acc { + case over { + [] -> acc + [first, ..rest] -> + do_index_fold(rest, with(acc, first, index), with, index + 1) + } +} + +/// Like fold but the folding function also receives the index of the current element. +/// +/// ## Examples +/// +/// ```gleam +/// ["a", "b", "c"] +/// |> index_fold([], fn(acc, item, index) { ... }) +/// ``` +/// +pub fn index_fold( + over over: List(a), + from initial: acc, + with fun: fn(acc, a, Int) -> acc, +) -> acc { + do_index_fold(over, initial, fun, 0) +} + +/// A variant of fold that might fail. +/// +/// The folding function should return `Result(accumulator, error)`. +/// If the returned value is `Ok(accumulator)` try_fold will try the next value in the list. +/// If the returned value is `Error(error)` try_fold will stop and return that error. +/// +/// ## Examples +/// +/// ```gleam +/// [1, 2, 3, 4] +/// |> try_fold(0, fn(acc, i) { +/// case i < 3 { +/// True -> Ok(acc + i) +/// False -> Error(Nil) +/// } +/// }) +/// ``` +/// +pub fn try_fold( + over collection: List(a), + from accumulator: acc, + with fun: fn(acc, a) -> Result(acc, e), +) -> Result(acc, e) { + case collection { + [] -> Ok(accumulator) + [first, ..rest] -> + case fun(accumulator, first) { + Ok(result) -> try_fold(rest, result, fun) + Error(_) as error -> error + } + } +} + +pub type ContinueOrStop(a) { + Continue(a) + Stop(a) +} + +/// A variant of fold that allows to stop folding earlier. +/// +/// The folding function should return `ContinueOrStop(accumulator)`. +/// If the returned value is `Continue(accumulator)` fold_until will try the next value in the list. +/// If the returned value is `Stop(accumulator)` fold_until will stop and return that accumulator. +/// +/// ## Examples +/// +/// ```gleam +/// [1, 2, 3, 4] +/// |> fold_until(0, fn(acc, i) { +/// case i < 3 { +/// True -> Continue(acc + i) +/// False -> Stop(acc) +/// } +/// }) +/// ``` +/// +pub fn fold_until( + over collection: List(a), + from accumulator: acc, + with fun: fn(acc, a) -> ContinueOrStop(acc), +) -> acc { + case collection { + [] -> accumulator + [first, ..rest] -> + case fun(accumulator, first) { + Continue(next_accumulator) -> fold_until(rest, next_accumulator, fun) + Stop(b) -> b + } + } +} + +/// Finds the first element in a given list for which the given function returns +/// `True`. +/// +/// Returns `Error(Nil)` if no such element is found. +/// +/// ## Examples +/// +/// ```gleam +/// > find([1, 2, 3], fn(x) { x > 2 }) +/// Ok(3) +/// ``` +/// +/// ```gleam +/// > find([1, 2, 3], fn(x) { x > 4 }) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > find([], fn(_) { True }) +/// Error(Nil) +/// ``` +/// +pub fn find( + in haystack: List(a), + one_that is_desired: fn(a) -> Bool, +) -> Result(a, Nil) { + case haystack { + [] -> Error(Nil) + [x, ..rest] -> + case is_desired(x) { + True -> Ok(x) + _ -> find(in: rest, one_that: is_desired) + } + } +} + +/// Finds the first element in a given list for which the given function returns +/// `Ok(new_value)`, then returns the wrapped `new_value`. +/// +/// Returns `Error(Nil)` if no such element is found. +/// +/// ## Examples +/// +/// ```gleam +/// > find_map([[], [2], [3]], first) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > find_map([[], []], first) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > find_map([], first) +/// Error(Nil) +/// ``` +/// +pub fn find_map( + in haystack: List(a), + with fun: fn(a) -> Result(b, c), +) -> Result(b, Nil) { + case haystack { + [] -> Error(Nil) + [x, ..rest] -> + case fun(x) { + Ok(x) -> Ok(x) + _ -> find_map(in: rest, with: fun) + } + } +} + +/// Returns `True` if the given function returns `True` for all the elements in +/// the given list. If the function returns `False` for any of the elements it +/// immediately returns `False` without checking the rest of the list. +/// +/// ## Examples +/// +/// ```gleam +/// > all([], fn(x) { x > 3 }) +/// True +/// ``` +/// +/// ```gleam +/// > all([4, 5], fn(x) { x > 3 }) +/// True +/// ``` +/// +/// ```gleam +/// > all([4, 3], fn(x) { x > 3 }) +/// False +/// ``` +/// +pub fn all(in list: List(a), satisfying predicate: fn(a) -> Bool) -> Bool { + case list { + [] -> True + [first, ..rest] -> + case predicate(first) { + True -> all(rest, predicate) + False -> False + } + } +} + +/// Returns `True` if the given function returns `True` for any the elements in +/// the given list. If the function returns `True` for any of the elements it +/// immediately returns `True` without checking the rest of the list. +/// +/// ## Examples +/// +/// ```gleam +/// > any([], fn(x) { x > 3 }) +/// False +/// ``` +/// +/// ```gleam +/// > any([4, 5], fn(x) { x > 3 }) +/// True +/// ``` +/// +/// ```gleam +/// > any([4, 3], fn(x) { x > 4 }) +/// False +/// ``` +/// +/// ```gleam +/// > any([3, 4], fn(x) { x > 3 }) +/// True +/// ``` +/// +pub fn any(in list: List(a), satisfying predicate: fn(a) -> Bool) -> Bool { + case list { + [] -> False + [first, ..rest] -> + case predicate(first) { + True -> True + False -> any(rest, predicate) + } + } +} + +fn do_zip(xs: List(a), ys: List(b), acc: List(#(a, b))) -> List(#(a, b)) { + case xs, ys { + [x, ..xs], [y, ..ys] -> do_zip(xs, ys, [#(x, y), ..acc]) + _, _ -> reverse(acc) + } +} + +/// Takes two lists and returns a single list of 2-element tuples. +/// +/// If one of the lists is longer than the other, the remaining elements from +/// the longer list are not used. +/// +/// ## Examples +/// +/// ```gleam +/// > zip([], []) +/// [] +/// ``` +/// +/// ```gleam +/// > zip([1, 2], [3]) +/// [#(1, 3)] +/// ``` +/// +/// ```gleam +/// > zip([1], [3, 4]) +/// [#(1, 3)] +/// ``` +/// +/// ```gleam +/// > zip([1, 2], [3, 4]) +/// [#(1, 3), #(2, 4)] +/// ``` +/// +pub fn zip(list: List(a), with other: List(b)) -> List(#(a, b)) { + do_zip(list, other, []) +} + +/// Takes two lists and returns a single list of 2-element tuples. +/// +/// If one of the lists is longer than the other, an `Error` is returned. +/// +/// ## Examples +/// +/// ```gleam +/// > strict_zip([], []) +/// Ok([]) +/// ``` +/// +/// ```gleam +/// > strict_zip([1, 2], [3]) +/// Error(LengthMismatch) +/// ``` +/// +/// ```gleam +/// > strict_zip([1], [3, 4]) +/// Error(LengthMismatch) +/// ``` +/// +/// ```gleam +/// > strict_zip([1, 2], [3, 4]) +/// Ok([#(1, 3), #(2, 4)]) +/// ``` +/// +pub fn strict_zip( + list: List(a), + with other: List(b), +) -> Result(List(#(a, b)), LengthMismatch) { + case length(of: list) == length(of: other) { + True -> Ok(zip(list, other)) + False -> Error(LengthMismatch) + } +} + +fn do_unzip(input, xs, ys) { + case input { + [] -> #(reverse(xs), reverse(ys)) + [#(x, y), ..rest] -> do_unzip(rest, [x, ..xs], [y, ..ys]) + } +} + +/// Takes a single list of 2-element tuples and returns two lists. +/// +/// ## Examples +/// +/// ```gleam +/// > unzip([#(1, 2), #(3, 4)]) +/// #([1, 3], [2, 4]) +/// ``` +/// +/// ```gleam +/// > unzip([]) +/// #([], []) +/// ``` +/// +pub fn unzip(input: List(#(a, b))) -> #(List(a), List(b)) { + do_unzip(input, [], []) +} + +fn do_intersperse(list: List(a), separator: a, acc: List(a)) -> List(a) { + case list { + [] -> reverse(acc) + [x, ..rest] -> do_intersperse(rest, separator, [x, separator, ..acc]) + } +} + +/// Inserts a given value between each existing element in a given list. +/// +/// This function runs in linear time and copies the list. +/// +/// ## Examples +/// +/// ```gleam +/// > intersperse([1, 1, 1], 2) +/// [1, 2, 1, 2, 1] +/// ``` +/// +/// ```gleam +/// > intersperse([], 2) +/// [] +/// ``` +/// +pub fn intersperse(list: List(a), with elem: a) -> List(a) { + case list { + [] | [_] -> list + [x, ..rest] -> do_intersperse(rest, elem, [x]) + } +} + +/// Returns the element in the Nth position in the list, with 0 being the first +/// position. +/// +/// `Error(Nil)` is returned if the list is not long enough for the given index +/// or if the index is less than 0. +/// +/// ## Examples +/// +/// ```gleam +/// > at([1, 2, 3], 1) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > at([1, 2, 3], 5) +/// Error(Nil) +/// ``` +/// +pub fn at(in list: List(a), get index: Int) -> Result(a, Nil) { + case index >= 0 { + True -> + list + |> drop(index) + |> first + False -> Error(Nil) + } +} + +/// Removes any duplicate elements from a given list. +/// +/// This function returns in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > unique([1, 1, 1, 4, 7, 3, 3, 4]) +/// [1, 4, 7, 3] +/// ``` +/// +pub fn unique(list: List(a)) -> List(a) { + case list { + [] -> [] + [x, ..rest] -> [x, ..unique(filter(rest, fn(y) { y != x }))] + } +} + +/// Merge lists `a` and `b` in ascending order +/// but only up to `na` and `nb` number of items respectively. +/// +fn merge_up( + na: Int, + nb: Int, + a: List(a), + b: List(a), + acc: List(a), + compare: fn(a, a) -> Order, +) { + case na, nb, a, b { + 0, 0, _, _ -> acc + _, 0, [ax, ..ar], _ -> merge_up(na - 1, nb, ar, b, [ax, ..acc], compare) + 0, _, _, [bx, ..br] -> merge_up(na, nb - 1, a, br, [bx, ..acc], compare) + _, _, [ax, ..ar], [bx, ..br] -> + case compare(ax, bx) { + order.Gt -> merge_up(na, nb - 1, a, br, [bx, ..acc], compare) + _ -> merge_up(na - 1, nb, ar, b, [ax, ..acc], compare) + } + _, _, _, _ -> acc + } +} + +/// Merge lists `a` and `b` in descending order +/// but only up to `na` and `nb` number of items respectively. +/// +fn merge_down( + na: Int, + nb: Int, + a: List(a), + b: List(a), + acc: List(a), + compare: fn(a, a) -> Order, +) { + case na, nb, a, b { + 0, 0, _, _ -> acc + _, 0, [ax, ..ar], _ -> merge_down(na - 1, nb, ar, b, [ax, ..acc], compare) + 0, _, _, [bx, ..br] -> merge_down(na, nb - 1, a, br, [bx, ..acc], compare) + _, _, [ax, ..ar], [bx, ..br] -> + case compare(bx, ax) { + order.Lt -> merge_down(na - 1, nb, ar, b, [ax, ..acc], compare) + _ -> merge_down(na, nb - 1, a, br, [bx, ..acc], compare) + } + _, _, _, _ -> acc + } +} + +/// Merge sort that alternates merging in ascending and descending order +/// because the merge process also reverses the list. +/// +/// Some copying is avoided by merging only a subset of the lists +/// instead of creating and merging new smaller lists. +/// +fn merge_sort( + l: List(a), + ln: Int, + compare: fn(a, a) -> Order, + down: Bool, +) -> List(a) { + let n = ln / 2 + let a = l + let b = drop(l, n) + case ln < 3 { + True -> + case down { + True -> merge_down(n, ln - n, a, b, [], compare) + False -> merge_up(n, ln - n, a, b, [], compare) + } + False -> + case down { + True -> + merge_down( + n, + ln - n, + merge_sort(a, n, compare, False), + merge_sort(b, ln - n, compare, False), + [], + compare, + ) + False -> + merge_up( + n, + ln - n, + merge_sort(a, n, compare, True), + merge_sort(b, ln - n, compare, True), + [], + compare, + ) + } + } +} + +/// Sorts from smallest to largest based upon the ordering specified by a given +/// function. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/int +/// > list.sort([4, 3, 6, 5, 4, 1, 2], by: int.compare) +/// [1, 2, 3, 4, 4, 5, 6] +/// ``` +/// +pub fn sort(list: List(a), by compare: fn(a, a) -> Order) -> List(a) { + merge_sort(list, length(list), compare, True) +} + +/// Creates a list of ints ranging from a given start and finish. +/// +/// ## Examples +/// +/// ```gleam +/// > range(0, 0) +/// [0] +/// ``` +/// +/// ```gleam +/// > range(0, 5) +/// [0, 1, 2, 3, 4, 5] +/// ``` +/// +/// ```gleam +/// > range(1, -5) +/// [1, 0, -1, -2, -3, -4, -5] +/// ``` +/// +pub fn range(from start: Int, to stop: Int) -> List(Int) { + tail_recursive_range(start, stop, []) +} + +fn tail_recursive_range(start: Int, stop: Int, acc: List(Int)) -> List(Int) { + case int.compare(start, stop) { + order.Eq -> [stop, ..acc] + order.Gt -> tail_recursive_range(start, stop + 1, [stop, ..acc]) + order.Lt -> tail_recursive_range(start, stop - 1, [stop, ..acc]) + } +} + +fn do_repeat(a: a, times: Int, acc: List(a)) -> List(a) { + case times <= 0 { + True -> acc + False -> do_repeat(a, times - 1, [a, ..acc]) + } +} + +/// Builds a list of a given value a given number of times. +/// +/// ## Examples +/// +/// ```gleam +/// > repeat("a", times: 0) +/// [] +/// ``` +/// +/// ```gleam +/// > repeat("a", times: 5) +/// ["a", "a", "a", "a", "a"] +/// ``` +/// +pub fn repeat(item a: a, times times: Int) -> List(a) { + do_repeat(a, times, []) +} + +fn do_split(list: List(a), n: Int, taken: List(a)) -> #(List(a), List(a)) { + case n <= 0 { + True -> #(reverse(taken), list) + False -> + case list { + [] -> #(reverse(taken), []) + [x, ..xs] -> do_split(xs, n - 1, [x, ..taken]) + } + } +} + +/// Splits a list in two before the given index. +/// +/// If the list is not long enough to have the given index the before list will +/// be the input list, and the after list will be empty. +/// +/// ## Examples +/// +/// ```gleam +/// > split([6, 7, 8, 9], 0) +/// #([], [6, 7, 8, 9]) +/// ``` +/// +/// ```gleam +/// > split([6, 7, 8, 9], 2) +/// #([6, 7], [8, 9]) +/// ``` +/// +/// ```gleam +/// > split([6, 7, 8, 9], 4) +/// #([6, 7, 8, 9], []) +/// ``` +/// +pub fn split(list list: List(a), at index: Int) -> #(List(a), List(a)) { + do_split(list, index, []) +} + +fn do_split_while( + list: List(a), + f: fn(a) -> Bool, + acc: List(a), +) -> #(List(a), List(a)) { + case list { + [] -> #(reverse(acc), []) + [x, ..xs] -> + case f(x) { + False -> #(reverse(acc), list) + _ -> do_split_while(xs, f, [x, ..acc]) + } + } +} + +/// Splits a list in two before the first element that a given function returns +/// `False` for. +/// +/// If the function returns `True` for all elements the first list will be the +/// input list, and the second list will be empty. +/// +/// ## Examples +/// +/// ```gleam +/// > split_while([1, 2, 3, 4, 5], fn(x) { x <= 3 }) +/// #([1, 2, 3], [4, 5]) +/// ``` +/// +/// ```gleam +/// > split_while([1, 2, 3, 4, 5], fn(x) { x <= 5 }) +/// #([1, 2, 3, 4, 5], []) +/// ``` +/// +pub fn split_while( + list list: List(a), + satisfying predicate: fn(a) -> Bool, +) -> #(List(a), List(a)) { + do_split_while(list, predicate, []) +} + +/// Given a list of 2-element tuples, finds the first tuple that has a given +/// key as the first element and returns the second element. +/// +/// If no tuple is found with the given key then `Error(Nil)` is returned. +/// +/// This function may be useful for interacting with Erlang code where lists of +/// tuples are common. +/// +/// ## Examples +/// +/// ```gleam +/// > key_find([#("a", 0), #("b", 1)], "a") +/// Ok(0) +/// ``` +/// +/// ```gleam +/// > key_find([#("a", 0), #("b", 1)], "b") +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > key_find([#("a", 0), #("b", 1)], "c") +/// Error(Nil) +/// ``` +/// +pub fn key_find( + in keyword_list: List(#(k, v)), + find desired_key: k, +) -> Result(v, Nil) { + find_map( + keyword_list, + fn(keyword) { + let #(key, value) = keyword + case key == desired_key { + True -> Ok(value) + False -> Error(Nil) + } + }, + ) +} + +/// Given a list of 2-element tuples, finds all tuples that have a given +/// key as the first element and returns the second element. +/// +/// This function may be useful for interacting with Erlang code where lists of +/// tuples are common. +/// +/// ## Examples +/// +/// ```gleam +/// > key_filter([#("a", 0), #("b", 1), #("a", 2)], "a") +/// [0, 2] +/// ``` +/// +/// ```gleam +/// > key_filter([#("a", 0), #("b", 1)], "c") +/// [] +/// ``` +/// +pub fn key_filter( + in keyword_list: List(#(k, v)), + find desired_key: k, +) -> List(v) { + filter_map( + keyword_list, + fn(keyword) { + let #(key, value) = keyword + case key == desired_key { + True -> Ok(value) + False -> Error(Nil) + } + }, + ) +} + +fn do_pop(haystack, predicate, checked) { + case haystack { + [] -> Error(Nil) + [x, ..rest] -> + case predicate(x) { + True -> Ok(#(x, append(reverse(checked), rest))) + False -> do_pop(rest, predicate, [x, ..checked]) + } + } +} + +/// Removes the first element in a given list for which the predicate function returns `True`. +/// +/// Returns `Error(Nil)` if no such element is found. +/// +/// ## Examples +/// +/// ```gleam +/// > pop([1, 2, 3], fn(x) { x > 2 }) +/// Ok(#(3, [1, 2])) +/// ``` +/// +/// ```gleam +/// > pop([1, 2, 3], fn(x) { x > 4 }) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > pop([], fn(_) { True }) +/// Error(Nil) +/// ``` +/// +pub fn pop( + in haystack: List(a), + one_that is_desired: fn(a) -> Bool, +) -> Result(#(a, List(a)), Nil) { + do_pop(haystack, is_desired, []) +} + +fn do_pop_map(haystack, mapper, checked) { + case haystack { + [] -> Error(Nil) + [x, ..rest] -> + case mapper(x) { + Ok(y) -> Ok(#(y, append(reverse(checked), rest))) + Error(_) -> do_pop_map(rest, mapper, [x, ..checked]) + } + } +} + +/// Removes the first element in a given list for which the given function returns +/// `Ok(new_value)`, then returns the wrapped `new_value` as well as list with the value removed. +/// +/// Returns `Error(Nil)` if no such element is found. +/// +/// ## Examples +/// +/// ```gleam +/// > pop_map([[], [2], [3]], first) +/// Ok(#(2, [[], [3]])) +/// ``` +/// +/// ```gleam +/// > pop_map([[], []], first) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > pop_map([], first) +/// Error(Nil) +/// ``` +/// +pub fn pop_map( + in haystack: List(a), + one_that is_desired: fn(a) -> Result(b, c), +) -> Result(#(b, List(a)), Nil) { + do_pop_map(haystack, is_desired, []) +} + +/// Given a list of 2-element tuples, finds the first tuple that has a given +/// key as the first element. This function will return the second element +/// of the found tuple and list with tuple removed. +/// +/// If no tuple is found with the given key then `Error(Nil)` is returned. +/// +/// ## Examples +/// +/// ```gleam +/// > key_pop([#("a", 0), #("b", 1)], "a") +/// Ok(#(0, [#("b", 1)])) +/// ``` +/// +/// ```gleam +/// > key_pop([#("a", 0), #("b", 1)], "b") +/// Ok(#(1, [#("a", 0)])) +/// ``` +/// +/// ```gleam +/// > key_pop([#("a", 0), #("b", 1)], "c") +/// Error(Nil) +/// ``` +/// +pub fn key_pop( + haystack: List(#(k, v)), + key: k, +) -> Result(#(v, List(#(k, v))), Nil) { + pop_map( + haystack, + fn(entry) { + let #(k, v) = entry + case k { + k if k == key -> Ok(v) + _ -> Error(Nil) + } + }, + ) +} + +/// Given a list of 2-element tuples, inserts a key and value into the list. +/// +/// If there was already a tuple with the key then it is replaced, otherwise it +/// is added to the end of the list. +/// +/// ## Examples +/// +/// ```gleam +/// > key_set([#(5, 0), #(4, 1)], 4, 100) +/// [#(5, 0), #(4, 100)] +/// ``` +/// +/// ```gleam +/// > key_set([#(5, 0), #(4, 1)], 1, 100) +/// [#(5, 0), #(4, 1), #(1, 100)] +/// ``` +/// +pub fn key_set(list: List(#(a, b)), key: a, value: b) -> List(#(a, b)) { + case list { + [] -> [#(key, value)] + [#(k, _), ..rest] if k == key -> [#(key, value), ..rest] + [first, ..rest] -> [first, ..key_set(rest, key, value)] + } +} + +/// Calls a function for each element in a list, discarding the return value. +/// +/// Useful for calling a side effect for every item of a list. +/// +/// ```gleam +/// > list.each([1, 2, 3], io.println) +/// Nil +/// ``` +/// +pub fn each(list: List(a), f: fn(a) -> b) -> Nil { + case list { + [] -> Nil + [x, ..xs] -> { + f(x) + each(xs, f) + } + } +} + +/// Calls a `Result` returning function for each element in a list, discarding +/// the return value. If the function returns `Error` then the iteration is +/// stopped and the error is returned. +/// +/// Useful for calling a side effect for every item of a list. +/// +/// ## Examples +/// +/// ```gleam +/// > try_each( +/// > over: [1, 2, 3], +/// > with: function_that_might_fail, +/// > ) +/// Ok(Nil) +/// ``` +/// +pub fn try_each( + over list: List(a), + with fun: fn(a) -> Result(b, e), +) -> Result(Nil, e) { + case list { + [] -> Ok(Nil) + [x, ..xs] -> + case fun(x) { + Ok(_) -> try_each(over: xs, with: fun) + Error(e) -> Error(e) + } + } +} + +fn do_partition(list, categorise, trues, falses) { + case list { + [] -> #(reverse(trues), reverse(falses)) + [x, ..xs] -> + case categorise(x) { + True -> do_partition(xs, categorise, [x, ..trues], falses) + False -> do_partition(xs, categorise, trues, [x, ..falses]) + } + } +} + +/// Partitions a list into a tuple/pair of lists +/// by a given categorisation function. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4, 5] |> list.partition(int.is_odd) +/// #([1, 3, 5], [2, 4]) +/// ``` +/// +pub fn partition( + list: List(a), + with categorise: fn(a) -> Bool, +) -> #(List(a), List(a)) { + do_partition(list, categorise, [], []) +} + +/// Returns all the permutations of a list. +/// +/// ## Examples +/// +/// ```gleam +/// > permutations([1, 2]) +/// [[1, 2], [2, 1]] +/// ``` +/// +pub fn permutations(l: List(a)) -> List(List(a)) { + case l { + [] -> [[]] + _ -> + l + |> index_map(fn(i_idx, i) { + l + |> index_fold( + [], + fn(acc, j, j_idx) { + case i_idx == j_idx { + True -> acc + False -> [j, ..acc] + } + }, + ) + |> reverse + |> permutations + |> map(fn(permutation) { [i, ..permutation] }) + }) + |> concat + } +} + +fn do_window(acc: List(List(a)), l: List(a), n: Int) -> List(List(a)) { + let window = take(l, n) + + case length(window) == n { + True -> do_window([window, ..acc], drop(l, 1), n) + False -> acc + } +} + +/// Returns a list of sliding windows. +/// +/// ## Examples +/// +/// ```gleam +/// > window([1,2,3,4,5], 3) +/// [[1, 2, 3], [2, 3, 4], [3, 4, 5]] +/// ``` +/// +/// ```gleam +/// > window([1, 2], 4) +/// [] +/// ``` +/// +pub fn window(l: List(a), by n: Int) -> List(List(a)) { + do_window([], l, n) + |> reverse +} + +/// Returns a list of tuples containing two contiguous elements. +/// +/// ## Examples +/// +/// ```gleam +/// > window_by_2([1,2,3,4]) +/// [#(1, 2), #(2, 3), #(3, 4)] +/// ``` +/// +/// ```gleam +/// > window_by_2([1]) +/// [] +/// ``` +/// +pub fn window_by_2(l: List(a)) -> List(#(a, a)) { + zip(l, drop(l, 1)) +} + +/// Drops the first elements in a given list for which the predicate function returns `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > drop_while([1, 2, 3, 4], fn (x) { x < 3 }) +/// [3, 4] +/// ``` +/// +pub fn drop_while( + in list: List(a), + satisfying predicate: fn(a) -> Bool, +) -> List(a) { + case list { + [] -> [] + [x, ..xs] -> + case predicate(x) { + True -> drop_while(xs, predicate) + False -> [x, ..xs] + } + } +} + +fn do_take_while( + list: List(a), + predicate: fn(a) -> Bool, + acc: List(a), +) -> List(a) { + case list { + [] -> reverse(acc) + [first, ..rest] -> + case predicate(first) { + True -> do_take_while(rest, predicate, [first, ..acc]) + False -> reverse(acc) + } + } +} + +/// Takes the first elements in a given list for which the predicate function returns `True`. +/// +/// ## Examples +/// +/// ```gleam +/// > take_while([1, 2, 3, 2, 4], fn (x) { x < 3 }) +/// [1, 2] +/// ``` +/// +pub fn take_while( + in list: List(a), + satisfying predicate: fn(a) -> Bool, +) -> List(a) { + do_take_while(list, predicate, []) +} + +fn do_chunk( + list: List(a), + f: fn(a) -> key, + previous_key: key, + current_chunk: List(a), + acc: List(List(a)), +) -> List(List(a)) { + case list { + [first, ..rest] -> { + let key = f(first) + case key == previous_key { + False -> { + let new_acc = [reverse(current_chunk), ..acc] + do_chunk(rest, f, key, [first], new_acc) + } + _true -> do_chunk(rest, f, key, [first, ..current_chunk], acc) + } + } + _empty -> reverse([reverse(current_chunk), ..acc]) + } +} + +/// Returns a list of chunks in which +/// the return value of calling `f` on each element is the same. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 2, 3, 4, 4, 6, 7, 7] |> chunk(by: fn(n) { n % 2 }) +/// [[1], [2, 2], [3], [4, 4, 6], [7, 7]] +/// ``` +/// +pub fn chunk(in list: List(a), by f: fn(a) -> key) -> List(List(a)) { + case list { + [] -> [] + [first, ..rest] -> do_chunk(rest, f, f(first), [first], []) + } +} + +fn do_sized_chunk( + list: List(a), + count: Int, + left: Int, + current_chunk: List(a), + acc: List(List(a)), +) -> List(List(a)) { + case list { + [] -> + case current_chunk { + [] -> reverse(acc) + remaining -> reverse([reverse(remaining), ..acc]) + } + [first, ..rest] -> { + let chunk = [first, ..current_chunk] + case left > 1 { + False -> do_sized_chunk(rest, count, count, [], [reverse(chunk), ..acc]) + True -> do_sized_chunk(rest, count, left - 1, chunk, acc) + } + } + } +} + +/// Returns a list of chunks containing `count` elements each. +/// +/// If the last chunk does not have `count` elements, it is instead +/// a partial chunk, with less than `count` elements. +/// +/// For any `count` less than 1 this function behaves as if it was set to 1. +/// +/// ## Examples +/// +/// ```gleam +/// > [1, 2, 3, 4, 5, 6] |> sized_chunk(into: 2) +/// [[1, 2], [3, 4], [5, 6]] +/// ``` +/// +/// ```gleam +/// > [1, 2, 3, 4, 5, 6, 7, 8] |> sized_chunk(into: 3) +/// [[1, 2, 3], [4, 5, 6], [7, 8]] +/// ``` +/// +pub fn sized_chunk(in list: List(a), into count: Int) -> List(List(a)) { + do_sized_chunk(list, count, count, [], []) +} + +/// This function acts similar to fold, but does not take an initial state. +/// Instead, it starts from the first element in the list +/// and combines it with each subsequent element in turn using the given +/// function. The function is called as `fun(accumulator, current_element)`. +/// +/// Returns `Ok` to indicate a successful run, and `Error` if called on an +/// empty list. +/// +/// ## Examples +/// +/// ```gleam +/// > [] |> reduce(fn(acc, x) { acc + x }) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > [1, 2, 3, 4, 5] |> reduce(fn(acc, x) { acc + x }) +/// Ok(15) +/// ``` +/// +pub fn reduce(over list: List(a), with fun: fn(a, a) -> a) -> Result(a, Nil) { + case list { + [] -> Error(Nil) + [first, ..rest] -> Ok(fold(rest, first, fun)) + } +} + +fn do_scan( + list: List(a), + accumulator: acc, + accumulated: List(acc), + fun: fn(acc, a) -> acc, +) -> List(acc) { + case list { + [] -> reverse(accumulated) + [x, ..xs] -> { + let next = fun(accumulator, x) + do_scan(xs, next, [next, ..accumulated], fun) + } + } +} + +/// Similar to `fold`, but yields the state of the accumulator at each stage. +/// +/// ## Examples +/// +/// ```gleam +/// > scan(over: [1, 2, 3], from: 100, with: fn(acc, i) { acc + i }) +/// [101, 103, 106] +/// ``` +/// +pub fn scan( + over list: List(a), + from initial: acc, + with fun: fn(acc, a) -> acc, +) -> List(acc) { + do_scan(list, initial, [], fun) +} + +/// Returns the last element in the given list. +/// +/// Returns `Error(Nil)` if the list is empty. +/// +/// This function runs in linear time. +/// For a collection oriented around performant access at either end, +/// see `gleam/queue.Queue`. +/// +/// ## Examples +/// +/// ```gleam +/// > last([]) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > last([1, 2, 3, 4, 5]) +/// Ok(5) +/// ``` +/// +pub fn last(list: List(a)) -> Result(a, Nil) { + list + |> reduce(fn(_, elem) { elem }) +} + +/// Return unique combinations of elements in the list. +/// +/// ## Examples +/// +/// ```gleam +/// > combinations([1, 2, 3], 2) +/// [[1, 2], [1, 3], [2, 3]] +/// ``` +/// +/// ```gleam +/// > combinations([1, 2, 3, 4], 3) +/// [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]] +/// ``` +/// +pub fn combinations(items: List(a), by n: Int) -> List(List(a)) { + case n { + 0 -> [[]] + _ -> + case items { + [] -> [] + [x, ..xs] -> { + let first_combinations = + map(combinations(xs, n - 1), with: fn(com) { [x, ..com] }) + |> reverse + fold( + first_combinations, + combinations(xs, n), + fn(acc, c) { [c, ..acc] }, + ) + } + } + } +} + +fn do_combination_pairs(items: List(a)) -> List(List(#(a, a))) { + case items { + [] -> [] + [x, ..xs] -> { + let first_combinations = map(xs, with: fn(other) { #(x, other) }) + [first_combinations, ..do_combination_pairs(xs)] + } + } +} + +/// Return unique pair combinations of elements in the list +/// +/// ## Examples +/// +/// ```gleam +/// > combination_pairs([1, 2, 3]) +/// [#(1, 2), #(1, 3), #(2, 3)] +/// ``` +/// +pub fn combination_pairs(items: List(a)) -> List(#(a, a)) { + do_combination_pairs(items) + |> concat +} + +/// Make a list alternating the elements from the given lists +/// +/// ## Examples +/// +/// ```gleam +/// > list.interleave([[1, 2], [101, 102], [201, 202]]) +/// [1, 101, 201, 2, 102, 202] +/// ``` +/// +pub fn interleave(list: List(List(a))) -> List(a) { + transpose(list) + |> concat +} + +/// Transpose rows and columns of the list of lists. +/// +/// Notice: This function is not tail recursive, +/// and thus may exceed stack size if called, +/// with large lists (on target JavaScript). +/// +/// ## Examples +/// +/// ```gleam +/// > transpose([[1, 2, 3], [101, 102, 103]]) +/// [[1, 101], [2, 102], [3, 103]] +/// ``` +/// +pub fn transpose(list_of_list: List(List(a))) -> List(List(a)) { + let take_first = fn(list) { + case list { + [] -> [] + [f] -> [f] + [f, ..] -> [f] + } + } + + case list_of_list { + [] -> [] + [[], ..xss] -> transpose(xss) + rows -> { + let firsts = + rows + |> map(take_first) + |> concat + let rest = transpose(map(rows, drop(_, 1))) + [firsts, ..rest] + } + } +} + +fn do_shuffle_pair_unwrap(list: List(#(Float, a)), acc: List(a)) -> List(a) { + case list { + [] -> acc + [elem_pair, ..enumerable] -> + do_shuffle_pair_unwrap(enumerable, [elem_pair.1, ..acc]) + } +} + +fn do_shuffle_by_pair_indexes( + list_of_pairs: List(#(Float, a)), +) -> List(#(Float, a)) { + sort( + list_of_pairs, + fn(a_pair: #(Float, a), b_pair: #(Float, a)) -> Order { + float.compare(a_pair.0, b_pair.0) + }, + ) +} + +/// Takes a list, randomly sorts all items and returns the shuffled list. +/// +/// This function uses Erlang's `:rand` module or Javascript's +/// `Math.random()` to calculate the index shuffling. +/// +/// ## Example +/// +/// ```gleam +/// > range(1, 10) +/// > |> shuffle() +/// [1, 6, 9, 10, 3, 8, 4, 2, 7, 5] +/// ``` +/// +pub fn shuffle(list: List(a)) -> List(a) { + list + |> fold(from: [], with: fn(acc, a) { [#(float.random(0.0, 1.0), a), ..acc] }) + |> do_shuffle_by_pair_indexes() + |> do_shuffle_pair_unwrap([]) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam new file mode 100644 index 0000000..1f8b228 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam @@ -0,0 +1,127 @@ +import gleam/option.{type Option} +import gleam/dict + +@deprecated("Please use the `gleam/dict` module instead") +pub type Map(key, value) = + dict.Dict(key, value) + +@deprecated("Please use the `gleam/dict` module instead") +pub fn size(map) -> Int { + dict.size(map) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn to_list(map) -> List(#(key, value)) { + dict.to_list(map) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn from_list(list: List(#(k, v))) { + dict.from_list(list) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn has_key(map, key: k) -> Bool { + dict.has_key(map, key) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn new() { + dict.new() +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn get(from, get: key) -> Result(value, Nil) { + dict.get(from, get) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn insert(into map, for key: k, insert value: v) { + dict.insert(map, key, value) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn map_values(in map, with fun: fn(k, v) -> w) { + dict.map_values(map, fun) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn keys(map) -> List(keys) { + dict.keys(map) +} + +@target(javascript) +fn reverse_and_concat(remaining, accumulator) { + case remaining { + [] -> accumulator + [item, ..rest] -> reverse_and_concat(rest, [item, ..accumulator]) + } +} + +@target(javascript) +fn do_keys_acc(list: List(#(k, v)), acc: List(k)) -> List(k) { + case list { + [] -> reverse_and_concat(acc, []) + [x, ..xs] -> do_keys_acc(xs, [x.0, ..acc]) + } +} + +@target(javascript) +fn do_keys(map) -> List(k) { + let list_of_pairs = + map + |> to_list + do_keys_acc(list_of_pairs, []) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn values(map) -> List(values) { + dict.values(map) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn filter(in map, keeping predicate: fn(k, v) -> Bool) { + dict.filter(map, predicate) +} + +@target(javascript) +fn do_filter(f: fn(key, value) -> Bool, map) { + let insert = fn(map, k, v) { + case f(k, v) { + True -> insert(map, k, v) + _ -> map + } + } + map + |> fold(from: new(), with: insert) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn take(from map, keeping desired_keys: List(k)) { + dict.take(map, desired_keys) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn merge(into map, from new_entries) { + dict.merge(map, new_entries) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn delete(from map, delete key: k) { + dict.delete(map, key) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn drop(from map, drop disallowed_keys: List(k)) { + dict.drop(map, disallowed_keys) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn update(in map, update key: k, with fun: fn(Option(v)) -> v) { + dict.update(map, key, fun) +} + +@deprecated("Please use the `gleam/dict` module instead") +pub fn fold(over map, from initial: acc, with fun: fn(acc, k, v) -> acc) -> acc { + dict.fold(map, initial, fun) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam new file mode 100644 index 0000000..6015c0f --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam @@ -0,0 +1,346 @@ +/// `Option` represents a value that may be present or not. `Some` means the value is +/// present, `None` means the value is not. +/// +/// This is Gleam's alternative to having a value that could be Null, as is +/// possible in some other languages. +/// +pub type Option(a) { + Some(a) + None +} + +fn do_all(list: List(Option(a)), acc: List(a)) -> Option(List(a)) { + case list { + [] -> Some(acc) + [x, ..rest] -> { + let accumulate = fn(acc, item) { + case acc, item { + Some(values), Some(value) -> Some([value, ..values]) + _, _ -> None + } + } + accumulate(do_all(rest, acc), x) + } + } +} + +/// Combines a list of `Option`s into a single `Option`. +/// If all elements in the list are `Some` then returns a `Some` holding the list of values. +/// If any element is `None` then returns`None`. +/// +/// ## Examples +/// +/// ```gleam +/// > all([Some(1), Some(2)]) +/// Some([1, 2]) +/// ``` +/// +/// ```gleam +/// > all([Some(1), None]) +/// None +/// ``` +/// +pub fn all(list: List(Option(a))) -> Option(List(a)) { + do_all(list, []) +} + +/// Checks whether the `Option` is a `Some` value. +/// +/// ## Examples +/// +/// ```gleam +/// > is_some(Some(1)) +/// True +/// ``` +/// +/// ```gleam +/// > is_some(None) +/// False +/// ``` +/// +pub fn is_some(option: Option(a)) -> Bool { + option != None +} + +/// Checks whether the `Option` is a `None` value. +/// +/// ## Examples +/// +/// ```gleam +/// > is_none(Some(1)) +/// False +/// ``` +/// +/// ```gleam +/// > is_none(None) +/// True +/// ``` +/// +pub fn is_none(option: Option(a)) -> Bool { + option == None +} + +/// Converts an `Option` type to a `Result` type. +/// +/// ## Examples +/// +/// ```gleam +/// > to_result(Some(1), "some_error") +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > to_result(None, "some_error") +/// Error("some_error") +/// ``` +/// +pub fn to_result(option: Option(a), e) -> Result(a, e) { + case option { + Some(a) -> Ok(a) + _ -> Error(e) + } +} + +/// Converts a `Result` type to an `Option` type. +/// +/// ## Examples +/// +/// ```gleam +/// > from_result(Ok(1)) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > from_result(Error("some_error")) +/// None +/// ``` +/// +pub fn from_result(result: Result(a, e)) -> Option(a) { + case result { + Ok(a) -> Some(a) + _ -> None + } +} + +/// Extracts the value from an `Option`, returning a default value if there is none. +/// +/// ## Examples +/// +/// ```gleam +/// > unwrap(Some(1), 0) +/// 1 +/// ``` +/// +/// ```gleam +/// > unwrap(None, 0) +/// 0 +/// ``` +/// +pub fn unwrap(option: Option(a), or default: a) -> a { + case option { + Some(x) -> x + None -> default + } +} + +/// Extracts the value from an `Option`, evaluating the default function if the option is `None`. +/// +/// ## Examples +/// +/// ```gleam +/// > lazy_unwrap(Some(1), fn() { 0 }) +/// 1 +/// ``` +/// +/// ```gleam +/// > lazy_unwrap(None, fn() { 0 }) +/// 0 +/// ``` +/// +pub fn lazy_unwrap(option: Option(a), or default: fn() -> a) -> a { + case option { + Some(x) -> x + None -> default() + } +} + +/// Updates a value held within the `Some` of an `Option` by calling a given function +/// on it. +/// +/// If the `Option` is a `None` rather than `Some`, the function is not called and the +/// `Option` stays the same. +/// +/// ## Examples +/// +/// ```gleam +/// > map(over: Some(1), with: fn(x) { x + 1 }) +/// Some(2) +/// ``` +/// +/// ```gleam +/// > map(over: None, with: fn(x) { x + 1 }) +/// None +/// ``` +/// +pub fn map(over option: Option(a), with fun: fn(a) -> b) -> Option(b) { + case option { + Some(x) -> Some(fun(x)) + None -> None + } +} + +/// Merges a nested `Option` into a single layer. +/// +/// ## Examples +/// +/// ```gleam +/// > flatten(Some(Some(1))) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > flatten(Some(None)) +/// None +/// ``` +/// +/// ```gleam +/// > flatten(None) +/// None +/// ``` +/// +pub fn flatten(option: Option(Option(a))) -> Option(a) { + case option { + Some(x) -> x + None -> None + } +} + +/// Updates a value held within the `Some` of an `Option` by calling a given function +/// on it, where the given function also returns an `Option`. The two options are +/// then merged together into one `Option`. +/// +/// If the `Option` is a `None` rather than `Some` the function is not called and the +/// option stays the same. +/// +/// This function is the equivalent of calling `map` followed by `flatten`, and +/// it is useful for chaining together multiple functions that return `Option`. +/// +/// ## Examples +/// +/// ```gleam +/// > then(Some(1), fn(x) { Some(x + 1) }) +/// Some(2) +/// ``` +/// +/// ```gleam +/// > then(Some(1), fn(x) { Some(#("a", x)) }) +/// Some(#("a", 1)) +/// ``` +/// +/// ```gleam +/// > then(Some(1), fn(_) { None }) +/// None +/// ``` +/// +/// ```gleam +/// > then(None, fn(x) { Some(x + 1) }) +/// None +/// ``` +/// +pub fn then(option: Option(a), apply fun: fn(a) -> Option(b)) -> Option(b) { + case option { + Some(x) -> fun(x) + None -> None + } +} + +/// Returns the first value if it is `Some`, otherwise returns the second value. +/// +/// ## Examples +/// +/// ```gleam +/// > or(Some(1), Some(2)) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > or(Some(1), None) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > or(None, Some(2)) +/// Some(2) +/// ``` +/// +/// ```gleam +/// > or(None, None) +/// None +/// ``` +/// +pub fn or(first: Option(a), second: Option(a)) -> Option(a) { + case first { + Some(_) -> first + None -> second + } +} + +/// Returns the first value if it is `Some`, otherwise evaluates the given function for a fallback value. +/// +/// ## Examples +/// +/// ```gleam +/// > lazy_or(Some(1), fn() { Some(2) }) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > lazy_or(Some(1), fn() { None }) +/// Some(1) +/// ``` +/// +/// ```gleam +/// > lazy_or(None, fn() { Some(2) }) +/// Some(2) +/// ``` +/// +/// ```gleam +/// > lazy_or(None, fn() { None }) +/// None +/// ``` +/// +pub fn lazy_or(first: Option(a), second: fn() -> Option(a)) -> Option(a) { + case first { + Some(_) -> first + None -> second() + } +} + +fn do_values(list: List(Option(a)), acc: List(a)) -> List(a) { + case list { + [] -> acc + [x, ..xs] -> { + let accumulate = fn(acc, item) { + case item { + Some(value) -> [value, ..acc] + None -> acc + } + } + accumulate(do_values(xs, acc), x) + } + } +} + +/// Given a list of `Option`s, +/// returns only the values inside `Some`. +/// +/// ## Examples +/// +/// ```gleam +/// > values([Some(1), None, Some(3)]) +/// [1, 3] +/// ``` +/// +pub fn values(options: List(Option(a))) -> List(a) { + do_values(options, []) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam new file mode 100644 index 0000000..12ce011 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam @@ -0,0 +1,133 @@ +/// Represents the result of a single comparison to determine the precise +/// ordering of two values. +/// +pub type Order { + /// Less-than + Lt + + /// Equal + Eq + + /// Greater than + Gt +} + +/// Inverts an order, so less-than becomes greater-than and greater-than +/// becomes less-than. +/// +/// ## Examples +/// +/// ```gleam +/// > negate(Lt) +/// Gt +/// ``` +/// +/// ```gleam +/// > negate(Eq) +/// Eq +/// ``` +/// +/// ```gleam +/// > negate(Lt) +/// Gt +/// ``` +/// +pub fn negate(order: Order) -> Order { + case order { + Lt -> Gt + Eq -> Eq + Gt -> Lt + } +} + +/// Produces a numeric representation of the order. +/// +/// ## Examples +/// +/// ```gleam +/// > to_int(Lt) +/// -1 +/// ``` +/// +/// ```gleam +/// > to_int(Eq) +/// 0 +/// ``` +/// +/// ```gleam +/// > to_int(Gt) +/// 1 +/// ``` +/// +pub fn to_int(order: Order) -> Int { + case order { + Lt -> -1 + Eq -> 0 + Gt -> 1 + } +} + +/// Compares two `Order` values to one another, producing a new `Order`. +/// +/// ## Examples +/// +/// ```gleam +/// > compare(Eq, with: Lt) +/// Gt +/// ``` +/// +pub fn compare(a: Order, with b: Order) -> Order { + case a, b { + x, y if x == y -> Eq + Lt, _ | Eq, Gt -> Lt + _, _ -> Gt + } +} + +/// Returns the largest of two orders given that `Gt > Eq > Lt`. +/// +/// ## Examples +/// +/// ```gleam +/// > max(Eq, Lt) +/// Eq +/// ``` +/// +pub fn max(a: Order, b: Order) -> Order { + case a, b { + Gt, _ -> Gt + Eq, Lt -> Eq + _, _ -> b + } +} + +/// Returns the smallest of two orders given that `Gt > Eq > Lt`. +/// +/// ## Examples +/// +/// ```gleam +/// > min(Eq, Lt) +/// Lt +/// ``` +/// +pub fn min(a: Order, b: Order) -> Order { + case a, b { + Lt, _ -> Lt + Eq, Gt -> Eq + _, _ -> b + } +} + +/// Inverts an ordering function, so less-than becomes greater-than and greater-than +/// becomes less-than. +/// +/// ## Examples +/// +/// ```gleam +/// > list.sort([1, 5, 4], by: reverse(int.compare)) +/// [5, 4, 1] +/// ``` +/// +pub fn reverse(orderer: fn(a, a) -> Order) -> fn(a, a) -> Order { + fn(a, b) { orderer(b, a) } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam new file mode 100644 index 0000000..894e6a8 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam @@ -0,0 +1,85 @@ +/// Returns the first element in a pair. +/// +/// ## Examples +/// +/// ```gleam +/// > first(#(1, 2)) +/// 1 +/// ``` +/// +pub fn first(pair: #(a, b)) -> a { + let #(a, _) = pair + a +} + +/// Returns the second element in a pair. +/// +/// ## Examples +/// +/// ```gleam +/// > second(#(1, 2)) +/// 2 +/// ``` +/// +pub fn second(pair: #(a, b)) -> b { + let #(_, a) = pair + a +} + +/// Returns a new pair with the elements swapped. +/// +/// ## Examples +/// +/// ```gleam +/// > swap(#(1, 2)) +/// #(2, 1) +/// ``` +/// +pub fn swap(pair: #(a, b)) -> #(b, a) { + let #(a, b) = pair + #(b, a) +} + +/// Returns a new pair with the first element having had `with` applied to +/// it. +/// +/// ## Examples +/// +/// ```gleam +/// > #(1, 2) |> map_first(fn(n) { n * 2 }) +/// #(2, 2) +/// ``` +/// +pub fn map_first(of pair: #(a, b), with fun: fn(a) -> c) -> #(c, b) { + let #(a, b) = pair + #(fun(a), b) +} + +/// Returns a new pair with the second element having had `with` applied to +/// it. +/// +/// ## Examples +/// +/// ```gleam +/// > #(1, 2) |> map_second(fn(n) { n * 2 }) +/// #(1, 4) +/// ``` +/// +pub fn map_second(of pair: #(a, b), with fun: fn(b) -> c) -> #(a, c) { + let #(a, b) = pair + #(a, fun(b)) +} + +/// Returns a new pair with the given elements. This can also be done using the dedicated +/// syntax instead: `new(1, 2) == #(1, 2)`. +/// +/// ## Examples +/// +/// ```gleam +/// > new(1, 2) +/// #(1, 2) +/// ``` +/// +pub fn new(first: a, second: b) -> #(a, b) { + #(first, second) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam new file mode 100644 index 0000000..5bf60c8 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam @@ -0,0 +1,292 @@ +import gleam/list + +/// A queue is an ordered collection of elements. It is similar to a list, but +/// unlike a list elements can be added to or removed from either the front or +/// the back in a performant fashion. +/// +/// The internal representation may be different for two queues with the same +/// elements in the same order if the queues were constructed in different +/// ways. This is the price paid for a queue's fast access at both the front +/// and the back. +/// +/// Because of unpredictable internal representation the equality operator `==` +/// may return surprising results, and the `is_equal` and `is_logically_equal` +/// functions are the recommended way to test queues for equality. +/// +pub opaque type Queue(element) { + Queue(in: List(element), out: List(element)) +} + +/// Creates a fresh queue that contains no values. +/// +pub fn new() -> Queue(a) { + Queue(in: [], out: []) +} + +/// Converts a list of elements into a queue of the same elements in the same +/// order. The first element in the list becomes the front element in the queue. +/// +/// This function runs in constant time. +/// +/// # Examples +/// +/// ```gleam +/// > [1, 2, 3] |> from_list |> length +/// 3 +/// ``` +/// +pub fn from_list(list: List(a)) -> Queue(a) { + Queue(in: [], out: list) +} + +/// Converts a queue of elements into a list of the same elements in the same +/// order. The front element in the queue becomes the first element in the list. +/// +/// This function runs in linear time. +/// +/// # Examples +/// +/// ```gleam +/// > new() |> push_back(1) |> push_back(2) |> to_list +/// [1, 2] +/// ``` +/// +pub fn to_list(queue: Queue(a)) -> List(a) { + queue.out + |> list.append(list.reverse(queue.in)) +} + +/// Determines whether or not the queue is empty. +/// +/// This function runs in constant time. +/// +/// ## Examples +/// +/// ```gleam +/// > [] |> from_list |> is_empty +/// True +/// ``` +/// +/// ```gleam +/// > [1] |> from_list |> is_empty +/// False +/// ``` +/// +/// ```gleam +/// > [1, 2] |> from_list |> is_empty +/// False +/// ``` +/// +pub fn is_empty(queue: Queue(a)) -> Bool { + queue.in == [] && queue.out == [] +} + +/// Counts the number of elements in a given queue. +/// +/// This function has to traverse the queue to determine the number of elements, +/// so it runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > length(from_list([])) +/// 0 +/// ``` +/// +/// ```gleam +/// > length(from_list([1])) +/// 1 +/// ``` +/// +/// ```gleam +/// > length(from_list([1, 2])) +/// 2 +/// ``` +/// +pub fn length(queue: Queue(a)) -> Int { + list.length(queue.in) + list.length(queue.out) +} + +/// Pushes an element onto the back of the queue. +/// +/// # Examples +/// +/// ```gleam +/// > [1, 2] |> from_list |> push_back(3) |> to_list +/// [1, 2, 3] +/// ``` +/// +pub fn push_back(onto queue: Queue(a), this item: a) -> Queue(a) { + Queue(in: [item, ..queue.in], out: queue.out) +} + +/// Pushes an element onto the front of the queue. +/// +/// # Examples +/// +/// ```gleam +/// > [0, 0] |> from_list |> push_front(1) |> to_list +/// [1, 0, 0] +/// ``` +/// +pub fn push_front(onto queue: Queue(a), this item: a) -> Queue(a) { + Queue(in: queue.in, out: [item, ..queue.out]) +} + +/// Gets the last element from the queue, returning the +/// element and a new queue without that element. +/// +/// This function typically runs in constant time, but will occasionally run in +/// linear time. +/// +/// # Examples +/// +/// ```gleam +/// > new() +/// > |> push_back(0) +/// > |> push_back(1) +/// > |> pop_back() +/// Ok(#(1, push_front(new(), 0))) +/// ``` +/// +/// ```gleam +/// > new() +/// > |> push_front(0) +/// > |> pop_back() +/// Ok(#(0, new())) +/// ``` +/// +/// ```gleam +/// > new() +/// > |> pop_back() +/// Error(Nil) +/// ``` +/// +pub fn pop_back(from queue: Queue(a)) -> Result(#(a, Queue(a)), Nil) { + case queue { + Queue(in: [], out: []) -> Error(Nil) + Queue(in: [], out: out) -> pop_back(Queue(in: list.reverse(out), out: [])) + Queue(in: [first, ..rest], out: out) -> { + let queue = Queue(in: rest, out: out) + Ok(#(first, queue)) + } + } +} + +/// Gets the first element from the queue, returning the +/// element and a new queue without that element. +/// +/// This function typically runs in constant time, but will occasionally run in +/// linear time. +/// +/// # Examples +/// +/// ```gleam +/// > queue.new() +/// > |> queue.push_front(1) +/// > |> queue.push_front(0) +/// > |> queue.pop_front() +/// Ok(#(0, queue.push_back(queue.new(), 1))) +/// ``` +/// +/// ```gleam +/// > queue.new() +/// > |> queue.push_back(0) +/// > |> queue.pop_front() +/// Ok(#(0, queue.new())) +/// ``` +/// +/// ```gleam +/// > queue.new() +/// > |> queue.pop_back() +/// Error(Nil) +/// ``` +/// +pub fn pop_front(from queue: Queue(a)) -> Result(#(a, Queue(a)), Nil) { + case queue { + Queue(in: [], out: []) -> Error(Nil) + Queue(in: in, out: []) -> pop_front(Queue(in: [], out: list.reverse(in))) + Queue(in: in, out: [first, ..rest]) -> { + let queue = Queue(in: in, out: rest) + Ok(#(first, queue)) + } + } +} + +/// Creates a new queue from a given queue containing the same elements, but in +/// the opposite order. +/// +/// This function runs in constant time. +/// +/// ## Examples +/// +/// ```gleam +/// > [] |> from_list |> reverse |> to_list +/// [] +/// ``` +/// +/// ```gleam +/// > [1] |> from_list |> reverse |> to_list +/// [1] +/// ``` +/// +/// ```gleam +/// > [1, 2] |> from_list |> reverse |> to_list +/// [2, 1] +/// ``` +/// +pub fn reverse(queue: Queue(a)) -> Queue(a) { + Queue(in: queue.out, out: queue.in) +} + +fn check_equal( + xs: List(t), + x_tail: List(t), + ys: List(t), + y_tail: List(t), + eq: fn(t, t) -> Bool, +) -> Bool { + case xs, x_tail, ys, y_tail { + [], [], [], [] -> True + [x, ..xs], _, [y, ..ys], _ -> + case eq(x, y) { + False -> False + True -> check_equal(xs, x_tail, ys, y_tail, eq) + } + [], [_, ..], _, _ -> check_equal(list.reverse(x_tail), [], ys, y_tail, eq) + _, _, [], [_, ..] -> check_equal(xs, x_tail, list.reverse(y_tail), [], eq) + _, _, _, _ -> False + } +} + +/// Checks whether two queues have equal elements in the same order, where the +/// equality of elements is determined by a given equality checking function. +/// +/// This function is useful as the internal representation may be different for +/// two queues with the same elements in the same order depending on how they +/// were constructed, so the equality operator `==` may return surprising +/// results. +/// +/// This function runs in linear time multiplied by the time taken by the +/// element equality checking function. +/// +pub fn is_logically_equal( + a: Queue(t), + to b: Queue(t), + checking element_is_equal: fn(t, t) -> Bool, +) -> Bool { + check_equal(a.out, a.in, b.out, b.in, element_is_equal) +} + +/// Checks whether two queues have the same elements in the same order. +/// +/// This function is useful as the internal representation may be different for +/// two queues with the same elements in the same order depending on how they +/// were constructed, so the equality operator `==` may return surprising +/// results. +/// +/// This function runs in linear time. +/// +pub fn is_equal(a: Queue(t), to b: Queue(t)) -> Bool { + check_equal(a.out, a.in, b.out, b.in, fn(a, b) { a == b }) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam new file mode 100644 index 0000000..9ffda78 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam @@ -0,0 +1,214 @@ +//// This module contains regular expression matching functions for strings. +//// The matching algorithms of the library are based on the PCRE library, but not +//// all of the PCRE library is interfaced and some parts of the library go beyond +//// what PCRE offers. Currently PCRE version 8.40 (release date 2017-01-11) is used. + +import gleam/option.{type Option} + +pub type Regex + +/// The details about a particular match: +/// +pub type Match { + Match( + /// The full string of the match. + content: String, + /// A `Regex` can have subpatterns, sup-parts that are in parentheses. + submatches: List(Option(String)), + ) +} + +/// When a regular expression fails to compile: +/// +pub type CompileError { + CompileError( + /// The problem encountered that caused the compilation to fail + error: String, + /// The byte index into the string to where the problem was found + /// This value may not be correct in JavaScript environments. + byte_index: Int, + ) +} + +pub type Options { + Options(case_insensitive: Bool, multi_line: Bool) +} + +/// Creates a `Regex` with some additional options. +/// +/// ## Examples +/// +/// ```gleam +/// > let options = Options(case_insensitive: False, multi_line: True) +/// > let assert Ok(re) = compile("^[0-9]", with: options) +/// > check(re, "abc\n123") +/// True +/// ``` +/// +/// ```gleam +/// > let options = Options(case_insensitive: True, multi_line: False) +/// > let assert Ok(re) = compile("[A-Z]", with: options) +/// > check(re, "abc123") +/// True +/// ``` +/// +pub fn compile( + pattern: String, + with options: Options, +) -> Result(Regex, CompileError) { + do_compile(pattern, options) +} + +@external(erlang, "gleam_stdlib", "compile_regex") +@external(javascript, "../gleam_stdlib.mjs", "compile_regex") +fn do_compile(a: String, with with: Options) -> Result(Regex, CompileError) + +/// Creates a new `Regex`. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Ok(re) = from_string("[0-9]") +/// > check(re, "abc123") +/// True +/// ``` +/// +/// ```gleam +/// > check(re, "abcxyz") +/// False +/// ``` +/// +/// ```gleam +/// > from_string("[0-9") +/// Error( +/// CompileError( +/// error: "missing terminating ] for character class", +/// byte_index: 4 +/// ) +/// ) +/// ``` +/// +pub fn from_string(pattern: String) -> Result(Regex, CompileError) { + compile(pattern, Options(case_insensitive: False, multi_line: False)) +} + +/// Returns a boolean indicating whether there was a match or not. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Ok(re) = from_string("^f.o.?") +/// > check(with: re, content: "foo") +/// True +/// ``` +/// +/// ```gleam +/// > check(with: re, content: "boo") +/// False +/// ``` +/// +pub fn check(with regex: Regex, content content: String) -> Bool { + do_check(regex, content) +} + +@external(erlang, "gleam_stdlib", "regex_check") +@external(javascript, "../gleam_stdlib.mjs", "regex_check") +fn do_check(a: Regex, b: String) -> Bool + +/// Splits a string. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Ok(re) = from_string(" *, *") +/// > split(with: re, content: "foo,32, 4, 9 ,0") +/// ["foo", "32", "4", "9", "0"] +/// ``` +/// +pub fn split(with regex: Regex, content string: String) -> List(String) { + do_split(regex, string) +} + +@target(erlang) +@external(erlang, "gleam_stdlib", "regex_split") +fn do_split(a: Regex, b: String) -> List(String) + +@target(javascript) +fn do_split(regex, string) -> List(String) { + js_split(string, regex) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "split") +fn js_split(a: String, b: Regex) -> List(String) + +/// Collects all matches of the regular expression. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Ok(re) = from_string("[oi]n a (\\w+)") +/// > scan(with: re, content: "I am on a boat in a lake.") +/// [ +/// Match( +/// content: "on a boat", +/// submatches: [Some("boat")] +/// ), +/// Match( +/// content: "in a lake", +/// submatches: [Some("lake")] +/// ) +/// ] +/// ``` +/// +/// ```gleam +/// > let assert Ok(re) = regex.from_string("([+|\\-])?(\\d+)(\\w+)?") +/// > scan(with: re, content: "-36") +/// [ +/// Match( +/// content: "-36", +/// submatches: [Some("-"), Some("36")] +/// ) +/// ] +/// +/// > scan(with: re, content: "36") +/// [ +/// Match( +/// content: "36", +/// submatches: [None, Some("36")] +/// ) +/// ] +/// ``` +/// +/// ```gleam +/// > let assert Ok(re) = regex.from_string("var\\s*(\\w+)\\s*(int|string)?\\s*=\\s*(.*)") +/// > scan(with: re, content: "var age = 32") +/// [ +/// Match( +/// content: "var age = 32", +/// submatches: [Some("age"), None, Some("32")] +/// ) +/// ] +/// ``` +/// +/// ```gleam +/// > let assert Ok(re) = regex.from_string("let (\\w+) = (\\w+)") +/// > scan(with: re, content: "let age = 32") +/// [ +/// Match( +/// content: "let age = 32", +/// submatches: [Some("age"), Some("32")] +/// ) +/// ] +/// +/// > scan(with: re, content: "const age = 32") +/// [] +/// ``` +/// +pub fn scan(with regex: Regex, content string: String) -> List(Match) { + do_scan(regex, string) +} + +@external(erlang, "gleam_stdlib", "regex_scan") +@external(javascript, "../gleam_stdlib.mjs", "regex_scan") +fn do_scan(a: Regex, b: String) -> List(Match) diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam new file mode 100644 index 0000000..fb6dddb --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam @@ -0,0 +1,482 @@ +//// Result represents the result of something that may succeed or not. +//// `Ok` means it was successful, `Error` means it was not successful. + +import gleam/list + +/// Checks whether the result is an `Ok` value. +/// +/// ## Examples +/// +/// ```gleam +/// > is_ok(Ok(1)) +/// True +/// ``` +/// +/// ```gleam +/// > is_ok(Error(Nil)) +/// False +/// ``` +/// +pub fn is_ok(result: Result(a, e)) -> Bool { + case result { + Error(_) -> False + Ok(_) -> True + } +} + +/// Checks whether the result is an `Error` value. +/// +/// ## Examples +/// +/// ```gleam +/// > is_error(Ok(1)) +/// False +/// ``` +/// +/// ```gleam +/// > is_error(Error(Nil)) +/// True +/// ``` +/// +pub fn is_error(result: Result(a, e)) -> Bool { + case result { + Ok(_) -> False + Error(_) -> True + } +} + +/// Updates a value held within the `Ok` of a result by calling a given function +/// on it. +/// +/// If the result is an `Error` rather than `Ok` the function is not called and the +/// result stays the same. +/// +/// ## Examples +/// +/// ```gleam +/// > map(over: Ok(1), with: fn(x) { x + 1 }) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > map(over: Error(1), with: fn(x) { x + 1 }) +/// Error(1) +/// ``` +/// +pub fn map(over result: Result(a, e), with fun: fn(a) -> b) -> Result(b, e) { + case result { + Ok(x) -> Ok(fun(x)) + Error(e) -> Error(e) + } +} + +/// Updates a value held within the `Error` of a result by calling a given function +/// on it. +/// +/// If the result is `Ok` rather than `Error` the function is not called and the +/// result stays the same. +/// +/// ## Examples +/// +/// ```gleam +/// > map_error(over: Error(1), with: fn(x) { x + 1 }) +/// Error(2) +/// ``` +/// +/// ```gleam +/// > map_error(over: Ok(1), with: fn(x) { x + 1 }) +/// Ok(1) +/// ``` +/// +pub fn map_error( + over result: Result(a, e), + with fun: fn(e) -> f, +) -> Result(a, f) { + case result { + Ok(x) -> Ok(x) + Error(error) -> Error(fun(error)) + } +} + +/// Merges a nested `Result` into a single layer. +/// +/// ## Examples +/// +/// ```gleam +/// > flatten(Ok(Ok(1))) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > flatten(Ok(Error(""))) +/// Error("") +/// ``` +/// +/// ```gleam +/// > flatten(Error(Nil)) +/// Error(Nil) +/// ``` +/// +pub fn flatten(result: Result(Result(a, e), e)) -> Result(a, e) { + case result { + Ok(x) -> x + Error(error) -> Error(error) + } +} + +/// "Updates" an `Ok` result by passing its value to a function that yields a result, +/// and returning the yielded result. (This may "replace" the `Ok` with an `Error`.) +/// +/// If the input is an `Error` rather than an `Ok`, the function is not called and +/// the original `Error` is returned. +/// +/// This function is the equivalent of calling `map` followed by `flatten`, and +/// it is useful for chaining together multiple functions that may fail. +/// +/// ## Examples +/// +/// ```gleam +/// > try(Ok(1), fn(x) { Ok(x + 1) }) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > try(Ok(1), fn(x) { Ok(#("a", x)) }) +/// Ok(#("a", 1)) +/// ``` +/// +/// ```gleam +/// > try(Ok(1), fn(_) { Error("Oh no") }) +/// Error("Oh no") +/// ``` +/// +/// ```gleam +/// > try(Error(Nil), fn(x) { Ok(x + 1) }) +/// Error(Nil) +/// ``` +/// +pub fn try( + result: Result(a, e), + apply fun: fn(a) -> Result(b, e), +) -> Result(b, e) { + case result { + Ok(x) -> fun(x) + Error(e) -> Error(e) + } +} + +/// An alias for `try`. See the documentation for that function for more information. +/// +pub fn then( + result: Result(a, e), + apply fun: fn(a) -> Result(b, e), +) -> Result(b, e) { + try(result, fun) +} + +/// Extracts the `Ok` value from a result, returning a default value if the result +/// is an `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > unwrap(Ok(1), 0) +/// 1 +/// ``` +/// +/// ```gleam +/// > unwrap(Error(""), 0) +/// 0 +/// ``` +/// +pub fn unwrap(result: Result(a, e), or default: a) -> a { + case result { + Ok(v) -> v + Error(_) -> default + } +} + +/// Extracts the `Ok` value from a result, evaluating the default function if the result +/// is an `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > lazy_unwrap(Ok(1), fn() { 0 }) +/// 1 +/// ``` +/// +/// ```gleam +/// > lazy_unwrap(Error(""), fn() { 0 }) +/// 0 +/// ``` +/// +pub fn lazy_unwrap(result: Result(a, e), or default: fn() -> a) -> a { + case result { + Ok(v) -> v + Error(_) -> default() + } +} + +/// Extracts the `Error` value from a result, returning a default value if the result +/// is an `Ok`. +/// +/// ## Examples +/// +/// ```gleam +/// > unwrap_error(Error(1), 0) +/// 1 +/// ``` +/// +/// ```gleam +/// > unwrap_error(Ok(""), 0) +/// 0 +/// ``` +/// +pub fn unwrap_error(result: Result(a, e), or default: e) -> e { + case result { + Ok(_) -> default + Error(e) -> e + } +} + +/// Extracts the inner value from a result. Both the value and error must be of +/// the same type. +/// +/// ## Examples +/// +/// ```gleam +/// > unwrap_both(Error(1)) +/// 1 +/// ``` +/// +/// ```gleam +/// > unwrap_both(Ok(2)) +/// 2 +/// ``` +/// +pub fn unwrap_both(result: Result(a, a)) -> a { + case result { + Ok(a) -> a + Error(a) -> a + } +} + +/// Transforms any error into `Error(Nil)`. +/// +/// ## Examples +/// +/// ```gleam +/// > nil_error(Error(1)) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > nil_error(Ok(1)) +/// Ok(1) +/// ``` +/// +pub fn nil_error(result: Result(a, e)) -> Result(a, Nil) { + map_error(result, fn(_) { Nil }) +} + +/// Returns the first value if it is `Ok`, otherwise returns the second value. +/// +/// ## Examples +/// +/// ```gleam +/// > or(Ok(1), Ok(2)) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > or(Ok(1), Error("Error 2")) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > or(Error("Error 1"), Ok(2)) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > or(Error("Error 1"), Error("Error 2")) +/// Error("Error 2") +/// ``` +/// +pub fn or(first: Result(a, e), second: Result(a, e)) -> Result(a, e) { + case first { + Ok(_) -> first + Error(_) -> second + } +} + +/// Returns the first value if it is `Ok`, otherwise evaluates the given function for a fallback value. +/// +/// ## Examples +/// +/// ```gleam +/// > lazy_or(Ok(1), fn() { Ok(2) }) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > lazy_or(Ok(1), fn() { Error("Error 2") }) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > lazy_or(Error("Error 1"), fn() { Ok(2) }) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > lazy_or(Error("Error 1"), fn() { Error("Error 2") }) +/// Error("Error 2") +/// ``` +/// +pub fn lazy_or( + first: Result(a, e), + second: fn() -> Result(a, e), +) -> Result(a, e) { + case first { + Ok(_) -> first + Error(_) -> second() + } +} + +/// Combines a list of results into a single result. +/// If all elements in the list are `Ok` then returns an `Ok` holding the list of values. +/// If any element is `Error` then returns the first error. +/// +/// ## Examples +/// +/// ```gleam +/// > all([Ok(1), Ok(2)]) +/// Ok([1, 2]) +/// ``` +/// +/// ```gleam +/// > all([Ok(1), Error("e")]) +/// Error("e") +/// ``` +/// +pub fn all(results: List(Result(a, e))) -> Result(List(a), e) { + list.try_map(results, fn(x) { x }) +} + +/// Given a list of results, returns a pair where the first element is a list +/// of all the values inside `Ok` and the second element is a list with all the +/// values inside `Error`. The values in both lists appear in reverse order with +/// respect to their position in the original list of results. +/// +/// ## Examples +/// +/// ```gleam +/// > partition([Ok(1), Error("a"), Error("b"), Ok(2)]) +/// #([2, 1], ["b", "a"]) +/// ``` +/// +pub fn partition(results: List(Result(a, e))) -> #(List(a), List(e)) { + do_partition(results, [], []) +} + +fn do_partition(results: List(Result(a, e)), oks: List(a), errors: List(e)) { + case results { + [] -> #(oks, errors) + [Ok(a), ..rest] -> do_partition(rest, [a, ..oks], errors) + [Error(e), ..rest] -> do_partition(rest, oks, [e, ..errors]) + } +} + +/// Replace the value within a result +/// +/// ## Examples +/// +/// ```gleam +/// > replace(Ok(1), Nil) +/// Ok(Nil) +/// ``` +/// +/// ```gleam +/// > replace(Error(1), Nil) +/// Error(1) +/// ``` +/// +pub fn replace(result: Result(a, e), value: b) -> Result(b, e) { + case result { + Ok(_) -> Ok(value) + Error(error) -> Error(error) + } +} + +/// Replace the error within a result +/// +/// ## Examples +/// +/// ```gleam +/// > replace_error(Error(1), Nil) +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > replace_error(Ok(1), Nil) +/// Ok(1) +/// ``` +/// +pub fn replace_error(result: Result(a, e1), error: e2) -> Result(a, e2) { + case result { + Ok(x) -> Ok(x) + Error(_) -> Error(error) + } +} + +/// Given a list of results, returns only the values inside `Ok`. +/// +/// ## Examples +/// +/// ```gleam +/// > values([Ok(1), Error("a"), Ok(3)]) +/// [1, 3] +/// ``` +/// +pub fn values(results: List(Result(a, e))) -> List(a) { + list.filter_map(results, fn(r) { r }) +} + +/// Updates a value held within the `Error` of a result by calling a given function +/// on it, where the given function also returns a result. The two results are +/// then merged together into one result. +/// +/// If the result is an `Ok` rather than `Error` the function is not called and the +/// result stays the same. +/// +/// This function is useful for chaining together computations that may fail +/// and trying to recover from possible errors. +/// +/// ## Examples +/// +/// ```gleam +/// > Ok(1) |> try_recover(with: fn(_) { Error("failed to recover") }) +/// Ok(1) +/// ``` +/// +/// ```gleam +/// > Error(1) |> try_recover(with: fn(error) { Ok(error + 1) }) +/// Ok(2) +/// ``` +/// +/// ```gleam +/// > Error(1) |> try_recover(with: fn(error) { Error("failed to recover") }) +/// Error("failed to recover") +/// ``` +/// +pub fn try_recover( + result: Result(a, e), + with fun: fn(e) -> Result(a, f), +) -> Result(a, f) { + case result { + Ok(value) -> Ok(value) + Error(error) -> fun(error) + } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam new file mode 100644 index 0000000..df8d500 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam @@ -0,0 +1,264 @@ +import gleam/list +import gleam/dict.{type Dict} +import gleam/result + +// A list is used as the map value as an empty list has the smallest +// representation in Erlang's binary format +@target(erlang) +type Token = + List(Nil) + +@target(erlang) +const token = [] + +@target(javascript) +type Token = + Nil + +@target(javascript) +const token = Nil + +/// A set is a collection of unique members of the same type. +/// +/// It is implemented using the `gleam/map` module, so inserts and lookups have +/// logarithmic time complexity. +/// +pub opaque type Set(member) { + Set(map: Dict(member, Token)) +} + +/// Creates a new empty set. +/// +pub fn new() -> Set(member) { + Set(dict.new()) +} + +/// Gets the number of members in a set. +/// +/// This function runs in constant time. +/// +/// ## Examples +/// +/// ```gleam +/// > new() +/// > |> insert(1) +/// > |> insert(2) +/// > |> size +/// 2 +/// ``` +/// +pub fn size(set: Set(member)) -> Int { + dict.size(set.map) +} + +/// Inserts an member into the set. +/// +/// This function runs in logarithmic time. +/// +/// ## Examples +/// +/// ```gleam +/// > new() +/// > |> insert(1) +/// > |> insert(2) +/// > |> size +/// 2 +/// ``` +/// +pub fn insert(into set: Set(member), this member: member) -> Set(member) { + Set(map: dict.insert(set.map, member, token)) +} + +/// Checks whether a set contains a given member. +/// +/// This function runs in logarithmic time. +/// +/// ## Examples +/// +/// ```gleam +/// > new() +/// > |> insert(2) +/// > |> contains(2) +/// True +/// ``` +/// +/// ```gleam +/// > new() +/// > |> insert(2) +/// > |> contains(1) +/// False +/// ``` +/// +pub fn contains(in set: Set(member), this member: member) -> Bool { + set.map + |> dict.get(member) + |> result.is_ok +} + +/// Removes a member from a set. If the set does not contain the member then +/// the set is returned unchanged. +/// +/// This function runs in logarithmic time. +/// +/// ## Examples +/// +/// ```gleam +/// > new() +/// > |> insert(2) +/// > |> delete(2) +/// > |> contains(1) +/// False +/// ``` +/// +pub fn delete(from set: Set(member), this member: member) -> Set(member) { + Set(map: dict.delete(set.map, member)) +} + +/// Converts the set into a list of the contained members. +/// +/// The list has no specific ordering, any unintentional ordering may change in +/// future versions of Gleam or Erlang. +/// +/// This function runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > new() |> insert(2) |> to_list +/// [2] +/// ``` +/// +pub fn to_list(set: Set(member)) -> List(member) { + dict.keys(set.map) +} + +/// Creates a new set of the members in a given list. +/// +/// This function runs in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/list +/// > [1, 1, 2, 4, 3, 2] |> from_list |> to_list |> list.sort +/// [1, 3, 3, 4] +/// ``` +/// +pub fn from_list(members: List(member)) -> Set(member) { + let map = + list.fold( + over: members, + from: dict.new(), + with: fn(m, k) { dict.insert(m, k, token) }, + ) + Set(map) +} + +/// Combines all entries into a single value by calling a given function on each +/// one. +/// +/// Sets are not ordered so the values are not returned in any specific order. +/// Do not write code that relies on the order entries are used by this +/// function as it may change in later versions of Gleam or Erlang. +/// +/// # Examples +/// +/// ```gleam +/// > from_list([1, 3, 9]) +/// > |> fold(0, fn(member, accumulator) { accumulator + member }) +/// 13 +/// ``` +/// +pub fn fold( + over set: Set(member), + from initial: acc, + with reducer: fn(acc, member) -> acc, +) -> acc { + dict.fold(over: set.map, from: initial, with: fn(a, k, _) { reducer(a, k) }) +} + +/// Creates a new set from an existing set, minus any members that a given +/// function returns `False` for. +/// +/// This function runs in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > import gleam/int +/// > from_list([1, 4, 6, 3, 675, 44, 67]) +/// > |> filter(for: int.is_even) +/// > |> to_list +/// [4, 6, 44] +/// ``` +/// +pub fn filter( + in set: Set(member), + keeping predicate: fn(member) -> Bool, +) -> Set(member) { + Set(dict.filter(in: set.map, keeping: fn(m, _) { predicate(m) })) +} + +pub fn drop(from set: Set(member), drop disallowed: List(member)) -> Set(member) { + list.fold(over: disallowed, from: set, with: delete) +} + +/// Creates a new map from a given map, only including any members which are in +/// a given list. +/// +/// This function runs in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > from_list([1, 2, 3]) +/// > |> take([1, 3, 5]) +/// > |> to_list +/// [1, 3] +/// ``` +/// +pub fn take(from set: Set(member), keeping desired: List(member)) -> Set(member) { + Set(dict.take(from: set.map, keeping: desired)) +} + +fn order(first: Set(member), second: Set(member)) -> #(Set(member), Set(member)) { + case dict.size(first.map) > dict.size(second.map) { + True -> #(first, second) + False -> #(second, first) + } +} + +/// Creates a new set that contains all members of both given sets. +/// +/// This function runs in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > union(from_list([1, 2]), from_list([2, 3])) |> to_list +/// [1, 2, 3] +/// ``` +/// +pub fn union(of first: Set(member), and second: Set(member)) -> Set(member) { + let #(larger, smaller) = order(first, second) + fold(over: smaller, from: larger, with: insert) +} + +/// Creates a new set that contains members that are present in both given sets. +/// +/// This function runs in loglinear time. +/// +/// ## Examples +/// +/// ```gleam +/// > intersection(from_list([1, 2]), from_list([2, 3])) |> to_list +/// [2] +/// ``` +/// +pub fn intersection( + of first: Set(member), + and second: Set(member), +) -> Set(member) { + let #(larger, smaller) = order(first, second) + take(from: larger, keeping: to_list(smaller)) +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam new file mode 100644 index 0000000..d4496f3 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam @@ -0,0 +1,906 @@ +//// Strings in Gleam are UTF-8 binaries. They can be written in your code as +//// text surrounded by `"double quotes"`. + +import gleam/iterator.{type Iterator} +import gleam/list +import gleam/option.{type Option, None, Some} +import gleam/order +import gleam/string_builder.{type StringBuilder} + +/// Determines if a `String` is empty. +/// +/// ## Examples +/// +/// ```gleam +/// > is_empty("") +/// True +/// ``` +/// +/// ```gleam +/// > is_empty("the world") +/// False +/// ``` +/// +pub fn is_empty(str: String) -> Bool { + str == "" +} + +/// Gets the number of grapheme clusters in a given `String`. +/// +/// This function has to iterate across the whole string to count the number of +/// graphemes, so it runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > length("Gleam") +/// 5 +/// ``` +/// +/// ```gleam +/// > length("ß↑e̊") +/// 3 +/// ``` +/// +/// ```gleam +/// > length("") +/// 0 +/// ``` +/// +pub fn length(string: String) -> Int { + do_length(string) +} + +@external(erlang, "string", "length") +@external(javascript, "../gleam_stdlib.mjs", "string_length") +fn do_length(a: String) -> Int + +/// Reverses a `String`. +/// +/// This function has to iterate across the whole `String` so it runs in linear +/// time. +/// +/// ## Examples +/// +/// ```gleam +/// > reverse("stressed") +/// "desserts" +/// ``` +/// +pub fn reverse(string: String) -> String { + do_reverse(string) +} + +@target(erlang) +fn do_reverse(string: String) -> String { + string + |> string_builder.from_string + |> string_builder.reverse + |> string_builder.to_string +} + +@target(javascript) +fn do_reverse(string: String) -> String { + string + |> to_graphemes + |> list.reverse + |> concat +} + +/// Creates a new `String` by replacing all occurrences of a given substring. +/// +/// ## Examples +/// +/// ```gleam +/// > replace("www.example.com", each: ".", with: "-") +/// "www-example-com" +/// ``` +/// +/// ```gleam +/// > replace("a,b,c,d,e", each: ",", with: "/") +/// "a/b/c/d/e" +/// ``` +/// +pub fn replace( + in string: String, + each pattern: String, + with substitute: String, +) -> String { + string + |> string_builder.from_string + |> string_builder.replace(each: pattern, with: substitute) + |> string_builder.to_string +} + +/// Creates a new `String` with all the graphemes in the input `String` converted to +/// lowercase. +/// +/// Useful for case-insensitive comparisons. +/// +/// ## Examples +/// +/// ```gleam +/// > lowercase("X-FILES") +/// "x-files" +/// ``` +/// +pub fn lowercase(string: String) -> String { + do_lowercase(string) +} + +@external(erlang, "string", "lowercase") +@external(javascript, "../gleam_stdlib.mjs", "lowercase") +fn do_lowercase(a: String) -> String + +/// Creates a new `String` with all the graphemes in the input `String` converted to +/// uppercase. +/// +/// Useful for case-insensitive comparisons and VIRTUAL YELLING. +/// +/// ## Examples +/// +/// ```gleam +/// > uppercase("skinner") +/// "SKINNER" +/// ``` +/// +pub fn uppercase(string: String) -> String { + do_uppercase(string) +} + +@external(erlang, "string", "uppercase") +@external(javascript, "../gleam_stdlib.mjs", "uppercase") +fn do_uppercase(a: String) -> String + +/// Compares two `String`s to see which is "larger" by comparing their graphemes. +/// +/// This does not compare the size or length of the given `String`s. +/// +/// ## Examples +/// +/// ```gleam +/// > compare("Anthony", "Anthony") +/// order.Eq +/// ``` +/// +/// ```gleam +/// > compare("A", "B") +/// order.Lt +/// ``` +/// +pub fn compare(a: String, b: String) -> order.Order { + case a == b { + True -> order.Eq + _ -> + case less_than(a, b) { + True -> order.Lt + _ -> order.Gt + } + } +} + +@external(erlang, "gleam_stdlib", "less_than") +@external(javascript, "../gleam_stdlib.mjs", "less_than") +fn less_than(a: String, b: String) -> Bool + +/// Takes a substring given a start grapheme index and a length. Negative indexes +/// are taken starting from the *end* of the list. +/// +/// ## Examples +/// +/// ```gleam +/// > slice(from: "gleam", at_index: 1, length: 2) +/// "le" +/// ``` +/// +/// ```gleam +/// > slice(from: "gleam", at_index: 1, length: 10) +/// "leam" +/// ``` +/// +/// ```gleam +/// > slice(from: "gleam", at_index: 10, length: 3) +/// "" +/// ``` +/// +/// ```gleam +/// > slice(from: "gleam", at_index: -2, length: 2) +/// "am" +/// ``` +/// +/// ```gleam +/// > slice(from: "gleam", at_index: -12, length: 2) +/// "" +/// ``` +/// +pub fn slice(from string: String, at_index idx: Int, length len: Int) -> String { + case len < 0 { + True -> "" + False -> + case idx < 0 { + True -> { + let translated_idx = length(string) + idx + case translated_idx < 0 { + True -> "" + False -> do_slice(string, translated_idx, len) + } + } + False -> do_slice(string, idx, len) + } + } +} + +@target(erlang) +@external(erlang, "string", "slice") +fn do_slice(a: String, b: Int, c: Int) -> String + +@target(javascript) +fn do_slice(string: String, idx: Int, len: Int) -> String { + string + |> to_graphemes + |> list.drop(idx) + |> list.take(len) + |> concat +} + +/// Drops contents of the first `String` that occur before the second `String`. +/// If the `from` string does not contain the `before` string, `from` is returned unchanged. +/// +/// ## Examples +/// +/// ```gleam +/// > crop(from: "The Lone Gunmen", before: "Lone") +/// "Lone Gunmen" +/// ``` +/// +@external(erlang, "gleam_stdlib", "crop_string") +@external(javascript, "../gleam_stdlib.mjs", "crop_string") +pub fn crop(from string: String, before substring: String) -> String + +/// Drops *n* graphemes from the left side of a `String`. +/// +/// ## Examples +/// +/// ```gleam +/// > drop_left(from: "The Lone Gunmen", up_to: 2) +/// "e Lone Gunmen" +/// ``` +/// +pub fn drop_left(from string: String, up_to num_graphemes: Int) -> String { + case num_graphemes < 0 { + True -> string + False -> slice(string, num_graphemes, length(string) - num_graphemes) + } +} + +/// Drops *n* graphemes from the right side of a `String`. +/// +/// ## Examples +/// +/// ```gleam +/// > drop_right(from: "Cigarette Smoking Man", up_to: 2) +/// "Cigarette Smoking M" +/// ``` +/// +pub fn drop_right(from string: String, up_to num_graphemes: Int) -> String { + case num_graphemes < 0 { + True -> string + False -> slice(string, 0, length(string) - num_graphemes) + } +} + +/// Checks if the first `String` contains the second. +/// +/// ## Examples +/// +/// ```gleam +/// > contains(does: "theory", contain: "ory") +/// True +/// ``` +/// +/// ```gleam +/// > contains(does: "theory", contain: "the") +/// True +/// ``` +/// +/// ```gleam +/// > contains(does: "theory", contain: "THE") +/// False +/// ``` +/// +@external(erlang, "gleam_stdlib", "contains_string") +@external(javascript, "../gleam_stdlib.mjs", "contains_string") +pub fn contains(does haystack: String, contain needle: String) -> Bool + +/// Checks whether the first `String` starts with the second one. +/// +/// ## Examples +/// +/// ```gleam +/// > starts_with("theory", "ory") +/// False +/// ``` +/// +pub fn starts_with(string: String, prefix: String) -> Bool { + do_starts_with(string, prefix) +} + +@external(erlang, "gleam_stdlib", "string_starts_with") +@external(javascript, "../gleam_stdlib.mjs", "starts_with") +fn do_starts_with(a: String, b: String) -> Bool + +/// Checks whether the first `String` ends with the second one. +/// +/// ## Examples +/// +/// ```gleam +/// > ends_with("theory", "ory") +/// True +/// ``` +/// +pub fn ends_with(string: String, suffix: String) -> Bool { + do_ends_with(string, suffix) +} + +@external(erlang, "gleam_stdlib", "string_ends_with") +@external(javascript, "../gleam_stdlib.mjs", "ends_with") +fn do_ends_with(a: String, b: String) -> Bool + +/// Creates a list of `String`s by splitting a given string on a given substring. +/// +/// ## Examples +/// +/// ```gleam +/// > split("home/gleam/desktop/", on: "/") +/// ["home", "gleam", "desktop", ""] +/// ``` +/// +pub fn split(x: String, on substring: String) -> List(String) { + case substring { + "" -> to_graphemes(x) + _ -> + x + |> string_builder.from_string + |> string_builder.split(on: substring) + |> list.map(with: string_builder.to_string) + } +} + +/// Splits a `String` a single time on the given substring. +/// +/// Returns an `Error` if substring not present. +/// +/// ## Examples +/// +/// ```gleam +/// > split_once("home/gleam/desktop/", on: "/") +/// Ok(#("home", "gleam/desktop/")) +/// ``` +/// +/// ```gleam +/// > split_once("home/gleam/desktop/", on: "?") +/// Error(Nil) +/// ``` +/// +pub fn split_once( + x: String, + on substring: String, +) -> Result(#(String, String), Nil) { + do_split_once(x, substring) +} + +@target(erlang) +@external(erlang, "string", "split") +fn erl_split(a: String, b: String) -> List(String) + +@target(erlang) +fn do_split_once(x: String, substring: String) -> Result(#(String, String), Nil) { + case erl_split(x, substring) { + [first, rest] -> Ok(#(first, rest)) + _ -> Error(Nil) + } +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "split_once") +fn do_split_once( + x x: String, + substring substring: String, +) -> Result(#(String, String), Nil) + +/// Creates a new `String` by joining two `String`s together. +/// +/// This function copies both `String`s and runs in linear time. If you find +/// yourself joining `String`s frequently consider using the [`string_builder`](../gleam/string_builder.html) +/// module as it can append `String`s much faster! +/// +/// ## Examples +/// +/// ```gleam +/// > append(to: "butter", suffix: "fly") +/// "butterfly" +/// ``` +/// +pub fn append(to first: String, suffix second: String) -> String { + first + |> string_builder.from_string + |> string_builder.append(second) + |> string_builder.to_string +} + +/// Creates a new `String` by joining many `String`s together. +/// +/// This function copies both `String`s and runs in linear time. If you find +/// yourself joining `String`s frequently consider using the [`string_builder`](../gleam/string_builder.html) +/// module as it can append `String`s much faster! +/// +/// ## Examples +/// +/// ```gleam +/// > concat(["never", "the", "less"]) +/// "nevertheless" +/// ``` +/// +pub fn concat(strings: List(String)) -> String { + strings + |> string_builder.from_strings + |> string_builder.to_string +} + +/// Creates a new `String` by repeating a `String` a given number of times. +/// +/// This function runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > repeat("ha", times: 3) +/// "hahaha" +/// ``` +/// +pub fn repeat(string: String, times times: Int) -> String { + iterator.repeat(string) + |> iterator.take(times) + |> iterator.to_list + |> concat +} + +/// Joins many `String`s together with a given separator. +/// +/// This function runs in linear time. +/// +/// ## Examples +/// +/// ```gleam +/// > join(["home","evan","Desktop"], with: "/") +/// "home/evan/Desktop" +/// ``` +/// +pub fn join(strings: List(String), with separator: String) -> String { + do_join(strings, separator) +} + +@target(erlang) +fn do_join(strings: List(String), separator: String) -> String { + strings + |> list.intersperse(with: separator) + |> concat +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "join") +fn do_join(strings strings: List(String), string string: String) -> String + +/// Pads a `String` on the left until it has at least given number of graphemes. +/// +/// ## Examples +/// +/// ```gleam +/// > pad_left("121", to: 5, with: ".") +/// "..121" +/// ``` +/// +/// ```gleam +/// > pad_left("121", to: 3, with: ".") +/// "121" +/// ``` +/// +/// ```gleam +/// > pad_left("121", to: 2, with: ".") +/// "121" +/// ``` +/// +pub fn pad_left(string: String, to desired_length: Int, with pad_string: String) { + let current_length = length(string) + let to_pad_length = desired_length - current_length + padding(to_pad_length, pad_string) + |> iterator.append(iterator.single(string)) + |> iterator.to_list + |> concat +} + +/// Pads a `String` on the right until it has a given length. +/// +/// ## Examples +/// +/// ```gleam +/// > pad_right("123", to: 5, with: ".") +/// "123.." +/// ``` +/// +/// ```gleam +/// > pad_right("123", to: 3, with: ".") +/// "123" +/// ``` +/// +/// ```gleam +/// > pad_right("123", to: 2, with: ".") +/// "123" +/// ``` +/// +pub fn pad_right( + string: String, + to desired_length: Int, + with pad_string: String, +) { + let current_length = length(string) + let to_pad_length = desired_length - current_length + iterator.single(string) + |> iterator.append(padding(to_pad_length, pad_string)) + |> iterator.to_list + |> concat +} + +fn padding(size: Int, pad_string: String) -> Iterator(String) { + let pad_length = length(pad_string) + let num_pads = size / pad_length + let extra = size % pad_length + iterator.repeat(pad_string) + |> iterator.take(num_pads) + |> iterator.append(iterator.single(slice(pad_string, 0, extra))) +} + +/// Removes whitespace on both sides of a `String`. +/// +/// ## Examples +/// +/// ```gleam +/// > trim(" hats \n") +/// "hats" +/// ``` +/// +pub fn trim(string: String) -> String { + do_trim(string) +} + +@target(erlang) +fn do_trim(string: String) -> String { + erl_trim(string, Both) +} + +@target(erlang) +type Direction { + Leading + Trailing + Both +} + +@target(erlang) +@external(erlang, "string", "trim") +fn erl_trim(a: String, b: Direction) -> String + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "trim") +fn do_trim(string string: String) -> String + +/// Removes whitespace on the left of a `String`. +/// +/// ## Examples +/// +/// ```gleam +/// > trim_left(" hats \n") +/// "hats \n" +/// ``` +/// +pub fn trim_left(string: String) -> String { + do_trim_left(string) +} + +@target(erlang) +fn do_trim_left(string: String) -> String { + erl_trim(string, Leading) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "trim_left") +fn do_trim_left(string string: String) -> String + +/// Removes whitespace on the right of a `String`. +/// +/// ## Examples +/// +/// ```gleam +/// > trim_right(" hats \n") +/// " hats" +/// ``` +/// +pub fn trim_right(string: String) -> String { + do_trim_right(string) +} + +@target(erlang) +fn do_trim_right(string: String) -> String { + erl_trim(string, Trailing) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "trim_right") +fn do_trim_right(string string: String) -> String + +/// Splits a non-empty `String` into its first element (head) and rest (tail). +/// This lets you pattern match on `String`s exactly as you would with lists. +/// +/// Note on JavaScript using the function to iterate over a string will likely +/// be slower than using `to_graphemes` due to string slicing being more +/// expensive on JavaScript than Erlang. +/// +/// ## Examples +/// +/// ```gleam +/// > pop_grapheme("gleam") +/// Ok(#("g", "leam")) +/// ``` +/// +/// ```gleam +/// > pop_grapheme("") +/// Error(Nil) +/// ``` +/// +pub fn pop_grapheme(string: String) -> Result(#(String, String), Nil) { + do_pop_grapheme(string) +} + +@external(erlang, "gleam_stdlib", "string_pop_grapheme") +@external(javascript, "../gleam_stdlib.mjs", "pop_grapheme") +fn do_pop_grapheme(string string: String) -> Result(#(String, String), Nil) + +/// Converts a `String` to a list of +/// [graphemes](https://en.wikipedia.org/wiki/Grapheme). +/// +/// ```gleam +/// > to_graphemes("abc") +/// ["a", "b", "c"] +/// ``` +/// +@external(javascript, "../gleam_stdlib.mjs", "graphemes") +pub fn to_graphemes(string: String) -> List(String) { + do_to_graphemes(string, []) + |> list.reverse +} + +fn do_to_graphemes(string: String, acc: List(String)) -> List(String) { + case pop_grapheme(string) { + Ok(#(grapheme, rest)) -> do_to_graphemes(rest, [grapheme, ..acc]) + _ -> acc + } +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "codepoint") +fn unsafe_int_to_utf_codepoint(a: Int) -> UtfCodepoint + +/// Converts a `String` to a `List` of `UtfCodepoint`. +/// +/// See and +/// for an +/// explanation on code points. +/// +/// ## Examples +/// +/// ```gleam +/// > "a" |> to_utf_codepoints +/// [UtfCodepoint(97)] +/// ``` +/// +/// ```gleam +/// // Semantically the same as: +/// // ["🏳", "️", "‍", "🌈"] or: +/// // [waving_white_flag, variant_selector_16, zero_width_joiner, rainbow] +/// > "🏳️‍🌈" |> to_utf_codepoints +/// [UtfCodepoint(127987), UtfCodepoint(65039), UtfCodepoint(8205), UtfCodepoint(127752)] +/// ``` +/// +pub fn to_utf_codepoints(string: String) -> List(UtfCodepoint) { + do_to_utf_codepoints(string) +} + +@target(erlang) +fn do_to_utf_codepoints(string: String) -> List(UtfCodepoint) { + do_to_utf_codepoints_impl(<>, []) + |> list.reverse +} + +@target(erlang) +fn do_to_utf_codepoints_impl( + bit_array: BitArray, + acc: List(UtfCodepoint), +) -> List(UtfCodepoint) { + case bit_array { + <> -> + do_to_utf_codepoints_impl(rest, [first, ..acc]) + _ -> acc + } +} + +@target(javascript) +fn do_to_utf_codepoints(string: String) -> List(UtfCodepoint) { + string + |> string_to_codepoint_integer_list + |> list.map(unsafe_int_to_utf_codepoint) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "string_to_codepoint_integer_list") +fn string_to_codepoint_integer_list(a: String) -> List(Int) + +/// Converts a `List` of `UtfCodepoint`s to a `String`. +/// +/// See and +/// for an +/// explanation on code points. +/// +/// ## Examples +/// +/// ```gleam +/// > { +/// > let assert #(Ok(a), Ok(b), Ok(c)) = #( +/// > utf_codepoint(97), +/// > utf_codepoint(98), +/// > utf_codepoint(99), +/// > ) +/// > [a, b, c] +/// > } +/// > |> from_utf_codepoints +/// "abc" +/// ``` +/// +@external(erlang, "gleam_stdlib", "utf_codepoint_list_to_string") +@external(javascript, "../gleam_stdlib.mjs", "utf_codepoint_list_to_string") +pub fn from_utf_codepoints(utf_codepoints: List(UtfCodepoint)) -> String + +/// Converts an integer to a `UtfCodepoint`. +/// +/// Returns an `Error` if the integer does not represent a valid UTF codepoint. +/// +pub fn utf_codepoint(value: Int) -> Result(UtfCodepoint, Nil) { + case value { + i if i > 1_114_111 -> Error(Nil) + 65_534 | 65_535 -> Error(Nil) + i if i >= 55_296 && i <= 57_343 -> Error(Nil) + i -> Ok(unsafe_int_to_utf_codepoint(i)) + } +} + +/// Converts an UtfCodepoint to its ordinal code point value. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert [utf_codepoint, ..] = to_utf_codepoints("💜") +/// > utf_codepoint_to_int(utf_codepoint) +/// 128156 +/// ``` +/// +pub fn utf_codepoint_to_int(cp: UtfCodepoint) -> Int { + do_utf_codepoint_to_int(cp) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "utf_codepoint_to_int") +fn do_utf_codepoint_to_int(cp cp: UtfCodepoint) -> Int + +/// Converts a `String` into `Option(String)` where an empty `String` becomes +/// `None`. +/// +/// ## Examples +/// +/// ```gleam +/// > to_option("") +/// None +/// ``` +/// +/// ```gleam +/// > to_option("hats") +/// Some("hats") +/// ``` +/// +pub fn to_option(s: String) -> Option(String) { + case s { + "" -> None + _ -> Some(s) + } +} + +/// Returns the first grapheme cluster in a given `String` and wraps it in a +/// `Result(String, Nil)`. If the `String` is empty, it returns `Error(Nil)`. +/// Otherwise, it returns `Ok(String)`. +/// +/// ## Examples +/// +/// ```gleam +/// > first("") +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > first("icecream") +/// Ok("i") +/// ``` +/// +pub fn first(s: String) -> Result(String, Nil) { + case pop_grapheme(s) { + Ok(#(first, _)) -> Ok(first) + Error(e) -> Error(e) + } +} + +/// Returns the last grapheme cluster in a given `String` and wraps it in a +/// `Result(String, Nil)`. If the `String` is empty, it returns `Error(Nil)`. +/// Otherwise, it returns `Ok(String)`. +/// +/// ## Examples +/// +/// ```gleam +/// > last("") +/// Error(Nil) +/// ``` +/// +/// ```gleam +/// > last("icecream") +/// Ok("m") +/// ``` +/// +pub fn last(s: String) -> Result(String, Nil) { + case pop_grapheme(s) { + Ok(#(first, "")) -> Ok(first) + Ok(#(_, rest)) -> Ok(slice(rest, -1, 1)) + Error(e) -> Error(e) + } +} + +/// Creates a new `String` with the first grapheme in the input `String` +/// converted to uppercase and the remaining graphemes to lowercase. +/// +/// ## Examples +/// +/// ```gleam +/// > capitalise("mamouna") +/// "Mamouna" +/// ``` +/// +pub fn capitalise(s: String) -> String { + case pop_grapheme(s) { + Ok(#(first, rest)) -> append(to: uppercase(first), suffix: lowercase(rest)) + _ -> "" + } +} + +/// Returns a `String` representation of a term in Gleam syntax. +/// +pub fn inspect(term: anything) -> String { + do_inspect(term) + |> string_builder.to_string +} + +@external(erlang, "gleam_stdlib", "inspect") +@external(javascript, "../gleam_stdlib.mjs", "inspect") +fn do_inspect(term term: anything) -> StringBuilder + +/// Returns the number of bytes in a `String`. +/// +/// This function runs in constant time on Erlang and in linear time on +/// JavaScript. +/// +@external(erlang, "erlang", "byte_size") +@external(javascript, "../gleam_stdlib.mjs", "byte_size") +pub fn byte_size(string: String) -> Int diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam new file mode 100644 index 0000000..5792ca8 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam @@ -0,0 +1,298 @@ +import gleam/list + +/// `StringBuilder` is a type used for efficiently building strings. +/// +/// When we append one string to another the strings must be copied to a +/// new location in memory so that they can sit together. This behaviour +/// enables efficient reading of the string but copying can be expensive, +/// especially if we want to join many strings together. +/// +/// `StringBuilder` is different in that it can be joined together in constant time +/// using minimal memory, and then can be efficiently converted to a string +/// using the `to_string` function. +/// +/// On Erlang this type is compatible with Erlang's iodata. On JavaScript this +/// type is compatible with normal strings. +/// +pub type StringBuilder + +/// Create an empty `StringBuilder`. Useful as the start of a pipe chaining many +/// builders together. +/// +pub fn new() -> StringBuilder { + do_from_strings([]) +} + +/// Prepends a `String` onto the start of some `StringBuilder`. +/// +/// Runs in constant time. +/// +pub fn prepend( + to builder: StringBuilder, + prefix prefix: String, +) -> StringBuilder { + append_builder(from_string(prefix), builder) +} + +/// Appends a `String` onto the end of some `StringBuilder`. +/// +/// Runs in constant time. +/// +pub fn append(to builder: StringBuilder, suffix second: String) -> StringBuilder { + append_builder(builder, from_string(second)) +} + +/// Prepends some `StringBuilder` onto the start of another. +/// +/// Runs in constant time. +/// +pub fn prepend_builder( + to builder: StringBuilder, + prefix prefix: StringBuilder, +) -> StringBuilder { + do_append(prefix, builder) +} + +/// Appends some `StringBuilder` onto the end of another. +/// +/// Runs in constant time. +/// +pub fn append_builder( + to builder: StringBuilder, + suffix suffix: StringBuilder, +) -> StringBuilder { + do_append(builder, suffix) +} + +@external(erlang, "gleam_stdlib", "iodata_append") +@external(javascript, "../gleam_stdlib.mjs", "add") +fn do_append(a: StringBuilder, b: StringBuilder) -> StringBuilder + +/// Converts a list of strings into a builder. +/// +/// Runs in constant time. +/// +pub fn from_strings(strings: List(String)) -> StringBuilder { + do_from_strings(strings) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "concat") +fn do_from_strings(a: List(String)) -> StringBuilder + +/// Joins a list of builders into a single builder. +/// +/// Runs in constant time. +/// +pub fn concat(builders: List(StringBuilder)) -> StringBuilder { + do_concat(builders) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "concat") +fn do_concat(a: List(StringBuilder)) -> StringBuilder + +/// Converts a string into a builder. +/// +/// Runs in constant time. +/// +pub fn from_string(string: String) -> StringBuilder { + do_from_string(string) +} + +@external(erlang, "gleam_stdlib", "identity") +@external(javascript, "../gleam_stdlib.mjs", "identity") +fn do_from_string(a: String) -> StringBuilder + +/// Turns an `StringBuilder` into a `String` +/// +/// This function is implemented natively by the virtual machine and is highly +/// optimised. +/// +pub fn to_string(builder: StringBuilder) -> String { + do_to_string(builder) +} + +@external(erlang, "unicode", "characters_to_binary") +@external(javascript, "../gleam_stdlib.mjs", "identity") +fn do_to_string(a: StringBuilder) -> String + +/// Returns the size of the `StringBuilder` in bytes. +/// +pub fn byte_size(builder: StringBuilder) -> Int { + do_byte_size(builder) +} + +@external(erlang, "erlang", "iolist_size") +@external(javascript, "../gleam_stdlib.mjs", "length") +fn do_byte_size(a: StringBuilder) -> Int + +/// Joins the given builders into a new builder separated with the given string +/// +pub fn join(builders: List(StringBuilder), with sep: String) -> StringBuilder { + builders + |> list.intersperse(from_string(sep)) + |> concat +} + +/// Converts a builder to a new builder where the contents have been +/// lowercased. +/// +pub fn lowercase(builder: StringBuilder) -> StringBuilder { + do_lowercase(builder) +} + +@external(erlang, "string", "lowercase") +@external(javascript, "../gleam_stdlib.mjs", "lowercase") +fn do_lowercase(a: StringBuilder) -> StringBuilder + +/// Converts a builder to a new builder where the contents have been +/// uppercased. +/// +pub fn uppercase(builder: StringBuilder) -> StringBuilder { + do_uppercase(builder) +} + +@external(erlang, "string", "uppercase") +@external(javascript, "../gleam_stdlib.mjs", "uppercase") +fn do_uppercase(a: StringBuilder) -> StringBuilder + +/// Converts a builder to a new builder with the contents reversed. +/// +pub fn reverse(builder: StringBuilder) -> StringBuilder { + do_reverse(builder) +} + +@target(erlang) +@external(erlang, "string", "reverse") +fn do_reverse(a: StringBuilder) -> StringBuilder + +@target(javascript) +fn do_reverse(builder: StringBuilder) -> StringBuilder { + builder + |> to_string + |> do_to_graphemes + |> list.reverse + |> from_strings +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "graphemes") +fn do_to_graphemes(string string: String) -> List(String) + +/// Splits a builder on a given pattern into a list of builders. +/// +pub fn split(iodata: StringBuilder, on pattern: String) -> List(StringBuilder) { + do_split(iodata, pattern) +} + +@target(erlang) +type Direction { + All +} + +@target(erlang) +@external(erlang, "string", "split") +fn erl_split(a: StringBuilder, b: String, c: Direction) -> List(StringBuilder) + +@target(erlang) +fn do_split(iodata: StringBuilder, pattern: String) -> List(StringBuilder) { + erl_split(iodata, pattern, All) +} + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "split") +fn do_split( + builder builder: StringBuilder, + pattern pattern: String, +) -> List(StringBuilder) + +/// Replaces all instances of a pattern with a given string substitute. +/// +pub fn replace( + in builder: StringBuilder, + each pattern: String, + with substitute: String, +) -> StringBuilder { + do_replace(builder, pattern, substitute) +} + +@target(erlang) +fn do_replace( + iodata: StringBuilder, + pattern: String, + substitute: String, +) -> StringBuilder { + erl_replace(iodata, pattern, substitute, All) +} + +@target(erlang) +@external(erlang, "string", "replace") +fn erl_replace( + a: StringBuilder, + b: String, + c: String, + d: Direction, +) -> StringBuilder + +@target(javascript) +@external(javascript, "../gleam_stdlib.mjs", "string_replace") +fn do_replace(a: StringBuilder, b: String, c: String) -> StringBuilder + +/// Compares two builders to determine if they have the same textual content. +/// +/// Comparing two iodata using the `==` operator may return `False` even if they +/// have the same content as they may have been build in different ways, so +/// using this function is often preferred. +/// +/// ## Examples +/// +/// ```gleam +/// > from_strings(["a", "b"]) == from_string("ab") +/// False +/// ``` +/// +/// ```gleam +/// > is_equal(from_strings(["a", "b"]), from_string("ab")) +/// True +/// ``` +/// +pub fn is_equal(a: StringBuilder, b: StringBuilder) -> Bool { + do_is_equal(a, b) +} + +@external(erlang, "string", "equal") +@external(javascript, "../gleam_stdlib.mjs", "equal") +fn do_is_equal(a: StringBuilder, b: StringBuilder) -> Bool + +/// Inspects a builder to determine if it is equivalent to an empty string. +/// +/// ## Examples +/// +/// ```gleam +/// > from_string("ok") |> is_empty +/// False +/// ``` +/// +/// ```gleam +/// > from_string("") |> is_empty +/// True +/// ``` +/// +/// ```gleam +/// > from_strings([]) |> is_empty +/// True +/// ``` +/// +pub fn is_empty(builder: StringBuilder) -> Bool { + do_is_empty(builder) +} + +@target(erlang) +@external(erlang, "string", "is_empty") +fn do_is_empty(a: StringBuilder) -> Bool + +@target(javascript) +fn do_is_empty(builder: StringBuilder) -> Bool { + from_string("") == builder +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam new file mode 100644 index 0000000..11f6ea6 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam @@ -0,0 +1,462 @@ +//// Utilities for working with URIs +//// +//// This module provides functions for working with URIs (for example, parsing +//// URIs or encoding query strings). The functions in this module are implemented +//// according to [RFC 3986](https://tools.ietf.org/html/rfc3986). +//// +//// Query encoding (Form encoding) is defined in the +//// [W3C specification](https://www.w3.org/TR/html52/sec-forms.html#urlencoded-form-data). + +import gleam/int +import gleam/list +import gleam/option.{type Option, None, Some} +import gleam/string +import gleam/string_builder.{type StringBuilder} +@target(javascript) +import gleam/pair +@target(javascript) +import gleam/regex +@target(javascript) +import gleam/result + +/// Type representing holding the parsed components of an URI. +/// All components of a URI are optional, except the path. +/// +pub type Uri { + Uri( + scheme: Option(String), + userinfo: Option(String), + host: Option(String), + port: Option(Int), + path: String, + query: Option(String), + fragment: Option(String), + ) +} + +/// Parses a compliant URI string into the `Uri` Type. +/// If the string is not a valid URI string then an error is returned. +/// +/// The opposite operation is `uri.to_string`. +/// +/// ## Examples +/// +/// ```gleam +/// > parse("https://example.com:1234/a/b?query=true#fragment") +/// Ok( +/// Uri( +/// scheme: Some("https"), +/// userinfo: None, +/// host: Some("example.com"), +/// port: Some(1234), +/// path: "/a/b", +/// query: Some("query=true"), +/// fragment: Some("fragment") +/// ) +/// ) +/// ``` +/// +pub fn parse(uri_string: String) -> Result(Uri, Nil) { + do_parse(uri_string) +} + +@target(erlang) +@external(erlang, "gleam_stdlib", "uri_parse") +fn do_parse(a: String) -> Result(Uri, Nil) + +@target(javascript) +fn do_parse(uri_string: String) -> Result(Uri, Nil) { + // From https://tools.ietf.org/html/rfc3986#appendix-B + let pattern = + // 12 3 4 5 6 7 8 + "^(([a-z][a-z0-9\\+\\-\\.]*):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#.*)?" + let matches = + pattern + |> regex_submatches(uri_string) + |> pad_list(8) + + let #(scheme, authority, path, query, fragment) = case matches { + [ + _scheme_with_colon, + scheme, + authority_with_slashes, + _authority, + path, + query_with_question_mark, + _query, + fragment, + ] -> #( + scheme, + authority_with_slashes, + path, + query_with_question_mark, + fragment, + ) + _ -> #(None, None, None, None, None) + } + + let scheme = noneify_empty_string(scheme) + let path = option.unwrap(path, "") + let query = noneify_query(query) + let #(userinfo, host, port) = split_authority(authority) + let fragment = + fragment + |> option.to_result(Nil) + |> result.try(string.pop_grapheme) + |> result.map(pair.second) + |> option.from_result + let scheme = + scheme + |> noneify_empty_string + |> option.map(string.lowercase) + Ok(Uri( + scheme: scheme, + userinfo: userinfo, + host: host, + port: port, + path: path, + query: query, + fragment: fragment, + )) +} + +@target(javascript) +fn regex_submatches(pattern: String, string: String) -> List(Option(String)) { + pattern + |> regex.compile(regex.Options(case_insensitive: True, multi_line: False)) + |> result.nil_error + |> result.map(regex.scan(_, string)) + |> result.try(list.first) + |> result.map(fn(m: regex.Match) { m.submatches }) + |> result.unwrap([]) +} + +@target(javascript) +fn noneify_query(x: Option(String)) -> Option(String) { + case x { + None -> None + Some(x) -> + case string.pop_grapheme(x) { + Ok(#("?", query)) -> Some(query) + _ -> None + } + } +} + +@target(javascript) +fn noneify_empty_string(x: Option(String)) -> Option(String) { + case x { + Some("") | None -> None + Some(_) -> x + } +} + +// Split an authority into its userinfo, host and port parts. +@target(javascript) +fn split_authority( + authority: Option(String), +) -> #(Option(String), Option(String), Option(Int)) { + case option.unwrap(authority, "") { + "" -> #(None, None, None) + "//" -> #(None, Some(""), None) + authority -> { + let matches = + "^(//)?((.*)@)?(\\[[a-zA-Z0-9:.]*\\]|[^:]*)(:(\\d*))?" + |> regex_submatches(authority) + |> pad_list(6) + case matches { + [_, _, userinfo, host, _, port] -> { + let userinfo = noneify_empty_string(userinfo) + let host = noneify_empty_string(host) + let port = + port + |> option.unwrap("") + |> int.parse + |> option.from_result + #(userinfo, host, port) + } + _ -> #(None, None, None) + } + } + } +} + +@target(javascript) +fn pad_list(list: List(Option(a)), size: Int) -> List(Option(a)) { + list + |> list.append(list.repeat(None, extra_required(list, size))) +} + +@target(javascript) +fn extra_required(list: List(a), remaining: Int) -> Int { + case list { + _ if remaining == 0 -> 0 + [] -> remaining + [_, ..xs] -> extra_required(xs, remaining - 1) + } +} + +/// Parses an urlencoded query string into a list of key value pairs. +/// Returns an error for invalid encoding. +/// +/// The opposite operation is `uri.query_to_string`. +/// +/// ## Examples +/// +/// ```gleam +/// > parse_query("a=1&b=2") +/// Ok([#("a", "1"), #("b", "2")]) +/// ``` +/// +pub fn parse_query(query: String) -> Result(List(#(String, String)), Nil) { + do_parse_query(query) +} + +@external(erlang, "gleam_stdlib", "parse_query") +@external(javascript, "../gleam_stdlib.mjs", "parse_query") +fn do_parse_query(a: String) -> Result(List(#(String, String)), Nil) + +/// Encodes a list of key value pairs as a URI query string. +/// +/// The opposite operation is `uri.parse_query`. +/// +/// ## Examples +/// +/// ```gleam +/// > query_to_string([#("a", "1"), #("b", "2")]) +/// "a=1&b=2" +/// ``` +/// +pub fn query_to_string(query: List(#(String, String))) -> String { + query + |> list.map(query_pair) + |> list.intersperse(string_builder.from_string("&")) + |> string_builder.concat + |> string_builder.to_string +} + +fn query_pair(pair: #(String, String)) -> StringBuilder { + string_builder.from_strings([ + percent_encode(pair.0), + "=", + percent_encode(pair.1), + ]) +} + +/// Encodes a string into a percent encoded representation. +/// +/// ## Examples +/// +/// ```gleam +/// > percent_encode("100% great") +/// "100%25%20great" +/// ``` +/// +pub fn percent_encode(value: String) -> String { + do_percent_encode(value) +} + +@external(erlang, "gleam_stdlib", "percent_encode") +@external(javascript, "../gleam_stdlib.mjs", "percent_encode") +fn do_percent_encode(a: String) -> String + +/// Decodes a percent encoded string. +/// +/// ## Examples +/// +/// ```gleam +/// > percent_decode("100%25+great") +/// Ok("100% great") +/// ``` +/// +pub fn percent_decode(value: String) -> Result(String, Nil) { + do_percent_decode(value) +} + +@external(erlang, "gleam_stdlib", "percent_decode") +@external(javascript, "../gleam_stdlib.mjs", "percent_decode") +fn do_percent_decode(a: String) -> Result(String, Nil) + +fn do_remove_dot_segments( + input: List(String), + accumulator: List(String), +) -> List(String) { + case input { + [] -> list.reverse(accumulator) + [segment, ..rest] -> { + let accumulator = case segment, accumulator { + "", accumulator -> accumulator + ".", accumulator -> accumulator + "..", [] -> [] + "..", [_, ..accumulator] -> accumulator + segment, accumulator -> [segment, ..accumulator] + } + do_remove_dot_segments(rest, accumulator) + } + } +} + +fn remove_dot_segments(input: List(String)) -> List(String) { + do_remove_dot_segments(input, []) +} + +/// Splits the path section of a URI into it's constituent segments. +/// +/// Removes empty segments and resolves dot-segments as specified in +/// [section 5.2](https://www.ietf.org/rfc/rfc3986.html#section-5.2) of the RFC. +/// +/// ## Examples +/// +/// ```gleam +/// > path_segments("/users/1") +/// ["users" ,"1"] +/// ``` +/// +pub fn path_segments(path: String) -> List(String) { + remove_dot_segments(string.split(path, "/")) +} + +/// Encodes a `Uri` value as a URI string. +/// +/// The opposite operation is `uri.parse`. +/// +/// ## Examples +/// +/// ```gleam +/// > let uri = Uri(Some("http"), None, Some("example.com"), ...) +/// > to_string(uri) +/// "http://example.com" +/// ``` +/// +pub fn to_string(uri: Uri) -> String { + let parts = case uri.fragment { + Some(fragment) -> ["#", fragment] + _ -> [] + } + let parts = case uri.query { + Some(query) -> ["?", query, ..parts] + _ -> parts + } + let parts = [uri.path, ..parts] + let parts = case uri.host, string.starts_with(uri.path, "/") { + Some(host), False if host != "" -> ["/", ..parts] + _, _ -> parts + } + let parts = case uri.host, uri.port { + Some(_), Some(port) -> [":", int.to_string(port), ..parts] + _, _ -> parts + } + let parts = case uri.scheme, uri.userinfo, uri.host { + Some(s), Some(u), Some(h) -> [s, "://", u, "@", h, ..parts] + Some(s), None, Some(h) -> [s, "://", h, ..parts] + Some(s), Some(_), None | Some(s), None, None -> [s, ":", ..parts] + None, None, Some(h) -> ["//", h, ..parts] + _, _, _ -> parts + } + string.concat(parts) +} + +/// Fetches the origin of a URI. +/// +/// Returns the origin of a uri as defined in +/// [RFC 6454](https://tools.ietf.org/html/rfc6454) +/// +/// The supported URI schemes are `http` and `https`. +/// URLs without a scheme will return `Error`. +/// +/// ## Examples +/// +/// ```gleam +/// > let assert Ok(uri) = parse("http://example.com/path?foo#bar") +/// > origin(uri) +/// Ok("http://example.com") +/// ``` +/// +pub fn origin(uri: Uri) -> Result(String, Nil) { + let Uri(scheme: scheme, host: host, port: port, ..) = uri + case scheme { + Some("https") if port == Some(443) -> { + let origin = Uri(scheme, None, host, None, "", None, None) + Ok(to_string(origin)) + } + Some("http") if port == Some(80) -> { + let origin = Uri(scheme, None, host, None, "", None, None) + Ok(to_string(origin)) + } + Some(s) if s == "http" || s == "https" -> { + let origin = Uri(scheme, None, host, port, "", None, None) + Ok(to_string(origin)) + } + _ -> Error(Nil) + } +} + +fn drop_last(elements: List(a)) -> List(a) { + list.take(from: elements, up_to: list.length(elements) - 1) +} + +fn join_segments(segments: List(String)) -> String { + string.join(["", ..segments], "/") +} + +/// Resolves a URI with respect to the given base URI. +/// +/// The base URI must be an absolute URI or this function will return an error. +/// The algorithm for merging uris is described in +/// [RFC 3986](https://tools.ietf.org/html/rfc3986#section-5.2). +/// +pub fn merge(base: Uri, relative: Uri) -> Result(Uri, Nil) { + case base { + Uri(scheme: Some(_), host: Some(_), ..) -> + case relative { + Uri(host: Some(_), ..) -> { + let path = + string.split(relative.path, "/") + |> remove_dot_segments() + |> join_segments() + let resolved = + Uri( + option.or(relative.scheme, base.scheme), + None, + relative.host, + option.or(relative.port, base.port), + path, + relative.query, + relative.fragment, + ) + Ok(resolved) + } + _ -> { + let #(new_path, new_query) = case relative.path { + "" -> #(base.path, option.or(relative.query, base.query)) + _ -> { + let path_segments = case string.starts_with(relative.path, "/") { + True -> string.split(relative.path, "/") + False -> + string.split(base.path, "/") + |> drop_last() + |> list.append(string.split(relative.path, "/")) + } + let path = + path_segments + |> remove_dot_segments() + |> join_segments() + #(path, relative.query) + } + } + let resolved = + Uri( + base.scheme, + None, + base.host, + base.port, + new_path, + new_query, + relative.fragment, + ) + Ok(resolved) + } + } + _ -> Error(Nil) + } +} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl new file mode 100644 index 0000000..65bc3f6 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl @@ -0,0 +1,20 @@ +-module(gleam@base). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]). + +-spec encode64(bitstring(), boolean()) -> binary(). +encode64(Input, Padding) -> + gleam@bit_array:base64_encode(Input, Padding). + +-spec decode64(binary()) -> {ok, bitstring()} | {error, nil}. +decode64(Encoded) -> + gleam@bit_array:base64_decode(Encoded). + +-spec url_encode64(bitstring(), boolean()) -> binary(). +url_encode64(Input, Padding) -> + gleam@bit_array:base64_url_encode(Input, Padding). + +-spec url_decode64(binary()) -> {ok, bitstring()} | {error, nil}. +url_decode64(Encoded) -> + gleam@bit_array:base64_url_decode(Encoded). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl new file mode 100644 index 0000000..ba18dfa --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl @@ -0,0 +1,102 @@ +-module(gleam@bit_array). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, byte_size/1, slice/3, is_utf8/1, to_string/1, concat/1, append/2, base64_encode/2, base64_decode/1, base64_url_encode/2, base64_url_decode/1, base16_encode/1, base16_decode/1]). + +-spec from_string(binary()) -> bitstring(). +from_string(X) -> + gleam_stdlib:identity(X). + +-spec byte_size(bitstring()) -> integer(). +byte_size(X) -> + erlang:byte_size(X). + +-spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | + {error, nil}. +slice(String, Position, Length) -> + gleam_stdlib:bit_array_slice(String, Position, Length). + +-spec do_is_utf8(bitstring()) -> boolean(). +do_is_utf8(Bits) -> + case Bits of + <<>> -> + true; + + <<_/utf8, Rest/binary>> -> + do_is_utf8(Rest); + + _ -> + false + end. + +-spec is_utf8(bitstring()) -> boolean(). +is_utf8(Bits) -> + do_is_utf8(Bits). + +-spec do_to_string(bitstring()) -> {ok, binary()} | {error, nil}. +do_to_string(Bits) -> + case is_utf8(Bits) of + true -> + {ok, gleam_stdlib:identity(Bits)}; + + false -> + {error, nil} + end. + +-spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. +to_string(Bits) -> + do_to_string(Bits). + +-spec concat(list(bitstring())) -> bitstring(). +concat(Bit_arrays) -> + gleam_stdlib:bit_array_concat(Bit_arrays). + +-spec append(bitstring(), bitstring()) -> bitstring(). +append(First, Second) -> + gleam_stdlib:bit_array_concat([First, Second]). + +-spec base64_encode(bitstring(), boolean()) -> binary(). +base64_encode(Input, Padding) -> + Encoded = base64:encode(Input), + case Padding of + true -> + Encoded; + + false -> + gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>) + end. + +-spec base64_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base64_decode(Encoded) -> + Padded = case erlang:byte_size(gleam_stdlib:identity(Encoded)) rem 4 of + 0 -> + Encoded; + + N -> + gleam@string:append( + Encoded, + gleam@string:repeat(<<"="/utf8>>, 4 - N) + ) + end, + gleam_stdlib:base_decode64(Padded). + +-spec base64_url_encode(bitstring(), boolean()) -> binary(). +base64_url_encode(Input, Padding) -> + _pipe = base64_encode(Input, Padding), + _pipe@1 = gleam@string:replace(_pipe, <<"+"/utf8>>, <<"-"/utf8>>), + gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"_"/utf8>>). + +-spec base64_url_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base64_url_decode(Encoded) -> + _pipe = Encoded, + _pipe@1 = gleam@string:replace(_pipe, <<"-"/utf8>>, <<"+"/utf8>>), + _pipe@2 = gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<"/"/utf8>>), + base64_decode(_pipe@2). + +-spec base16_encode(bitstring()) -> binary(). +base16_encode(Input) -> + binary:encode_hex(Input). + +-spec base16_decode(binary()) -> {ok, bitstring()} | {error, nil}. +base16_decode(Input) -> + gleam_stdlib:base16_decode(Input). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl new file mode 100644 index 0000000..284c6d4 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl @@ -0,0 +1,66 @@ +-module(gleam@bit_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, prepend/2, append/2, prepend_builder/2, append_builder/2, prepend_string/2, append_string/2, concat/1, concat_bit_strings/1, from_string/1, from_string_builder/1, from_bit_string/1, to_bit_string/1, byte_size/1]). + +-spec new() -> gleam@bytes_builder:bytes_builder(). +new() -> + gleam@bytes_builder:new(). + +-spec prepend(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). +prepend(To, Prefix) -> + gleam@bytes_builder:prepend(To, Prefix). + +-spec append(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). +append(To, Suffix) -> + gleam@bytes_builder:append(To, Suffix). + +-spec prepend_builder( + gleam@bytes_builder:bytes_builder(), + gleam@bytes_builder:bytes_builder() +) -> gleam@bytes_builder:bytes_builder(). +prepend_builder(To, Prefix) -> + gleam@bytes_builder:prepend_builder(To, Prefix). + +-spec append_builder( + gleam@bytes_builder:bytes_builder(), + gleam@bytes_builder:bytes_builder() +) -> gleam@bytes_builder:bytes_builder(). +append_builder(First, Second) -> + gleam_stdlib:iodata_append(First, Second). + +-spec prepend_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). +prepend_string(To, Prefix) -> + gleam@bytes_builder:prepend_string(To, Prefix). + +-spec append_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). +append_string(To, Suffix) -> + gleam@bytes_builder:append_string(To, Suffix). + +-spec concat(list(gleam@bytes_builder:bytes_builder())) -> gleam@bytes_builder:bytes_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec concat_bit_strings(list(bitstring())) -> gleam@bytes_builder:bytes_builder(). +concat_bit_strings(Bits) -> + gleam_stdlib:identity(Bits). + +-spec from_string(binary()) -> gleam@bytes_builder:bytes_builder(). +from_string(String) -> + gleam_stdlib:wrap_list(String). + +-spec from_string_builder(gleam@string_builder:string_builder()) -> gleam@bytes_builder:bytes_builder(). +from_string_builder(Builder) -> + gleam_stdlib:wrap_list(Builder). + +-spec from_bit_string(bitstring()) -> gleam@bytes_builder:bytes_builder(). +from_bit_string(Bits) -> + gleam_stdlib:wrap_list(Bits). + +-spec to_bit_string(gleam@bytes_builder:bytes_builder()) -> bitstring(). +to_bit_string(Builder) -> + erlang:list_to_bitstring(Builder). + +-spec byte_size(gleam@bytes_builder:bytes_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl new file mode 100644 index 0000000..7dabaa3 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl @@ -0,0 +1,33 @@ +-module(gleam@bit_string). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from_string/1, byte_size/1, append/2, slice/3, is_utf8/1, to_string/1, concat/1]). + +-spec from_string(binary()) -> bitstring(). +from_string(X) -> + gleam_stdlib:identity(X). + +-spec byte_size(bitstring()) -> integer(). +byte_size(X) -> + erlang:byte_size(X). + +-spec append(bitstring(), bitstring()) -> bitstring(). +append(First, Second) -> + gleam@bit_array:append(First, Second). + +-spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | + {error, nil}. +slice(String, Position, Length) -> + gleam_stdlib:bit_array_slice(String, Position, Length). + +-spec is_utf8(bitstring()) -> boolean(). +is_utf8(Bits) -> + gleam@bit_array:is_utf8(Bits). + +-spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. +to_string(Bits) -> + gleam@bit_array:to_string(Bits). + +-spec concat(list(bitstring())) -> bitstring(). +concat(Bit_strings) -> + gleam_stdlib:bit_array_concat(Bit_strings). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl new file mode 100644 index 0000000..cd55358 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl @@ -0,0 +1,162 @@ +-module(gleam@bool). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export(['and'/2, 'or'/2, negate/1, nor/2, nand/2, exclusive_or/2, exclusive_nor/2, compare/2, max/2, min/2, to_int/1, to_string/1, guard/3, lazy_guard/3]). + +-spec 'and'(boolean(), boolean()) -> boolean(). +'and'(A, B) -> + A andalso B. + +-spec 'or'(boolean(), boolean()) -> boolean(). +'or'(A, B) -> + A orelse B. + +-spec negate(boolean()) -> boolean(). +negate(Bool) -> + case Bool of + true -> + false; + + false -> + true + end. + +-spec nor(boolean(), boolean()) -> boolean(). +nor(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + false; + + {true, false} -> + false; + + {true, true} -> + false + end. + +-spec nand(boolean(), boolean()) -> boolean(). +nand(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + true; + + {true, false} -> + true; + + {true, true} -> + false + end. + +-spec exclusive_or(boolean(), boolean()) -> boolean(). +exclusive_or(A, B) -> + case {A, B} of + {false, false} -> + false; + + {false, true} -> + true; + + {true, false} -> + true; + + {true, true} -> + false + end. + +-spec exclusive_nor(boolean(), boolean()) -> boolean(). +exclusive_nor(A, B) -> + case {A, B} of + {false, false} -> + true; + + {false, true} -> + false; + + {true, false} -> + false; + + {true, true} -> + true + end. + +-spec compare(boolean(), boolean()) -> gleam@order:order(). +compare(A, B) -> + case {A, B} of + {true, true} -> + eq; + + {true, false} -> + gt; + + {false, false} -> + eq; + + {false, true} -> + lt + end. + +-spec max(boolean(), boolean()) -> boolean(). +max(A, B) -> + case A of + true -> + true; + + false -> + B + end. + +-spec min(boolean(), boolean()) -> boolean(). +min(A, B) -> + case A of + false -> + false; + + true -> + B + end. + +-spec to_int(boolean()) -> integer(). +to_int(Bool) -> + case Bool of + false -> + 0; + + true -> + 1 + end. + +-spec to_string(boolean()) -> binary(). +to_string(Bool) -> + case Bool of + false -> + <<"False"/utf8>>; + + true -> + <<"True"/utf8>> + end. + +-spec guard(boolean(), DDZ, fun(() -> DDZ)) -> DDZ. +guard(Requirement, Consequence, Alternative) -> + case Requirement of + true -> + Consequence; + + false -> + Alternative() + end. + +-spec lazy_guard(boolean(), fun(() -> DEA), fun(() -> DEA)) -> DEA. +lazy_guard(Requirement, Consequence, Alternative) -> + case Requirement of + true -> + Consequence(); + + false -> + Alternative() + end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl new file mode 100644 index 0000000..2f6dd93 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl @@ -0,0 +1,87 @@ +-module(gleam@bytes_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([append_builder/2, prepend_builder/2, concat/1, new/0, from_string/1, prepend_string/2, append_string/2, from_string_builder/1, from_bit_array/1, prepend/2, append/2, concat_bit_arrays/1, to_bit_array/1, byte_size/1]). +-export_type([bytes_builder/0]). + +-opaque bytes_builder() :: {bytes, bitstring()} | + {text, gleam@string_builder:string_builder()} | + {many, list(bytes_builder())}. + +-spec append_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). +append_builder(First, Second) -> + gleam_stdlib:iodata_append(First, Second). + +-spec prepend_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). +prepend_builder(Second, First) -> + gleam_stdlib:iodata_append(First, Second). + +-spec concat(list(bytes_builder())) -> bytes_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec new() -> bytes_builder(). +new() -> + gleam_stdlib:identity([]). + +-spec from_string(binary()) -> bytes_builder(). +from_string(String) -> + gleam_stdlib:wrap_list(String). + +-spec prepend_string(bytes_builder(), binary()) -> bytes_builder(). +prepend_string(Second, First) -> + gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). + +-spec append_string(bytes_builder(), binary()) -> bytes_builder(). +append_string(First, Second) -> + gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). + +-spec from_string_builder(gleam@string_builder:string_builder()) -> bytes_builder(). +from_string_builder(Builder) -> + gleam_stdlib:wrap_list(Builder). + +-spec from_bit_array(bitstring()) -> bytes_builder(). +from_bit_array(Bits) -> + gleam_stdlib:wrap_list(Bits). + +-spec prepend(bytes_builder(), bitstring()) -> bytes_builder(). +prepend(Second, First) -> + gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). + +-spec append(bytes_builder(), bitstring()) -> bytes_builder(). +append(First, Second) -> + gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). + +-spec concat_bit_arrays(list(bitstring())) -> bytes_builder(). +concat_bit_arrays(Bits) -> + gleam_stdlib:identity(Bits). + +-spec to_list(list(list(bytes_builder())), list(bitstring())) -> list(bitstring()). +to_list(Stack, Acc) -> + case Stack of + [] -> + Acc; + + [[] | Remaining_stack] -> + to_list(Remaining_stack, Acc); + + [[{bytes, Bits} | Rest] | Remaining_stack@1] -> + to_list([Rest | Remaining_stack@1], [Bits | Acc]); + + [[{text, Builder} | Rest@1] | Remaining_stack@2] -> + Bits@1 = gleam_stdlib:identity( + gleam@string_builder:to_string(Builder) + ), + to_list([Rest@1 | Remaining_stack@2], [Bits@1 | Acc]); + + [[{many, Builders} | Rest@2] | Remaining_stack@3] -> + to_list([Builders, Rest@2 | Remaining_stack@3], Acc) + end. + +-spec to_bit_array(bytes_builder()) -> bitstring(). +to_bit_array(Builder) -> + erlang:list_to_bitstring(Builder). + +-spec byte_size(bytes_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl new file mode 100644 index 0000000..44b89ea --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl @@ -0,0 +1,97 @@ +-module(gleam@dict). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). +-export_type([dict/2]). + +-type dict(KS, KT) :: any() | {gleam_phantom, KS, KT}. + +-spec size(dict(any(), any())) -> integer(). +size(Dict) -> + maps:size(Dict). + +-spec to_list(dict(LC, LD)) -> list({LC, LD}). +to_list(Dict) -> + maps:to_list(Dict). + +-spec from_list(list({LM, LN})) -> dict(LM, LN). +from_list(List) -> + maps:from_list(List). + +-spec has_key(dict(LW, any()), LW) -> boolean(). +has_key(Dict, Key) -> + maps:is_key(Key, Dict). + +-spec new() -> dict(any(), any()). +new() -> + maps:new(). + +-spec get(dict(MM, MN), MM) -> {ok, MN} | {error, nil}. +get(From, Get) -> + gleam_stdlib:map_get(From, Get). + +-spec insert(dict(MY, MZ), MY, MZ) -> dict(MY, MZ). +insert(Dict, Key, Value) -> + maps:put(Key, Value, Dict). + +-spec map_values(dict(NK, NL), fun((NK, NL) -> NO)) -> dict(NK, NO). +map_values(Dict, Fun) -> + maps:map(Fun, Dict). + +-spec keys(dict(NY, any())) -> list(NY). +keys(Dict) -> + maps:keys(Dict). + +-spec values(dict(any(), OJ)) -> list(OJ). +values(Dict) -> + maps:values(Dict). + +-spec filter(dict(OS, OT), fun((OS, OT) -> boolean())) -> dict(OS, OT). +filter(Dict, Predicate) -> + maps:filter(Predicate, Dict). + +-spec take(dict(PE, PF), list(PE)) -> dict(PE, PF). +take(Dict, Desired_keys) -> + maps:with(Desired_keys, Dict). + +-spec merge(dict(PS, PT), dict(PS, PT)) -> dict(PS, PT). +merge(Dict, New_entries) -> + maps:merge(Dict, New_entries). + +-spec delete(dict(QI, QJ), QI) -> dict(QI, QJ). +delete(Dict, Key) -> + maps:remove(Key, Dict). + +-spec drop(dict(QU, QV), list(QU)) -> dict(QU, QV). +drop(Dict, Disallowed_keys) -> + case Disallowed_keys of + [] -> + Dict; + + [X | Xs] -> + drop(delete(Dict, X), Xs) + end. + +-spec update(dict(RB, RC), RB, fun((gleam@option:option(RC)) -> RC)) -> dict(RB, RC). +update(Dict, Key, Fun) -> + _pipe = Dict, + _pipe@1 = get(_pipe, Key), + _pipe@2 = gleam@option:from_result(_pipe@1), + _pipe@3 = Fun(_pipe@2), + insert(Dict, Key, _pipe@3). + +-spec do_fold(list({RI, RJ}), RL, fun((RL, RI, RJ) -> RL)) -> RL. +do_fold(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [{K, V} | Rest] -> + do_fold(Rest, Fun(Initial, K, V), Fun) + end. + +-spec fold(dict(RM, RN), RQ, fun((RQ, RM, RN) -> RQ)) -> RQ. +fold(Dict, Initial, Fun) -> + _pipe = Dict, + _pipe@1 = to_list(_pipe), + do_fold(_pipe@1, Initial, Fun). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl new file mode 100644 index 0000000..38f4b4e --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl @@ -0,0 +1,808 @@ +-module(gleam@dynamic). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([from/1, unsafe_coerce/1, dynamic/1, bit_array/1, bit_string/1, classify/1, int/1, float/1, bool/1, shallow_list/1, optional/1, any/1, decode1/2, result/2, list/1, string/1, field/2, optional_field/2, element/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, dict/2, map/2, decode2/3, decode3/4, decode4/5, decode5/6, decode6/7, decode7/8, decode8/9, decode9/10]). +-export_type([dynamic_/0, decode_error/0, unknown_tuple/0]). + +-type dynamic_() :: any(). + +-type decode_error() :: {decode_error, binary(), binary(), list(binary())}. + +-type unknown_tuple() :: any(). + +-spec from(any()) -> dynamic_(). +from(A) -> + gleam_stdlib:identity(A). + +-spec unsafe_coerce(dynamic_()) -> any(). +unsafe_coerce(A) -> + gleam_stdlib:identity(A). + +-spec dynamic(dynamic_()) -> {ok, dynamic_()} | {error, list(decode_error())}. +dynamic(Value) -> + {ok, Value}. + +-spec bit_array(dynamic_()) -> {ok, bitstring()} | {error, list(decode_error())}. +bit_array(Data) -> + gleam_stdlib:decode_bit_array(Data). + +-spec bit_string(dynamic_()) -> {ok, bitstring()} | + {error, list(decode_error())}. +bit_string(Data) -> + bit_array(Data). + +-spec put_expected(decode_error(), binary()) -> decode_error(). +put_expected(Error, Expected) -> + erlang:setelement(2, Error, Expected). + +-spec classify(dynamic_()) -> binary(). +classify(Data) -> + gleam_stdlib:classify_dynamic(Data). + +-spec int(dynamic_()) -> {ok, integer()} | {error, list(decode_error())}. +int(Data) -> + gleam_stdlib:decode_int(Data). + +-spec float(dynamic_()) -> {ok, float()} | {error, list(decode_error())}. +float(Data) -> + gleam_stdlib:decode_float(Data). + +-spec bool(dynamic_()) -> {ok, boolean()} | {error, list(decode_error())}. +bool(Data) -> + gleam_stdlib:decode_bool(Data). + +-spec shallow_list(dynamic_()) -> {ok, list(dynamic_())} | + {error, list(decode_error())}. +shallow_list(Value) -> + gleam_stdlib:decode_list(Value). + +-spec optional(fun((dynamic_()) -> {ok, DZX} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, + gleam@option:option(DZX)} | + {error, list(decode_error())}). +optional(Decode) -> + fun(Value) -> gleam_stdlib:decode_option(Value, Decode) end. + +-spec at_least_decode_tuple_error(integer(), dynamic_()) -> {ok, any()} | + {error, list(decode_error())}. +at_least_decode_tuple_error(Size, Data) -> + S = case Size of + 1 -> + <<""/utf8>>; + + _ -> + <<"s"/utf8>> + end, + Error = begin + _pipe = [<<"Tuple of at least "/utf8>>, + gleam@int:to_string(Size), + <<" element"/utf8>>, + S], + _pipe@1 = gleam@string_builder:from_strings(_pipe), + _pipe@2 = gleam@string_builder:to_string(_pipe@1), + {decode_error, _pipe@2, classify(Data), []} + end, + {error, [Error]}. + +-spec any(list(fun((dynamic_()) -> {ok, EEE} | {error, list(decode_error())}))) -> fun((dynamic_()) -> {ok, + EEE} | + {error, list(decode_error())}). +any(Decoders) -> + fun(Data) -> case Decoders of + [] -> + {error, + [{decode_error, <<"another type"/utf8>>, classify(Data), []}]}; + + [Decoder | Decoders@1] -> + case Decoder(Data) of + {ok, Decoded} -> + {ok, Decoded}; + + {error, _} -> + (any(Decoders@1))(Data) + end + end end. + +-spec all_errors({ok, any()} | {error, list(decode_error())}) -> list(decode_error()). +all_errors(Result) -> + case Result of + {ok, _} -> + []; + + {error, Errors} -> + Errors + end. + +-spec decode1( + fun((EEI) -> EEJ), + fun((dynamic_()) -> {ok, EEI} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EEJ} | {error, list(decode_error())}). +decode1(Constructor, T1) -> + fun(Value) -> case T1(Value) of + {ok, A} -> + {ok, Constructor(A)}; + + A@1 -> + {error, all_errors(A@1)} + end end. + +-spec push_path(decode_error(), any()) -> decode_error(). +push_path(Error, Name) -> + Name@1 = from(Name), + Decoder = any( + [fun string/1, + fun(X) -> gleam@result:map(int(X), fun gleam@int:to_string/1) end] + ), + Name@3 = case Decoder(Name@1) of + {ok, Name@2} -> + Name@2; + + {error, _} -> + _pipe = [<<"<"/utf8>>, classify(Name@1), <<">"/utf8>>], + _pipe@1 = gleam@string_builder:from_strings(_pipe), + gleam@string_builder:to_string(_pipe@1) + end, + erlang:setelement(4, Error, [Name@3 | erlang:element(4, Error)]). + +-spec result( + fun((dynamic_()) -> {ok, DZL} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, DZN} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {ok, DZL} | {error, DZN}} | + {error, list(decode_error())}). +result(Decode_ok, Decode_error) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_result(Value), + fun(Inner_result) -> case Inner_result of + {ok, Raw} -> + gleam@result:'try'( + begin + _pipe = Decode_ok(Raw), + map_errors( + _pipe, + fun(_capture) -> + push_path(_capture, <<"ok"/utf8>>) + end + ) + end, + fun(Value@1) -> {ok, {ok, Value@1}} end + ); + + {error, Raw@1} -> + gleam@result:'try'( + begin + _pipe@1 = Decode_error(Raw@1), + map_errors( + _pipe@1, + fun(_capture@1) -> + push_path(_capture@1, <<"error"/utf8>>) + end + ) + end, + fun(Value@2) -> {ok, {error, Value@2}} end + ) + end end + ) + end. + +-spec list(fun((dynamic_()) -> {ok, DZS} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, + list(DZS)} | + {error, list(decode_error())}). +list(Decoder_type) -> + fun(Dynamic) -> + gleam@result:'try'(shallow_list(Dynamic), fun(List) -> _pipe = List, + _pipe@1 = gleam@list:try_map(_pipe, Decoder_type), + map_errors( + _pipe@1, + fun(_capture) -> push_path(_capture, <<"*"/utf8>>) end + ) end) + end. + +-spec map_errors( + {ok, DYG} | {error, list(decode_error())}, + fun((decode_error()) -> decode_error()) +) -> {ok, DYG} | {error, list(decode_error())}. +map_errors(Result, F) -> + gleam@result:map_error( + Result, + fun(_capture) -> gleam@list:map(_capture, F) end + ). + +-spec decode_string(dynamic_()) -> {ok, binary()} | + {error, list(decode_error())}. +decode_string(Data) -> + _pipe = bit_array(Data), + _pipe@1 = map_errors( + _pipe, + fun(_capture) -> put_expected(_capture, <<"String"/utf8>>) end + ), + gleam@result:'try'( + _pipe@1, + fun(Raw) -> case gleam@bit_array:to_string(Raw) of + {ok, String} -> + {ok, String}; + + {error, nil} -> + {error, + [{decode_error, + <<"String"/utf8>>, + <<"BitArray"/utf8>>, + []}]} + end end + ). + +-spec string(dynamic_()) -> {ok, binary()} | {error, list(decode_error())}. +string(Data) -> + decode_string(Data). + +-spec field( + any(), + fun((dynamic_()) -> {ok, EAH} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EAH} | {error, list(decode_error())}). +field(Name, Inner_type) -> + fun(Value) -> + Missing_field_error = {decode_error, + <<"field"/utf8>>, + <<"nothing"/utf8>>, + []}, + gleam@result:'try'( + gleam_stdlib:decode_field(Value, Name), + fun(Maybe_inner) -> _pipe = Maybe_inner, + _pipe@1 = gleam@option:to_result(_pipe, [Missing_field_error]), + _pipe@2 = gleam@result:'try'(_pipe@1, Inner_type), + map_errors( + _pipe@2, + fun(_capture) -> push_path(_capture, Name) end + ) end + ) + end. + +-spec optional_field( + any(), + fun((dynamic_()) -> {ok, EAL} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@option:option(EAL)} | + {error, list(decode_error())}). +optional_field(Name, Inner_type) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_field(Value, Name), + fun(Maybe_inner) -> case Maybe_inner of + none -> + {ok, none}; + + {some, Dynamic_inner} -> + _pipe = Dynamic_inner, + _pipe@1 = gleam_stdlib:decode_option(_pipe, Inner_type), + map_errors( + _pipe@1, + fun(_capture) -> push_path(_capture, Name) end + ) + end end + ) + end. + +-spec element( + integer(), + fun((dynamic_()) -> {ok, EAT} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EAT} | {error, list(decode_error())}). +element(Index, Inner_type) -> + fun(Data) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple(Data), + fun(Tuple) -> + Size = gleam_stdlib:size_of_tuple(Tuple), + gleam@result:'try'(case Index >= 0 of + true -> + case Index < Size of + true -> + gleam_stdlib:tuple_get(Tuple, Index); + + false -> + at_least_decode_tuple_error(Index + 1, Data) + end; + + false -> + case gleam@int:absolute_value(Index) =< Size of + true -> + gleam_stdlib:tuple_get(Tuple, Size + Index); + + false -> + at_least_decode_tuple_error( + gleam@int:absolute_value(Index), + Data + ) + end + end, fun(Data@1) -> _pipe = Inner_type(Data@1), + map_errors( + _pipe, + fun(_capture) -> push_path(_capture, Index) end + ) end) + end + ) + end. + +-spec tuple_errors({ok, any()} | {error, list(decode_error())}, binary()) -> list(decode_error()). +tuple_errors(Result, Name) -> + case Result of + {ok, _} -> + []; + + {error, Errors} -> + gleam@list:map( + Errors, + fun(_capture) -> push_path(_capture, Name) end + ) + end. + +-spec tuple2( + fun((dynamic_()) -> {ok, EBT} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EBV} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {EBT, EBV}} | {error, list(decode_error())}). +tuple2(Decode1, Decode2) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple2(Value), + fun(_use0) -> + {A, B} = _use0, + case {Decode1(A), Decode2(B)} of + {{ok, A@1}, {ok, B@1}} -> + {ok, {A@1, B@1}}; + + {A@2, B@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + {error, _pipe@1} + end + end + ) + end. + +-spec tuple3( + fun((dynamic_()) -> {ok, EBY} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECC} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {EBY, ECA, ECC}} | {error, list(decode_error())}). +tuple3(Decode1, Decode2, Decode3) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple3(Value), + fun(_use0) -> + {A, B, C} = _use0, + case {Decode1(A), Decode2(B), Decode3(C)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}} -> + {ok, {A@1, B@1, C@1}}; + + {A@2, B@2, C@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + {error, _pipe@2} + end + end + ) + end. + +-spec tuple4( + fun((dynamic_()) -> {ok, ECF} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECH} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECJ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECL} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {ECF, ECH, ECJ, ECL}} | + {error, list(decode_error())}). +tuple4(Decode1, Decode2, Decode3, Decode4) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple4(Value), + fun(_use0) -> + {A, B, C, D} = _use0, + case {Decode1(A), Decode2(B), Decode3(C), Decode4(D)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}} -> + {ok, {A@1, B@1, C@1, D@1}}; + + {A@2, B@2, C@2, D@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + {error, _pipe@3} + end + end + ) + end. + +-spec tuple5( + fun((dynamic_()) -> {ok, ECO} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECQ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECS} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECU} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, ECW} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {ECO, ECQ, ECS, ECU, ECW}} | + {error, list(decode_error())}). +tuple5(Decode1, Decode2, Decode3, Decode4, Decode5) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple5(Value), + fun(_use0) -> + {A, B, C, D, E} = _use0, + case {Decode1(A), + Decode2(B), + Decode3(C), + Decode4(D), + Decode5(E)} of + {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}, {ok, E@1}} -> + {ok, {A@1, B@1, C@1, D@1, E@1}}; + + {A@2, B@2, C@2, D@2, E@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + _pipe@4 = gleam@list:append( + _pipe@3, + tuple_errors(E@2, <<"4"/utf8>>) + ), + {error, _pipe@4} + end + end + ) + end. + +-spec tuple6( + fun((dynamic_()) -> {ok, ECZ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDD} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDF} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDH} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDJ} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, {ECZ, EDB, EDD, EDF, EDH, EDJ}} | + {error, list(decode_error())}). +tuple6(Decode1, Decode2, Decode3, Decode4, Decode5, Decode6) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_tuple6(Value), + fun(_use0) -> + {A, B, C, D, E, F} = _use0, + case {Decode1(A), + Decode2(B), + Decode3(C), + Decode4(D), + Decode5(E), + Decode6(F)} of + {{ok, A@1}, + {ok, B@1}, + {ok, C@1}, + {ok, D@1}, + {ok, E@1}, + {ok, F@1}} -> + {ok, {A@1, B@1, C@1, D@1, E@1, F@1}}; + + {A@2, B@2, C@2, D@2, E@2, F@2} -> + _pipe = tuple_errors(A@2, <<"0"/utf8>>), + _pipe@1 = gleam@list:append( + _pipe, + tuple_errors(B@2, <<"1"/utf8>>) + ), + _pipe@2 = gleam@list:append( + _pipe@1, + tuple_errors(C@2, <<"2"/utf8>>) + ), + _pipe@3 = gleam@list:append( + _pipe@2, + tuple_errors(D@2, <<"3"/utf8>>) + ), + _pipe@4 = gleam@list:append( + _pipe@3, + tuple_errors(E@2, <<"4"/utf8>>) + ), + _pipe@5 = gleam@list:append( + _pipe@4, + tuple_errors(F@2, <<"5"/utf8>>) + ), + {error, _pipe@5} + end + end + ) + end. + +-spec dict( + fun((dynamic_()) -> {ok, EDM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDO} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@dict:dict(EDM, EDO)} | + {error, list(decode_error())}). +dict(Key_type, Value_type) -> + fun(Value) -> + gleam@result:'try'( + gleam_stdlib:decode_map(Value), + fun(Map) -> + gleam@result:'try'( + begin + _pipe = Map, + _pipe@1 = gleam@dict:to_list(_pipe), + gleam@list:try_map( + _pipe@1, + fun(Pair) -> + {K, V} = Pair, + gleam@result:'try'( + begin + _pipe@2 = Key_type(K), + map_errors( + _pipe@2, + fun(_capture) -> + push_path( + _capture, + <<"keys"/utf8>> + ) + end + ) + end, + fun(K@1) -> + gleam@result:'try'( + begin + _pipe@3 = Value_type(V), + map_errors( + _pipe@3, + fun(_capture@1) -> + push_path( + _capture@1, + <<"values"/utf8>> + ) + end + ) + end, + fun(V@1) -> {ok, {K@1, V@1}} end + ) + end + ) + end + ) + end, + fun(Pairs) -> {ok, gleam@dict:from_list(Pairs)} end + ) + end + ) + end. + +-spec map( + fun((dynamic_()) -> {ok, EDT} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EDV} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, gleam@dict:dict(EDT, EDV)} | + {error, list(decode_error())}). +map(Key_type, Value_type) -> + dict(Key_type, Value_type). + +-spec decode2( + fun((EEM, EEN) -> EEO), + fun((dynamic_()) -> {ok, EEM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EEN} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EEO} | {error, list(decode_error())}). +decode2(Constructor, T1, T2) -> + fun(Value) -> case {T1(Value), T2(Value)} of + {{ok, A}, {ok, B}} -> + {ok, Constructor(A, B)}; + + {A@1, B@1} -> + {error, gleam@list:concat([all_errors(A@1), all_errors(B@1)])} + end end. + +-spec decode3( + fun((EES, EET, EEU) -> EEV), + fun((dynamic_()) -> {ok, EES} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EET} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EEU} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EEV} | {error, list(decode_error())}). +decode3(Constructor, T1, T2, T3) -> + fun(Value) -> case {T1(Value), T2(Value), T3(Value)} of + {{ok, A}, {ok, B}, {ok, C}} -> + {ok, Constructor(A, B, C)}; + + {A@1, B@1, C@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), all_errors(B@1), all_errors(C@1)] + )} + end end. + +-spec decode4( + fun((EFA, EFB, EFC, EFD) -> EFE), + fun((dynamic_()) -> {ok, EFA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFC} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFD} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EFE} | {error, list(decode_error())}). +decode4(Constructor, T1, T2, T3, T4) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}} -> + {ok, Constructor(A, B, C, D)}; + + {A@1, B@1, C@1, D@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1)] + )} + end end. + +-spec decode5( + fun((EFK, EFL, EFM, EFN, EFO) -> EFP), + fun((dynamic_()) -> {ok, EFK} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFL} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFN} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFO} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EFP} | {error, list(decode_error())}). +decode5(Constructor, T1, T2, T3, T4, T5) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}} -> + {ok, Constructor(A, B, C, D, E)}; + + {A@1, B@1, C@1, D@1, E@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1)] + )} + end end. + +-spec decode6( + fun((EFW, EFX, EFY, EFZ, EGA, EGB) -> EGC), + fun((dynamic_()) -> {ok, EFW} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFX} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFY} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EFZ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGB} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EGC} | {error, list(decode_error())}). +decode6(Constructor, T1, T2, T3, T4, T5, T6) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}} -> + {ok, Constructor(A, B, C, D, E, F)}; + + {A@1, B@1, C@1, D@1, E@1, F@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1)] + )} + end end. + +-spec decode7( + fun((EGK, EGL, EGM, EGN, EGO, EGP, EGQ) -> EGR), + fun((dynamic_()) -> {ok, EGK} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGL} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGM} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGN} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGO} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGP} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EGQ} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EGR} | {error, list(decode_error())}). +decode7(Constructor, T1, T2, T3, T4, T5, T6, T7) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X)} of + {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}, {ok, G}} -> + {ok, Constructor(A, B, C, D, E, F, G)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1)] + )} + end end. + +-spec decode8( + fun((EHA, EHB, EHC, EHD, EHE, EHF, EHG, EHH) -> EHI), + fun((dynamic_()) -> {ok, EHA} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHB} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHC} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHD} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHE} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHF} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHG} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHH} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EHI} | {error, list(decode_error())}). +decode8(Constructor, T1, T2, T3, T4, T5, T6, T7, T8) -> + fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X)} of + {{ok, A}, + {ok, B}, + {ok, C}, + {ok, D}, + {ok, E}, + {ok, F}, + {ok, G}, + {ok, H}} -> + {ok, Constructor(A, B, C, D, E, F, G, H)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1), + all_errors(H@1)] + )} + end end. + +-spec decode9( + fun((EHS, EHT, EHU, EHV, EHW, EHX, EHY, EHZ, EIA) -> EIB), + fun((dynamic_()) -> {ok, EHS} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHT} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHU} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHV} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHW} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHX} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHY} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EHZ} | {error, list(decode_error())}), + fun((dynamic_()) -> {ok, EIA} | {error, list(decode_error())}) +) -> fun((dynamic_()) -> {ok, EIB} | {error, list(decode_error())}). +decode9(Constructor, T1, T2, T3, T4, T5, T6, T7, T8, T9) -> + fun(X) -> + case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X), T9(X)} of + {{ok, A}, + {ok, B}, + {ok, C}, + {ok, D}, + {ok, E}, + {ok, F}, + {ok, G}, + {ok, H}, + {ok, I}} -> + {ok, Constructor(A, B, C, D, E, F, G, H, I)}; + + {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1, I@1} -> + {error, + gleam@list:concat( + [all_errors(A@1), + all_errors(B@1), + all_errors(C@1), + all_errors(D@1), + all_errors(E@1), + all_errors(F@1), + all_errors(G@1), + all_errors(H@1), + all_errors(I@1)] + )} + end + end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl new file mode 100644 index 0000000..33b3d4a --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl @@ -0,0 +1,181 @@ +-module(gleam@float). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse/1, to_string/1, compare/2, min/2, max/2, clamp/3, ceiling/1, floor/1, round/1, truncate/1, absolute_value/1, loosely_compare/3, loosely_equals/3, power/2, square_root/1, negate/1, sum/1, product/1, random/2, divide/2, add/2, multiply/2, subtract/2]). + +-spec parse(binary()) -> {ok, float()} | {error, nil}. +parse(String) -> + gleam_stdlib:parse_float(String). + +-spec to_string(float()) -> binary(). +to_string(X) -> + gleam_stdlib:float_to_string(X). + +-spec compare(float(), float()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. + +-spec min(float(), float()) -> float(). +min(A, B) -> + case A < B of + true -> + A; + + false -> + B + end. + +-spec max(float(), float()) -> float(). +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. + +-spec clamp(float(), float(), float()) -> float(). +clamp(X, Min_bound, Max_bound) -> + _pipe = X, + _pipe@1 = min(_pipe, Max_bound), + max(_pipe@1, Min_bound). + +-spec ceiling(float()) -> float(). +ceiling(X) -> + math:ceil(X). + +-spec floor(float()) -> float(). +floor(X) -> + math:floor(X). + +-spec round(float()) -> integer(). +round(X) -> + erlang:round(X). + +-spec truncate(float()) -> integer(). +truncate(X) -> + erlang:trunc(X). + +-spec absolute_value(float()) -> float(). +absolute_value(X) -> + case X >= +0.0 of + true -> + X; + + _ -> + +0.0 - X + end. + +-spec loosely_compare(float(), float(), float()) -> gleam@order:order(). +loosely_compare(A, B, Tolerance) -> + Difference = absolute_value(A - B), + case Difference =< Tolerance of + true -> + eq; + + false -> + compare(A, B) + end. + +-spec loosely_equals(float(), float(), float()) -> boolean(). +loosely_equals(A, B, Tolerance) -> + Difference = absolute_value(A - B), + Difference =< Tolerance. + +-spec power(float(), float()) -> {ok, float()} | {error, nil}. +power(Base, Exponent) -> + Fractional = (ceiling(Exponent) - Exponent) > +0.0, + case ((Base < +0.0) andalso Fractional) orelse ((Base =:= +0.0) andalso (Exponent + < +0.0)) of + true -> + {error, nil}; + + false -> + {ok, math:pow(Base, Exponent)} + end. + +-spec square_root(float()) -> {ok, float()} | {error, nil}. +square_root(X) -> + power(X, 0.5). + +-spec negate(float()) -> float(). +negate(X) -> + -1.0 * X. + +-spec do_sum(list(float()), float()) -> float(). +do_sum(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_sum(Rest, X + Initial) + end. + +-spec sum(list(float())) -> float(). +sum(Numbers) -> + _pipe = Numbers, + do_sum(_pipe, +0.0). + +-spec do_product(list(float()), float()) -> float(). +do_product(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_product(Rest, X * Initial) + end. + +-spec product(list(float())) -> float(). +product(Numbers) -> + case Numbers of + [] -> + 1.0; + + _ -> + do_product(Numbers, 1.0) + end. + +-spec random(float(), float()) -> float(). +random(Min, Max) -> + (rand:uniform() * (Max - Min)) + Min. + +-spec divide(float(), float()) -> {ok, float()} | {error, nil}. +divide(A, B) -> + case B of + +0.0 -> + {error, nil}; + + B@1 -> + {ok, case B@1 of + +0.0 -> +0.0; + -0.0 -> -0.0; + Gleam@denominator -> A / Gleam@denominator + end} + end. + +-spec add(float(), float()) -> float(). +add(A, B) -> + A + B. + +-spec multiply(float(), float()) -> float(). +multiply(A, B) -> + A * B. + +-spec subtract(float(), float()) -> float(). +subtract(A, B) -> + A - B. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl new file mode 100644 index 0000000..3496318 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl @@ -0,0 +1,67 @@ +-module(gleam@function). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1, constant/1, tap/2, apply1/2, apply2/3, apply3/4]). + +-spec compose(fun((DOO) -> DOP), fun((DOP) -> DOQ)) -> fun((DOO) -> DOQ). +compose(Fun1, Fun2) -> + fun(A) -> Fun2(Fun1(A)) end. + +-spec curry2(fun((DOR, DOS) -> DOT)) -> fun((DOR) -> fun((DOS) -> DOT)). +curry2(Fun) -> + fun(A) -> fun(B) -> Fun(A, B) end end. + +-spec curry3(fun((DOV, DOW, DOX) -> DOY)) -> fun((DOV) -> fun((DOW) -> fun((DOX) -> DOY))). +curry3(Fun) -> + fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. + +-spec curry4(fun((DPA, DPB, DPC, DPD) -> DPE)) -> fun((DPA) -> fun((DPB) -> fun((DPC) -> fun((DPD) -> DPE)))). +curry4(Fun) -> + fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. + +-spec curry5(fun((DPG, DPH, DPI, DPJ, DPK) -> DPL)) -> fun((DPG) -> fun((DPH) -> fun((DPI) -> fun((DPJ) -> fun((DPK) -> DPL))))). +curry5(Fun) -> + fun(A) -> + fun(B) -> + fun(C) -> fun(D) -> fun(E) -> Fun(A, B, C, D, E) end end end + end + end. + +-spec curry6(fun((DPN, DPO, DPP, DPQ, DPR, DPS) -> DPT)) -> fun((DPN) -> fun((DPO) -> fun((DPP) -> fun((DPQ) -> fun((DPR) -> fun((DPS) -> DPT)))))). +curry6(Fun) -> + fun(A) -> + fun(B) -> + fun(C) -> + fun(D) -> fun(E) -> fun(F) -> Fun(A, B, C, D, E, F) end end end + end + end + end. + +-spec flip(fun((DPV, DPW) -> DPX)) -> fun((DPW, DPV) -> DPX). +flip(Fun) -> + fun(B, A) -> Fun(A, B) end. + +-spec identity(DPY) -> DPY. +identity(X) -> + X. + +-spec constant(DPZ) -> fun((any()) -> DPZ). +constant(Value) -> + fun(_) -> Value end. + +-spec tap(DQB, fun((DQB) -> any())) -> DQB. +tap(Arg, Effect) -> + Effect(Arg), + Arg. + +-spec apply1(fun((DQD) -> DQE), DQD) -> DQE. +apply1(Fun, Arg1) -> + Fun(Arg1). + +-spec apply2(fun((DQF, DQG) -> DQH), DQF, DQG) -> DQH. +apply2(Fun, Arg1, Arg2) -> + Fun(Arg1, Arg2). + +-spec apply3(fun((DQI, DQJ, DQK) -> DQL), DQI, DQJ, DQK) -> DQL. +apply3(Fun, Arg1, Arg2, Arg3) -> + Fun(Arg1, Arg2, Arg3). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl new file mode 100644 index 0000000..2a5dd2c --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl @@ -0,0 +1,332 @@ +-module(gleam@int). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([absolute_value/1, parse/1, base_parse/2, to_string/1, to_base_string/2, to_base2/1, to_base8/1, to_base16/1, to_base36/1, to_float/1, power/2, square_root/1, compare/2, min/2, max/2, clamp/3, is_even/1, is_odd/1, negate/1, sum/1, product/1, digits/2, undigits/2, random/2, divide/2, remainder/2, modulo/2, floor_divide/2, add/2, multiply/2, subtract/2, bitwise_and/2, bitwise_not/1, bitwise_or/2, bitwise_exclusive_or/2, bitwise_shift_left/2, bitwise_shift_right/2]). +-export_type([invalid_base/0]). + +-type invalid_base() :: invalid_base. + +-spec absolute_value(integer()) -> integer(). +absolute_value(X) -> + case X >= 0 of + true -> + X; + + false -> + X * -1 + end. + +-spec parse(binary()) -> {ok, integer()} | {error, nil}. +parse(String) -> + gleam_stdlib:parse_int(String). + +-spec base_parse(binary(), integer()) -> {ok, integer()} | {error, nil}. +base_parse(String, Base) -> + case (Base >= 2) andalso (Base =< 36) of + true -> + gleam_stdlib:int_from_base_string(String, Base); + + false -> + {error, nil} + end. + +-spec to_string(integer()) -> binary(). +to_string(X) -> + erlang:integer_to_binary(X). + +-spec to_base_string(integer(), integer()) -> {ok, binary()} | + {error, invalid_base()}. +to_base_string(X, Base) -> + case (Base >= 2) andalso (Base =< 36) of + true -> + {ok, erlang:integer_to_binary(X, Base)}; + + false -> + {error, invalid_base} + end. + +-spec to_base2(integer()) -> binary(). +to_base2(X) -> + erlang:integer_to_binary(X, 2). + +-spec to_base8(integer()) -> binary(). +to_base8(X) -> + erlang:integer_to_binary(X, 8). + +-spec to_base16(integer()) -> binary(). +to_base16(X) -> + erlang:integer_to_binary(X, 16). + +-spec to_base36(integer()) -> binary(). +to_base36(X) -> + erlang:integer_to_binary(X, 36). + +-spec to_float(integer()) -> float(). +to_float(X) -> + erlang:float(X). + +-spec power(integer(), float()) -> {ok, float()} | {error, nil}. +power(Base, Exponent) -> + _pipe = Base, + _pipe@1 = to_float(_pipe), + gleam@float:power(_pipe@1, Exponent). + +-spec square_root(integer()) -> {ok, float()} | {error, nil}. +square_root(X) -> + _pipe = X, + _pipe@1 = to_float(_pipe), + gleam@float:square_root(_pipe@1). + +-spec compare(integer(), integer()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + false -> + case A < B of + true -> + lt; + + false -> + gt + end + end. + +-spec min(integer(), integer()) -> integer(). +min(A, B) -> + case A < B of + true -> + A; + + false -> + B + end. + +-spec max(integer(), integer()) -> integer(). +max(A, B) -> + case A > B of + true -> + A; + + false -> + B + end. + +-spec clamp(integer(), integer(), integer()) -> integer(). +clamp(X, Min_bound, Max_bound) -> + _pipe = X, + _pipe@1 = min(_pipe, Max_bound), + max(_pipe@1, Min_bound). + +-spec is_even(integer()) -> boolean(). +is_even(X) -> + (X rem 2) =:= 0. + +-spec is_odd(integer()) -> boolean(). +is_odd(X) -> + (X rem 2) /= 0. + +-spec negate(integer()) -> integer(). +negate(X) -> + -1 * X. + +-spec do_sum(list(integer()), integer()) -> integer(). +do_sum(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_sum(Rest, X + Initial) + end. + +-spec sum(list(integer())) -> integer(). +sum(Numbers) -> + _pipe = Numbers, + do_sum(_pipe, 0). + +-spec do_product(list(integer()), integer()) -> integer(). +do_product(Numbers, Initial) -> + case Numbers of + [] -> + Initial; + + [X | Rest] -> + do_product(Rest, X * Initial) + end. + +-spec product(list(integer())) -> integer(). +product(Numbers) -> + case Numbers of + [] -> + 1; + + _ -> + do_product(Numbers, 1) + end. + +-spec do_digits(integer(), integer(), list(integer())) -> list(integer()). +do_digits(X, Base, Acc) -> + case absolute_value(X) < Base of + true -> + [X | Acc]; + + false -> + do_digits(case Base of + 0 -> 0; + Gleam@denominator -> X div Gleam@denominator + end, Base, [case Base of + 0 -> 0; + Gleam@denominator@1 -> X rem Gleam@denominator@1 + end | Acc]) + end. + +-spec digits(integer(), integer()) -> {ok, list(integer())} | + {error, invalid_base()}. +digits(X, Base) -> + case Base < 2 of + true -> + {error, invalid_base}; + + false -> + {ok, do_digits(X, Base, [])} + end. + +-spec do_undigits(list(integer()), integer(), integer()) -> {ok, integer()} | + {error, invalid_base()}. +do_undigits(Numbers, Base, Acc) -> + case Numbers of + [] -> + {ok, Acc}; + + [Digit | _] when Digit >= Base -> + {error, invalid_base}; + + [Digit@1 | Rest] -> + do_undigits(Rest, Base, (Acc * Base) + Digit@1) + end. + +-spec undigits(list(integer()), integer()) -> {ok, integer()} | + {error, invalid_base()}. +undigits(Numbers, Base) -> + case Base < 2 of + true -> + {error, invalid_base}; + + false -> + do_undigits(Numbers, Base, 0) + end. + +-spec random(integer(), integer()) -> integer(). +random(Min, Max) -> + _pipe = gleam@float:random(to_float(Min), to_float(Max)), + _pipe@1 = gleam@float:floor(_pipe), + gleam@float:round(_pipe@1). + +-spec divide(integer(), integer()) -> {ok, integer()} | {error, nil}. +divide(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend div Gleam@denominator + end} + end. + +-spec remainder(integer(), integer()) -> {ok, integer()} | {error, nil}. +remainder(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end} + end. + +-spec modulo(integer(), integer()) -> {ok, integer()} | {error, nil}. +modulo(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + _ -> + Remainder = case Divisor of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end, + case (Remainder * Divisor) < 0 of + true -> + {ok, Remainder + Divisor}; + + false -> + {ok, Remainder} + end + end. + +-spec floor_divide(integer(), integer()) -> {ok, integer()} | {error, nil}. +floor_divide(Dividend, Divisor) -> + case Divisor of + 0 -> + {error, nil}; + + Divisor@1 -> + case ((Dividend * Divisor@1) < 0) andalso ((case Divisor@1 of + 0 -> 0; + Gleam@denominator -> Dividend rem Gleam@denominator + end) /= 0) of + true -> + {ok, (case Divisor@1 of + 0 -> 0; + Gleam@denominator@1 -> Dividend div Gleam@denominator@1 + end) - 1}; + + false -> + {ok, case Divisor@1 of + 0 -> 0; + Gleam@denominator@2 -> Dividend div Gleam@denominator@2 + end} + end + end. + +-spec add(integer(), integer()) -> integer(). +add(A, B) -> + A + B. + +-spec multiply(integer(), integer()) -> integer(). +multiply(A, B) -> + A * B. + +-spec subtract(integer(), integer()) -> integer(). +subtract(A, B) -> + A - B. + +-spec bitwise_and(integer(), integer()) -> integer(). +bitwise_and(X, Y) -> + erlang:'band'(X, Y). + +-spec bitwise_not(integer()) -> integer(). +bitwise_not(X) -> + erlang:'bnot'(X). + +-spec bitwise_or(integer(), integer()) -> integer(). +bitwise_or(X, Y) -> + erlang:'bor'(X, Y). + +-spec bitwise_exclusive_or(integer(), integer()) -> integer(). +bitwise_exclusive_or(X, Y) -> + erlang:'bxor'(X, Y). + +-spec bitwise_shift_left(integer(), integer()) -> integer(). +bitwise_shift_left(X, Y) -> + erlang:'bsl'(X, Y). + +-spec bitwise_shift_right(integer(), integer()) -> integer(). +bitwise_shift_right(X, Y) -> + erlang:'bsr'(X, Y). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl new file mode 100644 index 0000000..a46eae3 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl @@ -0,0 +1,27 @@ +-module(gleam@io). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([print/1, print_error/1, println/1, println_error/1, debug/1]). + +-spec print(binary()) -> nil. +print(String) -> + gleam_stdlib:print(String). + +-spec print_error(binary()) -> nil. +print_error(String) -> + gleam_stdlib:print_error(String). + +-spec println(binary()) -> nil. +println(String) -> + gleam_stdlib:println(String). + +-spec println_error(binary()) -> nil. +println_error(String) -> + gleam_stdlib:println_error(String). + +-spec debug(CZT) -> CZT. +debug(Term) -> + _pipe = Term, + _pipe@1 = gleam@string:inspect(_pipe), + gleam_stdlib:println_error(_pipe@1), + Term. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl new file mode 100644 index 0000000..aa84139 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl @@ -0,0 +1,744 @@ +-module(gleam@iterator). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([unfold/2, repeatedly/1, repeat/1, from_list/1, transform/3, fold/3, run/1, to_list/1, step/1, take/2, drop/2, map/2, map2/3, append/2, flatten/1, concat/1, flat_map/2, filter/2, cycle/1, find/2, index/1, iterate/2, take_while/2, drop_while/2, scan/3, zip/2, chunk/2, sized_chunk/2, intersperse/2, any/2, all/2, group/2, reduce/2, last/1, empty/0, once/1, range/2, single/1, interleave/2, fold_until/3, try_fold/3, first/1, at/2, length/1, each/2, yield/2]). +-export_type([action/1, iterator/1, step/2, chunk/2, sized_chunk/1]). + +-type action(BPF) :: stop | {continue, BPF, fun(() -> action(BPF))}. + +-opaque iterator(BPG) :: {iterator, fun(() -> action(BPG))}. + +-type step(BPH, BPI) :: {next, BPH, BPI} | done. + +-type chunk(BPJ, BPK) :: {another_by, + list(BPJ), + BPK, + BPJ, + fun(() -> action(BPJ))} | + {last_by, list(BPJ)}. + +-type sized_chunk(BPL) :: {another, list(BPL), fun(() -> action(BPL))} | + {last, list(BPL)} | + no_more. + +-spec stop() -> action(any()). +stop() -> + stop. + +-spec do_unfold(BPO, fun((BPO) -> step(BPP, BPO))) -> fun(() -> action(BPP)). +do_unfold(Initial, F) -> + fun() -> case F(Initial) of + {next, X, Acc} -> + {continue, X, do_unfold(Acc, F)}; + + done -> + stop + end end. + +-spec unfold(BPT, fun((BPT) -> step(BPU, BPT))) -> iterator(BPU). +unfold(Initial, F) -> + _pipe = Initial, + _pipe@1 = do_unfold(_pipe, F), + {iterator, _pipe@1}. + +-spec repeatedly(fun(() -> BPY)) -> iterator(BPY). +repeatedly(F) -> + unfold(nil, fun(_) -> {next, F(), nil} end). + +-spec repeat(BQA) -> iterator(BQA). +repeat(X) -> + repeatedly(fun() -> X end). + +-spec from_list(list(BQC)) -> iterator(BQC). +from_list(List) -> + Yield = fun(Acc) -> case Acc of + [] -> + done; + + [Head | Tail] -> + {next, Head, Tail} + end end, + unfold(List, Yield). + +-spec do_transform( + fun(() -> action(BQF)), + BQH, + fun((BQH, BQF) -> step(BQI, BQH)) +) -> fun(() -> action(BQI)). +do_transform(Continuation, State, F) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, El, Next} -> + case F(State, El) of + done -> + stop; + + {next, Yield, Next_state} -> + {continue, Yield, do_transform(Next, Next_state, F)} + end + end end. + +-spec transform(iterator(BQM), BQO, fun((BQO, BQM) -> step(BQP, BQO))) -> iterator(BQP). +transform(Iterator, Initial, F) -> + _pipe = do_transform(erlang:element(2, Iterator), Initial, F), + {iterator, _pipe}. + +-spec do_fold(fun(() -> action(BQT)), fun((BQV, BQT) -> BQV), BQV) -> BQV. +do_fold(Continuation, F, Accumulator) -> + case Continuation() of + {continue, Elem, Next} -> + do_fold(Next, F, F(Accumulator, Elem)); + + stop -> + Accumulator + end. + +-spec fold(iterator(BQW), BQY, fun((BQY, BQW) -> BQY)) -> BQY. +fold(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_fold(_pipe, F, Initial). + +-spec run(iterator(any())) -> nil. +run(Iterator) -> + fold(Iterator, nil, fun(_, _) -> nil end). + +-spec to_list(iterator(BRB)) -> list(BRB). +to_list(Iterator) -> + _pipe = Iterator, + _pipe@1 = fold(_pipe, [], fun(Acc, E) -> [E | Acc] end), + gleam@list:reverse(_pipe@1). + +-spec step(iterator(BRE)) -> step(BRE, iterator(BRE)). +step(Iterator) -> + case (erlang:element(2, Iterator))() of + stop -> + done; + + {continue, E, A} -> + {next, E, {iterator, A}} + end. + +-spec do_take(fun(() -> action(BRJ)), integer()) -> fun(() -> action(BRJ)). +do_take(Continuation, Desired) -> + fun() -> case Desired > 0 of + false -> + stop; + + true -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + {continue, E, do_take(Next, Desired - 1)} + end + end end. + +-spec take(iterator(BRM), integer()) -> iterator(BRM). +take(Iterator, Desired) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_take(_pipe, Desired), + {iterator, _pipe@1}. + +-spec do_drop(fun(() -> action(BRP)), integer()) -> action(BRP). +do_drop(Continuation, Desired) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Desired > 0 of + true -> + do_drop(Next, Desired - 1); + + false -> + {continue, E, Next} + end + end. + +-spec drop(iterator(BRS), integer()) -> iterator(BRS). +drop(Iterator, Desired) -> + _pipe = fun() -> do_drop(erlang:element(2, Iterator), Desired) end, + {iterator, _pipe}. + +-spec do_map(fun(() -> action(BRV)), fun((BRV) -> BRX)) -> fun(() -> action(BRX)). +do_map(Continuation, F) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Continuation@1} -> + {continue, F(E), do_map(Continuation@1, F)} + end end. + +-spec map(iterator(BRZ), fun((BRZ) -> BSB)) -> iterator(BSB). +map(Iterator, F) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_map(_pipe, F), + {iterator, _pipe@1}. + +-spec do_map2( + fun(() -> action(BSD)), + fun(() -> action(BSF)), + fun((BSD, BSF) -> BSH) +) -> fun(() -> action(BSH)). +do_map2(Continuation1, Continuation2, Fun) -> + fun() -> case Continuation1() of + stop -> + stop; + + {continue, A, Next_a} -> + case Continuation2() of + stop -> + stop; + + {continue, B, Next_b} -> + {continue, Fun(A, B), do_map2(Next_a, Next_b, Fun)} + end + end end. + +-spec map2(iterator(BSJ), iterator(BSL), fun((BSJ, BSL) -> BSN)) -> iterator(BSN). +map2(Iterator1, Iterator2, Fun) -> + _pipe = do_map2( + erlang:element(2, Iterator1), + erlang:element(2, Iterator2), + Fun + ), + {iterator, _pipe}. + +-spec do_append(fun(() -> action(BSP)), fun(() -> action(BSP))) -> action(BSP). +do_append(First, Second) -> + case First() of + {continue, E, First@1} -> + {continue, E, fun() -> do_append(First@1, Second) end}; + + stop -> + Second() + end. + +-spec append(iterator(BST), iterator(BST)) -> iterator(BST). +append(First, Second) -> + _pipe = fun() -> + do_append(erlang:element(2, First), erlang:element(2, Second)) + end, + {iterator, _pipe}. + +-spec do_flatten(fun(() -> action(iterator(BSX)))) -> action(BSX). +do_flatten(Flattened) -> + case Flattened() of + stop -> + stop; + + {continue, It, Next_iterator} -> + do_append( + erlang:element(2, It), + fun() -> do_flatten(Next_iterator) end + ) + end. + +-spec flatten(iterator(iterator(BTB))) -> iterator(BTB). +flatten(Iterator) -> + _pipe = fun() -> do_flatten(erlang:element(2, Iterator)) end, + {iterator, _pipe}. + +-spec concat(list(iterator(BTF))) -> iterator(BTF). +concat(Iterators) -> + flatten(from_list(Iterators)). + +-spec flat_map(iterator(BTJ), fun((BTJ) -> iterator(BTL))) -> iterator(BTL). +flat_map(Iterator, F) -> + _pipe = Iterator, + _pipe@1 = map(_pipe, F), + flatten(_pipe@1). + +-spec do_filter(fun(() -> action(BTO)), fun((BTO) -> boolean())) -> action(BTO). +do_filter(Continuation, Predicate) -> + case Continuation() of + stop -> + stop; + + {continue, E, Iterator} -> + case Predicate(E) of + true -> + {continue, E, fun() -> do_filter(Iterator, Predicate) end}; + + false -> + do_filter(Iterator, Predicate) + end + end. + +-spec filter(iterator(BTR), fun((BTR) -> boolean())) -> iterator(BTR). +filter(Iterator, Predicate) -> + _pipe = fun() -> do_filter(erlang:element(2, Iterator), Predicate) end, + {iterator, _pipe}. + +-spec cycle(iterator(BTU)) -> iterator(BTU). +cycle(Iterator) -> + _pipe = repeat(Iterator), + flatten(_pipe). + +-spec do_find(fun(() -> action(BTY)), fun((BTY) -> boolean())) -> {ok, BTY} | + {error, nil}. +do_find(Continuation, F) -> + case Continuation() of + stop -> + {error, nil}; + + {continue, E, Next} -> + case F(E) of + true -> + {ok, E}; + + false -> + do_find(Next, F) + end + end. + +-spec find(iterator(BUC), fun((BUC) -> boolean())) -> {ok, BUC} | {error, nil}. +find(Haystack, Is_desired) -> + _pipe = erlang:element(2, Haystack), + do_find(_pipe, Is_desired). + +-spec do_index(fun(() -> action(BUG)), integer()) -> fun(() -> action({integer(), + BUG})). +do_index(Continuation, Next) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Continuation@1} -> + {continue, {Next, E}, do_index(Continuation@1, Next + 1)} + end end. + +-spec index(iterator(BUJ)) -> iterator({integer(), BUJ}). +index(Iterator) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_index(_pipe, 0), + {iterator, _pipe@1}. + +-spec iterate(BUM, fun((BUM) -> BUM)) -> iterator(BUM). +iterate(Initial, F) -> + unfold(Initial, fun(Element) -> {next, Element, F(Element)} end). + +-spec do_take_while(fun(() -> action(BUO)), fun((BUO) -> boolean())) -> fun(() -> action(BUO)). +do_take_while(Continuation, Predicate) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Predicate(E) of + false -> + stop; + + true -> + {continue, E, do_take_while(Next, Predicate)} + end + end end. + +-spec take_while(iterator(BUR), fun((BUR) -> boolean())) -> iterator(BUR). +take_while(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_take_while(_pipe, Predicate), + {iterator, _pipe@1}. + +-spec do_drop_while(fun(() -> action(BUU)), fun((BUU) -> boolean())) -> action(BUU). +do_drop_while(Continuation, Predicate) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + case Predicate(E) of + false -> + {continue, E, Next}; + + true -> + do_drop_while(Next, Predicate) + end + end. + +-spec drop_while(iterator(BUX), fun((BUX) -> boolean())) -> iterator(BUX). +drop_while(Iterator, Predicate) -> + _pipe = fun() -> do_drop_while(erlang:element(2, Iterator), Predicate) end, + {iterator, _pipe}. + +-spec do_scan(fun(() -> action(BVA)), fun((BVC, BVA) -> BVC), BVC) -> fun(() -> action(BVC)). +do_scan(Continuation, F, Accumulator) -> + fun() -> case Continuation() of + stop -> + stop; + + {continue, El, Next} -> + Accumulated = F(Accumulator, El), + {continue, Accumulated, do_scan(Next, F, Accumulated)} + end end. + +-spec scan(iterator(BVE), BVG, fun((BVG, BVE) -> BVG)) -> iterator(BVG). +scan(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_scan(_pipe, F, Initial), + {iterator, _pipe@1}. + +-spec do_zip(fun(() -> action(BVI)), fun(() -> action(BVK))) -> fun(() -> action({BVI, + BVK})). +do_zip(Left, Right) -> + fun() -> case Left() of + stop -> + stop; + + {continue, El_left, Next_left} -> + case Right() of + stop -> + stop; + + {continue, El_right, Next_right} -> + {continue, + {El_left, El_right}, + do_zip(Next_left, Next_right)} + end + end end. + +-spec zip(iterator(BVN), iterator(BVP)) -> iterator({BVN, BVP}). +zip(Left, Right) -> + _pipe = do_zip(erlang:element(2, Left), erlang:element(2, Right)), + {iterator, _pipe}. + +-spec next_chunk(fun(() -> action(BVS)), fun((BVS) -> BVU), BVU, list(BVS)) -> chunk(BVS, BVU). +next_chunk(Continuation, F, Previous_key, Current_chunk) -> + case Continuation() of + stop -> + {last_by, gleam@list:reverse(Current_chunk)}; + + {continue, E, Next} -> + Key = F(E), + case Key =:= Previous_key of + true -> + next_chunk(Next, F, Key, [E | Current_chunk]); + + false -> + {another_by, + gleam@list:reverse(Current_chunk), + Key, + E, + Next} + end + end. + +-spec do_chunk(fun(() -> action(BVY)), fun((BVY) -> BWA), BWA, BVY) -> action(list(BVY)). +do_chunk(Continuation, F, Previous_key, Previous_element) -> + case next_chunk(Continuation, F, Previous_key, [Previous_element]) of + {last_by, Chunk} -> + {continue, Chunk, fun stop/0}; + + {another_by, Chunk@1, Key, El, Next} -> + {continue, Chunk@1, fun() -> do_chunk(Next, F, Key, El) end} + end. + +-spec chunk(iterator(BWD), fun((BWD) -> any())) -> iterator(list(BWD)). +chunk(Iterator, F) -> + _pipe = fun() -> case (erlang:element(2, Iterator))() of + stop -> + stop; + + {continue, E, Next} -> + do_chunk(Next, F, F(E), E) + end end, + {iterator, _pipe}. + +-spec next_sized_chunk(fun(() -> action(BWI)), integer(), list(BWI)) -> sized_chunk(BWI). +next_sized_chunk(Continuation, Left, Current_chunk) -> + case Continuation() of + stop -> + case Current_chunk of + [] -> + no_more; + + Remaining -> + {last, gleam@list:reverse(Remaining)} + end; + + {continue, E, Next} -> + Chunk = [E | Current_chunk], + case Left > 1 of + false -> + {another, gleam@list:reverse(Chunk), Next}; + + true -> + next_sized_chunk(Next, Left - 1, Chunk) + end + end. + +-spec do_sized_chunk(fun(() -> action(BWM)), integer()) -> fun(() -> action(list(BWM))). +do_sized_chunk(Continuation, Count) -> + fun() -> case next_sized_chunk(Continuation, Count, []) of + no_more -> + stop; + + {last, Chunk} -> + {continue, Chunk, fun stop/0}; + + {another, Chunk@1, Next_element} -> + {continue, Chunk@1, do_sized_chunk(Next_element, Count)} + end end. + +-spec sized_chunk(iterator(BWQ), integer()) -> iterator(list(BWQ)). +sized_chunk(Iterator, Count) -> + _pipe = erlang:element(2, Iterator), + _pipe@1 = do_sized_chunk(_pipe, Count), + {iterator, _pipe@1}. + +-spec do_intersperse(fun(() -> action(BWU)), BWU) -> action(BWU). +do_intersperse(Continuation, Separator) -> + case Continuation() of + stop -> + stop; + + {continue, E, Next} -> + Next_interspersed = fun() -> do_intersperse(Next, Separator) end, + {continue, Separator, fun() -> {continue, E, Next_interspersed} end} + end. + +-spec intersperse(iterator(BWX), BWX) -> iterator(BWX). +intersperse(Iterator, Elem) -> + _pipe = fun() -> case (erlang:element(2, Iterator))() of + stop -> + stop; + + {continue, E, Next} -> + {continue, E, fun() -> do_intersperse(Next, Elem) end} + end end, + {iterator, _pipe}. + +-spec do_any(fun(() -> action(BXA)), fun((BXA) -> boolean())) -> boolean(). +do_any(Continuation, Predicate) -> + case Continuation() of + stop -> + false; + + {continue, E, Next} -> + case Predicate(E) of + true -> + true; + + false -> + do_any(Next, Predicate) + end + end. + +-spec any(iterator(BXC), fun((BXC) -> boolean())) -> boolean(). +any(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + do_any(_pipe, Predicate). + +-spec do_all(fun(() -> action(BXE)), fun((BXE) -> boolean())) -> boolean(). +do_all(Continuation, Predicate) -> + case Continuation() of + stop -> + true; + + {continue, E, Next} -> + case Predicate(E) of + true -> + do_all(Next, Predicate); + + false -> + false + end + end. + +-spec all(iterator(BXG), fun((BXG) -> boolean())) -> boolean(). +all(Iterator, Predicate) -> + _pipe = erlang:element(2, Iterator), + do_all(_pipe, Predicate). + +-spec update_group_with(BXI) -> fun((gleam@option:option(list(BXI))) -> list(BXI)). +update_group_with(El) -> + fun(Maybe_group) -> case Maybe_group of + {some, Group} -> + [El | Group]; + + none -> + [El] + end end. + +-spec group_updater(fun((BXM) -> BXN)) -> fun((gleam@dict:dict(BXN, list(BXM)), BXM) -> gleam@dict:dict(BXN, list(BXM))). +group_updater(F) -> + fun(Groups, Elem) -> _pipe = Groups, + gleam@dict:update(_pipe, F(Elem), update_group_with(Elem)) end. + +-spec group(iterator(BXU), fun((BXU) -> BXW)) -> gleam@dict:dict(BXW, list(BXU)). +group(Iterator, Key) -> + _pipe = Iterator, + _pipe@1 = fold(_pipe, gleam@dict:new(), group_updater(Key)), + gleam@dict:map_values( + _pipe@1, + fun(_, Group) -> gleam@list:reverse(Group) end + ). + +-spec reduce(iterator(BYA), fun((BYA, BYA) -> BYA)) -> {ok, BYA} | {error, nil}. +reduce(Iterator, F) -> + case (erlang:element(2, Iterator))() of + stop -> + {error, nil}; + + {continue, E, Next} -> + _pipe = do_fold(Next, F, E), + {ok, _pipe} + end. + +-spec last(iterator(BYE)) -> {ok, BYE} | {error, nil}. +last(Iterator) -> + _pipe = Iterator, + reduce(_pipe, fun(_, Elem) -> Elem end). + +-spec empty() -> iterator(any()). +empty() -> + {iterator, fun stop/0}. + +-spec once(fun(() -> BYK)) -> iterator(BYK). +once(F) -> + _pipe = fun() -> {continue, F(), fun stop/0} end, + {iterator, _pipe}. + +-spec range(integer(), integer()) -> iterator(integer()). +range(Start, Stop) -> + case gleam@int:compare(Start, Stop) of + eq -> + once(fun() -> Start end); + + gt -> + unfold(Start, fun(Current) -> case Current < Stop of + false -> + {next, Current, Current - 1}; + + true -> + done + end end); + + lt -> + unfold(Start, fun(Current@1) -> case Current@1 > Stop of + false -> + {next, Current@1, Current@1 + 1}; + + true -> + done + end end) + end. + +-spec single(BYM) -> iterator(BYM). +single(Elem) -> + once(fun() -> Elem end). + +-spec do_interleave(fun(() -> action(BYO)), fun(() -> action(BYO))) -> action(BYO). +do_interleave(Current, Next) -> + case Current() of + stop -> + Next(); + + {continue, E, Next_other} -> + {continue, E, fun() -> do_interleave(Next, Next_other) end} + end. + +-spec interleave(iterator(BYS), iterator(BYS)) -> iterator(BYS). +interleave(Left, Right) -> + _pipe = fun() -> + do_interleave(erlang:element(2, Left), erlang:element(2, Right)) + end, + {iterator, _pipe}. + +-spec do_fold_until( + fun(() -> action(BYW)), + fun((BYY, BYW) -> gleam@list:continue_or_stop(BYY)), + BYY +) -> BYY. +do_fold_until(Continuation, F, Accumulator) -> + case Continuation() of + stop -> + Accumulator; + + {continue, Elem, Next} -> + case F(Accumulator, Elem) of + {continue, Accumulator@1} -> + do_fold_until(Next, F, Accumulator@1); + + {stop, Accumulator@2} -> + Accumulator@2 + end + end. + +-spec fold_until( + iterator(BZA), + BZC, + fun((BZC, BZA) -> gleam@list:continue_or_stop(BZC)) +) -> BZC. +fold_until(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_fold_until(_pipe, F, Initial). + +-spec do_try_fold( + fun(() -> action(BZE)), + fun((BZG, BZE) -> {ok, BZG} | {error, BZH}), + BZG +) -> {ok, BZG} | {error, BZH}. +do_try_fold(Continuation, F, Accumulator) -> + case Continuation() of + stop -> + {ok, Accumulator}; + + {continue, Elem, Next} -> + gleam@result:'try'( + F(Accumulator, Elem), + fun(Accumulator@1) -> do_try_fold(Next, F, Accumulator@1) end + ) + end. + +-spec try_fold(iterator(BZM), BZO, fun((BZO, BZM) -> {ok, BZO} | {error, BZP})) -> {ok, + BZO} | + {error, BZP}. +try_fold(Iterator, Initial, F) -> + _pipe = erlang:element(2, Iterator), + do_try_fold(_pipe, F, Initial). + +-spec first(iterator(BZU)) -> {ok, BZU} | {error, nil}. +first(Iterator) -> + case (erlang:element(2, Iterator))() of + stop -> + {error, nil}; + + {continue, E, _} -> + {ok, E} + end. + +-spec at(iterator(BZY), integer()) -> {ok, BZY} | {error, nil}. +at(Iterator, Index) -> + _pipe = Iterator, + _pipe@1 = drop(_pipe, Index), + first(_pipe@1). + +-spec do_length(fun(() -> action(any())), integer()) -> integer(). +do_length(Continuation, Length) -> + case Continuation() of + stop -> + Length; + + {continue, _, Next} -> + do_length(Next, Length + 1) + end. + +-spec length(iterator(any())) -> integer(). +length(Iterator) -> + _pipe = erlang:element(2, Iterator), + do_length(_pipe, 0). + +-spec each(iterator(CAG), fun((CAG) -> any())) -> nil. +each(Iterator, F) -> + _pipe = Iterator, + _pipe@1 = map(_pipe, F), + run(_pipe@1). + +-spec yield(CAJ, fun(() -> iterator(CAJ))) -> iterator(CAJ). +yield(Element, Next) -> + {iterator, fun() -> {continue, Element, erlang:element(2, Next())} end}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl new file mode 100644 index 0000000..6c2e684 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl @@ -0,0 +1,1129 @@ +-module(gleam@list). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([length/1, reverse/1, is_empty/1, contains/2, first/1, rest/1, filter/2, filter_map/2, map/2, map2/3, index_map/2, try_map/2, drop/2, take/2, new/0, append/2, prepend/2, concat/1, flatten/1, flat_map/2, fold/3, group/2, map_fold/3, fold_right/3, index_fold/3, try_fold/3, fold_until/3, find/2, find_map/2, all/2, any/2, zip/2, strict_zip/2, unzip/1, intersperse/2, at/2, unique/1, sort/2, range/2, repeat/2, split/2, split_while/2, key_find/2, key_filter/2, pop/2, pop_map/2, key_pop/2, key_set/3, each/2, try_each/2, partition/2, permutations/1, window/2, window_by_2/1, drop_while/2, take_while/2, chunk/2, sized_chunk/2, reduce/2, scan/3, last/1, combinations/2, combination_pairs/1, transpose/1, interleave/1, shuffle/1]). +-export_type([length_mismatch/0, continue_or_stop/1]). + +-type length_mismatch() :: length_mismatch. + +-type continue_or_stop(UD) :: {continue, UD} | {stop, UD}. + +-spec length(list(any())) -> integer(). +length(List) -> + erlang:length(List). + +-spec reverse(list(UI)) -> list(UI). +reverse(Xs) -> + lists:reverse(Xs). + +-spec is_empty(list(any())) -> boolean(). +is_empty(List) -> + List =:= []. + +-spec contains(list(UQ), UQ) -> boolean(). +contains(List, Elem) -> + case List of + [] -> + false; + + [First | _] when First =:= Elem -> + true; + + [_ | Rest] -> + contains(Rest, Elem) + end. + +-spec first(list(US)) -> {ok, US} | {error, nil}. +first(List) -> + case List of + [] -> + {error, nil}; + + [X | _] -> + {ok, X} + end. + +-spec rest(list(UW)) -> {ok, list(UW)} | {error, nil}. +rest(List) -> + case List of + [] -> + {error, nil}; + + [_ | Xs] -> + {ok, Xs} + end. + +-spec update_group(fun((VB) -> VC)) -> fun((gleam@dict:dict(VC, list(VB)), VB) -> gleam@dict:dict(VC, list(VB))). +update_group(F) -> + fun(Groups, Elem) -> case gleam@dict:get(Groups, F(Elem)) of + {ok, Existing} -> + gleam@dict:insert(Groups, F(Elem), [Elem | Existing]); + + {error, _} -> + gleam@dict:insert(Groups, F(Elem), [Elem]) + end end. + +-spec do_filter(list(VP), fun((VP) -> boolean()), list(VP)) -> list(VP). +do_filter(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + New_acc = case Fun(X) of + true -> + [X | Acc]; + + false -> + Acc + end, + do_filter(Xs, Fun, New_acc) + end. + +-spec filter(list(VT), fun((VT) -> boolean())) -> list(VT). +filter(List, Predicate) -> + do_filter(List, Predicate, []). + +-spec do_filter_map(list(VW), fun((VW) -> {ok, VY} | {error, any()}), list(VY)) -> list(VY). +do_filter_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + New_acc = case Fun(X) of + {ok, X@1} -> + [X@1 | Acc]; + + {error, _} -> + Acc + end, + do_filter_map(Xs, Fun, New_acc) + end. + +-spec filter_map(list(WE), fun((WE) -> {ok, WG} | {error, any()})) -> list(WG). +filter_map(List, Fun) -> + do_filter_map(List, Fun, []). + +-spec do_map(list(WL), fun((WL) -> WN), list(WN)) -> list(WN). +do_map(List, Fun, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_map(Xs, Fun, [Fun(X) | Acc]) + end. + +-spec map(list(WQ), fun((WQ) -> WS)) -> list(WS). +map(List, Fun) -> + do_map(List, Fun, []). + +-spec do_map2(list(XA), list(XC), fun((XA, XC) -> XE), list(XE)) -> list(XE). +do_map2(List1, List2, Fun, Acc) -> + case {List1, List2} of + {[], _} -> + reverse(Acc); + + {_, []} -> + reverse(Acc); + + {[A | As_], [B | Bs]} -> + do_map2(As_, Bs, Fun, [Fun(A, B) | Acc]) + end. + +-spec map2(list(WU), list(WW), fun((WU, WW) -> WY)) -> list(WY). +map2(List1, List2, Fun) -> + do_map2(List1, List2, Fun, []). + +-spec do_index_map(list(XM), fun((integer(), XM) -> XO), integer(), list(XO)) -> list(XO). +do_index_map(List, Fun, Index, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + Acc@1 = [Fun(Index, X) | Acc], + do_index_map(Xs, Fun, Index + 1, Acc@1) + end. + +-spec index_map(list(XR), fun((integer(), XR) -> XT)) -> list(XT). +index_map(List, Fun) -> + do_index_map(List, Fun, 0, []). + +-spec do_try_map(list(XV), fun((XV) -> {ok, XX} | {error, XY}), list(XX)) -> {ok, + list(XX)} | + {error, XY}. +do_try_map(List, Fun, Acc) -> + case List of + [] -> + {ok, reverse(Acc)}; + + [X | Xs] -> + case Fun(X) of + {ok, Y} -> + do_try_map(Xs, Fun, [Y | Acc]); + + {error, Error} -> + {error, Error} + end + end. + +-spec try_map(list(YF), fun((YF) -> {ok, YH} | {error, YI})) -> {ok, list(YH)} | + {error, YI}. +try_map(List, Fun) -> + do_try_map(List, Fun, []). + +-spec drop(list(YO), integer()) -> list(YO). +drop(List, N) -> + case N =< 0 of + true -> + List; + + false -> + case List of + [] -> + []; + + [_ | Xs] -> + drop(Xs, N - 1) + end + end. + +-spec do_take(list(YR), integer(), list(YR)) -> list(YR). +do_take(List, N, Acc) -> + case N =< 0 of + true -> + reverse(Acc); + + false -> + case List of + [] -> + reverse(Acc); + + [X | Xs] -> + do_take(Xs, N - 1, [X | Acc]) + end + end. + +-spec take(list(YV), integer()) -> list(YV). +take(List, N) -> + do_take(List, N, []). + +-spec new() -> list(any()). +new() -> + []. + +-spec append(list(AAA), list(AAA)) -> list(AAA). +append(First, Second) -> + lists:append(First, Second). + +-spec prepend(list(AAI), AAI) -> list(AAI). +prepend(List, Item) -> + [Item | List]. + +-spec reverse_and_prepend(list(AAL), list(AAL)) -> list(AAL). +reverse_and_prepend(Prefix, Suffix) -> + case Prefix of + [] -> + Suffix; + + [First | Rest] -> + reverse_and_prepend(Rest, [First | Suffix]) + end. + +-spec do_concat(list(list(AAP)), list(AAP)) -> list(AAP). +do_concat(Lists, Acc) -> + case Lists of + [] -> + reverse(Acc); + + [List | Further_lists] -> + do_concat(Further_lists, reverse_and_prepend(List, Acc)) + end. + +-spec concat(list(list(AAU))) -> list(AAU). +concat(Lists) -> + do_concat(Lists, []). + +-spec flatten(list(list(AAY))) -> list(AAY). +flatten(Lists) -> + do_concat(Lists, []). + +-spec flat_map(list(ABC), fun((ABC) -> list(ABE))) -> list(ABE). +flat_map(List, Fun) -> + _pipe = map(List, Fun), + concat(_pipe). + +-spec fold(list(ABH), ABJ, fun((ABJ, ABH) -> ABJ)) -> ABJ. +fold(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [X | Rest] -> + fold(Rest, Fun(Initial, X), Fun) + end. + +-spec group(list(VJ), fun((VJ) -> VL)) -> gleam@dict:dict(VL, list(VJ)). +group(List, Key) -> + fold(List, gleam@dict:new(), update_group(Key)). + +-spec map_fold(list(XH), XJ, fun((XJ, XH) -> {XJ, XK})) -> {XJ, list(XK)}. +map_fold(List, Acc, Fun) -> + _pipe = fold( + List, + {Acc, []}, + fun(Acc@1, Item) -> + {Current_acc, Items} = Acc@1, + {Next_acc, Next_item} = Fun(Current_acc, Item), + {Next_acc, [Next_item | Items]} + end + ), + gleam@pair:map_second(_pipe, fun reverse/1). + +-spec fold_right(list(ABK), ABM, fun((ABM, ABK) -> ABM)) -> ABM. +fold_right(List, Initial, Fun) -> + case List of + [] -> + Initial; + + [X | Rest] -> + Fun(fold_right(Rest, Initial, Fun), X) + end. + +-spec do_index_fold( + list(ABN), + ABP, + fun((ABP, ABN, integer()) -> ABP), + integer() +) -> ABP. +do_index_fold(Over, Acc, With, Index) -> + case Over of + [] -> + Acc; + + [First | Rest] -> + do_index_fold(Rest, With(Acc, First, Index), With, Index + 1) + end. + +-spec index_fold(list(ABQ), ABS, fun((ABS, ABQ, integer()) -> ABS)) -> ABS. +index_fold(Over, Initial, Fun) -> + do_index_fold(Over, Initial, Fun, 0). + +-spec try_fold(list(ABT), ABV, fun((ABV, ABT) -> {ok, ABV} | {error, ABW})) -> {ok, + ABV} | + {error, ABW}. +try_fold(Collection, Accumulator, Fun) -> + case Collection of + [] -> + {ok, Accumulator}; + + [First | Rest] -> + case Fun(Accumulator, First) of + {ok, Result} -> + try_fold(Rest, Result, Fun); + + {error, _} = Error -> + Error + end + end. + +-spec fold_until(list(ACB), ACD, fun((ACD, ACB) -> continue_or_stop(ACD))) -> ACD. +fold_until(Collection, Accumulator, Fun) -> + case Collection of + [] -> + Accumulator; + + [First | Rest] -> + case Fun(Accumulator, First) of + {continue, Next_accumulator} -> + fold_until(Rest, Next_accumulator, Fun); + + {stop, B} -> + B + end + end. + +-spec find(list(ACF), fun((ACF) -> boolean())) -> {ok, ACF} | {error, nil}. +find(Haystack, Is_desired) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Is_desired(X) of + true -> + {ok, X}; + + _ -> + find(Rest, Is_desired) + end + end. + +-spec find_map(list(ACJ), fun((ACJ) -> {ok, ACL} | {error, any()})) -> {ok, ACL} | + {error, nil}. +find_map(Haystack, Fun) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Fun(X) of + {ok, X@1} -> + {ok, X@1}; + + _ -> + find_map(Rest, Fun) + end + end. + +-spec all(list(ACR), fun((ACR) -> boolean())) -> boolean(). +all(List, Predicate) -> + case List of + [] -> + true; + + [First | Rest] -> + case Predicate(First) of + true -> + all(Rest, Predicate); + + false -> + false + end + end. + +-spec any(list(ACT), fun((ACT) -> boolean())) -> boolean(). +any(List, Predicate) -> + case List of + [] -> + false; + + [First | Rest] -> + case Predicate(First) of + true -> + true; + + false -> + any(Rest, Predicate) + end + end. + +-spec do_zip(list(ACV), list(ACX), list({ACV, ACX})) -> list({ACV, ACX}). +do_zip(Xs, Ys, Acc) -> + case {Xs, Ys} of + {[X | Xs@1], [Y | Ys@1]} -> + do_zip(Xs@1, Ys@1, [{X, Y} | Acc]); + + {_, _} -> + reverse(Acc) + end. + +-spec zip(list(ADB), list(ADD)) -> list({ADB, ADD}). +zip(List, Other) -> + do_zip(List, Other, []). + +-spec strict_zip(list(ADG), list(ADI)) -> {ok, list({ADG, ADI})} | + {error, length_mismatch()}. +strict_zip(List, Other) -> + case length(List) =:= length(Other) of + true -> + {ok, zip(List, Other)}; + + false -> + {error, length_mismatch} + end. + +-spec do_unzip(list({ATA, ATB}), list(ATA), list(ATB)) -> {list(ATA), list(ATB)}. +do_unzip(Input, Xs, Ys) -> + case Input of + [] -> + {reverse(Xs), reverse(Ys)}; + + [{X, Y} | Rest] -> + do_unzip(Rest, [X | Xs], [Y | Ys]) + end. + +-spec unzip(list({ADR, ADS})) -> {list(ADR), list(ADS)}. +unzip(Input) -> + do_unzip(Input, [], []). + +-spec do_intersperse(list(ADW), ADW, list(ADW)) -> list(ADW). +do_intersperse(List, Separator, Acc) -> + case List of + [] -> + reverse(Acc); + + [X | Rest] -> + do_intersperse(Rest, Separator, [X, Separator | Acc]) + end. + +-spec intersperse(list(AEA), AEA) -> list(AEA). +intersperse(List, Elem) -> + case List of + [] -> + List; + + [_] -> + List; + + [X | Rest] -> + do_intersperse(Rest, Elem, [X]) + end. + +-spec at(list(AED), integer()) -> {ok, AED} | {error, nil}. +at(List, Index) -> + case Index >= 0 of + true -> + _pipe = List, + _pipe@1 = drop(_pipe, Index), + first(_pipe@1); + + false -> + {error, nil} + end. + +-spec unique(list(AEH)) -> list(AEH). +unique(List) -> + case List of + [] -> + []; + + [X | Rest] -> + [X | unique(filter(Rest, fun(Y) -> Y /= X end))] + end. + +-spec merge_up( + integer(), + integer(), + list(AEK), + list(AEK), + list(AEK), + fun((AEK, AEK) -> gleam@order:order()) +) -> list(AEK). +merge_up(Na, Nb, A, B, Acc, Compare) -> + case {Na, Nb, A, B} of + {0, 0, _, _} -> + Acc; + + {_, 0, [Ax | Ar], _} -> + merge_up(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); + + {0, _, _, [Bx | Br]} -> + merge_up(Na, Nb - 1, A, Br, [Bx | Acc], Compare); + + {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> + case Compare(Ax@1, Bx@1) of + gt -> + merge_up(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare); + + _ -> + merge_up(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare) + end; + + {_, _, _, _} -> + Acc + end. + +-spec merge_down( + integer(), + integer(), + list(AEP), + list(AEP), + list(AEP), + fun((AEP, AEP) -> gleam@order:order()) +) -> list(AEP). +merge_down(Na, Nb, A, B, Acc, Compare) -> + case {Na, Nb, A, B} of + {0, 0, _, _} -> + Acc; + + {_, 0, [Ax | Ar], _} -> + merge_down(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); + + {0, _, _, [Bx | Br]} -> + merge_down(Na, Nb - 1, A, Br, [Bx | Acc], Compare); + + {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> + case Compare(Bx@1, Ax@1) of + lt -> + merge_down(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare); + + _ -> + merge_down(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare) + end; + + {_, _, _, _} -> + Acc + end. + +-spec merge_sort( + list(AEU), + integer(), + fun((AEU, AEU) -> gleam@order:order()), + boolean() +) -> list(AEU). +merge_sort(L, Ln, Compare, Down) -> + N = Ln div 2, + A = L, + B = drop(L, N), + case Ln < 3 of + true -> + case Down of + true -> + merge_down(N, Ln - N, A, B, [], Compare); + + false -> + merge_up(N, Ln - N, A, B, [], Compare) + end; + + false -> + case Down of + true -> + merge_down( + N, + Ln - N, + merge_sort(A, N, Compare, false), + merge_sort(B, Ln - N, Compare, false), + [], + Compare + ); + + false -> + merge_up( + N, + Ln - N, + merge_sort(A, N, Compare, true), + merge_sort(B, Ln - N, Compare, true), + [], + Compare + ) + end + end. + +-spec sort(list(AEX), fun((AEX, AEX) -> gleam@order:order())) -> list(AEX). +sort(List, Compare) -> + merge_sort(List, length(List), Compare, true). + +-spec tail_recursive_range(integer(), integer(), list(integer())) -> list(integer()). +tail_recursive_range(Start, Stop, Acc) -> + case gleam@int:compare(Start, Stop) of + eq -> + [Stop | Acc]; + + gt -> + tail_recursive_range(Start, Stop + 1, [Stop | Acc]); + + lt -> + tail_recursive_range(Start, Stop - 1, [Stop | Acc]) + end. + +-spec range(integer(), integer()) -> list(integer()). +range(Start, Stop) -> + tail_recursive_range(Start, Stop, []). + +-spec do_repeat(AFD, integer(), list(AFD)) -> list(AFD). +do_repeat(A, Times, Acc) -> + case Times =< 0 of + true -> + Acc; + + false -> + do_repeat(A, Times - 1, [A | Acc]) + end. + +-spec repeat(AFG, integer()) -> list(AFG). +repeat(A, Times) -> + do_repeat(A, Times, []). + +-spec do_split(list(AFI), integer(), list(AFI)) -> {list(AFI), list(AFI)}. +do_split(List, N, Taken) -> + case N =< 0 of + true -> + {reverse(Taken), List}; + + false -> + case List of + [] -> + {reverse(Taken), []}; + + [X | Xs] -> + do_split(Xs, N - 1, [X | Taken]) + end + end. + +-spec split(list(AFN), integer()) -> {list(AFN), list(AFN)}. +split(List, Index) -> + do_split(List, Index, []). + +-spec do_split_while(list(AFR), fun((AFR) -> boolean()), list(AFR)) -> {list(AFR), + list(AFR)}. +do_split_while(List, F, Acc) -> + case List of + [] -> + {reverse(Acc), []}; + + [X | Xs] -> + case F(X) of + false -> + {reverse(Acc), List}; + + _ -> + do_split_while(Xs, F, [X | Acc]) + end + end. + +-spec split_while(list(AFW), fun((AFW) -> boolean())) -> {list(AFW), list(AFW)}. +split_while(List, Predicate) -> + do_split_while(List, Predicate, []). + +-spec key_find(list({AGA, AGB}), AGA) -> {ok, AGB} | {error, nil}. +key_find(Keyword_list, Desired_key) -> + find_map( + Keyword_list, + fun(Keyword) -> + {Key, Value} = Keyword, + case Key =:= Desired_key of + true -> + {ok, Value}; + + false -> + {error, nil} + end + end + ). + +-spec key_filter(list({AGF, AGG}), AGF) -> list(AGG). +key_filter(Keyword_list, Desired_key) -> + filter_map( + Keyword_list, + fun(Keyword) -> + {Key, Value} = Keyword, + case Key =:= Desired_key of + true -> + {ok, Value}; + + false -> + {error, nil} + end + end + ). + +-spec do_pop(list(AWT), fun((AWT) -> boolean()), list(AWT)) -> {ok, + {AWT, list(AWT)}} | + {error, nil}. +do_pop(Haystack, Predicate, Checked) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Predicate(X) of + true -> + {ok, {X, append(reverse(Checked), Rest)}}; + + false -> + do_pop(Rest, Predicate, [X | Checked]) + end + end. + +-spec pop(list(AGN), fun((AGN) -> boolean())) -> {ok, {AGN, list(AGN)}} | + {error, nil}. +pop(Haystack, Is_desired) -> + do_pop(Haystack, Is_desired, []). + +-spec do_pop_map(list(AXH), fun((AXH) -> {ok, AXU} | {error, any()}), list(AXH)) -> {ok, + {AXU, list(AXH)}} | + {error, nil}. +do_pop_map(Haystack, Mapper, Checked) -> + case Haystack of + [] -> + {error, nil}; + + [X | Rest] -> + case Mapper(X) of + {ok, Y} -> + {ok, {Y, append(reverse(Checked), Rest)}}; + + {error, _} -> + do_pop_map(Rest, Mapper, [X | Checked]) + end + end. + +-spec pop_map(list(AGW), fun((AGW) -> {ok, AGY} | {error, any()})) -> {ok, + {AGY, list(AGW)}} | + {error, nil}. +pop_map(Haystack, Is_desired) -> + do_pop_map(Haystack, Is_desired, []). + +-spec key_pop(list({AHF, AHG}), AHF) -> {ok, {AHG, list({AHF, AHG})}} | + {error, nil}. +key_pop(Haystack, Key) -> + pop_map( + Haystack, + fun(Entry) -> + {K, V} = Entry, + case K of + K@1 when K@1 =:= Key -> + {ok, V}; + + _ -> + {error, nil} + end + end + ). + +-spec key_set(list({AHL, AHM}), AHL, AHM) -> list({AHL, AHM}). +key_set(List, Key, Value) -> + case List of + [] -> + [{Key, Value}]; + + [{K, _} | Rest] when K =:= Key -> + [{Key, Value} | Rest]; + + [First | Rest@1] -> + [First | key_set(Rest@1, Key, Value)] + end. + +-spec each(list(AHP), fun((AHP) -> any())) -> nil. +each(List, F) -> + case List of + [] -> + nil; + + [X | Xs] -> + F(X), + each(Xs, F) + end. + +-spec try_each(list(AHS), fun((AHS) -> {ok, any()} | {error, AHV})) -> {ok, nil} | + {error, AHV}. +try_each(List, Fun) -> + case List of + [] -> + {ok, nil}; + + [X | Xs] -> + case Fun(X) of + {ok, _} -> + try_each(Xs, Fun); + + {error, E} -> + {error, E} + end + end. + +-spec do_partition(list(AZB), fun((AZB) -> boolean()), list(AZB), list(AZB)) -> {list(AZB), + list(AZB)}. +do_partition(List, Categorise, Trues, Falses) -> + case List of + [] -> + {reverse(Trues), reverse(Falses)}; + + [X | Xs] -> + case Categorise(X) of + true -> + do_partition(Xs, Categorise, [X | Trues], Falses); + + false -> + do_partition(Xs, Categorise, Trues, [X | Falses]) + end + end. + +-spec partition(list(AIF), fun((AIF) -> boolean())) -> {list(AIF), list(AIF)}. +partition(List, Categorise) -> + do_partition(List, Categorise, [], []). + +-spec permutations(list(AIJ)) -> list(list(AIJ)). +permutations(L) -> + case L of + [] -> + [[]]; + + _ -> + _pipe = L, + _pipe@5 = index_map(_pipe, fun(I_idx, I) -> _pipe@1 = L, + _pipe@2 = index_fold( + _pipe@1, + [], + fun(Acc, J, J_idx) -> case I_idx =:= J_idx of + true -> + Acc; + + false -> + [J | Acc] + end end + ), + _pipe@3 = reverse(_pipe@2), + _pipe@4 = permutations(_pipe@3), + map(_pipe@4, fun(Permutation) -> [I | Permutation] end) end), + concat(_pipe@5) + end. + +-spec do_window(list(list(AIN)), list(AIN), integer()) -> list(list(AIN)). +do_window(Acc, L, N) -> + Window = take(L, N), + case length(Window) =:= N of + true -> + do_window([Window | Acc], drop(L, 1), N); + + false -> + Acc + end. + +-spec window(list(AIT), integer()) -> list(list(AIT)). +window(L, N) -> + _pipe = do_window([], L, N), + reverse(_pipe). + +-spec window_by_2(list(AIX)) -> list({AIX, AIX}). +window_by_2(L) -> + zip(L, drop(L, 1)). + +-spec drop_while(list(AJA), fun((AJA) -> boolean())) -> list(AJA). +drop_while(List, Predicate) -> + case List of + [] -> + []; + + [X | Xs] -> + case Predicate(X) of + true -> + drop_while(Xs, Predicate); + + false -> + [X | Xs] + end + end. + +-spec do_take_while(list(AJD), fun((AJD) -> boolean()), list(AJD)) -> list(AJD). +do_take_while(List, Predicate, Acc) -> + case List of + [] -> + reverse(Acc); + + [First | Rest] -> + case Predicate(First) of + true -> + do_take_while(Rest, Predicate, [First | Acc]); + + false -> + reverse(Acc) + end + end. + +-spec take_while(list(AJH), fun((AJH) -> boolean())) -> list(AJH). +take_while(List, Predicate) -> + do_take_while(List, Predicate, []). + +-spec do_chunk(list(AJK), fun((AJK) -> AJM), AJM, list(AJK), list(list(AJK))) -> list(list(AJK)). +do_chunk(List, F, Previous_key, Current_chunk, Acc) -> + case List of + [First | Rest] -> + Key = F(First), + case Key =:= Previous_key of + false -> + New_acc = [reverse(Current_chunk) | Acc], + do_chunk(Rest, F, Key, [First], New_acc); + + _ -> + do_chunk(Rest, F, Key, [First | Current_chunk], Acc) + end; + + _ -> + reverse([reverse(Current_chunk) | Acc]) + end. + +-spec chunk(list(AJS), fun((AJS) -> any())) -> list(list(AJS)). +chunk(List, F) -> + case List of + [] -> + []; + + [First | Rest] -> + do_chunk(Rest, F, F(First), [First], []) + end. + +-spec do_sized_chunk( + list(AJX), + integer(), + integer(), + list(AJX), + list(list(AJX)) +) -> list(list(AJX)). +do_sized_chunk(List, Count, Left, Current_chunk, Acc) -> + case List of + [] -> + case Current_chunk of + [] -> + reverse(Acc); + + Remaining -> + reverse([reverse(Remaining) | Acc]) + end; + + [First | Rest] -> + Chunk = [First | Current_chunk], + case Left > 1 of + false -> + do_sized_chunk( + Rest, + Count, + Count, + [], + [reverse(Chunk) | Acc] + ); + + true -> + do_sized_chunk(Rest, Count, Left - 1, Chunk, Acc) + end + end. + +-spec sized_chunk(list(AKE), integer()) -> list(list(AKE)). +sized_chunk(List, Count) -> + do_sized_chunk(List, Count, Count, [], []). + +-spec reduce(list(AKI), fun((AKI, AKI) -> AKI)) -> {ok, AKI} | {error, nil}. +reduce(List, Fun) -> + case List of + [] -> + {error, nil}; + + [First | Rest] -> + {ok, fold(Rest, First, Fun)} + end. + +-spec do_scan(list(AKM), AKO, list(AKO), fun((AKO, AKM) -> AKO)) -> list(AKO). +do_scan(List, Accumulator, Accumulated, Fun) -> + case List of + [] -> + reverse(Accumulated); + + [X | Xs] -> + Next = Fun(Accumulator, X), + do_scan(Xs, Next, [Next | Accumulated], Fun) + end. + +-spec scan(list(AKR), AKT, fun((AKT, AKR) -> AKT)) -> list(AKT). +scan(List, Initial, Fun) -> + do_scan(List, Initial, [], Fun). + +-spec last(list(AKV)) -> {ok, AKV} | {error, nil}. +last(List) -> + _pipe = List, + reduce(_pipe, fun(_, Elem) -> Elem end). + +-spec combinations(list(AKZ), integer()) -> list(list(AKZ)). +combinations(Items, N) -> + case N of + 0 -> + [[]]; + + _ -> + case Items of + [] -> + []; + + [X | Xs] -> + First_combinations = begin + _pipe = map( + combinations(Xs, N - 1), + fun(Com) -> [X | Com] end + ), + reverse(_pipe) + end, + fold( + First_combinations, + combinations(Xs, N), + fun(Acc, C) -> [C | Acc] end + ) + end + end. + +-spec do_combination_pairs(list(ALD)) -> list(list({ALD, ALD})). +do_combination_pairs(Items) -> + case Items of + [] -> + []; + + [X | Xs] -> + First_combinations = map(Xs, fun(Other) -> {X, Other} end), + [First_combinations | do_combination_pairs(Xs)] + end. + +-spec combination_pairs(list(ALH)) -> list({ALH, ALH}). +combination_pairs(Items) -> + _pipe = do_combination_pairs(Items), + concat(_pipe). + +-spec transpose(list(list(ALO))) -> list(list(ALO)). +transpose(List_of_list) -> + Take_first = fun(List) -> case List of + [] -> + []; + + [F] -> + [F]; + + [F@1 | _] -> + [F@1] + end end, + case List_of_list of + [] -> + []; + + [[] | Xss] -> + transpose(Xss); + + Rows -> + Firsts = begin + _pipe = Rows, + _pipe@1 = map(_pipe, Take_first), + concat(_pipe@1) + end, + Rest = transpose(map(Rows, fun(_capture) -> drop(_capture, 1) end)), + [Firsts | Rest] + end. + +-spec interleave(list(list(ALK))) -> list(ALK). +interleave(List) -> + _pipe = transpose(List), + concat(_pipe). + +-spec do_shuffle_pair_unwrap(list({float(), ALT}), list(ALT)) -> list(ALT). +do_shuffle_pair_unwrap(List, Acc) -> + case List of + [] -> + Acc; + + [Elem_pair | Enumerable] -> + do_shuffle_pair_unwrap( + Enumerable, + [erlang:element(2, Elem_pair) | Acc] + ) + end. + +-spec do_shuffle_by_pair_indexes(list({float(), ALX})) -> list({float(), ALX}). +do_shuffle_by_pair_indexes(List_of_pairs) -> + sort( + List_of_pairs, + fun(A_pair, B_pair) -> + gleam@float:compare( + erlang:element(1, A_pair), + erlang:element(1, B_pair) + ) + end + ). + +-spec shuffle(list(AMA)) -> list(AMA). +shuffle(List) -> + _pipe = List, + _pipe@1 = fold( + _pipe, + [], + fun(Acc, A) -> [{gleam@float:random(+0.0, 1.0), A} | Acc] end + ), + _pipe@2 = do_shuffle_by_pair_indexes(_pipe@1), + do_shuffle_pair_unwrap(_pipe@2, []). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl new file mode 100644 index 0000000..33e89a9 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl @@ -0,0 +1,76 @@ +-module(gleam@map). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). + +-spec size(gleam@dict:dict(any(), any())) -> integer(). +size(Map) -> + gleam@dict:size(Map). + +-spec to_list(gleam@dict:dict(DAJ, DAK)) -> list({DAJ, DAK}). +to_list(Map) -> + gleam@dict:to_list(Map). + +-spec from_list(list({DAM, DAN})) -> gleam@dict:dict(DAM, DAN). +from_list(List) -> + gleam@dict:from_list(List). + +-spec has_key(gleam@dict:dict(DAR, any()), DAR) -> boolean(). +has_key(Map, Key) -> + gleam@dict:has_key(Map, Key). + +-spec new() -> gleam@dict:dict(any(), any()). +new() -> + gleam@dict:new(). + +-spec get(gleam@dict:dict(DAU, DAV), DAU) -> {ok, DAV} | {error, nil}. +get(From, Get) -> + gleam@dict:get(From, Get). + +-spec insert(gleam@dict:dict(DAZ, DBA), DAZ, DBA) -> gleam@dict:dict(DAZ, DBA). +insert(Map, Key, Value) -> + gleam@dict:insert(Map, Key, Value). + +-spec map_values(gleam@dict:dict(DBD, DBE), fun((DBD, DBE) -> DBF)) -> gleam@dict:dict(DBD, DBF). +map_values(Map, Fun) -> + gleam@dict:map_values(Map, Fun). + +-spec keys(gleam@dict:dict(DBI, any())) -> list(DBI). +keys(Map) -> + gleam@dict:keys(Map). + +-spec values(gleam@dict:dict(any(), DBL)) -> list(DBL). +values(Map) -> + gleam@dict:values(Map). + +-spec filter(gleam@dict:dict(DBO, DBP), fun((DBO, DBP) -> boolean())) -> gleam@dict:dict(DBO, DBP). +filter(Map, Predicate) -> + gleam@dict:filter(Map, Predicate). + +-spec take(gleam@dict:dict(DBS, DDM), list(DBS)) -> gleam@dict:dict(DBS, DDM). +take(Map, Desired_keys) -> + gleam@dict:take(Map, Desired_keys). + +-spec merge(gleam@dict:dict(DDN, DDO), gleam@dict:dict(DDN, DDO)) -> gleam@dict:dict(DDN, DDO). +merge(Map, New_entries) -> + gleam@dict:merge(Map, New_entries). + +-spec delete(gleam@dict:dict(DBZ, DDQ), DBZ) -> gleam@dict:dict(DBZ, DDQ). +delete(Map, Key) -> + gleam@dict:delete(Map, Key). + +-spec drop(gleam@dict:dict(DCC, DDS), list(DCC)) -> gleam@dict:dict(DCC, DDS). +drop(Map, Disallowed_keys) -> + gleam@dict:drop(Map, Disallowed_keys). + +-spec update( + gleam@dict:dict(DCG, DCH), + DCG, + fun((gleam@option:option(DCH)) -> DCH) +) -> gleam@dict:dict(DCG, DCH). +update(Map, Key, Fun) -> + gleam@dict:update(Map, Key, Fun). + +-spec fold(gleam@dict:dict(DCM, DCN), DCL, fun((DCL, DCM, DCN) -> DCL)) -> DCL. +fold(Map, Initial, Fun) -> + gleam@dict:fold(Map, Initial, Fun). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl new file mode 100644 index 0000000..5c20713 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl @@ -0,0 +1,147 @@ +-module(gleam@option). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, lazy_unwrap/2, map/2, flatten/1, then/2, 'or'/2, lazy_or/2, values/1]). +-export_type([option/1]). + +-type option(GB) :: {some, GB} | none. + +-spec do_all(list(option(GC)), list(GC)) -> option(list(GC)). +do_all(List, Acc) -> + case List of + [] -> + {some, Acc}; + + [X | Rest] -> + Accumulate = fun(Acc@1, Item) -> case {Acc@1, Item} of + {{some, Values}, {some, Value}} -> + {some, [Value | Values]}; + + {_, _} -> + none + end end, + Accumulate(do_all(Rest, Acc), X) + end. + +-spec all(list(option(GI))) -> option(list(GI)). +all(List) -> + do_all(List, []). + +-spec is_some(option(any())) -> boolean(). +is_some(Option) -> + Option /= none. + +-spec is_none(option(any())) -> boolean(). +is_none(Option) -> + Option =:= none. + +-spec to_result(option(GR), GU) -> {ok, GR} | {error, GU}. +to_result(Option, E) -> + case Option of + {some, A} -> + {ok, A}; + + _ -> + {error, E} + end. + +-spec from_result({ok, GX} | {error, any()}) -> option(GX). +from_result(Result) -> + case Result of + {ok, A} -> + {some, A}; + + _ -> + none + end. + +-spec unwrap(option(HC), HC) -> HC. +unwrap(Option, Default) -> + case Option of + {some, X} -> + X; + + none -> + Default + end. + +-spec lazy_unwrap(option(HE), fun(() -> HE)) -> HE. +lazy_unwrap(Option, Default) -> + case Option of + {some, X} -> + X; + + none -> + Default() + end. + +-spec map(option(HG), fun((HG) -> HI)) -> option(HI). +map(Option, Fun) -> + case Option of + {some, X} -> + {some, Fun(X)}; + + none -> + none + end. + +-spec flatten(option(option(HK))) -> option(HK). +flatten(Option) -> + case Option of + {some, X} -> + X; + + none -> + none + end. + +-spec then(option(HO), fun((HO) -> option(HQ))) -> option(HQ). +then(Option, Fun) -> + case Option of + {some, X} -> + Fun(X); + + none -> + none + end. + +-spec 'or'(option(HT), option(HT)) -> option(HT). +'or'(First, Second) -> + case First of + {some, _} -> + First; + + none -> + Second + end. + +-spec lazy_or(option(HX), fun(() -> option(HX))) -> option(HX). +lazy_or(First, Second) -> + case First of + {some, _} -> + First; + + none -> + Second() + end. + +-spec do_values(list(option(IB)), list(IB)) -> list(IB). +do_values(List, Acc) -> + case List of + [] -> + Acc; + + [X | Xs] -> + Accumulate = fun(Acc@1, Item) -> case Item of + {some, Value} -> + [Value | Acc@1]; + + none -> + Acc@1 + end end, + Accumulate(do_values(Xs, Acc), X) + end. + +-spec values(list(option(IG))) -> list(IG). +values(Options) -> + do_values(Options, []). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl new file mode 100644 index 0000000..61649b9 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl @@ -0,0 +1,79 @@ +-module(gleam@order). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([negate/1, to_int/1, compare/2, max/2, min/2, reverse/1]). +-export_type([order/0]). + +-type order() :: lt | eq | gt. + +-spec negate(order()) -> order(). +negate(Order) -> + case Order of + lt -> + gt; + + eq -> + eq; + + gt -> + lt + end. + +-spec to_int(order()) -> integer(). +to_int(Order) -> + case Order of + lt -> + -1; + + eq -> + 0; + + gt -> + 1 + end. + +-spec compare(order(), order()) -> order(). +compare(A, B) -> + case {A, B} of + {X, Y} when X =:= Y -> + eq; + + {lt, _} -> + lt; + + {eq, gt} -> + lt; + + {_, _} -> + gt + end. + +-spec max(order(), order()) -> order(). +max(A, B) -> + case {A, B} of + {gt, _} -> + gt; + + {eq, lt} -> + eq; + + {_, _} -> + B + end. + +-spec min(order(), order()) -> order(). +min(A, B) -> + case {A, B} of + {lt, _} -> + lt; + + {eq, gt} -> + eq; + + {_, _} -> + B + end. + +-spec reverse(fun((I, I) -> order())) -> fun((I, I) -> order()). +reverse(Orderer) -> + fun(A, B) -> Orderer(B, A) end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl new file mode 100644 index 0000000..f4eff52 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl @@ -0,0 +1,33 @@ +-module(gleam@pair). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([first/1, second/1, swap/1, map_first/2, map_second/2, new/2]). + +-spec first({FM, any()}) -> FM. +first(Pair) -> + {A, _} = Pair, + A. + +-spec second({any(), FP}) -> FP. +second(Pair) -> + {_, A} = Pair, + A. + +-spec swap({FQ, FR}) -> {FR, FQ}. +swap(Pair) -> + {A, B} = Pair, + {B, A}. + +-spec map_first({FS, FT}, fun((FS) -> FU)) -> {FU, FT}. +map_first(Pair, Fun) -> + {A, B} = Pair, + {Fun(A), B}. + +-spec map_second({FV, FW}, fun((FW) -> FX)) -> {FV, FX}. +map_second(Pair, Fun) -> + {A, B} = Pair, + {A, Fun(B)}. + +-spec new(FY, FZ) -> {FY, FZ}. +new(First, Second) -> + {First, Second}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl new file mode 100644 index 0000000..6b587e7 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl @@ -0,0 +1,121 @@ +-module(gleam@queue). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, from_list/1, to_list/1, is_empty/1, length/1, push_back/2, push_front/2, pop_back/1, pop_front/1, reverse/1, is_logically_equal/3, is_equal/2]). +-export_type([queue/1]). + +-opaque queue(DRL) :: {queue, list(DRL), list(DRL)}. + +-spec new() -> queue(any()). +new() -> + {queue, [], []}. + +-spec from_list(list(DRO)) -> queue(DRO). +from_list(List) -> + {queue, [], List}. + +-spec to_list(queue(DRR)) -> list(DRR). +to_list(Queue) -> + _pipe = erlang:element(3, Queue), + gleam@list:append(_pipe, gleam@list:reverse(erlang:element(2, Queue))). + +-spec is_empty(queue(any())) -> boolean(). +is_empty(Queue) -> + (erlang:element(2, Queue) =:= []) andalso (erlang:element(3, Queue) =:= []). + +-spec length(queue(any())) -> integer(). +length(Queue) -> + gleam@list:length(erlang:element(2, Queue)) + gleam@list:length( + erlang:element(3, Queue) + ). + +-spec push_back(queue(DRY), DRY) -> queue(DRY). +push_back(Queue, Item) -> + {queue, [Item | erlang:element(2, Queue)], erlang:element(3, Queue)}. + +-spec push_front(queue(DSB), DSB) -> queue(DSB). +push_front(Queue, Item) -> + {queue, erlang:element(2, Queue), [Item | erlang:element(3, Queue)]}. + +-spec pop_back(queue(DSE)) -> {ok, {DSE, queue(DSE)}} | {error, nil}. +pop_back(Queue) -> + case Queue of + {queue, [], []} -> + {error, nil}; + + {queue, [], Out} -> + pop_back({queue, gleam@list:reverse(Out), []}); + + {queue, [First | Rest], Out@1} -> + Queue@1 = {queue, Rest, Out@1}, + {ok, {First, Queue@1}} + end. + +-spec pop_front(queue(DSJ)) -> {ok, {DSJ, queue(DSJ)}} | {error, nil}. +pop_front(Queue) -> + case Queue of + {queue, [], []} -> + {error, nil}; + + {queue, In, []} -> + pop_front({queue, [], gleam@list:reverse(In)}); + + {queue, In@1, [First | Rest]} -> + Queue@1 = {queue, In@1, Rest}, + {ok, {First, Queue@1}} + end. + +-spec reverse(queue(DSO)) -> queue(DSO). +reverse(Queue) -> + {queue, erlang:element(3, Queue), erlang:element(2, Queue)}. + +-spec check_equal( + list(DSR), + list(DSR), + list(DSR), + list(DSR), + fun((DSR, DSR) -> boolean()) +) -> boolean(). +check_equal(Xs, X_tail, Ys, Y_tail, Eq) -> + case {Xs, X_tail, Ys, Y_tail} of + {[], [], [], []} -> + true; + + {[X | Xs@1], _, [Y | Ys@1], _} -> + case Eq(X, Y) of + false -> + false; + + true -> + check_equal(Xs@1, X_tail, Ys@1, Y_tail, Eq) + end; + + {[], [_ | _], _, _} -> + check_equal(gleam@list:reverse(X_tail), [], Ys, Y_tail, Eq); + + {_, _, [], [_ | _]} -> + check_equal(Xs, X_tail, gleam@list:reverse(Y_tail), [], Eq); + + {_, _, _, _} -> + false + end. + +-spec is_logically_equal(queue(DSW), queue(DSW), fun((DSW, DSW) -> boolean())) -> boolean(). +is_logically_equal(A, B, Element_is_equal) -> + check_equal( + erlang:element(3, A), + erlang:element(2, A), + erlang:element(3, B), + erlang:element(2, B), + Element_is_equal + ). + +-spec is_equal(queue(DSZ), queue(DSZ)) -> boolean(). +is_equal(A, B) -> + check_equal( + erlang:element(3, A), + erlang:element(2, A), + erlang:element(3, B), + erlang:element(2, B), + fun(A@1, B@1) -> A@1 =:= B@1 end + ). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl new file mode 100644 index 0000000..2d1c5fc --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl @@ -0,0 +1,33 @@ +-module(gleam@regex). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([compile/2, from_string/1, check/2, split/2, scan/2]). +-export_type([regex/0, match/0, compile_error/0, options/0]). + +-type regex() :: any(). + +-type match() :: {match, binary(), list(gleam@option:option(binary()))}. + +-type compile_error() :: {compile_error, binary(), integer()}. + +-type options() :: {options, boolean(), boolean()}. + +-spec compile(binary(), options()) -> {ok, regex()} | {error, compile_error()}. +compile(Pattern, Options) -> + gleam_stdlib:compile_regex(Pattern, Options). + +-spec from_string(binary()) -> {ok, regex()} | {error, compile_error()}. +from_string(Pattern) -> + compile(Pattern, {options, false, false}). + +-spec check(regex(), binary()) -> boolean(). +check(Regex, Content) -> + gleam_stdlib:regex_check(Regex, Content). + +-spec split(regex(), binary()) -> list(binary()). +split(Regex, String) -> + gleam_stdlib:regex_split(Regex, String). + +-spec scan(regex(), binary()) -> list(match()). +scan(Regex, String) -> + gleam_stdlib:regex_scan(Regex, String). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl new file mode 100644 index 0000000..7324e45 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl @@ -0,0 +1,201 @@ +-module(gleam@result). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, 'try'/2, then/2, unwrap/2, lazy_unwrap/2, unwrap_error/2, unwrap_both/1, nil_error/1, 'or'/2, lazy_or/2, all/1, partition/1, replace/2, replace_error/2, values/1, try_recover/2]). + +-spec is_ok({ok, any()} | {error, any()}) -> boolean(). +is_ok(Result) -> + case Result of + {error, _} -> + false; + + {ok, _} -> + true + end. + +-spec is_error({ok, any()} | {error, any()}) -> boolean(). +is_error(Result) -> + case Result of + {ok, _} -> + false; + + {error, _} -> + true + end. + +-spec map({ok, BFM} | {error, BFN}, fun((BFM) -> BFQ)) -> {ok, BFQ} | + {error, BFN}. +map(Result, Fun) -> + case Result of + {ok, X} -> + {ok, Fun(X)}; + + {error, E} -> + {error, E} + end. + +-spec map_error({ok, BFT} | {error, BFU}, fun((BFU) -> BFX)) -> {ok, BFT} | + {error, BFX}. +map_error(Result, Fun) -> + case Result of + {ok, X} -> + {ok, X}; + + {error, Error} -> + {error, Fun(Error)} + end. + +-spec flatten({ok, {ok, BGA} | {error, BGB}} | {error, BGB}) -> {ok, BGA} | + {error, BGB}. +flatten(Result) -> + case Result of + {ok, X} -> + X; + + {error, Error} -> + {error, Error} + end. + +-spec 'try'({ok, BGI} | {error, BGJ}, fun((BGI) -> {ok, BGM} | {error, BGJ})) -> {ok, + BGM} | + {error, BGJ}. +'try'(Result, Fun) -> + case Result of + {ok, X} -> + Fun(X); + + {error, E} -> + {error, E} + end. + +-spec then({ok, BGR} | {error, BGS}, fun((BGR) -> {ok, BGV} | {error, BGS})) -> {ok, + BGV} | + {error, BGS}. +then(Result, Fun) -> + 'try'(Result, Fun). + +-spec unwrap({ok, BHA} | {error, any()}, BHA) -> BHA. +unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default + end. + +-spec lazy_unwrap({ok, BHE} | {error, any()}, fun(() -> BHE)) -> BHE. +lazy_unwrap(Result, Default) -> + case Result of + {ok, V} -> + V; + + {error, _} -> + Default() + end. + +-spec unwrap_error({ok, any()} | {error, BHJ}, BHJ) -> BHJ. +unwrap_error(Result, Default) -> + case Result of + {ok, _} -> + Default; + + {error, E} -> + E + end. + +-spec unwrap_both({ok, BHM} | {error, BHM}) -> BHM. +unwrap_both(Result) -> + case Result of + {ok, A} -> + A; + + {error, A@1} -> + A@1 + end. + +-spec nil_error({ok, BHP} | {error, any()}) -> {ok, BHP} | {error, nil}. +nil_error(Result) -> + map_error(Result, fun(_) -> nil end). + +-spec 'or'({ok, BHV} | {error, BHW}, {ok, BHV} | {error, BHW}) -> {ok, BHV} | + {error, BHW}. +'or'(First, Second) -> + case First of + {ok, _} -> + First; + + {error, _} -> + Second + end. + +-spec lazy_or({ok, BID} | {error, BIE}, fun(() -> {ok, BID} | {error, BIE})) -> {ok, + BID} | + {error, BIE}. +lazy_or(First, Second) -> + case First of + {ok, _} -> + First; + + {error, _} -> + Second() + end. + +-spec all(list({ok, BIL} | {error, BIM})) -> {ok, list(BIL)} | {error, BIM}. +all(Results) -> + gleam@list:try_map(Results, fun(X) -> X end). + +-spec do_partition(list({ok, BJA} | {error, BJB}), list(BJA), list(BJB)) -> {list(BJA), + list(BJB)}. +do_partition(Results, Oks, Errors) -> + case Results of + [] -> + {Oks, Errors}; + + [{ok, A} | Rest] -> + do_partition(Rest, [A | Oks], Errors); + + [{error, E} | Rest@1] -> + do_partition(Rest@1, Oks, [E | Errors]) + end. + +-spec partition(list({ok, BIT} | {error, BIU})) -> {list(BIT), list(BIU)}. +partition(Results) -> + do_partition(Results, [], []). + +-spec replace({ok, any()} | {error, BJJ}, BJM) -> {ok, BJM} | {error, BJJ}. +replace(Result, Value) -> + case Result of + {ok, _} -> + {ok, Value}; + + {error, Error} -> + {error, Error} + end. + +-spec replace_error({ok, BJP} | {error, any()}, BJT) -> {ok, BJP} | {error, BJT}. +replace_error(Result, Error) -> + case Result of + {ok, X} -> + {ok, X}; + + {error, _} -> + {error, Error} + end. + +-spec values(list({ok, BJW} | {error, any()})) -> list(BJW). +values(Results) -> + gleam@list:filter_map(Results, fun(R) -> R end). + +-spec try_recover( + {ok, BKC} | {error, BKD}, + fun((BKD) -> {ok, BKC} | {error, BKG}) +) -> {ok, BKC} | {error, BKG}. +try_recover(Result, Fun) -> + case Result of + {ok, Value} -> + {ok, Value}; + + {error, Error} -> + Fun(Error) + end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl new file mode 100644 index 0000000..df87b13 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl @@ -0,0 +1,85 @@ +-module(gleam@set). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([new/0, size/1, insert/2, contains/2, delete/2, to_list/1, from_list/1, fold/3, filter/2, drop/2, take/2, union/2, intersection/2]). +-export_type([set/1]). + +-opaque set(DJZ) :: {set, gleam@dict:dict(DJZ, list(nil))}. + +-spec new() -> set(any()). +new() -> + {set, gleam@dict:new()}. + +-spec size(set(any())) -> integer(). +size(Set) -> + gleam@dict:size(erlang:element(2, Set)). + +-spec insert(set(DKF), DKF) -> set(DKF). +insert(Set, Member) -> + {set, gleam@dict:insert(erlang:element(2, Set), Member, [])}. + +-spec contains(set(DKI), DKI) -> boolean(). +contains(Set, Member) -> + _pipe = erlang:element(2, Set), + _pipe@1 = gleam@dict:get(_pipe, Member), + gleam@result:is_ok(_pipe@1). + +-spec delete(set(DKK), DKK) -> set(DKK). +delete(Set, Member) -> + {set, gleam@dict:delete(erlang:element(2, Set), Member)}. + +-spec to_list(set(DKN)) -> list(DKN). +to_list(Set) -> + gleam@dict:keys(erlang:element(2, Set)). + +-spec from_list(list(DKQ)) -> set(DKQ). +from_list(Members) -> + Map = gleam@list:fold( + Members, + gleam@dict:new(), + fun(M, K) -> gleam@dict:insert(M, K, []) end + ), + {set, Map}. + +-spec fold(set(DKT), DKV, fun((DKV, DKT) -> DKV)) -> DKV. +fold(Set, Initial, Reducer) -> + gleam@dict:fold( + erlang:element(2, Set), + Initial, + fun(A, K, _) -> Reducer(A, K) end + ). + +-spec filter(set(DKW), fun((DKW) -> boolean())) -> set(DKW). +filter(Set, Predicate) -> + {set, + gleam@dict:filter(erlang:element(2, Set), fun(M, _) -> Predicate(M) end)}. + +-spec drop(set(DKZ), list(DKZ)) -> set(DKZ). +drop(Set, Disallowed) -> + gleam@list:fold(Disallowed, Set, fun delete/2). + +-spec take(set(DLD), list(DLD)) -> set(DLD). +take(Set, Desired) -> + {set, gleam@dict:take(erlang:element(2, Set), Desired)}. + +-spec order(set(DLH), set(DLH)) -> {set(DLH), set(DLH)}. +order(First, Second) -> + case gleam@dict:size(erlang:element(2, First)) > gleam@dict:size( + erlang:element(2, Second) + ) of + true -> + {First, Second}; + + false -> + {Second, First} + end. + +-spec union(set(DLM), set(DLM)) -> set(DLM). +union(First, Second) -> + {Larger, Smaller} = order(First, Second), + fold(Smaller, Larger, fun insert/2). + +-spec intersection(set(DLQ), set(DLQ)) -> set(DLQ). +intersection(First, Second) -> + {Larger, Smaller} = order(First, Second), + take(Larger, to_list(Smaller)). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl new file mode 100644 index 0000000..6cba31d --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl @@ -0,0 +1,352 @@ +-module(gleam@string). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([is_empty/1, length/1, reverse/1, replace/3, lowercase/1, uppercase/1, compare/2, slice/3, crop/2, drop_left/2, drop_right/2, contains/2, starts_with/2, ends_with/2, split_once/2, append/2, concat/1, repeat/2, join/2, pad_left/3, pad_right/3, trim/1, trim_left/1, trim_right/1, pop_grapheme/1, to_graphemes/1, split/2, to_utf_codepoints/1, from_utf_codepoints/1, utf_codepoint/1, utf_codepoint_to_int/1, to_option/1, first/1, last/1, capitalise/1, inspect/1, byte_size/1]). +-export_type([direction/0]). + +-type direction() :: leading | trailing | both. + +-spec is_empty(binary()) -> boolean(). +is_empty(Str) -> + Str =:= <<""/utf8>>. + +-spec length(binary()) -> integer(). +length(String) -> + string:length(String). + +-spec do_reverse(binary()) -> binary(). +do_reverse(String) -> + _pipe = String, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:reverse(_pipe@1), + gleam@string_builder:to_string(_pipe@2). + +-spec reverse(binary()) -> binary(). +reverse(String) -> + do_reverse(String). + +-spec replace(binary(), binary(), binary()) -> binary(). +replace(String, Pattern, Substitute) -> + _pipe = String, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:replace(_pipe@1, Pattern, Substitute), + gleam@string_builder:to_string(_pipe@2). + +-spec lowercase(binary()) -> binary(). +lowercase(String) -> + string:lowercase(String). + +-spec uppercase(binary()) -> binary(). +uppercase(String) -> + string:uppercase(String). + +-spec compare(binary(), binary()) -> gleam@order:order(). +compare(A, B) -> + case A =:= B of + true -> + eq; + + _ -> + case gleam_stdlib:less_than(A, B) of + true -> + lt; + + _ -> + gt + end + end. + +-spec slice(binary(), integer(), integer()) -> binary(). +slice(String, Idx, Len) -> + case Len < 0 of + true -> + <<""/utf8>>; + + false -> + case Idx < 0 of + true -> + Translated_idx = length(String) + Idx, + case Translated_idx < 0 of + true -> + <<""/utf8>>; + + false -> + string:slice(String, Translated_idx, Len) + end; + + false -> + string:slice(String, Idx, Len) + end + end. + +-spec crop(binary(), binary()) -> binary(). +crop(String, Substring) -> + gleam_stdlib:crop_string(String, Substring). + +-spec drop_left(binary(), integer()) -> binary(). +drop_left(String, Num_graphemes) -> + case Num_graphemes < 0 of + true -> + String; + + false -> + slice(String, Num_graphemes, length(String) - Num_graphemes) + end. + +-spec drop_right(binary(), integer()) -> binary(). +drop_right(String, Num_graphemes) -> + case Num_graphemes < 0 of + true -> + String; + + false -> + slice(String, 0, length(String) - Num_graphemes) + end. + +-spec contains(binary(), binary()) -> boolean(). +contains(Haystack, Needle) -> + gleam_stdlib:contains_string(Haystack, Needle). + +-spec starts_with(binary(), binary()) -> boolean(). +starts_with(String, Prefix) -> + gleam_stdlib:string_starts_with(String, Prefix). + +-spec ends_with(binary(), binary()) -> boolean(). +ends_with(String, Suffix) -> + gleam_stdlib:string_ends_with(String, Suffix). + +-spec do_split_once(binary(), binary()) -> {ok, {binary(), binary()}} | + {error, nil}. +do_split_once(X, Substring) -> + case string:split(X, Substring) of + [First, Rest] -> + {ok, {First, Rest}}; + + _ -> + {error, nil} + end. + +-spec split_once(binary(), binary()) -> {ok, {binary(), binary()}} | + {error, nil}. +split_once(X, Substring) -> + do_split_once(X, Substring). + +-spec append(binary(), binary()) -> binary(). +append(First, Second) -> + _pipe = First, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:append(_pipe@1, Second), + gleam@string_builder:to_string(_pipe@2). + +-spec concat(list(binary())) -> binary(). +concat(Strings) -> + _pipe = Strings, + _pipe@1 = gleam@string_builder:from_strings(_pipe), + gleam@string_builder:to_string(_pipe@1). + +-spec repeat(binary(), integer()) -> binary(). +repeat(String, Times) -> + _pipe = gleam@iterator:repeat(String), + _pipe@1 = gleam@iterator:take(_pipe, Times), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec do_join(list(binary()), binary()) -> binary(). +do_join(Strings, Separator) -> + _pipe = Strings, + _pipe@1 = gleam@list:intersperse(_pipe, Separator), + concat(_pipe@1). + +-spec join(list(binary()), binary()) -> binary(). +join(Strings, Separator) -> + do_join(Strings, Separator). + +-spec padding(integer(), binary()) -> gleam@iterator:iterator(binary()). +padding(Size, Pad_string) -> + Pad_length = length(Pad_string), + Num_pads = case Pad_length of + 0 -> 0; + Gleam@denominator -> Size div Gleam@denominator + end, + Extra = case Pad_length of + 0 -> 0; + Gleam@denominator@1 -> Size rem Gleam@denominator@1 + end, + _pipe = gleam@iterator:repeat(Pad_string), + _pipe@1 = gleam@iterator:take(_pipe, Num_pads), + gleam@iterator:append( + _pipe@1, + gleam@iterator:single(slice(Pad_string, 0, Extra)) + ). + +-spec pad_left(binary(), integer(), binary()) -> binary(). +pad_left(String, Desired_length, Pad_string) -> + Current_length = length(String), + To_pad_length = Desired_length - Current_length, + _pipe = padding(To_pad_length, Pad_string), + _pipe@1 = gleam@iterator:append(_pipe, gleam@iterator:single(String)), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec pad_right(binary(), integer(), binary()) -> binary(). +pad_right(String, Desired_length, Pad_string) -> + Current_length = length(String), + To_pad_length = Desired_length - Current_length, + _pipe = gleam@iterator:single(String), + _pipe@1 = gleam@iterator:append(_pipe, padding(To_pad_length, Pad_string)), + _pipe@2 = gleam@iterator:to_list(_pipe@1), + concat(_pipe@2). + +-spec do_trim(binary()) -> binary(). +do_trim(String) -> + string:trim(String, both). + +-spec trim(binary()) -> binary(). +trim(String) -> + do_trim(String). + +-spec do_trim_left(binary()) -> binary(). +do_trim_left(String) -> + string:trim(String, leading). + +-spec trim_left(binary()) -> binary(). +trim_left(String) -> + do_trim_left(String). + +-spec do_trim_right(binary()) -> binary(). +do_trim_right(String) -> + string:trim(String, trailing). + +-spec trim_right(binary()) -> binary(). +trim_right(String) -> + do_trim_right(String). + +-spec pop_grapheme(binary()) -> {ok, {binary(), binary()}} | {error, nil}. +pop_grapheme(String) -> + gleam_stdlib:string_pop_grapheme(String). + +-spec do_to_graphemes(binary(), list(binary())) -> list(binary()). +do_to_graphemes(String, Acc) -> + case pop_grapheme(String) of + {ok, {Grapheme, Rest}} -> + do_to_graphemes(Rest, [Grapheme | Acc]); + + _ -> + Acc + end. + +-spec to_graphemes(binary()) -> list(binary()). +to_graphemes(String) -> + _pipe = do_to_graphemes(String, []), + gleam@list:reverse(_pipe). + +-spec split(binary(), binary()) -> list(binary()). +split(X, Substring) -> + case Substring of + <<""/utf8>> -> + to_graphemes(X); + + _ -> + _pipe = X, + _pipe@1 = gleam@string_builder:from_string(_pipe), + _pipe@2 = gleam@string_builder:split(_pipe@1, Substring), + gleam@list:map(_pipe@2, fun gleam@string_builder:to_string/1) + end. + +-spec do_to_utf_codepoints_impl(bitstring(), list(integer())) -> list(integer()). +do_to_utf_codepoints_impl(Bit_array, Acc) -> + case Bit_array of + <> -> + do_to_utf_codepoints_impl(Rest, [First | Acc]); + + _ -> + Acc + end. + +-spec do_to_utf_codepoints(binary()) -> list(integer()). +do_to_utf_codepoints(String) -> + _pipe = do_to_utf_codepoints_impl(<>, []), + gleam@list:reverse(_pipe). + +-spec to_utf_codepoints(binary()) -> list(integer()). +to_utf_codepoints(String) -> + do_to_utf_codepoints(String). + +-spec from_utf_codepoints(list(integer())) -> binary(). +from_utf_codepoints(Utf_codepoints) -> + gleam_stdlib:utf_codepoint_list_to_string(Utf_codepoints). + +-spec utf_codepoint(integer()) -> {ok, integer()} | {error, nil}. +utf_codepoint(Value) -> + case Value of + I when I > 1114111 -> + {error, nil}; + + 65534 -> + {error, nil}; + + 65535 -> + {error, nil}; + + I@1 when (I@1 >= 55296) andalso (I@1 =< 57343) -> + {error, nil}; + + I@2 -> + {ok, gleam_stdlib:identity(I@2)} + end. + +-spec utf_codepoint_to_int(integer()) -> integer(). +utf_codepoint_to_int(Cp) -> + gleam_stdlib:identity(Cp). + +-spec to_option(binary()) -> gleam@option:option(binary()). +to_option(S) -> + case S of + <<""/utf8>> -> + none; + + _ -> + {some, S} + end. + +-spec first(binary()) -> {ok, binary()} | {error, nil}. +first(S) -> + case pop_grapheme(S) of + {ok, {First, _}} -> + {ok, First}; + + {error, E} -> + {error, E} + end. + +-spec last(binary()) -> {ok, binary()} | {error, nil}. +last(S) -> + case pop_grapheme(S) of + {ok, {First, <<""/utf8>>}} -> + {ok, First}; + + {ok, {_, Rest}} -> + {ok, slice(Rest, -1, 1)}; + + {error, E} -> + {error, E} + end. + +-spec capitalise(binary()) -> binary(). +capitalise(S) -> + case pop_grapheme(S) of + {ok, {First, Rest}} -> + append(uppercase(First), lowercase(Rest)); + + _ -> + <<""/utf8>> + end. + +-spec inspect(any()) -> binary(). +inspect(Term) -> + _pipe = gleam_stdlib:inspect(Term), + gleam@string_builder:to_string(_pipe). + +-spec byte_size(binary()) -> integer(). +byte_size(String) -> + erlang:byte_size(String). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl new file mode 100644 index 0000000..693e840 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl @@ -0,0 +1,91 @@ +-module(gleam@string_builder). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([prepend_builder/2, append_builder/2, new/0, from_strings/1, concat/1, from_string/1, prepend/2, append/2, to_string/1, byte_size/1, join/2, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). +-export_type([string_builder/0, direction/0]). + +-type string_builder() :: any(). + +-type direction() :: all. + +-spec prepend_builder(string_builder(), string_builder()) -> string_builder(). +prepend_builder(Builder, Prefix) -> + gleam_stdlib:iodata_append(Prefix, Builder). + +-spec append_builder(string_builder(), string_builder()) -> string_builder(). +append_builder(Builder, Suffix) -> + gleam_stdlib:iodata_append(Builder, Suffix). + +-spec new() -> string_builder(). +new() -> + gleam_stdlib:identity([]). + +-spec from_strings(list(binary())) -> string_builder(). +from_strings(Strings) -> + gleam_stdlib:identity(Strings). + +-spec concat(list(string_builder())) -> string_builder(). +concat(Builders) -> + gleam_stdlib:identity(Builders). + +-spec from_string(binary()) -> string_builder(). +from_string(String) -> + gleam_stdlib:identity(String). + +-spec prepend(string_builder(), binary()) -> string_builder(). +prepend(Builder, Prefix) -> + append_builder(from_string(Prefix), Builder). + +-spec append(string_builder(), binary()) -> string_builder(). +append(Builder, Second) -> + append_builder(Builder, from_string(Second)). + +-spec to_string(string_builder()) -> binary(). +to_string(Builder) -> + unicode:characters_to_binary(Builder). + +-spec byte_size(string_builder()) -> integer(). +byte_size(Builder) -> + erlang:iolist_size(Builder). + +-spec join(list(string_builder()), binary()) -> string_builder(). +join(Builders, Sep) -> + _pipe = Builders, + _pipe@1 = gleam@list:intersperse(_pipe, from_string(Sep)), + concat(_pipe@1). + +-spec lowercase(string_builder()) -> string_builder(). +lowercase(Builder) -> + string:lowercase(Builder). + +-spec uppercase(string_builder()) -> string_builder(). +uppercase(Builder) -> + string:uppercase(Builder). + +-spec reverse(string_builder()) -> string_builder(). +reverse(Builder) -> + string:reverse(Builder). + +-spec do_split(string_builder(), binary()) -> list(string_builder()). +do_split(Iodata, Pattern) -> + string:split(Iodata, Pattern, all). + +-spec split(string_builder(), binary()) -> list(string_builder()). +split(Iodata, Pattern) -> + do_split(Iodata, Pattern). + +-spec do_replace(string_builder(), binary(), binary()) -> string_builder(). +do_replace(Iodata, Pattern, Substitute) -> + string:replace(Iodata, Pattern, Substitute, all). + +-spec replace(string_builder(), binary(), binary()) -> string_builder(). +replace(Builder, Pattern, Substitute) -> + do_replace(Builder, Pattern, Substitute). + +-spec is_equal(string_builder(), string_builder()) -> boolean(). +is_equal(A, B) -> + string:equal(A, B). + +-spec is_empty(string_builder()) -> boolean(). +is_empty(Builder) -> + string:is_empty(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl new file mode 100644 index 0000000..7ec4fe7 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl @@ -0,0 +1,252 @@ +-module(gleam@uri). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([parse/1, parse_query/1, percent_encode/1, query_to_string/1, percent_decode/1, path_segments/1, to_string/1, origin/1, merge/2]). +-export_type([uri/0]). + +-type uri() :: {uri, + gleam@option:option(binary()), + gleam@option:option(binary()), + gleam@option:option(binary()), + gleam@option:option(integer()), + binary(), + gleam@option:option(binary()), + gleam@option:option(binary())}. + +-spec parse(binary()) -> {ok, uri()} | {error, nil}. +parse(Uri_string) -> + gleam_stdlib:uri_parse(Uri_string). + +-spec parse_query(binary()) -> {ok, list({binary(), binary()})} | {error, nil}. +parse_query(Query) -> + gleam_stdlib:parse_query(Query). + +-spec percent_encode(binary()) -> binary(). +percent_encode(Value) -> + gleam_stdlib:percent_encode(Value). + +-spec query_pair({binary(), binary()}) -> gleam@string_builder:string_builder(). +query_pair(Pair) -> + gleam@string_builder:from_strings( + [percent_encode(erlang:element(1, Pair)), + <<"="/utf8>>, + percent_encode(erlang:element(2, Pair))] + ). + +-spec query_to_string(list({binary(), binary()})) -> binary(). +query_to_string(Query) -> + _pipe = Query, + _pipe@1 = gleam@list:map(_pipe, fun query_pair/1), + _pipe@2 = gleam@list:intersperse( + _pipe@1, + gleam@string_builder:from_string(<<"&"/utf8>>) + ), + _pipe@3 = gleam@string_builder:concat(_pipe@2), + gleam@string_builder:to_string(_pipe@3). + +-spec percent_decode(binary()) -> {ok, binary()} | {error, nil}. +percent_decode(Value) -> + gleam_stdlib:percent_decode(Value). + +-spec do_remove_dot_segments(list(binary()), list(binary())) -> list(binary()). +do_remove_dot_segments(Input, Accumulator) -> + case Input of + [] -> + gleam@list:reverse(Accumulator); + + [Segment | Rest] -> + Accumulator@5 = case {Segment, Accumulator} of + {<<""/utf8>>, Accumulator@1} -> + Accumulator@1; + + {<<"."/utf8>>, Accumulator@2} -> + Accumulator@2; + + {<<".."/utf8>>, []} -> + []; + + {<<".."/utf8>>, [_ | Accumulator@3]} -> + Accumulator@3; + + {Segment@1, Accumulator@4} -> + [Segment@1 | Accumulator@4] + end, + do_remove_dot_segments(Rest, Accumulator@5) + end. + +-spec remove_dot_segments(list(binary())) -> list(binary()). +remove_dot_segments(Input) -> + do_remove_dot_segments(Input, []). + +-spec path_segments(binary()) -> list(binary()). +path_segments(Path) -> + remove_dot_segments(gleam@string:split(Path, <<"/"/utf8>>)). + +-spec to_string(uri()) -> binary(). +to_string(Uri) -> + Parts = case erlang:element(8, Uri) of + {some, Fragment} -> + [<<"#"/utf8>>, Fragment]; + + _ -> + [] + end, + Parts@1 = case erlang:element(7, Uri) of + {some, Query} -> + [<<"?"/utf8>>, Query | Parts]; + + _ -> + Parts + end, + Parts@2 = [erlang:element(6, Uri) | Parts@1], + Parts@3 = case {erlang:element(4, Uri), + gleam@string:starts_with(erlang:element(6, Uri), <<"/"/utf8>>)} of + {{some, Host}, false} when Host =/= <<""/utf8>> -> + [<<"/"/utf8>> | Parts@2]; + + {_, _} -> + Parts@2 + end, + Parts@4 = case {erlang:element(4, Uri), erlang:element(5, Uri)} of + {{some, _}, {some, Port}} -> + [<<":"/utf8>>, gleam@int:to_string(Port) | Parts@3]; + + {_, _} -> + Parts@3 + end, + Parts@5 = case {erlang:element(2, Uri), + erlang:element(3, Uri), + erlang:element(4, Uri)} of + {{some, S}, {some, U}, {some, H}} -> + [S, <<"://"/utf8>>, U, <<"@"/utf8>>, H | Parts@4]; + + {{some, S@1}, none, {some, H@1}} -> + [S@1, <<"://"/utf8>>, H@1 | Parts@4]; + + {{some, S@2}, {some, _}, none} -> + [S@2, <<":"/utf8>> | Parts@4]; + + {{some, S@2}, none, none} -> + [S@2, <<":"/utf8>> | Parts@4]; + + {none, none, {some, H@2}} -> + [<<"//"/utf8>>, H@2 | Parts@4]; + + {_, _, _} -> + Parts@4 + end, + gleam@string:concat(Parts@5). + +-spec origin(uri()) -> {ok, binary()} | {error, nil}. +origin(Uri) -> + {uri, Scheme, _, Host, Port, _, _, _} = Uri, + case Scheme of + {some, <<"https"/utf8>>} when Port =:= {some, 443} -> + Origin = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, + {ok, to_string(Origin)}; + + {some, <<"http"/utf8>>} when Port =:= {some, 80} -> + Origin@1 = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, + {ok, to_string(Origin@1)}; + + {some, S} when (S =:= <<"http"/utf8>>) orelse (S =:= <<"https"/utf8>>) -> + Origin@2 = {uri, Scheme, none, Host, Port, <<""/utf8>>, none, none}, + {ok, to_string(Origin@2)}; + + _ -> + {error, nil} + end. + +-spec drop_last(list(DFL)) -> list(DFL). +drop_last(Elements) -> + gleam@list:take(Elements, gleam@list:length(Elements) - 1). + +-spec join_segments(list(binary())) -> binary(). +join_segments(Segments) -> + gleam@string:join([<<""/utf8>> | Segments], <<"/"/utf8>>). + +-spec merge(uri(), uri()) -> {ok, uri()} | {error, nil}. +merge(Base, Relative) -> + case Base of + {uri, {some, _}, _, {some, _}, _, _, _, _} -> + case Relative of + {uri, _, _, {some, _}, _, _, _, _} -> + Path = begin + _pipe = gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ), + _pipe@1 = remove_dot_segments(_pipe), + join_segments(_pipe@1) + end, + Resolved = {uri, + gleam@option:'or'( + erlang:element(2, Relative), + erlang:element(2, Base) + ), + none, + erlang:element(4, Relative), + gleam@option:'or'( + erlang:element(5, Relative), + erlang:element(5, Base) + ), + Path, + erlang:element(7, Relative), + erlang:element(8, Relative)}, + {ok, Resolved}; + + _ -> + {New_path, New_query} = case erlang:element(6, Relative) of + <<""/utf8>> -> + {erlang:element(6, Base), + gleam@option:'or'( + erlang:element(7, Relative), + erlang:element(7, Base) + )}; + + _ -> + Path_segments = case gleam@string:starts_with( + erlang:element(6, Relative), + <<"/"/utf8>> + ) of + true -> + gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ); + + false -> + _pipe@2 = gleam@string:split( + erlang:element(6, Base), + <<"/"/utf8>> + ), + _pipe@3 = drop_last(_pipe@2), + gleam@list:append( + _pipe@3, + gleam@string:split( + erlang:element(6, Relative), + <<"/"/utf8>> + ) + ) + end, + Path@1 = begin + _pipe@4 = Path_segments, + _pipe@5 = remove_dot_segments(_pipe@4), + join_segments(_pipe@5) + end, + {Path@1, erlang:element(7, Relative)} + end, + Resolved@1 = {uri, + erlang:element(2, Base), + none, + erlang:element(4, Base), + erlang:element(5, Base), + New_path, + New_query, + erlang:element(8, Relative)}, + {ok, Resolved@1} + end; + + _ -> + {error, nil} + end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src new file mode 100644 index 0000000..bcf08e2 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src @@ -0,0 +1,31 @@ +{application, gleam_stdlib, [ + {vsn, "0.33.0"}, + {applications, []}, + {description, "A standard library for the Gleam programming language"}, + {modules, [gleam@base, + gleam@bit_array, + gleam@bit_builder, + gleam@bit_string, + gleam@bool, + gleam@bytes_builder, + gleam@dict, + gleam@dynamic, + gleam@float, + gleam@function, + gleam@int, + gleam@io, + gleam@iterator, + gleam@list, + gleam@map, + gleam@option, + gleam@order, + gleam@pair, + gleam@queue, + gleam@regex, + gleam@result, + gleam@set, + gleam@string, + gleam@string_builder, + gleam@uri]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl new file mode 100644 index 0000000..c6ea125 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl @@ -0,0 +1,529 @@ +-module(gleam_stdlib). + +-export([ + map_get/2, iodata_append/2, identity/1, decode_int/1, decode_bool/1, + decode_float/1, decode_list/1, decode_option/2, decode_field/2, parse_int/1, + parse_float/1, less_than/2, string_pop_grapheme/1, string_starts_with/2, + wrap_list/1, string_ends_with/2, string_pad/4, decode_map/1, uri_parse/1, + bit_array_int_to_u32/1, bit_array_int_from_u32/1, decode_result/1, + bit_array_slice/3, decode_bit_array/1, compile_regex/2, regex_scan/2, + percent_encode/1, percent_decode/1, regex_check/2, regex_split/2, + base_decode64/1, parse_query/1, bit_array_concat/1, size_of_tuple/1, + decode_tuple/1, decode_tuple2/1, decode_tuple3/1, decode_tuple4/1, + decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1, + println/1, print_error/1, println_error/1, inspect/1, float_to_string/1, + int_from_base_string/2, utf_codepoint_list_to_string/1, contains_string/2, + crop_string/2, base16_decode/1 +]). + +%% Taken from OTP's uri_string module +-define(DEC2HEX(X), + if ((X) >= 0) andalso ((X) =< 9) -> (X) + $0; + ((X) >= 10) andalso ((X) =< 15) -> (X) + $A - 10 + end). + +%% Taken from OTP's uri_string module +-define(HEX2DEC(X), + if ((X) >= $0) andalso ((X) =< $9) -> (X) - $0; + ((X) >= $A) andalso ((X) =< $F) -> (X) - $A + 10; + ((X) >= $a) andalso ((X) =< $f) -> (X) - $a + 10 + end). + +-define(is_lowercase_char(X), (X > 96 andalso X < 123)). +-define(is_underscore_char(X), (X == 95)). +-define(is_digit_char(X), (X > 47 andalso X < 58)). + +uppercase(X) -> X - 32. + +map_get(Map, Key) -> + case maps:find(Key, Map) of + error -> {error, nil}; + OkFound -> OkFound + end. + +iodata_append(Iodata, String) -> [Iodata, String]. + +identity(X) -> X. + +decode_error_msg(Expected, Data) when is_binary(Expected) -> + decode_error(Expected, classify_dynamic(Data)). +decode_error(Expected, Got) when is_binary(Expected) andalso is_binary(Got) -> + {error, [{decode_error, Expected, Got, []}]}. + +classify_dynamic(nil) -> <<"Nil">>; +classify_dynamic(X) when is_atom(X) -> <<"Atom">>; +classify_dynamic(X) when is_binary(X) -> <<"String">>; +classify_dynamic(X) when is_bitstring(X) -> <<"BitArray">>; +classify_dynamic(X) when is_integer(X) -> <<"Int">>; +classify_dynamic(X) when is_float(X) -> <<"Float">>; +classify_dynamic(X) when is_list(X) -> <<"List">>; +classify_dynamic(X) when is_boolean(X) -> <<"Bool">>; +classify_dynamic(X) when is_map(X) -> <<"Map">>; +classify_dynamic(X) when is_tuple(X) -> + iolist_to_binary(["Tuple of ", integer_to_list(tuple_size(X)), " elements"]); +classify_dynamic(X) when + is_function(X, 0) orelse is_function(X, 1) orelse is_function(X, 2) orelse + is_function(X, 3) orelse is_function(X, 4) orelse is_function(X, 5) orelse + is_function(X, 6) orelse is_function(X, 7) orelse is_function(X, 8) orelse + is_function(X, 9) orelse is_function(X, 10) orelse is_function(X, 11) orelse + is_function(X, 12) -> <<"Function">>; +classify_dynamic(_) -> <<"Some other type">>. + +decode_map(Data) when is_map(Data) -> {ok, Data}; +decode_map(Data) -> decode_error_msg(<<"Map">>, Data). + +decode_bit_array(Data) when is_bitstring(Data) -> {ok, Data}; +decode_bit_array(Data) -> decode_error_msg(<<"BitArray">>, Data). + +decode_int(Data) when is_integer(Data) -> {ok, Data}; +decode_int(Data) -> decode_error_msg(<<"Int">>, Data). + +decode_float(Data) when is_float(Data) -> {ok, Data}; +decode_float(Data) -> decode_error_msg(<<"Float">>, Data). + +decode_bool(Data) when is_boolean(Data) -> {ok, Data}; +decode_bool(Data) -> decode_error_msg(<<"Bool">>, Data). + +decode_list(Data) when is_list(Data) -> {ok, Data}; +decode_list(Data) -> decode_error_msg(<<"List">>, Data). + +decode_field(Data, Key) when is_map(Data) -> + case Data of + #{Key := Value} -> {ok, {some, Value}}; + _ -> + {ok, none} + end; +decode_field(Data, _) -> + decode_error_msg(<<"Map">>, Data). + +size_of_tuple(Data) -> tuple_size(Data). + +tuple_get(_tup, Index) when Index < 0 -> {error, nil}; +tuple_get(Data, Index) when Index >= tuple_size(Data) -> {error, nil}; +tuple_get(Data, Index) -> {ok, element(Index + 1, Data)}. + +decode_tuple(Data) when is_tuple(Data) -> {ok, Data}; +decode_tuple(Data) -> decode_error_msg(<<"Tuple">>, Data). + +decode_tuple2({_,_} = A) -> {ok, A}; +decode_tuple2([A,B]) -> {ok, {A,B}}; +decode_tuple2(Data) -> decode_error_msg(<<"Tuple of 2 elements">>, Data). + +decode_tuple3({_,_,_} = A) -> {ok, A}; +decode_tuple3([A,B,C]) -> {ok, {A,B,C}}; +decode_tuple3(Data) -> decode_error_msg(<<"Tuple of 3 elements">>, Data). + +decode_tuple4({_,_,_,_} = A) -> {ok, A}; +decode_tuple4([A,B,C,D]) -> {ok, {A,B,C,D}}; +decode_tuple4(Data) -> decode_error_msg(<<"Tuple of 4 elements">>, Data). + +decode_tuple5({_,_,_,_,_} = A) -> {ok, A}; +decode_tuple5([A,B,C,D,E]) -> {ok, {A,B,C,D,E}}; +decode_tuple5(Data) -> decode_error_msg(<<"Tuple of 5 elements">>, Data). + +decode_tuple6({_,_,_,_,_,_} = A) -> {ok, A}; +decode_tuple6([A,B,C,D,E,F]) -> {ok, {A,B,C,D,E,F}}; +decode_tuple6(Data) -> decode_error_msg(<<"Tuple of 6 elements">>, Data). + +decode_option(Term, F) -> + Decode = fun(Inner) -> + case F(Inner) of + {ok, Decoded} -> {ok, {some, Decoded}}; + Error -> Error + end + end, + case Term of + undefined -> {ok, none}; + error -> {ok, none}; + null -> {ok, none}; + none -> {ok, none}; + nil -> {ok, none}; + {some, Inner} -> Decode(Inner); + _ -> Decode(Term) + end. + +decode_result(Term) -> + case Term of + {ok, Inner} -> {ok, {ok, Inner}}; + ok -> {ok, {ok, nil}}; + {error, Inner} -> {ok, {error, Inner}}; + error -> {ok, {error, nil}}; + _ -> decode_error_msg(<<"Result">>, Term) + end. + +int_from_base_string(String, Base) -> + case catch binary_to_integer(String, Base) of + Int when is_integer(Int) -> {ok, Int}; + _ -> {error, nil} + end. + +parse_int(String) -> + case catch binary_to_integer(String) of + Int when is_integer(Int) -> {ok, Int}; + _ -> {error, nil} + end. + +parse_float(String) -> + case catch binary_to_float(String) of + Float when is_float(Float) -> {ok, Float}; + _ -> {error, nil} + end. + +less_than(Lhs, Rhs) -> + Lhs < Rhs. + +string_starts_with(_, <<>>) -> true; +string_starts_with(String, Prefix) when byte_size(Prefix) > byte_size(String) -> false; +string_starts_with(String, Prefix) -> + PrefixSize = byte_size(Prefix), + Prefix == binary_part(String, 0, PrefixSize). + +string_ends_with(_, <<>>) -> true; +string_ends_with(String, Suffix) when byte_size(Suffix) > byte_size(String) -> false; +string_ends_with(String, Suffix) -> + SuffixSize = byte_size(Suffix), + Suffix == binary_part(String, byte_size(String) - SuffixSize, SuffixSize). + +string_pad(String, Length, Dir, PadString) -> + Chars = string:pad(String, Length, Dir, binary_to_list(PadString)), + case unicode:characters_to_binary(Chars) of + Bin when is_binary(Bin) -> Bin; + Error -> erlang:error({gleam_error, {string_invalid_utf8, Error}}) + end. + +string_pop_grapheme(String) -> + case string:next_grapheme(String) of + [ Next | Rest ] -> + {ok, {unicode:characters_to_binary([Next]), unicode:characters_to_binary(Rest)}}; + _ -> {error, nil} + end. + +bit_array_concat(BitArrays) -> + list_to_bitstring(BitArrays). + +bit_array_slice(Bin, Pos, Len) -> + try {ok, binary:part(Bin, Pos, Len)} + catch error:badarg -> {error, nil} + end. + +bit_array_int_to_u32(I) when 0 =< I, I < 4294967296 -> + {ok, <>}; +bit_array_int_to_u32(_) -> + {error, nil}. + +bit_array_int_from_u32(<>) -> + {ok, I}; +bit_array_int_from_u32(_) -> + {error, nil}. + +compile_regex(String, Options) -> + {options, Caseless, Multiline} = Options, + OptionsList = [ + unicode, + ucp, + Caseless andalso caseless, + Multiline andalso multiline + ], + FilteredOptions = [Option || Option <- OptionsList, Option /= false], + case re:compile(String, FilteredOptions) of + {ok, MP} -> {ok, MP}; + {error, {Str, Pos}} -> + {error, {compile_error, unicode:characters_to_binary(Str), Pos}} + end. + +regex_check(Regex, String) -> + re:run(String, Regex) /= nomatch. + +regex_split(Regex, String) -> + re:split(String, Regex). + +regex_submatches(_, {-1, 0}) -> none; +regex_submatches(String, {Start, Length}) -> + BinarySlice = binary:part(String, {Start, Length}), + case string:is_empty(binary_to_list(BinarySlice)) of + true -> none; + false -> {some, BinarySlice} + end. + +regex_matches(String, [{Start, Length} | Submatches]) -> + Submatches1 = lists:map(fun(X) -> regex_submatches(String, X) end, Submatches), + {match, binary:part(String, Start, Length), Submatches1}. + +regex_scan(Regex, String) -> + case re:run(String, Regex, [global]) of + {match, Captured} -> lists:map(fun(X) -> regex_matches(String, X) end, Captured); + nomatch -> [] + end. + +base_decode64(S) -> + try {ok, base64:decode(S)} + catch error:_ -> {error, nil} + end. + +wrap_list(X) when is_list(X) -> X; +wrap_list(X) -> [X]. + +parse_query(Query) -> + case uri_string:dissect_query(Query) of + {error, _, _} -> {error, nil}; + Pairs -> + Pairs1 = lists:map(fun + ({K, true}) -> {K, <<"">>}; + (Pair) -> Pair + end, Pairs), + {ok, Pairs1} + end. + +percent_encode(B) -> percent_encode(B, <<>>). +percent_encode(<<>>, Acc) -> + Acc; +percent_encode(<>, Acc) -> + case percent_ok(H) of + true -> + percent_encode(T, <>); + false -> + <> = <>, + percent_encode(T, <>) + end. + +percent_decode(Cs) -> percent_decode(Cs, <<>>). +percent_decode(<<$%, C0, C1, Cs/binary>>, Acc) -> + case is_hex_digit(C0) andalso is_hex_digit(C1) of + true -> + B = ?HEX2DEC(C0)*16+?HEX2DEC(C1), + percent_decode(Cs, <>); + false -> + {error, nil} + end; +percent_decode(<>, Acc) -> + percent_decode(Cs, <>); +percent_decode(<<>>, Acc) -> + check_utf8(Acc). + +percent_ok($!) -> true; +percent_ok($$) -> true; +percent_ok($') -> true; +percent_ok($() -> true; +percent_ok($)) -> true; +percent_ok($*) -> true; +percent_ok($+) -> true; +percent_ok($-) -> true; +percent_ok($.) -> true; +percent_ok($_) -> true; +percent_ok($~) -> true; +percent_ok(C) when $0 =< C, C =< $9 -> true; +percent_ok(C) when $A =< C, C =< $Z -> true; +percent_ok(C) when $a =< C, C =< $z -> true; +percent_ok(_) -> false. + +is_hex_digit(C) -> + ($0 =< C andalso C =< $9) orelse ($a =< C andalso C =< $f) orelse ($A =< C andalso C =< $F). + +check_utf8(Cs) -> + case unicode:characters_to_list(Cs) of + {incomplete, _, _} -> {error, nil}; + {error, _, _} -> {error, nil}; + _ -> {ok, Cs} + end. + +uri_parse(String) -> + case uri_string:parse(String) of + {error, _, _} -> {error, nil}; + Uri -> + {ok, {uri, + maps_get_optional(Uri, scheme), + maps_get_optional(Uri, userinfo), + maps_get_optional(Uri, host), + maps_get_optional(Uri, port), + maps_get_or(Uri, path, <<>>), + maps_get_optional(Uri, query), + maps_get_optional(Uri, fragment) + }} + end. + +maps_get_optional(Map, Key) -> + try {some, maps:get(Key, Map)} + catch _:_ -> none + end. + +maps_get_or(Map, Key, Default) -> + try maps:get(Key, Map) + catch _:_ -> Default + end. + +print(String) -> + io:put_chars(String), + nil. + +println(String) -> + io:put_chars([String, $\n]), + nil. + +print_error(String) -> + io:put_chars(standard_error, String), + nil. + +println_error(String) -> + io:put_chars(standard_error, [String, $\n]), + nil. + +inspect(true) -> + "True"; +inspect(false) -> + "False"; +inspect(nil) -> + "Nil"; +inspect(Data) when is_map(Data) -> + Fields = [ + [<<"#(">>, inspect(Key), <<", ">>, inspect(Value), <<")">>] + || {Key, Value} <- maps:to_list(Data) + ], + ["dict.from_list([", lists:join(", ", Fields), "])"]; +inspect(Atom) when is_atom(Atom) -> + Binary = erlang:atom_to_binary(Atom), + case inspect_maybe_gleam_atom(Binary, none, <<>>) of + {ok, Inspected} -> Inspected; + {error, _} -> ["atom.create_from_string(\"", Binary, "\")"] + end; +inspect(Any) when is_integer(Any) -> + erlang:integer_to_list(Any); +inspect(Any) when is_float(Any) -> + io_lib_format:fwrite_g(Any); +inspect(Binary) when is_binary(Binary) -> + case inspect_maybe_utf8_string(Binary, <<>>) of + {ok, InspectedUtf8String} -> InspectedUtf8String; + {error, not_a_utf8_string} -> + Segments = [erlang:integer_to_list(X) || <> <= Binary], + ["<<", lists:join(", ", Segments), ">>"] + end; +inspect(Bits) when is_bitstring(Bits) -> + inspect_bit_array(Bits); +inspect(List) when is_list(List) -> + case inspect_list(List) of + {proper, Elements} -> ["[", Elements, "]"]; + {improper, Elements} -> ["//erl([", Elements, "])"] + end; +inspect(Any) when is_tuple(Any) % Record constructors + andalso is_atom(element(1, Any)) + andalso element(1, Any) =/= false + andalso element(1, Any) =/= true + andalso element(1, Any) =/= nil +-> + [Atom | ArgsList] = erlang:tuple_to_list(Any), + Args = lists:join(<<", ">>, + lists:map(fun inspect/1, ArgsList) + ), + [inspect(Atom), "(", Args, ")"]; +inspect(Tuple) when is_tuple(Tuple) -> + Elements = lists:map(fun inspect/1, erlang:tuple_to_list(Tuple)), + ["#(", lists:join(", ", Elements), ")"]; +inspect(Any) when is_function(Any) -> + {arity, Arity} = erlang:fun_info(Any, arity), + ArgsAsciiCodes = lists:seq($a, $a + Arity - 1), + Args = lists:join(<<", ">>, + lists:map(fun(Arg) -> <> end, ArgsAsciiCodes) + ), + ["//fn(", Args, ") { ... }"]; +inspect(Any) -> + ["//erl(", io_lib:format("~p", [Any]), ")"]. + + +inspect_maybe_gleam_atom(<<>>, none, _) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, none, _) when ?is_digit_char(First) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, none, _) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_">>, _PrevChar, _Acc) -> + {error, nil}; +inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, $_, _Acc) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, _PrevChar, _Acc) + when not (?is_lowercase_char(First) orelse ?is_underscore_char(First) orelse ?is_digit_char(First)) -> + {error, nil}; +inspect_maybe_gleam_atom(<>, none, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<<"_", Rest/binary>>, _PrevChar, Acc) -> + inspect_maybe_gleam_atom(Rest, $_, Acc); +inspect_maybe_gleam_atom(<>, $_, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<>, _PrevChar, Acc) -> + inspect_maybe_gleam_atom(Rest, First, <>); +inspect_maybe_gleam_atom(<<>>, _PrevChar, Acc) -> + {ok, Acc}; +inspect_maybe_gleam_atom(A, B, C) -> + erlang:display({A, B, C}), + throw({gleam_error, A, B, C}). + +inspect_list([]) -> + {proper, []}; +inspect_list([First]) -> + {proper, [inspect(First)]}; +inspect_list([First | Rest]) when is_list(Rest) -> + {Kind, Inspected} = inspect_list(Rest), + {Kind, [inspect(First), <<", ">> | Inspected]}; +inspect_list([First | ImproperTail]) -> + {improper, [inspect(First), <<" | ">>, inspect(ImproperTail)]}. + +inspect_bit_array(Bits) -> + Text = inspect_bit_array(Bits, <<"<<">>), + <>">>. + +inspect_bit_array(<<>>, Acc) -> + Acc; +inspect_bit_array(<>, Acc) -> + inspect_bit_array(Rest, append_segment(Acc, erlang:integer_to_binary(X))); +inspect_bit_array(Rest, Acc) -> + Size = bit_size(Rest), + <> = Rest, + X1 = erlang:integer_to_binary(X), + Size1 = erlang:integer_to_binary(Size), + Segment = <>, + inspect_bit_array(<<>>, append_segment(Acc, Segment)). + +append_segment(<<"<<">>, Segment) -> + <<"<<", Segment/binary>>; +append_segment(Acc, Segment) -> + <>. + + +inspect_maybe_utf8_string(Binary, Acc) -> + case Binary of + <<>> -> {ok, <<$", Acc/binary, $">>}; + <> -> + Escaped = case First of + $" -> <<$\\, $">>; + $\\ -> <<$\\, $\\>>; + $\r -> <<$\\, $r>>; + $\n -> <<$\\, $n>>; + $\t -> <<$\\, $t>>; + Other -> <> + end, + inspect_maybe_utf8_string(Rest, <>); + _ -> {error, not_a_utf8_string} + end. + +float_to_string(Float) when is_float(Float) -> + erlang:iolist_to_binary(io_lib_format:fwrite_g(Float)). + +utf_codepoint_list_to_string(List) -> + case unicode:characters_to_binary(List) of + {error, _} -> erlang:error({gleam_error, {string_invalid_utf8, List}}); + Binary -> Binary + end. + +crop_string(String, Prefix) -> + case string:find(String, Prefix) of + nomatch -> String; + New -> New + end. + +contains_string(String, Substring) -> + is_bitstring(string:find(String, Substring)). + +base16_decode(String) -> + try + {ok, binary:decode_hex(String)} + catch + _:_ -> {error, nil} + end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs new file mode 100644 index 0000000..a908b23 --- /dev/null +++ b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs @@ -0,0 +1,875 @@ +import { + BitArray, + Error, + List, + Ok, + Result, + UtfCodepoint, + stringBits, + toBitArray, + NonEmpty, + CustomType, +} from "./gleam.mjs"; +import { + CompileError as RegexCompileError, + Match as RegexMatch, +} from "./gleam/regex.mjs"; +import { DecodeError } from "./gleam/dynamic.mjs"; +import { Some, None } from "./gleam/option.mjs"; +import Dict from "./dict.mjs"; + +const Nil = undefined; +const NOT_FOUND = {}; + +export function identity(x) { + return x; +} + +export function parse_int(value) { + if (/^[-+]?(\d+)$/.test(value)) { + return new Ok(parseInt(value)); + } else { + return new Error(Nil); + } +} + +export function parse_float(value) { + if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { + return new Ok(parseFloat(value)); + } else { + return new Error(Nil); + } +} + +export function to_string(term) { + return term.toString(); +} + +export function float_to_string(float) { + const string = float.toString(); + if (string.indexOf(".") >= 0) { + return string; + } else { + return string + ".0"; + } +} + +export function int_to_base_string(int, base) { + return int.toString(base).toUpperCase(); +} + +const int_base_patterns = { + 2: /[^0-1]/, + 3: /[^0-2]/, + 4: /[^0-3]/, + 5: /[^0-4]/, + 6: /[^0-5]/, + 7: /[^0-6]/, + 8: /[^0-7]/, + 9: /[^0-8]/, + 10: /[^0-9]/, + 11: /[^0-9a]/, + 12: /[^0-9a-b]/, + 13: /[^0-9a-c]/, + 14: /[^0-9a-d]/, + 15: /[^0-9a-e]/, + 16: /[^0-9a-f]/, + 17: /[^0-9a-g]/, + 18: /[^0-9a-h]/, + 19: /[^0-9a-i]/, + 20: /[^0-9a-j]/, + 21: /[^0-9a-k]/, + 22: /[^0-9a-l]/, + 23: /[^0-9a-m]/, + 24: /[^0-9a-n]/, + 25: /[^0-9a-o]/, + 26: /[^0-9a-p]/, + 27: /[^0-9a-q]/, + 28: /[^0-9a-r]/, + 29: /[^0-9a-s]/, + 30: /[^0-9a-t]/, + 31: /[^0-9a-u]/, + 32: /[^0-9a-v]/, + 33: /[^0-9a-w]/, + 34: /[^0-9a-x]/, + 35: /[^0-9a-y]/, + 36: /[^0-9a-z]/, +}; + +export function int_from_base_string(string, base) { + if (int_base_patterns[base].test(string.replace(/^-/, "").toLowerCase())) { + return new Error(Nil); + } + + const result = parseInt(string, base); + + if (isNaN(result)) { + return new Error(Nil); + } + + return new Ok(result); +} + +export function string_replace(string, target, substitute) { + if (typeof string.replaceAll !== "undefined") { + return string.replaceAll(target, substitute); + } + // Fallback for older Node.js versions: + // 1. + // 2. + // TODO: This fallback could be remove once Node.js 14 is EOL + // aka on or after 2024-04-30 + return string.replace( + // $& means the whole matched string + new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), + substitute + ); +} + +export function string_reverse(string) { + return [...string].reverse().join(""); +} + +export function string_length(string) { + if (string === "") { + return 0; + } + const iterator = graphemes_iterator(string); + if (iterator) { + let i = 0; + for (const _ of iterator) { + i++; + } + return i; + } else { + return string.match(/./gsu).length; + } +} + +export function graphemes(string) { + return List.fromArray( + Array.from(graphemes_iterator(string)).map((item) => item.segment) + ); +} + +function graphemes_iterator(string) { + if (Intl && Intl.Segmenter) { + return new Intl.Segmenter().segment(string)[Symbol.iterator](); + } +} + +export function pop_grapheme(string) { + let first; + const iterator = graphemes_iterator(string); + if (iterator) { + first = iterator.next().value?.segment; + } else { + first = string.match(/./su)?.[0]; + } + if (first) { + return new Ok([first, string.slice(first.length)]); + } else { + return new Error(Nil); + } +} + +export function lowercase(string) { + return string.toLowerCase(); +} + +export function uppercase(string) { + return string.toUpperCase(); +} + +export function less_than(a, b) { + return a < b; +} + +export function add(a, b) { + return a + b; +} + +export function equal(a, b) { + return a === b; +} + +export function split(xs, pattern) { + return List.fromArray(xs.split(pattern)); +} + +export function join(xs, separator) { + const iterator = xs[Symbol.iterator](); + let result = iterator.next().value || ""; + let current = iterator.next(); + while (!current.done) { + result = result + separator + current.value; + current = iterator.next(); + } + return result; +} + +export function concat(xs) { + let result = ""; + for (const x of xs) { + result = result + x; + } + return result; +} + +export function length(data) { + return data.length; +} + +export function crop_string(string, substring) { + return string.substring(string.indexOf(substring)); +} + +export function contains_string(haystack, needle) { + return haystack.indexOf(needle) >= 0; +} + +export function starts_with(haystack, needle) { + return haystack.startsWith(needle); +} + +export function ends_with(haystack, needle) { + return haystack.endsWith(needle); +} + +export function split_once(haystack, needle) { + const index = haystack.indexOf(needle); + if (index >= 0) { + const before = haystack.slice(0, index); + const after = haystack.slice(index + needle.length); + return new Ok([before, after]); + } else { + return new Error(Nil); + } +} + +export function trim(string) { + return string.trim(); +} + +export function trim_left(string) { + return string.trimLeft(); +} + +export function trim_right(string) { + return string.trimRight(); +} + +export function bit_array_from_string(string) { + return toBitArray([stringBits(string)]); +} + +export function bit_array_concat(bit_arrays) { + return toBitArray(bit_arrays.toArray().map((b) => b.buffer)); +} + +export function console_log(term) { + console.log(term); +} + +export function console_error(term) { + console.error(term); +} + +export function crash(message) { + throw new globalThis.Error(message); +} + +export function bit_array_to_string(bit_array) { + try { + const decoder = new TextDecoder("utf-8", { fatal: true }); + return new Ok(decoder.decode(bit_array.buffer)); + } catch (_error) { + return new Error(Nil); + } +} + +export function print(string) { + if (typeof process === "object") { + process.stdout.write(string); // We can write without a trailing newline + } else if (typeof Deno === "object") { + Deno.stdout.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline + } else { + console.log(string); // We're in a browser. Newlines are mandated + } +} + +export function print_error(string) { + if (typeof process === "object" && process.stderr?.write) { + process.stderr.write(string); // We can write without a trailing newline + } else if (typeof Deno === "object") { + Deno.stderr.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline + } else { + console.error(string); // We're in a browser. Newlines are mandated + } +} + +export function print_debug(string) { + if (typeof process === "object" && process.stderr?.write) { + process.stderr.write(string + "\n"); // If we're in Node.js, use `stderr` + } else if (typeof Deno === "object") { + Deno.stderr.writeSync(new TextEncoder().encode(string + "\n")); // If we're in Deno, use `stderr` + } else { + console.log(string); // Otherwise, use `console.log` (so that it doesn't look like an error) + } +} + +export function ceiling(float) { + return Math.ceil(float); +} + +export function floor(float) { + return Math.floor(float); +} + +export function round(float) { + return Math.round(float); +} + +export function truncate(float) { + return Math.trunc(float); +} + +export function power(base, exponent) { + // It is checked in Gleam that: + // - The base is non-negative and that the exponent is not fractional. + // - The base is non-zero and the exponent is non-negative (otherwise + // the result will essentially be division by zero). + // It can thus be assumed that valid input is passed to the Math.pow + // function and a NaN or Infinity value will not be produced. + return Math.pow(base, exponent); +} + +export function random_uniform() { + const random_uniform_result = Math.random(); + // With round-to-nearest-even behavior, the ranges claimed for the functions below + // (excluding the one for Math.random() itself) aren't exact. + // If extremely large bounds are chosen (2^53 or higher), + // it's possible in extremely rare cases to calculate the usually-excluded upper bound. + // Note that as numbers in JavaScript are IEEE 754 floating point numbers + // See: + // Because of this, we just loop 'until' we get a valid result where 0.0 <= x < 1.0: + if (random_uniform_result === 1.0) { + return random_uniform(); + } + return random_uniform_result; +} + +export function bit_array_slice(bits, position, length) { + const start = Math.min(position, position + length); + const end = Math.max(position, position + length); + if (start < 0 || end > bits.length) return new Error(Nil); + const buffer = new Uint8Array(bits.buffer.buffer, start, Math.abs(length)); + return new Ok(new BitArray(buffer)); +} + +export function codepoint(int) { + return new UtfCodepoint(int); +} + +export function string_to_codepoint_integer_list(string) { + return List.fromArray(Array.from(string).map((item) => item.codePointAt(0))); +} + +export function utf_codepoint_list_to_string(utf_codepoint_integer_list) { + return utf_codepoint_integer_list + .toArray() + .map((x) => String.fromCodePoint(x.value)) + .join(""); +} + +export function utf_codepoint_to_int(utf_codepoint) { + return utf_codepoint.value; +} + +export function regex_check(regex, string) { + regex.lastIndex = 0; + return regex.test(string); +} + +export function compile_regex(pattern, options) { + try { + let flags = "gu"; + if (options.case_insensitive) flags += "i"; + if (options.multi_line) flags += "m"; + return new Ok(new RegExp(pattern, flags)); + } catch (error) { + const number = (error.columnNumber || 0) | 0; + return new Error(new RegexCompileError(error.message, number)); + } +} + +export function regex_scan(regex, string) { + const matches = Array.from(string.matchAll(regex)).map((match) => { + const content = match[0]; + const submatches = []; + for (let n = match.length - 1; n > 0; n--) { + if (match[n]) { + submatches[n - 1] = new Some(match[n]); + continue; + } + if (submatches.length > 0) { + submatches[n - 1] = new None(); + } + } + return new RegexMatch(content, List.fromArray(submatches)); + }); + return List.fromArray(matches); +} + +export function new_map() { + return Dict.new(); +} + +export function map_size(map) { + return map.size; +} + +export function map_to_list(map) { + return List.fromArray(map.entries()); +} + +export function map_remove(key, map) { + return map.delete(key); +} + +export function map_get(map, key) { + const value = map.get(key, NOT_FOUND); + if (value === NOT_FOUND) { + return new Error(Nil); + } + return new Ok(value); +} + +export function map_insert(key, value, map) { + return map.set(key, value); +} + +function unsafe_percent_decode(string) { + return decodeURIComponent((string || "").replace("+", " ")); +} + +export function percent_decode(string) { + try { + return new Ok(unsafe_percent_decode(string)); + } catch (_error) { + return new Error(Nil); + } +} + +export function percent_encode(string) { + return encodeURIComponent(string); +} + +export function parse_query(query) { + try { + const pairs = []; + for (const section of query.split("&")) { + const [key, value] = section.split("="); + if (!key) continue; + pairs.push([unsafe_percent_decode(key), unsafe_percent_decode(value)]); + } + return new Ok(List.fromArray(pairs)); + } catch (_error) { + return new Error(Nil); + } +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +export function encode64(bit_array) { + const aBytes = bit_array.buffer; + let nMod3 = 2; + let sB64Enc = ""; + + for (let nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { + nMod3 = nIdx % 3; + if (nIdx > 0 && ((nIdx * 4) / 3) % 76 === 0) { + sB64Enc += "\r\n"; + } + nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24); + if (nMod3 === 2 || aBytes.length - nIdx === 1) { + sB64Enc += String.fromCharCode( + uint6ToB64((nUint24 >>> 18) & 63), + uint6ToB64((nUint24 >>> 12) & 63), + uint6ToB64((nUint24 >>> 6) & 63), + uint6ToB64(nUint24 & 63) + ); + nUint24 = 0; + } + } + + return ( + sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + + (nMod3 === 2 ? "" : nMod3 === 1 ? "=" : "==") + ); +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +function uint6ToB64(nUint6) { + return nUint6 < 26 + ? nUint6 + 65 + : nUint6 < 52 + ? nUint6 + 71 + : nUint6 < 62 + ? nUint6 - 4 + : nUint6 === 62 + ? 43 + : nUint6 === 63 + ? 47 + : 65; +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +function b64ToUint6(nChr) { + return nChr > 64 && nChr < 91 + ? nChr - 65 + : nChr > 96 && nChr < 123 + ? nChr - 71 + : nChr > 47 && nChr < 58 + ? nChr + 4 + : nChr === 43 + ? 62 + : nChr === 47 + ? 63 + : 0; +} + +// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 +export function decode64(sBase64) { + if (sBase64.match(/[^A-Za-z0-9\+\/=]/g)) return new Error(Nil); + const sB64Enc = sBase64.replace(/=/g, ""); + const nInLen = sB64Enc.length; + const nOutLen = (nInLen * 3 + 1) >> 2; + const taBytes = new Uint8Array(nOutLen); + + for ( + let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; + nInIdx < nInLen; + nInIdx++ + ) { + nMod4 = nInIdx & 3; + nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4)); + if (nMod4 === 3 || nInLen - nInIdx === 1) { + for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { + taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255; + } + nUint24 = 0; + } + } + + return new Ok(new BitArray(taBytes)); +} + +export function classify_dynamic(data) { + if (typeof data === "string") { + return "String"; + } else if (data instanceof Result) { + return "Result"; + } else if (data instanceof List) { + return "List"; + } else if (data instanceof BitArray) { + return "BitArray"; + } else if (data instanceof Dict) { + return "Map"; + } else if (Number.isInteger(data)) { + return "Int"; + } else if (Array.isArray(data)) { + return `Tuple of ${data.length} elements`; + } else if (typeof data === "number") { + return "Float"; + } else if (data === null) { + return "Null"; + } else if (data === undefined) { + return "Nil"; + } else { + const type = typeof data; + return type.charAt(0).toUpperCase() + type.slice(1); + } +} + +function decoder_error(expected, got) { + return decoder_error_no_classify(expected, classify_dynamic(got)); +} + +function decoder_error_no_classify(expected, got) { + return new Error( + List.fromArray([new DecodeError(expected, got, List.fromArray([]))]) + ); +} + +export function decode_string(data) { + return typeof data === "string" + ? new Ok(data) + : decoder_error("String", data); +} + +export function decode_int(data) { + return Number.isInteger(data) ? new Ok(data) : decoder_error("Int", data); +} + +export function decode_float(data) { + return typeof data === "number" ? new Ok(data) : decoder_error("Float", data); +} + +export function decode_bool(data) { + return typeof data === "boolean" ? new Ok(data) : decoder_error("Bool", data); +} + +export function decode_bit_array(data) { + if (data instanceof BitArray) { + return new Ok(data); + } + if (data instanceof Uint8Array) { + return new Ok(new BitArray(data)); + } + return decoder_error("BitArray", data); +} + +export function decode_tuple(data) { + return Array.isArray(data) ? new Ok(data) : decoder_error("Tuple", data); +} + +export function decode_tuple2(data) { + return decode_tupleN(data, 2); +} + +export function decode_tuple3(data) { + return decode_tupleN(data, 3); +} + +export function decode_tuple4(data) { + return decode_tupleN(data, 4); +} + +export function decode_tuple5(data) { + return decode_tupleN(data, 5); +} + +export function decode_tuple6(data) { + return decode_tupleN(data, 6); +} + +function decode_tupleN(data, n) { + if (Array.isArray(data) && data.length == n) { + return new Ok(data); + } + + const list = decode_exact_length_list(data, n); + if (list) return new Ok(list); + + return decoder_error(`Tuple of ${n} elements`, data); +} + +function decode_exact_length_list(data, n) { + if (!(data instanceof List)) return; + + const elements = []; + let current = data; + + for (let i = 0; i < n; i++) { + if (!(current instanceof NonEmpty)) break; + elements.push(current.head); + current = current.tail; + } + + if (elements.length === n && !(current instanceof NonEmpty)) return elements; +} + +export function tuple_get(data, index) { + return index >= 0 && data.length > index + ? new Ok(data[index]) + : new Error(Nil); +} + +export function decode_list(data) { + if (Array.isArray(data)) { + return new Ok(List.fromArray(data)); + } + return data instanceof List ? new Ok(data) : decoder_error("List", data); +} + +export function decode_result(data) { + return data instanceof Result ? new Ok(data) : decoder_error("Result", data); +} + +export function decode_map(data) { + if (data instanceof Dict) { + return new Ok(Dict.fromMap(data)); + } + if (data == null) { + return decoder_error("Map", data); + } + if (typeof data !== "object") { + return decoder_error("Map", data); + } + const proto = Object.getPrototypeOf(data); + if (proto === Object.prototype || proto === null) { + return new Ok(Dict.fromObject(data)); + } + return decoder_error("Map", data); +} + +export function decode_option(data, decoder) { + if (data === null || data === undefined || data instanceof None) + return new Ok(new None()); + if (data instanceof Some) data = data[0]; + const result = decoder(data); + if (result.isOk()) { + return new Ok(new Some(result[0])); + } else { + return result; + } +} + +export function decode_field(value, name) { + const not_a_map_error = () => decoder_error("Map", value); + + if ( + value instanceof Dict || + value instanceof WeakMap || + value instanceof Map + ) { + const entry = map_get(value, name); + return new Ok(entry.isOk() ? new Some(entry[0]) : new None()); + } else if (Object.getPrototypeOf(value) == Object.prototype) { + return try_get_field(value, name, () => new Ok(new None())); + } else { + return try_get_field(value, name, not_a_map_error); + } +} + +function try_get_field(value, field, or_else) { + try { + return field in value ? new Ok(new Some(value[field])) : or_else(); + } catch { + return or_else(); + } +} + +export function byte_size(string) { + return new TextEncoder().encode(string).length; +} + +// In Javascript bitwise operations convert numbers to a sequence of 32 bits +// while Erlang uses arbitrary precision. +// To get around this problem and get consistent results use BigInt and then +// downcast the value back to a Number value. + +export function bitwise_and(x, y) { + return Number(BigInt(x) & BigInt(y)); +} + +export function bitwise_not(x) { + return Number(~BigInt(x)); +} + +export function bitwise_or(x, y) { + return Number(BigInt(x) | BigInt(y)); +} + +export function bitwise_exclusive_or(x, y) { + return Number(BigInt(x) ^ BigInt(y)); +} + +export function bitwise_shift_left(x, y) { + return Number(BigInt(x) << BigInt(y)); +} + +export function bitwise_shift_right(x, y) { + return Number(BigInt(x) >> BigInt(y)); +} + +export function inspect(v) { + const t = typeof v; + if (v === true) return "True"; + if (v === false) return "False"; + if (v === null) return "//js(null)"; + if (v === undefined) return "Nil"; + if (t === "string") return JSON.stringify(v); + if (t === "bigint" || t === "number") return v.toString(); + if (Array.isArray(v)) return `#(${v.map(inspect).join(", ")})`; + if (v instanceof List) return inspectList(v); + if (v instanceof UtfCodepoint) return inspectUtfCodepoint(v); + if (v instanceof BitArray) return inspectBitArray(v); + if (v instanceof CustomType) return inspectCustomType(v); + if (v instanceof Dict) return inspectDict(v); + if (v instanceof Set) return `//js(Set(${[...v].map(inspect).join(", ")}))`; + if (v instanceof RegExp) return `//js(${v})`; + if (v instanceof Date) return `//js(Date("${v.toISOString()}"))`; + if (v instanceof Function) { + const args = []; + for (const i of Array(v.length).keys()) + args.push(String.fromCharCode(i + 97)); + return `//fn(${args.join(", ")}) { ... }`; + } + return inspectObject(v); +} + +function inspectDict(map) { + let body = "dict.from_list(["; + let first = true; + map.forEach((value, key) => { + if (!first) body = body + ", "; + body = body + "#(" + inspect(key) + ", " + inspect(value) + ")"; + first = false; + }); + return body + "])"; +} + +function inspectObject(v) { + const name = Object.getPrototypeOf(v)?.constructor?.name || "Object"; + const props = []; + for (const k of Object.keys(v)) { + props.push(`${inspect(k)}: ${inspect(v[k])}`); + } + const body = props.length ? " " + props.join(", ") + " " : ""; + const head = name === "Object" ? "" : name + " "; + return `//js(${head}{${body}})`; +} + +function inspectCustomType(record) { + const props = Object.keys(record) + .map((label) => { + const value = inspect(record[label]); + return isNaN(parseInt(label)) ? `${label}: ${value}` : value; + }) + .join(", "); + return props + ? `${record.constructor.name}(${props})` + : record.constructor.name; +} + +export function inspectList(list) { + return `[${list.toArray().map(inspect).join(", ")}]`; +} + +export function inspectBitArray(bits) { + return `<<${Array.from(bits.buffer).join(", ")}>>`; +} + +export function inspectUtfCodepoint(codepoint) { + return `//utfcodepoint(${String.fromCodePoint(codepoint.value)})`; +} + +export function base16_encode(bit_array) { + let result = ""; + for (const byte of bit_array.buffer) { + result += byte.toString(16).padStart(2, "0").toUpperCase(); + } + return result; +} + +export function base16_decode(string) { + const bytes = new Uint8Array(string.length / 2); + for (let i = 0; i < string.length; i += 2) { + const a = parseInt(string[i], 16); + const b = parseInt(string[i + 1], 16); + if (isNaN(a) || isNaN(b)) return new Error(Nil); + bytes[i / 2] = a * 16 + b; + } + return new Ok(new BitArray(bytes)); +} diff --git a/aoc2023/build/packages/glint/LICENSE b/aoc2023/build/packages/glint/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/aoc2023/build/packages/glint/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/aoc2023/build/packages/glint/README.md b/aoc2023/build/packages/glint/README.md new file mode 100644 index 0000000..d6d5821 --- /dev/null +++ b/aoc2023/build/packages/glint/README.md @@ -0,0 +1,104 @@ +# glint + +[![Hex Package](https://img.shields.io/hexpm/v/glint?color=ffaff3&label=%F0%9F%93%A6)](https://hex.pm/packages/glint) +[![Hex.pm](https://img.shields.io/hexpm/dt/glint?color=ffaff3)](https://hex.pm/packages/glint) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3?label=%F0%9F%93%9A)](https://hexdocs.pm/glint/) +[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/tanklesxl/glint/main)](https://github.com/tanklesxl/glint/actions) + +Gleam command line argument parsing with basic flag support. + +## Installation + +To install from hex: + +```sh +gleam add glint +``` + +## Usage + +### Glint's Core + +`glint` is conceptually quite small, your general flow will be: + +1. create a new glint instance with `glint.new` +1. configure it with `glint.with_pretty_help` and other configuration functions +1. add commands with `glint.add` + 1. create a new command with `glint.cmd` + 1. assign that command any flags required + 1. assign the command a custom description +1. run your cli with `glnt.run`, run with a function to handle command output with `glint.run_and_handle` + +### Mini Example + +You can import `glint` as a dependency and use it to build simple command-line applications like the following simplified version of the [the hello world example](https://github.com/TanklesXL/glint/tree/main/examples/hello/README.md) + +```gleam +// stdlib imports +import gleam/io +import gleam/list +import gleam/result +import gleam/string.{uppercase} +// external dep imports +import snag +// glint imports +import glint +import glint/flag +// erlang-specific imports + +@target(erlang) +import gleam/erlang.{start_arguments} + +/// the key for the caps flag +const caps = "caps" + +/// a boolean flag with default False to control message capitalization. +/// +fn caps_flag() -> flag.FlagBuilder(Bool) { + flag.bool() + |> flag.default(False) + |> flag.description("Capitalize the provided name") +} + +/// the command function that will be executed +/// +fn hello(input: glint.CommandInput) -> Nil { + let assert Ok(caps) = flag.get_bool(from: input.flags, for: caps) + + let name = + case input.args { + [] -> "Joe" + [name,..] -> name + } + + let msg = "Hello, " <> name <> "!" + + + case caps { + True -> uppercase(msg) + False -> msg + } + |> io.println +} + +pub fn main() { + // create a new glint instance + glint.new() + // with an app name of "hello", this is used when printing help text + |> glint.with_name("hello") + // with pretty help enabled, using the built-in colours + |> glint.with_pretty_help(glint.default_pretty_help()) + // with a root command that executes the `hello` function + |> glint.add( + // add the command to the root + at: [], + // create the command, add any flags + do: glint.command(hello) + // with flag `caps` + |> glint.flag(caps, caps_flag()) + // with a short description + |> glint.description("Prints Hello, !"), + ) + |> glint.run(start_arguments()) +} +``` diff --git a/aoc2023/build/packages/glint/gleam.toml b/aoc2023/build/packages/glint/gleam.toml new file mode 100644 index 0000000..e8ac4ae --- /dev/null +++ b/aoc2023/build/packages/glint/gleam.toml @@ -0,0 +1,23 @@ +name = "glint" +version = "0.13.0" + +# Fill out these fields if you intend to generate HTML documentation or publishname = "glint" +# your project to the Hex package manager. +# +licences = ["Apache-2.0"] +description = "Gleam command line argument parsing with basic flag support." +repository = { type = "github", user = "TanklesXL", repo = "glint" } +links = [ + { title = "Hex", href = "https://hex.pm/packages/glint" }, + { title = "Docs", href = "https://hexdocs.pm/glint/" }, +] +gleam = ">= 0.32.0" + +[dependencies] +gleam_stdlib = "~> 0.19" +snag = "~> 0.2" +gleam_community_ansi = "~> 1.0" +gleam_community_colour = "~> 1.0" + +[dev-dependencies] +gleeunit = "~> 0.5" diff --git a/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl b/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl new file mode 100644 index 0000000..645cb12 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl @@ -0,0 +1 @@ +-record(flag, {value :: glint@flag:value(), description :: binary()}). diff --git a/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl b/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl new file mode 100644 index 0000000..b5e21a2 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl @@ -0,0 +1,6 @@ +-record(flag_builder, { + desc :: binary(), + parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}), + value :: fun((glint@flag:internal(any())) -> glint@flag:value()), + default :: gleam@option:option(any()) +}). diff --git a/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl b/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl new file mode 100644 index 0000000..281bbd0 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl @@ -0,0 +1,4 @@ +-record(internal, { + value :: gleam@option:option(any()), + parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}) +}). diff --git a/aoc2023/build/packages/glint/include/glint_Command.hrl b/aoc2023/build/packages/glint/include/glint_Command.hrl new file mode 100644 index 0000000..00a03e3 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_Command.hrl @@ -0,0 +1,5 @@ +-record(command, { + do :: fun((glint:command_input()) -> any()), + flags :: gleam@map:map_(binary(), glint@flag:flag()), + description :: binary() +}). diff --git a/aoc2023/build/packages/glint/include/glint_CommandInput.hrl b/aoc2023/build/packages/glint/include/glint_CommandInput.hrl new file mode 100644 index 0000000..72c9641 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_CommandInput.hrl @@ -0,0 +1,4 @@ +-record(command_input, { + args :: list(binary()), + flags :: gleam@map:map_(binary(), glint@flag:flag()) +}). diff --git a/aoc2023/build/packages/glint/include/glint_Config.hrl b/aoc2023/build/packages/glint/include/glint_Config.hrl new file mode 100644 index 0000000..70cf645 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_Config.hrl @@ -0,0 +1,4 @@ +-record(config, { + pretty_help :: gleam@option:option(glint:pretty_help()), + name :: gleam@option:option(binary()) +}). diff --git a/aoc2023/build/packages/glint/include/glint_Glint.hrl b/aoc2023/build/packages/glint/include/glint_Glint.hrl new file mode 100644 index 0000000..7ece11d --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_Glint.hrl @@ -0,0 +1,5 @@ +-record(glint, { + config :: glint:config(), + cmd :: glint:command_node(any()), + global_flags :: gleam@map:map_(binary(), glint@flag:flag()) +}). diff --git a/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl b/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl new file mode 100644 index 0000000..79bd887 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl @@ -0,0 +1,5 @@ +-record(pretty_help, { + usage :: gleam_community@colour:colour(), + flags :: gleam_community@colour:colour(), + subcommands :: gleam_community@colour:colour() +}). diff --git a/aoc2023/build/packages/glint/include/glint_Stub.hrl b/aoc2023/build/packages/glint/include/glint_Stub.hrl new file mode 100644 index 0000000..5aa5d83 --- /dev/null +++ b/aoc2023/build/packages/glint/include/glint_Stub.hrl @@ -0,0 +1,6 @@ +-record(stub, { + path :: list(binary()), + run :: fun((glint:command_input()) -> any()), + flags :: list({binary(), glint@flag:flag()}), + description :: binary() +}). diff --git a/aoc2023/build/packages/glint/src/glint.app.src b/aoc2023/build/packages/glint/src/glint.app.src new file mode 100644 index 0000000..7eb7649 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint.app.src @@ -0,0 +1,13 @@ +{application, glint, [ + {vsn, "0.13.0"}, + {applications, [gleam_community_ansi, + gleam_community_colour, + gleam_stdlib, + gleeunit, + snag]}, + {description, "Gleam command line argument parsing with basic flag support."}, + {modules, [glint, + glint@flag, + glint@flag@constraint]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/glint/src/glint.erl b/aoc2023/build/packages/glint/src/glint.erl new file mode 100644 index 0000000..0501cc6 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint.erl @@ -0,0 +1,513 @@ +-module(glint). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([with_config/2, with_pretty_help/2, without_pretty_help/1, with_name/2, new/0, command/1, description/2, flag/3, flag_tuple/2, flags/2, global_flag/3, global_flag_tuple/2, global_flags/2, default_pretty_help/0, add/3, help_flag/0, execute/2, run_and_handle/3, run/2, add_command_from_stub/2]). +-export_type([config/0, pretty_help/0, glint/1, command/1, command_input/0, command_node/1, out/1, stub/1]). + +-type config() :: {config, + gleam@option:option(pretty_help()), + gleam@option:option(binary())}. + +-type pretty_help() :: {pretty_help, + gleam_community@colour:colour(), + gleam_community@colour:colour(), + gleam_community@colour:colour()}. + +-opaque glint(GHR) :: {glint, + config(), + command_node(GHR), + gleam@map:map_(binary(), glint@flag:flag())}. + +-opaque command(GHS) :: {command, + fun((command_input()) -> GHS), + gleam@map:map_(binary(), glint@flag:flag()), + binary()}. + +-type command_input() :: {command_input, + list(binary()), + gleam@map:map_(binary(), glint@flag:flag())}. + +-type command_node(GHT) :: {command_node, + gleam@option:option(command(GHT)), + gleam@map:map_(binary(), command_node(GHT))}. + +-type out(GHU) :: {out, GHU} | {help, binary()}. + +-type stub(GHV) :: {stub, + list(binary()), + fun((command_input()) -> GHV), + list({binary(), glint@flag:flag()}), + binary()}. + +-spec with_config(glint(GIA), config()) -> glint(GIA). +with_config(Glint, Config) -> + erlang:setelement(2, Glint, Config). + +-spec with_pretty_help(glint(GID), pretty_help()) -> glint(GID). +with_pretty_help(Glint, Pretty) -> + _pipe = erlang:setelement(2, erlang:element(2, Glint), {some, Pretty}), + with_config(Glint, _pipe). + +-spec without_pretty_help(glint(GIG)) -> glint(GIG). +without_pretty_help(Glint) -> + _pipe = erlang:setelement(2, erlang:element(2, Glint), none), + with_config(Glint, _pipe). + +-spec with_name(glint(GIJ), binary()) -> glint(GIJ). +with_name(Glint, Name) -> + _pipe = erlang:setelement(3, erlang:element(2, Glint), {some, Name}), + with_config(Glint, _pipe). + +-spec empty_command() -> command_node(any()). +empty_command() -> + {command_node, none, gleam@map:new()}. + +-spec new() -> glint(any()). +new() -> + {glint, {config, none, none}, empty_command(), gleam@map:new()}. + +-spec do_add(command_node(GIT), list(binary()), command(GIT)) -> command_node(GIT). +do_add(Root, Path, Contents) -> + case Path of + [] -> + erlang:setelement(2, Root, {some, Contents}); + + [X | Xs] -> + erlang:setelement( + 3, + Root, + (gleam@map:update( + erlang:element(3, Root), + X, + fun(Node) -> _pipe = Node, + _pipe@1 = gleam@option:lazy_unwrap( + _pipe, + fun empty_command/0 + ), + do_add(_pipe@1, Xs, Contents) end + )) + ) + end. + +-spec command(fun((command_input()) -> GJC)) -> command(GJC). +command(Runner) -> + {command, Runner, gleam@map:new(), <<""/utf8>>}. + +-spec description(command(GJF), binary()) -> command(GJF). +description(Cmd, Description) -> + erlang:setelement(4, Cmd, Description). + +-spec flag(command(GJI), binary(), glint@flag:flag_builder(any())) -> command(GJI). +flag(Cmd, Key, Flag) -> + erlang:setelement( + 3, + Cmd, + gleam@map:insert(erlang:element(3, Cmd), Key, glint@flag:build(Flag)) + ). + +-spec flag_tuple(command(GJN), {binary(), glint@flag:flag_builder(any())}) -> command(GJN). +flag_tuple(Cmd, Tup) -> + flag(Cmd, erlang:element(1, Tup), erlang:element(2, Tup)). + +-spec flags(command(GJS), list({binary(), glint@flag:flag()})) -> command(GJS). +flags(Cmd, Flags) -> + gleam@list:fold( + Flags, + Cmd, + fun(Cmd@1, _use1) -> + {Key, Flag} = _use1, + erlang:setelement( + 3, + Cmd@1, + gleam@map:insert(erlang:element(3, Cmd@1), Key, Flag) + ) + end + ). + +-spec global_flag(glint(GJW), binary(), glint@flag:flag_builder(any())) -> glint(GJW). +global_flag(Glint, Key, Flag) -> + erlang:setelement( + 4, + Glint, + gleam@map:insert(erlang:element(4, Glint), Key, glint@flag:build(Flag)) + ). + +-spec global_flag_tuple(glint(GKB), {binary(), glint@flag:flag_builder(any())}) -> glint(GKB). +global_flag_tuple(Glint, Tup) -> + global_flag(Glint, erlang:element(1, Tup), erlang:element(2, Tup)). + +-spec global_flags(glint(GKG), list({binary(), glint@flag:flag()})) -> glint(GKG). +global_flags(Glint, Flags) -> + erlang:setelement( + 4, + Glint, + (gleam@list:fold( + Flags, + erlang:element(4, Glint), + fun(Acc, Tup) -> + gleam@map:insert( + Acc, + erlang:element(1, Tup), + erlang:element(2, Tup) + ) + end + )) + ). + +-spec execute_root( + command_node(GKU), + gleam@map:map_(binary(), glint@flag:flag()), + list(binary()), + list(binary()) +) -> {ok, out(GKU)} | {error, snag:snag()}. +execute_root(Cmd, Global_flags, Args, Flag_inputs) -> + _pipe@3 = case erlang:element(2, Cmd) of + {some, Contents} -> + gleam@result:'try'( + gleam@list:try_fold( + Flag_inputs, + gleam@map:merge(Global_flags, erlang:element(3, Contents)), + fun glint@flag:update_flags/2 + ), + fun(New_flags) -> _pipe = {command_input, Args, New_flags}, + _pipe@1 = (erlang:element(2, Contents))(_pipe), + _pipe@2 = {out, _pipe@1}, + {ok, _pipe@2} end + ); + + none -> + snag:error(<<"command not found"/utf8>>) + end, + snag:context(_pipe@3, <<"failed to run command"/utf8>>). + +-spec default_pretty_help() -> pretty_help(). +default_pretty_help() -> + _assert_subject = gleam_community@colour:from_rgb255(182, 255, 234), + {ok, Usage_colour} = case _assert_subject of + {ok, _} -> _assert_subject; + _assert_fail -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 404}) + end, + _assert_subject@1 = gleam_community@colour:from_rgb255(255, 175, 243), + {ok, Flags_colour} = case _assert_subject@1 of + {ok, _} -> _assert_subject@1; + _assert_fail@1 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@1, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 405}) + end, + _assert_subject@2 = gleam_community@colour:from_rgb255(252, 226, 174), + {ok, Subcommands_colour} = case _assert_subject@2 of + {ok, _} -> _assert_subject@2; + _assert_fail@2 -> + erlang:error(#{gleam_error => let_assert, + message => <<"Assertion pattern match failed"/utf8>>, + value => _assert_fail@2, + module => <<"glint"/utf8>>, + function => <<"default_pretty_help"/utf8>>, + line => 406}) + end, + {pretty_help, Usage_colour, Flags_colour, Subcommands_colour}. + +-spec is_not_empty(binary()) -> boolean(). +is_not_empty(S) -> + S /= <<""/utf8>>. + +-spec sanitize_path(list(binary())) -> list(binary()). +sanitize_path(Path) -> + _pipe = Path, + _pipe@1 = gleam@list:map(_pipe, fun gleam@string:trim/1), + gleam@list:filter(_pipe@1, fun is_not_empty/1). + +-spec add(glint(GIO), list(binary()), command(GIO)) -> glint(GIO). +add(Glint, Path, Contents) -> + erlang:setelement( + 3, + Glint, + begin + _pipe = Path, + _pipe@1 = sanitize_path(_pipe), + do_add(erlang:element(3, Glint), _pipe@1, Contents) + end + ). + +-spec help_flag() -> binary(). +help_flag() -> + <<(<<"--"/utf8>>)/binary, "help"/utf8>>. + +-spec wrap_with_space(binary()) -> binary(). +wrap_with_space(S) -> + case S of + <<""/utf8>> -> + <<" "/utf8>>; + + _ -> + <<<<" "/utf8, S/binary>>/binary, " "/utf8>> + end. + +-spec subcommand_help(binary(), command_node(any())) -> binary(). +subcommand_help(Name, Cmd) -> + case erlang:element(2, Cmd) of + none -> + Name; + + {some, Contents} -> + <<<>/binary, + (erlang:element(4, Contents))/binary>> + end. + +-spec subcommands_help(gleam@map:map_(binary(), command_node(any()))) -> binary(). +subcommands_help(Cmds) -> + _pipe = Cmds, + _pipe@1 = gleam@map:map_values(_pipe, fun subcommand_help/2), + _pipe@2 = gleam@map:values(_pipe@1), + _pipe@3 = gleam@list:sort(_pipe@2, fun gleam@string:compare/2), + gleam@string:join(_pipe@3, <<"\n\t"/utf8>>). + +-spec heading_style(binary(), gleam_community@colour:colour()) -> binary(). +heading_style(Heading, Colour) -> + _pipe = Heading, + _pipe@1 = gleam_community@ansi:bold(_pipe), + _pipe@2 = gleam_community@ansi:underline(_pipe@1), + _pipe@3 = gleam_community@ansi:italic(_pipe@2), + _pipe@4 = gleam_community@ansi:hex( + _pipe@3, + gleam_community@colour:to_rgb_hex(Colour) + ), + gleam_community@ansi:reset(_pipe@4). + +-spec usage_help( + binary(), + gleam@map:map_(binary(), glint@flag:flag()), + config() +) -> binary(). +usage_help(Cmd_name, Flags, Config) -> + App_name = gleam@option:unwrap( + erlang:element(3, Config), + <<"gleam run"/utf8>> + ), + Flags@1 = begin + _pipe = Flags, + _pipe@1 = gleam@map:to_list(_pipe), + _pipe@2 = gleam@list:map(_pipe@1, fun glint@flag:flag_type_help/1), + gleam@list:sort(_pipe@2, fun gleam@string:compare/2) + end, + Flag_sb = case Flags@1 of + [] -> + gleam@string_builder:new(); + + _ -> + _pipe@3 = Flags@1, + _pipe@4 = gleam@list:intersperse(_pipe@3, <<" "/utf8>>), + _pipe@5 = gleam@string_builder:from_strings(_pipe@4), + _pipe@6 = gleam@string_builder:prepend(_pipe@5, <<" [ "/utf8>>), + gleam@string_builder:append(_pipe@6, <<" ]"/utf8>>) + end, + _pipe@7 = [App_name, wrap_with_space(Cmd_name), <<"[ ARGS ]"/utf8>>], + _pipe@8 = gleam@string_builder:from_strings(_pipe@7), + _pipe@9 = gleam@string_builder:append_builder(_pipe@8, Flag_sb), + _pipe@12 = gleam@string_builder:prepend( + _pipe@9, + <<(begin + _pipe@10 = erlang:element(2, Config), + _pipe@11 = gleam@option:map( + _pipe@10, + fun(Styling) -> + heading_style( + <<"USAGE:"/utf8>>, + erlang:element(2, Styling) + ) + end + ), + gleam@option:unwrap(_pipe@11, <<"USAGE:"/utf8>>) + end)/binary, + "\n\t"/utf8>> + ), + gleam@string_builder:to_string(_pipe@12). + +-spec cmd_help( + list(binary()), + command_node(any()), + config(), + gleam@map:map_(binary(), glint@flag:flag()) +) -> binary(). +cmd_help(Path, Cmd, Config, Global_flags) -> + Name = begin + _pipe = Path, + _pipe@1 = gleam@list:reverse(_pipe), + gleam@string:join(_pipe@1, <<" "/utf8>>) + end, + Flags = begin + _pipe@2 = gleam@option:map( + erlang:element(2, Cmd), + fun(Contents) -> erlang:element(3, Contents) end + ), + _pipe@3 = gleam@option:lazy_unwrap(_pipe@2, fun gleam@map:new/0), + gleam@map:merge(Global_flags, _pipe@3) + end, + Flags_help_body = <<<<(begin + _pipe@4 = erlang:element(2, Config), + _pipe@5 = gleam@option:map( + _pipe@4, + fun(P) -> + heading_style(<<"FLAGS:"/utf8>>, erlang:element(3, P)) + end + ), + gleam@option:unwrap(_pipe@5, <<"FLAGS:"/utf8>>) + end)/binary, + "\n\t"/utf8>>/binary, + (gleam@string:join( + gleam@list:sort( + [<<"--help\t\t\tPrint help information"/utf8>> | + glint@flag:flags_help(Flags)], + fun gleam@string:compare/2 + ), + <<"\n\t"/utf8>> + ))/binary>>, + Usage = usage_help(Name, Flags, Config), + Description = begin + _pipe@6 = erlang:element(2, Cmd), + _pipe@7 = gleam@option:map( + _pipe@6, + fun(Contents@1) -> erlang:element(4, Contents@1) end + ), + gleam@option:unwrap(_pipe@7, <<""/utf8>>) + end, + Header_items = begin + _pipe@8 = [Name, Description], + _pipe@9 = gleam@list:filter(_pipe@8, fun is_not_empty/1), + gleam@string:join(_pipe@9, <<"\n"/utf8>>) + end, + Subcommands = case subcommands_help(erlang:element(3, Cmd)) of + <<""/utf8>> -> + <<""/utf8>>; + + Subcommands_help_body -> + <<<<(begin + _pipe@10 = erlang:element(2, Config), + _pipe@11 = gleam@option:map( + _pipe@10, + fun(P@1) -> + heading_style( + <<"SUBCOMMANDS:"/utf8>>, + erlang:element(4, P@1) + ) + end + ), + gleam@option:unwrap(_pipe@11, <<"SUBCOMMANDS:"/utf8>>) + end)/binary, + "\n\t"/utf8>>/binary, + Subcommands_help_body/binary>> + end, + _pipe@12 = [Header_items, Usage, Flags_help_body, Subcommands], + _pipe@13 = gleam@list:filter(_pipe@12, fun is_not_empty/1), + gleam@string:join(_pipe@13, <<"\n\n"/utf8>>). + +-spec do_execute( + command_node(GKO), + config(), + gleam@map:map_(binary(), glint@flag:flag()), + list(binary()), + list(binary()), + boolean(), + list(binary()) +) -> {ok, out(GKO)} | {error, snag:snag()}. +do_execute(Cmd, Config, Global_flags, Args, Flags, Help, Command_path) -> + case Args of + [] when Help -> + _pipe = Command_path, + _pipe@1 = cmd_help(_pipe, Cmd, Config, Global_flags), + _pipe@2 = {help, _pipe@1}, + {ok, _pipe@2}; + + [] -> + execute_root(Cmd, Global_flags, [], Flags); + + [Arg | Rest] -> + case gleam@map:get(erlang:element(3, Cmd), Arg) of + {ok, Cmd@1} -> + do_execute( + Cmd@1, + Config, + Global_flags, + Rest, + Flags, + Help, + [Arg | Command_path] + ); + + _ when Help -> + _pipe@3 = Command_path, + _pipe@4 = cmd_help(_pipe@3, Cmd, Config, Global_flags), + _pipe@5 = {help, _pipe@4}, + {ok, _pipe@5}; + + _ -> + execute_root(Cmd, Global_flags, Args, Flags) + end + end. + +-spec execute(glint(GKK), list(binary())) -> {ok, out(GKK)} | + {error, snag:snag()}. +execute(Glint, Args) -> + Help_flag = help_flag(), + {Help, Args@2} = case gleam@list:pop(Args, fun(S) -> S =:= Help_flag end) of + {ok, {_, Args@1}} -> + {true, Args@1}; + + _ -> + {false, Args} + end, + {Flags, Args@3} = gleam@list:partition( + Args@2, + fun(_capture) -> gleam@string:starts_with(_capture, <<"--"/utf8>>) end + ), + do_execute( + erlang:element(3, Glint), + erlang:element(2, Glint), + erlang:element(4, Glint), + Args@3, + Flags, + Help, + [] + ). + +-spec run_and_handle(glint(GLC), list(binary()), fun((GLC) -> any())) -> nil. +run_and_handle(Glint, Args, Handle) -> + case execute(Glint, Args) of + {error, Err} -> + _pipe = Err, + _pipe@1 = snag:pretty_print(_pipe), + gleam@io:println(_pipe@1); + + {ok, {help, Help}} -> + gleam@io:println(Help); + + {ok, {out, Out}} -> + Handle(Out), + nil + end. + +-spec run(glint(any()), list(binary())) -> nil. +run(Glint, Args) -> + run_and_handle(Glint, Args, gleam@function:constant(nil)). + +-spec add_command_from_stub(glint(GLP), stub(GLP)) -> glint(GLP). +add_command_from_stub(Glint, Stub) -> + add( + Glint, + erlang:element(2, Stub), + begin + _pipe = command(erlang:element(3, Stub)), + _pipe@1 = flags(_pipe, erlang:element(4, Stub)), + description(_pipe@1, erlang:element(5, Stub)) + end + ). diff --git a/aoc2023/build/packages/glint/src/glint.gleam b/aoc2023/build/packages/glint/src/glint.gleam new file mode 100644 index 0000000..b159016 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint.gleam @@ -0,0 +1,588 @@ +import gleam/map.{type Map} +import gleam/option.{type Option, None, Some} +import gleam/list +import gleam/io +import gleam/string +import snag.{type Result} +import glint/flag.{type Flag, type Map as FlagMap} +import gleam/string_builder as sb +import gleam_community/ansi +import gleam_community/colour.{type Colour} +import gleam/result +import gleam/function + +// --- CONFIGURATION --- + +// -- CONFIGURATION: TYPES -- + +/// Config for glint +/// +pub type Config { + Config(pretty_help: Option(PrettyHelp), name: Option(String)) +} + +/// PrettyHelp defines the header colours to be used when styling help text +/// +pub type PrettyHelp { + PrettyHelp(usage: Colour, flags: Colour, subcommands: Colour) +} + +// -- CONFIGURATION: CONSTANTS -- + +/// Default config +/// +pub const default_config = Config(pretty_help: None, name: None) + +// -- CONFIGURATION: FUNCTIONS -- + +/// Add the provided config to the existing command tree +/// +pub fn with_config(glint: Glint(a), config: Config) -> Glint(a) { + Glint(..glint, config: config) +} + +/// Enable custom colours for help text headers +/// For a pre-made colouring use `default_pretty_help()` +/// +pub fn with_pretty_help(glint: Glint(a), pretty: PrettyHelp) -> Glint(a) { + Config(..glint.config, pretty_help: Some(pretty)) + |> with_config(glint, _) +} + +/// Disable custom colours for help text headers +/// +pub fn without_pretty_help(glint: Glint(a)) -> Glint(a) { + Config(..glint.config, pretty_help: None) + |> with_config(glint, _) +} + +pub fn with_name(glint: Glint(a), name: String) -> Glint(a) { + Config(..glint.config, name: Some(name)) + |> with_config(glint, _) +} + +// --- CORE --- + +// -- CORE: TYPES -- + +/// Glint container type for config and commands +/// +pub opaque type Glint(a) { + Glint(config: Config, cmd: CommandNode(a), global_flags: FlagMap) +} + +/// CommandNode contents +/// +pub opaque type Command(a) { + Command(do: Runner(a), flags: FlagMap, description: String) +} + +/// Input type for `Runner`. +/// +pub type CommandInput { + CommandInput(args: List(String), flags: FlagMap) +} + +/// Function type to be run by `glint`. +/// +pub type Runner(a) = + fn(CommandInput) -> a + +/// CommandNode tree representation. +/// +type CommandNode(a) { + CommandNode( + contents: Option(Command(a)), + subcommands: Map(String, CommandNode(a)), + ) +} + +/// Ok type for command execution +/// +pub type Out(a) { + /// Container for the command return value + Out(a) + /// Container for the generated help string + Help(String) +} + +/// Result type for command execution +/// +pub type CmdResult(a) = + Result(Out(a)) + +// -- CORE: BUILDER FUNCTIONS -- + +/// Creates a new command tree. +/// +pub fn new() -> Glint(a) { + Glint(config: default_config, cmd: empty_command(), global_flags: map.new()) +} + +/// Adds a new command to be run at the specified path. +/// +/// If the path is `[]`, the root command is set with the provided function and +/// flags. +/// +/// Note: all command paths are sanitized by stripping whitespace and removing any empty string elements. +/// +pub fn add( + to glint: Glint(a), + at path: List(String), + do contents: Command(a), +) -> Glint(a) { + Glint( + ..glint, + cmd: path + |> sanitize_path + |> do_add(to: glint.cmd, put: contents), + ) +} + +/// Recursive traversal of the command tree to find where to puth the provided command +/// +fn do_add( + to root: CommandNode(a), + at path: List(String), + put contents: Command(a), +) -> CommandNode(a) { + case path { + // update current command with provided contents + [] -> CommandNode(..root, contents: Some(contents)) + // continue down the path, creating empty command nodes along the way + [x, ..xs] -> + CommandNode( + ..root, + subcommands: { + use node <- map.update(root.subcommands, x) + node + |> option.lazy_unwrap(empty_command) + |> do_add(xs, contents) + }, + ) + } +} + +/// Helper for initializing empty commands +/// +fn empty_command() -> CommandNode(a) { + CommandNode(contents: None, subcommands: map.new()) +} + +/// Trim each path element and remove any resulting empty strings. +/// +fn sanitize_path(path: List(String)) -> List(String) { + path + |> list.map(string.trim) + |> list.filter(is_not_empty) +} + +/// Create a Command(a) from a Runner(a) +/// +pub fn command(do runner: Runner(a)) -> Command(a) { + Command(do: runner, flags: map.new(), description: "") +} + +/// Attach a description to a Command(a) +/// +pub fn description(cmd: Command(a), description: String) -> Command(a) { + Command(..cmd, description: description) +} + +/// add a `flag.Flag` to a `Command` +/// +pub fn flag( + cmd: Command(a), + at key: String, + of flag: flag.FlagBuilder(_), +) -> Command(a) { + Command(..cmd, flags: map.insert(cmd.flags, key, flag.build(flag))) +} + +/// Add a `flag.Flag to a `Command` when the flag name and builder are bundled as a #(String, flag.FlagBuilder(a)). +/// +/// This is merely a convenience function and calls `glint.flag` under the hood. +/// +pub fn flag_tuple( + cmd: Command(a), + with tup: #(String, flag.FlagBuilder(_)), +) -> Command(a) { + flag(cmd, tup.0, tup.1) +} + +/// Add multiple `Flag`s to a `Command`, note that this function uses `Flag` and not `FlagBuilder(_)`, so the user will need to call `flag.build` before providing the flags here. +/// +/// It is recommended to call `glint.flag` instead. +/// +pub fn flags(cmd: Command(a), with flags: List(#(String, Flag))) -> Command(a) { + use cmd, #(key, flag) <- list.fold(flags, cmd) + Command(..cmd, flags: map.insert(cmd.flags, key, flag)) +} + +/// Add global flags to the existing command tree +/// +pub fn global_flag( + glint: Glint(a), + at key: String, + of flag: flag.FlagBuilder(_), +) -> Glint(a) { + Glint( + ..glint, + global_flags: map.insert(glint.global_flags, key, flag.build(flag)), + ) +} + +/// Add global flags to the existing command tree. +/// +pub fn global_flag_tuple( + glint: Glint(a), + with tup: #(String, flag.FlagBuilder(_)), +) -> Glint(a) { + global_flag(glint, tup.0, tup.1) +} + +/// Add global flags to the existing command tree. +/// +/// Like `glint.flags`, this function requires `Flag`s insead of `FlagBuilder(_)`. +/// +/// It is recommended to use `glint.global_flag` instead. +/// +pub fn global_flags(glint: Glint(a), flags: List(#(String, Flag))) -> Glint(a) { + Glint( + ..glint, + global_flags: { + list.fold( + flags, + glint.global_flags, + fn(acc, tup) { map.insert(acc, tup.0, tup.1) }, + ) + }, + ) +} + +// -- CORE: EXECUTION FUNCTIONS -- + +/// Determines which command to run and executes it. +/// +/// Sets any provided flags if necessary. +/// +/// Each value prefixed with `--` is parsed as a flag. +/// +/// This function does not print its output and is mainly intended for use within `glint` itself. +/// If you would like to print or handle the output of a command please see the `run_and_handle` function. +/// +pub fn execute(glint: Glint(a), args: List(String)) -> CmdResult(a) { + // create help flag to check for + let help_flag = help_flag() + + // check if help flag is present + let #(help, args) = case list.pop(args, fn(s) { s == help_flag }) { + Ok(#(_, args)) -> #(True, args) + _ -> #(False, args) + } + + // split flags out from the args list + let #(flags, args) = list.partition(args, string.starts_with(_, flag.prefix)) + + // search for command and execute + do_execute(glint.cmd, glint.config, glint.global_flags, args, flags, help, []) +} + +/// Find which command to execute and run it with computed flags and args +/// +fn do_execute( + cmd: CommandNode(a), + config: Config, + global_flags: FlagMap, + args: List(String), + flags: List(String), + help: Bool, + command_path: List(String), +) -> CmdResult(a) { + case args { + // when there are no more available arguments + // and help flag has been passed, generate help message + [] if help -> + command_path + |> cmd_help(cmd, config, global_flags) + |> Help + |> Ok + + // when there are no more available arguments + // run the current command + [] -> execute_root(cmd, global_flags, [], flags) + + // when there are arguments remaining + // check if the next one is a subcommand of the current command + [arg, ..rest] -> + case map.get(cmd.subcommands, arg) { + // subcommand found, continue + Ok(cmd) -> + do_execute( + cmd, + config, + global_flags, + rest, + flags, + help, + [arg, ..command_path], + ) + // subcommand not found, but help flag has been passed + // generate and return help message + _ if help -> + command_path + |> cmd_help(cmd, config, global_flags) + |> Help + |> Ok + // subcommand not found, but help flag has not been passed + // execute the current command + _ -> execute_root(cmd, global_flags, args, flags) + } + } +} + +/// Executes the current root command. +/// +fn execute_root( + cmd: CommandNode(a), + global_flags: FlagMap, + args: List(String), + flag_inputs: List(String), +) -> CmdResult(a) { + case cmd.contents { + Some(contents) -> { + use new_flags <- result.try(list.try_fold( + over: flag_inputs, + from: map.merge(global_flags, contents.flags), + with: flag.update_flags, + )) + CommandInput(args, new_flags) + |> contents.do + |> Out + |> Ok + } + None -> snag.error("command not found") + } + |> snag.context("failed to run command") +} + +/// A wrapper for `execute` that prints any errors enountered or the help text if requested. +/// This function ignores any value returned by the command that was run. +/// If you would like to do something with the command output please see the run_and_handle function. +/// +pub fn run(from glint: Glint(a), for args: List(String)) -> Nil { + run_and_handle(from: glint, for: args, with: function.constant(Nil)) +} + +/// A wrapper for `execute` that prints any errors enountered or the help text if requested. +/// This function calls the provided handler with the value returned by the command that was run. +/// +pub fn run_and_handle( + from glint: Glint(a), + for args: List(String), + with handle: fn(a) -> _, +) -> Nil { + case execute(glint, args) { + Error(err) -> + err + |> snag.pretty_print + |> io.println + Ok(Help(help)) -> io.println(help) + Ok(Out(out)) -> { + handle(out) + Nil + } + } +} + +/// Default pretty help heading colouring +/// mint (r: 182, g: 255, b: 234) colour for usage +/// pink (r: 255, g: 175, b: 243) colour for flags +/// buttercup (r: 252, g: 226, b: 174) colour for subcommands +/// +pub fn default_pretty_help() -> PrettyHelp { + let assert Ok(usage_colour) = colour.from_rgb255(182, 255, 234) + let assert Ok(flags_colour) = colour.from_rgb255(255, 175, 243) + let assert Ok(subcommands_colour) = colour.from_rgb255(252, 226, 174) + + PrettyHelp( + usage: usage_colour, + flags: flags_colour, + subcommands: subcommands_colour, + ) +} + +// constants for setting up sections of the help message +const flags_heading = "FLAGS:" + +const subcommands_heading = "SUBCOMMANDS:" + +const usage_heading = "USAGE:" + +/// Helper for filtering out empty strings +/// +fn is_not_empty(s: String) -> Bool { + s != "" +} + +const help_flag_name = "help" + +const help_flag_message = "--help\t\t\tPrint help information" + +/// Function to create the help flag string +/// Exported for testing purposes only +/// +pub fn help_flag() -> String { + flag.prefix <> help_flag_name +} + +// -- HELP: FUNCTIONS -- + +fn wrap_with_space(s: String) -> String { + case s { + "" -> " " + _ -> " " <> s <> " " + } +} + +/// generate the usage help string for a command +fn usage_help(cmd_name: String, flags: FlagMap, config: Config) -> String { + let app_name = option.unwrap(config.name, "gleam run") + let flags = + flags + |> map.to_list + |> list.map(flag.flag_type_help) + |> list.sort(string.compare) + + let flag_sb = case flags { + [] -> sb.new() + _ -> + flags + |> list.intersperse(" ") + |> sb.from_strings() + |> sb.prepend(prefix: " [ ") + |> sb.append(suffix: " ]") + } + + [app_name, wrap_with_space(cmd_name), "[ ARGS ]"] + |> sb.from_strings + |> sb.append_builder(flag_sb) + |> sb.prepend( + config.pretty_help + |> option.map(fn(styling) { heading_style(usage_heading, styling.usage) }) + |> option.unwrap(usage_heading) <> "\n\t", + ) + |> sb.to_string +} + +/// generate the help text for a command +fn cmd_help( + path: List(String), + cmd: CommandNode(a), + config: Config, + global_flags: FlagMap, +) -> String { + // recreate the path of the current command + // reverse the path because it is created by prepending each section as do_execute walks down the tree + let name = + path + |> list.reverse + |> string.join(" ") + + let flags = + option.map(cmd.contents, fn(contents) { contents.flags }) + |> option.lazy_unwrap(map.new) + |> map.merge(global_flags, _) + + let flags_help_body = + config.pretty_help + |> option.map(fn(p) { heading_style(flags_heading, p.flags) }) + |> option.unwrap(flags_heading) <> "\n\t" <> string.join( + list.sort([help_flag_message, ..flag.flags_help(flags)], string.compare), + "\n\t", + ) + + let usage = usage_help(name, flags, config) + + let description = + cmd.contents + |> option.map(fn(contents) { contents.description }) + |> option.unwrap("") + + // create the header block from the name and description + let header_items = + [name, description] + |> list.filter(is_not_empty) + |> string.join("\n") + + // create the subcommands help block + let subcommands = case subcommands_help(cmd.subcommands) { + "" -> "" + subcommands_help_body -> + config.pretty_help + |> option.map(fn(p) { heading_style(subcommands_heading, p.subcommands) }) + |> option.unwrap(subcommands_heading) <> "\n\t" <> subcommands_help_body + } + + // join the resulting help blocks into the final help message + [header_items, usage, flags_help_body, subcommands] + |> list.filter(is_not_empty) + |> string.join("\n\n") +} + +// create the help text for subcommands +fn subcommands_help(cmds: Map(String, CommandNode(a))) -> String { + cmds + |> map.map_values(subcommand_help) + |> map.values + |> list.sort(string.compare) + |> string.join("\n\t") +} + +// generate the help text for a subcommand +fn subcommand_help(name: String, cmd: CommandNode(_)) -> String { + case cmd.contents { + None -> name + Some(contents) -> name <> "\t\t" <> contents.description + } +} + +/// Style heading text with the provided rgb colouring +/// this is only intended for use within glint itself. +/// +fn heading_style(heading: String, colour: Colour) -> String { + heading + |> ansi.bold + |> ansi.underline + |> ansi.italic + |> ansi.hex(colour.to_rgb_hex(colour)) + |> ansi.reset +} + +// -- DEPRECATED: STUBS -- + +/// DEPRECATED: use `glint.cmd` and related new functions instead to create a Command +/// +/// Create command stubs to be used in `add_command_from_stub` +/// +pub type Stub(a) { + Stub( + path: List(String), + run: Runner(a), + flags: List(#(String, Flag)), + description: String, + ) +} + +/// Add a command to the root given a stub +/// +@deprecated("use `glint.cmd` and related new functions instead to create a Command") +pub fn add_command_from_stub(to glint: Glint(a), with stub: Stub(a)) -> Glint(a) { + add( + to: glint, + at: stub.path, + do: command(stub.run) + |> flags(stub.flags) + |> description(stub.description), + ) +} diff --git a/aoc2023/build/packages/glint/src/glint/flag.gleam b/aoc2023/build/packages/glint/src/glint/flag.gleam new file mode 100644 index 0000000..0a6cae1 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint/flag.gleam @@ -0,0 +1,478 @@ +import gleam/map +import gleam/string +import gleam/result +import gleam/int +import gleam/list +import gleam/float +import snag.{type Result, type Snag} +import gleam/option.{type Option, None, Some} +import glint/flag/constraint.{type Constraint} +import gleam + +/// Flag inputs must start with this prefix +/// +pub const prefix = "--" + +/// The separation character for flag names and their values +const delimiter = "=" + +/// Supported flag types. +/// +pub type Value { + /// Boolean flags, to be passed in as `--flag=true` or `--flag=false`. + /// Can be toggled by omitting the desired value like `--flag`. + /// Toggling will negate the existing value. + /// + B(Internal(Bool)) + + /// Int flags, to be passed in as `--flag=1` + /// + I(Internal(Int)) + + /// List(Int) flags, to be passed in as `--flag=1,2,3` + /// + LI(Internal(List(Int))) + + /// Float flags, to be passed in as `--flag=1.0` + /// + F(Internal(Float)) + + /// List(Float) flags, to be passed in as `--flag=1.0,2.0` + /// + LF(Internal(List(Float))) + + /// String flags, to be passed in as `--flag=hello` + /// + S(Internal(String)) + + /// List(String) flags, to be passed in as `--flag=hello,world` + /// + LS(Internal(List(String))) +} + +/// A type that facilitates the creation of `Flag`s +/// +pub opaque type FlagBuilder(a) { + FlagBuilder( + desc: Description, + parser: Parser(a, Snag), + value: fn(Internal(a)) -> Value, + default: Option(a), + ) +} + +/// An internal representation of flag contents +/// +pub opaque type Internal(a) { + Internal(value: Option(a), parser: Parser(a, Snag)) +} + +// Builder initializers + +type Parser(a, b) = + fn(String) -> gleam.Result(a, b) + +/// initialise an int flag builder +/// +pub fn int() -> FlagBuilder(Int) { + use input <- new(I) + input + |> int.parse + |> result.replace_error(cannot_parse(input, "int")) +} + +/// initialise an int list flag builder +/// +pub fn int_list() -> FlagBuilder(List(Int)) { + use input <- new(LI) + input + |> string.split(",") + |> list.try_map(int.parse) + |> result.replace_error(cannot_parse(input, "int list")) +} + +/// initialise a float flag builder +/// +pub fn float() -> FlagBuilder(Float) { + use input <- new(F) + input + |> float.parse + |> result.replace_error(cannot_parse(input, "float")) +} + +/// initialise a float list flag builder +/// +pub fn float_list() -> FlagBuilder(List(Float)) { + use input <- new(LF) + input + |> string.split(",") + |> list.try_map(float.parse) + |> result.replace_error(cannot_parse(input, "float list")) +} + +/// initialise a string flag builder +/// +pub fn string() -> FlagBuilder(String) { + new(S, fn(s) { Ok(s) }) +} + +/// intitialise a string list flag builder +/// +pub fn string_list() -> FlagBuilder(List(String)) { + use input <- new(LS) + input + |> string.split(",") + |> Ok +} + +/// initialise a bool flag builder +/// +pub fn bool() -> FlagBuilder(Bool) { + use input <- new(B) + case string.lowercase(input) { + "true" | "t" -> Ok(True) + "false" | "f" -> Ok(False) + _ -> Error(cannot_parse(input, "bool")) + } +} + +/// initialize custom builders using a Value constructor and a parsing function +/// +fn new(valuer: fn(Internal(a)) -> Value, p: Parser(a, Snag)) -> FlagBuilder(a) { + FlagBuilder(desc: "", parser: p, value: valuer, default: None) +} + +/// convert a FlagBuilder(a) into its corresponding Flag representation +/// +pub fn build(fb: FlagBuilder(a)) -> Flag { + Flag( + value: fb.value(Internal(value: fb.default, parser: fb.parser)), + description: fb.desc, + ) +} + +/// attach a constraint to a `Flag` +/// +pub fn constraint( + builder: FlagBuilder(a), + constraint: Constraint(a), +) -> FlagBuilder(a) { + FlagBuilder( + ..builder, + parser: wrap_with_constraint(builder.parser, constraint), + ) +} + +/// attach a Constraint(a) to a Parser(a,Snag) +/// this function should not be used directly unless +fn wrap_with_constraint( + p: Parser(a, Snag), + constraint: Constraint(a), +) -> Parser(a, Snag) { + fn(input: String) -> Result(a) { attempt(p(input), constraint) } +} + +fn attempt( + val: gleam.Result(a, e), + f: fn(a) -> gleam.Result(_, e), +) -> gleam.Result(a, e) { + use a <- result.try(val) + result.replace(f(a), a) +} + +/// Flag descriptions +/// +pub type Description = + String + +/// Flag data and descriptions +/// +pub type Flag { + Flag(value: Value, description: Description) +} + +/// attach a description to a `Flag` +/// +pub fn description( + for builder: FlagBuilder(a), + of description: Description, +) -> FlagBuilder(a) { + FlagBuilder(..builder, desc: description) +} + +/// Set the default value for a flag `Value` +/// +pub fn default(for builder: FlagBuilder(a), of default: a) -> FlagBuilder(a) { + FlagBuilder(..builder, default: Some(default)) +} + +/// Associate flag names to their current values. +/// +pub type Map = + map.Map(String, Flag) + +/// Convert a list of flags to a Map. +/// +pub fn build_map(flags: List(#(String, Flag))) -> Map { + map.from_list(flags) +} + +/// Updates a flag value, ensuring that the new value can satisfy the required type. +/// Assumes that all flag inputs passed in start with -- +/// This function is only intended to be used from glint.execute_root +/// +pub fn update_flags(in flags: Map, with flag_input: String) -> Result(Map) { + let flag_input = string.drop_left(flag_input, string.length(prefix)) + + case string.split_once(flag_input, delimiter) { + Ok(data) -> update_flag_value(flags, data) + Error(_) -> attempt_toggle_flag(flags, flag_input) + } +} + +fn update_flag_value(in flags: Map, with data: #(String, String)) -> Result(Map) { + let #(key, input) = data + use contents <- result.try(access(flags, key)) + use value <- result.map( + compute_flag(with: input, given: contents.value) + |> result.map_error(layer_invalid_flag(_, key)), + ) + map.insert(flags, key, Flag(..contents, value: value)) +} + +fn attempt_toggle_flag(in flags: Map, at key: String) -> Result(Map) { + use contents <- result.try(access(flags, key)) + case contents.value { + B(Internal(None, ..) as internal) -> + Internal(..internal, value: Some(True)) + |> B + |> fn(val) { Flag(..contents, value: val) } + |> map.insert(into: flags, for: key) + |> Ok() + B(Internal(Some(val), ..) as internal) -> + Internal(..internal, value: Some(!val)) + |> B + |> fn(val) { Flag(..contents, value: val) } + |> map.insert(into: flags, for: key) + |> Ok() + _ -> Error(no_value_flag_err(key)) + } +} + +fn access_type_error(flag_type) { + snag.error("cannot access flag as " <> flag_type) +} + +fn flag_not_provided_error() { + snag.error("no value provided") +} + +fn construct_value( + input: String, + internal: Internal(a), + constructor: fn(Internal(a)) -> Value, +) -> Result(Value) { + use val <- result.map(internal.parser(input)) + constructor(Internal(..internal, value: Some(val))) +} + +/// Computes the new flag value given the input and the expected flag type +/// +fn compute_flag(with input: String, given current: Value) -> Result(Value) { + input + |> case current { + I(internal) -> construct_value(_, internal, I) + LI(internal) -> construct_value(_, internal, LI) + F(internal) -> construct_value(_, internal, F) + LF(internal) -> construct_value(_, internal, LF) + S(internal) -> construct_value(_, internal, S) + LS(internal) -> construct_value(_, internal, LS) + B(internal) -> construct_value(_, internal, B) + } + |> snag.context("failed to compute value for flag") +} + +// Error creation and manipulation functions +fn layer_invalid_flag(err: Snag, flag: String) -> Snag { + snag.layer(err, "invalid flag '" <> flag <> "'") +} + +fn no_value_flag_err(flag_input: String) -> Snag { + { "flag '" <> flag_input <> "' has no assigned value" } + |> snag.new() + |> layer_invalid_flag(flag_input) +} + +fn undefined_flag_err(key: String) -> Snag { + "flag provided but not defined" + |> snag.new() + |> layer_invalid_flag(key) +} + +fn cannot_parse(with value: String, is kind: String) -> Snag { + { "cannot parse value '" <> value <> "' as " <> kind } + |> snag.new() +} + +// Help Message Functions +/// Generate the help message contents for a single flag +/// +pub fn flag_type_help(flag: #(String, Flag)) { + let #(name, contents) = flag + let kind = case contents.value { + I(_) -> "INT" + B(_) -> "BOOL" + F(_) -> "FLOAT" + LF(_) -> "FLOAT_LIST" + LI(_) -> "INT_LIST" + LS(_) -> "STRING_LIST" + S(_) -> "STRING" + } + + prefix <> name <> delimiter <> "<" <> kind <> ">" +} + +/// Generate help message line for a single flag +/// +fn flag_help(flag: #(String, Flag)) -> String { + flag_type_help(flag) <> "\t\t" <> { flag.1 }.description +} + +/// Generate help messages for all flags +/// +pub fn flags_help(flags: Map) -> List(String) { + flags + |> map.to_list + |> list.map(flag_help) +} + +// -- FLAG ACCESS FUNCTIONS -- + +/// Access the contents for the associated flag +/// +fn access(flags: Map, name: String) -> Result(Flag) { + map.get(flags, name) + |> result.replace_error(undefined_flag_err(name)) +} + +fn get_value( + from flags: Map, + at key: String, + expecting kind: fn(Flag) -> Result(a), +) -> Result(a) { + access(flags, key) + |> result.try(kind) + |> snag.context("failed to retrieve value for flag '" <> key <> "'") +} + +/// Gets the current value for the provided int flag +/// +pub fn get_int_value(from flag: Flag) -> Result(Int) { + case flag.value { + I(Internal(value: Some(val), ..)) -> Ok(val) + I(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("int") + } +} + +/// Gets the current value for the associated int flag +/// +pub fn get_int(from flags: Map, for name: String) -> Result(Int) { + get_value(flags, name, get_int_value) +} + +/// Gets the current value for the provided ints flag +/// +pub fn get_ints_value(from flag: Flag) -> Result(List(Int)) { + case flag.value { + LI(Internal(value: Some(val), ..)) -> Ok(val) + LI(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("int list") + } +} + +/// Gets the current value for the associated ints flag +/// +pub fn get_ints(from flags: Map, for name: String) -> Result(List(Int)) { + get_value(flags, name, get_ints_value) +} + +/// Gets the current value for the provided bool flag +/// +pub fn get_bool_value(from flag: Flag) -> Result(Bool) { + case flag.value { + B(Internal(Some(val), ..)) -> Ok(val) + B(Internal(None, ..)) -> flag_not_provided_error() + _ -> access_type_error("bool") + } +} + +/// Gets the current value for the associated bool flag +/// +pub fn get_bool(from flags: Map, for name: String) -> Result(Bool) { + get_value(flags, name, get_bool_value) +} + +/// Gets the current value for the provided string flag +/// +pub fn get_string_value(from flag: Flag) -> Result(String) { + case flag.value { + S(Internal(value: Some(val), ..)) -> Ok(val) + S(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("string") + } +} + +/// Gets the current value for the associated string flag +/// +pub fn get_string(from flags: Map, for name: String) -> Result(String) { + get_value(flags, name, get_string_value) +} + +/// Gets the current value for the provided strings flag +/// +pub fn get_strings_value(from flag: Flag) -> Result(List(String)) { + case flag.value { + LS(Internal(value: Some(val), ..)) -> Ok(val) + LS(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("string list") + } +} + +/// Gets the current value for the associated strings flag +/// +pub fn get_strings(from flags: Map, for name: String) -> Result(List(String)) { + get_value(flags, name, get_strings_value) +} + +/// Gets the current value for the provided float flag +/// +pub fn get_float_value(from flag: Flag) -> Result(Float) { + case flag.value { + F(Internal(value: Some(val), ..)) -> Ok(val) + F(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("float") + } +} + +/// Gets the current value for the associated float flag +/// +pub fn get_float(from flags: Map, for name: String) -> Result(Float) { + get_value(flags, name, get_float_value) +} + +/// Gets the current value for the provided floats flag +/// +pub fn get_floats_value(from flag: Flag) -> Result(List(Float)) { + case flag.value { + LF(Internal(value: Some(val), ..)) -> Ok(val) + LF(Internal(value: None, ..)) -> flag_not_provided_error() + _ -> access_type_error("float list") + } +} + +/// Gets the current value for the associated floats flag +/// +pub fn get_floats(from flags: Map, for name: String) -> Result(List(Float)) { + get_value(flags, name, get_floats_value) +} diff --git a/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam b/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam new file mode 100644 index 0000000..e474bc2 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam @@ -0,0 +1,66 @@ +import gleam/list +import gleam/result +import gleam/string +import gleam/set +import snag.{type Result} + +/// Constraint type for verifying flag values +/// +pub type Constraint(a) = + fn(a) -> Result(Nil) + +/// one_of returns a Constraint that ensures the parsed flag value is +/// one of the allowed values. +/// +pub fn one_of(allowed: List(a)) -> Constraint(a) { + let allowed_set = set.from_list(allowed) + fn(val: a) -> Result(Nil) { + case set.contains(allowed_set, val) { + True -> Ok(Nil) + False -> + snag.error( + "invalid value '" <> string.inspect(val) <> "', must be one of: [" <> { + allowed + |> list.map(fn(a) { "'" <> string.inspect(a) <> "'" }) + |> string.join(", ") <> "]" + }, + ) + } + } +} + +/// none_of returns a Constraint that ensures the parsed flag value is not one of the disallowed values. +/// +pub fn none_of(disallowed: List(a)) -> Constraint(a) { + let disallowed_set = set.from_list(disallowed) + fn(val: a) -> Result(Nil) { + case set.contains(disallowed_set, val) { + False -> Ok(Nil) + True -> + snag.error( + "invalid value '" <> string.inspect(val) <> "', must not be one of: [" <> { + { + disallowed + |> list.map(fn(a) { "'" <> string.inspect(a) <> "'" }) + |> string.join(", ") <> "]" + } + }, + ) + } + } +} + +/// each is a convenience function for applying a Constraint(a) to a List(a). +/// This is useful because the default behaviour for constraints on lists is that they will apply to the list as a whole. +/// +/// For example, to apply one_of to all items in a `List(Int)`: +/// ```gleam +/// [1, 2, 3, 4] |> one_of |> each +/// ``` +pub fn each(constraint: Constraint(a)) -> Constraint(List(a)) { + fn(l: List(a)) -> Result(Nil) { + l + |> list.try_map(constraint) + |> result.replace(Nil) + } +} diff --git a/aoc2023/build/packages/glint/src/glint@flag.erl b/aoc2023/build/packages/glint/src/glint@flag.erl new file mode 100644 index 0000000..bcce6db --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint@flag.erl @@ -0,0 +1,523 @@ +-module(glint@flag). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([string/0, string_list/0, build/1, constraint/2, description/2, default/2, build_map/1, int/0, int_list/0, float/0, float_list/0, bool/0, flag_type_help/1, flags_help/1, update_flags/2, get_int_value/1, get_int/2, get_ints_value/1, get_ints/2, get_bool_value/1, get_bool/2, get_string_value/1, get_string/2, get_strings_value/1, get_strings/2, get_float_value/1, get_float/2, get_floats_value/1, get_floats/2]). +-export_type([value/0, flag_builder/1, internal/1, flag/0]). + +-type value() :: {b, internal(boolean())} | + {i, internal(integer())} | + {li, internal(list(integer()))} | + {f, internal(float())} | + {lf, internal(list(float()))} | + {s, internal(binary())} | + {ls, internal(list(binary()))}. + +-opaque flag_builder(FTZ) :: {flag_builder, + binary(), + fun((binary()) -> {ok, FTZ} | {error, snag:snag()}), + fun((internal(FTZ)) -> value()), + gleam@option:option(FTZ)}. + +-opaque internal(FUA) :: {internal, + gleam@option:option(FUA), + fun((binary()) -> {ok, FUA} | {error, snag:snag()})}. + +-type flag() :: {flag, value(), binary()}. + +-spec new( + fun((internal(FUR)) -> value()), + fun((binary()) -> {ok, FUR} | {error, snag:snag()}) +) -> flag_builder(FUR). +new(Valuer, P) -> + {flag_builder, <<""/utf8>>, P, Valuer, none}. + +-spec string() -> flag_builder(binary()). +string() -> + new(fun(Field@0) -> {s, Field@0} end, fun(S) -> {ok, S} end). + +-spec string_list() -> flag_builder(list(binary())). +string_list() -> + new(fun(Field@0) -> {ls, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + {ok, _pipe@1} end). + +-spec build(flag_builder(any())) -> flag(). +build(Fb) -> + {flag, + (erlang:element(4, Fb))( + {internal, erlang:element(5, Fb), erlang:element(3, Fb)} + ), + erlang:element(2, Fb)}. + +-spec attempt( + {ok, FVI} | {error, FVJ}, + fun((FVI) -> {ok, any()} | {error, FVJ}) +) -> {ok, FVI} | {error, FVJ}. +attempt(Val, F) -> + gleam@result:'try'(Val, fun(A) -> gleam@result:replace(F(A), A) end). + +-spec wrap_with_constraint( + fun((binary()) -> {ok, FVC} | {error, snag:snag()}), + fun((FVC) -> {ok, nil} | {error, snag:snag()}) +) -> fun((binary()) -> {ok, FVC} | {error, snag:snag()}). +wrap_with_constraint(P, Constraint) -> + fun(Input) -> attempt(P(Input), Constraint) end. + +-spec constraint( + flag_builder(FUY), + fun((FUY) -> {ok, nil} | {error, snag:snag()}) +) -> flag_builder(FUY). +constraint(Builder, Constraint) -> + erlang:setelement( + 3, + Builder, + wrap_with_constraint(erlang:element(3, Builder), Constraint) + ). + +-spec description(flag_builder(FVR), binary()) -> flag_builder(FVR). +description(Builder, Description) -> + erlang:setelement(2, Builder, Description). + +-spec default(flag_builder(FVU), FVU) -> flag_builder(FVU). +default(Builder, Default) -> + erlang:setelement(5, Builder, {some, Default}). + +-spec build_map(list({binary(), flag()})) -> gleam@map:map_(binary(), flag()). +build_map(Flags) -> + gleam@map:from_list(Flags). + +-spec access_type_error(binary()) -> {ok, any()} | {error, snag:snag()}. +access_type_error(Flag_type) -> + snag:error(<<"cannot access flag as "/utf8, Flag_type/binary>>). + +-spec flag_not_provided_error() -> {ok, any()} | {error, snag:snag()}. +flag_not_provided_error() -> + snag:error(<<"no value provided"/utf8>>). + +-spec construct_value(binary(), internal(FWE), fun((internal(FWE)) -> value())) -> {ok, + value()} | + {error, snag:snag()}. +construct_value(Input, Internal, Constructor) -> + gleam@result:map( + (erlang:element(3, Internal))(Input), + fun(Val) -> Constructor(erlang:setelement(2, Internal, {some, Val})) end + ). + +-spec compute_flag(binary(), value()) -> {ok, value()} | {error, snag:snag()}. +compute_flag(Input, Current) -> + _pipe = Input, + _pipe@1 = case Current of + {i, Internal} -> + fun(_capture) -> + construct_value( + _capture, + Internal, + fun(Field@0) -> {i, Field@0} end + ) + end; + + {li, Internal@1} -> + fun(_capture@1) -> + construct_value( + _capture@1, + Internal@1, + fun(Field@0) -> {li, Field@0} end + ) + end; + + {f, Internal@2} -> + fun(_capture@2) -> + construct_value( + _capture@2, + Internal@2, + fun(Field@0) -> {f, Field@0} end + ) + end; + + {lf, Internal@3} -> + fun(_capture@3) -> + construct_value( + _capture@3, + Internal@3, + fun(Field@0) -> {lf, Field@0} end + ) + end; + + {s, Internal@4} -> + fun(_capture@4) -> + construct_value( + _capture@4, + Internal@4, + fun(Field@0) -> {s, Field@0} end + ) + end; + + {ls, Internal@5} -> + fun(_capture@5) -> + construct_value( + _capture@5, + Internal@5, + fun(Field@0) -> {ls, Field@0} end + ) + end; + + {b, Internal@6} -> + fun(_capture@6) -> + construct_value( + _capture@6, + Internal@6, + fun(Field@0) -> {b, Field@0} end + ) + end + end(_pipe), + snag:context(_pipe@1, <<"failed to compute value for flag"/utf8>>). + +-spec layer_invalid_flag(snag:snag(), binary()) -> snag:snag(). +layer_invalid_flag(Err, Flag) -> + snag:layer(Err, <<<<"invalid flag '"/utf8, Flag/binary>>/binary, "'"/utf8>>). + +-spec no_value_flag_err(binary()) -> snag:snag(). +no_value_flag_err(Flag_input) -> + _pipe = (<<<<"flag '"/utf8, Flag_input/binary>>/binary, + "' has no assigned value"/utf8>>), + _pipe@1 = snag:new(_pipe), + layer_invalid_flag(_pipe@1, Flag_input). + +-spec undefined_flag_err(binary()) -> snag:snag(). +undefined_flag_err(Key) -> + _pipe = <<"flag provided but not defined"/utf8>>, + _pipe@1 = snag:new(_pipe), + layer_invalid_flag(_pipe@1, Key). + +-spec cannot_parse(binary(), binary()) -> snag:snag(). +cannot_parse(Value, Kind) -> + _pipe = (<<<<<<"cannot parse value '"/utf8, Value/binary>>/binary, + "' as "/utf8>>/binary, + Kind/binary>>), + snag:new(_pipe). + +-spec int() -> flag_builder(integer()). +int() -> + new(fun(Field@0) -> {i, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@int:parse(_pipe), + gleam@result:replace_error( + _pipe@1, + cannot_parse(Input, <<"int"/utf8>>) + ) end). + +-spec int_list() -> flag_builder(list(integer())). +int_list() -> + new(fun(Field@0) -> {li, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@int:parse/1), + gleam@result:replace_error( + _pipe@2, + cannot_parse(Input, <<"int list"/utf8>>) + ) end). + +-spec float() -> flag_builder(float()). +float() -> + new(fun(Field@0) -> {f, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@float:parse(_pipe), + gleam@result:replace_error( + _pipe@1, + cannot_parse(Input, <<"float"/utf8>>) + ) end). + +-spec float_list() -> flag_builder(list(float())). +float_list() -> + new(fun(Field@0) -> {lf, Field@0} end, fun(Input) -> _pipe = Input, + _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), + _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@float:parse/1), + gleam@result:replace_error( + _pipe@2, + cannot_parse(Input, <<"float list"/utf8>>) + ) end). + +-spec bool() -> flag_builder(boolean()). +bool() -> + new( + fun(Field@0) -> {b, Field@0} end, + fun(Input) -> case gleam@string:lowercase(Input) of + <<"true"/utf8>> -> + {ok, true}; + + <<"t"/utf8>> -> + {ok, true}; + + <<"false"/utf8>> -> + {ok, false}; + + <<"f"/utf8>> -> + {ok, false}; + + _ -> + {error, cannot_parse(Input, <<"bool"/utf8>>)} + end end + ). + +-spec flag_type_help({binary(), flag()}) -> binary(). +flag_type_help(Flag) -> + {Name, Contents} = Flag, + Kind = case erlang:element(2, Contents) of + {i, _} -> + <<"INT"/utf8>>; + + {b, _} -> + <<"BOOL"/utf8>>; + + {f, _} -> + <<"FLOAT"/utf8>>; + + {lf, _} -> + <<"FLOAT_LIST"/utf8>>; + + {li, _} -> + <<"INT_LIST"/utf8>>; + + {ls, _} -> + <<"STRING_LIST"/utf8>>; + + {s, _} -> + <<"STRING"/utf8>> + end, + <<<<<<<<<<"--"/utf8, Name/binary>>/binary, "="/utf8>>/binary, "<"/utf8>>/binary, + Kind/binary>>/binary, + ">"/utf8>>. + +-spec flag_help({binary(), flag()}) -> binary(). +flag_help(Flag) -> + <<<<(flag_type_help(Flag))/binary, "\t\t"/utf8>>/binary, + (erlang:element(3, (erlang:element(2, Flag))))/binary>>. + +-spec flags_help(gleam@map:map_(binary(), flag())) -> list(binary()). +flags_help(Flags) -> + _pipe = Flags, + _pipe@1 = gleam@map:to_list(_pipe), + gleam@list:map(_pipe@1, fun flag_help/1). + +-spec access(gleam@map:map_(binary(), flag()), binary()) -> {ok, flag()} | + {error, snag:snag()}. +access(Flags, Name) -> + _pipe = gleam@map:get(Flags, Name), + gleam@result:replace_error(_pipe, undefined_flag_err(Name)). + +-spec update_flag_value(gleam@map:map_(binary(), flag()), {binary(), binary()}) -> {ok, + gleam@map:map_(binary(), flag())} | + {error, snag:snag()}. +update_flag_value(Flags, Data) -> + {Key, Input} = Data, + gleam@result:'try'( + access(Flags, Key), + fun(Contents) -> + gleam@result:map( + begin + _pipe = compute_flag(Input, erlang:element(2, Contents)), + gleam@result:map_error( + _pipe, + fun(_capture) -> layer_invalid_flag(_capture, Key) end + ) + end, + fun(Value) -> + gleam@map:insert( + Flags, + Key, + erlang:setelement(2, Contents, Value) + ) + end + ) + end + ). + +-spec attempt_toggle_flag(gleam@map:map_(binary(), flag()), binary()) -> {ok, + gleam@map:map_(binary(), flag())} | + {error, snag:snag()}. +attempt_toggle_flag(Flags, Key) -> + gleam@result:'try'( + access(Flags, Key), + fun(Contents) -> case erlang:element(2, Contents) of + {b, {internal, none, _} = Internal} -> + _pipe = erlang:setelement(2, Internal, {some, true}), + _pipe@1 = {b, _pipe}, + _pipe@2 = (fun(Val) -> + erlang:setelement(2, Contents, Val) + end)(_pipe@1), + _pipe@3 = gleam@map:insert(Flags, Key, _pipe@2), + {ok, _pipe@3}; + + {b, {internal, {some, Val@1}, _} = Internal@1} -> + _pipe@4 = erlang:setelement( + 2, + Internal@1, + {some, not Val@1} + ), + _pipe@5 = {b, _pipe@4}, + _pipe@6 = (fun(Val@2) -> + erlang:setelement(2, Contents, Val@2) + end)(_pipe@5), + _pipe@7 = gleam@map:insert(Flags, Key, _pipe@6), + {ok, _pipe@7}; + + _ -> + {error, no_value_flag_err(Key)} + end end + ). + +-spec update_flags(gleam@map:map_(binary(), flag()), binary()) -> {ok, + gleam@map:map_(binary(), flag())} | + {error, snag:snag()}. +update_flags(Flags, Flag_input) -> + Flag_input@1 = gleam@string:drop_left( + Flag_input, + gleam@string:length(<<"--"/utf8>>) + ), + case gleam@string:split_once(Flag_input@1, <<"="/utf8>>) of + {ok, Data} -> + update_flag_value(Flags, Data); + + {error, _} -> + attempt_toggle_flag(Flags, Flag_input@1) + end. + +-spec get_value( + gleam@map:map_(binary(), flag()), + binary(), + fun((flag()) -> {ok, FWM} | {error, snag:snag()}) +) -> {ok, FWM} | {error, snag:snag()}. +get_value(Flags, Key, Kind) -> + _pipe = access(Flags, Key), + _pipe@1 = gleam@result:'try'(_pipe, Kind), + snag:context( + _pipe@1, + <<<<"failed to retrieve value for flag '"/utf8, Key/binary>>/binary, + "'"/utf8>> + ). + +-spec get_int_value(flag()) -> {ok, integer()} | {error, snag:snag()}. +get_int_value(Flag) -> + case erlang:element(2, Flag) of + {i, {internal, {some, Val}, _}} -> + {ok, Val}; + + {i, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"int"/utf8>>) + end. + +-spec get_int(gleam@map:map_(binary(), flag()), binary()) -> {ok, integer()} | + {error, snag:snag()}. +get_int(Flags, Name) -> + get_value(Flags, Name, fun get_int_value/1). + +-spec get_ints_value(flag()) -> {ok, list(integer())} | {error, snag:snag()}. +get_ints_value(Flag) -> + case erlang:element(2, Flag) of + {li, {internal, {some, Val}, _}} -> + {ok, Val}; + + {li, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"int list"/utf8>>) + end. + +-spec get_ints(gleam@map:map_(binary(), flag()), binary()) -> {ok, + list(integer())} | + {error, snag:snag()}. +get_ints(Flags, Name) -> + get_value(Flags, Name, fun get_ints_value/1). + +-spec get_bool_value(flag()) -> {ok, boolean()} | {error, snag:snag()}. +get_bool_value(Flag) -> + case erlang:element(2, Flag) of + {b, {internal, {some, Val}, _}} -> + {ok, Val}; + + {b, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"bool"/utf8>>) + end. + +-spec get_bool(gleam@map:map_(binary(), flag()), binary()) -> {ok, boolean()} | + {error, snag:snag()}. +get_bool(Flags, Name) -> + get_value(Flags, Name, fun get_bool_value/1). + +-spec get_string_value(flag()) -> {ok, binary()} | {error, snag:snag()}. +get_string_value(Flag) -> + case erlang:element(2, Flag) of + {s, {internal, {some, Val}, _}} -> + {ok, Val}; + + {s, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"string"/utf8>>) + end. + +-spec get_string(gleam@map:map_(binary(), flag()), binary()) -> {ok, binary()} | + {error, snag:snag()}. +get_string(Flags, Name) -> + get_value(Flags, Name, fun get_string_value/1). + +-spec get_strings_value(flag()) -> {ok, list(binary())} | {error, snag:snag()}. +get_strings_value(Flag) -> + case erlang:element(2, Flag) of + {ls, {internal, {some, Val}, _}} -> + {ok, Val}; + + {ls, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"string list"/utf8>>) + end. + +-spec get_strings(gleam@map:map_(binary(), flag()), binary()) -> {ok, + list(binary())} | + {error, snag:snag()}. +get_strings(Flags, Name) -> + get_value(Flags, Name, fun get_strings_value/1). + +-spec get_float_value(flag()) -> {ok, float()} | {error, snag:snag()}. +get_float_value(Flag) -> + case erlang:element(2, Flag) of + {f, {internal, {some, Val}, _}} -> + {ok, Val}; + + {f, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"float"/utf8>>) + end. + +-spec get_float(gleam@map:map_(binary(), flag()), binary()) -> {ok, float()} | + {error, snag:snag()}. +get_float(Flags, Name) -> + get_value(Flags, Name, fun get_float_value/1). + +-spec get_floats_value(flag()) -> {ok, list(float())} | {error, snag:snag()}. +get_floats_value(Flag) -> + case erlang:element(2, Flag) of + {lf, {internal, {some, Val}, _}} -> + {ok, Val}; + + {lf, {internal, none, _}} -> + flag_not_provided_error(); + + _ -> + access_type_error(<<"float list"/utf8>>) + end. + +-spec get_floats(gleam@map:map_(binary(), flag()), binary()) -> {ok, + list(float())} | + {error, snag:snag()}. +get_floats(Flags, Name) -> + get_value(Flags, Name, fun get_floats_value/1). diff --git a/aoc2023/build/packages/glint/src/glint@flag@constraint.erl b/aoc2023/build/packages/glint/src/glint@flag@constraint.erl new file mode 100644 index 0000000..2978be0 --- /dev/null +++ b/aoc2023/build/packages/glint/src/glint@flag@constraint.erl @@ -0,0 +1,68 @@ +-module(glint@flag@constraint). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([one_of/1, none_of/1, each/1]). + +-spec one_of(list(FSI)) -> fun((FSI) -> {ok, nil} | {error, snag:snag()}). +one_of(Allowed) -> + Allowed_set = gleam@set:from_list(Allowed), + fun(Val) -> case gleam@set:contains(Allowed_set, Val) of + true -> + {ok, nil}; + + false -> + snag:error( + <<<<<<"invalid value '"/utf8, + (gleam@string:inspect(Val))/binary>>/binary, + "', must be one of: ["/utf8>>/binary, + ((<<(begin + _pipe = Allowed, + _pipe@1 = gleam@list:map( + _pipe, + fun(A) -> + <<<<"'"/utf8, + (gleam@string:inspect(A))/binary>>/binary, + "'"/utf8>> + end + ), + gleam@string:join(_pipe@1, <<", "/utf8>>) + end)/binary, + "]"/utf8>>))/binary>> + ) + end end. + +-spec none_of(list(FSL)) -> fun((FSL) -> {ok, nil} | {error, snag:snag()}). +none_of(Disallowed) -> + Disallowed_set = gleam@set:from_list(Disallowed), + fun(Val) -> case gleam@set:contains(Disallowed_set, Val) of + false -> + {ok, nil}; + + true -> + snag:error( + <<<<<<"invalid value '"/utf8, + (gleam@string:inspect(Val))/binary>>/binary, + "', must not be one of: ["/utf8>>/binary, + (((<<(begin + _pipe = Disallowed, + _pipe@1 = gleam@list:map( + _pipe, + fun(A) -> + <<<<"'"/utf8, + (gleam@string:inspect(A))/binary>>/binary, + "'"/utf8>> + end + ), + gleam@string:join(_pipe@1, <<", "/utf8>>) + end)/binary, + "]"/utf8>>)))/binary>> + ) + end end. + +-spec each(fun((FSO) -> {ok, nil} | {error, snag:snag()})) -> fun((list(FSO)) -> {ok, + nil} | + {error, snag:snag()}). +each(Constraint) -> + fun(L) -> _pipe = L, + _pipe@1 = gleam@list:try_map(_pipe, Constraint), + gleam@result:replace(_pipe@1, nil) end. diff --git a/aoc2023/build/packages/packages.toml b/aoc2023/build/packages/packages.toml new file mode 100644 index 0000000..d4c7b69 --- /dev/null +++ b/aoc2023/build/packages/packages.toml @@ -0,0 +1,16 @@ +[packages] +simplifile = "1.0.0" +gleam_community_ansi = "1.2.0" +glint = "0.13.0" +gleam_community_colour = "1.2.0" +gleam_erlang = "0.23.1" +tom = "0.2.1" +gleam_httpc = "2.1.1" +adglent = "1.2.0" +gap = "1.0.1" +gleam_community_maths = "1.0.1" +gleam_otp = "0.8.0" +gleam_stdlib = "0.33.0" +pqueue = "2.0.7" +snag = "0.2.1" +gleam_http = "3.5.2" diff --git a/aoc2023/build/packages/pqueue/LICENSE b/aoc2023/build/packages/pqueue/LICENSE new file mode 100644 index 0000000..5697803 --- /dev/null +++ b/aoc2023/build/packages/pqueue/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2011-2023 Michael Truog + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/aoc2023/build/packages/pqueue/README.markdown b/aoc2023/build/packages/pqueue/README.markdown new file mode 100644 index 0000000..77aaf1c --- /dev/null +++ b/aoc2023/build/packages/pqueue/README.markdown @@ -0,0 +1,31 @@ +Erlang Priority Queue Implementation +==================================== + +The priority queue implementations implement a subset of the stdlib Erlang queue interface as seen in the implementation used by both [Riak and RabbitMQ](https://github.com/basho/riak_core/blob/master/src/riak_core_priority_queue.erl). + +The implementations: + +* `priority_queue` (fastest for any priorities when only using a single priority at a time) +* `pqueue` (fastest for 41 priorities, -20 (high) to 20 (low), when using 2 or more priorities at the same time) +* `pqueue2` (slower heap implementation) +* `pqueue3` (faster than `pqueue2` and `priority_queue` when using 64 or more priorities at the same time) +* `pqueue4` (slightly slower than `pqueue` but fastest for allowing 257 priorities, -128 (high) to 128 (low), i.e., fastest when using 42 or more priorities at the same time) + +[The latest results are here](http://okeuday.livejournal.com/19539.html), with [the benchmark here](http://github.com/okeuday/erlbench). + +Author +------ + +Michael Truog (mjtruog at protonmail dot com) + +Thanks +------ + +* Jesper Louis andersen (PropEr integration and testing) +* Ulf Wiger (suggestions and insight) + +License +------- + +MIT License + diff --git a/aoc2023/build/packages/pqueue/doc/edoc-info b/aoc2023/build/packages/pqueue/doc/edoc-info new file mode 100644 index 0000000..5e5a8d3 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/edoc-info @@ -0,0 +1,3 @@ +%% encoding: UTF-8 +{application,pqueue}. +{modules,[pqueue,pqueue2,pqueue3,pqueue4]}. diff --git a/aoc2023/build/packages/pqueue/doc/erlang.png b/aoc2023/build/packages/pqueue/doc/erlang.png new file mode 100644 index 0000000..987a618 Binary files /dev/null and b/aoc2023/build/packages/pqueue/doc/erlang.png differ diff --git a/aoc2023/build/packages/pqueue/doc/index.html b/aoc2023/build/packages/pqueue/doc/index.html new file mode 100644 index 0000000..d55b5e6 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/index.html @@ -0,0 +1,17 @@ + + + +The pqueue application + + + + + + +<h2>This page uses frames</h2> +<p>Your browser does not accept frames. +<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead. +</p> + + + \ No newline at end of file diff --git a/aoc2023/build/packages/pqueue/doc/modules-frame.html b/aoc2023/build/packages/pqueue/doc/modules-frame.html new file mode 100644 index 0000000..5a87cc4 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/modules-frame.html @@ -0,0 +1,15 @@ + + + +The pqueue application + + + +

Modules

+ + + + +
pqueue
pqueue2
pqueue3
pqueue4
+ + \ No newline at end of file diff --git a/aoc2023/build/packages/pqueue/doc/overview-summary.html b/aoc2023/build/packages/pqueue/doc/overview-summary.html new file mode 100644 index 0000000..e2f8906 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/overview-summary.html @@ -0,0 +1,16 @@ + + + + +The pqueue application + + + + +

The pqueue application

+ +
+ +

Generated by EDoc

+ + diff --git a/aoc2023/build/packages/pqueue/doc/pqueue.html b/aoc2023/build/packages/pqueue/doc/pqueue.html new file mode 100644 index 0000000..40b05ac --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/pqueue.html @@ -0,0 +1,166 @@ + + + + +Module pqueue + + + + +
+ +

Module pqueue

+ +

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-20 (high) to 20 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:34 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-20 (high) to 20 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. This implementation was created to + avoid the slowness within the priority queue used by both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue()

+

pqueue() = {integer(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}} | {empty, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}}

+ + +

Function Index

+ + + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
join/2 +

Join two priority queues.

+ O(N).
len/1 +

Determine the length of a priority queue.

+ O(N).
new/0 +

Create a new priority queue.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
test/0 +

Regression test.

.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
+ +

Function Details

+ +

in/2

+
+

in(X::term(), Q::pqueue()) -> pqueue()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(X::term(), P::integer(), Q::pqueue()) -> pqueue()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(X1::pqueue()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

join/2

+
+

join(X1::pqueue(), X2::pqueue()) -> pqueue()

+

+

Join two priority queues.

+ O(N)

+ +

len/1

+
+

len(X1::pqueue()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(N)

+ +

new/0

+
+

new() -> pqueue()

+

+

Create a new priority queue.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue()) -> {{value, term(), integer()}, pqueue()} | {empty, pqueue()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

test/0

+
+

test() -> any()

+

+

Regression test.

+

+ +

to_list/1

+
+

to_list(X1::pqueue()) -> [term()]

+

+

Convert the priority queue to a list.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/packages/pqueue/doc/pqueue2.html b/aoc2023/build/packages/pqueue/doc/pqueue2.html new file mode 100644 index 0000000..2942b84 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/pqueue2.html @@ -0,0 +1,143 @@ + + + + +Module pqueue2 + + + + +
+ +

Module pqueue2

+ +

Skew Heap Priority Queue.

+ Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority + queue implementation. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:32 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Skew Heap Priority Queue.

+ Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority + queue implementation. Unfortunately, testing has shown this solution to + be more than 2 times slower than pqueue. +

Data Types

+ +

pqueue2()

+

pqueue2() = empty | {integer(), pqueue2(), pqueue2(), element, term()} | {integer(), pqueue2(), pqueue2(), queue, queue:queue()}

+ + +

Function Index

+ + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

.
in/3 +

Append an item to the tail of a specific priority queue.

.
is_empty/1 +

Check if the priority queue is empty.

.
is_queue/1 +

Check if the priority queue type is as expected.

.
len/1 +

Determine the length of a priority queue.

.
new/0 +

Create a new priority queue.

.
out/1 +

Take an item from the head of the priority queue.

.
out/2 +

Take an item of a specific priority from the head of the queue.

.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
test/0 +

Regression test.

.
to_list/1 +

Convert the priority queue to a list.

.
+ +

Function Details

+ +

in/2

+
+

in(Value::term(), H::pqueue2()) -> pqueue2()

+

+

Append an item to the tail of the 0 priority queue.

+

+ +

in/3

+
+

in(Value::term(), P::integer(), H::pqueue2()) -> pqueue2()

+

+

Append an item to the tail of a specific priority queue.

+

+ +

is_empty/1

+
+

is_empty(X1::pqueue2()) -> true | false

+

+

Check if the priority queue is empty.

+

+ +

is_queue/1

+
+

is_queue(X1::pqueue2()) -> true | false

+

+

Check if the priority queue type is as expected.

+

+ +

len/1

+
+

len(H::pqueue2()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+

+ +

new/0

+
+

new() -> pqueue2()

+

+

Create a new priority queue.

+

+ +

out/1

+
+

out(X1::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item from the head of the priority queue.

+

+ +

out/2

+
+

out(P::integer(), H::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item of a specific priority from the head of the queue.

+

+ +

pout/1

+
+

pout(X1::pqueue2()) -> {{value, term(), integer()}, pqueue2()} | {empty, pqueue2()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value.

+ +

test/0

+
+

test() -> any()

+

+

Regression test.

+

+ +

to_list/1

+
+

to_list(H::pqueue2()) -> [term()]

+

+

Convert the priority queue to a list.

+

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/packages/pqueue/doc/pqueue3.html b/aoc2023/build/packages/pqueue/doc/pqueue3.html new file mode 100644 index 0000000..35f1a7b --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/pqueue3.html @@ -0,0 +1,162 @@ + + + + +Module pqueue3 + + + + +
+ +

Module pqueue3

+ +

A Large Priority Queue.

+ This priority queue implementation depends on layered tuples, so that tuple + access times can be exploited for quick in/out priority queue operations + when using 64 or more total priorities. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:32 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

A Large Priority Queue.

+ This priority queue implementation depends on layered tuples, so that tuple + access times can be exploited for quick in/out priority queue operations + when using 64 or more total priorities. This implementation was created + to avoid the slowness within the priority queue used by + both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue3()

+

pqueue3() = {integer(), integer(), empty | integer(), tuple()}

+ + +

pqueue3_empty()

+

pqueue3_empty() = {integer(), integer(), empty, tuple()}

+ + +

Function Index

+ + + + + + + + + + + +
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
len/1 +

Determine the length of a priority queue.

+ O(N).
new/0 +

Create a new priority queue.

+ O(1).
new/1 +

Create a new priority queue with customization options.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
+ +

Function Details

+ +

in/2

+
+

in(Value::term(), Q::pqueue3()) -> pqueue3()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(Value::term(), P::integer(), X3::pqueue3()) -> pqueue3()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(Q::pqueue3()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue3()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

len/1

+
+

len(Q::pqueue3()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(N)

+ +

new/0

+
+

new() -> pqueue3_empty()

+

+

Create a new priority queue.

+ O(1)

+ +

new/1

+
+

new(Options::[{atom(), term()}]) -> pqueue3()

+

+

Create a new priority queue with customization options.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue3()) -> {{value, term(), integer()}, pqueue3()} | {empty, pqueue3()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

to_list/1

+
+

to_list(Q::pqueue3()) -> [term()]

+

+

Convert the priority queue to a list.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/packages/pqueue/doc/pqueue4.html b/aoc2023/build/packages/pqueue/doc/pqueue4.html new file mode 100644 index 0000000..edcdb6e --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/pqueue4.html @@ -0,0 +1,205 @@ + + + + +Module pqueue4 + + + + +
+ +

Module pqueue4

+ +

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-128 (high) to 128 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. +

Copyright © 2011-2020 Michael Truog

+ +

Version: 2.0.1 Nov 26 2020 14:55:34 + ------------------------------------------------------------------------

+

Authors: Michael Truog (mjtruog at protonmail dot com).

+ +

Description

+

Static Priority Queue.

+ This priority queue implementation depends on a static number of priorities + (-128 (high) to 128 (low)) so that tuple access times can be exploited for + quick in/out priority queue operations. This implementation was created to + avoid the slowness within the priority queue used by both RabbitMQ and Riak + (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +

Data Types

+ +

pqueue4()

+

pqueue4() = pqueue4(any())

+ + +

pqueue4()

+

pqueue4(T) = {priority() | empty, non_neg_integer(), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, queue:queue(T), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}

+ + +

priority()

+

priority() = -128..128

+ + +

Function Index

+ + + + + + + + + + + + + + + +
filter/2 +

Filter the priority queue.

+ O(N).
filter/3 +

Filter a specific priority within the priority queue.

+ O(N).
in/2 +

Append an item to the tail of the 0 priority queue.

+ O(1).
in/3 +

Append an item to the tail of a specific priority queue.

+ O(1).
is_empty/1 +

Check if the priority queue is empty.

+ O(1).
is_queue/1 +

Check if the priority queue type is as expected.

+ O(1).
len/1 +

Determine the length of a priority queue.

+ O(1).
new/0 +

Create a new priority queue.

+ O(1).
out/1 +

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case.
out/2 +

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case.
pout/1 +

Take an item from the head of the priority queue.

+ Includes the priority in the return value.
remove_unique/2 +

Remove a unique value from the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/2.
remove_unique/3 +

Remove a unique value in a specific priority within the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/3.
to_list/1 +

Convert the priority queue to a list.

+ O(N).
to_plist/1 +

Convert the priority queue to a list with priorities.

+ O(N).
+ +

Function Details

+ +

filter/2

+
+

filter(F::fun((any()) -> boolean()), Q::pqueue4()) -> pqueue4()

+

+

Filter the priority queue.

+ O(N)

+ +

filter/3

+
+

filter(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> pqueue4()

+

+

Filter a specific priority within the priority queue.

+ O(N)

+ +

in/2

+
+

in(X::any(), Q::pqueue4()) -> pqueue4()

+

+

Append an item to the tail of the 0 priority queue.

+ O(1)

+ +

in/3

+
+

in(X::any(), P::integer(), Q::pqueue4()) -> pqueue4()

+

+

Append an item to the tail of a specific priority queue.

+ O(1)

+ +

is_empty/1

+
+

is_empty(X1::pqueue4()) -> true | false

+

+

Check if the priority queue is empty.

+ O(1)

+ +

is_queue/1

+
+

is_queue(X1::pqueue4()) -> true | false

+

+

Check if the priority queue type is as expected.

+ O(1)

+ +

len/1

+
+

len(X1::pqueue4()) -> non_neg_integer()

+

+

Determine the length of a priority queue.

+ O(1)

+ +

new/0

+
+

new() -> pqueue4()

+

+

Create a new priority queue.

+ O(1)

+ +

out/1

+
+

out(Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item from the head of the priority queue.

+ O(1) amortized, O(N) worst case

+ +

out/2

+
+

out(P::integer(), Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item of a specific priority from the head of the queue.

+ O(1) amortized, O(N) worst case

+ +

pout/1

+
+

pout(Q::pqueue4()) -> {{value, any(), integer()}, pqueue4()} | {empty, pqueue4()}

+

+

Take an item from the head of the priority queue.

+ Includes the priority in the return value. + O(1) amortized, O(N) worst case

+ +

remove_unique/2

+
+

remove_unique(F::fun((any()) -> boolean()), Q::pqueue4()) -> {boolean(), pqueue4()}

+

+

Remove a unique value from the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/2

+ +

remove_unique/3

+
+

remove_unique(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> {boolean(), pqueue4()}

+

+

Remove a unique value in a specific priority within the priority queue with a binary predicate.

+ O(N) but smaller constant than filter/3

+ +

to_list/1

+
+

to_list(Q::pqueue4()) -> list()

+

+

Convert the priority queue to a list.

+ O(N)

+ +

to_plist/1

+
+

to_plist(Q::pqueue4()) -> [{priority(), list()}]

+

+

Convert the priority queue to a list with priorities.

+ O(N)

+
+ + +

Generated by EDoc

+ + diff --git a/aoc2023/build/packages/pqueue/doc/stylesheet.css b/aoc2023/build/packages/pqueue/doc/stylesheet.css new file mode 100644 index 0000000..ab170c0 --- /dev/null +++ b/aoc2023/build/packages/pqueue/doc/stylesheet.css @@ -0,0 +1,55 @@ +/* standard EDoc style sheet */ +body { + font-family: Verdana, Arial, Helvetica, sans-serif; + margin-left: .25in; + margin-right: .2in; + margin-top: 0.2in; + margin-bottom: 0.2in; + color: #000000; + background-color: #ffffff; +} +h1,h2 { + margin-left: -0.2in; +} +div.navbar { + background-color: #add8e6; + padding: 0.2em; +} +h2.indextitle { + padding: 0.4em; + background-color: #add8e6; +} +h3.function,h3.typedecl { + background-color: #add8e6; + padding-left: 1em; +} +div.spec { + margin-left: 2em; + background-color: #eeeeee; +} +a.module { + text-decoration:none +} +a.module:hover { + background-color: #eeeeee; +} +ul.definitions { + list-style-type: none; +} +ul.index { + list-style-type: none; + background-color: #eeeeee; +} + +/* + * Minor style tweaks + */ +ul { + list-style-type: square; +} +table { + border-collapse: collapse; +} +td { + padding: 3 +} diff --git a/aoc2023/build/packages/pqueue/rebar.config b/aoc2023/build/packages/pqueue/rebar.config new file mode 100644 index 0000000..f8022f0 --- /dev/null +++ b/aoc2023/build/packages/pqueue/rebar.config @@ -0,0 +1,14 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: + +{erl_opts, + [{platform_define, "^R16", 'ERLANG_OTP_VERSION_16'}, + {platform_define, "^17\.", 'ERLANG_OTP_VERSION_17'}, + {platform_define, "^18\.", 'ERLANG_OTP_VERSION_18'}, + {platform_define, "^19\.", 'ERLANG_OTP_VERSION_19'}, + {platform_define, "^20\.", 'ERLANG_OTP_VERSION_20'}, + warn_export_vars, + warn_unused_import, + %warn_missing_spec, + warnings_as_errors]}. +{edoc_opts, [{preprocess, true}]}. diff --git a/aoc2023/build/packages/pqueue/src/pqueue.app.src b/aoc2023/build/packages/pqueue/src/pqueue.app.src new file mode 100644 index 0000000..b153ad1 --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue.app.src @@ -0,0 +1,10 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: + +{application, pqueue, + [{description, "Priority Queue Data Structures"}, + {vsn, "2.0.7"}, + {modules, [pqueue, pqueue2, pqueue3, pqueue4]}, + {registered, []}, + {applications, [stdlib, kernel]}]}. + diff --git a/aoc2023/build/packages/pqueue/src/pqueue.erl b/aoc2023/build/packages/pqueue/src/pqueue.erl new file mode 100644 index 0000000..2c57fa2 --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue.erl @@ -0,0 +1,2246 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Static Priority Queue.== +%%% This priority queue implementation depends on a static number of priorities +%%% (-20 (high) to 20 (low)) so that tuple access times can be exploited for +%%% quick in/out priority queue operations. This implementation was created to +%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + join/2, % O(N) typically (?) + len/1, % O(N) + new/0, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + to_list/1, % O(N) + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue() :: + {integer(), + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}} | + {'empty', + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. +-else. +-type pqueue() :: + {integer(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + queue:queue(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}} | + {'empty', + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + queue:queue(), + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}, + {queue:queue(), queue:queue(), queue:queue(), queue:queue(), + queue:queue(), queue:queue(), queue:queue()}}. +-endif. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue()) -> pqueue(). + +in(X, Q) -> + in(X, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue()) -> pqueue(). + +in(_, P, _) + when P < -20; P > 20 -> + erlang:exit(badarg); +in(X, P, {empty, _, _, _, _, _, _, _} = Q) -> + in_higher(P, Q, X); +in(X, P, {Pc, _, _, _, _, _, _, _} = Q) + when P < Pc -> + in_higher(P, Q, X); +in(X, P, Q) -> + in_lower(P, Q, X). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue()) -> 'true' | 'false'. + +is_empty({empty, _, _, _, _, _, _, _}) -> + true; +is_empty({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:is_empty(Qn20) and queue:is_empty(Qn19) and queue:is_empty(Qn18) and + queue:is_empty(Qn17) and queue:is_empty(Qn16) and queue:is_empty(Qn15) and + queue:is_empty(Qn14) and + queue:is_empty(Qn13) and queue:is_empty(Qn12) and queue:is_empty(Qn11) and + queue:is_empty(Qn10) and queue:is_empty(Qn9) and queue:is_empty(Qn8) and + queue:is_empty(Qn7) and + queue:is_empty(Qn6) and queue:is_empty(Qn5) and queue:is_empty(Qn4) and + queue:is_empty(Qn3) and queue:is_empty(Qn2) and queue:is_empty(Qn1) and + queue:is_empty(Q0) and + queue:is_empty(Qp1) and queue:is_empty(Qp2) and queue:is_empty(Qp3) and + queue:is_empty(Qp4) and queue:is_empty(Qp5) and queue:is_empty(Qp6) and + queue:is_empty(Qp7) and queue:is_empty(Qp8) and queue:is_empty(Qp9) and + queue:is_empty(Qp10) and queue:is_empty(Qp11) and queue:is_empty(Qp12) and + queue:is_empty(Qp13) and + queue:is_empty(Qp14) and queue:is_empty(Qp15) and queue:is_empty(Qp16) and + queue:is_empty(Qp17) and queue:is_empty(Qp18) and queue:is_empty(Qp19) and + queue:is_empty(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue()) -> 'true' | 'false'. + +is_queue({Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) + when tuple_size(Qsn14) == 7, tuple_size(Qsn7) == 7, tuple_size(Qsn1) == 6, + tuple_size(Qsp14) == 7, tuple_size(Qsp7) == 7, tuple_size(Qsp1) == 6 -> + (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Join two priority queues.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec join(pqueue(), pqueue()) -> pqueue(). + +join({P1c, + {Q1_n20, Q1_n19, Q1_n18, Q1_n17, Q1_n16, Q1_n15, Q1_n14}, + {Q1_n13, Q1_n12, Q1_n11, Q1_n10, Q1_n9, Q1_n8, Q1_n7}, + {Q1_n6, Q1_n5, Q1_n4, Q1_n3, Q1_n2, Q1_n1}, + Q1_0, + {Q1_p1, Q1_p2, Q1_p3, Q1_p4, Q1_p5, Q1_p6}, + {Q1_p7, Q1_p8, Q1_p9, Q1_p10, Q1_p11, Q1_p12, Q1_p13}, + {Q1_p14, Q1_p15, Q1_p16, Q1_p17, Q1_p18, Q1_p19, Q1_p20}}, + {P2c, + {Q2_n20, Q2_n19, Q2_n18, Q2_n17, Q2_n16, Q2_n15, Q2_n14}, + {Q2_n13, Q2_n12, Q2_n11, Q2_n10, Q2_n9, Q2_n8, Q2_n7}, + {Q2_n6, Q2_n5, Q2_n4, Q2_n3, Q2_n2, Q2_n1}, + Q2_0, + {Q2_p1, Q2_p2, Q2_p3, Q2_p4, Q2_p5, Q2_p6}, + {Q2_p7, Q2_p8, Q2_p9, Q2_p10, Q2_p11, Q2_p12, Q2_p13}, + {Q2_p14, Q2_p15, Q2_p16, Q2_p17, Q2_p18, Q2_p19, Q2_p20}}) -> + {erlang:min(P1c, P2c), + {queue:join(Q1_n20, Q2_n20), queue:join(Q1_n19, Q2_n19), + queue:join(Q1_n18, Q2_n18), queue:join(Q1_n17, Q2_n17), + queue:join(Q1_n16, Q2_n16), queue:join(Q1_n15, Q2_n15), + queue:join(Q1_n14, Q2_n14)}, + {queue:join(Q1_n13, Q2_n13), queue:join(Q1_n12, Q2_n12), + queue:join(Q1_n11, Q2_n11), queue:join(Q1_n10, Q2_n10), + queue:join(Q1_n9, Q2_n9), queue:join(Q1_n8, Q2_n8), + queue:join(Q1_n7, Q2_n7)}, + {queue:join(Q1_n6, Q2_n6), queue:join(Q1_n5, Q2_n5), + queue:join(Q1_n4, Q2_n4), queue:join(Q1_n3, Q2_n3), + queue:join(Q1_n2, Q2_n2), queue:join(Q1_n1, Q2_n1)}, + queue:join(Q1_0, Q2_0), + {queue:join(Q1_p1, Q2_p1), queue:join(Q1_p2, Q2_p2), + queue:join(Q1_p3, Q2_p3), queue:join(Q1_p4, Q2_p4), + queue:join(Q1_p5, Q2_p5), queue:join(Q1_p6, Q2_p6)}, + {queue:join(Q1_p7, Q2_p7), queue:join(Q1_p8, Q2_p8), + queue:join(Q1_p9, Q2_p9), queue:join(Q1_p10, Q2_p10), + queue:join(Q1_p11, Q2_p11), queue:join(Q1_p12, Q2_p12), + queue:join(Q1_p13, Q2_p13)}, + {queue:join(Q1_p14, Q2_p14), queue:join(Q1_p15, Q2_p15), + queue:join(Q1_p16, Q2_p16), queue:join(Q1_p17, Q2_p17), + queue:join(Q1_p18, Q2_p18), queue:join(Q1_p19, Q2_p19), + queue:join(Q1_p20, Q2_p20)}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue()) -> non_neg_integer(). + +len({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:len(Qn20) + queue:len(Qn19) + queue:len(Qn18) + queue:len(Qn17) + + queue:len(Qn16) + queue:len(Qn15) + queue:len(Qn14) + + queue:len(Qn13) + queue:len(Qn12) + queue:len(Qn11) + queue:len(Qn10) + + queue:len(Qn9) + queue:len(Qn8) + queue:len(Qn7) + + queue:len(Qn6) + queue:len(Qn5) + queue:len(Qn4) + queue:len(Qn3) + + queue:len(Qn2) + queue:len(Qn1) + + queue:len(Q0) + + queue:len(Qp1) + queue:len(Qp2) + queue:len(Qp3) + queue:len(Qp4) + + queue:len(Qp5) + queue:len(Qp6) + + queue:len(Qp7) + queue:len(Qp8) + queue:len(Qp9) + queue:len(Qp10) + + queue:len(Qp11) + queue:len(Qp12) + queue:len(Qp13) + + queue:len(Qp14) + queue:len(Qp15) + queue:len(Qp16) + queue:len(Qp17) + + queue:len(Qp18) + queue:len(Qp19) + queue:len(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue(). + +new() -> + {empty, % current priority + erlang:make_tuple(7, queue:new()), % priority [-20..-14] + erlang:make_tuple(7, queue:new()), % priority [-13.. -7] + erlang:make_tuple(6, queue:new()), % priority [ -6.. -1] + queue:new(), % priority 0 (default) + erlang:make_tuple(6, queue:new()), % priority [ 1.. 6] + erlang:make_tuple(7, queue:new()), % priority [ 7.. 13] + erlang:make_tuple(7, queue:new())}. % priority [ 14.. 20] + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue()) -> + {{'value', term()}, pqueue()} | {'empty', pqueue()}. + +out({empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out({Pc, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q, nopriority). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue()) -> + {{'value', term()}, pqueue()} | {'empty', pqueue()}. + +out(P, _) + when P < -20; P > 20 -> + erlang:exit(badarg); +out(_, {empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out(P, Q) -> + out_specific(P, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue()) -> + {{'value', term(), integer()}, pqueue()} | {'empty', pqueue()}. + +pout({empty, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +pout({Pc, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q, priority). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue()) -> list(term()). + +to_list({_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + queue:to_list(Qn20) ++ queue:to_list(Qn19) ++ queue:to_list(Qn18) ++ + queue:to_list(Qn17) ++ queue:to_list(Qn16) ++ queue:to_list(Qn15) ++ + queue:to_list(Qn14) ++ + queue:to_list(Qn13) ++ queue:to_list(Qn12) ++ queue:to_list(Qn11) ++ + queue:to_list(Qn10) ++ queue:to_list(Qn9) ++ queue:to_list(Qn8) ++ + queue:to_list(Qn7) ++ + queue:to_list(Qn6) ++ queue:to_list(Qn5) ++ queue:to_list(Qn4) ++ + queue:to_list(Qn3) ++ queue:to_list(Qn2) ++ queue:to_list(Qn1) ++ + queue:to_list(Q0) ++ + queue:to_list(Qp1) ++ queue:to_list(Qp2) ++ queue:to_list(Qp3) ++ + queue:to_list(Qp4) ++ queue:to_list(Qp5) ++ queue:to_list(Qp6) ++ + queue:to_list(Qp7) ++ queue:to_list(Qp8) ++ queue:to_list(Qp9) ++ + queue:to_list(Qp10) ++ queue:to_list(Qp11) ++ queue:to_list(Qp12) ++ + queue:to_list(Qp13) ++ + queue:to_list(Qp14) ++ queue:to_list(Qp15) ++ queue:to_list(Qp16) ++ + queue:to_list(Qp17) ++ queue:to_list(Qp18) ++ queue:to_list(Qp19) ++ + queue:to_list(Qp20). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue:new(), + true = pqueue:is_queue(Q0), + Q1 = pqueue:in(20, 20, Q0), + Q2 = pqueue:in(19, 19, Q1), + Q3 = pqueue:in(18, 18, Q2), + Q4 = pqueue:in(17, 17, Q3), + Q5 = pqueue:in(16, 16, Q4), + Q6 = pqueue:in(15, 15, Q5), + Q7 = pqueue:in(14, 14, Q6), + Q8 = pqueue:in(13, 13, Q7), + Q9 = pqueue:in(12, 12, Q8), + Q10 = pqueue:in(11, 11, Q9), + Q11 = pqueue:in(10, 10, Q10), + Q12 = pqueue:in(9, 9, Q11), + Q13 = pqueue:in(8, 8, Q12), + Q14 = pqueue:in(7, 7, Q13), + Q15 = pqueue:in(6, 6, Q14), + Q16 = pqueue:in(5, 5, Q15), + Q17 = pqueue:in(4, 4, Q16), + Q18 = pqueue:in(3, 3, Q17), + Q19 = pqueue:in(2, 2, Q18), + Q20 = pqueue:in(1, 1, Q19), + Q21 = pqueue:in(0, 0, Q20), + Q22 = pqueue:in(-1, -1, Q21), + Q23 = pqueue:in(-2, -2, Q22), + Q24 = pqueue:in(-3, -3, Q23), + Q25 = pqueue:in(-4, -4, Q24), + Q26 = pqueue:in(-5, -5, Q25), + Q27 = pqueue:in(-6, -6, Q26), + Q28 = pqueue:in(-7, -7, Q27), + Q29 = pqueue:in(-8, -8, Q28), + Q30 = pqueue:in(-9, -9, Q29), + Q31 = pqueue:in(-10, -10, Q30), + Q32 = pqueue:in(-11, -11, Q31), + Q33 = pqueue:in(-12, -12, Q32), + Q34 = pqueue:in(-13, -13, Q33), + Q35 = pqueue:in(-14, -14, Q34), + Q36 = pqueue:in(-15, -15, Q35), + Q37 = pqueue:in(-16, -16, Q36), + Q38 = pqueue:in(-17, -17, Q37), + Q39 = pqueue:in(-18, -18, Q38), + Q40 = pqueue:in(-19, -19, Q39), + Q41 = pqueue:in(-20, -20, Q40), + Q42 = pqueue:in(-20, -20, Q41), + Q43 = pqueue:in(-19, -19, Q42), + Q44 = pqueue:in(-18, -18, Q43), + Q45 = pqueue:in(-17, -17, Q44), + Q46 = pqueue:in(-16, -16, Q45), + Q47 = pqueue:in(-15, -15, Q46), + Q48 = pqueue:in(-14, -14, Q47), + Q49 = pqueue:in(-13, -13, Q48), + Q50 = pqueue:in(-12, -12, Q49), + Q51 = pqueue:in(-11, -11, Q50), + Q52 = pqueue:in(-10, -10, Q51), + Q53 = pqueue:in(-9, -9, Q52), + Q54 = pqueue:in(-8, -8, Q53), + Q55 = pqueue:in(-7, -7, Q54), + Q56 = pqueue:in(-6, -6, Q55), + Q57 = pqueue:in(-5, -5, Q56), + Q58 = pqueue:in(-4, -4, Q57), + Q59 = pqueue:in(-3, -3, Q58), + Q60 = pqueue:in(-2, -2, Q59), + Q61 = pqueue:in(-1, -1, Q60), + Q62 = pqueue:in(0, 0, Q61), + Q63 = pqueue:in(1, 1, Q62), + Q64 = pqueue:in(2, 2, Q63), + Q65 = pqueue:in(3, 3, Q64), + Q66 = pqueue:in(4, 4, Q65), + Q67 = pqueue:in(5, 5, Q66), + Q68 = pqueue:in(6, 6, Q67), + Q69 = pqueue:in(7, 7, Q68), + Q70 = pqueue:in(8, 8, Q69), + Q71 = pqueue:in(9, 9, Q70), + Q72 = pqueue:in(10, 10, Q71), + Q73 = pqueue:in(11, 11, Q72), + Q74 = pqueue:in(12, 12, Q73), + Q75 = pqueue:in(13, 13, Q74), + Q76 = pqueue:in(14, 14, Q75), + Q77 = pqueue:in(15, 15, Q76), + Q78 = pqueue:in(16, 16, Q77), + Q79 = pqueue:in(17, 17, Q78), + Q80 = pqueue:in(18, 18, Q79), + Q81 = pqueue:in(19, 19, Q80), + Q82 = pqueue:in(20, 20, Q81), + true = pqueue:is_queue(Q82), + 82 = pqueue:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue:to_list(Q82), + {{value, -20}, Q83} = pqueue:out(Q82), + {{value, -20}, Q84} = pqueue:out(Q83), + {{value, -19}, Q85} = pqueue:out(Q84), + {{value, -19}, Q86} = pqueue:out(Q85), + {{value, -18}, Q87} = pqueue:out(Q86), + {{value, -18}, Q88} = pqueue:out(Q87), + {{value, 0}, Q89} = pqueue:out(0, Q88), + {{value, 0}, Q90} = pqueue:out(0, Q89), + {empty, _} = pqueue:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue:pout(Q90), + {{value, -17, -17}, Q92} = pqueue:pout(Q91), + {{value, -16, -16}, Q93} = pqueue:pout(Q92), + {{value, -16, -16}, Q94} = pqueue:pout(Q93), + {{value, -15, -15}, Q95} = pqueue:pout(Q94), + {{value, -15, -15}, Q96} = pqueue:pout(Q95), + {{value, -14, -14}, Q97} = pqueue:pout(Q96), + {{value, -14, -14}, Q98} = pqueue:pout(Q97), + {{value, -13, -13}, Q99} = pqueue:pout(Q98), + {{value, -13, -13}, Q100} = pqueue:pout(Q99), + {{value, -12, -12}, Q101} = pqueue:pout(Q100), + {{value, -12, -12}, Q102} = pqueue:pout(Q101), + {{value, -11, -11}, Q103} = pqueue:pout(Q102), + {{value, -11, -11}, Q104} = pqueue:pout(Q103), + {{value, -10, -10}, Q105} = pqueue:pout(Q104), + {{value, -10, -10}, Q106} = pqueue:pout(Q105), + {{value, -9, -9}, Q107} = pqueue:pout(Q106), + {{value, -9, -9}, Q108} = pqueue:pout(Q107), + {{value, -8, -8}, Q109} = pqueue:pout(Q108), + {{value, -8, -8}, Q110} = pqueue:pout(Q109), + {{value, -7, -7}, Q111} = pqueue:pout(Q110), + {{value, -7, -7}, Q112} = pqueue:pout(Q111), + {{value, -6, -6}, Q113} = pqueue:pout(Q112), + {{value, -6, -6}, Q114} = pqueue:pout(Q113), + {{value, -5, -5}, Q115} = pqueue:pout(Q114), + {{value, -5, -5}, Q116} = pqueue:pout(Q115), + {{value, -4, -4}, Q117} = pqueue:pout(Q116), + {{value, -4, -4}, Q118} = pqueue:pout(Q117), + {{value, -3, -3}, Q119} = pqueue:pout(Q118), + {{value, -3, -3}, Q120} = pqueue:pout(Q119), + {{value, -2, -2}, Q121} = pqueue:pout(Q120), + {{value, -2, -2}, Q122} = pqueue:pout(Q121), + {{value, -1, -1}, Q123} = pqueue:pout(Q122), + {{value, -1, -1}, Q124} = pqueue:pout(Q123), + {{value, 1, 1}, Q125} = pqueue:pout(Q124), + {{value, 1, 1}, Q126} = pqueue:pout(Q125), + {{value, 2, 2}, Q127} = pqueue:pout(Q126), + {{value, 2, 2}, Q128} = pqueue:pout(Q127), + {{value, 3, 3}, Q129} = pqueue:pout(Q128), + {{value, 3, 3}, Q130} = pqueue:pout(Q129), + {{value, 4, 4}, Q131} = pqueue:pout(Q130), + {{value, 4, 4}, Q132} = pqueue:pout(Q131), + {{value, 5, 5}, Q133} = pqueue:pout(Q132), + {{value, 5, 5}, Q134} = pqueue:pout(Q133), + {{value, 6, 6}, Q135} = pqueue:pout(Q134), + {{value, 6, 6}, Q136} = pqueue:pout(Q135), + {{value, 7, 7}, Q137} = pqueue:pout(Q136), + {{value, 7, 7}, Q138} = pqueue:pout(Q137), + {{value, 8, 8}, Q139} = pqueue:pout(Q138), + {{value, 8, 8}, Q140} = pqueue:pout(Q139), + {{value, 9, 9}, Q141} = pqueue:pout(Q140), + {{value, 9, 9}, Q142} = pqueue:pout(Q141), + {{value, 10, 10}, Q143} = pqueue:pout(Q142), + {{value, 10, 10}, Q144} = pqueue:pout(Q143), + {{value, 11, 11}, Q145} = pqueue:pout(Q144), + {{value, 11, 11}, Q146} = pqueue:pout(Q145), + {{value, 12, 12}, Q147} = pqueue:pout(Q146), + {{value, 12, 12}, Q148} = pqueue:pout(Q147), + {{value, 13, 13}, Q149} = pqueue:pout(Q148), + {{value, 13, 13}, Q150} = pqueue:pout(Q149), + {{value, 14, 14}, Q151} = pqueue:pout(Q150), + {{value, 14, 14}, Q152} = pqueue:pout(Q151), + {{value, 15, 15}, Q153} = pqueue:pout(Q152), + {{value, 15, 15}, Q154} = pqueue:pout(Q153), + {{value, 16, 16}, Q155} = pqueue:pout(Q154), + {{value, 16, 16}, Q156} = pqueue:pout(Q155), + {{value, 17, 17}, Q157} = pqueue:pout(Q156), + {{value, 17, 17}, Q158} = pqueue:pout(Q157), + {{value, 18, 18}, Q159} = pqueue:pout(Q158), + {{value, 18, 18}, Q160} = pqueue:pout(Q159), + {{value, 19, 19}, Q161} = pqueue:pout(Q160), + {{value, 19, 19}, Q162} = pqueue:pout(Q161), + {{value, 20, 20}, Q163} = pqueue:pout(Q162), + {{value, 20, 20}, Q164} = pqueue:pout(Q163), + true = pqueue:is_empty(Q164), + {empty, Q165} = pqueue:pout(Q164), + true = pqueue:is_empty(Q165), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +in_higher(-20, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-20, + {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-19, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-19, + {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-18, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-18, + {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-17, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-17, + {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-16, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-16, + {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-15, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-15, + {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-14, {_, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-14, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-13, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-13, Qsn14, + {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-12, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-12, Qsn14, + {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-11, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-11, Qsn14, + {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-10, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-10, Qsn14, + {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-9, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-9, Qsn14, + {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-8, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-8, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-7, {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-7, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-6, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-6, Qsn14, Qsn7, + {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-5, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-5, Qsn14, Qsn7, + {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-4, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-4, Qsn14, Qsn7, + {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-3, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-3, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-2, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-2, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(-1, {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {-1, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, + Q0, Qsp1, Qsp7, Qsp14}; +in_higher(0, {_, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {0, Qsn14, Qsn7, Qsn1, + queue:in(X, Q0), + Qsp1, Qsp7, Qsp14}; +in_higher(1, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {1, Qsn14, Qsn7, Qsn1, Q0, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(2, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {2, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(3, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {3, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(4, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {4, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, + Qsp7, Qsp14}; +in_higher(5, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {5, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, + Qsp7, Qsp14}; +in_higher(6, {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {6, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, + Qsp7, Qsp14}; +in_higher(7, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(8, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(9, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(10, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, + Qsp14}; +in_higher(11, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, + Qsp14}; +in_higher(12, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, + Qsp14}; +in_higher(13, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, + Qsp14}; +in_higher(14, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_higher(15, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_higher(16, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; +in_higher(17, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; +in_higher(18, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; +in_higher(19, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; +in_higher(20, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. + +in_lower(-20, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-19, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-18, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-17, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-16, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-15, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-14, {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-13, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-12, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-11, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-10, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-9, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-8, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-7, {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-6, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-5, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-4, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-3, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-2, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(-1, {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, + Q0, Qsp1, Qsp7, Qsp14}; +in_lower(0, {Pc, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, + queue:in(X, Q0), + Qsp1, Qsp7, Qsp14}; +in_lower(1, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(2, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(3, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(4, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, + Qsp7, Qsp14}; +in_lower(5, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, + Qsp7, Qsp14}; +in_lower(6, {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, + Qsp7, Qsp14}; +in_lower(7, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(8, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(9, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(10, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, + Qsp14}; +in_lower(11, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, + Qsp14}; +in_lower(12, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, + Qsp14}; +in_lower(13, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, + Qsp14}; +in_lower(14, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_lower(15, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; +in_lower(16, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; +in_lower(17, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; +in_lower(18, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; +in_lower(19, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; +in_lower(20, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. + +out_current(-20, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn20} = queue:out(Qn20), + if + Value =:= empty -> + out_current(-19, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -20}; + true -> + Value + end, + {NewValue, + {-20, + {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-19, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn19} = queue:out(Qn19), + if + Value =:= empty -> + out_current(-18, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -19}; + true -> + Value + end, + {NewValue, + {-19, + {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-18, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn18} = queue:out(Qn18), + if + Value =:= empty -> + out_current(-17, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -18}; + true -> + Value + end, + {NewValue, + {-18, + {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-17, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn17} = queue:out(Qn17), + if + Value =:= empty -> + out_current(-16, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -17}; + true -> + Value + end, + {NewValue, + {-17, + {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-16, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn16} = queue:out(Qn16), + if + Value =:= empty -> + out_current(-15, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -16}; + true -> + Value + end, + {NewValue, + {-16, + {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-15, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn15} = queue:out(Qn15), + if + Value =:= empty -> + out_current(-14, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -15}; + true -> + Value + end, + {NewValue, + {-15, + {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-14, + {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn14} = queue:out(Qn14), + if + Value =:= empty -> + out_current(-13, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -14}; + true -> + Value + end, + {NewValue, + {-14, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-13, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn13} = queue:out(Qn13), + if + Value =:= empty -> + out_current(-12, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -13}; + true -> + Value + end, + {NewValue, + {-13, Qsn14, + {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-12, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn12} = queue:out(Qn12), + if + Value =:= empty -> + out_current(-11, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -12}; + true -> + Value + end, + {NewValue, + {-12, Qsn14, + {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-11, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn11} = queue:out(Qn11), + if + Value =:= empty -> + out_current(-10, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -11}; + true -> + Value + end, + {NewValue, + {-11, Qsn14, + {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-10, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn10} = queue:out(Qn10), + if + Value =:= empty -> + out_current(-9, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -10}; + true -> + Value + end, + {NewValue, + {-10, Qsn14, + {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-9, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn9} = queue:out(Qn9), + if + Value =:= empty -> + out_current(-8, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -9}; + true -> + Value + end, + {NewValue, + {-9, Qsn14, + {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-8, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn8} = queue:out(Qn8), + if + Value =:= empty -> + out_current(-7, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -8}; + true -> + Value + end, + {NewValue, + {-8, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-7, + {_, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn7} = queue:out(Qn7), + if + Value =:= empty -> + out_current(-6, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -7}; + true -> + Value + end, + {NewValue, + {-7, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-6, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn6} = queue:out(Qn6), + if + Value =:= empty -> + out_current(-5, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -6}; + true -> + Value + end, + {NewValue, + {-6, Qsn14, Qsn7, + {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-5, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn5} = queue:out(Qn5), + if + Value =:= empty -> + out_current(-4, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -5}; + true -> + Value + end, + {NewValue, + {-5, Qsn14, Qsn7, + {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-4, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn4} = queue:out(Qn4), + if + Value =:= empty -> + out_current(-3, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -4}; + true -> + Value + end, + {NewValue, + {-4, Qsn14, Qsn7, + {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-3, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn3} = queue:out(Qn3), + if + Value =:= empty -> + out_current(-2, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -3}; + true -> + Value + end, + {NewValue, + {-3, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-2, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn2} = queue:out(Qn2), + if + Value =:= empty -> + out_current(-1, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -2}; + true -> + Value + end, + {NewValue, + {-2, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(-1, + {_, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQn1} = queue:out(Qn1), + if + Value =:= empty -> + out_current(0, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, -1}; + true -> + Value + end, + {NewValue, + {-1, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, + Q0, Qsp1, Qsp7, Qsp14}} + end; +out_current(0, + {_, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQ0} = queue:out(Q0), + if + Value =:= empty -> + out_current(1, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 0}; + true -> + Value + end, + {NewValue, + {0, Qsn14, Qsn7, Qsn1, + NewQ0, + Qsp1, Qsp7, Qsp14}} + end; +out_current(1, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp1} = queue:out(Qp1), + if + Value =:= empty -> + out_current(2, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 1}; + true -> + Value + end, + {NewValue, + {1, Qsn14, Qsn7, Qsn1, Q0, + {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(2, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp2} = queue:out(Qp2), + if + Value =:= empty -> + out_current(3, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 2}; + true -> + Value + end, + {NewValue, + {2, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(3, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp3} = queue:out(Qp3), + if + Value =:= empty -> + out_current(4, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 3}; + true -> + Value + end, + {NewValue, + {3, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(4, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp4} = queue:out(Qp4), + if + Value =:= empty -> + out_current(5, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 4}; + true -> + Value + end, + {NewValue, + {4, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(5, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp5} = queue:out(Qp5), + if + Value =:= empty -> + out_current(6, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 5}; + true -> + Value + end, + {NewValue, + {5, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, + Qsp7, Qsp14}} + end; +out_current(6, + {_, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14} = Q, ReturnType) -> + {Value, NewQp6} = queue:out(Qp6), + if + Value =:= empty -> + out_current(7, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 6}; + true -> + Value + end, + {NewValue, + {6, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, + Qsp7, Qsp14}} + end; +out_current(7, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp7} = queue:out(Qp7), + if + Value =:= empty -> + out_current(8, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 7}; + true -> + Value + end, + {NewValue, + {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(8, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp8} = queue:out(Qp8), + if + Value =:= empty -> + out_current(9, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 8}; + true -> + Value + end, + {NewValue, + {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(9, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp9} = queue:out(Qp9), + if + Value =:= empty -> + out_current(10, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 9}; + true -> + Value + end, + {NewValue, + {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(10, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp10} = queue:out(Qp10), + if + Value =:= empty -> + out_current(11, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 10}; + true -> + Value + end, + {NewValue, + {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(11, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp11} = queue:out(Qp11), + if + Value =:= empty -> + out_current(12, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 11}; + true -> + Value + end, + {NewValue, + {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, + Qsp14}} + end; +out_current(12, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp12} = queue:out(Qp12), + if + Value =:= empty -> + out_current(13, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 12}; + true -> + Value + end, + {NewValue, + {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, + Qsp14}} + end; +out_current(13, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14} = Q, ReturnType) -> + {Value, NewQp13} = queue:out(Qp13), + if + Value =:= empty -> + out_current(14, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 13}; + true -> + Value + end, + {NewValue, + {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, + Qsp14}} + end; +out_current(14, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp14} = queue:out(Qp14), + if + Value =:= empty -> + out_current(15, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 14}; + true -> + Value + end, + {NewValue, + {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(15, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp15} = queue:out(Qp15), + if + Value =:= empty -> + out_current(16, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 15}; + true -> + Value + end, + {NewValue, + {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(16, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp16} = queue:out(Qp16), + if + Value =:= empty -> + out_current(17, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 16}; + true -> + Value + end, + {NewValue, + {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}} + end; +out_current(17, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp17} = queue:out(Qp17), + if + Value =:= empty -> + out_current(18, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 17}; + true -> + Value + end, + {NewValue, + {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}} + end; +out_current(18, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp18} = queue:out(Qp18), + if + Value =:= empty -> + out_current(19, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 18}; + true -> + Value + end, + {NewValue, + {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}} + end; +out_current(19, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> + {Value, NewQp19} = queue:out(Qp19), + if + Value =:= empty -> + out_current(20, Q, ReturnType); + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 19}; + true -> + Value + end, + {NewValue, + {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}} + end; +out_current(20, + {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20} = Qsp14}, ReturnType) -> + {Value, NewQp20} = queue:out(Qp20), + if + Value =:= empty -> + {empty, {empty, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; + true -> + NewValue = if + ReturnType =:= priority -> + {value, Contents} = Value, + {value, Contents, 20}; + true -> + Value + end, + {NewValue, + {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}} + end. + +out_specific(-20, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn20} = queue:out(Qn20), + {Value, + {Pc, + {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-19, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn19} = queue:out(Qn19), + {Value, + {Pc, + {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-18, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn18} = queue:out(Qn18), + {Value, + {Pc, + {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-17, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn17} = queue:out(Qn17), + {Value, + {Pc, + {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-16, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn16} = queue:out(Qn16), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-15, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn15} = queue:out(Qn15), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-14, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn14} = queue:out(Qn14), + {Value, + {Pc, + {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, + Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-13, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn13} = queue:out(Qn13), + {Value, + {Pc, Qsn14, + {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-12, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn12} = queue:out(Qn12), + {Value, + {Pc, Qsn14, + {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-11, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn11} = queue:out(Qn11), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-10, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn10} = queue:out(Qn10), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-9, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn9} = queue:out(Qn9), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-8, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn8} = queue:out(Qn8), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-7, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn7} = queue:out(Qn7), + {Value, + {Pc, Qsn14, + {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, + Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-6, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn6} = queue:out(Qn6), + {Value, + {Pc, Qsn14, Qsn7, + {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-5, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn5} = queue:out(Qn5), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-4, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn4} = queue:out(Qn4), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-3, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn3} = queue:out(Qn3), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-2, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn2} = queue:out(Qn2), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(-1, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQn1} = queue:out(Qn1), + {Value, + {Pc, Qsn14, Qsn7, + {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, + Q0, Qsp1, Qsp7, Qsp14}}; +out_specific(0, + {Pc, Qsn14, Qsn7, Qsn1, + Q0, Qsp1, Qsp7, Qsp14}) -> + {Value, NewQ0} = queue:out(Q0), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, + NewQ0, + Qsp1, Qsp7, Qsp14}}; +out_specific(1, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp1} = queue:out(Qp1), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(2, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp2} = queue:out(Qp2), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(3, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp3} = queue:out(Qp3), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(4, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp4} = queue:out(Qp4), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(5, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp5} = queue:out(Qp5), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, + Qsp7, Qsp14}}; +out_specific(6, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, + Qsp7, Qsp14}) -> + {Value, NewQp6} = queue:out(Qp6), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, + Qsp7, Qsp14}}; +out_specific(7, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp7} = queue:out(Qp7), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(8, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp8} = queue:out(Qp8), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(9, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp9} = queue:out(Qp9), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(10, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp10} = queue:out(Qp10), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, + Qsp14}}; +out_specific(11, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp11} = queue:out(Qp11), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, + Qsp14}}; +out_specific(12, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp12} = queue:out(Qp12), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, + Qsp14}}; +out_specific(13, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, + Qsp14}) -> + {Value, NewQp13} = queue:out(Qp13), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, + {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, + Qsp14}}; +out_specific(14, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp14} = queue:out(Qp14), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(15, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp15} = queue:out(Qp15), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(16, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp16} = queue:out(Qp16), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}}; +out_specific(17, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp17} = queue:out(Qp17), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}}; +out_specific(18, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp18} = queue:out(Qp18), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}}; +out_specific(19, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp19} = queue:out(Qp19), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}}; +out_specific(20, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> + {Value, NewQp20} = queue:out(Qp20), + {Value, + {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, + {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}}. + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + diff --git a/aoc2023/build/packages/pqueue/src/pqueue2.erl b/aoc2023/build/packages/pqueue/src/pqueue2.erl new file mode 100644 index 0000000..bbdeaaf --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue2.erl @@ -0,0 +1,483 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Skew Heap Priority Queue.== +%%% Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority +%%% queue implementation. Unfortunately, testing has shown this solution to +%%% be more than 2 times slower than pqueue. +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue2). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, + in/3, + is_empty/1, + is_queue/1, + len/1, + new/0, + out/1, + out/2, + pout/1, + to_list/1, + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue2() :: + empty | + {integer(), pqueue2(), pqueue2(), element, term()} | + {integer(), pqueue2(), pqueue2(), queue, queue()}. +-else. +-type pqueue2() :: + empty | + {integer(), pqueue2(), pqueue2(), element, term()} | + {integer(), pqueue2(), pqueue2(), queue, queue:queue()}. +-endif. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue2()) -> pqueue2(). + +in(Value, H) -> + in(Value, 0, H). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue2()) -> pqueue2(). + +in(Value, P, H) -> + merge({P, empty, empty, element, Value}, H). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue2()) -> 'true' | 'false'. + +is_empty(empty) -> + true; +is_empty({_, HL, HR, queue, Queue}) -> + is_empty(HL) andalso is_empty(HR) andalso queue:is_empty(Queue); +is_empty(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue2()) -> 'true' | 'false'. + +is_queue(empty) -> + true; +is_queue({P, _, _, element, _}) + when is_integer(P) -> + true; +is_queue({P, _, _, queue, Queue}) + when is_integer(P) -> + queue:is_queue(Queue); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue2()) -> non_neg_integer(). + +len(H) -> + len(0, out(H)). +len(I, {empty, _}) -> + I; +len(I, {{value, _}, H}) -> + len(I + 1, out(H)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue2(). + +new() -> + empty. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue2()) -> + {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. + +out(empty) -> + {empty, empty}; +out({_, HL, HR, element, Value}) -> + {{value, Value}, merge(HL, HR)}; +out({P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, _} = Result, NewQueue} -> + {Result, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + out(merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue2()) -> + {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. + +out(_, empty) -> + {empty, empty}; +out(P, {P1, _, _, _, _} = H) when P < P1 -> + {empty, H}; +out(P, {P1, HL1, HR1, T, D}) when P > P1 -> + case out(P, HL1) of + {{value, _} = Result, HL2} -> + {Result, {P1, HL2, HR1, T, D}}; + {empty, HL2} -> + case out(P, HR1) of + {{value, _} = Result, HR2} -> + {Result, {P1, HL2, HR2, T, D}}; + {empty, HR2} -> + {empty, {P1, HL2, HR2, T, D}} + end + end; +out(P, {P, HL, HR, element, Value}) -> + {{value, Value}, merge(HL, HR)}; +out(P, {P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, _} = Result, NewQueue} -> + {Result, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + out(P, merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue2()) -> + {{'value', term(), integer()}, pqueue2()} | {'empty', pqueue2()}. + +pout(empty) -> + {empty, empty}; +pout({P, HL, HR, element, Value}) -> + {{value, Value, P}, merge(HL, HR)}; +pout({P, HL, HR, queue, Queue}) -> + case queue:out(Queue) of + {{value, Value}, NewQueue} -> + {{value, Value, P}, {P, HL, HR, queue, NewQueue}}; + {empty, _} -> + pout(merge(HL, HR)) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue2()) -> list(term()). + +to_list(H) -> + to_list([], out(H)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, H}) -> + to_list([Value | L], out(H)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue2:new(), + true = pqueue2:is_queue(Q0), + Q1 = pqueue2:in(20, 20, Q0), + Q2 = pqueue2:in(19, 19, Q1), + Q3 = pqueue2:in(18, 18, Q2), + Q4 = pqueue2:in(17, 17, Q3), + Q5 = pqueue2:in(16, 16, Q4), + Q6 = pqueue2:in(15, 15, Q5), + Q7 = pqueue2:in(14, 14, Q6), + Q8 = pqueue2:in(13, 13, Q7), + Q9 = pqueue2:in(12, 12, Q8), + Q10 = pqueue2:in(11, 11, Q9), + Q11 = pqueue2:in(10, 10, Q10), + Q12 = pqueue2:in(9, 9, Q11), + Q13 = pqueue2:in(8, 8, Q12), + Q14 = pqueue2:in(7, 7, Q13), + Q15 = pqueue2:in(6, 6, Q14), + Q16 = pqueue2:in(5, 5, Q15), + Q17 = pqueue2:in(4, 4, Q16), + Q18 = pqueue2:in(3, 3, Q17), + Q19 = pqueue2:in(2, 2, Q18), + Q20 = pqueue2:in(1, 1, Q19), + Q21 = pqueue2:in(0, 0, Q20), + Q22 = pqueue2:in(-1, -1, Q21), + Q23 = pqueue2:in(-2, -2, Q22), + Q24 = pqueue2:in(-3, -3, Q23), + Q25 = pqueue2:in(-4, -4, Q24), + Q26 = pqueue2:in(-5, -5, Q25), + Q27 = pqueue2:in(-6, -6, Q26), + Q28 = pqueue2:in(-7, -7, Q27), + Q29 = pqueue2:in(-8, -8, Q28), + Q30 = pqueue2:in(-9, -9, Q29), + Q31 = pqueue2:in(-10, -10, Q30), + Q32 = pqueue2:in(-11, -11, Q31), + Q33 = pqueue2:in(-12, -12, Q32), + Q34 = pqueue2:in(-13, -13, Q33), + Q35 = pqueue2:in(-14, -14, Q34), + Q36 = pqueue2:in(-15, -15, Q35), + Q37 = pqueue2:in(-16, -16, Q36), + Q38 = pqueue2:in(-17, -17, Q37), + Q39 = pqueue2:in(-18, -18, Q38), + Q40 = pqueue2:in(-19, -19, Q39), + Q41 = pqueue2:in(-20, -20, Q40), + Q42 = pqueue2:in(-20, -20, Q41), + Q43 = pqueue2:in(-19, -19, Q42), + Q44 = pqueue2:in(-18, -18, Q43), + Q45 = pqueue2:in(-17, -17, Q44), + Q46 = pqueue2:in(-16, -16, Q45), + Q47 = pqueue2:in(-15, -15, Q46), + Q48 = pqueue2:in(-14, -14, Q47), + Q49 = pqueue2:in(-13, -13, Q48), + Q50 = pqueue2:in(-12, -12, Q49), + Q51 = pqueue2:in(-11, -11, Q50), + Q52 = pqueue2:in(-10, -10, Q51), + Q53 = pqueue2:in(-9, -9, Q52), + Q54 = pqueue2:in(-8, -8, Q53), + Q55 = pqueue2:in(-7, -7, Q54), + Q56 = pqueue2:in(-6, -6, Q55), + Q57 = pqueue2:in(-5, -5, Q56), + Q58 = pqueue2:in(-4, -4, Q57), + Q59 = pqueue2:in(-3, -3, Q58), + Q60 = pqueue2:in(-2, -2, Q59), + Q61 = pqueue2:in(-1, -1, Q60), + Q62 = pqueue2:in(0, 0, Q61), + Q63 = pqueue2:in(1, 1, Q62), + Q64 = pqueue2:in(2, 2, Q63), + Q65 = pqueue2:in(3, 3, Q64), + Q66 = pqueue2:in(4, 4, Q65), + Q67 = pqueue2:in(5, 5, Q66), + Q68 = pqueue2:in(6, 6, Q67), + Q69 = pqueue2:in(7, 7, Q68), + Q70 = pqueue2:in(8, 8, Q69), + Q71 = pqueue2:in(9, 9, Q70), + Q72 = pqueue2:in(10, 10, Q71), + Q73 = pqueue2:in(11, 11, Q72), + Q74 = pqueue2:in(12, 12, Q73), + Q75 = pqueue2:in(13, 13, Q74), + Q76 = pqueue2:in(14, 14, Q75), + Q77 = pqueue2:in(15, 15, Q76), + Q78 = pqueue2:in(16, 16, Q77), + Q79 = pqueue2:in(17, 17, Q78), + Q80 = pqueue2:in(18, 18, Q79), + Q81 = pqueue2:in(19, 19, Q80), + Q82 = pqueue2:in(20, 20, Q81), + true = pqueue2:is_queue(Q82), + 82 = pqueue2:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue2:to_list(Q82), + {{value, -20}, Q83} = pqueue2:out(Q82), + {{value, -20}, Q84} = pqueue2:out(Q83), + {{value, -19}, Q85} = pqueue2:out(Q84), + {{value, -19}, Q86} = pqueue2:out(Q85), + {{value, -18}, Q87} = pqueue2:out(Q86), + {{value, -18}, Q88} = pqueue2:out(Q87), + {{value, 0}, Q89} = pqueue2:out(0, Q88), + {{value, 0}, Q90} = pqueue2:out(0, Q89), + {empty, _} = pqueue2:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue2:pout(Q90), + {{value, -17, -17}, Q92} = pqueue2:pout(Q91), + {{value, -16, -16}, Q93} = pqueue2:pout(Q92), + {{value, -16, -16}, Q94} = pqueue2:pout(Q93), + {{value, -15, -15}, Q95} = pqueue2:pout(Q94), + {{value, -15, -15}, Q96} = pqueue2:pout(Q95), + {{value, -14, -14}, Q97} = pqueue2:pout(Q96), + {{value, -14, -14}, Q98} = pqueue2:pout(Q97), + {{value, -13, -13}, Q99} = pqueue2:pout(Q98), + {{value, -13, -13}, Q100} = pqueue2:pout(Q99), + {{value, -12, -12}, Q101} = pqueue2:pout(Q100), + {{value, -12, -12}, Q102} = pqueue2:pout(Q101), + {{value, -11, -11}, Q103} = pqueue2:pout(Q102), + {{value, -11, -11}, Q104} = pqueue2:pout(Q103), + {{value, -10, -10}, Q105} = pqueue2:pout(Q104), + {{value, -10, -10}, Q106} = pqueue2:pout(Q105), + {{value, -9, -9}, Q107} = pqueue2:pout(Q106), + {{value, -9, -9}, Q108} = pqueue2:pout(Q107), + {{value, -8, -8}, Q109} = pqueue2:pout(Q108), + {{value, -8, -8}, Q110} = pqueue2:pout(Q109), + {{value, -7, -7}, Q111} = pqueue2:pout(Q110), + {{value, -7, -7}, Q112} = pqueue2:pout(Q111), + {{value, -6, -6}, Q113} = pqueue2:pout(Q112), + {{value, -6, -6}, Q114} = pqueue2:pout(Q113), + {{value, -5, -5}, Q115} = pqueue2:pout(Q114), + {{value, -5, -5}, Q116} = pqueue2:pout(Q115), + {{value, -4, -4}, Q117} = pqueue2:pout(Q116), + {{value, -4, -4}, Q118} = pqueue2:pout(Q117), + {{value, -3, -3}, Q119} = pqueue2:pout(Q118), + {{value, -3, -3}, Q120} = pqueue2:pout(Q119), + {{value, -2, -2}, Q121} = pqueue2:pout(Q120), + {{value, -2, -2}, Q122} = pqueue2:pout(Q121), + {{value, -1, -1}, Q123} = pqueue2:pout(Q122), + {{value, -1, -1}, Q124} = pqueue2:pout(Q123), + {{value, 1, 1}, Q125} = pqueue2:pout(Q124), + {{value, 1, 1}, Q126} = pqueue2:pout(Q125), + {{value, 2, 2}, Q127} = pqueue2:pout(Q126), + {{value, 2, 2}, Q128} = pqueue2:pout(Q127), + {{value, 3, 3}, Q129} = pqueue2:pout(Q128), + {{value, 3, 3}, Q130} = pqueue2:pout(Q129), + {{value, 4, 4}, Q131} = pqueue2:pout(Q130), + {{value, 4, 4}, Q132} = pqueue2:pout(Q131), + {{value, 5, 5}, Q133} = pqueue2:pout(Q132), + {{value, 5, 5}, Q134} = pqueue2:pout(Q133), + {{value, 6, 6}, Q135} = pqueue2:pout(Q134), + {{value, 6, 6}, Q136} = pqueue2:pout(Q135), + {{value, 7, 7}, Q137} = pqueue2:pout(Q136), + {{value, 7, 7}, Q138} = pqueue2:pout(Q137), + {{value, 8, 8}, Q139} = pqueue2:pout(Q138), + {{value, 8, 8}, Q140} = pqueue2:pout(Q139), + {{value, 9, 9}, Q141} = pqueue2:pout(Q140), + {{value, 9, 9}, Q142} = pqueue2:pout(Q141), + {{value, 10, 10}, Q143} = pqueue2:pout(Q142), + {{value, 10, 10}, Q144} = pqueue2:pout(Q143), + {{value, 11, 11}, Q145} = pqueue2:pout(Q144), + {{value, 11, 11}, Q146} = pqueue2:pout(Q145), + {{value, 12, 12}, Q147} = pqueue2:pout(Q146), + {{value, 12, 12}, Q148} = pqueue2:pout(Q147), + {{value, 13, 13}, Q149} = pqueue2:pout(Q148), + {{value, 13, 13}, Q150} = pqueue2:pout(Q149), + {{value, 14, 14}, Q151} = pqueue2:pout(Q150), + {{value, 14, 14}, Q152} = pqueue2:pout(Q151), + {{value, 15, 15}, Q153} = pqueue2:pout(Q152), + {{value, 15, 15}, Q154} = pqueue2:pout(Q153), + {{value, 16, 16}, Q155} = pqueue2:pout(Q154), + {{value, 16, 16}, Q156} = pqueue2:pout(Q155), + {{value, 17, 17}, Q157} = pqueue2:pout(Q156), + {{value, 17, 17}, Q158} = pqueue2:pout(Q157), + {{value, 18, 18}, Q159} = pqueue2:pout(Q158), + {{value, 18, 18}, Q160} = pqueue2:pout(Q159), + {{value, 19, 19}, Q161} = pqueue2:pout(Q160), + {{value, 19, 19}, Q162} = pqueue2:pout(Q161), + {{value, 20, 20}, Q163} = pqueue2:pout(Q162), + {{value, 20, 20}, Q164} = pqueue2:pout(Q163), + true = pqueue2:is_empty(Q164), + {empty, Q165} = pqueue2:pout(Q164), + true = pqueue2:is_empty(Q165), + % test case 1, based on proper testing + C1V0 = pqueue2:in(-18, pqueue2:new()), + C1V1 = pqueue2:in(9, C1V0), + C1V2 = pqueue2:in(-10, -4, C1V1), + C1V3 = pqueue2:in(-29, C1V2), + C1V4 = pqueue2:in(11, C1V3), + 5 = pqueue2:len(C1V4), + [-10, -18, 9, -29, 11] = pqueue2:to_list(C1V4), + % test case 2, based on proper testing + C2V0 = pqueue2:in(-4, -15, pqueue2:new()), + C2V1 = pqueue2:in(13, C2V0), + C2V2 = pqueue2:in(2, C2V1), + [-4, 13, 2] = to_list(C2V2), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +merge(empty, empty) -> + empty; +merge(empty, {_, _, _, _, _} = H) -> + H; +merge({_, _, _, _, _} = H, empty) -> + H; +merge({P1, HL1, HR1, T, D}, {P2, _, _, _, _} = H2) when P1 < P2 -> + {P1, HL1, merge(HR1, H2), T, D}; +merge({P1, _, _, _, _} = H1, {P2, HL2, HR2, T, D}) when P1 > P2 -> + {P2, HL2, merge(H1, HR2), T, D}; +merge({P, HL1, HR1, element, Value1}, {P, HL2, HR2, element, Value2}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, + queue:from_list([Value2, Value1])}; +merge({P, HL1, HR1, queue, Queue}, {P, HL2, HR2, element, Value}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}; +merge({P, HL1, HR1, element, Value}, {P, HL2, HR2, queue, Queue}) -> + {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}. + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq2())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + diff --git a/aoc2023/build/packages/pqueue/src/pqueue3.erl b/aoc2023/build/packages/pqueue/src/pqueue3.erl new file mode 100644 index 0000000..03b370a --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue3.erl @@ -0,0 +1,404 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==A Large Priority Queue.== +%%% This priority queue implementation depends on layered tuples, so that tuple +%%% access times can be exploited for quick in/out priority queue operations +%%% when using 64 or more total priorities. This implementation was created +%%% to avoid the slowness within the priority queue used by +%%% both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue3). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + len/1, % O(N) + new/0, % O(1) + new/1, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + to_list/1]). % O(N) + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-type pqueue3() :: {integer(), integer(), empty | integer(), tuple()}. +-type pqueue3_empty() :: {integer(), integer(), empty, tuple()}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), pqueue3()) -> pqueue3(). + +in(Value, Q) -> + in(Value, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(term(), integer(), pqueue3()) -> pqueue3(). + +in(_, P, {Size, Offset, _, _}) + when (P + Offset) < 0; (P + Offset) > Size -> + erlang:exit(badarg); +in(Value, P, {Size, Offset, empty, Bins}) -> + PriorityIndex = P + Offset, + {Size, Offset, PriorityIndex, + in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; +in(Value, P, {Size, Offset, I, Bins}) + when (P + Offset) < I -> + PriorityIndex = P + Offset, + {Size, Offset, PriorityIndex, + in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; +in(Value, P, {Size, Offset, I, Bins}) -> + {Size, Offset, I, + in_queue(layer_indexes(Size, P + Offset), Value, Bins)}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue3()) -> 'true' | 'false'. + +is_empty({_, _, empty, _}) -> + true; +is_empty({_, _, _, _} = Q) -> + case out(Q) of + {empty, _} -> + true; + {{value, _}, _} -> + false + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue3()) -> 'true' | 'false'. + +is_queue({Size, Offset, I, Bins}) + when is_integer(Size), is_integer(Offset), is_tuple(Bins) -> + (I =:= empty) or is_integer(I); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue3()) -> non_neg_integer(). + +len(Q) -> + len(0, out(Q)). +len(I, {empty, _}) -> + I; +len(I, {{value, _}, Q}) -> + len(I + 1, out(Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue3_empty(). + +new() -> + new([]). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue with customization options.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new(list({atom(), term()})) -> pqueue3(). + +new(Options) -> + Size = proplists:get_value(priorities, Options, 256), + MiddleZero = proplists:get_value(middle_priority_zero, Options, true), + Offset = if + MiddleZero =:= true -> + erlang:round((Size / 2) + 0.5) - 1; + true -> + 0 + end, + {Size, Offset, empty, create(layer_sizes(Size))}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue3()) -> + {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. + +out({_, _, empty, _} = Q) -> + {empty, Q}; +out({Size, Offset, I, Bins}) -> + {Result, NewI, NewBins} = out_check( + I, Size, out_queue(layer_indexes(Size, I), Bins) + ), + {Result, {Size, Offset, NewI, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue3()) -> + {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. + +out(P, {Size, Offset, _, _}) + when (P + Offset) < 0; (P + Offset) > Size -> + erlang:exit(badarg); +out(_, {_, _, empty, _} = Q) -> + {empty, Q}; +out(P, {Size, Offset, I, Bins}) -> + {Result, NewBins} = out_queue(layer_indexes(Size, P + Offset), Bins), + {Result, {Size, Offset, I, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue3()) -> + {{'value', term(), integer()}, pqueue3()} | {'empty', pqueue3()}. + +pout({_, _, empty, _} = Q) -> + {empty, Q}; +pout({Size, Offset, I, Bins}) -> + {Result, NewI, NewBins} = pout_check( + I, Size, Offset, out_queue(layer_indexes(Size, I), Bins) + ), + {Result, {Size, Offset, NewI, NewBins}}. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue3()) -> list(term()). + +to_list(Q) -> + to_list([], out(Q)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, Q}) -> + to_list([Value | L], out(Q)). + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +create([]) -> + queue:new(); + +create([I | Is]) -> + erlang:make_tuple(I + 1, create(Is)). + +in_queue({I1}, Value, Bins1) -> + erlang:setelement(I1, Bins1, queue:in(Value, erlang:element(I1, Bins1))); + +in_queue({I1, I2}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, queue:in(Value, erlang:element(I2, Bins2)))); + +in_queue({I1, I2, I3}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, queue:in(Value, erlang:element(I3, Bins3))))); + +in_queue({I1, I2, I3, I4}, Value, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + Bins4 = erlang:element(I3, Bins3), + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, + erlang:setelement(I4, Bins4, queue:in(Value, erlang:element(I4, Bins4)))))). + +pout_check(Size, Size, _, {empty, Bins}) -> + {empty, empty, Bins}; +pout_check(I, _, Offset, {{value, Value}, Bins}) -> + {{value, Value, I - Offset}, I, Bins}; +pout_check(I, Size, Offset, {empty, Bins}) -> + NewI = I + 1, + pout_check(NewI, Size, Offset, out_queue(layer_indexes(Size, NewI), Bins)). + +out_check(Size, Size, {empty, Bins}) -> + {empty, empty, Bins}; +out_check(I, _, {{value, _} = Result, Bins}) -> + {Result, I, Bins}; +out_check(I, Size, {empty, Bins}) -> + NewI = I + 1, + out_check(NewI, Size, out_queue(layer_indexes(Size, NewI), Bins)). + +out_queue({I1}, Bins1) -> + {Result, NewQueue} = queue:out(erlang:element(I1, Bins1)), + {Result, + erlang:setelement(I1, Bins1, NewQueue)}; + +out_queue({I1, I2}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + {Result, NewQueue} = queue:out(erlang:element(I2, Bins2)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, NewQueue))}; + +out_queue({I1, I2, I3}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + {Result, NewQueue} = queue:out(erlang:element(I3, Bins3)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, NewQueue)))}; + +out_queue({I1, I2, I3, I4}, Bins1) -> + Bins2 = erlang:element(I1, Bins1), + Bins3 = erlang:element(I2, Bins2), + Bins4 = erlang:element(I3, Bins3), + {Result, NewQueue} = queue:out(erlang:element(I4, Bins4)), + {Result, + erlang:setelement(I1, Bins1, + erlang:setelement(I2, Bins2, + erlang:setelement(I3, Bins3, + erlang:setelement(I4, Bins4, NewQueue))))}. + +layer_indexes(Size, PriorityIndex) -> + if + Size =< 127 -> + {PriorityIndex + 1}; + Size =< 255 -> + <> = <>, + {I1 + 1, I2 + 1}; + Size =< 511 -> + <> = <>, + {I1 + 1, I2 + 1}; + Size =< 1023 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 2047 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 4095 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 8191 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 16383 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1}; + Size =< 32767 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1, I4 + 1}; + Size =< 65535 -> + <> = <>, + {I1 + 1, I2 + 1, I3 + 1, I4 + 1} + end. + +layer_sizes(Size) -> + if + Size =< 127 -> + <> = <<127:7>>, + [I1]; + Size =< 255 -> + <> = <<255:8>>, + [I1, I2]; + Size =< 511 -> + <> = <<511:9>>, + [I1, I2]; + Size =< 1023 -> + <> = <<1023:10>>, + [I1, I2, I3]; + Size =< 2047 -> + <> = <<2047:11>>, + [I1, I2, I3]; + Size =< 4095 -> + <> = <<4095:12>>, + [I1, I2, I3]; + Size =< 8191 -> + <> = <<8191:13>>, + [I1, I2, I3]; + Size =< 16383 -> + <> = <<16383:14>>, + [I1, I2, I3]; + Size =< 32767 -> + <> = <<32767:15>>, + [I1, I2, I3, I4]; + Size =< 65535 -> + <> = <<65535:16>>, + [I1, I2, I3, I4] + end. + diff --git a/aoc2023/build/packages/pqueue/src/pqueue4.erl b/aoc2023/build/packages/pqueue/src/pqueue4.erl new file mode 100644 index 0000000..30b188d --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue4.erl @@ -0,0 +1,11662 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% @doc +%%% ==Static Priority Queue.== +%%% This priority queue implementation depends on a static number of priorities +%%% (-128 (high) to 128 (low)) so that tuple access times can be exploited for +%%% quick in/out priority queue operations. This implementation was created to +%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak +%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). +%%% @end +%%% +%%% MIT License +%%% +%%% Copyright (c) 2011-2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%% +%%% queue_remove_unique/2 is based on queue:filter/2 +%%% which is under the Apache License 2.0: +%%% +%%% Copyright Ericsson AB 1996-2016. All Rights Reserved. +%%% +%%% Licensed under the Apache License, Version 2.0 (the "License"); +%%% you may not use this file except in compliance with the License. +%%% You may obtain a copy of the License at +%%% +%%% http://www.apache.org/licenses/LICENSE-2.0 +%%% +%%% Unless required by applicable law or agreed to in writing, software +%%% distributed under the License is distributed on an "AS IS" BASIS, +%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%%% See the License for the specific language governing permissions and +%%% limitations under the License. +%%% +%%% @author Michael Truog +%%% @copyright 2011-2020 Michael Truog +%%% @version 2.0.1 {@date} {@time} +%%%------------------------------------------------------------------------ + +-module(pqueue4). +-author('mjtruog at protonmail dot com'). + +%% external interface +-export([filter/2, % O(N) + filter/3, % O(N) + in/2, % O(1) + in/3, % O(1) + is_empty/1, % O(1) + is_queue/1, % O(1) + len/1, % O(1) + new/0, % O(1) + out/1, % O(1) amortized, O(N) worst case + out/2, % O(1) amortized, O(N) worst case + pout/1, % O(1) amortized, O(N) worst case + remove_unique/2, % O(N) but smaller constant than filter/2 + remove_unique/3, % O(N) but smaller constant than filter/3 + to_list/1, % O(N) + to_plist/1, % O(N) + test/0]). + +%%%------------------------------------------------------------------------ +%%% External interface functions +%%%------------------------------------------------------------------------ + +-type priority() :: -128..128. +-ifdef(ERLANG_OTP_VERSION_16). +-type pqueue4(_) :: + {priority() | 'empty', % current priority + non_neg_integer(), % total size + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + queue(), + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, + {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), + queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. +-else. +-type pqueue4(T) :: + {priority() | 'empty', % current priority + non_neg_integer(), % total size + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + queue:queue(T), + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, + {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), + queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}. +-endif. +-type pqueue4() :: pqueue4(any()). +-export_type([pqueue4/0, pqueue4/1]). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Filter the priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec filter(fun((any()) -> boolean()), pqueue4()) -> pqueue4(). + +filter(F, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + Q; +filter(F, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + filter_all(Pc, F, Q). + +filter_all(_, _, {_, 0, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) -> + Q; +filter_all(128, F, Q) -> + filter_priority(128, F, Q); +filter_all(P, F, Q) when is_integer(P) -> + filter_all(P + 1, F, filter_priority(P, F, Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Filter a specific priority within the priority queue.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec filter(fun((any()) -> boolean()), integer(), pqueue4()) -> pqueue4(). + +filter(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +filter(F, P, Q) when is_function(F, 1) -> + filter_priority(P, F, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of the 0 priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(any(), pqueue4()) -> pqueue4(). + +in(X, Q) -> + in(X, 0, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Append an item to the tail of a specific priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec in(any(), integer(), pqueue4()) -> pqueue4(). + +in(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +in(X, P, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + in_higher(P, Q, X); % (in a higher priority) +in(X, P, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) + when P < Pc -> + in_higher(P, Q, X); % (in a higher priority) +in(X, P, Q) -> + in_lower(P, Q, X). % (in a lower priority) + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue is empty.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_empty(pqueue4()) -> 'true' | 'false'. + +is_empty({_, 0, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + true; +is_empty({_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Check if the priority queue type is as expected.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec is_queue(pqueue4()) -> 'true' | 'false'. + +is_queue({Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) + when is_integer(Size), + tuple_size(Qn128) == 16, tuple_size(Qn112) == 16, + tuple_size(Qn96) == 16, tuple_size(Qn80) == 16, + tuple_size(Qn64) == 16, tuple_size(Qn48) == 16, + tuple_size(Qn32) == 16, tuple_size(Qn16) == 16, + tuple_size(Qp16) == 16, tuple_size(Qp32) == 16, + tuple_size(Qp48) == 16, tuple_size(Qp64) == 16, + tuple_size(Qp80) == 16, tuple_size(Qp96) == 16, + tuple_size(Qp112) == 16, tuple_size(Qp128) == 16 -> + (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); +is_queue(_) -> + false. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Determine the length of a priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec len(pqueue4()) -> non_neg_integer(). + +len({_, Size, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> + Size. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Create a new priority queue.=== +%% O(1) +%% @end +%%------------------------------------------------------------------------- + +-spec new() -> pqueue4(). + +new() -> + {empty, % current priority + 0, % current size + erlang:make_tuple(16, queue:new()), % priority [-128..-113] + erlang:make_tuple(16, queue:new()), % priority [-112.. -97] + erlang:make_tuple(16, queue:new()), % priority [ -96.. -81] + erlang:make_tuple(16, queue:new()), % priority [ -80.. -65] + erlang:make_tuple(16, queue:new()), % priority [ -64.. -49] + erlang:make_tuple(16, queue:new()), % priority [ -48.. -33] + erlang:make_tuple(16, queue:new()), % priority [ -32.. -17] + erlang:make_tuple(16, queue:new()), % priority [ -16.. -1] + queue:new(), % priority 0 (default) + erlang:make_tuple(16, queue:new()), % priority [ 1.. 16] + erlang:make_tuple(16, queue:new()), % priority [ 17.. 32] + erlang:make_tuple(16, queue:new()), % priority [ 33.. 48] + erlang:make_tuple(16, queue:new()), % priority [ 49.. 64] + erlang:make_tuple(16, queue:new()), % priority [ 65.. 80] + erlang:make_tuple(16, queue:new()), % priority [ 81.. 96] + erlang:make_tuple(16, queue:new()), % priority [ 97.. 112] + erlang:make_tuple(16, queue:new())}. % priority [ 113.. 128] + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(pqueue4()) -> + {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. + +out({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + out_current(Pc, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item of a specific priority from the head of the queue.=== +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec out(integer(), pqueue4()) -> + {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. + +out(P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +out(_, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +out(P, Q) -> + out_specific(P, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Take an item from the head of the priority queue.=== +%% Includes the priority in the return value. +%% O(1) amortized, O(N) worst case +%% @end +%%------------------------------------------------------------------------- + +-spec pout(pqueue4()) -> + {{'value', any(), integer()}, pqueue4()} | {'empty', pqueue4()}. + +pout({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + {empty, Q}; +pout({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> + out_current_p(Pc, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Remove a unique value from the priority queue with a binary predicate.=== +%% O(N) but smaller constant than filter/2 +%% @end +%%------------------------------------------------------------------------- + +-spec remove_unique(fun((any()) -> boolean()), pqueue4()) -> + {boolean(), pqueue4()}. + +remove_unique(F, {_, 0, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + {false, Q}; +remove_unique(F, {Pc, _, _, _, _, _, _, _, _, _, + _, _, _, _, _, _, _, _, _} = Q) + when is_function(F, 1) -> + remove_unique_all(Pc, F, Q). + +remove_unique_all(128, F, Q) -> + remove_unique_p(128, F, Q); +remove_unique_all(P, F, Q) when is_integer(P) -> + case remove_unique_p(P, F, Q) of + {true, _} = Result -> + Result; + {false, Q} -> + remove_unique_all(P + 1, F, Q) + end. + +%%------------------------------------------------------------------------- +%% @doc +%% ===Remove a unique value in a specific priority within the priority queue with a binary predicate.=== +%% O(N) but smaller constant than filter/3 +%% @end +%%------------------------------------------------------------------------- + +-spec remove_unique(fun((any()) -> boolean()), integer(), pqueue4()) -> + {boolean(), pqueue4()}. + +remove_unique(_, P, _) + when P < -128; P > 128 -> + erlang:exit(badarg); +remove_unique(F, P, Q) when is_function(F, 1) -> + remove_unique_p(P, F, Q). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_list(pqueue4()) -> list(). + +to_list(Q) -> + to_list([], out(Q)). +to_list(L, {empty, _}) -> + lists:reverse(L); +to_list(L, {{value, Value}, Q}) -> + to_list([Value | L], out(Q)). + +%%------------------------------------------------------------------------- +%% @doc +%% ===Convert the priority queue to a list with priorities.=== +%% O(N) +%% @end +%%------------------------------------------------------------------------- + +-spec to_plist(pqueue4()) -> list({priority(), list()}). + +to_plist(Q) -> + to_plist([], [], undefined, pout(Q)). +to_plist(L, [], _, {empty, _}) -> + lists:reverse(L); +to_plist(L, Lp, Pc, {empty, _}) -> + lists:reverse([{Pc, lists:reverse(Lp)} | L]); +to_plist(L, Lp, Pc, {{value, Value, Pc}, Q}) -> + to_plist(L, [Value | Lp], Pc, pout(Q)); +to_plist(L, [], _, {{value, Value, Pc}, Q}) -> + to_plist(L, [Value], Pc, pout(Q)); +to_plist(L, Lp, P, {{value, Value, Pc}, Q}) -> + to_plist([{P, lists:reverse(Lp)} | L], [Value], Pc, pout(Q)). + +%%------------------------------------------------------------------------- +%% @private +%% @doc +%% ===Regression test.=== +%% @end +%%------------------------------------------------------------------------- + +test() -> + Q0 = pqueue4:new(), + true = pqueue4:is_queue(Q0), + Q1 = pqueue4:in(20, 20, Q0), + Q2 = pqueue4:in(19, 19, Q1), + Q3 = pqueue4:in(18, 18, Q2), + Q4 = pqueue4:in(17, 17, Q3), + Q5 = pqueue4:in(16, 16, Q4), + Q6 = pqueue4:in(15, 15, Q5), + Q7 = pqueue4:in(14, 14, Q6), + Q8 = pqueue4:in(13, 13, Q7), + Q9 = pqueue4:in(12, 12, Q8), + Q10 = pqueue4:in(11, 11, Q9), + Q11 = pqueue4:in(10, 10, Q10), + Q12 = pqueue4:in(9, 9, Q11), + Q13 = pqueue4:in(8, 8, Q12), + Q14 = pqueue4:in(7, 7, Q13), + Q15 = pqueue4:in(6, 6, Q14), + Q16 = pqueue4:in(5, 5, Q15), + Q17 = pqueue4:in(4, 4, Q16), + Q18 = pqueue4:in(3, 3, Q17), + Q19 = pqueue4:in(2, 2, Q18), + Q20 = pqueue4:in(1, 1, Q19), + Q21 = pqueue4:in(0, 0, Q20), + Q22 = pqueue4:in(-1, -1, Q21), + Q23 = pqueue4:in(-2, -2, Q22), + Q24 = pqueue4:in(-3, -3, Q23), + Q25 = pqueue4:in(-4, -4, Q24), + Q26 = pqueue4:in(-5, -5, Q25), + Q27 = pqueue4:in(-6, -6, Q26), + Q28 = pqueue4:in(-7, -7, Q27), + Q29 = pqueue4:in(-8, -8, Q28), + Q30 = pqueue4:in(-9, -9, Q29), + Q31 = pqueue4:in(-10, -10, Q30), + Q32 = pqueue4:in(-11, -11, Q31), + Q33 = pqueue4:in(-12, -12, Q32), + Q34 = pqueue4:in(-13, -13, Q33), + Q35 = pqueue4:in(-14, -14, Q34), + Q36 = pqueue4:in(-15, -15, Q35), + Q37 = pqueue4:in(-16, -16, Q36), + Q38 = pqueue4:in(-17, -17, Q37), + Q39 = pqueue4:in(-18, -18, Q38), + Q40 = pqueue4:in(-19, -19, Q39), + Q41 = pqueue4:in(-20, -20, Q40), + Q42 = pqueue4:in(-20, -20, Q41), + Q43 = pqueue4:in(-19, -19, Q42), + Q44 = pqueue4:in(-18, -18, Q43), + Q45 = pqueue4:in(-17, -17, Q44), + Q46 = pqueue4:in(-16, -16, Q45), + Q47 = pqueue4:in(-15, -15, Q46), + Q48 = pqueue4:in(-14, -14, Q47), + Q49 = pqueue4:in(-13, -13, Q48), + Q50 = pqueue4:in(-12, -12, Q49), + Q51 = pqueue4:in(-11, -11, Q50), + Q52 = pqueue4:in(-10, -10, Q51), + Q53 = pqueue4:in(-9, -9, Q52), + Q54 = pqueue4:in(-8, -8, Q53), + Q55 = pqueue4:in(-7, -7, Q54), + Q56 = pqueue4:in(-6, -6, Q55), + Q57 = pqueue4:in(-5, -5, Q56), + Q58 = pqueue4:in(-4, -4, Q57), + Q59 = pqueue4:in(-3, -3, Q58), + Q60 = pqueue4:in(-2, -2, Q59), + Q61 = pqueue4:in(-1, -1, Q60), + Q62 = pqueue4:in(0, 0, Q61), + Q63 = pqueue4:in(1, 1, Q62), + Q64 = pqueue4:in(2, 2, Q63), + Q65 = pqueue4:in(3, 3, Q64), + Q66 = pqueue4:in(4, 4, Q65), + Q67 = pqueue4:in(5, 5, Q66), + Q68 = pqueue4:in(6, 6, Q67), + Q69 = pqueue4:in(7, 7, Q68), + Q70 = pqueue4:in(8, 8, Q69), + Q71 = pqueue4:in(9, 9, Q70), + Q72 = pqueue4:in(10, 10, Q71), + Q73 = pqueue4:in(11, 11, Q72), + Q74 = pqueue4:in(12, 12, Q73), + Q75 = pqueue4:in(13, 13, Q74), + Q76 = pqueue4:in(14, 14, Q75), + Q77 = pqueue4:in(15, 15, Q76), + Q78 = pqueue4:in(16, 16, Q77), + Q79 = pqueue4:in(17, 17, Q78), + Q80 = pqueue4:in(18, 18, Q79), + Q81 = pqueue4:in(19, 19, Q80), + Q82 = pqueue4:in(20, 20, Q81), + true = pqueue4:is_queue(Q82), + 82 = pqueue4:len(Q82), + [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, + -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, + -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, + 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, + 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue4:to_list(Q82), + [{-20, [-20, -20]}, {-19, [-19, -19]}, {-18, [-18, -18]}, + {-17, [-17, -17]}, {-16, [-16, -16]}, {-15, [-15, -15]}, + {-14, [-14, -14]}, {-13, [-13, -13]}, {-12, [-12, -12]}, + {-11, [-11, -11]}, {-10, [-10, -10]}, {-9, [-9, -9]}, + {-8, [-8, -8]}, {-7, [-7, -7]}, {-6, [-6, -6]}, + {-5, [-5, -5]}, {-4, [-4, -4]}, {-3, [-3, -3]}, + {-2, [-2, -2]}, {-1, [-1, -1]}, {0, [0, 0]}, + {1, [1, 1]}, {2, [2, 2]}, {3, [3, 3]}, + {4, [4, 4]}, {5, [5, 5]}, {6, [6, 6]}, + {7, [7, 7]}, {8, [8, 8]}, {9, [9, 9]}, + {10, [10, 10]}, {11, [11, 11]}, {12, [12, 12]}, + {13, [13, 13]}, {14, [14, 14]}, {15, [15, 15]}, + {16, [16, 16]}, {17, [17, 17]}, {18, [18, 18]}, + {19, [19, 19]}, {20, [20, 20]}] = pqueue4:to_plist(Q82), + {{value, -20}, Q83} = pqueue4:out(Q82), + {{value, -20}, Q84} = pqueue4:out(Q83), + {{value, -19}, Q85} = pqueue4:out(Q84), + {{value, -19}, Q86} = pqueue4:out(Q85), + {{value, -18}, Q87} = pqueue4:out(Q86), + {{value, -18}, Q88} = pqueue4:out(Q87), + {{value, 0}, Q89} = pqueue4:out(0, Q88), + {{value, 0}, Q90} = pqueue4:out(0, Q89), + {empty, _} = pqueue4:out(0, Q90), + {{value, -17, -17}, Q91} = pqueue4:pout(Q90), + {{value, -17, -17}, Q92} = pqueue4:pout(Q91), + {{value, -16, -16}, Q93} = pqueue4:pout(Q92), + {{value, -16, -16}, Q94} = pqueue4:pout(Q93), + {{value, -15, -15}, Q95} = pqueue4:pout(Q94), + {{value, -15, -15}, Q96} = pqueue4:pout(Q95), + {{value, -14, -14}, Q97} = pqueue4:pout(Q96), + {{value, -14, -14}, Q98} = pqueue4:pout(Q97), + {{value, -13, -13}, Q99} = pqueue4:pout(Q98), + {{value, -13, -13}, Q100} = pqueue4:pout(Q99), + {{value, -12, -12}, Q101} = pqueue4:pout(Q100), + {{value, -12, -12}, Q102} = pqueue4:pout(Q101), + {{value, -11, -11}, Q103} = pqueue4:pout(Q102), + {{value, -11, -11}, Q104} = pqueue4:pout(Q103), + {{value, -10, -10}, Q105} = pqueue4:pout(Q104), + {{value, -10, -10}, Q106} = pqueue4:pout(Q105), + {{value, -9, -9}, Q107} = pqueue4:pout(Q106), + {{value, -9, -9}, Q108} = pqueue4:pout(Q107), + {{value, -8, -8}, Q109} = pqueue4:pout(Q108), + {{value, -8, -8}, Q110} = pqueue4:pout(Q109), + {{value, -7, -7}, Q111} = pqueue4:pout(Q110), + {{value, -7, -7}, Q112} = pqueue4:pout(Q111), + {{value, -6, -6}, Q113} = pqueue4:pout(Q112), + {{value, -6, -6}, Q114} = pqueue4:pout(Q113), + {{value, -5, -5}, Q115} = pqueue4:pout(Q114), + {{value, -5, -5}, Q116} = pqueue4:pout(Q115), + {{value, -4, -4}, Q117} = pqueue4:pout(Q116), + {{value, -4, -4}, Q118} = pqueue4:pout(Q117), + {{value, -3, -3}, Q119} = pqueue4:pout(Q118), + {{value, -3, -3}, Q120} = pqueue4:pout(Q119), + {{value, -2, -2}, Q121} = pqueue4:pout(Q120), + {{value, -2, -2}, Q122} = pqueue4:pout(Q121), + {{value, -1, -1}, Q123} = pqueue4:pout(Q122), + {{value, -1, -1}, Q124} = pqueue4:pout(Q123), + {{value, 1, 1}, Q125} = pqueue4:pout(Q124), + {{value, 1, 1}, Q126} = pqueue4:pout(Q125), + {{value, 2, 2}, Q127} = pqueue4:pout(Q126), + {{value, 2, 2}, Q128} = pqueue4:pout(Q127), + {{value, 3, 3}, Q129} = pqueue4:pout(Q128), + {{value, 3, 3}, Q130} = pqueue4:pout(Q129), + {{value, 4, 4}, Q131} = pqueue4:pout(Q130), + {{value, 4, 4}, Q132} = pqueue4:pout(Q131), + {{value, 5, 5}, Q133} = pqueue4:pout(Q132), + {{value, 5, 5}, Q134} = pqueue4:pout(Q133), + {{value, 6, 6}, Q135} = pqueue4:pout(Q134), + {{value, 6, 6}, Q136} = pqueue4:pout(Q135), + {{value, 7, 7}, Q137} = pqueue4:pout(Q136), + {{value, 7, 7}, Q138} = pqueue4:pout(Q137), + {{value, 8, 8}, Q139} = pqueue4:pout(Q138), + {{value, 8, 8}, Q140} = pqueue4:pout(Q139), + {{value, 9, 9}, Q141} = pqueue4:pout(Q140), + {{value, 9, 9}, Q142} = pqueue4:pout(Q141), + {{value, 10, 10}, Q143} = pqueue4:pout(Q142), + {{value, 10, 10}, Q144} = pqueue4:pout(Q143), + {{value, 11, 11}, Q145} = pqueue4:pout(Q144), + {{value, 11, 11}, Q146} = pqueue4:pout(Q145), + {{value, 12, 12}, Q147} = pqueue4:pout(Q146), + {{value, 12, 12}, Q148} = pqueue4:pout(Q147), + {{value, 13, 13}, Q149} = pqueue4:pout(Q148), + {{value, 13, 13}, Q150} = pqueue4:pout(Q149), + {{value, 14, 14}, Q151} = pqueue4:pout(Q150), + {{value, 14, 14}, Q152} = pqueue4:pout(Q151), + {{value, 15, 15}, Q153} = pqueue4:pout(Q152), + {{value, 15, 15}, Q154} = pqueue4:pout(Q153), + {{value, 16, 16}, Q155} = pqueue4:pout(Q154), + {{value, 16, 16}, Q156} = pqueue4:pout(Q155), + {{value, 17, 17}, Q157} = pqueue4:pout(Q156), + {{value, 17, 17}, Q158} = pqueue4:pout(Q157), + {{value, 18, 18}, Q159} = pqueue4:pout(Q158), + {{value, 18, 18}, Q160} = pqueue4:pout(Q159), + {{value, 19, 19}, Q161} = pqueue4:pout(Q160), + {{value, 19, 19}, Q162} = pqueue4:pout(Q161), + {{value, 20, 20}, Q163} = pqueue4:pout(Q162), + {{value, 20, 20}, Q164} = pqueue4:pout(Q163), + {{value, 20}, Q164} = pqueue4:out(Q163), + {{value, 20}, Q164} = pqueue4:out(20, Q163), + true = pqueue4:is_empty(Q164), + empty = erlang:element(1, Q164), % current priority + 0 = erlang:element(2, Q164), % size + {empty, Q164} = pqueue4:pout(Q164), + {empty, Q164} = pqueue4:out(Q164), + {empty, Q164} = pqueue4:out(20, Q164), + + Queue0 = queue:new(), + "{[],[]}" = lists:flatten(io_lib:format("~p", [Queue0])), + Queue1 = queue:in(1, Queue0), + Queue2 = queue:in(2, Queue1), + Queue3 = queue:in(3, Queue2), + {{value, 1}, _} = queue:out(Queue2), + "{[3,2],[1]}" = lists:flatten(io_lib:format("~p", [Queue3])), + {true, {[3],[1]}} = queue_remove_unique(fun(I) -> I == 2 end, {[3,2],[1]}), + Queue4 = queue:filter(fun(I) -> not (I == 2) end, Queue3), + "{[3],[1]}" = lists:flatten(io_lib:format("~p", [Queue4])), + 2 = queue:len(Queue4), + {{value, 1}, _} = queue:out(Queue4), + [1, 3] = queue:to_list(Queue4), + + Q166 = pqueue4:new(), + true = pqueue4:is_queue(Q166), + Q167 = pqueue4:in(6, 1, Q166), + Q168 = pqueue4:in(7, 1, Q167), + Q169 = pqueue4:in(8, 1, Q168), + Q170 = pqueue4:in(3, 0, Q169), + Q171 = pqueue4:in(4, 0, Q170), + Q172 = pqueue4:in(5, 0, Q171), + Q173 = pqueue4:in(0, -1, Q172), + Q174 = pqueue4:in(1, -1, Q173), + Q175 = pqueue4:in(2, -1, Q174), + [{-1, [0, 1, 2]}, {0, [3, 4, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q175), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> I > 5 end, Q175)), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> I < 3 end, Q175)), + 3 = pqueue4:len(pqueue4:filter(fun(I) -> (I < 1) orelse (I > 6) end, Q175)), + {true, Q176} = pqueue4:remove_unique(fun(I) -> I == 4 end, Q175), + [{-1, [0, 1, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q176), + {true, Q177} = pqueue4:remove_unique(fun(I) -> I == 1 end, Q176), + [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q177), + {true, Q178} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q177), + [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 8]}] = pqueue4:to_plist(Q178), + 6 = pqueue4:len(Q178), + {{value, 0, -1}, Q179} = pqueue4:pout(Q178), + {{value, 2}, Q180} = pqueue4:out(Q179), + {{value, 6}, Q181} = pqueue4:out(1, Q180), + {false, Q181} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q181), + [{0, [3, 5]}, {1, [8]}] = pqueue4:to_plist(Q181), + {true, Q182} = pqueue4:remove_unique(fun(I) -> I == 5 end, Q181), + {true, Q183} = pqueue4:remove_unique(fun(I) -> I == 8 end, 1, Q182), + {true, Q184} = pqueue4:remove_unique(fun(I) -> I == 3 end, Q183), + {empty, Q184} = pqueue4:pout(Q184), + {empty, Q184} = pqueue4:out(Q184), + {empty, Q184} = pqueue4:out(0, Q184), + ok. + +%%%------------------------------------------------------------------------ +%%% Private functions +%%%------------------------------------------------------------------------ + +%% @hidden +-define(FILTER_P_Qn128(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn112(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn96(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn80(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn64(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn48(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn32(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qn16(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp16(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp32(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp48(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp64(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp80(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}). +-define(FILTER_P_Qp96(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}). +-define(FILTER_P_Qp112(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}). +-define(FILTER_P_Qp128(P, V1, V2, V3), +filter_priority(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + V2 = queue:filter(F, V1), + NewSize = Size - (queue:len(V1) - queue:len(V2)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}). + +?FILTER_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?FILTER_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?FILTER_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?FILTER_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?FILTER_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?FILTER_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?FILTER_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?FILTER_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?FILTER_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?FILTER_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?FILTER_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?FILTER_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?FILTER_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?FILTER_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?FILTER_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?FILTER_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?FILTER_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?FILTER_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?FILTER_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?FILTER_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?FILTER_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?FILTER_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?FILTER_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?FILTER_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?FILTER_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?FILTER_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?FILTER_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?FILTER_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?FILTER_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?FILTER_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?FILTER_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?FILTER_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +filter_priority(0, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + NewQ0 = queue:filter(F, Q0), + NewSize = Size - (queue:len(Q0) - queue:len(NewQ0)), + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?FILTER_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?FILTER_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?FILTER_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?FILTER_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?FILTER_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?FILTER_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?FILTER_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?FILTER_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?FILTER_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?FILTER_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?FILTER_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?FILTER_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?FILTER_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?FILTER_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?FILTER_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?FILTER_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?FILTER_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?FILTER_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?FILTER_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?FILTER_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?FILTER_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?FILTER_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?FILTER_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?FILTER_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?FILTER_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?FILTER_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?FILTER_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?FILTER_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?FILTER_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?FILTER_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?FILTER_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?FILTER_P_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +%% @hidden +-define(IN_HIGHER_Qn128(P, V), +in_higher(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + V, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn112(P, V), +in_higher(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, + V, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn96(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, + V, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn80(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, + V, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn64(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, + V, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn48(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, + V, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn32(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qn16(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp16(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp32(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp48(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp64(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V, + Qp80, Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp80(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V, + Qp96, Qp112, Qp128}). +-define(IN_HIGHER_Qp96(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V, + Qp112, Qp128}). +-define(IN_HIGHER_Qp112(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V, + Qp128}). +-define(IN_HIGHER_Qp128(P, V), +in_higher(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> + {P, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V}). + +?IN_HIGHER_Qn128(-128, + {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-127, + {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-126, + {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-125, + {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-124, + {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); +?IN_HIGHER_Qn128(-115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); +?IN_HIGHER_Qn128(-114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); +?IN_HIGHER_Qn128(-113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); +?IN_HIGHER_Qn112(-112, + {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-111, + {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-110, + {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-109, + {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-108, + {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); +?IN_HIGHER_Qn112(-99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); +?IN_HIGHER_Qn112(-98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); +?IN_HIGHER_Qn112(-97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); +?IN_HIGHER_Qn96(-96, + {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-95, + {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-94, + {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-93, + {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-92, + {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); +?IN_HIGHER_Qn96(-83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); +?IN_HIGHER_Qn96(-82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); +?IN_HIGHER_Qn96(-81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); +?IN_HIGHER_Qn80(-80, + {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-79, + {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-78, + {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-77, + {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-76, + {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); +?IN_HIGHER_Qn80(-67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); +?IN_HIGHER_Qn80(-66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); +?IN_HIGHER_Qn80(-65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); +?IN_HIGHER_Qn64(-64, + {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-63, + {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-62, + {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-61, + {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-60, + {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); +?IN_HIGHER_Qn64(-51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); +?IN_HIGHER_Qn64(-50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); +?IN_HIGHER_Qn64(-49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); +?IN_HIGHER_Qn48(-48, + {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-47, + {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-46, + {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-45, + {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-44, + {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); +?IN_HIGHER_Qn48(-35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); +?IN_HIGHER_Qn48(-34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); +?IN_HIGHER_Qn48(-33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); +?IN_HIGHER_Qn32(-32, + {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-31, + {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-30, + {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-29, + {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-28, + {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); +?IN_HIGHER_Qn32(-19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); +?IN_HIGHER_Qn32(-18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); +?IN_HIGHER_Qn32(-17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); +?IN_HIGHER_Qn16(-16, + {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-15, + {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-14, + {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-13, + {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-12, + {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); +?IN_HIGHER_Qn16(-3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); +?IN_HIGHER_Qn16(-2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); +?IN_HIGHER_Qn16(-1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); +in_higher(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {0, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + queue:in(X, Q0), + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?IN_HIGHER_Qp16(1, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(2, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(3, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(4, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(5, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); +?IN_HIGHER_Qp16(14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); +?IN_HIGHER_Qp16(15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); +?IN_HIGHER_Qp16(16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); +?IN_HIGHER_Qp32(17, + {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(18, + {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(19, + {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(20, + {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(21, + {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); +?IN_HIGHER_Qp32(30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); +?IN_HIGHER_Qp32(31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); +?IN_HIGHER_Qp32(32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); +?IN_HIGHER_Qp48(33, + {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(34, + {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(35, + {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(36, + {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(37, + {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); +?IN_HIGHER_Qp48(46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); +?IN_HIGHER_Qp48(47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); +?IN_HIGHER_Qp48(48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); +?IN_HIGHER_Qp64(49, + {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(50, + {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(51, + {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(52, + {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(53, + {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); +?IN_HIGHER_Qp64(62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); +?IN_HIGHER_Qp64(63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); +?IN_HIGHER_Qp64(64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); +?IN_HIGHER_Qp80(65, + {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(66, + {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(67, + {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(68, + {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(69, + {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); +?IN_HIGHER_Qp80(78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); +?IN_HIGHER_Qp80(79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); +?IN_HIGHER_Qp80(80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); +?IN_HIGHER_Qp96(81, + {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(82, + {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(83, + {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(84, + {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(85, + {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); +?IN_HIGHER_Qp96(94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); +?IN_HIGHER_Qp96(95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); +?IN_HIGHER_Qp96(96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); +?IN_HIGHER_Qp112(97, + {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(98, + {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(99, + {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(100, + {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(101, + {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); +?IN_HIGHER_Qp112(110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); +?IN_HIGHER_Qp112(111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); +?IN_HIGHER_Qp112(112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); +?IN_HIGHER_Qp128(113, + {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(114, + {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(115, + {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(116, + {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(117, + {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); +?IN_HIGHER_Qp128(126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); +?IN_HIGHER_Qp128(127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); +?IN_HIGHER_Qp128(128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). + +%% @hidden +-define(IN_LOWER_Qn128(P, V), +in_lower(P, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + V, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn112(P, V), +in_lower(P, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, + V, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn96(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, + V, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn80(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, + V, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn64(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, + V, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn48(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, + V, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn32(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qn16(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp16(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp32(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp48(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V, + Qp64, Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp64(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V, + Qp80, Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp80(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V, + Qp96, Qp112, Qp128}). +-define(IN_LOWER_Qp96(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V, + Qp112, Qp128}). +-define(IN_LOWER_Qp112(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V, + Qp128}). +-define(IN_LOWER_Qp128(P, V), +in_lower(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V}). + +?IN_LOWER_Qn128(-128, + {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-127, + {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-126, + {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-125, + {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-124, + {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), + Qn117, Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); +?IN_LOWER_Qn128(-115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); +?IN_LOWER_Qn128(-114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); +?IN_LOWER_Qn128(-113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); +?IN_LOWER_Qn112(-112, + {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-111, + {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-110, + {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-109, + {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-108, + {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), + Qn101, Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); +?IN_LOWER_Qn112(-99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); +?IN_LOWER_Qn112(-98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); +?IN_LOWER_Qn112(-97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); +?IN_LOWER_Qn96(-96, + {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-95, + {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-94, + {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-93, + {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-92, + {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), + Qn85, Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); +?IN_LOWER_Qn96(-83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); +?IN_LOWER_Qn96(-82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); +?IN_LOWER_Qn96(-81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); +?IN_LOWER_Qn80(-80, + {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-79, + {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-78, + {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-77, + {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-76, + {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), + Qn69, Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); +?IN_LOWER_Qn80(-67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); +?IN_LOWER_Qn80(-66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); +?IN_LOWER_Qn80(-65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); +?IN_LOWER_Qn64(-64, + {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-63, + {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-62, + {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-61, + {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-60, + {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), + Qn53, Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); +?IN_LOWER_Qn64(-51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); +?IN_LOWER_Qn64(-50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); +?IN_LOWER_Qn64(-49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); +?IN_LOWER_Qn48(-48, + {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-47, + {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-46, + {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-45, + {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-44, + {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), + Qn37, Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); +?IN_LOWER_Qn48(-35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); +?IN_LOWER_Qn48(-34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); +?IN_LOWER_Qn48(-33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); +?IN_LOWER_Qn32(-32, + {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-31, + {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-30, + {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-29, + {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-28, + {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), + Qn21, Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); +?IN_LOWER_Qn32(-19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); +?IN_LOWER_Qn32(-18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); +?IN_LOWER_Qn32(-17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); +?IN_LOWER_Qn16(-16, + {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-15, + {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-14, + {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-13, + {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-12, + {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), + Qn5, Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); +?IN_LOWER_Qn16(-3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); +?IN_LOWER_Qn16(-2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); +?IN_LOWER_Qn16(-1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); +in_lower(0, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> + {Pc, + Size + 1, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + queue:in(X, Q0), + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; +?IN_LOWER_Qp16(1, + {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(2, + {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(3, + {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(4, + {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(5, + {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), + Qp12, Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); +?IN_LOWER_Qp16(14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); +?IN_LOWER_Qp16(15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); +?IN_LOWER_Qp16(16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); +?IN_LOWER_Qp32(17, + {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(18, + {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(19, + {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(20, + {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(21, + {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), + Qp28, Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); +?IN_LOWER_Qp32(30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); +?IN_LOWER_Qp32(31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); +?IN_LOWER_Qp32(32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); +?IN_LOWER_Qp48(33, + {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(34, + {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(35, + {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(36, + {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(37, + {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), + Qp44, Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); +?IN_LOWER_Qp48(46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); +?IN_LOWER_Qp48(47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); +?IN_LOWER_Qp48(48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); +?IN_LOWER_Qp64(49, + {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(50, + {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(51, + {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(52, + {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(53, + {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), + Qp60, Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); +?IN_LOWER_Qp64(62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); +?IN_LOWER_Qp64(63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); +?IN_LOWER_Qp64(64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); +?IN_LOWER_Qp80(65, + {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(66, + {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(67, + {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(68, + {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(69, + {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), + Qp76, Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); +?IN_LOWER_Qp80(78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); +?IN_LOWER_Qp80(79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); +?IN_LOWER_Qp80(80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); +?IN_LOWER_Qp96(81, + {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(82, + {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(83, + {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(84, + {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(85, + {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), + Qp92, Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); +?IN_LOWER_Qp96(94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); +?IN_LOWER_Qp96(95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); +?IN_LOWER_Qp96(96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); +?IN_LOWER_Qp112(97, + {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(98, + {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(99, + {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(100, + {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(101, + {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), + Qp108, Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); +?IN_LOWER_Qp112(110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); +?IN_LOWER_Qp112(111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); +?IN_LOWER_Qp112(112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); +?IN_LOWER_Qp128(113, + {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(114, + {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(115, + {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(116, + {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(117, + {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), + Qp124, Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); +?IN_LOWER_Qp128(126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); +?IN_LOWER_Qp128(127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); +?IN_LOWER_Qp128(128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). + +%% @hidden +-define(OUT_CURRENT_Qn128(P, V1, V2, V3), +out_current(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn112(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn96(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn80(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn64(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn48(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn32(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qn16(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp16(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp32(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp48(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp64(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp80(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp96(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}} + end). +-define(OUT_CURRENT_Qp112(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}} + end). +-define(OUT_CURRENT_Qp128(P, V1, V2, V3), +out_current(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> + {Value, V2} = queue:out(V1), + if + Value =:= empty -> + out_current(P + 1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}} + end). + +?OUT_CURRENT_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_CURRENT_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_CURRENT_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_CURRENT_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_CURRENT_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_CURRENT_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_CURRENT_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_CURRENT_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_CURRENT_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_CURRENT_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_CURRENT_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_CURRENT_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_CURRENT_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_CURRENT_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_CURRENT_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_CURRENT_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_CURRENT_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_CURRENT_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_CURRENT_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_CURRENT_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_CURRENT_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_CURRENT_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_CURRENT_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_CURRENT_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_current(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + {Value, NewQ0} = queue:out(Q0), + if + Value =:= empty -> + out_current(1, Q); + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> 0 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end; +?OUT_CURRENT_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_CURRENT_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_CURRENT_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_CURRENT_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_CURRENT_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_CURRENT_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_CURRENT_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_CURRENT_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_CURRENT_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_CURRENT_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_CURRENT_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_CURRENT_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_CURRENT_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_CURRENT_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_CURRENT_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_CURRENT_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_CURRENT_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_CURRENT_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_CURRENT_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_CURRENT_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_CURRENT_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_CURRENT_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_CURRENT_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +out_current(128, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, NewQp128} = queue:out(Qp128), + if + Value =:= empty -> + {empty, + {empty, + 0, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}}; + true -> + NewSize = Size - 1, + {Value, + {if NewSize == 0 -> empty; true -> 128 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} + end. + +%% @hidden +-define(OUT_CURRENT_P_Qn128(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn112(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn96(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn80(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn64(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn48(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn32(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qn16(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp16(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp32(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp48(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp64(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp80(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp96(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}} + end). +-define(OUT_CURRENT_P_Qp112(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}} + end). +-define(OUT_CURRENT_P_Qp128(P, V1, V2, V3), +out_current_p(P, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> + case queue:out(V1) of + {empty, _} -> + out_current_p(P + 1, Q); + {{value, X}, V2} -> + NewSize = Size - 1, + {{value, X, P}, + {if NewSize == 0 -> empty; true -> P end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}} + end). + +?OUT_CURRENT_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_CURRENT_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_CURRENT_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_CURRENT_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_CURRENT_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_CURRENT_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_CURRENT_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_CURRENT_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_CURRENT_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_CURRENT_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_CURRENT_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_CURRENT_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_CURRENT_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_CURRENT_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_CURRENT_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_CURRENT_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_CURRENT_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_CURRENT_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_CURRENT_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_CURRENT_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_CURRENT_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_CURRENT_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_CURRENT_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_CURRENT_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_current_p(0, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> + case queue:out(Q0) of + {empty, _} -> + out_current_p(1, Q); + {{value, X}, NewQ0} -> + NewSize = Size - 1, + {{value, X, 0}, + {if NewSize == 0 -> empty; true -> 0 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} + end; +?OUT_CURRENT_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_CURRENT_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_CURRENT_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_CURRENT_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_CURRENT_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_CURRENT_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_CURRENT_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_CURRENT_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_CURRENT_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_CURRENT_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_CURRENT_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_CURRENT_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_CURRENT_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_CURRENT_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_CURRENT_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_CURRENT_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_CURRENT_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_CURRENT_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_CURRENT_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_CURRENT_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_CURRENT_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_CURRENT_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_CURRENT_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +out_current_p(128, + {_, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + case queue:out(Qp128) of + {empty, _} -> + {empty, + {empty, + 0, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}}; + {{value, X}, NewQp128} -> + NewSize = Size - 1, + {{value, X, 128}, + {if NewSize == 0 -> empty; true -> 128 end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} + end. + +%% @hidden +-define(OUT_SPECIFIC_Qn128(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn112(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn96(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn80(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn64(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn48(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn32(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qn16(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp16(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp32(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp48(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp64(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp80(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp96(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}}). +-define(OUT_SPECIFIC_Qp112(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}}). +-define(OUT_SPECIFIC_Qp128(P, V1, V2, V3), +out_specific(P, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, V2} = queue:out(V1), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}}). + +?OUT_SPECIFIC_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?OUT_SPECIFIC_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?OUT_SPECIFIC_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?OUT_SPECIFIC_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?OUT_SPECIFIC_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?OUT_SPECIFIC_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?OUT_SPECIFIC_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?OUT_SPECIFIC_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?OUT_SPECIFIC_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?OUT_SPECIFIC_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?OUT_SPECIFIC_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?OUT_SPECIFIC_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?OUT_SPECIFIC_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?OUT_SPECIFIC_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?OUT_SPECIFIC_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?OUT_SPECIFIC_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?OUT_SPECIFIC_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?OUT_SPECIFIC_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?OUT_SPECIFIC_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?OUT_SPECIFIC_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?OUT_SPECIFIC_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?OUT_SPECIFIC_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?OUT_SPECIFIC_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?OUT_SPECIFIC_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +out_specific(0, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, NewQ0} = queue:out(Q0), + NewSize = if Value =/= empty -> Size - 1; true -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; +?OUT_SPECIFIC_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?OUT_SPECIFIC_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?OUT_SPECIFIC_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?OUT_SPECIFIC_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?OUT_SPECIFIC_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?OUT_SPECIFIC_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?OUT_SPECIFIC_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?OUT_SPECIFIC_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?OUT_SPECIFIC_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?OUT_SPECIFIC_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?OUT_SPECIFIC_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?OUT_SPECIFIC_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?OUT_SPECIFIC_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?OUT_SPECIFIC_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?OUT_SPECIFIC_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?OUT_SPECIFIC_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?OUT_SPECIFIC_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?OUT_SPECIFIC_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?OUT_SPECIFIC_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?OUT_SPECIFIC_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?OUT_SPECIFIC_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?OUT_SPECIFIC_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?OUT_SPECIFIC_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?OUT_SPECIFIC_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +%% @hidden +-define(REMOVE_UNIQ_P_Qn128(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, + Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + V3, + Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn112(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, + {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, + Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, + V3, + Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn96(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, + {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, + Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, + V3, + Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn80(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, + {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, + Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, + V3, + Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn64(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, + {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, + Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, + V3, + Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn48(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, + {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, + Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, + V3, + Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn32(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, + Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, + V3, + Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qn16(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, + Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, + V3, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp16(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, + Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + V3, + Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp32(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, + Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, + V3, + Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp48(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, + Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, + Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, + V3, + Qp64, Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp64(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, + Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, + Qp80, Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, + V3, + Qp80, Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp80(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, + Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, + Qp96, Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, + V3, + Qp96, Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp96(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, + Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, + Qp112, Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, + V3, + Qp112, Qp128}}). +-define(REMOVE_UNIQ_P_Qp112(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, + Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, + Qp128}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, + V3, + Qp128}}). +-define(REMOVE_UNIQ_P_Qp128(P, V1, V2, V3), +remove_unique_p(P, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, + Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> + {Value, V2} = queue_remove_unique(F, V1), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, + V3}}). + +?REMOVE_UNIQ_P_Qn128(-128, + Qn128, NewQn128, + {NewQn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-127, + Qn127, NewQn127, + {Qn128, NewQn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-126, + Qn126, NewQn126, + {Qn128, Qn127, NewQn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-125, + Qn125, NewQn125, + {Qn128, Qn127, Qn126, NewQn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-124, + Qn124, NewQn124, + {Qn128, Qn127, Qn126, Qn125, NewQn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-123, + Qn123, NewQn123, + {Qn128, Qn127, Qn126, Qn125, Qn124, + NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-122, + Qn122, NewQn122, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-121, + Qn121, NewQn121, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-120, + Qn120, NewQn120, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-119, + Qn119, NewQn119, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-118, + Qn118, NewQn118, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, + Qn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-117, + Qn117, NewQn117, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + NewQn117, Qn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-116, + Qn116, NewQn116, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, NewQn116, Qn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-115, + Qn115, NewQn115, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, NewQn115, Qn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-114, + Qn114, NewQn114, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, NewQn114, Qn113}); +?REMOVE_UNIQ_P_Qn128(-113, + Qn113, NewQn113, + {Qn128, Qn127, Qn126, Qn125, Qn124, + Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, + Qn117, Qn116, Qn115, Qn114, NewQn113}); +?REMOVE_UNIQ_P_Qn112(-112, + Qn112, NewQn112, + {NewQn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-111, + Qn111, NewQn111, + {Qn112, NewQn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-110, + Qn110, NewQn110, + {Qn112, Qn111, NewQn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-109, + Qn109, NewQn109, + {Qn112, Qn111, Qn110, NewQn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-108, + Qn108, NewQn108, + {Qn112, Qn111, Qn110, Qn109, NewQn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-107, + Qn107, NewQn107, + {Qn112, Qn111, Qn110, Qn109, Qn108, + NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-106, + Qn106, NewQn106, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-105, + Qn105, NewQn105, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-104, + Qn104, NewQn104, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-103, + Qn103, NewQn103, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-102, + Qn102, NewQn102, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, + Qn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-101, + Qn101, NewQn101, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + NewQn101, Qn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-100, + Qn100, NewQn100, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, NewQn100, Qn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-99, + Qn99, NewQn99, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, NewQn99, Qn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-98, + Qn98, NewQn98, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, NewQn98, Qn97}); +?REMOVE_UNIQ_P_Qn112(-97, + Qn97, NewQn97, + {Qn112, Qn111, Qn110, Qn109, Qn108, + Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, + Qn101, Qn100, Qn99, Qn98, NewQn97}); +?REMOVE_UNIQ_P_Qn96(-96, + Qn96, NewQn96, + {NewQn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-95, + Qn95, NewQn95, + {Qn96, NewQn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-94, + Qn94, NewQn94, + {Qn96, Qn95, NewQn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-93, + Qn93, NewQn93, + {Qn96, Qn95, Qn94, NewQn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-92, + Qn92, NewQn92, + {Qn96, Qn95, Qn94, Qn93, NewQn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-91, + Qn91, NewQn91, + {Qn96, Qn95, Qn94, Qn93, Qn92, + NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-90, + Qn90, NewQn90, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-89, + Qn89, NewQn89, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-88, + Qn88, NewQn88, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-87, + Qn87, NewQn87, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-86, + Qn86, NewQn86, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, + Qn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-85, + Qn85, NewQn85, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + NewQn85, Qn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-84, + Qn84, NewQn84, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, NewQn84, Qn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-83, + Qn83, NewQn83, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, NewQn83, Qn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-82, + Qn82, NewQn82, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, NewQn82, Qn81}); +?REMOVE_UNIQ_P_Qn96(-81, + Qn81, NewQn81, + {Qn96, Qn95, Qn94, Qn93, Qn92, + Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, + Qn85, Qn84, Qn83, Qn82, NewQn81}); +?REMOVE_UNIQ_P_Qn80(-80, + Qn80, NewQn80, + {NewQn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-79, + Qn79, NewQn79, + {Qn80, NewQn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-78, + Qn78, NewQn78, + {Qn80, Qn79, NewQn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-77, + Qn77, NewQn77, + {Qn80, Qn79, Qn78, NewQn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-76, + Qn76, NewQn76, + {Qn80, Qn79, Qn78, Qn77, NewQn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-75, + Qn75, NewQn75, + {Qn80, Qn79, Qn78, Qn77, Qn76, + NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-74, + Qn74, NewQn74, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-73, + Qn73, NewQn73, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-72, + Qn72, NewQn72, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-71, + Qn71, NewQn71, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-70, + Qn70, NewQn70, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, + Qn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-69, + Qn69, NewQn69, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + NewQn69, Qn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-68, + Qn68, NewQn68, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, NewQn68, Qn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-67, + Qn67, NewQn67, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, NewQn67, Qn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-66, + Qn66, NewQn66, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, NewQn66, Qn65}); +?REMOVE_UNIQ_P_Qn80(-65, + Qn65, NewQn65, + {Qn80, Qn79, Qn78, Qn77, Qn76, + Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, + Qn69, Qn68, Qn67, Qn66, NewQn65}); +?REMOVE_UNIQ_P_Qn64(-64, + Qn64, NewQn64, + {NewQn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-63, + Qn63, NewQn63, + {Qn64, NewQn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-62, + Qn62, NewQn62, + {Qn64, Qn63, NewQn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-61, + Qn61, NewQn61, + {Qn64, Qn63, Qn62, NewQn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-60, + Qn60, NewQn60, + {Qn64, Qn63, Qn62, Qn61, NewQn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-59, + Qn59, NewQn59, + {Qn64, Qn63, Qn62, Qn61, Qn60, + NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-58, + Qn58, NewQn58, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-57, + Qn57, NewQn57, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-56, + Qn56, NewQn56, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-55, + Qn55, NewQn55, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-54, + Qn54, NewQn54, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, + Qn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-53, + Qn53, NewQn53, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + NewQn53, Qn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-52, + Qn52, NewQn52, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, NewQn52, Qn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-51, + Qn51, NewQn51, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, NewQn51, Qn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-50, + Qn50, NewQn50, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, NewQn50, Qn49}); +?REMOVE_UNIQ_P_Qn64(-49, + Qn49, NewQn49, + {Qn64, Qn63, Qn62, Qn61, Qn60, + Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, + Qn53, Qn52, Qn51, Qn50, NewQn49}); +?REMOVE_UNIQ_P_Qn48(-48, + Qn48, NewQn48, + {NewQn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-47, + Qn47, NewQn47, + {Qn48, NewQn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-46, + Qn46, NewQn46, + {Qn48, Qn47, NewQn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-45, + Qn45, NewQn45, + {Qn48, Qn47, Qn46, NewQn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-44, + Qn44, NewQn44, + {Qn48, Qn47, Qn46, Qn45, NewQn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-43, + Qn43, NewQn43, + {Qn48, Qn47, Qn46, Qn45, Qn44, + NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-42, + Qn42, NewQn42, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-41, + Qn41, NewQn41, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-40, + Qn40, NewQn40, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-39, + Qn39, NewQn39, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-38, + Qn38, NewQn38, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, + Qn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-37, + Qn37, NewQn37, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + NewQn37, Qn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-36, + Qn36, NewQn36, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, NewQn36, Qn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-35, + Qn35, NewQn35, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, NewQn35, Qn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-34, + Qn34, NewQn34, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, NewQn34, Qn33}); +?REMOVE_UNIQ_P_Qn48(-33, + Qn33, NewQn33, + {Qn48, Qn47, Qn46, Qn45, Qn44, + Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, + Qn37, Qn36, Qn35, Qn34, NewQn33}); +?REMOVE_UNIQ_P_Qn32(-32, + Qn32, NewQn32, + {NewQn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-31, + Qn31, NewQn31, + {Qn32, NewQn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-30, + Qn30, NewQn30, + {Qn32, Qn31, NewQn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-29, + Qn29, NewQn29, + {Qn32, Qn31, Qn30, NewQn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-28, + Qn28, NewQn28, + {Qn32, Qn31, Qn30, Qn29, NewQn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-27, + Qn27, NewQn27, + {Qn32, Qn31, Qn30, Qn29, Qn28, + NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-26, + Qn26, NewQn26, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-25, + Qn25, NewQn25, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-24, + Qn24, NewQn24, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-23, + Qn23, NewQn23, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-22, + Qn22, NewQn22, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, + Qn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-21, + Qn21, NewQn21, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + NewQn21, Qn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-20, + Qn20, NewQn20, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, NewQn20, Qn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-19, + Qn19, NewQn19, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, NewQn19, Qn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-18, + Qn18, NewQn18, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, NewQn18, Qn17}); +?REMOVE_UNIQ_P_Qn32(-17, + Qn17, NewQn17, + {Qn32, Qn31, Qn30, Qn29, Qn28, + Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, + Qn21, Qn20, Qn19, Qn18, NewQn17}); +?REMOVE_UNIQ_P_Qn16(-16, + Qn16, NewQn16, + {NewQn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-15, + Qn15, NewQn15, + {Qn16, NewQn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-14, + Qn14, NewQn14, + {Qn16, Qn15, NewQn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-13, + Qn13, NewQn13, + {Qn16, Qn15, Qn14, NewQn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-12, + Qn12, NewQn12, + {Qn16, Qn15, Qn14, Qn13, NewQn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-11, + Qn11, NewQn11, + {Qn16, Qn15, Qn14, Qn13, Qn12, + NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-10, + Qn10, NewQn10, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-9, + Qn9, NewQn9, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-8, + Qn8, NewQn8, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-7, + Qn7, NewQn7, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-6, + Qn6, NewQn6, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, + Qn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-5, + Qn5, NewQn5, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + NewQn5, Qn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-4, + Qn4, NewQn4, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, NewQn4, Qn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-3, + Qn3, NewQn3, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, NewQn3, Qn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-2, + Qn2, NewQn2, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, NewQn2, Qn1}); +?REMOVE_UNIQ_P_Qn16(-1, + Qn1, NewQn1, + {Qn16, Qn15, Qn14, Qn13, Qn12, + Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, + Qn5, Qn4, Qn3, Qn2, NewQn1}); +remove_unique_p(0, F, + {Pc, + Size, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + Q0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> + {Value, NewQ0} = queue_remove_unique(F, Q0), + NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, + {Value, + {if NewSize == 0 -> empty; true -> Pc end, + NewSize, + Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, + NewQ0, + Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; +?REMOVE_UNIQ_P_Qp16(1, + Qp1, NewQp1, + {NewQp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(2, + Qp2, NewQp2, + {Qp1, NewQp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(3, + Qp3, NewQp3, + {Qp1, Qp2, NewQp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(4, + Qp4, NewQp4, + {Qp1, Qp2, Qp3, NewQp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(5, + Qp5, NewQp5, + {Qp1, Qp2, Qp3, Qp4, NewQp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(6, + Qp6, NewQp6, + {Qp1, Qp2, Qp3, Qp4, Qp5, + NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(7, + Qp7, NewQp7, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(8, + Qp8, NewQp8, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(9, + Qp9, NewQp9, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(10, + Qp10, NewQp10, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(11, + Qp11, NewQp11, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, + Qp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(12, + Qp12, NewQp12, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + NewQp12, Qp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(13, + Qp13, NewQp13, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, NewQp13, Qp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(14, + Qp14, NewQp14, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, NewQp14, Qp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(15, + Qp15, NewQp15, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, NewQp15, Qp16}); +?REMOVE_UNIQ_P_Qp16(16, + Qp16, NewQp16, + {Qp1, Qp2, Qp3, Qp4, Qp5, + Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, + Qp12, Qp13, Qp14, Qp15, NewQp16}); +?REMOVE_UNIQ_P_Qp32(17, + Qp17, NewQp17, + {NewQp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(18, + Qp18, NewQp18, + {Qp17, NewQp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(19, + Qp19, NewQp19, + {Qp17, Qp18, NewQp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(20, + Qp20, NewQp20, + {Qp17, Qp18, Qp19, NewQp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(21, + Qp21, NewQp21, + {Qp17, Qp18, Qp19, Qp20, NewQp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(22, + Qp22, NewQp22, + {Qp17, Qp18, Qp19, Qp20, Qp21, + NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(23, + Qp23, NewQp23, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(24, + Qp24, NewQp24, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(25, + Qp25, NewQp25, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(26, + Qp26, NewQp26, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(27, + Qp27, NewQp27, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, + Qp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(28, + Qp28, NewQp28, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + NewQp28, Qp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(29, + Qp29, NewQp29, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, NewQp29, Qp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(30, + Qp30, NewQp30, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, NewQp30, Qp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(31, + Qp31, NewQp31, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, NewQp31, Qp32}); +?REMOVE_UNIQ_P_Qp32(32, + Qp32, NewQp32, + {Qp17, Qp18, Qp19, Qp20, Qp21, + Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, + Qp28, Qp29, Qp30, Qp31, NewQp32}); +?REMOVE_UNIQ_P_Qp48(33, + Qp33, NewQp33, + {NewQp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(34, + Qp34, NewQp34, + {Qp33, NewQp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(35, + Qp35, NewQp35, + {Qp33, Qp34, NewQp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(36, + Qp36, NewQp36, + {Qp33, Qp34, Qp35, NewQp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(37, + Qp37, NewQp37, + {Qp33, Qp34, Qp35, Qp36, NewQp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(38, + Qp38, NewQp38, + {Qp33, Qp34, Qp35, Qp36, Qp37, + NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(39, + Qp39, NewQp39, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(40, + Qp40, NewQp40, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(41, + Qp41, NewQp41, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(42, + Qp42, NewQp42, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(43, + Qp43, NewQp43, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, + Qp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(44, + Qp44, NewQp44, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + NewQp44, Qp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(45, + Qp45, NewQp45, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, NewQp45, Qp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(46, + Qp46, NewQp46, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, NewQp46, Qp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(47, + Qp47, NewQp47, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, NewQp47, Qp48}); +?REMOVE_UNIQ_P_Qp48(48, + Qp48, NewQp48, + {Qp33, Qp34, Qp35, Qp36, Qp37, + Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, + Qp44, Qp45, Qp46, Qp47, NewQp48}); +?REMOVE_UNIQ_P_Qp64(49, + Qp49, NewQp49, + {NewQp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(50, + Qp50, NewQp50, + {Qp49, NewQp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(51, + Qp51, NewQp51, + {Qp49, Qp50, NewQp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(52, + Qp52, NewQp52, + {Qp49, Qp50, Qp51, NewQp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(53, + Qp53, NewQp53, + {Qp49, Qp50, Qp51, Qp52, NewQp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(54, + Qp54, NewQp54, + {Qp49, Qp50, Qp51, Qp52, Qp53, + NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(55, + Qp55, NewQp55, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(56, + Qp56, NewQp56, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(57, + Qp57, NewQp57, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(58, + Qp58, NewQp58, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(59, + Qp59, NewQp59, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, + Qp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(60, + Qp60, NewQp60, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + NewQp60, Qp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(61, + Qp61, NewQp61, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, NewQp61, Qp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(62, + Qp62, NewQp62, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, NewQp62, Qp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(63, + Qp63, NewQp63, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, NewQp63, Qp64}); +?REMOVE_UNIQ_P_Qp64(64, + Qp64, NewQp64, + {Qp49, Qp50, Qp51, Qp52, Qp53, + Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, + Qp60, Qp61, Qp62, Qp63, NewQp64}); +?REMOVE_UNIQ_P_Qp80(65, + Qp65, NewQp65, + {NewQp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(66, + Qp66, NewQp66, + {Qp65, NewQp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(67, + Qp67, NewQp67, + {Qp65, Qp66, NewQp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(68, + Qp68, NewQp68, + {Qp65, Qp66, Qp67, NewQp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(69, + Qp69, NewQp69, + {Qp65, Qp66, Qp67, Qp68, NewQp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(70, + Qp70, NewQp70, + {Qp65, Qp66, Qp67, Qp68, Qp69, + NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(71, + Qp71, NewQp71, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(72, + Qp72, NewQp72, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(73, + Qp73, NewQp73, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(74, + Qp74, NewQp74, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(75, + Qp75, NewQp75, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, + Qp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(76, + Qp76, NewQp76, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + NewQp76, Qp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(77, + Qp77, NewQp77, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, NewQp77, Qp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(78, + Qp78, NewQp78, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, NewQp78, Qp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(79, + Qp79, NewQp79, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, NewQp79, Qp80}); +?REMOVE_UNIQ_P_Qp80(80, + Qp80, NewQp80, + {Qp65, Qp66, Qp67, Qp68, Qp69, + Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, + Qp76, Qp77, Qp78, Qp79, NewQp80}); +?REMOVE_UNIQ_P_Qp96(81, + Qp81, NewQp81, + {NewQp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(82, + Qp82, NewQp82, + {Qp81, NewQp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(83, + Qp83, NewQp83, + {Qp81, Qp82, NewQp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(84, + Qp84, NewQp84, + {Qp81, Qp82, Qp83, NewQp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(85, + Qp85, NewQp85, + {Qp81, Qp82, Qp83, Qp84, NewQp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(86, + Qp86, NewQp86, + {Qp81, Qp82, Qp83, Qp84, Qp85, + NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(87, + Qp87, NewQp87, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(88, + Qp88, NewQp88, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(89, + Qp89, NewQp89, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(90, + Qp90, NewQp90, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(91, + Qp91, NewQp91, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, + Qp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(92, + Qp92, NewQp92, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + NewQp92, Qp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(93, + Qp93, NewQp93, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, NewQp93, Qp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(94, + Qp94, NewQp94, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, NewQp94, Qp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(95, + Qp95, NewQp95, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, NewQp95, Qp96}); +?REMOVE_UNIQ_P_Qp96(96, + Qp96, NewQp96, + {Qp81, Qp82, Qp83, Qp84, Qp85, + Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, + Qp92, Qp93, Qp94, Qp95, NewQp96}); +?REMOVE_UNIQ_P_Qp112(97, + Qp97, NewQp97, + {NewQp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(98, + Qp98, NewQp98, + {Qp97, NewQp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(99, + Qp99, NewQp99, + {Qp97, Qp98, NewQp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(100, + Qp100, NewQp100, + {Qp97, Qp98, Qp99, NewQp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(101, + Qp101, NewQp101, + {Qp97, Qp98, Qp99, Qp100, NewQp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(102, + Qp102, NewQp102, + {Qp97, Qp98, Qp99, Qp100, Qp101, + NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(103, + Qp103, NewQp103, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(104, + Qp104, NewQp104, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(105, + Qp105, NewQp105, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(106, + Qp106, NewQp106, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(107, + Qp107, NewQp107, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, + Qp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(108, + Qp108, NewQp108, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + NewQp108, Qp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(109, + Qp109, NewQp109, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, NewQp109, Qp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(110, + Qp110, NewQp110, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, NewQp110, Qp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(111, + Qp111, NewQp111, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, NewQp111, Qp112}); +?REMOVE_UNIQ_P_Qp112(112, + Qp112, NewQp112, + {Qp97, Qp98, Qp99, Qp100, Qp101, + Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, + Qp108, Qp109, Qp110, Qp111, NewQp112}); +?REMOVE_UNIQ_P_Qp128(113, + Qp113, NewQp113, + {NewQp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(114, + Qp114, NewQp114, + {Qp113, NewQp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(115, + Qp115, NewQp115, + {Qp113, Qp114, NewQp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(116, + Qp116, NewQp116, + {Qp113, Qp114, Qp115, NewQp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(117, + Qp117, NewQp117, + {Qp113, Qp114, Qp115, Qp116, NewQp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(118, + Qp118, NewQp118, + {Qp113, Qp114, Qp115, Qp116, Qp117, + NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(119, + Qp119, NewQp119, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(120, + Qp120, NewQp120, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(121, + Qp121, NewQp121, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(122, + Qp122, NewQp122, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(123, + Qp123, NewQp123, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, + Qp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(124, + Qp124, NewQp124, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + NewQp124, Qp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(125, + Qp125, NewQp125, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, NewQp125, Qp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(126, + Qp126, NewQp126, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, NewQp126, Qp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(127, + Qp127, NewQp127, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, NewQp127, Qp128}); +?REMOVE_UNIQ_P_Qp128(128, + Qp128, NewQp128, + {Qp113, Qp114, Qp115, Qp116, Qp117, + Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, + Qp124, Qp125, Qp126, Qp127, NewQp128}). + +-ifdef(TEST). +-include_lib("eunit/include/eunit.hrl"). + +-include("pqueue_test.hrl"). + +module_test_() -> + {timeout, ?TEST_TIMEOUT, [ + {"internal tests", ?_assertOk(test())} + ]}. + +long_test_() -> + test_condition([ + {"proper tests", ?_assert(pqueue_proper:qc_pq4())} + ], ?CLOUDI_LONG_TEST_TIMEOUT). + +-endif. + +%%------------------------------------------------------------------------- +%% @hidden +%% remove a unique value from a queue based on a binary predicate, +%% traversal order is undefined to keep it efficient (i.e., shouldn't matter) +%% (based on the implementation of queue:filter/2 +%% which is under the Apache License 2.0) +%%------------------------------------------------------------------------- + +-spec queue_remove_unique(F :: fun((any()) -> boolean()), + Q :: {list(), list()}) -> + {boolean(), {list(), list()}}. + +queue_remove_unique(Fun, {R0, F0} = Q) + when is_function(Fun, 1), is_list(R0), is_list(F0) -> + case queue_remove_unique_f(Fun, F0) of + {true, []} -> + {true, queue_r2f(R0)}; + {true, F1} -> + {true, {R0, F1}}; + {false, F1} -> + %true = F1 == F0, + case queue_remove_unique_f(Fun, R0) of % backwards + {true, []} -> + {true, queue_f2r(F1)}; + {true, R1} -> + {true, {R1, F1}}; + {false, _} -> + {false, Q} + end + end; +queue_remove_unique(Fun, Q) -> + erlang:error(badarg, [Fun,Q]). + +% Call Fun in front to back order +queue_remove_unique_f(_, [] = F) -> + {false, F}; +queue_remove_unique_f(Fun, F) -> + queue_remove_unique_f(F, [], F, Fun). + +queue_remove_unique_f([], _, F, _) -> + {false, F}; +queue_remove_unique_f([X | F0], F1, F, Fun) -> + case Fun(X) of + true -> + {true, lists:reverse(F1, F0)}; + false -> + queue_remove_unique_f(F0, [X | F1], F, Fun) + end. + +-compile({inline, [{queue_r2f,1},{queue_f2r,1}]}). + +% Move half of elements from R to F, if there are at least three +queue_r2f([]) -> + {[],[]}; +queue_r2f([_]=R) -> + {[],R}; +queue_r2f([X,Y]) -> + {[X],[Y]}; +queue_r2f(List) -> + {FF,RR} = lists:split(length(List) div 2 + 1, List), + {FF,lists:reverse(RR, [])}. + +% Move half of elements from F to R, if there are enough +queue_f2r([]) -> + {[],[]}; +queue_f2r([_]=F) -> + {F,[]}; +queue_f2r([X,Y]) -> + {[Y],[X]}; +queue_f2r(List) -> + {FF,RR} = lists:split(length(List) div 2 + 1, List), + {lists:reverse(RR, []),FF}. + diff --git a/aoc2023/build/packages/pqueue/src/pqueue_test.hrl b/aoc2023/build/packages/pqueue/src/pqueue_test.hrl new file mode 100644 index 0000000..cedffe0 --- /dev/null +++ b/aoc2023/build/packages/pqueue/src/pqueue_test.hrl @@ -0,0 +1,49 @@ +%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- +% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: +%%% +%%%------------------------------------------------------------------------ +%%% pqueue eunit common functionality +%%% +%%% MIT License +%%% +%%% Copyright (c) 2020 Michael Truog +%%% +%%% Permission is hereby granted, free of charge, to any person obtaining a +%%% copy of this software and associated documentation files (the "Software"), +%%% to deal in the Software without restriction, including without limitation +%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, +%%% and/or sell copies of the Software, and to permit persons to whom the +%%% Software is furnished to do so, subject to the following conditions: +%%% +%%% The above copyright notice and this permission notice shall be included in +%%% all copies or substantial portions of the Software. +%%% +%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +%%% DEALINGS IN THE SOFTWARE. +%%% +%%%------------------------------------------------------------------------ + +-ifndef(_assertOk). +-define(_assertOk(Expr), ?_assertEqual(ok, Expr)). +-endif. + +-ifdef(CLOUDI_TEST_TIMEOUT). +-define(TEST_TIMEOUT, ?CLOUDI_TEST_TIMEOUT). % seconds +-else. +-define(TEST_TIMEOUT, 10). % seconds +-endif. +-ifndef(CLOUDI_LONG_TEST_TIMEOUT). +-define(CLOUDI_LONG_TEST_TIMEOUT, 60). % minutes +-endif. + +test_condition(_, 0) -> + []; +test_condition(L, LongTestTimeout) + when LongTestTimeout > 0 -> + {timeout, LongTestTimeout * 60, L}. + diff --git a/aoc2023/build/packages/pqueue/test/pqueue_proper.erl b/aoc2023/build/packages/pqueue/test/pqueue_proper.erl new file mode 100644 index 0000000..6702960 --- /dev/null +++ b/aoc2023/build/packages/pqueue/test/pqueue_proper.erl @@ -0,0 +1,156 @@ +-module(pqueue_proper). +-ifdef(TEST). +-include_lib("proper/include/proper.hrl"). + +-behaviour(proper_statem). + +-export([qc_pq/0, qc_pq2/0, qc_pq3/0, qc_pq4/0, correct/1]). + +-export([command/1, initial_state/0, next_state/3, postcondition/3, + precondition/2]). + +-type value() :: integer(). +-record(state, { in_queue :: [{value(), term()}] }). +-define(SERVER, queue_srv). + +priority() -> + integer(-20, 20). + +%% Selects priorities we have added +priority(InQ) -> + elements([P || {P, _} <- InQ]). + +value() -> + integer(). + +initial_state() -> + #state { in_queue = [] }. + +command(#state { in_queue = InQ }) -> + oneof([{call, ?SERVER, in, [value()]}, + {call, ?SERVER, in, [value(), priority()]}, + {call, ?SERVER, is_empty, []}, + {call, ?SERVER, is_queue, []}, + {call, ?SERVER, len, []}, + {call, ?SERVER, out, []}] ++ + [{call, ?SERVER, out, [priority(InQ)]} || InQ =/= []] ++ + [{call, ?SERVER, pout, []}, + {call, ?SERVER, to_list, []}]). + +next_state(#state { in_queue = InQ } = S, _V, {call, _, out, []}) -> + S#state { in_queue = listq_rem(InQ) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, out, [Prio]}) -> + S#state { in_queue = listq_rem(InQ, Prio) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, pout, _}) -> + S#state { in_queue = listq_rem(InQ) }; +next_state(S, _V, {call, _, to_list, _}) -> S; +next_state(S, _V, {call, _, is_queue, _}) -> S; +next_state(S, _V, {call, _, is_empty, _}) -> S; +next_state(S, _V, {call, _, len, _}) -> S; +next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value, Prio]}) -> + S#state { in_queue = listq_insert({Prio, Value}, InQ) }; +next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value]}) -> + S#state { in_queue = listq_insert({0, Value}, InQ) }. + +precondition(_S, _Call) -> + true. % No limitation on the things we can call at all. + +postcondition(#state { in_queue = InQ }, {call, _, out, [Prio]}, R) -> + R == listq_prio_peek(InQ, Prio); +postcondition(#state { in_queue = InQ }, {call, _, pout, _}, R) -> + R == listq_ppeek(InQ); +postcondition(#state { in_queue = InQ }, {call, _, out, _}, R) -> + R == listq_peek(InQ); +postcondition(S, {call, _, to_list, _}, R) -> + R == listq_to_list(S#state.in_queue); +postcondition(S, {call, _, len, _}, L) -> + L == listq_length(S#state.in_queue); +postcondition(_S, {call, _, is_queue, _}, true) -> true; +postcondition(S, {call, _, is_empty, _}, Res) -> + Res == (S#state.in_queue == []); +postcondition(_S, {call, _, in, _}, _) -> + true; +postcondition(_, _, _) -> + false. + +correct(M) -> + ?FORALL(Cmds, commands(?MODULE), + ?TRAPEXIT( + begin + ?SERVER:start_link(M), + {History,State,Result} = run_commands(?MODULE, Cmds), + ?SERVER:stop(), + ?WHENFAIL(io:format("History: ~w\nState: ~w\nResult: ~w\n", + [History,State,Result]), + aggregate(command_names(Cmds), Result =:= ok)) + end)). + +qc_opts() -> + [{numtests, 10000}]. + +qc_pq() -> + proper:quickcheck(pqueue_proper:correct(pqueue), qc_opts()). + +qc_pq2() -> + proper:quickcheck(pqueue_proper:correct(pqueue2), qc_opts()). + +qc_pq3() -> + proper:quickcheck(pqueue_proper:correct(pqueue3), qc_opts()). + +qc_pq4() -> + proper:quickcheck(pqueue_proper:correct(pqueue4), qc_opts()). + +%% ---------------------------------------------------------------------- + +%% A listq is a sorted list of priorities +listq_insert({P, V}, []) -> + [{P, [V]}]; +listq_insert({P, V}, [{P1, _} | _] = LQ) when P < P1 -> + [{P, [V]} | LQ]; +listq_insert({P, V}, [{P1, Vs} | Next]) when P == P1 -> + [{P, Vs ++ [V]} | Next]; +listq_insert({P, V}, [{P1, Vs} | Next]) when P > P1 -> + [{P1, Vs} | listq_insert({P, V}, Next)]. + +listq_to_list(L) -> + lists:concat( + [ Vals || {_Prio, Vals} <- L]). + +listq_length(L) -> + lists:sum( + [ length(Vs) || {_Prio, Vs} <- L]). + +listq_rem([]) -> + []; +listq_rem([{_P, [_V]} | Next]) -> + Next; +listq_rem([{P, [_V1 | Vs]} | Next]) -> + [{P, Vs} | Next]. + +listq_rem([], _P) -> + []; +listq_rem([{P, [_]} | Next], P) -> + Next; +listq_rem([{P, [_ | Vs]} | Next], P) -> + [{P, Vs} | Next]; +listq_rem([{P1, Vs} | Next], P) -> + [{P1, Vs} | listq_rem(Next, P)]. + +listq_peek([]) -> + empty; +listq_peek([{_P, [V | _]} | _]) -> + {value, V}. + +listq_prio_peek([{P, [V | _]} | _], P) -> + {value, V}; +listq_prio_peek([{_P1, _} | Next], P) -> + listq_prio_peek(Next, P); +listq_prio_peek([], _P) -> + empty. + +listq_ppeek([]) -> + empty; +listq_ppeek([{P, [V | _]} | _]) -> + {value, V, P}. + +-endif. diff --git a/aoc2023/build/packages/pqueue/test/queue_srv.erl b/aoc2023/build/packages/pqueue/test/queue_srv.erl new file mode 100644 index 0000000..7fcb0a1 --- /dev/null +++ b/aoc2023/build/packages/pqueue/test/queue_srv.erl @@ -0,0 +1,183 @@ +%%%------------------------------------------------------------------- +%%% @author Jesper Louis andersen <> +%%% @copyright (C) 2011, Jesper Louis andersen +%%% @doc +%%% +%%% @end +%%% Created : 11 Nov 2011 by Jesper Louis andersen <> +%%%------------------------------------------------------------------- +-module(queue_srv). + +-behaviour(gen_server). + +%% API +-export([start_link/1, stop/0, len/0, in/1, in/2, is_empty/0, + out/0, out/1, pout/0, + is_queue/0, to_list/0]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +-define(SERVER, ?MODULE). + +-record(state, { mod, q }). + +%%%=================================================================== +%%% API +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @doc +%% Starts the server +%% +%% @spec start_link(Mod) -> {ok, Pid} | ignore | {error, Error} +%% @end +%%-------------------------------------------------------------------- +start_link(Mod) -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [Mod], []). + +stop() -> + gen_server:stop(?SERVER). + +call(M) -> + gen_server:call(?SERVER, M, infinity). + +in(I) -> + call({in, I}). + +in(I, P) -> + call({in, I, P}). + +len() -> + call(len). + +is_empty() -> + call(is_empty). + +is_queue() -> + call(is_queue). + +to_list() -> + call(to_list). + +out() -> + call(out). + +out(P) -> + call({out, P}). + +pout() -> + call(pout). + +%%%=================================================================== +%%% gen_server callbacks +%%%=================================================================== + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Initializes the server +%% +%% @spec init(Args) -> {ok, State} | +%% {ok, State, Timeout} | +%% ignore | +%% {stop, Reason} +%% @end +%%-------------------------------------------------------------------- +init([Mod]) -> + {ok, #state{ mod = Mod, + q = Mod:new() }}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling call messages +%% +%% @spec handle_call(Request, From, State) -> +%% {reply, Reply, State} | +%% {reply, Reply, State, Timeout} | +%% {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, Reply, State} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_call({in, Item}, _F, #state { q = Q, mod = M } = S) -> + NQ = M:in(Item, Q), + {reply, ok, S#state { q = NQ }}; +handle_call({in, Item, Prio}, _F, #state { q = Q, mod = M } = S) -> + NQ = M:in(Item, Prio, Q), + {reply, ok, S#state { q = NQ }}; +handle_call({out, P}, _F, #state { q = Q, mod = M } = S) -> + {R, NQ} = M:out(P, Q), + {reply, R, S#state { q = NQ }}; +handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == out; + Ty == pout -> + {R, NQ} = M:Ty(Q), + {reply, R, S#state { q = NQ }}; +handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == is_queue; + Ty == is_empty; + Ty == len; + Ty == to_list -> + R = M:Ty(Q), + {reply, R, S}; +handle_call(Req, From, State) -> + error_logger:info_report([{handle_call, Req, From, State}]), + Reply = ok, + {reply, Reply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling cast messages +%% +%% @spec handle_cast(Msg, State) -> {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_cast(_Msg, State) -> + {noreply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Handling all non call/cast messages +%% +%% @spec handle_info(Info, State) -> {noreply, State} | +%% {noreply, State, Timeout} | +%% {stop, Reason, State} +%% @end +%%-------------------------------------------------------------------- +handle_info(_Info, State) -> + {noreply, State}. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% This function is called by a gen_server when it is about to +%% terminate. It should be the opposite of Module:init/1 and do any +%% necessary cleaning up. When it returns, the gen_server terminates +%% with Reason. The return value is ignored. +%% +%% @spec terminate(Reason, State) -> void() +%% @end +%%-------------------------------------------------------------------- +terminate(_Reason, _State) -> + ok. + +%%-------------------------------------------------------------------- +%% @private +%% @doc +%% Convert process state when code is changed +%% +%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState} +%% @end +%%-------------------------------------------------------------------- +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== diff --git a/aoc2023/build/packages/simplifile/README.md b/aoc2023/build/packages/simplifile/README.md new file mode 100644 index 0000000..5e49113 --- /dev/null +++ b/aoc2023/build/packages/simplifile/README.md @@ -0,0 +1,29 @@ +# simplifile + +[![Package Version](https://img.shields.io/hexpm/v/simplifile)](https://hex.pm/packages/simplifile) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/simplifile/) + +Simplifile provides basic file operations (read, write, append, and delete) that work +for all targets (Erlang, Node, and Deno). It also provides functions for working with directories. + +Note: When upgrading versions, be sure to check the changelog. + +## Example +```gleam +let filepath = "./test/hello.txt" +let assert Ok(_) = "Hello, World" |> write(to: filepath) +let assert Ok(_) = "Goodbye, Mars" |> append(to: filepath) +let assert Ok("Hello, WorldGoodbye, Mars") = read(from: filepath) +let assert Ok(_) = delete(filepath) +let assert Error(_) = read(from: filepath) +``` + +## Installation + +If available on Hex this package can be added to your Gleam project: + +```sh +gleam add simplifile +``` + +and its documentation can be found at . diff --git a/aoc2023/build/packages/simplifile/gleam.toml b/aoc2023/build/packages/simplifile/gleam.toml new file mode 100644 index 0000000..8e7523d --- /dev/null +++ b/aoc2023/build/packages/simplifile/gleam.toml @@ -0,0 +1,17 @@ +name = "simplifile" +version = "1.0.0" +description = "Basic file operations that work on all targets" + +licences = ["Apache-2.0"] +repository = { type = "github", user = "bcpeinhardt", repo = "simplifile" } +gleam = ">= 0.32.0" +# links = [{ title = "Website", href = "https://gleam.run" }] + +[javascript.deno] +allow_all = true + +[dependencies] +gleam_stdlib = "~> 0.29" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/simplifile/src/simplifile.app.src b/aoc2023/build/packages/simplifile/src/simplifile.app.src new file mode 100644 index 0000000..5b9d6ef --- /dev/null +++ b/aoc2023/build/packages/simplifile/src/simplifile.app.src @@ -0,0 +1,8 @@ +{application, simplifile, [ + {vsn, "1.0.0"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "Basic file operations that work on all targets"}, + {modules, [simplifile]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/simplifile/src/simplifile.erl b/aoc2023/build/packages/simplifile/src/simplifile.erl new file mode 100644 index 0000000..0d3818c --- /dev/null +++ b/aoc2023/build/packages/simplifile/src/simplifile.erl @@ -0,0 +1,287 @@ +-module(simplifile). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([read/1, write/2, delete/1, delete_all/1, append/2, read_bits/1, write_bits/2, append_bits/2, is_directory/1, create_directory/1, read_directory/1, is_file/1, create_file/1, get_files/1, create_directory_all/1, copy_directory/2, rename_directory/2, copy_file/2, rename_file/2]). +-export_type([file_error/0]). + +-type file_error() :: eacces | + eagain | + ebadf | + ebadmsg | + ebusy | + edeadlk | + edeadlock | + edquot | + eexist | + efault | + efbig | + eftype | + eintr | + einval | + eio | + eisdir | + eloop | + emfile | + emlink | + emultihop | + enametoolong | + enfile | + enobufs | + enodev | + enolck | + enolink | + enoent | + enomem | + enospc | + enosr | + enostr | + enosys | + enotblk | + enotdir | + enotsup | + enxio | + eopnotsupp | + eoverflow | + eperm | + epipe | + erange | + erofs | + espipe | + esrch | + estale | + etxtbsy | + exdev | + not_utf8 | + unknown. + +-spec do_append(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_append(Content, Filepath) -> + _pipe = Content, + _pipe@1 = gleam_stdlib:identity(_pipe), + simplifile_erl:append_file(_pipe@1, Filepath). + +-spec do_write(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_write(Content, Filepath) -> + _pipe = Content, + _pipe@1 = gleam_stdlib:identity(_pipe), + simplifile_erl:write_file(_pipe@1, Filepath). + +-spec do_read(binary()) -> {ok, binary()} | {error, file_error()}. +do_read(Filepath) -> + case simplifile_erl:read_file(Filepath) of + {ok, Bits} -> + case gleam@bit_array:to_string(Bits) of + {ok, Str} -> + {ok, Str}; + + _ -> + {error, not_utf8} + end; + + {error, E} -> + {error, E} + end. + +-spec cast_error({ok, FIL} | {error, file_error()}) -> {ok, FIL} | + {error, file_error()}. +cast_error(Input) -> + Input. + +-spec read(binary()) -> {ok, binary()} | {error, file_error()}. +read(Filepath) -> + _pipe = do_read(Filepath), + cast_error(_pipe). + +-spec write(binary(), binary()) -> {ok, nil} | {error, file_error()}. +write(Filepath, Contents) -> + _pipe = do_write(Contents, Filepath), + cast_error(_pipe). + +-spec delete(binary()) -> {ok, nil} | {error, file_error()}. +delete(Path) -> + _pipe = simplifile_erl:recursive_delete(Path), + cast_error(_pipe). + +-spec delete_all(list(binary())) -> {ok, nil} | {error, file_error()}. +delete_all(Paths) -> + case Paths of + [] -> + {ok, nil}; + + [Path | Rest] -> + case delete(Path) of + {ok, nil} -> + delete_all(Rest); + + {error, enoent} -> + delete_all(Rest); + + E -> + E + end + end. + +-spec append(binary(), binary()) -> {ok, nil} | {error, file_error()}. +append(Filepath, Contents) -> + _pipe = do_append(Contents, Filepath), + cast_error(_pipe). + +-spec read_bits(binary()) -> {ok, bitstring()} | {error, file_error()}. +read_bits(Filepath) -> + _pipe = simplifile_erl:read_file(Filepath), + cast_error(_pipe). + +-spec write_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. +write_bits(Filepath, Bits) -> + _pipe = simplifile_erl:write_file(Bits, Filepath), + cast_error(_pipe). + +-spec append_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. +append_bits(Filepath, Bits) -> + _pipe = simplifile_erl:append_file(Bits, Filepath), + cast_error(_pipe). + +-spec is_directory(binary()) -> boolean(). +is_directory(Filepath) -> + filelib:is_dir(Filepath). + +-spec create_directory(binary()) -> {ok, nil} | {error, file_error()}. +create_directory(Filepath) -> + _pipe = simplifile_erl:make_directory(Filepath), + cast_error(_pipe). + +-spec read_directory(binary()) -> {ok, list(binary())} | {error, file_error()}. +read_directory(Path) -> + _pipe = simplifile_erl:list_directory(Path), + cast_error(_pipe). + +-spec is_file(binary()) -> boolean(). +is_file(Filepath) -> + simplifile_erl:is_file(Filepath). + +-spec create_file(binary()) -> {ok, nil} | {error, file_error()}. +create_file(Filepath) -> + case begin + _pipe = Filepath, + is_file(_pipe) + end + orelse begin + _pipe@1 = Filepath, + is_directory(_pipe@1) + end of + true -> + {error, eexist}; + + false -> + write_bits(Filepath, <<>>) + end. + +-spec do_copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +do_copy_directory(Src, Dest) -> + gleam@result:'try'( + read_directory(Src), + fun(Segments) -> + _pipe = Segments, + gleam@list:each( + _pipe, + fun(Segment) -> + Src_path = <<<>/binary, + Segment/binary>>, + Dest_path = <<<>/binary, + Segment/binary>>, + case {is_file(Src_path), is_directory(Src_path)} of + {true, false} -> + gleam@result:'try'( + read_bits(Src_path), + fun(Content) -> _pipe@1 = Content, + write_bits(Dest_path, _pipe@1) end + ); + + {false, true} -> + gleam@result:'try'( + create_directory(Dest_path), + fun(_) -> + do_copy_directory(Src_path, Dest_path) + end + ); + + {_, _} -> + erlang:error(#{gleam_error => panic, + message => <<"unreachable"/utf8>>, + module => <<"simplifile"/utf8>>, + function => <<"do_copy_directory"/utf8>>, + line => 341}) + end + end + ), + {ok, nil} + end + ). + +-spec get_files(binary()) -> {ok, list(binary())} | {error, file_error()}. +get_files(Directory) -> + gleam@result:'try'( + read_directory(Directory), + fun(Contents) -> + Paths = gleam@list:map( + Contents, + fun(Segment) -> + <<<>/binary, Segment/binary>> + end + ), + Files = gleam@list:filter(Paths, fun is_file/1), + case gleam@list:filter(Paths, fun is_directory/1) of + [] -> + {ok, Files}; + + Directories -> + gleam@result:'try'( + gleam@list:try_map(Directories, fun get_files/1), + fun(Nested_files) -> + {ok, + gleam@list:append( + Files, + gleam@list:flatten(Nested_files) + )} + end + ) + end + end + ). + +-spec create_directory_all(binary()) -> {ok, nil} | {error, file_error()}. +create_directory_all(Dirpath) -> + Path = case begin + _pipe = Dirpath, + gleam@string:ends_with(_pipe, <<"/"/utf8>>) + end of + true -> + Dirpath; + + false -> + <> + end, + _pipe@1 = simplifile_erl:create_dir_all(Path), + cast_error(_pipe@1). + +-spec copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +copy_directory(Src, Dest) -> + gleam@result:'try'( + create_directory_all(Dest), + fun(_) -> do_copy_directory(Src, Dest) end + ). + +-spec rename_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. +rename_directory(Src, Dest) -> + gleam@result:'try'(copy_directory(Src, Dest), fun(_) -> delete(Src) end). + +-spec copy_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. +copy_file(Src, Dest) -> + _pipe = file:copy(Src, Dest), + _pipe@1 = gleam@result:replace(_pipe, nil), + cast_error(_pipe@1). + +-spec rename_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. +rename_file(Src, Dest) -> + _pipe = simplifile_erl:rename_file(Src, Dest), + cast_error(_pipe). diff --git a/aoc2023/build/packages/simplifile/src/simplifile.gleam b/aoc2023/build/packages/simplifile/src/simplifile.gleam new file mode 100644 index 0000000..eff0306 --- /dev/null +++ b/aoc2023/build/packages/simplifile/src/simplifile.gleam @@ -0,0 +1,580 @@ +import gleam/bit_array +import gleam/string +import gleam/result +import gleam/list + +/// This type represents all of the reasons for why a file system operation could fail. +/// +/// Most of these reasons are POSIX errors, which come from the operating system +/// and start with E. Others have been added to represent other issues that may +/// arise specific to this library. +/// +pub type FileError { + /// Permission denied. + Eacces + /// Resource temporarily unavailable. + Eagain + /// Bad file number + Ebadf + /// Bad message. + Ebadmsg + /// File busy. + Ebusy + /// Resource deadlock avoided. + Edeadlk + /// On most architectures, same as `Edeadlk`. On some architectures, it + /// means "File locking deadlock error." + Edeadlock + /// Disk quota exceeded. + Edquot + /// File already exists. + Eexist + /// Bad address in system call argument. + Efault + /// File too large. + Efbig + /// Inappropriate file type or format. Usually caused by trying to set the + /// "sticky bit" on a regular file (not a directory). + Eftype + /// Interrupted system call. + Eintr + /// Invalid argument. + Einval + /// I/O error. + Eio + /// Illegal operation on a directory. + Eisdir + /// Too many levels of symbolic links. + Eloop + /// Too many open files. + Emfile + /// Too many links. + Emlink + /// Multihop attempted. + Emultihop + /// Filename too long + Enametoolong + /// File table overflow + Enfile + /// No buffer space available. + Enobufs + /// No such device. + Enodev + /// No locks available. + Enolck + /// Link has been severed. + Enolink + /// No such file or directory. + Enoent + /// Not enough memory. + Enomem + /// No space left on device. + Enospc + /// No STREAM resources. + Enosr + /// Not a STREAM. + Enostr + /// Function not implemented. + Enosys + /// Block device required. + Enotblk + /// Not a directory. + Enotdir + /// Operation not supported. + Enotsup + /// No such device or address. + Enxio + /// Operation not supported on socket. + Eopnotsupp + /// Value too large to be stored in data type. + Eoverflow + /// Not owner. + Eperm + /// Broken pipe. + Epipe + /// Result too large. + Erange + /// Read-only file system. + Erofs + /// Invalid seek. + Espipe + /// No such process. + Esrch + /// Stale remote file handle. + Estale + /// Text file busy. + Etxtbsy + /// Cross-domain link. + Exdev + /// File was requested to be read as UTF-8, but is not UTF-8 encoded. + NotUtf8 + /// Any error not accounted for by this type + Unknown +} + +/// Read a files contents as a string +/// ## Example +/// ```gleam +/// let assert Ok(records) = read(from: "./users.csv") +/// ``` +/// +pub fn read(from filepath: String) -> Result(String, FileError) { + do_read(filepath) + |> cast_error +} + +/// Write a string to a file at the given path +/// ## Example +/// ```gleam +/// let assert Ok(Nil) = write("Hello, World!", to: "./hello_world.txt") +/// ``` +/// +pub fn write( + to filepath: String, + contents contents: String, +) -> Result(Nil, FileError) { + do_write(contents, to: filepath) + |> cast_error +} + +/// Delete a file or directory at a given path. Performs a recursive +/// delete on a directory. +/// Throws an error if the path does not exist. +/// ## Example +/// ```gleam +/// let assert Ok(Nil) = delete(file_at: "./delete_me.txt") +/// ``` +/// +pub fn delete(file_or_dir_at path: String) -> Result(Nil, FileError) { + do_delete(path) + |> cast_error +} + +/// Delete all files/directories specified in a list of paths. +/// Recursively deletes provided directories. +/// Does not return an error if one or more of the provided paths +/// do not exist. +/// +pub fn delete_all(paths paths: List(String)) -> Result(Nil, FileError) { + case paths { + [] -> Ok(Nil) + [path, ..rest] -> { + case delete(path) { + Ok(Nil) | Error(Enoent) -> delete_all(rest) + e -> e + } + } + } +} + +/// Append a string to the contents of a file at the given path +/// ## Example +/// ```gleam +/// let assert Ok(Nil) = append("more text", to: "./needs_more_text.txt") +/// ``` +/// +pub fn append( + to filepath: String, + contents contents: String, +) -> Result(Nil, FileError) { + do_append(contents, to: filepath) + |> cast_error +} + +/// Read a files contents as a bitstring +/// ## Example +/// ```gleam +/// let assert Ok(records) = read_bits(from: "./users.csv") +/// ``` +/// +pub fn read_bits(from filepath: String) -> Result(BitArray, FileError) { + do_read_bits(filepath) + |> cast_error +} + +/// Write a bitstring to a file at the given path +/// ## Example +/// ```gleam +/// let assert Ok(Nil) = write_bits(<<"Hello, World!":utf8>>, to: "./hello_world.txt") +/// ``` +/// +pub fn write_bits( + to filepath: String, + bits bits: BitArray, +) -> Result(Nil, FileError) { + do_write_bits(bits, filepath) + |> cast_error +} + +/// Append a bitstring to the contents of a file at the given path +/// ## Example +/// ```gleam +/// let assert Ok(Nil) = append_bits(<<"more text":utf8>>, to: "./needs_more_text.txt") +/// ``` +/// +pub fn append_bits( + to filepath: String, + bits bits: BitArray, +) -> Result(Nil, FileError) { + do_append_bits(bits, filepath) + |> cast_error +} + +/// Checks if the provided filepath is a directory +/// ## Example +/// ```gleam +/// let assert True = is_directory("./test") +/// ``` +pub fn is_directory(filepath: String) -> Bool { + do_is_directory(filepath) +} + +/// Create a directory at the provided filepath. Returns an error if +/// the directory already exists. +/// +/// ## Example +/// ```gleam +/// create_directory("./test") +/// ``` +pub fn create_directory(filepath: String) -> Result(Nil, FileError) { + do_make_directory(filepath) + |> cast_error +} + +/// Lists the contents of a directory. +/// The list contains directory and file names, and is not recursive. +/// +/// ## Example +/// ```gleam +/// let assert Ok(files_and_folders) = read_directory(at: "./Folder1") +/// ``` +/// +pub fn read_directory(at path: String) -> Result(List(String), FileError) { + do_read_directory(path) + |> cast_error +} + +/// Returns `True` if there is a file at the given path, false otherwise. +/// +pub fn is_file(filepath: String) -> Bool { + do_is_file(filepath) +} + +/// Creates an empty file at the given filepath. Returns an `Error(Eexist)` +/// if the file already exists. +/// +pub fn create_file(at filepath: String) -> Result(Nil, FileError) { + case + filepath + |> is_file || filepath + |> is_directory + { + True -> Error(Eexist) + False -> write_bits(<<>>, to: filepath) + } +} + +/// Recursively creates necessary directories for a given directory +/// path. Note that if you pass a path that "looks like" a file, i.e. +/// `./a/b.txt`, a folder named `b.txt` will be created, so be sure +/// to pass only the path to the required directory. +pub fn create_directory_all(dirpath: String) -> Result(Nil, FileError) { + let path = case + dirpath + |> string.ends_with("/") + { + True -> dirpath + False -> dirpath <> "/" + } + do_create_dir_all(path) + |> cast_error +} + +/// Copy a file at a given path to another path. +/// Note: destination should include the filename, not just the directory +pub fn copy_file(at src: String, to dest: String) -> Result(Nil, FileError) { + do_copy_file(src, dest) + |> result.replace(Nil) + |> cast_error +} + +/// Rename a file at a given path to another path. +/// Note: destination should include the filename, not just the directory +pub fn rename_file(at src: String, to dest: String) -> Result(Nil, FileError) { + do_rename_file(src, dest) + |> cast_error +} + +/// Copy a directory recursively +pub fn copy_directory(at src: String, to dest: String) -> Result(Nil, FileError) { + // Erlang does not provide a built in `copy_dir` function, + // and Deno doesn't support Node's `fs.cpSync`, so we'll just roll + // our own for now. + use _ <- result.try(create_directory_all(dest)) + do_copy_directory(src, dest) +} + +fn do_copy_directory(src: String, dest: String) -> Result(Nil, FileError) { + // Iterate over the segments of the file + use segments <- result.try(read_directory(src)) + segments + |> list.each(fn(segment) { + let src_path = src <> "/" <> segment + let dest_path = dest <> "/" <> segment + + case is_file(src_path), is_directory(src_path) { + True, False -> { + // For a file, create the file in the new directory + use content <- result.try(read_bits(src_path)) + content + |> write_bits(to: dest_path) + } + False, True -> { + // Create the target directory and recurs + use _ <- result.try(create_directory(dest_path)) + do_copy_directory(src_path, dest_path) + } + _, _ -> { + // This should be unreachable. The src_path can't be both a file + // and a directory, and it's definitely one of the two because it's + // coming from list_contents + panic as "unreachable" + } + } + }) + Ok(Nil) +} + +/// Copy a directory recursively and then delete the old one. +pub fn rename_directory( + at src: String, + to dest: String, +) -> Result(Nil, FileError) { + use _ <- result.try(copy_directory(src, dest)) + delete(src) +} + +/// Returns a list of filepaths for every file in the directory, including nested +/// files. +/// +pub fn get_files(in directory: String) -> Result(List(String), FileError) { + use contents <- result.try(read_directory(directory)) + let paths = list.map(contents, fn(segment) { directory <> "/" <> segment }) + let files = list.filter(paths, is_file) + case list.filter(paths, is_directory) { + [] -> Ok(files) + directories -> { + use nested_files <- result.try(list.try_map(directories, get_files)) + Ok(list.append(files, list.flatten(nested_files))) + } + } +} + +@target(javascript) +fn do_read(from filepath: String) -> Result(String, String) { + case do_read_bits(filepath) { + Ok(bits) -> { + case bit_array.to_string(bits) { + Ok(str) -> Ok(str) + _ -> Error("NOTUTF8") + } + } + Error(e) -> Error(e) + } +} + +@target(javascript) +fn do_write(content: String, to filepath: String) -> Result(Nil, String) { + content + |> bit_array.from_string + |> do_write_bits(to: filepath) +} + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "deleteFileOrDirRecursive") +fn do_delete(file_or_dir_at: String) -> Result(Nil, String) + +@target(javascript) +fn do_append(content: String, to filepath: String) -> Result(Nil, String) { + content + |> bit_array.from_string + |> do_append_bits(to: filepath) +} + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "readBits") +fn do_read_bits(from: String) -> Result(BitArray, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "writeBits") +fn do_write_bits(content: BitArray, to filepath: String) -> Result(Nil, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "appendBits") +fn do_append_bits(content: BitArray, to filepath: String) -> Result(Nil, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "isDirectory") +fn do_is_directory(filepath: String) -> Bool + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "makeDirectory") +fn do_make_directory(filepath: String) -> Result(Nil, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "createDirAll") +fn do_create_dir_all(dirpath: String) -> Result(Nil, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "listContents") +fn do_read_directory(directory_path: String) -> Result(List(String), String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "copyFile") +fn do_copy_file(at: String, to: String) -> Result(Nil, String) + +@target(javascript) +@external(javascript, "./simplifile_js.mjs", "renameFile") +fn do_rename_file(at: String, to: String) -> Result(Nil, String) + +@target(javascript) +fn cast_error(input: Result(a, String)) -> Result(a, FileError) { + result.map_error( + input, + fn(e) { + case e { + "EACCES" -> Eacces + "EAGAIN" -> Eagain + "EBADF" -> Ebadf + "EBADMSG" -> Ebadmsg + "EBUSY" -> Ebusy + "EDEADLK" -> Edeadlk + "EDEADLOCK" -> Edeadlock + "EDQUOT" -> Edquot + "EEXIST" -> Eexist + "EFAULT" -> Efault + "EFBIG" -> Efbig + "EFTYPE" -> Eftype + "EINTR" -> Eintr + "EINVAL" -> Einval + "EIO" -> Eio + "EISDIR" -> Eisdir + "ELOOP" -> Eloop + "EMFILE" -> Emfile + "EMLINK" -> Emlink + "EMULTIHOP" -> Emultihop + "ENAMETOOLONG" -> Enametoolong + "ENFILE" -> Enfile + "ENOBUFS" -> Enobufs + "ENODEV" -> Enodev + "ENOLCK" -> Enolck + "ENOLINK" -> Enolink + "ENOENT" -> Enoent + "ENOMEM" -> Enomem + "ENOSPC" -> Enospc + "ENOSR" -> Enosr + "ENOSTR" -> Enostr + "ENOSYS" -> Enosys + "ENOBLK" -> Enotblk + "ENODIR" -> Enotdir + "ENOTSUP" -> Enotsup + "ENXIO" -> Enxio + "EOPNOTSUPP" -> Eopnotsupp + "EOVERFLOW" -> Eoverflow + "EPERM" -> Eperm + "EPIPE" -> Epipe + "ERANGE" -> Erange + "EROFS" -> Erofs + "ESPIPE" -> Espipe + "ESRCH" -> Esrch + "ESTALE" -> Estale + "ETXTBSY" -> Etxtbsy + "EXDEV" -> Exdev + "NOTUTF8" -> NotUtf8 + _ -> Unknown + } + }, + ) +} + +@target(erlang) +@external(erlang, "simplifile_erl", "append_file") +fn do_append_bits( + content: BitArray, + to filepath: String, +) -> Result(Nil, FileError) + +@target(erlang) +@external(erlang, "simplifile_erl", "write_file") +fn do_write_bits( + content: BitArray, + to filepath: String, +) -> Result(Nil, FileError) + +@target(erlang) +@external(erlang, "simplifile_erl", "read_file") +fn do_read_bits(from: String) -> Result(BitArray, FileError) + +@target(erlang) +@external(erlang, "simplifile_erl", "recursive_delete") +fn do_delete(file_or_dir_at: String) -> Result(Nil, FileError) + +@target(erlang) +fn do_append(content: String, to filepath: String) -> Result(Nil, FileError) { + content + |> bit_array.from_string + |> do_append_bits(filepath) +} + +@target(erlang) +fn do_write(content: String, to filepath: String) -> Result(Nil, FileError) { + content + |> bit_array.from_string + |> do_write_bits(filepath) +} + +@target(erlang) +fn do_read(from filepath: String) -> Result(String, FileError) { + case do_read_bits(filepath) { + Ok(bits) -> { + case bit_array.to_string(bits) { + Ok(str) -> Ok(str) + _ -> Error(NotUtf8) + } + } + Error(e) -> Error(e) + } +} + +@target(erlang) +fn cast_error(input: Result(a, FileError)) -> Result(a, FileError) { + input +} + +@target(erlang) +@external(erlang, "filelib", "is_dir") +fn do_is_directory(path: String) -> Bool + +@target(erlang) +@external(erlang, "simplifile_erl", "make_directory") +fn do_make_directory(directory: String) -> Result(Nil, FileError) + +@target(erlang) +@external(erlang, "simplifile_erl", "list_directory") +fn do_read_directory(directory: String) -> Result(List(String), FileError) + +@external(erlang, "simplifile_erl", "is_file") +@external(javascript, "./simplifile_js.mjs", "isFile") +fn do_is_file(filepath: String) -> Bool + +@target(erlang) +@external(erlang, "simplifile_erl", "create_dir_all") +fn do_create_dir_all(dirpath: String) -> Result(Nil, FileError) + +@target(erlang) +@external(erlang, "file", "copy") +fn do_copy_file(src: String, dest: String) -> Result(Int, FileError) + +@target(erlang) +@external(erlang, "simplifile_erl", "rename_file") +fn do_rename_file(src: String, dest: String) -> Result(Nil, FileError) diff --git a/aoc2023/build/packages/simplifile/src/simplifile_erl.erl b/aoc2023/build/packages/simplifile/src/simplifile_erl.erl new file mode 100644 index 0000000..dac135a --- /dev/null +++ b/aoc2023/build/packages/simplifile/src/simplifile_erl.erl @@ -0,0 +1,70 @@ +-module(simplifile_erl). +-export([ + read_file/1, + append_file/2, write_file/2, delete_file/1, delete_directory/1, recursive_delete/1, + list_directory/1, make_directory/1, is_file/1, create_dir_all/1, rename_file/2 +]). + +-define(is_posix_error(Error), + Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse + Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse + Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse + Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse + Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse + Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse + Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse + Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse + Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse + Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse + Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse + Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse + Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse + Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse + Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse + Error =:= etxtbsy orelse Error =:= exdev +). + +posix_result(Result) -> + case Result of + ok -> {ok, nil}; + {ok, Value} -> {ok, Value}; + {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} + end. + +read_file(Filename) -> + posix_result(file:read_file(Filename)). + +write_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents)). + +append_file(Contents, Filename) -> + posix_result(file:write_file(Filename, Contents, [append])). + +delete_file(Filename) -> + posix_result(file:delete(Filename)). + +make_directory(Dir) -> + posix_result(file:make_dir(Dir)). + +list_directory(Dir) -> + case file:list_dir(Dir) of + {ok, Filenames} -> + {ok, [list_to_binary(Filename) || Filename <- Filenames]}; + {error, Reason} when ?is_posix_error(Reason) -> + {error, Reason} + end. + +delete_directory(Dir) -> + posix_result(file:del_dir(Dir)). + +recursive_delete(Dir) -> + posix_result(file:del_dir_r(Dir)). + +is_file(Filename) -> + not (file:read_file_info(Filename) == {error, enoent}) and not filelib: is_dir(Filename). + +create_dir_all(Filename) -> + posix_result(filelib:ensure_dir(Filename)). + +rename_file(Source, Destination) -> + posix_result(file:rename(Source, Destination)). diff --git a/aoc2023/build/packages/simplifile/src/simplifile_js.mjs b/aoc2023/build/packages/simplifile/src/simplifile_js.mjs new file mode 100644 index 0000000..faf4109 --- /dev/null +++ b/aoc2023/build/packages/simplifile/src/simplifile_js.mjs @@ -0,0 +1,102 @@ +import fs from "node:fs" +import path from "node:path" +import { BitArray, Ok, Error as GError, toList} from "./gleam.mjs"; + +export function readBits(filepath) { + try { + const contents = fs.readFileSync(path.normalize(filepath)) + return new Ok(new BitArray(new Uint8Array(contents))) + } catch(e) { + return new GError(stringifyError(e)) + } +} + +export function writeBits(contents, filepath) { + try { + fs.writeFileSync(path.normalize(filepath), contents.buffer) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function appendBits(contents, filepath) { + try { + fs.appendFileSync(path.normalize(filepath), contents.buffer) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +function stringifyError(e) { + return e.code +} + +export function isFile(filepath) { + let fp = path.normalize(filepath) + return fs.existsSync(fp) && fs.lstatSync(fp).isFile(); +} + +export function isDirectory(filepath) { + let fp = path.normalize(filepath) + return fs.existsSync(fp) && fs.lstatSync(fp).isDirectory(); +} + +export function makeDirectory(filepath) { + try { + fs.mkdirSync(path.normalize(filepath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function createDirAll(filepath) { + try { + fs.mkdirSync(filepath, { recursive: true }) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function deleteFileOrDirRecursive(fileOrDirPath) { + try { + if (isDirectory(fileOrDirPath)) { + fs.rmSync(path.normalize(fileOrDirPath), { recursive: true }) + } else { + fs.unlinkSync(path.normalize(fileOrDirPath)) + } + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function listContents(filepath) { + try { + const stuff = toList(fs.readdirSync(path.normalize(filepath))) + return new Ok(stuff) + } catch(e) { + return new GError(stringifyError(e)) + } +} + +export function copyFile(srcpath, destpath) { + try { + fs.copyFileSync(path.normalize(srcpath), path.normalize(destpath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} + +export function renameFile(srcpath, destpath) { + try { + fs.renameSync(path.normalize(srcpath), path.normalize(destpath)) + return new Ok(undefined) + } catch (e) { + return new GError(stringifyError(e)) + } +} \ No newline at end of file diff --git a/aoc2023/build/packages/snag/LICENCE b/aoc2023/build/packages/snag/LICENCE new file mode 100644 index 0000000..b8c2e9e --- /dev/null +++ b/aoc2023/build/packages/snag/LICENCE @@ -0,0 +1,211 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 - present Louis Pilfold + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +## Runtime Library Exception to the Apache 2.0 License: ## + + + As an exception, if you use this Software to compile your source code and + portions of this Software are embedded into the binary product as a result, + you may redistribute such product without providing attribution as would + otherwise be required by Sections 4(a), 4(b) and 4(d) of the License. diff --git a/aoc2023/build/packages/snag/README.md b/aoc2023/build/packages/snag/README.md new file mode 100644 index 0000000..aaedcf5 --- /dev/null +++ b/aoc2023/build/packages/snag/README.md @@ -0,0 +1,81 @@ +# Snag + +A Snag is a boilerplate-free ad-hoc error type. + +Use `Result(value, Snag)` (or the `snag.Result(value)` alias) in functions +that may fail. + +A low level message like "Unexpected status 401" or "No such file or +directory" can be confusing or difficult to debug, so use the `snag.context` +function to add extra contextual information. + +```gleam +import gleam/io +import my_app.{User} +import snag.{Result} + +pub fn log_in(user_id: Int) -> Result(User) { + try api_key = + my_app.read_file("api_key.txt") + |> snag.context("Could not load API key") + + try session_token = + user_id + |> my_app.create_session(api_key) + |> snag.context("Session creation failed") + + Ok(session_token) +} + +pub fn main() { + case log_in(42) { + Ok(session) -> io.println("Logged in!") + Error(snag) -> { + io.print(snag.pretty_print(snag)) + my_app.exit(1) + } + } +} +``` + +In this code when an error occurs within the `create_session` function an +error message like this is printed using the added contextual information: + +```text +error: Session creation failed + +cause: + 0: Unable to exchange token with authentication service + 1: Service authentication failed + 2: Unexpected HTTP status 401 +``` + +## When should I use Snag? + +Snag is useful in code where it must either pass or fail, and when it fails we +want good debugging information to print to the user. i.e. Command line +tools, data processing pipelines, etc. Here Snag provides a convenient way to +create errors with a reasonable amount of debugging information, without the +boilerplate of a custom error type. + +It is not suited to code where the application needs to make a decision about +what to do in the event of an error, such as whether to give up or to try +again. i.e. Libraries, web application backends, API clients, etc. In these +situations it is recommended to create a custom type for your errors as it +can be pattern matched on and have any additional detail added as fields. + +## Installation + +Add `snag` to your Gleam project + +``` +gleam add snag +``` + +## Prior art + +This library is inspired by the following projects: + +- Rust's [`anyhow`](https://github.com/dtolnay/anyhow) and + [`std::error::Error`](https://doc.rust-lang.org/std/error/trait.Error.html) +- Go's [`error`](https://golang.org/pkg/errors/). diff --git a/aoc2023/build/packages/snag/gleam.toml b/aoc2023/build/packages/snag/gleam.toml new file mode 100644 index 0000000..4f2d670 --- /dev/null +++ b/aoc2023/build/packages/snag/gleam.toml @@ -0,0 +1,16 @@ +name = "snag" +version = "0.2.1" +licences = ["Apache-2.0"] +description = "A boilerplate-free ad-hoc error type" + +repository = { type = "github", user = "gleam-experiments", repo = "snag" } +links = [ + { title = "Website", href = "https://gleam.run" }, + { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, +] + +[dependencies] +gleam_stdlib = "~> 0.18" + +[dev-dependencies] +gleeunit = "~> 0.5" diff --git a/aoc2023/build/packages/snag/include/snag_Snag.hrl b/aoc2023/build/packages/snag/include/snag_Snag.hrl new file mode 100644 index 0000000..5d6614e --- /dev/null +++ b/aoc2023/build/packages/snag/include/snag_Snag.hrl @@ -0,0 +1 @@ +-record(snag, {issue :: binary(), cause :: list(binary())}). diff --git a/aoc2023/build/packages/snag/src/snag.app.src b/aoc2023/build/packages/snag/src/snag.app.src new file mode 100644 index 0000000..175e326 --- /dev/null +++ b/aoc2023/build/packages/snag/src/snag.app.src @@ -0,0 +1,8 @@ +{application, snag, [ + {vsn, "0.2.1"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "A boilerplate-free ad-hoc error type"}, + {modules, [snag]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/snag/src/snag.erl b/aoc2023/build/packages/snag/src/snag.erl new file mode 100644 index 0000000..a07f242 --- /dev/null +++ b/aoc2023/build/packages/snag/src/snag.erl @@ -0,0 +1,74 @@ +-module(snag). +-compile([no_auto_import, nowarn_unused_vars]). + +-export([new/1, error/1, layer/2, context/2, pretty_print/1, line_print/1]). +-export_type([snag/0]). + +-type snag() :: {snag, binary(), list(binary())}. + +-spec new(binary()) -> snag(). +new(Issue) -> + {snag, Issue, []}. + +-spec error(binary()) -> {ok, any()} | {error, snag()}. +error(Issue) -> + {error, new(Issue)}. + +-spec layer(snag(), binary()) -> snag(). +layer(Snag, Issue) -> + {snag, Issue, [erlang:element(2, Snag) | erlang:element(3, Snag)]}. + +-spec context({ok, EXX} | {error, snag()}, binary()) -> {ok, EXX} | + {error, snag()}. +context(Result, Issue) -> + case Result of + {ok, _} -> + Result; + + {error, Snag} -> + {error, layer(Snag, Issue)} + end. + +-spec pretty_print_cause(list(binary())) -> gleam@string_builder:string_builder(). +pretty_print_cause(Cause) -> + _pipe = Cause, + _pipe@1 = gleam@list:index_map( + _pipe, + fun(Index, Line) -> + gleam@string:concat( + [<<" "/utf8>>, + gleam@int:to_string(Index), + <<": "/utf8>>, + Line, + <<"\n"/utf8>>] + ) + end + ), + gleam@string_builder:from_strings(_pipe@1). + +-spec pretty_print(snag()) -> binary(). +pretty_print(Snag) -> + Builder = gleam@string_builder:from_strings( + [<<"error: "/utf8>>, erlang:element(2, Snag), <<"\n"/utf8>>] + ), + gleam@string_builder:to_string(case erlang:element(3, Snag) of + [] -> + Builder; + + Cause -> + _pipe = Builder, + _pipe@1 = gleam@string_builder:append( + _pipe, + <<"\ncause:\n"/utf8>> + ), + gleam@string_builder:append_builder( + _pipe@1, + pretty_print_cause(Cause) + ) + end). + +-spec line_print(snag()) -> binary(). +line_print(Snag) -> + _pipe = [gleam@string:append(<<"error: "/utf8>>, erlang:element(2, Snag)) | + erlang:element(3, Snag)], + gleam@string:join(_pipe, <<" <- "/utf8>>). diff --git a/aoc2023/build/packages/snag/src/snag.gleam b/aoc2023/build/packages/snag/src/snag.gleam new file mode 100644 index 0000000..8d39537 --- /dev/null +++ b/aoc2023/build/packages/snag/src/snag.gleam @@ -0,0 +1,141 @@ +import gleam +import gleam/string_builder +import gleam/string +import gleam/list +import gleam/int + +/// A Snag is a boilerplate-free error type that can be used to track why an +/// error happened, though does not store as much detail on specific errors as a +/// custom error type would. +/// +/// It is useful in code where it must either pass or fail, and when it fails we +/// want good debugging information to print to the user. i.e. Command line +/// tools, data processing pipelines, etc. +/// +/// If it not suited to code where the application needs to make a decision about +/// what to do in the event of an error, such as whether to give up or to try +/// again. i.e. Libraries, web application backends, API clients, etc. +/// In these situations it is recommended to create a custom type for your errors +/// as it can be pattern matched on and have any additional detail added as +/// fields. +pub type Snag { + Snag(issue: String, cause: List(String)) +} + +/// A concise alias for a `Result` that uses a `Snag` as the error value. +pub type Result(t) = + gleam.Result(t, Snag) + +/// Create a new `Snag` with the given issue text. +/// +/// See also the `error` function for creating a `Snag` wrapped in a `Result`. +/// +/// # Example +/// +/// ```gleam +/// > new("Not enough credit") +/// > |> line_print +/// "error: Not enough credit" +/// ``` +pub fn new(issue: String) -> Snag { + Snag(issue: issue, cause: []) +} + +/// Create a new `Snag` wrapped in a `Result` with the given issue text. +/// +/// # Example +/// +/// ```gleam +/// > error("Not enough credit") +/// Error(new("Not enough credit")) +/// ``` +pub fn error(issue: String) -> Result(success) { + Error(new(issue)) +} + +/// Add additional contextual information to a `Snag`. +/// +/// See also the `context` function for adding contextual information to a `Snag` +/// wrapped in a `Result`. +/// +/// # Example +/// +/// ```gleam +/// > new("Not enough credit") +/// > |> layer("Unable to make purchase") +/// > |> line_print +/// "error: Unable to make purchase <- Not enough credit" +/// ``` +pub fn layer(snag: Snag, issue: String) -> Snag { + Snag(issue: issue, cause: [snag.issue, ..snag.cause]) +} + +/// Add additional contextual information to a `Snag` wrapped in a `Result`. +/// +/// # Example +/// +/// ```gleam +/// > error("Not enough credit") +/// > |> context("Unable to make purchase") +/// > |> result.map_error(line_print) +/// Error("error: Unable to make purchase <- Not enough credit") +/// ``` +pub fn context(result: Result(success), issue: String) -> Result(success) { + case result { + Ok(_) -> result + Error(snag) -> Error(layer(snag, issue)) + } +} + +/// Turn a snag into a multi-line string, optimised for readability. +/// +/// # Example +/// +/// ```gleam +/// > new("Not enough credit") +/// > |> layer("Unable to make purchase") +/// > |> layer("Character creation failed") +/// > |> pretty_print +/// "error: Character creation failed +/// +/// cause: +/// 0: Unable to make purchase +/// 1: Not enough credit +/// " +/// ``` +pub fn pretty_print(snag: Snag) -> String { + let builder = string_builder.from_strings(["error: ", snag.issue, "\n"]) + + string_builder.to_string(case snag.cause { + [] -> builder + cause -> + builder + |> string_builder.append("\ncause:\n") + |> string_builder.append_builder(pretty_print_cause(cause)) + }) +} + +fn pretty_print_cause(cause) { + cause + |> list.index_map(fn(index, line) { + string.concat([" ", int.to_string(index), ": ", line, "\n"]) + }) + |> string_builder.from_strings +} + +/// Turn a snag into a single-line string, optimised for compactness. This may be +/// useful for logging snags. +/// +/// # Example +/// +/// ```gleam +/// > new("Not enough credit") +/// > |> layer("Unable to make purchase") +/// > |> layer("Character creation failed") +/// > |> pretty_print +/// "error: Character creation failed <- Unable to make purchase <- Not enough credit" +/// ``` +pub fn line_print(snag: Snag) -> String { + [string.append("error: ", snag.issue), ..snag.cause] + |> string.join(" <- ") +} diff --git a/aoc2023/build/packages/tom/README.md b/aoc2023/build/packages/tom/README.md new file mode 100644 index 0000000..e6adcbe --- /dev/null +++ b/aoc2023/build/packages/tom/README.md @@ -0,0 +1,47 @@ +# tom + +A Gleam TOML parser! + +[![Package Version](https://img.shields.io/hexpm/v/tom)](https://hex.pm/packages/tom) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/tom/) + + +```sh +gleam add tom +``` +```gleam +import tom + +const config = " + [person] + name = \"Lucy\" + is_cool = true +" + +pub fn main() { + // Parse a string of TOML + let assert Ok(parsed) = tom.parse(config) + + // Now you can work with the data directly, or you can use the `get_*` + // functions to retrieve values. + + tom.get_string(parsed, ["person", "name"]) + // -> Ok("Lucy") + + let is_cool = tom.get_bool(parsed, ["person", "is_cool"]) + // -> Ok(True) +} +``` + +Further documentation can be found at . + +## Status + +The following string escape sequences are not supported yet: + +- `\b` +- `\f` +- `\e` +- `\xHH` +- `\uHHHH` +- `\UHHHHHHHH` diff --git a/aoc2023/build/packages/tom/gleam.toml b/aoc2023/build/packages/tom/gleam.toml new file mode 100644 index 0000000..f131d09 --- /dev/null +++ b/aoc2023/build/packages/tom/gleam.toml @@ -0,0 +1,13 @@ +name = "tom" +version = "0.2.1" + +description = "A pure Gleam TOML parser!" +licences = ["Apache-2.0"] +repository = { type = "github", user = "lpil", repo = "tom" } +links = [{ title = "TOML website", href = "https://toml.io/en/" }] + +[dependencies] +gleam_stdlib = "~> 0.32" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl b/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl new file mode 100644 index 0000000..3b1e660 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl @@ -0,0 +1,5 @@ +-record(date_time_value, { + date :: tom:date(), + time :: tom:time(), + offset :: tom:offset() +}). diff --git a/aoc2023/build/packages/tom/include/tom_DateValue.hrl b/aoc2023/build/packages/tom/include/tom_DateValue.hrl new file mode 100644 index 0000000..c41f901 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_DateValue.hrl @@ -0,0 +1 @@ +-record(date_value, {year :: integer(), month :: integer(), day :: integer()}). diff --git a/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl b/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl new file mode 100644 index 0000000..930df26 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl @@ -0,0 +1 @@ +-record(key_already_in_use, {key :: list(binary())}). diff --git a/aoc2023/build/packages/tom/include/tom_NotFound.hrl b/aoc2023/build/packages/tom/include/tom_NotFound.hrl new file mode 100644 index 0000000..19c9a17 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_NotFound.hrl @@ -0,0 +1 @@ +-record(not_found, {key :: list(binary())}). diff --git a/aoc2023/build/packages/tom/include/tom_Offset.hrl b/aoc2023/build/packages/tom/include/tom_Offset.hrl new file mode 100644 index 0000000..a58a8e1 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_Offset.hrl @@ -0,0 +1,5 @@ +-record(offset, { + direction :: tom:sign(), + hours :: integer(), + minutes :: integer() +}). diff --git a/aoc2023/build/packages/tom/include/tom_TimeValue.hrl b/aoc2023/build/packages/tom/include/tom_TimeValue.hrl new file mode 100644 index 0000000..e1275de --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_TimeValue.hrl @@ -0,0 +1,6 @@ +-record(time_value, { + hour :: integer(), + minute :: integer(), + second :: integer(), + millisecond :: integer() +}). diff --git a/aoc2023/build/packages/tom/include/tom_Unexpected.hrl b/aoc2023/build/packages/tom/include/tom_Unexpected.hrl new file mode 100644 index 0000000..ab1091c --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_Unexpected.hrl @@ -0,0 +1 @@ +-record(unexpected, {got :: binary(), expected :: binary()}). diff --git a/aoc2023/build/packages/tom/include/tom_WrongType.hrl b/aoc2023/build/packages/tom/include/tom_WrongType.hrl new file mode 100644 index 0000000..ae57352 --- /dev/null +++ b/aoc2023/build/packages/tom/include/tom_WrongType.hrl @@ -0,0 +1,5 @@ +-record(wrong_type, { + key :: list(binary()), + expected :: binary(), + got :: binary() +}). diff --git a/aoc2023/build/packages/tom/src/tom.app.src b/aoc2023/build/packages/tom/src/tom.app.src new file mode 100644 index 0000000..051649c --- /dev/null +++ b/aoc2023/build/packages/tom/src/tom.app.src @@ -0,0 +1,8 @@ +{application, tom, [ + {vsn, "0.2.1"}, + {applications, [gleam_stdlib, + gleeunit]}, + {description, "A pure Gleam TOML parser!"}, + {modules, [tom]}, + {registered, []} +]}. diff --git a/aoc2023/build/packages/tom/src/tom.erl b/aoc2023/build/packages/tom/src/tom.erl new file mode 100644 index 0000000..4f5c071 --- /dev/null +++ b/aoc2023/build/packages/tom/src/tom.erl @@ -0,0 +1,2140 @@ +-module(tom). +-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). + +-export([get/2, get_int/2, get_float/2, get_bool/2, get_string/2, get_date/2, get_time/2, get_date_time/2, get_array/2, get_table/2, get_number/2, parse/1]). +-export_type([toml/0, date_time/0, date/0, time/0, offset/0, sign/0, parse_error/0, number_/0, get_error/0]). + +-type toml() :: {int, integer()} | + {float, float()} | + {infinity, sign()} | + {nan, sign()} | + {bool, boolean()} | + {string, binary()} | + {date, date()} | + {time, time()} | + {date_time, date_time()} | + {array, list(toml())} | + {array_of_tables, list(gleam@map:map_(binary(), toml()))} | + {table, gleam@map:map_(binary(), toml())} | + {inline_table, gleam@map:map_(binary(), toml())}. + +-type date_time() :: {date_time_value, date(), time(), offset()}. + +-type date() :: {date_value, integer(), integer(), integer()}. + +-type time() :: {time_value, integer(), integer(), integer(), integer()}. + +-type offset() :: local | {offset, sign(), integer(), integer()}. + +-type sign() :: positive | negative. + +-type parse_error() :: {unexpected, binary(), binary()} | + {key_already_in_use, list(binary())}. + +-type number_() :: {number_int, integer()} | + {number_float, float()} | + {number_infinity, sign()} | + {number_nan, sign()}. + +-type get_error() :: {not_found, list(binary())} | + {wrong_type, list(binary()), binary(), binary()}. + +-spec classify(toml()) -> binary(). +classify(Toml) -> + case Toml of + {int, _} -> + <<"Int"/utf8>>; + + {float, _} -> + <<"Float"/utf8>>; + + {nan, positive} -> + <<"NaN"/utf8>>; + + {nan, negative} -> + <<"Negative NaN"/utf8>>; + + {infinity, positive} -> + <<"Infinity"/utf8>>; + + {infinity, negative} -> + <<"Negative Infinity"/utf8>>; + + {bool, _} -> + <<"Bool"/utf8>>; + + {string, _} -> + <<"String"/utf8>>; + + {date, _} -> + <<"Date"/utf8>>; + + {time, _} -> + <<"Time"/utf8>>; + + {date_time, _} -> + <<"DateTime"/utf8>>; + + {array, _} -> + <<"Array"/utf8>>; + + {array_of_tables, _} -> + <<"Array"/utf8>>; + + {table, _} -> + <<"Table"/utf8>>; + + {inline_table, _} -> + <<"Table"/utf8>> + end. + +-spec push_key({ok, FIU} | {error, get_error()}, binary()) -> {ok, FIU} | + {error, get_error()}. +push_key(Result, Key) -> + case Result of + {ok, T} -> + {ok, T}; + + {error, {not_found, Path}} -> + {error, {not_found, [Key | Path]}}; + + {error, {wrong_type, Path@1, Expected, Got}} -> + {error, {wrong_type, [Key | Path@1], Expected, Got}} + end. + +-spec get(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, toml()} | + {error, get_error()}. +get(Toml, Key) -> + case Key of + [] -> + {error, {not_found, []}}; + + [K] -> + gleam@result:replace_error(gleam@map:get(Toml, K), {not_found, [K]}); + + [K@1 | Key@1] -> + case gleam@map:get(Toml, K@1) of + {ok, {table, T}} -> + push_key(get(T, Key@1), K@1); + + {ok, Other} -> + {error, + {wrong_type, [K@1], <<"Table"/utf8>>, classify(Other)}}; + + {error, _} -> + {error, {not_found, [K@1]}} + end + end. + +-spec get_int(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + integer()} | + {error, get_error()}. +get_int(Toml, Key) -> + case get(Toml, Key) of + {ok, {int, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Int"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_float(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + float()} | + {error, get_error()}. +get_float(Toml, Key) -> + case get(Toml, Key) of + {ok, {float, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Float"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_bool(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + boolean()} | + {error, get_error()}. +get_bool(Toml, Key) -> + case get(Toml, Key) of + {ok, {bool, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Bool"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_string(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + binary()} | + {error, get_error()}. +get_string(Toml, Key) -> + case get(Toml, Key) of + {ok, {string, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"String"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_date(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, date()} | + {error, get_error()}. +get_date(Toml, Key) -> + case get(Toml, Key) of + {ok, {date, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Date"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_time(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, time()} | + {error, get_error()}. +get_time(Toml, Key) -> + case get(Toml, Key) of + {ok, {time, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Time"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_date_time(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + date_time()} | + {error, get_error()}. +get_date_time(Toml, Key) -> + case get(Toml, Key) of + {ok, {date_time, I}} -> + {ok, I}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"DateTime"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_array(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + list(toml())} | + {error, get_error()}. +get_array(Toml, Key) -> + case get(Toml, Key) of + {ok, {array, I}} -> + {ok, I}; + + {ok, {array_of_tables, I@1}} -> + {ok, gleam@list:map(I@1, fun(Field@0) -> {table, Field@0} end)}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Array"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_table(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + gleam@map:map_(binary(), toml())} | + {error, get_error()}. +get_table(Toml, Key) -> + case get(Toml, Key) of + {ok, {table, I}} -> + {ok, I}; + + {ok, {inline_table, I@1}} -> + {ok, I@1}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Table"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec get_number(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, + number_()} | + {error, get_error()}. +get_number(Toml, Key) -> + case get(Toml, Key) of + {ok, {int, X}} -> + {ok, {number_int, X}}; + + {ok, {float, X@1}} -> + {ok, {number_float, X@1}}; + + {ok, {nan, X@2}} -> + {ok, {number_nan, X@2}}; + + {ok, {infinity, X@3}} -> + {ok, {number_infinity, X@3}}; + + {ok, Other} -> + {error, {wrong_type, Key, <<"Number"/utf8>>, classify(Other)}}; + + {error, E} -> + {error, E} + end. + +-spec merge(gleam@map:map_(binary(), toml()), binary(), toml(), toml()) -> {ok, + gleam@map:map_(binary(), toml())} | + {error, list(binary())}. +merge(Table, Key, Old, New) -> + case {Old, New} of + {{array_of_tables, Tables}, {array_of_tables, New@1}} -> + {ok, + gleam@map:insert( + Table, + Key, + {array_of_tables, gleam@list:append(New@1, Tables)} + )}; + + {_, _} -> + {error, [Key]} + end. + +-spec insert_loop(gleam@map:map_(binary(), toml()), list(binary()), toml()) -> {ok, + gleam@map:map_(binary(), toml())} | + {error, list(binary())}. +insert_loop(Table, Key, Value) -> + case Key of + [] -> + erlang:error(#{gleam_error => panic, + message => <<"unreachable"/utf8>>, + module => <<"tom"/utf8>>, + function => <<"insert_loop"/utf8>>, + line => 511}); + + [K] -> + case gleam@map:get(Table, K) of + {error, nil} -> + {ok, gleam@map:insert(Table, K, Value)}; + + {ok, Old} -> + merge(Table, K, Old, Value) + end; + + [K@1 | Key@1] -> + case gleam@map:get(Table, K@1) of + {error, nil} -> + case insert_loop(gleam@map:new(), Key@1, Value) of + {ok, Inner} -> + {ok, gleam@map:insert(Table, K@1, {table, Inner})}; + + {error, Path} -> + {error, [K@1 | Path]} + end; + + {ok, {array_of_tables, [Inner@1 | Rest]}} -> + case insert_loop(Inner@1, Key@1, Value) of + {ok, Inner@2} -> + {ok, + gleam@map:insert( + Table, + K@1, + {array_of_tables, [Inner@2 | Rest]} + )}; + + {error, Path@1} -> + {error, [K@1 | Path@1]} + end; + + {ok, {table, Inner@3}} -> + case insert_loop(Inner@3, Key@1, Value) of + {ok, Inner@4} -> + {ok, gleam@map:insert(Table, K@1, {table, Inner@4})}; + + {error, Path@2} -> + {error, [K@1 | Path@2]} + end; + + {ok, _} -> + {error, [K@1]} + end + end. + +-spec insert(gleam@map:map_(binary(), toml()), list(binary()), toml()) -> {ok, + gleam@map:map_(binary(), toml())} | + {error, parse_error()}. +insert(Table, Key, Value) -> + case insert_loop(Table, Key, Value) of + {ok, Table@1} -> + {ok, Table@1}; + + {error, Path} -> + {error, {key_already_in_use, Path}} + end. + +-spec expect_end_of_line( + list(binary()), + fun((list(binary())) -> {ok, {FKZ, list(binary())}} | {error, parse_error()}) +) -> {ok, {FKZ, list(binary())}} | {error, parse_error()}. +expect_end_of_line(Input, Next) -> + case Input of + [<<"\n"/utf8>> | Input@1] -> + Next(Input@1); + + [<<"\r\n"/utf8>> | Input@2] -> + Next(Input@2); + + [G | _] -> + {error, {unexpected, G, <<"\n"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\n"/utf8>>}} + end. + +-spec parse_key_quoted(list(binary()), binary(), binary()) -> {ok, + {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_quoted(Input, Close, Name) -> + case Input of + [G | Input@1] when G =:= Close -> + {ok, {Name, Input@1}}; + + [G@1 | Input@2] -> + parse_key_quoted(Input@2, Close, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Close}} + end. + +-spec parse_key_bare(list(binary()), binary()) -> {ok, + {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_bare(Input, Name) -> + case Input of + [<<" "/utf8>> | Input@1] when Name =/= <<""/utf8>> -> + {ok, {Name, Input@1}}; + + [<<"="/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<"."/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<"]"/utf8>> | _] when Name =/= <<""/utf8>> -> + {ok, {Name, Input}}; + + [<<","/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<","/utf8>>, <<"="/utf8>>}}; + + [<<"\n"/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<"\n"/utf8>>, <<"="/utf8>>}}; + + [<<"\r\n"/utf8>> | _] when Name =/= <<""/utf8>> -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"="/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"key"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"key"/utf8>>}}; + + [<<"]"/utf8>> | _] -> + {error, {unexpected, <<"]"/utf8>>, <<"key"/utf8>>}}; + + [<<","/utf8>> | _] -> + {error, {unexpected, <<","/utf8>>, <<"key"/utf8>>}}; + + [G | Input@2] -> + parse_key_bare(Input@2, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"key"/utf8>>}} + end. + +-spec skip_line_whitespace(list(binary())) -> list(binary()). +skip_line_whitespace(Input) -> + gleam@list:drop_while( + Input, + fun(G) -> (G =:= <<" "/utf8>>) orelse (G =:= <<"\t"/utf8>>) end + ). + +-spec parse_key_segment(list(binary())) -> {ok, {binary(), list(binary())}} | + {error, parse_error()}. +parse_key_segment(Input) -> + Input@1 = skip_line_whitespace(Input), + case Input@1 of + [<<"="/utf8>> | _] -> + {error, {unexpected, <<"="/utf8>>, <<"Key"/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"Key"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"Key"/utf8>>}}; + + [<<"["/utf8>> | _] -> + {error, {unexpected, <<"["/utf8>>, <<"Key"/utf8>>}}; + + [<<"\""/utf8>> | Input@2] -> + parse_key_quoted(Input@2, <<"\""/utf8>>, <<""/utf8>>); + + [<<"'"/utf8>> | Input@3] -> + parse_key_quoted(Input@3, <<"'"/utf8>>, <<""/utf8>>); + + _ -> + parse_key_bare(Input@1, <<""/utf8>>) + end. + +-spec skip_whitespace(list(binary())) -> list(binary()). +skip_whitespace(Input) -> + case Input of + [<<" "/utf8>> | Input@1] -> + skip_whitespace(Input@1); + + [<<"\t"/utf8>> | Input@2] -> + skip_whitespace(Input@2); + + [<<"\n"/utf8>> | Input@3] -> + skip_whitespace(Input@3); + + [<<"\r\n"/utf8>> | Input@4] -> + skip_whitespace(Input@4); + + Input@5 -> + Input@5 + end. + +-spec drop_comments(list(binary()), list(binary())) -> list(binary()). +drop_comments(Input, Acc) -> + case Input of + [<<"#"/utf8>> | Input@1] -> + _pipe = Input@1, + _pipe@1 = gleam@list:drop_while( + _pipe, + fun(G) -> G /= <<"\n"/utf8>> end + ), + drop_comments(_pipe@1, Acc); + + [G@1 | Input@2] -> + drop_comments(Input@2, [G@1 | Acc]); + + [] -> + gleam@list:reverse(Acc) + end. + +-spec do( + {ok, {FLK, list(binary())}} | {error, parse_error()}, + fun((FLK, list(binary())) -> {ok, FLN} | {error, parse_error()}) +) -> {ok, FLN} | {error, parse_error()}. +do(Result, Next) -> + case Result of + {ok, {A, Input}} -> + Next(A, Input); + + {error, E} -> + {error, E} + end. + +-spec parse_key(list(binary()), list(binary())) -> {ok, + {list(binary()), list(binary())}} | + {error, parse_error()}. +parse_key(Input, Segments) -> + do( + parse_key_segment(Input), + fun(Segment, Input@1) -> + Segments@1 = [Segment | Segments], + Input@2 = skip_line_whitespace(Input@1), + case Input@2 of + [<<"."/utf8>> | Input@3] -> + parse_key(Input@3, Segments@1); + + _ -> + {ok, {gleam@list:reverse(Segments@1), Input@2}} + end + end + ). + +-spec expect( + list(binary()), + binary(), + fun((list(binary())) -> {ok, {FLS, list(binary())}} | {error, parse_error()}) +) -> {ok, {FLS, list(binary())}} | {error, parse_error()}. +expect(Input, Expected, Next) -> + case Input of + [G | Input@1] when G =:= Expected -> + Next(Input@1); + + [G@1 | _] -> + {error, {unexpected, G@1, Expected}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Expected}} + end. + +-spec parse_table_header(list(binary())) -> {ok, + {list(binary()), list(binary())}} | + {error, parse_error()}. +parse_table_header(Input) -> + Input@1 = skip_line_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + expect( + Input@2, + <<"]"/utf8>>, + fun(Input@3) -> + Input@4 = skip_line_whitespace(Input@3), + expect_end_of_line( + Input@4, + fun(Input@5) -> {ok, {Key, Input@5}} end + ) + end + ) + end + ). + +-spec parse_hex(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_hex(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_hex(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_hex(Input@2, (Number * 16) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_hex(Input@3, (Number * 16) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_hex(Input@4, (Number * 16) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_hex(Input@5, (Number * 16) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_hex(Input@6, (Number * 16) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_hex(Input@7, (Number * 16) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_hex(Input@8, (Number * 16) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_hex(Input@9, (Number * 16) + 7, Sign); + + [<<"8"/utf8>> | Input@10] -> + parse_hex(Input@10, (Number * 16) + 8, Sign); + + [<<"9"/utf8>> | Input@11] -> + parse_hex(Input@11, (Number * 16) + 9, Sign); + + [<<"a"/utf8>> | Input@12] -> + parse_hex(Input@12, (Number * 16) + 10, Sign); + + [<<"b"/utf8>> | Input@13] -> + parse_hex(Input@13, (Number * 16) + 11, Sign); + + [<<"c"/utf8>> | Input@14] -> + parse_hex(Input@14, (Number * 16) + 12, Sign); + + [<<"d"/utf8>> | Input@15] -> + parse_hex(Input@15, (Number * 16) + 13, Sign); + + [<<"e"/utf8>> | Input@16] -> + parse_hex(Input@16, (Number * 16) + 14, Sign); + + [<<"f"/utf8>> | Input@17] -> + parse_hex(Input@17, (Number * 16) + 15, Sign); + + [<<"A"/utf8>> | Input@18] -> + parse_hex(Input@18, (Number * 16) + 10, Sign); + + [<<"B"/utf8>> | Input@19] -> + parse_hex(Input@19, (Number * 16) + 11, Sign); + + [<<"C"/utf8>> | Input@20] -> + parse_hex(Input@20, (Number * 16) + 12, Sign); + + [<<"D"/utf8>> | Input@21] -> + parse_hex(Input@21, (Number * 16) + 13, Sign); + + [<<"E"/utf8>> | Input@22] -> + parse_hex(Input@22, (Number * 16) + 14, Sign); + + [<<"F"/utf8>> | Input@23] -> + parse_hex(Input@23, (Number * 16) + 15, Sign); + + Input@24 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@24}} + end. + +-spec parse_octal(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_octal(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_octal(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_octal(Input@2, (Number * 8) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_octal(Input@3, (Number * 8) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_octal(Input@4, (Number * 8) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_octal(Input@5, (Number * 8) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_octal(Input@6, (Number * 8) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_octal(Input@7, (Number * 8) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_octal(Input@8, (Number * 8) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_octal(Input@9, (Number * 8) + 7, Sign); + + Input@10 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@10}} + end. + +-spec parse_binary(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_binary(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_binary(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_binary(Input@2, (Number * 2) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_binary(Input@3, (Number * 2) + 1, Sign); + + Input@4 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@4}} + end. + +-spec parse_exponent(list(binary()), float(), sign(), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_exponent(Input, N, N_sign, Ex, Ex_sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_exponent(Input@1, N, N_sign, Ex, Ex_sign); + + [<<"0"/utf8>> | Input@2] -> + parse_exponent(Input@2, N, N_sign, Ex * 10, Ex_sign); + + [<<"1"/utf8>> | Input@3] -> + parse_exponent(Input@3, N, N_sign, (Ex * 10) + 1, Ex_sign); + + [<<"2"/utf8>> | Input@4] -> + parse_exponent(Input@4, N, N_sign, (Ex * 10) + 2, Ex_sign); + + [<<"3"/utf8>> | Input@5] -> + parse_exponent(Input@5, N, N_sign, (Ex * 10) + 3, Ex_sign); + + [<<"4"/utf8>> | Input@6] -> + parse_exponent(Input@6, N, N_sign, (Ex * 10) + 4, Ex_sign); + + [<<"5"/utf8>> | Input@7] -> + parse_exponent(Input@7, N, N_sign, (Ex * 10) + 5, Ex_sign); + + [<<"6"/utf8>> | Input@8] -> + parse_exponent(Input@8, N, N_sign, (Ex * 10) + 6, Ex_sign); + + [<<"7"/utf8>> | Input@9] -> + parse_exponent(Input@9, N, N_sign, (Ex * 10) + 7, Ex_sign); + + [<<"8"/utf8>> | Input@10] -> + parse_exponent(Input@10, N, N_sign, (Ex * 10) + 8, Ex_sign); + + [<<"9"/utf8>> | Input@11] -> + parse_exponent(Input@11, N, N_sign, (Ex * 10) + 9, Ex_sign); + + Input@12 -> + Number = case N_sign of + positive -> + N; + + negative -> + N * -1.0 + end, + Exponent = gleam@int:to_float(case Ex_sign of + positive -> + Ex; + + negative -> + - Ex + end), + Multiplier@1 = case gleam@float:power(10.0, Exponent) of + {ok, Multiplier} -> + Multiplier; + + {error, _} -> + 1.0 + end, + {ok, {{float, Number * Multiplier@1}, Input@12}} + end. + +-spec parse_float(list(binary()), float(), sign(), float()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_float(Input, Number, Sign, Unit) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_float(Input@1, Number, Sign, Unit); + + [<<"0"/utf8>> | Input@2] -> + parse_float(Input@2, Number, Sign, Unit * 0.1); + + [<<"1"/utf8>> | Input@3] -> + parse_float(Input@3, Number + (1.0 * Unit), Sign, Unit * 0.1); + + [<<"2"/utf8>> | Input@4] -> + parse_float(Input@4, Number + (2.0 * Unit), Sign, Unit * 0.1); + + [<<"3"/utf8>> | Input@5] -> + parse_float(Input@5, Number + (3.0 * Unit), Sign, Unit * 0.1); + + [<<"4"/utf8>> | Input@6] -> + parse_float(Input@6, Number + (4.0 * Unit), Sign, Unit * 0.1); + + [<<"5"/utf8>> | Input@7] -> + parse_float(Input@7, Number + (5.0 * Unit), Sign, Unit * 0.1); + + [<<"6"/utf8>> | Input@8] -> + parse_float(Input@8, Number + (6.0 * Unit), Sign, Unit * 0.1); + + [<<"7"/utf8>> | Input@9] -> + parse_float(Input@9, Number + (7.0 * Unit), Sign, Unit * 0.1); + + [<<"8"/utf8>> | Input@10] -> + parse_float(Input@10, Number + (8.0 * Unit), Sign, Unit * 0.1); + + [<<"9"/utf8>> | Input@11] -> + parse_float(Input@11, Number + (9.0 * Unit), Sign, Unit * 0.1); + + [<<"e"/utf8>>, <<"+"/utf8>> | Input@12] -> + parse_exponent(Input@12, Number, Sign, 0, positive); + + [<<"e"/utf8>>, <<"-"/utf8>> | Input@13] -> + parse_exponent(Input@13, Number, Sign, 0, negative); + + [<<"e"/utf8>> | Input@14] -> + parse_exponent(Input@14, Number, Sign, 0, positive); + + [<<"E"/utf8>>, <<"+"/utf8>> | Input@15] -> + parse_exponent(Input@15, Number, Sign, 0, positive); + + [<<"E"/utf8>>, <<"-"/utf8>> | Input@16] -> + parse_exponent(Input@16, Number, Sign, 0, negative); + + [<<"E"/utf8>> | Input@17] -> + parse_exponent(Input@17, Number, Sign, 0, positive); + + Input@18 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + Number * -1.0 + end, + {ok, {{float, Number@1}, Input@18}} + end. + +-spec parse_string(list(binary()), binary()) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_string(Input, String) -> + case Input of + [<<"\""/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\\"/utf8>>, <<"t"/utf8>> | Input@2] -> + parse_string(Input@2, <>); + + [<<"\\"/utf8>>, <<"n"/utf8>> | Input@3] -> + parse_string(Input@3, <>); + + [<<"\\"/utf8>>, <<"r"/utf8>> | Input@4] -> + parse_string(Input@4, <>); + + [<<"\\"/utf8>>, <<"\""/utf8>> | Input@5] -> + parse_string(Input@5, <>); + + [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@6] -> + parse_string(Input@6, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"\""/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"\""/utf8>>}}; + + [G | Input@7] -> + parse_string(Input@7, <>) + end. + +-spec parse_multi_line_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_multi_line_string(Input, String) -> + case Input of + [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\\"/utf8>>, <<"\n"/utf8>> | Input@2] -> + parse_multi_line_string(skip_whitespace(Input@2), String); + + [<<"\\"/utf8>>, <<"\r\n"/utf8>> | Input@3] -> + parse_multi_line_string(skip_whitespace(Input@3), String); + + [<<"\r\n"/utf8>> | Input@4] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@4, String); + + [<<"\n"/utf8>> | Input@5] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@5, String); + + [<<"\r\n"/utf8>> | Input@6] when String =:= <<""/utf8>> -> + parse_multi_line_string(Input@6, String); + + [<<"\\"/utf8>>, <<"t"/utf8>> | Input@7] -> + parse_multi_line_string(Input@7, <>); + + [<<"\\"/utf8>>, <<"n"/utf8>> | Input@8] -> + parse_multi_line_string(Input@8, <>); + + [<<"\\"/utf8>>, <<"r"/utf8>> | Input@9] -> + parse_multi_line_string(Input@9, <>); + + [<<"\\"/utf8>>, <<"\""/utf8>> | Input@10] -> + parse_multi_line_string(Input@10, <>); + + [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@11] -> + parse_multi_line_string(Input@11, <>); + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [G | Input@12] -> + parse_multi_line_string(Input@12, <>) + end. + +-spec parse_multi_line_literal_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_multi_line_literal_string(Input, String) -> + case Input of + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | _] -> + {error, {unexpected, <<"''''"/utf8>>, <<"'''"/utf8>>}}; + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [<<"\n"/utf8>> | Input@2] when String =:= <<""/utf8>> -> + parse_multi_line_literal_string(Input@2, String); + + [<<"\r\n"/utf8>> | Input@3] when String =:= <<""/utf8>> -> + parse_multi_line_literal_string(Input@3, String); + + [G | Input@4] -> + parse_multi_line_literal_string( + Input@4, + <> + ) + end. + +-spec parse_literal_string(list(binary()), binary()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_literal_string(Input, String) -> + case Input of + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; + + [<<"\n"/utf8>> | _] -> + {error, {unexpected, <<"\n"/utf8>>, <<"'"/utf8>>}}; + + [<<"\r\n"/utf8>> | _] -> + {error, {unexpected, <<"\r\n"/utf8>>, <<"'"/utf8>>}}; + + [<<"'"/utf8>> | Input@1] -> + {ok, {{string, String}, Input@1}}; + + [G | Input@2] -> + parse_literal_string(Input@2, <>) + end. + +-spec parse_time_ms(list(binary()), integer(), integer()) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_time_ms(Input, Seconds, Ms) -> + case Input of + [<<"0"/utf8>> | Input@1] when Ms < 100000 -> + parse_time_ms(Input@1, Seconds, (Ms * 10) + 0); + + [<<"1"/utf8>> | Input@2] when Ms < 100000 -> + parse_time_ms(Input@2, Seconds, (Ms * 10) + 1); + + [<<"2"/utf8>> | Input@3] when Ms < 100000 -> + parse_time_ms(Input@3, Seconds, (Ms * 10) + 2); + + [<<"3"/utf8>> | Input@4] when Ms < 100000 -> + parse_time_ms(Input@4, Seconds, (Ms * 10) + 3); + + [<<"4"/utf8>> | Input@5] when Ms < 100000 -> + parse_time_ms(Input@5, Seconds, (Ms * 10) + 4); + + [<<"5"/utf8>> | Input@6] when Ms < 100000 -> + parse_time_ms(Input@6, Seconds, (Ms * 10) + 5); + + [<<"6"/utf8>> | Input@7] when Ms < 100000 -> + parse_time_ms(Input@7, Seconds, (Ms * 10) + 6); + + [<<"7"/utf8>> | Input@8] when Ms < 100000 -> + parse_time_ms(Input@8, Seconds, (Ms * 10) + 7); + + [<<"8"/utf8>> | Input@9] when Ms < 100000 -> + parse_time_ms(Input@9, Seconds, (Ms * 10) + 8); + + [<<"9"/utf8>> | Input@10] when Ms < 100000 -> + parse_time_ms(Input@10, Seconds, (Ms * 10) + 9); + + _ -> + {ok, {{Seconds, Ms}, Input}} + end. + +-spec parse_number_under_60(list(binary()), binary()) -> {ok, + {integer(), list(binary())}} | + {error, parse_error()}. +parse_number_under_60(Input, Expected) -> + case Input of + [<<"0"/utf8>>, <<"0"/utf8>> | Input@1] -> + {ok, {0, Input@1}}; + + [<<"0"/utf8>>, <<"1"/utf8>> | Input@2] -> + {ok, {1, Input@2}}; + + [<<"0"/utf8>>, <<"2"/utf8>> | Input@3] -> + {ok, {2, Input@3}}; + + [<<"0"/utf8>>, <<"3"/utf8>> | Input@4] -> + {ok, {3, Input@4}}; + + [<<"0"/utf8>>, <<"4"/utf8>> | Input@5] -> + {ok, {4, Input@5}}; + + [<<"0"/utf8>>, <<"5"/utf8>> | Input@6] -> + {ok, {5, Input@6}}; + + [<<"0"/utf8>>, <<"6"/utf8>> | Input@7] -> + {ok, {6, Input@7}}; + + [<<"0"/utf8>>, <<"7"/utf8>> | Input@8] -> + {ok, {7, Input@8}}; + + [<<"0"/utf8>>, <<"8"/utf8>> | Input@9] -> + {ok, {8, Input@9}}; + + [<<"0"/utf8>>, <<"9"/utf8>> | Input@10] -> + {ok, {9, Input@10}}; + + [<<"1"/utf8>>, <<"0"/utf8>> | Input@11] -> + {ok, {10, Input@11}}; + + [<<"1"/utf8>>, <<"1"/utf8>> | Input@12] -> + {ok, {11, Input@12}}; + + [<<"1"/utf8>>, <<"2"/utf8>> | Input@13] -> + {ok, {12, Input@13}}; + + [<<"1"/utf8>>, <<"3"/utf8>> | Input@14] -> + {ok, {13, Input@14}}; + + [<<"1"/utf8>>, <<"4"/utf8>> | Input@15] -> + {ok, {14, Input@15}}; + + [<<"1"/utf8>>, <<"5"/utf8>> | Input@16] -> + {ok, {15, Input@16}}; + + [<<"1"/utf8>>, <<"6"/utf8>> | Input@17] -> + {ok, {16, Input@17}}; + + [<<"1"/utf8>>, <<"7"/utf8>> | Input@18] -> + {ok, {17, Input@18}}; + + [<<"1"/utf8>>, <<"8"/utf8>> | Input@19] -> + {ok, {18, Input@19}}; + + [<<"1"/utf8>>, <<"9"/utf8>> | Input@20] -> + {ok, {19, Input@20}}; + + [<<"2"/utf8>>, <<"0"/utf8>> | Input@21] -> + {ok, {20, Input@21}}; + + [<<"2"/utf8>>, <<"1"/utf8>> | Input@22] -> + {ok, {21, Input@22}}; + + [<<"2"/utf8>>, <<"2"/utf8>> | Input@23] -> + {ok, {22, Input@23}}; + + [<<"2"/utf8>>, <<"3"/utf8>> | Input@24] -> + {ok, {23, Input@24}}; + + [<<"2"/utf8>>, <<"4"/utf8>> | Input@25] -> + {ok, {24, Input@25}}; + + [<<"2"/utf8>>, <<"5"/utf8>> | Input@26] -> + {ok, {25, Input@26}}; + + [<<"2"/utf8>>, <<"6"/utf8>> | Input@27] -> + {ok, {26, Input@27}}; + + [<<"2"/utf8>>, <<"7"/utf8>> | Input@28] -> + {ok, {27, Input@28}}; + + [<<"2"/utf8>>, <<"8"/utf8>> | Input@29] -> + {ok, {28, Input@29}}; + + [<<"2"/utf8>>, <<"9"/utf8>> | Input@30] -> + {ok, {29, Input@30}}; + + [<<"3"/utf8>>, <<"0"/utf8>> | Input@31] -> + {ok, {30, Input@31}}; + + [<<"3"/utf8>>, <<"1"/utf8>> | Input@32] -> + {ok, {31, Input@32}}; + + [<<"3"/utf8>>, <<"2"/utf8>> | Input@33] -> + {ok, {32, Input@33}}; + + [<<"3"/utf8>>, <<"3"/utf8>> | Input@34] -> + {ok, {33, Input@34}}; + + [<<"3"/utf8>>, <<"4"/utf8>> | Input@35] -> + {ok, {34, Input@35}}; + + [<<"3"/utf8>>, <<"5"/utf8>> | Input@36] -> + {ok, {35, Input@36}}; + + [<<"3"/utf8>>, <<"6"/utf8>> | Input@37] -> + {ok, {36, Input@37}}; + + [<<"3"/utf8>>, <<"7"/utf8>> | Input@38] -> + {ok, {37, Input@38}}; + + [<<"3"/utf8>>, <<"8"/utf8>> | Input@39] -> + {ok, {38, Input@39}}; + + [<<"3"/utf8>>, <<"9"/utf8>> | Input@40] -> + {ok, {39, Input@40}}; + + [<<"4"/utf8>>, <<"0"/utf8>> | Input@41] -> + {ok, {40, Input@41}}; + + [<<"4"/utf8>>, <<"1"/utf8>> | Input@42] -> + {ok, {41, Input@42}}; + + [<<"4"/utf8>>, <<"2"/utf8>> | Input@43] -> + {ok, {42, Input@43}}; + + [<<"4"/utf8>>, <<"3"/utf8>> | Input@44] -> + {ok, {43, Input@44}}; + + [<<"4"/utf8>>, <<"4"/utf8>> | Input@45] -> + {ok, {44, Input@45}}; + + [<<"4"/utf8>>, <<"5"/utf8>> | Input@46] -> + {ok, {45, Input@46}}; + + [<<"4"/utf8>>, <<"6"/utf8>> | Input@47] -> + {ok, {46, Input@47}}; + + [<<"4"/utf8>>, <<"7"/utf8>> | Input@48] -> + {ok, {47, Input@48}}; + + [<<"4"/utf8>>, <<"8"/utf8>> | Input@49] -> + {ok, {48, Input@49}}; + + [<<"4"/utf8>>, <<"9"/utf8>> | Input@50] -> + {ok, {49, Input@50}}; + + [<<"5"/utf8>>, <<"0"/utf8>> | Input@51] -> + {ok, {50, Input@51}}; + + [<<"5"/utf8>>, <<"1"/utf8>> | Input@52] -> + {ok, {51, Input@52}}; + + [<<"5"/utf8>>, <<"2"/utf8>> | Input@53] -> + {ok, {52, Input@53}}; + + [<<"5"/utf8>>, <<"3"/utf8>> | Input@54] -> + {ok, {53, Input@54}}; + + [<<"5"/utf8>>, <<"4"/utf8>> | Input@55] -> + {ok, {54, Input@55}}; + + [<<"5"/utf8>>, <<"5"/utf8>> | Input@56] -> + {ok, {55, Input@56}}; + + [<<"5"/utf8>>, <<"6"/utf8>> | Input@57] -> + {ok, {56, Input@57}}; + + [<<"5"/utf8>>, <<"7"/utf8>> | Input@58] -> + {ok, {57, Input@58}}; + + [<<"5"/utf8>>, <<"8"/utf8>> | Input@59] -> + {ok, {58, Input@59}}; + + [<<"5"/utf8>>, <<"9"/utf8>> | Input@60] -> + {ok, {59, Input@60}}; + + [G | _] -> + {error, {unexpected, G, Expected}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, Expected}} + end. + +-spec parse_hour_minute(list(binary())) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_hour_minute(Input) -> + do(case Input of + [<<"0"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@1] -> + {ok, {0, Input@1}}; + + [<<"0"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@2] -> + {ok, {1, Input@2}}; + + [<<"0"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@3] -> + {ok, {2, Input@3}}; + + [<<"0"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@4] -> + {ok, {3, Input@4}}; + + [<<"0"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@5] -> + {ok, {4, Input@5}}; + + [<<"0"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@6] -> + {ok, {5, Input@6}}; + + [<<"0"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@7] -> + {ok, {6, Input@7}}; + + [<<"0"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@8] -> + {ok, {7, Input@8}}; + + [<<"0"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@9] -> + {ok, {8, Input@9}}; + + [<<"0"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@10] -> + {ok, {9, Input@10}}; + + [<<"1"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@11] -> + {ok, {10, Input@11}}; + + [<<"1"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@12] -> + {ok, {11, Input@12}}; + + [<<"1"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@13] -> + {ok, {12, Input@13}}; + + [<<"1"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@14] -> + {ok, {13, Input@14}}; + + [<<"1"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@15] -> + {ok, {14, Input@15}}; + + [<<"1"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@16] -> + {ok, {15, Input@16}}; + + [<<"1"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@17] -> + {ok, {16, Input@17}}; + + [<<"1"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@18] -> + {ok, {17, Input@18}}; + + [<<"1"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@19] -> + {ok, {18, Input@19}}; + + [<<"1"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@20] -> + {ok, {19, Input@20}}; + + [<<"2"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@21] -> + {ok, {20, Input@21}}; + + [<<"2"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@22] -> + {ok, {21, Input@22}}; + + [<<"2"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@23] -> + {ok, {22, Input@23}}; + + [<<"2"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@24] -> + {ok, {23, Input@24}}; + + [G | _] -> + {error, {unexpected, G, <<"time"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"time"/utf8>>}} + end, fun(Hours, Input@25) -> + do( + parse_number_under_60(Input@25, <<"minutes"/utf8>>), + fun(Minutes, Input@26) -> {ok, {{Hours, Minutes}, Input@26}} end + ) + end). + +-spec parse_time_s_ms(list(binary())) -> {ok, + {{integer(), integer()}, list(binary())}} | + {error, parse_error()}. +parse_time_s_ms(Input) -> + case Input of + [<<":"/utf8>> | Input@1] -> + do( + parse_number_under_60(Input@1, <<"seconds"/utf8>>), + fun(Seconds, Input@2) -> case Input@2 of + [<<"."/utf8>> | Input@3] -> + parse_time_ms(Input@3, Seconds, 0); + + _ -> + {ok, {{Seconds, 0}, Input@2}} + end end + ); + + _ -> + {ok, {{0, 0}, Input}} + end. + +-spec parse_time_minute(list(binary()), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_time_minute(Input, Hours) -> + do( + parse_number_under_60(Input, <<"minutes"/utf8>>), + fun(Minutes, Input@1) -> + do( + parse_time_s_ms(Input@1), + fun(_use0, Input@2) -> + {Seconds, Ms} = _use0, + Time = {time_value, Hours, Minutes, Seconds, Ms}, + {ok, {{time, Time}, Input@2}} + end + ) + end + ). + +-spec parse_time_value(list(binary())) -> {ok, {time(), list(binary())}} | + {error, parse_error()}. +parse_time_value(Input) -> + do( + parse_hour_minute(Input), + fun(_use0, Input@1) -> + {Hours, Minutes} = _use0, + do( + parse_time_s_ms(Input@1), + fun(_use0@1, Input@2) -> + {Seconds, Ms} = _use0@1, + Time = {time_value, Hours, Minutes, Seconds, Ms}, + {ok, {Time, Input@2}} + end + ) + end + ). + +-spec parse_offset_hours(list(binary()), sign()) -> {ok, + {offset(), list(binary())}} | + {error, parse_error()}. +parse_offset_hours(Input, Sign) -> + do( + parse_hour_minute(Input), + fun(_use0, Input@1) -> + {Hours, Minutes} = _use0, + {ok, {{offset, Sign, Hours, Minutes}, Input@1}} + end + ). + +-spec parse_offset(list(binary())) -> {ok, {offset(), list(binary())}} | + {error, parse_error()}. +parse_offset(Input) -> + case Input of + [<<"Z"/utf8>> | Input@1] -> + {ok, {{offset, positive, 0, 0}, Input@1}}; + + [<<"+"/utf8>> | Input@2] -> + parse_offset_hours(Input@2, positive); + + [<<"-"/utf8>> | Input@3] -> + parse_offset_hours(Input@3, negative); + + _ -> + {ok, {local, Input}} + end. + +-spec parse_date_end(list(binary()), integer(), integer(), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_date_end(Input, Year, Month, Day) -> + Date = {date_value, Year, Month, Day}, + case Input of + [<<" "/utf8>> | Input@1] -> + do( + parse_time_value(Input@1), + fun(Time, Input@2) -> + do( + parse_offset(Input@2), + fun(Offset, Input@3) -> + {ok, + {{date_time, + {date_time_value, Date, Time, Offset}}, + Input@3}} + end + ) + end + ); + + [<<"T"/utf8>> | Input@1] -> + do( + parse_time_value(Input@1), + fun(Time, Input@2) -> + do( + parse_offset(Input@2), + fun(Offset, Input@3) -> + {ok, + {{date_time, + {date_time_value, Date, Time, Offset}}, + Input@3}} + end + ) + end + ); + + _ -> + {ok, {{date, Date}, Input}} + end. + +-spec parse_date_day(list(binary()), integer(), integer()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_date_day(Input, Year, Month) -> + case Input of + [<<"0"/utf8>>, <<"1"/utf8>> | Input@1] -> + parse_date_end(Input@1, Year, Month, 1); + + [<<"0"/utf8>>, <<"2"/utf8>> | Input@2] -> + parse_date_end(Input@2, Year, Month, 2); + + [<<"0"/utf8>>, <<"3"/utf8>> | Input@3] -> + parse_date_end(Input@3, Year, Month, 3); + + [<<"0"/utf8>>, <<"4"/utf8>> | Input@4] -> + parse_date_end(Input@4, Year, Month, 4); + + [<<"0"/utf8>>, <<"5"/utf8>> | Input@5] -> + parse_date_end(Input@5, Year, Month, 5); + + [<<"0"/utf8>>, <<"6"/utf8>> | Input@6] -> + parse_date_end(Input@6, Year, Month, 6); + + [<<"0"/utf8>>, <<"7"/utf8>> | Input@7] -> + parse_date_end(Input@7, Year, Month, 7); + + [<<"0"/utf8>>, <<"8"/utf8>> | Input@8] -> + parse_date_end(Input@8, Year, Month, 8); + + [<<"0"/utf8>>, <<"9"/utf8>> | Input@9] -> + parse_date_end(Input@9, Year, Month, 9); + + [<<"1"/utf8>>, <<"0"/utf8>> | Input@10] -> + parse_date_end(Input@10, Year, Month, 10); + + [<<"1"/utf8>>, <<"1"/utf8>> | Input@11] -> + parse_date_end(Input@11, Year, Month, 11); + + [<<"1"/utf8>>, <<"2"/utf8>> | Input@12] -> + parse_date_end(Input@12, Year, Month, 12); + + [<<"1"/utf8>>, <<"3"/utf8>> | Input@13] -> + parse_date_end(Input@13, Year, Month, 13); + + [<<"1"/utf8>>, <<"4"/utf8>> | Input@14] -> + parse_date_end(Input@14, Year, Month, 14); + + [<<"1"/utf8>>, <<"5"/utf8>> | Input@15] -> + parse_date_end(Input@15, Year, Month, 15); + + [<<"1"/utf8>>, <<"6"/utf8>> | Input@16] -> + parse_date_end(Input@16, Year, Month, 16); + + [<<"1"/utf8>>, <<"7"/utf8>> | Input@17] -> + parse_date_end(Input@17, Year, Month, 17); + + [<<"1"/utf8>>, <<"8"/utf8>> | Input@18] -> + parse_date_end(Input@18, Year, Month, 18); + + [<<"1"/utf8>>, <<"9"/utf8>> | Input@19] -> + parse_date_end(Input@19, Year, Month, 19); + + [<<"2"/utf8>>, <<"0"/utf8>> | Input@20] -> + parse_date_end(Input@20, Year, Month, 20); + + [<<"2"/utf8>>, <<"1"/utf8>> | Input@21] -> + parse_date_end(Input@21, Year, Month, 21); + + [<<"2"/utf8>>, <<"2"/utf8>> | Input@22] -> + parse_date_end(Input@22, Year, Month, 22); + + [<<"2"/utf8>>, <<"3"/utf8>> | Input@23] -> + parse_date_end(Input@23, Year, Month, 23); + + [<<"2"/utf8>>, <<"4"/utf8>> | Input@24] -> + parse_date_end(Input@24, Year, Month, 24); + + [<<"2"/utf8>>, <<"5"/utf8>> | Input@25] -> + parse_date_end(Input@25, Year, Month, 25); + + [<<"2"/utf8>>, <<"6"/utf8>> | Input@26] -> + parse_date_end(Input@26, Year, Month, 26); + + [<<"2"/utf8>>, <<"7"/utf8>> | Input@27] -> + parse_date_end(Input@27, Year, Month, 27); + + [<<"2"/utf8>>, <<"8"/utf8>> | Input@28] -> + parse_date_end(Input@28, Year, Month, 28); + + [<<"2"/utf8>>, <<"9"/utf8>> | Input@29] -> + parse_date_end(Input@29, Year, Month, 29); + + [<<"3"/utf8>>, <<"0"/utf8>> | Input@30] -> + parse_date_end(Input@30, Year, Month, 30); + + [<<"3"/utf8>>, <<"1"/utf8>> | Input@31] -> + parse_date_end(Input@31, Year, Month, 31); + + [G | _] -> + {error, {unexpected, G, <<"date day"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"date day"/utf8>>}} + end. + +-spec parse_date(list(binary()), integer()) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_date(Input, Year) -> + case Input of + [<<"0"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@1] -> + parse_date_day(Input@1, Year, 1); + + [<<"0"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@2] -> + parse_date_day(Input@2, Year, 2); + + [<<"0"/utf8>>, <<"3"/utf8>>, <<"-"/utf8>> | Input@3] -> + parse_date_day(Input@3, Year, 3); + + [<<"0"/utf8>>, <<"4"/utf8>>, <<"-"/utf8>> | Input@4] -> + parse_date_day(Input@4, Year, 4); + + [<<"0"/utf8>>, <<"5"/utf8>>, <<"-"/utf8>> | Input@5] -> + parse_date_day(Input@5, Year, 5); + + [<<"0"/utf8>>, <<"6"/utf8>>, <<"-"/utf8>> | Input@6] -> + parse_date_day(Input@6, Year, 6); + + [<<"0"/utf8>>, <<"7"/utf8>>, <<"-"/utf8>> | Input@7] -> + parse_date_day(Input@7, Year, 7); + + [<<"0"/utf8>>, <<"8"/utf8>>, <<"-"/utf8>> | Input@8] -> + parse_date_day(Input@8, Year, 8); + + [<<"0"/utf8>>, <<"9"/utf8>>, <<"-"/utf8>> | Input@9] -> + parse_date_day(Input@9, Year, 9); + + [<<"1"/utf8>>, <<"0"/utf8>>, <<"-"/utf8>> | Input@10] -> + parse_date_day(Input@10, Year, 10); + + [<<"1"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@11] -> + parse_date_day(Input@11, Year, 11); + + [<<"1"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@12] -> + parse_date_day(Input@12, Year, 12); + + [G | _] -> + {error, {unexpected, G, <<"date month"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"date month"/utf8>>}} + end. + +-spec parse_number(list(binary()), integer(), sign()) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_number(Input, Number, Sign) -> + case Input of + [<<"_"/utf8>> | Input@1] -> + parse_number(Input@1, Number, Sign); + + [<<"0"/utf8>> | Input@2] -> + parse_number(Input@2, (Number * 10) + 0, Sign); + + [<<"1"/utf8>> | Input@3] -> + parse_number(Input@3, (Number * 10) + 1, Sign); + + [<<"2"/utf8>> | Input@4] -> + parse_number(Input@4, (Number * 10) + 2, Sign); + + [<<"3"/utf8>> | Input@5] -> + parse_number(Input@5, (Number * 10) + 3, Sign); + + [<<"4"/utf8>> | Input@6] -> + parse_number(Input@6, (Number * 10) + 4, Sign); + + [<<"5"/utf8>> | Input@7] -> + parse_number(Input@7, (Number * 10) + 5, Sign); + + [<<"6"/utf8>> | Input@8] -> + parse_number(Input@8, (Number * 10) + 6, Sign); + + [<<"7"/utf8>> | Input@9] -> + parse_number(Input@9, (Number * 10) + 7, Sign); + + [<<"8"/utf8>> | Input@10] -> + parse_number(Input@10, (Number * 10) + 8, Sign); + + [<<"9"/utf8>> | Input@11] -> + parse_number(Input@11, (Number * 10) + 9, Sign); + + [<<"-"/utf8>> | Input@12] -> + parse_date(Input@12, Number); + + [<<":"/utf8>> | Input@13] when Number < 24 -> + parse_time_minute(Input@13, Number); + + [<<"."/utf8>> | Input@14] -> + parse_float(Input@14, gleam@int:to_float(Number), Sign, 0.1); + + [<<"e"/utf8>>, <<"+"/utf8>> | Input@15] -> + parse_exponent( + Input@15, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"e"/utf8>>, <<"-"/utf8>> | Input@16] -> + parse_exponent( + Input@16, + gleam@int:to_float(Number), + Sign, + 0, + negative + ); + + [<<"e"/utf8>> | Input@17] -> + parse_exponent( + Input@17, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"E"/utf8>>, <<"+"/utf8>> | Input@18] -> + parse_exponent( + Input@18, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + [<<"E"/utf8>>, <<"-"/utf8>> | Input@19] -> + parse_exponent( + Input@19, + gleam@int:to_float(Number), + Sign, + 0, + negative + ); + + [<<"E"/utf8>> | Input@20] -> + parse_exponent( + Input@20, + gleam@int:to_float(Number), + Sign, + 0, + positive + ); + + Input@21 -> + Number@1 = case Sign of + positive -> + Number; + + negative -> + - Number + end, + {ok, {{int, Number@1}, Input@21}} + end. + +-spec reverse_arrays_of_tables(toml()) -> toml(). +reverse_arrays_of_tables(Toml) -> + case Toml of + {array_of_tables, Tables} -> + {array_of_tables, reverse_arrays_of_tables_array(Tables, [])}; + + {table, Table} -> + {table, reverse_arrays_of_tables_table(Table)}; + + _ -> + Toml + end. + +-spec reverse_arrays_of_tables_table(gleam@map:map_(binary(), toml())) -> gleam@map:map_(binary(), toml()). +reverse_arrays_of_tables_table(Table) -> + gleam@map:map_values(Table, fun(_, V) -> reverse_arrays_of_tables(V) end). + +-spec reverse_arrays_of_tables_array( + list(gleam@map:map_(binary(), toml())), + list(gleam@map:map_(binary(), toml())) +) -> list(gleam@map:map_(binary(), toml())). +reverse_arrays_of_tables_array(Array, Acc) -> + case Array of + [] -> + Acc; + + [First | Rest] -> + First@1 = reverse_arrays_of_tables_table(First), + reverse_arrays_of_tables_array(Rest, [First@1 | Acc]) + end. + +-spec parse_inline_table_property( + list(binary()), + gleam@map:map_(binary(), toml()) +) -> {ok, {gleam@map:map_(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_inline_table_property(Input, Properties) -> + Input@1 = skip_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + Input@3 = skip_line_whitespace(Input@2), + expect( + Input@3, + <<"="/utf8>>, + fun(Input@4) -> + Input@5 = skip_line_whitespace(Input@4), + do( + parse_value(Input@5), + fun(Value, Input@6) -> + case insert(Properties, Key, Value) of + {ok, Properties@1} -> + {ok, {Properties@1, Input@6}}; + + {error, E} -> + {error, E} + end + end + ) + end + ) + end + ). + +-spec parse_value(list(binary())) -> {ok, {toml(), list(binary())}} | + {error, parse_error()}. +parse_value(Input) -> + case Input of + [<<"t"/utf8>>, <<"r"/utf8>>, <<"u"/utf8>>, <<"e"/utf8>> | Input@1] -> + {ok, {{bool, true}, Input@1}}; + + [<<"f"/utf8>>, + <<"a"/utf8>>, + <<"l"/utf8>>, + <<"s"/utf8>>, + <<"e"/utf8>> | + Input@2] -> + {ok, {{bool, false}, Input@2}}; + + [<<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@3] -> + {ok, {{nan, positive}, Input@3}}; + + [<<"+"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@4] -> + {ok, {{nan, positive}, Input@4}}; + + [<<"-"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@5] -> + {ok, {{nan, negative}, Input@5}}; + + [<<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@6] -> + {ok, {{infinity, positive}, Input@6}}; + + [<<"+"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@7] -> + {ok, {{infinity, positive}, Input@7}}; + + [<<"-"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@8] -> + {ok, {{infinity, negative}, Input@8}}; + + [<<"["/utf8>> | Input@9] -> + parse_array(Input@9, []); + + [<<"{"/utf8>> | Input@10] -> + parse_inline_table(Input@10, gleam@map:new()); + + [<<"0"/utf8>>, <<"x"/utf8>> | Input@11] -> + parse_hex(Input@11, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@12] -> + parse_hex(Input@12, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@13] -> + parse_hex(Input@13, 0, negative); + + [<<"0"/utf8>>, <<"o"/utf8>> | Input@14] -> + parse_octal(Input@14, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@15] -> + parse_octal(Input@15, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@16] -> + parse_octal(Input@16, 0, negative); + + [<<"0"/utf8>>, <<"b"/utf8>> | Input@17] -> + parse_binary(Input@17, 0, positive); + + [<<"+"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@18] -> + parse_binary(Input@18, 0, positive); + + [<<"-"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@19] -> + parse_binary(Input@19, 0, negative); + + [<<"+"/utf8>> | Input@20] -> + parse_number(Input@20, 0, positive); + + [<<"-"/utf8>> | Input@21] -> + parse_number(Input@21, 0, negative); + + [<<"0"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"1"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"2"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"3"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"4"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"5"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"6"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"7"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"8"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"9"/utf8>> | _] -> + parse_number(Input, 0, positive); + + [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@22] -> + parse_multi_line_string(Input@22, <<""/utf8>>); + + [<<"\""/utf8>> | Input@23] -> + parse_string(Input@23, <<""/utf8>>); + + [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@24] -> + parse_multi_line_literal_string(Input@24, <<""/utf8>>); + + [<<"'"/utf8>> | Input@25] -> + parse_literal_string(Input@25, <<""/utf8>>); + + [G | _] -> + {error, {unexpected, G, <<"value"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"value"/utf8>>}} + end. + +-spec parse_inline_table(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_inline_table(Input, Properties) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"}"/utf8>> | Input@2] -> + {ok, {{inline_table, Properties}, Input@2}}; + + _ -> + case parse_inline_table_property(Input@1, Properties) of + {ok, {Properties@1, Input@3}} -> + Input@4 = skip_whitespace(Input@3), + case Input@4 of + [<<"}"/utf8>> | Input@5] -> + {ok, {{inline_table, Properties@1}, Input@5}}; + + [<<","/utf8>> | Input@6] -> + Input@7 = skip_whitespace(Input@6), + parse_inline_table(Input@7, Properties@1); + + [G | _] -> + {error, {unexpected, G, <<"}"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"}"/utf8>>}} + end; + + {error, E} -> + {error, E} + end + end. + +-spec parse_key_value(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, + {gleam@map:map_(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_key_value(Input, Toml) -> + do( + parse_key(Input, []), + fun(Key, Input@1) -> + Input@2 = skip_line_whitespace(Input@1), + expect( + Input@2, + <<"="/utf8>>, + fun(Input@3) -> + Input@4 = skip_line_whitespace(Input@3), + do( + parse_value(Input@4), + fun(Value, Input@5) -> case insert(Toml, Key, Value) of + {ok, Toml@1} -> + {ok, {Toml@1, Input@5}}; + + {error, E} -> + {error, E} + end end + ) + end + ) + end + ). + +-spec parse_table(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, + {gleam@map:map_(binary(), toml()), list(binary())}} | + {error, parse_error()}. +parse_table(Input, Toml) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"["/utf8>> | _] -> + {ok, {Toml, Input@1}}; + + [] -> + {ok, {Toml, Input@1}}; + + _ -> + case parse_key_value(Input@1, Toml) of + {ok, {Toml@1, Input@2}} -> + case skip_line_whitespace(Input@2) of + [] -> + {ok, {Toml@1, []}}; + + [<<"\n"/utf8>> | In] -> + parse_table(In, Toml@1); + + [<<"\r\n"/utf8>> | In] -> + parse_table(In, Toml@1); + + [G | _] -> + {error, {unexpected, G, <<"\n"/utf8>>}} + end; + + E -> + E + end + end. + +-spec parse_array_of_tables(list(binary())) -> {ok, + {{list(binary()), gleam@map:map_(binary(), toml())}, list(binary())}} | + {error, parse_error()}. +parse_array_of_tables(Input) -> + Input@1 = skip_line_whitespace(Input), + do( + parse_key(Input@1, []), + fun(Key, Input@2) -> + expect( + Input@2, + <<"]"/utf8>>, + fun(Input@3) -> + expect( + Input@3, + <<"]"/utf8>>, + fun(Input@4) -> + do( + parse_table(Input@4, gleam@map:new()), + fun(Table, Input@5) -> + {ok, {{Key, Table}, Input@5}} + end + ) + end + ) + end + ) + end + ). + +-spec parse_table_and_header(list(binary())) -> {ok, + {{list(binary()), gleam@map:map_(binary(), toml())}, list(binary())}} | + {error, parse_error()}. +parse_table_and_header(Input) -> + do( + parse_table_header(Input), + fun(Key, Input@1) -> + do( + parse_table(Input@1, gleam@map:new()), + fun(Table, Input@2) -> {ok, {{Key, Table}, Input@2}} end + ) + end + ). + +-spec parse_tables(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, + gleam@map:map_(binary(), toml())} | + {error, parse_error()}. +parse_tables(Input, Toml) -> + case Input of + [<<"["/utf8>>, <<"["/utf8>> | Input@1] -> + case parse_array_of_tables(Input@1) of + {error, E} -> + {error, E}; + + {ok, {{Key, Table}, Input@2}} -> + case insert(Toml, Key, {array_of_tables, [Table]}) of + {ok, Toml@1} -> + parse_tables(Input@2, Toml@1); + + {error, E@1} -> + {error, E@1} + end + end; + + [<<"["/utf8>> | Input@3] -> + case parse_table_and_header(Input@3) of + {error, E@2} -> + {error, E@2}; + + {ok, {{Key@1, Table@1}, Input@4}} -> + case insert(Toml, Key@1, {table, Table@1}) of + {ok, Toml@2} -> + parse_tables(Input@4, Toml@2); + + {error, E@3} -> + {error, E@3} + end + end; + + [G | _] -> + {error, {unexpected, G, <<"["/utf8>>}}; + + [] -> + {ok, Toml} + end. + +-spec parse(binary()) -> {ok, gleam@map:map_(binary(), toml())} | + {error, parse_error()}. +parse(Input) -> + Input@1 = gleam@string:to_graphemes(Input), + Input@2 = drop_comments(Input@1, []), + Input@3 = skip_whitespace(Input@2), + do( + parse_table(Input@3, gleam@map:new()), + fun(Toml, Input@4) -> case parse_tables(Input@4, Toml) of + {ok, Toml@1} -> + {ok, reverse_arrays_of_tables_table(Toml@1)}; + + {error, E} -> + {error, E} + end end + ). + +-spec parse_array(list(binary()), list(toml())) -> {ok, + {toml(), list(binary())}} | + {error, parse_error()}. +parse_array(Input, Elements) -> + Input@1 = skip_whitespace(Input), + case Input@1 of + [<<"]"/utf8>> | Input@2] -> + {ok, {{array, gleam@list:reverse(Elements)}, Input@2}}; + + _ -> + do( + parse_value(Input@1), + fun(Element, Input@3) -> + Elements@1 = [Element | Elements], + Input@4 = skip_whitespace(Input@3), + case Input@4 of + [<<"]"/utf8>> | Input@5] -> + {ok, + {{array, gleam@list:reverse(Elements@1)}, + Input@5}}; + + [<<","/utf8>> | Input@6] -> + Input@7 = skip_whitespace(Input@6), + parse_array(Input@7, Elements@1); + + [G | _] -> + {error, {unexpected, G, <<"]"/utf8>>}}; + + [] -> + {error, {unexpected, <<"EOF"/utf8>>, <<"]"/utf8>>}} + end + end + ) + end. diff --git a/aoc2023/build/packages/tom/src/tom.gleam b/aoc2023/build/packages/tom/src/tom.gleam new file mode 100644 index 0000000..e19ce3e --- /dev/null +++ b/aoc2023/build/packages/tom/src/tom.gleam @@ -0,0 +1,1317 @@ +//// A pure Gleam TOML parser! +//// +//// ```gleam +//// import tom +//// +//// const config = " +//// [person] +//// name = \"Lucy\" +//// is_cool = true +//// " +//// +//// pub fn main() { +//// // Parse a string of TOML +//// let assert Ok(parsed) = tom.parse(config) +//// +//// // Now you can work with the data directly, or you can use the `get_*` +//// // functions to retrieve values. +//// +//// tom.get_string(parsed, ["person", "name"]) +//// // -> Ok("Lucy") +//// +//// let is_cool = tom.get_bool(parsed, ["person", "is_cool"]) +//// // -> Ok(True) +//// } +//// ``` + +import gleam/int +import gleam/list +import gleam/float +import gleam/string +import gleam/result +import gleam/map.{type Map} + +/// A TOML document. +pub type Toml { + Int(Int) + Float(Float) + /// Infinity is a valid number in TOML but Gleam does not support it, so this + /// variant represents the infinity values. + Infinity(Sign) + /// NaN is a valid number in TOML but Gleam does not support it, so this + /// variant represents the NaN values. + Nan(Sign) + Bool(Bool) + String(String) + Date(Date) + Time(Time) + DateTime(DateTime) + Array(List(Toml)) + ArrayOfTables(List(Map(String, Toml))) + Table(Map(String, Toml)) + InlineTable(Map(String, Toml)) +} + +pub type DateTime { + DateTimeValue(date: Date, time: Time, offset: Offset) +} + +pub type Date { + DateValue(year: Int, month: Int, day: Int) +} + +pub type Time { + TimeValue(hour: Int, minute: Int, second: Int, millisecond: Int) +} + +pub type Offset { + Local + Offset(direction: Sign, hours: Int, minutes: Int) +} + +pub type Sign { + Positive + Negative +} + +/// An error that can occur when parsing a TOML document. +pub type ParseError { + /// An unexpected character was encountered when parsing the document. + Unexpected(got: String, expected: String) + /// More than one items have the same key in the document. + KeyAlreadyInUse(key: List(String)) +} + +type Tokens = + List(String) + +type Parsed(a) = + Result(#(a, Tokens), ParseError) + +/// A number of any kind, returned by the `get_number` function. +pub type Number { + NumberInt(Int) + NumberFloat(Float) + NumberInfinity(Sign) + NumberNan(Sign) +} + +/// An error that can occur when retrieving a value from a TOML document with +/// one of the `get_*` functions. +pub type GetError { + /// There was no value at the given key. + NotFound(key: List(String)) + /// The value at the given key was not of the expected type. + WrongType(key: List(String), expected: String, got: String) +} + +// TODO: test +/// Get a value of any type from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 1") +/// get(parsed, ["a", "b", "c"]) +/// // -> Ok(Int(1)) +/// ``` +/// +pub fn get(toml: Map(String, Toml), key: List(String)) -> Result(Toml, GetError) { + case key { + [] -> Error(NotFound([])) + [k] -> result.replace_error(map.get(toml, k), NotFound([k])) + [k, ..key] -> { + case map.get(toml, k) { + Ok(Table(t)) -> push_key(get(t, key), k) + Ok(other) -> Error(WrongType([k], "Table", classify(other))) + Error(_) -> Error(NotFound([k])) + } + } + } +} + +// TODO: test +/// Get an int from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 1") +/// get_int(parsed, ["a", "b", "c"]) +/// // -> Ok(1) +/// ``` +/// +pub fn get_int( + toml: Map(String, Toml), + key: List(String), +) -> Result(Int, GetError) { + case get(toml, key) { + Ok(Int(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Int", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a float from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 1.1") +/// get_float(parsed, ["a", "b", "c"]) +/// // -> Ok(1.1) +/// ``` +/// +pub fn get_float( + toml: Map(String, Toml), + key: List(String), +) -> Result(Float, GetError) { + case get(toml, key) { + Ok(Float(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Float", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a bool from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = true") +/// get_bool(parsed, ["a", "b", "c"]) +/// // -> Ok(True) +/// ``` +/// +pub fn get_bool( + toml: Map(String, Toml), + key: List(String), +) -> Result(Bool, GetError) { + case get(toml, key) { + Ok(Bool(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Bool", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a string from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = \"ok\"") +/// get_string(parsed, ["a", "b", "c"]) +/// // -> Ok("ok") +/// ``` +/// +pub fn get_string( + toml: Map(String, Toml), + key: List(String), +) -> Result(String, GetError) { + case get(toml, key) { + Ok(String(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "String", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a date from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 1979-05-27") +/// get_date(parsed, ["a", "b", "c"]) +/// // -> Ok("1979-05-27") +/// ``` +/// +pub fn get_date( + toml: Map(String, Toml), + key: List(String), +) -> Result(Date, GetError) { + case get(toml, key) { + Ok(Date(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Date", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a time from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 07:32:00") +/// get_time(parsed, ["a", "b", "c"]) +/// // -> Ok("07:32:00") +/// ``` +/// +pub fn get_time( + toml: Map(String, Toml), + key: List(String), +) -> Result(Time, GetError) { + case get(toml, key) { + Ok(Time(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Time", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a date-time from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = 1979-05-27T07:32:00") +/// get_date_time(parsed, ["a", "b", "c"]) +/// // -> Ok("1979-05-27T07:32:00") +/// ``` +/// +pub fn get_date_time( + toml: Map(String, Toml), + key: List(String), +) -> Result(DateTime, GetError) { + case get(toml, key) { + Ok(DateTime(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "DateTime", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get an array from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = [1, 2]") +/// get_array(parsed, ["a", "b", "c"]) +/// // -> Ok([Int(1), Int(2)]) +/// ``` +/// +pub fn get_array( + toml: Map(String, Toml), + key: List(String), +) -> Result(List(Toml), GetError) { + case get(toml, key) { + Ok(Array(i)) -> Ok(i) + Ok(ArrayOfTables(i)) -> Ok(list.map(i, Table)) + Ok(other) -> Error(WrongType(key, "Array", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a table from a TOML document. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = { d = 1 }") +/// get_table(parsed, ["a", "b", "c"]) +/// // -> Ok(map.from_list([#("d", Int(1))])) +/// ``` +/// +pub fn get_table( + toml: Map(String, Toml), + key: List(String), +) -> Result(Map(String, Toml), GetError) { + case get(toml, key) { + Ok(Table(i)) -> Ok(i) + Ok(InlineTable(i)) -> Ok(i) + Ok(other) -> Error(WrongType(key, "Table", classify(other))) + Error(e) -> Error(e) + } +} + +// TODO: test +/// Get a number of any kind from a TOML document. +/// This could be an int, a float, a NaN, or an infinity. +/// +/// ## Examples +/// +/// ```gleam +/// let assert Ok(parsed) = parse("a.b.c = { d = inf }") +/// get_number(parsed, ["a", "b", "c"]) +/// // -> Ok(NumberInfinity(Positive))) +/// ``` +/// +pub fn get_number( + toml: Map(String, Toml), + key: List(String), +) -> Result(Number, GetError) { + case get(toml, key) { + Ok(Int(x)) -> Ok(NumberInt(x)) + Ok(Float(x)) -> Ok(NumberFloat(x)) + Ok(Nan(x)) -> Ok(NumberNan(x)) + Ok(Infinity(x)) -> Ok(NumberInfinity(x)) + Ok(other) -> Error(WrongType(key, "Number", classify(other))) + Error(e) -> Error(e) + } +} + +fn classify(toml: Toml) -> String { + case toml { + Int(_) -> "Int" + Float(_) -> "Float" + Nan(Positive) -> "NaN" + Nan(Negative) -> "Negative NaN" + Infinity(Positive) -> "Infinity" + Infinity(Negative) -> "Negative Infinity" + Bool(_) -> "Bool" + String(_) -> "String" + Date(_) -> "Date" + Time(_) -> "Time" + DateTime(_) -> "DateTime" + Array(_) -> "Array" + ArrayOfTables(_) -> "Array" + Table(_) -> "Table" + InlineTable(_) -> "Table" + } +} + +fn push_key(result: Result(t, GetError), key: String) -> Result(t, GetError) { + case result { + Ok(t) -> Ok(t) + Error(NotFound(path)) -> Error(NotFound([key, ..path])) + Error(WrongType(path, expected, got)) -> + Error(WrongType([key, ..path], expected, got)) + } +} + +pub fn parse(input: String) -> Result(Map(String, Toml), ParseError) { + let input = string.to_graphemes(input) + let input = drop_comments(input, []) + let input = skip_whitespace(input) + use toml, input <- do(parse_table(input, map.new())) + case parse_tables(input, toml) { + Ok(toml) -> Ok(reverse_arrays_of_tables_table(toml)) + Error(e) -> Error(e) + } +} + +fn parse_tables( + input: Tokens, + toml: Map(String, Toml), +) -> Result(Map(String, Toml), ParseError) { + case input { + ["[", "[", ..input] -> { + case parse_array_of_tables(input) { + Error(e) -> Error(e) + Ok(#(#(key, table), input)) -> { + case insert(toml, key, ArrayOfTables([table])) { + Ok(toml) -> parse_tables(input, toml) + Error(e) -> Error(e) + } + } + } + } + ["[", ..input] -> { + case parse_table_and_header(input) { + Error(e) -> Error(e) + Ok(#(#(key, table), input)) -> { + case insert(toml, key, Table(table)) { + Ok(toml) -> parse_tables(input, toml) + Error(e) -> Error(e) + } + } + } + } + [g, ..] -> Error(Unexpected(g, "[")) + [] -> Ok(toml) + } +} + +fn parse_array_of_tables( + input: Tokens, +) -> Parsed(#(List(String), Map(String, Toml))) { + let input = skip_line_whitespace(input) + use key, input <- do(parse_key(input, [])) + use input <- expect(input, "]") + use input <- expect(input, "]") + use table, input <- do(parse_table(input, map.new())) + Ok(#(#(key, table), input)) +} + +fn parse_table_header(input: Tokens) -> Parsed(List(String)) { + let input = skip_line_whitespace(input) + use key, input <- do(parse_key(input, [])) + use input <- expect(input, "]") + let input = skip_line_whitespace(input) + use input <- expect_end_of_line(input) + Ok(#(key, input)) +} + +fn parse_table_and_header( + input: Tokens, +) -> Parsed(#(List(String), Map(String, Toml))) { + use key, input <- do(parse_table_header(input)) + use table, input <- do(parse_table(input, map.new())) + Ok(#(#(key, table), input)) +} + +fn parse_table( + input: Tokens, + toml: Map(String, Toml), +) -> Parsed(Map(String, Toml)) { + let input = skip_whitespace(input) + case input { + ["[", ..] | [] -> Ok(#(toml, input)) + _ -> + case parse_key_value(input, toml) { + Ok(#(toml, input)) -> + case skip_line_whitespace(input) { + [] -> Ok(#(toml, [])) + ["\n", ..in] | ["\r\n", ..in] -> parse_table(in, toml) + [g, ..] -> Error(Unexpected(g, "\n")) + } + e -> e + } + } +} + +fn parse_key_value( + input: Tokens, + toml: Map(String, Toml), +) -> Parsed(Map(String, Toml)) { + use key, input <- do(parse_key(input, [])) + let input = skip_line_whitespace(input) + use input <- expect(input, "=") + let input = skip_line_whitespace(input) + use value, input <- do(parse_value(input)) + case insert(toml, key, value) { + Ok(toml) -> Ok(#(toml, input)) + Error(e) -> Error(e) + } +} + +fn insert( + table: Map(String, Toml), + key: List(String), + value: Toml, +) -> Result(Map(String, Toml), ParseError) { + case insert_loop(table, key, value) { + Ok(table) -> Ok(table) + Error(path) -> Error(KeyAlreadyInUse(path)) + } +} + +fn insert_loop( + table: Map(String, Toml), + key: List(String), + value: Toml, +) -> Result(Map(String, Toml), List(String)) { + case key { + [] -> panic as "unreachable" + [k] -> { + case map.get(table, k) { + Error(Nil) -> Ok(map.insert(table, k, value)) + Ok(old) -> merge(table, k, old, value) + } + } + [k, ..key] -> { + case map.get(table, k) { + Error(Nil) -> { + case insert_loop(map.new(), key, value) { + Ok(inner) -> Ok(map.insert(table, k, Table(inner))) + Error(path) -> Error([k, ..path]) + } + } + Ok(ArrayOfTables([inner, ..rest])) -> { + case insert_loop(inner, key, value) { + Ok(inner) -> + Ok(map.insert(table, k, ArrayOfTables([inner, ..rest]))) + Error(path) -> Error([k, ..path]) + } + } + Ok(Table(inner)) -> { + case insert_loop(inner, key, value) { + Ok(inner) -> Ok(map.insert(table, k, Table(inner))) + Error(path) -> Error([k, ..path]) + } + } + Ok(_) -> Error([k]) + } + } + } +} + +fn merge( + table: Map(String, Toml), + key: String, + old: Toml, + new: Toml, +) -> Result(Map(String, Toml), List(String)) { + case old, new { + // When both are arrays of tables then they are merged together + ArrayOfTables(tables), ArrayOfTables(new) -> + Ok(map.insert(table, key, ArrayOfTables(list.append(new, tables)))) + + _, _ -> Error([key]) + } +} + +fn expect_end_of_line(input: Tokens, next: fn(Tokens) -> Parsed(a)) -> Parsed(a) { + case input { + ["\n", ..input] -> next(input) + ["\r\n", ..input] -> next(input) + [g, ..] -> Error(Unexpected(g, "\n")) + [] -> Error(Unexpected("EOF", "\n")) + } +} + +fn parse_value(input) -> Parsed(Toml) { + case input { + ["t", "r", "u", "e", ..input] -> Ok(#(Bool(True), input)) + ["f", "a", "l", "s", "e", ..input] -> Ok(#(Bool(False), input)) + + ["n", "a", "n", ..input] -> Ok(#(Nan(Positive), input)) + ["+", "n", "a", "n", ..input] -> Ok(#(Nan(Positive), input)) + ["-", "n", "a", "n", ..input] -> Ok(#(Nan(Negative), input)) + + ["i", "n", "f", ..input] -> Ok(#(Infinity(Positive), input)) + ["+", "i", "n", "f", ..input] -> Ok(#(Infinity(Positive), input)) + ["-", "i", "n", "f", ..input] -> Ok(#(Infinity(Negative), input)) + + ["[", ..input] -> parse_array(input, []) + ["{", ..input] -> parse_inline_table(input, map.new()) + + ["0", "x", ..input] -> parse_hex(input, 0, Positive) + ["+", "0", "x", ..input] -> parse_hex(input, 0, Positive) + ["-", "0", "x", ..input] -> parse_hex(input, 0, Negative) + + ["0", "o", ..input] -> parse_octal(input, 0, Positive) + ["+", "0", "o", ..input] -> parse_octal(input, 0, Positive) + ["-", "0", "o", ..input] -> parse_octal(input, 0, Negative) + + ["0", "b", ..input] -> parse_binary(input, 0, Positive) + ["+", "0", "b", ..input] -> parse_binary(input, 0, Positive) + ["-", "0", "b", ..input] -> parse_binary(input, 0, Negative) + + ["+", ..input] -> parse_number(input, 0, Positive) + ["-", ..input] -> parse_number(input, 0, Negative) + ["0", ..] + | ["1", ..] + | ["2", ..] + | ["3", ..] + | ["4", ..] + | ["5", ..] + | ["6", ..] + | ["7", ..] + | ["8", ..] + | ["9", ..] -> parse_number(input, 0, Positive) + + ["\"", "\"", "\"", ..input] -> parse_multi_line_string(input, "") + ["\"", ..input] -> parse_string(input, "") + + ["'", "'", "'", ..input] -> parse_multi_line_literal_string(input, "") + ["'", ..input] -> parse_literal_string(input, "") + + [g, ..] -> Error(Unexpected(g, "value")) + [] -> Error(Unexpected("EOF", "value")) + } +} + +fn parse_key(input: Tokens, segments: List(String)) -> Parsed(List(String)) { + use segment, input <- do(parse_key_segment(input)) + let segments = [segment, ..segments] + let input = skip_line_whitespace(input) + + case input { + [".", ..input] -> parse_key(input, segments) + _ -> Ok(#(list.reverse(segments), input)) + } +} + +fn parse_key_segment(input: Tokens) -> Parsed(String) { + let input = skip_line_whitespace(input) + case input { + ["=", ..] -> Error(Unexpected("=", "Key")) + ["\n", ..] -> Error(Unexpected("\n", "Key")) + ["\r\n", ..] -> Error(Unexpected("\r\n", "Key")) + ["[", ..] -> Error(Unexpected("[", "Key")) + ["\"", ..input] -> parse_key_quoted(input, "\"", "") + ["'", ..input] -> parse_key_quoted(input, "'", "") + _ -> parse_key_bare(input, "") + } +} + +fn parse_key_quoted( + input: Tokens, + close: String, + name: String, +) -> Parsed(String) { + case input { + [g, ..input] if g == close -> Ok(#(name, input)) + [g, ..input] -> parse_key_quoted(input, close, name <> g) + [] -> Error(Unexpected("EOF", close)) + } +} + +fn parse_key_bare(input: Tokens, name: String) -> Parsed(String) { + case input { + [" ", ..input] if name != "" -> Ok(#(name, input)) + ["=", ..] if name != "" -> Ok(#(name, input)) + [".", ..] if name != "" -> Ok(#(name, input)) + ["]", ..] if name != "" -> Ok(#(name, input)) + [",", ..] if name != "" -> Error(Unexpected(",", "=")) + ["\n", ..] if name != "" -> Error(Unexpected("\n", "=")) + ["\r\n", ..] if name != "" -> Error(Unexpected("\r\n", "=")) + ["\n", ..] -> Error(Unexpected("\n", "key")) + ["\r\n", ..] -> Error(Unexpected("\r\n", "key")) + ["]", ..] -> Error(Unexpected("]", "key")) + [",", ..] -> Error(Unexpected(",", "key")) + [g, ..input] -> parse_key_bare(input, name <> g) + [] -> Error(Unexpected("EOF", "key")) + } +} + +fn skip_line_whitespace(input: Tokens) -> Tokens { + list.drop_while(input, fn(g) { g == " " || g == "\t" }) +} + +fn skip_whitespace(input: Tokens) -> Tokens { + case input { + [" ", ..input] -> skip_whitespace(input) + ["\t", ..input] -> skip_whitespace(input) + ["\n", ..input] -> skip_whitespace(input) + ["\r\n", ..input] -> skip_whitespace(input) + input -> input + } +} + +fn drop_comments(input: Tokens, acc: Tokens) -> Tokens { + case input { + ["#", ..input] -> + input + |> list.drop_while(fn(g) { g != "\n" }) + |> drop_comments(acc) + [g, ..input] -> drop_comments(input, [g, ..acc]) + [] -> list.reverse(acc) + } +} + +fn do( + result: Result(#(a, Tokens), ParseError), + next: fn(a, Tokens) -> Result(b, ParseError), +) -> Result(b, ParseError) { + case result { + Ok(#(a, input)) -> next(a, input) + Error(e) -> Error(e) + } +} + +fn expect( + input: Tokens, + expected: String, + next: fn(Tokens) -> Parsed(a), +) -> Parsed(a) { + case input { + [g, ..input] if g == expected -> next(input) + [g, ..] -> Error(Unexpected(g, expected)) + [] -> Error(Unexpected("EOF", expected)) + } +} + +fn parse_inline_table( + input: Tokens, + properties: Map(String, Toml), +) -> Parsed(Toml) { + let input = skip_whitespace(input) + case input { + ["}", ..input] -> Ok(#(InlineTable(properties), input)) + _ -> + case parse_inline_table_property(input, properties) { + Ok(#(properties, input)) -> { + let input = skip_whitespace(input) + case input { + ["}", ..input] -> Ok(#(InlineTable(properties), input)) + [",", ..input] -> { + let input = skip_whitespace(input) + parse_inline_table(input, properties) + } + [g, ..] -> Error(Unexpected(g, "}")) + [] -> Error(Unexpected("EOF", "}")) + } + } + Error(e) -> Error(e) + } + } +} + +fn parse_inline_table_property( + input: Tokens, + properties: Map(String, Toml), +) -> Parsed(Map(String, Toml)) { + let input = skip_whitespace(input) + use key, input <- do(parse_key(input, [])) + let input = skip_line_whitespace(input) + use input <- expect(input, "=") + let input = skip_line_whitespace(input) + use value, input <- do(parse_value(input)) + case insert(properties, key, value) { + Ok(properties) -> Ok(#(properties, input)) + Error(e) -> Error(e) + } +} + +fn parse_array(input: Tokens, elements: List(Toml)) -> Parsed(Toml) { + let input = skip_whitespace(input) + case input { + ["]", ..input] -> Ok(#(Array(list.reverse(elements)), input)) + _ -> { + use element, input <- do(parse_value(input)) + let elements = [element, ..elements] + let input = skip_whitespace(input) + case input { + ["]", ..input] -> Ok(#(Array(list.reverse(elements)), input)) + [",", ..input] -> { + let input = skip_whitespace(input) + parse_array(input, elements) + } + [g, ..] -> Error(Unexpected(g, "]")) + [] -> Error(Unexpected("EOF", "]")) + } + } + } +} + +fn parse_hex(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_hex(input, number, sign) + ["0", ..input] -> parse_hex(input, number * 16 + 0, sign) + ["1", ..input] -> parse_hex(input, number * 16 + 1, sign) + ["2", ..input] -> parse_hex(input, number * 16 + 2, sign) + ["3", ..input] -> parse_hex(input, number * 16 + 3, sign) + ["4", ..input] -> parse_hex(input, number * 16 + 4, sign) + ["5", ..input] -> parse_hex(input, number * 16 + 5, sign) + ["6", ..input] -> parse_hex(input, number * 16 + 6, sign) + ["7", ..input] -> parse_hex(input, number * 16 + 7, sign) + ["8", ..input] -> parse_hex(input, number * 16 + 8, sign) + ["9", ..input] -> parse_hex(input, number * 16 + 9, sign) + ["a", ..input] -> parse_hex(input, number * 16 + 10, sign) + ["b", ..input] -> parse_hex(input, number * 16 + 11, sign) + ["c", ..input] -> parse_hex(input, number * 16 + 12, sign) + ["d", ..input] -> parse_hex(input, number * 16 + 13, sign) + ["e", ..input] -> parse_hex(input, number * 16 + 14, sign) + ["f", ..input] -> parse_hex(input, number * 16 + 15, sign) + ["A", ..input] -> parse_hex(input, number * 16 + 10, sign) + ["B", ..input] -> parse_hex(input, number * 16 + 11, sign) + ["C", ..input] -> parse_hex(input, number * 16 + 12, sign) + ["D", ..input] -> parse_hex(input, number * 16 + 13, sign) + ["E", ..input] -> parse_hex(input, number * 16 + 14, sign) + ["F", ..input] -> parse_hex(input, number * 16 + 15, sign) + + // Anything else and the number is terminated + input -> { + let number = case sign { + Positive -> number + Negative -> -number + } + Ok(#(Int(number), input)) + } + } +} + +fn parse_octal(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_octal(input, number, sign) + ["0", ..input] -> parse_octal(input, number * 8 + 0, sign) + ["1", ..input] -> parse_octal(input, number * 8 + 1, sign) + ["2", ..input] -> parse_octal(input, number * 8 + 2, sign) + ["3", ..input] -> parse_octal(input, number * 8 + 3, sign) + ["4", ..input] -> parse_octal(input, number * 8 + 4, sign) + ["5", ..input] -> parse_octal(input, number * 8 + 5, sign) + ["6", ..input] -> parse_octal(input, number * 8 + 6, sign) + ["7", ..input] -> parse_octal(input, number * 8 + 7, sign) + + // Anything else and the number is terminated + input -> { + let number = case sign { + Positive -> number + Negative -> -number + } + Ok(#(Int(number), input)) + } + } +} + +fn parse_binary(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_binary(input, number, sign) + ["0", ..input] -> parse_binary(input, number * 2 + 0, sign) + ["1", ..input] -> parse_binary(input, number * 2 + 1, sign) + + // Anything else and the number is terminated + input -> { + let number = case sign { + Positive -> number + Negative -> -number + } + Ok(#(Int(number), input)) + } + } +} + +fn parse_number(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_number(input, number, sign) + ["0", ..input] -> parse_number(input, number * 10 + 0, sign) + ["1", ..input] -> parse_number(input, number * 10 + 1, sign) + ["2", ..input] -> parse_number(input, number * 10 + 2, sign) + ["3", ..input] -> parse_number(input, number * 10 + 3, sign) + ["4", ..input] -> parse_number(input, number * 10 + 4, sign) + ["5", ..input] -> parse_number(input, number * 10 + 5, sign) + ["6", ..input] -> parse_number(input, number * 10 + 6, sign) + ["7", ..input] -> parse_number(input, number * 10 + 7, sign) + ["8", ..input] -> parse_number(input, number * 10 + 8, sign) + ["9", ..input] -> parse_number(input, number * 10 + 9, sign) + + ["-", ..input] -> parse_date(input, number) + [":", ..input] if number < 24 -> parse_time_minute(input, number) + + [".", ..input] -> parse_float(input, int.to_float(number), sign, 0.1) + + ["e", "+", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Positive) + ["e", "-", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Negative) + ["e", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Positive) + ["E", "+", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Positive) + ["E", "-", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Negative) + ["E", ..input] -> + parse_exponent(input, int.to_float(number), sign, 0, Positive) + + // Anything else and the number is terminated + input -> { + let number = case sign { + Positive -> number + Negative -> -number + } + Ok(#(Int(number), input)) + } + } +} + +fn parse_exponent( + input: Tokens, + n: Float, + n_sign: Sign, + ex: Int, + ex_sign: Sign, +) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_exponent(input, n, n_sign, ex, ex_sign) + ["0", ..input] -> parse_exponent(input, n, n_sign, ex * 10, ex_sign) + ["1", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 1, ex_sign) + ["2", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 2, ex_sign) + ["3", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 3, ex_sign) + ["4", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 4, ex_sign) + ["5", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 5, ex_sign) + ["6", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 6, ex_sign) + ["7", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 7, ex_sign) + ["8", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 8, ex_sign) + ["9", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 9, ex_sign) + + // Anything else and the number is terminated + input -> { + let number = case n_sign { + Positive -> n + Negative -> n *. -1.0 + } + let exponent = + int.to_float(case ex_sign { + Positive -> ex + Negative -> -ex + }) + let multiplier = case float.power(10.0, exponent) { + Ok(multiplier) -> multiplier + Error(_) -> 1.0 + } + Ok(#(Float(number *. multiplier), input)) + } + } +} + +fn parse_float( + input: Tokens, + number: Float, + sign: Sign, + unit: Float, +) -> Parsed(Toml) { + case input { + ["_", ..input] -> parse_float(input, number, sign, unit) + ["0", ..input] -> parse_float(input, number, sign, unit *. 0.1) + ["1", ..input] -> + parse_float(input, number +. 1.0 *. unit, sign, unit *. 0.1) + ["2", ..input] -> + parse_float(input, number +. 2.0 *. unit, sign, unit *. 0.1) + ["3", ..input] -> + parse_float(input, number +. 3.0 *. unit, sign, unit *. 0.1) + ["4", ..input] -> + parse_float(input, number +. 4.0 *. unit, sign, unit *. 0.1) + ["5", ..input] -> + parse_float(input, number +. 5.0 *. unit, sign, unit *. 0.1) + ["6", ..input] -> + parse_float(input, number +. 6.0 *. unit, sign, unit *. 0.1) + ["7", ..input] -> + parse_float(input, number +. 7.0 *. unit, sign, unit *. 0.1) + ["8", ..input] -> + parse_float(input, number +. 8.0 *. unit, sign, unit *. 0.1) + ["9", ..input] -> + parse_float(input, number +. 9.0 *. unit, sign, unit *. 0.1) + + ["e", "+", ..input] -> parse_exponent(input, number, sign, 0, Positive) + ["e", "-", ..input] -> parse_exponent(input, number, sign, 0, Negative) + ["e", ..input] -> parse_exponent(input, number, sign, 0, Positive) + ["E", "+", ..input] -> parse_exponent(input, number, sign, 0, Positive) + ["E", "-", ..input] -> parse_exponent(input, number, sign, 0, Negative) + ["E", ..input] -> parse_exponent(input, number, sign, 0, Positive) + + // Anything else and the number is terminated + input -> { + let number = case sign { + Positive -> number + Negative -> number *. -1.0 + } + Ok(#(Float(number), input)) + } + } +} + +fn parse_string(input: Tokens, string: String) -> Parsed(Toml) { + case input { + ["\"", ..input] -> Ok(#(String(string), input)) + ["\\", "t", ..input] -> parse_string(input, string <> "\t") + ["\\", "n", ..input] -> parse_string(input, string <> "\n") + ["\\", "r", ..input] -> parse_string(input, string <> "\r") + ["\\", "\"", ..input] -> parse_string(input, string <> "\"") + ["\\", "\\", ..input] -> parse_string(input, string <> "\\") + [] -> Error(Unexpected("EOF", "\"")) + ["\n", ..] -> Error(Unexpected("\n", "\"")) + ["\r\n", ..] -> Error(Unexpected("\r\n", "\"")) + [g, ..input] -> parse_string(input, string <> g) + } +} + +fn parse_multi_line_string(input: Tokens, string: String) -> Parsed(Toml) { + case input { + ["\"", "\"", "\"", ..input] -> Ok(#(String(string), input)) + ["\\", "\n", ..input] -> + parse_multi_line_string(skip_whitespace(input), string) + ["\\", "\r\n", ..input] -> + parse_multi_line_string(skip_whitespace(input), string) + ["\r\n", ..input] if string == "" -> parse_multi_line_string(input, string) + ["\n", ..input] if string == "" -> parse_multi_line_string(input, string) + ["\r\n", ..input] if string == "" -> parse_multi_line_string(input, string) + ["\\", "t", ..input] -> parse_multi_line_string(input, string <> "\t") + ["\\", "n", ..input] -> parse_multi_line_string(input, string <> "\n") + ["\\", "r", ..input] -> parse_multi_line_string(input, string <> "\r") + ["\\", "\"", ..input] -> parse_multi_line_string(input, string <> "\"") + ["\\", "\\", ..input] -> parse_multi_line_string(input, string <> "\\") + [] -> Error(Unexpected("EOF", "\"")) + [g, ..input] -> parse_multi_line_string(input, string <> g) + } +} + +fn parse_multi_line_literal_string( + input: Tokens, + string: String, +) -> Parsed(Toml) { + case input { + [] -> Error(Unexpected("EOF", "\"")) + ["'", "'", "'", "'", ..] -> Error(Unexpected("''''", "'''")) + ["'", "'", "'", ..input] -> Ok(#(String(string), input)) + ["\n", ..input] if string == "" -> + parse_multi_line_literal_string(input, string) + ["\r\n", ..input] if string == "" -> + parse_multi_line_literal_string(input, string) + [g, ..input] -> parse_multi_line_literal_string(input, string <> g) + } +} + +fn parse_literal_string(input: Tokens, string: String) -> Parsed(Toml) { + case input { + [] -> Error(Unexpected("EOF", "\"")) + ["\n", ..] -> Error(Unexpected("\n", "'")) + ["\r\n", ..] -> Error(Unexpected("\r\n", "'")) + ["'", ..input] -> Ok(#(String(string), input)) + [g, ..input] -> parse_literal_string(input, string <> g) + } +} + +fn reverse_arrays_of_tables(toml: Toml) -> Toml { + case toml { + ArrayOfTables(tables) -> + ArrayOfTables(reverse_arrays_of_tables_array(tables, [])) + + Table(table) -> Table(reverse_arrays_of_tables_table(table)) + + _ -> toml + } +} + +fn reverse_arrays_of_tables_table(table: Map(String, Toml)) -> Map(String, Toml) { + map.map_values(table, fn(_, v) { reverse_arrays_of_tables(v) }) +} + +fn reverse_arrays_of_tables_array( + array: List(Map(String, Toml)), + acc: List(Map(String, Toml)), +) -> List(Map(String, Toml)) { + case array { + [] -> acc + [first, ..rest] -> { + let first = reverse_arrays_of_tables_table(first) + reverse_arrays_of_tables_array(rest, [first, ..acc]) + } + } +} + +fn parse_time_minute(input: Tokens, hours: Int) -> Parsed(Toml) { + use minutes, input <- do(parse_number_under_60(input, "minutes")) + use #(seconds, ms), input <- do(parse_time_s_ms(input)) + let time = TimeValue(hours, minutes, seconds, ms) + Ok(#(Time(time), input)) +} + +fn parse_hour_minute(input: Tokens) -> Parsed(#(Int, Int)) { + use hours, input <- do(case input { + ["0", "0", ":", ..input] -> Ok(#(0, input)) + ["0", "1", ":", ..input] -> Ok(#(1, input)) + ["0", "2", ":", ..input] -> Ok(#(2, input)) + ["0", "3", ":", ..input] -> Ok(#(3, input)) + ["0", "4", ":", ..input] -> Ok(#(4, input)) + ["0", "5", ":", ..input] -> Ok(#(5, input)) + ["0", "6", ":", ..input] -> Ok(#(6, input)) + ["0", "7", ":", ..input] -> Ok(#(7, input)) + ["0", "8", ":", ..input] -> Ok(#(8, input)) + ["0", "9", ":", ..input] -> Ok(#(9, input)) + ["1", "0", ":", ..input] -> Ok(#(10, input)) + ["1", "1", ":", ..input] -> Ok(#(11, input)) + ["1", "2", ":", ..input] -> Ok(#(12, input)) + ["1", "3", ":", ..input] -> Ok(#(13, input)) + ["1", "4", ":", ..input] -> Ok(#(14, input)) + ["1", "5", ":", ..input] -> Ok(#(15, input)) + ["1", "6", ":", ..input] -> Ok(#(16, input)) + ["1", "7", ":", ..input] -> Ok(#(17, input)) + ["1", "8", ":", ..input] -> Ok(#(18, input)) + ["1", "9", ":", ..input] -> Ok(#(19, input)) + ["2", "0", ":", ..input] -> Ok(#(20, input)) + ["2", "1", ":", ..input] -> Ok(#(21, input)) + ["2", "2", ":", ..input] -> Ok(#(22, input)) + ["2", "3", ":", ..input] -> Ok(#(23, input)) + [g, ..] -> Error(Unexpected(g, "time")) + [] -> Error(Unexpected("EOF", "time")) + }) + + use minutes, input <- do(parse_number_under_60(input, "minutes")) + Ok(#(#(hours, minutes), input)) +} + +fn parse_time_value(input: Tokens) -> Parsed(Time) { + use #(hours, minutes), input <- do(parse_hour_minute(input)) + use #(seconds, ms), input <- do(parse_time_s_ms(input)) + let time = TimeValue(hours, minutes, seconds, ms) + Ok(#(time, input)) +} + +fn parse_time_s_ms(input: Tokens) -> Parsed(#(Int, Int)) { + case input { + [":", ..input] -> { + use seconds, input <- do(parse_number_under_60(input, "seconds")) + case input { + [".", ..input] -> parse_time_ms(input, seconds, 0) + _ -> Ok(#(#(seconds, 0), input)) + } + } + + _ -> Ok(#(#(0, 0), input)) + } +} + +fn parse_time_ms(input: Tokens, seconds: Int, ms: Int) -> Parsed(#(Int, Int)) { + case input { + ["0", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 0) + ["1", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 1) + ["2", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 2) + ["3", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 3) + ["4", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 4) + ["5", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 5) + ["6", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 6) + ["7", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 7) + ["8", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 8) + ["9", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 9) + + // Anything else and the number is terminated + _ -> Ok(#(#(seconds, ms), input)) + } +} + +fn parse_number_under_60(input: Tokens, expected: String) -> Parsed(Int) { + case input { + ["0", "0", ..input] -> Ok(#(0, input)) + ["0", "1", ..input] -> Ok(#(1, input)) + ["0", "2", ..input] -> Ok(#(2, input)) + ["0", "3", ..input] -> Ok(#(3, input)) + ["0", "4", ..input] -> Ok(#(4, input)) + ["0", "5", ..input] -> Ok(#(5, input)) + ["0", "6", ..input] -> Ok(#(6, input)) + ["0", "7", ..input] -> Ok(#(7, input)) + ["0", "8", ..input] -> Ok(#(8, input)) + ["0", "9", ..input] -> Ok(#(9, input)) + ["1", "0", ..input] -> Ok(#(10, input)) + ["1", "1", ..input] -> Ok(#(11, input)) + ["1", "2", ..input] -> Ok(#(12, input)) + ["1", "3", ..input] -> Ok(#(13, input)) + ["1", "4", ..input] -> Ok(#(14, input)) + ["1", "5", ..input] -> Ok(#(15, input)) + ["1", "6", ..input] -> Ok(#(16, input)) + ["1", "7", ..input] -> Ok(#(17, input)) + ["1", "8", ..input] -> Ok(#(18, input)) + ["1", "9", ..input] -> Ok(#(19, input)) + ["2", "0", ..input] -> Ok(#(20, input)) + ["2", "1", ..input] -> Ok(#(21, input)) + ["2", "2", ..input] -> Ok(#(22, input)) + ["2", "3", ..input] -> Ok(#(23, input)) + ["2", "4", ..input] -> Ok(#(24, input)) + ["2", "5", ..input] -> Ok(#(25, input)) + ["2", "6", ..input] -> Ok(#(26, input)) + ["2", "7", ..input] -> Ok(#(27, input)) + ["2", "8", ..input] -> Ok(#(28, input)) + ["2", "9", ..input] -> Ok(#(29, input)) + ["3", "0", ..input] -> Ok(#(30, input)) + ["3", "1", ..input] -> Ok(#(31, input)) + ["3", "2", ..input] -> Ok(#(32, input)) + ["3", "3", ..input] -> Ok(#(33, input)) + ["3", "4", ..input] -> Ok(#(34, input)) + ["3", "5", ..input] -> Ok(#(35, input)) + ["3", "6", ..input] -> Ok(#(36, input)) + ["3", "7", ..input] -> Ok(#(37, input)) + ["3", "8", ..input] -> Ok(#(38, input)) + ["3", "9", ..input] -> Ok(#(39, input)) + ["4", "0", ..input] -> Ok(#(40, input)) + ["4", "1", ..input] -> Ok(#(41, input)) + ["4", "2", ..input] -> Ok(#(42, input)) + ["4", "3", ..input] -> Ok(#(43, input)) + ["4", "4", ..input] -> Ok(#(44, input)) + ["4", "5", ..input] -> Ok(#(45, input)) + ["4", "6", ..input] -> Ok(#(46, input)) + ["4", "7", ..input] -> Ok(#(47, input)) + ["4", "8", ..input] -> Ok(#(48, input)) + ["4", "9", ..input] -> Ok(#(49, input)) + ["5", "0", ..input] -> Ok(#(50, input)) + ["5", "1", ..input] -> Ok(#(51, input)) + ["5", "2", ..input] -> Ok(#(52, input)) + ["5", "3", ..input] -> Ok(#(53, input)) + ["5", "4", ..input] -> Ok(#(54, input)) + ["5", "5", ..input] -> Ok(#(55, input)) + ["5", "6", ..input] -> Ok(#(56, input)) + ["5", "7", ..input] -> Ok(#(57, input)) + ["5", "8", ..input] -> Ok(#(58, input)) + ["5", "9", ..input] -> Ok(#(59, input)) + + [g, ..] -> Error(Unexpected(g, expected)) + [] -> Error(Unexpected("EOF", expected)) + } +} + +fn parse_date(input: Tokens, year: Int) -> Parsed(Toml) { + case input { + ["0", "1", "-", ..input] -> parse_date_day(input, year, 1) + ["0", "2", "-", ..input] -> parse_date_day(input, year, 2) + ["0", "3", "-", ..input] -> parse_date_day(input, year, 3) + ["0", "4", "-", ..input] -> parse_date_day(input, year, 4) + ["0", "5", "-", ..input] -> parse_date_day(input, year, 5) + ["0", "6", "-", ..input] -> parse_date_day(input, year, 6) + ["0", "7", "-", ..input] -> parse_date_day(input, year, 7) + ["0", "8", "-", ..input] -> parse_date_day(input, year, 8) + ["0", "9", "-", ..input] -> parse_date_day(input, year, 9) + ["1", "0", "-", ..input] -> parse_date_day(input, year, 10) + ["1", "1", "-", ..input] -> parse_date_day(input, year, 11) + ["1", "2", "-", ..input] -> parse_date_day(input, year, 12) + + [g, ..] -> Error(Unexpected(g, "date month")) + [] -> Error(Unexpected("EOF", "date month")) + } +} + +fn parse_date_day(input: Tokens, year: Int, month: Int) -> Parsed(Toml) { + case input { + ["0", "1", ..input] -> parse_date_end(input, year, month, 1) + ["0", "2", ..input] -> parse_date_end(input, year, month, 2) + ["0", "3", ..input] -> parse_date_end(input, year, month, 3) + ["0", "4", ..input] -> parse_date_end(input, year, month, 4) + ["0", "5", ..input] -> parse_date_end(input, year, month, 5) + ["0", "6", ..input] -> parse_date_end(input, year, month, 6) + ["0", "7", ..input] -> parse_date_end(input, year, month, 7) + ["0", "8", ..input] -> parse_date_end(input, year, month, 8) + ["0", "9", ..input] -> parse_date_end(input, year, month, 9) + ["1", "0", ..input] -> parse_date_end(input, year, month, 10) + ["1", "1", ..input] -> parse_date_end(input, year, month, 11) + ["1", "2", ..input] -> parse_date_end(input, year, month, 12) + ["1", "3", ..input] -> parse_date_end(input, year, month, 13) + ["1", "4", ..input] -> parse_date_end(input, year, month, 14) + ["1", "5", ..input] -> parse_date_end(input, year, month, 15) + ["1", "6", ..input] -> parse_date_end(input, year, month, 16) + ["1", "7", ..input] -> parse_date_end(input, year, month, 17) + ["1", "8", ..input] -> parse_date_end(input, year, month, 18) + ["1", "9", ..input] -> parse_date_end(input, year, month, 19) + ["2", "0", ..input] -> parse_date_end(input, year, month, 20) + ["2", "1", ..input] -> parse_date_end(input, year, month, 21) + ["2", "2", ..input] -> parse_date_end(input, year, month, 22) + ["2", "3", ..input] -> parse_date_end(input, year, month, 23) + ["2", "4", ..input] -> parse_date_end(input, year, month, 24) + ["2", "5", ..input] -> parse_date_end(input, year, month, 25) + ["2", "6", ..input] -> parse_date_end(input, year, month, 26) + ["2", "7", ..input] -> parse_date_end(input, year, month, 27) + ["2", "8", ..input] -> parse_date_end(input, year, month, 28) + ["2", "9", ..input] -> parse_date_end(input, year, month, 29) + ["3", "0", ..input] -> parse_date_end(input, year, month, 30) + ["3", "1", ..input] -> parse_date_end(input, year, month, 31) + + [g, ..] -> Error(Unexpected(g, "date day")) + [] -> Error(Unexpected("EOF", "date day")) + } +} + +fn parse_date_end( + input: Tokens, + year: Int, + month: Int, + day: Int, +) -> Parsed(Toml) { + let date = DateValue(year, month, day) + case input { + [" ", ..input] | ["T", ..input] -> { + use time, input <- do(parse_time_value(input)) + use offset, input <- do(parse_offset(input)) + Ok(#(DateTime(DateTimeValue(date, time, offset)), input)) + } + + _ -> Ok(#(Date(date), input)) + } +} + +fn parse_offset(input: Tokens) -> Parsed(Offset) { + case input { + ["Z", ..input] -> Ok(#(Offset(Positive, 0, 0), input)) + ["+", ..input] -> parse_offset_hours(input, Positive) + ["-", ..input] -> parse_offset_hours(input, Negative) + _ -> Ok(#(Local, input)) + } +} + +fn parse_offset_hours(input: Tokens, sign: Sign) -> Parsed(Offset) { + use #(hours, minutes), input <- do(parse_hour_minute(input)) + Ok(#(Offset(sign, hours, minutes), input)) +} diff --git a/aoc2023/build/prod/erlang/gleam.lock b/aoc2023/build/prod/erlang/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/build/prod/javascript/gleam.lock b/aoc2023/build/prod/javascript/gleam.lock new file mode 100644 index 0000000..e69de29 diff --git a/aoc2023/erl_crash.dump b/aoc2023/erl_crash.dump new file mode 100644 index 0000000..ef1d35a --- /dev/null +++ b/aoc2023/erl_crash.dump @@ -0,0 +1,67195 @@ +=erl_crash_dump:0.5 +Thu Dec 7 01:00:23 2023 +Slogan: Runtime terminating during boot ({,[{showtime@internal@reports@formatter,-create_test_report/1-fun-4-,1,[{_},{_}]},{gleam@list,do_filter_map,3,[{_},{_}]},{showtime@internal@reports@formatter,create_test_report,1,[{_},{_}]},{showtime@internal@erlang@event_handler,-start/0-fun-1-,2,[{_},{_}]},{gleam@otp@actor,loop,1,[{_},{_}]}]}) +System version: Erlang/OTP 26 [erts-14.0.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace] +Taints: +Atoms: 11705 +Calling Thread: scheduler:1 +=scheduler:1 +Scheduler Sleep Info Flags: +Scheduler Sleep Info Aux Work: THR_PRGR_LATER_OP +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 2 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: NONEMPTY_NORMAL | OUT_OF_WORK | HALFTIME_OUT_OF_WORK | NONEMPTY | EXEC +Current Process: <0.0.0> +Current Process State: Running +Current Process Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | ACTIVE | RUNNING | ACTIVE_SYS +Current Process Program counter: 0x0000000103d889fc (init:boot_loop/2 + 84) +Current Process Limited Stack Trace: +0x0000000105dda900:SReturn addr 0x3D82348 () +=scheduler:2 +Scheduler Sleep Info Flags: SLEEPING | POLL_SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:3 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:4 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:5 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:6 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:7 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=scheduler:8 +Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING +Scheduler Sleep Info Aux Work: +Current Port: +Run Queue Max Length: 0 +Run Queue High Length: 0 +Run Queue Normal Length: 0 +Run Queue Low Length: 0 +Run Queue Port Length: 0 +Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK +Current Process: +=memory +total: 24121588 +processes: 7426424 +processes_used: 7419720 +system: 16695164 +atom: 327857 +atom_used: 307203 +binary: 475240 +code: 6109634 +ets: 600608 +=hash_table:atom_tab +size: 8192 +used: 6198 +objs: 11705 +depth: 8 +=index_table:atom_tab +size: 12288 +limit: 1048576 +entries: 11705 +=hash_table:module_code +size: 128 +used: 106 +objs: 180 +depth: 4 +=index_table:module_code +size: 1024 +limit: 65536 +entries: 180 +=hash_table:export_list +size: 4096 +used: 2753 +objs: 4462 +depth: 7 +=index_table:export_list +size: 5120 +limit: 524288 +entries: 4462 +=hash_table:export_list +size: 4096 +used: 2746 +objs: 4441 +depth: 7 +=hash_table:process_reg +size: 64 +used: 39 +objs: 52 +depth: 5 +=hash_table:fun_table +size: 1024 +used: 641 +objs: 987 +depth: 5 +=hash_table:node_table +size: 16 +used: 1 +objs: 1 +depth: 1 +=hash_table:dist_table +size: 16 +used: 1 +objs: 1 +depth: 1 +=allocated_areas +sys_misc: 57656 +static: 2107456 +atom_space: 163880 143226 +atom_table: 163977 +module_table: 107736 +export_table: 221604 +export_list: 892400 +register_table: 628 +fun_table: 8306 +module_refs: 8592 +loaded_code: 4870996 +dist_table: 691 +node_table: 291 +bits_bufs_size: 0 +bif_timer: 0 +process_table: 3145728 +port_table: 786432 +ets_misc: 131072 +external_alloc: 4870996 +=allocator:sys_alloc +option e: true +option m: libc +=allocator:temp_alloc[0] +versions: 2.1 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option mbsd: 3 +option as: gf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 5 5 +mbcs blocks[temp_alloc] size: 0 11288 11288 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1067 +temp_free calls: 1067 +temp_realloc calls: 1 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 1 5 5 +mbcs blocks[temp_alloc] size: 65544 655448 655448 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 1179648 1179648 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 9479 +temp_free calls: 9478 +temp_realloc calls: 134 +mseg_alloc calls: 4 +mseg_dealloc calls: 4 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 1 1 +mbcs blocks[temp_alloc] size: 0 56 56 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1 +temp_free calls: 1 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 1 1 +mbcs blocks[temp_alloc] size: 0 56 56 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1 +temp_free calls: 1 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 1 1 +mbcs blocks[temp_alloc] size: 0 56 56 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1 +temp_free calls: 1 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 1 1 +mbcs blocks[temp_alloc] size: 0 56 56 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1 +temp_free calls: 1 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 4 4 +mbcs blocks[temp_alloc] size: 0 6296 6296 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 616 +temp_free calls: 616 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 5 5 +mbcs blocks[temp_alloc] size: 0 11576 11576 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1049 +temp_free calls: 1049 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:temp_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 90 +option rsbcmt: 80 +option rmbcmt: 100 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: af +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 5 5 +mbcs blocks[temp_alloc] size: 0 6488 6488 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +temp_alloc calls: 1002 +temp_free calls: 1002 +temp_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 6 81 81 +mbcs blocks[sl_alloc] size: 576 41440 41440 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 294912 294912 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 665 +sl_free calls: 659 +sl_realloc calls: 0 +mseg_alloc calls: 2 +mseg_dealloc calls: 2 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 1 6337 6337 +mbcs blocks[sl_alloc] size: 112 1263320 1263320 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 3 3 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 1343488 1343488 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 11588 +sl_free calls: 11587 +sl_realloc calls: 1 +mseg_alloc calls: 19 +mseg_dealloc calls: 19 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 1 1 +mbcs blocks[sl_alloc] size: 0 64 64 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 1 +sl_free calls: 1 +sl_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 0 +sl_free calls: 0 +sl_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 0 +sl_free calls: 0 +sl_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 0 +sl_free calls: 0 +sl_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 156 156 +mbcs blocks[sl_alloc] size: 0 137448 137448 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 294912 294912 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 279 +sl_free calls: 279 +sl_realloc calls: 0 +mseg_alloc calls: 1 +mseg_dealloc calls: 1 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 261 261 +mbcs blocks[sl_alloc] size: 0 214552 214552 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 294912 294912 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 619 +sl_free calls: 619 +sl_realloc calls: 1 +mseg_alloc calls: 1 +mseg_dealloc calls: 1 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:sl_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 80 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: S +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 166 166 +mbcs blocks[sl_alloc] size: 0 139368 139368 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 294912 294912 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +sl_alloc calls: 411 +sl_free calls: 411 +sl_realloc calls: 0 +mseg_alloc calls: 1 +mseg_dealloc calls: 1 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 41 45 45 +mbcs blocks[std_alloc] size: 399040 406936 406936 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 2 2 2 +mbcs mseg carriers: 1 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 557056 557056 557056 +mbcs mseg carriers size: 524288 +mbcs sys_alloc carriers size: 32768 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 65 +std_free calls: 24 +std_realloc calls: 1 +mseg_alloc calls: 1 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 199 201 201 +mbcs blocks[std_alloc] size: 72664 79840 79840 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 2 2 2 +mbcs mseg carriers: 1 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 294912 294912 294912 +mbcs mseg carriers size: 262144 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 799 +std_free calls: 600 +std_realloc calls: 1 +mseg_alloc calls: 1 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 1 1 +mbcs blocks[std_alloc] size: 64 64 64 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 1 +std_free calls: 0 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 1 1 +mbcs blocks[std_alloc] size: 64 64 64 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 1 +std_free calls: 0 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 1 1 +mbcs blocks[std_alloc] size: 64 64 64 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 1 +std_free calls: 0 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 1 1 +mbcs blocks[std_alloc] size: 64 64 64 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 1 +std_free calls: 0 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 2 2 +mbcs blocks[std_alloc] size: 64 7232 7232 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 6 +std_free calls: 5 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 2 2 +mbcs blocks[std_alloc] size: 64 7232 7232 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 9 +std_free calls: 8 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:std_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: D +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 1 2 2 +mbcs blocks[std_alloc] size: 64 7232 7232 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +std_alloc calls: 11 +std_free calls: 10 +std_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 3909 3914 3914 +mbcs blocks[ll_alloc] size: 10112144 10146648 10146648 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 4 4 4 +mbcs mseg carriers: 3 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 12058624 12058624 12058624 +mbcs mseg carriers size: 11534336 +mbcs sys_alloc carriers size: 524288 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 3916 +ll_free calls: 7 +ll_realloc calls: 0 +mseg_alloc calls: 3 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 11782 11782 11782 +mbcs blocks[ll_alloc] size: 1693840 1693840 1693840 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 3 3 3 +mbcs mseg carriers: 2 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 1835008 1835008 1835008 +mbcs mseg carriers size: 1310720 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 11784 +ll_free calls: 2 +ll_realloc calls: 0 +mseg_alloc calls: 2 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 0 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 0 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 0 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 0 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 668 668 668 +mbcs blocks[ll_alloc] size: 108808 108808 108808 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 668 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 1126 1126 1126 +mbcs blocks[ll_alloc] size: 113352 113352 113352 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 1126 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ll_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 524288 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 85 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: L +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 620 620 620 +mbcs blocks[ll_alloc] size: 56672 56672 56672 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 524288 524288 524288 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 524288 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ll_alloc calls: 620 +ll_free calls: 0 +ll_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 23 69 69 +mbcs blocks[eheap_alloc] size: 309312 314576 314576 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 2 2 2 +mbcs mseg carriers: 1 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 393216 393216 393216 +mbcs mseg carriers size: 262144 +mbcs sys_alloc carriers size: 131072 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 101 +eheap_free calls: 78 +eheap_realloc calls: 0 +mseg_alloc calls: 1 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 95 104 104 +mbcs blocks[eheap_alloc] size: 1355616 2466824 2466824 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 4 4 4 +mbcs mseg carriers: 3 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 3538944 3538944 3538944 +mbcs mseg carriers size: 3407872 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 1 3 3 +sbcs blocks[eheap_alloc] size: 2545504 5091008 5091008 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 1 3 3 +sbcs mseg carriers: 1 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 2555904 5128192 5128192 +sbcs mseg carriers size: 2555904 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 1377 +eheap_free calls: 1281 +eheap_realloc calls: 139 +mseg_alloc calls: 8 +mseg_dealloc calls: 4 +mseg_realloc calls: 2 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 0 +eheap_free calls: 0 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 0 +eheap_free calls: 0 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 0 +eheap_free calls: 0 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 0 +eheap_free calls: 0 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 2 2 +mbcs blocks[eheap_alloc] size: 0 55336 55336 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 2 +eheap_free calls: 2 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 1 2 2 +mbcs blocks[eheap_alloc] size: 72 2800 2800 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 131072 131072 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 3 +eheap_free calls: 2 +eheap_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:eheap_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 50 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 131072 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 45 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: H +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 13 13 +mbcs blocks[eheap_alloc] size: 0 651688 651688 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 3 3 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 131072 1441792 1441792 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 131072 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +eheap_alloc calls: 30 +eheap_free calls: 30 +eheap_realloc calls: 1 +mseg_alloc calls: 2 +mseg_dealloc calls: 2 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 0 0 0 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 0 +mbcs carriers size: 0 0 0 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 0 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 633 633 633 +mbcs blocks[ets_alloc] size: 469536 469536 469536 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 3 3 3 +mbcs mseg carriers: 2 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 1343488 1343488 1343488 +mbcs mseg carriers size: 1310720 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 634 +ets_free calls: 1 +ets_realloc calls: 9 +mseg_alloc calls: 2 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:ets_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: E +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +ets_alloc calls: 0 +ets_free calls: 0 +ets_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +fix type: enif_select_data_state 0 0 +fix type: driver_select_data_state 0 0 +fix type: link 0 0 +fix type: monitor 0 0 +fix type: sl_thr_q_element 448 0 +fix type: process_signal_queue_buffers 0 0 +fix type: magic_indirection 0 0 +fix type: nsched_pid_ref_entry 0 0 +fix type: nsched_magic_ref_entry 0 0 +fix type: bif_timer 0 0 +fix type: hl_ptimer 0 0 +fix type: ll_ptimer 0 0 +fix type: msg_ref 48 48 +fix type: receive_marker_block 0 0 +fix type: proc 4704 4704 +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 35 35 35 +mbcs blocks[fix_alloc] size: 6608 6608 6608 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 189 +fix_free calls: 182 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 267 267 267 +mbcs blocks[fix_alloc] size: 71072 71072 71072 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 2 2 2 +mbcs mseg carriers: 1 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 294912 294912 294912 +mbcs mseg carriers size: 262144 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 629 +fix_free calls: 399 +fix_realloc calls: 0 +mseg_alloc calls: 1 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:fix_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: false +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: F +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +fix_alloc calls: 0 +fix_free calls: 0 +fix_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:literal_alloc +versions: 0.9 3.0 +option e: true +option t: false +option ramv: false +option atags: false +option sbct: 18446744073709551615 +option asbcst: 0 +option rsbcst: 0 +option rsbcmt: 0 +option rmbcmt: 0 +option mmbcs: 1048576 +option mmsbc: 0 +option mmmbc: 18446744073709551615 +option lmbcs: 10485760 +option smbcs: 1048576 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aobf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 209 209 209 +mbcs blocks[literal_alloc] size: 1447384 1447384 1447384 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 2 2 2 +mbcs mseg carriers: 2 +mbcs sys_alloc carriers: 0 +mbcs carriers size: 2097152 2097152 2097152 +mbcs mseg carriers size: 2097152 +mbcs sys_alloc carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +literal_alloc calls: 212 +literal_free calls: 3 +literal_realloc calls: 0 +mseg_alloc calls: 2 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 0 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 40 76 76 +mbcs blocks[binary_alloc] size: 459064 1258696 1258696 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 3 3 3 +mbcs mseg carriers: 2 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 1343488 1343488 1343488 +mbcs mseg carriers size: 1310720 +mbcs sys_alloc carriers size: 32768 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 1 1 +sbcs blocks[binary_alloc] size: 0 823888 823888 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 1 1 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 835584 835584 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 409 +binary_free calls: 369 +binary_realloc calls: 4 +mseg_alloc calls: 9 +mseg_dealloc calls: 7 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 30 143 143 +mbcs blocks[binary_alloc] size: 13056 47272 47272 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 2 2 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 294912 294912 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 15 +mbcs_pool blocks[binary_alloc] size: 3120 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 1 +mbcs_pool carriers size: 262144 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 3105 +binary_free calls: 3060 +binary_realloc calls: 23 +mseg_alloc calls: 1 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 0 +binary_free calls: 0 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 0 +binary_free calls: 0 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 0 +binary_free calls: 0 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 0 +binary_free calls: 0 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 78 78 +mbcs blocks[binary_alloc] size: 0 12416 12416 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 82 +binary_free calls: 82 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 26 26 +mbcs blocks[binary_alloc] size: 0 6568 6568 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 32 +binary_free calls: 32 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:binary_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: B +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 143 143 +mbcs blocks[binary_alloc] size: 0 21808 21808 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +binary_alloc calls: 204 +binary_free calls: 204 +binary_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[0] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 0 +option acful: 0 +option acnl: 0 +option acfml: 0 +option cp: undefined +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 37 37 37 +mbcs blocks[driver_alloc] size: 8096 8096 8096 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 38 +driver_free calls: 1 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[1] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 17 18 18 +mbcs blocks[driver_alloc] size: 4496 15456 15456 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 26 +driver_free calls: 9 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[2] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[3] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[4] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[5] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[6] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[7] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:driver_alloc[8] +versions: 0.9 3.0 +option e: true +option t: 9 +option ramv: false +option atags: true +option sbct: 524288 +option asbcst: 4145152 +option rsbcst: 20 +option rsbcmt: 80 +option rmbcmt: 50 +option mmbcs: 32768 +option mmsbc: 256 +option mmmbc: 18446744073709551615 +option lmbcs: 5242880 +option smbcs: 262144 +option mbcgs: 10 +option acul: 60 +option acful: 0 +option acnl: 1000 +option acfml: 0 +option cp: R +option as: aoffcbf +mbcs blocks[sys_alloc] count: 0 0 0 +mbcs blocks[sys_alloc] size: 0 0 0 +mbcs blocks[temp_alloc] count: 0 0 0 +mbcs blocks[temp_alloc] size: 0 0 0 +mbcs blocks[sl_alloc] count: 0 0 0 +mbcs blocks[sl_alloc] size: 0 0 0 +mbcs blocks[std_alloc] count: 0 0 0 +mbcs blocks[std_alloc] size: 0 0 0 +mbcs blocks[ll_alloc] count: 0 0 0 +mbcs blocks[ll_alloc] size: 0 0 0 +mbcs blocks[eheap_alloc] count: 0 0 0 +mbcs blocks[eheap_alloc] size: 0 0 0 +mbcs blocks[ets_alloc] count: 0 0 0 +mbcs blocks[ets_alloc] size: 0 0 0 +mbcs blocks[fix_alloc] count: 0 0 0 +mbcs blocks[fix_alloc] size: 0 0 0 +mbcs blocks[literal_alloc] count: 0 0 0 +mbcs blocks[literal_alloc] size: 0 0 0 +mbcs blocks[binary_alloc] count: 0 0 0 +mbcs blocks[binary_alloc] size: 0 0 0 +mbcs blocks[driver_alloc] count: 0 0 0 +mbcs blocks[driver_alloc] size: 0 0 0 +mbcs blocks[test_alloc] count: 0 0 0 +mbcs blocks[test_alloc] size: 0 0 0 +mbcs carriers: 1 1 1 +mbcs mseg carriers: 0 +mbcs sys_alloc carriers: 1 +mbcs carriers size: 32768 32768 32768 +mbcs mseg carriers size: 0 +mbcs sys_alloc carriers size: 32768 +mbcs_pool blocks[sys_alloc] count: 0 +mbcs_pool blocks[sys_alloc] size: 0 +mbcs_pool blocks[temp_alloc] count: 0 +mbcs_pool blocks[temp_alloc] size: 0 +mbcs_pool blocks[sl_alloc] count: 0 +mbcs_pool blocks[sl_alloc] size: 0 +mbcs_pool blocks[std_alloc] count: 0 +mbcs_pool blocks[std_alloc] size: 0 +mbcs_pool blocks[ll_alloc] count: 0 +mbcs_pool blocks[ll_alloc] size: 0 +mbcs_pool blocks[eheap_alloc] count: 0 +mbcs_pool blocks[eheap_alloc] size: 0 +mbcs_pool blocks[ets_alloc] count: 0 +mbcs_pool blocks[ets_alloc] size: 0 +mbcs_pool blocks[fix_alloc] count: 0 +mbcs_pool blocks[fix_alloc] size: 0 +mbcs_pool blocks[literal_alloc] count: 0 +mbcs_pool blocks[literal_alloc] size: 0 +mbcs_pool blocks[binary_alloc] count: 0 +mbcs_pool blocks[binary_alloc] size: 0 +mbcs_pool blocks[driver_alloc] count: 0 +mbcs_pool blocks[driver_alloc] size: 0 +mbcs_pool blocks[test_alloc] count: 0 +mbcs_pool blocks[test_alloc] size: 0 +mbcs_pool carriers: 0 +mbcs_pool carriers size: 0 +sbcs blocks[sys_alloc] count: 0 0 0 +sbcs blocks[sys_alloc] size: 0 0 0 +sbcs blocks[temp_alloc] count: 0 0 0 +sbcs blocks[temp_alloc] size: 0 0 0 +sbcs blocks[sl_alloc] count: 0 0 0 +sbcs blocks[sl_alloc] size: 0 0 0 +sbcs blocks[std_alloc] count: 0 0 0 +sbcs blocks[std_alloc] size: 0 0 0 +sbcs blocks[ll_alloc] count: 0 0 0 +sbcs blocks[ll_alloc] size: 0 0 0 +sbcs blocks[eheap_alloc] count: 0 0 0 +sbcs blocks[eheap_alloc] size: 0 0 0 +sbcs blocks[ets_alloc] count: 0 0 0 +sbcs blocks[ets_alloc] size: 0 0 0 +sbcs blocks[fix_alloc] count: 0 0 0 +sbcs blocks[fix_alloc] size: 0 0 0 +sbcs blocks[literal_alloc] count: 0 0 0 +sbcs blocks[literal_alloc] size: 0 0 0 +sbcs blocks[binary_alloc] count: 0 0 0 +sbcs blocks[binary_alloc] size: 0 0 0 +sbcs blocks[driver_alloc] count: 0 0 0 +sbcs blocks[driver_alloc] size: 0 0 0 +sbcs blocks[test_alloc] count: 0 0 0 +sbcs blocks[test_alloc] size: 0 0 0 +sbcs carriers: 0 0 0 +sbcs mseg carriers: 0 +sbcs sys_alloc carriers: 0 +sbcs carriers size: 0 0 0 +sbcs mseg carriers size: 0 +sbcs sys_alloc carriers size: 0 +driver_alloc calls: 0 +driver_free calls: 0 +driver_realloc calls: 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +sys_alloc calls: 1 +sys_free calls: 0 +sys_realloc calls: 0 +=allocator:test_alloc +option e: false +=allocator:mseg_alloc[0] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 2 +cache_hits: 7 +segments: 7 8 8 +segments_watermark: 8 +segments_size: 13631488 14467072 14467072 +mseg_alloc calls: 16 +mseg_dealloc calls: 9 +mseg_realloc calls: 0 +mseg_create calls: 9 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[1] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 5 +cache_hits: 23 +segments: 11 13 13 +segments_watermark: 13 +segments_size: 9371648 11681792 11681792 +mseg_alloc calls: 38 +mseg_dealloc calls: 27 +mseg_realloc calls: 2 +mseg_create calls: 15 +mseg_create_resize calls: 0 +mseg_destroy calls: 1 +mseg_recreate calls: 1 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[2] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 0 +cache_hits: 0 +segments: 0 0 0 +segments_watermark: 0 +segments_size: 0 0 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +mseg_create calls: 0 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[3] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 0 +cache_hits: 0 +segments: 0 0 0 +segments_watermark: 0 +segments_size: 0 0 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +mseg_create calls: 0 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[4] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 0 +cache_hits: 0 +segments: 0 0 0 +segments_watermark: 0 +segments_size: 0 0 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +mseg_create calls: 0 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[5] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 0 +cache_hits: 0 +segments: 0 0 0 +segments_watermark: 0 +segments_size: 0 0 0 +mseg_alloc calls: 0 +mseg_dealloc calls: 0 +mseg_realloc calls: 0 +mseg_create calls: 0 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[6] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 1 +cache_hits: 0 +segments: 0 1 1 +segments_watermark: 1 +segments_size: 0 262144 262144 +mseg_alloc calls: 1 +mseg_dealloc calls: 1 +mseg_realloc calls: 0 +mseg_create calls: 1 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[7] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 1 +cache_hits: 0 +segments: 0 1 1 +segments_watermark: 1 +segments_size: 0 262144 262144 +mseg_alloc calls: 1 +mseg_dealloc calls: 1 +mseg_realloc calls: 0 +mseg_create calls: 1 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:mseg_alloc[8] +version: 0.9 +option amcbf: 4194304 +option rmcbf: 20 +option mcs: 10 +memory kind: all memory +cached_segments: 3 +cache_hits: 0 +segments: 0 3 3 +segments_watermark: 3 +segments_size: 0 1572864 1572864 +mseg_alloc calls: 3 +mseg_dealloc calls: 3 +mseg_realloc calls: 0 +mseg_create calls: 3 +mseg_create_resize calls: 0 +mseg_destroy calls: 0 +mseg_recreate calls: 0 +mseg_clear_cache calls: 0 +mseg_check_cache calls: 0 +=allocator:erts_mmap.default_mmap +option scs: 0 +os mmap size used: 29966336 +=allocator:erts_mmap.literal_mmap +option scs: 1073676288 +option sco: true +option scrpm: false +option scrfsd: 1024 +supercarrier total size: 1073741824 +supercarrier total sa size: 2097152 +supercarrier total sua size: 0 +supercarrier used size: 2162688 +supercarrier used sa size: 2097152 +supercarrier used sua size: 0 +supercarrier used free segs: 0 +supercarrier max free segs: 0 +supercarrier allocated free segs: 0 +supercarrier reserved free segs: 1024 +supercarrier sa free segs: 0 +supercarrier sua free segs: 0 +=allocator:alloc_util +option mmc: 18446744073709551615 +option ycs: 1048576 +option sac: true +=allocator:instr +=proc:<0.0.0> +State: Running +Name: init +Spawned as: erl_init:start/2 +Spawned by: [] +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.10.0>, <0.44.0>, <0.42.0>] +Reductions: 10269 +Stack+heap: 2586 +OldHeap: 4185 +Heap unused: 1928 +OldHeap unused: 2458 +BinVHeap: 0 +OldBinVHeap: 169 +BinVHeap unused: 46422 +OldBinVHeap unused: 46253 +Memory: 55072 +Program counter: 0x0000000103d889fc (init:boot_loop/2 + 84) +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | ACTIVE | RUNNING | ACTIVE_SYS +=proc:<0.1.0> +State: Waiting +Name: erts_code_purger +Spawned as: erts_code_purger:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 11 +Reductions: 23 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 228 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2736 +Program counter: 0x0000000103d82874 (erts_code_purger:wait_for_request/0 + 68) +arity = 0 +Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ +=proc:<0.2.0> +State: Waiting +Spawned as: erts_literal_area_collector:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 7 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103e01368 (erts_literal_area_collector:msg_loop/4 + 136) +arity = 0 +Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ +=proc:<0.3.0> +State: Waiting +Spawned as: erts_dirty_process_signal_handler:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 7 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ +=proc:<0.4.0> +State: Waiting +Spawned as: erts_dirty_process_signal_handler:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 7 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) +arity = 0 +Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ +=proc:<0.5.0> +State: Waiting +Spawned as: erts_dirty_process_signal_handler:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 7 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) +arity = 0 +Internal State: ACT_PRIO_MAX | USR_PRIO_MAX | PRQ_PRIO_MAX | OFF_HEAP_MSGQ +=proc:<0.6.0> +State: Waiting +Spawned as: prim_file:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 6 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103daf94c (prim_file:helper_loop/0 + 68) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.7.0> +State: Waiting +Name: socket_registry +Spawned as: socket_registry:start/0 +Spawned by: <0.0.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Reductions: 8 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 233 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2648 +Program counter: 0x0000000103dbe314 (socket_registry:loop/1 + 84) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.10.0> +State: Waiting +Name: erl_prim_loader +Spawned as: erlang:apply/2 +Spawned by: <0.9.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.0.0>] +Reductions: 468281 +Stack+heap: 6772 +OldHeap: 10958 +Heap unused: 3381 +OldHeap unused: 5568 +BinVHeap: 313 +OldBinVHeap: 0 +BinVHeap unused: 46109 +OldBinVHeap unused: 46422 +Memory: 142752 +Program counter: 0x0000000103dd7c4c (erl_prim_loader:loop/3 + 100) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.42.0> +State: Waiting +Name: logger +Spawned as: proc_lib:init_p/5 +Spawned by: <0.9.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.0.0>] +Reductions: 883 +Stack+heap: 1598 +OldHeap: 376 +Heap unused: 1120 +OldHeap unused: 331 +BinVHeap: 100 +OldBinVHeap: 4 +BinVHeap unused: 46322 +OldBinVHeap unused: 46418 +Memory: 16792 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.44.0> +State: Waiting +Name: application_controller +Spawned as: erlang:apply/2 +Spawned by: <0.9.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 8 +Link list: [<0.0.0>, <0.90.0>, <0.102.0>, <0.46.0>] +Reductions: 92245 +Stack+heap: 28690 +OldHeap: 46422 +Heap unused: 12854 +OldHeap unused: 17270 +BinVHeap: 24 +OldBinVHeap: 0 +BinVHeap unused: 46398 +OldBinVHeap unused: 46422 +Memory: 602080 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.46.0> +State: Waiting +Spawned as: proc_lib:init_p/5 +Spawned by: <0.45.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.44.0>, <0.47.0>] +Reductions: 40 +Stack+heap: 376 +OldHeap: 0 +Heap unused: 29 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 3960 +Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.47.0> +State: Waiting +Spawned as: application_master:start_it/4 +Spawned by: <0.46.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>, <0.46.0>] +Reductions: 545 +Stack+heap: 376 +OldHeap: 376 +Heap unused: 336 +OldHeap unused: 370 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 6880 +Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.49.0> +State: Waiting +Name: kernel_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.47.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 4 +Link list: [<0.47.0>, <0.51.0>, <0.50.0>, <0.55.0>, <0.58.0>, <0.56.0>, <0.63.0>, <0.70.0>, <0.75.0>, <0.74.0>, <0.73.0>, <0.64.0>, <0.61.0>, <0.53.0>] +Reductions: 3772 +Stack+heap: 2586 +OldHeap: 2586 +Heap unused: 618 +OldHeap unused: 2304 +BinVHeap: 8812 +OldBinVHeap: 0 +BinVHeap unused: 37610 +OldBinVHeap unused: 46422 +Memory: 42840 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.50.0> +State: Waiting +Name: code_server +Spawned as: erlang:apply/2 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 221248 +Stack+heap: 28690 +OldHeap: 318187 +Heap unused: 24392 +OldHeap unused: 271366 +BinVHeap: 3930 +OldBinVHeap: 0 +BinVHeap unused: 42492 +OldBinVHeap unused: 46422 +Memory: 2775928 +Program counter: 0x0000000103ee8404 (code_server:loop/1 + 132) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.51.0> +State: Waiting +Name: standard_error_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.52.0>, <0.49.0>] +Reductions: 57 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 128 +OldHeap unused: 0 +BinVHeap: 20 +OldBinVHeap: 0 +BinVHeap unused: 46402 +OldBinVHeap unused: 46422 +Memory: 2816 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.52.0> +State: Waiting +Name: standard_error +Spawned as: erlang:apply/2 +Spawned by: <0.51.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [#Port<0.1>, <0.51.0>] +Reductions: 134 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 118 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2816 +Program counter: 0x0000000103fbbafc (standard_error:server_loop/1 + 76) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.53.0> +State: Waiting +Name: file_server_2 +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 1025 +Stack+heap: 987 +OldHeap: 610 +Heap unused: 685 +OldHeap unused: 575 +BinVHeap: 7 +OldBinVHeap: 0 +BinVHeap unused: 46415 +OldBinVHeap unused: 46422 +Memory: 13776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.55.0> +State: Waiting +Name: inet_db +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 420 +Stack+heap: 376 +OldHeap: 610 +Heap unused: 108 +OldHeap unused: 562 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 8888 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.56.0> +State: Waiting +Name: rex +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>, {to,<0.57.0>,#Ref<0.3756053351.4210294785.45059>}] +Reductions: 41 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 149 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2840 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ +=proc:<0.57.0> +State: Waiting +Spawned as: erlang:apply/2 +Spawned by: <0.56.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 6 +Link list: [{from,<0.56.0>,#Ref<0.3756053351.4210294785.45059>}] +Reductions: 69 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 12 +OldHeap unused: 0 +BinVHeap: 11010 +OldBinVHeap: 0 +BinVHeap unused: 35412 +OldBinVHeap unused: 46422 +Memory: 2908 +Program counter: 0x0000000103ff2290 (rpc:nodes_observer_loop/1 + 88) +arity = 0 +Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | MAYBE_SELF_SIGS +=proc:<0.58.0> +State: Waiting +Name: global_name_server +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 1 +Heap fragment data: 4 +Link list: [<0.49.0>, <0.60.0>, <0.59.0>] +Reductions: 318 +Stack+heap: 610 +OldHeap: 610 +Heap unused: 345 +OldHeap unused: 559 +BinVHeap: 3003 +OldBinVHeap: 0 +BinVHeap unused: 43419 +OldBinVHeap unused: 46422 +Memory: 10932 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.59.0> +State: Waiting +Spawned as: erlang:apply/2 +Spawned by: <0.58.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.58.0>] +Reductions: 39 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 177 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2688 +Program counter: 0x0000000104002e4c (global:loop_the_locker/1 + 484) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.60.0> +State: Waiting +Spawned as: erlang:apply/2 +Spawned by: <0.58.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.58.0>] +Reductions: 7 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 231 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2688 +Program counter: 0x0000000104009898 (global:loop_the_registrar/0 + 80) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.61.0> +State: Waiting +Name: global_group +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.62.0>, <0.49.0>] +Reductions: 112 +Stack+heap: 376 +OldHeap: 0 +Heap unused: 94 +OldHeap unused: 0 +BinVHeap: 4276 +OldBinVHeap: 0 +BinVHeap unused: 42146 +OldBinVHeap unused: 46422 +Memory: 4020 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_MAX | USR_PRIO_MAX | PRQ_PRIO_MAX +=proc:<0.62.0> +State: Waiting +Name: global_group_check +Spawned as: erlang:apply/2 +Spawned by: <0.61.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.61.0>] +Reductions: 6 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 231 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2688 +Program counter: 0x0000000104040eec (global_group:global_group_check_dispatcher/0 + 68) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.63.0> +State: Waiting +Name: erl_signal_server +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 48 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 157 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103edb214 (gen_event:fetch_msg/6 + 84) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.64.0> +State: Waiting +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.69.0>, <0.49.0>] +Reductions: 213 +Stack+heap: 4185 +OldHeap: 0 +Heap unused: 387 +OldHeap unused: 0 +BinVHeap: 15452 +OldBinVHeap: 0 +BinVHeap unused: 30970 +OldBinVHeap unused: 46422 +Memory: 34432 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.65.0> +State: Waiting +Name: user_drv +Spawned as: proc_lib:init_p/5 +Spawned by: <0.64.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.67.0>, <0.69.0>, <0.68.0>] +Reductions: 655 +Stack+heap: 610 +OldHeap: 610 +Heap unused: 208 +OldHeap unused: 487 +BinVHeap: 0 +OldBinVHeap: 82 +BinVHeap unused: 46422 +OldBinVHeap unused: 46340 +Memory: 10752 +Program counter: 0x000000010405efc0 (gen_statem:loop_receive/3 + 136) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.67.0> +State: Waiting +Name: user_drv_writer +Spawned as: proc_lib:init_p/5 +Spawned by: <0.65.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.65.0>] +Reductions: 36 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 164 +OldHeap unused: 0 +BinVHeap: 2 +OldBinVHeap: 0 +BinVHeap unused: 46420 +OldBinVHeap unused: 46422 +Memory: 2864 +Program counter: 0x000000010406d4b4 (prim_tty:writer_loop/2 + 84) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.68.0> +State: Waiting +Name: user_drv_reader +Spawned as: proc_lib:init_p/5 +Spawned by: <0.65.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.65.0>, {from,{prim_tty,tty},#Ref<0.3756053351.4210294785.45124>}] +Reductions: 33 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 165 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2848 +Program counter: 0x000000010406c5f4 (prim_tty:reader_loop/6 + 92) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.69.0> +State: Waiting +Name: user +Spawned as: group:server/4 +Spawned by: <0.65.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.64.0>, <0.65.0>] +Reductions: 287 +Stack+heap: 376 +OldHeap: 376 +Heap unused: 35 +OldHeap unused: 365 +BinVHeap: 2703 +OldBinVHeap: 0 +BinVHeap unused: 43719 +OldBinVHeap unused: 46422 +Memory: 6984 +Program counter: 0x0000000104081600 (group:server_loop/3 + 80) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.70.0> +State: Waiting +Name: logger_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>, <0.72.0>, <0.105.0>, <0.77.0>, <0.71.0>] +Reductions: 556 +Stack+heap: 376 +OldHeap: 376 +Heap unused: 144 +OldHeap unused: 279 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 7088 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.71.0> +State: Waiting +Name: logger_handler_watcher +Spawned as: proc_lib:init_p/5 +Spawned by: <0.70.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.70.0>, {to,<0.105.0>,#Ref<0.3756053351.4210294785.45416>}, {to,<0.77.0>,#Ref<0.3756053351.4210294785.45193>}] +Reductions: 81 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 84 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2904 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.72.0> +State: Scheduled +Name: logger_proxy +Spawned as: proc_lib:init_p/5 +Current call: logger_olp:handle_info/2 +Spawned by: <0.70.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 1494 +Link list: [<0.70.0>] +Reductions: 104 +Stack+heap: 376 +OldHeap: 0 +Heap unused: 211 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 15872 +Program counter: 0x0000000103f753c0 (logger_olp:handle_info/2 + 48) +arity = 2 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | IN_PRQ_NORMAL | ACTIVE | IN_RUNQ | OFF_HEAP_MSGQ +=proc:<0.73.0> +State: Waiting +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 59 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 143 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.74.0> +State: Waiting +Name: kernel_refc +Spawned as: proc_lib:init_p/5 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 3 +Link list: [<0.49.0>] +Reductions: 72 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 140 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2800 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.75.0> +State: Waiting +Name: kernel_safe_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.49.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.49.0>] +Reductions: 90 +Stack+heap: 52 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1328 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.77.0> +State: Waiting +Name: logger_std_h_default +Spawned as: proc_lib:init_p/5 +Spawned by: <0.70.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.78.0>, <0.70.0>, {from,<0.71.0>,#Ref<0.3756053351.4210294785.45193>}] +Reductions: 181 +Stack+heap: 610 +OldHeap: 610 +Heap unused: 546 +OldHeap unused: 516 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 10776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ +=proc:<0.78.0> +State: Waiting +Spawned as: erlang:apply/2 +Spawned by: <0.77.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.77.0>] +Reductions: 9 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 209 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2688 +Program counter: 0x00000001040ba3ac (logger_std_h:file_ctrl_loop/1 + 84) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.90.0> +State: Waiting +Spawned as: proc_lib:init_p/5 +Spawned by: <0.89.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.44.0>, <0.91.0>] +Reductions: 41 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 12 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2816 +Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.91.0> +State: Waiting +Spawned as: application_master:start_it/4 +Spawned by: <0.90.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.92.0>, <0.90.0>] +Reductions: 141 +Stack+heap: 610 +OldHeap: 987 +Heap unused: 358 +OldHeap unused: 984 +BinVHeap: 504 +OldBinVHeap: 0 +BinVHeap unused: 45918 +OldBinVHeap unused: 46422 +Memory: 13640 +Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.92.0> +State: Waiting +Name: inets_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.91.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.91.0>, <0.97.0>, <0.93.0>] +Reductions: 347 +Stack+heap: 96 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1760 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.93.0> +State: Waiting +Name: httpc_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.92.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.92.0>, <0.96.0>, <0.94.0>] +Reductions: 336 +Stack+heap: 94 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1744 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.94.0> +State: Waiting +Name: httpc_profile_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.93.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.95.0>, <0.93.0>] +Reductions: 260 +Stack+heap: 84 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1624 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.95.0> +State: Waiting +Name: httpc_manager +Spawned as: proc_lib:init_p/5 +Spawned by: <0.94.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.94.0>] +Reductions: 174 +Stack+heap: 610 +OldHeap: 610 +Heap unused: 217 +OldHeap unused: 568 +BinVHeap: 2781 +OldBinVHeap: 0 +BinVHeap unused: 43641 +OldBinVHeap unused: 46422 +Memory: 10760 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.96.0> +State: Waiting +Name: httpc_handler_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.93.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.93.0>] +Reductions: 94 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 37 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.97.0> +State: Waiting +Name: httpd_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.92.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.92.0>] +Reductions: 71 +Stack+heap: 54 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1344 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.102.0> +State: Waiting +Spawned as: proc_lib:init_p/5 +Spawned by: <0.101.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.44.0>, <0.103.0>] +Reductions: 59 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 26 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2816 +Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.103.0> +State: Waiting +Spawned as: application_master:start_it/4 +Spawned by: <0.102.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.107.0>, <0.102.0>] +Reductions: 325 +Stack+heap: 987 +OldHeap: 987 +Heap unused: 741 +OldHeap unused: 984 +BinVHeap: 317 +OldBinVHeap: 0 +BinVHeap unused: 46105 +OldBinVHeap unused: 46422 +Memory: 16656 +Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.105.0> +State: Waiting +Name: logger_std_h_ssl_handler +Spawned as: proc_lib:init_p/5 +Spawned by: <0.70.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.106.0>, <0.70.0>, {from,<0.71.0>,#Ref<0.3756053351.4210294785.45416>}] +Reductions: 183 +Stack+heap: 610 +OldHeap: 610 +Heap unused: 496 +OldHeap unused: 516 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 10776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ +=proc:<0.106.0> +State: Waiting +Spawned as: erlang:apply/2 +Spawned by: <0.105.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.105.0>] +Reductions: 9 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 209 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2688 +Program counter: 0x00000001040ba3ac (logger_std_h:file_ctrl_loop/1 + 84) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.107.0> +State: Waiting +Name: ssl_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.103.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.103.0>, <0.112.0>, <0.108.0>] +Reductions: 342 +Stack+heap: 82 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1648 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.108.0> +State: Waiting +Name: ssl_admin_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.107.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.107.0>, <0.111.0>, <0.110.0>, <0.109.0>] +Reductions: 487 +Stack+heap: 112 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1928 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.109.0> +State: Waiting +Name: ssl_pem_cache +Spawned as: proc_lib:init_p/5 +Spawned by: <0.108.0> +Message queue length: 0 +Number of heap fragments: 1 +Heap fragment data: 0 +Link list: [<0.108.0>] +Reductions: 99 +Stack+heap: 376 +OldHeap: 0 +Heap unused: 101 +OldHeap unused: 0 +BinVHeap: 3373 +OldBinVHeap: 0 +BinVHeap unused: 43049 +OldBinVHeap unused: 46422 +Memory: 4008 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.110.0> +State: Waiting +Name: ssl_manager +Spawned as: proc_lib:init_p/5 +Spawned by: <0.108.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.108.0>] +Reductions: 179 +Stack+heap: 610 +OldHeap: 987 +Heap unused: 288 +OldHeap unused: 944 +BinVHeap: 1821 +OldBinVHeap: 0 +BinVHeap unused: 44601 +OldBinVHeap unused: 46422 +Memory: 13776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.111.0> +State: Waiting +Name: tls_client_ticket_store +Spawned as: proc_lib:init_p/5 +Spawned by: <0.108.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.108.0>] +Reductions: 42 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 147 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.112.0> +State: Waiting +Name: ssl_connection_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.107.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.107.0>, <0.120.0>, <0.113.0>] +Reductions: 321 +Stack+heap: 84 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1664 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.113.0> +State: Waiting +Name: tls_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.112.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.112.0>, <0.115.0>, <0.114.0>] +Reductions: 330 +Stack+heap: 86 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1680 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.114.0> +State: Waiting +Name: tls_connection_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.113.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.113.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.115.0> +State: Waiting +Name: tls_server_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.113.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.113.0>, <0.117.0>, <0.119.0>, <0.118.0>, <0.116.0>] +Reductions: 653 +Stack+heap: 116 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2000 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.116.0> +State: Waiting +Name: ssl_listen_tracker_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.115.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.115.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.117.0> +State: Waiting +Name: tls_server_session_ticket_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.115.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.115.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.118.0> +State: Waiting +Name: ssl_server_session_cache_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.115.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.115.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.119.0> +State: Waiting +Name: ssl_upgrade_server_session_cache_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.115.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.115.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.120.0> +State: Waiting +Name: dtls_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.112.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.112.0>, <0.122.0>, <0.121.0>] +Reductions: 330 +Stack+heap: 86 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1680 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.121.0> +State: Waiting +Name: dtls_connection_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.120.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.120.0>] +Reductions: 95 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 64 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.122.0> +State: Waiting +Name: dtls_server_sup +Spawned as: proc_lib:init_p/5 +Current call: erlang:hibernate/3 +Spawned by: <0.120.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.120.0>, <0.124.0>, <0.123.0>] +Reductions: 331 +Stack+heap: 88 +OldHeap: 0 +Heap unused: 4 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 1696 +Program counter: 0x0000000103d822c8 (unknown function) +arity = 3 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.123.0> +State: Waiting +Name: dtls_listener_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.122.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.122.0>] +Reductions: 93 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2864 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.124.0> +State: Waiting +Name: dtls_server_session_cache_sup +Spawned as: proc_lib:init_p/5 +Spawned by: <0.122.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.122.0>] +Reductions: 92 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 62 +OldHeap unused: 0 +BinVHeap: 0 +OldBinVHeap: 0 +BinVHeap unused: 46422 +OldBinVHeap unused: 46422 +Memory: 2776 +Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL +=proc:<0.135.0> +State: Scheduled +Spawned as: erlang:apply/2 +Spawned by: <0.9.0> +Message queue length: 0 +Number of heap fragments: 0 +Heap fragment data: 0 +Link list: [<0.9.0>] +Reductions: 111 +Stack+heap: 233 +OldHeap: 0 +Heap unused: 55 +OldHeap unused: 0 +BinVHeap: 1 +OldBinVHeap: 0 +BinVHeap unused: 46421 +OldBinVHeap unused: 46422 +Memory: 13976 +Program counter: 0x00000001041ff698 (gleam_erlang_ffi:select/2 + 192) +arity = 0 +Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | IN_PRQ_NORMAL | IN_RUNQ | SIG_IN_Q | ACTIVE_SYS +=port:#Port<0.0> +State: CONNECTED +Slot: 0 +Connected: <0.0.0> +Port controls forker process: forker +Input: 0 +Output: 0 +Queue: 0 +=port:#Port<0.1> +State: CONNECTED|BINARY_IO +Slot: 8 +Connected: <0.52.0> +Links: <0.52.0> +Port is UNIX fd not opened by emulator: 2/2 +Input: 0 +Output: 0 +Queue: 0 +=ets:<0.42.0> +Slot: 5110497728 +Table: logger +Name: logger +Buckets: 256 +Chain Length Avg: 0.015625 +Chain Length Max: 1 +Chain Length Min: 0 +Chain Length Std Dev: 0.124020 +Chain Length Expected Std Dev: 0.124756 +Fixed: false +Objects: 4 +Words: 6813 +Type: set +Protection: protected +Compressed: false +Write Concurrency: true +Read Concurrency: true +=ets:<0.44.0> +Slot: 5110509560 +Table: ac_tab +Name: ac_tab +Buckets: 256 +Chain Length Avg: 0.136719 +Chain Length Max: 3 +Chain Length Min: 0 +Chain Length Std Dev: 0.386363 +Chain Length Expected Std Dev: 0.369032 +Fixed: false +Objects: 35 +Words: 4094 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: true +=ets:<0.50.0> +Slot: 5110518176 +Table: code_server +Name: code_server +Buckets: 448 +Chain Length Avg: 1.000000 +Chain Length Max: 8 +Chain Length Min: 0 +Chain Length Std Dev: 1.198958 +Chain Length Expected Std Dev: 0.998883 +Fixed: false +Objects: 448 +Words: 34781 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.50.0> +Slot: 4396206480 +Table: code_names +Name: code_names +Buckets: 256 +Chain Length Avg: 0.203125 +Chain Length Max: 3 +Chain Length Min: 0 +Chain Length Std Dev: 0.456881 +Chain Length Expected Std Dev: 0.449813 +Fixed: false +Objects: 52 +Words: 9409 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396326720 +Table: inet_db +Name: inet_db +Buckets: 256 +Chain Length Avg: 0.121094 +Chain Length Max: 3 +Chain Length Min: 0 +Chain Length Std Dev: 0.360371 +Chain Length Expected Std Dev: 0.347305 +Fixed: false +Objects: 31 +Words: 622 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396330840 +Table: inet_cache +Name: inet_cache +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: bag +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396333344 +Table: inet_hosts_byname +Name: inet_hosts_byname +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396335848 +Table: inet_hosts_byaddr +Name: inet_hosts_byaddr +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396338352 +Table: inet_hosts_file_byname +Name: inet_hosts_file_byname +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396340856 +Table: inet_hosts_file_byaddr +Name: inet_hosts_file_byaddr +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.55.0> +Slot: 4396343360 +Table: inet_sockets +Name: inet_sockets +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.57.0> +Slot: 4396353768 +Table: #Ref<0.3756053351.4210425857.45060> +Name: rex_nodes_observer +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 391 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: true +=ets:<0.58.0> +Slot: 4396358992 +Table: global_locks +Name: global_locks +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.58.0> +Slot: 4396361496 +Table: global_names +Name: global_names +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 391 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: true +=ets:<0.58.0> +Slot: 4396364000 +Table: global_names_ext +Name: global_names_ext +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.58.0> +Slot: 4396366504 +Table: global_pid_names +Name: global_pid_names +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: bag +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.58.0> +Slot: 4396369008 +Table: global_pid_ids +Name: global_pid_ids +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: bag +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.58.0> +Slot: 4396371512 +Table: global_lost_connections +Name: global_lost_connections +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.58.0> +Slot: 4396374016 +Table: global_node_resources +Name: global_node_resources +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.95.0> +Slot: 4412439352 +Table: httpc_manager__session_db +Name: httpc_manager__session_db +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.95.0> +Slot: 4412441856 +Table: httpc_manager__handler_db +Name: httpc_manager__handler_db +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.95.0> +Slot: 4412445768 +Table: #Ref<0.3756053351.4210425857.45356> +Name: httpc_manager__session_cookie_db +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: bag +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.109.0> +Slot: 4412458184 +Table: ssl_pem_cache +Name: ssl_pem_cache +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412471664 +Table: #Ref<0.3756053351.4210425857.45462> +Name: client_ssl_otp_session_cache +Ordered set (AVL tree), Elements: 0 +Objects: 0 +Words: 145 +Type: ordered_set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412472840 +Table: #Ref<0.3756053351.4210425857.45463> +Name: ssl_otp_cacertificate_db +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412475344 +Table: #Ref<0.3756053351.4210425857.45464> +Name: ssl_otp_ca_file_ref +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412477848 +Table: #Ref<0.3756053351.4210425857.45465> +Name: ssl_otp_ca_ref_file_mapping +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412480352 +Table: #Ref<0.3756053351.4210425857.45466> +Name: ssl_otp_crl_cache +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.110.0> +Slot: 4412482856 +Table: #Ref<0.3756053351.4210425857.45467> +Name: ssl_otp_crl_issuer_mapping +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: bag +Protection: protected +Compressed: false +Write Concurrency: false +Read Concurrency: false +=ets:<0.123.0> +Slot: 4412505024 +Table: dtls_listener_sup +Name: dtls_listener_sup +Buckets: 256 +Chain Length Avg: 0.000000 +Chain Length Max: 0 +Chain Length Min: 0 +Chain Length Std Dev: 0.000000 +Chain Length Expected Std Dev: 0.000000 +Fixed: false +Objects: 0 +Words: 311 +Type: set +Protection: public +Compressed: false +Write Concurrency: false +Read Concurrency: false +=timer:<0.55.0> +Message: refresh_timeout +Time left: 3599689 +=timer:<0.111.0> +Message: remove_invalid_tickets +Time left: 7199821 +=timer:<0.110.0> +Message: validate_sessions +Time left: 86404820 +=timer:<0.109.0> +Message: clear_pem_cache +Time left: 119817 +=node:'nonode@nohost' +=no_distribution +=loaded_modules +Current code: 6279844 +Old code: 0 +=mod:erts_code_purger +Current size: 13296 +=mod:erl_init +Current size: 2480 +=mod:init +Current size: 65275 +=mod:prim_buffer +Current size: 4936 +=mod:prim_eval +Current size: 1336 +=mod:prim_inet +Current size: 108445 +=mod:prim_file +Current size: 40897 +=mod:zlib +Current size: 19904 +=mod:socket_registry +Current size: 22176 +=mod:prim_socket +Current size: 50952 +=mod:prim_net +Current size: 10816 +=mod:prim_zip +Current size: 24400 +=mod:erl_prim_loader +Current size: 55760 +=mod:erlang +Current size: 102432 +=mod:erts_internal +Current size: 23968 +=mod:erl_tracer +Current size: 1664 +=mod:erts_literal_area_collector +Current size: 4856 +=mod:erts_dirty_process_signal_handler +Current size: 2296 +=mod:atomics +Current size: 3424 +=mod:counters +Current size: 4112 +=mod:persistent_term +Current size: 1456 +=mod:erl_parse +Current size: 324787 +Current attributes: g2wAAAQxaAJ3A3ZzbmwAAAABbhAAWZz93qXsCLw4KSJjM+fEbWpoAncHcmVtb3ZlZGwAAAADaAN3CHNldF9saW5lYQJrABd1c2UgZXJsX2Fubm86c2V0X2xpbmUvMmgDdw5nZXRfYXR0cmlidXRlc2EBawAuZXJsX2Fubm86e2NvbHVtbixsaW5lLGxvY2F0aW9uLHRleHR9LzEgaW5zdGVhZGgDdw1nZXRfYXR0cmlidXRlYQJrAC5lcmxfYW5ubzp7Y29sdW1uLGxpbmUsbG9jYXRpb24sdGV4dH0vMSBpbnN0ZWFkamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwl5ZWNjcGFyczJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzEwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzEzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMjZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzMxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzM0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzU0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzU3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl83MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzc0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl83OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzgwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl84MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzkyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzk1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTAyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTA5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTIxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEyM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTM1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQ0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQ3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTUwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTUzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTcwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTgyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTg1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTk2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjAyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjA4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjE2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIyMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIyN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjI4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIzMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjM3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQ0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjYwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjY5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjgyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI4NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjg2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjk0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yOTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjk3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yOThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzAxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzA2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzE1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzE5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzM3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzU1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzU4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzYxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzY0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzY3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzcyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNzVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM3NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzc3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzgxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM5M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzk1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDAwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDA2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQwOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDEwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDEzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDIyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDI2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MjdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDMwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDMzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDM2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ0N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQ5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDUyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDcxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDc0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDgzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDg2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDk2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUwM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTA0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUwNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTA3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTExYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTE2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTMwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUzM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTM0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUzN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTQyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTQ2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTUwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTUzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTU3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTYxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTY0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTY3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTcwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU3MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU3NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTc3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTg0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81ODVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81ODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTk3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjAxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjA5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjE0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjIxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYyM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYyN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjI4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjMzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjM2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY0NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQ2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY0OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQ5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY1MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjUyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY2N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjY4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjcyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82ODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY2dvdG9fYWRkX29wYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX2FyZ3VtZW50X2xpc3RhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fYXRvbV9vcl92YXJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY2dvdG9fYXRvbWljYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX2F0dHJfdmFsYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX2F0dHJpYnV0ZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaW5fYmFzZV90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2Jpbl9lbGVtZW50YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX2Jpbl9lbGVtZW50c2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaW5fdW5pdF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2Nnb3RvX2JpbmFyeWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx15ZWNjZ290b19iaW5hcnlfY29tcHJlaGVuc2lvbmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b19iaW5hcnlfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19iaXRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaXRfc2l6ZV9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX2JpdF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX2JpdF90eXBlX2xpc3RhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fY2FzZV9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2NsYXVzZV9hcmdzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2NsYXVzZV9ib2R5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GnllY2Nnb3RvX2NsYXVzZV9ib2R5X2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX2NsYXVzZV9ndWFyZGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjZ290b19jb21wX29wYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX2NyX2NsYXVzZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b19jcl9jbGF1c2VzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2Nnb3RvX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZXhwcl9tYXhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fZXhwcl9yZW1vdGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncOeWVjY2dvdG9fZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fZmllbGRfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b19maWVsZF90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjZ290b19mb3JtYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3E3llY2Nnb3RvX2Z1bl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fZnVuX2NsYXVzZXNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuX3R5cGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuY3Rpb25hB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncWeWVjY2dvdG9fZnVuY3Rpb25fY2FsbGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxh5ZWNjZ290b19mdW5jdGlvbl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncZeWVjY2dvdG9fZnVuY3Rpb25fY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjZ290b19ndWFyZGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b19pZl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9faWZfY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjZ290b19pZl9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3F3llY2Nnb3RvX2ludGVnZXJfb3JfdmFyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2Nnb3RvX2xjX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fbGNfZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY2dvdG9fbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxt5ZWNjZ290b19saXN0X2NvbXByZWhlbnNpb25hB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fbGlzdF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19tYXBfY29tcHJlaGVuc2lvbmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19tYXBfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b19tYXBfZmllbGRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fbWFwX2ZpZWxkX2Fzc29jYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GHllY2Nnb3RvX21hcF9maWVsZF9leGFjdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b19tYXBfZmllbGRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2Nnb3RvX21hcF9rZXlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncWeWVjY2dvdG9fbWFwX3BhaXJfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19tYXBfcGFpcl90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19tYXBfcGF0X2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fbWFwX3R1cGxlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3E3llY2Nnb3RvX21heWJlX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fbWF5YmVfbWF0Y2hhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncaeWVjY2dvdG9fbWF5YmVfbWF0Y2hfZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fbXVsdF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19vcHRfYml0X3NpemVfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19vcHRfYml0X3R5cGVfbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19wYXRfYXJndW1lbnRfbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19wYXRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19wYXRfZXhwcl9tYXhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fcGF0X2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3ByZWZpeF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19yZWNlaXZlX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fcmVjb3JkX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncVeWVjY2dvdG9fcmVjb3JkX2ZpZWxkYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX3JlY29yZF9maWVsZHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fcmVjb3JkX3BhdF9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX3JlY29yZF90dXBsZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19zcGVjX2Z1bmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19zc2FfY2hlY2tfYW5ub2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx55ZWNjZ290b19zc2FfY2hlY2tfYW5ub19jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncfeWVjY2dvdG9fc3NhX2NoZWNrX2Fubm9fY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19zc2FfY2hlY2tfYXJnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx15ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyZ5ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdF9ieXRlc19sc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyJ5ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdF9yZXN0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3HnllY2Nnb3RvX3NzYV9jaGVja19jbGF1c2VfYXJnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyF5ZWNjZ290b19zc2FfY2hlY2tfY2xhdXNlX2FyZ3NfbHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fc3NhX2NoZWNrX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fc3NhX2NoZWNrX2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GnllY2Nnb3RvX3NzYV9jaGVja19mdW5fcmVmYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3G3llY2Nnb3RvX3NzYV9jaGVja19saXN0X2xpdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx55ZWNjZ290b19zc2FfY2hlY2tfbGlzdF9saXRfbHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncaeWVjY2dvdG9fc3NhX2NoZWNrX21hcF9rZXlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncieWVjY2dvdG9fc3NhX2NoZWNrX21hcF9rZXlfZWxlbWVudGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyN5ZWNjZ290b19zc2FfY2hlY2tfbWFwX2tleV9lbGVtZW50c2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx95ZWNjZ290b19zc2FfY2hlY2tfbWFwX2tleV9saXN0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3KXllY2Nnb3RvX3NzYV9jaGVja19tYXBfa2V5X3R1cGxlX2VsZW1lbnRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX3NzYV9jaGVja19wYXRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fc3NhX2NoZWNrX3BhdHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAnceeWVjY2dvdG9fc3NhX2NoZWNrX3doZW5fY2xhdXNlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3H3llY2Nnb3RvX3NzYV9jaGVja193aGVuX2NsYXVzZXNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fc3RyaW5nc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjZ290b190YWlsYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX3RvcF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3RvcF90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b190cnlfY2F0Y2hhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fdHJ5X2NsYXVzZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b190cnlfY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b190cnlfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxt5ZWNjZ290b190cnlfb3B0X3N0YWNrdHJhY2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncOeWVjY2dvdG9fdHVwbGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY2dvdG9fdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b190eXBlX2d1YXJkYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX3R5cGVfZ3VhcmRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX3R5cGVfc2lnYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3R5cGVfc2lnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b190eXBlX3NwZWNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fdHlwZWRfYXR0cl92YWxhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fdHlwZWRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b190eXBlZF9leHByc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxx5ZWNjZ290b190eXBlZF9yZWNvcmRfZmllbGRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xN19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNV9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zM19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80N19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81N19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl83Ml9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzc0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl84MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzgyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzkxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85M19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzk0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85Nl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzk3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfIWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjc3XylhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N18sYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdfLT5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N186OmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3Xzo9YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfO2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3XzwtYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfPWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3Xz0+YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdfPj5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N18/PWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjc3X11hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY3BhcnMyXzI3N19hZnRlcmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjcGFyczJfMjc3X2FuZGFsc29hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY3BhcnMyXzI3N19jYXRjaGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjcGFyczJfMjc3X2RvdGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfMjc3X2Vsc2VhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY3BhcnMyXzI3N19lbmRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N19vZmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjcGFyczJfMjc3X29yZWxzZWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfMjc3X3doZW5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N198YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdffHxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N199YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yOTdfKWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjk3XyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI5N18tPmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjk3XzphAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI5N189YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2NwYXJzMl8yOTdfd2hlbmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMjk4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMjk5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzAxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzAzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzEwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzEyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzE0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzE2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzIzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzMyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzMzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzU1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzU3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzcxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzcyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzc2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzc4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzg5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMzkwXyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzM5MF8+PmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMzkwX11hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzM5MF99YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81ODBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRfKWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfNTg0XyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzU4NF86PWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfNTg0XzthAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzU4NF89PmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfNTg0Xz4+YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRfXWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjcGFyczJfNTg0X2RvdGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfNTg0X3doZW5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzU4NF98YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRffWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTkzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjAxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjEwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjEzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjIzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjMwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjMyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjU4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjU5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjYzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjczX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjgwX2EBamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfcGFyc2UuZXJsag== +=mod:gen_server +Current size: 63325 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAn6RHe9GB6oWz+pkuBfW8K2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwdtY19zZW5kYQZqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fc2VydmVyLmVybGo= +=mod:lists +Current size: 99909 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAOC+znQeEHQ4VS7RSlxghx2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwp1a2V5bWVyZ2VsYQNqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9saXN0cy5lcmxq +=mod:logger_config +Current size: 10240 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAb9Y3k+aGr3hN5q3KdYRHtWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9jb25maWcuZXJsag== +=mod:logger_simple_h +Current size: 14726 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZpGbBxoDz/i1DSNMxmWqyWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zaW1wbGVfaC5lcmxq +=mod:logger_filters +Current size: 4971 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAzwk48RcCYOF3ih2/kJrSm2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9maWx0ZXJzLmVybGo= +=mod:error_logger +Current size: 18021 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA9gWmGAB8sC+HfxKvyFw6Impq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2Vycm9yX2xvZ2dlci5lcmxq +=mod:code_server +Current size: 63936 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAALWQXUe7tZIQ9G/1/MX9D1Gpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2NvZGVfc2VydmVyLmVybGo= +=mod:heart +Current size: 15601 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAyNN9gP1SxPnm7mbH8bBrLmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdw5zZW5kX2hlYXJ0X2NtZGECamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2hlYXJ0LmVybGo= +=mod:gen_event +Current size: 54224 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbZDZYq2ZehgrVmXuTdC9R2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fZXZlbnQuZXJsag== +=mod:logger +Current size: 53655 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAhEpn4LkeE+Ww1jrqwO/DAmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlci5lcmxq +=mod:application_controller +Current size: 112719 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8aNg4vAvqQ7+MnTc6uXOCWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAOC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIuZXJsag== +=mod:application_master +Current size: 17949 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAFPdt+BWDgI08/IO4pGy/Lmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsANC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uX21hc3Rlci5lcmxq +=mod:erl_eval +Current size: 90511 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAK4B/QUWPpeHDqFA51B7m72pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfZXZhbC5lcmxq +=mod:kernel +Current size: 16434 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAG5SBkG5rwhqTCCPgosVpj2poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbC5lcmxq +=mod:proc_lib +Current size: 44783 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHPr2dE+lcIfVFaldy2suaGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wcm9jX2xpYi5lcmxq +=mod:file_io_server +Current size: 45573 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA37XXQKgVyzgAhQMymk22nGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGVfaW9fc2VydmVyLmVybGo= +=mod:logger_server +Current size: 31925 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA6Q4YfPDTeP55K3VJGDToJGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zZXJ2ZXIuZXJsag== +=mod:erl_lint +Current size: 310700 +Current attributes: g2wAAAAFaAJ3A3ZzbmwAAAABbhAAZov2Nvzfuz6qcuUHe4NKempoAncHcmVtb3ZlZGwAAAABaAN3C21vZGlmeV9saW5lYQJrACB1c2UgZXJsX3BhcnNlOm1hcF9hbm5vLzIgaW5zdGVhZGpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdwh0eXBlX2RlZmEGamgCdwhkaWFseXplcmwAAAABaAJ3CG5vX21hdGNoaAJ3E2RlcHJlY2F0ZWRfZnVuY3Rpb25hBWpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdw9kZXByZWNhdGVkX3R5cGVhBWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfbGludC5lcmxq +=mod:supervisor +Current size: 78800 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAvy8OsDDanMrThS86JgsLempoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdXBlcnZpc29yLmVybGo= +=mod:ets +Current size: 58700 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAegV/9YrrRq9A7VQccwP0Ompq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9ldHMuZXJsag== +=mod:filename +Current size: 42212 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAxfgNPRE4P/8E8mNjf3nXyGpoAncHcmVtb3ZlZGwAAAABaAN3CGZpbmRfc3JjdwFfawAjdXNlIGZpbGVsaWI6ZmluZF9zb3VyY2UvMSwzIGluc3RlYWRqaAJ3B3JlbW92ZWRsAAAAAWgDdxJzYWZlX3JlbGF0aXZlX3BhdGhhAWsAKHVzZSBmaWxlbGliOnNhZmVfcmVsYXRpdmVfcGF0aC8yIGluc3RlYWRqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9maWxlbmFtZS5lcmxq +=mod:application +Current size: 15002 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAO3mC1yO32EqVKdQkgma7DGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uLmVybGo= +=mod:code +Current size: 45920 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA1rkrrsCyRltM8IqivNv2SWpoAncHcmVtb3ZlZGwAAAABaAN3BnJlaGFzaGEAawAsdGhlIGNvZGUgcGF0aCBjYWNoZSBmZWF0dXJlIGhhcyBiZWVuIHJlbW92ZWRqaAJ3B3JlbW92ZWRsAAAAAWgDdxBpc19tb2R1bGVfbmF0aXZlYQFrABVIaVBFIGhhcyBiZWVuIHJlbW92ZWRqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2NvZGUuZXJsag== +=mod:file +Current size: 44191 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAphblwlDFWwErKfvQJHHIAmpoAncKZGVwcmVjYXRlZGwAAAABaAN3CHBpZDJuYW1lYQFrACl0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGUuZXJsag== +=mod:gen +Current size: 30362 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAKKwsTHEn6t3sqSA1qygYyWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwdkb19jYWxsYQRqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncPZG9fc2VuZF9yZXF1ZXN0YQNqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW4uZXJsag== +=mod:error_handler +Current size: 5146 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA4HX9MacsLFi2Dumg+HZ9nWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2Vycm9yX2hhbmRsZXIuZXJsag== +=mod:logger_backend +Current size: 7115 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAoZ+yGJmvZZw2G+8fUAejtmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9iYWNrZW5kLmVybGo= +=mod:file_server +Current size: 13379 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAS7N4uM27g+5Rn3kNnsFYOWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGVfc2VydmVyLmVybGo= +=mod:logger_proxy +Current size: 8857 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZduPYGozFFaJ/GMceJxnQWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9wcm94eS5lcmxq +=mod:logger_olp +Current size: 24420 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAhELBVPfG1AFHg6Hw3ACHYmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9vbHAuZXJsag== +=mod:queue +Current size: 26237 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA+pdK0iaAqDWnRiWIegfYd2poAncKZGVwcmVjYXRlZGwAAAABaAN3BGxhaXRhAWsAGHVzZSBxdWV1ZTpsaWF0LzEgaW5zdGVhZGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9xdWV1ZS5lcmxq +=mod:proplists +Current size: 13618 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3DEXDWFyP/1Am4oxQYybO2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wcm9wbGlzdHMuZXJsag== +=mod:peer +Current size: 56511 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA2E9Rc/B6+K6No16io4F+QWpoAncGYXV0aG9yawASbWF4aW1mY2FAZ21haWwuY29taAJ3CWJlaGF2aW91cmwAAAABdwpnZW5fc2VydmVyamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wZWVyLmVybGo= +=mod:beam_lib +Current size: 65994 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAGAqMJUP/V7MaDY2WDvcZVmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9iZWFtX2xpYi5lcmxq +=mod:binary +Current size: 21293 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjusm/cmFBBM4V7Pu9tlybmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9iaW5hcnkuZXJsag== +=mod:gb_sets +Current size: 22658 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjJKuKbdSxi4KHdHBwvnc2mpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nYl9zZXRzLmVybGo= +=mod:gb_trees +Current size: 15903 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA/9kxl1ANy9kH79Yem0U5aGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nYl90cmVlcy5lcmxq +=mod:os +Current size: 17693 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAe2HUBCvqya+anjsKRMYUTGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL29zLmVybGo= +=mod:unicode +Current size: 41929 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAq+fzNG8vRL24dz9E5ZlDaGpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxkb19vX2JpbmFyeTJhAmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy91bmljb2RlLmVybGo= +=mod:erl_features +Current size: 41135 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAYXEynt+8kTRkG8V/OHR0VGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfZmVhdHVyZXMuZXJsag== +=mod:standard_error +Current size: 10663 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAkMo760coteTN1xzpRgHT6mpoAncJYmVoYXZpb3VybAAAAAF3EXN1cGVydmlzb3JfYnJpZGdlamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3N0YW5kYXJkX2Vycm9yLmVybGo= +=mod:supervisor_bridge +Current size: 19251 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA+ZJzPQgBcV7sQuq/XPk182poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrADMvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdXBlcnZpc29yX2JyaWRnZS5lcmxq +=mod:inet_db +Current size: 68294 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAvdtm5APLt4opHuq1WdBdWGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfZGIuZXJsag== +=mod:inet_config +Current size: 25206 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAlZNV6TqRS7nNxz74j7FCe2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfY29uZmlnLmVybGo= +=mod:inet_udp +Current size: 6941 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAhrzZ8+DOe1LKVcGE3RxIN2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfdWRwLmVybGo= +=mod:inet +Current size: 81321 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAATt4eXjFDEUu+qumuN+EMfWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXQuZXJsag== +=mod:inet_parse +Current size: 38147 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAEf7OexUeePpkEPPFZJPf+mpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfcGFyc2UuZXJsag== +=mod:rpc +Current size: 29484 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA6VB2VShMOzVQaYOrBGnThmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqaAJ3B3JlbW92ZWRsAAAAAmgDdxZzYWZlX211bHRpX3NlcnZlcl9jYWxsYQJrACN1c2UgcnBjOm11bHRpX3NlcnZlcl9jYWxsLzIgaW5zdGVhZGgDdxZzYWZlX211bHRpX3NlcnZlcl9jYWxsYQNrACN1c2UgcnBjOm11bHRpX3NlcnZlcl9jYWxsLzMgaW5zdGVhZGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3JwYy5lcmxq +=mod:global +Current size: 117570 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA3Un4q7IE1kKFWWXOqg1fv2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dsb2JhbC5lcmxq +=mod:net_kernel +Current size: 95518 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARVYlffpB+M9gMCitj2vQyGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL25ldF9rZXJuZWwuZXJsag== +=mod:rand +Current size: 82048 +Current attributes: g2wAAAAMaAJ3A3ZzbmwAAAABbhAASiW5LD/Qej4GU+MSRZDXfWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxleHNwbHVzX3NlZWRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpleHNzc19zZWVkYQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncJZXhzcF9uZXh0YQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncKZXhzc3NfbmV4dGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3DGV4c3BsdXNfanVtcGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3CWV4c3BfanVtcGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3DGV4c3BsdXNfanVtcGEEamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3CmV4cm9wX3NlZWRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxleHJvcF9uZXh0X3NhAmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpleHJvcF9uZXh0YQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncKZXhyb3BfanVtcGEFamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9yYW5kLmVybGo= +=mod:maps +Current size: 22152 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA74KFUusq6FvLJdXoy86SW2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2wAAAACaAJ3CGl0ZXJhdG9yYQFoAncIaXRlcmF0b3JhAmpqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9tYXBzLmVybGo= +=mod:erl_distribution +Current size: 6886 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAADU5yO8e4eK+9kI484ejKXGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VybF9kaXN0cmlidXRpb24uZXJsag== +=mod:global_group +Current size: 54044 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAh7yoy6UVXzAVQ4pFGW90/2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dsb2JhbF9ncm91cC5lcmxq +=mod:erpc +Current size: 42486 +Current attributes: g2wAAAALaAJ3A3ZzbmwAAAABbhAAE8Ii4JDYcOGscJTGZx5vtmpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncEY2FsbGEFdwlub19yZXR1cm5qaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncMc2VuZF9yZXF1ZXN0YQRqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncMc2VuZF9yZXF1ZXN0YQZqaAJ3CGRpYWx5emVybAAAAAJoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHJlY2VpdmVfcmVzcG9uc2VhAncJbm9fcmV0dXJuamgCdwhkaWFseXplcmwAAAACaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxByZWNlaXZlX3Jlc3BvbnNlYQN3CW5vX3JldHVybmpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncNd2FpdF9yZXNwb25zZWECdwlub19yZXR1cm5qaAJ3CGRpYWx5emVybAAAAAJoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DmNoZWNrX3Jlc3BvbnNlYQJ3CW5vX3JldHVybmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpyZXFpZHNfYWRkYQNqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncOcmVxaWRzX3RvX2xpc3RhAWpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncGcmVzdWx0YQR3CW5vX3JldHVybmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VycGMuZXJsag== +=mod:user_sup +Current size: 5411 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAZjtvFsHpi2oYJNyK+BJegmpoAncJYmVoYXZpb3VybAAAAAF3EXN1cGVydmlzb3JfYnJpZGdlamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3VzZXJfc3VwLmVybGo= +=mod:user_drv +Current size: 50600 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAV06qfcXDHq1HAw73vMm622poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zdGF0ZW1qag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3VzZXJfZHJ2LmVybGo= +=mod:gen_statem +Current size: 78929 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA0LgXEqMkSoYlnYjTV7wab2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fc3RhdGVtLmVybGo= +=mod:prim_tty +Current size: 71017 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAqFwI4sYbIil9FhV3gj2j2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3ByaW1fdHR5LmVybGo= +=mod:io +Current size: 24369 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAApRaglMWA2VsOdFJPVz133Gpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACQvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pby5lcmxq +=mod:group +Current size: 43672 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA851sQvKFjbfq7qcvrtJnqGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dyb3VwLmVybGo= +=mod:edlin +Current size: 38096 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHOkgEIAXEUgr+NtGF+NeWmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lZGxpbi5lcmxq +=mod:io_lib +Current size: 37231 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAFFeN9kWE1DsEb/D+MxWXDGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pb19saWIuZXJsag== +=mod:logger_sup +Current size: 1730 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAviM55aoW6hCnDVjE2ajfCGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zdXAuZXJsag== +=mod:group_history +Current size: 40520 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAArNDTXjp3PaP6UETyYRPOCWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dyb3VwX2hpc3RvcnkuZXJsag== +=mod:io_lib_format +Current size: 36306 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAzwUVMCw5gpCCMKijxfMqt2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC8vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pb19saWJfZm9ybWF0LmVybGo= +=mod:logger_handler_watcher +Current size: 3686 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAUSb4uQDBVYdufFjEDGNpDWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAOC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9oYW5kbGVyX3dhdGNoZXIuZXJsag== +=mod:timer +Current size: 19608 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8aNh9jNZ5oP9N/HqUh4WWWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy90aW1lci5lcmxq +=mod:kernel_config +Current size: 7013 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAKNVWveNYHE/lG53RxdAyrWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbF9jb25maWcuZXJsag== +=mod:kernel_refc +Current size: 6107 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAP51mX3wVLHv5Wt44rH/VNWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbF9yZWZjLmVybGo= +=mod:erl_signal_handler +Current size: 3791 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA49r9WmTF+h6BuvDW6CLhI2poAncJYmVoYXZpb3VybAAAAAF3CWdlbl9ldmVudGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsANC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VybF9zaWduYWxfaGFuZGxlci5lcmxq +=mod:logger_formatter +Current size: 27269 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3DgK6nIfXOBrGY11b3Ebc2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9mb3JtYXR0ZXIuZXJsag== +=mod:logger_std_h +Current size: 29691 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHZBnbQf+yJ3LNQvEEyzqCGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zdGRfaC5lcmxq +=mod:logger_h_common +Current size: 27015 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA8gXXQTDseI2RwAfchg+PjGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9oX2NvbW1vbi5lcmxq +=mod:c +Current size: 55738 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAx9sEY92lk5eCgdpeFRvl7Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACMvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9jLmVybGo= +=mod:orddict +Current size: 9632 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjVNEV8MyenfougmvyJOIn2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vcmRkaWN0LmVybGo= +=mod:raw_file_io +Current size: 3544 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAfByFOutd4XmaTTyQZS+wGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3Jhd19maWxlX2lvLmVybGo= +=mod:erl_scan +Current size: 80286 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAcWizQoku/ar098CvlBYw3GpoAncHcmVtb3ZlZGwAAAADaAN3DXNldF9hdHRyaWJ1dGVhA2sAH3VzZSBlcmxfYW5ubzpzZXRfbGluZS8yIGluc3RlYWRoA3cPYXR0cmlidXRlc19pbmZvdwFfawAydXNlIGVybF9hbm5vOntjb2x1bW4sbGluZSxsb2NhdGlvbix0ZXh0fS8xIGluc3RlYWRoA3cKdG9rZW5faW5mb3cBX2sAQnVzZSBlcmxfc2Nhbjp7Y2F0ZWdvcnksY29sdW1uLGxpbmUsbG9jYXRpb24sc3ltYm9sLHRleHR9LzEgaW5zdGVhZGpoAncMcmVtb3ZlZF90eXBlbAAAAANoA3cGY29sdW1uYQBrAB11c2UgZXJsX2Fubm86Y29sdW1uKCkgaW5zdGVhZGgDdwRsaW5lYQBrABt1c2UgZXJsX2Fubm86bGluZSgpIGluc3RlYWRoA3cIbG9jYXRpb25hAGsAH3VzZSBlcmxfYW5ubzpsb2NhdGlvbigpIGluc3RlYWRqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfc2Nhbi5lcmxq +=mod:erl_anno +Current size: 10627 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAkayPNmhEhCtPmVnzA+f9ompq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfYW5uby5lcmxq +=mod:ordsets +Current size: 5786 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAe8kg2+9uOF1cs2tFmVktbGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vcmRzZXRzLmVybGo= +=mod:otp_internal +Current size: 74930 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAgb4GzSRirByHf+zgWa/J7mpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdwhvYnNvbGV0ZWEDamgCdwhkaWFseXplcmwAAAABaAJ3CG5vX21hdGNoaAJ3DW9ic29sZXRlX3R5cGVhA2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vdHBfaW50ZXJuYWwuZXJsag== +=mod:erl_internal +Current size: 12465 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAH3E66VDgOMxAJ3swqD+T7Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfaW50ZXJuYWwuZXJsag== +=mod:'aoc2023@@main' +Current size: 4742 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAPugzxohB3mrGKcTr3YDYhmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9hb2MyMDIzQEBtYWluLmVybGo= +=mod:epp +Current size: 96168 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAB23d4tmH4coUKKRIT0Ew7Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcHAuZXJsag== +=mod:inets_app +Current size: 1391 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA4PrNF10KpcErAmiRnvRGo2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwthcHBsaWNhdGlvbmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA0L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfYXBwLmVybGo= +=mod:inets_sup +Current size: 4174 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAZYq0pFoYUy98UilKMAgr/2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA0L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfc3VwLmVybGo= +=mod:httpc_sup +Current size: 2503 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAgy7v3K4IkDuZDOu8Nwe8CGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19zdXAuZXJsag== +=mod:httpc_profile_sup +Current size: 3949 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAARi0bgARtwsiompJMTfZqgGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA+L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19wcm9maWxlX3N1cC5lcmxq +=mod:httpc +Current size: 51321 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAQJGijj06WciIsf9zWi9RRWpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdw1pbmV0c19zZXJ2aWNlamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawAyL2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwYy5lcmxq +=mod:httpc_manager +Current size: 45805 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAzA6/cmiSsI/VuMRE+DH5q2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpnZW5fc2VydmVyamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA6L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19tYW5hZ2VyLmVybGo= +=mod:inets_trace +Current size: 16599 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA13W3kiQ3DajF6u1MEp8wcGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfdHJhY2UuZXJsag== +=mod:httpc_cookie +Current size: 26127 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAj0Py8LgBp/5GCHesApuGKmpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA5L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19jb29raWUuZXJsag== +=mod:httpc_handler_sup +Current size: 2111 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAATMTRW8HC2a2GvzQjWwLttGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA+L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19oYW5kbGVyX3N1cC5lcmxq +=mod:httpd_sup +Current size: 10999 +Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAtKUXEBjK/e98uHvMb3rrF2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oA3cBZHcPU0VSVkVSX1NPRlRXQVJFawALaW5ldHMvOS4wLjFoAncBaWsANS9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9zZXJ2ZXIvLi4vaW5ldHNfYXBwaAJ3AWlrADQvYnVpbGRyb290L290cC9saWIvaW5ldHMvc3JjL2h0dHBfc2VydmVyLy4uL2h0dHBfbGliaAJ3D3BhcnNlX3RyYW5zZm9ybXcSc3lzX3ByZV9hdHRyaWJ1dGVzaAR3CWF0dHJpYnV0ZXcGaW5zZXJ0dwdhcHBfdnNuawALaW5ldHMtOS4wLjFqaAJ3BnNvdXJjZWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9zZXJ2ZXIvaHR0cGRfc3VwLmVybGo= +=mod:ssl_app +Current size: 2100 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbg8A0DC0t7URrYxQKjqz0ymfamgCdwliZWhhdmlvdXJsAAAAAXcLYXBwbGljYXRpb25qag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2FwcC5lcmxq +=mod:ssl_logger +Current size: 40894 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA9nZNLNkysVW+ZQmCjJHduWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawApL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2xvZ2dlci5lcmxq +=mod:ssl_sup +Current size: 2196 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAo3LCwydF/2W9pRiIxy3DjmpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3N1cC5lcmxq +=mod:ssl_admin_sup +Current size: 4152 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA9wr0ynjnPAnTVBgUTNkR0mpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAsL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2FkbWluX3N1cC5lcmxq +=mod:ssl_pem_cache +Current size: 6752 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAinKSIwX0SCBgGNnR5VuBb2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAsL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3BlbV9jYWNoZS5lcmxq +=mod:ssl_pkix_db +Current size: 19921 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAUN9wTKLXhUyfxv7o/6pFYmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAqL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3BraXhfZGIuZXJsag== +=mod:ssl_manager +Current size: 20578 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAXyE921kAFR6srVwQYOzMTGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAqL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX21hbmFnZXIuZXJsag== +=mod:ssl_config +Current size: 19916 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA6GmieDGRPQVKnnM+8AnHe2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawApL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2NvbmZpZy5lcmxq +=mod:ssl_client_session_cache_db +Current size: 4099 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAADmgKYfPII/p5bEqiJ5mcpWpoAncJYmVoYXZpb3VybAAAAAF3FXNzbF9zZXNzaW9uX2NhY2hlX2FwaWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA6L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2NsaWVudF9zZXNzaW9uX2NhY2hlX2RiLmVybGo= +=mod:tls_client_ticket_store +Current size: 13052 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAxBJUXnCWGs2oPQjBp6L9A2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX2NsaWVudF90aWNrZXRfc3RvcmUuZXJsag== +=mod:ssl_connection_sup +Current size: 2373 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA5ryHccs+ohUp1ydgfH9YvWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAxL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2Nvbm5lY3Rpb25fc3VwLmVybGo= +=mod:tls_sup +Current size: 2186 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAALTAE2+O6t5PW4UO1HK8EwWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3N1cC5lcmxq +=mod:tls_connection_sup +Current size: 2221 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAJvmM1aYsddPoTZrW98XRumpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAxL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX2Nvbm5lY3Rpb25fc3VwLmVybGo= +=mod:tls_server_sup +Current size: 2971 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAz0U8v3nIm1ZY5f3kum4r5WpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAtL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3NlcnZlcl9zdXAuZXJsag== +=mod:ssl_listen_tracker_sup +Current size: 2635 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAOGJZxWhtwUTvf1bKcQvuyGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA1L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2xpc3Rlbl90cmFja2VyX3N1cC5lcmxq +=mod:tls_server_session_ticket_sup +Current size: 2770 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARMHYqHUw2NS1m1UIvB3reGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA8L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3NlcnZlcl9zZXNzaW9uX3RpY2tldF9zdXAuZXJsag== +=mod:ssl_server_session_cache_sup +Current size: 2269 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAByPBY6olcmybwiutwebctWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA7L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3NlcnZlcl9zZXNzaW9uX2NhY2hlX3N1cC5lcmxq +=mod:ssl_upgrade_server_session_cache_sup +Current size: 3355 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAMxn80z9MoSuZx9BdUpz512poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawBDL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3VwZ3JhZGVfc2VydmVyX3Nlc3Npb25fY2FjaGVfc3VwLmVybGo= +=mod:dtls_sup +Current size: 2203 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAzEhJZ7CGB/FJN8cXbhi9UWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAnL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zdXAuZXJsag== +=mod:dtls_connection_sup +Current size: 2302 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARTy7MXOOcU51LrywTcn5CWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAyL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19jb25uZWN0aW9uX3N1cC5lcmxq +=mod:dtls_server_sup +Current size: 2332 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA1ajQs9tDRTHhujDcDcscHmpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAuL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zZXJ2ZXJfc3VwLmVybGo= +=mod:dtls_listener_sup +Current size: 3390 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAMsV5mY/deSztKjjCFxfzBWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAwL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19saXN0ZW5lcl9zdXAuZXJsag== +=mod:dtls_server_session_cache_sup +Current size: 2286 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAYQzAm4CTe8XSrf2cwuhLS2poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA8L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zZXJ2ZXJfc2Vzc2lvbl9jYWNoZV9zdXAuZXJsag== +=mod:aoc2023_test +Current size: 3021 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAIDzQyy7+ohaS/lZYEnHV6mpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbi9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9hb2MyMDIzX3Rlc3QuZXJsag== +=mod:showtime +Current size: 7589 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAASs9ziZ84gk8YQPJee7zfKmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAai9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZS5lcmxq +=mod:'gleam@erlang' +Current size: 5630 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAtN0gkiNwSV+DDvuhn5+jrGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGVybGFuZy5lcmxq +=mod:'gleam@list' +Current size: 33260 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAnSllczgawr65cI3tzxLzUGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGxpc3QuZXJsag== +=mod:'glint@flag' +Current size: 25019 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAWH/YkAkx0LbtUA424nvbMGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAai9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnRAZmxhZy5lcmxq +=mod:'glint@flag@constraint' +Current size: 7000 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAqroPg4gdgq3ImnzPTggyoGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnRAZmxhZ0Bjb25zdHJhaW50LmVybGo= +=mod:'gleam@set' +Current size: 6639 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZnB2CU+bKlUidhVR0LnxHWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHNldC5lcmxq +=mod:'gleam@dict' +Current size: 6120 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAUASYtitXRdExDDzR4vPOGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGRpY3QuZXJsag== +=mod:glint +Current size: 18505 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8af8T+Jw5viRaaFGJe+TImpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAZS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnQuZXJsag== +=mod:'gleam@map' +Current size: 5055 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbOLYAgbwbyWo2C1h7jpfH2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG1hcC5lcmxq +=mod:'gleam_community@colour' +Current size: 24404 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAljaAlIiPJ6KY0wAzgFEHsGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAhy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2NvbW11bml0eV9jb2xvdXIvX2dsZWFtX2FydGVmYWN0cy9nbGVhbV9jb21tdW5pdHlAY29sb3VyLmVybGo= +=mod:'gleam@int' +Current size: 11239 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAvfyk3FUpUDfPJUBGvGzaM2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGludC5lcmxq +=mod:'gleam@float' +Current size: 8605 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAwvf3WDPwF8eL3tZjwLdPvGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAci9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGZsb2F0LmVybGo= +=mod:'gleam@result' +Current size: 8298 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAdINyuhBKzZsZG3pV5EZaVWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHJlc3VsdC5lcmxq +=mod:'gleam@function' +Current size: 10100 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAABwPVPBZqz4aY1ziaTMPL82pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGZ1bmN0aW9uLmVybGo= +=mod:'gleam@string' +Current size: 12638 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbnTY1/YcMIh38pIxTgLMm2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHN0cmluZy5lcmxq +=mod:gleam_stdlib +Current size: 35605 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAfiGJYP8AkzvoXZ0YMrXSlmpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtX3N0ZGxpYi5lcmxq +=mod:string +Current size: 113669 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAWQd6Le8JB4/gRSVlV2lBNWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2wAAAACaAJ3BXN0YWNrYQJoAncIbGVuZ3RoX2JhA2pqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdHJpbmcuZXJsag== +=mod:unicode_util +Current size: 1073461 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbg8AXORlGYYDsuY+eHtBuoYFamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzbAAAAANoAncCY3BhAWgCdwJnY2EBaAJ3CmdjX3ByZXBlbmRhAmpqag== +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy91bmljb2RlX3V0aWwuZXJsag== +=mod:snag +Current size: 4922 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAG5uviABLq1rTj5x/VJZ0uGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAYy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NuYWcvX2dsZWFtX2FydGVmYWN0cy9zbmFnLmVybGo= +=mod:'gleam@string_builder' +Current size: 5894 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA60rqd/vw/4Yk1Xn9mUIvUGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAey9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHN0cmluZ19idWlsZGVyLmVybGo= +=mod:'showtime@internal@erlang@event_handler' +Current size: 6427 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAesteT6kF6RvqO2kV/0gQ7Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAiC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAZXZlbnRfaGFuZGxlci5lcmxq +=mod:'gleam@otp@actor' +Current size: 10710 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAiu2xMkLOQbtFaM3BzoGdrGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX290cC9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG90cEBhY3Rvci5lcmxq +=mod:'gleam@erlang@process' +Current size: 15774 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAtSkhind80R8EMukoR6vkNWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAey9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGVybGFuZ0Bwcm9jZXNzLmVybGo= +=mod:gleam_erlang_ffi +Current size: 18854 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAMiyJ/P+Ak/snrkTct7KA+Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtX2VybGFuZ19mZmkuZXJsag== +=mod:sys +Current size: 25414 +Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAqJumm2a32a1+cgYA+0oFeGpoAncKZGVwcmVjYXRlZGwAAAABaAN3CWdldF9kZWJ1Z2EDawBaaW5jb3JyZWN0bHkgZG9jdW1lbnRlZCBhbmQgb25seSBmb3IgaW50ZXJuYWwgdXNlLiBDYW4gb2Z0ZW4gYmUgcmVwbGFjZWQgd2l0aCBzeXM6Z2V0X2xvZy8xamo= +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zeXMuZXJsag== +=mod:'showtime@internal@erlang@module_handler' +Current size: 5600 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA266xv4+Y/ZBeOm9hxQclbWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAiS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAbW9kdWxlX2hhbmRsZXIuZXJsag== +=mod:'showtime@internal@erlang@discover' +Current size: 10957 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAACiFC4pbvgv+igrT/QELa0Wpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAgy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAZGlzY292ZXIuZXJsag== +=mod:'showtime@internal@common@common_event_handler' +Current size: 6222 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAATc4tRrLUrjDY13p3a0mfM2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAjy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBjb21tb25AY29tbW9uX2V2ZW50X2hhbmRsZXIuZXJsag== +=mod:simplifile +Current size: 11471 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAg7QYQ/6hEp7KUPQeePbxIGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NpbXBsaWZpbGUvX2dsZWFtX2FydGVmYWN0cy9zaW1wbGlmaWxlLmVybGo= +=mod:'gleam@option' +Current size: 6842 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA7ba+EZRfQIRK4LJH6y8VQGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG9wdGlvbi5lcmxq +=mod:simplifile_erl +Current size: 6790 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAALrwXLSXXrQUhBuYY6MoxsWpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NpbXBsaWZpbGUvX2dsZWFtX2FydGVmYWN0cy9zaW1wbGlmaWxlX2VybC5lcmxq +=mod:filelib +Current size: 31796 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3TrIJYJQZ31EtFlP1T81tGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9maWxlbGliLmVybGo= +=mod:'gleam@dynamic' +Current size: 38851 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAl/t9vhYnIwY0q12jzqtah2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGR5bmFtaWMuZXJsag== +=mod:'day7@day7_test' +Current size: 4223 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAJPCDfy0Jji3eOEeobotB3Gpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9kYXk3QGRheTdfdGVzdC5lcmxq +=mod:'showtime@internal@erlang@runner' +Current size: 4500 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAADg32TsjXMXKsJRgK3TDrDGpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAgS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAcnVubmVyLmVybGo= +=mod:showtime_ffi +Current size: 10209 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAkt2yuDpHeMFcxuk1dvnE6Gpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbi9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZV9mZmkuZXJsag== +=mod:'showtime@tests@should' +Current size: 6938 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAARbeuMDVpt+ZmkAn+XaYh8mpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUB0ZXN0c0BzaG91bGQuZXJsag== +=mod:'day7@solve' +Current size: 10243 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAArXGXSdtYEewD099OEybQ4mpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9kYXk3QHNvbHZlLmVybGo= +=mod:'showtime@internal@reports@formatter' +Current size: 23921 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbZh74abXA6ppaWvDUqdhA2pq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAhS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEByZXBvcnRzQGZvcm1hdHRlci5lcmxq +=mod:'gleam@io' +Current size: 3562 +Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZbMfKh/MIOHz0dIn+IIj+Gpq +Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGlvLmVybGo= +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 39 +Address: 0x000000010421c3a4 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 30 +Address: 0x0000000103e76f50 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 22 +Address: 0x0000000103fb4fe8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 3 +Address: 0x000000010400c9a0 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 34 +Address: 0x000000010414b9c8 +Refc: 1 +=fun +Module: socket_registry +Uniq: 8180509 +Index: 0 +Address: 0x0000000103dc1758 +Refc: 1 +=fun +Module: logger_formatter +Uniq: 60349323 +Index: 1 +Address: 0x00000001040b64c0 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 0 +Address: 0x00000001040d26b0 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 5 +Address: 0x0000000103e3c140 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 1 +Address: 0x0000000103eb2d08 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 5 +Address: 0x00000001041524d0 +Refc: 2 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 4 +Address: 0x00000001040d0540 +Refc: 2 +=fun +Module: 'glint@flag@constraint' +Uniq: 83988546 +Index: 3 +Address: 0x000000010414e3d8 +Refc: 2 +=fun +Module: 'gleam@set' +Uniq: 15699406 +Index: 2 +Address: 0x000000010414fa68 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 56 +Address: 0x0000000103e759e8 +Refc: 1 +=fun +Module: maps +Uniq: 48010870 +Index: 2 +Address: 0x0000000104036d98 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 29 +Address: 0x000000010414abf0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 5 +Address: 0x0000000104029d10 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@event_handler' +Uniq: 124289607 +Index: 2 +Address: 0x00000001041f7afc +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 33 +Address: 0x0000000104009d20 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 48 +Address: 0x000000010421d078 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 10 +Address: 0x0000000104160d88 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 6 +Address: 0x0000000104158cb8 +Refc: 1 +=fun +Module: gen_event +Uniq: 37613186 +Index: 6 +Address: 0x0000000103ee1738 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 7 +Address: 0x00000001041fc1d4 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 4 +Address: 0x0000000103fb9ee0 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 17 +Address: 0x0000000104146dc4 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 13 +Address: 0x0000000103d93480 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 11 +Address: 0x0000000103feda78 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 90 +Address: 0x0000000103e71d70 +Refc: 1 +=fun +Module: gen +Uniq: 105431365 +Index: 0 +Address: 0x0000000103e0ff18 +Refc: 3 +=fun +Module: supervisor +Uniq: 63985753 +Index: 5 +Address: 0x0000000103e4cad8 +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 1 +Address: 0x0000000103f5a008 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 62 +Address: 0x0000000103eaf540 +Refc: 2 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 5 +Address: 0x0000000104129d98 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 13 +Address: 0x0000000103e79bc0 +Refc: 2 +=fun +Module: httpc +Uniq: 36342138 +Index: 10 +Address: 0x0000000104109c18 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@module_handler' +Uniq: 57223230 +Index: 0 +Address: 0x0000000104207ad4 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 3 +Address: 0x0000000103dcd620 +Refc: 1 +=fun +Module: code +Uniq: 38778589 +Index: 2 +Address: 0x0000000103e22d70 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 16 +Address: 0x000000010402d478 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 100 +Address: 0x0000000103e710f4 +Refc: 1 +=fun +Module: inet_db +Uniq: 46329474 +Index: 2 +Address: 0x0000000103fc4e40 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 14 +Address: 0x000000010400bb80 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 29 +Address: 0x000000010421a968 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 5 +Address: 0x000000010420b330 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 21 +Address: 0x00000001040dd8c0 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 8 +Address: 0x0000000103ecbb40 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 28 +Address: 0x0000000103eb0d18 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 3 +Address: 0x0000000103e87d70 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 4 +Address: 0x0000000104147168 +Refc: 1 +=fun +Module: beam_lib +Uniq: 45141944 +Index: 1 +Address: 0x0000000103f99ba0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 47 +Address: 0x0000000103e76020 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 8 +Address: 0x000000010414c680 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 0 +Address: 0x0000000103ef3d3c +Refc: 1 +=fun +Module: logger +Uniq: 1449854 +Index: 0 +Address: 0x0000000103ed6110 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 43 +Address: 0x0000000103eb0110 +Refc: 1 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 1 +Address: 0x0000000104227bd0 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 3 +Address: 0x0000000103fe5680 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 1 +Address: 0x0000000104209460 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 22 +Address: 0x0000000103e77d2c +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 17 +Address: 0x0000000104159158 +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 8 +Address: 0x00000001041fc094 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 73 +Address: 0x0000000103e73e08 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 4 +Address: 0x00000001040fc6a4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 42 +Address: 0x000000010414c798 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 8 +Address: 0x00000001040d58b8 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 13 +Address: 0x0000000103e3b694 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 9 +Address: 0x0000000103eb2130 +Refc: 1 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 5 +Address: 0x00000001041f9860 +Refc: 2 +=fun +Module: c +Uniq: 124725464 +Index: 11 +Address: 0x00000001040cb508 +Refc: 2 +=fun +Module: httpc +Uniq: 36342138 +Index: 7 +Address: 0x0000000104109e38 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 48 +Address: 0x0000000103e75fc8 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 16 +Address: 0x0000000103dcce18 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 12 +Address: 0x0000000103fb5258 +Refc: 2 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 6 +Address: 0x0000000103dd5abc +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 29 +Address: 0x000000010402c4c8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 107 +Address: 0x0000000103e74414 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 25 +Address: 0x000000010400a4c0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 8 +Address: 0x000000010421ce60 +Refc: 2 +=fun +Module: file +Uniq: 1459081 +Index: 2 +Address: 0x0000000103e19554 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 2 +Address: 0x0000000104161598 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 5 +Address: 0x0000000103d9445c +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 3 +Address: 0x0000000103feec90 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 82 +Address: 0x0000000103e7253c +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 7 +Address: 0x000000010414c598 +Refc: 1 +=fun +Module: showtime +Uniq: 22478307 +Index: 2 +Address: 0x000000010413fa10 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 38 +Address: 0x0000000103eb03ac +Refc: 1 +=fun +Module: sys +Uniq: 62925399 +Index: 1 +Address: 0x00000001042065c8 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 42 +Address: 0x000000010421c860 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 5 +Address: 0x0000000103e7b940 +Refc: 2 +=fun +Module: rpc +Uniq: 70687560 +Index: 4 +Address: 0x0000000103ff5e84 +Refc: 1 +=fun +Module: inet_config +Uniq: 64624012 +Index: 3 +Address: 0x0000000103fd3b08 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 6 +Address: 0x0000000104224028 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 17 +Address: 0x0000000103fb4f78 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 7 +Address: 0x0000000104020c40 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 6 +Address: 0x000000010400c558 +Refc: 2 +=fun +Module: gen_statem +Uniq: 58250722 +Index: 2 +Address: 0x0000000104068118 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 21 +Address: 0x000000010421a340 +Refc: 1 +=fun +Module: ets +Uniq: 30908443 +Index: 0 +Address: 0x0000000103e3c5e8 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 0 +Address: 0x0000000103ecc63c +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 4 +Address: 0x0000000103eb2810 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 8 +Address: 0x0000000104153980 +Refc: 2 +=fun +Module: showtime_ffi +Uniq: 122038219 +Index: 2 +Address: 0x0000000104221120 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 12 +Address: 0x0000000104146a10 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 39 +Address: 0x0000000103e76350 +Refc: 2 +=fun +Module: maps +Uniq: 48010870 +Index: 5 +Address: 0x0000000104036b58 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 16 +Address: 0x000000010414c028 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 9 +Address: 0x0000000104226a80 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 14 +Address: 0x000000010402cfa0 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 3 +Address: 0x0000000103f8cfbc +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 36 +Address: 0x000000010400bd1c +Refc: 1 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 9 +Address: 0x0000000104209508 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 11 +Address: 0x0000000103fe5150 +Refc: 2 +=fun +Module: prim_tty +Uniq: 75477062 +Index: 2 +Address: 0x00000001040782a0 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 9 +Address: 0x0000000104158850 +Refc: 2 +=fun +Module: ssl_config +Uniq: 64895055 +Index: 3 +Address: 0x0000000104134118 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 0 +Address: 0x00000001041fc8ec +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 9 +Address: 0x0000000103fb9d10 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 65 +Address: 0x0000000103e74fa4 +Refc: 1 +=fun +Module: logger_simple_h +Uniq: 105730862 +Index: 2 +Address: 0x0000000103efcd88 +Refc: 1 +=fun +Module: supervisor +Uniq: 63985753 +Index: 10 +Address: 0x0000000103e4c31c +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 10 +Address: 0x0000000103f59190 +Refc: 5 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 49 +Address: 0x0000000103eafcc0 +Refc: 1 +=fun +Module: gleam_stdlib +Uniq: 79074729 +Index: 0 +Address: 0x000000010416a914 +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 1 +Address: 0x0000000103ddb680 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 3 +Address: 0x00000001040c5c88 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 8 +Address: 0x0000000103e7b18c +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 8 +Address: 0x0000000103dcd328 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 7 +Address: 0x00000001040437d0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 21 +Address: 0x000000010402c8b0 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 4 +Address: 0x0000000103fb4000 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 99 +Address: 0x0000000103e71188 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 17 +Address: 0x000000010400b6e4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 0 +Address: 0x000000010421d9c8 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 8 +Address: 0x000000010420bda8 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 21 +Address: 0x0000000103ecb0cc +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 23 +Address: 0x0000000103eb1430 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 18 +Address: 0x00000001040dcf28 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 1 +Address: 0x0000000104147318 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 42 +Address: 0x0000000103e761b0 +Refc: 1 +=fun +Module: user_drv +Uniq: 115201613 +Index: 1 +Address: 0x0000000104059384 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 15 +Address: 0x000000010414c0a8 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 13 +Address: 0x0000000103ef2658 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 46 +Address: 0x0000000103eafed0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 34 +Address: 0x000000010421ab28 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 4 +Address: 0x0000000103fe55e8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 29 +Address: 0x0000000103e771f8 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 20 +Address: 0x0000000104159980 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 33 +Address: 0x000000010414b230 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 5 +Address: 0x00000001040d3c90 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 8 +Address: 0x0000000103e3bf04 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 12 +Address: 0x0000000103eb1dc0 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 0 +Address: 0x0000000104153d7c +Refc: 1 +=fun +Module: logger_h_common +Uniq: 73693308 +Index: 0 +Address: 0x00000001040c2750 +Refc: 1 +=fun +Module: 'glint@flag@constraint' +Uniq: 83988546 +Index: 0 +Address: 0x000000010414e7f0 +Refc: 1 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 0 +Address: 0x00000001041f9a98 +Refc: 2 +=fun +Module: zlib +Uniq: 85031762 +Index: 0 +Address: 0x0000000103db9dc8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 63 +Address: 0x0000000103e75178 +Refc: 1 +=fun +Module: group +Uniq: 88293013 +Index: 0 +Address: 0x00000001040897e8 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 24 +Address: 0x000000010414a200 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 16 +Address: 0x0000000103ef1a64 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 10 +Address: 0x0000000104042da4 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 6 +Address: 0x00000001040297f0 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 28 +Address: 0x000000010400a1c0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 15 +Address: 0x000000010421bd5c +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 9 +Address: 0x0000000104160cdc +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 1 +Address: 0x0000000104159538 +Refc: 2 +=fun +Module: gen_event +Uniq: 37613186 +Index: 3 +Address: 0x0000000103ee1f10 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 10 +Address: 0x0000000103d921e8 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 1 +Address: 0x0000000103fba0a0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 89 +Address: 0x0000000103e71e70 +Refc: 1 +=fun +Module: supervisor +Uniq: 63985753 +Index: 2 +Address: 0x0000000103e4cbd8 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 2 +Address: 0x0000000103f59a88 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 57 +Address: 0x0000000103eaf984 +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 9 +Address: 0x0000000103de1a30 +Refc: 1 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 0 +Address: 0x000000010412acf0 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 64 +Address: 0x0000000103eaf3d8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 0 +Address: 0x0000000103e7c3ac +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 0 +Address: 0x0000000103dcd720 +Refc: 1 +=fun +Module: code +Uniq: 38778589 +Index: 5 +Address: 0x0000000103e22b18 +Refc: 1 +=fun +Module: inet_db +Uniq: 46329474 +Index: 7 +Address: 0x0000000103fce5f0 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 9 +Address: 0x000000010400c1b4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 24 +Address: 0x0000000104219808 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 0 +Address: 0x000000010420bfc0 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 13 +Address: 0x0000000103ecb610 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 31 +Address: 0x0000000103eb0988 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 18 +Address: 0x000000010416143c +Refc: 1 +=fun +Module: beam_lib +Uniq: 45141944 +Index: 2 +Address: 0x0000000103f998f8 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 0 +Address: 0x0000000103e87ec0 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 9 +Address: 0x0000000104146bf4 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 34 +Address: 0x0000000103e768a0 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 23 +Address: 0x000000010414b9f8 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 5 +Address: 0x0000000103ef2d4c +Refc: 1 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 4 +Address: 0x0000000104227980 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 2 +Address: 0x00000001042090a0 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 12 +Address: 0x0000000103fe4ee8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 21 +Address: 0x0000000103e77fc8 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 12 +Address: 0x0000000104158bdc +Refc: 1 +=fun +Module: io_lib +Uniq: 6600873 +Index: 2 +Address: 0x0000000104096d28 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 76 +Address: 0x0000000103e7355c +Refc: 1 +=fun +Module: epp +Uniq: 124355082 +Index: 7 +Address: 0x00000001040fbf48 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 41 +Address: 0x000000010414c6b0 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 52 +Address: 0x0000000103eafc48 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 13 +Address: 0x00000001040d8740 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 4 +Address: 0x0000000103de2530 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 55 +Address: 0x0000000103e75b8c +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 4 +Address: 0x000000010410a0d0 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 13 +Address: 0x0000000103dcd0e8 +Refc: 1 +=fun +Module: standard_error +Uniq: 123115530 +Index: 0 +Address: 0x0000000103fbd440 +Refc: 3 +=fun +Module: global_group +Uniq: 133931896 +Index: 2 +Address: 0x0000000104043a78 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@runner' +Uniq: 6773126 +Index: 0 +Address: 0x000000010421fad4 +Refc: 1 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 3 +Address: 0x0000000103dd2aa8 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 15 +Address: 0x0000000103fb4dd8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 110 +Address: 0x0000000103e78be0 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 20 +Address: 0x000000010400b098 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 7 +Address: 0x000000010421ced8 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 18 +Address: 0x0000000103ecb2a8 +Refc: 2 +=fun +Module: 'gleam@erlang' +Uniq: 90512636 +Index: 0 +Address: 0x0000000104140c68 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 1 +Address: 0x0000000104161788 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 2 +Address: 0x0000000103d87ad8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 81 +Address: 0x0000000103e725a4 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 6 +Address: 0x0000000103feea70 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 2 +Address: 0x000000010414cae0 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 10 +Address: 0x0000000103ef2908 +Refc: 4 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 33 +Address: 0x0000000103eb0788 +Refc: 1 +=fun +Module: gleam_erlang_ffi +Uniq: 130811285 +Index: 0 +Address: 0x0000000104200600 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 41 +Address: 0x000000010421c80c +Refc: 1 +=fun +Module: rpc +Uniq: 70687560 +Index: 7 +Address: 0x0000000103ff6040 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 24 +Address: 0x0000000103e77798 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 3 +Address: 0x00000001042242c8 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 20 +Address: 0x0000000103fb4c40 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 4 +Address: 0x0000000104020d10 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 1 +Address: 0x000000010400cca4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 36 +Address: 0x000000010414c228 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 16 +Address: 0x000000010421b89c +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 5 +Address: 0x0000000103ecc038 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 7 +Address: 0x0000000103eb23c0 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 2 +Address: 0x00000001040dff84 +Refc: 2 +=fun +Module: glint +Uniq: 18128761 +Index: 7 +Address: 0x00000001041539e0 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 7 +Address: 0x0000000103e3c024 +Refc: 1 +=fun +Module: 'gleam@set' +Uniq: 15699406 +Index: 0 +Address: 0x000000010414fb38 +Refc: 2 +=fun +Module: logger_server +Uniq: 19349920 +Index: 8 +Address: 0x0000000103e87cd8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 58 +Address: 0x0000000103e62720 +Refc: 2 +=fun +Module: maps +Uniq: 48010870 +Index: 0 +Address: 0x0000000104032b40 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 31 +Address: 0x000000010414af10 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 12 +Address: 0x00000001042275b0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 11 +Address: 0x000000010402b4c8 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 6 +Address: 0x0000000103f8cb00 +Refc: 1 +=fun +Module: 'showtime@internal@erlang@event_handler' +Uniq: 124289607 +Index: 0 +Address: 0x00000001041f7b88 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 50 +Address: 0x000000010421d448 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 12 +Address: 0x0000000104160f04 +Refc: 1 +=fun +Module: prim_tty +Uniq: 75477062 +Index: 1 +Address: 0x0000000104078348 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 4 +Address: 0x0000000104159260 +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 5 +Address: 0x00000001041fc3ec +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 10 +Address: 0x0000000103fb9b58 +Refc: 2 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 9 +Address: 0x0000000103fee730 +Refc: 2 +=fun +Module: 'day7@day7_test' +Uniq: 115477595 +Index: 1 +Address: 0x000000010421f230 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 68 +Address: 0x0000000103e744c0 +Refc: 2 +=fun +Module: logger_simple_h +Uniq: 105730862 +Index: 1 +Address: 0x0000000103efcdb8 +Refc: 2 +=fun +Module: gen +Uniq: 105431365 +Index: 2 +Address: 0x0000000103e0fdd8 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 7 +Address: 0x0000000103e4c6cc +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 7 +Address: 0x0000000103f59580 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 60 +Address: 0x0000000103eaf6f4 +Refc: 1 +=fun +Module: gleam_stdlib +Uniq: 79074729 +Index: 3 +Address: 0x0000000104168768 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 12 +Address: 0x0000000103de1748 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 6 +Address: 0x00000001040cba20 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 15 +Address: 0x0000000103e798c0 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 12 +Address: 0x0000000104109a58 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@module_handler' +Uniq: 57223230 +Index: 2 +Address: 0x0000000104207cbc +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 5 +Address: 0x0000000103dcd260 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 22 +Address: 0x000000010402cb28 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 7 +Address: 0x0000000103fb2e48 +Refc: 2 +=fun +Module: code +Uniq: 38778589 +Index: 0 +Address: 0x0000000103e22fd0 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 9 +Address: 0x0000000104020c0c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 102 +Address: 0x0000000103e6cfb8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 12 +Address: 0x000000010400bed4 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 11 +Address: 0x000000010420c44c +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 31 +Address: 0x000000010421aba8 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 10 +Address: 0x0000000103ecba6c +Refc: 3 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 18 +Address: 0x0000000103eb1868 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 6 +Address: 0x0000000104146f78 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 41 +Address: 0x0000000103e762a8 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 10 +Address: 0x000000010414c4b0 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 2 +Address: 0x0000000103ef3684 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 41 +Address: 0x0000000103eb01fc +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 33 +Address: 0x000000010421ab58 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 1 +Address: 0x0000000103fe5720 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 7 +Address: 0x0000000104208948 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 16 +Address: 0x0000000103e79598 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 75 +Address: 0x0000000103e736a0 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 2 +Address: 0x00000001040fca1c +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 15 +Address: 0x0000000103eb1ad8 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 10 +Address: 0x00000001040d6ab8 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 15 +Address: 0x0000000103e3b54c +Refc: 1 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 7 +Address: 0x00000001041f97b0 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 9 +Address: 0x00000001040cb7a8 +Refc: 2 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 2 +Address: 0x00000001040d0480 +Refc: 2 +=fun +Module: 'aoc2023@@main' +Uniq: 70697990 +Index: 0 +Address: 0x00000001040ea8a8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 50 +Address: 0x0000000103e75dd0 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 18 +Address: 0x0000000103dccb70 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 9 +Address: 0x000000010404301c +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 10 +Address: 0x0000000103fb29c8 +Refc: 2 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 4 +Address: 0x0000000103dd5b84 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 3 +Address: 0x000000010402a9d8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 31 +Address: 0x0000000104009e40 +Refc: 1 +=fun +Module: file +Uniq: 1459081 +Index: 0 +Address: 0x0000000103e1963c +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 10 +Address: 0x000000010421cbb8 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 4 +Address: 0x0000000104160fb0 +Refc: 1 +=fun +Module: gen_event +Uniq: 37613186 +Index: 0 +Address: 0x0000000103edc348 +Refc: 2 +=fun +Module: erl_features +Uniq: 44278689 +Index: 2 +Address: 0x0000000103fb9ff8 +Refc: 2 +=fun +Module: init +Uniq: 72673429 +Index: 7 +Address: 0x0000000103d943f8 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 1 +Address: 0x0000000103fef0d8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 92 +Address: 0x0000000103e71a78 +Refc: 2 +=fun +Module: file_io_server +Uniq: 82162284 +Index: 1 +Address: 0x0000000103e92898 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 36 +Address: 0x0000000103eb0500 +Refc: 1 +=fun +Module: showtime +Uniq: 22478307 +Index: 0 +Address: 0x000000010413fce0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 44 +Address: 0x000000010421cae0 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 67 +Address: 0x0000000103eaec10 +Refc: 2 +=fun +Module: rpc +Uniq: 70687560 +Index: 2 +Address: 0x0000000103ff60e0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 7 +Address: 0x0000000103e54ed8 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 4 +Address: 0x0000000104224220 +Refc: 1 +=fun +Module: code +Uniq: 38778589 +Index: 8 +Address: 0x0000000103e22568 +Refc: 1 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 1 +Address: 0x0000000104020fd8 +Refc: 2 +=fun +Module: gen_server +Uniq: 22931368 +Index: 0 +Address: 0x0000000103f1edb0 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 4 +Address: 0x0000000103fcec9c +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 4 +Address: 0x000000010400c8e0 +Refc: 1 +=fun +Module: gen_statem +Uniq: 58250722 +Index: 0 +Address: 0x000000010405e830 +Refc: 2 +=fun +Module: simplifile +Uniq: 17272755 +Index: 3 +Address: 0x000000010420bac4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 23 +Address: 0x0000000104219c6c +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 2 +Address: 0x0000000103ecc36c +Refc: 1 +=fun +Module: httpc_manager +Uniq: 90163599 +Index: 0 +Address: 0x0000000104112eb0 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 17 +Address: 0x000000010416139c +Refc: 1 +=fun +Module: ets +Uniq: 30908443 +Index: 2 +Address: 0x0000000103e3c300 +Refc: 1 +=fun +Module: erl_init +Uniq: 96508615 +Index: 0 +Address: 0x0000000103d860a8 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 26 +Address: 0x0000000103eb0fc0 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 10 +Address: 0x00000001041538c0 +Refc: 2 +=fun +Module: showtime_ffi +Uniq: 122038219 +Index: 0 +Address: 0x0000000104221598 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 5 +Address: 0x0000000103e87ab8 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 14 +Address: 0x0000000104146950 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 33 +Address: 0x0000000103e768d8 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 18 +Address: 0x000000010414bf00 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 7 +Address: 0x00000001042275e0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 12 +Address: 0x000000010402b830 +Refc: 2 +=fun +Module: inets_trace +Uniq: 58819832 +Index: 0 +Address: 0x00000001041156c8 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 1 +Address: 0x0000000103f8cd98 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 9 +Address: 0x0000000103fe53f8 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 15 +Address: 0x0000000104158f14 +Refc: 1 +=fun +Module: ssl_config +Uniq: 64895055 +Index: 1 +Address: 0x00000001041346a8 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 15 +Address: 0x0000000103fb92a8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 67 +Address: 0x0000000103e74538 +Refc: 2 +=fun +Module: logger_simple_h +Uniq: 105730862 +Index: 4 +Address: 0x0000000103efca28 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 12 +Address: 0x0000000103e4c178 +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 8 +Address: 0x0000000103f594f8 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 55 +Address: 0x0000000103eafa10 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 7 +Address: 0x0000000103de1ee4 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 1 +Address: 0x00000001040cbe68 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 10 +Address: 0x0000000103e7a4b8 +Refc: 2 +=fun +Module: httpc +Uniq: 36342138 +Index: 1 +Address: 0x000000010410a4b0 +Refc: 2 +=fun +Module: httpc_cookie +Uniq: 22295768 +Index: 0 +Address: 0x000000010411a790 +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 10 +Address: 0x0000000103dcd230 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 1 +Address: 0x0000000104043b68 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 2 +Address: 0x0000000103fb3be0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 27 +Address: 0x000000010402e088 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 109 +Address: 0x0000000103e77eb8 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 9 +Address: 0x0000000103fcdf74 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 23 +Address: 0x000000010400a8f0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 2 +Address: 0x000000010421d758 +Refc: 1 +=fun +Module: ets +Uniq: 30908443 +Index: 17 +Address: 0x0000000103e3bd88 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 23 +Address: 0x0000000103eca998 +Refc: 3 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 21 +Address: 0x0000000103eb1560 +Refc: 2 +=fun +Module: 'gleam@result' +Uniq: 44749367 +Index: 2 +Address: 0x000000010415f9b8 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 3 +Address: 0x00000001041471d0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 84 +Address: 0x0000000103e723f0 +Refc: 2 +=fun +Module: user_drv +Uniq: 115201613 +Index: 3 +Address: 0x00000001040592e4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 1 +Address: 0x000000010414cb60 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 15 +Address: 0x0000000103ef1c90 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 44 +Address: 0x0000000103eb1528 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 36 +Address: 0x000000010421b7b8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 31 +Address: 0x0000000103e76b60 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 23 +Address: 0x0000000103fb5138 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 35 +Address: 0x000000010414b970 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 7 +Address: 0x00000001040d56d0 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 10 +Address: 0x0000000103e3bde4 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 2 +Address: 0x0000000103eb2b58 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 2 +Address: 0x0000000104153bb8 +Refc: 2 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 2 +Address: 0x00000001041f9998 +Refc: 2 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 5 +Address: 0x00000001040d05d8 +Refc: 2 +=fun +Module: 'glint@flag@constraint' +Uniq: 83988546 +Index: 2 +Address: 0x000000010414e0bc +Refc: 1 +=fun +Module: maps +Uniq: 48010870 +Index: 3 +Address: 0x0000000104036d10 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 57 +Address: 0x0000000103e75a64 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 26 +Address: 0x000000010414b78c +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 4 +Address: 0x0000000104029ad8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 34 +Address: 0x0000000104009cd8 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 49 +Address: 0x000000010421d33c +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 11 +Address: 0x0000000104160e30 +Refc: 1 +=fun +Module: erpc +Uniq: 95647987 +Index: 1 +Address: 0x000000010404df68 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 7 +Address: 0x0000000104158980 +Refc: 1 +=fun +Module: gen_event +Uniq: 37613186 +Index: 5 +Address: 0x0000000103ee1788 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 6 +Address: 0x00000001041fc2f0 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 7 +Address: 0x0000000103fb6db8 +Refc: 2 +=fun +Module: init +Uniq: 72673429 +Index: 12 +Address: 0x0000000103d93630 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 16 +Address: 0x0000000104146e7c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 91 +Address: 0x0000000103e71be8 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 4 +Address: 0x0000000103e4cb28 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 0 +Address: 0x0000000103f5a090 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 63 +Address: 0x0000000103eaf504 +Refc: 1 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 2 +Address: 0x000000010412a870 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 2 +Address: 0x0000000103e7c1f8 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 9 +Address: 0x0000000104109cb8 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 2 +Address: 0x0000000103dcd680 +Refc: 1 +=fun +Module: code +Uniq: 38778589 +Index: 3 +Address: 0x0000000103e22c68 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 19 +Address: 0x000000010402bf98 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 101 +Address: 0x0000000103e70dac +Refc: 1 +=fun +Module: inet_db +Uniq: 46329474 +Index: 1 +Address: 0x0000000103fc5178 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 15 +Address: 0x000000010400babc +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 26 +Address: 0x0000000104218d3c +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 6 +Address: 0x000000010420b210 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 20 +Address: 0x00000001040dd5c0 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 20 +Address: 0x0000000104161634 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 15 +Address: 0x0000000103ecb4a8 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 29 +Address: 0x0000000103eb0bc8 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 11 +Address: 0x0000000104146b10 +Refc: 1 +=fun +Module: beam_lib +Uniq: 45141944 +Index: 0 +Address: 0x0000000103f9a288 +Refc: 2 +=fun +Module: logger_server +Uniq: 19349920 +Index: 2 +Address: 0x0000000103e87e28 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 44 +Address: 0x0000000103e5ecd8 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 9 +Address: 0x000000010414c2e0 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 7 +Address: 0x0000000103ef2cd0 +Refc: 1 +=fun +Module: logger +Uniq: 1449854 +Index: 1 +Address: 0x0000000103ed5f00 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 2 +Address: 0x0000000104227ad0 +Refc: 2 +=fun +Module: prim_inet +Uniq: 37477703 +Index: 0 +Address: 0x0000000103dae580 +Refc: 1 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 0 +Address: 0x0000000104209538 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 2 +Address: 0x0000000103fe56d0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 23 +Address: 0x0000000103e77810 +Refc: 2 +=fun +Module: io_lib +Uniq: 6600873 +Index: 0 +Address: 0x000000010409b660 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 18 +Address: 0x0000000104159368 +Refc: 1 +=fun +Module: ssl_config +Uniq: 64895055 +Index: 4 +Address: 0x0000000104133f60 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 11 +Address: 0x00000001041fbc98 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 78 +Address: 0x0000000103e728a0 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 5 +Address: 0x00000001040fc2c0 +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 13 +Address: 0x0000000103f58ee8 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 15 +Address: 0x00000001040dbbb0 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 10 +Address: 0x0000000103eb2000 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 6 +Address: 0x0000000104109ee0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 49 +Address: 0x0000000103e75ed8 +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 15 +Address: 0x0000000103dccfd0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 28 +Address: 0x00000001040304f0 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 13 +Address: 0x0000000103fb4bd0 +Refc: 2 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 1 +Address: 0x0000000103dd5be4 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 104 +Address: 0x0000000103e70bf4 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 26 +Address: 0x000000010400a490 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 9 +Address: 0x000000010421cd80 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 3 +Address: 0x0000000104161300 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 4 +Address: 0x0000000103d944c8 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 4 +Address: 0x0000000103feeba8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 83 +Address: 0x0000000103e724d0 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 4 +Address: 0x000000010414ca0c +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 39 +Address: 0x0000000103eb0314 +Refc: 1 +=fun +Module: showtime +Uniq: 22478307 +Index: 3 +Address: 0x000000010413f9dc +Refc: 1 +=fun +Module: ssl_manager +Uniq: 40265571 +Index: 0 +Address: 0x000000010412e528 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 43 +Address: 0x000000010421ca70 +Refc: 1 +=fun +Module: sys +Uniq: 62925399 +Index: 0 +Address: 0x0000000104205128 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 26 +Address: 0x0000000103e774f8 +Refc: 1 +=fun +Module: rpc +Uniq: 70687560 +Index: 5 +Address: 0x0000000103ff5d60 +Refc: 1 +=fun +Module: inet_config +Uniq: 64624012 +Index: 0 +Address: 0x0000000103fd3dd0 +Refc: 1 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 1 +Address: 0x0000000104223388 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 18 +Address: 0x0000000103fb4d58 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 6 +Address: 0x0000000104020cc8 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 7 +Address: 0x000000010400c340 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 8 +Address: 0x00000001040fbef4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 38 +Address: 0x000000010414c3f8 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 18 +Address: 0x000000010421acac +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 7 +Address: 0x0000000103ecbfe0 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 5 +Address: 0x0000000103eb2690 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 9 +Address: 0x0000000104153920 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 1 +Address: 0x0000000103e3c6d0 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 10 +Address: 0x0000000103e8764c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 36 +Address: 0x0000000103e5b808 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 17 +Address: 0x000000010414bf80 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 10 +Address: 0x0000000104226a30 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 9 +Address: 0x0000000104029660 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 4 +Address: 0x0000000103f8b3e0 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 37 +Address: 0x000000010400be2c +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 52 +Address: 0x000000010421d538 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 8 +Address: 0x00000001042088c8 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 10 +Address: 0x0000000103fe53a4 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 14 +Address: 0x00000001041610ec +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 10 +Address: 0x0000000104158a58 +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 3 +Address: 0x00000001041fc574 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 8 +Address: 0x0000000103fb9db8 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 70 +Address: 0x0000000103e74448 +Refc: 2 +=fun +Module: logger_simple_h +Uniq: 105730862 +Index: 3 +Address: 0x0000000103efcb50 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 9 +Address: 0x0000000103e4c41c +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 5 +Address: 0x0000000103f597f0 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 50 +Address: 0x0000000103eafd50 +Refc: 1 +=fun +Module: gleam_stdlib +Uniq: 79074729 +Index: 1 +Address: 0x000000010416a8b4 +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 2 +Address: 0x0000000103dd9180 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 4 +Address: 0x00000001040c5bf8 +Refc: 2 +=fun +Module: file_server +Uniq: 30066188 +Index: 0 +Address: 0x0000000103e07538 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 9 +Address: 0x0000000103e7a9d0 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 7 +Address: 0x0000000103dcd4b0 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 4 +Address: 0x00000001040431a4 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 20 +Address: 0x000000010402c790 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 5 +Address: 0x0000000103fb3798 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 11 +Address: 0x00000001040209b0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 96 +Address: 0x0000000103e71560 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 18 +Address: 0x000000010400b33c +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 1 +Address: 0x000000010421d950 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 9 +Address: 0x000000010420c390 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 20 +Address: 0x0000000103ecb100 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 16 +Address: 0x0000000103eb19fc +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 17 +Address: 0x00000001040dcbb8 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 0 +Address: 0x00000001041474f8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 43 +Address: 0x0000000103e7622c +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 12 +Address: 0x000000010414c3c8 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 12 +Address: 0x0000000103ef26a8 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 47 +Address: 0x0000000103eafea0 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 35 +Address: 0x000000010421b220 +Refc: 1 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 5 +Address: 0x0000000104208d28 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 7 +Address: 0x0000000103fe54b0 +Refc: 1 +=fun +Module: error_logger +Uniq: 17945318 +Index: 1 +Address: 0x0000000103ef8a30 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 18 +Address: 0x0000000103e78da8 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 21 +Address: 0x0000000104159a88 +Refc: 1 +=fun +Module: epp +Uniq: 124355082 +Index: 0 +Address: 0x00000001040fcb94 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 13 +Address: 0x0000000103eb1cc0 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 4 +Address: 0x00000001040d3908 +Refc: 2 +=fun +Module: glint +Uniq: 18128761 +Index: 1 +Address: 0x0000000104153c40 +Refc: 2 +=fun +Module: snag +Uniq: 96707762 +Index: 0 +Address: 0x00000001041f6298 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 9 +Address: 0x0000000103e3be68 +Refc: 1 +=fun +Module: logger_h_common +Uniq: 73693308 +Index: 1 +Address: 0x00000001040c26f0 +Refc: 1 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 0 +Address: 0x00000001040d0390 +Refc: 2 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 1 +Address: 0x00000001041f9a18 +Refc: 2 +=fun +Module: zlib +Uniq: 85031762 +Index: 1 +Address: 0x0000000103dba870 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 60 +Address: 0x0000000103e75970 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 25 +Address: 0x000000010414b8c4 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 11 +Address: 0x0000000104042be0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 1 +Address: 0x000000010402a178 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 8 +Address: 0x0000000103fb2560 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 29 +Address: 0x0000000104009ed8 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 12 +Address: 0x000000010421c4cc +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 6 +Address: 0x0000000104160b08 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 2 +Address: 0x0000000104159450 +Refc: 2 +=fun +Module: gen_event +Uniq: 37613186 +Index: 2 +Address: 0x0000000103ee2098 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 9 +Address: 0x0000000103d936e0 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 0 +Address: 0x0000000103fba268 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 94 +Address: 0x0000000103e71898 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 1 +Address: 0x0000000103e4cdc0 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 58 +Address: 0x0000000103eaf914 +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 10 +Address: 0x0000000103de19a8 +Refc: 1 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 1 +Address: 0x000000010412aae4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 46 +Address: 0x000000010421cd28 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 65 +Address: 0x0000000103eaed88 +Refc: 2 +=fun +Module: rpc +Uniq: 70687560 +Index: 0 +Address: 0x0000000103ff63cc +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 1 +Address: 0x0000000103e7c2c4 +Refc: 1 +=fun +Module: timer +Uniq: 46706930 +Index: 0 +Address: 0x00000001040ad688 +Refc: 2 +=fun +Module: code +Uniq: 38778589 +Index: 6 +Address: 0x0000000103e22a3c +Refc: 1 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 3 +Address: 0x0000000104020ea0 +Refc: 1 +=fun +Module: inet_db +Uniq: 46329474 +Index: 6 +Address: 0x0000000103fce7a8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 10 +Address: 0x000000010400c24c +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 1 +Address: 0x000000010420bce4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 25 +Address: 0x00000001042192f8 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 12 +Address: 0x0000000103ecb760 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 24 +Address: 0x0000000103eb12a8 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 12 +Address: 0x0000000104153800 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 19 +Address: 0x00000001041614f8 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 7 +Address: 0x0000000103e87988 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 8 +Address: 0x0000000104146c28 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 35 +Address: 0x0000000103e76810 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 20 +Address: 0x000000010414bde8 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 4 +Address: 0x0000000103ef3178 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 5 +Address: 0x0000000104227878 +Refc: 2 +=fun +Module: lists +Uniq: 104401092 +Index: 0 +Address: 0x0000000103f04578 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 13 +Address: 0x0000000104158d90 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 13 +Address: 0x0000000103fb9958 +Refc: 1 +=fun +Module: proc_lib +Uniq: 54621022 +Index: 1 +Address: 0x0000000103e9c360 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 77 +Address: 0x0000000103e72ef0 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 53 +Address: 0x0000000103eafaa0 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 12 +Address: 0x00000001040d6f90 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 5 +Address: 0x0000000103de24b4 +Refc: 1 +=fun +Module: logger_std_h +Uniq: 4673888 +Index: 0 +Address: 0x00000001040bcb10 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 52 +Address: 0x0000000103e75c80 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 3 +Address: 0x000000010410a278 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 12 +Address: 0x0000000103dcd0b4 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 3 +Address: 0x0000000104043968 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 25 +Address: 0x000000010402dfb0 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 0 +Address: 0x0000000103fb5938 +Refc: 1 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 2 +Address: 0x0000000103dd3288 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 111 +Address: 0x0000000103e7b8d8 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 11 +Address: 0x0000000103fceb98 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 21 +Address: 0x000000010400ad48 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 4 +Address: 0x000000010421d590 +Refc: 2 +=fun +Module: proplists +Uniq: 31251554 +Index: 0 +Address: 0x0000000103f81c80 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 17 +Address: 0x0000000103ecb320 +Refc: 2 +=fun +Module: 'gleam@result' +Uniq: 44749367 +Index: 0 +Address: 0x000000010415fa58 +Refc: 2 +=fun +Module: init +Uniq: 72673429 +Index: 1 +Address: 0x0000000103d87dd0 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 7 +Address: 0x0000000103fee9a0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 86 +Address: 0x0000000103e72310 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 3 +Address: 0x000000010414ca40 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 9 +Address: 0x0000000103ef2b3c +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 34 +Address: 0x0000000103eb06a0 +Refc: 1 +=fun +Module: gleam_erlang_ffi +Uniq: 130811285 +Index: 1 +Address: 0x00000001042004e0 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 38 +Address: 0x000000010421c07c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 25 +Address: 0x0000000103e77528 +Refc: 2 +=fun +Module: ssl_pem_cache +Uniq: 58460895 +Index: 0 +Address: 0x0000000104126cb0 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 2 +Address: 0x0000000104223980 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 21 +Address: 0x0000000103fb4e48 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 2 +Address: 0x000000010400ca50 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 37 +Address: 0x000000010414c310 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 17 +Address: 0x000000010421b310 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 4 +Address: 0x0000000103ecc138 +Refc: 2 +=fun +Module: logger_formatter +Uniq: 60349323 +Index: 0 +Address: 0x00000001040b6520 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 1 +Address: 0x00000001040d1f00 +Refc: 2 +=fun +Module: glint +Uniq: 18128761 +Index: 4 +Address: 0x0000000104152148 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 4 +Address: 0x0000000103e3bf88 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 0 +Address: 0x0000000103eb2ec8 +Refc: 1 +=fun +Module: 'gleam@set' +Uniq: 15699406 +Index: 3 +Address: 0x000000010414f218 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 59 +Address: 0x0000000103e60180 +Refc: 2 +=fun +Module: maps +Uniq: 48010870 +Index: 1 +Address: 0x0000000104032ae8 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 28 +Address: 0x000000010414aa60 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 13 +Address: 0x00000001042277f0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 10 +Address: 0x00000001040290b8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 32 +Address: 0x0000000104009d98 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@event_handler' +Uniq: 124289607 +Index: 3 +Address: 0x00000001041f7648 +Refc: 2 +=fun +Module: edlin +Uniq: 47380248 +Index: 0 +Address: 0x0000000104092d50 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 51 +Address: 0x000000010421d3a8 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 13 +Address: 0x000000010416104c +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 5 +Address: 0x0000000104158fe4 +Refc: 1 +=fun +Module: gen_event +Uniq: 37613186 +Index: 7 +Address: 0x0000000103ee1450 +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 4 +Address: 0x00000001041fc4c8 +Refc: 2 +=fun +Module: erl_features +Uniq: 44278689 +Index: 5 +Address: 0x0000000103fb7ea0 +Refc: 2 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 10 +Address: 0x0000000103fee650 +Refc: 2 +=fun +Module: 'day7@day7_test' +Uniq: 115477595 +Index: 0 +Address: 0x000000010421f2e0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 69 +Address: 0x0000000103e74238 +Refc: 1 +=fun +Module: gen +Uniq: 105431365 +Index: 1 +Address: 0x0000000103e0fec0 +Refc: 1 +=fun +Module: supervisor +Uniq: 63985753 +Index: 6 +Address: 0x0000000103e4c92c +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 6 +Address: 0x0000000103f596b8 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 61 +Address: 0x0000000103eaf688 +Refc: 1 +=fun +Module: gleam_stdlib +Uniq: 79074729 +Index: 4 +Address: 0x000000010416a708 +Refc: 2 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 4 +Address: 0x000000010412a3d0 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 7 +Address: 0x00000001040cb9c0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 12 +Address: 0x0000000103e79d04 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 11 +Address: 0x0000000104109ae0 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@module_handler' +Uniq: 57223230 +Index: 1 +Address: 0x00000001042079e0 +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 4 +Address: 0x0000000103dcd5d0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 17 +Address: 0x000000010402d8b8 +Refc: 2 +=fun +Module: code +Uniq: 38778589 +Index: 1 +Address: 0x0000000103e22f08 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 8 +Address: 0x000000010401ec90 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 103 +Address: 0x0000000103e70c28 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 3 +Address: 0x0000000103fcbd60 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 13 +Address: 0x000000010400bd68 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 28 +Address: 0x000000010421a77c +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 4 +Address: 0x000000010420bf18 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 9 +Address: 0x0000000103ecbab0 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 22 +Address: 0x00000001040ddba0 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 22 +Address: 0x0000000104161834 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 19 +Address: 0x0000000103eb17a0 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 16 +Address: 0x0000000103fb9a90 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 5 +Address: 0x0000000104147070 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 46 +Address: 0x0000000103e76148 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 11 +Address: 0x000000010414c1f8 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 1 +Address: 0x0000000103ef3cdc +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 42 +Address: 0x0000000103eb0180 +Refc: 1 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 0 +Address: 0x0000000104228478 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 0 +Address: 0x0000000103fe5770 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 6 +Address: 0x00000001042089a0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 17 +Address: 0x0000000103e79568 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 16 +Address: 0x00000001041590ac +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 9 +Address: 0x00000001041fbf24 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 72 +Address: 0x0000000103e74008 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 3 +Address: 0x00000001040fc6d8 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 9 +Address: 0x00000001040d68d8 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 12 +Address: 0x0000000103e3b9c8 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 8 +Address: 0x0000000103eb2270 +Refc: 1 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 4 +Address: 0x00000001041f9900 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 10 +Address: 0x00000001040cb5a0 +Refc: 2 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 3 +Address: 0x00000001040d078c +Refc: 1 +=fun +Module: 'glint@flag@constraint' +Uniq: 83988546 +Index: 4 +Address: 0x000000010414e828 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 51 +Address: 0x0000000103e75da0 +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 17 +Address: 0x0000000103dccca4 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 11 +Address: 0x0000000103fb20f8 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 2 +Address: 0x000000010402a688 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 106 +Address: 0x0000000103e71bb4 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 24 +Address: 0x000000010400a70c +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 11 +Address: 0x000000010421c938 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 5 +Address: 0x0000000104160ba0 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 6 +Address: 0x0000000103d94344 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 2 +Address: 0x0000000103feef48 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 93 +Address: 0x0000000103e719a8 +Refc: 2 +=fun +Module: file_io_server +Uniq: 82162284 +Index: 0 +Address: 0x0000000103e92c3c +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 6 +Address: 0x000000010414c8a0 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 37 +Address: 0x0000000103eb044c +Refc: 1 +=fun +Module: showtime +Uniq: 22478307 +Index: 1 +Address: 0x000000010413fc90 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 45 +Address: 0x000000010421ccac +Refc: 1 +=fun +Module: rpc +Uniq: 70687560 +Index: 3 +Address: 0x0000000103ff5ec0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 4 +Address: 0x0000000103e7bd08 +Refc: 2 +=fun +Module: inet_config +Uniq: 64624012 +Index: 2 +Address: 0x0000000103fd3bd8 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 7 +Address: 0x0000000104224294 +Refc: 1 +=fun +Module: code +Uniq: 38778589 +Index: 9 +Address: 0x0000000103e224e8 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 16 +Address: 0x0000000103fb50c8 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 0 +Address: 0x0000000104021170 +Refc: 2 +=fun +Module: gen_server +Uniq: 22931368 +Index: 1 +Address: 0x0000000103f22dc0 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 5 +Address: 0x000000010400c698 +Refc: 2 +=fun +Module: gen_statem +Uniq: 58250722 +Index: 1 +Address: 0x0000000104068198 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 20 +Address: 0x000000010421a5b4 +Refc: 1 +=fun +Module: ets +Uniq: 30908443 +Index: 3 +Address: 0x0000000103e3c4b4 +Refc: 1 +=fun +Module: erl_init +Uniq: 96508615 +Index: 1 +Address: 0x0000000103d86030 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 1 +Address: 0x0000000103ecc578 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 27 +Address: 0x0000000103eb0e60 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 11 +Address: 0x0000000104153890 +Refc: 1 +=fun +Module: 'gleam@set' +Uniq: 15699406 +Index: 4 +Address: 0x000000010414f0e8 +Refc: 2 +=fun +Module: showtime_ffi +Uniq: 122038219 +Index: 3 +Address: 0x0000000104221048 +Refc: 2 +=fun +Module: logger_server +Uniq: 19349920 +Index: 4 +Address: 0x0000000103e87b6c +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 13 +Address: 0x00000001041469c0 +Refc: 2 +=fun +Module: maps +Uniq: 48010870 +Index: 4 +Address: 0x0000000104036c00 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 38 +Address: 0x0000000103e76410 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 19 +Address: 0x000000010414be68 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 8 +Address: 0x00000001042272b0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 15 +Address: 0x000000010402d1b8 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 2 +Address: 0x0000000103f8d1bc +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 8 +Address: 0x0000000103fe5440 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 8 +Address: 0x0000000104158898 +Refc: 2 +=fun +Module: ssl_config +Uniq: 64895055 +Index: 2 +Address: 0x00000001041342d0 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 1 +Address: 0x00000001041fc674 +Refc: 3 +=fun +Module: proc_lib +Uniq: 54621022 +Index: 2 +Address: 0x0000000103e9c318 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 14 +Address: 0x0000000103fb9744 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 64 +Address: 0x0000000103e7502c +Refc: 1 +=fun +Module: supervisor +Uniq: 63985753 +Index: 11 +Address: 0x0000000103e4c1a8 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 11 +Address: 0x0000000103f59038 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 48 +Address: 0x0000000103eafe0c +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 0 +Address: 0x0000000103de2638 +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 2 +Address: 0x00000001040cbd30 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 11 +Address: 0x0000000103e79e60 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 0 +Address: 0x000000010410a6ac +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 9 +Address: 0x0000000103dcd540 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 6 +Address: 0x00000001040436c4 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 3 +Address: 0x0000000103fb3328 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 26 +Address: 0x000000010402de38 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 98 +Address: 0x0000000103e711b8 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 8 +Address: 0x0000000103fce290 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 16 +Address: 0x000000010400ba50 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 3 +Address: 0x0000000104217380 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 22 +Address: 0x0000000103ecae38 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 22 +Address: 0x0000000103eb0038 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 19 +Address: 0x00000001040dd0d8 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 2 +Address: 0x00000001041415b0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 85 +Address: 0x0000000103e723b0 +Refc: 1 +=fun +Module: user_drv +Uniq: 115201613 +Index: 0 +Address: 0x0000000104059448 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 14 +Address: 0x000000010414c140 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 14 +Address: 0x0000000103ef2608 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 45 +Address: 0x0000000103eb14b8 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 37 +Address: 0x000000010421bc80 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 5 +Address: 0x0000000103fe55b0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 28 +Address: 0x0000000103e773b4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 32 +Address: 0x000000010414b0a0 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 6 +Address: 0x00000001040d54e8 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 11 +Address: 0x0000000103e3bce8 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 3 +Address: 0x0000000103eb29a8 +Refc: 1 +=fun +Module: glint +Uniq: 18128761 +Index: 3 +Address: 0x0000000104153b80 +Refc: 1 +=fun +Module: 'glint@flag@constraint' +Uniq: 83988546 +Index: 1 +Address: 0x000000010414e3a0 +Refc: 1 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 3 +Address: 0x00000001041f9964 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 62 +Address: 0x0000000103e751d8 +Refc: 2 +=fun +Module: group +Uniq: 88293013 +Index: 1 +Address: 0x00000001040889e8 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 27 +Address: 0x000000010414a8d0 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 7 +Address: 0x0000000104029fb8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 35 +Address: 0x000000010400b0f4 +Refc: 1 +=fun +Module: kernel_refc +Uniq: 28224509 +Index: 0 +Address: 0x00000001040b0eb8 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 14 +Address: 0x000000010421c150 +Refc: 1 +=fun +Module: filelib +Uniq: 94480894 +Index: 0 +Address: 0x0000000104214c18 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 8 +Address: 0x0000000104160c3c +Refc: 1 +=fun +Module: erpc +Uniq: 95647987 +Index: 0 +Address: 0x000000010404e068 +Refc: 2 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 0 +Address: 0x0000000104159620 +Refc: 2 +=fun +Module: gen_event +Uniq: 37613186 +Index: 4 +Address: 0x0000000103ee1870 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 11 +Address: 0x0000000103d9368c +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 6 +Address: 0x0000000103fb7f58 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 88 +Address: 0x0000000103e7205c +Refc: 1 +=fun +Module: supervisor +Uniq: 63985753 +Index: 3 +Address: 0x0000000103e4cdf8 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 3 +Address: 0x0000000103f599d0 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 56 +Address: 0x0000000103eaf9dc +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 8 +Address: 0x0000000103de1c68 +Refc: 1 +=fun +Module: ssl_pkix_db +Uniq: 51522903 +Index: 3 +Address: 0x000000010412a708 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 8 +Address: 0x0000000104109d90 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 3 +Address: 0x0000000103e7bde0 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 1 +Address: 0x0000000103dcd6f0 +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 18 +Address: 0x000000010402ccb8 +Refc: 2 +=fun +Module: code +Uniq: 38778589 +Index: 4 +Address: 0x0000000103e22bf0 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 0 +Address: 0x0000000103fcf1a0 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 8 +Address: 0x000000010400c2f4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 27 +Address: 0x00000001042186d4 +Refc: 1 +=fun +Module: simplifile +Uniq: 17272755 +Index: 7 +Address: 0x000000010420b558 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 21 +Address: 0x00000001041616e8 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 14 +Address: 0x0000000103ecb5dc +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 30 +Address: 0x0000000103eb0aa0 +Refc: 1 +=fun +Module: beam_lib +Uniq: 45141944 +Index: 3 +Address: 0x0000000103f99718 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 1 +Address: 0x0000000103e87e60 +Refc: 2 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 10 +Address: 0x0000000104146b40 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 45 +Address: 0x0000000103e5db08 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 22 +Address: 0x000000010414bcc0 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 3 +Address: 0x0000000104227a80 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 6 +Address: 0x0000000103ef2c18 +Refc: 1 +=fun +Module: prim_inet +Uniq: 37477703 +Index: 1 +Address: 0x0000000103dae5d8 +Refc: 1 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 3 +Address: 0x0000000104208f10 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 13 +Address: 0x0000000103fe4d74 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 20 +Address: 0x0000000103e78078 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 19 +Address: 0x0000000104159418 +Refc: 1 +=fun +Module: io_lib +Uniq: 6600873 +Index: 1 +Address: 0x0000000104096af8 +Refc: 2 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 10 +Address: 0x00000001041fbd40 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 79 +Address: 0x0000000103e727e8 +Refc: 2 +=fun +Module: epp +Uniq: 124355082 +Index: 6 +Address: 0x00000001040fc194 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 40 +Address: 0x000000010414c5c8 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 12 +Address: 0x0000000103f58f90 +Refc: 2 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 14 +Address: 0x00000001040d8d20 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 11 +Address: 0x0000000103eb1ee0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 54 +Address: 0x0000000103e75b08 +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 5 +Address: 0x0000000104109fe8 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 14 +Address: 0x0000000103dccf78 +Refc: 1 +=fun +Module: standard_error +Uniq: 123115530 +Index: 1 +Address: 0x0000000103fbd320 +Refc: 2 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 0 +Address: 0x0000000103dd5c18 +Refc: 1 +=fun +Module: unicode +Uniq: 54664399 +Index: 14 +Address: 0x0000000103fb4a80 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 105 +Address: 0x0000000103e70d50 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 27 +Address: 0x000000010400a268 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 6 +Address: 0x000000010421cf98 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 19 +Address: 0x0000000103ec7778 +Refc: 2 +=fun +Module: 'gleam@erlang' +Uniq: 90512636 +Index: 1 +Address: 0x0000000104140be8 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 0 +Address: 0x0000000104161920 +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 3 +Address: 0x0000000103d94690 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 80 +Address: 0x0000000103e727a8 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 5 +Address: 0x0000000103feeb18 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 5 +Address: 0x000000010414c954 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 11 +Address: 0x0000000103ef26f8 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 32 +Address: 0x0000000103eb0880 +Refc: 1 +=fun +Module: showtime +Uniq: 22478307 +Index: 4 +Address: 0x000000010413f850 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 40 +Address: 0x000000010421c70c +Refc: 1 +=fun +Module: rpc +Uniq: 70687560 +Index: 6 +Address: 0x0000000103ff5c50 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 27 +Address: 0x0000000103e773e8 +Refc: 2 +=fun +Module: inet_config +Uniq: 64624012 +Index: 1 +Address: 0x0000000103fd3c68 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 0 +Address: 0x00000001042230d8 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 19 +Address: 0x0000000103fb4af0 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 5 +Address: 0x0000000104020da8 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 0 +Address: 0x0000000104006d40 +Refc: 2 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 39 +Address: 0x000000010414c4e0 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 19 +Address: 0x000000010421a688 +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 6 +Address: 0x0000000103ecc408 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 6 +Address: 0x0000000103eb2520 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 3 +Address: 0x00000001040dfb40 +Refc: 2 +=fun +Module: glint +Uniq: 18128761 +Index: 6 +Address: 0x0000000104153a40 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 6 +Address: 0x0000000103e3c0b4 +Refc: 1 +=fun +Module: showtime_ffi +Uniq: 122038219 +Index: 4 +Address: 0x0000000104221600 +Refc: 1 +=fun +Module: 'gleam@set' +Uniq: 15699406 +Index: 1 +Address: 0x000000010414fb08 +Refc: 1 +=fun +Module: logger_server +Uniq: 19349920 +Index: 9 +Address: 0x0000000103e87c4c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 37 +Address: 0x0000000103e766d4 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 30 +Address: 0x000000010414ad80 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 8 +Address: 0x000000010402a380 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 11 +Address: 0x00000001042267c0 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 5 +Address: 0x0000000103f8cbb8 +Refc: 1 +=fun +Module: 'showtime@internal@erlang@event_handler' +Uniq: 124289607 +Index: 1 +Address: 0x00000001041f7b38 +Refc: 2 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 53 +Address: 0x000000010421d498 +Refc: 2 +=fun +Module: prim_tty +Uniq: 75477062 +Index: 0 +Address: 0x0000000104078e08 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 15 +Address: 0x0000000104161198 +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 11 +Address: 0x0000000104158b30 +Refc: 1 +=fun +Module: 'gleam@erlang@process' +Uniq: 28255578 +Index: 2 +Address: 0x00000001041fc5a8 +Refc: 2 +=fun +Module: erl_features +Uniq: 44278689 +Index: 11 +Address: 0x0000000103fb9ac0 +Refc: 2 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 8 +Address: 0x0000000103fee890 +Refc: 2 +=fun +Module: gen +Uniq: 105431365 +Index: 3 +Address: 0x0000000103e0fda0 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 71 +Address: 0x0000000103e740a8 +Refc: 2 +=fun +Module: logger_simple_h +Uniq: 105730862 +Index: 0 +Address: 0x0000000103efcfa8 +Refc: 1 +=fun +Module: application_master +Uniq: 24509285 +Index: 0 +Address: 0x0000000103eb8b40 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 8 +Address: 0x0000000103e4c450 +Refc: 2 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 4 +Address: 0x0000000103f5999c +Refc: 1 +=fun +Module: logger_olp +Uniq: 51656710 +Index: 0 +Address: 0x0000000103f785c4 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 51 +Address: 0x0000000103eafbb8 +Refc: 1 +=fun +Module: gleam_stdlib +Uniq: 79074729 +Index: 2 +Address: 0x000000010416a7d0 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 3 +Address: 0x0000000103de25dc +Refc: 1 +=fun +Module: c +Uniq: 124725464 +Index: 5 +Address: 0x00000001040cbd00 +Refc: 1 +=fun +Module: file_server +Uniq: 30066188 +Index: 1 +Address: 0x0000000103e075a8 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 14 +Address: 0x0000000103e798f0 +Refc: 2 +=fun +Module: httpc +Uniq: 36342138 +Index: 13 +Address: 0x00000001041099c0 +Refc: 2 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 6 +Address: 0x0000000103dcd3f0 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 5 +Address: 0x000000010404343c +Refc: 1 +=fun +Module: rand +Uniq: 65977474 +Index: 23 +Address: 0x000000010402bd10 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 6 +Address: 0x0000000103fb52d0 +Refc: 2 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 10 +Address: 0x0000000104020afc +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 97 +Address: 0x0000000103e71348 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 19 +Address: 0x000000010400b128 +Refc: 2 +=fun +Module: simplifile +Uniq: 17272755 +Index: 10 +Address: 0x000000010420c3f4 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 30 +Address: 0x000000010421a7b0 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 11 +Address: 0x0000000103ecb8ec +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 16 +Address: 0x00000001040dc390 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 17 +Address: 0x0000000103eb193c +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 7 +Address: 0x0000000104146d4c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 40 +Address: 0x0000000103e7630c +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 13 +Address: 0x000000010414c768 +Refc: 1 +=fun +Module: code_server +Uniq: 111287289 +Index: 3 +Address: 0x0000000103eea438 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 40 +Address: 0x0000000103eb0284 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 32 +Address: 0x000000010421aa88 +Refc: 1 +=fun +Module: inet +Uniq: 65562377 +Index: 6 +Address: 0x0000000103fe54e8 +Refc: 2 +=fun +Module: 'showtime@internal@erlang@discover' +Uniq: 110023186 +Index: 4 +Address: 0x0000000104208edc +Refc: 1 +=fun +Module: error_logger +Uniq: 17945318 +Index: 0 +Address: 0x0000000103ef7a38 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 19 +Address: 0x0000000103e78a98 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 74 +Address: 0x0000000103e73c34 +Refc: 1 +=fun +Module: epp +Uniq: 124355082 +Index: 1 +Address: 0x00000001040fcb34 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 14 +Address: 0x0000000103eb1bc4 +Refc: 1 +=fun +Module: erl_scan +Uniq: 115441844 +Index: 11 +Address: 0x00000001040d6c98 +Refc: 2 +=fun +Module: ets +Uniq: 30908443 +Index: 14 +Address: 0x0000000103e3b5e4 +Refc: 1 +=fun +Module: raw_file_io +Uniq: 101053602 +Index: 1 +Address: 0x00000001040d03f8 +Refc: 2 +=fun +Module: 'gleam@otp@actor' +Uniq: 90500110 +Index: 6 +Address: 0x00000001041f97e0 +Refc: 2 +=fun +Module: c +Uniq: 124725464 +Index: 8 +Address: 0x00000001040cb948 +Refc: 2 +=fun +Module: 'aoc2023@@main' +Uniq: 70697990 +Index: 1 +Address: 0x00000001040ea940 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 61 +Address: 0x0000000103e75758 +Refc: 1 +=fun +Module: group +Uniq: 88293013 +Index: 2 +Address: 0x00000001040888b8 +Refc: 2 +=fun +Module: global_group +Uniq: 133931896 +Index: 8 +Address: 0x0000000104043710 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 0 +Address: 0x0000000104029e40 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 9 +Address: 0x0000000103fb1c48 +Refc: 2 +=fun +Module: prim_zip +Uniq: 66112146 +Index: 5 +Address: 0x0000000103dd5b24 +Refc: 1 +=fun +Module: global +Uniq: 100333677 +Index: 30 +Address: 0x0000000104009ea4 +Refc: 1 +=fun +Module: file +Uniq: 1459081 +Index: 1 +Address: 0x0000000103e195bc +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 13 +Address: 0x000000010421c3f8 +Refc: 1 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 7 +Address: 0x0000000104160a5c +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 3 +Address: 0x0000000104155ac0 +Refc: 2 +=fun +Module: gen_event +Uniq: 37613186 +Index: 1 +Address: 0x0000000103ee21ac +Refc: 1 +=fun +Module: init +Uniq: 72673429 +Index: 8 +Address: 0x0000000103d939d8 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 3 +Address: 0x0000000103fb9fc4 +Refc: 1 +=fun +Module: inet_parse +Uniq: 131529883 +Index: 0 +Address: 0x0000000103fef1a0 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 95 +Address: 0x0000000103e715a8 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 0 +Address: 0x0000000103e4d260 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 59 +Address: 0x0000000103eaf728 +Refc: 2 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 11 +Address: 0x0000000103de1958 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 47 +Address: 0x000000010421d030 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 66 +Address: 0x0000000103eaeca8 +Refc: 2 +=fun +Module: rpc +Uniq: 70687560 +Index: 1 +Address: 0x0000000103ff617c +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 6 +Address: 0x0000000103e7b800 +Refc: 2 +=fun +Module: timer +Uniq: 46706930 +Index: 1 +Address: 0x00000001040ad644 +Refc: 1 +=fun +Module: inet_config +Uniq: 64624012 +Index: 4 +Address: 0x0000000103fd3ab8 +Refc: 2 +=fun +Module: kernel_config +Uniq: 90805894 +Index: 0 +Address: 0x00000001040af678 +Refc: 2 +=fun +Module: 'day7@solve' +Uniq: 118915376 +Index: 5 +Address: 0x00000001042240b8 +Refc: 2 +=fun +Module: code +Uniq: 38778589 +Index: 7 +Address: 0x0000000103e225d8 +Refc: 1 +=fun +Module: net_kernel +Uniq: 105284444 +Index: 2 +Address: 0x0000000104020ed0 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 5 +Address: 0x0000000103fce8b0 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 11 +Address: 0x000000010400c078 +Refc: 2 +=fun +Module: simplifile +Uniq: 17272755 +Index: 2 +Address: 0x000000010420bb20 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 22 +Address: 0x000000010421a02c +Refc: 1 +=fun +Module: application_controller +Uniq: 5142319 +Index: 3 +Address: 0x0000000103ecc3d4 +Refc: 1 +=fun +Module: httpc_manager +Uniq: 90163599 +Index: 1 +Address: 0x0000000104112fb0 +Refc: 2 +=fun +Module: glint +Uniq: 18128761 +Index: 13 +Address: 0x00000001041514f0 +Refc: 2 +=fun +Module: 'gleam@function' +Uniq: 127819290 +Index: 16 +Address: 0x000000010416125c +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 25 +Address: 0x0000000103eb1130 +Refc: 1 +=fun +Module: showtime_ffi +Uniq: 122038219 +Index: 1 +Address: 0x0000000104221320 +Refc: 2 +=fun +Module: logger_server +Uniq: 19349920 +Index: 6 +Address: 0x0000000103e87a20 +Refc: 1 +=fun +Module: 'gleam@list' +Uniq: 42440854 +Index: 15 +Address: 0x0000000104146890 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 32 +Address: 0x0000000103e7697c +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 21 +Address: 0x000000010414bd40 +Refc: 2 +=fun +Module: 'showtime@internal@reports@formatter' +Uniq: 1772858 +Index: 6 +Address: 0x0000000104227820 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 13 +Address: 0x000000010402ae18 +Refc: 2 +=fun +Module: peer +Uniq: 34337805 +Index: 0 +Address: 0x0000000103f8df08 +Refc: 2 +=fun +Module: inet +Uniq: 65562377 +Index: 14 +Address: 0x0000000103fe494c +Refc: 1 +=fun +Module: 'gleam_community@colour' +Uniq: 92289676 +Index: 14 +Address: 0x0000000104158e68 +Refc: 1 +=fun +Module: ssl_config +Uniq: 64895055 +Index: 0 +Address: 0x0000000104134808 +Refc: 1 +=fun +Module: erl_features +Uniq: 44278689 +Index: 12 +Address: 0x0000000103fb9988 +Refc: 2 +=fun +Module: proc_lib +Uniq: 54621022 +Index: 0 +Address: 0x0000000103e9c590 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 66 +Address: 0x0000000103e745b0 +Refc: 2 +=fun +Module: supervisor +Uniq: 63985753 +Index: 13 +Address: 0x0000000103e4c0e8 +Refc: 1 +=fun +Module: erl_parse +Uniq: 57550649 +Index: 9 +Address: 0x0000000103f59274 +Refc: 1 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 54 +Address: 0x0000000103eafb40 +Refc: 1 +=fun +Module: erl_prim_loader +Uniq: 11574866 +Index: 6 +Address: 0x0000000103de2310 +Refc: 1 +=fun +Module: logger_std_h +Uniq: 4673888 +Index: 1 +Address: 0x00000001040bcad8 +Refc: 3 +=fun +Module: c +Uniq: 124725464 +Index: 0 +Address: 0x00000001040cbe98 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 53 +Address: 0x0000000103e75c2c +Refc: 1 +=fun +Module: httpc +Uniq: 36342138 +Index: 2 +Address: 0x000000010410a368 +Refc: 2 +=fun +Module: httpc_cookie +Uniq: 22295768 +Index: 1 +Address: 0x000000010411a368 +Refc: 1 +=fun +Module: prim_socket +Uniq: 51104894 +Index: 11 +Address: 0x0000000103dcd030 +Refc: 1 +=fun +Module: global_group +Uniq: 133931896 +Index: 0 +Address: 0x0000000104040ec0 +Refc: 2 +=fun +Module: unicode +Uniq: 54664399 +Index: 1 +Address: 0x0000000103fb4488 +Refc: 2 +=fun +Module: rand +Uniq: 65977474 +Index: 24 +Address: 0x000000010402df10 +Refc: 2 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 108 +Address: 0x0000000103e75f08 +Refc: 2 +=fun +Module: inet_db +Uniq: 46329474 +Index: 10 +Address: 0x0000000103fcd590 +Refc: 2 +=fun +Module: global +Uniq: 100333677 +Index: 22 +Address: 0x000000010400aa90 +Refc: 1 +=fun +Module: 'gleam@dynamic' +Uniq: 70964574 +Index: 5 +Address: 0x000000010421d170 +Refc: 1 +=fun +Module: ets +Uniq: 30908443 +Index: 16 +Address: 0x0000000103e39768 +Refc: 2 +=fun +Module: application_controller +Uniq: 5142319 +Index: 16 +Address: 0x0000000103ecb478 +Refc: 2 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 20 +Address: 0x0000000103eb16e8 +Refc: 1 +=fun +Module: 'gleam@result' +Uniq: 44749367 +Index: 1 +Address: 0x000000010415fa08 +Refc: 2 +=fun +Module: init +Uniq: 72673429 +Index: 0 +Address: 0x0000000103d87d10 +Refc: 1 +=fun +Module: user_drv +Uniq: 115201613 +Index: 2 +Address: 0x0000000104059414 +Refc: 1 +=fun +Module: erl_lint +Uniq: 64115739 +Index: 87 +Address: 0x0000000103e72264 +Refc: 1 +=fun +Module: 'glint@flag' +Uniq: 25615327 +Index: 0 +Address: 0x000000010414cbe0 +Refc: 2 +=fun +Module: code_server +Uniq: 111287289 +Index: 8 +Address: 0x0000000103ef2aa8 +Refc: 4 +=fun +Module: erl_eval +Uniq: 125776118 +Index: 35 +Address: 0x0000000103eb05c8 +Refc: 1 +=fun +Module: gleam_erlang_ffi +Uniq: 130811285 +Index: 2 +Address: 0x00000001042005cc +Refc: 1 +=proc_stack:<0.0.0> +y0:H105DD6AD8 +y1:SCatch 0x3DE8204 (erlang:halt/1 + 156) +0x0000000105dda900:SReturn addr 0x3D82348 () +=proc_heap:<0.0.0> +105DD6AD8:lI82|H105DD6AE8 +105DD6AE8:lI117|H105DD6AF8 +105DD6AF8:lI110|H105DD6B08 +105DD6B08:lI116|H105DD6B18 +105DD6B18:lI105|H105DD6B28 +105DD6B28:lI109|H105DD6B38 +105DD6B38:lI101|H105DD6B48 +105DD6B48:lI32|H105DD6B58 +105DD6B58:lI116|H105DD6B68 +105DD6B68:lI101|H105DD6B78 +105DD6B78:lI114|H105DD6B88 +105DD6B88:lI109|H105DD6B98 +105DD6B98:lI105|H105DD6BA8 +105DD6BA8:lI110|H105DD6BB8 +105DD6BB8:lI97|H105DD6BC8 +105DD6BC8:lI116|H105DD6BD8 +105DD6BD8:lI105|H105DD6BE8 +105DD6BE8:lI110|H105DD6BF8 +105DD6BF8:lI103|H105DD6C08 +105DD6C08:lI32|H105DD6C18 +105DD6C18:lI100|H105DD6C28 +105DD6C28:lI117|H105DD6C38 +105DD6C38:lI114|H105DD6C48 +105DD6C48:lI105|H105DD6C58 +105DD6C58:lI110|H105DD6C68 +105DD6C68:lI103|H105DD6C78 +105DD6C78:lI32|H105DD6C88 +105DD6C88:lI98|H105DD6C98 +105DD6C98:lI111|H105DD6CA8 +105DD6CA8:lI111|H105DD6CB8 +105DD6CB8:lI116|H105DD6AC8 +105DD6AC8:lI32|H105DD6AB8 +105DD6AB8:lI40|H105DD5838 +105DD5838:lI123|H105DD5848 +105DD5848:lI44|H105DD5858 +105DD5858:lI91|H105DD5868 +105DD5868:lI123|H105DD5878 +105DD5878:lI115|H105DD5888 +105DD5888:lI104|H105DD5898 +105DD5898:lI111|H105DD58A8 +105DD58A8:lI119|H105DD58B8 +105DD58B8:lI116|H105DD58C8 +105DD58C8:lI105|H105DD58D8 +105DD58D8:lI109|H105DD58E8 +105DD58E8:lI101|H105DD58F8 +105DD58F8:lI64|H105DD5908 +105DD5908:lI105|H105DD5918 +105DD5918:lI110|H105DD5928 +105DD5928:lI116|H105DD5938 +105DD5938:lI101|H105DD5948 +105DD5948:lI114|H105DD5958 +105DD5958:lI110|H105DD5968 +105DD5968:lI97|H105DD5978 +105DD5978:lI108|H105DD5988 +105DD5988:lI64|H105DD5998 +105DD5998:lI114|H105DD59A8 +105DD59A8:lI101|H105DD59B8 +105DD59B8:lI112|H105DD59C8 +105DD59C8:lI111|H105DD59D8 +105DD59D8:lI114|H105DD59E8 +105DD59E8:lI116|H105DD59F8 +105DD59F8:lI115|H105DD5A08 +105DD5A08:lI64|H105DD5A18 +105DD5A18:lI102|H105DD5A28 +105DD5A28:lI111|H105DD5A38 +105DD5A38:lI114|H105DD5A48 +105DD5A48:lI109|H105DD5A58 +105DD5A58:lI97|H105DD5A68 +105DD5A68:lI116|H105DD5A78 +105DD5A78:lI116|H105DD5A88 +105DD5A88:lI101|H105DD5A98 +105DD5A98:lI114|H105DD5AA8 +105DD5AA8:lI44|H105DD5AB8 +105DD5AB8:lI45|H105DD5AC8 +105DD5AC8:lI99|H105DD5AD8 +105DD5AD8:lI114|H105DD5AE8 +105DD5AE8:lI101|H105DD5AF8 +105DD5AF8:lI97|H105DD5B08 +105DD5B08:lI116|H105DD5B18 +105DD5B18:lI101|H105DD5B28 +105DD5B28:lI95|H105DD5B38 +105DD5B38:lI116|H105DD5B48 +105DD5B48:lI101|H105DD5B58 +105DD5B58:lI115|H105DD5B68 +105DD5B68:lI116|H105DD5B78 +105DD5B78:lI95|H105DD5B88 +105DD5B88:lI114|H105DD5B98 +105DD5B98:lI101|H105DD5BA8 +105DD5BA8:lI112|H105DD5BB8 +105DD5BB8:lI111|H105DD5BC8 +105DD5BC8:lI114|H105DD5BD8 +105DD5BD8:lI116|H105DD5BE8 +105DD5BE8:lI47|H105DD5BF8 +105DD5BF8:lI49|H105DD5C08 +105DD5C08:lI45|H105DD5C18 +105DD5C18:lI102|H105DD5C28 +105DD5C28:lI117|H105DD5C38 +105DD5C38:lI110|H105DD5C48 +105DD5C48:lI45|H105DD5C58 +105DD5C58:lI52|H105DD5C68 +105DD5C68:lI45|H105DD5C78 +105DD5C78:lI44|H105DD5C88 +105DD5C88:lI49|H105DD5C98 +105DD5C98:lI44|H105DD5CA8 +105DD5CA8:lI91|H105DD5CB8 +105DD5CB8:lI123|H105DD5CC8 +105DD5CC8:lI95|H105DD5CD8 +105DD5CD8:lI125|H105DD5CE8 +105DD5CE8:lI44|H105DD5CF8 +105DD5CF8:lI123|H105DD5D08 +105DD5D08:lI95|H105DD5D18 +105DD5D18:lI125|H105DD5D28 +105DD5D28:lI93|H105DD5D38 +105DD5D38:lI125|H105DD5D48 +105DD5D48:lI44|H105DD5D58 +105DD5D58:lI123|H105DD5D68 +105DD5D68:lI103|H105DD5D78 +105DD5D78:lI108|H105DD5D88 +105DD5D88:lI101|H105DD5D98 +105DD5D98:lI97|H105DD5DA8 +105DD5DA8:lI109|H105DD5DB8 +105DD5DB8:lI64|H105DD5DC8 +105DD5DC8:lI108|H105DD5DD8 +105DD5DD8:lI105|H105DD5DE8 +105DD5DE8:lI115|H105DD5DF8 +105DD5DF8:lI116|H105DD5E08 +105DD5E08:lI44|H105DD5E18 +105DD5E18:lI100|H105DD5E28 +105DD5E28:lI111|H105DD5E38 +105DD5E38:lI95|H105DD5E48 +105DD5E48:lI102|H105DD5E58 +105DD5E58:lI105|H105DD5E68 +105DD5E68:lI108|H105DD5E78 +105DD5E78:lI116|H105DD5E88 +105DD5E88:lI101|H105DD5E98 +105DD5E98:lI114|H105DD5EA8 +105DD5EA8:lI95|H105DD5EB8 +105DD5EB8:lI109|H105DD5EC8 +105DD5EC8:lI97|H105DD5ED8 +105DD5ED8:lI112|H105DD5EE8 +105DD5EE8:lI44|H105DD5EF8 +105DD5EF8:lI51|H105DD5F08 +105DD5F08:lI44|H105DD5F18 +105DD5F18:lI91|H105DD5F28 +105DD5F28:lI123|H105DD5F38 +105DD5F38:lI95|H105DD5F48 +105DD5F48:lI125|H105DD5F58 +105DD5F58:lI44|H105DD5F68 +105DD5F68:lI123|H105DD5F78 +105DD5F78:lI95|H105DD5F88 +105DD5F88:lI125|H105DD5F98 +105DD5F98:lI93|H105DD5FA8 +105DD5FA8:lI125|H105DD5FB8 +105DD5FB8:lI44|H105DD5FC8 +105DD5FC8:lI123|H105DD5FD8 +105DD5FD8:lI115|H105DD5FE8 +105DD5FE8:lI104|H105DD5FF8 +105DD5FF8:lI111|H105DD6008 +105DD6008:lI119|H105DD6018 +105DD6018:lI116|H105DD6028 +105DD6028:lI105|H105DD6038 +105DD6038:lI109|H105DD6048 +105DD6048:lI101|H105DD6058 +105DD6058:lI64|H105DD6068 +105DD6068:lI105|H105DD6078 +105DD6078:lI110|H105DD6088 +105DD6088:lI116|H105DD6098 +105DD6098:lI101|H105DD60A8 +105DD60A8:lI114|H105DD60B8 +105DD60B8:lI110|H105DD60C8 +105DD60C8:lI97|H105DD60D8 +105DD60D8:lI108|H105DD60E8 +105DD60E8:lI64|H105DD60F8 +105DD60F8:lI114|H105DD6108 +105DD6108:lI101|H105DD6118 +105DD6118:lI112|H105DD6128 +105DD6128:lI111|H105DD6138 +105DD6138:lI114|H105DD6148 +105DD6148:lI116|H105DD6158 +105DD6158:lI115|H105DD6168 +105DD6168:lI64|H105DD6178 +105DD6178:lI102|H105DD6188 +105DD6188:lI111|H105DD6198 +105DD6198:lI114|H105DD61A8 +105DD61A8:lI109|H105DD61B8 +105DD61B8:lI97|H105DD61C8 +105DD61C8:lI116|H105DD61D8 +105DD61D8:lI116|H105DD61E8 +105DD61E8:lI101|H105DD61F8 +105DD61F8:lI114|H105DD6208 +105DD6208:lI44|H105DD6218 +105DD6218:lI99|H105DD6228 +105DD6228:lI114|H105DD6238 +105DD6238:lI101|H105DD6248 +105DD6248:lI97|H105DD6258 +105DD6258:lI116|H105DD6268 +105DD6268:lI101|H105DD6278 +105DD6278:lI95|H105DD6288 +105DD6288:lI116|H105DD6298 +105DD6298:lI101|H105DD62A8 +105DD62A8:lI115|H105DD62B8 +105DD62B8:lI116|H105DD62C8 +105DD62C8:lI95|H105DD62D8 +105DD62D8:lI114|H105DD62E8 +105DD62E8:lI101|H105DD62F8 +105DD62F8:lI112|H105DD6308 +105DD6308:lI111|H105DD6318 +105DD6318:lI114|H105DD6328 +105DD6328:lI116|H105DD6338 +105DD6338:lI44|H105DD6348 +105DD6348:lI49|H105DD6358 +105DD6358:lI44|H105DD6368 +105DD6368:lI91|H105DD6378 +105DD6378:lI123|H105DD6388 +105DD6388:lI95|H105DD6398 +105DD6398:lI125|H105DD63A8 +105DD63A8:lI44|H105DD63B8 +105DD63B8:lI123|H105DD63C8 +105DD63C8:lI95|H105DD63D8 +105DD63D8:lI125|H105DD63E8 +105DD63E8:lI93|H105DD63F8 +105DD63F8:lI125|H105DD6408 +105DD6408:lI44|H105DD6418 +105DD6418:lI123|H105DD6428 +105DD6428:lI115|H105DD6438 +105DD6438:lI104|H105DD6448 +105DD6448:lI111|H105DD6458 +105DD6458:lI119|H105DD6468 +105DD6468:lI116|H105DD6478 +105DD6478:lI105|H105DD6488 +105DD6488:lI109|H105DD6498 +105DD6498:lI101|H105DD64A8 +105DD64A8:lI64|H105DD64B8 +105DD64B8:lI105|H105DD64C8 +105DD64C8:lI110|H105DD64D8 +105DD64D8:lI116|H105DD64E8 +105DD64E8:lI101|H105DD64F8 +105DD64F8:lI114|H105DD6508 +105DD6508:lI110|H105DD6518 +105DD6518:lI97|H105DD6528 +105DD6528:lI108|H105DD6538 +105DD6538:lI64|H105DD6548 +105DD6548:lI101|H105DD6558 +105DD6558:lI114|H105DD6568 +105DD6568:lI108|H105DD6578 +105DD6578:lI97|H105DD6588 +105DD6588:lI110|H105DD6598 +105DD6598:lI103|H105DD65A8 +105DD65A8:lI64|H105DD65B8 +105DD65B8:lI101|H105DD65C8 +105DD65C8:lI118|H105DD65D8 +105DD65D8:lI101|H105DD65E8 +105DD65E8:lI110|H105DD65F8 +105DD65F8:lI116|H105DD6608 +105DD6608:lI95|H105DD6618 +105DD6618:lI104|H105DD6628 +105DD6628:lI97|H105DD6638 +105DD6638:lI110|H105DD6648 +105DD6648:lI100|H105DD6658 +105DD6658:lI108|H105DD6668 +105DD6668:lI101|H105DD6678 +105DD6678:lI114|H105DD6688 +105DD6688:lI44|H105DD6698 +105DD6698:lI45|H105DD66A8 +105DD66A8:lI115|H105DD66B8 +105DD66B8:lI116|H105DD66C8 +105DD66C8:lI97|H105DD66D8 +105DD66D8:lI114|H105DD66E8 +105DD66E8:lI116|H105DD66F8 +105DD66F8:lI47|H105DD6708 +105DD6708:lI48|H105DD6718 +105DD6718:lI45|H105DD6728 +105DD6728:lI102|H105DD6738 +105DD6738:lI117|H105DD6748 +105DD6748:lI110|H105DD6758 +105DD6758:lI45|H105DD6768 +105DD6768:lI49|H105DD6778 +105DD6778:lI45|H105DD6788 +105DD6788:lI44|H105DD6798 +105DD6798:lI50|H105DD67A8 +105DD67A8:lI44|H105DD67B8 +105DD67B8:lI91|H105DD67C8 +105DD67C8:lI123|H105DD67D8 +105DD67D8:lI95|H105DD67E8 +105DD67E8:lI125|H105DD67F8 +105DD67F8:lI44|H105DD6808 +105DD6808:lI123|H105DD6818 +105DD6818:lI95|H105DD6828 +105DD6828:lI125|H105DD6838 +105DD6838:lI93|H105DD6848 +105DD6848:lI125|H105DD6858 +105DD6858:lI44|H105DD6868 +105DD6868:lI123|H105DD6878 +105DD6878:lI103|H105DD6888 +105DD6888:lI108|H105DD6898 +105DD6898:lI101|H105DD68A8 +105DD68A8:lI97|H105DD68B8 +105DD68B8:lI109|H105DD68C8 +105DD68C8:lI64|H105DD68D8 +105DD68D8:lI111|H105DD68E8 +105DD68E8:lI116|H105DD68F8 +105DD68F8:lI112|H105DD6908 +105DD6908:lI64|H105DD6918 +105DD6918:lI97|H105DD6928 +105DD6928:lI99|H105DD6938 +105DD6938:lI116|H105DD6948 +105DD6948:lI111|H105DD6958 +105DD6958:lI114|H105DD6968 +105DD6968:lI44|H105DD6978 +105DD6978:lI108|H105DD6988 +105DD6988:lI111|H105DD6998 +105DD6998:lI111|H105DD69A8 +105DD69A8:lI112|H105DD69B8 +105DD69B8:lI44|H105DD69C8 +105DD69C8:lI49|H105DD69D8 +105DD69D8:lI44|H105DD69E8 +105DD69E8:lI91|H105DD69F8 +105DD69F8:lI123|H105DD6A08 +105DD6A08:lI95|H105DD6A18 +105DD6A18:lI125|H105DD6A28 +105DD6A28:lI44|H105DD6A38 +105DD6A38:lI123|H105DD6A48 +105DD6A48:lI95|H105DD6A58 +105DD6A58:lI125|H105DD6A68 +105DD6A68:lI93|H105DD6A78 +105DD6A78:lI125|H105DD6A88 +105DD6A88:lI93|H105DD6A98 +105DD6A98:lI125|H105DD6AA8 +105DD6AA8:lI41|N +=proc_stack:<0.1.0> +0x0000000103149508:SReturn addr 0x3D82348 () +=proc_heap:<0.1.0> +=proc_stack:<0.2.0> +y0:N +y1:I0 +y2:I60000 +y3:N +y4:I0 +y5:H280017B40 +y6:A9:undefined +0x0000000103149c58:SReturn addr 0x3D82348 () +=proc_heap:<0.2.0> +=proc_stack:<0.3.0> +y0:N +0x000000010314b430:SReturn addr 0x3D82348 () +=proc_heap:<0.3.0> +=proc_stack:<0.4.0> +y0:N +0x000000010314bb80:SReturn addr 0x3D82348 () +=proc_heap:<0.4.0> +=proc_stack:<0.5.0> +y0:N +0x000000010314c2d0:SReturn addr 0x3D82348 () +=proc_heap:<0.5.0> +=proc_stack:<0.6.0> +0x00000001307d0900:SReturn addr 0x3D82348 () +=proc_heap:<0.6.0> +=proc_stack:<0.7.0> +y0:N +y1:N +y2:H280013CD0 +0x00000001307d1c18:SReturn addr 0x3D82348 () +=proc_heap:<0.7.0> +=proc_stack:<0.10.0> +y0:N +y1:I360000 +y2:H105E9B3B8 +y3:P<0.9.0> +y4:H105E9B368 +0x0000000105ebdd58:SReturn addr 0x3D82348 () +=proc_heap:<0.10.0> +105E9B3B8:lH105E9B3D8|H105E9B3E8 +105E9B3D8:lI47|H105E9B408 +105E9B408:lI85|H105E9B448 +105E9B448:lI115|H105E9B498 +105E9B498:lI101|H105E9B4F8 +105E9B4F8:lI114|H105E9B568 +105E9B568:lI115|H105E9B5E8 +105E9B5E8:lI47|H105E9B678 +105E9B678:lI110|H105E9B718 +105E9B718:lI105|H105E9B7C8 +105E9B7C8:lI99|H105E9B888 +105E9B888:lI104|H105E9B958 +105E9B958:lI111|H105E9BA38 +105E9BA38:lI108|H105E9BB28 +105E9BB28:lI97|H105E9BC28 +105E9BC28:lI115|H105E9BD38 +105E9BD38:lI99|H105E9BE58 +105E9BE58:lI97|H105E9BF88 +105E9BF88:lI114|H105E9C0C8 +105E9C0C8:lI108|H105E9C208 +105E9C208:lI115|H105E9C348 +105E9C348:lI111|H105E9C488 +105E9C488:lI110|H105E9C5C8 +105E9C5C8:lI47|H105E9C708 +105E9C708:lI86|H105E9C848 +105E9C848:lI83|H105E9C988 +105E9C988:lI32|H105E9CAC8 +105E9CAC8:lI67|H105E9CC08 +105E9CC08:lI111|H105E9CD48 +105E9CD48:lI100|H105E9CE88 +105E9CE88:lI101|H105E9CFC8 +105E9CFC8:lI47|H105E9D108 +105E9D108:lI65|H105E9D248 +105E9D248:lI100|H105E9D388 +105E9D388:lI118|H105E9D4C8 +105E9D4C8:lI101|H105E9D608 +105E9D608:lI110|H105E9D748 +105E9D748:lI116|H105E9D888 +105E9D888:lI79|H105E9D9C8 +105E9D9C8:lI102|H105E9DB08 +105E9DB08:lI67|H105E9DC48 +105E9DC48:lI111|H105E9DD88 +105E9DD88:lI100|H105E9DEC8 +105E9DEC8:lI101|H105E9E008 +105E9E008:lI47|H105E9E148 +105E9E148:lI97|H105E9E288 +105E9E288:lI111|H105E9E3C8 +105E9E3C8:lI99|H105E9E508 +105E9E508:lI50|H105E9E648 +105E9E648:lI48|H105E9E788 +105E9E788:lI50|H105E9E8C8 +105E9E8C8:lI51|H105E9EA08 +105E9EA08:lI47|H105E9EB48 +105E9EB48:lI98|H105E9EC88 +105E9EC88:lI117|H105E9EDC8 +105E9EDC8:lI105|H105E9EF08 +105E9EF08:lI108|H105E9F048 +105E9F048:lI100|H105E9F188 +105E9F188:lI47|H105E9F2C8 +105E9F2C8:lI100|H105E9F408 +105E9F408:lI101|H105E9F548 +105E9F548:lI118|H105E9F678 +105E9F678:lI47|H105E9F7A8 +105E9F7A8:lI101|H105E9F8D8 +105E9F8D8:lI114|H105E9FA08 +105E9FA08:lI108|H105E9FB38 +105E9FB38:lI97|H105E9FC68 +105E9FC68:lI110|H105E9FD98 +105E9FD98:lI103|H105E9FEC8 +105E9FEC8:lI47|H105E9FFF8 +105E9FFF8:lI103|H105EA0128 +105EA0128:lI108|H105EA0258 +105EA0258:lI101|H105EA0388 +105EA0388:lI97|H105EA04B8 +105EA04B8:lI109|H105EA05E8 +105EA05E8:lI95|H105EA0718 +105EA0718:lI99|H105EA0848 +105EA0848:lI111|H105EA0978 +105EA0978:lI109|H105EA0AA8 +105EA0AA8:lI109|H105EA0BD8 +105EA0BD8:lI117|H105EA0D08 +105EA0D08:lI110|H105EA0E38 +105EA0E38:lI105|H105EA0F68 +105EA0F68:lI116|H105EA1098 +105EA1098:lI121|H105EA1198 +105EA1198:lI95|H105EA1288 +105EA1288:lI97|H105EA1368 +105EA1368:lI110|H105EA1448 +105EA1448:lI115|H105EA1528 +105EA1528:lI105|H105EA15F8 +105EA15F8:lI47|H105EA16A8 +105EA16A8:lI101|H105EA1748 +105EA1748:lI98|H105EA17C8 +105EA17C8:lI105|H105EA1848 +105EA1848:lI110|N +105E9B3E8:lH105E9B418|H105E9B428 +105E9B418:lI47|H105E9B458 +105E9B458:lI85|H105E9B4A8 +105E9B4A8:lI115|H105E9B508 +105E9B508:lI101|H105E9B578 +105E9B578:lI114|H105E9B5F8 +105E9B5F8:lI115|H105E9B688 +105E9B688:lI47|H105E9B728 +105E9B728:lI110|H105E9B7D8 +105E9B7D8:lI105|H105E9B898 +105E9B898:lI99|H105E9B968 +105E9B968:lI104|H105E9BA48 +105E9BA48:lI111|H105E9BB38 +105E9BB38:lI108|H105E9BC38 +105E9BC38:lI97|H105E9BD48 +105E9BD48:lI115|H105E9BE68 +105E9BE68:lI99|H105E9BF98 +105E9BF98:lI97|H105E9C0D8 +105E9C0D8:lI114|H105E9C218 +105E9C218:lI108|H105E9C358 +105E9C358:lI115|H105E9C498 +105E9C498:lI111|H105E9C5D8 +105E9C5D8:lI110|H105E9C718 +105E9C718:lI47|H105E9C858 +105E9C858:lI86|H105E9C998 +105E9C998:lI83|H105E9CAD8 +105E9CAD8:lI32|H105E9CC18 +105E9CC18:lI67|H105E9CD58 +105E9CD58:lI111|H105E9CE98 +105E9CE98:lI100|H105E9CFD8 +105E9CFD8:lI101|H105E9D118 +105E9D118:lI47|H105E9D258 +105E9D258:lI65|H105E9D398 +105E9D398:lI100|H105E9D4D8 +105E9D4D8:lI118|H105E9D618 +105E9D618:lI101|H105E9D758 +105E9D758:lI110|H105E9D898 +105E9D898:lI116|H105E9D9D8 +105E9D9D8:lI79|H105E9DB18 +105E9DB18:lI102|H105E9DC58 +105E9DC58:lI67|H105E9DD98 +105E9DD98:lI111|H105E9DED8 +105E9DED8:lI100|H105E9E018 +105E9E018:lI101|H105E9E158 +105E9E158:lI47|H105E9E298 +105E9E298:lI97|H105E9E3D8 +105E9E3D8:lI111|H105E9E518 +105E9E518:lI99|H105E9E658 +105E9E658:lI50|H105E9E798 +105E9E798:lI48|H105E9E8D8 +105E9E8D8:lI50|H105E9EA18 +105E9EA18:lI51|H105E9EB58 +105E9EB58:lI47|H105E9EC98 +105E9EC98:lI98|H105E9EDD8 +105E9EDD8:lI117|H105E9EF18 +105E9EF18:lI105|H105E9F058 +105E9F058:lI108|H105E9F198 +105E9F198:lI100|H105E9F2D8 +105E9F2D8:lI47|H105E9F418 +105E9F418:lI100|H105E9F558 +105E9F558:lI101|H105E9F688 +105E9F688:lI118|H105E9F7B8 +105E9F7B8:lI47|H105E9F8E8 +105E9F8E8:lI101|H105E9FA18 +105E9FA18:lI114|H105E9FB48 +105E9FB48:lI108|H105E9FC78 +105E9FC78:lI97|H105E9FDA8 +105E9FDA8:lI110|H105E9FED8 +105E9FED8:lI103|H105EA0008 +105EA0008:lI47|H105EA0138 +105EA0138:lI103|H105EA0268 +105EA0268:lI108|H105EA0398 +105EA0398:lI101|H105EA04C8 +105EA04C8:lI97|H105EA05F8 +105EA05F8:lI109|H105EA0728 +105EA0728:lI95|H105EA0858 +105EA0858:lI118|H105EA0988 +105EA0988:lI101|H105EA0AB8 +105EA0AB8:lI114|H105EA0BE8 +105EA0BE8:lI115|H105EA0D18 +105EA0D18:lI105|H105EA0E48 +105EA0E48:lI111|H105EA0F78 +105EA0F78:lI110|H105EA10A8 +105EA10A8:lI47|H105EA11A8 +105EA11A8:lI101|H105EA1298 +105EA1298:lI98|H105EA1378 +105EA1378:lI105|H105EA1458 +105EA1458:lI110|N +105E9B428:lH105E9B468|H105E9B478 +105E9B468:lI47|H105E9B4B8 +105E9B4B8:lI85|H105E9B518 +105E9B518:lI115|H105E9B588 +105E9B588:lI101|H105E9B608 +105E9B608:lI114|H105E9B698 +105E9B698:lI115|H105E9B738 +105E9B738:lI47|H105E9B7E8 +105E9B7E8:lI110|H105E9B8A8 +105E9B8A8:lI105|H105E9B978 +105E9B978:lI99|H105E9BA58 +105E9BA58:lI104|H105E9BB48 +105E9BB48:lI111|H105E9BC48 +105E9BC48:lI108|H105E9BD58 +105E9BD58:lI97|H105E9BE78 +105E9BE78:lI115|H105E9BFA8 +105E9BFA8:lI99|H105E9C0E8 +105E9C0E8:lI97|H105E9C228 +105E9C228:lI114|H105E9C368 +105E9C368:lI108|H105E9C4A8 +105E9C4A8:lI115|H105E9C5E8 +105E9C5E8:lI111|H105E9C728 +105E9C728:lI110|H105E9C868 +105E9C868:lI47|H105E9C9A8 +105E9C9A8:lI86|H105E9CAE8 +105E9CAE8:lI83|H105E9CC28 +105E9CC28:lI32|H105E9CD68 +105E9CD68:lI67|H105E9CEA8 +105E9CEA8:lI111|H105E9CFE8 +105E9CFE8:lI100|H105E9D128 +105E9D128:lI101|H105E9D268 +105E9D268:lI47|H105E9D3A8 +105E9D3A8:lI65|H105E9D4E8 +105E9D4E8:lI100|H105E9D628 +105E9D628:lI118|H105E9D768 +105E9D768:lI101|H105E9D8A8 +105E9D8A8:lI110|H105E9D9E8 +105E9D9E8:lI116|H105E9DB28 +105E9DB28:lI79|H105E9DC68 +105E9DC68:lI102|H105E9DDA8 +105E9DDA8:lI67|H105E9DEE8 +105E9DEE8:lI111|H105E9E028 +105E9E028:lI100|H105E9E168 +105E9E168:lI101|H105E9E2A8 +105E9E2A8:lI47|H105E9E3E8 +105E9E3E8:lI97|H105E9E528 +105E9E528:lI111|H105E9E668 +105E9E668:lI99|H105E9E7A8 +105E9E7A8:lI50|H105E9E8E8 +105E9E8E8:lI48|H105E9EA28 +105E9EA28:lI50|H105E9EB68 +105E9EB68:lI51|H105E9ECA8 +105E9ECA8:lI47|H105E9EDE8 +105E9EDE8:lI98|H105E9EF28 +105E9EF28:lI117|H105E9F068 +105E9F068:lI105|H105E9F1A8 +105E9F1A8:lI108|H105E9F2E8 +105E9F2E8:lI100|H105E9F428 +105E9F428:lI47|H105E9F568 +105E9F568:lI100|H105E9F698 +105E9F698:lI101|H105E9F7C8 +105E9F7C8:lI118|H105E9F8F8 +105E9F8F8:lI47|H105E9FA28 +105E9FA28:lI101|H105E9FB58 +105E9FB58:lI114|H105E9FC88 +105E9FC88:lI108|H105E9FDB8 +105E9FDB8:lI97|H105E9FEE8 +105E9FEE8:lI110|H105EA0018 +105EA0018:lI103|H105EA0148 +105EA0148:lI47|H105EA0278 +105EA0278:lI97|H105EA03A8 +105EA03A8:lI100|H105EA04D8 +105EA04D8:lI103|H105EA0608 +105EA0608:lI108|H105EA0738 +105EA0738:lI101|H105EA0868 +105EA0868:lI110|H105EA0998 +105EA0998:lI116|H105EA0AC8 +105EA0AC8:lI47|H105EA0BF8 +105EA0BF8:lI101|H105EA0D28 +105EA0D28:lI98|H105EA0E58 +105EA0E58:lI105|H105EA0F88 +105EA0F88:lI110|N +105E9B478:lH105E9B4C8|H105E9B4D8 +105E9B4C8:lI47|H105E9B528 +105E9B528:lI85|H105E9B598 +105E9B598:lI115|H105E9B618 +105E9B618:lI101|H105E9B6A8 +105E9B6A8:lI114|H105E9B748 +105E9B748:lI115|H105E9B7F8 +105E9B7F8:lI47|H105E9B8B8 +105E9B8B8:lI110|H105E9B988 +105E9B988:lI105|H105E9BA68 +105E9BA68:lI99|H105E9BB58 +105E9BB58:lI104|H105E9BC58 +105E9BC58:lI111|H105E9BD68 +105E9BD68:lI108|H105E9BE88 +105E9BE88:lI97|H105E9BFB8 +105E9BFB8:lI115|H105E9C0F8 +105E9C0F8:lI99|H105E9C238 +105E9C238:lI97|H105E9C378 +105E9C378:lI114|H105E9C4B8 +105E9C4B8:lI108|H105E9C5F8 +105E9C5F8:lI115|H105E9C738 +105E9C738:lI111|H105E9C878 +105E9C878:lI110|H105E9C9B8 +105E9C9B8:lI47|H105E9CAF8 +105E9CAF8:lI86|H105E9CC38 +105E9CC38:lI83|H105E9CD78 +105E9CD78:lI32|H105E9CEB8 +105E9CEB8:lI67|H105E9CFF8 +105E9CFF8:lI111|H105E9D138 +105E9D138:lI100|H105E9D278 +105E9D278:lI101|H105E9D3B8 +105E9D3B8:lI47|H105E9D4F8 +105E9D4F8:lI65|H105E9D638 +105E9D638:lI100|H105E9D778 +105E9D778:lI118|H105E9D8B8 +105E9D8B8:lI101|H105E9D9F8 +105E9D9F8:lI110|H105E9DB38 +105E9DB38:lI116|H105E9DC78 +105E9DC78:lI79|H105E9DDB8 +105E9DDB8:lI102|H105E9DEF8 +105E9DEF8:lI67|H105E9E038 +105E9E038:lI111|H105E9E178 +105E9E178:lI100|H105E9E2B8 +105E9E2B8:lI101|H105E9E3F8 +105E9E3F8:lI47|H105E9E538 +105E9E538:lI97|H105E9E678 +105E9E678:lI111|H105E9E7B8 +105E9E7B8:lI99|H105E9E8F8 +105E9E8F8:lI50|H105E9EA38 +105E9EA38:lI48|H105E9EB78 +105E9EB78:lI50|H105E9ECB8 +105E9ECB8:lI51|H105E9EDF8 +105E9EDF8:lI47|H105E9EF38 +105E9EF38:lI98|H105E9F078 +105E9F078:lI117|H105E9F1B8 +105E9F1B8:lI105|H105E9F2F8 +105E9F2F8:lI108|H105E9F438 +105E9F438:lI100|H105E9F578 +105E9F578:lI47|H105E9F6A8 +105E9F6A8:lI100|H105E9F7D8 +105E9F7D8:lI101|H105E9F908 +105E9F908:lI118|H105E9FA38 +105E9FA38:lI47|H105E9FB68 +105E9FB68:lI101|H105E9FC98 +105E9FC98:lI114|H105E9FDC8 +105E9FDC8:lI108|H105E9FEF8 +105E9FEF8:lI97|H105EA0028 +105EA0028:lI110|H105EA0158 +105EA0158:lI103|H105EA0288 +105EA0288:lI47|H105EA03B8 +105EA03B8:lI103|H105EA04E8 +105EA04E8:lI108|H105EA0618 +105EA0618:lI101|H105EA0748 +105EA0748:lI97|H105EA0878 +105EA0878:lI109|H105EA09A8 +105EA09A8:lI95|H105EA0AD8 +105EA0AD8:lI101|H105EA0C08 +105EA0C08:lI114|H105EA0D38 +105EA0D38:lI108|H105EA0E68 +105EA0E68:lI97|H105EA0F98 +105EA0F98:lI110|H105EA10B8 +105EA10B8:lI103|H105EA11B8 +105EA11B8:lI47|H105EA12A8 +105EA12A8:lI101|H105EA1388 +105EA1388:lI98|H105EA1468 +105EA1468:lI105|H105EA1538 +105EA1538:lI110|N +105E9B4D8:lH105E9B538|H105E9B548 +105E9B538:lI47|H105E9B5A8 +105E9B5A8:lI85|H105E9B628 +105E9B628:lI115|H105E9B6B8 +105E9B6B8:lI101|H105E9B758 +105E9B758:lI114|H105E9B808 +105E9B808:lI115|H105E9B8C8 +105E9B8C8:lI47|H105E9B998 +105E9B998:lI110|H105E9BA78 +105E9BA78:lI105|H105E9BB68 +105E9BB68:lI99|H105E9BC68 +105E9BC68:lI104|H105E9BD78 +105E9BD78:lI111|H105E9BE98 +105E9BE98:lI108|H105E9BFC8 +105E9BFC8:lI97|H105E9C108 +105E9C108:lI115|H105E9C248 +105E9C248:lI99|H105E9C388 +105E9C388:lI97|H105E9C4C8 +105E9C4C8:lI114|H105E9C608 +105E9C608:lI108|H105E9C748 +105E9C748:lI115|H105E9C888 +105E9C888:lI111|H105E9C9C8 +105E9C9C8:lI110|H105E9CB08 +105E9CB08:lI47|H105E9CC48 +105E9CC48:lI86|H105E9CD88 +105E9CD88:lI83|H105E9CEC8 +105E9CEC8:lI32|H105E9D008 +105E9D008:lI67|H105E9D148 +105E9D148:lI111|H105E9D288 +105E9D288:lI100|H105E9D3C8 +105E9D3C8:lI101|H105E9D508 +105E9D508:lI47|H105E9D648 +105E9D648:lI65|H105E9D788 +105E9D788:lI100|H105E9D8C8 +105E9D8C8:lI118|H105E9DA08 +105E9DA08:lI101|H105E9DB48 +105E9DB48:lI110|H105E9DC88 +105E9DC88:lI116|H105E9DDC8 +105E9DDC8:lI79|H105E9DF08 +105E9DF08:lI102|H105E9E048 +105E9E048:lI67|H105E9E188 +105E9E188:lI111|H105E9E2C8 +105E9E2C8:lI100|H105E9E408 +105E9E408:lI101|H105E9E548 +105E9E548:lI47|H105E9E688 +105E9E688:lI97|H105E9E7C8 +105E9E7C8:lI111|H105E9E908 +105E9E908:lI99|H105E9EA48 +105E9EA48:lI50|H105E9EB88 +105E9EB88:lI48|H105E9ECC8 +105E9ECC8:lI50|H105E9EE08 +105E9EE08:lI51|H105E9EF48 +105E9EF48:lI47|H105E9F088 +105E9F088:lI98|H105E9F1C8 +105E9F1C8:lI117|H105E9F308 +105E9F308:lI105|H105E9F448 +105E9F448:lI108|H105E9F588 +105E9F588:lI100|H105E9F6B8 +105E9F6B8:lI47|H105E9F7E8 +105E9F7E8:lI100|H105E9F918 +105E9F918:lI101|H105E9FA48 +105E9FA48:lI118|H105E9FB78 +105E9FB78:lI47|H105E9FCA8 +105E9FCA8:lI101|H105E9FDD8 +105E9FDD8:lI114|H105E9FF08 +105E9FF08:lI108|H105EA0038 +105EA0038:lI97|H105EA0168 +105EA0168:lI110|H105EA0298 +105EA0298:lI103|H105EA03C8 +105EA03C8:lI47|H105EA04F8 +105EA04F8:lI103|H105EA0628 +105EA0628:lI108|H105EA0758 +105EA0758:lI105|H105EA0888 +105EA0888:lI110|H105EA09B8 +105EA09B8:lI116|H105EA0AE8 +105EA0AE8:lI47|H105EA0C18 +105EA0C18:lI101|H105EA0D48 +105EA0D48:lI98|H105EA0E78 +105EA0E78:lI105|H105EA0FA8 +105EA0FA8:lI110|N +105E9B548:lH105E9B5B8|H105E9B5C8 +105E9B5B8:lI47|H105E9B638 +105E9B638:lI85|H105E9B6C8 +105E9B6C8:lI115|H105E9B768 +105E9B768:lI101|H105E9B818 +105E9B818:lI114|H105E9B8D8 +105E9B8D8:lI115|H105E9B9A8 +105E9B9A8:lI47|H105E9BA88 +105E9BA88:lI110|H105E9BB78 +105E9BB78:lI105|H105E9BC78 +105E9BC78:lI99|H105E9BD88 +105E9BD88:lI104|H105E9BEA8 +105E9BEA8:lI111|H105E9BFD8 +105E9BFD8:lI108|H105E9C118 +105E9C118:lI97|H105E9C258 +105E9C258:lI115|H105E9C398 +105E9C398:lI99|H105E9C4D8 +105E9C4D8:lI97|H105E9C618 +105E9C618:lI114|H105E9C758 +105E9C758:lI108|H105E9C898 +105E9C898:lI115|H105E9C9D8 +105E9C9D8:lI111|H105E9CB18 +105E9CB18:lI110|H105E9CC58 +105E9CC58:lI47|H105E9CD98 +105E9CD98:lI86|H105E9CED8 +105E9CED8:lI83|H105E9D018 +105E9D018:lI32|H105E9D158 +105E9D158:lI67|H105E9D298 +105E9D298:lI111|H105E9D3D8 +105E9D3D8:lI100|H105E9D518 +105E9D518:lI101|H105E9D658 +105E9D658:lI47|H105E9D798 +105E9D798:lI65|H105E9D8D8 +105E9D8D8:lI100|H105E9DA18 +105E9DA18:lI118|H105E9DB58 +105E9DB58:lI101|H105E9DC98 +105E9DC98:lI110|H105E9DDD8 +105E9DDD8:lI116|H105E9DF18 +105E9DF18:lI79|H105E9E058 +105E9E058:lI102|H105E9E198 +105E9E198:lI67|H105E9E2D8 +105E9E2D8:lI111|H105E9E418 +105E9E418:lI100|H105E9E558 +105E9E558:lI101|H105E9E698 +105E9E698:lI47|H105E9E7D8 +105E9E7D8:lI97|H105E9E918 +105E9E918:lI111|H105E9EA58 +105E9EA58:lI99|H105E9EB98 +105E9EB98:lI50|H105E9ECD8 +105E9ECD8:lI48|H105E9EE18 +105E9EE18:lI50|H105E9EF58 +105E9EF58:lI51|H105E9F098 +105E9F098:lI47|H105E9F1D8 +105E9F1D8:lI98|H105E9F318 +105E9F318:lI117|H105E9F458 +105E9F458:lI105|H105E9F598 +105E9F598:lI108|H105E9F6C8 +105E9F6C8:lI100|H105E9F7F8 +105E9F7F8:lI47|H105E9F928 +105E9F928:lI100|H105E9FA58 +105E9FA58:lI101|H105E9FB88 +105E9FB88:lI118|H105E9FCB8 +105E9FCB8:lI47|H105E9FDE8 +105E9FDE8:lI101|H105E9FF18 +105E9FF18:lI114|H105EA0048 +105EA0048:lI108|H105EA0178 +105EA0178:lI97|H105EA02A8 +105EA02A8:lI110|H105EA03D8 +105EA03D8:lI103|H105EA0508 +105EA0508:lI47|H105EA0638 +105EA0638:lI103|H105EA0768 +105EA0768:lI108|H105EA0898 +105EA0898:lI101|H105EA09C8 +105EA09C8:lI97|H105EA0AF8 +105EA0AF8:lI109|H105EA0C28 +105EA0C28:lI95|H105EA0D58 +105EA0D58:lI104|H105EA0E88 +105EA0E88:lI116|H105EA0FB8 +105EA0FB8:lI116|H105EA10C8 +105EA10C8:lI112|H105EA11C8 +105EA11C8:lI47|H105EA12B8 +105EA12B8:lI101|H105EA1398 +105EA1398:lI98|H105EA1478 +105EA1478:lI105|H105EA1548 +105EA1548:lI110|N +105E9B5C8:lH105E9B648|H105E9B658 +105E9B648:lI47|H105E9B6D8 +105E9B6D8:lI85|H105E9B778 +105E9B778:lI115|H105E9B828 +105E9B828:lI101|H105E9B8E8 +105E9B8E8:lI114|H105E9B9B8 +105E9B9B8:lI115|H105E9BA98 +105E9BA98:lI47|H105E9BB88 +105E9BB88:lI110|H105E9BC88 +105E9BC88:lI105|H105E9BD98 +105E9BD98:lI99|H105E9BEB8 +105E9BEB8:lI104|H105E9BFE8 +105E9BFE8:lI111|H105E9C128 +105E9C128:lI108|H105E9C268 +105E9C268:lI97|H105E9C3A8 +105E9C3A8:lI115|H105E9C4E8 +105E9C4E8:lI99|H105E9C628 +105E9C628:lI97|H105E9C768 +105E9C768:lI114|H105E9C8A8 +105E9C8A8:lI108|H105E9C9E8 +105E9C9E8:lI115|H105E9CB28 +105E9CB28:lI111|H105E9CC68 +105E9CC68:lI110|H105E9CDA8 +105E9CDA8:lI47|H105E9CEE8 +105E9CEE8:lI86|H105E9D028 +105E9D028:lI83|H105E9D168 +105E9D168:lI32|H105E9D2A8 +105E9D2A8:lI67|H105E9D3E8 +105E9D3E8:lI111|H105E9D528 +105E9D528:lI100|H105E9D668 +105E9D668:lI101|H105E9D7A8 +105E9D7A8:lI47|H105E9D8E8 +105E9D8E8:lI65|H105E9DA28 +105E9DA28:lI100|H105E9DB68 +105E9DB68:lI118|H105E9DCA8 +105E9DCA8:lI101|H105E9DDE8 +105E9DDE8:lI110|H105E9DF28 +105E9DF28:lI116|H105E9E068 +105E9E068:lI79|H105E9E1A8 +105E9E1A8:lI102|H105E9E2E8 +105E9E2E8:lI67|H105E9E428 +105E9E428:lI111|H105E9E568 +105E9E568:lI100|H105E9E6A8 +105E9E6A8:lI101|H105E9E7E8 +105E9E7E8:lI47|H105E9E928 +105E9E928:lI97|H105E9EA68 +105E9EA68:lI111|H105E9EBA8 +105E9EBA8:lI99|H105E9ECE8 +105E9ECE8:lI50|H105E9EE28 +105E9EE28:lI48|H105E9EF68 +105E9EF68:lI50|H105E9F0A8 +105E9F0A8:lI51|H105E9F1E8 +105E9F1E8:lI47|H105E9F328 +105E9F328:lI98|H105E9F468 +105E9F468:lI117|H105E9F5A8 +105E9F5A8:lI105|H105E9F6D8 +105E9F6D8:lI108|H105E9F808 +105E9F808:lI100|H105E9F938 +105E9F938:lI47|H105E9FA68 +105E9FA68:lI100|H105E9FB98 +105E9FB98:lI101|H105E9FCC8 +105E9FCC8:lI118|H105E9FDF8 +105E9FDF8:lI47|H105E9FF28 +105E9FF28:lI101|H105EA0058 +105EA0058:lI114|H105EA0188 +105EA0188:lI108|H105EA02B8 +105EA02B8:lI97|H105EA03E8 +105EA03E8:lI110|H105EA0518 +105EA0518:lI103|H105EA0648 +105EA0648:lI47|H105EA0778 +105EA0778:lI103|H105EA08A8 +105EA08A8:lI97|H105EA09D8 +105EA09D8:lI112|H105EA0B08 +105EA0B08:lI47|H105EA0C38 +105EA0C38:lI101|H105EA0D68 +105EA0D68:lI98|H105EA0E98 +105EA0E98:lI105|H105EA0FC8 +105EA0FC8:lI110|N +105E9B658:lH105E9B6E8|H105E9B6F8 +105E9B6E8:lI47|H105E9B788 +105E9B788:lI85|H105E9B838 +105E9B838:lI115|H105E9B8F8 +105E9B8F8:lI101|H105E9B9C8 +105E9B9C8:lI114|H105E9BAA8 +105E9BAA8:lI115|H105E9BB98 +105E9BB98:lI47|H105E9BC98 +105E9BC98:lI110|H105E9BDA8 +105E9BDA8:lI105|H105E9BEC8 +105E9BEC8:lI99|H105E9BFF8 +105E9BFF8:lI104|H105E9C138 +105E9C138:lI111|H105E9C278 +105E9C278:lI108|H105E9C3B8 +105E9C3B8:lI97|H105E9C4F8 +105E9C4F8:lI115|H105E9C638 +105E9C638:lI99|H105E9C778 +105E9C778:lI97|H105E9C8B8 +105E9C8B8:lI114|H105E9C9F8 +105E9C9F8:lI108|H105E9CB38 +105E9CB38:lI115|H105E9CC78 +105E9CC78:lI111|H105E9CDB8 +105E9CDB8:lI110|H105E9CEF8 +105E9CEF8:lI47|H105E9D038 +105E9D038:lI86|H105E9D178 +105E9D178:lI83|H105E9D2B8 +105E9D2B8:lI32|H105E9D3F8 +105E9D3F8:lI67|H105E9D538 +105E9D538:lI111|H105E9D678 +105E9D678:lI100|H105E9D7B8 +105E9D7B8:lI101|H105E9D8F8 +105E9D8F8:lI47|H105E9DA38 +105E9DA38:lI65|H105E9DB78 +105E9DB78:lI100|H105E9DCB8 +105E9DCB8:lI118|H105E9DDF8 +105E9DDF8:lI101|H105E9DF38 +105E9DF38:lI110|H105E9E078 +105E9E078:lI116|H105E9E1B8 +105E9E1B8:lI79|H105E9E2F8 +105E9E2F8:lI102|H105E9E438 +105E9E438:lI67|H105E9E578 +105E9E578:lI111|H105E9E6B8 +105E9E6B8:lI100|H105E9E7F8 +105E9E7F8:lI101|H105E9E938 +105E9E938:lI47|H105E9EA78 +105E9EA78:lI97|H105E9EBB8 +105E9EBB8:lI111|H105E9ECF8 +105E9ECF8:lI99|H105E9EE38 +105E9EE38:lI50|H105E9EF78 +105E9EF78:lI48|H105E9F0B8 +105E9F0B8:lI50|H105E9F1F8 +105E9F1F8:lI51|H105E9F338 +105E9F338:lI47|H105E9F478 +105E9F478:lI98|H105E9F5B8 +105E9F5B8:lI117|H105E9F6E8 +105E9F6E8:lI105|H105E9F818 +105E9F818:lI108|H105E9F948 +105E9F948:lI100|H105E9FA78 +105E9FA78:lI47|H105E9FBA8 +105E9FBA8:lI100|H105E9FCD8 +105E9FCD8:lI101|H105E9FE08 +105E9FE08:lI118|H105E9FF38 +105E9FF38:lI47|H105EA0068 +105EA0068:lI101|H105EA0198 +105EA0198:lI114|H105EA02C8 +105EA02C8:lI108|H105EA03F8 +105EA03F8:lI97|H105EA0528 +105EA0528:lI110|H105EA0658 +105EA0658:lI103|H105EA0788 +105EA0788:lI47|H105EA08B8 +105EA08B8:lI103|H105EA09E8 +105EA09E8:lI108|H105EA0B18 +105EA0B18:lI101|H105EA0C48 +105EA0C48:lI97|H105EA0D78 +105EA0D78:lI109|H105EA0EA8 +105EA0EA8:lI95|H105EA0FD8 +105EA0FD8:lI111|H105EA10D8 +105EA10D8:lI116|H105EA11D8 +105EA11D8:lI112|H105EA12C8 +105EA12C8:lI47|H105EA13A8 +105EA13A8:lI101|H105EA1488 +105EA1488:lI98|H105EA1558 +105EA1558:lI105|H105EA1608 +105EA1608:lI110|N +105E9B6F8:lH105E9B798|H105E9B7A8 +105E9B798:lI47|H105E9B848 +105E9B848:lI85|H105E9B908 +105E9B908:lI115|H105E9B9D8 +105E9B9D8:lI101|H105E9BAB8 +105E9BAB8:lI114|H105E9BBA8 +105E9BBA8:lI115|H105E9BCA8 +105E9BCA8:lI47|H105E9BDB8 +105E9BDB8:lI110|H105E9BED8 +105E9BED8:lI105|H105E9C008 +105E9C008:lI99|H105E9C148 +105E9C148:lI104|H105E9C288 +105E9C288:lI111|H105E9C3C8 +105E9C3C8:lI108|H105E9C508 +105E9C508:lI97|H105E9C648 +105E9C648:lI115|H105E9C788 +105E9C788:lI99|H105E9C8C8 +105E9C8C8:lI97|H105E9CA08 +105E9CA08:lI114|H105E9CB48 +105E9CB48:lI108|H105E9CC88 +105E9CC88:lI115|H105E9CDC8 +105E9CDC8:lI111|H105E9CF08 +105E9CF08:lI110|H105E9D048 +105E9D048:lI47|H105E9D188 +105E9D188:lI86|H105E9D2C8 +105E9D2C8:lI83|H105E9D408 +105E9D408:lI32|H105E9D548 +105E9D548:lI67|H105E9D688 +105E9D688:lI111|H105E9D7C8 +105E9D7C8:lI100|H105E9D908 +105E9D908:lI101|H105E9DA48 +105E9DA48:lI47|H105E9DB88 +105E9DB88:lI65|H105E9DCC8 +105E9DCC8:lI100|H105E9DE08 +105E9DE08:lI118|H105E9DF48 +105E9DF48:lI101|H105E9E088 +105E9E088:lI110|H105E9E1C8 +105E9E1C8:lI116|H105E9E308 +105E9E308:lI79|H105E9E448 +105E9E448:lI102|H105E9E588 +105E9E588:lI67|H105E9E6C8 +105E9E6C8:lI111|H105E9E808 +105E9E808:lI100|H105E9E948 +105E9E948:lI101|H105E9EA88 +105E9EA88:lI47|H105E9EBC8 +105E9EBC8:lI97|H105E9ED08 +105E9ED08:lI111|H105E9EE48 +105E9EE48:lI99|H105E9EF88 +105E9EF88:lI50|H105E9F0C8 +105E9F0C8:lI48|H105E9F208 +105E9F208:lI50|H105E9F348 +105E9F348:lI51|H105E9F488 +105E9F488:lI47|H105E9F5C8 +105E9F5C8:lI98|H105E9F6F8 +105E9F6F8:lI117|H105E9F828 +105E9F828:lI105|H105E9F958 +105E9F958:lI108|H105E9FA88 +105E9FA88:lI100|H105E9FBB8 +105E9FBB8:lI47|H105E9FCE8 +105E9FCE8:lI100|H105E9FE18 +105E9FE18:lI101|H105E9FF48 +105E9FF48:lI118|H105EA0078 +105EA0078:lI47|H105EA01A8 +105EA01A8:lI101|H105EA02D8 +105EA02D8:lI114|H105EA0408 +105EA0408:lI108|H105EA0538 +105EA0538:lI97|H105EA0668 +105EA0668:lI110|H105EA0798 +105EA0798:lI103|H105EA08C8 +105EA08C8:lI47|H105EA09F8 +105EA09F8:lI103|H105EA0B28 +105EA0B28:lI108|H105EA0C58 +105EA0C58:lI101|H105EA0D88 +105EA0D88:lI97|H105EA0EB8 +105EA0EB8:lI109|H105EA0FE8 +105EA0FE8:lI95|H105EA10E8 +105EA10E8:lI99|H105EA11E8 +105EA11E8:lI111|H105EA12D8 +105EA12D8:lI109|H105EA13B8 +105EA13B8:lI109|H105EA1498 +105EA1498:lI117|H105EA1568 +105EA1568:lI110|H105EA1618 +105EA1618:lI105|H105EA16B8 +105EA16B8:lI116|H105EA1758 +105EA1758:lI121|H105EA17D8 +105EA17D8:lI95|H105EA1858 +105EA1858:lI99|H105EA18B8 +105EA18B8:lI111|H105EA1908 +105EA1908:lI108|H105EA1958 +105EA1958:lI111|H105EA1978 +105EA1978:lI117|H105EA1998 +105EA1998:lI114|H105EA19B8 +105EA19B8:lI47|H105EA19D8 +105EA19D8:lI101|H105EA19E8 +105EA19E8:lI98|H105EA19F8 +105EA19F8:lI105|H105EA1A08 +105EA1A08:lI110|N +105E9B7A8:lH105E9B858|H105E9B868 +105E9B858:lI47|H105E9B918 +105E9B918:lI85|H105E9B9E8 +105E9B9E8:lI115|H105E9BAC8 +105E9BAC8:lI101|H105E9BBB8 +105E9BBB8:lI114|H105E9BCB8 +105E9BCB8:lI115|H105E9BDC8 +105E9BDC8:lI47|H105E9BEE8 +105E9BEE8:lI110|H105E9C018 +105E9C018:lI105|H105E9C158 +105E9C158:lI99|H105E9C298 +105E9C298:lI104|H105E9C3D8 +105E9C3D8:lI111|H105E9C518 +105E9C518:lI108|H105E9C658 +105E9C658:lI97|H105E9C798 +105E9C798:lI115|H105E9C8D8 +105E9C8D8:lI99|H105E9CA18 +105E9CA18:lI97|H105E9CB58 +105E9CB58:lI114|H105E9CC98 +105E9CC98:lI108|H105E9CDD8 +105E9CDD8:lI115|H105E9CF18 +105E9CF18:lI111|H105E9D058 +105E9D058:lI110|H105E9D198 +105E9D198:lI47|H105E9D2D8 +105E9D2D8:lI86|H105E9D418 +105E9D418:lI83|H105E9D558 +105E9D558:lI32|H105E9D698 +105E9D698:lI67|H105E9D7D8 +105E9D7D8:lI111|H105E9D918 +105E9D918:lI100|H105E9DA58 +105E9DA58:lI101|H105E9DB98 +105E9DB98:lI47|H105E9DCD8 +105E9DCD8:lI65|H105E9DE18 +105E9DE18:lI100|H105E9DF58 +105E9DF58:lI118|H105E9E098 +105E9E098:lI101|H105E9E1D8 +105E9E1D8:lI110|H105E9E318 +105E9E318:lI116|H105E9E458 +105E9E458:lI79|H105E9E598 +105E9E598:lI102|H105E9E6D8 +105E9E6D8:lI67|H105E9E818 +105E9E818:lI111|H105E9E958 +105E9E958:lI100|H105E9EA98 +105E9EA98:lI101|H105E9EBD8 +105E9EBD8:lI47|H105E9ED18 +105E9ED18:lI97|H105E9EE58 +105E9EE58:lI111|H105E9EF98 +105E9EF98:lI99|H105E9F0D8 +105E9F0D8:lI50|H105E9F218 +105E9F218:lI48|H105E9F358 +105E9F358:lI50|H105E9F498 +105E9F498:lI51|H105E9F5D8 +105E9F5D8:lI47|H105E9F708 +105E9F708:lI98|H105E9F838 +105E9F838:lI117|H105E9F968 +105E9F968:lI105|H105E9FA98 +105E9FA98:lI108|H105E9FBC8 +105E9FBC8:lI100|H105E9FCF8 +105E9FCF8:lI47|H105E9FE28 +105E9FE28:lI100|H105E9FF58 +105E9FF58:lI101|H105EA0088 +105EA0088:lI118|H105EA01B8 +105EA01B8:lI47|H105EA02E8 +105EA02E8:lI101|H105EA0418 +105EA0418:lI114|H105EA0548 +105EA0548:lI108|H105EA0678 +105EA0678:lI97|H105EA07A8 +105EA07A8:lI110|H105EA08D8 +105EA08D8:lI103|H105EA0A08 +105EA0A08:lI47|H105EA0B38 +105EA0B38:lI103|H105EA0C68 +105EA0C68:lI108|H105EA0D98 +105EA0D98:lI101|H105EA0EC8 +105EA0EC8:lI97|H105EA0FF8 +105EA0FF8:lI109|H105EA10F8 +105EA10F8:lI95|H105EA11F8 +105EA11F8:lI104|H105EA12E8 +105EA12E8:lI116|H105EA13C8 +105EA13C8:lI116|H105EA14A8 +105EA14A8:lI112|H105EA1578 +105EA1578:lI99|H105EA1628 +105EA1628:lI47|H105EA16C8 +105EA16C8:lI101|H105EA1768 +105EA1768:lI98|H105EA17E8 +105EA17E8:lI105|H105EA1868 +105EA1868:lI110|N +105E9B868:lH105E9B928|H105E9B938 +105E9B928:lI47|H105E9B9F8 +105E9B9F8:lI85|H105E9BAD8 +105E9BAD8:lI115|H105E9BBC8 +105E9BBC8:lI101|H105E9BCC8 +105E9BCC8:lI114|H105E9BDD8 +105E9BDD8:lI115|H105E9BEF8 +105E9BEF8:lI47|H105E9C028 +105E9C028:lI110|H105E9C168 +105E9C168:lI105|H105E9C2A8 +105E9C2A8:lI99|H105E9C3E8 +105E9C3E8:lI104|H105E9C528 +105E9C528:lI111|H105E9C668 +105E9C668:lI108|H105E9C7A8 +105E9C7A8:lI97|H105E9C8E8 +105E9C8E8:lI115|H105E9CA28 +105E9CA28:lI99|H105E9CB68 +105E9CB68:lI97|H105E9CCA8 +105E9CCA8:lI114|H105E9CDE8 +105E9CDE8:lI108|H105E9CF28 +105E9CF28:lI115|H105E9D068 +105E9D068:lI111|H105E9D1A8 +105E9D1A8:lI110|H105E9D2E8 +105E9D2E8:lI47|H105E9D428 +105E9D428:lI86|H105E9D568 +105E9D568:lI83|H105E9D6A8 +105E9D6A8:lI32|H105E9D7E8 +105E9D7E8:lI67|H105E9D928 +105E9D928:lI111|H105E9DA68 +105E9DA68:lI100|H105E9DBA8 +105E9DBA8:lI101|H105E9DCE8 +105E9DCE8:lI47|H105E9DE28 +105E9DE28:lI65|H105E9DF68 +105E9DF68:lI100|H105E9E0A8 +105E9E0A8:lI118|H105E9E1E8 +105E9E1E8:lI101|H105E9E328 +105E9E328:lI110|H105E9E468 +105E9E468:lI116|H105E9E5A8 +105E9E5A8:lI79|H105E9E6E8 +105E9E6E8:lI102|H105E9E828 +105E9E828:lI67|H105E9E968 +105E9E968:lI111|H105E9EAA8 +105E9EAA8:lI100|H105E9EBE8 +105E9EBE8:lI101|H105E9ED28 +105E9ED28:lI47|H105E9EE68 +105E9EE68:lI97|H105E9EFA8 +105E9EFA8:lI111|H105E9F0E8 +105E9F0E8:lI99|H105E9F228 +105E9F228:lI50|H105E9F368 +105E9F368:lI48|H105E9F4A8 +105E9F4A8:lI50|H105E9F5E8 +105E9F5E8:lI51|H105E9F718 +105E9F718:lI47|H105E9F848 +105E9F848:lI98|H105E9F978 +105E9F978:lI117|H105E9FAA8 +105E9FAA8:lI105|H105E9FBD8 +105E9FBD8:lI108|H105E9FD08 +105E9FD08:lI100|H105E9FE38 +105E9FE38:lI47|H105E9FF68 +105E9FF68:lI100|H105EA0098 +105EA0098:lI101|H105EA01C8 +105EA01C8:lI118|H105EA02F8 +105EA02F8:lI47|H105EA0428 +105EA0428:lI101|H105EA0558 +105EA0558:lI114|H105EA0688 +105EA0688:lI108|H105EA07B8 +105EA07B8:lI97|H105EA08E8 +105EA08E8:lI110|H105EA0A18 +105EA0A18:lI103|H105EA0B48 +105EA0B48:lI47|H105EA0C78 +105EA0C78:lI103|H105EA0DA8 +105EA0DA8:lI108|H105EA0ED8 +105EA0ED8:lI101|H105EA1008 +105EA1008:lI97|H105EA1108 +105EA1108:lI109|H105EA1208 +105EA1208:lI95|H105EA12F8 +105EA12F8:lI115|H105EA13D8 +105EA13D8:lI116|H105EA14B8 +105EA14B8:lI100|H105EA1588 +105EA1588:lI108|H105EA1638 +105EA1638:lI105|H105EA16D8 +105EA16D8:lI98|H105EA1778 +105EA1778:lI47|H105EA17F8 +105EA17F8:lI101|H105EA1878 +105EA1878:lI98|H105EA18C8 +105EA18C8:lI105|H105EA1918 +105EA1918:lI110|N +105E9B938:lH105E9BA08|H105E9BA18 +105E9BA08:lI47|H105E9BAE8 +105E9BAE8:lI85|H105E9BBD8 +105E9BBD8:lI115|H105E9BCD8 +105E9BCD8:lI101|H105E9BDE8 +105E9BDE8:lI114|H105E9BF08 +105E9BF08:lI115|H105E9C038 +105E9C038:lI47|H105E9C178 +105E9C178:lI110|H105E9C2B8 +105E9C2B8:lI105|H105E9C3F8 +105E9C3F8:lI99|H105E9C538 +105E9C538:lI104|H105E9C678 +105E9C678:lI111|H105E9C7B8 +105E9C7B8:lI108|H105E9C8F8 +105E9C8F8:lI97|H105E9CA38 +105E9CA38:lI115|H105E9CB78 +105E9CB78:lI99|H105E9CCB8 +105E9CCB8:lI97|H105E9CDF8 +105E9CDF8:lI114|H105E9CF38 +105E9CF38:lI108|H105E9D078 +105E9D078:lI115|H105E9D1B8 +105E9D1B8:lI111|H105E9D2F8 +105E9D2F8:lI110|H105E9D438 +105E9D438:lI47|H105E9D578 +105E9D578:lI86|H105E9D6B8 +105E9D6B8:lI83|H105E9D7F8 +105E9D7F8:lI32|H105E9D938 +105E9D938:lI67|H105E9DA78 +105E9DA78:lI111|H105E9DBB8 +105E9DBB8:lI100|H105E9DCF8 +105E9DCF8:lI101|H105E9DE38 +105E9DE38:lI47|H105E9DF78 +105E9DF78:lI65|H105E9E0B8 +105E9E0B8:lI100|H105E9E1F8 +105E9E1F8:lI118|H105E9E338 +105E9E338:lI101|H105E9E478 +105E9E478:lI110|H105E9E5B8 +105E9E5B8:lI116|H105E9E6F8 +105E9E6F8:lI79|H105E9E838 +105E9E838:lI102|H105E9E978 +105E9E978:lI67|H105E9EAB8 +105E9EAB8:lI111|H105E9EBF8 +105E9EBF8:lI100|H105E9ED38 +105E9ED38:lI101|H105E9EE78 +105E9EE78:lI47|H105E9EFB8 +105E9EFB8:lI97|H105E9F0F8 +105E9F0F8:lI111|H105E9F238 +105E9F238:lI99|H105E9F378 +105E9F378:lI50|H105E9F4B8 +105E9F4B8:lI48|H105E9F5F8 +105E9F5F8:lI50|H105E9F728 +105E9F728:lI51|H105E9F858 +105E9F858:lI47|H105E9F988 +105E9F988:lI98|H105E9FAB8 +105E9FAB8:lI117|H105E9FBE8 +105E9FBE8:lI105|H105E9FD18 +105E9FD18:lI108|H105E9FE48 +105E9FE48:lI100|H105E9FF78 +105E9FF78:lI47|H105EA00A8 +105EA00A8:lI100|H105EA01D8 +105EA01D8:lI101|H105EA0308 +105EA0308:lI118|H105EA0438 +105EA0438:lI47|H105EA0568 +105EA0568:lI101|H105EA0698 +105EA0698:lI114|H105EA07C8 +105EA07C8:lI108|H105EA08F8 +105EA08F8:lI97|H105EA0A28 +105EA0A28:lI110|H105EA0B58 +105EA0B58:lI103|H105EA0C88 +105EA0C88:lI47|H105EA0DB8 +105EA0DB8:lI103|H105EA0EE8 +105EA0EE8:lI108|H105EA1018 +105EA1018:lI101|H105EA1118 +105EA1118:lI101|H105EA1218 +105EA1218:lI117|H105EA1308 +105EA1308:lI110|H105EA13E8 +105EA13E8:lI105|H105EA14C8 +105EA14C8:lI116|H105EA1598 +105EA1598:lI47|H105EA1648 +105EA1648:lI101|H105EA16E8 +105EA16E8:lI98|H105EA1788 +105EA1788:lI105|H105EA1808 +105EA1808:lI110|N +105E9BA18:lH105E9BAF8|H105E9BB08 +105E9BAF8:lI47|H105E9BBE8 +105E9BBE8:lI85|H105E9BCE8 +105E9BCE8:lI115|H105E9BDF8 +105E9BDF8:lI101|H105E9BF18 +105E9BF18:lI114|H105E9C048 +105E9C048:lI115|H105E9C188 +105E9C188:lI47|H105E9C2C8 +105E9C2C8:lI110|H105E9C408 +105E9C408:lI105|H105E9C548 +105E9C548:lI99|H105E9C688 +105E9C688:lI104|H105E9C7C8 +105E9C7C8:lI111|H105E9C908 +105E9C908:lI108|H105E9CA48 +105E9CA48:lI97|H105E9CB88 +105E9CB88:lI115|H105E9CCC8 +105E9CCC8:lI99|H105E9CE08 +105E9CE08:lI97|H105E9CF48 +105E9CF48:lI114|H105E9D088 +105E9D088:lI108|H105E9D1C8 +105E9D1C8:lI115|H105E9D308 +105E9D308:lI111|H105E9D448 +105E9D448:lI110|H105E9D588 +105E9D588:lI47|H105E9D6C8 +105E9D6C8:lI86|H105E9D808 +105E9D808:lI83|H105E9D948 +105E9D948:lI32|H105E9DA88 +105E9DA88:lI67|H105E9DBC8 +105E9DBC8:lI111|H105E9DD08 +105E9DD08:lI100|H105E9DE48 +105E9DE48:lI101|H105E9DF88 +105E9DF88:lI47|H105E9E0C8 +105E9E0C8:lI65|H105E9E208 +105E9E208:lI100|H105E9E348 +105E9E348:lI118|H105E9E488 +105E9E488:lI101|H105E9E5C8 +105E9E5C8:lI110|H105E9E708 +105E9E708:lI116|H105E9E848 +105E9E848:lI79|H105E9E988 +105E9E988:lI102|H105E9EAC8 +105E9EAC8:lI67|H105E9EC08 +105E9EC08:lI111|H105E9ED48 +105E9ED48:lI100|H105E9EE88 +105E9EE88:lI101|H105E9EFC8 +105E9EFC8:lI47|H105E9F108 +105E9F108:lI97|H105E9F248 +105E9F248:lI111|H105E9F388 +105E9F388:lI99|H105E9F4C8 +105E9F4C8:lI50|H105E9F608 +105E9F608:lI48|H105E9F738 +105E9F738:lI50|H105E9F868 +105E9F868:lI51|H105E9F998 +105E9F998:lI47|H105E9FAC8 +105E9FAC8:lI98|H105E9FBF8 +105E9FBF8:lI117|H105E9FD28 +105E9FD28:lI105|H105E9FE58 +105E9FE58:lI108|H105E9FF88 +105E9FF88:lI100|H105EA00B8 +105EA00B8:lI47|H105EA01E8 +105EA01E8:lI100|H105EA0318 +105EA0318:lI101|H105EA0448 +105EA0448:lI118|H105EA0578 +105EA0578:lI47|H105EA06A8 +105EA06A8:lI101|H105EA07D8 +105EA07D8:lI114|H105EA0908 +105EA0908:lI108|H105EA0A38 +105EA0A38:lI97|H105EA0B68 +105EA0B68:lI110|H105EA0C98 +105EA0C98:lI103|H105EA0DC8 +105EA0DC8:lI47|H105EA0EF8 +105EA0EF8:lI103|H105EA1028 +105EA1028:lI108|H105EA1128 +105EA1128:lI101|H105EA1228 +105EA1228:lI97|H105EA1318 +105EA1318:lI109|H105EA13F8 +105EA13F8:lI46|H105EA14D8 +105EA14D8:lI108|H105EA15A8 +105EA15A8:lI111|H105EA1658 +105EA1658:lI99|H105EA16F8 +105EA16F8:lI107|H105EA1798 +105EA1798:lI47|H105EA1818 +105EA1818:lI101|H105EA1888 +105EA1888:lI98|H105EA18D8 +105EA18D8:lI105|H105EA1928 +105EA1928:lI110|N +105E9BB08:lH105E9BBF8|H105E9BC08 +105E9BBF8:lI47|H105E9BCF8 +105E9BCF8:lI85|H105E9BE08 +105E9BE08:lI115|H105E9BF28 +105E9BF28:lI101|H105E9C058 +105E9C058:lI114|H105E9C198 +105E9C198:lI115|H105E9C2D8 +105E9C2D8:lI47|H105E9C418 +105E9C418:lI110|H105E9C558 +105E9C558:lI105|H105E9C698 +105E9C698:lI99|H105E9C7D8 +105E9C7D8:lI104|H105E9C918 +105E9C918:lI111|H105E9CA58 +105E9CA58:lI108|H105E9CB98 +105E9CB98:lI97|H105E9CCD8 +105E9CCD8:lI115|H105E9CE18 +105E9CE18:lI99|H105E9CF58 +105E9CF58:lI97|H105E9D098 +105E9D098:lI114|H105E9D1D8 +105E9D1D8:lI108|H105E9D318 +105E9D318:lI115|H105E9D458 +105E9D458:lI111|H105E9D598 +105E9D598:lI110|H105E9D6D8 +105E9D6D8:lI47|H105E9D818 +105E9D818:lI86|H105E9D958 +105E9D958:lI83|H105E9DA98 +105E9DA98:lI32|H105E9DBD8 +105E9DBD8:lI67|H105E9DD18 +105E9DD18:lI111|H105E9DE58 +105E9DE58:lI100|H105E9DF98 +105E9DF98:lI101|H105E9E0D8 +105E9E0D8:lI47|H105E9E218 +105E9E218:lI65|H105E9E358 +105E9E358:lI100|H105E9E498 +105E9E498:lI118|H105E9E5D8 +105E9E5D8:lI101|H105E9E718 +105E9E718:lI110|H105E9E858 +105E9E858:lI116|H105E9E998 +105E9E998:lI79|H105E9EAD8 +105E9EAD8:lI102|H105E9EC18 +105E9EC18:lI67|H105E9ED58 +105E9ED58:lI111|H105E9EE98 +105E9EE98:lI100|H105E9EFD8 +105E9EFD8:lI101|H105E9F118 +105E9F118:lI47|H105E9F258 +105E9F258:lI97|H105E9F398 +105E9F398:lI111|H105E9F4D8 +105E9F4D8:lI99|H105E9F618 +105E9F618:lI50|H105E9F748 +105E9F748:lI48|H105E9F878 +105E9F878:lI50|H105E9F9A8 +105E9F9A8:lI51|H105E9FAD8 +105E9FAD8:lI47|H105E9FC08 +105E9FC08:lI98|H105E9FD38 +105E9FD38:lI117|H105E9FE68 +105E9FE68:lI105|H105E9FF98 +105E9FF98:lI108|H105EA00C8 +105EA00C8:lI100|H105EA01F8 +105EA01F8:lI47|H105EA0328 +105EA0328:lI100|H105EA0458 +105EA0458:lI101|H105EA0588 +105EA0588:lI118|H105EA06B8 +105EA06B8:lI47|H105EA07E8 +105EA07E8:lI101|H105EA0918 +105EA0918:lI114|H105EA0A48 +105EA0A48:lI108|H105EA0B78 +105EA0B78:lI97|H105EA0CA8 +105EA0CA8:lI110|H105EA0DD8 +105EA0DD8:lI103|H105EA0F08 +105EA0F08:lI47|H105EA1038 +105EA1038:lI115|H105EA1138 +105EA1138:lI110|H105EA1238 +105EA1238:lI97|H105EA1328 +105EA1328:lI103|H105EA1408 +105EA1408:lI47|H105EA14E8 +105EA14E8:lI101|H105EA15B8 +105EA15B8:lI98|H105EA1668 +105EA1668:lI105|H105EA1708 +105EA1708:lI110|N +105E9BC08:lH105E9BD08|H105E9BD18 +105E9BD08:lI47|H105E9BE18 +105E9BE18:lI85|H105E9BF38 +105E9BF38:lI115|H105E9C068 +105E9C068:lI101|H105E9C1A8 +105E9C1A8:lI114|H105E9C2E8 +105E9C2E8:lI115|H105E9C428 +105E9C428:lI47|H105E9C568 +105E9C568:lI110|H105E9C6A8 +105E9C6A8:lI105|H105E9C7E8 +105E9C7E8:lI99|H105E9C928 +105E9C928:lI104|H105E9CA68 +105E9CA68:lI111|H105E9CBA8 +105E9CBA8:lI108|H105E9CCE8 +105E9CCE8:lI97|H105E9CE28 +105E9CE28:lI115|H105E9CF68 +105E9CF68:lI99|H105E9D0A8 +105E9D0A8:lI97|H105E9D1E8 +105E9D1E8:lI114|H105E9D328 +105E9D328:lI108|H105E9D468 +105E9D468:lI115|H105E9D5A8 +105E9D5A8:lI111|H105E9D6E8 +105E9D6E8:lI110|H105E9D828 +105E9D828:lI47|H105E9D968 +105E9D968:lI86|H105E9DAA8 +105E9DAA8:lI83|H105E9DBE8 +105E9DBE8:lI32|H105E9DD28 +105E9DD28:lI67|H105E9DE68 +105E9DE68:lI111|H105E9DFA8 +105E9DFA8:lI100|H105E9E0E8 +105E9E0E8:lI101|H105E9E228 +105E9E228:lI47|H105E9E368 +105E9E368:lI65|H105E9E4A8 +105E9E4A8:lI100|H105E9E5E8 +105E9E5E8:lI118|H105E9E728 +105E9E728:lI101|H105E9E868 +105E9E868:lI110|H105E9E9A8 +105E9E9A8:lI116|H105E9EAE8 +105E9EAE8:lI79|H105E9EC28 +105E9EC28:lI102|H105E9ED68 +105E9ED68:lI67|H105E9EEA8 +105E9EEA8:lI111|H105E9EFE8 +105E9EFE8:lI100|H105E9F128 +105E9F128:lI101|H105E9F268 +105E9F268:lI47|H105E9F3A8 +105E9F3A8:lI97|H105E9F4E8 +105E9F4E8:lI111|H105E9F628 +105E9F628:lI99|H105E9F758 +105E9F758:lI50|H105E9F888 +105E9F888:lI48|H105E9F9B8 +105E9F9B8:lI50|H105E9FAE8 +105E9FAE8:lI51|H105E9FC18 +105E9FC18:lI47|H105E9FD48 +105E9FD48:lI98|H105E9FE78 +105E9FE78:lI117|H105E9FFA8 +105E9FFA8:lI105|H105EA00D8 +105EA00D8:lI108|H105EA0208 +105EA0208:lI100|H105EA0338 +105EA0338:lI47|H105EA0468 +105EA0468:lI100|H105EA0598 +105EA0598:lI101|H105EA06C8 +105EA06C8:lI118|H105EA07F8 +105EA07F8:lI47|H105EA0928 +105EA0928:lI101|H105EA0A58 +105EA0A58:lI114|H105EA0B88 +105EA0B88:lI108|H105EA0CB8 +105EA0CB8:lI97|H105EA0DE8 +105EA0DE8:lI110|H105EA0F18 +105EA0F18:lI103|H105EA1048 +105EA1048:lI47|H105EA1148 +105EA1148:lI116|H105EA1248 +105EA1248:lI111|H105EA1338 +105EA1338:lI109|H105EA1418 +105EA1418:lI47|H105EA14F8 +105EA14F8:lI101|H105EA15C8 +105EA15C8:lI98|H105EA1678 +105EA1678:lI105|H105EA1718 +105EA1718:lI110|N +105E9BD18:lH105E9BE28|H105E9BE38 +105E9BE28:lI47|H105E9BF48 +105E9BF48:lI85|H105E9C078 +105E9C078:lI115|H105E9C1B8 +105E9C1B8:lI101|H105E9C2F8 +105E9C2F8:lI114|H105E9C438 +105E9C438:lI115|H105E9C578 +105E9C578:lI47|H105E9C6B8 +105E9C6B8:lI110|H105E9C7F8 +105E9C7F8:lI105|H105E9C938 +105E9C938:lI99|H105E9CA78 +105E9CA78:lI104|H105E9CBB8 +105E9CBB8:lI111|H105E9CCF8 +105E9CCF8:lI108|H105E9CE38 +105E9CE38:lI97|H105E9CF78 +105E9CF78:lI115|H105E9D0B8 +105E9D0B8:lI99|H105E9D1F8 +105E9D1F8:lI97|H105E9D338 +105E9D338:lI114|H105E9D478 +105E9D478:lI108|H105E9D5B8 +105E9D5B8:lI115|H105E9D6F8 +105E9D6F8:lI111|H105E9D838 +105E9D838:lI110|H105E9D978 +105E9D978:lI47|H105E9DAB8 +105E9DAB8:lI86|H105E9DBF8 +105E9DBF8:lI83|H105E9DD38 +105E9DD38:lI32|H105E9DE78 +105E9DE78:lI67|H105E9DFB8 +105E9DFB8:lI111|H105E9E0F8 +105E9E0F8:lI100|H105E9E238 +105E9E238:lI101|H105E9E378 +105E9E378:lI47|H105E9E4B8 +105E9E4B8:lI65|H105E9E5F8 +105E9E5F8:lI100|H105E9E738 +105E9E738:lI118|H105E9E878 +105E9E878:lI101|H105E9E9B8 +105E9E9B8:lI110|H105E9EAF8 +105E9EAF8:lI116|H105E9EC38 +105E9EC38:lI79|H105E9ED78 +105E9ED78:lI102|H105E9EEB8 +105E9EEB8:lI67|H105E9EFF8 +105E9EFF8:lI111|H105E9F138 +105E9F138:lI100|H105E9F278 +105E9F278:lI101|H105E9F3B8 +105E9F3B8:lI47|H105E9F4F8 +105E9F4F8:lI97|H105E9F638 +105E9F638:lI111|H105E9F768 +105E9F768:lI99|H105E9F898 +105E9F898:lI50|H105E9F9C8 +105E9F9C8:lI48|H105E9FAF8 +105E9FAF8:lI50|H105E9FC28 +105E9FC28:lI51|H105E9FD58 +105E9FD58:lI47|H105E9FE88 +105E9FE88:lI98|H105E9FFB8 +105E9FFB8:lI117|H105EA00E8 +105EA00E8:lI105|H105EA0218 +105EA0218:lI108|H105EA0348 +105EA0348:lI100|H105EA0478 +105EA0478:lI47|H105EA05A8 +105EA05A8:lI100|H105EA06D8 +105EA06D8:lI101|H105EA0808 +105EA0808:lI118|H105EA0938 +105EA0938:lI47|H105EA0A68 +105EA0A68:lI101|H105EA0B98 +105EA0B98:lI114|H105EA0CC8 +105EA0CC8:lI108|H105EA0DF8 +105EA0DF8:lI97|H105EA0F28 +105EA0F28:lI110|H105EA1058 +105EA1058:lI103|H105EA1158 +105EA1158:lI47|H105EA1258 +105EA1258:lI97|H105EA1348 +105EA1348:lI111|H105EA1428 +105EA1428:lI99|H105EA1508 +105EA1508:lI50|H105EA15D8 +105EA15D8:lI48|H105EA1688 +105EA1688:lI50|H105EA1728 +105EA1728:lI51|H105EA17A8 +105EA17A8:lI47|H105EA1828 +105EA1828:lI101|H105EA1898 +105EA1898:lI98|H105EA18E8 +105EA18E8:lI105|H105EA1938 +105EA1938:lI110|N +105E9BE38:lH105E9BF58|H105E9BF68 +105E9BF58:lI47|H105E9C088 +105E9C088:lI85|H105E9C1C8 +105E9C1C8:lI115|H105E9C308 +105E9C308:lI101|H105E9C448 +105E9C448:lI114|H105E9C588 +105E9C588:lI115|H105E9C6C8 +105E9C6C8:lI47|H105E9C808 +105E9C808:lI110|H105E9C948 +105E9C948:lI105|H105E9CA88 +105E9CA88:lI99|H105E9CBC8 +105E9CBC8:lI104|H105E9CD08 +105E9CD08:lI111|H105E9CE48 +105E9CE48:lI108|H105E9CF88 +105E9CF88:lI97|H105E9D0C8 +105E9D0C8:lI115|H105E9D208 +105E9D208:lI99|H105E9D348 +105E9D348:lI97|H105E9D488 +105E9D488:lI114|H105E9D5C8 +105E9D5C8:lI108|H105E9D708 +105E9D708:lI115|H105E9D848 +105E9D848:lI111|H105E9D988 +105E9D988:lI110|H105E9DAC8 +105E9DAC8:lI47|H105E9DC08 +105E9DC08:lI86|H105E9DD48 +105E9DD48:lI83|H105E9DE88 +105E9DE88:lI32|H105E9DFC8 +105E9DFC8:lI67|H105E9E108 +105E9E108:lI111|H105E9E248 +105E9E248:lI100|H105E9E388 +105E9E388:lI101|H105E9E4C8 +105E9E4C8:lI47|H105E9E608 +105E9E608:lI65|H105E9E748 +105E9E748:lI100|H105E9E888 +105E9E888:lI118|H105E9E9C8 +105E9E9C8:lI101|H105E9EB08 +105E9EB08:lI110|H105E9EC48 +105E9EC48:lI116|H105E9ED88 +105E9ED88:lI79|H105E9EEC8 +105E9EEC8:lI102|H105E9F008 +105E9F008:lI67|H105E9F148 +105E9F148:lI111|H105E9F288 +105E9F288:lI100|H105E9F3C8 +105E9F3C8:lI101|H105E9F508 +105E9F508:lI47|H105E9F648 +105E9F648:lI97|H105E9F778 +105E9F778:lI111|H105E9F8A8 +105E9F8A8:lI99|H105E9F9D8 +105E9F9D8:lI50|H105E9FB08 +105E9FB08:lI48|H105E9FC38 +105E9FC38:lI50|H105E9FD68 +105E9FD68:lI51|H105E9FE98 +105E9FE98:lI47|H105E9FFC8 +105E9FFC8:lI98|H105EA00F8 +105EA00F8:lI117|H105EA0228 +105EA0228:lI105|H105EA0358 +105EA0358:lI108|H105EA0488 +105EA0488:lI100|H105EA05B8 +105EA05B8:lI47|H105EA06E8 +105EA06E8:lI100|H105EA0818 +105EA0818:lI101|H105EA0948 +105EA0948:lI118|H105EA0A78 +105EA0A78:lI47|H105EA0BA8 +105EA0BA8:lI101|H105EA0CD8 +105EA0CD8:lI114|H105EA0E08 +105EA0E08:lI108|H105EA0F38 +105EA0F38:lI97|H105EA1068 +105EA1068:lI110|H105EA1168 +105EA1168:lI103|H105EA1268 +105EA1268:lI47|H105EA1358 +105EA1358:lI115|H105EA1438 +105EA1438:lI105|H105EA1518 +105EA1518:lI109|H105EA15E8 +105EA15E8:lI112|H105EA1698 +105EA1698:lI108|H105EA1738 +105EA1738:lI105|H105EA17B8 +105EA17B8:lI102|H105EA1838 +105EA1838:lI105|H105EA18A8 +105EA18A8:lI108|H105EA18F8 +105EA18F8:lI101|H105EA1948 +105EA1948:lI47|H105EA1968 +105EA1968:lI101|H105EA1988 +105EA1988:lI98|H105EA19A8 +105EA19A8:lI105|H105EA19C8 +105EA19C8:lI110|N +105E9BF68:lH105E9C098|H105E9C0A8 +105E9C098:lI47|H105E9C1D8 +105E9C1D8:lI111|H105E9C318 +105E9C318:lI112|H105E9C458 +105E9C458:lI116|H105E9C598 +105E9C598:lI47|H105E9C6D8 +105E9C6D8:lI104|H105E9C818 +105E9C818:lI111|H105E9C958 +105E9C958:lI109|H105E9CA98 +105E9CA98:lI101|H105E9CBD8 +105E9CBD8:lI98|H105E9CD18 +105E9CD18:lI114|H105E9CE58 +105E9CE58:lI101|H105E9CF98 +105E9CF98:lI119|H105E9D0D8 +105E9D0D8:lI47|H105E9D218 +105E9D218:lI67|H105E9D358 +105E9D358:lI101|H105E9D498 +105E9D498:lI108|H105E9D5D8 +105E9D5D8:lI108|H105E9D718 +105E9D718:lI97|H105E9D858 +105E9D858:lI114|H105E9D998 +105E9D998:lI47|H105E9DAD8 +105E9DAD8:lI101|H105E9DC18 +105E9DC18:lI114|H105E9DD58 +105E9DD58:lI108|H105E9DE98 +105E9DE98:lI97|H105E9DFD8 +105E9DFD8:lI110|H105E9E118 +105E9E118:lI103|H105E9E258 +105E9E258:lI47|H105E9E398 +105E9E398:lI50|H105E9E4D8 +105E9E4D8:lI54|H105E9E618 +105E9E618:lI46|H105E9E758 +105E9E758:lI48|H105E9E898 +105E9E898:lI46|H105E9E9D8 +105E9E9D8:lI50|H105E9EB18 +105E9EB18:lI47|H105E9EC58 +105E9EC58:lI108|H105E9ED98 +105E9ED98:lI105|H105E9EED8 +105E9EED8:lI98|H105E9F018 +105E9F018:lI47|H105E9F158 +105E9F158:lI101|H105E9F298 +105E9F298:lI114|H105E9F3D8 +105E9F3D8:lI108|H105E9F518 +105E9F518:lI97|H105E9F658 +105E9F658:lI110|H105E9F788 +105E9F788:lI103|H105E9F8B8 +105E9F8B8:lI47|H105E9F9E8 +105E9F9E8:lI108|H105E9FB18 +105E9FB18:lI105|H105E9FC48 +105E9FC48:lI98|H105E9FD78 +105E9FD78:lI47|H105E9FEA8 +105E9FEA8:lI107|H105E9FFD8 +105E9FFD8:lI101|H105EA0108 +105EA0108:lI114|H105EA0238 +105EA0238:lI110|H105EA0368 +105EA0368:lI101|H105EA0498 +105EA0498:lI108|H105EA05C8 +105EA05C8:lI45|H105EA06F8 +105EA06F8:lI57|H105EA0828 +105EA0828:lI46|H105EA0958 +105EA0958:lI48|H105EA0A88 +105EA0A88:lI46|H105EA0BB8 +105EA0BB8:lI50|H105EA0CE8 +105EA0CE8:lI47|H105EA0E18 +105EA0E18:lI101|H105EA0F48 +105EA0F48:lI98|H105EA1078 +105EA1078:lI105|H105EA1178 +105EA1178:lI110|N +105E9C0A8:lH105E9C1E8|N +105E9C1E8:lI47|H105E9C328 +105E9C328:lI111|H105E9C468 +105E9C468:lI112|H105E9C5A8 +105E9C5A8:lI116|H105E9C6E8 +105E9C6E8:lI47|H105E9C828 +105E9C828:lI104|H105E9C968 +105E9C968:lI111|H105E9CAA8 +105E9CAA8:lI109|H105E9CBE8 +105E9CBE8:lI101|H105E9CD28 +105E9CD28:lI98|H105E9CE68 +105E9CE68:lI114|H105E9CFA8 +105E9CFA8:lI101|H105E9D0E8 +105E9D0E8:lI119|H105E9D228 +105E9D228:lI47|H105E9D368 +105E9D368:lI67|H105E9D4A8 +105E9D4A8:lI101|H105E9D5E8 +105E9D5E8:lI108|H105E9D728 +105E9D728:lI108|H105E9D868 +105E9D868:lI97|H105E9D9A8 +105E9D9A8:lI114|H105E9DAE8 +105E9DAE8:lI47|H105E9DC28 +105E9DC28:lI101|H105E9DD68 +105E9DD68:lI114|H105E9DEA8 +105E9DEA8:lI108|H105E9DFE8 +105E9DFE8:lI97|H105E9E128 +105E9E128:lI110|H105E9E268 +105E9E268:lI103|H105E9E3A8 +105E9E3A8:lI47|H105E9E4E8 +105E9E4E8:lI50|H105E9E628 +105E9E628:lI54|H105E9E768 +105E9E768:lI46|H105E9E8A8 +105E9E8A8:lI48|H105E9E9E8 +105E9E9E8:lI46|H105E9EB28 +105E9EB28:lI50|H105E9EC68 +105E9EC68:lI47|H105E9EDA8 +105E9EDA8:lI108|H105E9EEE8 +105E9EEE8:lI105|H105E9F028 +105E9F028:lI98|H105E9F168 +105E9F168:lI47|H105E9F2A8 +105E9F2A8:lI101|H105E9F3E8 +105E9F3E8:lI114|H105E9F528 +105E9F528:lI108|H105E9F668 +105E9F668:lI97|H105E9F798 +105E9F798:lI110|H105E9F8C8 +105E9F8C8:lI103|H105E9F9F8 +105E9F9F8:lI47|H105E9FB28 +105E9FB28:lI108|H105E9FC58 +105E9FC58:lI105|H105E9FD88 +105E9FD88:lI98|H105E9FEB8 +105E9FEB8:lI47|H105E9FFE8 +105E9FFE8:lI115|H105EA0118 +105EA0118:lI116|H105EA0248 +105EA0248:lI100|H105EA0378 +105EA0378:lI108|H105EA04A8 +105EA04A8:lI105|H105EA05D8 +105EA05D8:lI98|H105EA0708 +105EA0708:lI45|H105EA0838 +105EA0838:lI53|H105EA0968 +105EA0968:lI46|H105EA0A98 +105EA0A98:lI48|H105EA0BC8 +105EA0BC8:lI46|H105EA0CF8 +105EA0CF8:lI50|H105EA0E28 +105EA0E28:lI47|H105EA0F58 +105EA0F58:lI101|H105EA1088 +105EA1088:lI98|H105EA1188 +105EA1188:lI105|H105EA1278 +105EA1278:lI110|N +105E9B368:t6:A5:state,A5:efile,N,A6:noport,I360000,H105E9B348 +105E9B348:t3:AA:prim_state,A5:false,A9:undefined +=proc_dictionary:<0.42.0> +H105DBEDE0 +H105DBEDF8 +H105DBEE10 +=proc_stack:<0.42.0> +y0:N +y1:A8:infinity +y2:H105DBEDB0 +y3:H105DB3618 +y4:A6:logger +y5:P<0.9.0> +0x0000000105db5e48:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db5e68:SReturn addr 0x3D82348 () +=proc_heap:<0.42.0> +105DBEDB0:t5:AE:callback_cache,AD:logger_server,H105DBEE28,H105DBEE50,H105DBEE78 +105DBEE78:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9pbmZvYQI= +105DBEE50:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9jYXN0YQI= +105DBEE28:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9jYWxsYQM= +105DB3618:t5:A5:state,H105DBED98,A9:undefined,H28005B328,A9:undefined +105DBED98:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAAK+R+vYAAd/g02c= +105DBEDE0:t2:AA:$ancestors,H105DBEEA0 +105DBEEA0:lP<0.9.0>|N +105DBEDF8:t2:A12:$logger_cb_process,A4:true +105DBEE10:t2:AD:$initial_call,H105DBEEB0 +105DBEEB0:t3:AD:logger_server,A4:init,I1 +=proc_dictionary:<0.44.0> +H10665ACF8 +H10665AD10 +=proc_stack:<0.44.0> +y0:N +y1:A8:infinity +y2:H10665ACC8 +y3:H105E81EB0 +y4:A16:application_controller +y5:P<0.9.0> +0x0000000105e9b338:SReturn addr 0x3D82348 () +=proc_heap:<0.44.0> +10665ACC8:t5:AE:callback_cache,A16:application_controller,H10665AD48,H10665AD70,H10665AD98 +10665AD98:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9pbmZvYQI= +10665AD70:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9jYXN0YQI= +10665AD48:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9jYWxsYQM= +105E81EB0:t9:A5:state,N,N,N,H105E81E78,N,H105E81EA0,N,N +105E81EA0:lH105E81E88|H105E81608 +105E81E88:t2:A7:aoc2023,A9:temporary +105E81608:lH105E815F0|H105E633A0 +105E815F0:t2:A8:gleeunit,A9:temporary +105E633A0:lH105E63420|H105E63438 +105E63420:t2:A7:adglent,A9:temporary +105E63438:lH105E634A0|H106693B38 +105E634A0:t2:A3:tom,A9:temporary +106693B38:lH106693B60|H106688C50 +106693B60:t2:AA:simplifile,A9:temporary +106688C50:lH106688CF0|H106688D08 +106688CF0:t2:A5:glint,A9:temporary +106688D08:lH106688D90|H106688B10 +106688D90:t2:A4:snag,A9:temporary +106688B10:lH106688B38|H106688980 +106688B38:t2:A9:gleam_otp,A9:temporary +106688980:lH1066889B8|H1066889D0 +1066889B8:t2:AB:gleam_httpc,A9:temporary +1066889D0:lH106688A08|H106688A20 +106688A08:t2:A3:ssl,A9:temporary +106688A20:lH106688A58|H106688A70 +106688A58:t2:AA:public_key,A9:temporary +106688A70:lH106688A98|H106677B00 +106688A98:t2:A4:asn1,A9:temporary +106677B00:lH106677B90|H106664070 +106677B90:t2:A6:crypto,A9:temporary +106664070:lH106664100|H10665B320 +106664100:t2:A5:inets,A9:temporary +10665B320:lH10665B370|H10665B198 +10665B370:t2:AA:gleam_http,A9:temporary +10665B198:lH10665B1E8|H10665AF00 +10665B1E8:t2:AC:gleam_erlang,A9:temporary +10665AF00:lH10665AF60|H10665AF78 +10665AF60:t2:A3:gap,A9:temporary +10665AF78:lH10665AFC0|H10665AFD8 +10665AFC0:t2:A14:gleam_community_ansi,A9:temporary +10665AFD8:lH10665B020|H10665B038 +10665B020:t2:A16:gleam_community_colour,A9:temporary +10665B038:lH10665B070|H10665AD38 +10665B070:t2:AC:gleam_stdlib,A9:temporary +10665AD38:lH10665ADF8|H10665AE10 +10665ADF8:t2:A6:stdlib,A9:permanent +10665AE10:lH10665AE38|N +10665AE38:t2:A6:kernel,A9:permanent +105E81E78:lH105E81E60|H105E815E0 +105E81E60:t2:A7:aoc2023,A9:undefined +105E815E0:lH105E815C8|H105E63390 +105E815C8:t2:A8:gleeunit,A9:undefined +105E63390:lH105E633F8|H105E63410 +105E633F8:t2:A7:adglent,A9:undefined +105E63410:lH105E63488|H106693B28 +105E63488:t2:A3:tom,A9:undefined +106693B28:lH106693B48|H106688C40 +106693B48:t2:AA:simplifile,A9:undefined +106688C40:lH106688CC8|H106688CE0 +106688CC8:t2:A5:glint,A9:undefined +106688CE0:lH106688D78|H106688B00 +106688D78:t2:A4:snag,A9:undefined +106688B00:lH106688B20|H106688970 +106688B20:t2:A9:gleam_otp,A9:undefined +106688970:lH106688990|H1066889A8 +106688990:t2:AB:gleam_httpc,A9:undefined +1066889A8:lH1066889E0|H1066889F8 +1066889E0:t2:A3:ssl,P<0.102.0> +1066889F8:lH106688A30|H106688A48 +106688A30:t2:AA:public_key,A9:undefined +106688A48:lH106688A80|H106677AF0 +106688A80:t2:A4:asn1,A9:undefined +106677AF0:lH106677B78|H106664060 +106677B78:t2:A6:crypto,A9:undefined +106664060:lH1066640E8|H10665B310 +1066640E8:t2:A5:inets,P<0.90.0> +10665B310:lH10665B358|H10665B188 +10665B358:t2:AA:gleam_http,A9:undefined +10665B188:lH10665B1D0|H10665AEF0 +10665B1D0:t2:AC:gleam_erlang,A9:undefined +10665AEF0:lH10665AF38|H10665AF50 +10665AF38:t2:A3:gap,A9:undefined +10665AF50:lH10665AF98|H10665AFB0 +10665AF98:t2:A14:gleam_community_ansi,A9:undefined +10665AFB0:lH10665AFF8|H10665B010 +10665AFF8:t2:A16:gleam_community_colour,A9:undefined +10665B010:lH10665B058|H10665AD28 +10665B058:t2:AC:gleam_stdlib,A9:undefined +10665AD28:lH10665ADD0|H10665ADE8 +10665ADD0:t2:A6:stdlib,A9:undefined +10665ADE8:lH10665AE20|N +10665AE20:t2:A6:kernel,P<0.46.0> +10665ACF8:t2:AA:$ancestors,H10665ADC0 +10665ADC0:lP<0.9.0>|N +10665AD10:t2:AD:$initial_call,H280046B58 +=proc_dictionary:<0.46.0> +H105D9A980 +H105D9A9B8 +=proc_stack:<0.46.0> +y0:H105D9AB18 +y1:P<0.44.0> +0x0000000105d9ac18:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d9ac38:SReturn addr 0x3D82348 () +=proc_heap:<0.46.0> +105D9AB18:t7:A5:state,P<0.47.0>,H105D9A0A0,N,I0,A4:init,N +105D9A0A0:t8:A9:appl_data,A6:kernel,H105D9A8F0,A9:undefined,H105D9A0E8,H105D9A710,A8:infinity,A8:infinity +105D9A710:lAB:application|H105D9A700 +105D9A700:lA16:application_controller|H105D9A6F0 +105D9A6F0:lA12:application_master|H105D9A6E0 +105D9A6E0:lA13:application_starter|H105D9A6D0 +105D9A6D0:lA4:auth|H105D9A6C0 +105D9A6C0:lA4:code|H105D9A6B0 +105D9A6B0:lAB:code_server|H105D9A6A0 +105D9A6A0:lA9:dist_util|H105D9A690 +105D9A690:lAF:erl_boot_server|H105D9A680 +105D9A680:lA12:erl_compile_server|H105D9A670 +105D9A670:lA10:erl_distribution|H105D9A660 +105D9A660:lAF:erl_erts_errors|H105D9A650 +105D9A650:lA9:erl_reply|H105D9A640 +105D9A640:lA11:erl_kernel_errors|H105D9A630 +105D9A630:lA12:erl_signal_handler|H105D9A620 +105D9A620:lA4:erpc|H105D9A610 +105D9A610:lAD:error_handler|H105D9A600 +105D9A600:lAC:error_logger|H105D9A5F0 +105D9A5F0:lA4:file|H105D9A5E0 +105D9A5E0:lAB:file_server|H105D9A5D0 +105D9A5D0:lAE:file_io_server|H105D9A5C0 +105D9A5C0:lA6:global|H105D9A5B0 +105D9A5B0:lAC:global_group|H105D9A5A0 +105D9A5A0:lAD:global_search|H105D9A590 +105D9A590:lA5:group|H105D9A580 +105D9A580:lAD:group_history|H105D9A570 +105D9A570:lA5:heart|H105D9A560 +105D9A560:lA9:inet6_tcp|H105D9A550 +105D9A550:lAE:inet6_tcp_dist|H105D9A540 +105D9A540:lA9:inet6_udp|H105D9A530 +105D9A530:lAA:inet6_sctp|H105D9A520 +105D9A520:lAB:inet_config|H105D9A510 +105D9A510:lAE:inet_epmd_dist|H105D9A500 +105D9A500:lA10:inet_epmd_socket|H105D9A4F0 +105D9A4F0:lAA:inet_hosts|H105D9A4E0 +105D9A4E0:lA13:inet_gethost_native|H105D9A4D0 +105D9A4D0:lAD:inet_tcp_dist|H105D9A4C0 +105D9A4C0:lA6:kernel|H105D9A4B0 +105D9A4B0:lAD:kernel_config|H105D9A4A0 +105D9A4A0:lAB:kernel_refc|H105D9A490 +105D9A490:lA9:local_tcp|H105D9A480 +105D9A480:lA9:local_udp|H105D9A470 +105D9A470:lA6:logger|H105D9A460 +105D9A460:lAE:logger_backend|H105D9A450 +105D9A450:lAD:logger_config|H105D9A440 +105D9A440:lA11:logger_disk_log_h|H105D9A430 +105D9A430:lAE:logger_filters|H105D9A420 +105D9A420:lA10:logger_formatter|H105D9A410 +105D9A410:lAF:logger_h_common|H105D9A400 +105D9A400:lA16:logger_handler_watcher|H105D9A3F0 +105D9A3F0:lAA:logger_olp|H105D9A3E0 +105D9A3E0:lAC:logger_proxy|H105D9A3D0 +105D9A3D0:lAD:logger_server|H105D9A3C0 +105D9A3C0:lAF:logger_simple_h|H105D9A3B0 +105D9A3B0:lAC:logger_std_h|H105D9A3A0 +105D9A3A0:lAA:logger_sup|H105D9A390 +105D9A390:lA3:net|H105D9A380 +105D9A380:lA7:net_adm|H105D9A370 +105D9A370:lAA:net_kernel|H105D9A360 +105D9A360:lA2:os|H105D9A350 +105D9A350:lA8:ram_file|H105D9A340 +105D9A340:lA3:rpc|H105D9A330 +105D9A330:lA8:user_drv|H105D9A320 +105D9A320:lA8:user_sup|H105D9A310 +105D9A310:lA8:prim_tty|H105D9A300 +105D9A300:lA8:disk_log|H105D9A2F0 +105D9A2F0:lAA:disk_log_1|H105D9A2E0 +105D9A2E0:lAF:disk_log_server|H105D9A2D0 +105D9A2D0:lAC:disk_log_sup|H105D9A2C0 +105D9A2C0:lA7:dist_ac|H105D9A2B0 +105D9A2B0:lA8:erl_ddll|H105D9A2A0 +105D9A2A0:lA8:erl_epmd|H105D9A290 +105D9A290:lAA:erts_debug|H105D9A280 +105D9A280:lA7:gen_tcp|H105D9A270 +105D9A270:lAE:gen_tcp_socket|H105D9A260 +105D9A260:lA7:gen_udp|H105D9A250 +105D9A250:lAE:gen_udp_socket|H105D9A240 +105D9A240:lA8:gen_sctp|H105D9A230 +105D9A230:lA4:inet|H105D9A220 +105D9A220:lA7:inet_db|H105D9A210 +105D9A210:lA8:inet_dns|H105D9A200 +105D9A200:lAA:inet_parse|H105D9A1F0 +105D9A1F0:lA8:inet_res|H105D9A1E0 +105D9A1E0:lA8:inet_tcp|H105D9A1D0 +105D9A1D0:lA8:inet_udp|H105D9A1C0 +105D9A1C0:lA9:inet_sctp|H105D9A1B0 +105D9A1B0:lA2:pg|H105D9A1A0 +105D9A1A0:lA3:pg2|H105D9A190 +105D9A190:lAB:raw_file_io|H105D9A180 +105D9A180:lA16:raw_file_io_compressed|H105D9A170 +105D9A170:lA13:raw_file_io_deflate|H105D9A160 +105D9A160:lA13:raw_file_io_delayed|H105D9A150 +105D9A150:lA13:raw_file_io_inflate|H105D9A140 +105D9A140:lA10:raw_file_io_list|H105D9A130 +105D9A130:lA9:seq_trace|H105D9A120 +105D9A120:lA6:socket|H105D9A110 +105D9A110:lAE:standard_error|H105D9A100 +105D9A100:lAF:wrap_log_reader|N +105D9A0E8:t2:A6:kernel,N +105D9A8F0:lA16:application_controller|H105D9A8E0 +105D9A8E0:lA9:erl_reply|H105D9A8D0 +105D9A8D0:lA4:auth|H105D9A8C0 +105D9A8C0:lAB:boot_server|H105D9A8B0 +105D9A8B0:lAB:code_server|H105D9A8A0 +105D9A8A0:lAF:disk_log_server|H105D9A890 +105D9A890:lAC:disk_log_sup|H105D9A880 +105D9A880:lAF:erl_prim_loader|H105D9A870 +105D9A870:lAC:error_logger|H105D9A860 +105D9A860:lAD:file_server_2|H105D9A850 +105D9A850:lAF:fixtable_server|H105D9A840 +105D9A840:lAC:global_group|H105D9A830 +105D9A830:lA12:global_name_server|H105D9A820 +105D9A820:lA5:heart|H105D9A810 +105D9A810:lA4:init|H105D9A800 +105D9A800:lAD:kernel_config|H105D9A7F0 +105D9A7F0:lAB:kernel_refc|H105D9A7E0 +105D9A7E0:lAA:kernel_sup|H105D9A7D0 +105D9A7D0:lA6:logger|H105D9A7C0 +105D9A7C0:lA16:logger_handler_watcher|H105D9A7B0 +105D9A7B0:lAA:logger_sup|H105D9A7A0 +105D9A7A0:lAA:net_kernel|H105D9A790 +105D9A790:lA7:net_sup|H105D9A780 +105D9A780:lA3:rex|H105D9A770 +105D9A770:lA4:user|H105D9A760 +105D9A760:lA9:os_server|H105D9A750 +105D9A750:lAB:ddll_server|H105D9A740 +105D9A740:lA8:erl_epmd|H105D9A730 +105D9A730:lA7:inet_db|H105D9A720 +105D9A720:lA2:pg|N +105D9A980:t2:AA:$ancestors,H105D9A970 +105D9A970:lP<0.45.0>|N +105D9A9B8:t2:AD:$initial_call,H105D9A998 +105D9A998:t3:A12:application_master,A4:init,I4 +=proc_stack:<0.47.0> +y0:N +y1:N +y2:A6:kernel +y3:P<0.49.0> +y4:P<0.46.0> +0x0000000105d8fb88:SReturn addr 0x3D82348 () +=proc_heap:<0.47.0> +=proc_dictionary:<0.49.0> +H105D922F0 +H105D92308 +=proc_stack:<0.49.0> +y0:N +y1:A8:infinity +y2:H105D9E530 +y3:H105D9E918 +y4:AA:kernel_sup +y5:P<0.47.0> +0x0000000105d9fcf0:SReturn addr 0x3E951BC (proc_lib:wake_up/3 + 220) +y0:N +y1:N +y2:SCatch 0x3E951E4 (proc_lib:wake_up/3 + 260) +0x0000000105d9fd10:SReturn addr 0x3D82348 () +=proc_heap:<0.49.0> +105D9E530:t5:AE:callback_cache,AA:supervisor,H105D9E4B8,H105D9E4E0,H105D9E508 +105D9E508:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105D9E4E0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105D9E4B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105D9E918:tC:A5:state,H280043650,AB:one_for_all,H105D9E900,A9:undefined,I0,I1,N,I0,A5:never,A6:kernel,N +105D9E900:t2:H105D9E310,H105D9E870 +105D9E870:MfF:H105D92320:H105D9B928,H105D9E820,H105D9C288,H105D9AD48,H105D929C8,H105D9DF28,H105D92918,H105D9B658,H105D9AD98,H105D9D5A8,H105D9CC18,H105D92A18,H105D926C0,H105D9ADE8,H105D9E218 +105D92320:tF:A11:erl_signal_server,A7:on_load,A4:user,A12:global_name_server,AE:standard_error,AB:kernel_refc,AB:code_server,AC:global_group,A7:inet_db,AD:kernel_config,AA:logger_sup,AD:file_server_2,A7:net_sup,A3:rex,AF:kernel_safe_sup +105D9E218:t9:A5:child,P<0.75.0>,AF:kernel_safe_sup,H280043BC8,A9:permanent,A5:false,A8:infinity,AA:supervisor,H280043BB8 +105D9ADE8:t9:A5:child,P<0.56.0>,A3:rex,H280044320,A9:permanent,A5:false,I2000,A6:worker,H280044310 +105D926C0:t9:A5:child,A9:undefined,A7:net_sup,H280044110,A9:permanent,A5:false,A8:infinity,AA:supervisor,H280044100 +105D92A18:t9:A5:child,P<0.53.0>,AD:file_server_2,H280043788,A9:permanent,A5:false,I2000,A6:worker,H280043748 +105D9CC18:t9:A5:child,P<0.70.0>,AA:logger_sup,H2800439B8,A9:permanent,A5:false,A8:infinity,AA:supervisor,H2800439A8 +105D9D5A8:t9:A5:child,P<0.73.0>,AD:kernel_config,H280043A68,A9:permanent,A5:false,I2000,A6:worker,H280043A58 +105D9AD98:t9:A5:child,P<0.55.0>,A7:inet_db,H280044040,A9:permanent,A5:false,I2000,A6:worker,H280044030 +105D9B658:t9:A5:child,P<0.61.0>,AC:global_group,H2800441C0,A9:permanent,A5:false,I2000,A6:worker,H2800441B0 +105D92918:t9:A5:child,P<0.50.0>,AB:code_server,H280043E60,A9:permanent,A5:false,I2000,A6:worker,H280043E50 +105D9DF28:t9:A5:child,P<0.74.0>,AB:kernel_refc,H280043B18,A9:permanent,A5:false,I2000,A6:worker,H280043B08 +105D929C8:t9:A5:child,P<0.51.0>,AE:standard_error,H280043DB0,A9:temporary,A5:false,I2000,AA:supervisor,H280043DA0 +105D9AD48:t9:A5:child,P<0.58.0>,A12:global_name_server,H280044270,A9:permanent,A5:false,I2000,A6:worker,H280044260 +105D9C288:t9:A5:child,P<0.64.0>,A4:user,H280043908,A9:temporary,A5:false,I2000,AA:supervisor,H2800438F8 +105D9E820:t9:A5:child,A9:undefined,A7:on_load,H280043CC0,A9:transient,A5:false,I2000,A6:worker,H280043CB0 +105D9B928:t9:A5:child,P<0.63.0>,A11:erl_signal_server,H280043F68,A9:permanent,A5:false,I2000,A6:worker,A7:dynamic +105D9E310:lAF:kernel_safe_sup|H105D9E020 +105D9E020:lAB:kernel_refc|H105D9D6A0 +105D9D6A0:lAD:kernel_config|H105D9CD10 +105D9CD10:lAA:logger_sup|H105D9C380 +105D9C380:lA4:user|H105D9BA20 +105D9BA20:lA11:erl_signal_server|H105D9B750 +105D9B750:lAC:global_group|H105D9AC78 +105D9AC78:lA7:net_sup|H105D9AD38 +105D9AD38:lA12:global_name_server|H105D9AE78 +105D9AE78:lA3:rex|H105D9AE98 +105D9AE98:lA7:inet_db|H105D92A68 +105D92A68:lA7:on_load|H105D92A78 +105D92A78:lAD:file_server_2|H105D92A88 +105D92A88:lAE:standard_error|H105D92968 +105D92968:lAB:code_server|N +105D922F0:t2:AA:$ancestors,H105D92838 +105D92838:lP<0.47.0>|N +105D92308:t2:AD:$initial_call,H105D92848 +105D92848:t3:AA:supervisor,A6:kernel,I1 +=proc_stack:<0.50.0> +y0:N +y1:P<0.49.0> +y2:H106607FF8 +0x0000000106638248:SReturn addr 0x3D82348 () +=proc_heap:<0.50.0> +106607FF8:t8:A5:state,P<0.49.0>,H1071F0038,H106607FC8,AB:code_server,AA:code_names,AB:interactive,N +106607FC8:lH106604450|H106607FB8 +106604450:t2:H1071F0078,A7:nocache +1071F0078:lI47|H1071F0638 +1071F0638:lI85|H1071F18C0 +1071F18C0:lI115|H1071F3B38 +1071F3B38:lI101|H1071F6350 +1071F6350:lI114|H1071F8FA0 +1071F8FA0:lI115|H1071FBEE0 +1071FBEE0:lI47|H1071FEF98 +1071FEF98:lI110|H107202140 +107202140:lI105|H107205380 +107205380:lI99|H107208678 +107208678:lI104|H10720B948 +10720B948:lI111|H10720EC08 +10720EC08:lI108|H107211F68 +107211F68:lI97|H107215440 +107215440:lI115|H107218AD0 +107218AD0:lI99|H10721C300 +10721C300:lI97|H10721FA00 +10721FA00:lI114|H107222EF8 +107222EF8:lI108|H107226060 +107226060:lI115|H107228E48 +107228E48:lI111|H10722B880 +10722B880:lI110|H10722DF58 +10722DF58:lI47|H107230380 +107230380:lI86|H1072324F8 +1072324F8:lI83|H107234360 +107234360:lI32|H107235EC8 +107235EC8:lI67|H1072377C0 +1072377C0:lI111|H107238E48 +107238E48:lI100|H10723A320 +10723A320:lI101|H10723B680 +10723B680:lI47|H10723C760 +10723C760:lI65|H10723D620 +10723D620:lI100|H10723E3A0 +10723E3A0:lI118|H10723EFB0 +10723EFB0:lI101|H10723FA80 +10723FA80:lI110|H1072403D0 +1072403D0:lI116|H107240C50 +107240C50:lI79|H1072413E0 +1072413E0:lI102|H107241B10 +107241B10:lI67|H1072421E0 +1072421E0:lI111|H107242850 +107242850:lI100|H107242E50 +107242E50:lI101|H1072433C0 +1072433C0:lI47|H107243900 +107243900:lI97|H107243DF0 +107243DF0:lI111|H1072442E0 +1072442E0:lI99|H107244790 +107244790:lI50|H107244C00 +107244C00:lI48|H107245060 +107245060:lI50|H1072454B0 +1072454B0:lI51|H1072458B0 +1072458B0:lI47|H107245C70 +107245C70:lI98|H107246000 +107246000:lI117|H107246390 +107246390:lI105|H107246720 +107246720:lI108|H107246AB0 +107246AB0:lI100|H107246DF0 +107246DF0:lI47|H107247110 +107247110:lI100|H107247430 +107247430:lI101|H107247740 +107247740:lI118|H107247A40 +107247A40:lI47|H107247D30 +107247D30:lI101|H107248010 +107248010:lI114|H1072482D0 +1072482D0:lI108|H107248590 +107248590:lI97|H107248840 +107248840:lI110|H107248AF0 +107248AF0:lI103|H107248D70 +107248D70:lI47|H107248FE0 +107248FE0:lI103|H107249250 +107249250:lI108|H1072494B0 +1072494B0:lI101|H107249710 +107249710:lI97|H107249960 +107249960:lI109|H107249B70 +107249B70:lI95|H107249D60 +107249D60:lI99|H107249F40 +107249F40:lI111|H10724A0F0 +10724A0F0:lI109|H10724A280 +10724A280:lI109|H10724A400 +10724A400:lI117|H10724A570 +10724A570:lI110|H10724A6C0 +10724A6C0:lI105|H10724A7F0 +10724A7F0:lI116|H10724A910 +10724A910:lI121|H10724AA10 +10724AA10:lI95|H10724AAF0 +10724AAF0:lI97|H10724ABB0 +10724ABB0:lI110|H10724AC40 +10724AC40:lI115|H10724ACA0 +10724ACA0:lI105|H10724ACF0 +10724ACF0:lI47|H10724AD40 +10724AD40:lI101|H10724AD80 +10724AD80:lI98|H10724ADC0 +10724ADC0:lI105|H10724ADF0 +10724ADF0:lI110|N +106607FB8:lH1066049F8|H106607FA8 +1066049F8:t2:H1071F0130,A7:nocache +1071F0130:lI47|H1071F0988 +1071F0988:lI85|H1071F1EB0 +1071F1EB0:lI115|H1071F4198 +1071F4198:lI101|H1071F69B8 +1071F69B8:lI114|H1071F9610 +1071F9610:lI115|H1071FC550 +1071FC550:lI47|H1071FF608 +1071FF608:lI110|H1072027B0 +1072027B0:lI105|H1072059F0 +1072059F0:lI99|H107208CC8 +107208CC8:lI104|H10720BF78 +10720BF78:lI111|H10720F1F8 +10720F1F8:lI108|H107212518 +107212518:lI97|H1072159A0 +1072159A0:lI115|H107219010 +107219010:lI99|H10721C770 +10721C770:lI97|H10721FDF0 +10721FDF0:lI114|H107223278 +107223278:lI108|H107226360 +107226360:lI115|H1072290F8 +1072290F8:lI111|H10722BAC0 +10722BAC0:lI110|H10722E128 +10722E128:lI47|H1072304E0 +1072304E0:lI86|H107232608 +107232608:lI83|H107234440 +107234440:lI32|H107235F88 +107235F88:lI67|H107237820 +107237820:lI111|H107238EA8 +107238EA8:lI100|H10723A380 +10723A380:lI101|H10723B6C0 +10723B6C0:lI47|H10723C790 +10723C790:lI65|H10723D650 +10723D650:lI100|H10723E3D0 +10723E3D0:lI118|H10723EFE0 +10723EFE0:lI101|H10723FAB0 +10723FAB0:lI110|H107240400 +107240400:lI116|H107240C80 +107240C80:lI79|H107241410 +107241410:lI102|H107241B40 +107241B40:lI67|H107242210 +107242210:lI111|H107242880 +107242880:lI100|H107242E80 +107242E80:lI101|H1072433F0 +1072433F0:lI47|H107243930 +107243930:lI97|H107243E20 +107243E20:lI111|H107244310 +107244310:lI99|H1072447C0 +1072447C0:lI50|H107244C30 +107244C30:lI48|H107245090 +107245090:lI50|H1072454E0 +1072454E0:lI51|H1072458E0 +1072458E0:lI47|H107245CA0 +107245CA0:lI98|H107246030 +107246030:lI117|H1072463C0 +1072463C0:lI105|H107246750 +107246750:lI108|H107246AE0 +107246AE0:lI100|H107246E20 +107246E20:lI47|H107247140 +107247140:lI100|H107247460 +107247460:lI101|H107247770 +107247770:lI118|H107247A70 +107247A70:lI47|H107247D60 +107247D60:lI101|H107248040 +107248040:lI114|H107248300 +107248300:lI108|H1072485C0 +1072485C0:lI97|H107248870 +107248870:lI110|H107248B10 +107248B10:lI103|H107248D90 +107248D90:lI47|H107249000 +107249000:lI97|H107249270 +107249270:lI100|H1072494D0 +1072494D0:lI103|H107249730 +107249730:lI108|H107249980 +107249980:lI101|H107249B90 +107249B90:lI110|H107249D80 +107249D80:lI116|H107249F60 +107249F60:lI47|H10724A110 +10724A110:lI101|H10724A2A0 +10724A2A0:lI98|H10724A420 +10724A420:lI105|H10724A590 +10724A590:lI110|N +106607FA8:lH106604FF0|H106607F98 +106604FF0:t2:H1071F01F0,A7:nocache +1071F01F0:lI47|H1071F0CB8 +1071F0CB8:lI85|H1071F2438 +1071F2438:lI115|H1071F4780 +1071F4780:lI101|H1071F6FA8 +1071F6FA8:lI114|H1071F9C00 +1071F9C00:lI115|H1071FCB40 +1071FCB40:lI47|H1071FFBF8 +1071FFBF8:lI110|H107202DA0 +107202DA0:lI105|H107205FD0 +107205FD0:lI99|H107209288 +107209288:lI104|H10720C4E8 +10720C4E8:lI111|H10720F708 +10720F708:lI108|H1072129B8 +1072129B8:lI97|H107215D80 +107215D80:lI115|H107219360 +107219360:lI99|H10721C9F0 +10721C9F0:lI97|H107220030 +107220030:lI114|H107223428 +107223428:lI108|H1072264E0 +1072264E0:lI115|H107229208 +107229208:lI111|H10722BB70 +10722BB70:lI110|H10722E1C8 +10722E1C8:lI47|H107230580 +107230580:lI86|H1072326A8 +1072326A8:lI83|H1072344C0 +1072344C0:lI32|H107235FE8 +107235FE8:lI67|H107237860 +107237860:lI111|H107238EE8 +107238EE8:lI100|H10723A3B0 +10723A3B0:lI101|H10723B6F0 +10723B6F0:lI47|H10723C7C0 +10723C7C0:lI65|H10723D680 +10723D680:lI100|H10723E400 +10723E400:lI118|H10723F010 +10723F010:lI101|H10723FAE0 +10723FAE0:lI110|H107240430 +107240430:lI116|H107240CB0 +107240CB0:lI79|H107241440 +107241440:lI102|H107241B70 +107241B70:lI67|H107242240 +107242240:lI111|H1072428B0 +1072428B0:lI100|H107242EB0 +107242EB0:lI101|H107243420 +107243420:lI47|H107243960 +107243960:lI97|H107243E50 +107243E50:lI111|H107244340 +107244340:lI99|H1072447F0 +1072447F0:lI50|H107244C60 +107244C60:lI48|H1072450C0 +1072450C0:lI50|H107245510 +107245510:lI51|H107245910 +107245910:lI47|H107245CD0 +107245CD0:lI98|H107246060 +107246060:lI117|H1072463F0 +1072463F0:lI105|H107246780 +107246780:lI108|H107246B10 +107246B10:lI100|H107246E50 +107246E50:lI47|H107247170 +107247170:lI100|H107247490 +107247490:lI101|H1072477A0 +1072477A0:lI118|H107247AA0 +107247AA0:lI47|H107247D90 +107247D90:lI101|H107248070 +107248070:lI114|H107248330 +107248330:lI108|H1072485F0 +1072485F0:lI97|H1072488A0 +1072488A0:lI110|H107248B30 +107248B30:lI103|H107248DB0 +107248DB0:lI47|H107249020 +107249020:lI103|H107249290 +107249290:lI108|H1072494F0 +1072494F0:lI101|H107249750 +107249750:lI97|H1072499A0 +1072499A0:lI109|H107249BB0 +107249BB0:lI95|H107249DA0 +107249DA0:lI101|H107249F80 +107249F80:lI114|H10724A130 +10724A130:lI108|H10724A2C0 +10724A2C0:lI97|H10724A440 +10724A440:lI110|H10724A5B0 +10724A5B0:lI103|H10724A6F0 +10724A6F0:lI47|H10724A810 +10724A810:lI101|H10724A930 +10724A930:lI98|H10724AA30 +10724AA30:lI105|H10724AB10 +10724AB10:lI110|N +106607F98:lH106605578|H106607F88 +106605578:t2:H1071F02A8,A7:nocache +1071F02A8:lI47|H1071F0E68 +1071F0E68:lI85|H1071F2688 +1071F2688:lI115|H1071F49E0 +1071F49E0:lI101|H1071F7208 +1071F7208:lI114|H1071F9E60 +1071F9E60:lI115|H1071FCDA0 +1071FCDA0:lI47|H1071FFE58 +1071FFE58:lI110|H107203000 +107203000:lI105|H107206230 +107206230:lI99|H1072094E8 +1072094E8:lI104|H10720C748 +10720C748:lI111|H10720F958 +10720F958:lI108|H107212BE8 +107212BE8:lI97|H107215FB0 +107215FB0:lI115|H107219590 +107219590:lI99|H10721CC00 +10721CC00:lI97|H107220210 +107220210:lI114|H1072235B8 +1072235B8:lI108|H107226650 +107226650:lI115|H107229348 +107229348:lI111|H10722BC90 +10722BC90:lI110|H10722E2D8 +10722E2D8:lI47|H107230660 +107230660:lI86|H107232758 +107232758:lI83|H107234550 +107234550:lI32|H107236078 +107236078:lI67|H1072378F0 +1072378F0:lI111|H107238F68 +107238F68:lI100|H10723A420 +10723A420:lI101|H10723B750 +10723B750:lI47|H10723C810 +10723C810:lI65|H10723D6B0 +10723D6B0:lI100|H10723E430 +10723E430:lI118|H10723F040 +10723F040:lI101|H10723FB10 +10723FB10:lI110|H107240460 +107240460:lI116|H107240CE0 +107240CE0:lI79|H107241470 +107241470:lI102|H107241BA0 +107241BA0:lI67|H107242270 +107242270:lI111|H1072428E0 +1072428E0:lI100|H107242EE0 +107242EE0:lI101|H107243450 +107243450:lI47|H107243990 +107243990:lI97|H107243E80 +107243E80:lI111|H107244370 +107244370:lI99|H107244820 +107244820:lI50|H107244C90 +107244C90:lI48|H1072450F0 +1072450F0:lI50|H107245540 +107245540:lI51|H107245940 +107245940:lI47|H107245D00 +107245D00:lI98|H107246090 +107246090:lI117|H107246420 +107246420:lI105|H1072467B0 +1072467B0:lI108|H107246B40 +107246B40:lI100|H107246E80 +107246E80:lI47|H1072471A0 +1072471A0:lI100|H1072474C0 +1072474C0:lI101|H1072477D0 +1072477D0:lI118|H107247AD0 +107247AD0:lI47|H107247DC0 +107247DC0:lI101|H107248090 +107248090:lI114|H107248350 +107248350:lI108|H107248610 +107248610:lI97|H1072488C0 +1072488C0:lI110|H107248B50 +107248B50:lI103|H107248DD0 +107248DD0:lI47|H107249040 +107249040:lI103|H1072492B0 +1072492B0:lI108|H107249510 +107249510:lI105|H107249770 +107249770:lI110|H1072499C0 +1072499C0:lI116|H107249BD0 +107249BD0:lI47|H107249DC0 +107249DC0:lI101|H107249FA0 +107249FA0:lI98|H10724A150 +10724A150:lI105|H10724A2E0 +10724A2E0:lI110|N +106607F88:lH106605B50|H106607F78 +106605B50:t2:H1071F0368,A7:nocache +1071F0368:lI47|H1071F1420 +1071F1420:lI85|H1071F3318 +1071F3318:lI115|H1071F5900 +1071F5900:lI101|H1071F8168 +1071F8168:lI114|H1071FADC0 +1071FADC0:lI115|H1071FDD00 +1071FDD00:lI47|H107200DB8 +107200DB8:lI110|H107203F60 +107203F60:lI105|H107207190 +107207190:lI99|H10720A418 +10720A418:lI104|H10720D678 +10720D678:lI111|H107210868 +107210868:lI108|H107213AD8 +107213AD8:lI97|H107216E90 +107216E90:lI115|H10721A400 +10721A400:lI99|H10721D9C0 +10721D9C0:lI97|H107220F10 +107220F10:lI114|H107224178 +107224178:lI108|H1072270C0 +1072270C0:lI115|H107229C28 +107229C28:lI111|H10722C450 +10722C450:lI110|H10722E998 +10722E998:lI47|H107230C10 +107230C10:lI86|H107232C08 +107232C08:lI83|H1072348E0 +1072348E0:lI32|H107236318 +107236318:lI67|H107237AE0 +107237AE0:lI111|H1072390F8 +1072390F8:lI100|H10723A590 +10723A590:lI101|H10723B850 +10723B850:lI47|H10723C8A0 +10723C8A0:lI65|H10723D710 +10723D710:lI100|H10723E470 +10723E470:lI118|H10723F080 +10723F080:lI101|H10723FB40 +10723FB40:lI110|H107240490 +107240490:lI116|H107240D10 +107240D10:lI79|H1072414A0 +1072414A0:lI102|H107241BD0 +107241BD0:lI67|H1072422A0 +1072422A0:lI111|H107242910 +107242910:lI100|H107242F10 +107242F10:lI101|H107243480 +107243480:lI47|H1072439C0 +1072439C0:lI97|H107243EB0 +107243EB0:lI111|H1072443A0 +1072443A0:lI99|H107244850 +107244850:lI50|H107244CC0 +107244CC0:lI48|H107245120 +107245120:lI50|H107245570 +107245570:lI51|H107245970 +107245970:lI47|H107245D30 +107245D30:lI98|H1072460C0 +1072460C0:lI117|H107246450 +107246450:lI105|H1072467E0 +1072467E0:lI108|H107246B70 +107246B70:lI100|H107246EA0 +107246EA0:lI47|H1072471C0 +1072471C0:lI100|H1072474E0 +1072474E0:lI101|H1072477F0 +1072477F0:lI118|H107247AF0 +107247AF0:lI47|H107247DE0 +107247DE0:lI101|H1072480B0 +1072480B0:lI114|H107248370 +107248370:lI108|H107248630 +107248630:lI97|H1072488E0 +1072488E0:lI110|H107248B70 +107248B70:lI103|H107248DF0 +107248DF0:lI47|H107249060 +107249060:lI103|H1072492D0 +1072492D0:lI108|H107249530 +107249530:lI101|H107249790 +107249790:lI97|H1072499E0 +1072499E0:lI109|H107249BF0 +107249BF0:lI95|H107249DE0 +107249DE0:lI104|H107249FC0 +107249FC0:lI116|H10724A170 +10724A170:lI116|H10724A300 +10724A300:lI112|H10724A470 +10724A470:lI47|H10724A5E0 +10724A5E0:lI101|H10724A720 +10724A720:lI98|H10724A840 +10724A840:lI105|H10724A960 +10724A960:lI110|N +106607F78:lH1066060B8|H106607F68 +1066060B8:t2:H1071F0430,A7:nocache +1071F0430:lI47|H1071F14D8 +1071F14D8:lI85|H1071F3448 +1071F3448:lI115|H1071F5A30 +1071F5A30:lI101|H1071F8298 +1071F8298:lI114|H1071FAEF0 +1071FAEF0:lI115|H1071FDE30 +1071FDE30:lI47|H107200EE8 +107200EE8:lI110|H107204090 +107204090:lI105|H1072072C0 +1072072C0:lI99|H10720A548 +10720A548:lI104|H10720D758 +10720D758:lI111|H107210908 +107210908:lI108|H107213B68 +107213B68:lI97|H107216F20 +107216F20:lI115|H10721A490 +10721A490:lI99|H10721DA40 +10721DA40:lI97|H107220F80 +107220F80:lI114|H1072241C8 +1072241C8:lI108|H107227100 +107227100:lI115|H107229C58 +107229C58:lI111|H10722C480 +10722C480:lI110|H10722E9C8 +10722E9C8:lI47|H107230C40 +107230C40:lI86|H107232C38 +107232C38:lI83|H107234910 +107234910:lI32|H107236348 +107236348:lI67|H107237B10 +107237B10:lI111|H107239128 +107239128:lI100|H10723A5C0 +10723A5C0:lI101|H10723B880 +10723B880:lI47|H10723C8D0 +10723C8D0:lI65|H10723D740 +10723D740:lI100|H10723E4A0 +10723E4A0:lI118|H10723F0B0 +10723F0B0:lI101|H10723FB70 +10723FB70:lI110|H1072404C0 +1072404C0:lI116|H107240D40 +107240D40:lI79|H1072414D0 +1072414D0:lI102|H107241C00 +107241C00:lI67|H1072422D0 +1072422D0:lI111|H107242940 +107242940:lI100|H107242F40 +107242F40:lI101|H1072434B0 +1072434B0:lI47|H1072439F0 +1072439F0:lI97|H107243EE0 +107243EE0:lI111|H1072443D0 +1072443D0:lI99|H107244880 +107244880:lI50|H107244CF0 +107244CF0:lI48|H107245150 +107245150:lI50|H1072455A0 +1072455A0:lI51|H1072459A0 +1072459A0:lI47|H107245D60 +107245D60:lI98|H1072460F0 +1072460F0:lI117|H107246480 +107246480:lI105|H107246810 +107246810:lI108|H107246BA0 +107246BA0:lI100|H107246ED0 +107246ED0:lI47|H1072471F0 +1072471F0:lI100|H107247510 +107247510:lI101|H107247810 +107247810:lI118|H107247B10 +107247B10:lI47|H107247E00 +107247E00:lI101|H1072480D0 +1072480D0:lI114|H107248390 +107248390:lI108|H107248650 +107248650:lI97|H107248900 +107248900:lI110|H107248B90 +107248B90:lI103|H107248E10 +107248E10:lI47|H107249080 +107249080:lI103|H1072492F0 +1072492F0:lI97|H107249550 +107249550:lI112|H1072497B0 +1072497B0:lI47|H107249A00 +107249A00:lI101|H107249C10 +107249C10:lI98|H107249E00 +107249E00:lI105|H107249FE0 +107249FE0:lI110|N +106607F68:lH106606680|H106607F58 +106606680:t2:H1071F0420,A7:nocache +1071F0420:lI47|H1071F14C8 +1071F14C8:lI85|H1071F3438 +1071F3438:lI115|H1071F5A20 +1071F5A20:lI101|H1071F8288 +1071F8288:lI114|H1071FAEE0 +1071FAEE0:lI115|H1071FDE20 +1071FDE20:lI47|H107200ED8 +107200ED8:lI110|H107204080 +107204080:lI105|H1072072B0 +1072072B0:lI99|H10720A538 +10720A538:lI104|H10720D748 +10720D748:lI111|H1072108F8 +1072108F8:lI108|H107213B58 +107213B58:lI97|H107216F10 +107216F10:lI115|H10721A480 +10721A480:lI99|H10721DA30 +10721DA30:lI97|H107220F70 +107220F70:lI114|H1072241B8 +1072241B8:lI108|H1072270F0 +1072270F0:lI115|H107229C48 +107229C48:lI111|H10722C470 +10722C470:lI110|H10722E9B8 +10722E9B8:lI47|H107230C30 +107230C30:lI86|H107232C28 +107232C28:lI83|H107234900 +107234900:lI32|H107236338 +107236338:lI67|H107237B00 +107237B00:lI111|H107239118 +107239118:lI100|H10723A5B0 +10723A5B0:lI101|H10723B870 +10723B870:lI47|H10723C8C0 +10723C8C0:lI65|H10723D730 +10723D730:lI100|H10723E490 +10723E490:lI118|H10723F0A0 +10723F0A0:lI101|H10723FB60 +10723FB60:lI110|H1072404B0 +1072404B0:lI116|H107240D30 +107240D30:lI79|H1072414C0 +1072414C0:lI102|H107241BF0 +107241BF0:lI67|H1072422C0 +1072422C0:lI111|H107242930 +107242930:lI100|H107242F30 +107242F30:lI101|H1072434A0 +1072434A0:lI47|H1072439E0 +1072439E0:lI97|H107243ED0 +107243ED0:lI111|H1072443C0 +1072443C0:lI99|H107244870 +107244870:lI50|H107244CE0 +107244CE0:lI48|H107245140 +107245140:lI50|H107245590 +107245590:lI51|H107245990 +107245990:lI47|H107245D50 +107245D50:lI98|H1072460E0 +1072460E0:lI117|H107246470 +107246470:lI105|H107246800 +107246800:lI108|H107246B90 +107246B90:lI100|H107246EC0 +107246EC0:lI47|H1072471E0 +1072471E0:lI100|H107247500 +107247500:lI101|H107247800 +107247800:lI118|H107247B00 +107247B00:lI47|H107247DF0 +107247DF0:lI101|H1072480C0 +1072480C0:lI114|H107248380 +107248380:lI108|H107248640 +107248640:lI97|H1072488F0 +1072488F0:lI110|H107248B80 +107248B80:lI103|H107248E00 +107248E00:lI47|H107249070 +107249070:lI103|H1072492E0 +1072492E0:lI108|H107249540 +107249540:lI101|H1072497A0 +1072497A0:lI97|H1072499F0 +1072499F0:lI109|H107249C00 +107249C00:lI95|H107249DF0 +107249DF0:lI111|H107249FD0 +107249FD0:lI116|H10724A180 +10724A180:lI112|H10724A310 +10724A310:lI47|H10724A480 +10724A480:lI101|H10724A5F0 +10724A5F0:lI98|H10724A730 +10724A730:lI105|H10724A850 +10724A850:lI110|N +106607F58:lH106606D18|H106607F48 +106606D18:t2:H1071F0358,A7:nocache +1071F0358:lI47|H1071F1410 +1071F1410:lI85|H1071F3308 +1071F3308:lI115|H1071F58F0 +1071F58F0:lI101|H1071F8158 +1071F8158:lI114|H1071FADB0 +1071FADB0:lI115|H1071FDCF0 +1071FDCF0:lI47|H107200DA8 +107200DA8:lI110|H107203F50 +107203F50:lI105|H107207180 +107207180:lI99|H10720A408 +10720A408:lI104|H10720D668 +10720D668:lI111|H107210858 +107210858:lI108|H107213AC8 +107213AC8:lI97|H107216E80 +107216E80:lI115|H10721A3F0 +10721A3F0:lI99|H10721D9B0 +10721D9B0:lI97|H107220F00 +107220F00:lI114|H107224168 +107224168:lI108|H1072270B0 +1072270B0:lI115|H107229C18 +107229C18:lI111|H10722C440 +10722C440:lI110|H10722E988 +10722E988:lI47|H107230C00 +107230C00:lI86|H107232BF8 +107232BF8:lI83|H1072348D0 +1072348D0:lI32|H107236308 +107236308:lI67|H107237AD0 +107237AD0:lI111|H1072390E8 +1072390E8:lI100|H10723A580 +10723A580:lI101|H10723B840 +10723B840:lI47|H10723C890 +10723C890:lI65|H10723D700 +10723D700:lI100|H10723E460 +10723E460:lI118|H10723F070 +10723F070:lI101|H10723FB30 +10723FB30:lI110|H107240480 +107240480:lI116|H107240D00 +107240D00:lI79|H107241490 +107241490:lI102|H107241BC0 +107241BC0:lI67|H107242290 +107242290:lI111|H107242900 +107242900:lI100|H107242F00 +107242F00:lI101|H107243470 +107243470:lI47|H1072439B0 +1072439B0:lI97|H107243EA0 +107243EA0:lI111|H107244390 +107244390:lI99|H107244840 +107244840:lI50|H107244CB0 +107244CB0:lI48|H107245110 +107245110:lI50|H107245560 +107245560:lI51|H107245960 +107245960:lI47|H107245D20 +107245D20:lI98|H1072460B0 +1072460B0:lI117|H107246440 +107246440:lI105|H1072467D0 +1072467D0:lI108|H107246B60 +107246B60:lI100|H107246E90 +107246E90:lI47|H1072471B0 +1072471B0:lI100|H1072474D0 +1072474D0:lI101|H1072477E0 +1072477E0:lI118|H107247AE0 +107247AE0:lI47|H107247DD0 +107247DD0:lI101|H1072480A0 +1072480A0:lI114|H107248360 +107248360:lI108|H107248620 +107248620:lI97|H1072488D0 +1072488D0:lI110|H107248B60 +107248B60:lI103|H107248DE0 +107248DE0:lI47|H107249050 +107249050:lI103|H1072492C0 +1072492C0:lI108|H107249520 +107249520:lI101|H107249780 +107249780:lI97|H1072499D0 +1072499D0:lI109|H107249BE0 +107249BE0:lI95|H107249DD0 +107249DD0:lI99|H107249FB0 +107249FB0:lI111|H10724A160 +10724A160:lI109|H10724A2F0 +10724A2F0:lI109|H10724A460 +10724A460:lI117|H10724A5D0 +10724A5D0:lI110|H10724A710 +10724A710:lI105|H10724A830 +10724A830:lI116|H10724A950 +10724A950:lI121|H10724AA50 +10724AA50:lI95|H10724AB20 +10724AB20:lI99|H10724ABC0 +10724ABC0:lI111|H10724AC50 +10724AC50:lI108|H10724ACB0 +10724ACB0:lI111|H10724AD00 +10724AD00:lI117|H10724AD50 +10724AD50:lI114|H10724AD90 +10724AD90:lI47|H10724ADD0 +10724ADD0:lI101|H10724AE00 +10724AE00:lI98|H10724AE20 +10724AE20:lI105|H10724AE40 +10724AE40:lI110|N +106607F48:lH106607300|H106607F38 +106607300:t2:H1071F0298,A7:nocache +1071F0298:lI47|H1071F0E58 +1071F0E58:lI85|H1071F2678 +1071F2678:lI115|H1071F49D0 +1071F49D0:lI101|H1071F71F8 +1071F71F8:lI114|H1071F9E50 +1071F9E50:lI115|H1071FCD90 +1071FCD90:lI47|H1071FFE48 +1071FFE48:lI110|H107202FF0 +107202FF0:lI105|H107206220 +107206220:lI99|H1072094D8 +1072094D8:lI104|H10720C738 +10720C738:lI111|H10720F948 +10720F948:lI108|H107212BD8 +107212BD8:lI97|H107215FA0 +107215FA0:lI115|H107219580 +107219580:lI99|H10721CBF0 +10721CBF0:lI97|H107220200 +107220200:lI114|H1072235A8 +1072235A8:lI108|H107226640 +107226640:lI115|H107229338 +107229338:lI111|H10722BC80 +10722BC80:lI110|H10722E2C8 +10722E2C8:lI47|H107230650 +107230650:lI86|H107232748 +107232748:lI83|H107234540 +107234540:lI32|H107236068 +107236068:lI67|H1072378E0 +1072378E0:lI111|H107238F58 +107238F58:lI100|H10723A410 +10723A410:lI101|H10723B740 +10723B740:lI47|H10723C800 +10723C800:lI65|H10723D6A0 +10723D6A0:lI100|H10723E420 +10723E420:lI118|H10723F030 +10723F030:lI101|H10723FB00 +10723FB00:lI110|H107240450 +107240450:lI116|H107240CD0 +107240CD0:lI79|H107241460 +107241460:lI102|H107241B90 +107241B90:lI67|H107242260 +107242260:lI111|H1072428D0 +1072428D0:lI100|H107242ED0 +107242ED0:lI101|H107243440 +107243440:lI47|H107243980 +107243980:lI97|H107243E70 +107243E70:lI111|H107244360 +107244360:lI99|H107244810 +107244810:lI50|H107244C80 +107244C80:lI48|H1072450E0 +1072450E0:lI50|H107245530 +107245530:lI51|H107245930 +107245930:lI47|H107245CF0 +107245CF0:lI98|H107246080 +107246080:lI117|H107246410 +107246410:lI105|H1072467A0 +1072467A0:lI108|H107246B30 +107246B30:lI100|H107246E70 +107246E70:lI47|H107247190 +107247190:lI100|H1072474B0 +1072474B0:lI101|H1072477C0 +1072477C0:lI118|H107247AC0 +107247AC0:lI47|H107247DB0 +107247DB0:lI101|H107248080 +107248080:lI114|H107248340 +107248340:lI108|H107248600 +107248600:lI97|H1072488B0 +1072488B0:lI110|H107248B40 +107248B40:lI103|H107248DC0 +107248DC0:lI47|H107249030 +107249030:lI103|H1072492A0 +1072492A0:lI108|H107249500 +107249500:lI101|H107249760 +107249760:lI97|H1072499B0 +1072499B0:lI109|H107249BC0 +107249BC0:lI95|H107249DB0 +107249DB0:lI104|H107249F90 +107249F90:lI116|H10724A140 +10724A140:lI116|H10724A2D0 +10724A2D0:lI112|H10724A450 +10724A450:lI99|H10724A5C0 +10724A5C0:lI47|H10724A700 +10724A700:lI101|H10724A820 +10724A820:lI98|H10724A940 +10724A940:lI105|H10724AA40 +10724AA40:lI110|N +106607F38:lH106607F20|H1066006B0 +106607F20:t2:H1071F01E0,A7:nocache +1071F01E0:lI47|H1071F0CA8 +1071F0CA8:lI85|H1071F2428 +1071F2428:lI115|H1071F4770 +1071F4770:lI101|H1071F6F98 +1071F6F98:lI114|H1071F9BF0 +1071F9BF0:lI115|H1071FCB30 +1071FCB30:lI47|H1071FFBE8 +1071FFBE8:lI110|H107202D90 +107202D90:lI105|H107205FC0 +107205FC0:lI99|H107209278 +107209278:lI104|H10720C4D8 +10720C4D8:lI111|H10720F6F8 +10720F6F8:lI108|H1072129A8 +1072129A8:lI97|H107215D70 +107215D70:lI115|H107219350 +107219350:lI99|H10721C9E0 +10721C9E0:lI97|H107220020 +107220020:lI114|H107223418 +107223418:lI108|H1072264D0 +1072264D0:lI115|H1072291F8 +1072291F8:lI111|H10722BB60 +10722BB60:lI110|H10722E1B8 +10722E1B8:lI47|H107230570 +107230570:lI86|H107232698 +107232698:lI83|H1072344B0 +1072344B0:lI32|H107235FD8 +107235FD8:lI67|H107237850 +107237850:lI111|H107238ED8 +107238ED8:lI100|H10723A3A0 +10723A3A0:lI101|H10723B6E0 +10723B6E0:lI47|H10723C7B0 +10723C7B0:lI65|H10723D670 +10723D670:lI100|H10723E3F0 +10723E3F0:lI118|H10723F000 +10723F000:lI101|H10723FAD0 +10723FAD0:lI110|H107240420 +107240420:lI116|H107240CA0 +107240CA0:lI79|H107241430 +107241430:lI102|H107241B60 +107241B60:lI67|H107242230 +107242230:lI111|H1072428A0 +1072428A0:lI100|H107242EA0 +107242EA0:lI101|H107243410 +107243410:lI47|H107243950 +107243950:lI97|H107243E40 +107243E40:lI111|H107244330 +107244330:lI99|H1072447E0 +1072447E0:lI50|H107244C50 +107244C50:lI48|H1072450B0 +1072450B0:lI50|H107245500 +107245500:lI51|H107245900 +107245900:lI47|H107245CC0 +107245CC0:lI98|H107246050 +107246050:lI117|H1072463E0 +1072463E0:lI105|H107246770 +107246770:lI108|H107246B00 +107246B00:lI100|H107246E40 +107246E40:lI47|H107247160 +107247160:lI100|H107247480 +107247480:lI101|H107247790 +107247790:lI118|H107247A90 +107247A90:lI47|H107247D80 +107247D80:lI101|H107248060 +107248060:lI114|H107248320 +107248320:lI108|H1072485E0 +1072485E0:lI97|H107248890 +107248890:lI110|H107248B20 +107248B20:lI103|H107248DA0 +107248DA0:lI47|H107249010 +107249010:lI103|H107249280 +107249280:lI108|H1072494E0 +1072494E0:lI101|H107249740 +107249740:lI97|H107249990 +107249990:lI109|H107249BA0 +107249BA0:lI95|H107249D90 +107249D90:lI115|H107249F70 +107249F70:lI116|H10724A120 +10724A120:lI100|H10724A2B0 +10724A2B0:lI108|H10724A430 +10724A430:lI105|H10724A5A0 +10724A5A0:lI98|H10724A6E0 +10724A6E0:lI47|H10724A800 +10724A800:lI101|H10724A920 +10724A920:lI98|H10724AA20 +10724AA20:lI105|H10724AB00 +10724AB00:lI110|N +1066006B0:lH106600708|H106600720 +106600708:t2:H1071F0120,A7:nocache +1071F0120:lI47|H1071F0978 +1071F0978:lI85|H1071F1EA0 +1071F1EA0:lI115|H1071F4188 +1071F4188:lI101|H1071F69A8 +1071F69A8:lI114|H1071F9600 +1071F9600:lI115|H1071FC540 +1071FC540:lI47|H1071FF5F8 +1071FF5F8:lI110|H1072027A0 +1072027A0:lI105|H1072059E0 +1072059E0:lI99|H107208CB8 +107208CB8:lI104|H10720BF68 +10720BF68:lI111|H10720F1E8 +10720F1E8:lI108|H107212508 +107212508:lI97|H107215990 +107215990:lI115|H107219000 +107219000:lI99|H10721C760 +10721C760:lI97|H10721FDE0 +10721FDE0:lI114|H107223268 +107223268:lI108|H107226350 +107226350:lI115|H1072290E8 +1072290E8:lI111|H10722BAB0 +10722BAB0:lI110|H10722E118 +10722E118:lI47|H1072304D0 +1072304D0:lI86|H1072325F8 +1072325F8:lI83|H107234430 +107234430:lI32|H107235F78 +107235F78:lI67|H107237810 +107237810:lI111|H107238E98 +107238E98:lI100|H10723A370 +10723A370:lI101|H10723B6B0 +10723B6B0:lI47|H10723C780 +10723C780:lI65|H10723D640 +10723D640:lI100|H10723E3C0 +10723E3C0:lI118|H10723EFD0 +10723EFD0:lI101|H10723FAA0 +10723FAA0:lI110|H1072403F0 +1072403F0:lI116|H107240C70 +107240C70:lI79|H107241400 +107241400:lI102|H107241B30 +107241B30:lI67|H107242200 +107242200:lI111|H107242870 +107242870:lI100|H107242E70 +107242E70:lI101|H1072433E0 +1072433E0:lI47|H107243920 +107243920:lI97|H107243E10 +107243E10:lI111|H107244300 +107244300:lI99|H1072447B0 +1072447B0:lI50|H107244C20 +107244C20:lI48|H107245080 +107245080:lI50|H1072454D0 +1072454D0:lI51|H1072458D0 +1072458D0:lI47|H107245C90 +107245C90:lI98|H107246020 +107246020:lI117|H1072463B0 +1072463B0:lI105|H107246740 +107246740:lI108|H107246AD0 +107246AD0:lI100|H107246E10 +107246E10:lI47|H107247130 +107247130:lI100|H107247450 +107247450:lI101|H107247760 +107247760:lI118|H107247A60 +107247A60:lI47|H107247D50 +107247D50:lI101|H107248030 +107248030:lI114|H1072482F0 +1072482F0:lI108|H1072485B0 +1072485B0:lI97|H107248860 +107248860:lI110|H107248B00 +107248B00:lI103|H107248D80 +107248D80:lI47|H107248FF0 +107248FF0:lI103|H107249260 +107249260:lI108|H1072494C0 +1072494C0:lI101|H107249720 +107249720:lI101|H107249970 +107249970:lI117|H107249B80 +107249B80:lI110|H107249D70 +107249D70:lI105|H107249F50 +107249F50:lI116|H10724A100 +10724A100:lI47|H10724A290 +10724A290:lI101|H10724A410 +10724A410:lI98|H10724A580 +10724A580:lI105|H10724A6D0 +10724A6D0:lI110|N +106600720:lH106600778|H106600790 +106600778:t2:H1071F0068,A7:nocache +1071F0068:lI47|H1071F0628 +1071F0628:lI85|H1071F18B0 +1071F18B0:lI115|H1071F3B28 +1071F3B28:lI101|H1071F6340 +1071F6340:lI114|H1071F8F90 +1071F8F90:lI115|H1071FBED0 +1071FBED0:lI47|H1071FEF88 +1071FEF88:lI110|H107202130 +107202130:lI105|H107205370 +107205370:lI99|H107208668 +107208668:lI104|H10720B938 +10720B938:lI111|H10720EBF8 +10720EBF8:lI108|H107211F58 +107211F58:lI97|H107215430 +107215430:lI115|H107218AC0 +107218AC0:lI99|H10721C2F0 +10721C2F0:lI97|H10721F9F0 +10721F9F0:lI114|H107222EE8 +107222EE8:lI108|H107226050 +107226050:lI115|H107228E38 +107228E38:lI111|H10722B870 +10722B870:lI110|H10722DF48 +10722DF48:lI47|H107230370 +107230370:lI86|H1072324E8 +1072324E8:lI83|H107234350 +107234350:lI32|H107235EB8 +107235EB8:lI67|H1072377B0 +1072377B0:lI111|H107238E38 +107238E38:lI100|H10723A310 +10723A310:lI101|H10723B670 +10723B670:lI47|H10723C750 +10723C750:lI65|H10723D610 +10723D610:lI100|H10723E390 +10723E390:lI118|H10723EFA0 +10723EFA0:lI101|H10723FA70 +10723FA70:lI110|H1072403C0 +1072403C0:lI116|H107240C40 +107240C40:lI79|H1072413D0 +1072413D0:lI102|H107241B00 +107241B00:lI67|H1072421D0 +1072421D0:lI111|H107242840 +107242840:lI100|H107242E40 +107242E40:lI101|H1072433B0 +1072433B0:lI47|H1072438F0 +1072438F0:lI97|H107243DE0 +107243DE0:lI111|H1072442D0 +1072442D0:lI99|H107244780 +107244780:lI50|H107244BF0 +107244BF0:lI48|H107245050 +107245050:lI50|H1072454A0 +1072454A0:lI51|H1072458A0 +1072458A0:lI47|H107245C60 +107245C60:lI98|H107245FF0 +107245FF0:lI117|H107246380 +107246380:lI105|H107246710 +107246710:lI108|H107246AA0 +107246AA0:lI100|H107246DE0 +107246DE0:lI47|H107247100 +107247100:lI100|H107247420 +107247420:lI101|H107247730 +107247730:lI118|H107247A30 +107247A30:lI47|H107247D20 +107247D20:lI101|H107248000 +107248000:lI114|H1072482C0 +1072482C0:lI108|H107248580 +107248580:lI97|H107248830 +107248830:lI110|H107248AE0 +107248AE0:lI103|H107248D60 +107248D60:lI47|H107248FD0 +107248FD0:lI115|H107249240 +107249240:lI110|H1072494A0 +1072494A0:lI97|H107249700 +107249700:lI103|H107249950 +107249950:lI47|H107249B60 +107249B60:lI101|H107249D50 +107249D50:lI98|H107249F30 +107249F30:lI105|H10724A0E0 +10724A0E0:lI110|N +106600790:lH1066007E8|H106600800 +1066007E8:t2:H1071F0058,A7:nocache +1071F0058:lI47|H1071F0618 +1071F0618:lI85|H1071F18A0 +1071F18A0:lI115|H1071F3B18 +1071F3B18:lI101|H1071F6330 +1071F6330:lI114|H1071F8F80 +1071F8F80:lI115|H1071FBEC0 +1071FBEC0:lI47|H1071FEF78 +1071FEF78:lI110|H107202120 +107202120:lI105|H107205360 +107205360:lI99|H107208658 +107208658:lI104|H10720B928 +10720B928:lI111|H10720EBE8 +10720EBE8:lI108|H107211F48 +107211F48:lI97|H107215420 +107215420:lI115|H107218AB0 +107218AB0:lI99|H10721C2E0 +10721C2E0:lI97|H10721F9E0 +10721F9E0:lI114|H107222ED8 +107222ED8:lI108|H107226040 +107226040:lI115|H107228E28 +107228E28:lI111|H10722B860 +10722B860:lI110|H10722DF38 +10722DF38:lI47|H107230360 +107230360:lI86|H1072324D8 +1072324D8:lI83|H107234340 +107234340:lI32|H107235EA8 +107235EA8:lI67|H1072377A0 +1072377A0:lI111|H107238E28 +107238E28:lI100|H10723A300 +10723A300:lI101|H10723B660 +10723B660:lI47|H10723C740 +10723C740:lI65|H10723D600 +10723D600:lI100|H10723E380 +10723E380:lI118|H10723EF90 +10723EF90:lI101|H10723FA60 +10723FA60:lI110|H1072403B0 +1072403B0:lI116|H107240C30 +107240C30:lI79|H1072413C0 +1072413C0:lI102|H107241AF0 +107241AF0:lI67|H1072421C0 +1072421C0:lI111|H107242830 +107242830:lI100|H107242E30 +107242E30:lI101|H1072433A0 +1072433A0:lI47|H1072438E0 +1072438E0:lI97|H107243DD0 +107243DD0:lI111|H1072442C0 +1072442C0:lI99|H107244770 +107244770:lI50|H107244BE0 +107244BE0:lI48|H107245040 +107245040:lI50|H107245490 +107245490:lI51|H107245890 +107245890:lI47|H107245C50 +107245C50:lI98|H107245FE0 +107245FE0:lI117|H107246370 +107246370:lI105|H107246700 +107246700:lI108|H107246A90 +107246A90:lI100|H107246DD0 +107246DD0:lI47|H1072470F0 +1072470F0:lI100|H107247410 +107247410:lI101|H107247720 +107247720:lI118|H107247A20 +107247A20:lI47|H107247D10 +107247D10:lI101|H107247FF0 +107247FF0:lI114|H1072482B0 +1072482B0:lI108|H107248570 +107248570:lI97|H107248820 +107248820:lI110|H107248AD0 +107248AD0:lI103|H107248D50 +107248D50:lI47|H107248FC0 +107248FC0:lI116|H107249230 +107249230:lI111|H107249490 +107249490:lI109|H1072496F0 +1072496F0:lI47|H107249940 +107249940:lI101|H107249B50 +107249B50:lI98|H107249D40 +107249D40:lI105|H107249F20 +107249F20:lI110|N +106600800:lH106600858|H106600870 +106600858:t2:H1071F0028,A7:nocache +1071F0028:lI47|H1071F05E8 +1071F05E8:lI85|H1071F1870 +1071F1870:lI115|H1071F3AE8 +1071F3AE8:lI101|H1071F6300 +1071F6300:lI114|H1071F8F50 +1071F8F50:lI115|H1071FBE90 +1071FBE90:lI47|H1071FEF48 +1071FEF48:lI110|H1072020F0 +1072020F0:lI105|H107205330 +107205330:lI99|H107208628 +107208628:lI104|H10720B8F8 +10720B8F8:lI111|H10720EBB8 +10720EBB8:lI108|H107211F18 +107211F18:lI97|H1072153F0 +1072153F0:lI115|H107218A80 +107218A80:lI99|H10721C2B0 +10721C2B0:lI97|H10721F9B0 +10721F9B0:lI114|H107222EA8 +107222EA8:lI108|H107226010 +107226010:lI115|H107228DF8 +107228DF8:lI111|H10722B830 +10722B830:lI110|H10722DF08 +10722DF08:lI47|H107230330 +107230330:lI86|H1072324A8 +1072324A8:lI83|H107234310 +107234310:lI32|H107235E78 +107235E78:lI67|H107237770 +107237770:lI111|H107238DF8 +107238DF8:lI100|H10723A2D0 +10723A2D0:lI101|H10723B630 +10723B630:lI47|H10723C710 +10723C710:lI65|H10723D5D0 +10723D5D0:lI100|H10723E350 +10723E350:lI118|H10723EF60 +10723EF60:lI101|H10723FA30 +10723FA30:lI110|H107240380 +107240380:lI116|H107240C00 +107240C00:lI79|H107241390 +107241390:lI102|H107241AC0 +107241AC0:lI67|H107242190 +107242190:lI111|H107242800 +107242800:lI100|H107242E00 +107242E00:lI101|H107243370 +107243370:lI47|H1072438B0 +1072438B0:lI97|H107243DB0 +107243DB0:lI111|H1072442A0 +1072442A0:lI99|H107244750 +107244750:lI50|H107244BC0 +107244BC0:lI48|H107245020 +107245020:lI50|H107245470 +107245470:lI51|H107245870 +107245870:lI47|H107245C30 +107245C30:lI98|H107245FC0 +107245FC0:lI117|H107246350 +107246350:lI105|H1072466E0 +1072466E0:lI108|H107246A70 +107246A70:lI100|H107246DB0 +107246DB0:lI47|H1072470D0 +1072470D0:lI100|H1072473F0 +1072473F0:lI101|H107247700 +107247700:lI118|H107247A00 +107247A00:lI47|H107247CF0 +107247CF0:lI101|H107247FD0 +107247FD0:lI114|H107248290 +107248290:lI108|H107248550 +107248550:lI97|H107248800 +107248800:lI110|H107248AB0 +107248AB0:lI103|H107248D30 +107248D30:lI47|H107248FA0 +107248FA0:lI97|H107249210 +107249210:lI111|H107249470 +107249470:lI99|H1072496D0 +1072496D0:lI50|H107249920 +107249920:lI48|H107249B30 +107249B30:lI50|H107249D20 +107249D20:lI51|H107249F00 +107249F00:lI47|H10724A0C0 +10724A0C0:lI101|H10724A260 +10724A260:lI98|H10724A3E0 +10724A3E0:lI105|H10724A550 +10724A550:lI110|N +106600870:lH1066008B8|H1066008D0 +1066008B8:t2:H1071F0048,A7:nocache +1071F0048:lI47|H1071F0608 +1071F0608:lI85|H1071F1890 +1071F1890:lI115|H1071F3B08 +1071F3B08:lI101|H1071F6320 +1071F6320:lI114|H1071F8F70 +1071F8F70:lI115|H1071FBEB0 +1071FBEB0:lI47|H1071FEF68 +1071FEF68:lI110|H107202110 +107202110:lI105|H107205350 +107205350:lI99|H107208648 +107208648:lI104|H10720B918 +10720B918:lI111|H10720EBD8 +10720EBD8:lI108|H107211F38 +107211F38:lI97|H107215410 +107215410:lI115|H107218AA0 +107218AA0:lI99|H10721C2D0 +10721C2D0:lI97|H10721F9D0 +10721F9D0:lI114|H107222EC8 +107222EC8:lI108|H107226030 +107226030:lI115|H107228E18 +107228E18:lI111|H10722B850 +10722B850:lI110|H10722DF28 +10722DF28:lI47|H107230350 +107230350:lI86|H1072324C8 +1072324C8:lI83|H107234330 +107234330:lI32|H107235E98 +107235E98:lI67|H107237790 +107237790:lI111|H107238E18 +107238E18:lI100|H10723A2F0 +10723A2F0:lI101|H10723B650 +10723B650:lI47|H10723C730 +10723C730:lI65|H10723D5F0 +10723D5F0:lI100|H10723E370 +10723E370:lI118|H10723EF80 +10723EF80:lI101|H10723FA50 +10723FA50:lI110|H1072403A0 +1072403A0:lI116|H107240C20 +107240C20:lI79|H1072413B0 +1072413B0:lI102|H107241AE0 +107241AE0:lI67|H1072421B0 +1072421B0:lI111|H107242820 +107242820:lI100|H107242E20 +107242E20:lI101|H107243390 +107243390:lI47|H1072438D0 +1072438D0:lI97|H107243DC0 +107243DC0:lI111|H1072442B0 +1072442B0:lI99|H107244760 +107244760:lI50|H107244BD0 +107244BD0:lI48|H107245030 +107245030:lI50|H107245480 +107245480:lI51|H107245880 +107245880:lI47|H107245C40 +107245C40:lI98|H107245FD0 +107245FD0:lI117|H107246360 +107246360:lI105|H1072466F0 +1072466F0:lI108|H107246A80 +107246A80:lI100|H107246DC0 +107246DC0:lI47|H1072470E0 +1072470E0:lI100|H107247400 +107247400:lI101|H107247710 +107247710:lI118|H107247A10 +107247A10:lI47|H107247D00 +107247D00:lI101|H107247FE0 +107247FE0:lI114|H1072482A0 +1072482A0:lI108|H107248560 +107248560:lI97|H107248810 +107248810:lI110|H107248AC0 +107248AC0:lI103|H107248D40 +107248D40:lI47|H107248FB0 +107248FB0:lI115|H107249220 +107249220:lI105|H107249480 +107249480:lI109|H1072496E0 +1072496E0:lI112|H107249930 +107249930:lI108|H107249B40 +107249B40:lI105|H107249D30 +107249D30:lI102|H107249F10 +107249F10:lI105|H10724A0D0 +10724A0D0:lI108|H10724A270 +10724A270:lI101|H10724A3F0 +10724A3F0:lI47|H10724A560 +10724A560:lI101|H10724A6B0 +10724A6B0:lI98|H10724A7E0 +10724A7E0:lI105|H10724A900 +10724A900:lI110|N +1066008D0:lH106600900|H106600918 +106600900:t2:H280052958,A7:nocache +106600918:lH106600948|H106600960 +106600948:t2:H1071F0088,H1071F0098 +1071F0098:Mh64:F:H1071F0658,H1071F0698,H1071F06C8,H1071F0718,H1071F0740,H1071F0778,H1071F07B0,H1071F07E0,H1071F0808,H1071F0830,H1071F0878,H1071F08A8,H1071F08D0,H1071F0908,H1071F0938 +1071F0658:Mn7:H1071F18E0,H1071F18F0,H1071F1900,H1071F1910,H1071F1920,H1071F1930,H1071F1940 +1071F18E0:lH1071F3B58|N +1071F3B58:lI103|H1071F6370 +1071F6370:lI101|H1071F8FC0 +1071F8FC0:lI110|H1071FBF00 +1071FBF00:lI95|H1071FEFB8 +1071FEFB8:lI116|H107202160 +107202160:lI99|H1072053A0 +1072053A0:lI112|H107208698 +107208698:lI46|H10720B968 +10720B968:lI98|H10720EC28 +10720EC28:lI101|H107211F88 +107211F88:lI97|H107215460 +107215460:lI109|N +1071F1940:lH1071F3BB8|N +1071F3BB8:lI105|H1071F63D0 +1071F63D0:lI110|H1071F9020 +1071F9020:lI101|H1071FBF60 +1071FBF60:lI116|H1071FF018 +1071FF018:lI95|H1072021C0 +1072021C0:lI114|H107205400 +107205400:lI101|H1072086F8 +1072086F8:lI115|H10720B9C8 +10720B9C8:lI46|H10720EC88 +10720EC88:lI98|H107211FD8 +107211FD8:lI101|H1072154A0 +1072154A0:lI97|H107218B20 +107218B20:lI109|N +1071F1930:lH1071F3BA8|N +1071F3BA8:lI114|H1071F63C0 +1071F63C0:lI97|H1071F9010 +1071F9010:lI119|H1071FBF50 +1071FBF50:lI95|H1071FF008 +1071FF008:lI102|H1072021B0 +1072021B0:lI105|H1072053F0 +1072053F0:lI108|H1072086E8 +1072086E8:lI101|H10720B9B8 +10720B9B8:lI95|H10720EC78 +10720EC78:lI105|H107211FC8 +107211FC8:lI111|H107215490 +107215490:lI46|H107218B10 +107218B10:lI98|H10721C340 +10721C340:lI101|H10721FA40 +10721FA40:lI97|H107222F38 +107222F38:lI109|N +1071F1920:lH1071F3B98|N +1071F3B98:lI103|H1071F63B0 +1071F63B0:lI114|H1071F9000 +1071F9000:lI111|H1071FBF40 +1071FBF40:lI117|H1071FEFF8 +1071FEFF8:lI112|H1072021A0 +1072021A0:lI46|H1072053E0 +1072053E0:lI98|H1072086D8 +1072086D8:lI101|H10720B9A8 +10720B9A8:lI97|H10720EC68 +10720EC68:lI109|N +1071F1910:lH1071F3B88|N +1071F3B88:lI107|H1071F63A0 +1071F63A0:lI101|H1071F8FF0 +1071F8FF0:lI114|H1071FBF30 +1071FBF30:lI110|H1071FEFE8 +1071FEFE8:lI101|H107202190 +107202190:lI108|H1072053D0 +1072053D0:lI95|H1072086C8 +1072086C8:lI114|H10720B998 +10720B998:lI101|H10720EC58 +10720EC58:lI102|H107211FB8 +107211FB8:lI99|H107215480 +107215480:lI46|H107218B00 +107218B00:lI98|H10721C330 +10721C330:lI101|H10721FA30 +10721FA30:lI97|H107222F28 +107222F28:lI109|N +1071F1900:lH1071F3B78|N +1071F3B78:lI115|H1071F6390 +1071F6390:lI111|H1071F8FE0 +1071F8FE0:lI99|H1071FBF20 +1071FBF20:lI107|H1071FEFD8 +1071FEFD8:lI101|H107202180 +107202180:lI116|H1072053C0 +1072053C0:lI46|H1072086B8 +1072086B8:lI98|H10720B988 +10720B988:lI101|H10720EC48 +10720EC48:lI97|H107211FA8 +107211FA8:lI109|N +1071F18F0:lH1071F3B68|N +1071F3B68:lI100|H1071F6380 +1071F6380:lI105|H1071F8FD0 +1071F8FD0:lI115|H1071FBF10 +1071FBF10:lI107|H1071FEFC8 +1071FEFC8:lI95|H107202170 +107202170:lI108|H1072053B0 +1072053B0:lI111|H1072086A8 +1072086A8:lI103|H10720B978 +10720B978:lI95|H10720EC38 +10720EC38:lI115|H107211F98 +107211F98:lI117|H107215470 +107215470:lI112|H107218AF0 +107218AF0:lI46|H10721C320 +10721C320:lI98|H10721FA20 +10721FA20:lI101|H107222F18 +107222F18:lI97|H107226080 +107226080:lI109|N +1071F0938:Mn7:H1071F1E28,H1071F1E38,H1071F1E48,H1071F1E58,H1071F1E70,H1071F1E80,H1071F1E90 +1071F1E28:lH1071F4108|N +1071F4108:lI105|H1071F6928 +1071F6928:lI110|H1071F9580 +1071F9580:lI101|H1071FC4C0 +1071FC4C0:lI116|H1071FF578 +1071FF578:lI54|H107202720 +107202720:lI95|H107205960 +107205960:lI116|H107208C48 +107208C48:lI99|H10720BEF8 +10720BEF8:lI112|H10720F178 +10720F178:lI46|H107212498 +107212498:lI98|H107215930 +107215930:lI101|H107218FA0 +107218FA0:lI97|H10721C720 +10721C720:lI109|N +1071F1E90:lH1071F4178|N +1071F4178:lI105|H1071F6998 +1071F6998:lI110|H1071F95F0 +1071F95F0:lI101|H1071FC530 +1071FC530:lI116|H1071FF5E8 +1071FF5E8:lI95|H107202790 +107202790:lI101|H1072059D0 +1072059D0:lI112|H107208CA8 +107208CA8:lI109|H10720BF58 +10720BF58:lI100|H10720F1D8 +10720F1D8:lI95|H1072124F8 +1072124F8:lI115|H107215980 +107215980:lI111|H107218FF0 +107218FF0:lI99|H10721C750 +10721C750:lI107|H10721FDD0 +10721FDD0:lI101|H107223258 +107223258:lI116|H107226340 +107226340:lI46|H1072290D8 +1072290D8:lI98|H10722BAA0 +10722BAA0:lI101|H10722E108 +10722E108:lI97|H1072304C0 +1072304C0:lI109|N +1071F1E80:lH1071F4168|N +1071F4168:lI112|H1071F6988 +1071F6988:lI103|H1071F95E0 +1071F95E0:lI46|H1071FC520 +1071FC520:lI98|H1071FF5D8 +1071FF5D8:lI101|H107202780 +107202780:lI97|H1072059C0 +1072059C0:lI109|N +1071F1E70:lH1071F4158|N +1071F4158:lI108|H1071F6978 +1071F6978:lI111|H1071F95D0 +1071F95D0:lI99|H1071FC510 +1071FC510:lI97|H1071FF5C8 +1071FF5C8:lI108|H107202770 +107202770:lI95|H1072059B0 +1072059B0:lI117|H107208C98 +107208C98:lI100|H10720BF48 +10720BF48:lI112|H10720F1C8 +10720F1C8:lI46|H1072124E8 +1072124E8:lI98|H107215970 +107215970:lI101|H107218FE0 +107218FE0:lI97|H10721C740 +10721C740:lI109|N +1071F1E58:Mn2:H1071F4138,H1071F4148 +1071F4138:lH1071F6958|N +1071F6958:lI107|H1071F95B0 +1071F95B0:lI101|H1071FC4F0 +1071FC4F0:lI114|H1071FF5A8 +1071FF5A8:lI110|H107202750 +107202750:lI101|H107205990 +107205990:lI108|H107208C78 +107208C78:lI46|H10720BF28 +10720BF28:lI97|H10720F1A8 +10720F1A8:lI112|H1072124C8 +1072124C8:lI112|H107215950 +107215950:lI117|H107218FC0 +107218FC0:lI112|N +1071F4148:lH1071F6968|N +1071F6968:lI103|H1071F95C0 +1071F95C0:lI101|H1071FC500 +1071FC500:lI110|H1071FF5B8 +1071FF5B8:lI95|H107202760 +107202760:lI117|H1072059A0 +1072059A0:lI100|H107208C88 +107208C88:lI112|H10720BF38 +10720BF38:lI46|H10720F1B8 +10720F1B8:lI98|H1072124D8 +1072124D8:lI101|H107215960 +107215960:lI97|H107218FD0 +107218FD0:lI109|N +1071F1E48:lH1071F4128|N +1071F4128:lI108|H1071F6948 +1071F6948:lI111|H1071F95A0 +1071F95A0:lI103|H1071FC4E0 +1071FC4E0:lI103|H1071FF598 +1071FF598:lI101|H107202740 +107202740:lI114|H107205980 +107205980:lI95|H107208C68 +107208C68:lI104|H10720BF18 +10720BF18:lI95|H10720F198 +10720F198:lI99|H1072124B8 +1072124B8:lI111|H107215940 +107215940:lI109|H107218FB0 +107218FB0:lI109|H10721C730 +10721C730:lI111|H10721FDC0 +10721FDC0:lI110|H107223248 +107223248:lI46|H107226330 +107226330:lI98|H1072290C8 +1072290C8:lI101|H10722BA90 +10722BA90:lI97|H10722E0F8 +10722E0F8:lI109|N +1071F1E38:lH1071F4118|N +1071F4118:lI108|H1071F6938 +1071F6938:lI111|H1071F9590 +1071F9590:lI103|H1071FC4D0 +1071FC4D0:lI103|H1071FF588 +1071FF588:lI101|H107202730 +107202730:lI114|H107205970 +107205970:lI46|H107208C58 +107208C58:lI98|H10720BF08 +10720BF08:lI101|H10720F188 +10720F188:lI97|H1072124A8 +1072124A8:lI109|N +1071F0908:Mn5:H1071F1DD0,H1071F1DE8,H1071F1DF8,H1071F1E08,H1071F1E18 +1071F1DD0:Mn2:H1071F40A8,H1071F40B8 +1071F40A8:lH1071F68C8|N +1071F68C8:lI115|H1071F9520 +1071F9520:lI101|H1071FC460 +1071FC460:lI113|H1071FF518 +1071FF518:lI95|H1072026C0 +1072026C0:lI116|H107205900 +107205900:lI114|H107208BE8 +107208BE8:lI97|H10720BE98 +10720BE98:lI99|H10720F118 +10720F118:lI101|H107212438 +107212438:lI46|H1072158D0 +1072158D0:lI98|H107218F40 +107218F40:lI101|H10721C6D0 +10721C6D0:lI97|H10721FD80 +10721FD80:lI109|N +1071F40B8:lH1071F68D8|N +1071F68D8:lI101|H1071F9530 +1071F9530:lI114|H1071FC470 +1071FC470:lI108|H1071FF528 +1071FF528:lI95|H1072026D0 +1072026D0:lI100|H107205910 +107205910:lI100|H107208BF8 +107208BF8:lI108|H10720BEA8 +10720BEA8:lI108|H10720F128 +10720F128:lI46|H107212448 +107212448:lI98|H1072158E0 +1072158E0:lI101|H107218F50 +107218F50:lI97|H10721C6E0 +10721C6E0:lI109|N +1071F1E18:lH1071F40F8|N +1071F40F8:lI97|H1071F6918 +1071F6918:lI112|H1071F9570 +1071F9570:lI112|H1071FC4B0 +1071FC4B0:lI108|H1071FF568 +1071FF568:lI105|H107202710 +107202710:lI99|H107205950 +107205950:lI97|H107208C38 +107208C38:lI116|H10720BEE8 +10720BEE8:lI105|H10720F168 +10720F168:lI111|H107212488 +107212488:lI110|H107215920 +107215920:lI46|H107218F90 +107218F90:lI98|H10721C710 +10721C710:lI101|H10721FDB0 +10721FDB0:lI97|H107223238 +107223238:lI109|N +1071F1E08:lH1071F40E8|N +1071F40E8:lI105|H1071F6908 +1071F6908:lI110|H1071F9560 +1071F9560:lI101|H1071FC4A0 +1071FC4A0:lI116|H1071FF558 +1071FF558:lI95|H107202700 +107202700:lI101|H107205940 +107205940:lI112|H107208C28 +107208C28:lI109|H10720BED8 +10720BED8:lI100|H10720F158 +10720F158:lI95|H107212478 +107212478:lI100|H107215910 +107215910:lI105|H107218F80 +107218F80:lI115|H10721C700 +10721C700:lI116|H10721FDA0 +10721FDA0:lI46|H107223228 +107223228:lI98|H107226320 +107226320:lI101|H1072290B8 +1072290B8:lI97|H10722BA80 +10722BA80:lI109|N +1071F1DF8:lH1071F40D8|N +1071F40D8:lI114|H1071F68F8 +1071F68F8:lI97|H1071F9550 +1071F9550:lI109|H1071FC490 +1071FC490:lI95|H1071FF548 +1071FF548:lI102|H1072026F0 +1072026F0:lI105|H107205930 +107205930:lI108|H107208C18 +107208C18:lI101|H10720BEC8 +10720BEC8:lI46|H10720F148 +10720F148:lI98|H107212468 +107212468:lI101|H107215900 +107215900:lI97|H107218F70 +107218F70:lI109|N +1071F1DE8:lH1071F40C8|N +1071F40C8:lI105|H1071F68E8 +1071F68E8:lI110|H1071F9540 +1071F9540:lI101|H1071FC480 +1071FC480:lI116|H1071FF538 +1071FF538:lI54|H1072026E0 +1072026E0:lI95|H107205920 +107205920:lI115|H107208C08 +107208C08:lI99|H10720BEB8 +10720BEB8:lI116|H10720F138 +10720F138:lI112|H107212458 +107212458:lI46|H1072158F0 +1072158F0:lI98|H107218F60 +107218F60:lI101|H10721C6F0 +10721C6F0:lI97|H10721FD90 +10721FD90:lI109|N +1071F08D0:Mn6:H1071F1D68,H1071F1D80,H1071F1D90,H1071F1DA0,H1071F1DB0,H1071F1DC0 +1071F1D68:Mn2:H1071F4038,H1071F4048 +1071F4038:lH1071F6858|N +1071F6858:lI100|H1071F94B0 +1071F94B0:lI105|H1071FC3F0 +1071FC3F0:lI115|H1071FF4A8 +1071FF4A8:lI107|H107202650 +107202650:lI95|H107205890 +107205890:lI108|H107208B78 +107208B78:lI111|H10720BE28 +10720BE28:lI103|H10720F0A8 +10720F0A8:lI46|H1072123C8 +1072123C8:lI98|H107215860 +107215860:lI101|H107218ED0 +107218ED0:lI97|H10721C670 +10721C670:lI109|N +1071F4048:lH1071F6868|N +1071F6868:lI103|H1071F94C0 +1071F94C0:lI101|H1071FC400 +1071FC400:lI110|H1071FF4B8 +1071FF4B8:lI95|H107202660 +107202660:lI117|H1072058A0 +1072058A0:lI100|H107208B88 +107208B88:lI112|H10720BE38 +10720BE38:lI95|H10720F0B8 +10720F0B8:lI115|H1072123D8 +1072123D8:lI111|H107215870 +107215870:lI99|H107218EE0 +107218EE0:lI107|H10721C680 +10721C680:lI101|H10721FD30 +10721FD30:lI116|H1072231D8 +1072231D8:lI46|H1072262E0 +1072262E0:lI98|H107229078 +107229078:lI101|H10722BA40 +10722BA40:lI97|H10722E0B8 +10722E0B8:lI109|N +1071F1DC0:lH1071F4098|N +1071F4098:lI101|H1071F68B8 +1071F68B8:lI114|H1071F9510 +1071F9510:lI108|H1071FC450 +1071FC450:lI95|H1071FF508 +1071FF508:lI115|H1072026B0 +1072026B0:lI105|H1072058F0 +1072058F0:lI103|H107208BD8 +107208BD8:lI110|H10720BE88 +10720BE88:lI97|H10720F108 +10720F108:lI108|H107212428 +107212428:lI95|H1072158C0 +1072158C0:lI104|H107218F30 +107218F30:lI97|H10721C6C0 +10721C6C0:lI110|H10721FD70 +10721FD70:lI100|H107223218 +107223218:lI108|H107226310 +107226310:lI101|H1072290A8 +1072290A8:lI114|H10722BA70 +10722BA70:lI46|H10722E0E8 +10722E0E8:lI98|H1072304B0 +1072304B0:lI101|H1072325E8 +1072325E8:lI97|H107234420 +107234420:lI109|N +1071F1DB0:lH1071F4088|N +1071F4088:lI114|H1071F68A8 +1071F68A8:lI97|H1071F9500 +1071F9500:lI119|H1071FC440 +1071FC440:lI95|H1071FF4F8 +1071FF4F8:lI102|H1072026A0 +1072026A0:lI105|H1072058E0 +1072058E0:lI108|H107208BC8 +107208BC8:lI101|H10720BE78 +10720BE78:lI95|H10720F0F8 +10720F0F8:lI105|H107212418 +107212418:lI111|H1072158B0 +1072158B0:lI95|H107218F20 +107218F20:lI105|H10721C6B0 +10721C6B0:lI110|H10721FD60 +10721FD60:lI102|H107223208 +107223208:lI108|H107226300 +107226300:lI97|H107229098 +107229098:lI116|H10722BA60 +10722BA60:lI101|H10722E0D8 +10722E0D8:lI46|H1072304A0 +1072304A0:lI98|H1072325D8 +1072325D8:lI101|H107234410 +107234410:lI97|H107235F68 +107235F68:lI109|N +1071F1DA0:lH1071F4078|N +1071F4078:lI102|H1071F6898 +1071F6898:lI105|H1071F94F0 +1071F94F0:lI108|H1071FC430 +1071FC430:lI101|H1071FF4E8 +1071FF4E8:lI95|H107202690 +107202690:lI115|H1072058D0 +1072058D0:lI101|H107208BB8 +107208BB8:lI114|H10720BE68 +10720BE68:lI118|H10720F0E8 +10720F0E8:lI101|H107212408 +107212408:lI114|H1072158A0 +1072158A0:lI46|H107218F10 +107218F10:lI98|H10721C6A0 +10721C6A0:lI101|H10721FD50 +10721FD50:lI97|H1072231F8 +1072231F8:lI109|N +1071F1D90:lH1071F4068|N +1071F4068:lI112|H1071F6888 +1071F6888:lI114|H1071F94E0 +1071F94E0:lI105|H1071FC420 +1071FC420:lI109|H1071FF4D8 +1071FF4D8:lI95|H107202680 +107202680:lI116|H1072058C0 +1072058C0:lI116|H107208BA8 +107208BA8:lI121|H10720BE58 +10720BE58:lI46|H10720F0D8 +10720F0D8:lI98|H1072123F8 +1072123F8:lI101|H107215890 +107215890:lI97|H107218F00 +107218F00:lI109|N +1071F1D80:lH1071F4058|N +1071F4058:lI101|H1071F6878 +1071F6878:lI114|H1071F94D0 +1071F94D0:lI108|H1071FC410 +1071FC410:lI95|H1071FF4C8 +1071FF4C8:lI98|H107202670 +107202670:lI111|H1072058B0 +1072058B0:lI111|H107208B98 +107208B98:lI116|H10720BE48 +10720BE48:lI95|H10720F0C8 +10720F0C8:lI115|H1072123E8 +1072123E8:lI101|H107215880 +107215880:lI114|H107218EF0 +107218EF0:lI118|H10721C690 +10721C690:lI101|H10721FD40 +10721FD40:lI114|H1072231E8 +1072231E8:lI46|H1072262F0 +1072262F0:lI98|H107229088 +107229088:lI101|H10722BA50 +10722BA50:lI97|H10722E0C8 +10722E0C8:lI109|N +1071F08A8:Mn4:H1071F1D18,H1071F1D28,H1071F1D40,H1071F1D50 +1071F1D18:lH1071F3FD8|N +1071F3FD8:lI104|H1071F67F8 +1071F67F8:lI101|H1071F9450 +1071F9450:lI97|H1071FC390 +1071FC390:lI114|H1071FF448 +1071FF448:lI116|H1072025F0 +1072025F0:lI46|H107205830 +107205830:lI98|H107208B18 +107208B18:lI101|H10720BDC8 +10720BDC8:lI97|H10720F048 +10720F048:lI109|N +1071F1D50:Mn2:H1071F4018,H1071F4028 +1071F4018:lH1071F6838|N +1071F6838:lI103|H1071F9490 +1071F9490:lI108|H1071FC3D0 +1071FC3D0:lI111|H1071FF488 +1071FF488:lI98|H107202630 +107202630:lI97|H107205870 +107205870:lI108|H107208B58 +107208B58:lI95|H10720BE08 +10720BE08:lI115|H10720F088 +10720F088:lI101|H1072123A8 +1072123A8:lI97|H107215840 +107215840:lI114|H107218EB0 +107218EB0:lI99|H10721C650 +10721C650:lI104|H10721FD10 +10721FD10:lI46|H1072231C8 +1072231C8:lI98|H1072262D0 +1072262D0:lI101|H107229068 +107229068:lI97|H10722BA30 +10722BA30:lI109|N +1071F4028:lH1071F6848|N +1071F6848:lI101|H1071F94A0 +1071F94A0:lI114|H1071FC3E0 +1071FC3E0:lI108|H1071FF498 +1071FF498:lI95|H107202640 +107202640:lI114|H107205880 +107205880:lI101|H107208B68 +107208B68:lI112|H10720BE18 +10720BE18:lI108|H10720F098 +10720F098:lI121|H1072123B8 +1072123B8:lI46|H107215850 +107215850:lI98|H107218EC0 +107218EC0:lI101|H10721C660 +10721C660:lI97|H10721FD20 +10721FD20:lI109|N +1071F1D40:lH1071F4008|N +1071F4008:lI100|H1071F6828 +1071F6828:lI105|H1071F9480 +1071F9480:lI115|H1071FC3C0 +1071FC3C0:lI107|H1071FF478 +1071FF478:lI95|H107202620 +107202620:lI108|H107205860 +107205860:lI111|H107208B48 +107208B48:lI103|H10720BDF8 +10720BDF8:lI95|H10720F078 +10720F078:lI49|H107212398 +107212398:lI46|H107215830 +107215830:lI98|H107218EA0 +107218EA0:lI101|H10721C640 +10721C640:lI97|H10721FD00 +10721FD00:lI109|N +1071F1D28:Mn2:H1071F3FE8,H1071F3FF8 +1071F3FE8:lH1071F6808|N +1071F6808:lI97|H1071F9460 +1071F9460:lI117|H1071FC3A0 +1071FC3A0:lI116|H1071FF458 +1071FF458:lI104|H107202600 +107202600:lI46|H107205840 +107205840:lI98|H107208B28 +107208B28:lI101|H10720BDD8 +10720BDD8:lI97|H10720F058 +10720F058:lI109|N +1071F3FF8:lH1071F6818|N +1071F6818:lI105|H1071F9470 +1071F9470:lI110|H1071FC3B0 +1071FC3B0:lI101|H1071FF468 +1071FF468:lI116|H107202610 +107202610:lI95|H107205850 +107205850:lI112|H107208B38 +107208B38:lI97|H10720BDE8 +10720BDE8:lI114|H10720F068 +10720F068:lI115|H107212388 +107212388:lI101|H107215820 +107215820:lI46|H107218E90 +107218E90:lI98|H10721C630 +10721C630:lI101|H10721FCF0 +10721FCF0:lI97|H1072231B8 +1072231B8:lI109|N +1071F0878:Mn5:H1071F1CC0,H1071F1CD0,H1071F1CE8,H1071F1CF8,H1071F1D08 +1071F1CC0:lH1071F3F78|N +1071F3F78:lI103|H1071F6798 +1071F6798:lI101|H1071F93F0 +1071F93F0:lI110|H1071FC330 +1071FC330:lI95|H1071FF3E8 +1071FF3E8:lI115|H107202590 +107202590:lI99|H1072057D0 +1072057D0:lI116|H107208AB8 +107208AB8:lI112|H10720BD68 +10720BD68:lI46|H10720EFE8 +10720EFE8:lI98|H107212328 +107212328:lI101|H1072157C0 +1072157C0:lI97|H107218E40 +107218E40:lI109|N +1071F1D08:lH1071F3FC8|N +1071F3FC8:lI101|H1071F67E8 +1071F67E8:lI114|H1071F9440 +1071F9440:lI108|H1071FC380 +1071FC380:lI95|H1071FF438 +1071FF438:lI101|H1072025E0 +1072025E0:lI112|H107205820 +107205820:lI109|H107208B08 +107208B08:lI100|H10720BDB8 +10720BDB8:lI46|H10720F038 +10720F038:lI98|H107212378 +107212378:lI101|H107215810 +107215810:lI97|H107218E80 +107218E80:lI109|N +1071F1CF8:lH1071F3FB8|N +1071F3FB8:lI108|H1071F67D8 +1071F67D8:lI111|H1071F9430 +1071F9430:lI103|H1071FC370 +1071FC370:lI103|H1071FF428 +1071FF428:lI101|H1072025D0 +1072025D0:lI114|H107205810 +107205810:lI95|H107208AF8 +107208AF8:lI115|H10720BDA8 +10720BDA8:lI101|H10720F028 +10720F028:lI114|H107212368 +107212368:lI118|H107215800 +107215800:lI101|H107218E70 +107218E70:lI114|H10721C620 +10721C620:lI46|H10721FCE0 +10721FCE0:lI98|H1072231A8 +1072231A8:lI101|H1072262C0 +1072262C0:lI97|H107229058 +107229058:lI109|N +1071F1CE8:lH1071F3FA8|N +1071F3FA8:lI105|H1071F67C8 +1071F67C8:lI110|H1071F9420 +1071F9420:lI101|H1071FC360 +1071FC360:lI116|H1071FF418 +1071FF418:lI95|H1072025C0 +1072025C0:lI100|H107205800 +107205800:lI98|H107208AE8 +107208AE8:lI46|H10720BD98 +10720BD98:lI98|H10720F018 +10720F018:lI101|H107212358 +107212358:lI97|H1072157F0 +1072157F0:lI109|N +1071F1CD0:Mn2:H1071F3F88,H1071F3F98 +1071F3F88:lH1071F67A8|N +1071F67A8:lI108|H1071F9400 +1071F9400:lI111|H1071FC340 +1071FC340:lI103|H1071FF3F8 +1071FF3F8:lI103|H1072025A0 +1072025A0:lI101|H1072057E0 +1072057E0:lI114|H107208AC8 +107208AC8:lI95|H10720BD78 +10720BD78:lI102|H10720EFF8 +10720EFF8:lI105|H107212338 +107212338:lI108|H1072157D0 +1072157D0:lI116|H107218E50 +107218E50:lI101|H10721C600 +10721C600:lI114|H10721FCC0 +10721FCC0:lI115|H107223188 +107223188:lI46|H1072262A0 +1072262A0:lI98|H107229038 +107229038:lI101|H10722BA10 +10722BA10:lI97|H10722E098 +10722E098:lI109|N +1071F3F98:lH1071F67B8|N +1071F67B8:lI101|H1071F9410 +1071F9410:lI114|H1071FC350 +1071FC350:lI108|H1071FF408 +1071FF408:lI95|H1072025B0 +1072025B0:lI99|H1072057F0 +1072057F0:lI111|H107208AD8 +107208AD8:lI109|H10720BD88 +10720BD88:lI112|H10720F008 +10720F008:lI105|H107212348 +107212348:lI108|H1072157E0 +1072157E0:lI101|H107218E60 +107218E60:lI95|H10721C610 +10721C610:lI115|H10721FCD0 +10721FCD0:lI101|H107223198 +107223198:lI114|H1072262B0 +1072262B0:lI118|H107229048 +107229048:lI101|H10722BA20 +10722BA20:lI114|H10722E0A8 +10722E0A8:lI46|H107230490 +107230490:lI98|H1072325C8 +1072325C8:lI101|H107234400 +107234400:lI97|H107235F58 +107235F58:lI109|N +1071F0830:Mn8:H1071F1C28,H1071F1C38,H1071F1C48,H1071F1C58,H1071F1C68,H1071F1C78,H1071F1C88,H1071F1CA0 +1071F1C28:lH1071F3EC8|N +1071F3EC8:lI110|H1071F66E8 +1071F66E8:lI101|H1071F9340 +1071F9340:lI116|H1071FC280 +1071FC280:lI46|H1071FF338 +1071FF338:lI98|H1072024E0 +1072024E0:lI101|H107205720 +107205720:lI97|H107208A08 +107208A08:lI109|N +1071F1CA0:Mn3:H1071F3F48,H1071F3F58,H1071F3F68 +1071F3F48:lH1071F6768|N +1071F6768:lI100|H1071F93C0 +1071F93C0:lI105|H1071FC300 +1071FC300:lI115|H1071FF3B8 +1071FF3B8:lI116|H107202560 +107202560:lI95|H1072057A0 +1072057A0:lI97|H107208A88 +107208A88:lI99|H10720BD38 +10720BD38:lI46|H10720EFB8 +10720EFB8:lI98|H1072122F8 +1072122F8:lI101|H107215790 +107215790:lI97|H107218E10 +107218E10:lI109|N +1071F3F68:lH1071F6788|N +1071F6788:lI101|H1071F93E0 +1071F93E0:lI114|H1071FC320 +1071FC320:lI108|H1071FF3D8 +1071FF3D8:lI95|H107202580 +107202580:lI101|H1072057C0 +1072057C0:lI114|H107208AA8 +107208AA8:lI116|H10720BD58 +10720BD58:lI115|H10720EFD8 +10720EFD8:lI95|H107212318 +107212318:lI101|H1072157B0 +1072157B0:lI114|H107218E30 +107218E30:lI114|H10721C5F0 +10721C5F0:lI111|H10721FCB0 +10721FCB0:lI114|H107223178 +107223178:lI115|H107226290 +107226290:lI46|H107229028 +107229028:lI98|H10722BA00 +10722BA00:lI101|H10722E088 +10722E088:lI97|H107230480 +107230480:lI109|N +1071F3F58:lH1071F6778|N +1071F6778:lI114|H1071F93D0 +1071F93D0:lI97|H1071FC310 +1071FC310:lI119|H1071FF3C8 +1071FF3C8:lI95|H107202570 +107202570:lI102|H1072057B0 +1072057B0:lI105|H107208A98 +107208A98:lI108|H10720BD48 +10720BD48:lI101|H10720EFC8 +10720EFC8:lI95|H107212308 +107212308:lI105|H1072157A0 +1072157A0:lI111|H107218E20 +107218E20:lI95|H10721C5E0 +10721C5E0:lI108|H10721FCA0 +10721FCA0:lI105|H107223168 +107223168:lI115|H107226280 +107226280:lI116|H107229018 +107229018:lI46|H10722B9F0 +10722B9F0:lI98|H10722E078 +10722E078:lI101|H107230470 +107230470:lI97|H1072325B8 +1072325B8:lI109|N +1071F1C88:Mn2:H1071F3F28,H1071F3F38 +1071F3F28:lH1071F6748|N +1071F6748:lI103|H1071F93A0 +1071F93A0:lI101|H1071FC2E0 +1071FC2E0:lI110|H1071FF398 +1071FF398:lI95|H107202540 +107202540:lI116|H107205780 +107205780:lI99|H107208A68 +107208A68:lI112|H10720BD18 +10720BD18:lI95|H10720EF98 +10720EF98:lI115|H1072122D8 +1072122D8:lI111|H107215770 +107215770:lI99|H107218DF0 +107218DF0:lI107|H10721C5C0 +10721C5C0:lI101|H10721FC80 +10721FC80:lI116|H107223148 +107223148:lI46|H107226260 +107226260:lI98|H107228FF8 +107228FF8:lI101|H10722B9D0 +10722B9D0:lI97|H10722E058 +10722E058:lI109|N +1071F3F38:lH1071F6758|N +1071F6758:lI100|H1071F93B0 +1071F93B0:lI105|H1071FC2F0 +1071FC2F0:lI115|H1071FF3A8 +1071FF3A8:lI107|H107202550 +107202550:lI95|H107205790 +107205790:lI108|H107208A78 +107208A78:lI111|H10720BD28 +10720BD28:lI103|H10720EFA8 +10720EFA8:lI95|H1072122E8 +1072122E8:lI115|H107215780 +107215780:lI101|H107218E00 +107218E00:lI114|H10721C5D0 +10721C5D0:lI118|H10721FC90 +10721FC90:lI101|H107223158 +107223158:lI114|H107226270 +107226270:lI46|H107229008 +107229008:lI98|H10722B9E0 +10722B9E0:lI101|H10722E068 +10722E068:lI97|H107230460 +107230460:lI109|N +1071F1C78:lH1071F3F18|N +1071F3F18:lI105|H1071F6738 +1071F6738:lI110|H1071F9390 +1071F9390:lI101|H1071FC2D0 +1071FC2D0:lI116|H1071FF388 +1071FF388:lI95|H107202530 +107202530:lI117|H107205770 +107205770:lI100|H107208A58 +107208A58:lI112|H10720BD08 +10720BD08:lI46|H10720EF88 +10720EF88:lI98|H1072122C8 +1072122C8:lI101|H107215760 +107215760:lI97|H107218DE0 +107218DE0:lI109|N +1071F1C68:lH1071F3F08|N +1071F3F08:lI97|H1071F6728 +1071F6728:lI112|H1071F9380 +1071F9380:lI112|H1071FC2C0 +1071FC2C0:lI108|H1071FF378 +1071FF378:lI105|H107202520 +107202520:lI99|H107205760 +107205760:lI97|H107208A48 +107208A48:lI116|H10720BCF8 +10720BCF8:lI105|H10720EF78 +10720EF78:lI111|H1072122B8 +1072122B8:lI110|H107215750 +107215750:lI95|H107218DD0 +107218DD0:lI115|H10721C5B0 +10721C5B0:lI116|H10721FC70 +10721FC70:lI97|H107223138 +107223138:lI114|H107226250 +107226250:lI116|H107228FE8 +107228FE8:lI101|H10722B9C0 +10722B9C0:lI114|H10722E048 +10722E048:lI46|H107230450 +107230450:lI98|H1072325A8 +1072325A8:lI101|H1072343F0 +1072343F0:lI97|H107235F48 +107235F48:lI109|N +1071F1C58:lH1071F3EF8|N +1071F3EF8:lI117|H1071F6718 +1071F6718:lI115|H1071F9370 +1071F9370:lI101|H1071FC2B0 +1071FC2B0:lI114|H1071FF368 +1071FF368:lI95|H107202510 +107202510:lI115|H107205750 +107205750:lI117|H107208A38 +107208A38:lI112|H10720BCE8 +10720BCE8:lI46|H10720EF68 +10720EF68:lI98|H1072122A8 +1072122A8:lI101|H107215740 +107215740:lI97|H107218DC0 +107218DC0:lI109|N +1071F1C48:lH1071F3EE8|N +1071F3EE8:lI100|H1071F6708 +1071F6708:lI105|H1071F9360 +1071F9360:lI115|H1071FC2A0 +1071FC2A0:lI116|H1071FF358 +1071FF358:lI95|H107202500 +107202500:lI117|H107205740 +107205740:lI116|H107208A28 +107208A28:lI105|H10720BCD8 +10720BCD8:lI108|H10720EF58 +10720EF58:lI46|H107212298 +107212298:lI98|H107215730 +107215730:lI101|H107218DB0 +107218DB0:lI97|H10721C5A0 +10721C5A0:lI109|N +1071F1C38:lH1071F3ED8|N +1071F3ED8:lI108|H1071F66F8 +1071F66F8:lI111|H1071F9350 +1071F9350:lI103|H1071FC290 +1071FC290:lI103|H1071FF348 +1071FF348:lI101|H1072024F0 +1072024F0:lI114|H107205730 +107205730:lI95|H107208A18 +107208A18:lI115|H10720BCC8 +10720BCC8:lI116|H10720EF48 +10720EF48:lI100|H107212288 +107212288:lI95|H107215720 +107215720:lI104|H107218DA0 +107218DA0:lI46|H10721C590 +10721C590:lI98|H10721FC60 +10721FC60:lI101|H107223128 +107223128:lI97|H107226240 +107226240:lI109|N +1071F0808:Mn4:H1071F1BE8,H1071F1BF8,H1071F1C08,H1071F1C18 +1071F1BE8:lH1071F3E88|N +1071F3E88:lI97|H1071F66A8 +1071F66A8:lI112|H1071F9300 +1071F9300:lI112|H1071FC240 +1071FC240:lI108|H1071FF2F8 +1071FF2F8:lI105|H1072024A0 +1072024A0:lI99|H1072056E0 +1072056E0:lI97|H1072089C8 +1072089C8:lI116|H10720BC88 +10720BC88:lI105|H10720EF08 +10720EF08:lI111|H107212248 +107212248:lI110|H1072156E0 +1072156E0:lI95|H107218D60 +107218D60:lI109|H10721C550 +10721C550:lI97|H10721FC20 +10721FC20:lI115|H1072230E8 +1072230E8:lI116|H107226200 +107226200:lI101|H107228FA8 +107228FA8:lI114|H10722B990 +10722B990:lI46|H10722E018 +10722E018:lI98|H107230440 +107230440:lI101|H107232598 +107232598:lI97|H1072343E0 +1072343E0:lI109|N +1071F1C18:lH1071F3EB8|N +1071F3EB8:lI108|H1071F66D8 +1071F66D8:lI111|H1071F9330 +1071F9330:lI103|H1071FC270 +1071FC270:lI103|H1071FF328 +1071FF328:lI101|H1072024D0 +1072024D0:lI114|H107205710 +107205710:lI95|H1072089F8 +1072089F8:lI99|H10720BCB8 +10720BCB8:lI111|H10720EF38 +10720EF38:lI110|H107212278 +107212278:lI102|H107215710 +107215710:lI105|H107218D90 +107218D90:lI103|H10721C580 +10721C580:lI46|H10721FC50 +10721FC50:lI98|H107223118 +107223118:lI101|H107226230 +107226230:lI97|H107228FD8 +107228FD8:lI109|N +1071F1C08:lH1071F3EA8|N +1071F3EA8:lI108|H1071F66C8 +1071F66C8:lI111|H1071F9320 +1071F9320:lI103|H1071FC260 +1071FC260:lI103|H1071FF318 +1071FF318:lI101|H1072024C0 +1072024C0:lI114|H107205700 +107205700:lI95|H1072089E8 +1072089E8:lI115|H10720BCA8 +10720BCA8:lI105|H10720EF28 +10720EF28:lI109|H107212268 +107212268:lI112|H107215700 +107215700:lI108|H107218D80 +107218D80:lI101|H10721C570 +10721C570:lI95|H10721FC40 +10721FC40:lI104|H107223108 +107223108:lI46|H107226220 +107226220:lI98|H107228FC8 +107228FC8:lI101|H10722B9B0 +10722B9B0:lI97|H10722E038 +10722E038:lI109|N +1071F1BF8:lH1071F3E98|N +1071F3E98:lI119|H1071F66B8 +1071F66B8:lI114|H1071F9310 +1071F9310:lI97|H1071FC250 +1071FC250:lI112|H1071FF308 +1071FF308:lI95|H1072024B0 +1072024B0:lI108|H1072056F0 +1072056F0:lI111|H1072089D8 +1072089D8:lI103|H10720BC98 +10720BC98:lI95|H10720EF18 +10720EF18:lI114|H107212258 +107212258:lI101|H1072156F0 +1072156F0:lI97|H107218D70 +107218D70:lI100|H10721C560 +10721C560:lI101|H10721FC30 +10721FC30:lI114|H1072230F8 +1072230F8:lI46|H107226210 +107226210:lI98|H107228FB8 +107228FB8:lI101|H10722B9A0 +10722B9A0:lI97|H10722E028 +10722E028:lI109|N +1071F07E0:Mn4:H1071F1BA0,H1071F1BB8,H1071F1BC8,H1071F1BD8 +1071F1BA0:Mn2:H1071F3E38,H1071F3E48 +1071F3E38:lH1071F6658|N +1071F6658:lI105|H1071F92B0 +1071F92B0:lI110|H1071FC1F0 +1071FC1F0:lI101|H1071FF2A8 +1071FF2A8:lI116|H107202450 +107202450:lI95|H107205690 +107205690:lI104|H107208978 +107208978:lI111|H10720BC38 +10720BC38:lI115|H10720EEB8 +10720EEB8:lI116|H1072121F8 +1072121F8:lI115|H107215690 +107215690:lI46|H107218D10 +107218D10:lI98|H10721C510 +10721C510:lI101|H10721FBE0 +10721FBE0:lI97|H1072230A8 +1072230A8:lI109|N +1071F3E48:lH1071F6668|N +1071F6668:lI101|H1071F92C0 +1071F92C0:lI114|H1071FC200 +1071FC200:lI116|H1071FF2B8 +1071FF2B8:lI115|H107202460 +107202460:lI95|H1072056A0 +1072056A0:lI100|H107208988 +107208988:lI101|H10720BC48 +10720BC48:lI98|H10720EEC8 +10720EEC8:lI117|H107212208 +107212208:lI103|H1072156A0 +1072156A0:lI46|H107218D20 +107218D20:lI98|H10721C520 +10721C520:lI101|H10721FBF0 +10721FBF0:lI97|H1072230B8 +1072230B8:lI109|N +1071F1BD8:lH1071F3E78|N +1071F3E78:lI108|H1071F6698 +1071F6698:lI111|H1071F92F0 +1071F92F0:lI103|H1071FC230 +1071FC230:lI103|H1071FF2E8 +1071FF2E8:lI101|H107202490 +107202490:lI114|H1072056D0 +1072056D0:lI95|H1072089B8 +1072089B8:lI102|H10720BC78 +10720BC78:lI111|H10720EEF8 +10720EEF8:lI114|H107212238 +107212238:lI109|H1072156D0 +1072156D0:lI97|H107218D50 +107218D50:lI116|H10721C540 +10721C540:lI116|H10721FC10 +10721FC10:lI101|H1072230D8 +1072230D8:lI114|H1072261F0 +1072261F0:lI46|H107228F98 +107228F98:lI98|H10722B980 +10722B980:lI101|H10722E008 +10722E008:lI97|H107230430 +107230430:lI109|N +1071F1BC8:lH1071F3E68|N +1071F3E68:lI105|H1071F6688 +1071F6688:lI110|H1071F92E0 +1071F92E0:lI101|H1071FC220 +1071FC220:lI116|H1071FF2D8 +1071FF2D8:lI95|H107202480 +107202480:lI103|H1072056C0 +1072056C0:lI101|H1072089A8 +1072089A8:lI116|H10720BC68 +10720BC68:lI104|H10720EEE8 +10720EEE8:lI111|H107212228 +107212228:lI115|H1072156C0 +1072156C0:lI116|H107218D40 +107218D40:lI95|H10721C530 +10721C530:lI110|H10721FC00 +10721FC00:lI97|H1072230C8 +1072230C8:lI116|H1072261E0 +1072261E0:lI105|H107228F88 +107228F88:lI118|H10722B970 +10722B970:lI101|H10722DFF8 +10722DFF8:lI46|H107230420 +107230420:lI98|H107232588 +107232588:lI101|H1072343D0 +1072343D0:lI97|H107235F38 +107235F38:lI109|N +1071F1BB8:lH1071F3E58|N +1071F3E58:lI105|H1071F6678 +1071F6678:lI110|H1071F92D0 +1071F92D0:lI101|H1071FC210 +1071FC210:lI116|H1071FF2C8 +1071FF2C8:lI95|H107202470 +107202470:lI116|H1072056B0 +1072056B0:lI99|H107208998 +107208998:lI112|H10720BC58 +10720BC58:lI46|H10720EED8 +10720EED8:lI98|H107212218 +107212218:lI101|H1072156B0 +1072156B0:lI97|H107218D30 +107218D30:lI109|N +1071F07B0:Mn5:H1071F1B50,H1071F1B60,H1071F1B70,H1071F1B80,H1071F1B90 +1071F1B50:lH1071F3DE8|N +1071F3DE8:lI114|H1071F6608 +1071F6608:lI97|H1071F9260 +1071F9260:lI119|H1071FC1A0 +1071FC1A0:lI95|H1071FF258 +1071FF258:lI102|H107202400 +107202400:lI105|H107205640 +107205640:lI108|H107208928 +107208928:lI101|H10720BBE8 +10720BBE8:lI95|H10720EE78 +10720EE78:lI105|H1072121B8 +1072121B8:lI111|H107215650 +107215650:lI95|H107218CD0 +107218CD0:lI100|H10721C4E0 +10721C4E0:lI101|H10721FBB0 +10721FBB0:lI108|H107223078 +107223078:lI97|H1072261C0 +1072261C0:lI121|H107228F68 +107228F68:lI101|H10722B960 +10722B960:lI100|H10722DFE8 +10722DFE8:lI46|H107230410 +107230410:lI98|H107232578 +107232578:lI101|H1072343C0 +1072343C0:lI97|H107235F28 +107235F28:lI109|N +1071F1B90:lH1071F3E28|N +1071F3E28:lI103|H1071F6648 +1071F6648:lI114|H1071F92A0 +1071F92A0:lI111|H1071FC1E0 +1071FC1E0:lI117|H1071FF298 +1071FF298:lI112|H107202440 +107202440:lI95|H107205680 +107205680:lI104|H107208968 +107208968:lI105|H10720BC28 +10720BC28:lI115|H10720EEA8 +10720EEA8:lI116|H1072121E8 +1072121E8:lI111|H107215680 +107215680:lI114|H107218D00 +107218D00:lI121|H10721C500 +10721C500:lI46|H10721FBD0 +10721FBD0:lI98|H107223098 +107223098:lI101|H1072261D0 +1072261D0:lI97|H107228F78 +107228F78:lI109|N +1071F1B80:lH1071F3E18|N +1071F3E18:lI117|H1071F6638 +1071F6638:lI115|H1071F9290 +1071F9290:lI101|H1071FC1D0 +1071FC1D0:lI114|H1071FF288 +1071FF288:lI95|H107202430 +107202430:lI100|H107205670 +107205670:lI114|H107208958 +107208958:lI118|H10720BC18 +10720BC18:lI46|H10720EE98 +10720EE98:lI98|H1072121D8 +1072121D8:lI101|H107215670 +107215670:lI97|H107218CF0 +107218CF0:lI109|N +1071F1B70:lH1071F3E08|N +1071F3E08:lI105|H1071F6628 +1071F6628:lI110|H1071F9280 +1071F9280:lI101|H1071FC1C0 +1071FC1C0:lI116|H1071FF278 +1071FF278:lI95|H107202420 +107202420:lI99|H107205660 +107205660:lI111|H107208948 +107208948:lI110|H10720BC08 +10720BC08:lI102|H10720EE88 +10720EE88:lI105|H1072121C8 +1072121C8:lI103|H107215660 +107215660:lI46|H107218CE0 +107218CE0:lI98|H10721C4F0 +10721C4F0:lI101|H10721FBC0 +10721FBC0:lI97|H107223088 +107223088:lI109|N +1071F1B60:lH1071F3DF8|N +1071F3DF8:lI102|H1071F6618 +1071F6618:lI105|H1071F9270 +1071F9270:lI108|H1071FC1B0 +1071FC1B0:lI101|H1071FF268 +1071FF268:lI46|H107202410 +107202410:lI98|H107205650 +107205650:lI101|H107208938 +107208938:lI97|H10720BBF8 +10720BBF8:lI109|N +1071F0778:Mn6:H1071F1AF0,H1071F1B00,H1071F1B10,H1071F1B20,H1071F1B30,H1071F1B40 +1071F1AF0:lH1071F3D88|N +1071F3D88:lI101|H1071F65A8 +1071F65A8:lI114|H1071F9200 +1071F9200:lI112|H1071FC140 +1071FC140:lI99|H1071FF1F8 +1071FF1F8:lI46|H1072023A0 +1072023A0:lI98|H1072055E0 +1072055E0:lI101|H1072088C8 +1072088C8:lI97|H10720BB88 +10720BB88:lI109|N +1071F1B40:lH1071F3DD8|N +1071F3DD8:lI102|H1071F65F8 +1071F65F8:lI105|H1071F9250 +1071F9250:lI108|H1071FC190 +1071FC190:lI101|H1071FF248 +1071FF248:lI95|H1072023F0 +1072023F0:lI105|H107205630 +107205630:lI111|H107208918 +107208918:lI95|H10720BBD8 +10720BBD8:lI115|H10720EE68 +10720EE68:lI101|H1072121A8 +1072121A8:lI114|H107215640 +107215640:lI118|H107218CC0 +107218CC0:lI101|H10721C4D0 +10721C4D0:lI114|H10721FBA0 +10721FBA0:lI46|H107223068 +107223068:lI98|H1072261B0 +1072261B0:lI101|H107228F58 +107228F58:lI97|H10722B950 +10722B950:lI109|N +1071F1B30:lH1071F3DC8|N +1071F3DC8:lI105|H1071F65E8 +1071F65E8:lI110|H1071F9240 +1071F9240:lI101|H1071FC180 +1071FC180:lI116|H1071FF238 +1071FF238:lI54|H1072023E0 +1072023E0:lI95|H107205620 +107205620:lI117|H107208908 +107208908:lI100|H10720BBC8 +10720BBC8:lI112|H10720EE58 +10720EE58:lI46|H107212198 +107212198:lI98|H107215630 +107215630:lI101|H107218CB0 +107218CB0:lI97|H10721C4C0 +10721C4C0:lI109|N +1071F1B20:lH1071F3DB8|N +1071F3DB8:lI103|H1071F65D8 +1071F65D8:lI108|H1071F9230 +1071F9230:lI111|H1071FC170 +1071FC170:lI98|H1071FF228 +1071FF228:lI97|H1072023D0 +1072023D0:lI108|H107205610 +107205610:lI46|H1072088F8 +1072088F8:lI98|H10720BBB8 +10720BBB8:lI101|H10720EE48 +10720EE48:lI97|H107212188 +107212188:lI109|N +1071F1B10:lH1071F3DA8|N +1071F3DA8:lI114|H1071F65C8 +1071F65C8:lI97|H1071F9220 +1071F9220:lI119|H1071FC160 +1071FC160:lI95|H1071FF218 +1071FF218:lI102|H1072023C0 +1072023C0:lI105|H107205600 +107205600:lI108|H1072088E8 +1072088E8:lI101|H10720BBA8 +10720BBA8:lI95|H10720EE38 +10720EE38:lI105|H107212178 +107212178:lI111|H107215620 +107215620:lI95|H107218CA0 +107218CA0:lI100|H10721C4B0 +10721C4B0:lI101|H10721FB90 +10721FB90:lI102|H107223058 +107223058:lI108|H1072261A0 +1072261A0:lI97|H107228F48 +107228F48:lI116|H10722B940 +10722B940:lI101|H10722DFD8 +10722DFD8:lI46|H107230400 +107230400:lI98|H107232568 +107232568:lI101|H1072343B0 +1072343B0:lI97|H107235F18 +107235F18:lI109|N +1071F1B00:lH1071F3D98|N +1071F3D98:lI103|H1071F65B8 +1071F65B8:lI108|H1071F9210 +1071F9210:lI111|H1071FC150 +1071FC150:lI98|H1071FF208 +1071FF208:lI97|H1072023B0 +1072023B0:lI108|H1072055F0 +1072055F0:lI95|H1072088D8 +1072088D8:lI103|H10720BB98 +10720BB98:lI114|H10720EE28 +10720EE28:lI111|H107212168 +107212168:lI117|H107215610 +107215610:lI112|H107218C90 +107218C90:lI46|H10721C4A0 +10721C4A0:lI98|H10721FB80 +10721FB80:lI101|H107223048 +107223048:lI97|H107226190 +107226190:lI109|N +1071F0740:Mn6:H1071F1A88,H1071F1A98,H1071F1AB0,H1071F1AC0,H1071F1AD0,H1071F1AE0 +1071F1A88:lH1071F3D18|N +1071F3D18:lI110|H1071F6530 +1071F6530:lI101|H1071F9180 +1071F9180:lI116|H1071FC0C0 +1071FC0C0:lI95|H1071FF178 +1071FF178:lI107|H107202320 +107202320:lI101|H107205560 +107205560:lI114|H107208858 +107208858:lI110|H10720BB18 +10720BB18:lI101|H10720EDB8 +10720EDB8:lI108|H1072120F8 +1072120F8:lI46|H1072155B0 +1072155B0:lI98|H107218C30 +107218C30:lI101|H10721C440 +10721C440:lI97|H10721FB20 +10721FB20:lI109|N +1071F1AE0:lH1071F3D78|N +1071F3D78:lI101|H1071F6598 +1071F6598:lI114|H1071F91F0 +1071F91F0:lI114|H1071FC130 +1071FC130:lI111|H1071FF1E8 +1071FF1E8:lI114|H107202390 +107202390:lI95|H1072055D0 +1072055D0:lI104|H1072088B8 +1072088B8:lI97|H10720BB78 +10720BB78:lI110|H10720EE18 +10720EE18:lI100|H107212158 +107212158:lI108|H107215600 +107215600:lI101|H107218C80 +107218C80:lI114|H10721C490 +10721C490:lI46|H10721FB70 +10721FB70:lI98|H107223038 +107223038:lI101|H107226180 +107226180:lI97|H107228F38 +107228F38:lI109|N +1071F1AD0:lH1071F3D68|N +1071F3D68:lI111|H1071F6588 +1071F6588:lI115|H1071F91E0 +1071F91E0:lI46|H1071FC120 +1071FC120:lI98|H1071FF1D8 +1071FF1D8:lI101|H107202380 +107202380:lI97|H1072055C0 +1072055C0:lI109|N +1071F1AC0:lH1071F3D58|N +1071F3D58:lI114|H1071F6578 +1071F6578:lI97|H1071F91D0 +1071F91D0:lI119|H1071FC110 +1071FC110:lI95|H1071FF1C8 +1071FF1C8:lI102|H107202370 +107202370:lI105|H1072055B0 +1072055B0:lI108|H1072088A8 +1072088A8:lI101|H10720BB68 +10720BB68:lI95|H10720EE08 +10720EE08:lI105|H107212148 +107212148:lI111|H1072155F0 +1072155F0:lI95|H107218C70 +107218C70:lI99|H10721C480 +10721C480:lI111|H10721FB60 +10721FB60:lI109|H107223028 +107223028:lI112|H107226170 +107226170:lI114|H107228F28 +107228F28:lI101|H10722B930 +10722B930:lI115|H10722DFC8 +10722DFC8:lI115|H1072303F0 +1072303F0:lI101|H107232558 +107232558:lI100|H1072343A0 +1072343A0:lI46|H107235F08 +107235F08:lI98|H107237800 +107237800:lI101|H107238E88 +107238E88:lI97|H10723A360 +10723A360:lI109|N +1071F1AB0:lH1071F3D48|N +1071F3D48:lI108|H1071F6568 +1071F6568:lI111|H1071F91C0 +1071F91C0:lI103|H1071FC100 +1071FC100:lI103|H1071FF1B8 +1071FF1B8:lI101|H107202360 +107202360:lI114|H1072055A0 +1072055A0:lI95|H107208898 +107208898:lI100|H10720BB58 +10720BB58:lI105|H10720EDF8 +10720EDF8:lI115|H107212138 +107212138:lI107|H1072155E0 +1072155E0:lI95|H107218C60 +107218C60:lI108|H10721C470 +10721C470:lI111|H10721FB50 +10721FB50:lI103|H107223018 +107223018:lI95|H107226160 +107226160:lI104|H107228F18 +107228F18:lI46|H10722B920 +10722B920:lI98|H10722DFB8 +10722DFB8:lI101|H1072303E0 +1072303E0:lI97|H107232548 +107232548:lI109|N +1071F1A98:Mn2:H1071F3D28,H1071F3D38 +1071F3D28:Mn1:H1071F6540 +1071F6540:Mn2:H1071F9190,H1071F91A0 +1071F9190:lH1071FC0D0|N +1071FC0D0:lI108|H1071FF188 +1071FF188:lI111|H107202330 +107202330:lI103|H107205570 +107205570:lI103|H107208868 +107208868:lI101|H10720BB28 +10720BB28:lI114|H10720EDC8 +10720EDC8:lI95|H107212108 +107212108:lI115|H1072155C0 +1072155C0:lI117|H107218C40 +107218C40:lI112|H10721C450 +10721C450:lI46|H10721FB30 +10721FB30:lI98|H107222FF8 +107222FF8:lI101|H107226140 +107226140:lI97|H107228EF8 +107228EF8:lI109|N +1071F91A0:lH1071FC0E0|N +1071FC0E0:lI112|H1071FF198 +1071FF198:lI103|H107202340 +107202340:lI50|H107205580 +107205580:lI46|H107208878 +107208878:lI98|H10720BB38 +10720BB38:lI101|H10720EDD8 +10720EDD8:lI97|H107212118 +107212118:lI109|N +1071F3D38:lH1071F6558|N +1071F6558:lI97|H1071F91B0 +1071F91B0:lI112|H1071FC0F0 +1071FC0F0:lI112|H1071FF1A8 +1071FF1A8:lI108|H107202350 +107202350:lI105|H107205590 +107205590:lI99|H107208888 +107208888:lI97|H10720BB48 +10720BB48:lI116|H10720EDE8 +10720EDE8:lI105|H107212128 +107212128:lI111|H1072155D0 +1072155D0:lI110|H107218C50 +107218C50:lI95|H10721C460 +10721C460:lI99|H10721FB40 +10721FB40:lI111|H107223008 +107223008:lI110|H107226150 +107226150:lI116|H107228F08 +107228F08:lI114|H10722B910 +10722B910:lI111|H10722DFA8 +10722DFA8:lI108|H1072303D0 +1072303D0:lI108|H107232538 +107232538:lI101|H107234390 +107234390:lI114|H107235EF8 +107235EF8:lI46|H1072377F0 +1072377F0:lI98|H107238E78 +107238E78:lI101|H10723A350 +10723A350:lI97|H10723B6A0 +10723B6A0:lI109|N +1071F0718:Mn4:H1071F1A48,H1071F1A58,H1071F1A68,H1071F1A78 +1071F1A48:lH1071F3CD8|N +1071F3CD8:lI108|H1071F64F0 +1071F64F0:lI111|H1071F9140 +1071F9140:lI103|H1071FC080 +1071FC080:lI103|H1071FF138 +1071FF138:lI101|H1072022E0 +1072022E0:lI114|H107205520 +107205520:lI95|H107208818 +107208818:lI98|H10720BAD8 +10720BAD8:lI97|H10720ED88 +10720ED88:lI99|H1072120D8 +1072120D8:lI107|H107215590 +107215590:lI101|H107218C10 +107218C10:lI110|H10721C420 +10721C420:lI100|H10721FB00 +10721FB00:lI46|H107222FD8 +107222FD8:lI98|H107226120 +107226120:lI101|H107228ED8 +107228ED8:lI97|H10722B8F0 +10722B8F0:lI109|N +1071F1A78:lH1071F3D08|N +1071F3D08:lI101|H1071F6520 +1071F6520:lI114|H1071F9170 +1071F9170:lI108|H1071FC0B0 +1071FC0B0:lI95|H1071FF168 +1071FF168:lI107|H107202310 +107202310:lI101|H107205550 +107205550:lI114|H107208848 +107208848:lI110|H10720BB08 +10720BB08:lI101|H10720EDA8 +10720EDA8:lI108|H1072120E8 +1072120E8:lI95|H1072155A0 +1072155A0:lI101|H107218C20 +107218C20:lI114|H10721C430 +10721C430:lI114|H10721FB10 +10721FB10:lI111|H107222FE8 +107222FE8:lI114|H107226130 +107226130:lI115|H107228EE8 +107228EE8:lI46|H10722B900 +10722B900:lI98|H10722DF98 +10722DF98:lI101|H1072303C0 +1072303C0:lI97|H107232528 +107232528:lI109|N +1071F1A68:lH1071F3CF8|N +1071F3CF8:lI107|H1071F6510 +1071F6510:lI101|H1071F9160 +1071F9160:lI114|H1071FC0A0 +1071FC0A0:lI110|H1071FF158 +1071FF158:lI101|H107202300 +107202300:lI108|H107205540 +107205540:lI46|H107208838 +107208838:lI97|H10720BAF8 +10720BAF8:lI112|H10720ED98 +10720ED98:lI112|N +1071F1A58:lH1071F3CE8|N +1071F3CE8:lI105|H1071F6500 +1071F6500:lI110|H1071F9150 +1071F9150:lI101|H1071FC090 +1071FC090:lI116|H1071FF148 +1071FF148:lI46|H1072022F0 +1072022F0:lI98|H107205530 +107205530:lI101|H107208828 +107208828:lI97|H10720BAE8 +10720BAE8:lI109|N +1071F06C8:Mn9:H1071F19A8,H1071F19B8,H1071F19C8,H1071F19D8,H1071F19E8,H1071F1A00,H1071F1A10,H1071F1A28,H1071F1A38 +1071F19A8:lH1071F3C28|N +1071F3C28:lI114|H1071F6440 +1071F6440:lI112|H1071F9090 +1071F9090:lI99|H1071FBFD0 +1071FBFD0:lI46|H1071FF088 +1071FF088:lI98|H107202230 +107202230:lI101|H107205470 +107205470:lI97|H107208768 +107208768:lI109|N +1071F1A38:lH1071F3CC8|N +1071F3CC8:lI105|H1071F64E0 +1071F64E0:lI110|H1071F9130 +1071F9130:lI101|H1071FC070 +1071FC070:lI116|H1071FF128 +1071FF128:lI95|H1072022D0 +1072022D0:lI115|H107205510 +107205510:lI99|H107208808 +107208808:lI116|H10720BAC8 +10720BAC8:lI112|H10720ED78 +10720ED78:lI46|H1072120C8 +1072120C8:lI98|H107215580 +107215580:lI101|H107218C00 +107218C00:lI97|H10721C410 +10721C410:lI109|N +1071F1A28:lH1071F3CB8|N +1071F3CB8:lI115|H1071F64D0 +1071F64D0:lI116|H1071F9120 +1071F9120:lI97|H1071FC060 +1071FC060:lI110|H1071FF118 +1071FF118:lI100|H1072022C0 +1072022C0:lI97|H107205500 +107205500:lI114|H1072087F8 +1072087F8:lI100|H10720BAB8 +10720BAB8:lI95|H10720ED68 +10720ED68:lI101|H1072120B8 +1072120B8:lI114|H107215570 +107215570:lI114|H107218BF0 +107218BF0:lI111|H10721C400 +10721C400:lI114|H10721FAF0 +10721FAF0:lI46|H107222FC8 +107222FC8:lI98|H107226110 +107226110:lI101|H107228EC8 +107228EC8:lI97|H10722B8E0 +10722B8E0:lI109|N +1071F1A10:Mn2:H1071F3C98,H1071F3CA8 +1071F3C98:lH1071F64B0|N +1071F64B0:lI108|H1071F9100 +1071F9100:lI111|H1071FC040 +1071FC040:lI99|H1071FF0F8 +1071FF0F8:lI97|H1072022A0 +1072022A0:lI108|H1072054E0 +1072054E0:lI95|H1072087D8 +1072087D8:lI116|H10720BA98 +10720BA98:lI99|H10720ED48 +10720ED48:lI112|H107212098 +107212098:lI46|H107215550 +107215550:lI98|H107218BD0 +107218BD0:lI101|H10721C3E0 +10721C3E0:lI97|H10721FAD0 +10721FAD0:lI109|N +1071F3CA8:lH1071F64C0|N +1071F64C0:lI107|H1071F9110 +1071F9110:lI101|H1071FC050 +1071FC050:lI114|H1071FF108 +1071FF108:lI110|H1072022B0 +1072022B0:lI101|H1072054F0 +1072054F0:lI108|H1072087E8 +1072087E8:lI95|H10720BAA8 +10720BAA8:lI99|H10720ED58 +10720ED58:lI111|H1072120A8 +1072120A8:lI110|H107215560 +107215560:lI102|H107218BE0 +107218BE0:lI105|H10721C3F0 +10721C3F0:lI103|H10721FAE0 +10721FAE0:lI46|H107222FB8 +107222FB8:lI98|H107226100 +107226100:lI101|H107228EB8 +107228EB8:lI97|H10722B8D0 +10722B8D0:lI109|N +1071F1A00:lH1071F3C88|N +1071F3C88:lI99|H1071F64A0 +1071F64A0:lI111|H1071F90F0 +1071F90F0:lI100|H1071FC030 +1071FC030:lI101|H1071FF0E8 +1071FF0E8:lI46|H107202290 +107202290:lI98|H1072054D0 +1072054D0:lI101|H1072087C8 +1072087C8:lI97|H10720BA88 +10720BA88:lI109|N +1071F19E8:Mn2:H1071F3C68,H1071F3C78 +1071F3C68:lH1071F6480|N +1071F6480:lI105|H1071F90D0 +1071F90D0:lI110|H1071FC010 +1071FC010:lI101|H1071FF0C8 +1071FF0C8:lI116|H107202270 +107202270:lI95|H1072054B0 +1072054B0:lI100|H1072087A8 +1072087A8:lI110|H10720BA68 +10720BA68:lI115|H10720ED28 +10720ED28:lI46|H107212078 +107212078:lI98|H107215530 +107215530:lI101|H107218BB0 +107218BB0:lI97|H10721C3C0 +10721C3C0:lI109|N +1071F3C78:lH1071F6490|N +1071F6490:lI99|H1071F90E0 +1071F90E0:lI111|H1071FC020 +1071FC020:lI100|H1071FF0D8 +1071FF0D8:lI101|H107202280 +107202280:lI95|H1072054C0 +1072054C0:lI115|H1072087B8 +1072087B8:lI101|H10720BA78 +10720BA78:lI114|H10720ED38 +10720ED38:lI118|H107212088 +107212088:lI101|H107215540 +107215540:lI114|H107218BC0 +107218BC0:lI46|H10721C3D0 +10721C3D0:lI98|H10721FAC0 +10721FAC0:lI101|H107222FA8 +107222FA8:lI97|H1072260F0 +1072260F0:lI109|N +1071F19D8:lH1071F3C58|N +1071F3C58:lI108|H1071F6470 +1071F6470:lI111|H1071F90C0 +1071F90C0:lI103|H1071FC000 +1071FC000:lI103|H1071FF0B8 +1071FF0B8:lI101|H107202260 +107202260:lI114|H1072054A0 +1072054A0:lI95|H107208798 +107208798:lI104|H10720BA58 +10720BA58:lI97|H10720ED18 +10720ED18:lI110|H107212068 +107212068:lI100|H107215520 +107215520:lI108|H107218BA0 +107218BA0:lI101|H10721C3B0 +10721C3B0:lI114|H10721FAB0 +10721FAB0:lI95|H107222F98 +107222F98:lI119|H1072260E0 +1072260E0:lI97|H107228EA8 +107228EA8:lI116|H10722B8C0 +10722B8C0:lI99|H10722DF88 +10722DF88:lI104|H1072303B0 +1072303B0:lI101|H107232518 +107232518:lI114|H107234380 +107234380:lI46|H107235EE8 +107235EE8:lI98|H1072377E0 +1072377E0:lI101|H107238E68 +107238E68:lI97|H10723A340 +10723A340:lI109|N +1071F19C8:lH1071F3C48|N +1071F3C48:lI105|H1071F6460 +1071F6460:lI110|H1071F90B0 +1071F90B0:lI101|H1071FBFF0 +1071FBFF0:lI116|H1071FF0A8 +1071FF0A8:lI95|H107202250 +107202250:lI116|H107205490 +107205490:lI99|H107208788 +107208788:lI112|H10720BA48 +10720BA48:lI95|H10720ED08 +10720ED08:lI100|H107212058 +107212058:lI105|H107215510 +107215510:lI115|H107218B90 +107218B90:lI116|H10721C3A0 +10721C3A0:lI46|H10721FAA0 +10721FAA0:lI98|H107222F88 +107222F88:lI101|H1072260D0 +1072260D0:lI97|H107228E98 +107228E98:lI109|N +1071F19B8:lH1071F3C38|N +1071F3C38:lI105|H1071F6450 +1071F6450:lI110|H1071F90A0 +1071F90A0:lI101|H1071FBFE0 +1071FBFE0:lI116|H1071FF098 +1071FF098:lI54|H107202240 +107202240:lI95|H107205480 +107205480:lI116|H107208778 +107208778:lI99|H10720BA38 +10720BA38:lI112|H10720ECF8 +10720ECF8:lI95|H107212048 +107212048:lI100|H107215500 +107215500:lI105|H107218B80 +107218B80:lI115|H10721C390 +10721C390:lI116|H10721FA90 +10721FA90:lI46|H107222F78 +107222F78:lI98|H1072260C0 +1072260C0:lI101|H107228E88 +107228E88:lI97|H10722B8B0 +10722B8B0:lI109|N +1071F0698:Mn5:H1071F1950,H1071F1968,H1071F1978,H1071F1988,H1071F1998 +1071F1950:Mn2:H1071F3BC8,H1071F3BD8 +1071F3BC8:lH1071F63E0|N +1071F63E0:lI110|H1071F9030 +1071F9030:lI101|H1071FBF70 +1071FBF70:lI116|H1071FF028 +1071FF028:lI95|H1072021D0 +1072021D0:lI97|H107205410 +107205410:lI100|H107208708 +107208708:lI109|H10720B9D8 +10720B9D8:lI46|H10720EC98 +10720EC98:lI98|H107211FE8 +107211FE8:lI101|H1072154B0 +1072154B0:lI97|H107218B30 +107218B30:lI109|N +1071F3BD8:lH1071F63F0|N +1071F63F0:lI108|H1071F9040 +1071F9040:lI111|H1071FBF80 +1071FBF80:lI103|H1071FF038 +1071FF038:lI103|H1072021E0 +1072021E0:lI101|H107205420 +107205420:lI114|H107208718 +107208718:lI95|H10720B9E8 +10720B9E8:lI112|H10720ECA8 +10720ECA8:lI114|H107211FF8 +107211FF8:lI111|H1072154C0 +1072154C0:lI120|H107218B40 +107218B40:lI121|H10721C350 +10721C350:lI46|H10721FA50 +10721FA50:lI98|H107222F48 +107222F48:lI101|H107226090 +107226090:lI97|H107228E68 +107228E68:lI109|N +1071F1998:lH1071F3C18|N +1071F3C18:lI108|H1071F6430 +1071F6430:lI111|H1071F9080 +1071F9080:lI103|H1071FBFC0 +1071FBFC0:lI103|H1071FF078 +1071FF078:lI101|H107202220 +107202220:lI114|H107205460 +107205460:lI95|H107208758 +107208758:lI111|H10720BA28 +10720BA28:lI108|H10720ECE8 +10720ECE8:lI112|H107212038 +107212038:lI46|H1072154F0 +1072154F0:lI98|H107218B70 +107218B70:lI101|H10721C380 +10721C380:lI97|H10721FA80 +10721FA80:lI109|N +1071F1988:lH1071F3C08|N +1071F3C08:lI101|H1071F6420 +1071F6420:lI114|H1071F9070 +1071F9070:lI108|H1071FBFB0 +1071FBFB0:lI95|H1071FF068 +1071FF068:lI100|H107202210 +107202210:lI105|H107205450 +107205450:lI115|H107208748 +107208748:lI116|H10720BA18 +10720BA18:lI114|H10720ECD8 +10720ECD8:lI105|H107212028 +107212028:lI98|H1072154E0 +1072154E0:lI117|H107218B60 +107218B60:lI116|H10721C370 +10721C370:lI105|H10721FA70 +10721FA70:lI111|H107222F68 +107222F68:lI110|H1072260B0 +1072260B0:lI46|H107228E78 +107228E78:lI98|H10722B8A0 +10722B8A0:lI101|H10722DF78 +10722DF78:lI97|H1072303A0 +1072303A0:lI109|N +1071F1978:lH1071F3BF8|N +1071F3BF8:lI107|H1071F6410 +1071F6410:lI101|H1071F9060 +1071F9060:lI114|H1071FBFA0 +1071FBFA0:lI110|H1071FF058 +1071FF058:lI101|H107202200 +107202200:lI108|H107205440 +107205440:lI46|H107208738 +107208738:lI98|H10720BA08 +10720BA08:lI101|H10720ECC8 +10720ECC8:lI97|H107212018 +107212018:lI109|N +1071F1968:lH1071F3BE8|N +1071F3BE8:lI101|H1071F6400 +1071F6400:lI114|H1071F9050 +1071F9050:lI114|H1071FBF90 +1071FBF90:lI111|H1071FF048 +1071FF048:lI114|H1072021F0 +1072021F0:lI95|H107205430 +107205430:lI108|H107208728 +107208728:lI111|H10720B9F8 +10720B9F8:lI103|H10720ECB8 +10720ECB8:lI103|H107212008 +107212008:lI101|H1072154D0 +1072154D0:lI114|H107218B50 +107218B50:lI46|H10721C360 +10721C360:lI98|H10721FA60 +10721FA60:lI101|H107222F58 +107222F58:lI97|H1072260A0 +1072260A0:lI109|N +1071F0088:lI47|H1071F0648 +1071F0648:lI111|H1071F18D0 +1071F18D0:lI112|H1071F3B48 +1071F3B48:lI116|H1071F6360 +1071F6360:lI47|H1071F8FB0 +1071F8FB0:lI104|H1071FBEF0 +1071FBEF0:lI111|H1071FEFA8 +1071FEFA8:lI109|H107202150 +107202150:lI101|H107205390 +107205390:lI98|H107208688 +107208688:lI114|H10720B958 +10720B958:lI101|H10720EC18 +10720EC18:lI119|H107211F78 +107211F78:lI47|H107215450 +107215450:lI67|H107218AE0 +107218AE0:lI101|H10721C310 +10721C310:lI108|H10721FA10 +10721FA10:lI108|H107222F08 +107222F08:lI97|H107226070 +107226070:lI114|H107228E58 +107228E58:lI47|H10722B890 +10722B890:lI101|H10722DF68 +10722DF68:lI114|H107230390 +107230390:lI108|H107232508 +107232508:lI97|H107234370 +107234370:lI110|H107235ED8 +107235ED8:lI103|H1072377D0 +1072377D0:lI47|H107238E58 +107238E58:lI50|H10723A330 +10723A330:lI54|H10723B690 +10723B690:lI46|H10723C770 +10723C770:lI48|H10723D630 +10723D630:lI46|H10723E3B0 +10723E3B0:lI50|H10723EFC0 +10723EFC0:lI47|H10723FA90 +10723FA90:lI108|H1072403E0 +1072403E0:lI105|H107240C60 +107240C60:lI98|H1072413F0 +1072413F0:lI47|H107241B20 +107241B20:lI101|H1072421F0 +1072421F0:lI114|H107242860 +107242860:lI108|H107242E60 +107242E60:lI97|H1072433D0 +1072433D0:lI110|H107243910 +107243910:lI103|H107243E00 +107243E00:lI47|H1072442F0 +1072442F0:lI108|H1072447A0 +1072447A0:lI105|H107244C10 +107244C10:lI98|H107245070 +107245070:lI47|H1072454C0 +1072454C0:lI107|H1072458C0 +1072458C0:lI101|H107245C80 +107245C80:lI114|H107246010 +107246010:lI110|H1072463A0 +1072463A0:lI101|H107246730 +107246730:lI108|H107246AC0 +107246AC0:lI45|H107246E00 +107246E00:lI57|H107247120 +107247120:lI46|H107247440 +107247440:lI48|H107247750 +107247750:lI46|H107247A50 +107247A50:lI50|H107247D40 +107247D40:lI47|H107248020 +107248020:lI101|H1072482E0 +1072482E0:lI98|H1072485A0 +1072485A0:lI105|H107248850 +107248850:lI110|N +106600960:lH106600990|H10724AE50 +106600990:t2:H1071F0140,H1071F0150 +1071F0150:Mh5C:10:H1071F09A8,H1071F09C8,H1071F0A08,H1071F0A28,H1071F0A38,H1071F0A68,H1071F0A98,H1071F0AC8,H1071F0AF0,H1071F0B30,H1071F0B58,H1071F0B88,H1071F0BF0,H1071F0C28,H1071F0C40,H1071F0C70 +1071F09A8:Mn3:H1071F1ED0,H1071F1EE0,H1071F1EF0 +1071F1ED0:lH1071F41B8|N +1071F41B8:lI103|H1071F69D8 +1071F69D8:lI101|H1071F9630 +1071F9630:lI110|H1071FC570 +1071FC570:lI95|H1071FF628 +1071FF628:lI101|H1072027D0 +1072027D0:lI118|H107205A10 +107205A10:lI101|H107208CE8 +107208CE8:lI110|H10720BF98 +10720BF98:lI116|H10720F218 +10720F218:lI46|H107212538 +107212538:lI98|H1072159C0 +1072159C0:lI101|H107219030 +107219030:lI97|H10721C790 +10721C790:lI109|N +1071F1EF0:lH1071F41D8|N +1071F41D8:lI101|H1071F69F8 +1071F69F8:lI100|H1071F9650 +1071F9650:lI108|H1071FC590 +1071FC590:lI105|H1071FF648 +1071FF648:lI110|H1072027F0 +1072027F0:lI95|H107205A30 +107205A30:lI116|H107208D08 +107208D08:lI121|H10720BFB8 +10720BFB8:lI112|H10720F238 +10720F238:lI101|H107212558 +107212558:lI95|H1072159E0 +1072159E0:lI115|H107219040 +107219040:lI117|H10721C7A0 +10721C7A0:lI103|H10721FE10 +10721FE10:lI103|H107223298 +107223298:lI101|H107226380 +107226380:lI115|H107229118 +107229118:lI116|H10722BAE0 +10722BAE0:lI105|H10722E148 +10722E148:lI111|H107230500 +107230500:lI110|H107232628 +107232628:lI46|H107234460 +107234460:lI98|H107235FA8 +107235FA8:lI101|H107237840 +107237840:lI97|H107238EC8 +107238EC8:lI109|N +1071F1EE0:lH1071F41C8|N +1071F41C8:lI100|H1071F69E8 +1071F69E8:lI105|H1071F9640 +1071F9640:lI103|H1071FC580 +1071FC580:lI114|H1071FF638 +1071FF638:lI97|H1072027E0 +1072027E0:lI112|H107205A20 +107205A20:lI104|H107208CF8 +107208CF8:lI46|H10720BFA8 +10720BFA8:lI98|H10720F228 +10720F228:lI101|H107212548 +107212548:lI97|H1072159D0 +1072159D0:lI109|N +1071F0C70:Mn6:H1071F23C8,H1071F23D8,H1071F23E8,H1071F23F8,H1071F2408,H1071F2418 +1071F23C8:lH1071F4710|N +1071F4710:lI117|H1071F6F38 +1071F6F38:lI110|H1071F9B90 +1071F9B90:lI105|H1071FCAD0 +1071FCAD0:lI99|H1071FFB88 +1071FFB88:lI111|H107202D30 +107202D30:lI100|H107205F60 +107205F60:lI101|H107209218 +107209218:lI46|H10720C478 +10720C478:lI98|H10720F698 +10720F698:lI101|H107212948 +107212948:lI97|H107215D20 +107215D20:lI109|N +1071F2418:lH1071F4760|N +1071F4760:lI98|H1071F6F88 +1071F6F88:lI105|H1071F9BE0 +1071F9BE0:lI110|H1071FCB20 +1071FCB20:lI97|H1071FFBD8 +1071FFBD8:lI114|H107202D80 +107202D80:lI121|H107205FB0 +107205FB0:lI46|H107209268 +107209268:lI98|H10720C4C8 +10720C4C8:lI101|H10720F6E8 +10720F6E8:lI97|H107212998 +107212998:lI109|N +1071F2408:lH1071F4750|N +1071F4750:lI101|H1071F6F78 +1071F6F78:lI118|H1071F9BD0 +1071F9BD0:lI97|H1071FCB10 +1071FCB10:lI108|H1071FFBC8 +1071FFBC8:lI95|H107202D70 +107202D70:lI98|H107205FA0 +107205FA0:lI105|H107209258 +107209258:lI116|H10720C4B8 +10720C4B8:lI115|H10720F6D8 +10720F6D8:lI46|H107212988 +107212988:lI98|H107215D60 +107215D60:lI101|H107219340 +107219340:lI97|H10721C9D0 +10721C9D0:lI109|N +1071F23F8:lH1071F4740|N +1071F4740:lI101|H1071F6F68 +1071F6F68:lI100|H1071F9BC0 +1071F9BC0:lI108|H1071FCB00 +1071FCB00:lI105|H1071FFBB8 +1071FFBB8:lI110|H107202D60 +107202D60:lI95|H107205F90 +107205F90:lI99|H107209248 +107209248:lI111|H10720C4A8 +10720C4A8:lI110|H10720F6C8 +10720F6C8:lI116|H107212978 +107212978:lI101|H107215D50 +107215D50:lI120|H107219330 +107219330:lI116|H10721C9C0 +10721C9C0:lI46|H107220010 +107220010:lI98|H107223408 +107223408:lI101|H1072264C0 +1072264C0:lI97|H1072291E8 +1072291E8:lI109|N +1071F23E8:lH1071F4730|N +1071F4730:lI109|H1071F6F58 +1071F6F58:lI115|H1071F9BB0 +1071F9BB0:lI95|H1071FCAF0 +1071FCAF0:lI116|H1071FFBA8 +1071FFBA8:lI114|H107202D50 +107202D50:lI97|H107205F80 +107205F80:lI110|H107209238 +107209238:lI115|H10720C498 +10720C498:lI102|H10720F6B8 +10720F6B8:lI111|H107212968 +107212968:lI114|H107215D40 +107215D40:lI109|H107219320 +107219320:lI46|H10721C9B0 +10721C9B0:lI98|H107220000 +107220000:lI101|H1072233F8 +1072233F8:lI97|H1072264B0 +1072264B0:lI109|N +1071F23D8:lH1071F4720|N +1071F4720:lI103|H1071F6F48 +1071F6F48:lI101|H1071F9BA0 +1071F9BA0:lI110|H1071FCAE0 +1071FCAE0:lI95|H1071FFB98 +1071FFB98:lI115|H107202D40 +107202D40:lI116|H107205F70 +107205F70:lI97|H107209228 +107209228:lI116|H10720C488 +10720C488:lI101|H10720F6A8 +10720F6A8:lI109|H107212958 +107212958:lI46|H107215D30 +107215D30:lI98|H107219310 +107219310:lI101|H10721C9A0 +10721C9A0:lI97|H10721FFF0 +10721FFF0:lI109|N +1071F0C40:Mn5:H1071F2370,H1071F2380,H1071F2390,H1071F23A0,H1071F23B0 +1071F2370:lH1071F46B0|N +1071F46B0:lI102|H1071F6ED8 +1071F6ED8:lI105|H1071F9B30 +1071F9B30:lI108|H1071FCA70 +1071FCA70:lI101|H1071FFB28 +1071FFB28:lI95|H107202CD0 +107202CD0:lI115|H107205F00 +107205F00:lI111|H1072091B8 +1072091B8:lI114|H10720C418 +10720C418:lI116|H10720F648 +10720F648:lI101|H1072128F8 +1072128F8:lI114|H107215CD0 +107215CD0:lI46|H1072192D0 +1072192D0:lI98|H10721C990 +10721C990:lI101|H10721FFE0 +10721FFE0:lI97|H1072233E8 +1072233E8:lI109|N +1071F23B0:Mn2:H1071F46F0,H1071F4700 +1071F46F0:lH1071F6F18|N +1071F6F18:lI101|H1071F9B70 +1071F9B70:lI112|H1071FCAB0 +1071FCAB0:lI112|H1071FFB68 +1071FFB68:lI46|H107202D10 +107202D10:lI98|H107205F40 +107205F40:lI101|H1072091F8 +1072091F8:lI97|H10720C458 +10720C458:lI109|N +1071F4700:lH1071F6F28|N +1071F6F28:lI111|H1071F9B80 +1071F9B80:lI114|H1071FCAC0 +1071FCAC0:lI100|H1071FFB78 +1071FFB78:lI115|H107202D20 +107202D20:lI101|H107205F50 +107205F50:lI116|H107209208 +107209208:lI115|H10720C468 +10720C468:lI46|H10720F688 +10720F688:lI98|H107212938 +107212938:lI101|H107215D10 +107215D10:lI97|H107219300 +107219300:lI109|N +1071F23A0:lH1071F46E0|N +1071F46E0:lI101|H1071F6F08 +1071F6F08:lI114|H1071F9B60 +1071F9B60:lI108|H1071FCAA0 +1071FCAA0:lI95|H1071FFB58 +1071FFB58:lI98|H107202D00 +107202D00:lI105|H107205F30 +107205F30:lI116|H1072091E8 +1072091E8:lI115|H10720C448 +10720C448:lI46|H10720F678 +10720F678:lI98|H107212928 +107212928:lI101|H107215D00 +107215D00:lI97|H1072192F0 +1072192F0:lI109|N +1071F2390:lH1071F46D0|N +1071F46D0:lI103|H1071F6EF8 +1071F6EF8:lI98|H1071F9B50 +1071F9B50:lI95|H1071FCA90 +1071FCA90:lI115|H1071FFB48 +1071FFB48:lI101|H107202CF0 +107202CF0:lI116|H107205F20 +107205F20:lI115|H1072091D8 +1072091D8:lI46|H10720C438 +10720C438:lI98|H10720F668 +10720F668:lI101|H107212918 +107212918:lI97|H107215CF0 +107215CF0:lI109|N +1071F2380:lH1071F46C0|N +1071F46C0:lI101|H1071F6EE8 +1071F6EE8:lI114|H1071F9B40 +1071F9B40:lI108|H1071FCA80 +1071FCA80:lI95|H1071FFB38 +1071FFB38:lI101|H107202CE0 +107202CE0:lI118|H107205F10 +107205F10:lI97|H1072091C8 +1072091C8:lI108|H10720C428 +10720C428:lI46|H10720F658 +10720F658:lI98|H107212908 +107212908:lI101|H107215CE0 +107215CE0:lI97|H1072192E0 +1072192E0:lI109|N +1071F0C28:Mn2:H1071F2348,H1071F2358 +1071F2348:lH1071F4680|N +1071F4680:lI101|H1071F6EA8 +1071F6EA8:lI100|H1071F9B00 +1071F9B00:lI108|H1071FCA40 +1071FCA40:lI105|H1071FFAF8 +1071FFAF8:lI110|H107202CA0 +107202CA0:lI95|H107205ED0 +107205ED0:lI101|H107209188 +107209188:lI120|H10720C3E8 +10720C3E8:lI112|H10720F618 +10720F618:lI97|H1072128D8 +1072128D8:lI110|H107215CC0 +107215CC0:lI100|H1072192C0 +1072192C0:lI46|H10721C980 +10721C980:lI98|H10721FFD0 +10721FFD0:lI101|H1072233D8 +1072233D8:lI97|H1072264A0 +1072264A0:lI109|N +1071F2358:Mn2:H1071F4690,H1071F46A0 +1071F4690:lH1071F6EB8|N +1071F6EB8:lI115|H1071F9B10 +1071F9B10:lI108|H1071FCA50 +1071FCA50:lI97|H1071FFB08 +1071FFB08:lI118|H107202CB0 +107202CB0:lI101|H107205EE0 +107205EE0:lI46|H107209198 +107209198:lI98|H10720C3F8 +10720C3F8:lI101|H10720F628 +10720F628:lI97|H1072128E8 +1072128E8:lI109|N +1071F46A0:lH1071F6EC8|N +1071F6EC8:lI115|H1071F9B20 +1071F9B20:lI111|H1071FCA60 +1071FCA60:lI102|H1071FFB18 +1071FFB18:lI115|H107202CC0 +107202CC0:lI46|H107205EF0 +107205EF0:lI98|H1072091A8 +1072091A8:lI101|H10720C408 +10720C408:lI97|H10720F638 +10720F638:lI109|N +1071F0BF0:Mn6:H1071F22E8,H1071F22F8,H1071F2308,H1071F2318,H1071F2328,H1071F2338 +1071F22E8:lH1071F4620|N +1071F4620:lI112|H1071F6E48 +1071F6E48:lI114|H1071F9AA0 +1071F9AA0:lI111|H1071FC9E0 +1071FC9E0:lI99|H1071FFA98 +1071FFA98:lI95|H107202C40 +107202C40:lI108|H107205E70 +107205E70:lI105|H107209128 +107209128:lI98|H10720C388 +10720C388:lI46|H10720F5B8 +10720F5B8:lI98|H107212898 +107212898:lI101|H107215C80 +107215C80:lI97|H107219280 +107219280:lI109|N +1071F2338:lH1071F4670|N +1071F4670:lI101|H1071F6E98 +1071F6E98:lI100|H1071F9AF0 +1071F9AF0:lI108|H1071FCA30 +1071FCA30:lI105|H1071FFAE8 +1071FFAE8:lI110|H107202C90 +107202C90:lI46|H107205EC0 +107205EC0:lI98|H107209178 +107209178:lI101|H10720C3D8 +10720C3D8:lI97|H10720F608 +10720F608:lI109|N +1071F2328:lH1071F4660|N +1071F4660:lI100|H1071F6E88 +1071F6E88:lI101|H1071F9AE0 +1071F9AE0:lI116|H1071FCA20 +1071FCA20:lI115|H1071FFAD8 +1071FFAD8:lI95|H107202C80 +107202C80:lI115|H107205EB0 +107205EB0:lI117|H107209168 +107209168:lI112|H10720C3C8 +10720C3C8:lI46|H10720F5F8 +10720F5F8:lI98|H1072128C8 +1072128C8:lI101|H107215CB0 +107215CB0:lI97|H1072192B0 +1072192B0:lI109|N +1071F2318:lH1071F4650|N +1071F4650:lI115|H1071F6E78 +1071F6E78:lI117|H1071F9AD0 +1071F9AD0:lI112|H1071FCA10 +1071FCA10:lI101|H1071FFAC8 +1071FFAC8:lI114|H107202C70 +107202C70:lI118|H107205EA0 +107205EA0:lI105|H107209158 +107209158:lI115|H10720C3B8 +10720C3B8:lI111|H10720F5E8 +10720F5E8:lI114|H1072128B8 +1072128B8:lI46|H107215CA0 +107215CA0:lI98|H1072192A0 +1072192A0:lI101|H10721C970 +10721C970:lI97|H10721FFC0 +10721FFC0:lI109|N +1071F2308:lH1071F4640|N +1071F4640:lI99|H1071F6E68 +1071F6E68:lI97|H1071F9AC0 +1071F9AC0:lI108|H1071FCA00 +1071FCA00:lI101|H1071FFAB8 +1071FFAB8:lI110|H107202C60 +107202C60:lI100|H107205E90 +107205E90:lI97|H107209148 +107209148:lI114|H10720C3A8 +10720C3A8:lI46|H10720F5D8 +10720F5D8:lI98|H1072128A8 +1072128A8:lI101|H107215C90 +107215C90:lI97|H107219290 +107219290:lI109|N +1071F22F8:lH1071F4630|N +1071F4630:lI116|H1071F6E58 +1071F6E58:lI105|H1071F9AB0 +1071F9AB0:lI109|H1071FC9F0 +1071FC9F0:lI101|H1071FFAA8 +1071FFAA8:lI114|H107202C50 +107202C50:lI46|H107205E80 +107205E80:lI98|H107209138 +107209138:lI101|H10720C398 +10720C398:lI97|H10720F5C8 +10720F5C8:lI109|N +1071F0B88:MnC:H1071F2218,H1071F2228,H1071F2238,H1071F2248,H1071F2258,H1071F2268,H1071F2278,H1071F2288,H1071F2298,H1071F22A8,H1071F22C0,H1071F22D0 +1071F2218:lH1071F4540|N +1071F4540:lI117|H1071F6D68 +1071F6D68:lI114|H1071F99C0 +1071F99C0:lI105|H1071FC900 +1071FC900:lI95|H1071FF9B8 +1071FF9B8:lI115|H107202B60 +107202B60:lI116|H107205DA0 +107205DA0:lI114|H107209058 +107209058:lI105|H10720C2C8 +10720C2C8:lI110|H10720F4F8 +10720F4F8:lI103|H1072127F8 +1072127F8:lI46|H107215BF0 +107215BF0:lI98|H107219200 +107219200:lI101|H10721C900 +10721C900:lI97|H10721FF50 +10721FF50:lI109|N +1071F22D0:Mn2:H1071F4600,H1071F4610 +1071F4600:lH1071F6E28|N +1071F6E28:lI101|H1071F9A80 +1071F9A80:lI114|H1071FC9C0 +1071FC9C0:lI108|H1071FFA78 +1071FFA78:lI95|H107202C20 +107202C20:lI112|H107205E50 +107205E50:lI97|H107209108 +107209108:lI114|H10720C368 +10720C368:lI115|H10720F598 +10720F598:lI101|H107212878 +107212878:lI46|H107215C60 +107215C60:lI98|H107219260 +107219260:lI101|H10721C950 +10721C950:lI97|H10721FFA0 +10721FFA0:lI109|N +1071F4610:lH1071F6E38|N +1071F6E38:lI117|H1071F9A90 +1071F9A90:lI110|H1071FC9D0 +1071FC9D0:lI105|H1071FFA88 +1071FFA88:lI99|H107202C30 +107202C30:lI111|H107205E60 +107205E60:lI100|H107209118 +107209118:lI101|H10720C378 +10720C378:lI95|H10720F5A8 +10720F5A8:lI117|H107212888 +107212888:lI116|H107215C70 +107215C70:lI105|H107219270 +107219270:lI108|H10721C960 +10721C960:lI46|H10721FFB0 +10721FFB0:lI98|H1072233C8 +1072233C8:lI101|H107226490 +107226490:lI97|H1072291D8 +1072291D8:lI109|N +1071F22C0:lH1071F45F0|N +1071F45F0:lI101|H1071F6E18 +1071F6E18:lI114|H1071F9A70 +1071F9A70:lI108|H1071FC9B0 +1071FC9B0:lI95|H1071FFA68 +1071FFA68:lI101|H107202C10 +107202C10:lI120|H107205E40 +107205E40:lI112|H1072090F8 +1072090F8:lI97|H10720C358 +10720C358:lI110|H10720F588 +10720F588:lI100|H107212868 +107212868:lI95|H107215C50 +107215C50:lI114|H107219250 +107219250:lI101|H10721C940 +10721C940:lI99|H10721FF90 +10721FF90:lI111|H1072233B8 +1072233B8:lI114|H107226480 +107226480:lI100|H1072291C8 +1072291C8:lI115|H10722BB50 +10722BB50:lI46|H10722E1A8 +10722E1A8:lI98|H107230560 +107230560:lI101|H107232688 +107232688:lI97|H1072344A0 +1072344A0:lI109|N +1071F22A8:Mn2:H1071F45D0,H1071F45E0 +1071F45D0:lH1071F6DF8|N +1071F6DF8:lI114|H1071F9A50 +1071F9A50:lI97|H1071FC990 +1071FC990:lI110|H1071FFA48 +1071FFA48:lI100|H107202BF0 +107202BF0:lI46|H107205E20 +107205E20:lI98|H1072090D8 +1072090D8:lI101|H10720C338 +10720C338:lI97|H10720F568 +10720F568:lI109|N +1071F45E0:lH1071F6E08|N +1071F6E08:lI101|H1071F9A60 +1071F9A60:lI114|H1071FC9A0 +1071FC9A0:lI114|H1071FFA58 +1071FFA58:lI111|H107202C00 +107202C00:lI114|H107205E30 +107205E30:lI95|H1072090E8 +1072090E8:lI108|H10720C348 +10720C348:lI111|H10720F578 +10720F578:lI103|H107212858 +107212858:lI103|H107215C40 +107215C40:lI101|H107219240 +107219240:lI114|H10721C930 +10721C930:lI95|H10721FF80 +10721FF80:lI116|H1072233A8 +1072233A8:lI116|H107226470 +107226470:lI121|H1072291B8 +1072291B8:lI95|H10722BB40 +10722BB40:lI104|H10722E198 +10722E198:lI46|H107230550 +107230550:lI98|H107232678 +107232678:lI101|H107234490 +107234490:lI97|H107235FC8 +107235FC8:lI109|N +1071F2298:lH1071F45C0|N +1071F45C0:lI101|H1071F6DE8 +1071F6DE8:lI114|H1071F9A40 +1071F9A40:lI108|H1071FC980 +1071FC980:lI95|H1071FFA38 +1071FFA38:lI116|H107202BE0 +107202BE0:lI97|H107205E10 +107205E10:lI114|H1072090C8 +1072090C8:lI46|H10720C328 +10720C328:lI98|H10720F558 +10720F558:lI101|H107212848 +107212848:lI97|H107215C30 +107215C30:lI109|N +1071F2288:lH1071F45B0|N +1071F45B0:lI97|H1071F6DD8 +1071F6DD8:lI114|H1071F9A30 +1071F9A30:lI103|H1071FC970 +1071FC970:lI112|H1071FFA28 +1071FFA28:lI97|H107202BD0 +107202BD0:lI114|H107205E00 +107205E00:lI115|H1072090B8 +1072090B8:lI101|H10720C318 +10720C318:lI46|H10720F548 +10720F548:lI98|H107212838 +107212838:lI101|H107215C20 +107215C20:lI97|H107219230 +107219230:lI109|N +1071F2278:lH1071F45A0|N +1071F45A0:lI115|H1071F6DC8 +1071F6DC8:lI121|H1071F9A20 +1071F9A20:lI115|H1071FC960 +1071FC960:lI46|H1071FFA18 +1071FFA18:lI98|H107202BC0 +107202BC0:lI101|H107205DF0 +107205DF0:lI97|H1072090A8 +1072090A8:lI109|N +1071F2268:lH1071F4590|N +1071F4590:lI105|H1071F6DB8 +1071F6DB8:lI111|H1071F9A10 +1071F9A10:lI95|H1071FC950 +1071FC950:lI108|H1071FFA08 +1071FFA08:lI105|H107202BB0 +107202BB0:lI98|H107205DE0 +107205DE0:lI95|H107209098 +107209098:lI102|H10720C308 +10720C308:lI114|H10720F538 +10720F538:lI101|H107212828 +107212828:lI97|H107215C10 +107215C10:lI100|H107219220 +107219220:lI46|H10721C920 +10721C920:lI98|H10721FF70 +10721FF70:lI101|H107223398 +107223398:lI97|H107226460 +107226460:lI109|N +1071F2258:lH1071F4580|N +1071F4580:lI115|H1071F6DA8 +1071F6DA8:lI116|H1071F9A00 +1071F9A00:lI100|H1071FC940 +1071FC940:lI108|H1071FF9F8 +1071FF9F8:lI105|H107202BA0 +107202BA0:lI98|H107205DD0 +107205DD0:lI46|H107209088 +107209088:lI97|H10720C2F8 +10720C2F8:lI112|H10720F528 +10720F528:lI112|N +1071F2248:lH1071F4570|N +1071F4570:lI101|H1071F6D98 +1071F6D98:lI114|H1071F99F0 +1071F99F0:lI108|H1071FC930 +1071FC930:lI95|H1071FF9E8 +1071FF9E8:lI97|H107202B90 +107202B90:lI98|H107205DC0 +107205DC0:lI115|H107209078 +107209078:lI116|H10720C2E8 +10720C2E8:lI114|H10720F518 +10720F518:lI97|H107212818 +107212818:lI99|H107215C00 +107215C00:lI116|H107219210 +107219210:lI95|H10721C910 +10721C910:lI99|H10721FF60 +10721FF60:lI111|H107223388 +107223388:lI100|H107226450 +107226450:lI101|H1072291A8 +1072291A8:lI46|H10722BB30 +10722BB30:lI98|H10722E188 +10722E188:lI101|H107230540 +107230540:lI97|H107232668 +107232668:lI109|N +1071F2238:lH1071F4560|N +1071F4560:lI99|H1071F6D88 +1071F6D88:lI46|H1071F99E0 +1071F99E0:lI98|H1071FC920 +1071FC920:lI101|H1071FF9D8 +1071FF9D8:lI97|H107202B80 +107202B80:lI109|N +1071F2228:lH1071F4550|N +1071F4550:lI113|H1071F6D78 +1071F6D78:lI108|H1071F99D0 +1071F99D0:lI99|H1071FC910 +1071FC910:lI95|H1071FF9C8 +1071FF9C8:lI112|H107202B70 +107202B70:lI116|H107205DB0 +107205DB0:lI46|H107209068 +107209068:lI98|H10720C2D8 +10720C2D8:lI101|H10720F508 +10720F508:lI97|H107212808 +107212808:lI109|N +1071F0B58:Mn5:H1071F21C8,H1071F21D8,H1071F21E8,H1071F21F8,H1071F2208 +1071F21C8:lH1071F44F0|N +1071F44F0:lI105|H1071F6D18 +1071F6D18:lI111|H1071F9970 +1071F9970:lI95|H1071FC8B0 +1071FC8B0:lI108|H1071FF968 +1071FF968:lI105|H107202B10 +107202B10:lI98|H107205D50 +107205D50:lI95|H107209008 +107209008:lI102|H10720C278 +10720C278:lI111|H10720F4B8 +10720F4B8:lI114|H1072127B8 +1072127B8:lI109|H107215BB0 +107215BB0:lI97|H1072191C0 +1072191C0:lI116|H10721C8D0 +10721C8D0:lI46|H10721FF20 +10721FF20:lI98|H107223368 +107223368:lI101|H107226430 +107226430:lI97|H107229198 +107229198:lI109|N +1071F2208:lH1071F4530|N +1071F4530:lI103|H1071F6D58 +1071F6D58:lI101|H1071F99B0 +1071F99B0:lI110|H1071FC8F0 +1071FC8F0:lI95|H1071FF9A8 +1071FF9A8:lI115|H107202B50 +107202B50:lI101|H107205D90 +107205D90:lI114|H107209048 +107209048:lI118|H10720C2B8 +10720C2B8:lI101|H10720F4E8 +10720F4E8:lI114|H1072127E8 +1072127E8:lI46|H107215BE0 +107215BE0:lI98|H1072191F0 +1072191F0:lI101|H10721C8F0 +10721C8F0:lI97|H10721FF40 +10721FF40:lI109|N +1071F21F8:lH1071F4520|N +1071F4520:lI119|H1071F6D48 +1071F6D48:lI105|H1071F99A0 +1071F99A0:lI110|H1071FC8E0 +1071FC8E0:lI51|H1071FF998 +1071FF998:lI50|H107202B40 +107202B40:lI114|H107205D80 +107205D80:lI101|H107209038 +107209038:lI103|H10720C2A8 +10720C2A8:lI46|H10720F4D8 +10720F4D8:lI98|H1072127D8 +1072127D8:lI101|H107215BD0 +107215BD0:lI97|H1072191E0 +1072191E0:lI109|N +1071F21E8:lH1071F4510|N +1071F4510:lI111|H1071F6D38 +1071F6D38:lI116|H1071F9990 +1071F9990:lI112|H1071FC8D0 +1071FC8D0:lI95|H1071FF988 +1071FF988:lI105|H107202B30 +107202B30:lI110|H107205D70 +107205D70:lI116|H107209028 +107209028:lI101|H10720C298 +10720C298:lI114|H10720F4C8 +10720F4C8:lI110|H1072127C8 +1072127C8:lI97|H107215BC0 +107215BC0:lI108|H1072191D0 +1072191D0:lI46|H10721C8E0 +10721C8E0:lI98|H10721FF30 +10721FF30:lI101|H107223378 +107223378:lI97|H107226440 +107226440:lI109|N +1071F21D8:lH1071F4500|N +1071F4500:lI100|H1071F6D28 +1071F6D28:lI101|H1071F9980 +1071F9980:lI116|H1071FC8C0 +1071FC8C0:lI115|H1071FF978 +1071FF978:lI46|H107202B20 +107202B20:lI98|H107205D60 +107205D60:lI101|H107209018 +107209018:lI97|H10720C288 +10720C288:lI109|N +1071F0B30:Mn4:H1071F2188,H1071F2198,H1071F21A8,H1071F21B8 +1071F2188:lH1071F44B0|N +1071F44B0:lI101|H1071F6CD8 +1071F6CD8:lI114|H1071F9930 +1071F9930:lI108|H1071FC870 +1071FC870:lI95|H1071FF928 +1071FF928:lI112|H107202AD0 +107202AD0:lI112|H107205D10 +107205D10:lI46|H107208FC8 +107208FC8:lI98|H10720C238 +10720C238:lI101|H10720F478 +10720F478:lI97|H107212778 +107212778:lI109|N +1071F21B8:lH1071F44E0|N +1071F44E0:lI100|H1071F6D08 +1071F6D08:lI101|H1071F9960 +1071F9960:lI116|H1071FC8A0 +1071FC8A0:lI115|H1071FF958 +1071FF958:lI95|H107202B00 +107202B00:lI117|H107205D40 +107205D40:lI116|H107208FF8 +107208FF8:lI105|H10720C268 +10720C268:lI108|H10720F4A8 +10720F4A8:lI115|H1072127A8 +1072127A8:lI46|H107215BA0 +107215BA0:lI98|H1072191B0 +1072191B0:lI101|H10721C8C0 +10721C8C0:lI97|H10721FF10 +10721FF10:lI109|N +1071F21A8:lH1071F44D0|N +1071F44D0:lI105|H1071F6CF8 +1071F6CF8:lI111|H1071F9950 +1071F9950:lI95|H1071FC890 +1071FC890:lI108|H1071FF948 +1071FF948:lI105|H107202AF0 +107202AF0:lI98|H107205D30 +107205D30:lI95|H107208FE8 +107208FE8:lI112|H10720C258 +10720C258:lI114|H10720F498 +10720F498:lI101|H107212798 +107212798:lI116|H107215B90 +107215B90:lI116|H1072191A0 +1072191A0:lI121|H10721C8B0 +10721C8B0:lI46|H10721FF00 +10721FF00:lI98|H107223358 +107223358:lI101|H107226420 +107226420:lI97|H107229188 +107229188:lI109|N +1071F2198:lH1071F44C0|N +1071F44C0:lI101|H1071F6CE8 +1071F6CE8:lI114|H1071F9940 +1071F9940:lI108|H1071FC880 +1071FC880:lI95|H1071FF938 +1071FF938:lI102|H107202AE0 +107202AE0:lI101|H107205D20 +107205D20:lI97|H107208FD8 +107208FD8:lI116|H10720C248 +10720C248:lI117|H10720F488 +10720F488:lI114|H107212788 +107212788:lI101|H107215B80 +107215B80:lI115|H107219190 +107219190:lI46|H10721C8A0 +10721C8A0:lI98|H10721FEF0 +10721FEF0:lI101|H107223348 +107223348:lI97|H107226410 +107226410:lI109|N +1071F0AF0:Mn7:H1071F2108,H1071F2118,H1071F2128,H1071F2140,H1071F2150,H1071F2168,H1071F2178 +1071F2108:lH1071F4418|N +1071F4418:lI101|H1071F6C38 +1071F6C38:lI114|H1071F9890 +1071F9890:lI108|H1071FC7D0 +1071FC7D0:lI95|H1071FF888 +1071FF888:lI105|H107202A30 +107202A30:lI110|H107205C70 +107205C70:lI116|H107208F38 +107208F38:lI101|H10720C1A8 +10720C1A8:lI114|H10720F3F8 +10720F3F8:lI110|H1072126F8 +1072126F8:lI97|H107215B20 +107215B20:lI108|H107219150 +107219150:lI46|H10721C860 +10721C860:lI98|H10721FEB0 +10721FEB0:lI101|H107223328 +107223328:lI97|H1072263F0 +1072263F0:lI109|N +1071F2178:lH1071F44A0|N +1071F44A0:lI102|H1071F6CC8 +1071F6CC8:lI105|H1071F9920 +1071F9920:lI108|H1071FC860 +1071FC860:lI101|H1071FF918 +1071FF918:lI108|H107202AC0 +107202AC0:lI105|H107205D00 +107205D00:lI98|H107208FB8 +107208FB8:lI46|H10720C228 +10720C228:lI98|H10720F468 +10720F468:lI101|H107212768 +107212768:lI97|H107215B70 +107215B70:lI109|N +1071F2168:lH1071F4490|N +1071F4490:lI109|H1071F6CB8 +1071F6CB8:lI97|H1071F9910 +1071F9910:lI112|H1071FC850 +1071FC850:lI115|H1071FF908 +1071FF908:lI46|H107202AB0 +107202AB0:lI98|H107205CF0 +107205CF0:lI101|H107208FA8 +107208FA8:lI97|H10720C218 +10720C218:lI109|N +1071F2150:Mn2:H1071F4470,H1071F4480 +1071F4470:lH1071F6C98|N +1071F6C98:lI112|H1071F98F0 +1071F98F0:lI114|H1071FC830 +1071FC830:lI111|H1071FF8E8 +1071FF8E8:lI112|H107202A90 +107202A90:lI108|H107205CD0 +107205CD0:lI105|H107208F88 +107208F88:lI115|H10720C1F8 +10720C1F8:lI116|H10720F448 +10720F448:lI115|H107212748 +107212748:lI46|H107215B60 +107215B60:lI98|H107219180 +107219180:lI101|H10721C890 +10721C890:lI97|H10721FEE0 +10721FEE0:lI109|N +1071F4480:lH1071F6CA8|N +1071F6CA8:lI113|H1071F9900 +1071F9900:lI117|H1071FC840 +1071FC840:lI101|H1071FF8F8 +1071FF8F8:lI117|H107202AA0 +107202AA0:lI101|H107205CE0 +107205CE0:lI46|H107208F98 +107208F98:lI98|H10720C208 +10720C208:lI101|H10720F458 +10720F458:lI97|H107212758 +107212758:lI109|N +1071F2140:lH1071F4460|N +1071F4460:lI114|H1071F6C88 +1071F6C88:lI101|H1071F98E0 +1071F98E0:lI46|H1071FC820 +1071FC820:lI98|H1071FF8D8 +1071FF8D8:lI101|H107202A80 +107202A80:lI97|H107205CC0 +107205CC0:lI109|N +1071F2128:Mn2:H1071F4440,H1071F4450 +1071F4440:lH1071F6C68|N +1071F6C68:lI114|H1071F98C0 +1071F98C0:lI97|H1071FC800 +1071FC800:lI110|H1071FF8B8 +1071FF8B8:lI100|H107202A60 +107202A60:lI111|H107205CA0 +107205CA0:lI109|H107208F68 +107208F68:lI46|H10720C1D8 +10720C1D8:lI98|H10720F428 +10720F428:lI101|H107212728 +107212728:lI97|H107215B40 +107215B40:lI109|N +1071F4450:lH1071F6C78|N +1071F6C78:lI101|H1071F98D0 +1071F98D0:lI114|H1071FC810 +1071FC810:lI108|H1071FF8C8 +1071FF8C8:lI95|H107202A70 +107202A70:lI99|H107205CB0 +107205CB0:lI111|H107208F78 +107208F78:lI109|H10720C1E8 +10720C1E8:lI112|H10720F438 +10720F438:lI105|H107212738 +107212738:lI108|H107215B50 +107215B50:lI101|H107219170 +107219170:lI46|H10721C880 +10721C880:lI98|H10721FED0 +10721FED0:lI101|H107223338 +107223338:lI97|H107226400 +107226400:lI109|N +1071F2118:Mn1:H1071F4428 +1071F4428:Mn2:H1071F6C48,H1071F6C58 +1071F6C48:lH1071F98A0|N +1071F98A0:lI103|H1071FC7E0 +1071FC7E0:lI98|H1071FF898 +1071FF898:lI95|H107202A40 +107202A40:lI116|H107205C80 +107205C80:lI114|H107208F48 +107208F48:lI101|H10720C1B8 +10720C1B8:lI101|H10720F408 +10720F408:lI115|H107212708 +107212708:lI46|H107215B30 +107215B30:lI98|H107219160 +107219160:lI101|H10721C870 +10721C870:lI97|H10721FEC0 +10721FEC0:lI109|N +1071F6C58:lH1071F98B0|N +1071F98B0:lI112|H1071FC7F0 +1071FC7F0:lI101|H1071FF8A8 +1071FF8A8:lI101|H107202A50 +107202A50:lI114|H107205C90 +107205C90:lI46|H107208F58 +107208F58:lI98|H10720C1C8 +10720C1C8:lI101|H10720F418 +10720F418:lI97|H107212718 +107212718:lI109|N +1071F0AC8:Mn4:H1071F20B8,H1071F20C8,H1071F20E0,H1071F20F0 +1071F20B8:lH1071F43B8|N +1071F43B8:lI115|H1071F6BD8 +1071F6BD8:lI101|H1071F9830 +1071F9830:lI116|H1071FC770 +1071FC770:lI115|H1071FF828 +1071FF828:lI46|H1072029D0 +1072029D0:lI98|H107205C10 +107205C10:lI101|H107208ED8 +107208ED8:lI97|H10720C148 +10720C148:lI109|N +1071F20F0:Mn2:H1071F43F8,H1071F4408 +1071F43F8:lH1071F6C18|N +1071F6C18:lI108|H1071F9870 +1071F9870:lI111|H1071FC7B0 +1071FC7B0:lI103|H1071FF868 +1071FF868:lI95|H107202A10 +107202A10:lI109|H107205C50 +107205C50:lI102|H107208F18 +107208F18:lI95|H10720C188 +10720C188:lI104|H10720F3D8 +10720F3D8:lI46|H1072126D8 +1072126D8:lI98|H107215B10 +107215B10:lI101|H107219140 +107219140:lI97|H10721C850 +10721C850:lI109|N +1071F4408:lH1071F6C28|N +1071F6C28:lI108|H1071F9880 +1071F9880:lI105|H1071FC7C0 +1071FC7C0:lI115|H1071FF878 +1071FF878:lI116|H107202A20 +107202A20:lI115|H107205C60 +107205C60:lI46|H107208F28 +107208F28:lI98|H10720C198 +10720C198:lI101|H10720F3E8 +10720F3E8:lI97|H1072126E8 +1072126E8:lI109|N +1071F20E0:lH1071F43E8|N +1071F43E8:lI105|H1071F6C08 +1071F6C08:lI111|H1071F9860 +1071F9860:lI95|H1071FC7A0 +1071FC7A0:lI108|H1071FF858 +1071FF858:lI105|H107202A00 +107202A00:lI98|H107205C40 +107205C40:lI46|H107208F08 +107208F08:lI98|H10720C178 +10720C178:lI101|H10720F3C8 +10720F3C8:lI97|H1072126C8 +1072126C8:lI109|N +1071F20C8:Mn2:H1071F43C8,H1071F43D8 +1071F43C8:lH1071F6BE8|N +1071F6BE8:lI101|H1071F9840 +1071F9840:lI114|H1071FC780 +1071FC780:lI108|H1071FF838 +1071FF838:lI95|H1072029E0 +1072029E0:lI115|H107205C20 +107205C20:lI116|H107208EE8 +107208EE8:lI100|H10720C158 +10720C158:lI108|H10720F3A8 +10720F3A8:lI105|H1072126A8 +1072126A8:lI98|H107215AF0 +107215AF0:lI95|H107219120 +107219120:lI101|H10721C840 +10721C840:lI114|H10721FEA0 +10721FEA0:lI114|H107223318 +107223318:lI111|H1072263E0 +1072263E0:lI114|H107229178 +107229178:lI115|H10722BB20 +10722BB20:lI46|H10722E178 +10722E178:lI98|H107230530 +107230530:lI101|H107232658 +107232658:lI97|H107234480 +107234480:lI109|N +1071F43D8:lH1071F6BF8|N +1071F6BF8:lI111|H1071F9850 +1071F9850:lI114|H1071FC790 +1071FC790:lI100|H1071FF848 +1071FF848:lI100|H1072029F0 +1072029F0:lI105|H107205C30 +107205C30:lI99|H107208EF8 +107208EF8:lI116|H10720C168 +10720C168:lI46|H10720F3B8 +10720F3B8:lI98|H1072126B8 +1072126B8:lI101|H107215B00 +107215B00:lI97|H107219130 +107219130:lI109|N +1071F0A98:Mn5:H1071F2060,H1071F2070,H1071F2080,H1071F2098,H1071F20A8 +1071F2060:lH1071F4358|N +1071F4358:lI113|H1071F6B78 +1071F6B78:lI108|H1071F97D0 +1071F97D0:lI99|H1071FC710 +1071FC710:lI46|H1071FF7C8 +1071FF7C8:lI98|H107202970 +107202970:lI101|H107205BB0 +107205BB0:lI97|H107208E78 +107208E78:lI109|N +1071F20A8:lH1071F43A8|N +1071F43A8:lI115|H1071F6BC8 +1071F6BC8:lI117|H1071F9820 +1071F9820:lI112|H1071FC760 +1071FC760:lI101|H1071FF818 +1071FF818:lI114|H1072029C0 +1072029C0:lI118|H107205C00 +107205C00:lI105|H107208EC8 +107208EC8:lI115|H10720C138 +10720C138:lI111|H10720F398 +10720F398:lI114|H107212698 +107212698:lI95|H107215AE0 +107215AE0:lI98|H107219110 +107219110:lI114|H10721C830 +10721C830:lI105|H10721FE90 +10721FE90:lI100|H107223308 +107223308:lI103|H1072263D0 +1072263D0:lI101|H107229168 +107229168:lI46|H10722BB10 +10722BB10:lI98|H10722E168 +10722E168:lI101|H107230520 +107230520:lI97|H107232648 +107232648:lI109|N +1071F2098:lH1071F4398|N +1071F4398:lI101|H1071F6BB8 +1071F6BB8:lI114|H1071F9810 +1071F9810:lI108|H1071FC750 +1071FC750:lI95|H1071FF808 +1071FF808:lI108|H1072029B0 +1072029B0:lI105|H107205BF0 +107205BF0:lI110|H107208EB8 +107208EB8:lI116|H10720C128 +10720C128:lI46|H10720F388 +10720F388:lI98|H107212688 +107212688:lI101|H107215AD0 +107215AD0:lI97|H107219100 +107219100:lI109|N +1071F2080:Mn2:H1071F4378,H1071F4388 +1071F4378:lH1071F6B98|N +1071F6B98:lI101|H1071F97F0 +1071F97F0:lI114|H1071FC730 +1071FC730:lI108|H1071FF7E8 +1071FF7E8:lI95|H107202990 +107202990:lI115|H107205BD0 +107205BD0:lI99|H107208E98 +107208E98:lI97|H10720C108 +10720C108:lI110|H10720F368 +10720F368:lI46|H107212668 +107212668:lI98|H107215AC0 +107215AC0:lI101|H1072190F0 +1072190F0:lI97|H10721C820 +10721C820:lI109|N +1071F4388:lH1071F6BA8|N +1071F6BA8:lI115|H1071F9800 +1071F9800:lI104|H1071FC740 +1071FC740:lI101|H1071FF7F8 +1071FF7F8:lI108|H1072029A0 +1072029A0:lI108|H107205BE0 +107205BE0:lI46|H107208EA8 +107208EA8:lI98|H10720C118 +10720C118:lI101|H10720F378 +10720F378:lI97|H107212678 +107212678:lI109|N +1071F2070:lH1071F4368|N +1071F4368:lI101|H1071F6B88 +1071F6B88:lI114|H1071F97E0 +1071F97E0:lI108|H1071FC720 +1071FC720:lI95|H1071FF7D8 +1071FF7D8:lI112|H107202980 +107202980:lI111|H107205BC0 +107205BC0:lI115|H107208E88 +107208E88:lI105|H10720C0F8 +10720C0F8:lI120|H10720F358 +10720F358:lI95|H107212658 +107212658:lI109|H107215AB0 +107215AB0:lI115|H1072190E0 +1072190E0:lI103|H10721C810 +10721C810:lI46|H10721FE80 +10721FE80:lI98|H1072232F8 +1072232F8:lI101|H1072263C0 +1072263C0:lI97|H107229158 +107229158:lI109|N +1071F0A68:Mn5:H1071F2008,H1071F2018,H1071F2030,H1071F2040,H1071F2050 +1071F2008:lH1071F42F8|N +1071F42F8:lI98|H1071F6B18 +1071F6B18:lI101|H1071F9770 +1071F9770:lI97|H1071FC6B0 +1071FC6B0:lI109|H1071FF768 +1071FF768:lI95|H107202910 +107202910:lI108|H107205B50 +107205B50:lI105|H107208E18 +107208E18:lI98|H10720C0A8 +10720C0A8:lI46|H10720F318 +10720F318:lI98|H107212628 +107212628:lI101|H107215A90 +107215A90:lI97|H1072190C0 +1072190C0:lI109|N +1071F2050:lH1071F4348|N +1071F4348:lI112|H1071F6B68 +1071F6B68:lI111|H1071F97C0 +1071F97C0:lI111|H1071FC700 +1071FC700:lI108|H1071FF7B8 +1071FF7B8:lI46|H107202960 +107202960:lI98|H107205BA0 +107205BA0:lI101|H107208E68 +107208E68:lI97|H10720C0E8 +10720C0E8:lI109|N +1071F2040:lH1071F4338|N +1071F4338:lI98|H1071F6B58 +1071F6B58:lI97|H1071F97B0 +1071F97B0:lI115|H1071FC6F0 +1071FC6F0:lI101|H1071FF7A8 +1071FF7A8:lI54|H107202950 +107202950:lI52|H107205B90 +107205B90:lI46|H107208E58 +107208E58:lI98|H10720C0D8 +10720C0D8:lI101|H10720F348 +10720F348:lI97|H107212648 +107212648:lI109|N +1071F2030:lH1071F4328|N +1071F4328:lI103|H1071F6B48 +1071F6B48:lI101|H1071F97A0 +1071F97A0:lI110|H1071FC6E0 +1071FC6E0:lI46|H1071FF798 +1071FF798:lI98|H107202940 +107202940:lI101|H107205B80 +107205B80:lI97|H107208E48 +107208E48:lI109|N +1071F2018:Mn2:H1071F4308,H1071F4318 +1071F4308:lH1071F6B28|N +1071F6B28:lI101|H1071F9780 +1071F9780:lI114|H1071FC6C0 +1071FC6C0:lI108|H1071FF778 +1071FF778:lI95|H107202920 +107202920:lI101|H107205B60 +107205B60:lI114|H107208E28 +107208E28:lI114|H10720C0B8 +10720C0B8:lI111|H10720F328 +10720F328:lI114|H107212638 +107212638:lI46|H107215AA0 +107215AA0:lI98|H1072190D0 +1072190D0:lI101|H10721C800 +10721C800:lI97|H10721FE70 +10721FE70:lI109|N +1071F4318:lH1071F6B38|N +1071F6B38:lI109|H1071F9790 +1071F9790:lI97|H1071FC6D0 +1071FC6D0:lI116|H1071FF788 +1071FF788:lI104|H107202930 +107202930:lI46|H107205B70 +107205B70:lI98|H107208E38 +107208E38:lI101|H10720C0C8 +10720C0C8:lI97|H10720F338 +10720F338:lI109|N +1071F0A38:Mn5:H1071F1FB0,H1071F1FC8,H1071F1FD8,H1071F1FE8,H1071F1FF8 +1071F1FB0:Mn2:H1071F4298,H1071F42A8 +1071F4298:lH1071F6AB8|N +1071F6AB8:lI115|H1071F9710 +1071F9710:lI104|H1071FC650 +1071FC650:lI101|H1071FF708 +1071FF708:lI108|H1072028B0 +1072028B0:lI108|H107205AF0 +107205AF0:lI95|H107208DB8 +107208DB8:lI100|H10720C048 +10720C048:lI101|H10720F2C8 +10720F2C8:lI102|H1072125D8 +1072125D8:lI97|H107215A40 +107215A40:lI117|H107219080 +107219080:lI108|H10721C7D0 +10721C7D0:lI116|H10721FE40 +10721FE40:lI46|H1072232C8 +1072232C8:lI98|H1072263A0 +1072263A0:lI101|H107229138 +107229138:lI97|H10722BB00 +10722BB00:lI109|N +1071F42A8:lH1071F6AC8|N +1071F6AC8:lI115|H1071F9720 +1071F9720:lI104|H1071FC660 +1071FC660:lI101|H1071FF718 +1071FF718:lI108|H1072028C0 +1072028C0:lI108|H107205B00 +107205B00:lI95|H107208DC8 +107208DC8:lI100|H10720C058 +10720C058:lI111|H10720F2D8 +10720F2D8:lI99|H1072125E8 +1072125E8:lI115|H107215A50 +107215A50:lI46|H107219090 +107219090:lI98|H10721C7E0 +10721C7E0:lI101|H10721FE50 +10721FE50:lI97|H1072232D8 +1072232D8:lI109|N +1071F1FF8:lH1071F42E8|N +1071F42E8:lI100|H1071F6B08 +1071F6B08:lI105|H1071F9760 +1071F9760:lI103|H1071FC6A0 +1071FC6A0:lI114|H1071FF758 +1071FF758:lI97|H107202900 +107202900:lI112|H107205B40 +107205B40:lI104|H107208E08 +107208E08:lI95|H10720C098 +10720C098:lI117|H10720F308 +10720F308:lI116|H107212618 +107212618:lI105|H107215A80 +107215A80:lI108|H1072190B0 +1072190B0:lI115|H10721C7F0 +10721C7F0:lI46|H10721FE60 +10721FE60:lI98|H1072232E8 +1072232E8:lI101|H1072263B0 +1072263B0:lI97|H107229148 +107229148:lI109|N +1071F1FE8:lH1071F42D8|N +1071F42D8:lI101|H1071F6AF8 +1071F6AF8:lI115|H1071F9750 +1071F9750:lI99|H1071FC690 +1071FC690:lI114|H1071FF748 +1071FF748:lI105|H1072028F0 +1072028F0:lI112|H107205B30 +107205B30:lI116|H107208DF8 +107208DF8:lI46|H10720C088 +10720C088:lI98|H10720F2F8 +10720F2F8:lI101|H107212608 +107212608:lI97|H107215A70 +107215A70:lI109|N +1071F1FD8:lH1071F42C8|N +1071F42C8:lI100|H1071F6AE8 +1071F6AE8:lI105|H1071F9740 +1071F9740:lI99|H1071FC680 +1071FC680:lI116|H1071FF738 +1071FF738:lI46|H1072028E0 +1072028E0:lI98|H107205B20 +107205B20:lI101|H107208DE8 +107208DE8:lI97|H10720C078 +10720C078:lI109|N +1071F1FC8:lH1071F42B8|N +1071F42B8:lI101|H1071F6AD8 +1071F6AD8:lI114|H1071F9730 +1071F9730:lI108|H1071FC670 +1071FC670:lI95|H1071FF728 +1071FF728:lI97|H1072028D0 +1072028D0:lI110|H107205B10 +107205B10:lI110|H107208DD8 +107208DD8:lI111|H10720C068 +10720C068:lI46|H10720F2E8 +10720F2E8:lI98|H1072125F8 +1072125F8:lI101|H107215A60 +107215A60:lI97|H1072190A0 +1072190A0:lI109|N +1071F0A28:lH1071F1FA0|N +1071F1FA0:lI103|H1071F4288 +1071F4288:lI101|H1071F6AA8 +1071F6AA8:lI110|H1071F9700 +1071F9700:lI95|H1071FC640 +1071FC640:lI102|H1071FF6F8 +1071FF6F8:lI115|H1072028A0 +1072028A0:lI109|H107205AE0 +107205AE0:lI46|H107208DA8 +107208DA8:lI98|H10720C038 +10720C038:lI101|H10720F2B8 +10720F2B8:lI97|H1072125C8 +1072125C8:lI109|N +1071F0A08:Mn3:H1071F1F70,H1071F1F80,H1071F1F90 +1071F1F70:lH1071F4258|N +1071F4258:lI100|H1071F6A78 +1071F6A78:lI101|H1071F96D0 +1071F96D0:lI116|H1071FC610 +1071FC610:lI115|H1071FF6C8 +1071FF6C8:lI95|H107202870 +107202870:lI118|H107205AB0 +107205AB0:lI57|H107208D78 +107208D78:lI46|H10720C018 +10720C018:lI98|H10720F298 +10720F298:lI101|H1072125A8 +1072125A8:lI97|H107215A20 +107215A20:lI109|N +1071F1F90:lH1071F4278|N +1071F4278:lI102|H1071F6A98 +1071F6A98:lI105|H1071F96F0 +1071F96F0:lI108|H1071FC630 +1071FC630:lI101|H1071FF6E8 +1071FF6E8:lI110|H107202890 +107202890:lI97|H107205AD0 +107205AD0:lI109|H107208D98 +107208D98:lI101|H10720C028 +10720C028:lI46|H10720F2A8 +10720F2A8:lI98|H1072125B8 +1072125B8:lI101|H107215A30 +107215A30:lI97|H107219070 +107219070:lI109|N +1071F1F80:lH1071F4268|N +1071F4268:lI101|H1071F6A88 +1071F6A88:lI116|H1071F96E0 +1071F96E0:lI115|H1071FC620 +1071FC620:lI46|H1071FF6D8 +1071FF6D8:lI98|H107202880 +107202880:lI101|H107205AC0 +107205AC0:lI97|H107208D88 +107208D88:lI109|N +1071F09C8:Mn7:H1071F1F00,H1071F1F10,H1071F1F20,H1071F1F30,H1071F1F40,H1071F1F50,H1071F1F60 +1071F1F00:lH1071F41E8|N +1071F41E8:lI101|H1071F6A08 +1071F6A08:lI114|H1071F9660 +1071F9660:lI114|H1071FC5A0 +1071FC5A0:lI111|H1071FF658 +1071FF658:lI114|H107202800 +107202800:lI95|H107205A40 +107205A40:lI108|H107208D18 +107208D18:lI111|H10720BFC8 +10720BFC8:lI103|H10720F248 +10720F248:lI103|H107212568 +107212568:lI101|H1072159F0 +1072159F0:lI114|H107219050 +107219050:lI95|H10721C7B0 +10721C7B0:lI102|H10721FE20 +10721FE20:lI105|H1072232A8 +1072232A8:lI108|H107226390 +107226390:lI101|H107229128 +107229128:lI95|H10722BAF0 +10722BAF0:lI104|H10722E158 +10722E158:lI46|H107230510 +107230510:lI98|H107232638 +107232638:lI101|H107234470 +107234470:lI97|H107235FB8 +107235FB8:lI109|N +1071F1F60:lH1071F4248|N +1071F4248:lI115|H1071F6A68 +1071F6A68:lI116|H1071F96C0 +1071F96C0:lI114|H1071FC600 +1071FC600:lI105|H1071FF6B8 +1071FF6B8:lI110|H107202860 +107202860:lI103|H107205AA0 +107205AA0:lI46|H107208D68 +107208D68:lI98|H10720C008 +10720C008:lI101|H10720F288 +10720F288:lI97|H107212598 +107212598:lI109|N +1071F1F50:lH1071F4238|N +1071F4238:lI122|H1071F6A58 +1071F6A58:lI105|H1071F96B0 +1071F96B0:lI112|H1071FC5F0 +1071FC5F0:lI46|H1071FF6A8 +1071FF6A8:lI98|H107202850 +107202850:lI101|H107205A90 +107205A90:lI97|H107208D58 +107208D58:lI109|N +1071F1F40:lH1071F4228|N +1071F4228:lI97|H1071F6A48 +1071F6A48:lI114|H1071F96A0 +1071F96A0:lI114|H1071FC5E0 +1071FC5E0:lI97|H1071FF698 +1071FF698:lI121|H107202840 +107202840:lI46|H107205A80 +107205A80:lI98|H107208D48 +107208D48:lI101|H10720BFF8 +10720BFF8:lI97|H10720F278 +10720F278:lI109|N +1071F1F30:lH1071F4218|N +1071F4218:lI105|H1071F6A38 +1071F6A38:lI111|H1071F9690 +1071F9690:lI46|H1071FC5D0 +1071FC5D0:lI98|H1071FF688 +1071FF688:lI101|H107202830 +107202830:lI97|H107205A70 +107205A70:lI109|N +1071F1F20:lH1071F4208|N +1071F4208:lI100|H1071F6A28 +1071F6A28:lI101|H1071F9680 +1071F9680:lI116|H1071FC5C0 +1071FC5C0:lI115|H1071FF678 +1071FF678:lI95|H107202820 +107202820:lI115|H107205A60 +107205A60:lI101|H107208D38 +107208D38:lI114|H10720BFE8 +10720BFE8:lI118|H10720F268 +10720F268:lI101|H107212588 +107212588:lI114|H107215A10 +107215A10:lI46|H107219060 +107219060:lI98|H10721C7C0 +10721C7C0:lI101|H10721FE30 +10721FE30:lI97|H1072232B8 +1072232B8:lI109|N +1071F1F10:lH1071F41F8|N +1071F41F8:lI115|H1071F6A18 +1071F6A18:lI116|H1071F9670 +1071F9670:lI100|H1071FC5B0 +1071FC5B0:lI108|H1071FF668 +1071FF668:lI105|H107202810 +107202810:lI98|H107205A50 +107205A50:lI46|H107208D28 +107208D28:lI97|H10720BFD8 +10720BFD8:lI112|H10720F258 +10720F258:lI112|H107212578 +107212578:lI117|H107215A00 +107215A00:lI112|N +1071F0140:lI47|H1071F0998 +1071F0998:lI111|H1071F1EC0 +1071F1EC0:lI112|H1071F41A8 +1071F41A8:lI116|H1071F69C8 +1071F69C8:lI47|H1071F9620 +1071F9620:lI104|H1071FC560 +1071FC560:lI111|H1071FF618 +1071FF618:lI109|H1072027C0 +1072027C0:lI101|H107205A00 +107205A00:lI98|H107208CD8 +107208CD8:lI114|H10720BF88 +10720BF88:lI101|H10720F208 +10720F208:lI119|H107212528 +107212528:lI47|H1072159B0 +1072159B0:lI67|H107219020 +107219020:lI101|H10721C780 +10721C780:lI108|H10721FE00 +10721FE00:lI108|H107223288 +107223288:lI97|H107226370 +107226370:lI114|H107229108 +107229108:lI47|H10722BAD0 +10722BAD0:lI101|H10722E138 +10722E138:lI114|H1072304F0 +1072304F0:lI108|H107232618 +107232618:lI97|H107234450 +107234450:lI110|H107235F98 +107235F98:lI103|H107237830 +107237830:lI47|H107238EB8 +107238EB8:lI50|H10723A390 +10723A390:lI54|H10723B6D0 +10723B6D0:lI46|H10723C7A0 +10723C7A0:lI48|H10723D660 +10723D660:lI46|H10723E3E0 +10723E3E0:lI50|H10723EFF0 +10723EFF0:lI47|H10723FAC0 +10723FAC0:lI108|H107240410 +107240410:lI105|H107240C90 +107240C90:lI98|H107241420 +107241420:lI47|H107241B50 +107241B50:lI101|H107242220 +107242220:lI114|H107242890 +107242890:lI108|H107242E90 +107242E90:lI97|H107243400 +107243400:lI110|H107243940 +107243940:lI103|H107243E30 +107243E30:lI47|H107244320 +107244320:lI108|H1072447D0 +1072447D0:lI105|H107244C40 +107244C40:lI98|H1072450A0 +1072450A0:lI47|H1072454F0 +1072454F0:lI115|H1072458F0 +1072458F0:lI116|H107245CB0 +107245CB0:lI100|H107246040 +107246040:lI108|H1072463D0 +1072463D0:lI105|H107246760 +107246760:lI98|H107246AF0 +107246AF0:lI45|H107246E30 +107246E30:lI53|H107247150 +107247150:lI46|H107247470 +107247470:lI48|H107247780 +107247780:lI46|H107247A80 +107247A80:lI50|H107247D70 +107247D70:lI47|H107248050 +107248050:lI101|H107248310 +107248310:lI98|H1072485D0 +1072485D0:lI105|H107248880 +107248880:lI110|N +10724AE50:lH10724AEC8|H10724AEE0 +10724AEC8:t2:H1071F0200,H1071F0210 +1071F0210:Mh23:F:H1071F0CD8,H1071F0CE8,H1071F0D00,H1071F0D18,H1071F0D28,H1071F0D38,H1071F0D58,H1071F0D70,H1071F0D88,H1071F0DA8,H1071F0DC0,H1071F0DE0,H1071F0E00,H1071F0E10,H1071F0E30 +1071F0CD8:lH1071F2458|N +1071F2458:lI120|H1071F47A0 +1071F47A0:lI109|H1071F6FC8 +1071F6FC8:lI101|H1071F9C20 +1071F9C20:lI114|H1071FCB60 +1071FCB60:lI108|H1071FFC18 +1071FFC18:lI95|H107202DC0 +107202DC0:lI120|H107205FF0 +107205FF0:lI112|H1072092A8 +1072092A8:lI97|H10720C508 +10720C508:lI116|H10720F728 +10720F728:lI104|H1072129D8 +1072129D8:lI95|H107215DA0 +107215DA0:lI112|H107219380 +107219380:lI114|H10721CA10 +10721CA10:lI101|H107220050 +107220050:lI100|H107223448 +107223448:lI46|H107226500 +107226500:lI98|H107229228 +107229228:lI101|H10722BB90 +10722BB90:lI97|H10722E1E8 +10722E1E8:lI109|N +1071F0E30:Mn4:H1071F2638,H1071F2648,H1071F2658,H1071F2668 +1071F2638:lH1071F4990|N +1071F4990:lI120|H1071F71B8 +1071F71B8:lI109|H1071F9E10 +1071F9E10:lI101|H1071FCD50 +1071FCD50:lI114|H1071FFE08 +1071FFE08:lI108|H107202FB0 +107202FB0:lI95|H1072061E0 +1072061E0:lI101|H107209498 +107209498:lI118|H10720C6F8 +10720C6F8:lI101|H10720F908 +10720F908:lI110|H107212BA8 +107212BA8:lI116|H107215F70 +107215F70:lI112|H107219550 +107219550:lI46|H10721CBC0 +10721CBC0:lI98|H1072201D0 +1072201D0:lI101|H107223588 +107223588:lI97|H107226620 +107226620:lI109|N +1071F2668:lH1071F49C0|N +1071F49C0:lI120|H1071F71E8 +1071F71E8:lI109|H1071F9E40 +1071F9E40:lI101|H1071FCD80 +1071FCD80:lI114|H1071FFE38 +1071FFE38:lI108|H107202FE0 +107202FE0:lI46|H107206210 +107206210:lI98|H1072094C8 +1072094C8:lI101|H10720C728 +10720C728:lI97|H10720F938 +10720F938:lI109|N +1071F2658:lH1071F49B0|N +1071F49B0:lI120|H1071F71D8 +1071F71D8:lI109|H1071F9E30 +1071F9E30:lI101|H1071FCD70 +1071FCD70:lI114|H1071FFE28 +1071FFE28:lI108|H107202FD0 +107202FD0:lI95|H107206200 +107206200:lI115|H1072094B8 +1072094B8:lI97|H10720C718 +10720C718:lI120|H10720F928 +10720F928:lI95|H107212BC8 +107212BC8:lI115|H107215F90 +107215F90:lI105|H107219570 +107219570:lI109|H10721CBE0 +10721CBE0:lI112|H1072201F0 +1072201F0:lI108|H107223598 +107223598:lI101|H107226630 +107226630:lI95|H107229328 +107229328:lI100|H10722BC70 +10722BC70:lI111|H10722E2B8 +10722E2B8:lI109|H107230640 +107230640:lI46|H107232738 +107232738:lI98|H107234530 +107234530:lI101|H107236058 +107236058:lI97|H1072378D0 +1072378D0:lI109|N +1071F2648:lH1071F49A0|N +1071F49A0:lI120|H1071F71C8 +1071F71C8:lI109|H1071F9E20 +1071F9E20:lI101|H1071FCD60 +1071FCD60:lI114|H1071FFE18 +1071FFE18:lI108|H107202FC0 +107202FC0:lI95|H1072061F0 +1072061F0:lI104|H1072094A8 +1072094A8:lI116|H10720C708 +10720C708:lI109|H10720F918 +10720F918:lI108|H107212BB8 +107212BB8:lI46|H107215F80 +107215F80:lI98|H107219560 +107219560:lI101|H10721CBD0 +10721CBD0:lI97|H1072201E0 +1072201E0:lI109|N +1071F0E10:Mn3:H1071F2608,H1071F2618,H1071F2628 +1071F2608:lH1071F4960|N +1071F4960:lI120|H1071F7188 +1071F7188:lI109|H1071F9DE0 +1071F9DE0:lI101|H1071FCD20 +1071FCD20:lI114|H1071FFDD8 +1071FFDD8:lI108|H107202F80 +107202F80:lI95|H1072061B0 +1072061B0:lI117|H107209468 +107209468:lI114|H10720C6C8 +10720C6C8:lI105|H10720F8D8 +10720F8D8:lI46|H107212B78 +107212B78:lI98|H107215F40 +107215F40:lI101|H107219520 +107219520:lI97|H10721CB90 +10721CB90:lI109|N +1071F2628:lH1071F4980|N +1071F4980:lI120|H1071F71A8 +1071F71A8:lI109|H1071F9E00 +1071F9E00:lI101|H1071FCD40 +1071FCD40:lI114|H1071FFDF8 +1071FFDF8:lI108|H107202FA0 +107202FA0:lI95|H1072061D0 +1072061D0:lI120|H107209488 +107209488:lI112|H10720C6E8 +10720C6E8:lI97|H10720F8F8 +10720F8F8:lI116|H107212B98 +107212B98:lI104|H107215F60 +107215F60:lI95|H107219540 +107219540:lI115|H10721CBB0 +10721CBB0:lI99|H1072201C0 +1072201C0:lI97|H107223578 +107223578:lI110|H107226610 +107226610:lI46|H107229318 +107229318:lI98|H10722BC60 +10722BC60:lI101|H10722E2A8 +10722E2A8:lI97|H107230630 +107230630:lI109|N +1071F2618:lH1071F4970|N +1071F4970:lI120|H1071F7198 +1071F7198:lI109|H1071F9DF0 +1071F9DF0:lI101|H1071FCD30 +1071FCD30:lI114|H1071FFDE8 +1071FFDE8:lI108|H107202F90 +107202F90:lI95|H1072061C0 +1072061C0:lI115|H107209478 +107209478:lI103|H10720C6D8 +10720C6D8:lI109|H10720F8E8 +10720F8E8:lI108|H107212B88 +107212B88:lI46|H107215F50 +107215F50:lI98|H107219530 +107219530:lI101|H10721CBA0 +10721CBA0:lI97|H1072201B0 +1072201B0:lI109|N +1071F0E00:lH1071F25F8|N +1071F25F8:lI120|H1071F4950 +1071F4950:lI109|H1071F7178 +1071F7178:lI101|H1071F9DD0 +1071F9DD0:lI114|H1071FCD10 +1071FCD10:lI108|H1071FFDC8 +1071FFDC8:lI46|H107202F70 +107202F70:lI97|H1072061A0 +1072061A0:lI112|H107209458 +107209458:lI112|H10720C6B8 +10720C6B8:lI117|H10720F8C8 +10720F8C8:lI112|N +1071F0DE0:Mn3:H1071F25C0,H1071F25D8,H1071F25E8 +1071F25C0:Mn2:H1071F4910,H1071F4920 +1071F4910:lH1071F7138|N +1071F7138:lI120|H1071F9D90 +1071F9D90:lI109|H1071FCCD0 +1071FCCD0:lI101|H1071FFD88 +1071FFD88:lI114|H107202F30 +107202F30:lI108|H107206160 +107206160:lI95|H107209418 +107209418:lI118|H10720C678 +10720C678:lI97|H10720F888 +10720F888:lI108|H107212B38 +107212B38:lI105|H107215F00 +107215F00:lI100|H1072194E0 +1072194E0:lI97|H10721CB60 +10721CB60:lI116|H107220180 +107220180:lI101|H107223548 +107223548:lI46|H1072265E0 +1072265E0:lI98|H1072292F8 +1072292F8:lI101|H10722BC50 +10722BC50:lI97|H10722E298 +10722E298:lI109|N +1071F4920:lH1071F7148|N +1071F7148:lI120|H1071F9DA0 +1071F9DA0:lI109|H1071FCCE0 +1071FCCE0:lI101|H1071FFD98 +1071FFD98:lI114|H107202F40 +107202F40:lI108|H107206170 +107206170:lI95|H107209428 +107209428:lI114|H10720C688 +10720C688:lI101|H10720F898 +10720F898:lI103|H107212B48 +107212B48:lI101|H107215F10 +107215F10:lI120|H1072194F0 +1072194F0:lI112|H10721CB70 +10721CB70:lI46|H107220190 +107220190:lI98|H107223558 +107223558:lI101|H1072265F0 +1072265F0:lI97|H107229308 +107229308:lI109|N +1071F25E8:lH1071F4940|N +1071F4940:lI120|H1071F7168 +1071F7168:lI109|H1071F9DC0 +1071F9DC0:lI101|H1071FCD00 +1071FCD00:lI114|H1071FFDB8 +1071FFDB8:lI108|H107202F60 +107202F60:lI95|H107206190 +107206190:lI98|H107209448 +107209448:lI54|H10720C6A8 +10720C6A8:lI52|H10720F8B8 +10720F8B8:lI66|H107212B68 +107212B68:lI105|H107215F30 +107215F30:lI110|H107219510 +107219510:lI46|H10721CB80 +10721CB80:lI98|H1072201A0 +1072201A0:lI101|H107223568 +107223568:lI97|H107226600 +107226600:lI109|N +1071F25D8:lH1071F4930|N +1071F4930:lI120|H1071F7158 +1071F7158:lI109|H1071F9DB0 +1071F9DB0:lI101|H1071FCCF0 +1071FCCF0:lI114|H1071FFDA8 +1071FFDA8:lI108|H107202F50 +107202F50:lI95|H107206180 +107206180:lI120|H107209438 +107209438:lI115|H10720C698 +10720C698:lI46|H10720F8A8 +10720F8A8:lI98|H107212B58 +107212B58:lI101|H107215F20 +107215F20:lI97|H107219500 +107219500:lI109|N +1071F0DC0:Mn3:H1071F2590,H1071F25A0,H1071F25B0 +1071F2590:lH1071F48E0|N +1071F48E0:lI120|H1071F7108 +1071F7108:lI109|H1071F9D60 +1071F9D60:lI101|H1071FCCA0 +1071FCCA0:lI114|H1071FFD58 +1071FFD58:lI108|H107202F00 +107202F00:lI95|H107206130 +107206130:lI115|H1072093E8 +1072093E8:lI97|H10720C648 +10720C648:lI120|H10720F858 +10720F858:lI95|H107212B08 +107212B08:lI112|H107215ED0 +107215ED0:lI97|H1072194B0 +1072194B0:lI114|H10721CB30 +10721CB30:lI115|H107220150 +107220150:lI101|H107223518 +107223518:lI114|H1072265B0 +1072265B0:lI95|H1072292C8 +1072292C8:lI108|H10722BC20 +10722BC20:lI105|H10722E268 +10722E268:lI115|H107230610 +107230610:lI116|H107232728 +107232728:lI46|H107234520 +107234520:lI98|H107236048 +107236048:lI101|H1072378C0 +1072378C0:lI97|H107238F48 +107238F48:lI109|N +1071F25B0:lH1071F4900|N +1071F4900:lI120|H1071F7128 +1071F7128:lI109|H1071F9D80 +1071F9D80:lI101|H1071FCCC0 +1071FCCC0:lI114|H1071FFD78 +1071FFD78:lI108|H107202F20 +107202F20:lI95|H107206150 +107206150:lI120|H107209408 +107209408:lI112|H10720C668 +10720C668:lI97|H10720F878 +10720F878:lI116|H107212B28 +107212B28:lI104|H107215EF0 +107215EF0:lI95|H1072194D0 +1072194D0:lI108|H10721CB50 +10721CB50:lI105|H107220170 +107220170:lI98|H107223538 +107223538:lI46|H1072265D0 +1072265D0:lI98|H1072292E8 +1072292E8:lI101|H10722BC40 +10722BC40:lI97|H10722E288 +10722E288:lI109|N +1071F25A0:lH1071F48F0|N +1071F48F0:lI120|H1071F7118 +1071F7118:lI109|H1071F9D70 +1071F9D70:lI101|H1071FCCB0 +1071FCCB0:lI114|H1071FFD68 +1071FFD68:lI108|H107202F10 +107202F10:lI95|H107206140 +107206140:lI115|H1072093F8 +1072093F8:lI97|H10720C658 +10720C658:lI120|H10720F868 +10720F868:lI95|H107212B18 +107212B18:lI112|H107215EE0 +107215EE0:lI97|H1072194C0 +1072194C0:lI114|H10721CB40 +10721CB40:lI115|H107220160 +107220160:lI101|H107223528 +107223528:lI114|H1072265C0 +1072265C0:lI46|H1072292D8 +1072292D8:lI98|H10722BC30 +10722BC30:lI101|H10722E278 +10722E278:lI97|H107230620 +107230620:lI109|N +1071F0DA8:Mn2:H1071F2568,H1071F2578 +1071F2568:lH1071F48B0|N +1071F48B0:lI120|H1071F70D8 +1071F70D8:lI109|H1071F9D30 +1071F9D30:lI101|H1071FCC70 +1071FCC70:lI114|H1071FFD28 +1071FFD28:lI108|H107202ED0 +107202ED0:lI95|H107206100 +107206100:lI120|H1072093B8 +1072093B8:lI115|H10720C618 +10720C618:lI100|H10720F828 +10720F828:lI95|H107212AD8 +107212AD8:lI116|H107215EA0 +107215EA0:lI121|H107219480 +107219480:lI112|H10721CB00 +10721CB00:lI101|H107220120 +107220120:lI46|H1072234F8 +1072234F8:lI98|H107226590 +107226590:lI101|H1072292A8 +1072292A8:lI97|H10722BC00 +10722BC00:lI109|N +1071F2578:Mn2:H1071F48C0,H1071F48D0 +1071F48C0:lH1071F70E8|N +1071F70E8:lI120|H1071F9D40 +1071F9D40:lI109|H1071FCC80 +1071FCC80:lI101|H1071FFD38 +1071FFD38:lI114|H107202EE0 +107202EE0:lI108|H107206110 +107206110:lI95|H1072093C8 +1072093C8:lI108|H10720C628 +10720C628:lI105|H10720F838 +10720F838:lI98|H107212AE8 +107212AE8:lI46|H107215EB0 +107215EB0:lI98|H107219490 +107219490:lI101|H10721CB10 +10721CB10:lI97|H107220130 +107220130:lI109|N +1071F48D0:lH1071F70F8|N +1071F70F8:lI120|H1071F9D50 +1071F9D50:lI109|H1071FCC90 +1071FCC90:lI101|H1071FFD48 +1071FFD48:lI114|H107202EF0 +107202EF0:lI108|H107206120 +107206120:lI95|H1072093D8 +1072093D8:lI115|H10720C638 +10720C638:lI97|H10720F848 +10720F848:lI120|H107212AF8 +107212AF8:lI95|H107215EC0 +107215EC0:lI112|H1072194A0 +1072194A0:lI97|H10721CB20 +10721CB20:lI114|H107220140 +107220140:lI115|H107223508 +107223508:lI101|H1072265A0 +1072265A0:lI114|H1072292B8 +1072292B8:lI95|H10722BC10 +10722BC10:lI117|H10722E258 +10722E258:lI116|H107230600 +107230600:lI102|H107232718 +107232718:lI56|H107234510 +107234510:lI46|H107236038 +107236038:lI98|H1072378B0 +1072378B0:lI101|H107238F38 +107238F38:lI97|H10723A400 +10723A400:lI109|N +1071F0D88:Mn3:H1071F2538,H1071F2548,H1071F2558 +1071F2538:lH1071F4880|N +1071F4880:lI120|H1071F70A8 +1071F70A8:lI109|H1071F9D00 +1071F9D00:lI101|H1071FCC40 +1071FCC40:lI114|H1071FFCF8 +1071FFCF8:lI108|H107202EA0 +107202EA0:lI46|H1072060D0 +1072060D0:lI97|H107209388 +107209388:lI112|H10720C5E8 +10720C5E8:lI112|N +1071F2558:lH1071F48A0|N +1071F48A0:lI120|H1071F70C8 +1071F70C8:lI109|H1071F9D20 +1071F9D20:lI101|H1071FCC60 +1071FCC60:lI114|H1071FFD18 +1071FFD18:lI108|H107202EC0 +107202EC0:lI95|H1072060F0 +1072060F0:lI117|H1072093A8 +1072093A8:lI99|H10720C608 +10720C608:lI115|H10720F818 +10720F818:lI46|H107212AC8 +107212AC8:lI98|H107215E90 +107215E90:lI101|H107219470 +107219470:lI97|H10721CAF0 +10721CAF0:lI109|N +1071F2548:lH1071F4890|N +1071F4890:lI120|H1071F70B8 +1071F70B8:lI109|H1071F9D10 +1071F9D10:lI101|H1071FCC50 +1071FCC50:lI114|H1071FFD08 +1071FFD08:lI108|H107202EB0 +107202EB0:lI95|H1072060E0 +1072060E0:lI115|H107209398 +107209398:lI97|H10720C5F8 +10720C5F8:lI120|H10720F808 +10720F808:lI95|H107212AB8 +107212AB8:lI112|H107215E80 +107215E80:lI97|H107219460 +107219460:lI114|H10721CAE0 +10721CAE0:lI115|H107220110 +107220110:lI101|H1072234E8 +1072234E8:lI114|H107226580 +107226580:lI95|H107229298 +107229298:lI117|H10722BBF0 +10722BBF0:lI116|H10722E248 +10722E248:lI102|H1072305F0 +1072305F0:lI49|H107232708 +107232708:lI54|H107234500 +107234500:lI98|H107236028 +107236028:lI101|H1072378A0 +1072378A0:lI46|H107238F28 +107238F28:lI98|H10723A3F0 +10723A3F0:lI101|H10723B730 +10723B730:lI97|H10723C7F0 +10723C7F0:lI109|N +1071F0D70:Mn2:H1071F2518,H1071F2528 +1071F2518:lH1071F4860|N +1071F4860:lI120|H1071F7088 +1071F7088:lI109|H1071F9CE0 +1071F9CE0:lI101|H1071FCC20 +1071FCC20:lI114|H1071FFCD8 +1071FFCD8:lI108|H107202E80 +107202E80:lI95|H1072060B0 +1072060B0:lI120|H107209368 +107209368:lI112|H10720C5C8 +10720C5C8:lI97|H10720F7E8 +10720F7E8:lI116|H107212A98 +107212A98:lI104|H107215E60 +107215E60:lI46|H107219440 +107219440:lI98|H10721CAC0 +10721CAC0:lI101|H1072200F0 +1072200F0:lI97|H1072234C8 +1072234C8:lI109|N +1071F2528:lH1071F4870|N +1071F4870:lI120|H1071F7098 +1071F7098:lI109|H1071F9CF0 +1071F9CF0:lI101|H1071FCC30 +1071FCC30:lI114|H1071FFCE8 +1071FFCE8:lI108|H107202E90 +107202E90:lI95|H1072060C0 +1072060C0:lI120|H107209378 +107209378:lI112|H10720C5D8 +10720C5D8:lI97|H10720F7F8 +10720F7F8:lI116|H107212AA8 +107212AA8:lI104|H107215E70 +107215E70:lI95|H107219450 +107219450:lI112|H10721CAD0 +10721CAD0:lI97|H107220100 +107220100:lI114|H1072234D8 +1072234D8:lI115|H107226570 +107226570:lI101|H107229288 +107229288:lI46|H10722BBE0 +10722BBE0:lI98|H10722E238 +10722E238:lI101|H1072305E0 +1072305E0:lI97|H1072326F8 +1072326F8:lI109|N +1071F0D58:Mn2:H1071F24F8,H1071F2508 +1071F24F8:lH1071F4840|N +1071F4840:lI120|H1071F7068 +1071F7068:lI109|H1071F9CC0 +1071F9CC0:lI101|H1071FCC00 +1071FCC00:lI114|H1071FFCB8 +1071FFCB8:lI108|H107202E60 +107202E60:lI95|H107206090 +107206090:lI120|H107209348 +107209348:lI109|H10720C5A8 +10720C5A8:lI108|H10720F7C8 +10720F7C8:lI46|H107212A78 +107212A78:lI98|H107215E40 +107215E40:lI101|H107219420 +107219420:lI97|H10721CAA0 +10721CAA0:lI109|N +1071F2508:lH1071F4850|N +1071F4850:lI120|H1071F7078 +1071F7078:lI109|H1071F9CD0 +1071F9CD0:lI101|H1071FCC10 +1071FCC10:lI114|H1071FFCC8 +1071FFCC8:lI108|H107202E70 +107202E70:lI95|H1072060A0 +1072060A0:lI116|H107209358 +107209358:lI101|H10720C5B8 +10720C5B8:lI120|H10720F7D8 +10720F7D8:lI116|H107212A88 +107212A88:lI46|H107215E50 +107215E50:lI98|H107219430 +107219430:lI101|H10721CAB0 +10721CAB0:lI97|H1072200E0 +1072200E0:lI109|N +1071F0D38:Mn3:H1071F24C8,H1071F24D8,H1071F24E8 +1071F24C8:lH1071F4810|N +1071F4810:lI120|H1071F7038 +1071F7038:lI109|H1071F9C90 +1071F9C90:lI101|H1071FCBD0 +1071FCBD0:lI114|H1071FFC88 +1071FFC88:lI108|H107202E30 +107202E30:lI95|H107206060 +107206060:lI115|H107209318 +107209318:lI97|H10720C578 +10720C578:lI120|H10720F798 +10720F798:lI95|H107212A48 +107212A48:lI112|H107215E10 +107215E10:lI97|H1072193F0 +1072193F0:lI114|H10721CA70 +10721CA70:lI115|H1072200B0 +1072200B0:lI101|H107223498 +107223498:lI114|H107226540 +107226540:lI95|H107229258 +107229258:lI108|H10722BBC0 +10722BBC0:lI97|H10722E218 +10722E218:lI116|H1072305C0 +1072305C0:lI105|H1072326D8 +1072326D8:lI110|H1072344E0 +1072344E0:lI49|H107236008 +107236008:lI46|H107237880 +107237880:lI98|H107238F08 +107238F08:lI101|H10723A3D0 +10723A3D0:lI97|H10723B710 +10723B710:lI109|N +1071F24E8:lH1071F4830|N +1071F4830:lI120|H1071F7058 +1071F7058:lI109|H1071F9CB0 +1071F9CB0:lI101|H1071FCBF0 +1071FCBF0:lI114|H1071FFCA8 +1071FFCA8:lI108|H107202E50 +107202E50:lI95|H107206080 +107206080:lI111|H107209338 +107209338:lI116|H10720C598 +10720C598:lI112|H10720F7B8 +10720F7B8:lI115|H107212A68 +107212A68:lI103|H107215E30 +107215E30:lI109|H107219410 +107219410:lI108|H10721CA90 +10721CA90:lI46|H1072200D0 +1072200D0:lI98|H1072234B8 +1072234B8:lI101|H107226560 +107226560:lI97|H107229278 +107229278:lI109|N +1071F24D8:lH1071F4820|N +1071F4820:lI120|H1071F7048 +1071F7048:lI109|H1071F9CA0 +1071F9CA0:lI101|H1071FCBE0 +1071FCBE0:lI114|H1071FFC98 +1071FFC98:lI108|H107202E40 +107202E40:lI95|H107206070 +107206070:lI115|H107209328 +107209328:lI97|H10720C588 +10720C588:lI120|H10720F7A8 +10720F7A8:lI95|H107212A58 +107212A58:lI112|H107215E20 +107215E20:lI97|H107219400 +107219400:lI114|H10721CA80 +10721CA80:lI115|H1072200C0 +1072200C0:lI101|H1072234A8 +1072234A8:lI114|H107226550 +107226550:lI95|H107229268 +107229268:lI117|H10722BBD0 +10722BBD0:lI116|H10722E228 +10722E228:lI102|H1072305D0 +1072305D0:lI49|H1072326E8 +1072326E8:lI54|H1072344F0 +1072344F0:lI108|H107236018 +107236018:lI101|H107237890 +107237890:lI46|H107238F18 +107238F18:lI98|H10723A3E0 +10723A3E0:lI101|H10723B720 +10723B720:lI97|H10723C7E0 +10723C7E0:lI109|N +1071F0D28:lH1071F24B8|N +1071F24B8:lI120|H1071F4800 +1071F4800:lI109|H1071F7028 +1071F7028:lI101|H1071F9C80 +1071F9C80:lI114|H1071FCBC0 +1071FCBC0:lI108|H1071FFC78 +1071FFC78:lI95|H107202E20 +107202E20:lI115|H107206050 +107206050:lI97|H107209308 +107209308:lI120|H10720C568 +10720C568:lI95|H10720F788 +10720F788:lI111|H107212A38 +107212A38:lI108|H107215E00 +107215E00:lI100|H1072193E0 +1072193E0:lI95|H10721CA60 +10721CA60:lI100|H1072200A0 +1072200A0:lI111|H107223488 +107223488:lI109|H107226530 +107226530:lI46|H107229248 +107229248:lI98|H10722BBB0 +10722BBB0:lI101|H10722E208 +10722E208:lI97|H1072305B0 +1072305B0:lI109|N +1071F0D18:lH1071F24A8|N +1071F24A8:lI120|H1071F47F0 +1071F47F0:lI109|H1071F7018 +1071F7018:lI101|H1071F9C70 +1071F9C70:lI114|H1071FCBB0 +1071FCBB0:lI108|H1071FFC68 +1071FFC68:lI95|H107202E10 +107202E10:lI120|H107206040 +107206040:lI115|H1072092F8 +1072092F8:lI100|H10720C558 +10720C558:lI46|H10720F778 +10720F778:lI98|H107212A28 +107212A28:lI101|H107215DF0 +107215DF0:lI97|H1072193D0 +1072193D0:lI109|N +1071F0D00:Mn2:H1071F2488,H1071F2498 +1071F2488:lH1071F47D0|N +1071F47D0:lI120|H1071F6FF8 +1071F6FF8:lI109|H1071F9C50 +1071F9C50:lI101|H1071FCB90 +1071FCB90:lI114|H1071FFC48 +1071FFC48:lI108|H107202DF0 +107202DF0:lI95|H107206020 +107206020:lI115|H1072092D8 +1072092D8:lI105|H10720C538 +10720C538:lI109|H10720F758 +10720F758:lI112|H107212A08 +107212A08:lI108|H107215DD0 +107215DD0:lI101|H1072193B0 +1072193B0:lI46|H10721CA40 +10721CA40:lI98|H107220080 +107220080:lI101|H107223468 +107223468:lI97|H107226510 +107226510:lI109|N +1071F2498:lH1071F47E0|N +1071F47E0:lI120|H1071F7008 +1071F7008:lI109|H1071F9C60 +1071F9C60:lI101|H1071FCBA0 +1071FCBA0:lI114|H1071FFC58 +1071FFC58:lI108|H107202E00 +107202E00:lI95|H107206030 +107206030:lI98|H1072092E8 +1072092E8:lI54|H10720C548 +10720C548:lI52|H10720F768 +10720F768:lI66|H107212A18 +107212A18:lI105|H107215DE0 +107215DE0:lI110|H1072193C0 +1072193C0:lI95|H10721CA50 +10721CA50:lI115|H107220090 +107220090:lI99|H107223478 +107223478:lI97|H107226520 +107226520:lI110|H107229238 +107229238:lI46|H10722BBA0 +10722BBA0:lI98|H10722E1F8 +10722E1F8:lI101|H1072305A0 +1072305A0:lI97|H1072326C8 +1072326C8:lI109|N +1071F0CE8:Mn2:H1071F2468,H1071F2478 +1071F2468:lH1071F47B0|N +1071F47B0:lI120|H1071F6FD8 +1071F6FD8:lI109|H1071F9C30 +1071F9C30:lI101|H1071FCB70 +1071FCB70:lI114|H1071FFC28 +1071FFC28:lI108|H107202DD0 +107202DD0:lI95|H107206000 +107206000:lI120|H1072092B8 +1072092B8:lI108|H10720C518 +10720C518:lI97|H10720F738 +10720F738:lI116|H1072129E8 +1072129E8:lI101|H107215DB0 +107215DB0:lI46|H107219390 +107219390:lI98|H10721CA20 +10721CA20:lI101|H107220060 +107220060:lI97|H107223458 +107223458:lI109|N +1071F2478:lH1071F47C0|N +1071F47C0:lI120|H1071F6FE8 +1071F6FE8:lI109|H1071F9C40 +1071F9C40:lI101|H1071FCB80 +1071FCB80:lI114|H1071FFC38 +1071FFC38:lI108|H107202DE0 +107202DE0:lI95|H107206010 +107206010:lI115|H1072092C8 +1072092C8:lI99|H10720C528 +10720C528:lI97|H10720F748 +10720F748:lI110|H1072129F8 +1072129F8:lI46|H107215DC0 +107215DC0:lI98|H1072193A0 +1072193A0:lI101|H10721CA30 +10721CA30:lI97|H107220070 +107220070:lI109|N +1071F0200:lI47|H1071F0CC8 +1071F0CC8:lI111|H1071F2448 +1071F2448:lI112|H1071F4790 +1071F4790:lI116|H1071F6FB8 +1071F6FB8:lI47|H1071F9C10 +1071F9C10:lI104|H1071FCB50 +1071FCB50:lI111|H1071FFC08 +1071FFC08:lI109|H107202DB0 +107202DB0:lI101|H107205FE0 +107205FE0:lI98|H107209298 +107209298:lI114|H10720C4F8 +10720C4F8:lI101|H10720F718 +10720F718:lI119|H1072129C8 +1072129C8:lI47|H107215D90 +107215D90:lI67|H107219370 +107219370:lI101|H10721CA00 +10721CA00:lI108|H107220040 +107220040:lI108|H107223438 +107223438:lI97|H1072264F0 +1072264F0:lI114|H107229218 +107229218:lI47|H10722BB80 +10722BB80:lI101|H10722E1D8 +10722E1D8:lI114|H107230590 +107230590:lI108|H1072326B8 +1072326B8:lI97|H1072344D0 +1072344D0:lI110|H107235FF8 +107235FF8:lI103|H107237870 +107237870:lI47|H107238EF8 +107238EF8:lI50|H10723A3C0 +10723A3C0:lI54|H10723B700 +10723B700:lI46|H10723C7D0 +10723C7D0:lI48|H10723D690 +10723D690:lI46|H10723E410 +10723E410:lI50|H10723F020 +10723F020:lI47|H10723FAF0 +10723FAF0:lI108|H107240440 +107240440:lI105|H107240CC0 +107240CC0:lI98|H107241450 +107241450:lI47|H107241B80 +107241B80:lI101|H107242250 +107242250:lI114|H1072428C0 +1072428C0:lI108|H107242EC0 +107242EC0:lI97|H107243430 +107243430:lI110|H107243970 +107243970:lI103|H107243E60 +107243E60:lI47|H107244350 +107244350:lI108|H107244800 +107244800:lI105|H107244C70 +107244C70:lI98|H1072450D0 +1072450D0:lI47|H107245520 +107245520:lI120|H107245920 +107245920:lI109|H107245CE0 +107245CE0:lI101|H107246070 +107246070:lI114|H107246400 +107246400:lI108|H107246790 +107246790:lI45|H107246B20 +107246B20:lI49|H107246E60 +107246E60:lI46|H107247180 +107247180:lI51|H1072474A0 +1072474A0:lI46|H1072477B0 +1072477B0:lI51|H107247AB0 +107247AB0:lI50|H107247DA0 +107247DA0:lI47|H280052C20 +10724AEE0:lH10724AF38|H10724AF50 +10724AF38:t2:H1071F02B8,H1071F02C8 +1071F02C8:MhF3:10:H1071F0E88,H1071F0EF8,H1071F0F50,H1071F0FA0,H1071F1000,H1071F1050,H1071F10B0,H1071F1130,H1071F1190,H1071F11E8,H1071F1238,H1071F12A0,H1071F12E8,H1071F1328,H1071F1370,H1071F13C8 +1071F0E88:MnD:H1071F26A8,H1071F26B8,H1071F26C8,H1071F26D8,H1071F26E8,H1071F2700,H1071F2710,H1071F2720,H1071F2738,H1071F2748,H1071F2760,H1071F2780,H1071F2790 +1071F26A8:lH1071F4A00|N +1071F4A00:lI119|H1071F7228 +1071F7228:lI120|H1071F9E80 +1071F9E80:lI65|H1071FCDC0 +1071FCDC0:lI117|H1071FFE78 +1071FFE78:lI105|H107203020 +107203020:lI68|H107206250 +107206250:lI111|H107209508 +107209508:lI99|H10720C768 +10720C768:lI107|H10720F978 +10720F978:lI65|H107212C08 +107212C08:lI114|H107215FD0 +107215FD0:lI116|H1072195B0 +1072195B0:lI46|H10721CC20 +10721CC20:lI98|H107220230 +107220230:lI101|H1072235D8 +1072235D8:lI97|H107226670 +107226670:lI109|N +1071F2790:Mn2:H1071F4B10,H1071F4B20 +1071F4B10:lH1071F7338|N +1071F7338:lI119|H1071F9F90 +1071F9F90:lI120|H1071FCED0 +1071FCED0:lI70|H1071FFF88 +1071FFF88:lI105|H107203130 +107203130:lI108|H107206360 +107206360:lI101|H107209618 +107209618:lI68|H10720C878 +10720C878:lI105|H10720FA88 +10720FA88:lI97|H107212D18 +107212D18:lI108|H1072160D0 +1072160D0:lI111|H1072196A0 +1072196A0:lI103|H10721CD10 +10721CD10:lI46|H107220310 +107220310:lI98|H1072236B8 +1072236B8:lI101|H107226730 +107226730:lI97|H1072293F8 +1072293F8:lI109|N +1071F4B20:lH1071F7348|N +1071F7348:lI119|H1071F9FA0 +1071F9FA0:lI120|H1071FCEE0 +1071FCEE0:lI81|H1071FFF98 +1071FFF98:lI117|H107203140 +107203140:lI101|H107206370 +107206370:lI114|H107209628 +107209628:lI121|H10720C888 +10720C888:lI78|H10720FA98 +10720FA98:lI101|H107212D28 +107212D28:lI119|H1072160E0 +1072160E0:lI80|H1072196B0 +1072196B0:lI97|H10721CD20 +10721CD20:lI108|H107220320 +107220320:lI101|H1072236C8 +1072236C8:lI116|H107226740 +107226740:lI116|H107229408 +107229408:lI101|H10722BD30 +10722BD30:lI69|H10722E368 +10722E368:lI118|H1072306D0 +1072306D0:lI101|H1072327C8 +1072327C8:lI110|H107234590 +107234590:lI116|H1072360B8 +1072360B8:lI46|H107237930 +107237930:lI98|H107238F98 +107238F98:lI101|H10723A440 +10723A440:lI97|H10723B770 +10723B770:lI109|N +1071F2780:lH1071F4B00|N +1071F4B00:lI119|H1071F7328 +1071F7328:lI120|H1071F9F80 +1071F9F80:lI83|H1071FCEC0 +1071FCEC0:lI97|H1071FFF78 +1071FFF78:lI115|H107203120 +107203120:lI104|H107206350 +107206350:lI87|H107209608 +107209608:lI105|H10720C868 +10720C868:lI110|H10720FA78 +10720FA78:lI100|H107212D08 +107212D08:lI111|H1072160C0 +1072160C0:lI119|H107219690 +107219690:lI46|H10721CD00 +10721CD00:lI98|H107220300 +107220300:lI101|H1072236A8 +1072236A8:lI97|H107226720 +107226720:lI109|N +1071F2760:Mn3:H1071F4AD0,H1071F4AE0,H1071F4AF0 +1071F4AD0:lH1071F72F8|N +1071F72F8:lI119|H1071F9F50 +1071F9F50:lI120|H1071FCE90 +1071FCE90:lI80|H1071FFF48 +1071FFF48:lI111|H1072030F0 +1072030F0:lI115|H107206320 +107206320:lI116|H1072095D8 +1072095D8:lI83|H10720C838 +10720C838:lI99|H10720FA48 +10720FA48:lI114|H107212CD8 +107212CD8:lI105|H107216090 +107216090:lI112|H107219660 +107219660:lI116|H10721CCD0 +10721CCD0:lI68|H1072202E0 +1072202E0:lI67|H107223688 +107223688:lI46|H107226700 +107226700:lI98|H1072293D8 +1072293D8:lI101|H10722BD10 +10722BD10:lI97|H10722E348 +10722E348:lI109|N +1071F4AF0:lH1071F7318|N +1071F7318:lI119|H1071F9F70 +1071F9F70:lI120|H1071FCEB0 +1071FCEB0:lI87|H1071FFF68 +1071FFF68:lI105|H107203110 +107203110:lI110|H107206340 +107206340:lI100|H1072095F8 +1072095F8:lI111|H10720C858 +10720C858:lI119|H10720FA68 +10720FA68:lI67|H107212CF8 +107212CF8:lI114|H1072160B0 +1072160B0:lI101|H107219680 +107219680:lI97|H10721CCF0 +10721CCF0:lI116|H1072202F0 +1072202F0:lI101|H107223698 +107223698:lI69|H107226710 +107226710:lI118|H1072293E8 +1072293E8:lI101|H10722BD20 +10722BD20:lI110|H10722E358 +10722E358:lI116|H1072306C0 +1072306C0:lI46|H1072327B8 +1072327B8:lI98|H107234580 +107234580:lI101|H1072360A8 +1072360A8:lI97|H107237920 +107237920:lI109|N +1071F4AE0:lH1071F7308|N +1071F7308:lI119|H1071F9F60 +1071F9F60:lI120|H1071FCEA0 +1071FCEA0:lI67|H1071FFF58 +1071FFF58:lI117|H107203100 +107203100:lI114|H107206330 +107206330:lI115|H1072095E8 +1072095E8:lI111|H10720C848 +10720C848:lI114|H10720FA58 +10720FA58:lI46|H107212CE8 +107212CE8:lI98|H1072160A0 +1072160A0:lI101|H107219670 +107219670:lI97|H10721CCE0 +10721CCE0:lI109|N +1071F2748:Mn2:H1071F4AB0,H1071F4AC0 +1071F4AB0:lH1071F72D8|N +1071F72D8:lI119|H1071F9F30 +1071F9F30:lI120|H1071FCE70 +1071FCE70:lI71|H1071FFF28 +1071FFF28:lI114|H1072030D0 +1072030D0:lI97|H107206300 +107206300:lI112|H1072095B8 +1072095B8:lI104|H10720C818 +10720C818:lI105|H10720FA28 +10720FA28:lI99|H107212CB8 +107212CB8:lI115|H107216070 +107216070:lI80|H107219640 +107219640:lI101|H10721CCB0 +10721CCB0:lI110|H1072202C0 +1072202C0:lI46|H107223668 +107223668:lI98|H1072266F0 +1072266F0:lI101|H1072293C8 +1072293C8:lI97|H10722BD00 +10722BD00:lI109|N +1071F4AC0:lH1071F72E8|N +1071F72E8:lI119|H1071F9F40 +1071F9F40:lI120|H1071FCE80 +1071FCE80:lI70|H1071FFF38 +1071FFF38:lI111|H1072030E0 +1072030E0:lI110|H107206310 +107206310:lI116|H1072095C8 +1072095C8:lI68|H10720C828 +10720C828:lI97|H10720FA38 +10720FA38:lI116|H107212CC8 +107212CC8:lI97|H107216080 +107216080:lI46|H107219650 +107219650:lI98|H10721CCC0 +10721CCC0:lI101|H1072202D0 +1072202D0:lI97|H107223678 +107223678:lI109|N +1071F2738:lH1071F4AA0|N +1071F4AA0:lI119|H1071F72C8 +1071F72C8:lI120|H1071F9F20 +1071F9F20:lI80|H1071FCE60 +1071FCE60:lI114|H1071FFF18 +1071FFF18:lI105|H1072030C0 +1072030C0:lI110|H1072062F0 +1072062F0:lI116|H1072095A8 +1072095A8:lI68|H10720C808 +10720C808:lI105|H10720FA18 +10720FA18:lI97|H107212CA8 +107212CA8:lI108|H107216060 +107216060:lI111|H107219630 +107219630:lI103|H10721CCA0 +10721CCA0:lI68|H1072202B0 +1072202B0:lI97|H107223658 +107223658:lI116|H1072266E0 +1072266E0:lI97|H1072293B8 +1072293B8:lI46|H10722BCF0 +10722BCF0:lI98|H10722E338 +10722E338:lI101|H1072306B0 +1072306B0:lI97|H1072327A8 +1072327A8:lI109|N +1071F2720:Mn2:H1071F4A80,H1071F4A90 +1071F4A80:lH1071F72A8|N +1071F72A8:lI119|H1071F9F00 +1071F9F00:lI120|H1071FCE40 +1071FCE40:lI83|H1071FFEF8 +1071FFEF8:lI116|H1072030A0 +1072030A0:lI97|H1072062D0 +1072062D0:lI116|H107209588 +107209588:lI105|H10720C7E8 +10720C7E8:lI99|H10720F9F8 +10720F9F8:lI66|H107212C88 +107212C88:lI111|H107216040 +107216040:lI120|H107219610 +107219610:lI83|H10721CC80 +10721CC80:lI105|H107220290 +107220290:lI122|H107223638 +107223638:lI101|H1072266C0 +1072266C0:lI114|H107229398 +107229398:lI46|H10722BCD0 +10722BCD0:lI98|H10722E318 +10722E318:lI101|H107230690 +107230690:lI97|H107232788 +107232788:lI109|N +1071F4A90:lH1071F72B8|N +1071F72B8:lI119|H1071F9F10 +1071F9F10:lI120|H1071FCE50 +1071FCE50:lI83|H1071FFF08 +1071FFF08:lI101|H1072030B0 +1072030B0:lI116|H1072062E0 +1072062E0:lI67|H107209598 +107209598:lI117|H10720C7F8 +10720C7F8:lI114|H10720FA08 +10720FA08:lI115|H107212C98 +107212C98:lI111|H107216050 +107216050:lI114|H107219620 +107219620:lI69|H10721CC90 +10721CC90:lI118|H1072202A0 +1072202A0:lI101|H107223648 +107223648:lI110|H1072266D0 +1072266D0:lI116|H1072293A8 +1072293A8:lI46|H10722BCE0 +10722BCE0:lI98|H10722E328 +10722E328:lI101|H1072306A0 +1072306A0:lI97|H107232798 +107232798:lI109|N +1071F2710:lH1071F4A70|N +1071F4A70:lI119|H1071F7298 +1071F7298:lI120|H1071F9EF0 +1071F9EF0:lI80|H1071FCE30 +1071FCE30:lI97|H1071FFEE8 +1071FFEE8:lI103|H107203090 +107203090:lI101|H1072062C0 +1072062C0:lI83|H107209578 +107209578:lI101|H10720C7D8 +10720C7D8:lI116|H10720F9E8 +10720F9E8:lI117|H107212C78 +107212C78:lI112|H107216030 +107216030:lI68|H107219600 +107219600:lI105|H10721CC70 +10721CC70:lI97|H107220280 +107220280:lI108|H107223628 +107223628:lI111|H1072266B0 +1072266B0:lI103|H107229388 +107229388:lI68|H10722BCC0 +10722BCC0:lI97|H10722E308 +10722E308:lI116|H107230680 +107230680:lI97|H107232778 +107232778:lI46|H107234570 +107234570:lI98|H107236098 +107236098:lI101|H107237910 +107237910:lI97|H107238F88 +107238F88:lI109|N +1071F2700:lH1071F4A60|N +1071F4A60:lI119|H1071F7288 +1071F7288:lI120|H1071F9EE0 +1071F9EE0:lI71|H1071FCE20 +1071FCE20:lI66|H1071FFED8 +1071FFED8:lI83|H107203080 +107203080:lI105|H1072062B0 +1072062B0:lI122|H107209568 +107209568:lI101|H10720C7C8 +10720C7C8:lI114|H10720F9D8 +10720F9D8:lI73|H107212C68 +107212C68:lI116|H107216020 +107216020:lI101|H1072195F0 +1072195F0:lI109|H10721CC60 +10721CC60:lI46|H107220270 +107220270:lI98|H107223618 +107223618:lI101|H1072266A0 +1072266A0:lI97|H107229378 +107229378:lI109|N +1071F26E8:Mn2:H1071F4A40,H1071F4A50 +1071F4A40:lH1071F7268|N +1071F7268:lI119|H1071F9EC0 +1071F9EC0:lI120|H1071FCE00 +1071FCE00:lI71|H1071FFEB8 +1071FFEB8:lI114|H107203060 +107203060:lI105|H107206290 +107206290:lI100|H107209548 +107209548:lI46|H10720C7A8 +10720C7A8:lI98|H10720F9B8 +10720F9B8:lI101|H107212C48 +107212C48:lI97|H107216000 +107216000:lI109|N +1071F4A50:lH1071F7278|N +1071F7278:lI119|H1071F9ED0 +1071F9ED0:lI120|H1071FCE10 +1071FCE10:lI68|H1071FFEC8 +1071FFEC8:lI105|H107203070 +107203070:lI114|H1072062A0 +1072062A0:lI68|H107209558 +107209558:lI105|H10720C7B8 +10720C7B8:lI97|H10720F9C8 +10720F9C8:lI108|H107212C58 +107212C58:lI111|H107216010 +107216010:lI103|H1072195E0 +1072195E0:lI46|H10721CC50 +10721CC50:lI98|H107220260 +107220260:lI101|H107223608 +107223608:lI97|H107226690 +107226690:lI109|N +1071F26D8:lH1071F4A30|N +1071F4A30:lI119|H1071F7258 +1071F7258:lI120|H1071F9EB0 +1071F9EB0:lI83|H1071FCDF0 +1071FCDF0:lI116|H1071FFEA8 +1071FFEA8:lI97|H107203050 +107203050:lI116|H107206280 +107206280:lI117|H107209538 +107209538:lI115|H10720C798 +10720C798:lI66|H10720F9A8 +10720F9A8:lI97|H107212C38 +107212C38:lI114|H107215FF0 +107215FF0:lI46|H1072195D0 +1072195D0:lI98|H10721CC40 +10721CC40:lI101|H107220250 +107220250:lI97|H1072235F8 +1072235F8:lI109|N +1071F26C8:lH1071F4A20|N +1071F4A20:lI119|H1071F7248 +1071F7248:lI120|H1071F9EA0 +1071F9EA0:lI83|H1071FCDE0 +1071FCDE0:lI121|H1071FFE98 +1071FFE98:lI115|H107203040 +107203040:lI116|H107206270 +107206270:lI101|H107209528 +107209528:lI109|H10720C788 +10720C788:lI79|H10720F998 +10720F998:lI112|H107212C28 +107212C28:lI116|H107215FE0 +107215FE0:lI105|H1072195C0 +1072195C0:lI111|H10721CC30 +10721CC30:lI110|H107220240 +107220240:lI115|H1072235E8 +1072235E8:lI46|H107226680 +107226680:lI98|H107229368 +107229368:lI101|H10722BCB0 +10722BCB0:lI97|H10722E2F8 +10722E2F8:lI109|N +1071F26B8:lH1071F4A10|N +1071F4A10:lI119|H1071F7238 +1071F7238:lI120|H1071F9E90 +1071F9E90:lI77|H1071FCDD0 +1071FCDD0:lI101|H1071FFE88 +1071FFE88:lI110|H107203030 +107203030:lI117|H107206260 +107206260:lI46|H107209518 +107209518:lI98|H10720C778 +10720C778:lI101|H10720F988 +10720F988:lI97|H107212C18 +107212C18:lI109|N +1071F13C8:Mn8:H1071F3270,H1071F3288,H1071F3298,H1071F32A8,H1071F32B8,H1071F32C8,H1071F32D8,H1071F32E8 +1071F3270:Mn2:H1071F5838,H1071F5848 +1071F5838:lH1071F8098|N +1071F8098:lI119|H1071FACF0 +1071FACF0:lI120|H1071FDC30 +1071FDC30:lI80|H107200CE8 +107200CE8:lI97|H107203E90 +107203E90:lI108|H1072070C0 +1072070C0:lI101|H10720A348 +10720A348:lI116|H10720D5A8 +10720D5A8:lI116|H107210798 +107210798:lI101|H107213A08 +107213A08:lI67|H107216DC0 +107216DC0:lI104|H10721A330 +10721A330:lI97|H10721D900 +10721D900:lI110|H107220E50 +107220E50:lI103|H1072240E8 +1072240E8:lI101|H107227030 +107227030:lI100|H107229BB8 +107229BB8:lI69|H10722C3F0 +10722C3F0:lI118|H10722E938 +10722E938:lI101|H107230BC0 +107230BC0:lI110|H107232BC8 +107232BC8:lI116|H1072348B0 +1072348B0:lI46|H1072362E8 +1072362E8:lI98|H107237AB0 +107237AB0:lI101|H1072390D8 +1072390D8:lI97|H10723A570 +10723A570:lI109|N +1071F5848:lH1071F80A8|N +1071F80A8:lI119|H1071FAD00 +1071FAD00:lI120|H1071FDC40 +1071FDC40:lI77|H107200CF8 +107200CF8:lI111|H107203EA0 +107203EA0:lI117|H1072070D0 +1072070D0:lI115|H10720A358 +10720A358:lI101|H10720D5B8 +10720D5B8:lI69|H1072107A8 +1072107A8:lI118|H107213A18 +107213A18:lI101|H107216DD0 +107216DD0:lI110|H10721A340 +10721A340:lI116|H10721D910 +10721D910:lI46|H107220E60 +107220E60:lI98|H1072240F8 +1072240F8:lI101|H107227040 +107227040:lI97|H107229BC8 +107229BC8:lI109|N +1071F32E8:Mn3:H1071F58C0,H1071F58D0,H1071F58E0 +1071F58C0:lH1071F8128|N +1071F8128:lI119|H1071FAD80 +1071FAD80:lI120|H1071FDCC0 +1071FDCC0:lI80|H107200D78 +107200D78:lI114|H107203F20 +107203F20:lI111|H107207150 +107207150:lI103|H10720A3D8 +10720A3D8:lI114|H10720D638 +10720D638:lI101|H107210828 +107210828:lI115|H107213A98 +107213A98:lI115|H107216E50 +107216E50:lI68|H10721A3C0 +10721A3C0:lI105|H10721D990 +10721D990:lI97|H107220EE0 +107220EE0:lI108|H107224148 +107224148:lI111|H107227090 +107227090:lI103|H107229BF8 +107229BF8:lI46|H10722C420 +10722C420:lI98|H10722E968 +10722E968:lI101|H107230BF0 +107230BF0:lI97|H107232BE8 +107232BE8:lI109|N +1071F58E0:lH1071F8148|N +1071F8148:lI119|H1071FADA0 +1071FADA0:lI120|H1071FDCE0 +1071FDCE0:lI66|H107200D98 +107200D98:lI114|H107203F40 +107203F40:lI117|H107207170 +107207170:lI115|H10720A3F8 +10720A3F8:lI104|H10720D658 +10720D658:lI46|H107210848 +107210848:lI98|H107213AB8 +107213AB8:lI101|H107216E70 +107216E70:lI97|H10721A3E0 +10721A3E0:lI109|N +1071F58D0:lH1071F8138|N +1071F8138:lI119|H1071FAD90 +1071FAD90:lI120|H1071FDCD0 +1071FDCD0:lI76|H107200D88 +107200D88:lI105|H107203F30 +107203F30:lI115|H107207160 +107207160:lI116|H10720A3E8 +10720A3E8:lI73|H10720D648 +10720D648:lI116|H107210838 +107210838:lI101|H107213AA8 +107213AA8:lI109|H107216E60 +107216E60:lI65|H10721A3D0 +10721A3D0:lI116|H10721D9A0 +10721D9A0:lI116|H107220EF0 +107220EF0:lI114|H107224158 +107224158:lI46|H1072270A0 +1072270A0:lI98|H107229C08 +107229C08:lI101|H10722C430 +10722C430:lI97|H10722E978 +10722E978:lI109|N +1071F32D8:Mn1:H1071F58A8 +1071F58A8:Mn2:H1071F8108,H1071F8118 +1071F8108:lH1071FAD60|N +1071FAD60:lI119|H1071FDCA0 +1071FDCA0:lI120|H107200D58 +107200D58:lI87|H107203F00 +107203F00:lI105|H107207130 +107207130:lI110|H10720A3B8 +10720A3B8:lI100|H10720D618 +10720D618:lI111|H107210808 +107210808:lI119|H107213A78 +107213A78:lI68|H107216E30 +107216E30:lI67|H10721A3A0 +10721A3A0:lI46|H10721D970 +10721D970:lI98|H107220EC0 +107220EC0:lI101|H107224138 +107224138:lI97|H107227080 +107227080:lI109|N +1071F8118:lH1071FAD70|N +1071FAD70:lI119|H1071FDCB0 +1071FDCB0:lI120|H107200D68 +107200D68:lI83|H107203F10 +107203F10:lI108|H107207140 +107207140:lI105|H10720A3C8 +10720A3C8:lI100|H10720D628 +10720D628:lI101|H107210818 +107210818:lI114|H107213A88 +107213A88:lI46|H107216E40 +107216E40:lI98|H10721A3B0 +10721A3B0:lI101|H10721D980 +10721D980:lI97|H107220ED0 +107220ED0:lI109|N +1071F32C8:lH1071F5898|N +1071F5898:lI119|H1071F80F8 +1071F80F8:lI120|H1071FAD50 +1071FAD50:lI70|H1071FDC90 +1071FDC90:lI105|H107200D48 +107200D48:lI108|H107203EF0 +107203EF0:lI101|H107207120 +107207120:lI68|H10720A3A8 +10720A3A8:lI105|H10720D608 +10720D608:lI114|H1072107F8 +1072107F8:lI80|H107213A68 +107213A68:lI105|H107216E20 +107216E20:lI99|H10721A390 +10721A390:lI107|H10721D960 +10721D960:lI101|H107220EB0 +107220EB0:lI114|H107224128 +107224128:lI69|H107227070 +107227070:lI118|H107229BE8 +107229BE8:lI101|H10722C410 +10722C410:lI110|H10722E958 +10722E958:lI116|H107230BE0 +107230BE0:lI46|H107232BD8 +107232BD8:lI98|H1072348C0 +1072348C0:lI101|H1072362F8 +1072362F8:lI97|H107237AC0 +107237AC0:lI109|N +1071F32B8:lH1071F5888|N +1071F5888:lI119|H1071F80E8 +1071F80E8:lI120|H1071FAD40 +1071FAD40:lI84|H1071FDC80 +1071FDC80:lI101|H107200D38 +107200D38:lI120|H107203EE0 +107203EE0:lI116|H107207110 +107207110:lI67|H10720A398 +10720A398:lI116|H10720D5F8 +10720D5F8:lI114|H1072107E8 +1072107E8:lI108|H107213A58 +107213A58:lI46|H107216E10 +107216E10:lI98|H10721A380 +10721A380:lI101|H10721D950 +10721D950:lI97|H107220EA0 +107220EA0:lI109|N +1071F32A8:lH1071F5878|N +1071F5878:lI119|H1071F80D8 +1071F80D8:lI120|H1071FAD30 +1071FAD30:lI83|H1071FDC70 +1071FDC70:lI99|H107200D28 +107200D28:lI114|H107203ED0 +107203ED0:lI111|H107207100 +107207100:lI108|H10720A388 +10720A388:lI108|H10720D5E8 +10720D5E8:lI87|H1072107D8 +1072107D8:lI105|H107213A48 +107213A48:lI110|H107216E00 +107216E00:lI69|H10721A370 +10721A370:lI118|H10721D940 +10721D940:lI101|H107220E90 +107220E90:lI110|H107224118 +107224118:lI116|H107227060 +107227060:lI46|H107229BD8 +107229BD8:lI98|H10722C400 +10722C400:lI101|H10722E948 +10722E948:lI97|H107230BD0 +107230BD0:lI109|N +1071F3298:lH1071F5868|N +1071F5868:lI119|H1071F80C8 +1071F80C8:lI120|H1071FAD20 +1071FAD20:lI83|H1071FDC60 +1071FDC60:lI116|H107200D18 +107200D18:lI97|H107203EC0 +107203EC0:lI116|H1072070F0 +1072070F0:lI105|H10720A378 +10720A378:lI99|H10720D5D8 +10720D5D8:lI84|H1072107C8 +1072107C8:lI101|H107213A38 +107213A38:lI120|H107216DF0 +107216DF0:lI116|H10721A360 +10721A360:lI46|H10721D930 +10721D930:lI98|H107220E80 +107220E80:lI101|H107224108 +107224108:lI97|H107227050 +107227050:lI109|N +1071F3288:lH1071F5858|N +1071F5858:lI119|H1071F80B8 +1071F80B8:lI120|H1071FAD10 +1071FAD10:lI83|H1071FDC50 +1071FDC50:lI112|H107200D08 +107200D08:lI105|H107203EB0 +107203EB0:lI110|H1072070E0 +1072070E0:lI67|H10720A368 +10720A368:lI116|H10720D5C8 +10720D5C8:lI114|H1072107B8 +1072107B8:lI108|H107213A28 +107213A28:lI46|H107216DE0 +107216DE0:lI98|H10721A350 +10721A350:lI101|H10721D920 +10721D920:lI97|H107220E70 +107220E70:lI109|N +1071F1370:MnA:H1071F31C0,H1071F31D0,H1071F31E0,H1071F31F8,H1071F3210,H1071F3220,H1071F3230,H1071F3240,H1071F3250,H1071F3260 +1071F31C0:lH1071F5770|N +1071F5770:lI119|H1071F7FC8 +1071F7FC8:lI120|H1071FAC20 +1071FAC20:lI65|H1071FDB60 +1071FDB60:lI117|H107200C18 +107200C18:lI105|H107203DC0 +107203DC0:lI77|H107206FF0 +107206FF0:lI97|H10720A278 +10720A278:lI110|H10720D4D8 +10720D4D8:lI97|H1072106C8 +1072106C8:lI103|H107213938 +107213938:lI101|H107216CF0 +107216CF0:lI114|H10721A260 +10721A260:lI69|H10721D830 +10721D830:lI118|H107220DA0 +107220DA0:lI101|H107224048 +107224048:lI110|H107226FB0 +107226FB0:lI116|H107229B48 +107229B48:lI46|H10722C380 +10722C380:lI98|H10722E8C8 +10722E8C8:lI101|H107230B60 +107230B60:lI97|H107232B78 +107232B78:lI109|N +1071F3260:lH1071F5828|N +1071F5828:lI119|H1071F8088 +1071F8088:lI120|H1071FACE0 +1071FACE0:lI67|H1071FDC20 +1071FDC20:lI111|H107200CD8 +107200CD8:lI110|H107203E80 +107203E80:lI116|H1072070B0 +1072070B0:lI114|H10720A338 +10720A338:lI111|H10720D598 +10720D598:lI108|H107210788 +107210788:lI87|H1072139F8 +1072139F8:lI105|H107216DB0 +107216DB0:lI116|H10721A320 +10721A320:lI104|H10721D8F0 +10721D8F0:lI73|H107220E40 +107220E40:lI116|H1072240D8 +1072240D8:lI101|H107227020 +107227020:lI109|H107229BA8 +107229BA8:lI115|H10722C3E0 +10722C3E0:lI46|H10722E928 +10722E928:lI98|H107230BB0 +107230BB0:lI101|H107232BB8 +107232BB8:lI97|H1072348A0 +1072348A0:lI109|N +1071F3250:lH1071F5818|N +1071F5818:lI119|H1071F8078 +1071F8078:lI120|H1071FACD0 +1071FACD0:lI76|H1071FDC10 +1071FDC10:lI105|H107200CC8 +107200CC8:lI115|H107203E70 +107203E70:lI116|H1072070A0 +1072070A0:lI67|H10720A328 +10720A328:lI116|H10720D588 +10720D588:lI114|H107210778 +107210778:lI108|H1072139E8 +1072139E8:lI46|H107216DA0 +107216DA0:lI98|H10721A310 +10721A310:lI101|H10721D8E0 +10721D8E0:lI97|H107220E30 +107220E30:lI109|N +1071F3240:lH1071F5808|N +1071F5808:lI119|H1071F8068 +1071F8068:lI120|H1071FACC0 +1071FACC0:lI84|H1071FDC00 +1071FDC00:lI111|H107200CB8 +107200CB8:lI111|H107203E60 +107203E60:lI108|H107207090 +107207090:lI66|H10720A318 +10720A318:lI97|H10720D578 +10720D578:lI114|H107210768 +107210768:lI46|H1072139D8 +1072139D8:lI98|H107216D90 +107216D90:lI101|H10721A300 +10721A300:lI97|H10721D8D0 +10721D8D0:lI109|N +1071F3230:Mn1:H1071F57F0 +1071F57F0:Mn2:H1071F8048,H1071F8058 +1071F8048:lH1071FACA0|N +1071FACA0:lI119|H1071FDBE0 +1071FDBE0:lI120|H107200C98 +107200C98:lI82|H107203E40 +107203E40:lI97|H107207070 +107207070:lI100|H10720A2F8 +10720A2F8:lI105|H10720D558 +10720D558:lI111|H107210748 +107210748:lI66|H1072139B8 +1072139B8:lI117|H107216D70 +107216D70:lI116|H10721A2E0 +10721A2E0:lI116|H10721D8B0 +10721D8B0:lI111|H107220E20 +107220E20:lI110|H1072240C8 +1072240C8:lI46|H107227010 +107227010:lI98|H107229B98 +107229B98:lI101|H10722C3D0 +10722C3D0:lI97|H10722E918 +10722E918:lI109|N +1071F8058:lH1071FACB0|N +1071FACB0:lI119|H1071FDBF0 +1071FDBF0:lI120|H107200CA8 +107200CA8:lI69|H107203E50 +107203E50:lI118|H107207080 +107207080:lI101|H10720A308 +10720A308:lI110|H10720D568 +10720D568:lI116|H107210758 +107210758:lI46|H1072139C8 +1072139C8:lI98|H107216D80 +107216D80:lI101|H10721A2F0 +10721A2F0:lI97|H10721D8C0 +10721D8C0:lI109|N +1071F3220:lH1071F57E0|N +1071F57E0:lI119|H1071F8038 +1071F8038:lI120|H1071FAC90 +1071FAC90:lI71|H1071FDBD0 +1071FDBD0:lI114|H107200C88 +107200C88:lI105|H107203E30 +107203E30:lI100|H107207060 +107207060:lI67|H10720A2E8 +10720A2E8:lI101|H10720D548 +10720D548:lI108|H107210738 +107210738:lI108|H1072139A8 +1072139A8:lI67|H107216D60 +107216D60:lI104|H10721A2D0 +10721A2D0:lI111|H10721D8A0 +10721D8A0:lI105|H107220E10 +107220E10:lI99|H1072240B8 +1072240B8:lI101|H107227000 +107227000:lI69|H107229B88 +107229B88:lI100|H10722C3C0 +10722C3C0:lI105|H10722E908 +10722E908:lI116|H107230BA0 +107230BA0:lI111|H107232BA8 +107232BA8:lI114|H107234890 +107234890:lI46|H1072362D8 +1072362D8:lI98|H107237AA0 +107237AA0:lI101|H1072390C8 +1072390C8:lI97|H10723A560 +10723A560:lI109|N +1071F3210:lH1071F57D0|N +1071F57D0:lI119|H1071F8028 +1071F8028:lI120|H1071FAC80 +1071FAC80:lI87|H1071FDBC0 +1071FDBC0:lI105|H107200C78 +107200C78:lI110|H107203E20 +107203E20:lI100|H107207050 +107207050:lI111|H10720A2D8 +10720A2D8:lI119|H10720D538 +10720D538:lI68|H107210728 +107210728:lI101|H107213998 +107213998:lI115|H107216D50 +107216D50:lI116|H10721A2C0 +10721A2C0:lI114|H10721D890 +10721D890:lI111|H107220E00 +107220E00:lI121|H1072240A8 +1072240A8:lI69|H107226FF0 +107226FF0:lI118|H107229B78 +107229B78:lI101|H10722C3B0 +10722C3B0:lI110|H10722E8F8 +10722E8F8:lI116|H107230B90 +107230B90:lI46|H107232B98 +107232B98:lI98|H107234880 +107234880:lI101|H1072362C8 +1072362C8:lI97|H107237A90 +107237A90:lI109|N +1071F31F8:Mn2:H1071F57B0,H1071F57C0 +1071F57B0:lH1071F8008|N +1071F8008:lI119|H1071FAC60 +1071FAC60:lI120|H1071FDBA0 +1071FDBA0:lI83|H107200C58 +107200C58:lI105|H107203E00 +107203E00:lI122|H107207030 +107207030:lI101|H10720A2B8 +10720A2B8:lI114|H10720D518 +10720D518:lI73|H107210708 +107210708:lI116|H107213978 +107213978:lI101|H107216D30 +107216D30:lI109|H10721A2A0 +10721A2A0:lI46|H10721D870 +10721D870:lI98|H107220DE0 +107220DE0:lI101|H107224088 +107224088:lI97|H107226FE0 +107226FE0:lI109|N +1071F57C0:lH1071F8018|N +1071F8018:lI119|H1071FAC70 +1071FAC70:lI120|H1071FDBB0 +1071FDBB0:lI75|H107200C68 +107200C68:lI101|H107203E10 +107203E10:lI121|H107207040 +107207040:lI69|H10720A2C8 +10720A2C8:lI118|H10720D528 +10720D528:lI101|H107210718 +107210718:lI110|H107213988 +107213988:lI116|H107216D40 +107216D40:lI46|H10721A2B0 +10721A2B0:lI98|H10721D880 +10721D880:lI101|H107220DF0 +107220DF0:lI97|H107224098 +107224098:lI109|N +1071F31E0:Mn2:H1071F5790,H1071F57A0 +1071F5790:lH1071F7FE8|N +1071F7FE8:lI119|H1071FAC40 +1071FAC40:lI120|H1071FDB80 +1071FDB80:lI71|H107200C38 +107200C38:lI114|H107203DE0 +107203DE0:lI105|H107207010 +107207010:lI100|H10720A298 +10720A298:lI67|H10720D4F8 +10720D4F8:lI101|H1072106E8 +1072106E8:lI108|H107213958 +107213958:lI108|H107216D10 +107216D10:lI70|H10721A280 +10721A280:lI108|H10721D850 +10721D850:lI111|H107220DC0 +107220DC0:lI97|H107224068 +107224068:lI116|H107226FC0 +107226FC0:lI69|H107229B58 +107229B58:lI100|H10722C390 +10722C390:lI105|H10722E8D8 +10722E8D8:lI116|H107230B70 +107230B70:lI111|H107232B88 +107232B88:lI114|H107234870 +107234870:lI46|H1072362B8 +1072362B8:lI98|H107237A80 +107237A80:lI101|H1072390B8 +1072390B8:lI97|H10723A550 +10723A550:lI109|N +1071F57A0:lH1071F7FF8|N +1071F7FF8:lI119|H1071FAC50 +1071FAC50:lI120|H1071FDB90 +1071FDB90:lI65|H107200C48 +107200C48:lI99|H107203DF0 +107203DF0:lI116|H107207020 +107207020:lI105|H10720A2A8 +10720A2A8:lI118|H10720D508 +10720D508:lI97|H1072106F8 +1072106F8:lI116|H107213968 +107213968:lI101|H107216D20 +107216D20:lI69|H10721A290 +10721A290:lI118|H10721D860 +10721D860:lI101|H107220DD0 +107220DD0:lI110|H107224078 +107224078:lI116|H107226FD0 +107226FD0:lI46|H107229B68 +107229B68:lI98|H10722C3A0 +10722C3A0:lI101|H10722E8E8 +10722E8E8:lI97|H107230B80 +107230B80:lI109|N +1071F31D0:lH1071F5780|N +1071F5780:lI119|H1071F7FD8 +1071F7FD8:lI120|H1071FAC30 +1071FAC30:lI68|H1071FDB70 +1071FDB70:lI97|H107200C28 +107200C28:lI116|H107203DD0 +107203DD0:lI101|H107207000 +107207000:lI69|H10720A288 +10720A288:lI118|H10720D4E8 +10720D4E8:lI101|H1072106D8 +1072106D8:lI110|H107213948 +107213948:lI116|H107216D00 +107216D00:lI46|H10721A270 +10721A270:lI98|H10721D840 +10721D840:lI101|H107220DB0 +107220DB0:lI97|H107224058 +107224058:lI109|N +1071F1328:Mn8:H1071F3118,H1071F3130,H1071F3150,H1071F3168,H1071F3178,H1071F3188,H1071F3198,H1071F31A8 +1071F3118:Mn2:H1071F56A0,H1071F56B0 +1071F56A0:lH1071F7EF8|N +1071F7EF8:lI119|H1071FAB50 +1071FAB50:lI120|H1071FDA90 +1071FDA90:lI83|H107200B48 +107200B48:lI112|H107203CF0 +107203CF0:lI105|H107206F20 +107206F20:lI110|H10720A1A8 +10720A1A8:lI66|H10720D408 +10720D408:lI117|H1072105F8 +1072105F8:lI116|H107213878 +107213878:lI116|H107216C30 +107216C30:lI111|H10721A1B0 +10721A1B0:lI110|H10721D780 +10721D780:lI46|H107220CF0 +107220CF0:lI98|H107223FA8 +107223FA8:lI101|H107226F10 +107226F10:lI97|H107229AA8 +107229AA8:lI109|N +1071F56B0:lH1071F7F08|N +1071F7F08:lI119|H1071FAB60 +1071FAB60:lI120|H1071FDAA0 +1071FDAA0:lI67|H107200B58 +107200B58:lI111|H107203D00 +107203D00:lI110|H107206F30 +107206F30:lI116|H10720A1B8 +10720A1B8:lI114|H10720D418 +10720D418:lI111|H107210608 +107210608:lI108|H107213888 +107213888:lI46|H107216C40 +107216C40:lI98|H10721A1C0 +10721A1C0:lI101|H10721D790 +10721D790:lI97|H107220D00 +107220D00:lI109|N +1071F31A8:Mn2:H1071F5750,H1071F5760 +1071F5750:lH1071F7FA8|N +1071F7FA8:lI119|H1071FAC00 +1071FAC00:lI120|H1071FDB40 +1071FDB40:lI66|H107200BF8 +107200BF8:lI105|H107203DA0 +107203DA0:lI116|H107206FD0 +107206FD0:lI109|H10720A258 +10720A258:lI97|H10720D4B8 +10720D4B8:lI112|H1072106A8 +1072106A8:lI66|H107213918 +107213918:lI117|H107216CD0 +107216CD0:lI116|H10721A240 +10721A240:lI116|H10721D810 +10721D810:lI111|H107220D80 +107220D80:lI110|H107224028 +107224028:lI46|H107226F90 +107226F90:lI98|H107229B28 +107229B28:lI101|H10722C360 +10722C360:lI97|H10722E8A8 +10722E8A8:lI109|N +1071F5760:lH1071F7FB8|N +1071F7FB8:lI119|H1071FAC10 +1071FAC10:lI120|H1071FDB50 +1071FDB50:lI66|H107200C08 +107200C08:lI111|H107203DB0 +107203DB0:lI111|H107206FE0 +107206FE0:lI107|H10720A268 +10720A268:lI67|H10720D4C8 +10720D4C8:lI116|H1072106B8 +1072106B8:lI114|H107213928 +107213928:lI108|H107216CE0 +107216CE0:lI66|H10721A250 +10721A250:lI97|H10721D820 +10721D820:lI115|H107220D90 +107220D90:lI101|H107224038 +107224038:lI46|H107226FA0 +107226FA0:lI98|H107229B38 +107229B38:lI101|H10722C370 +10722C370:lI97|H10722E8B8 +10722E8B8:lI109|N +1071F3198:lH1071F5740|N +1071F5740:lI119|H1071F7F98 +1071F7F98:lI120|H1071FABF0 +1071FABF0:lI73|H1071FDB30 +1071FDB30:lI99|H107200BE8 +107200BE8:lI111|H107203D90 +107203D90:lI110|H107206FC0 +107206FC0:lI105|H10720A248 +10720A248:lI122|H10720D4A8 +10720D4A8:lI101|H107210698 +107210698:lI69|H107213908 +107213908:lI118|H107216CC0 +107216CC0:lI101|H10721A230 +10721A230:lI110|H10721D800 +10721D800:lI116|H107220D70 +107220D70:lI46|H107224018 +107224018:lI98|H107226F80 +107226F80:lI101|H107229B18 +107229B18:lI97|H10722C350 +10722C350:lI109|N +1071F3188:lH1071F5730|N +1071F5730:lI119|H1071F7F88 +1071F7F88:lI120|H1071FABE0 +1071FABE0:lI77|H1071FDB20 +1071FDB20:lI111|H107200BD8 +107200BD8:lI117|H107203D80 +107203D80:lI115|H107206FB0 +107206FB0:lI101|H10720A238 +10720A238:lI67|H10720D498 +10720D498:lI97|H107210688 +107210688:lI112|H1072138F8 +1072138F8:lI116|H107216CB0 +107216CB0:lI117|H10721A220 +10721A220:lI114|H10721D7F0 +10721D7F0:lI101|H107220D60 +107220D60:lI76|H107224008 +107224008:lI111|H107226F70 +107226F70:lI115|H107229B08 +107229B08:lI116|H10722C340 +10722C340:lI69|H10722E898 +10722E898:lI118|H107230B50 +107230B50:lI101|H107232B68 +107232B68:lI110|H107234860 +107234860:lI116|H1072362A8 +1072362A8:lI46|H107237A70 +107237A70:lI98|H1072390A8 +1072390A8:lI101|H10723A540 +10723A540:lI97|H10723B830 +10723B830:lI109|N +1071F3178:lH1071F5720|N +1071F5720:lI119|H1071F7F78 +1071F7F78:lI120|H1071FABD0 +1071FABD0:lI73|H1071FDB10 +1071FDB10:lI109|H107200BC8 +107200BC8:lI97|H107203D70 +107203D70:lI103|H107206FA0 +107206FA0:lI101|H10720A228 +10720A228:lI46|H10720D488 +10720D488:lI98|H107210678 +107210678:lI101|H1072138E8 +1072138E8:lI97|H107216CA0 +107216CA0:lI109|N +1071F3168:lH1071F5710|N +1071F5710:lI119|H1071F7F68 +1071F7F68:lI120|H1071FABC0 +1071FABC0:lI80|H1071FDB00 +1071FDB00:lI97|H107200BB8 +107200BB8:lI103|H107203D60 +107203D60:lI101|H107206F90 +107206F90:lI83|H10720A218 +10720A218:lI101|H10720D478 +10720D478:lI116|H107210668 +107210668:lI117|H1072138D8 +1072138D8:lI112|H107216C90 +107216C90:lI68|H10721A210 +10721A210:lI105|H10721D7E0 +10721D7E0:lI97|H107220D50 +107220D50:lI108|H107223FF8 +107223FF8:lI111|H107226F60 +107226F60:lI103|H107229AF8 +107229AF8:lI46|H10722C330 +10722C330:lI98|H10722E888 +10722E888:lI101|H107230B40 +107230B40:lI97|H107232B58 +107232B58:lI109|N +1071F3150:Mn2:H1071F56F0,H1071F5700 +1071F56F0:lH1071F7F48|N +1071F7F48:lI119|H1071FABA0 +1071FABA0:lI120|H1071FDAE0 +1071FDAE0:lI68|H107200B98 +107200B98:lI97|H107203D40 +107203D40:lI116|H107206F70 +107206F70:lI97|H10720A1F8 +10720A1F8:lI79|H10720D458 +10720D458:lI98|H107210648 +107210648:lI106|H1072138B8 +1072138B8:lI101|H107216C70 +107216C70:lI99|H10721A1F0 +10721A1F0:lI116|H10721D7C0 +10721D7C0:lI46|H107220D30 +107220D30:lI98|H107223FD8 +107223FD8:lI101|H107226F40 +107226F40:lI97|H107229AD8 +107229AD8:lI109|N +1071F5700:lH1071F7F58|N +1071F7F58:lI119|H1071FABB0 +1071FABB0:lI120|H1071FDAF0 +1071FDAF0:lI71|H107200BA8 +107200BA8:lI114|H107203D50 +107203D50:lI105|H107206F80 +107206F80:lI100|H10720A208 +10720A208:lI67|H10720D468 +10720D468:lI101|H107210658 +107210658:lI108|H1072138C8 +1072138C8:lI108|H107216C80 +107216C80:lI82|H10721A200 +10721A200:lI101|H10721D7D0 +10721D7D0:lI110|H107220D40 +107220D40:lI100|H107223FE8 +107223FE8:lI101|H107226F50 +107226F50:lI114|H107229AE8 +107229AE8:lI101|H10722C320 +10722C320:lI114|H10722E878 +10722E878:lI46|H107230B30 +107230B30:lI98|H107232B48 +107232B48:lI101|H107234850 +107234850:lI97|H107236298 +107236298:lI109|N +1071F3130:Mn3:H1071F56C0,H1071F56D0,H1071F56E0 +1071F56C0:lH1071F7F18|N +1071F7F18:lI119|H1071FAB70 +1071FAB70:lI120|H1071FDAB0 +1071FDAB0:lI67|H107200B68 +107200B68:lI111|H107203D10 +107203D10:lI110|H107206F40 +107206F40:lI116|H10720A1C8 +10720A1C8:lI101|H10720D428 +10720D428:lI120|H107210618 +107210618:lI116|H107213898 +107213898:lI77|H107216C50 +107216C50:lI101|H10721A1D0 +10721A1D0:lI110|H10721D7A0 +10721D7A0:lI117|H107220D10 +107220D10:lI69|H107223FB8 +107223FB8:lI118|H107226F20 +107226F20:lI101|H107229AB8 +107229AB8:lI110|H10722C300 +10722C300:lI116|H10722E858 +10722E858:lI46|H107230B10 +107230B10:lI98|H107232B28 +107232B28:lI101|H107234830 +107234830:lI97|H107236278 +107236278:lI109|N +1071F56E0:lH1071F7F38|N +1071F7F38:lI119|H1071FAB90 +1071FAB90:lI120|H1071FDAD0 +1071FDAD0:lI68|H107200B88 +107200B88:lI67|H107203D30 +107203D30:lI46|H107206F60 +107206F60:lI98|H10720A1E8 +10720A1E8:lI101|H10720D448 +10720D448:lI97|H107210638 +107210638:lI109|N +1071F56D0:lH1071F7F28|N +1071F7F28:lI119|H1071FAB80 +1071FAB80:lI120|H1071FDAC0 +1071FDAC0:lI71|H107200B78 +107200B78:lI114|H107203D20 +107203D20:lI97|H107206F50 +107206F50:lI112|H10720A1D8 +10720A1D8:lI104|H10720D438 +10720D438:lI105|H107210628 +107210628:lI99|H1072138A8 +1072138A8:lI115|H107216C60 +107216C60:lI71|H10721A1E0 +10721A1E0:lI114|H10721D7B0 +10721D7B0:lI97|H107220D20 +107220D20:lI100|H107223FC8 +107223FC8:lI105|H107226F30 +107226F30:lI101|H107229AC8 +107229AC8:lI110|H10722C310 +10722C310:lI116|H10722E868 +10722E868:lI83|H107230B20 +107230B20:lI116|H107232B38 +107232B38:lI111|H107234840 +107234840:lI112|H107236288 +107236288:lI115|H107237A60 +107237A60:lI46|H107239098 +107239098:lI98|H10723A530 +10723A530:lI101|H10723B820 +10723B820:lI97|H10723C880 +10723C880:lI109|N +1071F12E8:Mn7:H1071F3088,H1071F30A0,H1071F30B0,H1071F30C0,H1071F30D8,H1071F30E8,H1071F3100 +1071F3088:Mn2:H1071F55F0,H1071F5600 +1071F55F0:lH1071F7E48|N +1071F7E48:lI119|H1071FAAA0 +1071FAAA0:lI120|H1071FD9E0 +1071FD9E0:lI80|H107200A98 +107200A98:lI111|H107203C40 +107203C40:lI112|H107206E70 +107206E70:lI117|H10720A0F8 +10720A0F8:lI112|H10720D358 +10720D358:lI87|H107210548 +107210548:lI105|H1072137C8 +1072137C8:lI110|H107216B80 +107216B80:lI100|H10721A100 +10721A100:lI111|H10721D6E0 +10721D6E0:lI119|H107220C50 +107220C50:lI46|H107223F18 +107223F18:lI98|H107226EA0 +107226EA0:lI101|H107229A38 +107229A38:lI97|H10722C2A0 +10722C2A0:lI109|N +1071F5600:lH1071F7E58|N +1071F7E58:lI119|H1071FAAB0 +1071FAAB0:lI120|H1071FD9F0 +1071FD9F0:lI67|H107200AA8 +107200AA8:lI104|H107203C50 +107203C50:lI111|H107206E80 +107206E80:lI105|H10720A108 +10720A108:lI99|H10720D368 +10720D368:lI101|H107210558 +107210558:lI98|H1072137D8 +1072137D8:lI111|H107216B90 +107216B90:lI111|H10721A110 +10721A110:lI107|H10721D6F0 +10721D6F0:lI46|H107220C60 +107220C60:lI98|H107223F28 +107223F28:lI101|H107226EB0 +107226EB0:lI97|H107229A48 +107229A48:lI109|N +1071F3100:Mn2:H1071F5680,H1071F5690 +1071F5680:lH1071F7ED8|N +1071F7ED8:lI119|H1071FAB30 +1071FAB30:lI120|H1071FDA70 +1071FDA70:lI66|H107200B28 +107200B28:lI117|H107203CD0 +107203CD0:lI102|H107206F00 +107206F00:lI102|H10720A188 +10720A188:lI101|H10720D3E8 +10720D3E8:lI114|H1072105D8 +1072105D8:lI101|H107213858 +107213858:lI100|H107216C10 +107216C10:lI80|H10721A190 +10721A190:lI97|H10721D760 +10721D760:lI105|H107220CD0 +107220CD0:lI110|H107223F88 +107223F88:lI116|H107226EF0 +107226EF0:lI68|H107229A88 +107229A88:lI67|H10722C2E0 +10722C2E0:lI46|H10722E838 +10722E838:lI98|H107230AF0 +107230AF0:lI101|H107232B18 +107232B18:lI97|H107234820 +107234820:lI109|N +1071F5690:lH1071F7EE8|N +1071F7EE8:lI119|H1071FAB40 +1071FAB40:lI120|H1071FDA80 +1071FDA80:lI72|H107200B38 +107200B38:lI116|H107203CE0 +107203CE0:lI109|H107206F10 +107206F10:lI108|H10720A198 +10720A198:lI76|H10720D3F8 +10720D3F8:lI105|H1072105E8 +1072105E8:lI110|H107213868 +107213868:lI107|H107216C20 +107216C20:lI69|H10721A1A0 +10721A1A0:lI118|H10721D770 +10721D770:lI101|H107220CE0 +107220CE0:lI110|H107223F98 +107223F98:lI116|H107226F00 +107226F00:lI46|H107229A98 +107229A98:lI98|H10722C2F0 +10722C2F0:lI101|H10722E848 +10722E848:lI97|H107230B00 +107230B00:lI109|N +1071F30E8:Mn2:H1071F5660,H1071F5670 +1071F5660:lH1071F7EB8|N +1071F7EB8:lI119|H1071FAB10 +1071FAB10:lI120|H1071FDA50 +1071FDA50:lI67|H107200B08 +107200B08:lI104|H107203CB0 +107203CB0:lI101|H107206EE0 +107206EE0:lI99|H10720A168 +10720A168:lI107|H10720D3C8 +10720D3C8:lI66|H1072105B8 +1072105B8:lI111|H107213838 +107213838:lI120|H107216BF0 +107216BF0:lI46|H10721A170 +10721A170:lI98|H10721D750 +10721D750:lI101|H107220CC0 +107220CC0:lI97|H107223F78 +107223F78:lI109|N +1071F5670:lH1071F7EC8|N +1071F7EC8:lI119|H1071FAB20 +1071FAB20:lI120|H1071FDA60 +1071FDA60:lI95|H107200B18 +107200B18:lI109|H107203CC0 +107203CC0:lI105|H107206EF0 +107206EF0:lI115|H10720A178 +10720A178:lI99|H10720D3D8 +10720D3D8:lI46|H1072105C8 +1072105C8:lI98|H107213848 +107213848:lI101|H107216C00 +107216C00:lI97|H10721A180 +10721A180:lI109|N +1071F30D8:lH1071F5650|N +1071F5650:lI119|H1071F7EA8 +1071F7EA8:lI120|H1071FAB00 +1071FAB00:lI84|H1071FDA40 +1071FDA40:lI101|H107200AF8 +107200AF8:lI120|H107203CA0 +107203CA0:lI116|H107206ED0 +107206ED0:lI65|H10720A158 +10720A158:lI116|H10720D3B8 +10720D3B8:lI116|H1072105A8 +1072105A8:lI114|H107213828 +107213828:lI46|H107216BE0 +107216BE0:lI98|H10721A160 +10721A160:lI101|H10721D740 +10721D740:lI97|H107220CB0 +107220CB0:lI109|N +1071F30C0:Mn2:H1071F5630,H1071F5640 +1071F5630:lH1071F7E88|N +1071F7E88:lI119|H1071FAAE0 +1071FAAE0:lI120|H1071FDA20 +1071FDA20:lI84|H107200AD8 +107200AD8:lI111|H107203C80 +107203C80:lI111|H107206EB0 +107206EB0:lI108|H10720A138 +10720A138:lI98|H10720D398 +10720D398:lI111|H107210588 +107210588:lI111|H107213808 +107213808:lI107|H107216BC0 +107216BC0:lI46|H10721A140 +10721A140:lI98|H10721D720 +10721D720:lI101|H107220C90 +107220C90:lI97|H107223F58 +107223F58:lI109|N +1071F5640:lH1071F7E98|N +1071F7E98:lI119|H1071FAAF0 +1071FAAF0:lI120|H1071FDA30 +1071FDA30:lI66|H107200AE8 +107200AE8:lI105|H107203C90 +107203C90:lI116|H107206EC0 +107206EC0:lI109|H10720A148 +10720A148:lI97|H10720D3A8 +10720D3A8:lI112|H107210598 +107210598:lI68|H107213818 +107213818:lI97|H107216BD0 +107216BD0:lI116|H10721A150 +10721A150:lI97|H10721D730 +10721D730:lI79|H107220CA0 +107220CA0:lI98|H107223F68 +107223F68:lI106|H107226EE0 +107226EE0:lI101|H107229A78 +107229A78:lI99|H10722C2D0 +10722C2D0:lI116|H10722E828 +10722E828:lI46|H107230AE0 +107230AE0:lI98|H107232B08 +107232B08:lI101|H107234810 +107234810:lI97|H107236268 +107236268:lI109|N +1071F30B0:lH1071F5620|N +1071F5620:lI119|H1071F7E78 +1071F7E78:lI120|H1071FAAD0 +1071FAAD0:lI70|H1071FDA10 +1071FDA10:lI105|H107200AC8 +107200AC8:lI108|H107203C70 +107203C70:lI101|H107206EA0 +107206EA0:lI68|H10720A128 +10720A128:lI97|H10720D388 +10720D388:lI116|H107210578 +107210578:lI97|H1072137F8 +1072137F8:lI79|H107216BB0 +107216BB0:lI98|H10721A130 +10721A130:lI106|H10721D710 +10721D710:lI101|H107220C80 +107220C80:lI99|H107223F48 +107223F48:lI116|H107226ED0 +107226ED0:lI46|H107229A68 +107229A68:lI98|H10722C2C0 +10722C2C0:lI101|H10722E818 +10722E818:lI97|H107230AD0 +107230AD0:lI109|N +1071F30A0:lH1071F5610|N +1071F5610:lI119|H1071F7E68 +1071F7E68:lI120|H1071FAAC0 +1071FAAC0:lI80|H1071FDA00 +1071FDA00:lI114|H107200AB8 +107200AB8:lI105|H107203C60 +107203C60:lI110|H107206E90 +107206E90:lI116|H10720A118 +10720A118:lI80|H10720D378 +10720D378:lI114|H107210568 +107210568:lI101|H1072137E8 +1072137E8:lI118|H107216BA0 +107216BA0:lI105|H10721A120 +10721A120:lI101|H10721D700 +10721D700:lI119|H107220C70 +107220C70:lI46|H107223F38 +107223F38:lI98|H107226EC0 +107226EC0:lI101|H107229A58 +107229A58:lI97|H10722C2B0 +10722C2B0:lI109|N +1071F12A0:Mn8:H1071F2FF0,H1071F3008,H1071F3018,H1071F3030,H1071F3040,H1071F3050,H1071F3060,H1071F3070 +1071F2FF0:Mn2:H1071F5530,H1071F5540 +1071F5530:lH1071F7D78|N +1071F7D78:lI119|H1071FA9D0 +1071FA9D0:lI120|H1071FD910 +1071FD910:lI83|H1072009C8 +1072009C8:lI97|H107203B70 +107203B70:lI115|H107206DA0 +107206DA0:lI104|H10720A038 +10720A038:lI69|H10720D298 +10720D298:lI118|H107210488 +107210488:lI101|H107213708 +107213708:lI110|H107216AC0 +107216AC0:lI116|H10721A040 +10721A040:lI46|H10721D620 +10721D620:lI98|H107220BB0 +107220BB0:lI101|H107223E78 +107223E78:lI97|H107226E10 +107226E10:lI109|N +1071F5540:lH1071F7D88|N +1071F7D88:lI119|H1071FA9E0 +1071FA9E0:lI120|H1071FD920 +1071FD920:lI71|H1072009D8 +1072009D8:lI114|H107203B80 +107203B80:lI97|H107206DB0 +107206DB0:lI112|H10720A048 +10720A048:lI104|H10720D2A8 +10720D2A8:lI105|H107210498 +107210498:lI99|H107213718 +107213718:lI115|H107216AD0 +107216AD0:lI82|H10721A050 +10721A050:lI101|H10721D630 +10721D630:lI110|H107220BC0 +107220BC0:lI100|H107223E88 +107223E88:lI101|H107226E20 +107226E20:lI114|H1072299B8 +1072299B8:lI101|H10722C230 +10722C230:lI114|H10722E7A8 +10722E7A8:lI46|H107230A60 +107230A60:lI98|H107232AA8 +107232AA8:lI101|H1072347D0 +1072347D0:lI97|H107236248 +107236248:lI109|N +1071F3070:Mn2:H1071F55D0,H1071F55E0 +1071F55D0:lH1071F7E28|N +1071F7E28:lI119|H1071FAA80 +1071FAA80:lI120|H1071FD9C0 +1071FD9C0:lI69|H107200A78 +107200A78:lI114|H107203C20 +107203C20:lI97|H107206E50 +107206E50:lI115|H10720A0D8 +10720A0D8:lI101|H10720D338 +10720D338:lI69|H107210528 +107210528:lI118|H1072137A8 +1072137A8:lI101|H107216B60 +107216B60:lI110|H10721A0E0 +10721A0E0:lI116|H10721D6C0 +10721D6C0:lI46|H107220C40 +107220C40:lI98|H107223F08 +107223F08:lI101|H107226E90 +107226E90:lI97|H107229A28 +107229A28:lI109|N +1071F55E0:lH1071F7E38|N +1071F7E38:lI119|H1071FAA90 +1071FAA90:lI120|H1071FD9D0 +1071FD9D0:lI68|H107200A88 +107200A88:lI105|H107203C30 +107203C30:lI97|H107206E60 +107206E60:lI108|H10720A0E8 +10720A0E8:lI111|H10720D348 +10720D348:lI103|H107210538 +107210538:lI46|H1072137B8 +1072137B8:lI98|H107216B70 +107216B70:lI101|H10721A0F0 +10721A0F0:lI97|H10721D6D0 +10721D6D0:lI109|N +1071F3060:lH1071F55C0|N +1071F55C0:lI119|H1071F7E18 +1071F7E18:lI120|H1071FAA70 +1071FAA70:lI68|H1071FD9B0 +1071FD9B0:lI114|H107200A68 +107200A68:lI111|H107203C10 +107203C10:lI112|H107206E40 +107206E40:lI70|H10720A0C8 +10720A0C8:lI105|H10720D328 +10720D328:lI108|H107210518 +107210518:lI101|H107213798 +107213798:lI115|H107216B50 +107216B50:lI69|H10721A0D0 +10721A0D0:lI118|H10721D6B0 +10721D6B0:lI101|H107220C30 +107220C30:lI110|H107223EF8 +107223EF8:lI116|H107226E80 +107226E80:lI46|H107229A18 +107229A18:lI98|H10722C290 +10722C290:lI101|H10722E808 +10722E808:lI97|H107230AC0 +107230AC0:lI109|N +1071F3050:lH1071F55B0|N +1071F55B0:lI119|H1071F7E08 +1071F7E08:lI120|H1071FAA60 +1071FAA60:lI46|H1071FD9A0 +1071FD9A0:lI98|H107200A58 +107200A58:lI101|H107203C00 +107203C00:lI97|H107206E30 +107206E30:lI109|N +1071F3040:lH1071F55A0|N +1071F55A0:lI119|H1071F7DF8 +1071F7DF8:lI120|H1071FAA50 +1071FAA50:lI73|H1071FD990 +1071FD990:lI110|H107200A48 +107200A48:lI105|H107203BF0 +107203BF0:lI116|H107206E20 +107206E20:lI68|H10720A0B8 +10720A0B8:lI105|H10720D318 +10720D318:lI97|H107210508 +107210508:lI108|H107213788 +107213788:lI111|H107216B40 +107216B40:lI103|H10721A0C0 +10721A0C0:lI69|H10721D6A0 +10721D6A0:lI118|H107220C20 +107220C20:lI101|H107223EE8 +107223EE8:lI110|H107226E70 +107226E70:lI116|H107229A08 +107229A08:lI46|H10722C280 +10722C280:lI98|H10722E7F8 +10722E7F8:lI101|H107230AB0 +107230AB0:lI97|H107232AF8 +107232AF8:lI109|N +1071F3030:lH1071F5590|N +1071F5590:lI119|H1071F7DE8 +1071F7DE8:lI120|H1071FAA40 +1071FAA40:lI73|H1071FD980 +1071FD980:lI109|H107200A38 +107200A38:lI97|H107203BE0 +107203BE0:lI103|H107206E10 +107206E10:lI101|H10720A0A8 +10720A0A8:lI76|H10720D308 +10720D308:lI105|H1072104F8 +1072104F8:lI115|H107213778 +107213778:lI116|H107216B30 +107216B30:lI46|H10721A0B0 +10721A0B0:lI98|H10721D690 +10721D690:lI101|H107220C10 +107220C10:lI97|H107223ED8 +107223ED8:lI109|N +1071F3018:Mn2:H1071F5560,H1071F5578 +1071F5560:Mn2:H1071F7DA8,H1071F7DB8 +1071F7DA8:lH1071FAA00|N +1071FAA00:lI119|H1071FD940 +1071FD940:lI120|H1072009F8 +1072009F8:lI68|H107203BA0 +107203BA0:lI97|H107206DD0 +107206DD0:lI116|H10720A068 +10720A068:lI101|H10720D2C8 +10720D2C8:lI80|H1072104B8 +1072104B8:lI105|H107213738 +107213738:lI99|H107216AF0 +107216AF0:lI107|H10721A070 +10721A070:lI101|H10721D650 +10721D650:lI114|H107220BD0 +107220BD0:lI67|H107223E98 +107223E98:lI116|H107226E30 +107226E30:lI114|H1072299C8 +1072299C8:lI108|H10722C240 +10722C240:lI46|H10722E7B8 +10722E7B8:lI98|H107230A70 +107230A70:lI101|H107232AB8 +107232AB8:lI97|H1072347E0 +1072347E0:lI109|N +1071F7DB8:lH1071FAA10|N +1071FAA10:lI119|H1071FD950 +1071FD950:lI120|H107200A08 +107200A08:lI80|H107203BB0 +107203BB0:lI114|H107206DE0 +107206DE0:lI101|H10720A078 +10720A078:lI118|H10720D2D8 +10720D2D8:lI105|H1072104C8 +1072104C8:lI101|H107213748 +107213748:lI119|H107216B00 +107216B00:lI67|H10721A080 +10721A080:lI97|H10721D660 +10721D660:lI110|H107220BE0 +107220BE0:lI118|H107223EA8 +107223EA8:lI97|H107226E40 +107226E40:lI115|H1072299D8 +1072299D8:lI46|H10722C250 +10722C250:lI98|H10722E7C8 +10722E7C8:lI101|H107230A80 +107230A80:lI97|H107232AC8 +107232AC8:lI109|N +1071F5578:Mn2:H1071F7DC8,H1071F7DD8 +1071F7DC8:lH1071FAA20|N +1071FAA20:lI119|H1071FD960 +1071FD960:lI120|H107200A18 +107200A18:lI71|H107203BC0 +107203BC0:lI114|H107206DF0 +107206DF0:lI105|H10720A088 +10720A088:lI100|H10720D2E8 +10720D2E8:lI67|H1072104D8 +1072104D8:lI101|H107213758 +107213758:lI108|H107216B10 +107216B10:lI108|H10721A090 +10721A090:lI84|H10721D670 +10721D670:lI101|H107220BF0 +107220BF0:lI120|H107223EB8 +107223EB8:lI116|H107226E50 +107226E50:lI69|H1072299E8 +1072299E8:lI100|H10722C260 +10722C260:lI105|H10722E7D8 +10722E7D8:lI116|H107230A90 +107230A90:lI111|H107232AD8 +107232AD8:lI114|H1072347F0 +1072347F0:lI46|H107236258 +107236258:lI98|H107237A50 +107237A50:lI101|H107239088 +107239088:lI97|H10723A520 +10723A520:lI109|N +1071F7DD8:lH1071FAA30|N +1071FAA30:lI119|H1071FD970 +1071FD970:lI120|H107200A28 +107200A28:lI83|H107203BD0 +107203BD0:lI112|H107206E00 +107206E00:lI108|H10720A098 +10720A098:lI105|H10720D2F8 +10720D2F8:lI116|H1072104E8 +1072104E8:lI116|H107213768 +107213768:lI101|H107216B20 +107216B20:lI114|H10721A0A0 +10721A0A0:lI87|H10721D680 +10721D680:lI105|H107220C00 +107220C00:lI110|H107223EC8 +107223EC8:lI100|H107226E60 +107226E60:lI111|H1072299F8 +1072299F8:lI119|H10722C270 +10722C270:lI46|H10722E7E8 +10722E7E8:lI98|H107230AA0 +107230AA0:lI101|H107232AE8 +107232AE8:lI97|H107234800 +107234800:lI109|N +1071F3008:lH1071F5550|N +1071F5550:lI119|H1071F7D98 +1071F7D98:lI120|H1071FA9F0 +1071FA9F0:lI79|H1071FD930 +1071FD930:lI118|H1072009E8 +1072009E8:lI101|H107203B90 +107203B90:lI114|H107206DC0 +107206DC0:lI108|H10720A058 +10720A058:lI97|H10720D2B8 +10720D2B8:lI121|H1072104A8 +1072104A8:lI46|H107213728 +107213728:lI98|H107216AE0 +107216AE0:lI101|H10721A060 +10721A060:lI97|H10721D640 +10721D640:lI109|N +1071F1238:MnC:H1071F2F00,H1071F2F10,H1071F2F20,H1071F2F30,H1071F2F50,H1071F2F60,H1071F2F78,H1071F2F90,H1071F2FA8,H1071F2FB8,H1071F2FD0,H1071F2FE0 +1071F2F00:lH1071F5408|N +1071F5408:lI119|H1071F7C48 +1071F7C48:lI120|H1071FA8A0 +1071FA8A0:lI71|H1071FD7E0 +1071FD7E0:lI114|H107200898 +107200898:lI105|H107203A40 +107203A40:lI100|H107206C70 +107206C70:lI67|H107209F08 +107209F08:lI101|H10720D168 +10720D168:lI108|H107210358 +107210358:lI108|H1072135D8 +1072135D8:lI65|H107216990 +107216990:lI116|H107219F10 +107219F10:lI116|H10721D500 +10721D500:lI114|H107220A90 +107220A90:lI46|H107223D68 +107223D68:lI98|H107226D20 +107226D20:lI101|H107229918 +107229918:lI97|H10722C1A0 +10722C1A0:lI109|N +1071F2FE0:lH1071F5520|N +1071F5520:lI119|H1071F7D68 +1071F7D68:lI120|H1071FA9C0 +1071FA9C0:lI67|H1071FD900 +1071FD900:lI97|H1072009B8 +1072009B8:lI108|H107203B60 +107203B60:lI101|H107206D90 +107206D90:lI110|H10720A028 +10720A028:lI100|H10720D288 +10720D288:lI97|H107210478 +107210478:lI114|H1072136F8 +1072136F8:lI69|H107216AB0 +107216AB0:lI118|H10721A030 +10721A030:lI101|H10721D610 +10721D610:lI110|H107220BA0 +107220BA0:lI116|H107223E68 +107223E68:lI46|H107226E00 +107226E00:lI98|H1072299A8 +1072299A8:lI101|H10722C220 +10722C220:lI97|H10722E798 +10722E798:lI109|N +1071F2FD0:lH1071F5510|N +1071F5510:lI119|H1071F7D58 +1071F7D58:lI120|H1071FA9B0 +1071FA9B0:lI83|H1071FD8F0 +1071FD8F0:lI99|H1072009A8 +1072009A8:lI114|H107203B50 +107203B50:lI111|H107206D80 +107206D80:lI108|H10720A018 +10720A018:lI108|H10720D278 +10720D278:lI66|H107210468 +107210468:lI97|H1072136E8 +1072136E8:lI114|H107216AA0 +107216AA0:lI46|H10721A020 +10721A020:lI98|H10721D600 +10721D600:lI101|H107220B90 +107220B90:lI97|H107223E58 +107223E58:lI109|N +1071F2FB8:Mn2:H1071F54F0,H1071F5500 +1071F54F0:lH1071F7D38|N +1071F7D38:lI119|H1071FA990 +1071FA990:lI120|H1071FD8D0 +1071FD8D0:lI71|H107200988 +107200988:lI114|H107203B30 +107203B30:lI97|H107206D60 +107206D60:lI112|H107209FF8 +107209FF8:lI104|H10720D258 +10720D258:lI105|H107210448 +107210448:lI99|H1072136C8 +1072136C8:lI115|H107216A80 +107216A80:lI79|H10721A000 +10721A000:lI98|H10721D5E0 +10721D5E0:lI106|H107220B70 +107220B70:lI101|H107223E38 +107223E38:lI99|H107226DE0 +107226DE0:lI116|H107229988 +107229988:lI46|H10722C200 +10722C200:lI98|H10722E778 +10722E778:lI101|H107230A50 +107230A50:lI97|H107232A98 +107232A98:lI109|N +1071F5500:lH1071F7D48|N +1071F7D48:lI119|H1071FA9A0 +1071FA9A0:lI120|H1071FD8E0 +1071FD8E0:lI84|H107200998 +107200998:lI111|H107203B40 +107203B40:lI103|H107206D70 +107206D70:lI103|H10720A008 +10720A008:lI108|H10720D268 +10720D268:lI101|H107210458 +107210458:lI66|H1072136D8 +1072136D8:lI117|H107216A90 +107216A90:lI116|H10721A010 +10721A010:lI116|H10721D5F0 +10721D5F0:lI111|H107220B80 +107220B80:lI110|H107223E48 +107223E48:lI46|H107226DF0 +107226DF0:lI98|H107229998 +107229998:lI101|H10722C210 +10722C210:lI97|H10722E788 +10722E788:lI109|N +1071F2FA8:lH1071F54E0|N +1071F54E0:lI119|H1071F7D28 +1071F7D28:lI120|H1071FA980 +1071FA980:lI76|H1071FD8C0 +1071FD8C0:lI105|H107200978 +107200978:lI115|H107203B20 +107203B20:lI116|H107206D50 +107206D50:lI86|H107209FE8 +107209FE8:lI105|H10720D248 +10720D248:lI101|H107210438 +107210438:lI119|H1072136B8 +1072136B8:lI46|H107216A70 +107216A70:lI98|H107219FF0 +107219FF0:lI101|H10721D5D0 +10721D5D0:lI97|H107220B60 +107220B60:lI109|N +1071F2F90:Mn2:H1071F54C0,H1071F54D0 +1071F54C0:lH1071F7D08|N +1071F7D08:lI119|H1071FA960 +1071FA960:lI120|H1071FD8A0 +1071FD8A0:lI88|H107200958 +107200958:lI109|H107203B00 +107203B00:lI108|H107206D30 +107206D30:lI82|H107209FC8 +107209FC8:lI101|H10720D228 +10720D228:lI115|H107210418 +107210418:lI111|H107213698 +107213698:lI117|H107216A50 +107216A50:lI114|H107219FD0 +107219FD0:lI99|H10721D5B0 +10721D5B0:lI101|H107220B40 +107220B40:lI46|H107223E18 +107223E18:lI98|H107226DD0 +107226DD0:lI101|H107229978 +107229978:lI97|H10722C1F0 +10722C1F0:lI109|N +1071F54D0:lH1071F7D18|N +1071F7D18:lI119|H1071FA970 +1071FA970:lI120|H1071FD8B0 +1071FD8B0:lI76|H107200968 +107200968:lI105|H107203B10 +107203B10:lI115|H107206D40 +107206D40:lI116|H107209FD8 +107209FD8:lI98|H10720D238 +10720D238:lI111|H107210428 +107210428:lI111|H1072136A8 +1072136A8:lI107|H107216A60 +107216A60:lI46|H107219FE0 +107219FE0:lI98|H10721D5C0 +10721D5C0:lI101|H107220B50 +107220B50:lI97|H107223E28 +107223E28:lI109|N +1071F2F78:Mn2:H1071F54A0,H1071F54B0 +1071F54A0:lH1071F7CE8|N +1071F7CE8:lI119|H1071FA940 +1071FA940:lI120|H1071FD880 +1071FD880:lI73|H107200938 +107200938:lI100|H107203AE0 +107203AE0:lI108|H107206D10 +107206D10:lI101|H107209FA8 +107209FA8:lI69|H10720D208 +10720D208:lI118|H1072103F8 +1072103F8:lI101|H107213678 +107213678:lI110|H107216A30 +107216A30:lI116|H107219FB0 +107219FB0:lI46|H10721D590 +10721D590:lI98|H107220B20 +107220B20:lI101|H107223DF8 +107223DF8:lI97|H107226DB0 +107226DB0:lI109|N +1071F54B0:lH1071F7CF8|N +1071F7CF8:lI119|H1071FA950 +1071FA950:lI120|H1071FD890 +1071FD890:lI70|H107200948 +107200948:lI111|H107203AF0 +107203AF0:lI110|H107206D20 +107206D20:lI116|H107209FB8 +107209FB8:lI80|H10720D218 +10720D218:lI105|H107210408 +107210408:lI99|H107213688 +107213688:lI107|H107216A40 +107216A40:lI101|H107219FC0 +107219FC0:lI114|H10721D5A0 +10721D5A0:lI69|H107220B30 +107220B30:lI118|H107223E08 +107223E08:lI101|H107226DC0 +107226DC0:lI110|H107229968 +107229968:lI116|H10722C1E0 +10722C1E0:lI46|H10722E768 +10722E768:lI98|H107230A40 +107230A40:lI101|H107232A88 +107232A88:lI97|H1072347C0 +1072347C0:lI109|N +1071F2F60:Mn2:H1071F5480,H1071F5490 +1071F5480:lH1071F7CC8|N +1071F7CC8:lI119|H1071FA920 +1071FA920:lI120|H1071FD860 +1071FD860:lI84|H107200918 +107200918:lI114|H107203AC0 +107203AC0:lI101|H107206CF0 +107206CF0:lI101|H107209F88 +107209F88:lI69|H10720D1E8 +10720D1E8:lI118|H1072103D8 +1072103D8:lI101|H107213658 +107213658:lI110|H107216A10 +107216A10:lI116|H107219F90 +107219F90:lI46|H10721D570 +10721D570:lI98|H107220B00 +107220B00:lI101|H107223DD8 +107223DD8:lI97|H107226D90 +107226D90:lI109|N +1071F5490:lH1071F7CD8|N +1071F7CD8:lI119|H1071FA930 +1071FA930:lI120|H1071FD870 +1071FD870:lI83|H107200928 +107200928:lI105|H107203AD0 +107203AD0:lI122|H107206D00 +107206D00:lI101|H107209F98 +107209F98:lI69|H10720D1F8 +10720D1F8:lI118|H1072103E8 +1072103E8:lI101|H107213668 +107213668:lI110|H107216A20 +107216A20:lI116|H107219FA0 +107219FA0:lI46|H10721D580 +10721D580:lI98|H107220B10 +107220B10:lI101|H107223DE8 +107223DE8:lI97|H107226DA0 +107226DA0:lI109|N +1071F2F50:lH1071F5470|N +1071F5470:lI119|H1071F7CB8 +1071F7CB8:lI120|H1071FA910 +1071FA910:lI70|H1071FD850 +1071FD850:lI105|H107200908 +107200908:lI110|H107203AB0 +107203AB0:lI100|H107206CE0 +107206CE0:lI82|H107209F78 +107209F78:lI101|H10720D1D8 +10720D1D8:lI112|H1072103C8 +1072103C8:lI108|H107213648 +107213648:lI97|H107216A00 +107216A00:lI99|H107219F80 +107219F80:lI101|H10721D560 +10721D560:lI68|H107220AF0 +107220AF0:lI105|H107223DC8 +107223DC8:lI97|H107226D80 +107226D80:lI108|H107229958 +107229958:lI111|H10722C1D0 +10722C1D0:lI103|H10722E758 +10722E758:lI46|H107230A30 +107230A30:lI98|H107232A78 +107232A78:lI101|H1072347B0 +1072347B0:lI97|H107236238 +107236238:lI109|N +1071F2F30:Mn3:H1071F5440,H1071F5450,H1071F5460 +1071F5440:lH1071F7C88|N +1071F7C88:lI119|H1071FA8E0 +1071FA8E0:lI120|H1071FD820 +1071FD820:lI80|H1072008D8 +1072008D8:lI114|H107203A80 +107203A80:lI105|H107206CB0 +107206CB0:lI110|H107209F48 +107209F48:lI116|H10720D1A8 +10720D1A8:lI68|H107210398 +107210398:lI97|H107213618 +107213618:lI116|H1072169D0 +1072169D0:lI97|H107219F50 +107219F50:lI46|H10721D530 +10721D530:lI98|H107220AC0 +107220AC0:lI101|H107223D98 +107223D98:lI97|H107226D50 +107226D50:lI109|N +1071F5460:lH1071F7CA8|N +1071F7CA8:lI119|H1071FA900 +1071FA900:lI120|H1071FD840 +1071FD840:lI84|H1072008F8 +1072008F8:lI97|H107203AA0 +107203AA0:lI115|H107206CD0 +107206CD0:lI107|H107209F68 +107209F68:lI66|H10720D1C8 +10720D1C8:lI97|H1072103B8 +1072103B8:lI114|H107213638 +107213638:lI73|H1072169F0 +1072169F0:lI99|H107219F70 +107219F70:lI111|H10721D550 +10721D550:lI110|H107220AE0 +107220AE0:lI46|H107223DB8 +107223DB8:lI98|H107226D70 +107226D70:lI101|H107229948 +107229948:lI97|H10722C1C0 +10722C1C0:lI109|N +1071F5450:lH1071F7C98|N +1071F7C98:lI119|H1071FA8F0 +1071FA8F0:lI120|H1071FD830 +1071FD830:lI70|H1072008E8 +1072008E8:lI111|H107203A90 +107203A90:lI99|H107206CC0 +107206CC0:lI117|H107209F58 +107209F58:lI115|H10720D1B8 +10720D1B8:lI69|H1072103A8 +1072103A8:lI118|H107213628 +107213628:lI101|H1072169E0 +1072169E0:lI110|H107219F60 +107219F60:lI116|H10721D540 +10721D540:lI46|H107220AD0 +107220AD0:lI98|H107223DA8 +107223DA8:lI101|H107226D60 +107226D60:lI97|H107229938 +107229938:lI109|N +1071F2F20:Mn1:H1071F5428 +1071F5428:Mn2:H1071F7C68,H1071F7C78 +1071F7C68:lH1071FA8C0|N +1071FA8C0:lI119|H1071FD800 +1071FD800:lI120|H1072008B8 +1072008B8:lI67|H107203A60 +107203A60:lI108|H107206C90 +107206C90:lI105|H107209F28 +107209F28:lI112|H10720D188 +10720D188:lI98|H107210378 +107210378:lI111|H1072135F8 +1072135F8:lI97|H1072169B0 +1072169B0:lI114|H107219F30 +107219F30:lI100|H10721D510 +10721D510:lI84|H107220AA0 +107220AA0:lI101|H107223D78 +107223D78:lI120|H107226D30 +107226D30:lI116|H107229928 +107229928:lI69|H10722C1B0 +10722C1B0:lI118|H10722E748 +10722E748:lI101|H107230A20 +107230A20:lI110|H107232A68 +107232A68:lI116|H1072347A0 +1072347A0:lI46|H107236228 +107236228:lI98|H107237A40 +107237A40:lI101|H107239078 +107239078:lI97|H10723A510 +10723A510:lI109|N +1071F7C78:lH1071FA8D0|N +1071FA8D0:lI119|H1071FD810 +1071FD810:lI120|H1072008C8 +1072008C8:lI76|H107203A70 +107203A70:lI105|H107206CA0 +107206CA0:lI115|H107209F38 +107209F38:lI116|H10720D198 +10720D198:lI73|H107210388 +107210388:lI116|H107213608 +107213608:lI101|H1072169C0 +1072169C0:lI109|H107219F40 +107219F40:lI46|H10721D520 +10721D520:lI98|H107220AB0 +107220AB0:lI101|H107223D88 +107223D88:lI97|H107226D40 +107226D40:lI109|N +1071F2F10:lH1071F5418|N +1071F5418:lI119|H1071F7C58 +1071F7C58:lI120|H1071FA8B0 +1071FA8B0:lI66|H1071FD7F0 +1071FD7F0:lI117|H1072008A8 +1072008A8:lI116|H107203A50 +107203A50:lI116|H107206C80 +107206C80:lI111|H107209F18 +107209F18:lI110|H10720D178 +10720D178:lI46|H107210368 +107210368:lI98|H1072135E8 +1072135E8:lI101|H1072169A0 +1072169A0:lI97|H107219F20 +107219F20:lI109|N +1071F11E8:Mn9:H1071F2E40,H1071F2E50,H1071F2E60,H1071F2E78,H1071F2EA0,H1071F2EB0,H1071F2EC0,H1071F2ED8,H1071F2EF0 +1071F2E40:lH1071F5318|N +1071F5318:lI119|H1071F7B58 +1071F7B58:lI120|H1071FA7B0 +1071FA7B0:lI83|H1071FD6F0 +1071FD6F0:lI121|H1072007A8 +1072007A8:lI115|H107203950 +107203950:lI67|H107206B80 +107206B80:lI111|H107209E28 +107209E28:lI108|H10720D088 +10720D088:lI111|H107210288 +107210288:lI117|H107213508 +107213508:lI114|H1072168C0 +1072168C0:lI67|H107219E40 +107219E40:lI104|H10721D430 +10721D430:lI97|H1072209D0 +1072209D0:lI110|H107223CB8 +107223CB8:lI103|H107226C80 +107226C80:lI101|H107229878 +107229878:lI100|H10722C100 +10722C100:lI69|H10722E6C8 +10722E6C8:lI118|H1072309B0 +1072309B0:lI101|H107232A18 +107232A18:lI110|H107234760 +107234760:lI116|H1072361E8 +1072361E8:lI46|H107237A10 +107237A10:lI98|H107239048 +107239048:lI101|H10723A4E0 +10723A4E0:lI97|H10723B800 +10723B800:lI109|N +1071F2EF0:lH1071F53F8|N +1071F53F8:lI119|H1071F7C38 +1071F7C38:lI120|H1071FA890 +1071FA890:lI71|H1071FD7D0 +1071FD7D0:lI114|H107200888 +107200888:lI97|H107203A30 +107203A30:lI112|H107206C60 +107206C60:lI104|H107209EF8 +107209EF8:lI105|H10720D158 +10720D158:lI99|H107210348 +107210348:lI115|H1072135C8 +1072135C8:lI70|H107216980 +107216980:lI111|H107219F00 +107219F00:lI110|H10721D4F0 +10721D4F0:lI116|H107220A80 +107220A80:lI46|H107223D58 +107223D58:lI98|H107226D10 +107226D10:lI101|H107229908 +107229908:lI97|H10722C190 +10722C190:lI109|N +1071F2ED8:Mn2:H1071F53D8,H1071F53E8 +1071F53D8:lH1071F7C18|N +1071F7C18:lI119|H1071FA870 +1071FA870:lI120|H1071FD7B0 +1071FD7B0:lI46|H107200868 +107200868:lI97|H107203A10 +107203A10:lI112|H107206C40 +107206C40:lI112|N +1071F53E8:lH1071F7C28|N +1071F7C28:lI119|H1071FA880 +1071FA880:lI120|H1071FD7C0 +1071FD7C0:lI78|H107200878 +107200878:lI111|H107203A20 +107203A20:lI116|H107206C50 +107206C50:lI105|H107209EE8 +107209EE8:lI102|H10720D148 +10720D148:lI105|H107210338 +107210338:lI99|H1072135B8 +1072135B8:lI97|H107216970 +107216970:lI116|H107219EF0 +107219EF0:lI105|H10721D4E0 +10721D4E0:lI111|H107220A70 +107220A70:lI110|H107223D48 +107223D48:lI77|H107226D00 +107226D00:lI101|H1072298F8 +1072298F8:lI115|H10722C180 +10722C180:lI115|H10722E738 +10722E738:lI97|H107230A10 +107230A10:lI103|H107232A58 +107232A58:lI101|H107234790 +107234790:lI46|H107236218 +107236218:lI98|H107237A30 +107237A30:lI101|H107239068 +107239068:lI97|H10723A500 +10723A500:lI109|N +1071F2EC0:Mn2:H1071F53B8,H1071F53C8 +1071F53B8:lH1071F7BF8|N +1071F7BF8:lI119|H1071FA850 +1071FA850:lI120|H1071FD790 +1071FD790:lI82|H107200848 +107200848:lI101|H1072039F0 +1072039F0:lI103|H107206C20 +107206C20:lI105|H107209EC8 +107209EC8:lI111|H10720D128 +10720D128:lI110|H107210318 +107210318:lI46|H107213598 +107213598:lI98|H107216950 +107216950:lI101|H107219ED0 +107219ED0:lI97|H10721D4C0 +10721D4C0:lI109|N +1071F53C8:lH1071F7C08|N +1071F7C08:lI119|H1071FA860 +1071FA860:lI120|H1071FD7A0 +1071FD7A0:lI67|H107200858 +107200858:lI111|H107203A00 +107203A00:lI108|H107206C30 +107206C30:lI111|H107209ED8 +107209ED8:lI117|H10720D138 +10720D138:lI114|H107210328 +107210328:lI68|H1072135A8 +1072135A8:lI105|H107216960 +107216960:lI97|H107219EE0 +107219EE0:lI108|H10721D4D0 +10721D4D0:lI111|H107220A60 +107220A60:lI103|H107223D38 +107223D38:lI46|H107226CF0 +107226CF0:lI98|H1072298E8 +1072298E8:lI101|H10722C170 +10722C170:lI97|H10722E728 +10722E728:lI109|N +1071F2EB0:lH1071F53A8|N +1071F53A8:lI119|H1071F7BE8 +1071F7BE8:lI120|H1071FA840 +1071FA840:lI68|H1071FD780 +1071FD780:lI67|H107200838 +107200838:lI79|H1072039E0 +1072039E0:lI118|H107206C10 +107206C10:lI101|H107209EB8 +107209EB8:lI114|H10720D118 +10720D118:lI108|H107210308 +107210308:lI97|H107213588 +107213588:lI121|H107216940 +107216940:lI46|H107219EC0 +107219EC0:lI98|H10721D4B0 +10721D4B0:lI101|H107220A50 +107220A50:lI97|H107223D28 +107223D28:lI109|N +1071F2EA0:lH1071F5398|N +1071F5398:lI119|H1071F7BD8 +1071F7BD8:lI120|H1071FA830 +1071FA830:lI77|H1071FD770 +1071FD770:lI101|H107200828 +107200828:lI110|H1072039D0 +1072039D0:lI117|H107206C00 +107206C00:lI73|H107209EA8 +107209EA8:lI116|H10720D108 +10720D108:lI101|H1072102F8 +1072102F8:lI109|H107213578 +107213578:lI46|H107216930 +107216930:lI98|H107219EB0 +107219EB0:lI101|H10721D4A0 +10721D4A0:lI97|H107220A40 +107220A40:lI109|N +1071F2E78:Mn4:H1071F5358,H1071F5368,H1071F5378,H1071F5388 +1071F5358:lH1071F7B98|N +1071F7B98:lI119|H1071FA7F0 +1071FA7F0:lI120|H1071FD730 +1071FD730:lI77|H1072007E8 +1072007E8:lI68|H107203990 +107203990:lI73|H107206BC0 +107206BC0:lI67|H107209E68 +107209E68:lI104|H10720D0C8 +10720D0C8:lI105|H1072102C8 +1072102C8:lI108|H107213548 +107213548:lI100|H107216900 +107216900:lI70|H107219E80 +107219E80:lI114|H10721D470 +10721D470:lI97|H107220A10 +107220A10:lI109|H107223CF8 +107223CF8:lI101|H107226CC0 +107226CC0:lI46|H1072298B8 +1072298B8:lI98|H10722C140 +10722C140:lI101|H10722E6F8 +10722E6F8:lI97|H1072309E0 +1072309E0:lI109|N +1071F5388:lH1071F7BC8|N +1071F7BC8:lI103|H1071FA820 +1071FA820:lI108|H1071FD760 +1071FD760:lI117|H107200818 +107200818:lI46|H1072039C0 +1072039C0:lI98|H107206BF0 +107206BF0:lI101|H107209E98 +107209E98:lI97|H10720D0F8 +10720D0F8:lI109|N +1071F5378:lH1071F7BB8|N +1071F7BB8:lI119|H1071FA810 +1071FA810:lI120|H1071FD750 +1071FD750:lI65|H107200808 +107200808:lI117|H1072039B0 +1072039B0:lI105|H107206BE0 +107206BE0:lI78|H107209E88 +107209E88:lI111|H10720D0E8 +10720D0E8:lI116|H1072102E8 +1072102E8:lI101|H107213568 +107213568:lI98|H107216920 +107216920:lI111|H107219EA0 +107219EA0:lI111|H10721D490 +10721D490:lI107|H107220A30 +107220A30:lI69|H107223D18 +107223D18:lI118|H107226CE0 +107226CE0:lI101|H1072298D8 +1072298D8:lI110|H10722C160 +10722C160:lI116|H10722E718 +10722E718:lI46|H107230A00 +107230A00:lI98|H107232A48 +107232A48:lI101|H107234780 +107234780:lI97|H107236208 +107236208:lI109|N +1071F5368:lH1071F7BA8|N +1071F7BA8:lI119|H1071FA800 +1071FA800:lI120|H1071FD740 +1071FD740:lI71|H1072007F8 +1072007F8:lI114|H1072039A0 +1072039A0:lI97|H107206BD0 +107206BD0:lI112|H107209E78 +107209E78:lI104|H10720D0D8 +10720D0D8:lI105|H1072102D8 +1072102D8:lI99|H107213558 +107213558:lI115|H107216910 +107216910:lI77|H107219E90 +107219E90:lI97|H10721D480 +10721D480:lI116|H107220A20 +107220A20:lI114|H107223D08 +107223D08:lI105|H107226CD0 +107226CD0:lI120|H1072298C8 +1072298C8:lI46|H10722C150 +10722C150:lI98|H10722E708 +10722E708:lI101|H1072309F0 +1072309F0:lI97|H107232A38 +107232A38:lI109|N +1071F2E60:Mn2:H1071F5338,H1071F5348 +1071F5338:lH1071F7B78|N +1071F7B78:lI119|H1071FA7D0 +1071FA7D0:lI120|H1071FD710 +1071FD710:lI74|H1072007C8 +1072007C8:lI111|H107203970 +107203970:lI121|H107206BA0 +107206BA0:lI115|H107209E48 +107209E48:lI116|H10720D0A8 +10720D0A8:lI105|H1072102A8 +1072102A8:lI99|H107213528 +107213528:lI107|H1072168E0 +1072168E0:lI69|H107219E60 +107219E60:lI118|H10721D450 +10721D450:lI101|H1072209F0 +1072209F0:lI110|H107223CD8 +107223CD8:lI116|H107226CA0 +107226CA0:lI46|H107229898 +107229898:lI98|H10722C120 +10722C120:lI101|H10722E6D8 +10722E6D8:lI97|H1072309C0 +1072309C0:lI109|N +1071F5348:lH1071F7B88|N +1071F7B88:lI119|H1071FA7E0 +1071FA7E0:lI120|H1071FD720 +1071FD720:lI71|H1072007D8 +1072007D8:lI114|H107203980 +107203980:lI105|H107206BB0 +107206BB0:lI100|H107209E58 +107209E58:lI67|H10720D0B8 +10720D0B8:lI101|H1072102B8 +1072102B8:lI108|H107213538 +107213538:lI108|H1072168F0 +1072168F0:lI70|H107219E70 +107219E70:lI108|H10721D460 +10721D460:lI111|H107220A00 +107220A00:lI97|H107223CE8 +107223CE8:lI116|H107226CB0 +107226CB0:lI82|H1072298A8 +1072298A8:lI101|H10722C130 +10722C130:lI110|H10722E6E8 +10722E6E8:lI100|H1072309D0 +1072309D0:lI101|H107232A28 +107232A28:lI114|H107234770 +107234770:lI101|H1072361F8 +1072361F8:lI114|H107237A20 +107237A20:lI46|H107239058 +107239058:lI98|H10723A4F0 +10723A4F0:lI101|H10723B810 +10723B810:lI97|H10723C870 +10723C870:lI109|N +1071F2E50:lH1071F5328|N +1071F5328:lI119|H1071F7B68 +1071F7B68:lI120|H1071FA7C0 +1071FA7C0:lI80|H1071FD700 +1071FD700:lI114|H1072007B8 +1072007B8:lI101|H107203960 +107203960:lI118|H107206B90 +107206B90:lI105|H107209E38 +107209E38:lI101|H10720D098 +10720D098:lI119|H107210298 +107210298:lI70|H107213518 +107213518:lI114|H1072168D0 +1072168D0:lI97|H107219E50 +107219E50:lI109|H10721D440 +10721D440:lI101|H1072209E0 +1072209E0:lI46|H107223CC8 +107223CC8:lI98|H107226C90 +107226C90:lI101|H107229888 +107229888:lI97|H10722C110 +10722C110:lI109|N +1071F1190:MnA:H1071F2D88,H1071F2DA0,H1071F2DB0,H1071F2DC8,H1071F2DD8,H1071F2DE8,H1071F2DF8,H1071F2E08,H1071F2E18,H1071F2E28 +1071F2D88:Mn2:H1071F5240,H1071F5250 +1071F5240:lH1071F7A78|N +1071F7A78:lI119|H1071FA6D0 +1071FA6D0:lI120|H1071FD610 +1071FD610:lI71|H1072006C8 +1072006C8:lI114|H107203870 +107203870:lI105|H107206AA0 +107206AA0:lI100|H107209D48 +107209D48:lI83|H10720CFA8 +10720CFA8:lI105|H1072101B8 +1072101B8:lI122|H107213438 +107213438:lI101|H1072167F0 +1072167F0:lI114|H107219D80 +107219D80:lI46|H10721D380 +10721D380:lI98|H107220930 +107220930:lI101|H107223C28 +107223C28:lI97|H107226C00 +107226C00:lI109|N +1071F5250:lH1071F7A88|N +1071F7A88:lI119|H1071FA6E0 +1071FA6E0:lI120|H1071FD620 +1071FD620:lI70|H1072006D8 +1072006D8:lI111|H107203880 +107203880:lI110|H107206AB0 +107206AB0:lI116|H107209D58 +107209D58:lI46|H10720CFB8 +10720CFB8:lI98|H1072101C8 +1072101C8:lI101|H107213448 +107213448:lI97|H107216800 +107216800:lI109|N +1071F2E28:Mn2:H1071F52F8,H1071F5308 +1071F52F8:lH1071F7B38|N +1071F7B38:lI119|H1071FA790 +1071FA790:lI120|H1071FD6D0 +1071FD6D0:lI71|H107200788 +107200788:lI114|H107203930 +107203930:lI97|H107206B60 +107206B60:lI112|H107209E08 +107209E08:lI104|H10720D068 +10720D068:lI105|H107210268 +107210268:lI99|H1072134E8 +1072134E8:lI115|H1072168A0 +1072168A0:lI80|H107219E20 +107219E20:lI97|H10721D410 +10721D410:lI116|H1072209B0 +1072209B0:lI104|H107223C98 +107223C98:lI46|H107226C60 +107226C60:lI98|H107229858 +107229858:lI101|H10722C0E0 +10722C0E0:lI97|H10722E6A8 +10722E6A8:lI109|N +1071F5308:lH1071F7B48|N +1071F7B48:lI119|H1071FA7A0 +1071FA7A0:lI120|H1071FD6E0 +1071FD6E0:lI77|H107200798 +107200798:lI111|H107203940 +107203940:lI117|H107206B70 +107206B70:lI115|H107209E18 +107209E18:lI101|H10720D078 +10720D078:lI67|H107210278 +107210278:lI97|H1072134F8 +1072134F8:lI112|H1072168B0 +1072168B0:lI116|H107219E30 +107219E30:lI117|H10721D420 +10721D420:lI114|H1072209C0 +1072209C0:lI101|H107223CA8 +107223CA8:lI67|H107226C70 +107226C70:lI104|H107229868 +107229868:lI97|H10722C0F0 +10722C0F0:lI110|H10722E6B8 +10722E6B8:lI103|H1072309A0 +1072309A0:lI101|H107232A08 +107232A08:lI100|H107234750 +107234750:lI69|H1072361D8 +1072361D8:lI118|H107237A00 +107237A00:lI101|H107239038 +107239038:lI110|H10723A4D0 +10723A4D0:lI116|H10723B7F0 +10723B7F0:lI46|H10723C860 +10723C860:lI98|H10723D6F0 +10723D6F0:lI101|H10723E450 +10723E450:lI97|H10723F060 +10723F060:lI109|N +1071F2E18:Mn1:H1071F52E0 +1071F52E0:Mn2:H1071F7B18,H1071F7B28 +1071F7B18:lH1071FA770|N +1071FA770:lI119|H1071FD6B0 +1071FD6B0:lI120|H107200768 +107200768:lI80|H107203910 +107203910:lI114|H107206B40 +107206B40:lI105|H107209DE8 +107209DE8:lI110|H10720D048 +10720D048:lI116|H107210248 +107210248:lI101|H1072134C8 +1072134C8:lI114|H107216880 +107216880:lI46|H107219E00 +107219E00:lI98|H10721D3F0 +10721D3F0:lI101|H107220990 +107220990:lI97|H107223C78 +107223C78:lI109|N +1071F7B28:lH1071FA780|N +1071FA780:lI119|H1071FD6C0 +1071FD6C0:lI120|H107200778 +107200778:lI68|H107203920 +107203920:lI105|H107206B50 +107206B50:lI115|H107209DF8 +107209DF8:lI112|H10720D058 +10720D058:lI108|H107210258 +107210258:lI97|H1072134D8 +1072134D8:lI121|H107216890 +107216890:lI67|H107219E10 +107219E10:lI104|H10721D400 +10721D400:lI97|H1072209A0 +1072209A0:lI110|H107223C88 +107223C88:lI103|H107226C50 +107226C50:lI101|H107229848 +107229848:lI100|H10722C0D0 +10722C0D0:lI69|H10722E698 +10722E698:lI118|H107230990 +107230990:lI101|H1072329F8 +1072329F8:lI110|H107234740 +107234740:lI116|H1072361C8 +1072361C8:lI46|H1072379F0 +1072379F0:lI98|H107239028 +107239028:lI101|H10723A4C0 +10723A4C0:lI97|H10723B7E0 +10723B7E0:lI109|N +1071F2E08:lH1071F52D0|N +1071F52D0:lI119|H1071F7B08 +1071F7B08:lI120|H1071FA760 +1071FA760:lI66|H1071FD6A0 +1071FD6A0:lI117|H107200758 +107200758:lI102|H107203900 +107203900:lI102|H107206B30 +107206B30:lI101|H107209DD8 +107209DD8:lI114|H10720D038 +10720D038:lI101|H107210238 +107210238:lI100|H1072134B8 +1072134B8:lI68|H107216870 +107216870:lI67|H107219DF0 +107219DF0:lI46|H10721D3E0 +10721D3E0:lI98|H107220980 +107220980:lI101|H107223C68 +107223C68:lI97|H107226C40 +107226C40:lI109|N +1071F2DF8:lH1071F52C0|N +1071F52C0:lI119|H1071F7AF8 +1071F7AF8:lI120|H1071FA750 +1071FA750:lI67|H1071FD690 +1071FD690:lI111|H107200748 +107200748:lI108|H1072038F0 +1072038F0:lI111|H107206B20 +107206B20:lI117|H107209DC8 +107209DC8:lI114|H10720D028 +10720D028:lI80|H107210228 +107210228:lI105|H1072134A8 +1072134A8:lI99|H107216860 +107216860:lI107|H107219DE0 +107219DE0:lI101|H10721D3D0 +10721D3D0:lI114|H107220970 +107220970:lI69|H107223C58 +107223C58:lI118|H107226C30 +107226C30:lI101|H107229838 +107229838:lI110|H10722C0C0 +10722C0C0:lI116|H10722E688 +10722E688:lI46|H107230980 +107230980:lI98|H1072329E8 +1072329E8:lI101|H107234730 +107234730:lI97|H1072361B8 +1072361B8:lI109|N +1071F2DE8:lH1071F52B0|N +1071F52B0:lI119|H1071F7AE8 +1071F7AE8:lI120|H1071FA740 +1071FA740:lI101|H1071FD680 +1071FD680:lI95|H107200738 +107200738:lI117|H1072038E0 +1072038E0:lI116|H107206B10 +107206B10:lI105|H107209DB8 +107209DB8:lI108|H10720D018 +10720D018:lI46|H107210218 +107210218:lI98|H107213498 +107213498:lI101|H107216850 +107216850:lI97|H107219DD0 +107219DD0:lI109|N +1071F2DD8:lH1071F52A0|N +1071F52A0:lI119|H1071F7AD8 +1071F7AD8:lI120|H1071FA730 +1071FA730:lI70|H1071FD670 +1071FD670:lI108|H107200728 +107200728:lI101|H1072038D0 +1072038D0:lI120|H107206B00 +107206B00:lI71|H107209DA8 +107209DA8:lI114|H10720D008 +10720D008:lI105|H107210208 +107210208:lI100|H107213488 +107213488:lI83|H107216840 +107216840:lI105|H107219DC0 +107219DC0:lI122|H10721D3C0 +10721D3C0:lI101|H107220960 +107220960:lI114|H107223C48 +107223C48:lI46|H107226C20 +107226C20:lI98|H107229828 +107229828:lI101|H10722C0B0 +10722C0B0:lI97|H10722E678 +10722E678:lI109|N +1071F2DC8:lH1071F5290|N +1071F5290:lI119|H1071F7AC8 +1071F7AC8:lI120|H1071FA720 +1071FA720:lI87|H1071FD660 +1071FD660:lI101|H107200718 +107200718:lI98|H1072038C0 +1072038C0:lI86|H107206AF0 +107206AF0:lI105|H107209D98 +107209D98:lI101|H10720CFF8 +10720CFF8:lI119|H1072101F8 +1072101F8:lI46|H107213478 +107213478:lI98|H107216830 +107216830:lI101|H107219DB0 +107219DB0:lI97|H10721D3B0 +10721D3B0:lI109|N +1071F2DB0:Mn2:H1071F5270,H1071F5280 +1071F5270:lH1071F7AA8|N +1071F7AA8:lI119|H1071FA700 +1071FA700:lI120|H1071FD640 +1071FD640:lI46|H1072006F8 +1072006F8:lI97|H1072038A0 +1072038A0:lI112|H107206AD0 +107206AD0:lI112|H107209D78 +107209D78:lI117|H10720CFD8 +10720CFD8:lI112|N +1071F5280:lH1071F7AB8|N +1071F7AB8:lI119|H1071FA710 +1071FA710:lI120|H1071FD650 +1071FD650:lI83|H107200708 +107200708:lI116|H1072038B0 +1072038B0:lI121|H107206AE0 +107206AE0:lI108|H107209D88 +107209D88:lI101|H10720CFE8 +10720CFE8:lI100|H1072101E8 +1072101E8:lI84|H107213468 +107213468:lI101|H107216820 +107216820:lI120|H107219DA0 +107219DA0:lI116|H10721D3A0 +10721D3A0:lI67|H107220950 +107220950:lI116|H107223C38 +107223C38:lI114|H107226C10 +107226C10:lI108|H107229818 +107229818:lI46|H10722C0A0 +10722C0A0:lI98|H10722E668 +10722E668:lI101|H107230970 +107230970:lI97|H1072329D8 +1072329D8:lI109|N +1071F2DA0:lH1071F5260|N +1071F5260:lI119|H1071F7A98 +1071F7A98:lI120|H1071FA6F0 +1071FA6F0:lI77|H1071FD630 +1071FD630:lI101|H1072006E8 +1072006E8:lI109|H107203890 +107203890:lI111|H107206AC0 +107206AC0:lI114|H107209D68 +107209D68:lI121|H10720CFC8 +10720CFC8:lI68|H1072101D8 +1072101D8:lI67|H107213458 +107213458:lI46|H107216810 +107216810:lI98|H107219D90 +107219D90:lI101|H10721D390 +10721D390:lI97|H107220940 +107220940:lI109|N +1071F1130:MnB:H1071F2CB8,H1071F2CC8,H1071F2CD8,H1071F2CF0,H1071F2D00,H1071F2D18,H1071F2D28,H1071F2D38,H1071F2D48,H1071F2D58,H1071F2D68 +1071F2CB8:lH1071F5150|N +1071F5150:lI119|H1071F7988 +1071F7988:lI120|H1071FA5E0 +1071FA5E0:lI83|H1071FD520 +1071FD520:lI99|H1072005D8 +1072005D8:lI114|H107203780 +107203780:lI111|H1072069B0 +1072069B0:lI108|H107209C58 +107209C58:lI108|H10720CEB8 +10720CEB8:lI101|H1072100C8 +1072100C8:lI100|H107213348 +107213348:lI87|H107216700 +107216700:lI105|H107219C90 +107219C90:lI110|H10721D290 +10721D290:lI100|H107220850 +107220850:lI111|H107223B48 +107223B48:lI119|H107226B30 +107226B30:lI46|H107229758 +107229758:lI98|H10722BFE0 +10722BFE0:lI101|H10722E5C8 +10722E5C8:lI97|H1072308D0 +1072308D0:lI109|N +1071F2D68:Mn3:H1071F5210,H1071F5220,H1071F5230 +1071F5210:lH1071F7A48|N +1071F7A48:lI119|H1071FA6A0 +1071FA6A0:lI120|H1071FD5E0 +1071FD5E0:lI80|H107200698 +107200698:lI111|H107203840 +107203840:lI112|H107206A70 +107206A70:lI117|H107209D18 +107209D18:lI112|H10720CF78 +10720CF78:lI84|H107210188 +107210188:lI114|H107213408 +107213408:lI97|H1072167C0 +1072167C0:lI110|H107219D50 +107219D50:lI115|H10721D350 +10721D350:lI105|H107220900 +107220900:lI101|H107223BF8 +107223BF8:lI110|H107226BE0 +107226BE0:lI116|H1072297F8 +1072297F8:lI87|H10722C080 +10722C080:lI105|H10722E648 +10722E648:lI110|H107230950 +107230950:lI100|H1072329C8 +1072329C8:lI111|H107234720 +107234720:lI119|H1072361A8 +1072361A8:lI46|H1072379E0 +1072379E0:lI98|H107239018 +107239018:lI101|H10723A4B0 +10723A4B0:lI97|H10723B7D0 +10723B7D0:lI109|N +1071F5230:lH1071F7A68|N +1071F7A68:lI119|H1071FA6C0 +1071FA6C0:lI120|H1071FD600 +1071FD600:lI67|H1072006B8 +1072006B8:lI108|H107203860 +107203860:lI105|H107206A90 +107206A90:lI101|H107209D38 +107209D38:lI110|H10720CF98 +10720CF98:lI116|H1072101A8 +1072101A8:lI68|H107213428 +107213428:lI67|H1072167E0 +1072167E0:lI46|H107219D70 +107219D70:lI98|H10721D370 +10721D370:lI101|H107220920 +107220920:lI97|H107223C18 +107223C18:lI109|N +1071F5220:lH1071F7A58|N +1071F7A58:lI119|H1071FA6B0 +1071FA6B0:lI120|H1071FD5F0 +1071FD5F0:lI66|H1072006A8 +1072006A8:lI111|H107203850 +107203850:lI111|H107206A80 +107206A80:lI107|H107209D28 +107209D28:lI67|H10720CF88 +10720CF88:lI116|H107210198 +107210198:lI114|H107213418 +107213418:lI108|H1072167D0 +1072167D0:lI69|H107219D60 +107219D60:lI118|H10721D360 +10721D360:lI101|H107220910 +107220910:lI110|H107223C08 +107223C08:lI116|H107226BF0 +107226BF0:lI46|H107229808 +107229808:lI98|H10722C090 +10722C090:lI101|H10722E658 +10722E658:lI97|H107230960 +107230960:lI109|N +1071F2D58:lH1071F5200|N +1071F5200:lI119|H1071F7A38 +1071F7A38:lI120|H1071FA690 +1071FA690:lI77|H1071FD5D0 +1071FD5D0:lI101|H107200688 +107200688:lI110|H107203830 +107203830:lI117|H107206A60 +107206A60:lI66|H107209D08 +107209D08:lI97|H10720CF68 +10720CF68:lI114|H107210178 +107210178:lI46|H1072133F8 +1072133F8:lI98|H1072167B0 +1072167B0:lI101|H107219D40 +107219D40:lI97|H10721D340 +10721D340:lI109|N +1071F2D48:lH1071F51F0|N +1071F51F0:lI119|H1071F7A28 +1071F7A28:lI120|H1071FA680 +1071FA680:lI78|H1071FD5C0 +1071FD5C0:lI97|H107200678 +107200678:lI118|H107203820 +107203820:lI105|H107206A50 +107206A50:lI103|H107209CF8 +107209CF8:lI97|H10720CF58 +10720CF58:lI116|H107210168 +107210168:lI105|H1072133E8 +1072133E8:lI111|H1072167A0 +1072167A0:lI110|H107219D30 +107219D30:lI75|H10721D330 +10721D330:lI101|H1072208F0 +1072208F0:lI121|H107223BE8 +107223BE8:lI69|H107226BD0 +107226BD0:lI118|H1072297E8 +1072297E8:lI101|H10722C070 +10722C070:lI110|H10722E638 +10722E638:lI116|H107230940 +107230940:lI46|H1072329B8 +1072329B8:lI98|H107234710 +107234710:lI101|H107236198 +107236198:lI97|H1072379D0 +1072379D0:lI109|N +1071F2D38:lH1071F51E0|N +1071F51E0:lI119|H1071F7A18 +1071F7A18:lI120|H1071FA670 +1071FA670:lI84|H1071FD5B0 +1071FD5B0:lI111|H107200668 +107200668:lI112|H107203810 +107203810:lI76|H107206A40 +107206A40:lI101|H107209CE8 +107209CE8:lI118|H10720CF48 +10720CF48:lI101|H107210158 +107210158:lI108|H1072133D8 +1072133D8:lI87|H107216790 +107216790:lI105|H107219D20 +107219D20:lI110|H10721D320 +10721D320:lI100|H1072208E0 +1072208E0:lI111|H107223BD8 +107223BD8:lI119|H107226BC0 +107226BC0:lI46|H1072297D8 +1072297D8:lI98|H10722C060 +10722C060:lI101|H10722E628 +10722E628:lI97|H107230930 +107230930:lI109|N +1071F2D28:lH1071F51D0|N +1071F51D0:lI119|H1071F7A08 +1071F7A08:lI120|H1071FA660 +1071FA660:lI83|H1071FD5A0 +1071FD5A0:lI116|H107200658 +107200658:lI97|H107203800 +107203800:lI116|H107206A30 +107206A30:lI105|H107209CD8 +107209CD8:lI99|H10720CF38 +10720CF38:lI66|H107210148 +107210148:lI105|H1072133C8 +1072133C8:lI116|H107216780 +107216780:lI109|H107219D10 +107219D10:lI97|H10721D310 +10721D310:lI112|H1072208D0 +1072208D0:lI46|H107223BC8 +107223BC8:lI98|H107226BB0 +107226BB0:lI101|H1072297C8 +1072297C8:lI97|H10722C050 +10722C050:lI109|N +1071F2D18:lH1071F51C0|N +1071F51C0:lI119|H1071F79F8 +1071F79F8:lI120|H1071FA650 +1071FA650:lI83|H1071FD590 +1071FD590:lI121|H107200648 +107200648:lI115|H1072037F0 +1072037F0:lI116|H107206A20 +107206A20:lI101|H107209CC8 +107209CC8:lI109|H10720CF28 +10720CF28:lI83|H107210138 +107210138:lI101|H1072133B8 +1072133B8:lI116|H107216770 +107216770:lI116|H107219D00 +107219D00:lI105|H10721D300 +10721D300:lI110|H1072208C0 +1072208C0:lI103|H107223BB8 +107223BB8:lI115|H107226BA0 +107226BA0:lI46|H1072297B8 +1072297B8:lI98|H10722C040 +10722C040:lI101|H10722E618 +10722E618:lI97|H107230920 +107230920:lI109|N +1071F2D00:Mn2:H1071F51A0,H1071F51B0 +1071F51A0:lH1071F79D8|N +1071F79D8:lI119|H1071FA630 +1071FA630:lI120|H1071FD570 +1071FD570:lI80|H107200628 +107200628:lI114|H1072037D0 +1072037D0:lI101|H107206A00 +107206A00:lI118|H107209CA8 +107209CA8:lI105|H10720CF08 +10720CF08:lI101|H107210118 +107210118:lI119|H107213398 +107213398:lI67|H107216750 +107216750:lI111|H107219CE0 +107219CE0:lI110|H10721D2E0 +10721D2E0:lI116|H1072208A0 +1072208A0:lI114|H107223B98 +107223B98:lI111|H107226B80 +107226B80:lI108|H107229798 +107229798:lI66|H10722C020 +10722C020:lI97|H10722E608 +10722E608:lI114|H107230910 +107230910:lI46|H1072329A8 +1072329A8:lI98|H107234700 +107234700:lI101|H107236188 +107236188:lI97|H1072379C0 +1072379C0:lI109|N +1071F51B0:lH1071F79E8|N +1071F79E8:lI119|H1071FA640 +1071FA640:lI120|H1071FD580 +1071FD580:lI65|H107200638 +107200638:lI117|H1072037E0 +1072037E0:lI105|H107206A10 +107206A10:lI80|H107209CB8 +107209CB8:lI97|H10720CF18 +10720CF18:lI110|H107210128 +107210128:lI101|H1072133A8 +1072133A8:lI73|H107216760 +107216760:lI110|H107219CF0 +107219CF0:lI102|H10721D2F0 +10721D2F0:lI111|H1072208B0 +1072208B0:lI46|H107223BA8 +107223BA8:lI98|H107226B90 +107226B90:lI101|H1072297A8 +1072297A8:lI97|H10722C030 +10722C030:lI109|N +1071F2CF0:lH1071F5190|N +1071F5190:lI119|H1071F79C8 +1071F79C8:lI120|H1071FA620 +1071FA620:lI70|H1071FD560 +1071FD560:lI105|H107200618 +107200618:lI110|H1072037C0 +1072037C0:lI100|H1072069F0 +1072069F0:lI82|H107209C98 +107209C98:lI101|H10720CEF8 +10720CEF8:lI112|H107210108 +107210108:lI108|H107213388 +107213388:lI97|H107216740 +107216740:lI99|H107219CD0 +107219CD0:lI101|H10721D2D0 +10721D2D0:lI68|H107220890 +107220890:lI97|H107223B88 +107223B88:lI116|H107226B70 +107226B70:lI97|H107229788 +107229788:lI46|H10722C010 +10722C010:lI98|H10722E5F8 +10722E5F8:lI101|H107230900 +107230900:lI97|H107232998 +107232998:lI109|N +1071F2CD8:Mn2:H1071F5170,H1071F5180 +1071F5170:lH1071F79A8|N +1071F79A8:lI119|H1071FA600 +1071FA600:lI120|H1071FD540 +1071FD540:lI77|H1072005F8 +1072005F8:lI111|H1072037A0 +1072037A0:lI118|H1072069D0 +1072069D0:lI101|H107209C78 +107209C78:lI69|H10720CED8 +10720CED8:lI118|H1072100E8 +1072100E8:lI101|H107213368 +107213368:lI110|H107216720 +107216720:lI116|H107219CB0 +107219CB0:lI46|H10721D2B0 +10721D2B0:lI98|H107220870 +107220870:lI101|H107223B68 +107223B68:lI97|H107226B50 +107226B50:lI109|N +1071F5180:lH1071F79B8|N +1071F79B8:lI119|H1071FA610 +1071FA610:lI120|H1071FD550 +1071FD550:lI72|H107200608 +107200608:lI116|H1072037B0 +1072037B0:lI109|H1072069E0 +1072069E0:lI108|H107209C88 +107209C88:lI69|H10720CEE8 +10720CEE8:lI97|H1072100F8 +1072100F8:lI115|H107213378 +107213378:lI121|H107216730 +107216730:lI80|H107219CC0 +107219CC0:lI114|H10721D2C0 +10721D2C0:lI105|H107220880 +107220880:lI110|H107223B78 +107223B78:lI116|H107226B60 +107226B60:lI105|H107229778 +107229778:lI110|H10722C000 +10722C000:lI103|H10722E5E8 +10722E5E8:lI46|H1072308F0 +1072308F0:lI98|H107232988 +107232988:lI101|H1072346F0 +1072346F0:lI97|H107236178 +107236178:lI109|N +1071F2CC8:lH1071F5160|N +1071F5160:lI119|H1071F7998 +1071F7998:lI120|H1071FA5F0 +1071FA5F0:lI65|H1071FD530 +1071FD530:lI99|H1072005E8 +1072005E8:lI99|H107203790 +107203790:lI101|H1072069C0 +1072069C0:lI108|H107209C68 +107209C68:lI101|H10720CEC8 +10720CEC8:lI114|H1072100D8 +1072100D8:lI97|H107213358 +107213358:lI116|H107216710 +107216710:lI111|H107219CA0 +107219CA0:lI114|H10721D2A0 +10721D2A0:lI84|H107220860 +107220860:lI97|H107223B58 +107223B58:lI98|H107226B40 +107226B40:lI108|H107229768 +107229768:lI101|H10722BFF0 +10722BFF0:lI46|H10722E5D8 +10722E5D8:lI98|H1072308E0 +1072308E0:lI101|H107232978 +107232978:lI97|H1072346E0 +1072346E0:lI109|N +1071F10B0:MnF:H1071F2B88,H1071F2B98,H1071F2BB0,H1071F2BC8,H1071F2BD8,H1071F2BE8,H1071F2BF8,H1071F2C10,H1071F2C20,H1071F2C40,H1071F2C50,H1071F2C60,H1071F2C78,H1071F2C88,H1071F2CA0 +1071F2B88:lH1071F4FE0|N +1071F4FE0:lI119|H1071F7818 +1071F7818:lI120|H1071FA470 +1071FA470:lI76|H1071FD3B0 +1071FD3B0:lI97|H107200468 +107200468:lI121|H107203610 +107203610:lI111|H107206840 +107206840:lI117|H107209AE8 +107209AE8:lI116|H10720CD48 +10720CD48:lI65|H10720FF58 +10720FF58:lI108|H1072131D8 +1072131D8:lI103|H107216590 +107216590:lI111|H107219B30 +107219B30:lI114|H10721D150 +10721D150:lI105|H107220710 +107220710:lI116|H107223A48 +107223A48:lI104|H107226A60 +107226A60:lI109|H107229698 +107229698:lI46|H10722BF50 +10722BF50:lI98|H10722E538 +10722E538:lI101|H107230860 +107230860:lI97|H107232928 +107232928:lI109|N +1071F2CA0:Mn2:H1071F5130,H1071F5140 +1071F5130:lH1071F7968|N +1071F7968:lI119|H1071FA5C0 +1071FA5C0:lI120|H1071FD500 +1071FD500:lI76|H1072005B8 +1072005B8:lI111|H107203760 +107203760:lI103|H107206990 +107206990:lI78|H107209C38 +107209C38:lI117|H10720CE98 +10720CE98:lI108|H1072100A8 +1072100A8:lI108|H107213328 +107213328:lI46|H1072166E0 +1072166E0:lI98|H107219C70 +107219C70:lI101|H10721D270 +10721D270:lI97|H107220830 +107220830:lI109|N +1071F5140:lH1071F7978|N +1071F7978:lI119|H1071FA5D0 +1071FA5D0:lI120|H1071FD510 +1071FD510:lI71|H1072005C8 +1072005C8:lI114|H107203770 +107203770:lI105|H1072069A0 +1072069A0:lI100|H107209C48 +107209C48:lI67|H10720CEA8 +10720CEA8:lI101|H1072100B8 +1072100B8:lI108|H107213338 +107213338:lI108|H1072166F0 +1072166F0:lI78|H107219C80 +107219C80:lI117|H10721D280 +10721D280:lI109|H107220840 +107220840:lI98|H107223B38 +107223B38:lI101|H107226B20 +107226B20:lI114|H107229748 +107229748:lI82|H10722BFD0 +10722BFD0:lI101|H10722E5B8 +10722E5B8:lI110|H1072308C0 +1072308C0:lI100|H107232968 +107232968:lI101|H1072346D0 +1072346D0:lI114|H107236168 +107236168:lI101|H1072379B0 +1072379B0:lI114|H107239008 +107239008:lI46|H10723A4A0 +10723A4A0:lI98|H10723B7C0 +10723B7C0:lI101|H10723C850 +10723C850:lI97|H10723D6E0 +10723D6E0:lI109|N +1071F2C88:Mn2:H1071F5110,H1071F5120 +1071F5110:lH1071F7948|N +1071F7948:lI119|H1071FA5A0 +1071FA5A0:lI120|H1071FD4E0 +1071FD4E0:lI67|H107200598 +107200598:lI111|H107203740 +107203740:lI108|H107206970 +107206970:lI111|H107209C18 +107209C18:lI117|H10720CE78 +10720CE78:lI114|H107210088 +107210088:lI68|H107213308 +107213308:lI97|H1072166C0 +1072166C0:lI116|H107219C60 +107219C60:lI97|H10721D260 +10721D260:lI46|H107220820 +107220820:lI98|H107223B28 +107223B28:lI101|H107226B10 +107226B10:lI97|H107229738 +107229738:lI109|N +1071F5120:lH1071F7958|N +1071F7958:lI119|H1071FA5B0 +1071FA5B0:lI120|H1071FD4F0 +1071FD4F0:lI73|H1072005A8 +1072005A8:lI99|H107203750 +107203750:lI111|H107206980 +107206980:lI110|H107209C28 +107209C28:lI46|H10720CE88 +10720CE88:lI98|H107210098 +107210098:lI101|H107213318 +107213318:lI97|H1072166D0 +1072166D0:lI109|N +1071F2C78:lH1071F5100|N +1071F5100:lI119|H1071F7938 +1071F7938:lI120|H1071FA590 +1071FA590:lI77|H1071FD4D0 +1071FD4D0:lI105|H107200588 +107200588:lI114|H107203730 +107203730:lI114|H107206960 +107206960:lI111|H107209C08 +107209C08:lI114|H10720CE68 +10720CE68:lI68|H107210078 +107210078:lI67|H1072132F8 +1072132F8:lI46|H1072166B0 +1072166B0:lI98|H107219C50 +107219C50:lI101|H10721D250 +10721D250:lI97|H107220810 +107220810:lI109|N +1071F2C60:Mn2:H1071F50E0,H1071F50F0 +1071F50E0:lH1071F7918|N +1071F7918:lI119|H1071FA570 +1071FA570:lI120|H1071FD4B0 +1071FD4B0:lI65|H107200568 +107200568:lI117|H107203710 +107203710:lI105|H107206940 +107206940:lI83|H107209BE8 +107209BE8:lI105|H10720CE48 +10720CE48:lI109|H107210058 +107210058:lI112|H1072132D8 +1072132D8:lI108|H107216690 +107216690:lI101|H107219C30 +107219C30:lI84|H10721D230 +10721D230:lI97|H1072207F0 +1072207F0:lI98|H107223B08 +107223B08:lI65|H107226AF0 +107226AF0:lI114|H107229718 +107229718:lI116|H10722BFB0 +10722BFB0:lI46|H10722E598 +10722E598:lI98|H1072308B0 +1072308B0:lI101|H107232958 +107232958:lI97|H1072346C0 +1072346C0:lI109|N +1071F50F0:lH1071F7928|N +1071F7928:lI119|H1071FA580 +1071FA580:lI120|H1071FD4C0 +1071FD4C0:lI87|H107200578 +107200578:lI101|H107203720 +107203720:lI98|H107206950 +107206950:lI86|H107209BF8 +107209BF8:lI105|H10720CE58 +10720CE58:lI101|H107210068 +107210068:lI119|H1072132E8 +1072132E8:lI69|H1072166A0 +1072166A0:lI118|H107219C40 +107219C40:lI101|H10721D240 +10721D240:lI110|H107220800 +107220800:lI116|H107223B18 +107223B18:lI46|H107226B00 +107226B00:lI98|H107229728 +107229728:lI101|H10722BFC0 +10722BFC0:lI97|H10722E5A8 +10722E5A8:lI109|N +1071F2C50:lH1071F50D0|N +1071F50D0:lI119|H1071F7908 +1071F7908:lI120|H1071FA560 +1071FA560:lI78|H1071FD4A0 +1071FD4A0:lI111|H107200558 +107200558:lI116|H107203700 +107203700:lI105|H107206930 +107206930:lI102|H107209BD8 +107209BD8:lI121|H10720CE38 +10720CE38:lI69|H107210048 +107210048:lI118|H1072132C8 +1072132C8:lI101|H107216680 +107216680:lI110|H107219C20 +107219C20:lI116|H10721D220 +10721D220:lI46|H1072207E0 +1072207E0:lI98|H107223AF8 +107223AF8:lI101|H107226AE0 +107226AE0:lI97|H107229708 +107229708:lI109|N +1071F2C40:lH1071F50C0|N +1071F50C0:lI119|H1071F78F8 +1071F78F8:lI120|H1071FA550 +1071FA550:lI65|H1071FD490 +1071FD490:lI117|H107200548 +107200548:lI105|H1072036F0 +1072036F0:lI84|H107206920 +107206920:lI97|H107209BC8 +107209BC8:lI98|H10720CE28 +10720CE28:lI65|H107210038 +107210038:lI114|H1072132B8 +1072132B8:lI116|H107216670 +107216670:lI46|H107219C10 +107219C10:lI98|H10721D210 +10721D210:lI101|H1072207D0 +1072207D0:lI97|H107223AE8 +107223AE8:lI109|N +1071F2C20:Mn3:H1071F5090,H1071F50A0,H1071F50B0 +1071F5090:lH1071F78C8|N +1071F78C8:lI119|H1071FA520 +1071FA520:lI120|H1071FD460 +1071FD460:lI77|H107200518 +107200518:lI68|H1072036C0 +1072036C0:lI73|H1072068F0 +1072068F0:lI80|H107209B98 +107209B98:lI97|H10720CDF8 +10720CDF8:lI114|H107210008 +107210008:lI101|H107213288 +107213288:lI110|H107216640 +107216640:lI116|H107219BE0 +107219BE0:lI70|H10721D1E0 +10721D1E0:lI114|H1072207A0 +1072207A0:lI97|H107223AB8 +107223AB8:lI109|H107226AC0 +107226AC0:lI101|H1072296F8 +1072296F8:lI46|H10722BFA0 +10722BFA0:lI98|H10722E588 +10722E588:lI101|H1072308A0 +1072308A0:lI97|H107232948 +107232948:lI109|N +1071F50B0:lH1071F78E8|N +1071F78E8:lI119|H1071FA540 +1071FA540:lI120|H1071FD480 +1071FD480:lI71|H107200538 +107200538:lI114|H1072036E0 +1072036E0:lI105|H107206910 +107206910:lI100|H107209BB8 +107209BB8:lI69|H10720CE18 +10720CE18:lI118|H107210028 +107210028:lI101|H1072132A8 +1072132A8:lI110|H107216660 +107216660:lI116|H107219C00 +107219C00:lI46|H10721D200 +10721D200:lI98|H1072207C0 +1072207C0:lI101|H107223AD8 +107223AD8:lI97|H107226AD0 +107226AD0:lI109|N +1071F50A0:lH1071F78D8|N +1071F78D8:lI119|H1071FA530 +1071FA530:lI120|H1071FD470 +1071FD470:lI83|H107200528 +107200528:lI99|H1072036D0 +1072036D0:lI114|H107206900 +107206900:lI101|H107209BA8 +107209BA8:lI101|H10720CE08 +10720CE08:lI110|H107210018 +107210018:lI68|H107213298 +107213298:lI67|H107216650 +107216650:lI46|H107219BF0 +107219BF0:lI98|H10721D1F0 +10721D1F0:lI101|H1072207B0 +1072207B0:lI97|H107223AC8 +107223AC8:lI109|N +1071F2C10:lH1071F5080|N +1071F5080:lI119|H1071F78B8 +1071F78B8:lI120|H1071FA510 +1071FA510:lI80|H1071FD450 +1071FD450:lI114|H107200508 +107200508:lI105|H1072036B0 +1072036B0:lI110|H1072068E0 +1072068E0:lI116|H107209B88 +107209B88:lI111|H10720CDE8 +10720CDE8:lI117|H10720FFF8 +10720FFF8:lI116|H107213278 +107213278:lI46|H107216630 +107216630:lI98|H107219BD0 +107219BD0:lI101|H10721D1D0 +10721D1D0:lI97|H107220790 +107220790:lI109|N +1071F2BF8:Mn2:H1071F5060,H1071F5070 +1071F5060:lH1071F7898|N +1071F7898:lI119|H1071FA4F0 +1071FA4F0:lI120|H1071FD430 +1071FD430:lI69|H1072004E8 +1072004E8:lI118|H107203690 +107203690:lI116|H1072068C0 +1072068C0:lI72|H107209B68 +107209B68:lI97|H10720CDC8 +10720CDC8:lI110|H10720FFD8 +10720FFD8:lI100|H107213258 +107213258:lI108|H107216610 +107216610:lI101|H107219BB0 +107219BB0:lI114|H10721D1B0 +10721D1B0:lI46|H107220770 +107220770:lI98|H107223A98 +107223A98:lI101|H107226AA0 +107226AA0:lI97|H1072296D8 +1072296D8:lI109|N +1071F5070:lH1071F78A8|N +1071F78A8:lI119|H1071FA500 +1071FA500:lI120|H1071FD440 +1071FD440:lI68|H1072004F8 +1072004F8:lI105|H1072036A0 +1072036A0:lI114|H1072068D0 +1072068D0:lI80|H107209B78 +107209B78:lI105|H10720CDD8 +10720CDD8:lI99|H10720FFE8 +10720FFE8:lI107|H107213268 +107213268:lI101|H107216620 +107216620:lI114|H107219BC0 +107219BC0:lI67|H10721D1C0 +10721D1C0:lI116|H107220780 +107220780:lI114|H107223AA8 +107223AA8:lI108|H107226AB0 +107226AB0:lI46|H1072296E8 +1072296E8:lI98|H10722BF90 +10722BF90:lI101|H10722E578 +10722E578:lI97|H107230890 +107230890:lI109|N +1071F2BE8:lH1071F5050|N +1071F5050:lI119|H1071F7888 +1071F7888:lI120|H1071FA4E0 +1071FA4E0:lI84|H1071FD420 +1071FD420:lI114|H1072004D8 +1072004D8:lI101|H107203680 +107203680:lI101|H1072068B0 +1072068B0:lI98|H107209B58 +107209B58:lI111|H10720CDB8 +10720CDB8:lI111|H10720FFC8 +10720FFC8:lI107|H107213248 +107213248:lI46|H107216600 +107216600:lI98|H107219BA0 +107219BA0:lI101|H10721D1A0 +10721D1A0:lI97|H107220760 +107220760:lI109|N +1071F2BD8:lH1071F5040|N +1071F5040:lI119|H1071F7878 +1071F7878:lI120|H1071FA4D0 +1071FA4D0:lI76|H1071FD410 +1071FD410:lI111|H1072004C8 +1072004C8:lI99|H107203670 +107203670:lI97|H1072068A0 +1072068A0:lI108|H107209B48 +107209B48:lI101|H10720CDA8 +10720CDA8:lI46|H10720FFB8 +10720FFB8:lI98|H107213238 +107213238:lI101|H1072165F0 +1072165F0:lI97|H107219B90 +107219B90:lI109|N +1071F2BC8:lH1071F5030|N +1071F5030:lI119|H1071F7868 +1071F7868:lI120|H1071FA4C0 +1071FA4C0:lI77|H1071FD400 +1071FD400:lI97|H1072004B8 +1072004B8:lI120|H107203660 +107203660:lI105|H107206890 +107206890:lI109|H107209B38 +107209B38:lI105|H10720CD98 +10720CD98:lI122|H10720FFA8 +10720FFA8:lI101|H107213228 +107213228:lI69|H1072165E0 +1072165E0:lI118|H107219B80 +107219B80:lI101|H10721D190 +10721D190:lI110|H107220750 +107220750:lI116|H107223A88 +107223A88:lI46|H107226A90 +107226A90:lI98|H1072296C8 +1072296C8:lI101|H10722BF80 +10722BF80:lI97|H10722E568 +10722E568:lI109|N +1071F2BB0:Mn2:H1071F5010,H1071F5020 +1071F5010:lH1071F7848|N +1071F7848:lI119|H1071FA4A0 +1071FA4A0:lI120|H1071FD3E0 +1071FD3E0:lI77|H107200498 +107200498:lI101|H107203640 +107203640:lI115|H107206870 +107206870:lI115|H107209B18 +107209B18:lI97|H10720CD78 +10720CD78:lI103|H10720FF88 +10720FF88:lI101|H107213208 +107213208:lI68|H1072165C0 +1072165C0:lI105|H107219B60 +107219B60:lI97|H10721D170 +10721D170:lI108|H107220730 +107220730:lI111|H107223A68 +107223A68:lI103|H107226A70 +107226A70:lI46|H1072296A8 +1072296A8:lI98|H10722BF60 +10722BF60:lI101|H10722E548 +10722E548:lI97|H107230870 +107230870:lI109|N +1071F5020:lH1071F7858|N +1071F7858:lI119|H1071FA4B0 +1071FA4B0:lI120|H1071FD3F0 +1071FD3F0:lI71|H1072004A8 +1072004A8:lI101|H107203650 +107203650:lI110|H107206880 +107206880:lI101|H107209B28 +107209B28:lI114|H10720CD88 +10720CD88:lI105|H10720FF98 +10720FF98:lI99|H107213218 +107213218:lI68|H1072165D0 +1072165D0:lI105|H107219B70 +107219B70:lI114|H10721D180 +10721D180:lI67|H107220740 +107220740:lI116|H107223A78 +107223A78:lI114|H107226A80 +107226A80:lI108|H1072296B8 +1072296B8:lI46|H10722BF70 +10722BF70:lI98|H10722E558 +10722E558:lI101|H107230880 +107230880:lI97|H107232938 +107232938:lI109|N +1071F2B98:Mn2:H1071F4FF0,H1071F5000 +1071F4FF0:lH1071F7828|N +1071F7828:lI119|H1071FA480 +1071FA480:lI120|H1071FD3C0 +1071FD3C0:lI71|H107200478 +107200478:lI76|H107203620 +107203620:lI67|H107206850 +107206850:lI97|H107209AF8 +107209AF8:lI110|H10720CD58 +10720CD58:lI118|H10720FF68 +10720FF68:lI97|H1072131E8 +1072131E8:lI115|H1072165A0 +1072165A0:lI46|H107219B40 +107219B40:lI98|H10721D160 +10721D160:lI101|H107220720 +107220720:lI97|H107223A58 +107223A58:lI109|N +1071F5000:lH1071F7838|N +1071F7838:lI119|H1071FA490 +1071FA490:lI120|H1071FD3D0 +1071FD3D0:lI83|H107200488 +107200488:lI105|H107203630 +107203630:lI122|H107206860 +107206860:lI101|H107209B08 +107209B08:lI114|H10720CD68 +10720CD68:lI46|H10720FF78 +10720FF78:lI98|H1072131F8 +1072131F8:lI101|H1072165B0 +1072165B0:lI97|H107219B50 +107219B50:lI109|N +1071F1050:MnB:H1071F2A98,H1071F2AB0,H1071F2AC8,H1071F2AE0,H1071F2AF8,H1071F2B18,H1071F2B28,H1071F2B38,H1071F2B50,H1071F2B60,H1071F2B70 +1071F2A98:Mn2:H1071F4EB0,H1071F4EC0 +1071F4EB0:lH1071F76E8|N +1071F76E8:lI119|H1071FA340 +1071FA340:lI120|H1071FD280 +1071FD280:lI80|H107200338 +107200338:lI97|H1072034E0 +1072034E0:lI110|H107206710 +107206710:lI101|H1072099B8 +1072099B8:lI108|H10720CC18 +10720CC18:lI46|H10720FE28 +10720FE28:lI98|H1072130A8 +1072130A8:lI101|H107216460 +107216460:lI97|H107219A10 +107219A10:lI109|N +1071F4EC0:lH1071F76F8|N +1071F76F8:lI119|H1071FA350 +1071FA350:lI120|H1071FD290 +1071FD290:lI83|H107200348 +107200348:lI116|H1072034F0 +1072034F0:lI97|H107206720 +107206720:lI116|H1072099C8 +1072099C8:lI105|H10720CC28 +10720CC28:lI99|H10720FE38 +10720FE38:lI76|H1072130B8 +1072130B8:lI105|H107216470 +107216470:lI110|H107219A20 +107219A20:lI101|H10721D040 +10721D040:lI46|H107220610 +107220610:lI98|H107223948 +107223948:lI101|H107226980 +107226980:lI97|H1072295F8 +1072295F8:lI109|N +1071F2B70:Mn2:H1071F4FC0,H1071F4FD0 +1071F4FC0:lH1071F77F8|N +1071F77F8:lI119|H1071FA450 +1071FA450:lI120|H1071FD390 +1071FD390:lI67|H107200448 +107200448:lI111|H1072035F0 +1072035F0:lI108|H107206820 +107206820:lI111|H107209AC8 +107209AC8:lI117|H10720CD28 +10720CD28:lI114|H10720FF38 +10720FF38:lI80|H1072131B8 +1072131B8:lI105|H107216570 +107216570:lI99|H107219B10 +107219B10:lI107|H10721D130 +10721D130:lI101|H1072206F0 +1072206F0:lI114|H107223A28 +107223A28:lI67|H107226A40 +107226A40:lI116|H107229678 +107229678:lI114|H10722BF30 +10722BF30:lI108|H10722E518 +10722E518:lI46|H107230840 +107230840:lI98|H107232908 +107232908:lI101|H1072346A0 +1072346A0:lI97|H107236148 +107236148:lI109|N +1071F4FD0:lH1071F7808|N +1071F7808:lI119|H1071FA460 +1071FA460:lI120|H1071FD3A0 +1071FD3A0:lI71|H107200458 +107200458:lI114|H107203600 +107203600:lI105|H107206830 +107206830:lI100|H107209AD8 +107209AD8:lI67|H10720CD38 +10720CD38:lI101|H10720FF48 +10720FF48:lI108|H1072131C8 +1072131C8:lI108|H107216580 +107216580:lI66|H107219B20 +107219B20:lI111|H10721D140 +10721D140:lI111|H107220700 +107220700:lI108|H107223A38 +107223A38:lI82|H107226A50 +107226A50:lI101|H107229688 +107229688:lI110|H10722BF40 +10722BF40:lI100|H10722E528 +10722E528:lI101|H107230850 +107230850:lI114|H107232918 +107232918:lI101|H1072346B0 +1072346B0:lI114|H107236158 +107236158:lI46|H1072379A0 +1072379A0:lI98|H107238FF8 +107238FF8:lI101|H10723A490 +10723A490:lI97|H10723B7B0 +10723B7B0:lI109|N +1071F2B60:lH1071F4FB0|N +1071F4FB0:lI119|H1071F77E8 +1071F77E8:lI120|H1071FA440 +1071FA440:lI70|H1071FD380 +1071FD380:lI111|H107200438 +107200438:lI110|H1072035E0 +1072035E0:lI116|H107206810 +107206810:lI68|H107209AB8 +107209AB8:lI105|H10720CD18 +10720CD18:lI97|H10720FF28 +10720FF28:lI108|H1072131A8 +1072131A8:lI111|H107216560 +107216560:lI103|H107219B00 +107219B00:lI46|H10721D120 +10721D120:lI98|H1072206E0 +1072206E0:lI101|H107223A18 +107223A18:lI97|H107226A30 +107226A30:lI109|N +1071F2B50:lH1071F4FA0|N +1071F4FA0:lI119|H1071F77D8 +1071F77D8:lI120|H1071FA430 +1071FA430:lI77|H1071FD370 +1071FD370:lI105|H107200428 +107200428:lI110|H1072035D0 +1072035D0:lI105|H107206800 +107206800:lI70|H107209AA8 +107209AA8:lI114|H10720CD08 +10720CD08:lI97|H10720FF18 +10720FF18:lI109|H107213198 +107213198:lI101|H107216550 +107216550:lI46|H107219AF0 +107219AF0:lI98|H10721D110 +10721D110:lI101|H1072206D0 +1072206D0:lI97|H107223A08 +107223A08:lI109|N +1071F2B38:Mn2:H1071F4F80,H1071F4F90 +1071F4F80:lH1071F77B8|N +1071F77B8:lI119|H1071FA410 +1071FA410:lI120|H1071FD350 +1071FD350:lI71|H107200408 +107200408:lI114|H1072035B0 +1072035B0:lI105|H1072067E0 +1072067E0:lI100|H107209A88 +107209A88:lI67|H10720CCE8 +10720CCE8:lI101|H10720FEF8 +10720FEF8:lI108|H107213178 +107213178:lI108|H107216530 +107216530:lI78|H107219AD0 +107219AD0:lI117|H10721D0F0 +10721D0F0:lI109|H1072206B0 +1072206B0:lI98|H1072239E8 +1072239E8:lI101|H107226A10 +107226A10:lI114|H107229658 +107229658:lI69|H10722BF10 +10722BF10:lI100|H10722E508 +10722E508:lI105|H107230830 +107230830:lI116|H1072328F8 +1072328F8:lI111|H107234690 +107234690:lI114|H107236138 +107236138:lI46|H107237990 +107237990:lI98|H107238FE8 +107238FE8:lI101|H10723A480 +10723A480:lI97|H10723B7A0 +10723B7A0:lI109|N +1071F4F90:lH1071F77C8|N +1071F77C8:lI119|H1071FA420 +1071FA420:lI120|H1071FD360 +1071FD360:lI83|H107200418 +107200418:lI99|H1072035C0 +1072035C0:lI114|H1072067F0 +1072067F0:lI111|H107209A98 +107209A98:lI108|H10720CCF8 +10720CCF8:lI108|H10720FF08 +10720FF08:lI69|H107213188 +107213188:lI118|H107216540 +107216540:lI101|H107219AE0 +107219AE0:lI110|H10721D100 +10721D100:lI116|H1072206C0 +1072206C0:lI46|H1072239F8 +1072239F8:lI98|H107226A20 +107226A20:lI101|H107229668 +107229668:lI97|H10722BF20 +10722BF20:lI109|N +1071F2B28:lH1071F4F70|N +1071F4F70:lI119|H1071F77A8 +1071F77A8:lI120|H1071FA400 +1071FA400:lI83|H1071FD340 +1071FD340:lI112|H1072003F8 +1072003F8:lI108|H1072035A0 +1072035A0:lI97|H1072067D0 +1072067D0:lI115|H107209A78 +107209A78:lI104|H10720CCD8 +10720CCD8:lI83|H10720FEE8 +10720FEE8:lI99|H107213168 +107213168:lI114|H107216520 +107216520:lI101|H107219AC0 +107219AC0:lI101|H10721D0E0 +10721D0E0:lI110|H1072206A0 +1072206A0:lI46|H1072239D8 +1072239D8:lI98|H107226A00 +107226A00:lI101|H107229648 +107229648:lI97|H10722BF00 +10722BF00:lI109|N +1071F2B18:lH1071F4F60|N +1071F4F60:lI119|H1071F7798 +1071F7798:lI120|H1071FA3F0 +1071FA3F0:lI80|H1071FD330 +1071FD330:lI97|H1072003E8 +1072003E8:lI105|H107203590 +107203590:lI110|H1072067C0 +1072067C0:lI116|H107209A68 +107209A68:lI68|H10720CCC8 +10720CCC8:lI67|H10720FED8 +10720FED8:lI46|H107213158 +107213158:lI98|H107216510 +107216510:lI101|H107219AB0 +107219AB0:lI97|H10721D0D0 +10721D0D0:lI109|N +1071F2AF8:Mn3:H1071F4F30,H1071F4F40,H1071F4F50 +1071F4F30:lH1071F7768|N +1071F7768:lI119|H1071FA3C0 +1071FA3C0:lI120|H1071FD300 +1071FD300:lI71|H1072003B8 +1072003B8:lI67|H107203560 +107203560:lI68|H107206790 +107206790:lI67|H107209A38 +107209A38:lI46|H10720CC98 +10720CC98:lI98|H10720FEA8 +10720FEA8:lI101|H107213128 +107213128:lI97|H1072164E0 +1072164E0:lI109|N +1071F4F50:lH1071F7788|N +1071F7788:lI119|H1071FA3E0 +1071FA3E0:lI120|H1071FD320 +1071FD320:lI84|H1072003D8 +1072003D8:lI101|H107203580 +107203580:lI120|H1072067B0 +1072067B0:lI116|H107209A58 +107209A58:lI68|H10720CCB8 +10720CCB8:lI97|H10720FEC8 +10720FEC8:lI116|H107213148 +107213148:lI97|H107216500 +107216500:lI79|H107219AA0 +107219AA0:lI98|H10721D0C0 +10721D0C0:lI106|H107220690 +107220690:lI101|H1072239C8 +1072239C8:lI99|H1072269F0 +1072269F0:lI116|H107229638 +107229638:lI46|H10722BEF0 +10722BEF0:lI98|H10722E4F8 +10722E4F8:lI101|H107230820 +107230820:lI97|H1072328E8 +1072328E8:lI109|N +1071F4F40:lH1071F7778|N +1071F7778:lI119|H1071FA3D0 +1071FA3D0:lI120|H1071FD310 +1071FD310:lI71|H1072003C8 +1072003C8:lI114|H107203570 +107203570:lI97|H1072067A0 +1072067A0:lI112|H107209A48 +107209A48:lI104|H10720CCA8 +10720CCA8:lI105|H10720FEB8 +10720FEB8:lI99|H107213138 +107213138:lI115|H1072164F0 +1072164F0:lI66|H107219A90 +107219A90:lI114|H10721D0B0 +10721D0B0:lI117|H107220680 +107220680:lI115|H1072239B8 +1072239B8:lI104|H1072269E0 +1072269E0:lI46|H107229628 +107229628:lI98|H10722BEE0 +10722BEE0:lI101|H10722E4E8 +10722E4E8:lI97|H107230810 +107230810:lI109|N +1071F2AE0:Mn2:H1071F4F10,H1071F4F20 +1071F4F10:lH1071F7748|N +1071F7748:lI119|H1071FA3A0 +1071FA3A0:lI120|H1071FD2E0 +1071FD2E0:lI67|H107200398 +107200398:lI108|H107203540 +107203540:lI105|H107206770 +107206770:lI112|H107209A18 +107209A18:lI98|H10720CC78 +10720CC78:lI111|H10720FE88 +10720FE88:lI97|H107213108 +107213108:lI114|H1072164C0 +1072164C0:lI100|H107219A70 +107219A70:lI46|H10721D090 +10721D090:lI98|H107220660 +107220660:lI101|H107223998 +107223998:lI97|H1072269C0 +1072269C0:lI109|N +1071F4F20:lH1071F7758|N +1071F7758:lI119|H1071FA3B0 +1071FA3B0:lI120|H1071FD2F0 +1071FD2F0:lI77|H1072003A8 +1072003A8:lI101|H107203550 +107203550:lI110|H107206780 +107206780:lI117|H107209A28 +107209A28:lI69|H10720CC88 +10720CC88:lI118|H10720FE98 +10720FE98:lI101|H107213118 +107213118:lI110|H1072164D0 +1072164D0:lI116|H107219A80 +107219A80:lI46|H10721D0A0 +10721D0A0:lI98|H107220670 +107220670:lI101|H1072239A8 +1072239A8:lI97|H1072269D0 +1072269D0:lI109|N +1071F2AC8:Mn2:H1071F4EF0,H1071F4F00 +1071F4EF0:lH1071F7728|N +1071F7728:lI119|H1071FA380 +1071FA380:lI120|H1071FD2C0 +1071FD2C0:lI67|H107200378 +107200378:lI108|H107203520 +107203520:lI111|H107206750 +107206750:lI115|H1072099F8 +1072099F8:lI101|H10720CC58 +10720CC58:lI69|H10720FE68 +10720FE68:lI118|H1072130E8 +1072130E8:lI101|H1072164A0 +1072164A0:lI110|H107219A50 +107219A50:lI116|H10721D070 +10721D070:lI46|H107220640 +107220640:lI98|H107223978 +107223978:lI101|H1072269A0 +1072269A0:lI97|H107229618 +107229618:lI109|N +1071F4F00:lH1071F7738|N +1071F7738:lI119|H1071FA390 +1071FA390:lI120|H1071FD2D0 +1071FD2D0:lI83|H107200388 +107200388:lI112|H107203530 +107203530:lI105|H107206760 +107206760:lI110|H107209A08 +107209A08:lI69|H10720CC68 +10720CC68:lI118|H10720FE78 +10720FE78:lI101|H1072130F8 +1072130F8:lI110|H1072164B0 +1072164B0:lI116|H107219A60 +107219A60:lI46|H10721D080 +10721D080:lI98|H107220650 +107220650:lI101|H107223988 +107223988:lI97|H1072269B0 +1072269B0:lI109|N +1071F2AB0:Mn2:H1071F4ED0,H1071F4EE0 +1071F4ED0:lH1071F7708|N +1071F7708:lI119|H1071FA360 +1071FA360:lI120|H1071FD2A0 +1071FD2A0:lI83|H107200358 +107200358:lI97|H107203500 +107203500:lI115|H107206730 +107206730:lI104|H1072099D8 +1072099D8:lI76|H10720CC38 +10720CC38:lI97|H10720FE48 +10720FE48:lI121|H1072130C8 +1072130C8:lI111|H107216480 +107216480:lI117|H107219A30 +107219A30:lI116|H10721D050 +10721D050:lI87|H107220620 +107220620:lI105|H107223958 +107223958:lI110|H107226990 +107226990:lI100|H107229608 +107229608:lI111|H10722BED0 +10722BED0:lI119|H10722E4D8 +10722E4D8:lI46|H107230800 +107230800:lI98|H1072328D8 +1072328D8:lI101|H107234680 +107234680:lI97|H107236128 +107236128:lI109|N +1071F4EE0:lH1071F7718|N +1071F7718:lI119|H1071FA370 +1071FA370:lI120|H1071FD2B0 +1071FD2B0:lI66|H107200368 +107200368:lI111|H107203510 +107203510:lI120|H107206740 +107206740:lI83|H1072099E8 +1072099E8:lI105|H10720CC48 +10720CC48:lI122|H10720FE58 +10720FE58:lI101|H1072130D8 +1072130D8:lI114|H107216490 +107216490:lI46|H107219A40 +107219A40:lI98|H10721D060 +10721D060:lI101|H107220630 +107220630:lI97|H107223968 +107223968:lI109|N +1071F1000:Mn9:H1071F29E0,H1071F29F0,H1071F2A08,H1071F2A18,H1071F2A28,H1071F2A48,H1071F2A58,H1071F2A68,H1071F2A78 +1071F29E0:lH1071F4DD0|N +1071F4DD0:lI119|H1071F7608 +1071F7608:lI120|H1071FA260 +1071FA260:lI80|H1071FD1A0 +1071FD1A0:lI105|H107200258 +107200258:lI99|H107203400 +107203400:lI107|H107206630 +107206630:lI101|H1072098D8 +1072098D8:lI114|H10720CB38 +10720CB38:lI66|H10720FD48 +10720FD48:lI97|H107212FC8 +107212FC8:lI115|H107216380 +107216380:lI101|H107219930 +107219930:lI46|H10721CF70 +10721CF70:lI98|H107220550 +107220550:lI101|H107223898 +107223898:lI97|H1072268D0 +1072268D0:lI109|N +1071F2A78:Mn3:H1071F4E80,H1071F4E90,H1071F4EA0 +1071F4E80:lH1071F76B8|N +1071F76B8:lI119|H1071FA310 +1071FA310:lI120|H1071FD250 +1071FD250:lI71|H107200308 +107200308:lI114|H1072034B0 +1072034B0:lI105|H1072066E0 +1072066E0:lI100|H107209988 +107209988:lI67|H10720CBE8 +10720CBE8:lI101|H10720FDF8 +10720FDF8:lI108|H107213078 +107213078:lI108|H107216430 +107216430:lI69|H1072199E0 +1072199E0:lI100|H10721D010 +10721D010:lI105|H1072205E0 +1072205E0:lI116|H107223918 +107223918:lI111|H107226950 +107226950:lI114|H1072295C8 +1072295C8:lI46|H10722BEA0 +10722BEA0:lI98|H10722E4A8 +10722E4A8:lI101|H1072307D0 +1072307D0:lI97|H1072328A8 +1072328A8:lI109|N +1071F4EA0:lH1071F76D8|N +1071F76D8:lI119|H1071FA330 +1071FA330:lI120|H1071FD270 +1071FD270:lI71|H107200328 +107200328:lI114|H1072034D0 +1072034D0:lI105|H107206700 +107206700:lI100|H1072099A8 +1072099A8:lI67|H10720CC08 +10720CC08:lI101|H10720FE18 +10720FE18:lI108|H107213098 +107213098:lI108|H107216450 +107216450:lI83|H107219A00 +107219A00:lI116|H10721D030 +10721D030:lI114|H107220600 +107220600:lI105|H107223938 +107223938:lI110|H107226970 +107226970:lI103|H1072295E8 +1072295E8:lI82|H10722BEC0 +10722BEC0:lI101|H10722E4C8 +10722E4C8:lI110|H1072307F0 +1072307F0:lI100|H1072328C8 +1072328C8:lI101|H107234670 +107234670:lI114|H107236118 +107236118:lI101|H107237980 +107237980:lI114|H107238FD8 +107238FD8:lI46|H10723A470 +10723A470:lI98|H10723B790 +10723B790:lI101|H10723C840 +10723C840:lI97|H10723D6D0 +10723D6D0:lI109|N +1071F4E90:lH1071F76C8|N +1071F76C8:lI119|H1071FA320 +1071FA320:lI120|H1071FD260 +1071FD260:lI83|H107200318 +107200318:lI116|H1072034C0 +1072034C0:lI121|H1072066F0 +1072066F0:lI108|H107209998 +107209998:lI101|H10720CBF8 +10720CBF8:lI100|H10720FE08 +10720FE08:lI84|H107213088 +107213088:lI101|H107216440 +107216440:lI120|H1072199F0 +1072199F0:lI116|H10721D020 +10721D020:lI69|H1072205F0 +1072205F0:lI118|H107223928 +107223928:lI101|H107226960 +107226960:lI110|H1072295D8 +1072295D8:lI116|H10722BEB0 +10722BEB0:lI46|H10722E4B8 +10722E4B8:lI98|H1072307E0 +1072307E0:lI101|H1072328B8 +1072328B8:lI97|H107234660 +107234660:lI109|N +1071F2A68:lH1071F4E70|N +1071F4E70:lI119|H1071F76A8 +1071F76A8:lI120|H1071FA300 +1071FA300:lI83|H1071FD240 +1071FD240:lI105|H1072002F8 +1072002F8:lI122|H1072034A0 +1072034A0:lI101|H1072066D0 +1072066D0:lI114|H107209978 +107209978:lI70|H10720CBD8 +10720CBD8:lI108|H10720FDE8 +10720FDE8:lI97|H107213068 +107213068:lI103|H107216420 +107216420:lI115|H1072199D0 +1072199D0:lI46|H10721D000 +10721D000:lI98|H1072205D0 +1072205D0:lI101|H107223908 +107223908:lI97|H107226940 +107226940:lI109|N +1071F2A58:lH1071F4E60|N +1071F4E60:lI119|H1071F7698 +1071F7698:lI120|H1071FA2F0 +1071FA2F0:lI77|H1071FD230 +1071FD230:lI117|H1072002E8 +1072002E8:lI108|H107203490 +107203490:lI116|H1072066C0 +1072066C0:lI105|H107209968 +107209968:lI67|H10720CBC8 +10720CBC8:lI104|H10720FDD8 +10720FDD8:lI111|H107213058 +107213058:lI105|H107216410 +107216410:lI99|H1072199C0 +1072199C0:lI101|H10721CFF0 +10721CFF0:lI68|H1072205C0 +1072205C0:lI105|H1072238F8 +1072238F8:lI97|H107226930 +107226930:lI108|H1072295B8 +1072295B8:lI111|H10722BE90 +10722BE90:lI103|H10722E498 +10722E498:lI46|H1072307C0 +1072307C0:lI98|H107232898 +107232898:lI101|H107234650 +107234650:lI97|H107236108 +107236108:lI109|N +1071F2A48:lH1071F4E50|N +1071F4E50:lI119|H1071F7688 +1071F7688:lI120|H1071FA2E0 +1071FA2E0:lI67|H1071FD220 +1071FD220:lI111|H1072002D8 +1072002D8:lI109|H107203480 +107203480:lI98|H1072066B0 +1072066B0:lI111|H107209958 +107209958:lI66|H10720CBB8 +10720CBB8:lI111|H10720FDC8 +10720FDC8:lI120|H107213048 +107213048:lI46|H107216400 +107216400:lI98|H1072199B0 +1072199B0:lI101|H10721CFE0 +10721CFE0:lI97|H1072205B0 +1072205B0:lI109|N +1071F2A28:Mn3:H1071F4E20,H1071F4E30,H1071F4E40 +1071F4E20:lH1071F7658|N +1071F7658:lI119|H1071FA2B0 +1071FA2B0:lI120|H1071FD1F0 +1071FD1F0:lI80|H1072002A8 +1072002A8:lI97|H107203450 +107203450:lI115|H107206680 +107206680:lI115|H107209928 +107209928:lI119|H10720CB88 +10720CB88:lI111|H10720FD98 +10720FD98:lI114|H107213018 +107213018:lI100|H1072163D0 +1072163D0:lI69|H107219980 +107219980:lI110|H10721CFB0 +10721CFB0:lI116|H107220580 +107220580:lI114|H1072238C8 +1072238C8:lI121|H107226900 +107226900:lI68|H107229588 +107229588:lI105|H10722BE60 +10722BE60:lI97|H10722E478 +10722E478:lI108|H1072307A0 +1072307A0:lI111|H107232878 +107232878:lI103|H107234630 +107234630:lI46|H1072360E8 +1072360E8:lI98|H107237960 +107237960:lI101|H107238FB8 +107238FB8:lI97|H10723A460 +10723A460:lI109|N +1071F4E40:lH1071F7678|N +1071F7678:lI119|H1071FA2D0 +1071FA2D0:lI120|H1071FD210 +1071FD210:lI65|H1072002C8 +1072002C8:lI114|H107203470 +107203470:lI116|H1072066A0 +1072066A0:lI80|H107209948 +107209948:lI114|H10720CBA8 +10720CBA8:lI111|H10720FDB8 +10720FDB8:lI118|H107213038 +107213038:lI105|H1072163F0 +1072163F0:lI100|H1072199A0 +1072199A0:lI101|H10721CFD0 +10721CFD0:lI114|H1072205A0 +1072205A0:lI46|H1072238E8 +1072238E8:lI98|H107226920 +107226920:lI101|H1072295A8 +1072295A8:lI97|H10722BE80 +10722BE80:lI109|N +1071F4E30:lH1071F7668|N +1071F7668:lI119|H1071FA2C0 +1071FA2C0:lI120|H1071FD200 +1071FD200:lI83|H1072002B8 +1072002B8:lI105|H107203460 +107203460:lI110|H107206690 +107206690:lI103|H107209938 +107209938:lI108|H10720CB98 +10720CB98:lI101|H10720FDA8 +10720FDA8:lI67|H107213028 +107213028:lI104|H1072163E0 +1072163E0:lI111|H107219990 +107219990:lI105|H10721CFC0 +10721CFC0:lI99|H107220590 +107220590:lI101|H1072238D8 +1072238D8:lI68|H107226910 +107226910:lI105|H107229598 +107229598:lI97|H10722BE70 +10722BE70:lI108|H10722E488 +10722E488:lI111|H1072307B0 +1072307B0:lI103|H107232888 +107232888:lI46|H107234640 +107234640:lI98|H1072360F8 +1072360F8:lI101|H107237970 +107237970:lI97|H107238FC8 +107238FC8:lI109|N +1071F2A18:lH1071F4E10|N +1071F4E10:lI119|H1071F7648 +1071F7648:lI120|H1071FA2A0 +1071FA2A0:lI95|H1071FD1E0 +1071FD1E0:lI111|H107200298 +107200298:lI98|H107203440 +107203440:lI106|H107206670 +107206670:lI101|H107209918 +107209918:lI99|H10720CB78 +10720CB78:lI116|H10720FD88 +10720FD88:lI46|H107213008 +107213008:lI98|H1072163C0 +1072163C0:lI101|H107219970 +107219970:lI97|H10721CFA0 +10721CFA0:lI109|N +1071F2A08:lH1071F4E00|N +1071F4E00:lI119|H1071F7638 +1071F7638:lI120|H1071FA290 +1071FA290:lI65|H1071FD1D0 +1071FD1D0:lI99|H107200288 +107200288:lI99|H107203430 +107203430:lI101|H107206660 +107206660:lI108|H107209908 +107209908:lI101|H10720CB68 +10720CB68:lI114|H10720FD78 +10720FD78:lI97|H107212FF8 +107212FF8:lI116|H1072163B0 +1072163B0:lI111|H107219960 +107219960:lI114|H10721CF90 +10721CF90:lI69|H107220570 +107220570:lI110|H1072238B8 +1072238B8:lI116|H1072268F0 +1072268F0:lI114|H107229578 +107229578:lI121|H10722BE50 +10722BE50:lI46|H10722E468 +10722E468:lI98|H107230790 +107230790:lI101|H107232868 +107232868:lI97|H107234620 +107234620:lI109|N +1071F29F0:Mn2:H1071F4DE0,H1071F4DF0 +1071F4DE0:lH1071F7618|N +1071F7618:lI119|H1071FA270 +1071FA270:lI120|H1071FD1B0 +1071FD1B0:lI70|H107200268 +107200268:lI114|H107203410 +107203410:lI97|H107206640 +107206640:lI109|H1072098E8 +1072098E8:lI101|H10720CB48 +10720CB48:lI46|H10720FD58 +10720FD58:lI98|H107212FD8 +107212FD8:lI101|H107216390 +107216390:lI97|H107219940 +107219940:lI109|N +1071F4DF0:lH1071F7628|N +1071F7628:lI119|H1071FA280 +1071FA280:lI120|H1071FD1C0 +1071FD1C0:lI67|H107200278 +107200278:lI104|H107203420 +107203420:lI105|H107206650 +107206650:lI108|H1072098F8 +1072098F8:lI100|H10720CB58 +10720CB58:lI70|H10720FD68 +10720FD68:lI111|H107212FE8 +107212FE8:lI99|H1072163A0 +1072163A0:lI117|H107219950 +107219950:lI115|H10721CF80 +10721CF80:lI69|H107220560 +107220560:lI118|H1072238A8 +1072238A8:lI101|H1072268E0 +1072268E0:lI110|H107229568 +107229568:lI116|H10722BE40 +10722BE40:lI46|H10722E458 +10722E458:lI98|H107230780 +107230780:lI101|H107232858 +107232858:lI97|H107234610 +107234610:lI109|N +1071F0FA0:MnB:H1071F28F8,H1071F2908,H1071F2918,H1071F2928,H1071F2938,H1071F2948,H1071F2978,H1071F2990,H1071F29A0,H1071F29B8,H1071F29D0 +1071F28F8:lH1071F4CA8|N +1071F4CA8:lI119|H1071F74D8 +1071F74D8:lI120|H1071FA130 +1071FA130:lI71|H1071FD070 +1071FD070:lI76|H107200128 +107200128:lI67|H1072032D0 +1072032D0:lI111|H107206500 +107206500:lI110|H1072097B8 +1072097B8:lI116|H10720CA18 +10720CA18:lI101|H10720FC28 +10720FC28:lI120|H107212EA8 +107212EA8:lI116|H107216260 +107216260:lI46|H107219810 +107219810:lI98|H10721CE50 +10721CE50:lI101|H107220440 +107220440:lI97|H1072237B8 +1072237B8:lI109|N +1071F29D0:lH1071F4DC0|N +1071F4DC0:lI119|H1071F75F8 +1071F75F8:lI120|H1071FA250 +1071FA250:lI78|H1071FD190 +1071FD190:lI111|H107200248 +107200248:lI116|H1072033F0 +1072033F0:lI101|H107206620 +107206620:lI98|H1072098C8 +1072098C8:lI111|H10720CB28 +10720CB28:lI111|H10720FD38 +10720FD38:lI107|H107212FB8 +107212FB8:lI46|H107216370 +107216370:lI98|H107219920 +107219920:lI101|H10721CF60 +10721CF60:lI97|H107220540 +107220540:lI109|N +1071F29B8:Mn2:H1071F4DA0,H1071F4DB0 +1071F4DA0:lH1071F75D8|N +1071F75D8:lI119|H1071FA230 +1071FA230:lI120|H1071FD170 +1071FD170:lI76|H107200228 +107200228:lI105|H1072033D0 +1072033D0:lI115|H107206600 +107206600:lI116|H1072098A8 +1072098A8:lI69|H10720CB08 +10720CB08:lI118|H10720FD18 +10720FD18:lI101|H107212F98 +107212F98:lI110|H107216350 +107216350:lI116|H107219900 +107219900:lI46|H10721CF40 +10721CF40:lI98|H107220520 +107220520:lI101|H107223878 +107223878:lI97|H1072268B0 +1072268B0:lI109|N +1071F4DB0:lH1071F75E8|N +1071F75E8:lI119|H1071FA240 +1071FA240:lI120|H1071FD180 +1071FD180:lI65|H107200238 +107200238:lI117|H1072033E0 +1072033E0:lI105|H107206610 +107206610:lI77|H1072098B8 +1072098B8:lI97|H10720CB18 +10720CB18:lI110|H10720FD28 +10720FD28:lI97|H107212FA8 +107212FA8:lI103|H107216360 +107216360:lI101|H107219910 +107219910:lI114|H10721CF50 +10721CF50:lI46|H107220530 +107220530:lI98|H107223888 +107223888:lI101|H1072268C0 +1072268C0:lI97|H107229558 +107229558:lI109|N +1071F29A0:Mn2:H1071F4D80,H1071F4D90 +1071F4D80:lH1071F75B8|N +1071F75B8:lI119|H1071FA210 +1071FA210:lI120|H1071FD150 +1071FD150:lI87|H107200208 +107200208:lI105|H1072033B0 +1072033B0:lI110|H1072065E0 +1072065E0:lI100|H107209888 +107209888:lI111|H10720CAE8 +10720CAE8:lI119|H10720FCF8 +10720FCF8:lI46|H107212F78 +107212F78:lI98|H107216330 +107216330:lI101|H1072198E0 +1072198E0:lI97|H10721CF20 +10721CF20:lI109|N +1071F4D90:lH1071F75C8|N +1071F75C8:lI119|H1071FA220 +1071FA220:lI120|H1071FD160 +1071FD160:lI80|H107200218 +107200218:lI97|H1072033C0 +1072033C0:lI108|H1072065F0 +1072065F0:lI101|H107209898 +107209898:lI116|H10720CAF8 +10720CAF8:lI116|H10720FD08 +10720FD08:lI101|H107212F88 +107212F88:lI46|H107216340 +107216340:lI98|H1072198F0 +1072198F0:lI101|H10721CF30 +10721CF30:lI97|H107220510 +107220510:lI109|N +1071F2990:lH1071F4D70|N +1071F4D70:lI119|H1071F75A8 +1071F75A8:lI120|H1071FA200 +1071FA200:lI67|H1071FD140 +1071FD140:lI97|H1072001F8 +1072001F8:lI108|H1072033A0 +1072033A0:lI101|H1072065D0 +1072065D0:lI110|H107209878 +107209878:lI100|H10720CAD8 +10720CAD8:lI97|H10720FCE8 +10720FCE8:lI114|H107212F68 +107212F68:lI68|H107216320 +107216320:lI97|H1072198D0 +1072198D0:lI116|H10721CF10 +10721CF10:lI101|H107220500 +107220500:lI65|H107223868 +107223868:lI116|H1072268A0 +1072268A0:lI116|H107229548 +107229548:lI114|H10722BE30 +10722BE30:lI46|H10722E448 +10722E448:lI98|H107230770 +107230770:lI101|H107232848 +107232848:lI97|H107234600 +107234600:lI109|N +1071F2978:Mn2:H1071F4D50,H1071F4D60 +1071F4D50:lH1071F7588|N +1071F7588:lI119|H1071FA1E0 +1071FA1E0:lI120|H1071FD120 +1071FD120:lI84|H1072001D8 +1072001D8:lI101|H107203380 +107203380:lI120|H1072065B0 +1072065B0:lI116|H107209858 +107209858:lI69|H10720CAB8 +10720CAB8:lI110|H10720FCC8 +10720FCC8:lI116|H107212F48 +107212F48:lI114|H107216300 +107216300:lI121|H1072198B0 +1072198B0:lI68|H10721CEF0 +10721CEF0:lI105|H1072204E0 +1072204E0:lI97|H107223858 +107223858:lI108|H107226890 +107226890:lI111|H107229538 +107229538:lI103|H10722BE20 +10722BE20:lI46|H10722E438 +10722E438:lI98|H107230760 +107230760:lI101|H107232838 +107232838:lI97|H1072345F0 +1072345F0:lI109|N +1071F4D60:lH1071F7598|N +1071F7598:lI119|H1071FA1F0 +1071FA1F0:lI120|H1071FD130 +1071FD130:lI84|H1072001E8 +1072001E8:lI111|H107203390 +107203390:lI111|H1072065C0 +1072065C0:lI108|H107209868 +107209868:lI84|H10720CAC8 +10720CAC8:lI105|H10720FCD8 +10720FCD8:lI112|H107212F58 +107212F58:lI46|H107216310 +107216310:lI98|H1072198C0 +1072198C0:lI101|H10721CF00 +10721CF00:lI97|H1072204F0 +1072204F0:lI109|N +1071F2948:Mn5:H1071F4CF8,H1071F4D10,H1071F4D20,H1071F4D30,H1071F4D40 +1071F4CF8:Mn2:H1071F7528,H1071F7538 +1071F7528:lH1071FA180|N +1071FA180:lI119|H1071FD0C0 +1071FD0C0:lI120|H107200178 +107200178:lI83|H107203320 +107203320:lI116|H107206550 +107206550:lI100|H1072097F8 +1072097F8:lI68|H10720CA58 +10720CA58:lI105|H10720FC68 +10720FC68:lI97|H107212EE8 +107212EE8:lI108|H1072162A0 +1072162A0:lI111|H107219850 +107219850:lI103|H10721CE90 +10721CE90:lI66|H107220480 +107220480:lI117|H1072237F8 +1072237F8:lI116|H107226850 +107226850:lI116|H1072294F8 +1072294F8:lI111|H10722BE00 +10722BE00:lI110|H10722E418 +10722E418:lI83|H107230750 +107230750:lI105|H107232828 +107232828:lI122|H1072345E0 +1072345E0:lI101|H1072360D8 +1072360D8:lI114|H107237950 +107237950:lI46|H107238FA8 +107238FA8:lI98|H10723A450 +10723A450:lI101|H10723B780 +10723B780:lI97|H10723C830 +10723C830:lI109|N +1071F7538:lH1071FA190|N +1071FA190:lI119|H1071FD0D0 +1071FD0D0:lI120|H107200188 +107200188:lI83|H107203330 +107203330:lI116|H107206560 +107206560:lI97|H107209808 +107209808:lI116|H10720CA68 +10720CA68:lI105|H10720FC78 +10720FC78:lI99|H107212EF8 +107212EF8:lI66|H1072162B0 +1072162B0:lI111|H107219860 +107219860:lI120|H10721CEA0 +10721CEA0:lI46|H107220490 +107220490:lI98|H107223808 +107223808:lI101|H107226860 +107226860:lI97|H107229508 +107229508:lI109|N +1071F4D40:lH1071F7578|N +1071F7578:lI119|H1071FA1D0 +1071FA1D0:lI120|H1071FD110 +1071FD110:lI73|H1072001C8 +1072001C8:lI99|H107203370 +107203370:lI111|H1072065A0 +1072065A0:lI110|H107209848 +107209848:lI66|H10720CAA8 +10720CAA8:lI117|H10720FCB8 +10720FCB8:lI110|H107212F38 +107212F38:lI100|H1072162F0 +1072162F0:lI108|H1072198A0 +1072198A0:lI101|H10721CEE0 +10721CEE0:lI46|H1072204D0 +1072204D0:lI98|H107223848 +107223848:lI101|H107226880 +107226880:lI97|H107229528 +107229528:lI109|N +1071F4D30:lH1071F7568|N +1071F7568:lI119|H1071FA1C0 +1071FA1C0:lI120|H1071FD100 +1071FD100:lI84|H1072001B8 +1072001B8:lI114|H107203360 +107203360:lI101|H107206590 +107206590:lI101|H107209838 +107209838:lI67|H10720CA98 +10720CA98:lI116|H10720FCA8 +10720FCA8:lI114|H107212F28 +107212F28:lI108|H1072162E0 +1072162E0:lI46|H107219890 +107219890:lI98|H10721CED0 +10721CED0:lI101|H1072204C0 +1072204C0:lI97|H107223838 +107223838:lI109|N +1071F4D20:lH1071F7558|N +1071F7558:lI119|H1071FA1B0 +1071FA1B0:lI120|H1071FD0F0 +1071FD0F0:lI67|H1072001A8 +1072001A8:lI97|H107203350 +107203350:lI108|H107206580 +107206580:lI101|H107209828 +107209828:lI110|H10720CA88 +10720CA88:lI100|H10720FC98 +10720FC98:lI97|H107212F18 +107212F18:lI114|H1072162D0 +1072162D0:lI67|H107219880 +107219880:lI116|H10721CEC0 +10721CEC0:lI114|H1072204B0 +1072204B0:lI108|H107223828 +107223828:lI46|H107226870 +107226870:lI98|H107229518 +107229518:lI101|H10722BE10 +10722BE10:lI97|H10722E428 +10722E428:lI109|N +1071F4D10:lH1071F7548|N +1071F7548:lI119|H1071FA1A0 +1071FA1A0:lI120|H1071FD0E0 +1071FD0E0:lI82|H107200198 +107200198:lI97|H107203340 +107203340:lI100|H107206570 +107206570:lI105|H107209818 +107209818:lI111|H10720CA78 +10720CA78:lI66|H10720FC88 +10720FC88:lI111|H107212F08 +107212F08:lI120|H1072162C0 +1072162C0:lI46|H107219870 +107219870:lI98|H10721CEB0 +10721CEB0:lI101|H1072204A0 +1072204A0:lI97|H107223818 +107223818:lI109|N +1071F2938:lH1071F4CE8|N +1071F4CE8:lI119|H1071F7518 +1071F7518:lI120|H1071FA170 +1071FA170:lI84|H1071FD0B0 +1071FD0B0:lI97|H107200168 +107200168:lI115|H107203310 +107203310:lI107|H107206540 +107206540:lI66|H1072097E8 +1072097E8:lI97|H10720CA48 +10720CA48:lI114|H10720FC58 +10720FC58:lI73|H107212ED8 +107212ED8:lI99|H107216290 +107216290:lI111|H107219840 +107219840:lI110|H10721CE80 +10721CE80:lI69|H107220470 +107220470:lI118|H1072237E8 +1072237E8:lI101|H107226840 +107226840:lI110|H1072294E8 +1072294E8:lI116|H10722BDF0 +10722BDF0:lI46|H10722E408 +10722E408:lI98|H107230740 +107230740:lI101|H107232818 +107232818:lI97|H1072345D0 +1072345D0:lI109|N +1071F2928:lH1071F4CD8|N +1071F4CD8:lI119|H1071F7508 +1071F7508:lI120|H1071FA160 +1071FA160:lI70|H1071FD0A0 +1071FD0A0:lI105|H107200158 +107200158:lI108|H107203300 +107203300:lI101|H107206530 +107206530:lI80|H1072097D8 +1072097D8:lI105|H10720CA38 +10720CA38:lI99|H10720FC48 +10720FC48:lI107|H107212EC8 +107212EC8:lI101|H107216280 +107216280:lI114|H107219830 +107219830:lI67|H10721CE70 +10721CE70:lI116|H107220460 +107220460:lI114|H1072237D8 +1072237D8:lI108|H107226830 +107226830:lI46|H1072294D8 +1072294D8:lI98|H10722BDE0 +10722BDE0:lI101|H10722E3F8 +10722E3F8:lI97|H107230730 +107230730:lI109|N +1071F2918:lH1071F4CC8|N +1071F4CC8:lI119|H1071F74F8 +1071F74F8:lI120|H1071FA150 +1071FA150:lI80|H1071FD090 +1071FD090:lI97|H107200148 +107200148:lI105|H1072032F0 +1072032F0:lI110|H107206520 +107206520:lI116|H1072097C8 +1072097C8:lI69|H10720CA28 +10720CA28:lI118|H10720FC38 +10720FC38:lI101|H107212EB8 +107212EB8:lI110|H107216270 +107216270:lI116|H107219820 +107219820:lI46|H10721CE60 +10721CE60:lI98|H107220450 +107220450:lI101|H1072237C8 +1072237C8:lI97|H107226820 +107226820:lI109|N +1071F2908:lH1071F4CB8|N +1071F4CB8:lI103|H1071F74E8 +1071F74E8:lI108|H1071FA140 +1071FA140:lI46|H1071FD080 +1071FD080:lI98|H107200138 +107200138:lI101|H1072032E0 +1072032E0:lI97|H107206510 +107206510:lI109|N +1071F0F50:Mn9:H1071F2858,H1071F2868,H1071F2878,H1071F2890,H1071F28A0,H1071F28B0,H1071F28C8,H1071F28D8,H1071F28E8 +1071F2858:lH1071F4BF8|N +1071F4BF8:lI119|H1071F7428 +1071F7428:lI120|H1071FA080 +1071FA080:lI70|H1071FCFC0 +1071FCFC0:lI111|H107200078 +107200078:lI110|H107203220 +107203220:lI116|H107206450 +107206450:lI80|H107209708 +107209708:lI105|H10720C968 +10720C968:lI99|H10720FB78 +10720FB78:lI107|H107212E08 +107212E08:lI101|H1072161C0 +1072161C0:lI114|H107219780 +107219780:lI67|H10721CDD0 +10721CDD0:lI116|H1072203D0 +1072203D0:lI114|H107223758 +107223758:lI108|H1072267D0 +1072267D0:lI46|H107229488 +107229488:lI98|H10722BD90 +10722BD90:lI101|H10722E3A8 +10722E3A8:lI97|H1072306F0 +1072306F0:lI109|N +1071F28E8:lH1071F4C98|N +1071F4C98:lI119|H1071F74C8 +1071F74C8:lI120|H1071FA120 +1071FA120:lI76|H1071FD060 +1071FD060:lI105|H107200118 +107200118:lI115|H1072032C0 +1072032C0:lI116|H1072064F0 +1072064F0:lI66|H1072097A8 +1072097A8:lI111|H10720CA08 +10720CA08:lI120|H10720FC18 +10720FC18:lI46|H107212E98 +107212E98:lI98|H107216250 +107216250:lI101|H107219800 +107219800:lI97|H10721CE40 +10721CE40:lI109|N +1071F28D8:lH1071F4C88|N +1071F4C88:lI119|H1071F74B8 +1071F74B8:lI120|H1071FA110 +1071FA110:lI83|H1071FD050 +1071FD050:lI104|H107200108 +107200108:lI111|H1072032B0 +1072032B0:lI119|H1072064E0 +1072064E0:lI69|H107209798 +107209798:lI118|H10720C9F8 +10720C9F8:lI101|H10720FC08 +10720FC08:lI110|H107212E88 +107212E88:lI116|H107216240 +107216240:lI46|H1072197F0 +1072197F0:lI98|H10721CE30 +10721CE30:lI101|H107220430 +107220430:lI97|H1072237A8 +1072237A8:lI109|N +1071F28C8:lH1071F4C78|N +1071F4C78:lI119|H1071F74A8 +1071F74A8:lI120|H1071FA100 +1071FA100:lI71|H1071FD040 +1071FD040:lI114|H1072000F8 +1072000F8:lI105|H1072032A0 +1072032A0:lI100|H1072064D0 +1072064D0:lI67|H107209788 +107209788:lI101|H10720C9E8 +10720C9E8:lI108|H10720FBF8 +10720FBF8:lI108|H107212E78 +107212E78:lI66|H107216230 +107216230:lI111|H1072197E0 +1072197E0:lI111|H10721CE20 +10721CE20:lI108|H107220420 +107220420:lI69|H107223798 +107223798:lI100|H107226810 +107226810:lI105|H1072294C8 +1072294C8:lI116|H10722BDD0 +10722BDD0:lI111|H10722E3E8 +10722E3E8:lI114|H107230720 +107230720:lI46|H107232808 +107232808:lI98|H1072345C0 +1072345C0:lI101|H1072360C8 +1072360C8:lI97|H107237940 +107237940:lI109|N +1071F28B0:Mn2:H1071F4C58,H1071F4C68 +1071F4C58:lH1071F7488|N +1071F7488:lI119|H1071FA0E0 +1071FA0E0:lI120|H1071FD020 +1071FD020:lI77|H1072000D8 +1072000D8:lI68|H107203280 +107203280:lI73|H1072064B0 +1072064B0:lI67|H107209768 +107209768:lI108|H10720C9C8 +10720C9C8:lI105|H10720FBD8 +10720FBD8:lI101|H107212E58 +107212E58:lI110|H107216210 +107216210:lI116|H1072197C0 +1072197C0:lI87|H10721CE00 +10721CE00:lI105|H107220400 +107220400:lI110|H107223788 +107223788:lI100|H107226800 +107226800:lI111|H1072294B8 +1072294B8:lI119|H10722BDC0 +10722BDC0:lI46|H10722E3D8 +10722E3D8:lI98|H107230710 +107230710:lI101|H1072327F8 +1072327F8:lI97|H1072345B0 +1072345B0:lI109|N +1071F4C68:lH1071F7498|N +1071F7498:lI119|H1071FA0F0 +1071FA0F0:lI120|H1071FD030 +1071FD030:lI68|H1072000E8 +1072000E8:lI105|H107203290 +107203290:lI115|H1072064C0 +1072064C0:lI112|H107209778 +107209778:lI108|H10720C9D8 +10720C9D8:lI97|H10720FBE8 +10720FBE8:lI121|H107212E68 +107212E68:lI46|H107216220 +107216220:lI98|H1072197D0 +1072197D0:lI101|H10721CE10 +10721CE10:lI97|H107220410 +107220410:lI109|N +1071F28A0:lH1071F4C48|N +1071F4C48:lI119|H1071F7478 +1071F7478:lI120|H1071FA0D0 +1071FA0D0:lI66|H1071FD010 +1071FD010:lI105|H1072000C8 +1072000C8:lI116|H107203270 +107203270:lI109|H1072064A0 +1072064A0:lI97|H107209758 +107209758:lI112|H10720C9B8 +10720C9B8:lI46|H10720FBC8 +10720FBC8:lI98|H107212E48 +107212E48:lI101|H107216200 +107216200:lI97|H1072197B0 +1072197B0:lI109|N +1071F2890:lH1071F4C38|N +1071F4C38:lI119|H1071F7468 +1071F7468:lI120|H1071FA0C0 +1071FA0C0:lI80|H1071FD000 +1071FD000:lI101|H1072000B8 +1072000B8:lI110|H107203260 +107203260:lI46|H107206490 +107206490:lI98|H107209748 +107209748:lI101|H10720C9A8 +10720C9A8:lI97|H10720FBB8 +10720FBB8:lI109|N +1071F2878:Mn2:H1071F4C18,H1071F4C28 +1071F4C18:lH1071F7448|N +1071F7448:lI119|H1071FA0A0 +1071FA0A0:lI120|H1071FCFE0 +1071FCFE0:lI71|H107200098 +107200098:lI114|H107203240 +107203240:lI97|H107206470 +107206470:lI112|H107209728 +107209728:lI104|H10720C988 +10720C988:lI105|H10720FB98 +10720FB98:lI99|H107212E28 +107212E28:lI115|H1072161E0 +1072161E0:lI67|H1072197A0 +1072197A0:lI111|H10721CDF0 +10721CDF0:lI110|H1072203F0 +1072203F0:lI116|H107223778 +107223778:lI101|H1072267F0 +1072267F0:lI120|H1072294A8 +1072294A8:lI116|H10722BDB0 +10722BDB0:lI46|H10722E3C8 +10722E3C8:lI98|H107230700 +107230700:lI101|H1072327E8 +1072327E8:lI97|H1072345A0 +1072345A0:lI109|N +1071F4C28:lH1071F7458|N +1071F7458:lI119|H1071FA0B0 +1071FA0B0:lI120|H1071FCFF0 +1071FCFF0:lI77|H1072000A8 +1072000A8:lI97|H107203250 +107203250:lI115|H107206480 +107206480:lI107|H107209738 +107209738:lI46|H10720C998 +10720C998:lI98|H10720FBA8 +10720FBA8:lI101|H107212E38 +107212E38:lI97|H1072161F0 +1072161F0:lI109|N +1071F2868:lH1071F4C08|N +1071F4C08:lI119|H1071F7438 +1071F7438:lI120|H1071FA090 +1071FA090:lI83|H1071FCFD0 +1071FCFD0:lI112|H107200088 +107200088:lI108|H107203230 +107203230:lI105|H107206460 +107206460:lI116|H107209718 +107209718:lI116|H10720C978 +10720C978:lI101|H10720FB88 +10720FB88:lI114|H107212E18 +107212E18:lI69|H1072161D0 +1072161D0:lI118|H107219790 +107219790:lI101|H10721CDE0 +10721CDE0:lI110|H1072203E0 +1072203E0:lI116|H107223768 +107223768:lI46|H1072267E0 +1072267E0:lI98|H107229498 +107229498:lI101|H10722BDA0 +10722BDA0:lI97|H10722E3B8 +10722E3B8:lI109|N +1071F0EF8:MnA:H1071F27A8,H1071F27C0,H1071F27D0,H1071F27E8,H1071F27F8,H1071F2808,H1071F2818,H1071F2828,H1071F2838,H1071F2848 +1071F27A8:Mn2:H1071F4B30,H1071F4B40 +1071F4B30:lH1071F7358|N +1071F7358:lI119|H1071F9FB0 +1071F9FB0:lI120|H1071FCEF0 +1071FCEF0:lI72|H1071FFFA8 +1071FFFA8:lI116|H107203150 +107203150:lI109|H107206380 +107206380:lI108|H107209638 +107209638:lI87|H10720C898 +10720C898:lI105|H10720FAA8 +10720FAA8:lI110|H107212D38 +107212D38:lI100|H1072160F0 +1072160F0:lI111|H1072196C0 +1072196C0:lI119|H10721CD30 +10721CD30:lI46|H107220330 +107220330:lI98|H1072236D8 +1072236D8:lI101|H107226750 +107226750:lI97|H107229418 +107229418:lI109|N +1071F4B40:lH1071F7368|N +1071F7368:lI119|H1071F9FC0 +1071F9FC0:lI120|H1071FCF00 +1071FCF00:lI67|H1071FFFB8 +1071FFFB8:lI97|H107203160 +107203160:lI114|H107206390 +107206390:lI101|H107209648 +107209648:lI116|H10720C8A8 +10720C8A8:lI46|H10720FAB8 +10720FAB8:lI98|H107212D48 +107212D48:lI101|H107216100 +107216100:lI97|H1072196D0 +1072196D0:lI109|N +1071F2848:lH1071F4BE8|N +1071F4BE8:lI119|H1071F7418 +1071F7418:lI120|H1071FA070 +1071FA070:lI101|H1071FCFB0 +1071FCFB0:lI95|H107200068 +107200068:lI109|H107203210 +107203210:lI97|H107206440 +107206440:lI115|H1072096F8 +1072096F8:lI116|H10720C958 +10720C958:lI101|H10720FB68 +10720FB68:lI114|H107212DF8 +107212DF8:lI46|H1072161B0 +1072161B0:lI98|H107219770 +107219770:lI101|H10721CDC0 +10721CDC0:lI97|H1072203C0 +1072203C0:lI109|N +1071F2838:Mn1:H1071F4BD0 +1071F4BD0:Mn2:H1071F73F8,H1071F7408 +1071F73F8:lH1071FA050|N +1071FA050:lI119|H1071FCF90 +1071FCF90:lI120|H107200048 +107200048:lI65|H1072031F0 +1072031F0:lI117|H107206420 +107206420:lI105|H1072096D8 +1072096D8:lI78|H10720C938 +10720C938:lI111|H10720FB48 +10720FB48:lI116|H107212DD8 +107212DD8:lI101|H107216190 +107216190:lI98|H107219750 +107219750:lI111|H10721CDA0 +10721CDA0:lI111|H1072203A0 +1072203A0:lI107|H107223738 +107223738:lI46|H1072267B0 +1072267B0:lI98|H107229468 +107229468:lI101|H10722BD70 +10722BD70:lI97|H10722E388 +10722E388:lI109|N +1071F7408:lH1071FA060|N +1071FA060:lI119|H1071FCFA0 +1071FCFA0:lI120|H107200058 +107200058:lI85|H107203200 +107203200:lI112|H107206430 +107206430:lI100|H1072096E8 +1072096E8:lI97|H10720C948 +10720C948:lI116|H10720FB58 +10720FB58:lI101|H107212DE8 +107212DE8:lI85|H1072161A0 +1072161A0:lI73|H107219760 +107219760:lI69|H10721CDB0 +10721CDB0:lI118|H1072203B0 +1072203B0:lI101|H107223748 +107223748:lI110|H1072267C0 +1072267C0:lI116|H107229478 +107229478:lI46|H10722BD80 +10722BD80:lI98|H10722E398 +10722E398:lI101|H1072306E0 +1072306E0:lI97|H1072327D8 +1072327D8:lI109|N +1071F2828:lH1071F4BC0|N +1071F4BC0:lI119|H1071F73E8 +1071F73E8:lI120|H1071FA040 +1071FA040:lI101|H1071FCF80 +1071FCF80:lI95|H107200038 +107200038:lI115|H1072031E0 +1072031E0:lI101|H107206410 +107206410:lI114|H1072096C8 +1072096C8:lI118|H10720C928 +10720C928:lI101|H10720FB38 +10720FB38:lI114|H107212DC8 +107212DC8:lI46|H107216180 +107216180:lI98|H107219740 +107219740:lI101|H10721CD90 +10721CD90:lI97|H107220390 +107220390:lI109|N +1071F2818:lH1071F4BB0|N +1071F4BB0:lI119|H1071F73D8 +1071F73D8:lI120|H1071FA030 +1071FA030:lI67|H1071FCF70 +1071FCF70:lI111|H107200028 +107200028:lI109|H1072031D0 +1072031D0:lI109|H107206400 +107206400:lI97|H1072096B8 +1072096B8:lI110|H10720C918 +10720C918:lI100|H10720FB28 +10720FB28:lI69|H107212DB8 +107212DB8:lI118|H107216170 +107216170:lI101|H107219730 +107219730:lI110|H10721CD80 +10721CD80:lI116|H107220380 +107220380:lI46|H107223728 +107223728:lI98|H1072267A0 +1072267A0:lI101|H107229458 +107229458:lI97|H10722BD60 +10722BD60:lI109|N +1071F2808:lH1071F4BA0|N +1071F4BA0:lI119|H1071F73C8 +1071F73C8:lI120|H1071FA020 +1071FA020:lI67|H1071FCF60 +1071FCF60:lI104|H107200018 +107200018:lI111|H1072031C0 +1072031C0:lI105|H1072063F0 +1072063F0:lI99|H1072096A8 +1072096A8:lI101|H10720C908 +10720C908:lI46|H10720FB18 +10720FB18:lI98|H107212DA8 +107212DA8:lI101|H107216160 +107216160:lI97|H107219720 +107219720:lI109|N +1071F27F8:lH1071F4B90|N +1071F4B90:lI119|H1071F73B8 +1071F73B8:lI120|H1071FA010 +1071FA010:lI71|H1071FCF50 +1071FCF50:lI114|H107200008 +107200008:lI105|H1072031B0 +1072031B0:lI100|H1072063E0 +1072063E0:lI66|H107209698 +107209698:lI97|H10720C8F8 +10720C8F8:lI103|H10720FB08 +10720FB08:lI83|H107212D98 +107212D98:lI105|H107216150 +107216150:lI122|H107219710 +107219710:lI101|H10721CD70 +10721CD70:lI114|H107220370 +107220370:lI46|H107223718 +107223718:lI98|H107226790 +107226790:lI101|H107229448 +107229448:lI97|H10722BD50 +10722BD50:lI109|N +1071F27E8:lH1071F4B80|N +1071F4B80:lI119|H1071F73A8 +1071F73A8:lI120|H1071FA000 +1071FA000:lI71|H1071FCF40 +1071FCF40:lI97|H1071FFFF8 +1071FFFF8:lI117|H1072031A0 +1072031A0:lI103|H1072063D0 +1072063D0:lI101|H107209688 +107209688:lI46|H10720C8E8 +10720C8E8:lI98|H10720FAF8 +10720FAF8:lI101|H107212D88 +107212D88:lI97|H107216140 +107216140:lI109|N +1071F27D0:Mn2:H1071F4B60,H1071F4B70 +1071F4B60:lH1071F7388|N +1071F7388:lI119|H1071F9FE0 +1071F9FE0:lI120|H1071FCF20 +1071FCF20:lI72|H1071FFFD8 +1071FFFD8:lI101|H107203180 +107203180:lI108|H1072063B0 +1072063B0:lI112|H107209668 +107209668:lI69|H10720C8C8 +10720C8C8:lI118|H10720FAD8 +10720FAD8:lI101|H107212D68 +107212D68:lI110|H107216120 +107216120:lI116|H1072196F0 +1072196F0:lI46|H10721CD50 +10721CD50:lI98|H107220350 +107220350:lI101|H1072236F8 +1072236F8:lI97|H107226770 +107226770:lI109|N +1071F4B70:lH1071F7398|N +1071F7398:lI119|H1071F9FF0 +1071F9FF0:lI120|H1071FCF30 +1071FCF30:lI67|H1071FFFE8 +1071FFFE8:lI104|H107203190 +107203190:lI101|H1072063C0 +1072063C0:lI99|H107209678 +107209678:lI107|H10720C8D8 +10720C8D8:lI76|H10720FAE8 +10720FAE8:lI105|H107212D78 +107212D78:lI115|H107216130 +107216130:lI116|H107219700 +107219700:lI66|H10721CD60 +10721CD60:lI111|H107220360 +107220360:lI120|H107223708 +107223708:lI46|H107226780 +107226780:lI98|H107229438 +107229438:lI101|H10722BD40 +10722BD40:lI97|H10722E378 +10722E378:lI109|N +1071F27C0:lH1071F4B50|N +1071F4B50:lI119|H1071F7378 +1071F7378:lI120|H1071F9FD0 +1071F9FD0:lI80|H1071FCF10 +1071FCF10:lI114|H1071FFFC8 +1071FFFC8:lI105|H107203170 +107203170:lI110|H1072063A0 +1072063A0:lI116|H107209658 +107209658:lI68|H10720C8B8 +10720C8B8:lI105|H10720FAC8 +10720FAC8:lI97|H107212D58 +107212D58:lI108|H107216110 +107216110:lI111|H1072196E0 +1072196E0:lI103|H10721CD40 +10721CD40:lI46|H107220340 +107220340:lI98|H1072236E8 +1072236E8:lI101|H107226760 +107226760:lI97|H107229428 +107229428:lI109|N +1071F02B8:lI47|H1071F0E78 +1071F0E78:lI111|H1071F2698 +1071F2698:lI112|H1071F49F0 +1071F49F0:lI116|H1071F7218 +1071F7218:lI47|H1071F9E70 +1071F9E70:lI104|H1071FCDB0 +1071FCDB0:lI111|H1071FFE68 +1071FFE68:lI109|H107203010 +107203010:lI101|H107206240 +107206240:lI98|H1072094F8 +1072094F8:lI114|H10720C758 +10720C758:lI101|H10720F968 +10720F968:lI119|H107212BF8 +107212BF8:lI47|H107215FC0 +107215FC0:lI67|H1072195A0 +1072195A0:lI101|H10721CC10 +10721CC10:lI108|H107220220 +107220220:lI108|H1072235C8 +1072235C8:lI97|H107226660 +107226660:lI114|H107229358 +107229358:lI47|H10722BCA0 +10722BCA0:lI101|H10722E2E8 +10722E2E8:lI114|H107230670 +107230670:lI108|H107232768 +107232768:lI97|H107234560 +107234560:lI110|H107236088 +107236088:lI103|H107237900 +107237900:lI47|H107238F78 +107238F78:lI50|H10723A430 +10723A430:lI54|H10723B760 +10723B760:lI46|H10723C820 +10723C820:lI48|H10723D6C0 +10723D6C0:lI46|H10723E440 +10723E440:lI50|H10723F050 +10723F050:lI47|H10723FB20 +10723FB20:lI108|H107240470 +107240470:lI105|H107240CF0 +107240CF0:lI98|H107241480 +107241480:lI47|H107241BB0 +107241BB0:lI101|H107242280 +107242280:lI114|H1072428F0 +1072428F0:lI108|H107242EF0 +107242EF0:lI97|H107243460 +107243460:lI110|H1072439A0 +1072439A0:lI103|H107243E90 +107243E90:lI47|H107244380 +107244380:lI108|H107244830 +107244830:lI105|H107244CA0 +107244CA0:lI98|H107245100 +107245100:lI47|H107245550 +107245550:lI119|H107245950 +107245950:lI120|H107245D10 +107245D10:lI45|H1072460A0 +1072460A0:lI50|H107246430 +107246430:lI46|H1072467C0 +1072467C0:lI51|H107246B50 +107246B50:lI47|H280052C20 +10724AF50:lH10724AFC0|H10724AFD8 +10724AFC0:t2:H1071F0378,H1071F0388 +1071F0388:Mf10:H1071F1440:N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N +1071F1440:t10:H1071F3338,H1071F3348,H1071F3358,H1071F3368,H1071F3378,H1071F3388,H1071F3398,H1071F33A8,H1071F33B8,H1071F33C8,H1071F33D8,H1071F33E8,H1071F33F8,H1071F3408,H1071F3418,H1071F3428 +1071F3428:lI120|H1071F5A10 +1071F5A10:lI114|H1071F8278 +1071F8278:lI101|H1071FAED0 +1071FAED0:lI102|H1071FDE10 +1071FDE10:lI95|H107200EC8 +107200EC8:lI117|H107204070 +107204070:lI116|H1072072A0 +1072072A0:lI105|H10720A528 +10720A528:lI108|H10720D738 +10720D738:lI115|H1072108E8 +1072108E8:lI46|H107213B48 +107213B48:lI98|H107216F00 +107216F00:lI101|H10721A470 +10721A470:lI97|H10721DA20 +10721DA20:lI109|N +1071F3418:lI120|H1071F5A00 +1071F5A00:lI114|H1071F8268 +1071F8268:lI101|H1071FAEC0 +1071FAEC0:lI102|H1071FDE00 +1071FDE00:lI95|H107200EB8 +107200EB8:lI115|H107204060 +107204060:lI99|H107207290 +107207290:lI97|H10720A518 +10720A518:lI110|H10720D728 +10720D728:lI110|H1072108D8 +1072108D8:lI101|H107213B38 +107213B38:lI114|H107216EF0 +107216EF0:lI46|H10721A460 +10721A460:lI98|H10721DA10 +10721DA10:lI101|H107220F60 +107220F60:lI97|H1072241A8 +1072241A8:lI109|N +1071F3408:lI120|H1071F59F0 +1071F59F0:lI114|H1071F8258 +1071F8258:lI101|H1071FAEB0 +1071FAEB0:lI102|H1071FDDF0 +1071FDDF0:lI95|H107200EA8 +107200EA8:lI114|H107204050 +107204050:lI101|H107207280 +107207280:lI97|H10720A508 +10720A508:lI100|H10720D718 +10720D718:lI101|H1072108C8 +1072108C8:lI114|H107213B28 +107213B28:lI46|H107216EE0 +107216EE0:lI98|H10721A450 +10721A450:lI101|H10721DA00 +10721DA00:lI97|H107220F50 +107220F50:lI109|N +1071F33F8:lI120|H1071F59E0 +1071F59E0:lI114|H1071F8248 +1071F8248:lI101|H1071FAEA0 +1071FAEA0:lI102|H1071FDDE0 +1071FDDE0:lI95|H107200E98 +107200E98:lI112|H107204040 +107204040:lI97|H107207270 +107207270:lI114|H10720A4F8 +10720A4F8:lI115|H10720D708 +10720D708:lI101|H1072108B8 +1072108B8:lI114|H107213B18 +107213B18:lI46|H107216ED0 +107216ED0:lI98|H10721A440 +10721A440:lI101|H10721D9F0 +10721D9F0:lI97|H107220F40 +107220F40:lI109|N +1071F33E8:lI120|H1071F59D0 +1071F59D0:lI114|H1071F8238 +1071F8238:lI101|H1071FAE90 +1071FAE90:lI102|H1071FDDD0 +1071FDDD0:lI95|H107200E88 +107200E88:lI99|H107204030 +107204030:lI111|H107207260 +107207260:lI109|H10720A4E8 +10720A4E8:lI112|H10720D6F8 +10720D6F8:lI105|H1072108A8 +1072108A8:lI108|H107213B08 +107213B08:lI101|H107216EC0 +107216EC0:lI114|H10721A430 +10721A430:lI46|H10721D9E0 +10721D9E0:lI98|H107220F30 +107220F30:lI101|H107224198 +107224198:lI97|H1072270E0 +1072270E0:lI109|N +1071F33D8:lI120|H1071F59C0 +1071F59C0:lI114|H1071F8228 +1071F8228:lI101|H1071FAE80 +1071FAE80:lI102|H1071FDDC0 +1071FDDC0:lI95|H107200E78 +107200E78:lI98|H107204020 +107204020:lI97|H107207250 +107207250:lI115|H10720A4D8 +10720A4D8:lI101|H10720D6E8 +10720D6E8:lI46|H107210898 +107210898:lI98|H107213AF8 +107213AF8:lI101|H107216EB0 +107216EB0:lI97|H10721A420 +10721A420:lI109|N +1071F33C8:lI120|H1071F59B0 +1071F59B0:lI114|H1071F8218 +1071F8218:lI101|H1071FAE70 +1071FAE70:lI102|H1071FDDB0 +1071FDDB0:lI46|H107200E68 +107200E68:lI98|H107204010 +107204010:lI101|H107207240 +107207240:lI97|H10720A4C8 +10720A4C8:lI109|N +1071F33B8:lI116|H1071F59A0 +1071F59A0:lI111|H1071F8208 +1071F8208:lI111|H1071FAE60 +1071FAE60:lI108|H1071FDDA0 +1071FDDA0:lI115|H107200E58 +107200E58:lI46|H107204000 +107204000:lI97|H107207230 +107207230:lI112|H10720A4B8 +10720A4B8:lI112|H10720D6D8 +10720D6D8:lI117|H107210888 +107210888:lI112|N +1071F33A8:lI116|H1071F5990 +1071F5990:lI111|H1071F81F8 +1071F81F8:lI111|H1071FAE50 +1071FAE50:lI108|H1071FDD90 +1071FDD90:lI115|H107200E48 +107200E48:lI46|H107203FF0 +107203FF0:lI97|H107207220 +107207220:lI112|H10720A4A8 +10720A4A8:lI112|N +1071F3398:lI116|H1071F5980 +1071F5980:lI97|H1071F81E8 +1071F81E8:lI103|H1071FAE40 +1071FAE40:lI115|H1071FDD80 +1071FDD80:lI46|H107200E38 +107200E38:lI98|H107203FE0 +107203FE0:lI101|H107207210 +107207210:lI97|H10720A498 +10720A498:lI109|N +1071F3388:lI109|H1071F5970 +1071F5970:lI97|H1071F81D8 +1071F81D8:lI107|H1071FAE30 +1071FAE30:lI101|H1071FDD70 +1071FDD70:lI46|H107200E28 +107200E28:lI98|H107203FD0 +107203FD0:lI101|H107207200 +107207200:lI97|H10720A488 +10720A488:lI109|N +1071F3378:lI108|H1071F5960 +1071F5960:lI99|H1071F81C8 +1071F81C8:lI110|H1071FAE20 +1071FAE20:lI116|H1071FDD60 +1071FDD60:lI46|H107200E18 +107200E18:lI98|H107203FC0 +107203FC0:lI101|H1072071F0 +1072071F0:lI97|H10720A478 +10720A478:lI109|N +1071F3368:lI102|H1071F5950 +1071F5950:lI112|H1071F81B8 +1071F81B8:lI114|H1071FAE10 +1071FAE10:lI111|H1071FDD50 +1071FDD50:lI102|H107200E08 +107200E08:lI46|H107203FB0 +107203FB0:lI98|H1072071E0 +1072071E0:lI101|H10720A468 +10720A468:lI97|H10720D6C8 +10720D6C8:lI109|N +1071F3358:lI101|H1071F5940 +1071F5940:lI112|H1071F81A8 +1071F81A8:lI114|H1071FAE00 +1071FAE00:lI111|H1071FDD40 +1071FDD40:lI102|H107200DF8 +107200DF8:lI46|H107203FA0 +107203FA0:lI98|H1072071D0 +1072071D0:lI101|H10720A458 +10720A458:lI97|H10720D6B8 +10720D6B8:lI109|N +1071F3348:lI99|H1071F5930 +1071F5930:lI112|H1071F8198 +1071F8198:lI114|H1071FADF0 +1071FADF0:lI111|H1071FDD30 +1071FDD30:lI102|H107200DE8 +107200DE8:lI46|H107203F90 +107203F90:lI98|H1072071C0 +1072071C0:lI101|H10720A448 +10720A448:lI97|H10720D6A8 +10720D6A8:lI109|N +1071F3338:lI99|H1071F5920 +1071F5920:lI111|H1071F8188 +1071F8188:lI118|H1071FADE0 +1071FADE0:lI101|H1071FDD20 +1071FDD20:lI114|H107200DD8 +107200DD8:lI46|H107203F80 +107203F80:lI98|H1072071B0 +1072071B0:lI101|H10720A438 +10720A438:lI97|H10720D698 +10720D698:lI109|N +1071F0378:lI47|H1071F1430 +1071F1430:lI111|H1071F3328 +1071F3328:lI112|H1071F5910 +1071F5910:lI116|H1071F8178 +1071F8178:lI47|H1071FADD0 +1071FADD0:lI104|H1071FDD10 +1071FDD10:lI111|H107200DC8 +107200DC8:lI109|H107203F70 +107203F70:lI101|H1072071A0 +1072071A0:lI98|H10720A428 +10720A428:lI114|H10720D688 +10720D688:lI101|H107210878 +107210878:lI119|H107213AE8 +107213AE8:lI47|H107216EA0 +107216EA0:lI67|H10721A410 +10721A410:lI101|H10721D9D0 +10721D9D0:lI108|H107220F20 +107220F20:lI108|H107224188 +107224188:lI97|H1072270D0 +1072270D0:lI114|H107229C38 +107229C38:lI47|H10722C460 +10722C460:lI101|H10722E9A8 +10722E9A8:lI114|H107230C20 +107230C20:lI108|H107232C18 +107232C18:lI97|H1072348F0 +1072348F0:lI110|H107236328 +107236328:lI103|H107237AF0 +107237AF0:lI47|H107239108 +107239108:lI50|H10723A5A0 +10723A5A0:lI54|H10723B860 +10723B860:lI46|H10723C8B0 +10723C8B0:lI48|H10723D720 +10723D720:lI46|H10723E480 +10723E480:lI50|H10723F090 +10723F090:lI47|H10723FB50 +10723FB50:lI108|H1072404A0 +1072404A0:lI105|H107240D20 +107240D20:lI98|H1072414B0 +1072414B0:lI47|H107241BE0 +107241BE0:lI101|H1072422B0 +1072422B0:lI114|H107242920 +107242920:lI108|H107242F20 +107242F20:lI97|H107243490 +107243490:lI110|H1072439D0 +1072439D0:lI103|H107243EC0 +107243EC0:lI47|H1072443B0 +1072443B0:lI108|H107244860 +107244860:lI105|H107244CD0 +107244CD0:lI98|H107245130 +107245130:lI47|H107245580 +107245580:lI116|H107245980 +107245980:lI111|H107245D40 +107245D40:lI111|H1072460D0 +1072460D0:lI108|H107246460 +107246460:lI115|H1072467F0 +1072467F0:lI45|H107246B80 +107246B80:lI51|H107246EB0 +107246EB0:lI46|H1072471D0 +1072471D0:lI54|H1072474F0 +1072474F0:lI47|H280052C20 +10724AFD8:lH10724B048|H10724B060 +10724B048:t2:H1071F0440,H1071F0450 +1071F0450:MfA:H1071F14F8:N,N,N,N,N,N,N,N,N,N +1071F14F8:tA:H1071F3468,H1071F3478,H1071F3488,H1071F3498,H1071F34A8,H1071F34B8,H1071F34C8,H1071F34D8,H1071F34E8,H1071F34F8 +1071F34F8:lI116|H1071F5AE0 +1071F5AE0:lI102|H1071F8348 +1071F8348:lI116|H1071FAFA0 +1071FAFA0:lI112|H1071FDEE0 +1071FDEE0:lI95|H107200F98 +107200F98:lI115|H107204140 +107204140:lI117|H107207370 +107207370:lI112|H10720A5E8 +10720A5E8:lI46|H10720D7E8 +10720D7E8:lI98|H107210988 +107210988:lI101|H107213BE8 +107213BE8:lI97|H107216FA0 +107216FA0:lI109|N +1071F34E8:lI116|H1071F5AD0 +1071F5AD0:lI102|H1071F8338 +1071F8338:lI116|H1071FAF90 +1071FAF90:lI112|H1071FDED0 +1071FDED0:lI95|H107200F88 +107200F88:lI108|H107204130 +107204130:lI111|H107207360 +107207360:lI103|H10720A5D8 +10720A5D8:lI103|H10720D7D8 +10720D7D8:lI101|H107210978 +107210978:lI114|H107213BD8 +107213BD8:lI46|H107216F90 +107216F90:lI98|H10721A4E0 +10721A4E0:lI101|H10721DA80 +10721DA80:lI97|H107220FC0 +107220FC0:lI109|N +1071F34D8:lI116|H1071F5AC0 +1071F5AC0:lI102|H1071F8328 +1071F8328:lI116|H1071FAF80 +1071FAF80:lI112|H1071FDEC0 +1071FDEC0:lI95|H107200F78 +107200F78:lI108|H107204120 +107204120:lI105|H107207350 +107207350:lI98|H10720A5C8 +10720A5C8:lI46|H10720D7C8 +10720D7C8:lI98|H107210968 +107210968:lI101|H107213BC8 +107213BC8:lI97|H107216F80 +107216F80:lI109|N +1071F34C8:lI116|H1071F5AB0 +1071F5AB0:lI102|H1071F8318 +1071F8318:lI116|H1071FAF70 +1071FAF70:lI112|H1071FDEB0 +1071FDEB0:lI95|H107200F68 +107200F68:lI102|H107204110 +107204110:lI105|H107207340 +107207340:lI108|H10720A5B8 +10720A5B8:lI101|H10720D7B8 +10720D7B8:lI46|H107210958 +107210958:lI98|H107213BB8 +107213BB8:lI101|H107216F70 +107216F70:lI97|H10721A4D0 +10721A4D0:lI109|N +1071F34B8:lI116|H1071F5AA0 +1071F5AA0:lI102|H1071F8308 +1071F8308:lI116|H1071FAF60 +1071FAF60:lI112|H1071FDEA0 +1071FDEA0:lI95|H107200F58 +107200F58:lI101|H107204100 +107204100:lI110|H107207330 +107207330:lI103|H10720A5A8 +10720A5A8:lI105|H10720D7A8 +10720D7A8:lI110|H107210948 +107210948:lI101|H107213BA8 +107213BA8:lI46|H107216F60 +107216F60:lI98|H10721A4C0 +10721A4C0:lI101|H10721DA70 +10721DA70:lI97|H107220FB0 +107220FB0:lI109|N +1071F34A8:lI116|H1071F5A90 +1071F5A90:lI102|H1071F82F8 +1071F82F8:lI116|H1071FAF50 +1071FAF50:lI112|H1071FDE90 +1071FDE90:lI95|H107200F48 +107200F48:lI98|H1072040F0 +1072040F0:lI105|H107207320 +107207320:lI110|H10720A598 +10720A598:lI97|H10720D798 +10720D798:lI114|H107210938 +107210938:lI121|H107213B98 +107213B98:lI46|H107216F50 +107216F50:lI98|H10721A4B0 +10721A4B0:lI101|H10721DA60 +10721DA60:lI97|H107220FA0 +107220FA0:lI109|N +1071F3498:lI116|H1071F5A80 +1071F5A80:lI102|H1071F82E8 +1071F82E8:lI116|H1071FAF40 +1071FAF40:lI112|H1071FDE80 +1071FDE80:lI95|H107200F38 +107200F38:lI97|H1072040E0 +1072040E0:lI112|H107207310 +107207310:lI112|H10720A588 +10720A588:lI46|H10720D788 +10720D788:lI98|H107210928 +107210928:lI101|H107213B88 +107213B88:lI97|H107216F40 +107216F40:lI109|N +1071F3488:lI116|H1071F5A70 +1071F5A70:lI102|H1071F82D8 +1071F82D8:lI116|H1071FAF30 +1071FAF30:lI112|H1071FDE70 +1071FDE70:lI46|H107200F28 +107200F28:lI98|H1072040D0 +1072040D0:lI101|H107207300 +107207300:lI97|H10720A578 +10720A578:lI109|N +1071F3478:lI116|H1071F5A60 +1071F5A60:lI102|H1071F82C8 +1071F82C8:lI116|H1071FAF20 +1071FAF20:lI112|H1071FDE60 +1071FDE60:lI46|H107200F18 +107200F18:lI97|H1072040C0 +1072040C0:lI112|H1072072F0 +1072072F0:lI112|H10720A568 +10720A568:lI117|H10720D778 +10720D778:lI112|N +1071F3468:lI116|H1071F5A50 +1071F5A50:lI102|H1071F82B8 +1071F82B8:lI116|H1071FAF10 +1071FAF10:lI112|H1071FDE50 +1071FDE50:lI46|H107200F08 +107200F08:lI97|H1072040B0 +1072040B0:lI112|H1072072E0 +1072072E0:lI112|N +1071F0440:lI47|H1071F14E8 +1071F14E8:lI111|H1071F3458 +1071F3458:lI112|H1071F5A40 +1071F5A40:lI116|H1071F82A8 +1071F82A8:lI47|H1071FAF00 +1071FAF00:lI104|H1071FDE40 +1071FDE40:lI111|H107200EF8 +107200EF8:lI109|H1072040A0 +1072040A0:lI101|H1072072D0 +1072072D0:lI98|H10720A558 +10720A558:lI114|H10720D768 +10720D768:lI101|H107210918 +107210918:lI119|H107213B78 +107213B78:lI47|H107216F30 +107216F30:lI67|H10721A4A0 +10721A4A0:lI101|H10721DA50 +10721DA50:lI108|H107220F90 +107220F90:lI108|H1072241D8 +1072241D8:lI97|H107227110 +107227110:lI114|H107229C68 +107229C68:lI47|H10722C490 +10722C490:lI101|H10722E9D8 +10722E9D8:lI114|H107230C50 +107230C50:lI108|H107232C48 +107232C48:lI97|H107234920 +107234920:lI110|H107236358 +107236358:lI103|H107237B20 +107237B20:lI47|H107239138 +107239138:lI50|H10723A5D0 +10723A5D0:lI54|H10723B890 +10723B890:lI46|H10723C8E0 +10723C8E0:lI48|H10723D750 +10723D750:lI46|H10723E4B0 +10723E4B0:lI50|H10723F0C0 +10723F0C0:lI47|H10723FB80 +10723FB80:lI108|H1072404D0 +1072404D0:lI105|H107240D50 +107240D50:lI98|H1072414E0 +1072414E0:lI47|H107241C10 +107241C10:lI101|H1072422E0 +1072422E0:lI114|H107242950 +107242950:lI108|H107242F50 +107242F50:lI97|H1072434C0 +1072434C0:lI110|H107243A00 +107243A00:lI103|H107243EF0 +107243EF0:lI47|H1072443E0 +1072443E0:lI108|H107244890 +107244890:lI105|H107244D00 +107244D00:lI98|H107245160 +107245160:lI47|H1072455B0 +1072455B0:lI116|H1072459B0 +1072459B0:lI102|H107245D70 +107245D70:lI116|H107246100 +107246100:lI112|H107246490 +107246490:lI45|H107246820 +107246820:lI49|H107246BB0 +107246BB0:lI46|H107246EE0 +107246EE0:lI49|H107247200 +107247200:lI47|H280052C20 +10724B060:lH10724B0D0|H10724B0E8 +10724B0D0:t2:H1071F04B8,H1071F04C8 +1071F04C8:MfB:H1071F1560:N,N,N,N,N,N,N,N,N,N,N +1071F1560:tB:H1071F3518,H1071F3528,H1071F3538,H1071F3548,H1071F3558,H1071F3568,H1071F3578,H1071F3588,H1071F3598,H1071F35A8,H1071F35B8 +1071F35B8:lI115|H1071F5BA0 +1071F5BA0:lI121|H1071F8408 +1071F8408:lI110|H1071FB060 +1071FB060:lI116|H1071FDFA0 +1071FDFA0:lI97|H107201058 +107201058:lI120|H107204200 +107204200:lI95|H107207430 +107207430:lI116|H10720A6A8 +10720A6A8:lI111|H10720D898 +10720D898:lI111|H107210A38 +107210A38:lI108|H107213C98 +107213C98:lI115|H107217050 +107217050:lI46|H10721A580 +10721A580:lI97|H10721DB20 +10721DB20:lI112|H107221040 +107221040:lI112|H107224248 +107224248:lI117|H107227170 +107227170:lI112|N +1071F35A8:lI115|H1071F5B90 +1071F5B90:lI121|H1071F83F8 +1071F83F8:lI110|H1071FB050 +1071FB050:lI116|H1071FDF90 +1071FDF90:lI97|H107201048 +107201048:lI120|H1072041F0 +1072041F0:lI95|H107207420 +107207420:lI116|H10720A698 +10720A698:lI111|H10720D888 +10720D888:lI111|H107210A28 +107210A28:lI108|H107213C88 +107213C88:lI115|H107217040 +107217040:lI46|H10721A570 +10721A570:lI97|H10721DB10 +10721DB10:lI112|H107221030 +107221030:lI112|N +1071F3598:lI112|H1071F5B80 +1071F5B80:lI114|H1071F83E8 +1071F83E8:lI101|H1071FB040 +1071FB040:lI116|H1071FDF80 +1071FDF80:lI116|H107201038 +107201038:lI121|H1072041E0 +1072041E0:lI112|H107207410 +107207410:lI114|H10720A688 +10720A688:lI46|H10720D878 +10720D878:lI98|H107210A18 +107210A18:lI101|H107213C78 +107213C78:lI97|H107217030 +107217030:lI109|N +1071F3588:lI109|H1071F5B70 +1071F5B70:lI101|H1071F83D8 +1071F83D8:lI114|H1071FB030 +1071FB030:lI108|H1071FDF70 +1071FDF70:lI95|H107201028 +107201028:lI116|H1072041D0 +1072041D0:lI114|H107207400 +107207400:lI97|H10720A678 +10720A678:lI110|H10720D868 +10720D868:lI115|H107210A08 +107210A08:lI102|H107213C68 +107213C68:lI111|H107217020 +107217020:lI114|H10721A560 +10721A560:lI109|H10721DB00 +10721DB00:lI46|H107221020 +107221020:lI98|H107224238 +107224238:lI101|H107227160 +107227160:lI97|H107229CA8 +107229CA8:lI109|N +1071F3578:lI109|H1071F5B60 +1071F5B60:lI101|H1071F83C8 +1071F83C8:lI114|H1071FB020 +1071FB020:lI108|H1071FDF60 +1071FDF60:lI46|H107201018 +107201018:lI98|H1072041C0 +1072041C0:lI101|H1072073F0 +1072073F0:lI97|H10720A668 +10720A668:lI109|N +1071F3568:lI101|H1071F5B50 +1071F5B50:lI114|H1071F83B8 +1071F83B8:lI108|H1071FB010 +1071FB010:lI95|H1071FDF50 +1071FDF50:lI115|H107201008 +107201008:lI121|H1072041B0 +1072041B0:lI110|H1072073E0 +1072073E0:lI116|H10720A658 +10720A658:lI97|H10720D858 +10720D858:lI120|H1072109F8 +1072109F8:lI95|H107213C58 +107213C58:lI108|H107217010 +107217010:lI105|H10721A550 +10721A550:lI98|H10721DAF0 +10721DAF0:lI46|H107221010 +107221010:lI98|H107224228 +107224228:lI101|H107227150 +107227150:lI97|H107229C98 +107229C98:lI109|N +1071F3558:lI101|H1071F5B40 +1071F5B40:lI114|H1071F83A8 +1071F83A8:lI108|H1071FB000 +1071FB000:lI95|H1071FDF40 +1071FDF40:lI115|H107200FF8 +107200FF8:lI121|H1072041A0 +1072041A0:lI110|H1072073D0 +1072073D0:lI116|H10720A648 +10720A648:lI97|H10720D848 +10720D848:lI120|H1072109E8 +1072109E8:lI46|H107213C48 +107213C48:lI98|H107217000 +107217000:lI101|H10721A540 +10721A540:lI97|H10721DAE0 +10721DAE0:lI109|N +1071F3548:lI101|H1071F5B30 +1071F5B30:lI114|H1071F8398 +1071F8398:lI108|H1071FAFF0 +1071FAFF0:lI95|H1071FDF30 +1071FDF30:lI114|H107200FE8 +107200FE8:lI101|H107204190 +107204190:lI99|H1072073C0 +1072073C0:lI111|H10720A638 +10720A638:lI109|H10720D838 +10720D838:lI109|H1072109D8 +1072109D8:lI101|H107213C38 +107213C38:lI110|H107216FF0 +107216FF0:lI116|H10721A530 +10721A530:lI46|H10721DAD0 +10721DAD0:lI98|H107221000 +107221000:lI101|H107224218 +107224218:lI97|H107227140 +107227140:lI109|N +1071F3538:lI101|H1071F5B20 +1071F5B20:lI114|H1071F8388 +1071F8388:lI108|H1071FAFE0 +1071FAFE0:lI95|H1071FDF20 +1071FDF20:lI112|H107200FD8 +107200FD8:lI114|H107204180 +107204180:lI101|H1072073B0 +1072073B0:lI116|H10720A628 +10720A628:lI116|H10720D828 +10720D828:lI121|H1072109C8 +1072109C8:lI112|H107213C28 +107213C28:lI114|H107216FE0 +107216FE0:lI46|H10721A520 +10721A520:lI98|H10721DAC0 +10721DAC0:lI101|H107220FF0 +107220FF0:lI97|H107224208 +107224208:lI109|N +1071F3528:lI101|H1071F5B10 +1071F5B10:lI114|H1071F8378 +1071F8378:lI108|H1071FAFD0 +1071FAFD0:lI95|H1071FDF10 +1071FDF10:lI99|H107200FC8 +107200FC8:lI111|H107204170 +107204170:lI109|H1072073A0 +1072073A0:lI109|H10720A618 +10720A618:lI101|H10720D818 +10720D818:lI110|H1072109B8 +1072109B8:lI116|H107213C18 +107213C18:lI95|H107216FD0 +107216FD0:lI115|H10721A510 +10721A510:lI99|H10721DAB0 +10721DAB0:lI97|H107220FE0 +107220FE0:lI110|H1072241F8 +1072241F8:lI46|H107227130 +107227130:lI98|H107229C88 +107229C88:lI101|H10722C4B0 +10722C4B0:lI97|H10722E9F8 +10722E9F8:lI109|N +1071F3518:lI101|H1071F5B00 +1071F5B00:lI112|H1071F8368 +1071F8368:lI112|H1071FAFC0 +1071FAFC0:lI95|H1071FDF00 +1071FDF00:lI100|H107200FB8 +107200FB8:lI111|H107204160 +107204160:lI100|H107207390 +107207390:lI103|H10720A608 +10720A608:lI101|H10720D808 +10720D808:lI114|H1072109A8 +1072109A8:lI46|H107213C08 +107213C08:lI98|H107216FC0 +107216FC0:lI101|H10721A500 +10721A500:lI97|H10721DAA0 +10721DAA0:lI109|N +1071F04B8:lI47|H1071F1550 +1071F1550:lI111|H1071F3508 +1071F3508:lI112|H1071F5AF0 +1071F5AF0:lI116|H1071F8358 +1071F8358:lI47|H1071FAFB0 +1071FAFB0:lI104|H1071FDEF0 +1071FDEF0:lI111|H107200FA8 +107200FA8:lI109|H107204150 +107204150:lI101|H107207380 +107207380:lI98|H10720A5F8 +10720A5F8:lI114|H10720D7F8 +10720D7F8:lI101|H107210998 +107210998:lI119|H107213BF8 +107213BF8:lI47|H107216FB0 +107216FB0:lI67|H10721A4F0 +10721A4F0:lI101|H10721DA90 +10721DA90:lI108|H107220FD0 +107220FD0:lI108|H1072241E8 +1072241E8:lI97|H107227120 +107227120:lI114|H107229C78 +107229C78:lI47|H10722C4A0 +10722C4A0:lI101|H10722E9E8 +10722E9E8:lI114|H107230C60 +107230C60:lI108|H107232C58 +107232C58:lI97|H107234930 +107234930:lI110|H107236368 +107236368:lI103|H107237B30 +107237B30:lI47|H107239148 +107239148:lI50|H10723A5E0 +10723A5E0:lI54|H10723B8A0 +10723B8A0:lI46|H10723C8F0 +10723C8F0:lI48|H10723D760 +10723D760:lI46|H10723E4C0 +10723E4C0:lI50|H10723F0D0 +10723F0D0:lI47|H10723FB90 +10723FB90:lI108|H1072404E0 +1072404E0:lI105|H107240D60 +107240D60:lI98|H1072414F0 +1072414F0:lI47|H107241C20 +107241C20:lI101|H1072422F0 +1072422F0:lI114|H107242960 +107242960:lI108|H107242F60 +107242F60:lI97|H1072434D0 +1072434D0:lI110|H107243A10 +107243A10:lI103|H107243F00 +107243F00:lI47|H1072443F0 +1072443F0:lI108|H1072448A0 +1072448A0:lI105|H107244D10 +107244D10:lI98|H107245170 +107245170:lI47|H1072455C0 +1072455C0:lI115|H1072459C0 +1072459C0:lI121|H107245D80 +107245D80:lI110|H107246110 +107246110:lI116|H1072464A0 +1072464A0:lI97|H107246830 +107246830:lI120|H107246BC0 +107246BC0:lI95|H107246EF0 +107246EF0:lI116|H107247210 +107247210:lI111|H107247520 +107247520:lI111|H107247820 +107247820:lI108|H107247B20 +107247B20:lI115|H107247E10 +107247E10:lI45|H1072480E0 +1072480E0:lI51|H1072483A0 +1072483A0:lI46|H107248660 +107248660:lI49|H107248910 +107248910:lI47|H280052C20 +10724B0E8:lH10724B158|H1071F0538 +10724B158:t2:H1071F0548,H1071F0558 +1071F0558:Mh4A:10:H1071F15F8,H1071F1610,H1071F1640,H1071F1678,H1071F16A8,H1071F16D8,H1071F16F8,H1071F1728,H1071F1748,H1071F1770,H1071F1790,H1071F17B8,H1071F17F0,H1071F1810,H1071F1838,H1071F1850 +1071F15F8:Mn2:H1071F36A0,H1071F36B0 +1071F36A0:lH1071F5E60|N +1071F5E60:lI115|H1071F8AB0 +1071F8AB0:lI115|H1071FB9F0 +1071FB9F0:lI108|H1071FEAA8 +1071FEAA8:lI46|H107201C50 +107201C50:lI97|H107204E90 +107204E90:lI112|H107208188 +107208188:lI112|N +1071F36B0:lH1071F5E70|N +1071F5E70:lI116|H1071F8AC0 +1071F8AC0:lI108|H1071FBA00 +1071FBA00:lI115|H1071FEAB8 +1071FEAB8:lI95|H107201C60 +107201C60:lI114|H107204EA0 +107204EA0:lI101|H107208198 +107208198:lI99|H10720B468 +10720B468:lI111|H10720E728 +10720E728:lI114|H107211AA8 +107211AA8:lI100|H107214F80 +107214F80:lI46|H107218620 +107218620:lI98|H10721BE80 +10721BE80:lI101|H10721F5B0 +10721F5B0:lI97|H107222AB8 +107222AB8:lI109|N +1071F1850:Mn3:H1071F3AB8,H1071F3AC8,H1071F3AD8 +1071F3AB8:lH1071F62D0|N +1071F62D0:lI116|H1071F8F20 +1071F8F20:lI108|H1071FBE60 +1071FBE60:lI115|H1071FEF18 +1071FEF18:lI95|H1072020C0 +1072020C0:lI99|H107205300 +107205300:lI108|H1072085F8 +1072085F8:lI105|H10720B8C8 +10720B8C8:lI101|H10720EB88 +10720EB88:lI110|H107211EE8 +107211EE8:lI116|H1072153C0 +1072153C0:lI95|H107218A50 +107218A50:lI99|H10721C280 +10721C280:lI111|H10721F980 +10721F980:lI110|H107222E78 +107222E78:lI110|H107225FE0 +107225FE0:lI101|H107228DC8 +107228DC8:lI99|H10722B800 +10722B800:lI116|H10722DED8 +10722DED8:lI105|H107230300 +107230300:lI111|H107232478 +107232478:lI110|H1072342F0 +1072342F0:lI95|H107235E58 +107235E58:lI49|H107237750 +107237750:lI95|H107238DD8 +107238DD8:lI51|H10723A2B0 +10723A2B0:lI46|H10723B610 +10723B610:lI98|H10723C700 +10723C700:lI101|H10723D5C0 +10723D5C0:lI97|H10723E340 +10723E340:lI109|N +1071F3AD8:lH1071F62F0|N +1071F62F0:lI116|H1071F8F40 +1071F8F40:lI108|H1071FBE80 +1071FBE80:lI115|H1071FEF38 +1071FEF38:lI95|H1072020E0 +1072020E0:lI98|H107205320 +107205320:lI108|H107208618 +107208618:lI111|H10720B8E8 +10720B8E8:lI111|H10720EBA8 +10720EBA8:lI109|H107211F08 +107211F08:lI95|H1072153E0 +1072153E0:lI102|H107218A70 +107218A70:lI105|H10721C2A0 +10721C2A0:lI108|H10721F9A0 +10721F9A0:lI116|H107222E98 +107222E98:lI101|H107226000 +107226000:lI114|H107228DE8 +107228DE8:lI46|H10722B820 +10722B820:lI98|H10722DEF8 +10722DEF8:lI101|H107230320 +107230320:lI97|H107232498 +107232498:lI109|N +1071F3AC8:lH1071F62E0|N +1071F62E0:lI115|H1071F8F30 +1071F8F30:lI115|H1071FBE70 +1071FBE70:lI108|H1071FEF28 +1071FEF28:lI95|H1072020D0 +1072020D0:lI108|H107205310 +107205310:lI105|H107208608 +107208608:lI115|H10720B8D8 +10720B8D8:lI116|H10720EB98 +10720EB98:lI101|H107211EF8 +107211EF8:lI110|H1072153D0 +1072153D0:lI95|H107218A60 +107218A60:lI116|H10721C290 +10721C290:lI114|H10721F990 +10721F990:lI97|H107222E88 +107222E88:lI99|H107225FF0 +107225FF0:lI107|H107228DD8 +107228DD8:lI101|H10722B810 +10722B810:lI114|H10722DEE8 +10722DEE8:lI95|H107230310 +107230310:lI115|H107232488 +107232488:lI117|H107234300 +107234300:lI112|H107235E68 +107235E68:lI46|H107237760 +107237760:lI98|H107238DE8 +107238DE8:lI101|H10723A2C0 +10723A2C0:lI97|H10723B620 +10723B620:lI109|N +1071F1838:Mn2:H1071F3A98,H1071F3AA8 +1071F3A98:lH1071F62B0|N +1071F62B0:lI100|H1071F8F00 +1071F8F00:lI116|H1071FBE40 +1071FBE40:lI108|H1071FEEF8 +1071FEEF8:lI115|H1072020A0 +1072020A0:lI95|H1072052E0 +1072052E0:lI104|H1072085D8 +1072085D8:lI97|H10720B8A8 +10720B8A8:lI110|H10720EB68 +10720EB68:lI100|H107211EC8 +107211EC8:lI115|H1072153A0 +1072153A0:lI104|H107218A30 +107218A30:lI97|H10721C260 +10721C260:lI107|H10721F960 +10721F960:lI101|H107222E58 +107222E58:lI46|H107225FC0 +107225FC0:lI98|H107228DA8 +107228DA8:lI101|H10722B7E0 +10722B7E0:lI97|H10722DEC8 +10722DEC8:lI109|N +1071F3AA8:lH1071F62C0|N +1071F62C0:lI115|H1071F8F10 +1071F8F10:lI115|H1071FBE50 +1071FBE50:lI108|H1071FEF08 +1071FEF08:lI95|H1072020B0 +1072020B0:lI104|H1072052F0 +1072052F0:lI97|H1072085E8 +1072085E8:lI110|H10720B8B8 +10720B8B8:lI100|H10720EB78 +10720EB78:lI115|H107211ED8 +107211ED8:lI104|H1072153B0 +1072153B0:lI97|H107218A40 +107218A40:lI107|H10721C270 +10721C270:lI101|H10721F970 +10721F970:lI46|H107222E68 +107222E68:lI98|H107225FD0 +107225FD0:lI101|H107228DB8 +107228DB8:lI97|H10722B7F0 +10722B7F0:lI109|N +1071F1810:Mn4:H1071F3A58,H1071F3A68,H1071F3A78,H1071F3A88 +1071F3A58:lH1071F6270|N +1071F6270:lI116|H1071F8EC0 +1071F8EC0:lI108|H1071FBE00 +1071FBE00:lI115|H1071FEEB8 +1071FEEB8:lI95|H107202060 +107202060:lI115|H1072052A0 +1072052A0:lI101|H107208598 +107208598:lI114|H10720B868 +10720B868:lI118|H10720EB28 +10720EB28:lI101|H107211E88 +107211E88:lI114|H107215360 +107215360:lI95|H107218A00 +107218A00:lI115|H10721C230 +10721C230:lI101|H10721F930 +10721F930:lI115|H107222E28 +107222E28:lI115|H107225F90 +107225F90:lI105|H107228D88 +107228D88:lI111|H10722B7D0 +10722B7D0:lI110|H10722DEB8 +10722DEB8:lI95|H1072302F0 +1072302F0:lI116|H107232468 +107232468:lI105|H1072342E0 +1072342E0:lI99|H107235E48 +107235E48:lI107|H107237740 +107237740:lI101|H107238DC8 +107238DC8:lI116|H10723A2A0 +10723A2A0:lI95|H10723B600 +10723B600:lI115|H10723C6F0 +10723C6F0:lI117|H10723D5B0 +10723D5B0:lI112|H10723E330 +10723E330:lI46|H10723EF50 +10723EF50:lI98|H10723FA20 +10723FA20:lI101|H107240370 +107240370:lI97|H107240BF0 +107240BF0:lI109|N +1071F3A88:lH1071F62A0|N +1071F62A0:lI116|H1071F8EF0 +1071F8EF0:lI108|H1071FBE30 +1071FBE30:lI115|H1071FEEE8 +1071FEEE8:lI95|H107202090 +107202090:lI118|H1072052D0 +1072052D0:lI49|H1072085C8 +1072085C8:lI46|H10720B898 +10720B898:lI98|H10720EB58 +10720EB58:lI101|H107211EB8 +107211EB8:lI97|H107215390 +107215390:lI109|N +1071F3A78:lH1071F6290|N +1071F6290:lI116|H1071F8EE0 +1071F8EE0:lI108|H1071FBE20 +1071FBE20:lI115|H1071FEED8 +1071FEED8:lI95|H107202080 +107202080:lI100|H1072052C0 +1072052C0:lI105|H1072085B8 +1072085B8:lI115|H10720B888 +10720B888:lI116|H10720EB48 +10720EB48:lI95|H107211EA8 +107211EA8:lI115|H107215380 +107215380:lI117|H107218A20 +107218A20:lI112|H10721C250 +10721C250:lI46|H10721F950 +10721F950:lI98|H107222E48 +107222E48:lI101|H107225FB0 +107225FB0:lI97|H107228D98 +107228D98:lI109|N +1071F3A68:lH1071F6280|N +1071F6280:lI115|H1071F8ED0 +1071F8ED0:lI115|H1071FBE10 +1071FBE10:lI108|H1071FEEC8 +1071FEEC8:lI95|H107202070 +107202070:lI112|H1072052B0 +1072052B0:lI107|H1072085A8 +1072085A8:lI105|H10720B878 +10720B878:lI120|H10720EB38 +10720EB38:lI95|H107211E98 +107211E98:lI100|H107215370 +107215370:lI98|H107218A10 +107218A10:lI46|H10721C240 +10721C240:lI98|H10721F940 +10721F940:lI101|H107222E38 +107222E38:lI97|H107225FA0 +107225FA0:lI109|N +1071F17F0:Mn3:H1071F3A20,H1071F3A30,H1071F3A40 +1071F3A20:lH1071F6230|N +1071F6230:lI100|H1071F8E80 +1071F8E80:lI116|H1071FBDC0 +1071FBDC0:lI108|H1071FEE78 +1071FEE78:lI115|H107202020 +107202020:lI95|H107205260 +107205260:lI115|H107208558 +107208558:lI111|H10720B828 +10720B828:lI99|H10720EAE8 +10720EAE8:lI107|H107211E48 +107211E48:lI101|H107215320 +107215320:lI116|H1072189C0 +1072189C0:lI46|H10721C1F0 +10721C1F0:lI98|H10721F8F0 +10721F8F0:lI101|H107222DE8 +107222DE8:lI97|H107225F50 +107225F50:lI109|N +1071F3A40:Mn2:H1071F6250,H1071F6260 +1071F6250:lH1071F8EA0|N +1071F8EA0:lI115|H1071FBDE0 +1071FBDE0:lI115|H1071FEE98 +1071FEE98:lI108|H107202040 +107202040:lI95|H107205280 +107205280:lI108|H107208578 +107208578:lI111|H10720B848 +10720B848:lI103|H10720EB08 +10720EB08:lI103|H107211E68 +107211E68:lI101|H107215340 +107215340:lI114|H1072189E0 +1072189E0:lI46|H10721C210 +10721C210:lI98|H10721F910 +10721F910:lI101|H107222E08 +107222E08:lI97|H107225F70 +107225F70:lI109|N +1071F6260:lH1071F8EB0|N +1071F8EB0:lI116|H1071FBDF0 +1071FBDF0:lI108|H1071FEEA8 +1071FEEA8:lI115|H107202050 +107202050:lI95|H107205290 +107205290:lI99|H107208588 +107208588:lI111|H10720B858 +10720B858:lI110|H10720EB18 +10720EB18:lI110|H107211E78 +107211E78:lI101|H107215350 +107215350:lI99|H1072189F0 +1072189F0:lI116|H10721C220 +10721C220:lI105|H10721F920 +10721F920:lI111|H107222E18 +107222E18:lI110|H107225F80 +107225F80:lI95|H107228D78 +107228D78:lI115|H10722B7C0 +10722B7C0:lI117|H10722DEA8 +10722DEA8:lI112|H1072302E0 +1072302E0:lI46|H107232458 +107232458:lI98|H1072342D0 +1072342D0:lI101|H107235E38 +107235E38:lI97|H107237730 +107237730:lI109|N +1071F3A30:lH1071F6240|N +1071F6240:lI115|H1071F8E90 +1071F8E90:lI115|H1071FBDD0 +1071FBDD0:lI108|H1071FEE88 +1071FEE88:lI95|H107202030 +107202030:lI112|H107205270 +107205270:lI101|H107208568 +107208568:lI109|H10720B838 +10720B838:lI95|H10720EAF8 +10720EAF8:lI99|H107211E58 +107211E58:lI97|H107215330 +107215330:lI99|H1072189D0 +1072189D0:lI104|H10721C200 +10721C200:lI101|H10721F900 +10721F900:lI46|H107222DF8 +107222DF8:lI98|H107225F60 +107225F60:lI101|H107228D68 +107228D68:lI97|H10722B7B0 +10722B7B0:lI109|N +1071F17B8:Mn6:H1071F39C0,H1071F39D0,H1071F39E0,H1071F39F0,H1071F3A00,H1071F3A10 +1071F39C0:lH1071F61D0|N +1071F61D0:lI115|H1071F8E20 +1071F8E20:lI115|H1071FBD60 +1071FBD60:lI108|H1071FEE18 +1071FEE18:lI95|H107201FC0 +107201FC0:lI100|H107205200 +107205200:lI104|H1072084F8 +1072084F8:lI95|H10720B7C8 +10720B7C8:lI103|H10720EA88 +10720EA88:lI114|H107211DE8 +107211DE8:lI111|H1072152C0 +1072152C0:lI117|H107218960 +107218960:lI112|H10721C190 +10721C190:lI115|H10721F890 +10721F890:lI46|H107222D88 +107222D88:lI98|H107225EF0 +107225EF0:lI101|H107228D08 +107228D08:lI97|H10722B750 +10722B750:lI109|N +1071F3A10:lH1071F6220|N +1071F6220:lI115|H1071F8E70 +1071F8E70:lI115|H1071FBDB0 +1071FBDB0:lI108|H1071FEE68 +1071FEE68:lI95|H107202010 +107202010:lI99|H107205250 +107205250:lI105|H107208548 +107208548:lI112|H10720B818 +10720B818:lI104|H10720EAD8 +10720EAD8:lI101|H107211E38 +107211E38:lI114|H107215310 +107215310:lI95|H1072189B0 +1072189B0:lI102|H10721C1E0 +10721C1E0:lI111|H10721F8E0 +10721F8E0:lI114|H107222DD8 +107222DD8:lI109|H107225F40 +107225F40:lI97|H107228D58 +107228D58:lI116|H10722B7A0 +10722B7A0:lI46|H10722DE98 +10722DE98:lI98|H1072302D0 +1072302D0:lI101|H107232448 +107232448:lI97|H1072342C0 +1072342C0:lI109|N +1071F3A00:lH1071F6210|N +1071F6210:lI116|H1071F8E60 +1071F8E60:lI108|H1071FBDA0 +1071FBDA0:lI115|H1071FEE58 +1071FEE58:lI95|H107202000 +107202000:lI103|H107205240 +107205240:lI101|H107208538 +107208538:lI110|H10720B808 +10720B808:lI95|H10720EAC8 +10720EAC8:lI99|H107211E28 +107211E28:lI111|H107215300 +107215300:lI110|H1072189A0 +1072189A0:lI110|H10721C1D0 +10721C1D0:lI101|H10721F8D0 +10721F8D0:lI99|H107222DC8 +107222DC8:lI116|H107225F30 +107225F30:lI105|H107228D48 +107228D48:lI111|H10722B790 +10722B790:lI110|H10722DE88 +10722DE88:lI95|H1072302C0 +1072302C0:lI49|H107232438 +107232438:lI95|H1072342B0 +1072342B0:lI51|H107235E28 +107235E28:lI46|H107237720 +107237720:lI98|H107238DB8 +107238DB8:lI101|H10723A290 +10723A290:lI97|H10723B5F0 +10723B5F0:lI109|N +1071F39F0:lH1071F6200|N +1071F6200:lI115|H1071F8E50 +1071F8E50:lI115|H1071FBD90 +1071FBD90:lI108|H1071FEE48 +1071FEE48:lI95|H107201FF0 +107201FF0:lI115|H107205230 +107205230:lI114|H107208528 +107208528:lI112|H10720B7F8 +10720B7F8:lI95|H10720EAB8 +10720EAB8:lI112|H107211E18 +107211E18:lI114|H1072152F0 +1072152F0:lI105|H107218990 +107218990:lI109|H10721C1C0 +10721C1C0:lI101|H10721F8C0 +10721F8C0:lI115|H107222DB8 +107222DB8:lI46|H107225F20 +107225F20:lI98|H107228D38 +107228D38:lI101|H10722B780 +10722B780:lI97|H10722DE78 +10722DE78:lI109|N +1071F39E0:lH1071F61F0|N +1071F61F0:lI105|H1071F8E40 +1071F8E40:lI110|H1071FBD80 +1071FBD80:lI101|H1071FEE38 +1071FEE38:lI116|H107201FE0 +107201FE0:lI54|H107205220 +107205220:lI95|H107208518 +107208518:lI116|H10720B7E8 +10720B7E8:lI108|H10720EAA8 +10720EAA8:lI115|H107211E08 +107211E08:lI95|H1072152E0 +1072152E0:lI100|H107218980 +107218980:lI105|H10721C1B0 +10721C1B0:lI115|H10721F8B0 +10721F8B0:lI116|H107222DA8 +107222DA8:lI46|H107225F10 +107225F10:lI98|H107228D28 +107228D28:lI101|H10722B770 +10722B770:lI97|H10722DE68 +10722DE68:lI109|N +1071F39D0:lH1071F61E0|N +1071F61E0:lI115|H1071F8E30 +1071F8E30:lI115|H1071FBD70 +1071FBD70:lI108|H1071FEE28 +1071FEE28:lI95|H107201FD0 +107201FD0:lI115|H107205210 +107205210:lI101|H107208508 +107208508:lI114|H10720B7D8 +10720B7D8:lI118|H10720EA98 +10720EA98:lI101|H107211DF8 +107211DF8:lI114|H1072152D0 +1072152D0:lI95|H107218970 +107218970:lI115|H10721C1A0 +10721C1A0:lI101|H10721F8A0 +10721F8A0:lI115|H107222D98 +107222D98:lI115|H107225F00 +107225F00:lI105|H107228D18 +107228D18:lI111|H10722B760 +10722B760:lI110|H10722DE58 +10722DE58:lI95|H1072302B0 +1072302B0:lI99|H107232428 +107232428:lI97|H1072342A0 +1072342A0:lI99|H107235E18 +107235E18:lI104|H107237710 +107237710:lI101|H107238DA8 +107238DA8:lI95|H10723A280 +10723A280:lI115|H10723B5E0 +10723B5E0:lI117|H10723C6E0 +10723C6E0:lI112|H10723D5A0 +10723D5A0:lI46|H10723E320 +10723E320:lI98|H10723EF40 +10723EF40:lI101|H10723FA10 +10723FA10:lI97|H107240360 +107240360:lI109|N +1071F1790:Mn4:H1071F3980,H1071F3990,H1071F39A0,H1071F39B0 +1071F3980:lH1071F6190|N +1071F6190:lI116|H1071F8DE0 +1071F8DE0:lI108|H1071FBD20 +1071FBD20:lI115|H1071FEDD8 +1071FEDD8:lI95|H107201F80 +107201F80:lI115|H1072051C0 +1072051C0:lI101|H1072084B8 +1072084B8:lI114|H10720B788 +10720B788:lI118|H10720EA48 +10720EA48:lI101|H107211DA8 +107211DA8:lI114|H107215280 +107215280:lI95|H107218920 +107218920:lI115|H10721C150 +10721C150:lI101|H10721F850 +10721F850:lI115|H107222D48 +107222D48:lI115|H107225EC0 +107225EC0:lI105|H107228CD8 +107228CD8:lI111|H10722B720 +10722B720:lI110|H10722DE28 +10722DE28:lI95|H1072302A0 +1072302A0:lI116|H107232418 +107232418:lI105|H107234290 +107234290:lI99|H107235E08 +107235E08:lI107|H107237700 +107237700:lI101|H107238D98 +107238D98:lI116|H10723A270 +10723A270:lI46|H10723B5D0 +10723B5D0:lI98|H10723C6D0 +10723C6D0:lI101|H10723D590 +10723D590:lI97|H10723E310 +10723E310:lI109|N +1071F39B0:lH1071F61C0|N +1071F61C0:lI115|H1071F8E10 +1071F8E10:lI115|H1071FBD50 +1071FBD50:lI108|H1071FEE08 +1071FEE08:lI95|H107201FB0 +107201FB0:lI103|H1072051F0 +1072051F0:lI101|H1072084E8 +1072084E8:lI110|H10720B7B8 +10720B7B8:lI95|H10720EA78 +10720EA78:lI115|H107211DD8 +107211DD8:lI116|H1072152B0 +1072152B0:lI97|H107218950 +107218950:lI116|H10721C180 +10721C180:lI101|H10721F880 +10721F880:lI109|H107222D78 +107222D78:lI46|H107225EE0 +107225EE0:lI98|H107228CF8 +107228CF8:lI101|H10722B740 +10722B740:lI97|H10722DE48 +10722DE48:lI109|N +1071F39A0:lH1071F61B0|N +1071F61B0:lI116|H1071F8E00 +1071F8E00:lI108|H1071FBD40 +1071FBD40:lI115|H1071FEDF8 +1071FEDF8:lI95|H107201FA0 +107201FA0:lI99|H1072051E0 +1072051E0:lI111|H1072084D8 +1072084D8:lI110|H10720B7A8 +10720B7A8:lI110|H10720EA68 +10720EA68:lI101|H107211DC8 +107211DC8:lI99|H1072152A0 +1072152A0:lI116|H107218940 +107218940:lI105|H10721C170 +10721C170:lI111|H10721F870 +10721F870:lI110|H107222D68 +107222D68:lI46|H107225ED0 +107225ED0:lI98|H107228CE8 +107228CE8:lI101|H10722B730 +10722B730:lI97|H10722DE38 +10722DE38:lI109|N +1071F3990:lH1071F61A0|N +1071F61A0:lI115|H1071F8DF0 +1071F8DF0:lI115|H1071FBD30 +1071FBD30:lI108|H1071FEDE8 +1071FEDE8:lI95|H107201F90 +107201F90:lI99|H1072051D0 +1072051D0:lI105|H1072084C8 +1072084C8:lI112|H10720B798 +10720B798:lI104|H10720EA58 +10720EA58:lI101|H107211DB8 +107211DB8:lI114|H107215290 +107215290:lI46|H107218930 +107218930:lI98|H10721C160 +10721C160:lI101|H10721F860 +10721F860:lI97|H107222D58 +107222D58:lI109|N +1071F1770:Mn3:H1071F3940,H1071F3958,H1071F3968 +1071F3940:Mn2:H1071F6140,H1071F6150 +1071F6140:lH1071F8D90|N +1071F8D90:lI115|H1071FBCD0 +1071FBCD0:lI115|H1071FED88 +1071FED88:lI108|H107201F30 +107201F30:lI95|H107205170 +107205170:lI114|H107208468 +107208468:lI101|H10720B738 +10720B738:lI99|H10720E9F8 +10720E9F8:lI111|H107211D58 +107211D58:lI114|H107215230 +107215230:lI100|H1072188D0 +1072188D0:lI46|H10721C100 +10721C100:lI98|H10721F800 +10721F800:lI101|H107222CF8 +107222CF8:lI97|H107225E70 +107225E70:lI109|N +1071F6150:lH1071F8DA0|N +1071F8DA0:lI116|H1071FBCE0 +1071FBCE0:lI108|H1071FED98 +1071FED98:lI115|H107201F40 +107201F40:lI95|H107205180 +107205180:lI99|H107208478 +107208478:lI108|H10720B748 +10720B748:lI105|H10720EA08 +10720EA08:lI101|H107211D68 +107211D68:lI110|H107215240 +107215240:lI116|H1072188E0 +1072188E0:lI95|H10721C110 +10721C110:lI116|H10721F810 +10721F810:lI105|H107222D08 +107222D08:lI99|H107225E80 +107225E80:lI107|H107228C98 +107228C98:lI101|H10722B6E0 +10722B6E0:lI116|H10722DDE8 +10722DDE8:lI95|H107230260 +107230260:lI115|H1072323D8 +1072323D8:lI116|H107234250 +107234250:lI111|H107235DD8 +107235DD8:lI114|H1072376D0 +1072376D0:lI101|H107238D68 +107238D68:lI46|H10723A250 +10723A250:lI98|H10723B5B0 +10723B5B0:lI101|H10723C6B0 +10723C6B0:lI97|H10723D570 +10723D570:lI109|N +1071F3968:Mn2:H1071F6170,H1071F6180 +1071F6170:lH1071F8DC0|N +1071F8DC0:lI115|H1071FBD00 +1071FBD00:lI115|H1071FEDB8 +1071FEDB8:lI108|H107201F60 +107201F60:lI95|H1072051A0 +1072051A0:lI100|H107208498 +107208498:lI105|H10720B768 +10720B768:lI115|H10720EA28 +10720EA28:lI116|H107211D88 +107211D88:lI95|H107215260 +107215260:lI99|H107218900 +107218900:lI111|H10721C130 +10721C130:lI110|H10721F830 +10721F830:lI110|H107222D28 +107222D28:lI101|H107225EA0 +107225EA0:lI99|H107228CB8 +107228CB8:lI116|H10722B700 +10722B700:lI105|H10722DE08 +10722DE08:lI111|H107230280 +107230280:lI110|H1072323F8 +1072323F8:lI95|H107234270 +107234270:lI115|H107235DE8 +107235DE8:lI117|H1072376E0 +1072376E0:lI112|H107238D78 +107238D78:lI46|H10723A260 +10723A260:lI98|H10723B5C0 +10723B5C0:lI101|H10723C6C0 +10723C6C0:lI97|H10723D580 +10723D580:lI109|N +1071F6180:lH1071F8DD0|N +1071F8DD0:lI100|H1071FBD10 +1071FBD10:lI116|H1071FEDC8 +1071FEDC8:lI108|H107201F70 +107201F70:lI115|H1072051B0 +1072051B0:lI95|H1072084A8 +1072084A8:lI99|H10720B778 +10720B778:lI111|H10720EA38 +10720EA38:lI110|H107211D98 +107211D98:lI110|H107215270 +107215270:lI101|H107218910 +107218910:lI99|H10721C140 +10721C140:lI116|H10721F840 +10721F840:lI105|H107222D38 +107222D38:lI111|H107225EB0 +107225EB0:lI110|H107228CC8 +107228CC8:lI95|H10722B710 +10722B710:lI115|H10722DE18 +10722DE18:lI117|H107230290 +107230290:lI112|H107232408 +107232408:lI46|H107234280 +107234280:lI98|H107235DF8 +107235DF8:lI101|H1072376F0 +1072376F0:lI97|H107238D88 +107238D88:lI109|N +1071F3958:lH1071F6160|N +1071F6160:lI115|H1071F8DB0 +1071F8DB0:lI115|H1071FBCF0 +1071FBCF0:lI108|H1071FEDA8 +1071FEDA8:lI95|H107201F50 +107201F50:lI99|H107205190 +107205190:lI114|H107208488 +107208488:lI108|H10720B758 +10720B758:lI95|H10720EA18 +10720EA18:lI99|H107211D78 +107211D78:lI97|H107215250 +107215250:lI99|H1072188F0 +1072188F0:lI104|H10721C120 +10721C120:lI101|H10721F820 +10721F820:lI95|H107222D18 +107222D18:lI97|H107225E90 +107225E90:lI112|H107228CA8 +107228CA8:lI105|H10722B6F0 +10722B6F0:lI46|H10722DDF8 +10722DDF8:lI98|H107230270 +107230270:lI101|H1072323E8 +1072323E8:lI97|H107234260 +107234260:lI109|N +1071F1748:Mn4:H1071F3900,H1071F3910,H1071F3920,H1071F3930 +1071F3900:lH1071F6100|N +1071F6100:lI115|H1071F8D50 +1071F8D50:lI115|H1071FBC90 +1071FBC90:lI108|H1071FED48 +1071FED48:lI95|H107201EF0 +107201EF0:lI117|H107205130 +107205130:lI112|H107208428 +107208428:lI103|H10720B6F8 +10720B6F8:lI114|H10720E9B8 +10720E9B8:lI97|H107211D18 +107211D18:lI100|H1072151F0 +1072151F0:lI101|H107218890 +107218890:lI95|H10721C0C0 +10721C0C0:lI115|H10721F7C0 +10721F7C0:lI101|H107222CB8 +107222CB8:lI114|H107225E30 +107225E30:lI118|H107228C68 +107228C68:lI101|H10722B6B0 +10722B6B0:lI114|H10722DDB8 +10722DDB8:lI95|H107230230 +107230230:lI115|H1072323A8 +1072323A8:lI101|H107234230 +107234230:lI115|H107235DB8 +107235DB8:lI115|H1072376B0 +1072376B0:lI105|H107238D58 +107238D58:lI111|H10723A240 +10723A240:lI110|H10723B5A0 +10723B5A0:lI95|H10723C6A0 +10723C6A0:lI99|H10723D560 +10723D560:lI97|H10723E300 +10723E300:lI99|H10723EF30 +10723EF30:lI104|H10723FA00 +10723FA00:lI101|H107240350 +107240350:lI95|H107240BE0 +107240BE0:lI115|H107241380 +107241380:lI117|H107241AB0 +107241AB0:lI112|H107242180 +107242180:lI46|H1072427F0 +1072427F0:lI98|H107242DF0 +107242DF0:lI101|H107243360 +107243360:lI97|H1072438A0 +1072438A0:lI109|N +1071F3930:lH1071F6130|N +1071F6130:lI115|H1071F8D80 +1071F8D80:lI115|H1071FBCC0 +1071FBCC0:lI108|H1071FED78 +1071FED78:lI95|H107201F20 +107201F20:lI99|H107205160 +107205160:lI114|H107208458 +107208458:lI108|H10720B728 +10720B728:lI95|H10720E9E8 +10720E9E8:lI104|H107211D48 +107211D48:lI97|H107215220 +107215220:lI115|H1072188C0 +1072188C0:lI104|H10721C0F0 +10721C0F0:lI95|H10721F7F0 +10721F7F0:lI100|H107222CE8 +107222CE8:lI105|H107225E60 +107225E60:lI114|H107228C88 +107228C88:lI46|H10722B6D0 +10722B6D0:lI98|H10722DDD8 +10722DDD8:lI101|H107230250 +107230250:lI97|H1072323C8 +1072323C8:lI109|N +1071F3920:lH1071F6120|N +1071F6120:lI115|H1071F8D70 +1071F8D70:lI115|H1071FBCB0 +1071FBCB0:lI108|H1071FED68 +1071FED68:lI95|H107201F10 +107201F10:lI109|H107205150 +107205150:lI97|H107208448 +107208448:lI110|H10720B718 +10720B718:lI97|H10720E9D8 +10720E9D8:lI103|H107211D38 +107211D38:lI101|H107215210 +107215210:lI114|H1072188B0 +1072188B0:lI46|H10721C0E0 +10721C0E0:lI98|H10721F7E0 +10721F7E0:lI101|H107222CD8 +107222CD8:lI97|H107225E50 +107225E50:lI109|N +1071F3910:lH1071F6110|N +1071F6110:lI100|H1071F8D60 +1071F8D60:lI116|H1071FBCA0 +1071FBCA0:lI108|H1071FED58 +1071FED58:lI115|H107201F00 +107201F00:lI95|H107205140 +107205140:lI103|H107208438 +107208438:lI101|H10720B708 +10720B708:lI110|H10720E9C8 +10720E9C8:lI95|H107211D28 +107211D28:lI99|H107215200 +107215200:lI111|H1072188A0 +1072188A0:lI110|H10721C0D0 +10721C0D0:lI110|H10721F7D0 +10721F7D0:lI101|H107222CC8 +107222CC8:lI99|H107225E40 +107225E40:lI116|H107228C78 +107228C78:lI105|H10722B6C0 +10722B6C0:lI111|H10722DDC8 +10722DDC8:lI110|H107230240 +107230240:lI46|H1072323B8 +1072323B8:lI98|H107234240 +107234240:lI101|H107235DC8 +107235DC8:lI97|H1072376C0 +1072376C0:lI109|N +1071F1728:Mn3:H1071F38D0,H1071F38E0,H1071F38F0 +1071F38D0:lH1071F60D0|N +1071F60D0:lI116|H1071F8D20 +1071F8D20:lI108|H1071FBC60 +1071FBC60:lI115|H1071FED18 +1071FED18:lI95|H107201EC0 +107201EC0:lI100|H107205100 +107205100:lI105|H1072083F8 +1072083F8:lI115|H10720B6C8 +10720B6C8:lI116|H10720E988 +10720E988:lI95|H107211CF8 +107211CF8:lI115|H1072151D0 +1072151D0:lI101|H107218870 +107218870:lI114|H10721C0A0 +10721C0A0:lI118|H10721F7A0 +10721F7A0:lI101|H107222C98 +107222C98:lI114|H107225E10 +107225E10:lI95|H107228C48 +107228C48:lI115|H10722B6A0 +10722B6A0:lI117|H10722DDA8 +10722DDA8:lI112|H107230220 +107230220:lI46|H107232398 +107232398:lI98|H107234220 +107234220:lI101|H107235DA8 +107235DA8:lI97|H1072376A0 +1072376A0:lI109|N +1071F38F0:lH1071F60F0|N +1071F60F0:lI115|H1071F8D40 +1071F8D40:lI115|H1071FBC80 +1071FBC80:lI108|H1071FED38 +1071FED38:lI95|H107201EE0 +107201EE0:lI100|H107205120 +107205120:lI105|H107208418 +107208418:lI115|H10720B6E8 +10720B6E8:lI116|H10720E9A8 +10720E9A8:lI95|H107211D08 +107211D08:lI115|H1072151E0 +1072151E0:lI117|H107218880 +107218880:lI112|H10721C0B0 +10721C0B0:lI46|H10721F7B0 +10721F7B0:lI98|H107222CA8 +107222CA8:lI101|H107225E20 +107225E20:lI97|H107228C58 +107228C58:lI109|N +1071F38E0:lH1071F60E0|N +1071F60E0:lI115|H1071F8D30 +1071F8D30:lI115|H1071FBC70 +1071FBC70:lI108|H1071FED28 +1071FED28:lI46|H107201ED0 +107201ED0:lI97|H107205110 +107205110:lI112|H107208408 +107208408:lI112|H10720B6D8 +10720B6D8:lI117|H10720E998 +10720E998:lI112|N +1071F16F8:Mn5:H1071F3878,H1071F3888,H1071F38A0,H1071F38B0,H1071F38C0 +1071F3878:lH1071F6070|N +1071F6070:lI100|H1071F8CC0 +1071F8CC0:lI116|H1071FBC00 +1071FBC00:lI108|H1071FECB8 +1071FECB8:lI115|H107201E60 +107201E60:lI95|H1072050A0 +1072050A0:lI115|H107208398 +107208398:lI117|H10720B668 +10720B668:lI112|H10720E928 +10720E928:lI46|H107211CA8 +107211CA8:lI98|H107215180 +107215180:lI101|H107218820 +107218820:lI97|H10721C060 +10721C060:lI109|N +1071F38C0:lH1071F60C0|N +1071F60C0:lI116|H1071F8D10 +1071F8D10:lI108|H1071FBC50 +1071FBC50:lI115|H1071FED08 +1071FED08:lI95|H107201EB0 +107201EB0:lI115|H1072050F0 +1072050F0:lI101|H1072083E8 +1072083E8:lI110|H10720B6B8 +10720B6B8:lI100|H10720E978 +10720E978:lI101|H107211CE8 +107211CE8:lI114|H1072151C0 +1072151C0:lI46|H107218860 +107218860:lI98|H10721C090 +10721C090:lI101|H10721F790 +10721F790:lI97|H107222C88 +107222C88:lI109|N +1071F38B0:lH1071F60B0|N +1071F60B0:lI100|H1071F8D00 +1071F8D00:lI116|H1071FBC40 +1071FBC40:lI108|H1071FECF8 +1071FECF8:lI115|H107201EA0 +107201EA0:lI95|H1072050E0 +1072050E0:lI118|H1072083D8 +1072083D8:lI49|H10720B6A8 +10720B6A8:lI46|H10720E968 +10720E968:lI98|H107211CD8 +107211CD8:lI101|H1072151B0 +1072151B0:lI97|H107218850 +107218850:lI109|N +1071F38A0:lH1071F60A0|N +1071F60A0:lI115|H1071F8CF0 +1071F8CF0:lI115|H1071FBC30 +1071FBC30:lI108|H1071FECE8 +1071FECE8:lI95|H107201E90 +107201E90:lI99|H1072050D0 +1072050D0:lI101|H1072083C8 +1072083C8:lI114|H10720B698 +10720B698:lI116|H10720E958 +10720E958:lI105|H107211CC8 +107211CC8:lI102|H1072151A0 +1072151A0:lI105|H107218840 +107218840:lI99|H10721C080 +10721C080:lI97|H10721F780 +10721F780:lI116|H107222C78 +107222C78:lI101|H107225E00 +107225E00:lI46|H107228C38 +107228C38:lI98|H10722B690 +10722B690:lI101|H10722DD98 +10722DD98:lI97|H107230210 +107230210:lI109|N +1071F3888:Mn2:H1071F6080,H1071F6090 +1071F6080:lH1071F8CD0|N +1071F8CD0:lI115|H1071FBC10 +1071FBC10:lI115|H1071FECC8 +1071FECC8:lI108|H107201E70 +107201E70:lI46|H1072050B0 +1072050B0:lI98|H1072083A8 +1072083A8:lI101|H10720B678 +10720B678:lI97|H10720E938 +10720E938:lI109|N +1071F6090:lH1071F8CE0|N +1071F8CE0:lI115|H1071FBC20 +1071FBC20:lI115|H1071FECD8 +1071FECD8:lI108|H107201E80 +107201E80:lI95|H1072050C0 +1072050C0:lI115|H1072083B8 +1072083B8:lI101|H10720B688 +10720B688:lI115|H10720E948 +10720E948:lI115|H107211CB8 +107211CB8:lI105|H107215190 +107215190:lI111|H107218830 +107218830:lI110|H10721C070 +10721C070:lI95|H10721F770 +10721F770:lI99|H107222C68 +107222C68:lI97|H107225DF0 +107225DF0:lI99|H107228C28 +107228C28:lI104|H10722B680 +10722B680:lI101|H10722DD88 +10722DD88:lI95|H107230200 +107230200:lI97|H107232388 +107232388:lI112|H107234210 +107234210:lI105|H107235D98 +107235D98:lI46|H107237690 +107237690:lI98|H107238D48 +107238D48:lI101|H10723A230 +10723A230:lI97|H10723B590 +10723B590:lI109|N +1071F16D8:Mn3:H1071F3840,H1071F3858,H1071F3868 +1071F3840:Mn2:H1071F6030,H1071F6040 +1071F6030:lH1071F8C80|N +1071F8C80:lI115|H1071FBBC0 +1071FBBC0:lI115|H1071FEC78 +1071FEC78:lI108|H107201E20 +107201E20:lI95|H107205060 +107205060:lI99|H107208358 +107208358:lI111|H10720B628 +10720B628:lI110|H10720E8E8 +10720E8E8:lI102|H107211C68 +107211C68:lI105|H107215140 +107215140:lI103|H1072187E0 +1072187E0:lI46|H10721C020 +10721C020:lI98|H10721F730 +10721F730:lI101|H107222C28 +107222C28:lI97|H107225DB0 +107225DB0:lI109|N +1071F6040:lH1071F8C90|N +1071F8C90:lI116|H1071FBBD0 +1071FBBD0:lI108|H1071FEC88 +1071FEC88:lI115|H107201E30 +107201E30:lI95|H107205070 +107205070:lI114|H107208368 +107208368:lI101|H10720B638 +10720B638:lI99|H10720E8F8 +10720E8F8:lI111|H107211C78 +107211C78:lI114|H107215150 +107215150:lI100|H1072187F0 +1072187F0:lI95|H10721C030 +10721C030:lI49|H10721F740 +10721F740:lI95|H107222C38 +107222C38:lI51|H107225DC0 +107225DC0:lI46|H107228C08 +107228C08:lI98|H10722B660 +10722B660:lI101|H10722DD68 +10722DD68:lI97|H1072301E0 +1072301E0:lI109|N +1071F3868:lH1071F6060|N +1071F6060:lI115|H1071F8CB0 +1071F8CB0:lI115|H1071FBBF0 +1071FBBF0:lI108|H1071FECA8 +1071FECA8:lI95|H107201E50 +107201E50:lI115|H107205090 +107205090:lI101|H107208388 +107208388:lI115|H10720B658 +10720B658:lI115|H10720E918 +10720E918:lI105|H107211C98 +107211C98:lI111|H107215170 +107215170:lI110|H107218810 +107218810:lI46|H10721C050 +10721C050:lI98|H10721F760 +10721F760:lI101|H107222C58 +107222C58:lI97|H107225DE0 +107225DE0:lI109|N +1071F3858:lH1071F6050|N +1071F6050:lI115|H1071F8CA0 +1071F8CA0:lI115|H1071FBBE0 +1071FBBE0:lI108|H1071FEC98 +1071FEC98:lI95|H107201E40 +107201E40:lI115|H107205080 +107205080:lI101|H107208378 +107208378:lI114|H10720B648 +10720B648:lI118|H10720E908 +10720E908:lI101|H107211C88 +107211C88:lI114|H107215160 +107215160:lI95|H107218800 +107218800:lI115|H10721C040 +10721C040:lI101|H10721F750 +10721F750:lI115|H107222C48 +107222C48:lI115|H107225DD0 +107225DD0:lI105|H107228C18 +107228C18:lI111|H10722B670 +10722B670:lI110|H10722DD78 +10722DD78:lI95|H1072301F0 +1072301F0:lI99|H107232378 +107232378:lI97|H107234200 +107234200:lI99|H107235D88 +107235D88:lI104|H107237680 +107237680:lI101|H107238D38 +107238D38:lI95|H10723A220 +10723A220:lI100|H10723B580 +10723B580:lI98|H10723C690 +10723C690:lI46|H10723D550 +10723D550:lI98|H10723E2F0 +10723E2F0:lI101|H10723EF20 +10723EF20:lI97|H10723F9F0 +10723F9F0:lI109|N +1071F16A8:Mn5:H1071F37F0,H1071F3800,H1071F3810,H1071F3820,H1071F3830 +1071F37F0:lH1071F5FE0|N +1071F5FE0:lI100|H1071F8C30 +1071F8C30:lI116|H1071FBB70 +1071FBB70:lI108|H1071FEC28 +1071FEC28:lI115|H107201DD0 +107201DD0:lI95|H107205010 +107205010:lI115|H107208308 +107208308:lI101|H10720B5D8 +10720B5D8:lI114|H10720E898 +10720E898:lI118|H107211C18 +107211C18:lI101|H1072150F0 +1072150F0:lI114|H107218790 +107218790:lI95|H10721BFD0 +10721BFD0:lI115|H10721F6E0 +10721F6E0:lI117|H107222BD8 +107222BD8:lI112|H107225D60 +107225D60:lI46|H107228BB8 +107228BB8:lI98|H10722B610 +10722B610:lI101|H10722DD28 +10722DD28:lI97|H1072301A0 +1072301A0:lI109|N +1071F3830:lH1071F6020|N +1071F6020:lI116|H1071F8C70 +1071F8C70:lI108|H1071FBBB0 +1071FBBB0:lI115|H1071FEC68 +1071FEC68:lI95|H107201E10 +107201E10:lI103|H107205050 +107205050:lI101|H107208348 +107208348:lI110|H10720B618 +10720B618:lI95|H10720E8D8 +10720E8D8:lI99|H107211C58 +107211C58:lI111|H107215130 +107215130:lI110|H1072187D0 +1072187D0:lI110|H10721C010 +10721C010:lI101|H10721F720 +10721F720:lI99|H107222C18 +107222C18:lI116|H107225DA0 +107225DA0:lI105|H107228BF8 +107228BF8:lI111|H10722B650 +10722B650:lI110|H10722DD58 +10722DD58:lI46|H1072301D0 +1072301D0:lI98|H107232368 +107232368:lI101|H1072341F0 +1072341F0:lI97|H107235D78 +107235D78:lI109|N +1071F3820:lH1071F6010|N +1071F6010:lI105|H1071F8C60 +1071F8C60:lI110|H1071FBBA0 +1071FBBA0:lI101|H1071FEC58 +1071FEC58:lI116|H107201E00 +107201E00:lI95|H107205040 +107205040:lI116|H107208338 +107208338:lI108|H10720B608 +10720B608:lI115|H10720E8C8 +10720E8C8:lI95|H107211C48 +107211C48:lI100|H107215120 +107215120:lI105|H1072187C0 +1072187C0:lI115|H10721C000 +10721C000:lI116|H10721F710 +10721F710:lI46|H107222C08 +107222C08:lI98|H107225D90 +107225D90:lI101|H107228BE8 +107228BE8:lI97|H10722B640 +10722B640:lI109|N +1071F3810:lH1071F6000|N +1071F6000:lI115|H1071F8C50 +1071F8C50:lI115|H1071FBB90 +1071FBB90:lI108|H1071FEC48 +1071FEC48:lI95|H107201DF0 +107201DF0:lI99|H107205030 +107205030:lI111|H107208328 +107208328:lI110|H10720B5F8 +10720B5F8:lI110|H10720E8B8 +10720E8B8:lI101|H107211C38 +107211C38:lI99|H107215110 +107215110:lI116|H1072187B0 +1072187B0:lI105|H10721BFF0 +10721BFF0:lI111|H10721F700 +10721F700:lI110|H107222BF8 +107222BF8:lI95|H107225D80 +107225D80:lI115|H107228BD8 +107228BD8:lI117|H10722B630 +10722B630:lI112|H10722DD48 +10722DD48:lI46|H1072301C0 +1072301C0:lI98|H107232358 +107232358:lI101|H1072341E0 +1072341E0:lI97|H107235D68 +107235D68:lI109|N +1071F3800:lH1071F5FF0|N +1071F5FF0:lI115|H1071F8C40 +1071F8C40:lI115|H1071FBB80 +1071FBB80:lI108|H1071FEC38 +1071FEC38:lI95|H107201DE0 +107201DE0:lI100|H107205020 +107205020:lI105|H107208318 +107208318:lI115|H10720B5E8 +10720B5E8:lI116|H10720E8A8 +10720E8A8:lI95|H107211C28 +107211C28:lI97|H107215100 +107215100:lI100|H1072187A0 +1072187A0:lI109|H10721BFE0 +10721BFE0:lI105|H10721F6F0 +10721F6F0:lI110|H107222BE8 +107222BE8:lI95|H107225D70 +107225D70:lI115|H107228BC8 +107228BC8:lI117|H10722B620 +10722B620:lI112|H10722DD38 +10722DD38:lI46|H1072301B0 +1072301B0:lI98|H107232348 +107232348:lI101|H1072341D0 +1072341D0:lI97|H107235D58 +107235D58:lI109|N +1071F1678:Mn5:H1071F37A0,H1071F37B0,H1071F37C0,H1071F37D0,H1071F37E0 +1071F37A0:lH1071F5F90|N +1071F5F90:lI116|H1071F8BE0 +1071F8BE0:lI108|H1071FBB20 +1071FBB20:lI115|H1071FEBD8 +1071FEBD8:lI95|H107201D80 +107201D80:lI115|H107204FC0 +107204FC0:lI111|H1072082B8 +1072082B8:lI99|H10720B588 +10720B588:lI107|H10720E848 +10720E848:lI101|H107211BC8 +107211BC8:lI116|H1072150A0 +1072150A0:lI46|H107218740 +107218740:lI98|H10721BF90 +10721BF90:lI101|H10721F6A0 +10721F6A0:lI97|H107222BA8 +107222BA8:lI109|N +1071F37E0:lH1071F5FD0|N +1071F5FD0:lI115|H1071F8C20 +1071F8C20:lI115|H1071FBB60 +1071FBB60:lI108|H1071FEC18 +1071FEC18:lI95|H107201DC0 +107201DC0:lI99|H107205000 +107205000:lI114|H1072082F8 +1072082F8:lI108|H10720B5C8 +10720B5C8:lI46|H10720E888 +10720E888:lI98|H107211C08 +107211C08:lI101|H1072150E0 +1072150E0:lI97|H107218780 +107218780:lI109|N +1071F37D0:lH1071F5FC0|N +1071F5FC0:lI115|H1071F8C10 +1071F8C10:lI115|H1071FBB50 +1071FBB50:lI108|H1071FEC08 +1071FEC08:lI95|H107201DB0 +107201DB0:lI116|H107204FF0 +107204FF0:lI114|H1072082E8 +1072082E8:lI97|H10720B5B8 +10720B5B8:lI99|H10720E878 +10720E878:lI101|H107211BF8 +107211BF8:lI46|H1072150D0 +1072150D0:lI98|H107218770 +107218770:lI101|H10721BFC0 +10721BFC0:lI97|H10721F6D0 +10721F6D0:lI109|N +1071F37C0:lH1071F5FB0|N +1071F5FB0:lI100|H1071F8C00 +1071F8C00:lI116|H1071FBB40 +1071FBB40:lI108|H1071FEBF8 +1071FEBF8:lI115|H107201DA0 +107201DA0:lI95|H107204FE0 +107204FE0:lI114|H1072082D8 +1072082D8:lI101|H10720B5A8 +10720B5A8:lI99|H10720E868 +10720E868:lI111|H107211BE8 +107211BE8:lI114|H1072150C0 +1072150C0:lI100|H107218760 +107218760:lI46|H10721BFB0 +10721BFB0:lI98|H10721F6C0 +10721F6C0:lI101|H107222BC8 +107222BC8:lI97|H107225D50 +107225D50:lI109|N +1071F37B0:lH1071F5FA0|N +1071F5FA0:lI100|H1071F8BF0 +1071F8BF0:lI116|H1071FBB30 +1071FBB30:lI108|H1071FEBE8 +1071FEBE8:lI115|H107201D90 +107201D90:lI95|H107204FD0 +107204FD0:lI108|H1072082C8 +1072082C8:lI105|H10720B598 +10720B598:lI115|H10720E858 +10720E858:lI116|H107211BD8 +107211BD8:lI101|H1072150B0 +1072150B0:lI110|H107218750 +107218750:lI101|H10721BFA0 +10721BFA0:lI114|H10721F6B0 +10721F6B0:lI95|H107222BB8 +107222BB8:lI115|H107225D40 +107225D40:lI117|H107228BA8 +107228BA8:lI112|H10722B600 +10722B600:lI46|H10722DD18 +10722DD18:lI98|H107230190 +107230190:lI101|H107232338 +107232338:lI97|H1072341C0 +1072341C0:lI109|N +1071F1640:Mn6:H1071F3720,H1071F3740,H1071F3750,H1071F3760,H1071F3780,H1071F3790 +1071F3720:Mn3:H1071F5EF0,H1071F5F00,H1071F5F10 +1071F5EF0:lH1071F8B40|N +1071F8B40:lI115|H1071FBA80 +1071FBA80:lI115|H1071FEB38 +1071FEB38:lI108|H107201CE0 +107201CE0:lI95|H107204F20 +107204F20:lI115|H107208218 +107208218:lI101|H10720B4E8 +10720B4E8:lI114|H10720E7A8 +10720E7A8:lI118|H107211B28 +107211B28:lI101|H107215000 +107215000:lI114|H1072186A0 +1072186A0:lI95|H10721BF00 +10721BF00:lI115|H10721F620 +10721F620:lI101|H107222B28 +107222B28:lI115|H107225CD0 +107225CD0:lI115|H107228B38 +107228B38:lI105|H10722B590 +10722B590:lI111|H10722DCA8 +10722DCA8:lI110|H107230140 +107230140:lI95|H1072322E8 +1072322E8:lI99|H107234170 +107234170:lI97|H107235D08 +107235D08:lI99|H107237630 +107237630:lI104|H107238CE8 +107238CE8:lI101|H10723A1D0 +10723A1D0:lI46|H10723B530 +10723B530:lI98|H10723C640 +10723C640:lI101|H10723D510 +10723D510:lI97|H10723E2B0 +10723E2B0:lI109|N +1071F5F10:lH1071F8B60|N +1071F8B60:lI116|H1071FBAA0 +1071FBAA0:lI108|H1071FEB58 +1071FEB58:lI115|H107201D00 +107201D00:lI95|H107204F40 +107204F40:lI100|H107208238 +107208238:lI121|H10720B508 +10720B508:lI110|H10720E7C8 +10720E7C8:lI95|H107211B48 +107211B48:lI99|H107215020 +107215020:lI111|H1072186C0 +1072186C0:lI110|H10721BF20 +10721BF20:lI110|H10721F640 +10721F640:lI101|H107222B48 +107222B48:lI99|H107225CF0 +107225CF0:lI116|H107228B58 +107228B58:lI105|H10722B5B0 +10722B5B0:lI111|H10722DCC8 +10722DCC8:lI110|H107230150 +107230150:lI95|H1072322F8 +1072322F8:lI115|H107234180 +107234180:lI117|H107235D18 +107235D18:lI112|H107237640 +107237640:lI46|H107238CF8 +107238CF8:lI98|H10723A1E0 +10723A1E0:lI101|H10723B540 +10723B540:lI97|H10723C650 +10723C650:lI109|N +1071F5F00:lH1071F8B50|N +1071F8B50:lI116|H1071FBA90 +1071FBA90:lI108|H1071FEB48 +1071FEB48:lI115|H107201CF0 +107201CF0:lI95|H107204F30 +107204F30:lI104|H107208228 +107208228:lI97|H10720B4F8 +10720B4F8:lI110|H10720E7B8 +10720E7B8:lI100|H107211B38 +107211B38:lI115|H107215010 +107215010:lI104|H1072186B0 +1072186B0:lI97|H10721BF10 +10721BF10:lI107|H10721F630 +10721F630:lI101|H107222B38 +107222B38:lI46|H107225CE0 +107225CE0:lI98|H107228B48 +107228B48:lI101|H10722B5A0 +10722B5A0:lI97|H10722DCB8 +10722DCB8:lI109|N +1071F3790:lH1071F5F80|N +1071F5F80:lI115|H1071F8BD0 +1071F8BD0:lI115|H1071FBB10 +1071FBB10:lI108|H1071FEBC8 +1071FEBC8:lI95|H107201D70 +107201D70:lI99|H107204FB0 +107204FB0:lI108|H1072082A8 +1072082A8:lI105|H10720B578 +10720B578:lI101|H10720E838 +10720E838:lI110|H107211BB8 +107211BB8:lI116|H107215090 +107215090:lI95|H107218730 +107218730:lI115|H10721BF80 +10721BF80:lI101|H10721F690 +10721F690:lI115|H107222B98 +107222B98:lI115|H107225D30 +107225D30:lI105|H107228B98 +107228B98:lI111|H10722B5F0 +10722B5F0:lI110|H10722DD08 +10722DD08:lI95|H107230180 +107230180:lI99|H107232328 +107232328:lI97|H1072341B0 +1072341B0:lI99|H107235D48 +107235D48:lI104|H107237670 +107237670:lI101|H107238D28 +107238D28:lI95|H10723A210 +10723A210:lI100|H10723B570 +10723B570:lI98|H10723C680 +10723C680:lI46|H10723D540 +10723D540:lI98|H10723E2E0 +10723E2E0:lI101|H10723EF10 +10723EF10:lI97|H10723F9E0 +10723F9E0:lI109|N +1071F3780:lH1071F5F70|N +1071F5F70:lI115|H1071F8BC0 +1071F8BC0:lI115|H1071FBB00 +1071FBB00:lI108|H1071FEBB8 +1071FEBB8:lI95|H107201D60 +107201D60:lI97|H107204FA0 +107204FA0:lI112|H107208298 +107208298:lI112|H10720B568 +10720B568:lI46|H10720E828 +10720E828:lI98|H107211BA8 +107211BA8:lI101|H107215080 +107215080:lI97|H107218720 +107218720:lI109|N +1071F3760:Mn3:H1071F5F40,H1071F5F50,H1071F5F60 +1071F5F40:lH1071F8B90|N +1071F8B90:lI115|H1071FBAD0 +1071FBAD0:lI115|H1071FEB88 +1071FEB88:lI108|H107201D30 +107201D30:lI95|H107204F70 +107204F70:lI115|H107208268 +107208268:lI117|H10720B538 +10720B538:lI112|H10720E7F8 +10720E7F8:lI46|H107211B78 +107211B78:lI98|H107215050 +107215050:lI101|H1072186F0 +1072186F0:lI97|H10721BF50 +10721BF50:lI109|N +1071F5F60:lH1071F8BB0|N +1071F8BB0:lI116|H1071FBAF0 +1071FBAF0:lI108|H1071FEBA8 +1071FEBA8:lI115|H107201D50 +107201D50:lI95|H107204F90 +107204F90:lI115|H107208288 +107208288:lI101|H10720B558 +10720B558:lI114|H10720E818 +10720E818:lI118|H107211B98 +107211B98:lI101|H107215070 +107215070:lI114|H107218710 +107218710:lI95|H10721BF70 +10721BF70:lI99|H10721F680 +10721F680:lI111|H107222B88 +107222B88:lI110|H107225D20 +107225D20:lI110|H107228B88 +107228B88:lI101|H10722B5E0 +10722B5E0:lI99|H10722DCF8 +10722DCF8:lI116|H107230170 +107230170:lI105|H107232318 +107232318:lI111|H1072341A0 +1072341A0:lI110|H107235D38 +107235D38:lI95|H107237660 +107237660:lI49|H107238D18 +107238D18:lI95|H10723A200 +10723A200:lI51|H10723B560 +10723B560:lI46|H10723C670 +10723C670:lI98|H10723D530 +10723D530:lI101|H10723E2D0 +10723E2D0:lI97|H10723EF00 +10723EF00:lI109|N +1071F5F50:lH1071F8BA0|N +1071F8BA0:lI115|H1071FBAE0 +1071FBAE0:lI115|H1071FEB98 +1071FEB98:lI108|H107201D40 +107201D40:lI95|H107204F80 +107204F80:lI97|H107208278 +107208278:lI108|H10720B548 +10720B548:lI101|H10720E808 +10720E808:lI114|H107211B88 +107211B88:lI116|H107215060 +107215060:lI46|H107218700 +107218700:lI98|H10721BF60 +10721BF60:lI101|H10721F670 +10721F670:lI97|H107222B78 +107222B78:lI109|N +1071F3750:lH1071F5F30|N +1071F5F30:lI100|H1071F8B80 +1071F8B80:lI116|H1071FBAC0 +1071FBAC0:lI108|H1071FEB78 +1071FEB78:lI115|H107201D20 +107201D20:lI95|H107204F60 +107204F60:lI115|H107208258 +107208258:lI101|H10720B528 +10720B528:lI114|H10720E7E8 +10720E7E8:lI118|H107211B68 +107211B68:lI101|H107215040 +107215040:lI114|H1072186E0 +1072186E0:lI95|H10721BF40 +10721BF40:lI115|H10721F660 +10721F660:lI101|H107222B68 +107222B68:lI115|H107225D10 +107225D10:lI115|H107228B78 +107228B78:lI105|H10722B5D0 +10722B5D0:lI111|H10722DCE8 +10722DCE8:lI110|H107230160 +107230160:lI95|H107232308 +107232308:lI99|H107234190 +107234190:lI97|H107235D28 +107235D28:lI99|H107237650 +107237650:lI104|H107238D08 +107238D08:lI101|H10723A1F0 +10723A1F0:lI95|H10723B550 +10723B550:lI115|H10723C660 +10723C660:lI117|H10723D520 +10723D520:lI112|H10723E2C0 +10723E2C0:lI46|H10723EEF0 +10723EEF0:lI98|H10723F9D0 +10723F9D0:lI101|H107240340 +107240340:lI97|H107240BD0 +107240BD0:lI109|N +1071F3740:lH1071F5F20|N +1071F5F20:lI116|H1071F8B70 +1071F8B70:lI108|H1071FBAB0 +1071FBAB0:lI115|H1071FEB68 +1071FEB68:lI95|H107201D10 +107201D10:lI115|H107204F50 +107204F50:lI101|H107208248 +107208248:lI114|H10720B518 +10720B518:lI118|H10720E7D8 +10720E7D8:lI101|H107211B58 +107211B58:lI114|H107215030 +107215030:lI95|H1072186D0 +1072186D0:lI115|H10721BF30 +10721BF30:lI117|H10721F650 +10721F650:lI112|H107222B58 +107222B58:lI46|H107225D00 +107225D00:lI98|H107228B68 +107228B68:lI101|H10722B5C0 +10722B5C0:lI97|H10722DCD8 +10722DCD8:lI109|N +1071F1610:Mn5:H1071F36C0,H1071F36D8,H1071F36E8,H1071F36F8,H1071F3708 +1071F36C0:Mn2:H1071F5E80,H1071F5E90 +1071F5E80:lH1071F8AD0|N +1071F8AD0:lI116|H1071FBA10 +1071FBA10:lI108|H1071FEAC8 +1071FEAC8:lI115|H107201C70 +107201C70:lI95|H107204EB0 +107204EB0:lI104|H1072081A8 +1072081A8:lI97|H10720B478 +10720B478:lI110|H10720E738 +10720E738:lI100|H107211AB8 +107211AB8:lI115|H107214F90 +107214F90:lI104|H107218630 +107218630:lI97|H10721BE90 +10721BE90:lI107|H10721F5C0 +10721F5C0:lI101|H107222AC8 +107222AC8:lI95|H107225C70 +107225C70:lI49|H107228AD8 +107228AD8:lI95|H10722B530 +10722B530:lI51|H10722DC58 +10722DC58:lI46|H107230100 +107230100:lI98|H1072322A8 +1072322A8:lI101|H107234140 +107234140:lI97|H107235CE8 +107235CE8:lI109|N +1071F5E90:lH1071F8AE0|N +1071F8AE0:lI115|H1071FBA20 +1071FBA20:lI115|H1071FEAD8 +1071FEAD8:lI108|H107201C80 +107201C80:lI95|H107204EC0 +107204EC0:lI97|H1072081B8 +1072081B8:lI100|H10720B488 +10720B488:lI109|H10720E748 +10720E748:lI105|H107211AC8 +107211AC8:lI110|H107214FA0 +107214FA0:lI95|H107218640 +107218640:lI115|H10721BEA0 +10721BEA0:lI117|H10721F5D0 +10721F5D0:lI112|H107222AD8 +107222AD8:lI46|H107225C80 +107225C80:lI98|H107228AE8 +107228AE8:lI101|H10722B540 +10722B540:lI97|H10722DC68 +10722DC68:lI109|N +1071F3708:Mn2:H1071F5ED0,H1071F5EE0 +1071F5ED0:lH1071F8B20|N +1071F8B20:lI116|H1071FBA60 +1071FBA60:lI108|H1071FEB18 +1071FEB18:lI115|H107201CC0 +107201CC0:lI95|H107204F00 +107204F00:lI115|H1072081F8 +1072081F8:lI117|H10720B4C8 +10720B4C8:lI112|H10720E788 +10720E788:lI46|H107211B08 +107211B08:lI98|H107214FE0 +107214FE0:lI101|H107218680 +107218680:lI97|H10721BEE0 +10721BEE0:lI109|N +1071F5EE0:lH1071F8B30|N +1071F8B30:lI100|H1071FBA70 +1071FBA70:lI116|H1071FEB28 +1071FEB28:lI108|H107201CD0 +107201CD0:lI115|H107204F10 +107204F10:lI95|H107208208 +107208208:lI99|H10720B4D8 +10720B4D8:lI111|H10720E798 +10720E798:lI110|H107211B18 +107211B18:lI110|H107214FF0 +107214FF0:lI101|H107218690 +107218690:lI99|H10721BEF0 +10721BEF0:lI116|H10721F610 +10721F610:lI105|H107222B18 +107222B18:lI111|H107225CC0 +107225CC0:lI110|H107228B28 +107228B28:lI46|H10722B580 +10722B580:lI98|H10722DC98 +10722DC98:lI101|H107230130 +107230130:lI97|H1072322D8 +1072322D8:lI109|N +1071F36F8:lH1071F5EC0|N +1071F5EC0:lI115|H1071F8B10 +1071F8B10:lI115|H1071FBA50 +1071FBA50:lI108|H1071FEB08 +1071FEB08:lI95|H107201CB0 +107201CB0:lI99|H107204EF0 +107204EF0:lI114|H1072081E8 +1072081E8:lI108|H10720B4B8 +10720B4B8:lI95|H10720E778 +10720E778:lI99|H107211AF8 +107211AF8:lI97|H107214FD0 +107214FD0:lI99|H107218670 +107218670:lI104|H10721BED0 +10721BED0:lI101|H10721F600 +10721F600:lI46|H107222B08 +107222B08:lI98|H107225CB0 +107225CB0:lI101|H107228B18 +107228B18:lI97|H10722B570 +10722B570:lI109|N +1071F36E8:lH1071F5EB0|N +1071F5EB0:lI100|H1071F8B00 +1071F8B00:lI116|H1071FBA40 +1071FBA40:lI108|H1071FEAF8 +1071FEAF8:lI115|H107201CA0 +107201CA0:lI95|H107204EE0 +107204EE0:lI112|H1072081D8 +1072081D8:lI97|H10720B4A8 +10720B4A8:lI99|H10720E768 +10720E768:lI107|H107211AE8 +107211AE8:lI101|H107214FC0 +107214FC0:lI116|H107218660 +107218660:lI95|H10721BEC0 +10721BEC0:lI100|H10721F5F0 +10721F5F0:lI101|H107222AF8 +107222AF8:lI109|H107225CA0 +107225CA0:lI117|H107228B08 +107228B08:lI120|H10722B560 +10722B560:lI46|H10722DC88 +10722DC88:lI98|H107230120 +107230120:lI101|H1072322C8 +1072322C8:lI97|H107234160 +107234160:lI109|N +1071F36D8:lH1071F5EA0|N +1071F5EA0:lI116|H1071F8AF0 +1071F8AF0:lI108|H1071FBA30 +1071FBA30:lI115|H1071FEAE8 +1071FEAE8:lI95|H107201C90 +107201C90:lI100|H107204ED0 +107204ED0:lI116|H1072081C8 +1072081C8:lI108|H10720B498 +10720B498:lI115|H10720E758 +10720E758:lI95|H107211AD8 +107211AD8:lI99|H107214FB0 +107214FB0:lI111|H107218650 +107218650:lI110|H10721BEB0 +10721BEB0:lI110|H10721F5E0 +10721F5E0:lI101|H107222AE8 +107222AE8:lI99|H107225C90 +107225C90:lI116|H107228AF8 +107228AF8:lI105|H10722B550 +10722B550:lI111|H10722DC78 +10722DC78:lI110|H107230110 +107230110:lI46|H1072322B8 +1072322B8:lI98|H107234150 +107234150:lI101|H107235CF8 +107235CF8:lI97|H107237620 +107237620:lI109|N +1071F0548:lI47|H1071F15E8 +1071F15E8:lI111|H1071F3690 +1071F3690:lI112|H1071F5E50 +1071F5E50:lI116|H1071F8AA0 +1071F8AA0:lI47|H1071FB9E0 +1071FB9E0:lI104|H1071FEA98 +1071FEA98:lI111|H107201C40 +107201C40:lI109|H107204E80 +107204E80:lI101|H107208178 +107208178:lI98|H10720B458 +10720B458:lI114|H10720E718 +10720E718:lI101|H107211A98 +107211A98:lI119|H107214F70 +107214F70:lI47|H107218610 +107218610:lI67|H10721BE70 +10721BE70:lI101|H10721F5A0 +10721F5A0:lI108|H107222AA8 +107222AA8:lI108|H107225C60 +107225C60:lI97|H107228AC8 +107228AC8:lI114|H10722B520 +10722B520:lI47|H10722DC48 +10722DC48:lI101|H1072300F0 +1072300F0:lI114|H107232298 +107232298:lI108|H107234130 +107234130:lI97|H107235CD8 +107235CD8:lI110|H107237610 +107237610:lI103|H107238CD8 +107238CD8:lI47|H10723A1C0 +10723A1C0:lI50|H10723B520 +10723B520:lI54|H10723C630 +10723C630:lI46|H10723D500 +10723D500:lI48|H10723E2A0 +10723E2A0:lI46|H10723EEE0 +10723EEE0:lI50|H10723F9C0 +10723F9C0:lI47|H107240330 +107240330:lI108|H107240BC0 +107240BC0:lI105|H107241370 +107241370:lI98|H107241AA0 +107241AA0:lI47|H107242170 +107242170:lI101|H1072427E0 +1072427E0:lI114|H107242DE0 +107242DE0:lI108|H107243350 +107243350:lI97|H107243890 +107243890:lI110|H107243DA0 +107243DA0:lI103|H107244290 +107244290:lI47|H107244740 +107244740:lI108|H107244BB0 +107244BB0:lI105|H107245010 +107245010:lI98|H107245460 +107245460:lI47|H107245860 +107245860:lI115|H107245C20 +107245C20:lI115|H107245FB0 +107245FB0:lI108|H107246340 +107246340:lI45|H1072466D0 +1072466D0:lI49|H107246A60 +107246A60:lI49|H107246DA0 +107246DA0:lI46|H1072470C0 +1072470C0:lI48|H1072473E0 +1072473E0:lI46|H1072476F0 +1072476F0:lI50|H1072479F0 +1072479F0:lI47|H280052C20 +1071F0538:lH1071F15C0|H1071F15D8 +1071F15C0:t2:H1071F35C8,H1071F35D8 +1071F35D8:Mh2B:10:H1071F5BC0,H1071F5BF8,H1071F5C10,H1071F5C30,H1071F5C48,H1071F5C58,H1071F5C70,H1071F5C90,H1071F5CA8,H1071F5CD0,H1071F5CE8,H1071F5D10,H1071F5D20,H1071F5D40,H1071F5D58,H1071F5D70 +1071F5BC0:Mn6:H1071F8428,H1071F8438,H1071F8450,H1071F8460,H1071F8470,H1071F8480 +1071F8428:lH1071FB080|N +1071FB080:lI115|H1071FDFC0 +1071FDFC0:lI115|H107201078 +107201078:lI104|H107204220 +107204220:lI95|H107207450 +107207450:lI99|H10720A6C8 +10720A6C8:lI108|H10720D8B8 +10720D8B8:lI105|H107210A58 +107210A58:lI101|H107213CB8 +107213CB8:lI110|H107217070 +107217070:lI116|H10721A5A0 +10721A5A0:lI95|H10721DB40 +10721DB40:lI99|H107221060 +107221060:lI104|H107224268 +107224268:lI97|H107227190 +107227190:lI110|H107229CC8 +107229CC8:lI110|H10722C4D0 +10722C4D0:lI101|H10722EA18 +10722EA18:lI108|H107230C80 +107230C80:lI46|H107232C78 +107232C78:lI98|H107234950 +107234950:lI101|H107236388 +107236388:lI97|H107237B50 +107237B50:lI109|N +1071F8480:lH1071FB0E0|N +1071FB0E0:lI115|H1071FE020 +1071FE020:lI115|H1072010D8 +1072010D8:lI104|H107204280 +107204280:lI95|H1072074B0 +1072074B0:lI115|H10720A728 +10720A728:lI101|H10720D918 +10720D918:lI114|H107210AA8 +107210AA8:lI118|H107213D08 +107213D08:lI101|H1072170C0 +1072170C0:lI114|H10721A5F0 +10721A5F0:lI95|H10721DB90 +10721DB90:lI99|H1072210B0 +1072210B0:lI104|H1072242B8 +1072242B8:lI97|H1072271D0 +1072271D0:lI110|H107229D08 +107229D08:lI110|H10722C500 +10722C500:lI101|H10722EA48 +10722EA48:lI108|H107230CB0 +107230CB0:lI46|H107232CA8 +107232CA8:lI98|H107234980 +107234980:lI101|H1072363A8 +1072363A8:lI97|H107237B70 +107237B70:lI109|N +1071F8470:lH1071FB0D0|N +1071FB0D0:lI115|H1071FE010 +1071FE010:lI115|H1072010C8 +1072010C8:lI104|H107204270 +107204270:lI95|H1072074A0 +1072074A0:lI115|H10720A718 +10720A718:lI101|H10720D908 +10720D908:lI114|H107210A98 +107210A98:lI118|H107213CF8 +107213CF8:lI101|H1072170B0 +1072170B0:lI114|H10721A5E0 +10721A5E0:lI95|H10721DB80 +10721DB80:lI107|H1072210A0 +1072210A0:lI101|H1072242A8 +1072242A8:lI121|H1072271C0 +1072271C0:lI95|H107229CF8 +107229CF8:lI97|H10722C4F0 +10722C4F0:lI112|H10722EA38 +10722EA38:lI105|H107230CA0 +107230CA0:lI46|H107232C98 +107232C98:lI98|H107234970 +107234970:lI101|H107236398 +107236398:lI97|H107237B60 +107237B60:lI109|N +1071F8460:lH1071FB0C0|N +1071FB0C0:lI115|H1071FE000 +1071FE000:lI115|H1072010B8 +1072010B8:lI104|H107204260 +107204260:lI95|H107207490 +107207490:lI109|H10720A708 +10720A708:lI101|H10720D8F8 +10720D8F8:lI115|H107210A88 +107210A88:lI115|H107213CE8 +107213CE8:lI97|H1072170A0 +1072170A0:lI103|H10721A5D0 +10721A5D0:lI101|H10721DB70 +10721DB70:lI46|H107221090 +107221090:lI98|H107224298 +107224298:lI101|H1072271B0 +1072271B0:lI97|H107229CE8 +107229CE8:lI109|N +1071F8450:lH1071FB0B0|N +1071FB0B0:lI115|H1071FDFF0 +1071FDFF0:lI115|H1072010A8 +1072010A8:lI104|H107204250 +107204250:lI46|H107207480 +107207480:lI97|H10720A6F8 +10720A6F8:lI112|H10720D8E8 +10720D8E8:lI112|N +1071F8438:Mn2:H1071FB090,H1071FB0A0 +1071FB090:lH1071FDFD0|N +1071FDFD0:lI115|H107201088 +107201088:lI115|H107204230 +107204230:lI104|H107207460 +107207460:lI95|H10720A6D8 +10720A6D8:lI99|H10720D8C8 +10720D8C8:lI104|H107210A68 +107210A68:lI97|H107213CC8 +107213CC8:lI110|H107217080 +107217080:lI110|H10721A5B0 +10721A5B0:lI101|H10721DB50 +10721DB50:lI108|H107221070 +107221070:lI95|H107224278 +107224278:lI115|H1072271A0 +1072271A0:lI117|H107229CD8 +107229CD8:lI112|H10722C4E0 +10722C4E0:lI46|H10722EA28 +10722EA28:lI98|H107230C90 +107230C90:lI101|H107232C88 +107232C88:lI97|H107234960 +107234960:lI109|N +1071FB0A0:lH1071FDFE0|N +1071FDFE0:lI115|H107201098 +107201098:lI115|H107204240 +107204240:lI104|H107207470 +107207470:lI95|H10720A6E8 +10720A6E8:lI115|H10720D8D8 +10720D8D8:lI102|H107210A78 +107210A78:lI116|H107213CD8 +107213CD8:lI112|H107217090 +107217090:lI46|H10721A5C0 +10721A5C0:lI98|H10721DB60 +10721DB60:lI101|H107221080 +107221080:lI97|H107224288 +107224288:lI109|N +1071F5D70:Mn2:H1071F86A8,H1071F86B8 +1071F86A8:lH1071FB310|N +1071FB310:lI115|H1071FE250 +1071FE250:lI115|H107201308 +107201308:lI104|H1072044B0 +1072044B0:lI95|H1072076E0 +1072076E0:lI115|H10720A958 +10720A958:lI102|H10720DB48 +10720DB48:lI116|H107210CD8 +107210CD8:lI112|H107213F38 +107213F38:lI100|H1072172D0 +1072172D0:lI95|H10721A800 +10721A800:lI102|H10721DD80 +10721DD80:lI105|H107221280 +107221280:lI108|H107224428 +107224428:lI101|H107227300 +107227300:lI46|H107229E38 +107229E38:lI98|H10722C620 +10722C620:lI101|H10722EB58 +10722EB58:lI97|H107230DB0 +107230DB0:lI109|N +1071F86B8:lH1071FB320|N +1071FB320:lI115|H1071FE260 +1071FE260:lI115|H107201318 +107201318:lI104|H1072044C0 +1072044C0:lI95|H1072076F0 +1072076F0:lI99|H10720A968 +10720A968:lI104|H10720DB58 +10720DB58:lI97|H107210CE8 +107210CE8:lI110|H107213F48 +107213F48:lI110|H1072172E0 +1072172E0:lI101|H10721A810 +10721A810:lI108|H10721DD90 +10721DD90:lI46|H107221290 +107221290:lI98|H107224438 +107224438:lI101|H107227310 +107227310:lI97|H107229E48 +107229E48:lI109|N +1071F5D58:Mn2:H1071F8688,H1071F8698 +1071F8688:lH1071FB2F0|N +1071FB2F0:lI115|H1071FE230 +1071FE230:lI115|H1072012E8 +1072012E8:lI104|H107204490 +107204490:lI95|H1072076C0 +1072076C0:lI97|H10720A938 +10720A938:lI99|H10720DB28 +10720DB28:lI99|H107210CB8 +107210CB8:lI101|H107213F18 +107213F18:lI112|H1072172B0 +1072172B0:lI116|H10721A7E0 +10721A7E0:lI111|H10721DD60 +10721DD60:lI114|H107221260 +107221260:lI46|H107224418 +107224418:lI98|H1072272F0 +1072272F0:lI101|H107229E28 +107229E28:lI97|H10722C610 +10722C610:lI109|N +1071F8698:lH1071FB300|N +1071FB300:lI115|H1071FE240 +1071FE240:lI115|H1072012F8 +1072012F8:lI104|H1072044A0 +1072044A0:lI95|H1072076D0 +1072076D0:lI102|H10720A948 +10720A948:lI105|H10720DB38 +10720DB38:lI108|H107210CC8 +107210CC8:lI101|H107213F28 +107213F28:lI46|H1072172C0 +1072172C0:lI98|H10721A7F0 +10721A7F0:lI101|H10721DD70 +10721DD70:lI97|H107221270 +107221270:lI109|N +1071F5D40:Mn2:H1071F8668,H1071F8678 +1071F8668:lH1071FB2D0|N +1071FB2D0:lI115|H1071FE210 +1071FE210:lI115|H1072012C8 +1072012C8:lI104|H107204470 +107204470:lI95|H1072076A0 +1072076A0:lI115|H10720A918 +10720A918:lI117|H10720DB08 +10720DB08:lI98|H107210C98 +107210C98:lI115|H107213EF8 +107213EF8:lI121|H107217290 +107217290:lI115|H10721A7C0 +10721A7C0:lI116|H10721DD40 +10721DD40:lI101|H107221240 +107221240:lI109|H1072243F8 +1072243F8:lI95|H1072272D0 +1072272D0:lI115|H107229E08 +107229E08:lI117|H10722C5F0 +10722C5F0:lI112|H10722EB38 +10722EB38:lI46|H107230D90 +107230D90:lI98|H107232D68 +107232D68:lI101|H107234A30 +107234A30:lI97|H107236448 +107236448:lI109|N +1071F8678:lH1071FB2E0|N +1071FB2E0:lI115|H1071FE220 +1071FE220:lI115|H1072012D8 +1072012D8:lI104|H107204480 +107204480:lI95|H1072076B0 +1072076B0:lI102|H10720A928 +10720A928:lI115|H10720DB18 +10720DB18:lI109|H107210CA8 +107210CA8:lI95|H107213F08 +107213F08:lI117|H1072172A0 +1072172A0:lI115|H10721A7D0 +10721A7D0:lI101|H10721DD50 +10721DD50:lI114|H107221250 +107221250:lI97|H107224408 +107224408:lI117|H1072272E0 +1072272E0:lI116|H107229E18 +107229E18:lI104|H10722C600 +10722C600:lI95|H10722EB48 +10722EB48:lI99|H107230DA0 +107230DA0:lI108|H107232D78 +107232D78:lI105|H107234A40 +107234A40:lI101|H107236458 +107236458:lI110|H107237C10 +107237C10:lI116|H1072391C8 +1072391C8:lI46|H10723A660 +10723A660:lI98|H10723B920 +10723B920:lI101|H10723C950 +10723C950:lI97|H10723D7C0 +10723D7C0:lI109|N +1071F5D20:Mn3:H1071F8638,H1071F8648,H1071F8658 +1071F8638:lH1071FB2A0|N +1071FB2A0:lI115|H1071FE1E0 +1071FE1E0:lI115|H107201298 +107201298:lI104|H107204440 +107204440:lI95|H107207670 +107207670:lI97|H10720A8E8 +10720A8E8:lI103|H10720DAD8 +10720DAD8:lI101|H107210C68 +107210C68:lI110|H107213EC8 +107213EC8:lI116|H107217260 +107217260:lI46|H10721A790 +10721A790:lI98|H10721DD10 +10721DD10:lI101|H107221210 +107221210:lI97|H1072243C8 +1072243C8:lI109|N +1071F8658:lH1071FB2C0|N +1071FB2C0:lI115|H1071FE200 +1071FE200:lI115|H1072012B8 +1072012B8:lI104|H107204460 +107204460:lI95|H107207690 +107207690:lI100|H10720A908 +10720A908:lI97|H10720DAF8 +10720DAF8:lI101|H107210C88 +107210C88:lI109|H107213EE8 +107213EE8:lI111|H107217280 +107217280:lI110|H10721A7B0 +10721A7B0:lI95|H10721DD30 +10721DD30:lI99|H107221230 +107221230:lI104|H1072243E8 +1072243E8:lI97|H1072272C0 +1072272C0:lI110|H107229DF8 +107229DF8:lI110|H10722C5E0 +10722C5E0:lI101|H10722EB28 +10722EB28:lI108|H107230D80 +107230D80:lI46|H107232D58 +107232D58:lI98|H107234A20 +107234A20:lI101|H107236438 +107236438:lI97|H107237C00 +107237C00:lI109|N +1071F8648:lH1071FB2B0|N +1071FB2B0:lI115|H1071FE1F0 +1071FE1F0:lI115|H1072012A8 +1072012A8:lI104|H107204450 +107204450:lI95|H107207680 +107207680:lI116|H10720A8F8 +10720A8F8:lI99|H10720DAE8 +10720DAE8:lI112|H107210C78 +107210C78:lI105|H107213ED8 +107213ED8:lI112|H107217270 +107217270:lI95|H10721A7A0 +10721A7A0:lI102|H10721DD20 +10721DD20:lI111|H107221220 +107221220:lI114|H1072243D8 +1072243D8:lI119|H1072272B0 +1072272B0:lI97|H107229DE8 +107229DE8:lI114|H10722C5D0 +10722C5D0:lI100|H10722EB18 +10722EB18:lI95|H107230D70 +107230D70:lI99|H107232D48 +107232D48:lI108|H107234A10 +107234A10:lI105|H107236428 +107236428:lI101|H107237BF0 +107237BF0:lI110|H1072391B8 +1072391B8:lI116|H10723A650 +10723A650:lI46|H10723B910 +10723B910:lI98|H10723C940 +10723C940:lI101|H10723D7B0 +10723D7B0:lI97|H10723E500 +10723E500:lI109|N +1071F5D10:lH1071F8628|N +1071F8628:lI115|H1071FB290 +1071FB290:lI115|H1071FE1D0 +1071FE1D0:lI104|H107201288 +107201288:lI95|H107204430 +107204430:lI97|H107207660 +107207660:lI112|H10720A8D8 +10720A8D8:lI112|H10720DAC8 +10720DAC8:lI46|H107210C58 +107210C58:lI98|H107213EB8 +107213EB8:lI101|H107217250 +107217250:lI97|H10721A780 +10721A780:lI109|N +1071F5CE8:Mn4:H1071F85E8,H1071F85F8,H1071F8608,H1071F8618 +1071F85E8:lH1071FB250|N +1071FB250:lI115|H1071FE190 +1071FE190:lI115|H107201248 +107201248:lI104|H1072043F0 +1072043F0:lI95|H107207620 +107207620:lI120|H10720A898 +10720A898:lI102|H10720DA88 +10720DA88:lI101|H107210C18 +107210C18:lI114|H107213E78 +107213E78:lI46|H107217210 +107217210:lI98|H10721A740 +10721A740:lI101|H10721DCD0 +10721DCD0:lI97|H1072211D0 +1072211D0:lI109|N +1071F8618:lH1071FB280|N +1071FB280:lI115|H1071FE1C0 +1071FE1C0:lI115|H107201278 +107201278:lI104|H107204420 +107204420:lI95|H107207650 +107207650:lI98|H10720A8C8 +10720A8C8:lI105|H10720DAB8 +10720DAB8:lI116|H107210C48 +107210C48:lI115|H107213EA8 +107213EA8:lI46|H107217240 +107217240:lI98|H10721A770 +10721A770:lI101|H10721DD00 +10721DD00:lI97|H107221200 +107221200:lI109|N +1071F8608:lH1071FB270|N +1071FB270:lI115|H1071FE1B0 +1071FE1B0:lI115|H107201268 +107201268:lI104|H107204410 +107204410:lI95|H107207640 +107207640:lI102|H10720A8B8 +10720A8B8:lI115|H10720DAA8 +10720DAA8:lI109|H107210C38 +107210C38:lI95|H107213E98 +107213E98:lI107|H107217230 +107217230:lI101|H10721A760 +10721A760:lI120|H10721DCF0 +10721DCF0:lI105|H1072211F0 +1072211F0:lI110|H1072243B8 +1072243B8:lI105|H1072272A0 +1072272A0:lI116|H107229DD8 +107229DD8:lI46|H10722C5C0 +10722C5C0:lI98|H10722EB08 +10722EB08:lI101|H107230D60 +107230D60:lI97|H107232D38 +107232D38:lI109|N +1071F85F8:lH1071FB260|N +1071FB260:lI115|H1071FE1A0 +1071FE1A0:lI115|H107201258 +107201258:lI104|H107204400 +107204400:lI95|H107207630 +107207630:lI111|H10720A8A8 +10720A8A8:lI112|H10720DA98 +10720DA98:lI116|H107210C28 +107210C28:lI105|H107213E88 +107213E88:lI111|H107217220 +107217220:lI110|H10721A750 +10721A750:lI115|H10721DCE0 +10721DCE0:lI46|H1072211E0 +1072211E0:lI98|H1072243A8 +1072243A8:lI101|H107227290 +107227290:lI97|H107229DC8 +107229DC8:lI109|N +1071F5CD0:Mn2:H1071F85C8,H1071F85D8 +1071F85C8:lH1071FB230|N +1071FB230:lI115|H1071FE170 +1071FE170:lI115|H107201228 +107201228:lI104|H1072043D0 +1072043D0:lI95|H107207600 +107207600:lI116|H10720A878 +10720A878:lI99|H10720DA68 +10720DA68:lI112|H107210BF8 +107210BF8:lI105|H107213E58 +107213E58:lI112|H1072171F0 +1072171F0:lI95|H10721A720 +10721A720:lI102|H10721DCB0 +10721DCB0:lI111|H1072211B0 +1072211B0:lI114|H107224388 +107224388:lI119|H107227270 +107227270:lI97|H107229DA8 +107229DA8:lI114|H10722C5A0 +10722C5A0:lI100|H10722EAE8 +10722EAE8:lI95|H107230D40 +107230D40:lI97|H107232D28 +107232D28:lI99|H107234A00 +107234A00:lI99|H107236418 +107236418:lI101|H107237BE0 +107237BE0:lI112|H1072391A8 +1072391A8:lI116|H10723A640 +10723A640:lI111|H10723B900 +10723B900:lI114|H10723C930 +10723C930:lI95|H10723D7A0 +10723D7A0:lI115|H10723E4F0 +10723E4F0:lI117|H10723F100 +10723F100:lI112|H10723FBC0 +10723FBC0:lI46|H107240500 +107240500:lI98|H107240D80 +107240D80:lI101|H107241510 +107241510:lI97|H107241C40 +107241C40:lI109|N +1071F85D8:lH1071FB240|N +1071FB240:lI115|H1071FE180 +1071FE180:lI115|H107201238 +107201238:lI104|H1072043E0 +1072043E0:lI95|H107207610 +107207610:lI115|H10720A888 +10720A888:lI121|H10720DA78 +10720DA78:lI115|H107210C08 +107210C08:lI116|H107213E68 +107213E68:lI101|H107217200 +107217200:lI109|H10721A730 +10721A730:lI95|H10721DCC0 +10721DCC0:lI115|H1072211C0 +1072211C0:lI117|H107224398 +107224398:lI112|H107227280 +107227280:lI46|H107229DB8 +107229DB8:lI98|H10722C5B0 +10722C5B0:lI101|H10722EAF8 +10722EAF8:lI97|H107230D50 +107230D50:lI109|N +1071F5CA8:Mn4:H1071F8588,H1071F8598,H1071F85A8,H1071F85B8 +1071F8588:lH1071FB1F0|N +1071FB1F0:lI115|H1071FE130 +1071FE130:lI115|H1072011E8 +1072011E8:lI104|H107204390 +107204390:lI95|H1072075C0 +1072075C0:lI116|H10720A838 +10720A838:lI99|H10720DA28 +10720DA28:lI112|H107210BB8 +107210BB8:lI105|H107213E18 +107213E18:lI112|H1072171B0 +1072171B0:lI95|H10721A6E0 +10721A6E0:lI102|H10721DC70 +10721DC70:lI111|H107221170 +107221170:lI114|H107224358 +107224358:lI119|H107227250 +107227250:lI97|H107229D88 +107229D88:lI114|H10722C580 +10722C580:lI100|H10722EAC8 +10722EAC8:lI95|H107230D30 +107230D30:lI115|H107232D18 +107232D18:lI114|H1072349F0 +1072349F0:lI118|H107236408 +107236408:lI46|H107237BD0 +107237BD0:lI98|H107239198 +107239198:lI101|H10723A630 +10723A630:lI97|H10723B8F0 +10723B8F0:lI109|N +1071F85B8:lH1071FB220|N +1071FB220:lI115|H1071FE160 +1071FE160:lI115|H107201218 +107201218:lI104|H1072043C0 +1072043C0:lI95|H1072075F0 +1072075F0:lI97|H10720A868 +10720A868:lI117|H10720DA58 +10720DA58:lI116|H107210BE8 +107210BE8:lI104|H107213E48 +107213E48:lI46|H1072171E0 +1072171E0:lI98|H10721A710 +10721A710:lI101|H10721DCA0 +10721DCA0:lI97|H1072211A0 +1072211A0:lI109|N +1071F85A8:lH1071FB210|N +1071FB210:lI115|H1071FE150 +1071FE150:lI115|H107201208 +107201208:lI104|H1072043B0 +1072043B0:lI95|H1072075E0 +1072075E0:lI116|H10720A858 +10720A858:lI114|H10720DA48 +10720DA48:lI97|H107210BD8 +107210BD8:lI110|H107213E38 +107213E38:lI115|H1072171D0 +1072171D0:lI112|H10721A700 +10721A700:lI111|H10721DC90 +10721DC90:lI114|H107221190 +107221190:lI116|H107224378 +107224378:lI46|H107227260 +107227260:lI98|H107229D98 +107229D98:lI101|H10722C590 +10722C590:lI97|H10722EAD8 +10722EAD8:lI109|N +1071F8598:lH1071FB200|N +1071FB200:lI115|H1071FE140 +1071FE140:lI115|H1072011F8 +1072011F8:lI104|H1072043A0 +1072043A0:lI95|H1072075D0 +1072075D0:lI115|H10720A848 +10720A848:lI104|H10720DA38 +10720DA38:lI101|H107210BC8 +107210BC8:lI108|H107213E28 +107213E28:lI108|H1072171C0 +1072171C0:lI46|H10721A6F0 +10721A6F0:lI98|H10721DC80 +10721DC80:lI101|H107221180 +107221180:lI97|H107224368 +107224368:lI109|N +1071F5C90:Mn2:H1071F8568,H1071F8578 +1071F8568:lH1071FB1D0|N +1071FB1D0:lI115|H1071FE110 +1071FE110:lI115|H1072011C8 +1072011C8:lI104|H107204370 +107204370:lI95|H1072075A0 +1072075A0:lI102|H10720A818 +10720A818:lI115|H10720DA08 +10720DA08:lI109|H107210B98 +107210B98:lI95|H107213DF8 +107213DF8:lI117|H107217190 +107217190:lI115|H10721A6C0 +10721A6C0:lI101|H10721DC50 +10721DC50:lI114|H107221150 +107221150:lI97|H107224338 +107224338:lI117|H107227230 +107227230:lI116|H107229D68 +107229D68:lI104|H10722C560 +10722C560:lI95|H10722EAA8 +10722EAA8:lI115|H107230D10 +107230D10:lI101|H107232CF8 +107232CF8:lI114|H1072349D0 +1072349D0:lI118|H1072363E8 +1072363E8:lI101|H107237BB0 +107237BB0:lI114|H107239188 +107239188:lI46|H10723A620 +10723A620:lI98|H10723B8E0 +10723B8E0:lI101|H10723C920 +10723C920:lI97|H10723D790 +10723D790:lI109|N +1071F8578:lH1071FB1E0|N +1071FB1E0:lI115|H1071FE120 +1071FE120:lI115|H1072011D8 +1072011D8:lI104|H107204380 +107204380:lI95|H1072075B0 +1072075B0:lI99|H10720A828 +10720A828:lI108|H10720DA18 +10720DA18:lI105|H107210BA8 +107210BA8:lI101|H107213E08 +107213E08:lI110|H1072171A0 +1072171A0:lI116|H10721A6D0 +10721A6D0:lI95|H10721DC60 +10721DC60:lI107|H107221160 +107221160:lI101|H107224348 +107224348:lI121|H107227240 +107227240:lI95|H107229D78 +107229D78:lI97|H10722C570 +10722C570:lI112|H10722EAB8 +10722EAB8:lI105|H107230D20 +107230D20:lI46|H107232D08 +107232D08:lI98|H1072349E0 +1072349E0:lI101|H1072363F8 +1072363F8:lI97|H107237BC0 +107237BC0:lI109|N +1071F5C70:Mn3:H1071F8538,H1071F8548,H1071F8558 +1071F8538:lH1071FB1A0|N +1071FB1A0:lI115|H1071FE0E0 +1071FE0E0:lI115|H107201198 +107201198:lI104|H107204340 +107204340:lI46|H107207570 +107207570:lI97|H10720A7E8 +10720A7E8:lI112|H10720D9D8 +10720D9D8:lI112|H107210B68 +107210B68:lI117|H107213DC8 +107213DC8:lI112|N +1071F8558:lH1071FB1C0|N +1071FB1C0:lI115|H1071FE100 +1071FE100:lI115|H1072011B8 +1072011B8:lI104|H107204360 +107204360:lI95|H107207590 +107207590:lI105|H10720A808 +10720A808:lI111|H10720D9F8 +10720D9F8:lI46|H107210B88 +107210B88:lI98|H107213DE8 +107213DE8:lI101|H107217180 +107217180:lI97|H10721A6B0 +10721A6B0:lI109|N +1071F8548:lH1071FB1B0|N +1071FB1B0:lI115|H1071FE0F0 +1071FE0F0:lI115|H1072011A8 +1072011A8:lI104|H107204350 +107204350:lI95|H107207580 +107207580:lI99|H10720A7F8 +10720A7F8:lI111|H10720D9E8 +10720D9E8:lI110|H107210B78 +107210B78:lI110|H107213DD8 +107213DD8:lI101|H107217170 +107217170:lI99|H10721A6A0 +10721A6A0:lI116|H10721DC40 +10721DC40:lI105|H107221140 +107221140:lI111|H107224328 +107224328:lI110|H107227220 +107227220:lI46|H107229D58 +107229D58:lI98|H10722C550 +10722C550:lI101|H10722EA98 +10722EA98:lI97|H107230D00 +107230D00:lI109|N +1071F5C58:Mn2:H1071F8518,H1071F8528 +1071F8518:lH1071FB180|N +1071FB180:lI115|H1071FE0C0 +1071FE0C0:lI115|H107201178 +107201178:lI104|H107204320 +107204320:lI95|H107207550 +107207550:lI115|H10720A7C8 +10720A7C8:lI102|H10720D9B8 +10720D9B8:lI116|H107210B48 +107210B48:lI112|H107213DA8 +107213DA8:lI100|H107217150 +107217150:lI95|H10721A680 +10721A680:lI102|H10721DC20 +10721DC20:lI105|H107221120 +107221120:lI108|H107224318 +107224318:lI101|H107227210 +107227210:lI95|H107229D48 +107229D48:lI97|H10722C540 +10722C540:lI112|H10722EA88 +10722EA88:lI105|H107230CF0 +107230CF0:lI46|H107232CE8 +107232CE8:lI98|H1072349C0 +1072349C0:lI101|H1072363D8 +1072363D8:lI97|H107237BA0 +107237BA0:lI109|N +1071F8528:lH1071FB190|N +1071FB190:lI115|H1071FE0D0 +1071FE0D0:lI115|H107201188 +107201188:lI104|H107204330 +107204330:lI95|H107207560 +107207560:lI105|H10720A7D8 +10720A7D8:lI110|H10720D9C8 +10720D9C8:lI102|H107210B58 +107210B58:lI111|H107213DB8 +107213DB8:lI46|H107217160 +107217160:lI98|H10721A690 +10721A690:lI101|H10721DC30 +10721DC30:lI97|H107221130 +107221130:lI109|N +1071F5C48:lH1071F8508|N +1071F8508:lI115|H1071FB170 +1071FB170:lI115|H1071FE0B0 +1071FE0B0:lI104|H107201168 +107201168:lI95|H107204310 +107204310:lI99|H107207540 +107207540:lI111|H10720A7B8 +10720A7B8:lI110|H10720D9A8 +10720D9A8:lI110|H107210B38 +107210B38:lI101|H107213D98 +107213D98:lI99|H107217140 +107217140:lI116|H10721A670 +10721A670:lI105|H10721DC10 +10721DC10:lI111|H107221110 +107221110:lI110|H107224308 +107224308:lI95|H107227200 +107227200:lI104|H107229D38 +107229D38:lI97|H10722C530 +10722C530:lI110|H10722EA78 +10722EA78:lI100|H107230CE0 +107230CE0:lI108|H107232CD8 +107232CD8:lI101|H1072349B0 +1072349B0:lI114|H1072363C8 +1072363C8:lI46|H107237B90 +107237B90:lI98|H107239178 +107239178:lI101|H10723A610 +10723A610:lI97|H10723B8D0 +10723B8D0:lI109|N +1071F5C30:Mn2:H1071F84E0,H1071F84F8 +1071F84E0:Mn2:H1071FB140,H1071FB150 +1071FB140:lH1071FE080|N +1071FE080:lI115|H107201138 +107201138:lI115|H1072042E0 +1072042E0:lI104|H107207510 +107207510:lI95|H10720A788 +10720A788:lI100|H10720D978 +10720D978:lI98|H107210B08 +107210B08:lI103|H107213D68 +107213D68:lI46|H107217120 +107217120:lI98|H10721A650 +10721A650:lI101|H10721DBF0 +10721DBF0:lI97|H1072210F0 +1072210F0:lI109|N +1071FB150:lH1071FE090|N +1071FE090:lI115|H107201148 +107201148:lI115|H1072042F0 +1072042F0:lI104|H107207520 +107207520:lI46|H10720A798 +10720A798:lI98|H10720D988 +10720D988:lI101|H107210B18 +107210B18:lI97|H107213D78 +107213D78:lI109|N +1071F84F8:lH1071FB160|N +1071FB160:lI115|H1071FE0A0 +1071FE0A0:lI115|H107201158 +107201158:lI104|H107204300 +107204300:lI95|H107207530 +107207530:lI115|H10720A7A8 +10720A7A8:lI102|H10720D998 +10720D998:lI116|H107210B28 +107210B28:lI112|H107213D88 +107213D88:lI100|H107217130 +107217130:lI46|H10721A660 +10721A660:lI98|H10721DC00 +10721DC00:lI101|H107221100 +107221100:lI97|H1072242F8 +1072242F8:lI109|N +1071F5C10:Mn3:H1071F84B0,H1071F84C0,H1071F84D0 +1071F84B0:lH1071FB110|N +1071FB110:lI115|H1071FE050 +1071FE050:lI115|H107201108 +107201108:lI104|H1072042B0 +1072042B0:lI95|H1072074E0 +1072074E0:lI110|H10720A758 +10720A758:lI111|H10720D948 +10720D948:lI95|H107210AD8 +107210AD8:lI105|H107213D38 +107213D38:lI111|H1072170F0 +1072170F0:lI46|H10721A620 +10721A620:lI98|H10721DBC0 +10721DBC0:lI101|H1072210D0 +1072210D0:lI97|H1072242D8 +1072242D8:lI109|N +1071F84D0:lH1071FB130|N +1071FB130:lI115|H1071FE070 +1071FE070:lI115|H107201128 +107201128:lI104|H1072042D0 +1072042D0:lI95|H107207500 +107207500:lI99|H10720A778 +10720A778:lI108|H10720D968 +10720D968:lI105|H107210AF8 +107210AF8:lI46|H107213D58 +107213D58:lI98|H107217110 +107217110:lI101|H10721A640 +10721A640:lI97|H10721DBE0 +10721DBE0:lI109|N +1071F84C0:lH1071FB120|N +1071FB120:lI115|H1071FE060 +1071FE060:lI115|H107201118 +107201118:lI104|H1072042C0 +1072042C0:lI95|H1072074F0 +1072074F0:lI116|H10720A768 +10720A768:lI99|H10720D958 +10720D958:lI112|H107210AE8 +107210AE8:lI105|H107213D48 +107213D48:lI112|H107217100 +107217100:lI95|H10721A630 +10721A630:lI102|H10721DBD0 +10721DBD0:lI111|H1072210E0 +1072210E0:lI114|H1072242E8 +1072242E8:lI119|H1072271F0 +1072271F0:lI97|H107229D28 +107229D28:lI114|H10722C520 +10722C520:lI100|H10722EA68 +10722EA68:lI95|H107230CD0 +107230CD0:lI97|H107232CC8 +107232CC8:lI99|H1072349A0 +1072349A0:lI99|H1072363B8 +1072363B8:lI101|H107237B80 +107237B80:lI112|H107239168 +107239168:lI116|H10723A600 +10723A600:lI111|H10723B8C0 +10723B8C0:lI114|H10723C910 +10723C910:lI46|H10723D780 +10723D780:lI98|H10723E4E0 +10723E4E0:lI101|H10723F0F0 +10723F0F0:lI97|H10723FBB0 +10723FBB0:lI109|N +1071F5BF8:Mn2:H1071F8490,H1071F84A0 +1071F8490:lH1071FB0F0|N +1071FB0F0:lI115|H1071FE030 +1071FE030:lI115|H1072010E8 +1072010E8:lI104|H107204290 +107204290:lI95|H1072074C0 +1072074C0:lI97|H10720A738 +10720A738:lI99|H10720D928 +10720D928:lI99|H107210AB8 +107210AB8:lI101|H107213D18 +107213D18:lI112|H1072170D0 +1072170D0:lI116|H10721A600 +10721A600:lI111|H10721DBA0 +10721DBA0:lI114|H1072210C0 +1072210C0:lI95|H1072242C8 +1072242C8:lI115|H1072271E0 +1072271E0:lI117|H107229D18 +107229D18:lI112|H10722C510 +10722C510:lI46|H10722EA58 +10722EA58:lI98|H107230CC0 +107230CC0:lI101|H107232CB8 +107232CB8:lI97|H107234990 +107234990:lI109|N +1071F84A0:lH1071FB100|N +1071FB100:lI115|H1071FE040 +1071FE040:lI115|H1072010F8 +1072010F8:lI104|H1072042A0 +1072042A0:lI95|H1072074D0 +1072074D0:lI108|H10720A748 +10720A748:lI105|H10720D938 +10720D938:lI98|H107210AC8 +107210AC8:lI46|H107213D28 +107213D28:lI98|H1072170E0 +1072170E0:lI101|H10721A610 +10721A610:lI97|H10721DBB0 +10721DBB0:lI109|N +1071F35C8:lI47|H1071F5BB0 +1071F5BB0:lI111|H1071F8418 +1071F8418:lI112|H1071FB070 +1071FB070:lI116|H1071FDFB0 +1071FDFB0:lI47|H107201068 +107201068:lI104|H107204210 +107204210:lI111|H107207440 +107207440:lI109|H10720A6B8 +10720A6B8:lI101|H10720D8A8 +10720D8A8:lI98|H107210A48 +107210A48:lI114|H107213CA8 +107213CA8:lI101|H107217060 +107217060:lI119|H10721A590 +10721A590:lI47|H10721DB30 +10721DB30:lI67|H107221050 +107221050:lI101|H107224258 +107224258:lI108|H107227180 +107227180:lI108|H107229CB8 +107229CB8:lI97|H10722C4C0 +10722C4C0:lI114|H10722EA08 +10722EA08:lI47|H107230C70 +107230C70:lI101|H107232C68 +107232C68:lI114|H107234940 +107234940:lI108|H107236378 +107236378:lI97|H107237B40 +107237B40:lI110|H107239158 +107239158:lI103|H10723A5F0 +10723A5F0:lI47|H10723B8B0 +10723B8B0:lI50|H10723C900 +10723C900:lI54|H10723D770 +10723D770:lI46|H10723E4D0 +10723E4D0:lI48|H10723F0E0 +10723F0E0:lI46|H10723FBA0 +10723FBA0:lI50|H1072404F0 +1072404F0:lI47|H107240D70 +107240D70:lI108|H107241500 +107241500:lI105|H107241C30 +107241C30:lI98|H107242300 +107242300:lI47|H107242970 +107242970:lI101|H107242F70 +107242F70:lI114|H1072434E0 +1072434E0:lI108|H107243A20 +107243A20:lI97|H107243F10 +107243F10:lI110|H107244400 +107244400:lI103|H1072448B0 +1072448B0:lI47|H107244D20 +107244D20:lI108|H107245180 +107245180:lI105|H1072455D0 +1072455D0:lI98|H1072459D0 +1072459D0:lI47|H107245D90 +107245D90:lI115|H107246120 +107246120:lI115|H1072464B0 +1072464B0:lI104|H107246840 +107246840:lI45|H107246BD0 +107246BD0:lI53|H107246F00 +107246F00:lI46|H107247220 +107247220:lI48|H107247530 +107247530:lI46|H107247830 +107247830:lI49|H107247B30 +107247B30:lI47|H280052C20 +1071F15D8:lH1071F3668|H1071F3680 +1071F3668:t2:H1071F5D88,H1071F5D98 +1071F5D98:Mh5B:10:H1071F86D8,H1071F8700,H1071F8720,H1071F8740,H1071F8778,H1071F8788,H1071F87B8,H1071F87D8,H1071F87F8,H1071F8840,H1071F8878,H1071F8898,H1071F88E0,H1071F8920,H1071F8950,H1071F8988 +1071F86D8:Mn4:H1071FB340,H1071FB350,H1071FB370,H1071FB380 +1071FB340:lH1071FE280|N +1071FE280:lI115|H107201338 +107201338:lI110|H1072044E0 +1072044E0:lI109|H107207710 +107207710:lI112|H10720A988 +10720A988:lI95|H10720DB78 +10720DB78:lI118|H107210D08 +107210D08:lI105|H107213F68 +107213F68:lI101|H107217300 +107217300:lI119|H10721A830 +10721A830:lI95|H10721DDB0 +10721DDB0:lI98|H1072212B0 +1072212B0:lI97|H107224458 +107224458:lI115|H107227330 +107227330:lI101|H107229E68 +107229E68:lI100|H10722C640 +10722C640:lI95|H10722EB78 +10722EB78:lI97|H107230DD0 +107230DD0:lI99|H107232D98 +107232D98:lI109|H107234A60 +107234A60:lI95|H107236478 +107236478:lI109|H107237C30 +107237C30:lI105|H1072391E8 +1072391E8:lI98|H10723A680 +10723A680:lI46|H10723B940 +10723B940:lI98|H10723C970 +10723C970:lI101|H10723D7E0 +10723D7E0:lI97|H10723E520 +10723E520:lI109|N +1071FB380:lH1071FE2D0|N +1071FE2D0:lI115|H107201388 +107201388:lI110|H107204530 +107204530:lI109|H107207760 +107207760:lI112|H10720A9D8 +10720A9D8:lI97|H10720DBC8 +10720DBC8:lI95|H107210D58 +107210D58:lI97|H107213FB8 +107213FB8:lI103|H107217350 +107217350:lI101|H10721A880 +10721A880:lI110|H10721DE00 +10721DE00:lI116|H107221300 +107221300:lI95|H1072244A8 +1072244A8:lI115|H107227380 +107227380:lI117|H107229EB8 +107229EB8:lI112|H10722C670 +10722C670:lI46|H10722EBA8 +10722EBA8:lI98|H107230E00 +107230E00:lI101|H107232DC8 +107232DC8:lI97|H107234A90 +107234A90:lI109|N +1071FB370:lH1071FE2C0|N +1071FE2C0:lI115|H107201378 +107201378:lI110|H107204520 +107204520:lI109|H107207750 +107207750:lI112|H10720A9C8 +10720A9C8:lI97|H10720DBB8 +10720DBB8:lI95|H107210D48 +107210D48:lI115|H107213FA8 +107213FA8:lI118|H107217340 +107217340:lI98|H10721A870 +10721A870:lI108|H10721DDF0 +10721DDF0:lI46|H1072212F0 +1072212F0:lI98|H107224498 +107224498:lI101|H107227370 +107227370:lI97|H107229EA8 +107229EA8:lI109|N +1071FB350:Mn3:H1071FE290,H1071FE2A0,H1071FE2B0 +1071FE290:lH107201348|N +107201348:lI115|H1072044F0 +1072044F0:lI110|H107207720 +107207720:lI109|H10720A998 +10720A998:lI112|H10720DB88 +10720DB88:lI95|H107210D18 +107210D18:lI102|H107213F78 +107213F78:lI114|H107217310 +107217310:lI97|H10721A840 +10721A840:lI109|H10721DDC0 +10721DDC0:lI101|H1072212C0 +1072212C0:lI119|H107224468 +107224468:lI111|H107227340 +107227340:lI114|H107229E78 +107229E78:lI107|H10722C650 +10722C650:lI95|H10722EB88 +10722EB88:lI109|H107230DE0 +107230DE0:lI105|H107232DA8 +107232DA8:lI98|H107234A70 +107234A70:lI46|H107236488 +107236488:lI98|H107237C40 +107237C40:lI101|H1072391F8 +1072391F8:lI97|H10723A690 +10723A690:lI109|N +1071FE2B0:lH107201368|N +107201368:lI115|H107204510 +107204510:lI110|H107207740 +107207740:lI109|H10720A9B8 +10720A9B8:lI112|H10720DBA8 +10720DBA8:lI97|H107210D38 +107210D38:lI95|H107213F98 +107213F98:lI97|H107217330 +107217330:lI99|H10721A860 +10721A860:lI109|H10721DDE0 +10721DDE0:lI46|H1072212E0 +1072212E0:lI98|H107224488 +107224488:lI101|H107227360 +107227360:lI97|H107229E98 +107229E98:lI109|N +1071FE2A0:lH107201358|N +107201358:lI115|H107204500 +107204500:lI110|H107207730 +107207730:lI109|H10720A9A8 +10720A9A8:lI112|H10720DB98 +10720DB98:lI109|H107210D28 +107210D28:lI95|H107213F88 +107213F88:lI117|H107217320 +107217320:lI115|H10721A850 +10721A850:lI101|H10721DDD0 +10721DDD0:lI114|H1072212D0 +1072212D0:lI95|H107224478 +107224478:lI100|H107227350 +107227350:lI101|H107229E88 +107229E88:lI102|H10722C660 +10722C660:lI97|H10722EB98 +10722EB98:lI117|H107230DF0 +107230DF0:lI108|H107232DB8 +107232DB8:lI116|H107234A80 +107234A80:lI46|H107236498 +107236498:lI98|H107237C50 +107237C50:lI101|H107239208 +107239208:lI97|H10723A6A0 +10723A6A0:lI109|N +1071F8988:Mn5:H1071FB820,H1071FB830,H1071FB840,H1071FB850,H1071FB860 +1071FB820:lH1071FE7D0|N +1071FE7D0:lI115|H107201888 +107201888:lI110|H107204A30 +107204A30:lI109|H107207C60 +107207C60:lI112|H10720AED8 +10720AED8:lI97|H10720E0C8 +10720E0C8:lI95|H107211258 +107211258:lI116|H1072144B8 +1072144B8:lI97|H107217850 +107217850:lI114|H10721AD60 +10721AD60:lI103|H10721E2C0 +10721E2C0:lI101|H1072217A0 +1072217A0:lI116|H107224948 +107224948:lI95|H1072277E0 +1072277E0:lI99|H10722A268 +10722A268:lI97|H10722C9C0 +10722C9C0:lI99|H10722EED8 +10722EED8:lI104|H107231100 +107231100:lI101|H107233058 +107233058:lI46|H107234CC0 +107234CC0:lI98|H107236688 +107236688:lI101|H107237DF0 +107237DF0:lI97|H107239388 +107239388:lI109|N +1071FB860:lH1071FE818|N +1071FE818:lI115|H1072018D8 +1072018D8:lI110|H107204A80 +107204A80:lI109|H107207CB0 +107207CB0:lI112|H10720AF28 +10720AF28:lI97|H10720E118 +10720E118:lI95|H1072112A8 +1072112A8:lI109|H107214508 +107214508:lI105|H1072178A0 +1072178A0:lI98|H10721ADB0 +10721ADB0:lI95|H10721E310 +10721E310:lI100|H1072217F0 +1072217F0:lI97|H107224998 +107224998:lI116|H107227830 +107227830:lI97|H10722A2B8 +10722A2B8:lI95|H10722CA10 +10722CA10:lI116|H10722EF28 +10722EF28:lI116|H107231140 +107231140:lI116|H107233078 +107233078:lI110|H107234CE0 +107234CE0:lI46|H1072366A8 +1072366A8:lI98|H107237E10 +107237E10:lI101|H1072393A8 +1072393A8:lI97|H10723A800 +10723A800:lI109|N +1071FB850:Mn1:H1071FE800 +1071FE800:Mn2:H1072018B8,H1072018C8 +1072018B8:lH107204A60|N +107204A60:lI115|H107207C90 +107207C90:lI110|H10720AF08 +10720AF08:lI109|H10720E0F8 +10720E0F8:lI112|H107211288 +107211288:lI95|H1072144E8 +1072144E8:lI105|H107217880 +107217880:lI110|H10721AD90 +10721AD90:lI100|H10721E2F0 +10721E2F0:lI101|H1072217D0 +1072217D0:lI120|H107224978 +107224978:lI46|H107227810 +107227810:lI98|H10722A298 +10722A298:lI101|H10722C9F0 +10722C9F0:lI97|H10722EF08 +10722EF08:lI109|N +1072018C8:lH107204A70|N +107204A70:lI115|H107207CA0 +107207CA0:lI110|H10720AF18 +10720AF18:lI109|H10720E108 +10720E108:lI112|H107211298 +107211298:lI97|H1072144F8 +1072144F8:lI95|H107217890 +107217890:lI97|H10721ADA0 +10721ADA0:lI103|H10721E300 +10721E300:lI101|H1072217E0 +1072217E0:lI110|H107224988 +107224988:lI116|H107227820 +107227820:lI46|H10722A2A8 +10722A2A8:lI98|H10722CA00 +10722CA00:lI101|H10722EF18 +10722EF18:lI97|H107231130 +107231130:lI109|N +1071FB840:lH1071FE7F0|N +1071FE7F0:lI115|H1072018A8 +1072018A8:lI110|H107204A50 +107204A50:lI109|H107207C80 +107207C80:lI112|H10720AEF8 +10720AEF8:lI97|H10720E0E8 +10720E0E8:lI95|H107211278 +107211278:lI103|H1072144D8 +1072144D8:lI101|H107217870 +107217870:lI116|H10721AD80 +10721AD80:lI95|H10721E2E0 +10721E2E0:lI108|H1072217C0 +1072217C0:lI105|H107224968 +107224968:lI98|H107227800 +107227800:lI46|H10722A288 +10722A288:lI98|H10722C9E0 +10722C9E0:lI101|H10722EEF8 +10722EEF8:lI97|H107231120 +107231120:lI109|N +1071FB830:lH1071FE7E0|N +1071FE7E0:lI115|H107201898 +107201898:lI110|H107204A40 +107204A40:lI109|H107207C70 +107207C70:lI112|H10720AEE8 +10720AEE8:lI97|H10720E0D8 +10720E0D8:lI95|H107211268 +107211268:lI109|H1072144C8 +1072144C8:lI105|H107217860 +107217860:lI98|H10721AD70 +10721AD70:lI95|H10721E2D0 +10721E2D0:lI115|H1072217B0 +1072217B0:lI116|H107224958 +107224958:lI111|H1072277F0 +1072277F0:lI114|H10722A278 +10722A278:lI97|H10722C9D0 +10722C9D0:lI103|H10722EEE8 +10722EEE8:lI101|H107231110 +107231110:lI95|H107233068 +107233068:lI109|H107234CD0 +107234CD0:lI110|H107236698 +107236698:lI101|H107237E00 +107237E00:lI115|H107239398 +107239398:lI105|H10723A7F0 +10723A7F0:lI97|H10723BA30 +10723BA30:lI46|H10723CA60 +10723CA60:lI98|H10723D8C0 +10723D8C0:lI101|H10723E5C0 +10723E5C0:lI97|H10723F1A0 +10723F1A0:lI109|N +1071F8950:Mn6:H1071FB7B8,H1071FB7C8,H1071FB7D8,H1071FB7E8,H1071FB7F8,H1071FB808 +1071FB7B8:lH1071FE760|N +1071FE760:lI115|H107201818 +107201818:lI110|H1072049C0 +1072049C0:lI109|H107207BF0 +107207BF0:lI112|H10720AE68 +10720AE68:lI97|H10720E058 +10720E058:lI95|H1072111E8 +1072111E8:lI108|H107214448 +107214448:lI111|H1072177E0 +1072177E0:lI99|H10721AD00 +10721AD00:lI97|H10721E270 +10721E270:lI108|H107221750 +107221750:lI95|H1072248F8 +1072248F8:lI100|H107227790 +107227790:lI98|H10722A218 +10722A218:lI46|H10722C970 +10722C970:lI98|H10722EE88 +10722EE88:lI101|H1072310B0 +1072310B0:lI97|H107233008 +107233008:lI109|N +1071FB808:Mn2:H1071FE7B0,H1071FE7C0 +1071FE7B0:lH107201868|N +107201868:lI115|H107204A10 +107204A10:lI110|H107207C40 +107207C40:lI109|H10720AEB8 +10720AEB8:lI112|H10720E0A8 +10720E0A8:lI46|H107211238 +107211238:lI97|H107214498 +107214498:lI112|H107217830 +107217830:lI112|N +1071FE7C0:lH107201878|N +107201878:lI115|H107204A20 +107204A20:lI110|H107207C50 +107207C50:lI109|H10720AEC8 +10720AEC8:lI112|H10720E0B8 +10720E0B8:lI97|H107211248 +107211248:lI95|H1072144A8 +1072144A8:lI109|H107217840 +107217840:lI105|H10721AD50 +10721AD50:lI98|H10721E2B0 +10721E2B0:lI95|H107221790 +107221790:lI115|H107224938 +107224938:lI116|H1072277D0 +1072277D0:lI111|H10722A258 +10722A258:lI114|H10722C9B0 +10722C9B0:lI97|H10722EEC8 +10722EEC8:lI103|H1072310F0 +1072310F0:lI101|H107233048 +107233048:lI95|H107234CB0 +107234CB0:lI101|H107236678 +107236678:lI116|H107237DE0 +107237DE0:lI115|H107239378 +107239378:lI46|H10723A7E0 +10723A7E0:lI98|H10723BA20 +10723BA20:lI101|H10723CA50 +10723CA50:lI97|H10723D8B0 +10723D8B0:lI109|N +1071FB7F8:lH1071FE7A0|N +1071FE7A0:lI115|H107201858 +107201858:lI110|H107204A00 +107204A00:lI109|H107207C30 +107207C30:lI112|H10720AEA8 +10720AEA8:lI97|H10720E098 +10720E098:lI46|H107211228 +107211228:lI98|H107214488 +107214488:lI101|H107217820 +107217820:lI97|H10721AD40 +10721AD40:lI109|N +1071FB7E8:lH1071FE790|N +1071FE790:lI115|H107201848 +107201848:lI110|H1072049F0 +1072049F0:lI109|H107207C20 +107207C20:lI112|H10720AE98 +10720AE98:lI109|H10720E088 +10720E088:lI95|H107211218 +107211218:lI115|H107214478 +107214478:lI117|H107217810 +107217810:lI112|H10721AD30 +10721AD30:lI101|H10721E2A0 +10721E2A0:lI114|H107221780 +107221780:lI118|H107224928 +107224928:lI105|H1072277C0 +1072277C0:lI115|H10722A248 +10722A248:lI111|H10722C9A0 +10722C9A0:lI114|H10722EEB8 +10722EEB8:lI46|H1072310E0 +1072310E0:lI98|H107233038 +107233038:lI101|H107234CA0 +107234CA0:lI97|H107236668 +107236668:lI109|N +1071FB7D8:lH1071FE780|N +1071FE780:lI115|H107201838 +107201838:lI110|H1072049E0 +1072049E0:lI109|H107207C10 +107207C10:lI112|H10720AE88 +10720AE88:lI97|H10720E078 +10720E078:lI95|H107211208 +107211208:lI103|H107214468 +107214468:lI101|H107217800 +107217800:lI116|H10721AD20 +10721AD20:lI95|H10721E290 +10721E290:lI109|H107221770 +107221770:lI101|H107224918 +107224918:lI99|H1072277B0 +1072277B0:lI104|H10722A238 +10722A238:lI97|H10722C990 +10722C990:lI110|H10722EEA8 +10722EEA8:lI105|H1072310D0 +1072310D0:lI115|H107233028 +107233028:lI109|H107234C90 +107234C90:lI46|H107236658 +107236658:lI98|H107237DD0 +107237DD0:lI101|H107239368 +107239368:lI97|H10723A7D0 +10723A7D0:lI109|N +1071FB7C8:lH1071FE770|N +1071FE770:lI115|H107201828 +107201828:lI110|H1072049D0 +1072049D0:lI109|H107207C00 +107207C00:lI112|H10720AE78 +10720AE78:lI97|H10720E068 +10720E068:lI95|H1072111F8 +1072111F8:lI110|H107214458 +107214458:lI101|H1072177F0 +1072177F0:lI116|H10721AD10 +10721AD10:lI95|H10721E280 +10721E280:lI105|H107221760 +107221760:lI102|H107224908 +107224908:lI95|H1072277A0 +1072277A0:lI102|H10722A228 +10722A228:lI105|H10722C980 +10722C980:lI108|H10722EE98 +10722EE98:lI116|H1072310C0 +1072310C0:lI101|H107233018 +107233018:lI114|H107234C80 +107234C80:lI46|H107236648 +107236648:lI98|H107237DC0 +107237DC0:lI101|H107239358 +107239358:lI97|H10723A7C0 +10723A7C0:lI109|N +1071F8920:Mn5:H1071FB760,H1071FB778,H1071FB788,H1071FB798,H1071FB7A8 +1071FB760:Mn2:H1071FE700,H1071FE710 +1071FE700:lH1072017B8|N +1072017B8:lI115|H107204960 +107204960:lI110|H107207B90 +107207B90:lI109|H10720AE08 +10720AE08:lI112|H10720DFF8 +10720DFF8:lI97|H107211188 +107211188:lI95|H1072143E8 +1072143E8:lI101|H107217780 +107217780:lI114|H10721ACA0 +10721ACA0:lI114|H10721E210 +10721E210:lI111|H1072216F0 +1072216F0:lI114|H107224898 +107224898:lI46|H107227740 +107227740:lI98|H10722A1C8 +10722A1C8:lI101|H10722C920 +10722C920:lI97|H10722EE38 +10722EE38:lI109|N +1071FE710:lH1072017C8|N +1072017C8:lI115|H107204970 +107204970:lI110|H107207BA0 +107207BA0:lI109|H10720AE18 +10720AE18:lI112|H10720E008 +10720E008:lI109|H107211198 +107211198:lI95|H1072143F8 +1072143F8:lI110|H107217790 +107217790:lI101|H10721ACB0 +10721ACB0:lI116|H10721E220 +10721E220:lI95|H107221700 +107221700:lI105|H1072248A8 +1072248A8:lI102|H107227750 +107227750:lI46|H10722A1D8 +10722A1D8:lI98|H10722C930 +10722C930:lI101|H10722EE48 +10722EE48:lI97|H107231080 +107231080:lI109|N +1071FB7A8:lH1071FE750|N +1071FE750:lI115|H107201808 +107201808:lI110|H1072049B0 +1072049B0:lI109|H107207BE0 +107207BE0:lI112|H10720AE58 +10720AE58:lI109|H10720E048 +10720E048:lI95|H1072111D8 +1072111D8:lI109|H107214438 +107214438:lI105|H1072177D0 +1072177D0:lI115|H10721ACF0 +10721ACF0:lI99|H10721E260 +10721E260:lI95|H107221740 +107221740:lI115|H1072248E8 +1072248E8:lI117|H107227780 +107227780:lI112|H10722A208 +10722A208:lI46|H10722C960 +10722C960:lI98|H10722EE78 +10722EE78:lI101|H1072310A0 +1072310A0:lI97|H107232FF8 +107232FF8:lI109|N +1071FB798:lH1071FE740|N +1071FE740:lI115|H1072017F8 +1072017F8:lI110|H1072049A0 +1072049A0:lI109|H107207BD0 +107207BD0:lI112|H10720AE48 +10720AE48:lI95|H10720E038 +10720E038:lI117|H1072111C8 +1072111C8:lI115|H107214428 +107214428:lI109|H1072177C0 +1072177C0:lI46|H10721ACE0 +10721ACE0:lI98|H10721E250 +10721E250:lI101|H107221730 +107221730:lI97|H1072248D8 +1072248D8:lI109|N +1071FB788:lH1071FE730|N +1071FE730:lI115|H1072017E8 +1072017E8:lI110|H107204990 +107204990:lI109|H107207BC0 +107207BC0:lI112|H10720AE38 +10720AE38:lI109|H10720E028 +10720E028:lI95|H1072111B8 +1072111B8:lI117|H107214418 +107214418:lI115|H1072177B0 +1072177B0:lI101|H10721ACD0 +10721ACD0:lI114|H10721E240 +10721E240:lI95|H107221720 +107221720:lI111|H1072248C8 +1072248C8:lI108|H107227770 +107227770:lI100|H10722A1F8 +10722A1F8:lI46|H10722C950 +10722C950:lI98|H10722EE68 +10722EE68:lI101|H107231090 +107231090:lI97|H107232FE8 +107232FE8:lI109|N +1071FB778:lH1071FE720|N +1071FE720:lI115|H1072017D8 +1072017D8:lI110|H107204980 +107204980:lI109|H107207BB0 +107207BB0:lI112|H10720AE28 +10720AE28:lI95|H10720E018 +10720E018:lI103|H1072111A8 +1072111A8:lI101|H107214408 +107214408:lI110|H1072177A0 +1072177A0:lI101|H10721ACC0 +10721ACC0:lI114|H10721E230 +10721E230:lI105|H107221710 +107221710:lI99|H1072248B8 +1072248B8:lI46|H107227760 +107227760:lI98|H10722A1E8 +10722A1E8:lI101|H10722C940 +10722C940:lI97|H10722EE58 +10722EE58:lI109|N +1071F88E0:Mn7:H1071FB6E8,H1071FB6F8,H1071FB708,H1071FB718,H1071FB728,H1071FB740,H1071FB750 +1071FB6E8:lH1071FE680|N +1071FE680:lI115|H107201738 +107201738:lI110|H1072048E0 +1072048E0:lI109|H107207B10 +107207B10:lI112|H10720AD88 +10720AD88:lI99|H10720DF78 +10720DF78:lI95|H107211108 +107211108:lI109|H107214368 +107214368:lI105|H107217700 +107217700:lI98|H10721AC30 +10721AC30:lI95|H10721E1A0 +10721E1A0:lI116|H107221680 +107221680:lI111|H107224828 +107224828:lI95|H1072276D0 +1072276D0:lI104|H10722A158 +10722A158:lI114|H10722C8C0 +10722C8C0:lI108|H10722EDD8 +10722EDD8:lI46|H107231020 +107231020:lI98|H107232F88 +107232F88:lI101|H107234C30 +107234C30:lI97|H1072365F8 +1072365F8:lI109|N +1071FB750:lH1071FE6F0|N +1071FE6F0:lI115|H1072017A8 +1072017A8:lI110|H107204950 +107204950:lI109|H107207B80 +107207B80:lI112|H10720ADF8 +10720ADF8:lI97|H10720DFE8 +10720DFE8:lI95|H107211178 +107211178:lI109|H1072143D8 +1072143D8:lI105|H107217770 +107217770:lI115|H10721AC90 +10721AC90:lI99|H10721E200 +10721E200:lI95|H1072216E0 +1072216E0:lI115|H107224888 +107224888:lI117|H107227730 +107227730:lI112|H10722A1B8 +10722A1B8:lI46|H10722C910 +10722C910:lI98|H10722EE28 +10722EE28:lI101|H107231070 +107231070:lI97|H107232FD8 +107232FD8:lI109|N +1071FB740:lH1071FE6E0|N +1071FE6E0:lI115|H107201798 +107201798:lI110|H107204940 +107204940:lI109|H107207B70 +107207B70:lI112|H10720ADE8 +10720ADE8:lI97|H10720DFD8 +10720DFD8:lI95|H107211168 +107211168:lI99|H1072143C8 +1072143C8:lI111|H107217760 +107217760:lI110|H10721AC80 +10721AC80:lI102|H10721E1F0 +10721E1F0:lI46|H1072216D0 +1072216D0:lI98|H107224878 +107224878:lI101|H107227720 +107227720:lI97|H10722A1A8 +10722A1A8:lI109|N +1071FB728:Mn2:H1071FE6C0,H1071FE6D0 +1071FE6C0:lH107201778|N +107201778:lI115|H107204920 +107204920:lI110|H107207B50 +107207B50:lI109|H10720ADC8 +10720ADC8:lI112|H10720DFB8 +10720DFB8:lI95|H107211148 +107211148:lI110|H1072143A8 +1072143A8:lI111|H107217740 +107217740:lI116|H10721AC60 +10721AC60:lI101|H10721E1D0 +10721E1D0:lI95|H1072216B0 +1072216B0:lI115|H107224858 +107224858:lI116|H107227700 +107227700:lI111|H10722A188 +10722A188:lI114|H10722C8F0 +10722C8F0:lI101|H10722EE08 +10722EE08:lI46|H107231050 +107231050:lI98|H107232FB8 +107232FB8:lI101|H107234C60 +107234C60:lI97|H107236628 +107236628:lI109|N +1071FE6D0:lH107201788|N +107201788:lI115|H107204930 +107204930:lI110|H107207B60 +107207B60:lI109|H10720ADD8 +10720ADD8:lI112|H10720DFC8 +10720DFC8:lI97|H107211158 +107211158:lI95|H1072143B8 +1072143B8:lI100|H107217750 +107217750:lI105|H10721AC70 +10721AC70:lI115|H10721E1E0 +10721E1E0:lI99|H1072216C0 +1072216C0:lI111|H107224868 +107224868:lI118|H107227710 +107227710:lI101|H10722A198 +10722A198:lI114|H10722C900 +10722C900:lI121|H10722EE18 +10722EE18:lI95|H107231060 +107231060:lI104|H107232FC8 +107232FC8:lI97|H107234C70 +107234C70:lI110|H107236638 +107236638:lI100|H107237DB0 +107237DB0:lI108|H107239348 +107239348:lI101|H10723A7B0 +10723A7B0:lI114|H10723BA10 +10723BA10:lI46|H10723CA40 +10723CA40:lI98|H10723D8A0 +10723D8A0:lI101|H10723E5B0 +10723E5B0:lI97|H10723F190 +10723F190:lI109|N +1071FB718:lH1071FE6B0|N +1071FE6B0:lI115|H107201768 +107201768:lI110|H107204910 +107204910:lI109|H107207B40 +107207B40:lI112|H10720ADB8 +10720ADB8:lI109|H10720DFA8 +10720DFA8:lI95|H107211138 +107211138:lI115|H107214398 +107214398:lI101|H107217730 +107217730:lI114|H10721AC50 +10721AC50:lI118|H10721E1C0 +10721E1C0:lI101|H1072216A0 +1072216A0:lI114|H107224848 +107224848:lI95|H1072276F0 +1072276F0:lI115|H10722A178 +10722A178:lI117|H10722C8E0 +10722C8E0:lI112|H10722EDF8 +10722EDF8:lI46|H107231040 +107231040:lI98|H107232FA8 +107232FA8:lI101|H107234C50 +107234C50:lI97|H107236618 +107236618:lI109|N +1071FB708:lH1071FE6A0|N +1071FE6A0:lI115|H107201758 +107201758:lI110|H107204900 +107204900:lI109|H107207B30 +107207B30:lI112|H10720ADA8 +10720ADA8:lI46|H10720DF98 +10720DF98:lI98|H107211128 +107211128:lI101|H107214388 +107214388:lI97|H107217720 +107217720:lI109|N +1071FB6F8:lH1071FE690|N +1071FE690:lI115|H107201748 +107201748:lI110|H1072048F0 +1072048F0:lI109|H107207B20 +107207B20:lI112|H10720AD98 +10720AD98:lI97|H10720DF88 +10720DF88:lI95|H107211118 +107211118:lI100|H107214378 +107214378:lI105|H107217710 +107217710:lI115|H10721AC40 +10721AC40:lI99|H10721E1B0 +10721E1B0:lI111|H107221690 +107221690:lI118|H107224838 +107224838:lI101|H1072276E0 +1072276E0:lI114|H10722A168 +10722A168:lI121|H10722C8D0 +10722C8D0:lI95|H10722EDE8 +10722EDE8:lI104|H107231030 +107231030:lI97|H107232F98 +107232F98:lI110|H107234C40 +107234C40:lI100|H107236608 +107236608:lI108|H107237DA0 +107237DA0:lI101|H107239338 +107239338:lI114|H10723A7A0 +10723A7A0:lI95|H10723BA00 +10723BA00:lI100|H10723CA30 +10723CA30:lI101|H10723D890 +10723D890:lI102|H10723E5A0 +10723E5A0:lI97|H10723F180 +10723F180:lI117|H10723FC30 +10723FC30:lI108|H107240570 +107240570:lI116|H107240DE0 +107240DE0:lI46|H107241570 +107241570:lI98|H107241C90 +107241C90:lI101|H107242350 +107242350:lI97|H1072429B0 +1072429B0:lI109|N +1071F8898:Mn8:H1071FB650,H1071FB660,H1071FB680,H1071FB690,H1071FB6A0,H1071FB6B0,H1071FB6C0,H1071FB6D0 +1071FB650:lH1071FE5D0|N +1071FE5D0:lI115|H107201688 +107201688:lI110|H107204830 +107204830:lI109|H107207A60 +107207A60:lI112|H10720ACD8 +10720ACD8:lI95|H10720DEC8 +10720DEC8:lI115|H107211058 +107211058:lI104|H1072142B8 +1072142B8:lI97|H107217650 +107217650:lI100|H10721AB80 +10721AB80:lI111|H10721E0F0 +10721E0F0:lI119|H1072215E0 +1072215E0:lI95|H107224788 +107224788:lI116|H107227640 +107227640:lI97|H10722A0E8 +10722A0E8:lI98|H10722C860 +10722C860:lI108|H10722ED88 +10722ED88:lI101|H107230FD0 +107230FD0:lI46|H107232F48 +107232F48:lI98|H107234BF0 +107234BF0:lI101|H1072365B8 +1072365B8:lI97|H107237D60 +107237D60:lI109|N +1071FB6D0:Mn2:H1071FE660,H1071FE670 +1071FE660:lH107201718|N +107201718:lI115|H1072048C0 +1072048C0:lI110|H107207AF0 +107207AF0:lI109|H10720AD68 +10720AD68:lI112|H10720DF58 +10720DF58:lI97|H1072110E8 +1072110E8:lI95|H107214348 +107214348:lI118|H1072176E0 +1072176E0:lI97|H10721AC10 +10721AC10:lI99|H10721E180 +10721E180:lI109|H107221670 +107221670:lI46|H107224818 +107224818:lI98|H1072276C0 +1072276C0:lI101|H10722A148 +10722A148:lI97|H10722C8B0 +10722C8B0:lI109|N +1071FE670:lH107201728|N +107201728:lI115|H1072048D0 +1072048D0:lI110|H107207B00 +107207B00:lI109|H10720AD78 +10720AD78:lI112|H10720DF68 +10720DF68:lI109|H1072110F8 +1072110F8:lI46|H107214358 +107214358:lI98|H1072176F0 +1072176F0:lI101|H10721AC20 +10721AC20:lI97|H10721E190 +10721E190:lI109|N +1071FB6C0:lH1071FE650|N +1071FE650:lI115|H107201708 +107201708:lI110|H1072048B0 +1072048B0:lI109|H107207AE0 +107207AE0:lI112|H10720AD58 +10720AD58:lI95|H10720DF48 +10720DF48:lI112|H1072110D8 +1072110D8:lI100|H107214338 +107214338:lI117|H1072176D0 +1072176D0:lI115|H10721AC00 +10721AC00:lI46|H10721E170 +10721E170:lI98|H107221660 +107221660:lI101|H107224808 +107224808:lI97|H1072276B0 +1072276B0:lI109|N +1071FB6B0:lH1071FE640|N +1071FE640:lI115|H1072016F8 +1072016F8:lI110|H1072048A0 +1072048A0:lI109|H107207AD0 +107207AD0:lI112|H10720AD48 +10720AD48:lI97|H10720DF38 +10720DF38:lI95|H1072110C8 +1072110C8:lI116|H107214328 +107214328:lI114|H1072176C0 +1072176C0:lI97|H10721ABF0 +10721ABF0:lI112|H10721E160 +10721E160:lI46|H107221650 +107221650:lI98|H1072247F8 +1072247F8:lI101|H1072276A0 +1072276A0:lI97|H10722A138 +10722A138:lI109|N +1071FB6A0:lH1071FE630|N +1071FE630:lI115|H1072016E8 +1072016E8:lI110|H107204890 +107204890:lI109|H107207AC0 +107207AC0:lI112|H10720AD38 +10720AD38:lI97|H10720DF28 +10720DF28:lI95|H1072110B8 +1072110B8:lI109|H107214318 +107214318:lI112|H1072176B0 +1072176B0:lI100|H10721ABE0 +10721ABE0:lI46|H10721E150 +10721E150:lI98|H107221640 +107221640:lI101|H1072247E8 +1072247E8:lI97|H107227690 +107227690:lI109|N +1071FB690:lH1071FE620|N +1071FE620:lI115|H1072016D8 +1072016D8:lI110|H107204880 +107204880:lI109|H107207AB0 +107207AB0:lI112|H10720AD28 +10720AD28:lI97|H10720DF18 +10720DF18:lI95|H1072110A8 +1072110A8:lI110|H107214308 +107214308:lI111|H1072176A0 +1072176A0:lI116|H10721ABD0 +10721ABD0:lI105|H10721E140 +10721E140:lI102|H107221630 +107221630:lI105|H1072247D8 +1072247D8:lI99|H107227680 +107227680:lI97|H10722A128 +10722A128:lI116|H10722C8A0 +10722C8A0:lI105|H10722EDC8 +10722EDC8:lI111|H107231010 +107231010:lI110|H107232F78 +107232F78:lI95|H107234C20 +107234C20:lI100|H1072365E8 +1072365E8:lI101|H107237D90 +107237D90:lI108|H107239328 +107239328:lI105|H10723A790 +10723A790:lI118|H10723B9F0 +10723B9F0:lI101|H10723CA20 +10723CA20:lI114|H10723D880 +10723D880:lI121|H10723E590 +10723E590:lI95|H10723F170 +10723F170:lI105|H10723FC20 +10723FC20:lI110|H107240560 +107240560:lI102|H107240DD0 +107240DD0:lI111|H107241560 +107241560:lI95|H107241C80 +107241C80:lI114|H107242340 +107242340:lI101|H1072429A0 +1072429A0:lI99|H107242F90 +107242F90:lI101|H107243500 +107243500:lI105|H107243A40 +107243A40:lI118|H107243F30 +107243F30:lI101|H107244420 +107244420:lI114|H1072448D0 +1072448D0:lI46|H107244D40 +107244D40:lI98|H1072451A0 +1072451A0:lI101|H1072455F0 +1072455F0:lI97|H1072459F0 +1072459F0:lI109|N +1071FB680:lH1071FE610|N +1071FE610:lI115|H1072016C8 +1072016C8:lI110|H107204870 +107204870:lI109|H107207AA0 +107207AA0:lI112|H10720AD18 +10720AD18:lI95|H10720DF08 +10720DF08:lI108|H107211098 +107211098:lI111|H1072142F8 +1072142F8:lI103|H107217690 +107217690:lI46|H10721ABC0 +10721ABC0:lI98|H10721E130 +10721E130:lI101|H107221620 +107221620:lI97|H1072247C8 +1072247C8:lI109|N +1071FB660:Mn3:H1071FE5E0,H1071FE5F0,H1071FE600 +1071FE5E0:lH107201698|N +107201698:lI115|H107204840 +107204840:lI110|H107207A70 +107207A70:lI109|H10720ACE8 +10720ACE8:lI112|H10720DED8 +10720DED8:lI95|H107211068 +107211068:lI99|H1072142C8 +1072142C8:lI111|H107217660 +107217660:lI109|H10721AB90 +10721AB90:lI109|H10721E100 +10721E100:lI117|H1072215F0 +1072215F0:lI110|H107224798 +107224798:lI105|H107227650 +107227650:lI116|H10722A0F8 +10722A0F8:lI121|H10722C870 +10722C870:lI95|H10722ED98 +10722ED98:lI109|H107230FE0 +107230FE0:lI105|H107232F58 +107232F58:lI98|H107234C00 +107234C00:lI46|H1072365C8 +1072365C8:lI98|H107237D70 +107237D70:lI101|H107239308 +107239308:lI97|H10723A770 +10723A770:lI109|N +1071FE600:lH1072016B8|N +1072016B8:lI115|H107204860 +107204860:lI110|H107207A90 +107207A90:lI109|H10720AD08 +10720AD08:lI112|H10720DEF8 +10720DEF8:lI109|H107211088 +107211088:lI95|H1072142E8 +1072142E8:lI115|H107217680 +107217680:lI101|H10721ABB0 +10721ABB0:lI114|H10721E120 +10721E120:lI118|H107221610 +107221610:lI101|H1072247B8 +1072247B8:lI114|H107227670 +107227670:lI46|H10722A118 +10722A118:lI98|H10722C890 +10722C890:lI101|H10722EDB8 +10722EDB8:lI97|H107231000 +107231000:lI109|N +1071FE5F0:lH1072016A8|N +1072016A8:lI115|H107204850 +107204850:lI110|H107207A80 +107207A80:lI109|H10720ACF8 +10720ACF8:lI112|H10720DEE8 +10720DEE8:lI97|H107211078 +107211078:lI95|H1072142D8 +1072142D8:lI110|H107217670 +107217670:lI101|H10721ABA0 +10721ABA0:lI116|H10721E110 +10721E110:lI119|H107221600 +107221600:lI111|H1072247A8 +1072247A8:lI114|H107227660 +107227660:lI107|H10722A108 +10722A108:lI95|H10722C880 +10722C880:lI105|H10722EDA8 +10722EDA8:lI110|H107230FF0 +107230FF0:lI116|H107232F68 +107232F68:lI101|H107234C10 +107234C10:lI114|H1072365D8 +1072365D8:lI102|H107237D80 +107237D80:lI97|H107239318 +107239318:lI99|H10723A780 +10723A780:lI101|H10723B9E0 +10723B9E0:lI46|H10723CA10 +10723CA10:lI98|H10723D870 +10723D870:lI101|H10723E580 +10723E580:lI97|H10723F160 +10723F160:lI109|N +1071F8878:Mn3:H1071FB620,H1071FB630,H1071FB640 +1071FB620:lH1071FE5A0|N +1071FE5A0:lI115|H107201658 +107201658:lI110|H107204800 +107204800:lI109|H107207A30 +107207A30:lI112|H10720ACA8 +10720ACA8:lI95|H10720DE98 +10720DE98:lI116|H107211028 +107211028:lI97|H107214288 +107214288:lI114|H107217620 +107217620:lI103|H10721AB50 +10721AB50:lI101|H10721E0C0 +10721E0C0:lI116|H1072215B0 +1072215B0:lI95|H107224758 +107224758:lI109|H107227610 +107227610:lI105|H10722A0C8 +10722A0C8:lI98|H10722C850 +10722C850:lI46|H10722ED78 +10722ED78:lI98|H107230FC0 +107230FC0:lI101|H107232F38 +107232F38:lI97|H107234BE0 +107234BE0:lI109|N +1071FB640:lH1071FE5C0|N +1071FE5C0:lI115|H107201678 +107201678:lI110|H107204820 +107204820:lI109|H107207A50 +107207A50:lI112|H10720ACC8 +10720ACC8:lI95|H10720DEB8 +10720DEB8:lI109|H107211048 +107211048:lI105|H1072142A8 +1072142A8:lI115|H107217640 +107217640:lI99|H10721AB70 +10721AB70:lI46|H10721E0E0 +10721E0E0:lI98|H1072215D0 +1072215D0:lI101|H107224778 +107224778:lI97|H107227630 +107227630:lI109|N +1071FB630:lH1071FE5B0|N +1071FE5B0:lI115|H107201668 +107201668:lI110|H107204810 +107204810:lI109|H107207A40 +107207A40:lI112|H10720ACB8 +10720ACB8:lI99|H10720DEA8 +10720DEA8:lI95|H107211038 +107211038:lI109|H107214298 +107214298:lI105|H107217630 +107217630:lI115|H10721AB60 +10721AB60:lI99|H10721E0D0 +10721E0D0:lI46|H1072215C0 +1072215C0:lI98|H107224768 +107224768:lI101|H107227620 +107227620:lI97|H10722A0D8 +10722A0D8:lI109|N +1071F8840:Mn6:H1071FB5B8,H1071FB5C8,H1071FB5D8,H1071FB5E8,H1071FB5F8,H1071FB610 +1071FB5B8:lH1071FE530|N +1071FE530:lI115|H1072015E8 +1072015E8:lI110|H107204790 +107204790:lI109|H1072079C0 +1072079C0:lI112|H10720AC38 +10720AC38:lI97|H10720DE28 +10720DE28:lI95|H107210FB8 +107210FB8:lI115|H107214218 +107214218:lI101|H1072175B0 +1072175B0:lI116|H10721AAE0 +10721AAE0:lI46|H10721E050 +10721E050:lI98|H107221540 +107221540:lI101|H1072246E8 +1072246E8:lI97|H1072275A0 +1072275A0:lI109|N +1071FB610:lH1071FE590|N +1071FE590:lI115|H107201648 +107201648:lI110|H1072047F0 +1072047F0:lI109|H107207A20 +107207A20:lI112|H10720AC98 +10720AC98:lI109|H10720DE88 +10720DE88:lI95|H107211018 +107211018:lI110|H107214278 +107214278:lI101|H107217610 +107217610:lI116|H10721AB40 +10721AB40:lI119|H10721E0B0 +10721E0B0:lI111|H1072215A0 +1072215A0:lI114|H107224748 +107224748:lI107|H107227600 +107227600:lI95|H10722A0B8 +10722A0B8:lI105|H10722C840 +10722C840:lI110|H10722ED68 +10722ED68:lI116|H107230FB0 +107230FB0:lI101|H107232F28 +107232F28:lI114|H107234BD0 +107234BD0:lI102|H1072365A8 +1072365A8:lI97|H107237D50 +107237D50:lI99|H1072392F8 +1072392F8:lI101|H10723A760 +10723A760:lI95|H10723B9D0 +10723B9D0:lI102|H10723CA00 +10723CA00:lI105|H10723D860 +10723D860:lI108|H10723E570 +10723E570:lI116|H10723F150 +10723F150:lI101|H10723FC10 +10723FC10:lI114|H107240550 +107240550:lI46|H107240DC0 +107240DC0:lI98|H107241550 +107241550:lI101|H107241C70 +107241C70:lI97|H107242330 +107242330:lI109|N +1071FB5F8:Mn2:H1071FE570,H1071FE580 +1071FE570:lH107201628|N +107201628:lI115|H1072047D0 +1072047D0:lI110|H107207A00 +107207A00:lI109|H10720AC78 +10720AC78:lI112|H10720DE68 +10720DE68:lI97|H107210FF8 +107210FF8:lI95|H107214258 +107214258:lI110|H1072175F0 +1072175F0:lI111|H10721AB20 +10721AB20:lI116|H10721E090 +10721E090:lI105|H107221580 +107221580:lI102|H107224728 +107224728:lI105|H1072275E0 +1072275E0:lI99|H10722A098 +10722A098:lI97|H10722C820 +10722C820:lI116|H10722ED48 +10722ED48:lI105|H107230F90 +107230F90:lI111|H107232F08 +107232F08:lI110|H107234BB0 +107234BB0:lI95|H107236588 +107236588:lI102|H107237D30 +107237D30:lI105|H1072392D8 +1072392D8:lI108|H10723A740 +10723A740:lI116|H10723B9B0 +10723B9B0:lI101|H10723C9E0 +10723C9E0:lI114|H10723D850 +10723D850:lI46|H10723E560 +10723E560:lI98|H10723F140 +10723F140:lI101|H10723FC00 +10723FC00:lI97|H107240540 +107240540:lI109|N +1071FE580:lH107201638|N +107201638:lI115|H1072047E0 +1072047E0:lI110|H107207A10 +107207A10:lI109|H10720AC88 +10720AC88:lI112|H10720DE78 +10720DE78:lI97|H107211008 +107211008:lI95|H107214268 +107214268:lI115|H107217600 +107217600:lI121|H10721AB30 +10721AB30:lI109|H10721E0A0 +10721E0A0:lI98|H107221590 +107221590:lI111|H107224738 +107224738:lI108|H1072275F0 +1072275F0:lI105|H10722A0A8 +10722A0A8:lI99|H10722C830 +10722C830:lI95|H10722ED58 +10722ED58:lI115|H107230FA0 +107230FA0:lI116|H107232F18 +107232F18:lI111|H107234BC0 +107234BC0:lI114|H107236598 +107236598:lI101|H107237D40 +107237D40:lI46|H1072392E8 +1072392E8:lI98|H10723A750 +10723A750:lI101|H10723B9C0 +10723B9C0:lI97|H10723C9F0 +10723C9F0:lI109|N +1071FB5E8:lH1071FE560|N +1071FE560:lI115|H107201618 +107201618:lI110|H1072047C0 +1072047C0:lI109|H1072079F0 +1072079F0:lI112|H10720AC68 +10720AC68:lI109|H10720DE58 +10720DE58:lI95|H107210FE8 +107210FE8:lI110|H107214248 +107214248:lI101|H1072175E0 +1072175E0:lI116|H10721AB10 +10721AB10:lI119|H10721E080 +10721E080:lI111|H107221570 +107221570:lI114|H107224718 +107224718:lI107|H1072275D0 +1072275D0:lI95|H10722A088 +10722A088:lI105|H10722C810 +10722C810:lI110|H10722ED38 +10722ED38:lI116|H107230F80 +107230F80:lI101|H107232EF8 +107232EF8:lI114|H107234BA0 +107234BA0:lI102|H107236578 +107236578:lI97|H107237D20 +107237D20:lI99|H1072392C8 +1072392C8:lI101|H10723A730 +10723A730:lI46|H10723B9A0 +10723B9A0:lI98|H10723C9D0 +10723C9D0:lI101|H10723D840 +10723D840:lI97|H10723E550 +10723E550:lI109|N +1071FB5D8:lH1071FE550|N +1071FE550:lI115|H107201608 +107201608:lI110|H1072047B0 +1072047B0:lI109|H1072079E0 +1072079E0:lI112|H10720AC58 +10720AC58:lI109|H10720DE48 +10720DE48:lI95|H107210FD8 +107210FD8:lI117|H107214238 +107214238:lI115|H1072175D0 +1072175D0:lI101|H10721AB00 +10721AB00:lI114|H10721E070 +10721E070:lI46|H107221560 +107221560:lI98|H107224708 +107224708:lI101|H1072275C0 +1072275C0:lI97|H10722A078 +10722A078:lI109|N +1071FB5C8:lH1071FE540|N +1071FE540:lI115|H1072015F8 +1072015F8:lI110|H1072047A0 +1072047A0:lI109|H1072079D0 +1072079D0:lI112|H10720AC48 +10720AC48:lI95|H10720DE38 +10720DE38:lI99|H107210FC8 +107210FC8:lI111|H107214228 +107214228:lI110|H1072175C0 +1072175C0:lI102|H10721AAF0 +10721AAF0:lI105|H10721E060 +10721E060:lI103|H107221550 +107221550:lI46|H1072246F8 +1072246F8:lI98|H1072275B0 +1072275B0:lI101|H10722A068 +10722A068:lI97|H10722C800 +10722C800:lI109|N +1071F87F8:Mn8:H1071FB538,H1071FB548,H1071FB558,H1071FB568,H1071FB578,H1071FB588,H1071FB598,H1071FB5A8 +1071FB538:lH1071FE4B0|N +1071FE4B0:lI115|H107201568 +107201568:lI110|H107204710 +107204710:lI109|H107207940 +107207940:lI112|H10720ABB8 +10720ABB8:lI97|H10720DDA8 +10720DDA8:lI95|H107210F38 +107210F38:lI117|H107214198 +107214198:lI115|H107217530 +107217530:lI109|H10721AA60 +10721AA60:lI46|H10721DFD0 +10721DFD0:lI98|H1072214C0 +1072214C0:lI101|H107224668 +107224668:lI97|H107227520 +107227520:lI109|N +1071FB5A8:lH1071FE520|N +1071FE520:lI115|H1072015D8 +1072015D8:lI110|H107204780 +107204780:lI109|H1072079B0 +1072079B0:lI112|H10720AC28 +10720AC28:lI97|H10720DE18 +10720DE18:lI95|H107210FA8 +107210FA8:lI101|H107214208 +107214208:lI114|H1072175A0 +1072175A0:lI114|H10721AAD0 +10721AAD0:lI111|H10721E040 +10721E040:lI114|H107221530 +107221530:lI95|H1072246D8 +1072246D8:lI108|H107227590 +107227590:lI111|H10722A058 +10722A058:lI103|H10722C7F0 +10722C7F0:lI103|H10722ED28 +10722ED28:lI101|H107230F70 +107230F70:lI114|H107232EE8 +107232EE8:lI46|H107234B90 +107234B90:lI98|H107236568 +107236568:lI101|H107237D10 +107237D10:lI97|H1072392B8 +1072392B8:lI109|N +1071FB598:lH1071FE510|N +1071FE510:lI115|H1072015C8 +1072015C8:lI110|H107204770 +107204770:lI109|H1072079A0 +1072079A0:lI112|H10720AC18 +10720AC18:lI97|H10720DE08 +10720DE08:lI95|H107210F98 +107210F98:lI101|H1072141F8 +1072141F8:lI114|H107217590 +107217590:lI114|H10721AAC0 +10721AAC0:lI111|H10721E030 +10721E030:lI114|H107221520 +107221520:lI95|H1072246C8 +1072246C8:lI105|H107227580 +107227580:lI111|H10722A048 +10722A048:lI46|H10722C7E0 +10722C7E0:lI98|H10722ED18 +10722ED18:lI101|H107230F60 +107230F60:lI97|H107232ED8 +107232ED8:lI109|N +1071FB588:lH1071FE500|N +1071FE500:lI115|H1072015B8 +1072015B8:lI110|H107204760 +107204760:lI109|H107207990 +107207990:lI112|H10720AC08 +10720AC08:lI95|H10720DDF8 +10720DDF8:lI99|H107210F88 +107210F88:lI111|H1072141E8 +1072141E8:lI110|H107217580 +107217580:lI102|H10721AAB0 +10721AAB0:lI46|H10721E020 +10721E020:lI98|H107221510 +107221510:lI101|H1072246B8 +1072246B8:lI97|H107227570 +107227570:lI109|N +1071FB578:lH1071FE4F0|N +1071FE4F0:lI115|H1072015A8 +1072015A8:lI110|H107204750 +107204750:lI109|H107207980 +107207980:lI112|H10720ABF8 +10720ABF8:lI97|H10720DDE8 +10720DDE8:lI95|H107210F78 +107210F78:lI109|H1072141D8 +1072141D8:lI105|H107217570 +107217570:lI98|H10721AAA0 +10721AAA0:lI95|H10721E010 +10721E010:lI115|H107221500 +107221500:lI116|H1072246A8 +1072246A8:lI111|H107227560 +107227560:lI114|H10722A038 +10722A038:lI97|H10722C7D0 +10722C7D0:lI103|H10722ED08 +10722ED08:lI101|H107230F50 +107230F50:lI95|H107232EC8 +107232EC8:lI100|H107234B80 +107234B80:lI101|H107236558 +107236558:lI116|H107237D00 +107237D00:lI115|H1072392A8 +1072392A8:lI46|H10723A720 +10723A720:lI98|H10723B990 +10723B990:lI101|H10723C9C0 +10723C9C0:lI97|H10723D830 +10723D830:lI109|N +1071FB568:lH1071FE4E0|N +1071FE4E0:lI115|H107201598 +107201598:lI110|H107204740 +107204740:lI109|H107207970 +107207970:lI112|H10720ABE8 +10720ABE8:lI97|H10720DDD8 +10720DDD8:lI95|H107210F68 +107210F68:lI109|H1072141C8 +1072141C8:lI105|H107217560 +107217560:lI98|H10721AA90 +10721AA90:lI95|H10721E000 +10721E000:lI108|H1072214F0 +1072214F0:lI105|H107224698 +107224698:lI98|H107227550 +107227550:lI46|H10722A028 +10722A028:lI98|H10722C7C0 +10722C7C0:lI101|H10722ECF8 +10722ECF8:lI97|H107230F40 +107230F40:lI109|N +1071FB558:lH1071FE4D0|N +1071FE4D0:lI115|H107201588 +107201588:lI110|H107204730 +107204730:lI109|H107207960 +107207960:lI112|H10720ABD8 +10720ABD8:lI95|H10720DDC8 +10720DDC8:lI109|H107210F58 +107210F58:lI105|H1072141B8 +1072141B8:lI110|H107217550 +107217550:lI105|H10721AA80 +10721AA80:lI95|H10721DFF0 +10721DFF0:lI109|H1072214E0 +1072214E0:lI105|H107224688 +107224688:lI98|H107227540 +107227540:lI46|H10722A018 +10722A018:lI98|H10722C7B0 +10722C7B0:lI101|H10722ECE8 +10722ECE8:lI97|H107230F30 +107230F30:lI109|N +1071FB548:lH1071FE4C0|N +1071FE4C0:lI115|H107201578 +107201578:lI110|H107204720 +107204720:lI109|H107207950 +107207950:lI112|H10720ABC8 +10720ABC8:lI97|H10720DDB8 +10720DDB8:lI95|H107210F48 +107210F48:lI97|H1072141A8 +1072141A8:lI117|H107217540 +107217540:lI116|H10721AA70 +10721AA70:lI104|H10721DFE0 +10721DFE0:lI101|H1072214D0 +1072214D0:lI110|H107224678 +107224678:lI116|H107227530 +107227530:lI105|H10722A008 +10722A008:lI99|H10722C7A0 +10722C7A0:lI97|H10722ECD8 +10722ECD8:lI116|H107230F20 +107230F20:lI105|H107232EB8 +107232EB8:lI111|H107234B70 +107234B70:lI110|H107236548 +107236548:lI95|H107237CF0 +107237CF0:lI115|H107239298 +107239298:lI101|H10723A710 +10723A710:lI114|H10723B980 +10723B980:lI118|H10723C9B0 +10723C9B0:lI105|H10723D820 +10723D820:lI99|H10723E540 +10723E540:lI101|H10723F130 +10723F130:lI46|H10723FBF0 +10723FBF0:lI98|H107240530 +107240530:lI101|H107240DB0 +107240DB0:lI97|H107241540 +107241540:lI109|N +1071F87D8:Mn3:H1071FB500,H1071FB518,H1071FB528 +1071FB500:Mn2:H1071FE470,H1071FE480 +1071FE470:lH107201528|N +107201528:lI115|H1072046D0 +1072046D0:lI110|H107207900 +107207900:lI109|H10720AB78 +10720AB78:lI112|H10720DD68 +10720DD68:lI99|H107210EF8 +107210EF8:lI95|H107214158 +107214158:lI109|H1072174F0 +1072174F0:lI105|H10721AA20 +10721AA20:lI98|H10721DF90 +10721DF90:lI95|H107221480 +107221480:lI103|H107224628 +107224628:lI114|H1072274E0 +1072274E0:lI97|H107229FD8 +107229FD8:lI109|H10722C770 +10722C770:lI46|H10722ECA8 +10722ECA8:lI98|H107230EF0 +107230EF0:lI101|H107232E88 +107232E88:lI97|H107234B50 +107234B50:lI109|N +1071FE480:lH107201538|N +107201538:lI115|H1072046E0 +1072046E0:lI110|H107207910 +107207910:lI109|H10720AB88 +10720AB88:lI112|H10720DD78 +10720DD78:lI97|H107210F08 +107210F08:lI95|H107214168 +107214168:lI110|H107217500 +107217500:lI101|H10721AA30 +10721AA30:lI116|H10721DFA0 +10721DFA0:lI119|H107221490 +107221490:lI111|H107224638 +107224638:lI114|H1072274F0 +1072274F0:lI107|H107229FE8 +107229FE8:lI95|H10722C780 +10722C780:lI105|H10722ECB8 +10722ECB8:lI110|H107230F00 +107230F00:lI116|H107232E98 +107232E98:lI101|H107234B60 +107234B60:lI114|H107236538 +107236538:lI102|H107237CE0 +107237CE0:lI97|H107239288 +107239288:lI99|H10723A700 +10723A700:lI101|H10723B970 +10723B970:lI95|H10723C9A0 +10723C9A0:lI102|H10723D810 +10723D810:lI105|H10723E530 +10723E530:lI108|H10723F120 +10723F120:lI116|H10723FBE0 +10723FBE0:lI101|H107240520 +107240520:lI114|H107240DA0 +107240DA0:lI46|H107241530 +107241530:lI98|H107241C60 +107241C60:lI101|H107242320 +107242320:lI97|H107242990 +107242990:lI109|N +1071FB528:lH1071FE4A0|N +1071FE4A0:lI115|H107201558 +107201558:lI110|H107204700 +107204700:lI109|H107207930 +107207930:lI112|H10720ABA8 +10720ABA8:lI109|H10720DD98 +10720DD98:lI95|H107210F28 +107210F28:lI117|H107214188 +107214188:lI115|H107217520 +107217520:lI109|H10721AA50 +10721AA50:lI46|H10721DFC0 +10721DFC0:lI98|H1072214B0 +1072214B0:lI101|H107224658 +107224658:lI97|H107227510 +107227510:lI109|N +1071FB518:lH1071FE490|N +1071FE490:lI115|H107201548 +107201548:lI110|H1072046F0 +1072046F0:lI109|H107207920 +107207920:lI112|H10720AB98 +10720AB98:lI97|H10720DD88 +10720DD88:lI95|H107210F18 +107210F18:lI109|H107214178 +107214178:lI105|H107217510 +107217510:lI98|H10721AA40 +10721AA40:lI95|H10721DFB0 +10721DFB0:lI100|H1072214A0 +1072214A0:lI97|H107224648 +107224648:lI116|H107227500 +107227500:lI97|H107229FF8 +107229FF8:lI46|H10722C790 +10722C790:lI98|H10722ECC8 +10722ECC8:lI101|H107230F10 +107230F10:lI97|H107232EA8 +107232EA8:lI109|N +1071F87B8:Mn3:H1071FB4D0,H1071FB4E0,H1071FB4F0 +1071FB4D0:lH1071FE440|N +1071FE440:lI115|H1072014F8 +1072014F8:lI110|H1072046A0 +1072046A0:lI109|H1072078D0 +1072078D0:lI112|H10720AB48 +10720AB48:lI97|H10720DD38 +10720DD38:lI95|H107210EC8 +107210EC8:lI109|H107214128 +107214128:lI105|H1072174C0 +1072174C0:lI98|H10721A9F0 +10721A9F0:lI46|H10721DF70 +10721DF70:lI98|H107221460 +107221460:lI101|H107224608 +107224608:lI97|H1072274C0 +1072274C0:lI109|N +1071FB4F0:lH1071FE460|N +1071FE460:lI115|H107201518 +107201518:lI110|H1072046C0 +1072046C0:lI109|H1072078F0 +1072078F0:lI112|H10720AB68 +10720AB68:lI46|H10720DD58 +10720DD58:lI97|H107210EE8 +107210EE8:lI112|H107214148 +107214148:lI112|H1072174E0 +1072174E0:lI117|H10721AA10 +10721AA10:lI112|N +1071FB4E0:lH1071FE450|N +1071FE450:lI115|H107201508 +107201508:lI110|H1072046B0 +1072046B0:lI109|H1072078E0 +1072078E0:lI112|H10720AB58 +10720AB58:lI109|H10720DD48 +10720DD48:lI95|H107210ED8 +107210ED8:lI99|H107214138 +107214138:lI111|H1072174D0 +1072174D0:lI110|H10721AA00 +10721AA00:lI102|H10721DF80 +10721DF80:lI105|H107221470 +107221470:lI103|H107224618 +107224618:lI46|H1072274D0 +1072274D0:lI98|H107229FC8 +107229FC8:lI101|H10722C760 +10722C760:lI97|H10722EC98 +10722EC98:lI109|N +1071F8788:Mn5:H1071FB480,H1071FB490,H1071FB4A0,H1071FB4B0,H1071FB4C0 +1071FB480:lH1071FE3F0|N +1071FE3F0:lI115|H1072014A8 +1072014A8:lI110|H107204650 +107204650:lI109|H107207880 +107207880:lI112|H10720AAF8 +10720AAF8:lI97|H10720DCE8 +10720DCE8:lI95|H107210E78 +107210E78:lI115|H1072140D8 +1072140D8:lI101|H107217470 +107217470:lI116|H10721A9A0 +10721A9A0:lI95|H10721DF20 +10721DF20:lI109|H107221410 +107221410:lI101|H1072245B8 +1072245B8:lI99|H107227470 +107227470:lI104|H107229F98 +107229F98:lI97|H10722C730 +10722C730:lI110|H10722EC68 +10722EC68:lI105|H107230EC0 +107230EC0:lI115|H107232E58 +107232E58:lI109|H107234B20 +107234B20:lI46|H107236508 +107236508:lI98|H107237CB0 +107237CB0:lI101|H107239258 +107239258:lI97|H10723A6D0 +10723A6D0:lI109|N +1071FB4C0:lH1071FE430|N +1071FE430:lI115|H1072014E8 +1072014E8:lI110|H107204690 +107204690:lI109|H1072078C0 +1072078C0:lI112|H10720AB38 +10720AB38:lI95|H10720DD28 +10720DD28:lI103|H107210EB8 +107210EB8:lI101|H107214118 +107214118:lI110|H1072174B0 +1072174B0:lI101|H10721A9E0 +10721A9E0:lI114|H10721DF60 +10721DF60:lI105|H107221450 +107221450:lI99|H1072245F8 +1072245F8:lI95|H1072274B0 +1072274B0:lI109|H107229FB8 +107229FB8:lI110|H10722C750 +10722C750:lI101|H10722EC88 +10722EC88:lI115|H107230EE0 +107230EE0:lI105|H107232E78 +107232E78:lI97|H107234B40 +107234B40:lI46|H107236528 +107236528:lI98|H107237CD0 +107237CD0:lI101|H107239278 +107239278:lI97|H10723A6F0 +10723A6F0:lI109|N +1071FB4B0:lH1071FE420|N +1071FE420:lI115|H1072014D8 +1072014D8:lI110|H107204680 +107204680:lI109|H1072078B0 +1072078B0:lI112|H10720AB28 +10720AB28:lI97|H10720DD18 +10720DD18:lI95|H107210EA8 +107210EA8:lI97|H107214108 +107214108:lI112|H1072174A0 +1072174A0:lI112|H10721A9D0 +10721A9D0:lI46|H10721DF50 +10721DF50:lI98|H107221440 +107221440:lI101|H1072245E8 +1072245E8:lI97|H1072274A0 +1072274A0:lI109|N +1071FB4A0:lH1071FE410|N +1071FE410:lI115|H1072014C8 +1072014C8:lI110|H107204670 +107204670:lI109|H1072078A0 +1072078A0:lI112|H10720AB18 +10720AB18:lI109|H10720DD08 +10720DD08:lI95|H107210E98 +107210E98:lI110|H1072140F8 +1072140F8:lI101|H107217490 +107217490:lI116|H10721A9C0 +10721A9C0:lI95|H10721DF40 +10721DF40:lI105|H107221430 +107221430:lI102|H1072245D8 +1072245D8:lI95|H107227490 +107227490:lI102|H107229FA8 +107229FA8:lI105|H10722C740 +10722C740:lI108|H10722EC78 +10722EC78:lI116|H107230ED0 +107230ED0:lI101|H107232E68 +107232E68:lI114|H107234B30 +107234B30:lI46|H107236518 +107236518:lI98|H107237CC0 +107237CC0:lI101|H107239268 +107239268:lI97|H10723A6E0 +10723A6E0:lI109|N +1071FB490:lH1071FE400|N +1071FE400:lI115|H1072014B8 +1072014B8:lI110|H107204660 +107204660:lI109|H107207890 +107207890:lI112|H10720AB08 +10720AB08:lI99|H10720DCF8 +10720DCF8:lI95|H107210E88 +107210E88:lI116|H1072140E8 +1072140E8:lI111|H107217480 +107217480:lI107|H10721A9B0 +10721A9B0:lI46|H10721DF30 +10721DF30:lI98|H107221420 +107221420:lI101|H1072245C8 +1072245C8:lI97|H107227480 +107227480:lI109|N +1071F8778:lH1071FB470|N +1071FB470:lI115|H1071FE3E0 +1071FE3E0:lI110|H107201498 +107201498:lI109|H107204640 +107204640:lI112|H107207870 +107207870:lI97|H10720AAE8 +10720AAE8:lI95|H10720DCD8 +10720DCD8:lI103|H107210E68 +107210E68:lI101|H1072140C8 +1072140C8:lI116|H107217460 +107217460:lI46|H10721A990 +10721A990:lI98|H10721DF10 +10721DF10:lI101|H107221400 +107221400:lI97|H1072245A8 +1072245A8:lI109|N +1071F8740:Mn6:H1071FB408,H1071FB418,H1071FB428,H1071FB438,H1071FB450,H1071FB460 +1071FB408:lH1071FE370|N +1071FE370:lI115|H107201428 +107201428:lI110|H1072045D0 +1072045D0:lI109|H107207800 +107207800:lI112|H10720AA78 +10720AA78:lI95|H10720DC68 +10720DC68:lI117|H107210DF8 +107210DF8:lI115|H107214058 +107214058:lI101|H1072173F0 +1072173F0:lI114|H10721A920 +10721A920:lI95|H10721DEA0 +10721DEA0:lI98|H107221390 +107221390:lI97|H107224538 +107224538:lI115|H107227410 +107227410:lI101|H107229F48 +107229F48:lI100|H10722C6E0 +10722C6E0:lI95|H10722EC18 +10722EC18:lI115|H107230E70 +107230E70:lI109|H107232E18 +107232E18:lI95|H107234AE0 +107234AE0:lI109|H1072364D8 +1072364D8:lI105|H107237C80 +107237C80:lI98|H107239238 +107239238:lI46|H10723A6C0 +10723A6C0:lI98|H10723B960 +10723B960:lI101|H10723C990 +10723C990:lI97|H10723D800 +10723D800:lI109|N +1071FB460:lH1071FE3D0|N +1071FE3D0:lI115|H107201488 +107201488:lI110|H107204630 +107204630:lI109|H107207860 +107207860:lI112|H10720AAD8 +10720AAD8:lI99|H10720DCC8 +10720DCC8:lI95|H107210E58 +107210E58:lI108|H1072140B8 +1072140B8:lI105|H107217450 +107217450:lI98|H10721A980 +10721A980:lI46|H10721DF00 +10721DF00:lI98|H1072213F0 +1072213F0:lI101|H107224598 +107224598:lI97|H107227460 +107227460:lI109|N +1071FB450:lH1071FE3C0|N +1071FE3C0:lI115|H107201478 +107201478:lI110|H107204620 +107204620:lI109|H107207850 +107207850:lI112|H10720AAC8 +10720AAC8:lI95|H10720DCB8 +10720DCB8:lI115|H107210E48 +107210E48:lI116|H1072140A8 +1072140A8:lI97|H107217440 +107217440:lI110|H10721A970 +10721A970:lI100|H10721DEF0 +10721DEF0:lI97|H1072213E0 +1072213E0:lI114|H107224588 +107224588:lI100|H107227450 +107227450:lI95|H107229F88 +107229F88:lI109|H10722C720 +10722C720:lI105|H10722EC58 +10722EC58:lI98|H107230EB0 +107230EB0:lI46|H107232E48 +107232E48:lI98|H107234B10 +107234B10:lI101|H1072364F8 +1072364F8:lI97|H107237CA0 +107237CA0:lI109|N +1071FB438:Mn2:H1071FE3A0,H1071FE3B0 +1071FE3A0:lH107201458|N +107201458:lI115|H107204600 +107204600:lI110|H107207830 +107207830:lI109|H10720AAA8 +10720AAA8:lI112|H10720DC98 +10720DC98:lI95|H107210E28 +107210E28:lI118|H107214088 +107214088:lI101|H107217420 +107217420:lI114|H10721A950 +10721A950:lI98|H10721DED0 +10721DED0:lI111|H1072213C0 +1072213C0:lI115|H107224568 +107224568:lI105|H107227430 +107227430:lI116|H107229F68 +107229F68:lI121|H10722C700 +10722C700:lI46|H10722EC38 +10722EC38:lI98|H107230E90 +107230E90:lI101|H107232E38 +107232E38:lI97|H107234B00 +107234B00:lI109|N +1071FE3B0:lH107201468|N +107201468:lI115|H107204610 +107204610:lI110|H107207840 +107207840:lI109|H10720AAB8 +10720AAB8:lI112|H10720DCA8 +10720DCA8:lI97|H107210E38 +107210E38:lI95|H107214098 +107214098:lI110|H107217430 +107217430:lI101|H10721A960 +10721A960:lI116|H10721DEE0 +10721DEE0:lI95|H1072213D0 +1072213D0:lI105|H107224578 +107224578:lI102|H107227440 +107227440:lI46|H107229F78 +107229F78:lI98|H10722C710 +10722C710:lI101|H10722EC48 +10722EC48:lI97|H107230EA0 +107230EA0:lI109|N +1071FB428:lH1071FE390|N +1071FE390:lI115|H107201448 +107201448:lI110|H1072045F0 +1072045F0:lI109|H107207820 +107207820:lI112|H10720AA98 +10720AA98:lI95|H10720DC88 +10720DC88:lI97|H107210E18 +107210E18:lI112|H107214078 +107214078:lI112|H107217410 +107217410:lI46|H10721A940 +10721A940:lI98|H10721DEC0 +10721DEC0:lI101|H1072213B0 +1072213B0:lI97|H107224558 +107224558:lI109|N +1071FB418:lH1071FE380|N +1071FE380:lI115|H107201438 +107201438:lI110|H1072045E0 +1072045E0:lI109|H107207810 +107207810:lI112|H10720AA88 +10720AA88:lI97|H10720DC78 +10720DC78:lI95|H107210E08 +107210E08:lI101|H107214068 +107214068:lI114|H107217400 +107217400:lI114|H10721A930 +10721A930:lI111|H10721DEB0 +10721DEB0:lI114|H1072213A0 +1072213A0:lI95|H107224548 +107224548:lI114|H107227420 +107227420:lI101|H107229F58 +107229F58:lI112|H10722C6F0 +10722C6F0:lI111|H10722EC28 +10722EC28:lI114|H107230E80 +107230E80:lI116|H107232E28 +107232E28:lI46|H107234AF0 +107234AF0:lI98|H1072364E8 +1072364E8:lI101|H107237C90 +107237C90:lI97|H107239248 +107239248:lI109|N +1071F8720:Mn3:H1071FB3C8,H1071FB3D8,H1071FB3E8 +1071FB3C8:lH1071FE320|N +1071FE320:lI115|H1072013D8 +1072013D8:lI110|H107204580 +107204580:lI109|H1072077B0 +1072077B0:lI112|H10720AA28 +10720AA28:lI109|H10720DC18 +10720DC18:lI95|H107210DA8 +107210DA8:lI110|H107214008 +107214008:lI101|H1072173A0 +1072173A0:lI116|H10721A8D0 +10721A8D0:lI95|H10721DE50 +10721DE50:lI105|H107221350 +107221350:lI102|H1072244F8 +1072244F8:lI95|H1072273D0 +1072273D0:lI109|H107229F08 +107229F08:lI116|H10722C6A0 +10722C6A0:lI46|H10722EBD8 +10722EBD8:lI98|H107230E30 +107230E30:lI101|H107232DF8 +107232DF8:lI97|H107234AC0 +107234AC0:lI109|N +1071FB3E8:Mn3:H1071FE340,H1071FE350,H1071FE360 +1071FE340:lH1072013F8|N +1072013F8:lI115|H1072045A0 +1072045A0:lI110|H1072077D0 +1072077D0:lI109|H10720AA48 +10720AA48:lI112|H10720DC38 +10720DC38:lI97|H107210DC8 +107210DC8:lI95|H107214028 +107214028:lI109|H1072173C0 +1072173C0:lI105|H10721A8F0 +10721A8F0:lI98|H10721DE70 +10721DE70:lI95|H107221370 +107221370:lI115|H107224518 +107224518:lI116|H1072273F0 +1072273F0:lI111|H107229F28 +107229F28:lI114|H10722C6C0 +10722C6C0:lI97|H10722EBF8 +10722EBF8:lI103|H107230E50 +107230E50:lI101|H107232E08 +107232E08:lI46|H107234AD0 +107234AD0:lI98|H1072364C8 +1072364C8:lI101|H107237C70 +107237C70:lI97|H107239228 +107239228:lI109|N +1071FE360:lH107201418|N +107201418:lI115|H1072045C0 +1072045C0:lI110|H1072077F0 +1072077F0:lI109|H10720AA68 +10720AA68:lI112|H10720DC58 +10720DC58:lI95|H107210DE8 +107210DE8:lI97|H107214048 +107214048:lI112|H1072173E0 +1072173E0:lI112|H10721A910 +10721A910:lI95|H10721DE90 +10721DE90:lI115|H107221380 +107221380:lI117|H107224528 +107224528:lI112|H107227400 +107227400:lI46|H107229F38 +107229F38:lI98|H10722C6D0 +10722C6D0:lI101|H10722EC08 +10722EC08:lI97|H107230E60 +107230E60:lI109|N +1071FE350:lH107201408|N +107201408:lI115|H1072045B0 +1072045B0:lI110|H1072077E0 +1072077E0:lI109|H10720AA58 +10720AA58:lI112|H10720DC48 +10720DC48:lI99|H107210DD8 +107210DD8:lI46|H107214038 +107214038:lI98|H1072173D0 +1072173D0:lI101|H10721A900 +10721A900:lI97|H10721DE80 +10721DE80:lI109|N +1071FB3D8:lH1071FE330|N +1071FE330:lI115|H1072013E8 +1072013E8:lI110|H107204590 +107204590:lI109|H1072077C0 +1072077C0:lI112|H10720AA38 +10720AA38:lI97|H10720DC28 +10720DC28:lI95|H107210DB8 +107210DB8:lI115|H107214018 +107214018:lI101|H1072173B0 +1072173B0:lI116|H10721A8E0 +10721A8E0:lI95|H10721DE60 +10721DE60:lI108|H107221360 +107221360:lI105|H107224508 +107224508:lI98|H1072273E0 +1072273E0:lI46|H107229F18 +107229F18:lI98|H10722C6B0 +10722C6B0:lI101|H10722EBE8 +10722EBE8:lI97|H107230E40 +107230E40:lI109|N +1071F8700:Mn3:H1071FB390,H1071FB3A0,H1071FB3B0 +1071FB390:lH1071FE2E0|N +1071FE2E0:lI115|H107201398 +107201398:lI110|H107204540 +107204540:lI109|H107207770 +107207770:lI112|H10720A9E8 +10720A9E8:lI97|H10720DBD8 +10720DBD8:lI95|H107210D68 +107210D68:lI115|H107213FC8 +107213FC8:lI117|H107217360 +107217360:lI112|H10721A890 +10721A890:lI101|H10721DE10 +10721DE10:lI114|H107221310 +107221310:lI118|H1072244B8 +1072244B8:lI105|H107227390 +107227390:lI115|H107229EC8 +107229EC8:lI111|H10722C680 +10722C680:lI114|H10722EBB8 +10722EBB8:lI46|H107230E10 +107230E10:lI98|H107232DD8 +107232DD8:lI101|H107234AA0 +107234AA0:lI97|H1072364A8 +1072364A8:lI109|N +1071FB3B0:Mn2:H1071FE300,H1071FE310 +1071FE300:lH1072013B8|N +1072013B8:lI115|H107204560 +107204560:lI110|H107207790 +107207790:lI109|H10720AA08 +10720AA08:lI112|H10720DBF8 +10720DBF8:lI95|H107210D88 +107210D88:lI110|H107213FE8 +107213FE8:lI111|H107217380 +107217380:lI116|H10721A8B0 +10721A8B0:lI105|H10721DE30 +10721DE30:lI102|H107221330 +107221330:lI105|H1072244D8 +1072244D8:lI99|H1072273B0 +1072273B0:lI97|H107229EE8 +107229EE8:lI116|H10722C690 +10722C690:lI105|H10722EBC8 +10722EBC8:lI111|H107230E20 +107230E20:lI110|H107232DE8 +107232DE8:lI95|H107234AB0 +107234AB0:lI109|H1072364B8 +1072364B8:lI105|H107237C60 +107237C60:lI98|H107239218 +107239218:lI46|H10723A6B0 +10723A6B0:lI98|H10723B950 +10723B950:lI101|H10723C980 +10723C980:lI97|H10723D7F0 +10723D7F0:lI109|N +1071FE310:lH1072013C8|N +1072013C8:lI115|H107204570 +107204570:lI110|H1072077A0 +1072077A0:lI109|H10720AA18 +10720AA18:lI112|H10720DC08 +10720DC08:lI109|H107210D98 +107210D98:lI95|H107213FF8 +107213FF8:lI109|H107217390 +107217390:lI112|H10721A8C0 +10721A8C0:lI100|H10721DE40 +10721DE40:lI46|H107221340 +107221340:lI98|H1072244E8 +1072244E8:lI101|H1072273C0 +1072273C0:lI97|H107229EF8 +107229EF8:lI109|N +1071FB3A0:lH1071FE2F0|N +1071FE2F0:lI115|H1072013A8 +1072013A8:lI110|H107204550 +107204550:lI109|H107207780 +107207780:lI112|H10720A9F8 +10720A9F8:lI109|H10720DBE8 +10720DBE8:lI95|H107210D78 +107210D78:lI99|H107213FD8 +107213FD8:lI111|H107217370 +107217370:lI110|H10721A8A0 +10721A8A0:lI102|H10721DE20 +10721DE20:lI46|H107221320 +107221320:lI98|H1072244C8 +1072244C8:lI101|H1072273A0 +1072273A0:lI97|H107229ED8 +107229ED8:lI109|N +1071F5D88:lI47|H1071F86C8 +1071F86C8:lI111|H1071FB330 +1071FB330:lI112|H1071FE270 +1071FE270:lI116|H107201328 +107201328:lI47|H1072044D0 +1072044D0:lI104|H107207700 +107207700:lI111|H10720A978 +10720A978:lI109|H10720DB68 +10720DB68:lI101|H107210CF8 +107210CF8:lI98|H107213F58 +107213F58:lI114|H1072172F0 +1072172F0:lI101|H10721A820 +10721A820:lI119|H10721DDA0 +10721DDA0:lI47|H1072212A0 +1072212A0:lI67|H107224448 +107224448:lI101|H107227320 +107227320:lI108|H107229E58 +107229E58:lI108|H10722C630 +10722C630:lI97|H10722EB68 +10722EB68:lI114|H107230DC0 +107230DC0:lI47|H107232D88 +107232D88:lI101|H107234A50 +107234A50:lI114|H107236468 +107236468:lI108|H107237C20 +107237C20:lI97|H1072391D8 +1072391D8:lI110|H10723A670 +10723A670:lI103|H10723B930 +10723B930:lI47|H10723C960 +10723C960:lI50|H10723D7D0 +10723D7D0:lI54|H10723E510 +10723E510:lI46|H10723F110 +10723F110:lI48|H10723FBD0 +10723FBD0:lI46|H107240510 +107240510:lI50|H107240D90 +107240D90:lI47|H107241520 +107241520:lI108|H107241C50 +107241C50:lI105|H107242310 +107242310:lI98|H107242980 +107242980:lI47|H107242F80 +107242F80:lI101|H1072434F0 +1072434F0:lI114|H107243A30 +107243A30:lI108|H107243F20 +107243F20:lI97|H107244410 +107244410:lI110|H1072448C0 +1072448C0:lI103|H107244D30 +107244D30:lI47|H107245190 +107245190:lI108|H1072455E0 +1072455E0:lI105|H1072459E0 +1072459E0:lI98|H107245DA0 +107245DA0:lI47|H107246130 +107246130:lI115|H1072464C0 +1072464C0:lI110|H107246850 +107246850:lI109|H107246BE0 +107246BE0:lI112|H107246F10 +107246F10:lI45|H107247230 +107247230:lI53|H107247540 +107247540:lI46|H107247840 +107247840:lI49|H107247B40 +107247B40:lI52|H107247E20 +107247E20:lI47|H280052C20 +1071F3680:lH1071F5E28|H1071F5E40 +1071F5E28:t2:H1071F89B8,H1071F89C8 +1071F89C8:Mf13:H1071FB880:N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N +1071FB880:t13:H1071FE838,H1071FE848,H1071FE858,H1071FE868,H1071FE878,H1071FE888,H1071FE898,H1071FE8A8,H1071FE8B8,H1071FE8C8,H1071FE8D8,H1071FE8E8,H1071FE8F8,H1071FE908,H1071FE918,H1071FE928,H1071FE938,H1071FE948,H1071FE958 +1071FE958:lI115|H107201A18 +107201A18:lI121|H107204BC0 +107204BC0:lI115|H107207DF0 +107207DF0:lI116|H10720B068 +10720B068:lI111|H10720E258 +10720E258:lI111|H1072113E8 +1072113E8:lI108|H107214638 +107214638:lI115|H1072179C0 +1072179C0:lI95|H10721AEC0 +10721AEC0:lI114|H10721E410 +10721E410:lI101|H1072218E0 +1072218E0:lI108|H107224A88 +107224A88:lI117|H107227910 +107227910:lI112|H10722A388 +10722A388:lI46|H10722CAE0 +10722CAE0:lI98|H10722EFD8 +10722EFD8:lI101|H1072311E0 +1072311E0:lI97|H1072330F8 +1072330F8:lI109|N +1071FE948:lI115|H107201A08 +107201A08:lI121|H107204BB0 +107204BB0:lI115|H107207DE0 +107207DE0:lI116|H10720B058 +10720B058:lI111|H10720E248 +10720E248:lI111|H1072113D8 +1072113D8:lI108|H107214628 +107214628:lI115|H1072179B0 +1072179B0:lI95|H10721AEB0 +10721AEB0:lI114|H10721E400 +10721E400:lI99|H1072218D0 +1072218D0:lI46|H107224A78 +107224A78:lI98|H107227900 +107227900:lI101|H10722A378 +10722A378:lI97|H10722CAD0 +10722CAD0:lI109|N +1071FE938:lI115|H1072019F8 +1072019F8:lI121|H107204BA0 +107204BA0:lI115|H107207DD0 +107207DD0:lI116|H10720B048 +10720B048:lI111|H10720E238 +10720E238:lI111|H1072113C8 +1072113C8:lI108|H107214618 +107214618:lI115|H1072179A0 +1072179A0:lI95|H10721AEA0 +10721AEA0:lI109|H10721E3F0 +10721E3F0:lI97|H1072218C0 +1072218C0:lI107|H107224A68 +107224A68:lI101|H1072278F0 +1072278F0:lI46|H10722A368 +10722A368:lI98|H10722CAC0 +10722CAC0:lI101|H10722EFC8 +10722EFC8:lI97|H1072311D0 +1072311D0:lI109|N +1071FE928:lI115|H1072019E8 +1072019E8:lI121|H107204B90 +107204B90:lI115|H107207DC0 +107207DC0:lI116|H10720B038 +10720B038:lI111|H10720E228 +10720E228:lI111|H1072113B8 +1072113B8:lI108|H107214608 +107214608:lI115|H107217990 +107217990:lI95|H10721AE90 +10721AE90:lI108|H10721E3E0 +10721E3E0:lI105|H1072218B0 +1072218B0:lI98|H107224A58 +107224A58:lI46|H1072278E0 +1072278E0:lI98|H10722A358 +10722A358:lI101|H10722CAB0 +10722CAB0:lI97|H10722EFB8 +10722EFB8:lI109|N +1071FE918:lI115|H1072019D8 +1072019D8:lI121|H107204B80 +107204B80:lI115|H107207DB0 +107207DB0:lI116|H10720B028 +10720B028:lI111|H10720E218 +10720E218:lI111|H1072113A8 +1072113A8:lI108|H1072145F8 +1072145F8:lI115|H107217980 +107217980:lI46|H10721AE80 +10721AE80:lI98|H10721E3D0 +10721E3D0:lI101|H1072218A0 +1072218A0:lI97|H107224A48 +107224A48:lI109|N +1071FE908:lI115|H1072019C8 +1072019C8:lI97|H107204B70 +107204B70:lI115|H107207DA0 +107207DA0:lI108|H10720B018 +10720B018:lI95|H10720E208 +10720E208:lI114|H107211398 +107211398:lI101|H1072145E8 +1072145E8:lI112|H107217970 +107217970:lI111|H10721AE70 +10721AE70:lI114|H10721E3C0 +10721E3C0:lI116|H107221890 +107221890:lI95|H107224A38 +107224A38:lI116|H1072278D0 +1072278D0:lI116|H10722A348 +10722A348:lI121|H10722CAA0 +10722CAA0:lI95|H10722EFA8 +10722EFA8:lI104|H1072311C0 +1072311C0:lI46|H1072330E8 +1072330E8:lI98|H107234D40 +107234D40:lI101|H1072366E8 +1072366E8:lI97|H107237E50 +107237E50:lI109|N +1071FE8F8:lI115|H1072019B8 +1072019B8:lI97|H107204B60 +107204B60:lI115|H107207D90 +107207D90:lI108|H10720B008 +10720B008:lI95|H10720E1F8 +10720E1F8:lI114|H107211388 +107211388:lI101|H1072145D8 +1072145D8:lI112|H107217960 +107217960:lI111|H10721AE60 +10721AE60:lI114|H10721E3B0 +10721E3B0:lI116|H107221880 +107221880:lI95|H107224A28 +107224A28:lI102|H1072278C0 +1072278C0:lI105|H10722A338 +10722A338:lI108|H10722CA90 +10722CA90:lI101|H10722EF98 +10722EF98:lI95|H1072311B0 +1072311B0:lI104|H1072330D8 +1072330D8:lI46|H107234D30 +107234D30:lI98|H1072366D8 +1072366D8:lI101|H107237E40 +107237E40:lI97|H1072393C8 +1072393C8:lI109|N +1071FE8E8:lI115|H1072019A8 +1072019A8:lI97|H107204B50 +107204B50:lI115|H107207D80 +107207D80:lI108|H10720AFF8 +10720AFF8:lI95|H10720E1E8 +10720E1E8:lI114|H107211378 +107211378:lI101|H1072145C8 +1072145C8:lI112|H107217950 +107217950:lI111|H10721AE50 +10721AE50:lI114|H10721E3A0 +10721E3A0:lI116|H107221870 +107221870:lI46|H107224A18 +107224A18:lI98|H1072278B0 +1072278B0:lI101|H10722A328 +10722A328:lI97|H10722CA80 +10722CA80:lI109|N +1071FE8D8:lI115|H107201998 +107201998:lI97|H107204B40 +107204B40:lI115|H107207D70 +107207D70:lI108|H10720AFE8 +10720AFE8:lI46|H10720E1D8 +10720E1D8:lI98|H107211368 +107211368:lI101|H1072145B8 +1072145B8:lI97|H107217940 +107217940:lI109|N +1071FE8C8:lI115|H107201988 +107201988:lI97|H107204B30 +107204B30:lI115|H107207D60 +107207D60:lI108|H10720AFD8 +10720AFD8:lI46|H10720E1C8 +10720E1C8:lI97|H107211358 +107211358:lI112|H1072145A8 +1072145A8:lI112|H107217930 +107217930:lI117|H10721AE40 +10721AE40:lI112|N +1071FE8B8:lI115|H107201978 +107201978:lI97|H107204B20 +107204B20:lI115|H107207D50 +107207D50:lI108|H10720AFC8 +10720AFC8:lI46|H10720E1B8 +10720E1B8:lI97|H107211348 +107211348:lI112|H107214598 +107214598:lI112|N +1071FE8A8:lI114|H107201968 +107201968:lI101|H107204B10 +107204B10:lI108|H107207D40 +107207D40:lI101|H10720AFB8 +10720AFB8:lI97|H10720E1A8 +10720E1A8:lI115|H107211338 +107211338:lI101|H107214588 +107214588:lI95|H107217920 +107217920:lI104|H10721AE30 +10721AE30:lI97|H10721E390 +10721E390:lI110|H107221860 +107221860:lI100|H107224A08 +107224A08:lI108|H1072278A0 +1072278A0:lI101|H10722A318 +10722A318:lI114|H10722CA70 +10722CA70:lI95|H10722EF88 +10722EF88:lI49|H1072311A0 +1072311A0:lI46|H1072330C8 +1072330C8:lI98|H107234D20 +107234D20:lI101|H1072366C8 +1072366C8:lI97|H107237E30 +107237E30:lI109|N +1071FE898:lI114|H107201958 +107201958:lI101|H107204B00 +107204B00:lI108|H107207D30 +107207D30:lI101|H10720AFA8 +10720AFA8:lI97|H10720E198 +10720E198:lI115|H107211328 +107211328:lI101|H107214578 +107214578:lI95|H107217910 +107217910:lI104|H10721AE20 +10721AE20:lI97|H10721E380 +10721E380:lI110|H107221850 +107221850:lI100|H1072249F8 +1072249F8:lI108|H107227890 +107227890:lI101|H10722A308 +10722A308:lI114|H10722CA60 +10722CA60:lI46|H10722EF78 +10722EF78:lI98|H107231190 +107231190:lI101|H1072330B8 +1072330B8:lI97|H107234D10 +107234D10:lI109|N +1071FE888:lI114|H107201948 +107201948:lI98|H107204AF0 +107204AF0:lI95|H107207D20 +107207D20:lI102|H10720AF98 +10720AF98:lI111|H10720E188 +10720E188:lI114|H107211318 +107211318:lI109|H107214568 +107214568:lI97|H107217900 +107217900:lI116|H10721AE10 +10721AE10:lI95|H10721E370 +10721E370:lI115|H107221840 +107221840:lI117|H1072249E8 +1072249E8:lI112|H107227880 +107227880:lI112|H10722A2F8 +10722A2F8:lI46|H10722CA50 +10722CA50:lI98|H10722EF68 +10722EF68:lI101|H107231180 +107231180:lI97|H1072330A8 +1072330A8:lI109|N +1071FE878:lI114|H107201938 +107201938:lI98|H107204AE0 +107204AE0:lI46|H107207D10 +107207D10:lI98|H10720AF88 +10720AF88:lI101|H10720E178 +10720E178:lI97|H107211308 +107211308:lI109|N +1071FE868:lI109|H107201928 +107201928:lI105|H107204AD0 +107204AD0:lI115|H107207D00 +107207D00:lI99|H10720AF78 +10720AF78:lI95|H10720E168 +10720E168:lI115|H1072112F8 +1072112F8:lI117|H107214558 +107214558:lI112|H1072178F0 +1072178F0:lI112|H10721AE00 +10721AE00:lI46|H10721E360 +10721E360:lI98|H107221830 +107221830:lI101|H1072249D8 +1072249D8:lI97|H107227870 +107227870:lI109|N +1071FE858:lI102|H107201918 +107201918:lI111|H107204AC0 +107204AC0:lI114|H107207CF0 +107207CF0:lI109|H10720AF68 +10720AF68:lI97|H10720E158 +10720E158:lI116|H1072112E8 +1072112E8:lI95|H107214548 +107214548:lI108|H1072178E0 +1072178E0:lI105|H10721ADF0 +10721ADF0:lI98|H10721E350 +10721E350:lI95|H107221820 +107221820:lI115|H1072249C8 +1072249C8:lI117|H107227860 +107227860:lI112|H10722A2E8 +10722A2E8:lI112|H10722CA40 +10722CA40:lI46|H10722EF58 +10722EF58:lI98|H107231170 +107231170:lI101|H107233098 +107233098:lI97|H107234D00 +107234D00:lI109|N +1071FE848:lI101|H107201908 +107201908:lI114|H107204AB0 +107204AB0:lI108|H107207CE0 +107207CE0:lI115|H10720AF58 +10720AF58:lI114|H10720E148 +10720E148:lI118|H1072112D8 +1072112D8:lI46|H107214538 +107214538:lI98|H1072178D0 +1072178D0:lI101|H10721ADE0 +10721ADE0:lI97|H10721E340 +10721E340:lI109|N +1071FE838:lI97|H1072018F8 +1072018F8:lI108|H107204AA0 +107204AA0:lI97|H107207CD0 +107207CD0:lI114|H10720AF48 +10720AF48:lI109|H10720E138 +10720E138:lI95|H1072112C8 +1072112C8:lI104|H107214528 +107214528:lI97|H1072178C0 +1072178C0:lI110|H10721ADD0 +10721ADD0:lI100|H10721E330 +10721E330:lI108|H107221810 +107221810:lI101|H1072249B8 +1072249B8:lI114|H107227850 +107227850:lI46|H10722A2D8 +10722A2D8:lI98|H10722CA30 +10722CA30:lI101|H10722EF48 +10722EF48:lI97|H107231160 +107231160:lI109|N +1071F89B8:lI47|H1071FB870 +1071FB870:lI111|H1071FE828 +1071FE828:lI112|H1072018E8 +1072018E8:lI116|H107204A90 +107204A90:lI47|H107207CC0 +107207CC0:lI104|H10720AF38 +10720AF38:lI111|H10720E128 +10720E128:lI109|H1072112B8 +1072112B8:lI101|H107214518 +107214518:lI98|H1072178B0 +1072178B0:lI114|H10721ADC0 +10721ADC0:lI101|H10721E320 +10721E320:lI119|H107221800 +107221800:lI47|H1072249A8 +1072249A8:lI67|H107227840 +107227840:lI101|H10722A2C8 +10722A2C8:lI108|H10722CA20 +10722CA20:lI108|H10722EF38 +10722EF38:lI97|H107231150 +107231150:lI114|H107233088 +107233088:lI47|H107234CF0 +107234CF0:lI101|H1072366B8 +1072366B8:lI114|H107237E20 +107237E20:lI108|H1072393B8 +1072393B8:lI97|H10723A810 +10723A810:lI110|H10723BA40 +10723BA40:lI103|H10723CA70 +10723CA70:lI47|H10723D8D0 +10723D8D0:lI50|H10723E5D0 +10723E5D0:lI54|H10723F1B0 +10723F1B0:lI46|H10723FC40 +10723FC40:lI48|H107240580 +107240580:lI46|H107240DF0 +107240DF0:lI50|H107241580 +107241580:lI47|H107241CA0 +107241CA0:lI108|H107242360 +107242360:lI105|H1072429C0 +1072429C0:lI98|H107242FA0 +107242FA0:lI47|H107243510 +107243510:lI101|H107243A50 +107243A50:lI114|H107243F40 +107243F40:lI108|H107244430 +107244430:lI97|H1072448E0 +1072448E0:lI110|H107244D50 +107244D50:lI103|H1072451B0 +1072451B0:lI47|H107245600 +107245600:lI108|H107245A00 +107245A00:lI105|H107245DB0 +107245DB0:lI98|H107246140 +107246140:lI47|H1072464D0 +1072464D0:lI115|H107246860 +107246860:lI97|H107246BF0 +107246BF0:lI115|H107246F20 +107246F20:lI108|H107247240 +107247240:lI45|H107247550 +107247550:lI52|H107247850 +107247850:lI46|H107247B50 +107247B50:lI50|H107247E30 +107247E30:lI46|H1072480F0 +1072480F0:lI49|H1072483B0 +1072483B0:lI47|H280052C20 +1071F5E40:lH1071F8A78|H1071F8A90 +1071F8A78:t2:H1071FB920,H1071FB930 +1071FB930:MfE:H1071FE978:N,N,N,N,N,N,N,N,N,N,N,N,N,N +1071FE978:tE:H107201A38,H107201A48,H107201A58,H107201A68,H107201A78,H107201A88,H107201A98,H107201AA8,H107201AB8,H107201AC8,H107201AD8,H107201AE8,H107201AF8,H107201B08 +107201B08:lI116|H107204CB0 +107204CB0:lI116|H107207EE0 +107207EE0:lI98|H10720B158 +10720B158:lI95|H10720E348 +10720E348:lI97|H1072114D8 +1072114D8:lI117|H107214728 +107214728:lI116|H107217AB0 +107217AB0:lI111|H10721AFA0 +10721AFA0:lI115|H10721E4F0 +10721E4F0:lI116|H1072219B0 +1072219B0:lI97|H107224B58 +107224B58:lI114|H1072279E0 +1072279E0:lI116|H10722A448 +10722A448:lI46|H10722CB90 +10722CB90:lI98|H10722F078 +10722F078:lI101|H107231270 +107231270:lI97|H107233178 +107233178:lI109|N +107201AF8:lI115|H107204CA0 +107204CA0:lI121|H107207ED0 +107207ED0:lI115|H10720B148 +10720B148:lI116|H10720E338 +10720E338:lI101|H1072114C8 +1072114C8:lI109|H107214718 +107214718:lI95|H107217AA0 +107217AA0:lI105|H10721AF90 +10721AF90:lI110|H10721E4E0 +10721E4E0:lI102|H1072219A0 +1072219A0:lI111|H107224B48 +107224B48:lI114|H1072279D0 +1072279D0:lI109|H10722A438 +10722A438:lI97|H10722CB80 +10722CB80:lI116|H10722F068 +10722F068:lI105|H107231260 +107231260:lI111|H107233168 +107233168:lI110|H107234DA0 +107234DA0:lI46|H107236738 +107236738:lI98|H107237EA0 +107237EA0:lI101|H107239408 +107239408:lI97|H10723A830 +10723A830:lI109|N +107201AE8:lI115|H107204C90 +107204C90:lI99|H107207EC0 +107207EC0:lI104|H10720B138 +10720B138:lI101|H10720E328 +10720E328:lI100|H1072114B8 +1072114B8:lI117|H107214708 +107214708:lI108|H107217A90 +107217A90:lI101|H10721AF80 +10721AF80:lI114|H10721E4D0 +10721E4D0:lI46|H107221990 +107221990:lI98|H107224B38 +107224B38:lI101|H1072279C0 +1072279C0:lI97|H10722A428 +10722A428:lI109|N +107201AD8:lI114|H107204C80 +107204C80:lI117|H107207EB0 +107207EB0:lI110|H10720B128 +10720B128:lI116|H10720E318 +10720E318:lI105|H1072114A8 +1072114A8:lI109|H1072146F8 +1072146F8:lI101|H107217A80 +107217A80:lI95|H10721AF70 +10721AF70:lI116|H10721E4C0 +10721E4C0:lI111|H107221980 +107221980:lI111|H107224B28 +107224B28:lI108|H1072279B0 +1072279B0:lI115|H10722A418 +10722A418:lI95|H10722CB70 +10722CB70:lI115|H10722F058 +10722F058:lI117|H107231250 +107231250:lI112|H107233158 +107233158:lI46|H107234D90 +107234D90:lI98|H107236728 +107236728:lI101|H107237E90 +107237E90:lI97|H1072393F8 +1072393F8:lI109|N +107201AC8:lI114|H107204C70 +107204C70:lI117|H107207EA0 +107207EA0:lI110|H10720B118 +10720B118:lI116|H10720E308 +10720E308:lI105|H107211498 +107211498:lI109|H1072146E8 +1072146E8:lI101|H107217A70 +107217A70:lI95|H10721AF60 +10721AF60:lI116|H10721E4B0 +10721E4B0:lI111|H107221970 +107221970:lI111|H107224B18 +107224B18:lI108|H1072279A0 +1072279A0:lI115|H10722A408 +10722A408:lI46|H10722CB60 +10722CB60:lI98|H10722F048 +10722F048:lI101|H107231240 +107231240:lI97|H107233148 +107233148:lI109|N +107201AB8:lI114|H107204C60 +107204C60:lI117|H107207E90 +107207E90:lI110|H10720B108 +10720B108:lI116|H10720E2F8 +10720E2F8:lI105|H107211488 +107211488:lI109|H1072146D8 +1072146D8:lI101|H107217A60 +107217A60:lI95|H10721AF50 +10721AF50:lI116|H10721E4A0 +10721E4A0:lI111|H107221960 +107221960:lI111|H107224B08 +107224B08:lI108|H107227990 +107227990:lI115|H10722A3F8 +10722A3F8:lI46|H10722CB50 +10722CB50:lI97|H10722F038 +10722F038:lI112|H107231230 +107231230:lI112|H107233138 +107233138:lI117|H107234D80 +107234D80:lI112|N +107201AA8:lI114|H107204C50 +107204C50:lI117|H107207E80 +107207E80:lI110|H10720B0F8 +10720B0F8:lI116|H10720E2E8 +10720E2E8:lI105|H107211478 +107211478:lI109|H1072146C8 +1072146C8:lI101|H107217A50 +107217A50:lI95|H10721AF40 +10721AF40:lI116|H10721E490 +10721E490:lI111|H107221950 +107221950:lI111|H107224AF8 +107224AF8:lI108|H107227980 +107227980:lI115|H10722A3E8 +10722A3E8:lI46|H10722CB40 +10722CB40:lI97|H10722F028 +10722F028:lI112|H107231220 +107231220:lI112|N +107201A98:lI111|H107204C40 +107204C40:lI98|H107207E70 +107207E70:lI115|H10720B0E8 +10720B0E8:lI101|H10720E2D8 +10720E2D8:lI114|H107211468 +107211468:lI118|H1072146B8 +1072146B8:lI101|H107217A40 +107217A40:lI114|H10721AF30 +10721AF30:lI95|H10721E480 +10721E480:lI98|H107221940 +107221940:lI97|H107224AE8 +107224AE8:lI99|H107227970 +107227970:lI107|H10722A3D8 +10722A3D8:lI101|H10722CB30 +10722CB30:lI110|H10722F018 +10722F018:lI100|H107231210 +107231210:lI46|H107233128 +107233128:lI98|H107234D70 +107234D70:lI101|H107236718 +107236718:lI97|H107237E80 +107237E80:lI109|N +107201A88:lI109|H107204C30 +107204C30:lI115|H107207E60 +107207E60:lI97|H10720B0D8 +10720B0D8:lI99|H10720E2C8 +10720E2C8:lI99|H107211458 +107211458:lI46|H1072146A8 +1072146A8:lI98|H107217A30 +107217A30:lI101|H10721AF20 +10721AF20:lI97|H10721E470 +10721E470:lI109|N +107201A78:lI105|H107204C20 +107204C20:lI110|H107207E50 +107207E50:lI115|H10720B0C8 +10720B0C8:lI116|H10720E2B8 +10720E2B8:lI114|H107211448 +107211448:lI117|H107214698 +107214698:lI109|H107217A20 +107217A20:lI101|H10721AF10 +10721AF10:lI110|H10721E460 +10721E460:lI116|H107221930 +107221930:lI46|H107224AD8 +107224AD8:lI98|H107227960 +107227960:lI101|H10722A3C8 +10722A3C8:lI97|H10722CB20 +10722CB20:lI109|N +107201A68:lI101|H107204C10 +107204C10:lI114|H107207E40 +107207E40:lI116|H10720B0B8 +10720B0B8:lI115|H10720E2A8 +10720E2A8:lI95|H107211438 +107211438:lI97|H107214688 +107214688:lI108|H107217A10 +107217A10:lI108|H10721AF00 +10721AF00:lI111|H10721E450 +10721E450:lI99|H107221920 +107221920:lI95|H107224AC8 +107224AC8:lI99|H107227950 +107227950:lI111|H10722A3B8 +10722A3B8:lI110|H10722CB10 +10722CB10:lI102|H10722F008 +10722F008:lI105|H107231200 +107231200:lI103|H107233118 +107233118:lI46|H107234D60 +107234D60:lI98|H107236708 +107236708:lI101|H107237E70 +107237E70:lI97|H1072393E8 +1072393E8:lI109|N +107201A58:lI100|H107204C00 +107204C00:lI121|H107207E30 +107207E30:lI110|H10720B0A8 +10720B0A8:lI116|H10720E298 +10720E298:lI114|H107211428 +107211428:lI97|H107214678 +107214678:lI99|H107217A00 +107217A00:lI101|H10721AEF0 +10721AEF0:lI46|H10721E440 +10721E440:lI98|H107221910 +107221910:lI101|H107224AB8 +107224AB8:lI97|H107227940 +107227940:lI109|N +107201A48:lI100|H107204BF0 +107204BF0:lI98|H107207E20 +107207E20:lI103|H10720B098 +10720B098:lI46|H10720E288 +10720E288:lI98|H107211418 +107211418:lI101|H107214668 +107214668:lI97|H1072179F0 +1072179F0:lI109|N +107201A38:lI97|H107204BE0 +107204BE0:lI112|H107207E10 +107207E10:lI112|H10720B088 +10720B088:lI109|H10720E278 +10720E278:lI111|H107211408 +107211408:lI110|H107214658 +107214658:lI95|H1072179E0 +1072179E0:lI105|H10721AEE0 +10721AEE0:lI110|H10721E430 +10721E430:lI102|H107221900 +107221900:lI111|H107224AA8 +107224AA8:lI46|H107227930 +107227930:lI98|H10722A3A8 +10722A3A8:lI101|H10722CB00 +10722CB00:lI97|H10722EFF8 +10722EFF8:lI109|N +1071FB920:lI47|H1071FE968 +1071FE968:lI111|H107201A28 +107201A28:lI112|H107204BD0 +107204BD0:lI116|H107207E00 +107207E00:lI47|H10720B078 +10720B078:lI104|H10720E268 +10720E268:lI111|H1072113F8 +1072113F8:lI109|H107214648 +107214648:lI101|H1072179D0 +1072179D0:lI98|H10721AED0 +10721AED0:lI114|H10721E420 +10721E420:lI101|H1072218F0 +1072218F0:lI119|H107224A98 +107224A98:lI47|H107227920 +107227920:lI67|H10722A398 +10722A398:lI101|H10722CAF0 +10722CAF0:lI108|H10722EFE8 +10722EFE8:lI108|H1072311F0 +1072311F0:lI97|H107233108 +107233108:lI114|H107234D50 +107234D50:lI47|H1072366F8 +1072366F8:lI101|H107237E60 +107237E60:lI114|H1072393D8 +1072393D8:lI108|H10723A820 +10723A820:lI97|H10723BA50 +10723BA50:lI110|H10723CA80 +10723CA80:lI103|H10723D8E0 +10723D8E0:lI47|H10723E5E0 +10723E5E0:lI50|H10723F1C0 +10723F1C0:lI54|H10723FC50 +10723FC50:lI46|H107240590 +107240590:lI48|H107240E00 +107240E00:lI46|H107241590 +107241590:lI50|H107241CB0 +107241CB0:lI47|H107242370 +107242370:lI108|H1072429D0 +1072429D0:lI105|H107242FB0 +107242FB0:lI98|H107243520 +107243520:lI47|H107243A60 +107243A60:lI101|H107243F50 +107243F50:lI114|H107244440 +107244440:lI108|H1072448F0 +1072448F0:lI97|H107244D60 +107244D60:lI110|H1072451C0 +1072451C0:lI103|H107245610 +107245610:lI47|H107245A10 +107245A10:lI108|H107245DC0 +107245DC0:lI105|H107246150 +107246150:lI98|H1072464E0 +1072464E0:lI47|H107246870 +107246870:lI114|H107246C00 +107246C00:lI117|H107246F30 +107246F30:lI110|H107247250 +107247250:lI116|H107247560 +107247560:lI105|H107247860 +107247860:lI109|H107247B60 +107247B60:lI101|H107247E40 +107247E40:lI95|H107248100 +107248100:lI116|H1072483C0 +1072483C0:lI111|H107248670 +107248670:lI111|H107248920 +107248920:lI108|H107248BA0 +107248BA0:lI115|H107248E20 +107248E20:lI45|H107249090 +107249090:lI50|H107249300 +107249300:lI46|H107249560 +107249560:lI48|H1072497C0 +1072497C0:lI47|H280052C20 +1071F8A90:lH1071FB9B8|H1071FB9D0 +1071FB9B8:t2:H1071FE9F0,H1071FEA00 +1071FEA00:MfB:H107201B28:N,N,N,N,N,N,N,N,N,N,N +107201B28:tB:H107204CD0,H107204CE0,H107204CF0,H107204D00,H107204D10,H107204D20,H107204D30,H107204D40,H107204D50,H107204D60,H107204D70 +107204D70:lI114|H107207FA0 +107207FA0:lI101|H10720B218 +10720B218:lI108|H10720E408 +10720E408:lI116|H107211598 +107211598:lI111|H1072147E8 +1072147E8:lI111|H107217B70 +107217B70:lI108|H10721B060 +10721B060:lI95|H10721E5B0 +10721E5B0:lI117|H107221A70 +107221A70:lI116|H107224C18 +107224C18:lI105|H107227A90 +107227A90:lI108|H10722A4E8 +10722A4E8:lI115|H10722CC20 +10722CC20:lI46|H10722F108 +10722F108:lI98|H107231300 +107231300:lI101|H107233208 +107233208:lI97|H107234E30 +107234E30:lI109|N +107204D60:lI114|H107207F90 +107207F90:lI101|H10720B208 +10720B208:lI108|H10720E3F8 +10720E3F8:lI116|H107211588 +107211588:lI111|H1072147D8 +1072147D8:lI111|H107217B60 +107217B60:lI108|H10721B050 +10721B050:lI95|H10721E5A0 +10721E5A0:lI116|H107221A60 +107221A60:lI97|H107224C08 +107224C08:lI114|H107227A80 +107227A80:lI103|H10722A4D8 +10722A4D8:lI101|H10722CC10 +10722CC10:lI116|H10722F0F8 +10722F0F8:lI46|H1072312F0 +1072312F0:lI98|H1072331F8 +1072331F8:lI101|H107234E20 +107234E20:lI97|H1072367B8 +1072367B8:lI109|N +107204D50:lI114|H107207F80 +107207F80:lI101|H10720B1F8 +10720B1F8:lI108|H10720E3E8 +10720E3E8:lI116|H107211578 +107211578:lI111|H1072147C8 +1072147C8:lI111|H107217B50 +107217B50:lI108|H10721B040 +10721B040:lI95|H10721E590 +10721E590:lI115|H107221A50 +107221A50:lI121|H107224BF8 +107224BF8:lI115|H107227A70 +107227A70:lI95|H10722A4C8 +10722A4C8:lI119|H10722CC00 +10722CC00:lI105|H10722F0E8 +10722F0E8:lI110|H1072312E0 +1072312E0:lI46|H1072331E8 +1072331E8:lI98|H107234E10 +107234E10:lI101|H1072367A8 +1072367A8:lI97|H107237EF0 +107237EF0:lI109|N +107204D40:lI114|H107207F70 +107207F70:lI101|H10720B1E8 +10720B1E8:lI108|H10720E3D8 +10720E3D8:lI116|H107211568 +107211568:lI111|H1072147B8 +1072147B8:lI111|H107217B40 +107217B40:lI108|H10721B030 +10721B030:lI95|H10721E580 +10721E580:lI115|H107221A40 +107221A40:lI101|H107224BE8 +107224BE8:lI114|H107227A60 +107227A60:lI118|H10722A4B8 +10722A4B8:lI101|H10722CBF0 +10722CBF0:lI114|H10722F0D8 +10722F0D8:lI46|H1072312D0 +1072312D0:lI98|H1072331D8 +1072331D8:lI101|H107234E00 +107234E00:lI97|H107236798 +107236798:lI109|N +107204D30:lI114|H107207F60 +107207F60:lI101|H10720B1D8 +10720B1D8:lI108|H10720E3C8 +10720E3C8:lI116|H107211558 +107211558:lI111|H1072147A8 +1072147A8:lI111|H107217B30 +107217B30:lI108|H10721B020 +10721B020:lI95|H10721E570 +10721E570:lI109|H107221A30 +107221A30:lI111|H107224BD8 +107224BD8:lI100|H107227A50 +107227A50:lI95|H10722A4A8 +10722A4A8:lI119|H10722CBE0 +10722CBE0:lI105|H10722F0C8 +10722F0C8:lI110|H1072312C0 +1072312C0:lI46|H1072331C8 +1072331C8:lI98|H107234DF0 +107234DF0:lI101|H107236788 +107236788:lI97|H107237EE0 +107237EE0:lI109|N +107204D20:lI114|H107207F50 +107207F50:lI101|H10720B1C8 +10720B1C8:lI108|H10720E3B8 +10720E3B8:lI116|H107211548 +107211548:lI111|H107214798 +107214798:lI111|H107217B20 +107217B20:lI108|H10721B010 +10721B010:lI95|H10721E560 +10721E560:lI102|H107221A20 +107221A20:lI103|H107224BC8 +107224BC8:lI114|H107227A40 +107227A40:lI97|H10722A498 +10722A498:lI112|H10722CBD0 +10722CBD0:lI104|H10722F0B8 +10722F0B8:lI95|H1072312B0 +1072312B0:lI119|H1072331B8 +1072331B8:lI105|H107234DE0 +107234DE0:lI110|H107236778 +107236778:lI46|H107237ED0 +107237ED0:lI98|H107239428 +107239428:lI101|H10723A850 +10723A850:lI97|H10723BA70 +10723BA70:lI109|N +107204D10:lI114|H107207F40 +107207F40:lI101|H10720B1B8 +10720B1B8:lI108|H10720E3A8 +10720E3A8:lI116|H107211538 +107211538:lI111|H107214788 +107214788:lI111|H107217B10 +107217B10:lI108|H10721B000 +10721B000:lI95|H10721E550 +10721E550:lI102|H107221A10 +107221A10:lI103|H107224BB8 +107224BB8:lI114|H107227A30 +107227A30:lI97|H10722A488 +10722A488:lI112|H10722CBC0 +10722CBC0:lI104|H10722F0A8 +10722F0A8:lI46|H1072312A0 +1072312A0:lI98|H1072331A8 +1072331A8:lI101|H107234DD0 +107234DD0:lI97|H107236768 +107236768:lI109|N +107204D00:lI114|H107207F30 +107207F30:lI101|H10720B1A8 +10720B1A8:lI108|H10720E398 +10720E398:lI116|H107211528 +107211528:lI111|H107214778 +107214778:lI111|H107217B00 +107217B00:lI108|H10721AFF0 +10721AFF0:lI95|H10721E540 +10721E540:lI97|H107221A00 +107221A00:lI112|H107224BA8 +107224BA8:lI112|H107227A20 +107227A20:lI95|H10722A478 +10722A478:lI119|H10722CBB0 +10722CBB0:lI105|H10722F098 +10722F098:lI110|H107231290 +107231290:lI46|H107233198 +107233198:lI98|H107234DC0 +107234DC0:lI101|H107236758 +107236758:lI97|H107237EC0 +107237EC0:lI109|N +107204CF0:lI114|H107207F20 +107207F20:lI101|H10720B198 +10720B198:lI108|H10720E388 +10720E388:lI116|H107211518 +107211518:lI111|H107214768 +107214768:lI111|H107217AF0 +107217AF0:lI108|H10721AFE0 +10721AFE0:lI46|H10721E530 +10721E530:lI98|H1072219F0 +1072219F0:lI101|H107224B98 +107224B98:lI97|H107227A10 +107227A10:lI109|N +107204CE0:lI114|H107207F10 +107207F10:lI101|H10720B188 +10720B188:lI108|H10720E378 +10720E378:lI116|H107211508 +107211508:lI111|H107214758 +107214758:lI111|H107217AE0 +107217AE0:lI108|H10721AFD0 +10721AFD0:lI46|H10721E520 +10721E520:lI97|H1072219E0 +1072219E0:lI112|H107224B88 +107224B88:lI112|H107227A00 +107227A00:lI117|H10722A468 +10722A468:lI112|N +107204CD0:lI114|H107207F00 +107207F00:lI101|H10720B178 +10720B178:lI108|H10720E368 +10720E368:lI116|H1072114F8 +1072114F8:lI111|H107214748 +107214748:lI111|H107217AD0 +107217AD0:lI108|H10721AFC0 +10721AFC0:lI46|H10721E510 +10721E510:lI97|H1072219D0 +1072219D0:lI112|H107224B78 +107224B78:lI112|N +1071FE9F0:lI47|H107201B18 +107201B18:lI111|H107204CC0 +107204CC0:lI112|H107207EF0 +107207EF0:lI116|H10720B168 +10720B168:lI47|H10720E358 +10720E358:lI104|H1072114E8 +1072114E8:lI111|H107214738 +107214738:lI109|H107217AC0 +107217AC0:lI101|H10721AFB0 +10721AFB0:lI98|H10721E500 +10721E500:lI114|H1072219C0 +1072219C0:lI101|H107224B68 +107224B68:lI119|H1072279F0 +1072279F0:lI47|H10722A458 +10722A458:lI67|H10722CBA0 +10722CBA0:lI101|H10722F088 +10722F088:lI108|H107231280 +107231280:lI108|H107233188 +107233188:lI97|H107234DB0 +107234DB0:lI114|H107236748 +107236748:lI47|H107237EB0 +107237EB0:lI101|H107239418 +107239418:lI114|H10723A840 +10723A840:lI108|H10723BA60 +10723BA60:lI97|H10723CA90 +10723CA90:lI110|H10723D8F0 +10723D8F0:lI103|H10723E5F0 +10723E5F0:lI47|H10723F1D0 +10723F1D0:lI50|H10723FC60 +10723FC60:lI54|H1072405A0 +1072405A0:lI46|H107240E10 +107240E10:lI48|H1072415A0 +1072415A0:lI46|H107241CC0 +107241CC0:lI50|H107242380 +107242380:lI47|H1072429E0 +1072429E0:lI108|H107242FC0 +107242FC0:lI105|H107243530 +107243530:lI98|H107243A70 +107243A70:lI47|H107243F60 +107243F60:lI101|H107244450 +107244450:lI114|H107244900 +107244900:lI108|H107244D70 +107244D70:lI97|H1072451D0 +1072451D0:lI110|H107245620 +107245620:lI103|H107245A20 +107245A20:lI47|H107245DD0 +107245DD0:lI108|H107246160 +107246160:lI105|H1072464F0 +1072464F0:lI98|H107246880 +107246880:lI47|H107246C10 +107246C10:lI114|H107246F40 +107246F40:lI101|H107247260 +107247260:lI108|H107247570 +107247570:lI116|H107247870 +107247870:lI111|H107247B70 +107247B70:lI111|H107247E50 +107247E50:lI108|H107248110 +107248110:lI45|H1072483D0 +1072483D0:lI49|H107248680 +107248680:lI46|H107248930 +107248930:lI48|H107248BB0 +107248BB0:lI47|H280052C20 +1071FB9D0:lH1071FEA70|H1071FEA88 +1071FEA70:t2:H107201B88,H107201B98 +107201B98:MfD:H107204D90:N,N,N,N,N,N,N,N,N,N,N,N,N +107204D90:tD:H107207FC0,H107207FD0,H107207FE0,H107207FF0,H107208000,H107208010,H107208020,H107208030,H107208040,H107208050,H107208060,H107208070,H107208080 +107208080:lI112|H10720B2F8 +10720B2F8:lI117|H10720E4E8 +10720E4E8:lI98|H107211678 +107211678:lI108|H1072148C8 +1072148C8:lI105|H107217C50 +107217C50:lI99|H10721B140 +10721B140:lI95|H10721E690 +10721E690:lI107|H107221B50 +107221B50:lI101|H107224CF8 +107224CF8:lI121|H107227B70 +107227B70:lI46|H10722A5C8 +10722A5C8:lI98|H10722CD00 +10722CD00:lI101|H10722F1E8 +10722F1E8:lI97|H1072313D0 +1072313D0:lI109|N +107208070:lI112|H10720B2E8 +10720B2E8:lI117|H10720E4D8 +10720E4D8:lI98|H107211668 +107211668:lI108|H1072148B8 +1072148B8:lI105|H107217C40 +107217C40:lI99|H10721B130 +10721B130:lI95|H10721E680 +10721E680:lI107|H107221B40 +107221B40:lI101|H107224CE8 +107224CE8:lI121|H107227B60 +107227B60:lI46|H10722A5B8 +10722A5B8:lI97|H10722CCF0 +10722CCF0:lI112|H10722F1D8 +10722F1D8:lI112|H1072313C0 +1072313C0:lI117|H107233278 +107233278:lI112|N +107208060:lI112|H10720B2D8 +10720B2D8:lI117|H10720E4C8 +10720E4C8:lI98|H107211658 +107211658:lI108|H1072148A8 +1072148A8:lI105|H107217C30 +107217C30:lI99|H10721B120 +10721B120:lI95|H10721E670 +10721E670:lI107|H107221B30 +107221B30:lI101|H107224CD8 +107224CD8:lI121|H107227B50 +107227B50:lI46|H10722A5A8 +10722A5A8:lI97|H10722CCE0 +10722CCE0:lI112|H10722F1C8 +10722F1C8:lI112|N +107208050:lI112|H10720B2C8 +10720B2C8:lI117|H10720E4B8 +10720E4B8:lI98|H107211648 +107211648:lI107|H107214898 +107214898:lI101|H107217C20 +107217C20:lI121|H10721B110 +10721B110:lI95|H10721E660 +10721E660:lI115|H107221B20 +107221B20:lI115|H107224CC8 +107224CC8:lI104|H107227B40 +107227B40:lI46|H10722A598 +10722A598:lI98|H10722CCD0 +10722CCD0:lI101|H10722F1B8 +10722F1B8:lI97|H1072313B0 +1072313B0:lI109|N +107208040:lI112|H10720B2B8 +10720B2B8:lI117|H10720E4A8 +10720E4A8:lI98|H107211638 +107211638:lI107|H107214888 +107214888:lI101|H107217C10 +107217C10:lI121|H10721B100 +10721B100:lI95|H10721E650 +10721E650:lI112|H107221B10 +107221B10:lI101|H107224CB8 +107224CB8:lI109|H107227B30 +107227B30:lI46|H10722A588 +10722A588:lI98|H10722CCC0 +10722CCC0:lI101|H10722F1A8 +10722F1A8:lI97|H1072313A0 +1072313A0:lI109|N +107208030:lI112|H10720B2A8 +10720B2A8:lI117|H10720E498 +10720E498:lI98|H107211628 +107211628:lI107|H107214878 +107214878:lI101|H107217C00 +107217C00:lI121|H10721B0F0 +10721B0F0:lI95|H10721E640 +10721E640:lI112|H107221B00 +107221B00:lI98|H107224CA8 +107224CA8:lI101|H107227B20 +107227B20:lI46|H10722A578 +10722A578:lI98|H10722CCB0 +10722CCB0:lI101|H10722F198 +10722F198:lI97|H107231390 +107231390:lI109|N +107208020:lI112|H10720B298 +10720B298:lI117|H10720E488 +10720E488:lI98|H107211618 +107211618:lI107|H107214868 +107214868:lI101|H107217BF0 +107217BF0:lI121|H10721B0E0 +10721B0E0:lI95|H10721E630 +10721E630:lI111|H107221AF0 +107221AF0:lI115|H107224C98 +107224C98:lI95|H107227B10 +107227B10:lI99|H10722A568 +10722A568:lI97|H10722CCA0 +10722CCA0:lI99|H10722F188 +10722F188:lI101|H107231380 +107231380:lI114|H107233268 +107233268:lI116|H107234E60 +107234E60:lI115|H1072367E8 +1072367E8:lI46|H107237F20 +107237F20:lI98|H107239458 +107239458:lI101|H10723A880 +10723A880:lI97|H10723BAA0 +10723BAA0:lI109|N +107208010:lI112|H10720B288 +10720B288:lI117|H10720E478 +10720E478:lI98|H107211608 +107211608:lI107|H107214858 +107214858:lI101|H107217BE0 +107217BE0:lI121|H10721B0D0 +10721B0D0:lI95|H10721E620 +10721E620:lI111|H107221AE0 +107221AE0:lI99|H107224C88 +107224C88:lI115|H107227B00 +107227B00:lI112|H10722A558 +10722A558:lI46|H10722CC90 +10722CC90:lI98|H10722F178 +10722F178:lI101|H107231370 +107231370:lI97|H107233258 +107233258:lI109|N +107208000:lI112|H10720B278 +10720B278:lI117|H10720E468 +10720E468:lI98|H1072115F8 +1072115F8:lI107|H107214848 +107214848:lI101|H107217BD0 +107217BD0:lI121|H10721B0C0 +10721B0C0:lI95|H10721E610 +10721E610:lI99|H107221AD0 +107221AD0:lI114|H107224C78 +107224C78:lI108|H107227AF0 +107227AF0:lI46|H10722A548 +10722A548:lI98|H10722CC80 +10722CC80:lI101|H10722F168 +10722F168:lI97|H107231360 +107231360:lI109|N +107207FF0:lI112|H10720B268 +10720B268:lI117|H10720E458 +10720E458:lI98|H1072115E8 +1072115E8:lI107|H107214838 +107214838:lI101|H107217BC0 +107217BC0:lI121|H10721B0B0 +10721B0B0:lI95|H10721E600 +10721E600:lI99|H107221AC0 +107221AC0:lI101|H107224C68 +107224C68:lI114|H107227AE0 +107227AE0:lI116|H10722A538 +10722A538:lI95|H10722CC70 +10722CC70:lI114|H10722F158 +10722F158:lI101|H107231350 +107231350:lI99|H107233248 +107233248:lI111|H107234E50 +107234E50:lI114|H1072367D8 +1072367D8:lI100|H107237F10 +107237F10:lI115|H107239448 +107239448:lI46|H10723A870 +10723A870:lI98|H10723BA90 +10723BA90:lI101|H10723CAB0 +10723CAB0:lI97|H10723D910 +10723D910:lI109|N +107207FE0:lI112|H10720B258 +10720B258:lI117|H10720E448 +10720E448:lI98|H1072115D8 +1072115D8:lI107|H107214828 +107214828:lI101|H107217BB0 +107217BB0:lI121|H10721B0A0 +10721B0A0:lI95|H10721E5F0 +10721E5F0:lI99|H107221AB0 +107221AB0:lI101|H107224C58 +107224C58:lI114|H107227AD0 +107227AD0:lI116|H10722A528 +10722A528:lI46|H10722CC60 +10722CC60:lI98|H10722F148 +10722F148:lI101|H107231340 +107231340:lI97|H107233238 +107233238:lI109|N +107207FD0:lI80|H10720B248 +10720B248:lI75|H10720E438 +10720E438:lI67|H1072115C8 +1072115C8:lI83|H107214818 +107214818:lI45|H107217BA0 +107217BA0:lI70|H10721B090 +10721B090:lI82|H10721E5E0 +10721E5E0:lI65|H107221AA0 +107221AA0:lI77|H107224C48 +107224C48:lI69|H107227AC0 +107227AC0:lI46|H10722A518 +10722A518:lI98|H10722CC50 +10722CC50:lI101|H10722F138 +10722F138:lI97|H107231330 +107231330:lI109|N +107207FC0:lI79|H10720B238 +10720B238:lI84|H10720E428 +10720E428:lI80|H1072115B8 +1072115B8:lI45|H107214808 +107214808:lI80|H107217B90 +107217B90:lI85|H10721B080 +10721B080:lI66|H10721E5D0 +10721E5D0:lI45|H107221A90 +107221A90:lI75|H107224C38 +107224C38:lI69|H107227AB0 +107227AB0:lI89|H10722A508 +10722A508:lI46|H10722CC40 +10722CC40:lI98|H10722F128 +10722F128:lI101|H107231320 +107231320:lI97|H107233228 +107233228:lI109|N +107201B88:lI47|H107204D80 +107204D80:lI111|H107207FB0 +107207FB0:lI112|H10720B228 +10720B228:lI116|H10720E418 +10720E418:lI47|H1072115A8 +1072115A8:lI104|H1072147F8 +1072147F8:lI111|H107217B80 +107217B80:lI109|H10721B070 +10721B070:lI101|H10721E5C0 +10721E5C0:lI98|H107221A80 +107221A80:lI114|H107224C28 +107224C28:lI101|H107227AA0 +107227AA0:lI119|H10722A4F8 +10722A4F8:lI47|H10722CC30 +10722CC30:lI67|H10722F118 +10722F118:lI101|H107231310 +107231310:lI108|H107233218 +107233218:lI108|H107234E40 +107234E40:lI97|H1072367C8 +1072367C8:lI114|H107237F00 +107237F00:lI47|H107239438 +107239438:lI101|H10723A860 +10723A860:lI114|H10723BA80 +10723BA80:lI108|H10723CAA0 +10723CAA0:lI97|H10723D900 +10723D900:lI110|H10723E600 +10723E600:lI103|H10723F1E0 +10723F1E0:lI47|H10723FC70 +10723FC70:lI50|H1072405B0 +1072405B0:lI54|H107240E20 +107240E20:lI46|H1072415B0 +1072415B0:lI48|H107241CD0 +107241CD0:lI46|H107242390 +107242390:lI50|H1072429F0 +1072429F0:lI47|H107242FD0 +107242FD0:lI108|H107243540 +107243540:lI105|H107243A80 +107243A80:lI98|H107243F70 +107243F70:lI47|H107244460 +107244460:lI101|H107244910 +107244910:lI114|H107244D80 +107244D80:lI108|H1072451E0 +1072451E0:lI97|H107245630 +107245630:lI110|H107245A30 +107245A30:lI103|H107245DE0 +107245DE0:lI47|H107246170 +107246170:lI108|H107246500 +107246500:lI105|H107246890 +107246890:lI98|H107246C20 +107246C20:lI47|H107246F50 +107246F50:lI112|H107247270 +107247270:lI117|H107247580 +107247580:lI98|H107247880 +107247880:lI108|H107247B80 +107247B80:lI105|H107247E60 +107247E60:lI99|H107248120 +107248120:lI95|H1072483E0 +1072483E0:lI107|H107248690 +107248690:lI101|H107248940 +107248940:lI121|H107248BC0 +107248BC0:lI45|H107248E30 +107248E30:lI49|H1072490A0 +1072490A0:lI46|H107249310 +107249310:lI49|H107249570 +107249570:lI52|H1072497D0 +1072497D0:lI47|H280052C20 +1071FEA88:lH107201C18|H107201C30 +107201C18:t2:H107204E00,H107204E10 +107204E10:Mf6:H1072080A0:N,N,N,N,N,N +1072080A0:t6:H10720B318,H10720B328,H10720B338,H10720B348,H10720B358,H10720B368 +10720B368:lI121|H10720E558 +10720E558:lI101|H1072116E8 +1072116E8:lI99|H107214938 +107214938:lI99|H107217CC0 +107217CC0:lI115|H10721B1B0 +10721B1B0:lI99|H10721E700 +10721E700:lI97|H107221BC0 +107221BC0:lI110|H107224D68 +107224D68:lI46|H107227BC0 +107227BC0:lI98|H10722A618 +10722A618:lI101|H10722CD50 +10722CD50:lI97|H10722F238 +10722F238:lI109|N +10720B358:lI121|H10720E548 +10720E548:lI101|H1072116D8 +1072116D8:lI99|H107214928 +107214928:lI99|H107217CB0 +107217CB0:lI112|H10721B1A0 +10721B1A0:lI97|H10721E6F0 +10721E6F0:lI114|H107221BB0 +107221BB0:lI115|H107224D58 +107224D58:lI101|H107227BB0 +107227BB0:lI114|H10722A608 +10722A608:lI46|H10722CD40 +10722CD40:lI98|H10722F228 +10722F228:lI101|H107231410 +107231410:lI97|H1072332A8 +1072332A8:lI109|N +10720B348:lI121|H10720E538 +10720E538:lI101|H1072116C8 +1072116C8:lI99|H107214918 +107214918:lI99|H107217CA0 +107217CA0:lI46|H10721B190 +10721B190:lI98|H10721E6E0 +10721E6E0:lI101|H107221BA0 +107221BA0:lI97|H107224D48 +107224D48:lI109|N +10720B338:lI112|H10720E528 +10720E528:lI97|H1072116B8 +1072116B8:lI114|H107214908 +107214908:lI115|H107217C90 +107217C90:lI101|H10721B180 +10721B180:lI116|H10721E6D0 +10721E6D0:lI111|H107221B90 +107221B90:lI111|H107224D38 +107224D38:lI108|H107227BA0 +107227BA0:lI115|H10722A5F8 +10722A5F8:lI46|H10722CD30 +10722CD30:lI97|H10722F218 +10722F218:lI112|H107231400 +107231400:lI112|H107233298 +107233298:lI117|H107234E80 +107234E80:lI112|N +10720B328:lI112|H10720E518 +10720E518:lI97|H1072116A8 +1072116A8:lI114|H1072148F8 +1072148F8:lI115|H107217C80 +107217C80:lI101|H10721B170 +10721B170:lI116|H10721E6C0 +10721E6C0:lI111|H107221B80 +107221B80:lI111|H107224D28 +107224D28:lI108|H107227B90 +107227B90:lI115|H10722A5E8 +10722A5E8:lI46|H10722CD20 +10722CD20:lI97|H10722F208 +10722F208:lI112|H1072313F0 +1072313F0:lI112|N +10720B318:lI108|H10720E508 +10720E508:lI101|H107211698 +107211698:lI101|H1072148E8 +1072148E8:lI120|H107217C70 +107217C70:lI46|H10721B160 +10721B160:lI98|H10721E6B0 +10721E6B0:lI101|H107221B70 +107221B70:lI97|H107224D18 +107224D18:lI109|N +107204E00:lI47|H107208090 +107208090:lI111|H10720B308 +10720B308:lI112|H10720E4F8 +10720E4F8:lI116|H107211688 +107211688:lI47|H1072148D8 +1072148D8:lI104|H107217C60 +107217C60:lI111|H10721B150 +10721B150:lI109|H10721E6A0 +10721E6A0:lI101|H107221B60 +107221B60:lI98|H107224D08 +107224D08:lI114|H107227B80 +107227B80:lI101|H10722A5D8 +10722A5D8:lI119|H10722CD10 +10722CD10:lI47|H10722F1F8 +10722F1F8:lI67|H1072313E0 +1072313E0:lI101|H107233288 +107233288:lI108|H107234E70 +107234E70:lI108|H1072367F8 +1072367F8:lI97|H107237F30 +107237F30:lI114|H107239468 +107239468:lI47|H10723A890 +10723A890:lI101|H10723BAB0 +10723BAB0:lI114|H10723CAC0 +10723CAC0:lI108|H10723D920 +10723D920:lI97|H10723E610 +10723E610:lI110|H10723F1F0 +10723F1F0:lI103|H10723FC80 +10723FC80:lI47|H1072405C0 +1072405C0:lI50|H107240E30 +107240E30:lI54|H1072415C0 +1072415C0:lI46|H107241CE0 +107241CE0:lI48|H1072423A0 +1072423A0:lI46|H107242A00 +107242A00:lI50|H107242FE0 +107242FE0:lI47|H107243550 +107243550:lI108|H107243A90 +107243A90:lI105|H107243F80 +107243F80:lI98|H107244470 +107244470:lI47|H107244920 +107244920:lI101|H107244D90 +107244D90:lI114|H1072451F0 +1072451F0:lI108|H107245640 +107245640:lI97|H107245A40 +107245A40:lI110|H107245DF0 +107245DF0:lI103|H107246180 +107246180:lI47|H107246510 +107246510:lI108|H1072468A0 +1072468A0:lI105|H107246C30 +107246C30:lI98|H107246F60 +107246F60:lI47|H107247280 +107247280:lI112|H107247590 +107247590:lI97|H107247890 +107247890:lI114|H107247B90 +107247B90:lI115|H107247E70 +107247E70:lI101|H107248130 +107248130:lI116|H1072483F0 +1072483F0:lI111|H1072486A0 +1072486A0:lI111|H107248950 +107248950:lI108|H107248BD0 +107248BD0:lI115|H107248E40 +107248E40:lI45|H1072490B0 +1072490B0:lI50|H107249320 +107249320:lI46|H107249580 +107249580:lI53|H1072497E0 +1072497E0:lI47|H280052C20 +107201C30:lH107204E58|H107204E70 +107204E58:t2:H1072080D8,H1072080E8 +1072080E8:MfA:H10720B388:N,N,N,N,N,N,N,N,N,N +10720B388:tA:H10720E578,H10720E588,H10720E598,H10720E5A8,H10720E5B8,H10720E5C8,H10720E5D8,H10720E5E8,H10720E5F8,H10720E608 +10720E608:lI111|H107211798 +107211798:lI115|H1072149E8 +1072149E8:lI95|H107217D70 +107217D70:lI115|H10721B260 +10721B260:lI117|H10721E7B0 +10721E7B0:lI112|H107221C70 +107221C70:lI46|H107224E18 +107224E18:lI98|H107227C70 +107227C70:lI101|H10722A6C8 +10722A6C8:lI97|H10722CDF0 +10722CDF0:lI109|N +10720E5F8:lI111|H107211788 +107211788:lI115|H1072149D8 +1072149D8:lI95|H107217D60 +107217D60:lI109|H10721B250 +10721B250:lI111|H10721E7A0 +10721E7A0:lI110|H107221C60 +107221C60:lI95|H107224E08 +107224E08:lI115|H107227C60 +107227C60:lI121|H10722A6B8 +10722A6B8:lI115|H10722CDE0 +10722CDE0:lI105|H10722F2A8 +10722F2A8:lI110|H107231450 +107231450:lI102|H1072332E8 +1072332E8:lI111|H107234EC0 +107234EC0:lI46|H107236818 +107236818:lI98|H107237F50 +107237F50:lI101|H107239488 +107239488:lI97|H10723A8B0 +10723A8B0:lI109|N +10720E5E8:lI111|H107211778 +107211778:lI115|H1072149C8 +1072149C8:lI95|H107217D50 +107217D50:lI109|H10721B240 +10721B240:lI111|H10721E790 +10721E790:lI110|H107221C50 +107221C50:lI95|H107224DF8 +107224DF8:lI109|H107227C50 +107227C50:lI105|H10722A6A8 +10722A6A8:lI98|H10722CDD0 +10722CDD0:lI46|H10722F298 +10722F298:lI98|H107231440 +107231440:lI101|H1072332D8 +1072332D8:lI97|H107234EB0 +107234EB0:lI109|N +10720E5D8:lI111|H107211768 +107211768:lI115|H1072149B8 +1072149B8:lI95|H107217D40 +107217D40:lI109|H10721B230 +10721B230:lI111|H10721E780 +10721E780:lI110|H107221C40 +107221C40:lI46|H107224DE8 +107224DE8:lI98|H107227C40 +107227C40:lI101|H10722A698 +10722A698:lI97|H10722CDC0 +10722CDC0:lI109|N +10720E5C8:lI111|H107211758 +107211758:lI115|H1072149A8 +1072149A8:lI95|H107217D30 +107217D30:lI109|H10721B220 +10721B220:lI111|H10721E770 +10721E770:lI110|H107221C30 +107221C30:lI46|H107224DD8 +107224DD8:lI97|H107227C30 +107227C30:lI112|H10722A688 +10722A688:lI112|H10722CDB0 +10722CDB0:lI117|H10722F288 +10722F288:lI112|N +10720E5B8:lI111|H107211748 +107211748:lI115|H107214998 +107214998:lI95|H107217D20 +107217D20:lI109|H10721B210 +10721B210:lI111|H10721E760 +10721E760:lI110|H107221C20 +107221C20:lI46|H107224DC8 +107224DC8:lI97|H107227C20 +107227C20:lI112|H10722A678 +10722A678:lI112|N +10720E5A8:lI110|H107211738 +107211738:lI116|H107214988 +107214988:lI101|H107217D10 +107217D10:lI118|H10721B200 +10721B200:lI101|H10721E750 +10721E750:lI110|H107221C10 +107221C10:lI116|H107224DB8 +107224DB8:lI108|H107227C10 +107227C10:lI111|H10722A668 +10722A668:lI103|H10722CDA0 +10722CDA0:lI46|H10722F278 +10722F278:lI98|H107231430 +107231430:lI101|H1072332C8 +1072332C8:lI97|H107234EA0 +107234EA0:lI109|N +10720E598:lI109|H107211728 +107211728:lI101|H107214978 +107214978:lI109|H107217D00 +107217D00:lI115|H10721B1F0 +10721B1F0:lI117|H10721E740 +10721E740:lI112|H107221C00 +107221C00:lI46|H107224DA8 +107224DA8:lI98|H107227C00 +107227C00:lI101|H10722A658 +10722A658:lI97|H10722CD90 +10722CD90:lI109|N +10720E588:lI100|H107211718 +107211718:lI105|H107214968 +107214968:lI115|H107217CF0 +107217CF0:lI107|H10721B1E0 +10721B1E0:lI115|H10721E730 +10721E730:lI117|H107221BF0 +107221BF0:lI112|H107224D98 +107224D98:lI46|H107227BF0 +107227BF0:lI98|H10722A648 +10722A648:lI101|H10722CD80 +10722CD80:lI97|H10722F268 +10722F268:lI109|N +10720E578:lI99|H107211708 +107211708:lI112|H107214958 +107214958:lI117|H107217CE0 +107217CE0:lI95|H10721B1D0 +10721B1D0:lI115|H10721E720 +10721E720:lI117|H107221BE0 +107221BE0:lI112|H107224D88 +107224D88:lI46|H107227BE0 +107227BE0:lI98|H10722A638 +10722A638:lI101|H10722CD70 +10722CD70:lI97|H10722F258 +10722F258:lI109|N +1072080D8:lI47|H10720B378 +10720B378:lI111|H10720E568 +10720E568:lI112|H1072116F8 +1072116F8:lI116|H107214948 +107214948:lI47|H107217CD0 +107217CD0:lI104|H10721B1C0 +10721B1C0:lI111|H10721E710 +10721E710:lI109|H107221BD0 +107221BD0:lI101|H107224D78 +107224D78:lI98|H107227BD0 +107227BD0:lI114|H10722A628 +10722A628:lI101|H10722CD60 +10722CD60:lI119|H10722F248 +10722F248:lI47|H107231420 +107231420:lI67|H1072332B8 +1072332B8:lI101|H107234E90 +107234E90:lI108|H107236808 +107236808:lI108|H107237F40 +107237F40:lI97|H107239478 +107239478:lI114|H10723A8A0 +10723A8A0:lI47|H10723BAC0 +10723BAC0:lI101|H10723CAD0 +10723CAD0:lI114|H10723D930 +10723D930:lI108|H10723E620 +10723E620:lI97|H10723F200 +10723F200:lI110|H10723FC90 +10723FC90:lI103|H1072405D0 +1072405D0:lI47|H107240E40 +107240E40:lI50|H1072415D0 +1072415D0:lI54|H107241CF0 +107241CF0:lI46|H1072423B0 +1072423B0:lI48|H107242A10 +107242A10:lI46|H107242FF0 +107242FF0:lI50|H107243560 +107243560:lI47|H107243AA0 +107243AA0:lI108|H107243F90 +107243F90:lI105|H107244480 +107244480:lI98|H107244930 +107244930:lI47|H107244DA0 +107244DA0:lI101|H107245200 +107245200:lI114|H107245650 +107245650:lI108|H107245A50 +107245A50:lI97|H107245E00 +107245E00:lI110|H107246190 +107246190:lI103|H107246520 +107246520:lI47|H1072468B0 +1072468B0:lI108|H107246C40 +107246C40:lI105|H107246F70 +107246F70:lI98|H107247290 +107247290:lI47|H1072475A0 +1072475A0:lI111|H1072478A0 +1072478A0:lI115|H107247BA0 +107247BA0:lI95|H107247E80 +107247E80:lI109|H107248140 +107248140:lI111|H107248400 +107248400:lI110|H1072486B0 +1072486B0:lI45|H107248960 +107248960:lI50|H107248BE0 +107248BE0:lI46|H107248E50 +107248E50:lI57|H1072490C0 +1072490C0:lI47|H280052C20 +107204E70:lH107208150|H107208168 +107208150:t2:H10720B3E0,H10720B3F0 +10720B3F0:Mf5:H10720E628:N,N,N,N,N +10720E628:t5:H1072117B8,H1072117C8,H1072117D8,H1072117E8,H1072117F8 +1072117F8:lI111|H107214A48 +107214A48:lI100|H107217DD0 +107217DD0:lI98|H10721B2C0 +10721B2C0:lI99|H10721E810 +10721E810:lI95|H107221CD0 +107221CD0:lI115|H107224E78 +107224E78:lI117|H107227CD0 +107227CD0:lI112|H10722A718 +10722A718:lI46|H10722CE30 +10722CE30:lI98|H10722F2D8 +10722F2D8:lI101|H107231480 +107231480:lI97|H107233318 +107233318:lI109|N +1072117E8:lI111|H107214A38 +107214A38:lI100|H107217DC0 +107217DC0:lI98|H10721B2B0 +10721B2B0:lI99|H10721E800 +10721E800:lI95|H107221CC0 +107221CC0:lI97|H107224E68 +107224E68:lI112|H107227CC0 +107227CC0:lI112|H10722A708 +10722A708:lI46|H10722CE20 +10722CE20:lI98|H10722F2C8 +10722F2C8:lI101|H107231470 +107231470:lI97|H107233308 +107233308:lI109|N +1072117D8:lI111|H107214A28 +107214A28:lI100|H107217DB0 +107217DB0:lI98|H10721B2A0 +10721B2A0:lI99|H10721E7F0 +10721E7F0:lI46|H107221CB0 +107221CB0:lI98|H107224E58 +107224E58:lI101|H107227CB0 +107227CB0:lI97|H10722A6F8 +10722A6F8:lI109|N +1072117C8:lI111|H107214A18 +107214A18:lI100|H107217DA0 +107217DA0:lI98|H10721B290 +10721B290:lI99|H10721E7E0 +10721E7E0:lI46|H107221CA0 +107221CA0:lI97|H107224E48 +107224E48:lI112|H107227CA0 +107227CA0:lI112|H10722A6E8 +10722A6E8:lI117|H10722CE10 +10722CE10:lI112|N +1072117B8:lI111|H107214A08 +107214A08:lI100|H107217D90 +107217D90:lI98|H10721B280 +10721B280:lI99|H10721E7D0 +10721E7D0:lI46|H107221C90 +107221C90:lI97|H107224E38 +107224E38:lI112|H107227C90 +107227C90:lI112|N +10720B3E0:lI47|H10720E618 +10720E618:lI111|H1072117A8 +1072117A8:lI112|H1072149F8 +1072149F8:lI116|H107217D80 +107217D80:lI47|H10721B270 +10721B270:lI104|H10721E7C0 +10721E7C0:lI111|H107221C80 +107221C80:lI109|H107224E28 +107224E28:lI101|H107227C80 +107227C80:lI98|H10722A6D8 +10722A6D8:lI114|H10722CE00 +10722CE00:lI101|H10722F2B8 +10722F2B8:lI119|H107231460 +107231460:lI47|H1072332F8 +1072332F8:lI67|H107234ED0 +107234ED0:lI101|H107236828 +107236828:lI108|H107237F60 +107237F60:lI108|H107239498 +107239498:lI97|H10723A8C0 +10723A8C0:lI114|H10723BAD0 +10723BAD0:lI47|H10723CAE0 +10723CAE0:lI101|H10723D940 +10723D940:lI114|H10723E630 +10723E630:lI108|H10723F210 +10723F210:lI97|H10723FCA0 +10723FCA0:lI110|H1072405E0 +1072405E0:lI103|H107240E50 +107240E50:lI47|H1072415E0 +1072415E0:lI50|H107241D00 +107241D00:lI54|H1072423C0 +1072423C0:lI46|H107242A20 +107242A20:lI48|H107243000 +107243000:lI46|H107243570 +107243570:lI50|H107243AB0 +107243AB0:lI47|H107243FA0 +107243FA0:lI108|H107244490 +107244490:lI105|H107244940 +107244940:lI98|H107244DB0 +107244DB0:lI47|H107245210 +107245210:lI101|H107245660 +107245660:lI114|H107245A60 +107245A60:lI108|H107245E10 +107245E10:lI97|H1072461A0 +1072461A0:lI110|H107246530 +107246530:lI103|H1072468C0 +1072468C0:lI47|H107246C50 +107246C50:lI108|H107246F80 +107246F80:lI105|H1072472A0 +1072472A0:lI98|H1072475B0 +1072475B0:lI47|H1072478B0 +1072478B0:lI111|H107247BB0 +107247BB0:lI100|H107247E90 +107247E90:lI98|H107248150 +107248150:lI99|H107248410 +107248410:lI45|H1072486C0 +1072486C0:lI50|H107248970 +107248970:lI46|H107248BF0 +107248BF0:lI49|H107248E60 +107248E60:lI52|H1072490D0 +1072490D0:lI46|H107249330 +107249330:lI49|H107249590 +107249590:lI47|H280052C20 +107208168:lH10720B430|H10720B448 +10720B430:t2:H10720E658,H10720E668 +10720E668:Mh2E:F:H107211818,H107211830,H107211848,H107211878,H107211890,H1072118B0,H1072118C0,H107211900,H107211918,H107211930,H107211940,H107211958,H107211988,H1072119A8,H1072119C0 +107211818:Mn2:H107214A68,H107214A78 +107214A68:lH107217DF0|N +107217DF0:lI99|H10721B2E0 +10721B2E0:lI100|H10721E830 +10721E830:lI118|H107221CF0 +107221CF0:lI95|H107224E98 +107224E98:lI112|H107227CF0 +107227CF0:lI111|H10722A738 +10722A738:lI114|H10722CE50 +10722CE50:lI116|H10722F2F8 +10722F2F8:lI95|H1072314A0 +1072314A0:lI99|H107233338 +107233338:lI98|H107234EF0 +107234EF0:lI46|H107236848 +107236848:lI98|H107237F80 +107237F80:lI101|H1072394B8 +1072394B8:lI97|H10723A8E0 +10723A8E0:lI109|N +107214A78:lH107217E00|N +107217E00:lI99|H10721B2F0 +10721B2F0:lI100|H10721E840 +10721E840:lI118|H107221D00 +107221D00:lI95|H107224EA8 +107224EA8:lI109|H107227D00 +107227D00:lI111|H10722A748 +10722A748:lI100|H10722CE60 +10722CE60:lI95|H10722F308 +10722F308:lI99|H1072314B0 +1072314B0:lI98|H107233348 +107233348:lI46|H107234F00 +107234F00:lI98|H107236858 +107236858:lI101|H107237F90 +107237F90:lI97|H1072394C8 +1072394C8:lI109|N +1072119C0:Mn2:H107214CF0,H107214D10 +107214CF0:Mn3:H107218090,H1072180A0,H1072180B0 +107218090:lH10721B580|N +10721B580:lI99|H10721EAD0 +10721EAD0:lI100|H107221F90 +107221F90:lI118|H107225138 +107225138:lI95|H107227F90 +107227F90:lI112|H10722A9D8 +10722A9D8:lI101|H10722D0F0 +10722D0F0:lI114|H10722F588 +10722F588:lI115|H107231720 +107231720:lI105|H1072335B8 +1072335B8:lI115|H107235150 +107235150:lI116|H107236A98 +107236A98:lI101|H1072381A0 +1072381A0:lI110|H1072396B8 +1072396B8:lI116|H10723AA90 +10723AA90:lI95|H10723BC30 +10723BC30:lI99|H10723CC00 +10723CC00:lI98|H10723DA40 +10723DA40:lI46|H10723E720 +10723E720:lI98|H10723F2D0 +10723F2D0:lI101|H10723FD30 +10723FD30:lI97|H107240630 +107240630:lI109|N +1072180B0:lH10721B5A0|N +10721B5A0:lI111|H10721EAF0 +10721EAF0:lI98|H107221FB0 +107221FB0:lI115|H107225158 +107225158:lI101|H107227FB0 +107227FB0:lI114|H10722A9F8 +10722A9F8:lI118|H10722D110 +10722D110:lI101|H10722F5A8 +10722F5A8:lI114|H107231740 +107231740:lI95|H1072335D8 +1072335D8:lI97|H107235170 +107235170:lI108|H107236AB8 +107236AB8:lI108|H1072381C0 +1072381C0:lI111|H1072396D8 +1072396D8:lI99|H10723AAB0 +10723AAB0:lI95|H10723BC50 +10723BC50:lI119|H10723CC20 +10723CC20:lI120|H10723DA50 +10723DA50:lI46|H10723E730 +10723E730:lI98|H10723F2E0 +10723F2E0:lI101|H10723FD40 +10723FD40:lI97|H107240640 +107240640:lI109|N +1072180A0:lH10721B590|N +10721B590:lI99|H10721EAE0 +10721EAE0:lI100|H107221FA0 +107221FA0:lI118|H107225148 +107225148:lI95|H107227FA0 +107227FA0:lI109|H10722A9E8 +10722A9E8:lI117|H10722D100 +10722D100:lI108|H10722F598 +10722F598:lI116|H107231730 +107231730:lI105|H1072335C8 +1072335C8:lI95|H107235160 +107235160:lI119|H107236AA8 +107236AA8:lI120|H1072381B0 +1072381B0:lI46|H1072396C8 +1072396C8:lI98|H10723AAA0 +10723AAA0:lI101|H10723BC40 +10723BC40:lI97|H10723CC10 +10723CC10:lI109|N +107214D10:lH1072180C0|N +1072180C0:lI111|H10721B5B0 +10721B5B0:lI98|H10721EB00 +10721EB00:lI115|H107221FC0 +107221FC0:lI101|H107225168 +107225168:lI114|H107227FC0 +107227FC0:lI118|H10722AA08 +10722AA08:lI101|H10722D120 +10722D120:lI114|H10722F5B8 +10722F5B8:lI95|H107231750 +107231750:lI116|H1072335E8 +1072335E8:lI118|H107235180 +107235180:lI95|H107236AC8 +107236AC8:lI119|H1072381D0 +1072381D0:lI120|H1072396E8 +1072396E8:lI46|H10723AAC0 +10723AAC0:lI98|H10723BC60 +10723BC60:lI101|H10723CC30 +10723CC30:lI97|H10723DA60 +10723DA60:lI109|N +1072119A8:Mn2:H107214CD0,H107214CE0 +107214CD0:lH107218070|N +107218070:lI111|H10721B560 +10721B560:lI98|H10721EAB0 +10721EAB0:lI115|H107221F70 +107221F70:lI101|H107225118 +107225118:lI114|H107227F70 +107227F70:lI118|H10722A9B8 +10722A9B8:lI101|H10722D0D0 +10722D0D0:lI114|H10722F568 +10722F568:lI95|H107231700 +107231700:lI104|H107233598 +107233598:lI116|H107235130 +107235130:lI109|H107236A78 +107236A78:lI108|H107238180 +107238180:lI95|H107239698 +107239698:lI108|H10723AA80 +10723AA80:lI105|H10723BC20 +10723BC20:lI98|H10723CBF0 +10723CBF0:lI46|H10723DA30 +10723DA30:lI98|H10723E710 +10723E710:lI101|H10723F2C0 +10723F2C0:lI97|H10723FD20 +10723FD20:lI109|N +107214CE0:lH107218080|N +107218080:lI99|H10721B570 +10721B570:lI100|H10721EAC0 +10721EAC0:lI118|H107221F80 +107221F80:lI95|H107225128 +107225128:lI103|H107227F80 +107227F80:lI101|H10722A9C8 +10722A9C8:lI110|H10722D0E0 +10722D0E0:lI95|H10722F578 +10722F578:lI99|H107231710 +107231710:lI98|H1072335A8 +1072335A8:lI46|H107235140 +107235140:lI98|H107236A88 +107236A88:lI101|H107238190 +107238190:lI97|H1072396A8 +1072396A8:lI109|N +107211988:Mn3:H107214C98,H107214CA8,H107214CB8 +107214C98:lH107218030|N +107218030:lI111|H10721B520 +10721B520:lI98|H10721EA70 +10721EA70:lI115|H107221F30 +107221F30:lI101|H1072250D8 +1072250D8:lI114|H107227F30 +107227F30:lI118|H10722A978 +10722A978:lI101|H10722D090 +10722D090:lI114|H10722F528 +10722F528:lI46|H1072316C0 +1072316C0:lI98|H107233558 +107233558:lI101|H1072350F0 +1072350F0:lI97|H107236A38 +107236A38:lI109|N +107214CB8:Mn2:H107218050,H107218060 +107218050:lH10721B540|N +10721B540:lI111|H10721EA90 +10721EA90:lI98|H107221F50 +107221F50:lI115|H1072250F8 +1072250F8:lI101|H107227F50 +107227F50:lI114|H10722A998 +10722A998:lI118|H10722D0B0 +10722D0B0:lI101|H10722F548 +10722F548:lI114|H1072316E0 +1072316E0:lI95|H107233578 +107233578:lI116|H107235110 +107235110:lI114|H107236A58 +107236A58:lI97|H107238170 +107238170:lI99|H107239688 +107239688:lI101|H10723AA70 +10723AA70:lI111|H10723BC10 +10723BC10:lI112|H10723CBE0 +10723CBE0:lI116|H10723DA20 +10723DA20:lI105|H10723E700 +10723E700:lI111|H10723F2B0 +10723F2B0:lI110|H10723FD10 +10723FD10:lI115|H107240620 +107240620:lI95|H107240E80 +107240E80:lI119|H107241600 +107241600:lI120|H107241D20 +107241D20:lI46|H1072423E0 +1072423E0:lI98|H107242A40 +107242A40:lI101|H107243020 +107243020:lI97|H107243590 +107243590:lI109|N +107218060:lH10721B550|N +10721B550:lI111|H10721EAA0 +10721EAA0:lI98|H107221F60 +107221F60:lI115|H107225108 +107225108:lI101|H107227F60 +107227F60:lI114|H10722A9A8 +10722A9A8:lI118|H10722D0C0 +10722D0C0:lI101|H10722F558 +10722F558:lI114|H1072316F0 +1072316F0:lI46|H107233588 +107233588:lI97|H107235120 +107235120:lI112|H107236A68 +107236A68:lI112|N +107214CA8:lH107218040|N +107218040:lI101|H10721B530 +10721B530:lI116|H10721EA80 +10721EA80:lI111|H107221F40 +107221F40:lI112|H1072250E8 +1072250E8:lI95|H107227F40 +107227F40:lI116|H10722A988 +10722A988:lI120|H10722D0A0 +10722D0A0:lI116|H10722F538 +10722F538:lI46|H1072316D0 +1072316D0:lI98|H107233568 +107233568:lI101|H107235100 +107235100:lI97|H107236A48 +107236A48:lI109|N +107211958:Mn5:H107214C48,H107214C58,H107214C68,H107214C78,H107214C88 +107214C48:lH107217FE0|N +107217FE0:lI99|H10721B4D0 +10721B4D0:lI100|H10721EA20 +10721EA20:lI118|H107221EE0 +107221EE0:lI95|H107225088 +107225088:lI112|H107227EE0 +107227EE0:lI114|H10722A928 +10722A928:lI111|H10722D040 +10722D040:lI99|H10722F4D8 +10722F4D8:lI95|H107231680 +107231680:lI99|H107233518 +107233518:lI98|H1072350B0 +1072350B0:lI46|H1072369F8 +1072369F8:lI98|H107238130 +107238130:lI101|H107239648 +107239648:lI97|H10723AA30 +10723AA30:lI109|N +107214C88:lH107218020|N +107218020:lI111|H10721B510 +10721B510:lI98|H10721EA60 +10721EA60:lI115|H107221F20 +107221F20:lI101|H1072250C8 +1072250C8:lI114|H107227F20 +107227F20:lI118|H10722A968 +10722A968:lI101|H10722D080 +10722D080:lI114|H10722F518 +10722F518:lI95|H1072316B0 +1072316B0:lI116|H107233548 +107233548:lI118|H1072350E0 +1072350E0:lI95|H107236A28 +107236A28:lI116|H107238160 +107238160:lI97|H107239678 +107239678:lI98|H10723AA60 +10723AA60:lI108|H10723BC00 +10723BC00:lI101|H10723CBD0 +10723CBD0:lI46|H10723DA10 +10723DA10:lI98|H10723E6F0 +10723E6F0:lI101|H10723F2A0 +10723F2A0:lI97|H10723FD00 +10723FD00:lI109|N +107214C78:lH107218010|N +107218010:lI111|H10721B500 +10721B500:lI98|H10721EA50 +10721EA50:lI115|H107221F10 +107221F10:lI101|H1072250B8 +1072250B8:lI114|H107227F10 +107227F10:lI118|H10722A958 +10722A958:lI101|H10722D070 +10722D070:lI114|H10722F508 +10722F508:lI95|H1072316A0 +1072316A0:lI115|H107233538 +107233538:lI121|H1072350D0 +1072350D0:lI115|H107236A18 +107236A18:lI95|H107238150 +107238150:lI119|H107239668 +107239668:lI120|H10723AA50 +10723AA50:lI46|H10723BBF0 +10723BBF0:lI98|H10723CBC0 +10723CBC0:lI101|H10723DA00 +10723DA00:lI97|H10723E6E0 +10723E6E0:lI109|N +107214C68:lH107218000|N +107218000:lI99|H10721B4F0 +10721B4F0:lI100|H10721EA40 +10721EA40:lI118|H107221F00 +107221F00:lI95|H1072250A8 +1072250A8:lI118|H107227F00 +107227F00:lI105|H10722A948 +10722A948:lI114|H10722D060 +10722D060:lI116|H10722F4F8 +10722F4F8:lI117|H107231690 +107231690:lI97|H107233528 +107233528:lI108|H1072350C0 +1072350C0:lI95|H107236A08 +107236A08:lI108|H107238140 +107238140:lI105|H107239658 +107239658:lI115|H10723AA40 +10723AA40:lI116|H10723BBE0 +10723BBE0:lI95|H10723CBB0 +10723CBB0:lI119|H10723D9F0 +10723D9F0:lI120|H10723E6D0 +10723E6D0:lI46|H10723F290 +10723F290:lI98|H10723FCF0 +10723FCF0:lI101|H107240610 +107240610:lI97|H107240E70 +107240E70:lI109|N +107214C58:lH107217FF0|N +107217FF0:lI101|H10721B4E0 +10721B4E0:lI116|H10721EA30 +10721EA30:lI111|H107221EF0 +107221EF0:lI112|H107225098 +107225098:lI46|H107227EF0 +107227EF0:lI98|H10722A938 +10722A938:lI101|H10722D050 +10722D050:lI97|H10722F4E8 +10722F4E8:lI109|N +107211940:Mn2:H107214C20,H107214C38 +107214C20:Mn2:H107217FB0,H107217FC0 +107217FB0:lH10721B4A0|N +10721B4A0:lI111|H10721E9F0 +10721E9F0:lI98|H107221EB0 +107221EB0:lI115|H107225058 +107225058:lI101|H107227EB0 +107227EB0:lI114|H10722A8F8 +10722A8F8:lI118|H10722D010 +10722D010:lI101|H10722F4A8 +10722F4A8:lI114|H107231650 +107231650:lI95|H1072334E8 +1072334E8:lI119|H107235080 +107235080:lI120|H1072369C8 +1072369C8:lI46|H107238100 +107238100:lI98|H107239618 +107239618:lI101|H10723AA00 +10723AA00:lI97|H10723BBB0 +10723BBB0:lI109|N +107217FC0:lH10721B4B0|N +10721B4B0:lI99|H10721EA00 +10721EA00:lI100|H107221EC0 +107221EC0:lI118|H107225068 +107225068:lI95|H107227EC0 +107227EC0:lI116|H10722A908 +10722A908:lI97|H10722D020 +10722D020:lI98|H10722F4B8 +10722F4B8:lI108|H107231660 +107231660:lI101|H1072334F8 +1072334F8:lI95|H107235090 +107235090:lI119|H1072369D8 +1072369D8:lI120|H107238110 +107238110:lI46|H107239628 +107239628:lI98|H10723AA10 +10723AA10:lI101|H10723BBC0 +10723BBC0:lI97|H10723CB90 +10723CB90:lI109|N +107214C38:lH107217FD0|N +107217FD0:lI111|H10721B4C0 +10721B4C0:lI98|H10721EA10 +10721EA10:lI115|H107221ED0 +107221ED0:lI101|H107225078 +107225078:lI114|H107227ED0 +107227ED0:lI118|H10722A918 +10722A918:lI101|H10722D030 +10722D030:lI114|H10722F4C8 +10722F4C8:lI95|H107231670 +107231670:lI116|H107233508 +107233508:lI114|H1072350A0 +1072350A0:lI97|H1072369E8 +1072369E8:lI99|H107238120 +107238120:lI101|H107239638 +107239638:lI95|H10723AA20 +10723AA20:lI119|H10723BBD0 +10723BBD0:lI120|H10723CBA0 +10723CBA0:lI46|H10723D9E0 +10723D9E0:lI98|H10723E6C0 +10723E6C0:lI101|H10723F280 +10723F280:lI97|H10723FCE0 +10723FCE0:lI109|N +107211930:Mn1:H107214C08 +107214C08:Mn2:H107217F90,H107217FA0 +107217F90:lH10721B480|N +10721B480:lI111|H10721E9D0 +10721E9D0:lI98|H107221E90 +107221E90:lI115|H107225038 +107225038:lI101|H107227E90 +107227E90:lI114|H10722A8D8 +10722A8D8:lI118|H10722CFF0 +10722CFF0:lI101|H10722F488 +10722F488:lI114|H107231630 +107231630:lI95|H1072334C8 +1072334C8:lI112|H107235060 +107235060:lI114|H1072369A8 +1072369A8:lI111|H1072380E0 +1072380E0:lI99|H1072395F8 +1072395F8:lI105|H10723A9E0 +10723A9E0:lI110|H10723BB90 +10723BB90:lI102|H10723CB70 +10723CB70:lI111|H10723D9C0 +10723D9C0:lI46|H10723E6A0 +10723E6A0:lI98|H10723F260 +10723F260:lI101|H10723FCC0 +10723FCC0:lI97|H107240600 +107240600:lI109|N +107217FA0:lH10721B490|N +10721B490:lI111|H10721E9E0 +10721E9E0:lI98|H107221EA0 +107221EA0:lI115|H107225048 +107225048:lI101|H107227EA0 +107227EA0:lI114|H10722A8E8 +10722A8E8:lI118|H10722D000 +10722D000:lI101|H10722F498 +10722F498:lI114|H107231640 +107231640:lI95|H1072334D8 +1072334D8:lI112|H107235070 +107235070:lI101|H1072369B8 +1072369B8:lI114|H1072380F0 +1072380F0:lI102|H107239608 +107239608:lI95|H10723A9F0 +10723A9F0:lI119|H10723BBA0 +10723BBA0:lI120|H10723CB80 +10723CB80:lI46|H10723D9D0 +10723D9D0:lI98|H10723E6B0 +10723E6B0:lI101|H10723F270 +10723F270:lI97|H10723FCD0 +10723FCD0:lI109|N +107211918:Mn2:H107214BE8,H107214BF8 +107214BE8:lH107217F70|N +107217F70:lI111|H10721B460 +10721B460:lI98|H10721E9B0 +10721E9B0:lI115|H107221E70 +107221E70:lI101|H107225018 +107225018:lI114|H107227E70 +107227E70:lI118|H10722A8B8 +10722A8B8:lI101|H10722CFD0 +10722CFD0:lI114|H10722F468 +10722F468:lI95|H107231610 +107231610:lI112|H1072334A8 +1072334A8:lI114|H107235040 +107235040:lI111|H107236988 +107236988:lI95|H1072380C0 +1072380C0:lI119|H1072395D8 +1072395D8:lI120|H10723A9C0 +10723A9C0:lI46|H10723BB80 +10723BB80:lI98|H10723CB60 +10723CB60:lI101|H10723D9B0 +10723D9B0:lI97|H10723E690 +10723E690:lI109|N +107214BF8:lH107217F80|N +107217F80:lI99|H10721B470 +10721B470:lI100|H10721E9C0 +10721E9C0:lI118|H107221E80 +107221E80:lI95|H107225028 +107225028:lI100|H107227E80 +107227E80:lI105|H10722A8C8 +10722A8C8:lI115|H10722CFE0 +10722CFE0:lI116|H10722F478 +10722F478:lI95|H107231620 +107231620:lI99|H1072334B8 +1072334B8:lI98|H107235050 +107235050:lI46|H107236998 +107236998:lI98|H1072380D0 +1072380D0:lI101|H1072395E8 +1072395E8:lI97|H10723A9D0 +10723A9D0:lI109|N +107211900:Mn2:H107214BC8,H107214BD8 +107214BC8:lH107217F50|N +107217F50:lI116|H10721B440 +10721B440:lI116|H10721E990 +10721E990:lI98|H107221E50 +107221E50:lI46|H107224FF8 +107224FF8:lI98|H107227E50 +107227E50:lI101|H10722A898 +10722A898:lI97|H10722CFB0 +10722CFB0:lI109|N +107214BD8:lH107217F60|N +107217F60:lI111|H10721B450 +10721B450:lI98|H10721E9A0 +10721E9A0:lI115|H107221E60 +107221E60:lI101|H107225008 +107225008:lI114|H107227E60 +107227E60:lI118|H10722A8A8 +10722A8A8:lI101|H10722CFC0 +10722CFC0:lI114|H10722F458 +10722F458:lI95|H107231600 +107231600:lI115|H107233498 +107233498:lI111|H107235030 +107235030:lI99|H107236978 +107236978:lI107|H1072380B0 +1072380B0:lI95|H1072395C8 +1072395C8:lI119|H10723A9B0 +10723A9B0:lI120|H10723BB70 +10723BB70:lI46|H10723CB50 +10723CB50:lI98|H10723D9A0 +10723D9A0:lI101|H10723E680 +10723E680:lI97|H10723F250 +10723F250:lI109|N +1072118C0:Mn7:H107214B58,H107214B68,H107214B78,H107214B88,H107214B98,H107214BA8,H107214BB8 +107214B58:lH107217EE0|N +107217EE0:lI99|H10721B3D0 +10721B3D0:lI100|H10721E920 +10721E920:lI118|H107221DE0 +107221DE0:lI95|H107224F88 +107224F88:lI119|H107227DE0 +107227DE0:lI120|H10722A828 +10722A828:lI46|H10722CF40 +10722CF40:lI98|H10722F3E8 +10722F3E8:lI101|H107231590 +107231590:lI97|H107233428 +107233428:lI109|N +107214BB8:lH107217F40|N +107217F40:lI99|H10721B430 +10721B430:lI100|H10721E980 +10721E980:lI118|H107221E40 +107221E40:lI95|H107224FE8 +107224FE8:lI105|H107227E40 +107227E40:lI110|H10722A888 +10722A888:lI102|H10722CFA0 +10722CFA0:lI111|H10722F448 +10722F448:lI95|H1072315F0 +1072315F0:lI119|H107233488 +107233488:lI120|H107235020 +107235020:lI46|H107236968 +107236968:lI98|H1072380A0 +1072380A0:lI101|H1072395B8 +1072395B8:lI97|H10723A9A0 +10723A9A0:lI109|N +107214BA8:lH107217F30|N +107217F30:lI111|H10721B420 +10721B420:lI98|H10721E970 +10721E970:lI115|H107221E30 +107221E30:lI101|H107224FD8 +107224FD8:lI114|H107227E30 +107227E30:lI118|H10722A878 +10722A878:lI101|H10722CF90 +10722CF90:lI114|H10722F438 +10722F438:lI46|H1072315E0 +1072315E0:lI97|H107233478 +107233478:lI112|H107235010 +107235010:lI112|H107236958 +107236958:lI117|H107238090 +107238090:lI112|N +107214B98:lH107217F20|N +107217F20:lI99|H10721B410 +10721B410:lI100|H10721E960 +10721E960:lI118|H107221E20 +107221E20:lI95|H107224FC8 +107224FC8:lI105|H107227E20 +107227E20:lI110|H10722A868 +10722A868:lI116|H10722CF80 +10722CF80:lI95|H10722F428 +10722F428:lI116|H1072315D0 +1072315D0:lI97|H107233468 +107233468:lI98|H107235000 +107235000:lI95|H107236948 +107236948:lI99|H107238080 +107238080:lI98|H1072395A8 +1072395A8:lI46|H10723A990 +10723A990:lI98|H10723BB60 +10723BB60:lI101|H10723CB40 +10723CB40:lI97|H10723D990 +10723D990:lI109|N +107214B88:lH107217F10|N +107217F10:lI99|H10721B400 +10721B400:lI100|H10721E950 +10721E950:lI118|H107221E10 +107221E10:lI95|H107224FB8 +107224FB8:lI116|H107227E10 +107227E10:lI105|H10722A858 +10722A858:lI109|H10722CF70 +10722CF70:lI101|H10722F418 +10722F418:lI114|H1072315C0 +1072315C0:lI95|H107233458 +107233458:lI99|H107234FF0 +107234FF0:lI98|H107236938 +107236938:lI46|H107238070 +107238070:lI98|H107239598 +107239598:lI101|H10723A980 +10723A980:lI97|H10723BB50 +10723BB50:lI109|N +107214B78:lH107217F00|N +107217F00:lI99|H10721B3F0 +10721B3F0:lI114|H10721E940 +10721E940:lI97|H107221E00 +107221E00:lI115|H107224FA8 +107224FA8:lI104|H107227E00 +107227E00:lI100|H10722A848 +10722A848:lI117|H10722CF60 +10722CF60:lI109|H10722F408 +10722F408:lI112|H1072315B0 +1072315B0:lI95|H107233448 +107233448:lI118|H107234FE0 +107234FE0:lI105|H107236928 +107236928:lI101|H107238060 +107238060:lI119|H107239588 +107239588:lI101|H10723A970 +10723A970:lI114|H10723BB40 +10723BB40:lI46|H10723CB30 +10723CB30:lI98|H10723D980 +10723D980:lI101|H10723E670 +10723E670:lI97|H10723F240 +10723F240:lI109|N +107214B68:lH107217EF0|N +107217EF0:lI99|H10721B3E0 +10721B3E0:lI100|H10721E930 +10721E930:lI118|H107221DF0 +107221DF0:lI95|H107224F98 +107224F98:lI115|H107227DF0 +107227DF0:lI99|H10722A838 +10722A838:lI104|H10722CF50 +10722CF50:lI101|H10722F3F8 +10722F3F8:lI100|H1072315A0 +1072315A0:lI95|H107233438 +107233438:lI99|H107234FD0 +107234FD0:lI98|H107236918 +107236918:lI46|H107238050 +107238050:lI98|H107239578 +107239578:lI101|H10723A960 +10723A960:lI97|H10723BB30 +10723BB30:lI109|N +1072118B0:lH107214B48|N +107214B48:lI99|H107217ED0 +107217ED0:lI100|H10721B3C0 +10721B3C0:lI118|H10721E910 +10721E910:lI95|H107221DD0 +107221DD0:lI109|H107224F78 +107224F78:lI101|H107227DD0 +107227DD0:lI109|H10722A818 +10722A818:lI95|H10722CF30 +10722CF30:lI99|H10722F3D8 +10722F3D8:lI98|H107231580 +107231580:lI46|H107233418 +107233418:lI98|H107234FC0 +107234FC0:lI101|H107236908 +107236908:lI97|H107238040 +107238040:lI109|N +107211890:Mn3:H107214B18,H107214B28,H107214B38 +107214B18:lH107217EA0|N +107217EA0:lI111|H10721B390 +10721B390:lI98|H10721E8E0 +10721E8E0:lI115|H107221DA0 +107221DA0:lI101|H107224F48 +107224F48:lI114|H107227DA0 +107227DA0:lI118|H10722A7E8 +10722A7E8:lI101|H10722CF00 +10722CF00:lI114|H10722F3A8 +10722F3A8:lI95|H107231550 +107231550:lI112|H1072333E8 +1072333E8:lI111|H107234FA0 +107234FA0:lI114|H1072368E8 +1072368E8:lI116|H107238020 +107238020:lI95|H107239558 +107239558:lI119|H10723A940 +10723A940:lI120|H10723BB20 +10723BB20:lI46|H10723CB20 +10723CB20:lI98|H10723D970 +10723D970:lI101|H10723E660 +10723E660:lI97|H10723F230 +10723F230:lI109|N +107214B38:lH107217EC0|N +107217EC0:lI116|H10721B3B0 +10721B3B0:lI116|H10721E900 +10721E900:lI98|H107221DC0 +107221DC0:lI95|H107224F68 +107224F68:lI101|H107227DC0 +107227DC0:lI116|H10722A808 +10722A808:lI46|H10722CF20 +10722CF20:lI98|H10722F3C8 +10722F3C8:lI101|H107231570 +107231570:lI97|H107233408 +107233408:lI109|N +107214B28:lH107217EB0|N +107217EB0:lI99|H10721B3A0 +10721B3A0:lI100|H10721E8F0 +10721E8F0:lI118|H107221DB0 +107221DB0:lI95|H107224F58 +107224F58:lI97|H107227DB0 +107227DB0:lI116|H10722A7F8 +10722A7F8:lI111|H10722CF10 +10722CF10:lI109|H10722F3B8 +10722F3B8:lI95|H107231560 +107231560:lI99|H1072333F8 +1072333F8:lI98|H107234FB0 +107234FB0:lI46|H1072368F8 +1072368F8:lI98|H107238030 +107238030:lI101|H107239568 +107239568:lI97|H10723A950 +10723A950:lI109|N +107211878:Mn2:H107214AF8,H107214B08 +107214AF8:lH107217E80|N +107217E80:lI99|H10721B370 +10721B370:lI100|H10721E8C0 +10721E8C0:lI118|H107221D80 +107221D80:lI95|H107224F28 +107224F28:lI100|H107227D80 +107227D80:lI101|H10722A7C8 +10722A7C8:lI116|H10722CEE0 +10722CEE0:lI97|H10722F388 +10722F388:lI105|H107231530 +107231530:lI108|H1072333C8 +1072333C8:lI95|H107234F80 +107234F80:lI119|H1072368C8 +1072368C8:lI120|H107238000 +107238000:lI46|H107239538 +107239538:lI98|H10723A930 +10723A930:lI101|H10723BB10 +10723BB10:lI97|H10723CB10 +10723CB10:lI109|N +107214B08:lH107217E90|N +107217E90:lI99|H10721B380 +10721B380:lI100|H10721E8D0 +10721E8D0:lI118|H107221D90 +107221D90:lI95|H107224F38 +107224F38:lI102|H107227D90 +107227D90:lI117|H10722A7D8 +10722A7D8:lI110|H10722CEF0 +10722CEF0:lI95|H10722F398 +10722F398:lI99|H107231540 +107231540:lI98|H1072333D8 +1072333D8:lI46|H107234F90 +107234F90:lI98|H1072368D8 +1072368D8:lI101|H107238010 +107238010:lI97|H107239548 +107239548:lI109|N +107211848:Mn5:H107214AA8,H107214AB8,H107214AC8,H107214AD8,H107214AE8 +107214AA8:lH107217E30|N +107217E30:lI99|H10721B320 +10721B320:lI100|H10721E870 +10721E870:lI118|H107221D30 +107221D30:lI95|H107224ED8 +107224ED8:lI104|H107227D30 +107227D30:lI116|H10722A778 +10722A778:lI109|H10722CE90 +10722CE90:lI108|H10722F338 +10722F338:lI95|H1072314E0 +1072314E0:lI119|H107233378 +107233378:lI120|H107234F30 +107234F30:lI46|H107236888 +107236888:lI98|H107237FC0 +107237FC0:lI101|H1072394F8 +1072394F8:lI97|H10723A910 +10723A910:lI109|N +107214AE8:lH107217E70|N +107217E70:lI101|H10721B360 +10721B360:lI116|H10721E8B0 +10721E8B0:lI111|H107221D70 +107221D70:lI112|H107224F18 +107224F18:lI95|H107227D70 +107227D70:lI116|H10722A7B8 +10722A7B8:lI114|H10722CED0 +10722CED0:lI46|H10722F378 +10722F378:lI98|H107231520 +107231520:lI101|H1072333B8 +1072333B8:lI97|H107234F70 +107234F70:lI109|N +107214AD8:lH107217E60|N +107217E60:lI99|H10721B350 +10721B350:lI100|H10721E8A0 +10721E8A0:lI118|H107221D60 +107221D60:lI95|H107224F08 +107224F08:lI98|H107227D60 +107227D60:lI105|H10722A7A8 +10722A7A8:lI110|H10722CEC0 +10722CEC0:lI95|H10722F368 +10722F368:lI99|H107231510 +107231510:lI98|H1072333A8 +1072333A8:lI46|H107234F60 +107234F60:lI98|H1072368B8 +1072368B8:lI101|H107237FF0 +107237FF0:lI97|H107239528 +107239528:lI109|N +107214AC8:lH107217E50|N +107217E50:lI99|H10721B340 +10721B340:lI100|H10721E890 +10721E890:lI118|H107221D50 +107221D50:lI95|H107224EF8 +107224EF8:lI101|H107227D50 +107227D50:lI116|H10722A798 +10722A798:lI115|H10722CEB0 +10722CEB0:lI95|H10722F358 +10722F358:lI99|H107231500 +107231500:lI98|H107233398 +107233398:lI46|H107234F50 +107234F50:lI98|H1072368A8 +1072368A8:lI101|H107237FE0 +107237FE0:lI97|H107239518 +107239518:lI109|N +107214AB8:lH107217E40|N +107217E40:lI99|H10721B330 +10721B330:lI100|H10721E880 +10721E880:lI118|H107221D40 +107221D40:lI95|H107224EE8 +107224EE8:lI116|H107227D40 +107227D40:lI101|H10722A788 +10722A788:lI114|H10722CEA0 +10722CEA0:lI109|H10722F348 +10722F348:lI95|H1072314F0 +1072314F0:lI99|H107233388 +107233388:lI98|H107234F40 +107234F40:lI46|H107236898 +107236898:lI98|H107237FD0 +107237FD0:lI101|H107239508 +107239508:lI97|H10723A920 +10723A920:lI109|N +107211830:Mn2:H107214A88,H107214A98 +107214A88:lH107217E10|N +107217E10:lI111|H10721B300 +10721B300:lI98|H10721E850 +10721E850:lI115|H107221D10 +107221D10:lI101|H107224EB8 +107224EB8:lI114|H107227D10 +107227D10:lI118|H10722A758 +10722A758:lI101|H10722CE70 +10722CE70:lI114|H10722F318 +10722F318:lI95|H1072314C0 +1072314C0:lI108|H107233358 +107233358:lI105|H107234F10 +107234F10:lI98|H107236868 +107236868:lI46|H107237FA0 +107237FA0:lI98|H1072394D8 +1072394D8:lI101|H10723A8F0 +10723A8F0:lI97|H10723BAF0 +10723BAF0:lI109|N +107214A98:lH107217E20|N +107217E20:lI111|H10721B310 +10721B310:lI98|H10721E860 +10721E860:lI115|H107221D20 +107221D20:lI101|H107224EC8 +107224EC8:lI114|H107227D20 +107227D20:lI118|H10722A768 +10722A768:lI101|H10722CE80 +10722CE80:lI114|H10722F328 +10722F328:lI95|H1072314D0 +1072314D0:lI97|H107233368 +107233368:lI112|H107234F20 +107234F20:lI112|H107236878 +107236878:lI95|H107237FB0 +107237FB0:lI119|H1072394E8 +1072394E8:lI120|H10723A900 +10723A900:lI46|H10723BB00 +10723BB00:lI98|H10723CB00 +10723CB00:lI101|H10723D960 +10723D960:lI97|H10723E650 +10723E650:lI109|N +10720E658:lI47|H107211808 +107211808:lI111|H107214A58 +107214A58:lI112|H107217DE0 +107217DE0:lI116|H10721B2D0 +10721B2D0:lI47|H10721E820 +10721E820:lI104|H107221CE0 +107221CE0:lI111|H107224E88 +107224E88:lI109|H107227CE0 +107227CE0:lI101|H10722A728 +10722A728:lI98|H10722CE40 +10722CE40:lI114|H10722F2E8 +10722F2E8:lI101|H107231490 +107231490:lI119|H107233328 +107233328:lI47|H107234EE0 +107234EE0:lI67|H107236838 +107236838:lI101|H107237F70 +107237F70:lI108|H1072394A8 +1072394A8:lI108|H10723A8D0 +10723A8D0:lI97|H10723BAE0 +10723BAE0:lI114|H10723CAF0 +10723CAF0:lI47|H10723D950 +10723D950:lI101|H10723E640 +10723E640:lI114|H10723F220 +10723F220:lI108|H10723FCB0 +10723FCB0:lI97|H1072405F0 +1072405F0:lI110|H107240E60 +107240E60:lI103|H1072415F0 +1072415F0:lI47|H107241D10 +107241D10:lI50|H1072423D0 +1072423D0:lI54|H107242A30 +107242A30:lI46|H107243010 +107243010:lI48|H107243580 +107243580:lI46|H107243AC0 +107243AC0:lI50|H107243FB0 +107243FB0:lI47|H1072444A0 +1072444A0:lI108|H107244950 +107244950:lI105|H107244DC0 +107244DC0:lI98|H107245220 +107245220:lI47|H107245670 +107245670:lI101|H107245A70 +107245A70:lI114|H107245E20 +107245E20:lI108|H1072461B0 +1072461B0:lI97|H107246540 +107246540:lI110|H1072468D0 +1072468D0:lI103|H107246C60 +107246C60:lI47|H107246F90 +107246F90:lI108|H1072472B0 +1072472B0:lI105|H1072475C0 +1072475C0:lI98|H1072478C0 +1072478C0:lI47|H107247BC0 +107247BC0:lI111|H107247EA0 +107247EA0:lI98|H107248160 +107248160:lI115|H107248420 +107248420:lI101|H1072486D0 +1072486D0:lI114|H107248980 +107248980:lI118|H107248C00 +107248C00:lI101|H107248E70 +107248E70:lI114|H1072490E0 +1072490E0:lI45|H107249340 +107249340:lI50|H1072495A0 +1072495A0:lI46|H1072497F0 +1072497F0:lI49|H107249A10 +107249A10:lI53|H107249C20 +107249C20:lI47|H280052C20 +10720B448:lH10720E6F0|H10720E708 +10720E6F0:t2:H1072119D8,H1072119E8 +1072119E8:Mh21:F:H107214D30,H107214D50,H107214D88,H107214DA0,H107214DB8,H107214DD8,H107214DE8,H107214DF8,H107214E20,H107214E30,H107214E48,H107214E58,H107214E68,H107214E78,H107214E98 +107214D30:Mn3:H1072180E0,H1072180F0,H107218100 +1072180E0:lH10721B5D0|N +10721B5D0:lI109|H10721EB20 +10721EB20:lI110|H107221FE0 +107221FE0:lI101|H107225188 +107225188:lI115|H107227FE0 +107227FE0:lI105|H10722AA28 +10722AA28:lI97|H10722D140 +10722D140:lI95|H10722F5D8 +10722F5D8:lI114|H107231770 +107231770:lI101|H107233608 +107233608:lI103|H1072351A0 +1072351A0:lI105|H107236AE8 +107236AE8:lI115|H1072381F0 +1072381F0:lI116|H107239708 +107239708:lI114|H10723AAE0 +10723AAE0:lI121|H10723BC80 +10723BC80:lI46|H10723CC50 +10723CC50:lI98|H10723DA80 +10723DA80:lI101|H10723E750 +10723E750:lI97|H10723F300 +10723F300:lI109|N +107218100:lH10721B5F0|N +10721B5F0:lI109|H10721EB40 +10721EB40:lI110|H107222000 +107222000:lI101|H1072251A8 +1072251A8:lI115|H107228000 +107228000:lI105|H10722AA48 +10722AA48:lI97|H10722D160 +10722D160:lI95|H10722F5F8 +10722F5F8:lI98|H107231790 +107231790:lI117|H107233628 +107233628:lI112|H1072351C0 +1072351C0:lI46|H107236B08 +107236B08:lI98|H107238210 +107238210:lI101|H107239728 +107239728:lI97|H10723AB00 +10723AB00:lI109|N +1072180F0:lH10721B5E0|N +10721B5E0:lI109|H10721EB30 +10721EB30:lI110|H107221FF0 +107221FF0:lI101|H107225198 +107225198:lI115|H107227FF0 +107227FF0:lI105|H10722AA38 +10722AA38:lI97|H10722D150 +10722D150:lI95|H10722F5E8 +10722F5E8:lI99|H107231780 +107231780:lI104|H107233618 +107233618:lI101|H1072351B0 +1072351B0:lI99|H107236AF8 +107236AF8:lI107|H107238200 +107238200:lI112|H107239718 +107239718:lI111|H10723AAF0 +10723AAF0:lI105|H10723BC90 +10723BC90:lI110|H10723CC60 +10723CC60:lI116|H10723DA90 +10723DA90:lI46|H10723E760 +10723E760:lI98|H10723F310 +10723F310:lI101|H10723FD60 +10723FD60:lI97|H107240660 +107240660:lI109|N +107214E98:Mn2:H1072182D0,H1072182E0 +1072182D0:lH10721B7C0|N +10721B7C0:lI109|H10721ED10 +10721ED10:lI110|H1072221D0 +1072221D0:lI101|H107225378 +107225378:lI115|H1072281D0 +1072281D0:lI105|H10722AC18 +10722AC18:lI97|H10722D330 +10722D330:lI95|H10722F7C8 +10722F7C8:lI108|H107231960 +107231960:lI97|H1072337E8 +1072337E8:lI116|H107235380 +107235380:lI101|H107236CB8 +107236CB8:lI95|H1072383B0 +1072383B0:lI108|H1072398C8 +1072398C8:lI111|H10723AC80 +10723AC80:lI97|H10723BDB0 +10723BDB0:lI100|H10723CD70 +10723CD70:lI101|H10723DB70 +10723DB70:lI114|H10723E7F0 +10723E7F0:lI46|H10723F370 +10723F370:lI98|H10723FDA0 +10723FDA0:lI101|H107240690 +107240690:lI97|H107240EB0 +107240EB0:lI109|N +1072182E0:lH10721B7D0|N +10721B7D0:lI109|H10721ED20 +10721ED20:lI110|H1072221E0 +1072221E0:lI101|H107225388 +107225388:lI115|H1072281E0 +1072281E0:lI105|H10722AC28 +10722AC28:lI97|H10722D340 +10722D340:lI95|H10722F7D8 +10722F7D8:lI98|H107231970 +107231970:lI97|H1072337F8 +1072337F8:lI99|H107235390 +107235390:lI107|H107236CC8 +107236CC8:lI101|H1072383C0 +1072383C0:lI110|H1072398D8 +1072398D8:lI100|H10723AC90 +10723AC90:lI95|H10723BDC0 +10723BDC0:lI116|H10723CD80 +10723CD80:lI121|H10723DB80 +10723DB80:lI112|H10723E800 +10723E800:lI101|H10723F380 +10723F380:lI46|H10723FDB0 +10723FDB0:lI98|H1072406A0 +1072406A0:lI101|H107240EC0 +107240EC0:lI97|H107241630 +107241630:lI109|N +107214E78:Mn3:H1072182A0,H1072182B0,H1072182C0 +1072182A0:lH10721B790|N +10721B790:lI109|H10721ECE0 +10721ECE0:lI110|H1072221A0 +1072221A0:lI101|H107225348 +107225348:lI115|H1072281A0 +1072281A0:lI105|H10722ABE8 +10722ABE8:lI97|H10722D300 +10722D300:lI95|H10722F798 +10722F798:lI99|H107231930 +107231930:lI104|H1072337B8 +1072337B8:lI101|H107235350 +107235350:lI99|H107236C88 +107236C88:lI107|H107238380 +107238380:lI112|H107239898 +107239898:lI111|H10723AC60 +10723AC60:lI105|H10723BD90 +10723BD90:lI110|H10723CD50 +10723CD50:lI116|H10723DB50 +10723DB50:lI95|H10723E7E0 +10723E7E0:lI115|H10723F360 +10723F360:lI117|H10723FD90 +10723FD90:lI112|H107240680 +107240680:lI46|H107240EA0 +107240EA0:lI98|H107241620 +107241620:lI101|H107241D40 +107241D40:lI97|H107242400 +107242400:lI109|N +1072182C0:lH10721B7B0|N +10721B7B0:lI109|H10721ED00 +10721ED00:lI110|H1072221C0 +1072221C0:lI101|H107225368 +107225368:lI115|H1072281C0 +1072281C0:lI105|H10722AC08 +10722AC08:lI97|H10722D320 +10722D320:lI95|H10722F7B8 +10722F7B8:lI115|H107231950 +107231950:lI112|H1072337D8 +1072337D8:lI46|H107235370 +107235370:lI98|H107236CA8 +107236CA8:lI101|H1072383A0 +1072383A0:lI97|H1072398B8 +1072398B8:lI109|N +1072182B0:lH10721B7A0|N +10721B7A0:lI109|H10721ECF0 +10721ECF0:lI110|H1072221B0 +1072221B0:lI101|H107225358 +107225358:lI115|H1072281B0 +1072281B0:lI105|H10722ABF8 +10722ABF8:lI97|H10722D310 +10722D310:lI95|H10722F7A8 +10722F7A8:lI115|H107231940 +107231940:lI99|H1072337C8 +1072337C8:lI104|H107235360 +107235360:lI101|H107236C98 +107236C98:lI109|H107238390 +107238390:lI97|H1072398A8 +1072398A8:lI46|H10723AC70 +10723AC70:lI98|H10723BDA0 +10723BDA0:lI101|H10723CD60 +10723CD60:lI97|H10723DB60 +10723DB60:lI109|N +107214E68:lH107218290|N +107218290:lI109|H10721B780 +10721B780:lI110|H10721ECD0 +10721ECD0:lI101|H107222190 +107222190:lI115|H107225338 +107225338:lI105|H107228190 +107228190:lI97|H10722ABD8 +10722ABD8:lI95|H10722D2F0 +10722D2F0:lI116|H10722F788 +10722F788:lI101|H107231920 +107231920:lI120|H1072337A8 +1072337A8:lI116|H107235340 +107235340:lI46|H107236C78 +107236C78:lI98|H107238370 +107238370:lI101|H107239888 +107239888:lI97|H10723AC50 +10723AC50:lI109|N +107214E58:lH107218280|N +107218280:lI109|H10721B770 +10721B770:lI110|H10721ECC0 +10721ECC0:lI101|H107222180 +107222180:lI115|H107225328 +107225328:lI105|H107228180 +107228180:lI97|H10722ABC8 +10722ABC8:lI95|H10722D2E0 +10722D2E0:lI99|H10722F778 +10722F778:lI111|H107231910 +107231910:lI110|H107233798 +107233798:lI116|H107235330 +107235330:lI114|H107236C68 +107236C68:lI111|H107238360 +107238360:lI108|H107239878 +107239878:lI108|H10723AC40 +10723AC40:lI101|H10723BD80 +10723BD80:lI114|H10723CD40 +10723CD40:lI46|H10723DB40 +10723DB40:lI98|H10723E7D0 +10723E7D0:lI101|H10723F350 +10723F350:lI97|H10723FD80 +10723FD80:lI109|N +107214E48:lH107218270|N +107218270:lI109|H10721B760 +10721B760:lI110|H10721ECB0 +10721ECB0:lI101|H107222170 +107222170:lI115|H107225318 +107225318:lI105|H107228170 +107228170:lI97|H10722ABB8 +10722ABB8:lI95|H10722D2D0 +10722D2D0:lI108|H10722F768 +10722F768:lI111|H107231900 +107231900:lI99|H107233788 +107233788:lI107|H107235320 +107235320:lI101|H107236C58 +107236C58:lI114|H107238350 +107238350:lI46|H107239868 +107239868:lI98|H10723AC30 +10723AC30:lI101|H10723BD70 +10723BD70:lI97|H10723CD30 +10723CD30:lI109|N +107214E30:Mn2:H107218250,H107218260 +107218250:lH10721B740|N +10721B740:lI109|H10721EC90 +10721EC90:lI110|H107222150 +107222150:lI101|H1072252F8 +1072252F8:lI115|H107228150 +107228150:lI105|H10722AB98 +10722AB98:lI97|H10722D2B0 +10722D2B0:lI95|H10722F748 +10722F748:lI107|H1072318E0 +1072318E0:lI101|H107233768 +107233768:lI114|H107235300 +107235300:lI110|H107236C38 +107236C38:lI101|H107238330 +107238330:lI108|H107239848 +107239848:lI95|H10723AC10 +10723AC10:lI115|H10723BD50 +10723BD50:lI117|H10723CD20 +10723CD20:lI112|H10723DB30 +10723DB30:lI46|H10723E7C0 +10723E7C0:lI98|H10723F340 +10723F340:lI101|H10723FD70 +10723FD70:lI97|H107240670 +107240670:lI109|N +107218260:lH10721B750|N +10721B750:lI109|H10721ECA0 +10721ECA0:lI110|H107222160 +107222160:lI101|H107225308 +107225308:lI115|H107228160 +107228160:lI105|H10722ABA8 +10722ABA8:lI97|H10722D2C0 +10722D2C0:lI95|H10722F758 +10722F758:lI102|H1072318F0 +1072318F0:lI114|H107233778 +107233778:lI97|H107235310 +107235310:lI103|H107236C48 +107236C48:lI46|H107238340 +107238340:lI98|H107239858 +107239858:lI101|H10723AC20 +10723AC20:lI97|H10723BD60 +10723BD60:lI109|N +107214E20:lH107218240|N +107218240:lI109|H10721B730 +10721B730:lI110|H10721EC80 +10721EC80:lI101|H107222140 +107222140:lI115|H1072252E8 +1072252E8:lI105|H107228140 +107228140:lI97|H10722AB88 +10722AB88:lI95|H10722D2A0 +10722D2A0:lI102|H10722F738 +10722F738:lI114|H1072318D0 +1072318D0:lI97|H107233758 +107233758:lI103|H1072352F0 +1072352F0:lI95|H107236C28 +107236C28:lI104|H107238320 +107238320:lI97|H107239838 +107239838:lI115|H10723AC00 +10723AC00:lI104|H10723BD40 +10723BD40:lI46|H10723CD10 +10723CD10:lI98|H10723DB20 +10723DB20:lI101|H10723E7B0 +10723E7B0:lI97|H10723F330 +10723F330:lI109|N +107214DF8:Mn4:H107218200,H107218210,H107218220,H107218230 +107218200:lH10721B6F0|N +10721B6F0:lI109|H10721EC40 +10721EC40:lI110|H107222100 +107222100:lI101|H1072252A8 +1072252A8:lI115|H107228100 +107228100:lI105|H10722AB48 +10722AB48:lI97|H10722D260 +10722D260:lI95|H10722F6F8 +10722F6F8:lI116|H107231890 +107231890:lI109|H107233718 +107233718:lI46|H1072352B0 +1072352B0:lI98|H107236BE8 +107236BE8:lI101|H1072382E0 +1072382E0:lI97|H1072397F8 +1072397F8:lI109|N +107218230:lH10721B720|N +10721B720:lI109|H10721EC70 +10721EC70:lI110|H107222130 +107222130:lI101|H1072252D8 +1072252D8:lI115|H107228130 +107228130:lI105|H10722AB78 +10722AB78:lI97|H10722D290 +10722D290:lI95|H10722F728 +10722F728:lI100|H1072318C0 +1072318C0:lI117|H107233748 +107233748:lI109|H1072352E0 +1072352E0:lI112|H107236C18 +107236C18:lI101|H107238310 +107238310:lI114|H107239828 +107239828:lI46|H10723ABF0 +10723ABF0:lI98|H10723BD30 +10723BD30:lI101|H10723CD00 +10723CD00:lI97|H10723DB10 +10723DB10:lI109|N +107218220:lH10721B710|N +10721B710:lI109|H10721EC60 +10721EC60:lI110|H107222120 +107222120:lI101|H1072252C8 +1072252C8:lI115|H107228120 +107228120:lI105|H10722AB68 +10722AB68:lI97|H10722D280 +10722D280:lI95|H10722F718 +10722F718:lI101|H1072318B0 +1072318B0:lI118|H107233738 +107233738:lI101|H1072352D0 +1072352D0:lI110|H107236C08 +107236C08:lI116|H107238300 +107238300:lI46|H107239818 +107239818:lI98|H10723ABE0 +10723ABE0:lI101|H10723BD20 +10723BD20:lI97|H10723CCF0 +10723CCF0:lI109|N +107218210:lH10721B700|N +10721B700:lI109|H10721EC50 +10721EC50:lI110|H107222110 +107222110:lI101|H1072252B8 +1072252B8:lI115|H107228110 +107228110:lI105|H10722AB58 +10722AB58:lI97|H10722D270 +10722D270:lI95|H10722F708 +10722F708:lI98|H1072318A0 +1072318A0:lI97|H107233728 +107233728:lI99|H1072352C0 +1072352C0:lI107|H107236BF8 +107236BF8:lI117|H1072382F0 +1072382F0:lI112|H107239808 +107239808:lI46|H10723ABD0 +10723ABD0:lI98|H10723BD10 +10723BD10:lI101|H10723CCE0 +10723CCE0:lI97|H10723DB00 +10723DB00:lI109|N +107214DE8:lH1072181F0|N +1072181F0:lI109|H10721B6E0 +10721B6E0:lI110|H10721EC30 +10721EC30:lI101|H1072220F0 +1072220F0:lI115|H107225298 +107225298:lI105|H1072280F0 +1072280F0:lI97|H10722AB38 +10722AB38:lI46|H10722D250 +10722D250:lI97|H10722F6E8 +10722F6E8:lI112|H107231880 +107231880:lI112|N +107214DD8:lH1072181E0|N +1072181E0:lI109|H10721B6D0 +10721B6D0:lI110|H10721EC20 +10721EC20:lI101|H1072220E0 +1072220E0:lI115|H107225288 +107225288:lI105|H1072280E0 +1072280E0:lI97|H10722AB28 +10722AB28:lI95|H10722D240 +10722D240:lI115|H10722F6D8 +10722F6D8:lI110|H107231870 +107231870:lI109|H107233708 +107233708:lI112|H1072352A0 +1072352A0:lI95|H107236BD8 +107236BD8:lI104|H1072382D0 +1072382D0:lI111|H1072397E8 +1072397E8:lI111|H10723ABC0 +10723ABC0:lI107|H10723BD00 +10723BD00:lI46|H10723CCD0 +10723CCD0:lI98|H10723DAF0 +10723DAF0:lI101|H10723E7A0 +10723E7A0:lI97|H10723F320 +10723F320:lI109|N +107214DB8:Mn3:H1072181B0,H1072181C0,H1072181D0 +1072181B0:lH10721B6A0|N +10721B6A0:lI109|H10721EBF0 +10721EBF0:lI110|H1072220B0 +1072220B0:lI101|H107225258 +107225258:lI115|H1072280B0 +1072280B0:lI105|H10722AAF8 +10722AAF8:lI97|H10722D210 +10722D210:lI95|H10722F6A8 +10722F6A8:lI115|H107231840 +107231840:lI117|H1072336D8 +1072336D8:lI112|H107235270 +107235270:lI46|H107236BA8 +107236BA8:lI98|H1072382B0 +1072382B0:lI101|H1072397C8 +1072397C8:lI97|H10723ABA0 +10723ABA0:lI109|N +1072181D0:lH10721B6C0|N +10721B6C0:lI109|H10721EC10 +10721EC10:lI110|H1072220D0 +1072220D0:lI101|H107225278 +107225278:lI115|H1072280D0 +1072280D0:lI105|H10722AB18 +10722AB18:lI97|H10722D230 +10722D230:lI95|H10722F6C8 +10722F6C8:lI108|H107231860 +107231860:lI105|H1072336F8 +1072336F8:lI98|H107235290 +107235290:lI46|H107236BC8 +107236BC8:lI98|H1072382C0 +1072382C0:lI101|H1072397D8 +1072397D8:lI97|H10723ABB0 +10723ABB0:lI109|N +1072181C0:lH10721B6B0|N +10721B6B0:lI109|H10721EC00 +10721EC00:lI110|H1072220C0 +1072220C0:lI101|H107225268 +107225268:lI115|H1072280C0 +1072280C0:lI105|H10722AB08 +10722AB08:lI97|H10722D220 +10722D220:lI46|H10722F6B8 +10722F6B8:lI97|H107231850 +107231850:lI112|H1072336E8 +1072336E8:lI112|H107235280 +107235280:lI117|H107236BB8 +107236BB8:lI112|N +107214DA0:Mn2:H107218190,H1072181A0 +107218190:lH10721B680|N +10721B680:lI109|H10721EBD0 +10721EBD0:lI110|H107222090 +107222090:lI101|H107225238 +107225238:lI115|H107228090 +107228090:lI105|H10722AAD8 +10722AAD8:lI97|H10722D1F0 +10722D1F0:lI95|H10722F688 +10722F688:lI97|H107231820 +107231820:lI112|H1072336B8 +1072336B8:lI112|H107235250 +107235250:lI46|H107236B88 +107236B88:lI98|H107238290 +107238290:lI101|H1072397A8 +1072397A8:lI97|H10723AB80 +10723AB80:lI109|N +1072181A0:lH10721B690|N +10721B690:lI109|H10721EBE0 +10721EBE0:lI110|H1072220A0 +1072220A0:lI101|H107225248 +107225248:lI115|H1072280A0 +1072280A0:lI105|H10722AAE8 +10722AAE8:lI97|H10722D200 +10722D200:lI95|H10722F698 +10722F698:lI108|H107231830 +107231830:lI111|H1072336C8 +1072336C8:lI103|H107235260 +107235260:lI46|H107236B98 +107236B98:lI98|H1072382A0 +1072382A0:lI101|H1072397B8 +1072397B8:lI97|H10723AB90 +10723AB90:lI109|N +107214D88:Mn2:H107218170,H107218180 +107218170:lH10721B660|N +10721B660:lI109|H10721EBB0 +10721EBB0:lI110|H107222070 +107222070:lI101|H107225218 +107225218:lI115|H107228070 +107228070:lI105|H10722AAB8 +10722AAB8:lI97|H10722D1D0 +10722D1D0:lI95|H10722F668 +10722F668:lI115|H107231800 +107231800:lI117|H107233698 +107233698:lI98|H107235230 +107235230:lI115|H107236B68 +107236B68:lI99|H107238270 +107238270:lI114|H107239788 +107239788:lI46|H10723AB60 +10723AB60:lI98|H10723BCF0 +10723BCF0:lI101|H10723CCC0 +10723CCC0:lI97|H10723DAE0 +10723DAE0:lI109|N +107218180:lH10721B670|N +10721B670:lI109|H10721EBC0 +10721EBC0:lI110|H107222080 +107222080:lI101|H107225228 +107225228:lI115|H107228080 +107228080:lI105|H10722AAC8 +10722AAC8:lI97|H10722D1E0 +10722D1E0:lI95|H10722F678 +10722F678:lI114|H107231810 +107231810:lI112|H1072336A8 +1072336A8:lI99|H107235240 +107235240:lI46|H107236B78 +107236B78:lI98|H107238280 +107238280:lI101|H107239798 +107239798:lI97|H10723AB70 +10723AB70:lI109|N +107214D50:Mn6:H107218110,H107218120,H107218130,H107218140,H107218150,H107218160 +107218110:lH10721B600|N +10721B600:lI109|H10721EB50 +10721EB50:lI110|H107222010 +107222010:lI101|H1072251B8 +1072251B8:lI115|H107228010 +107228010:lI105|H10722AA58 +10722AA58:lI97|H10722D170 +10722D170:lI46|H10722F608 +10722F608:lI98|H1072317A0 +1072317A0:lI101|H107233638 +107233638:lI97|H1072351D0 +1072351D0:lI109|N +107218160:lH10721B650|N +10721B650:lI109|H10721EBA0 +10721EBA0:lI110|H107222060 +107222060:lI101|H107225208 +107225208:lI115|H107228060 +107228060:lI105|H10722AAA8 +10722AAA8:lI97|H10722D1C0 +10722D1C0:lI95|H10722F658 +10722F658:lI109|H1072317F0 +1072317F0:lI111|H107233688 +107233688:lI110|H107235220 +107235220:lI105|H107236B58 +107236B58:lI116|H107238260 +107238260:lI111|H107239778 +107239778:lI114|H10723AB50 +10723AB50:lI46|H10723BCE0 +10723BCE0:lI98|H10723CCB0 +10723CCB0:lI101|H10723DAD0 +10723DAD0:lI97|H10723E790 +10723E790:lI109|N +107218150:lH10721B640|N +10721B640:lI109|H10721EB90 +10721EB90:lI110|H107222050 +107222050:lI101|H1072251F8 +1072251F8:lI115|H107228050 +107228050:lI105|H10722AA98 +10722AA98:lI97|H10722D1B0 +10722D1B0:lI95|H10722F648 +10722F648:lI105|H1072317E0 +1072317E0:lI110|H107233678 +107233678:lI100|H107235210 +107235210:lI101|H107236B48 +107236B48:lI120|H107238250 +107238250:lI46|H107239768 +107239768:lI98|H10723AB40 +10723AB40:lI101|H10723BCD0 +10723BCD0:lI97|H10723CCA0 +10723CCA0:lI109|N +107218140:lH10721B630|N +10721B630:lI109|H10721EB80 +10721EB80:lI110|H107222040 +107222040:lI101|H1072251E8 +1072251E8:lI115|H107228040 +107228040:lI105|H10722AA88 +10722AA88:lI97|H10722D1A0 +10722D1A0:lI95|H10722F638 +10722F638:lI114|H1072317D0 +1072317D0:lI101|H107233668 +107233668:lI99|H107235200 +107235200:lI111|H107236B38 +107236B38:lI118|H107238240 +107238240:lI101|H107239758 +107239758:lI114|H10723AB30 +10723AB30:lI46|H10723BCC0 +10723BCC0:lI98|H10723CC90 +10723CC90:lI101|H10723DAC0 +10723DAC0:lI97|H10723E780 +10723E780:lI109|N +107218130:lH10721B620|N +10721B620:lI109|H10721EB70 +10721EB70:lI110|H107222030 +107222030:lI101|H1072251D8 +1072251D8:lI115|H107228030 +107228030:lI105|H10722AA78 +10722AA78:lI97|H10722D190 +10722D190:lI95|H10722F628 +10722F628:lI108|H1072317C0 +1072317C0:lI111|H107233658 +107233658:lI97|H1072351F0 +1072351F0:lI100|H107236B28 +107236B28:lI101|H107238230 +107238230:lI114|H107239748 +107239748:lI46|H10723AB20 +10723AB20:lI98|H10723BCB0 +10723BCB0:lI101|H10723CC80 +10723CC80:lI97|H10723DAB0 +10723DAB0:lI109|N +107218120:lH10721B610|N +10721B610:lI109|H10721EB60 +10721EB60:lI110|H107222020 +107222020:lI101|H1072251C8 +1072251C8:lI115|H107228020 +107228020:lI105|H10722AA68 +10722AA68:lI97|H10722D180 +10722D180:lI95|H10722F618 +10722F618:lI101|H1072317B0 +1072317B0:lI120|H107233648 +107233648:lI116|H1072351E0 +1072351E0:lI95|H107236B18 +107236B18:lI115|H107238220 +107238220:lI117|H107239738 +107239738:lI112|H10723AB10 +10723AB10:lI46|H10723BCA0 +10723BCA0:lI98|H10723CC70 +10723CC70:lI101|H10723DAA0 +10723DAA0:lI97|H10723E770 +10723E770:lI109|N +1072119D8:lI47|H107214D20 +107214D20:lI111|H1072180D0 +1072180D0:lI112|H10721B5C0 +10721B5C0:lI116|H10721EB10 +10721EB10:lI47|H107221FD0 +107221FD0:lI104|H107225178 +107225178:lI111|H107227FD0 +107227FD0:lI109|H10722AA18 +10722AA18:lI101|H10722D130 +10722D130:lI98|H10722F5C8 +10722F5C8:lI114|H107231760 +107231760:lI101|H1072335F8 +1072335F8:lI119|H107235190 +107235190:lI47|H107236AD8 +107236AD8:lI67|H1072381E0 +1072381E0:lI101|H1072396F8 +1072396F8:lI108|H10723AAD0 +10723AAD0:lI108|H10723BC70 +10723BC70:lI97|H10723CC40 +10723CC40:lI114|H10723DA70 +10723DA70:lI47|H10723E740 +10723E740:lI101|H10723F2F0 +10723F2F0:lI114|H10723FD50 +10723FD50:lI108|H107240650 +107240650:lI97|H107240E90 +107240E90:lI110|H107241610 +107241610:lI103|H107241D30 +107241D30:lI47|H1072423F0 +1072423F0:lI50|H107242A50 +107242A50:lI54|H107243030 +107243030:lI46|H1072435A0 +1072435A0:lI48|H107243AD0 +107243AD0:lI46|H107243FC0 +107243FC0:lI50|H1072444B0 +1072444B0:lI47|H107244960 +107244960:lI108|H107244DD0 +107244DD0:lI105|H107245230 +107245230:lI98|H107245680 +107245680:lI47|H107245A80 +107245A80:lI101|H107245E30 +107245E30:lI114|H1072461C0 +1072461C0:lI108|H107246550 +107246550:lI97|H1072468E0 +1072468E0:lI110|H107246C70 +107246C70:lI103|H107246FA0 +107246FA0:lI47|H1072472C0 +1072472C0:lI108|H1072475D0 +1072475D0:lI105|H1072478D0 +1072478D0:lI98|H107247BD0 +107247BD0:lI47|H107247EB0 +107247EB0:lI109|H107248170 +107248170:lI110|H107248430 +107248430:lI101|H1072486E0 +1072486E0:lI115|H107248990 +107248990:lI105|H107248C10 +107248C10:lI97|H107248E80 +107248E80:lI45|H1072490F0 +1072490F0:lI52|H107249350 +107249350:lI46|H1072495B0 +1072495B0:lI50|H107249800 +107249800:lI50|H107249A20 +107249A20:lI47|H280052C20 +10720E708:lH107211A70|H107211A88 +107211A70:t2:H107214EB0,H107214EC0 +107214EC0:Mh43:F:H107218300,H107218320,H107218350,H107218378,H107218398,H1072183D0,H1072183E8,H107218420,H107218450,H107218470,H107218490,H1072184B8,H1072184C8,H1072184E8,H107218518 +107218300:Mn3:H10721B7F0,H10721B800,H10721B810 +10721B7F0:lH10721ED40|N +10721ED40:lI109|H107222200 +107222200:lI101|H1072253A8 +1072253A8:lI103|H107228200 +107228200:lI97|H10722AC48 +10722AC48:lI99|H10722D360 +10722D360:lI111|H10722F7F8 +10722F7F8:lI95|H107231990 +107231990:lI116|H107233818 +107233818:lI101|H1072353B0 +1072353B0:lI120|H107236CE8 +107236CE8:lI116|H1072383E0 +1072383E0:lI95|H1072398F8 +1072398F8:lI112|H10723ACB0 +10723ACB0:lI97|H10723BDE0 +10723BDE0:lI114|H10723CDA0 +10723CDA0:lI115|H10723DBA0 +10723DBA0:lI101|H10723E820 +10723E820:lI114|H10723F3A0 +10723F3A0:lI95|H10723FDD0 +10723FDD0:lI118|H1072406C0 +1072406C0:lI51|H107240EE0 +107240EE0:lI46|H107241650 +107241650:lI98|H107241D60 +107241D60:lI101|H107242420 +107242420:lI97|H107242A70 +107242A70:lI109|N +10721B810:lH10721ED60|N +10721ED60:lI109|H107222220 +107222220:lI101|H1072253C8 +1072253C8:lI103|H107228220 +107228220:lI97|H10722AC68 +10722AC68:lI99|H10722D380 +10722D380:lI111|H10722F818 +10722F818:lI95|H1072319B0 +1072319B0:lI112|H107233838 +107233838:lI101|H1072353D0 +1072353D0:lI114|H107236D08 +107236D08:lI95|H107238400 +107238400:lI109|H107239918 +107239918:lI101|H10723ACD0 +10723ACD0:lI100|H10723BE00 +10723BE00:lI105|H10723CDC0 +10723CDC0:lI97|H10723DBC0 +10723DBC0:lI95|H10723E830 +10723E830:lI103|H10723F3B0 +10723F3B0:lI97|H10723FDE0 +10723FDE0:lI116|H1072406D0 +1072406D0:lI101|H107240EF0 +107240EF0:lI119|H107241660 +107241660:lI97|H107241D70 +107241D70:lI121|H107242430 +107242430:lI95|H107242A80 +107242A80:lI99|H107243050 +107243050:lI111|H1072435C0 +1072435C0:lI110|H107243AF0 +107243AF0:lI116|H107243FE0 +107243FE0:lI114|H1072444D0 +1072444D0:lI111|H107244980 +107244980:lI108|H107244DF0 +107244DF0:lI95|H107245250 +107245250:lI118|H1072456A0 +1072456A0:lI49|H107245AA0 +107245AA0:lI46|H107245E50 +107245E50:lI98|H1072461E0 +1072461E0:lI101|H107246570 +107246570:lI97|H107246900 +107246900:lI109|N +10721B800:lH10721ED50|N +10721ED50:lI109|H107222210 +107222210:lI101|H1072253B8 +1072253B8:lI103|H107228210 +107228210:lI97|H10722AC58 +10722AC58:lI99|H10722D370 +10722D370:lI111|H10722F808 +10722F808:lI95|H1072319A0 +1072319A0:lI116|H107233828 +107233828:lI105|H1072353C0 +1072353C0:lI109|H107236CF8 +107236CF8:lI101|H1072383F0 +1072383F0:lI114|H107239908 +107239908:lI46|H10723ACC0 +10723ACC0:lI98|H10723BDF0 +10723BDF0:lI101|H10723CDB0 +10723CDB0:lI97|H10723DBB0 +10723DBB0:lI109|N +107218518:Mn5:H10721BB78,H10721BB88,H10721BB98,H10721BBA8,H10721BBB8 +10721BB78:lH10721F110|N +10721F110:lI109|H1072225E0 +1072225E0:lI101|H107225788 +107225788:lI103|H1072285E0 +1072285E0:lI97|H10722B028 +10722B028:lI99|H10722D740 +10722D740:lI111|H10722FBD8 +10722FBD8:lI95|H107231D70 +107231D70:lI98|H107233BF8 +107233BF8:lI105|H107235790 +107235790:lI110|H1072370B8 +1072370B8:lI97|H1072387B0 +1072387B0:lI114|H107239CA8 +107239CA8:lI121|H10723B060 +10723B060:lI95|H10723C190 +10723C190:lI110|H10723D110 +10723D110:lI97|H10723DF10 +10723DF10:lI109|H10723EB70 +10723EB70:lI101|H10723F6D0 +10723F6D0:lI95|H1072400D0 +1072400D0:lI114|H1072409B0 +1072409B0:lI101|H107241190 +107241190:lI115|H1072418E0 +1072418E0:lI111|H107241FD0 +107241FD0:lI108|H107242640 +107242640:lI118|H107242C80 +107242C80:lI101|H107243210 +107243210:lI114|H107243760 +107243760:lI95|H107243C80 +107243C80:lI118|H107244170 +107244170:lI50|H107244620 +107244620:lI46|H107244A90 +107244A90:lI98|H107244F00 +107244F00:lI101|H107245350 +107245350:lI97|H107245750 +107245750:lI109|N +10721BBB8:lH10721F150|N +10721F150:lI109|H107222620 +107222620:lI101|H1072257C8 +1072257C8:lI103|H107228620 +107228620:lI97|H10722B068 +10722B068:lI99|H10722D780 +10722D780:lI111|H10722FC18 +10722FC18:lI95|H107231DB0 +107231DB0:lI101|H107233C38 +107233C38:lI114|H1072357D0 +1072357D0:lI108|H1072370F8 +1072370F8:lI95|H1072387F0 +1072387F0:lI100|H107239CE8 +107239CE8:lI105|H10723B0A0 +10723B0A0:lI115|H10723C1D0 +10723C1D0:lI116|H10723D150 +10723D150:lI95|H10723DF40 +10723DF40:lI101|H10723EBA0 +10723EBA0:lI110|H10723F700 +10723F700:lI99|H107240100 +107240100:lI111|H1072409E0 +1072409E0:lI100|H1072411C0 +1072411C0:lI101|H107241910 +107241910:lI114|H107242000 +107242000:lI46|H107242670 +107242670:lI98|H107242CB0 +107242CB0:lI101|H107243230 +107243230:lI97|H107243780 +107243780:lI109|N +10721BBA8:lH10721F140|N +10721F140:lI109|H107222610 +107222610:lI101|H1072257B8 +1072257B8:lI103|H107228610 +107228610:lI97|H10722B058 +10722B058:lI99|H10722D770 +10722D770:lI111|H10722FC08 +10722FC08:lI95|H107231DA0 +107231DA0:lI99|H107233C28 +107233C28:lI111|H1072357C0 +1072357C0:lI109|H1072370E8 +1072370E8:lI112|H1072387E0 +1072387E0:lI97|H107239CD8 +107239CD8:lI99|H10723B090 +10723B090:lI116|H10723C1C0 +10723C1C0:lI95|H10723D140 +10723D140:lI116|H10723DF30 +10723DF30:lI101|H10723EB90 +10723EB90:lI120|H10723F6F0 +10723F6F0:lI116|H1072400F0 +1072400F0:lI95|H1072409D0 +1072409D0:lI101|H1072411B0 +1072411B0:lI110|H107241900 +107241900:lI99|H107241FF0 +107241FF0:lI111|H107242660 +107242660:lI100|H107242CA0 +107242CA0:lI101|H107243220 +107243220:lI114|H107243770 +107243770:lI46|H107243C90 +107243C90:lI98|H107244180 +107244180:lI101|H107244630 +107244630:lI97|H107244AA0 +107244AA0:lI109|N +10721BB98:lH10721F130|N +10721F130:lI109|H107222600 +107222600:lI101|H1072257A8 +1072257A8:lI103|H107228600 +107228600:lI97|H10722B048 +10722B048:lI99|H10722D760 +10722D760:lI111|H10722FBF8 +10722FBF8:lI95|H107231D90 +107231D90:lI117|H107233C18 +107233C18:lI115|H1072357B0 +1072357B0:lI101|H1072370D8 +1072370D8:lI114|H1072387D0 +1072387D0:lI46|H107239CC8 +107239CC8:lI98|H10723B080 +10723B080:lI101|H10723C1B0 +10723C1B0:lI97|H10723D130 +10723D130:lI109|N +10721BB88:lH10721F120|N +10721F120:lI109|H1072225F0 +1072225F0:lI101|H107225798 +107225798:lI103|H1072285F0 +1072285F0:lI97|H10722B038 +10722B038:lI99|H10722D750 +10722D750:lI111|H10722FBE8 +10722FBE8:lI95|H107231D80 +107231D80:lI101|H107233C08 +107233C08:lI100|H1072357A0 +1072357A0:lI105|H1072370C8 +1072370C8:lI115|H1072387C0 +1072387C0:lI116|H107239CB8 +107239CB8:lI95|H10723B070 +10723B070:lI99|H10723C1A0 +10723C1A0:lI111|H10723D120 +10723D120:lI109|H10723DF20 +10723DF20:lI112|H10723EB80 +10723EB80:lI114|H10723F6E0 +10723F6E0:lI101|H1072400E0 +1072400E0:lI115|H1072409C0 +1072409C0:lI115|H1072411A0 +1072411A0:lI46|H1072418F0 +1072418F0:lI98|H107241FE0 +107241FE0:lI101|H107242650 +107242650:lI97|H107242C90 +107242C90:lI109|N +1072184E8:Mn5:H10721BB20,H10721BB30,H10721BB40,H10721BB58,H10721BB68 +10721BB20:lH10721F0B0|N +10721F0B0:lI109|H107222580 +107222580:lI101|H107225728 +107225728:lI103|H107228580 +107228580:lI97|H10722AFC8 +10722AFC8:lI99|H10722D6E0 +10722D6E0:lI111|H10722FB78 +10722FB78:lI95|H107231D10 +107231D10:lI116|H107233B98 +107233B98:lI99|H107235730 +107235730:lI112|H107237068 +107237068:lI46|H107238760 +107238760:lI98|H107239C58 +107239C58:lI101|H10723B010 +10723B010:lI97|H10723C140 +10723C140:lI109|N +10721BB68:lH10721F100|N +10721F100:lI109|H1072225D0 +1072225D0:lI101|H107225778 +107225778:lI103|H1072285D0 +1072285D0:lI97|H10722B018 +10722B018:lI99|H10722D730 +10722D730:lI111|H10722FBC8 +10722FBC8:lI95|H107231D60 +107231D60:lI102|H107233BE8 +107233BE8:lI105|H107235780 +107235780:lI108|H1072370A8 +1072370A8:lI116|H1072387A0 +1072387A0:lI101|H107239C98 +107239C98:lI114|H10723B050 +10723B050:lI46|H10723C180 +10723C180:lI98|H10723D100 +10723D100:lI101|H10723DF00 +10723DF00:lI97|H10723EB60 +10723EB60:lI109|N +10721BB58:lH10721F0F0|N +10721F0F0:lI109|H1072225C0 +1072225C0:lI101|H107225768 +107225768:lI103|H1072285C0 +1072285C0:lI97|H10722B008 +10722B008:lI99|H10722D720 +10722D720:lI111|H10722FBB8 +10722FBB8:lI95|H107231D50 +107231D50:lI116|H107233BD8 +107233BD8:lI114|H107235770 +107235770:lI97|H107237098 +107237098:lI110|H107238790 +107238790:lI115|H107239C88 +107239C88:lI95|H10723B040 +10723B040:lI115|H10723C170 +10723C170:lI101|H10723D0F0 +10723D0F0:lI110|H10723DEF0 +10723DEF0:lI100|H10723EB50 +10723EB50:lI101|H10723F6C0 +10723F6C0:lI114|H1072400C0 +1072400C0:lI46|H1072409A0 +1072409A0:lI98|H107241180 +107241180:lI101|H1072418D0 +1072418D0:lI97|H107241FC0 +107241FC0:lI109|N +10721BB40:Mn2:H10721F0D0,H10721F0E0 +10721F0D0:lH1072225A0|N +1072225A0:lI109|H107225748 +107225748:lI101|H1072285A0 +1072285A0:lI103|H10722AFE8 +10722AFE8:lI97|H10722D700 +10722D700:lI99|H10722FB98 +10722FB98:lI111|H107231D30 +107231D30:lI95|H107233BB8 +107233BB8:lI98|H107235750 +107235750:lI105|H107237078 +107237078:lI110|H107238770 +107238770:lI97|H107239C68 +107239C68:lI114|H10723B020 +10723B020:lI121|H10723C150 +10723C150:lI95|H10723D0D0 +10723D0D0:lI116|H10723DED0 +10723DED0:lI114|H10723EB30 +10723EB30:lI97|H10723F6A0 +10723F6A0:lI110|H1072400A0 +1072400A0:lI115|H107240980 +107240980:lI102|H107241160 +107241160:lI111|H1072418B0 +1072418B0:lI114|H107241FA0 +107241FA0:lI109|H107242620 +107242620:lI101|H107242C60 +107242C60:lI114|H1072431F0 +1072431F0:lI95|H107243740 +107243740:lI118|H107243C60 +107243C60:lI51|H107244150 +107244150:lI46|H107244600 +107244600:lI98|H107244A70 +107244A70:lI101|H107244EE0 +107244EE0:lI97|H107245330 +107245330:lI109|N +10721F0E0:lH1072225B0|N +1072225B0:lI109|H107225758 +107225758:lI101|H1072285B0 +1072285B0:lI103|H10722AFF8 +10722AFF8:lI97|H10722D710 +10722D710:lI99|H10722FBA8 +10722FBA8:lI111|H107231D40 +107231D40:lI95|H107233BC8 +107233BC8:lI99|H107235760 +107235760:lI111|H107237088 +107237088:lI109|H107238780 +107238780:lI112|H107239C78 +107239C78:lI97|H10723B030 +10723B030:lI99|H10723C160 +10723C160:lI116|H10723D0E0 +10723D0E0:lI95|H10723DEE0 +10723DEE0:lI116|H10723EB40 +10723EB40:lI101|H10723F6B0 +10723F6B0:lI120|H1072400B0 +1072400B0:lI116|H107240990 +107240990:lI95|H107241170 +107241170:lI101|H1072418C0 +1072418C0:lI110|H107241FB0 +107241FB0:lI99|H107242630 +107242630:lI111|H107242C70 +107242C70:lI100|H107243200 +107243200:lI101|H107243750 +107243750:lI114|H107243C70 +107243C70:lI95|H107244160 +107244160:lI118|H107244610 +107244610:lI49|H107244A80 +107244A80:lI46|H107244EF0 +107244EF0:lI98|H107245340 +107245340:lI101|H107245740 +107245740:lI97|H107245B10 +107245B10:lI109|N +10721BB30:lH10721F0C0|N +10721F0C0:lI109|H107222590 +107222590:lI101|H107225738 +107225738:lI103|H107228590 +107228590:lI97|H10722AFD8 +10722AFD8:lI99|H10722D6F0 +10722D6F0:lI111|H10722FB88 +10722FB88:lI46|H107231D20 +107231D20:lI97|H107233BA8 +107233BA8:lI112|H107235740 +107235740:lI112|N +1072184C8:Mn3:H10721BAF0,H10721BB00,H10721BB10 +10721BAF0:lH10721F080|N +10721F080:lI109|H107222550 +107222550:lI101|H1072256F8 +1072256F8:lI103|H107228550 +107228550:lI97|H10722AF98 +10722AF98:lI99|H10722D6B0 +10722D6B0:lI111|H10722FB48 +10722FB48:lI95|H107231CE0 +107231CE0:lI109|H107233B68 +107233B68:lI105|H107235700 +107235700:lI115|H107237038 +107237038:lI99|H107238730 +107238730:lI95|H107239C28 +107239C28:lI115|H10723AFE0 +10723AFE0:lI117|H10723C110 +10723C110:lI112|H10723D0A0 +10723D0A0:lI46|H10723DEA0 +10723DEA0:lI98|H10723EB00 +10723EB00:lI101|H10723F670 +10723F670:lI97|H107240070 +107240070:lI109|N +10721BB10:lH10721F0A0|N +10721F0A0:lI109|H107222570 +107222570:lI101|H107225718 +107225718:lI103|H107228570 +107228570:lI97|H10722AFB8 +10722AFB8:lI99|H10722D6D0 +10722D6D0:lI111|H10722FB68 +10722FB68:lI95|H107231D00 +107231D00:lI109|H107233B88 +107233B88:lI101|H107235720 +107235720:lI115|H107237058 +107237058:lI115|H107238750 +107238750:lI101|H107239C48 +107239C48:lI110|H10723B000 +10723B000:lI103|H10723C130 +10723C130:lI101|H10723D0C0 +10723D0C0:lI114|H10723DEC0 +10723DEC0:lI95|H10723EB20 +10723EB20:lI109|H10723F690 +10723F690:lI105|H107240090 +107240090:lI115|H107240970 +107240970:lI99|H107241150 +107241150:lI46|H1072418A0 +1072418A0:lI98|H107241F90 +107241F90:lI101|H107242610 +107242610:lI97|H107242C50 +107242C50:lI109|N +10721BB00:lH10721F090|N +10721F090:lI109|H107222560 +107222560:lI101|H107225708 +107225708:lI103|H107228560 +107228560:lI97|H10722AFA8 +10722AFA8:lI99|H10722D6C0 +10722D6C0:lI111|H10722FB58 +10722FB58:lI95|H107231CF0 +107231CF0:lI112|H107233B78 +107233B78:lI114|H107235710 +107235710:lI101|H107237048 +107237048:lI116|H107238740 +107238740:lI116|H107239C38 +107239C38:lI121|H10723AFF0 +10723AFF0:lI95|H10723C120 +10723C120:lI116|H10723D0B0 +10723D0B0:lI101|H10723DEB0 +10723DEB0:lI120|H10723EB10 +10723EB10:lI116|H10723F680 +10723F680:lI95|H107240080 +107240080:lI101|H107240960 +107240960:lI110|H107241140 +107241140:lI99|H107241890 +107241890:lI111|H107241F80 +107241F80:lI100|H107242600 +107242600:lI101|H107242C40 +107242C40:lI114|H1072431E0 +1072431E0:lI95|H107243730 +107243730:lI118|H107243C50 +107243C50:lI50|H107244140 +107244140:lI46|H1072445F0 +1072445F0:lI98|H107244A60 +107244A60:lI101|H107244ED0 +107244ED0:lI97|H107245320 +107245320:lI109|N +1072184B8:lH10721BAE0|N +10721BAE0:lI109|H10721F070 +10721F070:lI101|H107222540 +107222540:lI103|H1072256E8 +1072256E8:lI97|H107228540 +107228540:lI99|H10722AF88 +10722AF88:lI111|H10722D6A0 +10722D6A0:lI95|H10722FB38 +10722FB38:lI102|H107231CD0 +107231CD0:lI108|H107233B58 +107233B58:lI101|H1072356F0 +1072356F0:lI120|H107237028 +107237028:lI95|H107238720 +107238720:lI115|H107239C18 +107239C18:lI99|H10723AFD0 +10723AFD0:lI97|H10723C100 +10723C100:lI110|H10723D090 +10723D090:lI110|H10723DE90 +10723DE90:lI101|H10723EAF0 +10723EAF0:lI114|H10723F660 +10723F660:lI95|H107240060 +107240060:lI104|H107240950 +107240950:lI97|H107241130 +107241130:lI110|H107241880 +107241880:lI100|H107241F70 +107241F70:lI108|H1072425F0 +1072425F0:lI101|H107242C30 +107242C30:lI114|H1072431D0 +1072431D0:lI46|H107243720 +107243720:lI98|H107243C40 +107243C40:lI101|H107244130 +107244130:lI97|H1072445E0 +1072445E0:lI109|N +107218490:Mn4:H10721BAA0,H10721BAB0,H10721BAC0,H10721BAD0 +10721BAA0:lH10721F030|N +10721F030:lI109|H107222500 +107222500:lI101|H1072256A8 +1072256A8:lI103|H107228500 +107228500:lI97|H10722AF48 +10722AF48:lI99|H10722D660 +10722D660:lI111|H10722FAF8 +10722FAF8:lI95|H107231C90 +107231C90:lI116|H107233B18 +107233B18:lI99|H1072356B0 +1072356B0:lI112|H107236FE8 +107236FE8:lI95|H1072386E0 +1072386E0:lI99|H107239BD8 +107239BD8:lI111|H10723AF90 +10723AF90:lI110|H10723C0C0 +10723C0C0:lI110|H10723D050 +10723D050:lI101|H10723DE50 +10723DE50:lI99|H10723EAB0 +10723EAB0:lI116|H10723F620 +10723F620:lI105|H107240040 +107240040:lI111|H107240930 +107240930:lI110|H107241110 +107241110:lI95|H107241860 +107241860:lI115|H107241F50 +107241F50:lI117|H1072425D0 +1072425D0:lI112|H107242C10 +107242C10:lI46|H1072431B0 +1072431B0:lI98|H107243700 +107243700:lI101|H107243C20 +107243C20:lI97|H107244110 +107244110:lI109|N +10721BAD0:lH10721F060|N +10721F060:lI109|H107222530 +107222530:lI101|H1072256D8 +1072256D8:lI103|H107228530 +107228530:lI97|H10722AF78 +10722AF78:lI99|H10722D690 +10722D690:lI111|H10722FB28 +10722FB28:lI95|H107231CC0 +107231CC0:lI98|H107233B48 +107233B48:lI105|H1072356E0 +1072356E0:lI110|H107237018 +107237018:lI97|H107238710 +107238710:lI114|H107239C08 +107239C08:lI121|H10723AFC0 +10723AFC0:lI95|H10723C0F0 +10723C0F0:lI101|H10723D080 +10723D080:lI110|H10723DE80 +10723DE80:lI99|H10723EAE0 +10723EAE0:lI111|H10723F650 +10723F650:lI100|H107240050 +107240050:lI101|H107240940 +107240940:lI114|H107241120 +107241120:lI95|H107241870 +107241870:lI108|H107241F60 +107241F60:lI105|H1072425E0 +1072425E0:lI98|H107242C20 +107242C20:lI46|H1072431C0 +1072431C0:lI98|H107243710 +107243710:lI101|H107243C30 +107243C30:lI97|H107244120 +107244120:lI109|N +10721BAC0:lH10721F050|N +10721F050:lI109|H107222520 +107222520:lI101|H1072256C8 +1072256C8:lI103|H107228520 +107228520:lI97|H10722AF68 +10722AF68:lI99|H10722D680 +10722D680:lI111|H10722FB18 +10722FB18:lI95|H107231CB0 +107231CB0:lI117|H107233B38 +107233B38:lI100|H1072356D0 +1072356D0:lI112|H107237008 +107237008:lI95|H107238700 +107238700:lI115|H107239BF8 +107239BF8:lI117|H10723AFB0 +10723AFB0:lI112|H10723C0E0 +10723C0E0:lI46|H10723D070 +10723D070:lI98|H10723DE70 +10723DE70:lI101|H10723EAD0 +10723EAD0:lI97|H10723F640 +10723F640:lI109|N +10721BAB0:lH10721F040|N +10721F040:lI109|H107222510 +107222510:lI101|H1072256B8 +1072256B8:lI103|H107228510 +107228510:lI97|H10722AF58 +10722AF58:lI99|H10722D670 +10722D670:lI111|H10722FB08 +10722FB08:lI95|H107231CA0 +107231CA0:lI109|H107233B28 +107233B28:lI111|H1072356C0 +1072356C0:lI110|H107236FF8 +107236FF8:lI105|H1072386F0 +1072386F0:lI116|H107239BE8 +107239BE8:lI111|H10723AFA0 +10723AFA0:lI114|H10723C0D0 +10723C0D0:lI46|H10723D060 +10723D060:lI98|H10723DE60 +10723DE60:lI101|H10723EAC0 +10723EAC0:lI97|H10723F630 +10723F630:lI109|N +107218470:Mn3:H10721BA70,H10721BA80,H10721BA90 +10721BA70:lH10721F000|N +10721F000:lI109|H1072224D0 +1072224D0:lI101|H107225678 +107225678:lI103|H1072284D0 +1072284D0:lI97|H10722AF18 +10722AF18:lI99|H10722D630 +10722D630:lI111|H10722FAC8 +10722FAC8:lI95|H107231C60 +107231C60:lI116|H107233AE8 +107233AE8:lI114|H107235680 +107235680:lI97|H107236FB8 +107236FB8:lI110|H1072386B0 +1072386B0:lI115|H107239BA8 +107239BA8:lI112|H10723AF60 +10723AF60:lI111|H10723C090 +10723C090:lI114|H10723D020 +10723D020:lI116|H10723DE20 +10723DE20:lI46|H10723EA80 +10723EA80:lI98|H10723F5F0 +10723F5F0:lI101|H107240010 +107240010:lI97|H107240900 +107240900:lI109|N +10721BA90:lH10721F020|N +10721F020:lI109|H1072224F0 +1072224F0:lI101|H107225698 +107225698:lI103|H1072284F0 +1072284F0:lI97|H10722AF38 +10722AF38:lI99|H10722D650 +10722D650:lI111|H10722FAE8 +10722FAE8:lI95|H107231C80 +107231C80:lI98|H107233B08 +107233B08:lI101|H1072356A0 +1072356A0:lI114|H107236FD8 +107236FD8:lI95|H1072386D0 +1072386D0:lI109|H107239BC8 +107239BC8:lI101|H10723AF80 +10723AF80:lI100|H10723C0B0 +10723C0B0:lI105|H10723D040 +10723D040:lI97|H10723DE40 +10723DE40:lI95|H10723EAA0 +10723EAA0:lI103|H10723F610 +10723F610:lI97|H107240030 +107240030:lI116|H107240920 +107240920:lI101|H107241100 +107241100:lI119|H107241850 +107241850:lI97|H107241F40 +107241F40:lI121|H1072425C0 +1072425C0:lI95|H107242C00 +107242C00:lI99|H1072431A0 +1072431A0:lI111|H1072436F0 +1072436F0:lI110|H107243C10 +107243C10:lI116|H107244100 +107244100:lI114|H1072445D0 +1072445D0:lI111|H107244A50 +107244A50:lI108|H107244EC0 +107244EC0:lI95|H107245310 +107245310:lI118|H107245730 +107245730:lI50|H107245B00 +107245B00:lI46|H107245EA0 +107245EA0:lI98|H107246230 +107246230:lI101|H1072465C0 +1072465C0:lI97|H107246950 +107246950:lI109|N +10721BA80:lH10721F010|N +10721F010:lI109|H1072224E0 +1072224E0:lI101|H107225688 +107225688:lI103|H1072284E0 +1072284E0:lI97|H10722AF28 +10722AF28:lI99|H10722D640 +10722D640:lI111|H10722FAD8 +10722FAD8:lI95|H107231C70 +107231C70:lI116|H107233AF8 +107233AF8:lI101|H107235690 +107235690:lI120|H107236FC8 +107236FC8:lI116|H1072386C0 +1072386C0:lI95|H107239BB8 +107239BB8:lI112|H10723AF70 +10723AF70:lI97|H10723C0A0 +10723C0A0:lI114|H10723D030 +10723D030:lI115|H10723DE30 +10723DE30:lI101|H10723EA90 +10723EA90:lI114|H10723F600 +10723F600:lI95|H107240020 +107240020:lI118|H107240910 +107240910:lI49|H1072410F0 +1072410F0:lI46|H107241840 +107241840:lI98|H107241F30 +107241F30:lI101|H1072425B0 +1072425B0:lI97|H107242BF0 +107242BF0:lI109|N +107218450:Mn3:H10721BA40,H10721BA50,H10721BA60 +10721BA40:lH10721EFD0|N +10721EFD0:lI109|H1072224A0 +1072224A0:lI101|H107225648 +107225648:lI103|H1072284A0 +1072284A0:lI97|H10722AEE8 +10722AEE8:lI99|H10722D600 +10722D600:lI111|H10722FA98 +10722FA98:lI95|H107231C30 +107231C30:lI115|H107233AB8 +107233AB8:lI117|H107235650 +107235650:lI112|H107236F88 +107236F88:lI46|H107238680 +107238680:lI98|H107239B78 +107239B78:lI101|H10723AF30 +10723AF30:lI97|H10723C060 +10723C060:lI109|N +10721BA60:lH10721EFF0|N +10721EFF0:lI109|H1072224C0 +1072224C0:lI101|H107225668 +107225668:lI103|H1072284C0 +1072284C0:lI97|H10722AF08 +10722AF08:lI99|H10722D620 +10722D620:lI111|H10722FAB8 +10722FAB8:lI95|H107231C50 +107231C50:lI98|H107233AD8 +107233AD8:lI101|H107235670 +107235670:lI114|H107236FA8 +107236FA8:lI95|H1072386A0 +1072386A0:lI101|H107239B98 +107239B98:lI110|H10723AF50 +10723AF50:lI99|H10723C080 +10723C080:lI111|H10723D010 +10723D010:lI100|H10723DE10 +10723DE10:lI101|H10723EA70 +10723EA70:lI114|H10723F5E0 +10723F5E0:lI46|H107240000 +107240000:lI98|H1072408F0 +1072408F0:lI101|H1072410E0 +1072410E0:lI97|H107241830 +107241830:lI109|N +10721BA50:lH10721EFE0|N +10721EFE0:lI109|H1072224B0 +1072224B0:lI101|H107225658 +107225658:lI103|H1072284B0 +1072284B0:lI97|H10722AEF8 +10722AEF8:lI99|H10722D610 +10722D610:lI111|H10722FAA8 +10722FAA8:lI95|H107231C40 +107231C40:lI100|H107233AC8 +107233AC8:lI105|H107235660 +107235660:lI103|H107236F98 +107236F98:lI105|H107238690 +107238690:lI116|H107239B88 +107239B88:lI95|H10723AF40 +10723AF40:lI109|H10723C070 +10723C070:lI97|H10723D000 +10723D000:lI112|H10723DE00 +10723DE00:lI46|H10723EA60 +10723EA60:lI98|H10723F5D0 +10723F5D0:lI101|H10723FFF0 +10723FFF0:lI97|H1072408E0 +1072408E0:lI109|N +107218420:Mn5:H10721B9F0,H10721BA00,H10721BA10,H10721BA20,H10721BA30 +10721B9F0:lH10721EF80|N +10721EF80:lI109|H107222450 +107222450:lI101|H1072255F8 +1072255F8:lI103|H107228450 +107228450:lI97|H10722AE98 +10722AE98:lI99|H10722D5B0 +10722D5B0:lI111|H10722FA48 +10722FA48:lI95|H107231BE0 +107231BE0:lI112|H107233A68 +107233A68:lI101|H107235600 +107235600:lI114|H107236F38 +107236F38:lI95|H107238630 +107238630:lI109|H107239B38 +107239B38:lI101|H10723AEF0 +10723AEF0:lI100|H10723C020 +10723C020:lI105|H10723CFC0 +10723CFC0:lI97|H10723DDC0 +10723DDC0:lI95|H10723EA20 +10723EA20:lI103|H10723F590 +10723F590:lI97|H10723FFB0 +10723FFB0:lI116|H1072408A0 +1072408A0:lI101|H1072410A0 +1072410A0:lI119|H1072417F0 +1072417F0:lI97|H107241EF0 +107241EF0:lI121|H107242570 +107242570:lI95|H107242BB0 +107242BB0:lI99|H107243160 +107243160:lI111|H1072436B0 +1072436B0:lI110|H107243BD0 +107243BD0:lI116|H1072440C0 +1072440C0:lI114|H107244590 +107244590:lI111|H107244A10 +107244A10:lI108|H107244E80 +107244E80:lI95|H1072452D0 +1072452D0:lI118|H107245700 +107245700:lI50|H107245AE0 +107245AE0:lI46|H107245E80 +107245E80:lI98|H107246210 +107246210:lI101|H1072465A0 +1072465A0:lI97|H107246930 +107246930:lI109|N +10721BA30:lH10721EFC0|N +10721EFC0:lI109|H107222490 +107222490:lI101|H107225638 +107225638:lI103|H107228490 +107228490:lI97|H10722AED8 +10722AED8:lI99|H10722D5F0 +10722D5F0:lI111|H10722FA88 +10722FA88:lI46|H107231C20 +107231C20:lI97|H107233AA8 +107233AA8:lI112|H107235640 +107235640:lI112|H107236F78 +107236F78:lI117|H107238670 +107238670:lI112|N +10721BA20:lH10721EFB0|N +10721EFB0:lI109|H107222480 +107222480:lI101|H107225628 +107225628:lI103|H107228480 +107228480:lI97|H10722AEC8 +10722AEC8:lI99|H10722D5E0 +10722D5E0:lI111|H10722FA78 +10722FA78:lI95|H107231C10 +107231C10:lI112|H107233A98 +107233A98:lI101|H107235630 +107235630:lI114|H107236F68 +107236F68:lI95|H107238660 +107238660:lI109|H107239B68 +107239B68:lI101|H10723AF20 +10723AF20:lI100|H10723C050 +10723C050:lI105|H10723CFF0 +10723CFF0:lI97|H10723DDF0 +10723DDF0:lI95|H10723EA50 +10723EA50:lI103|H10723F5C0 +10723F5C0:lI97|H10723FFE0 +10723FFE0:lI116|H1072408D0 +1072408D0:lI101|H1072410D0 +1072410D0:lI119|H107241820 +107241820:lI97|H107241F20 +107241F20:lI121|H1072425A0 +1072425A0:lI95|H107242BE0 +107242BE0:lI99|H107243190 +107243190:lI111|H1072436E0 +1072436E0:lI110|H107243C00 +107243C00:lI116|H1072440F0 +1072440F0:lI114|H1072445C0 +1072445C0:lI111|H107244A40 +107244A40:lI108|H107244EB0 +107244EB0:lI95|H107245300 +107245300:lI118|H107245720 +107245720:lI51|H107245AF0 +107245AF0:lI46|H107245E90 +107245E90:lI98|H107246220 +107246220:lI101|H1072465B0 +1072465B0:lI97|H107246940 +107246940:lI109|N +10721BA10:lH10721EFA0|N +10721EFA0:lI109|H107222470 +107222470:lI101|H107225618 +107225618:lI103|H107228470 +107228470:lI97|H10722AEB8 +10722AEB8:lI99|H10722D5D0 +10722D5D0:lI111|H10722FA68 +10722FA68:lI95|H107231C00 +107231C00:lI112|H107233A88 +107233A88:lI114|H107235620 +107235620:lI101|H107236F58 +107236F58:lI116|H107238650 +107238650:lI116|H107239B58 +107239B58:lI121|H10723AF10 +10723AF10:lI95|H10723C040 +10723C040:lI116|H10723CFE0 +10723CFE0:lI101|H10723DDE0 +10723DDE0:lI120|H10723EA40 +10723EA40:lI116|H10723F5B0 +10723F5B0:lI95|H10723FFD0 +10723FFD0:lI101|H1072408C0 +1072408C0:lI110|H1072410C0 +1072410C0:lI99|H107241810 +107241810:lI111|H107241F10 +107241F10:lI100|H107242590 +107242590:lI101|H107242BD0 +107242BD0:lI114|H107243180 +107243180:lI95|H1072436D0 +1072436D0:lI118|H107243BF0 +107243BF0:lI51|H1072440E0 +1072440E0:lI46|H1072445B0 +1072445B0:lI98|H107244A30 +107244A30:lI101|H107244EA0 +107244EA0:lI97|H1072452F0 +1072452F0:lI109|N +10721BA00:lH10721EF90|N +10721EF90:lI109|H107222460 +107222460:lI101|H107225608 +107225608:lI103|H107228460 +107228460:lI97|H10722AEA8 +10722AEA8:lI99|H10722D5C0 +10722D5C0:lI111|H10722FA58 +10722FA58:lI95|H107231BF0 +107231BF0:lI98|H107233A78 +107233A78:lI105|H107235610 +107235610:lI110|H107236F48 +107236F48:lI97|H107238640 +107238640:lI114|H107239B48 +107239B48:lI121|H10723AF00 +10723AF00:lI95|H10723C030 +10723C030:lI110|H10723CFD0 +10723CFD0:lI97|H10723DDD0 +10723DDD0:lI109|H10723EA30 +10723EA30:lI101|H10723F5A0 +10723F5A0:lI95|H10723FFC0 +10723FFC0:lI114|H1072408B0 +1072408B0:lI101|H1072410B0 +1072410B0:lI115|H107241800 +107241800:lI111|H107241F00 +107241F00:lI108|H107242580 +107242580:lI118|H107242BC0 +107242BC0:lI101|H107243170 +107243170:lI114|H1072436C0 +1072436C0:lI95|H107243BE0 +107243BE0:lI118|H1072440D0 +1072440D0:lI49|H1072445A0 +1072445A0:lI46|H107244A20 +107244A20:lI98|H107244E90 +107244E90:lI101|H1072452E0 +1072452E0:lI97|H107245710 +107245710:lI109|N +1072183E8:Mn6:H10721B980,H10721B990,H10721B9A0,H10721B9B0,H10721B9D0,H10721B9E0 +10721B980:lH10721EF00|N +10721EF00:lI109|H1072223D0 +1072223D0:lI101|H107225578 +107225578:lI103|H1072283D0 +1072283D0:lI97|H10722AE18 +10722AE18:lI99|H10722D530 +10722D530:lI111|H10722F9C8 +10722F9C8:lI95|H107231B60 +107231B60:lI98|H1072339E8 +1072339E8:lI105|H107235580 +107235580:lI110|H107236EB8 +107236EB8:lI97|H1072385B0 +1072385B0:lI114|H107239AC8 +107239AC8:lI121|H10723AE80 +10723AE80:lI95|H10723BFB0 +10723BFB0:lI116|H10723CF60 +10723CF60:lI114|H10723DD60 +10723DD60:lI97|H10723E9C0 +10723E9C0:lI110|H10723F530 +10723F530:lI115|H10723FF50 +10723FF50:lI102|H107240840 +107240840:lI111|H107241040 +107241040:lI114|H107241790 +107241790:lI109|H107241E90 +107241E90:lI101|H107242520 +107242520:lI114|H107242B60 +107242B60:lI95|H107243110 +107243110:lI118|H107243670 +107243670:lI49|H107243B90 +107243B90:lI46|H107244080 +107244080:lI98|H107244560 +107244560:lI101|H1072449F0 +1072449F0:lI97|H107244E60 +107244E60:lI109|N +10721B9E0:lH10721EF70|N +10721EF70:lI109|H107222440 +107222440:lI101|H1072255E8 +1072255E8:lI103|H107228440 +107228440:lI97|H10722AE88 +10722AE88:lI99|H10722D5A0 +10722D5A0:lI111|H10722FA38 +10722FA38:lI95|H107231BD0 +107231BD0:lI102|H107233A58 +107233A58:lI108|H1072355F0 +1072355F0:lI101|H107236F28 +107236F28:lI120|H107238620 +107238620:lI95|H107239B28 +107239B28:lI115|H10723AEE0 +10723AEE0:lI99|H10723C010 +10723C010:lI97|H10723CFB0 +10723CFB0:lI110|H10723DDB0 +10723DDB0:lI110|H10723EA10 +10723EA10:lI101|H10723F580 +10723F580:lI114|H10723FFA0 +10723FFA0:lI46|H107240890 +107240890:lI98|H107241090 +107241090:lI101|H1072417E0 +1072417E0:lI97|H107241EE0 +107241EE0:lI109|N +10721B9D0:lH10721EF60|N +10721EF60:lI109|H107222430 +107222430:lI101|H1072255D8 +1072255D8:lI103|H107228430 +107228430:lI97|H10722AE78 +10722AE78:lI99|H10722D590 +10722D590:lI111|H10722FA28 +10722FA28:lI95|H107231BC0 +107231BC0:lI115|H107233A48 +107233A48:lI100|H1072355E0 +1072355E0:lI112|H107236F18 +107236F18:lI46|H107238610 +107238610:lI98|H107239B18 +107239B18:lI101|H10723AED0 +10723AED0:lI97|H10723C000 +10723C000:lI109|N +10721B9B0:Mn3:H10721EF30,H10721EF40,H10721EF50 +10721EF30:lH107222400|N +107222400:lI109|H1072255A8 +1072255A8:lI101|H107228400 +107228400:lI103|H10722AE48 +10722AE48:lI97|H10722D560 +10722D560:lI99|H10722F9F8 +10722F9F8:lI111|H107231B90 +107231B90:lI46|H107233A18 +107233A18:lI98|H1072355B0 +1072355B0:lI101|H107236EE8 +107236EE8:lI97|H1072385E0 +1072385E0:lI109|N +10721EF50:lH107222420|N +107222420:lI109|H1072255C8 +1072255C8:lI101|H107228420 +107228420:lI103|H10722AE68 +10722AE68:lI97|H10722D580 +10722D580:lI99|H10722FA18 +10722FA18:lI111|H107231BB0 +107231BB0:lI95|H107233A38 +107233A38:lI116|H1072355D0 +1072355D0:lI101|H107236F08 +107236F08:lI120|H107238600 +107238600:lI116|H107239B08 +107239B08:lI95|H10723AEC0 +10723AEC0:lI109|H10723BFF0 +10723BFF0:lI105|H10723CFA0 +10723CFA0:lI110|H10723DDA0 +10723DDA0:lI105|H10723EA00 +10723EA00:lI95|H10723F570 +10723F570:lI100|H10723FF90 +10723FF90:lI101|H107240880 +107240880:lI99|H107241080 +107241080:lI111|H1072417D0 +1072417D0:lI100|H107241ED0 +107241ED0:lI101|H107242560 +107242560:lI114|H107242BA0 +107242BA0:lI46|H107243150 +107243150:lI98|H1072436A0 +1072436A0:lI101|H107243BC0 +107243BC0:lI97|H1072440B0 +1072440B0:lI109|N +10721EF40:lH107222410|N +107222410:lI109|H1072255B8 +1072255B8:lI101|H107228410 +107228410:lI103|H10722AE58 +10722AE58:lI97|H10722D570 +10722D570:lI99|H10722FA08 +10722FA08:lI111|H107231BA0 +107231BA0:lI95|H107233A28 +107233A28:lI116|H1072355C0 +1072355C0:lI99|H107236EF8 +107236EF8:lI112|H1072385F0 +1072385F0:lI95|H107239AF8 +107239AF8:lI97|H10723AEB0 +10723AEB0:lI99|H10723BFE0 +10723BFE0:lI99|H10723CF90 +10723CF90:lI101|H10723DD90 +10723DD90:lI112|H10723E9F0 +10723E9F0:lI116|H10723F560 +10723F560:lI95|H10723FF80 +10723FF80:lI115|H107240870 +107240870:lI117|H107241070 +107241070:lI112|H1072417C0 +1072417C0:lI46|H107241EC0 +107241EC0:lI98|H107242550 +107242550:lI101|H107242B90 +107242B90:lI97|H107243140 +107243140:lI109|N +10721B9A0:lH10721EF20|N +10721EF20:lI109|H1072223F0 +1072223F0:lI101|H107225598 +107225598:lI103|H1072283F0 +1072283F0:lI97|H10722AE38 +10722AE38:lI99|H10722D550 +10722D550:lI111|H10722F9E8 +10722F9E8:lI95|H107231B80 +107231B80:lI98|H107233A08 +107233A08:lI105|H1072355A0 +1072355A0:lI110|H107236ED8 +107236ED8:lI97|H1072385D0 +1072385D0:lI114|H107239AE8 +107239AE8:lI121|H10723AEA0 +10723AEA0:lI95|H10723BFD0 +10723BFD0:lI110|H10723CF80 +10723CF80:lI97|H10723DD80 +10723DD80:lI109|H10723E9E0 +10723E9E0:lI101|H10723F550 +10723F550:lI95|H10723FF70 +10723FF70:lI114|H107240860 +107240860:lI101|H107241060 +107241060:lI115|H1072417B0 +1072417B0:lI111|H107241EB0 +107241EB0:lI108|H107242540 +107242540:lI118|H107242B80 +107242B80:lI101|H107243130 +107243130:lI114|H107243690 +107243690:lI95|H107243BB0 +107243BB0:lI118|H1072440A0 +1072440A0:lI51|H107244580 +107244580:lI46|H107244A00 +107244A00:lI98|H107244E70 +107244E70:lI101|H1072452C0 +1072452C0:lI97|H1072456F0 +1072456F0:lI109|N +10721B990:lH10721EF10|N +10721EF10:lI109|H1072223E0 +1072223E0:lI101|H107225588 +107225588:lI103|H1072283E0 +1072283E0:lI97|H10722AE28 +10722AE28:lI99|H10722D540 +10722D540:lI111|H10722F9D8 +10722F9D8:lI95|H107231B70 +107231B70:lI101|H1072339F8 +1072339F8:lI114|H107235590 +107235590:lI108|H107236EC8 +107236EC8:lI95|H1072385C0 +1072385C0:lI100|H107239AD8 +107239AD8:lI105|H10723AE90 +10723AE90:lI115|H10723BFC0 +10723BFC0:lI116|H10723CF70 +10723CF70:lI95|H10723DD70 +10723DD70:lI101|H10723E9D0 +10723E9D0:lI110|H10723F540 +10723F540:lI99|H10723FF60 +10723FF60:lI111|H107240850 +107240850:lI100|H107241050 +107241050:lI101|H1072417A0 +1072417A0:lI114|H107241EA0 +107241EA0:lI95|H107242530 +107242530:lI109|H107242B70 +107242B70:lI99|H107243120 +107243120:lI46|H107243680 +107243680:lI98|H107243BA0 +107243BA0:lI101|H107244090 +107244090:lI97|H107244570 +107244570:lI109|N +1072183D0:Mn2:H10721B958,H10721B970 +10721B958:Mn2:H10721EED0,H10721EEE0 +10721EED0:lH1072223A0|N +1072223A0:lI109|H107225548 +107225548:lI101|H1072283A0 +1072283A0:lI103|H10722ADE8 +10722ADE8:lI97|H10722D500 +10722D500:lI99|H10722F998 +10722F998:lI111|H107231B30 +107231B30:lI95|H1072339B8 +1072339B8:lI99|H107235550 +107235550:lI111|H107236E88 +107236E88:lI109|H107238580 +107238580:lI112|H107239A98 +107239A98:lI97|H10723AE50 +10723AE50:lI99|H10723BF80 +10723BF80:lI116|H10723CF30 +10723CF30:lI95|H10723DD30 +10723DD30:lI116|H10723E990 +10723E990:lI101|H10723F500 +10723F500:lI120|H10723FF20 +10723FF20:lI116|H107240810 +107240810:lI95|H107241010 +107241010:lI101|H107241760 +107241760:lI110|H107241E60 +107241E60:lI99|H107242510 +107242510:lI111|H107242B50 +107242B50:lI100|H107243100 +107243100:lI101|H107243660 +107243660:lI114|H107243B80 +107243B80:lI95|H107244070 +107244070:lI118|H107244550 +107244550:lI50|H1072449E0 +1072449E0:lI46|H107244E50 +107244E50:lI98|H1072452B0 +1072452B0:lI101|H1072456E0 +1072456E0:lI97|H107245AD0 +107245AD0:lI109|N +10721EEE0:lH1072223B0|N +1072223B0:lI109|H107225558 +107225558:lI101|H1072283B0 +1072283B0:lI103|H10722ADF8 +10722ADF8:lI97|H10722D510 +10722D510:lI99|H10722F9A8 +10722F9A8:lI111|H107231B40 +107231B40:lI95|H1072339C8 +1072339C8:lI112|H107235560 +107235560:lI101|H107236E98 +107236E98:lI114|H107238590 +107238590:lI95|H107239AA8 +107239AA8:lI101|H10723AE60 +10723AE60:lI110|H10723BF90 +10723BF90:lI99|H10723CF40 +10723CF40:lI111|H10723DD40 +10723DD40:lI100|H10723E9A0 +10723E9A0:lI101|H10723F510 +10723F510:lI114|H10723FF30 +10723FF30:lI46|H107240820 +107240820:lI98|H107241020 +107241020:lI101|H107241770 +107241770:lI97|H107241E70 +107241E70:lI109|N +10721B970:lH10721EEF0|N +10721EEF0:lI109|H1072223C0 +1072223C0:lI101|H107225568 +107225568:lI103|H1072283C0 +1072283C0:lI97|H10722AE08 +10722AE08:lI99|H10722D520 +10722D520:lI111|H10722F9B8 +10722F9B8:lI95|H107231B50 +107231B50:lI117|H1072339D8 +1072339D8:lI115|H107235570 +107235570:lI101|H107236EA8 +107236EA8:lI114|H1072385A0 +1072385A0:lI95|H107239AB8 +107239AB8:lI100|H10723AE70 +10723AE70:lI101|H10723BFA0 +10723BFA0:lI102|H10723CF50 +10723CF50:lI97|H10723DD50 +10723DD50:lI117|H10723E9B0 +10723E9B0:lI108|H10723F520 +10723F520:lI116|H10723FF40 +10723FF40:lI46|H107240830 +107240830:lI98|H107241030 +107241030:lI101|H107241780 +107241780:lI97|H107241E80 +107241E80:lI109|N +107218398:Mn6:H10721B8E8,H10721B8F8,H10721B910,H10721B928,H10721B938,H10721B948 +10721B8E8:lH10721EE50|N +10721EE50:lI109|H107222320 +107222320:lI101|H1072254C8 +1072254C8:lI103|H107228320 +107228320:lI97|H10722AD68 +10722AD68:lI99|H10722D480 +10722D480:lI111|H10722F918 +10722F918:lI95|H107231AB0 +107231AB0:lI112|H107233938 +107233938:lI114|H1072354D0 +1072354D0:lI101|H107236E08 +107236E08:lI116|H107238500 +107238500:lI116|H107239A18 +107239A18:lI121|H10723ADD0 +10723ADD0:lI95|H10723BF00 +10723BF00:lI116|H10723CEB0 +10723CEB0:lI101|H10723DCB0 +10723DCB0:lI120|H10723E920 +10723E920:lI116|H10723F490 +10723F490:lI95|H10723FEB0 +10723FEB0:lI101|H1072407A0 +1072407A0:lI110|H107240FA0 +107240FA0:lI99|H1072416F0 +1072416F0:lI111|H107241E00 +107241E00:lI100|H1072424B0 +1072424B0:lI101|H107242AF0 +107242AF0:lI114|H1072430B0 +1072430B0:lI95|H107243620 +107243620:lI118|H107243B40 +107243B40:lI49|H107244030 +107244030:lI46|H107244510 +107244510:lI98|H1072449B0 +1072449B0:lI101|H107244E20 +107244E20:lI97|H107245280 +107245280:lI109|N +10721B948:lH10721EEC0|N +10721EEC0:lI109|H107222390 +107222390:lI101|H107225538 +107225538:lI103|H107228390 +107228390:lI97|H10722ADD8 +10722ADD8:lI99|H10722D4F0 +10722D4F0:lI111|H10722F988 +10722F988:lI95|H107231B20 +107231B20:lI98|H1072339A8 +1072339A8:lI105|H107235540 +107235540:lI110|H107236E78 +107236E78:lI97|H107238570 +107238570:lI114|H107239A88 +107239A88:lI121|H10723AE40 +10723AE40:lI95|H10723BF70 +10723BF70:lI116|H10723CF20 +10723CF20:lI101|H10723DD20 +10723DD20:lI114|H10723E980 +10723E980:lI109|H10723F4F0 +10723F4F0:lI95|H10723FF10 +10723FF10:lI105|H107240800 +107240800:lI100|H107241000 +107241000:lI46|H107241750 +107241750:lI98|H107241E50 +107241E50:lI101|H107242500 +107242500:lI97|H107242B40 +107242B40:lI109|N +10721B938:lH10721EEB0|N +10721EEB0:lI109|H107222380 +107222380:lI101|H107225528 +107225528:lI103|H107228380 +107228380:lI97|H10722ADC8 +10722ADC8:lI99|H10722D4E0 +10722D4E0:lI111|H10722F978 +10722F978:lI95|H107231B10 +107231B10:lI115|H107233998 +107233998:lI116|H107235530 +107235530:lI97|H107236E68 +107236E68:lI116|H107238560 +107238560:lI115|H107239A78 +107239A78:lI46|H10723AE30 +10723AE30:lI98|H10723BF60 +10723BF60:lI101|H10723CF10 +10723CF10:lI97|H10723DD10 +10723DD10:lI109|N +10721B928:lH10721EEA0|N +10721EEA0:lI109|H107222370 +107222370:lI101|H107225518 +107225518:lI103|H107228370 +107228370:lI97|H10722ADB8 +10722ADB8:lI99|H10722D4D0 +10722D4D0:lI111|H10722F968 +10722F968:lI95|H107231B00 +107231B00:lI99|H107233988 +107233988:lI111|H107235520 +107235520:lI109|H107236E58 +107236E58:lI112|H107238550 +107238550:lI97|H107239A68 +107239A68:lI99|H10723AE20 +10723AE20:lI116|H10723BF50 +10723BF50:lI95|H10723CF00 +10723CF00:lI116|H10723DD00 +10723DD00:lI101|H10723E970 +10723E970:lI120|H10723F4E0 +10723F4E0:lI116|H10723FF00 +10723FF00:lI95|H1072407F0 +1072407F0:lI101|H107240FF0 +107240FF0:lI110|H107241740 +107241740:lI99|H107241E40 +107241E40:lI111|H1072424F0 +1072424F0:lI100|H107242B30 +107242B30:lI101|H1072430F0 +1072430F0:lI114|H107243650 +107243650:lI95|H107243B70 +107243B70:lI118|H107244060 +107244060:lI51|H107244540 +107244540:lI46|H1072449D0 +1072449D0:lI98|H107244E40 +107244E40:lI101|H1072452A0 +1072452A0:lI97|H1072456D0 +1072456D0:lI109|N +10721B910:Mn2:H10721EE80,H10721EE90 +10721EE80:lH107222350|N +107222350:lI109|H1072254F8 +1072254F8:lI101|H107228350 +107228350:lI103|H10722AD98 +10722AD98:lI97|H10722D4B0 +10722D4B0:lI99|H10722F948 +10722F948:lI111|H107231AE0 +107231AE0:lI95|H107233968 +107233968:lI98|H107235500 +107235500:lI101|H107236E38 +107236E38:lI114|H107238530 +107238530:lI95|H107239A48 +107239A48:lI109|H10723AE00 +10723AE00:lI101|H10723BF30 +10723BF30:lI100|H10723CEE0 +10723CEE0:lI105|H10723DCE0 +10723DCE0:lI97|H10723E950 +10723E950:lI95|H10723F4C0 +10723F4C0:lI103|H10723FEE0 +10723FEE0:lI97|H1072407D0 +1072407D0:lI116|H107240FD0 +107240FD0:lI101|H107241720 +107241720:lI119|H107241E30 +107241E30:lI97|H1072424E0 +1072424E0:lI121|H107242B20 +107242B20:lI95|H1072430E0 +1072430E0:lI99|H107243640 +107243640:lI111|H107243B60 +107243B60:lI110|H107244050 +107244050:lI116|H107244530 +107244530:lI114|H1072449C0 +1072449C0:lI111|H107244E30 +107244E30:lI108|H107245290 +107245290:lI95|H1072456C0 +1072456C0:lI118|H107245AC0 +107245AC0:lI51|H107245E70 +107245E70:lI46|H107246200 +107246200:lI98|H107246590 +107246590:lI101|H107246920 +107246920:lI97|H107246C90 +107246C90:lI109|N +10721EE90:lH107222360|N +107222360:lI109|H107225508 +107225508:lI101|H107228360 +107228360:lI103|H10722ADA8 +10722ADA8:lI97|H10722D4C0 +10722D4C0:lI99|H10722F958 +10722F958:lI111|H107231AF0 +107231AF0:lI95|H107233978 +107233978:lI116|H107235510 +107235510:lI99|H107236E48 +107236E48:lI112|H107238540 +107238540:lI95|H107239A58 +107239A58:lI97|H10723AE10 +10723AE10:lI99|H10723BF40 +10723BF40:lI99|H10723CEF0 +10723CEF0:lI101|H10723DCF0 +10723DCF0:lI112|H10723E960 +10723E960:lI116|H10723F4D0 +10723F4D0:lI46|H10723FEF0 +10723FEF0:lI98|H1072407E0 +1072407E0:lI101|H107240FE0 +107240FE0:lI97|H107241730 +107241730:lI109|N +10721B8F8:Mn2:H10721EE60,H10721EE70 +10721EE60:lH107222330|N +107222330:lI109|H1072254D8 +1072254D8:lI101|H107228330 +107228330:lI103|H10722AD78 +10722AD78:lI97|H10722D490 +10722D490:lI99|H10722F928 +10722F928:lI111|H107231AC0 +107231AC0:lI95|H107233948 +107233948:lI116|H1072354E0 +1072354E0:lI101|H107236E18 +107236E18:lI120|H107238510 +107238510:lI116|H107239A28 +107239A28:lI95|H10723ADE0 +10723ADE0:lI112|H10723BF10 +10723BF10:lI97|H10723CEC0 +10723CEC0:lI114|H10723DCC0 +10723DCC0:lI115|H10723E930 +10723E930:lI101|H10723F4A0 +10723F4A0:lI114|H10723FEC0 +10723FEC0:lI95|H1072407B0 +1072407B0:lI118|H107240FB0 +107240FB0:lI50|H107241700 +107241700:lI46|H107241E10 +107241E10:lI98|H1072424C0 +1072424C0:lI101|H107242B00 +107242B00:lI97|H1072430C0 +1072430C0:lI109|N +10721EE70:lH107222340|N +107222340:lI109|H1072254E8 +1072254E8:lI101|H107228340 +107228340:lI103|H10722AD88 +10722AD88:lI97|H10722D4A0 +10722D4A0:lI99|H10722F938 +10722F938:lI111|H107231AD0 +107231AD0:lI95|H107233958 +107233958:lI98|H1072354F0 +1072354F0:lI105|H107236E28 +107236E28:lI110|H107238520 +107238520:lI97|H107239A38 +107239A38:lI114|H10723ADF0 +10723ADF0:lI121|H10723BF20 +10723BF20:lI95|H10723CED0 +10723CED0:lI116|H10723DCD0 +10723DCD0:lI101|H10723E940 +10723E940:lI114|H10723F4B0 +10723F4B0:lI109|H10723FED0 +10723FED0:lI95|H1072407C0 +1072407C0:lI105|H107240FC0 +107240FC0:lI100|H107241710 +107241710:lI95|H107241E20 +107241E20:lI103|H1072424D0 +1072424D0:lI101|H107242B10 +107242B10:lI110|H1072430D0 +1072430D0:lI46|H107243630 +107243630:lI98|H107243B50 +107243B50:lI101|H107244040 +107244040:lI97|H107244520 +107244520:lI109|N +107218378:Mn3:H10721B8B8,H10721B8C8,H10721B8D8 +10721B8B8:lH10721EE18|N +10721EE18:lI109|H1072222E0 +1072222E0:lI101|H107225488 +107225488:lI103|H1072282E0 +1072282E0:lI97|H10722AD28 +10722AD28:lI99|H10722D440 +10722D440:lI111|H10722F8D8 +10722F8D8:lI95|H107231A70 +107231A70:lI101|H1072338F8 +1072338F8:lI110|H107235490 +107235490:lI99|H107236DC8 +107236DC8:lI111|H1072384C0 +1072384C0:lI100|H1072399D8 +1072399D8:lI101|H10723AD90 +10723AD90:lI114|H10723BEC0 +10723BEC0:lI46|H10723CE70 +10723CE70:lI98|H10723DC70 +10723DC70:lI101|H10723E8E0 +10723E8E0:lI97|H10723F460 +10723F460:lI109|N +10721B8D8:Mn1:H10721EE38 +10721EE38:Mn2:H107222300,H107222310 +107222300:lH1072254A8|N +1072254A8:lI109|H107228300 +107228300:lI101|H10722AD48 +10722AD48:lI103|H10722D460 +10722D460:lI97|H10722F8F8 +10722F8F8:lI99|H107231A90 +107231A90:lI111|H107233918 +107233918:lI95|H1072354B0 +1072354B0:lI116|H107236DE8 +107236DE8:lI99|H1072384E0 +1072384E0:lI112|H1072399F8 +1072399F8:lI95|H10723ADB0 +10723ADB0:lI115|H10723BEE0 +10723BEE0:lI117|H10723CE90 +10723CE90:lI112|H10723DC90 +10723DC90:lI46|H10723E900 +10723E900:lI98|H10723F470 +10723F470:lI101|H10723FE90 +10723FE90:lI97|H107240780 +107240780:lI109|N +107222310:lH1072254B8|N +1072254B8:lI109|H107228310 +107228310:lI101|H10722AD58 +10722AD58:lI103|H10722D470 +10722D470:lI97|H10722F908 +10722F908:lI99|H107231AA0 +107231AA0:lI111|H107233928 +107233928:lI95|H1072354C0 +1072354C0:lI116|H107236DF8 +107236DF8:lI101|H1072384F0 +1072384F0:lI120|H107239A08 +107239A08:lI116|H10723ADC0 +10723ADC0:lI95|H10723BEF0 +10723BEF0:lI109|H10723CEA0 +10723CEA0:lI105|H10723DCA0 +10723DCA0:lI110|H10723E910 +10723E910:lI105|H10723F480 +10723F480:lI95|H10723FEA0 +10723FEA0:lI112|H107240790 +107240790:lI97|H107240F90 +107240F90:lI114|H1072416E0 +1072416E0:lI115|H107241DF0 +107241DF0:lI101|H1072424A0 +1072424A0:lI114|H107242AE0 +107242AE0:lI46|H1072430A0 +1072430A0:lI98|H107243610 +107243610:lI101|H107243B30 +107243B30:lI97|H107244020 +107244020:lI109|N +10721B8C8:lH10721EE28|N +10721EE28:lI109|H1072222F0 +1072222F0:lI101|H107225498 +107225498:lI103|H1072282F0 +1072282F0:lI97|H10722AD38 +10722AD38:lI99|H10722D450 +10722D450:lI111|H10722F8E8 +10722F8E8:lI95|H107231A80 +107231A80:lI99|H107233908 +107233908:lI111|H1072354A0 +1072354A0:lI110|H107236DD8 +107236DD8:lI102|H1072384D0 +1072384D0:lI105|H1072399E8 +1072399E8:lI103|H10723ADA0 +10723ADA0:lI46|H10723BED0 +10723BED0:lI98|H10723CE80 +10723CE80:lI101|H10723DC80 +10723DC80:lI97|H10723E8F0 +10723E8F0:lI109|N +107218350:Mn4:H10721B870,H10721B888,H10721B898,H10721B8A8 +10721B870:Mn2:H10721EDC0,H10721EDD0 +10721EDC0:lH107222280|N +107222280:lI109|H107225428 +107225428:lI101|H107228280 +107228280:lI103|H10722ACC8 +10722ACC8:lI97|H10722D3E0 +10722D3E0:lI99|H10722F878 +10722F878:lI111|H107231A10 +107231A10:lI95|H107233898 +107233898:lI109|H107235430 +107235430:lI101|H107236D68 +107236D68:lI115|H107238460 +107238460:lI115|H107239978 +107239978:lI101|H10723AD30 +10723AD30:lI110|H10723BE60 +10723BE60:lI103|H10723CE10 +10723CE10:lI101|H10723DC10 +10723DC10:lI114|H10723E880 +10723E880:lI46|H10723F400 +10723F400:lI98|H10723FE30 +10723FE30:lI101|H107240720 +107240720:lI97|H107240F40 +107240F40:lI109|N +10721EDD0:lH107222290|N +107222290:lI109|H107225438 +107225438:lI101|H107228290 +107228290:lI103|H10722ACD8 +10722ACD8:lI97|H10722D3F0 +10722D3F0:lI99|H10722F888 +10722F888:lI111|H107231A20 +107231A20:lI95|H1072338A8 +1072338A8:lI98|H107235440 +107235440:lI105|H107236D78 +107236D78:lI110|H107238470 +107238470:lI97|H107239988 +107239988:lI114|H10723AD40 +10723AD40:lI121|H10723BE70 +10723BE70:lI95|H10723CE20 +10723CE20:lI116|H10723DC20 +10723DC20:lI114|H10723E890 +10723E890:lI97|H10723F410 +10723F410:lI110|H10723FE40 +10723FE40:lI115|H107240730 +107240730:lI102|H107240F50 +107240F50:lI111|H1072416A0 +1072416A0:lI114|H107241DB0 +107241DB0:lI109|H107242460 +107242460:lI101|H107242AB0 +107242AB0:lI114|H107243070 +107243070:lI95|H1072435E0 +1072435E0:lI118|H107243B10 +107243B10:lI50|H107244000 +107244000:lI46|H1072444F0 +1072444F0:lI98|H1072449A0 +1072449A0:lI101|H107244E10 +107244E10:lI97|H107245270 +107245270:lI109|N +10721B8A8:Mn1:H10721EE00 +10721EE00:Mn2:H1072222C0,H1072222D0 +1072222C0:lH107225468|N +107225468:lI109|H1072282C0 +1072282C0:lI101|H10722AD08 +10722AD08:lI103|H10722D420 +10722D420:lI97|H10722F8B8 +10722F8B8:lI99|H107231A50 +107231A50:lI111|H1072338D8 +1072338D8:lI95|H107235470 +107235470:lI98|H107236DA8 +107236DA8:lI105|H1072384A0 +1072384A0:lI110|H1072399B8 +1072399B8:lI97|H10723AD70 +10723AD70:lI114|H10723BEA0 +10723BEA0:lI121|H10723CE50 +10723CE50:lI95|H10723DC50 +10723DC50:lI101|H10723E8C0 +10723E8C0:lI110|H10723F440 +10723F440:lI99|H10723FE70 +10723FE70:lI111|H107240760 +107240760:lI100|H107240F70 +107240F70:lI101|H1072416C0 +1072416C0:lI114|H107241DD0 +107241DD0:lI46|H107242480 +107242480:lI98|H107242AD0 +107242AD0:lI101|H107243090 +107243090:lI97|H107243600 +107243600:lI109|N +1072222D0:lH107225478|N +107225478:lI109|H1072282D0 +1072282D0:lI101|H10722AD18 +10722AD18:lI103|H10722D430 +10722D430:lI97|H10722F8C8 +10722F8C8:lI99|H107231A60 +107231A60:lI111|H1072338E8 +1072338E8:lI95|H107235480 +107235480:lI99|H107236DB8 +107236DB8:lI111|H1072384B0 +1072384B0:lI110|H1072399C8 +1072399C8:lI102|H10723AD80 +10723AD80:lI105|H10723BEB0 +10723BEB0:lI103|H10723CE60 +10723CE60:lI95|H10723DC60 +10723DC60:lI109|H10723E8D0 +10723E8D0:lI105|H10723F450 +10723F450:lI115|H10723FE80 +10723FE80:lI99|H107240770 +107240770:lI46|H107240F80 +107240F80:lI98|H1072416D0 +1072416D0:lI101|H107241DE0 +107241DE0:lI97|H107242490 +107242490:lI109|N +10721B898:lH10721EDF0|N +10721EDF0:lI109|H1072222B0 +1072222B0:lI101|H107225458 +107225458:lI103|H1072282B0 +1072282B0:lI97|H10722ACF8 +10722ACF8:lI99|H10722D410 +10722D410:lI111|H10722F8A8 +10722F8A8:lI95|H107231A40 +107231A40:lI112|H1072338C8 +1072338C8:lI114|H107235460 +107235460:lI101|H107236D98 +107236D98:lI116|H107238490 +107238490:lI116|H1072399A8 +1072399A8:lI121|H10723AD60 +10723AD60:lI95|H10723BE90 +10723BE90:lI116|H10723CE40 +10723CE40:lI101|H10723DC40 +10723DC40:lI120|H10723E8B0 +10723E8B0:lI116|H10723F430 +10723F430:lI95|H10723FE60 +10723FE60:lI101|H107240750 +107240750:lI110|H107240F60 +107240F60:lI99|H1072416B0 +1072416B0:lI111|H107241DC0 +107241DC0:lI100|H107242470 +107242470:lI101|H107242AC0 +107242AC0:lI114|H107243080 +107243080:lI46|H1072435F0 +1072435F0:lI98|H107243B20 +107243B20:lI101|H107244010 +107244010:lI97|H107244500 +107244500:lI109|N +10721B888:lH10721EDE0|N +10721EDE0:lI109|H1072222A0 +1072222A0:lI101|H107225448 +107225448:lI103|H1072282A0 +1072282A0:lI97|H10722ACE8 +10722ACE8:lI99|H10722D400 +10722D400:lI111|H10722F898 +10722F898:lI95|H107231A30 +107231A30:lI116|H1072338B8 +1072338B8:lI114|H107235450 +107235450:lI97|H107236D88 +107236D88:lI110|H107238480 +107238480:lI115|H107239998 +107239998:lI95|H10723AD50 +10723AD50:lI115|H10723BE80 +10723BE80:lI117|H10723CE30 +10723CE30:lI112|H10723DC30 +10723DC30:lI46|H10723E8A0 +10723E8A0:lI98|H10723F420 +10723F420:lI101|H10723FE50 +10723FE50:lI97|H107240740 +107240740:lI109|N +107218320:Mn5:H10721B820,H10721B830,H10721B840,H10721B850,H10721B860 +10721B820:lH10721ED70|N +10721ED70:lI109|H107222230 +107222230:lI101|H1072253D8 +1072253D8:lI103|H107228230 +107228230:lI97|H10722AC78 +10722AC78:lI99|H10722D390 +10722D390:lI111|H10722F828 +10722F828:lI95|H1072319C0 +1072319C0:lI117|H107233848 +107233848:lI100|H1072353E0 +1072353E0:lI112|H107236D18 +107236D18:lI46|H107238410 +107238410:lI98|H107239928 +107239928:lI101|H10723ACE0 +10723ACE0:lI97|H10723BE10 +10723BE10:lI109|N +10721B860:lH10721EDB0|N +10721EDB0:lI109|H107222270 +107222270:lI101|H107225418 +107225418:lI103|H107228270 +107228270:lI97|H10722ACB8 +10722ACB8:lI99|H10722D3D0 +10722D3D0:lI111|H10722F868 +10722F868:lI95|H107231A00 +107231A00:lI98|H107233888 +107233888:lI101|H107235420 +107235420:lI114|H107236D58 +107236D58:lI95|H107238450 +107238450:lI109|H107239968 +107239968:lI101|H10723AD20 +10723AD20:lI100|H10723BE50 +10723BE50:lI105|H10723CE00 +10723CE00:lI97|H10723DC00 +10723DC00:lI95|H10723E870 +10723E870:lI103|H10723F3F0 +10723F3F0:lI97|H10723FE20 +10723FE20:lI116|H107240710 +107240710:lI101|H107240F30 +107240F30:lI119|H107241690 +107241690:lI97|H107241DA0 +107241DA0:lI121|H107242450 +107242450:lI95|H107242AA0 +107242AA0:lI99|H107243060 +107243060:lI111|H1072435D0 +1072435D0:lI110|H107243B00 +107243B00:lI116|H107243FF0 +107243FF0:lI114|H1072444E0 +1072444E0:lI111|H107244990 +107244990:lI108|H107244E00 +107244E00:lI95|H107245260 +107245260:lI118|H1072456B0 +1072456B0:lI49|H107245AB0 +107245AB0:lI46|H107245E60 +107245E60:lI98|H1072461F0 +1072461F0:lI101|H107246580 +107246580:lI97|H107246910 +107246910:lI109|N +10721B850:lH10721EDA0|N +10721EDA0:lI109|H107222260 +107222260:lI101|H107225408 +107225408:lI103|H107228260 +107228260:lI97|H10722ACA8 +10722ACA8:lI99|H10722D3C0 +10722D3C0:lI111|H10722F858 +10722F858:lI95|H1072319F0 +1072319F0:lI116|H107233878 +107233878:lI99|H107235410 +107235410:lI112|H107236D48 +107236D48:lI95|H107238440 +107238440:lI99|H107239958 +107239958:lI111|H10723AD10 +10723AD10:lI110|H10723BE40 +10723BE40:lI110|H10723CDF0 +10723CDF0:lI101|H10723DBF0 +10723DBF0:lI99|H10723E860 +10723E860:lI116|H10723F3E0 +10723F3E0:lI105|H10723FE10 +10723FE10:lI111|H107240700 +107240700:lI110|H107240F20 +107240F20:lI46|H107241680 +107241680:lI98|H107241D90 +107241D90:lI101|H107242440 +107242440:lI97|H107242A90 +107242A90:lI109|N +10721B840:lH10721ED90|N +10721ED90:lI109|H107222250 +107222250:lI101|H1072253F8 +1072253F8:lI103|H107228250 +107228250:lI97|H10722AC98 +10722AC98:lI99|H10722D3B0 +10722D3B0:lI111|H10722F848 +10722F848:lI95|H1072319E0 +1072319E0:lI116|H107233868 +107233868:lI101|H107235400 +107235400:lI120|H107236D38 +107236D38:lI116|H107238430 +107238430:lI95|H107239948 +107239948:lI115|H10723AD00 +10723AD00:lI99|H10723BE30 +10723BE30:lI97|H10723CDE0 +10723CDE0:lI110|H10723DBE0 +10723DBE0:lI110|H10723E850 +10723E850:lI101|H10723F3D0 +10723F3D0:lI114|H10723FE00 +10723FE00:lI46|H1072406F0 +1072406F0:lI98|H107240F10 +107240F10:lI101|H107241670 +107241670:lI97|H107241D80 +107241D80:lI109|N +10721B830:lH10721ED80|N +10721ED80:lI109|H107222240 +107222240:lI101|H1072253E8 +1072253E8:lI103|H107228240 +107228240:lI97|H10722AC88 +10722AC88:lI99|H10722D3A0 +10722D3A0:lI111|H10722F838 +10722F838:lI95|H1072319D0 +1072319D0:lI117|H107233858 +107233858:lI100|H1072353F0 +1072353F0:lI112|H107236D28 +107236D28:lI95|H107238420 +107238420:lI115|H107239938 +107239938:lI101|H10723ACF0 +10723ACF0:lI114|H10723BE20 +10723BE20:lI118|H10723CDD0 +10723CDD0:lI101|H10723DBD0 +10723DBD0:lI114|H10723E840 +10723E840:lI46|H10723F3C0 +10723F3C0:lI98|H10723FDF0 +10723FDF0:lI101|H1072406E0 +1072406E0:lI97|H107240F00 +107240F00:lI109|N +107214EB0:lI47|H1072182F0 +1072182F0:lI111|H10721B7E0 +10721B7E0:lI112|H10721ED30 +10721ED30:lI116|H1072221F0 +1072221F0:lI47|H107225398 +107225398:lI104|H1072281F0 +1072281F0:lI111|H10722AC38 +10722AC38:lI109|H10722D350 +10722D350:lI101|H10722F7E8 +10722F7E8:lI98|H107231980 +107231980:lI114|H107233808 +107233808:lI101|H1072353A0 +1072353A0:lI119|H107236CD8 +107236CD8:lI47|H1072383D0 +1072383D0:lI67|H1072398E8 +1072398E8:lI101|H10723ACA0 +10723ACA0:lI108|H10723BDD0 +10723BDD0:lI108|H10723CD90 +10723CD90:lI97|H10723DB90 +10723DB90:lI114|H10723E810 +10723E810:lI47|H10723F390 +10723F390:lI101|H10723FDC0 +10723FDC0:lI114|H1072406B0 +1072406B0:lI108|H107240ED0 +107240ED0:lI97|H107241640 +107241640:lI110|H107241D50 +107241D50:lI103|H107242410 +107242410:lI47|H107242A60 +107242A60:lI50|H107243040 +107243040:lI54|H1072435B0 +1072435B0:lI46|H107243AE0 +107243AE0:lI48|H107243FD0 +107243FD0:lI46|H1072444C0 +1072444C0:lI50|H107244970 +107244970:lI47|H107244DE0 +107244DE0:lI108|H107245240 +107245240:lI105|H107245690 +107245690:lI98|H107245A90 +107245A90:lI47|H107245E40 +107245E40:lI101|H1072461D0 +1072461D0:lI114|H107246560 +107246560:lI108|H1072468F0 +1072468F0:lI97|H107246C80 +107246C80:lI110|H107246FB0 +107246FB0:lI103|H1072472D0 +1072472D0:lI47|H1072475E0 +1072475E0:lI108|H1072478E0 +1072478E0:lI105|H107247BE0 +107247BE0:lI98|H107247EC0 +107247EC0:lI47|H107248180 +107248180:lI109|H107248440 +107248440:lI101|H1072486F0 +1072486F0:lI103|H1072489A0 +1072489A0:lI97|H107248C20 +107248C20:lI99|H107248E90 +107248E90:lI111|H107249100 +107249100:lI45|H107249360 +107249360:lI52|H1072495C0 +1072495C0:lI46|H107249810 +107249810:lI52|H107249A30 +107249A30:lI46|H107249C30 +107249C30:lI52|H107249E10 +107249E10:lI47|H280052C20 +107211A88:lH107214F48|H107214F60 +107214F48:t2:H107218548,H107218558 +107218558:Mh41:10:H10721BBD8,H10721BBF8,H10721BC20,H10721BC50,H10721BC68,H10721BC78,H10721BCA8,H10721BCD8,H10721BCF8,H10721BD18,H10721BD48,H10721BD88,H10721BDA0,H10721BDC8,H10721BDF8,H10721BE10 +10721BBD8:Mn3:H10721F170,H10721F188,H10721F198 +10721F170:Mn2:H107222640,H107222650 +107222640:lH1072257E8|N +1072257E8:lI105|H107228640 +107228640:lI110|H10722B088 +10722B088:lI101|H10722D7A0 +10722D7A0:lI116|H10722FC38 +10722FC38:lI115|H107231DD0 +107231DD0:lI95|H107233C58 +107233C58:lI115|H1072357F0 +1072357F0:lI101|H107237118 +107237118:lI114|H107238810 +107238810:lI118|H107239D08 +107239D08:lI105|H10723B0C0 +10723B0C0:lI99|H10723C1F0 +10723C1F0:lI101|H10723D170 +10723D170:lI46|H10723DF60 +10723DF60:lI98|H10723EBC0 +10723EBC0:lI101|H10723F720 +10723F720:lI97|H107240120 +107240120:lI109|N +107222650:lH1072257F8|N +1072257F8:lI104|H107228650 +107228650:lI116|H10722B098 +10722B098:lI116|H10722D7B0 +10722D7B0:lI112|H10722FC48 +10722FC48:lI99|H107231DE0 +107231DE0:lI95|H107233C68 +107233C68:lI114|H107235800 +107235800:lI101|H107237128 +107237128:lI115|H107238820 +107238820:lI112|H107239D18 +107239D18:lI111|H10723B0D0 +10723B0D0:lI110|H10723C200 +10723C200:lI115|H10723D180 +10723D180:lI101|H10723DF70 +10723DF70:lI46|H10723EBD0 +10723EBD0:lI98|H10723F730 +10723F730:lI101|H107240130 +107240130:lI97|H107240A00 +107240A00:lI109|N +10721F198:lH107222670|N +107222670:lI104|H107225818 +107225818:lI116|H107228670 +107228670:lI116|H10722B0B8 +10722B0B8:lI112|H10722D7D0 +10722D7D0:lI100|H10722FC68 +10722FC68:lI95|H107231E00 +107231E00:lI114|H107233C88 +107233C88:lI101|H107235820 +107235820:lI115|H107237148 +107237148:lI112|H107238840 +107238840:lI111|H107239D38 +107239D38:lI110|H10723B0F0 +10723B0F0:lI115|H10723C220 +10723C220:lI101|H10723D1A0 +10723D1A0:lI46|H10723DF90 +10723DF90:lI98|H10723EBF0 +10723EBF0:lI101|H10723F750 +10723F750:lI97|H107240150 +107240150:lI109|N +10721F188:lH107222660|N +107222660:lI109|H107225808 +107225808:lI111|H107228660 +107228660:lI100|H10722B0A8 +10722B0A8:lI95|H10722D7C0 +10722D7C0:lI97|H10722FC58 +10722FC58:lI117|H107231DF0 +107231DF0:lI116|H107233C78 +107233C78:lI104|H107235810 +107235810:lI95|H107237138 +107237138:lI115|H107238830 +107238830:lI101|H107239D28 +107239D28:lI114|H10723B0E0 +10723B0E0:lI118|H10723C210 +10723C210:lI101|H10723D190 +10723D190:lI114|H10723DF80 +10723DF80:lI46|H10723EBE0 +10723EBE0:lI98|H10723F740 +10723F740:lI101|H107240140 +107240140:lI97|H107240A10 +107240A10:lI109|N +10721BE10:Mn4:H10721F518,H10721F528,H10721F538,H10721F548 +10721F518:lH107222A10|N +107222A10:lI109|H107225BB8 +107225BB8:lI111|H107228A10 +107228A10:lI100|H10722B458 +10722B458:lI95|H10722DB70 +10722DB70:lI115|H107230008 +107230008:lI101|H1072321A0 +1072321A0:lI99|H107234028 +107234028:lI117|H107235BC0 +107235BC0:lI114|H1072374E8 +1072374E8:lI105|H107238BA0 +107238BA0:lI116|H10723A088 +10723A088:lI121|H10723B400 +10723B400:lI95|H10723C520 +10723C520:lI115|H10723D3F0 +10723D3F0:lI101|H10723E190 +10723E190:lI114|H10723EDD0 +10723EDD0:lI118|H10723F8B0 +10723F8B0:lI101|H107240220 +107240220:lI114|H107240AB0 +107240AB0:lI46|H107241270 +107241270:lI98|H1072419A0 +1072419A0:lI101|H107242070 +107242070:lI97|H1072426E0 +1072426E0:lI109|N +10721F548:lH107222A40|N +107222A40:lI109|H107225BE8 +107225BE8:lI111|H107228A40 +107228A40:lI100|H10722B488 +10722B488:lI95|H10722DBA0 +10722DBA0:lI104|H107230038 +107230038:lI101|H1072321D0 +1072321D0:lI97|H107234058 +107234058:lI100|H107235BF0 +107235BF0:lI46|H107237518 +107237518:lI98|H107238BD0 +107238BD0:lI101|H10723A0B8 +10723A0B8:lI97|H10723B420 +10723B420:lI109|N +10721F538:lH107222A30|N +107222A30:lI109|H107225BD8 +107225BD8:lI111|H107228A30 +107228A30:lI100|H10722B478 +10722B478:lI95|H10722DB90 +10722DB90:lI108|H107230028 +107230028:lI111|H1072321C0 +1072321C0:lI103|H107234048 +107234048:lI46|H107235BE0 +107235BE0:lI98|H107237508 +107237508:lI101|H107238BC0 +107238BC0:lI97|H10723A0A8 +10723A0A8:lI109|N +10721F528:lH107222A20|N +107222A20:lI109|H107225BC8 +107225BC8:lI111|H107228A20 +107228A20:lI100|H10722B468 +10722B468:lI95|H10722DB80 +10722DB80:lI97|H107230018 +107230018:lI117|H1072321B0 +1072321B0:lI116|H107234038 +107234038:lI104|H107235BD0 +107235BD0:lI95|H1072374F8 +1072374F8:lI109|H107238BB0 +107238BB0:lI110|H10723A098 +10723A098:lI101|H10723B410 +10723B410:lI115|H10723C530 +10723C530:lI105|H10723D400 +10723D400:lI97|H10723E1A0 +10723E1A0:lI46|H10723EDE0 +10723EDE0:lI98|H10723F8C0 +10723F8C0:lI101|H107240230 +107240230:lI97|H107240AC0 +107240AC0:lI109|N +10721BDF8:Mn2:H10721F4F0,H10721F508 +10721F4F0:Mn2:H1072229E0,H1072229F0 +1072229E0:lH107225B88|N +107225B88:lI109|H1072289E0 +1072289E0:lI111|H10722B428 +10722B428:lI100|H10722DB40 +10722DB40:lI95|H10722FFD8 +10722FFD8:lI97|H107232170 +107232170:lI99|H107233FF8 +107233FF8:lI116|H107235B90 +107235B90:lI105|H1072374B8 +1072374B8:lI111|H107238B80 +107238B80:lI110|H10723A068 +10723A068:lI115|H10723B3E0 +10723B3E0:lI46|H10723C500 +10723C500:lI98|H10723D3E0 +10723D3E0:lI101|H10723E180 +10723E180:lI97|H10723EDC0 +10723EDC0:lI109|N +1072229F0:lH107225B98|N +107225B98:lI109|H1072289F0 +1072289F0:lI111|H10722B438 +10722B438:lI100|H10722DB50 +10722DB50:lI95|H10722FFE8 +10722FFE8:lI97|H107232180 +107232180:lI117|H107234008 +107234008:lI116|H107235BA0 +107235BA0:lI104|H1072374C8 +1072374C8:lI46|H107238B90 +107238B90:lI98|H10723A078 +10723A078:lI101|H10723B3F0 +10723B3F0:lI97|H10723C510 +10723C510:lI109|N +10721F508:lH107222A00|N +107222A00:lI104|H107225BA8 +107225BA8:lI116|H107228A00 +107228A00:lI116|H10722B448 +10722B448:lI112|H10722DB60 +10722DB60:lI99|H10722FFF8 +10722FFF8:lI46|H107232190 +107232190:lI98|H107234018 +107234018:lI101|H107235BB0 +107235BB0:lI97|H1072374D8 +1072374D8:lI109|N +10721BDC8:Mn5:H10721F4A0,H10721F4B0,H10721F4C0,H10721F4D0,H10721F4E0 +10721F4A0:lH107222990|N +107222990:lI104|H107225B38 +107225B38:lI116|H107228990 +107228990:lI116|H10722B3D8 +10722B3D8:lI112|H10722DAF0 +10722DAF0:lI99|H10722FF88 +10722FF88:lI95|H107232120 +107232120:lI104|H107233FA8 +107233FA8:lI97|H107235B40 +107235B40:lI110|H107237468 +107237468:lI100|H107238B50 +107238B50:lI108|H10723A038 +10723A038:lI101|H10723B3B0 +10723B3B0:lI114|H10723C4D0 +10723C4D0:lI95|H10723D3B0 +10723D3B0:lI115|H10723E150 +10723E150:lI117|H10723ED90 +10723ED90:lI112|H10723F880 +10723F880:lI46|H107240200 +107240200:lI98|H107240AA0 +107240AA0:lI101|H107241260 +107241260:lI97|H107241990 +107241990:lI109|N +10721F4E0:lH1072229D0|N +1072229D0:lI105|H107225B78 +107225B78:lI110|H1072289D0 +1072289D0:lI101|H10722B418 +10722B418:lI116|H10722DB30 +10722DB30:lI115|H10722FFC8 +10722FFC8:lI46|H107232160 +107232160:lI98|H107233FE8 +107233FE8:lI101|H107235B80 +107235B80:lI97|H1072374A8 +1072374A8:lI109|N +10721F4D0:lH1072229C0|N +1072229C0:lI104|H107225B68 +107225B68:lI116|H1072289C0 +1072289C0:lI116|H10722B408 +10722B408:lI112|H10722DB20 +10722DB20:lI100|H10722FFB8 +10722FFB8:lI95|H107232150 +107232150:lI109|H107233FD8 +107233FD8:lI105|H107235B70 +107235B70:lI115|H107237498 +107237498:lI99|H107238B70 +107238B70:lI95|H10723A058 +10723A058:lI115|H10723B3D0 +10723B3D0:lI117|H10723C4F0 +10723C4F0:lI112|H10723D3D0 +10723D3D0:lI46|H10723E170 +10723E170:lI98|H10723EDB0 +10723EDB0:lI101|H10723F8A0 +10723F8A0:lI97|H107240210 +107240210:lI109|N +10721F4C0:lH1072229B0|N +1072229B0:lI104|H107225B58 +107225B58:lI116|H1072289B0 +1072289B0:lI116|H10722B3F8 +10722B3F8:lI112|H10722DB10 +10722DB10:lI100|H10722FFA8 +10722FFA8:lI46|H107232140 +107232140:lI98|H107233FC8 +107233FC8:lI101|H107235B60 +107235B60:lI97|H107237488 +107237488:lI109|N +10721F4B0:lH1072229A0|N +1072229A0:lI104|H107225B48 +107225B48:lI116|H1072289A0 +1072289A0:lI116|H10722B3E8 +10722B3E8:lI112|H10722DB00 +10722DB00:lI100|H10722FF98 +10722FF98:lI95|H107232130 +107232130:lI109|H107233FB8 +107233FB8:lI97|H107235B50 +107235B50:lI110|H107237478 +107237478:lI97|H107238B60 +107238B60:lI103|H10723A048 +10723A048:lI101|H10723B3C0 +10723B3C0:lI114|H10723C4E0 +10723C4E0:lI46|H10723D3C0 +10723D3C0:lI98|H10723E160 +10723E160:lI101|H10723EDA0 +10723EDA0:lI97|H10723F890 +10723F890:lI109|N +10721BDA0:Mn4:H10721F460,H10721F470,H10721F480,H10721F490 +10721F460:lH107222950|N +107222950:lI104|H107225AF8 +107225AF8:lI116|H107228950 +107228950:lI116|H10722B398 +10722B398:lI112|H10722DAB0 +10722DAB0:lI100|H10722FF48 +10722FF48:lI95|H1072320E0 +1072320E0:lI115|H107233F68 +107233F68:lI117|H107235B00 +107235B00:lI112|H107237428 +107237428:lI46|H107238B10 +107238B10:lI98|H107239FF8 +107239FF8:lI101|H10723B380 +10723B380:lI97|H10723C4A0 +10723C4A0:lI109|N +10721F490:lH107222980|N +107222980:lI109|H107225B28 +107225B28:lI111|H107228980 +107228980:lI100|H10722B3C8 +10722B3C8:lI95|H10722DAE0 +10722DAE0:lI103|H10722FF78 +10722FF78:lI101|H107232110 +107232110:lI116|H107233F98 +107233F98:lI46|H107235B30 +107235B30:lI98|H107237458 +107237458:lI101|H107238B40 +107238B40:lI97|H10723A028 +10723A028:lI109|N +10721F480:lH107222970|N +107222970:lI104|H107225B18 +107225B18:lI116|H107228970 +107228970:lI116|H10722B3B8 +10722B3B8:lI112|H10722DAD0 +10722DAD0:lI95|H10722FF68 +10722FF68:lI114|H107232100 +107232100:lI101|H107233F88 +107233F88:lI115|H107235B20 +107235B20:lI112|H107237448 +107237448:lI111|H107238B30 +107238B30:lI110|H10723A018 +10723A018:lI115|H10723B3A0 +10723B3A0:lI101|H10723C4C0 +10723C4C0:lI46|H10723D3A0 +10723D3A0:lI98|H10723E140 +10723E140:lI101|H10723ED80 +10723ED80:lI97|H10723F870 +10723F870:lI109|N +10721F470:lH107222960|N +107222960:lI104|H107225B08 +107225B08:lI116|H107228960 +107228960:lI116|H10722B3A8 +10722B3A8:lI112|H10722DAC0 +10722DAC0:lI100|H10722FF58 +10722FF58:lI95|H1072320F0 +1072320F0:lI108|H107233F78 +107233F78:lI111|H107235B10 +107235B10:lI103|H107237438 +107237438:lI103|H107238B20 +107238B20:lI101|H10723A008 +10723A008:lI114|H10723B390 +10723B390:lI46|H10723C4B0 +10723C4B0:lI98|H10723D390 +10723D390:lI101|H10723E130 +10723E130:lI97|H10723ED70 +10723ED70:lI109|N +10721BD88:Mn2:H10721F440,H10721F450 +10721F440:lH107222930|N +107222930:lI109|H107225AD8 +107225AD8:lI111|H107228930 +107228930:lI100|H10722B378 +10722B378:lI95|H10722DA90 +10722DA90:lI100|H10722FF28 +10722FF28:lI105|H1072320C0 +1072320C0:lI114|H107233F48 +107233F48:lI46|H107235AE0 +107235AE0:lI98|H107237408 +107237408:lI101|H107238AF0 +107238AF0:lI97|H107239FD8 +107239FD8:lI109|N +10721F450:lH107222940|N +107222940:lI104|H107225AE8 +107225AE8:lI116|H107228940 +107228940:lI116|H10722B388 +10722B388:lI112|H10722DAA0 +10722DAA0:lI95|H10722FF38 +10722FF38:lI117|H1072320D0 +1072320D0:lI116|H107233F58 +107233F58:lI105|H107235AF0 +107235AF0:lI108|H107237418 +107237418:lI46|H107238B00 +107238B00:lI98|H107239FE8 +107239FE8:lI101|H10723B370 +10723B370:lI97|H10723C490 +10723C490:lI109|N +10721BD48:Mn7:H10721F3C8,H10721F3D8,H10721F3E8,H10721F3F8,H10721F410,H10721F420,H10721F430 +10721F3C8:lH1072228B0|N +1072228B0:lI104|H107225A58 +107225A58:lI116|H1072288B0 +1072288B0:lI116|H10722B2F8 +10722B2F8:lI112|H10722DA10 +10722DA10:lI100|H10722FEA8 +10722FEA8:lI95|H107232040 +107232040:lI101|H107233EC8 +107233EC8:lI120|H107235A60 +107235A60:lI97|H107237388 +107237388:lI109|H107238A70 +107238A70:lI112|H107239F58 +107239F58:lI108|H10723B2F0 +10723B2F0:lI101|H10723C410 +10723C410:lI46|H10723D330 +10723D330:lI98|H10723E100 +10723E100:lI101|H10723ED40 +10723ED40:lI97|H10723F850 +10723F850:lI109|N +10721F430:lH107222920|N +107222920:lI104|H107225AC8 +107225AC8:lI116|H107228920 +107228920:lI116|H10722B368 +10722B368:lI112|H10722DA80 +10722DA80:lI100|H10722FF18 +10722FF18:lI95|H1072320B0 +1072320B0:lI102|H107233F38 +107233F38:lI105|H107235AD0 +107235AD0:lI108|H1072373F8 +1072373F8:lI101|H107238AE0 +107238AE0:lI46|H107239FC8 +107239FC8:lI98|H10723B360 +10723B360:lI101|H10723C480 +10723C480:lI97|H10723D380 +10723D380:lI109|N +10721F420:lH107222910|N +107222910:lI104|H107225AB8 +107225AB8:lI116|H107228910 +107228910:lI116|H10722B358 +10722B358:lI112|H10722DA70 +10722DA70:lI99|H10722FF08 +10722FF08:lI95|H1072320A0 +1072320A0:lI99|H107233F28 +107233F28:lI111|H107235AC0 +107235AC0:lI111|H1072373E8 +1072373E8:lI107|H107238AD0 +107238AD0:lI105|H107239FB8 +107239FB8:lI101|H10723B350 +10723B350:lI46|H10723C470 +10723C470:lI98|H10723D370 +10723D370:lI101|H10723E120 +10723E120:lI97|H10723ED60 +10723ED60:lI109|N +10721F410:lH107222900|N +107222900:lI104|H107225AA8 +107225AA8:lI116|H107228900 +107228900:lI116|H10722B348 +10722B348:lI112|H10722DA60 +10722DA60:lI99|H10722FEF8 +10722FEF8:lI95|H107232090 +107232090:lI114|H107233F18 +107233F18:lI101|H107235AB0 +107235AB0:lI113|H1072373D8 +1072373D8:lI117|H107238AC0 +107238AC0:lI101|H107239FA8 +107239FA8:lI115|H10723B340 +10723B340:lI116|H10723C460 +10723C460:lI46|H10723D360 +10723D360:lI98|H10723E110 +10723E110:lI101|H10723ED50 +10723ED50:lI97|H10723F860 +10723F860:lI109|N +10721F3F8:Mn2:H1072228E0,H1072228F0 +1072228E0:lH107225A88|N +107225A88:lI104|H1072288E0 +1072288E0:lI116|H10722B328 +10722B328:lI116|H10722DA40 +10722DA40:lI112|H10722FED8 +10722FED8:lI100|H107232070 +107232070:lI95|H107233EF8 +107233EF8:lI99|H107235A90 +107235A90:lI103|H1072373B8 +1072373B8:lI105|H107238AA0 +107238AA0:lI46|H107239F88 +107239F88:lI98|H10723B320 +10723B320:lI101|H10723C440 +10723C440:lI97|H10723D340 +10723D340:lI109|N +1072228F0:lH107225A98|N +107225A98:lI109|H1072288F0 +1072288F0:lI111|H10722B338 +10722B338:lI100|H10722DA50 +10722DA50:lI95|H10722FEE8 +10722FEE8:lI97|H107232080 +107232080:lI108|H107233F08 +107233F08:lI105|H107235AA0 +107235AA0:lI97|H1072373C8 +1072373C8:lI115|H107238AB0 +107238AB0:lI46|H107239F98 +107239F98:lI98|H10723B330 +10723B330:lI101|H10723C450 +10723C450:lI97|H10723D350 +10723D350:lI109|N +10721F3E8:lH1072228D0|N +1072228D0:lI105|H107225A78 +107225A78:lI110|H1072288D0 +1072288D0:lI101|H10722B318 +10722B318:lI116|H10722DA30 +10722DA30:lI115|H10722FEC8 +10722FEC8:lI95|H107232060 +107232060:lI97|H107233EE8 +107233EE8:lI112|H107235A80 +107235A80:lI112|H1072373A8 +1072373A8:lI46|H107238A90 +107238A90:lI98|H107239F78 +107239F78:lI101|H10723B310 +10723B310:lI97|H10723C430 +10723C430:lI109|N +10721F3D8:lH1072228C0|N +1072228C0:lI109|H107225A68 +107225A68:lI111|H1072288C0 +1072288C0:lI100|H10722B308 +10722B308:lI95|H10722DA20 +10722DA20:lI114|H10722FEB8 +10722FEB8:lI97|H107232050 +107232050:lI110|H107233ED8 +107233ED8:lI103|H107235A70 +107235A70:lI101|H107237398 +107237398:lI46|H107238A80 +107238A80:lI98|H107239F68 +107239F68:lI101|H10723B300 +10723B300:lI97|H10723C420 +10723C420:lI109|N +10721BD18:Mn5:H10721F378,H10721F388,H10721F398,H10721F3A8,H10721F3B8 +10721F378:lH107222860|N +107222860:lI104|H107225A08 +107225A08:lI116|H107228860 +107228860:lI116|H10722B2A8 +10722B2A8:lI112|H10722D9C0 +10722D9C0:lI99|H10722FE58 +10722FE58:lI95|H107231FF0 +107231FF0:lI109|H107233E78 +107233E78:lI97|H107235A10 +107235A10:lI110|H107237338 +107237338:lI97|H107238A20 +107238A20:lI103|H107239F08 +107239F08:lI101|H10723B2A0 +10723B2A0:lI114|H10723C3C0 +10723C3C0:lI46|H10723D2E0 +10723D2E0:lI98|H10723E0C0 +10723E0C0:lI101|H10723ED00 +10723ED00:lI97|H10723F820 +10723F820:lI109|N +10721F3B8:lH1072228A0|N +1072228A0:lI109|H107225A48 +107225A48:lI111|H1072288A0 +1072288A0:lI100|H10722B2E8 +10722B2E8:lI95|H10722DA00 +10722DA00:lI115|H10722FE98 +10722FE98:lI101|H107232030 +107232030:lI99|H107233EB8 +107233EB8:lI117|H107235A50 +107235A50:lI114|H107237378 +107237378:lI105|H107238A60 +107238A60:lI116|H107239F48 +107239F48:lI121|H10723B2E0 +10723B2E0:lI46|H10723C400 +10723C400:lI98|H10723D320 +10723D320:lI101|H10723E0F0 +10723E0F0:lI97|H10723ED30 +10723ED30:lI109|N +10721F3A8:lH107222890|N +107222890:lI104|H107225A38 +107225A38:lI116|H107228890 +107228890:lI116|H10722B2D8 +10722B2D8:lI112|H10722D9F0 +10722D9F0:lI100|H10722FE88 +10722FE88:lI95|H107232020 +107232020:lI99|H107233EA8 +107233EA8:lI111|H107235A40 +107235A40:lI110|H107237368 +107237368:lI102|H107238A50 +107238A50:lI46|H107239F38 +107239F38:lI98|H10723B2D0 +10723B2D0:lI101|H10723C3F0 +10723C3F0:lI97|H10723D310 +10723D310:lI109|N +10721F398:lH107222880|N +107222880:lI104|H107225A28 +107225A28:lI116|H107228880 +107228880:lI116|H10722B2C8 +10722B2C8:lI112|H10722D9E0 +10722D9E0:lI95|H10722FE78 +10722FE78:lI116|H107232010 +107232010:lI114|H107233E98 +107233E98:lI97|H107235A30 +107235A30:lI110|H107237358 +107237358:lI115|H107238A40 +107238A40:lI112|H107239F28 +107239F28:lI111|H10723B2C0 +10723B2C0:lI114|H10723C3E0 +10723C3E0:lI116|H10723D300 +10723D300:lI46|H10723E0E0 +10723E0E0:lI98|H10723ED20 +10723ED20:lI101|H10723F840 +10723F840:lI97|H1072401F0 +1072401F0:lI109|N +10721F388:lH107222870|N +107222870:lI104|H107225A18 +107225A18:lI116|H107228870 +107228870:lI116|H10722B2B8 +10722B2B8:lI112|H10722D9D0 +10722D9D0:lI100|H10722FE68 +10722FE68:lI95|H107232000 +107232000:lI114|H107233E88 +107233E88:lI101|H107235A20 +107235A20:lI113|H107237348 +107237348:lI117|H107238A30 +107238A30:lI101|H107239F18 +107239F18:lI115|H10723B2B0 +10723B2B0:lI116|H10723C3D0 +10723C3D0:lI95|H10723D2F0 +10723D2F0:lI104|H10723E0D0 +10723E0D0:lI97|H10723ED10 +10723ED10:lI110|H10723F830 +10723F830:lI100|H1072401E0 +1072401E0:lI108|H107240A90 +107240A90:lI101|H107241250 +107241250:lI114|H107241980 +107241980:lI46|H107242060 +107242060:lI98|H1072426D0 +1072426D0:lI101|H107242CE0 +107242CE0:lI97|H107243250 +107243250:lI109|N +10721BCF8:Mn3:H10721F348,H10721F358,H10721F368 +10721F348:lH107222830|N +107222830:lI104|H1072259D8 +1072259D8:lI116|H107228830 +107228830:lI116|H10722B278 +10722B278:lI112|H10722D990 +10722D990:lI95|H10722FE28 +10722FE28:lI117|H107231FC0 +107231FC0:lI114|H107233E48 +107233E48:lI105|H1072359E0 +1072359E0:lI46|H107237308 +107237308:lI98|H1072389F0 +1072389F0:lI101|H107239ED8 +107239ED8:lI97|H10723B270 +10723B270:lI109|N +10721F368:lH107222850|N +107222850:lI104|H1072259F8 +1072259F8:lI116|H107228850 +107228850:lI116|H10722B298 +10722B298:lI112|H10722D9B0 +10722D9B0:lI99|H10722FE48 +10722FE48:lI95|H107231FE0 +107231FE0:lI112|H107233E68 +107233E68:lI114|H107235A00 +107235A00:lI111|H107237328 +107237328:lI102|H107238A10 +107238A10:lI105|H107239EF8 +107239EF8:lI108|H10723B290 +10723B290:lI101|H10723C3B0 +10723C3B0:lI95|H10723D2D0 +10723D2D0:lI115|H10723E0B0 +10723E0B0:lI117|H10723ECF0 +10723ECF0:lI112|H10723F810 +10723F810:lI46|H1072401D0 +1072401D0:lI98|H107240A80 +107240A80:lI101|H107241240 +107241240:lI97|H107241970 +107241970:lI109|N +10721F358:lH107222840|N +107222840:lI104|H1072259E8 +1072259E8:lI116|H107228840 +107228840:lI116|H10722B288 +10722B288:lI112|H10722D9A0 +10722D9A0:lI100|H10722FE38 +10722FE38:lI95|H107231FD0 +107231FD0:lI115|H107233E58 +107233E58:lI99|H1072359F0 +1072359F0:lI114|H107237318 +107237318:lI105|H107238A00 +107238A00:lI112|H107239EE8 +107239EE8:lI116|H10723B280 +10723B280:lI95|H10723C3A0 +10723C3A0:lI101|H10723D2C0 +10723D2C0:lI110|H10723E0A0 +10723E0A0:lI118|H10723ECE0 +10723ECE0:lI46|H10723F800 +10723F800:lI98|H1072401C0 +1072401C0:lI101|H107240A70 +107240A70:lI97|H107241230 +107241230:lI109|N +10721BCD8:Mn3:H10721F318,H10721F328,H10721F338 +10721F318:lH107222800|N +107222800:lI105|H1072259A8 +1072259A8:lI110|H107228800 +107228800:lI101|H10722B248 +10722B248:lI116|H10722D960 +10722D960:lI115|H10722FDF8 +10722FDF8:lI46|H107231F90 +107231F90:lI97|H107233E18 +107233E18:lI112|H1072359B0 +1072359B0:lI112|H1072372D8 +1072372D8:lI117|H1072389C0 +1072389C0:lI112|N +10721F338:lH107222820|N +107222820:lI104|H1072259C8 +1072259C8:lI116|H107228820 +107228820:lI116|H10722B268 +10722B268:lI112|H10722D980 +10722D980:lI100|H10722FE18 +10722FE18:lI95|H107231FB0 +107231FB0:lI117|H107233E38 +107233E38:lI116|H1072359D0 +1072359D0:lI105|H1072372F8 +1072372F8:lI108|H1072389E0 +1072389E0:lI46|H107239EC8 +107239EC8:lI98|H10723B260 +10723B260:lI101|H10723C390 +10723C390:lI97|H10723D2B0 +10723D2B0:lI109|N +10721F328:lH107222810|N +107222810:lI104|H1072259B8 +1072259B8:lI116|H107228810 +107228810:lI116|H10722B258 +10722B258:lI112|H10722D970 +10722D970:lI99|H10722FE08 +10722FE08:lI95|H107231FA0 +107231FA0:lI104|H107233E28 +107233E28:lI97|H1072359C0 +1072359C0:lI110|H1072372E8 +1072372E8:lI100|H1072389D0 +1072389D0:lI108|H107239EB8 +107239EB8:lI101|H10723B250 +10723B250:lI114|H10723C380 +10723C380:lI46|H10723D2A0 +10723D2A0:lI98|H10723E090 +10723E090:lI101|H10723ECD0 +10723ECD0:lI97|H10723F7F0 +10723F7F0:lI109|N +10721BCA8:Mn5:H10721F2C0,H10721F2D0,H10721F2E8,H10721F2F8,H10721F308 +10721F2C0:lH1072227A0|N +1072227A0:lI104|H107225948 +107225948:lI116|H1072287A0 +1072287A0:lI116|H10722B1E8 +10722B1E8:lI112|H10722D900 +10722D900:lI100|H10722FD98 +10722FD98:lI95|H107231F30 +107231F30:lI108|H107233DB8 +107233DB8:lI111|H107235950 +107235950:lI103|H107237278 +107237278:lI46|H107238970 +107238970:lI98|H107239E68 +107239E68:lI101|H10723B220 +10723B220:lI97|H10723C350 +10723C350:lI109|N +10721F308:lH1072227F0|N +1072227F0:lI109|H107225998 +107225998:lI111|H1072287F0 +1072287F0:lI100|H10722B238 +10722B238:lI95|H10722D950 +10722D950:lI99|H10722FDE8 +10722FDE8:lI103|H107231F80 +107231F80:lI105|H107233E08 +107233E08:lI46|H1072359A0 +1072359A0:lI98|H1072372C8 +1072372C8:lI101|H1072389B0 +1072389B0:lI97|H107239EA8 +107239EA8:lI109|N +10721F2F8:lH1072227E0|N +1072227E0:lI109|H107225988 +107225988:lI111|H1072287E0 +1072287E0:lI100|H10722B228 +10722B228:lI95|H10722D940 +10722D940:lI101|H10722FDD8 +10722FDD8:lI115|H107231F70 +107231F70:lI105|H107233DF8 +107233DF8:lI46|H107235990 +107235990:lI98|H1072372B8 +1072372B8:lI101|H1072389A0 +1072389A0:lI97|H107239E98 +107239E98:lI109|N +10721F2E8:lH1072227D0|N +1072227D0:lI105|H107225978 +107225978:lI110|H1072287D0 +1072287D0:lI101|H10722B218 +10722B218:lI116|H10722D930 +10722D930:lI115|H10722FDC8 +10722FDC8:lI95|H107231F60 +107231F60:lI116|H107233DE8 +107233DE8:lI114|H107235980 +107235980:lI97|H1072372A8 +1072372A8:lI99|H107238990 +107238990:lI101|H107239E88 +107239E88:lI46|H10723B240 +10723B240:lI98|H10723C370 +10723C370:lI101|H10723D290 +10723D290:lI97|H10723E080 +10723E080:lI109|N +10721F2D0:Mn2:H1072227B0,H1072227C0 +1072227B0:lH107225958|N +107225958:lI105|H1072287B0 +1072287B0:lI110|H10722B1F8 +10722B1F8:lI101|H10722D910 +10722D910:lI116|H10722FDA8 +10722FDA8:lI115|H107231F40 +107231F40:lI46|H107233DC8 +107233DC8:lI97|H107235960 +107235960:lI112|H107237288 +107237288:lI112|N +1072227C0:lH107225968|N +107225968:lI104|H1072287C0 +1072287C0:lI116|H10722B208 +10722B208:lI116|H10722D920 +10722D920:lI112|H10722FDB8 +10722FDB8:lI100|H107231F50 +107231F50:lI95|H107233DD8 +107233DD8:lI97|H107235970 +107235970:lI99|H107237298 +107237298:lI99|H107238980 +107238980:lI101|H107239E78 +107239E78:lI112|H10723B230 +10723B230:lI116|H10723C360 +10723C360:lI111|H10723D280 +10723D280:lI114|H10723E070 +10723E070:lI95|H10723ECC0 +10723ECC0:lI115|H10723F7E0 +10723F7E0:lI117|H1072401B0 +1072401B0:lI112|H107240A60 +107240A60:lI46|H107241220 +107241220:lI98|H107241960 +107241960:lI101|H107242050 +107242050:lI97|H1072426C0 +1072426C0:lI109|N +10721BC78:Mn5:H10721F270,H10721F280,H10721F290,H10721F2A0,H10721F2B0 +10721F270:lH107222750|N +107222750:lI109|H1072258F8 +1072258F8:lI111|H107228750 +107228750:lI100|H10722B198 +10722B198:lI95|H10722D8B0 +10722D8B0:lI114|H10722FD48 +10722FD48:lI101|H107231EE0 +107231EE0:lI115|H107233D68 +107233D68:lI112|H107235900 +107235900:lI111|H107237228 +107237228:lI110|H107238920 +107238920:lI115|H107239E18 +107239E18:lI101|H10723B1D0 +10723B1D0:lI99|H10723C300 +10723C300:lI111|H10723D240 +10723D240:lI110|H10723E030 +10723E030:lI116|H10723EC80 +10723EC80:lI114|H10723F7C0 +10723F7C0:lI111|H1072401A0 +1072401A0:lI108|H107240A50 +107240A50:lI46|H107241210 +107241210:lI98|H107241950 +107241950:lI101|H107242040 +107242040:lI97|H1072426B0 +1072426B0:lI109|N +10721F2B0:lH107222790|N +107222790:lI104|H107225938 +107225938:lI116|H107228790 +107228790:lI116|H10722B1D8 +10722B1D8:lI112|H10722D8F0 +10722D8F0:lI100|H10722FD88 +10722FD88:lI95|H107231F20 +107231F20:lI99|H107233DA8 +107233DA8:lI117|H107235940 +107235940:lI115|H107237268 +107237268:lI116|H107238960 +107238960:lI111|H107239E58 +107239E58:lI109|H10723B210 +10723B210:lI46|H10723C340 +10723C340:lI98|H10723D270 +10723D270:lI101|H10723E060 +10723E060:lI97|H10723ECB0 +10723ECB0:lI109|N +10721F2A0:lH107222780|N +107222780:lI104|H107225928 +107225928:lI116|H107228780 +107228780:lI116|H10722B1C8 +10722B1C8:lI112|H10722D8E0 +10722D8E0:lI100|H10722FD78 +10722FD78:lI95|H107231F10 +107231F10:lI114|H107233D98 +107233D98:lI101|H107235930 +107235930:lI113|H107237258 +107237258:lI117|H107238950 +107238950:lI101|H107239E48 +107239E48:lI115|H10723B200 +10723B200:lI116|H10723C330 +10723C330:lI46|H10723D260 +10723D260:lI98|H10723E050 +10723E050:lI101|H10723ECA0 +10723ECA0:lI97|H10723F7D0 +10723F7D0:lI109|N +10721F290:lH107222770|N +107222770:lI104|H107225918 +107225918:lI116|H107228770 +107228770:lI116|H10722B1B8 +10722B1B8:lI112|H10722D8D0 +10722D8D0:lI100|H10722FD68 +10722FD68:lI95|H107231F00 +107231F00:lI101|H107233D88 +107233D88:lI115|H107235920 +107235920:lI105|H107237248 +107237248:lI46|H107238940 +107238940:lI98|H107239E38 +107239E38:lI101|H10723B1F0 +10723B1F0:lI97|H10723C320 +10723C320:lI109|N +10721F280:lH107222760|N +107222760:lI109|H107225908 +107225908:lI111|H107228760 +107228760:lI100|H10722B1A8 +10722B1A8:lI95|H10722D8C0 +10722D8C0:lI100|H10722FD58 +10722FD58:lI105|H107231EF0 +107231EF0:lI115|H107233D78 +107233D78:lI107|H107235910 +107235910:lI95|H107237238 +107237238:lI108|H107238930 +107238930:lI111|H107239E28 +107239E28:lI103|H10723B1E0 +10723B1E0:lI46|H10723C310 +10723C310:lI98|H10723D250 +10723D250:lI101|H10723E040 +10723E040:lI97|H10723EC90 +10723EC90:lI109|N +10721BC68:lH10721F260|N +10721F260:lI109|H107222740 +107222740:lI111|H1072258E8 +1072258E8:lI100|H107228740 +107228740:lI95|H10722B188 +10722B188:lI97|H10722D8A0 +10722D8A0:lI117|H10722FD38 +10722FD38:lI116|H107231ED0 +107231ED0:lI104|H107233D58 +107233D58:lI95|H1072358F0 +1072358F0:lI112|H107237218 +107237218:lI108|H107238910 +107238910:lI97|H107239E08 +107239E08:lI105|H10723B1C0 +10723B1C0:lI110|H10723C2F0 +10723C2F0:lI46|H10723D230 +10723D230:lI98|H10723E020 +10723E020:lI101|H10723EC70 +10723EC70:lI97|H10723F7B0 +10723F7B0:lI109|N +10721BC50:Mn2:H10721F240,H10721F250 +10721F240:lH107222720|N +107222720:lI109|H1072258C8 +1072258C8:lI111|H107228720 +107228720:lI100|H10722B168 +10722B168:lI95|H10722D880 +10722D880:lI97|H10722FD18 +10722FD18:lI117|H107231EB0 +107231EB0:lI116|H107233D38 +107233D38:lI104|H1072358D0 +1072358D0:lI95|H1072371F8 +1072371F8:lI100|H1072388F0 +1072388F0:lI101|H107239DE8 +107239DE8:lI116|H10723B1A0 +10723B1A0:lI115|H10723C2D0 +10723C2D0:lI46|H10723D220 +10723D220:lI98|H10723E010 +10723E010:lI101|H10723EC60 +10723EC60:lI97|H10723F7A0 +10723F7A0:lI109|N +10721F250:lH107222730|N +107222730:lI109|H1072258D8 +1072258D8:lI111|H107228730 +107228730:lI100|H10722B178 +10722B178:lI95|H10722D890 +10722D890:lI116|H10722FD28 +10722FD28:lI114|H107231EC0 +107231EC0:lI97|H107233D48 +107233D48:lI99|H1072358E0 +1072358E0:lI101|H107237208 +107237208:lI46|H107238900 +107238900:lI98|H107239DF8 +107239DF8:lI101|H10723B1B0 +10723B1B0:lI97|H10723C2E0 +10723C2E0:lI109|N +10721BC20:Mn5:H10721F1E8,H10721F1F8,H10721F208,H10721F218,H10721F230 +10721F1E8:lH1072226C0|N +1072226C0:lI104|H107225868 +107225868:lI116|H1072286C0 +1072286C0:lI116|H10722B108 +10722B108:lI112|H10722D820 +10722D820:lI100|H10722FCB8 +10722FCB8:lI95|H107231E50 +107231E50:lI99|H107233CD8 +107233CD8:lI117|H107235870 +107235870:lI115|H107237198 +107237198:lI116|H107238890 +107238890:lI111|H107239D88 +107239D88:lI109|H10723B140 +10723B140:lI95|H10723C270 +10723C270:lI97|H10723D1D0 +10723D1D0:lI112|H10723DFC0 +10723DFC0:lI105|H10723EC20 +10723EC20:lI46|H10723F770 +10723F770:lI98|H107240170 +107240170:lI101|H107240A20 +107240A20:lI97|H1072411E0 +1072411E0:lI109|N +10721F230:lH107222710|N +107222710:lI104|H1072258B8 +1072258B8:lI116|H107228710 +107228710:lI116|H10722B158 +10722B158:lI112|H10722D870 +10722D870:lI95|H10722FD08 +10722FD08:lI114|H107231EA0 +107231EA0:lI101|H107233D28 +107233D28:lI113|H1072358C0 +1072358C0:lI117|H1072371E8 +1072371E8:lI101|H1072388E0 +1072388E0:lI115|H107239DD8 +107239DD8:lI116|H10723B190 +10723B190:lI46|H10723C2C0 +10723C2C0:lI98|H10723D210 +10723D210:lI101|H10723E000 +10723E000:lI97|H10723EC50 +10723EC50:lI109|N +10721F218:Mn2:H1072226F0,H107222700 +1072226F0:lH107225898|N +107225898:lI104|H1072286F0 +1072286F0:lI116|H10722B138 +10722B138:lI116|H10722D850 +10722D850:lI112|H10722FCE8 +10722FCE8:lI100|H107231E80 +107231E80:lI95|H107233D08 +107233D08:lI105|H1072358A0 +1072358A0:lI110|H1072371C8 +1072371C8:lI115|H1072388C0 +1072388C0:lI116|H107239DB8 +107239DB8:lI97|H10723B170 +10723B170:lI110|H10723C2A0 +10723C2A0:lI99|H10723D1F0 +10723D1F0:lI101|H10723DFE0 +10723DFE0:lI95|H10723EC40 +10723EC40:lI115|H10723F790 +10723F790:lI117|H107240190 +107240190:lI112|H107240A40 +107240A40:lI46|H107241200 +107241200:lI98|H107241940 +107241940:lI101|H107242030 +107242030:lI97|H1072426A0 +1072426A0:lI109|N +107222700:lH1072258A8|N +1072258A8:lI104|H107228700 +107228700:lI116|H10722B148 +10722B148:lI116|H10722D860 +10722D860:lI112|H10722FCF8 +10722FCF8:lI95|H107231E90 +107231E90:lI99|H107233D18 +107233D18:lI104|H1072358B0 +1072358B0:lI117|H1072371D8 +1072371D8:lI110|H1072388D0 +1072388D0:lI107|H107239DC8 +107239DC8:lI46|H10723B180 +10723B180:lI98|H10723C2B0 +10723C2B0:lI101|H10723D200 +10723D200:lI97|H10723DFF0 +10723DFF0:lI109|N +10721F208:lH1072226E0|N +1072226E0:lI105|H107225888 +107225888:lI110|H1072286E0 +1072286E0:lI101|H10722B128 +10722B128:lI116|H10722D840 +10722D840:lI115|H10722FCD8 +10722FCD8:lI95|H107231E70 +107231E70:lI115|H107233CF8 +107233CF8:lI117|H107235890 +107235890:lI112|H1072371B8 +1072371B8:lI46|H1072388B0 +1072388B0:lI98|H107239DA8 +107239DA8:lI101|H10723B160 +10723B160:lI97|H10723C290 +10723C290:lI109|N +10721F1F8:lH1072226D0|N +1072226D0:lI104|H107225878 +107225878:lI116|H1072286D0 +1072286D0:lI116|H10722B118 +10722B118:lI112|H10722D830 +10722D830:lI100|H10722FCC8 +10722FCC8:lI95|H107231E60 +107231E60:lI99|H107233CE8 +107233CE8:lI111|H107235880 +107235880:lI110|H1072371A8 +1072371A8:lI110|H1072388A0 +1072388A0:lI101|H107239D98 +107239D98:lI99|H10723B150 +10723B150:lI116|H10723C280 +10723C280:lI105|H10723D1E0 +10723D1E0:lI111|H10723DFD0 +10723DFD0:lI110|H10723EC30 +10723EC30:lI95|H10723F780 +10723F780:lI115|H107240180 +107240180:lI117|H107240A30 +107240A30:lI112|H1072411F0 +1072411F0:lI46|H107241930 +107241930:lI98|H107242020 +107242020:lI101|H107242690 +107242690:lI97|H107242CD0 +107242CD0:lI109|N +10721BBF8:Mn4:H10721F1A8,H10721F1B8,H10721F1C8,H10721F1D8 +10721F1A8:lH107222680|N +107222680:lI104|H107225828 +107225828:lI116|H107228680 +107228680:lI116|H10722B0C8 +10722B0C8:lI112|H10722D7E0 +10722D7E0:lI100|H10722FC78 +10722FC78:lI95|H107231E10 +107231E10:lI97|H107233C98 +107233C98:lI99|H107235830 +107235830:lI99|H107237158 +107237158:lI101|H107238850 +107238850:lI112|H107239D48 +107239D48:lI116|H10723B100 +10723B100:lI111|H10723C230 +10723C230:lI114|H10723D1B0 +10723D1B0:lI46|H10723DFA0 +10723DFA0:lI98|H10723EC00 +10723EC00:lI101|H10723F760 +10723F760:lI97|H107240160 +107240160:lI109|N +10721F1D8:lH1072226B0|N +1072226B0:lI105|H107225858 +107225858:lI110|H1072286B0 +1072286B0:lI101|H10722B0F8 +10722B0F8:lI116|H10722D810 +10722D810:lI115|H10722FCA8 +10722FCA8:lI95|H107231E40 +107231E40:lI108|H107233CC8 +107233CC8:lI105|H107235860 +107235860:lI98|H107237188 +107237188:lI46|H107238880 +107238880:lI98|H107239D78 +107239D78:lI101|H10723B130 +10723B130:lI97|H10723C260 +10723C260:lI109|N +10721F1C8:lH1072226A0|N +1072226A0:lI104|H107225848 +107225848:lI116|H1072286A0 +1072286A0:lI116|H10722B0E8 +10722B0E8:lI112|H10722D800 +10722D800:lI100|H10722FC98 +10722FC98:lI95|H107231E30 +107231E30:lI115|H107233CB8 +107233CB8:lI111|H107235850 +107235850:lI99|H107237178 +107237178:lI107|H107238870 +107238870:lI101|H107239D68 +107239D68:lI116|H10723B120 +10723B120:lI46|H10723C250 +10723C250:lI98|H10723D1C0 +10723D1C0:lI101|H10723DFB0 +10723DFB0:lI97|H10723EC10 +10723EC10:lI109|N +10721F1B8:lH107222690|N +107222690:lI104|H107225838 +107225838:lI116|H107228690 +107228690:lI116|H10722B0D8 +10722B0D8:lI112|H10722D7F0 +10722D7F0:lI99|H10722FC88 +10722FC88:lI95|H107231E20 +107231E20:lI115|H107233CA8 +107233CA8:lI117|H107235840 +107235840:lI112|H107237168 +107237168:lI46|H107238860 +107238860:lI98|H107239D58 +107239D58:lI101|H10723B110 +10723B110:lI97|H10723C240 +10723C240:lI109|N +107218548:lI47|H10721BBC8 +10721BBC8:lI111|H10721F160 +10721F160:lI112|H107222630 +107222630:lI116|H1072257D8 +1072257D8:lI47|H107228630 +107228630:lI104|H10722B078 +10722B078:lI111|H10722D790 +10722D790:lI109|H10722FC28 +10722FC28:lI101|H107231DC0 +107231DC0:lI98|H107233C48 +107233C48:lI114|H1072357E0 +1072357E0:lI101|H107237108 +107237108:lI119|H107238800 +107238800:lI47|H107239CF8 +107239CF8:lI67|H10723B0B0 +10723B0B0:lI101|H10723C1E0 +10723C1E0:lI108|H10723D160 +10723D160:lI108|H10723DF50 +10723DF50:lI97|H10723EBB0 +10723EBB0:lI114|H10723F710 +10723F710:lI47|H107240110 +107240110:lI101|H1072409F0 +1072409F0:lI114|H1072411D0 +1072411D0:lI108|H107241920 +107241920:lI97|H107242010 +107242010:lI110|H107242680 +107242680:lI103|H107242CC0 +107242CC0:lI47|H107243240 +107243240:lI50|H107243790 +107243790:lI54|H107243CA0 +107243CA0:lI46|H107244190 +107244190:lI48|H107244640 +107244640:lI46|H107244AB0 +107244AB0:lI50|H107244F10 +107244F10:lI47|H107245360 +107245360:lI108|H107245760 +107245760:lI105|H107245B20 +107245B20:lI98|H107245EB0 +107245EB0:lI47|H107246240 +107246240:lI101|H1072465D0 +1072465D0:lI114|H107246960 +107246960:lI108|H107246CA0 +107246CA0:lI97|H107246FC0 +107246FC0:lI110|H1072472E0 +1072472E0:lI103|H1072475F0 +1072475F0:lI47|H1072478F0 +1072478F0:lI108|H107247BF0 +107247BF0:lI105|H107247ED0 +107247ED0:lI98|H107248190 +107248190:lI47|H107248450 +107248450:lI105|H107248700 +107248700:lI110|H1072489B0 +1072489B0:lI101|H107248C30 +107248C30:lI116|H107248EA0 +107248EA0:lI115|H107249110 +107249110:lI45|H107249370 +107249370:lI57|H1072495D0 +1072495D0:lI46|H107249820 +107249820:lI48|H107249A40 +107249A40:lI46|H107249C40 +107249C40:lI49|H107249E20 +107249E20:lI47|H280052C20 +107214F60:lH1072185E8|H107218600 +1072185E8:t2:H10721BE38,A5:cache +10721BE38:lI47|H10721F558 +10721F558:lI111|H107222A50 +107222A50:lI112|H107225BF8 +107225BF8:lI116|H107228A50 +107228A50:lI47|H10722B498 +10722B498:lI104|H10722DBB0 +10722DBB0:lI111|H107230048 +107230048:lI109|H1072321E0 +1072321E0:lI101|H107234068 +107234068:lI98|H107235C00 +107235C00:lI114|H107237528 +107237528:lI101|H107238BE0 +107238BE0:lI119|H10723A0C8 +10723A0C8:lI47|H10723B430 +10723B430:lI67|H10723C540 +10723C540:lI101|H10723D410 +10723D410:lI108|H10723E1B0 +10723E1B0:lI108|H10723EDF0 +10723EDF0:lI97|H10723F8D0 +10723F8D0:lI114|H107240240 +107240240:lI47|H107240AD0 +107240AD0:lI101|H107241280 +107241280:lI114|H1072419B0 +1072419B0:lI108|H107242080 +107242080:lI97|H1072426F0 +1072426F0:lI110|H107242CF0 +107242CF0:lI103|H107243260 +107243260:lI47|H1072437A0 +1072437A0:lI50|H107243CB0 +107243CB0:lI54|H1072441A0 +1072441A0:lI46|H107244650 +107244650:lI48|H107244AC0 +107244AC0:lI46|H107244F20 +107244F20:lI50|H107245370 +107245370:lI47|H107245770 +107245770:lI108|H107245B30 +107245B30:lI105|H107245EC0 +107245EC0:lI98|H107246250 +107246250:lI47|H1072465E0 +1072465E0:lI101|H107246970 +107246970:lI114|H107246CB0 +107246CB0:lI108|H107246FD0 +107246FD0:lI97|H1072472F0 +1072472F0:lI110|H107247600 +107247600:lI103|H107247900 +107247900:lI47|H107247C00 +107247C00:lI108|H107247EE0 +107247EE0:lI105|H1072481A0 +1072481A0:lI98|H107248460 +107248460:lI47|H107248710 +107248710:lI102|H1072489C0 +1072489C0:lI116|H107248C40 +107248C40:lI112|H107248EB0 +107248EB0:lI45|H107249120 +107249120:lI49|H107249380 +107249380:lI46|H1072495E0 +1072495E0:lI50|H107249830 +107249830:lI47|H280052C20 +107218600:lH10721BE48|H10721BE60 +10721BE48:t2:H10721F568,A5:cache +10721F568:lI47|H107222A60 +107222A60:lI111|H107225C08 +107225C08:lI112|H107228A60 +107228A60:lI116|H10722B4A8 +10722B4A8:lI47|H10722DBC0 +10722DBC0:lI104|H107230058 +107230058:lI111|H1072321F0 +1072321F0:lI109|H107234078 +107234078:lI101|H107235C10 +107235C10:lI98|H107237538 +107237538:lI114|H107238BF0 +107238BF0:lI101|H10723A0D8 +10723A0D8:lI119|H10723B440 +10723B440:lI47|H10723C550 +10723C550:lI67|H10723D420 +10723D420:lI101|H10723E1C0 +10723E1C0:lI108|H10723EE00 +10723EE00:lI108|H10723F8E0 +10723F8E0:lI97|H107240250 +107240250:lI114|H107240AE0 +107240AE0:lI47|H107241290 +107241290:lI101|H1072419C0 +1072419C0:lI114|H107242090 +107242090:lI108|H107242700 +107242700:lI97|H107242D00 +107242D00:lI110|H107243270 +107243270:lI103|H1072437B0 +1072437B0:lI47|H107243CC0 +107243CC0:lI50|H1072441B0 +1072441B0:lI54|H107244660 +107244660:lI46|H107244AD0 +107244AD0:lI48|H107244F30 +107244F30:lI46|H107245380 +107245380:lI50|H107245780 +107245780:lI47|H107245B40 +107245B40:lI108|H107245ED0 +107245ED0:lI105|H107246260 +107246260:lI98|H1072465F0 +1072465F0:lI47|H107246980 +107246980:lI101|H107246CC0 +107246CC0:lI114|H107246FE0 +107246FE0:lI108|H107247300 +107247300:lI97|H107247610 +107247610:lI110|H107247910 +107247910:lI103|H107247C10 +107247C10:lI47|H107247EF0 +107247EF0:lI108|H1072481B0 +1072481B0:lI105|H107248470 +107248470:lI98|H107248720 +107248720:lI47|H1072489D0 +1072489D0:lI101|H107248C50 +107248C50:lI117|H107248EC0 +107248EC0:lI110|H107249130 +107249130:lI105|H107249390 +107249390:lI116|H1072495F0 +1072495F0:lI45|H107249840 +107249840:lI50|H107249A50 +107249A50:lI46|H107249C50 +107249C50:lI56|H107249E30 +107249E30:lI46|H107249FF0 +107249FF0:lI50|H10724A190 +10724A190:lI47|H280052C20 +10721BE60:lH10721F578|H10721F590 +10721F578:t2:H107222A70,A5:cache +107222A70:lI47|H107225C18 +107225C18:lI111|H107228A70 +107228A70:lI112|H10722B4B8 +10722B4B8:lI116|H10722DBD0 +10722DBD0:lI47|H107230068 +107230068:lI104|H107232200 +107232200:lI111|H107234088 +107234088:lI109|H107235C20 +107235C20:lI101|H107237548 +107237548:lI98|H107238C00 +107238C00:lI114|H10723A0E8 +10723A0E8:lI101|H10723B450 +10723B450:lI119|H10723C560 +10723C560:lI47|H10723D430 +10723D430:lI67|H10723E1D0 +10723E1D0:lI101|H10723EE10 +10723EE10:lI108|H10723F8F0 +10723F8F0:lI108|H107240260 +107240260:lI97|H107240AF0 +107240AF0:lI114|H1072412A0 +1072412A0:lI47|H1072419D0 +1072419D0:lI101|H1072420A0 +1072420A0:lI114|H107242710 +107242710:lI108|H107242D10 +107242D10:lI97|H107243280 +107243280:lI110|H1072437C0 +1072437C0:lI103|H107243CD0 +107243CD0:lI47|H1072441C0 +1072441C0:lI50|H107244670 +107244670:lI54|H107244AE0 +107244AE0:lI46|H107244F40 +107244F40:lI48|H107245390 +107245390:lI46|H107245790 +107245790:lI50|H107245B50 +107245B50:lI47|H107245EE0 +107245EE0:lI108|H107246270 +107246270:lI105|H107246600 +107246600:lI98|H107246990 +107246990:lI47|H107246CD0 +107246CD0:lI101|H107246FF0 +107246FF0:lI114|H107247310 +107247310:lI108|H107247620 +107247620:lI97|H107247920 +107247920:lI110|H107247C20 +107247C20:lI103|H107247F00 +107247F00:lI47|H1072481C0 +1072481C0:lI108|H107248480 +107248480:lI105|H107248730 +107248730:lI98|H1072489E0 +1072489E0:lI47|H107248C60 +107248C60:lI101|H107248ED0 +107248ED0:lI116|H107249140 +107249140:lI45|H1072493A0 +1072493A0:lI49|H107249600 +107249600:lI46|H107249850 +107249850:lI55|H107249A60 +107249A60:lI47|H280052C20 +10721F590:lH107222A80|H107222A98 +107222A80:t2:H107225C28,A5:cache +107225C28:lI47|H107228A80 +107228A80:lI111|H10722B4C8 +10722B4C8:lI112|H10722DBE0 +10722DBE0:lI116|H107230078 +107230078:lI47|H107232210 +107232210:lI104|H107234098 +107234098:lI111|H107235C30 +107235C30:lI109|H107237558 +107237558:lI101|H107238C10 +107238C10:lI98|H10723A0F8 +10723A0F8:lI114|H10723B460 +10723B460:lI101|H10723C570 +10723C570:lI119|H10723D440 +10723D440:lI47|H10723E1E0 +10723E1E0:lI67|H10723EE20 +10723EE20:lI101|H10723F900 +10723F900:lI108|H107240270 +107240270:lI108|H107240B00 +107240B00:lI97|H1072412B0 +1072412B0:lI114|H1072419E0 +1072419E0:lI47|H1072420B0 +1072420B0:lI101|H107242720 +107242720:lI114|H107242D20 +107242D20:lI108|H107243290 +107243290:lI97|H1072437D0 +1072437D0:lI110|H107243CE0 +107243CE0:lI103|H1072441D0 +1072441D0:lI47|H107244680 +107244680:lI50|H107244AF0 +107244AF0:lI54|H107244F50 +107244F50:lI46|H1072453A0 +1072453A0:lI48|H1072457A0 +1072457A0:lI46|H107245B60 +107245B60:lI50|H107245EF0 +107245EF0:lI47|H107246280 +107246280:lI108|H107246610 +107246610:lI105|H1072469A0 +1072469A0:lI98|H107246CE0 +107246CE0:lI47|H107247000 +107247000:lI101|H107247320 +107247320:lI114|H107247630 +107247630:lI108|H107247930 +107247930:lI97|H107247C30 +107247C30:lI110|H107247F10 +107247F10:lI103|H1072481D0 +1072481D0:lI47|H107248490 +107248490:lI108|H107248740 +107248740:lI105|H1072489F0 +1072489F0:lI98|H107248C70 +107248C70:lI47|H107248EE0 +107248EE0:lI101|H107249150 +107249150:lI114|H1072493B0 +1072493B0:lI116|H107249610 +107249610:lI115|H107249860 +107249860:lI45|H107249A70 +107249A70:lI49|H107249C60 +107249C60:lI52|H107249E40 +107249E40:lI46|H10724A000 +10724A000:lI48|H10724A1A0 +10724A1A0:lI46|H10724A320 +10724A320:lI50|H10724A490 +10724A490:lI47|H280052C20 +107222A98:lH107225C38|H107225C50 +107225C38:t2:H107228A90,A5:cache +107228A90:lI47|H10722B4D8 +10722B4D8:lI111|H10722DBF0 +10722DBF0:lI112|H107230088 +107230088:lI116|H107232220 +107232220:lI47|H1072340A8 +1072340A8:lI104|H107235C40 +107235C40:lI111|H107237568 +107237568:lI109|H107238C20 +107238C20:lI101|H10723A108 +10723A108:lI98|H10723B470 +10723B470:lI114|H10723C580 +10723C580:lI101|H10723D450 +10723D450:lI119|H10723E1F0 +10723E1F0:lI47|H10723EE30 +10723EE30:lI67|H10723F910 +10723F910:lI101|H107240280 +107240280:lI108|H107240B10 +107240B10:lI108|H1072412C0 +1072412C0:lI97|H1072419F0 +1072419F0:lI114|H1072420C0 +1072420C0:lI47|H107242730 +107242730:lI101|H107242D30 +107242D30:lI114|H1072432A0 +1072432A0:lI108|H1072437E0 +1072437E0:lI97|H107243CF0 +107243CF0:lI110|H1072441E0 +1072441E0:lI103|H107244690 +107244690:lI47|H107244B00 +107244B00:lI50|H107244F60 +107244F60:lI54|H1072453B0 +1072453B0:lI46|H1072457B0 +1072457B0:lI48|H107245B70 +107245B70:lI46|H107245F00 +107245F00:lI50|H107246290 +107246290:lI47|H107246620 +107246620:lI108|H1072469B0 +1072469B0:lI105|H107246CF0 +107246CF0:lI98|H107247010 +107247010:lI47|H107247330 +107247330:lI101|H107247640 +107247640:lI114|H107247940 +107247940:lI108|H107247C40 +107247C40:lI97|H107247F20 +107247F20:lI110|H1072481E0 +1072481E0:lI103|H1072484A0 +1072484A0:lI47|H107248750 +107248750:lI108|H107248A00 +107248A00:lI105|H107248C80 +107248C80:lI98|H107248EF0 +107248EF0:lI47|H107249160 +107249160:lI101|H1072493C0 +1072493C0:lI114|H107249620 +107249620:lI108|H107249870 +107249870:lI95|H107249A80 +107249A80:lI105|H107249C70 +107249C70:lI110|H107249E50 +107249E50:lI116|H10724A010 +10724A010:lI101|H10724A1B0 +10724A1B0:lI114|H10724A330 +10724A330:lI102|H10724A4A0 +10724A4A0:lI97|H10724A600 +10724A600:lI99|H10724A740 +10724A740:lI101|H10724A860 +10724A860:lI45|H10724A970 +10724A970:lI53|H10724AA60 +10724AA60:lI46|H10724AB30 +10724AB30:lI52|H10724ABD0 +10724ABD0:lI47|H280052C20 +107225C50:lH107228AA0|H107228AB8 +107228AA0:t2:H10722B4E8,A5:cache +10722B4E8:lI47|H10722DC00 +10722DC00:lI111|H107230098 +107230098:lI112|H107232230 +107232230:lI116|H1072340B8 +1072340B8:lI47|H107235C50 +107235C50:lI104|H107237578 +107237578:lI111|H107238C30 +107238C30:lI109|H10723A118 +10723A118:lI101|H10723B480 +10723B480:lI98|H10723C590 +10723C590:lI114|H10723D460 +10723D460:lI101|H10723E200 +10723E200:lI119|H10723EE40 +10723EE40:lI47|H10723F920 +10723F920:lI67|H107240290 +107240290:lI101|H107240B20 +107240B20:lI108|H1072412D0 +1072412D0:lI108|H107241A00 +107241A00:lI97|H1072420D0 +1072420D0:lI114|H107242740 +107242740:lI47|H107242D40 +107242D40:lI101|H1072432B0 +1072432B0:lI114|H1072437F0 +1072437F0:lI108|H107243D00 +107243D00:lI97|H1072441F0 +1072441F0:lI110|H1072446A0 +1072446A0:lI103|H107244B10 +107244B10:lI47|H107244F70 +107244F70:lI50|H1072453C0 +1072453C0:lI54|H1072457C0 +1072457C0:lI46|H107245B80 +107245B80:lI48|H107245F10 +107245F10:lI46|H1072462A0 +1072462A0:lI50|H107246630 +107246630:lI47|H1072469C0 +1072469C0:lI108|H107246D00 +107246D00:lI105|H107247020 +107247020:lI98|H107247340 +107247340:lI47|H107247650 +107247650:lI101|H107247950 +107247950:lI114|H107247C50 +107247C50:lI108|H107247F30 +107247F30:lI97|H1072481F0 +1072481F0:lI110|H1072484B0 +1072484B0:lI103|H107248760 +107248760:lI47|H107248A10 +107248A10:lI108|H107248C90 +107248C90:lI105|H107248F00 +107248F00:lI98|H107249170 +107249170:lI47|H1072493D0 +1072493D0:lI101|H107249630 +107249630:lI114|H107249880 +107249880:lI108|H107249A90 +107249A90:lI95|H107249C80 +107249C80:lI100|H107249E60 +107249E60:lI111|H10724A020 +10724A020:lI99|H10724A1C0 +10724A1C0:lI103|H10724A340 +10724A340:lI101|H10724A4B0 +10724A4B0:lI110|H10724A610 +10724A610:lI45|H10724A750 +10724A750:lI49|H10724A870 +10724A870:lI46|H10724A980 +10724A980:lI53|H10724AA70 +10724AA70:lI47|H280052C20 +107228AB8:lH10722B4F8|H10722B510 +10722B4F8:t2:H10722DC10,A5:cache +10722DC10:lI47|H1072300A8 +1072300A8:lI111|H107232240 +107232240:lI112|H1072340C8 +1072340C8:lI116|H107235C60 +107235C60:lI47|H107237588 +107237588:lI104|H107238C40 +107238C40:lI111|H10723A128 +10723A128:lI109|H10723B490 +10723B490:lI101|H10723C5A0 +10723C5A0:lI98|H10723D470 +10723D470:lI114|H10723E210 +10723E210:lI101|H10723EE50 +10723EE50:lI119|H10723F930 +10723F930:lI47|H1072402A0 +1072402A0:lI67|H107240B30 +107240B30:lI101|H1072412E0 +1072412E0:lI108|H107241A10 +107241A10:lI108|H1072420E0 +1072420E0:lI97|H107242750 +107242750:lI114|H107242D50 +107242D50:lI47|H1072432C0 +1072432C0:lI101|H107243800 +107243800:lI114|H107243D10 +107243D10:lI108|H107244200 +107244200:lI97|H1072446B0 +1072446B0:lI110|H107244B20 +107244B20:lI103|H107244F80 +107244F80:lI47|H1072453D0 +1072453D0:lI50|H1072457D0 +1072457D0:lI54|H107245B90 +107245B90:lI46|H107245F20 +107245F20:lI48|H1072462B0 +1072462B0:lI46|H107246640 +107246640:lI50|H1072469D0 +1072469D0:lI47|H107246D10 +107246D10:lI108|H107247030 +107247030:lI105|H107247350 +107247350:lI98|H107247660 +107247660:lI47|H107247960 +107247960:lI101|H107247C60 +107247C60:lI114|H107247F40 +107247F40:lI108|H107248200 +107248200:lI97|H1072484C0 +1072484C0:lI110|H107248770 +107248770:lI103|H107248A20 +107248A20:lI47|H107248CA0 +107248CA0:lI108|H107248F10 +107248F10:lI105|H107249180 +107249180:lI98|H1072493E0 +1072493E0:lI47|H107249640 +107249640:lI101|H107249890 +107249890:lI108|H107249AA0 +107249AA0:lI100|H107249C90 +107249C90:lI97|H107249E70 +107249E70:lI112|H10724A030 +10724A030:lI45|H10724A1D0 +10724A1D0:lI49|H10724A350 +10724A350:lI46|H10724A4C0 +10724A4C0:lI50|H10724A620 +10724A620:lI46|H10724A760 +10724A760:lI49|H10724A880 +10724A880:lI49|H10724A990 +10724A990:lI47|H280052C20 +10722B510:lH10722DC20|H10722DC38 +10722DC20:t2:H1072300B8,A5:cache +1072300B8:lI47|H107232250 +107232250:lI111|H1072340D8 +1072340D8:lI112|H107235C70 +107235C70:lI116|H107237598 +107237598:lI47|H107238C50 +107238C50:lI104|H10723A138 +10723A138:lI111|H10723B4A0 +10723B4A0:lI109|H10723C5B0 +10723C5B0:lI101|H10723D480 +10723D480:lI98|H10723E220 +10723E220:lI114|H10723EE60 +10723EE60:lI101|H10723F940 +10723F940:lI119|H1072402B0 +1072402B0:lI47|H107240B40 +107240B40:lI67|H1072412F0 +1072412F0:lI101|H107241A20 +107241A20:lI108|H1072420F0 +1072420F0:lI108|H107242760 +107242760:lI97|H107242D60 +107242D60:lI114|H1072432D0 +1072432D0:lI47|H107243810 +107243810:lI101|H107243D20 +107243D20:lI114|H107244210 +107244210:lI108|H1072446C0 +1072446C0:lI97|H107244B30 +107244B30:lI110|H107244F90 +107244F90:lI103|H1072453E0 +1072453E0:lI47|H1072457E0 +1072457E0:lI50|H107245BA0 +107245BA0:lI54|H107245F30 +107245F30:lI46|H1072462C0 +1072462C0:lI48|H107246650 +107246650:lI46|H1072469E0 +1072469E0:lI50|H107246D20 +107246D20:lI47|H107247040 +107247040:lI108|H107247360 +107247360:lI105|H107247670 +107247670:lI98|H107247970 +107247970:lI47|H107247C70 +107247C70:lI101|H107247F50 +107247F50:lI114|H107248210 +107248210:lI108|H1072484D0 +1072484D0:lI97|H107248780 +107248780:lI110|H107248A30 +107248A30:lI103|H107248CB0 +107248CB0:lI47|H107248F20 +107248F20:lI108|H107249190 +107249190:lI105|H1072493F0 +1072493F0:lI98|H107249650 +107249650:lI47|H1072498A0 +1072498A0:lI101|H107249AB0 +107249AB0:lI100|H107249CA0 +107249CA0:lI111|H107249E80 +107249E80:lI99|H10724A040 +10724A040:lI45|H10724A1E0 +10724A1E0:lI49|H10724A360 +10724A360:lI46|H10724A4D0 +10724A4D0:lI50|H10724A630 +10724A630:lI47|H280052C20 +10722DC38:lH1072300C8|H1072300E0 +1072300C8:t2:H107232260,A5:cache +107232260:lI47|H1072340E8 +1072340E8:lI111|H107235C80 +107235C80:lI112|H1072375A8 +1072375A8:lI116|H107238C60 +107238C60:lI47|H10723A148 +10723A148:lI104|H10723B4B0 +10723B4B0:lI111|H10723C5C0 +10723C5C0:lI109|H10723D490 +10723D490:lI101|H10723E230 +10723E230:lI98|H10723EE70 +10723EE70:lI114|H10723F950 +10723F950:lI101|H1072402C0 +1072402C0:lI119|H107240B50 +107240B50:lI47|H107241300 +107241300:lI67|H107241A30 +107241A30:lI101|H107242100 +107242100:lI108|H107242770 +107242770:lI108|H107242D70 +107242D70:lI97|H1072432E0 +1072432E0:lI114|H107243820 +107243820:lI47|H107243D30 +107243D30:lI101|H107244220 +107244220:lI114|H1072446D0 +1072446D0:lI108|H107244B40 +107244B40:lI97|H107244FA0 +107244FA0:lI110|H1072453F0 +1072453F0:lI103|H1072457F0 +1072457F0:lI47|H107245BB0 +107245BB0:lI50|H107245F40 +107245F40:lI54|H1072462D0 +1072462D0:lI46|H107246660 +107246660:lI48|H1072469F0 +1072469F0:lI46|H107246D30 +107246D30:lI50|H107247050 +107247050:lI47|H107247370 +107247370:lI108|H107247680 +107247680:lI105|H107247980 +107247980:lI98|H107247C80 +107247C80:lI47|H107247F60 +107247F60:lI101|H107248220 +107248220:lI114|H1072484E0 +1072484E0:lI108|H107248790 +107248790:lI97|H107248A40 +107248A40:lI110|H107248CC0 +107248CC0:lI103|H107248F30 +107248F30:lI47|H1072491A0 +1072491A0:lI108|H107249400 +107249400:lI105|H107249660 +107249660:lI98|H1072498B0 +1072498B0:lI47|H107249AC0 +107249AC0:lI100|H107249CB0 +107249CB0:lI105|H107249E90 +107249E90:lI97|H10724A050 +10724A050:lI109|H10724A1F0 +10724A1F0:lI101|H10724A370 +10724A370:lI116|H10724A4E0 +10724A4E0:lI101|H10724A640 +10724A640:lI114|H10724A770 +10724A770:lI45|H10724A890 +10724A890:lI50|H10724A9A0 +10724A9A0:lI46|H10724AA80 +10724AA80:lI51|H10724AB40 +10724AB40:lI47|H280052C20 +1072300E0:lH107232270|H107232288 +107232270:t2:H1072340F8,A5:cache +1072340F8:lI47|H107235C90 +107235C90:lI111|H1072375B8 +1072375B8:lI112|H107238C70 +107238C70:lI116|H10723A158 +10723A158:lI47|H10723B4C0 +10723B4C0:lI104|H10723C5D0 +10723C5D0:lI111|H10723D4A0 +10723D4A0:lI109|H10723E240 +10723E240:lI101|H10723EE80 +10723EE80:lI98|H10723F960 +10723F960:lI114|H1072402D0 +1072402D0:lI101|H107240B60 +107240B60:lI119|H107241310 +107241310:lI47|H107241A40 +107241A40:lI67|H107242110 +107242110:lI101|H107242780 +107242780:lI108|H107242D80 +107242D80:lI108|H1072432F0 +1072432F0:lI97|H107243830 +107243830:lI114|H107243D40 +107243D40:lI47|H107244230 +107244230:lI101|H1072446E0 +1072446E0:lI114|H107244B50 +107244B50:lI108|H107244FB0 +107244FB0:lI97|H107245400 +107245400:lI110|H107245800 +107245800:lI103|H107245BC0 +107245BC0:lI47|H107245F50 +107245F50:lI50|H1072462E0 +1072462E0:lI54|H107246670 +107246670:lI46|H107246A00 +107246A00:lI48|H107246D40 +107246D40:lI46|H107247060 +107247060:lI50|H107247380 +107247380:lI47|H107247690 +107247690:lI108|H107247990 +107247990:lI105|H107247C90 +107247C90:lI98|H107247F70 +107247F70:lI47|H107248230 +107248230:lI101|H1072484F0 +1072484F0:lI114|H1072487A0 +1072487A0:lI108|H107248A50 +107248A50:lI97|H107248CD0 +107248CD0:lI110|H107248F40 +107248F40:lI103|H1072491B0 +1072491B0:lI47|H107249410 +107249410:lI108|H107249670 +107249670:lI105|H1072498C0 +1072498C0:lI98|H107249AD0 +107249AD0:lI47|H107249CC0 +107249CC0:lI100|H107249EA0 +107249EA0:lI105|H10724A060 +10724A060:lI97|H10724A200 +10724A200:lI108|H10724A380 +10724A380:lI121|H10724A4F0 +10724A4F0:lI122|H10724A650 +10724A650:lI101|H10724A780 +10724A780:lI114|H10724A8A0 +10724A8A0:lI45|H10724A9B0 +10724A9B0:lI53|H10724AA90 +10724AA90:lI46|H10724AB50 +10724AB50:lI49|H10724ABE0 +10724ABE0:lI47|H280052C20 +107232288:lH107234108|H107234120 +107234108:t2:H107235CA0,A5:cache +107235CA0:lI47|H1072375C8 +1072375C8:lI111|H107238C80 +107238C80:lI112|H10723A168 +10723A168:lI116|H10723B4D0 +10723B4D0:lI47|H10723C5E0 +10723C5E0:lI104|H10723D4B0 +10723D4B0:lI111|H10723E250 +10723E250:lI109|H10723EE90 +10723EE90:lI101|H10723F970 +10723F970:lI98|H1072402E0 +1072402E0:lI114|H107240B70 +107240B70:lI101|H107241320 +107241320:lI119|H107241A50 +107241A50:lI47|H107242120 +107242120:lI67|H107242790 +107242790:lI101|H107242D90 +107242D90:lI108|H107243300 +107243300:lI108|H107243840 +107243840:lI97|H107243D50 +107243D50:lI114|H107244240 +107244240:lI47|H1072446F0 +1072446F0:lI101|H107244B60 +107244B60:lI114|H107244FC0 +107244FC0:lI108|H107245410 +107245410:lI97|H107245810 +107245810:lI110|H107245BD0 +107245BD0:lI103|H107245F60 +107245F60:lI47|H1072462F0 +1072462F0:lI50|H107246680 +107246680:lI54|H107246A10 +107246A10:lI46|H107246D50 +107246D50:lI48|H107247070 +107247070:lI46|H107247390 +107247390:lI50|H1072476A0 +1072476A0:lI47|H1072479A0 +1072479A0:lI108|H107247CA0 +107247CA0:lI105|H107247F80 +107247F80:lI98|H107248240 +107248240:lI47|H107248500 +107248500:lI101|H1072487B0 +1072487B0:lI114|H107248A60 +107248A60:lI108|H107248CE0 +107248CE0:lI97|H107248F50 +107248F50:lI110|H1072491C0 +1072491C0:lI103|H107249420 +107249420:lI47|H107249680 +107249680:lI108|H1072498D0 +1072498D0:lI105|H107249AE0 +107249AE0:lI98|H107249CD0 +107249CD0:lI47|H107249EB0 +107249EB0:lI100|H10724A070 +10724A070:lI101|H10724A210 +10724A210:lI98|H10724A390 +10724A390:lI117|H10724A500 +10724A500:lI103|H10724A660 +10724A660:lI103|H10724A790 +10724A790:lI101|H10724A8B0 +10724A8B0:lI114|H10724A9C0 +10724A9C0:lI45|H10724AAA0 +10724AAA0:lI53|H10724AB60 +10724AB60:lI46|H10724ABF0 +10724ABF0:lI51|H10724AC60 +10724AC60:lI46|H10724ACC0 +10724ACC0:lI49|H10724AD10 +10724AD10:lI47|H280052C20 +107234120:lH107235CB0|H107235CC8 +107235CB0:t2:H1072375D8,A5:cache +1072375D8:lI47|H107238C90 +107238C90:lI111|H10723A178 +10723A178:lI112|H10723B4E0 +10723B4E0:lI116|H10723C5F0 +10723C5F0:lI47|H10723D4C0 +10723D4C0:lI104|H10723E260 +10723E260:lI111|H10723EEA0 +10723EEA0:lI109|H10723F980 +10723F980:lI101|H1072402F0 +1072402F0:lI98|H107240B80 +107240B80:lI114|H107241330 +107241330:lI101|H107241A60 +107241A60:lI119|H107242130 +107242130:lI47|H1072427A0 +1072427A0:lI67|H107242DA0 +107242DA0:lI101|H107243310 +107243310:lI108|H107243850 +107243850:lI108|H107243D60 +107243D60:lI97|H107244250 +107244250:lI114|H107244700 +107244700:lI47|H107244B70 +107244B70:lI101|H107244FD0 +107244FD0:lI114|H107245420 +107245420:lI108|H107245820 +107245820:lI97|H107245BE0 +107245BE0:lI110|H107245F70 +107245F70:lI103|H107246300 +107246300:lI47|H107246690 +107246690:lI50|H107246A20 +107246A20:lI54|H107246D60 +107246D60:lI46|H107247080 +107247080:lI48|H1072473A0 +1072473A0:lI46|H1072476B0 +1072476B0:lI50|H1072479B0 +1072479B0:lI47|H107247CB0 +107247CB0:lI108|H107247F90 +107247F90:lI105|H107248250 +107248250:lI98|H107248510 +107248510:lI47|H1072487C0 +1072487C0:lI101|H107248A70 +107248A70:lI114|H107248CF0 +107248CF0:lI108|H107248F60 +107248F60:lI97|H1072491D0 +1072491D0:lI110|H107249430 +107249430:lI103|H107249690 +107249690:lI47|H1072498E0 +1072498E0:lI108|H107249AF0 +107249AF0:lI105|H107249CE0 +107249CE0:lI98|H107249EC0 +107249EC0:lI47|H10724A080 +10724A080:lI99|H10724A220 +10724A220:lI114|H10724A3A0 +10724A3A0:lI121|H10724A510 +10724A510:lI112|H10724A670 +10724A670:lI116|H10724A7A0 +10724A7A0:lI111|H10724A8C0 +10724A8C0:lI45|H10724A9D0 +10724A9D0:lI53|H10724AAB0 +10724AAB0:lI46|H10724AB70 +10724AB70:lI50|H10724AC00 +10724AC00:lI47|H280052C20 +107235CC8:lH1072375E8|H107237600 +1072375E8:t2:H107238CA0,A5:cache +107238CA0:lI47|H10723A188 +10723A188:lI111|H10723B4F0 +10723B4F0:lI112|H10723C600 +10723C600:lI116|H10723D4D0 +10723D4D0:lI47|H10723E270 +10723E270:lI104|H10723EEB0 +10723EEB0:lI111|H10723F990 +10723F990:lI109|H107240300 +107240300:lI101|H107240B90 +107240B90:lI98|H107241340 +107241340:lI114|H107241A70 +107241A70:lI101|H107242140 +107242140:lI119|H1072427B0 +1072427B0:lI47|H107242DB0 +107242DB0:lI67|H107243320 +107243320:lI101|H107243860 +107243860:lI108|H107243D70 +107243D70:lI108|H107244260 +107244260:lI97|H107244710 +107244710:lI114|H107244B80 +107244B80:lI47|H107244FE0 +107244FE0:lI101|H107245430 +107245430:lI114|H107245830 +107245830:lI108|H107245BF0 +107245BF0:lI97|H107245F80 +107245F80:lI110|H107246310 +107246310:lI103|H1072466A0 +1072466A0:lI47|H107246A30 +107246A30:lI50|H107246D70 +107246D70:lI54|H107247090 +107247090:lI46|H1072473B0 +1072473B0:lI48|H1072476C0 +1072476C0:lI46|H1072479C0 +1072479C0:lI50|H107247CC0 +107247CC0:lI47|H107247FA0 +107247FA0:lI108|H107248260 +107248260:lI105|H107248520 +107248520:lI98|H1072487D0 +1072487D0:lI47|H107248A80 +107248A80:lI101|H107248D00 +107248D00:lI114|H107248F70 +107248F70:lI108|H1072491E0 +1072491E0:lI97|H107249440 +107249440:lI110|H1072496A0 +1072496A0:lI103|H1072498F0 +1072498F0:lI47|H107249B00 +107249B00:lI108|H107249CF0 +107249CF0:lI105|H107249ED0 +107249ED0:lI98|H10724A090 +10724A090:lI47|H10724A230 +10724A230:lI99|H10724A3B0 +10724A3B0:lI111|H10724A520 +10724A520:lI109|H10724A680 +10724A680:lI112|H10724A7B0 +10724A7B0:lI105|H10724A8D0 +10724A8D0:lI108|H10724A9E0 +10724A9E0:lI101|H10724AAC0 +10724AAC0:lI114|H10724AB80 +10724AB80:lI45|H10724AC10 +10724AC10:lI56|H10724AC70 +10724AC70:lI46|H10724ACD0 +10724ACD0:lI51|H10724AD20 +10724AD20:lI46|H10724AD60 +10724AD60:lI50|H10724ADA0 +10724ADA0:lI47|H280052C20 +107237600:lH107238CB0|H107238CC8 +107238CB0:t2:H10723A198,A5:cache +10723A198:lI47|H10723B500 +10723B500:lI111|H10723C610 +10723C610:lI112|H10723D4E0 +10723D4E0:lI116|H10723E280 +10723E280:lI47|H10723EEC0 +10723EEC0:lI104|H10723F9A0 +10723F9A0:lI111|H107240310 +107240310:lI109|H107240BA0 +107240BA0:lI101|H107241350 +107241350:lI98|H107241A80 +107241A80:lI114|H107242150 +107242150:lI101|H1072427C0 +1072427C0:lI119|H107242DC0 +107242DC0:lI47|H107243330 +107243330:lI67|H107243870 +107243870:lI101|H107243D80 +107243D80:lI108|H107244270 +107244270:lI108|H107244720 +107244720:lI97|H107244B90 +107244B90:lI114|H107244FF0 +107244FF0:lI47|H107245440 +107245440:lI101|H107245840 +107245840:lI114|H107245C00 +107245C00:lI108|H107245F90 +107245F90:lI97|H107246320 +107246320:lI110|H1072466B0 +1072466B0:lI103|H107246A40 +107246A40:lI47|H107246D80 +107246D80:lI50|H1072470A0 +1072470A0:lI54|H1072473C0 +1072473C0:lI46|H1072476D0 +1072476D0:lI48|H1072479D0 +1072479D0:lI46|H107247CD0 +107247CD0:lI50|H107247FB0 +107247FB0:lI47|H107248270 +107248270:lI108|H107248530 +107248530:lI105|H1072487E0 +1072487E0:lI98|H107248A90 +107248A90:lI47|H107248D10 +107248D10:lI101|H107248F80 +107248F80:lI114|H1072491F0 +1072491F0:lI108|H107249450 +107249450:lI97|H1072496B0 +1072496B0:lI110|H107249900 +107249900:lI103|H107249B10 +107249B10:lI47|H107249D00 +107249D00:lI108|H107249EE0 +107249EE0:lI105|H10724A0A0 +10724A0A0:lI98|H10724A240 +10724A240:lI47|H10724A3C0 +10724A3C0:lI99|H10724A530 +10724A530:lI111|H10724A690 +10724A690:lI109|H10724A7C0 +10724A7C0:lI109|H10724A8E0 +10724A8E0:lI111|H10724A9F0 +10724A9F0:lI110|H10724AAD0 +10724AAD0:lI95|H10724AB90 +10724AB90:lI116|H10724AC20 +10724AC20:lI101|H10724AC80 +10724AC80:lI115|H10724ACE0 +10724ACE0:lI116|H10724AD30 +10724AD30:lI45|H10724AD70 +10724AD70:lI49|H10724ADB0 +10724ADB0:lI46|H10724ADE0 +10724ADE0:lI50|H10724AE10 +10724AE10:lI53|H10724AE30 +10724AE30:lI47|H280052C20 +107238CC8:lH10723A1A8|N +10723A1A8:t2:H10723B510,A5:cache +10723B510:lI47|H10723C620 +10723C620:lI111|H10723D4F0 +10723D4F0:lI112|H10723E290 +10723E290:lI116|H10723EED0 +10723EED0:lI47|H10723F9B0 +10723F9B0:lI104|H107240320 +107240320:lI111|H107240BB0 +107240BB0:lI109|H107241360 +107241360:lI101|H107241A90 +107241A90:lI98|H107242160 +107242160:lI114|H1072427D0 +1072427D0:lI101|H107242DD0 +107242DD0:lI119|H107243340 +107243340:lI47|H107243880 +107243880:lI67|H107243D90 +107243D90:lI101|H107244280 +107244280:lI108|H107244730 +107244730:lI108|H107244BA0 +107244BA0:lI97|H107245000 +107245000:lI114|H107245450 +107245450:lI47|H107245850 +107245850:lI101|H107245C10 +107245C10:lI114|H107245FA0 +107245FA0:lI108|H107246330 +107246330:lI97|H1072466C0 +1072466C0:lI110|H107246A50 +107246A50:lI103|H107246D90 +107246D90:lI47|H1072470B0 +1072470B0:lI50|H1072473D0 +1072473D0:lI54|H1072476E0 +1072476E0:lI46|H1072479E0 +1072479E0:lI48|H107247CE0 +107247CE0:lI46|H107247FC0 +107247FC0:lI50|H107248280 +107248280:lI47|H107248540 +107248540:lI108|H1072487F0 +1072487F0:lI105|H107248AA0 +107248AA0:lI98|H107248D20 +107248D20:lI47|H107248F90 +107248F90:lI101|H107249200 +107249200:lI114|H107249460 +107249460:lI108|H1072496C0 +1072496C0:lI97|H107249910 +107249910:lI110|H107249B20 +107249B20:lI103|H107249D10 +107249D10:lI47|H107249EF0 +107249EF0:lI108|H10724A0B0 +10724A0B0:lI105|H10724A250 +10724A250:lI98|H10724A3D0 +10724A3D0:lI47|H10724A540 +10724A540:lI97|H10724A6A0 +10724A6A0:lI115|H10724A7D0 +10724A7D0:lI110|H10724A8F0 +10724A8F0:lI49|H10724AA00 +10724AA00:lI45|H10724AAE0 +10724AAE0:lI53|H10724ABA0 +10724ABA0:lI46|H10724AC30 +10724AC30:lI49|H10724AC90 +10724AC90:lI47|H280052C20 +1071F0038:lI47|H1071F05F8 +1071F05F8:lI111|H1071F1880 +1071F1880:lI112|H1071F3AF8 +1071F3AF8:lI116|H1071F6310 +1071F6310:lI47|H1071F8F60 +1071F8F60:lI104|H1071FBEA0 +1071FBEA0:lI111|H1071FEF58 +1071FEF58:lI109|H107202100 +107202100:lI101|H107205340 +107205340:lI98|H107208638 +107208638:lI114|H10720B908 +10720B908:lI101|H10720EBC8 +10720EBC8:lI119|H107211F28 +107211F28:lI47|H107215400 +107215400:lI67|H107218A90 +107218A90:lI101|H10721C2C0 +10721C2C0:lI108|H10721F9C0 +10721F9C0:lI108|H107222EB8 +107222EB8:lI97|H107226020 +107226020:lI114|H107228E08 +107228E08:lI47|H10722B840 +10722B840:lI101|H10722DF18 +10722DF18:lI114|H107230340 +107230340:lI108|H1072324B8 +1072324B8:lI97|H107234320 +107234320:lI110|H107235E88 +107235E88:lI103|H107237780 +107237780:lI47|H107238E08 +107238E08:lI50|H10723A2E0 +10723A2E0:lI54|H10723B640 +10723B640:lI46|H10723C720 +10723C720:lI48|H10723D5E0 +10723D5E0:lI46|H10723E360 +10723E360:lI50|H10723EF70 +10723EF70:lI47|H10723FA40 +10723FA40:lI108|H107240390 +107240390:lI105|H107240C10 +107240C10:lI98|H1072413A0 +1072413A0:lI47|H107241AD0 +107241AD0:lI101|H1072421A0 +1072421A0:lI114|H107242810 +107242810:lI108|H107242E10 +107242E10:lI97|H107243380 +107243380:lI110|H1072438C0 +1072438C0:lI103|N +=proc_dictionary:<0.51.0> +H105D8DDC8 +H105D8DE00 +=proc_stack:<0.51.0> +y0:N +y1:A8:infinity +y2:H105D8DE90 +y3:H105D8DF68 +y4:A12:standard_error_sup +y5:P<0.49.0> +0x0000000105d8e3d8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d8e3f8:SReturn addr 0x3D82348 () +=proc_heap:<0.51.0> +105D8DE90:t5:AE:callback_cache,A11:supervisor_bridge,H105D8DE18,H105D8DE40,H105D8DE68 +105D8DE68:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfaW5mb2EC +105D8DE40:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FzdGEC +105D8DE18:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FsbGED +105D8DF68:t5:A5:state,AE:standard_error,P<0.52.0>,P<0.52.0>,H280068C20 +105D8DDC8:t2:AA:$ancestors,H105D8DDB8 +105D8DDB8:lAA:kernel_sup|H105D8DD78 +105D8DD78:lP<0.47.0>|N +105D8DE00:t2:AD:$initial_call,H105D8DDE0 +105D8DDE0:t3:A11:supervisor_bridge,AE:standard_error,I1 +=proc_dictionary:<0.52.0> +H105D972F8 +H105D972E0 +=proc_stack:<0.52.0> +y0:p<0.1> +0x0000000105d979e0:SReturn addr 0x3D82348 () +=proc_heap:<0.52.0> +105D972F8:t2:A5:onlcr,A5:false +105D972E0:t2:A8:encoding,A7:unicode +=proc_dictionary:<0.53.0> +H105D801F0 +H105D80208 +=proc_stack:<0.53.0> +y0:N +y1:A8:infinity +y2:H105D801C0 +y3:A9:undefined +y4:AD:file_server_2 +y5:P<0.49.0> +0x0000000105ddf9b8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105ddf9d8:SReturn addr 0x3D82348 () +=proc_heap:<0.53.0> +105D801C0:t5:AE:callback_cache,AB:file_server,H105D80220,H105D80248,H105D80270 +105D80270:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfaW5mb2EC +105D80248:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfY2FzdGEC +105D80220:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfY2FsbGED +105D801F0:t2:AA:$ancestors,H105D80298 +105D80298:lAA:kernel_sup|H105D802C8 +105D802C8:lP<0.47.0>|N +105D80208:t2:AD:$initial_call,H105D802A8 +105D802A8:t3:AB:file_server,A4:init,I1 +=proc_dictionary:<0.55.0> +H105D90368 +H105D90380 +=proc_stack:<0.55.0> +y0:N +y1:A8:infinity +y2:H105D902E8 +y3:H105D90318 +y4:A7:inet_db +y5:P<0.49.0> +0x0000000105d92198:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d921b8:SReturn addr 0x3D82348 () +=proc_heap:<0.55.0> +105D902E8:t5:AE:callback_cache,A7:inet_db,H105D90398,H105D903C0,H105D903E8 +105D903E8:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9pbmZvYQI= +105D903C0:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9jYXN0YQI= +105D90398:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9jYWxsYQM= +105D90318:t9:A5:state,A7:inet_db,AA:inet_cache,A11:inet_hosts_byname,A11:inet_hosts_byaddr,A16:inet_hosts_file_byname,A16:inet_hosts_file_byaddr,AC:inet_sockets,H105D90410 +105D90410:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAAK/o+vQAAd/g02c= +105D90368:t2:AA:$ancestors,H105D90428 +105D90428:lAA:kernel_sup|H105D90458 +105D90458:lP<0.47.0>|N +105D90380:t2:AD:$initial_call,H105D90438 +105D90438:t3:A7:inet_db,A4:init,I1 +=proc_dictionary:<0.56.0> +H105D98DE8 +H105D98E20 +=proc_stack:<0.56.0> +y0:N +y1:A8:infinity +y2:H105D98EB0 +y3:H105D98F20 +y4:A3:rex +y5:P<0.49.0> +0x0000000105d99428:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d99448:SReturn addr 0x3D82348 () +=proc_heap:<0.56.0> +105D98EB0:t5:AE:callback_cache,A3:rpc,H105D98E38,H105D98E60,H105D98E88 +105D98E88:E16:g3F3A3JwY3cLaGFuZGxlX2luZm9hAg== +105D98E60:E16:g3F3A3JwY3cLaGFuZGxlX2Nhc3RhAg== +105D98E38:E16:g3F3A3JwY3cLaGFuZGxlX2NhbGxhAw== +105D98F20:Mf1:H280071110:H105D98F08 +105D98F08:t2:P<0.57.0>,H105D98EF0 +105D98EF0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAD+vQAAd/g02c= +105D98DE8:t2:AA:$ancestors,H105D98DD8 +105D98DD8:lAA:kernel_sup|H105D98D98 +105D98D98:lP<0.47.0>|N +105D98E20:t2:AD:$initial_call,H105D98E00 +105D98E00:t3:A3:rpc,A4:init,I1 +=proc_stack:<0.57.0> +y0:N +y1:H105D99468 +y2:N +0x0000000105d99b98:SReturn addr 0x3D82348 () +=proc_heap:<0.57.0> +105D99468:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAE+vYAAd/g02c= +=proc_dictionary:<0.58.0> +H105D84510 +H105DA9070 +H105DA9088 +H105D84428 +=proc_stack:<0.58.0> +y0:N +y1:A8:infinity +y2:H105DA9040 +y3:H105DA9158 +y4:A12:global_name_server +y5:P<0.49.0> +0x0000000105d856e8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d85708:SReturn addr 0x3D82348 () +=proc_heap:<0.58.0> +105DA9040:t5:AE:callback_cache,A6:global,H105DA90A0,H105DA90C8,H105DA90F0 +105DA90F0:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2luZm9hAg== +105DA90C8:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2Nhc3RhAg== +105DA90A0:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2NhbGxhAw== +105DA9158:tB:A5:state,H105DA91B8,H2800715B0,N,N,N,AD:nonode@nohost,P<0.59.0>,P<0.60.0>,A8:no_trace,A5:false +105DA91B8:t3:A4:conf,A4:true,A4:true +105D84510:t2:A12:creation_extension,H105D833F0 +105D833F0:B889410000978444288 +105DA9070:t2:AA:$ancestors,H105DA9118 +105DA9118:lAA:kernel_sup|H105DA9148 +105DA9148:lP<0.47.0>|N +105DA9088:t2:AD:$initial_call,H105DA9128 +105DA9128:t3:A6:global,A4:init,I1 +105D84428:t2:A9:rand_seed,H105D84400 +105D84400:t2:H105D84478,H105D844C0 +105D844C0:lI236283493786687394|I177509139475053309 +105D84478:Mf6:H28007DE10:A5:exsss,H28007DD70,I58,H28007DD98,H28007DDC0,H28007DDE8 +=proc_stack:<0.59.0> +y0:A8:infinity +y1:H105DAE560 +0x0000000105daeb20:SReturn addr 0x3D82348 () +=proc_heap:<0.59.0> +105DAE560:t7:A5:multi,N,N,N,AD:nonode@nohost,A5:false,A5:false +=proc_stack:<0.60.0> +y0:N +0x0000000105dafe38:SReturn addr 0x3D82348 () +=proc_heap:<0.60.0> +=proc_dictionary:<0.61.0> +H105DAA4F0 +H105DAA580 +H105DAA418 +H105DAA430 +H105DAA518 +H105DAA598 +=proc_stack:<0.61.0> +y0:N +y1:A8:infinity +y2:H105DAA3D8 +y3:H105DAAB68 +y4:AC:global_group +y5:P<0.49.0> +0x0000000105daaef0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105daaf10:SReturn addr 0x3D82348 () +=proc_heap:<0.61.0> +105DAA3D8:t5:AE:callback_cache,AC:global_group,H105DAA478,H105DAA4A0,H105DAA4C8 +105DAA4C8:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2luZm9hAg== +105DAA4A0:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2Nhc3RhAg== +105DAA478:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2NhbGxhAw== +105DAAB68:tA:A5:state,A7:no_conf,N,H28007F1E8,N,N,A6:normal,H28007F1E8,H28007FCE8,A9:undefined +105DAA4F0:t2:A4:send,H28007F1D8 +105DAA580:t2:AA:$ancestors,H105DAA5C0 +105DAA5C0:lAA:kernel_sup|H105DAA600 +105DAA600:lP<0.47.0>|N +105DAA418:t2:A12:global_group_check,P<0.62.0> +105DAA430:t2:A10:registered_names,H28007F1D8 +105DAA518:t2:AC:whereis_name,H28007F1D8 +105DAA598:t2:AD:$initial_call,H105DAA5D0 +105DAA5D0:t3:AC:global_group,A4:init,I1 +=proc_stack:<0.62.0> +0x0000000105daf270:SReturn addr 0x3D82348 () +=proc_heap:<0.62.0> +=proc_dictionary:<0.63.0> +H105DAFF28 +H105DAFF40 +=proc_stack:<0.63.0> +y0:A5:false +y1:N +y2:A8:infinity +y3:H105DB0060 +y4:A11:erl_signal_server +y5:P<0.49.0> +0x0000000105db0568:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db0588:SReturn addr 0x3D82348 () +=proc_heap:<0.63.0> +105DB0060:lH105DB0030|N +105DB0030:t5:A7:handler,A12:erl_signal_handler,A5:false,H28008FBD0,A5:false +105DAFF28:t2:AA:$ancestors,H105DAFF18 +105DAFF18:lAA:kernel_sup|H105DAFED8 +105DAFED8:lP<0.47.0>|N +105DAFF40:t2:AD:$initial_call,H280042BE0 +=proc_dictionary:<0.64.0> +H105DF31D8 +H105DF31F0 +=proc_stack:<0.64.0> +y0:N +y1:A8:infinity +y2:H105DF31A8 +y3:H105DFA798 +y4:P<0.64.0> +y5:P<0.49.0> +0x0000000105dfb420:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dfb440:SReturn addr 0x3D82348 () +=proc_heap:<0.64.0> +105DF31A8:t5:AE:callback_cache,A11:supervisor_bridge,H105DF3230,H105DF3258,H105DF3280 +105DF3280:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfaW5mb2EC +105DF3258:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FzdGEC +105DF3230:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FsbGED +105DFA798:t5:A5:state,A8:user_sup,P<0.69.0>,P<0.69.0>,H105DF3190 +105DF3190:t2:P<0.64.0>,A8:user_sup +105DF31D8:t2:AA:$ancestors,H105DF32A8 +105DF32A8:lAA:kernel_sup|H105DF3310 +105DF3310:lP<0.47.0>|N +105DF31F0:t2:AD:$initial_call,H105DF32B8 +105DF32B8:t3:A11:supervisor_bridge,A8:user_sup,I1 +=proc_dictionary:<0.65.0> +H105DAC538 +H105D87E18 +H105DAC250 +=proc_stack:<0.65.0> +y0:N +y1:A8:infinity +y2:H105D889A8 +y3:N +y4:H105DAC4F8 +0x0000000105d89030:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d89050:SReturn addr 0x3D82348 () +=proc_heap:<0.65.0> +105D889A8:t5:A5:state,H105D88990,N,H280082770,A5:false +105D88990:t2:A6:server,H105D88920 +105D88920:tA:A5:state,H105DAC3B0,H105DAC350,H105DAC398,A5:false,A9:undefined,P<0.69.0>,P<0.69.0>,H105D87DE8,H105D888F0 +105D888F0:t2:A5:false,H28005B2F8 +105D87DE8:t5:A2:gr,I1,I0,P<0.69.0>,H105D87E40 +105D87E40:lH105D87E50|N +105D87E50:t4:A5:group,I0,P<0.69.0>,H280010188 +105DAC398:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBC+vQAAd/g02c= +105DAC350:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBA+vQAAd/g02c= +105DAC3B0:t1A:A5:state,H105DAC2B8,H105DAC488,H105DAC2D0,H105DAC2E8,A4:true,N,N,N,N,A9:undefined,I125,I12,A5:false,H280086838,H280086850,H280086868,H280086880,H280086898,H2800868B0,H2800868C8,A5:false,A5:false,H2800868E0,H2800868F8,H105DAC320 +105DAC320:t5:AA:re_pattern,I0,I1,I0,H105DAC368 +105DAC368:Yc130931BD0:0:15E +105DAC2E8:Mf4:H280086920:A4:true,A5:false,A5:false,A5:false +105DAC2D0:t2:P<0.67.0>,H105DAC350 +105DAC488:t2:P<0.68.0>,H105DAC398 +105DAC2B8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= +105DAC4F8:t7:A6:params,AF:state_functions,A5:false,P<0.65.0>,H105DAC598,A8:user_drv,A8:infinity +105DAC598:lA8:user_drv|N +105DAC538:t2:AA:$ancestors,H105DAC5A8 +105DAC5A8:lP<0.69.0>|H105DAC268 +105DAC268:lP<0.64.0>|H105DAC298 +105DAC298:lAA:kernel_sup|H105DAC2A8 +105DAC2A8:lP<0.47.0>|N +105D87E18:t2:AD:current_group,P<0.69.0> +105DAC250:t2:AD:$initial_call,H105DAC278 +105DAC278:t3:A8:user_drv,A4:init,I1 +=proc_dictionary:<0.67.0> +H105DAAFD8 +H105DAB010 +=proc_stack:<0.67.0> +y0:N +y1:H105DAB028 +y2:H105DAAF50 +0x0000000105dab640:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dab660:SReturn addr 0x3D82348 () +=proc_heap:<0.67.0> +105DAB028:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBA+vQAAd/g02c= +105DAAF50:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= +105DAAFD8:t2:AA:$ancestors,H105DAAFC8 +105DAAFC8:lA8:user_drv|H105DAAF88 +105DAAF88:lP<0.64.0>|H105DAAF78 +105DAAF78:lAA:kernel_sup|H105DAAF68 +105DAAF68:lP<0.47.0>|N +105DAB010:t2:AD:$initial_call,H105DAAFF0 +105DAAFF0:t3:A8:prim_tty,A6:writer,I1 +=proc_dictionary:<0.68.0> +H105DAB758 +H105DAB790 +=proc_stack:<0.68.0> +y0:N +y1:N +y2:H280086C10 +y3:A4:utf8 +y4:H105DAB7A8 +y5:H105DAB7C0 +y6:P<0.65.0> +y7:H105DAB6B0 +0x0000000105dabd90:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dabdb0:SReturn addr 0x3D82348 () +=proc_heap:<0.68.0> +105DAB7A8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBC+vQAAd/g02c= +105DAB7C0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBD+vQAAd/g02c= +105DAB6B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= +105DAB758:t2:AA:$ancestors,H105DAB748 +105DAB748:lA8:user_drv|H105DAB708 +105DAB708:lP<0.64.0>|H105DAB6F8 +105DAB6F8:lAA:kernel_sup|H105DAB6E8 +105DAB6E8:lP<0.47.0>|N +105DAB790:t2:AD:$initial_call,H105DAB770 +105DAB770:t3:A8:prim_tty,A6:reader,I1 +=proc_dictionary:<0.69.0> +H105D89778 +H105D898F8 +H105D897E8 +H105D85E78 +H105D89810 +H105D89730 +H105D89748 +H105D89760 +=proc_stack:<0.69.0> +y0:N +y1:A2:ok +y2:P<0.65.0> +0x0000000105d89c18:SReturn addr 0x3D82348 () +=proc_heap:<0.69.0> +105D89778:t2:AD:unicode_state,A4:true +105D898F8:t2:AA:expand_fun,H2800870F0 +105D897E8:t2:A4:echo,A5:false +105D85E78:t2:AB:kill_buffer,N +105D89810:t2:AC:expand_below,A4:true +105D89730:t2:AB:line_buffer,N +105D89748:t2:A9:read_mode,A6:binary +105D89760:t2:A8:user_drv,P<0.65.0> +=proc_dictionary:<0.70.0> +H105D86A30 +H105D86A48 +=proc_stack:<0.70.0> +y0:N +y1:A8:infinity +y2:H105D86C90 +y3:H105D81B48 +y4:AA:logger_sup +y5:P<0.49.0> +0x0000000105d82070:SReturn addr 0x3E951BC (proc_lib:wake_up/3 + 220) +y0:N +y1:N +y2:SCatch 0x3E951E4 (proc_lib:wake_up/3 + 260) +0x0000000105d82090:SReturn addr 0x3D82348 () +=proc_heap:<0.70.0> +105D86C90:t5:AE:callback_cache,AA:supervisor,H105D86CC0,H105D86CE8,H105D86D10 +105D86D10:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105D86CE8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105D86CC0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105D81B48:tC:A5:state,H280088258,AB:one_for_one,H105D81B30,A9:undefined,I1,I5,N,I0,A5:never,AA:logger_sup,N +105D81B30:t2:H105D81B20,H105D81AC0 +105D81AC0:Mf4:H105D81AF8:H105D81718,H105D86BE0,H105D86C30,H105D81A70 +105D81AF8:t4:A7:default,A16:logger_handler_watcher,AC:logger_proxy,AB:ssl_handler +105D81A70:t9:A5:child,P<0.105.0>,AB:ssl_handler,H105D81A50,A9:temporary,A5:false,I2000,A6:worker,H280091F30 +105D81A50:t3:AA:logger_olp,AA:start_link,A9:undefined +105D86C30:t9:A5:child,P<0.72.0>,AC:logger_proxy,H28005A150,A9:temporary,A5:false,I2000,A6:worker,H28005A140 +105D86BE0:t9:A5:child,P<0.71.0>,A16:logger_handler_watcher,H2800882C0,A9:permanent,A5:false,AB:brutal_kill,A6:worker,H105D86C80 +105D86C80:lA16:logger_handler_watcher|N +105D81718:t9:A5:child,P<0.77.0>,A7:default,H105D817D8,A9:temporary,A5:false,I2000,A6:worker,H280091F30 +105D817D8:t3:AA:logger_olp,AA:start_link,A9:undefined +105D81B20:lAB:ssl_handler|H105D81698 +105D81698:lA7:default|H105D86B70 +105D86B70:lAC:logger_proxy|H105D86BB8 +105D86BB8:lA16:logger_handler_watcher|N +105D86A30:t2:AA:$ancestors,H105D86A70 +105D86A70:lAA:kernel_sup|H105D86AB0 +105D86AB0:lP<0.47.0>|N +105D86A48:t2:AD:$initial_call,H105D86A80 +105D86A80:t3:AA:supervisor,AA:logger_sup,I1 +=proc_dictionary:<0.71.0> +H105D85808 +H105D85840 +=proc_stack:<0.71.0> +y0:N +y1:A8:infinity +y2:H105D858D0 +y3:H105D85B58 +y4:A16:logger_handler_watcher +y5:P<0.70.0> +0x0000000105d85e38:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d85e58:SReturn addr 0x3D82348 () +=proc_heap:<0.71.0> +105D858D0:t5:AE:callback_cache,A16:logger_handler_watcher,H105D85858,H105D85880,H105D858A8 +105D858A8:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9pbmZvYQI= +105D85880:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9jYXN0YQI= +105D85858:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9jYWxsYQM= +105D85B58:t2:A5:state,H105D85B48 +105D85B48:lH105D859F0|H105D85B38 +105D859F0:t2:A7:default,H105D859D8 +105D859D8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALCJ+vQAAd/g02c= +105D85B38:lH105D85B20|N +105D85B20:t2:AB:ssl_handler,H105D85B08 +105D85B08:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALFo+vQAAd/g02c= +105D85808:t2:AA:$ancestors,H105D857F8 +105D857F8:lAA:logger_sup|H105D857B8 +105D857B8:lAA:kernel_sup|H105D857A8 +105D857A8:lP<0.47.0>|N +105D85840:t2:AD:$initial_call,H105D85820 +105D85820:t3:A16:logger_handler_watcher,A4:init,I1 +=proc_dictionary:<0.72.0> +H105D89DB0 +H105D89DC8 +H105D89DE0 +=proc_stack:<0.72.0> +0x0000000105d8a748:SReturn addr 0x3F1CC18 (gen_server:try_handle_info/3 + 240) +y0:N +y1:N +y2:N +y3:AA:logger_olp +y4:H105D89CF8 +y5:H105DE8808 +y6:SCatch 0x3F1CC6C (gen_server:try_handle_info/3 + 324) +0x0000000105d8a788:SReturn addr 0x3F1D994 (gen_server:handle_msg/6 + 1028) +y0:A8:infinity +y1:H105D8A120 +y2:H105D89CF8 +y3:P<0.72.0> +y4:P<0.70.0> +y5:H105DE8808 +0x0000000105d8a7c0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d8a7e0:SReturn addr 0x3D82348 () +=proc_heap:<0.72.0> +105D89CF8:Mf14:H105D89E18:AC:logger_proxy,AC:logger_proxy,A5:async,A4:true,A5:false,I1000,I5000,I500,I0,I-576460751881273,A8:no_state,I-576460751881273,I0,H105D89EC0,I5000,I500,I1000,A5:false,I3000000,I20000 +105D89E18:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen +105D89EC0:t2:AA:logger_olp,AC:logger_proxy +105DE8808:t5:A3:log,A5:error,H105DE5C18,H105DE8758,H105DE87D0 +105DE87D0:Mf4:H105DE87A8:H105DE8768,P<0.134.0>,I1701928823965135,P<0.69.0> +105DE87A8:t4:AC:error_logger,A3:pid,A4:time,A2:gl +105DE8768:Mf2:H105DE8790:A4:true,A5:error +105DE8790:t2:A8:emulator,A3:tag +105DE8758:lP<0.134.0>|H105DE5C28 +105DE5C28:lH105DE5C38|N +105DE5C38:t2:H105DE5C50,H105DE5C90 +105DE5C90:lH105DE5D10|H105DE5CA0 +105DE5D10:t4:A23:showtime@internal@reports@formatter,A1C:-create_test_report/1-fun-4-,I1,H105DE5DD8 +105DE5DD8:lH105DE5E78|H105DE5DE8 +105DE5E78:t2:A4:file,H105DE86B8 +105DE86B8:lI47|H105DE86A8 +105DE86A8:lI85|H105DE8698 +105DE8698:lI115|H105DE8688 +105DE8688:lI101|H105DE8678 +105DE8678:lI114|H105DE8668 +105DE8668:lI115|H105DE8658 +105DE8658:lI47|H105DE8648 +105DE8648:lI110|H105DE8638 +105DE8638:lI105|H105DE8628 +105DE8628:lI99|H105DE8618 +105DE8618:lI104|H105DE8608 +105DE8608:lI111|H105DE85F8 +105DE85F8:lI108|H105DE85E8 +105DE85E8:lI97|H105DE85D8 +105DE85D8:lI115|H105DE85C8 +105DE85C8:lI99|H105DE85B8 +105DE85B8:lI97|H105DE85A8 +105DE85A8:lI114|H105DE8598 +105DE8598:lI108|H105DE8588 +105DE8588:lI115|H105DE8578 +105DE8578:lI111|H105DE8568 +105DE8568:lI110|H105DE8558 +105DE8558:lI47|H105DE8548 +105DE8548:lI86|H105DE8538 +105DE8538:lI83|H105DE8528 +105DE8528:lI32|H105DE8518 +105DE8518:lI67|H105DE8508 +105DE8508:lI111|H105DE84F8 +105DE84F8:lI100|H105DE84E8 +105DE84E8:lI101|H105DE84D8 +105DE84D8:lI47|H105DE84C8 +105DE84C8:lI65|H105DE84B8 +105DE84B8:lI100|H105DE84A8 +105DE84A8:lI118|H105DE8498 +105DE8498:lI101|H105DE8488 +105DE8488:lI110|H105DE8478 +105DE8478:lI116|H105DE8468 +105DE8468:lI79|H105DE8458 +105DE8458:lI102|H105DE8448 +105DE8448:lI67|H105DE8438 +105DE8438:lI111|H105DE8428 +105DE8428:lI100|H105DE8418 +105DE8418:lI101|H105DE8408 +105DE8408:lI47|H105DE83F8 +105DE83F8:lI97|H105DE83E8 +105DE83E8:lI111|H105DE83D8 +105DE83D8:lI99|H105DE83C8 +105DE83C8:lI50|H105DE83B8 +105DE83B8:lI48|H105DE83A8 +105DE83A8:lI50|H105DE8398 +105DE8398:lI51|H105DE8388 +105DE8388:lI47|H105DE8378 +105DE8378:lI98|H105DE8368 +105DE8368:lI117|H105DE8358 +105DE8358:lI105|H105DE8348 +105DE8348:lI108|H105DE8338 +105DE8338:lI100|H105DE8328 +105DE8328:lI47|H105DE8318 +105DE8318:lI100|H105DE8308 +105DE8308:lI101|H105DE82F8 +105DE82F8:lI118|H105DE82E8 +105DE82E8:lI47|H105DE82D8 +105DE82D8:lI101|H105DE82C8 +105DE82C8:lI114|H105DE82B8 +105DE82B8:lI108|H105DE82A8 +105DE82A8:lI97|H105DE8298 +105DE8298:lI110|H105DE8288 +105DE8288:lI103|H105DE8278 +105DE8278:lI47|H105DE8268 +105DE8268:lI97|H105DE8258 +105DE8258:lI100|H105DE8248 +105DE8248:lI103|H105DE8238 +105DE8238:lI108|H105DE8228 +105DE8228:lI101|H105DE8218 +105DE8218:lI110|H105DE8208 +105DE8208:lI116|H105DE81F8 +105DE81F8:lI47|H105DE81E8 +105DE81E8:lI95|H105DE81D8 +105DE81D8:lI103|H105DE81C8 +105DE81C8:lI108|H105DE81B8 +105DE81B8:lI101|H105DE81A8 +105DE81A8:lI97|H105DE8198 +105DE8198:lI109|H105DE8188 +105DE8188:lI95|H105DE8178 +105DE8178:lI97|H105DE8168 +105DE8168:lI114|H105DE8158 +105DE8158:lI116|H105DE8148 +105DE8148:lI101|H105DE8138 +105DE8138:lI102|H105DE8128 +105DE8128:lI97|H105DE8118 +105DE8118:lI99|H105DE8108 +105DE8108:lI116|H105DE80F8 +105DE80F8:lI115|H105DE80E8 +105DE80E8:lI47|H105DE80D8 +105DE80D8:lI115|H105DE80C8 +105DE80C8:lI104|H105DE80B8 +105DE80B8:lI111|H105DE80A8 +105DE80A8:lI119|H105DE8098 +105DE8098:lI116|H105DE8088 +105DE8088:lI105|H105DE8078 +105DE8078:lI109|H105DE8068 +105DE8068:lI101|H105DE8058 +105DE8058:lI64|H105DE8048 +105DE8048:lI105|H105DE8038 +105DE8038:lI110|H105DE8028 +105DE8028:lI116|H105DE8018 +105DE8018:lI101|H105DE8008 +105DE8008:lI114|H105DE7FF8 +105DE7FF8:lI110|H105DE7FE8 +105DE7FE8:lI97|H105DE7FD8 +105DE7FD8:lI108|H105DE7FC8 +105DE7FC8:lI64|H105DE7FB8 +105DE7FB8:lI114|H105DE7FA8 +105DE7FA8:lI101|H105DE7F98 +105DE7F98:lI112|H105DE7F88 +105DE7F88:lI111|H105DE7F78 +105DE7F78:lI114|H105DE7F68 +105DE7F68:lI116|H105DE7F58 +105DE7F58:lI115|H105DE7F48 +105DE7F48:lI64|H105DE7F38 +105DE7F38:lI102|H105DE7F28 +105DE7F28:lI111|H105DE7F18 +105DE7F18:lI114|H105DE7F08 +105DE7F08:lI109|H105DE7EF8 +105DE7EF8:lI97|H105DE7EE8 +105DE7EE8:lI116|H105DE7ED8 +105DE7ED8:lI116|H105DE7EC8 +105DE7EC8:lI101|H105DE7EB8 +105DE7EB8:lI114|H105DE7EA8 +105DE7EA8:lI46|H105DE7E98 +105DE7E98:lI101|H105DE7E88 +105DE7E88:lI114|H105DE7E78 +105DE7E78:lI108|N +105DE5DE8:lH105DE5E90|N +105DE5E90:t2:A4:line,I665 +105DE5CA0:lH105DE5D38|H105DE5CB0 +105DE5D38:t4:AA:gleam@list,AD:do_filter_map,I3,H105DE5DF8 +105DE5DF8:lH105DE5EA8|H105DE5E08 +105DE5EA8:t2:A4:file,H105DE7E68 +105DE7E68:lI47|H105DE7E58 +105DE7E58:lI85|H105DE7E48 +105DE7E48:lI115|H105DE7E38 +105DE7E38:lI101|H105DE7E28 +105DE7E28:lI114|H105DE7E18 +105DE7E18:lI115|H105DE7E08 +105DE7E08:lI47|H105DE7DF8 +105DE7DF8:lI110|H105DE7DE8 +105DE7DE8:lI105|H105DE7DD8 +105DE7DD8:lI99|H105DE7DC8 +105DE7DC8:lI104|H105DE7DB8 +105DE7DB8:lI111|H105DE7DA8 +105DE7DA8:lI108|H105DE7D98 +105DE7D98:lI97|H105DE7D88 +105DE7D88:lI115|H105DE7D78 +105DE7D78:lI99|H105DE7D68 +105DE7D68:lI97|H105DE7D58 +105DE7D58:lI114|H105DE7D48 +105DE7D48:lI108|H105DE7D38 +105DE7D38:lI115|H105DE7D28 +105DE7D28:lI111|H105DE7D18 +105DE7D18:lI110|H105DE7D08 +105DE7D08:lI47|H105DE7CF8 +105DE7CF8:lI86|H105DE7CE8 +105DE7CE8:lI83|H105DE7CD8 +105DE7CD8:lI32|H105DE7CC8 +105DE7CC8:lI67|H105DE7CB8 +105DE7CB8:lI111|H105DE7CA8 +105DE7CA8:lI100|H105DE7C98 +105DE7C98:lI101|H105DE7C88 +105DE7C88:lI47|H105DE7C78 +105DE7C78:lI65|H105DE7C68 +105DE7C68:lI100|H105DE7C58 +105DE7C58:lI118|H105DE7C48 +105DE7C48:lI101|H105DE7C38 +105DE7C38:lI110|H105DE7C28 +105DE7C28:lI116|H105DE7C18 +105DE7C18:lI79|H105DE7C08 +105DE7C08:lI102|H105DE7BF8 +105DE7BF8:lI67|H105DE7BE8 +105DE7BE8:lI111|H105DE7BD8 +105DE7BD8:lI100|H105DE7BC8 +105DE7BC8:lI101|H105DE7BB8 +105DE7BB8:lI47|H105DE7BA8 +105DE7BA8:lI97|H105DE7B98 +105DE7B98:lI111|H105DE7B88 +105DE7B88:lI99|H105DE7B78 +105DE7B78:lI50|H105DE7B68 +105DE7B68:lI48|H105DE7B58 +105DE7B58:lI50|H105DE7B48 +105DE7B48:lI51|H105DE7B38 +105DE7B38:lI47|H105DE7B28 +105DE7B28:lI98|H105DE7B18 +105DE7B18:lI117|H105DE7B08 +105DE7B08:lI105|H105DE7AF8 +105DE7AF8:lI108|H105DE7AE8 +105DE7AE8:lI100|H105DE7AD8 +105DE7AD8:lI47|H105DE7AC8 +105DE7AC8:lI100|H105DE7AB8 +105DE7AB8:lI101|H105DE7AA8 +105DE7AA8:lI118|H105DE7A98 +105DE7A98:lI47|H105DE7A88 +105DE7A88:lI101|H105DE7A78 +105DE7A78:lI114|H105DE7A68 +105DE7A68:lI108|H105DE7A58 +105DE7A58:lI97|H105DE7A48 +105DE7A48:lI110|H105DE7A38 +105DE7A38:lI103|H105DE7A28 +105DE7A28:lI47|H105DE7A18 +105DE7A18:lI103|H105DE7A08 +105DE7A08:lI108|H105DE79F8 +105DE79F8:lI101|H105DE79E8 +105DE79E8:lI97|H105DE79D8 +105DE79D8:lI109|H105DE79C8 +105DE79C8:lI95|H105DE79B8 +105DE79B8:lI115|H105DE79A8 +105DE79A8:lI116|H105DE7998 +105DE7998:lI100|H105DE7988 +105DE7988:lI108|H105DE7978 +105DE7978:lI105|H105DE7968 +105DE7968:lI98|H105DE7958 +105DE7958:lI47|H105DE7948 +105DE7948:lI95|H105DE7938 +105DE7938:lI103|H105DE7928 +105DE7928:lI108|H105DE7918 +105DE7918:lI101|H105DE7908 +105DE7908:lI97|H105DE78F8 +105DE78F8:lI109|H105DE78E8 +105DE78E8:lI95|H105DE78D8 +105DE78D8:lI97|H105DE78C8 +105DE78C8:lI114|H105DE78B8 +105DE78B8:lI116|H105DE78A8 +105DE78A8:lI101|H105DE7898 +105DE7898:lI102|H105DE7888 +105DE7888:lI97|H105DE7878 +105DE7878:lI99|H105DE7868 +105DE7868:lI116|H105DE7858 +105DE7858:lI115|H105DE7848 +105DE7848:lI47|H105DE7838 +105DE7838:lI103|H105DE7828 +105DE7828:lI108|H105DE7818 +105DE7818:lI101|H105DE7808 +105DE7808:lI97|H105DE77F8 +105DE77F8:lI109|H105DE77E8 +105DE77E8:lI64|H105DE77D8 +105DE77D8:lI108|H105DE77C8 +105DE77C8:lI105|H105DE77B8 +105DE77B8:lI115|H105DE77A8 +105DE77A8:lI116|H105DE7798 +105DE7798:lI46|H105DE7788 +105DE7788:lI101|H105DE7778 +105DE7778:lI114|H105DE7768 +105DE7768:lI108|N +105DE5E08:lH105DE5EC0|N +105DE5EC0:t2:A4:line,I94 +105DE5CB0:lH105DE5D60|H105DE5CC0 +105DE5D60:t4:A23:showtime@internal@reports@formatter,A12:create_test_report,I1,H105DE5E18 +105DE5E18:lH105DE5ED8|H105DE5E28 +105DE5ED8:t2:A4:file,H105DE7758 +105DE7758:lI47|H105DE7748 +105DE7748:lI85|H105DE7738 +105DE7738:lI115|H105DE7728 +105DE7728:lI101|H105DE7718 +105DE7718:lI114|H105DE7708 +105DE7708:lI115|H105DE76F8 +105DE76F8:lI47|H105DE76E8 +105DE76E8:lI110|H105DE76D8 +105DE76D8:lI105|H105DE76C8 +105DE76C8:lI99|H105DE76B8 +105DE76B8:lI104|H105DE76A8 +105DE76A8:lI111|H105DE7698 +105DE7698:lI108|H105DE7688 +105DE7688:lI97|H105DE7678 +105DE7678:lI115|H105DE7668 +105DE7668:lI99|H105DE7658 +105DE7658:lI97|H105DE7648 +105DE7648:lI114|H105DE7638 +105DE7638:lI108|H105DE7628 +105DE7628:lI115|H105DE7618 +105DE7618:lI111|H105DE7608 +105DE7608:lI110|H105DE75F8 +105DE75F8:lI47|H105DE75E8 +105DE75E8:lI86|H105DE75D8 +105DE75D8:lI83|H105DE75C8 +105DE75C8:lI32|H105DE75B8 +105DE75B8:lI67|H105DE75A8 +105DE75A8:lI111|H105DE7598 +105DE7598:lI100|H105DE7588 +105DE7588:lI101|H105DE7578 +105DE7578:lI47|H105DE7568 +105DE7568:lI65|H105DE7558 +105DE7558:lI100|H105DE7548 +105DE7548:lI118|H105DE7538 +105DE7538:lI101|H105DE7528 +105DE7528:lI110|H105DE7518 +105DE7518:lI116|H105DE7508 +105DE7508:lI79|H105DE74F8 +105DE74F8:lI102|H105DE74E8 +105DE74E8:lI67|H105DE74D8 +105DE74D8:lI111|H105DE74C8 +105DE74C8:lI100|H105DE74B8 +105DE74B8:lI101|H105DE74A8 +105DE74A8:lI47|H105DE7498 +105DE7498:lI97|H105DE7488 +105DE7488:lI111|H105DE7478 +105DE7478:lI99|H105DE7468 +105DE7468:lI50|H105DE7458 +105DE7458:lI48|H105DE7448 +105DE7448:lI50|H105DE7438 +105DE7438:lI51|H105DE7428 +105DE7428:lI47|H105DE7418 +105DE7418:lI98|H105DE7408 +105DE7408:lI117|H105DE73F8 +105DE73F8:lI105|H105DE73E8 +105DE73E8:lI108|H105DE73D8 +105DE73D8:lI100|H105DE73C8 +105DE73C8:lI47|H105DE73B8 +105DE73B8:lI100|H105DE73A8 +105DE73A8:lI101|H105DE7398 +105DE7398:lI118|H105DE7388 +105DE7388:lI47|H105DE7378 +105DE7378:lI101|H105DE7368 +105DE7368:lI114|H105DE7358 +105DE7358:lI108|H105DE7348 +105DE7348:lI97|H105DE7338 +105DE7338:lI110|H105DE7328 +105DE7328:lI103|H105DE7318 +105DE7318:lI47|H105DE7308 +105DE7308:lI97|H105DE72F8 +105DE72F8:lI100|H105DE72E8 +105DE72E8:lI103|H105DE72D8 +105DE72D8:lI108|H105DE72C8 +105DE72C8:lI101|H105DE72B8 +105DE72B8:lI110|H105DE72A8 +105DE72A8:lI116|H105DE7298 +105DE7298:lI47|H105DE7288 +105DE7288:lI95|H105DE7278 +105DE7278:lI103|H105DE7268 +105DE7268:lI108|H105DE7258 +105DE7258:lI101|H105DE7248 +105DE7248:lI97|H105DE7238 +105DE7238:lI109|H105DE7228 +105DE7228:lI95|H105DE7218 +105DE7218:lI97|H105DE7208 +105DE7208:lI114|H105DE71F8 +105DE71F8:lI116|H105DE71E8 +105DE71E8:lI101|H105DE71D8 +105DE71D8:lI102|H105DE71C8 +105DE71C8:lI97|H105DE71B8 +105DE71B8:lI99|H105DE71A8 +105DE71A8:lI116|H105DE7198 +105DE7198:lI115|H105DE7188 +105DE7188:lI47|H105DE7178 +105DE7178:lI115|H105DE7168 +105DE7168:lI104|H105DE7158 +105DE7158:lI111|H105DE7148 +105DE7148:lI119|H105DE7138 +105DE7138:lI116|H105DE7128 +105DE7128:lI105|H105DE7118 +105DE7118:lI109|H105DE7108 +105DE7108:lI101|H105DE70F8 +105DE70F8:lI64|H105DE70E8 +105DE70E8:lI105|H105DE70D8 +105DE70D8:lI110|H105DE70C8 +105DE70C8:lI116|H105DE70B8 +105DE70B8:lI101|H105DE70A8 +105DE70A8:lI114|H105DE7098 +105DE7098:lI110|H105DE7088 +105DE7088:lI97|H105DE7078 +105DE7078:lI108|H105DE7068 +105DE7068:lI64|H105DE7058 +105DE7058:lI114|H105DE7048 +105DE7048:lI101|H105DE7038 +105DE7038:lI112|H105DE7028 +105DE7028:lI111|H105DE7018 +105DE7018:lI114|H105DE7008 +105DE7008:lI116|H105DE6FF8 +105DE6FF8:lI115|H105DE6FE8 +105DE6FE8:lI64|H105DE6FD8 +105DE6FD8:lI102|H105DE6FC8 +105DE6FC8:lI111|H105DE6FB8 +105DE6FB8:lI114|H105DE6FA8 +105DE6FA8:lI109|H105DE6F98 +105DE6F98:lI97|H105DE6F88 +105DE6F88:lI116|H105DE6F78 +105DE6F78:lI116|H105DE6F68 +105DE6F68:lI101|H105DE6F58 +105DE6F58:lI114|H105DE6F48 +105DE6F48:lI46|H105DE6F38 +105DE6F38:lI101|H105DE6F28 +105DE6F28:lI114|H105DE6F18 +105DE6F18:lI108|N +105DE5E28:lH105DE5EF0|N +105DE5EF0:t2:A4:line,I486 +105DE5CC0:lH105DE5D88|H105DE5CD0 +105DE5D88:t4:A26:showtime@internal@erlang@event_handler,AF:-start/0-fun-1-,I2,H105DE5E38 +105DE5E38:lH105DE5F08|H105DE5E48 +105DE5F08:t2:A4:file,H105DE6F08 +105DE6F08:lI47|H105DE6EF8 +105DE6EF8:lI85|H105DE6EE8 +105DE6EE8:lI115|H105DE6ED8 +105DE6ED8:lI101|H105DE6EC8 +105DE6EC8:lI114|H105DE6EB8 +105DE6EB8:lI115|H105DE6EA8 +105DE6EA8:lI47|H105DE6E98 +105DE6E98:lI110|H105DE6E88 +105DE6E88:lI105|H105DE6E78 +105DE6E78:lI99|H105DE6E68 +105DE6E68:lI104|H105DE6E58 +105DE6E58:lI111|H105DE6E48 +105DE6E48:lI108|H105DE6E38 +105DE6E38:lI97|H105DE6E28 +105DE6E28:lI115|H105DE6E18 +105DE6E18:lI99|H105DE6E08 +105DE6E08:lI97|H105DE6DF8 +105DE6DF8:lI114|H105DE6DE8 +105DE6DE8:lI108|H105DE6DD8 +105DE6DD8:lI115|H105DE6DC8 +105DE6DC8:lI111|H105DE6DB8 +105DE6DB8:lI110|H105DE6DA8 +105DE6DA8:lI47|H105DE6D98 +105DE6D98:lI86|H105DE6D88 +105DE6D88:lI83|H105DE6D78 +105DE6D78:lI32|H105DE6D68 +105DE6D68:lI67|H105DE6D58 +105DE6D58:lI111|H105DE6D48 +105DE6D48:lI100|H105DE6D38 +105DE6D38:lI101|H105DE6D28 +105DE6D28:lI47|H105DE6D18 +105DE6D18:lI65|H105DE6D08 +105DE6D08:lI100|H105DE6CF8 +105DE6CF8:lI118|H105DE6CE8 +105DE6CE8:lI101|H105DE6CD8 +105DE6CD8:lI110|H105DE6CC8 +105DE6CC8:lI116|H105DE6CB8 +105DE6CB8:lI79|H105DE6CA8 +105DE6CA8:lI102|H105DE6C98 +105DE6C98:lI67|H105DE6C88 +105DE6C88:lI111|H105DE6C78 +105DE6C78:lI100|H105DE6C68 +105DE6C68:lI101|H105DE6C58 +105DE6C58:lI47|H105DE6C48 +105DE6C48:lI97|H105DE6C38 +105DE6C38:lI111|H105DE6C28 +105DE6C28:lI99|H105DE6C18 +105DE6C18:lI50|H105DE6C08 +105DE6C08:lI48|H105DE6BF8 +105DE6BF8:lI50|H105DE6BE8 +105DE6BE8:lI51|H105DE6BD8 +105DE6BD8:lI47|H105DE6BC8 +105DE6BC8:lI98|H105DE6BB8 +105DE6BB8:lI117|H105DE6BA8 +105DE6BA8:lI105|H105DE6B98 +105DE6B98:lI108|H105DE6B88 +105DE6B88:lI100|H105DE6B78 +105DE6B78:lI47|H105DE6B68 +105DE6B68:lI100|H105DE6B58 +105DE6B58:lI101|H105DE6B48 +105DE6B48:lI118|H105DE6B38 +105DE6B38:lI47|H105DE6B28 +105DE6B28:lI101|H105DE6B18 +105DE6B18:lI114|H105DE6B08 +105DE6B08:lI108|H105DE6AF8 +105DE6AF8:lI97|H105DE6AE8 +105DE6AE8:lI110|H105DE6AD8 +105DE6AD8:lI103|H105DE6AC8 +105DE6AC8:lI47|H105DE6AB8 +105DE6AB8:lI97|H105DE6AA8 +105DE6AA8:lI100|H105DE6A98 +105DE6A98:lI103|H105DE6A88 +105DE6A88:lI108|H105DE6A78 +105DE6A78:lI101|H105DE6A68 +105DE6A68:lI110|H105DE6A58 +105DE6A58:lI116|H105DE6A48 +105DE6A48:lI47|H105DE6A38 +105DE6A38:lI95|H105DE6A28 +105DE6A28:lI103|H105DE6A18 +105DE6A18:lI108|H105DE6A08 +105DE6A08:lI101|H105DE69F8 +105DE69F8:lI97|H105DE69E8 +105DE69E8:lI109|H105DE69D8 +105DE69D8:lI95|H105DE69C8 +105DE69C8:lI97|H105DE69B8 +105DE69B8:lI114|H105DE69A8 +105DE69A8:lI116|H105DE6998 +105DE6998:lI101|H105DE6988 +105DE6988:lI102|H105DE6978 +105DE6978:lI97|H105DE6968 +105DE6968:lI99|H105DE6958 +105DE6958:lI116|H105DE6948 +105DE6948:lI115|H105DE6938 +105DE6938:lI47|H105DE6928 +105DE6928:lI115|H105DE6918 +105DE6918:lI104|H105DE6908 +105DE6908:lI111|H105DE68F8 +105DE68F8:lI119|H105DE68E8 +105DE68E8:lI116|H105DE68D8 +105DE68D8:lI105|H105DE68C8 +105DE68C8:lI109|H105DE68B8 +105DE68B8:lI101|H105DE68A8 +105DE68A8:lI64|H105DE6898 +105DE6898:lI105|H105DE6888 +105DE6888:lI110|H105DE6878 +105DE6878:lI116|H105DE6868 +105DE6868:lI101|H105DE6858 +105DE6858:lI114|H105DE6848 +105DE6848:lI110|H105DE6838 +105DE6838:lI97|H105DE6828 +105DE6828:lI108|H105DE6818 +105DE6818:lI64|H105DE6808 +105DE6808:lI101|H105DE67F8 +105DE67F8:lI114|H105DE67E8 +105DE67E8:lI108|H105DE67D8 +105DE67D8:lI97|H105DE67C8 +105DE67C8:lI110|H105DE67B8 +105DE67B8:lI103|H105DE67A8 +105DE67A8:lI64|H105DE6798 +105DE6798:lI101|H105DE6788 +105DE6788:lI118|H105DE6778 +105DE6778:lI101|H105DE6768 +105DE6768:lI110|H105DE6758 +105DE6758:lI116|H105DE6748 +105DE6748:lI95|H105DE6738 +105DE6738:lI104|H105DE6728 +105DE6728:lI97|H105DE6718 +105DE6718:lI110|H105DE6708 +105DE6708:lI100|H105DE66F8 +105DE66F8:lI108|H105DE66E8 +105DE66E8:lI101|H105DE66D8 +105DE66D8:lI114|H105DE66C8 +105DE66C8:lI46|H105DE66B8 +105DE66B8:lI101|H105DE66A8 +105DE66A8:lI114|H105DE6698 +105DE6698:lI108|N +105DE5E48:lH105DE5F20|N +105DE5F20:t2:A4:line,I29 +105DE5CD0:lH105DE5DB0|N +105DE5DB0:t4:AF:gleam@otp@actor,A4:loop,I1,H105DE5E58 +105DE5E58:lH105DE5F38|H105DE5E68 +105DE5F38:t2:A4:file,H105DE6688 +105DE6688:lI47|H105DE6678 +105DE6678:lI85|H105DE6668 +105DE6668:lI115|H105DE6658 +105DE6658:lI101|H105DE6648 +105DE6648:lI114|H105DE6638 +105DE6638:lI115|H105DE6628 +105DE6628:lI47|H105DE6618 +105DE6618:lI110|H105DE6608 +105DE6608:lI105|H105DE65F8 +105DE65F8:lI99|H105DE65E8 +105DE65E8:lI104|H105DE65D8 +105DE65D8:lI111|H105DE65C8 +105DE65C8:lI108|H105DE65B8 +105DE65B8:lI97|H105DE65A8 +105DE65A8:lI115|H105DE6598 +105DE6598:lI99|H105DE6588 +105DE6588:lI97|H105DE6578 +105DE6578:lI114|H105DE6568 +105DE6568:lI108|H105DE6558 +105DE6558:lI115|H105DE6548 +105DE6548:lI111|H105DE6538 +105DE6538:lI110|H105DE6528 +105DE6528:lI47|H105DE6518 +105DE6518:lI86|H105DE6508 +105DE6508:lI83|H105DE64F8 +105DE64F8:lI32|H105DE64E8 +105DE64E8:lI67|H105DE64D8 +105DE64D8:lI111|H105DE64C8 +105DE64C8:lI100|H105DE64B8 +105DE64B8:lI101|H105DE64A8 +105DE64A8:lI47|H105DE6498 +105DE6498:lI65|H105DE6488 +105DE6488:lI100|H105DE6478 +105DE6478:lI118|H105DE6468 +105DE6468:lI101|H105DE6458 +105DE6458:lI110|H105DE6448 +105DE6448:lI116|H105DE6438 +105DE6438:lI79|H105DE6428 +105DE6428:lI102|H105DE6418 +105DE6418:lI67|H105DE6408 +105DE6408:lI111|H105DE63F8 +105DE63F8:lI100|H105DE63E8 +105DE63E8:lI101|H105DE63D8 +105DE63D8:lI47|H105DE63C8 +105DE63C8:lI97|H105DE63B8 +105DE63B8:lI111|H105DE63A8 +105DE63A8:lI99|H105DE6398 +105DE6398:lI50|H105DE6388 +105DE6388:lI48|H105DE6378 +105DE6378:lI50|H105DE6368 +105DE6368:lI51|H105DE6358 +105DE6358:lI47|H105DE6348 +105DE6348:lI98|H105DE6338 +105DE6338:lI117|H105DE6328 +105DE6328:lI105|H105DE6318 +105DE6318:lI108|H105DE6308 +105DE6308:lI100|H105DE62F8 +105DE62F8:lI47|H105DE62E8 +105DE62E8:lI100|H105DE62D8 +105DE62D8:lI101|H105DE62C8 +105DE62C8:lI118|H105DE62B8 +105DE62B8:lI47|H105DE62A8 +105DE62A8:lI101|H105DE6298 +105DE6298:lI114|H105DE6288 +105DE6288:lI108|H105DE6278 +105DE6278:lI97|H105DE6268 +105DE6268:lI110|H105DE6258 +105DE6258:lI103|H105DE6248 +105DE6248:lI47|H105DE6238 +105DE6238:lI103|H105DE6228 +105DE6228:lI108|H105DE6218 +105DE6218:lI101|H105DE6208 +105DE6208:lI97|H105DE61F8 +105DE61F8:lI109|H105DE61E8 +105DE61E8:lI95|H105DE61D8 +105DE61D8:lI111|H105DE61C8 +105DE61C8:lI116|H105DE61B8 +105DE61B8:lI112|H105DE61A8 +105DE61A8:lI47|H105DE6198 +105DE6198:lI95|H105DE6188 +105DE6188:lI103|H105DE6178 +105DE6178:lI108|H105DE6168 +105DE6168:lI101|H105DE6158 +105DE6158:lI97|H105DE6148 +105DE6148:lI109|H105DE6138 +105DE6138:lI95|H105DE6128 +105DE6128:lI97|H105DE6118 +105DE6118:lI114|H105DE6108 +105DE6108:lI116|H105DE60F8 +105DE60F8:lI101|H105DE60E8 +105DE60E8:lI102|H105DE60D8 +105DE60D8:lI97|H105DE60C8 +105DE60C8:lI99|H105DE60B8 +105DE60B8:lI116|H105DE60A8 +105DE60A8:lI115|H105DE6098 +105DE6098:lI47|H105DE6088 +105DE6088:lI103|H105DE6078 +105DE6078:lI108|H105DE6068 +105DE6068:lI101|H105DE6058 +105DE6058:lI97|H105DE6048 +105DE6048:lI109|H105DE6038 +105DE6038:lI64|H105DE6028 +105DE6028:lI111|H105DE6018 +105DE6018:lI116|H105DE6008 +105DE6008:lI112|H105DE5FF8 +105DE5FF8:lI64|H105DE5FE8 +105DE5FE8:lI97|H105DE5FD8 +105DE5FD8:lI99|H105DE5FC8 +105DE5FC8:lI116|H105DE5FB8 +105DE5FB8:lI111|H105DE5FA8 +105DE5FA8:lI114|H105DE5F98 +105DE5F98:lI46|H105DE5F88 +105DE5F88:lI101|H105DE5F78 +105DE5F78:lI114|H105DE5F68 +105DE5F68:lI108|N +105DE5E68:lH105DE5F50|N +105DE5F50:t2:A4:line,I150 +105DE5C50:Mf5:H105DE5CE0:H105DE8730,I178,H105DE8700,H105DE86C8,A5:panic +105DE5CE0:t5:A8:function,A4:line,A7:message,A6:module,AB:gleam_error +105DE86C8:Yh23:c2hvd3RpbWUvaW50ZXJuYWwvcmVwb3J0cy9mb3JtYXR0ZXI= +105DE8700:Yh1A:cGFuaWMgZXhwcmVzc2lvbiBldmFsdWF0ZWQ= +105DE8730:Yh12:Y3JlYXRlX3Rlc3RfcmVwb3J0 +105DE5C18:lI69|H105DE5C08 +105DE5C08:lI114|H105DE5BF8 +105DE5BF8:lI114|H105DE5BE8 +105DE5BE8:lI111|H105DE5BD8 +105DE5BD8:lI114|H105DE5BC8 +105DE5BC8:lI32|H105DE5BB8 +105DE5BB8:lI105|H105DE5BA8 +105DE5BA8:lI110|H105DE5B98 +105DE5B98:lI32|H105DE5B88 +105DE5B88:lI112|H105DE5B78 +105DE5B78:lI114|H105DE5B68 +105DE5B68:lI111|H105DE5B58 +105DE5B58:lI99|H105DE5B48 +105DE5B48:lI101|H105DE5B38 +105DE5B38:lI115|H105DE5B28 +105DE5B28:lI115|H105DE5B18 +105DE5B18:lI32|H105DE5B08 +105DE5B08:lI126|H105DE5AF8 +105DE5AF8:lI112|H105DE5AE8 +105DE5AE8:lI32|H105DE5AD8 +105DE5AD8:lI119|H105DE5AC8 +105DE5AC8:lI105|H105DE5AB8 +105DE5AB8:lI116|H105DE5AA8 +105DE5AA8:lI104|H105DE5A98 +105DE5A98:lI32|H105DE5A88 +105DE5A88:lI101|H105DE5A78 +105DE5A78:lI120|H105DE5A68 +105DE5A68:lI105|H105DE5A58 +105DE5A58:lI116|H105DE5A48 +105DE5A48:lI32|H105DE5A38 +105DE5A38:lI118|H105DE5A28 +105DE5A28:lI97|H105DE5A18 +105DE5A18:lI108|H105DE5A08 +105DE5A08:lI117|H105DE59F8 +105DE59F8:lI101|H105DE59E8 +105DE59E8:lI58|H105DE59D8 +105DE59D8:lI126|H105DE59C8 +105DE59C8:lI110|H105DE59B8 +105DE59B8:lI126|H105DE59A8 +105DE59A8:lI112|H105DE5998 +105DE5998:lI126|H105DE5988 +105DE5988:lI110|N +105D8A120:t5:AE:callback_cache,AA:logger_olp,H105D8A0A8,H105D8A0D0,H105D8A0F8 +105D8A0F8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= +105D8A0D0:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= +105D8A0A8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= +105D89DB0:t2:A7:olp_ref,H105D89ED8 +105D89ED8:t3:AC:logger_proxy,P<0.72.0>,H105D89EC0 +105D89DC8:t2:AA:$ancestors,H105D89EF8 +105D89EF8:lAA:logger_sup|H105D89F48 +105D89F48:lAA:kernel_sup|H105D89F78 +105D89F78:lP<0.47.0>|N +105D89DE0:t2:AD:$initial_call,H105D89F08 +105D89F08:t3:AA:logger_olp,A4:init,I1 +=proc_dictionary:<0.73.0> +H105DAD620 +H105DAD658 +=proc_stack:<0.73.0> +y0:N +y1:A8:infinity +y2:H105DAD6E8 +y3:N +y4:P<0.73.0> +y5:P<0.49.0> +0x0000000105dadc70:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dadc90:SReturn addr 0x3D82348 () +=proc_heap:<0.73.0> +105DAD6E8:t5:AE:callback_cache,AD:kernel_config,H105DAD670,H105DAD698,H105DAD6C0 +105DAD6C0:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9pbmZvYQI= +105DAD698:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9jYXN0YQI= +105DAD670:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9jYWxsYQM= +105DAD620:t2:AA:$ancestors,H105DAD610 +105DAD610:lAA:kernel_sup|H105DAD5D0 +105DAD5D0:lP<0.47.0>|N +105DAD658:t2:AD:$initial_call,H105DAD638 +105DAD638:t3:AD:kernel_config,A4:init,I1 +=proc_dictionary:<0.74.0> +H105DA80D0 +H105DA8108 +=proc_stack:<0.74.0> +y0:N +y1:A8:infinity +y2:H105DA8198 +y3:H28008FA68 +y4:AB:kernel_refc +y5:P<0.49.0> +0x0000000105da8710:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105da8730:SReturn addr 0x3D82348 () +=proc_heap:<0.74.0> +105DA8198:t5:AE:callback_cache,AB:kernel_refc,H105DA8120,H105DA8148,H105DA8170 +105DA8170:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfaW5mb2EC +105DA8148:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfY2FzdGEC +105DA8120:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfY2FsbGED +105DA80D0:t2:AA:$ancestors,H105DA80C0 +105DA80C0:lAA:kernel_sup|H105DA8080 +105DA8080:lP<0.47.0>|N +105DA8108:t2:AD:$initial_call,H105DA80E8 +105DA80E8:t3:AB:kernel_refc,A4:init,I1 +=proc_dictionary:<0.75.0> +H105DAC078 +H105DAC090 +=proc_stack:<0.75.0> +0x0000000105dac210:SReturn addr 0x3D82348 () +=proc_heap:<0.75.0> +105DAC078:t2:AA:$ancestors,H105DAC0B8 +105DAC0B8:lAA:kernel_sup|H105DAC0F8 +105DAC0F8:lP<0.47.0>|N +105DAC090:t2:AD:$initial_call,H105DAC0C8 +105DAC0C8:t3:AA:supervisor,A6:kernel,I1 +=proc_dictionary:<0.77.0> +H105DA2880 +H105DA2898 +H105DA28B0 +=proc_stack:<0.77.0> +y0:N +y1:A8:infinity +y2:H105DA3BB8 +y3:H105DA27C8 +y4:P<0.77.0> +y5:P<0.70.0> +0x0000000105da4dc8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105da4de8:SReturn addr 0x3D82348 () +=proc_heap:<0.77.0> +105DA3BB8:t5:AE:callback_cache,AA:logger_olp,H105DA3BF8,H105DA3C20,H105DA3C48 +105DA3C48:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= +105DA3C20:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= +105DA3BF8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= +105DA27C8:Mf14:H105DA28C8:A14:logger_std_h_default,AF:logger_h_common,A5:async,A4:true,A4:true,I200,I1000,I10,I0,I-576460751874469,H105DA2970,I-576460751874469,I0,H105DA29B8,I5000,I500,I1000,A5:false,I3000000,I20000 +105DA28C8:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen +105DA29B8:t2:AA:logger_olp,A14:logger_std_h_default +105DA2970:Mf6:H105DA2A20:A7:default,AC:logger_std_h,A9:no_repeat,I20,H105DA2A58,A4:sync +105DA2A20:t6:A2:id,A6:module,A18:filesync_repeat_interval,AF:ctrl_sync_count,AD:handler_state,A7:last_op +105DA2A58:Mf2:H105DA2A90:AB:standard_io,P<0.78.0> +105DA2A90:t2:A4:type,AD:file_ctrl_pid +105DA2880:t2:A7:olp_ref,H105DA29D0 +105DA29D0:t3:A14:logger_std_h_default,P<0.77.0>,H105DA29B8 +105DA2898:t2:AA:$ancestors,H105DA29F0 +105DA29F0:lAA:logger_sup|H105DA2A80 +105DA2A80:lAA:kernel_sup|H105DA2AA8 +105DA2AA8:lP<0.47.0>|N +105DA28B0:t2:AD:$initial_call,H105DA2A00 +105DA2A00:t3:AA:logger_olp,A4:init,I1 +=proc_stack:<0.78.0> +y0:N +y1:N +y2:H105D98488 +0x0000000105d98b30:SReturn addr 0x3D82348 () +=proc_heap:<0.78.0> +105D98488:Mf2:H280091C80:A7:default,AB:standard_io +=proc_dictionary:<0.90.0> +H105D97F00 +H105D97F38 +=proc_stack:<0.90.0> +y0:H105D98098 +y1:P<0.44.0> +0x0000000105d98110:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d98130:SReturn addr 0x3D82348 () +=proc_heap:<0.90.0> +105D98098:t7:A5:state,P<0.91.0>,H105D97A10,N,I0,P<0.69.0>,N +105D97A10:t8:A9:appl_data,A5:inets,H105D97E70,A9:undefined,H105D97A58,H105D97E50,A8:infinity,A8:infinity +105D97E50:lA5:inets|H105D97E40 +105D97E40:lA9:inets_sup|H105D97E30 +105D97E30:lA9:inets_app|H105D97E20 +105D97E20:lAD:inets_service|H105D97E10 +105D97E10:lAB:inets_trace|H105D97E00 +105D97E00:lA9:inets_lib|H105D97DF0 +105D97DF0:lA5:httpc|H105D97DE0 +105D97DE0:lAD:httpc_handler|H105D97DD0 +105D97DD0:lA11:httpc_handler_sup|H105D97DC0 +105D97DC0:lAD:httpc_manager|H105D97DB0 +105D97DB0:lA11:httpc_profile_sup|H105D97DA0 +105D97DA0:lAD:httpc_request|H105D97D90 +105D97D90:lAE:httpc_response|H105D97D80 +105D97D80:lA9:httpc_sup|H105D97D70 +105D97D70:lAC:httpc_cookie|H105D97D60 +105D97D60:lAA:http_chunk|H105D97D50 +105D97D50:lAC:http_request|H105D97D40 +105D97D40:lAD:http_response|H105D97D30 +105D97D30:lAE:http_transport|H105D97D20 +105D97D20:lA9:http_util|H105D97D10 +105D97D10:lA8:http_uri|H105D97D00 +105D97D00:lA5:httpd|H105D97CF0 +105D97CF0:lAE:httpd_acceptor|H105D97CE0 +105D97CE0:lA12:httpd_acceptor_sup|H105D97CD0 +105D97CD0:lA9:httpd_cgi|H105D97CC0 +105D97CC0:lA14:httpd_connection_sup|H105D97CB0 +105D97CB0:lAA:httpd_conf|H105D97CA0 +105D97CA0:lAC:httpd_custom|H105D97C90 +105D97C90:lA10:httpd_custom_api|H105D97C80 +105D97C80:lA9:httpd_esi|H105D97C70 +105D97C70:lAD:httpd_example|H105D97C60 +105D97C60:lAA:httpd_file|H105D97C50 +105D97C50:lA12:httpd_instance_sup|H105D97C40 +105D97C40:lA9:httpd_log|H105D97C30 +105D97C30:lAC:httpd_logger|H105D97C20 +105D97C20:lAD:httpd_manager|H105D97C10 +105D97C10:lAE:httpd_misc_sup|H105D97C00 +105D97C00:lAD:httpd_request|H105D97BF0 +105D97BF0:lA15:httpd_request_handler|H105D97BE0 +105D97BE0:lAE:httpd_response|H105D97BD0 +105D97BD0:lA10:httpd_script_env|H105D97BC0 +105D97BC0:lAC:httpd_socket|H105D97BB0 +105D97BB0:lA9:httpd_sup|H105D97BA0 +105D97BA0:lAA:httpd_util|H105D97B90 +105D97B90:lAB:mod_actions|H105D97B80 +105D97B80:lA9:mod_alias|H105D97B70 +105D97B70:lA8:mod_auth|H105D97B60 +105D97B60:lAD:mod_auth_dets|H105D97B50 +105D97B50:lAF:mod_auth_mnesia|H105D97B40 +105D97B40:lAE:mod_auth_plain|H105D97B30 +105D97B30:lAF:mod_auth_server|H105D97B20 +105D97B20:lA7:mod_cgi|H105D97B10 +105D97B10:lA7:mod_dir|H105D97B00 +105D97B00:lAC:mod_disk_log|H105D97AF0 +105D97AF0:lA7:mod_esi|H105D97AE0 +105D97AE0:lA7:mod_get|H105D97AD0 +105D97AD0:lA8:mod_head|H105D97AC0 +105D97AC0:lA7:mod_log|H105D97AB0 +105D97AB0:lA9:mod_range|H105D97AA0 +105D97AA0:lA13:mod_responsecontrol|H105D97A90 +105D97A90:lAC:mod_security|H105D97A80 +105D97A80:lA13:mod_security_server|H105D97A70 +105D97A70:lA9:mod_trace|N +105D97A58:t2:A9:inets_app,N +105D97E70:lA9:inets_sup|H105D97E60 +105D97E60:lAD:httpc_manager|N +105D97F00:t2:AA:$ancestors,H105D97EF0 +105D97EF0:lP<0.89.0>|N +105D97F38:t2:AD:$initial_call,H105D97F18 +105D97F18:t3:A12:application_master,A4:init,I4 +=proc_stack:<0.91.0> +y0:N +y1:N +y2:A9:inets_app +y3:P<0.92.0> +y4:P<0.90.0> +0x0000000105da7fe0:SReturn addr 0x3D82348 () +=proc_heap:<0.91.0> +=proc_dictionary:<0.92.0> +H105DBF960 +H105DBF978 +=proc_stack:<0.92.0> +0x0000000105dbfc58:SReturn addr 0x3D82348 () +=proc_heap:<0.92.0> +105DBF960:t2:AA:$ancestors,H105DBF9A0 +105DBF9A0:lP<0.91.0>|N +105DBF978:t2:AD:$initial_call,H105DBF9B0 +105DBF9B0:t3:AA:supervisor,A9:inets_sup,I1 +=proc_dictionary:<0.93.0> +H105D99BA8 +H105D99BC0 +=proc_stack:<0.93.0> +0x0000000105d99e90:SReturn addr 0x3D82348 () +=proc_heap:<0.93.0> +105D99BA8:t2:AA:$ancestors,H105D99BE8 +105D99BE8:lA9:inets_sup|H105D99C28 +105D99C28:lP<0.91.0>|N +105D99BC0:t2:AD:$initial_call,H105D99BF8 +105D99BF8:t3:AA:supervisor,A9:httpc_sup,I1 +=proc_dictionary:<0.94.0> +H105DAF280 +H105DAF298 +=proc_stack:<0.94.0> +0x0000000105daf518:SReturn addr 0x3D82348 () +=proc_heap:<0.94.0> +105DAF280:t2:AA:$ancestors,H105DAF2C0 +105DAF2C0:lA9:httpc_sup|H105DAF300 +105DAF300:lA9:inets_sup|H105DAF320 +105DAF320:lP<0.91.0>|N +105DAF298:t2:AD:$initial_call,H105DAF2D0 +105DAF2D0:t3:AA:supervisor,A11:httpc_profile_sup,I1 +=proc_dictionary:<0.95.0> +H105E0BA38 +H105E0BA50 +=proc_stack:<0.95.0> +y0:N +y1:A8:infinity +y2:H105E0B9F0 +y3:H105E0D878 +y4:AD:httpc_manager +y5:P<0.94.0> +0x0000000105e0dff0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105e0e010:SReturn addr 0x3D82348 () +=proc_heap:<0.95.0> +105E0B9F0:t5:AE:callback_cache,AD:httpc_manager,H105E0BA68,H105E0BA90,H105E0BAB8 +105E0BAB8:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9pbmZvYQI= +105E0BA90:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9jYXN0YQI= +105E0BA68:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9jYWxsYQM= +105E0D878:t7:A5:state,N,A19:httpc_manager__handler_db,H105E0D858,A19:httpc_manager__session_db,AD:httpc_manager,H2800B17A0 +105E0D858:t3:A9:cookie_db,A9:undefined,H105E0D840 +105E0D840:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALEs+vYAAd/g02c= +105E0BA38:t2:AA:$ancestors,H105E0BAE0 +105E0BAE0:lA11:httpc_profile_sup|H105E0BB10 +105E0BB10:lA9:httpc_sup|H105E0BB20 +105E0BB20:lA9:inets_sup|H105E0BB30 +105E0BB30:lP<0.91.0>|N +105E0BA50:t2:AD:$initial_call,H105E0BAF0 +105E0BAF0:t3:AD:httpc_manager,A4:init,I1 +=proc_dictionary:<0.96.0> +H105D82D78 +H105D82DB0 +=proc_stack:<0.96.0> +y0:N +y1:A8:infinity +y2:H105D82E40 +y3:H105D831B8 +y4:A11:httpc_handler_sup +y5:P<0.93.0> +0x0000000105d83388:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d833a8:SReturn addr 0x3D82348 () +=proc_heap:<0.96.0> +105D82E40:t5:AE:callback_cache,AA:supervisor,H105D82DC8,H105D82DF0,H105D82E18 +105D82E18:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105D82DF0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105D82DC8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105D831B8:tC:A5:state,H2800B6F58,A12:simple_one_for_one,H105D83120,H280028328,I0,I3600,N,I0,A5:never,A11:httpc_handler_sup,N +105D83120:t2:H105D83110,H105D830F0 +105D830F0:Mf1:H105D830E0:H105D83078 +105D830E0:t1:A9:undefined +105D83078:t9:A5:child,A9:undefined,A9:undefined,H105D82E70,A9:temporary,A5:false,I4000,A6:worker,H2800B6F70 +105D82E70:t3:AD:httpc_handler,AA:start_link,N +105D83110:lA9:undefined|N +105D82D78:t2:AA:$ancestors,H105D82D68 +105D82D68:lA9:httpc_sup|H105D82D28 +105D82D28:lA9:inets_sup|H105D82D18 +105D82D18:lP<0.91.0>|N +105D82DB0:t2:AD:$initial_call,H105D82D90 +105D82D90:t3:AA:supervisor,A11:httpc_handler_sup,I1 +=proc_dictionary:<0.97.0> +H105D98B40 +H105D98B58 +=proc_stack:<0.97.0> +0x0000000105d98ce8:SReturn addr 0x3D82348 () +=proc_heap:<0.97.0> +105D98B40:t2:AA:$ancestors,H105D98B80 +105D98B80:lA9:inets_sup|H105D98BC0 +105D98BC0:lP<0.91.0>|N +105D98B58:t2:AD:$initial_call,H105D98B90 +105D98B90:t3:AA:supervisor,A9:httpd_sup,I1 +=proc_dictionary:<0.102.0> +H105DBE6D0 +H105DBE6E8 +=proc_stack:<0.102.0> +y0:H105DBEC80 +y1:P<0.44.0> +0x0000000105dbed68:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dbed88:SReturn addr 0x3D82348 () +=proc_heap:<0.102.0> +105DBEC80:t7:A5:state,P<0.103.0>,H105DBE688,N,I0,P<0.69.0>,N +105DBE688:t8:A9:appl_data,A3:ssl,H105DBE718,A9:undefined,H105DBE728,H105DBE740,A8:infinity,A8:infinity +105DBE740:lAE:tls_connection|H105DBE790 +105DBE790:lA19:tls_client_connection_1_3|H105DBE7A0 +105DBE7A0:lA19:tls_server_connection_1_3|H105DBE7B0 +105DBE7B0:lA16:tls_gen_connection_1_3|H105DBE7C0 +105DBE7C0:lAD:tls_handshake|H105DBE7D0 +105DBE7D0:lA11:tls_handshake_1_3|H105DBE7E0 +105DBE7E0:lAA:tls_record|H105DBE7F0 +105DBE7F0:lAE:tls_record_1_3|H105DBE800 +105DBE800:lAA:tls_socket|H105DBE810 +105DBE810:lA6:tls_v1|H105DBE820 +105DBE820:lA12:tls_connection_sup|H105DBE830 +105DBE830:lA12:tls_gen_connection|H105DBE840 +105DBE840:lAA:tls_sender|H105DBE850 +105DBE850:lAE:tls_server_sup|H105DBE860 +105DBE860:lA1D:tls_server_session_ticket_sup|H105DBE870 +105DBE870:lA19:tls_server_session_ticket|H105DBE880 +105DBE880:lA7:tls_sup|H105DBE890 +105DBE890:lA16:tls_dyn_connection_sup|H105DBE8A0 +105DBE8A0:lAD:ssl_dh_groups|H105DBE8B0 +105DBE8B0:lAF:dtls_connection|H105DBE8C0 +105DBE8C0:lAE:dtls_handshake|H105DBE8D0 +105DBE8D0:lAB:dtls_record|H105DBE8E0 +105DBE8E0:lAB:dtls_socket|H105DBE8F0 +105DBE8F0:lA7:dtls_v1|H105DBE900 +105DBE900:lA13:dtls_connection_sup|H105DBE910 +105DBE910:lA13:dtls_gen_connection|H105DBE920 +105DBE920:lA11:dtls_packet_demux|H105DBE930 +105DBE930:lA11:dtls_listener_sup|H105DBE940 +105DBE940:lA8:dtls_sup|H105DBE950 +105DBE950:lAF:dtls_server_sup|H105DBE960 +105DBE960:lA1D:dtls_server_session_cache_sup|H105DBE970 +105DBE970:lA3:ssl|H105DBE980 +105DBE980:lA15:ssl_session_cache_api|H105DBE990 +105DBE990:lA13:tls_dtls_connection|H105DBE9A0 +105DBE9A0:lAA:ssl_config|H105DBE9B0 +105DBE9B0:lAE:ssl_gen_statem|H105DBE9C0 +105DBE9C0:lAD:ssl_handshake|H105DBE9D0 +105DBE9D0:lAA:ssl_record|H105DBE9E0 +105DBE9E0:lAA:ssl_cipher|H105DBE9F0 +105DBE9F0:lA11:ssl_cipher_format|H105DBEA00 +105DBEA00:lAE:ssl_srp_primes|H105DBEA10 +105DBEA10:lA9:ssl_alert|H105DBEA20 +105DBEA20:lA16:ssl_listen_tracker_sup|H105DBEA30 +105DBEA30:lA10:tls_bloom_filter|H105DBEA40 +105DBEA40:lA17:tls_client_ticket_store|H105DBEA50 +105DBEA50:lAD:inet_tls_dist|H105DBEA60 +105DBEA60:lAE:inet6_tls_dist|H105DBEA70 +105DBEA70:lAC:ssl_dist_sup|H105DBEA80 +105DBEA80:lA17:ssl_dist_connection_sup|H105DBEA90 +105DBEA90:lA12:ssl_dist_admin_sup|H105DBEAA0 +105DBEAA0:lAC:tls_dist_sup|H105DBEAB0 +105DBEAB0:lA13:tls_dist_server_sup|H105DBEAC0 +105DBEAC0:lAB:ssl_session|H105DBEAD0 +105DBEAD0:lA1B:ssl_client_session_cache_db|H105DBEAE0 +105DBEAE0:lA18:ssl_server_session_cache|H105DBEAF0 +105DBEAF0:lA1B:ssl_server_session_cache_db|H105DBEB00 +105DBEB00:lA1C:ssl_server_session_cache_sup|H105DBEB10 +105DBEB10:lA24:ssl_upgrade_server_session_cache_sup|H105DBEB20 +105DBEB20:lAB:ssl_manager|H105DBEB30 +105DBEB30:lAD:ssl_pem_cache|H105DBEB40 +105DBEB40:lAB:ssl_pkix_db|H105DBEB50 +105DBEB50:lAF:ssl_certificate|H105DBEB60 +105DBEB60:lA7:ssl_crl|H105DBEB70 +105DBEB70:lAD:ssl_crl_cache|H105DBEB80 +105DBEB80:lA11:ssl_crl_cache_api|H105DBEB90 +105DBEB90:lA10:ssl_crl_hash_dir|H105DBEBA0 +105DBEBA0:lAA:ssl_logger|H105DBEBB0 +105DBEBB0:lA9:ssl_trace|H105DBEBC0 +105DBEBC0:lA7:ssl_app|H105DBEBD0 +105DBEBD0:lA7:ssl_sup|H105DBEBE0 +105DBEBE0:lAD:ssl_admin_sup|H105DBEBF0 +105DBEBF0:lA12:ssl_connection_sup|N +105DBE728:t2:A7:ssl_app,N +105DBE718:lA7:ssl_sup|H105DBE780 +105DBE780:lAB:ssl_manager|N +105DBE6D0:t2:AA:$ancestors,H105DBE750 +105DBE750:lP<0.101.0>|N +105DBE6E8:t2:AD:$initial_call,H105DBE760 +105DBE760:t3:A12:application_master,A4:init,I4 +=proc_stack:<0.103.0> +y0:N +y1:N +y2:A7:ssl_app +y3:P<0.107.0> +y4:P<0.102.0> +0x0000000105da1bf0:SReturn addr 0x3D82348 () +=proc_heap:<0.103.0> +=proc_dictionary:<0.105.0> +H105DB0708 +H105DB0720 +H105DB0738 +=proc_stack:<0.105.0> +y0:N +y1:A8:infinity +y2:H105DB1980 +y3:H105DB0650 +y4:P<0.105.0> +y5:P<0.70.0> +0x0000000105db2c50:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db2c70:SReturn addr 0x3D82348 () +=proc_heap:<0.105.0> +105DB1980:t5:AE:callback_cache,AA:logger_olp,H105DB19D0,H105DB19F8,H105DB1A20 +105DB1A20:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= +105DB19F8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= +105DB19D0:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= +105DB0650:Mf14:H105DB0750:A18:logger_std_h_ssl_handler,AF:logger_h_common,A5:async,A4:true,A4:true,I200,I1000,I10,I0,I-576460751796696,H105DB07F8,I-576460751796696,I0,H105DB0840,I5000,I500,I1000,A5:false,I3000000,I20000 +105DB0750:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen +105DB0840:t2:AA:logger_olp,A18:logger_std_h_ssl_handler +105DB07F8:Mf6:H105DB08A8:AB:ssl_handler,AC:logger_std_h,A9:no_repeat,I20,H105DB08E0,A4:sync +105DB08A8:t6:A2:id,A6:module,A18:filesync_repeat_interval,AF:ctrl_sync_count,AD:handler_state,A7:last_op +105DB08E0:Mf2:H105DB0918:AB:standard_io,P<0.106.0> +105DB0918:t2:A4:type,AD:file_ctrl_pid +105DB0708:t2:A7:olp_ref,H105DB0858 +105DB0858:t3:A18:logger_std_h_ssl_handler,P<0.105.0>,H105DB0840 +105DB0720:t2:AA:$ancestors,H105DB0878 +105DB0878:lAA:logger_sup|H105DB0908 +105DB0908:lAA:kernel_sup|H105DB0930 +105DB0930:lP<0.47.0>|N +105DB0738:t2:AD:$initial_call,H105DB0888 +105DB0888:t3:AA:logger_olp,A4:init,I1 +=proc_stack:<0.106.0> +y0:N +y1:N +y2:H105DA87D8 +0x0000000105da8e80:SReturn addr 0x3D82348 () +=proc_heap:<0.106.0> +105DA87D8:Mf2:H280091C80:AB:ssl_handler,AB:standard_io +=proc_dictionary:<0.107.0> +H105D8C6D0 +H105D8C6E8 +=proc_stack:<0.107.0> +0x0000000105d8c958:SReturn addr 0x3D82348 () +=proc_heap:<0.107.0> +105D8C6D0:t2:AA:$ancestors,H105D8C710 +105D8C710:lP<0.103.0>|N +105D8C6E8:t2:AD:$initial_call,H105D8C720 +105D8C720:t3:AA:supervisor,A7:ssl_sup,I1 +=proc_dictionary:<0.108.0> +H105DBFC68 +H105DBFC80 +=proc_stack:<0.108.0> +0x0000000105dbffe0:SReturn addr 0x3D82348 () +=proc_heap:<0.108.0> +105DBFC68:t2:AA:$ancestors,H105DBFCA8 +105DBFCA8:lA7:ssl_sup|H105DBFCE8 +105DBFCE8:lP<0.103.0>|N +105DBFC80:t2:AD:$initial_call,H105DBFCB8 +105DBFCB8:t3:AA:supervisor,AD:ssl_admin_sup,I1 +=proc_dictionary:<0.109.0> +H105D82110 +H105D82128 +H105D82140 +=proc_stack:<0.109.0> +y0:N +y1:A8:infinity +y2:H105D820E0 +y3:H105D828A8 +y4:AD:ssl_pem_cache +y5:P<0.108.0> +0x0000000105d82c38:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d82c58:SReturn addr 0x3D82348 () +=proc_heap:<0.109.0> +105D820E0:t5:AE:callback_cache,AD:ssl_pem_cache,H105D82178,H105D821A0,H105D821C8 +105D821C8:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9pbmZvYQI= +105D821A0:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9jYXN0YQI= +105D82178:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9jYWxsYQM= +105D828A8:t4:A5:state,AD:ssl_pem_cache,I1701928823,I120000 +105D82110:t2:AA:$ancestors,H105D821F0 +105D821F0:lAD:ssl_admin_sup|H105D82260 +105D82260:lA7:ssl_sup|H105D82280 +105D82280:lP<0.103.0>|N +105D82128:t2:AD:ssl_pem_cache,AD:ssl_pem_cache +105D82140:t2:AD:$initial_call,H105D82200 +105D82200:t3:AD:ssl_pem_cache,A4:init,I1 +=proc_dictionary:<0.110.0> +H105DB84D8 +H105DB84F0 +H105DB8508 +H105DB8520 +=proc_stack:<0.110.0> +y0:N +y1:A8:infinity +y2:H105DB84A8 +y3:H105DB67C8 +y4:AB:ssl_manager +y5:P<0.108.0> +0x0000000105db7160:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db7180:SReturn addr 0x3D82348 () +=proc_heap:<0.110.0> +105DB84A8:t5:AE:callback_cache,AB:ssl_manager,H105DB8538,H105DB8560,H105DB8588 +105DB8588:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfaW5mb2EC +105DB8560:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfY2FzdGEC +105DB8538:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfY2FsbGED +105DB67C8:tA:A5:state,H105DB66B0,A1B:ssl_client_session_cache_db,I86400,H105DB67A0,H105DB67B0,I1000,A9:undefined,N,H280061C80 +105DB67B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGc+vQAAd/g02c= +105DB67A0:lH105DB66C8|H105DB6790 +105DB66C8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGX+vYAAd/g02c= +105DB6790:lH105DB6778|H105DB6768 +105DB6778:t2:H105DB66E0,H105DB66F8 +105DB66F8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGZ+vYAAd/g02c= +105DB66E0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGY+vYAAd/g02c= +105DB6768:lAD:ssl_pem_cache|H105DB6758 +105DB6758:lH105DB6740|N +105DB6740:t2:H105DB6710,H105DB6728 +105DB6728:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGb+vYAAd/g02c= +105DB6710:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGa+vYAAd/g02c= +105DB66B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGW+vYAAd/g02c= +105DB84D8:t2:AA:$ancestors,H105DB85B0 +105DB85B0:lAD:ssl_admin_sup|H105DB85E0 +105DB85E0:lA7:ssl_sup|H105DB85F0 +105DB85F0:lP<0.103.0>|N +105DB84F0:t2:AB:ssl_manager,AB:ssl_manager +105DB8508:t2:AD:ssl_pem_cache,AD:ssl_pem_cache +105DB8520:t2:AD:$initial_call,H105DB85C0 +105DB85C0:t3:AB:ssl_manager,A4:init,I1 +=proc_dictionary:<0.111.0> +H105D8FCA8 +H105D8FCE0 +=proc_stack:<0.111.0> +y0:N +y1:A8:infinity +y2:H105D8FD70 +y3:H105D8FDB8 +y4:A17:tls_client_ticket_store +y5:P<0.108.0> +0x0000000105d902b8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d902d8:SReturn addr 0x3D82348 () +=proc_heap:<0.111.0> +105D8FD70:t5:AE:callback_cache,A17:tls_client_ticket_store,H105D8FCF8,H105D8FD20,H105D8FD48 +105D8FD48:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfaW5mb2EC +105D8FD20:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfY2FzdGEC +105D8FCF8:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfY2FsbGED +105D8FDB8:t4:A5:state,H280061C80,I7200,I1000 +105D8FCA8:t2:AA:$ancestors,H105D8FC98 +105D8FC98:lAD:ssl_admin_sup|H105D8FC58 +105D8FC58:lA7:ssl_sup|H105D8FC48 +105D8FC48:lP<0.103.0>|N +105D8FCE0:t2:AD:$initial_call,H105D8FCC0 +105D8FCC0:t3:A17:tls_client_ticket_store,A4:init,I1 +=proc_dictionary:<0.112.0> +H105DADF58 +H105DADF70 +=proc_stack:<0.112.0> +0x0000000105dae1f0:SReturn addr 0x3D82348 () +=proc_heap:<0.112.0> +105DADF58:t2:AA:$ancestors,H105DADF98 +105DADF98:lA7:ssl_sup|H105DADFD8 +105DADFD8:lP<0.103.0>|N +105DADF70:t2:AD:$initial_call,H105DADFA8 +105DADFA8:t3:AA:supervisor,A12:ssl_connection_sup,I1 +=proc_dictionary:<0.113.0> +H105DADCA0 +H105DADCB8 +=proc_stack:<0.113.0> +0x0000000105dadf48:SReturn addr 0x3D82348 () +=proc_heap:<0.113.0> +105DADCA0:t2:AA:$ancestors,H105DADCE0 +105DADCE0:lA12:ssl_connection_sup|H105DADD20 +105DADD20:lA7:ssl_sup|H105DADD40 +105DADD40:lP<0.103.0>|N +105DADCB8:t2:AD:$initial_call,H105DADCF0 +105DADCF0:t3:AA:supervisor,A7:tls_sup,I1 +=proc_dictionary:<0.114.0> +H105D87718 +H105D87750 +=proc_stack:<0.114.0> +y0:N +y1:A8:infinity +y2:H105D877E0 +y3:H105D87A80 +y4:A12:tls_connection_sup +y5:P<0.113.0> +0x0000000105d87d18:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105d87d38:SReturn addr 0x3D82348 () +=proc_heap:<0.114.0> +105D877E0:t5:AE:callback_cache,AA:supervisor,H105D87768,H105D87790,H105D877B8 +105D877B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105D87790:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105D87768:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105D87A80:tC:A5:state,H2800BDB80,A12:simple_one_for_one,H105D879E8,H280028328,I0,I3600,N,I0,A5:never,A12:tls_connection_sup,N +105D879E8:t2:H105D879D8,H105D879B8 +105D879B8:Mf1:H105D879A8:H105D87940 +105D879A8:t1:A9:undefined +105D87940:t9:A5:child,A9:undefined,A9:undefined,H2800BDCA0,A9:temporary,A5:false,A8:infinity,AA:supervisor,H105D87930 +105D87930:lA16:tls_dyn_connection_sup|N +105D879D8:lA9:undefined|N +105D87718:t2:AA:$ancestors,H105D87708 +105D87708:lA7:tls_sup|H105D876C8 +105D876C8:lA12:ssl_connection_sup|H105D876B8 +105D876B8:lA7:ssl_sup|H105D876A8 +105D876A8:lP<0.103.0>|N +105D87750:t2:AD:$initial_call,H105D87730 +105D87730:t3:AA:supervisor,A12:tls_connection_sup,I1 +=proc_dictionary:<0.115.0> +H105DA2350 +H105DA2368 +=proc_stack:<0.115.0> +0x0000000105da26e8:SReturn addr 0x3D82348 () +=proc_heap:<0.115.0> +105DA2350:t2:AA:$ancestors,H105DA2390 +105DA2390:lA7:tls_sup|H105DA23D0 +105DA23D0:lA12:ssl_connection_sup|H105DA23F0 +105DA23F0:lA7:ssl_sup|H105DA2410 +105DA2410:lP<0.103.0>|N +105DA2368:t2:AD:$initial_call,H105DA23A0 +105DA23A0:t3:AA:supervisor,AE:tls_server_sup,I1 +=proc_dictionary:<0.116.0> +H105DBD3E8 +H105DBD420 +=proc_stack:<0.116.0> +y0:N +y1:A8:infinity +y2:H105DBD4B0 +y3:H105DBD740 +y4:A16:ssl_listen_tracker_sup +y5:P<0.115.0> +0x0000000105dbd9d8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105dbd9f8:SReturn addr 0x3D82348 () +=proc_heap:<0.116.0> +105DBD4B0:t5:AE:callback_cache,AA:supervisor,H105DBD438,H105DBD460,H105DBD488 +105DBD488:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105DBD460:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105DBD438:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105DBD740:tC:A5:state,H2800BE298,A12:simple_one_for_one,H105DBD6A8,H280028328,I0,I3600,N,I0,A5:never,A16:ssl_listen_tracker_sup,N +105DBD6A8:t2:H105DBD698,H105DBD678 +105DBD678:Mf1:H105DBD668:H105DBD600 +105DBD668:t1:A9:undefined +105DBD600:t9:A5:child,A9:undefined,A9:undefined,H2800BE3E8,A9:temporary,A5:false,I4000,A6:worker,H2800BE3D8 +105DBD698:lA9:undefined|N +105DBD3E8:t2:AA:$ancestors,H105DBD3D8 +105DBD3D8:lAE:tls_server_sup|H105DBD398 +105DBD398:lA7:tls_sup|H105DBD388 +105DBD388:lA12:ssl_connection_sup|H105DBD378 +105DBD378:lA7:ssl_sup|H105DBD368 +105DBD368:lP<0.103.0>|N +105DBD420:t2:AD:$initial_call,H105DBD400 +105DBD400:t3:AA:supervisor,A16:ssl_listen_tracker_sup,I1 +=proc_dictionary:<0.117.0> +H105DA1D30 +H105DA1D68 +=proc_stack:<0.117.0> +y0:N +y1:A8:infinity +y2:H105DA1DF8 +y3:H105DA2088 +y4:A1D:tls_server_session_ticket_sup +y5:P<0.115.0> +0x0000000105da2320:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105da2340:SReturn addr 0x3D82348 () +=proc_heap:<0.117.0> +105DA1DF8:t5:AE:callback_cache,AA:supervisor,H105DA1D80,H105DA1DA8,H105DA1DD0 +105DA1DD0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105DA1DA8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105DA1D80:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105DA2088:tC:A5:state,H2800BE5C0,A12:simple_one_for_one,H105DA1FF0,H280028358,I0,I3600,N,I0,A5:never,A1D:tls_server_session_ticket_sup,N +105DA1FF0:t2:H105DA1FE0,H105DA1FC0 +105DA1FC0:Mf1:H105DA1FB0:H105DA1F48 +105DA1FB0:t1:A9:undefined +105DA1F48:t9:A5:child,A9:undefined,A9:undefined,H2800BE710,A9:transient,A5:false,I4000,A6:worker,H2800BE700 +105DA1FE0:lA9:undefined|N +105DA1D30:t2:AA:$ancestors,H105DA1D20 +105DA1D20:lAE:tls_server_sup|H105DA1CE0 +105DA1CE0:lA7:tls_sup|H105DA1CD0 +105DA1CD0:lA12:ssl_connection_sup|H105DA1CC0 +105DA1CC0:lA7:ssl_sup|H105DA1CB0 +105DA1CB0:lP<0.103.0>|N +105DA1D68:t2:AD:$initial_call,H105DA1D48 +105DA1D48:t3:AA:supervisor,A1D:tls_server_session_ticket_sup,I1 +=proc_dictionary:<0.118.0> +H105EBF1B0 +H105EBF1E8 +=proc_stack:<0.118.0> +y0:N +y1:A8:infinity +y2:H105EBF278 +y3:H105EBF508 +y4:A1C:ssl_server_session_cache_sup +y5:P<0.115.0> +0x0000000105ebf7a0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105ebf7c0:SReturn addr 0x3D82348 () +=proc_heap:<0.118.0> +105EBF278:t5:AE:callback_cache,AA:supervisor,H105EBF200,H105EBF228,H105EBF250 +105EBF250:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105EBF228:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105EBF200:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105EBF508:tC:A5:state,H2800BE958,A12:simple_one_for_one,H105EBF470,H280028358,I3,I3600,N,I0,A5:never,A1C:ssl_server_session_cache_sup,N +105EBF470:t2:H105EBF460,H105EBF440 +105EBF440:Mf1:H105EBF430:H105EBF3C8 +105EBF430:t1:A9:undefined +105EBF3C8:t9:A5:child,A9:undefined,A9:undefined,H2800BEA90,A9:transient,A5:false,I4000,A6:worker,H2800BEA80 +105EBF460:lA9:undefined|N +105EBF1B0:t2:AA:$ancestors,H105EBF1A0 +105EBF1A0:lAE:tls_server_sup|H105EBF160 +105EBF160:lA7:tls_sup|H105EBF150 +105EBF150:lA12:ssl_connection_sup|H105EBF140 +105EBF140:lA7:ssl_sup|H105EBF130 +105EBF130:lP<0.103.0>|N +105EBF1E8:t2:AD:$initial_call,H105EBF1C8 +105EBF1C8:t3:AA:supervisor,A1C:ssl_server_session_cache_sup,I1 +=proc_dictionary:<0.119.0> +H105EBF900 +H105EBF938 +=proc_stack:<0.119.0> +y0:N +y1:A8:infinity +y2:H105EBF9C8 +y3:H105EBFC58 +y4:A24:ssl_upgrade_server_session_cache_sup +y5:P<0.115.0> +0x0000000105ebfef0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105ebff10:SReturn addr 0x3D82348 () +=proc_heap:<0.119.0> +105EBF9C8:t5:AE:callback_cache,AA:supervisor,H105EBF950,H105EBF978,H105EBF9A0 +105EBF9A0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105EBF978:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105EBF950:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105EBFC58:tC:A5:state,H2800BECC8,A12:simple_one_for_one,H105EBFBC0,H280028358,I3,I3600,N,I0,A5:never,A24:ssl_upgrade_server_session_cache_sup,N +105EBFBC0:t2:H105EBFBB0,H105EBFB90 +105EBFB90:Mf1:H105EBFB80:H105EBFB18 +105EBFB80:t1:A9:undefined +105EBFB18:t9:A5:child,A9:undefined,A9:undefined,H2800BEE18,A9:transient,A5:false,I4000,A6:worker,H2800BEE08 +105EBFBB0:lA9:undefined|N +105EBF900:t2:AA:$ancestors,H105EBF8F0 +105EBF8F0:lAE:tls_server_sup|H105EBF8B0 +105EBF8B0:lA7:tls_sup|H105EBF8A0 +105EBF8A0:lA12:ssl_connection_sup|H105EBF890 +105EBF890:lA7:ssl_sup|H105EBF880 +105EBF880:lP<0.103.0>|N +105EBF938:t2:AD:$initial_call,H105EBF918 +105EBF918:t3:AA:supervisor,A24:ssl_upgrade_server_session_cache_sup,I1 +=proc_dictionary:<0.120.0> +H105DB8030 +H105DB8048 +=proc_stack:<0.120.0> +0x0000000105db82d8:SReturn addr 0x3D82348 () +=proc_heap:<0.120.0> +105DB8030:t2:AA:$ancestors,H105DB8070 +105DB8070:lA12:ssl_connection_sup|H105DB80B0 +105DB80B0:lA7:ssl_sup|H105DB80D0 +105DB80D0:lP<0.103.0>|N +105DB8048:t2:AD:$initial_call,H105DB8080 +105DB8080:t3:AA:supervisor,A8:dtls_sup,I1 +=proc_dictionary:<0.121.0> +H105DB72B0 +H105DB72E8 +=proc_stack:<0.121.0> +y0:N +y1:A8:infinity +y2:H105DB7378 +y3:H105DB7608 +y4:A13:dtls_connection_sup +y5:P<0.120.0> +0x0000000105db78b0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db78d0:SReturn addr 0x3D82348 () +=proc_heap:<0.121.0> +105DB7378:t5:AE:callback_cache,AA:supervisor,H105DB7300,H105DB7328,H105DB7350 +105DB7350:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105DB7328:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105DB7300:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105DB7608:tC:A5:state,H2800BF370,A12:simple_one_for_one,H105DB7570,H280028328,I0,I3600,N,I0,A5:never,A13:dtls_connection_sup,N +105DB7570:t2:H105DB7560,H105DB7540 +105DB7540:Mf1:H105DB7530:H105DB74C8 +105DB7530:t1:A9:undefined +105DB74C8:t9:A5:child,A9:undefined,A9:undefined,H2800BF4D0,A9:temporary,A5:false,I4000,A6:worker,H2800BF4B0 +105DB7560:lA9:undefined|N +105DB72B0:t2:AA:$ancestors,H105DB72A0 +105DB72A0:lA8:dtls_sup|H105DB7260 +105DB7260:lA12:ssl_connection_sup|H105DB7250 +105DB7250:lA7:ssl_sup|H105DB7240 +105DB7240:lP<0.103.0>|N +105DB72E8:t2:AD:$initial_call,H105DB72C8 +105DB72C8:t3:AA:supervisor,A13:dtls_connection_sup,I1 +=proc_dictionary:<0.122.0> +H105D8D9E8 +H105D8DA00 +=proc_stack:<0.122.0> +0x0000000105d8dca0:SReturn addr 0x3D82348 () +=proc_heap:<0.122.0> +105D8D9E8:t2:AA:$ancestors,H105D8DA28 +105D8DA28:lA8:dtls_sup|H105D8DA68 +105D8DA68:lA12:ssl_connection_sup|H105D8DA88 +105D8DA88:lA7:ssl_sup|H105D8DAA8 +105D8DAA8:lP<0.103.0>|N +105D8DA00:t2:AD:$initial_call,H105D8DA38 +105D8DA38:t3:AA:supervisor,AF:dtls_server_sup,I1 +=proc_dictionary:<0.123.0> +H105DB7A10 +H105DB7A48 +=proc_stack:<0.123.0> +y0:N +y1:A8:infinity +y2:H105DB7AD8 +y3:H105DB7D68 +y4:A11:dtls_listener_sup +y5:P<0.122.0> +0x0000000105db8000:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105db8020:SReturn addr 0x3D82348 () +=proc_heap:<0.123.0> +105DB7AD8:t5:AE:callback_cache,AA:supervisor,H105DB7A60,H105DB7A88,H105DB7AB0 +105DB7AB0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105DB7A88:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105DB7A60:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105DB7D68:tC:A5:state,H2800BF988,A12:simple_one_for_one,H105DB7CD0,H280028328,I0,I3600,N,I0,A5:never,A11:dtls_listener_sup,N +105DB7CD0:t2:H105DB7CC0,H105DB7CA0 +105DB7CA0:Mf1:H105DB7C90:H105DB7C28 +105DB7C90:t1:A9:undefined +105DB7C28:t9:A5:child,A9:undefined,A9:undefined,H2800BFB08,A9:temporary,A5:false,I4000,A6:worker,H2800BFAF8 +105DB7CC0:lA9:undefined|N +105DB7A10:t2:AA:$ancestors,H105DB7A00 +105DB7A00:lAF:dtls_server_sup|H105DB79C0 +105DB79C0:lA8:dtls_sup|H105DB79B0 +105DB79B0:lA12:ssl_connection_sup|H105DB79A0 +105DB79A0:lA7:ssl_sup|H105DB7990 +105DB7990:lP<0.103.0>|N +105DB7A48:t2:AD:$initial_call,H105DB7A28 +105DB7A28:t3:AA:supervisor,A11:dtls_listener_sup,I1 +=proc_dictionary:<0.124.0> +H105DE5340 +H105DE5378 +=proc_stack:<0.124.0> +y0:N +y1:A8:infinity +y2:H105DE5408 +y3:H105DE5698 +y4:A1D:dtls_server_session_cache_sup +y5:P<0.122.0> +0x0000000105de5930:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) +y0:N +y1:N +y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) +0x0000000105de5950:SReturn addr 0x3D82348 () +=proc_heap:<0.124.0> +105DE5408:t5:AE:callback_cache,AA:supervisor,H105DE5390,H105DE53B8,H105DE53E0 +105DE53E0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= +105DE53B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= +105DE5390:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= +105DE5698:tC:A5:state,H2800BFC90,A12:simple_one_for_one,H105DE5600,H280028328,I0,I3600,N,I0,A5:never,A1D:dtls_server_session_cache_sup,N +105DE5600:t2:H105DE55F0,H105DE55D0 +105DE55D0:Mf1:H105DE55C0:H105DE5558 +105DE55C0:t1:A9:undefined +105DE5558:t9:A5:child,A9:undefined,A9:undefined,H2800BFDC8,A9:temporary,A5:false,I4000,A6:worker,H2800BFDB8 +105DE55F0:lA9:undefined|N +105DE5340:t2:AA:$ancestors,H105DE5330 +105DE5330:lAF:dtls_server_sup|H105DE52F0 +105DE52F0:lA8:dtls_sup|H105DE52E0 +105DE52E0:lA12:ssl_connection_sup|H105DE52D0 +105DE52D0:lA7:ssl_sup|H105DE52C0 +105DE52C0:lP<0.103.0>|N +105DE5378:t2:AD:$initial_call,H105DE5358 +105DE5358:t3:AA:supervisor,A1D:dtls_server_session_cache_sup,I1 +=proc_messages:<0.135.0> +=proc_stack:<0.135.0> +y0:H2800CD8C8 +y1:H105D8D5E0 +y2:A8:infinity +0x0000000105d8d7d0:SReturn addr 0x41FF57C (gleam_erlang_ffi:select/1 + 76) +0x0000000105d8d7d8:SReturn addr 0x41F8888 ('gleam@otp@actor':loop/1 + 88) +y0:N +y1:N +y2:H105D8D4B0 +0x0000000105d8d7f8:SReturn addr 0x3D82348 () +=proc_heap:<0.135.0> +105D8D5E0:Mf3:H105D8D610:H2800CD8C8,H105D8D598,H105D8D340 +105D8D610:t3:A8:anything,H105D8D5C8,H105D8D3B0 +105D8D3B0:t2:H105D8D288,I2 +105D8D288:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALJ5+vQAAd/g02c= +105D8D5C8:t2:A6:system,I3 +105D8D340:E59:g3AAAABXATXkq0co6TIEH9F8d4ohKbUAAAABAAAAAXcUZ2xlYW1AZXJsYW5nQHByb2Nlc3NhAWIBryVaWHcNbm9ub2RlQG5vaG9zdAAAAIcAAAAAAAAAAGo= +105D8D598:E59:g3AAAABXATXkq0co6TIEH9F8d4ohKbUAAAAEAAAAAXcUZ2xlYW1AZXJsYW5nQHByb2Nlc3NhBGIBryVaWHcNbm9ub2RlQG5vaG9zdAAAAIcAAAAAAAAAAGo= +105D8D4B0:t8:A4:self,A7:running,P<0.9.0>,A3:nil,H105D8D160,H105D8D180,N,H105D8D198 +105D8D198:E70:g3AAAABuAm0lB8VhbzpekP2Yj7+xrtsAAAAAAAAABXcnc2hvd3RpbWVAaW50ZXJuYWxAZXJsYW5nQG1vZHVsZV9oYW5kbGVyYQBiA2koPlh3DW5vbm9kZUBub2hvc3QAAAAJAAAAAAAAAABqampqag== +105D8D180:t2:A8:selector,H105D8D2A0 +105D8D2A0:Mf1:H105D8D330:H105D8D340 +105D8D330:t1:H105D8D3B0 +105D8D160:t3:A7:subject,P<0.135.0>,H105D8D288 +=persistent_terms +H280093098|A5:async +AC:logger_proxy|H28008F560 +H2800930E0|I10 +H28001C210|H28001C228 +H280093140|A9:undefined +AC:global_group|H28007FBF0 +H280017DD8|H280017DF0 +H2800BB860|I23 +H28001F250|H28001F268 +H280068270|H280068288 +H280068B60|N +H28001EEC0|H28001EED8 +H2800BB800|I7 +H2800BB7B8|A5:async +A12:rex_nodes_observer|H2800711C8 +H28001EFE8|H28001F000 +H28005B268|I5 +H28006A4B8|I5 +H28008F5C8|A5:async +H280068BF0|I5 +H280068BA8|A4:true +H280068B18|N +H28005B2B0|I5 +=literals +2800101F8:t2:A4:unix,A6:darwin +280010230:t3:I23,I0,I0 +280010268:t6:AB:erts_dflags,I55966662588,I17230663572,I55966662588,I8396866,I8192 +280010188:t0: +280010190:t0: +2800102B8:lI108|N +2800102C8:lI114|H2800102B8 +2800102D8:lI101|H2800102C8 +2800102E8:lI46|H2800102D8 +280013CD0:t4:A5:state,H280013CF8,H280013D10,H280013D28 +280013CF8:Mf0:H280010188: +280013D10:Mf0:H280010188: +280013D28:Mf0:H280010188: +280013D40:Mf0:H280010188: +280013D58:lA5:flush|N +280013D68:lI115|H280013D78 +280013D78:lI111|H280013D88 +280013D88:lI99|H280013D98 +280013D98:lI107|H280013DA8 +280013DA8:lI101|H280013DB8 +280013DB8:lI116|H280013DC8 +280013DC8:lI45|H280013DD8 +280013DD8:lI114|H280013DE8 +280013DE8:lI101|H280013DF8 +280013DF8:lI103|H280013E08 +280013E08:lI105|H280013E18 +280013E18:lI115|H280013E28 +280013E28:lI116|H280013E38 +280013E38:lI114|H280013E48 +280013E48:lI121|H280013E58 +280013E58:lI32|H280013E68 +280013E68:lI114|H280013E78 +280013E78:lI101|H280013E88 +280013E88:lI99|H280013E98 +280013E98:lI101|H280013EA8 +280013EA8:lI105|H280013EB8 +280013EB8:lI118|H280013EC8 +280013EC8:lI101|H280013ED8 +280013ED8:lI100|H280013EE8 +280013EE8:lI32|H280013EF8 +280013EF8:lI117|H280013F08 +280013F08:lI110|H280013F18 +280013F18:lI101|H280013F28 +280013F28:lI120|H280013F38 +280013F38:lI112|H280013F48 +280013F48:lI101|H280013F58 +280013F58:lI99|H280013F68 +280013F68:lI116|H280013F78 +280013F78:lI101|H280013F88 +280013F88:lI100|H280013F98 +280013F98:lI32|H280013FA8 +280013FA8:lI101|H280013FB8 +280013FB8:lI120|H280013FC8 +280013FC8:lI105|H280013FD8 +280013FD8:lI116|H280013FE8 +280013FE8:lI32|H280013FF8 +280013FF8:lI102|H280014008 +280014008:lI114|H280014018 +280014018:lI111|H280014028 +280014028:lI109|H280014038 +280014038:lI32|H280014048 +280014048:lI126|H280014058 +280014058:lI112|H280014068 +280014068:lI58|H280014078 +280014078:lI126|H280014088 +280014088:lI110|H280014098 +280014098:lI32|H2800140A8 +2800140A8:lI32|H2800140B8 +2800140B8:lI32|H2800140C8 +2800140C8:lI126|H2800140D8 +2800140D8:lI112|N +2800140E8:lI115|H2800140F8 +2800140F8:lI111|H280014108 +280014108:lI99|H280014118 +280014118:lI107|H280014128 +280014128:lI101|H280014138 +280014138:lI116|H280014148 +280014148:lI45|H280014158 +280014158:lI114|H280014168 +280014168:lI101|H280014178 +280014178:lI103|H280014188 +280014188:lI105|H280014198 +280014198:lI115|H2800141A8 +2800141A8:lI116|H2800141B8 +2800141B8:lI114|H2800141C8 +2800141C8:lI121|H2800141D8 +2800141D8:lI32|H2800141E8 +2800141E8:lI114|H2800141F8 +2800141F8:lI101|H280014208 +280014208:lI99|H280014218 +280014218:lI101|H280014228 +280014228:lI105|H280014238 +280014238:lI118|H280014248 +280014248:lI101|H280014258 +280014258:lI100|H280014268 +280014268:lI32|H280014278 +280014278:lI117|H280014288 +280014288:lI110|H280014298 +280014298:lI101|H2800142A8 +2800142A8:lI120|H2800142B8 +2800142B8:lI112|H2800142C8 +2800142C8:lI101|H2800142D8 +2800142D8:lI99|H2800142E8 +2800142E8:lI116|H2800142F8 +2800142F8:lI101|H280014308 +280014308:lI100|H280014318 +280014318:lI58|H280014328 +280014328:lI126|H280014338 +280014338:lI110|H280014348 +280014348:lI32|H280014358 +280014358:lI32|H280014368 +280014368:lI32|H280014378 +280014378:lI126|H280014388 +280014388:lI112|N +280014398:lI115|H2800143A8 +2800143A8:lI111|H2800143B8 +2800143B8:lI99|H2800143C8 +2800143C8:lI107|H2800143D8 +2800143D8:lI101|H2800143E8 +2800143E8:lI116|H2800143F8 +2800143F8:lI45|H280014408 +280014408:lI114|H280014418 +280014418:lI101|H280014428 +280014428:lI103|H280014438 +280014438:lI105|H280014448 +280014448:lI115|H280014458 +280014458:lI116|H280014468 +280014468:lI114|H280014478 +280014478:lI121|H280014488 +280014488:lI32|H280014498 +280014498:lI101|H2800144A8 +2800144A8:lI114|H2800144B8 +2800144B8:lI114|H2800144C8 +2800144C8:lI111|H2800144D8 +2800144D8:lI114|H2800144E8 +2800144E8:lI32|H2800144F8 +2800144F8:lI119|H280014508 +280014508:lI104|H280014518 +280014518:lI105|H280014528 +280014528:lI108|H280014538 +280014538:lI101|H280014548 +280014548:lI32|H280014558 +280014558:lI112|H280014568 +280014568:lI114|H280014578 +280014578:lI111|H280014588 +280014588:lI99|H280014598 +280014598:lI101|H2800145A8 +2800145A8:lI115|H2800145B8 +2800145B8:lI115|H2800145C8 +2800145C8:lI105|H2800145D8 +2800145D8:lI110|H2800145E8 +2800145E8:lI103|H2800145F8 +2800145F8:lI32|H280014608 +280014608:lI115|H280014618 +280014618:lI111|H280014628 +280014628:lI99|H280014638 +280014638:lI107|H280014648 +280014648:lI101|H280014658 +280014658:lI116|H280014668 +280014668:lI58|H280014678 +280014678:lI32|H280014688 +280014688:lI126|H280014698 +280014698:lI110|H2800146A8 +2800146A8:lI32|H2800146B8 +2800146B8:lI32|H2800146C8 +2800146C8:lI32|H2800146D8 +2800146D8:lI67|H2800146E8 +2800146E8:lI108|H2800146F8 +2800146F8:lI97|H280014708 +280014708:lI115|H280014718 +280014718:lI115|H280014728 +280014728:lI58|H280014738 +280014738:lI32|H280014748 +280014748:lI126|H280014758 +280014758:lI112|H280014768 +280014768:lI126|H280014778 +280014778:lI110|H280014788 +280014788:lI32|H280014798 +280014798:lI32|H2800147A8 +2800147A8:lI32|H2800147B8 +2800147B8:lI69|H2800147C8 +2800147C8:lI114|H2800147D8 +2800147D8:lI114|H2800147E8 +2800147E8:lI111|H2800147F8 +2800147F8:lI114|H280014808 +280014808:lI58|H280014818 +280014818:lI32|H280014828 +280014828:lI126|H280014838 +280014838:lI112|H280014848 +280014848:lI126|H280014858 +280014858:lI110|H280014868 +280014868:lI32|H280014878 +280014878:lI32|H280014888 +280014888:lI32|H280014898 +280014898:lI83|H2800148A8 +2800148A8:lI116|H2800148B8 +2800148B8:lI97|H2800148C8 +2800148C8:lI99|H2800148D8 +2800148D8:lI107|H2800148E8 +2800148E8:lI58|H2800148F8 +2800148F8:lI32|H280014908 +280014908:lI126|H280014918 +280014918:lI112|N +280014928:t2:A5:error,AE:unknown_socket +280014940:t2:A5:error,A9:not_owner +280014958:t2:A5:error,AF:unknown_monitor +280014970:t2:AF:socket_registry,A9:not_found +280014988:lI115|H280014998 +280014998:lI111|H2800149A8 +2800149A8:lI99|H2800149B8 +2800149B8:lI107|H2800149C8 +2800149C8:lI101|H2800149D8 +2800149D8:lI116|H2800149E8 +2800149E8:lI45|H2800149F8 +2800149F8:lI114|H280014A08 +280014A08:lI101|H280014A18 +280014A18:lI103|H280014A28 +280014A28:lI105|H280014A38 +280014A38:lI115|H280014A48 +280014A48:lI116|H280014A58 +280014A58:lI114|H280014A68 +280014A68:lI121|H280014A78 +280014A78:lI32|H280014A88 +280014A88:lI115|H280014A98 +280014A98:lI101|H280014AA8 +280014AA8:lI110|H280014AB8 +280014AB8:lI100|H280014AC8 +280014AC8:lI102|H280014AD8 +280014AD8:lI105|H280014AE8 +280014AE8:lI108|H280014AF8 +280014AF8:lI101|H280014B08 +280014B08:lI95|H280014B18 +280014B18:lI100|H280014B28 +280014B28:lI101|H280014B38 +280014B38:lI102|H280014B48 +280014B48:lI101|H280014B58 +280014B58:lI114|H280014B68 +280014B68:lI114|H280014B78 +280014B78:lI101|H280014B88 +280014B88:lI100|H280014B98 +280014B98:lI95|H280014BA8 +280014BA8:lI99|H280014BB8 +280014BB8:lI108|H280014BC8 +280014BC8:lI111|H280014BD8 +280014BD8:lI115|H280014BE8 +280014BE8:lI101|H280014BF8 +280014BF8:lI58|H280014C08 +280014C08:lI126|H280014C18 +280014C18:lI110|H280014C28 +280014C28:lI32|H280014C38 +280014C38:lI32|H280014C48 +280014C48:lI32|H280014C58 +280014C58:lI91|H280014C68 +280014C68:lI126|H280014C78 +280014C78:lI112|H280014C88 +280014C88:lI93|H280014C98 +280014C98:lI32|H280014CA8 +280014CA8:lI126|H280014CB8 +280014CB8:lI112|N +280014CC8:lI115|H280014CD8 +280014CD8:lI111|H280014CE8 +280014CE8:lI99|H280014CF8 +280014CF8:lI107|H280014D08 +280014D08:lI101|H280014D18 +280014D18:lI116|H280014D28 +280014D28:lI45|H280014D38 +280014D38:lI114|H280014D48 +280014D48:lI101|H280014D58 +280014D58:lI103|H280014D68 +280014D68:lI105|H280014D78 +280014D78:lI115|H280014D88 +280014D88:lI116|H280014D98 +280014D98:lI114|H280014DA8 +280014DA8:lI121|H280014DB8 +280014DB8:lI32|H280014DC8 +280014DC8:lI115|H280014DD8 +280014DD8:lI101|H280014DE8 +280014DE8:lI110|H280014DF8 +280014DF8:lI100|H280014E08 +280014E08:lI102|H280014E18 +280014E18:lI105|H280014E28 +280014E28:lI108|H280014E38 +280014E38:lI101|H280014E48 +280014E48:lI95|H280014E58 +280014E58:lI100|H280014E68 +280014E68:lI101|H280014E78 +280014E78:lI102|H280014E88 +280014E88:lI101|H280014E98 +280014E98:lI114|H280014EA8 +280014EA8:lI114|H280014EB8 +280014EB8:lI101|H280014EC8 +280014EC8:lI100|H280014ED8 +280014ED8:lI95|H280014EE8 +280014EE8:lI99|H280014EF8 +280014EF8:lI108|H280014F08 +280014F08:lI111|H280014F18 +280014F18:lI115|H280014F28 +280014F28:lI101|H280014F38 +280014F38:lI58|H280014F48 +280014F48:lI126|H280014F58 +280014F58:lI110|H280014F68 +280014F68:lI32|H280014F78 +280014F78:lI32|H280014F88 +280014F88:lI32|H280014F98 +280014F98:lI91|H280014FA8 +280014FA8:lI126|H280014FB8 +280014FB8:lI112|H280014FC8 +280014FC8:lI93|H280014FD8 +280014FD8:lI32|H280014FE8 +280014FE8:lI40|H280014FF8 +280014FF8:lI126|H280015008 +280015008:lI112|H280015018 +280015018:lI58|H280015028 +280015028:lI126|H280015038 +280015038:lI112|H280015048 +280015048:lI41|H280015058 +280015058:lI126|H280015068 +280015068:lI110|H280015078 +280015078:lI32|H280015088 +280015088:lI32|H280015098 +280015098:lI32|H2800150A8 +2800150A8:lI32|H2800150B8 +2800150B8:lI32|H2800150C8 +2800150C8:lI32|H2800150D8 +2800150D8:lI126|H2800150E8 +2800150E8:lI112|N +2800150F8:t1:A3:tag +280015108:t4:AC:error_logger,A3:pid,A4:time,A2:gl +280017B40:t2:I0,N +280025F58:lI67|H280025F68 +280025F68:lI97|H280025F78 +280025F78:lI108|H280025F88 +280025F88:lI108|H280025F98 +280025F98:lI98|H280025FA8 +280025FA8:lI97|H280025FB8 +280025FB8:lI99|H280025FC8 +280025FC8:lI107|N +280025FD8:lI83|H280025FE8 +280025FE8:lI116|H280025FF8 +280025FF8:lI97|H280026008 +280026008:lI116|H280026018 +280026018:lI101|N +280026028:t2:A2:ok,A9:undefined +280026040:t2:A5:error,AA:restarting +280026058:t2:A5:error,A7:running +280026070:t2:A5:error,A9:not_found +280026088:t2:A5:error,A12:simple_one_for_one +2800260A0:t2:AB:supervisors,I0 +2800260B8:t2:A5:specs,I1 +2800260D0:lH2800260E0|N +2800260E0:t2:A7:workers,I0 +2800260F8:t4:I0,I0,I0,I0 +280026120:lI83|H280026130 +280026130:lI117|H280026140 +280026140:lI112|H280026150 +280026150:lI101|H280026160 +280026160:lI114|H280026170 +280026170:lI118|H280026180 +280026180:lI105|H280026190 +280026190:lI115|H2800261A0 +2800261A0:lI111|H2800261B0 +2800261B0:lI114|H2800261C0 +2800261C0:lI32|H2800261D0 +2800261D0:lI114|H2800261E0 +2800261E0:lI101|H2800261F0 +2800261F0:lI99|H280026200 +280026200:lI101|H280026210 +280026210:lI105|H280026220 +280026220:lI118|H280026230 +280026230:lI101|H280026240 +280026240:lI100|H280026250 +280026250:lI32|H280026260 +280026260:lI117|H280026270 +280026270:lI110|H280026280 +280026280:lI101|H280026290 +280026290:lI120|H2800262A0 +2800262A0:lI112|H2800262B0 +2800262B0:lI101|H2800262C0 +2800262C0:lI99|H2800262D0 +2800262D0:lI116|H2800262E0 +2800262E0:lI101|H2800262F0 +2800262F0:lI100|H280026300 +280026300:lI32|H280026310 +280026310:lI109|H280026320 +280026320:lI101|H280026330 +280026330:lI115|H280026340 +280026340:lI115|H280026350 +280026350:lI97|H280026360 +280026360:lI103|H280026370 +280026370:lI101|H280026380 +280026380:lI58|H280026390 +280026390:lI32|H2800263A0 +2800263A0:lI126|H2800263B0 +2800263B0:lI116|H2800263C0 +2800263C0:lI112|H2800263D0 +2800263D0:lI126|H2800263E0 +2800263E0:lI110|N +2800263F0:t2:AC:error_logger,A6:domain +280026408:Mf2:H2800263F0:H280026450,H280026430 +280026430:lA3:otp|N +280026440:t1:A3:tag +280026450:Mf1:H280026440:A5:error +280026470:t3:A4:line,A4:file,A3:mfa +280026490:Mf3:H280026470:I623,H2800264C0,H2800265A0 +2800264C0:lI115|H2800264D0 +2800264D0:lI117|H2800264E0 +2800264E0:lI112|H2800264F0 +2800264F0:lI101|H280026500 +280026500:lI114|H280026510 +280026510:lI118|H280026520 +280026520:lI105|H280026530 +280026530:lI115|H280026540 +280026540:lI111|H280026550 +280026550:lI114|H280026560 +280026560:lI46|H280026570 +280026570:lI101|H280026580 +280026580:lI114|H280026590 +280026590:lI108|N +2800265A0:t3:AA:supervisor,AB:handle_info,I2 +2800265C0:t2:A5:error,AF:already_present +2800265D8:t2:AC:errorContext,A10:child_terminated +2800265F0:Mf0:H280010188: +280026608:t2:AA:supervisor,A10:child_terminated +280026620:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb +280026648:Mf4:H280026620:H2800266C0,H280026680,H280026728,H280026858 +280026680:lA3:otp|H280026690 +280026690:lA4:sasl|N +2800266A0:t3:A3:tag,A4:type,A9:report_cb +2800266C0:Mf3:H2800266A0:AC:error_report,A11:supervisor_report,H2800266F0 +2800266F0:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAQ== +280026718:t1:A5:title +280026728:Mf1:H280026718:H280026748 +280026748:lI83|H280026758 +280026758:lI85|H280026768 +280026768:lI80|H280026778 +280026778:lI69|H280026788 +280026788:lI82|H280026798 +280026798:lI86|H2800267A8 +2800267A8:lI73|H2800267B8 +2800267B8:lI83|H2800267C8 +2800267C8:lI79|H2800267D8 +2800267D8:lI82|H2800267E8 +2800267E8:lI32|H2800267F8 +2800267F8:lI82|H280026808 +280026808:lI69|H280026818 +280026818:lI80|H280026828 +280026828:lI79|H280026838 +280026838:lI82|H280026848 +280026848:lI84|N +280026858:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAg== +280026880:t3:A4:line,A4:file,A3:mfa +2800268A0:Mf3:H280026880:I742,H2800268D0,H2800269B0 +2800268D0:lI115|H2800268E0 +2800268E0:lI117|H2800268F0 +2800268F0:lI112|H280026900 +280026900:lI101|H280026910 +280026910:lI114|H280026920 +280026920:lI118|H280026930 +280026930:lI105|H280026940 +280026940:lI115|H280026950 +280026950:lI111|H280026960 +280026960:lI114|H280026970 +280026970:lI46|H280026980 +280026980:lI101|H280026990 +280026990:lI114|H2800269A0 +2800269A0:lI108|N +2800269B0:t3:AA:supervisor,AA:do_restart,I3 +2800269D0:t3:A4:line,A4:file,A3:mfa +2800269F0:Mf3:H2800269D0:I754,H280026A20,H280026B00 +280026A20:lI115|H280026A30 +280026A30:lI117|H280026A40 +280026A40:lI112|H280026A50 +280026A50:lI101|H280026A60 +280026A60:lI114|H280026A70 +280026A70:lI118|H280026A80 +280026A80:lI105|H280026A90 +280026A90:lI115|H280026AA0 +280026AA0:lI111|H280026AB0 +280026AB0:lI114|H280026AC0 +280026AC0:lI46|H280026AD0 +280026AD0:lI101|H280026AE0 +280026AE0:lI114|H280026AF0 +280026AF0:lI108|N +280026B00:t3:AA:supervisor,AA:do_restart,I3 +280026B20:t3:A4:line,A4:file,A3:mfa +280026B40:Mf3:H280026B20:I757,H280026B70,H280026C50 +280026B70:lI115|H280026B80 +280026B80:lI117|H280026B90 +280026B90:lI112|H280026BA0 +280026BA0:lI101|H280026BB0 +280026BB0:lI114|H280026BC0 +280026BC0:lI118|H280026BD0 +280026BD0:lI105|H280026BE0 +280026BE0:lI115|H280026BF0 +280026BF0:lI111|H280026C00 +280026C00:lI114|H280026C10 +280026C10:lI46|H280026C20 +280026C20:lI101|H280026C30 +280026C30:lI114|H280026C40 +280026C40:lI108|N +280026C50:t3:AA:supervisor,AA:do_restart,I3 +280026C70:t2:A6:reason,A1D:reached_max_restart_intensity +280026C88:t2:AC:errorContext,A8:shutdown +280026CA0:t2:AA:supervisor,A8:shutdown +280026CB8:t3:A4:line,A4:file,A3:mfa +280026CD8:Mf3:H280026CB8:I811,H280026D08,H280026DE8 +280026D08:lI115|H280026D18 +280026D18:lI117|H280026D28 +280026D28:lI112|H280026D38 +280026D38:lI101|H280026D48 +280026D48:lI114|H280026D58 +280026D58:lI118|H280026D68 +280026D68:lI105|H280026D78 +280026D78:lI115|H280026D88 +280026D88:lI111|H280026D98 +280026D98:lI114|H280026DA8 +280026DA8:lI46|H280026DB8 +280026DB8:lI101|H280026DC8 +280026DC8:lI114|H280026DD8 +280026DD8:lI108|N +280026DE8:t3:AA:supervisor,A7:restart,I2 +280026E08:t2:AC:errorContext,AB:start_error +280026E20:t2:AA:supervisor,AB:start_error +280026E38:t3:A4:line,A4:file,A3:mfa +280026E58:Mf3:H280026E38:I838,H280026E88,H280026F68 +280026E88:lI115|H280026E98 +280026E98:lI117|H280026EA8 +280026EA8:lI112|H280026EB8 +280026EB8:lI101|H280026EC8 +280026EC8:lI114|H280026ED8 +280026ED8:lI118|H280026EE8 +280026EE8:lI105|H280026EF8 +280026EF8:lI115|H280026F08 +280026F08:lI111|H280026F18 +280026F18:lI114|H280026F28 +280026F28:lI46|H280026F38 +280026F38:lI101|H280026F48 +280026F48:lI114|H280026F58 +280026F58:lI108|N +280026F68:t3:AA:supervisor,A7:restart,I3 +280026F88:t3:A4:line,A4:file,A3:mfa +280026FA8:Mf3:H280026F88:I852,H280026FD8,H2800270B8 +280026FD8:lI115|H280026FE8 +280026FE8:lI117|H280026FF8 +280026FF8:lI112|H280027008 +280027008:lI101|H280027018 +280027018:lI114|H280027028 +280027028:lI118|H280027038 +280027038:lI105|H280027048 +280027048:lI115|H280027058 +280027058:lI111|H280027068 +280027068:lI114|H280027078 +280027078:lI46|H280027088 +280027088:lI101|H280027098 +280027098:lI114|H2800270A8 +2800270A8:lI108|N +2800270B8:t3:AA:supervisor,A7:restart,I3 +2800270D8:t2:AA:restarting,A9:undefined +2800270F0:t2:AC:errorContext,AE:shutdown_error +280027108:t2:AA:supervisor,AE:shutdown_error +280027120:t3:A4:line,A4:file,A3:mfa +280027140:Mf3:H280027120:I911,H280027170,H280027250 +280027170:lI115|H280027180 +280027180:lI117|H280027190 +280027190:lI112|H2800271A0 +2800271A0:lI101|H2800271B0 +2800271B0:lI114|H2800271C0 +2800271C0:lI118|H2800271D0 +2800271D0:lI105|H2800271E0 +2800271E0:lI115|H2800271F0 +2800271F0:lI111|H280027200 +280027200:lI114|H280027210 +280027210:lI46|H280027220 +280027220:lI101|H280027230 +280027230:lI114|H280027240 +280027240:lI108|N +280027250:t3:AA:supervisor,AC:do_terminate,I2 +280027270:t2:N,H280027288 +280027288:Mf0:H280010188: +2800272A0:t4:A8:strategy,A6:period,A9:intensity,AD:auto_shutdown +2800272C8:Mf4:H2800272A0:AB:one_for_one,I5,I1,A5:never +280027300:t2:A7:restart,A4:type +280027318:Mf2:H280027300:A9:permanent,A6:worker +280027340:t2:AF:bad_combination,H280027358 +280027358:lH280027378|H280027368 +280027368:lH280027390|N +280027378:t2:AD:auto_shutdown,A5:never +280027390:t2:AB:significant,A4:true +2800273A8:t2:AF:bad_combination,H2800273C0 +2800273C0:lH2800273E0|H2800273D0 +2800273D0:lH2800273F8|N +2800273E0:t2:A7:restart,A9:permanent +2800273F8:t2:AB:significant,A4:true +280027410:t2:AA:supervisor,A8:progress +280027428:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb +280027450:Mf4:H280027428:H2800274C8,H280027488,H280027530,H280027640 +280027488:lA3:otp|H280027498 +280027498:lA4:sasl|N +2800274A8:t3:A3:tag,A4:type,A9:report_cb +2800274C8:Mf3:H2800274A8:AB:info_report,A8:progress,H2800274F8 +2800274F8:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAQ== +280027520:t1:A5:title +280027530:Mf1:H280027520:H280027550 +280027550:lI80|H280027560 +280027560:lI82|H280027570 +280027570:lI79|H280027580 +280027580:lI71|H280027590 +280027590:lI82|H2800275A0 +2800275A0:lI69|H2800275B0 +2800275B0:lI83|H2800275C0 +2800275C0:lI83|H2800275D0 +2800275D0:lI32|H2800275E0 +2800275E0:lI82|H2800275F0 +2800275F0:lI69|H280027600 +280027600:lI80|H280027610 +280027610:lI79|H280027620 +280027620:lI82|H280027630 +280027630:lI84|N +280027640:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAg== +280027668:t3:A4:line,A4:file,A3:mfa +280027688:Mf3:H280027668:I1563,H2800276B8,H280027798 +2800276B8:lI115|H2800276C8 +2800276C8:lI117|H2800276D8 +2800276D8:lI112|H2800276E8 +2800276E8:lI101|H2800276F8 +2800276F8:lI114|H280027708 +280027708:lI118|H280027718 +280027718:lI105|H280027728 +280027728:lI115|H280027738 +280027738:lI111|H280027748 +280027748:lI114|H280027758 +280027758:lI46|H280027768 +280027768:lI101|H280027778 +280027778:lI114|H280027788 +280027788:lI108|N +280027798:t3:AA:supervisor,AF:report_progress,I2 +2800277B8:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +2800277E0:Mf4:H2800277B8:A9:unlimited,A9:unlimited,A4:utf8,A5:false +280027818:lI83|H280027828 +280027828:lI116|H280027838 +280027838:lI97|H280027848 +280027848:lI114|H280027858 +280027858:lI116|H280027868 +280027868:lI101|H280027878 +280027878:lI100|H280027888 +280027888:lI58|N +280027898:lI46|N +2800278A8:lI83|H2800278B8 +2800278B8:lI117|H2800278C8 +2800278C8:lI112|H2800278D8 +2800278D8:lI101|H2800278E8 +2800278E8:lI114|H2800278F8 +2800278F8:lI118|H280027908 +280027908:lI105|H280027918 +280027918:lI115|H280027928 +280027928:lI111|H280027938 +280027938:lI114|H280027948 +280027948:lI58|H280027958 +280027958:lI32|N +280027968:lH280027978|N +280027978:lI46|N +280027988:lI46|H280027998 +280027998:lI32|H2800279A8 +2800279A8:lI82|H2800279B8 +2800279B8:lI101|H2800279C8 +2800279C8:lI97|H2800279D8 +2800279D8:lI115|H2800279E8 +2800279E8:lI111|H2800279F8 +2800279F8:lI110|H280027A08 +280027A08:lI58|H280027A18 +280027A18:lI32|N +280027A28:lI46|H280027A38 +280027A38:lI32|H280027A48 +280027A48:lI67|H280027A58 +280027A58:lI111|H280027A68 +280027A68:lI110|H280027A78 +280027A78:lI116|H280027A88 +280027A88:lI101|H280027A98 +280027A98:lI120|H280027AA8 +280027AA8:lI116|H280027AB8 +280027AB8:lI58|H280027AC8 +280027AC8:lI32|N +280027AD8:lI79|H280027AE8 +280027AE8:lI102|H280027AF8 +280027AF8:lI102|H280027B08 +280027B08:lI101|H280027B18 +280027B18:lI110|H280027B28 +280027B28:lI100|H280027B38 +280027B38:lI101|H280027B48 +280027B48:lI114|H280027B58 +280027B58:lI58|N +280027B68:lH280027B78|N +280027B78:lI126|H280027B88 +280027B88:lI110|N +280027B98:lI32|H280027BA8 +280027BA8:lI32|H280027BB8 +280027BB8:lI32|H280027BC8 +280027BC8:lI32|H280027BD8 +280027BD8:lI115|H280027BE8 +280027BE8:lI116|H280027BF8 +280027BF8:lI97|H280027C08 +280027C08:lI114|H280027C18 +280027C18:lI116|H280027C28 +280027C28:lI101|H280027C38 +280027C38:lI100|H280027C48 +280027C48:lI58|H280027C58 +280027C58:lI32|N +280027C68:lI126|H280027C78 +280027C78:lI110|N +280027C88:lI32|H280027C98 +280027C98:lI32|H280027CA8 +280027CA8:lI32|H280027CB8 +280027CB8:lI32|H280027CC8 +280027CC8:lI115|H280027CD8 +280027CD8:lI117|H280027CE8 +280027CE8:lI112|H280027CF8 +280027CF8:lI101|H280027D08 +280027D08:lI114|H280027D18 +280027D18:lI118|H280027D28 +280027D28:lI105|H280027D38 +280027D38:lI115|H280027D48 +280027D48:lI111|H280027D58 +280027D58:lI114|H280027D68 +280027D68:lI58|H280027D78 +280027D78:lI32|N +280027D88:lI32|H280027D98 +280027D98:lI32|H280027DA8 +280027DA8:lI32|H280027DB8 +280027DB8:lI32|H280027DC8 +280027DC8:lI111|H280027DD8 +280027DD8:lI102|H280027DE8 +280027DE8:lI102|H280027DF8 +280027DF8:lI101|H280027E08 +280027E08:lI110|H280027E18 +280027E18:lI100|H280027E28 +280027E28:lI101|H280027E38 +280027E38:lI114|H280027E48 +280027E48:lI58|H280027E58 +280027E58:lI32|N +280027E68:lI32|H280027E78 +280027E78:lI32|H280027E88 +280027E88:lI32|H280027E98 +280027E98:lI32|H280027EA8 +280027EA8:lI114|H280027EB8 +280027EB8:lI101|H280027EC8 +280027EC8:lI97|H280027ED8 +280027ED8:lI115|H280027EE8 +280027EE8:lI111|H280027EF8 +280027EF8:lI110|H280027F08 +280027F08:lI58|H280027F18 +280027F18:lI32|N +280027F28:lI32|H280027F38 +280027F38:lI32|H280027F48 +280027F48:lI32|H280027F58 +280027F58:lI32|H280027F68 +280027F68:lI101|H280027F78 +280027F78:lI114|H280027F88 +280027F88:lI114|H280027F98 +280027F98:lI111|H280027FA8 +280027FA8:lI114|H280027FB8 +280027FB8:lI67|H280027FC8 +280027FC8:lI111|H280027FD8 +280027FD8:lI110|H280027FE8 +280027FE8:lI116|H280027FF8 +280027FF8:lI101|H280028008 +280028008:lI120|H280028018 +280028018:lI116|H280028028 +280028028:lI58|H280028038 +280028038:lI32|N +280028048:lI32|H280028058 +280028058:lI126|H280028068 +280028068:lI115|H280028078 +280028078:lI32|H280028088 +280028088:lI105|H280028098 +280028098:lI100|H2800280A8 +2800280A8:lI61|H2800280B8 +2800280B8:lI126|H2800280C8 +2800280C8:lI119|H2800280D8 +2800280D8:lI44|H2800280E8 +2800280E8:lI110|H2800280F8 +2800280F8:lI98|H280028108 +280028108:lI95|H280028118 +280028118:lI99|H280028128 +280028128:lI104|H280028138 +280028138:lI105|H280028148 +280028148:lI108|H280028158 +280028158:lI100|H280028168 +280028168:lI114|H280028178 +280028178:lI101|H280028188 +280028188:lI110|H280028198 +280028198:lI61|H2800281A8 +2800281A8:lI126|H2800281B8 +2800281B8:lI119|H2800281C8 +2800281C8:lI46|N +2800281D8:lI32|H2800281E8 +2800281E8:lI126|H2800281F8 +2800281F8:lI115|H280028208 +280028208:lI32|H280028218 +280028218:lI105|H280028228 +280028228:lI100|H280028238 +280028238:lI61|H280028248 +280028248:lI126|H280028258 +280028258:lI119|H280028268 +280028268:lI44|H280028278 +280028278:lI112|H280028288 +280028288:lI105|H280028298 +280028298:lI100|H2800282A8 +2800282A8:lI61|H2800282B8 +2800282B8:lI126|H2800282C8 +2800282C8:lI119|H2800282D8 +2800282D8:lI46|N +2800282E8:lI112|N +2800282F8:lI80|N +280028308:lI48|N +280028318:lI116|N +280028328:t2:A7:mapsets,H280028340 +280028340:Mf0:H280010188: +280028358:t2:A4:maps,H280028370 +280028370:Mf0:H280010188: +280028388:lH280028398|N +280028398:t2:A4:init,I1 +2800283B0:t3:A4:line,A4:file,A3:mfa +2800283D0:Mf3:H2800283B0:I1026,H280028400,H2800284E0 +280028400:lI115|H280028410 +280028410:lI117|H280028420 +280028420:lI112|H280028430 +280028430:lI101|H280028440 +280028440:lI114|H280028450 +280028450:lI118|H280028460 +280028460:lI105|H280028470 +280028470:lI115|H280028480 +280028480:lI111|H280028490 +280028490:lI114|H2800284A0 +2800284A0:lI46|H2800284B0 +2800284B0:lI101|H2800284C0 +2800284C0:lI114|H2800284D0 +2800284D0:lI108|N +2800284E0:t3:AA:supervisor,A1A:terminate_dynamic_children,I1 +280028500:t3:A4:line,A4:file,A3:mfa +280028520:Mf3:H280028500:I398,H280028550,H280028630 +280028550:lI115|H280028560 +280028560:lI117|H280028570 +280028570:lI112|H280028580 +280028580:lI101|H280028590 +280028590:lI114|H2800285A0 +2800285A0:lI118|H2800285B0 +2800285B0:lI105|H2800285C0 +2800285C0:lI115|H2800285D0 +2800285D0:lI111|H2800285E0 +2800285E0:lI114|H2800285F0 +2800285F0:lI46|H280028600 +280028600:lI101|H280028610 +280028610:lI114|H280028620 +280028620:lI108|N +280028630:t3:AA:supervisor,AE:start_children,I2 +280028650:lI108|N +280028660:lI114|H280028650 +280028670:lI101|H280028660 +280028680:lI46|H280028670 +280028690:lI114|H280028680 +2800286A0:lI111|H280028690 +2800286B0:lI115|H2800286A0 +2800286C0:lI105|H2800286B0 +2800286D0:lI118|H2800286C0 +2800286E0:lI114|H2800286D0 +2800286F0:lI101|H2800286E0 +280028700:lI112|H2800286F0 +280028710:lI117|H280028700 +280028720:lI115|H280028710 +280028730:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAACAAAAAHcKc3VwZXJ2aXNvcmECYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +280028758:E4E:g3AAAABMA3oLCyY6L4XTypzaMLAOL78AAAADAAAAAHcKc3VwZXJ2aXNvcmEDYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +280028780:t2:A5:label,A6:report +280028798:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAAEAAAAAHcKc3VwZXJ2aXNvcmEEYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +2800287C0:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAAIAAAAAHcKc3VwZXJ2aXNvcmEIYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +2800287E8:t4:A8:strategy,A6:period,A9:intensity,AD:auto_shutdown +280028810:t7:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules,AB:significant +280028850:E4E:g3AAAABMAXoLCyY6L4XTypzaMLAOL78AAAALAAAAAHcKc3VwZXJ2aXNvcmELYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +280028878:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +280042AD8:lA5:flush|N +280042AE8:t2:A5:error,A7:timeout +280042B00:lA4:link|H280042B10 +280042B10:lA7:monitor|N +280042B20:lI65|H280042B30 +280042B30:lI114|H280042B40 +280042B40:lI103|H280042B50 +280042B50:lI117|H280042B60 +280042B60:lI109|H280042B70 +280042B70:lI101|H280042B80 +280042B80:lI110|H280042B90 +280042B90:lI116|H280042BA0 +280042BA0:lI95|H280042BB0 +280042BB0:lI95|N +280042BC0:t3:A8:proc_lib,A6:init_p,I5 +280042BE0:t3:A9:gen_event,A7:init_it,I6 +280042C00:Mf0:H280010188: +280042C18:t2:A8:proc_lib,A5:crash +280042C30:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb +280042C58:Mf4:H280042C30:H280042CC8,H280042C90,H280042D00,H280042DE0 +280042C90:lA3:otp|H280042CA0 +280042CA0:lA4:sasl|N +280042CB0:t2:A3:tag,A4:type +280042CC8:Mf2:H280042CB0:AC:error_report,AC:crash_report +280042CF0:t1:A5:title +280042D00:Mf1:H280042CF0:H280042D20 +280042D20:lI67|H280042D30 +280042D30:lI82|H280042D40 +280042D40:lI65|H280042D50 +280042D50:lI83|H280042D60 +280042D60:lI72|H280042D70 +280042D70:lI32|H280042D80 +280042D80:lI82|H280042D90 +280042D90:lI69|H280042DA0 +280042DA0:lI80|H280042DB0 +280042DB0:lI79|H280042DC0 +280042DC0:lI82|H280042DD0 +280042DD0:lI84|N +280042DE0:E19:g3F3CHByb2NfbGlidwlyZXBvcnRfY2JhAg== +280042E08:t3:A4:line,A4:file,A3:mfa +280042E28:Mf3:H280042E08:I584,H280042E58,H280042F18 +280042E58:lI112|H280042E68 +280042E68:lI114|H280042E78 +280042E78:lI111|H280042E88 +280042E88:lI99|H280042E98 +280042E98:lI95|H280042EA8 +280042EA8:lI108|H280042EB8 +280042EB8:lI105|H280042EC8 +280042EC8:lI98|H280042ED8 +280042ED8:lI46|H280042EE8 +280042EE8:lI101|H280042EF8 +280042EF8:lI114|H280042F08 +280042F08:lI108|N +280042F18:t3:A8:proc_lib,AC:crash_report,I4 +280042F38:t2:A9:ancestors,N +280042F50:t2:AA:dictionary,N +280042F68:t2:A9:trap_exit,A5:false +280042F80:t2:AF:registered_name,N +280042F98:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +280042FC0:Mf4:H280042F98:A9:unlimited,A9:unlimited,A4:utf8,A5:false +280042FF8:lI32|H280043008 +280043008:lI32|N +280043018:lI32|N +280043028:lI126|H280043038 +280043038:lI116|H280043048 +280043048:lI115|N +280043058:lI126|H280043068 +280043068:lI115|H280043078 +280043078:lI99|H280043088 +280043088:lI114|H280043098 +280043098:lI97|H2800430A8 +2800430A8:lI115|H2800430B8 +2800430B8:lI104|H2800430C8 +2800430C8:lI101|H2800430D8 +2800430D8:lI114|H2800430E8 +2800430E8:lI58|N +2800430F8:lI48|N +280043108:lI110|H280043118 +280043118:lI101|H280043128 +280043128:lI105|H280043138 +280043138:lI103|H280043148 +280043148:lI104|H280043158 +280043158:lI98|H280043168 +280043168:lI111|H280043178 +280043178:lI117|H280043188 +280043188:lI114|H280043198 +280043198:lI115|H2800431A8 +2800431A8:lI58|H2800431B8 +2800431B8:lI32|H2800431C8 +2800431C8:lI126|N +2800431D8:lI110|H2800431E8 +2800431E8:lI101|H2800431F8 +2800431F8:lI105|H280043208 +280043208:lI103|H280043218 +280043218:lI104|H280043228 +280043228:lI98|H280043238 +280043238:lI111|H280043248 +280043248:lI117|H280043258 +280043258:lI114|H280043268 +280043268:lI115|H280043278 +280043278:lI58|N +280043288:lI110|H280043298 +280043298:lI101|H2800432A8 +2800432A8:lI105|H2800432B8 +2800432B8:lI103|H2800432C8 +2800432C8:lI104|H2800432D8 +2800432D8:lI98|H2800432E8 +2800432E8:lI111|H2800432F8 +2800432F8:lI117|H280043308 +280043308:lI114|H280043318 +280043318:lI58|N +280043328:lI58|H280043338 +280043338:lI32|N +280043348:lI32|H280043358 +280043358:lI32|H280043368 +280043368:lI32|H280043378 +280043378:lI32|N +280043388:lI105|H280043398 +280043398:lI110|H2800433A8 +2800433A8:lI105|H2800433B8 +2800433B8:lI116|H2800433C8 +2800433C8:lI105|H2800433D8 +2800433D8:lI97|H2800433E8 +2800433E8:lI108|H2800433F8 +2800433F8:lI32|H280043408 +280043408:lI99|H280043418 +280043418:lI97|H280043428 +280043428:lI108|H280043438 +280043438:lI108|H280043448 +280043448:lI58|H280043458 +280043458:lI32|N +280043468:lI112|N +280043478:lI80|N +280043488:lI59|H280043498 +280043498:lI32|N +2800434A8:lI44|H2800434B8 +2800434B8:lI32|N +2800434C8:lI116|N +2800434D8:lI10|N +2800434E8:lI108|N +2800434F8:lI114|H2800434E8 +280043508:lI101|H2800434F8 +280043518:lI46|H280043508 +280043528:lI98|H280043518 +280043538:lI105|H280043528 +280043548:lI108|H280043538 +280043558:lI95|H280043548 +280043568:lI99|H280043558 +280043578:lI111|H280043568 +280043588:lI114|H280043578 +280043598:lI112|H280043588 +2800435A8:t2:A5:label,A6:report +2800435C0:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +2800435E8:E4C:g3AAAABKAWgua8tdqRXVh3ClT3T2+hwAAAAAAAAAAHcIcHJvY19saWJhAGIDQXNeWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280043610:E4C:g3AAAABKA2gua8tdqRXVh3ClT3T2+hwAAAABAAAAAHcIcHJvY19saWJhAWIDQXNeWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280043650:t2:A5:local,AA:kernel_sup +280043668:t3:A8:strategy,A6:period,A9:intensity +280043688:Mf3:H280043668:AB:one_for_one,I3600,I4 +2800436B8:lH280043700|N +2800436C8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043700:Mf6:H2800436C8:AD:file_server_2,A9:permanent,I2000,H280043788,A6:worker,H280043748 +280043748:lA4:file|H280043758 +280043758:lAB:file_server|H280043768 +280043768:lAE:file_io_server|H280043778 +280043778:lA9:prim_file|N +280043788:t3:AB:file_server,AA:start_link,N +2800437A8:lH2800437B8|N +2800437B8:lI109|H2800437C8 +2800437C8:lI105|H2800437D8 +2800437D8:lI110|H2800437E8 +2800437E8:lI105|H2800437F8 +2800437F8:lI109|H280043808 +280043808:lI97|H280043818 +280043818:lI108|N +280043828:lH2800438B0|H280043838 +280043838:lH280043960|H280043848 +280043848:lH280043A10|H280043858 +280043858:lH280043AC0|H280043868 +280043868:lH280043B70|N +280043878:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800438B0:Mf6:H280043878:A4:user,A9:temporary,I2000,H280043908,AA:supervisor,H2800438F8 +2800438F8:lA8:user_sup|N +280043908:t3:A8:user_sup,A5:start,N +280043928:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043960:Mf6:H280043928:AA:logger_sup,A9:permanent,A8:infinity,H2800439B8,AA:supervisor,H2800439A8 +2800439A8:lAA:logger_sup|N +2800439B8:t3:AA:logger_sup,AA:start_link,N +2800439D8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043A10:Mf6:H2800439D8:AD:kernel_config,A9:permanent,I2000,H280043A68,A6:worker,H280043A58 +280043A58:lAD:kernel_config|N +280043A68:t3:AD:kernel_config,AA:start_link,N +280043A88:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043AC0:Mf6:H280043A88:AB:kernel_refc,A9:permanent,I2000,H280043B18,A6:worker,H280043B08 +280043B08:lAB:kernel_refc|N +280043B18:t3:AB:kernel_refc,AA:start_link,N +280043B38:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043B70:Mf6:H280043B38:AF:kernel_safe_sup,A9:permanent,A8:infinity,H280043BC8,AA:supervisor,H280043BB8 +280043BB8:lA6:kernel|N +280043BC8:t3:AA:supervisor,AA:start_link,H280043BE8 +280043BE8:lH280043C18|H280043BF8 +280043BF8:lA6:kernel|H280043C08 +280043C08:lA4:safe|N +280043C18:t2:A5:local,AF:kernel_safe_sup +280043C30:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043C68:Mf6:H280043C30:A7:on_load,A9:transient,I2000,H280043CC0,A6:worker,H280043CB0 +280043CB0:lA6:kernel|N +280043CC0:t3:A8:proc_lib,AA:start_link,H280043CE0 +280043CE0:lA6:kernel|H280043CF0 +280043CF0:lA4:init|H280043D00 +280043D00:lH280043D10|N +280043D10:lA7:on_load|N +280043D20:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043D58:Mf6:H280043D20:AE:standard_error,A9:temporary,I2000,H280043DB0,AA:supervisor,H280043DA0 +280043DA0:lAE:standard_error|N +280043DB0:t3:AE:standard_error,AA:start_link,N +280043DD0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043E08:Mf6:H280043DD0:AB:code_server,A9:permanent,I2000,H280043E60,A6:worker,H280043E50 +280043E50:lA4:code|N +280043E60:t3:A4:code,AA:start_link,N +280043E80:t3:A8:strategy,A6:period,A9:intensity +280043EA0:Mf3:H280043E80:AB:one_for_all,I1,I0 +280043ED0:t2:A2:ok,A5:false +280043EE8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043F20:Mf6:H280043EE8:A11:erl_signal_server,A9:permanent,I2000,H280043F68,A6:worker,A7:dynamic +280043F68:t3:A9:gen_event,AA:start_link,H280043F88 +280043F88:lH280043F98|N +280043F98:t2:A5:local,A11:erl_signal_server +280043FB0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280043FE8:Mf6:H280043FB0:A7:inet_db,A9:permanent,I2000,H280044040,A6:worker,H280044030 +280044030:lA7:inet_db|N +280044040:t3:A7:inet_db,AA:start_link,N +280044060:lH2800440B8|H280044070 +280044070:lH280044168|N +280044080:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800440B8:Mf6:H280044080:A7:net_sup,A9:permanent,A8:infinity,H280044110,AA:supervisor,H280044100 +280044100:lA10:erl_distribution|N +280044110:t3:A10:erl_distribution,AA:start_link,N +280044130:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044168:Mf6:H280044130:AC:global_group,A9:permanent,I2000,H2800441C0,A6:worker,H2800441B0 +2800441B0:lAC:global_group|N +2800441C0:t3:AC:global_group,AA:start_link,N +2800441E0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044218:Mf6:H2800441E0:A12:global_name_server,A9:permanent,I2000,H280044270,A6:worker,H280044260 +280044260:lA6:global|N +280044270:t3:A6:global,AA:start_link,N +280044290:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800442C8:Mf6:H280044290:A3:rex,A9:permanent,I2000,H280044320,A6:worker,H280044310 +280044310:lA3:rpc|N +280044320:t3:A3:rpc,AA:start_link,N +280044340:lH280044388|N +280044350:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044388:Mf6:H280044350:A7:dist_ac,A9:permanent,I2000,H2800443E0,A6:worker,H2800443D0 +2800443D0:lA7:dist_ac|N +2800443E0:t3:A7:dist_ac,AA:start_link,N +280044400:t2:A2:ok,A4:true +280044418:Mf0:H280010188: +280044430:lAF:erl_boot_server|N +280044440:lH280044498|H280044450 +280044450:lH280044548|N +280044460:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044498:Mf6:H280044460:AF:disk_log_server,A9:permanent,I2000,H2800444F0,A6:worker,H2800444E0 +2800444E0:lAF:disk_log_server|N +2800444F0:t3:AF:disk_log_server,AA:start_link,N +280044510:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044548:Mf6:H280044510:AC:disk_log_sup,A9:permanent,I1000,H2800445A0,AA:supervisor,H280044590 +280044590:lAC:disk_log_sup|N +2800445A0:t3:AC:disk_log_sup,AA:start_link,N +2800445C0:lH280044608|N +2800445D0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044608:Mf6:H2800445D0:A2:pg,A9:permanent,I1000,H280044660,A6:worker,H280044650 +280044650:lA2:pg|N +280044660:t3:A2:pg,AA:start_link,N +280044680:lH2800446C8|N +280044690:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800446C8:Mf6:H280044690:AC:timer_server,A9:permanent,I1000,H280044720,A6:worker,H280044710 +280044710:lA5:timer|N +280044720:t3:A5:timer,AA:start_link,N +280044740:lH280044788|N +280044750:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280044788:Mf6:H280044750:A12:erl_compile_server,A9:permanent,I2000,H2800447E0,A6:worker,H2800447D0 +2800447D0:lA12:erl_compile_server|N +2800447E0:t3:A12:erl_compile_server,AA:start_link,N +280044800:lI68|H280044810 +280044810:lI105|H280044820 +280044820:lI115|H280044830 +280044830:lI116|H280044840 +280044840:lI114|H280044850 +280044850:lI105|H280044860 +280044860:lI98|H280044870 +280044870:lI117|H280044880 +280044880:lI116|H280044890 +280044890:lI105|H2800448A0 +2800448A0:lI111|H2800448B0 +2800448B0:lI110|H2800448C0 +2800448C0:lI32|H2800448D0 +2800448D0:lI110|H2800448E0 +2800448E0:lI111|H2800448F0 +2800448F0:lI116|H280044900 +280044900:lI32|H280044910 +280044910:lI99|H280044920 +280044920:lI104|H280044930 +280044930:lI97|H280044940 +280044940:lI110|H280044950 +280044950:lI103|H280044960 +280044960:lI101|H280044970 +280044970:lI100|H280044980 +280044980:lI58|H280044990 +280044990:lI32|H2800449A0 +2800449A0:lI78|H2800449B0 +2800449B0:lI111|H2800449C0 +2800449C0:lI116|H2800449D0 +2800449D0:lI32|H2800449E0 +2800449E0:lI97|H2800449F0 +2800449F0:lI108|H280044A00 +280044A00:lI108|H280044A10 +280044A10:lI111|H280044A20 +280044A20:lI119|H280044A30 +280044A30:lI101|H280044A40 +280044A40:lI100|H280044A50 +280044A50:lI32|H280044A60 +280044A60:lI116|H280044A70 +280044A70:lI111|H280044A80 +280044A80:lI32|H280044A90 +280044A90:lI114|H280044AA0 +280044AA0:lI101|H280044AB0 +280044AB0:lI109|H280044AC0 +280044AC0:lI111|H280044AD0 +280044AD0:lI118|H280044AE0 +280044AE0:lI101|H280044AF0 +280044AF0:lI32|H280044B00 +280044B00:lI116|H280044B10 +280044B10:lI104|H280044B20 +280044B20:lI101|H280044B30 +280044B30:lI32|H280044B40 +280044B40:lI100|H280044B50 +280044B50:lI105|H280044B60 +280044B60:lI115|H280044B70 +280044B70:lI116|H280044B80 +280044B80:lI114|H280044B90 +280044B90:lI105|H280044BA0 +280044BA0:lI98|H280044BB0 +280044BB0:lI117|H280044BC0 +280044BC0:lI116|H280044BD0 +280044BD0:lI105|H280044BE0 +280044BE0:lI111|H280044BF0 +280044BF0:lI110|H280044C00 +280044C00:lI32|H280044C10 +280044C10:lI112|H280044C20 +280044C20:lI97|H280044C30 +280044C30:lI114|H280044C40 +280044C40:lI97|H280044C50 +280044C50:lI109|H280044C60 +280044C60:lI101|H280044C70 +280044C70:lI116|H280044C80 +280044C80:lI101|H280044C90 +280044C90:lI114|H280044CA0 +280044CA0:lI46|N +280044CB0:t2:A5:error,H280044CC8 +280044CC8:t2:A18:distribution_not_changed,H280044CE0 +280044CE0:lI78|H280044CF0 +280044CF0:lI111|H280044D00 +280044D00:lI116|H280044D10 +280044D10:lI32|H280044D20 +280044D20:lI97|H280044D30 +280044D30:lI108|H280044D40 +280044D40:lI108|H280044D50 +280044D50:lI111|H280044D60 +280044D60:lI119|H280044D70 +280044D70:lI101|H280044D80 +280044D80:lI100|H280044D90 +280044D90:lI32|H280044DA0 +280044DA0:lI116|H280044DB0 +280044DB0:lI111|H280044DC0 +280044DC0:lI32|H280044DD0 +280044DD0:lI114|H280044DE0 +280044DE0:lI101|H280044DF0 +280044DF0:lI109|H280044E00 +280044E00:lI111|H280044E10 +280044E10:lI118|H280044E20 +280044E20:lI101|H280044E30 +280044E30:lI32|H280044E40 +280044E40:lI116|H280044E50 +280044E50:lI104|H280044E60 +280044E60:lI101|H280044E70 +280044E70:lI32|H280044E80 +280044E80:lI39|H280044E90 +280044E90:lI100|H280044EA0 +280044EA0:lI105|H280044EB0 +280044EB0:lI115|H280044EC0 +280044EC0:lI116|H280044ED0 +280044ED0:lI114|H280044EE0 +280044EE0:lI105|H280044EF0 +280044EF0:lI98|H280044F00 +280044F00:lI117|H280044F10 +280044F10:lI116|H280044F20 +280044F20:lI101|H280044F30 +280044F30:lI100|H280044F40 +280044F40:lI39|H280044F50 +280044F50:lI32|H280044F60 +280044F60:lI112|H280044F70 +280044F70:lI97|H280044F80 +280044F80:lI114|H280044F90 +280044F90:lI97|H280044FA0 +280044FA0:lI109|H280044FB0 +280044FB0:lI101|H280044FC0 +280044FC0:lI116|H280044FD0 +280044FD0:lI101|H280044FE0 +280044FE0:lI114|N +280044FF0:lI68|H280045000 +280045000:lI105|H280045010 +280045010:lI115|H280045020 +280045020:lI116|H280045030 +280045030:lI114|H280045040 +280045040:lI105|H280045050 +280045050:lI98|H280045060 +280045060:lI117|H280045070 +280045070:lI116|H280045080 +280045080:lI105|H280045090 +280045090:lI111|H2800450A0 +2800450A0:lI110|H2800450B0 +2800450B0:lI32|H2800450C0 +2800450C0:lI110|H2800450D0 +2800450D0:lI111|H2800450E0 +2800450E0:lI116|H2800450F0 +2800450F0:lI32|H280045100 +280045100:lI99|H280045110 +280045110:lI104|H280045120 +280045120:lI97|H280045130 +280045130:lI110|H280045140 +280045140:lI103|H280045150 +280045150:lI101|H280045160 +280045160:lI100|H280045170 +280045170:lI58|H280045180 +280045180:lI32|H280045190 +280045190:lI78|H2800451A0 +2800451A0:lI111|H2800451B0 +2800451B0:lI116|H2800451C0 +2800451C0:lI32|H2800451D0 +2800451D0:lI97|H2800451E0 +2800451E0:lI108|H2800451F0 +2800451F0:lI108|H280045200 +280045200:lI111|H280045210 +280045210:lI119|H280045220 +280045220:lI101|H280045230 +280045230:lI100|H280045240 +280045240:lI32|H280045250 +280045250:lI116|H280045260 +280045260:lI111|H280045270 +280045270:lI32|H280045280 +280045280:lI97|H280045290 +280045290:lI100|H2800452A0 +2800452A0:lI100|H2800452B0 +2800452B0:lI32|H2800452C0 +2800452C0:lI116|H2800452D0 +2800452D0:lI104|H2800452E0 +2800452E0:lI101|H2800452F0 +2800452F0:lI32|H280045300 +280045300:lI39|H280045310 +280045310:lI100|H280045320 +280045320:lI105|H280045330 +280045330:lI115|H280045340 +280045340:lI116|H280045350 +280045350:lI114|H280045360 +280045360:lI105|H280045370 +280045370:lI98|H280045380 +280045380:lI117|H280045390 +280045390:lI116|H2800453A0 +2800453A0:lI101|H2800453B0 +2800453B0:lI100|H2800453C0 +2800453C0:lI39|H2800453D0 +2800453D0:lI32|H2800453E0 +2800453E0:lI112|H2800453F0 +2800453F0:lI97|H280045400 +280045400:lI114|H280045410 +280045410:lI97|H280045420 +280045420:lI109|H280045430 +280045430:lI101|H280045440 +280045440:lI116|H280045450 +280045450:lI101|H280045460 +280045460:lI114|H280045470 +280045470:lI46|N +280045480:t2:A5:error,H280045498 +280045498:t2:A18:distribution_not_changed,H2800454B0 +2800454B0:lI78|H2800454C0 +2800454C0:lI111|H2800454D0 +2800454D0:lI116|H2800454E0 +2800454E0:lI32|H2800454F0 +2800454F0:lI97|H280045500 +280045500:lI108|H280045510 +280045510:lI108|H280045520 +280045520:lI111|H280045530 +280045530:lI119|H280045540 +280045540:lI101|H280045550 +280045550:lI100|H280045560 +280045560:lI32|H280045570 +280045570:lI116|H280045580 +280045580:lI111|H280045590 +280045590:lI32|H2800455A0 +2800455A0:lI97|H2800455B0 +2800455B0:lI100|H2800455C0 +2800455C0:lI100|H2800455D0 +2800455D0:lI32|H2800455E0 +2800455E0:lI116|H2800455F0 +2800455F0:lI104|H280045600 +280045600:lI101|H280045610 +280045610:lI32|H280045620 +280045620:lI39|H280045630 +280045630:lI100|H280045640 +280045640:lI105|H280045650 +280045650:lI115|H280045660 +280045660:lI116|H280045670 +280045670:lI114|H280045680 +280045680:lI105|H280045690 +280045690:lI98|H2800456A0 +2800456A0:lI117|H2800456B0 +2800456B0:lI116|H2800456C0 +2800456C0:lI101|H2800456D0 +2800456D0:lI100|H2800456E0 +2800456E0:lI39|H2800456F0 +2800456F0:lI32|H280045700 +280045700:lI112|H280045710 +280045710:lI97|H280045720 +280045720:lI114|H280045730 +280045730:lI97|H280045740 +280045740:lI109|H280045750 +280045750:lI101|H280045760 +280045760:lI116|H280045770 +280045770:lI101|H280045780 +280045780:lI114|N +280045790:lI108|N +2800457A0:lI114|H280045790 +2800457B0:lI101|H2800457A0 +2800457C0:lI46|H2800457B0 +2800457D0:lI108|H2800457C0 +2800457E0:lI101|H2800457D0 +2800457F0:lI110|H2800457E0 +280045800:lI114|H2800457F0 +280045810:lI101|H280045800 +280045820:lI107|H280045810 +280045830:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280046698:lI66|H2800466A8 +2800466A8:lI97|H2800466B8 +2800466B8:lI100|H2800466C8 +2800466C8:lI32|H2800466D8 +2800466D8:lI101|H2800466E8 +2800466E8:lI110|H2800466F8 +2800466F8:lI118|H280046708 +280046708:lI105|H280046718 +280046718:lI114|H280046728 +280046728:lI111|H280046738 +280046738:lI110|H280046748 +280046748:lI109|H280046758 +280046758:lI101|H280046768 +280046768:lI110|H280046778 +280046778:lI116|H280046788 +280046788:lI32|H280046798 +280046798:lI118|H2800467A8 +2800467A8:lI97|H2800467B8 +2800467B8:lI114|H2800467C8 +2800467C8:lI105|H2800467D8 +2800467D8:lI97|H2800467E8 +2800467E8:lI98|H2800467F8 +2800467F8:lI108|H280046808 +280046808:lI101|H280046818 +280046818:lI58|H280046828 +280046828:lI32|H280046838 +280046838:lI126|H280046848 +280046848:lI116|H280046858 +280046858:lI112|H280046868 +280046868:lI32|H280046878 +280046878:lI32|H280046888 +280046888:lI65|H280046898 +280046898:lI112|H2800468A8 +2800468A8:lI112|H2800468B8 +2800468B8:lI108|H2800468C8 +2800468C8:lI105|H2800468D8 +2800468D8:lI99|H2800468E8 +2800468E8:lI97|H2800468F8 +2800468F8:lI116|H280046908 +280046908:lI105|H280046918 +280046918:lI111|H280046928 +280046928:lI110|H280046938 +280046938:lI58|H280046948 +280046948:lI32|H280046958 +280046958:lI126|H280046968 +280046968:lI112|N +280046978:lH280046988|N +280046988:t3:H2800469A8,N,H280046A30 +2800469A8:t2:H2800469C0,H2800469D8 +2800469C0:t2:A6:loaded,A2:$1 +2800469D8:tA:A4:appl,A1:_,A1:_,A2:$2,A1:_,A2:$3,A1:_,A1:_,A1:_,A1:_ +280046A30:lH280046A40|N +280046A40:t1:H280046A50 +280046A50:t3:A2:$1,A2:$2,A2:$3 +280046A70:t2:A12:application_master,A2:$1 +280046A88:t2:H280046AA0,H280046AB8 +280046AA0:t2:A6:loaded,A2:$1 +280046AB8:tA:A4:appl,A1:_,H280046B10,A1:_,A1:_,A1:_,A1:_,A1:_,A1:_,A1:_ +280046B10:t8:A9:appl_data,A1:_,A1:_,A1:_,A1:_,A2:$2,A1:_,A1:_ +280046B58:t3:A16:application_controller,A5:start,I1 +280046B78:lI105|H280046B88 +280046B88:lI110|H280046B98 +280046B98:lI118|H280046BA8 +280046BA8:lI97|H280046BB8 +280046BB8:lI108|H280046BC8 +280046BC8:lI105|H280046BD8 +280046BD8:lI100|H280046BE8 +280046BE8:lI32|H280046BF8 +280046BF8:lI99|H280046C08 +280046C08:lI111|H280046C18 +280046C18:lI110|H280046C28 +280046C28:lI102|H280046C38 +280046C38:lI105|H280046C48 +280046C48:lI103|H280046C58 +280046C58:lI32|H280046C68 +280046C68:lI100|H280046C78 +280046C78:lI97|H280046C88 +280046C88:lI116|H280046C98 +280046C98:lI97|H280046CA8 +280046CA8:lI58|H280046CB8 +280046CB8:lI32|H280046CC8 +280046CC8:lI126|H280046CD8 +280046CD8:lI116|H280046CE8 +280046CE8:lI115|N +280046CF8:lA3:set|H280046D08 +280046D08:lA6:public|H280046D18 +280046D18:lAB:named_table|H280046D28 +280046D28:lH280046D38|N +280046D38:t2:A10:read_concurrency,A4:true +280046D50:t2:A5:local,A16:application_controller +280046D68:lI101|H280046D78 +280046D78:lI114|H280046D88 +280046D88:lI114|H280046D98 +280046D98:lI111|H280046DA8 +280046DA8:lI114|H280046DB8 +280046DB8:lI32|H280046DC8 +280046DC8:lI105|H280046DD8 +280046DD8:lI110|H280046DE8 +280046DE8:lI32|H280046DF8 +280046DF8:lI99|H280046E08 +280046E08:lI111|H280046E18 +280046E18:lI110|H280046E28 +280046E28:lI102|H280046E38 +280046E38:lI105|H280046E48 +280046E48:lI103|H280046E58 +280046E58:lI32|H280046E68 +280046E68:lI114|H280046E78 +280046E78:lI101|H280046E88 +280046E88:lI97|H280046E98 +280046E98:lI100|H280046EA8 +280046EA8:lI32|H280046EB8 +280046EB8:lI102|H280046EC8 +280046EC8:lI114|H280046ED8 +280046ED8:lI111|H280046EE8 +280046EE8:lI109|H280046EF8 +280046EF8:lI32|H280046F08 +280046F08:lI102|H280046F18 +280046F18:lI105|H280046F28 +280046F28:lI108|H280046F38 +280046F38:lI101|H280046F48 +280046F48:lI32|H280046F58 +280046F58:lI100|H280046F68 +280046F68:lI101|H280046F78 +280046F78:lI115|H280046F88 +280046F88:lI99|H280046F98 +280046F98:lI114|H280046FA8 +280046FA8:lI105|H280046FB8 +280046FB8:lI112|H280046FC8 +280046FC8:lI116|H280046FD8 +280046FD8:lI111|H280046FE8 +280046FE8:lI114|H280046FF8 +280046FF8:lI32|H280047008 +280047008:lI126|H280047018 +280047018:lI116|H280047028 +280047028:lI112|H280047038 +280047038:lI32|H280047048 +280047048:lI40|H280047058 +280047058:lI126|H280047068 +280047068:lI119|H280047078 +280047078:lI41|H280047088 +280047088:lI58|H280047098 +280047098:lI32|H2800470A8 +2800470A8:lI126|H2800470B8 +2800470B8:lI116|H2800470C8 +2800470C8:lI115|N +2800470D8:lI101|H2800470E8 +2800470E8:lI114|H2800470F8 +2800470F8:lI114|H280047108 +280047108:lI111|H280047118 +280047118:lI114|H280047128 +280047128:lI32|H280047138 +280047138:lI105|H280047148 +280047148:lI110|H280047158 +280047158:lI32|H280047168 +280047168:lI99|H280047178 +280047178:lI111|H280047188 +280047188:lI110|H280047198 +280047198:lI102|H2800471A8 +2800471A8:lI105|H2800471B8 +2800471B8:lI103|H2800471C8 +2800471C8:lI32|H2800471D8 +2800471D8:lI102|H2800471E8 +2800471E8:lI105|H2800471F8 +2800471F8:lI108|H280047208 +280047208:lI101|H280047218 +280047218:lI32|H280047228 +280047228:lI126|H280047238 +280047238:lI116|H280047248 +280047248:lI112|H280047258 +280047258:lI32|H280047268 +280047268:lI40|H280047278 +280047278:lI126|H280047288 +280047288:lI119|H280047298 +280047298:lI41|H2800472A8 +2800472A8:lI58|H2800472B8 +2800472B8:lI32|H2800472C8 +2800472C8:lI126|H2800472D8 +2800472D8:lI116|H2800472E8 +2800472E8:lI115|N +2800472F8:lI100|H280047308 +280047308:lI117|H280047318 +280047318:lI112|H280047328 +280047328:lI108|H280047338 +280047338:lI105|H280047348 +280047348:lI99|H280047358 +280047358:lI97|H280047368 +280047368:lI116|H280047378 +280047378:lI101|H280047388 +280047388:lI32|H280047398 +280047398:lI97|H2800473A8 +2800473A8:lI112|H2800473B8 +2800473B8:lI112|H2800473C8 +2800473C8:lI108|H2800473D8 +2800473D8:lI105|H2800473E8 +2800473E8:lI99|H2800473F8 +2800473F8:lI97|H280047408 +280047408:lI116|H280047418 +280047418:lI105|H280047428 +280047428:lI111|H280047438 +280047438:lI110|H280047448 +280047448:lI32|H280047458 +280047458:lI99|H280047468 +280047468:lI111|H280047478 +280047478:lI110|H280047488 +280047488:lI102|H280047498 +280047498:lI105|H2800474A8 +2800474A8:lI103|H2800474B8 +2800474B8:lI58|H2800474C8 +2800474C8:lI32|N +2800474D8:lI126|H2800474E8 +2800474E8:lI116|H2800474F8 +2800474F8:lI112|N +280047508:lI59|H280047518 +280047518:lI32|H280047528 +280047528:lI97|H280047538 +280047538:lI112|H280047548 +280047548:lI112|H280047558 +280047558:lI108|H280047568 +280047568:lI105|H280047578 +280047578:lI99|H280047588 +280047588:lI97|H280047598 +280047598:lI116|H2800475A8 +2800475A8:lI105|H2800475B8 +2800475B8:lI111|H2800475C8 +2800475C8:lI110|H2800475D8 +2800475D8:lI32|H2800475E8 +2800475E8:lI110|H2800475F8 +2800475F8:lI97|H280047608 +280047608:lI109|H280047618 +280047618:lI101|H280047628 +280047628:lI32|H280047638 +280047638:lI109|H280047648 +280047648:lI117|H280047658 +280047658:lI115|H280047668 +280047668:lI116|H280047678 +280047678:lI32|H280047688 +280047688:lI98|H280047698 +280047698:lI101|H2800476A8 +2800476A8:lI32|H2800476B8 +2800476B8:lI97|H2800476C8 +2800476C8:lI110|H2800476D8 +2800476D8:lI32|H2800476E8 +2800476E8:lI97|H2800476F8 +2800476F8:lI116|H280047708 +280047708:lI111|H280047718 +280047718:lI109|N +280047728:lI97|H280047738 +280047738:lI112|H280047748 +280047748:lI112|H280047758 +280047758:lI108|H280047768 +280047768:lI105|H280047778 +280047778:lI99|H280047788 +280047788:lI97|H280047798 +280047798:lI116|H2800477A8 +2800477A8:lI105|H2800477B8 +2800477B8:lI111|H2800477C8 +2800477C8:lI110|H2800477D8 +2800477D8:lI58|H2800477E8 +2800477E8:lI32|N +2800477F8:lI59|H280047808 +280047808:lI32|H280047818 +280047818:lI112|H280047828 +280047828:lI97|H280047838 +280047838:lI114|H280047848 +280047848:lI97|H280047858 +280047858:lI109|H280047868 +280047868:lI101|H280047878 +280047878:lI116|H280047888 +280047888:lI101|H280047898 +280047898:lI114|H2800478A8 +2800478A8:lI115|H2800478B8 +2800478B8:lI32|H2800478C8 +2800478C8:lI109|H2800478D8 +2800478D8:lI117|H2800478E8 +2800478E8:lI115|H2800478F8 +2800478F8:lI116|H280047908 +280047908:lI32|H280047918 +280047918:lI98|H280047928 +280047928:lI101|H280047938 +280047938:lI32|H280047948 +280047948:lI97|H280047958 +280047958:lI32|H280047968 +280047968:lI108|H280047978 +280047978:lI105|H280047988 +280047988:lI115|H280047998 +280047998:lI116|N +2800479A8:lI105|H2800479B8 +2800479B8:lI110|H2800479C8 +2800479C8:lI118|H2800479D8 +2800479D8:lI97|H2800479E8 +2800479E8:lI108|H2800479F8 +2800479F8:lI105|H280047A08 +280047A08:lI100|H280047A18 +280047A18:lI32|H280047A28 +280047A28:lI97|H280047A38 +280047A38:lI112|H280047A48 +280047A48:lI112|H280047A58 +280047A58:lI108|H280047A68 +280047A68:lI105|H280047A78 +280047A78:lI99|H280047A88 +280047A88:lI97|H280047A98 +280047A98:lI116|H280047AA8 +280047AA8:lI105|H280047AB8 +280047AB8:lI111|H280047AC8 +280047AC8:lI110|H280047AD8 +280047AD8:lI32|H280047AE8 +280047AE8:lI99|H280047AF8 +280047AF8:lI111|H280047B08 +280047B08:lI110|H280047B18 +280047B18:lI102|H280047B28 +280047B28:lI105|H280047B38 +280047B38:lI103|H280047B48 +280047B48:lI58|H280047B58 +280047B58:lI32|N +280047B68:t2:A5:error,H280047B80 +280047B80:lI99|H280047B90 +280047B90:lI111|H280047BA0 +280047BA0:lI110|H280047BB0 +280047BB0:lI102|H280047BC0 +280047BC0:lI105|H280047BD0 +280047BD0:lI103|H280047BE0 +280047BE0:lI117|H280047BF0 +280047BF0:lI114|H280047C00 +280047C00:lI97|H280047C10 +280047C10:lI116|H280047C20 +280047C20:lI105|H280047C30 +280047C30:lI111|H280047C40 +280047C40:lI110|H280047C50 +280047C50:lI32|H280047C60 +280047C60:lI109|H280047C70 +280047C70:lI117|H280047C80 +280047C80:lI115|H280047C90 +280047C90:lI116|H280047CA0 +280047CA0:lI32|H280047CB0 +280047CB0:lI98|H280047CC0 +280047CC0:lI101|H280047CD0 +280047CD0:lI32|H280047CE0 +280047CE0:lI97|H280047CF0 +280047CF0:lI32|H280047D00 +280047D00:lI108|H280047D10 +280047D10:lI105|H280047D20 +280047D20:lI115|H280047D30 +280047D30:lI116|H280047D40 +280047D40:lI32|H280047D50 +280047D50:lI101|H280047D60 +280047D60:lI110|H280047D70 +280047D70:lI100|H280047D80 +280047D80:lI101|H280047D90 +280047D90:lI100|H280047DA0 +280047DA0:lI32|H280047DB0 +280047DB0:lI98|H280047DC0 +280047DC0:lI121|H280047DD0 +280047DD0:lI32|H280047DE0 +280047DE0:lI60|H280047DF0 +280047DF0:lI100|H280047E00 +280047E00:lI111|H280047E10 +280047E10:lI116|H280047E20 +280047E20:lI62|H280047E30 +280047E30:lI60|H280047E40 +280047E40:lI119|H280047E50 +280047E50:lI104|H280047E60 +280047E60:lI105|H280047E70 +280047E70:lI116|H280047E80 +280047E80:lI101|H280047E90 +280047E90:lI115|H280047EA0 +280047EA0:lI112|H280047EB0 +280047EB0:lI97|H280047EC0 +280047EC0:lI99|H280047ED0 +280047ED0:lI101|H280047EE0 +280047EE0:lI62|N +280047EF0:lI59|H280047F00 +280047F00:lI32|H280047F10 +280047F10:lI100|H280047F20 +280047F20:lI117|H280047F30 +280047F30:lI112|H280047F40 +280047F40:lI108|H280047F50 +280047F50:lI105|H280047F60 +280047F60:lI99|H280047F70 +280047F70:lI97|H280047F80 +280047F80:lI116|H280047F90 +280047F90:lI101|H280047FA0 +280047FA0:lI32|H280047FB0 +280047FB0:lI112|H280047FC0 +280047FC0:lI97|H280047FD0 +280047FD0:lI114|H280047FE0 +280047FE0:lI97|H280047FF0 +280047FF0:lI109|H280048000 +280048000:lI101|H280048010 +280048010:lI116|H280048020 +280048020:lI101|H280048030 +280048030:lI114|H280048040 +280048040:lI58|H280048050 +280048050:lI32|N +280048060:lI59|H280048070 +280048070:lI32|H280048080 +280048080:lI105|H280048090 +280048090:lI110|H2800480A0 +2800480A0:lI118|H2800480B0 +2800480B0:lI97|H2800480C0 +2800480C0:lI108|H2800480D0 +2800480D0:lI105|H2800480E0 +2800480E0:lI100|H2800480F0 +2800480F0:lI32|H280048100 +280048100:lI112|H280048110 +280048110:lI97|H280048120 +280048120:lI114|H280048130 +280048130:lI97|H280048140 +280048140:lI109|H280048150 +280048150:lI101|H280048160 +280048160:lI116|H280048170 +280048170:lI101|H280048180 +280048180:lI114|H280048190 +280048190:lI32|H2800481A0 +2800481A0:lI110|H2800481B0 +2800481B0:lI97|H2800481C0 +2800481C0:lI109|H2800481D0 +2800481D0:lI101|H2800481E0 +2800481E0:lI58|H2800481F0 +2800481F0:lI32|N +280048200:lI59|H280048210 +280048210:lI32|H280048220 +280048220:lI105|H280048230 +280048230:lI110|H280048240 +280048240:lI118|H280048250 +280048250:lI97|H280048260 +280048260:lI108|H280048270 +280048270:lI105|H280048280 +280048280:lI100|H280048290 +280048290:lI32|H2800482A0 +2800482A0:lI112|H2800482B0 +2800482B0:lI97|H2800482C0 +2800482C0:lI114|H2800482D0 +2800482D0:lI97|H2800482E0 +2800482E0:lI109|H2800482F0 +2800482F0:lI101|H280048300 +280048300:lI116|H280048310 +280048310:lI101|H280048320 +280048320:lI114|H280048330 +280048330:lI58|H280048340 +280048340:lI32|N +280048350:t2:A5:error,H280048368 +280048368:lI97|H280048378 +280048378:lI112|H280048388 +280048388:lI112|H280048398 +280048398:lI108|H2800483A8 +2800483A8:lI105|H2800483B8 +2800483B8:lI99|H2800483C8 +2800483C8:lI97|H2800483D8 +2800483D8:lI116|H2800483E8 +2800483E8:lI105|H2800483F8 +2800483F8:lI111|H280048408 +280048408:lI110|H280048418 +280048418:lI58|H280048428 +280048428:lI32|H280048438 +280048438:lI107|H280048448 +280048448:lI101|H280048458 +280048458:lI114|H280048468 +280048468:lI110|H280048478 +280048478:lI101|H280048488 +280048488:lI108|H280048498 +280048498:lI59|H2800484A8 +2800484A8:lI32|H2800484B8 +2800484B8:lI101|H2800484C8 +2800484C8:lI114|H2800484D8 +2800484D8:lI114|H2800484E8 +2800484E8:lI111|H2800484F8 +2800484F8:lI110|H280048508 +280048508:lI101|H280048518 +280048518:lI111|H280048528 +280048528:lI117|H280048538 +280048538:lI115|H280048548 +280048548:lI32|H280048558 +280048558:lI112|H280048568 +280048568:lI97|H280048578 +280048578:lI114|H280048588 +280048588:lI97|H280048598 +280048598:lI109|H2800485A8 +2800485A8:lI101|H2800485B8 +2800485B8:lI116|H2800485C8 +2800485C8:lI101|H2800485D8 +2800485D8:lI114|H2800485E8 +2800485E8:lI58|H2800485F8 +2800485F8:lI32|H280048608 +280048608:lI100|H280048618 +280048618:lI105|H280048628 +280048628:lI115|H280048638 +280048638:lI116|H280048648 +280048648:lI114|H280048658 +280048658:lI105|H280048668 +280048668:lI98|H280048678 +280048678:lI117|H280048688 +280048688:lI116|H280048698 +280048698:lI101|H2800486A8 +2800486A8:lI100|N +2800486B8:t2:A17:distributed_application,AB:only_loaded +2800486D0:t2:A4:EXIT,A6:normal +2800486E8:t2:AB:distributed,N +280048700:t2:A12:application_master,A1:_ +280048718:t2:A2:ok,A9:undefined +280048730:lI46|H280048740 +280048740:lI97|H280048750 +280048750:lI112|H280048760 +280048760:lI112|N +280048770:t2:A5:error,H280048788 +280048788:lI98|H280048798 +280048798:lI97|H2800487A8 +2800487A8:lI100|H2800487B8 +2800487B8:lI32|H2800487C8 +2800487C8:lI101|H2800487D8 +2800487D8:lI110|H2800487E8 +2800487E8:lI99|H2800487F8 +2800487F8:lI111|H280048808 +280048808:lI100|H280048818 +280048818:lI105|H280048828 +280048828:lI110|H280048838 +280048838:lI103|N +280048848:t2:A5:error,A6:enoent +280048860:lI97|H280048870 +280048870:lI112|H280048880 +280048880:lI112|H280048890 +280048890:lI108|H2800488A0 +2800488A0:lI105|H2800488B0 +2800488B0:lI99|H2800488C0 +2800488C0:lI97|H2800488D0 +2800488D0:lI116|H2800488E0 +2800488E0:lI105|H2800488F0 +2800488F0:lI111|H280048900 +280048900:lI110|H280048910 +280048910:lI95|H280048920 +280048920:lI99|H280048930 +280048930:lI111|H280048940 +280048940:lI110|H280048950 +280048950:lI116|H280048960 +280048960:lI114|H280048970 +280048970:lI111|H280048980 +280048980:lI108|H280048990 +280048990:lI108|H2800489A0 +2800489A0:lI101|H2800489B0 +2800489B0:lI114|H2800489C0 +2800489C0:lI58|H2800489D0 +2800489D0:lI32|H2800489E0 +2800489E0:lI126|H2800489F0 +2800489F0:lI116|H280048A00 +280048A00:lI115|H280048A10 +280048A10:lI58|H280048A20 +280048A20:lI32|H280048A30 +280048A30:lI126|H280048A40 +280048A40:lI116|H280048A50 +280048A50:lI115|H280048A60 +280048A60:lI126|H280048A70 +280048A70:lI110|N +280048A80:t1:AC:error_logger +280048A90:Mf1:H280048A80:H280048AC0 +280048AB0:t1:A3:tag +280048AC0:Mf1:H280048AB0:A5:error +280048AE0:t3:A4:line,A4:file,A3:mfa +280048B00:Mf3:H280048AE0:I1669,H280048B30,H280048CD0 +280048B30:lI97|H280048B40 +280048B40:lI112|H280048B50 +280048B50:lI112|H280048B60 +280048B60:lI108|H280048B70 +280048B70:lI105|H280048B80 +280048B80:lI99|H280048B90 +280048B90:lI97|H280048BA0 +280048BA0:lI116|H280048BB0 +280048BB0:lI105|H280048BC0 +280048BC0:lI111|H280048BD0 +280048BD0:lI110|H280048BE0 +280048BE0:lI95|H280048BF0 +280048BF0:lI99|H280048C00 +280048C00:lI111|H280048C10 +280048C10:lI110|H280048C20 +280048C20:lI116|H280048C30 +280048C30:lI114|H280048C40 +280048C40:lI111|H280048C50 +280048C50:lI108|H280048C60 +280048C60:lI108|H280048C70 +280048C70:lI101|H280048C80 +280048C80:lI114|H280048C90 +280048C90:lI46|H280048CA0 +280048CA0:lI101|H280048CB0 +280048CB0:lI114|H280048CC0 +280048CC0:lI108|N +280048CD0:t3:A16:application_controller,A16:handle_make_term_error,I3 +280048CF0:t2:N,N +280048D08:lH280048D28|H280048D18 +280048D18:lN|N +280048D28:lI46|H280048D38 +280048D38:lI99|H280048D48 +280048D48:lI111|H280048D58 +280048D58:lI110|H280048D68 +280048D68:lI102|H280048D78 +280048D78:lI105|H280048D88 +280048D88:lI103|N +280048D98:lI67|H280048DA8 +280048DA8:lI97|H280048DB8 +280048DB8:lI110|H280048DC8 +280048DC8:lI110|H280048DD8 +280048DD8:lI111|H280048DE8 +280048DE8:lI116|H280048DF8 +280048DF8:lI32|H280048E08 +280048E08:lI112|H280048E18 +280048E18:lI97|H280048E28 +280048E28:lI114|H280048E38 +280048E38:lI115|H280048E48 +280048E48:lI101|H280048E58 +280048E58:lI32|H280048E68 +280048E68:lI102|H280048E78 +280048E78:lI105|H280048E88 +280048E88:lI108|H280048E98 +280048E98:lI101|H280048EA8 +280048EA8:lI32|H280048EB8 +280048EB8:lI100|H280048EC8 +280048EC8:lI101|H280048ED8 +280048ED8:lI115|H280048EE8 +280048EE8:lI99|H280048EF8 +280048EF8:lI114|H280048F08 +280048F08:lI105|H280048F18 +280048F18:lI112|H280048F28 +280048F28:lI116|H280048F38 +280048F38:lI111|H280048F48 +280048F48:lI114|H280048F58 +280048F58:lI32|H280048F68 +280048F68:lI111|H280048F78 +280048F78:lI102|H280048F88 +280048F88:lI32|H280048F98 +280048F98:lI116|H280048FA8 +280048FA8:lI121|H280048FB8 +280048FB8:lI112|H280048FC8 +280048FC8:lI101|H280048FD8 +280048FD8:lI58|H280048FE8 +280048FE8:lI32|H280048FF8 +280048FF8:lI126|H280049008 +280049008:lI116|H280049018 +280049018:lI115|N +280049028:lI84|H280049038 +280049038:lI104|H280049048 +280049048:lI101|H280049058 +280049058:lI32|H280049068 +280049068:lI103|H280049078 +280049078:lI105|H280049088 +280049088:lI118|H280049098 +280049098:lI101|H2800490A8 +2800490A8:lI110|H2800490B8 +2800490B8:lI32|H2800490C8 +2800490C8:lI102|H2800490D8 +2800490D8:lI105|H2800490E8 +2800490E8:lI108|H2800490F8 +2800490F8:lI101|H280049108 +280049108:lI32|H280049118 +280049118:lI100|H280049128 +280049128:lI101|H280049138 +280049138:lI115|H280049148 +280049148:lI99|H280049158 +280049158:lI114|H280049168 +280049168:lI105|H280049178 +280049178:lI112|H280049188 +280049188:lI116|H280049198 +280049198:lI111|H2800491A8 +2800491A8:lI114|H2800491B8 +2800491B8:lI32|H2800491C8 +2800491C8:lI104|H2800491D8 +2800491D8:lI97|H2800491E8 +2800491E8:lI115|H2800491F8 +2800491F8:lI32|H280049208 +280049208:lI105|H280049218 +280049218:lI110|H280049228 +280049228:lI99|H280049238 +280049238:lI111|H280049248 +280049248:lI114|H280049258 +280049258:lI114|H280049268 +280049268:lI101|H280049278 +280049278:lI99|H280049288 +280049288:lI116|H280049298 +280049298:lI32|H2800492A8 +2800492A8:lI102|H2800492B8 +2800492B8:lI111|H2800492C8 +2800492C8:lI114|H2800492D8 +2800492D8:lI109|H2800492E8 +2800492E8:lI97|H2800492F8 +2800492F8:lI116|H280049308 +280049308:lI46|H280049318 +280049318:lI32|H280049328 +280049328:lI84|H280049338 +280049338:lI104|H280049348 +280049348:lI101|H280049358 +280049358:lI32|H280049368 +280049368:lI102|H280049378 +280049378:lI111|H280049388 +280049388:lI114|H280049398 +280049398:lI109|H2800493A8 +2800493A8:lI97|H2800493B8 +2800493B8:lI116|H2800493C8 +2800493C8:lI32|H2800493D8 +2800493D8:lI115|H2800493E8 +2800493E8:lI104|H2800493F8 +2800493F8:lI111|H280049408 +280049408:lI117|H280049418 +280049418:lI108|H280049428 +280049428:lI100|H280049438 +280049438:lI32|H280049448 +280049448:lI98|H280049458 +280049458:lI101|H280049468 +280049468:lI32|H280049478 +280049478:lI34|H280049488 +280049488:lI70|H280049498 +280049498:lI105|H2800494A8 +2800494A8:lI108|H2800494B8 +2800494B8:lI101|H2800494C8 +2800494C8:lI68|H2800494D8 +2800494D8:lI101|H2800494E8 +2800494E8:lI115|H2800494F8 +2800494F8:lI99|H280049508 +280049508:lI73|H280049518 +280049518:lI100|H280049528 +280049528:lI91|H280049538 +280049538:lI46|H280049548 +280049548:lI70|H280049558 +280049558:lI105|H280049568 +280049568:lI108|H280049578 +280049578:lI101|H280049588 +280049588:lI84|H280049598 +280049598:lI121|H2800495A8 +2800495A8:lI112|H2800495B8 +2800495B8:lI101|H2800495C8 +2800495C8:lI93|H2800495D8 +2800495D8:lI34|H2800495E8 +2800495E8:lI46|H2800495F8 +2800495F8:lI32|H280049608 +280049608:lI69|H280049618 +280049618:lI120|H280049628 +280049628:lI97|H280049638 +280049638:lI109|H280049648 +280049648:lI112|H280049658 +280049658:lI108|H280049668 +280049668:lI101|H280049678 +280049678:lI115|H280049688 +280049688:lI58|H280049698 +280049698:lI32|H2800496A8 +2800496A8:lI51|H2800496B8 +2800496B8:lI32|H2800496C8 +2800496C8:lI111|H2800496D8 +2800496D8:lI114|H2800496E8 +2800496E8:lI32|H2800496F8 +2800496F8:lI51|H280049708 +280049708:lI46|H280049718 +280049718:lI99|H280049728 +280049728:lI111|H280049738 +280049738:lI110|H280049748 +280049748:lI102|H280049758 +280049758:lI105|H280049768 +280049768:lI103|N +280049778:lI46|H280049788 +280049788:lI99|H280049798 +280049798:lI111|H2800497A8 +2800497A8:lI110|H2800497B8 +2800497B8:lI102|H2800497C8 +2800497C8:lI105|H2800497D8 +2800497D8:lI103|N +2800497E8:lI115|H2800497F8 +2800497F8:lI121|H280049808 +280049808:lI115|N +280049818:lI32|N +280049828:t2:A5:error,H280049840 +280049840:t3:A4:none,A9:scan_file,H280049860 +280049860:lI98|H280049870 +280049870:lI97|H280049880 +280049880:lI100|H280049890 +280049890:lI32|H2800498A0 +2800498A0:lI101|H2800498B0 +2800498B0:lI110|H2800498C0 +2800498C0:lI99|H2800498D0 +2800498D0:lI111|H2800498E0 +2800498E0:lI100|H2800498F0 +2800498F0:lI105|H280049900 +280049900:lI110|H280049910 +280049910:lI103|N +280049920:t2:A5:error,H280049938 +280049938:t3:A4:none,A9:open_file,H280049958 +280049958:lI99|H280049968 +280049968:lI111|H280049978 +280049978:lI110|H280049988 +280049988:lI102|H280049998 +280049998:lI105|H2800499A8 +2800499A8:lI103|H2800499B8 +2800499B8:lI117|H2800499C8 +2800499C8:lI114|H2800499D8 +2800499D8:lI97|H2800499E8 +2800499E8:lI116|H2800499F8 +2800499F8:lI105|H280049A08 +280049A08:lI111|H280049A18 +280049A18:lI110|H280049A28 +280049A28:lI32|H280049A38 +280049A38:lI102|H280049A48 +280049A48:lI105|H280049A58 +280049A58:lI108|H280049A68 +280049A68:lI101|H280049A78 +280049A78:lI32|H280049A88 +280049A88:lI110|H280049A98 +280049A98:lI111|H280049AA8 +280049AA8:lI116|H280049AB8 +280049AB8:lI32|H280049AC8 +280049AC8:lI102|H280049AD8 +280049AD8:lI111|H280049AE8 +280049AE8:lI117|H280049AF8 +280049AF8:lI110|H280049B08 +280049B08:lI100|N +280049B18:lI67|H280049B28 +280049B28:lI111|H280049B38 +280049B38:lI117|H280049B48 +280049B48:lI108|H280049B58 +280049B58:lI100|H280049B68 +280049B68:lI32|H280049B78 +280049B78:lI110|H280049B88 +280049B88:lI111|H280049B98 +280049B98:lI116|H280049BA8 +280049BA8:lI32|H280049BB8 +280049BB8:lI114|H280049BC8 +280049BC8:lI101|H280049BD8 +280049BD8:lI97|H280049BE8 +280049BE8:lI100|H280049BF8 +280049BF8:lI32|H280049C08 +280049C08:lI102|H280049C18 +280049C18:lI114|H280049C28 +280049C28:lI111|H280049C38 +280049C38:lI109|H280049C48 +280049C48:lI32|H280049C58 +280049C58:lI102|H280049C68 +280049C68:lI105|H280049C78 +280049C78:lI108|H280049C88 +280049C88:lI101|H280049C98 +280049C98:lI32|H280049CA8 +280049CA8:lI100|H280049CB8 +280049CB8:lI101|H280049CC8 +280049CC8:lI115|H280049CD8 +280049CD8:lI99|H280049CE8 +280049CE8:lI114|H280049CF8 +280049CF8:lI105|H280049D08 +280049D08:lI112|H280049D18 +280049D18:lI116|H280049D28 +280049D28:lI111|H280049D38 +280049D38:lI114|H280049D48 +280049D48:lI58|H280049D58 +280049D58:lI32|H280049D68 +280049D68:lI126|H280049D78 +280049D78:lI115|N +280049D88:t2:A5:error,H280049DA0 +280049DA0:t3:A4:none,A9:load_file,H280049DC0 +280049DC0:lI110|H280049DD0 +280049DD0:lI111|H280049DE0 +280049DE0:lI32|H280049DF0 +280049DF0:lI101|H280049E00 +280049E00:lI110|H280049E10 +280049E10:lI100|H280049E20 +280049E20:lI105|H280049E30 +280049E30:lI110|H280049E40 +280049E40:lI103|H280049E50 +280049E50:lI32|H280049E60 +280049E60:lI60|H280049E70 +280049E70:lI100|H280049E80 +280049E80:lI111|H280049E90 +280049E90:lI116|H280049EA0 +280049EA0:lI62|H280049EB0 +280049EB0:lI32|H280049EC0 +280049EC0:lI102|H280049ED0 +280049ED0:lI111|H280049EE0 +280049EE0:lI117|H280049EF0 +280049EF0:lI110|H280049F00 +280049F00:lI100|N +280049F10:t2:A5:error,H280049F28 +280049F28:t3:A4:none,A9:load_file,H280049F48 +280049F48:lI99|H280049F58 +280049F58:lI111|H280049F68 +280049F68:lI110|H280049F78 +280049F78:lI102|H280049F88 +280049F88:lI105|H280049F98 +280049F98:lI103|H280049FA8 +280049FA8:lI117|H280049FB8 +280049FB8:lI114|H280049FC8 +280049FC8:lI97|H280049FD8 +280049FD8:lI116|H280049FE8 +280049FE8:lI105|H280049FF8 +280049FF8:lI111|H28004A008 +28004A008:lI110|H28004A018 +28004A018:lI32|H28004A028 +28004A028:lI102|H28004A038 +28004A038:lI105|H28004A048 +28004A048:lI108|H28004A058 +28004A058:lI101|H28004A068 +28004A068:lI32|H28004A078 +28004A078:lI109|H28004A088 +28004A088:lI117|H28004A098 +28004A098:lI115|H28004A0A8 +28004A0A8:lI116|H28004A0B8 +28004A0B8:lI32|H28004A0C8 +28004A0C8:lI99|H28004A0D8 +28004A0D8:lI111|H28004A0E8 +28004A0E8:lI110|H28004A0F8 +28004A0F8:lI116|H28004A108 +28004A108:lI97|H28004A118 +28004A118:lI105|H28004A128 +28004A128:lI110|H28004A138 +28004A138:lI32|H28004A148 +28004A148:lI79|H28004A158 +28004A158:lI78|H28004A168 +28004A168:lI69|H28004A178 +28004A178:lI32|H28004A188 +28004A188:lI108|H28004A198 +28004A198:lI105|H28004A1A8 +28004A1A8:lI115|H28004A1B8 +28004A1B8:lI116|H28004A1C8 +28004A1C8:lI32|H28004A1D8 +28004A1D8:lI101|H28004A1E8 +28004A1E8:lI110|H28004A1F8 +28004A1F8:lI100|H28004A208 +28004A208:lI101|H28004A218 +28004A218:lI100|H28004A228 +28004A228:lI32|H28004A238 +28004A238:lI98|H28004A248 +28004A248:lI121|H28004A258 +28004A258:lI32|H28004A268 +28004A268:lI60|H28004A278 +28004A278:lI100|H28004A288 +28004A288:lI111|H28004A298 +28004A298:lI116|H28004A2A8 +28004A2A8:lI62|N +28004A2B8:Mf0:H280010188: +28004A2D0:t2:A16:application_controller,A8:progress +28004A2E8:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb +28004A310:Mf4:H28004A2E8:H28004A388,H28004A348,H28004A3F0,H28004A500 +28004A348:lA3:otp|H28004A358 +28004A358:lA4:sasl|N +28004A368:t3:A3:tag,A4:type,A9:report_cb +28004A388:Mf3:H28004A368:AB:info_report,A8:progress,H28004A3B8 +28004A3B8:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAQ== +28004A3E0:t1:A5:title +28004A3F0:Mf1:H28004A3E0:H28004A410 +28004A410:lI80|H28004A420 +28004A420:lI82|H28004A430 +28004A430:lI79|H28004A440 +28004A440:lI71|H28004A450 +28004A450:lI82|H28004A460 +28004A460:lI69|H28004A470 +28004A470:lI83|H28004A480 +28004A480:lI83|H28004A490 +28004A490:lI32|H28004A4A0 +28004A4A0:lI82|H28004A4B0 +28004A4B0:lI69|H28004A4C0 +28004A4C0:lI80|H28004A4D0 +28004A4D0:lI79|H28004A4E0 +28004A4E0:lI82|H28004A4F0 +28004A4F0:lI84|N +28004A500:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAg== +28004A528:t3:A4:line,A4:file,A3:mfa +28004A548:Mf3:H28004A528:I2117,H28004A578,H28004A718 +28004A578:lI97|H28004A588 +28004A588:lI112|H28004A598 +28004A598:lI112|H28004A5A8 +28004A5A8:lI108|H28004A5B8 +28004A5B8:lI105|H28004A5C8 +28004A5C8:lI99|H28004A5D8 +28004A5D8:lI97|H28004A5E8 +28004A5E8:lI116|H28004A5F8 +28004A5F8:lI105|H28004A608 +28004A608:lI111|H28004A618 +28004A618:lI110|H28004A628 +28004A628:lI95|H28004A638 +28004A638:lI99|H28004A648 +28004A648:lI111|H28004A658 +28004A658:lI110|H28004A668 +28004A668:lI116|H28004A678 +28004A678:lI114|H28004A688 +28004A688:lI111|H28004A698 +28004A698:lI108|H28004A6A8 +28004A6A8:lI108|H28004A6B8 +28004A6B8:lI101|H28004A6C8 +28004A6C8:lI114|H28004A6D8 +28004A6D8:lI46|H28004A6E8 +28004A6E8:lI101|H28004A6F8 +28004A6F8:lI114|H28004A708 +28004A708:lI108|N +28004A718:t3:A16:application_controller,AC:info_started,I2 +28004A738:t2:A16:application_controller,A4:exit +28004A750:t3:AC:error_logger,A6:domain,A9:report_cb +28004A770:Mf3:H28004A750:H28004A7D0,H28004A7A0,H28004A828 +28004A7A0:lA3:otp|N +28004A7B0:t3:A3:tag,A4:type,A9:report_cb +28004A7D0:Mf3:H28004A7B0:AB:info_report,A8:std_info,H28004A800 +28004A800:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAQ== +28004A828:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAg== +28004A850:t3:A4:line,A4:file,A3:mfa +28004A870:Mf3:H28004A850:I2129,H28004A8A0,H28004AA40 +28004A8A0:lI97|H28004A8B0 +28004A8B0:lI112|H28004A8C0 +28004A8C0:lI112|H28004A8D0 +28004A8D0:lI108|H28004A8E0 +28004A8E0:lI105|H28004A8F0 +28004A8F0:lI99|H28004A900 +28004A900:lI97|H28004A910 +28004A910:lI116|H28004A920 +28004A920:lI105|H28004A930 +28004A930:lI111|H28004A940 +28004A940:lI110|H28004A950 +28004A950:lI95|H28004A960 +28004A960:lI99|H28004A970 +28004A970:lI111|H28004A980 +28004A980:lI110|H28004A990 +28004A990:lI116|H28004A9A0 +28004A9A0:lI114|H28004A9B0 +28004A9B0:lI111|H28004A9C0 +28004A9C0:lI108|H28004A9D0 +28004A9D0:lI108|H28004A9E0 +28004A9E0:lI101|H28004A9F0 +28004A9F0:lI114|H28004AA00 +28004AA00:lI46|H28004AA10 +28004AA10:lI101|H28004AA20 +28004AA20:lI114|H28004AA30 +28004AA30:lI108|N +28004AA40:t3:A16:application_controller,AB:info_exited,I3 +28004AA60:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +28004AA88:Mf4:H28004AA60:A9:unlimited,A9:unlimited,A4:utf8,A5:false +28004AAC0:lI46|N +28004AAD0:lI46|H28004AAE0 +28004AAE0:lI32|H28004AAF0 +28004AAF0:lI83|H28004AB00 +28004AB00:lI116|H28004AB10 +28004AB10:lI97|H28004AB20 +28004AB20:lI114|H28004AB30 +28004AB30:lI116|H28004AB40 +28004AB40:lI101|H28004AB50 +28004AB50:lI100|H28004AB60 +28004AB60:lI32|H28004AB70 +28004AB70:lI97|H28004AB80 +28004AB80:lI116|H28004AB90 +28004AB90:lI58|H28004ABA0 +28004ABA0:lI32|N +28004ABB0:lI65|H28004ABC0 +28004ABC0:lI112|H28004ABD0 +28004ABD0:lI112|H28004ABE0 +28004ABE0:lI108|H28004ABF0 +28004ABF0:lI105|H28004AC00 +28004AC00:lI99|H28004AC10 +28004AC10:lI97|H28004AC20 +28004AC20:lI116|H28004AC30 +28004AC30:lI105|H28004AC40 +28004AC40:lI111|H28004AC50 +28004AC50:lI110|H28004AC60 +28004AC60:lI58|H28004AC70 +28004AC70:lI32|N +28004AC80:lH28004AC90|N +28004AC90:lI46|N +28004ACA0:lI46|H28004ACB0 +28004ACB0:lI32|H28004ACC0 +28004ACC0:lI84|H28004ACD0 +28004ACD0:lI121|H28004ACE0 +28004ACE0:lI112|H28004ACF0 +28004ACF0:lI101|H28004AD00 +28004AD00:lI58|H28004AD10 +28004AD10:lI32|N +28004AD20:lI46|H28004AD30 +28004AD30:lI32|H28004AD40 +28004AD40:lI69|H28004AD50 +28004AD50:lI120|H28004AD60 +28004AD60:lI105|H28004AD70 +28004AD70:lI116|H28004AD80 +28004AD80:lI101|H28004AD90 +28004AD90:lI100|H28004ADA0 +28004ADA0:lI58|H28004ADB0 +28004ADB0:lI32|N +28004ADC0:lH28004ADD0|N +28004ADD0:lI126|H28004ADE0 +28004ADE0:lI110|N +28004ADF0:lI32|H28004AE00 +28004AE00:lI32|H28004AE10 +28004AE10:lI32|H28004AE20 +28004AE20:lI32|H28004AE30 +28004AE30:lI115|H28004AE40 +28004AE40:lI116|H28004AE50 +28004AE50:lI97|H28004AE60 +28004AE60:lI114|H28004AE70 +28004AE70:lI116|H28004AE80 +28004AE80:lI101|H28004AE90 +28004AE90:lI100|H28004AEA0 +28004AEA0:lI95|H28004AEB0 +28004AEB0:lI97|H28004AEC0 +28004AEC0:lI116|H28004AED0 +28004AED0:lI58|H28004AEE0 +28004AEE0:lI32|N +28004AEF0:lI126|H28004AF00 +28004AF00:lI110|N +28004AF10:lI32|H28004AF20 +28004AF20:lI32|H28004AF30 +28004AF30:lI32|H28004AF40 +28004AF40:lI32|H28004AF50 +28004AF50:lI97|H28004AF60 +28004AF60:lI112|H28004AF70 +28004AF70:lI112|H28004AF80 +28004AF80:lI108|H28004AF90 +28004AF90:lI105|H28004AFA0 +28004AFA0:lI99|H28004AFB0 +28004AFB0:lI97|H28004AFC0 +28004AFC0:lI116|H28004AFD0 +28004AFD0:lI105|H28004AFE0 +28004AFE0:lI111|H28004AFF0 +28004AFF0:lI110|H28004B000 +28004B000:lI58|H28004B010 +28004B010:lI32|N +28004B020:lI32|H28004B030 +28004B030:lI32|H28004B040 +28004B040:lI32|H28004B050 +28004B050:lI32|H28004B060 +28004B060:lI116|H28004B070 +28004B070:lI121|H28004B080 +28004B080:lI112|H28004B090 +28004B090:lI101|H28004B0A0 +28004B0A0:lI58|H28004B0B0 +28004B0B0:lI32|N +28004B0C0:lI32|H28004B0D0 +28004B0D0:lI32|H28004B0E0 +28004B0E0:lI32|H28004B0F0 +28004B0F0:lI32|H28004B100 +28004B100:lI101|H28004B110 +28004B110:lI120|H28004B120 +28004B120:lI105|H28004B130 +28004B130:lI116|H28004B140 +28004B140:lI101|H28004B150 +28004B150:lI100|H28004B160 +28004B160:lI58|H28004B170 +28004B170:lI32|N +28004B180:lI112|N +28004B190:lI80|N +28004B1A0:lI48|N +28004B1B0:lI116|N +28004B1C0:t3:A3:env,A6:kernel,AB:permissions +28004B1E0:lI126|H28004B1F0 +28004B1F0:lI48|H28004B200 +28004B200:lI112|N +28004B210:lI83|H28004B220 +28004B220:lI108|H28004B230 +28004B230:lI111|H28004B240 +28004B240:lI119|H28004B250 +28004B250:lI32|H28004B260 +28004B260:lI45|H28004B270 +28004B270:lI99|H28004B280 +28004B280:lI111|H28004B290 +28004B290:lI110|H28004B2A0 +28004B2A0:lI102|H28004B2B0 +28004B2B0:lI105|H28004B2C0 +28004B2C0:lI103|H28004B2D0 +28004B2D0:lI102|H28004B2E0 +28004B2E0:lI100|H28004B2F0 +28004B2F0:lI32|H28004B300 +28004B300:lI102|H28004B310 +28004B310:lI105|H28004B320 +28004B320:lI108|H28004B330 +28004B330:lI101|H28004B340 +28004B340:lI32|H28004B350 +28004B350:lI100|H28004B360 +28004B360:lI101|H28004B370 +28004B370:lI115|H28004B380 +28004B380:lI99|H28004B390 +28004B390:lI114|H28004B3A0 +28004B3A0:lI105|H28004B3B0 +28004B3B0:lI112|H28004B3C0 +28004B3C0:lI116|H28004B3D0 +28004B3D0:lI111|H28004B3E0 +28004B3E0:lI114|H28004B3F0 +28004B3F0:lI32|H28004B400 +28004B400:lI126|H28004B410 +28004B410:lI112|H28004B420 +28004B420:lI46|H28004B430 +28004B430:lI32|H28004B440 +28004B440:lI84|H28004B450 +28004B450:lI104|H28004B460 +28004B460:lI101|H28004B470 +28004B470:lI32|H28004B480 +28004B480:lI115|H28004B490 +28004B490:lI121|H28004B4A0 +28004B4A0:lI115|H28004B4B0 +28004B4B0:lI116|H28004B4C0 +28004B4C0:lI101|H28004B4D0 +28004B4D0:lI109|H28004B4E0 +28004B4E0:lI32|H28004B4F0 +28004B4F0:lI119|H28004B500 +28004B500:lI105|H28004B510 +28004B510:lI108|H28004B520 +28004B520:lI108|H28004B530 +28004B530:lI32|H28004B540 +28004B540:lI99|H28004B550 +28004B550:lI111|H28004B560 +28004B560:lI110|H28004B570 +28004B570:lI116|H28004B580 +28004B580:lI105|H28004B590 +28004B590:lI110|H28004B5A0 +28004B5A0:lI117|H28004B5B0 +28004B5B0:lI101|H28004B5C0 +28004B5C0:lI32|H28004B5D0 +28004B5D0:lI116|H28004B5E0 +28004B5E0:lI111|H28004B5F0 +28004B5F0:lI32|H28004B600 +28004B600:lI114|H28004B610 +28004B610:lI101|H28004B620 +28004B620:lI97|H28004B630 +28004B630:lI100|H28004B640 +28004B640:lI32|H28004B650 +28004B650:lI102|H28004B660 +28004B660:lI114|H28004B670 +28004B670:lI111|H28004B680 +28004B680:lI109|H28004B690 +28004B690:lI32|H28004B6A0 +28004B6A0:lI116|H28004B6B0 +28004B6B0:lI104|H28004B6C0 +28004B6C0:lI101|H28004B6D0 +28004B6D0:lI32|H28004B6E0 +28004B6E0:lI102|H28004B6F0 +28004B6F0:lI105|H28004B700 +28004B700:lI108|H28004B710 +28004B710:lI101|H28004B720 +28004B720:lI32|H28004B730 +28004B730:lI100|H28004B740 +28004B740:lI101|H28004B750 +28004B750:lI115|H28004B760 +28004B760:lI99|H28004B770 +28004B770:lI114|H28004B780 +28004B780:lI105|H28004B790 +28004B790:lI112|H28004B7A0 +28004B7A0:lI116|H28004B7B0 +28004B7B0:lI111|H28004B7C0 +28004B7C0:lI114|H28004B7D0 +28004B7D0:lI32|H28004B7E0 +28004B7E0:lI97|H28004B7F0 +28004B7F0:lI110|H28004B800 +28004B800:lI100|H28004B810 +28004B810:lI32|H28004B820 +28004B820:lI119|H28004B830 +28004B830:lI105|H28004B840 +28004B840:lI108|H28004B850 +28004B850:lI108|H28004B860 +28004B860:lI32|H28004B870 +28004B870:lI98|H28004B880 +28004B880:lI101|H28004B890 +28004B890:lI32|H28004B8A0 +28004B8A0:lI98|H28004B8B0 +28004B8B0:lI108|H28004B8C0 +28004B8C0:lI111|H28004B8D0 +28004B8D0:lI99|H28004B8E0 +28004B8E0:lI107|H28004B8F0 +28004B8F0:lI101|H28004B900 +28004B900:lI100|H28004B910 +28004B910:lI32|H28004B920 +28004B920:lI117|H28004B930 +28004B930:lI110|H28004B940 +28004B940:lI116|H28004B950 +28004B950:lI105|H28004B960 +28004B960:lI108|H28004B970 +28004B970:lI32|H28004B980 +28004B980:lI101|H28004B990 +28004B990:lI110|H28004B9A0 +28004B9A0:lI100|H28004B9B0 +28004B9B0:lI32|H28004B9C0 +28004B9C0:lI111|H28004B9D0 +28004B9D0:lI102|H28004B9E0 +28004B9E0:lI32|H28004B9F0 +28004B9F0:lI102|H28004BA00 +28004BA00:lI105|H28004BA10 +28004BA10:lI108|H28004BA20 +28004BA20:lI101|H28004BA30 +28004BA30:lI32|H28004BA40 +28004BA40:lI105|H28004BA50 +28004BA50:lI115|H28004BA60 +28004BA60:lI32|H28004BA70 +28004BA70:lI114|H28004BA80 +28004BA80:lI101|H28004BA90 +28004BA90:lI99|H28004BAA0 +28004BAA0:lI101|H28004BAB0 +28004BAB0:lI105|H28004BAC0 +28004BAC0:lI118|H28004BAD0 +28004BAD0:lI101|H28004BAE0 +28004BAE0:lI100|H28004BAF0 +28004BAF0:lI46|N +28004BB00:t3:A4:line,A4:file,A3:mfa +28004BB20:Mf3:H28004BB00:I2094,H28004BB50,H28004BCF0 +28004BB50:lI97|H28004BB60 +28004BB60:lI112|H28004BB70 +28004BB70:lI112|H28004BB80 +28004BB80:lI108|H28004BB90 +28004BB90:lI105|H28004BBA0 +28004BBA0:lI99|H28004BBB0 +28004BBB0:lI97|H28004BBC0 +28004BBC0:lI116|H28004BBD0 +28004BBD0:lI105|H28004BBE0 +28004BBE0:lI111|H28004BBF0 +28004BBF0:lI110|H28004BC00 +28004BC00:lI95|H28004BC10 +28004BC10:lI99|H28004BC20 +28004BC20:lI111|H28004BC30 +28004BC30:lI110|H28004BC40 +28004BC40:lI116|H28004BC50 +28004BC50:lI114|H28004BC60 +28004BC60:lI111|H28004BC70 +28004BC70:lI108|H28004BC80 +28004BC80:lI108|H28004BC90 +28004BC90:lI101|H28004BCA0 +28004BCA0:lI114|H28004BCB0 +28004BCB0:lI46|H28004BCC0 +28004BCC0:lI101|H28004BCD0 +28004BCD0:lI114|H28004BCE0 +28004BCE0:lI108|N +28004BCF0:t3:A16:application_controller,A1B:read_fd_until_end_and_close,I3 +28004BD10:lA4:read|N +28004BD20:lI73|H28004BD30 +28004BD30:lI110|H28004BD40 +28004BD40:lI118|H28004BD50 +28004BD50:lI97|H28004BD60 +28004BD60:lI108|H28004BD70 +28004BD70:lI105|H28004BD80 +28004BD80:lI100|H28004BD90 +28004BD90:lI32|H28004BDA0 +28004BDA0:lI102|H28004BDB0 +28004BDB0:lI105|H28004BDC0 +28004BDC0:lI108|H28004BDD0 +28004BDD0:lI101|H28004BDE0 +28004BDE0:lI32|H28004BDF0 +28004BDF0:lI100|H28004BE00 +28004BE00:lI101|H28004BE10 +28004BE10:lI115|H28004BE20 +28004BE20:lI99|H28004BE30 +28004BE30:lI114|H28004BE40 +28004BE40:lI105|H28004BE50 +28004BE50:lI112|H28004BE60 +28004BE60:lI116|H28004BE70 +28004BE70:lI111|H28004BE80 +28004BE80:lI114|N +28004BE90:lI134217728|N +28004BEA0:lI77|H28004BEB0 +28004BEB0:lI97|H28004BEC0 +28004BEC0:lI120|H28004BED0 +28004BED0:lI32|H28004BEE0 +28004BEE0:lI115|H28004BEF0 +28004BEF0:lI105|H28004BF00 +28004BF00:lI122|H28004BF10 +28004BF10:lI101|H28004BF20 +28004BF20:lI32|H28004BF30 +28004BF30:lI126|H28004BF40 +28004BF40:lI119|H28004BF50 +28004BF50:lI32|H28004BF60 +28004BF60:lI98|H28004BF70 +28004BF70:lI121|H28004BF80 +28004BF80:lI116|H28004BF90 +28004BF90:lI101|H28004BFA0 +28004BFA0:lI115|H28004BFB0 +28004BFB0:lI32|H28004BFC0 +28004BFC0:lI101|H28004BFD0 +28004BFD0:lI120|H28004BFE0 +28004BFE0:lI99|H28004BFF0 +28004BFF0:lI101|H28004C000 +28004C000:lI101|H28004C010 +28004C010:lI100|H28004C020 +28004C020:lI101|H28004C030 +28004C030:lI100|N +28004C040:lI48|H28004C050 +28004C050:lI49|H28004C060 +28004C060:lI50|H28004C070 +28004C070:lI51|H28004C080 +28004C080:lI52|H28004C090 +28004C090:lI53|H28004C0A0 +28004C0A0:lI54|H28004C0B0 +28004C0B0:lI55|H28004C0C0 +28004C0C0:lI56|H28004C0D0 +28004C0D0:lI57|N +28004C0E0:lI126|H28004C0F0 +28004C0F0:lI116|H28004C100 +28004C100:lI112|H28004C110 +28004C110:lI58|H28004C120 +28004C120:lI32|H28004C130 +28004C130:lI126|H28004C140 +28004C140:lI119|H28004C150 +28004C150:lI58|H28004C160 +28004C160:lI32|H28004C170 +28004C170:lI126|H28004C180 +28004C180:lI116|H28004C190 +28004C190:lI115|H28004C1A0 +28004C1A0:lI126|H28004C1B0 +28004C1B0:lI110|N +28004C1C0:t3:A4:line,A4:file,A3:mfa +28004C1E0:Mf3:H28004C1C0:I1588,H28004C210,H28004C3B0 +28004C210:lI97|H28004C220 +28004C220:lI112|H28004C230 +28004C230:lI112|H28004C240 +28004C240:lI108|H28004C250 +28004C250:lI105|H28004C260 +28004C260:lI99|H28004C270 +28004C270:lI97|H28004C280 +28004C280:lI116|H28004C290 +28004C290:lI105|H28004C2A0 +28004C2A0:lI111|H28004C2B0 +28004C2B0:lI110|H28004C2C0 +28004C2C0:lI95|H28004C2D0 +28004C2D0:lI99|H28004C2E0 +28004C2E0:lI111|H28004C2F0 +28004C2F0:lI110|H28004C300 +28004C300:lI116|H28004C310 +28004C310:lI114|H28004C320 +28004C320:lI111|H28004C330 +28004C330:lI108|H28004C340 +28004C340:lI108|H28004C350 +28004C350:lI101|H28004C360 +28004C360:lI114|H28004C370 +28004C370:lI46|H28004C380 +28004C380:lI101|H28004C390 +28004C390:lI114|H28004C3A0 +28004C3A0:lI108|N +28004C3B0:t3:A16:application_controller,AE:do_change_apps,I3 +28004C3D0:lI108|N +28004C3E0:lI114|H28004C3D0 +28004C3F0:lI101|H28004C3E0 +28004C400:lI46|H28004C3F0 +28004C410:lI114|H28004C400 +28004C420:lI101|H28004C410 +28004C430:lI108|H28004C420 +28004C440:lI108|H28004C430 +28004C450:lI111|H28004C440 +28004C460:lI114|H28004C450 +28004C470:lI116|H28004C460 +28004C480:lI110|H28004C470 +28004C490:lI111|H28004C480 +28004C4A0:lI99|H28004C490 +28004C4B0:lI95|H28004C4A0 +28004C4C0:lI110|H28004C4B0 +28004C4D0:lI111|H28004C4C0 +28004C4E0:lI105|H28004C4D0 +28004C4F0:lI116|H28004C4E0 +28004C500:lI97|H28004C4F0 +28004C510:lI99|H28004C500 +28004C520:lI105|H28004C510 +28004C530:lI108|H28004C520 +28004C540:lI112|H28004C530 +28004C550:lI112|H28004C540 +28004C560:lI97|H28004C550 +28004C570:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAABAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEBYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C598:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAEAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEEYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C5C0:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAFAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEFYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C5E8:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAGAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEGYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C610:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAIAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEIYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C638:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAJAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEJYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C660:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAMAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEMYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C688:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAANAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmENYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C6B0:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAPAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEPYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C6D8:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAARAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmERYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C700:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAASAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmESYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C728:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAATAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmETYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C750:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAUAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEUYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28004C778:t2:A5:label,A6:report +28004C790:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +280052908:lAB:named_table|H280052918 +280052918:lA9:protected|N +280052928:lI108|H280052938 +280052938:lI105|H280052948 +280052948:lI98|N +280052958:lI46|N +280052968:lI69|H280052978 +280052978:lI82|H280052988 +280052988:lI76|H280052998 +280052998:lI95|H2800529A8 +2800529A8:lI76|H2800529B8 +2800529B8:lI73|H2800529C8 +2800529C8:lI66|H2800529D8 +2800529D8:lI83|N +2800529E8:lA5:flush|N +2800529F8:t2:A6:module,AB:code_server +280052A10:lI32|H280052A20 +280052A20:lI42|H280052A30 +280052A30:lI42|H280052A40 +280052A40:lI32|H280052A50 +280052A50:lI67|H280052A60 +280052A60:lI111|H280052A70 +280052A70:lI100|H280052A80 +280052A80:lI101|H280052A90 +280052A90:lI115|H280052AA0 +280052AA0:lI101|H280052AB0 +280052AB0:lI114|H280052AC0 +280052AC0:lI118|H280052AD0 +280052AD0:lI101|H280052AE0 +280052AE0:lI114|H280052AF0 +280052AF0:lI42|H280052B00 +280052B00:lI42|H280052B10 +280052B10:lI42|H280052B20 +280052B20:lI32|H280052B30 +280052B30:lI105|H280052B40 +280052B40:lI103|H280052B50 +280052B50:lI110|H280052B60 +280052B60:lI111|H280052B70 +280052B70:lI114|H280052B80 +280052B80:lI105|H280052B90 +280052B90:lI110|H280052BA0 +280052BA0:lI103|H280052BB0 +280052BB0:lI32|H280052BC0 +280052BC0:lI126|H280052BD0 +280052BD0:lI119|H280052BE0 +280052BE0:lI126|H280052BF0 +280052BF0:lI110|H280052C00 +280052C00:lI32|N +280052C10:lI0|N +280052C20:lI101|H280052C30 +280052C30:lI98|H280052C40 +280052C40:lI105|H280052C50 +280052C50:lI110|N +280052C60:lH280052C70|N +280052C70:lI101|H280052C80 +280052C80:lI98|H280052C90 +280052C90:lI105|H280052CA0 +280052CA0:lI110|N +280052CB0:t2:A2:ok,H280052CC8 +280052CC8:lH280052CD8|N +280052CD8:lH280052CE8|N +280052CE8:lI102|H280052CF8 +280052CF8:lI97|H280052D08 +280052D08:lI108|H280052D18 +280052D18:lI115|H280052D28 +280052D28:lI101|N +280052D38:lI45|N +280052D48:t2:A5:error,AD:bad_directory +280052D60:lAB:named_table|H280052D70 +280052D70:lA6:public|N +280052D80:lI101|H280052D90 +280052D90:lI114|H280052DA0 +280052DA0:lI116|H280052DB0 +280052DB0:lI115|N +280052DC0:t2:A5:error,A8:bad_name +280052DD8:lI99|H280052DE8 +280052DE8:lI111|H280052DF8 +280052DF8:lI109|H280052E08 +280052E08:lI112|H280052E18 +280052E18:lI105|H280052E28 +280052E28:lI108|H280052E38 +280052E38:lI101|H280052E48 +280052E48:lI114|N +280052E58:lI67|H280052E68 +280052E68:lI97|H280052E78 +280052E78:lI110|H280052E88 +280052E88:lI39|H280052E98 +280052E98:lI116|H280052EA8 +280052EA8:lI32|H280052EB8 +280052EB8:lI108|H280052EC8 +280052EC8:lI111|H280052ED8 +280052ED8:lI97|H280052EE8 +280052EE8:lI100|H280052EF8 +280052EF8:lI32|H280052F08 +280052F08:lI109|H280052F18 +280052F18:lI111|H280052F28 +280052F28:lI100|H280052F38 +280052F38:lI117|H280052F48 +280052F48:lI108|H280052F58 +280052F58:lI101|H280052F68 +280052F68:lI32|H280052F78 +280052F78:lI39|H280052F88 +280052F88:lI126|H280052F98 +280052F98:lI119|H280052FA8 +280052FA8:lI39|H280052FB8 +280052FB8:lI32|H280052FC8 +280052FC8:lI116|H280052FD8 +280052FD8:lI104|H280052FE8 +280052FE8:lI97|H280052FF8 +280052FF8:lI116|H280053008 +280053008:lI32|H280053018 +280053018:lI114|H280053028 +280053028:lI101|H280053038 +280053038:lI115|H280053048 +280053048:lI105|H280053058 +280053058:lI100|H280053068 +280053068:lI101|H280053078 +280053078:lI115|H280053088 +280053088:lI32|H280053098 +280053098:lI105|H2800530A8 +2800530A8:lI110|H2800530B8 +2800530B8:lI32|H2800530C8 +2800530C8:lI115|H2800530D8 +2800530D8:lI116|H2800530E8 +2800530E8:lI105|H2800530F8 +2800530F8:lI99|H280053108 +280053108:lI107|H280053118 +280053118:lI121|H280053128 +280053128:lI32|H280053138 +280053138:lI100|H280053148 +280053148:lI105|H280053158 +280053158:lI114|H280053168 +280053168:lI10|N +280053178:t2:A5:error,A10:sticky_directory +280053190:t2:A4:true,A7:nocache +2800531A8:t2:A5:false,A5:cache +2800531C0:lI58|H2800531D0 +2800531D0:lI47|N +2800531E0:t2:A5:error,A7:on_load +2800531F8:t2:A5:error,A8:deadlock +280053210:t2:A5:error,AF:on_load_failure +280053228:lH280053238|N +280053238:t3:H280053258,H280053270,H280053298 +280053258:t2:A2:$1,A1:_ +280053270:lH280053280|N +280053280:t2:A7:is_atom,A2:$1 +280053298:lA2:$_|N +2800532A8:Mf0:H280010188: +2800532C0:t1:A3:tag +2800532D0:Mf1:H2800532C0:A5:error +2800532F0:t2:AB:code_server,A5:error +280053308:t1:A3:tag +280053318:Mf1:H280053308:A8:info_msg +280053338:lI10|N +280053348:lI84|H280053358 +280053358:lI104|H280053368 +280053368:lI101|H280053378 +280053378:lI32|H280053388 +280053388:lI111|H280053398 +280053398:lI110|H2800533A8 +2800533A8:lI95|H2800533B8 +2800533B8:lI108|H2800533C8 +2800533C8:lI111|H2800533D8 +2800533D8:lI97|H2800533E8 +2800533E8:lI100|H2800533F8 +2800533F8:lI32|H280053408 +280053408:lI102|H280053418 +280053418:lI117|H280053428 +280053428:lI110|H280053438 +280053438:lI99|H280053448 +280053448:lI116|H280053458 +280053458:lI105|H280053468 +280053468:lI111|H280053478 +280053478:lI110|H280053488 +280053488:lI32|H280053498 +280053498:lI102|H2800534A8 +2800534A8:lI111|H2800534B8 +2800534B8:lI114|H2800534C8 +2800534C8:lI32|H2800534D8 +2800534D8:lI109|H2800534E8 +2800534E8:lI111|H2800534F8 +2800534F8:lI100|H280053508 +280053508:lI117|H280053518 +280053518:lI108|H280053528 +280053528:lI101|H280053538 +280053538:lI32|H280053548 +280053548:lI126|H280053558 +280053558:lI115|H280053568 +280053568:lI32|H280053578 +280053578:lI114|H280053588 +280053588:lI101|H280053598 +280053598:lI116|H2800535A8 +2800535A8:lI117|H2800535B8 +2800535B8:lI114|H2800535C8 +2800535C8:lI110|H2800535D8 +2800535D8:lI101|H2800535E8 +2800535E8:lI100|H2800535F8 +2800535F8:lI58|H280053608 +280053608:lI126|H280053618 +280053618:lI110|H280053628 +280053628:lI126|H280053638 +280053638:lI80|H280053648 +280053648:lI10|N +280053658:lI76|H280053668 +280053668:lI111|H280053678 +280053678:lI97|H280053688 +280053688:lI100|H280053698 +280053698:lI105|H2800536A8 +2800536A8:lI110|H2800536B8 +2800536B8:lI103|H2800536C8 +2800536C8:lI32|H2800536D8 +2800536D8:lI111|H2800536E8 +2800536E8:lI102|H2800536F8 +2800536F8:lI32|H280053708 +280053708:lI126|H280053718 +280053718:lI116|H280053728 +280053728:lI115|H280053738 +280053738:lI32|H280053748 +280053748:lI102|H280053758 +280053758:lI97|H280053768 +280053768:lI105|H280053778 +280053778:lI108|H280053788 +280053788:lI101|H280053798 +280053798:lI100|H2800537A8 +2800537A8:lI58|H2800537B8 +2800537B8:lI32|H2800537C8 +2800537C8:lI126|H2800537D8 +2800537D8:lI112|H2800537E8 +2800537E8:lI10|N +2800537F8:t2:A5:error,A8:embedded +280053810:t2:A5:error,A6:nofile +280053828:lI108|N +280053838:lI114|H280053828 +280053848:lI101|H280053838 +280053858:lI46|H280053848 +280053868:lI114|H280053858 +280053878:lI101|H280053868 +280053888:lI118|H280053878 +280053898:lI114|H280053888 +2800538A8:lI101|H280053898 +2800538B8:lI115|H2800538A8 +2800538C8:lI95|H2800538B8 +2800538D8:lI101|H2800538C8 +2800538E8:lI100|H2800538D8 +2800538F8:lI111|H2800538E8 +280053908:lI99|H2800538F8 +280053918:E4F:g3AAAABNAdRDfzF//Rs9hGTt7lEXZC0AAAADAAAAAHcLY29kZV9zZXJ2ZXJhA2IGohv5WHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280053940:E4F:g3AAAABNAdRDfzF//Rs9hGTt7lEXZC0AAAAEAAAAAHcLY29kZV9zZXJ2ZXJhBGIGohv5WHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280053968:t4:AC:error_logger,A3:pid,A4:time,A2:gl +28005A0C0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +28005A0F8:Mf6:H28005A0C0:AC:logger_proxy,A9:temporary,I2000,H28005A150,A6:worker,H28005A140 +28005A140:lAC:logger_proxy|N +28005A150:t3:AC:logger_proxy,AA:start_link,N +28005A170:t2:A2:ok,A8:no_state +28005A188:lA9:nosuspend|N +28005A198:t2:A2:ok,H28005A1B0 +28005A1B0:E1B:g3F3DGxvZ2dlcl9wcm94eXcHcmVzdGFydGEA +28005A1D8:lI126|H28005A1E8 +28005A1E8:lI119|H28005A1F8 +28005A1F8:lI32|H28005A208 +28005A208:lI115|H28005A218 +28005A218:lI119|H28005A228 +28005A228:lI105|H28005A238 +28005A238:lI116|H28005A248 +28005A248:lI99|H28005A258 +28005A258:lI104|H28005A268 +28005A268:lI101|H28005A278 +28005A278:lI100|H28005A288 +28005A288:lI32|H28005A298 +28005A298:lI102|H28005A2A8 +28005A2A8:lI114|H28005A2B8 +28005A2B8:lI111|H28005A2C8 +28005A2C8:lI109|H28005A2D8 +28005A2D8:lI32|H28005A2E8 +28005A2E8:lI126|H28005A2F8 +28005A2F8:lI119|H28005A308 +28005A308:lI32|H28005A318 +28005A318:lI116|H28005A328 +28005A328:lI111|H28005A338 +28005A338:lI32|H28005A348 +28005A348:lI126|H28005A358 +28005A358:lI119|H28005A368 +28005A368:lI32|H28005A378 +28005A378:lI109|H28005A388 +28005A388:lI111|H28005A398 +28005A398:lI100|H28005A3A8 +28005A3A8:lI101|N +28005A3B8:t3:A4:line,A4:file,A3:mfa +28005A3D8:Mf3:H28005A3B8:I158,H28005A408,H28005A508 +28005A408:lI108|H28005A418 +28005A418:lI111|H28005A428 +28005A428:lI103|H28005A438 +28005A438:lI103|H28005A448 +28005A448:lI101|H28005A458 +28005A458:lI114|H28005A468 +28005A468:lI95|H28005A478 +28005A478:lI112|H28005A488 +28005A488:lI114|H28005A498 +28005A498:lI111|H28005A4A8 +28005A4A8:lI120|H28005A4B8 +28005A4B8:lI121|H28005A4C8 +28005A4C8:lI46|H28005A4D8 +28005A4D8:lI101|H28005A4E8 +28005A4E8:lI114|H28005A4F8 +28005A4F8:lI108|N +28005A508:t3:AC:logger_proxy,A6:notify,I2 +28005A528:Mf0:H280010188: +28005A540:lI126|H28005A550 +28005A550:lI119|H28005A560 +28005A560:lI32|H28005A570 +28005A570:lI102|H28005A580 +28005A580:lI108|H28005A590 +28005A590:lI117|H28005A5A0 +28005A5A0:lI115|H28005A5B0 +28005A5B0:lI104|H28005A5C0 +28005A5C0:lI101|H28005A5D0 +28005A5D0:lI100|H28005A5E0 +28005A5E0:lI32|H28005A5F0 +28005A5F0:lI126|H28005A600 +28005A600:lI119|H28005A610 +28005A610:lI32|H28005A620 +28005A620:lI108|H28005A630 +28005A630:lI111|H28005A640 +28005A640:lI103|H28005A650 +28005A650:lI32|H28005A660 +28005A660:lI101|H28005A670 +28005A670:lI118|H28005A680 +28005A680:lI101|H28005A690 +28005A690:lI110|H28005A6A0 +28005A6A0:lI116|H28005A6B0 +28005A6B0:lI115|N +28005A6C0:t3:A4:line,A4:file,A3:mfa +28005A6E0:Mf3:H28005A6C0:I161,H28005A710,H28005A810 +28005A710:lI108|H28005A720 +28005A720:lI111|H28005A730 +28005A730:lI103|H28005A740 +28005A740:lI103|H28005A750 +28005A750:lI101|H28005A760 +28005A760:lI114|H28005A770 +28005A770:lI95|H28005A780 +28005A780:lI112|H28005A790 +28005A790:lI114|H28005A7A0 +28005A7A0:lI111|H28005A7B0 +28005A7B0:lI120|H28005A7C0 +28005A7C0:lI121|H28005A7D0 +28005A7D0:lI46|H28005A7E0 +28005A7E0:lI101|H28005A7F0 +28005A7F0:lI114|H28005A800 +28005A800:lI108|N +28005A810:t3:AC:logger_proxy,A6:notify,I2 +28005A830:t3:A4:line,A4:file,A3:mfa +28005A850:Mf3:H28005A830:I164,H28005A880,H28005A980 +28005A880:lI108|H28005A890 +28005A890:lI111|H28005A8A0 +28005A8A0:lI103|H28005A8B0 +28005A8B0:lI103|H28005A8C0 +28005A8C0:lI101|H28005A8D0 +28005A8D0:lI114|H28005A8E0 +28005A8E0:lI95|H28005A8F0 +28005A8F0:lI112|H28005A900 +28005A900:lI114|H28005A910 +28005A910:lI111|H28005A920 +28005A920:lI120|H28005A930 +28005A930:lI121|H28005A940 +28005A940:lI46|H28005A950 +28005A950:lI101|H28005A960 +28005A960:lI114|H28005A970 +28005A970:lI108|N +28005A980:t3:AC:logger_proxy,A6:notify,I2 +28005A9A0:lH28005A9C0|H28005A9B0 +28005A9B0:lH28005AA80|N +28005A9C0:lI126|H28005A9D0 +28005A9D0:lI119|H28005A9E0 +28005A9E0:lI32|H28005A9F0 +28005A9F0:lI114|H28005AA00 +28005AA00:lI101|H28005AA10 +28005AA10:lI115|H28005AA20 +28005AA20:lI116|H28005AA30 +28005AA30:lI97|H28005AA40 +28005AA40:lI114|H28005AA50 +28005AA50:lI116|H28005AA60 +28005AA60:lI101|H28005AA70 +28005AA70:lI100|N +28005AA80:lAC:logger_proxy|N +28005AA90:t2:AC:logger_proxy,AA:log_failed +28005AAA8:t3:A4:line,A4:file,A3:mfa +28005AAC8:Mf3:H28005AAA8:I174,H28005AAF8,H28005ABF8 +28005AAF8:lI108|H28005AB08 +28005AB08:lI111|H28005AB18 +28005AB18:lI103|H28005AB28 +28005AB28:lI103|H28005AB38 +28005AB38:lI101|H28005AB48 +28005AB48:lI114|H28005AB58 +28005AB58:lI95|H28005AB68 +28005AB68:lI112|H28005AB78 +28005AB78:lI114|H28005AB88 +28005AB88:lI111|H28005AB98 +28005AB98:lI120|H28005ABA8 +28005ABA8:lI121|H28005ABB8 +28005ABB8:lI46|H28005ABC8 +28005ABC8:lI101|H28005ABD8 +28005ABD8:lI114|H28005ABE8 +28005ABE8:lI108|N +28005ABF8:t3:AC:logger_proxy,A7:try_log,I1 +28005AC18:lI108|N +28005AC28:lI114|H28005AC18 +28005AC38:lI101|H28005AC28 +28005AC48:lI46|H28005AC38 +28005AC58:lI121|H28005AC48 +28005AC68:lI120|H28005AC58 +28005AC78:lI111|H28005AC68 +28005AC88:lI114|H28005AC78 +28005AC98:lI112|H28005AC88 +28005ACA8:lI95|H28005AC98 +28005ACB8:lI114|H28005ACA8 +28005ACC8:lI101|H28005ACB8 +28005ACD8:lI103|H28005ACC8 +28005ACE8:lI103|H28005ACD8 +28005ACF8:lI111|H28005ACE8 +28005AD08:lI108|H28005ACF8 +28005B2F8:t2:N,N +28005B310:t2:A5:empty,H28005B328 +28005B328:t2:N,N +28005B340:lH28005B350|N +28005B350:t2:N,N +28005B368:lI108|N +28005B378:lI114|H28005B368 +28005B388:lI101|H28005B378 +28005B398:lI46|H28005B388 +28005B3A8:lI101|H28005B398 +28005B3B8:lI117|H28005B3A8 +28005B3C8:lI101|H28005B3B8 +28005B3D8:lI117|H28005B3C8 +28005B3E8:lI113|H28005B3D8 +280061C80:t2:I0,A3:nil +280061C98:t2:I1,I1 +280061CB0:t2:I1,I0 +280061CC8:lI108|N +280061CD8:lI114|H280061CC8 +280061CE8:lI101|H280061CD8 +280061CF8:lI46|H280061CE8 +280061D08:lI115|H280061CF8 +280061D18:lI101|H280061D08 +280061D28:lI101|H280061D18 +280061D38:lI114|H280061D28 +280061D48:lI116|H280061D38 +280061D58:lI95|H280061D48 +280061D68:lI98|H280061D58 +280061D78:lI103|H280061D68 +280068C20:t2:A5:local,A12:standard_error_sup +280068C38:lA3:out|H280068C48 +280068C48:lA6:binary|N +280068C58:t2:A5:error,AB:no_stderror +280068C70:t3:A2:fd,I2,I2 +280068C90:lA6:native|N +280068CA0:t2:A5:error,H280068CB8 +280068CB8:t2:A5:error,A9:put_chars +280068CD0:t2:A2:ok,A2:ok +280068CE8:t2:A5:error,H280068D00 +280068D00:t2:A5:error,A7:enotsup +280068D18:t2:A8:encoding,A4:utf8 +280068D30:t2:A8:encoding,A7:unicode +280068D48:t2:A8:encoding,A6:latin1 +280068D60:lI13|H280068D70 +280068D70:lI10|N +280068D80:lI125|N +280068D90:lI92|H280068DA0 +280068DA0:lI120|H280068DB0 +280068DB0:lI123|N +280068DC0:lI108|N +280068DD0:lI114|H280068DC0 +280068DE0:lI101|H280068DD0 +280068DF0:lI46|H280068DE0 +280068E00:lI114|H280068DF0 +280068E10:lI111|H280068E00 +280068E20:lI114|H280068E10 +280068E30:lI114|H280068E20 +280068E40:lI101|H280068E30 +280068E50:lI95|H280068E40 +280068E60:lI100|H280068E50 +280068E70:lI114|H280068E60 +280068E80:lI97|H280068E70 +280068E90:lI100|H280068E80 +280068EA0:lI110|H280068E90 +280068EB0:lI97|H280068EA0 +280068EC0:lI116|H280068EB0 +280068ED0:lI115|H280068EC0 +280068EE0:E52:g3AAAABQAerTAUbpHNfN5LUoR+s7ypAAAAABAAAAAHcOc3RhbmRhcmRfZXJyb3JhAWIHVpgKWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280070EF0:lH280070F00|N +280070F00:t2:A9:spawn_opt,H280070F18 +280070F18:lH280070F28|N +280070F28:t2:A12:message_queue_data,A8:off_heap +280070F40:t2:A5:local,A3:rex +280070F58:Mf0:H280010188: +280070F70:t2:A6:badrpc,H280070F88 +280070F88:t2:A4:EXIT,AC:system_limit +280070FA0:lA4:erpc|N +280070FB0:t2:A6:badrpc,A7:timeout +280070FC8:t2:A6:badrpc,A6:notsup +280070FE0:t2:A6:badrpc,A8:nodedown +280070FF8:t2:A5:error,A8:nodedown +280071010:lA5:flush|N +280071020:t2:A4:erpc,A6:badarg +280071038:t2:A5:error,A7:enotsup +280071050:t2:A5:error,A7:request +280071068:lH280071088|H280071078 +280071078:lA9:protected|N +280071088:t2:A10:read_concurrency,A4:true +2800710A0:lI108|N +2800710B0:lI114|H2800710A0 +2800710C0:lI101|H2800710B0 +2800710D0:lI46|H2800710C0 +2800710E0:lI99|H2800710D0 +2800710F0:lI112|H2800710E0 +280071100:lI114|H2800710F0 +280071110:t1:AE:nodes_observer +280071120:E47:g3AAAABFAIbTaQSrg2lQNTtMKFV2UOkAAAACAAAAAHcDcnBjYQJiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280071148:E47:g3AAAABFAIbTaQSrg2lQNTtMKFV2UOkAAAADAAAAAHcDcnBjYQNiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280071170:E47:g3AAAABFAYbTaQSrg2lQNTtMKFV2UOkAAAAHAAAAAHcDcnBjYQdiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800711F8:t2:A5:local,A12:global_name_server +280071210:t2:A2:ok,A5:allow +280071228:lI103|H280071238 +280071238:lI108|H280071248 +280071248:lI111|H280071258 +280071258:lI98|H280071268 +280071268:lI97|H280071278 +280071278:lI108|H280071288 +280071288:lI58|H280071298 +280071298:lI32|H2800712A8 +2800712A8:lI126|H2800712B8 +2800712B8:lI119|H2800712C8 +2800712C8:lI32|H2800712D8 +2800712D8:lI114|H2800712E8 +2800712E8:lI101|H2800712F8 +2800712F8:lI103|H280071308 +280071308:lI105|H280071318 +280071318:lI115|H280071328 +280071328:lI116|H280071338 +280071338:lI101|H280071348 +280071348:lI114|H280071358 +280071358:lI101|H280071368 +280071368:lI100|H280071378 +280071378:lI32|H280071388 +280071388:lI117|H280071398 +280071398:lI110|H2800713A8 +2800713A8:lI100|H2800713B8 +2800713B8:lI101|H2800713C8 +2800713C8:lI114|H2800713D8 +2800713D8:lI32|H2800713E8 +2800713E8:lI115|H2800713F8 +2800713F8:lI101|H280071408 +280071408:lI118|H280071418 +280071418:lI101|H280071428 +280071428:lI114|H280071438 +280071438:lI97|H280071448 +280071448:lI108|H280071458 +280071458:lI32|H280071468 +280071468:lI110|H280071478 +280071478:lI97|H280071488 +280071488:lI109|H280071498 +280071498:lI101|H2800714A8 +2800714A8:lI115|H2800714B8 +2800714B8:lI58|H2800714C8 +2800714C8:lI32|H2800714D8 +2800714D8:lI126|H2800714E8 +2800714E8:lI116|H2800714F8 +2800714F8:lI119|H280071508 +280071508:lI10|N +280071518:lH280071528|N +280071528:t3:H280071548,N,H280071570 +280071548:t4:A2:$1,A2:$2,A2:$3,A2:$4 +280071570:lA2:$1|N +280071580:t1:AD:connection_id +280071590:Mf1:H280071580:A4:true +2800715B0:Mf0:H280010188: +2800715C8:lA3:set|H2800715D8 +2800715D8:lAB:named_table|H2800715E8 +2800715E8:lA9:protected|N +2800715F8:lA3:set|H280071608 +280071608:lAB:named_table|H280071618 +280071618:lA9:protected|H280071628 +280071628:lH280071638|N +280071638:t2:A10:read_concurrency,A4:true +280071650:lA3:bag|H280071660 +280071660:lAB:named_table|H280071670 +280071670:lA9:protected|N +280071680:lI71|H280071690 +280071690:lI76|H2800716A0 +2800716A0:lI79|H2800716B0 +2800716B0:lI66|H2800716C0 +2800716C0:lI65|H2800716D0 +2800716D0:lI76|H2800716E0 +2800716E0:lI95|H2800716F0 +2800716F0:lI72|H280071700 +280071700:lI73|H280071710 +280071710:lI71|H280071720 +280071720:lI72|H280071730 +280071730:lI95|H280071740 +280071740:lI76|H280071750 +280071750:lI69|H280071760 +280071760:lI86|H280071770 +280071770:lI69|H280071780 +280071780:lI76|H280071790 +280071790:lI95|H2800717A0 +2800717A0:lI84|H2800717B0 +2800717B0:lI82|H2800717C0 +2800717C0:lI65|H2800717D0 +2800717D0:lI67|H2800717E0 +2800717E0:lI69|N +2800717F0:lI84|H280071800 +280071800:lI82|H280071810 +280071810:lI85|H280071820 +280071820:lI69|N +280071830:lI102|H280071840 +280071840:lI97|H280071850 +280071850:lI108|H280071860 +280071860:lI115|H280071870 +280071870:lI101|N +280071880:lH280071890|N +280071890:t2:A7:timeout,A8:infinity +2800718A8:t2:A8:do_trace,A5:false +2800718C0:t2:A8:do_trace,A4:true +2800718D8:lI84|H2800718E8 +2800718E8:lI104|H2800718F8 +2800718F8:lI101|H280071908 +280071908:lI32|H280071918 +280071918:lI103|H280071928 +280071928:lI108|H280071938 +280071938:lI111|H280071948 +280071948:lI98|H280071958 +280071958:lI97|H280071968 +280071968:lI108|H280071978 +280071978:lI95|H280071988 +280071988:lI110|H280071998 +280071998:lI97|H2800719A8 +2800719A8:lI109|H2800719B8 +2800719B8:lI101|H2800719C8 +2800719C8:lI95|H2800719D8 +2800719D8:lI115|H2800719E8 +2800719E8:lI101|H2800719F8 +2800719F8:lI114|H280071A08 +280071A08:lI118|H280071A18 +280071A18:lI101|H280071A28 +280071A28:lI114|H280071A38 +280071A38:lI32|H280071A48 +280071A48:lI114|H280071A58 +280071A58:lI101|H280071A68 +280071A68:lI99|H280071A78 +280071A78:lI101|H280071A88 +280071A88:lI105|H280071A98 +280071A98:lI118|H280071AA8 +280071AA8:lI101|H280071AB8 +280071AB8:lI100|H280071AC8 +280071AC8:lI32|H280071AD8 +280071AD8:lI97|H280071AE8 +280071AE8:lI110|H280071AF8 +280071AF8:lI32|H280071B08 +280071B08:lI117|H280071B18 +280071B18:lI110|H280071B28 +280071B28:lI101|H280071B38 +280071B38:lI120|H280071B48 +280071B48:lI112|H280071B58 +280071B58:lI101|H280071B68 +280071B68:lI99|H280071B78 +280071B78:lI116|H280071B88 +280071B88:lI101|H280071B98 +280071B98:lI100|H280071BA8 +280071BA8:lI32|H280071BB8 +280071BB8:lI109|H280071BC8 +280071BC8:lI101|H280071BD8 +280071BD8:lI115|H280071BE8 +280071BE8:lI115|H280071BF8 +280071BF8:lI97|H280071C08 +280071C08:lI103|H280071C18 +280071C18:lI101|H280071C28 +280071C28:lI58|H280071C38 +280071C38:lI10|H280071C48 +280071C48:lI104|H280071C58 +280071C58:lI97|H280071C68 +280071C68:lI110|H280071C78 +280071C78:lI100|H280071C88 +280071C88:lI108|H280071C98 +280071C98:lI101|H280071CA8 +280071CA8:lI95|H280071CB8 +280071CB8:lI99|H280071CC8 +280071CC8:lI97|H280071CD8 +280071CD8:lI108|H280071CE8 +280071CE8:lI108|H280071CF8 +280071CF8:lI40|H280071D08 +280071D08:lI126|H280071D18 +280071D18:lI116|H280071D28 +280071D28:lI112|H280071D38 +280071D38:lI44|H280071D48 +280071D48:lI32|H280071D58 +280071D58:lI126|H280071D68 +280071D68:lI116|H280071D78 +280071D78:lI112|H280071D88 +280071D88:lI44|H280071D98 +280071D98:lI32|H280071DA8 +280071DA8:lI95|H280071DB8 +280071DB8:lI41|H280071DC8 +280071DC8:lI10|N +280071DD8:lI73|H280071DE8 +280071DE8:lI108|H280071DF8 +280071DF8:lI108|H280071E08 +280071E08:lI101|H280071E18 +280071E18:lI103|H280071E28 +280071E28:lI97|H280071E38 +280071E38:lI108|H280071E48 +280071E48:lI32|H280071E58 +280071E58:lI103|H280071E68 +280071E68:lI108|H280071E78 +280071E78:lI111|H280071E88 +280071E88:lI98|H280071E98 +280071E98:lI97|H280071EA8 +280071EA8:lI108|H280071EB8 +280071EB8:lI32|H280071EC8 +280071EC8:lI112|H280071ED8 +280071ED8:lI114|H280071EE8 +280071EE8:lI111|H280071EF8 +280071EF8:lI116|H280071F08 +280071F08:lI111|H280071F18 +280071F18:lI99|H280071F28 +280071F28:lI111|H280071F38 +280071F38:lI108|H280071F48 +280071F48:lI32|H280071F58 +280071F58:lI118|H280071F68 +280071F68:lI101|H280071F78 +280071F78:lI114|H280071F88 +280071F88:lI115|H280071F98 +280071F98:lI105|H280071FA8 +280071FA8:lI111|H280071FB8 +280071FB8:lI110|H280071FC8 +280071FC8:lI32|H280071FD8 +280071FD8:lI126|H280071FE8 +280071FE8:lI112|H280071FF8 +280071FF8:lI32|H280072008 +280072008:lI78|H280072018 +280072018:lI111|H280072028 +280072028:lI100|H280072038 +280072038:lI101|H280072048 +280072048:lI58|H280072058 +280072058:lI32|H280072068 +280072068:lI126|H280072078 +280072078:lI112|H280072088 +280072088:lI10|N +280072098:lI84|H2800720A8 +2800720A8:lI104|H2800720B8 +2800720B8:lI101|H2800720C8 +2800720C8:lI32|H2800720D8 +2800720D8:lI103|H2800720E8 +2800720E8:lI108|H2800720F8 +2800720F8:lI111|H280072108 +280072108:lI98|H280072118 +280072118:lI97|H280072128 +280072128:lI108|H280072138 +280072138:lI95|H280072148 +280072148:lI110|H280072158 +280072158:lI97|H280072168 +280072168:lI109|H280072178 +280072178:lI101|H280072188 +280072188:lI95|H280072198 +280072198:lI115|H2800721A8 +2800721A8:lI101|H2800721B8 +2800721B8:lI114|H2800721C8 +2800721C8:lI118|H2800721D8 +2800721D8:lI101|H2800721E8 +2800721E8:lI114|H2800721F8 +2800721F8:lI32|H280072208 +280072208:lI114|H280072218 +280072218:lI101|H280072228 +280072228:lI99|H280072238 +280072238:lI101|H280072248 +280072248:lI105|H280072258 +280072258:lI118|H280072268 +280072268:lI101|H280072278 +280072278:lI100|H280072288 +280072288:lI32|H280072298 +280072298:lI97|H2800722A8 +2800722A8:lI110|H2800722B8 +2800722B8:lI32|H2800722C8 +2800722C8:lI117|H2800722D8 +2800722D8:lI110|H2800722E8 +2800722E8:lI101|H2800722F8 +2800722F8:lI120|H280072308 +280072308:lI112|H280072318 +280072318:lI101|H280072328 +280072328:lI99|H280072338 +280072338:lI116|H280072348 +280072348:lI101|H280072358 +280072358:lI100|H280072368 +280072368:lI32|H280072378 +280072378:lI109|H280072388 +280072388:lI101|H280072398 +280072398:lI115|H2800723A8 +2800723A8:lI115|H2800723B8 +2800723B8:lI97|H2800723C8 +2800723C8:lI103|H2800723D8 +2800723D8:lI101|H2800723E8 +2800723E8:lI58|H2800723F8 +2800723F8:lI10|H280072408 +280072408:lI104|H280072418 +280072418:lI97|H280072428 +280072428:lI110|H280072438 +280072438:lI100|H280072448 +280072448:lI108|H280072458 +280072458:lI101|H280072468 +280072468:lI95|H280072478 +280072478:lI99|H280072488 +280072488:lI97|H280072498 +280072498:lI115|H2800724A8 +2800724A8:lI116|H2800724B8 +2800724B8:lI40|H2800724C8 +2800724C8:lI126|H2800724D8 +2800724D8:lI116|H2800724E8 +2800724E8:lI112|H2800724F8 +2800724F8:lI44|H280072508 +280072508:lI32|H280072518 +280072518:lI95|H280072528 +280072528:lI41|H280072538 +280072538:lI10|N +280072548:t3:A4:conf,A4:true,A4:true +280072568:lI100|H280072578 +280072578:lI105|H280072588 +280072588:lI115|H280072598 +280072598:lI99|H2800725A8 +2800725A8:lI111|H2800725B8 +2800725B8:lI110|H2800725C8 +2800725C8:lI110|H2800725D8 +2800725D8:lI101|H2800725E8 +2800725E8:lI99|H2800725F8 +2800725F8:lI116|H280072608 +280072608:lI101|H280072618 +280072618:lI100|H280072628 +280072628:lI32|H280072638 +280072638:lI111|H280072648 +280072648:lI108|H280072658 +280072658:lI100|N +280072668:lI101|H280072678 +280072678:lI120|H280072688 +280072688:lI99|H280072698 +280072698:lI108|H2800726A8 +2800726A8:lI117|H2800726B8 +2800726B8:lI100|H2800726C8 +2800726C8:lI101|H2800726D8 +2800726D8:lI100|H2800726E8 +2800726E8:lI32|H2800726F8 +2800726F8:lI103|H280072708 +280072708:lI108|H280072718 +280072718:lI111|H280072728 +280072728:lI98|H280072738 +280072738:lI97|H280072748 +280072748:lI108|H280072758 +280072758:lI32|H280072768 +280072768:lI103|H280072778 +280072778:lI114|H280072788 +280072788:lI111|H280072798 +280072798:lI117|H2800727A8 +2800727A8:lI112|H2800727B8 +2800727B8:lI32|H2800727C8 +2800727C8:lI109|H2800727D8 +2800727D8:lI101|H2800727E8 +2800727E8:lI109|H2800727F8 +2800727F8:lI98|H280072808 +280072808:lI101|H280072818 +280072818:lI114|N +280072828:lI114|H280072838 +280072838:lI101|H280072848 +280072848:lI113|H280072858 +280072858:lI117|H280072868 +280072868:lI101|H280072878 +280072878:lI115|H280072888 +280072888:lI116|H280072898 +280072898:lI101|H2800728A8 +2800728A8:lI100|H2800728B8 +2800728B8:lI32|H2800728C8 +2800728C8:lI100|H2800728D8 +2800728D8:lI105|H2800728E8 +2800728E8:lI115|H2800728F8 +2800728F8:lI99|H280072908 +280072908:lI111|H280072918 +280072918:lI110|H280072928 +280072928:lI110|H280072938 +280072938:lI101|H280072948 +280072948:lI99|H280072958 +280072958:lI116|H280072968 +280072968:lI32|H280072978 +280072978:lI102|H280072988 +280072988:lI114|H280072998 +280072998:lI111|H2800729A8 +2800729A8:lI109|N +2800729B8:lI39|H2800729C8 +2800729C8:lI103|H2800729D8 +2800729D8:lI108|H2800729E8 +2800729E8:lI111|H2800729F8 +2800729F8:lI98|H280072A08 +280072A08:lI97|H280072A18 +280072A18:lI108|H280072A28 +280072A28:lI39|H280072A38 +280072A38:lI32|H280072A48 +280072A48:lI97|H280072A58 +280072A58:lI116|H280072A68 +280072A68:lI32|H280072A78 +280072A78:lI110|H280072A88 +280072A88:lI111|H280072A98 +280072A98:lI100|H280072AA8 +280072AA8:lI101|H280072AB8 +280072AB8:lI32|H280072AC8 +280072AC8:lI126|H280072AD8 +280072AD8:lI112|H280072AE8 +280072AE8:lI32|H280072AF8 +280072AF8:lI126|H280072B08 +280072B08:lI115|H280072B18 +280072B18:lI32|H280072B28 +280072B28:lI110|H280072B38 +280072B38:lI111|H280072B48 +280072B48:lI100|H280072B58 +280072B58:lI101|H280072B68 +280072B68:lI32|H280072B78 +280072B78:lI126|H280072B88 +280072B88:lI112|H280072B98 +280072B98:lI32|H280072BA8 +280072BA8:lI105|H280072BB8 +280072BB8:lI110|H280072BC8 +280072BC8:lI32|H280072BD8 +280072BD8:lI111|H280072BE8 +280072BE8:lI114|H280072BF8 +280072BF8:lI100|H280072C08 +280072C08:lI101|H280072C18 +280072C18:lI114|H280072C28 +280072C28:lI32|H280072C38 +280072C38:lI116|H280072C48 +280072C48:lI111|H280072C58 +280072C58:lI32|H280072C68 +280072C68:lI112|H280072C78 +280072C78:lI114|H280072C88 +280072C88:lI101|H280072C98 +280072C98:lI118|H280072CA8 +280072CA8:lI101|H280072CB8 +280072CB8:lI110|H280072CC8 +280072CC8:lI116|H280072CD8 +280072CD8:lI32|H280072CE8 +280072CE8:lI111|H280072CF8 +280072CF8:lI118|H280072D08 +280072D08:lI101|H280072D18 +280072D18:lI114|H280072D28 +280072D28:lI108|H280072D38 +280072D38:lI97|H280072D48 +280072D48:lI112|H280072D58 +280072D58:lI112|H280072D68 +280072D68:lI105|H280072D78 +280072D78:lI110|H280072D88 +280072D88:lI103|H280072D98 +280072D98:lI32|H280072DA8 +280072DA8:lI112|H280072DB8 +280072DB8:lI97|H280072DC8 +280072DC8:lI114|H280072DD8 +280072DD8:lI116|H280072DE8 +280072DE8:lI105|H280072DF8 +280072DF8:lI116|H280072E08 +280072E08:lI105|H280072E18 +280072E18:lI111|H280072E28 +280072E28:lI110|H280072E38 +280072E38:lI115|N +280072E48:t3:A4:conf,A5:false,A5:false +280072E68:lI100|H280072E78 +280072E78:lI105|H280072E88 +280072E88:lI115|H280072E98 +280072E98:lI99|H280072EA8 +280072EA8:lI111|H280072EB8 +280072EB8:lI110|H280072EC8 +280072EC8:lI110|H280072ED8 +280072ED8:lI101|H280072EE8 +280072EE8:lI99|H280072EF8 +280072EF8:lI116|H280072F08 +280072F08:lI101|H280072F18 +280072F18:lI100|N +280072F28:lI62|H280072F38 +280072F38:lI62|H280072F48 +280072F48:lI62|H280072F58 +280072F58:lI62|H280072F68 +280072F68:lI32|H280072F78 +280072F78:lI126|H280072F88 +280072F88:lI112|H280072F98 +280072F98:lI10|N +280072FA8:lI84|H280072FB8 +280072FB8:lI104|H280072FC8 +280072FC8:lI101|H280072FD8 +280072FD8:lI32|H280072FE8 +280072FE8:lI103|H280072FF8 +280072FF8:lI108|H280073008 +280073008:lI111|H280073018 +280073018:lI98|H280073028 +280073028:lI97|H280073038 +280073038:lI108|H280073048 +280073048:lI95|H280073058 +280073058:lI110|H280073068 +280073068:lI97|H280073078 +280073078:lI109|H280073088 +280073088:lI101|H280073098 +280073098:lI95|H2800730A8 +2800730A8:lI115|H2800730B8 +2800730B8:lI101|H2800730C8 +2800730C8:lI114|H2800730D8 +2800730D8:lI118|H2800730E8 +2800730E8:lI101|H2800730F8 +2800730F8:lI114|H280073108 +280073108:lI32|H280073118 +280073118:lI114|H280073128 +280073128:lI101|H280073138 +280073138:lI99|H280073148 +280073148:lI101|H280073158 +280073158:lI105|H280073168 +280073168:lI118|H280073178 +280073178:lI101|H280073188 +280073188:lI100|H280073198 +280073198:lI32|H2800731A8 +2800731A8:lI97|H2800731B8 +2800731B8:lI110|H2800731C8 +2800731C8:lI32|H2800731D8 +2800731D8:lI117|H2800731E8 +2800731E8:lI110|H2800731F8 +2800731F8:lI101|H280073208 +280073208:lI120|H280073218 +280073218:lI112|H280073228 +280073228:lI101|H280073238 +280073238:lI99|H280073248 +280073248:lI116|H280073258 +280073258:lI101|H280073268 +280073268:lI100|H280073278 +280073278:lI32|H280073288 +280073288:lI109|H280073298 +280073298:lI101|H2800732A8 +2800732A8:lI115|H2800732B8 +2800732B8:lI115|H2800732C8 +2800732C8:lI97|H2800732D8 +2800732D8:lI103|H2800732E8 +2800732E8:lI101|H2800732F8 +2800732F8:lI58|H280073308 +280073308:lI10|H280073318 +280073318:lI104|H280073328 +280073328:lI97|H280073338 +280073338:lI110|H280073348 +280073348:lI100|H280073358 +280073358:lI108|H280073368 +280073368:lI101|H280073378 +280073378:lI95|H280073388 +280073388:lI105|H280073398 +280073398:lI110|H2800733A8 +2800733A8:lI102|H2800733B8 +2800733B8:lI111|H2800733C8 +2800733C8:lI40|H2800733D8 +2800733D8:lI126|H2800733E8 +2800733E8:lI116|H2800733F8 +2800733F8:lI112|H280073408 +280073408:lI44|H280073418 +280073418:lI32|H280073428 +280073428:lI95|H280073438 +280073438:lI41|H280073448 +280073448:lI10|N +280073458:lI39|H280073468 +280073468:lI103|H280073478 +280073478:lI108|H280073488 +280073488:lI111|H280073498 +280073498:lI98|H2800734A8 +2800734A8:lI97|H2800734B8 +2800734B8:lI108|H2800734C8 +2800734C8:lI39|H2800734D8 +2800734D8:lI32|H2800734E8 +2800734E8:lI97|H2800734F8 +2800734F8:lI116|H280073508 +280073508:lI32|H280073518 +280073518:lI110|H280073528 +280073528:lI111|H280073538 +280073538:lI100|H280073548 +280073548:lI101|H280073558 +280073558:lI32|H280073568 +280073568:lI126|H280073578 +280073578:lI112|H280073588 +280073588:lI32|H280073598 +280073598:lI103|H2800735A8 +2800735A8:lI111|H2800735B8 +2800735B8:lI116|H2800735C8 +2800735C8:lI32|H2800735D8 +2800735D8:lI97|H2800735E8 +2800735E8:lI110|H2800735F8 +2800735F8:lI32|H280073608 +280073608:lI111|H280073618 +280073618:lI117|H280073628 +280073628:lI116|H280073638 +280073638:lI32|H280073648 +280073648:lI111|H280073658 +280073658:lI102|H280073668 +280073668:lI32|H280073678 +280073678:lI115|H280073688 +280073688:lI121|H280073698 +280073698:lI110|H2800736A8 +2800736A8:lI99|H2800736B8 +2800736B8:lI32|H2800736C8 +2800736C8:lI99|H2800736D8 +2800736D8:lI111|H2800736E8 +2800736E8:lI110|H2800736F8 +2800736F8:lI110|H280073708 +280073708:lI101|H280073718 +280073718:lI99|H280073728 +280073728:lI116|H280073738 +280073738:lI105|H280073748 +280073748:lI111|H280073758 +280073758:lI110|H280073768 +280073768:lI32|H280073778 +280073778:lI97|H280073788 +280073788:lI116|H280073798 +280073798:lI116|H2800737A8 +2800737A8:lI101|H2800737B8 +2800737B8:lI109|H2800737C8 +2800737C8:lI112|H2800737D8 +2800737D8:lI116|H2800737E8 +2800737E8:lI32|H2800737F8 +2800737F8:lI102|H280073808 +280073808:lI114|H280073818 +280073818:lI111|H280073828 +280073828:lI109|H280073838 +280073838:lI32|H280073848 +280073848:lI111|H280073858 +280073858:lI108|H280073868 +280073868:lI100|H280073878 +280073878:lI32|H280073888 +280073888:lI118|H280073898 +280073898:lI101|H2800738A8 +2800738A8:lI114|H2800738B8 +2800738B8:lI115|H2800738C8 +2800738C8:lI105|H2800738D8 +2800738D8:lI111|H2800738E8 +2800738E8:lI110|H2800738F8 +2800738F8:lI32|H280073908 +280073908:lI126|H280073918 +280073918:lI112|H280073928 +280073928:lI32|H280073938 +280073938:lI110|H280073948 +280073948:lI111|H280073958 +280073958:lI100|H280073968 +280073968:lI101|H280073978 +280073978:lI32|H280073988 +280073988:lI126|H280073998 +280073998:lI112|H2800739A8 +2800739A8:lI46|H2800739B8 +2800739B8:lI32|H2800739C8 +2800739C8:lI68|H2800739D8 +2800739D8:lI105|H2800739E8 +2800739E8:lI115|H2800739F8 +2800739F8:lI99|H280073A08 +280073A08:lI111|H280073A18 +280073A18:lI110|H280073A28 +280073A28:lI110|H280073A38 +280073A38:lI101|H280073A48 +280073A48:lI99|H280073A58 +280073A58:lI116|H280073A68 +280073A68:lI105|H280073A78 +280073A78:lI110|H280073A88 +280073A88:lI103|H280073A98 +280073A98:lI32|H280073AA8 +280073AA8:lI102|H280073AB8 +280073AB8:lI114|H280073AC8 +280073AC8:lI111|H280073AD8 +280073AD8:lI109|H280073AE8 +280073AE8:lI32|H280073AF8 +280073AF8:lI105|H280073B08 +280073B08:lI116|H280073B18 +280073B18:lI46|N +280073B28:t2:A4:true,N +280073B40:lA5:flush|N +280073B50:lA15:allow_passive_connect|N +280073B60:lI39|H280073B70 +280073B70:lI103|H280073B80 +280073B80:lI108|H280073B90 +280073B90:lI111|H280073BA0 +280073BA0:lI98|H280073BB0 +280073BB0:lI97|H280073BC0 +280073BC0:lI108|H280073BD0 +280073BD0:lI39|H280073BE0 +280073BE0:lI32|H280073BF0 +280073BF0:lI97|H280073C00 +280073C00:lI116|H280073C10 +280073C10:lI32|H280073C20 +280073C20:lI126|H280073C30 +280073C30:lI119|H280073C40 +280073C40:lI32|H280073C50 +280073C50:lI102|H280073C60 +280073C60:lI97|H280073C70 +280073C70:lI105|H280073C80 +280073C80:lI108|H280073C90 +280073C90:lI101|H280073CA0 +280073CA0:lI100|H280073CB0 +280073CB0:lI32|H280073CC0 +280073CC0:lI116|H280073CD0 +280073CD0:lI111|H280073CE0 +280073CE0:lI32|H280073CF0 +280073CF0:lI99|H280073D00 +280073D00:lI111|H280073D10 +280073D10:lI110|H280073D20 +280073D20:lI110|H280073D30 +280073D30:lI101|H280073D40 +280073D40:lI99|H280073D50 +280073D50:lI116|H280073D60 +280073D60:lI32|H280073D70 +280073D70:lI116|H280073D80 +280073D80:lI111|H280073D90 +280073D90:lI32|H280073DA0 +280073DA0:lI126|H280073DB0 +280073DB0:lI119|H280073DC0 +280073DC0:lI10|N +280073DD0:lA9:noconnect|N +280073DE0:lI103|H280073DF0 +280073DF0:lI108|H280073E00 +280073E00:lI111|H280073E10 +280073E10:lI98|H280073E20 +280073E20:lI97|H280073E30 +280073E30:lI108|H280073E40 +280073E40:lI58|H280073E50 +280073E50:lI32|H280073E60 +280073E60:lI98|H280073E70 +280073E70:lI97|H280073E80 +280073E80:lI100|H280073E90 +280073E90:lI114|H280073EA0 +280073EA0:lI112|H280073EB0 +280073EB0:lI99|H280073EC0 +280073EC0:lI32|H280073ED0 +280073ED0:lI126|H280073EE0 +280073EE0:lI119|H280073EF0 +280073EF0:lI32|H280073F00 +280073F00:lI114|H280073F10 +280073F10:lI101|H280073F20 +280073F20:lI99|H280073F30 +280073F30:lI101|H280073F40 +280073F40:lI105|H280073F50 +280073F50:lI118|H280073F60 +280073F60:lI101|H280073F70 +280073F70:lI100|H280073F80 +280073F80:lI32|H280073F90 +280073F90:lI119|H280073FA0 +280073FA0:lI104|H280073FB0 +280073FB0:lI101|H280073FC0 +280073FC0:lI110|H280073FD0 +280073FD0:lI32|H280073FE0 +280073FE0:lI99|H280073FF0 +280073FF0:lI111|H280074000 +280074000:lI110|H280074010 +280074010:lI102|H280074020 +280074020:lI108|H280074030 +280074030:lI105|H280074040 +280074040:lI99|H280074050 +280074050:lI116|H280074060 +280074060:lI105|H280074070 +280074070:lI110|H280074080 +280074080:lI103|H280074090 +280074090:lI32|H2800740A0 +2800740A0:lI110|H2800740B0 +2800740B0:lI97|H2800740C0 +2800740C0:lI109|H2800740D0 +2800740D0:lI101|H2800740E0 +2800740E0:lI32|H2800740F0 +2800740F0:lI126|H280074100 +280074100:lI116|H280074110 +280074110:lI119|H280074120 +280074120:lI32|H280074130 +280074130:lI119|H280074140 +280074140:lI97|H280074150 +280074150:lI115|H280074160 +280074160:lI32|H280074170 +280074170:lI102|H280074180 +280074180:lI111|H280074190 +280074190:lI117|H2800741A0 +2800741A0:lI110|H2800741B0 +2800741B0:lI100|H2800741C0 +2800741C0:lI10|N +2800741D0:lI103|H2800741E0 +2800741E0:lI108|H2800741F0 +2800741F0:lI111|H280074200 +280074200:lI98|H280074210 +280074210:lI97|H280074220 +280074220:lI108|H280074230 +280074230:lI58|H280074240 +280074240:lI32|H280074250 +280074250:lI82|H280074260 +280074260:lI101|H280074270 +280074270:lI115|H280074280 +280074280:lI111|H280074290 +280074290:lI108|H2800742A0 +2800742A0:lI118|H2800742B0 +2800742B0:lI101|H2800742C0 +2800742C0:lI32|H2800742D0 +2800742D0:lI109|H2800742E0 +2800742E0:lI101|H2800742F0 +2800742F0:lI116|H280074300 +280074300:lI104|H280074310 +280074310:lI111|H280074320 +280074320:lI100|H280074330 +280074330:lI32|H280074340 +280074340:lI126|H280074350 +280074350:lI119|H280074360 +280074360:lI32|H280074370 +280074370:lI102|H280074380 +280074380:lI111|H280074390 +280074390:lI114|H2800743A0 +2800743A0:lI32|H2800743B0 +2800743B0:lI99|H2800743C0 +2800743C0:lI111|H2800743D0 +2800743D0:lI110|H2800743E0 +2800743E0:lI102|H2800743F0 +2800743F0:lI108|H280074400 +280074400:lI105|H280074410 +280074410:lI99|H280074420 +280074420:lI116|H280074430 +280074430:lI105|H280074440 +280074440:lI110|H280074450 +280074450:lI103|H280074460 +280074460:lI32|H280074470 +280074470:lI110|H280074480 +280074480:lI97|H280074490 +280074490:lI109|H2800744A0 +2800744A0:lI101|H2800744B0 +2800744B0:lI32|H2800744C0 +2800744C0:lI126|H2800744D0 +2800744D0:lI116|H2800744E0 +2800744E0:lI119|H2800744F0 +2800744F0:lI32|H280074500 +280074500:lI114|H280074510 +280074510:lI101|H280074520 +280074520:lI116|H280074530 +280074530:lI117|H280074540 +280074540:lI114|H280074550 +280074550:lI110|H280074560 +280074560:lI101|H280074570 +280074570:lI100|H280074580 +280074580:lI32|H280074590 +280074590:lI126|H2800745A0 +2800745A0:lI116|H2800745B0 +2800745B0:lI119|H2800745C0 +2800745C0:lI10|N +2800745D0:lI103|H2800745E0 +2800745E0:lI108|H2800745F0 +2800745F0:lI111|H280074600 +280074600:lI98|H280074610 +280074610:lI97|H280074620 +280074620:lI108|H280074630 +280074630:lI58|H280074640 +280074640:lI32|H280074650 +280074650:lI78|H280074660 +280074660:lI97|H280074670 +280074670:lI109|H280074680 +280074680:lI101|H280074690 +280074690:lI32|H2800746A0 +2800746A0:lI99|H2800746B0 +2800746B0:lI111|H2800746C0 +2800746C0:lI110|H2800746D0 +2800746D0:lI102|H2800746E0 +2800746E0:lI108|H2800746F0 +2800746F0:lI105|H280074700 +280074700:lI99|H280074710 +280074710:lI116|H280074720 +280074720:lI32|H280074730 +280074730:lI116|H280074740 +280074740:lI101|H280074750 +280074750:lI114|H280074760 +280074760:lI109|H280074770 +280074770:lI105|H280074780 +280074780:lI110|H280074790 +280074790:lI97|H2800747A0 +2800747A0:lI116|H2800747B0 +2800747B0:lI105|H2800747C0 +2800747C0:lI110|H2800747D0 +2800747D0:lI103|H2800747E0 +2800747E0:lI32|H2800747F0 +2800747F0:lI126|H280074800 +280074800:lI116|H280074810 +280074810:lI119|H280074820 +280074820:lI10|N +280074830:lA9:monotonic|N +280074840:t3:A9:undefined,A9:undefined,A9:undefined +280074860:lH280074880|H280074870 +280074870:lH280074898|N +280074880:t2:A5:async,A4:true +280074898:t2:A4:info,A5:false +2800748B0:lH2800748C0|N +2800748C0:t3:H2800748E0,N,H280074908 +2800748E0:t4:A2:$1,A2:$2,A2:$3,A2:$4 +280074908:lH280074918|N +280074918:t1:H280074928 +280074928:t3:A2:$1,A2:$2,A2:$3 +280074948:lI84|H280074958 +280074958:lI114|H280074968 +280074968:lI121|H280074978 +280074978:lI105|H280074988 +280074988:lI110|H280074998 +280074998:lI103|H2800749A8 +2800749A8:lI32|H2800749B8 +2800749B8:lI116|H2800749C8 +2800749C8:lI111|H2800749D8 +2800749D8:lI32|H2800749E8 +2800749E8:lI115|H2800749F8 +2800749F8:lI121|H280074A08 +280074A08:lI110|H280074A18 +280074A18:lI99|H280074A28 +280074A28:lI32|H280074A38 +280074A38:lI110|H280074A48 +280074A48:lI111|H280074A58 +280074A58:lI100|H280074A68 +280074A68:lI101|H280074A78 +280074A78:lI115|H280074A88 +280074A88:lI32|H280074A98 +280074A98:lI110|H280074AA8 +280074AA8:lI111|H280074AB8 +280074AB8:lI116|H280074AC8 +280074AC8:lI32|H280074AD8 +280074AD8:lI100|H280074AE8 +280074AE8:lI101|H280074AF8 +280074AF8:lI102|H280074B08 +280074B08:lI105|H280074B18 +280074B18:lI110|H280074B28 +280074B28:lI101|H280074B38 +280074B38:lI100|H280074B48 +280074B48:lI32|H280074B58 +280074B58:lI105|H280074B68 +280074B68:lI110|H280074B78 +280074B78:lI32|H280074B88 +280074B88:lI116|H280074B98 +280074B98:lI104|H280074BA8 +280074BA8:lI101|H280074BB8 +280074BB8:lI32|H280074BC8 +280074BC8:lI111|H280074BD8 +280074BD8:lI119|H280074BE8 +280074BE8:lI110|H280074BF8 +280074BF8:lI32|H280074C08 +280074C08:lI103|H280074C18 +280074C18:lI108|H280074C28 +280074C28:lI111|H280074C38 +280074C38:lI98|H280074C48 +280074C48:lI97|H280074C58 +280074C58:lI108|H280074C68 +280074C68:lI32|H280074C78 +280074C78:lI103|H280074C88 +280074C88:lI114|H280074C98 +280074C98:lI111|H280074CA8 +280074CA8:lI117|H280074CB8 +280074CB8:lI112|N +280074CC8:lI103|H280074CD8 +280074CD8:lI108|H280074CE8 +280074CE8:lI111|H280074CF8 +280074CF8:lI98|H280074D08 +280074D08:lI97|H280074D18 +280074D18:lI108|H280074D28 +280074D28:lI95|H280074D38 +280074D38:lI103|H280074D48 +280074D48:lI114|H280074D58 +280074D58:lI111|H280074D68 +280074D68:lI117|H280074D78 +280074D78:lI112|H280074D88 +280074D88:lI115|H280074D98 +280074D98:lI32|H280074DA8 +280074DA8:lI100|H280074DB8 +280074DB8:lI101|H280074DC8 +280074DC8:lI102|H280074DD8 +280074DD8:lI105|H280074DE8 +280074DE8:lI110|H280074DF8 +280074DF8:lI105|H280074E08 +280074E08:lI116|H280074E18 +280074E18:lI105|H280074E28 +280074E28:lI111|H280074E38 +280074E38:lI110|H280074E48 +280074E48:lI32|H280074E58 +280074E58:lI101|H280074E68 +280074E68:lI114|H280074E78 +280074E78:lI114|H280074E88 +280074E88:lI111|H280074E98 +280074E98:lI114|N +280074EA8:lI84|H280074EB8 +280074EB8:lI104|H280074EC8 +280074EC8:lI101|H280074ED8 +280074ED8:lI32|H280074EE8 +280074EE8:lI103|H280074EF8 +280074EF8:lI108|H280074F08 +280074F08:lI111|H280074F18 +280074F18:lI98|H280074F28 +280074F28:lI97|H280074F38 +280074F38:lI108|H280074F48 +280074F48:lI95|H280074F58 +280074F58:lI110|H280074F68 +280074F68:lI97|H280074F78 +280074F78:lI109|H280074F88 +280074F88:lI101|H280074F98 +280074F98:lI95|H280074FA8 +280074FA8:lI115|H280074FB8 +280074FB8:lI101|H280074FC8 +280074FC8:lI114|H280074FD8 +280074FD8:lI118|H280074FE8 +280074FE8:lI101|H280074FF8 +280074FF8:lI114|H280075008 +280075008:lI32|H280075018 +280075018:lI126|H280075028 +280075028:lI119|H280075038 +280075038:lI32|H280075048 +280075048:lI112|H280075058 +280075058:lI114|H280075068 +280075068:lI111|H280075078 +280075078:lI99|H280075088 +280075088:lI101|H280075098 +280075098:lI115|H2800750A8 +2800750A8:lI115|H2800750B8 +2800750B8:lI32|H2800750C8 +2800750C8:lI114|H2800750D8 +2800750D8:lI101|H2800750E8 +2800750E8:lI99|H2800750F8 +2800750F8:lI101|H280075108 +280075108:lI105|H280075118 +280075118:lI118|H280075128 +280075128:lI101|H280075138 +280075138:lI100|H280075148 +280075148:lI32|H280075158 +280075158:lI97|H280075168 +280075168:lI110|H280075178 +280075178:lI32|H280075188 +280075188:lI117|H280075198 +280075198:lI110|H2800751A8 +2800751A8:lI101|H2800751B8 +2800751B8:lI120|H2800751C8 +2800751C8:lI112|H2800751D8 +2800751D8:lI101|H2800751E8 +2800751E8:lI99|H2800751F8 +2800751F8:lI116|H280075208 +280075208:lI101|H280075218 +280075218:lI100|H280075228 +280075228:lI32|H280075238 +280075238:lI109|H280075248 +280075248:lI101|H280075258 +280075258:lI115|H280075268 +280075268:lI115|H280075278 +280075278:lI97|H280075288 +280075288:lI103|H280075298 +280075298:lI101|H2800752A8 +2800752A8:lI58|H2800752B8 +2800752B8:lI10|H2800752C8 +2800752C8:lI126|H2800752D8 +2800752D8:lI116|H2800752E8 +2800752E8:lI112|H2800752F8 +2800752F8:lI10|N +280075308:lI108|N +280075318:lI114|H280075308 +280075328:lI101|H280075318 +280075338:lI46|H280075328 +280075348:lI108|H280075338 +280075358:lI97|H280075348 +280075368:lI98|H280075358 +280075378:lI111|H280075368 +280075388:lI108|H280075378 +280075398:lI103|H280075388 +2800753A8:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAAAAAAAAHcGZ2xvYmFsYQBiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800753D0:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAFAAAAAHcGZ2xvYmFsYQViBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800753F8:B1152921504606846975 +280075408:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAAGAAAAAHcGZ2xvYmFsYQZiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075430:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAHAAAAAHcGZ2xvYmFsYQdiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075458:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAALAAAAAHcGZ2xvYmFsYQtiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075480:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAANAAAAAHcGZ2xvYmFsYQ1iBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800754A8:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAATAAAAAHcGZ2xvYmFsYRNiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800754D0:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAXAAAAAHcGZ2xvYmFsYRdiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800754F8:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAZAAAAAHcGZ2xvYmFsYRliBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075520:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAbAAAAAHcGZ2xvYmFsYRtiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075548:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAcAAAAAHcGZ2xvYmFsYRxiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075570:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAdAAAAAHcGZ2xvYmFsYR1iBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280075598:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAgAAAAAHcGZ2xvYmFsYSBiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800755C0:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAhAAAAAHcGZ2xvYmFsYSFiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800755E8:E4A:g3AAAABIAL9fDarOZVmFQtYEsqv4Sd0AAAAiAAAAAHcGZ2xvYmFsYSJiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280078CF0:F1A:1.11022302462515654042e-16 +280078D00:F1A:5.55111512312578270212e-17 +280078D10:F1A:2.77555756156289135106e-17 +280078D20:F1A:1.38777878078144567553e-17 +280078D30:F1A:2.00000000000000000000e+00 +280078D40:Yh0: +280078D50:t100:H280079558,H280079580,H2800795A8,H2800795D0,H2800795F8,H280079620,H280079648,H280079670,H280079698,H2800796C0,H2800796E8,H280079710,H280079738,H280079760,H280079788,H2800797B0,H2800797D8,H280079800,H280079828,H280079850,H280079878,H2800798A0,H2800798C8,H2800798F0,H280079918,H280079940,H280079968,H280079990,H2800799B8,H2800799E0,H280079A08,H280079A30,H280079A58,H280079A80,H280079AA8,H280079AD0,H280079AF8,H280079B20,H280079B48,H280079B70,H280079B98,H280079BC0,H280079BE8,H280079C10,H280079C38,H280079C60,H280079C88,H280079CB0,H280079CD8,H280079D00,H280079D28,H280079D50,H280079D78,H280079DA0,H280079DC8,H280079DF0,H280079E18,H280079E40,H280079E68,H280079E90,H280079EB8,H280079EE0,H280079F08,H280079F30,H280079F58,H280079F80,H280079FA8,H280079FD0,H280079FF8,H28007A020,H28007A048,H28007A070,H28007A098,H28007A0C0,H28007A0E8,H28007A110,H28007A138,H28007A160,H28007A188,H28007A1B0,H28007A1D8,H28007A200,H28007A228,H28007A250,H28007A278,H28007A2A0,H28007A2C8,H28007A2F0,H28007A318,H28007A340,H28007A368,H28007A390,H28007A3B8,H28007A3E0,H28007A408,H28007A430,H28007A458,H28007A480,H28007A4A8,H28007A4D0,H28007A4F8,H28007A520,H28007A548,H28007A570,H28007A598,H28007A5C0,H28007A5E8,H28007A610,H28007A638,H28007A660,H28007A688,H28007A6B0,H28007A6D8,H28007A700,H28007A728,H28007A750,H28007A778,H28007A7A0,H28007A7C8,H28007A7F0,H28007A818,H28007A840,H28007A868,H28007A890,H28007A8B8,H28007A8E0,H28007A908,H28007A930,H28007A958,H28007A980,H28007A9A8,H28007A9D0,H28007A9F8,H28007AA20,H28007AA48,H28007AA70,H28007AA98,H28007AAC0,H28007AAE8,H28007AB10,H28007AB38,H28007AB60,H28007AB88,H28007ABB0,H28007ABD8,H28007AC00,H28007AC28,H28007AC50,H28007AC78,H28007ACA0,H28007ACC8,H28007ACF0,H28007AD18,H28007AD40,H28007AD68,H28007AD90,H28007ADB8,H28007ADE0,H28007AE08,H28007AE30,H28007AE58,H28007AE80,H28007AEA8,H28007AED0,H28007AEF8,H28007AF20,H28007AF48,H28007AF70,H28007AF98,H28007AFC0,H28007AFE8,H28007B010,H28007B038,H28007B060,H28007B088,H28007B0B0,H28007B0D8,H28007B100,H28007B128,H28007B150,H28007B178,H28007B1A0,H28007B1C8,H28007B1F0,H28007B218,H28007B240,H28007B268,H28007B290,H28007B2B8,H28007B2E0,H28007B308,H28007B330,H28007B358,H28007B380,H28007B3A8,H28007B3D0,H28007B3F8,H28007B420,H28007B448,H28007B470,H28007B498,H28007B4C0,H28007B4E8,H28007B510,H28007B538,H28007B560,H28007B588,H28007B5B0,H28007B5D8,H28007B600,H28007B628,H28007B650,H28007B678,H28007B6A0,H28007B6C8,H28007B6F0,H28007B718,H28007B740,H28007B768,H28007B790,H28007B7B8,H28007B7E0,H28007B808,H28007B830,H28007B858,H28007B880,H28007B8A8,H28007B8D0,H28007B8F8,H28007B920,H28007B948,H28007B970,H28007B998,H28007B9C0,H28007B9E8,H28007BA10,H28007BA38,H28007BA60,H28007BA88,H28007BAB0,H28007BAD8,H28007BB00,H28007BB28,H28007BB50,H28007BB78,H28007BBA0,H28007BBC8,H28007BBF0,H28007BC18,H28007BC40,H28007BC68,H28007BC90,H28007BCB8,H28007BCE0,H28007BD08,H28007BD30 +280079558:t2:I2104047571236786,H280079570 +280079570:F1A:1.73672541216026300829e-15 +280079580:t2:I0,H280079598 +280079598:F1A:9.55866035145563388593e-17 +2800795A8:t2:I1693657211986787,H2800795C0 +2800795C0:F1A:1.27087048348106232125e-16 +2800795D0:t2:I1919380038271141,H2800795E8 +2800795E8:F1A:1.49097409624954739056e-16 +2800795F8:t2:I2015384402196343,H280079610 +280079610:F1A:1.66587336315862684825e-16 +280079620:t2:I2068365869448128,H280079638 +280079638:F1A:1.81361208101190286598e-16 +280079648:t2:I2101878624052573,H280079660 +280079660:F1A:1.94297201531355877741e-16 +280079670:t2:I2124958784102998,H280079688 +280079688:F1A:2.05895006284820926559e-16 +280079698:t2:I2141808670795147,H2800796B0 +2800796B0:F1A:2.16468605768954222017e-16 +2800796C0:t2:I2154644611568301,H2800796D8 +2800796D8:F1A:2.26229403922181158232e-16 +2800796E8:t2:I2164744887587275,H280079700 +280079700:F1A:2.35327189140458915861e-16 +280079710:t2:I2172897953696594,H280079728 +280079728:F1A:2.43872345574287710295e-16 +280079738:t2:I2179616279372365,H280079750 +280079750:F1A:2.51948798292742250158e-16 +280079760:t2:I2185247251868649,H280079778 +280079778:F1A:2.59621997725281025263e-16 +280079788:t2:I2190034623107822,H2800797A0 +2800797A0:F1A:2.66944074736482849525e-16 +2800797B0:t2:I2194154434521197,H2800797C8 +2800797C8:F1A:2.73957296851424460024e-16 +2800797D8:t2:I2197736978774660,H2800797F0 +2800797F0:F1A:2.80696460024848035749e-16 +280079800:t2:I2200880740891961,H280079818 +280079818:F1A:2.87190589041139304275e-16 +280079828:t2:I2203661538010620,H280079840 +280079840:F1A:2.93464174847288832596e-16 +280079850:t2:I2206138681109102,H280079868 +280079868:F1A:2.99538093367821129281e-16 +280079878:t2:I2208359231806599,H280079890 +280079890:F1A:3.05430300071924403235e-16 +2800798A0:t2:I2210361007258210,H2800798B8 +2800798B8:F1A:3.11156363389215722701e-16 +2800798C8:t2:I2212174742388539,H2800798E0 +2800798E0:F1A:3.16729880185818151712e-16 +2800798F0:t2:I2213825672704646,H280079908 +280079908:F1A:3.22162803505499051688e-16 +280079918:t2:I2215334711002614,H280079930 +280079930:F1A:3.27465704079397507757e-16 +280079940:t2:I2216719334487595,H280079958 +280079958:F1A:3.32647981168417099987e-16 +280079968:t2:I2217994262139172,H280079980 +280079980:F1A:3.37718034173532322460e-16 +280079990:t2:I2219171977965032,H2800799A8 +2800799A8:F1A:3.42683403531193559494e-16 +2800799B8:t2:I2220263139538712,H2800799D0 +2800799D0:F1A:3.47550887317297581051e-16 +2800799E0:t2:I2221276900117330,H2800799F8 +2800799F8:F1A:3.52326638460020314094e-16 +280079A08:t2:I2222221164932930,H280079A20 +280079A20:F1A:3.57016246339534940285e-16 +280079A30:t2:I2223102796829069,H280079A48 +280079A48:F1A:3.61624805715983390475e-16 +280079A58:t2:I2223927782546658,H280079A70 +280079A70:F1A:3.66156975296535397983e-16 +280079A80:t2:I2224701368170060,H280079A98 +280079A98:F1A:3.70617027772360773203e-16 +280079AA8:t2:I2225428170204312,H280079AC0 +280079AC0:F1A:3.75008892787477978824e-16 +280079AD0:t2:I2226112267248242,H280079AE8 +280079AE8:F1A:3.79336194015495537551e-16 +280079AF8:t2:I2226757276105256,H280079B10 +280079B10:F1A:3.83602281296772790489e-16 +280079B20:t2:I2227366415328399,H280079B38 +280079B38:F1A:3.87810258612502468569e-16 +280079B48:t2:I2227942558554684,H280079B60 +280079B60:F1A:3.91963008532576783898e-16 +280079B70:t2:I2228488279492521,H280079B88 +280079B88:F1A:3.96063213662563775295e-16 +280079B98:t2:I2229005890047222,H280079BB0 +280079BB0:F1A:4.00113375525466896220e-16 +280079BC0:t2:I2229497472775193,H280079BD8 +280079BD8:F1A:4.04115831241433324136e-16 +280079BE8:t2:I2229964908627060,H280079C00 +280079C00:F1A:4.08072768309604483145e-16 +280079C10:t2:I2230409900758597,H280079C28 +280079C28:F1A:4.11986237748074422111e-16 +280079C38:t2:I2230833995044585,H280079C50 +280079C50:F1A:4.15858165808280641140e-16 +280079C60:t2:I2231238597816133,H280079C78 +280079C78:F1A:4.19690364447407329203e-16 +280079C88:t2:I2231624991250191,H280079CA0 +280079CA0:F1A:4.23484540715207084057e-16 +280079CB0:t2:I2231994346765928,H280079CC8 +280079CC8:F1A:4.27242305188997608562e-16 +280079CD8:t2:I2232347736722750,H280079CF0 +280079CF0:F1A:4.30965179571629408372e-16 +280079D00:t2:I2232686144665934,H280079D18 +280079D18:F1A:4.34654603551287596498e-16 +280079D28:t2:I2233010474325959,H280079D40 +280079D40:F1A:4.38311941008545712860e-16 +280079D50:t2:I2233321557544881,H280079D68 +280079D68:F1A:4.41938485644706647812e-16 +280079D78:t2:I2233620161276071,H280079D90 +280079D90:F1A:4.45535466095791365718e-16 +280079DA0:t2:I2233906993781271,H280079DB8 +280079DB8:F1A:4.49104050588287499193e-16 +280079DC8:t2:I2234182710130335,H280079DE0 +280079DE0:F1A:4.52645351185713967562e-16 +280079DF0:t2:I2234447917093496,H280079E08 +280079E08:F1A:4.56160427669003807995e-16 +280079E18:t2:I2234703177503020,H280079E30 +280079E30:F1A:4.59650291088494072552e-16 +280079E40:t2:I2234949014150181,H280079E58 +280079E58:F1A:4.63115907020816468447e-16 +280079E68:t2:I2235185913274316,H280079E80 +280079E80:F1A:4.66558198560087516686e-16 +280079E90:t2:I2235414327692884,H280079EA8 +280079EA8:F1A:4.69978049069419496306e-16 +280079EB8:t2:I2235634679614920,H280079ED0 +280079ED0:F1A:4.73376304715832370759e-16 +280079EE0:t2:I2235847363174595,H280079EF8 +280079EF8:F1A:4.76753776809085264392e-16 +280079F08:t2:I2236052746716837,H280079F20 +280079F20:F1A:4.80111243962701550521e-16 +280079F30:t2:I2236251174862869,H280079F48 +280079F48:F1A:4.83449454093500800172e-16 +280079F58:t2:I2236442970379967,H280079F70 +280079F70:F1A:4.86769126274220868624e-16 +280079F80:t2:I2236628435876762,H280079F98 +280079F98:F1A:4.90070952452299375578e-16 +280079FA8:t2:I2236807855342765,H280079FC0 +280079FC0:F1A:4.93355599046541390746e-16 +280079FD0:t2:I2236981495548562,H280079FE8 +280079FE8:F1A:4.96623708432217831361e-16 +280079FF8:t2:I2237149607321147,H28007A010 +28007A010:F1A:4.99875900324090879179e-16 +28007A020:t2:I2237312426707209,H28007A038 +28007A038:F1A:5.03112773065931868701e-16 +28007A048:t2:I2237470176035652,H28007A060 +28007A060:F1A:5.06334904834271949789e-16 +28007A070:t2:I2237623064889403,H28007A088 +28007A088:F1A:5.09542854763389229036e-16 +28007A098:t2:I2237771290995388,H28007A0B0 +28007A0B0:F1A:5.12737163997879663320e-16 +28007A0C0:t2:I2237915041040597,H28007A0D8 +28007A0D8:F1A:5.15918356678573644216e-16 +28007A0E8:t2:I2238054491421305,H28007A100 +28007A100:F1A:5.19086940867034337507e-16 +28007A110:t2:I2238189808931712,H28007A128 +28007A128:F1A:5.22243409413404174016e-16 +28007A138:t2:I2238321151397660,H28007A150 +28007A150:F1A:5.25388240771945425068e-16 +28007A160:t2:I2238448668260432,H28007A178 +28007A178:F1A:5.28521899768238198395e-16 +28007A188:t2:I2238572501115169,H28007A1A0 +28007A1A0:F1A:5.31644838321661755014e-16 +28007A1B0:t2:I2238692784207942,H28007A1C8 +28007A1C8:F1A:5.34757496126472954545e-16 +28007A1D8:t2:I2238809644895133,H28007A1F0 +28007A1F0:F1A:5.37860301294523479377e-16 +28007A200:t2:I2238923204068402,H28007A218 +28007A218:F1A:5.40953670962399333412e-16 +28007A228:t2:I2239033576548190,H28007A240 +28007A240:F1A:5.44038011865546709133e-16 +28007A250:t2:I2239140871448443,H28007A268 +28007A268:F1A:5.47113720881736113194e-16 +28007A278:t2:I2239245192514958,H28007A290 +28007A290:F1A:5.50181185546033624966e-16 +28007A2A0:t2:I2239346638439541,H28007A2B8 +28007A2B8:F1A:5.53240784539278360189e-16 +28007A2C8:t2:I2239445303151952,H28007A2E0 +28007A2E0:F1A:5.56292888151909017422e-16 +28007A2F0:t2:I2239541276091442,H28007A308 +28007A308:F1A:5.59337858724846207834e-16 +28007A318:t2:I2239634642459498,H28007A330 +28007A330:F1A:5.62376051069004345873e-16 +28007A340:t2:I2239725483455293,H28007A358 +28007A358:F1A:5.65407812864896043333e-16 +28007A368:t2:I2239813876495186,H28007A380 +28007A380:F1A:5.68433485043681410254e-16 +28007A390:t2:I2239899895417494,H28007A3A8 +28007A3A8:F1A:5.71453402150920397185e-16 +28007A3B8:t2:I2239983610673676,H28007A3D0 +28007A3D0:F1A:5.74467892694196087369e-16 +28007A3E0:t2:I2240065089506935,H28007A3F8 +28007A3F8:F1A:5.77477279475696482238e-16 +28007A408:t2:I2240144396119183,H28007A420 +28007A420:F1A:5.80481879910768565067e-16 +28007A430:t2:I2240221591827230,H28007A448 +28007A448:F1A:5.83482006333389205125e-16 +28007A458:t2:I2240296735208969,H28007A470 +28007A470:F1A:5.86477966289436525146e-16 +28007A480:t2:I2240369882240293,H28007A498 +28007A498:F1A:5.89470062818587176437e-16 +28007A4A8:t2:I2240441086423386,H28007A4C0 +28007A4C0:F1A:5.92458594725613394191e-16 +28007A4D0:t2:I2240510398907004,H28007A4E8 +28007A4E8:F1A:5.95443856841805979446e-16 +28007A4F8:t2:I2240577868599305,H28007A510 +28007A510:F1A:5.98426140277202811378e-16 +28007A520:t2:I2240643542273726,H28007A538 +28007A538:F1A:6.01405732664266403201e-16 +28007A548:t2:I2240707464668391,H28007A560 +28007A560:F1A:6.04382918393612501158e-16 +28007A570:t2:I2240769678579486,H28007A588 +28007A588:F1A:6.07357978842360566070e-16 +28007A598:t2:I2240830224948980,H28007A5B0 +28007A5B0:F1A:6.10331192595643943370e-16 +28007A5C0:t2:I2240889142947082,H28007A5D8 +28007A5D8:F1A:6.13302835661791100703e-16 +28007A5E8:t2:I2240946470049769,H28007A600 +28007A600:F1A:6.16273181681659631279e-16 +28007A610:t2:I2241002242111691,H28007A628 +28007A628:F1A:6.19242502132584703827e-16 +28007A638:t2:I2241056493434746,H28007A650 +28007A650:F1A:6.22211066527378790876e-16 +28007A660:t2:I2241109256832602,H28007A678 +28007A678:F1A:6.25179142608799982782e-16 +28007A688:t2:I2241160563691400,H28007A6A0 +28007A6A0:F1A:6.28146996539889530228e-16 +28007A6B0:t2:I2241210444026879,H28007A6C8 +28007A6C8:F1A:6.31114893090560423885e-16 +28007A6D8:t2:I2241258926538122,H28007A6F0 +28007A6F0:F1A:6.34083095820806000914e-16 +28007A700:t2:I2241306038658137,H28007A718 +28007A718:F1A:6.37051867260881494958e-16 +28007A728:t2:I2241351806601435,H28007A740 +28007A740:F1A:6.40021469088802472988e-16 +28007A750:t2:I2241396255408788,H28007A768 +28007A768:F1A:6.42992162305489607018e-16 +28007A778:t2:I2241439408989313,H28007A790 +28007A790:F1A:6.45964207407883213683e-16 +28007A7A0:t2:I2241481290160038,H28007A7B8 +28007A7B8:F1A:6.48937864560339654762e-16 +28007A7C8:t2:I2241521920683062,H28007A7E0 +28007A7E0:F1A:6.51913393764615873896e-16 +28007A7F0:t2:I2241561321300462,H28007A808 +28007A808:F1A:6.54891055028741540820e-16 +28007A818:t2:I2241599511767028,H28007A830 +28007A830:F1A:6.57871108535074132917e-16 +28007A840:t2:I2241636510880960,H28007A858 +28007A858:F1A:6.60853814807825874393e-16 +28007A868:t2:I2241672336512612,H28007A880 +28007A880:F1A:6.63839434880350565911e-16 +28007A890:t2:I2241707005631362,H28007A8A8 +28007A8A8:F1A:6.66828230462474590443e-16 +28007A8B8:t2:I2241740534330713,H28007A8D0 +28007A8D0:F1A:6.69820464108155789432e-16 +28007A8E0:t2:I2241772937851689,H28007A8F8 +28007A8F8:F1A:6.72816399383753114503e-16 +28007A908:t2:I2241804230604585,H28007A920 +28007A920:F1A:6.75816301037190058595e-16 +28007A930:t2:I2241834426189161,H28007A948 +28007A948:F1A:6.78820435168298025779e-16 +28007A958:t2:I2241863537413311,H28007A970 +28007A970:F1A:6.81829069400625404640e-16 +28007A980:t2:I2241891576310281,H28007A998 +28007A998:F1A:6.84842473055003829332e-16 +28007A9A8:t2:I2241918554154466,H28007A9C0 +28007A9C0:F1A:6.87860917325166366447e-16 +28007A9D0:t2:I2241944481475843,H28007A9E8 +28007A9E8:F1A:6.90884675455716901816e-16 +28007A9F8:t2:I2241969368073071,H28007AA10 +28007AA10:F1A:6.93914022922756903880e-16 +28007AA20:t2:I2241993223025298,H28007AA38 +28007AA38:F1A:6.96949237617482938615e-16 +28007AA48:t2:I2242016054702685,H28007AA60 +28007AA60:F1A:6.99990600033076396841e-16 +28007AA70:t2:I2242037870775710,H28007AA88 +28007AA88:F1A:7.03038393455215079165e-16 +28007AA98:t2:I2242058678223225,H28007AAB0 +28007AAB0:F1A:7.06092904156548215323e-16 +28007AAC0:t2:I2242078483339331,H28007AAD8 +28007AAD8:F1A:7.09154421595487341536e-16 +28007AAE8:t2:I2242097291739040,H28007AB00 +28007AB00:F1A:7.12223238619677884046e-16 +28007AB10:t2:I2242115108362774,H28007AB28 +28007AB28:F1A:7.15299651674530299286e-16 +28007AB38:t2:I2242131937479672,H28007AB50 +28007AB50:F1A:7.18383961017206285811e-16 +28007AB60:t2:I2242147782689725,H28007AB78 +28007AB78:F1A:7.21476470936470670108e-16 +28007AB88:t2:I2242162646924736,H28007ABA0 +28007ABA0:F1A:7.24577489978838698238e-16 +28007ABB0:t2:I2242176532448092,H28007ABC8 +28007ABC8:F1A:7.27687331181469271523e-16 +28007ABD8:t2:I2242189440853337,H28007ABF0 +28007ABF0:F1A:7.30806312312274287356e-16 +28007AC00:t2:I2242201373061537,H28007AC18 +28007AC18:F1A:7.33934756117740475864e-16 +28007AC28:t2:I2242212329317416,H28007AC40 +28007AC40:F1A:7.37072990578983098735e-16 +28007AC50:t2:I2242222309184237,H28007AC68 +28007AC68:F1A:7.40221349176579965727e-16 +28007AC78:t2:I2242231311537397,H28007AC90 +28007AC90:F1A:7.43380171164764792799e-16 +28007ACA0:t2:I2242239334556717,H28007ACB8 +28007ACB8:F1A:7.46549801855588902443e-16 +28007ACC8:t2:I2242246375717369,H28007ACE0 +28007ACE0:F1A:7.49730592913697934980e-16 +28007ACF0:t2:I2242252431779415,H28007AD08 +28007AD08:F1A:7.52922902662405836870e-16 +28007AD18:t2:I2242257498775893,H28007AD30 +28007AD30:F1A:7.56127096401792173910e-16 +28007AD40:t2:I2242261571999416,H28007AD58 +28007AD58:F1A:7.59343546739588950455e-16 +28007AD68:t2:I2242264645987196,H28007AD80 +28007AD80:F1A:7.62572633935675575083e-16 +28007AD90:t2:I2242266714504453,H28007ADA8 +28007ADA8:F1A:7.65814746261048733621e-16 +28007ADB8:t2:I2242267770526109,H28007ADD0 +28007ADD0:F1A:7.69070280372191911716e-16 +28007ADE0:t2:I2242267806216711,H28007ADF8 +28007ADF8:F1A:7.72339641701829854238e-16 +28007AE08:t2:I2242266812908462,H28007AE20 +28007AE20:F1A:7.75623244867117442328e-16 +28007AE30:t2:I2242264781077289,H28007AE48 +28007AE48:F1A:7.78921514096385241347e-16 +28007AE58:t2:I2242261700316818,H28007AE70 +28007AE70:F1A:7.82234883675641084120e-16 +28007AE80:t2:I2242257559310145,H28007AE98 +28007AE98:F1A:7.85563798416108405147e-16 +28007AEA8:t2:I2242252345799276,H28007AEC0 +28007AEC0:F1A:7.88908714144175521500e-16 +28007AED0:t2:I2242246046552082,H28007AEE8 +28007AEE8:F1A:7.92270098215227085966e-16 +28007AEF8:t2:I2242238647326615,H28007AF10 +28007AF10:F1A:7.95648430052936617556e-16 +28007AF20:t2:I2242230132832625,H28007AF38 +28007AF38:F1A:7.99044201715713004887e-16 +28007AF48:t2:I2242220486690076,H28007AF60 +28007AF60:F1A:8.02457918492125913510e-16 +28007AF70:t2:I2242209691384458,H28007AF88 +28007AF88:F1A:8.05890099527265683393e-16 +28007AF98:t2:I2242197728218684,H28007AFB0 +28007AFB0:F1A:8.09341278482150088838e-16 +28007AFC0:t2:I2242184577261310,H28007AFD8 +28007AFD8:F1A:8.12812004228450077447e-16 +28007AFE8:t2:I2242170217290819,H28007B000 +28007B000:F1A:8.16302841580987746960e-16 +28007B010:t2:I2242154625735679,H28007B028 +28007B028:F1A:8.19814372070653286895e-16 +28007B038:t2:I2242137778609839,H28007B050 +28007B050:F1A:8.23347194760605041733e-16 +28007B060:t2:I2242119650443327,H28007B078 +28007B078:F1A:8.26901927108847002541e-16 +28007B088:t2:I2242100214207556,H28007B0A0 +28007B0A0:F1A:8.30479205880537371959e-16 +28007B0B0:t2:I2242079441234906,H28007B0C8 +28007B0C8:F1A:8.34079688113662879173e-16 +28007B0D8:t2:I2242057301132135,H28007B0F0 +28007B0F0:F1A:8.37704052142022163322e-16 +28007B100:t2:I2242033761687079,H28007B118 +28007B118:F1A:8.41352998679802824740e-16 +28007B128:t2:I2242008788768107,H28007B140 +28007B140:F1A:8.45027251972409677425e-16 +28007B150:t2:I2241982346215682,H28007B168 +28007B168:F1A:8.48727561018615493666e-16 +28007B178:t2:I2241954395725356,H28007B190 +28007B190:F1A:8.52454700869559619833e-16 +28007B1A0:t2:I2241924896721443,H28007B1B8 +28007B1B8:F1A:8.56209474010623332794e-16 +28007B1C8:t2:I2241893806220517,H28007B1E0 +28007B1E0:F1A:8.59992711832766460322e-16 +28007B1F0:t2:I2241861078683830,H28007B208 +28007B208:F1A:8.63805276200525889234e-16 +28007B218:t2:I2241826665857598,H28007B230 +28007B230:F1A:8.67648061124558160821e-16 +28007B240:t2:I2241790516600041,H28007B258 +28007B258:F1A:8.71521994547369801105e-16 +28007B268:t2:I2241752576693881,H28007B280 +28007B280:F1A:8.75428040251717494016e-16 +28007B290:t2:I2241712788642916,H28007B2A8 +28007B2A8:F1A:8.79367199902104274846e-16 +28007B2B8:t2:I2241671091451078,H28007B2D0 +28007B2D0:F1A:8.83340515230840795477e-16 +28007B2E0:t2:I2241627420382235,H28007B2F8 +28007B2F8:F1A:8.87349070381313453209e-16 +28007B308:t2:I2241581706698773,H28007B320 +28007B320:F1A:8.91393994422408613348e-16 +28007B330:t2:I2241533877376767,H28007B348 +28007B348:F1A:8.95476464049506774624e-16 +28007B358:t2:I2241483854795281,H28007B370 +28007B370:F1A:8.99597706489109936019e-16 +28007B380:t2:I2241431556397035,H28007B398 +28007B398:F1A:9.03759002626011752555e-16 +28007B3A8:t2:I2241376894317345,H28007B3C0 +28007B3C0:F1A:9.07961690374006801893e-16 +28007B3D0:t2:I2241319774977817,H28007B3E8 +28007B3E8:F1A:9.12207168313484609982e-16 +28007B3F8:t2:I2241260098640860,H28007B410 +28007B410:F1A:9.16496899621913531320e-16 +28007B420:t2:I2241197758920538,H28007B438 +28007B438:F1A:9.20832416326230760072e-16 +28007B448:t2:I2241132642244704,H28007B460 +28007B460:F1A:9.25215323909569332723e-16 +28007B470:t2:I2241064627262652,H28007B488 +28007B488:F1A:9.29647306308641672775e-16 +28007B498:t2:I2240993584191742,H28007B4B0 +28007B4B0:F1A:9.34130131342526512592e-16 +28007B4C0:t2:I2240919374095536,H28007B4D8 +28007B4D8:F1A:9.38665656618665978610e-16 +28007B4E8:t2:I2240841848084890,H28007B500 +28007B500:F1A:9.43255835967670653963e-16 +28007B510:t2:I2240760846432232,H28007B528 +28007B528:F1A:9.47902726465173824760e-16 +28007B538:t2:I2240676197587784,H28007B550 +28007B550:F1A:9.52608496106627869756e-16 +28007B560:t2:I2240587717084782,H28007B578 +28007B578:F1A:9.57375432209744962925e-16 +28007B588:t2:I2240495206318753,H28007B5A0 +28007B5A0:F1A:9.62205950629483835507e-16 +28007B5B0:t2:I2240398451183567,H28007B5C8 +28007B5C8:F1A:9.67102605882305424755e-16 +28007B5D8:t2:I2240297220544165,H28007B5F0 +28007B5F0:F1A:9.72068102290162588019e-16 +28007B600:t2:I2240191264522612,H28007B618 +28007B618:F1A:9.77105306270720883776e-16 +28007B628:t2:I2240080312570155,H28007B640 +28007B640:F1A:9.82217259919054108939e-16 +28007B650:t2:I2239964071293331,H28007B668 +28007B668:F1A:9.87407196048067106672e-16 +28007B678:t2:I2239842221996530,H28007B690 +28007B690:F1A:9.92678554880797648454e-16 +28007B6A0:t2:I2239714417896699,H28007B6B8 +28007B6B8:F1A:9.98035002618364491509e-16 +28007B6C8:t2:I2239580280957725,H28007B6E0 +28007B6E0:F1A:1.00348045214361808924e-15 +28007B6F0:t2:I2239439398282193,H28007B708 +28007B708:F1A:1.00901908616374569449e-15 +28007B718:t2:I2239291317986196,H28007B730 +28007B730:F1A:1.01465538314670861133e-15 +28007B740:t2:I2239135544468203,H28007B758 +28007B758:F1A:1.02039414646831236830e-15 +28007B768:t2:I2238971532964979,H28007B780 +28007B780:F1A:1.02624053726135674640e-15 +28007B790:t2:I2238798683265269,H28007B7A8 +28007B7A8:F1A:1.03220011154864564914e-15 +28007B7B8:t2:I2238616332424351,H28007B7D0 +28007B7D0:F1A:1.03827886235153991696e-15 +28007B7E0:t2:I2238423746288095,H28007B7F8 +28007B7F8:F1A:1.04448326760004705473e-15 +28007B808:t2:I2238220109591890,H28007B820 +28007B820:F1A:1.05082034483551946539e-15 +28007B830:t2:I2238004514345216,H28007B848 +28007B848:F1A:1.05729771390098902296e-15 +28007B858:t2:I2237775946143212,H28007B870 +28007B870:F1A:1.06392366906768007507e-15 +28007B880:t2:I2237533267957822,H28007B898 +28007B898:F1A:1.07070726236329937629e-15 +28007B8A8:t2:I2237275200846753,H28007B8C0 +28007B8C0:F1A:1.07765840026681064032e-15 +28007B8D0:t2:I2237000300869952,H28007B8E8 +28007B8E8:F1A:1.08478795644034246815e-15 +28007B8F8:t2:I2236706931309099,H28007B910 +28007B910:F1A:1.09210790381495627955e-15 +28007B920:t2:I2236393229029147,H28007B938 +28007B938:F1A:1.09963147017856282141e-15 +28007B948:t2:I2236057063479501,H28007B960 +28007B960:F1A:1.10737332249357520075e-15 +28007B970:t2:I2235695986373246,H28007B988 +28007B988:F1A:1.11534978658531549289e-15 +28007B998:t2:I2235307169458859,H28007B9B0 +28007B9B0:F1A:1.12357911071108333166e-15 +28007B9C0:t2:I2234887326941578,H28007B9D8 +28007B9D8:F1A:1.13208178401648463069e-15 +28007B9E8:t2:I2234432617919447,H28007BA00 +28007BA00:F1A:1.14088092425827801405e-15 +28007BA10:t2:I2233938522519765,H28007BA28 +28007BA28:F1A:1.15000275378397924458e-15 +28007BA38:t2:I2233399683022677,H28007BA50 +28007BA50:F1A:1.15947718914491892724e-15 +28007BA60:t2:I2232809697779198,H28007BA78 +28007BA78:F1A:1.16933857869109599762e-15 +28007BA88:t2:I2232160850599817,H28007BAA0 +28007BAA0:F1A:1.17962663529558008258e-15 +28007BAB0:t2:I2231443750584641,H28007BAC8 +28007BAC8:F1A:1.19038762992828902828e-15 +28007BAD8:t2:I2230646845562170,H28007BAF0 +28007BAF0:F1A:1.20167593925438186168e-15 +28007BB00:t2:I2229755753817986,H28007BB18 +28007BB18:F1A:1.21355608186668970279e-15 +28007BB28:t2:I2228752329126533,H28007BB40 +28007BB40:F1A:1.22610544174505612103e-15 +28007BB50:t2:I2227613325162504,H28007BB68 +28007BB68:F1A:1.23941797891632511077e-15 +28007BB78:t2:I2226308442121174,H28007BB90 +28007BB90:F1A:1.25360939266025668161e-15 +28007BBA0:t2:I2224797391720399,H28007BBB8 +28007BBB8:F1A:1.26882448142550100004e-15 +28007BBC8:t2:I2223025347823832,H28007BBE0 +28007BBE0:F1A:1.28524793190961088468e-15 +28007BBF0:t2:I2220915633329809,H28007BC08 +28007BC08:F1A:1.30312066346899851655e-15 +28007BC18:t2:I2218357446087030,H28007BC30 +28007BC30:F1A:1.32276557701953263307e-15 +28007BC40:t2:I2215184158448668,H28007BC58 +28007BC58:F1A:1.34463009250111712861e-15 +28007BC68:t2:I2211132412537369,H28007BC80 +28007BC80:F1A:1.36936068351285175171e-15 +28007BC90:t2:I2205758503851065,H28007BCA8 +28007BCA8:F1A:1.39794366727752399083e-15 +28007BCB8:t2:I2198248265654987,H28007BCD0 +28007BCD0:F1A:1.43199898696613284312e-15 +28007BCE0:t2:I2186916352102141,H28007BCF8 +28007BCF8:F1A:1.47448486035975958423e-15 +28007BD08:t2:I2167562552481814,H28007BD20 +28007BD20:F1A:1.53178727416111435375e-15 +28007BD30:t2:I2125549880839716,H28007BD48 +28007BD48:F1A:1.62276986753129683713e-15 +28007BD58:Mf0:H280010188: +28007BD70:lI0|I0 +28007BD80:lI0|H28007BD90 +28007BD90:lI0|H28007BDA0 +28007BDA0:lI0|H28007BDB0 +28007BDB0:lI0|H28007BDC0 +28007BDC0:lI0|H28007BDD0 +28007BDD0:lI0|H28007BDE0 +28007BDE0:lI0|H28007BDF0 +28007BDF0:lI0|H28007BE00 +28007BE00:lI0|H28007BE10 +28007BE10:lI0|H28007BE20 +28007BE20:lI0|H28007BE30 +28007BE30:lI0|H28007BE40 +28007BE40:lI0|H28007BE50 +28007BE50:lI0|H28007BE60 +28007BE60:lI0|H28007BE70 +28007BE70:lI0|N +28007BE80:lI114527183042123105|H28007BE90 +28007BE90:lI160423628620659260|H28007BEA0 +28007BEA0:lI284733707589872850|H28007BEB0 +28007BEB0:lI164435740288387503|H28007BEC0 +28007BEC0:lI259572741793888962|H28007BED0 +28007BED0:lI215793509705812255|H28007BEE0 +28007BEE0:lI228241955430903492|H28007BEF0 +28007BEF0:lI221708554683218499|H28007BF00 +28007BF00:lI212006596549813798|H28007BF10 +28007BF10:lI139215019150089363|H28007BF20 +28007BF20:lI23964000621384961|H28007BF30 +28007BF30:lI55201052708218217|H28007BF40 +28007BF40:lI112969240468397636|H28007BF50 +28007BF50:lI22130735059088892|H28007BF60 +28007BF60:lI244278597799509466|H28007BF70 +28007BF70:lI220175845070832114|H28007BF80 +28007BF80:lI43243288828|N +28007BF90:lI290573448171827402|H28007BFA0 +28007BFA0:lI382251779910418577|H28007BFB0 +28007BFB0:lI423857156240780192|H28007BFC0 +28007BFC0:lI317638803078791815|H28007BFD0 +28007BFD0:lI312577798172065765|H28007BFE0 +28007BFE0:lI305801842905235492|H28007BFF0 +28007BFF0:lI450887821400921554|H28007C000 +28007C000:lI490154825290594607|H28007C010 +28007C010:lI507224882549817556|H28007C020 +28007C020:lI305131922350994371|H28007C030 +28007C030:lI524004876356613068|H28007C040 +28007C040:lI399286492428034246|H28007C050 +28007C050:lI556129459533271918|H28007C060 +28007C060:lI302163523288674092|H28007C070 +28007C070:lI295571835370094372|H28007C080 +28007C080:lI487547435355635071|N +28007C090:lI412473694820566502|H28007C0A0 +28007C0A0:lI432883605991317039|H28007C0B0 +28007C0B0:lI525373508288112196|H28007C0C0 +28007C0C0:lI403915169708599875|H28007C0D0 +28007C0D0:lI319067783491633768|H28007C0E0 +28007C0E0:lI301226760020322060|H28007C0F0 +28007C0F0:lI311627678308842608|H28007C100 +28007C100:lI376040681981803602|H28007C110 +28007C110:lI339701046172540810|H28007C120 +28007C120:lI406476937554306621|H28007C130 +28007C130:lI319178240279900411|H28007C140 +28007C140:lI538961455727032748|H28007C150 +28007C150:lI343829982822907227|H28007C160 +28007C160:lI562090186051299616|H28007C170 +28007C170:lI294421712295949406|H28007C180 +28007C180:lI517056752316592047|N +28007C190:lI171572743241724754|N +28007C1A0:F1A:5.00000000000000000000e-01 +28007C1B0:lH28007C1E0|H28007C1C0 +28007C1C0:lH28007C1F8|H28007C1D0 +28007C1D0:lA6:global|N +28007C1E0:t2:A7:newline,A3:any +28007C1F8:t3:A7:capture,AD:all_but_first,A6:binary +28007C218:lI48|H28007C228 +28007C228:lI120|H28007C238 +28007C238:lI40|H28007C248 +28007C248:lI91|H28007C258 +28007C258:lI97|H28007C268 +28007C268:lI45|H28007C278 +28007C278:lI122|H28007C288 +28007C288:lI65|H28007C298 +28007C298:lI45|H28007C2A8 +28007C2A8:lI90|H28007C2B8 +28007C2B8:lI48|H28007C2C8 +28007C2C8:lI45|H28007C2D8 +28007C2D8:lI57|H28007C2E8 +28007C2E8:lI93|H28007C2F8 +28007C2F8:lI43|H28007C308 +28007C308:lI41|N +28007C318:lI49|H28007C328 +28007C328:lI54|H28007C338 +28007C338:lI35|H28007C348 +28007C348:lI126|H28007C358 +28007C358:lI115|H28007C368 +28007C368:lI44|H28007C378 +28007C378:lI126|H28007C388 +28007C388:lI110|N +28007C398:F1B:-2.73661237329758277870e-01 +28007C3A8:F1A:3.65415288536100879568e+00 +28007C3B8:F1B:-3.65415288536100879568e+00 +28007C3C8:F1B:-5.00000000000000000000e-01 +28007C3D8:t100:H28007CBE0,H28007CBF0,H28007CC00,H28007CC10,H28007CC20,H28007CC30,H28007CC40,H28007CC50,H28007CC60,H28007CC70,H28007CC80,H28007CC90,H28007CCA0,H28007CCB0,H28007CCC0,H28007CCD0,H28007CCE0,H28007CCF0,H28007CD00,H28007CD10,H28007CD20,H28007CD30,H28007CD40,H28007CD50,H28007CD60,H28007CD70,H28007CD80,H28007CD90,H28007CDA0,H28007CDB0,H28007CDC0,H28007CDD0,H28007CDE0,H28007CDF0,H28007CE00,H28007CE10,H28007CE20,H28007CE30,H28007CE40,H28007CE50,H28007CE60,H28007CE70,H28007CE80,H28007CE90,H28007CEA0,H28007CEB0,H28007CEC0,H28007CED0,H28007CEE0,H28007CEF0,H28007CF00,H28007CF10,H28007CF20,H28007CF30,H28007CF40,H28007CF50,H28007CF60,H28007CF70,H28007CF80,H28007CF90,H28007CFA0,H28007CFB0,H28007CFC0,H28007CFD0,H28007CFE0,H28007CFF0,H28007D000,H28007D010,H28007D020,H28007D030,H28007D040,H28007D050,H28007D060,H28007D070,H28007D080,H28007D090,H28007D0A0,H28007D0B0,H28007D0C0,H28007D0D0,H28007D0E0,H28007D0F0,H28007D100,H28007D110,H28007D120,H28007D130,H28007D140,H28007D150,H28007D160,H28007D170,H28007D180,H28007D190,H28007D1A0,H28007D1B0,H28007D1C0,H28007D1D0,H28007D1E0,H28007D1F0,H28007D200,H28007D210,H28007D220,H28007D230,H28007D240,H28007D250,H28007D260,H28007D270,H28007D280,H28007D290,H28007D2A0,H28007D2B0,H28007D2C0,H28007D2D0,H28007D2E0,H28007D2F0,H28007D300,H28007D310,H28007D320,H28007D330,H28007D340,H28007D350,H28007D360,H28007D370,H28007D380,H28007D390,H28007D3A0,H28007D3B0,H28007D3C0,H28007D3D0,H28007D3E0,H28007D3F0,H28007D400,H28007D410,H28007D420,H28007D430,H28007D440,H28007D450,H28007D460,H28007D470,H28007D480,H28007D490,H28007D4A0,H28007D4B0,H28007D4C0,H28007D4D0,H28007D4E0,H28007D4F0,H28007D500,H28007D510,H28007D520,H28007D530,H28007D540,H28007D550,H28007D560,H28007D570,H28007D580,H28007D590,H28007D5A0,H28007D5B0,H28007D5C0,H28007D5D0,H28007D5E0,H28007D5F0,H28007D600,H28007D610,H28007D620,H28007D630,H28007D640,H28007D650,H28007D660,H28007D670,H28007D680,H28007D690,H28007D6A0,H28007D6B0,H28007D6C0,H28007D6D0,H28007D6E0,H28007D6F0,H28007D700,H28007D710,H28007D720,H28007D730,H28007D740,H28007D750,H28007D760,H28007D770,H28007D780,H28007D790,H28007D7A0,H28007D7B0,H28007D7C0,H28007D7D0,H28007D7E0,H28007D7F0,H28007D800,H28007D810,H28007D820,H28007D830,H28007D840,H28007D850,H28007D860,H28007D870,H28007D880,H28007D890,H28007D8A0,H28007D8B0,H28007D8C0,H28007D8D0,H28007D8E0,H28007D8F0,H28007D900,H28007D910,H28007D920,H28007D930,H28007D940,H28007D950,H28007D960,H28007D970,H28007D980,H28007D990,H28007D9A0,H28007D9B0,H28007D9C0,H28007D9D0,H28007D9E0,H28007D9F0,H28007DA00,H28007DA10,H28007DA20,H28007DA30,H28007DA40,H28007DA50,H28007DA60,H28007DA70,H28007DA80,H28007DA90,H28007DAA0,H28007DAB0,H28007DAC0,H28007DAD0,H28007DAE0,H28007DAF0,H28007DB00,H28007DB10,H28007DB20,H28007DB30,H28007DB40,H28007DB50,H28007DB60,H28007DB70,H28007DB80,H28007DB90,H28007DBA0,H28007DBB0,H28007DBC0,H28007DBD0 +28007CBE0:F1A:1.00000000000000000000e+00 +28007CBF0:F1A:9.77101701267670819107e-01 +28007CC00:F1A:9.59879091800105999077e-01 +28007CC10:F1A:9.45198953442299094618e-01 +28007CC20:F1A:9.32060075959229905607e-01 +28007CC30:F1A:9.19991505039346457728e-01 +28007CC40:F1A:9.08726440052130324254e-01 +28007CC50:F1A:8.98095921898342974821e-01 +28007CC60:F1A:8.87984660755832821977e-01 +28007CC70:F1A:8.78309655808916844855e-01 +28007CC80:F1A:8.69008688036856491443e-01 +28007CC90:F1A:8.60033621196331088399e-01 +28007CCA0:F1A:8.51346258458677507264e-01 +28007CCB0:F1A:8.42915653112203733244e-01 +28007CCC0:F1A:8.34716292986882990590e-01 +28007CCD0:F1A:8.26726833946220929228e-01 +28007CCE0:F1A:8.18929191603701922553e-01 +28007CCF0:F1A:8.11307874312655719073e-01 +28007CD00:F1A:8.03849483170963829970e-01 +28007CD10:F1A:7.96542330422958411162e-01 +28007CD20:F1A:7.89376143566024035536e-01 +28007CD30:F1A:7.82341832654801949687e-01 +28007CD40:F1A:7.75431304981186619862e-01 +28007CD50:F1A:7.68637315798485709628e-01 +28007CD60:F1A:7.61953346836794831454e-01 +28007CD70:F1A:7.55373506507095671125e-01 +28007CD80:F1A:7.48892447219156376370e-01 +28007CD90:F1A:7.42505296340150611201e-01 +28007CDA0:F1A:7.36207598126862095000e-01 +28007CDB0:F1A:7.29995264561475676324e-01 +28007CDC0:F1A:7.23864533468629667290e-01 +28007CDD0:F1A:7.17811932630721516446e-01 +28007CDE0:F1A:7.11834248878247977110e-01 +28007CDF0:F1A:7.05928501332753755015e-01 +28007CE00:F1A:7.00091918136511170978e-01 +28007CE10:F1A:6.94321916126116267520e-01 +28007CE20:F1A:6.88616083004671364343e-01 +28007CE30:F1A:6.82972161644994302243e-01 +28007CE40:F1A:6.77388036218773081920e-01 +28007CE50:F1A:6.71861719897081655084e-01 +28007CE60:F1A:6.66391343908749766989e-01 +28007CE70:F1A:6.60975147776662774746e-01 +28007CE80:F1A:6.55611470579696931082e-01 +28007CE90:F1A:6.50298743110816368507e-01 +28007CEA0:F1A:6.45035480820821960357e-01 +28007CEB0:F1A:6.39820277453056140970e-01 +28007CEC0:F1A:6.34651799287623274992e-01 +28007CED0:F1A:6.29528779924836245918e-01 +28007CEE0:F1A:6.24450015547026060503e-01 +28007CEF0:F1A:6.19414360605833991258e-01 +28007CF00:F1A:6.14420723888913444810e-01 +28007CF10:F1A:6.09468064925773100882e-01 +28007CF20:F1A:6.04555390697467331940e-01 +28007CF30:F1A:5.99681752619124819326e-01 +28007CF40:F1A:5.94846243767986893047e-01 +28007CF50:F1A:5.90047996332825452903e-01 +28007CF60:F1A:5.85286179263370898163e-01 +28007CF70:F1A:5.80559996100790343121e-01 +28007CF80:F1A:5.75868682972353163052e-01 +28007CF90:F1A:5.71211506735252672051e-01 +28007CFA0:F1A:5.66587763256163889913e-01 +28007CFB0:F1A:5.61996775814523896742e-01 +28007CFC0:F1A:5.57437893618765500925e-01 +28007CFD0:F1A:5.52910490425831846473e-01 +28007CFE0:F1A:5.48413963255265368701e-01 +28007CFF0:F1A:5.43947731190025818293e-01 +28007D000:F1A:5.39511234256951577315e-01 +28007D010:F1A:5.35103932380457170126e-01 +28007D020:F1A:5.30725304403661501951e-01 +28007D030:F1A:5.26374847171684034919e-01 +28007D040:F1A:5.22052074672321397841e-01 +28007D050:F1A:5.17756517229755908183e-01 +28007D060:F1A:5.13487720747326514825e-01 +28007D070:F1A:5.09245245995747608525e-01 +28007D080:F1A:5.05028667943467901580e-01 +28007D090:F1A:5.00837575126148348836e-01 +28007D0A0:F1A:4.96671569052489325635e-01 +28007D0B0:F1A:4.92530263643868149170e-01 +28007D0C0:F1A:4.88413284705457584334e-01 +28007D0D0:F1A:4.84320269426682881164e-01 +28007D0E0:F1A:4.80250865909046420477e-01 +28007D0F0:F1A:4.76204732719505474670e-01 +28007D100:F1A:4.72181538467729755570e-01 +28007D110:F1A:4.68180961405693207844e-01 +28007D120:F1A:4.64202689048173910980e-01 +28007D130:F1A:4.60246417812842478767e-01 +28007D140:F1A:4.56311852678716101117e-01 +28007D150:F1A:4.52398706861848243221e-01 +28007D160:F1A:4.48506701507202731882e-01 +28007D170:F1A:4.44635565395739118522e-01 +28007D180:F1A:4.40785034665803765463e-01 +28007D190:F1A:4.36954852547985328481e-01 +28007D1A0:F1A:4.33144769112652094911e-01 +28007D1B0:F1A:4.29354541029441261202e-01 +28007D1C0:F1A:4.25583931338021803636e-01 +28007D1D0:F1A:4.21832709229495728120e-01 +28007D1E0:F1A:4.18100649837847948564e-01 +28007D1F0:F1A:4.14387534040890903597e-01 +28007D200:F1A:4.10693148270187990967e-01 +28007D210:F1A:4.07017284329473150173e-01 +28007D220:F1A:4.03359739221114288465e-01 +28007D230:F1A:3.99720314980197000132e-01 +28007D240:F1A:3.96098818515832229448e-01 +28007D250:F1A:3.92495061459315397467e-01 +28007D260:F1A:3.88908860018788549162e-01 +28007D270:F1A:3.85340034840077061418e-01 +28007D280:F1A:3.81788410873393435629e-01 +28007D290:F1A:3.78253817245618961795e-01 +28007D2A0:F1A:3.74736087137890860888e-01 +28007D2B0:F1A:3.71235057668239221140e-01 +28007D2C0:F1A:3.67750569779032254747e-01 +28007D2D0:F1A:3.64282468129003722535e-01 +28007D2E0:F1A:3.60830600989647753973e-01 +28007D2F0:F1A:3.57394820145780223175e-01 +28007D300:F1A:3.53974980800076555187e-01 +28007D310:F1A:3.50570941481405884410e-01 +28007D320:F1A:3.47182563956793477367e-01 +28007D330:F1A:3.43809713146850548515e-01 +28007D340:F1A:3.40452257044521644502e-01 +28007D350:F1A:3.37110066637005878487e-01 +28007D360:F1A:3.33783015830718232664e-01 +28007D370:F1A:3.30470981379163419867e-01 +28007D380:F1A:3.27173842813601289947e-01 +28007D390:F1A:3.23891482376391037779e-01 +28007D3A0:F1A:3.20623784956905300003e-01 +28007D3B0:F1A:3.17370638029913498812e-01 +28007D3C0:F1A:3.14131931596337066193e-01 +28007D3D0:F1A:3.10907558126286343025e-01 +28007D3E0:F1A:3.07697412504291889501e-01 +28007D3F0:F1A:3.04501391976649826709e-01 +28007D400:F1A:3.01319396100802883165e-01 +28007D410:F1A:2.98151326696685314843e-01 +28007D420:F1A:2.94997087799961643650e-01 +28007D430:F1A:2.91856585617094987928e-01 +28007D440:F1A:2.88729728482182701477e-01 +28007D450:F1A:2.85616426815501589509e-01 +28007D460:F1A:2.82516593083707412415e-01 +28007D470:F1A:2.79430141761637718112e-01 +28007D480:F1A:2.76356989295668098450e-01 +28007D490:F1A:2.73297054068576905639e-01 +28007D4A0:F1A:2.70250256365875185516e-01 +28007D4B0:F1A:2.67216518343561137971e-01 +28007D4C0:F1A:2.64195763997260801847e-01 +28007D4D0:F1A:2.61187919132720824944e-01 +28007D4E0:F1A:2.58192911337618902223e-01 +28007D4F0:F1A:2.55210669954661684145e-01 +28007D500:F1A:2.52241126055941899953e-01 +28007D510:F1A:2.49284212418528244859e-01 +28007D520:F1A:2.46339863501263633960e-01 +28007D530:F1A:2.43408015422750118040e-01 +28007D540:F1A:2.40488605940500393965e-01 +28007D550:F1A:2.37581574431237951828e-01 +28007D560:F1A:2.34686861872329899370e-01 +28007D570:F1A:2.31804410824338585906e-01 +28007D580:F1A:2.28934165414680229622e-01 +28007D590:F1A:2.26076071322380195427e-01 +28007D5A0:F1A:2.23230075763917457099e-01 +28007D5B0:F1A:2.20396127480151943212e-01 +28007D5C0:F1A:2.17574176724331130872e-01 +28007D5D0:F1A:2.14764175251173583536e-01 +28007D5E0:F1A:2.11966076307030154569e-01 +28007D5F0:F1A:2.09179834621124993710e-01 +28007D600:F1A:2.06405406397880714087e-01 +28007D610:F1A:2.03642749310334852941e-01 +28007D620:F1A:2.00891822494656563380e-01 +28007D630:F1A:1.98152586545775111215e-01 +28007D640:F1A:1.95425003514134276728e-01 +28007D650:F1A:1.92709036903589120415e-01 +28007D660:F1A:1.90004651670464957958e-01 +28007D670:F1A:1.87311814223800249257e-01 +28007D680:F1A:1.84630492426799269756e-01 +28007D690:F1A:1.81960655599522541648e-01 +28007D6A0:F1A:1.79302274522847665539e-01 +28007D6B0:F1A:1.76655321443734997233e-01 +28007D6C0:F1A:1.74019770081838748288e-01 +28007D6D0:F1A:1.71395595637505948616e-01 +28007D6E0:F1A:1.68782774801211510329e-01 +28007D6F0:F1A:1.66181285764482045142e-01 +28007D700:F1A:1.63591108232365695097e-01 +28007D710:F1A:1.61012223437511065027e-01 +28007D720:F1A:1.58444614155924312637e-01 +28007D730:F1A:1.55888264724479197465e-01 +28007D740:F1A:1.53343161060262828110e-01 +28007D750:F1A:1.50809290681845675763e-01 +28007D760:F1A:1.48286642732574525105e-01 +28007D770:F1A:1.45775208005994028060e-01 +28007D780:F1A:1.43274978973513406055e-01 +28007D790:F1A:1.40785949814444699690e-01 +28007D7A0:F1A:1.38308116448550705302e-01 +28007D7B0:F1A:1.35841476571253727545e-01 +28007D7C0:F1A:1.33386029691669127928e-01 +28007D7D0:F1A:1.30941777173644302579e-01 +28007D7E0:F1A:1.28508722279999515470e-01 +28007D7F0:F1A:1.26086870220185859326e-01 +28007D800:F1A:1.23676228201596544176e-01 +28007D810:F1A:1.21276805484790209388e-01 +28007D820:F1A:1.18888613442909976681e-01 +28007D830:F1A:1.16511665625610799646e-01 +28007D840:F1A:1.14145977827838349117e-01 +28007D850:F1A:1.11791568163838006544e-01 +28007D860:F1A:1.09448457146811631291e-01 +28007D870:F1A:1.07116667774683635428e-01 +28007D880:F1A:1.04796225622486902096e-01 +28007D890:F1A:1.02487158941935080358e-01 +28007D8A0:F1A:1.00189498768809809315e-01 +28007D8B0:F1A:9.79032790388622842226e-02 +28007D8C0:F1A:9.56285367130088187482e-02 +28007D8D0:F1A:9.33653119126908598302e-02 +28007D8E0:F1A:9.11136480663736342267e-02 +28007D8F0:F1A:8.88735920682757890576e-02 +28007D900:F1A:8.66451944505579607636e-02 +28007D910:F1A:8.44285095703533744471e-02 +28007D920:F1A:8.22235958132028627032e-02 +28007D930:F1A:8.00305158146630557514e-02 +28007D940:F1A:7.78493367020960391756e-02 +28007D950:F1A:7.56801303589270668581e-02 +28007D960:F1A:7.35229737139812683511e-02 +28007D970:F1A:7.13779490588903747783e-02 +28007D980:F1A:6.92451443970067692657e-02 +28007D990:F1A:6.71246538277884968737e-02 +28007D9A0:F1A:6.50165779712428421044e-02 +28007D9B0:F1A:6.29210244377581134900e-02 +28007D9C0:F1A:6.08381083495398641836e-02 +28007D9D0:F1A:5.87679529209337581097e-02 +28007D9E0:F1A:5.67106901062029017391e-02 +28007D9F0:F1A:5.46664613248889139085e-02 +28007DA00:F1A:5.26354182767921757735e-02 +28007DA10:F1A:5.06177238609477608833e-02 +28007DA20:F1A:4.86135532158685212956e-02 +28007DA30:F1A:4.66230949019303675396e-02 +28007DA40:F1A:4.46465522512944426592e-02 +28007DA50:F1A:4.26841449164744313194e-02 +28007DA60:F1A:4.07361106559409325012e-02 +28007DA70:F1A:3.88027074045261127777e-02 +28007DA80:F1A:3.68842156885672844968e-02 +28007DA90:F1A:3.49809414617160835403e-02 +28007DAA0:F1A:3.30932194585785224850e-02 +28007DAB0:F1A:3.12214171919202448935e-02 +28007DAC0:F1A:2.93659397581333136973e-02 +28007DAD0:F1A:2.75272356696030819079e-02 +28007DAE0:F1A:2.57058040085488964666e-02 +28007DAF0:F1A:2.39022033057958820101e-02 +28007DB00:F1A:2.21170627073088640890e-02 +28007DB10:F1A:2.03510962300445172324e-02 +28007DB20:F1A:1.86051212757246432761e-02 +28007DB30:F1A:1.68800831525431661861e-02 +28007DB40:F1A:1.51770883079353248457e-02 +28007DB50:F1A:1.34974506017398795249e-02 +28007DB60:F1A:1.18427578579078877224e-02 +28007DB70:F1A:1.02149714397014711870e-02 +28007DB80:F1A:8.61658276939873159217e-03 +28007DB90:F1A:7.05087547137322676050e-03 +28007DBA0:F1A:5.52240329925099675962e-03 +28007DBB0:F1A:4.03797259336303050042e-03 +28007DBC0:F1A:2.60907274610216273134e-03 +28007DBD0:F1A:1.26028593049859753868e-03 +28007DBE0:lI126|H28007DBF0 +28007DBF0:lI99|H28007DC00 +28007DC00:lI126|H28007DC10 +28007DC10:lI99|H28007DC20 +28007DC20:lI46|H28007DC30 +28007DC30:lI126|H28007DC40 +28007DC40:lI49|H28007DC50 +28007DC50:lI51|H28007DC60 +28007DC60:lI46|H28007DC70 +28007DC70:lI49|H28007DC80 +28007DC80:lI54|H28007DC90 +28007DC90:lI46|H28007DCA0 +28007DCA0:lI48|H28007DCB0 +28007DCB0:lI98|H28007DCC0 +28007DCC0:lI69|H28007DCD0 +28007DCD0:lI126|H28007DCE0 +28007DCE0:lI98|N +28007DCF0:lI108|N +28007DD00:lI114|H28007DCF0 +28007DD10:lI101|H28007DD00 +28007DD20:lI46|H28007DD10 +28007DD30:lI100|H28007DD20 +28007DD40:lI110|H28007DD30 +28007DD50:lI97|H28007DD40 +28007DD60:lI114|H28007DD50 +28007DD70:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAAAAAAAHcEcmFuZGEAYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DD98:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAABAAAAAHcEcmFuZGEBYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DDC0:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAACAAAAAHcEcmFuZGECYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DDE8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAADAAAAAHcEcmFuZGEDYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DE10:t6:A4:type,A4:next,A4:bits,A7:uniform,A9:uniform_n,A4:jump +28007DE48:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAEAAAAAHcEcmFuZGEEYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DE70:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAFAAAAAHcEcmFuZGEFYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DE98:t4:A3:max,A4:type,A4:next,A4:jump +28007DEC0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAGAAAAAHcEcmFuZGEGYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DEE8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAHAAAAAHcEcmFuZGEHYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DF10:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAIAAAAAHcEcmFuZGEIYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DF38:t7:A4:type,A4:next,A4:bits,A7:uniform,AD:weak_low_bits,A9:uniform_n,A4:jump +28007DF78:B18446744073709551615 +28007DF88:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAJAAAAAHcEcmFuZGEJYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DFB0:t3:A3:max,A4:type,A4:next +28007DFD0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAKAAAAAHcEcmFuZGEKYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007DFF8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAALAAAAAHcEcmFuZGELYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E020:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAMAAAAAHcEcmFuZGEMYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E048:t5:A4:type,A4:next,A4:bits,AD:weak_low_bits,A4:jump +28007E078:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAANAAAAAHcEcmFuZGENYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E0A0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAOAAAAAHcEcmFuZGEOYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E0C8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAPAAAAAHcEcmFuZGEPYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E0F0:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAQAAAAAHcEcmFuZGEQYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E118:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAARAAAAAHcEcmFuZGERYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E140:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAASAAAAAHcEcmFuZGESYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E168:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAATAAAAAHcEcmFuZGETYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E190:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAUAAAAAHcEcmFuZGEUYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E1B8:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAVAAAAAHcEcmFuZGEVYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E1E0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAWAAAAAHcEcmFuZGEWYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E208:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAXAAAAAHcEcmFuZGEXYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E230:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAYAAAAAHcEcmFuZGEYYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E258:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAZAAAAAHcEcmFuZGEZYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E280:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAaAAAAAHcEcmFuZGEaYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E2A8:t5:A4:type,A4:next,A4:bits,A7:uniform,A9:uniform_n +28007E2D8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAbAAAAAHcEcmFuZGEbYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E300:B2685821657736338717 +28007E310:B18446744073709551614 +28007E320:B1181783497276652981 +28007E330:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAcAAAAAHcEcmFuZGEcYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E358:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAdAAAAAHcEcmFuZGEdYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007E380:B11400714819323198485 +28007E390:B13787848793156543929 +28007E3A0:B10723151780598845931 +28007E3B0:B9223372036854775808 +28007F160:t2:A5:error,AB:not_boolean +28007F178:t2:A5:error,A17:global_group_not_runnig +28007F190:t2:A5:local,AC:global_group +28007F1A8:t1:AD:connection_id +28007F1B8:Mf1:H28007F1A8:A4:true +28007F1D8:lA9:undefined|N +28007F1E8:Mf0:H280010188: +28007F200:t2:A4:node,AB:test3844zty +28007F218:t2:A5:error,A15:illegal_function_call +28007F230:t2:A5:error,A1A:no global_groups definiton +28007F248:t2:H28007F260,H28007F278 +28007F260:Mf0:H280010188: +28007F278:Mf0:H280010188: +28007F290:t3:N,N,N +28007F2B0:lI103|H28007F2C0 +28007F2C0:lI108|H28007F2D0 +28007F2D0:lI111|H28007F2E0 +28007F2E0:lI98|H28007F2F0 +28007F2F0:lI97|H28007F300 +28007F300:lI108|H28007F310 +28007F310:lI95|H28007F320 +28007F320:lI103|H28007F330 +28007F330:lI114|H28007F340 +28007F340:lI111|H28007F350 +28007F350:lI117|H28007F360 +28007F360:lI112|H28007F370 +28007F370:lI58|H28007F380 +28007F380:lI32|H28007F390 +28007F390:lI67|H28007F3A0 +28007F3A0:lI111|H28007F3B0 +28007F3B0:lI117|H28007F3C0 +28007F3C0:lI108|H28007F3D0 +28007F3D0:lI100|H28007F3E0 +28007F3E0:lI32|H28007F3F0 +28007F3F0:lI110|H28007F400 +28007F400:lI111|H28007F410 +28007F410:lI116|H28007F420 +28007F420:lI32|H28007F430 +28007F430:lI115|H28007F440 +28007F440:lI121|H28007F450 +28007F450:lI110|H28007F460 +28007F460:lI99|H28007F470 +28007F470:lI104|H28007F480 +28007F480:lI114|H28007F490 +28007F490:lI111|H28007F4A0 +28007F4A0:lI110|H28007F4B0 +28007F4B0:lI105|H28007F4C0 +28007F4C0:lI122|H28007F4D0 +28007F4D0:lI101|H28007F4E0 +28007F4E0:lI32|H28007F4F0 +28007F4F0:lI119|H28007F500 +28007F500:lI105|H28007F510 +28007F510:lI116|H28007F520 +28007F520:lI104|H28007F530 +28007F530:lI32|H28007F540 +28007F540:lI110|H28007F550 +28007F550:lI111|H28007F560 +28007F560:lI100|H28007F570 +28007F570:lI101|H28007F580 +28007F580:lI32|H28007F590 +28007F590:lI126|H28007F5A0 +28007F5A0:lI112|H28007F5B0 +28007F5B0:lI126|H28007F5C0 +28007F5C0:lI110|H28007F5D0 +28007F5D0:lI98|H28007F5E0 +28007F5E0:lI101|H28007F5F0 +28007F5F0:lI99|H28007F600 +28007F600:lI97|H28007F610 +28007F610:lI117|H28007F620 +28007F620:lI115|H28007F630 +28007F630:lI101|H28007F640 +28007F640:lI32|H28007F650 +28007F650:lI103|H28007F660 +28007F660:lI108|H28007F670 +28007F670:lI111|H28007F680 +28007F680:lI98|H28007F690 +28007F690:lI97|H28007F6A0 +28007F6A0:lI108|H28007F6B0 +28007F6B0:lI95|H28007F6C0 +28007F6C0:lI103|H28007F6D0 +28007F6D0:lI114|H28007F6E0 +28007F6E0:lI111|H28007F6F0 +28007F6F0:lI117|H28007F700 +28007F700:lI112|H28007F710 +28007F710:lI115|H28007F720 +28007F720:lI32|H28007F730 +28007F730:lI112|H28007F740 +28007F740:lI97|H28007F750 +28007F750:lI114|H28007F760 +28007F760:lI97|H28007F770 +28007F770:lI109|H28007F780 +28007F780:lI101|H28007F790 +28007F790:lI116|H28007F7A0 +28007F7A0:lI101|H28007F7B0 +28007F7B0:lI114|H28007F7C0 +28007F7C0:lI32|H28007F7D0 +28007F7D0:lI119|H28007F7E0 +28007F7E0:lI101|H28007F7F0 +28007F7F0:lI114|H28007F800 +28007F800:lI101|H28007F810 +28007F810:lI32|H28007F820 +28007F820:lI110|H28007F830 +28007F830:lI111|H28007F840 +28007F840:lI116|H28007F850 +28007F850:lI32|H28007F860 +28007F860:lI105|H28007F870 +28007F870:lI110|H28007F880 +28007F880:lI32|H28007F890 +28007F890:lI97|H28007F8A0 +28007F8A0:lI103|H28007F8B0 +28007F8B0:lI114|H28007F8C0 +28007F8C0:lI101|H28007F8D0 +28007F8D0:lI101|H28007F8E0 +28007F8E0:lI109|H28007F8F0 +28007F8F0:lI101|H28007F900 +28007F900:lI110|H28007F910 +28007F910:lI116|H28007F920 +28007F920:lI46|H28007F930 +28007F930:lI126|H28007F940 +28007F940:lI110|N +28007F950:t2:A4:erpc,AC:noconnection +28007F968:t9:A5:gconf,A7:invalid,A9:undefined,N,A6:normal,N,A3:all,N,A7:no_conf +28007F9B8:t2:A2:ok,A3:all +28007F9D0:lI108|N +28007F9E0:lI114|H28007F9D0 +28007F9F0:lI101|H28007F9E0 +28007FA00:lI46|H28007F9F0 +28007FA10:lI112|H28007FA00 +28007FA20:lI117|H28007FA10 +28007FA30:lI111|H28007FA20 +28007FA40:lI114|H28007FA30 +28007FA50:lI103|H28007FA40 +28007FA60:lI95|H28007FA50 +28007FA70:lI108|H28007FA60 +28007FA80:lI97|H28007FA70 +28007FA90:lI98|H28007FA80 +28007FAA0:lI111|H28007FA90 +28007FAB0:lI108|H28007FAA0 +28007FAC0:lI103|H28007FAB0 +28007FAD0:E50:g3AAAABOAP90bxlFikMVMF8VpcuovIcAAAAAAAAAAHcMZ2xvYmFsX2dyb3VwYQBiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FAF8:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAABAAAAAHcMZ2xvYmFsX2dyb3VwYQFiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FB20:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAACAAAAAHcMZ2xvYmFsX2dyb3VwYQJiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FB48:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAADAAAAAHcMZ2xvYmFsX2dyb3VwYQNiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FB70:E50:g3AAAABOA/90bxlFikMVMF8VpcuovIcAAAAHAAAAAHcMZ2xvYmFsX2dyb3VwYQdiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FB98:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAAIAAAAAHcMZ2xvYmFsX2dyb3VwYQhiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +28007FC58:lN|N +28007FC68:t2:A4:erpc,A6:badarg +28007FC80:lH28007FCA0|H28007FC90 +28007FC90:lA7:monitor|N +28007FCA0:t2:A5:reply,AA:error_only +28007FCB8:t2:A4:erpc,AC:noconnection +28007FCD0:t2:A4:erpc,A7:timeout +28007FCE8:Mf0:H280010188: +28007FD00:lH28007FD10|N +28007FD10:t2:A5:reply,A2:no +28007FD28:lA4:info|N +28007FD38:t2:A5:reply,AA:error_only +28007FD50:t2:A5:error,H28007FD68 +28007FD68:t2:A4:erpc,A7:timeout +28007FD80:lI108|N +28007FD90:lI114|H28007FD80 +28007FDA0:lI101|H28007FD90 +28007FDB0:lI46|H28007FDA0 +28007FDC0:lI99|H28007FDB0 +28007FDD0:lI112|H28007FDC0 +28007FDE0:lI114|H28007FDD0 +28007FDF0:lI101|H28007FDE0 +28007FE00:E48:g3AAAABGArZvHmfGlHCs4XDYkOAiwhMAAAAAAAAAAHcEZXJwY2EAYgWzePNYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007FE28:E48:g3AAAABGA7ZvHmfGlHCs4XDYkOAiwhMAAAABAAAAAHcEZXJwY2EBYgWzePNYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +28007FE50:t1:AA:local_call +280082718:lA8:infinity|N +280082728:lH280082738|N +280082738:t2:A8:postpone,A5:false +280082750:lAA:gen_statem|N +280082760:t1:A3:t0q +280082770:Mf1:H280082760:N +280082790:lH2800827A0|N +2800827A0:t2:A8:internal,AA:init_state +2800827B8:t5:A5:state,H2800827E8,N,H280082810,A5:false +2800827E8:t2:A9:undefined,A9:undefined +280082800:t1:A3:t0q +280082810:Mf1:H280082800:N +280082830:t2:A4:exit,A6:normal +280082848:lI83|H280082858 +280082858:lI116|H280082868 +280082868:lI97|H280082878 +280082878:lI116|H280082888 +280082888:lI117|H280082898 +280082898:lI115|H2800828A8 +2800828A8:lI32|H2800828B8 +2800828B8:lI102|H2800828C8 +2800828C8:lI111|H2800828D8 +2800828D8:lI114|H2800828E8 +2800828E8:lI32|H2800828F8 +2800828F8:lI115|H280082908 +280082908:lI116|H280082918 +280082918:lI97|H280082928 +280082928:lI116|H280082938 +280082938:lI101|H280082948 +280082948:lI32|H280082958 +280082958:lI109|H280082968 +280082968:lI97|H280082978 +280082978:lI99|H280082988 +280082988:lI104|H280082998 +280082998:lI105|H2800829A8 +2800829A8:lI110|H2800829B8 +2800829B8:lI101|N +2800829C8:Mf0:H280010188: +2800829E0:lI83|H2800829F0 +2800829F0:lI116|H280082A00 +280082A00:lI97|H280082A10 +280082A10:lI116|H280082A20 +280082A20:lI101|N +280082A30:lI80|H280082A40 +280082A40:lI111|H280082A50 +280082A50:lI115|H280082A60 +280082A60:lI116|H280082A70 +280082A70:lI112|H280082A80 +280082A80:lI111|H280082A90 +280082A90:lI110|H280082AA0 +280082AA0:lI101|H280082AB0 +280082AB0:lI100|N +280082AC0:lI76|H280082AD0 +280082AD0:lI111|H280082AE0 +280082AE0:lI103|H280082AF0 +280082AF0:lI103|H280082B00 +280082B00:lI101|H280082B10 +280082B10:lI100|H280082B20 +280082B20:lI32|H280082B30 +280082B30:lI69|H280082B40 +280082B40:lI118|H280082B50 +280082B50:lI101|H280082B60 +280082B60:lI110|H280082B70 +280082B70:lI116|H280082B80 +280082B80:lI115|N +280082B90:lI84|H280082BA0 +280082BA0:lI105|H280082BB0 +280082BB0:lI109|H280082BC0 +280082BC0:lI101|H280082BD0 +280082BD0:lI45|H280082BE0 +280082BE0:lI111|H280082BF0 +280082BF0:lI117|H280082C00 +280082C00:lI116|H280082C10 +280082C10:lI115|N +280082C20:lI77|H280082C30 +280082C30:lI111|H280082C40 +280082C40:lI100|H280082C50 +280082C50:lI117|H280082C60 +280082C60:lI108|H280082C70 +280082C70:lI101|H280082C80 +280082C80:lI115|N +280082C90:lI80|H280082CA0 +280082CA0:lI97|H280082CB0 +280082CB0:lI114|H280082CC0 +280082CC0:lI101|H280082CD0 +280082CD0:lI110|H280082CE0 +280082CE0:lI116|N +280082CF0:lI83|H280082D00 +280082D00:lI116|H280082D10 +280082D10:lI97|H280082D20 +280082D20:lI116|H280082D30 +280082D30:lI117|H280082D40 +280082D40:lI115|N +280082D50:lI126|H280082D60 +280082D60:lI116|H280082D70 +280082D70:lI112|N +280082D80:lI126|H280082D90 +280082D90:lI116|H280082DA0 +280082DA0:lI112|H280082DB0 +280082DB0:lI32|H280082DC0 +280082DC0:lI61|H280082DD0 +280082DD0:lI62|H280082DE0 +280082DE0:lI32|H280082DF0 +280082DF0:lI126|H280082E00 +280082E00:lI116|H280082E10 +280082E10:lI112|N +280082E20:lI42|H280082E30 +280082E30:lI68|H280082E40 +280082E40:lI66|H280082E50 +280082E50:lI71|H280082E60 +280082E60:lI42|H280082E70 +280082E70:lI32|H280082E80 +280082E80:lI126|H280082E90 +280082E90:lI116|H280082EA0 +280082EA0:lI112|H280082EB0 +280082EB0:lI32|H280082EC0 +280082EC0:lI126|H280082ED0 +280082ED0:lI116|H280082EE0 +280082EE0:lI119|H280082EF0 +280082EF0:lI32|H280082F00 +280082F00:lI126|H280082F10 +280082F10:lI116|H280082F20 +280082F20:lI115|H280082F30 +280082F30:lI32|H280082F40 +280082F40:lI105|H280082F50 +280082F50:lI110|H280082F60 +280082F60:lI32|H280082F70 +280082F70:lI115|H280082F80 +280082F80:lI116|H280082F90 +280082F90:lI97|H280082FA0 +280082FA0:lI116|H280082FB0 +280082FB0:lI101|H280082FC0 +280082FC0:lI32|H280082FD0 +280082FD0:lI126|H280082FE0 +280082FE0:lI116|H280082FF0 +280082FF0:lI115|H280083000 +280083000:lI126|H280083010 +280083010:lI110|N +280083020:lI42|H280083030 +280083030:lI68|H280083040 +280083040:lI66|H280083050 +280083050:lI71|H280083060 +280083060:lI42|H280083070 +280083070:lI32|H280083080 +280083080:lI126|H280083090 +280083090:lI116|H2800830A0 +2800830A0:lI112|H2800830B0 +2800830B0:lI32|H2800830C0 +2800830C0:lI116|H2800830D0 +2800830D0:lI101|H2800830E0 +2800830E0:lI114|H2800830F0 +2800830F0:lI109|H280083100 +280083100:lI105|H280083110 +280083110:lI110|H280083120 +280083120:lI97|H280083130 +280083130:lI116|H280083140 +280083140:lI101|H280083150 +280083150:lI32|H280083160 +280083160:lI126|H280083170 +280083170:lI116|H280083180 +280083180:lI112|H280083190 +280083190:lI32|H2800831A0 +2800831A0:lI105|H2800831B0 +2800831B0:lI110|H2800831C0 +2800831C0:lI32|H2800831D0 +2800831D0:lI115|H2800831E0 +2800831E0:lI116|H2800831F0 +2800831F0:lI97|H280083200 +280083200:lI116|H280083210 +280083210:lI101|H280083220 +280083220:lI32|H280083230 +280083230:lI126|H280083240 +280083240:lI116|H280083250 +280083250:lI112|H280083260 +280083260:lI126|H280083270 +280083270:lI110|N +280083280:lI42|H280083290 +280083290:lI68|H2800832A0 +2800832A0:lI66|H2800832B0 +2800832B0:lI71|H2800832C0 +2800832C0:lI42|H2800832D0 +2800832D0:lI32|H2800832E0 +2800832E0:lI126|H2800832F0 +2800832F0:lI116|H280083300 +280083300:lI112|H280083310 +280083310:lI32|H280083320 +280083320:lI115|H280083330 +280083330:lI116|H280083340 +280083340:lI97|H280083350 +280083350:lI114|H280083360 +280083360:lI116|H280083370 +280083370:lI95|H280083380 +280083380:lI116|H280083390 +280083390:lI105|H2800833A0 +2800833A0:lI109|H2800833B0 +2800833B0:lI101|H2800833C0 +2800833C0:lI114|H2800833D0 +2800833D0:lI32|H2800833E0 +2800833E0:lI126|H2800833F0 +2800833F0:lI116|H280083400 +280083400:lI112|H280083410 +280083410:lI32|H280083420 +280083420:lI105|H280083430 +280083430:lI110|H280083440 +280083440:lI32|H280083450 +280083450:lI115|H280083460 +280083460:lI116|H280083470 +280083470:lI97|H280083480 +280083480:lI116|H280083490 +280083490:lI101|H2800834A0 +2800834A0:lI32|H2800834B0 +2800834B0:lI126|H2800834C0 +2800834C0:lI116|H2800834D0 +2800834D0:lI112|H2800834E0 +2800834E0:lI126|H2800834F0 +2800834F0:lI110|N +280083500:lI42|H280083510 +280083510:lI68|H280083520 +280083520:lI66|H280083530 +280083530:lI71|H280083540 +280083540:lI42|H280083550 +280083550:lI32|H280083560 +280083560:lI126|H280083570 +280083570:lI116|H280083580 +280083580:lI112|H280083590 +280083590:lI32|H2800835A0 +2800835A0:lI115|H2800835B0 +2800835B0:lI101|H2800835C0 +2800835C0:lI110|H2800835D0 +2800835D0:lI100|H2800835E0 +2800835E0:lI32|H2800835F0 +2800835F0:lI126|H280083600 +280083600:lI116|H280083610 +280083610:lI112|H280083620 +280083620:lI32|H280083630 +280083630:lI116|H280083640 +280083640:lI111|H280083650 +280083650:lI32|H280083660 +280083660:lI126|H280083670 +280083670:lI116|H280083680 +280083680:lI119|H280083690 +280083690:lI126|H2800836A0 +2800836A0:lI110|N +2800836B0:lI42|H2800836C0 +2800836C0:lI68|H2800836D0 +2800836D0:lI66|H2800836E0 +2800836E0:lI71|H2800836F0 +2800836F0:lI42|H280083700 +280083700:lI32|H280083710 +280083710:lI126|H280083720 +280083720:lI116|H280083730 +280083730:lI112|H280083740 +280083740:lI32|H280083750 +280083750:lI109|H280083760 +280083760:lI111|H280083770 +280083770:lI100|H280083780 +280083780:lI117|H280083790 +280083790:lI108|H2800837A0 +2800837A0:lI101|H2800837B0 +2800837B0:lI32|H2800837C0 +2800837C0:lI126|H2800837D0 +2800837D0:lI116|H2800837E0 +2800837E0:lI112|H2800837F0 +2800837F0:lI32|H280083800 +280083800:lI105|H280083810 +280083810:lI110|H280083820 +280083820:lI32|H280083830 +280083830:lI115|H280083840 +280083840:lI116|H280083850 +280083850:lI97|H280083860 +280083860:lI116|H280083870 +280083870:lI101|H280083880 +280083880:lI32|H280083890 +280083890:lI126|H2800838A0 +2800838A0:lI116|H2800838B0 +2800838B0:lI112|H2800838C0 +2800838C0:lI126|H2800838D0 +2800838D0:lI110|N +2800838E0:lI42|H2800838F0 +2800838F0:lI68|H280083900 +280083900:lI66|H280083910 +280083910:lI71|H280083920 +280083920:lI42|H280083930 +280083930:lI32|H280083940 +280083940:lI126|H280083950 +280083950:lI116|H280083960 +280083960:lI112|H280083970 +280083970:lI32|H280083980 +280083980:lI105|H280083990 +280083990:lI110|H2800839A0 +2800839A0:lI115|H2800839B0 +2800839B0:lI101|H2800839C0 +2800839C0:lI114|H2800839D0 +2800839D0:lI116|H2800839E0 +2800839E0:lI95|H2800839F0 +2800839F0:lI116|H280083A00 +280083A00:lI105|H280083A10 +280083A10:lI109|H280083A20 +280083A20:lI101|H280083A30 +280083A30:lI111|H280083A40 +280083A40:lI117|H280083A50 +280083A50:lI116|H280083A60 +280083A60:lI32|H280083A70 +280083A70:lI126|H280083A80 +280083A80:lI116|H280083A90 +280083A90:lI112|H280083AA0 +280083AA0:lI32|H280083AB0 +280083AB0:lI105|H280083AC0 +280083AC0:lI110|H280083AD0 +280083AD0:lI32|H280083AE0 +280083AE0:lI115|H280083AF0 +280083AF0:lI116|H280083B00 +280083B00:lI97|H280083B10 +280083B10:lI116|H280083B20 +280083B20:lI101|H280083B30 +280083B30:lI32|H280083B40 +280083B40:lI126|H280083B50 +280083B50:lI116|H280083B60 +280083B60:lI112|H280083B70 +280083B70:lI126|H280083B80 +280083B80:lI110|N +280083B90:lI42|H280083BA0 +280083BA0:lI68|H280083BB0 +280083BB0:lI66|H280083BC0 +280083BC0:lI71|H280083BD0 +280083BD0:lI42|H280083BE0 +280083BE0:lI32|H280083BF0 +280083BF0:lI126|H280083C00 +280083C00:lI116|H280083C10 +280083C10:lI112|H280083C20 +280083C20:lI32|H280083C30 +280083C30:lI114|H280083C40 +280083C40:lI101|H280083C50 +280083C50:lI99|H280083C60 +280083C60:lI101|H280083C70 +280083C70:lI105|H280083C80 +280083C80:lI118|H280083C90 +280083C90:lI101|H280083CA0 +280083CA0:lI32|H280083CB0 +280083CB0:lI126|H280083CC0 +280083CC0:lI116|H280083CD0 +280083CD0:lI115|H280083CE0 +280083CE0:lI32|H280083CF0 +280083CF0:lI105|H280083D00 +280083D00:lI110|H280083D10 +280083D10:lI32|H280083D20 +280083D20:lI115|H280083D30 +280083D30:lI116|H280083D40 +280083D40:lI97|H280083D50 +280083D50:lI116|H280083D60 +280083D60:lI101|H280083D70 +280083D70:lI32|H280083D80 +280083D80:lI126|H280083D90 +280083D90:lI116|H280083DA0 +280083DA0:lI112|H280083DB0 +280083DB0:lI126|H280083DC0 +280083DC0:lI110|N +280083DD0:lI42|H280083DE0 +280083DE0:lI68|H280083DF0 +280083DF0:lI66|H280083E00 +280083E00:lI71|H280083E10 +280083E10:lI42|H280083E20 +280083E20:lI32|H280083E30 +280083E30:lI126|H280083E40 +280083E40:lI116|H280083E50 +280083E50:lI112|H280083E60 +280083E60:lI32|H280083E70 +280083E70:lI101|H280083E80 +280083E80:lI110|H280083E90 +280083E90:lI116|H280083EA0 +280083EA0:lI101|H280083EB0 +280083EB0:lI114|H280083EC0 +280083EC0:lI32|H280083ED0 +280083ED0:lI126|H280083EE0 +280083EE0:lI116|H280083EF0 +280083EF0:lI112|H280083F00 +280083F00:lI32|H280083F10 +280083F10:lI105|H280083F20 +280083F20:lI110|H280083F30 +280083F30:lI32|H280083F40 +280083F40:lI115|H280083F50 +280083F50:lI116|H280083F60 +280083F60:lI97|H280083F70 +280083F70:lI116|H280083F80 +280083F80:lI101|H280083F90 +280083F90:lI32|H280083FA0 +280083FA0:lI126|H280083FB0 +280083FB0:lI116|H280083FC0 +280083FC0:lI112|H280083FD0 +280083FD0:lI126|H280083FE0 +280083FE0:lI110|N +280083FF0:lI99|H280084000 +280084000:lI97|H280084010 +280084010:lI108|H280084020 +280084020:lI108|H280084030 +280084030:lI32|H280084040 +280084040:lI126|H280084050 +280084050:lI116|H280084060 +280084060:lI112|H280084070 +280084070:lI32|H280084080 +280084080:lI102|H280084090 +280084090:lI114|H2800840A0 +2800840A0:lI111|H2800840B0 +2800840B0:lI109|H2800840C0 +2800840C0:lI32|H2800840D0 +2800840D0:lI126|H2800840E0 +2800840E0:lI116|H2800840F0 +2800840F0:lI119|N +280084100:lI126|H280084110 +280084110:lI116|H280084120 +280084120:lI119|H280084130 +280084130:lI32|H280084140 +280084140:lI126|H280084150 +280084150:lI116|H280084160 +280084160:lI112|N +280084170:t2:A2B:should_not_have_arrived_here_but_instead_in,H280084188 +280084188:t3:AA:gen_statem,A15:wakeup_from_hibernate,I3 +2800841A8:t2:A2A:bad_state_enter_action_from_state_function,A8:postpone +2800841C0:t2:A2A:bad_state_enter_action_from_state_function,A13:pop_callback_module +2800841D8:t2:AA:gen_statem,A9:terminate +2800841F0:t3:AC:error_logger,A6:domain,A9:report_cb +280084210:Mf3:H2800841F0:H280084268,H280084240,H2800842B8 +280084240:lA3:otp|N +280084250:t2:A3:tag,A9:report_cb +280084268:Mf2:H280084250:A5:error,H280084290 +280084290:E1C:g3F3Cmdlbl9zdGF0ZW13CmZvcm1hdF9sb2dhAQ== +2800842B8:E1C:g3F3Cmdlbl9zdGF0ZW13CmZvcm1hdF9sb2dhAg== +2800842E0:t3:A4:line,A4:file,A3:mfa +280084300:Mf3:H2800842E0:I2617,H280084330,H280084410 +280084330:lI103|H280084340 +280084340:lI101|H280084350 +280084350:lI110|H280084360 +280084360:lI95|H280084370 +280084370:lI115|H280084380 +280084380:lI116|H280084390 +280084390:lI97|H2800843A0 +2800843A0:lI116|H2800843B0 +2800843B0:lI101|H2800843C0 +2800843C0:lI109|H2800843D0 +2800843D0:lI46|H2800843E0 +2800843E0:lI101|H2800843F0 +2800843F0:lI114|H280084400 +280084400:lI108|N +280084410:t3:AA:gen_statem,AA:error_info,I7 +280084430:lA12:current_stacktrace|H280084440 +280084440:lAF:registered_name|N +280084450:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +280084478:Mf4:H280084450:A9:unlimited,A9:unlimited,A4:utf8,A5:false +2800844B0:lI46|H2800844C0 +2800844C0:lI32|H2800844D0 +2800844D0:lI83|H2800844E0 +2800844E0:lI116|H2800844F0 +2800844F0:lI97|H280084500 +280084500:lI99|H280084510 +280084510:lI107|H280084520 +280084520:lI58|H280084530 +280084530:lI32|N +280084540:lI46|H280084550 +280084550:lI32|H280084560 +280084560:lI76|H280084570 +280084570:lI97|H280084580 +280084580:lI115|H280084590 +280084590:lI116|H2800845A0 +2800845A0:lI32|H2800845B0 +2800845B0:lI101|H2800845C0 +2800845C0:lI118|H2800845D0 +2800845D0:lI101|H2800845E0 +2800845E0:lI110|H2800845F0 +2800845F0:lI116|H280084600 +280084600:lI58|H280084610 +280084610:lI32|N +280084620:lI46|H280084630 +280084630:lI32|H280084640 +280084640:lI76|H280084650 +280084650:lI111|H280084660 +280084660:lI103|H280084670 +280084670:lI58|H280084680 +280084680:lI32|N +280084690:lH2800846A0|N +2800846A0:lI46|N +2800846B0:lI46|H2800846C0 +2800846C0:lI32|H2800846D0 +2800846D0:lI83|H2800846E0 +2800846E0:lI116|H2800846F0 +2800846F0:lI97|H280084700 +280084700:lI116|H280084710 +280084710:lI101|H280084720 +280084720:lI58|H280084730 +280084730:lI32|N +280084740:lI32|H280084750 +280084750:lI116|H280084760 +280084760:lI101|H280084770 +280084770:lI114|H280084780 +280084780:lI109|H280084790 +280084790:lI105|H2800847A0 +2800847A0:lI110|H2800847B0 +2800847B0:lI97|H2800847C0 +2800847C0:lI116|H2800847D0 +2800847D0:lI105|H2800847E0 +2800847E0:lI110|H2800847F0 +2800847F0:lI103|H280084800 +280084800:lI46|H280084810 +280084810:lI32|H280084820 +280084820:lI82|H280084830 +280084830:lI101|H280084840 +280084840:lI97|H280084850 +280084850:lI115|H280084860 +280084860:lI111|H280084870 +280084870:lI110|H280084880 +280084880:lI58|H280084890 +280084890:lI32|N +2800848A0:lI83|H2800848B0 +2800848B0:lI116|H2800848C0 +2800848C0:lI97|H2800848D0 +2800848D0:lI116|H2800848E0 +2800848E0:lI101|H2800848F0 +2800848F0:lI32|H280084900 +280084900:lI109|H280084910 +280084910:lI97|H280084920 +280084920:lI99|H280084930 +280084930:lI104|H280084940 +280084940:lI105|H280084950 +280084950:lI110|H280084960 +280084960:lI101|H280084970 +280084970:lI32|N +280084980:lAB:state_enter|N +280084990:lI126|H2800849A0 +2800849A0:lI110|N +2800849B0:lI42|H2800849C0 +2800849C0:lI42|H2800849D0 +2800849D0:lI32|H2800849E0 +2800849E0:lI76|H2800849F0 +2800849F0:lI97|H280084A00 +280084A00:lI115|H280084A10 +280084A10:lI116|H280084A20 +280084A20:lI32|H280084A30 +280084A30:lI101|H280084A40 +280084A40:lI118|H280084A50 +280084A50:lI101|H280084A60 +280084A60:lI110|H280084A70 +280084A70:lI116|H280084A80 +280084A80:lI32|H280084A90 +280084A90:lI61|H280084AA0 +280084AA0:lI32|N +280084AB0:lI42|H280084AC0 +280084AC0:lI42|H280084AD0 +280084AD0:lI32|H280084AE0 +280084AE0:lI81|H280084AF0 +280084AF0:lI117|H280084B00 +280084B00:lI101|H280084B10 +280084B10:lI117|H280084B20 +280084B20:lI101|H280084B30 +280084B30:lI100|H280084B40 +280084B40:lI32|H280084B50 +280084B50:lI61|H280084B60 +280084B60:lI32|N +280084B70:lI42|H280084B80 +280084B80:lI42|H280084B90 +280084B90:lI32|H280084BA0 +280084BA0:lI80|H280084BB0 +280084BB0:lI111|H280084BC0 +280084BC0:lI115|H280084BD0 +280084BD0:lI116|H280084BE0 +280084BE0:lI112|H280084BF0 +280084BF0:lI111|H280084C00 +280084C00:lI110|H280084C10 +280084C10:lI101|H280084C20 +280084C20:lI100|H280084C30 +280084C30:lI32|H280084C40 +280084C40:lI61|H280084C50 +280084C50:lI32|N +280084C60:lI42|H280084C70 +280084C70:lI42|H280084C80 +280084C80:lI32|H280084C90 +280084C90:lI83|H280084CA0 +280084CA0:lI116|H280084CB0 +280084CB0:lI97|H280084CC0 +280084CC0:lI99|H280084CD0 +280084CD0:lI107|H280084CE0 +280084CE0:lI116|H280084CF0 +280084CF0:lI114|H280084D00 +280084D00:lI97|H280084D10 +280084D10:lI99|H280084D20 +280084D20:lI101|H280084D30 +280084D30:lI32|H280084D40 +280084D40:lI61|H280084D50 +280084D50:lI126|H280084D60 +280084D60:lI110|H280084D70 +280084D70:lI42|H280084D80 +280084D80:lI42|H280084D90 +280084D90:lI32|H280084DA0 +280084DA0:lI32|N +280084DB0:lI42|H280084DC0 +280084DC0:lI42|H280084DD0 +280084DD0:lI32|H280084DE0 +280084DE0:lI84|H280084DF0 +280084DF0:lI105|H280084E00 +280084E00:lI109|H280084E10 +280084E10:lI101|H280084E20 +280084E20:lI45|H280084E30 +280084E30:lI111|H280084E40 +280084E40:lI117|H280084E50 +280084E50:lI116|H280084E60 +280084E60:lI115|H280084E70 +280084E70:lI58|H280084E80 +280084E80:lI32|N +280084E90:lI42|H280084EA0 +280084EA0:lI42|H280084EB0 +280084EB0:lI32|H280084EC0 +280084EC0:lI76|H280084ED0 +280084ED0:lI111|H280084EE0 +280084EE0:lI103|H280084EF0 +280084EF0:lI32|H280084F00 +280084F00:lI61|H280084F10 +280084F10:lI126|H280084F20 +280084F20:lI110|H280084F30 +280084F30:lI42|H280084F40 +280084F40:lI42|H280084F50 +280084F50:lI32|H280084F60 +280084F60:lI32|N +280084F70:lI42|H280084F80 +280084F80:lI42|H280084F90 +280084F90:lI32|H280084FA0 +280084FA0:lI67|H280084FB0 +280084FB0:lI97|H280084FC0 +280084FC0:lI108|H280084FD0 +280084FD0:lI108|H280084FE0 +280084FE0:lI98|H280084FF0 +280084FF0:lI97|H280085000 +280085000:lI99|H280085010 +280085010:lI107|H280085020 +280085020:lI32|H280085030 +280085030:lI109|H280085040 +280085040:lI111|H280085050 +280085050:lI100|H280085060 +280085060:lI101|H280085070 +280085070:lI32|H280085080 +280085080:lI61|H280085090 +280085090:lI32|N +2800850A0:lI42|H2800850B0 +2800850B0:lI42|H2800850C0 +2800850C0:lI32|H2800850D0 +2800850D0:lI67|H2800850E0 +2800850E0:lI97|H2800850F0 +2800850F0:lI108|H280085100 +280085100:lI108|H280085110 +280085110:lI98|H280085120 +280085120:lI97|H280085130 +280085130:lI99|H280085140 +280085140:lI107|H280085150 +280085150:lI32|H280085160 +280085160:lI109|H280085170 +280085170:lI111|H280085180 +280085180:lI100|H280085190 +280085190:lI117|H2800851A0 +2800851A0:lI108|H2800851B0 +2800851B0:lI101|H2800851C0 +2800851C0:lI115|H2800851D0 +2800851D0:lI32|H2800851E0 +2800851E0:lI61|H2800851F0 +2800851F0:lI32|N +280085200:lI58|N +280085210:lI42|H280085220 +280085220:lI42|H280085230 +280085230:lI32|H280085240 +280085240:lI82|H280085250 +280085250:lI101|H280085260 +280085260:lI97|H280085270 +280085270:lI115|H280085280 +280085280:lI111|H280085290 +280085290:lI110|H2800852A0 +2800852A0:lI32|H2800852B0 +2800852B0:lI102|H2800852C0 +2800852C0:lI111|H2800852D0 +2800852D0:lI114|H2800852E0 +2800852E0:lI32|H2800852F0 +2800852F0:lI116|H280085300 +280085300:lI101|H280085310 +280085310:lI114|H280085320 +280085320:lI109|H280085330 +280085330:lI105|H280085340 +280085340:lI110|H280085350 +280085350:lI97|H280085360 +280085360:lI116|H280085370 +280085370:lI105|H280085380 +280085380:lI111|H280085390 +280085390:lI110|H2800853A0 +2800853A0:lI32|H2800853B0 +2800853B0:lI61|H2800853C0 +2800853C0:lI32|N +2800853D0:lI42|H2800853E0 +2800853E0:lI42|H2800853F0 +2800853F0:lI32|H280085400 +280085400:lI87|H280085410 +280085410:lI104|H280085420 +280085420:lI101|H280085430 +280085430:lI110|H280085440 +280085440:lI32|H280085450 +280085450:lI115|H280085460 +280085460:lI101|H280085470 +280085470:lI114|H280085480 +280085480:lI118|H280085490 +280085490:lI101|H2800854A0 +2800854A0:lI114|H2800854B0 +2800854B0:lI32|H2800854C0 +2800854C0:lI115|H2800854D0 +2800854D0:lI116|H2800854E0 +2800854E0:lI97|H2800854F0 +2800854F0:lI116|H280085500 +280085500:lI101|H280085510 +280085510:lI32|H280085520 +280085520:lI32|H280085530 +280085530:lI61|H280085540 +280085540:lI32|N +280085550:lI32|H280085560 +280085560:lI116|H280085570 +280085570:lI101|H280085580 +280085580:lI114|H280085590 +280085590:lI109|H2800855A0 +2800855A0:lI105|H2800855B0 +2800855B0:lI110|H2800855C0 +2800855C0:lI97|H2800855D0 +2800855D0:lI116|H2800855E0 +2800855E0:lI105|H2800855F0 +2800855F0:lI110|H280085600 +280085600:lI103|H280085610 +280085610:lI126|H280085620 +280085620:lI110|N +280085630:lI42|H280085640 +280085640:lI42|H280085650 +280085650:lI32|H280085660 +280085660:lI83|H280085670 +280085670:lI116|H280085680 +280085680:lI97|H280085690 +280085690:lI116|H2800856A0 +2800856A0:lI101|H2800856B0 +2800856B0:lI32|H2800856C0 +2800856C0:lI109|H2800856D0 +2800856D0:lI97|H2800856E0 +2800856E0:lI99|H2800856F0 +2800856F0:lI104|H280085700 +280085700:lI105|H280085710 +280085710:lI110|H280085720 +280085720:lI101|H280085730 +280085730:lI32|N +280085740:lI32|H280085750 +280085750:lI115|H280085760 +280085760:lI116|H280085770 +280085770:lI97|H280085780 +280085780:lI99|H280085790 +280085790:lI107|H2800857A0 +2800857A0:lI116|H2800857B0 +2800857B0:lI114|H2800857C0 +2800857C0:lI97|H2800857D0 +2800857D0:lI99|H2800857E0 +2800857E0:lI101|H2800857F0 +2800857F0:lI58|H280085800 +280085800:lI32|N +280085810:lI32|H280085820 +280085820:lI67|H280085830 +280085830:lI108|H280085840 +280085840:lI105|H280085850 +280085850:lI101|H280085860 +280085860:lI110|H280085870 +280085870:lI116|H280085880 +280085880:lI32|N +280085890:lI32|H2800858A0 +2800858A0:lI67|H2800858B0 +2800858B0:lI108|H2800858C0 +2800858C0:lI105|H2800858D0 +2800858D0:lI101|H2800858E0 +2800858E0:lI110|H2800858F0 +2800858F0:lI116|H280085900 +280085900:lI32|H280085910 +280085910:lI126|H280085920 +280085920:lI48|H280085930 +280085930:lI112|H280085940 +280085940:lI32|H280085950 +280085950:lI105|H280085960 +280085960:lI115|H280085970 +280085970:lI32|H280085980 +280085980:lI114|H280085990 +280085990:lI101|H2800859A0 +2800859A0:lI109|H2800859B0 +2800859B0:lI111|H2800859C0 +2800859C0:lI116|H2800859D0 +2800859D0:lI101|H2800859E0 +2800859E0:lI32|H2800859F0 +2800859F0:lI111|H280085A00 +280085A00:lI110|H280085A10 +280085A10:lI32|H280085A20 +280085A20:lI110|H280085A30 +280085A30:lI111|H280085A40 +280085A40:lI100|H280085A50 +280085A50:lI101|H280085A60 +280085A60:lI32|H280085A70 +280085A70:lI126|H280085A80 +280085A80:lI48|H280085A90 +280085A90:lI112|H280085AA0 +280085AA0:lI46|N +280085AB0:lI32|H280085AC0 +280085AC0:lI67|H280085AD0 +280085AD0:lI108|H280085AE0 +280085AE0:lI105|H280085AF0 +280085AF0:lI101|H280085B00 +280085B00:lI110|H280085B10 +280085B10:lI116|H280085B20 +280085B20:lI32|H280085B30 +280085B30:lI126|H280085B40 +280085B40:lI48|H280085B50 +280085B50:lI112|H280085B60 +280085B60:lI32|H280085B70 +280085B70:lI105|H280085B80 +280085B80:lI115|H280085B90 +280085B90:lI32|H280085BA0 +280085BA0:lI100|H280085BB0 +280085BB0:lI101|H280085BC0 +280085BC0:lI97|H280085BD0 +280085BD0:lI100|H280085BE0 +280085BE0:lI46|N +280085BF0:t2:N,N +280085C08:lH280085C18|N +280085C18:lI126|H280085C28 +280085C28:lI110|N +280085C38:lI32|H280085C48 +280085C48:lI115|H280085C58 +280085C58:lI116|H280085C68 +280085C68:lI97|H280085C78 +280085C78:lI99|H280085C88 +280085C88:lI107|H280085C98 +280085C98:lI116|H280085CA8 +280085CA8:lI114|H280085CB8 +280085CB8:lI97|H280085CC8 +280085CC8:lI99|H280085CD8 +280085CD8:lI101|H280085CE8 +280085CE8:lI126|H280085CF8 +280085CF8:lI110|H280085D08 +280085D08:lI42|H280085D18 +280085D18:lI42|H280085D28 +280085D28:lI32|N +280085D38:lI42|H280085D48 +280085D48:lI42|H280085D58 +280085D58:lI32|H280085D68 +280085D68:lI67|H280085D78 +280085D78:lI108|H280085D88 +280085D88:lI105|H280085D98 +280085D98:lI101|H280085DA8 +280085DA8:lI110|H280085DB8 +280085DB8:lI116|H280085DC8 +280085DC8:lI32|N +280085DD8:lI42|H280085DE8 +280085DE8:lI42|H280085DF8 +280085DF8:lI32|H280085E08 +280085E08:lI67|H280085E18 +280085E18:lI108|H280085E28 +280085E28:lI105|H280085E38 +280085E38:lI101|H280085E48 +280085E48:lI110|H280085E58 +280085E58:lI116|H280085E68 +280085E68:lI32|H280085E78 +280085E78:lI126|H280085E88 +280085E88:lI112|H280085E98 +280085E98:lI32|H280085EA8 +280085EA8:lI105|H280085EB8 +280085EB8:lI115|H280085EC8 +280085EC8:lI32|H280085ED8 +280085ED8:lI114|H280085EE8 +280085EE8:lI101|H280085EF8 +280085EF8:lI109|H280085F08 +280085F08:lI111|H280085F18 +280085F18:lI116|H280085F28 +280085F28:lI101|H280085F38 +280085F38:lI32|H280085F48 +280085F48:lI111|H280085F58 +280085F58:lI110|H280085F68 +280085F68:lI32|H280085F78 +280085F78:lI110|H280085F88 +280085F88:lI111|H280085F98 +280085F98:lI100|H280085FA8 +280085FA8:lI101|H280085FB8 +280085FB8:lI32|H280085FC8 +280085FC8:lI126|H280085FD8 +280085FD8:lI112|H280085FE8 +280085FE8:lI126|H280085FF8 +280085FF8:lI110|N +280086008:lI42|H280086018 +280086018:lI42|H280086028 +280086028:lI32|H280086038 +280086038:lI67|H280086048 +280086048:lI108|H280086058 +280086058:lI105|H280086068 +280086068:lI101|H280086078 +280086078:lI110|H280086088 +280086088:lI116|H280086098 +280086098:lI32|H2800860A8 +2800860A8:lI126|H2800860B8 +2800860B8:lI112|H2800860C8 +2800860C8:lI32|H2800860D8 +2800860D8:lI105|H2800860E8 +2800860E8:lI115|H2800860F8 +2800860F8:lI32|H280086108 +280086108:lI100|H280086118 +280086118:lI101|H280086128 +280086128:lI97|H280086138 +280086138:lI100|H280086148 +280086148:lI126|H280086158 +280086158:lI110|N +280086168:lI112|N +280086178:lI80|N +280086188:lI48|N +280086198:lI116|N +2800861A8:lH280086208|H2800861B8 +2800861B8:lH280086220|H2800861C8 +2800861C8:lH280086238|H2800861D8 +2800861D8:lH280086250|H2800861E8 +2800861E8:lH280086268|H2800861F8 +2800861F8:lH280086280|N +280086208:t2:AD:format_status,I1 +280086220:t2:AD:format_status,I2 +280086238:t2:A9:terminate,I3 +280086250:t2:AB:code_change,I4 +280086268:t2:AA:state_name,I3 +280086280:t2:AC:handle_event,I4 +280086298:lH280086318|H2800862A8 +2800862A8:lH280086330|H2800862B8 +2800862B8:lH280086348|H2800862C8 +2800862C8:lH280086360|H2800862D8 +2800862D8:lH280086378|H2800862E8 +2800862E8:lH280086390|H2800862F8 +2800862F8:lH2800863A8|H280086308 +280086308:lH2800863C0|N +280086318:t2:A4:init,I1 +280086330:t2:AD:callback_mode,I0 +280086348:t2:AA:state_name,I3 +280086360:t2:AC:handle_event,I4 +280086378:t2:A9:terminate,I3 +280086390:t2:AB:code_change,I4 +2800863A8:t2:AD:format_status,I2 +2800863C0:t2:AD:format_status,I1 +2800863D8:lI108|N +2800863E8:lI114|H2800863D8 +2800863F8:lI101|H2800863E8 +280086408:lI46|H2800863F8 +280086418:lI109|H280086408 +280086428:lI101|H280086418 +280086438:lI116|H280086428 +280086448:lI97|H280086438 +280086458:lI116|H280086448 +280086468:lI115|H280086458 +280086478:lI95|H280086468 +280086488:lI110|H280086478 +280086498:lI101|H280086488 +2800864A8:lI103|H280086498 +2800864B8:t5:A4:data,A3:log,A5:state,A9:postponed,A8:timeouts +2800864E8:E4E:g3AAAABMA28avFfTiJ0lhkokoxIXuNAAAAAAAAAAAHcKZ2VuX3N0YXRlbWEAYgN41eJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +280086510:t7:A4:data,A6:reason,A3:log,A5:state,A5:queue,A9:postponed,A8:timeouts +280086550:tC:A5:label,A4:name,A6:reason,A3:log,A5:state,A5:queue,A7:modules,AB:client_info,AD:callback_mode,A9:postponed,A8:timeouts,AB:state_enter +2800865B8:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line +2800865F8:Mf0:H280010188: +280086610:lI112|H280086620 +280086620:lI114|H280086630 +280086630:lI105|H280086640 +280086640:lI109|H280086650 +280086650:lI95|H280086660 +280086660:lI116|H280086670 +280086670:lI116|H280086680 +280086680:lI121|N +280086690:t2:A5:error,A7:enotsup +2800866A8:lH2800866D8|H2800866B8 +2800866B8:lH280086738|H2800866C8 +2800866C8:lH2800867B8|N +2800866D8:lI76|H2800866E8 +2800866E8:lI67|H2800866F8 +2800866F8:lI95|H280086708 +280086708:lI65|H280086718 +280086718:lI76|H280086728 +280086728:lI76|N +280086738:lI76|H280086748 +280086748:lI67|H280086758 +280086758:lI95|H280086768 +280086768:lI67|H280086778 +280086778:lI84|H280086788 +280086788:lI89|H280086798 +280086798:lI80|H2800867A8 +2800867A8:lI69|N +2800867B8:lI76|H2800867C8 +2800867C8:lI65|H2800867D8 +2800867D8:lI78|H2800867E8 +2800867E8:lI71|N +2800867F8:lA7:unicode|N +280086808:Yc1309301C0:0:9C +280086838:Yh7:G1tIG1sySg== +280086850:Yh3:G1tB +280086868:Yh1:Cg== +280086880:Yh1:CA== +280086898:Yh3:G1tD +2800868B0:Yh4:G1sxSQ== +2800868C8:Yh3:G1tK +2800868E0:Yh4:G1s2bg== +2800868F8:Yh15:G1xbKFswLTldKyk7KFswLTldKylS +280086920:t4:A5:input,A4:echo,A3:tty,A5:canon +280086948:Mf4:H280086920:A4:true,A5:false,A4:true,A5:false +280086980:lI84|H280086990 +280086990:lI69|H2800869A0 +2800869A0:lI82|H2800869B0 +2800869B0:lI77|N +2800869C0:lI99|H2800869D0 +2800869D0:lI108|H2800869E0 +2800869E0:lI101|H2800869F0 +2800869F0:lI97|H280086A00 +280086A00:lI114|N +280086A10:lI99|H280086A20 +280086A20:lI111|N +280086A30:lI117|H280086A40 +280086A40:lI112|N +280086A50:lI100|H280086A60 +280086A60:lI111|N +280086A70:lI98|H280086A80 +280086A80:lI115|N +280086A90:lI98|H280086AA0 +280086AA0:lI99|N +280086AB0:lI110|H280086AC0 +280086AC0:lI100|N +280086AD0:lI73|H280086AE0 +280086AE0:lI67|N +280086AF0:lI116|H280086B00 +280086B00:lI97|N +280086B10:lI68|H280086B20 +280086B20:lI67|N +280086B30:lI117|H280086B40 +280086B40:lI55|N +280086B50:lI117|H280086B60 +280086B60:lI54|N +280086B70:t2:A2:ok,H280086B88 +280086B88:YhA:G1slaSVkOyVkUg== +280086BA8:lI99|H280086BB8 +280086BB8:lI100|N +280086BC8:lI120|H280086BD8 +280086BD8:lI110|N +280086BE8:lH280086BF8|N +280086BF8:t2:A5:alias,AF:reply_demonitor +280086C10:Yh0: +280086C20:t2:A11:set_unicode_state,A5:false +280086C38:t2:A5:utf16,A6:little +280086C50:lI13|H280086C60 +280086C60:lI10|N +280086C70:t2:A4:move,I0 +280086C88:lN|N +280086C98:Yh1:Bw== +280086CB0:t2:N,N +280086CC8:Yh1:IA== +280086CE0:Yh1:DQ== +280086CF8:Yh2:DQo= +280086D10:lI94|H280086D20 +280086D20:lI63|N +280086D30:lI0|N +280086D40:lI92|H280086D50 +280086D50:lI36|H280086D60 +280086D60:lI60|H280086D70 +280086D70:lI91|H280086D80 +280086D80:lI94|H280086D90 +280086D90:lI62|H280086DA0 +280086DA0:lI93|H280086DB0 +280086DB0:lI42|H280086DC0 +280086DC0:lI62|N +280086DD0:lI10|N +280086DE0:lI85|H280086DF0 +280086DF0:lI84|H280086E00 +280086E00:lI70|H280086E10 +280086E10:lI45|H280086E20 +280086E20:lI56|N +280086E30:lI108|N +280086E40:lI114|H280086E30 +280086E50:lI101|H280086E40 +280086E60:lI46|H280086E50 +280086E70:lI121|H280086E60 +280086E80:lI116|H280086E70 +280086E90:lI116|H280086E80 +280086EA0:lI95|H280086E90 +280086EB0:lI109|H280086EA0 +280086EC0:lI105|H280086EB0 +280086ED0:lI114|H280086EC0 +280086EE0:lI112|H280086ED0 +280086EF0:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAAAAAAAAHcIcHJpbV90dHlhAGIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280086F18:t2:A4:read,A5:write +280086F30:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAABAAAAAHcIcHJpbV90dHlhAWIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280086F58:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAACAAAAAHcIcHJpbV90dHlhAmIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +2800870F0:E1A:g3F3DGVkbGluX2V4cGFuZHcGZXhwYW5kYQI= +280087118:t2:A5:error,A7:timeout +280087130:t2:A5:error,A7:enotsup +280087148:t2:AC:get_password,A6:latin1 +280087160:t2:A5:error,A7:request +280087178:t2:A8:encoding,A7:unicode +280087190:t2:A8:encoding,A6:latin1 +2800871A8:lH2800871B8|N +2800871B8:t2:A4:list,A6:binary +2800871D0:t2:A4:exit,AA:terminated +2800871E8:t3:A5:error,H280087208,N +280087208:t2:A5:error,AB:interrupted +280087220:lAA:new_prompt|N +280087230:lI10|N +280087240:lI27|H280087250 +280087250:lI91|H280087260 +280087260:lI59|H280087270 +280087270:lI49|H280087280 +280087280:lI59|H280087290 +280087290:lI52|H2800872A0 +2800872A0:lI109|H2800872B0 +2800872B0:lI115|H2800872C0 +2800872C0:lI101|H2800872D0 +2800872D0:lI97|H2800872E0 +2800872E0:lI114|H2800872F0 +2800872F0:lI99|H280087300 +280087300:lI104|H280087310 +280087310:lI58|H280087320 +280087320:lI27|H280087330 +280087330:lI91|H280087340 +280087340:lI48|H280087350 +280087350:lI109|H280087360 +280087360:lI32|N +280087370:lI80|H280087380 +280087380:lI114|H280087390 +280087390:lI101|H2800873A0 +2800873A0:lI115|H2800873B0 +2800873B0:lI115|H2800873C0 +2800873C0:lI32|H2800873D0 +2800873D0:lI116|H2800873E0 +2800873E0:lI97|H2800873F0 +2800873F0:lI98|H280087400 +280087400:lI32|H280087410 +280087410:lI116|H280087420 +280087420:lI111|H280087430 +280087430:lI32|H280087440 +280087440:lI115|H280087450 +280087450:lI101|H280087460 +280087460:lI101|H280087470 +280087470:lI32|H280087480 +280087480:lI97|H280087490 +280087490:lI108|H2800874A0 +2800874A0:lI108|H2800874B0 +2800874B0:lI32|H2800874C0 +2800874C0:lI126|H2800874D0 +2800874D0:lI112|H2800874E0 +2800874E0:lI32|H2800874F0 +2800874F0:lI101|H280087500 +280087500:lI120|H280087510 +280087510:lI112|H280087520 +280087520:lI97|H280087530 +280087530:lI110|H280087540 +280087540:lI115|H280087550 +280087550:lI105|H280087560 +280087560:lI111|H280087570 +280087570:lI110|H280087580 +280087580:lI115|N +280087590:lI27|H2800875A0 +2800875A0:lI108|N +2800875B0:t3:N,H2800875D0,N +2800875D0:t2:N,N +2800875E8:lI126|H2800875F8 +2800875F8:lI110|H280087608 +280087608:lI32|H280087618 +280087618:lI32|H280087628 +280087628:lI46|H280087638 +280087638:lI46|H280087648 +280087648:lI46|H280087658 +280087658:lI32|H280087668 +280087668:lI40|H280087678 +280087678:lI126|H280087688 +280087688:lI119|H280087698 +280087698:lI32|H2800876A8 +2800876A8:lI108|H2800876B8 +2800876B8:lI105|H2800876C8 +2800876C8:lI110|H2800876D8 +2800876D8:lI101|H2800876E8 +2800876E8:lI115|H2800876F8 +2800876F8:lI32|H280087708 +280087708:lI111|H280087718 +280087718:lI109|H280087728 +280087728:lI105|H280087738 +280087738:lI116|H280087748 +280087748:lI116|H280087758 +280087758:lI101|H280087768 +280087768:lI100|H280087778 +280087778:lI41|N +280087788:t3:A4:done,A3:eof,A3:eof +2800877A8:lH2800877B8|N +2800877B8:lI10|N +2800877C8:lI36|H2800877D8 +2800877D8:lI10|N +2800877E8:lH2800877F8|N +2800877F8:t3:AC:insert_chars,A7:unicode,H280087818 +280087818:lI10|N +280087828:lI108|N +280087838:lI114|H280087828 +280087848:lI101|H280087838 +280087858:lI46|H280087848 +280087868:lI112|H280087858 +280087878:lI117|H280087868 +280087888:lI111|H280087878 +280087898:lI114|H280087888 +2800878A8:lI103|H280087898 +2800878B8:E49:g3AAAABHAqhn0q4vp+7qt42F8kJsnfMAAAABAAAAAHcFZ3JvdXBhAWIFQz6VWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +2800878E0:E49:g3AAAABHAqhn0q4vp+7qt42F8kJsnfMAAAACAAAAAHcFZ3JvdXBhAmIFQz6VWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== +280088258:t2:A5:local,AA:logger_sup +280088270:t3:A2:id,A8:shutdown,A5:start +280088290:Mf3:H280088270:A16:logger_handler_watcher,AB:brutal_kill,H2800882C0 +2800882C0:t3:A16:logger_handler_watcher,AA:start_link,N +2800882E0:t3:A8:strategy,A6:period,A9:intensity +280088300:Mf3:H2800882E0:AB:one_for_one,I5,I1 +280088330:lI108|N +280088340:lI114|H280088330 +280088350:lI101|H280088340 +280088360:lI46|H280088350 +280088370:lI112|H280088360 +280088380:lI117|H280088370 +280088390:lI115|H280088380 +2800883A0:lI95|H280088390 +2800883B0:lI114|H2800883A0 +2800883C0:lI101|H2800883B0 +2800883D0:lI103|H2800883C0 +2800883E0:lI103|H2800883D0 +2800883F0:lI111|H2800883E0 +280088400:lI108|H2800883F0 +28008FA28:t2:A5:local,AB:kernel_refc +28008FA40:t2:A2:ok,H28008FA68 +28008FA58:t1:A13:scheduler_wall_time +28008FA68:Mf1:H28008FA58:H28008FA88 +28008FA88:Mf0:H280010188: +28008FAA0:lA5:flush|N +28008FAB0:lI108|N +28008FAC0:lI114|H28008FAB0 +28008FAD0:lI101|H28008FAC0 +28008FAE0:lI46|H28008FAD0 +28008FAF0:lI99|H28008FAE0 +28008FB00:lI102|H28008FAF0 +28008FB10:lI101|H28008FB00 +28008FB20:lI114|H28008FB10 +28008FB30:lI95|H28008FB20 +28008FB40:lI108|H28008FB30 +28008FB50:lI101|H28008FB40 +28008FB60:lI110|H28008FB50 +28008FB70:lI114|H28008FB60 +28008FB80:lI101|H28008FB70 +28008FB90:lI107|H28008FB80 +28008FBB8:t2:A2:ok,H28008FBD0 +28008FBD0:t1:A5:state +28008FBE0:lI82|H28008FBF0 +28008FBF0:lI101|H28008FC00 +28008FC00:lI99|H28008FC10 +28008FC10:lI101|H28008FC20 +28008FC20:lI105|H28008FC30 +28008FC30:lI118|H28008FC40 +28008FC40:lI101|H28008FC50 +28008FC50:lI100|H28008FC60 +28008FC60:lI32|H28008FC70 +28008FC70:lI83|H28008FC80 +28008FC80:lI73|H28008FC90 +28008FC90:lI71|H28008FCA0 +28008FCA0:lI85|H28008FCB0 +28008FCB0:lI83|H28008FCC0 +28008FCC0:lI82|H28008FCD0 +28008FCD0:lI49|N +28008FCE0:lI83|H28008FCF0 +28008FCF0:lI73|H28008FD00 +28008FD00:lI71|H28008FD10 +28008FD10:lI84|H28008FD20 +28008FD20:lI69|H28008FD30 +28008FD30:lI82|H28008FD40 +28008FD40:lI77|H28008FD50 +28008FD50:lI32|H28008FD60 +28008FD60:lI114|H28008FD70 +28008FD70:lI101|H28008FD80 +28008FD80:lI99|H28008FD90 +28008FD90:lI101|H28008FDA0 +28008FDA0:lI105|H28008FDB0 +28008FDB0:lI118|H28008FDC0 +28008FDC0:lI101|H28008FDD0 +28008FDD0:lI100|H28008FDE0 +28008FDE0:lI32|H28008FDF0 +28008FDF0:lI45|H28008FE00 +28008FE00:lI32|H28008FE10 +28008FE10:lI115|H28008FE20 +28008FE20:lI104|H28008FE30 +28008FE30:lI117|H28008FE40 +28008FE40:lI116|H28008FE50 +28008FE50:lI116|H28008FE60 +28008FE60:lI105|H28008FE70 +28008FE70:lI110|H28008FE80 +28008FE80:lI103|H28008FE90 +28008FE90:lI32|H28008FEA0 +28008FEA0:lI100|H28008FEB0 +28008FEB0:lI111|H28008FEC0 +28008FEC0:lI119|H28008FED0 +28008FED0:lI110|H28008FEE0 +28008FEE0:lI126|H28008FEF0 +28008FEF0:lI110|N +28008FF00:lI108|N +28008FF10:lI114|H28008FF00 +28008FF20:lI101|H28008FF10 +28008FF30:lI46|H28008FF20 +28008FF40:lI114|H28008FF30 +28008FF50:lI101|H28008FF40 +28008FF60:lI108|H28008FF50 +28008FF70:lI100|H28008FF60 +28008FF80:lI110|H28008FF70 +28008FF90:lI97|H28008FF80 +28008FFA0:lI104|H28008FF90 +28008FFB0:lI95|H28008FFA0 +28008FFC0:lI108|H28008FFB0 +28008FFD0:lI97|H28008FFC0 +28008FFE0:lI110|H28008FFD0 +28008FFF0:lI103|H28008FFE0 +280090000:lI105|H28008FFF0 +280090010:lI115|H280090000 +280090020:lI95|H280090010 +280090030:lI108|H280090020 +280090040:lI114|H280090030 +280090050:lI101|H280090040 +280091550:lA4:type|H280091560 +280091560:lA4:file|H280091570 +280091570:lA5:modes|H280091580 +280091580:lAA:file_check|H280091590 +280091590:lAC:max_no_bytes|H2800915A0 +2800915A0:lAC:max_no_files|H2800915B0 +2800915B0:lA12:compress_on_rotate|N +2800915C0:lA4:type|H2800915D0 +2800915D0:lA4:file|H2800915E0 +2800915E0:lA5:modes|N +2800915F0:Mf0:H280010188: +280091608:lA3:raw|H280091618 +280091618:lA6:append|N +280091628:lA3:raw|N +280091638:lA5:write|H280091648 +280091648:lA6:append|H280091658 +280091658:lA9:exclusive|N +280091668:t2:A5:error,A1D:file_ctrl_process_not_started +280091680:lA5:flush|N +280091690:lI70|H2800916A0 +2800916A0:lI97|H2800916B0 +2800916B0:lI105|H2800916C0 +2800916C0:lI108|H2800916D0 +2800916D0:lI101|H2800916E0 +2800916E0:lI100|H2800916F0 +2800916F0:lI32|H280091700 +280091700:lI116|H280091710 +280091710:lI111|H280091720 +280091720:lI32|H280091730 +280091730:lI119|H280091740 +280091740:lI114|H280091750 +280091750:lI105|H280091760 +280091760:lI116|H280091770 +280091770:lI101|H280091780 +280091780:lI32|H280091790 +280091790:lI108|H2800917A0 +2800917A0:lI111|H2800917B0 +2800917B0:lI103|H2800917C0 +2800917C0:lI32|H2800917D0 +2800917D0:lI109|H2800917E0 +2800917E0:lI101|H2800917F0 +2800917F0:lI115|H280091800 +280091800:lI115|H280091810 +280091810:lI97|H280091820 +280091820:lI103|H280091830 +280091830:lI101|H280091840 +280091840:lI32|H280091850 +280091850:lI116|H280091860 +280091860:lI111|H280091870 +280091870:lI32|H280091880 +280091880:lI115|H280091890 +280091890:lI116|H2800918A0 +2800918A0:lI100|H2800918B0 +2800918B0:lI111|H2800918C0 +2800918C0:lI117|H2800918D0 +2800918D0:lI116|H2800918E0 +2800918E0:lI44|H2800918F0 +2800918F0:lI32|H280091900 +280091900:lI116|H280091910 +280091910:lI114|H280091920 +280091920:lI121|H280091930 +280091930:lI105|H280091940 +280091940:lI110|H280091950 +280091950:lI103|H280091960 +280091960:lI32|H280091970 +280091970:lI115|H280091980 +280091980:lI116|H280091990 +280091990:lI100|H2800919A0 +2800919A0:lI101|H2800919B0 +2800919B0:lI114|H2800919C0 +2800919C0:lI114|H2800919D0 +2800919D0:lI10|N +2800919E0:t2:A5:error,A6:enoent +2800919F8:lI46|H280091A08 +280091A08:lI48|N +280091A18:lI46|H280091A28 +280091A28:lI103|H280091A38 +280091A38:lI122|N +280091A48:lA4:read|H280091A58 +280091A58:lA6:binary|N +280091A68:lA5:write|N +280091A78:Yh0: +280091A88:lI108|N +280091A98:lI114|H280091A88 +280091AA8:lI101|H280091A98 +280091AB8:lI46|H280091AA8 +280091AC8:lI104|H280091AB8 +280091AD8:lI95|H280091AC8 +280091AE8:lI100|H280091AD8 +280091AF8:lI116|H280091AE8 +280091B08:lI115|H280091AF8 +280091B18:lI95|H280091B08 +280091B28:lI114|H280091B18 +280091B38:lI101|H280091B28 +280091B48:lI103|H280091B38 +280091B58:lI103|H280091B48 +280091B68:lI111|H280091B58 +280091B78:lI108|H280091B68 +280091B88:t7:A4:type,A4:file,A12:compress_on_rotate,AA:file_check,AC:max_no_bytes,AC:max_no_files,A5:modes +280091BC8:t1:A4:type +280091BD8:E50:g3AAAABOAQjqLBPECzXLncj+B21nkB0AAAAAAAAAAHcMbG9nZ2VyX3N0ZF9oYQBiAEdRYFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280091C00:t4:A12:compress_on_rotate,AA:file_check,AC:max_no_bytes,AC:max_no_files +280091C28:tA:A2:fd,A9:file_name,A6:synced,AA:file_check,A5:modes,AC:handler_name,A5:inode,AA:last_check,A8:sync_res,A9:write_res +280091C80:t2:AC:handler_name,A3:dev +280091C98:t4:A5:count,A4:size,A8:compress,A9:curr_size +280091CD8:Mf0:H280010188: +280091CF0:lAE:sync_mode_qlen|H280091D00 +280091D00:lAE:drop_mode_qlen|H280091D10 +280091D10:lAA:flush_qlen|H280091D20 +280091D20:lA12:burst_limit_enable|H280091D30 +280091D30:lA15:burst_limit_max_count|H280091D40 +280091D40:lA17:burst_limit_window_time|H280091D50 +280091D50:lA14:overload_kill_enable|H280091D60 +280091D60:lA12:overload_kill_qlen|H280091D70 +280091D70:lA16:overload_kill_mem_size|H280091D80 +280091D80:lA1B:overload_kill_restart_after|H280091D90 +280091D90:lA18:filesync_repeat_interval|N +280091DA0:lA18:filesync_repeat_interval|N +280091DB0:lAE:sync_mode_qlen|H280091DC0 +280091DC0:lAE:drop_mode_qlen|H280091DD0 +280091DD0:lAA:flush_qlen|H280091DE0 +280091DE0:lA12:burst_limit_enable|H280091DF0 +280091DF0:lA15:burst_limit_max_count|H280091E00 +280091E00:lA17:burst_limit_window_time|H280091E10 +280091E10:lA14:overload_kill_enable|H280091E20 +280091E20:lA12:overload_kill_qlen|H280091E30 +280091E30:lA16:overload_kill_mem_size|H280091E40 +280091E40:lA1B:overload_kill_restart_after|N +280091E50:lI95|N +280091E60:lAE:sync_mode_qlen|H280091E70 +280091E70:lAE:drop_mode_qlen|H280091E80 +280091E80:lAA:flush_qlen|H280091E90 +280091E90:lA12:burst_limit_enable|H280091EA0 +280091EA0:lA15:burst_limit_max_count|H280091EB0 +280091EB0:lA17:burst_limit_window_time|H280091EC0 +280091EC0:lA14:overload_kill_enable|H280091ED0 +280091ED0:lA12:overload_kill_qlen|H280091EE0 +280091EE0:lA16:overload_kill_mem_size|H280091EF0 +280091EF0:lA1B:overload_kill_restart_after|H280091F00 +280091F00:lA18:filesync_repeat_interval|H280091F10 +280091F10:lA3:olp|N +280091F20:lA3:olp|N +280091F30:lAF:logger_h_common|N +280091F40:lI72|H280091F50 +280091F50:lI97|H280091F60 +280091F60:lI110|H280091F70 +280091F70:lI100|H280091F80 +280091F80:lI108|H280091F90 +280091F90:lI101|H280091FA0 +280091FA0:lI114|H280091FB0 +280091FB0:lI32|H280091FC0 +280091FC0:lI126|H280091FD0 +280091FD0:lI112|H280091FE0 +280091FE0:lI32|H280091FF0 +280091FF0:lI111|H280092000 +280092000:lI118|H280092010 +280092010:lI101|H280092020 +280092020:lI114|H280092030 +280092030:lI108|H280092040 +280092040:lI111|H280092050 +280092050:lI97|H280092060 +280092060:lI100|H280092070 +280092070:lI101|H280092080 +280092080:lI100|H280092090 +280092090:lI32|H2800920A0 +2800920A0:lI97|H2800920B0 +2800920B0:lI110|H2800920C0 +2800920C0:lI100|H2800920D0 +2800920D0:lI32|H2800920E0 +2800920E0:lI115|H2800920F0 +2800920F0:lI116|H280092100 +280092100:lI111|H280092110 +280092110:lI112|H280092120 +280092120:lI112|H280092130 +280092130:lI105|H280092140 +280092140:lI110|H280092150 +280092150:lI103|N +280092160:t2:A5:error,A4:busy +280092178:t2:A5:error,AC:handler_busy +280092190:lI72|H2800921A0 +2800921A0:lI97|H2800921B0 +2800921B0:lI110|H2800921C0 +2800921C0:lI100|H2800921D0 +2800921D0:lI108|H2800921E0 +2800921E0:lI101|H2800921F0 +2800921F0:lI114|H280092200 +280092200:lI32|H280092210 +280092210:lI126|H280092220 +280092220:lI112|H280092230 +280092230:lI32|H280092240 +280092240:lI115|H280092250 +280092250:lI119|H280092260 +280092260:lI105|H280092270 +280092270:lI116|H280092280 +280092280:lI99|H280092290 +280092290:lI104|H2800922A0 +2800922A0:lI101|H2800922B0 +2800922B0:lI100|H2800922C0 +2800922C0:lI32|H2800922D0 +2800922D0:lI102|H2800922E0 +2800922E0:lI114|H2800922F0 +2800922F0:lI111|H280092300 +280092300:lI109|H280092310 +280092310:lI32|H280092320 +280092320:lI126|H280092330 +280092330:lI112|H280092340 +280092340:lI32|H280092350 +280092350:lI116|H280092360 +280092360:lI111|H280092370 +280092370:lI32|H280092380 +280092380:lI126|H280092390 +280092390:lI112|H2800923A0 +2800923A0:lI32|H2800923B0 +2800923B0:lI109|H2800923C0 +2800923C0:lI111|H2800923D0 +2800923D0:lI100|H2800923E0 +2800923E0:lI101|N +2800923F0:lI72|H280092400 +280092400:lI97|H280092410 +280092410:lI110|H280092420 +280092420:lI100|H280092430 +280092430:lI108|H280092440 +280092440:lI101|H280092450 +280092450:lI114|H280092460 +280092460:lI32|H280092470 +280092470:lI126|H280092480 +280092480:lI112|H280092490 +280092490:lI32|H2800924A0 +2800924A0:lI102|H2800924B0 +2800924B0:lI108|H2800924C0 +2800924C0:lI117|H2800924D0 +2800924D0:lI115|H2800924E0 +2800924E0:lI104|H2800924F0 +2800924F0:lI101|H280092500 +280092500:lI100|H280092510 +280092510:lI32|H280092520 +280092520:lI126|H280092530 +280092530:lI119|H280092540 +280092540:lI32|H280092550 +280092550:lI108|H280092560 +280092560:lI111|H280092570 +280092570:lI103|H280092580 +280092580:lI32|H280092590 +280092590:lI101|H2800925A0 +2800925A0:lI118|H2800925B0 +2800925B0:lI101|H2800925C0 +2800925C0:lI110|H2800925D0 +2800925D0:lI116|H2800925E0 +2800925E0:lI115|N +2800925F0:lI72|H280092600 +280092600:lI97|H280092610 +280092610:lI110|H280092620 +280092620:lI100|H280092630 +280092630:lI108|H280092640 +280092640:lI101|H280092650 +280092650:lI114|H280092660 +280092660:lI32|H280092670 +280092670:lI126|H280092680 +280092680:lI112|H280092690 +280092690:lI32|H2800926A0 +2800926A0:lI114|H2800926B0 +2800926B0:lI101|H2800926C0 +2800926C0:lI115|H2800926D0 +2800926D0:lI116|H2800926E0 +2800926E0:lI97|H2800926F0 +2800926F0:lI114|H280092700 +280092700:lI116|H280092710 +280092710:lI101|H280092720 +280092720:lI100|N +280092730:t1:A9:formatter +280092740:Mf1:H280092730:H280092760 +280092760:t2:A10:logger_formatter,H280092790 +280092778:t2:AB:single_line,AD:legacy_header +280092790:Mf2:H280092778:A5:false,A4:true +2800927B8:E1F:g3F3BmxvZ2dlcncRZm9ybWF0X290cF9yZXBvcnRhAQ== +2800927E0:t2:A10:logger_formatter,H280092810 +2800927F8:t2:AB:single_line,AD:legacy_header +280092810:Mf2:H2800927F8:A5:false,A4:true +280092838:t3:A4:line,A4:file,A3:mfa +280092858:Mf3:H280092838:I398,H280092888,H2800929B8 +280092888:lI108|H280092898 +280092898:lI111|H2800928A8 +2800928A8:lI103|H2800928B8 +2800928B8:lI103|H2800928C8 +2800928C8:lI101|H2800928D8 +2800928D8:lI114|H2800928E8 +2800928E8:lI95|H2800928F8 +2800928F8:lI104|H280092908 +280092908:lI95|H280092918 +280092918:lI99|H280092928 +280092928:lI111|H280092938 +280092938:lI109|H280092948 +280092948:lI109|H280092958 +280092958:lI111|H280092968 +280092968:lI110|H280092978 +280092978:lI46|H280092988 +280092988:lI101|H280092998 +280092998:lI114|H2800929A8 +2800929A8:lI108|N +2800929B8:t3:AF:logger_h_common,A10:do_log_to_binary,I2 +2800929D8:Yh22:Rk9STUFUVEVSIEVSUk9SOiBiYWQgcmV0dXJuIHZhbHVlCg== +280092A10:t3:A4:line,A4:file,A3:mfa +280092A30:Mf3:H280092A10:I410,H280092A60,H280092B90 +280092A60:lI108|H280092A70 +280092A70:lI111|H280092A80 +280092A80:lI103|H280092A90 +280092A90:lI103|H280092AA0 +280092AA0:lI101|H280092AB0 +280092AB0:lI114|H280092AC0 +280092AC0:lI95|H280092AD0 +280092AD0:lI104|H280092AE0 +280092AE0:lI95|H280092AF0 +280092AF0:lI99|H280092B00 +280092B00:lI111|H280092B10 +280092B10:lI109|H280092B20 +280092B20:lI109|H280092B30 +280092B30:lI111|H280092B40 +280092B40:lI110|H280092B50 +280092B50:lI46|H280092B60 +280092B60:lI101|H280092B70 +280092B70:lI114|H280092B80 +280092B80:lI108|N +280092B90:t3:AF:logger_h_common,AA:try_format,I3 +280092BB0:lI68|H280092BC0 +280092BC0:lI69|H280092BD0 +280092BD0:lI70|H280092BE0 +280092BE0:lI65|H280092BF0 +280092BF0:lI85|H280092C00 +280092C00:lI76|H280092C10 +280092C10:lI84|H280092C20 +280092C20:lI32|H280092C30 +280092C30:lI70|H280092C40 +280092C40:lI79|H280092C50 +280092C50:lI82|H280092C60 +280092C60:lI77|H280092C70 +280092C70:lI65|H280092C80 +280092C80:lI84|H280092C90 +280092C90:lI84|H280092CA0 +280092CA0:lI69|H280092CB0 +280092CB0:lI82|H280092CC0 +280092CC0:lI32|H280092CD0 +280092CD0:lI67|H280092CE0 +280092CE0:lI82|H280092CF0 +280092CF0:lI65|H280092D00 +280092D00:lI83|H280092D10 +280092D10:lI72|H280092D20 +280092D20:lI69|H280092D30 +280092D30:lI68|H280092D40 +280092D40:lI10|N +280092D50:lI70|H280092D60 +280092D60:lI79|H280092D70 +280092D70:lI82|H280092D80 +280092D80:lI77|H280092D90 +280092D90:lI65|H280092DA0 +280092DA0:lI84|H280092DB0 +280092DB0:lI84|H280092DC0 +280092DC0:lI69|H280092DD0 +280092DD0:lI82|H280092DE0 +280092DE0:lI32|H280092DF0 +280092DF0:lI67|H280092E00 +280092E00:lI82|H280092E10 +280092E10:lI65|H280092E20 +280092E20:lI83|H280092E30 +280092E30:lI72|H280092E40 +280092E40:lI58|H280092E50 +280092E50:lI32|H280092E60 +280092E60:lI126|H280092E70 +280092E70:lI116|H280092E80 +280092E80:lI112|N +280092E90:t1:A18:filesync_repeat_interval +280092EA0:Mf1:H280092E90:I5000 +280092EC0:lI108|N +280092ED0:lI114|H280092EC0 +280092EE0:lI101|H280092ED0 +280092EF0:lI46|H280092EE0 +280092F00:lI110|H280092EF0 +280092F10:lI111|H280092F00 +280092F20:lI109|H280092F10 +280092F30:lI109|H280092F20 +280092F40:lI111|H280092F30 +280092F50:lI99|H280092F40 +280092F60:lI95|H280092F50 +280092F70:lI104|H280092F60 +280092F80:lI95|H280092F70 +280092F90:lI114|H280092F80 +280092FA0:lI101|H280092F90 +280092FB0:lI103|H280092FA0 +280092FC0:lI103|H280092FB0 +280092FD0:lI111|H280092FC0 +280092FE0:lI108|H280092FD0 +280092FF0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +280093028:t1:A4:time +280093038:t3:A4:meta,A3:msg,A5:level +280093058:t1:A18:filesync_repeat_interval +2800B0A58:lI115|H2800B0A68 +2800B0A68:lI116|H2800B0A78 +2800B0A78:lI97|H2800B0A88 +2800B0A88:lI110|H2800B0A98 +2800B0A98:lI100|H2800B0AA8 +2800B0AA8:lI95|H2800B0AB8 +2800B0AB8:lI97|H2800B0AC8 +2800B0AC8:lI108|H2800B0AD8 +2800B0AD8:lI111|H2800B0AE8 +2800B0AE8:lI110|H2800B0AF8 +2800B0AF8:lI101|H2800B0B08 +2800B0B08:lI95|N +2800B0B18:t2:A4:line,I173 +2800B0B30:t2:A6:module,AD:httpc_manager +2800B0B48:lI105|H2800B0B58 +2800B0B58:lI110|H2800B0B68 +2800B0B68:lI115|H2800B0B78 +2800B0B78:lI101|H2800B0B88 +2800B0B88:lI114|H2800B0B98 +2800B0B98:lI116|H2800B0BA8 +2800B0BA8:lI32|H2800B0BB8 +2800B0BB8:lI115|H2800B0BC8 +2800B0BC8:lI101|H2800B0BD8 +2800B0BD8:lI115|H2800B0BE8 +2800B0BE8:lI115|H2800B0BF8 +2800B0BF8:lI105|H2800B0C08 +2800B0C08:lI111|H2800B0C18 +2800B0C18:lI110|N +2800B0C28:t2:A4:line,I188 +2800B0C40:lI108|H2800B0C50 +2800B0C50:lI111|H2800B0C60 +2800B0C60:lI111|H2800B0C70 +2800B0C70:lI107|H2800B0C80 +2800B0C80:lI117|H2800B0C90 +2800B0C90:lI112|H2800B0CA0 +2800B0CA0:lI32|H2800B0CB0 +2800B0CB0:lI115|H2800B0CC0 +2800B0CC0:lI101|H2800B0CD0 +2800B0CD0:lI115|H2800B0CE0 +2800B0CE0:lI115|H2800B0CF0 +2800B0CF0:lI105|H2800B0D00 +2800B0D00:lI111|H2800B0D10 +2800B0D10:lI110|N +2800B0D20:t2:A4:line,I205 +2800B0D38:lI117|H2800B0D48 +2800B0D48:lI112|H2800B0D58 +2800B0D58:lI100|H2800B0D68 +2800B0D68:lI97|H2800B0D78 +2800B0D78:lI116|H2800B0D88 +2800B0D88:lI101|H2800B0D98 +2800B0D98:lI32|H2800B0DA8 +2800B0DA8:lI115|H2800B0DB8 +2800B0DB8:lI101|H2800B0DC8 +2800B0DC8:lI115|H2800B0DD8 +2800B0DD8:lI115|H2800B0DE8 +2800B0DE8:lI105|H2800B0DF8 +2800B0DF8:lI111|H2800B0E08 +2800B0E08:lI110|N +2800B0E18:t2:A4:line,I225 +2800B0E30:lI100|H2800B0E40 +2800B0E40:lI101|H2800B0E50 +2800B0E50:lI108|H2800B0E60 +2800B0E60:lI101|H2800B0E70 +2800B0E70:lI116|H2800B0E80 +2800B0E80:lI101|H2800B0E90 +2800B0E90:lI32|H2800B0EA0 +2800B0EA0:lI115|H2800B0EB0 +2800B0EB0:lI101|H2800B0EC0 +2800B0EC0:lI115|H2800B0ED0 +2800B0ED0:lI115|H2800B0EE0 +2800B0EE0:lI105|H2800B0EF0 +2800B0EF0:lI111|H2800B0F00 +2800B0F00:lI110|N +2800B0F10:t2:A4:line,I243 +2800B0F28:lI119|H2800B0F38 +2800B0F38:lI104|H2800B0F48 +2800B0F48:lI105|H2800B0F58 +2800B0F58:lI99|H2800B0F68 +2800B0F68:lI104|H2800B0F78 +2800B0F78:lI95|H2800B0F88 +2800B0F88:lI115|H2800B0F98 +2800B0F98:lI101|H2800B0FA8 +2800B0FA8:lI115|H2800B0FB8 +2800B0FB8:lI115|H2800B0FC8 +2800B0FC8:lI105|H2800B0FD8 +2800B0FD8:lI111|H2800B0FE8 +2800B0FE8:lI110|H2800B0FF8 +2800B0FF8:lI115|N +2800B1008:t2:A4:line,I276 +2800B1020:lI119|H2800B1030 +2800B1030:lI104|H2800B1040 +2800B1040:lI105|H2800B1050 +2800B1050:lI99|H2800B1060 +2800B1060:lI104|H2800B1070 +2800B1070:lI95|H2800B1080 +2800B1080:lI115|H2800B1090 +2800B1090:lI101|H2800B10A0 +2800B10A0:lI115|H2800B10B0 +2800B10B0:lI115|H2800B10C0 +2800B10C0:lI105|H2800B10D0 +2800B10D0:lI111|H2800B10E0 +2800B10E0:lI110|H2800B10F0 +2800B10F0:lI95|H2800B1100 +2800B1100:lI105|H2800B1110 +2800B1110:lI110|H2800B1120 +2800B1120:lI102|H2800B1130 +2800B1130:lI111|N +2800B1140:t2:A4:line,I406 +2800B1158:lI115|H2800B1168 +2800B1168:lI116|H2800B1178 +2800B1178:lI97|H2800B1188 +2800B1188:lI114|H2800B1198 +2800B1198:lI116|H2800B11A8 +2800B11A8:lI105|H2800B11B8 +2800B11B8:lI110|H2800B11C8 +2800B11C8:lI103|N +2800B11D8:t2:A4:line,I409 +2800B11F0:lI115|H2800B1200 +2800B1200:lI116|H2800B1210 +2800B1210:lI97|H2800B1220 +2800B1220:lI114|H2800B1230 +2800B1230:lI116|H2800B1240 +2800B1240:lI101|H2800B1250 +2800B1250:lI100|N +2800B1260:lI99|H2800B1270 +2800B1270:lI114|H2800B1280 +2800B1280:lI101|H2800B1290 +2800B1290:lI97|H2800B12A0 +2800B12A0:lI116|H2800B12B0 +2800B12B0:lI101|H2800B12C0 +2800B12C0:lI32|H2800B12D0 +2800B12D0:lI115|H2800B12E0 +2800B12E0:lI101|H2800B12F0 +2800B12F0:lI115|H2800B1300 +2800B1300:lI115|H2800B1310 +2800B1310:lI105|H2800B1320 +2800B1320:lI111|H2800B1330 +2800B1330:lI110|H2800B1340 +2800B1340:lI32|H2800B1350 +2800B1350:lI100|H2800B1360 +2800B1360:lI98|N +2800B1370:lH2800B1390|H2800B1380 +2800B1380:lH2800B13A8|N +2800B1390:t2:A6:module,AD:httpc_manager +2800B13A8:t2:A4:line,I420 +2800B13C0:lA6:public|H2800B13D0 +2800B13D0:lA3:set|H2800B13E0 +2800B13E0:lAB:named_table|H2800B13F0 +2800B13F0:lH2800B1400|N +2800B1400:t2:A6:keypos,I2 +2800B1418:lI99|H2800B1428 +2800B1428:lI114|H2800B1438 +2800B1438:lI101|H2800B1448 +2800B1448:lI97|H2800B1458 +2800B1458:lI116|H2800B1468 +2800B1468:lI101|H2800B1478 +2800B1478:lI32|H2800B1488 +2800B1488:lI104|H2800B1498 +2800B1498:lI97|H2800B14A8 +2800B14A8:lI110|H2800B14B8 +2800B14B8:lI100|H2800B14C8 +2800B14C8:lI108|H2800B14D8 +2800B14D8:lI101|H2800B14E8 +2800B14E8:lI114|H2800B14F8 +2800B14F8:lI47|H2800B1508 +2800B1508:lI114|H2800B1518 +2800B1518:lI101|H2800B1528 +2800B1528:lI113|H2800B1538 +2800B1538:lI117|H2800B1548 +2800B1548:lI101|H2800B1558 +2800B1558:lI115|H2800B1568 +2800B1568:lI116|H2800B1578 +2800B1578:lI32|H2800B1588 +2800B1588:lI100|H2800B1598 +2800B1598:lI98|N +2800B15A8:lH2800B15C8|H2800B15B8 +2800B15B8:lH2800B15E0|N +2800B15C8:t2:A6:module,AD:httpc_manager +2800B15E0:t2:A4:line,I426 +2800B15F8:lA9:protected|H2800B1608 +2800B1608:lA3:set|H2800B1618 +2800B1618:lAB:named_table|H2800B1628 +2800B1628:lH2800B1638|N +2800B1638:t2:A6:keypos,I1 +2800B1650:lI99|H2800B1660 +2800B1660:lI114|H2800B1670 +2800B1670:lI101|H2800B1680 +2800B1680:lI97|H2800B1690 +2800B1690:lI116|H2800B16A0 +2800B16A0:lI101|H2800B16B0 +2800B16B0:lI32|H2800B16C0 +2800B16C0:lI99|H2800B16D0 +2800B16D0:lI111|H2800B16E0 +2800B16E0:lI111|H2800B16F0 +2800B16F0:lI107|H2800B1700 +2800B1700:lI105|H2800B1710 +2800B1710:lI101|H2800B1720 +2800B1720:lI32|H2800B1730 +2800B1730:lI100|H2800B1740 +2800B1740:lI98|N +2800B1750:lH2800B1770|H2800B1760 +2800B1760:lH2800B1788|N +2800B1770:t2:A6:module,AD:httpc_manager +2800B1788:t2:A4:line,I431 +2800B17A0:tF:A7:options,H2800B1820,H2800B1838,I0,I2,I5,I120000,I2,A8:disabled,A5:false,A4:inet,A7:default,A7:default,N,A9:undefined +2800B1820:t2:A9:undefined,N +2800B1838:t2:A9:undefined,N +2800B1850:t2:A4:line,I474 +2800B1868:lI119|H2800B1878 +2800B1878:lI104|H2800B1888 +2800B1888:lI105|H2800B1898 +2800B1898:lI99|H2800B18A8 +2800B18A8:lI104|H2800B18B8 +2800B18B8:lI32|H2800B18C8 +2800B18C8:lI99|H2800B18D8 +2800B18D8:lI111|H2800B18E8 +2800B18E8:lI111|H2800B18F8 +2800B18F8:lI107|H2800B1908 +2800B1908:lI105|H2800B1918 +2800B1918:lI101|H2800B1928 +2800B1928:lI115|N +2800B1938:t2:A4:line,I454 +2800B1950:lI114|H2800B1960 +2800B1960:lI101|H2800B1970 +2800B1970:lI113|H2800B1980 +2800B1980:lI117|H2800B1990 +2800B1990:lI101|H2800B19A0 +2800B19A0:lI115|H2800B19B0 +2800B19B0:lI116|N +2800B19C0:t2:A4:line,I485 +2800B19D8:lI103|H2800B19E8 +2800B19E8:lI101|H2800B19F8 +2800B19F8:lI116|H2800B1A08 +2800B1A08:lI32|H2800B1A18 +2800B1A18:lI111|H2800B1A28 +2800B1A28:lI112|H2800B1A38 +2800B1A38:lI116|H2800B1A48 +2800B1A48:lI105|H2800B1A58 +2800B1A58:lI111|H2800B1A68 +2800B1A68:lI110|H2800B1A78 +2800B1A78:lI115|N +2800B1A88:lH2800B1AA8|H2800B1A98 +2800B1A98:lH2800B1AC0|N +2800B1AA8:t2:A6:module,AD:httpc_manager +2800B1AC0:t2:A4:line,I468 +2800B1AD8:lI114|H2800B1AE8 +2800B1AE8:lI101|H2800B1AF8 +2800B1AF8:lI115|H2800B1B08 +2800B1B08:lI101|H2800B1B18 +2800B1B18:lI116|H2800B1B28 +2800B1B28:lI32|H2800B1B38 +2800B1B38:lI99|H2800B1B48 +2800B1B48:lI111|H2800B1B58 +2800B1B58:lI111|H2800B1B68 +2800B1B68:lI107|H2800B1B78 +2800B1B78:lI105|H2800B1B88 +2800B1B88:lI101|H2800B1B98 +2800B1B98:lI115|N +2800B1BA8:lH2800B1BC8|H2800B1BB8 +2800B1BB8:lH2800B1BE0|N +2800B1BC8:t2:A6:module,AD:httpc_manager +2800B1BE0:t2:A4:line,I463 +2800B1BF8:lI105|H2800B1C08 +2800B1C08:lI110|H2800B1C18 +2800B1C18:lI102|H2800B1C28 +2800B1C28:lI111|N +2800B1C38:lH2800B1C58|H2800B1C48 +2800B1C48:lH2800B1C70|N +2800B1C58:t2:A6:module,AD:httpc_manager +2800B1C70:t2:A4:line,I491 +2800B1C88:lI114|H2800B1C98 +2800B1C98:lI101|H2800B1CA8 +2800B1CA8:lI99|H2800B1CB8 +2800B1CB8:lI101|H2800B1CC8 +2800B1CC8:lI105|H2800B1CD8 +2800B1CD8:lI118|H2800B1CE8 +2800B1CE8:lI101|H2800B1CF8 +2800B1CF8:lI100|H2800B1D08 +2800B1D08:lI32|H2800B1D18 +2800B1D18:lI117|H2800B1D28 +2800B1D28:lI110|H2800B1D38 +2800B1D38:lI107|H2800B1D48 +2800B1D48:lI110|H2800B1D58 +2800B1D58:lI111|H2800B1D68 +2800B1D68:lI119|H2800B1D78 +2800B1D78:lI110|H2800B1D88 +2800B1D88:lI32|H2800B1D98 +2800B1D98:lI114|H2800B1DA8 +2800B1DA8:lI101|H2800B1DB8 +2800B1DB8:lI113|H2800B1DC8 +2800B1DC8:lI117|H2800B1DD8 +2800B1DD8:lI101|H2800B1DE8 +2800B1DE8:lI115|H2800B1DF8 +2800B1DF8:lI116|H2800B1E08 +2800B1E08:lI126|H2800B1E18 +2800B1E18:lI110|H2800B1E28 +2800B1E28:lI32|H2800B1E38 +2800B1E38:lI32|H2800B1E48 +2800B1E48:lI32|H2800B1E58 +2800B1E58:lI82|H2800B1E68 +2800B1E68:lI101|H2800B1E78 +2800B1E78:lI113|H2800B1E88 +2800B1E88:lI58|H2800B1E98 +2800B1E98:lI32|H2800B1EA8 +2800B1EA8:lI32|H2800B1EB8 +2800B1EB8:lI126|H2800B1EC8 +2800B1EC8:lI112|H2800B1ED8 +2800B1ED8:lI126|H2800B1EE8 +2800B1EE8:lI110|H2800B1EF8 +2800B1EF8:lI32|H2800B1F08 +2800B1F08:lI32|H2800B1F18 +2800B1F18:lI32|H2800B1F28 +2800B1F28:lI70|H2800B1F38 +2800B1F38:lI114|H2800B1F48 +2800B1F48:lI111|H2800B1F58 +2800B1F58:lI109|H2800B1F68 +2800B1F68:lI58|H2800B1F78 +2800B1F78:lI32|H2800B1F88 +2800B1F88:lI126|H2800B1F98 +2800B1F98:lI112|N +2800B1FA8:t2:A5:error,AD:API_violation +2800B1FC0:t2:A4:line,I542 +2800B1FD8:lI115|H2800B1FE8 +2800B1FE8:lI101|H2800B1FF8 +2800B1FF8:lI116|H2800B2008 +2800B2008:lI32|H2800B2018 +2800B2018:lI111|H2800B2028 +2800B2028:lI112|H2800B2038 +2800B2038:lI116|H2800B2048 +2800B2048:lI105|H2800B2058 +2800B2058:lI111|H2800B2068 +2800B2068:lI110|H2800B2078 +2800B2078:lI115|N +2800B2088:t2:A4:line,I537 +2800B20A0:lI114|H2800B20B0 +2800B20B0:lI101|H2800B20C0 +2800B20C0:lI113|H2800B20D0 +2800B20D0:lI117|H2800B20E0 +2800B20E0:lI101|H2800B20F0 +2800B20F0:lI115|H2800B2100 +2800B2100:lI116|H2800B2110 +2800B2110:lI32|H2800B2120 +2800B2120:lI100|H2800B2130 +2800B2130:lI111|H2800B2140 +2800B2140:lI110|H2800B2150 +2800B2150:lI101|N +2800B2160:lI114|H2800B2170 +2800B2170:lI101|H2800B2180 +2800B2180:lI99|H2800B2190 +2800B2190:lI101|H2800B21A0 +2800B21A0:lI105|H2800B21B0 +2800B21B0:lI118|H2800B21C0 +2800B21C0:lI101|H2800B21D0 +2800B21D0:lI100|H2800B21E0 +2800B21E0:lI32|H2800B21F0 +2800B21F0:lI117|H2800B2200 +2800B2200:lI110|H2800B2210 +2800B2210:lI107|H2800B2220 +2800B2220:lI110|H2800B2230 +2800B2230:lI111|H2800B2240 +2800B2240:lI119|H2800B2250 +2800B2250:lI110|H2800B2260 +2800B2260:lI32|H2800B2270 +2800B2270:lI109|H2800B2280 +2800B2280:lI101|H2800B2290 +2800B2290:lI115|H2800B22A0 +2800B22A0:lI115|H2800B22B0 +2800B22B0:lI97|H2800B22C0 +2800B22C0:lI103|H2800B22D0 +2800B22D0:lI101|H2800B22E0 +2800B22E0:lI126|H2800B22F0 +2800B22F0:lI110|H2800B2300 +2800B2300:lI32|H2800B2310 +2800B2310:lI32|H2800B2320 +2800B2320:lI32|H2800B2330 +2800B2330:lI77|H2800B2340 +2800B2340:lI115|H2800B2350 +2800B2350:lI103|H2800B2360 +2800B2360:lI58|H2800B2370 +2800B2370:lI32|H2800B2380 +2800B2380:lI126|H2800B2390 +2800B2390:lI112|N +2800B23A0:lI85|H2800B23B0 +2800B23B0:lI110|H2800B23C0 +2800B23C0:lI107|H2800B23D0 +2800B23D0:lI110|H2800B23E0 +2800B23E0:lI111|H2800B23F0 +2800B23F0:lI119|H2800B2400 +2800B2400:lI110|H2800B2410 +2800B2410:lI32|H2800B2420 +2800B2420:lI109|H2800B2430 +2800B2430:lI101|H2800B2440 +2800B2440:lI115|H2800B2450 +2800B2450:lI115|H2800B2460 +2800B2460:lI97|H2800B2470 +2800B2470:lI103|H2800B2480 +2800B2480:lI101|H2800B2490 +2800B2490:lI32|H2800B24A0 +2800B24A0:lI105|H2800B24B0 +2800B24B0:lI110|H2800B24C0 +2800B24C0:lI32|H2800B24D0 +2800B24D0:lI104|H2800B24E0 +2800B24E0:lI116|H2800B24F0 +2800B24F0:lI116|H2800B2500 +2800B2500:lI112|H2800B2510 +2800B2510:lI99|H2800B2520 +2800B2520:lI95|H2800B2530 +2800B2530:lI109|H2800B2540 +2800B2540:lI97|H2800B2550 +2800B2550:lI110|H2800B2560 +2800B2560:lI97|H2800B2570 +2800B2570:lI103|H2800B2580 +2800B2580:lI101|H2800B2590 +2800B2590:lI114|H2800B25A0 +2800B25A0:lI58|H2800B25B0 +2800B25B0:lI104|H2800B25C0 +2800B25C0:lI97|H2800B25D0 +2800B25D0:lI110|H2800B25E0 +2800B25E0:lI100|H2800B25F0 +2800B25F0:lI108|H2800B2600 +2800B2600:lI101|H2800B2610 +2800B2610:lI95|H2800B2620 +2800B2620:lI105|H2800B2630 +2800B2630:lI110|H2800B2640 +2800B2640:lI102|H2800B2650 +2800B2650:lI111|H2800B2660 +2800B2660:lI32|H2800B2670 +2800B2670:lI126|H2800B2680 +2800B2680:lI112|H2800B2690 +2800B2690:lI126|H2800B26A0 +2800B26A0:lI110|N +2800B26B0:lA5:proxy|H2800B26C0 +2800B26C0:lAB:https_proxy|H2800B26D0 +2800B26D0:lA10:pipeline_timeout|H2800B26E0 +2800B26E0:lA13:max_pipeline_length|H2800B26F0 +2800B26F0:lA15:max_keep_alive_length|H2800B2700 +2800B2700:lA12:keep_alive_timeout|H2800B2710 +2800B2710:lAC:max_sessions|H2800B2720 +2800B2720:lA7:cookies|H2800B2730 +2800B2730:lA7:verbose|H2800B2740 +2800B2740:lA8:ipfamily|H2800B2750 +2800B2750:lA2:ip|H2800B2760 +2800B2760:lA4:port|H2800B2770 +2800B2770:lAB:socket_opts|H2800B2780 +2800B2780:lAB:unix_socket|N +2800B2790:t3:A2:$2,A2:$1,A1:_ +2800B27B0:lI72|H2800B27C0 +2800B27C0:lI84|H2800B27D0 +2800B27D0:lI84|H2800B27E0 +2800B27E0:lI80|H2800B27F0 +2800B27F0:lI47|H2800B2800 +2800B2800:lI49|H2800B2810 +2800B2810:lI46|H2800B2820 +2800B2820:lI48|N +2800B2830:lI99|H2800B2840 +2800B2840:lI108|H2800B2850 +2800B2850:lI111|H2800B2860 +2800B2860:lI115|H2800B2870 +2800B2870:lI101|N +2800B2880:t2:A4:line,I817 +2800B2898:lI115|H2800B28A8 +2800B28A8:lI101|H2800B28B8 +2800B28B8:lI108|H2800B28C8 +2800B28C8:lI101|H2800B28D8 +2800B28D8:lI99|H2800B28E8 +2800B28E8:lI116|H2800B28F8 +2800B28F8:lI32|H2800B2908 +2800B2908:lI115|H2800B2918 +2800B2918:lI101|H2800B2928 +2800B2928:lI115|H2800B2938 +2800B2938:lI115|H2800B2948 +2800B2948:lI105|H2800B2958 +2800B2958:lI111|H2800B2968 +2800B2968:lI110|N +2800B2978:t2:A4:line,I838 +2800B2990:lI115|H2800B29A0 +2800B29A0:lI101|H2800B29B0 +2800B29B0:lI108|H2800B29C0 +2800B29C0:lI101|H2800B29D0 +2800B29D0:lI99|H2800B29E0 +2800B29E0:lI116|H2800B29F0 +2800B29F0:lI32|H2800B2A00 +2800B2A00:lI115|H2800B2A10 +2800B2A10:lI101|H2800B2A20 +2800B2A20:lI115|H2800B2A30 +2800B2A30:lI115|H2800B2A40 +2800B2A40:lI105|H2800B2A50 +2800B2A50:lI111|H2800B2A60 +2800B2A60:lI110|H2800B2A70 +2800B2A70:lI32|H2800B2A80 +2800B2A80:lI45|H2800B2A90 +2800B2A90:lI32|H2800B2AA0 +2800B2AA0:lI110|H2800B2AB0 +2800B2AB0:lI111|H2800B2AC0 +2800B2AC0:lI32|H2800B2AD0 +2800B2AD0:lI99|H2800B2AE0 +2800B2AE0:lI97|H2800B2AF0 +2800B2AF0:lI110|H2800B2B00 +2800B2B00:lI100|H2800B2B10 +2800B2B10:lI105|H2800B2B20 +2800B2B20:lI100|H2800B2B30 +2800B2B30:lI97|H2800B2B40 +2800B2B40:lI116|H2800B2B50 +2800B2B50:lI101|N +2800B2B60:lH2800B2B80|H2800B2B70 +2800B2B70:lH2800B2B98|N +2800B2B80:t2:A6:module,AD:httpc_manager +2800B2B98:t2:A4:line,I853 +2800B2BB0:t2:A4:line,I862 +2800B2BC8:lI115|H2800B2BD8 +2800B2BD8:lI101|H2800B2BE8 +2800B2BE8:lI108|H2800B2BF8 +2800B2BF8:lI101|H2800B2C08 +2800B2C08:lI99|H2800B2C18 +2800B2C18:lI116|H2800B2C28 +2800B2C28:lI32|H2800B2C38 +2800B2C38:lI115|H2800B2C48 +2800B2C48:lI101|H2800B2C58 +2800B2C58:lI115|H2800B2C68 +2800B2C68:lI115|H2800B2C78 +2800B2C78:lI105|H2800B2C88 +2800B2C88:lI111|H2800B2C98 +2800B2C98:lI110|H2800B2CA8 +2800B2CA8:lI32|H2800B2CB8 +2800B2CB8:lI45|H2800B2CC8 +2800B2CC8:lI32|H2800B2CD8 +2800B2CD8:lI102|H2800B2CE8 +2800B2CE8:lI111|H2800B2CF8 +2800B2CF8:lI117|H2800B2D08 +2800B2D08:lI110|H2800B2D18 +2800B2D18:lI100|H2800B2D28 +2800B2D28:lI32|H2800B2D38 +2800B2D38:lI111|H2800B2D48 +2800B2D48:lI110|H2800B2D58 +2800B2D58:lI101|N +2800B2D68:t2:A5:error,A6:closed +2800B2D80:t2:H2800B2D98,N +2800B2D98:lI99|H2800B2DA8 +2800B2DA8:lI111|H2800B2DB8 +2800B2DB8:lI111|H2800B2DC8 +2800B2DC8:lI107|H2800B2DD8 +2800B2DD8:lI105|H2800B2DE8 +2800B2DE8:lI101|N +2800B2DF8:lI95|H2800B2E08 +2800B2E08:lI95|H2800B2E18 +2800B2E18:lI115|H2800B2E28 +2800B2E28:lI101|H2800B2E38 +2800B2E38:lI115|H2800B2E48 +2800B2E48:lI115|H2800B2E58 +2800B2E58:lI105|H2800B2E68 +2800B2E68:lI111|H2800B2E78 +2800B2E78:lI110|H2800B2E88 +2800B2E88:lI95|H2800B2E98 +2800B2E98:lI100|H2800B2EA8 +2800B2EA8:lI98|N +2800B2EB8:lI95|H2800B2EC8 +2800B2EC8:lI95|H2800B2ED8 +2800B2ED8:lI99|H2800B2EE8 +2800B2EE8:lI111|H2800B2EF8 +2800B2EF8:lI111|H2800B2F08 +2800B2F08:lI107|H2800B2F18 +2800B2F18:lI105|H2800B2F28 +2800B2F28:lI101|H2800B2F38 +2800B2F38:lI95|H2800B2F48 +2800B2F48:lI100|H2800B2F58 +2800B2F58:lI98|N +2800B2F68:lI95|H2800B2F78 +2800B2F78:lI95|H2800B2F88 +2800B2F88:lI115|H2800B2F98 +2800B2F98:lI101|H2800B2FA8 +2800B2FA8:lI115|H2800B2FB8 +2800B2FB8:lI115|H2800B2FC8 +2800B2FC8:lI105|H2800B2FD8 +2800B2FD8:lI111|H2800B2FE8 +2800B2FE8:lI110|H2800B2FF8 +2800B2FF8:lI95|H2800B3008 +2800B3008:lI99|H2800B3018 +2800B3018:lI111|H2800B3028 +2800B3028:lI111|H2800B3038 +2800B3038:lI107|H2800B3048 +2800B3048:lI105|H2800B3058 +2800B3058:lI101|H2800B3068 +2800B3068:lI95|H2800B3078 +2800B3078:lI100|H2800B3088 +2800B3088:lI98|N +2800B3098:lI95|H2800B30A8 +2800B30A8:lI95|H2800B30B8 +2800B30B8:lI104|H2800B30C8 +2800B30C8:lI97|H2800B30D8 +2800B30D8:lI110|H2800B30E8 +2800B30E8:lI100|H2800B30F8 +2800B30F8:lI108|H2800B3108 +2800B3108:lI101|H2800B3118 +2800B3118:lI114|H2800B3128 +2800B3128:lI95|H2800B3138 +2800B3138:lI100|H2800B3148 +2800B3148:lI98|N +2800B3158:lI115|N +2800B3168:lA4:call|N +2800B3178:lH2800B3188|N +2800B3188:t3:A1:_,N,H2800B31A8 +2800B31A8:lH2800B31B8|N +2800B31B8:t1:AC:return_trace +2800B31C8:lI126|H2800B31D8 +2800B31D8:lI110|N +2800B31E8:lI72|H2800B31F8 +2800B31F8:lI84|H2800B3208 +2800B3208:lI84|H2800B3218 +2800B3218:lI80|H2800B3228 +2800B3228:lI67|H2800B3238 +2800B3238:lI45|H2800B3248 +2800B3248:lI77|H2800B3258 +2800B3258:lI65|H2800B3268 +2800B3268:lI78|H2800B3278 +2800B3278:lI65|H2800B3288 +2800B3288:lI71|H2800B3298 +2800B3298:lI69|H2800B32A8 +2800B32A8:lI82|H2800B32B8 +2800B32B8:lI60|H2800B32C8 +2800B32C8:lI126|H2800B32D8 +2800B32D8:lI112|H2800B32E8 +2800B32E8:lI62|H2800B32F8 +2800B32F8:lI32|N +2800B3308:lI108|N +2800B3318:lI114|H2800B3308 +2800B3328:lI101|H2800B3318 +2800B3338:lI46|H2800B3328 +2800B3348:lI114|H2800B3338 +2800B3358:lI101|H2800B3348 +2800B3368:lI103|H2800B3358 +2800B3378:lI97|H2800B3368 +2800B3388:lI110|H2800B3378 +2800B3398:lI97|H2800B3388 +2800B33A8:lI109|H2800B3398 +2800B33B8:lI95|H2800B33A8 +2800B33C8:lI99|H2800B33B8 +2800B33D8:lI112|H2800B33C8 +2800B33E8:lI116|H2800B33D8 +2800B33F8:lI116|H2800B33E8 +2800B3408:lI104|H2800B33F8 +2800B3418:E51:g3AAAABPAav5MfhExLjVj7CSaHK/DswAAAAAAAAAAHcNaHR0cGNfbWFuYWdlcmEAYgVfyY9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +2800B3440:E51:g3AAAABPAav5MfhExLjVj7CSaHK/DswAAAABAAAAAHcNaHR0cGNfbWFuYWdlcmEBYgVfyY9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA +2800B6F58:t2:A5:local,A11:httpc_handler_sup +2800B6F70:lAD:httpc_handler|N +2800B6F80:t3:A12:simple_one_for_one,I0,I3600 +2800B6FA0:lI108|N +2800B6FB0:lI114|H2800B6FA0 +2800B6FC0:lI101|H2800B6FB0 +2800B6FD0:lI46|H2800B6FC0 +2800B6FE0:lI112|H2800B6FD0 +2800B6FF0:lI117|H2800B6FE0 +2800B7000:lI115|H2800B6FF0 +2800B7010:lI95|H2800B7000 +2800B7020:lI114|H2800B7010 +2800B7030:lI101|H2800B7020 +2800B7040:lI108|H2800B7030 +2800B7050:lI100|H2800B7040 +2800B7060:lI110|H2800B7050 +2800B7070:lI97|H2800B7060 +2800B7080:lI104|H2800B7070 +2800B7090:lI95|H2800B7080 +2800B70A0:lI99|H2800B7090 +2800B70B0:lI112|H2800B70A0 +2800B70C0:lI116|H2800B70B0 +2800B70D0:lI116|H2800B70C0 +2800B70E0:lI104|H2800B70D0 +2800BDB80:t2:A5:local,A12:tls_connection_sup +2800BDB98:t2:A5:local,A17:tls_dist_connection_sup +2800BDBB0:t2:A2:ok,H2800BDBC8 +2800BDBC8:t2:H2800BDC00,H2800BDC30 +2800BDBE0:t3:A8:strategy,A6:period,A9:intensity +2800BDC00:Mf3:H2800BDBE0:A12:simple_one_for_one,I3600,I0 +2800BDC30:lH2800BDC68|N +2800BDC40:t4:A2:id,A7:restart,A5:start,A4:type +2800BDC68:Mf4:H2800BDC40:A9:undefined,A9:temporary,H2800BDCA0,AA:supervisor +2800BDCA0:t3:A16:tls_dyn_connection_sup,AA:start_link,N +2800BDCC0:lI108|N +2800BDCD0:lI114|H2800BDCC0 +2800BDCE0:lI101|H2800BDCD0 +2800BDCF0:lI46|H2800BDCE0 +2800BDD00:lI112|H2800BDCF0 +2800BDD10:lI117|H2800BDD00 +2800BDD20:lI115|H2800BDD10 +2800BDD30:lI95|H2800BDD20 +2800BDD40:lI110|H2800BDD30 +2800BDD50:lI111|H2800BDD40 +2800BDD60:lI105|H2800BDD50 +2800BDD70:lI116|H2800BDD60 +2800BDD80:lI99|H2800BDD70 +2800BDD90:lI101|H2800BDD80 +2800BDDA0:lI110|H2800BDD90 +2800BDDB0:lI110|H2800BDDA0 +2800BDDC0:lI111|H2800BDDB0 +2800BDDD0:lI99|H2800BDDC0 +2800BDDE0:lI95|H2800BDDD0 +2800BDDF0:lI115|H2800BDDE0 +2800BDE00:lI108|H2800BDDF0 +2800BDE10:lI116|H2800BDE00 +2800BE298:t2:A5:local,A16:ssl_listen_tracker_sup +2800BE2B0:t2:A5:local,A1B:ssl_listen_tracker_sup_dist +2800BE2C8:t2:A2:ok,H2800BE2E0 +2800BE2E0:t2:H2800BE318,H2800BE348 +2800BE2F8:t3:A8:strategy,A6:period,A9:intensity +2800BE318:Mf3:H2800BE2F8:A12:simple_one_for_one,I3600,I0 +2800BE348:lH2800BE390|N +2800BE358:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BE390:Mf6:H2800BE358:A9:undefined,A9:temporary,I4000,H2800BE3E8,A6:worker,H2800BE3D8 +2800BE3D8:lAA:tls_socket|N +2800BE3E8:t3:AA:tls_socket,AA:start_link,N +2800BE408:lI108|N +2800BE418:lI114|H2800BE408 +2800BE428:lI101|H2800BE418 +2800BE438:lI46|H2800BE428 +2800BE448:lI112|H2800BE438 +2800BE458:lI117|H2800BE448 +2800BE468:lI115|H2800BE458 +2800BE478:lI95|H2800BE468 +2800BE488:lI114|H2800BE478 +2800BE498:lI101|H2800BE488 +2800BE4A8:lI107|H2800BE498 +2800BE4B8:lI99|H2800BE4A8 +2800BE4C8:lI97|H2800BE4B8 +2800BE4D8:lI114|H2800BE4C8 +2800BE4E8:lI116|H2800BE4D8 +2800BE4F8:lI95|H2800BE4E8 +2800BE508:lI110|H2800BE4F8 +2800BE518:lI101|H2800BE508 +2800BE528:lI116|H2800BE518 +2800BE538:lI115|H2800BE528 +2800BE548:lI105|H2800BE538 +2800BE558:lI108|H2800BE548 +2800BE568:lI95|H2800BE558 +2800BE578:lI108|H2800BE568 +2800BE588:lI115|H2800BE578 +2800BE598:lI115|H2800BE588 +2800BE5C0:t2:A5:local,A1D:tls_server_session_ticket_sup +2800BE5D8:t2:A5:local,A22:tls_server_session_ticket_sup_dist +2800BE5F0:t2:A2:ok,H2800BE608 +2800BE608:t2:H2800BE640,H2800BE670 +2800BE620:t3:A8:strategy,A6:period,A9:intensity +2800BE640:Mf3:H2800BE620:A12:simple_one_for_one,I3600,I0 +2800BE670:lH2800BE6B8|N +2800BE680:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BE6B8:Mf6:H2800BE680:A9:undefined,A9:transient,I4000,H2800BE710,A6:worker,H2800BE700 +2800BE700:lA19:tls_server_session_ticket|N +2800BE710:t3:A19:tls_server_session_ticket,AA:start_link,N +2800BE730:lI108|N +2800BE740:lI114|H2800BE730 +2800BE750:lI101|H2800BE740 +2800BE760:lI46|H2800BE750 +2800BE770:lI112|H2800BE760 +2800BE780:lI117|H2800BE770 +2800BE790:lI115|H2800BE780 +2800BE7A0:lI95|H2800BE790 +2800BE7B0:lI116|H2800BE7A0 +2800BE7C0:lI101|H2800BE7B0 +2800BE7D0:lI107|H2800BE7C0 +2800BE7E0:lI99|H2800BE7D0 +2800BE7F0:lI105|H2800BE7E0 +2800BE800:lI116|H2800BE7F0 +2800BE810:lI95|H2800BE800 +2800BE820:lI110|H2800BE810 +2800BE830:lI111|H2800BE820 +2800BE840:lI105|H2800BE830 +2800BE850:lI115|H2800BE840 +2800BE860:lI115|H2800BE850 +2800BE870:lI101|H2800BE860 +2800BE880:lI115|H2800BE870 +2800BE890:lI95|H2800BE880 +2800BE8A0:lI114|H2800BE890 +2800BE8B0:lI101|H2800BE8A0 +2800BE8C0:lI118|H2800BE8B0 +2800BE8D0:lI114|H2800BE8C0 +2800BE8E0:lI101|H2800BE8D0 +2800BE8F0:lI115|H2800BE8E0 +2800BE900:lI95|H2800BE8F0 +2800BE910:lI115|H2800BE900 +2800BE920:lI108|H2800BE910 +2800BE930:lI116|H2800BE920 +2800BE958:t2:A5:local,A1C:ssl_server_session_cache_sup +2800BE970:t2:A2:ok,H2800BE988 +2800BE988:t2:H2800BE9C0,H2800BE9F0 +2800BE9A0:t3:A8:strategy,A6:period,A9:intensity +2800BE9C0:Mf3:H2800BE9A0:A12:simple_one_for_one,I3600,I3 +2800BE9F0:lH2800BEA38|N +2800BEA00:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BEA38:Mf6:H2800BEA00:A9:undefined,A9:transient,I4000,H2800BEA90,A6:worker,H2800BEA80 +2800BEA80:lA18:ssl_server_session_cache|N +2800BEA90:t3:A18:ssl_server_session_cache,AA:start_link,N +2800BEAB0:lI108|N +2800BEAC0:lI114|H2800BEAB0 +2800BEAD0:lI101|H2800BEAC0 +2800BEAE0:lI46|H2800BEAD0 +2800BEAF0:lI112|H2800BEAE0 +2800BEB00:lI117|H2800BEAF0 +2800BEB10:lI115|H2800BEB00 +2800BEB20:lI95|H2800BEB10 +2800BEB30:lI101|H2800BEB20 +2800BEB40:lI104|H2800BEB30 +2800BEB50:lI99|H2800BEB40 +2800BEB60:lI97|H2800BEB50 +2800BEB70:lI99|H2800BEB60 +2800BEB80:lI95|H2800BEB70 +2800BEB90:lI110|H2800BEB80 +2800BEBA0:lI111|H2800BEB90 +2800BEBB0:lI105|H2800BEBA0 +2800BEBC0:lI115|H2800BEBB0 +2800BEBD0:lI115|H2800BEBC0 +2800BEBE0:lI101|H2800BEBD0 +2800BEBF0:lI115|H2800BEBE0 +2800BEC00:lI95|H2800BEBF0 +2800BEC10:lI114|H2800BEC00 +2800BEC20:lI101|H2800BEC10 +2800BEC30:lI118|H2800BEC20 +2800BEC40:lI114|H2800BEC30 +2800BEC50:lI101|H2800BEC40 +2800BEC60:lI115|H2800BEC50 +2800BEC70:lI95|H2800BEC60 +2800BEC80:lI108|H2800BEC70 +2800BEC90:lI115|H2800BEC80 +2800BECA0:lI115|H2800BEC90 +2800BECC8:t2:A5:local,A24:ssl_upgrade_server_session_cache_sup +2800BECE0:t2:A5:local,A29:ssl_upgrade_server_session_cache_sup_dist +2800BECF8:t2:A2:ok,H2800BED10 +2800BED10:t2:H2800BED48,H2800BED78 +2800BED28:t3:A8:strategy,A6:period,A9:intensity +2800BED48:Mf3:H2800BED28:A12:simple_one_for_one,I3600,I3 +2800BED78:lH2800BEDC0|N +2800BED88:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BEDC0:Mf6:H2800BED88:A9:undefined,A9:transient,I4000,H2800BEE18,A6:worker,H2800BEE08 +2800BEE08:lA18:ssl_server_session_cache|N +2800BEE18:t3:A18:ssl_server_session_cache,AA:start_link,N +2800BEE38:lI108|N +2800BEE48:lI114|H2800BEE38 +2800BEE58:lI101|H2800BEE48 +2800BEE68:lI46|H2800BEE58 +2800BEE78:lI112|H2800BEE68 +2800BEE88:lI117|H2800BEE78 +2800BEE98:lI115|H2800BEE88 +2800BEEA8:lI95|H2800BEE98 +2800BEEB8:lI101|H2800BEEA8 +2800BEEC8:lI104|H2800BEEB8 +2800BEED8:lI99|H2800BEEC8 +2800BEEE8:lI97|H2800BEED8 +2800BEEF8:lI99|H2800BEEE8 +2800BEF08:lI95|H2800BEEF8 +2800BEF18:lI110|H2800BEF08 +2800BEF28:lI111|H2800BEF18 +2800BEF38:lI105|H2800BEF28 +2800BEF48:lI115|H2800BEF38 +2800BEF58:lI115|H2800BEF48 +2800BEF68:lI101|H2800BEF58 +2800BEF78:lI115|H2800BEF68 +2800BEF88:lI95|H2800BEF78 +2800BEF98:lI114|H2800BEF88 +2800BEFA8:lI101|H2800BEF98 +2800BEFB8:lI118|H2800BEFA8 +2800BEFC8:lI114|H2800BEFB8 +2800BEFD8:lI101|H2800BEFC8 +2800BEFE8:lI115|H2800BEFD8 +2800BEFF8:lI95|H2800BEFE8 +2800BF008:lI101|H2800BEFF8 +2800BF018:lI100|H2800BF008 +2800BF028:lI97|H2800BF018 +2800BF038:lI114|H2800BF028 +2800BF048:lI103|H2800BF038 +2800BF058:lI112|H2800BF048 +2800BF068:lI117|H2800BF058 +2800BF078:lI95|H2800BF068 +2800BF088:lI108|H2800BF078 +2800BF098:lI115|H2800BF088 +2800BF0A8:lI115|H2800BF098 +2800BF370:t2:A5:local,A13:dtls_connection_sup +2800BF388:t2:A5:local,A18:dtls_connection_sup_dist +2800BF3A0:t2:A2:ok,H2800BF3B8 +2800BF3B8:t2:H2800BF3F0,H2800BF420 +2800BF3D0:t3:A8:strategy,A6:period,A9:intensity +2800BF3F0:Mf3:H2800BF3D0:A12:simple_one_for_one,I3600,I0 +2800BF420:lH2800BF468|N +2800BF430:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BF468:Mf6:H2800BF430:A9:undefined,A9:temporary,I4000,H2800BF4D0,A6:worker,H2800BF4B0 +2800BF4B0:lAE:ssl_gen_statem|H2800BF4C0 +2800BF4C0:lAF:dtls_connection|N +2800BF4D0:t3:AE:ssl_gen_statem,AA:start_link,N +2800BF4F0:lI108|N +2800BF500:lI114|H2800BF4F0 +2800BF510:lI101|H2800BF500 +2800BF520:lI46|H2800BF510 +2800BF530:lI112|H2800BF520 +2800BF540:lI117|H2800BF530 +2800BF550:lI115|H2800BF540 +2800BF560:lI95|H2800BF550 +2800BF570:lI110|H2800BF560 +2800BF580:lI111|H2800BF570 +2800BF590:lI105|H2800BF580 +2800BF5A0:lI116|H2800BF590 +2800BF5B0:lI99|H2800BF5A0 +2800BF5C0:lI101|H2800BF5B0 +2800BF5D0:lI110|H2800BF5C0 +2800BF5E0:lI110|H2800BF5D0 +2800BF5F0:lI111|H2800BF5E0 +2800BF600:lI99|H2800BF5F0 +2800BF610:lI95|H2800BF600 +2800BF620:lI115|H2800BF610 +2800BF630:lI108|H2800BF620 +2800BF640:lI116|H2800BF630 +2800BF650:lI100|H2800BF640 +2800BF988:t2:A5:local,A11:dtls_listener_sup +2800BF9A0:t2:A5:error,A11:already_listening +2800BF9B8:lAB:named_table|H2800BF9C8 +2800BF9C8:lA6:public|H2800BF9D8 +2800BF9D8:lA3:set|N +2800BF9E8:t2:A2:ok,H2800BFA00 +2800BFA00:t2:H2800BFA38,H2800BFA68 +2800BFA18:t3:A8:strategy,A6:period,A9:intensity +2800BFA38:Mf3:H2800BFA18:A12:simple_one_for_one,I3600,I0 +2800BFA68:lH2800BFAB0|N +2800BFA78:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BFAB0:Mf6:H2800BFA78:A9:undefined,A9:temporary,I4000,H2800BFB08,A6:worker,H2800BFAF8 +2800BFAF8:lA11:dtls_packet_demux|N +2800BFB08:t3:A11:dtls_packet_demux,AA:start_link,N +2800BFB28:lI108|N +2800BFB38:lI114|H2800BFB28 +2800BFB48:lI101|H2800BFB38 +2800BFB58:lI46|H2800BFB48 +2800BFB68:lI112|H2800BFB58 +2800BFB78:lI117|H2800BFB68 +2800BFB88:lI115|H2800BFB78 +2800BFB98:lI95|H2800BFB88 +2800BFBA8:lI114|H2800BFB98 +2800BFBB8:lI101|H2800BFBA8 +2800BFBC8:lI110|H2800BFBB8 +2800BFBD8:lI101|H2800BFBC8 +2800BFBE8:lI116|H2800BFBD8 +2800BFBF8:lI115|H2800BFBE8 +2800BFC08:lI105|H2800BFBF8 +2800BFC18:lI108|H2800BFC08 +2800BFC28:lI95|H2800BFC18 +2800BFC38:lI115|H2800BFC28 +2800BFC48:lI108|H2800BFC38 +2800BFC58:lI116|H2800BFC48 +2800BFC68:lI100|H2800BFC58 +2800BFC90:t2:A5:local,A1D:dtls_server_session_cache_sup +2800BFCA8:t2:A2:ok,H2800BFCC0 +2800BFCC0:t2:H2800BFCF8,H2800BFD28 +2800BFCD8:t3:A8:strategy,A6:period,A9:intensity +2800BFCF8:Mf3:H2800BFCD8:A12:simple_one_for_one,I3600,I0 +2800BFD28:lH2800BFD70|N +2800BFD38:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules +2800BFD70:Mf6:H2800BFD38:A9:undefined,A9:temporary,I4000,H2800BFDC8,A6:worker,H2800BFDB8 +2800BFDB8:lA18:ssl_server_session_cache|N +2800BFDC8:t3:A18:ssl_server_session_cache,AA:start_link,N +2800BFDE8:lI108|N +2800BFDF8:lI114|H2800BFDE8 +2800BFE08:lI101|H2800BFDF8 +2800BFE18:lI46|H2800BFE08 +2800BFE28:lI112|H2800BFE18 +2800BFE38:lI117|H2800BFE28 +2800BFE48:lI115|H2800BFE38 +2800BFE58:lI95|H2800BFE48 +2800BFE68:lI101|H2800BFE58 +2800BFE78:lI104|H2800BFE68 +2800BFE88:lI99|H2800BFE78 +2800BFE98:lI97|H2800BFE88 +2800BFEA8:lI99|H2800BFE98 +2800BFEB8:lI95|H2800BFEA8 +2800BFEC8:lI110|H2800BFEB8 +2800BFED8:lI111|H2800BFEC8 +2800BFEE8:lI105|H2800BFED8 +2800BFEF8:lI115|H2800BFEE8 +2800BFF08:lI115|H2800BFEF8 +2800BFF18:lI101|H2800BFF08 +2800BFF28:lI115|H2800BFF18 +2800BFF38:lI95|H2800BFF28 +2800BFF48:lI114|H2800BFF38 +2800BFF58:lI101|H2800BFF48 +2800BFF68:lI118|H2800BFF58 +2800BFF78:lI114|H2800BFF68 +2800BFF88:lI101|H2800BFF78 +2800BFF98:lI115|H2800BFF88 +2800BFFA8:lI95|H2800BFF98 +2800BFFB8:lI115|H2800BFFA8 +2800BFFC8:lI108|H2800BFFB8 +2800BFFD8:lI116|H2800BFFC8 +2800BFFE8:lI100|H2800BFFD8 +2800CCFF0:E30:g3F3EmdsZWFtX290cF9leHRlcm5hbHcWY29udmVydF9zeXN0ZW1fbWVzc2FnZWEC +2800CD018:Yh27:QWN0b3IgZGlzY2FyZGluZyB1bmV4cGVjdGVkIG1lc3NhZ2U6IH5z +2800CD050:t2:A5:error,AC:init_timeout +2800CD068:lI108|N +2800CD078:lI114|H2800CD068 +2800CD088:lI101|H2800CD078 +2800CD098:lI46|H2800CD088 +2800CD0A8:lI114|H2800CD098 +2800CD0B8:lI111|H2800CD0A8 +2800CD0C8:lI116|H2800CD0B8 +2800CD0D8:lI99|H2800CD0C8 +2800CD0E8:lI97|H2800CD0D8 +2800CD0F8:lI64|H2800CD0E8 +2800CD108:lI112|H2800CD0F8 +2800CD118:lI116|H2800CD108 +2800CD128:lI111|H2800CD118 +2800CD138:lI64|H2800CD128 +2800CD148:lI109|H2800CD138 +2800CD158:lI97|H2800CD148 +2800CD168:lI101|H2800CD158 +2800CD178:lI108|H2800CD168 +2800CD188:lI103|H2800CD178 +2800CD198:lI108|N +2800CD1A8:lI114|H2800CD198 +2800CD1B8:lI101|H2800CD1A8 +2800CD1C8:lI46|H2800CD1B8 +2800CD1D8:lI114|H2800CD1C8 +2800CD1E8:lI111|H2800CD1D8 +2800CD1F8:lI116|H2800CD1E8 +2800CD208:lI99|H2800CD1F8 +2800CD218:lI97|H2800CD208 +2800CD228:lI64|H2800CD218 +2800CD238:lI112|H2800CD228 +2800CD248:lI116|H2800CD238 +2800CD258:lI111|H2800CD248 +2800CD268:lI64|H2800CD258 +2800CD278:lI109|H2800CD268 +2800CD288:lI97|H2800CD278 +2800CD298:lI101|H2800CD288 +2800CD2A8:lI108|H2800CD298 +2800CD2B8:lI103|H2800CD2A8 +2800CD2C8:lI47|H2800CD2B8 +2800CD2D8:lI115|H2800CD2C8 +2800CD2E8:lI116|H2800CD2D8 +2800CD2F8:lI99|H2800CD2E8 +2800CD308:lI97|H2800CD2F8 +2800CD318:lI102|H2800CD308 +2800CD328:lI101|H2800CD318 +2800CD338:lI116|H2800CD328 +2800CD348:lI114|H2800CD338 +2800CD358:lI97|H2800CD348 +2800CD368:lI95|H2800CD358 +2800CD378:lI109|H2800CD368 +2800CD388:lI97|H2800CD378 +2800CD398:lI101|H2800CD388 +2800CD3A8:lI108|H2800CD398 +2800CD3B8:lI103|H2800CD3A8 +2800CD3C8:lI95|H2800CD3B8 +2800CD3D8:lI47|H2800CD3C8 +2800CD3E8:lI112|H2800CD3D8 +2800CD3F8:lI116|H2800CD3E8 +2800CD408:lI111|H2800CD3F8 +2800CD418:lI95|H2800CD408 +2800CD428:lI109|H2800CD418 +2800CD438:lI97|H2800CD428 +2800CD448:lI101|H2800CD438 +2800CD458:lI108|H2800CD448 +2800CD468:lI103|H2800CD458 +2800CD478:lI47|H2800CD468 +2800CD488:lI103|H2800CD478 +2800CD498:lI110|H2800CD488 +2800CD4A8:lI97|H2800CD498 +2800CD4B8:lI108|H2800CD4A8 +2800CD4C8:lI114|H2800CD4B8 +2800CD4D8:lI101|H2800CD4C8 +2800CD4E8:lI47|H2800CD4D8 +2800CD4F8:lI118|H2800CD4E8 +2800CD508:lI101|H2800CD4F8 +2800CD518:lI100|H2800CD508 +2800CD528:lI47|H2800CD518 +2800CD538:lI100|H2800CD528 +2800CD548:lI108|H2800CD538 +2800CD558:lI105|H2800CD548 +2800CD568:lI117|H2800CD558 +2800CD578:lI98|H2800CD568 +2800CD588:lI47|H2800CD578 +2800CD598:lI51|H2800CD588 +2800CD5A8:lI50|H2800CD598 +2800CD5B8:lI48|H2800CD5A8 +2800CD5C8:lI50|H2800CD5B8 +2800CD5D8:lI99|H2800CD5C8 +2800CD5E8:lI111|H2800CD5D8 +2800CD5F8:lI97|H2800CD5E8 +2800CD608:lI47|H2800CD5F8 +2800CD618:lI101|H2800CD608 +2800CD628:lI100|H2800CD618 +2800CD638:lI111|H2800CD628 +2800CD648:lI67|H2800CD638 +2800CD658:lI102|H2800CD648 +2800CD668:lI79|H2800CD658 +2800CD678:lI116|H2800CD668 +2800CD688:lI110|H2800CD678 +2800CD698:lI101|H2800CD688 +2800CD6A8:lI118|H2800CD698 +2800CD6B8:lI100|H2800CD6A8 +2800CD6C8:lI65|H2800CD6B8 +2800CD6D8:lI47|H2800CD6C8 +2800CD6E8:lI101|H2800CD6D8 +2800CD6F8:lI100|H2800CD6E8 +2800CD708:lI111|H2800CD6F8 +2800CD718:lI67|H2800CD708 +2800CD728:lI32|H2800CD718 +2800CD738:lI83|H2800CD728 +2800CD748:lI86|H2800CD738 +2800CD758:lI47|H2800CD748 +2800CD768:lI110|H2800CD758 +2800CD778:lI111|H2800CD768 +2800CD788:lI115|H2800CD778 +2800CD798:lI108|H2800CD788 +2800CD7A8:lI114|H2800CD798 +2800CD7B8:lI97|H2800CD7A8 +2800CD7C8:lI99|H2800CD7B8 +2800CD7D8:lI115|H2800CD7C8 +2800CD7E8:lI97|H2800CD7D8 +2800CD7F8:lI108|H2800CD7E8 +2800CD808:lI111|H2800CD7F8 +2800CD818:lI104|H2800CD808 +2800CD828:lI99|H2800CD818 +2800CD838:lI105|H2800CD828 +2800CD848:lI110|H2800CD838 +2800CD858:lI47|H2800CD848 +2800CD868:lI115|H2800CD858 +2800CD878:lI114|H2800CD868 +2800CD888:lI101|H2800CD878 +2800CD898:lI115|H2800CD888 +2800CD8A8:lI85|H2800CD898 +2800CD8B8:lI47|H2800CD8A8 +2800CD8C8:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAAAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQBiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800CD8F0:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAABAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQFiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800CD918:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAACAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQJiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800CD940:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAFAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQViBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +2800CD968:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAGAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQZiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= +280093080:t2:H280093098,A5:async +280093098:t2:AA:logger_olp,A14:logger_std_h_default +28008F548:t2:AC:logger_proxy,H28008F560 +28008F560:t3:AC:logger_proxy,P<0.72.0>,H28008F580 +28008F580:t2:AA:logger_olp,AC:logger_proxy +2800930C8:t2:H2800930E0,I10 +2800930E0:t2:AD:logger_config,H2800930F8 +2800930F8:t2:A10:$handler_config$,A7:default +28001C1F8:t2:H28001C210,H28001C228 +28001C210:t2:AB:prim_socket,A7:options +28001C228:MhC2:10:H28001C2B8,H28001C2F8,H28001C338,H28001C380,H28001C3E0,H28001C410,H28001C460,H28001C4B0,H28001C4F8,H28001C550,H28001C598,H28001C5F0,H28001C658,H28001C6B8,H28001C710,H28001C740 +28001C2B8:Mn7:H28001C790,H28001C7A0,H28001C7B0,H28001C7C0,H28001C7D0,H28001C7E0,H28001C7F8 +28001C2F8:Mn7:H28001C808,H28001C830,H28001C840,H28001C850,H28001C860,H28001C878,H28001C888 +28001C338:Mn8:H28001C8A0,H28001C8B0,H28001C8D8,H28001C900,H28001C910,H28001C938,H28001C950,H28001C960 +28001C380:MnB:H28001C988,H28001C998,H28001C9A8,H28001C9C0,H28001C9E0,H28001CA08,H28001CA30,H28001CA48,H28001CA70,H28001CA80,H28001CA90 +28001C3E0:Mn5:H28001CAB8,H28001CAC8,H28001CAD8,H28001CB00,H28001CB20 +28001C410:Mn9:H28001CB38,H28001CB48,H28001CB58,H28001CB68,H28001CB90,H28001CBA8,H28001CBD0,H28001CBF8,H28001CC08 +28001C460:Mn9:H28001CC18,H28001CC30,H28001CC58,H28001CC70,H28001CC88,H28001CC98,H28001CCA8,H28001CCC0,H28001CCD0 +28001C4B0:Mn8:H28001CCF8,H28001CD08,H28001CD18,H28001CD28,H28001CD40,H28001CD50,H28001CD60,H28001CD78 +28001C4F8:MnA:H28001CD88,H28001CDA0,H28001CDC8,H28001CDD8,H28001CDE8,H28001CE00,H28001CE18,H28001CE28,H28001CE38,H28001CE60 +28001C550:Mn8:H28001CE88,H28001CEB0,H28001CED8,H28001CEF0,H28001CF18,H28001CF30,H28001CF40,H28001CF50 +28001C598:MnA:H28001CF60,H28001CF78,H28001CFA0,H28001CFB8,H28001CFD8,H28001D000,H28001D010,H28001D020,H28001D038,H28001D048 +28001C5F0:MnC:H28001D058,H28001D080,H28001D090,H28001D0A8,H28001D0C0,H28001D0E8,H28001D110,H28001D120,H28001D130,H28001D140,H28001D150,H28001D160 +28001C658:MnB:H28001D170,H28001D180,H28001D190,H28001D1A0,H28001D1B0,H28001D1C0,H28001D1E8,H28001D1F8,H28001D208,H28001D218,H28001D228 +28001C6B8:MnA:H28001D238,H28001D248,H28001D268,H28001D278,H28001D298,H28001D2A8,H28001D2B8,H28001D2D0,H28001D2E8,H28001D308 +28001C710:Mn5:H28001D318,H28001D330,H28001D348,H28001D370,H28001D388 +28001C740:Mn9:H28001D398,H28001D3A8,H28001D3B8,H28001D3E0,H28001D3F0,H28001D400,H28001D410,H28001D420,H28001D430 +28001C790:lH28001D440|A9:undefined +28001C7A0:lH28001D458|A9:undefined +28001C7B0:lH28001D470|A9:undefined +28001C7C0:lH28001D488|A9:undefined +28001C7D0:lH28001D4A0|A9:undefined +28001C7E0:Mn2:H28001D4B8,H28001D4C8 +28001C7F8:lH28001D4D8|A9:undefined +28001C808:lH28001D4F0|H28001C818 +28001C818:t2:A6:socket,I1024 +28001C830:lH28001D508|A9:undefined +28001C840:lH28001D520|A9:undefined +28001C850:lH28001D538|A9:undefined +28001C860:Mn2:H28001D550,H28001D560 +28001C878:lH28001D588|A9:undefined +28001C888:Mn2:H28001D5A0,H28001D5C8 +28001C8A0:lH28001D5F0|A9:undefined +28001C8B0:lH28001D608|H28001C8C0 +28001C8C0:t2:I0,I4 +28001C8D8:Mn4:H28001D620,H28001D648,H28001D658,H28001D668 +28001C900:lH28001D678|A9:undefined +28001C910:lH28001D690|H28001C920 +28001C920:t2:I0,I26 +28001C938:Mn2:H28001D6A8,H28001D6B8 +28001C950:lH28001D6C8|A9:undefined +28001C960:lH28001D6E0|H28001C970 +28001C970:t2:A6:socket,I4099 +28001C988:lH28001D6F8|A9:undefined +28001C998:lH28001D710|A9:undefined +28001C9A8:Mn2:H28001D728,H28001D738 +28001C9C0:Mn3:H28001D748,H28001D770,H28001D780 +28001C9E0:lH28001D790|H28001C9F0 +28001C9F0:t2:I0,I72 +28001CA08:lH28001D7A8|H28001CA18 +28001CA18:t2:I41,I36 +28001CA30:Mn2:H28001D7C0,H28001D7D0 +28001CA48:lH28001D7F8|H28001CA58 +28001CA58:t2:I41,I27 +28001CA70:lH28001D810|A9:undefined +28001CA80:lH28001D828|A9:undefined +28001CA90:lH28001D840|H28001CAA0 +28001CAA0:t2:I0,I70 +28001CAB8:lH28001D858|A9:undefined +28001CAC8:lH28001D870|A9:undefined +28001CAD8:lH28001D888|H28001CAE8 +28001CAE8:t2:I6,I2 +28001CB00:Mn3:H28001D8A0,H28001D8B0,H28001D8D8 +28001CB20:Mn2:H28001D8E8,H28001D8F8 +28001CB38:Mn1:H28001D908 +28001CB48:lH28001D920|A9:undefined +28001CB58:lH28001D938|A9:undefined +28001CB68:lH28001D950|H28001CB78 +28001CB78:t2:I0,I73 +28001CB90:Mn2:H28001D968,H28001D978 +28001CBA8:lH28001D9A0|H28001CBB8 +28001CBB8:t2:A6:socket,I256 +28001CBD0:lH28001D9B8|H28001CBE0 +28001CBE0:t2:I41,I10 +28001CBF8:lH28001D9D0|A9:undefined +28001CC08:lH28001D9E8|A9:undefined +28001CC18:Mn2:H28001DA00,H28001DA10 +28001CC30:lH28001DA20|H28001CC40 +28001CC40:t2:I0,I3 +28001CC58:Mn2:H28001DA38,H28001DA48 +28001CC70:Mn2:H28001DA58,H28001DA68 +28001CC88:lH28001DA78|A9:undefined +28001CC98:lH28001DA90|A9:undefined +28001CCA8:Mn2:H28001DAA8,H28001DAB8 +28001CCC0:lH28001DAC8|A9:undefined +28001CCD0:Mn4:H28001DAE0,H28001DAF0,H28001DB00,H28001DB10 +28001CCF8:lH28001DB20|A9:undefined +28001CD08:lH28001DB38|H28001CA58 +28001CD18:lH28001DB50|A9:undefined +28001CD28:Mn2:H28001DB68,H28001DB90 +28001CD40:lH28001DBA0|H28001CAA0 +28001CD50:lH28001DBB8|H28001CA18 +28001CD60:Mn2:H28001DBD0,H28001DBF8 +28001CD78:lH28001DC08|A9:undefined +28001CD88:Mn2:H28001DC20,H28001DC30 +28001CDA0:lH28001DC40|H28001CDB0 +28001CDB0:t2:A6:socket,I8 +28001CDC8:Mn1:H28001DC58 +28001CDD8:lH28001DC70|A9:undefined +28001CDE8:Mn2:H28001DC88,H28001DC98 +28001CE00:Mn2:H28001DCA8,H28001DCB8 +28001CE18:lH28001DCC8|A9:undefined +28001CE28:lH28001DCE0|A9:undefined +28001CE38:lH28001DCF8|H28001CE48 +28001CE48:t2:I0,I27 +28001CE60:lH28001DD10|H28001CE70 +28001CE70:t2:I0,I8 +28001CE88:Mn4:H28001DD28,H28001DD38,H28001DD48,H28001DD70 +28001CEB0:lH28001DD98|H28001CEC0 +28001CEC0:t2:I0,I9 +28001CED8:Mn2:H28001DDB0,H28001DDC0 +28001CEF0:lH28001DDE8|H28001CF00 +28001CF00:t2:I0,I24 +28001CF18:Mn2:H28001DE00,H28001DE10 +28001CF30:lH28001DE20|A9:undefined +28001CF40:lH28001DE38|H28001CB78 +28001CF50:lH28001DE50|A9:undefined +28001CF60:Mn2:H28001DE68,H28001DE78 +28001CF78:lH28001DE88|H28001CF88 +28001CF88:t2:A6:socket,I1 +28001CFA0:Mn2:H28001DEA0,H28001DEB0 +28001CFB8:Mn3:H28001DEC0,H28001DED8,H28001DEE8 +28001CFD8:lH28001DEF8|H28001CFE8 +28001CFE8:t2:I6,I1 +28001D000:lH28001DF10|A9:undefined +28001D010:lH28001DF28|A9:undefined +28001D020:Mn2:H28001DF40,H28001DF50 +28001D038:lH28001DF60|A9:undefined +28001D048:lH28001DF78|A9:undefined +28001D058:lH28001DF90|H28001D068 +28001D068:t2:I0,I13 +28001D080:lH28001DFA8|A9:undefined +28001D090:Mn2:H28001DFC0,H28001DFD0 +28001D0A8:Mn2:H28001DFF8,H28001E008 +28001D0C0:lH28001E018|H28001D0D0 +28001D0D0:t2:I0,I10 +28001D0E8:lH28001E030|H28001D0F8 +28001D0F8:t2:A6:socket,I16 +28001D110:lH28001E048|A9:undefined +28001D120:lH28001E060|A9:undefined +28001D130:lH28001E078|A9:undefined +28001D140:lH28001E090|A9:undefined +28001D150:lH28001E0A8|A9:undefined +28001D160:lH28001E0C0|A9:undefined +28001D170:lH28001E0D8|A9:undefined +28001D180:Mn1:H28001E0F0 +28001D190:lH28001E108|A9:undefined +28001D1A0:lH28001E120|A9:undefined +28001D1B0:lH28001E138|H28001D0D0 +28001D1C0:lH28001E150|H28001D1D0 +28001D1D0:t2:A6:socket,I2 +28001D1E8:lH28001E168|A9:undefined +28001D1F8:lH28001E180|A9:undefined +28001D208:lH28001E198|A9:undefined +28001D218:Mn1:H28001E1B0 +28001D228:lH28001E1C8|A9:undefined +28001D238:lH28001E1E0|A9:undefined +28001D248:Mn3:H28001E1F8,H28001E208,H28001E218 +28001D268:lH28001E228|A9:undefined +28001D278:Mn3:H28001E240,H28001E268,H28001E278 +28001D298:lH28001E288|A9:undefined +28001D2A8:lH28001E2A0|H28001CE70 +28001D2B8:Mn2:H28001E2B8,H28001E2C8 +28001D2D0:Mn2:H28001E2D8,H28001E2E8 +28001D2E8:Mn3:H28001E2F8,H28001E320,H28001E330 +28001D308:lH28001E340|A9:undefined +28001D318:Mn2:H28001E358,H28001E368 +28001D330:Mn2:H28001E378,H28001E388 +28001D348:lH28001E398|H28001D358 +28001D358:t2:A6:socket,I4104 +28001D370:Mn2:H28001E3B0,H28001E3C0 +28001D388:lH28001E3D0|A9:undefined +28001D398:lH28001E3E8|A9:undefined +28001D3A8:lH28001E400|A9:undefined +28001D3B8:lH28001E418|H28001D3C8 +28001D3C8:t2:A6:socket,I32 +28001D3E0:lH28001E430|A9:undefined +28001D3F0:lH28001E448|A9:undefined +28001D400:lH28001E460|A9:undefined +28001D410:lH28001E478|A9:undefined +28001D420:lH28001E490|A9:undefined +28001D430:lH28001E4A8|A9:undefined +28001D440:t2:A3:tcp,A8:keepidle +28001D458:t2:A3:TCP,A5:noopt +28001D470:t2:A4:ipv6,AA:pktoptions +28001D488:t2:A4:IPV6,AF:drop_membership +28001D4A0:t2:A3:tcp,AC:user_timeout +28001D4B8:lH28001E4C0|A9:undefined +28001D4C8:lH28001E4D8|A9:undefined +28001D4D8:t2:A4:IPV6,AB:use_min_mtu +28001D4F0:t2:A6:socket,A9:timestamp +28001D508:t2:A2:IP,AD:multicast_all +28001D520:t2:A3:TCP,A6:syncnt +28001D538:t2:A4:ipv6,AF:drop_membership +28001D550:lH28001E4F0|A9:undefined +28001D560:lH28001E508|H28001D570 +28001D570:t2:I0,I2 +28001D588:t2:A3:TCP,A7:keepcnt +28001D5A0:lH28001E520|H28001D5B0 +28001D5B0:t2:I0,I20 +28001D5C8:lH28001E538|H28001D5D8 +28001D5D8:t2:A6:socket,I512 +28001D5F0:t2:A2:IP,A8:dontfrag +28001D608:t2:A2:IP,A3:ttl +28001D620:lH28001E550|H28001D630 +28001D630:t2:I0,I12 +28001D648:lH28001E568|A9:undefined +28001D658:lH28001E580|H28001CBE0 +28001D668:lH28001E598|H28001C920 +28001D678:t2:A4:ipv6,AB:use_min_mtu +28001D690:t2:A2:IP,A7:pktinfo +28001D6A8:lH28001E5B0|A9:undefined +28001D6B8:lH28001E5C8|A9:undefined +28001D6C8:t2:A4:IPV6,A9:portrange +28001D6E0:t2:A6:socket,A8:sndlowat +28001D6F8:t2:A3:TCP,A8:keepidle +28001D710:t2:A2:ip,A3:mtu +28001D728:lH28001E5E0|A9:undefined +28001D738:lH28001E5F8|A9:undefined +28001D748:lH28001E610|H28001D758 +28001D758:t2:A6:socket,I4100 +28001D770:lH28001E628|A9:undefined +28001D780:lH28001E640|A9:undefined +28001D790:t2:A2:IP,AC:block_source +28001D7A8:t2:A4:IPV6,A6:tclass +28001D7C0:lH28001E658|A9:undefined +28001D7D0:lH28001E670|H28001D7E0 +28001D7E0:t2:A6:socket,I4098 +28001D7F8:t2:A4:ipv6,A6:v6only +28001D810:t2:A2:ip,A8:nodefrag +28001D828:t2:A3:tcp,A7:keepcnt +28001D840:t2:A2:ip,A15:add_source_membership +28001D858:t2:A4:ipv6,AB:leave_group +28001D870:t2:A2:ip,A6:minttl +28001D888:t2:A3:TCP,A6:maxseg +28001D8A0:lH28001E688|A9:undefined +28001D8B0:lH28001E6A0|H28001D8C0 +28001D8C0:t2:I41,I4 +28001D8D8:lH28001E6B8|A9:undefined +28001D8E8:lH28001E6D0|A9:undefined +28001D8F8:lH28001E6E8|H28001CE48 +28001D908:Mn2:H28001E700,H28001E710 +28001D920:t2:A6:socket,AB:sndbufforce +28001D938:t2:A4:IPV6,A5:faith +28001D950:t2:A2:ip,AE:unblock_source +28001D968:lH28001E720|A9:undefined +28001D978:lH28001E738|H28001D988 +28001D988:t2:I41,I35 +28001D9A0:t2:A6:socket,A9:oobinline +28001D9B8:t2:A4:ipv6,AE:multicast_hops +28001D9D0:t2:A6:socket,A8:passcred +28001D9E8:t2:A3:TCP,AA:congestion +28001DA00:lH28001E750|A9:undefined +28001DA10:lH28001E768|H28001C8C0 +28001DA20:t2:A2:ip,A3:tos +28001DA38:lH28001E780|A9:undefined +28001DA48:lH28001E798|A9:undefined +28001DA58:lH28001E7B0|A9:undefined +28001DA68:lH28001E7C8|A9:undefined +28001DA78:t2:A6:socket,A6:setfib +28001DA90:t2:A6:socket,A8:protocol +28001DAA8:lH28001E7E0|A9:undefined +28001DAB8:lH28001E7F8|H28001CFE8 +28001DAC8:t2:A6:socket,A8:rxq_ovfl +28001DAE0:lH28001E810|A9:undefined +28001DAF0:lH28001E828|A9:undefined +28001DB00:lH28001E840|A9:undefined +28001DB10:lH28001E858|A9:undefined +28001DB20:t2:A6:socket,AB:rcvbufforce +28001DB38:t2:A4:IPV6,A6:v6only +28001DB50:t2:A4:ipv6,AB:recvpktinfo +28001DB68:lH28001E870|H28001DB78 +28001DB78:t2:A6:socket,I4 +28001DB90:lH28001E888|H28001D630 +28001DBA0:t2:A2:IP,A15:add_source_membership +28001DBB8:t2:A4:ipv6,A6:tclass +28001DBD0:lH28001E8A0|H28001DBE0 +28001DBE0:t2:I0,I7 +28001DBF8:lH28001E8B8|A9:undefined +28001DC08:t2:A4:ipv6,A7:recverr +28001DC20:lH28001E8D0|H28001CC40 +28001DC30:lH28001E8E8|A9:undefined +28001DC40:t2:A6:socket,A9:keepalive +28001DC58:Mn2:H28001E900,H28001E910 +28001DC70:t2:A6:socket,AC:bindtodevice +28001DC88:lH28001E920|H28001DBE0 +28001DC98:lH28001E938|A9:undefined +28001DCA8:lH28001E950|A9:undefined +28001DCB8:lH28001E968|A9:undefined +28001DCC8:t2:A4:IPV6,A8:flowinfo +28001DCE0:t2:A4:IPV6,A8:hoplimit +28001DCF8:t2:A2:IP,A7:recvtos +28001DD10:t2:A2:IP,A7:retopts +28001DD28:lH28001E980|A9:undefined +28001DD38:lH28001E998|A9:undefined +28001DD48:lH28001E9B0|H28001DD58 +28001DD58:t2:I41,I11 +28001DD70:lH28001E9C8|H28001DD80 +28001DD80:t2:I0,I11 +28001DD98:t2:A2:IP,AC:multicast_if +28001DDB0:lH28001E9E0|H28001CAE8 +28001DDC0:lH28001E9F8|H28001DDD0 +28001DDD0:t2:I0,I71 +28001DDE8:t2:A2:ip,A7:recvttl +28001DE00:lH28001EA10|H28001D8C0 +28001DE10:lH28001EA28|H28001CF00 +28001DE20:t2:A4:ipv6,A8:checksum +28001DE38:t2:A2:IP,AE:unblock_source +28001DE50:t2:A4:IPV6,AC:mtu_discover +28001DE68:lH28001EA40|A9:undefined +28001DE78:lH28001EA58|A9:undefined +28001DE88:t2:A6:socket,A5:debug +28001DEA0:lH28001EA70|H28001D570 +28001DEB0:lH28001EA88|A9:undefined +28001DEC0:Mn2:H28001EAA0,H28001EAB0 +28001DED8:lH28001EAC0|A9:undefined +28001DEE8:lH28001EAD8|A9:undefined +28001DEF8:t2:A3:TCP,A7:nodelay +28001DF10:t2:A4:IPV6,AC:ipcomp_level +28001DF28:t2:A3:tcp,A4:cork +28001DF40:lH28001EAF0|A9:undefined +28001DF50:lH28001EB08|H28001DD80 +28001DF60:t2:A2:IP,A8:freebind +28001DF78:t2:A4:IPV6,AA:join_group +28001DF90:t2:A2:ip,AF:drop_membership +28001DFA8:t2:A3:tcp,A5:noopt +28001DFC0:lH28001EB20|H28001CEC0 +28001DFD0:lH28001EB38|H28001DFE0 +28001DFE0:t2:I41,I9 +28001DFF8:lH28001EB50|A9:undefined +28001E008:lH28001EB68|A9:undefined +28001E018:t2:A2:ip,AD:multicast_ttl +28001E030:t2:A6:socket,A9:dontroute +28001E048:t2:A4:ipv6,AC:ipcomp_level +28001E060:t2:A2:ip,AA:pktoptions +28001E078:t2:A4:IPV6,AC:recvhoplimit +28001E090:t2:A4:IPV6,AE:add_membership +28001E0A8:t2:A2:ip,AC:router_alert +28001E0C0:t2:A3:udp,A4:cork +28001E0D8:t2:A2:ip,A7:options +28001E0F0:Mn2:H28001EB80,H28001EBA8 +28001E108:t2:A4:IPV6,A7:authhdr +28001E120:t2:A2:IP,A8:msfilter +28001E138:t2:A2:IP,AD:multicast_ttl +28001E150:t2:A6:socket,AA:acceptconn +28001E168:t2:A4:ipv6,AA:join_group +28001E180:t2:A4:ipv6,AC:mtu_discover +28001E198:t2:A4:ipv6,AC:recvhoplimit +28001E1B0:Mn2:H28001EBB8,H28001EBC8 +28001E1C8:t2:A6:socket,A8:sndtimeo +28001E1E0:t2:A4:ipv6,A7:authhdr +28001E1F8:lH28001EBD8|A9:undefined +28001E208:lH28001EBF0|A9:undefined +28001E218:lH28001EC08|A9:undefined +28001E228:t2:A2:ip,A8:msfilter +28001E240:lH28001EC20|H28001E250 +28001E250:t2:I0,I5 +28001E268:lH28001EC38|A9:undefined +28001E278:lH28001EC50|H28001D988 +28001E288:t2:A3:tcp,A9:keepintvl +28001E2A0:t2:A2:ip,A7:retopts +28001E2B8:lH28001EC68|A9:undefined +28001E2C8:lH28001EC80|A9:undefined +28001E2D8:lH28001EC98|A9:undefined +28001E2E8:lH28001ECB0|A9:undefined +28001E2F8:lH28001ECC8|H28001E308 +28001E308:t2:A6:socket,I128 +28001E320:lH28001ECE0|H28001C9F0 +28001E330:lH28001ECF8|H28001D068 +28001E340:t2:A4:IPV6,AA:auth_level +28001E358:lH28001ED10|A9:undefined +28001E368:lH28001ED28|A9:undefined +28001E378:lH28001ED40|H28001DD58 +28001E388:lH28001ED58|A9:undefined +28001E398:t2:A6:socket,A4:type +28001E3B0:lH28001ED70|A9:undefined +28001E3C0:lH28001ED88|A9:undefined +28001E3D0:t2:A3:TCP,A9:keepintvl +28001E3E8:t2:A2:IP,AC:router_alert +28001E400:t2:A2:IP,A3:mtu +28001E418:t2:A6:socket,A9:broadcast +28001E430:t2:A6:socket,A4:mark +28001E448:t2:A4:ipv6,A5:rthdr +28001E460:t2:A2:IP,AB:sendsrcaddr +28001E478:t2:A4:ipv6,A9:portrange +28001E490:t2:A6:socket,A6:domain +28001E4A8:t2:A2:ip,AB:transparent +28001E4C0:t2:A4:ipv6,AE:add_membership +28001E4D8:t2:A3:TCP,A4:cork +28001E4F0:t2:A4:ipv6,A5:faith +28001E508:t2:A2:ip,A7:hdrincl +28001E520:t2:A2:IP,A6:recvif +28001E538:t2:A6:socket,A9:reuseport +28001E550:t2:A2:ip,AE:add_membership +28001E568:t2:A6:socket,A8:priority +28001E580:t2:A4:IPV6,AE:multicast_hops +28001E598:t2:A2:ip,A7:pktinfo +28001E5B0:t2:A2:ip,AB:sendsrcaddr +28001E5C8:t2:A4:IPV6,AC:router_alert +28001E5E0:t2:A2:IP,A6:minttl +28001E5F8:t2:A4:IPV6,A8:checksum +28001E610:t2:A6:socket,A8:rcvlowat +28001E628:t2:A3:tcp,A4:info +28001E640:t2:A3:tcp,A6:md5sig +28001E658:t2:A4:ipv6,A7:hopopts +28001E670:t2:A6:socket,A6:rcvbuf +28001E688:t2:A4:IPV6,A3:mtu +28001E6A0:t2:A4:IPV6,AC:unicast_hops +28001E6B8:t2:A4:ipv6,A8:hoplimit +28001E6D0:t2:A2:IP,AF:recvorigdstaddr +28001E6E8:t2:A2:ip,A7:recvtos +28001E700:lH28001EDA0|A9:undefined +28001E710:lH28001EDB8|A9:undefined +28001E720:t2:A2:ip,AD:multicast_all +28001E738:t2:A4:ipv6,AA:recvtclass +28001E750:t2:A2:ip,A8:freebind +28001E768:t2:A2:ip,A3:ttl +28001E780:t2:A2:IP,A7:options +28001E798:t2:A4:IPV6,A5:rthdr +28001E7B0:t2:A4:ipv6,A8:addrform +28001E7C8:t2:A6:socket,A8:rcvtimeo +28001E7E0:t2:A2:ip,AF:recvorigdstaddr +28001E7F8:t2:A3:tcp,A7:nodelay +28001E810:t2:A3:TCP,A6:nopush +28001E828:t2:A6:socket,A9:busy_poll +28001E840:t2:A2:IP,AA:pktoptions +28001E858:t2:A4:IPV6,AF:esp_trans_level +28001E870:t2:A6:socket,A9:reuseaddr +28001E888:t2:A2:IP,AE:add_membership +28001E8A0:t2:A2:ip,AB:recvdstaddr +28001E8B8:t2:A2:ip,A8:dontfrag +28001E8D0:t2:A2:IP,A3:tos +28001E8E8:t2:A4:ipv6,AF:esp_trans_level +28001E900:lH28001EDD0|H28001E250 +28001E910:lH28001EDE8|A9:undefined +28001E920:t2:A2:IP,AB:recvdstaddr +28001E938:t2:A2:IP,A7:recverr +28001E950:t2:A2:IP,A8:nodefrag +28001E968:t2:A3:UDP,A4:cork +28001E980:t2:A4:IPV6,A7:hopopts +28001E998:t2:A4:IPV6,AB:recvpktinfo +28001E9B0:t2:A4:IPV6,AE:multicast_loop +28001E9C8:t2:A2:IP,AE:multicast_loop +28001E9E0:t2:A3:tcp,A6:maxseg +28001E9F8:t2:A2:IP,A16:drop_source_membership +28001EA10:t2:A4:ipv6,AC:unicast_hops +28001EA28:t2:A2:IP,A7:recvttl +28001EA40:t2:A4:IPV6,A8:addrform +28001EA58:t2:A4:IPV6,A7:dstopts +28001EA70:t2:A2:IP,A7:hdrincl +28001EA88:t2:A3:tcp,A6:syncnt +28001EAA0:lH28001EE00|H28001DFE0 +28001EAB0:lH28001EE18|H28001DDD0 +28001EAC0:t2:A4:ipv6,A8:flowinfo +28001EAD8:t2:A2:ip,AC:mtu_discover +28001EAF0:t2:A6:socket,A8:peek_off +28001EB08:t2:A2:ip,AE:multicast_loop +28001EB20:t2:A2:ip,AC:multicast_if +28001EB38:t2:A4:ipv6,AC:multicast_if +28001EB50:t2:A4:ipv6,AA:auth_level +28001EB68:t2:A4:IPV6,A11:esp_network_level +28001EB80:lH28001EE30|H28001EB90 +28001EB90:t2:A6:socket,I4097 +28001EBA8:lH28001EE48|H28001D5B0 +28001EBB8:lH28001EE60|A9:undefined +28001EBC8:lH28001EE78|A9:undefined +28001EBD8:t2:A6:socket,A8:peercred +28001EBF0:t2:A3:TCP,AC:user_timeout +28001EC08:t2:A4:ipv6,A7:dstopts +28001EC20:t2:A2:IP,A8:recvopts +28001EC38:t2:A4:IPV6,A7:recverr +28001EC50:t2:A4:IPV6,AA:recvtclass +28001EC68:t2:A2:IP,AC:mtu_discover +28001EC80:t2:A3:tcp,A6:nopush +28001EC98:t2:A2:ip,A7:recverr +28001ECB0:t2:A3:TCP,A4:info +28001ECC8:t2:A6:socket,A6:linger +28001ECE0:t2:A2:ip,AC:block_source +28001ECF8:t2:A2:IP,AF:drop_membership +28001ED10:t2:A2:IP,AB:transparent +28001ED28:t2:A4:IPV6,AB:leave_group +28001ED40:t2:A4:ipv6,AE:multicast_loop +28001ED58:t2:A3:tcp,AA:congestion +28001ED70:t2:A4:IPV6,AA:pktoptions +28001ED88:t2:A4:ipv6,A11:esp_network_level +28001EDA0:t2:A4:ipv6,AC:router_alert +28001EDB8:t2:A3:TCP,A6:md5sig +28001EDD0:t2:A2:ip,A8:recvopts +28001EDE8:t2:A4:ipv6,A3:mtu +28001EE00:t2:A4:IPV6,AC:multicast_if +28001EE18:t2:A2:ip,A16:drop_source_membership +28001EE30:t2:A6:socket,A6:sndbuf +28001EE48:t2:A2:ip,A6:recvif +28001EE60:t2:A6:socket,A5:error +28001EE78:t2:A6:socket,AC:acceptfilter +280093128:t2:H280093140,A9:undefined +280093140:t2:AD:logger_config,H280093158 +280093158:t2:A10:$handler_config$,A6:simple +28007FBD8:t2:AC:global_group,H28007FBF0 +28007FBF0:t9:A5:gconf,A9:undefined,AD:nonode@nohost,N,A6:normal,N,A3:all,N,A7:no_conf +280017DC0:t2:H280017DD8,H280017DF0 +280017DD8:t2:AB:prim_socket,A9:protocols +280017DF0:Mh1A6:10:H280017E80,H280017EF0,H280017F68,H280017FD0,H280018040,H2800180A8,H280018120,H280018188,H2800181D8,H280018248,H2800182C0,H280018330,H2800183A0,H280018418,H280018480,H2800184F0 +280017E80:MnD:H280018568,H280018588,H2800185A0,H2800185D0,H2800185F0,H280018608,H280018620,H280018638,H280018648,H280018658,H280018668,H280018680,H2800186A0 +280017EF0:MnE:H2800186B8,H2800186D0,H2800186E8,H280018710,H280018720,H280018750,H280018760,H280018778,H280018798,H2800187A8,H2800187B8,H2800187D8,H2800187F0,H280018800 +280017F68:MnC:H280018810,H280018820,H280018840,H280018868,H280018880,H280018890,H2800188A8,H2800188C0,H2800188E0,H2800188F8,H280018920,H280018930 +280017FD0:MnD:H280018948,H280018958,H280018978,H280018998,H2800189B0,H2800189D0,H2800189E8,H2800189F8,H280018A10,H280018A30,H280018A40,H280018A50,H280018A70 +280018040:MnC:H280018A88,H280018AA0,H280018AB8,H280018AD8,H280018AE8,H280018AF8,H280018B18,H280018B30,H280018B40,H280018B70,H280018BA0,H280018BB8 +2800180A8:MnE:H280018BE0,H280018BF8,H280018C20,H280018C48,H280018C70,H280018C80,H280018C90,H280018CA8,H280018CB8,H280018CD0,H280018CE8,H280018D10,H280018D30,H280018D48 +280018120:MnC:H280018D68,H280018D88,H280018DA8,H280018DB8,H280018DD8,H280018DE8,H280018DF8,H280018E08,H280018E20,H280018E38,H280018E68,H280018E80 +280018188:Mn9:H280018EB0,H280018EC0,H280018ED8,H280018EF0,H280018F00,H280018F10,H280018F30,H280018F48,H280018F60 +2800181D8:MnD:H280018F88,H280018F98,H280018FA8,H280018FC0,H280018FE0,H280019008,H280019038,H280019048,H280019060,H280019078,H280019088,H280019098,H2800190A8 +280018248:MnE:H2800190B8,H2800190D8,H2800190E8,H2800190F8,H280019108,H280019128,H280019138,H280019150,H280019160,H280019178,H280019198,H2800191A8,H2800191B8,H2800191D0 +2800182C0:MnD:H2800191E0,H2800191F8,H280019220,H280019250,H280019268,H280019290,H2800192A8,H2800192C8,H2800192D8,H2800192E8,H2800192F8,H280019310,H280019328 +280018330:MnD:H280019338,H280019350,H280019380,H280019390,H2800193C0,H2800193E0,H2800193F8,H280019418,H280019428,H280019448,H280019468,H280019480,H280019498 +2800183A0:MnE:H2800194C8,H2800194E0,H280019500,H280019518,H280019530,H280019548,H280019558,H280019578,H2800195A8,H2800195E8,H280019600,H280019618,H280019630,H280019650 +280018418:MnC:H280019660,H280019678,H280019688,H2800196B8,H2800196D0,H2800196E0,H2800196F8,H280019710,H280019730,H280019750,H280019760,H280019770 +280018480:MnD:H280019780,H280019798,H2800197A8,H2800197C8,H2800197E8,H280019818,H280019830,H280019860,H280019870,H280019880,H2800198B0,H2800198E0,H280019910 +2800184F0:MnE:H280019930,H280019950,H280019968,H280019980,H280019990,H2800199A8,H2800199C0,H2800199D0,H2800199F8,H280019A10,H280019A30,H280019A50,H280019A60,H280019A80 +280018568:Mn3:H280019A90,H280019AA0,H280019AD0 +280018588:Mn2:H280019AE0,H280019AF0 +2800185A0:lI50|H2800185B0 +2800185B0:lA3:esp|H2800185C0 +2800185C0:lA3:ESP|N +2800185D0:Mn3:H280019B00,H280019B30,H280019B40 +2800185F0:Mn2:H280019B50,H280019B80 +280018608:Mn2:H280019BB0,H280019BC0 +280018620:Mn2:H280019BD0,H280019BE0 +280018638:lA3:mux|I18 +280018648:lA3:pvp|I75 +280018658:lA3:rvd|I66 +280018668:Mn2:H280019BF0,H280019C20 +280018680:Mn3:H280019C30,H280019C40,H280019C50 +2800186A0:Mn2:H280019C80,H280019C90 +2800186B8:Mn2:H280019CA0,H280019CB0 +2800186D0:Mn2:H280019CC0,H280019CF0 +2800186E8:Mn4:H280019D00,H280019D10,H280019D20,H280019D30 +280018710:lA5:manet|I138 +280018720:lI64|H280018730 +280018730:lA9:sat-expak|H280018740 +280018740:lA9:SAT-EXPAK|N +280018750:lA6:MOBILE|I55 +280018760:Mn2:H280019D60,H280019D70 +280018778:Mn3:H280019DA0,H280019DB0,H280019DC0 +280018798:lA4:IGMP|I2 +2800187A8:lAB:SECURE-VMTP|I82 +2800187B8:Mn3:H280019DD0,H280019E00,H280019E10 +2800187D8:Mn2:H280019E40,H280019E50 +2800187F0:lA2:ah|I51 +280018800:lAA:br-sat-mon|I76 +280018810:lA4:IDPR|I35 +280018820:Mn3:H280019E60,H280019E70,H280019EA0 +280018840:Mn4:H280019EB0,H280019EC0,H280019EF0,H280019F00 +280018868:Mn2:H280019F30,H280019F40 +280018880:Mn1:H280019F50 +280018890:Mn2:H280019F68,H280019F78 +2800188A8:Mn2:H280019FA8,H280019FB8 +2800188C0:Mn3:H280019FE8,H28001A018,H28001A028 +2800188E0:Mn2:H28001A058,H28001A088 +2800188F8:Mn4:H28001A098,H28001A0A8,H28001A0B8,H28001A0C8 +280018920:lA3:hmp|I20 +280018930:Mn2:H28001A0E0,H28001A110 +280018948:Mn1:H28001A140 +280018958:Mn3:H28001A150,H28001A180,H28001A190 +280018978:Mn3:H28001A1C0,H28001A1D0,H28001A200 +280018998:Mn2:H28001A230,H28001A240 +2800189B0:Mn3:H28001A250,H28001A280,H28001A290 +2800189D0:Mn2:H28001A2A0,H28001A2B8 +2800189E8:lA3:TCF|I87 +2800189F8:Mn2:H28001A2C8,H28001A2F8 +280018A10:Mn3:H28001A328,H28001A338,H28001A348 +280018A30:lA3:xtp|I36 +280018A40:lA5:ENCAP|I98 +280018A50:Mn3:H28001A360,H28001A370,H28001A388 +280018A70:Mn2:H28001A3B8,H28001A3C8 +280018A88:Mn2:H28001A3D8,H28001A408 +280018AA0:Mn2:H28001A438,H28001A468 +280018AB8:Mn3:H28001A498,H28001A4A8,H28001A4D8 +280018AD8:lA3:BNA|I49 +280018AE8:lA3:TCP|I6 +280018AF8:Mn3:H28001A4E8,H28001A518,H28001A528 +280018B18:Mn2:H28001A538,H28001A548 +280018B30:lA7:MFE-NSP|I31 +280018B40:lI106|H280018B50 +280018B50:lA3:qnx|H280018B60 +280018B60:lA3:QNX|N +280018B70:lI9|H280018B80 +280018B80:lA3:igp|H280018B90 +280018B90:lA3:IGP|N +280018BA0:Mn2:H28001A558,H28001A588 +280018BB8:Mn4:H28001A598,H28001A5A8,H28001A5D8,H28001A5E8 +280018BE0:Mn2:H28001A5F8,H28001A628 +280018BF8:Mn4:H28001A638,H28001A648,H28001A658,H28001A668 +280018C20:Mn4:H28001A678,H28001A688,H28001A6B8,H28001A6C8 +280018C48:Mn4:H28001A6D8,H28001A6E8,H28001A6F8,H28001A728 +280018C70:lA4:vmtp|I81 +280018C80:lA9:idpr-cmtp|I38 +280018C90:Mn2:H28001A738,H28001A768 +280018CA8:lA7:iso-tp4|I29 +280018CB8:Mn2:H28001A798,H28001A7A8 +280018CD0:Mn2:H28001A7B8,H28001A7C8 +280018CE8:Mn4:H28001A7F8,H28001A808,H28001A820,H28001A830 +280018D10:Mn3:H28001A860,H28001A870,H28001A8A0 +280018D30:Mn2:H28001A8D0,H28001A8E0 +280018D48:Mn3:H28001A910,H28001A920,H28001A930 +280018D68:Mn3:H28001A940,H28001A958,H28001A970 +280018D88:Mn3:H28001A980,H28001A990,H28001A9A0 +280018DA8:lA3:UTI|I120 +280018DB8:Mn3:H28001A9B8,H28001A9C8,H28001A9F8 +280018DD8:lAB:compaq-peer|I110 +280018DE8:lA9:IPV6-ICMP|I58 +280018DF8:lA5:chaos|I16 +280018E08:Mn2:H28001AA08,H28001AA38 +280018E20:Mn2:H28001AA48,H28001AA78 +280018E38:lI142|H280018E48 +280018E48:lA4:rohc|H280018E58 +280018E58:lA4:ROHC|N +280018E68:Mn2:H28001AAA8,H28001AAD8 +280018E80:lI56|H280018E90 +280018E90:lA4:tlsp|H280018EA0 +280018EA0:lA4:TLSP|N +280018EB0:lA3:tcp|I6 +280018EC0:Mn2:H28001AB08,H28001AB18 +280018ED8:Mn2:H28001AB28,H28001AB38 +280018EF0:lAB:Compaq-Peer|I110 +280018F00:lAF:Mobility-Header|I135 +280018F10:Mn3:H28001AB48,H28001AB58,H28001AB68 +280018F30:Mn2:H28001AB78,H28001AB88 +280018F48:Mn2:H28001AB98,H28001ABA8 +280018F60:Mn4:H28001ABB8,H28001ABE8,H28001AC00,H28001AC30 +280018F88:Mn1:H28001AC40 +280018F98:lA4:IRTP|I28 +280018FA8:Mn2:H28001AC58,H28001AC68 +280018FC0:Mn3:H28001AC78,H28001AC88,H28001AC98 +280018FE0:Mn4:H28001ACA8,H28001ACD8,H28001ACE8,H28001ACF8 +280019008:lI45|H280019018 +280019018:lA4:idrp|H280019028 +280019028:lA4:IDRP|N +280019038:lA4:ROHC|I142 +280019048:Mn2:H28001AD08,H28001AD18 +280019060:Mn2:H28001AD48,H28001AD58 +280019078:Mn1:H28001AD70 +280019088:lA3:RVD|I66 +280019098:lA7:mfe-nsp|I31 +2800190A8:lA4:PNNI|I102 +2800190B8:Mn3:H28001AD88,H28001AD98,H28001ADA8 +2800190D8:lA4:tlsp|I56 +2800190E8:lA3:CBT|I7 +2800190F8:Mn1:H28001ADB8 +280019108:Mn3:H28001ADD0,H28001ADE0,H28001AE10 +280019128:lA3:DGP|I86 +280019138:Mn2:H28001AE20,H28001AE30 +280019150:lA6:ipcomp|I108 +280019160:Mn2:H28001AE60,H28001AE70 +280019178:Mn3:H28001AE88,H28001AE98,H28001AEC8 +280019198:lA4:sdrp|I42 +2800191A8:Mn1:H28001AEF8 +2800191B8:Mn2:H28001AF10,H28001AF20 +2800191D0:lA3:mtp|I92 +2800191E0:Mn2:H28001AF50,H28001AF80 +2800191F8:Mn4:H28001AF90,H28001AFC0,H28001AFD8,H28001B008 +280019220:lI2|H280019230 +280019230:lA4:igmp|H280019240 +280019240:lA4:IGMP|N +280019250:Mn2:H28001B018,H28001B030 +280019268:Mn4:H28001B048,H28001B078,H28001B0A8,H28001B0B8 +280019290:Mn2:H28001B0E8,H28001B0F8 +2800192A8:Mn3:H28001B108,H28001B118,H28001B128 +2800192C8:lA6:I-NLSP|I52 +2800192D8:lA4:VISA|I70 +2800192E8:lA4:larp|I91 +2800192F8:Mn2:H28001B140,H28001B170 +280019310:Mn2:H28001B1A0,H28001B1B0 +280019328:lA4:IPV6|I41 +280019338:Mn2:H28001B1E0,H28001B210 +280019350:lI32|H280019360 +280019360:lA9:merit-inp|H280019370 +280019370:lA9:MERIT-INP|N +280019380:lA4:idrp|I45 +280019390:Mn5:H28001B220,H28001B230,H28001B240,H28001B250,H28001B260 +2800193C0:Mn3:H28001B270,H28001B280,H28001B2B0 +2800193E0:Mn2:H28001B2F0,H28001B320 +2800193F8:Mn3:H28001B330,H28001B340,H28001B370 +280019418:lA7:bbn-rcc|I10 +280019428:Mn3:H28001B380,H28001B390,H28001B3C0 +280019448:Mn3:H28001B3F0,H28001B400,H28001B430 +280019468:Mn2:H28001B440,H28001B450 +280019480:Mn2:H28001B460,H28001B490 +280019498:lI30|H2800194A8 +2800194A8:lA6:netblt|H2800194B8 +2800194B8:lA6:NETBLT|N +2800194C8:Mn2:H28001B4A0,H28001B4D0 +2800194E0:Mn3:H28001B500,H28001B510,H28001B540 +280019500:Mn2:H28001B550,H28001B560 +280019518:Mn2:H28001B570,H28001B580 +280019530:Mn2:H28001B5B0,H28001B5C0 +280019548:lA9:MERIT-INP|I32 +280019558:Mn3:H28001B5D0,H28001B5E0,H28001B610 +280019578:lI6|H280019588 +280019588:lA3:tcp|H280019598 +280019598:lA3:TCP|N +2800195A8:lI112|H2800195B8 +2800195B8:lA4:carp|H2800195C8 +2800195C8:lA4:vrrp|H2800195D8 +2800195D8:lA4:CARP|N +2800195E8:Mn2:H28001B620,H28001B650 +280019600:Mn2:H28001B680,H28001B6B0 +280019618:Mn2:H28001B6C0,H28001B6D0 +280019630:Mn3:H28001B6E0,H28001B710,H28001B720 +280019650:lA5:EMCON|I14 +280019660:Mn2:H28001B750,H28001B760 +280019678:lA6:leaf-1|I25 +280019688:lI116|H280019698 +280019698:lA3:ddx|H2800196A8 +2800196A8:lA3:DDX|N +2800196B8:Mn2:H28001B770,H28001B7A0 +2800196D0:lA3:QNX|I106 +2800196E0:Mn2:H28001B7B0,H28001B7E0 +2800196F8:Mn2:H28001B7F0,H28001B820 +280019710:Mn3:H28001B830,H28001B840,H28001B850 +280019730:Mn3:H28001B860,H28001B890,H28001B8C0 +280019750:lA7:OSPFIGP|I89 +280019760:lA4:skip|I57 +280019770:Mn1:H28001B8D0 +280019780:Mn2:H28001B8E8,H28001B8F8 +280019798:lA3:smp|I121 +2800197A8:Mn3:H28001B908,H28001B938,H28001B968 +2800197C8:Mn3:H28001B978,H28001B990,H28001B9A8 +2800197E8:lI52|H2800197F8 +2800197F8:lA6:i-nlsp|H280019808 +280019808:lA6:I-NLSP|N +280019818:Mn2:H28001B9B8,H28001B9E8 +280019830:lI49|H280019840 +280019840:lA3:bna|H280019850 +280019850:lA3:BNA|N +280019860:lA3:ddx|I116 +280019870:lAA:BR-SAT-MON|I76 +280019880:lI38|H280019890 +280019890:lA9:idpr-cmtp|H2800198A0 +2800198A0:lA9:IDPR-CMTP|N +2800198B0:lI134|H2800198C0 +2800198C0:lAF:rsvp-e2e-ignore|H2800198D0 +2800198D0:lAF:RSVP-E2E-IGNORE|N +2800198E0:lI118|H2800198F0 +2800198F0:lA3:stp|H280019900 +280019900:lA3:STP|N +280019910:Mn3:H28001B9F8,H28001BA08,H28001BA18 +280019930:Mn3:H28001BA48,H28001BA58,H28001BA88 +280019950:Mn2:H28001BAB8,H28001BAC8 +280019968:Mn2:H28001BAF8,H28001BB08 +280019980:lA5:VINES|I83 +280019990:Mn2:H28001BB18,H28001BB48 +2800199A8:Mn2:H28001BB58,H28001BB88 +2800199C0:lA5:swipe|I53 +2800199D0:Mn4:H28001BBB8,H28001BBE8,H28001BBF8,H28001BC28 +2800199F8:Mn2:H28001BC58,H28001BC68 +280019A10:Mn3:H28001BC78,H28001BC88,H28001BC98 +280019A30:Mn3:H28001BCA8,H28001BCB8,H28001BCC8 +280019A50:lA5:ax.25|I93 +280019A60:Mn3:H28001BCD8,H28001BCE8,H28001BCF8 +280019A80:lAA:ipv6-nonxt|I59 +280019A90:lA3:pup|I12 +280019AA0:lI65|H280019AB0 +280019AB0:lA9:kryptolan|H280019AC0 +280019AC0:lA9:KRYPTOLAN|N +280019AD0:lA5:crudp|I127 +280019AE0:lA3:MUX|I18 +280019AF0:lA4:GMTP|I100 +280019B00:lI36|H280019B10 +280019B10:lA3:xtp|H280019B20 +280019B20:lA3:XTP|N +280019B30:lA4:crtp|I126 +280019B40:lA3:gre|I47 +280019B50:lI137|H280019B60 +280019B60:lAA:mpls-in-ip|H280019B70 +280019B70:lAA:MPLS-IN-IP|N +280019B80:lI4|H280019B90 +280019B90:lA7:ipencap|H280019BA0 +280019BA0:lA8:IP-ENCAP|N +280019BB0:lA7:xns-idp|I22 +280019BC0:lA3:ddp|I37 +280019BD0:lA9:IPV6-OPTS|I60 +280019BE0:lA5:AX.25|I93 +280019BF0:lI126|H280019C00 +280019C00:lA4:crtp|H280019C10 +280019C10:lA4:CRTP|N +280019C20:lA4:pnni|I102 +280019C30:lA7:ipencap|I4 +280019C40:lA4:gmtp|I100 +280019C50:lI136|H280019C60 +280019C60:lA7:udplite|H280019C70 +280019C70:lA7:UDPLite|N +280019C80:lAA:nsfnet-igp|I85 +280019C90:lA3:egp|I8 +280019CA0:lA3:SPS|I130 +280019CB0:lA5:CRUDP|I127 +280019CC0:lI25|H280019CD0 +280019CD0:lA6:leaf-1|H280019CE0 +280019CE0:lA6:LEAF-1|N +280019CF0:lA3:udp|I17 +280019D00:lA2:IL|I40 +280019D10:lA4:RSVP|I46 +280019D20:lA4:MICP|I95 +280019D30:lI39|H280019D40 +280019D40:lA4:tp++|H280019D50 +280019D50:lA4:TP++|N +280019D60:lA3:PGM|I113 +280019D70:lI109|H280019D80 +280019D80:lA3:snp|H280019D90 +280019D90:lA3:SNP|N +280019DA0:lA4:cftp|I62 +280019DB0:lA7:trunk-1|I23 +280019DC0:lA3:stp|I118 +280019DD0:lI95|H280019DE0 +280019DE0:lA4:micp|H280019DF0 +280019DF0:lA4:MICP|N +280019E00:lA4:irtp|I28 +280019E10:lI101|H280019E20 +280019E20:lA4:ifmp|H280019E30 +280019E30:lA4:IFMP|N +280019E40:lA3:uti|I120 +280019E50:lA4:SCTP|I132 +280019E60:lA4:fire|I125 +280019E70:lI130|H280019E80 +280019E80:lA3:sps|H280019E90 +280019E90:lA3:SPS|N +280019EA0:lA4:IPLT|I129 +280019EB0:lA9:ipv6-frag|I44 +280019EC0:lI131|H280019ED0 +280019ED0:lA4:pipe|H280019EE0 +280019EE0:lA4:PIPE|N +280019EF0:lA6:LEAF-1|I25 +280019F00:lI62|H280019F10 +280019F10:lA4:cftp|H280019F20 +280019F20:lA4:CFTP|N +280019F30:lA4:rsvp|I46 +280019F40:lA4:IDRP|I45 +280019F50:Mn2:H28001BD08,H28001BD38 +280019F68:lA2:ip|I0 +280019F78:lI141|H280019F88 +280019F88:lA4:wesp|H280019F98 +280019F98:lA4:WESP|N +280019FA8:lA4:IPIP|I94 +280019FB8:lI132|H280019FC8 +280019FC8:lA4:sctp|H280019FD8 +280019FD8:lA4:SCTP|N +280019FE8:lI43|H280019FF8 +280019FF8:lAA:ipv6-route|H28001A008 +28001A008:lAA:IPV6-ROUTE|N +28001A018:lA6:mobile|I55 +28001A028:lI105|H28001A038 +28001A038:lA4:scps|H28001A048 +28001A048:lA4:SCPS|N +28001A058:lI59|H28001A068 +28001A068:lAA:ipv6-nonxt|H28001A078 +28001A078:lAA:IPV6-NONXT|N +28001A088:lA3:A/N|I107 +28001A098:lA3:igp|I9 +28001A0A8:lA4:CFTP|I62 +28001A0B8:lA7:trunk-2|I24 +28001A0C8:Mn2:H28001BD48,H28001BD78 +28001A0E0:lI87|H28001A0F0 +28001A0F0:lA3:tcf|H28001A100 +28001A100:lA3:TCF|N +28001A110:lI51|H28001A120 +28001A120:lA2:ah|H28001A130 +28001A130:lA2:AH|N +28001A140:Mn1:H28001BDA8 +28001A150:lI110|H28001A160 +28001A160:lAB:compaq-peer|H28001A170 +28001A170:lAB:Compaq-Peer|N +28001A180:lA4:CARP|I112 +28001A190:lI1|H28001A1A0 +28001A1A0:lA4:icmp|H28001A1B0 +28001A1B0:lA4:ICMP|N +28001A1C0:lA3:HMP|I20 +28001A1D0:lI107|H28001A1E0 +28001A1E0:lA3:a/n|H28001A1F0 +28001A1F0:lA3:A/N|N +28001A200:lI128|H28001A210 +28001A210:lA8:sscopmce|H28001A220 +28001A220:lA8:SSCOPMCE|N +28001A230:lA6:scc-sp|I96 +28001A240:lA8:SSCOPMCE|I128 +28001A250:lI70|H28001A260 +28001A260:lA4:visa|H28001A270 +28001A270:lA4:VISA|N +28001A280:lA4:icmp|I1 +28001A290:lA6:iso-ip|I80 +28001A2A0:Mn2:H28001BDC0,H28001BDF0 +28001A2B8:lA3:XTP|I36 +28001A2C8:lI46|H28001A2D8 +28001A2D8:lA4:rsvp|H28001A2E8 +28001A2E8:lA4:RSVP|N +28001A2F8:lI77|H28001A308 +28001A308:lA6:sun-nd|H28001A318 +28001A318:lA6:SUN-ND|N +28001A328:lA3:snp|I109 +28001A338:lA4:NARP|I54 +28001A348:Mn2:H28001BE00,H28001BE30 +28001A360:lA4:iplt|I129 +28001A370:Mn2:H28001BE60,H28001BE70 +28001A388:lI10|H28001A398 +28001A398:lA7:bbn-rcc|H28001A3A8 +28001A3A8:lAB:BBN-RCC-MON|N +28001A3B8:lA9:kryptolan|I65 +28001A3C8:lA6:leaf-2|I26 +28001A3D8:lI124|H28001A3E8 +28001A3E8:lA4:isis|H28001A3F8 +28001A3F8:lA4:ISIS|N +28001A408:lI48|H28001A418 +28001A418:lA3:dsr|H28001A428 +28001A428:lA3:DSR|N +28001A438:lI103|H28001A448 +28001A448:lA3:pim|H28001A458 +28001A458:lA3:PIM|N +28001A468:lI7|H28001A478 +28001A478:lA3:cbt|H28001A488 +28001A488:lA3:CBT|N +28001A498:lA4:VMTP|I81 +28001A4A8:lI138|H28001A4B8 +28001A4B8:lA5:manet|H28001A4C8 +28001A4C8:lA5:MANET|N +28001A4D8:lA4:WESP|I141 +28001A4E8:lI71|H28001A4F8 +28001A4F8:lA4:ipcv|H28001A508 +28001A508:lA4:IPCV|N +28001A518:lA3:ggp|I3 +28001A528:lA4:tp++|I39 +28001A538:lA3:rdp|I27 +28001A548:lA3:IGP|I9 +28001A558:lI258|H28001A568 +28001A568:lA6:divert|H28001A578 +28001A578:lA6:DIVERT|N +28001A588:lA3:PTP|I123 +28001A598:lA6:wb-mon|I78 +28001A5A8:lI11|H28001A5B8 +28001A5B8:lA3:nvp|H28001A5C8 +28001A5C8:lA6:NVP-II|N +28001A5D8:lA5:argus|I13 +28001A5E8:lA4:xnet|I15 +28001A5F8:lI12|H28001A608 +28001A608:lA3:pup|H28001A618 +28001A618:lA3:PUP|N +28001A628:lA4:ifmp|I101 +28001A638:lA3:3pc|I34 +28001A648:lA6:DIVERT|I258 +28001A658:lA3:PUP|I12 +28001A668:lAF:mobility-header|I135 +28001A678:lA4:idpr|I35 +28001A688:lI28|H28001A698 +28001A698:lA4:irtp|H28001A6A8 +28001A6A8:lA4:IRTP|N +28001A6B8:lAB:secure-vmtp|I82 +28001A6C8:lA3:prm|I21 +28001A6D8:lA3:EGP|I8 +28001A6E8:lA3:cbt|I7 +28001A6F8:lI47|H28001A708 +28001A708:lA3:gre|H28001A718 +28001A718:lA3:GRE|N +28001A728:lAA:sprite-rpc|I90 +28001A738:lI89|H28001A748 +28001A748:lA4:ospf|H28001A758 +28001A758:lA7:OSPFIGP|N +28001A768:lI24|H28001A778 +28001A778:lA7:trunk-2|H28001A788 +28001A788:lA7:TRUNK-2|N +28001A798:lA2:IP|I0 +28001A7A8:lA4:ICMP|I1 +28001A7B8:lA5:MANET|I138 +28001A7C8:lI13|H28001A7D8 +28001A7D8:lA5:argus|H28001A7E8 +28001A7E8:lA5:ARGUS|N +28001A7F8:lA6:pfsync|I240 +28001A808:Mn2:H28001BE80,H28001BE90 +28001A820:lA6:SUN-ND|I77 +28001A830:lI94|H28001A840 +28001A840:lA4:ipip|H28001A850 +28001A850:lA4:IPIP|N +28001A860:lA3:tcf|I87 +28001A870:lI3|H28001A880 +28001A880:lA3:ggp|H28001A890 +28001A890:lA3:GGP|N +28001A8A0:lI18|H28001A8B0 +28001A8B0:lA3:mux|H28001A8C0 +28001A8C0:lA3:MUX|N +28001A8D0:lA4:l2tp|I115 +28001A8E0:lI113|H28001A8F0 +28001A8F0:lA3:pgm|H28001A900 +28001A900:lA3:PGM|N +28001A910:lA3:SMP|I121 +28001A920:lA8:wb-expak|I79 +28001A930:lA7:SAT-MON|I69 +28001A940:Mn2:H28001BEA0,H28001BEB0 +28001A958:Mn2:H28001BEC0,H28001BED0 +28001A970:lA9:KRYPTOLAN|I65 +28001A980:lA7:udplite|I136 +28001A990:lA3:DDP|I37 +28001A9A0:Mn2:H28001BEE0,H28001BEF0 +28001A9B8:lA3:TTP|I84 +28001A9C8:lI29|H28001A9D8 +28001A9D8:lA7:iso-tp4|H28001A9E8 +28001A9E8:lA7:ISO-TP4|N +28001A9F8:lA2:AH|I51 +28001AA08:lI72|H28001AA18 +28001AA18:lA4:cpnx|H28001AA28 +28001AA28:lA4:CPNX|N +28001AA38:lA4:LARP|I91 +28001AA48:lI53|H28001AA58 +28001AA58:lA5:swipe|H28001AA68 +28001AA68:lA5:SWIPE|N +28001AA78:lI135|H28001AA88 +28001AA88:lAF:mobility-header|H28001AA98 +28001AA98:lAF:Mobility-Header|N +28001AAA8:lI69|H28001AAB8 +28001AAB8:lA7:sat-mon|H28001AAC8 +28001AAC8:lA7:SAT-MON|N +28001AAD8:lI120|H28001AAE8 +28001AAE8:lA3:uti|H28001AAF8 +28001AAF8:lA3:UTI|N +28001AB08:lAA:IPV6-ROUTE|I43 +28001AB18:lA4:carp|I112 +28001AB28:lA7:UDPLite|I136 +28001AB38:lA4:ARIS|I104 +28001AB48:lAA:MPLS-IN-IP|I137 +28001AB58:lA7:XNS-IDP|I22 +28001AB68:lA3:sps|I130 +28001AB78:lA7:TRUNK-1|I23 +28001AB88:lA4:IATP|I117 +28001AB98:lA4:igmp|I2 +28001ABA8:lA3:ptp|I123 +28001ABB8:lI42|H28001ABC8 +28001ABC8:lA4:sdrp|H28001ABD8 +28001ABD8:lA4:SDRP|N +28001ABE8:Mn2:H28001BF00,H28001BF10 +28001AC00:lI76|H28001AC10 +28001AC10:lAA:br-sat-mon|H28001AC20 +28001AC20:lAA:BR-SAT-MON|N +28001AC30:lAA:IPV6-NONXT|I59 +28001AC40:Mn2:H28001BF20,H28001BF30 +28001AC58:lA4:L2TP|I115 +28001AC68:lA3:WSN|I74 +28001AC78:lA3:GRE|I47 +28001AC88:lA4:vrrp|I112 +28001AC98:lA6:divert|I258 +28001ACA8:lI98|H28001ACB8 +28001ACB8:lA5:encap|H28001ACC8 +28001ACC8:lA5:ENCAP|N +28001ACD8:lA6:i-nlsp|I52 +28001ACE8:lA4:sctp|I132 +28001ACF8:lA5:encap|I98 +28001AD08:lA4:visa|I70 +28001AD18:lI26|H28001AD28 +28001AD28:lA6:leaf-2|H28001AD38 +28001AD38:lA6:LEAF-2|N +28001AD48:lA4:pipe|I131 +28001AD58:Mn2:H28001BF60,H28001BF70 +28001AD70:Mn2:H28001BF80,H28001BF90 +28001AD88:lA2:SM|I122 +28001AD98:lA5:eigrp|I88 +28001ADA8:lAF:rsvp-e2e-ignore|I134 +28001ADB8:Mn2:H28001BFA0,H28001BFB0 +28001ADD0:lA3:GGP|I3 +28001ADE0:lI108|H28001ADF0 +28001ADF0:lA6:ipcomp|H28001AE00 +28001AE00:lA6:IPComp|N +28001AE10:lA4:micp|I95 +28001AE20:lA4:FIRE|I125 +28001AE30:lI133|H28001AE40 +28001AE40:lA2:fc|H28001AE50 +28001AE50:lA2:FC|N +28001AE60:lA3:ST2|I5 +28001AE70:Mn2:H28001BFC0,H28001BFF0 +28001AE88:lA6:NVP-II|I11 +28001AE98:lI44|H28001AEA8 +28001AEA8:lA9:ipv6-frag|H28001AEB8 +28001AEB8:lA9:IPV6-FRAG|N +28001AEC8:lI19|H28001AED8 +28001AED8:lA3:dcn|H28001AEE8 +28001AEE8:lA8:DCN-MEAS|N +28001AEF8:Mn2:H28001C000,H28001C010 +28001AF10:lA3:3PC|I34 +28001AF20:lI79|H28001AF30 +28001AF30:lA8:wb-expak|H28001AF40 +28001AF40:lA8:WB-EXPAK|N +28001AF50:lI0|H28001AF60 +28001AF60:lA2:ip|H28001AF70 +28001AF70:lA2:IP|N +28001AF80:lA9:sat-expak|I64 +28001AF90:lI100|H28001AFA0 +28001AFA0:lA4:gmtp|H28001AFB0 +28001AFB0:lA4:GMTP|N +28001AFC0:Mn2:H28001C040,H28001C070 +28001AFD8:lI139|H28001AFE8 +28001AFE8:lA3:hip|H28001AFF8 +28001AFF8:lA3:HIP|N +28001B008:lA4:rohc|I142 +28001B018:Mn2:H28001C080,H28001C090 +28001B030:Mn2:H28001C0A0,H28001C0B0 +28001B048:lI104|H28001B058 +28001B058:lA4:aris|H28001B068 +28001B068:lA4:ARIS|N +28001B078:lI60|H28001B088 +28001B088:lA9:ipv6-opts|H28001B098 +28001B098:lA9:IPV6-OPTS|N +28001B0A8:lA3:pgm|I113 +28001B0B8:lI33|H28001B0C8 +28001B0C8:lA4:dccp|H28001B0D8 +28001B0D8:lA4:DCCP|N +28001B0E8:lA5:emcon|I14 +28001B0F8:lA3:MTP|I92 +28001B108:lA4:ipv6|I41 +28001B118:lA8:WB-EXPAK|I79 +28001B128:Mn2:H28001C0E0,H28001C0F0 +28001B140:lI88|H28001B150 +28001B150:lA5:eigrp|H28001B160 +28001B160:lA5:EIGRP|N +28001B170:lI96|H28001B180 +28001B180:lA6:scc-sp|H28001B190 +28001B190:lA6:SCC-SP|N +28001B1A0:lA4:iatp|I117 +28001B1B0:lI21|H28001B1C0 +28001B1C0:lA3:prm|H28001B1D0 +28001B1D0:lA3:PRM|N +28001B1E0:lI73|H28001B1F0 +28001B1F0:lA4:cphb|H28001B200 +28001B200:lA4:CPHB|N +28001B210:lA4:PIPE|I131 +28001B220:lA5:CHAOS|I16 +28001B230:lA9:ipv6-opts|I60 +28001B240:lA7:ETHERIP|I97 +28001B250:lA7:etherip|I97 +28001B260:lA3:ttp|I84 +28001B270:lA5:vines|I83 +28001B280:lI121|H28001B290 +28001B290:lA3:smp|H28001B2A0 +28001B2A0:lA3:SMP|N +28001B2B0:lI58|H28001B2C0 +28001B2C0:lA9:ipv6-icmp|H28001B2D0 +28001B2D0:lA5:icmp6|H28001B2E0 +28001B2E0:lA9:IPV6-ICMP|N +28001B2F0:lI117|H28001B300 +28001B300:lA4:iatp|H28001B310 +28001B310:lA4:IATP|N +28001B320:lA4:SCPS|I105 +28001B330:lAB:BBN-RCC-MON|I10 +28001B340:lI20|H28001B350 +28001B350:lA3:hmp|H28001B360 +28001B360:lA3:HMP|N +28001B370:lA4:ISIS|I124 +28001B380:lA3:HIP|I139 +28001B390:lI17|H28001B3A0 +28001B3A0:lA3:udp|H28001B3B0 +28001B3B0:lA3:UDP|N +28001B3C0:lI82|H28001B3D0 +28001B3D0:lAB:secure-vmtp|H28001B3E0 +28001B3E0:lAB:SECURE-VMTP|N +28001B3F0:lA5:SHIM6|I140 +28001B400:lI74|H28001B410 +28001B410:lA3:wsn|H28001B420 +28001B420:lA3:WSN|N +28001B430:lA4:IPCV|I71 +28001B440:lA9:IPX-in-IP|I111 +28001B450:lA4:scps|I105 +28001B460:lI119|H28001B470 +28001B470:lA3:srp|H28001B480 +28001B480:lA3:SRP|N +28001B490:lA6:SCC-SP|I96 +28001B4A0:lI140|H28001B4B0 +28001B4B0:lA5:shim6|H28001B4C0 +28001B4C0:lA5:SHIM6|N +28001B4D0:lI90|H28001B4E0 +28001B4E0:lAA:sprite-rpc|H28001B4F0 +28001B4F0:lAA:Sprite-RPC|N +28001B500:lA3:dsr|I48 +28001B510:lI14|H28001B520 +28001B520:lA5:emcon|H28001B530 +28001B530:lA5:EMCON|N +28001B540:lA4:wesp|I141 +28001B550:lA6:NETBLT|I30 +28001B560:lA7:ISO-TP4|I29 +28001B570:lA3:esp|I50 +28001B580:lI5|H28001B590 +28001B590:lA3:st2|H28001B5A0 +28001B5A0:lA3:ST2|N +28001B5B0:lA3:srp|I119 +28001B5C0:lA5:EIGRP|I88 +28001B5D0:lA4:TP++|I39 +28001B5E0:lI67|H28001B5F0 +28001B5F0:lA4:ippc|H28001B600 +28001B600:lA4:IPPC|N +28001B610:lA9:ipx-in-ip|I111 +28001B620:lI102|H28001B630 +28001B630:lA4:pnni|H28001B640 +28001B640:lA4:PNNI|N +28001B650:lI55|H28001B660 +28001B660:lA6:mobile|H28001B670 +28001B670:lA6:MOBILE|N +28001B680:lI97|H28001B690 +28001B690:lA7:etherip|H28001B6A0 +28001B6A0:lA7:ETHERIP|N +28001B6B0:lA3:dcn|I19 +28001B6C0:lA4:CPHB|I73 +28001B6D0:lA2:il|I40 +28001B6E0:lI123|H28001B6F0 +28001B6F0:lA3:ptp|H28001B700 +28001B700:lA3:PTP|N +28001B710:lAA:Sprite-RPC|I90 +28001B720:lI125|H28001B730 +28001B730:lA4:fire|H28001B740 +28001B740:lA4:FIRE|N +28001B750:lA8:DCN-MEAS|I19 +28001B760:lAA:mpls-in-ip|I137 +28001B770:lI66|H28001B780 +28001B780:lA3:rvd|H28001B790 +28001B790:lA3:RVD|N +28001B7A0:lA4:CRTP|I126 +28001B7B0:lI91|H28001B7C0 +28001B7C0:lA4:larp|H28001B7D0 +28001B7D0:lA4:LARP|N +28001B7E0:lA7:sat-mon|I69 +28001B7F0:lI129|H28001B800 +28001B800:lA4:iplt|H28001B810 +28001B810:lA4:IPLT|N +28001B820:lA3:UDP|I17 +28001B830:lA2:sm|I122 +28001B840:lA5:SWIPE|I53 +28001B850:lA4:IPPC|I67 +28001B860:lI80|H28001B870 +28001B870:lA6:iso-ip|H28001B880 +28001B880:lA6:ISO-IP|N +28001B890:lI75|H28001B8A0 +28001B8A0:lA3:pvp|H28001B8B0 +28001B8B0:lA3:PVP|N +28001B8C0:lA3:STP|I118 +28001B8D0:Mn2:H28001C100,H28001C130 +28001B8E8:lA6:IPComp|I108 +28001B8F8:lA3:nvp|I11 +28001B908:lI41|H28001B918 +28001B918:lA4:ipv6|H28001B928 +28001B928:lA4:IPV6|N +28001B938:lI37|H28001B948 +28001B948:lA3:ddp|H28001B958 +28001B958:lA3:DDP|N +28001B968:lA4:CPNX|I72 +28001B978:Mn2:H28001C140,H28001C150 +28001B990:Mn2:H28001C180,H28001C190 +28001B9A8:lA4:ipip|I94 +28001B9B8:lI27|H28001B9C8 +28001B9C8:lA3:rdp|H28001B9D8 +28001B9D8:lA3:RDP|N +28001B9E8:lA3:PIM|I103 +28001B9F8:lA4:isis|I124 +28001BA08:lA5:icmp6|I58 +28001BA18:lI240|H28001BA28 +28001BA28:lA6:pfsync|H28001BA38 +28001BA38:lA6:PFSYNC|N +28001BA48:lA3:DSR|I48 +28001BA58:lI83|H28001BA68 +28001BA68:lA5:vines|H28001BA78 +28001BA78:lA5:VINES|N +28001BA88:lI34|H28001BA98 +28001BA98:lA3:3pc|H28001BAA8 +28001BAA8:lA3:3PC|N +28001BAB8:lA2:FC|I133 +28001BAC8:lI86|H28001BAD8 +28001BAD8:lA3:dgp|H28001BAE8 +28001BAE8:lA3:DGP|N +28001BAF8:lA4:narp|I54 +28001BB08:lA6:netblt|I30 +28001BB18:lI16|H28001BB28 +28001BB28:lA5:chaos|H28001BB38 +28001BB38:lA5:CHAOS|N +28001BB48:lA4:SDRP|I42 +28001BB58:lI31|H28001BB68 +28001BB68:lA7:mfe-nsp|H28001BB78 +28001BB78:lA7:MFE-NSP|N +28001BB88:lI15|H28001BB98 +28001BB98:lA4:xnet|H28001BBA8 +28001BBA8:lA4:XNET|N +28001BBB8:lI78|H28001BBC8 +28001BBC8:lA6:wb-mon|H28001BBD8 +28001BBD8:lA6:WB-MON|N +28001BBE8:lA3:PVP|I75 +28001BBF8:lI93|H28001BC08 +28001BC08:lA5:ax.25|H28001BC18 +28001BC18:lA5:AX.25|N +28001BC28:lI122|H28001BC38 +28001BC38:lA2:sm|H28001BC48 +28001BC48:lA2:SM|N +28001BC58:lA4:ipcv|I71 +28001BC68:lAA:NSFNET-IGP|I85 +28001BC78:lA5:ARGUS|I13 +28001BC88:lA4:IFMP|I101 +28001BC98:lA3:wsn|I74 +28001BCA8:lA3:a/n|I107 +28001BCB8:lA9:IPV6-FRAG|I44 +28001BCC8:lA4:aris|I104 +28001BCD8:lA3:DDX|I116 +28001BCE8:lA3:RDP|I27 +28001BCF8:lA3:bna|I49 +28001BD08:lI54|H28001BD18 +28001BD18:lA4:narp|H28001BD28 +28001BD28:lA4:NARP|N +28001BD38:lA4:ospf|I89 +28001BD48:lI85|H28001BD58 +28001BD58:lAA:nsfnet-igp|H28001BD68 +28001BD68:lAA:NSFNET-IGP|N +28001BD78:lI40|H28001BD88 +28001BD88:lA2:il|H28001BD98 +28001BD98:lA2:IL|N +28001BDA8:Mn2:H28001C1A0,H28001C1B0 +28001BDC0:lI127|H28001BDD0 +28001BDD0:lA5:crudp|H28001BDE0 +28001BDE0:lA5:CRUDP|N +28001BDF0:lA3:pim|I103 +28001BE00:lI92|H28001BE10 +28001BE10:lA3:mtp|H28001BE20 +28001BE20:lA3:MTP|N +28001BE30:lI23|H28001BE40 +28001BE40:lA7:trunk-1|H28001BE50 +28001BE50:lA7:TRUNK-1|N +28001BE60:lAA:ipv6-route|I43 +28001BE70:lA7:TRUNK-2|I24 +28001BE80:lA6:sun-nd|I77 +28001BE90:lA4:dccp|I33 +28001BEA0:lA3:SNP|I109 +28001BEB0:lA3:ESP|I50 +28001BEC0:lA3:hip|I139 +28001BED0:lA9:SAT-EXPAK|I64 +28001BEE0:lA6:ISO-IP|I80 +28001BEF0:lA4:cphb|I73 +28001BF00:lA3:SRP|I119 +28001BF10:lAF:RSVP-E2E-IGNORE|I134 +28001BF20:lA6:WB-MON|I78 +28001BF30:lI111|H28001BF40 +28001BF40:lA9:ipx-in-ip|H28001BF50 +28001BF50:lA9:IPX-in-IP|N +28001BF60:lA8:IP-ENCAP|I4 +28001BF70:lA8:sscopmce|I128 +28001BF80:lA3:st2|I5 +28001BF90:lA4:ippc|I67 +28001BFA0:lA4:TLSP|I56 +28001BFB0:lA9:IDPR-CMTP|I38 +28001BFC0:lI22|H28001BFD0 +28001BFD0:lA7:xns-idp|H28001BFE0 +28001BFE0:lA7:XNS-IDP|N +28001BFF0:lA4:SKIP|I57 +28001C000:lA4:cpnx|I72 +28001C010:lI84|H28001C020 +28001C020:lA3:ttp|H28001C030 +28001C030:lA3:TTP|N +28001C040:lI35|H28001C050 +28001C050:lA4:idpr|H28001C060 +28001C060:lA4:IDPR|N +28001C070:lA5:shim6|I140 +28001C080:lA9:ipv6-icmp|I58 +28001C090:lA4:DCCP|I33 +28001C0A0:lA6:LEAF-2|I26 +28001C0B0:lI57|H28001C0C0 +28001C0C0:lA4:skip|H28001C0D0 +28001C0D0:lA4:SKIP|N +28001C0E0:lA6:PFSYNC|I240 +28001C0F0:lA3:PRM|I21 +28001C100:lI81|H28001C110 +28001C110:lA4:vmtp|H28001C120 +28001C120:lA4:VMTP|N +28001C130:lA3:qnx|I106 +28001C140:lA9:merit-inp|I32 +28001C150:lI115|H28001C160 +28001C160:lA4:l2tp|H28001C170 +28001C170:lA4:L2TP|N +28001C180:lA3:dgp|I86 +28001C190:lA4:XNET|I15 +28001C1A0:lA2:fc|I133 +28001C1B0:lI8|H28001C1C0 +28001C1C0:lA3:egp|H28001C1D0 +28001C1D0:lA3:EGP|N +2800BB848:t2:H2800BB860,I23 +2800BB860:t2:AD:logger_config,AA:ssl_logger +28001F238:t2:H28001F250,H28001F268 +28001F250:t2:AB:prim_socket,A9:msg_flags +28001F268:MfB:H28001F2D8:I0,I16,I4,I0,I0,I32,I8,I0,I524288,I1,I2 +28001F2D8:tB:A4:more,A5:trunc,A9:dontroute,AC:cmsg_cloexec,A7:confirm,A6:ctrunc,A3:eor,A8:errqueue,A8:nosignal,A3:oob,A4:peek +280068258:t2:H280068270,H280068288 +280068270:t2:AC:erl_features,AD:feature_specs +280068288:Mf1:H2800682A8:H2800682B8 +2800682A8:t1:AA:maybe_expr +2800682B8:Mf6:H280068300:H280068AD8,AC:experimental,A9:extension,H2800688B8,H280068348,I25 +280068300:t6:A5:short,A6:status,A4:type,AB:description,A8:keywords,AC:experimental +280068338:lA4:else|N +280068348:lA5:maybe|H280068338 +280068358:lI46|N +280068368:lI103|H280068358 +280068378:lI110|H280068368 +280068388:lI105|H280068378 +280068398:lI108|H280068388 +2800683A8:lI100|H280068398 +2800683B8:lI110|H2800683A8 +2800683C8:lI97|H2800683B8 +2800683D8:lI104|H2800683C8 +2800683E8:lI32|H2800683D8 +2800683F8:lI114|H2800683E8 +280068408:lI111|H2800683F8 +280068418:lI114|H280068408 +280068428:lI114|H280068418 +280068438:lI101|H280068428 +280068448:lI32|H280068438 +280068458:lI100|H280068448 +280068468:lI101|H280068458 +280068478:lI115|H280068468 +280068488:lI97|H280068478 +280068498:lI98|H280068488 +2800684A8:lI32|H280068498 +2800684B8:lI101|H2800684A8 +2800684C8:lI117|H2800684B8 +2800684D8:lI108|H2800684C8 +2800684E8:lI97|H2800684D8 +2800684F8:lI86|H2800684E8 +280068508:lI32|H2800684F8 +280068518:lI45|H280068508 +280068528:lI45|H280068518 +280068538:lI32|H280068528 +280068548:lI57|H280068538 +280068558:lI52|H280068548 +280068568:lI80|H280068558 +280068578:lI69|H280068568 +280068588:lI69|H280068578 +280068598:lI32|H280068588 +2800685A8:lI110|H280068598 +2800685B8:lI105|H2800685A8 +2800685C8:lI32|H2800685B8 +2800685D8:lI100|H2800685C8 +2800685E8:lI101|H2800685D8 +2800685F8:lI115|H2800685E8 +280068608:lI111|H2800685F8 +280068618:lI112|H280068608 +280068628:lI111|H280068618 +280068638:lI114|H280068628 +280068648:lI112|H280068638 +280068658:lI32|H280068648 +280068668:lI110|H280068658 +280068678:lI111|H280068668 +280068688:lI105|H280068678 +280068698:lI115|H280068688 +2800686A8:lI115|H280068698 +2800686B8:lI101|H2800686A8 +2800686C8:lI114|H2800686B8 +2800686D8:lI112|H2800686C8 +2800686E8:lI120|H2800686D8 +2800686F8:lI101|H2800686E8 +280068708:lI32|H2800686F8 +280068718:lI101|H280068708 +280068728:lI98|H280068718 +280068738:lI121|H280068728 +280068748:lI97|H280068738 +280068758:lI109|H280068748 +280068768:lI32|H280068758 +280068778:lI101|H280068768 +280068788:lI104|H280068778 +280068798:lI116|H280068788 +2800687A8:lI32|H280068798 +2800687B8:lI102|H2800687A8 +2800687C8:lI111|H2800687B8 +2800687D8:lI32|H2800687C8 +2800687E8:lI110|H2800687D8 +2800687F8:lI111|H2800687E8 +280068808:lI105|H2800687F8 +280068818:lI116|H280068808 +280068828:lI97|H280068818 +280068838:lI116|H280068828 +280068848:lI110|H280068838 +280068858:lI101|H280068848 +280068868:lI109|H280068858 +280068878:lI101|H280068868 +280068888:lI108|H280068878 +280068898:lI112|H280068888 +2800688A8:lI109|H280068898 +2800688B8:lI73|H2800688A8 +2800688C8:lI41|N +2800688D8:lI57|H2800688C8 +2800688E8:lI52|H2800688D8 +2800688F8:lI80|H2800688E8 +280068908:lI69|H2800688F8 +280068918:lI69|H280068908 +280068928:lI40|H280068918 +280068938:lI32|H280068928 +280068948:lI103|H280068938 +280068958:lI110|H280068948 +280068968:lI105|H280068958 +280068978:lI108|H280068968 +280068988:lI100|H280068978 +280068998:lI110|H280068988 +2800689A8:lI97|H280068998 +2800689B8:lI104|H2800689A8 +2800689C8:lI32|H2800689B8 +2800689D8:lI114|H2800689C8 +2800689E8:lI111|H2800689D8 +2800689F8:lI114|H2800689E8 +280068A08:lI114|H2800689F8 +280068A18:lI101|H280068A08 +280068A28:lI32|H280068A18 +280068A38:lI100|H280068A28 +280068A48:lI101|H280068A38 +280068A58:lI115|H280068A48 +280068A68:lI97|H280068A58 +280068A78:lI98|H280068A68 +280068A88:lI32|H280068A78 +280068A98:lI101|H280068A88 +280068AA8:lI117|H280068A98 +280068AB8:lI108|H280068AA8 +280068AC8:lI97|H280068AB8 +280068AD8:lI86|H280068AC8 +280068B48:t2:H280068B60,N +280068B60:t2:AC:erl_features,A8:keywords +28001EEA8:t2:H28001EEC0,H28001EED8 +28001EEC0:t2:AB:prim_socket,AE:ioctl_requests +28001EED8:MfC:H28001EF50:I2149607696,I3223349537,I3223349539,I3222038820,I3223349538,I3223349521,I3223349555,I3223349541,I2149607692,I2149607699,I2149607694,I2149607732 +28001EF50:tC:A8:sifflags,A7:gifaddr,AA:gifbrdaddr,A7:gifconf,AA:gifdstaddr,A8:gifflags,A6:gifmtu,AA:gifnetmask,A7:sifaddr,AA:sifbrdaddr,AA:sifdstaddr,A6:sifmtu +2800BB7E8:t2:H2800BB800,I7 +2800BB800:t2:AD:logger_config,H2800BB818 +2800BB818:t2:A10:$handler_config$,AB:ssl_handler +2800BB7A0:t2:H2800BB7B8,A5:async +2800BB7B8:t2:AA:logger_olp,A18:logger_std_h_ssl_handler +2800711B0:t2:A12:rex_nodes_observer,H2800711C8 +2800711C8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAE+vYAAd/g02c= +28001EFD0:t2:H28001EFE8,H28001F000 +28001EFE8:t2:AB:prim_socket,AB:ioctl_flags +28001F000:Mf20:H28001F118:I0,I64,I4,I2,I8,I1,I32768,I0,I512,I0,I0,I0,I0,I0,I0,I0,I4096,I8192,I16384,I0,I0,I128,I32,I1024,I16,I0,I0,I256,I0,I2048,I0,I0 +28001F118:t20:A7:monitor,A7:running,A5:debug,A9:broadcast,A8:loopback,A2:up,A9:multicast,A7:nogroup,A8:allmulti,A9:automedia,AA:cantconfig,A7:dormant,A5:dying,A7:dynamic,A4:echo,AA:knowsepoch,A5:link0,A5:link1,A5:link2,A8:lower_up,A6:master,A5:noarp,AA:notrailers,A7:oactive,AB:pointopoint,A7:portsel,A8:ppromisc,A7:promisc,A8:renaming,A7:simplex,A5:slave,A9:staticarp +28005B250:t2:H28005B268,I5 +28005B268:t2:AD:logger_config,A10:$primary_config$ +28006A4A0:t2:H28006A4B8,I5 +28006A4B8:t2:AD:logger_config,A11:supervisor_bridge +28008F5B0:t2:H28008F5C8,A5:async +28008F5C8:t2:AA:logger_olp,AC:logger_proxy +280068BD8:t2:H280068BF0,I5 +280068BF0:t2:AD:logger_config,AA:supervisor +280068B90:t2:H280068BA8,A4:true +280068BA8:t2:AC:erl_features,A9:init_done +280068B00:t2:H280068B18,N +280068B18:t2:AC:erl_features,A10:enabled_features +28005B298:t2:H28005B2B0,I5 +28005B2B0:t2:AD:logger_config,A16:application_controller +=binary:1309301C0 +9C:XlsbwptdW1tcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcZFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxkXSsoPzo7Wy1hLXpBLVpcZFwvIyYuOj0/JUB+X10qKSopPwcpfCg/Oig/OlxkezEsNH0oPzo7XGR7MCw0fSkqKT9bXGRBLVBSLVRaY2YtbnEtdXk9Pjx+XSkp +=binary:130931BD0 +15E:RVJDUF4BAAAQCAAAAQAAAP//////////AAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMBGhtuAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAABuAAAAAAgDAIgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAABigwCNgwCHkoMALpKDACcdO24AAAAAaOD/p////4f+//9HAAAAAAAAAAAAAAAAAAAAAGR5ACd3AFBuAAAAAAAA/wP+//8H/v//BwAAAAAAAAAAAAAAAAAAAABrkoMAJx07bgAAAABo4P+n////h/7//0cAAAAAAAAAAAAAAAAAAAAAYnkAJ3gAfh0HeACHdwBDgwA9koMAFQdbAAMHkoMACR07WwAEB3kACXgAFW4AAAAAAAD/c/7/HQTIfz5CAAAAAAAAAAAAAAAAAAAAAHgAPXgA0HgBGgA= +=atoms +glee_unit_assert_match +glee_unit_assert_equal +glee_unit_assert_not_equal +expected +'-erlang_error_to_unified/3-fun-0-' +'-format_reason/4-fun-0-' +'-format_reason/4-fun-1-' +'-format_reason/4-fun-2-' +'-format_reason/4-fun-3-' +'-format_reason/4-fun-4-' +'-format_reason/4-fun-5-' +module_and_test_run +'-create_test_report/1-fun-0-' +'-create_test_report/1-fun-1-' +'-create_test_report/1-fun-2-' +'-create_test_report/1-fun-3-' +'-create_test_report/1-fun-4-' +'-create_test_report/1-fun-5-' +'-create_test_report/1-fun-6-' +align_table +'showtime@internal@reports@table' +ignored_style +failed_style +passed_style +function_style +error_style +align_left_overflow +stacktrace_style +align_right +align_left +content +styled_content +format_reason +got_highlight +expected_highlight +'showtime@internal@reports@compare' +not_style +'showtime@internal@reports@styles' +gleam_error_to_unified +unified_error +erlang_error_to_unified +'-part1/1-fun-2-' +'-find_best_joker_substitution/1-fun-0-' +'-find_best_joker_substitution/1-fun-1-' +'-part2/1-fun-0-' +'-part2/1-fun-2-' +get_input +get_part +find_best_joker_substitution +compare_hands +compare_top_card +classify_hand +card_counts +hand +parse_hand +card_rank +two_pair +three_of_a_kind +one_pair +high_card +full_house +four_of_a_kind +five_of_a_kind +hand_rank +be_false_meta +be_false +be_true_meta +be_true +fail_meta +be_error_meta +be_error +be_ok_meta +be_ok +not_equal_meta +equal_meta +evaluate +'-run_test/4-fun-0-' +'-run_test/4-fun-1-' +reason_line +expression +'-run_test/4-fun-2-' +trace_module +'-run_test/4-fun-3-' +'-map_extra_info_list/1-fun-0-' +num +arg_list +map_arity +map_extra_info_list +erlang_exception +trace_list +erlang_error +generic_exception +gleam_assert +not_eq +assert_equal +assert_match +assert_not_equal +assertNotEqual +assertMatch +assertEqual +test_function_return +test +capture_done +stop_output_capture +capture_output +start_output_capture +'-run_test_suite/4-fun-0-' +showtime_ffi +run_test +example +part1 +'-part1_test/0-fun-0-' +part2 +'-part2_test/0-fun-0-' +part2_test +'showtime@tests@should' +part1_test +'-optional/1-fun-0-' +'-any/1-fun-0-' +'-decode1/2-fun-0-' +'-push_path/2-fun-0-' +'-result/2-fun-3-' +'-result/2-fun-2-' +'-result/2-fun-1-' +'-result/2-fun-0-' +'-result/2-fun-4-' +'-result/2-fun-5-' +'-list/1-fun-0-' +'-list/1-fun-1-' +'-list/1-fun-2-' +'-map_errors/2-fun-0-' +'-decode_string/1-fun-0-' +'-decode_string/1-fun-1-' +'-field/2-fun-0-' +'-field/2-fun-1-' +'-field/2-fun-2-' +'-optional_field/2-fun-0-' +'-optional_field/2-fun-1-' +'-optional_field/2-fun-2-' +'-element/2-fun-0-' +'-element/2-fun-1-' +'-element/2-fun-2-' +'-element/2-fun-3-' +'-tuple_errors/2-fun-0-' +'-tuple2/2-fun-0-' +'-tuple2/2-fun-1-' +'-tuple3/3-fun-0-' +'-tuple3/3-fun-1-' +'-tuple4/4-fun-0-' +'-tuple4/4-fun-1-' +'-tuple5/5-fun-0-' +'-tuple5/5-fun-1-' +'-tuple6/6-fun-0-' +'-tuple6/6-fun-1-' +'-dict/2-fun-4-' +'-dict/2-fun-2-' +'-dict/2-fun-1-' +'-dict/2-fun-3-' +'-dict/2-fun-5-' +'-dict/2-fun-0-' +'-dict/2-fun-6-' +'-dict/2-fun-7-' +'-decode2/3-fun-0-' +'-decode3/4-fun-0-' +'-decode4/5-fun-0-' +'-decode5/6-fun-0-' +'-decode6/7-fun-0-' +'-decode7/8-fun-0-' +'-decode8/9-fun-0-' +'-decode9/10-fun-0-' +decode9 +decode8 +decode7 +decode6 +decode5 +decode4 +decode3 +decode2 +tuple6 +tuple5 +tuple4 +tuple3 +tuple2 +tuple_errors +optional_field +decode_string +map_errors +push_path +decode1 +all_errors +at_least_decode_tuple_error +optional +shallow_list +put_expected +bit_string +bit_array +'-do_wildcard/3-lc$^0/1-0-' +'-do_wildcard_4/3-lc$^1/1-1-' +'-do_wildcard_4/3-lc$^0/1-0-' +'-compile_alt/2-lc$^0/1-0-' +'-keep_dir_search_rules/1-lc$^0/1-0-' +'-keep_suffix_search_rules/1-lc$^0/1-0-' +'-add_local_search/1-fun-0-' +climb +safe_relative_path_1 +find_regular_file +try_dir_rule +try_dir_rules +add_local_search +try_suffix_rules +find_file +asn1_source_search_rules +c_source_search_rules +erl_source_search_rules +basic_source_search_rules +default_search_rules +source_search_rules +get_search_rules +keep_suffix_search_rules +keep_dir_search_rules +eval_list_dir +eval_read_link_info +eval_read_file_info +do_exists +wrap_escapes +convert_escapes +compile_alt +compile_range +compile_charset1 +compile_charset +missing_delimiter +escaped +compile_part_to_sep +compile_part +compile_join +compile_wildcard_3 +is_literal_pattern +compile_wildcard_2 +cwd +compiled_wildcard +compile_wildcard +do_list_dir +do_alt +do_star +do_double_star +prepare_base +will_always_match +star +question +alt +match_part +do_wildcard_4 +double_star +do_wildcard_3 +do_wildcard_2 +do_wildcard_1 +do_wildcard +do_file_size +do_last_modified +do_fold_files2 +do_fold_files1 +do_fold_files +do_is_regular +do_is_file +do_is_dir +file_size +last_modified +fold_files +is_regular +badpattern +'-do_all/2-fun-0-' +'-do_values/2-fun-0-' +do_values +to_result +is_none +is_some +do_all +panic +not_utf8 +'-do_copy_directory/2-fun-1-' +'-do_copy_directory/2-fun-0-' +'-do_copy_directory/2-fun-2-' +'-do_copy_directory/2-fun-3-' +'-get_files/1-fun-0-' +'-get_files/1-fun-3-' +'-get_files/1-fun-5-' +'-copy_directory/2-fun-0-' +'-rename_directory/2-fun-0-' +rename_file +copy_file +rename_directory +copy_directory +create_dir_all +create_directory_all +get_files +do_copy_directory +create_file +create_directory +append_bits +write_bits +read_bits +cast_error +'gleam@bit_array' +do_read +do_write +simplifile_erl +do_append +start_test +completed_test_run +ongoing_test_run +end_test +'-collect_modules_in_folder/3-fun-0-' +'-collect_modules_in_folder/3-fun-1-' +test_module +'-collect_modules_in_folder/3-fun-2-' +'-collect_modules_in_folder/3-fun-3-' +'-collect_modules_in_folder/3-fun-4-' +'-collect_modules_in_folder/3-fun-5-' +'-collect_test_functions/1-fun-0-' +'-collect_test_functions/1-fun-1-' +'-collect_test_functions/1-fun-2-' +test_function +'-collect_test_functions/1-fun-3-' +test_suite +unsafe_coerce +read_directory +collect_modules_in_folder +get_module_prefix +end_test_suite +start_test_suite +'-start/5-fun-0-' +'-start/5-fun-1-' +'-start/5-fun-2-' +'-debug_cmd/2-lc$^0/1-0-' +'-get_log/1-lc$^0/1-0-' +'-nlog_new/2-fun-0-' +nlog_get +nlog_put +nlog_new +print_log +get_debug2 +remove_debug +install_debug +stat +no_statistics +start_time +current_time +messages_in +messages_out +get_stat +init_stat +do_change_code +unknown_debug +debug_cmd +do_replace_state +callback_failed +do_get_state +suspend_loop_hib +terminating +send_system_msg +install +no_debug +log_to_file +replace_state +failed_to_connect +local_node_is_not_alive +atom_not_loaded +'-list_directory/1-lc$^0/1-0-' +'-get_all_env/0-fun-0-' +'-map_selector/2-fun-0-' +'-map_selector/2-fun-1-' +process_down +selector +free_bsd +windows_nt +os_family +recursive_delete +delete_directory +list_directory +make_directory +delete_file +append_file +posix_result +link_info +exdev +etxtbsy +estale +esrch +espipe +erofs +erange +epipe +eperm +eopnotsupp +enotblk +enosys +enostr +enosr +enospc +enomem +enolink +enolck +enodev +enobufs +enfile +emultihop +emlink +eloop +eisdir +eio +eintr +eftype +efbig +eexist +edquot +edeadlock +edeadlk +ebadmsg +eacces +no_access +file_info_result +unknown_application +errored +thrown +classify +atom_from_dynamic +atom_from_string +call_timeout +exit_message +'-selecting_trapped_exits/2-fun-0-' +'-selecting/3-fun-0-' +'-receive/2-fun-0-' +'-selecting_record2/3-fun-0-' +'-selecting_record3/3-fun-0-' +'-selecting_record4/3-fun-0-' +'-selecting_record5/3-fun-0-' +'-selecting_record6/3-fun-0-' +'-selecting_record7/3-fun-0-' +'-selecting_record8/3-fun-0-' +'-try_call/3-fun-0-' +callee_down +'-try_call/3-fun-1-' +process_named +named +unregister_process +register_process +trap_exits +send_abnormal_exit +send_exit +timer_not_found +try_call +demonitor_process +process_monitor +sleep_forever +anything +selecting_record8 +selecting_record7 +selecting_record6 +selecting_record5 +selecting_record4 +selecting_record2 +insert_selector_handler +selecting_trapped_exits +flush_messages +select_forever +subject +init_timeout +convert_system_message +gleam_otp_external +'-receive_message/1-fun-0-' +'-init_selector/2-fun-0-' +'-init_selector/2-fun-1-' +'-start_spec/1-fun-0-' +'-start_spec/1-fun-1-' +'-start_spec/1-fun-2-' +init_failed +init_crashed +selecting_process_down +monitor_process +to_erlang_start_result +abnormal +failed +subject_owner +ready +initialise_actor +map_selector +init_selector +status_info +from +'gleam@dynamic' +process_status_info +merge_selector +selecting_anything +receive_message +selecting_record3 +selecting_system_messages +exit_process +with_selector +create_test_report +'showtime@internal@reports@formatter' +'showtime@internal@common@common_event_handler' +'-start/0-fun-1-' +'-start/0-fun-2-' +event_handler_message +'-start/0-fun-3-' +selecting +new_selector +new_subject +'gleam@erlang@process' +'gleam@otp@actor' +is_equal +prepend_builder +'-pretty_print_cause/1-fun-0-' +line_print +pretty_print_cause +not_assigned +surrogate +spacing_combining +enclosing +non_spacing +decimal +letter +connector +dash +punctuation +currency +paragraph +space +separator +noBreak +fraction +vertical +small +medial +isolated +wide +narrow +font +square +circle +'-inlined-class/1-' +'-canonical_order_2/2-lc$^0/1-0-' +is_wide_cp +subcat_letter +zs +zp +zl +so +sk +sc +ps +po +pi +pf +pe +pd +pc +mn +me +lu +lo +ll +cs +co +cn +cf +cc +cat_translate +unicode_table +case_table +nolist +compose_pair +gc_h_lv_lvt +gc_h_T +gc_h_V +gc_h_L +gc_regional +is_ext_pict +gc_ext_pict_zwj +gc_ext_pict +zwj +is_extend +gc_extend2 +gc_extend +is_control +gc_prepend +gc_1 +cp_no_binl +binary_found +cp_no_bin +cpl_1_cont3 +cpl_1_cont2 +cpl_1_cont +cpl_cont3 +cpl_cont2 +cpl_cont +cpl +is_whitespace +compose_compat_many +compose_compat +compose_compat_0 +compose_many +decompose_compat_1 +decompose_compat +canonical_order_2 +canonical_order_1 +canonical_order +decompose_1 +decompose +lookup_category +spec_version +lower +get_case +compat +ccc +'-inlined-rev/1-' +'-inlined-append/2-' +'-titlecase/1-lbc$^0/2-0-' +'-to_lower/1-lc$^0/1-0-' +'-to_upper/1-lc$^0/1-0-' +'-join/2-lc$^0/1-0-' +to_upper_char +to_lower_char +sub_string +centre +r_pad +l_pad +strip_right +strip_left +s_word +sub_word +w_count +words +copies +tokens_multiple_2 +tokens_multiple_1 +tokens_single_2 +tokens_single_1 +substr2 +substr1 +cspan +span +l_prefix +rstr +str +rchr +bin_search_str_2 +bin_search_str_1 +bin_search_str +bin_search_inv_n +bin_search_inv_1 +bin_search_inv +bin_search_loop +bin_pattern +search_cp +search_pattern +bin_search +cp_prefix_1 +cp_prefix +add_non_empty +find_r +find_l +lexeme_skip +nth_lexeme_m +lexeme_pick +lexemes_m +prefix_1 +take_tc +take_t +take_lc +take_l +trim_t +trim_ts +trim_l +trim_ls +casefold_bin +casefold_list +lowercase_bin +lowercase_list +uppercase_bin +uppercase_list +slice_bin +slice_list +slice_trail +slice_lb +slice_l +slice_l0 +reverse_b +reverse_1 +equal_norm_nocase +equal_norm +equal_nocase +equal_1 +length_b +length_1 +cp +next_codepoint +nth_lexeme +to_number +to_integer +casefold +titlecase +whitespace +split_string +not_a_utf8_string +'-decode_option/2-fun-0-' +'-compile_regex/2-lc$^0/1-0-' +'-regex_matches/2-fun-0-' +'-regex_scan/2-fun-0-' +'-parse_query/1-fun-0-' +'-inspect/1-fun-4-' +'-inspect/1-lc$^1/1-1-' +'-inspect/1-lc$^0/1-0-' +base16_decode +inspect_maybe_utf8_string +append_segment +inspect_bit_array +improper +inspect_list +inspect_maybe_gleam_atom +proper +println_error +maps_get_or +maps_get_optional +check_utf8 +is_hex_digit +percent_ok +percent_decode +percent_encode +dissect_query +wrap_list +base_decode64 +regex_scan +regex_matches +regex_submatches +regex_split +regex_check +compile_error +compile_regex +bit_array_int_from_u32 +bit_array_int_to_u32 +bit_array_slice +bit_array_concat +string_invalid_utf8 +string_pad +decode_result +decode_option +decode_tuple6 +decode_tuple5 +decode_tuple4 +decode_tuple3 +decode_tuple2 +decode_tuple +tuple_get +size_of_tuple +decode_field +decode_list +decode_bool +decode_float +decode_int +decode_bit_array +decode_map +classify_dynamic +decode_error +decode_error_msg +iodata_append +capitalise +to_option +utf_codepoint_to_int +utf_codepoint +utf_codepoint_list_to_string +from_utf_codepoints +to_utf_codepoints +do_to_utf_codepoints +do_to_utf_codepoints_impl +do_to_graphemes +string_pop_grapheme +pop_grapheme +trim_right +do_trim_right +trim_left +do_trim_left +do_trim +pad_left +padding +do_join +'gleam@iterator' +do_split_once +string_ends_with +ends_with +string_starts_with +contains_string +drop_right +crop_string +crop +less_than +from_string +do_reverse +'-compose/2-fun-0-' +'-curry2/1-fun-0-' +'-curry2/1-fun-1-' +'-curry3/1-fun-0-' +'-curry3/1-fun-1-' +'-curry3/1-fun-2-' +'-curry4/1-fun-0-' +'-curry4/1-fun-1-' +'-curry4/1-fun-2-' +'-curry4/1-fun-3-' +'-curry5/1-fun-0-' +'-curry5/1-fun-1-' +'-curry5/1-fun-2-' +'-curry5/1-fun-3-' +'-curry5/1-fun-4-' +'-curry6/1-fun-0-' +'-curry6/1-fun-1-' +'-curry6/1-fun-2-' +'-curry6/1-fun-3-' +'-curry6/1-fun-4-' +'-curry6/1-fun-5-' +'-flip/1-fun-0-' +'-constant/1-fun-0-' +apply3 +apply2 +apply1 +tap +identity +flip +curry6 +curry5 +curry4 +curry3 +curry2 +compose +'-nil_error/1-fun-0-' +'-all/1-fun-0-' +'-values/1-fun-0-' +try_recover +lazy_or +nil_error +unwrap_both +unwrap_error +is_error +loosely_equals +loosely_compare +ceiling +float_to_string +parse_float +invalid_base +bitwise_shift_right +bitwise_shift_left +bitwise_exclusive_or +bitwise_or +bitwise_not +bitwise_and +floor_divide +modulo +remainder +undigits +do_undigits +digits +do_digits +do_product +do_sum +negate +is_odd +is_even +clamp +square_root +to_base36 +to_base8 +to_base2 +to_base_string +int_from_base_string +base_parse +parse_int +absolute_value +'-hex_string_to_int/1-fun-0-' +power +'-hex_string_to_int/1-fun-1-' +'-hex_string_to_int/1-fun-2-' +'-rgba_to_hsla/4-fun-0-' +'-rgba_to_hsla/4-fun-1-' +'-from_rgb255/3-fun-0-' +'-from_rgb255/3-fun-2-' +'-from_rgb255/3-fun-4-' +'-from_rgb/3-fun-0-' +'-from_rgb/3-fun-1-' +'-from_rgb/3-fun-2-' +'-from_rgba/4-fun-0-' +'-from_rgba/4-fun-1-' +'-from_rgba/4-fun-2-' +'-from_rgba/4-fun-3-' +'-from_hsla/4-fun-0-' +'-from_hsla/4-fun-1-' +'-from_hsla/4-fun-2-' +'-from_hsla/4-fun-3-' +'-from_rgb_hex_string/1-fun-0-' +'-from_rgba_hex_string/1-fun-0-' +'-to_css_rgba_string/1-fun-0-' +multiply +'-to_css_rgba_string/1-fun-1-' +to_rgb_hex_string +to_base16 +to_rgba_hex_string +to_rgba_hex +to_css_rgba_string +to_hsla +rgba +hsla +to_rgba +from_rgba_hex_string +from_rgba_hex +from_rgb_hex_string +from_rgb_hex +from_hsl +from_hsla +from_rgba +from_rgb +to_float +then +divide +rgba_to_hsla +hsla_to_rgba +hex_string_to_int +hue_to_rgb +valid_colour_value +'-do_add/3-fun-1-' +'-flags/2-fun-0-' +'-global_flags/2-fun-0-' +command_input +'-execute_root/4-fun-0-' +'-usage_help/3-fun-0-' +'-cmd_help/4-fun-0-' +'-cmd_help/4-fun-1-' +'-cmd_help/4-fun-2-' +'-cmd_help/4-fun-4-' +'-execute/2-fun-0-' +starts_with +'-execute/2-fun-1-' +add_command_from_stub +constant +'gleam@function' +pretty_print +println +'gleam@io' +run_and_handle +execute +do_execute +lazy_unwrap +cmd_help +append_builder +from_strings +'gleam@string_builder' +unwrap +usage_help +to_rgb_hex +italic +underline +bold +'gleam_community@ansi' +heading_style +subcommands_help +subcommand_help +wrap_with_space +help_flag +sanitize_path +is_not_empty +pretty_help +from_rgb255 +'gleam_community@colour' +execute_root +global_flags +global_flag_tuple +global_flag +flag_tuple +command_node +empty_command +with_name +without_pretty_help +with_config +do_fold +from_result +'gleam@option' +map_values +has_key +'-from_list/1-fun-0-' +'-fold/3-fun-0-' +'-filter/2-fun-0-' +order +is_ok +'-one_of/1-fun-0-' +'-one_of/1-fun-1-' +'-none_of/1-fun-0-' +'-none_of/1-fun-1-' +'-each/1-fun-0-' +none_of +'gleam@set' +'-string/0-fun-1-' +'-string/0-fun-0-' +'-string_list/0-fun-1-' +'-string_list/0-fun-0-' +'-attempt/2-fun-0-' +'-wrap_with_constraint/2-fun-0-' +'-construct_value/3-fun-0-' +'-compute_flag/2-fun-12-' +'-compute_flag/2-fun-13-' +'-compute_flag/2-fun-10-' +'-compute_flag/2-fun-11-' +'-compute_flag/2-fun-8-' +'-compute_flag/2-fun-9-' +'-compute_flag/2-fun-6-' +'-compute_flag/2-fun-7-' +'-compute_flag/2-fun-4-' +'-compute_flag/2-fun-5-' +'-compute_flag/2-fun-2-' +'-compute_flag/2-fun-3-' +'-compute_flag/2-fun-0-' +'-compute_flag/2-fun-1-' +'-int/0-fun-1-' +'-int/0-fun-0-' +'-int_list/0-fun-1-' +'-int_list/0-fun-0-' +'-float/0-fun-1-' +'-float/0-fun-0-' +'-float_list/0-fun-1-' +'-float_list/0-fun-0-' +'-bool/0-fun-1-' +'-bool/0-fun-0-' +'-update_flag_value/2-fun-1-' +'-update_flag_value/2-fun-0-' +map_error +'-update_flag_value/2-fun-2-' +'-attempt_toggle_flag/2-fun-2-' +get_floats +get_floats_value +get_float +get_float_value +get_strings_value +get_string_value +get_bool_value +get_ints +get_ints_value +get_int +get_int_value +split_once +drop_left +update_flags +attempt_toggle_flag +update_flag_value +replace_error +flags_help +flag_help +flag_type_help +float_list +undefined_flag_err +no_value_flag_err +layer +layer_invalid_flag +li +b +compute_flag +construct_value +flag_not_provided_error +access_type_error +'gleam@map' +build_map +wrap_with_constraint +attempt +flag_builder +length_mismatch +'-update_group/1-fun-0-' +'-map_fold/3-fun-0-' +'-unique/1-fun-0-' +'-key_find/2-fun-0-' +'-key_filter/2-fun-0-' +'-key_pop/2-fun-0-' +'-permutations/1-fun-0-' +'-permutations/1-fun-1-' +'-permutations/1-fun-2-' +'-last/1-fun-0-' +'-combinations/2-fun-0-' +'-combinations/2-fun-1-' +'-do_combination_pairs/1-fun-0-' +'-transpose/1-fun-0-' +'-transpose/1-fun-1-' +'-do_shuffle_by_pair_indexes/1-fun-0-' +'gleam@float' +'-shuffle/1-fun-0-' +shuffle +do_shuffle_by_pair_indexes +do_shuffle_pair_unwrap +interleave +transpose +combination_pairs +do_combination_pairs +combinations +do_scan +reduce +sized_chunk +do_sized_chunk +do_chunk +take_while +do_take_while +drop_while +window_by_2 +window +do_window +permutations +do_partition +try_each +each +key_set +key_pop +pop_map +do_pop_map +pop +do_pop +key_filter +key_find +split_while +do_split_while +do_split +repeat +do_repeat +compare +'gleam@int' +tail_recursive_range +merge_sort +merge_down +merge_up +intersperse +do_intersperse +do_unzip +strict_zip +do_zip +find_map +fold_until +try_fold +index_fold +do_index_fold +fold_right +map_second +'gleam@pair' +map_fold +'gleam@dict' +flat_map +do_concat +reverse_and_prepend +prepend +do_take +try_map +do_try_map +index_map +do_index_map +map2 +do_map2 +do_map +filter_map +do_filter_map +do_filter +update_group +rest +contains +'-binary_to_term/1-fun-0-' +'-unsafe_binary_to_term/1-fun-0-' +priv_directory +make_reference +unsafe_binary_to_term +rescue +erlang_timestamp +gleam_erlang_ffi +collect_test_functions +run_test_suite +'showtime@internal@erlang@runner' +some +'-mk_runner/2-fun-0-' +'gleam@string' +'-mk_runner/2-fun-1-' +mixed +'-mk_runner/2-fun-2-' +'-start_with_args/2-fun-0-' +end_test_run +'gleam@list' +collect_modules +'showtime@internal@erlang@discover' +start_test_run +'showtime@internal@erlang@module_handler' +'showtime@internal@erlang@event_handler' +'-main/0-fun-0-' +start_arguments +'gleam@erlang' +with_pretty_help +default_pretty_help +one_of +'glint@flag@constraint' +string_list +start_with_args +let_assert +gleam_error +get_string +'gleam@result' +get_strings +'glint@flag' +mk_runner +showtime +already_listening +register_listener +lookup_listener +dtls_listeners_spec +dtls_connection_sup_dist +dtls_connection_child_spec +ssl_upgrade_server_session_cache_sup_dist +ssl_unknown_listener +tls_server_session_ticket_sup_dist +sup_name +ssl_listen_tracker_sup_dist +tracker_name +ssl_upgrade_server_session_child_spec +ssl_server_session_child_spec +tls_server_session_child_spec +listen_options_tracker_child_spec +tls_dist_connection_sup +start_child_dist +server_instance_child_spec +tls_connection_child_spec +dtls_sup_child_spec +tls_sup_child_spec +update_data_lock +collect_invalid_tickets +remove_ticket +obfuscate_ticket_age +ticket_data +psk_identity +verify_ticket_sni +last_elem +get_max_early_data +iterate_tickets +do_find_ticket +inital_state +remove_invalid_tickets +update_ticket +unlock_tickets +store_ticket +remove_tickets +lock_tickets +get_tickets +find_ticket +client_ssl_otp_session_cache +cache_name +'-init_certs_keys/3-fun-0-' +'-prio_ecdsa/1-lc$^0/1-0-' +namedCurves +'-prio_ecdsa/1-fun-1-' +privat_key +'-prio_rsa_pss/1-fun-0-' +'-prio_rsa/1-fun-0-' +'-prio_dsa/1-fun-0-' +'-init_private_key/3-lc$^0/1-0-' +'-dh_file/2-lc$^0/1-0-' +session_cb_opts +session_cache_client_max +session_cache_server_max +max_session_cache_size +client_session_cb_init_args +server_session_cb_init_args +dhfile +dh_file +asn1_NOVALUE +modp2048_generator +modp2048_prime +'DHParameter' +dh +init_diffie_hellman +'EcpkParameters' +asn1_OPENTYPE +'PrivateKeyInfo_privateKeyAlgorithm' +'PrivateKeyInfo' +pem_entry_decode +password +keyfile +invalid_key_id +key_id +init_private_key +init_certificate_file +certfile +init_certificates +cacertfile +crl_cache +init_cacerts +init_manager_name +internal_active_n +get_internal_active_n +server_session_ticket_max_early_data +get_max_early_data_size +server_session_ticket_store_size +get_ticket_store_size +server_session_ticket_lifetime +get_ticket_lifetime +prio_dsa +prio_rsa +pkix_hash_type +'HashAlgorithm' +prio_params_1 +prio_rsa_pss +using_curve +ecc_curves +prio_ecdsa +prio_eddsa +prioritize_groups +dss +engine +rsa_pss_pss +'RSASSA-PSS-params' +ecdsa +eddsa +namedCurve +'ECPrivateKey' +dsa +'DSAPrivateKey' +rsa +'RSAPrivateKey' +group_pairs +private_key +certs +key +init_cert_key_pair +certs_keys +init_certs_keys +dh_params +cert_key_alts +erl_dist +load_mitigation +no_longer_defined +exists_equivalent +register_unique_session +do_register_session +client_register_session +client_register_unique_session +session_validation +init_session_validator +start_session_validator +valid_session +validate_session +session_cache +pem_cache +fileref_db_handle +crl_db_info +cert_db_ref +cert_db_handle +validate_sessions +lifetime +pre_1_3_session_opts +client +delete_crls +insert_crls +invalidate_session +unique +register_session +clean_cert_db +cache_pem_file +connection_init +ssl_manager_dist +'-remove_cert_entries/2-inlined-0-' +'-refresh_trusted_certs/2-inlined-0-' +'-remove/1-fun-0-' +'-lookup_trusted_cert/4-lc$^0/1-0-' +'-refresh_trusted_certs/2-fun-0-' +'-extract_trusted_certs/1-lc$^0/1-0-' +'-lookup/2-fun-0-' +'-lookup/2-lc$^1/1-1-' +'-add_certs_from_der/3-fun-0-' +'-add_certs_from_der/3-lc$^1/1-0-' +'-certs_from_der/1-lc$^1/1-1-' +'-certs_from_der/1-lc$^0/1-0-' +'-add_certs_from_pem/3-fun-0-' +not_encrypted +'Certificate' +'-add_certs_from_pem/3-lc$^1/1-0-' +'-add_crls/3-lc$^0/1-1-' +'-add_crls/3-lc$^1/1-0-' +'-remove_crls/2-lc$^0/1-1-' +'-remove_crls/2-lc$^1/1-0-' +'-remove_cert_entries/2-fun-0-' +remove_cert_entries +insert_cert_entries +insert_delete_lists +update_certs +'TBSCertList' +der_decode +'CertificateList' +crl_issuer +rm_crls +remove_crls +add_crls +new_trusted_cert_entry +pkix_decode_cert +decoded +pkix_normalize_name +'OTPTBSCertificate' +'OTPCertificate' +cert +decode_cert +add_cert +add_certs_from_pem +certs_from_der +add_certs_from_der +remove_certs +init_ref_db +db_size +not_cached +ref_count +select_certentries_by_ref +remove_trusted_certs +decode_pem_file +pem_decode +der_otp +extract_trusted_certs +refresh +file_to_certificats +refresh_trusted_certs +der +add_trusted_certs +extracted +lookup_trusted_cert +ssl_otp_crl_issuer_mapping +ssl_otp_crl_cache +ssl_otp_ca_ref_file_mapping +ssl_otp_ca_file_ref +ssl_otp_cacertificate_db +ssl_manager_type +bypass_pem_cache +bypass_cache +ssl_pem_cache_clean +pem_check_interval +pem_cache_validate +init_pem_cache_validator +start_pem_cache_validator +refresh_trusted_db +clear_pem_cache +create_pem_cache +invalidate_pem +unconditionally_clear_pem_cache +cache_pem +start_link_dist +ssl_pem_cache_dist +client_session_ticket_lifetime +client_session_ticket_store_size +ticket_store_spec +session_and_cert_manager_child_spec +pem_cache_child_spec +session_lifetime +session_cb_init_args +session_cb +manager_opts +ssl_admin_child_spec +logger_h_common_logger_std_h_ssl_handler_restarting +logger_std_h_ssl_handler +asn1_certificates +verify_data +request_update +exchange_keys +certificate_list +certificate_request_context +status_type +hashsign_algorithm +algorithm +protocol_version +certificate_authorities +hashsign_algorithms +certificate_types +hashsign +params_bin +ticket +ticket_nonce +ticket_age_add +ticket_lifetime +compression_method +cipher_suite +server_version +compression_methods +client_version +'-parse_cipher_suites/1-lc$^0/1-0-' +format_uknown_cipher_suite +number_to_hex +prepend_eighths_hex +prepend_hex +prepend_row +prepend_first_row +update_row +calculate_padding +end_row +row_prefix +leading +convert_to_hex +msg_type +tls_record_version +header_prefix_tls_record +format_tls_record +header_prefix +server_hello_selected_version +get_server_version +client_hello_versions +get_client_version +suite_map_to_str +suite_bin_to_map +format_cipher +parse_cipher_suites +server_hello_done +hello_request +end_of_early_data +server_key_exchange +key_update +encrypted_extensions +client_key_exchange +certificate +hello_verify_request +certificate_verify_1_3 +certificate_verify +certificate_status +certificate_request_1_3 +certificate_1_3 +certificate_request +server_key_params +new_session_ticket +server_hello +client_hello +parse_handshake +format_handshake +build_tls_record +own_alert_format +alert_format +role +statename +own +alerter +direction +handshake +outbound +inbound +stop_logger +filter_non_ssl +ssl_handler +start_logger +asn1db +asn1_ns +asn1rt_nif +'PKCS-FRAME' +'OTP-PUB-KEY' +pubkey_os_cacerts +pubkey_ocsp +pubkey_crl +pubkey_cert_records +pubkey_cert +pubkey_ssh +pubkey_pbe +pubkey_pem +rand_cache_size +fips_mode +crypto_ec_curves +ssl_connection_sup +ssl_admin_sup +ssl_sup +ssl_app +ssl_trace +ssl_logger +ssl_crl_hash_dir +ssl_crl_cache_api +ssl_crl_cache +ssl_crl +ssl_certificate +ssl_pkix_db +ssl_pem_cache +ssl_manager +ssl_upgrade_server_session_cache_sup +ssl_server_session_cache_sup +ssl_server_session_cache_db +ssl_server_session_cache +ssl_client_session_cache_db +ssl_session +tls_dist_server_sup +tls_dist_sup +ssl_dist_admin_sup +ssl_dist_connection_sup +ssl_dist_sup +inet6_tls_dist +inet_tls_dist +tls_client_ticket_store +tls_bloom_filter +ssl_listen_tracker_sup +ssl_alert +ssl_srp_primes +ssl_cipher_format +ssl_cipher +ssl_record +ssl_handshake +ssl_gen_statem +ssl_config +tls_dtls_connection +ssl_session_cache_api +dtls_server_session_cache_sup +dtls_server_sup +dtls_sup +dtls_listener_sup +dtls_packet_demux +dtls_gen_connection +dtls_connection_sup +dtls_v1 +dtls_socket +dtls_record +dtls_handshake +dtls_connection +ssl_dh_groups +tls_dyn_connection_sup +tls_sup +tls_server_session_ticket +tls_server_session_ticket_sup +tls_server_sup +tls_sender +tls_gen_connection +tls_connection_sup +tls_v1 +tls_socket +tls_record_1_3 +tls_record +tls_handshake_1_3 +tls_handshake +tls_gen_connection_1_3 +tls_server_connection_1_3 +tls_client_connection_1_3 +tls_connection +bad_descriptor +get_fd +ip_comm +socket_type +listen_loop +listen_init +listen_owner +start_listen +socket_start_failed +mk_tuple_list +httpd_child_spec_nolisten +httpd_child_spec_listen +bind_address +could_not_consult_proplist_file +validate_properties +proplist_file +httpd_config +valid_options +accept_timeout +'-lookup_cookies/3-fun-0-' +'-parse_set_cookies/2-lc$^0/1-0-' +'-parse_set_cookies/2-lc$^1/1-1-' +'-parse_set_cookie_attributes/1-lc$^0/1-0-' +'-accept_cookies/3-fun-0-' +image_of +path_sort +valid_cookies +is_cookie_expired +cookie_expires +accept_domain +accept_path +accept_cookie +accept_cookies +skip_right_most_slash +path_default +domain_default +datetime_to_gregorian_seconds +convert_netscapecookie_date +cookie_attributes +parse_set_cookie_attribute +parse_set_cookie_attributes +substr +parse_set_cookie +parse_set_cookies +chr +is_set_cookie_valid +add_domain +cookie_to_string +cookies_to_string +merge_domain_parts +lookup_domain_cookies +is_hostname +lookup_cookies +session_cookies +headers +request_path +request_host +http_cookie +maybe_dets_close +failed_open_file +cookie_db +httpc_manager__cookie_db +httpc_manager__session_cookie_db +httpc_manager__handler_db +httpc_manager__session_db +do_print_trace +print_trace +do_print_inets_trace +print_inets_trace +format_timestamp +closed_file +handle_trace +hopefully_traced +error_to_exit +ctp +change_pattern +bad_level +make_pattern +set_level +stop_trace +valid_trace_service +do_enable +trace_port +enable2 +invalid_service +'API_violation' +'-which_sessions2/1-lc$^0/1-0-' +'-which_sessions2/1-lc$^1/1-1-' +'-which_sessions2/1-lc$^2/1-2-' +'-code_change/3-fun-1-' +'-code_change/3-fun-0-' +'-get_manager_info/1-lc$^0/1-0-' +'-get_handler_info/1-lc$^0/1-0-' +'-get_handler_info/1-lc$^1/1-1-' +'-select_session/2-lc$^0/1-0-' +tp +tpl +handle_verbose +get_unix_socket_opts +get_socket_opts +get_verbose +get_port +get_ipfamily +get_cookies +get_max_sessions +get_keep_alive_timeout +get_max_keep_alive_length +get_max_pipeline_length +get_pipeline_timeout +get_https_proxy +get_proxy +scheme_default_port +unexpected +maybe_error +uri_parse +make_db_name +handler_db_name +session_cookie_db_name +cookie_db_name +session_db_name +do_store_cookies +handle_cookies +generate_request_id +is_inets_manager +pipeline_or_keep_alive +no_session +no_connection +host_port +candidates +is_idempotent +select_session +start_handler +convert_options +get_handler_info +sort_handlers2 +sort_handlers +sessions +get_manager_info +update_session_table +upgrade_from_pre_5_8_1 +downgrade_to_pre_5_8_1 +close_db +request_id +option_items +url +open_db +do_init +pipeline +keep_alive +session_type +which_session_info +non_session +bad_session +good_session +which_sessions_order +which_sessions2 +session_is +delete_session +pos +update_session +session_id +lookup_session +session +insert_session +request_done +redirect_request +retry_or_redirect_request +retry_request +no_such_service +invalid_field +invalid_value +headers_error +http_request_h +streaming_error +field +no_scheme +return_map +service_not_available +verify_peer +inets_not_started +invalid_method +invalid_request +patch +post +'-services/0-lc$^0/1-0-' +'-service_info/1-lc$^0/1-0-' +to_lower +'-handle_request/9-lc$^0/1-0-' +eof_body +'-mk_chunkify_fun/1-fun-0-' +'-http_options/3-fun-0-' +to_upper +'-http_options_default/0-fun-0-' +'-http_options_default/0-fun-1-' +essl +'-http_options_default/0-fun-2-' +'-http_options_default/0-fun-3-' +'-http_options_default/0-fun-4-' +'-http_options_default/0-fun-5-' +'-boolfun/0-fun-0-' +'-request_options_defaults/0-fun-0-' +'-request_options_defaults/0-fun-1-' +'-request_options_defaults/0-fun-2-' +'-request_options_defaults/0-fun-3-' +'-request_options/3-fun-0-' +bad_body_generator +check_body_gen +child_name +child_name2info +header_parse +validate_headers +header_record +validate_unix_socket +validate_verbose +validate_socket_opts +validate_port +validate_ip +validate_ipfamily +inet6fb4 +validate_ipv6 +validate_cookies +validate_max_pipeline_length +validate_pipeline_timeout +validate_max_keep_alive_length +validate_keep_alive_timeout +validate_max_sessions +validate_https_proxy +validate_proxy +not_an_option +pipeline_timeout +max_sessions +max_pipeline_length +max_keep_alive_length +keep_alive_timeout +https_proxy +ipfamily +validate_ipfamily_unix_socket +bad_options_combo +request_options_sanity_check +request_options +request_options_defaults +boolfun +autoredirect +proxy_auth +url_encode +connect_timeout +http_options_default +value_lazy +http_options +headers_as_is +body_format +maybe_format_body +full_result +return_answer +saved_to_file +handle_answer +mk_chunkify_fun +ensure_chunked_encoding +bad_scheme +scheme_to_atom +add_question_mark +bad_body +normalize_host +maybe_add_brackets +userinfo +ipv6_host_with_brackets +unix_socket +socket_opts +receiver +chunkify +normalize_and_parse_url +service_info +stand_alone +start_standalone +stream_next +reset_cookies +which_sessions +report_event +which_cookies +cookie_header +default_port +cookies +recompose +parse_failed +store_cookies +cacerts +cacerts_get +customize_hostname_check +pkix_verify_hostname_match_fun +ssl_verify_host_options +set_option +cancel_request +check_request +do_request +profile_name +no_profile +stop_child +data_dir +child_specs +only_session_cookies +'-children/0-lc$^0/1-0-' +'-children/0-lc$^1/1-1-' +default_profile +is_httpc +is_httpd +httpd_child_spec +httpc_child_spec +children +get_services +runtime_dependencies +mod_trace +mod_security_server +mod_security +mod_responsecontrol +mod_range +mod_log +mod_head +mod_get +mod_esi +mod_disk_log +mod_dir +mod_cgi +mod_auth_server +mod_auth_plain +mod_auth_mnesia +mod_auth_dets +mod_auth +mod_alias +mod_actions +httpd_sup +httpd_socket +httpd_script_env +httpd_response +httpd_request_handler +httpd_request +httpd_misc_sup +httpd_manager +httpd_logger +httpd_log +httpd_instance_sup +httpd_file +httpd_example +httpd_esi +httpd_custom_api +httpd_custom +httpd_connection_sup +httpd_cgi +httpd_acceptor_sup +httpd_acceptor +http_util +http_transport +http_chunk +httpc_cookie +httpc_sup +httpc_response +httpc_request +httpc_profile_sup +httpc_manager +httpc_handler_sup +httpc_handler +httpc +inets_lib +inets_trace +inets_service +inets_app +inets_sup +inets +gleam_community_colour +tom +snag +glint +gleam_otp +gleam_httpc +gleam_http +gleam_community_ansi +gap +'day7@solve' +'day7@day7_test' +simplifile +gleeunit +gleam_stdlib +gleam_erlang +adglent +'-open/1-fun-0-' +'-fake_reader/1-fun-0-' +'-reader/2-fun-0-' +'-com_enc_end/1-lc$^0/1-0-' +'-keep_ftr_keywords/0-fun-0-' +'-keep_ftr_keywords/0-fun-1-' +'-predef_macros/2-lc$^0/1-0-' +'-predef_macros/2-lc$^1/1-1-' +'-ftr_macro/1-fun-0-' +'-ftr_macro/1-fun-1-' +'-wait_request/1-lc$^0/1-0-' +'-eval_if/2-fun-0-' +'-interpret_file_attr/3-fun-0-' +interpret_file_attr +interpret_file_attribute +line1 +start_loc +add_line +expand_var1 +expand_var +wait_epp_reply +epp_reply +var_or_atom +find_mismatch +coalesce_strings +stringify +stringify1 +token_src +comma +classify_token_1 +classify_token +update_fun_name_1 +update_fun_name +expand_arg +expand_macro +macro_arg +count_args +store_arg +macro_args +bind_args +'FUNCTION_NAME' +'FUNCTION_ARITY' +get_macro_uses +check_uses +expand_macro1 +expand_macros +check_macro_arg +macro_expansion +macro_pars_end +macro_pars_cont +macro_pars +skip_elif +skip_else +skip_toks +scan_file1 +scan_endif +scan_elif +to_conses +defined +rewrite_expr +assert_guard_expr +eval_if +scan_if +scan_else +is_macro_defined +scan_ifndef +scan_ifdef +lib +scan_include_lib1 +scan_include_lib +expand_lib_dir +scan_include1 +scan_include +scan_undef +macro_ref +macro_uses +scan_define_cont +scan_define_2 +scan_define_1 +scan_define +update_features +scan_feature +scan_err_warn +'BASE_MODULE_STRING' +'BASE_MODULE' +scan_extends +'MODULE_STRING' +'MODULE' +scan_module_1 +extends +scan_module +leave_prefix +in_prefix +include_lib +ifndef +ifdef +endif +elif +define +scan_toks +leave_file +enter_file_reply +enter_file2 +enter_file +wait_req_skip +wait_req_scan +close_file +epp_request +wait_request +user_predef +ftr_macro +'FILE' +'LINE' +'MACHINE' +'OTP_RELEASE' +'FEATURE_AVAILABLE' +'FEATURE_ENABLED' +predef_macros +keep_ftr_keywords +source_name +init_server +not_typed +normalize_typed_record_fields +com_encoding +com_enc_end +com_enc +com_space +com_sep +com_oding +com_c +com +com_nl +read_encoding_from_file +fake_reader +in_comment_only +read_encoding +encoding_to_string +features +get_features +premature_end +missing_parenthesis +missing_comma +ftr_after_prefix +elif_after_else +cannot_parse +redefine_predef +redefine +mismatch +illegal_function_usage +illegal_function +duplicated_argument +arg_error +'NYI' +circular +macro_defs +includes +macros +print_stack_frame +stack_filter +print_error +main +aoc2023 +'X' +'-predefined_functions/1-lc$^0/1-0-' +'-predefined_functions/1-lc$^1/1-1-' +'-predefined_functions/1-lc$^2/1-2-' +'-predefined_functions/1-lc$^3/1-3-' +'-get_optional_callbacks/1-lc$^0/1-0-' +'-module_predef_func_beh_info/2-lc$^0/1-0-' +module_predef_funcs_mod_info +make_list +module_predef_func_beh_info +get_optional_callbacks +predefined_functions +add_predefined_functions +pos_integer +nonempty_string +nonempty_maybe_improper_list +nonempty_improper_list +nonempty_bitstring +nonempty_binary +non_neg_integer +neg_integer +maybe_improper_list +iolist +identifier +byte +bitsize +send_op +list_op +comp_op +bool_op +new_type_test +stream_state +retired_ecb_cipher_aliases +retired_ctr_cipher_aliases +retired_cfb_cipher_aliases +retired_cbc_cipher_aliases +hmac_state +user_info +uri +query +fragment +default_scheme_port_number +node_cookie +cookie +local_time_to_universal_time +rehash +is_module_native +literal_value +is_literal_list +is_literal +get_anno +stream_init +stream_encrypt +stream_decrypt +rand_uniform +poly1305 +next_iv +hmac_update +hmac_init +hmac_final_n +hmac_final +hmac +crypto_dyn_iv_update +crypto_dyn_iv_init +cmac +block_encrypt +block_decrypt +stop_clear +lclose +inc_wrap_file +accessible_logs +modify_line +get_attributes +get_attribute +token_info +set_attribute +attributes_info +hash +get_stacktrace +safe_relative_path +find_src +stop_service +start_service +scheme_defaults +parse_query +make_integer +is_directory +custom_clean +check_enum +integer_to_hexlist +hexlist_to_integer +ssh_hostkey_fingerprint +ssh_encode +ssh_decode +safe_multi_server_call +ssl_accept +negotiated_next_protocol +connection_info +cipher_suites +get_debug +enableYearChange +wxCalendarCtrl +public_key +os_mon_mib +httpd_util +httpd_conf +httpd +http_uri +ftp +erts_alloc_config +dbg +ct_slave +asn1ct +intersection1 +aoc2023_test +is_settable +anno_info +simplify +reset_simplify +set_anno +set_record +set_line +is_string +is_filename +is_anno2 +is_anno1 +new_location +'aoc2023@@main' +'-inlined-new_column/2-' +'-inlined-incr_column/2-' +'-options/1-fun-1-' +'-remove_digit_separators/2-lc$^0/1-0-' +let +cond +f_reserved_word +nl_tabs +spcs +nl_spcs +scan_error +tok3 +tok2 +scan_check1 +scan_check +comment +scan_comment +scan_comment_fun +skip_comment +skip_comment_fun +float_end +scan_exponent +scan_exponent_sign +scan_fraction +scan_based_int +remove_digit_separators +with_underscore +scan_number +caret_char_code +escape_char +scan_hex_end +scan_hex +scan_escape +scan_string1 +scan_string_col +scan_string_no_col +scan_string0 +scan_qatom +char_error +scan_string +scan_char +scan_white_space +scan_white_space_fun +skip_white_space +skip_white_space_fun +scan_tabs +scan_tabs_fun +scan_spcs +scan_spcs_fun +newline_end +scan_nl_white_space +scan_nl_white_space_fun +scan_nl_tabs +scan_nl_tabs_fun +scan_nl_spcs +scan_nl_spcs_fun +scan_newline +scan_dot +scan_name +scan_variable +scan_variable_fun +scan_atom +scan_atom_fun +not_character +'&' +'@' +'\\' +'^' +'`' +'~' +white_space +no_underscore +scan1 +string1 +tokens1 +expand_opt +reserved_word_fun +ssa_checks +compiler_internal +text_fun +return_white_spaces +return_comments +string_thing +category +erl_scan_continuation +no_col +illegal +'-open_1/3-fun-0-' +match_binary +match_writable +match_delayed +compressed_one +match_compressed +add_unless_matched +add_implicit_modes +open_layer +open_1 +reverse_pairs +append_list +fetch_keys +no_source +'-c/2-fun-0-' +'-c/5-fun-0-' +'-format_docs/1-fun-0-' +'-lc/1-fun-0-' +'-lc_batch/1-lc$^0/1-0-' +'-i/1-fun-0-' +'-all_procs/0-fun-0-' +'-m/0-fun-0-' +'-lm/0-lc$^0/1-0-' +'-nregs/0-fun-0-' +'-all_regs/0-lc$^0/1-0-' +'-print_node_regs/1-fun-0-' +'-print_node_regs/1-fun-1-' +appcall +parsetools +yecc +y +tools +xref +xm +seconds_to_daystime +get_uptime +uptime +max_length +ls_print +ls +pwd +portformat +portline +procformat +procline +portinfo +pwhereis +pids_and_ports +print_node_regs +all_regs +regs +nregs +split_print_exports +print_exports +get_compile_info +get_compile_options +print_md5 +print_object_file +bi +f_p_e +lm +mm +mformat +bt +all_procs +iformat +mfa_string +'more (y/n)? (y) ' +paged_output +less +ni +l +nc +d +split_def +'@o' +'@i' +'@d' +lc_batch +output_generated +purge_and_load +src_suffix +from_opt +from_core +from_asm +is_from_opt +is_outdir_opt +ensure_outdir +ensure_from +report_warnings +compile_and_load +safe_recompile +find_beam_1 +find_beam +source +find_source +old_options +format_docs +render_callback +hcb +render_type +ht +unknown_format +render +outdir +help +logger_h_common_logger_std_h_default_restarting +logger_std_h_default +handler_busy +cancel_repeated_filesync +set_repeated_filesync +check_common_config +string_to_binary +formatter_crashed +try_format +formatter_error +caught +do_log_to_binary +log_to_binary +log_handler_info +restart_impossible +rep_sync_tref +repeated_filesync +last_op +handler_state +ctrl_sync_count +olp +file_ctrl_process_not_started +'-fix_modes/1-lc$^0/1-0-' +'-fix_modes/1-fun-1-' +'-file_ctrl_start/2-fun-0-' +error_notify +maybe_notify_error +decompress_data +decompress_file +compress_data +compress_file +rot_file_name +rotate_files +rotate_file +maybe_rotate_file +maybe_update_compress +maybe_remove_archives +curr_size +rotation +update_rotation +sync_dev +write_to_dev +could_not_create_dir_for_file +could_not_reopen_file +ensure_open +ensure_file +maybe_ensure_file +file_ctrl_loop +open_failed +dev +file_ctrl_init +file_ctrl_call +file_ctrl_filesync +file_write +file_ctrl_stop +file_ctrl_start +delayed_write_close +close_log_file +write_res +sync_res +last_check +inode +handler_name +open_log_file +write_failed +config_changed +delayed_write +fix_modes +no_repeat +filesync_repeat_interval +fix_file_opts +merge_default_config +normalize_config +modes +max_no_files +max_no_bytes +file_check +compress_on_rotate +check_h_config +file_ctrl_pid +filesync +'-format/2-fun-0-' +'-check_template/1-fun-0-' +check_timezone +check_offset +check_template +check_limit +invalid_formatter_template +do_check_config +offset_to_utc +utc_log +get_utc_config +utc_to_offset +get_offset +get_depth +get_max_size +default_template +add_default_template +add_default_config +month +error_logger_notice_header +add_legacy_title +maybe_add_legacy_header +timestamp_to_datetimemicro +system_time_to_rfc3339 +time_designator +format_time +get_first +get_last +chardata_to_list +limit_depth +reformat +chars_limit_to_opts +format_msg +linearize_template +template +resource +cleanup +pong +ping +'-wait_nodes/2-fun-0-' +sync_nodes_optional +get_sync_optional_nodes +sync_nodes_mandatory +get_sync_mandatory_nodes +sync_nodes_timeout +get_sync_timeout +get_sync_data +check_up +mandatory_nodes_down +wait_nodes +sync_nodes +'__not_used' +dist_ac_took_control +go +'-start_interval_loop/5-fun-0-' +remove_timer +schedule_interval_timer +interval_loop +start_interval_loop +maybe_req +req +hms +hours +minutes +now_diff +tc +interval +send_interval +apply_repeatedly +apply_interval +kill_after +send_local +apply_once +instant +logger_proxy_logger_proxy_restarting +cond_lowercase +flat_trunc +prefixed_integer +unprefixed_integer +string_field +limit_field +limit_cdata_to_chars +cdata_to_chars +final +limit_iolist_to_chars +iolist_to_chars +float_data +signbit +abs_float_f +float_f +fwrite_f +float_exp +float_man +abs_float_e +float_e +fwrite_e +column +base +uniconv +control_limited +control_small +decr_pc +build_limited +not_small +build_small +w +count_small +collect_cc +field_value +field_width +modifiers +collect_cseq +collect +print_maps_order +print_strings +print_encoding +print_pad_char +print_precision +print_field_width +control_char +pad_char +precision +strings +width +wrap +quiet +'-to_drop/0-lc$^0/1-0-' +show +show_custom_provider_faulty_add_return +'$#erlang-history-custom-return' +show_custom_provider_faulty_load_return +'$#erlang-history-custom-crash' +show_custom_provider_crash +'$#erlang-history-size' +show_size_warning +'$#erlang-history-unexpected-close' +show_unexpected_close_warning +'$#erlang-history-unexpected-return' +show_unexpected_warning +'$#erlang-history-invalid-file' +show_invalid_file_warning +'$#erlang-history-invalid-chunk-warn' +show_invalid_chunk_warning +'$#erlang-history-rename-warn' +show_rename_warning +shell_history_drop +to_drop +shell_history_path +find_path +'$#erlang-history-disable' +disable_history +'$#erlang-history-upgrade' +upgrade_version +'$#erlang-history-resize-result' +new_size_too_small +change_size +'$#erlang-history-resize-attempt' +resize_log +'$#erlang-history-report-repairs' +report_repairs +shell_history_file_bytes +find_wrap_values +disk_log_info +'$#erlang-history-invalid-header' +not_a_log_file +invalid_index_file +'$#erlang-history-file-error' +'$#erlang-history-arg-mismatch' +handle_open_error +maybe_drop_header +maybe_resize_log +read_full_log +ensure_dir +ensure_path +log_options +open_log_no_size +open_log +init_running +is_user +shell_history +history_status +open_new_log +repair_log +wait_for_kernel_safe_sup +no_such_log +need_repair +name_already_open +invalid_header +repair +arg_mismatch +badbytes +recovered +'$#group_history' +'-write/2-fun-0-' +chars_length +test_limit_bitstring +test_limit_map_assoc +test_limit_map_body +test_limit_map +test_limit_tuple +test_limit_tail +test_limit +limit_bitstring +limit_map_assoc +limit_map_body +limit_map +limit_tuple +limit_tail +limit +binrev +collect_line_list +collect_line_bin +collect_chars_list +collect_chars1 +count_and_find_utf8 +printable_latin1_list +deep_unicode_char_list +deep_latin1_char_list +write_char_as_latin1 +write_latin1_char +write_unicode_char +string_char +write_string1 +unicode_as_latin1 +write_string_as_latin1 +write_latin1_string +write_unicode_string +unicode_as_unicode +name_char +name_chars +reserved_word +quote_atom +write_possibly_quoted_atom +tsub +write_binary_body +write_binary +write_map_assoc +write_map_body +write_map +write_ref +write_port +write_tuple +write_tail +fwrite_g +write1 +intermediate +maps_order +add_modifier +do_format_prompt +indentation +test_modules_loaded +build_text +unscan +unscan_format +scan +'-edit_line1/2-lc$^0/1-0-' +'-over_word/3-lc$^0/1-0-' +'-chars_before/1-lc$^0/1-0-' +'-current_line/1-fun-0-' +cp_len +gc_len +current_chars +length_after +length_before +chars_before +multi_line_prompt +erase_inp +over_paren_auto +over_paren +word_char +over_non_word +over_word2 +over_word1 +until_quote +over_word +skip_up +skip_down +do_op +insert_search +kill_line +transpose_char +backward_kill_word +yank +auto_blink +beginning_of_expression +backward_line +backward_word +forward_line +forward_word +forward_char +kill_word +backward_char +end_of_line +beginning_of_line +transpose_word +yank_pop +clear_line +forward_delete_char +backward_delete_char +key_map +ctlu +prefix_arg +redraw +end_of_expression +tab_expand_full +tab_expand +search_meta_left_sq_bracket +search_meta +new_line_finish +new_line +meta_o +meta_meta +meta_csi +ctlx +csi +edit +kill_buffer +'-normalize_expand_fun/2-fun-0-' +'-get_line1/5-lc$^3/1-0-' +'-get_line1/5-lc$^4/1-1-' +format_prompt +prompt_bytes +edit_password +get_password1 +get_password_line +search_down_stack +search_up_stack +save_line_buffer +pad_stack +get_all_lines +get_lines +save_line +down_stack +up_stack +stack +new_stack +get_line_timeout +remainder_after_nl +get_chars_echo_off1 +get_chars_echo_off +get_line_echo_off1 +get_line_echo_off +more_data +redraw_line +search_result +search_found +search_cancel +number_matches +format_matches +search_quit +expand_full +search_quit_prompt +edit_line1 +to_graphemes +meta_left_sq_bracket +prompt +erase_line +get_line1 +interrupted +get_chars_n_loop +current_line +get_chars_loop +get_chars_line +get_chars_n +get_password_chars +terminal +normalize_expand_fun +send_drv_reqs +send_drv +collect_chars +get_tty_geometry +exit_shell +driver_id +start_shell1 +whereis_shell +unicode_state +read_mode +line_buffer +convert_binaries +bc_req +default_output +default_input +execute_request +parse_erl_form +scan_erl_form +scan_erl_exprs +fread +conv_reason +get_password +sig +ebadf +canon +'-handle_request/2-lc$^0/1-0-' +'-handle_request/2-lc$^1/1-1-' +'-in_view/1-lc$^0/1-0-' +'-in_view/1-lc$^1/1-1-' +'-in_view/1-lc$^3/1-2-' +'-in_view/1-lc$^2/1-3-' +'-cols_multiline/4-lc$^0/1-0-' +'-npwcwidthstring/1-lc$^0/1-0-' +'-characters_to_output/1-fun-0-' +'-characters_to_buffer/1-fun-0-' +'-binary_to_latin1/1-lc$^0/1-0-' +tty_read_signal +tgoto_nif +tgetstr_nif +tgetflag_nif +tgetnum_nif +tgetent_nif +tgoto +tgetstr +tgetflag +tgetnum +tgetent +wcswidth +sizeof_wchar +wcwidth +isprint +tty_window_size +tty_encoding +tty_select +setlocale +tty_set +tty_init +tty_create +encode +char_to_latin1 +binary_to_latin1 +is_usascii +to_latin1 +ansi_sgr +ansi +insert_buf +characters_to_buffer +characters_to_output +xnfix +is_wide +not_printable +npwcwidth +next_grapheme +npwcwidthstring +update_geometry +cols +cols_multiline +split_cols_multiline +cols_after_cursor +in_view +right +left +move_cursor +split_cols +last_or_empty +unhandled_request +both +redraw_prompt_pre_deleted +writer_loop +user_drv_writer +reader_loop +user_drv_reader +winch +cont +reader_stop +reader +writer +init_term +standard_io_encoding +primitive +state_name +should_not_have_arrived_here_but_instead_in +'-inlined-loop_state_enter/9-' +'-format_log_single/2-fun-0-' +'-list_timeouts/1-lc$^0/1-0-' +list_timeouts +limit_client_info +terminate_sys_debug +bad_reply_action_from_state_function +do_reply_then_terminate +reply_then_terminate +bad_return_from_callback_mode +state_enter +callback_mode_result +get_callback_mode +parse_timeout_opts_abs +loop_done +loop_timeouts_update +loop_timeouts_cancel +loop_timeouts_register +loop_timeouts_start +loop_timeouts +loop_next_events +loop_state_change +loop_keep_state +loop_state_transition +loop_actions_next_event_bad +loop_actions_next_event +loop_actions_reply +bad_action_from_state_function +state_timeout +pop_callback_module +bad_state_enter_action_from_state_function +push_callback_module +change_callback_module +loop_actions_list +loop_actions +bad_return_from_state_function +repeat_state_and_data +repeat_state +bad_state_enter_return_from_state_function +stop_and_reply +loop_state_callback_result +handle_event_function +loop_state_callback +loop_event +loop_receive_result +t0q +loop_receive +loop_hibernate +wakeup_from_hibernate +event_string +insert_timeout +consume +sys_debug +timeouts +postponed +bad_return_from_init +init_result +params +replies +dirty_timeout +clean_timeout +postpone +'-gr_list/1-inlined-0-' +'-init_local_shell/2-fun-0-' +'-group_opts/1-fun-1-' +'-group_opts/1-fun-0-' +'-gr_list/1-fun-0-' +gr_list +gr_cur_index +gr_cur_pid +gr_del_pid +gr_set_num +gr_set_cur +gr_add_cur +gr_get_info +gr +gr_get_num +gr_new_group +gr_new +handle_req +mktemp +disable_reader +is_file +delete_line +delete_after_cursor +beep +move +move_rel +move_line +delete_chars +insert_over +expand_with_trim +put_expand_no_trim +put_expand +insert_chars_over +insert_chars +putc_raw +putc +redraw_prompt +move_combo +expand_below +below +shell_expand_location +expand_fun +group_opts +list_commands +unknown_group +j +r +h +'?' +switch_cmd +blink +edit_line +jcl +shell_esc +more_chars +activate +new_prompt +ctrl_c +contains_ctrl_g_or_ctrl_c +put_chars_sync +die +enable_reader +chomp +window_size +tty_geometry +get_unicode_state +get_terminal_state +interrupt +switch_loop +ctrl_g +editor_data +editor +handle_signal +open_editor +keep_state +set_unicode_state +keep_state_and_data +reinit +next_state +init_shell +init_local_shell +shell_slogan +init_remote_shell +init_noshell +exit_on_remote_shell_error +handles +init_standard_error +old +next_event +isatty +stdin +state_functions +callback_mode +'tty_sl -c -e' +current_group +whereis_group +start_shell +remsh +initial_shell +oldshell +nouser +noinput +get_user +wait_for_user_p +start_user +relay1 +start_relay +'-inlined-result/4-' +'-receive_response/3-anonymous-0-' +'-reqids_to_list/1-fun-0-' +mcall_map_replies +mcall_abandon +mcall_result +mcall_receive_replies +local_call +mcall_send_requests +mcall_send_request +mcall_local_call +expired +time_left +call_abandon +trim_stack_aux +use_all +nonexisting +call_result +multicast_send_requests +'no global_groups definiton' +illegal_function_call +global_group_not_runnig +not_boolean +'-handle_call/3-inlined-1-' +'-init/1-fun-1-' +'-initial_group_setup/3-fun-0-' +'-initial_group_setup/3-fun-1-' +'-schedule_conf_changed_checks/3-fun-0-' +'-make_group_conf/2-lc$^0/1-0-' +'-disconnect_nodes/2-fun-0-' +'-force_nodedown/2-fun-0-' +force_nodedown +disconnect_nodes +check_exit_ggc +check_exit_where +check_exit_send +not_found_ignored +check_exit_reg +check_exit +safesend_nc +not_own_group +safesend +send_monitor +delete_all +global_group_check_dispatcher +lookup_group_conf +alive_state_change_group_conf +make_group_conf +new_group_conf +fetch_new_group_conf +grp_tuple +'node defined twice' +no_name +config_scan +removing_node_state_of_member_node +node_state +conf_changed_check +handle_erpc_response +schedule_conf_changed_checks +log_sync_error +nodeup_conf_check +continue_handle_info +find_name +registered_names_res +find_name_res +send_res +config_ok +illegal_message +own_group_name +own_group_nodes +synced_nodes +no_contact +other_groups +monitoring +conf_check +gconf +names +names_test +whereis_test +test3844zty +not_agreed +sync_error +agreed +no_conf +'invalid global_groups definition' +initial_group_setup +global_group_check +whereis_name_test +send_test +registered_names_test +ng_add_check +own_nodes +do_start_link +no_epmd +net_sup_dynamic +'-intersect_with/3-fun-0-' +'-merge_with/3-fun-0-' +'-iterator/2-fun-1-' +'-iterator/2-fun-0-' +try_next +is_iterator_valid_1 +is_iterator_valid +error_type_merge_intersect +error_type_two_maps +groups_from_list_2 +groups_from_list_1 +groups_from_list +with_1 +reversed +ordered +filter_1 +to_list_internal +to_list_from_iterator +merge_with_1 +intersect_with_iterate +intersect_with_small_map_first +intersect_with +intersect_combiner_v2 +intersect_combiner_v1 +intersect +'-inlined-get_52/1-' +'-inlined-exsss_next/1-' +'-inlined-exsp_next/1-' +'-inlined-exs1024_next/1-' +'-inlined-exrop_next/1-' +'-exs1024_jump/6-fun-0-' +float2str +make_float +bc64 +normal_fi +format_jumpconst58_value +format_jumcons58_matches +format_jumpconst58 +xorzip_sr +polyjump +splitmix64_next +seed64 +seed58 +seed_nz +seed64_nz +seed58_nz +hash58 +mwc59_seed +mwc59_float +mwc59_value +mwc59_value32 +mwc59 +zero_seed +non_integer_seed +too_many_seed_integers +dummy_seed +dummy_next +dummy_uniform +exrop_jump +exrop_uniform +exrop_next +exrop_seed +exro928_jump_2pow20 +exro928_jump_2pow512 +exro928_jump +exro928ss_uniform +exro928_next_state +exro928_next +exro928ss_next +exro928_seed +exs1024_jump +exs1024_next +exs1024_calc +exs1024_gen1024 +exs1024_seed +exsp_jump +exsplus_jump +exsss_uniform +exsp_uniform +exsss_next +exsp_next +exsss_seed +exsplus_seed +exs64_next +exs64_seed +exsp +exs64 +exs1024s +exs1024 +exrop +exro928ss +dummy +mk_alg +seed_get +seed_put +normal_s +jump +bytes_r +bytes_s +uniform_real_s +uniform_real +uniform_n +uniform_s +exsss +default_seed +seed_s +export_seed_s +rand_seed +export_seed +weak_low_bits +uniform_range +invalid_key +bad_node +ok_pending +nok_pending +already_pending +publish_type +'-merge_opts/2-inlined-0-' +'-monitor_nodes/2-fun-0-' +invalid_option +'-terminate/2-fun-1-' +'-restart_distr/1-fun-0-' +'-split_node/1-fun-0-' +'-setopts_new_1/3-fun-0-' +'-setopts_new_1/3-fun-1-' +'-merge_opts/2-fun-0-' +opts_node +merge_opts +dist_nodelay +inet_dist_listen_options +inet_dist_connect_options +setopts_new_1 +setopts_on_listen +send_owner_request +setopts_new +handle_async_response +return_call +getnode +nformat +fetch +fmt_address +display_info +print_info +restart_ticker +all_atoms +reply_waiting1 +reply_waiting +multi_receive +multi_info +get_nodes_info +get_node_info +net_setuptime +connecttime +set_node +proto_error +register_error +duplicate_name +start_protos_listen +wrap_creation +next_creation +strong_rand_bytes +create_creation +sync_cookie +start_protos_no_listen +start_protos +hidden_argument +dist_listen_argument +epmd_module +childspecs +proto_dist +protocol_childspecs +valid_name_head +validate_hostname +create_hostpart +hostname_not_allowed +create_name +init_node +get_proto_mod +unsupported_address_type +select_mod +setup_check +net_address +setup +spawn_func +bye +aux_ticker1 +aux_ticker +start_aux_ticker +ticker_loop +get_nodes_up_normal +disconnect_ctrlr +do_disconnect +mk_monitor_nodes_error +unknown_options +bad_option_value +check_options +option_value_mismatch +check_opt +restart_distr_do +restart_distr +delete_connection +up_nodedown +up_pending_nodedown +pending_nodedown +delete_ctrlr +delete_owner +get_conn +restarter_exit +ticker_exit +pending_own_exit +dist_ctrlr_exit +conn_own_exit +accept_exit +listen_exit +do_handle_exit +generate_node_name +ensure_node_name +transition_period_end +aux_tick +wait_pending +is_pending +inconsistency +remarked +remark +accept_pending_nok +accept_pending +inserted +registered_send +badcookie +unsupported_protocol +controller +accept_connection +name_type +static +ongoing_change_to +is_auth +change_initiated +tick_change +shorter +longer +not_implemented +no_link +up_pending +do_explicit_connect +dist_auto_connect +do_auto_connect_2 +barred_connection +do_auto_connect_1 +tick +sys_dist +ticker +clean_halt +dist_listen +make_init_opts +nodistribution +name_domain +retry_request_maybe +passive_connect_monitor +hidden_connect_node +connect_node +publish +publish_on_node +ticktime_res +ticktime +get_net_ticktime +new_ticktime +set_net_ticktime +verbose +nodes_info +node_info +nodename +allowed +kernel_apply +'$4' +'-make_node_vsn_list/2-inlined-0-' +'-do_ops/5-inlined-5-' +'-do_ops/5-inlined-2-' +'-delete_lock/2-inlined-0-' +'-register_name/3-fun-0-' +'-check_dupname/2-lc$^0/1-0-' +'-unregister_name/1-fun-0-' +'-re_register_name/3-fun-0-' +'-register_name_external/3-fun-0-' +'-handle_info/2-fun-0-' +'-handle_info/2-fun-1-' +'-delete_node_resources/2-fun-0-' +'-check_replies/3-lc$^0/1-0-' +'-resolved/5-fun-0-' +'-resolved/5-fun-1-' +'-resolved/5-fun-2-' +'-resolved/5-fun-3-' +'-resolved/5-fun-4-' +'-resolved/5-fun-5-' +'-start_resolver/2-fun-0-' +'-do_ops/5-lc$^1/1-1-' +'-do_ops/5-lc$^0/1-0-' +'-do_ops/5-fun-2-' +'-do_ops/5-lc$^3/1-3-' +'-do_ops/5-lc$^4/1-4-' +'-do_ops/5-fun-5-' +'-do_ops/5-lc$^6/1-6-' +'-do_ops/5-fun-7-' +'-sync_others/1-fun-0-' +'-sync_others/1-fun-1-' +'-del_name/2-lc$^1/1-1-' +'-del_name/2-lc$^0/1-0-' +'-init_the_locker_fun/1-fun-0-' +'-exclude_known/2-lc$^0/1-0-' +'-delete_lock/2-fun-0-' +'-pid_locks/1-fun-0-' +'-pid_locks/1-lc$^1/1-1-' +'-gns_volatile_multicast/5-fun-0-' +'-node_list/1-fun-0-' +'-make_node_vsn_list/2-fun-0-' +'-mk_known_list/2-fun-0-' +'-mk_known_list/2-fun-1-' +'-add_to_known/2-fun-0-' +'-send_again/1-fun-0-' +'-start_sync/2-fun-0-' +'-sync_init/2-fun-0-' +'-sync_loop/2-fun-0-' +'-start_the_registrar/0-fun-0-' +allow_tuple_fun +unexpected_message +loop_the_registrar +start_the_registrar +get_own_nodes_with_errors +get_own_nodes +check_sync_nodes +synced +sync_loop +sync_init +start_sync +new_node_name +change_our_node_name +send_again +exsplus +random_sleep +get_names +remove_lost_connection_info +save_lost_connection_info +get_lost_connection_info +mk_known_list +make_node_vsn_list +node_list +node_vsn +is_node_potentially_known +gns_volatile_multicast +gns_volatile_send +inform_connection_loss +removing +handle_nodedown +new_resolver +no_longer_a_pid +handle_nodeup +ref_is_locking +pid_locks +delete_lock +pid_is_locking +unlink_pid +dounlink_ext +dolink_ext +notify_all_name +global_name_conflict +random_notify_name +random_exit_name +minmax +resolve_it +exchange_names +reset_node_state +send_cancel_connect_message +send_cancel_connect +kill_resolver +cancel_locker +split_node +is_node_local +add_node +remove_node2 +remove_node +find_node_tag2 +find_node_tag +the_boss +delete_global_lock +call_fun +wait_cancel_lock +lock_is_set_wait_cancel +lock_is_set_true_received +exclude_known +random_element +update_locker_known +locker_failed +locker_succeeded +lock_rejected +locker_trace +delete_nonode +lock_nodes_safely +locker_lock_id +send_lock_set +select_node +get_locker +get_state_reply +remove_from_known +do_trace +no_fun +him +the_locker_message_wait_cancel +the_locker_message +loop_the_locker +init_the_locker_fun +start_the_locker +delete_global_name +delete_global_name2 +delete_global_name_keep_pid +del_name +extra_info +lock_still_set +insert_global_name +sync_other +global_connect_retries +sync_others +do_ops +rem_lock +remove_lock +handle_del_lock +is_lock_set +is_global_lock_set +ins_lock +insert_lock +can_set_lock +handle_set_lock +ins_name_ext +ins_name +resend_pre_connect +resolver +start_resolver +do_whereis +cancel_resolved_locker +ops +added +add_to_known +lock +resolve +wait_lock +lock_id +restart_connect +pre_connect +his_the_locker +locker +prot_vsn +check_replies +local_lock_check +set_lock_on_nodes +lock_on_known_nodes +set_lock_known +send_high_level_trace +wait_high_level_trace +delete_node_resources +delete_node_resource_info +save_node_resource_info +nodes_changed +high_level_trace +extra_nodedown +registrar_died +locker_died +not_connected +group_configured +trace_message +group_nodeup +group_nodedown +cancel_connect +init_connect_ack +ignore_node +remove_connection +async_disconnect +participant +lost_connection +in_sync +async_del_name +async_del_lock +lock_is_set +init_connect +sync_tag_his +exit_resolver +lock_set +exchange_ops +new_nodes +save_ops +sync_tag_my +resolved +high_level_trace_stop +high_level_trace_start +high_level_trace_get +get_synced +get_protocol_version +get_names_ext +get_known +trans_all_known +register_ext +creation_extension +uniform +seed +conf +invalid_parameter_value +connect_all +no_trace +global_node_resources +global_lost_connections +global_pid_ids +global_names_ext +global_locks +aborted +trans +del_lock +set_lock +unregister_name_external +register_name_external +global_names +registered_names +re_register_name +global_multi_name_action +global_pid_names +check_dupname +registrar +execute_cast +'-handle_cast/2-fun-0-' +'-proxy_user/0-fun-0-' +'-start_nodes_observer/0-fun-0-' +rex_nodes_observer +'-start_nodes_observer/0-fun-1-' +'-do_srv_call/3-fun-0-' +'-eval_everywhere/4-fun-0-' +'-parallel_eval/1-lc$^0/1-0-' +'-cnode_call_group_leader_start/1-fun-0-' +cnode_call_group_leader_start +cnode_call_group_leader_state +cnode_call_group_leader_init +rex_stdout +cnode_call_group_leader_put_chars +cnode_call_group_leader_multi_request +cnode_call_group_leader_request +cnode_call_group_leader_loop +pinfo +build_args +pmap +map_nodes +parallel_eval +no_response +response +nb_yield +async_call +rec_nodes +multi_server_call +rpcmulticallify +multicall +send_nodes +eval_everywhere +rpc_check +rpc_check_t +do_srv_call +signal +exception +rpcify_exception +nodes_observer_loop +start_nodes_observer +proxy_user_flush +proxy_user_loop +rex_proxy_user +proxy_user +set_group_leader +trim_stack +is_arg_error +execute_call +features_reply +features_request +nonexisting_name +sbcast +send_stdout_to_caller +block_call +nodes_observer +'-services/2-fun-0-' +'-rpc/2-fun-0-' +'-hosts/2-fun-0-' +'-resolv/2-fun-0-' +'-host_conf_linux/2-fun-0-' +'-host_conf_freebsd/2-fun-0-' +'-host_conf_bsdos/2-fun-0-' +'-nsswitch_conf/2-fun-0-' +'-protocols/2-fun-0-' +'-netmasks/2-fun-0-' +'-networks/2-fun-0-' +split_mid_comma +split_comma +split_end +split_mid +dig_to_hex +dig_to_dec +separate +ntoa_done +hex_to_int +dec16 +hex +ipv6_addr_done +ipv6_addr_scope +ipv6_addr +ipv4_field +ipv4strict_addr +strip0 +is_dom2 +is_dom_ldh +is_dom1 +port_proto +parse_cs +parse_fd +networks +netmasks +delete_options +noname +services +eafnosupport +'-setopts/2-lc$^0/1-0-' +'-getopts/2-lc$^0/1-0-' +'-getifaddrs/1-fun-0-' +'-getifaddrs/0-fun-0-' +'-getiflist/1-fun-0-' +'-getiflist/0-fun-0-' +'-ifget/2-fun-0-' +'-ifget/2-fun-1-' +'-ifset/2-fun-0-' +'-ifset/2-fun-1-' +'-getif/0-fun-0-' +'-getif/1-fun-0-' +'-getif/1-fun-1-' +'-gethostname/0-fun-0-' +'-bindx/3-lc$^1/1-1-' +'-ii/3-fun-0-' +'-ii/3-lc$^1/1-0-' +'-ii/3-fun-2-' +'-info_lines/3-lc$^0/1-0-' +'-i_line/3-lc$^0/1-0-' +'-h_line/1-lc$^0/1-0-' +'-port_list/1-fun-0-' +ensure_sockaddr +lock_socket +udp_sync_input +tcp_sync_input +tcp_controlling_process +tcp_close +exbadseq +exbadport +port_list +sctp_sockets +udp_sockets +tcp_sockets +fmt_port +enotconn +fmt_addr +fmt_status3 +fmt_status2 +fmt_compat_status_merge +fmt_compat_status +fmt_status +which_packet_type +sent +local_address +foreign_address +upper +hh_field +h_field +h_line +i_line +info_lines +smax +ii +change_bindx_0_port +set_bindx_port +open_setopts +open_opts +open_fd +gethostbyaddr_tm_native +gethostbyaddr_self +gethostbyname_string +gethostbyname_self +gethostbyname_tm_native +formerr +wins +getaddrs_tm +binary2filename +filename2binary +add_opt +sctp_opt_ifaddr +sctp_opt +sctp_opts +sctp_options +gen_udp_module +udp_module_1 +udp_add +udp_opt +gen_tcp_module +tcp_module_1 +list_add +backlog +list_opt +listen_opts +inet_default_listen_options +listen_options +con_add +ifaddr +con_opt +connect_opts +inet_default_connect_options +connect_options +stats +ipv4_mapped_ipv6_address +strict_address +parse_strict_address +ipv6strict_address +parse_ipv6strict_address +ipv4strict_address +parse_ipv4strict_address +ipv6_address +parse_ipv6_address +parse_ipv4_address +getaddrs +getaddr_tm +getll +is_ip_address +is_ipv6_address +is_ipv4_address +pi_replace +states +socket_to_list +gethostbyaddr_tm +nostring +gethostbyname_tm +popf +pushf +withsocket +getif +udp_closed +optuniquify +udp_controlling_process +udp_close +open_bind +udp_opts +translate_ip +getaddr +getserv +bad_encoding +on +'-init/0-inlined-0-' +'-set_hostname/1-fun-0-' +'-load_hosts/2-fun-0-' +'-win32_load1/3-fun-0-' +'-win32_load1/3-fun-1-' +scan_inetrc +parse_inetrc_skip_line +parse_inetrc +inet_warnings +try_get_rc +inetrc +read_inetrc +valid_type +extract_cfg_files1 +extract_cfg_files +read_rc +win32_get_strings +split_line +win32_split_line +win32_load1 +change_key +nt +win32_load_from_registry +load_hosts +load_resolv +set_search_dom +inet_dns_when_nis +add_dns_lookup +host_conf_bsdos +host_conf_freebsd +host_conf_linux +nsswitch_conf +sunos +netbsd +freebsd +'bsd/os' +do_load_resolv +nonames +shortnames +sname +erl_dist_mode +gethostbyname +'-add_hosts/1-fun-0-' +'-res_cache_answer/1-lc$^0/1-0-' +'-res_filter_rrs/2-lc$^0/1-0-' +'-res_lookup_fun/1-lc$^0/1-0-' +'-res_lookup_fun/1-fun-1-' +'-handle_call/3-lc$^2/1-0-' +chars +'-do_add_host/5-lc$^0/1-0-' +'-do_add_host/5-fun-1-' +'-do_add_host/5-lc$^3/1-1-' +'-do_add_host/5-lc$^2/1-2-' +'-do_del_host/3-lc$^0/1-0-' +'-add_ip_bynms/5-fun-0-' +'-del_ip_bynms/4-fun-0-' +'-load_hosts_list/3-lc$^0/1-0-' +'-load_hosts_list/3-lc$^1/1-1-' +'-rc_opt_req/1-lc$^0/1-0-' +'-do_add_rrs/4-lc$^1/1-1-' +'-do_add_rrs/4-lc$^0/1-0-' +'-lookup_cache_data/2-lc$^0/1-0-' +'-match_rr/6-lc$^0/1-0-' +'-match_rr/6-lc$^1/1-1-' +'-lists_subtract/2-fun-0-' +handle_take_socket_type +handle_put_socket_type +lists_nth +lists_keydelete +lists_subtract +lists_delete +delete_oldest +alloc_entry +delete_expired +stop_timer +init_timer +stripdot_1 +stripdot +eq_domains +rfc_4343_lc +tolower +match_rr +lookup_cache_data +times +do_add_rrs +is_reqname +is_res_set +set_socks_methods +rc_reqname +clear_search +clear_ns +replace_search +replace_ns +rc_opt_req +handle_calls +handle_rc_list +ets_clean_map_keys +load_hosts_list_byname +load_hosts_list_byaddr +load_hosts_list +inet_family +del_ip_bynms +add_ip_bynms +do_del_host +do_add_host +handle_update_file +handle_set_file +refresh_timeout +set_resolv_conf_tm +set_hosts_file_tm +load_hosts_file +res_hosts_file_info +res_resolv_conf_info +listreplace +reset_db +inet_sockets +inet_hosts_file_byname +inet_hosts_byname +inet_cache +inet_backend +take_socket_type +put_socket_type +lookup_socket +unregister_socket +nxdomain +ent_gethostbyaddr +res_gethostbyaddr +ptr +gethostbyaddr +cname +resolve_cnames +res_lookup_fun +res_filter_rrs +hostent +aaaa +make_hostent +dns_rec +res_hostent_by_domain +hostent_by_domain +get_searchlist +getbysearch +dots +getbyname +add_rrs +res_cache_answer +del_rr +dns_rr +add_rr +db_get +res_update +res_hosts_file_tm +res_update_hosts +res_resolv_conf_tm +res_update_conf +hostname +noproxy +methods +socks_option +res_check_search +res_check_ns +res_check_list +res_check_option_absfile +visible_string +res_check_option +res_dnssec_ok +res_recurse +resolv_conf_name +nameserver +hosts_file_name +alt_nameserver +res_optname +res_set +res_id +next_id +res_option +get_rc_hosts +get_rc_ns +get_rc_noproxy +res_alt_ns +cache_refresh_interval +res_res_dnssec_ok +res_domain +res_edns +inet_hosts_byaddr +res_hosts_file +res_inet6 +res_lookup +res_ns +res_resolv_conf +res_retry +res_search +res_servfail_retry_timeout +res_timeout +res_udp_payload_size +res_usevc +socks5_server +socks5_port +socks5_noproxy +socks5_methods +cache_size +cache_refresh +get_rc +valid_lookup +dns +nis +nisplus +yp +translate_lookup +add_rc_list +add_rc_bin +add_rc +sctp_module +set_sctp_module +udp_module +set_udp_module +tcp_module +set_tcp_module +set_cache_refresh +set_cache_size +del_socks_noproxy +add_socks_noproxy +del_socks_methods +add_socks_methods +set_socks_port +set_socks_server +inet_hosts_file_byaddr +get_hosts_file +hosts_file +set_hosts_file +resolv_conf +set_resolv_conf +dnssec_ok +set_dnssec_ok +udp_payload_size +set_udp_payload_size +edns +set_edns +usevc +set_usevc +set_inet6 +servfail_retry_timeout +set_servfail_retry_timeout +retry +set_retry +set_timeout +recurse +set_recurse +set_lookup +set_domain +set_hostname +del_search +ins_search +add_search +del_alt_ns +ins_alt_ns +alt_nameservers +add_alt_ns +del_ns +ins +ins_ns +nameservers +listop +add_ns +clear_hosts +del_host +add_host +add_hosts +resolv +add_resolv +badcall +format_child_log_error_single +format_child_log_progress_single +terminate_pid +no_stderror +standard_error_sup +'-start_port/1-fun-0-' +'-do_setopts/1-fun-0-' +'-wrap_characters_to_binary/3-lc$^0/1-0-' +wrap_characters_to_binary +send_port +put_port +io_requests +rows +columns +get_geometry +do_io_request +get_fd_geometry +onlcr +server +start_port +beam_flatten +beam_ssa_recv +beam_types +beam_listing +v3_core +beam_ssa_lint +core_scan +sys_messages +beam_ssa_check +beam_ssa_codegen +beam_ssa_dead +beam_a +beam_call_types +sys_core_prepare +beam_validator +beam_bounds +beam_digraph +beam_ssa_type +beam_ssa_bc_size +core_lint +beam_block +core_pp +beam_ssa_bsm +beam_ssa_throw +beam_ssa_alias +beam_kernel_to_ssa +beam_dict +sys_pre_attributes +core_lib +cerl_trees +sys_core_fold +beam_ssa_opt +v3_kernel +sys_core_fold_lists +beam_ssa_private_append +erl_bifs +beam_ssa_pre_codegen +beam_ssa_share +beam_ssa_bool +rec_env +beam_clean +beam_ssa +sys_core_alias +cerl_clauses +cerl_inline +sys_core_bsm +sys_core_inline +cerl +beam_utils +beam_opcodes +beam_jump +v3_kernel_pp +beam_ssa_pp +beam_trim +core_parse +beam_disasm +beam_z +beam_asm +rejected_ftr +permanent_ftr +until +while +experimental_ftr_2 +ifn +experimental_ftr_1 +unless +approved_ftr_2 +approved_ftr_1 +init_done +maybe_expr +'-init_features/0-inlined-3-' +'-init_features/0-inlined-2-' +'-configurable/0-lc$^0/1-0-' +'-long/1-lc$^0/1-0-' +'-long/1-lc$^1/1-1-' +'-history/2-fun-0-' +'-history/2-fun-1-' +'-nqTeX/1-fun-0-' +'-keyword_fun/2-fun-0-' +'-add_feature_fun/2-fun-0-' +'-remove_feature_fun/2-fun-0-' +'-feature_error/1-fun-0-' +'-feature_error/1-fun-1-' +'-format_error/1-F/1-0-' +'-init_features/0-fun-0-' +'enable-feature' +'disable-feature' +'-init_features/0-fun-1-' +'-init_features/0-fun-2-' +'-init_features/0-fun-3-' +'-init_features/0-fun-4-' +'-init_features/0-fun-5-' +'-collect_features/1-lc$^0/1-0-' +test_features +add_ftr +feature +collect_features +features_in +set_keywords +enabled_features +ensure_init +init_specs +init_features +incorrect_features +feature_error +configurable_features +remove_features_fun +add_features_fun +remove_feature_fun +add_feature_fun +invalid_features +not_configurable +enable +disable +keyword_fun +invalid_feature +adjust +nqTeX +rejected +experimental +approved +history +long +is_configurable +is_valid +feature_specs +'-characters_to_binary_int/3-fun-0-' +'-i_trans/1-fun-0-' +'-i_trans_chk/1-fun-0-' +'-o_trans/1-fun-7-' +'-o_trans/1-fun-8-' +'-o_trans/1-fun-3-' +'-o_trans/1-fun-4-' +'-o_trans/1-fun-1-' +'-o_trans/1-fun-2-' +'-o_trans/1-fun-0-' +'-o_trans/1-fun-9-' +'-o_trans/1-fun-10-' +'-o_trans/1-fun-5-' +'-o_trans/1-fun-6-' +error_type +do_i_utf32_little +do_i_utf32_big +do_i_utf16_little +do_i_utf16_big +do_i_utf8 +do_i_utf32_little_chk +do_i_utf32_big_chk +do_i_utf16_little_chk +do_i_utf16_big_chk +do_i_utf8_chk +do_o_binary2 +do_o_binary +o_trans +i_trans_chk +i_trans +ml_map +fake_stacktrace +do_characters_to_list +prepend_row_to_acc +acc_to_binary +characters_to_nfkc_binary +nfkc +characters_to_nfkc_list +characters_to_nfc_binary +nfc +characters_to_nfkd_binary +nfkd +characters_to_nfkd_list +characters_to_nfd_binary +nfd +characters_to_nfd_list +encoding_to_bom +bom_to_encoding +no_conversion_needed +'-getenv/0-lc$^0/1-0-' +flush_exit +flush_until_down +validate3 +validate2 +validate1 +mk_cmd +get_option +max_size +do_cmd +cmd +extensions +reverse_element +split_path +can_be_full_name +verify_executable +find_executable1 +iterator_1_from +iterator_1 +take_1 +take_any +from_orddict +enter +update_1 +get_1 +is_defined_1 +lookup_1 +fold_1 +is_set +is_subset_2 +is_subset_1 +is_subset +difference_2 +difference_1 +difference +is_disjoint_1 +is_disjoint +intersection_list +intersection_2 +intersection_1 +union_list +balance_revlist_1 +balance_revlist +push +union_2 +union_1 +mk_set +iterator_from +to_list_1 +largest_1 +largest +take_largest1 +take_largest +smallest_1 +smallest +take_smallest1 +take_smallest +delete_1 +delete_any +del_element +from_ordset +balance_list_1 +balance_list +balance +key_exists +insert_1 +is_member_1 +singleton +nonono +'-encode_hex1/2-lbc$^0/2-0-' +'-decode_hex1/1-lbc$^0/2-0-' +decode_hex2 +decode_hex1 +decode_hex +encode_hex2 +encode_hex1 +lowercase +uppercase +encode_hex +insert_replaced +get_opts_replace +splitat +do_insert +do_replace +bin_to_list +no_debug_info +'-md5/1-lc$^0/1-0-' +'-diff_directories/2-fun-0-' +'-beam_files/1-lc$^0/1-0-' +'-strip_fils/2-lc$^0/1-0-' +'-read_all_but_useless_chunks/1-lc$^0/1-0-' +'-read_all_chunks/1-lc$^0/1-0-' +'-scan_beam/4-lc$^0/1-0-' +'-attributes/2-fun-0-' +'-attributes/2-lc$^1/1-0-' +'-anno_from_forms/1-lc$^0/1-0-' +'-try_load_crypto_fun/1-fun-0-' +'-try_load_crypto_fun/1-fun-1-' +alt_lookup_key +try_load_crypto_fun +f_p_s +crypto_key_fun_from_file_1 +crypto_key_fun_from_file +call_crypto_server_1 +beam_lib__crypto_key_server +call_crypto_server +get_crypto_key +start_crypto +restore_typed_record_fields +anno_from_forms +abstract_v2 +abstract_v1 +old_anno_from_term +crypto_one_time +crypto +des_ede3_cbc +decrypt_chunk +mandatory_chunks +md5_chunks +significant_chunks +assert_directory +maybe_uncompress +beam_filename +read_all +bb +extract_atom +extract_atoms +ensure_atoms +symbol +symbols1 +symbols +locals +labeled_locals +labeled_exports +indexed_imports +imports +chunk_name_to_id +compile_info +chunk_to_data +erlang_v1 +debug_info_v1 +atom_chunk +abst_chunk +chunks_to_data +del_chunk +get_data +get_atom_data +scan_beam2 +scan_beam1 +scan_beam +atoms +check_chunks +beam_symbols +allow_missing_chunks +read_chunk_data +read_all_chunks +filter_funtab_1 +filter_funtab +filter_significant_chunks +read_significant_chunks +is_useless_chunk +read_all_but_useless_chunks +build_chunks +strip_file +strip_fils +strip_rel +cmp_lists +cmp_files +wildcard +beam_files +compare_files +restriction +image +symmetric_partition +compare_dirs +diff_only +diff_directories +read_info +build_module +des3_cbc +make_crypto_key +clear_crypto_key_fun +crypto_key_fun +exists +different_chunks +not_a_directory +not_a_beam_file +chunks_different +unknown_chunk +modules_different +missing_backend +key_missing_or_invalid +invalid_chunk +invalid_beam_file +chunk_too_big +strip_release +strip_files +strip +diff_dirs +cmp_dirs +cmp +all_chunks +ignored +cannot_detach_with_standard_io +'-init/1-fun-0-' +'-verify_args/1-lc$^0/1-0-' +'-verify_args/1-lc$^1/1-1-' +'-encode_port_data/1-lbc$^0/2-0-' +'-maybe_listen/1-lc$^0/1-0-' +'-maybe_listen/1-lc$^1/1-1-' +ntoa +'-command_line/2-lc$^0/1-0-' +'-parse_args/1-lc$^0/1-0-' +'-start_peer_channel_handler/0-fun-3-' +'-start_peer_channel_handler/0-lc$^5/1-2-' +'-start_peer_channel_handler/0-fun-4-' +parse_address +'-start_peer_channel_handler/0-lc$^0/1-0-' +'-start_peer_channel_handler/0-fun-1-' +'-start_peer_channel_handler/0-lc$^2/1-1-' +'-handle_peer_alternative/3-fun-0-' +'-do_call/4-fun-0-' +handle_port_alternative +handle_peer_alternative +io_server_loop +loop_connect +tcp_init +io_server +origin_link +relay +peer_detached +start_peer_channel_handler +peer_channel_terminated +loop_supervision +peer_supervision_connect_timeout +peer_sup_connect_channel +peer_channel_connect_timeout +peer_sup_state +channel_connect +peer_supervision +start_orphan_supervision +init_supervision +start_supervision +notify_started +default_erts +unquote +parse_args +maybe_otp_test_suite +find_executable +encode_to_string +command_line +longnames +name_arg +prefer_localhost +maybe_listen +boot_complete +handle_port_binary +decode_port_data +encode_port_data +peer_to_origin +origin_to_peer +forward_request +handle_alternative_data +peer_down +maybe_stop +node_name +boot_failed +wait_boot +make_notify_ref +invalid_arg +not_alive +detached +char_list +exec +verify_args +force_disconnect_node +wait_disconnected +deadline +register_socket +get_node +cover +booting +peer_state +connection +post_process_args +get_state +random_name +'-compact/1-lc$^0/1-0-' +'-substitute_aliases/2-lc$^0/1-0-' +'-substitute_negations/2-lc$^0/1-0-' +'-expand/2-lc$^0/1-0-' +'-split/2-lc$^0/1-0-' +'-split/2-lc$^1/1-1-' +'-to_map/1-fun-0-' +from_map +to_map +negations +aliases +apply_stages +key_uniq_1 +key_uniq +expand_3 +expand_2 +expand_1 +expand_0 +expand +substitute_negations_1 +substitute_aliases_1 +substitute_aliases +get_bool +append_values +get_all_values +lookup_all +property +lait +liat +daeh +snoc +tail +delete_with_rear +delete_with_front +delete_with_r +delete_with +delete_rear +delete_front +delete_r +filtermap_r +filter_r +filter_f +split_r1_to_f2 +split_f1_to_r2 +drop_r +peek_r +get_r +out_r +in_r +is_empty +is_queue +'-set_restart_flag/1-fun-0-' +reply_return +noreply_return +'$no_default_return' +try_callback_call +maybe_notify_mode_change +set_mode +overload_levels_ok +flush_load +kill_if_choked +limit_burst +check_load +reset_restart_flag +set_restart_flag +overload_kill_qlen +overload_kill_mem_size +overload_kill_enable +burst_limit_window_time +burst_limit_max_count +do_check_opts +invalid_olp_levels +invalid_olp_config +check_opts +do_load +apply_after +overload_kill_restart_after +reset_state +mode_ref +last_qlen +last_load_ts +cb_state +burst_win_ts +burst_msg_count +olp_ref +result +restart_failed +get_opts +'$olp_load' +log_failed +try_log +flushed +drop +mode_change +overloaded +handle_load +get_ref +system_logger +sync_mode_qlen +flush_qlen +drop_mode_qlen +burst_limit_enable +get_default_opts +child_spec +no_state +get_pid +'-limit_report/2-lc$^0/1-0-' +'-format_log_multi/2-fun-0-' +'-format_log_state/2-lc$^0/1-0-' +format_log_state +format_client_log +format_client_log_single +format_server_log_single +limit_client_report +dead +client_stacktrace +client_info +catch_result +handle_common_reply +try_terminate +try_handle_call +try_handle_cast +try_handle_info +handle_continue +try_handle_continue +try_dispatch +do_send +create_callback_cache +callback_cache +mc_cancel_timer +mc_recv_tmo +mc_recv +mc_send +multi_call +do_abcast +abcast +'$gen_cast' +cast_msg +do_cast +'$gen_call' +'-inlined-level_to_int/1-' +'-set/3-lc$^0/1-0-' +'-set_module_level/2-lc$^0/1-0-' +'-unset_module_level/1-lc$^0/1-1-' +'-unset_module_level/1-lc$^1/1-0-' +'-get_module_level/0-lc$^0/1-0-' +'$handler_config$' +'$primary_config$' +'$proxy_config$' +table_key +int_to_level +less_or_equal_level +on_match +filter_remote_gl +filter_progress +filter_level +filter_domain +neq +lteq +gteq +not_equal +equal +simple_handler_process_dead +handler_process_name_already_exists +'-adding_handler/1-fun-0-' +'-replay_buffer/1-F/1-0-' +'-do_log/2-fun-0-' +'-display/1-lc$^0/1-0-' +'-display_report/1-fun-0-' +'-display_report/1-fun-1-' +display_report +display_date +display_log +drop_msg +replay_buffer +dropped +buffer_size +update_buffer +rich +no_log_file +allready_have_logfile +'-tty/1-fun-0-' +error_logger_format_depth +error_logger_tty_true +error_logger_tty_false +logfile +which_report_handlers +delete_report_handler +add_report_handler +scan_format +report_to_format +maybe_add_domain +get_report_cb +std_warning +fix_warning_type +fix_warning_tag +maybe_map_warnings +register_handler +stop_error +report_problem +send_shutdown +check_callback +check_system +get_heart_cmd +send_heart_cmd +send_heart_beat +do_cycle_port_program +check_schedulers +validate_options +no_reboot_shutdown +port_terminated +bad_cmd +bad_options +wait_ack +bad_heart_flag +check_start_heart +get_heart_timeouts +port_problem +start_portprogram +wait +cycle +get_options +set_options +clear_callback +get_callback +set_callback +clear_cmd +get_cmd +set_cmd +no_heart +wait_for_init_ack +bad_name +bad_directory +'-try_finish_module_2/5-inlined-0-' +'-start_link/1-fun-0-' +'-init/3-fun-0-' +'-init/3-lc$^1/1-0-' +'-get_user_lib_dirs_1/1-lc$^0/1-0-' +'-handle_call/3-lc$^1/1-1-' +'-handle_call/3-lc$^0/1-0-' +'-choose_bundles/1-lc$^0/1-0-' +'-choose_bundles/1-lc$^1/1-1-' +'-vsn_to_num/1-lc$^0/1-0-' +'-is_numstr/1-fun-0-' +'-cache_path/1-lc$^0/1-0-' +'-exclude/2-lc$^0/1-0-' +'-set_path/5-lc$^0/1-0-' +'-try_archive_subdirs/3-fun-0-' +'-stick_dir/3-fun-1-' +'-stick_dir/3-fun-0-' +'-try_finish_module/6-fun-1-' +'-try_finish_module/6-fun-0-' +on_load_failure +'-try_finish_module_2/5-fun-0-' +'-finish_loading/3-fun-3-' +'-finish_loading/3-fun-2-' +'-finish_loading/3-fun-1-' +'-finish_loading/3-fun-0-' +'-finish_loading_ensure/2-lc$^0/1-0-' +pending_on_load +'-abort_if_pending_on_load/2-lc$^0/1-0-' +sticky_directory +'-abort_if_sticky/2-lc$^0/1-0-' +'-do_finish_loading/2-lc$^0/1-0-' +'-do_finish_loading/2-lc$^1/1-2-' +'-do_finish_loading/2-lc$^2/1-1-' +'-handle_on_load/5-fun-0-' +'-finish_on_load/3-lc$^0/1-0-' +'-finish_on_load_report/2-fun-0-' +finish_on_load_report +finish_on_load_2 +finish_on_load_1 +finish_on_load +handle_pending_on_load_1 +handle_pending_on_load +handle_on_load +do_finish_loading +abort_if_sticky +abort_if_pending_on_load +finish_loading_ensure +with_cache +mod_to_bin +try_finish_module_2 +try_finish_module_1 +try_finish_module +get_mods +sticky +'bad request to code' +priv +do_dir +lookup_name +delete_name_dir +delete_name +replace_name +del_ebin_1 +del_ebin +check_pars +replace_path1 +insert_old_shadowed +del_path1 +try_archive_subdirs +archive_subdirs +do_insert_name +insert_name +insert_dir +init_namedb +code_names +create_namedb +maybe_update +do_add +do_check_path +check_path +split_base +discard_after_hyphen +get_name_from_splitted +get_name +get_arg +add_pa_pz +merge_path1 +merge_path +strip_path +exclude_pa_pz +cache_boot_paths +do_cache_path +cache_path +'-zip/3-lc$^0/1-1-' +'-zip/3-lc$^1/1-0-' +add_loader_path +try_ebin_dirs +'-zip3/4-lc$^0/1-2-' +'-zip3/4-lc$^1/1-1-' +'-zip3/4-lc$^2/1-0-' +choose +'-zipwith/4-lc$^0/1-1-' +'-zipwith/4-lc$^1/1-0-' +split2 +'-zipwith3/5-lc$^0/1-2-' +split1 +'-zipwith3/5-lc$^1/1-1-' +'-zipwith3/5-lc$^2/1-0-' +'-filter/2-lc$^0/1-0-' +is_numstr +is_vsn +vsn_to_num +create_bundle +uniq_2 +choose_bundles +uniq_1 +rufmerge2_2 +rufmerge2_1 +ufmerge2_2 +ufmerge2_1 +rufmergel +ufmergel +ufsplit_2 +ufsplit_1_1 +ufsplit_1 +rfmerge2_2 +rfmerge2_1 +fmerge2_2 +unknown_system_msg +fmerge2_1 +change_code +rfmergel +fmergel +fsplit_2_1 +fsplit_2 +fsplit_1_1 +do_sys_cmd +suspend_loop +fsplit_1 +gen_reply +rukeymerge2_2 +rukeymerge2_1 +ukeymerge2_2 +code_call +split_paths +get_user_lib_dirs_1 +get_user_lib_dirs +ukeymerge2_1 +rukeymerge3_21_3 +rukeymerge3_12_3 +rukeymerge3_2 +rukeymerge3_1 +ukeymerge3_21_3 +ukeymerge3_12_3 +ukeymerge3_2 +ukeymerge3_1 +rukeymergel +ukeymergel +ukeysplit_2 +ukeysplit_1_1 +ukeysplit_1 +rkeymerge2_2 +rkeymerge2_1 +keymerge2_2 +keymerge2_1 +rkeymerge3_21_3 +rkeymerge3_12_3 +rkeymerge3_2 +rkeymerge3_1 +keymerge3_21_3 +keymerge3_12_3 +keymerge3_2 +keymerge3_1 +rkeymergel +keymergel +keysplit_2_1 +keysplit_2 +keysplit_1_1 +keysplit_1 +rumerge2_2 +rumerge2_1 +umerge2_2 +umerge2_1 +rumerge3_21_3 +rumerge3_12_3 +rumerge3_2 +rumerge3_1 +umerge3_21_3 +umerge3_12_3 +umerge3_2 +umerge3_1 +rumergel +umergel +usplit_2_1 +desc +usplit_2 +usplit_1_1 +asc +usplit_1 +rmerge2_2 +rmerge2_1 +merge2_2 +merge2_1 +rmerge3_21_3 +rmerge3_12_3 +rmerge3_2 +rmerge3_1 +merge3_21_3 +merge3_12_3 +merge3_2 +merge3_1 +rmergel +mergel +split_2_1 +split_2 +split_1_1 +split_1 +join_prepend +splitwith_1 +search_1 +dropwhile_1 +takewhile_1 +mapfoldr_1 +mapfoldr +mapfoldl_1 +foreach_1 +filtermap_1 +filtermap +partition_1 +foldr_1 +foldl_1 +flatmap_1 +map_1 +any_1 +all_1 +rumerge3 +umerge3 +rumerge_1 +rumerge +umerge_1 +usort_1 +rmerge_1 +merge_1 +enumerate_1 +enumerate +keymap +rukeymerge_1 +rukeymerge +ukeymerge_1 +ukeymerge +ukeysort_1 +ukeysort +rkeymerge_1 +rkeymerge +keymerge_1 +keymerge +keysort_1 +keystore2 +keyreplace3 +keydelete3 +flatlength +thing_to_list +rmerge +rmerge3 +merge3 +sort_1 +zipwith3 +zipwith +unzip3 +zip3 +pad +sublist_2 +sublist +sum +seq_loop +seq +droplast +suffix +prefix +nthtail_1 +nth_1 +module_not_found +'-format_status/2-inlined-0-' +'-do_unlink/2-fun-0-' +parent_terminated +'-terminate_supervised/4-fun-0-' +'-system_code_change/4-fun-0-' +'-system_get_state/1-lc$^0/1-0-' +'-system_replace_state/2-lc$^0/1-0-' +'-report_error/5-fun-0-' +'-report_error/5-fun-1-' +'-report_error/5-fun-2-' +'-the_handlers/1-lc$^0/1-0-' +'-get_modules/1-lc$^0/1-0-' +'-format_status/2-fun-0-' +items +get_log +stop_handlers +the_handlers +'function not exported' +'module could not be loaded' +fix_reason +no_handle_info +last_message +report_error +gen_event_EXIT +report_terminate +server_call_update +server_call +new_handler +do_swap +server_update +server_notify +swapped +split_and_terminate +s_s_h +server_swap_handler +server_delete_handler +server_add_sup_handler +server_add_handler +print_event +system_replace_state +system_get_state +system_code_change +system_terminate +system_continue +terminate_supervised +do_unlink +terminate_server +handle_event +handle_debug +handle_system_msg +decode_msg +fetch_msg +wake_hib +call1 +which_handlers +swap_sup_handler +swap_handler +delete_handler +sync_notify +add_sup_handler +nolink +'no callback module' +'-terminate/2-lc$^0/1-0-' +'-kill_children/1-fun-0-' +exit_after +set_timer +kill_all_procs_1 +kill_all_procs +kill_children +terminate_child_i +get_child_i +prep_stop +loop_it +start_supervisor +start_the_app +start_it_new +start_it_old +bad_keys +relay_to_group_leader +terminate_loop +main_loop +init_loop +legacy_header +'-get_handler_config/0-lc$^0/1-0-' +'-get_module_level/1-lc$^0/1-0-' +'-print_filters/3-lc$^0/1-0-' +'-print_handlers/2-lc$^0/1-0-' +'-print_custom/3-lc$^0/1-0-' +'-print_module_levels/2-lc$^0/1-0-' +'-reconfigure/0-lc$^0/1-0-' +'-internal_init_logger/0-lc$^0/1-0-' +'-internal_init_logger/0-lc$^1/1-1-' +'-add_handlers/2-fun-0-' +'-get_primary_filters/1-lc$^0/1-0-' +'-get_primary_filters/1-fun-1-' +'-get_proxy_opts/1-lc$^0/1-0-' +proc_meta +log_remote +deatomize +tid +do_log_allowed +log_fun_allowed +do_log +get_logger_env +get_default_handler_filters +standard_io +init_default_config +multiple_proxies +get_proxy_opts +multiple_filters +get_primary_filters +get_primary_filter_default +logger_default_metadata +logger_metadata +get_primary_metadata +get_logger_level +tty +get_logger_type +module_level +check_logger_config +setup_handler +bad_proxy_config +init_kernel_handlers +bad_config +reconfigure +print_module_levels +print_custom +print_handlers +print_filters +i_modules +i_proxy +i_handlers +i_primary +module_levels +get_config +unset_process_metadata +get_process_metadata +update_process_metadata +'$logger_metadata$' +set_process_metadata +lt +gt +level_to_int +eq +compare_levels +get_module_level +unset_application_level +set_application_level +get_proxy_config +get_handler_ids +filter_config +get_handler_config +get_primary_config +update_proxy_config +update_handler_config +update_primary_config +set_proxy_config +set_handler_config +set_primary_config +remove_handler_filter +remove_primary_filter +add_handler_filter +add_primary_filter +printable_unicode_list +string_p1 +string_p +format_term_list +format_otp_report +distribution_not_changed +kernel_safe_sup +global_groups +is_gg_changed +global_groups_added +global_groups_removed +global_groups_changed +do_global_groups_change +is_dist_changed +distribution_changed +do_distribution_change +start_compile_server +start_pg +start_disk_log +boot_server_slaves +get_boot_args +start_boot_server +start_dist_ac +start_distribution +supervision_child_spec +add_handlers +internal_init_logger +'-build_typed_attribute/2-fun-0-' +'-build_typed_attribute/2-fun-1-' +'-attribute_farity_list/1-lc$^0/1-0-' +'-attribute_farity_map/1-lc$^0/1-0-' +'-check_clauses/3-lc$^0/1-0-' +'-first_anno/1-fun-0-' +'-last_anno/1-fun-0-' +'-enc_func/1-fun-2-' +'-enc_func/1-fun-1-' +'-enc_func/1-fun-0-' +'-abstract/3-lc$^0/1-0-' +'-abstract_map_fields/3-lc$^0/1-0-' +'-map_anno/2-fun-0-' +'-fold_anno/3-fun-0-' +'-new_anno/1-fun-0-' +'-anno_to_term/1-fun-0-' +from_term +'-anno_from_term/1-fun-0-' +yeccgoto_typed_record_fields +yeccgoto_typed_exprs +yeccgoto_typed_expr +yeccgoto_typed_attr_val +yeccgoto_type_spec +yeccgoto_type_sigs +yeccgoto_type_sig +yeccgoto_type_guards +yeccgoto_type_guard +yeccgoto_type +yeccgoto_tuple +yeccgoto_try_opt_stacktrace +yeccgoto_try_expr +yeccgoto_try_clauses +yeccgoto_try_clause +yeccgoto_try_catch +yeccgoto_top_types +yeccgoto_top_type +yeccgoto_tail +yeccgoto_strings +yeccgoto_ssa_check_when_clauses +yeccgoto_ssa_check_when_clause +yeccgoto_ssa_check_pats +yeccgoto_ssa_check_pat +yeccgoto_ssa_check_map_key_tuple_elements +yeccgoto_ssa_check_map_key_list +yeccgoto_ssa_check_map_key_elements +yeccgoto_ssa_check_map_key_element +yeccgoto_ssa_check_map_key +yeccgoto_ssa_check_list_lit_ls +yeccgoto_ssa_check_list_lit +yeccgoto_ssa_check_fun_ref +yeccgoto_ssa_check_exprs +yeccgoto_ssa_check_expr +yeccgoto_ssa_check_clause_args_ls +yeccgoto_ssa_check_clause_args +yeccgoto_ssa_check_binary_lit_rest +yeccgoto_ssa_check_binary_lit_bytes_ls +yeccgoto_ssa_check_binary_lit +yeccgoto_ssa_check_args +yeccgoto_ssa_check_anno_clauses +yeccgoto_ssa_check_anno_clause +yeccgoto_ssa_check_anno +yeccgoto_spec_fun +yeccgoto_record_tuple +yeccgoto_record_pat_expr +yeccgoto_record_fields +yeccgoto_record_field +yeccgoto_record_expr +yeccgoto_receive_expr +yeccgoto_prefix_op +yeccgoto_pat_exprs +yeccgoto_pat_expr_max +yeccgoto_pat_expr +yeccgoto_pat_argument_list +yeccgoto_opt_bit_type_list +yeccgoto_opt_bit_size_expr +yeccgoto_mult_op +yeccgoto_maybe_match_exprs +yeccgoto_maybe_match +yeccgoto_maybe_expr +yeccgoto_map_tuple +yeccgoto_map_pat_expr +yeccgoto_map_pair_types +yeccgoto_map_pair_type +yeccgoto_map_key +yeccgoto_map_fields +yeccgoto_map_field_exact +yeccgoto_map_field_assoc +yeccgoto_map_field +yeccgoto_map_expr +yeccgoto_map_comprehension +yeccgoto_list_op +yeccgoto_list_comprehension +yeccgoto_list +yeccgoto_lc_exprs +yeccgoto_lc_expr +yeccgoto_integer_or_var +yeccgoto_if_expr +yeccgoto_if_clauses +yeccgoto_if_clause +yeccgoto_guard +yeccgoto_function_clauses +yeccgoto_function_clause +yeccgoto_function_call +yeccgoto_function +yeccgoto_fun_type +yeccgoto_fun_expr +yeccgoto_fun_clauses +yeccgoto_fun_clause +yeccgoto_form +yeccgoto_field_types +yeccgoto_field_type +yeccgoto_exprs +yeccgoto_expr_remote +yeccgoto_expr_max +yeccgoto_expr +yeccgoto_cr_clauses +yeccgoto_cr_clause +yeccgoto_comp_op +yeccgoto_clause_guard +yeccgoto_clause_body_exprs +yeccgoto_clause_body +yeccgoto_clause_args +yeccgoto_case_expr +yeccgoto_bit_type_list +yeccgoto_bit_type +yeccgoto_bit_size_expr +yeccgoto_bit_expr +yeccgoto_binary_type +yeccgoto_binary_comprehension +yeccgoto_binary +yeccgoto_bin_unit_type +yeccgoto_bin_elements +yeccgoto_bin_element +yeccgoto_bin_base_type +yeccgoto_attribute +yeccgoto_attr_val +yeccgoto_atomic +yeccgoto_atom_or_var +yeccgoto_argument_list +yeccgoto_add_op +yeccpars2_680 +yeccpars2_679 +yeccpars2_678 +yeccpars2_677 +yeccpars2_676 +yeccpars2_674 +yeccpars2_673 +yeccpars2_672 +yeccpars2_671 +yeccpars2_670 +yeccpars2_668 +yeccpars2_667 +yeccpars2_664 +yeccpars2_663 +yeccpars2_662 +yeccpars2_660 +yeccpars2_659 +yeccpars2_658 +yeccpars2_656 +yeccpars2_655 +yeccpars2_654 +yeccpars2_652 +yeccpars2_651 +yeccpars2_650 +yeccpars2_649 +yeccpars2_648 +yeccpars2_647 +yeccpars2_646 +yeccpars2_644 +yeccpars2_642 +yeccpars2_641 +yeccpars2_639 +yeccpars2_637 +yeccpars2_636 +yeccpars2_635 +yeccpars2_634 +yeccpars2_633 +yeccpars2_632 +yeccpars2_630 +yeccpars2_628 +yeccpars2_627 +yeccpars2_625 +yeccpars2_624 +yeccpars2_623 +yeccpars2_622 +yeccpars2_621 +yeccpars2_619 +yeccpars2_618 +yeccpars2_617 +yeccpars2_616 +yeccpars2_615 +yeccpars2_614 +yeccpars2_613 +yeccpars2_610 +yeccpars2_609 +yeccpars2_607 +yeccpars2_606 +yeccpars2_605 +yeccpars2_604 +yeccpars2_603 +yeccpars2_602 +yeccpars2_601 +yeccpars2_600 +yeccpars2_599 +yeccpars2_597 +yeccpars2_595 +yeccpars2_594 +yeccpars2_593 +yeccpars2_592 +yeccpars2_591 +yeccpars2_590 +yeccpars2_589 +yeccpars2_588 +yeccpars2_587 +yeccpars2_586 +yeccpars2_585 +yeccpars2_584 +yeccpars2_580 +yeccpars2_579 +yeccpars2_577 +yeccpars2_576 +yeccpars2_575 +yeccpars2_574 +yeccpars2_573 +yeccpars2_572 +yeccpars2_571 +nonempty_list +yeccpars2_570 +yeccpars2_569 +yeccpars2_568 +yeccpars2_567 +yeccpars2_566 +yeccpars2_565 +yeccpars2_564 +yeccpars2_563 +yeccpars2_562 +yeccpars2_561 +yeccpars2_560 +yeccpars2_559 +yeccpars2_558 +yeccpars2_557 +yeccpars2_556 +yeccpars2_555 +yeccpars2_554 +yeccpars2_553 +yeccpars2_552 +yeccpars2_551 +yeccpars2_550 +yeccpars2_548 +yeccpars2_547 +yeccpars2_546 +yeccpars2_545 +yeccpars2_544 +yeccpars2_543 +yeccpars2_542 +yeccpars2_541 +yeccpars2_540 +yeccpars2_539 +yeccpars2_538 +yeccpars2_537 +yeccpars2_536 +yeccpars2_535 +yeccpars2_534 +yeccpars2_533 +yeccpars2_532 +yeccpars2_531 +yeccpars2_530 +yeccpars2_529 +yeccpars2_cont_528 +yeccpars2_528 +yeccpars2_527 +yeccpars2_526 +yeccpars2_525 +yeccpars2_523 +yeccpars2_522 +yeccpars2_521 +yeccpars2_520 +yeccpars2_519 +yeccpars2_518 +yeccpars2_516 +yeccpars2_515 +yeccpars2_514 +yeccpars2_512 +yeccpars2_511 +yeccpars2_510 +yeccpars2_508 +yeccpars2_507 +yeccpars2_506 +yeccpars2_505 +yeccpars2_504 +yeccpars2_503 +yeccpars2_502 +yeccpars2_500 +yeccpars2_499 +yeccpars2_498 +yeccpars2_497 +yeccpars2_496 +yeccpars2_495 +yeccpars2_494 +yeccpars2_493 +yeccpars2_492 +yeccpars2_491 +yeccpars2_490 +yeccpars2_489 +yeccpars2_488 +yeccpars2_487 +yeccpars2_486 +yeccpars2_485 +yeccpars2_484 +yeccpars2_483 +yeccpars2_481 +yeccpars2_480 +yeccpars2_479 +yeccpars2_477 +yeccpars2_476 +yeccpars2_474 +yeccpars2_473 +yeccpars2_472 +yeccpars2_471 +yeccpars2_470 +yeccpars2_468 +yeccpars2_466 +yeccpars2_465 +yeccpars2_464 +yeccpars2_463 +yeccpars2_462 +yeccpars2_461 +yeccpars2_460 +yeccpars2_459 +yeccpars2_458 +yeccpars2_457 +yeccpars2_456 +yeccpars2_454 +yeccpars2_453 +yeccpars2_452 +yeccpars2_451 +yeccpars2_450 +yeccpars2_449 +yeccpars2_448 +yeccpars2_447 +yeccpars2_446 +yeccpars2_445 +yeccpars2_444 +yeccpars2_443 +yeccpars2_442 +yeccpars2_441 +yeccpars2_439 +yeccpars2_437 +yeccpars2_436 +yeccpars2_435 +yeccpars2_434 +yeccpars2_433 +yeccpars2_432 +yeccpars2_431 +yeccpars2_430 +yeccpars2_429 +yeccpars2_427 +yeccpars2_426 +yeccpars2_425 +yeccpars2_424 +yeccpars2_423 +yeccpars2_422 +yeccpars2_420 +yeccpars2_419 +yeccpars2_417 +yeccpars2_416 +yeccpars2_415 +yeccpars2_413 +yeccpars2_412 +yeccpars2_411 +yeccpars2_410 +yeccpars2_409 +yeccpars2_408 +yeccpars2_407 +yeccpars2_406 +yeccpars2_405 +yeccpars2_404 +yeccpars2_403 +yeccpars2_402 +yeccpars2_400 +yeccpars2_398 +yeccpars2_397 +yeccpars2_395 +yeccpars2_393 +'<=' +yeccpars2_391 +yeccpars2_390 +yeccpars2_389 +yeccpars2_388 +yeccpars2_387 +yeccpars2_386 +yeccpars2_383 +yeccpars2_381 +yeccpars2_380 +yeccpars2_379 +yeccpars2_378 +yeccpars2_377 +yeccpars2_376 +yeccpars2_375 +yeccpars2_373 +yeccpars2_372 +yeccpars2_371 +yeccpars2_369 +yeccpars2_367 +yeccpars2_366 +yeccpars2_365 +yeccpars2_364 +yeccpars2_363 +yeccpars2_362 +yeccpars2_361 +yeccpars2_360 +yeccpars2_359 +yeccpars2_358 +yeccpars2_357 +yeccpars2_356 +yeccpars2_355 +yeccpars2_353 +yeccpars2_352 +yeccpars2_351 +yeccpars2_350 +yeccpars2_349 +yeccpars2_348 +yeccpars2_347 +yeccpars2_346 +yeccpars2_345 +yeccpars2_343 +yeccpars2_341 +yeccpars2_340 +yeccpars2_339 +yeccpars2_338 +yeccpars2_337 +yeccpars2_335 +yeccpars2_333 +yeccpars2_332 +yeccpars2_329 +yeccpars2_328 +yeccpars2_327 +yeccpars2_326 +yeccpars2_325 +yeccpars2_323 +yeccpars2_321 +yeccpars2_320 +yeccpars2_cont_319 +yeccpars2_319 +yeccpars2_317 +yeccpars2_316 +yeccpars2_315 +yeccpars2_314 +yeccpars2_313 +yeccpars2_312 +yeccpars2_310 +yeccpars2_308 +yeccpars2_306 +yeccpars2_304 +yeccpars2_303 +yeccpars2_301 +yeccpars2_299 +yeccpars2_298 +yeccpars2_297 +yeccpars2_296 +yeccpars2_295 +yeccpars2_294 +yeccpars2_292 +yeccpars2_287 +yeccpars2_286 +yeccpars2_284 +yeccpars2_283 +yeccpars2_282 +yeccpars2_281 +yeccpars2_280 +yeccpars2_279 +yeccpars2_278 +'||' +end +'?=' +'<-' +':=' +yeccpars2_277 +yeccpars2_276 +yeccpars2_275 +pass +yeccpars2_274 +yeccpars2_273 +yeccpars2_271 +yeccpars2_270 +yeccpars2_269 +yeccpars2_268 +yeccpars2_267 +yeccpars2_266 +yeccpars2_265 +yeccpars2_264 +yeccpars2_263 +yeccpars2_262 +yeccpars2_261 +yeccpars2_260 +yeccpars2_259 +yeccpars2_257 +yeccpars2_256 +yeccpars2_255 +yeccpars2_253 +yeccpars2_251 +yeccpars2_250 +yeccpars2_249 +yeccpars2_248 +yeccpars2_246 +yeccpars2_245 +yeccpars2_244 +yeccpars2_243 +yeccpars2_242 +yeccpars2_241 +yeccpars2_240 +yeccpars2_239 +yeccpars2_238 +yeccpars2_237 +yeccpars2_235 +yeccpars2_233 +yeccpars2_232 +yeccpars2_231 +yeccpars2_230 +yeccpars2_229 +yeccpars2_228 +yeccpars2_227 +yeccpars2_224 +yeccpars2_223 +yeccpars2_222 +yeccpars2_221 +yeccpars2_220 +yeccpars2_219 +yeccpars2_218 +yeccpars2_217 +yeccpars2_216 +yeccpars2_215 +yeccpars2_214 +yeccpars2_213 +yeccpars2_212 +yeccpars2_211 +yeccpars2_210 +yeccpars2_209 +yeccpars2_208 +yeccpars2_207 +yeccpars2_206 +yeccpars2_205 +yeccpars2_cont_204 +yeccpars2_204 +yeccpars2_203 +yeccpars2_202 +yeccpars2_201 +yeccpars2_200 +yeccpars2_199 +yeccpars2_198 +yeccpars2_197 +yeccpars2_196 +yeccpars2_195 +yeccpars2_194 +yeccpars2_193 +yeccpars2_192 +yeccpars2_191 +yeccpars2_190 +yeccpars2_189 +yeccpars2_188 +yeccpars2_187 +yeccpars2_186 +yeccpars2_185 +yeccpars2_184 +yeccpars2_183 +float_epsilon +yeccpars2_182 +yeccpars2_181 +yeccpars2_180 +local_fun +yeccpars2_179 +external_fun +yeccpars2_178 +yeccpars2_177 +yeccpars2_176 +yeccpars2_175 +yeccpars2_174 +yeccpars2_173 +yeccpars2_172 +yeccpars2_171 +yeccpars2_170 +yeccpars2_169 +yeccpars2_168 +yeccpars2_167 +yeccpars2_166 +yeccpars2_165 +yeccpars2_164 +yeccpars2_163 +yeccpars2_162 +yeccpars2_161 +yeccpars2_160 +yeccpars2_159 +yeccpars2_158 +yeccpars2_157 +yeccpars2_156 +yeccpars2_155 +yeccpars2_154 +yeccpars2_153 +yeccpars2_152 +yeccpars2_151 +yeccpars2_150 +yeccpars2_149 +yeccpars2_cont_148 +yeccpars2_148 +yeccpars2_147 +yeccpars2_146 +yeccpars2_145 +yeccpars2_144 +yeccpars2_143 +yeccpars2_142 +yeccpars2_141 +yeccpars2_140 +yeccpars2_139 +yeccpars2_138 +yeccpars2_137 +yeccpars2_136 +'...' +yeccpars2_135 +yeccpars2_134 +yeccpars2_133 +yeccpars2_132 +yeccpars2_131 +yeccpars2_130 +'%ssa%' +yeccpars2_128 +yeccpars2_127 +yeccpars2_126 +yeccpars2_125 +yeccpars2_124 +yeccpars2_123 +yeccpars2_122 +yeccpars2_121 +yeccpars2_119 +yeccpars2_118 +yeccpars2_117 +yeccpars2_115 +yeccpars2_113 +yeccpars2_112 +yeccpars2_111 +yeccpars2_110 +yeccpars2_109 +yeccpars2_108 +yeccpars2_107 +yeccpars2_105 +yeccpars2_104 +yeccpars2_103 +yeccpars2_102 +yeccpars2_101 +yeccpars2_100 +yeccpars2_99 +yeccpars2_97 +yeccpars2_96 +yeccpars2_95 +yeccpars2_94 +yeccpars2_93 +yeccpars2_92 +yeccpars2_91 +yeccpars2_90 +yeccpars2_87 +yeccpars2_83 +yeccpars2_82 +yeccpars2_80 +yeccpars2_79 +yeccpars2_78 +yeccpars2_76 +yeccpars2_74 +of +yeccpars2_73 +yeccpars2_72 +yeccpars2_71 +after +yeccpars2_69 +yeccpars2_66 +yeccpars2_59 +yeccpars2_58 +yeccpars2_57 +yeccpars2_56 +yeccpars2_55 +yeccpars2_54 +yeccpars2_53 +yeccpars2_52 +yeccpars2_51 +yeccpars2_50 +yeccpars2_49 +yeccpars2_48 +yeccpars2_47 +yeccpars2_46 +yeccpars2_45 +yeccpars2_44 +yeccpars2_43 +yeccpars2_42 +yeccpars2_41 +yeccpars2_40 +yeccpars2_39 +yeccpars2_38 +yeccpars2_37 +yeccpars2_36 +yeccpars2_35 +yeccpars2_34 +yeccpars2_33 +yeccpars2_32 +yeccpars2_31 +yeccpars2_30 +yeccpars2_29 +yeccpars2_28 +begin +yeccpars2_cont_27 +'>>' +yeccpars2_27 +yeccpars2_26 +yeccpars2_25 +yeccpars2_24 +yeccpars2_22 +yeccpars2_21 +yeccpars2_20 +yeccpars2_19 +yeccpars2_18 +yeccpars2_17 +yeccpars2_16 +yeccpars2_15 +yeccpars2_14 +yeccpars2_13 +yeccpars2_12 +yeccpars2_11 +yeccpars2_cont_10 +'<<' +yeccpars2_10 +when +yeccpars2_9 +yeccpars2_8 +yeccpars2_7 +yeccpars2_6 +yeccpars2_5 +yeccpars2_4 +yeccpars2_3 +';' +yeccpars2_2 +yeccpars2_1 +yeccpars2_0 +missing_state_in_action_table +yeccpars2 +write_char +write_string +reserved_symbol +yecctoken2string1 +yecctoken2string +yecctoken_location +yecctoken_to_string +yeccerror +yecctoken_end_location +yecc_end +'$end' +no_func +yeccpars1 +state_is_unknown +missing_in_goto_table +yecc_error_type +yecc_bug +yeccpars0 +return_error +deep_char_list +no_location +parse_and_scan +parse +check_expr +add_anno_check +build_ssa_check_label +modify_anno1 +anno_from_term +new_anno +mapfold_anno +fold_anno +type_preop_prec +'::' +'..' +type_inop_prec +max_prec +func_prec +preop_prec +'=' +inop_prec +tokens_tuple +'|' +',' +tokens_tail +']' +'}' +'{' +'[' +'=>' +abstract_byte +abstract_map_fields +abstract_tuple_list +not_string +abstract_list +enc_func +abstract +loc_lte +find_anno +set_location +end_location +last_anno +first_location +ret_abstr_err +ret_err +build_try +check_clauses +build_fun +build_function +typed +record_fields +record_tuple +farity_list +error_bad_decl +attribute_farity_map +attribute_farity_list +attribute_farity +var_list +build_attribute +abstract2 +type_tag +build_bin_type +build_gen_type +lift_unions +build_constraint +is_subtype +build_compat_constraint +find_arity_from_specs +build_type_spec +typed_record +build_typed_attribute +'(' +')' +'->' +parse_form +std_info +open_file +'$3' +'-add_env/2-inlined-0-' +'-start/1-fun-0-' +'-get_all_env/1-fun-0-' +keystore +'-handle_call/3-lc$^3/1-0-' +'-terminate/2-fun-0-' +'-load/2-fun-0-' +'-unload/2-fun-0-' +'-check_start_cond/4-fun-0-' +'-start_appl/3-fun-0-' +'-prim_parse/2-fun-0-' +'-do_change_apps/3-fun-0-' +'-do_change_apps/3-fun-1-' +'-get_cmd_env/1-fun-0-' +'-add_env/2-fun-0-' +'-do_config_diff/3-fun-0-' +'-conf_param_to_conf/1-fun-0-' +'-config_param_to_list/1-lc$^0/1-0-' +'-check_conf/0-fun-1-' +'-read_fd_until_end_and_close/3-Read/4-0-' +'-read_fd_until_end_and_close/3-fun-1-' +'-read_fd_until_end_and_close/3-GetResult/0-1-' +'-reply_to_requester/3-fun-0-' +default_encoding +read_encoding_from_binary +file_binary_to_list +test_make_apps +test_do_change_appl +test_change_apps +update_permissions +reply_to_requester +info_exited +started_at +info_started +config_error +strip_comment +only_ws +reader_ref +read_fd_until_end_and_close +parse_file +scan_file +read_from_file_descriptor +load_file_descriptor +check_conf_sys +check_conf +config_param_to_list +invalid_file_desc +characters_to_nfc_list +configfd +conf_param_to_conf +do_config_diff +application_not_found +module_not_defined +do_config_change +do_prep_config_change +check_user +del_env +add_env +get_env_key +merge_app_env +change_app_env +merge_env +get_env_i +handle_make_term_error +make_term +conv +get_cmd_env +get_opt +do_change_appl +is_loaded_app +do_change_apps +invalid_name +badstartspec +invalid_options +make_appl_i +parse_term +prim_parse +prim_consult +make_appl +bad_application +get_restart_type +nd +keyreplaceadd +ksd +keysearchdelete +stop_appl +start_appl +init_starter +spawn_starter +check_start_cond +do_load_application +maybe_load_application +'-separate_error_info/1-fun-0-' +'-format_link_reports/4-lc$^0/1-0-' +'-format_exception/5-fun-0-' +'-pp_fun/2-fun-0-' +nl +modifier +chars_limit_opt +part_separator +report_separator +format_tag +pp_fun +write_atom +write_atom_as_latin1 +format_exception +format_rep +format_report +format_link_report +format_link_reports +splitwith +separate_error_info +format_own_report +do_format +badrpc +proc_info +get_my_name +translate_process_info +get_process_info +no_trap +adjacents +visit +max_neighbours +neighbours +get_initial_call +make_neighbour_report +neighbour +make_neighbour_reports1 +linked_info +get_dictionary +clean_dict +cleaned_dict +get_cleaned_dictionary +receive_messages +get_process_messages +get_messages +ancestors +get_ancestors +my_info_1 +my_info +crash_report +trans_init +raw_init_call +raw_initial_call +translate_initial_call +make_dummy_args +await_DOWN +kill_flush_EXIT +flush_EXIT +sync_start_monitor +nack +sync_start +exit_reason +exit_p +init_p_do_apply +wake_up +spawn_mon +init_p +get_loaded +del_cntrl +ac_application_run +notify_cntrl_started +cntrl +shutdown_func +application_terminated +keyreplace +ac_application_not_run +stop_it +not_running +failover +ac_start_application_reply +ac_load_application_reply +ac_change_application_req +application_start_failure +handle_application_started +application_started +loading +start_p_false +zf +ac_load_application_req +not_started +ac_application_stopped +ac_application_unloaded +permissions +ac_start_application_req +persistent +check_distributed +distributed +check_para_value +check_para +check_conf_data +'load error' +enter_loop +'$initial_call' +appl_data +appl +start_phases +'$2' +'$1' +config_change +prep_config_change +change_application_data +control_application +ac_tab +bad_environment_value +ack +':' +badexpr +binary_comprehension +bitlevel_binaries +'-merge_bindings/4-inlined-0-' +'-match_fun/2-inlined-0-' +'-expr/6-RF/20-22-' +'-expr/6-RF/19-21-' +'-expr/6-RF/18-20-' +'-expr/6-RF/17-19-' +'-expr/6-RF/16-18-' +'-expr/6-RF/15-17-' +'-expr/6-RF/14-16-' +'-expr/6-RF/13-15-' +'-expr/6-RF/12-14-' +'-expr/6-RF/11-13-' +'-expr/6-RF/10-12-' +'-expr/6-RF/9-11-' +'-expr/6-RF/8-10-' +'-expr/6-RF/7-9-' +'-expr/6-RF/6-8-' +'-expr/6-RF/5-7-' +'-expr/6-RF/4-6-' +'-expr/6-RF/3-5-' +'-expr/6-RF/2-4-' +'-expr/6-RF/1-3-' +'-expr/6-RF/0-2-' +'-expr/6-fun-0-' +'-expr/6-fun-44-' +'-expr/6-fun-45-' +'-expr/6-fun-22-' +'-expr/6-fun-21-' +'-expr/6-fun-20-' +'-expr/6-fun-19-' +'-expr/6-fun-18-' +'-expr/6-fun-17-' +'-expr/6-fun-16-' +'-expr/6-fun-15-' +'-expr/6-fun-14-' +'-expr/6-fun-13-' +'-expr/6-fun-12-' +'-expr/6-fun-11-' +'-expr/6-fun-10-' +'-expr/6-fun-9-' +'-expr/6-fun-8-' +'-expr/6-fun-7-' +'-expr/6-fun-6-' +'-expr/6-fun-5-' +'-expr/6-fun-4-' +'-expr/6-fun-3-' +'-expr/6-fun-2-' +'-expr/6-fun-1-' +is_anno +'-find_maxline/1-fun-0-' +'-fun_used_bindings/4-fun-0-' +'-local_func/8-fun-0-' +'-eval_lc1/7-fun-1-' +'-eval_lc1/7-fun-0-' +'-eval_bc1/7-fun-1-' +'-eval_bc1/7-fun-0-' +'-eval_mc1/7-fun-1-' +'-eval_mc1/7-fun-0-' +'-eval_generator/7-fun-0-' +'-eval_b_generate/8-fun-0-' +'-eval_b_generate/8-fun-1-' +'-receive_clauses/8-fun-0-' +'-match1/5-fun-0-' +'-match1/5-fun-1-' +'-match_fun/2-fun-0-' +'-add_bindings/2-fun-0-' +'-merge_bindings/4-fun-0-' +'-merge_bindings/4-fun-1-' +'-to_terms/1-lc$^0/1-0-' +'-token_fixup/1-lc$^0/1-0-' +'-reset_token_anno/1-lc$^0/1-0-' +'-reset_expr_anno/1-lc$^0/1-0-' +'-reset_anno/0-fun-0-' +'-normalise/1-fun-1-' +'-normalise/1-fun-0-' +'-ev_expr/1-lc$^0/1-0-' +anno +all_white +eval_str +ev_expr +eval_expr +is_constant_expr +normalise_list +normalise +extended_parse_term +validate_tag +fixup_mfa +fixup_tag +fixup_text +fixup_ast +reset_anno +reset_expr_anno +reset_token_anno +string_fixup +expr_fixup +'Ref' +'Port' +'Fun' +'.' +'#' +unscannable +set_text +token_fixup +tokens_fixup +extended_parse_exprs +anno_to_term +to_term +to_terms +filter_bindings +merge_bindings +add_bindings +del_binding +add_binding +binding +bindings +match_list +match_map +match_tuple +match_fun +match_bits +match1 +string_to_conses +reference +number +expr_guard_test +guard_expr +guard0 +guard1 +match_clause +receive_clauses +case_clauses +illegal_stacktrace_variable +check_stacktrace_vars +if_clauses +eval_op +eval_named_fun +'-inside-an-interpreted-fun-' +eval_fun +ret_expr +map_assoc +map_exact +eval_map_fields +is_generator +eval_filter +eval_m_generate +bin_gen +eval_b_generate +eval_generate +eval_generator +eval_mc1 +eval_mc +eval_bc1 +eval_bc +eval_lc1 +eval_lc +no_env +do_apply +local_func2 +local_func +unhide_calls +f +m +hide_calls +fun_used_bindings +'$erl_eval_max_line' +find_maxline +apply_error +expr_grp +unbound +not_ok +transform_from_evaluator +k +v +else_clause +argument_limit +undef_record +named_fun_data +check_command +failure +success +maybe_match_exprs +empty_fun_used_vars +process_exited +critical +alert +emergency +got_unexpected_message +no_domain +super +remote_gl +'-handle_call/3-inlined-0-' +'-set_module_level/2-fun-0-' +'-unset_module_level/1-fun-0-' +'-handle_call/3-fun-7-' +'-handle_call/3-fun-6-' +removing_handler +'-handle_call/3-fun-3-' +'-handle_call/3-fun-5-' +'-handle_call/3-fun-4-' +handler_not_added +invalid_handler +function_not_exported +'-call_h_async/4-fun-0-' +internal_log_event +add_default_metadata +diffs +logger_process_exited +call_h_reply +call_h_async +changing_config +call_h +illegal_config_change +diff_maps +check_config_change +invalid_formatter +callback_crashed +check_formatter +invalid_filter_default +check_filter_default +invalid_filters +invalid_filter +check_filters +invalid_level +check_level +check_mod +invalid_id +check_id +invalid_primary_config +metadata +check_config +get_type +sanity_check_1 +invalid_config +sanity_check +default_config +keytake +do_remove_filter +do_add_filter +attempting_syncronous_call_to_self +async_req_reply +formatter +already_exist +exist +set_opts +adding_handler +simple +create +proxy +get_default_config +'$logger_cb_process' +invalid_formatter_config +update_formatter_config +update_config +change_config +set_config +unset_module_level +not_a_list_of_modules +set_module_level +add_filter +add_handler +'-do_start/4-fun-0-' +'-maybe_add_read_ahead/2-fun-0-' +cbv +cafu +count_and_find +read_size +cast_binary +cat +do_setopts +check_valid_opts +unfold +substitute_negations +err_func +continuation_location +tokens +invalid_unicode_error +get_chars_apply +get_chars_notempty +get_chars_empty +convert_enc +collect_line +io_request_loop +requests +get_until +std_reply +io_reply +server_loop +maybe_add_read_ahead +valid_enc +expand_encoding +parse_options +invalid_unicode +info_report +bad_combination +shutdown_error +start_error +reached_max_restart_intensity +title +supervisor_report +report_cb +sasl +child_terminated +already_present +n_objects +read_only +'-terminate_dynamic_children/1-inlined-0-' +'-find_child_by_pid/2-inlined-0-' +failed_to_start_child +'-start_children/2-fun-0-' +'-handle_call/3-fun-2-' +'-handle_call/3-fun-0-' +'-handle_call/3-fun-1-' +'-do_auto_shutdown/2-fun-0-' +'-terminate_children/2-fun-0-' +'-terminate_dynamic_children/1-fun-0-' +'-terminate_dynamic_children/1-fun-1-' +'-wait_dynamic_children/5-fun-0-' +'-find_child_by_pid/2-fun-0-' +the +'-set_pid/3-fun-0-' +invalid_module +a +'-validMods/1-fun-0-' +'-add_restart/3-fun-0-' +'-dyn_fold/3-fun-0-' +parse_transform +transformed +be +should +dyn_init +real +dyn_args +dyn_exists +called +dyn_map +transform_error +dyn_fold +mapsets +dyn_store +dyn_erase +dyn_size +single +p +format_child_log_single +format_log_multi +format_log_single +limit_child_report +limit_term +errorContext +limit_report +single_line +encoding +depth +unlimited +chars_limit +get_format_depth +format_log +report_progress +nb_children +mfargs +restart_type +child_type +extract_child +takewhile +add_restart +child_to_spec +invalid_modules +validMods +invalid_shutdown +validShutdown +invalid_significant +validSignificant +invalid_restart_type +validRestartType +invalid_mfa +validFunc +validId +invalid_child_type +validChildType +missing_id +missing_start +'-table/2-inlined-0-' +do_check_childspec +invalid_child_spec +'-file2tab/2-inlined-1-' +'-file2tab/2-inlined-0-' +significant +check_childspec +log_terms +'-tab2file/3-fun-1-' +duplicate_child_name +check_startspec +blog_terms +supname +invalid_auto_shutdown +'-tab2file/3-fun-0-' +'-file2tab/2-fun-1-' +validAutoShutdown +invalid_period +'-file2tab/2-fun-0-' +'-table/2-fun-2-' +validPeriod +invalid_intensity +'-table/2-fun-1-' +'-table/2-fun-0-' +validIntensity +'-table/2-fun-3-' +invalid_strategy +validStrategy +'-table/2-fun-4-' +'-table/2-fun-5-' +do_check_flags +check_flags +'-table/2-fun-6-' +'-table/2-fun-7-' +auto_shutdown +intensity +'-table/2-fun-8-' +'-table/2-lc$^10/1-2-' +period +'-table/2-lc$^9/1-1-' +strategy +'-table/2-fun-11-' +set_flags +init_state +'-qlc_next/2-fun-0-' +'-qlc_prev/2-fun-0-' +children_any1 +children_any +'-qlc_select/1-fun-0-' +'-hform/6-lc$^0/1-0-' +children_fold +children_to_list +re_match +print_re_num +children_map +re_display +remove_child +update_with +re_search +slice +set_pid +get_dynamic_child +do_display_item +find_child_by_pid +do_display_items +do_display +find_dynamic_child +print_number +find_child_and_args +find_child +split_ids +split_child +trailing +del_child +nonl +do_save_child +save_child +line_string +wait_dynamic_children +choice +terminate_dynamic_children +'(c)ontinue (q)uit (p)Digits (k)ill /Regexp -->' +'-basenameb/2-lc$^0/1-0-' +'-unix_splitb/1-lc$^0/1-0-' +'EOT (q)uit (p)Digits (k)ill /Regexp -->' +unlink_flush +'-win32_splitb/1-lc$^3/1-4-' +eot +display_items +'-win32_splitb/1-lc$^1/1-3-' +brutal_kill +'-win32_splitb/1-lc$^0/1-2-' +'-win32_splitb/1-lc$^2/1-1-' +pad_right +do_terminate +terminate_children +'-win32_splitb/1-lc$^4/1-0-' +hform +'-basedir/3-lc$^0/1-0-' +cast +restart_multiple_children +is_reg +try_again +rest_for_one +prinfo2 +prinfo +one_for_one +one_for_all +validate_bin +tabs +mem +i +fail +do_auto_shutdown +listify +validate_char +validate_list +default_option +keydelete +validate +traverse +basedir_os_type +qlc_select +qlc_prev +basedir_join_home +handle_start_child +qlc_next +noappdata +basedir_windows_appdata +basedir_windows +num_of_objects +update_chsp +basedir_darwin +lexemes +is_unique_objects +update_childspec1 +is_sorted_key +table_info +update_childspec +pre_fun +bad_flags +user_data +user_config +invalid_type +post_fun +info_fun +basedir_linux +basedir_from_os +format_fun +key_equality +lookup_fun +author +basedir_name_from_opts +try_again_restart +basedir_os_from_opts +last_prev +first_next +site_data +site_config +count_child +specs +windows +tabfile_info +supervisors +linux +user_log +cannot_create_table +create_tab +user_cache +basedir +load_table +workers +worker +filename_string_to_binary +scan_for_endinfo +md5_and_convert +do_flatten +restarting +major_version +filetab_options +major_os_type +separators +do_start_child_i +child +replace +do_start_child +win32_nativename +nativename +start_children +win32_split +get_header_data +chunk +wrap_chunk +unix_split +bad_start_spec +bchunk +wrap_bchunk +init_dynamic +win32_splitb +start_spec +fix_driveletter +verify_header_mandatory +unix_splitb +rootname2 +maybe_remove_dirsep +join1b +init_children +supervisor_data +simple_one_for_one +count_mandatory +join1 +verify +parse_f2t_opts +bad_size +invalid_object_count +checksum_error +dirjoin1 +dirjoin +fstrip +do_read_and_verify +get_callback_module +check_childspecs2 +read_error +unsupported_file_version +never +any_significant +all_significant +repaired +file2tab +check_childspecs1 +skip_prefix +object_count +md5sum +basename1 +parse_ft_info_options +check_childspecs +count_children +malformed_option +unknown_option +which_children +get_childspec +basenameb +parse_ft_options +terminate_child +delete_child +restart_child +win_basenameb +absname_join +start_child +md5terms +ft_options_to_list +dump_file +eaccess +extended_info +badtab +tab2file +tab2list +match_delete +init_table_sub +end_of_input +init_table_continue +init_table +test_ms +from_ets +to_dets +to_ets +from_dets +do_foldr +transform_from_shell +fun_data +fun2ms +repair_continuation +match_spec_run +select_delete +delete_all_objects +receive_all +only_loaded +'-inlined-behaviour_info/1-' +'-ensure_all_started/3-lc$^0/1-0-' +'-wait_all_enqueued/3-lc$^0/1-0-' +get_appl_name +start_type +get_child +get_master +get_supervisor +get_application_module +get_application +get_pid_all_key +get_all_key +get_pid_key +get_key +get_pid_all_env +get_all_env +get_pid_env +get_env +unset_env +set_env +loaded_applications +which_applications +stop_application +distributed_application +permit_only_loaded_application +permit_application +permit +takeover_application +takeover +start_boot_application +ensure_started +wait_all_enqueued +deadlock +wait_one_enqueued +start_application_request +enqueue_dag_leaves +concurrent_dag_start +start_application +enqueue_or_start_app +is_running +enqueue_or_start +concurrent +temporary +ensure_all_started +unload_application +load_application +load1 +fields +overlapping_contract +no_missing_return +missing_return +no_extra_return +extra_return +no_underspecs +underspecs +overspecs +specdiffs +no_missing_calls +race_conditions +error_handling +unmatched_returns +no_undefined_callbacks +no_behaviours +no_unknown +no_contracts +no_fail_call +no_opaque +no_fun_app +no_improper_lists +no_unused +no_return +func +item +'-removed_fa/4-inlined-0-' +'-pattern_map/4-inlined-0-' +'-pattern_list/4-inlined-0-' +'-pattern_fields/6-inlined-0-' +'-is_gexpr/2-inlined-0-' +'-import/3-inlined-0-' +'-icrt_export/5-inlined-3-' +'-icrt_export/5-inlined-2-' +'-icrt_export/5-inlined-1-' +'-icrt_export/5-inlined-0-' +'-gexpr_list/3-inlined-0-' +'-func_location_warning/3-inlined-0-' +'-func_location_error/3-inlined-0-' +'-fun_clauses1/3-inlined-0-' +'-expr_list/3-inlined-0-' +'-export_type/3-inlined-0-' +'-export/3-inlined-0-' +'-depr_fa/4-inlined-0-' +'-def_fields/3-inlined-0-' +'-check_unused_types_1/2-inlined-1-' +'-check_undefined_types/1-inlined-2-' +'-check_type_2/3-inlined-1-' +'-check_specs_without_function/1-inlined-0-' +'-check_local_opaque_types/1-inlined-0-' +'-check_fields/6-inlined-0-' +'-check_dialyzer_attribute/2-inlined-6-' +'-bool_option/4-fun-0-' +'-value_option/3-fun-0-' +'-value_option/7-fun-0-' +'-format_mfa/1-lc$^0/1-0-' +'-exprs_opt/3-fun-0-' +'-used_vars/2-fun-0-' +'-compiler_options/1-lc$^0/1-0-' +'-start/2-lc$^0/1-0-' +'-start/2-lc$^1/1-1-' +'-pack_errors/1-fun-0-' +'-pack_errors/1-fun-1-' +'-pack_errors/1-fun-2-' +'-pack_warnings/1-lc$^2/1-1-' +'-pack_warnings/1-lc$^1/1-0-' +'-pack_warnings/1-lc$^0/1-2-' +'-includes_qlc_hrl/2-lc$^0/1-0-' +'-set_file/2-lc$^0/1-0-' +'-anno_set_file/2-fun-0-' +'-bif_clashes/2-lc$^0/1-0-' +'-not_deprecated/2-lc$^2/1-2-' +'-not_deprecated/2-lc$^1/1-1-' +'-not_deprecated/2-lc$^0/1-0-' +'-not_deprecated/2-lc$^4/1-4-' +'-not_deprecated/2-lc$^3/1-3-' +'-not_deprecated/2-lc$^5/1-5-' +'-not_deprecated/2-fun-6-' +'-not_removed/2-lc$^2/1-2-' +'-not_removed/2-lc$^1/1-1-' +'-not_removed/2-lc$^0/1-0-' +'-not_removed/2-lc$^4/1-4-' +'-not_removed/2-lc$^3/1-3-' +'-not_removed/2-fun-5-' +'-disallowed_compile_flags/2-lc$^1/1-1-' +'-disallowed_compile_flags/2-lc$^0/1-0-' +'-disallowed_compile_flags/2-lc$^3/1-3-' +'-disallowed_compile_flags/2-lc$^2/1-2-' +bad_filter +'-behaviour_check/2-lc$^0/1-0-' +'-behaviour_check/2-fun-1-' +'-behaviour_check/2-lc$^2/1-1-' +'-behaviour_missing_callbacks/2-fun-0-' +no_elements +'-behaviour_conflicting/2-fun-0-' +'-check_deprecated/2-lc$^2/1-2-' +'-check_deprecated/2-lc$^1/1-1-' +'-check_deprecated/2-lc$^0/1-0-' +'-check_deprecated/2-fun-3-' +'-depr_fa/4-fun-0-' +'-check_removed/2-lc$^2/1-2-' +'-check_removed/2-lc$^1/1-1-' +'-check_removed/2-lc$^0/1-0-' +'-check_removed/2-fun-3-' +'-removed_fa/4-fun-0-' +'-check_imports/2-lc$^1/1-1-' +'-check_imports/2-lc$^0/1-0-' +'-check_imports/2-lc$^3/1-3-' +'-check_imports/2-lc$^2/1-2-' +'-check_unused_functions/2-lc$^0/1-0-' +'-check_unused_functions/2-lc$^2/1-2-' +'-check_unused_functions/2-lc$^1/1-1-' +'-check_undefined_functions/1-fun-0-' +'-check_undefined_types/1-lc$^0/1-0-' +'-check_undefined_types/1-fun-1-' +'-check_undefined_types/1-fun-2-' +'-check_option_functions/4-lc$^2/1-2-' +'-check_option_functions/4-lc$^1/1-1-' +'-check_option_functions/4-lc$^0/1-0-' +'-check_option_functions/4-lc$^3/1-3-' +'-check_option_functions/4-lc$^4/1-4-' +'-check_nifs/2-lc$^1/1-1-' +'-check_nifs/2-lc$^0/1-0-' +'-check_nifs/2-lc$^2/1-2-' +'-nowarn_function/2-lc$^1/1-1-' +'-nowarn_function/2-lc$^0/1-0-' +'-func_location_warning/3-fun-0-' +'-func_location_error/3-fun-0-' +'-check_untyped_records/2-fun-0-' +'-check_untyped_records/2-lc$^1/1-0-' +'-check_untyped_records/2-fun-2-' +'-check_unused_records/2-lc$^0/1-0-' +'-check_unused_records/2-lc$^3/1-3-' +'-check_unused_records/2-lc$^2/1-2-' +'-check_unused_records/2-lc$^1/1-1-' +'-check_unused_records/2-fun-4-' +'-check_unused_records/2-fun-5-' +'-check_unused_records/2-lc$^6/1-5-' +'-check_unused_records/2-fun-7-' +'-check_callback_information/1-fun-0-' +'-check_callback_information/1-fun-1-' +'-export/3-fun-0-' +'-export_type/3-fun-0-' +'-import/3-fun-0-' +'-check_imports/3-fun-0-' +store +'-add_imports/3-fun-0-' +'-clauses/2-fun-0-' +'-pattern/4-fun-0-' +'-pattern_list/4-fun-0-' +map_key +'-pattern_map/4-fun-0-' +'-pattern_bin/4-fun-0-' +'-good_string_size_type/2-fun-0-' +'-expr_bin/4-fun-0-' +'-gexpr/3-fun-3-' +'-gexpr/3-fun-4-' +'-gexpr/3-fun-2-' +'-gexpr_list/3-fun-0-' +'-is_guard_test/1-fun-0-' +'-is_guard_test/2-fun-0-' +'-is_guard_test/3-fun-0-' +'-is_guard_test/3-fun-1-' +'-is_guard_expr/1-fun-0-' +'-is_gexpr/2-fun-0-' +'-is_gexpr_list/2-fun-0-' +'-is_gexpr_fields/4-fun-0-' +'-expr/3-fun-5-' +'-expr/3-fun-4-' +'-expr/3-fun-3-' +'-expr/3-fun-2-' +'-expr_list/3-fun-0-' +'-record_def/4-lc$^0/1-0-' +'-def_fields/3-fun-0-' +'-normalise_fields/1-fun-0-' +'-check_fields/6-fun-0-' +'-pattern_fields/6-fun-0-' +'-pattern_fields/6-fun-1-' +'-init_fields/3-lc$^0/1-0-' +'-type_def/6-fun-0-' +'-warn_redefined_builtin_type/3-lc$^1/1-1-' +'-warn_redefined_builtin_type/3-lc$^0/1-0-' +'-check_type/2-fun-0-' +'-check_type_2/3-fun-5-' +'-check_type_2/3-fun-1-' +'-check_type_2/3-fun-2-' +'-check_type_2/3-fun-3-' +merge_with +'-check_type_2/3-fun-4-' +'-check_type_2/3-fun-0-' +'-check_record_types/5-fun-0-' +'-remove_non_visible/1-lc$^0/1-0-' +'-any_control_characters/1-fun-0-' +constraint +'-check_specs/4-lc$^0/1-0-' +'-check_specs_without_function/1-fun-0-' +'-add_missing_spec_warnings/3-lc$^0/1-0-' +'-add_missing_spec_warnings/3-lc$^2/1-2-' +'-add_missing_spec_warnings/3-lc$^1/1-1-' +'-add_missing_spec_warnings/3-fun-3-' +'-check_unused_types_1/2-lc$^0/1-0-' +'-check_unused_types_1/2-fun-1-' +'-reached_types/1-lc$^1/1-1-' +'-reached_types/1-lc$^0/1-0-' +'-reached_types/1-lc$^2/1-2-' +'-initially_reached_types/1-lc$^0/1-0-' +'-check_local_opaque_types/1-fun-0-' +'-check_dialyzer_attribute/2-lc$^4/1-2-' +'-check_dialyzer_attribute/2-lc$^1/1-4-' +'-check_dialyzer_attribute/2-lc$^0/1-3-' +'-check_dialyzer_attribute/2-lc$^3/1-1-' +'-check_dialyzer_attribute/2-lc$^2/1-0-' +'-check_dialyzer_attribute/2-fun-5-' +'-check_dialyzer_attribute/2-fun-6-' +'-check_dialyzer_attribute/2-fun-7-' +'-icrt_clauses/3-fun-0-' +'-catch_clauses/3-fun-0-' +'-icrt_export/5-fun-0-' +'-icrt_export/5-fun-1-' +'-icrt_export/5-fun-2-' +'-icrt_export/5-fun-3-' +'-icrt_export/5-fun-4-' +'-is_guard_test2_info/1-fun-0-' +'-fun_clauses/3-lc$^0/1-0-' +'-fun_clauses1/3-fun-0-' +'-shadow_vars/4-fun-0-' +'-unused_vars/3-fun-0-' +'-warn_unused_vars/3-fun-0-' +'-warn_unused_vars/3-fun-1-' +'-warn_unused_vars/3-fun-2-' +'-vtupdate/2-fun-0-' +'-vtunsafe/3-lc$^0/1-0-' +'-vtmerge/2-fun-0-' +'-vtmerge/1-fun-0-' +'-vtmerge_pat/3-fun-0-' +matched +'-vtmerge_pat/3-fun-1-' +'-vtnew/2-fun-0-' +'-vtold/2-fun-0-' +'-vt_no_unsafe/1-lc$^0/1-0-' +'-vt_no_unused/1-lc$^0/1-0-' +'-copy_expr/2-fun-0-' +'-feature_keywords/0-fun-0-' +keywords +'-feature_keywords/0-fun-1-' +'-canonicalize_string/1-fun-0-' +'-local_functions/1-lc$^0/1-0-' +'-auto_import_suppressed/1-lc$^0/1-0-' +'-auto_import_suppressed/1-lc$^1/1-1-' +maps_prepend +no_guard_bif_clash +bif_clash_specifically_disabled +is_autoimport_suppressed +no_auto_import +auto_import_suppressed +is_imported_from_erlang +is_imported_function +is_local_function +local_functions +control_type +is_modifier +intersection +check_modifiers_1 +check_modifiers +extract_modifiers +extract_sequence_digits +extract_sequence +extract_sequences +check_format_string +args_length +args_list +arguments +check_format_4 +check_format_3 +no_argument_list +check_format_2a +warn +check_format_2 +foldr +canonicalize_string +check_format_1 +fwrite +is_format_function +format_function +text +configurable +feature_keywords +test_overriden_by_local +old_type_test +obsolete_type +add_removed_warning +obsolete +q +check_qlc_hrl +is_inline_opt +check_nif_inline +check_load_nif +check_remote_function +has_wildcard_field +check_record_info_call +copy_expr +vt_no_unused +vt_no_unsafe +vtold +vtsubtract +vtnew +merge_used +merge_state +merge_annos +vtmerge_pat +vtmerge +vtunsafe +vtupdate +check_old_unused_vars +check_unused_vars +do_expr_var +expr_var +pat_binsize_var +warn_underscore_match_pat_1 +warn_underscore_match_pat +pat_var +fun_clause +fun_clauses1 +fun_clauses +bitstring +bits +bytes +handle_bitstring_gen_pat +comprehension_pattern +handle_generator +is_guard_test2_info +m_generate +generate +b_generate +lc_quals +comprehension_expr +handle_comprehension +dropwhile +icrt_export +stacktrace +taint_stack_var +catch_clause +catch_clauses +icrt_clause +icrt_clauses +try_clauses +is_module_dialyzer_option +is_function_dialyzer_option +check_dialyzer_attribute +check_local_opaque_types +initially_reached_types +reachable +family_to_digraph +rel2fam +reached_types +check_unused_types_1 +check_unused_types +add_missing_spec_warnings +exported +check_functions_without_spec +check_specs_without_function +set_generated +nowarn +bounded_fun +check_specs +any_control_characters +remove_non_visible +latin1_char_list +check_module_name +is_fa +is_fa_list +optional_cbs +callback_decl +spec_decl +obsolete_builtin_type +is_obsolete_builtin_type +is_type +is_default_type +used_type +field_type +check_record_types +seen_multiple +seen_once_union +seen_once +remote_type +ann_type +range +user_type +typed_record_field +check_type_2 +check_type_1 +check_type +no_auto_import_types +typeinfo +type_def +find_field +exist_field +update_fields +ginit_fields +init_fields +pattern_fields +pattern_field +check_field +check_fields +used_record +check_record +exist_record +normalise_fields +def_fields +product +record_def +is_valid_call +warn_invalid_call +is_valid_record +warn_invalid_record +map_fields +check_assoc_fields +record_expr +expr_list +if +fun +catch +old_bif +record_info +else +'named fun' +unused +first_anno +named_fun +mc +maybe_match +maybe +lc +case +bc +try +ssa_check_when +expr +is_gexpr_fields +map_field_exact +map_field_assoc +is_map_fields +is_gexpr_list +comp +arith +op_type +is_gexpr_op +is_gexpr +is_guard_expr +is_guard_test2 +is_guard_test +gexpr_list +bif +guard_bif +record_field +gexpr +type_test +guard_test2 +guard_test +guard_tests +elemtype_check +bittype +bit_size_check +set_bit_type +bit_type +expr_bin +is_bit_size_illegal +pat_bit_size +pat_bit_expr +good_string_size_type +pattern_element_1 +bin_element +pattern_element +pattern_bin +pattern_map +arith_op +is_pattern_expr_1 +partial_eval +is_pattern_expr +check_multi_field_init +pattern_list +var +tuple +bin +record_index +char +cons +op +pattern +head +clause +clauses +function_check_max_args +define_function +call_function +check_on_load +imported +add_imports +is_member +check_callback_information +check_unused_records +check_untyped_records +func_location_error +func_location_warning +nowarn_function +check_nifs +check_option_functions +check_bif_clashes +check_undefined_types +drestriction +from_external +check_undefined_functions +add_element +reached_functions +initially_reached +union +check_unused_functions +inline +check_inlines +check_imports +ignore_predefined_funcs +removed_desc +otp_doc_vsn +generated +removed_fa +removed_cat +check_removed +deprecated_desc +next_version +next_major_release +eventually +deprecated_flag +depr_fa +depr_cat +check_deprecated +behaviour_add_conflict +behaviour_add_conflicts +to_external +family_specification +relation_to_family +converse +family_to_relation +relation +behaviour_conflicting +behaviour_missing_callbacks +callbacks +behaviour_callbacks +all_behaviour_callbacks +behaviour_check +check_behaviour +post_traversal_check +disallowed_compile_flags +not_removed +not_deprecated +bif_clashes +dialyzer +function_state +optional_callbacks +opaque +import +export_type +export +callback +behaviour +behavior +attribute_state +start_state +form +map_anno +anno_set_file +set_file +set_form_file +eval_file_attr +eval_file_attribute +includes_qlc_hrl +pre_scan +forms +location +loc +add_lint_warning +add_warning +add_lint_error +bin_seg_size +add_error +pack_warnings +mapfoldl +pack_errors +return_status +is_warn_enabled +guard +usage +nowarn_format +warn_format +is_element +unused_vars +underscore_match +export_vars +shadow_vars +bif_clash +deprecated_function +'-all_available/2-lc$^0/1-0-' +missing_spec_all +keyword_warning +rootname +'-all_available/2-fun-1-' +redefined_builtin_type +'-all_available/2-F/2-1-' +warn_singleton_typevar +nowarn_singleton_typevar +on_load_not_allowed +'-prepare_loading_3/1-lc$^0/1-0-' +warn_redefined_builtin_type +nowarn_redefined_builtin_type +'-partition_on_load/1-fun-0-' +warn_keywords +nowarn_keywords +'-load_mods/1-fun-0-' +'-load_bins/1-fun-0-' +warn_nif_inline +nowarn_nif_inline +'-do_par_fun/2-lc$^0/1-0-' +'-do_par_fun/2-fun-1-' +warn_removed +nowarn_removed +warn_missing_spec_all +'-do_par_fun_each/3-fun-0-' +nowarn_missing_spec_all +warn_missing_spec +nowarn_missing_spec +warn_untyped_record +nowarn_untyped_record +warn_obsolete_guard +nowarn_obsolete_guard +'-load_code_server_prerequisites/0-lc$^0/1-0-' +warn_deprecated_type +nowarn_deprecated_type +eep48 +debug_info +warn_deprecated_function +nowarn_deprecated_function +'-get_doc/2-fun-0-' +warn_unused_record +'-get_type_docs_from_ast/1-fun-0-' +nowarn_unused_record +warn_bif_clash +'-get_function_docs_from_ast/1-fun-0-' +nowarn_bif_clash +warn_unused_type +spec +'-get_function_docs_from_ast/2-fun-0-' +nowarn_unused_type +warn_unused_function +'-set_primary_archive/4-lc$^0/1-0-' +'-module_status/0-lc$^0/1-0-' +nowarn_unused_function +'-module_status/1-lc$^0/1-0-' +warn_unused_import +nowarn_unused_import +'-modified_modules/0-lc$^0/1-0-' +warn_shadow_vars +nowarn_shadow_vars +warn_export_vars +path_files +modified_modules +do_beam_file_md5 +nowarn_export_vars +beam_file_md5 +warn_export_all +module_changed_on_disk +nowarn_export_all +modified +warn_underscore_match +nowarn_underscore_match +cover_compiled +module_status +warn_unused_vars +nowarn_unused_vars +warning_report +compiler_options +lint +cache_warning +used_vars +code_path_cache +maybe_warn_for_cache +exprs_opt +nthtail +has_ext +filter2 +pseudolocals +get_line +format_where +decorate +build +format_mna +format_mf +search +clash +format_mfa +gen_type_paren_1 +gen_type_paren +get_function_docs_from_ast +signature +utf_bittype_size_or_unit +unsized_binary_not_at_end +unsized_binary_in_bin_gen_pattern +undefined_module +flatmap +get_type_docs_from_ast +typed_literal_string +spec_wrong_arity +no_abstract_code +docs_v1 +redefine_module +raw_abstract_v1 +pmod_unsupported +abstract_code +get_doc_chunk_from_ast +'-del_dir_r/1-fun-0-' +old_abstract_code +'-socket_send/1-fun-0-' +dirname +non_latin1_module_unsupported +'-gen_tcp_send/1-fun-0-' +non_integer_bitsize +missing_chunk +file_reply +no_load_nif +nif_inline +chunks +get_doc_chunk +is_dir +multiple_on_loads +invalid_record +file_request +invalid_call +check_args +erts +illegal_record_info +check_and_call +sources +get_doc +illegal_pattern +illegal_map_key +illegal_map_construction +non_existing +where_is_file +illegal_guard_expr +illegal_expr +which +macro_log +character +illegal_bitsize +'-call/4-fun-0-' +'-send_request/3-fun-0-' +export_all +mode_list +'-receive_response/3-fun-0-' +make_binary +empty_module_name +disallowed_nowarn_bif_clash +'-stop/3-fun-0-' +start_get_mode +file_name_1 +ctrl_chars_in_module_name +do_s +compiler +callback_wrong_arity +'$status' +format_status +blank_module_name +file_name +format_status_header +bittype_unit +do_stick_dirs +fname_join +bad_multi_field_init +wildcard_in_update +nostick +debug_options +path_open_first +maybe_stick_dirs +variable_in_record_def +hibernate_after +spawn_opts +could_not_find_registered_name +load_code_server_prerequisites +unused_var +unused_type +name_to_pid +process_was_not_started_by_proc_lib +unused_record +eval_stream2 +parse_erl_exprs +unused_import +'$ancestors' +get_parent +process_not_registered_globally +eval_stream +good +unused_function +set_encoding +process_not_registered +untyped_record +bad +process_not_registered_via +undefined_type +do_par_recv +consult_stream +sendfile_send +get_proc_name +do_par_fun_each +undefined_record +sendfile_fallback_int +do_par_fun +undefined_on_load +undefined_nif +unregister_name +undefined_callback +sendfile_fallback +do_par +undefined_bittype +undefined_behaviour_callbacks +gen_tcp_send +load_bins +load_mods +register_name +socket_send +undefined_behaviour +verify_prepared +unbound_var +whereis_name +type_syntax +partition +partition_on_load +too_many_arguments +prepare_check_uniq_1 +where +stacktrace_guard +'$inet' +stacktrace_bound +prepare_check_uniq +via +get_value +spec_fun_undefined +singleton_typevar +prepare_loading_3 +chunk_size +redefine_type +prepare_loading_2 +do_for_proc +redefine_spec +change_time +change_group +redefine_record +do_prepare_loading +to_list +partition_load +reqids_to_list +change_owner +redefine_optional_callback +redefine_old_bif_import +change_mode +'$prepared$' +reqids_add +redefine_import +redefine_function +atomic_load +reqids_size +reqids_new +redefine_callback +prepare_ensure +path_open +redefine_builtin_type +ensure_modules_loaded_2 +path_script +redefine_bif_import +flush_responses +usort +obsolete_guard_overridden +path_eval +ensure_modules_loaded_1 +obsolete_guard +collection_result +not_exported_opaque +ensure_modules_loaded +replace_path +missing_spec +missing_qlc_hrl +no_reply +del_paths +del_path +path_consult +consult +add_pathsa +check_response +match_underscore_var_pat +match_underscore_var +add_pathsz +receive_response +no_request +add_paths +invalid_removed +ipread_s32bu_p32bu_2 +wait_response +invalid_deprecated +ipread_s32bu_p32bu_int +add_patha +illegal_guard_local_call +'@wait_response_recv_opt' +do_send_request +add_pathz +illegal_bitsize_local_call +ill_defined_optional_callbacks +ill_defined_behaviour_callbacks +add_path +send_request +copy_opened_int +duplicated_export_type +copy_int +duplicated_export +define_import +call_to_redefined_old_bif +call_to_redefined_bif +nocache +pwrite_int +behaviour_info +is_sticky +put_chars +bad_removed +unstick_mod +calling_self +bad_on_load_arity +stick_mod +pread_int +do_call +unstick_dir +bad_on_load +stick_dir +bad_nowarn_unused_function +init_it2 +init_fail +priv_dir +bad_nowarn_bif_clash +bad_module +compiler_dir +dir +get_chars +bad_inline +monitor_return +lib_dir +start_monitor +bad_export_type +bad_dialyzer_option +root_dir +init_it +bad_dialyzer_attribute +bad_deprecated +ram +extension +umerge +bad_callback +raw_write_file_info +raw_read_file_info +bad_bitsize +do_spawn +do_write_file +attribute +unsafe_var +undefined_field +undefined_behaviour_func +get_mode +all_available +shadowed_var +renamed_type +removed_type +get_object_code +del_dir_r +redefine_field +is_loaded +int_list +future_feature +modp +field_name_is_variable +exported_var +removed +load_binary +deprecated_type +'$handle_undefined_function' +call_undefined_function_handler +deprecated_builtin_type +bittype_mismatch +stub_function +concat +basename +load_abs +sync_ensure_on_load +conflicting_behaviours +value_option +pid2name +terminated +undefined_script +bool_option +load_file +try_decompress +module_md5_1 +module_md5 +get_chunk_1 +get_chunk +raise_undef_exception +mfa +remove_handler_failed +filter_stacktrace +filter +removed_failing_filter +remove_filter +handle_filter_failed +bad_return_value +do_apply_filters +filter_default +apply_filters +handler +log_event +internal_log +removed_failing_handler +do_internal_log +allow +remove_handler +without +call_handlers +handlers +filters +log_allowed +'-do_start_slave/3-fun-1-' +'-do_start_slave/3-fun-0-' +relay_loop +already_started +relay_start +do_start_slave +no_master +do_start +code_change +handle_info +handle_cast +noreply +stopped +handle_call +format_error +erlangrc +start_boot +applications_loaded +pool_master +take_over_monitor +rsh_starter +timer_server +stdlib +load +init_kernel_started +mod +maxP +maxT +shell_docs_ansi +prevent_overlapping_partitions +net_ticktime +net_tickintensity +logger_sasl_compatible +notice +logger_level +included_applications +optional_applications +applications +ddll_server +os_server +rex +net_sup +kernel_sup +fixtable_server +file_server_2 +boot_server +modules +vsn +start_link +modules_loaded +win32reg +uri_string +unicode_util +sys +supervisor_bridge +sofs +shell_docs +shell_default +shell +sets +rand +queue +qlc_pt +qlc +proplists +pool +peer +otp_internal +ordsets +orddict +ms_transform +log_mf_h +io_lib_pretty +io_lib_fread +io_lib_format +gen_statem +gen_fsm +gb_trees +gb_sets +filelib +file_sorter +eval_bits +escript +error_logger_tty_h +error_logger_file_h +erl_tar +erl_pp +erl_posix_msg +erl_internal +erl_features +erl_expand_records +erl_error +erl_compile +erl_bits +erl_abstract_code +epp +edlin_type_suggestion +edlin_expand +edlin_context +edlin +digraph_utils +digraph +dict +dets_v9 +dets_utils +dets_sup +dets_server +dets +calendar +c +beam_lib +base64 +array +argparse +wrap_log_reader +user_sup +user_drv +rpc +raw_file_io_list +raw_file_io_inflate +raw_file_io_delayed +raw_file_io_deflate +raw_file_io_compressed +raw_file_io +ram_file +pg2 +pg +net_adm +logger_sup +logger_std_h +logger_proxy +logger_olp +logger_handler_watcher +logger_h_common +logger_formatter +logger_disk_log_h +local_udp +local_tcp +kernel_config +inet_udp +inet_tcp_dist +inet_tcp +inet_sctp +inet_res +inet_parse +inet_hosts +inet_gethost_native +inet_epmd_socket +inet_epmd_dist +inet_dns +inet_db +inet_config +inet6_udp +inet6_tcp_dist +inet6_tcp +inet6_sctp +group_history +group +global_search +global_group +gen_udp_socket +gen_udp +gen_tcp_socket +gen_tcp +gen_sctp +erpc +erl_signal_handler +erl_reply +erl_epmd +erl_distribution +erl_compile_server +erl_boot_server +dist_util +dist_ac +disk_log_sup +disk_log_server +disk_log_1 +disk_log +application_starter +supervisor +proc_lib +logger_simple_h +logger_config +logger_backend +logger_filters +gen_server +gen_event +gen +file_io_server +file_server +erl_lint +code_server +application_master +application_controller +application +preloaded +noshell +home +progname +net +no_uniconde_traslation +no_function +no_data +not_enough_memory +invalid_parameter +invalid_flags +invalid_data +insufficient_buffer +esystem +esocktype +eservice +eoverflow +enxio +enoname +enodata +enametoolong +emem +efault +efamily +efail +ebadflags +eaddrfamily +can_not_complete +address_not_associated +zone_indices +wwanpp2 +wwanpp +well_known +valid_lifetime +unreachable +unicast_addrs +unchanged +transient +testing +tentative +suffix_origin +speed +software_loopback +service +router_advertisement +register_adapter_suffix +receive_only +reasm_size +prefix_origin +prefixes +preferred_lifetime +preferred +ppp +phys_addr +out_qlen +out_errors +out_discards +out_nucast_pkts +out_ucast_pkts +out_octets +oper_status +operational +on_link_prefix_length +numericserv +numerichost +no_multicast +not_present +non_operational +nofqdn +netbios_over_tcpip_enabled +name_info +namereqd +multicast_addrs +mask +manual +lower_layer_down +link_layer_address +lease_lifetime +last_change +iso88025_tokenring +ipv6_other_stateful_config +ipv6_managed_address_config_supported +ipv6_index +ipv6_enabled +ipv4_enabled +in_unknown_protos +in_errors +in_discards +in_nucast_pkts +in_ucast_pkts +in_octets +internal_oper_status +ieee80216_wman +ieee80211 +idn +friendly_name +fddi +ethernet_csmacd +duplicate +dns_suffix +dns_server_addrs +dns_eligible +disconnected +ddns_enabled +dhcp_v4_enabled +dhcp +description +deprecated +dad_state +bcast_addr +anycast_addrs +admin_status +address_info +divert +'DIVERT' +pfsync +'PFSYNC' +rohc +'ROHC' +wesp +'WESP' +shim6 +'SHIM6' +hip +'HIP' +manet +'MANET' +'mpls-in-ip' +'MPLS-IN-IP' +udplite +'UDPLite' +'mobility-header' +'Mobility-Header' +'rsvp-e2e-ignore' +'RSVP-E2E-IGNORE' +fc +'FC' +'SCTP' +pipe +'PIPE' +sps +'SPS' +iplt +'IPLT' +sscopmce +'SSCOPMCE' +crudp +'CRUDP' +crtp +'CRTP' +fire +'FIRE' +isis +'ISIS' +ptp +'PTP' +sm +'SM' +smp +'SMP' +uti +'UTI' +srp +'SRP' +stp +'STP' +iatp +'IATP' +ddx +'DDX' +l2tp +'L2TP' +pgm +'PGM' +carp +vrrp +'CARP' +'ipx-in-ip' +'IPX-in-IP' +'compaq-peer' +'Compaq-Peer' +snp +'SNP' +ipcomp +'IPComp' +'a/n' +'A/N' +qnx +'QNX' +scps +'SCPS' +aris +'ARIS' +pim +'PIM' +pnni +'PNNI' +ifmp +'IFMP' +gmtp +'GMTP' +encap +'ENCAP' +etherip +'ETHERIP' +'scc-sp' +'SCC-SP' +micp +'MICP' +'IPIP' +'ax.25' +'AX.25' +mtp +'MTP' +larp +'LARP' +'sprite-rpc' +'Sprite-RPC' +ospf +'OSPFIGP' +eigrp +'EIGRP' +tcf +'TCF' +dgp +'DGP' +'nsfnet-igp' +'NSFNET-IGP' +ttp +'TTP' +vines +'VINES' +'secure-vmtp' +'SECURE-VMTP' +vmtp +'VMTP' +'iso-ip' +'ISO-IP' +'wb-expak' +'WB-EXPAK' +'wb-mon' +'WB-MON' +'sun-nd' +'SUN-ND' +'br-sat-mon' +'BR-SAT-MON' +pvp +'PVP' +wsn +'WSN' +cphb +'CPHB' +cpnx +'CPNX' +ipcv +'IPCV' +visa +'VISA' +'sat-mon' +'SAT-MON' +ippc +'IPPC' +rvd +'RVD' +kryptolan +'KRYPTOLAN' +'sat-expak' +'SAT-EXPAK' +cftp +'CFTP' +'ipv6-opts' +'IPV6-OPTS' +'ipv6-nonxt' +'IPV6-NONXT' +'ipv6-icmp' +'IPV6-ICMP' +'SKIP' +tlsp +'TLSP' +mobile +'MOBILE' +narp +'NARP' +swipe +'SWIPE' +'i-nlsp' +'I-NLSP' +ah +'AH' +esp +'ESP' +bna +'BNA' +dsr +'DSR' +gre +'GRE' +rsvp +'RSVP' +idrp +'IDRP' +'ipv6-frag' +'IPV6-FRAG' +'ipv6-route' +'IPV6-ROUTE' +sdrp +'SDRP' +'IPV6' +il +'IL' +'tp++' +'TP++' +'idpr-cmtp' +'IDPR-CMTP' +ddp +'DDP' +xtp +'XTP' +idpr +'IDPR' +'3pc' +'3PC' +dccp +'DCCP' +'merit-inp' +'MERIT-INP' +'mfe-nsp' +'MFE-NSP' +netblt +'NETBLT' +'iso-tp4' +'ISO-TP4' +irtp +'IRTP' +rdp +'RDP' +'leaf-2' +'LEAF-2' +'leaf-1' +'LEAF-1' +'trunk-2' +'TRUNK-2' +'trunk-1' +'TRUNK-1' +'xns-idp' +'XNS-IDP' +prm +'PRM' +hmp +'HMP' +dcn +'DCN-MEAS' +mux +'MUX' +'UDP' +'CHAOS' +xnet +'XNET' +emcon +'EMCON' +argus +'ARGUS' +'PUP' +nvp +'NVP-II' +'bbn-rcc' +'BBN-RCC-MON' +igp +'IGP' +'EGP' +cbt +'CBT' +'TCP' +st2 +'ST2' +ipencap +'IP-ENCAP' +ggp +'GGP' +'IGMP' +'ICMP' +'IP' +sockets +select_write +select_read +eagain +create_accept_socket +zero +write_waits +write_tries +write_pkg +write_fails +write_byte +v6only +void +use_min_mtu +use_ext_recvinfo +user_timeout +usec +update_connect_context +update_accept_context +unknown +unicast_hops +unblock_source +txqlen +tunnel6 +tunnel +transparent +throughput +syncnt +staticarp +spec_dst +sndtimeo +sndlowat +sndbufforce +slen +slave +simplex +set_peer_primary_addr +setfib +sendsrcaddr +sendfile_waits +sendfile_tries +sendfile_pkg_max +sendfile_pkg +sendfile_max +sendfile_fails +sendfile_byte +select_sent +select_failed +sec +rxq_ovfl +rtoinfo +rthdr +router_alert +rights +retopts +reset_streams +renaming +reliability +recvpktinfo +recvorigdstaddr +recvopts +recvif +recvhoplimit +recverr +recvdstaddr +read_tries +read_pkg +read_fails +read_byte +rdm +rcvtimeo +rcvlowat +rcvbufforce +pup +pronet +promisc +primary_addr +ppromisc +portsel +portrange +pointopoint +pkttype +pktinfo +peercred +peer_auth_chunks +peer_addr_params +peek +passcred +partial_delivery_point +outgoing +otherhost +origdstaddr +oobinline +oob +oactive +num_unknown_cmds +num_unexpected_writes +num_unexpected_reads +num_unexpected_connects +num_unexpected_accepts +num_threads +num_general_errors +not_bound +notrailers +nosignal +noopt +nodefrag +noarp +nlen +netrom +multicast_hops +multicast_all +mtu_discover +msfilter +minttl +mincost +metricom +mem_start +mem_end +md5sig +maxseg +maxburst +master +mark +lower_up +lowdelay +local_auth_chunks +localtlk +link2 +link1 +link0 +leave_group +knowsepoch +kernel +keepintvl +keepidle +keepcnt +join_group +i_want_mapped_v4_addr +irq +ipv6 +ipip +ipcomp_level +ip +integer_range +initmsg +infiniband +implink +igmp +ifindex +ieee1394 +ieee802 +icmp6 +icmp +host +hopopts +hoplimit +hmac_ident +hdrincl +hatype +get_peer_addr_info +get_overlapped_result +frelay +freebind +fragment_interleave +fastroute +faith +explicit_eor +events +eui64 +esp_trans_level +esp_network_level +errqueue +eor +egp +eether +echo +dynamic +dying +dup +dstopts +drop_source_membership +dormant +dontfrag +dma +dlci +disable_fragments +delayed_ack_time +default_send_params +data_size +ctrunc +credentials +cork +context +congestion +confirm +completion_status +cmsg_cloexec +checksum +chaos +cantconfig +cancelled +busy_poll +block_source +bindtodevice +base_addr +bad_data +ax25 +automedia +autoclose +auth_level +auth_key +auth_delete_key +auth_chunk +auth_asconf +auth_active_key +authhdr +atm +associnfo +arcnet +appletlk +already +allmulti +alen +add_source_membership +add_socket +addrform +adaption_layer +acc_waits +acc_tries +acc_fails +acc_success +acceptfilter +acceptconn +zerocopy +wstates +write_pkg_max +want +txtime +txstatus +time_exceeded +sourceaddr +socket_level +slist +siftxqlen +sifnetmask +sifmtu +sifdstaddr +sifbrdaddr +sifaddr +send_failure +sender_dry +selected +rstates +remote +reject_route +read_waits +read_pkg_max +probe +port_unreach +policy_fail +pkt_toobig +peer_rwnd +peer_error +partial_delivery +otp_socket_option +origin +onoff +offender +num_writers +num_tstreams +num_tseqpkgs +num_tdgrams +num_sockets +num_readers +num_pudp +num_ptcp +num_psctp +num_pip +number_peer_destinations +num_outstreams +num_dlocal +num_dinet6 +num_dinet +num_cnt_bits +num_acceptors +null +not_neighbour +noroute +nogroup +net_unreach +net_unknown +multiaddr +missing +asocmaxrxt +max_instreams +max_init_timeo +max_attempts +local_rwnd +listening +io_num_threads +io_backend +iov_max +interface +initial +include +in6_sockaddr +in4_sockaddr +how +host_unreach +host_unknown +giftxqlen +gifnetmask +gifname +gifmtu +gifmap +gifindex +gifhwaddr +gifflags +gifdstaddr +gifconf +gifbrdaddr +gifaddr +frag_needed +exclude +eei +dtor +dont +do +dest_unreach +data_io +ctype +counter_wrap +cookie_life +closing +bufsz +boolean +authentication +assoc_id +association +adm_prohibited +address +addr_unreach +adaptation_layer +symlink +device +no_reuse +dont_need +will_need +random +skip_type_check +gc_buffer +out_of_memory +acquired +lock_order_violation +trace_ts +gc_zlib +unknown_error +version_error +buf_error +mem_error +stream_error +stream_end +already_initialized +not_initialized +sub_get +handle_sys_task +handle_incoming_signals +done +erts_dirty_process_signal_handler +send_copy_req +send_copy_reqs +check_send_copy_req +switch_area +not_handled_message +working +idle +msg_loop +nif_not_loaded +ets_info_binary_iter +ets_info_binary_error +sched_wall_time +kernel_refc +find_lac +code_purger +literal_area_collector +set_code_and_literal_cleaner_prio +'@flush_monitor_messages_refopt' +mc_refill +is_map_iter +mc_iterator +get_cpc_opts +mseg_alloc +gcopt +allow_gc +'-inlined-error_with_inherited_info/3-' +ensure_tracer_module_loaded +gc_info +schedulers +receive_allocator +insert_info +instance +insert_instance +mk_res_list +get_alloc_info +process_table +module_table +module_refs +loaded_code +fun_table +external_alloc +export_table +export_list +ets_misc +atom_table +atom_space +aa_mem_data +receive_emd +fix_alloc +au_mem_data +sbcs +mbcs_pool +mbcs +au_mem_current +au_mem_blocks_1 +blocks +au_mem_blocks +acc_blocks_size +ets_alloc +eheap_alloc +binary_alloc +au_mem_acc +au_mem_fix +fix_types +fix_proc +proc +msg_ref +ll_ptimer +hl_ptimer +bif_timer +accessor_bif_timer +get_fix_proc +get_memval +memory_1 +rvrs +processor_node +cput_i2e_tag +cput_i2e_tag_map +cput_i2e +cput_e2i +logical +thread +processor +core +cput_e2i_clvl +internal_cpu_topology +get_cookie +auth +set_cookie +passive_cnct +send_nosuspend +fun_info_1 +disconnect +disconnect_node +crasher +new_stacktrace +prepare_loading_1 +is_alive +garbage_collect_message_area +get_gc_opts +stderr +bad_option +radix +digits_per_small +trim_zeroes +get_sign +combine_pairs +combine +segmentize_1 +segmentize +big_binary_to_int +clean +'no server found' +ebusy +std_error +error_report +file_error +invalid_current_directory +'-prim_read_file_info/3-inlined-0-' +'-prim_list_dir/2-inlined-0-' +'-prim_get_file/2-inlined-0-' +'-open_archive/4-inlined-0-' +'-foldl_archive/3-inlined-0-' +'-start/0-fun-0-' +'-efile_get_mods_par/3-fun-0-' +'-efile_gm_spawn_1/5-fun-0-' +'-prim_get_file/2-fun-0-' +'-prim_list_dir/2-fun-0-' +'-prim_read_file_info/3-fun-0-' +'-open_archive/4-fun-0-' +'-ensure_virtual_dirs/6-fun-0-' +'-ensure_virtual_dirs/6-fun-1-' +'-foldl_archive/3-fun-0-' +'-load_prim_archive/3-fun-0-' +load_prim_archive +real_path +normalize +win32_pathtype +unix_pathtype +pathtype +absname_vr +volumerelative +relative +absolute +ipv4_addr +ipv4_address +ipv4_list +is_prefix +archive_split +no_match +string_match +archive +no_split +name_split +path_join +path_split +to_strs +keyins +keysort +deep_member +send_all +win32 +is_basename +clear_cache +cache_new +foldl_archive +ensure_virtual_dirs +open_archive +cache +apply_archive +prim_get_cwd +archive_read_file_info +prim_read_file_info +archive_list_dir +prim_list_dir +archive_get_file +prim_get_file +primary +prim_set_primary_archive +do_prim_purge_cache +prim_purge_cache +loader_debug +prim_init +port_error +ll_close +ll_open_set_bind +ll_udp_open +ll_tcp_connect +udp_options +tcp_timeout +tcp_options +inet_stop_port +inet_get_cwd +inet_read_link_info +inet_read_file_info +inet_list_dir +inet_send_and_rcv +inet_get_file_from_port1 +inet_get_file_from_port +inet_timeout_handler +inet_exit_port +find_collect +find_loop +connect_master +find_master +bad_return +gm_process +gm_arch_get +gm_get_mods +efile_gm_get_1 +efile_gm_get +efile_gm_spawn_1 +efile_gm_spawn +efile_gm_recv +efile_any_archives +efile_get_mods_par +handle_get_modules +efile_timeout_handler +efile_get_cwd +efile_read_file_info +efile_list_dir +efile_set_primary_archive +emfile +efile_get_file_from_port3 +'prim_load port died' +port_died +efile_get_file_from_port2 +efile_get_file_from_port +handle_timeout +handle_exit +handle_stop +handle_get_cwd +handle_read_link_info +handle_read_file_info +handle_list_dir +handle_purge_archive_cache +handle_set_primary_archive +handle_get_file +bad_state +report +enotdir +enoent +check_file_result +purge_archive_cache +set_primary_archive +get_path +init_ack +noport +efile +start_efile +hosts +start_inet +loader +prim_state +'-filter_fun/0-fun-0-' +'-include_acc/3-fun-0-' +'-get_cd_loop/11-fun-0-' +'-get_cd_loop/11-fun-1-' +'-get_cd_loop/11-fun-2-' +pwrite_binary +pwrite_iolist +skipper +skip_iolist +splitter +split_iolist +local_file_header +local_file_header_from_bin +bad_cd_file_header +cd_file_header +cd_file_header_from_bin +dos_date_time_to_datetime +add_extra_info +cd_file_header_to_file_info +eocd +eocd_and_comment_from_bin +regular +binary_io +set_file_info +prim_file_io +find_eocd_header +seek +bad_eocd +get_end_of_central_dir +get_filename_from_b2 +bad_central_directory +get_file_header +get_cd_loop +get_central_dir +offset_over_z_data_descriptor +unsupported_compression +get_z_all +bad_local_file_header +bad_local_file_offset +get_z_file +get_zip_input +lists_foldl +include_acc +illegal_filter +primzip_file +do_foldl +foldl +primzip +do_open +filter_fun_throw +filter_fun +prim_zip +skip_unicast +skip_multicast +skip_friendly_name +skip_dns_server +skip_anycast +include_wins_info +include_tunnel_bindingorder +include_prefix +include_gateways +include_all_interfaces +include_all_compartments +'-getaddrinfo/2-lc$^0/1-0-' +nif_if_names +nif_if_index2name +nif_if_name2index +nif_get_ip_address_table +nif_get_interface_info +nif_get_if_entry +nif_get_adapters_addresses +nif_getifaddrs +nif_getaddrinfo +nif_getnameinfo +nif_gethostname +if_names +if_index2name +if_name2index +get_ip_address_table +get_if_entry +get_interface_info +no_skips_no_includes +no_skips_all_includes +all_skips_no_includes +all_skips_all_includes +get_adapters_addresses +getaddrinfo +getnameinfo +peek_off +'-supports/2-inlined-0-' +'-init/0-fun-0-' +'-init/0-fun-1-' +'-init/0-fun-2-' +'-init/0-fun-3-' +'-init/0-fun-4-' +'-supports/1-fun-4-' +'-supports/1-fun-3-' +'-supports/1-fun-2-' +'-supports/1-fun-1-' +'-supports/1-fun-0-' +'-supports/2-fun-0-' +'-is_supported/2-fun-4-' +'-is_supported/2-fun-3-' +'-is_supported/2-fun-2-' +'-is_supported/2-fun-1-' +'-is_supported/2-fun-0-' +'-bind/3-lc$^0/1-0-' +'-enc_ioctl_flags/2-fun-0-' +'-merge_sockaddr/2-fun-0-' +'-enc_msg/1-fun-0-' +'-enc_cmsgs/2-lc$^0/1-0-' +level +'-dec_cmsgs/2-lc$^0/1-0-' +nif_cancel +nif_ioctl +nif_peername +nif_sockname +nif_getopt +nif_setopt +nif_shutdown +nif_finalize_close +nif_close +nif_recvmsg +nif_recvfrom +nif_recv +nif_sendfile +nif_sendmsg +nif_sendto +nif_send +nif_accept +nif_listen +nif_connect +nif_bind +nif_open +nif_supports +nif_command +nif_info +p_get +p_put +ioctl_flag +invalid_ioctl_flag +invalid_socket_option +sndctrlbuf +rcvctrlbuf +rcvbuf +iow +controlling_process +otp +enc_sockopt +dec_cmsgs +enc_cmsgs +enc_msg +msg_flag +enc_msg_flags +enc_path +merge_sockaddr +enc_sockaddr +enc_protocol +enc_ioctl_flags +enc_ioctl_request +cancel +sifflags +ioctl_request +ioctl +value_spec +getopt_native +getopt_result +socket_option +setopt_common +setopt_native +finalize_close +recvmsg +improper_list +element_not_binary +invalid_iov +rest_iov +msg +with +ctrl +sendmsg_invalid +iov +sendmsg_result +completion +nth +domain +get_is_supported +p_get_is_supported +is_supported +is_supported_option +fold +supports +protocol +options_table +protocols_table +put_supports_table +msg_flags +ioctl_flags +ioctl_requests +options +protocols +socket_debug +debug_filename +use_registry +registry +unknown_monitor +unknown_socket +'-loop/1-fun-0-' +'-do_which_sockets/2-lc$^0/1-0-' +whoami +user_size +user_which_monitors +user_update +user_take +user_lookup +user_delete +sock_which_monitors +sock_update +sock_take +sock_lookup +mon_size +mon_update +mon_take +mon_lookup +mon_delete +do_cancel_monitor_socket +nosock +mon +msocket +do_monitor_socket +do_which_sockets +sock_size +socket +mk_down_msg +error_msg +mk_log_msg +log_msg +handle_unexpected_msg +handle_monitored_by2 +handle_monitored_by +handle_user_down_cleanup +handle_user_down +bad_request +send_down +handle_send_down +user_sock_delete_update +handle_delete_socket +handle_add_socket +sendfile_deferred_close +'$socket' +which_monitors +number_of_monitors +cancel_monitor +which_sockets +number_of +socket_registry +enqueue_nif +enqueue_input_1 +enqueue_input +bad_memlevel +arg_mem +bad_windowbits +arg_bitsz +bad_eos_behavior +arg_eos_behavior +bad_compression_method +arg_method +bad_compression_strategy +rle +huffman_only +filtered +arg_strategy +bad_compression_level +best_speed +best_compression +arg_level +bad_flush_mode +full +arg_flush +getStash_nif +setStash_nif +clearStash_nif +empty +restore_progress +save_progress +append_iolist +dequeue_next_chunk +dequeue_all_chunks_1 +dequeue_all_chunks +gunzip +gzip +unzip +zip +data_error +uncompress +finish +compress +crc32_nif +getBufSize_nif +getBufSize +setBufSize_nif +setBufSize +inflateEnd_nif +inflateEnd +safeInflate +need_dictionary +finished +yield_inflateChunk +inflateChunk +inflate_opts +inflate_nif +exception_on_need_dict +inflate +inflateReset_nif +inflateReset +inflateGetDictionary_nif +not_supported +inflateGetDictionary +inflateSetDictionary_nif +inflateSetDictionary +inflateInit_nif +cut +inflateInit +deflateEnd_nif +deflateEnd +deflate_nif +zlib_opts +deflate_opts +deflateParams_nif +deflate +deflateParams +deflateReset_nif +deflateReset +deflateSetDictionary_nif +deflateSetDictionary +deflateInit_nif +deflated +deflateInit +set_controller_nif +set_controlling_process +to_posix_seconds +from_posix_seconds +is_path_translatable +decode_path +encode_path +proplist_get_value +reverse_list +altname_nif +get_cwd_nif +set_cwd_nif +get_device_cwd_nif +del_dir_nif +del_file_nif +make_dir_nif +rename_nif +make_soft_link_nif +make_hard_link_nif +read_info_nif +read_link_nif +list_dir_nif +altname +make_symlink +make_link +del_dir +make_dir +set_cwd +get_dcwd +file_info_convert_ctime +file_info_convert_mtime +universal +file_info_convert_atime +throw_on_error +set_time_nif +set_time +set_permissions_nif +set_permissions +set_owner_nif +set_owner +write_file_info_1 +write_file_info +posix +adjust_times +read_handle_info_1 +read_handle_info +read_info_1 +read_link_info +no_translation +gl +list_dir_convert +list_dir_1 +list_dir_all +list_dir +translate_raw_name +read_link_1 +read_link_all +read_link +write_file +read_file_nif +read_file +read_handle_info_nif +delayed_close_nif +get_handle_nif +truncate_nif +allocate_nif +advise_nif +sync_nif +seek_nif +pwrite_nif +pread_nif +write_nif +read_nif +close_nif +file_desc_to_ref_nif +open_nif +read_ahead +fill_fd_option_map +build_fd_data +not_on_controlling_process +get_fd_data +reset_write_position +get_handle +ipread_s32bu_p32bu_nif +ipread_s32bu_p32bu +internal_get_nif_resource +sequential +pwrite_list +pwrite_plain +pwrite +pread_list +pread +position_1 +bof +cur +datasync +sync +allocate +advise +truncate +write_1 +read_line_1 +read_line +read_1 +r_ahead_size +r_buffer +make_fd +file_desc_to_ref +copy_opened +file_descriptor +helper_loop +bound +connecting +accepting +multicast +no_pointtopoint +no_broadcast +down +up +term +ssl +sctp_setadaptation +sctp_assocparams +addr_over +unordered +sctp_assoc_value +sctp_event_subscribe +sackdelay_disable +sackdelay_enable +pmtud_disable +pmtud_enable +hb_demand +hb_disable +hb_enable +sctp_paddrparams +sctp_prim +sctp_setpeerprim +sctp_paddrinfo +eprotonosupport +'-bindx/3-lc$^0/1-0-' +'-type_value_2/2-fun-1-' +'-type_value_2/2-fun-0-' +'-enc_value_2/2-lc$^0/1-1-' +'-enc_value_2/2-lc$^1/1-0-' +ctl_cmd +get_ip6 +get_ip4 +get_ip +get_addr +get_addrs +ip6_loopback +ip6_any +ip6_to_bytes +ip4_loopback +ip4_any +ip4_to_bytes +utf8_to_characters +tree +ktree_keys +ktree_update +ktree_insert +ktree_get +is_defined +ktree_is_defined +ktree_empty +len +rev +build_iflist +build_ifaddrs_opts +build_ifaddrs +encode_ifname +enc_time +dec_status +dec_stats +decode_stats +send_oct +send_max +send_cnt +send_avg +recv_oct +recv_max +recv_dvi +recv_cnt +recv_avg +enc_stats +encode_stats +subs_empty_out_q +dec_subs +decode_subs +enc_subs +encode_subs +encode_ifopt_val +encode_ifopts +decode_ifopts +dec_ifopt +enc_ifopt +mtu +dstaddr +broadaddr +type_ifopt +merge_fields +merge_options +need_template +multi +dec +dec_opt_val +decode_opt_val +enc_opts +encode_opts +once +enc_opt_val +encode_opt_val +enum_name +enum_val +enum_names +enum_vals +borlist +dec_value_tuple +decode +dec_value +flowinfo +scope_id +enc_value_2 +enc_value_tuple +enc_value_1 +enc_value_default +enc_value +family +loopback +uint8 +uint24 +uint16 +sockaddr +sctp_assoc_id +linkaddr +ether +bool8 +binary_or_uint +enum +bitenumlist +type_value_2 +type_value_record +type_value_tuple +type_value_1 +type_value_default +record +type_value +membership +int +uint +mif +opts +type_opt_1 +type_opt +dec_opt +sndbuf +show_econnreset +send_timeout_close +send_timeout +sctp_status +sctp_set_peer_primary_addr +sctp_rtoinfo +sctp_primary_addr +sctp_peer_addr_params +sctp_nodelay +sctp_maxseg +sctp_initmsg +sctp_i_want_mapped_v4_addr +sctp_get_peer_addr_info +sctp_events +sctp_disable_fragments +sctp_delayed_ack_time +sctp_autoclose +sctp_associnfo +sctp_adaptation_layer +reuseport_lb +reuseport +reuseaddr +recvttl +recvtos +recvtclass +recbuf +read_packets +pktoptions +nopush +nodelay +netns +multicast_ttl +multicast_loop +multicast_if +low_watermark +low_msgq_watermark +keepalive +ipv6_v6only +high_watermark +high_msgq_watermark +header +exit_on_close +exclusiveaddruse +drop_membership +dontroute +deliver +delay_send +buffer +bind_to_device +add_membership +enc_opt +is_sockopt_val +attach +detach +unrecv +getservbyport1 +getservbyport +getservbyname1 +getservbyname +gethostname +getstatus +getprotocol +gettype +getindex +ignorefd +getfd +getstat +subscribe +ifset +ifget +getiflist +netmask +broadcast +pointtopoint +getifaddrs_ifget +hwaddr +hwaddr_last +comp_ifaddrs_3 +comp_ifaddrs_2 +comp_ifaddrs_flags +comp_ifaddrs +enotsup +getifaddrs +chgopts +chgopt +getopts +getopt +setopt +socknames +setsockname +sockname +sctp_assoc_change +peernames +setpeername +peername +recvfrom0 +recvfrom +async_recv +recv0 +recv +sendfile_1 +sendfile_maybe_uncork +sendfile_maybe_cork +sctp_default_send_param +sctp_sndrcvinfo +sendmsg +uint32 +do_sendto +sendto +peeloff +listen +async_accept +accept_opts +accept0 +accept +connectx0 +addr_list +connectx +async_connect0 +async_connect +connect0 +bindx_check_addrs +bindx +addr +do_bind +bind +send_pend +close_pend_loop +close_port +linger +shutdown_1 +read_write +drv2protocol +sctp +protocol2drv +seqpacket +dgram +enc_type +inet6 +enc_family +bool +fdopen +prim_inet +arg_reg_alloc +prim_eval +peek_head +copying_read +unlock +try_lock +find_byte_index +wipe +write +read_iovec +read +shutdown_timeout +not_allowed +starting +'-to_string/2-lc$^1/1-1-' +'-to_string/2-lc$^0/1-0-' +'-notify/1-fun-0-' +'-get_pids/2-lc$^0/1-0-' +'-do_boot/2-fun-0-' +'-eval_script/2-fun-1-' +'-eval_script/2-fun-2-' +'-eval_script/2-fun-0-' +'-load_modules/2-lc$^0/1-0-' +'-load_modules/2-lc$^1/1-2-' +'-load_modules/2-lc$^2/1-3-' +'-load_modules/2-lc$^3/1-4-' +'-load_modules/2-lc$^4/1-1-' +prepared +'-prepare_loading_fun/0-fun-0-' +'-patch_path/2-lc$^0/1-0-' +'-patch_dir/2-lc$^0/1-1-' +'-patch_dir/2-lc$^1/1-0-' +'-shutdown_timer/1-fun-0-' +'-run_on_load_handlers/2-fun-0-' +'-run_on_load_handler/2-fun-0-' +standard_error +format +io_lib +'-debug_profile_format_mfas/1-fun-0-' +'-collect_loaded_mfas/0-lc$^1/1-0-' +'-collect_loaded_mfas/0-lc$^0/1-1-' +bad_generator +'-collect_loaded_mfas/2-lc$^0/1-0-' +collect_mfa +collect_mfas +all_loaded +collect_loaded_mfas +sort +debug_profile_format_mfas +snifs +debug_profile_mfas +debug_profile_stop +debug_profile_start +on_load_function_failed +on_load_handler_returned_ok +spawn_monitor +run_on_load_handler +running_on_load_handler +on_load_loop +on_load_handler_init +start_on_load_handler_process +run_on_load +run_on_load_handlers +archive_extension +objfile_extension +set_argument +get_argument1 +to_strings +get_flag_args +get_flag_list +get_flag +update_flag +get_args +flag +check +start_extra_arg +start_arg2 +start_arg +eval_arg +end_args +arg +parse_boot_args +timer +flush_timout +shutdown_time +shutdown_timer +load_module +do_load_module +explain_add_head +otp_release +nofile +explain_ensure_loaded_error +exprs +new_bindings +erl_eval +parse_exprs +erl_parse +erl_anno +dot +erl_scan +start_it +start_em +start_in_kernel +funny_splitwith +funny_split +directory +file_info +read_file_info +patch_dir +patch_path +extract_var +add_var +fix_path +make_path +prepare_loading_fun +load_rest +load_failed +get_modules +load_modules +'unexpected command in bootfile' +kernel_load_completed +primLoad +preLoaded +kernelProcess +eval_script +get_cwd +script +'bootfile format error' +'cannot get bootfile' +not_found +get_boot +pz +pa +path_flags +bootfile +invalid_boot_var_argument +boot_var +get_boot_vars_1 +get_boot_vars +no_or_multiple_bindir_variables +bindir +check_bindir +no_or_multiple_root_variables +root +get_root +es +init__boot__on_load_handler +init_debug_flag +init_debug +path +do_boot +add_to_kernel +set_path +start_prim_loader +kernel_pid +terminate +del +sub +do_unload +logger_server +unload +kill_all_ports +kill_em +get_pids +kill_all_pids +resend +shutdown_loop +shutdown_kernel_pid +get_kernelpid +get_logger +heart +get_heart +prepare_shutdown +global_name_server +global_prepare_shutdown +shutdown_pids +stop_heart +clear_system +do_restart +do_stop +stopping +set_flag +config +stdout +io_request +user +do_handle_msg +new_state +handle_msg +loop +new_kernelpid +garb_boot_loop +foreach +get_file +erl_prim_loader +do_ensure_loaded +progress +boot_loop +crash +halt_string +things_to_string +flatten +join +printable_list +to_string +state +relaxed +strict +code_path_choice +map +b2s +b2a +s +eval +prepare_run_args +profile_boot +stop_1 +is_bytelist +reboot +interactive +embedded +mode +request +wait_until_started +notify_when_started +make_permanent +ensure_loaded +fetch_loaded +get_status +bs2ss +bs2as +set_script_name +absname +filename +get_script_name +script_name +script_id +get_argument +get_plain_arguments +get_arguments +set_configfd +get_configfd +done_in_microseconds +debug +'-start/2-fun-0-' +'-restart/0-fun-0-' +if_loaded +fatal +boot +continue +died +test_progress +do_test_hard_purge +continued +started +do_test_soft_purge +do_test_purge +cpc_make_requests +cpc_request +cpc_sched_kill +cpc_sched_kill_waiting +cpc_list_rm +cpc_handle_down +cpc_reverse +cpc_result +cpc_receive +cpc_kill +cpc_static +check_proc_code +do_finish_after_on_load +do_soft_purge +do_purge +check_requests +soft_purge +purge +change_prio +test_purge +handle_request +wait_for_request +sleep +other +gc +check_io +aux +prim_net +prim_socket +zlib +prim_buffer +prim_tty +'TRACE' +'DELETE' +'PUT' +'POST' +'HEAD' +'GET' +'OPTIONS' +'Proxy-Connection' +'Keep-Alive' +'Cookie' +'X-Forwarded-For' +'Set-Cookie2' +'Set-Cookie' +'Accept-Ranges' +'Last-Modified' +'Expires' +'Etag' +'Content-Type' +'Content-Range' +'Content-Md5' +'Content-Location' +'Content-Length' +'Content-Language' +'Content-Encoding' +'Content-Base' +'Allow' +'Www-Authenticate' +'Warning' +'Vary' +'Server' +'Retry-After' +'Public' +'Proxy-Authenticate' +'Location' +'Age' +'User-Agent' +'Referer' +'Range' +'Proxy-Authorization' +'Max-Forwards' +'If-Unmodified-Since' +'If-Range' +'If-None-Match' +'If-Match' +'If-Modified-Since' +'Host' +'From' +'Authorization' +'Accept-Language' +'Accept-Encoding' +'Accept-Charset' +'Accept' +'Via' +'Upgrade' +'Transfer-Encoding' +'Pragma' +'Date' +'Connection' +'Cache-Control' +process_low +process_normal +process_high +process_max +characters_to_list_trap_4 +characters_to_list_trap_3 +characters_to_list_trap_2 +characters_to_list_trap_1 +characters_to_utf8_trap +md5_trap +ram_file_drv +udp_inet +tcp_inet +sendfile +ttl +tclass +tos +empty_out_q +udp_error +udp_passive +tcp_error +tcp_closed +tcp_passive +inet_reply +inet_async +udp +tcp +unspec +inet +spawn_forker +vanilla +delete_trap +select_trap +replace_trap +count_trap +select_delete_trap +darwin +unix +erts_beamasm +list_to_integer +binary_to_integer +from_keys +unalias +beamfile_module_md5 +beamfile_chunk +prepare_loading +get_creation +abort_pending_connection +ets_raw_next +ets_raw_first +ets_lookup_binary_info +spawn_system_process +counters_info +counters_put +counters_add +counters_get +counters_new +compare_exchange +exchange +add_get +add +atomics +atomics_new +erase_persistent_terms +persistent_term +internal_select_delete +internal_delete_all +is_map_key +map_get +gather_carrier_info +gather_alloc_histograms +map_next +new_connection +get_dflags +iolist_to_iovec +set_signal +fmod +ceil +floor +has_prepared_code_on_load +copy_shared +size_shared +split +purge_module +check_dirty_process_code +is_process_executing_dirty +map_info +fun_info_mfa +take +cmp_term +values +update +remove +merge +keys +is_key +from_list +find +maps +map_size +is_map +inspect +printable_range +binary_to_float +float_to_binary +integer_to_binary +delete_element +insert_element +finish_loading +dt_append_vm_tag_data +dt_prepend_vm_tag_data +dt_restore_tag +dt_spread_tag +dt_get_tag_data +dt_get_tag +dt_put_tag +posixtime_to_universaltime +universaltime_to_posixtime +check_old_code +native_name_encoding +file +is_translatable +internal_normalize_utf8 +internal_native2name +internal_name2native +prim_file +nif_error +decode_unsigned +encode_unsigned +referenced_byte_size +list_to_bin +part +at +longest_common_suffix +longest_common_prefix +matches +compile_pattern +binary_part +finish_after_on_load +call_on_load_function +load_nif +setopts +give_away +dflag_unicode_io +binary_to_existing_atom +binary_to_atom +atom_to_binary +bin_is_7bit +characters_to_list +characters_to_binary +decode_packet +update_element +bitstring_to_list +list_to_bitstring +bit_size +byte_size +tuple_size +is_bitstring +list_to_existing_atom +iolist_to_binary +iolist_size +make_fun +string +is_boolean +get_module_info +warning_map +hibernate +lcnt_clear +lcnt_collect +lcnt_control +dirty +interpreter_size +instructions +dist_ext_to_term +set_internal_state +get_internal_state +flat_size +same +disassemble +keyfind +keysearch +keymember +reverse +lists +internal_run +run +format_error_int +loaded_drivers +try_unload +try_load +erl_ddll +perf_counter +getpid +unsetenv +putenv +getenv +os +match_spec_run_r +match_spec_compile +select_replace +select_reverse +select_count +select +update_counter +slot +safe_fixtable +rename +insert_new +insert +prev +next +member +match_object +last +lookup_element +lookup +is_compiled_ms +delete_object +delete +internal_request_all +match_spec_test +is_record +is_function +is_binary +is_reference +is_port +is_pid +is_number +is_integer +is_float +is_tuple +is_list +is_atom +subtract +append +'!' +is_builtin +raise +is_process_alive +fun_to_list +port_to_list +ref_to_list +system_profile +system_monitor +system_info +system_flag +append_element +make_tuple +read_timer +cancel_timer +send_after +start_timer +pow +atan2 +sqrt +log10 +log2 +log +exp +erfc +erf +atanh +atan +asinh +asin +acosh +acos +tanh +tan +sinh +sin +cosh +cos +math +bump_reductions +resume_process +suspend_process +seq_trace_print +seq_trace_info +seq_trace +trace_delivered +trace_info +trace_pattern +port_get_data +port_set_data +send_copy_request +release_area_switch +erts_literal_area_collector +spawn_request_abandon +no_aux_work_threads +dist_spawn_request +ets_super_user +create_dist_channel +dirty_process_handle_signals +system_check +is_system_process +perf_counter_unit +time_unit +map_hashmap_children +term_type +map_to_tuple_keys +check_process_code +request_system_task +port_connect +port_close +port_control +port_command +port_call +port_info +dist_ctrl_set_opt +dist_ctrl_get_opt +dist_ctrl_get_data_notification +dist_ctrl_get_data +dist_ctrl_input_handler +dist_get_stat +setnode +spawn_opt +whereis +unlink +universaltime_to_localtime +universaltime +tuple_to_list +trunc +tl +time +term_to_iovec +term_to_binary +statistics +split_binary +spawn_link +spawn +setelement +self +round +registered +put +process_info +process_flag +pre_loaded +pid_to_list +open_port +system_time +monotonic_time +now +nodes +monitor_node +function_exported +module_loaded +md5_final +md5_update +md5_init +unique_integer +make_ref +localtime_to_universaltime +localtime +list_to_tuple +list_to_ref +list_to_port +list_to_pid +list_to_float +list_to_binary +list_to_atom +link +length +integer_to_list +hd +phash2 +phash +halt +get_keys +get +fun_info +float_to_list +float +external_size +exit_signal +erase +element +display_string +display +delete_module +date +crc32_combine +crc32 +binary_to_term +binary_to_list +atom_to_list +adler32_combine +adler32 +abs +debug_hash_fixed_number_of_locks +auto +nifs +yield +yes +x86 +xor +write_concurrency +wordsize +warning_msg +warning +wall_clock +waiting +wait_release_literal_area_switch +visible +version +value +unsafe +unload_cancelled +unloaded_only +unloaded +unless_suspending +unit +uniq +unblock_normal +unblock +utf32 +utf16 +utf8 +used +use_stdio +urun +unregister +unicode +ungreedy +undef +explicit_unalias +ucp +ucompile +type +try_clause +trim_all +trim +trap_exit +tracer +trace_status +trace_control_word +traced +trace +tpkt +total_run_queue_lengths_all +total_run_queue_lengths +total_heap_size +total_active_tasks_all +total_active_tasks +total +timestamp +'*' +timeout_value +time_offset +threads +thread_pool_size +this +term_to_binary_trap +tag +table_type +table +system_architecture +system_version +system_limit +system_flag_scheduler_wall_time +system +suspending +suspended +suspend +sunrm +success_only +strict_monotonic_timestamp +strict_monotonic +stream +stop +stderr_to_stdout +status +start +stack_size +ssl_tls +spawned +spawn_service +spawn_request_yield +spawn_request +spawn_reply +spawn_init +spawn_driver +spawn_executable +skip +size +silent +sigquit +sigtstp +sigsegv +sigint +sigstop +sigalrm +sigabrt +sigchld +sigill +sigusr2 +sigusr1 +sigterm +signed +sighup +shutdown +short +set_tcw_fake +set_tcw +set_seq_token +set_on_spawn +set_on_link +set_on_first_spawn +set_on_first_link +set_cpu_topology +set +serial +sequential_trace_token +sequential_tracer +sensitive +send_to_non_existing_process +send +seconds +second +scope +scientific +scheme +schedulers_online +scheduler_wall_time_all +scheduler_wall_time +scheduler_id +scheduler +sbct +save_calls +safe +runtime +running_procs +running_ports +running +runnable_procs +runnable_ports +runnable +run_queue_lengths_all +run_queue_lengths +run_queue +run_process +reuse +return_trace +return_to_trace +return_to +return_from +resume +restart +reset_seq_trace +reset +report_errors +reply_tag +reply_demonitor +reply +rem +reload +registered_name +register +refc +reductions +recent_size +receive +reason +ready_output +ready_input +ready_error +read_concurrency +re_run_trap +re_pattern +re +raw +queue_size +public +ptab_list_continue +protection +protected +profile +proc_sig +procs +process_dump +process_limit +process_display +process_count +processes_used +processes +process +private_append +private +priority +print +prepare_on_load +prepare +position +positive +port_op +port_limit +port_count +ports +port +pid +permanent +pending_reload +pending_purge_lambda +pending_process +pending_driver +pending +pause +'++' +'+' +parent +parallelism +packet_size +packet +owner +overlapped_io +outstanding_system_requests_limit +output +out_exiting +out_exited +out +os_version +os_type +os_pid +orelse +ordered_set +or +opt +open_error +open +on_load +on_heap +old_heap_size +old_heap_block_size +ok +offset +off_heap +nouse_stdio +notsup +notify +notempty_atstart +notempty +noteol +notbol +notalive +not_purged +not_owner +not_pending +not_loaded_by_this_process +not_loaded +not_a_list +not +not_suspended +no_start_optimize +no_network +no_integer +no_float +no_fail +nosuspend +normal_exit +noproc +noeol +nodeup +nodedown_reason +nodedown +node_type +node +noconnection +noconnect +no_auto_capture +nomatch +newline +new_uniq +new_ports +new_processes +new_index +new +never_utf +net_kernel_terminated +net_kernel +'/=' +'=/=' +need_gc +native_addresses +native +namelist +named_table +name +nanosecond +nano_seconds +multiline +multi_scheduling +more +monotonic_timestamp +monotonic +monitors +monitor_nodes +monitor +monitored_by +module_info +module +'--' +'-' +minor_version +minor +min_bin_vheap_size +min_heap_size +min +millisecond +milli_seconds +microstate_accounting +microsecond +micro_seconds +meta_match_spec +meta +merge_trap +messages +message_queue_len +message_queue_data +message +memory_types +memory_internal +memory +md5 +mbuf_size +max_heap_size +maximum +max +match_spec_result +match_spec +match_limit_recursion +match_limit +match +major +magic_ref +machine +'<' +low +long_schedule +long_gc +logger +local +load_failure +load_cancelled +loaded +little +list_to_binary_continue +list +links +linked_in_driver +line_length +line_delimiter +line +lf +'=<' +ldflags +latin1 +last_calls +large_heap +label +known +kill_ports +killed +kill +keypos +iovec +iodata +io +iterator +is_seq_trace +is_constant +invalid +instruction_counts +internal_error +internal +integer +input +initial_call +init +inherit +info_trap +info_msg +info +index +inconsistent +incomplete +include_shared_binaries +inactive +in_exiting +in +ignore +if_clause +id +httph_bin +http_bin +http_error +http_eoh +http_header +http_request +http_response +https +httph +http +high +hide +hidden +heir +heart_port +heap_type +heap_sizes +heap_size +heap_block_size +have_dt_utag +handle +group_leader +grun +'>' +global +getting_unlinked +getting_linked +gather_system_check_result +gather_sched_wall_time_result +gather_microstate_accounting_result +gather_io_bytes +gather_gc_info_result +get_tcw +get_tail +get_size +get_seq_token +get_internal_state_blocked +get_all_trap +generational +'>=' +gc_minor_start +gc_minor_end +gc_max_heap_size +gc_major_start +gc_major_end +garbage_collection_info +garbage_collection +garbage_collecting +garbage_collect +function_clause +functions +function +fullsweep_after +free +format_cpu_topology +format_bs_fail +force +flush_monitor_messages +flush +flags +firstline +first +fd +fcgi +extra +external +extended +exports +exiting +existing_ports +existing_processes +existing +exited +exit_status +exclusive +exception_trace +exception_from +exact_reductions +'ETS-TRANSFER' +ets_info_binary +ets +erts_internal +erts_dflags +erts_debug +erts_code_purger +error_only +error_logger +error_info +error_handler +erl_signal_server +erlang +erl_tracer +erl_stdlib_errors +erl_kernel_errors +erl_init +erl_erts_errors +'==' +'=:=' +eol +eof +ensure_exactly +ensure_at_least +env +endian +enabled +enable_trace +emulator +emu_type +emu_flavor +einval +dynamic_node_name +dupnames +duplicated +duplicate_bag +dsend_continue_trap +driver_options +driver +dotall +dollar_endonly +'$_' +'$$' +dmonitor_node +div +'/' +dist_spawn_init +dist_data +dist_ctrlr +dist_ctrl_put_data +dist_cmd +dist +discard +disabled +disable_trace +dirty_nif_finalizer +dirty_nif_exception +dirty_io +dirty_execution +dirty_cpu_schedulers_online +dirty_cpu +dirty_bif_trap +dirty_bif_result +dirty_bif_exception +dictionary +deterministic +demonitor +delay_trap +default +decimals +decentralized_counters +debug_flags +data +current_stacktrace +current_location +current_function +creation +crlf +cr +cpu_timestamp +cpu +count +counters +copy_literals +copy +control +continue_exit +context_switches +const +connection_id +connection_closed +connected +connect +convert_time_unit +config_h +compressed +complete +compile +compat_rel +compact +commandv +command +code +closed +close +clock_service +clear +check_gc +characters_to_list_int +characters_to_binary_int +'CHANGE' +cflags +cdr +cd +cause +catchlevel +caseless +case_clause +capture +caller_line +caller +call_trace_return +call_time +call_memory +call_error_handler +call_count +busy_port +busy_limits_msgq +busy_limits_port +busy_dist_port +busy +build_type +build_flavor +bsr_unicode +bsr_anycrlf +bsr +bsl +breakpoint +break_ignored +bxor +bor +bnot +bm +blocked_normal +blocked +block_normal +block +binary_to_term_trap +binary_to_list_continue +binary_longest_suffix_trap +binary_longest_prefix_trap +binary_find_trap +binary_copy_trap +binary +bif_return_trap +bif_handle_signals_return +big +band +bag +bad_map_iterator +badtype +badopt +badsig +badrecord +badmatch +badmap +badkey +badfun +badfile +badarity +badarith +badarg +backtrace_depth +backtrace +awaiting_unload +awaiting_load +await_sched_wall_time_modifications +await_result +await_proc_exit +await_port_send_result +await_microstate_accounting_modifications +await_exit +auto_connect +attributes +atom_used +atom +asynchronous +async_dist +async +asn1 +arity +arg0 +args +apply +anycrlf +any +andthen +andalso +and +anchored +amd64 +already_loaded +already_exists +allow_passive_connect +alloc_util_allocators +allocator_sizes +allocator +allocated_areas +allocated +alloc_sizes +alloc_info +all_names +all_but_first +all +alive +alias +active_tasks_all +active_tasks +active +access +ac +absoluteURI +abs_path +abort +abandoned +'EXIT' +'UP' +'DOWN' +none +no +nil +undefined_lambda +undefined_function +nocatch +undefined +exit +error +throw +return +call +normal +timeout +infinity +'' +'$end_of_table' +'nonode@nohost' +'_' +true +false +=end diff --git a/aoc2023/src/day1/input.txt b/aoc2023/src/day1/input.txt new file mode 100644 index 0000000..6efe96c --- /dev/null +++ b/aoc2023/src/day1/input.txt @@ -0,0 +1,1000 @@ +9dlvndqbddghpxc +rtkrbtthree8sixfoureight6 +fdxrqmfxdkstpmcj7lmphgsmqqnmjrtwo3tcbc +onetjcsmgk57nvmkvcvkdtqtsksgpchsfsjzkkmb +six8threepvlxttc85two +8five9ttqst2one2vz +hbrmhsnjeight64dgdnvdbspk7ninetzbvjczqrj +fourtwofivesix5 +3gksfourqf48 +7one1tnqxfvhmjvjzfive +sevenmcjs3lmlmxmcgptwobjggfive6four +seven8five3 +5sfknxsn5sevenfour446 +bxc5two67seven2 +jcsfivefive89seven85 +nine296 +seven5twoeight +1eighttwo8jfnhmfivefivezdsxqxqsjkone +foureight48sbkkvc17zbksgvcbb +lnzgspccsn4cxqqdbkj +qlxrxkpeight48xbgqnlkpkoneseven +z7onetwonec +7cns +pnpfninefive79twoone7 +2hrqpjjjbn +4gmlttgdzrhxbxnnine +4sixfiveone76jctmjsxdh5jrkv +3kvjmhpmglrdgmdnine +four63sevensevenone +jmz1eight4threej1 +four21zxksf9jxdvjmtn337 +msnronenine43three1threefrv +rjfhd6eight4 +78blgveightfiveone7bnsfnrmxsmtwonemrb +sixseven6four6 +mdjphcm9 +xsjmgdgqtwolg1nine45eight +five2six85npdqxgrshdjs4 +jbbnine2ttrktc2hxpxfdxgf +fngvqsgmjfmfslrmone2vtpsstpkhr2jmmxk +f683glvfsdvnsghvrzcdmxnx81 +lqblzgj322kqfsjrbxgcgsct +threeldfnrbstbxqdpxpkbztbp84eight +sevensevenmthprqg9six +qldknljthdjthreeklttd6six +7eightcdqxcftbgbfbnvqfive +gxjzhvkbcjhscdxhjdqxnhsevenxrdrjbcl5fvlvlxjjvb +9sixqnine9jk9six +zjtdbzr6njdgflrmpshxn +rktpknvmjknb7threefourhdxhcdtgtkvone +276lzxhone3two2 +82fivelppqzjq +lchslxtwohslsztgps5pdssctclhdkqtwo +2five8three9dnine8 +68jpnqldjgfnpcmvbxnszhz2252 +q32 +2sixtwo87 +hlmdvlrqlrjdshone3five +fivetwo7 +xsdcktrone29 +eightfour9eighttwoxvhdth9lndg4 +two8jgddjhcj67eight +8nrkrcrqhr21stqtvqn +tvbonepzrrklninexmpxrlkcpgg9qgrkcjt +6two5qjmoneclfhzhkxbntmvmdrc +prhmt4xvlg +3mghfgrhzkj5 +lq2lnrcj1pnlh +sixqhfqrmf8fivenkkcqpgf85lone +tlrlcbhdvd5 +three8seven +thfns325threefpvlntfvrf +twoblkldr2mmrsxpqxcms39seven6 +2mpcvttntg31mkznplfkbcgccsix +2sbs +828jnvjnbgrs1 +fhcglnxzss23bxfnpczvthree2 +7fhghprqvrbx1nxml2one32 +5fivethree7qrsixmcdveight6 +five4seven +1cfcfdzfjphsevenmdvnzh +qhmnleightbhbcntwojjfxpvlxt2spponenine +fivelskzvzsix5xtqkfl1 +2jfgpmdncvpjmqcgvnzpqlstzgfdvfxrlscjkzczsf +rzzplmzsfivetxbhcqnzdq4 +mvrvfour9eightseventhree +7smrdqkrh8qlzc +mpf2fivefivefivepgm +1sixpkrdjlszgdnccnllfsevenksdkvqbxbpbblthqpzqf +six91dxxdhrxcbmqpqm +sevenfour8nine7 +one2hnfvh +55jmqkqgvsgqcrzvmzqhone8twopsrtgmqrj +xnfjxqlrsjmgk68kvpptczxhkxcvrpgctddjklrmhzjgtcjh +seveng6two +1threexrzqcrknhc3 +58qtpqqz58888cmhs +pxvbhmczrvpnjnsrcdrnrjvzzpjnbgbxdseven6 +34two565 +four4six +sqtxsjsix54 +four3xrxmrkn4nrcsmljqrninethreeone +3six4bqddfivejnfrhnqqsgqhj +gtbtrtzp8seveneight3seven4xzdnfrvzgn +vggfdfvlrgvqqvjhkmxfsfbdpqfivexs16 +onegkvdhrfninerndk46nine +5fiveeighthnrlzln +threeqctjkpxjx39six89two2 +99ninecbzck +nxqlhpgnine6pvrrpfjpssix6seven +1dbrzjkckthm5sixsix +fivefmfqcsj19nhnzg +five91eightninecn +7ljnl71eight7mzhzfht +84sevenzrqvkxszdhg66 +jskktpm5mphd1 +boneightfournq6ndnqpdbm97five +5twonine +scqpkxrjtwo8foureight11 +3eight7brgqfivezpgclhfj +zkfrsdgbmczlrzchvfql78ftsdqk8vmqccbn +oneseven3kgdkjzkmq94 +sgtwo59kdmhbndzd +threeone37 +mqxvrhmrpqnltvt9lrpplmttkhdvtln9 +onecxqvr48six2 +pjnx2eight7five +two189one6gbqvllzb35 +psvxjhscstjfkbpxhbbb4zvdjbcdxqrqzqlzp +n18hmhzrqjrpcxztwo +6two46zblgrbmjcqbnxqcnbf +7kxsjdqcmxrvmdtscvxgrnhrmrfour +onedzeight8qfive2 +seven9bkjone2sixqnztq21 +fiveninesixfkzlsn8fivembfjnx4threetwonexb +5zmxtcmzqqdthreetczccnxhkxrbntmfoursixjhhrsdxthree +1four2xpkfgcn +88trnvjtqsmseight8 +pbbpbfgsrst5five +jvgvdseven2two +962sixoneonectfgpknl8nine +rkbnzz1l42eightflb4 +twoxfll2fourbjfjgxfbtk +35fourtwo +lq56ninefour1three +77ztlmqxcxrj745 +nnvqrthreedt2eight6hvrlnpbts +6five6225sixfnzzbh +nine1three +8xgdsdfgcfourlhn +2three3ninelckpddbmdrfournine +89zmvxnlrj7658kjdjchq +pfhbgpb66twogpn7twobpvrbmmrvp +8hgqmztnmhkcr6xrxrbhj +6fivemnfcvvx8 +3mxpvgzq9ninebmlktwo +thzhbsl49seventhree1bdxcrgjq +rlcfour3ffkxxrhb +rkj2eightfive +xqncfnhkcqxqjgbsjhnrgm6 +ninefour52ninefourtworhsix +lpzcmxt97mlkjhlcone +two4qkmqgrpltkrdsctpnsqmbtptklprx6ncfpseven +61shxgxdqqqzngnnzeightkhmgrxprb2sixjx +9eightfour3one6seven +eight4sixqjxdjnzmkfflpfmkf +3bfc71 +14sevenfivezzmt8cpptl +1sgrzdqdndsevenninembzvfive +lxftrbfcqfoneeightrsdxlnp1x2jsgn2 +vlfcjfourmtxbcngpjvkcctvbgkgpvvqpsg1 +116five132seven +eightpvfsfbfzjcdcvh8kbrcz357 +99two +four6six +fzzklmnxvfrhd62xmftbrhgsslrlqv +5six55zbdlgc +62nineone8qcglr1 +sddddseven55fourlpqzbgzfive5 +eighteight17 +nine98 +three9qqxgfpjfkeight81nine2 +twotwosevenvkzzhrpgninecqvf9 +lkhf5onexsrtwo +8hfzvnzrd +9threeninethreeseven +onedpgjzsixxs4cg5jlvzcsbd +fgmfive97 +4fivefourckthree +nine1fivefour +7qlchtvd +tmtmtnxdpsvfour4621four6 +5qfvzh7seven +fourfivebqnpzbg8three +34kd9four5seven8three +kcqcxzmnkdt5twojdggp +4lvbfdpzjsdthreeldvkcbqrspktwo +2nine93foursixnine5 +8tbpjgmxltwojlpbnsvqhsjfcjcfvcrjqppdb5seven +8twodcpglrxcq23sixfour +3sixvczzqsfive +1three45jh54tbdvkj +pdrzqxdtcnbrnine8zvffmrtwo11 +3eight54sksqfxhzcdfour +7hsllsjtxtwo9jhjlhthreekdfssninetcjjrm +9sgmnine1kjmhjthree +nineseven9five +ggdcphlstwoonethreeffgmrseven2xsbsf2 +75ssbccflrrf4lpmptcqjcmfbpklqc +5six2threedvvlxdxsixvxxghpddn8pbnr +tlbjnlxfxvnine4grhj71hnf6 +964eighteight4eight6t +5qbmnsone1fourseventwo +oneseven1five9two +5fdpl37vklxpth672 +4czvrnxtlfiveseven74 +qdgqbsd5fourfive +ddrqjnkbq87six2fourmtghdtvtl7 +zdldjnfxms692rbdfgvtsevenxzfjpnsf +nsqtkbbfhn8threesix3fivefoursix6 +sfxjzhpqqslfourmpph44threetwo +onefive3seven21 +9eight1sevenfive7nine +7twonrthgr73vzb +18onefourhxxm +3xvboneightlb +3ftqct9 +8five55 +4eightmzrlfjqqddffgmfl +74mhzvktwolgpvrvnphc +sixnine694ninetwo +bzpnktvcqleight2 +5oneeight1five2dszthreedncqzmhc +eightfrbmcblrghgmpkrdnh7fournzbvtrzvhchsix +threethreeoneone6kbghfst +4fiveonexfchmclqhqfive +1t3nine +57jclthreefourbtdgsggzh +qpc9fhddthreefive +9eightnine7cgpbbnine8 +88twoxbzjp6fmqlznzgpgdqmmnpmkvctm +threelb9four168qpchgnfn +4onekrlmslkd7five +4jfxtsseven +zsthvnxpf7 +656three +453seven +zxmr55hgnvtjbbqhfsxssjxzshcbkvsbzg1 +pbkffqzrbvxvqjfgkpmp5 +ninesix677lpqpgmc +sixgmb67fzdhnnfk7 +jlgjbltbtwotwoeight9sixninevlngvvj +xdxqdhps9sevenzmzdlnvsix3oneightj +ninetwokpzvvqlgtcfx2 +dqmjchlbj7sevenfive +61eight9kjmxclvdrdmvnthree +8nine6three +3ndpknone +seven4one +8dxljzpk8twoxfmhbqnmqeightdhxvpgxcnine5 +6five3seven +rzgfivenxhpr6gxqflrskhjhvoneonegzbclk +jrvjhkfv7sqnsz86five5skvvmspvjd3 +sevensix3c6llkmsmmssf3 +sevendf73eight74 +7bqbbvmq2krkbhlsh +3dqq55eightcptwo +2bjgfrgrtgnfour +44xznjjvlhzclsix +seven6rtzponeseven +6ghvvkhrzvjzpxlbkonejlmrhq +zgsxthree6 +3crzdvbnhtsgldjvbpsixbjmlxsv3vrzjtv +xcpnbsevengpffknsv84sixsixseven +four898xkqnhspbqmtcs +5twonine +six2ltwosix +cnine22sixeightwost +6lx63two +fbqoneight3five +rbtwone2eight8 +9fivezrsdfkdlqone1nthjvdlmxhqvj +pmmfp8seven +1qmttlsjpxjbsrzmbtlxqzfzvrs968 +fgdonexgvvnine5jsm +rbgmbtwo9fsntcthreesix76 +fbrsxxshseven3gtv +mkxfour66one9n +eightnine1fivecsixlqds2 +lhxnxhfnmlmhxkcxndmnine1kfpb5eight +6eight13rseven6 +hxcfone64ninesevenbgsnrqppqmnnineeightwof +threebjpbtpzgx5mnthreensixoneightz +bpdvfqlzthree2vvcmvzllqfbgjgp +two926sixeightdsvdmnxthreetnqvktdbn +bhntwonefourninejjcmlfphzpseven95 +prqoneightseven1nbcxnqjfourfivecmj2 +stwone1oneninevcrfzpfourfivetwo +ztkknhjr9six8 +twomlvrzm934seveneight +ntnn1bqgbxf13rqdqtcrbpeighttwo +seven58ninemdqonecrkbdblone +foursixthree1oneeightone62 +8385dhgcqjtrsixtwo8 +blpzxstwosevenqbdhkb8sfggkbdhx5rzftqsf +mqbeightwoninefourlgcj9 +njvpkpvjpmvmbsrdgdvx7frrgvnfrmmrfrhqdtwothree8 +rtwonesxxone8tnine +2xqgrqmone73five +5ggzdxvptwonineeightdj +svqhzhzbsmhljxeight7hljd +one81kmnmpmfkseven +9ninefourbvbpljb3nineqxnkgzgj +sixfour7nvdfhnd +24twoseven52 +425vqnhmrpxthreenine3bkjpvs +8fzqqspdp6 +427five9zhbxpbr +1qjnxxkgqhp +eightxzthreelrbgfbvmrpmtgvrfgqmjlshbqv5 +onetwo4 +three194bfivevknbqxv +1mjhplcvheightlnvn7two +rmptjk5seventhreeonesevenkdxfkvdz +threesix8kpmrvgkpsix +fjfbx6eight3fourninesp +six3nhonebtdzppnxkr +xgtltdtwoninesix62szphpcmtv6 +fiveeight9seventhreesevengndgdfv +ninetwosmcbfkvf5hvksvfbr3ssbntlk2 +qjrdlmone7tqrzlvfourvfbvtkjxfpkffdpjnine +sevenfqnsnqt89five5 +16sevenxtdrtmdzrxhneightwot +8ttreight4eight +three9nine3832four +fivesncggngss8qzfvj +twotwo7sgtcgrmdnr545 +6xk7threejmgnqnsevenmczscqxqxfour +twosix4eight +kxm15two844eight +twoeight5sevenfour +five56three +threekdjgcdd6one +clchjoneeightrqgk8bdsdmzm +twog546two6x +5nine4bmhbtbksxreightoneightkg +gjfkbsr1gvtvlnbzqrlfour +one48vpone +eightbcklnvtgvthreeninefivetmgtbjrqnn3 +nkclzcvbbq8nineznbtkntgndnine1xrg +lqpfhmrlmg32xtddcfffdbxbjckvlzghpldfgvhfhdhr +fourpkcppxtmqz5 +dvb6sixvhdrzzjk +btwokhl99nine +73rkgbsqgz7koneonemlhrbtxc +eighthlqqt4onenine +eight61oneightx +ninebbtcjjlqkthreenfvbcc4three946 +ninepqtlffxvclgn7fqdhqbpmkkseveneighttwo +bqzpfxntnkhhfkv98fhrqslfs9four +4ktprrljbthreethreethree3blmddptfour +5fourone +9zhvgleightseven5nbcmscqms2two +6czngsp895 +2threekrxmtfrr2ppfrzqkqgfoureightlf +six8eight6seventxgl +1one9 +3qpmrtzsvgkjxsevengzdkjkbbdltlrjkznbbkmpb +sclxoneeightfoursfbfm4rbxssmgngfxrvcv +fhctmnpxdrfivemndlr3sdp +twoseven9sixlp +962 +tsnsndjtrp27cbtsjdlkrqmtctxvxvnx +5mnine +7fgt6 +three1ninertghhbhbcnjdsknine +two8ninefxcqmxdhtnmcmjvtds6fivebnm +7phdp +2hnszbksg +4ninedcnjbcxnrmoneeight1 +hnsszlsx7414two4 +gmkrn9gcgmffrvbfivethreefive2seven +2bknqdqmrxpfftptwo2vmqffgmzr +dsvf3nv14zklptjnhv +54nchsnpknkx +oneone15 +onefvmxnzp575sixpxnpndqf +6vqrzsbbxg3735 +twojbldk2hfqqzgone5 +onesixlzznvc8nineseven359 +6vjbr7 +nineone32nmkszsthreefpscxcqtwofour +fv1zpqrxvdlzqmeighthhbbbzt +cskvllzszxzk9 +7ninebrlggdzqk7ninelvddrtt1 +2fpttpbq6b7ninefour3five +bsslmmmhfxc6 +lfjkdzdm9eightkbdhrkpcnzcftlggh +rnineninelmbhfour88onevfzhcmneightwofp +one59ktxrdrhc8six9 +86nxnfzzsixgmxxglvfivezmkdvmhjfzone +9threefourfourrbxqpqbtbzxstwo +3pvgtcxrfvthree39bjfivenxvbjone +sixkmngfour3bfive +6threehntsjhjpmqhl345 +fourjcnd49fivexqfbj +ksmszhfive7rrphsxxhgm +zqtdztkhveightninepnctbcgqsb6 +ninemlvzfcljfkeight1tppxrqtdzp2 +twotwoeightnine5frzk3 +lfvqtzbsix3 +four3bsgft28 +sixgksnkrmsix2rbjmfmnfzfiveeight +vrtffvbtcmszfdc2sevenhvpfour8 +twopvgzmthree3 +xqffprzsrjqkcbsevenczlbc5 +4ninefournmvninetwommnrctqjhg +27four +fheightwod4 +38zkgvdpgjzqfivenlr7mdxd +ninexxvninesevenfivedpzfgpbv5 +xjzgznvfsevensixthree3rgfqhkxbfp5vfrjcdncfkjk +2kcbprjfhns68 +bndqgcmnine4qbzfgxmlffive +ffctnxgtwobldqhsix8djfmdnpgmt +fourseven91ninesevenpksgt3 +rninesznvtbq5zqmthzrcntskdthree7 +8eight7 +1hnlnp79 +1three3 +414ninevqrccrf6lmzqmsjc6 +15mpeightxmhxlxjmn +ktdblrmqqxmktvqfour87 +1four121three56 +ldfdgfqkr22nxtsrsntlsevenxxrcclrhtl6five +eightfourthree8pvlkkbmbrfnfr6 +8sixninefiveqcmjhpx +2seveneight85lskjhn7 +31c3 +hpgmpmjmnk4twothree +cqsxgbj23six11 +threesxzmgtvhhheight99xsix +6jlpt6rnsprllqhgbvhtqtjvft217 +22onesevenfour4sevenseven +sbnjszzkdleight6three +3twofourdmrsqqtnzgng1two +ldcvxqbsfqpgql9ngsbhfrmszhgvznnnjhnm5 +1oneseven28seven +nsvhqtfivemjgcdqpbtwo1nine2 +six8dj +zdoneight67fivesevencqlr +xlzrkgjrhmszmkzlkkmrxjdnzrtlzssfpcxkbxvp6jghldhvr9 +8sevenbzbnnx +vzrmcfvc9shkxfblfkf +9twoshzmktntwo5nqp +3fourvpdfs3eightword +three24onesixgdzgkspgsjprjgn7eight +4tz2sixsixqbqfsr4twonine +twoq2eight +rccxnvtqnhdlgzqfzcnrmqtjqonesix732 +seightwo8ninekndqrdtbfp +cgnmrkcjvbgfmpbpjckhfrzrtnine2sevenfivesxhqk +fourxsncktrjtpnine6ccbgpl +1sixone5vkzxnhgdlbsevendtwo +9jbnineppf7 +5foursixlrn5vdgdbvnfhg +fivecrtwo8zbqrvjgpfivenine2 +ktvdhgvone6dbrvj5sqbr5 +bljtwonesixthree7dzdfrgqrkstwo4xvfmtsbpqjgxsgqcpc +sixgg5 +vmrbqdqdrqtwo2onez +onehlgrgndk9ninefsntwo1rnclttm +4tqzjbhdhkm1 +nine1kffxzcrn189 +sbrxr9ninemqb8 +six528mslnf +sdvthree7dfivenine918 +3kvzqqkonepmghblzvljnineone47twonesdf +four9sevenfourjhmjjslqgd8 +3fkfmgqf6fourbldjfvbhr +eighttxpddhsnzrkplzqc1ninezpvqgnhxzftwo +56lsxmkfpghsqptvhmmmzhcmfdeightsix +one72kdfdrtwothree8 +7kpgjhpnthree7 +37j2mtwo +seven4mjponefivesdgncqm2gkklsqvthfeight +mgckktt9six4eightwol +4grzfdm499ninetbt +tzmbtv84b +xvzltd75dhpjckmpdrkgglskqrhd5 +cgnbhmdlj24 +7fivetpbtmone +fivelpmbxvhktzkkonexsxktlzthgbgqkgcj94 +5sixhggcbrft +43five7122tqlkhssczsr +eight1seven3 +fourtwo134fourmzpxspr9 +snxjqnf8ctcnvjknghxpkpbrt2 +4qj2xtwoghknine +1zjfivegtwotqgndnineg +fjmmznxkrml7fiveninelfvkqtrg6 +8xjlqgqj395nineninefive +dx47sixtwothdphj +fivesevenxgsfb235cvgmspdgg6 +fivettfzvfg78dmzzdzcrt +fpnvxp1 +seven24 +1three8oneeight +7xglzsqrtb8fhgthmgdcdtwo +seven8gdtfgd4fivepdq +twosix1qtttvvstmqbrhh +ptwomnjhlzjjkztwo4kdkgxv +89zkvrhmrhdbmfourzdpss +bfdsvnxflgqxgpzkmrptlvmvlkchjxrt67 +9mmhxsevennvvdngznine17twofive +lszmqdmxz87mqbv51 +546sevenninencccndnr4 +nineeightsqgrpkrqlmzrlxm6hxchcjspnx +8twoccdnbfive +1ks98 +twothree6 +twoxsixtqdpp6dcclzgfvkv1 +16one7scvsgvmcdsixjtzszzrxdzzgv +bjxzdsixkvqgjfzbbjnrtn212jplvrj4 +zb2three5cngqfczc1 +5fnine99zxvfourjgmn +one634rteightfoureight1 +76gvcdfourgtbzdlltzsjnxqg +ltmdrkqqnfour9eightpckdvbhlkvxlpdtp +6two5kgncpnzkdsgnpspb +three8vjninekbbnnfrdstprcmklrgpkfpmbs +ckvvqjqzbpfhf52fivefivefour +7ngxpdqptksix +ftp2eight +8lnmpbqldqstwo +threetwo153644 +914 +plxjdxghsix17 +sevenonesevennine4three2seven +7bvdgpghzhpeight512vxbnfqjctb +xqptzkfive4xqbjzpqfkfspqv5kgqbdtfive +bmltkhjsckhrc7two8nzdpkjjpnfive +nnhppfvlhcmnmrjxhrbtzdflseventwojfprxmfn7 +fournfdtjtsbthree54fpzsq +ninenineone5two +8694twomgxxzfxr6 +sixeight75seventhreerpchfour8 +llv5 +skxcbfffgc6sixone +3lhjbzbsg4lsfgpkmcz7vjxzbrshbseven +4onecjlkpqdljd3five5 +eighttwo2mvdtvqpnonetvphxsk8 +15195one +kdx9nine6qrnqrjxq59 +twolhjmbh4fivetwo6pdzbnzt +pbvfour7 +tgxrsbk2 +hfournineone58sixthree9 +hmftwonesix5dhthkcnzqseventhreenineeightnine +9jmmjclsnsdhhj +hljjvctthreefourxsdlvsgtqj1335seven +172 +2gbfpjff +five5sevengvddnphnine +sixeightfourssptsqlhzxonetfg2hkmrcpfzcz +94csjjgl42three +4bkxxv6 +pgdgoneqmhxfpnfqkrbkjeightbmjjlrnsc5 +nineninetwo55fvsxspzt +32jqffghbqvfmjtjone78 +93eightfour6eight9eight1 +768jrdmfxgxpntx8nhpljjdx +eight33zpvpggklseven4lcqsixthree +fourgrmone4 +bcknine9qsevenrjhjeight +5onevqm +578mmqhhljtwo39mfnpmfqthree +fivecmts43eightfdphfivejsx +8vkqvl +8oneone27fourseventwo +jfsixfivethree3cmjtvkzhqkcksmljxxzbjd +three6sixpdvtrnrtffltrs +threeltvvfkcdqjtwo89two8j +5sixeightfivesixjjmknrgd1qpsbpjrffjl +eightrmgfkckxxxsvfclhtgcjthree3 +rnfbp8eightjv35eight +2rrssqrfkvmq +dcmghdmg6threetzsdx +qzhfivefivejvbtncm2 +gcspvjnsevenqhmkngfivesix15jtpk +bkmlmh5six1sixone2hgtlsix +8rmjshdhm681vc +sixtx32 +7fourtwo6 +xgrcxeightsevenzgmcllfjqn7 +553fivethreefour8nine +one4mxbmct +three6ninetwofour +1bbbxqhhlmj651eightkfdqdgvh9three +4414 +mnxsixone92 +61six8 +eight8mrcpfive1 +crsvmfivezbkzkqsix7mxjdgtsqbfvdbnlqtfiveoneightgj +4dmzznftdbqj +seven25 +fhlhpvphqvh8one1ffkq +mboneighteightonefive1ninenineninetwonine +82fiveonexc5 +97qbhvbqnmxtlpczsx +nhgzzjkx5 +hgxlrk9 +8twonine9fivetdxmjqppxr +onethree99sevenfourkzvd2 +sdqjfvbndzcthree1ftoneightkm +5rcllqcxt +threejdntvhsixsckfpndjzkeightsix3nlgpsvsfhk +94fctwoxmczbkz +4eight35tbqjxglldsevenxmthmmlhsix +three125 +3njtlmxtbr4541ninedz7 +9ptzpzqrjmxlrmbfbpn9ss4sqcprfmcqg +8dpmkdtvjxzjbddn7pvkxzskddrhcsjvthree7 +xxshbfcmf3cfdkeight +six9ninefour472 +fourrvxfmjzd4five +1fivesix +twonine3six9 +nine8onethreethree +foureighttwotwo7onethree +9prtlnjptoneninefiveninefive +cljqxpthqzdxpmmbvpjljjxhlhsql8kztpthreesevenoneights +9sixtwonetfh +kscmxpcqlthrmthcdhplpnqlq2 +fiveqjfvkmnineeightninefourtwo1 +one5sixeightfxkshmninethreeeight +4nine4 +27 +ggtz73sixkgsjrtcxkb1 +qvxsgvrpbxqcgpb2fzmcvknkr99seven +6eight8ksgdlxj638fivetcgb +mmvc3fourrvbztjchbmqtxtgfrrqphninefive1 +3qzbzxsevenfivegrvtbckqcj +eighttwokzpgl2hrvqlhkthreenine4 +8twoeighteightxtsbrseven +nine5mghp7vpnvtpx2c +hkxkmx5qnpjhtdfjfsix2xqqplvm5gmvjm +69cgvzhvgjvl8 +threeblzj6three +3bxpmnfbtpk5hcgqkbkqblznxgsdvklmtmqjxsxdcgqvmsprxrrnfchfbnd +1fbrrcjgzzllmcbdrgmrcfsevenh +58onezbp +1bqfkmkk46cctvmstvhvrtwoone +mmeightwo9sbjvleightdsevenseven +9gdsqgflkvonetwo +3lgpmxdgjtzx3two5foursixeightwomb +dbkbeightfive9eighthxngnrbmp +2cpkxggtrdsrh +zsgcdcrlhlqdpone9eight17sixbbtzpmdf +5rskkplgsbl9qqzfrzh67four4 +nine856threezgbhrzjcfour +kqnnine87lflxddvtfb9lfjdknvgl8 +fsgtwo8zxvnfour7xxfnmqpzhzone4 +ddd9sixnsrpqmvvjh2xghxhm +836 +nxglt36ljcbvgc16hxcbtqjz +nine19fourhnvh7fgqklf11 +jkvsphrpmhbnfl2nhcflhsbks4 +7nine2dsgkmrzlrzptfpk672 +6vtmztrjdrbk +4vgsshzzsrtwo +ninexfjcxdcnxs7seventhree2 +hsvvqcqp97twommjjlclbtdjbxkveightwos +threedlcvvseven3 +366xqfbhzfmqknine7 +jzrqqfouronehhrmkg4one5 +8xcbccrp141kmcsrdlgcdzpcb1nine +59rdrphcgk +fivetwoqmlk22eightfive +qnsphtvfourtwojljxnvgrkk3slv6four +13dfbnfnpsevennqtjthreethree6 +4dtncvsix34oneeighthpfouroneightv +xdhqninefive88nine +6hnnl8nineonehm7four +sevenfournine8five2six +vnczlzjqdtmdgsgxch94one3knlxjvqtrjlsx2 +twoeight14kkzrsqmgkhjb +jhqrzxrhskngj9ninenjcnbdtjhjtdh +2grrlxnlvthreernfghspmc +two8hjbsevenfive5threenpgtnkftp +d8sixfive1five7 +sixthree9 +sixspqf2gptcsrvlln9 +seven8nine +nqeightwo7svvjqs75qgp3hpvn +qrsixxffsdvvrf74five3 +5threeskqgcgprrjmcxksixtwo969 +bdbtlvlseven13fh +2two1eightfour7jqdd +three8ninefournffzbnbhkpjqh32 +sixqzmhnjttdnine41sevenpcxqkvr +fivenine2fourseven2 +sixjjhrjbmvvngqd3three7ninekpneight +11lttrkpcljbbrmponeightbb +frxgkvgrjtsix84 +76eightonesix8fivenlfhkfgp +fourpqlrklpnfljvpfkdklkgrjp1ninevfour +1six75tr1 +cjdvxhmjvstninejccxrqhb1qkpmnzx8xfpp +8sixfourone6pzlnczvlsmmp +eightrkl37jqlvjjsbrtqsix6 +onesmrjvmrtlppm69857seven +4rgsktnbone8sjxjzbrplnmfvkknpxqv +tfteightwonsdffone8sixxdpeightseven +639one2two +smk55 +6cjbckhbtmkcgrvmp3 +rdnf9 +1jjkdspeighthteight37 +1gh3dcmhx4sixnphphhbpninevbqhs +vpstbqtdmbvk9jstvtgzrdl +91seventwo +7sdpflkxfzfivethreenine +gvgcrpphhbzghtbcv6 +vvnine5ddgzroneone +5four6684one +dmspptjjtwocr2one +sixftzx6fdsfv +5six8twotccbsdnpxg32tsix +mfkdbdfournktdmgqnt4vqkzbzonekdqhbcmfgfiveone +nine2476 +8rxd2eightninefourmd +eight1hqfcqs4cpvpsqjfhptwo6six +5z +bqcj948nine6xmgnxmxnn +two1lzdv65bhllvrc +sevenvjkl3ninespltvdszvnfvzpcvrctphvp49 +4mzjxftf5eight +fivehbrxcbgjhhxpzfn5lllsknk7six +6n5ttwo166 +fqdfhc3 +6cph +lzqqvnlkjv3sevenbdssvckmdm +bbdpgpfsevenvzsix87 +754sznxkfb4npmjbv4one +twothree984dsxsninefour +kmpjgh71jhfrjgrpbd2d7 +27tgptfvcjnk2 +onefive497cdcktxcjfivezdrdhczbp +79176threeseven1 +csseven1rmlbcpct +1lzlz4tsngmgh +zvxshddzg2eightpxkzfnvdfzeightseven +ninesixnine93seven8 +1twofiveeightmfour +six3cmbbbxbqr74flchvgjbr45 +7nine31two9dvsghkrjj +five5four +seveneightthreefourseventrgxdqclq2 +5dfgddsevenldmzckmvxjmk92fourdcpfgcrpd +ninekbhrflzmgp3lqgxgszmzvndr47zcllcfg +sqsixonefivekfvbfh66p +bssrkdrrgsftlqjdz19 +bqcbhfive6 +jt3fivemdrnrvngsb1seven5 +svdninesbj11eight +2phltdc +1469sevenvksvlthqskfkx9 +7fcfivefourdbbvtnjbrc +6seven4 +lrmfqtjkzfive69eight8 +zmngmr9ninenineninesh +qrxvdxgtfour7one6 +eightmjpkgdtrp52shpcrtb +54k7fournine +7fdbshl6874 +jfjvrhccqrc1fourcrg96 +1sevenncqhkgtzmtncmxhflmfsxfsmsmqh +79fourjmxfdbqnrsr +sjthree6tcbp3x +qvrzmdzfnpkkdcvone2lttcbzhhddbnlnhxgsblhtlvdcpnzjvvqszrthree +ninedfxcz63two515 +48sevenvgznbsxzhfgzq19 +dxjbtzvtfn3five3 +five1gxfcfppffg74 +78ncrnhmv766nine +two7qmgeightjhddgnineone +jhttksbpbhzmgglfour7 +bloneight3ckvpkxtwozzxr1onethree +mhmppdtvfonecrjzlktlnkpzdbqtvtwo4 +179tjchxninethreesix +dpcfnsftnjbhlpcjrc8pbnnhtlrjzmmjk +ninebn16one2crfour +mfivesix8nine1zgpqpr +eight44fourfivegfive +2qhsltnzsfivervftmdm1hthcml +sjoneightvrxctb9sixhkhmfivejm +7threehdctsfqflggzkhpn +seightfourkhpkprrcl6six +fourkdff7 +57seven3four1r1gcjtckvn +gmfdzgv7fivesix4nvlq3 +thp7 +xd5plhtvtgxmgkmhlr5nine +7fourdf +pnkjgdctpm2221four8pvnhxdtrvs +hngtq27nineninesixeight +2fivejpfbsqtx1fourseven +19jpjsbljgz +ninethree5twoeighttwoqponefive +gklmbcj5mstwo8 +phbeightwo31jjzltcqzhklm26 +jtslpzsxh43 +drk7 +5dxcsvgqkmz +jnrgv9 +nsttntwo6 +6qbfrlcfmmnqpmbbtqgdsjqndqfive +2mgdjlpdsixfive6 +sevenfivesix6 +3nrfvb13onebsrclqnflppzchtp21 +dmpgdvfive7 +lpvqjzhvjoneghqxnvsixjxflzqj4 +onegqzxvnnfnlcffour2 +nsglbskbzd2drjzqhnq +nine8seven +rfspthhjbh92rseven1 +nine2ctjnb +gzkgvtxjt8twoonefour +tplxnlr8bfjklthree +jqrxrtdvmj8fournmj +6gxvglbcqkdsdcsl +pzjk9ccbmkzmtsf +qdzpknfhbsixczkrqbpfour76sevensbvltnjccjllng +six1zrhqxzfivetwo +xjhmfkvjgxtbgszmpd54jbsscgrninethree +cndbtlq22 +fouronesevenzrrv7mhsvjtwokqbfvvrs5 +twoonefive59phkxdbndgch5seven +8twoninethreeckdkd5 +9four6jfxnfgjvcrszrpsrkhh +993psn4qdldmfnqsix4 +42tzxknj +vvzpl8six +8vpchdjxczsvjjqljnmpdeightone2seven +fivenine51sixcdb +dfkkvsone5kjzvqqc +8seven8pxtrdrkqcqhdklgsixzxtjmtblzzcc +ddvzsqnxd9xscsix4rvpsix +75nsvxf9one88 +38ninetmmqx2 +sxjqgrdthree2vhpgrcdtqeight +63kthndjc +qgbdkfm56two6fourthree5 +five79 +jpb2seven7one7 +four5sbgbpzkjjkjhsvgksgjvfrsbpbdzgd2 +xlxpsixninextzlpbn6 +jzbvzlflf8twoeight +4vjtr6eightninenjtvt +3twonine3vmrgkjzkpfoursixtbcktpn +six1fourbfhxlntrqfxxztmj4 +jrbhfourfour6jspsxkn2eight5four +pcvjmdlnf15cfghpszt9 +4lxktgpvvq1sevenone9 +twosixhllhbxkbd2three +veightwo3eightvrhseven89onelxvhqxkhm +2sixfkdpcjcgcbgfzlbgblj +457jtmdfdjcnine +three64 +pqgjfseven4sevenoneslgeight +91vcptwo1twonineone +seven63fourzjpdmk1 +8fivetwofrbtm6f9five +sevenchrtbctkgpnine65fourbhpqnchhlz6 +rkdqrbtdbj9bt41hklvlrbrcpx +1three1gmdeighteightqbgsevenhljbpzbdtt +srkbbkfcznine6nine6 +8kmzbjzsxtgr9drtbdl +24six412smjfxscst +9cktpshfdr5djvrngchrh176 +2mjknvteightmvsdgt8seventhree3mzfk +vhldtk27two +6three2ninepqnine +2fourzbtqnclrtpsix2six94 +six6five +one2eightppzmczmgsixnine +15qljk7vchkfcfhkhmbjlkcfour +99four +dhrgkkbrnczkdt3n +89211sevenhnbjbrxtk +663rrbpnrknine911nine +2ntffsix9 +4mdpcrvqfoursixqeight +jbjjqkfive3jqnqhvkmtbddrdqxseven +2gvrgdsxptwovfkpgdlmlhz34 +rqfrx82 +tworzlxeight66eight1five +md1jgknfftttjbjz +tctqctkone37cmpbslgpzh3 +3sixsixfpxg +seven6bld42brzxr +6two4seven9zpgb5 +nine13 +d68 +3lxvsgksbbtwo52eight3three8 +bpltlnlzc8 +seven2five1threedmkg +hpkvhlkhknhjpq9tgpmnndgtlqjx1vkdkvtqhtwodrbr +fourfivesxgpxhdvts7four5 +7frgrjkkrb1 +2threettvptwobjhmxvpsvmljtvnpkpsvr +9fivelxtcbbn9xgtwohmmhnfhcknc +fourqztfvd6gkhxnstjjxnbl69hzkghsjrd +pspgqcjfcqdgq6xsgxrls +threesix6lrfkmvjdfivetwo9 +kdjgpj54 +oneeightsevenfive1 +one4onefournine64 +45hhcpntsthreezl9hjdnnine +17ninenineninegczplbj81 +31threetwosevencphdv +5eightvsrzjmdbtqhhqtjfjrhllhbgzgzjzvdhddstxpp4 +pgghlbtsevenqxxjbnd14onetwo +3ljgmcxnqgxcrfourfourtworjtwo +eightseventhree59 +3nhsccljtzszftnqtfour5 +threefourthreeone3five +3pzgzjv7tz +qxgntksdr45tvnxfcjdnn +5seven9threejdzrzdfcpgbnhrrmfkkskg2two +38bjnlcjbeightfivefourqvtbvjsb9nine +nmxqtzlpfngzlsnl9 +9eight8five3two1gsknxznbf9 +518jkqmprjlqcpdthreefive16 +6lzjznblrj3three +f7blbxznlvgk +37jtlrvlzhzronehn +kpckhlcsbeight6 +8dfptmfourtwoeightfoursixonefive +ninecdrxlgdkm7nineseventwotbbcgninekbxssd +rrhkgmnsbxbhb2ccnncrbstjfbmnlbxsxbkr +cflrvjtdsevenfivefive3sevensixeightseven +41ninenrznrcpdqhxfglb +gffivesixtqbbmzllvbnjnk2fivesix +eight311seven +52mpqbgktxhs359btkzqdfzvtrzmltxt +onegxnk2rvnmdcmqvqvgkml34 +gfzeightwoeightrbvknvpt7 +1ct2 +zctqtxtgseven66zhslvvdninetwo +54sixbfn8mxfkthf5 +9974seven9dclxbmfive +onefour6mjtssrxjjsleight2foureight +818sixsmmzsvbpl9two +rjqnpzlp83qxlj +sxqztv22 +8tsvhfszvj +one5mninefour68 +three7threeone +sevencnq2jdjvmlh5mqnnnrsqgppkfxjfjsevendrq +8zmxbvgschsqxbk5lltxpseventhreevrhsvdkk +seven2ngbqlxkjl27eighttjprz +ccfskxtnqpqninevczrltkg18hmgjmqt +npgtv4nine5lnqvglvdrxvqmc +kvg4zrtpxnknbone +threeeight1tsdcthree5zxrshttlsmseven9 +35448284 +6fiveqplkfftsj +pldmrjhzhfiverlgntcckbqzjgth4gfddcrz +6fivesix2 +eightksz6m6pneightnvpvvx +1fourbqxtmbvzsfnrxqmvlbfzvdthree +two43sixthree5one +cqf2 +twoltseven8three64 +6fourprlhcc +fgqoneightsevenqthreebksixgdqt93dm +xjczd3sixseven5 +kfzgshnxqnptrckbrt2 +fourrrdcl624 +kvhfqspcpsxndjqlonesixthree24kdmqvone +8eightfivetwo +onesevenseven5fourlrkkqtfkrmdlsmd +jffvtzkbjnkdtvfsfthree431lrpgmtv +bbvsptrzbone4tfnpgrfourvsix +4seventhreekmxsz335eight +eightbrcv5 +two2eightbppsplzgcfournine5seven +fourthree5kcdhqzeighteightkbzszgv8nine +rgxrddnnbv7rkt +8ffmvpcsvfoureightqpnzzjksgchnine9jlgjqb +two9tfvjqsgqsixnine +bzn4two +sqlfeighteight6hjddxzcone2 +3fivekmfnqlctddfivelcthnine +twodn8 +one5six913lbrcc +foureightmppchbgz8lqbzqbjztwo7cksqxns +zvhzgfpkhkone93nine \ No newline at end of file diff --git a/aoc2023/src/day10/input.txt b/aoc2023/src/day10/input.txt new file mode 100644 index 0000000..230e945 --- /dev/null +++ b/aoc2023/src/day10/input.txt @@ -0,0 +1,140 @@ +.F-7F-..|-F-|F---7J7FLF-7F|FJ-LJ.7--F7-|77.|7J.FFLF7-FJ7.J-7-|.J.7.F7L7..FF.|F--F--|J-FFJFL7F7-LJFF-.7F|7.FF|7FF7FL7L--F--77-7F7.7.-F-J.JFLF +FF-.F|-FLJJ.77F|F|-J77|---.7JLJLFJF-|7.F-7-F7.FFJLJ|.LF7-.|L7.J7LJ.L7FLFF7J|.F|.LJ-|.|.L7F.LFJ.||||FF|FLL--|L-J7--J|J7L||FJ-JLJL-JJ.L7J-L|7J +.|.FF7-LJ|.FJF-77|FJ|||-L|-L-FJ7F-|-LF-L7|FJL7J-F7FFF7FJ.J-.LJ.F|J7.LJ.|L.||L7JF|.7J7.7.|L-FJ7LL-JJ7FJ7.LL7J7LFJFLF--F|JF|-|.-JJJ7L7-||7F--- +FF-F7JF|FFF..L-|-|JF-JF7LJ7.F7--JLJ..LFFJ||F-J|F777L|-7J-7|7|7.FJ-77..LL--7|7F7F|-J|77.FL-7FL-JJ|7JL-L-|7F|7JJLF77L|-7|.FJ-L7|J.LL-FF7F-77|J +F|...FFJLLJFFLJ|JJJ|.LL77-L7LJJ.|L|-|-FL7LJL7JF7JL|.|7||.LF|-|FJJF|F7FJ.FJ|LF||F7.-FFJ-LJ|FJ.L---J.|L.L77-JJ|7|||--L7|J-.F7|.F7F7|FJ|F|J-F.. +--F-L|J..L.F77.L7--JL.L|L7F|J..FJFF-J7|FL-7FJF77JF7J..JJ-FJL-JF|.FFJLJLFF-F-F||||7L|LFFJF-7.7FL|.LL7|FFJL7JFF7F|L|-JJJ|.FL-L777L-.7L7FF7.|7| +F7J.|.L|7.J7|FL.|.|.L|7|J--7-7-L.F|J|F77|FJL-JL7-||L77LLF-J-|-F..FL7.F-LJ7FF7||||F77JLJLL.J7.L-JFF.LJL7-|L|FL-FJF77|.FF-LJ.||J.FF7|FLLJL7.FJ +FJ|F|FFLJ7L-L77L|-FF.|LJF7-L-77.7-|-FJL7FJF7F-7L7||7L|...|-LLL|7FF.LFFF.LF7|LJLJLJ|-7|.|7..J----F77.JF-JL--7JLFJFLJF-7J.L77FF.L-J|LJJ.F|JFJ| +J.L--77|.|7|L|7|J7|.FF|7||7-|||7|-J|L-7LJFJLJFL-J|L-7|-F-7.F7JFFF-7--7-F-J|L-7F7F-JFJL-FJ--J7FJ.J||J|F|7LFJ||-L--7-7JJ.F-7-7.FJ.L|J|||J.F7J7 +|F.F|.7-|JLF7|.J7-77JF7F777.LJ|7L..F|FL-7L7F7F7.FJF-J-7|J|-||J.FJFJ7F7JL-7L77||LJF-7..F|J.|.F.F7FFF.-F77.7F-F77-F77L|77..L-7-.L-7L-LLLJLLJL7 +F7FL77|FLFL|LF7|J-|FFJLJL---77LF7LF7F7F-JFJ|LJL7L7L7JJFJ-JFF--7L7|FFJ|7-LL7|FJL7FJFJ7-F7..F7F-J|F7J7J||J--7L|L7FJL77F-|F7|FF-7-|J|L|7|-JJ|FL +F-JJL--|7|.L7-J|LLF7L--7F---J-||F||LJ||F-JFJF--JFJFJ77F77F7L7FJFJL7L7|F7F7||L7FJL7L7F7||J7||L7FJ|L7F7||77||-L7|L-7L-7JLJL7JJJ.|J||||FJ7--FF7 +F7..7JLL7FL.|-JJJL|L77|||77||7F-7FJF7LJL-7|FJF7FJFJJF7LF-JL-J|FJF-JFJLJ||LJ|J||F7|FJ|LJ|.L|L-J|L|FJ|||L7LFF-7||F7|F-J77LF7JJL|7.|JJ-.F-.|.FJ +7---F7|.FJJF7777.|L7L7FJ|F7-F7|FJL-JL-7F-J||L||L7L--J|7L----7||FJ|FJF--JL-7L-JLJ|||7L-7L7.|F--JFJ|FJ||FJ-FL7||LJLJL-7L7L||JFFF77|JJ.LJ7FL-|J +|F-7F--7FF7|J|FL.F|L7|L7||L7|||L7F7F7FJL7L||FJL7|F7F7|F----7||||F-JFJF-7F7L--7F-J|L7F7L7|FJL7F7|FJL7LJL77LFJLJF7F7F-JF77||7F7||7LL.-LJFFJF7| +J7F-J7.F|J7JFJLJ7LF7||FJ||FJ||L7||||||F7|FJLJF-J||LJLJL---7LJLJ|L7FJJL7||L---JL-7L7||L-JLJF7||LJL7FJF--J77|F--JLJ|||FJL7||FJ||L7.FFJ.-J--L-7 +.L|JF77LJF-.JF-JLFJ|||L7|||FJ|FJ||LJ|||LJL7F-JF7|L7-FJ|F77|F7F-JFJL-7FJ|L-----7FJFJLJF7F-7|LJ|F--JL7L-7F7FJL---7|LJFJF7||||FJ|FJ.|7FL..|7|L| +--L-F.J|.--J-J7F7L7LJL-JLJ||FJL7|L-7LJL7F7||LFJ|L7|F7|FJL7|||L7||F--JL7L-7F7F-JL7L-7FJLJFJ|F-JL-7F-JF-J||L7F--7L--7L7||LJLJL-J|F--777F-7-FFJ +||L7-7JF7L-JF|F7F-JF7F-7F7LJL7||L7|L--7||LJ|FJFJJ|||L7L7FJLJ|FJFJL7JF7|F-J||L7F7L--J|F7|L-JL-7F-JL-7|FFJL-JL-7L---JFLJL7F-----J|F-J7--FLJLL7 +.LJL.LJL|-L-F7||L7FJLJF||L--7L7|FJF7F7|LJF-J|FJ|FJ|L7L7|L7F7||FJF-JFJLJL-7|L7LJL---7LJL--77F-JL7J.FJL7L--7F7FJ-F-7F7F7FJ|F7F7F-JL7L|-7J.--LL +7JFJ77FF|-JL|||L7LJF7F7||F--JFJ||F||||L-7L7FJ|F7L7|L|FJ|FJ|||LJFJ|FJF----JL7L7F-7F7|F----JFJF--JJFJF-JF7FJ|LJF7|FJ||||L7||LJ||F--J7L-.||.F-J +|LJ-L-J7JJJ.||L7L--JLJ|||L--7|FJ|FJ|||F7|FJL7||L7|L7|L7||FJ|L-7|F7L7|F-7F7FJFJL7LJLJL----7L7L7F7FJFJF7||L7L7L||||FJ||L7|LJF-J|L-7F-7|FFJLJ|| +|F-FLL7|...FJ|7L---7F-JLJF--J||FJL7LJ||LJ|F7|||FJL7||FJ|LJFJF7|LJL7|||FJ||L7L-7L7F7F7F---JL|FJ|||FJFJ|||JL7L7||||L7LJFJ|F-JF7|F-J|FJ----.F-- +7JFL77J.-F-L7|F7F7FJ|F-77L--7LJ|F-JF-JL-7||||LJ|F-J||L7L-7L-J|L-7FJ|LJL7||FJF7L7LJLJ||JF7F7|L7|LJL7|FJ||F-JFJ|||L7|F7L-JL--JLJL--J|JJ|7J.J|| +F-|F|F-7L|-FJLJLJLJFJ|FJF7F7|F-JL-7|JF77|||||F-JL-7||FJF7|F--JJFJL7L7F-J|||FJ|FJJF--JL-JLJ|L7|L-7FJ|L7||L-7L7|||FJLJL7F--7F7F7F---J77L-.--7J +|--J-J7LFF-L------7|7|L7||||||F7LFJL7||FJLJ||L-7F7||||J|||L7F--JF-JFJ|F-J|||FLJF7L7F--7F--JFJ|F-JL7|FJ||F7L7||LJL7LF7|L-7||LJ|L----777L7LFJ. +.FLJLLF-F-7F---7F7|L7L7||||||LJL7L-7|||L--7||F-J|LJLJ|FJ||FJL--7|F7|FJL7FJ|L-7L||7LJF-JL-7FJFJ|F7FJ|L-JLJ|FJLJF7FJFJLJF-JLJF-JF7F--J-|JF-L-J +|-J.-7.LL7|L--7LJ||FJ.|LJLJ|L--7L--JLJL7F7|LJL7FL---7||FJ|L-7F-JLJLJL7FJ|L|F-JFJ|F-7|F7F-JL7|.||LJFL--7F7|L7F7|LJJL-7FJ7F7FL--J|L---7JF|FJLJ +F7---F-F7||F7FJF7LJL-7L---7|FF7L----7F7LJLJF7FJF7LF-JLJ|7|F-JL-7F----JL7L-J|F7L7|L7|LJ|L-7FJL7||F-7F7J|||L-J|LJF7.F-JL--JL7F--7|F7F-J-JL-.L| +L7.|.|.|LJLJ|L-J|F7F7L---7||FJ|F-7F7LJL7F-7|||FJL7L-7F-JFJL-7F7||F7|F7FJF--J||FJ|FJ|F-JF-J|F-J||L7LJL7LJL7F7L-7|L7L-7F7F7FJ|F-JLJLJLL|7L7|F7 +LJ7L-7FL7F-7|F--J|LJ|F--7LJ|L7|L7||L7LFJL7LJLJL-7|F-JL7LL7F-J|LJLJL7|LJFJ.F7||L7|L7|L-7L-7||F7||FJF--J|F7LJ|F-J|FJF7||LJLJ.||F7F7F7-F-7-L-JJ +--77L-F-J|FJLJF7FJF-J|F-JF7L7||FJLJFJFJF7L7F7F-7||L-7FJF7||FFJF7F--J|F7L7FJ|||FJ|FJ|F7|F-J|||LJ|L7|F7F7||F7|L7FJ|FJ||L-7F-7|LJLJ|||.|FJF|FJ| +J|.F--|F7|L--7|LJFL--JL--JL7|||L7F7L7L7|L-J||L7|||F7||FJ|||FJFJLJF7-LJ|FJL7|||L7|L7||||L-7||L-7L7||||||||||L7||FJL7||F-J|FJ|F--7LJL-JL-77..F +LF-.LFLJ||F-7LJLF7JF7F7F---JLJL7LJ|FJFJL7F7||FJ||LJ|||L7|||L7|F7FJ|F7FJ|F7|LJL7|L7|||||F-J||F7|FJ|||LJ||LJL-J|||F7||||F7|L-JL7-|F-7F7F-JJ-FJ +.F-7-7.LLJL7|||FJL-JLJ|L------7|7FJL7L-7|||||L7||F-J||J||||-|||||FJ|||FJ||L--7||FJ||||||F7|||||||||L-7|L-7F-7LJLJLJLJLJLJF7F7L7|L7||||-J..77 +FLF|7LFJ-|F|L7FJF7F7F7|7F7F7JFJL7L-7L-7||||||FJLJ|F7|L7|||L-J|||||FJ|||FJL7F7|LJ|FJ|||||||||||||FJL7FJ|F-JL7L7F-7F--7F7F7|LJL-J|FJLJLJ.L77JF +F7FL|.||.LFJFJL-JLJLJ|L-JLJL7L-7L-7L-7||||LJ|L7F-J|LJFJ||L-7FJ||||L7|||L-7LJ||FFJ|7LJ|||||||||||L7J|L7LJF--JF||FJ|F7LJLJ||F7F7FJL-7.J.L.|L77 +LF.LJ-|-F-L7|F7F7JF7J|F7F-7FJF7L7FJF-JLJ||-FJFJ|F7|F-JFJ|F7|L7||||FJ|||F-JF-JL7L7|F7-||||||||LJ|FJFJFJF7L---7||L7LJL--7FJLJ|||L---JJ-JLFF|L- +FF7.F.|.F7J||||||FJL-J|LJFJL-JL-JL7L---7LJFJFJFLJ||L7FJFJ|||FJ||||L7|||L-7|F7FJFJLJL7||||LJ|L-7|L7L7L7|L----JLJJL-----JL7F7LJL7F-7JL-J.FJJ-J +FL|-JJ7F||FJLJLJ|L-7F7L7FJF----7F7L----JF-JFJF7F-J|L|L7L7|LJL7|LJL7||||F7|LJ|L7|F-7FJ||||F-JF-J|FJ||FJ|F---------------7|||F-7LJFJF-J|.F|FF| +FJLFJ|F-JLJF---7|F-J|L7|L7|F7F7LJL-----7|F7|FJ|L-7L7|FJ|||F--JL-7FJ|||||LJF-JFJ||F|L7||||L7FJF-J|F-JL7||F--------------JLJLJF|F7L77F-7JJ|-LF +L.L|F-L7F-7|F--JLJF-JLLJLLJ|LJL--7JF---JLJLJL7L--JFJ|L-7||L-7F7FJL7|||LJF-JF7L7|L7|FJLJ||F|L7L-7|L7F-JLJL--------------7F-7F-J||FJJL-J|7|7F| +.F--|LFLJ-||L-7F-7|F7F7FF--JF7F-7L-JF7LF7JF-7L---7|FJF7|||F-J|||JFJ||L-7L-7||FJ|FJLJF-7||FJFJF-JL7LJ7F7|FF7F7F-7F7F----J|FJL--JLJ|LJ7.7FLJ-7 +LLL-J7L7L-LJF-J|FJ||LJL7|F--JLJFJF--JL7|L7|FJF---J|L-JLJLJ|F7||L7L7|L7FJF-J|||7|L---JFJ||L7L7|F-7|F--JL7FJLJ|L7LJ|L-----JL7-|77F-7-JFF-7-F7- +|L|-JL|7|L|.L--JL7|L7F7|LJF---7L7L7F--J|FJ|L7L---7|F7F---7LJ||L7L7|L7|||L-7|||FJF---7|.LJ-|FJ|L7||L---7|L--7L-JF7L-------7L-7F7L7L7JLL-J--JJ +7|F7|FJ77-F------J|LLJ|L--JF-7|J|FJL---JL-JFJFF7FJLJLJF7FJLFJ|F|FJL7||L7F-J|||L7L--7LJF7F-JL7L-JLJF---JL--7L---JL-------7L--J|||L7L7FLL|7LFJ +7-FJLJ.F77L7F7F-7FJF--JF--7|FJL-J|F--7F---7L--J||F7F7FJ|L-7|FJFJL7FJ|L7|L7FJLJJL7F7L--J|L-7FJF7F7FJF--7F-7L---7F7F-7F-7FJF7F7||7FJFJ-.F-L7|7 +L|||.|-LL-|LJ||FJ|FL---JF-J||F7F7|L-7|L--7|F7F7|||||LJ-L7FJLJ-L7FJL7|FJ||||LF7F-J||F7F7|F-JL7|||LJFJFFJL7L-7F7LJ|L7||JLJFJLJLJL-JFJF|-L|FJJJ +77|7-J-|FFL7FJ|L7L7|F---JF7|LJ||||F-J|F-7|||LJLJ|||L7JF7||F----J|F7LJL7|FJL7|LJF7|||||||L---J||L-7|F7L7FJF-J||F7L-JLJF7FJF-7F7F--JLJ|FFF-L|J +LF7|F-7F-JFFL-JJ|FJFJF7F7|LJF-J|LJL-7|L7|||L---7||L7L7||LJL-7F-7LJL7F-J|L7FJ|F7|||||||||JF7LFJL7FLJ|L7LJFJF7|LJ|F7F7FJLJFJ.LJLJF77JL-7-F7.|. +.LL-JJ.FJ7LLL-|LLJ-L-JLJ||F7L-7|F---JL-JLJ|F7F7||L7L7LJL--7FJ|-L7F-JL-7L7LJ7||LJ||||||||FJL7|F-JF-7L7|F7L-JLJF-J|LJLJF--JF7F7F7|L7.||JLL7-L7 +JF|J.L7|.7-LLF-7F7FF7F--J||L-7LJL--7LF7F7JLJLJLJL-J-|F----JL7|F-JL---7L7L--7||F-J|||LJLJL-7|||F7L7|FJ||L--7F-JF-JF---JF7FJ||||||FJ7|JFF7-J.7 +.LJJFLLL---|-L7LJ|FJ|L--7||F7L-----JFJLJL------7F7F7LJF---7FJ||F7F7F7L7L7F7||||F7|LJF-----JLJLJL-J|L7|L--7LJF7L7FJF-7-|||FJ|||||L7F7-|--J-F- +|J.F|-JJJLF77FL-7|L7|F--J|LJL-7F7F-7|F--7F7F7F7LJLJL--JF--J|FJ|||||||FJF||LJ||||||F-JF----7F--7F-7L-JL7F7L--JL-JL7|FJFJLJL-JLJLJFJ||FL.|.-7L +|7FJLF7L|F.L|7F7|L7|||F--JF---J||L7LJL77LJLJLJL7F-7F---JF7FJ|FJ||||||L7FJL7FJ|||LJL7FJF--7||F-J|LL---7||L---7F7F7LJL7L7F7F---7F7L-JL7J7FF7|J +JJ-LF|-77.FF7FJ|L7LJ|LJF-7L-7F7|L-JF-7L-------7|L7||F7F7||L-JL7|||LJ|FJL7FJ|FJLJJF-J|FJF7LJ|L-7|F----JLJF--7LJLJ|F--JFJ|LJF7-LJL----J7L-FJ7J +|-L-J.L|LJF||L7L7L-7L7FJFJF7LJ||F--JLL--------JL-J|LJLJLJL-7|L|||L77||JFJL7LJF---JF-JL7|L7FJF-J||F-7F7F-JF7L---7|L-7FJFJFFJ|F------7|F.|JLJ7 +L.LL7J-JFFFJ|-L7|F7L7|L7|FJL-7LJL--7L|F7F7JF--7F7FL7F-7F--7L-7LJL7L7||7L7FJ|-L7F-7L7F-J|FJL7L-7|LJ-LJ||F-JL----JL-7LJFJ-FJFJ|F--7F7|-J7F--J- +|-F-||7F--JFJF-JLJL7||F||L--7L7F7F7L7FJ||L7|F-J||F7LJJLJF7L--JF7||FJ||7FJL-7.LLJJL7|L--J|F-JF-J|F7F7FJ|L-7F------7|F7L-7|FJFJL7J||LJ|7FJ|.LJ +.JJ7LFLL7F7|JL--7F7LJL-JL-7-L7LJLJL-J|FJ|FJ|L--JLJL7F7F-JL----J|FJL7LJ-L7F-J7.LL-JLJF---JL7.L--J|LJ|L-JF7||F7F---JLJL7FJ||||F7L7|L7LL-J.JF|J +|--7|.L.LJ|L-7F7LJL---7F7FJF7L-------JL-JL-JF------J||L7F------JL-7|J|LL|L-7-|F--FF-JF--7FJF---7L-7|F7FJLJ||LJF7F---7LJFJL-J||FJL7|||||F.FFF +F.||-|7.F7L-7LJL7F7F7|LJ||-|L---7F7F7F7F---7L7F7F7LFJL-JL-----7J|.||L|7L|F7|-JJJ.LL--JF7LJLL--7L-7|||||F--JL7FJLJF--JF-JF-7FJLJJFJ|J77-7FL7J +LJ-FFJJ.||F7L--7LJ|||F--JL7L7F-7LJLJ|||L-7LL-J|LJL7|F--7F-----J-L7LJ7-|JLJ||.LJ|F|LFF7||F77F-7L-7||LJLJ|F--7LJF-7L---JF7L7|L--7-L7|-FL---L-J +7F-J|7.FJLJL-7FJF7LJLJF7F7L7LJFJF7F7LJ|F7L----JF-7LJL-7|L------7LFJ|.-JJLLLJ7L-7-F--JLJLJL-JFJF7|LJF--7|L-7|F7L7L-----J|FJL7F7L7.LJ7-7J|F|.L +.|L|F-7L----7|L-JL7F7FJLJL7L7FL7|LJL-7|||F7F-7FJFJF-7FJL--7F---JFL7-7.F--|-JJFL.LL--7F-----7L-JLJF-JFFJ|F-JLJ|FJ|F-7F7-LJF7LJL7L77J|J7-77|.| +L.|J|FJFF---J|F--7LJ|L7LF7L7|F7LJF7F7||||||L7|L7L7L7|L---7LJF--7F7J7FFJ7F7|J.|.|JLF7LJ7F7F7L7F7F7|F-7L-JL---7LJF7L7LJL--7|L--7|FJ-.F-JJFJF-J +|.7|L7JFJF7F7LJF7L--JFJFJL-J|||F-JLJLJ||||L7||FJFJFJ|F7F-JF7L-7LJ|J7FF-J7|L--L77F-JL---JLJL-J|LJLJL7L7F-----JJFJL-JF-7F7LJF--JLJL|7|.FF--J-| +J.LLJF7L-JLJL-7|L7F7FJFJF--7LJLJF--7F7LJLJ7LJ|L7L-J.LJ|L-7|L7FJF-J-7LJ-JL|L--77FL7F7F---7F7F7|F-7F7L7|L-----7FJF7F7|7LJL-7L---77F7LL-F7J7.F7 +L.|L-|L7F7JF--J|FJ||L7L7|F-JF7F-JF7LJL77F77F7L-JF--7F7L--JL7LJFJ||-L-J7.F-.|--7FFJ||L7F-J|||||L7LJL-J||F----J|FJLJLJF---7L----JF-7JLJLJ.FFLJ +JF|FLL7|||FJF-7|L7||FJLLJ|F7|||F-JL---JFJL-JL7F-JF7|||F77JF|F7L-77-F7L-FF.FF7.--|FJL-JL7FJ||||FL--7F7L-JF7F7||L----7|F--JF--7-F7-L-.7--7J7JJ +LL|FF7||||L7|FJL7|||L7F7FLJ||||L7F---7.|F----JL7FJ|||LJL7FFJ|L--J7-|J7LL-.LJ--..LJF----J|F||||F---J|L--7|LJL-JF----J|L---JF-JFJL77LFJ-||J|J7 +|LLFJLJLJL-J|L7FJ||L7||L---J||L7||F--JFJL----7FJL7LJL7F7L7L7L7F7F7J.FFFJL-JJ|LJ-L|L-7F7FJFJ|LJL----J-F7LJF----JF--7||F----J.FJF7L-7J.FF|-L-J +|7.L-7F--7F-JFJL7LJ-LJL-7F--J|FJLJL---JF7F7F-J|F-JF-7||L-J-L7||LJ|J-FJ|7F|..F7JJLLF-J|LJ7L-JF----7F7FJL--JF----JF7L-JL---7-FJFJ|F-J|LJ7LJJ.L +.FLLL||F-JL-7L-7L-7F-7F7LJF--J|F7F-----JLJLJF-JL-7L7|||LF7F-JLJF-JFF7JLL7|F-7J|||LL--JF-7F7.L-7F7LJLJF-7F-JF--7FJ|F7F7F-7L-JFJJLJ.|7|||.F-7| +F-.L.LJL7F7FJF-JF7|L7LJL7FJF--J|||F------7F7|F--7L-JLJL7|LJF7F-J|7L||F7JL77.LLF--J|LFLL7|||F-7LJL----JLLJF-JF7LJFJ|LJLJ|L-7FJ7.F7FF-F7|F-F|J +L|.|7|FFJ|||JL7FJ||-L--7|L-J.F7||LJF7F7F-J|||L-7L7F7F-7LJF7||L--77J|LJ|-F7F-FFLJ|-F-7F-JLJLJFJF7F7F---7F-JF-J|F7L-JF7F---7|L-7FJ|FF7|L7-7FJ7 +.|.-7-F|FJ|L77LJJ||F---JL----JLJL--JLJLJF7|||F-J.LJLJ7|F-JLJ|F-7L77L-7|.LLJF-77JFFL7|L-7F7F7L-JLJ|L--7|L--JF-J|L-7.|LJF7FJL--JL7L-JLJFJF7.J7 +L7.|-F-J|FJFJJ-LLLJL7F7F7F---------7F-7FJLJLJL---7F7F7LJF--7||FJFJF--JL7L|7|FJF7FF-JL-7LJLJL----7|LF7||F---JF7|F-JFJF-JLJF7|F7||F----JF|JF7| +.J-.L|F7||FJJ|7-|.J|LJLJLJF-----7F-JL7||F7F7F7F-7LJLJL--JF-J||L7|7L-7F-J-FFJ|FJL7L---7|7F7F77F--JL-JLJLJF7F7||||F7L7|F7LFJL7|L7||F-----77LL| +-J.JJLJLJLJ7.|FFJ7-F------JF---7|L---JLJ|LJLJ|L7|F-----7FJF7LJLLJ-LFJL7J-FL7LJF-JF---JL-JLJ|FJF7F-7F----JLJLJLJLJ|FJLJL7L7FJ|FJ|||F-7F-J7.JJ +LFL7L||JL|.FJJ7J.7.L-------JF--JL------7L---7L7||L----7LJFJL7F7-|LFJF7L7F7FJF7|F-JF-------7|L-JLJFJ|F-----7F-7F--J|F--7L-JL-JL-JLJL7LJ|L--|. +F-L7.LJ7LJL|JL7FFJ7LLF7LF---JF7F7F----7L----JJLJL7F7F7L--JF-J||F-7L-J|FJ|||FJLJL--JF------JL----7L-JL----7LJFJL--7|L-7|F7F7F7F7F--7L7L7-LFL- +|.||.FF7.F-L-F7F7F-F-J|FJF--7|LJLJF--7L---7F-7LF7LJ||L7F--JF-J||FJF7FJL7|||L---7F7LL7F-7F7F---7FJFF-7F7F7L-7L7F-7LJF-J|||||||||L-7L-J.L7J.|7 +FJF|JF|JFL-J-|||L7-L-7LJFJF7LJF7F7L-7L----J|FJFJL7F|L7|L--7|F7||L-JLJF7LJLJF7F-J||7LLJFJ|||F-7||F7L7||LJL--JFJL7L--JF7LJLJLJ||L7FJF7J7||FF.- +|L-||-J7JL7LL|LJFJF77L7FJFJL--JLJL--JF7F---JL-JF7L7|FJL7F7|LJ||L-----JL7F--JLJ|FJL7J.FJFJLJL7LJLJL-JLJF7F--7|F7L----JL7F7F7JLJFJ|F||-J|-7J-J +FFLJ77.77-JJJ|F7L7||F7||FJF7F--------JLJF------JL-JLJF7LJ|L7FJ|F7F7F7F7||F---7FJF-JF7L-JF--7L7F7F7F-7FJLJF7||||F---7F7LJ||L--7L-JFJL7.|.J||| +L-77L-7|-J..-LJL7|||||LJL-JLJF----7F7F7FJF----77F--7L|L-7|FJL7||||LJ||LJLJF7FJL7|FL|L--7L-7|FJ|||||LLJFF-JLJLJ|L7F7|||F7LJF--JF--JF-J.|..FL7 +|L---|J.L.77-FF7|||LJ|FF7F-7FL7F-7LJ|||L-JF--7L7|F7|FJF-J||F7|||LJF-JL-7F-JLJF-JL7-L--7L--JLJFJLJLJF7F7L---7F7L-J||LJ|||F7L---JF-7L7F7--7.L| +F-J--JJ-L|L|-FJLJ|L-7|FJ||FJF7LJFJF7LJL-7FJF-JFJ||LJL7|F7LJ||||L7FJFF--JL-7F7L7F-JF-7-L7F---7|F7F7FJLJL77F-J|L7F-JL-7LJ||L7F7F-J|L-J||JL-7.| +J|.FJJL.LJ-J.L--7L--J|L7|||FJL77L-JL---7LJ7|F7L-JL7LFJLJL-7||||FJ|F7L-7F--J||FJL-7L7|F7LJF7FJ||LJLJF7F7L-JF7L7||F---JF7||7LJ|L------J|77L|-- +LF7FF7-7FF7L-J.LL7F-7L7|||||F7L-------7L--7LJL-7F-JFJF7F--J||||L7LJ|F7|L7F7|||F--JFJLJL7FJ|L-JL7F-7|||L7F-JL-JLJL---7||LJF7|L7F------JJ-F--7 +.L-7L7-L-||7|F7F-J|7L7LJLJ|LJL-7F7F7F7L7F7L77F-JL7FJFJLJF7FJ||L-JF-J|||FJ|||||L--7L---7|L7|F7F7LJFJ|LJ7LJF--7F------J||F-JL-7|L----7F|J-JFF| +FFLJJ|L|-F-7-||L7FJF7L---7L7F7LLJLJLJL7LJL7L7L-7FJL7L7F7|LJFJL-7FJ7FJLJ|||||||F-7|LF7FJL7|||||L7|L-JF----JF7|L-------JLJF-7FJ|F-7F7L-777L-FJ +F--J-L-F-JFJ-|L7|L7|L----JFJ||F7.F7F-7L--7L-JF7||F-JFJ|||F-JF-7|L-7L--7L7|LJ||L7LJFJ|L7FJ||||L7|F7F7L-----J|L7F7F-7F-7F7L7|L7|L7LJL7FJ.L-L-F +|-L|||F|F7L7.L7|L-JL-7F7F7L-JLJL-JLJL|F--JF7L||LJL7FJJ|LJ|F7|FJ|F-JF7-L7|L7FJL7L7FJFJ-||FJLJ||||||||F7FF---J-LJLJF|L7||L7||FJL7L-7L||LJ7F7J| +|.|L-7FLJ|FJF-J|F7LF7LJLJL---7F7F---7LJF7FJ|FJL7F-J|F7L-7||||L7|L-7|L-7|L7||FFJFJL7||FJLJF--JFJLJ||||L-JF--------7L-JLJ7|||L-7|F-J.LJ--F||LL +|-FJLF---JL-JF-J||FJ||F7F---7LJLJ7F-JF7||L7|L7FJL-7LJL-7|LJLJFJ|F-J|F-JL7||L7L7L7FJL7L7F-JF77L7F-J||L---JF-------JF-7F-7LJL--JLJJ.FJ-F-JLF-J +|-L.FL-7F-7F7L7L||L7|FJ|L7F7||F7F7L-7|LJL-JL7|L7F7L7F7FJ|F---JF|L7J||F7FJ||FJ-L7|L7FJFJL-7|L7FJL7FJ|F----JF7F7F7F7L7LJFJFF7F7F7|F----7JJLLJ. +|7|FF-L||JLJL7|FJ|FJ||FJFJ||L-JLJL7FJ|F-----J|FJ||FJ|LJFJL7F7F-JFJFJ||||FJ||F7FJ|FJL-JF--J|FJL7FJL7|L-----JLJ||LJL-JF7L--JLJLJL-7JJ-F|...JLF +J-7-|JFLJF7F7||L7|L7||L7L-JL-----7|L-J|F---7FJL7|LJFJF7|F-J||L-7L-JFJ|||L7||||L7||F--7L-7FJL--J|F7||F-7F7F7F-J|F----JL----7F----J-|.J-|..||. +J.L-LJ-LFJLJLJL7||FJ||FJF7F7F-7F7|L-7FJ|F--JL-7|L-7|-|||L7FJL7||F--JFJLJFJ|LJ|FJ|LJF7|F-JL--7F7|||||L7LJLJLJF7|L-77F77F7F7LJ-F7-F77FL7J-LJ-- +LF.|LJ|LL-----7|||L7|||FJLJ|L7LJLJF7LJ-|L-7F--JL-7|L-JLJFJL-7L-JL7F7|F--JF|F-JL7|F7|||L--7F7|||||LJ|7L7F-77FJLJF7L-JL-JLJL---JL7||JFJ|-|-|.J +F|--.JJLLF----JLJL-JLJ|L--7|-L7F-7|L7F7L7FJL--7F7LJF----JF-7L--7FJ|||L-77FJL-77||||||L7F-J||LJ|LJF-JF7LJFJFJF7FJ|F7F----7F7F7F7||L7LF7F||F-| +LJFL-|L7.L--7F-7F7F7F7|F7FJ|F7LJ-LJFJ|L7|L7F--J|L--JF---7L7|F7FJL7|LJF-JFJF--JFJ||||L7|L7FJ|F7L-7|F7|L7FL-JFJLJLLJLJJF-7LJLJLJ|LJFJ-.J7LL7L- +|.|J-7-J-F--J|FJ|LJLJ||||L7LJL-7F7FJ7L7||FJL--7|F7F7|F--J-||||L7FJL7FJF7L7|JF7L7||||FJ|FJL7|||F7|||||FJF7F7L7F--7F7F7|FJFF---7L-7||L-FL--|7J +LFJ.||..FL---JL7|F---JLJ||L---7||LJF7FJ||L-7F7|LJ||||L7F7FJ||L7|L7FJL7|L7|L7|L7||||||FJ|F7||||||||||||FJ||L7LJF-J|||LJL--JF--J-LLJJ7FFJ-FF-7 +FJFFF-F77LF---7LJL----7FJF7F--JLJF-JLJ-|L-7|||L7FJ|LJFJ|||FJL7||FJ|F-JL7|L7|L7LJ||LJ||F||||||LJ|||||||L7LJFJF7L--J||F-----J.F77F7|LF7F-7LJ|| +LF|7-L|L-7L--7L7F7F---JL-JLJF-7F7L-7F--JF-J|||FJL7L7FJFJ|||F-J||L7|L7F-J|FJ|FJF7||F-JL7LJ|||L7FJ|||||L7L-7L7||S7F7LJL-------JL-J|FFF-JFJ|-7| +LJJ|J|L7FJ-F7L7||||F7F7F---7|FJ||F7|L7F7L-7|||L7||FJL-J-LJ|L-7||FJ|FJ|F-JL7|L-J|||L7F-J|FJ|L7|L7|||||.L7FJFJ||||||F7F-7F--------JF7L7FJJ||LL +F|L|LF-JL--J|7||||LJLJLJF--J||FJ|||L7||L7FJ|||FJFJL----7F-JF-JLJL7||FJL-7FJ|F7FJ|L7||JF-JFJFJL7|||||L7.|L7L7|||||LJ|L7|L---------JL-J|--.||| +-|JJFJF--7F7L-JLJL------JF7FJ||FJ||FJ||||L7|||L7L-7F7F7|L-7L--7F7LJ|L7F7LJFJ||L7L7||L7L7FJ7|F7|||||L7L7L7L7|||||L7FJFJL----------7F7FJFF7J77 +LJ.LL-JF-J||F7F-7F------7|LJFJ|L7|||||L7|FJ|||FJF-J|LJ||F7|F-7LJ|F-JFJ||F7|FJ|FJFJ|L7L7|L-7LJ|||||L7L7|FJFJ|||||FJL7L-----------7LJ|L--7J.77 +FF|7LF7L7FJLJ||FJ|F-----JL77L7|FJ|||FJFJ|L7||||FJF7L-7LJ|LJL7|F7||F7L-JLJ||L7|L7L-JFL7||F7L-7|||||FJFJ|L7|FJ|||LJF-JF-------7F-7L-7|F--JL|L- +FL|JFJL7LJ-F-J|L-JL7F7F7F7|F-J|L-J|||FJF|FJLJ||L7||F7|F7L-7FJLJ||LJL7F7F-JL-JL7L7FF--J|LJL7FJ||||||FL7L7||L7|||F7L-7L------7|L7L-7|LJ7-J7|.| +LFL7L-7L---JF7|F7F-J|||||LJL-7|F--J||L-7||F--J|FJ|LJLJ|L--JL--7|L7F-J|||F--7F7|FJFJF7FJLF7||FJ|||||F-JFJLJ-|||LJ|F-JF7F----JL7L7-LJJ.F-J|JF- +FJ|L|LL7F7F7||||LJF7|||||F---J|L--7|L7FJ|||F-7|L7L-7F-JF7F7F7FJ|FJL7FJ|LJF7LJ|LJ7|FJ|L-7||||L7|LJ|||F7L-7F-J||F-J|F7||L-----7L-J-JJ|-7|J|J|J +J7|LFJFJ|LJLJ||L7FJLJ||LJL-7F7L--7|L7|L7||||-|L7L7FJL-7|||||LJFJ|-FJL7L7FJ|F7L--7LJFJF7LJ||L7||F-J|LJL7FJL-7|LJF-J|||L7F7F-7L---7J.L7||7|-77 +FJJF77L7|F---J|FJL7F7||F---J||F7FJ|FJ|FJLJLJFJFJFJL7FFJ||||L-7L7L7|F7|FJL7|||F--JF7|FJL7FJ|FJLJL-7L-7FJL-7FJL-7L-7|||FJ||L7L----J77-J7|L|J.7 +F-FJL|-||L7F-7|L--J|LJ||F7F7|LJLJ-||JLJF7FF7|FJ||F7L7L7|||L7FJFJFJ||||L7FJLJ|L-7FJLJL-7|L7|L7F---JF-J|F7FJ|F7FJ|FJ||||FJL7L--7F77J|FFFJ7|7.| +L7JL|L-LJ7||FJ|F---JF7||||||L--7F7|L--7|L-JLJL-7LJ|FJFJ|LJL|L7L7L7||||FJL--7|F-JL-7F7FJL-J|FJL-7F7L-7LJLJFJ||L7FJFJ||LJ|-L7F7LJL7-F|--LJJLF- +-|||.LLL7F||L-JL--7FJ||LJLJL7F7LJ||F7FJL7F-7F-7L-7LJFJFJJF-JFJ|L-JLJ|||F-7FJ|L7FF-J||L---7||LF-J||F7L7F7-|FJL-JL7L7|L--7F-J|L7F-J-|LJ.LJ7.|| +LL7L-J|-7-LJ|-F---J|FJL--7F-J||F7||||L7FJ|.||FJF-JF-JFJF-JF7L----7F-J||L7|L7L7L7L7FJL7F7FJLJFJF7|||L7LJL7|L--7F-JFJL-7FJL-7|FJ|JJ.L-7|J.7-F| +.|LFL7JF-JL|7FL----JL7F--JL7FJLJ||LJ|FJL7|FJ||FJF-JF7L7L-7||F7F7FJL-7|L-J|FJFJFJFJ|F-J|||F7J|FJ|||L7L7F-JL7F7|L-7|F7L||J7FLJ|FJ--|7LFJ.J|FJJ +FF77-J7FJFL7-L.F-----J|F7F-JL7F7|L7FJ|7FJ|L7||L7L7FJL7|F-J|||||||F--J|-F7LJFJFJJ|FJ|F7||LJL7LJFJ|L7|FJL-7FJ||L7FJLJL7||FL|.LLJJ-J|F7L|FJ7JL7 +|JFJ-F7JFFF7.LLL--7F-7|||L7F7LJ||FJL7L7L7|FJ|L7|FJ|F-J||F7|||LJ||L7F7L7|L-7L7L-7||FJ||||F-7L-7|FJLLJ|F--JL7||FJ|F7F7|||JJL7|L-|-77L77|7-F7.| +7-L7.FFJL-|L-FLLJ|||-LJ|L-J|L7FJLJFLL7|LLJL7|FJ|L7||F7||||||L-7||FJ|L7LJF7L7|F7||||FJ||LJ7|F-JLJ-LF-JL777||||L7||||LJLJJ7-LLJF7LJL|J7LF-|7.7 +|.JJF|J.L-JJF-7..FLJ77FJF7FJL|L--777.|L7JL-LJL7L7LJLJ||LJ|||F-J||L7||L7FJ|FJ||||LJ||FJL7-FJL-7.L--L7F-JJ-FJ|L7|||LJJL|.LF7.F|J|7J.J7|JL-F-JJ +|7|F7J-F--7-JL|--|JJF-JFJ||F-JF--J||-|FJ.J7J.FL-JF-7FJL-7|||L-7||FLJF-JL7|||||||F7||L7FJFJF-7L7-7LL||LF|||FJ-LJ|L7JFF7J.LJ-|7-F-.7J7..F7LF77 +LJ|.LJF-7.J7.|||F|-FL-7L7||L-7L-7JFLFLJJ7F|7F|FF7L7LJF7FJLJ|F7|LJF--JF7FJLJFJ||LJ|||-||FJFJ-|FJ.|77LJ7-F-LJL-.LL-JFJ.|JL.|7LJ.JL-LJ|F.F7JL7J +L7|7.FL.F7LF-LJJJ|..L-L-J|L7FJF-JF77.L|JFJ.FF--J|FJF7||L--7LJ|L7LL-7FJ|L--7L7||F-JLJJLJL7||L||7.LF-JFLLF7.LLJ-7L7LJ-L7-7F-77|FJ.LJ7|.7||F-F. +F7J|-LLJF-7L-||7F7-7F-JFLL-JL7L--J|7|-|LFLJ-L--7LJFJ||L--7L-7|FJF--J|FJF7FJJ|||L77-LFL-LLJJ-LJJ77.FL|.F77F||LL7LJ7J|F|JL--J-F7--7FJ.L|F-7FJ7 +FL7|L|.F7JF-.LFL|LJFL|-FJJ|LLL7F-7L-7|LF77||LL-|F7|FJL7F7|F-J||F|F-7||FJ||JL||L7L7J7|L.L|7.L||LFFJ7-777||LJF7|LJF--7---F|7L7LJ7|LJ-F.LL7J7L| +L.F|-L--F-|JFF7F|--7.L--..J.LFJL7L-7|7FJJL|-7J.LJ||L7FJ|LJ|F-JL7LJFJ|||FJ|JFLJJ|FJ-J7FF---|F77.FJFL.LF-LJ-LFJL-7-7FF7J7|L-.LJLF--|.-.|JL7F7L +.-J|||FFJ-JFFJ.LJLL-JFL|LFJ7J|F7L7LLJFJJJ-|.7.-7FJ|FJ|-L7FJL7F7L-7|FJ|||FJ.7||LLJJJJ|L7LLJL-JJ.JFJ7J.L|7J.FL|.7J.F7LJ.JL777.|F.LFLJJF-7F|LLJ +7F-L|-7L|JLF|7JF|.F|.L7FJJ.FFLJ|FJFJ.LJ.7|F-J-JFL7|L7L7L||F-J|L7FJ||-||LJJ..77|-J-.-FLJ7F-7F|7||7-L.FJLJF7J.J.LJ|L|7J-|F.F-FLJ||.|J.7.F-L.|| +||7JL-JJL7.F.-.FLF-|-7L7J||-|J-LJ-L-F.|FJ-|-|LLJ.LJJL-J-LJ|F-JFJ|F|||LJ-LJ--JLF-FF7L|J|7|F|LFJL7|F|-|-F-JJ..|.|..FL-.L-.FF--7L|-F7.L|.-J7LL7 +7.77.FL-JJFFJ7.77JLL.F7L7FF7-7.LJ.FF77F-J||.||.F|J7F||JFJLLJ-LL7L7LJ-L.FJ77.|.JLLL-JJF--|F|-L-FF7LJ.|||LLF-77-L7--7LFF-7.|L7|-----7.J-FF7|-| +.LLLF|F77F-JLF7-J-|LF.F-F|J|L7-JJ-J-J-7-7-7|JJ-|7-J-LF7L|-J|7|FL-JLJJ|7FJF7LJ.L-7.L7-L|FJJJ-|7|L|-J-J-77LL.F-7-|7LF.7JL-F7|-|LJ..F|7-F7LF7FF +FJ|L7JLJ-L...L|J..J7L7|FJL7--7|..||||FL--7L7.L-||.JJFJJ|F-LJ7|JJ||LF7L7JJ|L|.|.LFJLL7.-|JJ|FF-|||FL-JFJ|F7-|-J--|7LFJ77F|JL7L7LF-|FJ7J|.|FJ- +J.FJ|LLJLL-|-.LL-L-|LJ-LL-L-JLL-.-JJL7-7J|LJJ7.-|JJ--L-J.FLJ-|L7--.-J-L--JLLFJL-FJ.|J.LJJLLLJ-J-L7-LL7JL-|JLJ-LLLJ-LJ|JFF7J..-7J-LJ..7.FFJJJ \ No newline at end of file diff --git a/aoc2023/src/day11/input.txt b/aoc2023/src/day11/input.txt new file mode 100644 index 0000000..c86cc92 --- /dev/null +++ b/aoc2023/src/day11/input.txt @@ -0,0 +1,140 @@ +..............#..........................#.....................#.....#...................#..................................#............... +.............................#.........................................................................................#..........#......... +#......................#.................................................#.....................#...........#................................ +......#..............................#........................................#............................................................. +................................#...........#.........#.............................................................#.....#..........#...... +..................#...................................................#...................#................................................. +............................#............................................................................................................... +........#.....#...............................................................................#...............#............................. +#...................................#.....#.........................................#.....................................................#. +..........................................................................#........................#..............#........#........#....... +.....#.....#.............#.......................#.......................................................................................... +..............................#.............................#....................#......#................................................... +............................................................................................................................................ +.......................................#....................................#........................................#...................... +.......#................................................#..............#............................#....................................... +................#.................................................#.........................................#............................... +.....................#.........................#.....................................#...................................................... +...............................................................................................#..................................#......... +.#......................................................................................................................#................... +........#................................................................................................................................... +...............................#...........#.............#...............................#...........#...................................#.. +.............#.....#.............................................#.....#......................................#............................. +............................................................................................................................................ +.......................#...........#.................#..............................#....................................#.................. +...............................................................................#.....................................................#...... +..#......#.............................#............................#..................................#........................#........... +.............................#..........................#......#...........#................................................................ +....................#.........................#..................................................#.......................................... +......#............................................................................................................#........................ +...........................................................................................................#................#............... +#..............#...................#.............................................#........................................................#. +.........................................#.........................................................#........................................ +.....................#............................................#.....................#................................................... +.................................................#......#................................................................................... +.........................................................................................................#..............#.......#........... +...............................#..................................................................................#...................#..... +..........................#.........................#...........#..............#..........#..................#.............................. +..........................................#.............................#................................................................... +............#......#................................................................................#....................................... +................................................................................................................#.....#....................# +...#.........................#................#...............................................................................#............. +......................#..................................#.............................#...................#................................ +.......................................................................#.....#.................#............................................ +.......#..................#.........................#....................................................................................#.. +..........................................................................................#....................#............................ +........................................#........................#.....................................................#.................... +...................#.....................................................#.......#.............................................#............ +..............................#.................#........................................................................................... +..#..................................................#......#................#.............................................#.........#.....# +...........#..................................................................................#.....................#....................... +.....................................................................................................#...........................#.......... +................#......................#........................................................................#........................... +............................................................................................................................................ +.......#..............#............#............................#......#................#.....................................#............. +............................................#........#.........................................#............................................ +..............................#..............................................................................#.......................#...... +............................................................................................................................................ +....................#............................................................#..............................................#........... +......................................#..............................................................#...................................#.. +..........#.....................#.......................................#..............#.................................................... +............................................................................................................................................ +....#.....................#..................#......#.......#.................#...........................................#................. +....................................#.........................................................#....................#.............#.......... +....................................................................................................#....................................... +.................................................................#........................................#................................. +..................#...................................................................................................#..................... +.........................................................................#......................#........................................... +#......................................................#...........................#............................#.........#................. +...........................#............#..........................................................................................#........ +..................................................................#......................#.................................................. +................#................................#...........................#.............................................................. +........#.....................................................................................................................#............. +...................................#........................................................................................................ +.......................#.....#................................................................................#............................. +.#...........#...........................................#.................#....................#........................................... +..........................................................................................#............#................#................... +..........................#..........#...................................................................................................... +.....#...............................................................................#.....................#.....................#.......... +............................................................................................................................................ +..........#............#................................#.....................#..................................#.......................... +...............#...................#.........................#....................................#..................................#...... +............................................................................................................................................ +...........................................................................................................................................# +...#.....................................................................................................#.................................. +......................#.............................#..........................#..............................#............................. +..........................................#...................#..........#..........................#...............#....................... +..............................#.....................................................................................................#....... +.........................................................#................................#................................................. +...............................................#............................................................................................ +..........#...........................#..............#..........................#.........................#...................#............. +#.....................................................................................#..................................................... +.....#............................................................#..........................#.................#............................ +...........................#.......#..............#.................................................................#....................... +.......................................................................................................#.................................... +........#..........#.....................#..................#......................#......................................#...............#. +.............#.........................................................#.................................................................... +................................................................#........................................................................... +.....#.................#.................................................................#......................#.....#..........#.......... +................................#......#.............#.........................................#.....#...................................... +...........................................................................#.........................................................#...... +..........#................#................................................................................................................ +.................................................#..............................#..........................................#................ +.....................................................................................#.................#.........#.......................... +.......................................................................#....................................#............................#.. +...............#......#....................................#................................................................................ +.........#...............................#..........#..........................................................................#............ +...............................................................#.................#.........#.....#......................#................... +............................#.....#......................................................................................................... +......#..........................................#.......#...........................................................................#...... +..............#...................................................#........................................#......#......................... +.............................................................................#.............................................................. +.....................................#................................#................................................#.................... +..........#..................#..............................#.............................#................................................. +....#.....................................................................#......#............................................#............. +......................#.................................#..............................................#.................................... +.............#.............................................................................................................................. +..........................................#......#...............................................#..........#............................... +.........................#......#.......................................................#...............................................#... +...........................................................#.................................#...................#.......................... +...#...............#..................#..............#....................#...........................................#..................... +.....................................................................#...........#..........................................#......#........ +..............................#...............#.................................................#......#.................................... +........#.....#............................................................................................................................. +#........................................................#.............................#.......................................#.......#.... +....................#..................................................#.................................................................... +..........................................#......................#.......................................................................... +.........................#...........................#.............................................#............#.........#................. +.....................................................................................................................#..............#....... +..........#...................................#............................................................#..................#............. +.....#..........#...................#........................................#.............................................................. +.....................................................................#.........................#.......#.................................... +......................#......#.............................................................................................................. +.#......#................................................................................................................................... +.................................#....................................................#...........#......................#...............#.. +.................#..................................#.........#.........#...........................................................#....... +..............................................#..................................#.......................................................... +...........................#..........................................................................#.........#........................... +..........................................#................................................................................................. +.....................................#...........#..................#.........................................................#............. +..................#....................................#.............................#...........#........#.............#................... \ No newline at end of file diff --git a/aoc2023/src/day13/input.txt b/aoc2023/src/day13/input.txt new file mode 100644 index 0000000..3113249 --- /dev/null +++ b/aoc2023/src/day13/input.txt @@ -0,0 +1,1379 @@ +##..#..#......# +.........#..#.. +.####.#.######. +#....#.###..### +..##..#.#.##.#. +######...#..#.. +#.##.#.#.#..#.# +#....#..######. +.#..#...#.##.#. +#....#....##... +.#..#.#..####.. +......#.######. +##..##.#.####.# + +.#...##.. +..##.#.## +.#.###... +###..#.## +##.#.#### +..#.#..## +.###...## +.#...#.## +#####.#.. +...#..### +###.##.## +####...## +####..### +###.##.## +...#..### + +#####...####.#. +##..###..#..#.# +...#.###.....#. +...#.###.....#. +##..###..#..#.# +#####...####.#. +##....####..... +#..##.....#..#. +#..##.....#..#. +##....####..... +#####...######. +##..###..#..#.# +...#.###.....#. + +#..##...# +#..#..### +#..#..### +#..##...# +.##..#.#. +.....###. +#..#.##.# +...#..### +.##.#..## +.##.#.#.# +#####.#.. + +######.#.#.#... +.#..#.#.##...#. +...#....#.#.#.. +#.##.#.#.....#. +.......##.#.### +#######.##.#..# +......##...##.. +#.##.#....#.#.. +#.##.#....#.#.. + +#...#..##.. +.##..###### +....###..## +.#..#..##.. +.####.####. +###.##....# +.#..##...## +###.#..##.. +#.#.#...... +.####...... +....#.####. +..##..#..#. +..#.#.####. +..#.#.####. +..##..#..#. + +#...#.#.##.#.#... +###.#..#..#..#.## +#...##.####.##... +#.....#.##.#..... +...#####..#####.. +##..#.######.#..# +###.##.#..#.##.## +...#..#.##.#..#.. +....#........#... +#..##.#.##.#.##.. +#................ + +...##.###.# +...##.###.# +##..#....#. +##.....#.## +#.##..#.#.# +..##...#.#. +...#####..# + +.##.##.#.##.. +#..#.#.#..... +####.###..#.# +####.####.### +#..#.#####.## +#..#.#....### +#..#.#....### +#..#.#####.## +####.####.### +####..##..#.# +#..#.#.#..... +.##.##.#.##.. +.....##.#.#.. +####..#.#.##. +#####.#...### +#####.#...#.. +#..#...####.# + +#..#.#...#...##.. +...#...#..#..##.. +#..####.#.#.####. +..#####..#.##..## +..#...####.##...# +.#.#########....# +.#.#########....# + +#..#...#.#.#...#. +#.####...###.#.#. +#.....##...##.#.# +##.##....#....#.. +#.....##....#.... +..##.##.#...#..#. +..##.##.#...#..#. +#.....##....#.... +##.##....#....#.. +#.....##...##.#.# +#.####...###.#.#. +#..#...#.###...#. +......#.#..##.... +......#.#..##.... +#..#...#.###...#. +#.####...###.#.#. +#.....##...##.#.# + +....#.. +#.##... +#.###.. +#...##. +.##..## +.##..## +#...##. +#.###.. +#.##... + +##.##.#.. +..#..#..# +...#####. +..#....## +##.##.##. +##.##.##. +..#...### +...#####. +..#..#..# + +...####.....##### +.#......#.####..# +.#########.##.... +####..#####.##### +..######..#...##. +#.##..##.#....##. +....##....##..... +#........#.#..... +....##.....#..... +...#..#.......##. +#.######.##...... +.##....##.###.##. +...####...#..#..# + +.#...###..###...# +##..##.#....##..# +.#.#.########.#.# +.######.##.###### +.##.#...##...#.## +.#...########...# +.#.#...#..#...#.# +#..#....##....#.. +#..####.##.####.. +#.##..##..##..##. +..#...#.##.#...#. +#..#..........#.. +#..#..........#.. + +....#..###....# +#..#..#..#....# +#..##.....####. +.##..#..#..##.. +####.###..####. +###.#.##.#.##.# +.##..#..##....# +#####.###..##.. +####..#...#..#. +#..#....#..##.. +#..####..##..## +......#.##.##.# +.##...######### +.........#.##.# +.##..######..## +#..####..#....# +.##.####..#..#. + +#..#.##...#.##. +###.##.##.#...# +##.########.#.# +.#.#.##.#...### +.#.#....####... +.#.#....####... +.#.#.##.#...### +##.########.#.# +###.#..##.#...# +#..#.##...#.##. +#..#.##...#.##. + +.##..####..##.. +####..##..##### +.#.#.####.#.#.. +..##..##..##... +#....#####...## +####.#..#.##### +##..........### +#.#.#....#.#.## +#...##..##...## +.##.##..##.##.. +..##..##..##... +....#.##.#..... +###.######.#### + +########..#.##.#. +######..######.## +#.##.#.#.###.###. +#....#.#.####.### +#....##..#..###.. +......##.##..###. +..##..#..#.###..# +..##..#.#.##...#. +##..######..##..# +##..######...#..# +..##..#.#.##...#. +..##..#..#.###..# +......##.##..###. +#....##..#..###.. +#....#.#.####.### +#.##.#.#.###.###. +######..######.## + +#.####..##..# +#.#.#........ +.#.###...#..# +#...#..##.... +...#.#.###..# +#..####.#.... +#####.#..#..# +.##..####.... +.....#...#..# +##.#...#.#### +.....###..... +###..##.#.... +.#..##.#.#### +#...#..#..##. +##...#....... +.#...#....... +#...#..#..##. + +...#..##. +..#.#.#.# +######.## +#####.### +..####... +######..# +######..# +..####... +#####.### +######.## +..#.#.#.# +...#..##. +#..###.## +####..##. +...#.#..# +...###.#. +..##.##.# + +.####.....#.# +........#.### +##..##...##.# +..##...####.. +..##...####.. +##..##...##.# +........#.### +.####.....#.# +######.##.#.. +.#..#.####.#. +##..####.##.# +#.##.##..#... +##..########. +##..##.##.#.# +.####....#.#. +.....#.#.#.#. +.#..#....#.## + +#..########..## +#............## +#.##########.## +.#.#.####.#.#.. +##.#......#.### +.#.###..#.#.#.. +###.######.#### +#.##.####.##.## +##.##....##.### +#.#.#.##.#.#.## +#.##......##.## + +.#......#..####.# +#.#.#####.#.###.. +##..##.#..#...##. +.##.#..###...#..# +.##.#..###...#..# +##..##.#..#...##. +#.#.#####.#.###.. +.#......#..####.# +#..##.#.##..#.#.. +#..##.#.##..#.#.. +.#.....##..####.# +#.#.#####.#.###.. +##..##.#..#...##. + +.#....#......#. +..#.##.######.# +...#.#..#..#..# +##..#.###..#.#. +##............. +##..#.########. +..#.##..####..# +..#.##..####..# +##..#.########. +##............. +##..#.###..#.#. + +####.## +###..## +#.##### +##..#.. +#...... +####.## +#.#.... +..###.. +..##### +#.#.... +####.## +#...... +##..#.. +#.##### +###..## +####.## +#####.. + +###.##..... +##.##..#..# +##.##.....# +###.##..... +#####...#.. +..######### +########.## +##.###...## +..#..#..#.# +..##...##.. +...####.#.# + +#.##...#....# +##....##....# +##..##..#..#. +##..##..#..#. +##.....#....# +#.##...#....# +.##.....####. +#####..#.##.# +#.####.#.##.# +.#.##.#.#..#. +#...#.#..##.. +###..##.####. +.#####....... + +#..##.# +#.###.. +#.###.. +#..##.# +.##.##. +...#... +#..###. +#..##.. +#..#..# +#..#..# +#..##.. +#..###. +.#.#... + +.###.## +.##.### +##..... +##..#.. +.##.### +.###.## +#...### + +..##..#.##. +.#..#.....# +.#..#.##.#. +######.#### +..##....... +..##....... +######.#### +.#..#.##.#. +.#..#.....# +..##..#.##. +#........#. +########..# +##..##..##. + +..######.....#... +...........##.##. +.#.####.#....#### +.#..##..#.####..# +####..#####...... +###########.#.##. +.#..##..#..###..# +###.##.###...#### +#..####..##.##### + +###.#####..##.. +...........##.. +.#.##...#..##.. +.#...##.##....# +.....#.###.##.# +..#####..#....# +##..###..##..## +####.##...#..#. +.#.##..##.#..#. +.####...##.##.# +...#.##..###### +..#..##..###### +..#..###..####. +..#..###..####. +..#..##..###### +.#.#.##..###### +.####...##.##.# + +..##.##..#..... +..##.##..#..... +.##...##.##...# +.....##..##.##. +#####.####..##. +.#......#.##..# +....##..###.##. + +#..#### +##.##.. +..#.#.. +..#.#.# +..#...# +.....#. +.#.#... +.#.#... +.....#. +..#...# +..#.#.# + +#.###.# +#####.# +.##..#. +.##..#. +#####.# +#.###.# +...#### +.#.##.# +......# + +#.##..##.####.# +..######..##..# +###....###..### +...####...##... +#........####.. +###.######..### +##.####.##..##. +##..##..######. +.#......#.##.#. +#.#....#.####.# +##......######. +..#....#..##..# +###.##.######## +.#......#.##.#. +.#......#....#. + +.##........#. +...#.##.##..# +.#..###..#### +...#.....#### +.#....##..### +#..#...#.#... +#.#...#.##.#. +#.#...#.##.#. +#..#...#.#... +##....##..### +...#.....#### +.#..###..#### +...#.##.##..# +.##........#. +.##........#. +...#.##.##..# +.#..###..#### + +....##....### +.########.... +##.#..#..#### +#...##...##.. +#........#.## +###.##.####.. +..##..##..### +..#....#..... +#..####..#### +##.####.##.## +##..##..##.## + +########.#.#.##.# +###..####.##....# +##....##...##..## +#......#.######## +#.####.##.##.##.# +#......##.#.#.... +#......##....##.. +.######.##....... +##....####.#.##.# +#..##..#.###....# +...##...#....##.. +.######....###### +##.##.##.#...##.. +#..##..#.#.##..## +.#....#.##...##.. + +###.#...####...#. +#..#.##..##..##.# +.##...##....##... +#####......#...## +#####......#...## +.##...##....##... +#..#.##..##..##.# + +####..#.##.#. +.#..##.####.# +#..#.#.####.# +#..#.#.####.# +.#..##.####.# +####..#.##.#. +.###.#.####.# +##....#...... +####.#..##..# +##..#...##... +...##.#....#. +##.########## +###.####..### + +#..######..#... +.###....###..## +.#.####.#.#..## +.###.##.###..## +..###..###..### +.#...##...#..## +###.#..#.###... +#.#.#..#.#.##.. +#..######..##.. +...#.##.#...### +..#......#..... + +......##.#. +##.#..#.... +##.#..#.... +......##.#. +#.#.#.##.#. +..#.#.###.# +#####..##.. +##.###.#..# +..#.##...#. + +##......###.### +##......###.### +#.##..##.##..#. +.##....##.###.# +..........#.#.# +..######...#..# +##.####.##...#. +..#....#..##..# +.###..###..##.# +.#......#.##.#. +.#......#.##..# +.#.####.#..#..# +###.##.######.. +##..##..#.#.... +.##.##.##...##. + +.#....#.#..#. +...##....##.. +##.##.##....# +#.#..#.#.##.# +.######..##.. +###..####..## +##.##.###..## +..#..#..#..#. +.#.####.#..#. +.#....#...... +#..##..##..## +.#....#..##.. +###..###....# + +##.##.##.###....# +.######.####....# +#......##.##.#..# +..#..#..##.##..## +.#....#..#.#.##.# +#..##..#..####### +..#..#...##.#..#. +...##.....####### +#.####.#.#.##..## +##....#######..## +.######..##.#..#. +.##..##..#..#..#. +###..####...#..#. +.#.##.#..#.#....# +.######.#.###..## +.........####..## +##.##.##......... + +....##.##.#.#..## +####.##.###.####. +#..##..#.####..## +.##....##.#.##.## +#..#...#.#.##.... +.##......##..#.## +#..#.##...#.#.#.. + +....##.## +....##.## +....#.... +..###.#.. +##.#.#### +....#.#.. +..#...... +###....#. +#...#.#.# + +.....##...###.#.# +.##.#.##.....#... +.##.#.##.....#... +.....##...###.#.# +#.######...###... +..#.#....#.##.#.# +##########.#..#.# +..#..#....###..#. +...##.#.##..###.. +#####.#.......##. +..#..#.#.#...##.# +..#..#.#.#...##.# +#####.#...#...##. +...##.#.##..###.. +..#..#....###..#. + +.#.##.#.....#.... +#.#..#.#.#.##.#.# +###..####......## +#.####.#..#..#..# +..#..#..###..###. +..####.....##.... +##....####....### + +##..#.##......# +..#.##.#.##.### +#..#......#.### +.##.##.#.....#. +#.#..##.##.##.# +#.#..##.##.##.# +.##.##.#.....#. +#..#......#.### +#.#.##.#.##.### +##..#.##......# +#....###.##.#.. +#....###.##.#.. +##..#.##......# +#.#.##.#.##.### +#..#......#.### + +..##.#...#.## +.#.##.#..#... +#..##..##..## +#......###... +...........## +.#.##.#.###.. +#.#..#.###... +.#.##.#.##.## +##....##.#### +.#.##.#....## +##.##.##..#.. +#.####.#.#### +#.####.#.#.## +.#....#.##.## +..#..#..##.## +#..##..##.... +#......#.#.## + +..#..###..... +.##.#.#...#.# +..######.#.#. +...#####.#.#. +.##.#.#...#.# +..#..###..... +#..#######... +.#..#.#...... +..####.#..#.. +...#..##.#### +.####.......# +#...#.##..#.# +...####.##.## +...####.##.## +#...#.##..#.# + +...###. +.#..### +.#..### +...###. +..#.#.. +.###..# +..#.#.# +.#.#.#. +.###..# +.###..# +.#.#.#. +#.#.#.# +.###..# +..#.#.. +...###. + +..######..... +##########..# +...####...... +#.######.#..# +#..#..#..#..# +#.##.###.#..# +##..##..##..# +##.####.##..# +##.####.##### +#.#.##.#.#..# +.#..##..#.##. +#...##...#### +..######..... +##.####.##..# +..........##. + +##.##.###.#...... +#..##..#.#..####. +#......###.#....# +#########.##....# +...##.....####### +#..##..#..#...... +#......####.#..#. +#..##..#..#...... +.##..##.#..#.##.# +..#..#...#.##..## +...##....#####.## +##########.#....# +##.##.#####..##.. +#.####.######..## +###..#######.##.# +#......#..#.#..#. +..#..#......####. + +.#..##.##..###. +.#.###.##..###. +#...#...#####.. +...##.####...## +....#.#####.#.# +##.#..#.###.#.. +.#.##.####..##. +##.#...##.##.#. +....######.#### +....#.#.##..### +..##...#......# +#####...####.## +#####...####.## +..##...#......# +....#.#.##..### +....######.#### +##.#...##.##.#. + +#..##.### +.##.....# +.##.##..# +###..#### +#####.#.# +......#.# +#..##.#.. +#..##.#.. +......#.# +#####.#.# +###..#### +.##.##..# +.##.....# +#..##.### +#..###### + +..#.#.#..#.#. +..#.#.#..#.#. +#...#.#..#.#. +.###.#..#..#. +.#.#..#.#.#.. +#.....#...### +##.##.#####.. +##.##.#####.. +#.....#...### +.#.##.#.#.#.. +.###.#..#..#. + +####...#.#. +####...#.#. +#..#..#..## +.....#..### +#..#.#..### +.........#. +.....###.## +######.#... +#..##.###.# +.........#. +..#..#.#.#. +#######.##. +####.#..#.# + +#..###. +#..###. +.....## +##.#... +#.#.#.. +.###.#. +#.##.## +##..##. +..###.# +...###. +.#.###. + +############...## +##..####..##.#... +##..####..##.##.. +.####..####..#.## +..##....##..##.#. +.####..####.#..#. +..............##. +#..........#.##.# +##############.#. +.#..#..#..#.#.#.# +............#.#.# +..##....##..###.. +#....##....#.###. +##############.## +.#..#..#..#.#...# + +.##......#.#### +....###..###.## +.....######.... +....#..##.##... +######....#.### +#..###.##....#. +########.#.###. +#..#####.#..### +.##..#...####.. +.##....##..#### +#...##.##.###.. +.##...#..###### +#..#.#.#.#.#... +.##...#..#....# +.##...#..#....# + +##.#.##.#.### +.#.##..##.#.# +#.#..##..#.#. +###.#..#####. +#.#.#..#.#.#. +##.######.### +#.##....##.#. +#.##....##.#. +##.######.### + +###..#####.## +###..#####.## +.....###..### +...##..###... +##.#.##.##.## +..##.....#.## +#.###........ +#...##...##.# +#.####.##.#.. +#.#..###.#### +.#.#.#####... +#.##.##.##... +####...####.. +#####....#### +.#.##.##.#... +.##.##..##... +.#.#...##.#.. + +.###..### +.#.#....# +.#..##..# +.#......# +...#..#.. +##..##..# +####..### +##.#..#.# +#.##..##. +#.##..##. +##.#..#.# +####..### +##..##..# + +###...#.... +...##.#.#.# +..######### +..##....#.# +..#######.# +..#....##.. +..#....###. +..#######.# +..##....#.# + +####......#...### +#.#..#..##..#..#. +##.##..####..##.# +..###...##...###. +.######....###### +..#####....#####. +#.###...##...###. +.#......##......# +...#..######..#.. +...#..######..#.. +.#......##......# + +...#..#.### +##.####.... +...##..#### +###...#.... +..#..#...## +##..#.##... +...##...##. +.......#### +####..###.# +.....#.#..# +##....#.... +#######.### +##.####.### + +#.#..#... +..##..#.. +..##..#.. +#.#..#... +.####.... +##..#.### +...##.... +...#...## +..#..#### +.#.##...# +....#.... + +..#####.....##. +#.##..#....##.. +........####..# +......#.###..## +....###....##.# +....###....##.# +......#.###..## +........####..# +#.##..#....##.. +..#####.....##. +.##.#..#.#.#.## +.##.#....#.#.## +..#####.....##. + +.#.#.#.## +.#.###.## +.##...#.. +##.##.##. +##.#..#.. +..#..#.#. +##.#.#.## +##.#.#.## +..#..#.#. + +..#.##### +##...#..# +##.###..# +######..# +##...#..# +..#.##### +.#.#..... +#.....##. +...#.#### +####.#### +##....... +#..#.#..# +...##.##. +#.#.##..# +###...... +....##### +..##..##. + +...##...# +...###### +...##.... +###..#.## +##.#.#.## +.#...#.#. +..#.#.### +.....##.. +###.#.... +##.#.#.#. +##.#.#.#. + +....#.....#.. +#..##.#....#. +##........... +..##.##...##. +.###..#..###. +##.########.# +##..###....## +###.##..#.##. +###.##..#.##. +##..###....## +##.########.# +.###.....###. +..##.##...##. +##........... +#..##.#....#. +....#.....#.. +....#.....#.. + +..##.#.#. +#####.#.. +#...####. +##.###... +##....#.# +##.#.#... +...#####. +##..#...# +.....###. +###..##.# +###.#.### +###.#.### +###..##.# + +..#.### +.....#. +..#...# +..#..## +####.## +###.#.# +###.#.. +####.## +..#..## +..#...# +.....#. + +.###.#.#.##.#.. +#.####..##..#.# +#.####..##..#.# +.###.#.#.#..#.. +....#...#..##.# +..####.##.#...# +##..#.#..#..##. +###..#...#..... +###..#...#..... + +#...#.....##. +#.###.#..#### +..###.######. +.#..####..##. +.#..####..##. +..###.######. +#.###.#..#### +#.........##. +.##.##.###... +#.##..#####.. +##..######..# +###.#...#.... +.#.#.######## +###......###. +....######.#. +.###.##.##.#. +.###.##.##.#. + +#..#..#....#..# +..###.#.##.#.## +##.###......### +##...########.. +.....#......... +#...###....###. +#...###....###. + +.#..#....#..#.. +#....#..#####.. +.####.###..##.. +#....#####.##.. +..##.......#.## +.......#.##..## +##..###..###... +.###....#.#.#.. +.#..#...##..... +#....#..##.#### +##..###.####.## +..##..#...#.#.. +.........#..### + +.####.. +#...#.# +..##..# +#..###. +#..###. +#.##..# +#...#.# +.####.. +..##.## +..##... +#....#. +#.#..#. +#.#..#. + +#####...#..## +#.###...#..## +.#####.#.#... +.##.##..##### +....##.###... +..#.#.###.### +.##....##..## +##..#.###.### +##...###.#... +.#.##.#.#..## +.#.#...#.#### +#....#...#... +...##..##..## + +.....#.#..... +....##....... +#..#.#.##.... +#####.##..... +#....####.##. +#..####...##. +#..###.#..##. +....##..##### +#####.###.... +....#.###.... +####.#...#..# +#######...... +....#.##.#### +.##....#.#..# +....###.##..# + +##.####......##.# +....#.###.#...##. +....#.###.#...##. +##.####......##.# +.##..#.##...#.### +.#.#.#...#...#... +#.##.#..##.#.#.#. +#.##.#.###.#.#.#. +.#.#.#...#...#... + +#####..####..#### +...###..##..###.. +..##..........##. +##.#..##..##..#.# +##....#.##.#....# +##.#.#..###.#.#.# +..#.###....###.#. +..##..........##. +..###...##...###. +....#.##..##.#... +.....#......#.... + +.####..#..#..## +..##...#..#.... +......###...### +......##.##..#. +#....#.#.#.#... +######.###...## +.####.#.#..##.# +.......#.#..#.. +.......#.#..#.. +.####.#.#..##.# +######.###...## +#....#.#.#.#... +......##.##.##. + +#.#..##.#.#.. +.#..##..#..## +.#..##..#..## +#.#..##.#.#.. +..#..#...#.#. +.#...#.#.###. +#.#####.#.##. +#...#...#.#.. +#...#...#.#.. +#.#####.#.##. +.#...#.#.###. +..#..#...#.#. +#.#..##.#.##. + +#..##......##..#. +#..##......##..#. +.#.#.#.##.#.#.#.# +#..#.######.#..## +.#..##.##.##..#.# +#...#..##..#...#. +#.############.#. +#..##.#..#.##..## +#..###....###..## +##.#...##..##.### +.##.##....##.##.. + +..###.#.##.#.###. +.##.##..##..##.## +.##.##..##..##.## +..###.#.##.#.###. +.##..#.####.#..## +###.##..##..##.## +###.#.#.##.#.#.## +.#..............# +#...###.##.###.#. +###...#....#...## +.##..#..##..#..## +..#..##....##..#. +..#.#.######.#.#. +###..##.##.##..## +..#..#.#..#.#..#. + +###.##.## +##..##..# +#.######. +#.######. +##..##..# +###.##.## +.###..### +#.#....#. +..#.##.## + +....#.##..# +......#.##. +#.####.#..# +#.####.#..# +......#.##. +....#.##..# +.#.##.#..#. +.##..##.... +#....##.##. + +.##...##.#. +.#.##...##. +#..#####.## +#..#####.## +.#.##...##. +.##...##.#. +.#..###...# +###.##.##.# +#...##.#.## +#...##.#.## +.##.##.##.# +.#..###...# +.##...##.#. + +.##...##. +.##...##. +##..###.# +##.#.#..# +.....#... +#..#.##.# +........# +..##.###. +..##.###. +........# +#..#.##.# +.#...#... +##.#.#..# +##..###.# +.##...##. + +####..#..##.##.## +....#.##......... +....#...#.######. +.....##..##....## +.....####........ +####..#...##..##. +....###.##.#..#.# +#####.....##..##. +.##.....#...##... +.##.##.#..######. +#..#####..#.##.#. +#..######.##..##. +..#.#.#.#.######. +.##...#..##.##.## +####..####.####.# + +#...#.# +#..#.## +##..### +##..##. +#..#.## +#...#.# +.#....# +#..##.# +...#.#. +###...# +##..### +.#####. +.#####. +##..### +###...# + +##.##..##.##.#..# +.##..##..#..##..# +#############...# +....#..#........# +#..##..##..#.##.. +#..#....#..###### +#....##....###.## +###.####.#####..# +.#..####..#.#.### +##..#..#..###..#. +..##.##.##...##.# +.##..##..##.....# +...............#. +...............#. +.##..##..##.....# +..##.##.##...##.# +##..#..#..###..#. + +#.####### +##.#...## +#..##..## +#..#.##.. +##.##..## +###.##### +###.##### +##.##..## +#..#.##.. +#..##..## +##.#...## +#.####### +..#.#.#.. +#...#.##. +.#.#..#.. +.#.##..## +#.#..#### + +.......#.#...#### +....#..#....#.##. +..##...#...###### +##.#....#.##.#### +##..##...#####..# +.##...#####.##### +.####..##.#...##. +#..#..#####..#..# +#..#..#####..#..# +.####..##.#...##. +.##...#####.##### +##..###..#####..# +##.#....#.##.#### +..##...#...###### +....#..#....#.##. \ No newline at end of file diff --git a/aoc2023/src/day15/input.txt b/aoc2023/src/day15/input.txt new file mode 100644 index 0000000..86b345f --- /dev/null +++ b/aoc2023/src/day15/input.txt @@ -0,0 +1 @@ +fnln-,bkxf-,spfc=9,ds-,trzx-,dtck-,xs-,bg=4,fgmpc=5,xmxf=1,cl=9,md-,ct=2,ftz=5,xhd-,vkqx-,hxd=6,mlcn=6,ctdbt=6,txpsv-,nkx=3,jfz-,fzm=3,rvcd=4,nfgp=3,jjd=7,nzq=6,zv=5,lh-,nfgp-,gcbtgm=7,zj=6,sxlh=3,vsj=8,cjb-,tslfp=5,vc-,kpn=7,qpm=5,jgmnxd-,xp-,kmm-,xb=4,tv-,bmnlf=7,cb-,vbmk=5,dvz-,ssd=6,sb-,mldgtn-,mtx-,kz-,nzq-,dnkf-,sn-,js-,bpq-,vc-,fzm=9,xqv-,gqsr=2,jzxp=5,bc-,lxg=5,sv-,gflrmd=9,ncjb-,fm=9,lln=1,ql=9,tj=2,pbmldc-,fkzq=7,vkh=3,tn=4,fdl-,frgf=1,vf-,fpg=4,xzt-,jf-,pjfk=5,rvcd-,rv=6,zrs-,qnd=1,vqzhc-,xrb=8,lvx-,dfz-,xstdx=6,sf=4,hsb=3,sqjgc-,xtl=7,zthrd=8,mldgtn-,rc-,kpz-,tpnmp=6,bzj=7,gmrrx-,bszd-,mjz-,bzj=8,ztk=9,dtv-,qgm=4,ssd=3,xc=8,hvglb-,xf-,qhvz-,vqc-,ktj=1,ppq-,zxt-,rnsbt-,qpx-,nj-,vhl-,rknz-,zngsp-,vhl-,fjh-,vrzjf=7,gkn=6,tfd=4,bgg=1,fgmpc=9,lpd-,pbmldc=4,jm=2,vlv=4,shn-,vps=8,ljsvc-,rfdrk=3,vkqx=7,gftx=9,nzq-,cq=1,ckb=6,zsx-,qpf-,cggz-,bzj=9,lfg=6,tfd-,xdfz=8,ghbr-,dsdm=8,nj=4,jf-,fnln=7,fzm=7,fkzq=7,xcq=8,fkzq-,dm-,bfz=2,lqf=4,sfp-,kpqvtc=2,fkzq-,vth-,zn-,xhs-,vsj-,psfnx=4,xbx=1,xgk=9,snpgsm-,psg=3,shn=6,qxkrd-,pxvxlh-,xbx-,gt-,ksn-,dzn=7,gp=7,mp=8,jtz=3,ph=2,jxj=8,pg=5,txkh=6,drls=6,zthrd=9,gqsr-,dtv-,mktlhp=9,bszd=5,snpgsm=5,qz=6,sh=6,lqt-,mktlhp-,mgt-,mvmqfm=5,bc-,lpd=6,zn=3,nhsvv=3,vdf-,znjg-,phsl=7,tnb=4,qlf=9,txpsv-,pxvxlh=6,lqfv=7,lffv=5,djmlb=7,pxn-,hdxvhr=8,vbz=1,vqc=1,xrb-,bj=1,bzpv=5,tdl-,xc=2,cnr-,ss=6,mf=2,sv=2,mp-,zpc-,rqg-,xtsd-,hlg=6,xdfz=9,nl-,kfp-,cr-,qxkrd-,vpxv=9,mtx=1,drls=9,jzxp-,xqfrg-,js=3,ql=8,xp-,kpz=8,zj=9,jxj-,gf-,gcbtgm-,cmpc=4,tr=4,px=6,pvv=9,tpnmp-,jhhqj=5,mmn=3,qpf=5,vnk=9,cnn-,xgr-,mmsz=4,lvs-,cv=3,cq-,bfz=8,ct=7,kr=6,gk-,zdtz=1,vqzhc=3,xzt-,vqt=4,dphx-,kmr-,fkzq-,lk=8,dvz=6,ghbr=6,hm=6,zm-,sn-,jgmnxd-,vkz-,ps-,vpxv-,gpg=4,bmnlf=9,pjfk=3,ndmt=7,zk-,zthrd=5,fgmpc=8,rgh=7,bx-,ctp=2,nl=7,rtj=6,grlkl=9,zf=8,lg=4,zngsp-,rsn=5,drls=9,lxmkfx=7,sbt-,bx-,lln-,dm=6,fnv-,qpf-,tq-,qv=9,cfnbp-,pxvxlh-,tr-,nh-,clg-,xjpbxm-,zs-,trzx=8,bgh-,cmbv=1,vq=6,lcr=9,scbjp-,sjb=2,gmrrx=6,mg=5,znjg=4,zn=9,grlkl=7,xmxf-,smtd-,vkh-,spsx=9,qpf-,bgg-,smtd-,ntg=6,qpf-,vtp-,nlcrm=8,cvc-,frgf=8,blfx-,vbz-,tcs-,bqpp-,fjh=5,rtj=5,vr=6,kjrc=1,nzq-,qpf-,vqc-,kmr-,hj=8,fnh-,scbpb-,gxg=9,kf=6,xhs-,zdl=9,sscn=9,dzt-,rl=9,gr=6,tv-,jmthd=9,gn-,bzj=4,pv=9,pcnzf-,jxj-,sxlh-,lxg=3,rpn-,vr=9,rl-,tslfp=5,pgd=2,xmxf-,mjz=9,drls-,hrbj=7,rr-,lxg-,grlkl=3,jsv=1,sr=6,dv-,scbjp=1,pkg-,mgt=9,hsb=3,ccs-,xdfz-,cqq-,nbtq=2,ljsvc-,rpn=8,msbfzl=5,kz=7,cnr=4,hz-,ctf-,tgqp=9,tfd-,sqd=7,rb-,qf-,srp-,fkzq-,pfjml=6,rnsbt-,dmp-,zngsp-,cfnbp-,kpqvtc-,gftx-,lvs-,zpc-,kpz=2,pxvxlh-,spm-,rt-,ftz-,lvs=2,zsx=2,sjb=4,lxmkfx=7,bqpp-,hb=7,xzl-,ckb=7,hsb-,cvc-,ksn=7,mktlhp=5,jhl=6,snpgsm-,mm-,xstdx=2,rm-,rqx-,ld=4,zv=6,fx-,sbx=2,blfx=8,fmkjj-,km-,cmbv=8,vz=9,lg=4,fpg=4,kpfr-,dmp=4,xxj-,jhl=2,km-,vx-,sh=8,xqv=3,kfp=3,zdm=3,tdl-,ddxn-,gzrz=9,xqv=8,kqh=2,rlrlql-,lpd=1,vr=1,ggm-,dkz=3,jx=2,trzx-,sjb-,rh=8,dbsf=4,jhhqj=8,jzxp-,bkxf-,thnmq=7,mktlhp-,jtz=7,sh-,plt-,rfdrk-,hj=4,dk-,zjvd=9,jsv-,vkn-,jc-,zk-,mmsz-,lcr-,dkz-,px-,pcnzf-,jtz-,pzd-,kqh-,ts-,znb-,dzn-,qgm-,drls=9,bmnlf=3,thnmq-,bpq-,zxt=9,lg=6,rknz=8,bzj-,vsh-,lq-,rm-,ql-,cs=1,dzt-,hfrdk=4,kmm=9,lhks=9,jsv=5,zxt=9,kc=4,rm=8,hvglb-,bzpv-,drs=1,tgqp-,trg=4,dp-,zmlr-,pvv-,lfg=2,rqg-,nh=5,mkj=5,cct=1,lxmkfx-,txpx=2,vps=5,dzn=3,dph-,kv=1,vth=6,gftx-,lztd=3,hb=8,qpx=2,fjg-,plp-,vnhfc=3,zv-,xt=1,bgkjq-,pbk=9,hj-,sv-,kpz=5,fnh-,zpc=3,zj=8,pxvxlh-,qgm=6,gct=5,tdl=5,xtl=2,lg=7,trzx=9,hvglb=3,ss=6,vpxv-,gh-,js=1,jf=1,rqx-,pg-,nqcj-,zzx-,mf-,zlcmgc=3,lxg=8,rpgj-,vhl=6,phsl=8,dtck-,rxv=2,qpf=7,nh-,ccs-,mf=3,xrm=4,pljg=1,rnsbt=5,nnn=2,snpgsm=5,qxkrd=5,xgk-,trg-,phsl-,bzj=5,ckb=4,cqbvs=5,xgk=8,ck=7,dbffb-,tj=2,dm-,fjg-,zdm=8,jc=9,rqg=3,qhvz-,cmpc-,dzn=4,xrb=2,kfp=2,vbz-,xhs-,dnkf=3,chpn-,sl-,kftx=5,rsn=5,ps=9,jm-,pbk-,vq-,qpf=4,rfdrk-,rsn=9,nqcj=7,vsh=7,npm=7,qxkrd-,hpl=1,rnsbt-,pxn-,zsx-,lpd=5,fgmpc-,vkqx-,vth-,pm-,mgt=5,cct=3,bb-,hzlzn=2,gkn-,mjz-,kx=8,qcnnzx-,kmr=7,lfl-,jhhqj-,lqfv-,gkn=5,pfjml-,lhks=4,bzj-,tnp-,nj=1,xhs-,rtj=9,rlrlql-,qcm=3,mph-,fx-,jm-,xtl-,xdfz-,msbfzl-,ckb=7,hj-,cqr=5,scbpb=2,tslfp=1,kmm-,cv=4,zpc-,qfb-,rlrlql-,trzx-,sf-,ccs-,fsz=2,dv=8,thncf=4,bmnlf-,qgm=8,plvd-,dm-,pjfk=4,gr=6,qv=7,khx=3,vs=7,dtck=9,xbx-,xstdx=8,km=6,hgp-,kf-,xf=1,vnhfc=6,xgr=1,pbk-,sl=2,jmthd=8,sbt=6,mkj=8,vnk=3,bgkjq=8,bg=2,xbx=6,mmsz-,rnxt=1,shn-,ss=3,kpqvtc-,dfz-,qxj=9,mktlhp=4,jzxp=1,hm-,vx-,bzj=1,vnhfc-,vrc=7,bgkjq=8,gp-,vq-,lh-,tnfx=4,ntg-,dd=5,znb-,vtp=4,vgln-,hz=1,lk=1,mktlhp-,vz=3,vpk-,bbsk=4,qlf=1,hgp=5,xjpbxm-,qcm=8,tz=4,lqf=2,bz=3,jfjbj=9,lfl=6,cqq=8,xzt=4,xb-,rlrlql=9,cqbvs=8,dzt-,blfx=9,rqx=5,xfn=6,px=3,chpn=7,js-,lg-,ctf=1,qcnnzx-,hsb-,xnmq=1,hpl=1,pg-,gr-,fkzq=2,rfdrk=7,tnp-,gbsp-,nq=4,vttk=1,lrpx=5,xrm=3,crb-,nglvx=5,md=2,px=6,pljg-,sjb=3,kpjqgm=9,xrm=6,slzd=6,xc-,sxlh=6,mtx-,xc-,nbtq-,plvd=2,hb-,znfd=7,ghbr=1,gkn=3,gct-,cqq-,znb=5,jsv-,txpsv=6,dk-,dbh=7,lmlx=6,lcr-,bfz=4,xhs-,cjb-,tkpb-,dkms=4,sh-,fkzq=3,kqh=8,dv=9,lrpx-,vnhfc-,bqpp-,pcnzf-,km=1,ssmflk-,pnp-,rsn-,cqbvs=5,fr-,kfp-,npm-,vbz-,jm=9,pgd-,trzx=6,hsb=6,qrn=3,lln=8,zl=6,qpf=8,djmlb=6,zj-,qhvz=1,kz-,bzpv-,bq=8,frgf=7,blfx-,tnp=9,lqf=3,zrs=5,lc=2,scb=6,dzfqlb=3,kmqjt=1,trg=1,fzm-,bgg-,gzrz-,sv-,qz-,zlcmgc=4,qcm=1,xhd=7,zmlr-,fnv-,xdfz=9,fx-,xfn=7,zdm-,fr=7,tfd=1,njvd=4,vnk=2,xbx=8,xp=3,zbgdxg-,lxmkfx-,pbmldc-,znfd-,znb-,xh=5,ccf-,lxmkfx-,tgqp=6,ng=6,kz=9,hlg=2,mmsz=9,vdf=1,vkh=9,cvc-,sfp=7,ckb=6,gxg=9,cggz=2,clg=8,zn=6,ctf=6,zdtz=1,ddxn=6,nhsvv-,plvd-,sbx-,ncjb-,lc-,pvv-,vpxv=3,mhh-,qgm=6,vbmk=8,rb-,gxx=7,pt-,qpx-,gcbtgm-,xf=4,xfn=1,tv-,mmn-,zrs=6,zm=7,pxvxlh=5,xc-,dbsf-,scbpb=3,smtd-,fsz-,znjg=3,rfdrk-,ccs=9,mgt=5,mjjk-,vsh-,sv=8,cgp-,gf=1,pg=5,mph-,ctp=3,vblpd=7,gbsp-,gf=3,nbtq-,vjsg-,jsv-,lqfv-,np=4,xh-,tq-,xs-,vk-,hb-,mmn-,vbz-,kpjqgm=5,dkz-,rzjkqp-,tvm=3,dz-,kftx-,khn-,nj=2,cnn=3,cl-,sf-,vc-,zmlr=3,lxmkfx=3,blfx=9,vbmk=6,tpnmp-,sqjgc=5,rz=2,bszd=6,kkc=9,dnkf-,lmlx=7,ddxn-,bhfh-,gflrmd-,xb-,mmn=2,jfjbj=1,zm-,sqd=4,kl-,dfz=4,ktj=5,lxmkfx=2,qxkrd-,dp=6,hl-,lqfv-,kx-,vbz=5,qf-,sv-,kpqvtc-,vhx-,ps=1,fr-,vbmk-,bnhz-,tj-,rlrlql=2,np=4,vs-,vbmk-,pmz=3,pbk-,zxt-,ck-,xf=2,jtsdd=7,ng=1,gn-,qfb=5,mf=4,xb-,rc=7,jjd-,xv=6,gzrz-,cqq=5,dzt-,scb-,plvd-,vqbp-,mvmqfm=3,pr=1,nj-,pvv=8,xtsd-,gbsp-,hnf-,fdfc=3,zzd-,kftx-,pbk=3,lrpx-,hbmt=4,mktlhp=2,ld=4,sf=4,rxv=1,kkcd=9,dph=7,ssmflk-,vnhfc=1,hrbj-,ljsvc=6,rt-,xf=5,tq-,npm=1,kkcd-,spm=7,ljsvc=4,lpd-,nh-,cnr-,xmxf-,cxq=6,mjz-,hpl-,lh-,grlkl=7,pv=9,pqf=1,zsx=7,vbz-,vgln-,dvz-,zl=6,js-,rqx=8,hdxvhr-,pkg-,tzjln=1,nhsvv=7,ggm=5,zz-,kmm-,zngsp=5,gqsr-,cnn=8,vrc=3,zxt-,txpx-,jmthd=9,gbsp-,gn-,zrq-,ss=5,xjpbxm-,ssmflk-,sr-,kl-,gp=9,mhh=7,bpqv-,mvmqfm=6,vr-,kmqjt=4,xnmq-,hvglb=5,qpf-,xb=5,jgmnxd-,sfp-,sscn=8,pcnzf=4,rr=7,gqsr=4,xs-,ql-,pxn=6,jf-,ckb=6,ps=7,bzpv-,qcm=5,gf-,vk=8,hlg-,kjrc=4,dnkf-,kjrc-,qgm=7,pt-,mmn-,dphx-,dsg=8,brp=5,lq=6,kpqvtc=8,xhs=1,tz=1,rm-,qht-,jhl=3,mr=1,tj=4,pnp-,zngsp-,lcr=5,fr=9,vgln-,bz=1,nfgp-,xzt=1,xzbz-,cqzt-,vblpd=9,mg=6,dd-,xtl-,mf=7,qln-,qxj-,mgpp=7,cb=7,zf-,pkbv=2,fgmpc=4,lc-,dmp-,zxt=1,db-,hrbj-,vnk-,smtd=1,cjb-,dtt-,zlcmgc=1,kkcd=9,xh=3,sqjgc-,td=9,npm-,cqbvs-,hj-,sf=2,zf-,mph=7,zcjvl=4,dkms-,rgh=6,zzx=4,hm=4,tz-,vr-,vf-,cqq-,bgh=1,sn-,vbz-,sxlh=3,xtl-,lqt-,kd-,mg-,vf-,lg=5,fnh-,gbsp-,ksn-,mlcn-,vqzhc=8,gzrz=6,lcr=3,qxj=1,hpl-,dphx=5,js-,fm=5,vgslz-,vf=5,ns=2,qcm-,ds-,pr-,vqfz-,hl-,mnphn-,ctp-,qht-,dv-,kd=1,lrpx=9,bpq=1,qgm=9,ckb=6,zf-,vps=5,gbkt=3,zk=4,lztd-,tpnmp=9,rr=9,rpgj=5,dbffb-,mvmqfm-,fzm=8,bpq=9,lxmkfx-,sf-,br-,jxj=1,snpgsm=2,bj-,fsz-,vjsg-,gxx=4,hbmt=1,gflrmd-,rtj-,zl-,snpgsm=7,ppq-,vrzjf-,dv-,njvd-,sxlh=1,xgr-,tv=8,kmqjt=2,cfnbp-,xxj=1,zngsp=5,cqr=1,jc=9,gr-,qxkrd-,xzbz=9,xnmq=1,zcjvl=1,vjsg=4,fx=2,srp=2,kpfr-,bbsk-,xqfrg-,tvm=1,pqf-,fdl-,ss=5,bnlpjk=6,dphx=6,vbz=4,grlkl=7,gxx=1,lrpx=3,drls-,dph=8,vs=4,sbt=3,jpc=5,pbmldc=8,ddxn-,br=3,qln-,rvcd-,dmp=5,dhh=5,fjh-,sn=6,txpx=2,ctdbt=1,rzjkqp=7,bzpv-,gt=6,sb=8,qht=9,kpz=2,hvglb=8,mr=3,fq=5,jm=5,rzjkqp-,ndmt=6,bzj-,lg-,ks=1,npm-,vqbp=4,lcr-,km=9,tv=6,thncf=6,bxx-,vq-,rpn=6,dz=2,tcs-,mr-,kd-,spfc=8,npm=7,hrbj=1,cggz-,jjd=7,drs=6,vr-,rfdrk=4,kc-,pkbv-,zmlr=1,lqt-,hsb=1,xb=5,pljg=5,bq-,gxx=5,vrzjf=9,xhs-,xk-,vdf-,lg=6,xrb-,vc-,pbmldc=5,js=5,ld=4,sbt=4,gftx-,kpz-,khx=1,mr=9,lztd=7,xqv=8,cb-,sbx=6,qpf-,vgln-,xcq=9,jf=4,zs=2,cv-,vqc-,vgln=3,bmnlf-,nsxz-,vttk-,jx=1,tnfx=9,zv-,fdfc-,rc-,lhks=4,zlcmgc-,grfxxs-,hrbj=4,vqt=8,ts=5,hd-,tq=8,bg-,mf-,pcnzf-,sh-,trzx-,xb=4,rc=8,bzj-,pkg=8,hlg=5,qcnnzx-,ck-,mjz-,vth-,mgt-,cct=1,bkxf=8,rpn=1,mg-,fjg=3,vlv-,zngsp=8,ksn-,hnf-,dbh=7,pxn=5,hsb=8,mq-,jsv=7,ccf=1,ts=8,kz-,xgr=5,xbx=5,sqd-,fpg=8,lvs=5,smtd-,zs=3,dsdm-,nrc-,jtz=8,jxj=3,sv=3,mlcn=9,psfnx-,kpqvtc=9,rsn=4,zdl-,lztd=4,vnk=2,dmp-,sscn-,zj-,dd-,zdl-,smtd-,tj=3,ggm=6,ff=2,zzd-,pfjml=7,chpn-,mjjk=4,spm=7,sfp=6,xbx-,dbffb-,sh=9,hnf-,pmz-,rzjkqp-,hb=8,bj-,hgp-,txkh-,znjg=2,vqfz-,vgln=2,zzd-,crb-,vqt=3,ssmflk-,bqpp=4,xt-,dbffb-,bhfh-,hsb-,rvcd-,sbt-,txpx-,jtz-,cb-,dp-,mvmqfm=3,ddxn-,msbfzl-,xgk-,jpc=5,phsl-,dbffb-,zcjvl=4,tvm-,pv=2,sfp-,nnn-,jmthd=2,qcnnzx=3,xnmq-,tgqp-,fzm=3,jpc=2,cnn-,jhhqj-,mvmqfm-,rtj-,km-,lk=6,slzd-,chpn-,xb-,tpnmp=9,vkz-,lqt-,vf-,gbsp-,cmpc-,xc-,pkg=5,tz-,dzt-,mvmqfm-,dvz-,lhks-,npd=6,lfg=7,bgh-,vqbp=5,grlkl-,lvx=4,mgpp=1,znb=6,zf=4,lfl-,cr=2,dbffb=3,jzxp=2,mhh=2,gftx=7,lfg-,gkn-,xb=5,djmlb-,qln=8,zmlr-,dkz=6,grlkl-,rt-,zcjvl-,vblpd-,lztd-,lfg=2,gxg=6,bj=8,zs=9,ssd-,lcr-,tqx-,ncjb-,kmr-,trg=4,kmm-,cjk-,tq=7,qqp-,scbpb=1,rc-,xzt=1,ftz-,sjb=2,rknz=4,gbsp=4,qrn=3,dhh-,mph=1,pjfk-,grfxxs-,xfn=3,bq=6,kd=3,vjzt-,vgln-,rv-,lcr-,blfx=4,gzrz-,kmm-,hj=8,pvv-,khn-,jfz-,gr-,gr-,dhh=9,ps=3,vblpd=9,sqd=3,hz=7,mp-,lxg=1,bnlpjk=3,jjd-,txpx=7,fx=9,nkx-,bg-,rvcd=4,sr=6,qz=3,vdf=9,ld-,nsxz=1,zdtz-,dzn-,hb-,vjzt-,nfgp-,cmbv=6,pljg-,sqd=1,ssd-,fzm-,qv=8,tn-,cct=8,cnn=2,vkh-,zl=8,xcq-,ppq-,scb=5,pbk=6,jmrz-,xgr-,kpjqgm-,nglvx=5,qht-,fnln-,cl-,kkc=9,kpfr-,xtl=9,dsg-,xrb-,zdm-,mmn=5,tz-,gh-,vkn-,vkqx-,gkn-,qxkrd=7,rt=7,rh=3,bc-,nzq-,mtx=8,jc-,kfp-,dkms-,thnmq-,jhhqj=6,vhx=2,lqfv-,kc-,vqzhc-,bzj-,fmkjj=5,ql-,fdfc-,kftx-,ktj-,bgh=2,cqzt-,rtj=2,vkh=2,dfz=6,xstdx=9,npd-,hf=8,jhhqj=1,snpgsm-,xrb-,hm=5,bx=1,ql=2,djmlb=7,xcq=6,xbx=4,kl=9,dk-,sh=7,ctf-,sqjgc-,thnmq=7,lhks=9,xdfz-,tk-,pt-,vgslz=7,dtv=5,sbt=9,kv=1,drs=3,db=8,lqf=6,xhd-,qln-,ckb=2,kpn-,qvlzn-,fb-,xcq=3,vqc=2,ct=4,dtck=5,vgslz=9,shn-,rv-,cr=3,tpnmp=1,cct-,zj=8,bnhz=4,psfnx-,nnn=8,kl=8,ps=5,ng=6,cnr-,snpgsm-,dnkf=9,znb-,bgkjq=1,pjfk-,pl=9,dtt-,sqd-,hgp=7,gs-,qrn=8,dvz=4,kftx=7,ggqq-,cl-,cr=9,jsv-,vjzt-,pxvxlh-,kqh=1,tqx-,lvx=9,mf-,rpn=2,bpq=4,km=4,vnk=6,cqzt=9,bxx=8,tn-,pgd=8,dp=7,thncf=8,zdtz-,vgslz=5,cnr=7,nkx-,hdxvhr=6,tj=6,xnmq-,qf=4,lq-,vnk=7,rpn=4,zd=8,rxv-,lln-,sbt=6,mhh-,rz=5,dtt=9,gxx=7,pnp=2,lqt-,xdfz=7,lhks-,gflrmd=8,kpqvtc=3,tj-,pvv-,xcq-,xfn-,kpjqgm-,kc=6,zngsp=1,vpxv-,xfn=1,qqp-,tj=2,xrb-,zsx=4,lfl-,vqc-,nq=9,lrpx=7,rpn-,phsl=7,chpn-,vq=6,dd-,ff=1,lztd-,lq-,vx-,lg=3,jmthd=7,vnhfc-,jgmnxd=6,fpg=3,xs-,ggqq-,msbfzl=7,znjg-,xt=8,xzt=9,ff=3,mmn-,dmp=7,hrbj-,vth-,dkz-,nsxz-,bnhz-,bq=2,hm-,dm=7,trzx-,xmxf=1,npm=7,qqp-,fnv-,bzpv-,hnf-,ztk=4,hz-,bx-,srp=4,sqd-,zk=5,gbsp-,fsz-,vlv=6,hpl=5,jgmnxd-,rtj=9,lh-,qhvz-,vkn-,blfx=6,sc-,rqx-,tslfp=6,zdm-,fsz-,mm=5,lc=5,ghm=6,ktj-,kl=6,dph=6,ztk-,cb=2,kz-,psfnx-,mq=4,vqc-,dph=9,zj-,js-,znb-,vqbp=9,dx=2,dtck-,gt-,br=6,zrq-,bqpp=5,ckb=6,ng=9,zdm-,jc-,lvs-,ql=9,zf-,sc=2,dph=9,bz-,vbz-,khn=6,kmr-,drs=7,kx-,vlv-,pljg=6,vpxv=6,fsz=5,vqbp-,tcs=5,qz=9,xp=2,xp=7,kx-,ssd-,bz-,vs=5,mgpp=8,rnsbt=1,hdxvhr=4,rz=9,nq-,ktj-,pv-,cmpc=5,psfnx-,pqf=9,tv=4,jpc-,jfjbj-,vps=6,bszd-,jx-,xhs=2,cfnbp-,cb=6,nfgp=8,mg-,fjh-,mtx-,vrc-,cr-,njvd-,lffv-,qqp=4,cr-,js-,jx-,pgd=9,qg-,vsj-,bnhz-,sjb=1,nglvx-,fkzq=9,qhvz-,nlcrm-,kmm=2,jzxp=2,zrs-,mtx=9,hnf-,lk=5,nq=2,rpgj=1,tkpb=7,zzx=7,pnp-,rgh=1,qhvz-,zpc=1,pmz-,nhsvv=5,zqr=6,cggz-,lhks=3,bpq-,tfd=7,jm=4,kpjqgm=9,qxj=8,pv=8,pmz=2,jf=2,gxx-,jf-,mktlhp=1,lrpx=2,lqf-,scbjp=3,fdl=7,khn-,ddxn=7,dzn=6,chpn=5,vpxv-,kl=8,sqd-,vnk=9,vbz-,cqzt=9,lc=4,nhsvv=7,ph-,bz-,xzt=7,cqr=8,spfc=3,vsh=9,bbsk-,khn=1,bl-,lffv=3,pl=8,zdl=7,qg=2,vkz-,qht=9,xhd-,blfx=5,vbmk=5,npd-,zv-,bpqv=2,tvm=6,xqv-,zv=8,dbffb-,trg-,cqbvs=2,vqbp=4,kpfr-,ql-,cggz-,kpfr-,sbt-,plp=2,fsz=3,ct=1,zcjvl=6,rpgj-,nfgp-,zqr=4,zn-,mq-,ps=8,rtj=4,kpqvtc-,ndmt=3,plvd-,xv-,rt-,fb-,psg=8,sxlh-,nhsvv=4,pkbv-,vrzjf=7,dzn=7,mmn-,jfjbj-,vnkmzj=6,dp-,rh-,cv-,dzn-,lg-,rpgj=1,dph-,ctdbt=3,cfnbp-,gxx=8,hj=3,xnmq=4,lc=5,bb=9,zdl-,zzd=9,hzlzn=9,dz=9,rz=9,bzj-,xb=4,lrpx-,vlv-,dph=1,cqbvs-,ghm-,pcnzf=2,vr-,cct-,mph=2,nsxz-,ssd=2,hfrdk-,psfnx=9,rc-,pbk-,znb-,zmlr=1,dk-,dkz=3,rqg=3,mv-,zv=9,sscn-,bszd=1,xhs-,dzt-,mgpp=3,dnkf=6,tnfx=9,drs-,spfc=3,dbsf-,sr-,lfg-,bg=2,gbkt=7,jxj-,tv-,fjh=9,fdfc=5,gs-,vbz=1,dbsf=9,zdtz=6,fgmpc=2,njvd-,hfrdk-,sh=8,scbjp-,zn-,msbfzl-,px-,spfc=6,vdf=2,vc-,vlv=2,cqq-,vhx=1,hl=3,vkqx-,fx=7,gct-,vrc-,hpl=8,zm=1,ktj-,xmxf-,rqg=7,zm=8,cqq-,zlcmgc-,kkcd-,dtt-,jmrz-,gf-,xzl-,pcnzf-,tslfp-,pxn=2,ccs=5,lmlx-,cct-,vgln=4,xt=3,gxg-,vq-,dz-,vqc-,bgh=6,zbgdxg-,ctdbt-,mg=6,fb=1,xbx=1,xv=2,lvs-,kd=9,slzd=2,xb=3,mvmqfm-,kv-,jfz-,jc=8,mgpp-,shn-,kpn-,scb=9,txpx=5,zf-,vhx-,rnxt-,pxn-,mg-,gftx=6,fsz-,xnmq-,bz=4,nfgp-,gkn=7,bnhz-,qpm=1,vhl=5,pm=1,spm-,xfn=8,xf=9,vqbp-,trg=1,pkg-,lrpx=4,mf=7,rpn=7,vqbp-,vdf=8,zz=5,tslfp-,dz=1,fjg-,cb-,zqr=3,clg-,js=2,xjpbxm-,fnln=4,pgd=7,hzlzn=6,qrn=4,khn-,psfnx=7,grfxxs=8,lvx=4,spm-,zl=6,grfxxs-,trg=1,lmlx=2,rsn-,rb-,cnn-,zdl=1,mmn=8,rr-,scbjp-,zk=2,xrm-,lc-,pkbv-,ss-,qhvz-,fq-,bnlpjk-,kkc=8,fpg=7,tgqp-,jzxp=8,rm=2,plvd-,lfg=5,jmrz=9,vk=7,spsx=2,spfc=5,plp-,cfnbp=6,jzxp-,fjh=3,xjpbxm=4,br-,nrc-,sn=3,rc-,lfl-,plt-,np=5,bgg-,xf=4,vlv-,vrc=5,cct=5,vps-,xzl=9,nnn-,pvv=9,dmp-,sf-,hm-,vtp=7,cqr=7,kv-,rnsbt-,qcm-,dvz=1,dbffb-,dbh=4,bzj=9,ctdbt-,tnp-,ksn-,dmp-,qz-,lxg=6,dtck=9,lvx-,bfz=6,xgk=7,qpm-,ggqq=2,grfxxs=3,msbfzl=1,xqfrg-,nlcrm=5,hzlzn-,rfdrk-,xhs=8,xnmq-,pbk=9,jsv=9,zk=8,dtck-,jtz=2,nhsvv=6,ddxn-,ks-,tcs=1,jsv-,xb=1,ff=1,scbjp-,mjz=7,pbmldc-,tcs-,xhs-,plt=8,zs-,xbx=6,bxx-,qcnnzx-,dkz-,dvz=2,rh=4,mhh=7,djmlb=7,bnlpjk=8,jgmnxd=9,pzd-,lffv=2,xqfrg-,cb-,tzjln-,bfz=1,fnh=8,xf-,cqbvs-,lqfv-,ld-,jtz-,nj=8,cjk-,dsdm=9,thnmq=2,ck=8,bpqv=4,rgh-,mf-,sqjgc=8,rzjkqp-,dvmm=8,zthrd=2,mtx-,cqzt=6,gct-,spfc=7,trzx-,hlg-,rqx-,lffv=5,vf-,bqpp-,nhsvv=8,kpfr=2,dfz-,cnn-,gkn-,hb=2,vnk-,px=2,hxd-,zthrd-,xv-,jzxp-,vkn=7,cxq-,ccf-,xfn-,lxmkfx=5,pljg-,lqfv=5,rfdrk=9,khn=5,cnr-,vr=9,kd-,ssd=5,mmsz=7,fnh-,mf=8,lvs=3,vgslz-,pfjml=7,dtck=8,dph-,gk=4,ntg-,lpd=2,fnv=1,mnphn-,xzbz=1,zd=8,gf=1,tr-,lpd=9,vjzt-,ss=7,qnd-,db=2,vz-,lxg-,khn=3,vkqx-,fjg-,zrs-,tnp-,rc=9,fdfc=4,tqx=1,scbjp-,nbtq=6,kmqjt-,jc=9,txpx-,pr-,vps-,zv-,vnhfc-,jmthd-,blfx=1,vqt=4,spfc-,tzjln-,cfnbp-,zf-,ndmt=4,xqfrg=2,cmbv=4,mtx-,ktj=5,nh=1,mm=6,xv=5,ng-,bfz=2,zj-,pt=6,njvd-,qcnnzx-,qgm=8,fjh-,zqr=9,tn-,zz-,mvmqfm=9,gt=3,vgslz=4,px-,fnh=7,njvd=8,jtsdd=2,rzjkqp-,np-,ph=5,zqr=6,cb=6,sxlh-,pfjml=2,dmp-,lxmkfx=2,kpqvtc=4,mvmqfm=1,rknz=8,zcjvl-,tq=1,nnn-,vc-,zdl-,ndmt-,dtt-,mf=4,qcnnzx-,zzx-,pkg=6,xfn-,rnsbt=8,rgh-,vp=2,vpk=1,zz=2,mkj-,mr-,lln-,dm-,cfnbp-,sbx=9,dsdm=1,kpqvtc-,zzx-,bqpp=9,lqf-,cqr-,mlcn-,spm=1,dhh=6,js=4,pg=1,vbmk=3,vqc-,ftz=4,zxt-,zz-,xtl=6,pr=9,cnr=8,rqx=4,bszd=3,rl=6,phl=4,dvmm=2,drs-,bnhz=4,cggz=7,nhsvv-,cnr-,bgg=4,tr=1,pjfk=8,fq-,kmm=2,jjd=9,dbsf-,sxlh-,xzt-,mjjk-,pfjml=8,lmlx-,xtsd-,ftz-,nq-,kd=3,tk=2,vth-,nrc=4,vqbp-,grfxxs=1,ssmflk-,mmsz=6,lh-,td=2,vc-,qht=1,ccs=3,fpg-,ff-,ppq=2,cl-,ff=9,gk=1,zzd-,mv-,pqf-,vq-,vtp=1,thncf-,gt=7,ksn-,bnhz=8,xmxf-,ktj-,cnr-,ctdbt-,cggz-,vps=8,ff=1,jhhqj-,hd-,dphx=3,zk-,bg-,pkg-,gh-,nl=4,dtv=1,ph=5,xk=4,sbt-,sjb=4,tslfp-,kftx-,gxg-,mjz=9,bzpv-,dvmm-,zlcmgc-,mvmqfm-,jmrz-,sf=3,zz=4,vsh-,kfp=9,cggz=4,pm=4,nlcrm-,pg=9,xhd-,spsx=9,xmxf=8,bbsk-,pr-,qhvz-,vqfz=7,dp=5,ndmt-,nlcrm-,mgt=8,gflrmd-,vkn-,jsv-,qrn=7,gk-,rc=9,qvlzn=2,xtsd-,xzl=8,vdf-,fb-,mr-,vrc=2,qpx-,bmnlf-,scbjp-,vpk=5,vjsg=3,rvcd=7,tk=2,xstdx=9,tcs-,zqr-,kpfr-,rz-,vgln-,dvmm-,lqfv=8,bszd=3,nglvx=9,lq=5,dnkf-,sfp=3,pxn-,blfx=6,zzd-,sbx-,dfz-,fq=2,qqp-,rtj-,sb-,nbtq=2,bb-,zpc=6,tfd-,zl-,scb=4,nfgp-,kftx-,zn=8,rh=3,fzm-,qvlzn=3,ctp-,qrn-,ztk-,pmz-,rh-,vpxv-,lvx-,cq-,jmrz=8,sqd=2,kftx-,ppq=7,dvz=3,vblpd-,jgmnxd-,gxx=6,vnk=5,ntg-,sjb=3,dkms=3,bgh-,zsx-,xrm=8,pkbv=7,vttk=7,lxg=5,jm=9,vqbp-,kfp-,hzlzn=5,hl=4,trg=9,lq=7,ksn-,mmsz=5,px=2,lcr=4,td-,hfrdk-,rnsbt-,qln=3,dvmm=6,gftx=6,ppq-,xbx=8,pvv=8,xcq-,tzjln-,tdl=8,vf=9,sxlh=9,bgh=5,bqpp-,zxt-,xs=5,kmm-,ps=5,ctdbt-,hd=4,md=7,xzl=5,jfz-,tzjln=9,gpg=5,lmlx=2,phsl=2,jx=3,lfl=4,kpfr-,db=9,fdl-,rm=3,bqpp=7,mp-,xv-,bpq-,pg=1,nlcrm-,xk-,mq-,lk=7,hrbj=1,hj=1,ss=8,hnf-,xqfrg-,tnfx=9,znb=8,kl-,lqf-,dsdm-,khn-,cct=4,bzj-,spsx-,lc=6,jfz=4,plp-,fb=1,bgkjq=2,pvv-,br-,cfnbp=5,sqjgc-,sv=5,mmsz-,dd-,lrpx=5,mgt-,hdxvhr=1,dsg=6,zz-,gkn-,fjg=7,px=4,lfg=7,jfjbj-,ghbr=4,ftz=1,lffv-,pjfk-,spfc-,mlcn-,vth-,qxkrd-,ctdbt-,qpx=5,gqsr-,sscn=7,ghbr-,vqbp=8,bgg-,zf=2,qxj=8,bpqv=6,hlg-,tn-,lfl-,bzj-,tk=4,ql-,gxx=6,gqsr-,mtx=1,rqg=7,zzx-,lcr-,bx=7,nl-,msbfzl-,bhfh-,sxlh=7,nsxz=8,bgg-,pfjml=4,pv-,qv-,kx=4,dp=5,gxg-,qpx=9,mjz=5,zxt-,tv=4,kx-,xtsd=7,txpx=4,hdxvhr=7,pzd=2,vqc=4,xjpbxm=3,dm-,rvcd-,ps-,hbmt=9,nsxz=5,cct-,xhs=3,cqr-,fm=3,pzd=5,qxkrd-,rz=8,pgd-,txpx-,xk-,hnf=7,hlg-,lcr-,nqcj=9,pgd-,spm=3,zk=5,jxj=9,vth-,srp-,sbx-,cs=1,vpk-,srp=7,sqjgc=7,ks=1,dvmm-,zqr=6,gbkt=5,rl=1,phl-,mg=9,rm=2,dsdm-,rz=2,pgd-,gf-,bxx-,nq=3,vtp=6,sbt=9,kpqvtc-,qcm-,td-,bnhz=3,rknz=6,mjjk=6,qf=9,thncf=5,bb-,vjsg-,cnn=6,jxj=6,vkn-,gbsp=3,kpfr=1,lqfv=6,kv-,gt=1,fq=4,kl=4,rtj-,vth-,pfjml-,hbmt-,vr=1,xmxf-,sc=1,cgp-,jx=1,chpn-,xcq-,vttk-,vpk=1,mnphn-,mtx-,gxx=1,cgp=2,qvlzn=4,sr-,ct-,rh=3,rzjkqp=2,ld=9,pljg=6,vlv-,rgh-,spfc-,jm=8,fkzq=4,xmxf-,gp-,chpn=8,xtl-,cggz-,xnmq=3,rnxt=1,znb-,nfgp-,ts-,bqpp-,fnln=3,pljg=5,hz-,kfp=4,cq-,bgkjq=9,vs-,zngsp=7,jsv=3,dbsf-,kx=4,ph-,xb-,dsg=6,sn-,jmrz=4,dzt=7,mnphn-,vk-,kkc-,kpn-,vblpd=6,vqbp-,dmp=6,hsb=1,zlcmgc-,vbmk-,dp-,tk=3,drs=8,pl=4,sbx-,jhl=9,rknz=5,qcm-,mp=8,vqfz=9,ctdbt-,qp=2,vsh=8,nkx=8,qxkrd=6,bpqv=9,cxq=3,nbtq=1,sxlh=4,fnv=5,vnkmzj-,gpg-,nh=8,zd=1,rzjkqp=6,qpx-,bzj=2,fkzq-,lxg-,bb-,lffv-,xs=3,rzjkqp-,bpqv-,bz=3,zn=5,br-,zthrd=5,kc=2,ss=2,kf-,bb-,bz=6,hb-,dtck=4,sxlh=9,mmsz-,znb-,mhh=3,nhsvv-,ntg=1,bqpp=2,thncf-,tnfx=8,nglvx=1,bzj=3,gcbtgm-,cmbv-,ctp-,pg-,zpc-,rpn=1,gn-,ncjb=8,kmr=3,tz-,bnhz-,dvz=2,mvmqfm=5,jc-,plt=6,cl=8,vc-,qgm=2,ss=5,jc-,cggz=4,chpn-,qln-,nh=8,pljg-,km-,pgd=7,tqx-,xhd=2,gmrrx=3,bhfh=6,bx=3,msbfzl=2,rm=6,qcnnzx=9,xgk=6,gct=4,kpjqgm-,jx-,tgqp=4,sv=2,xf-,ks=9,pzd=6,zrs=3,md-,thnmq-,zzd-,xnmq=3,rc=2,kmm=9,rz-,jc-,rsn-,dphx-,bqpp=7,vs=2,kkc-,sqd-,tdl=9,zbgdxg-,qgm-,gmrrx=7,cb=4,bx-,lvx=8,slzd=1,fzm=5,cs-,xs=5,xxj-,xhd-,qcm=2,xxj=6,vz=8,cqzt=2,fdfc-,vx=6,rpn-,gxx-,nhsvv=6,mktlhp-,vjzt=4,lztd=7,zs=7,mv=2,nlcrm-,tkpb=9,sxlh-,pv-,qxj-,xcq=8,xgk-,scbpb=3,dk=9,mjjk=3,lztd-,njvd=8,znjg=5,lxmkfx=5,snpgsm-,ph-,pr=1,rpgj=4,nzq=2,kc=2,rsn-,dzfqlb=6,gf-,qcm=1,tcs-,mm=2,fjh=6,vp=6,sl-,kfp=4,tslfp=9,hl=1,fzm-,lmlx=2,bnhz-,sfp-,pcnzf-,gct-,jc-,xk-,zpc=2,jxj=6,tzjln-,bqpp=5,pjfk-,cct=5,qgm=8,sxlh=7,lhks-,mmn-,rpn-,vp-,qnd=9,mjz=2,td-,gct=6,sfp-,cb-,tnb-,zf-,chpn-,pkg-,gs-,mmn=2,mnphn=9,pxvxlh-,fm-,vdf=2,vnhfc-,njvd=1,npd-,cl-,vhx-,kz-,hl=8,bpqv=7,ks-,pl=6,txkh-,mjz-,bl=1,cqzt-,bbsk=7,ghm=3,tpj=4,tv=2,qf=7,tpj=7,ztk-,mq=2,jtz-,vkn=4,cs-,xdfz-,ccf-,lxg=9,ctdbt=1,trzx-,bnhz=6,gf-,kjrc-,vr=1,msbfzl=2,vblpd=6,qxj=7,cjk-,nj=4,cjk-,sjb-,ng=4,rnsbt=4,rtj-,frgf-,tqx-,sbx=9,kmqjt=8,rfdrk=8,ctdbt=5,mldgtn=8,rfdrk=7,pnp-,phsl=3,vc-,hz-,rzjkqp=9,njvd-,qqp=7,pjfk=1,sscn=2,pkbv-,lfl-,vp=5,kr=4,ccf-,plp=8,lpd=5,mph-,rh=6,zl-,lc=2,jhhqj=5,xf=6,snpgsm-,lq-,sxlh=6,vsj-,trg=1,cl=1,vjsg-,gp-,tn-,mlcn=8,gmrrx=5,qfb-,fx-,tzjln-,tfd=2,bg-,bkxf-,qpm=3,npd-,ssmflk-,fpg-,rknz-,zngsp=1,nlcrm=4,pt-,vkz-,mq=7,mldgtn=2,gr=7,fr-,xzt-,mkj-,jmrz=5,lxmkfx-,pxvxlh=3,vbz-,nq-,sbt=8,rtj=8,ktj=3,bpq-,mq-,lqf=9,vp=7,vz=1,bb-,ndmt=4,vdf=7,mr-,fnh-,rzjkqp=7,sxlh-,bszd=1,vgslz=5,zd=2,tpnmp=6,fr=2,bgg-,lk=1,qpf-,bpq-,xt-,ps=7,pxvxlh=1,fkzq=7,mgpp-,cqzt=6,bbsk-,clg=7,ztk-,bl-,vjzt=4,tk-,plvd-,jsv-,zd=7,dm-,gxg=8,lxg=2,bgkjq-,np=4,frgf-,lh-,ssmflk-,bc-,vjsg=9,rfdrk-,jx-,pbk=7,npm=5,kjrc-,jfz=8,bz-,bfz=3,ld=6,hj=4,msbfzl=4,clg=2,vhx-,vq=1,hb=4,mmsz-,sbx-,xnmq-,cqbvs=8,hgp=5,qlf-,nfgp-,ztk=8,vnkmzj-,cmbv=9,jjd-,rz-,bl-,jfjbj=7,hxd-,tfd=6,sh-,frgf-,ctp-,sjb=7,vsh=6,br=7,vz=9,px-,lrpx-,fzm=3,tslfp=9,znfd=5,bpqv=2,mktlhp=2,hm=9,znfd-,xgk-,xdfz=7,gxx=8,vpxv=3,qfb-,qnd=1,gpg=1,txpx=4,zmlr=4,zk-,plt=5,dx-,qfb-,vqbp=2,hzlzn=3,bfz-,mgpp-,xf=1,fgmpc-,rl=9,fjg-,qpf-,tslfp-,qvlzn=3,gbsp-,scbjp=1,mktlhp-,jhl-,fdl-,jmrz=1,rc=8,dmp-,clg=2,xtl-,cqbvs-,qfb=9,lpd-,kmr=3,xh-,lh=4,spfc-,cnr=1,lqfv-,scb=7,kd-,rqx-,tpnmp=5,pjfk-,qz-,gf=7,tz=9,kjrc=5,td-,bl=3,dmp-,ccs=9,rzjkqp=5,npm-,kpn-,pljg=6,dsg-,bg-,mhh-,mvmqfm=4,xzl-,plp=7,tk=6,zn=7,njvd=6,lqfv=7,rzjkqp-,kmqjt=5,cv-,mf=7,gxx=3,pxvxlh=4,nbtq-,vqzhc=7,bpqv=2,sl=6,ccf=5,slzd-,ssmflk-,sf=3,vhx=8,mmsz-,chpn-,fzm=2,xtsd-,tvm=1,zk=9,hm=2,cv=1,lq=2,dzfqlb-,kmm-,rxv=5,txpsv-,nrc=7,ps-,gflrmd-,tv=6,gs=6,znfd-,kc=3,zzx=8,vc-,tvm-,rtj-,kqh-,dsg=9,fx=3,hm-,rsn-,lpd=1,zjvd-,nq=6,hgp=3,vqbp=5,jzxp=5,pxn-,js=4,zthrd=3,nj=3,znb-,ncjb-,kc-,kmr=6,lcr-,vs-,kpfr=3,jgmnxd=9,bhfh-,rv=4,ks=3,hf=9,bgg=4,fsz-,hf-,np-,zzd=8,pgd=6,kmqjt-,znb-,fb-,qlf-,zj=1,pvv-,nzq-,ng-,lmlx-,zdm=4,hvglb=9,nhsvv-,kjrc=4,hvglb=1,ctp-,qlf-,lfg-,jhhqj-,txpsv-,bxx=3,ppq=2,vhx=7,scb-,lq-,sscn=9,pljg-,gxg=2,cv=7,zm=6,hdxvhr=4,hpl-,mkj=5,zl=7,zcjvl-,xp=3,bszd-,lxmkfx=5,rgh=7,lztd-,xv=1,cjb-,rqx-,gflrmd=5,lqfv=1,fdfc=4,vblpd=6,tslfp=5,rnsbt-,tpnmp-,cmbv=6,cq=5,gk=2,zdtz=8,lhks=2,gr=2,cxq-,xzbz=7,bpqv-,cmbv=3,cqq-,bgg=2,znb=3,vkn=7,gxx-,pv-,vf=7,gbsp-,qp=6,grfxxs=2,vqc=6,lh-,msbfzl-,dfz-,fgmpc-,kmqjt=3,qrn-,pfjml-,pm-,qpf-,qg=8,vlv=4,cq=6,lq=1,tnfx=2,cgp-,lq-,vgln=7,bgh=3,ggm-,jtsdd=1,xk=2,rqx=5,zv-,mhh=2,bpq=6,fdfc=6,lmlx=7,hdxvhr=5,jgmnxd-,lvx-,vrzjf-,dtck=5,ph-,rqg=5,gf=9,nqcj-,vqzhc-,bj-,fjg-,qln-,jpc-,vnk=1,sbt-,qf=8,qrn=8,gpg-,nglvx-,dbsf-,hz=1,jfjbj-,hbmt=1,sqd=1,cl=7,bzj-,jtz-,vblpd=7,znfd=1,gpg-,drs=3,gn=7,mvmqfm-,cr=3,tpj-,ck=3,qp-,zrs-,tpj-,gcbtgm-,zv=8,lfg=8,jxj-,ftz-,zz-,fdfc-,plvd=9,spm-,fkzq-,xcq-,sqd=4,dph-,rsn=9,vjzt-,xt-,dsdm=4,qlf=3,qht=2,js-,sv-,slzd=9,spsx-,zk=1,rv-,jxj-,scb-,db-,ff=2,cq=9,nh-,fzm=1,cs-,rzjkqp=4,vx-,qp-,spm=9,tnb-,bgg-,phsl=2,lg=5,gmrrx=3,pfjml=1,psfnx-,dbsf=3,jmrz-,lztd-,vrzjf-,vkqx=8,mv-,sqd-,hrbj=8,tgqp-,sbt=6,lhks=2,vp-,mv=6,snpgsm=9,xf=3,tnb-,hl=5,vqbp=7,zd=1,fm-,hbmt=7,scb=1,txpsv=3,jf=6,rc=3,vs=7,qpx=1,sf=3,zbgdxg-,xv=7,xv-,hgp=3,nfgp-,qht=8,vblpd-,ql=9,kmr-,rtj=2,lpd-,rfdrk-,rxv=5,sbx-,rfdrk-,pgd=8,kpjqgm-,vjsg-,cgp-,fnln-,dvz=3,pbk-,mvmqfm-,lmlx-,ndmt=2,trzx=7,tnfx-,xgr-,zlcmgc=5,plvd=8,gs=5,sv=2,dk=9,vnkmzj-,vkn=3,xbx=9,kl-,psfnx=8,ppq-,vq=3,xzl-,mldgtn-,plvd=7,gcbtgm=1,sscn-,drs-,bnhz=2,lhks-,sf-,pbk-,sxlh=3,vkn=2,vqfz=9,gct=1,cmbv-,qgm=5,lg=6,tnp=6,jsv=7,mmn-,xnmq=3,vx-,fkzq=1,vqbp-,gbsp-,txpx=9,jtz-,hdxvhr=8,xk=4,xxj=3,vrc-,fjh-,pxn-,gbsp=8,hl=5,jm-,zn-,chpn-,nbtq=7,kqh-,chpn-,nnn-,hfrdk-,mp-,bgh-,ns-,vsj=3,fgmpc=1,kd-,dtck-,nh=4,frgf=3,cq-,pt-,vttk-,px-,smtd=7,ctf=8,zn=4,kl-,jjd=4,bzj=7,cnn-,mtx-,pzd=1,ssmflk=4,jgmnxd-,ccf=4,jmthd-,vnhfc=7,srp-,qxj=7,chpn-,nh=2,kkcd-,dm-,mmsz=4,fnln-,lq=6,kkc=1,bq-,nl=3,mmn-,jfz-,zf=4,sl=3,sqd=7,dtt=3,ql-,jmthd-,ndmt-,vqc=2,jjd=2,jpc=4,vrc=9,kpn-,gs-,mjz-,ftz=7,bq=5,cv-,xv=2,mktlhp=9,cmbv-,mtx=6,ggqq=7,fq-,rknz=3,xxj-,zngsp=3,rsn=5,xrb=3,vrc-,fb-,phsl-,plp-,pl=9,cr-,vpxv-,lk=4,khx-,rpgj=2,kd=7,md-,dvz-,rl-,dkz=9,fsz=8,vq-,pm-,xf=7,tv-,tk-,dz-,qqp-,bg=7,xb-,nfgp=9,ng=7,kfp=2,mp-,vbz-,lxg=5,xqv=1,npd-,pvv-,xzl-,slzd-,dmp-,jzxp-,dphx-,txpsv=7,mldgtn-,ql=2,xgk-,mv=7,rl=7,kjrc=6,rl-,jfz-,ctdbt-,tdl-,fq=6,lcr=6,hzlzn-,qpx-,nbtq-,td-,mr=8,zngsp=4,vps-,ssmflk-,djmlb=9,pxn=7,cqq-,nlcrm-,rt-,vgln=9,gn=2,nsxz-,cfnbp=2,xrb=8,ts-,bfz-,lh=1 \ No newline at end of file diff --git a/aoc2023/src/day16/input.txt b/aoc2023/src/day16/input.txt new file mode 100644 index 0000000..1778ec0 --- /dev/null +++ b/aoc2023/src/day16/input.txt @@ -0,0 +1,110 @@ +\..../.....-...|........\.|...........-..........-......|....././..........\..|............................... +.../..|.......-............\...........-\|...............\.....|......-...........................-./.......|. +......../.-.-....\...\-.......................................|..........-.......\.....-.........|......|..... +....\........./..............|.............-..|.|.\.|.-......\........./..................|..........\........ +...|/.|..........................-........................|............|-..|...../\................./.../..... +...|.|.......\...................|/..........\\....|....................-..................|.................. +..................\-|..........|.\......|........\.....\...........................-..............\.....\..... +........./.-./..............................-..........|......|................/.............-......./...|./.. +....-...\..........-......\...............-/.....................\.........-\.........|..........|.....|...... +./............\......./..-......................../.|.-.|........................./.|......|...\.......-.-.... +...........././.............|..........-....../..............-.....\.-......-.............................-..\ +......................\.|.\..................-./.....\....|......................|..\...|..................... +...|.-...|.............../..//....-\...-.-...........|......-....\.|-.............\....-.|.............\...... +......|.....\-....\.............|../..|......\....--................/....|..../|../.....-........../.......... +.............|.........-.../.|....................\........................................................... +....\...\.-..-.....|.|...........-........./..../..........-.-....|....-..............-....|........|....../.. +..........|..............\..|........../..........................|.....|\.-...........-......\....../........ +...../.......|..../........-........|./\..\..\.\././.\.............--.......-..................\./......-..... +....................//...-..........-.............|................/............./.\....../...........-....... +.\-...|-/.......-........-...-...............\../...........................\/.....\...........\........|..... +.............................\-......|......\../......-..........|...........|.........-.....\..|......-...... +./................/........-.......|..\..../|............................|...........|.-.|.................... +.\.....|...............-\............|.................|...././.-...\..........|...........-...|...-.....\.... +.......-..../.........\|.....................|....../..|/./|..........|.......|-.......\\./......-............ +.....................\|......../-.............\...|...........................\.....\.\....................... +...|\.././...................|..................-.../\.-............\.-.........../............../.....\...... +.......\..................\..|../...........................\....\....\..../...\..\\./.-....................|. +...............|./...\..........|...|....\........./......\...\.............\.\-......|......-...-........|..| +.........-...........................-...-............\...\.\.................................-....|./........ +.-.|............-.....................-.................\..../......\....\....\....................|.......-.. +.....\.|......|..../................|......|.....-...\|../................./...................//............. +.|.........\..../......-........-............--...................../........|.......\.....\..........-....... +../.....|.|............-.................|\.....|....||...-..-....|/......................|.|-..-..........||. +...-............|.-.............-.....................\.|.............\.\............\...|........|...../.\... +\...........................\.|................................................/.|......-.......\........../.. +...................|....|.......|.-.............-..-\...-...............................|..................../ +/...../.....\............../...........|..|./...-.../...............................\........../|.........\... +..-.......|.........../.......|......../.......\.............../..........-|.................................. +...\.\........\............|......................\........|...\.............................................. +../..........--........|....-..............\..\.............\...................-........./...../..-.......... +..................|.................../\..-..|..................\....././..|......-.................../....... +-...\.............\..-..-.................../...|.|.........|../|./............/...../............../......... +.|\............................-....................|......./..............................|..-|...|.\........ +-........../...-....-.......................|...\........|.......\................../......................... +........................................................././.|..|.........\................/|........\........ +-.....\.........................|...........|..||..|......................................\...\....../.......| +....\...|........\.........................//...........|........-.........\..........\-.....\................ +....|........|.........../........../....\........|......-../..............|...............|.........../...... +......\................-...........|.................\...../........|................-........................ +...............|......|...\............\............/.../.......-.-../............................\......|.... +............-........-..../.......................\..-./.....\...................................-\.....|..... +...|...../......\...........\......\...\......./...........-../..|......................../...|............... +...........................-...../....-.....//................../..........-.......|.................|..-..... +................-...\.............\.../.../.\../...|.........-.\...../.................\.............../\...\. +.....-..................../......................................-...-............/...........|...-..........| +.........-..........\.\................-..\............................|...................-........./........ +...............-....../.....\...|.........\.../\.......-......|............\-.................|...-..........\ +.....\/......../../|......\......|.....--............|....../........-.../....-...-........................... +..../....\....|.............../..|........./............-.........................................../......... +.........../.................|....-..........................................................................\ +...-.....-./....................\..../.\\.................-.....-....|..\.....-....|.......................... +.....-..\..........|....|...........|.|....................................\.......-.../.../-.-........-.../.. +............../......./...-.......-..|.......-|..........\..............-.-....|..............\............... +-........../.........|.......................\....-........../.........\.................../.............-.... +.......-....\.....\..................\..../-.//.....-\..........|........................../....|.....\....... +..-./............./|..|........|...\\.........\...|......|.....\.........../.\......................\........\ +...../|.......\............../....................|.............-...........|......|....../.........../....-.. +.............-...-...|..\-.........................................|.......-.........|.........\.............. +......|......|............/.........................|.............\.............../....................|..-... +../../|\......|..//....../......................................................./-...................../..... +.....-........-................-.............|.-./..............|...-...../......................../..../..... +...........\......|.............|....|.|.........../........|....................\.\......./..\.\..|.......... +.\................/....................-..............................|...........\....\.......-....../.../... +...............|................-.....................................-..................\...............\.... +..........|\..................../............................./...............-.....-....-..|................\ +.................\.\...........................................-../......\.....-...............|...\.......... +..|....\............................................./.........|...-\.........-...\..|..........\............. +..................................|...........-....-./-.\.-..................-............................./.. +....................................\-.....\\...../..................-............-........../........-....\.. +...........\......./...../|\..../-....|........|.|-.....-....|.....||.....|...........\..........\....|.-..... +...\..........\./..............-........................././..........\././...-...........-............-...../ +\........\.....-..............................\................../.............-........................\..\.. +.........../.\...............-.\...-.....\............\....\......--.....\...................................\ +............\...............\.........\\....\....|......\.......-.................|...|....\.....\...\........ +.....|.....-............../............-............../.............../...................-......\...........- +..........................-...|......\.....\.......\........-................./..........-......../.../...-/.. +../........|....\........|..../...........|...-..|..........\............\..../........-................|.\... +..........-............./........................................-.......\.|/......./.................\.../.-. +......................\.........................../.../...../../.......|...................|............|..... +..............\..........-/........|/................................\...........................-............ +........\....\....../.......|.-........\........-..\.................................|.....\-................. +........\......|.\.................-..-.../.............\..................|.../.-.............-/............. +.|/.............-.\.........................|...|./........-...........\../...............\./.......-......\.. +..................-....|.....................-........|/.................\.........../..-.............../..\.. +......-......-.........../......................-......./...../.../.|........\.../....../............\.....|.. +...|../..................-.................\.....................\............-...........|.....|.|.........-| +..............................-...........|..-/.................|................................../.......... +.../......../.............-./.............|...../......./...|...........\..............-..........-....|..-./. +/..\...|...........|...........................|/................../......./......................\.....\..... +..|.........-........|..|......-...................\.........|...........................-.................... +../...-.....-.............../...|\...\.......|.................|.\.........-...................-\.........-./. +../..............................|.......|..............\...\......................\..........|............... +............/....|../....../.............-............................./......./.................\............ +/.....\...../.........../.............../...-.../\.....|.....|............|....|..........\.....\..../........ +....\....-/.........................|............-...........\........\...\.....\\................\........-/. +.....................-..-\...............././...........................\....-./......|..............\..-..... +................./........|.......-.-....................\.-.||...-.......\./.|./.....|...-.../......./....... +........-..-...../.......\.........................\.....././.\.../..|...../.................................. +.............|...............--.........../.|\/.....\.........................|..|.....................-...... +..........-...|.......\/...................|....../.-...-...|....................\..../.-...../..../..-....... \ No newline at end of file diff --git a/aoc2023/src/day17/input.txt b/aoc2023/src/day17/input.txt new file mode 100644 index 0000000..04d0721 --- /dev/null +++ b/aoc2023/src/day17/input.txt @@ -0,0 +1,141 @@ +111143231245512453233532231135242346643223434366453543664553534426223663625563233556655232522464453223446255523366641115221525545241115541324 +431121345255453245532513346436354562424226665435625542452543534236556535432235356366222264336444256255334564563564226352335454152333342425531 +211555234333213145543413562433332533444634432342622623343343455746676435745474465524463464332524462636562533446346254251543254415111115352424 +341511535443122253134546264233423566232562433526456565542774357646735536654673474477533643232255236632236625425666662645545552141115242422515 +341111243411143233254353542425566625642433362644332467546476655667755374563574564666444577323426235362444224643634223545235541134121215423153 +531254335432123321511666236453536252626542365563233477476436375343677375447543535337476464737335222455333555262365434346341345121543421555545 +352535514521514111243342542545234362225656644366655563365373766737565463557476566764463743673533232534423432654354532444434614515232111523231 +534444213321253145553225546453244552566243427573456456543553566474735356663557433377547454546773337365265654362565366242546625513555231514252 +323313551435534512622225362562263434433225636635664736767633535463645434646666633445555455344676663776363645426625355443264235342154354541551 +313344353445542136265245463656643456254675743474744556363764667356336334435764645543447755363434777747562523535253545462232443334115422245343 +411545355323353632256366354543644422255357345374367446347554465766367637555443653555375756736537575763375343236242446526465226534224412555332 +533131433141412662643523326542423234474465776365555735754776645376734774677646654667473753373634447774446536352326333564334433362123135411531 +512414542555163643526524526245525623733466554345447435364657576457576376563367444354735757756765547755635545232536536433564236626315454145425 +222144425355524633235543562342566454344764575745367646565574575636547773457356646456657637437547666745757773472565443652346664466335313555551 +425225555322663532264234233335563664747574765576347743444637647676737567333767356736363333744734647436646746476523664454633653546545122514442 +433432345135556643645433433353363575647663645376464776466577573557373364773353335555374554433464633534445576673653325425446624523422432115313 +331554441535436542646663554246654555367643355653745635636355676647567487764456667645455574637564434547453345476356634245324255236624234322155 +412551332642256525656556644673435575337544534765547457535765745875846744677848864748453556456475334367766655534547433255523464263563352324545 +443534155643554356242335334673736746664536333346353556577644664845484655676855576588488476647745635435535753465654355645265546422335564424541 +325113645335432555665355233555675344354467477467666744857886746774544874557756677867665777554343734443655754353756656432453432656526442431243 +435351452355523445664565747636637443475667333666457866648755647865645478687666547687547448455776553463657435344656637472443446523245236631254 +412143553424345325232454645555356743366537373758877467577647678654487674848784877787468644447756553677573465574353736576542332442522366564144 +431363252452364445356544557475337767655336557686768756474568654665465464884556855744876886546758447344734334637754557774553226363256242242651 +554256445333463534225356746736736743336763377746888675584476754588545785578747858657577787754874858864355637365443444365474546636352256656323 +425454462356554263636434334444466455765534574648745458464655777887654744458644875776467657545757755464375636667554445537457232633344456335351 +322453463334656455234546433475533746373377467777858787845857478676767845586566768464584884875677444488543533447537536376643424666645653654426 +432326546526255522353556547373665657473456445577748547665675868677547547785865454645454554774845748574876563377757437467553465624365666252336 +553526552222562635473565556657553364657548886884887656456865855666787554686645654858555566768654648745854464677634735446546732553642463664265 +664326265443345443746744735336634755665574447844755544578487644586454874856778477455686458576478578547554484667445666574665353445232224622335 +236532234245355276756476464355554554458887564887776455877644448447886868476548867546888764476866776558545547574453545467364757744326636223642 +632462455662552665443463346747745775658756746854568758745668675885889865596789855788675844755468675857556885843566367733464537666322366344223 +266666434363243576375767356665666877464755765578746575486748669688797696588866786698768646566485868545858886667435664777734463342523665555235 +443556525665656734577633335664448556655454678484454777545656666779696855688567966656964658877444685858567566545447466467443774467266252546652 +624455255224344733376335533753476658646544876564465586875955788776686876776867985856986576866568765548476654745754674775433435367623356456444 +262555462622446474437456377453868684444668468464476655987967866795876695585957798678969855857886488747765845586764675544766563666356435634332 +665624325625734563547365736536784556858567746767459867695988595777767769865658796865788965789678867667866557578674565534645577447432435556524 +333523334637534573776476636576557488766777764446687995988678876956786678875775556987997957898658565656667557575548444354657655335367544525324 +456466363423657475573575435664578688587455448765669969578697785989658879886787878568857799889578874487556756544556443334633446546536443652664 +222244452574756367757776634686545577855644575756668896567598879867997957659885755779787658957586658876446588645487856454536434636745444545545 +232636356457556536556365668745444488466474574987976697975796699686796855588666956768955895958675868455454458767755755376733663633374544556332 +332332622576377345736534646747554866678866788995569677878555787567775875779596796566579977885676656586446765845854744577365444454343372523366 +555664262474645377674577674647867577478684688557896658796655557657577765775656667969779597586797679965585456677454664556665646757366673426233 +356255527734373436547644678865777848585857997655679875687575776559878678858588867877856678657789789868858554664844468646634734744447367636636 +552366365773455644547347758554786677468775568778877797978995878598699565857955898857969565997667878757554646688678786867367546447363537255433 +234653475644663446373734847876648467867886788586887579567587799999866977967976866766799575567556897979657666685654448547664746376435346465542 +252443375445565446367565867885578575654575966679888956889877897698678786876967769856955595897679599865976488848485865647735437666446344436434 +243525237374773653566366744564464668675869676798668978579668697966669789967787689668989669967785588576658588654658478886653675446657763525423 +562444777554463656777574486488654468576556956965987679867969676669986697889777667866868559769957958968686745774765777755575354754635335676536 +264352744565456657667484888447847467598998779789689696779679766996889786776689888878996777588978666887977978585445584446655336663435446574336 +463534645476375645554684778858555786676885996565697889699888899766678879678998899799887896956567777585869788585685647484757343657653773563665 +432465634665435774545666885858845649887698657968779889688769778768696698686869888977969768555995578977568967465456666555784577674443567347654 +242537757554573534676885677655767659695959757675998797988778888678799667799866896879686987675557878578887699478448447774787663353534367754553 +524667356567664767788788786864867869567798856688887886998887976986998886686668767699776989677585877675977659745685675557555653563563733554246 +532356647776353655754665854564646466686577777586598677698878676969777768866697689778788897669979897577868888984565784456765466355374543736764 +353546744764545745656756586777658658697565657989587766697669768667797768668968778798869989666758756995866965667844757477467833575363475573665 +442363475553366336665585574875754767958869656955766897687769989798869789778887686787686676968967586798766967684684745655757855634753733757752 +663437377653673574868444644474888676596699778559668686678686966786679878697997667998668668679678775566688577957447548475848855753337766577654 +245676667643445744476584585486889868856958677757876786686678679686978889886998888999768868796876597559998755655765588557465675655453656434644 +623664534334746636755767677464487956975558566697767697896988988986888777988897867888887969667768658555778858798767857588765444464637377577456 +524435763477353755875846887578787556979997766576796978767969777889977779899788987687978888689776897659786666856748548645756774746364367376634 +252436533765577358467857485675499965699779976868778779896779686779787987877779796678799678678799677596566778799678664684774444556767456547463 +425573537536465645667877564778768875796687778666777866678866888788777997889889889698977679979667875765578958585784474754466784455733343567735 +464333643643774675646874764777889966956967776676876886799688979878878778878789889986887997868689965998667998898957544586884784556635746634644 +467634766367575447675444786885857898689798675679979967666789787898898779879998789996988787997866879557586768558865648756677648655653544434374 +343746456733555668756758766647798687656987598967767769799669777877779899879877997887788976797777786786686766555655656558576555537543536634463 +263736676335556377774776475777798578965889979797877679967769989798889889987997789799998866789986877778878665966865757677884784553474773577764 +436645433455747776854766587748677575858967897999889678767678779989877889979988889997876876767987687678559995869785556756658784533445456534364 +457333367374443446568888867558968899899755558786887989669778779799789777789789877797786878778769899759866986568874778856465478635343345547556 +653357365735437544784775777648977566996787598779866797796688878798979898888979997778969666688778767767968675685577484857666844654735677553374 +454465553543537354546566487886759755777886869789896779676678877997997979878787978898769888779699678677788756997994554564684577435566665665735 +645535635654537444576458775888989557678676898899899898879778777789998888888977799999876678677779969957869757677687688584466575575557463464574 +633446673336665785786556488457569967799656676688968667697989989999998988788999877898996869789799978989768599766594875486774675764367566653437 +365763544374353687774557856867888579757898686969676796986689878797978997979877977999799987889766778769957988885866744454548487444537747767446 +333636755475457746774775664885768689998686877878978686686998999898899898989888977798768997778786769665986876885655876855777745646444453543776 +257347366566556755557468747484878859559855958778679799887889887788997889779777777788977698668899997569799999896694654866676457747663766657374 +554664657744433558785576687586858965859676988969678669886988889998798779998998788898786688897788767697957657558568566856664764845635356777743 +437633353637643445485457545565887558959759869766978967769977997997797798898879888977777798877668879696986885979575658888674584733534445447645 +336773576566535576644748576564988895569965579877899669988897888788798979797979977997979687769689677585858655985875545766888476856753753775643 +447375436754766447678756554674875656886886797769889788989967878998987877797878888989798769897678795698885689978868887845785867854575334643545 +533774774334356485744844667888778799675896759697877967979877898888989779897787899796896869887878898896679879895846474568577556875467653377434 +526636647656677568754477458676456866878885686668989676699978797889989979777797888789689887999898765668796877998956878884644777453766767665573 +345776437655574577556784475666467865969688769689967879888899898787979977987989787869968767788798958965676985977558887786764565334636477577473 +462757555367744435776477675765555899756777555889787899796876786789979777799889999696968778897788975596967795797586768684467474533464663474556 +345335634367663334474446748788558686895898855886668998998877799988977999887787778696789977998687999799569767555576845465465587544735477547753 +352747473367547538454567786546446657585759898569988897798777688798687998988998969877688876686969789765886558558776665847888845556554375745442 +525653575563555774887556547555749798556987599756797867867689696667867966889689666776786689697968958698665787755764558846666855575573747534345 +326455665753733645448778877747875897567979969887898786977796667699978788696867677769979676996787658598765877957588784457484655764635365737434 +532467433765464655746576865775654596585859789697688867896988996977778898788669689878989769996769668658678679877544854467444775477564333674625 +335554544454457654447885484444866987787685589987766897996999779767969767678887676699997786677685669976768778997556877487444743767346766557456 +266536345774333444487446686656585797768599588595599776878699669999678767879886989896988777767965756768698777544665754856565457554453756356643 +342464363736646775655856546787754867795697769679858888796987869768899868797687697688878796789895765557688688985446585777584467466735366644363 +523237467646754656468466848574555667758689797896579777988779889977689668778896667696797676667785685755986597446645664545687753465567453354335 +323327756536477335755748475656576547887995887876985968976869696887779786776968996997867687879755599699567657755468776866885345435457655334225 +465352366554666376467456666544455546795667757799755996999978667976979767898877678768888758985566989859967794845764466677657453363336553674426 +555533553546357444765675856588657557878975766698966577867797677999988677666767968786787775798789997676876774564485686564547464355336356456634 +653433475335664753473446858774765764677666859687678977599767969767797969796977878998788799568865956576659644565846455864883376645435553556424 +565624333374353367374378478655648748848595599966858998869589999997986786677787987969558898667876766679797576857877576788664777573454645755524 +243444333564746346366668646545674655784777777596558976769676598668789667999889879766877787867797657978894768877458688756477776644647454654652 +323463545665546577475645558786854468657757569879597766865559566996799678799877666898856695986577997898647684875678677855454775654547364424426 +444345546665673463753634768476874774848587769865579789687878579978877559996587865859858789976885557859466565567686888557474764574774566345235 +463425647566774574744333678886747686865457799567576858589676667856577976986668978996686799577977886677544648876855645547444577633464636553523 +525644666573444644576675468484675575784565795957567577578956797786787796869877557895769667588675596744747766568788564546563666667763666225253 +434232334334645346434743378448585848667846577675678568857556598869978967698795766555887989895656586784848574867846777433673543643643345636354 +536245546237555656364544635858554588856888685777969769765876857989857999778897756695765797865577585676877858667674464376646773636576723344236 +563432433237543453765335674454676568784657684785679757868567556875775895977656667977959855575979944776757767668868556665477773367647645655455 +345662256237647446335653655474847777777457855878575955988896666669879768598869889768857697696556455457585858777745474363376763373677455666452 +236454255236363665663365567376855855468585857577666775857999657659868999786755866568579898667756458558654648847578447446356744353365436332433 +236656544552467767567677567448876458465585754786588555756756796978557899579678886778787886777445766574578586476464377437556375345344545245426 +662325463226374566436333654547585676688868454444785599797776865969998677956976597586658865956686866776584577484553367473533563564746536336443 +645354345344537355546665737533754846786764888785557644675696956878965869566966978688779976776866567854756646786873676654337473445524622236626 +233264254235366666736346437575764477565768544667785545578799879958588586787879788669995878745846576785646778646655574347764645533625345535563 +432433242246235746473543477553563665775475774755874587665558965695658699586897695998868747444878848474546545784334377573356763473236426645266 +243532622522636755753437535657447776765475565645845684687588454765579856966696756574665577485786546848546585774336373636476643336442355233566 +424366665443243666567346434354557355888674468846456668847655454648844584447647747545884765768788475648857654773677576566637647654653266642645 +355566553355543667644766357475663334576684855756856557474768868686854785488845464657775755684775878866867574456477457355345767654443322524456 +252226355555353432774774553656764464764766745687577646548754448444648855656476668476765857676478568588685475446655746336375532535436262246655 +124465325536222534633336746764356663557877585584548488677874547445477547864878867577864565556567445544564676546443567455743324244266455364265 +444646453636346242245546654333667346776464746865665867844474866746647865554675844644775465548557754474556375345735665646364353323526625624235 +412366252635624522466346354375765373635554864778855885678875757885648677787758444554675487467557768856743453437365564667776246434655322223525 +155662534242554334526573346673376775437747347484686774778445745547688488858484846876546748684767564753677657367475756735363326425522532252354 +111522322233565252443476336555573575463347454766857665787786477486485455577564475876657687767758584655535533636353747434645522266562523335624 +542422536235454325532645676434563747567556555574458874646877684645545674855674568675844866465685676443356746355677555555666633655263646665442 +211224626424363426643222663657775566775366634363464577678645547647756688757557454788857466767766573445336567467663545634344363446256343542532 +524353365435226556556322567464746534674443466757337368478575456847447776487687768855745786663475737763753364433366577364223462546556234245115 +351231443465264363362336352643774674346454366777533445747664448478677857785488484766644654674764373357565474433475733244565424353322356533151 +554223355636366655362352555655373675564737667663367637476378475656775876558465484467733734736556746773634646373557532336625245362343245314352 +415315224565323443623244633253477545773643635677437734464354663476745457476448456747555563574755374344343366743744432254533234544233652442452 +155321252324634365262226535534446766435373535475553354733776334766573455373756333733573667436757467643766753335642442322554323423224452212311 +554231145244425252354633334356244765663464645674467736446536735636374435547767747353673645457676564473344375654424643234566252323463342424331 +145124531215355646265623243325355765435544464565637674665536435365374465373674364755336673456445565567547775765322264364462642335223541214445 +245544533254142563235523522653435334444477535443567574737475663654776577746444777346766467745333753447653577332363336365532325543231234334451 +251214311244114545554462446423624626676363375354453335776637374775465676343453547674544736356577777464764476336235452444566243644313151353524 +251353112524455635524245344436546325534376365643536356555677555675344355745373347466346575334347466467665642344265334364324562252124525455152 +454211332313421263343625436544345634543275377555633667545444553367537367674333374344744754673653556564665546434666555266442463652431455221541 +115242354251513424524244565345324542344352356476443353667354646467467637463545337377445445357757536673532523352342633456335464421222514545231 +234551552324343221533222663526446236435634463664377555475474346673535434445744753657775466665644563245222634266653436345463353354354144115325 +325412113545232114263462446356336532466543425623356673677337363765363633556375433575757664356773345344465345555625252465465324322523535532422 +533444522324551243515564322652262342524325235554667764445446656633535736363765574763563335776423624463325533625243355442245443123534323312511 +334123531454531311142443565534562563644542436563665634765457377675756443636777543663643633363324553544365344443234345365224343523341515544422 +425513541335541443232314324425223643632666545263242622235765443475754557635364446664563322663626426463256624543536634556155552222222255121512 +443141524454451431355221565364643463663664635262463364522342652467643777543675336434624463452333536354565653344664465611411152424331223125543 \ No newline at end of file diff --git a/aoc2023/src/day18/input.txt b/aoc2023/src/day18/input.txt new file mode 100644 index 0000000..0e3c331 --- /dev/null +++ b/aoc2023/src/day18/input.txt @@ -0,0 +1,676 @@ +L 7 (#1dc5f0) +U 6 (#4497e3) +L 3 (#3b21c0) +U 3 (#3d8523) +L 9 (#58e7b2) +U 8 (#35d213) +L 10 (#329390) +D 3 (#1302b3) +R 7 (#07f802) +D 8 (#38fbd3) +L 7 (#6d0e72) +D 6 (#2c2493) +L 5 (#38b7d0) +U 6 (#2ab7b3) +L 2 (#0ce560) +U 6 (#2ab7b1) +L 2 (#2f6940) +U 2 (#2a5a83) +L 3 (#477150) +D 11 (#0baea3) +L 4 (#3899c0) +D 3 (#34a803) +L 5 (#55c0d0) +U 9 (#328483) +L 2 (#460290) +U 5 (#48cfd3) +L 4 (#1e3150) +U 5 (#3b7ea3) +L 7 (#2c0a10) +U 11 (#51d803) +L 4 (#39fe80) +U 3 (#51d801) +R 10 (#2938e0) +U 2 (#1c17f3) +R 4 (#0df9a0) +U 3 (#579691) +L 8 (#354a50) +U 4 (#3d0131) +L 6 (#1029b0) +U 7 (#0c19b3) +L 3 (#5f48c0) +U 2 (#0c19b1) +L 4 (#15ff10) +D 9 (#0f08b1) +L 5 (#1c8160) +U 9 (#573b71) +L 6 (#2d58e0) +U 3 (#479121) +L 4 (#1c7bb0) +U 8 (#34d583) +L 10 (#416f10) +D 5 (#34d581) +L 7 (#59af90) +U 5 (#24a821) +L 9 (#196ca2) +U 6 (#1f89d3) +L 4 (#6b4812) +U 2 (#1f89d1) +L 6 (#32e5a2) +U 8 (#5eb4c1) +R 7 (#5bffe0) +U 10 (#3f8051) +R 8 (#29ac30) +U 4 (#495a21) +R 7 (#3b4e10) +U 2 (#52d3a1) +R 7 (#1e27d0) +U 4 (#09ad83) +R 8 (#385530) +U 4 (#218943) +R 3 (#0d8de0) +U 3 (#218941) +R 3 (#3ac220) +U 12 (#09ad81) +R 3 (#08aa80) +U 5 (#33c7b3) +R 2 (#37a350) +U 3 (#6808c3) +R 11 (#355310) +U 3 (#6808c1) +R 3 (#14fbe0) +U 6 (#47b293) +R 6 (#28ab80) +U 3 (#37d873) +R 4 (#607702) +U 2 (#3d77a3) +R 4 (#18a432) +U 3 (#26ee23) +R 10 (#0ba7e0) +U 3 (#0b2863) +R 7 (#604a60) +U 7 (#477053) +R 2 (#0a1210) +U 4 (#2f7e63) +R 9 (#0316e0) +D 5 (#1372d3) +R 10 (#382a30) +D 3 (#2da293) +R 3 (#100920) +D 7 (#5267e3) +R 2 (#66c240) +D 4 (#1c94a3) +L 5 (#2d7770) +U 5 (#2c0061) +L 7 (#4181c2) +D 5 (#1f97c1) +L 3 (#4181c0) +D 4 (#2b79b1) +R 9 (#1bcaf0) +D 4 (#04de93) +R 2 (#010a22) +D 4 (#599823) +R 3 (#010a20) +U 6 (#189b23) +R 4 (#38f770) +U 9 (#452e51) +R 3 (#2551f0) +U 6 (#333c81) +R 6 (#0554d0) +U 5 (#411e13) +L 4 (#487840) +U 10 (#411e11) +R 4 (#2c69e0) +U 7 (#13c311) +L 6 (#164330) +U 4 (#7449a1) +R 10 (#467570) +U 5 (#47fcc1) +R 2 (#13e090) +U 5 (#2e45a3) +R 4 (#0f97a0) +U 9 (#129b03) +R 3 (#46c520) +D 9 (#11dcf3) +R 4 (#0d0e42) +D 4 (#05ca31) +R 4 (#56d742) +D 2 (#05ca33) +R 6 (#1e5ae2) +D 3 (#56bbb3) +R 9 (#1ce6b2) +D 5 (#039d83) +R 2 (#3f1c90) +D 4 (#198063) +L 11 (#3cf8a0) +D 7 (#198061) +L 3 (#2311e0) +D 4 (#401ab3) +L 7 (#46c522) +D 5 (#2d4703) +R 6 (#0f97a2) +D 7 (#053643) +R 6 (#603110) +D 12 (#2ab333) +R 2 (#25d970) +D 3 (#1956d3) +R 5 (#528eb0) +D 2 (#3a55e3) +R 5 (#1aa8d0) +U 5 (#29e981) +L 5 (#133d80) +U 8 (#559581) +R 5 (#133d82) +U 4 (#298e61) +R 3 (#0ed762) +D 5 (#481221) +R 4 (#0ed760) +D 9 (#3a5a61) +R 4 (#265580) +D 3 (#241031) +R 3 (#2bacb0) +D 10 (#4e8481) +R 4 (#4f2bc0) +D 10 (#47fcc3) +L 3 (#15d6f0) +D 9 (#6a0e71) +L 5 (#3cc390) +D 4 (#2fa353) +L 4 (#272140) +U 5 (#029653) +L 3 (#428820) +U 8 (#23f923) +L 4 (#036c82) +D 4 (#3315f3) +L 7 (#663ce2) +D 2 (#09be53) +L 8 (#075c00) +D 5 (#552f63) +L 5 (#662630) +D 2 (#3e3fb1) +L 9 (#543310) +D 5 (#2b6db3) +R 8 (#06d960) +D 2 (#2b6db1) +R 3 (#570160) +D 6 (#441a91) +R 6 (#2f24e2) +D 11 (#2ca451) +R 7 (#5700c0) +D 5 (#36e6f1) +R 3 (#5700c2) +D 8 (#374141) +R 5 (#2b1072) +U 11 (#489e23) +R 5 (#456682) +D 4 (#522e63) +R 3 (#127202) +D 7 (#65dc21) +R 8 (#489d40) +D 3 (#686b21) +L 4 (#107ca2) +D 7 (#2271a3) +R 4 (#148da2) +D 3 (#34bf71) +R 2 (#70b522) +D 9 (#34bf73) +R 8 (#49a172) +D 6 (#2271a1) +R 3 (#138232) +U 4 (#3e4511) +R 4 (#0bb2b0) +U 8 (#2958d1) +R 5 (#1df330) +U 3 (#23af43) +L 5 (#4bbaa0) +U 7 (#23af41) +L 4 (#125270) +U 9 (#41ec91) +R 2 (#222ff0) +U 5 (#2936d1) +R 8 (#2e2310) +D 5 (#2e05a1) +R 3 (#0ae0c0) +D 11 (#074021) +R 7 (#52f6e0) +U 2 (#074023) +R 3 (#590720) +U 6 (#469f01) +R 3 (#34f792) +U 7 (#002dd1) +R 4 (#409522) +D 3 (#002dd3) +R 6 (#149f72) +D 5 (#1cc8f1) +R 5 (#095222) +D 7 (#3eab71) +R 3 (#236082) +D 11 (#3b3d71) +R 2 (#6e2530) +D 3 (#0887f1) +L 6 (#1795d0) +U 7 (#21f2d3) +L 6 (#194240) +D 7 (#2e0d03) +L 3 (#605a50) +D 4 (#257243) +L 8 (#0a5380) +D 7 (#2b70c3) +L 4 (#428fd0) +D 8 (#5b1513) +L 6 (#1bf3f0) +D 3 (#341241) +L 3 (#1f7ea0) +D 8 (#2eda01) +R 6 (#527980) +D 7 (#62ec43) +R 10 (#156e00) +D 5 (#53ce33) +R 4 (#3a5f20) +D 3 (#2f3bb3) +R 6 (#5dacd0) +U 4 (#47f0e1) +R 6 (#538c70) +U 4 (#32a283) +R 8 (#27c140) +D 9 (#198283) +R 6 (#1b5ba0) +U 9 (#15de53) +R 4 (#037d60) +U 7 (#373ac3) +R 7 (#282640) +U 7 (#33c993) +R 6 (#2f6bc0) +U 4 (#236a23) +R 5 (#4977b0) +D 4 (#076301) +R 6 (#56dc60) +U 3 (#30afb1) +R 2 (#720272) +U 8 (#2b0fc1) +R 7 (#19ac60) +U 7 (#07ff61) +R 3 (#585610) +U 2 (#4969b1) +R 7 (#56dc62) +U 5 (#029821) +R 9 (#60a4e0) +U 8 (#1688a3) +L 4 (#19a5b0) +U 3 (#20db03) +L 7 (#1a7950) +U 6 (#1ab903) +L 8 (#463660) +U 2 (#449963) +L 3 (#11ec80) +D 4 (#206da3) +L 8 (#1057b0) +D 6 (#17ffa1) +L 8 (#6cda70) +D 4 (#26df51) +L 3 (#001d70) +U 9 (#3e42f1) +L 5 (#55e962) +U 5 (#138341) +L 6 (#0c3e52) +U 9 (#4ae8f1) +R 8 (#0ad032) +U 7 (#14e3b1) +R 4 (#5a3b70) +D 7 (#1dad81) +R 11 (#3d8e92) +U 6 (#441b61) +L 6 (#20de92) +U 10 (#55efb1) +L 6 (#1d72c2) +U 10 (#1469a1) +L 6 (#21f4b0) +U 4 (#49b921) +L 2 (#560f10) +U 10 (#49b923) +L 3 (#03dc20) +D 6 (#249e01) +L 7 (#6859d0) +D 4 (#0947e1) +L 3 (#5d3fd2) +D 11 (#2c3801) +L 6 (#26cab2) +D 4 (#1f5b51) +R 13 (#0fcc92) +D 3 (#638131) +L 7 (#404362) +D 2 (#6cc863) +L 6 (#1d8d62) +D 4 (#161423) +L 6 (#595612) +U 7 (#09d071) +L 4 (#10a5d0) +U 4 (#633011) +L 8 (#3cddf0) +U 3 (#3a8471) +L 7 (#407050) +U 7 (#00b9a1) +L 3 (#2537e0) +U 2 (#00b9a3) +L 5 (#3a9220) +U 5 (#212a31) +L 7 (#572a62) +U 5 (#0b0ea3) +L 4 (#52f702) +U 6 (#0b0ea1) +R 6 (#077262) +U 9 (#116db1) +R 7 (#688352) +U 8 (#37c5e3) +R 7 (#23b522) +U 3 (#37c5e1) +R 6 (#4a4aa2) +U 9 (#57bf21) +R 4 (#60ae60) +U 3 (#06dc81) +R 3 (#47d900) +D 4 (#587561) +R 6 (#2940e0) +D 8 (#1268d1) +R 5 (#0ec482) +D 6 (#38b6c1) +R 6 (#59c532) +D 8 (#2e4421) +R 6 (#0b8022) +U 5 (#410a61) +R 2 (#7409d0) +U 6 (#28e351) +R 8 (#15d2e0) +D 4 (#12ab01) +R 5 (#100f80) +D 6 (#44c953) +R 4 (#33eef0) +U 6 (#23c7d3) +R 5 (#4696e0) +U 4 (#222123) +R 9 (#26d070) +U 9 (#4cec13) +R 2 (#560af2) +U 6 (#5099a3) +L 11 (#4b4b52) +U 4 (#10b4e3) +L 8 (#40e6b0) +U 6 (#1c6173) +L 5 (#2e31e0) +D 6 (#3d8c01) +L 7 (#1cc6f0) +U 9 (#083731) +L 4 (#463da0) +U 8 (#1cb711) +R 8 (#0b4110) +U 8 (#2252b3) +R 10 (#60b900) +U 7 (#2252b1) +R 8 (#0ce680) +U 5 (#467f81) +R 9 (#0ad0b2) +U 2 (#359203) +R 9 (#67bc02) +U 9 (#359201) +R 4 (#0653e2) +D 3 (#281ca1) +R 9 (#1b8ee0) +D 6 (#0b3861) +L 8 (#336f02) +D 3 (#3201f1) +L 4 (#4a85a2) +D 7 (#111eb1) +L 9 (#1c9c90) +D 7 (#145011) +L 11 (#083be0) +D 2 (#516321) +L 6 (#083be2) +D 9 (#20bb21) +R 5 (#3d8030) +D 6 (#404031) +R 8 (#642420) +U 4 (#56cf61) +R 7 (#55c610) +D 4 (#20d1e1) +R 9 (#1b5e10) +D 9 (#1e85d1) +R 9 (#361f10) +D 3 (#3d69f1) +R 9 (#16da12) +D 6 (#2d6471) +R 5 (#5d9642) +D 3 (#4656f1) +R 6 (#44b540) +D 8 (#2b6131) +R 7 (#2ce630) +D 7 (#2b6133) +R 3 (#61b2a0) +D 4 (#4c2661) +R 4 (#3b7372) +D 8 (#01ed73) +R 5 (#4c3962) +D 3 (#01ed71) +R 4 (#4ba142) +U 9 (#4377f1) +R 3 (#1deb32) +U 6 (#3f3323) +R 3 (#22b722) +U 7 (#37bc13) +R 3 (#1918d2) +U 4 (#13c8b3) +R 5 (#1918d0) +D 12 (#3e4d83) +R 3 (#22b720) +D 5 (#0cefe3) +R 5 (#2bf9f2) +D 9 (#3122d3) +R 8 (#41a3e2) +D 10 (#3122d1) +R 8 (#0b6e02) +U 7 (#266641) +L 4 (#5a1cc2) +U 5 (#060d11) +R 4 (#32ff32) +U 7 (#446c91) +R 5 (#319c82) +D 3 (#446c93) +R 7 (#1bf562) +D 2 (#44af13) +R 6 (#6f3132) +D 6 (#312433) +L 5 (#489da0) +D 5 (#53a343) +L 8 (#489da2) +D 3 (#5a6673) +R 7 (#0f0f92) +D 6 (#01b8b3) +L 3 (#3c6b12) +D 5 (#725613) +L 10 (#114b12) +D 4 (#14ace3) +L 8 (#30d292) +D 9 (#1ebac3) +L 6 (#3c4292) +D 7 (#39e2a3) +L 2 (#1f3882) +D 4 (#658381) +L 3 (#0b0252) +D 8 (#699e71) +L 10 (#2b4ae2) +D 2 (#1ac903) +L 5 (#60cef2) +D 4 (#515ea3) +L 5 (#4d3790) +D 6 (#354183) +L 4 (#398170) +U 3 (#7163a3) +L 10 (#398172) +U 7 (#0608f3) +L 8 (#4d3792) +D 4 (#06c7a3) +L 7 (#5819c2) +D 5 (#17c3f1) +L 3 (#0c8892) +D 5 (#67f951) +R 6 (#3ff470) +D 12 (#397601) +R 6 (#3ff472) +D 4 (#4f6451) +L 9 (#665a22) +D 2 (#1705c1) +L 3 (#14df92) +D 7 (#4b40a1) +L 4 (#1fa1f2) +D 5 (#3b7231) +L 10 (#063e12) +D 7 (#2a8fb1) +L 4 (#6b71e2) +U 4 (#218101) +L 4 (#2e2f52) +U 4 (#221411) +L 5 (#200732) +U 5 (#0ac7e1) +L 9 (#50af62) +D 9 (#4b7c81) +L 3 (#50af60) +D 4 (#2b9d31) +L 13 (#4766d2) +D 5 (#25ef21) +R 3 (#119862) +D 2 (#517a31) +R 4 (#3e6072) +D 10 (#21cfa1) +R 6 (#4437f2) +U 12 (#30f031) +R 4 (#036652) +D 7 (#453c91) +R 5 (#05ea22) +D 10 (#2da1e1) +R 2 (#4da5a2) +D 2 (#2da1e3) +R 6 (#2bffc2) +D 9 (#453c93) +R 9 (#4ed2d2) +D 3 (#141b71) +R 9 (#3ecad2) +D 5 (#234873) +L 11 (#3c4982) +D 3 (#2ed113) +L 7 (#3c4980) +D 7 (#4a6553) +L 8 (#49bf02) +D 8 (#337011) +L 9 (#2eb772) +D 3 (#690ec1) +L 2 (#25f0a2) +D 7 (#62eeb3) +L 6 (#1ae012) +D 7 (#34e643) +R 6 (#382a72) +D 7 (#281183) +L 11 (#271932) +D 4 (#470d23) +L 9 (#4ca812) +D 4 (#6f1ea1) +L 7 (#4702f2) +D 8 (#34e641) +L 4 (#155c42) +D 10 (#62eeb1) +L 7 (#3a2422) +D 4 (#3f7ca3) +L 9 (#39b860) +U 4 (#5cf1c3) +L 13 (#39b862) +U 4 (#4751f3) +L 4 (#322dd2) +U 4 (#539531) +L 5 (#4171a2) +U 5 (#539533) +R 9 (#075042) +D 5 (#1e57d3) +R 7 (#5cc952) +U 5 (#0ac0d3) +R 6 (#1af522) +U 9 (#374273) +L 4 (#2992f2) +U 2 (#299893) +L 4 (#267bc2) +U 10 (#47af63) +L 3 (#282402) +U 4 (#06a063) +L 5 (#5cce72) +U 9 (#47fba3) +L 3 (#1168e2) +U 10 (#3b1071) +L 4 (#178c22) +U 3 (#42b971) +L 5 (#178c20) +U 8 (#1dca41) +R 9 (#442912) +U 8 (#5b9241) +L 3 (#1da682) +U 7 (#31ff23) +L 10 (#3cd732) +U 5 (#33bab3) +L 5 (#159fb2) +U 4 (#2e5d93) +L 7 (#5f9702) +U 4 (#5566e3) +L 4 (#0ba292) +U 8 (#07f963) +L 3 (#410a02) +U 3 (#6ace93) +L 5 (#0913a2) +U 2 (#21a553) +L 10 (#3d71a2) +D 6 (#25ff63) +L 5 (#5285b2) +D 8 (#3cfc73) +L 3 (#13aba2) +D 7 (#24a793) +L 4 (#29e4c2) +D 12 (#1dc4b3) +L 5 (#3cb102) +D 8 (#5b8433) +L 5 (#3cb100) +D 7 (#22d9f3) +L 7 (#6db9c2) +D 6 (#4cd683) +L 6 (#083f42) +U 11 (#09bbc3) +L 5 (#609002) +D 7 (#12b603) +L 7 (#041be2) +D 8 (#4f3823) +L 5 (#5a3412) +U 7 (#14de13) +L 6 (#036ee2) +U 5 (#442823) +L 7 (#6c5502) +U 3 (#2edcc3) +L 9 (#3b6b72) +U 8 (#321e73) +R 7 (#48e5a2) +U 6 (#2fbec3) +L 12 (#44ed12) +U 6 (#0c1893) +R 12 (#61a8e0) +U 4 (#073043) +R 4 (#0d47c0) +D 6 (#469b63) +R 2 (#047ae0) +D 10 (#39b7d3) +R 3 (#2492d0) +U 8 (#2026f3) +R 3 (#73fb40) +U 2 (#201333) +R 3 (#372f72) +U 2 (#2c6143) +R 10 (#615ea2) +U 4 (#355653) +R 7 (#3876d2) +U 9 (#080463) +L 8 (#3af4b2) +U 10 (#6840e3) +L 3 (#5472d2) +U 9 (#005683) \ No newline at end of file diff --git a/aoc2023/src/day19/input.txt b/aoc2023/src/day19/input.txt new file mode 100644 index 0000000..8fb7e78 --- /dev/null +++ b/aoc2023/src/day19/input.txt @@ -0,0 +1,766 @@ +xhs{m>3771:A,a>2552:R,A} +smp{a<3732:R,m>1999:R,x<925:R,R} +zkk{m<2240:R,a>3345:R,R} +nqz{x<2056:R,a<3165:R,m>1748:A,vx} +mm{x>486:A,m>3523:R,A} +bg{s>3338:A,kgm} +qf{x>537:gqx,bqz} +lv{s<2341:sc,s>2505:rtm,xqj} +bv{a>2574:rvm,ncd} +ssz{a<729:A,m<3390:ld,m<3772:A,R} +gm{a>3900:A,m>2508:R,x>744:R,A} +ts{m<642:R,m<843:gmm,s<325:gf,A} +rtm{x<2920:A,m>3132:R,R} +qgz{x>2082:hvx,a<1490:A,s<3742:R,kks} +kpf{m<2390:cm,ft} +ghn{a>2066:A,s<3291:R,a>2028:A,R} +mkx{s<975:R,s<1112:A,m>756:A,R} +tg{x<3668:A,x<3835:A,ftz} +chj{x>733:R,a>3064:R,qs} +ndl{x>2773:R,x<2370:R,R} +dsq{s>838:A,s>496:A,m<2191:R,R} +jl{m>1219:A,R} +chh{x<973:R,A} +fxv{x<2543:R,m>3368:A,s<3567:R,R} +qvl{m>1648:A,R} +fpb{a>1367:R,x>2441:R,a<1220:A,R} +tph{a<2677:tss,R} +cnc{s>1274:A,a<3947:R,A} +cz{m>2865:R,a<3514:rm,s>687:xsr,A} +zzq{x>76:A,A} +vp{x<162:A,R} +bth{x<1859:zmq,a>2455:hq,mb} +rm{x<1253:A,R} +ndq{s<390:R,x<2982:A,m>3468:R,R} +vdh{x>2464:bx,m>3276:fj,ffs} +bjc{a>3069:R,R} +sqk{m>3029:R,s>130:R,sln} +xl{x<2157:A,R} +xrs{s>3440:qgz,a<1479:qsv,xt} +dnt{x<538:qc,m<1343:jqh,x>645:fm,jvb} +pms{a>2603:R,A} +lf{x>390:A,s>1617:A,A} +dvm{s>1052:R,R} +mnc{x>2703:R,A} +rxt{a<595:A,R} +pb{s<3737:ngp,x>3125:A,dbk} +zr{a<2605:R,x<422:R,A} +pd{s>1915:xhs,zpl} +vm{a>2377:R,R} +in{x<1629:dv,nfq} +xdt{s<1791:fpb,chl} +gg{s<393:fd,x<2091:dg,tz} +xsr{s>1167:R,m>2006:A,a<3531:A,R} +qs{x<719:R,x>726:R,s>2919:A,R} +kgm{m>2140:R,s<3253:R,m>1246:A,A} +gvv{s<3124:flg,m>3004:jxl,x>2411:vf,hfg} +nv{m<3088:A,a>1588:R,x>3499:A,R} +lx{s<3277:R,a>2880:R,A} +cls{m>3314:gt,kpv} +ct{a>3320:R,a>3189:A,s<2328:R,R} +bqz{m<1572:rjv,x<437:R,s>1572:mzn,td} +qm{a<1975:A,s>623:R,A} +zx{m<3520:R,s>1981:R,a<2633:A,R} +hbk{a<1441:A,x<2151:R,x>2450:A,A} +zp{a>2928:A,R} +njc{x>225:R,a>3543:A,a>3524:A,A} +dt{s<467:R,a>3868:R,x<1448:A,R} +qlj{a<1744:A,s>1375:A,R} +ln{x<546:dk,x<1088:jm,s>996:sdr,grf} +zxc{x>1220:R,a<1570:R,a<1721:R,A} +hqv{x<1168:A,a<3325:cs,zkk} +cfx{m<1777:R,A} +tb{a>3324:A,a<3310:R,R} +fx{a>2975:R,x>2219:R,A} +rnm{m<3699:A,a>1555:R,R} +zpl{a>2213:R,m<3703:A,R} +zvm{s<3648:R,x>2112:R,s>3879:A,A} +gkt{x>1247:A,m>2344:A,m<1950:R,R} +qfz{x<37:A,A} +dq{a<2482:A,A} +gpj{m>2417:A,m>1980:A,tq} +khx{s>3504:R,a>633:A,s<3211:R,A} +kh{m>629:A,A} +zg{a<2645:mg,s<259:sqk,x<2942:gg,md} +sxj{m<1304:xlx,lh} +lh{m<1742:bb,x<2813:rh,m>2090:qhd,bv} +jxg{a>3806:A,R} +sg{a<3432:nn,m<1550:pp,m<3113:ps,js} +pck{m<1755:dmv,s>3255:hb,s>2954:lfz,ns} +xqj{x>2860:A,A} +hm{a<3006:R,A} +bbv{a>3355:rf,s<1113:hqv,m>1976:qzk,zxk} +rpd{s<3371:R,A} +jzc{s>1320:A,s>1117:R,s>948:R,R} +mjp{m<3107:db,x<3329:lsq,x>3386:jgq,R} +chl{x>3157:A,m>2688:zq,tf} +ffq{x<2660:hbk,s<2231:cvs,A} +pv{x>662:bc,m>2737:fn,scz} +rf{x>1195:A,x<1012:R,hp} +mg{s<320:mnc,ndq} +md{s<368:ks,a<2900:A,a>2968:A,hxd} +rb{s<976:R,A} +cvv{s<1568:R,s>2041:A,a>2529:R,R} +hvx{s>3628:A,m>1706:R,m>1033:R,R} +fhg{m>3499:R,a>2802:nm,R} +cm{a>793:gnt,s<342:vg,dl} +mzt{m<1547:R,A} +cf{s>3282:A,R} +vr{m>1574:zzp,cfl} +vbd{x<446:R,m<2633:R,A} +mdz{a>2230:A,A} +dck{s<2674:R,m>1804:A,m>1642:A,A} +dk{x>356:A,R} +sxr{m>1197:vq,qzn} +sl{a>3532:R,A} +rhf{x<592:A,m<3490:A,A} +hp{a<3393:A,a<3436:R,x<1078:A,R} +sln{m>2771:A,R} +hq{m>3351:A,x>1966:A,m<2756:R,R} +bm{m<2254:R,hpt} +vt{m<3667:R,x<1031:A,A} +dv{a<2349:npz,a>3297:tck,x<703:gq,lm} +ddj{m<1813:mfd,A} +fln{s>2720:A,R} +xft{a<198:A,a<267:R,m>3094:A,A} +xdr{s<2440:R,m<1370:jcs,a<1346:rrl,R} +hxc{s>3518:A,a>1208:R,x>3051:R,R} +bc{a>3542:zb,s>1446:sr,a<3492:pjm,cz} +lfz{a>3921:A,m>2651:A,s>3077:qj,A} +qmk{m>2209:A,R} +bt{m>3699:R,x<2709:R,m>3441:A,A} +cfn{x<203:R,x<238:R,x>260:R,R} +hbb{m>3171:R,R} +xz{a<1217:A,m<3348:R,R} +tz{a<2930:A,A} +cvj{x>3663:A,R} +kb{x<812:A,x<882:R,m>1354:R,R} +fgc{a<3044:A,m<3797:A,a>3181:R,A} +gz{a>2501:R,x>662:R,A} +gs{m>2349:pbh,xc} +cxt{m<648:A,R} +qr{s>3439:A,s<3200:A,s>3359:R,R} +mvk{x<310:A,A} +rfx{a<3471:pb,jrp} +df{a>2425:R,a>2173:A,m<2169:A,A} +lkv{x<1956:R,m>2601:jvg,zvm} +fgv{a>3335:R,a>2798:hck,pqd} +tn{a>3644:R,m>3271:R,R} +vhl{m>3441:pd,lt} +lg{x>214:xjz,jmz} +dkl{m>979:R,x>271:R,a<2808:A,R} +pdp{s>2793:R,A} +jjf{a>3211:R,A} +tv{s<2116:sx,xsq} +gnt{m>1411:R,x<2631:A,x>3267:A,R} +lnj{a>2864:R,A} +jd{x<275:cfn,s>860:jzc,mvk} +zzd{x<1338:A,a<3957:R,A} +xlx{m<789:jqs,dpd} +hql{s<2258:cb,x>815:knq,x>758:vlq,chj} +qsv{m<2600:A,cg} +bb{a>2571:rth,m>1465:A,x<3017:R,cp} +dz{a>2559:gs,qf} +ps{s>3207:R,gkt} +mf{x<611:R,A} +gp{m>2489:zdd,x>227:R,gnc} +hv{a<3335:R,a<3515:A,R} +klr{x<295:A,m>520:R,m>218:A,A} +zq{x>2372:A,R} +zf{a>1674:R,cn} +lm{x<1313:hgj,txn} +npz{s>1686:rt,kt} +qdh{a<2898:R,x>2218:R,A} +pz{x<2285:A,A} +hdf{m<2720:A,A} +bmc{x>3617:rcl,hsb} +zh{s<1038:A,a>2811:R,R} +zfz{x>2711:R,A} +sgr{a>3615:R,m>1350:jjj,a<3585:A,A} +qvk{s>2967:R,m>3342:A,A} +pqd{s<99:A,s<208:A,x<2116:R,R} +tbd{x>3755:A,a>441:R,A} +nn{x>1301:fln,pdp} +hxd{m>3170:R,m<2811:R,x<3367:R,R} +fk{x>3114:nsg,dmq} +vzf{x>2720:ms,s>481:mhr,s<294:fgv,nqz} +lnn{s<2149:R,x>3515:tbd,a<342:xft,zcz} +tss{s>3258:A,A} +sh{a>1883:qm,m>3431:A,chx} +qj{a<3876:A,x>836:R,R} +vl{s<2783:R,m<1099:R,x<1473:A,A} +bkt{a>3162:A,s>3117:A,x>215:A,A} +jh{x>101:R,s<1379:A,s<1659:R,R} +zcp{s<611:ff,qkd} +cr{s>772:kr,m<1018:lxl,vzf} +ms{s>407:zt,x>3417:R,chq} +jm{s<1028:A,R} +bn{m<3021:vzz,m<3604:qvk,x<271:fgc,R} +ngl{s>3536:sbr,s>3350:qdh,A} +zsf{m>1545:A,x>1434:R,a<3918:R,A} +ggp{s>585:R,R} +kr{m<1070:vfc,zp} +kks{a>1629:R,a<1563:R,a<1592:A,R} +btt{a>801:A,R} +jsj{s>3393:A,x<3185:R,A} +zgx{m<855:xl,A} +gt{x<259:R,A} +gqx{x<621:A,a<2443:hx,gz} +gnk{a<2992:R,R} +vc{m>2396:xx,cl} +hhp{m>1027:sgr,ph} +chr{x<2230:R,x<2596:R,R} +qkd{x>797:A,x<297:A,s<793:R,A} +zsv{x>3189:A,s>3280:pz,x<2182:A,jxg} +bmz{x>286:A,R} +rcl{s<3551:R,a>1235:R,A} +sxl{a<1497:R,x>1555:A,R} +xmv{x<2697:shm,m<2582:bl,st} +fd{a<2818:R,R} +jgq{x<3411:R,R} +zj{a<2947:A,R} +mgb{x>2219:A,s>580:A,R} +jjs{m>2508:pj,smp} +mfd{s>3169:R,x>3872:R,R} +kpn{a<3544:R,a>3555:R,R} +lq{m>3447:A,A} +bfq{s>1868:A,qpt} +hlc{m>3423:rnm,a<1561:A,nv} +zn{x<915:A,m<570:A,a>3454:A,A} +zmq{a>2577:A,s<2162:R,a<2036:R,R} +sqz{s<1195:A,R} +jsd{m<1634:vs,R} +dmq{m<1655:A,A} +nhl{a<2744:A,A} +mkm{s<482:A,s>608:A,R} +rc{m>234:A,x>2208:R,m>97:R,A} +zz{a>3346:vlc,a<2753:qqc,s>276:fx,rc} +js{a>3452:R,m<3619:A,R} +tj{a>1494:R,m<658:R,R} +qhd{s<2443:mdz,znr} +shv{m<2846:A,x>2878:A,A} +ttn{a>3182:R,a>3140:R,x<475:R,R} +ngp{x>3141:A,A} +pcn{x<1006:R,s>520:A,A} +ngq{m<1256:R,s>1251:R,a>658:R,R} +fkd{a<3655:dd,a<3774:cfx,s>2066:qmk,fk} +qzk{a>3335:R,R} +dx{m<2588:zcp,a<2083:sh,x<601:rrd,fh} +qc{x<432:zh,s>956:R,A} +fm{s<642:R,m>2905:lq,dcp} +rr{s>2991:xmv,ths} +dcp{a>2785:A,s<1372:R,x>674:R,A} +bf{s<3336:A,a<1863:A,R} +glx{x>2156:R,nq} +rxv{s<984:A,R} +plp{s>2690:A,a>3040:R,x<1194:A,R} +zdd{x<411:A,s<2583:A,s<3374:R,R} +sbp{x>2442:R,m>802:A,a<1990:A,A} +rzc{m>1519:R,a>2789:A,R} +hgj{x>992:kbh,a>2782:hql,mdb} +gc{m>3015:A,a<3333:A,x<1181:R,A} +xh{a>3215:A,x<3863:qtm,lnj} +jdx{a>296:hz,s>2019:A,a<185:R,R} +ftz{a<2615:A,A} +sr{a>3503:A,m<3116:R,vt} +bz{m<1363:A,a<3918:R,x>347:A,A} +lxl{m>375:ts,x>2633:ssr,zz} +rpl{a<3086:zg,km} +rcc{a<3086:lx,x<186:A,x<206:jjf,bkt} +xjz{s>2664:dkl,m>1134:rzc,a<2824:klr,R} +kf{m>2364:jp,clb} +chs{s>2600:qd,R} +td{a>2469:A,a>2389:A,x>480:A,R} +st{m<3511:R,x<3456:R,s>3602:cvj,rpd} +hmq{a>2111:A,x>1851:R,A} +xc{x<505:zr,pl} +th{x<582:pm,lk} +sn{m<2549:R,s>2203:R,dlr} +chx{m>3054:A,a<1763:R,A} +kk{m>3497:A,a<1434:A,R} +xj{a>2832:lkb,s<3601:A,s>3811:rbp,rfg} +ncd{a<2175:R,R} +dmv{x>1035:A,m<796:R,x>598:jl,bz} +zdz{s>3645:R,x>2044:R,a<2560:R,xv} +bj{x>1208:R,x<1157:R,m>1150:A,R} +sbr{m<3368:R,R} +kx{x<3147:vdh,jvl} +kv{m>3555:bmz,x>265:sl,A} +qd{x>1553:A,a>2834:A,s<3385:A,R} +cxs{s>1563:cxt,x>2102:A,bs} +lt{s<1846:A,x<3520:R,x>3795:R,nkk} +sv{m>3685:R,a>2243:R,R} +ft{a<963:rxt,x>2779:A,x<2244:A,lzv} +rl{a<1094:rr,s>2736:bbb,s>1976:rhb,fr} +jn{x<583:ttn,s<1225:A,A} +jxl{a<2453:rxj,a>2766:ngl,zfp} +cvs{m>285:R,A} +jqh{a<2775:dvm,gbn} +dg{a<2815:A,R} +jvl{x>3689:xh,x<3456:mjp,znq} +gnc{x<140:R,x<171:A,R} +fkh{a<3335:R,A} +vrm{m>937:A,m<448:R,R} +scz{m<2202:qk,gp} +gvq{s<123:A,m<3059:A,a<3441:A,A} +mdb{m>1624:gpj,hf} +xsc{x<1257:bbn,x<1486:A,sxl} +dp{m<1786:A,a<3541:R,A} +sf{m>773:xdr,ffq} +dlr{x<2407:R,s>1899:R,x<2587:R,R} +rk{x>2534:A,A} +rn{s<2830:A,hbb} +jvg{s>3506:A,m>2651:A,m>2621:A,R} +hfg{m>2738:zdz,a>2232:lkv,fvs} +lzv{s<480:A,A} +tqf{m>2290:ssz,xb} +vmf{m<1433:qhx,m>2129:jcz,a<970:xk,dck} +gv{m>563:R,x>1087:bd,m<346:R,vz} +fvs{s>3483:A,a<1973:bf,x>1995:ghn,hmq} +tqk{m<963:R,a>2859:R,A} +rx{x<977:nnk,bqr} +rvm{x>3305:A,m<1917:R,R} +clb{x>1123:R,chh} +pm{s>967:A,vbd} +zcz{a<501:R,R} +fsz{a>2745:R,R} +nfq{s<1487:jbm,a>1745:jjb,rl} +hdh{m>3509:A,s<1411:R,m<3227:A,A} +dgv{m>2115:A,A} +ccf{x>582:sxr,s>2966:qr,s<2421:btt,vmf} +kbh{x<1100:hgk,m>2034:smc,bj} +dd{m<2080:ct,s>2201:rk,hv} +ff{s>381:R,x<841:R,R} +gtx{s<890:A,m<3503:A,x>2000:A,R} +bx{m<3245:R,m>3522:zfz,x<2768:tc,R} +cbz{s<800:kpf,vr} +hjj{a<1141:R,s<3290:R,A} +nnk{s<496:vls,a<1328:nt,m<2251:R,gtr} +mhr{m>1624:R,m<1228:R,m>1458:ggp,mgb} +grb{s>2354:A,s>824:R,s<393:R,A} +vzz{m>2291:R,m<1985:A,A} +dc{s<2446:A,s>2870:A,s>2640:A,R} +cb{s>956:kb,A} +bkv{s<917:bm,jn} +cmn{a<1575:A,s>2325:A,s<2132:pzh,A} +vq{x>1200:R,m<1709:A,A} +xx{s<2987:R,s>3641:A,m<3099:gnk,A} +skj{x<2732:pgx,x>2863:pqn,a>2109:R,A} +qk{x<433:R,x<540:grb,s>2612:dp,mf} +nb{a<3379:dgv,x>433:xqb,mzt} +skd{s>85:R,a>3825:R,s>57:bsr,vj} +bsr{a<3615:R,A} +bqr{m<2638:A,kk} +gmm{s<271:R,R} +ssr{m>170:mkm,A} +xr{x>1412:R,R} +dpd{s>2570:rz,a<2463:ndl,m<1077:tqk,fsz} +cg{x>2240:R,s>3092:A,s<2882:R,A} +zt{s>605:R,m<1978:R,x<3468:A,A} +gbn{a>2840:A,x>606:R,A} +sk{s>627:A,R} +xv{s<3310:A,x<1827:R,R} +jvb{m>2641:rhf,x<598:dsq,x>615:R,nr} +dbk{a<3270:R,s<3854:A,R} +ld{x>1033:A,s<1042:A,A} +hz{s>2156:A,R} +hgm{a>3479:zsv,a>3293:jsd,bg} +sd{s<1388:R,m<220:A,a<3336:A,R} +ks{x<3304:R,A} +cp{x<3510:A,s>2786:A,R} +mc{x<138:tx,m<1731:lg,nd} +grf{a<3910:dt,zzd} +tm{m>2653:A,R} +znm{x>3272:R,tj} +qtm{a<2683:A,m<3283:R,A} +cpj{x>523:A,m>2682:A,m<2527:R,A} +vx{x>2368:A,A} +kp{x>444:R,x<233:R,A} +vlq{a>3107:tm,s>3354:A,m<2037:R,R} +mzn{m>2863:R,A} +zb{s>1752:R,x>1070:zgf,sk} +pqn{m<2758:A,R} +lsq{m<3507:A,s<957:R,R} +krr{a<3740:R,R} +czn{a>3163:R,m<1999:R,a<3012:A,R} +nkk{s<2070:R,R} +nrt{s<1315:A,x<2219:R,A} +ds{a<1180:hjj,m<1480:hxc,pf} +xb{x<928:R,s<680:dpt,ngq} +mj{a<2118:R,R} +kpv{x>329:A,A} +dpt{x<1220:R,R} +vls{a<1332:A,a>1469:A,R} +cs{x>1439:R,s>709:A,R} +tl{a>1243:jsj,ds} +xbt{x>1513:A,fz} +hpt{m<2917:R,m<3336:R,R} +fr{m<1904:hdc,xdt} +dsl{x<891:R,a<3061:A,A} +ph{m>522:A,A} +tck{a>3652:zdg,a<3466:vvc,m<1552:gl,pv} +lk{x>628:A,x<605:R,x>614:R,A} +nj{s>2734:A,R} +khd{a>2723:hm,x<1375:lxg,a<2580:A,zx} +vvc{x<813:nb,s<1759:bbv,a<3401:kf,sg} +fh{m<3059:R,sv} +rt{m<2548:ccf,bqs} +dtv{s>2651:njc,kpn} +db{s>1037:R,s>793:A,x<3290:A,A} +rfg{x>2488:R,A} +rxj{a>2073:fxv,A} +zgf{a<3590:R,R} +lxg{a<2574:R,m>3113:A,a>2644:R,A} +pp{x<1117:zn,a<3445:A,R} +hk{a<3058:A,R} +cps{x>673:gv,a<3514:lf,dtv} +bl{m<1269:A,s>3432:A,s>3277:A,cml} +rhb{m<2194:sf,zjt} +rth{s<2408:R,m>1515:A,R} +vs{x>2539:A,A} +znq{m>3125:R,A} +hzc{m>1851:mv,x>716:qg,jx} +tzb{m>3238:tg,xxd} +jxd{a<2457:A,A} +cn{s<3324:A,A} +qqc{x<2085:R,m<164:A,m>259:A,R} +rbp{m>2847:A,m<2787:A,R} +jjj{x>876:A,a<3595:A,R} +smc{s<1533:R,a>2843:plp,x<1198:R,pms} +ckf{s>1717:A,s<1570:R,R} +kl{a<2275:A,A} +fl{s>2371:tzb,vhl} +rz{a<2450:R,s>3365:A,R} +rjv{s<1810:A,m>758:A,s>2893:R,R} +hx{x<671:A,a>2389:R,x>691:R,R} +jp{s<2734:gc,s>3506:A,R} +bnt{m>837:A,m>433:R,m>254:R,R} +hgk{a<2704:A,a>3062:A,nxg} +txn{m>2615:ktj,tv} +pgx{a>1994:R,x>2611:R,A} +xxd{m>2723:A,s<2919:zvg,m>2567:R,vm} +gtr{s>886:A,a<1457:R,R} +jcz{s>2754:R,a>1065:R,a<523:A,A} +chq{x<3072:A,x<3293:R,R} +clz{s<3150:fkd,s>3490:rfx,hgm} +hck{x>2194:R,s>122:A,A} +vd{m>1534:jjs,a>3770:kmt,cj} +qzn{x>1103:R,s<2513:A,A} +pj{m>3377:A,A} +tc{a>3418:R,R} +kt{a<1141:tqf,s>1093:hzc,a<1584:rx,dx} +gf{a<3431:A,A} +jx{s<1412:vrm,s>1565:A,dm} +vrl{x>386:xz,R} +mz{a<2492:A,A} +mkg{s>1805:vc,a>3085:bkv,a<2882:dnt,th} +ns{a>3913:R,bdr} +kq{s<2373:A,bt} +jcs{s>2567:R,s<2521:A,R} +jbm{a<2334:cbz,m<2533:cr,s<516:rpl,kx} +pjm{m<2956:A,pcn} +nt{a>1236:A,m<2027:A,R} +rbf{s<846:R,m>2754:hdh,x<73:qfz,jh} +hf{s<2598:cvv,A} +cl{s>3154:hk,a<2910:dc,m>1368:czn,ccj} +rh{s>2442:jxd,s<2047:ckf,s>2249:df,A} +vj{s<31:R,a<3675:R,a<3727:R,A} +qhx{a<1403:R,s<2780:A,R} +hsb{s<3410:R,a<1336:A,A} +vfc{x<2652:kh,s>1086:bjc,m>636:R,A} +cd{s<1248:R,a>2984:R,A} +nhf{a<3351:bk,gvq} +jmz{x>176:R,a>2694:bnt,a>2565:R,vp} +cfl{a>1330:sbp,s<1255:mkx,m<858:R,pqm} +lkb{a<2993:R,m<2845:R,A} +jjb{a>3094:clz,m<2393:sxj,x<3056:gvv,fl} +rrd{a<2231:A,m>3181:kl,x>325:R,dkj} +fj{m>3651:R,gtx} +hdc{x>2461:znm,s>1764:bfq,s>1606:zgx,cxs} +kmt{x<1020:xjj,s<2087:xr,A} +cj{m<730:txd,x>819:A,kp} +xqb{s<1587:rb,a<3436:R,vpg} +xq{a<3606:R,x<329:R,R} +tq{s<2112:A,s<3362:R,A} +zzp{x>2975:sqz,m<2520:R,R} +pqm{m<1122:A,s<1390:R,a>875:R,A} +jq{x<3451:R,cf} +xjj{s>2372:R,x<668:A,s>1023:R,R} +tfq{s>3172:R,m>1532:R,A} +bqs{x>919:xsc,vrl} +thp{a<2602:R,m<2928:R,x<247:A,A} +dkj{x>141:A,m<2971:R,A} +pzx{x>2642:A,a<3478:A,R} +ths{x<2809:sn,a>725:qvl,m<1362:jdx,lnn} +qg{a>1868:mj,m>836:A,zxc} +tx{s>1835:tph,m<2098:px,rbf} +vf{a<2428:skj,m<2736:pg,x>2633:shv,xj} +km{s>209:zqs,a>3504:skd,x<2757:glx,nhf} +kj{s<3287:nj,thp} +cml{m<1837:A,s<3096:R,a>494:A,R} +rlc{m>474:R,m>251:A,x>2484:A,A} +txd{s>2156:R,A} +gl{a>3563:hhp,cps} +ccj{m>569:A,s<2508:A,R} +pf{m>3126:A,x>3194:R,R} +pbh{m>3239:mm,cpj} +zjt{a>1394:cmn,lv} +drm{a>1592:A,R} +bdr{a<3869:R,m>2643:A,x>1082:A,A} +jqs{s>2614:rlc,dq} +mv{x<623:R,qlj} +nr{m<2107:R,R} +zdg{a<3847:vd,s>2594:pck,ln} +xk{s<2671:A,m>1780:R,A} +px{s<685:zzq,s<1444:A,a<2772:R,A} +znr{m>2244:R,a>2352:A,x<3509:A,R} +bk{s>79:R,x<3271:R,A} +ktj{x<1421:khd,m<3145:xbt,x>1493:chs,zj} +hb{s>3741:R,s>3440:A,gm} +ffs{s<1003:A,m>2845:cd,x>2032:nrt,hdf} +dl{x<3044:R,m>1590:A,m<588:A,A} +vg{m<1260:A,s<201:A,a>302:A,A} +zfp{s>3617:chr,R} +qpt{x<2038:R,s<1806:R,x>2275:R,R} +jrp{m<1617:krr,s<3809:A,A} +zqs{s>394:pzx,tn} +knq{x>908:R,x<872:R,dsl} +bbb{x<2800:xrs,a>1484:jpt,x>3526:vrp,tl} +fz{s<1941:R,R} +nm{a>2984:A,m>3291:A,A} +rrl{s>2543:A,a>1195:A,a>1143:R,R} +jpt{a>1614:zf,m<2537:jq,hlc} +mb{s>2480:A,a>2039:R,A} +flg{x<2119:bth,m<3180:mz,a>2238:fhg,kq} +qlg{a>3593:R,A} +nd{s<1985:jd,a<2754:kj,x<224:rcc,bn} +nsg{x>3601:R,R} +pg{a>2794:A,m>2531:A,tk} +vpg{a<3448:A,x>601:A,m>2200:A,R} +qq{a<3599:qlg,xq} +mjq{m>906:A,R} +tk{s<3534:R,A} +tf{x<2430:A,m<2307:A,x<2765:R,A} +bd{m>361:R,a>3529:A,R} +xsq{a>2809:vl,a<2624:tfq,m<1412:mjq,nhl} +bs{m<1209:R,x<1880:A,A} +fn{a<3588:kv,a<3614:qq,s<1821:cls,rn} +xt{m<2535:A,drm} +pzh{x>3042:R,x>2454:A,R} +sx{x<1429:bvs,rxv} +vz{x<933:R,A} +nq{m<3063:R,A} +dm{m>867:R,A} +sdr{s>1536:zsf,cnc} +bvs{x<1372:A,x<1409:R,m>1611:A,R} +zxk{m>1166:tb,m>571:fkh,sd} +nxg{x>1061:R,x<1037:R,x>1045:R,R} +gq{x<350:mc,a<2674:dz,mkg} +vrp{x<3760:bmc,ddj} +bbn{x>1096:A,m<3379:A,s>2981:R,A} +sc{s>2125:R,A} +vlc{s<330:R,x>2068:R,R} +pl{s>2521:R,x<590:R,R} +shm{m<1775:R,a<392:R,khx} +zvg{s>2600:A,R} + +{x=864,m=2222,a=195,s=384} +{x=901,m=448,a=737,s=1768} +{x=2926,m=108,a=66,s=710} +{x=447,m=2075,a=739,s=2} +{x=597,m=681,a=975,s=28} +{x=2159,m=1819,a=2019,s=618} +{x=384,m=15,a=1695,s=142} +{x=76,m=739,a=729,s=42} +{x=1070,m=3064,a=2917,s=2856} +{x=1584,m=1118,a=1134,s=1906} +{x=23,m=7,a=309,s=260} +{x=987,m=52,a=513,s=2353} +{x=2128,m=133,a=1707,s=2272} +{x=1721,m=9,a=10,s=2757} +{x=56,m=1928,a=2447,s=651} +{x=358,m=1514,a=208,s=2003} +{x=991,m=160,a=1850,s=29} +{x=135,m=900,a=257,s=1885} +{x=1594,m=1262,a=292,s=773} +{x=958,m=762,a=1835,s=129} +{x=204,m=851,a=781,s=51} +{x=393,m=77,a=65,s=1317} +{x=102,m=2858,a=694,s=133} +{x=1558,m=357,a=508,s=289} +{x=185,m=111,a=305,s=2389} +{x=877,m=2013,a=2980,s=2509} +{x=2494,m=1224,a=54,s=939} +{x=336,m=1421,a=2434,s=2183} +{x=375,m=713,a=2313,s=459} +{x=2899,m=54,a=334,s=1951} +{x=452,m=585,a=16,s=531} +{x=220,m=566,a=192,s=346} +{x=1556,m=1173,a=7,s=611} +{x=793,m=1179,a=549,s=16} +{x=2730,m=545,a=888,s=2861} +{x=8,m=136,a=1607,s=40} +{x=641,m=2099,a=2295,s=745} +{x=2342,m=100,a=1010,s=1306} +{x=3432,m=432,a=658,s=645} +{x=121,m=1563,a=1172,s=1807} +{x=60,m=1124,a=859,s=595} +{x=39,m=2653,a=1212,s=295} +{x=1810,m=2143,a=250,s=899} +{x=1049,m=1680,a=2472,s=66} +{x=1305,m=645,a=1311,s=18} +{x=32,m=1575,a=933,s=88} +{x=2066,m=2204,a=2147,s=48} +{x=806,m=263,a=862,s=406} +{x=1218,m=142,a=2380,s=2080} +{x=199,m=1608,a=815,s=504} +{x=1355,m=844,a=312,s=186} +{x=409,m=1271,a=2737,s=620} +{x=652,m=409,a=315,s=1051} +{x=2044,m=149,a=2045,s=3394} +{x=1787,m=496,a=142,s=313} +{x=70,m=78,a=953,s=872} +{x=1072,m=1733,a=541,s=115} +{x=254,m=302,a=1483,s=1537} +{x=239,m=1242,a=929,s=15} +{x=517,m=932,a=1899,s=844} +{x=2926,m=364,a=595,s=1294} +{x=1358,m=68,a=34,s=1728} +{x=2065,m=312,a=3623,s=181} +{x=414,m=451,a=876,s=80} +{x=1689,m=843,a=139,s=245} +{x=1136,m=289,a=2256,s=2537} +{x=99,m=1094,a=980,s=382} +{x=1610,m=751,a=456,s=143} +{x=717,m=113,a=530,s=502} +{x=2050,m=1025,a=431,s=48} +{x=3411,m=87,a=306,s=2865} +{x=1894,m=19,a=46,s=3399} +{x=574,m=1848,a=599,s=1924} +{x=3,m=1021,a=26,s=1166} +{x=776,m=1882,a=1946,s=453} +{x=1170,m=381,a=957,s=601} +{x=1703,m=200,a=298,s=1246} +{x=117,m=43,a=286,s=1131} +{x=2642,m=18,a=552,s=8} +{x=333,m=458,a=518,s=1260} +{x=2391,m=794,a=1032,s=1156} +{x=1439,m=629,a=1737,s=268} +{x=70,m=465,a=603,s=1399} +{x=312,m=648,a=875,s=785} +{x=3106,m=348,a=45,s=198} +{x=2991,m=18,a=1424,s=436} +{x=397,m=1490,a=520,s=53} +{x=553,m=232,a=2916,s=781} +{x=1404,m=738,a=925,s=513} +{x=757,m=619,a=442,s=43} +{x=1747,m=924,a=11,s=430} +{x=3644,m=201,a=693,s=33} +{x=336,m=141,a=1473,s=2008} +{x=1723,m=1595,a=91,s=282} +{x=768,m=426,a=895,s=573} +{x=312,m=604,a=12,s=361} +{x=2900,m=23,a=748,s=578} +{x=1100,m=116,a=2804,s=2407} +{x=121,m=94,a=937,s=514} +{x=61,m=2592,a=1518,s=855} +{x=356,m=64,a=1167,s=732} +{x=1538,m=702,a=444,s=524} +{x=1071,m=230,a=1273,s=954} +{x=1538,m=1389,a=963,s=681} +{x=3560,m=407,a=606,s=1015} +{x=276,m=534,a=14,s=2920} +{x=122,m=1529,a=3159,s=302} +{x=764,m=529,a=1535,s=1743} +{x=1015,m=491,a=1323,s=1241} +{x=831,m=1667,a=2553,s=146} +{x=841,m=203,a=2621,s=696} +{x=1586,m=403,a=1308,s=1892} +{x=2119,m=47,a=446,s=124} +{x=2321,m=2184,a=309,s=735} +{x=44,m=99,a=2037,s=1730} +{x=917,m=192,a=31,s=1104} +{x=1135,m=2330,a=2073,s=1651} +{x=1149,m=907,a=51,s=79} +{x=299,m=330,a=2588,s=1829} +{x=203,m=1847,a=205,s=696} +{x=418,m=498,a=1030,s=307} +{x=1560,m=1398,a=54,s=723} +{x=1232,m=39,a=216,s=648} +{x=1449,m=527,a=2553,s=39} +{x=2579,m=154,a=208,s=1099} +{x=213,m=1557,a=2636,s=202} +{x=1787,m=1475,a=1407,s=1761} +{x=1057,m=33,a=29,s=1488} +{x=46,m=2348,a=2573,s=1457} +{x=2080,m=352,a=247,s=97} +{x=166,m=10,a=938,s=1203} +{x=375,m=3545,a=21,s=2507} +{x=1525,m=1748,a=63,s=511} +{x=4,m=712,a=1182,s=2085} +{x=460,m=996,a=1,s=2354} +{x=538,m=1452,a=1066,s=2980} +{x=328,m=488,a=2291,s=1542} +{x=787,m=2124,a=649,s=281} +{x=890,m=17,a=1812,s=99} +{x=950,m=308,a=67,s=87} +{x=792,m=500,a=64,s=546} +{x=194,m=524,a=849,s=1060} +{x=24,m=492,a=1727,s=1628} +{x=3080,m=427,a=11,s=300} +{x=910,m=2320,a=2178,s=225} +{x=100,m=586,a=2247,s=1402} +{x=1277,m=400,a=1053,s=11} +{x=442,m=450,a=1063,s=1664} +{x=1360,m=658,a=1705,s=306} +{x=60,m=1215,a=1012,s=2971} +{x=37,m=973,a=1351,s=2900} +{x=755,m=1798,a=41,s=1999} +{x=456,m=565,a=13,s=18} +{x=1068,m=108,a=1261,s=216} +{x=179,m=559,a=1871,s=1357} +{x=760,m=1634,a=1753,s=502} +{x=33,m=466,a=1114,s=112} +{x=443,m=1297,a=280,s=1777} +{x=2608,m=1971,a=651,s=2930} +{x=244,m=1227,a=1578,s=15} +{x=1063,m=635,a=2276,s=331} +{x=321,m=1326,a=2474,s=359} +{x=1412,m=186,a=2378,s=750} +{x=1007,m=463,a=211,s=520} +{x=2193,m=158,a=1966,s=952} +{x=1047,m=348,a=37,s=88} +{x=3034,m=1692,a=248,s=1957} +{x=508,m=1601,a=213,s=712} +{x=640,m=386,a=1410,s=2062} +{x=683,m=855,a=503,s=3485} +{x=574,m=28,a=978,s=287} +{x=4,m=1189,a=20,s=330} +{x=1716,m=1734,a=166,s=547} +{x=903,m=1023,a=220,s=2002} +{x=2105,m=2151,a=753,s=216} +{x=357,m=1260,a=242,s=32} +{x=382,m=1261,a=3644,s=2198} +{x=451,m=1290,a=1901,s=446} +{x=510,m=391,a=1064,s=1313} +{x=1279,m=40,a=1825,s=946} +{x=21,m=1879,a=1728,s=429} +{x=50,m=183,a=1799,s=895} +{x=2200,m=2092,a=827,s=1450} +{x=230,m=1800,a=1178,s=1276} +{x=747,m=1987,a=838,s=1589} +{x=2113,m=613,a=727,s=26} +{x=34,m=305,a=1750,s=1402} +{x=394,m=3102,a=229,s=339} +{x=247,m=1734,a=102,s=847} +{x=819,m=1651,a=3293,s=1663} +{x=459,m=2156,a=175,s=296} +{x=1194,m=2195,a=324,s=297} +{x=510,m=47,a=9,s=1406} +{x=478,m=18,a=114,s=643} +{x=278,m=2041,a=185,s=237} +{x=2208,m=263,a=252,s=70} +{x=22,m=956,a=1030,s=240} +{x=164,m=466,a=3598,s=1158} +{x=2901,m=267,a=108,s=455} +{x=569,m=1421,a=1176,s=1237} \ No newline at end of file diff --git a/aoc2023/src/day2/input.txt b/aoc2023/src/day2/input.txt new file mode 100644 index 0000000..34a6672 --- /dev/null +++ b/aoc2023/src/day2/input.txt @@ -0,0 +1,100 @@ +Game 1: 1 green, 4 blue; 1 blue, 2 green, 1 red; 1 red, 1 green, 2 blue; 1 green, 1 red; 1 green; 1 green, 1 blue, 1 red +Game 2: 2 blue, 2 red, 6 green; 1 red, 6 green, 7 blue; 10 green, 8 blue, 1 red; 2 green, 18 blue, 2 red; 14 blue, 3 green, 1 red; 8 green, 1 red, 9 blue +Game 3: 6 green, 5 blue, 9 red; 4 blue, 1 green, 13 red; 9 green, 14 red, 1 blue +Game 4: 14 green, 3 blue, 16 red; 20 red; 4 green, 2 red, 1 blue; 10 blue, 11 green, 18 red; 3 red, 3 blue, 6 green; 2 green, 18 red, 9 blue +Game 5: 5 green, 4 blue; 1 red, 3 blue, 2 green; 4 green, 2 red, 15 blue; 11 blue, 8 green, 4 red; 4 red, 3 green; 4 red, 3 green, 7 blue +Game 6: 6 blue, 10 green; 2 red, 6 green, 2 blue; 4 red, 4 blue, 1 green; 2 blue, 7 green, 2 red +Game 7: 14 green, 3 red, 2 blue; 5 blue, 3 green, 2 red; 1 green, 3 blue +Game 8: 7 red; 3 blue, 9 red, 1 green; 5 green, 5 blue, 7 red; 1 red, 2 blue +Game 9: 3 green, 4 blue, 1 red; 3 blue, 12 green, 18 red; 7 green, 9 red, 8 blue; 2 blue, 10 red, 12 green; 4 blue, 1 red, 1 green; 4 blue, 6 green, 6 red +Game 10: 2 blue, 4 green, 2 red; 7 green, 4 red; 5 red, 8 green +Game 11: 1 blue, 10 green, 15 red; 1 blue, 2 green, 2 red; 5 green, 10 blue, 8 red; 13 red, 7 blue; 1 red, 9 green, 4 blue; 9 blue, 9 red, 8 green +Game 12: 1 green, 10 red, 3 blue; 14 red, 1 green, 4 blue; 6 red, 3 green, 12 blue; 13 blue, 1 green, 18 red; 4 green, 14 red, 7 blue +Game 13: 1 red, 3 green; 2 green, 1 red, 5 blue; 1 blue; 1 green, 7 blue, 1 red; 1 red, 2 green, 7 blue +Game 14: 7 blue, 9 red, 1 green; 8 red, 2 blue; 11 red, 18 blue, 4 green; 2 blue, 3 green, 1 red; 1 green, 8 red, 9 blue; 2 blue, 8 red, 1 green +Game 15: 8 blue, 3 green, 15 red; 13 red, 10 blue; 2 red +Game 16: 1 green, 1 red; 1 blue, 2 green, 2 red; 1 blue, 4 red, 1 green; 3 green; 2 blue, 3 green, 4 red +Game 17: 1 green, 3 red, 14 blue; 1 red, 2 blue, 2 green; 3 red +Game 18: 1 red, 2 green, 8 blue; 2 blue, 14 red; 4 blue, 2 red, 2 green; 6 red +Game 19: 2 red, 11 blue, 18 green; 3 red, 6 green, 3 blue; 7 green, 1 red, 10 blue +Game 20: 10 red, 1 blue, 4 green; 4 green, 3 blue; 10 green, 13 red, 4 blue; 2 red, 7 green; 4 red, 3 blue, 5 green; 13 red, 1 green, 4 blue +Game 21: 20 red, 4 green, 5 blue; 10 red, 11 green, 4 blue; 1 red, 8 blue, 14 green; 11 green, 8 blue, 15 red; 8 blue, 2 green, 13 red +Game 22: 2 red, 11 blue, 4 green; 1 blue, 3 red, 6 green; 6 green, 1 red, 1 blue; 4 green, 7 blue, 3 red; 11 blue, 6 green, 4 red +Game 23: 6 green, 3 red, 1 blue; 17 green, 11 red; 1 red, 2 blue, 13 green; 13 green, 19 red +Game 24: 1 blue; 12 red, 1 blue; 1 red; 12 red, 1 green, 1 blue; 11 red, 1 blue; 12 red, 1 green +Game 25: 12 blue, 6 red, 3 green; 8 green, 14 blue; 11 green, 5 blue, 6 red; 4 red, 12 blue, 8 green +Game 26: 15 red, 13 green, 9 blue; 9 blue, 8 green, 7 red; 2 green, 6 red, 3 blue; 1 blue, 7 red, 3 green; 13 blue, 4 green, 18 red +Game 27: 9 blue, 5 red; 15 red, 12 blue, 3 green; 12 red, 12 blue, 1 green +Game 28: 18 red, 4 green; 4 green, 6 red; 1 blue, 6 green, 19 red; 9 green, 17 red; 4 green, 5 blue, 18 red +Game 29: 7 green, 6 red, 6 blue; 6 blue, 19 red, 4 green; 4 green, 4 blue, 13 red; 5 blue, 15 red, 10 green; 2 green, 6 blue, 5 red; 8 red, 10 green, 6 blue +Game 30: 1 green, 13 red, 12 blue; 1 red, 2 blue; 11 blue, 1 red, 1 green +Game 31: 8 green, 18 blue, 17 red; 4 red, 8 green, 6 blue; 9 blue, 7 green; 3 green, 1 blue, 12 red; 5 red, 10 blue, 11 green +Game 32: 17 red, 17 green, 7 blue; 18 red, 16 green; 1 blue +Game 33: 16 blue, 3 red; 9 blue, 1 red, 2 green; 3 green, 7 blue; 1 green, 4 red; 3 green, 1 red, 8 blue; 5 blue +Game 34: 5 blue, 8 red, 1 green; 9 red, 10 blue, 7 green; 1 green, 14 blue; 8 blue, 4 red, 10 green; 15 blue, 8 green, 7 red; 2 red, 6 green, 3 blue +Game 35: 13 red, 9 blue; 7 blue, 16 red, 10 green; 4 red, 6 blue; 3 blue, 12 green, 7 red; 8 blue, 6 red; 10 blue, 3 green, 2 red +Game 36: 1 blue, 9 red, 2 green; 11 red, 3 blue, 2 green; 2 green, 6 red; 8 green, 11 red, 3 blue; 4 green, 7 blue, 11 red; 9 green, 8 red, 2 blue +Game 37: 8 green, 3 blue, 4 red; 14 blue, 10 green, 3 red; 19 green, 2 blue, 7 red +Game 38: 2 green, 3 red, 3 blue; 3 green, 9 red; 13 blue, 8 red; 6 red, 5 green, 13 blue +Game 39: 8 red, 5 blue; 4 green, 5 blue, 3 red; 18 red, 2 green, 6 blue; 2 green, 5 blue, 17 red; 1 green, 2 red; 5 green, 6 blue +Game 40: 12 red, 4 blue, 1 green; 11 green, 20 blue, 4 red; 10 blue, 4 red +Game 41: 2 green, 2 blue; 2 red, 2 green; 2 green, 2 blue, 10 red +Game 42: 6 green, 3 blue; 2 red, 2 green, 1 blue; 3 blue, 5 green, 6 red; 6 red; 1 blue, 6 green, 12 red +Game 43: 1 blue, 4 green; 1 blue; 2 blue, 8 red, 2 green; 2 blue, 1 red, 4 green; 1 blue, 4 red, 4 green; 4 green, 7 red +Game 44: 8 green, 9 red; 1 red, 2 blue, 13 green; 4 blue, 8 green, 17 red; 13 red, 13 green; 1 red, 9 green; 19 red, 3 green, 3 blue +Game 45: 10 blue, 2 red, 1 green; 6 green, 5 red, 8 blue; 3 blue, 1 red; 4 green, 10 blue, 4 red +Game 46: 3 red, 8 blue; 6 blue, 7 green, 6 red; 6 green, 1 blue, 7 red; 8 red, 1 green, 5 blue; 9 red, 12 blue, 10 green; 7 green, 5 red, 1 blue +Game 47: 5 red; 2 blue, 2 green, 5 red; 3 green, 7 red; 14 red, 3 green, 2 blue +Game 48: 7 blue, 12 green, 2 red; 11 green, 10 blue, 1 red; 1 red, 13 blue, 2 green; 14 green, 2 red, 9 blue; 2 red, 12 green, 3 blue; 2 red, 7 blue +Game 49: 4 green, 5 blue; 9 blue; 10 blue, 5 green, 2 red; 10 blue, 2 red, 2 green; 1 red, 1 green, 4 blue; 2 blue +Game 50: 2 red, 2 blue, 7 green; 7 red, 9 green, 3 blue; 5 red, 10 green +Game 51: 15 red, 9 blue, 4 green; 5 red, 2 blue, 15 green; 4 blue, 3 green, 20 red; 12 green, 1 red, 10 blue; 10 green, 5 blue, 13 red; 9 red, 10 green, 11 blue +Game 52: 3 blue, 12 green, 1 red; 6 green; 1 red, 8 green; 1 blue, 1 green, 1 red +Game 53: 10 green, 7 red, 12 blue; 9 blue, 6 green, 2 red; 8 green, 5 blue, 5 red; 7 blue, 16 green, 11 red; 6 red, 8 blue, 13 green +Game 54: 10 green, 6 blue, 3 red; 6 green, 2 red, 8 blue; 9 blue, 11 green, 2 red; 10 green, 1 blue, 3 red +Game 55: 4 blue, 1 red; 3 red, 7 blue; 12 red, 4 green, 8 blue; 3 green, 5 blue, 1 red; 13 blue, 12 red, 1 green +Game 56: 12 blue, 15 green; 1 green, 7 red, 11 blue; 5 green, 9 blue, 1 red; 8 red, 5 green, 6 blue +Game 57: 4 green, 11 blue, 18 red; 14 blue, 14 red, 16 green; 7 red, 15 green, 3 blue; 18 red, 20 green, 8 blue; 12 blue, 9 red, 16 green +Game 58: 10 blue, 9 green, 8 red; 13 green, 6 blue, 8 red; 8 green, 4 red; 4 blue, 1 red, 18 green; 7 red, 10 green, 10 blue; 15 blue, 10 green, 3 red +Game 59: 17 green, 2 blue, 2 red; 2 blue, 1 red, 8 green; 14 green, 1 red, 1 blue; 15 green, 3 blue, 2 red; 2 blue, 8 green, 1 red; 1 blue, 1 red, 8 green +Game 60: 1 green, 1 blue, 1 red; 4 blue, 3 red, 2 green; 13 green; 2 blue, 2 red, 8 green; 4 red, 12 green, 4 blue; 4 green, 4 blue, 4 red +Game 61: 3 blue, 7 red; 5 blue, 8 red, 1 green; 1 blue, 8 red; 10 blue, 2 red, 1 green; 1 green, 5 blue, 2 red +Game 62: 10 red, 2 green; 8 blue, 7 red, 2 green; 4 green, 2 blue, 10 red +Game 63: 1 green, 3 blue, 5 red; 6 green, 5 blue, 2 red; 3 blue, 7 red +Game 64: 6 red, 20 blue; 4 red, 3 blue, 2 green; 3 green, 19 blue, 6 red; 2 green, 6 blue, 3 red; 13 blue, 5 green, 5 red +Game 65: 6 red, 9 blue, 20 green; 6 red, 16 green, 4 blue; 12 red, 6 green, 5 blue +Game 66: 2 blue, 5 red, 4 green; 13 blue, 2 green; 1 green, 6 blue +Game 67: 4 green, 5 blue, 2 red; 1 red, 14 blue, 6 green; 1 green, 14 red, 5 blue; 18 red, 16 blue; 15 blue, 8 red, 18 green; 1 green, 18 red, 6 blue +Game 68: 1 blue, 9 red, 7 green; 7 red, 1 blue, 6 green; 5 green, 1 blue, 8 red +Game 69: 12 green, 3 blue, 4 red; 9 green, 8 red, 7 blue; 4 blue, 5 red, 10 green; 4 red, 5 green, 7 blue; 9 green, 4 red, 2 blue; 3 green, 13 blue, 1 red +Game 70: 9 red, 1 green, 8 blue; 11 green, 13 blue, 12 red; 3 blue, 5 green, 8 red; 1 red, 14 blue +Game 71: 10 blue; 2 green, 8 blue, 9 red; 5 red, 1 blue +Game 72: 3 green, 5 blue, 5 red; 1 blue, 1 red, 2 green; 4 red, 4 blue, 1 green; 5 blue, 4 red, 1 green; 6 blue, 3 green, 5 red; 5 blue, 1 red, 4 green +Game 73: 3 red, 1 green, 1 blue; 7 green, 2 red, 1 blue; 2 green, 1 blue, 3 red; 1 red, 4 green, 1 blue; 3 red, 5 green +Game 74: 5 blue, 1 red, 4 green; 3 red, 2 green; 4 red, 6 blue; 2 red, 2 blue; 1 green, 4 red, 8 blue; 5 blue, 4 red +Game 75: 3 red, 5 blue, 3 green; 9 green, 6 blue, 7 red; 2 green, 3 red, 12 blue; 14 green, 4 blue, 10 red +Game 76: 1 blue, 7 red, 1 green; 6 red, 1 blue, 2 green; 4 red, 2 green; 3 red, 1 blue; 16 red, 1 green +Game 77: 3 red, 10 blue, 1 green; 4 red, 7 blue, 3 green; 7 blue, 6 green, 7 red; 5 green, 15 blue, 7 red; 12 green, 5 red +Game 78: 6 red, 10 blue, 15 green; 6 green, 11 red, 4 blue; 6 blue, 8 red; 4 blue, 7 red, 2 green; 11 green, 7 red, 11 blue; 3 blue, 14 green, 6 red +Game 79: 14 red, 6 green, 4 blue; 13 red, 6 blue; 6 red, 13 green, 4 blue +Game 80: 8 red, 2 blue, 8 green; 6 red, 10 green, 4 blue; 3 red, 9 green; 2 green, 8 blue, 7 red; 7 blue, 3 red, 11 green; 1 red, 12 green, 8 blue +Game 81: 9 red, 4 blue, 11 green; 1 blue, 4 red, 2 green; 5 red; 3 blue, 2 red, 2 green; 14 red, 12 green +Game 82: 5 green; 2 blue; 2 red; 1 blue, 2 red, 11 green; 8 green, 2 red, 1 blue +Game 83: 3 green, 7 red, 6 blue; 7 red, 7 green, 11 blue; 7 blue, 13 green, 7 red; 12 blue, 10 red, 2 green; 1 green, 11 red, 7 blue; 12 blue, 9 red, 9 green +Game 84: 5 blue, 1 green; 16 green, 4 blue, 8 red; 7 red, 5 blue, 16 green +Game 85: 9 green, 20 blue, 7 red; 19 blue, 14 red, 2 green; 10 green, 2 red, 10 blue +Game 86: 1 green, 3 red, 5 blue; 9 red, 2 blue, 6 green; 8 green, 14 red, 3 blue; 18 green, 2 blue, 7 red; 2 blue, 10 red, 14 green; 17 green, 4 blue, 12 red +Game 87: 4 green, 8 red, 13 blue; 7 red, 13 blue, 4 green; 1 green, 8 blue +Game 88: 9 blue, 11 red; 5 green, 7 blue, 12 red; 10 red, 2 green, 1 blue; 2 blue, 5 red, 5 green; 7 red, 6 green, 9 blue; 1 green, 10 red, 5 blue +Game 89: 7 red, 2 green, 1 blue; 1 blue, 2 green; 6 red, 1 green; 7 red, 1 blue; 3 green, 3 red +Game 90: 8 blue, 2 red, 3 green; 9 green, 4 blue, 3 red; 7 green, 11 blue, 2 red; 13 green, 12 blue, 8 red; 10 blue, 2 green; 5 green, 1 red, 9 blue +Game 91: 2 red, 2 green, 4 blue; 5 blue, 2 red, 16 green; 11 green; 3 blue, 2 red, 8 green; 4 green, 3 blue +Game 92: 8 red, 12 blue, 3 green; 11 red, 10 blue, 6 green; 14 red, 8 green, 14 blue +Game 93: 3 green, 2 red, 3 blue; 3 green, 3 red, 1 blue; 2 blue, 16 red, 3 green; 2 green; 5 green, 2 blue, 2 red +Game 94: 5 red, 2 green; 9 red, 3 blue; 2 green, 2 blue, 5 red; 3 blue, 8 red, 2 green; 8 red, 1 blue, 1 green +Game 95: 3 blue, 4 green, 7 red; 7 red, 1 green, 15 blue; 6 blue, 2 green, 7 red +Game 96: 2 blue, 1 red, 6 green; 7 blue, 8 green; 1 red, 7 green; 2 green, 14 blue, 1 red; 3 blue, 1 red, 7 green; 4 blue, 11 green +Game 97: 2 red, 9 blue, 8 green; 3 green, 5 blue; 6 green, 1 red, 9 blue; 2 red, 13 green, 1 blue; 2 green, 2 red, 2 blue +Game 98: 2 blue, 1 green, 1 red; 4 blue, 5 red, 1 green; 4 blue, 3 red, 2 green +Game 99: 17 red, 2 blue, 4 green; 4 green, 8 red, 6 blue; 5 red +Game 100: 6 red, 4 green; 3 red, 2 blue, 9 green; 1 blue, 5 green, 14 red; 1 blue, 2 red, 2 green; 9 red, 1 blue, 14 green; 2 blue, 11 green, 8 red \ No newline at end of file diff --git a/aoc2023/src/day20/input.txt b/aoc2023/src/day20/input.txt new file mode 100644 index 0000000..6949a60 --- /dev/null +++ b/aoc2023/src/day20/input.txt @@ -0,0 +1,58 @@ +%hb -> mj +%mx -> mt, xz +%xh -> qc +%tg -> cq +%kp -> xz, nj +%mj -> jj, lv +%cq -> jm +%mt -> sj, xz +&jj -> hb, lz, rk, xv, vj, vh, lv +%rm -> bz, xq +%hx -> bz +%xv -> lz +%xx -> kp, xz +%pt -> vx +&xz -> bq, gr, sj, rv, zf +%vx -> gf, cv +%xb -> xz, bq +%xk -> gf, rd +%lv -> zk +&rk -> gh +%kn -> gf, tz +&gh -> rx +%sj -> vp +%jm -> vm, bz +%rr -> rv, xz +%tz -> rz +%gg -> kn +&cd -> gh +%qc -> kh, bz +%kb -> gf +%vp -> xz, xx +%fb -> bz, tg +%rd -> cp +%qn -> vh, jj +%xr -> jj +%tp -> rm, bz +%cp -> gg +&bz -> qx, cq, xh, fb, tg +%qq -> pt, gf +%xq -> bz, hx +%gx -> jj, qv +%bq -> rr +%cv -> gf, kb +%zk -> jj, xv +&zf -> gh +&qx -> gh +%vh -> gx +%qv -> xr, jj +%lz -> qn +broadcaster -> fb, xk, gr, vj +%nj -> xz +%gr -> xz, xb +%kh -> tp, bz +%vm -> bz, xh +%rz -> qq, gf +&gf -> tz, cd, rd, xk, pt, cp, gg +%rv -> mx +%vj -> hb, jj \ No newline at end of file diff --git a/aoc2023/src/day3/input.txt b/aoc2023/src/day3/input.txt new file mode 100644 index 0000000..1903642 --- /dev/null +++ b/aoc2023/src/day3/input.txt @@ -0,0 +1,140 @@ +............830..743.......59..955.......663..........................................367...........895....899...............826...220...... +.......284.....*............*.....$...+.....*...377..................*.......419.............488...*.......*...................*..-....939.. +....%.........976..679.461.7..........350..33.........$.380...$...151.897..........295..#......*....105.....418.............481........&.... +...992.....#......=...../........701................508...*..578........................259...331.................795..945........79........ +.........868........................*.............................17*..........348................441*852........*.....-...........@.....922 +....................*200............311..63................452.......323.#778.*....674....................680......696...372.....*.......... +.......266.......209......589.....=......*...365.........7.*...233.............755....*......644...272........697..*....*.....682..225...... +..836..........................949....607..........&....*..899...*....679.527.........331..........$....788../.....43....89................. +........367.....328.&......%...............680...69..717.......60.......*.*............................*..........................728...264. +........*.........*..119.253.......................................626....129...274............97...679.......752........*.......*....*.*... +........360......471........../.........573-.702.............866...@...........*......772....../........259....*.........430....136.742.543. +.........................../.852...............*...775...............643....455....../...........832....*.....41..535....................... +.............-..........340.................103....*..........$...51*..................74................438......%...776...+.23*..663...... +.15.......806...............990.....................427....924............530.........=..............................*....968.....=....480.. +......#..............@914...*..............*........................%......*................................/.....406.................*..... +....201.........79........592............70.894.....247..513+....367..$299.698......199................-.....223....../.........563....783.. +......................448........489................*.................................*....440...889...715..........351.....39.............. +.138....../766...........*.......................152.........................377....599.......*...*...........................@............. +....%.820.......10*43.670..$87....100*244..@706..........668..319#...........................831.736....@............./..693.....321%....... +......=...930#..................@...................493....*............152......569.................=.914....764.....9.-................... +378$...............&.....854..505.........%........&.....124......12........117.....*591..979..76..133..........+............/..........883. +...............602.141.....*...............770.....................*.........*................../.........874.@....../684....778............ +...........................954.....*397.........................394...........614..307*74..457..............+.514.......................327. +........335*25.....-....31..........................................$...719.................*........6..214................878.............. +...............86*.269....*...480........................*....140..947....*..&.......................*......972..............*..364*274..... +501-.......805..........285...*..................6....335.167...*........18...332.............741...127......+.............246.............. +......616.......752*276.....470.848..599.........*............779..=................539...961..$.........204.......-..201*.....%............ +.491.....*..521.........*94.......*.-.....&...163........285/......51..99*......474..*...-.......945.....&......839.......140...201.....$... +....$.795..*........539.........500.......662.............................421....*...459..../.......*407.............../................471. +...........110.......*...............252.............................%..........730......551..509.............824...230....569....48=....... +......150...................................+..70.565=.&320.........983....155................=.....54.......%............*....@......../... +...............972..146...........49.433..137..............................*....%..................@....................436.451..........328 +568-...@.552%....-.-................*.................957................93......74...........*........156.566../....#...........285........ +.....565..............693....443......................*....394.@58...362...................383.583.............542.38............./..890.... +...*.................*........*........&.223...........506.............=..................................300...............477........&.... +..612..459..........462....663......125....................720..............355.....253...............904......................*............ +........$................................622..............=................*...........*30.........#.$........................284........383 +............&.999....&.......................%........240....295*681.846....53.....806......793..646....626./76..737....479.........558.@... +.........892..#.......885.....804..587*....340.........*..............%............*.........*..........*................%............/..... +660..635...........-............./.....213........$....512.....551.............*....910........................@............................ +........*..........361..270*.....................328..............*.........853........................*.....985...965............232...948. +..501@......................213...412$.....375..................631..916.......................254...284.........#....*..252........*....... +...................695............................872*876..622..........-.........*..575...851*..................910.395..*....*717.248..... +.....91.........80....*..390...........497....496............*.......@.........297..*................&....873.............946.8.........647. +.......*.424.......108.....=.............*..................686....418.............131........600.96.327...=...561...321............343*.... +....731....*..............................938..........256..............909.......................................*......................... +.........811...=....................680...........167...*...601.....................892..#.......142*.......151..108............201......... +................653........879....@.*.........%...*...699..*..............726............695.870.....526.$................*8............234. +....54....311..............=...320..619.......495.375.......926....914.........654..............*........236...$.......444.....@613......... +...*........*......450*............................................*...786.625.......804.850.....674..........305........................... +..593.512....517.......155.....646*239....286......+...........96..264....*......471.*......*.........314*901..............879.............. +..........................................=.....419....820......&..................+.......163....148........................*....586....... +.....331.....................637....126.................*..147............650...............................................315....*........ +.......%......................$....../.................392....@...943..34...*......752.............................161..30.........970.521.. +.........984.412#.......-.569...@................464....................*.275..&.....#.126*506....................*.......=.168-............ +.724..................570....*.914.388.........%..$.........274.......263.......130..............102.....2....21+.268....................226 +..........776=...6........759.......*..283..309.....682......$..........................................%........................446........ +....%284.........-....#...........119....*......622...@....+............/.......929..178...........141/............../650...628.+........... +....................440........88.........335...*.......804............968..976*....+...................$.421..431..................*....... +.....880@.......871.....30......................249...........134....*................*...............95....-...*.....856...353...94.....963 +...............*....97..&.......989./.........*.....522+..$.....*.226.436.905......347.396.707...511..........342.....-.....*...........*... +........936*....299.........217.&...478....931.457........62.391............&...............*..../...884*....................370........483. +....965.....992.............*......................................371*771.............37..382...........990...391.......852................ +.......*........985.......753.&..........561.204.......................................*......................*...........@..........+935... +......677.....................164.883...............325........951.....847....%......433....*944.50...753..344.............................. +.829.......583........429............*34......243...*.........*.............329.%........421...........*..........803..746............675... +...*..................*....512............999.......102......398.................640................401....310.............164...452..*..... +269........9........705....*........782....%.......................615.734....-..............289...........*.....................=....661... +........37.#..............14.......*........../.......586.............*........623.......129........324.....601...%.....@................... +...165................#.........861............463.......*.......361*..............356........175.....*.........906.897..716....118..#...... +.....*.............728....417.........+...395#.........443...........829.....390-....................399...............*..........+..813.... +....176..253...846......$...........719..........132............897...............334......................20...........51.....%............ +..............*....*..278................958........*.......=.................183*.......427.......766.......*..914.282......674............ +....&......344...249.....................*.....445.770.....67.....301................295*.........*....715.390...*...../...............424.. +.....541......................160.580...........#................=...........*677..............394.......*........327....739...179.360..*... +..........=................%.....*................-954......%.............406......765..................930.....*.........../.....*.....370. +....%.....979.379..........415...............318..........284....440../............-....133.........157......579.550................747..... +.240..........*.....................@...........*642............*.....84.....%.331................2*...................582...=........*..... +......=.....246....167...............704.............763........999.......781...*.....-109............126..801............*.484....632..542. +....%..488.........@..........................$954....*../.....................779..........232................510.....149.................. +...27..........984.........*....485.....937........982..234..............225..................*..........122.............................16. +...........473.#..........558..*.............410-...........93............#..655....846....829.....760......=...................=....+...... +.....=390..*...................624........#.................+..473..............#......=...........+...577#......$...481.......651.869.806.. +747.......543.259.../717............&...346.......948..........$...........472.............230+......=.........206......*................... +................*........+.224/...798.........311...*..896*220...............&.+..................825....../............378...370........... +...............485.641.674.....................*......................618.......389........................565..&674...........*............ +..........475.................=.162............461.441...................*..........652......&....508..856...........364....464............. +...............154...452#...693....*................*.......391.........979....344..&.......814..............501.......=.................... +...............*................425....25#...........788............879...........*.....29....................&....................850...794 +393.............523...507*683..............174@..........-.............=...369....439....-.......*305.891..........952............*......... +..........+...............................................535..911.........................*....1.........441.....-.........88...906........ +..........997...17.............779..............960...................209........545......513................*...........98...........+608.. +.....................63.968...*.........340.......*...858..339...........%.-767...+...173........47.........906............*210............. +.............&..575..*....@.788.........*.........178.....*.......949.................+...........*.............-.....399.............@..... +..........571....%....984............414...............$.912.....*......302.............594.240..724....341..645.......*.......=..848.642... +....282@...........*......=......189.....138...227*.906.........70......*..................*.............=..........957...657.81../......... +..........*...$.813.179.901.592.....*....................................7....127.............$692...............$..........*.........*..... +.......207..91..............*.....784...872..756.........&..322..............*.........*19.........749.......548..624.694..858...512..598... +.................+.........352...........*.....*.934..126...*.....351..........40...616.......153.....*661............*...........*......... +...823........829...346...........821...826.304...%.......115.......*..........*...............*.............../...622...523.......606...... +...*...............*.............*...................186...........813....716@.372....16..300...489..108.....770.......................697.. +..........919...782.......912................@.........*.%485............................*..........*...............208.220....853.......... +...308......*............*......269.........539.......2.............853.......941.660.532........246.......980..357*....+.....*......./..... +..../......32.164.......15.479.=.............................=...............*....*......................#....*......+......-.855.....415... +.......305..../.....649....*......633...925...634............121............355....578.......14*....422..543.297....429..142................ +..960..+..............*.....536......*..@....-.......51..-.........592#..........+..............9..*........................................ +.....*......515......434............908..........189......430..................332...722..-.........450..#.........................139...... +..259......*.............................39..33.....$..................................*...159..443.....925.............743....414.&...=437. +......58..475...........227%.......217..../...*................../...............&....506..........................63..*.......*............ +.......=......-..............993....%.........166........605....293........977+..498......%.....834...455...........*.....%....981.991...... +...........636..728...*.......*.......494...............................................205........*.@...........528....226.........#....785 +664.9..............$..9...494.272...............725*....775...$....854..........226.243..........832....637*73................165........... +...*...340+.............@...*.......548.............405....*...768..*..............*.......81.........................10.787.$.......918.... +.......................145...265....+..........110........45.........90..299.....$........&.....696...475.-452..290....*...*..........@..... +......+....246.108.305...................894....=............121.588......*....69...................................236..97......348........ +.......709........*...........-...........-..........411...=...*.......135........................738..383.....634*..........429.@.......... +...........%........%217......119.....................@..47.........+.......923..............606...*.......960..............-............... +....835.....744...................546.......215.............512.....950.......%...444......&...$.833......./.........813.......400..%...48.. +........362.......898..#.......................*.732........*.............965....&.........584..................521..#...........-.995...... +....64.*.........*.....265........781..376...320.#........998...450.......%............................$...............................304.. +....-...966...875..981........742*.......*...........*276.........*...............541.....219.279..357..164...551..%717...............%..... +...................*...786.$..........*...163.....915...........960...%...509.135*...........*................-...........%.539............. +....666..699......179..+...612..=734..545...........................88.....&.......392...46..........483=..&.......548.135.....*.413.#620... +...$....*....948..........................530.656....%..484....*..................*......./...741..........444......*.......150...*......... +......................524...928..........=........858....=..562.571........117@.195..896......*......662.......148.388.............320...... +...166..48.../....-............#...159.......487.....................260...............#...713.........*.347................................ +......*.......657..837.....273.......%........*...155.................*........225..................228.....*370..../.......724.....764..... +......654.679.................@.........-....918...................681..461.............................776......737.................+...... +...........*....859......881#............625......$...........888.........+...57...............887.$.......*............................#911 +...46*....72...&...................................102.............651........*......*530.......-..667....850..829*.869%........298......... +......925..........892.352*........6.41....................+...160.$.....*.72..878..1.....................................738......*926..32. +...............279.........721......*..............694....799..&......878....*................219....+...482..368$...........*../........... +......604........*....................583*506........-...........740..........347............*....576......*................498..478.974.... +..486.-....................626..................320........&....../.................*979.=....863........497........111..............%...... +...................................538..78...*.....*......7...455.......223......939......673..........=......559-....*...834............58. +.......644....&.......#..669+.1.......*.....782.....865......*....779..#..............110...../....937..312...........489................... +.......*....571.....69........*.......169...................919....*.....808.................335...*.............................24*896..... +.......233................590.553..............198=..450.........661.......*.....................15...-....................-575............. +...........919*.....................................*.......234.........492..%...........300...........301........./866..........*.......... +...............470.....440.874...116....240........299......................27......409.......................................639.136....... \ No newline at end of file diff --git a/aoc2023/src/day4/input.txt b/aoc2023/src/day4/input.txt new file mode 100644 index 0000000..0391b6a --- /dev/null +++ b/aoc2023/src/day4/input.txt @@ -0,0 +1,203 @@ +Card 1: 8 86 59 90 68 52 55 24 37 69 | 10 55 8 86 6 62 69 68 59 37 91 90 24 22 78 61 58 89 52 96 95 94 13 36 81 +Card 2: 6 42 98 5 17 31 13 36 63 61 | 99 88 14 20 63 5 56 33 6 21 92 13 17 7 31 93 30 74 98 15 11 36 61 42 47 +Card 3: 16 58 72 77 1 67 33 82 68 7 | 16 37 15 75 78 1 49 82 22 45 83 58 77 79 50 88 98 67 33 72 42 29 35 7 68 +Card 4: 75 35 37 6 29 54 64 57 82 4 | 8 33 27 85 84 54 75 37 4 57 70 29 64 94 17 6 38 41 82 81 71 35 47 51 19 +Card 5: 23 85 52 77 81 50 28 59 87 82 | 70 65 12 35 9 41 62 31 47 66 58 15 76 46 68 67 55 86 17 38 18 1 75 79 13 +Card 6: 77 64 13 36 68 88 16 75 25 95 | 25 64 55 58 75 66 23 16 27 68 69 88 13 9 39 42 29 65 83 97 32 89 53 96 94 +Card 7: 31 12 76 29 48 96 41 49 21 37 | 94 81 65 82 15 33 53 91 88 37 46 29 3 80 95 67 11 27 31 30 49 89 78 41 90 +Card 8: 20 5 52 31 46 25 88 95 39 83 | 36 62 48 39 69 3 81 11 61 95 43 85 34 46 5 8 13 45 10 17 2 88 70 52 89 +Card 9: 8 85 89 55 77 9 40 5 57 37 | 56 84 62 42 49 50 51 35 75 25 13 74 68 1 99 48 41 94 45 66 17 69 23 29 67 +Card 10: 74 1 7 89 97 82 75 9 11 42 | 94 71 41 30 50 58 23 81 35 6 97 57 67 85 98 10 87 43 96 77 31 8 54 72 65 +Card 11: 38 29 6 5 4 84 34 1 94 23 | 89 48 51 84 49 33 50 65 79 53 12 8 5 1 35 69 83 57 11 42 67 26 9 6 55 +Card 12: 35 83 44 75 36 65 85 87 60 72 | 8 3 91 33 59 29 56 26 21 60 80 88 25 5 51 47 46 44 41 31 62 79 76 89 55 +Card 13: 8 56 97 66 32 70 25 76 18 20 | 15 50 91 65 3 67 98 81 9 44 18 92 13 64 96 47 87 46 7 33 66 71 82 88 90 +Card 14: 37 52 63 28 19 89 44 76 98 24 | 70 13 59 31 17 84 90 6 62 19 74 36 94 1 15 12 29 95 47 92 23 67 60 58 53 +Card 15: 71 70 25 51 95 86 66 37 27 53 | 14 20 30 17 59 96 11 68 46 13 75 44 40 62 32 7 81 91 73 64 93 83 35 80 49 +Card 16: 97 4 63 22 75 73 5 52 34 26 | 33 98 64 47 90 94 28 35 43 30 73 51 7 27 10 40 97 37 34 32 22 71 63 21 80 +Card 17: 15 18 29 55 14 25 69 4 59 75 | 66 4 82 23 94 22 26 16 55 69 75 20 76 25 29 59 15 18 70 2 28 39 95 14 40 +Card 18: 26 40 70 42 37 68 25 76 56 97 | 33 97 28 13 24 50 66 53 67 84 26 68 42 56 92 40 65 76 25 32 70 93 85 37 94 +Card 19: 56 61 7 53 48 88 77 73 27 79 | 50 81 29 15 46 19 33 89 54 85 58 73 68 34 84 2 40 27 44 94 88 62 14 1 56 +Card 20: 34 89 62 72 6 30 16 53 78 2 | 2 78 73 89 85 40 47 30 34 8 60 23 72 26 62 96 6 91 29 16 57 46 59 53 94 +Card 21: 65 18 22 53 8 31 32 84 39 9 | 75 16 70 3 14 61 34 9 38 71 8 49 53 52 81 18 45 82 41 44 32 63 65 51 69 +Card 22: 44 80 76 71 36 1 50 87 23 27 | 1 76 83 67 87 68 25 80 8 23 57 29 52 4 50 64 24 44 77 45 27 32 36 73 71 +Card 23: 68 90 10 43 73 63 85 47 11 96 | 9 29 53 84 4 6 25 82 11 21 73 83 20 95 66 27 80 26 70 33 85 47 17 74 98 +Card 24: 51 68 2 69 39 86 55 70 6 54 | 72 17 14 26 91 52 96 86 66 64 51 2 92 53 36 39 89 42 40 68 55 37 6 54 7 +Card 25: 74 92 43 35 29 93 39 53 10 54 | 86 35 10 18 92 43 56 25 44 53 93 39 29 54 11 12 55 61 83 41 21 69 81 4 74 +Card 26: 80 19 99 93 76 67 70 60 39 9 | 98 2 26 95 21 49 44 9 31 58 83 46 14 99 4 78 12 56 89 71 66 29 47 64 96 +Card 27: 92 52 5 46 49 62 74 72 44 87 | 37 93 24 29 5 88 72 81 62 50 69 33 52 19 23 8 84 1 70 87 95 96 61 63 49 +Card 28: 79 80 98 59 54 45 91 16 11 4 | 80 10 98 45 78 91 1 65 12 11 4 82 88 79 54 55 8 99 59 67 68 16 25 3 70 +Card 29: 52 30 9 13 44 71 48 63 65 27 | 90 31 17 80 44 39 85 93 58 65 8 63 16 35 40 1 73 68 52 6 97 99 13 10 61 +Card 30: 12 19 35 9 82 20 72 61 50 67 | 11 84 77 14 46 29 62 28 81 98 43 12 15 72 35 99 19 97 75 1 20 7 82 60 52 +Card 31: 21 58 93 11 50 25 88 77 64 29 | 42 1 31 30 99 69 54 32 88 24 95 15 55 56 14 45 19 33 87 34 7 93 79 23 74 +Card 32: 39 87 70 22 46 95 69 3 58 80 | 85 95 24 45 84 22 37 12 33 43 93 96 27 56 70 67 91 58 10 68 69 40 97 82 13 +Card 33: 91 42 78 76 77 27 22 98 94 70 | 80 17 63 21 37 52 46 44 2 7 73 86 49 40 23 4 92 60 43 76 29 22 24 69 42 +Card 34: 11 50 70 95 32 81 26 57 7 76 | 83 64 65 46 87 56 28 98 90 11 96 40 99 3 16 12 61 19 97 76 51 92 93 34 15 +Card 35: 80 28 55 51 98 5 92 54 73 78 | 78 66 10 38 36 51 1 83 94 33 42 17 62 56 59 21 86 25 46 48 63 12 45 31 65 +Card 36: 63 76 16 74 10 14 50 73 81 35 | 3 68 1 76 62 53 67 97 13 85 28 65 32 72 34 98 57 20 71 17 64 48 8 56 44 +Card 37: 37 1 38 62 56 27 17 8 21 98 | 78 31 14 23 18 62 4 2 97 88 59 34 57 46 81 16 36 58 86 35 72 61 7 80 28 +Card 38: 56 30 92 44 33 11 16 45 72 60 | 74 86 59 87 22 81 46 32 52 21 78 10 57 1 13 85 49 75 95 29 8 38 77 54 50 +Card 39: 66 83 99 18 79 70 57 25 86 55 | 8 41 50 87 77 7 78 84 53 35 43 26 13 29 30 69 91 65 32 59 31 45 56 15 48 +Card 40: 64 46 22 83 33 38 95 75 69 89 | 82 65 45 68 75 33 69 49 22 95 89 74 53 46 38 25 83 64 8 59 81 16 94 27 60 +Card 41: 90 26 49 5 76 98 92 64 19 32 | 47 35 49 45 13 67 73 55 4 64 79 63 89 57 5 75 85 91 25 88 74 70 28 68 86 +Card 42: 45 52 92 43 76 96 4 86 53 62 | 96 53 55 18 95 44 25 45 47 66 62 2 52 60 10 3 1 37 87 92 98 70 9 86 23 +Card 43: 9 64 57 76 21 30 38 98 85 1 | 11 22 92 81 58 59 48 75 2 32 15 84 27 56 86 99 98 66 54 96 20 37 67 12 29 +Card 44: 11 41 84 1 76 6 64 8 31 44 | 11 1 33 58 55 6 84 44 70 20 64 41 90 98 72 42 8 38 4 39 76 17 18 69 31 +Card 45: 88 12 95 1 24 71 70 49 79 8 | 86 57 43 12 90 78 70 76 24 95 39 8 1 13 47 71 49 75 15 32 2 77 58 79 21 +Card 46: 84 91 96 41 17 76 9 36 81 1 | 82 5 99 19 43 20 86 69 37 44 95 41 55 65 96 70 24 47 77 15 31 36 2 79 22 +Card 47: 48 80 18 4 40 11 90 17 27 68 | 33 40 15 99 48 12 25 27 44 17 50 94 68 63 11 29 80 4 18 42 32 90 19 2 91 +Card 48: 44 30 51 97 22 57 87 17 53 11 | 35 17 81 22 11 30 75 80 74 54 79 16 78 97 89 87 51 37 43 72 53 57 27 94 23 +Card 49: 31 2 7 13 9 33 95 41 57 34 | 25 90 77 13 1 95 18 17 34 92 10 33 80 2 82 66 91 73 70 86 21 7 42 47 19 +Card 50: 16 44 77 76 23 81 47 29 62 22 | 35 27 83 47 88 76 98 64 31 86 48 42 95 67 25 44 17 51 18 26 12 1 90 99 62 +Card 51: 55 68 41 17 28 83 64 62 22 13 | 24 6 23 22 64 7 83 74 44 34 28 68 13 32 26 50 62 17 12 41 97 55 16 1 9 +Card 52: 96 79 43 83 37 25 86 24 66 34 | 79 18 6 2 64 62 86 48 65 34 29 68 9 87 76 71 3 69 61 41 40 35 37 55 32 +Card 53: 46 1 10 43 47 17 62 52 58 75 | 58 14 52 71 31 75 55 50 8 99 63 23 4 13 10 62 16 17 82 43 56 46 76 83 65 +Card 54: 75 33 27 30 87 32 68 89 44 17 | 73 28 31 97 27 9 57 14 15 20 39 82 38 36 43 58 75 4 44 30 33 80 16 48 17 +Card 55: 70 11 9 44 14 32 83 10 99 71 | 65 48 21 75 83 71 92 2 34 22 11 14 39 31 63 25 88 15 80 76 96 90 52 70 99 +Card 56: 17 38 6 13 3 67 87 64 37 68 | 41 7 53 11 5 62 93 28 65 8 56 32 1 69 47 18 82 40 20 12 80 37 89 43 2 +Card 57: 64 29 46 22 61 56 32 20 97 72 | 31 14 29 44 74 22 1 56 4 52 58 45 50 78 67 11 97 72 16 20 27 57 61 83 85 +Card 58: 62 85 13 46 79 37 99 81 91 8 | 98 17 85 23 33 94 35 2 47 20 3 11 36 96 43 46 25 60 59 10 22 55 87 58 28 +Card 59: 58 36 55 31 69 91 21 51 56 10 | 19 49 73 6 34 27 40 65 11 55 44 67 37 97 14 85 84 89 72 29 64 15 70 68 94 +Card 60: 46 40 95 45 75 74 7 38 10 81 | 32 38 4 61 78 5 39 99 86 33 2 98 83 42 11 75 27 73 81 9 54 37 40 12 80 +Card 61: 40 29 73 56 91 44 24 77 1 5 | 87 52 80 45 70 48 47 44 69 17 16 6 82 66 37 42 39 3 10 15 97 13 40 99 62 +Card 62: 54 55 29 80 70 50 97 89 33 68 | 21 3 76 73 6 42 2 91 19 18 72 92 94 11 77 32 52 8 81 48 35 16 27 12 84 +Card 63: 19 45 77 86 6 33 83 91 52 36 | 18 68 60 58 84 29 9 67 21 99 24 80 69 96 25 85 46 50 95 27 61 4 90 63 88 +Card 64: 88 23 57 8 93 17 20 42 54 51 | 12 78 82 80 85 43 73 44 84 89 15 36 30 10 25 29 7 99 61 60 86 14 26 28 83 +Card 65: 92 13 3 54 4 95 28 72 8 15 | 15 60 66 33 82 95 94 69 71 59 54 99 40 31 83 17 13 80 28 72 4 92 45 87 46 +Card 66: 1 42 10 66 94 21 46 95 73 32 | 64 99 3 86 69 71 95 78 60 28 5 19 35 85 67 7 32 16 39 66 89 42 31 43 58 +Card 67: 87 50 23 52 5 22 88 82 59 72 | 26 59 48 90 82 55 50 37 87 35 2 52 72 11 40 23 54 88 19 33 5 97 86 22 30 +Card 68: 21 89 80 14 73 61 9 7 68 48 | 18 89 38 26 32 21 79 15 14 86 44 55 95 41 80 7 9 29 73 1 13 48 68 28 61 +Card 69: 9 82 65 50 57 40 96 36 83 60 | 96 17 88 60 40 74 33 19 41 23 82 89 92 72 50 83 4 7 56 34 9 36 52 57 65 +Card 70: 40 63 61 64 3 21 52 11 66 53 | 82 42 13 30 44 72 74 83 45 70 38 33 80 8 64 48 49 73 19 51 85 47 90 84 92 +Card 71: 92 24 98 94 89 41 1 93 28 32 | 28 61 92 13 53 89 43 23 32 66 81 93 94 38 90 36 24 68 1 91 98 41 29 67 64 +Card 72: 29 61 68 1 78 69 33 45 39 18 | 81 12 36 28 73 75 18 35 42 33 95 68 3 79 39 8 24 82 87 45 11 91 23 51 1 +Card 73: 15 33 51 46 80 95 67 71 97 16 | 23 7 93 94 55 33 5 84 28 32 15 59 98 6 46 17 86 43 39 81 36 42 63 71 82 +Card 74: 95 9 16 72 30 20 41 97 45 90 | 30 72 49 66 36 9 82 98 95 16 48 57 46 86 47 90 20 85 54 74 73 4 22 60 32 +Card 75: 82 55 49 44 75 57 19 59 38 4 | 21 78 35 6 93 75 28 41 83 72 55 22 64 89 70 47 23 29 20 99 48 53 27 65 13 +Card 76: 19 31 41 50 27 43 74 21 51 44 | 24 79 71 16 49 37 60 14 8 33 52 40 98 6 34 62 56 4 10 30 39 48 99 67 22 +Card 77: 39 23 28 96 98 50 40 34 79 74 | 85 68 79 33 48 23 56 10 89 38 50 71 17 28 6 74 53 4 98 26 8 22 39 31 66 +Card 78: 80 31 82 32 70 17 68 44 22 97 | 72 6 95 57 13 94 37 44 70 46 32 69 22 56 40 15 77 88 17 82 31 47 71 18 68 +Card 79: 37 53 75 59 72 43 65 74 81 26 | 37 23 11 48 45 86 74 2 59 58 92 12 65 78 16 97 57 76 67 26 18 41 43 54 49 +Card 80: 63 41 23 39 40 10 26 93 24 73 | 30 19 74 40 49 90 22 65 78 10 24 93 73 41 51 7 61 15 29 39 63 16 64 23 37 +Card 81: 88 68 74 9 97 46 11 87 39 10 | 40 3 14 85 64 43 42 97 90 9 39 13 29 72 47 10 48 4 68 96 99 25 98 65 57 +Card 82: 81 48 21 57 65 39 12 66 95 33 | 16 33 79 85 92 52 50 34 15 22 9 45 74 17 24 63 28 72 84 62 58 77 41 64 83 +Card 83: 45 33 86 43 63 96 25 88 53 15 | 73 93 79 18 2 26 21 65 28 57 52 88 1 80 33 38 76 3 56 35 6 23 34 24 13 +Card 84: 31 74 96 40 36 99 91 92 63 10 | 78 38 59 27 84 34 31 72 19 91 12 45 57 92 32 44 70 50 10 24 87 33 49 65 61 +Card 85: 24 20 39 42 78 57 12 64 40 44 | 68 34 77 20 21 12 35 23 97 3 50 65 42 18 84 41 43 69 94 37 76 57 31 45 79 +Card 86: 51 48 14 80 3 72 92 15 35 43 | 50 69 18 76 63 30 58 19 65 16 70 55 54 12 87 62 60 68 93 83 1 44 26 98 27 +Card 87: 11 4 31 73 5 81 2 32 29 51 | 3 47 9 18 16 19 66 36 23 70 91 64 69 87 51 84 43 65 35 42 63 72 82 54 93 +Card 88: 94 10 52 17 78 45 99 66 8 81 | 11 31 71 59 41 88 67 30 47 98 33 21 37 15 53 20 36 58 57 91 39 28 49 70 86 +Card 89: 28 68 50 39 98 57 78 71 11 48 | 95 67 79 86 53 17 66 60 77 6 44 54 19 31 74 80 63 99 47 12 91 21 70 8 10 +Card 90: 36 90 94 26 59 84 63 38 48 39 | 69 56 39 88 89 97 26 38 83 55 87 13 33 68 95 94 18 48 36 44 59 84 63 90 66 +Card 91: 89 3 61 68 53 85 66 81 11 78 | 29 10 81 58 22 47 19 3 36 98 61 85 89 78 39 17 50 53 11 66 68 24 4 86 25 +Card 92: 57 5 56 91 64 38 89 47 55 74 | 73 51 48 19 57 98 64 9 74 65 53 47 54 72 69 38 56 1 21 6 91 40 55 5 89 +Card 93: 6 86 18 53 9 82 70 81 89 26 | 21 69 75 10 8 86 89 70 47 23 78 96 98 53 6 9 2 81 31 56 39 55 18 1 42 +Card 94: 86 78 79 57 3 2 5 69 30 53 | 80 2 53 90 3 30 48 79 5 78 19 35 62 59 97 56 13 12 70 86 10 69 51 55 57 +Card 95: 64 51 15 84 25 94 88 80 20 33 | 1 90 50 47 32 15 20 51 84 65 64 55 39 94 19 66 40 25 88 43 80 34 29 3 92 +Card 96: 83 88 94 87 79 45 49 91 99 33 | 91 53 72 37 87 40 26 88 33 49 89 99 24 59 94 52 75 83 79 71 62 50 92 28 6 +Card 97: 51 91 36 6 68 9 97 78 39 80 | 18 97 68 34 91 61 78 3 23 84 8 16 36 96 65 99 59 80 58 90 14 32 1 41 74 +Card 98: 92 41 9 7 52 86 83 40 8 63 | 47 17 14 35 34 22 19 52 79 7 81 92 1 82 93 73 25 58 60 39 59 27 3 16 41 +Card 99: 72 47 22 4 62 58 31 91 34 50 | 49 65 94 71 82 25 24 9 64 62 50 60 14 84 16 93 1 46 8 19 47 44 21 10 11 +Card 100: 96 18 53 37 54 98 30 84 58 45 | 30 59 89 23 8 35 85 6 36 54 37 17 92 79 27 39 4 61 11 80 19 58 72 51 47 +Card 101: 67 26 23 99 78 60 55 82 83 11 | 60 22 91 21 18 29 67 62 34 93 56 59 49 52 38 79 28 11 17 77 76 20 2 99 92 +Card 102: 28 94 4 54 77 42 17 44 59 48 | 24 13 61 6 5 83 50 77 76 37 90 71 79 47 8 98 41 75 59 70 89 16 30 17 45 +Card 103: 65 69 32 77 64 99 24 71 73 90 | 20 26 72 17 16 46 86 2 28 13 88 45 5 70 95 55 33 65 49 68 50 58 85 83 22 +Card 104: 78 17 88 26 65 79 8 18 47 25 | 31 86 76 30 84 44 62 97 81 42 14 72 25 32 82 5 54 69 98 52 68 13 92 3 58 +Card 105: 72 63 74 24 23 67 34 26 50 73 | 11 70 76 89 84 92 79 33 82 44 71 48 35 8 59 14 93 15 29 18 55 3 38 77 28 +Card 106: 36 40 51 81 60 96 34 49 85 89 | 72 15 7 40 60 97 68 52 36 55 87 96 85 89 49 61 78 34 37 27 76 5 51 81 12 +Card 107: 56 6 20 66 35 45 14 19 62 52 | 15 27 93 17 77 19 35 43 80 72 47 88 8 70 71 92 83 82 10 97 25 90 44 69 87 +Card 108: 33 44 49 78 10 26 20 65 77 13 | 33 54 2 24 17 20 26 7 93 5 3 77 81 46 92 78 49 65 32 51 44 95 13 29 10 +Card 109: 51 25 49 60 83 75 46 43 50 41 | 96 12 53 50 78 92 60 15 76 6 5 34 41 23 25 70 20 75 86 73 30 39 32 48 95 +Card 110: 13 22 99 91 47 53 35 34 37 77 | 79 35 1 13 88 57 76 89 81 15 53 56 99 34 6 68 77 32 91 47 87 37 4 24 16 +Card 111: 17 21 92 30 95 1 52 5 27 46 | 86 24 6 51 99 68 16 34 19 76 31 10 56 63 58 97 87 26 40 73 8 54 69 18 90 +Card 112: 52 83 38 39 95 12 57 14 46 85 | 12 95 85 14 89 50 52 17 92 18 38 34 55 83 16 66 19 88 4 20 46 57 77 39 11 +Card 113: 6 25 93 3 52 46 2 13 70 7 | 67 46 40 2 3 77 35 50 57 52 55 75 53 72 97 89 34 84 15 31 23 7 58 25 21 +Card 114: 24 53 25 12 17 82 14 50 3 74 | 91 83 57 50 96 68 52 11 56 44 89 95 15 13 54 20 76 48 30 88 53 55 93 65 47 +Card 115: 95 81 49 37 80 70 7 60 75 99 | 29 74 98 94 49 59 60 86 75 93 72 56 87 82 76 32 33 4 46 70 27 83 1 35 2 +Card 116: 80 67 54 68 98 47 12 56 77 60 | 45 81 47 78 29 39 56 42 80 54 68 90 37 2 16 96 5 38 14 59 7 30 6 67 20 +Card 117: 6 59 84 35 1 53 28 77 94 24 | 97 62 40 54 93 44 90 63 26 64 91 75 6 4 22 82 80 2 69 12 77 21 53 49 10 +Card 118: 86 30 39 49 32 29 27 68 97 50 | 2 48 36 99 83 4 38 5 47 77 66 1 20 10 14 15 63 78 89 91 85 80 41 28 54 +Card 119: 87 78 77 15 85 99 2 35 45 11 | 58 51 62 42 63 90 37 22 8 83 34 31 67 35 72 17 91 7 88 49 13 39 59 4 18 +Card 120: 80 21 33 94 26 68 73 35 83 3 | 67 9 94 49 27 50 40 30 60 90 86 91 98 69 6 15 36 71 38 31 17 33 41 70 84 +Card 121: 81 17 27 59 99 69 49 14 83 91 | 20 77 55 73 87 36 25 56 54 58 45 68 80 18 3 15 65 31 96 40 75 30 92 42 23 +Card 122: 22 44 29 27 77 20 86 34 5 99 | 63 19 97 74 4 39 7 52 87 31 81 45 23 18 53 47 50 73 80 2 70 94 26 66 14 +Card 123: 39 40 61 53 56 60 96 5 68 25 | 97 98 6 79 81 32 51 26 59 13 10 2 3 77 88 80 63 90 52 12 87 29 49 18 76 +Card 124: 78 19 92 75 56 95 2 16 43 44 | 95 2 56 4 92 66 53 88 21 16 43 78 17 44 85 48 12 19 52 40 69 75 59 82 26 +Card 125: 14 43 38 9 8 62 17 28 12 11 | 80 19 38 43 11 34 29 9 32 12 62 28 77 72 17 69 33 96 94 78 67 8 93 90 4 +Card 126: 60 95 93 99 11 49 20 75 37 54 | 54 42 19 49 92 95 11 34 74 93 60 52 99 5 7 75 20 12 68 98 43 50 36 37 56 +Card 127: 73 24 71 80 58 62 17 41 61 43 | 68 43 79 58 87 67 6 62 20 41 93 71 27 88 23 17 24 42 52 13 61 80 81 84 73 +Card 128: 99 10 91 58 70 47 80 30 96 57 | 46 57 3 72 4 87 70 10 59 7 96 48 28 97 91 58 47 76 36 80 8 23 19 30 99 +Card 129: 50 3 78 8 80 11 57 52 94 47 | 63 60 38 92 50 65 91 88 53 17 96 42 66 28 1 25 75 76 73 87 90 36 82 24 68 +Card 130: 38 42 33 70 61 58 73 88 74 29 | 83 92 77 58 56 74 55 93 38 46 29 28 37 68 33 73 91 61 12 64 25 88 42 31 70 +Card 131: 92 46 42 96 12 14 95 84 57 78 | 11 6 82 41 73 55 8 93 76 98 99 86 31 21 78 29 32 70 62 23 95 15 9 77 52 +Card 132: 40 97 45 2 19 99 29 98 37 20 | 5 56 36 21 33 83 32 98 66 20 16 37 97 93 40 78 43 77 99 29 87 96 2 30 39 +Card 133: 97 81 10 23 75 6 53 27 35 47 | 37 93 8 92 68 65 15 85 25 67 61 56 5 42 88 18 76 87 60 46 59 94 86 57 91 +Card 134: 96 66 54 61 10 85 98 40 13 41 | 90 58 9 38 28 24 57 52 5 81 80 62 34 54 79 49 2 95 1 18 41 65 82 32 42 +Card 135: 54 79 66 83 45 35 10 27 41 94 | 67 42 4 89 51 95 1 63 90 40 65 23 98 7 86 9 97 3 11 61 92 69 77 80 2 +Card 136: 37 86 74 45 70 95 33 28 82 32 | 67 13 62 8 63 41 78 40 24 91 11 48 7 85 59 81 44 37 45 90 66 70 35 33 94 +Card 137: 75 89 5 18 91 57 37 63 85 40 | 27 34 9 51 76 41 69 86 95 81 36 82 1 38 10 99 7 47 21 77 8 30 19 71 60 +Card 138: 9 67 82 54 5 98 7 6 40 96 | 13 83 90 88 44 17 82 24 47 84 23 85 62 45 72 91 58 46 38 32 25 79 70 59 33 +Card 139: 1 6 65 80 35 91 63 22 60 50 | 79 84 81 92 75 36 88 90 86 16 53 17 44 43 15 94 73 51 14 42 33 98 74 57 4 +Card 140: 24 43 8 76 91 79 42 68 81 70 | 65 36 56 57 16 69 38 86 85 37 22 9 98 33 45 25 95 28 52 2 27 6 14 46 55 +Card 141: 62 32 78 2 21 45 75 48 91 85 | 38 42 3 20 21 56 48 75 86 45 40 91 33 73 25 85 16 78 2 24 72 26 32 61 62 +Card 142: 90 10 32 43 65 91 24 22 34 62 | 91 26 72 81 7 11 32 10 90 33 34 87 35 24 29 3 59 62 2 65 22 43 57 74 79 +Card 143: 16 52 66 56 50 57 77 71 73 40 | 71 43 80 59 36 39 77 40 11 4 64 16 85 52 49 73 56 57 10 9 86 46 66 6 50 +Card 144: 61 56 14 66 2 73 39 8 33 97 | 26 8 47 67 16 18 37 39 14 9 61 33 97 2 66 56 73 4 75 11 62 68 49 44 34 +Card 145: 75 65 92 85 73 18 70 95 49 22 | 25 8 49 2 16 13 97 33 93 66 75 85 73 71 65 18 22 53 92 38 44 50 62 70 95 +Card 146: 78 62 86 83 26 23 80 2 77 87 | 23 96 38 63 83 22 20 86 77 21 67 66 75 5 36 47 26 61 80 87 82 16 78 46 2 +Card 147: 84 36 18 42 50 12 64 61 99 91 | 18 75 61 76 74 12 1 41 28 91 64 24 55 36 27 3 84 99 42 50 95 83 31 7 22 +Card 148: 61 91 60 18 68 50 73 29 23 87 | 18 76 33 5 27 97 31 37 21 38 56 91 60 87 23 55 58 61 50 45 14 29 72 68 73 +Card 149: 46 97 81 18 85 95 91 43 72 87 | 32 23 1 49 66 96 24 16 42 22 81 51 72 8 20 37 44 71 45 25 90 88 5 94 74 +Card 150: 17 99 20 36 33 78 9 87 81 84 | 37 8 79 65 31 99 45 36 81 90 73 11 49 46 87 84 3 33 19 12 57 9 20 48 17 +Card 151: 35 46 49 80 66 75 99 77 8 53 | 75 24 5 67 4 53 49 61 19 23 26 97 93 77 46 66 35 40 99 39 30 80 76 25 8 +Card 152: 11 80 39 1 30 36 16 85 33 66 | 26 66 60 2 94 16 81 48 80 43 85 96 51 68 33 63 88 54 6 36 37 59 5 1 47 +Card 153: 49 86 25 83 96 8 93 88 24 57 | 66 60 51 33 57 95 49 79 63 2 93 58 65 70 55 76 87 27 1 46 11 52 80 84 54 +Card 154: 38 41 75 30 91 6 14 66 47 57 | 34 56 11 70 71 60 22 81 41 74 39 67 79 98 87 42 62 3 32 57 55 46 33 16 51 +Card 155: 25 31 45 21 68 57 73 20 71 32 | 20 18 98 53 60 7 38 10 12 19 77 64 79 74 17 33 83 88 28 16 32 21 89 69 65 +Card 156: 19 35 39 37 84 50 62 95 96 56 | 89 24 92 67 4 47 54 59 72 84 3 5 76 96 23 1 58 86 32 21 78 88 68 44 48 +Card 157: 24 68 39 72 23 93 81 51 45 25 | 96 33 76 99 5 70 93 18 24 68 6 64 49 92 45 80 15 77 4 57 25 13 44 28 2 +Card 158: 51 18 46 75 2 80 20 72 17 29 | 97 55 47 23 20 4 39 24 64 11 31 16 90 29 93 72 18 45 27 46 61 70 80 68 67 +Card 159: 34 10 70 56 51 9 99 32 15 74 | 13 31 44 56 63 20 99 81 40 78 84 90 50 52 85 19 41 10 45 71 22 28 26 8 14 +Card 160: 69 49 13 23 36 64 24 18 57 7 | 54 62 96 36 7 10 28 64 1 85 3 63 73 21 27 37 49 47 75 34 97 30 77 32 9 +Card 161: 35 16 44 25 42 62 95 77 89 34 | 29 26 11 78 97 23 28 36 10 96 54 81 17 22 80 27 77 44 41 34 20 51 76 24 75 +Card 162: 60 17 28 76 67 12 41 15 53 70 | 41 19 35 64 65 15 37 22 80 66 55 40 45 81 17 98 85 74 57 4 16 91 49 5 68 +Card 163: 57 3 82 45 28 70 50 17 85 48 | 68 87 47 62 58 31 88 92 98 90 46 29 5 85 93 24 95 99 39 75 55 33 65 49 14 +Card 164: 33 81 13 87 53 48 79 70 17 91 | 92 57 21 4 36 27 62 1 46 80 31 72 5 94 58 99 75 67 83 25 51 9 26 52 63 +Card 165: 55 70 45 36 72 59 81 16 69 98 | 60 7 43 54 66 78 83 23 25 94 48 67 26 56 53 58 2 4 27 31 34 39 49 85 74 +Card 166: 94 64 48 15 36 35 79 23 77 33 | 78 80 25 5 18 34 92 69 84 86 26 13 89 65 29 3 7 39 71 31 42 21 51 48 55 +Card 167: 13 34 54 2 20 16 89 79 88 9 | 47 75 25 82 72 76 51 37 95 22 71 55 54 74 9 33 97 83 27 2 79 28 17 91 24 +Card 168: 33 82 70 88 7 46 96 67 26 89 | 73 8 22 1 59 45 92 24 43 41 15 64 3 58 83 63 57 82 20 18 91 13 77 60 19 +Card 169: 91 4 32 45 55 98 80 52 9 33 | 20 45 37 28 69 61 60 81 12 33 51 74 15 97 50 86 72 99 2 41 70 58 19 40 39 +Card 170: 45 72 63 87 70 33 89 41 4 18 | 25 9 19 49 26 63 11 73 54 64 70 37 45 82 30 1 90 24 87 42 4 40 91 71 18 +Card 171: 74 99 84 26 66 10 95 8 75 68 | 34 62 37 97 57 65 75 74 6 67 68 96 4 1 95 55 52 82 13 47 63 48 94 26 77 +Card 172: 62 99 47 83 94 8 51 70 9 76 | 94 99 83 26 57 76 18 67 22 80 61 34 8 39 65 78 13 81 70 51 62 93 9 3 33 +Card 173: 42 99 9 18 48 61 36 83 13 84 | 7 69 44 61 35 54 27 3 60 55 99 84 32 48 18 19 72 42 89 65 4 92 79 75 13 +Card 174: 48 34 46 43 53 51 72 35 19 3 | 72 43 57 51 14 34 2 36 53 25 94 81 87 61 19 35 23 4 99 26 48 46 7 90 86 +Card 175: 46 59 27 28 82 13 99 35 18 6 | 36 90 70 87 64 31 42 71 50 27 76 45 99 32 21 20 9 88 23 93 17 46 80 85 59 +Card 176: 92 44 3 29 10 7 66 4 57 21 | 36 68 61 87 65 1 53 95 60 2 34 47 75 42 82 8 83 79 54 74 93 26 69 22 32 +Card 177: 89 23 17 80 22 65 98 11 94 3 | 91 28 37 99 63 60 42 87 23 98 71 39 82 93 57 68 62 13 75 77 22 26 53 48 90 +Card 178: 11 75 56 47 64 88 91 66 59 12 | 41 97 40 26 42 67 23 28 31 99 85 30 11 94 81 55 74 89 52 64 65 69 3 38 43 +Card 179: 31 97 46 27 96 57 45 30 64 82 | 36 42 81 54 85 31 1 29 8 84 28 50 64 76 10 67 77 39 21 4 75 78 99 47 12 +Card 180: 10 32 84 45 87 16 82 14 95 8 | 21 8 41 66 56 42 77 83 90 9 55 61 19 38 23 50 28 62 99 58 33 11 84 39 98 +Card 181: 90 54 11 49 95 88 15 75 18 2 | 30 5 68 41 71 52 56 10 50 60 81 51 27 94 42 55 6 87 78 66 72 96 36 12 62 +Card 182: 73 1 91 2 99 75 30 29 48 89 | 46 51 34 7 18 57 64 9 23 68 16 19 85 70 66 72 5 87 12 4 25 97 10 89 60 +Card 183: 16 20 31 39 75 36 78 33 88 69 | 57 17 8 70 79 37 6 48 51 85 30 45 98 26 3 83 29 58 87 54 61 35 74 43 66 +Card 184: 69 50 38 49 9 96 75 82 80 14 | 23 99 30 83 78 9 50 40 14 74 75 8 37 69 82 42 26 49 96 1 38 58 80 84 7 +Card 185: 44 66 49 89 36 28 30 85 32 68 | 44 28 66 72 33 65 31 67 36 30 99 89 12 25 32 76 68 85 48 90 78 92 13 49 82 +Card 186: 46 48 6 52 24 19 51 76 11 47 | 93 63 78 33 31 86 68 10 74 70 3 83 36 4 54 79 8 77 38 57 97 27 22 29 53 +Card 187: 49 12 70 83 40 68 15 78 88 95 | 72 31 40 69 37 65 71 35 9 44 49 95 89 68 50 41 20 58 16 60 90 22 28 96 10 +Card 188: 86 47 96 63 55 29 91 31 59 23 | 55 77 30 23 91 75 86 47 29 31 78 67 4 92 96 26 63 37 80 54 1 11 32 15 98 +Card 189: 40 97 46 63 66 58 54 35 33 59 | 75 17 57 71 55 62 43 96 85 98 83 37 40 23 65 94 93 25 72 78 46 47 28 33 56 +Card 190: 94 41 57 47 6 24 65 59 44 20 | 95 86 26 77 87 47 18 27 16 85 57 61 66 37 35 38 23 42 50 60 98 71 62 8 25 +Card 191: 57 32 39 19 48 77 27 96 10 61 | 68 82 86 70 75 35 11 24 69 56 45 95 67 44 25 36 90 47 74 39 27 55 66 87 12 +Card 192: 50 94 12 32 88 76 95 23 46 49 | 60 9 6 37 42 50 96 15 95 66 34 94 91 4 33 29 14 92 16 80 98 64 12 57 36 +Card 193: 32 25 53 7 71 31 80 42 92 63 | 84 78 28 90 27 24 5 67 63 75 81 12 31 55 46 60 89 98 37 16 86 23 72 43 22 +Card 194: 79 47 88 9 97 76 62 23 72 84 | 77 78 67 65 91 79 64 38 41 26 89 16 10 71 86 82 47 75 61 11 34 66 7 3 70 +Card 195: 22 47 95 56 66 98 44 73 50 30 | 92 33 28 65 16 60 8 45 56 2 47 84 25 55 58 17 35 88 38 95 81 63 43 57 98 +Card 196: 76 23 10 43 9 32 46 62 84 79 | 22 4 49 42 23 55 13 35 90 9 24 52 65 26 95 94 18 37 47 79 56 59 54 86 48 +Card 197: 65 44 24 84 49 62 6 54 42 20 | 25 72 90 58 77 60 59 73 11 39 91 19 21 28 62 8 41 66 87 56 64 52 80 82 24 +Card 198: 63 44 64 86 78 25 92 90 99 70 | 62 29 51 81 21 6 75 58 54 90 18 10 59 98 97 41 4 52 53 64 80 28 92 11 9 +Card 199: 7 15 47 28 44 22 74 76 40 56 | 78 24 95 38 25 36 77 46 89 45 18 42 3 75 62 90 52 81 83 85 80 26 4 23 71 +Card 200: 85 88 3 44 54 19 9 71 29 53 | 72 42 56 55 33 68 65 86 58 3 57 83 12 31 96 9 13 62 70 80 17 29 41 27 6 +Card 201: 10 51 69 82 56 40 94 9 90 78 | 57 92 89 1 99 87 5 73 80 28 2 6 67 70 33 18 17 78 16 95 69 44 38 24 55 +Card 202: 44 47 79 75 24 50 86 80 62 87 | 66 91 36 15 28 81 57 69 30 14 10 20 27 18 77 46 95 72 39 23 38 34 60 37 26 +Card 203: 59 31 79 81 4 21 24 54 48 62 | 37 90 25 51 70 77 18 17 97 52 40 75 43 3 91 50 87 67 42 15 14 63 6 13 5 \ No newline at end of file diff --git a/aoc2023/src/day6/input.txt b/aoc2023/src/day6/input.txt new file mode 100644 index 0000000..1026e3a --- /dev/null +++ b/aoc2023/src/day6/input.txt @@ -0,0 +1,2 @@ +Time: 41 66 72 66 +Distance: 244 1047 1228 1040 \ No newline at end of file diff --git a/aoc2023/src/day7/input.txt b/aoc2023/src/day7/input.txt new file mode 100644 index 0000000..b1d1932 --- /dev/null +++ b/aoc2023/src/day7/input.txt @@ -0,0 +1,1000 @@ +3Q373 470 +K53JT 351 +A9JK9 856 +2T333 515 +867T4 541 +58K22 253 +5JA6J 994 +K4A4K 865 +94377 519 +92J2Q 901 +J7676 389 +2KK36 938 +JQ2KK 987 +Q7A82 509 +TTTA5 243 +72J27 502 +AKKKA 387 +23222 674 +55335 161 +AA655 73 +QKKQA 686 +5J2T5 680 +666AT 385 +ATA3A 761 +TTT8J 364 +98A2T 282 +59A44 260 +6T9QJ 130 +T7TKQ 721 +9274T 656 +T9AJ4 182 +A2222 259 +TQKJ7 67 +4J844 560 +AAATA 636 +9J36J 546 +QJQQQ 119 +249TT 295 +877J7 221 +4KA23 116 +929Q2 929 +99JQQ 445 +Q9QJ8 432 +4Q7TJ 963 +4J2J8 783 +5J657 257 +88788 183 +KKK7K 909 +KK396 637 +J45AT 117 +84448 806 +A2698 820 +A9AA5 320 +A3934 19 +Q45Q5 392 +78686 254 +A55A5 701 +98A4K 655 +5AJ88 95 +AK3KK 55 +773KK 33 +J9J9J 356 +2KAKK 563 +655K5 287 +55T56 475 +54444 308 +5J5QA 811 +QKA76 792 +2K288 42 +JTKA2 694 +88668 889 +8TQ64 212 +23QQ2 261 +8K8K5 365 +JKKAA 234 +3J894 880 +667Q2 817 +888T4 599 +T5Q83 315 +3QK29 670 +JK4KK 322 +75T8T 144 +AAA7K 291 +7T333 495 +A49K4 448 +JJ3J3 251 +5999J 278 +38438 890 +6K3Q9 122 +TTT99 93 +94775 240 +K8QJ3 369 +59674 107 +267J4 355 +QTQTQ 187 +46J44 961 +Q7AK2 580 +69969 609 +876A5 474 +A3866 642 +Q3QQA 526 +JAA88 425 +35Q9K 986 +QQTQJ 550 +54535 357 +2J222 639 +QK5J7 743 +222Q2 191 +T4T44 855 +QTQQ2 338 +JA7A2 300 +AAAJ2 508 +4J455 23 +A77AA 339 +5KK25 899 +252J2 737 +7QJ76 888 +K46QK 795 +A4T3J 640 +8A8K8 176 +AA5AA 41 +J2Q24 958 +58855 632 +333J3 610 +74474 807 +K3AAA 78 +JJ222 765 +44224 688 +76733 361 +5845K 181 +TT4T2 974 +23J33 102 +QQJ6Q 34 +Q9AQQ 150 +22747 717 +KAA5A 121 +7AA7J 286 +J786T 780 +3K8TT 32 +A6KAA 25 +9A362 166 +A29Q2 499 +6688K 57 +KKQKA 947 +999JJ 975 +6A666 927 +TTT3K 658 +JQQ7T 467 +8A247 934 +7JK8J 712 +KK39K 612 +6666Q 17 +77Q37 868 +A66AJ 169 +KKKKJ 535 +7Q7JJ 591 +K9848 646 +46888 931 +A86A8 326 +743TA 527 +QKK67 977 +KKJ6K 471 +AAJ7A 571 +55292 330 +3A222 390 +6453J 109 +JKKKA 403 +4J9T5 21 +K7A5K 486 +6TT34 793 +3479Q 60 +44624 443 +6KK3K 164 +4447J 112 +QQ27Q 452 +JAK65 522 +Q5Q5Q 354 +J5Q6A 540 +68999 711 +3QJ4Q 155 +A6AAA 314 +222KK 767 +55T9A 373 +T5T57 913 +TTTTA 794 +8J258 190 +3Q87J 489 +AAQAQ 950 +Q4JJ4 588 +6T64T 9 +636K5 228 +AA222 248 +7KJ35 616 +26646 507 +44A4J 829 +23323 904 +TA265 135 +JJQT9 136 +KATJ8 644 +J2862 713 +4JQ28 152 +Q3K2T 56 +6Q232 812 +9A622 885 +KJKKJ 773 +3859T 374 +99333 101 +TKTTK 205 +3333A 35 +5A4AQ 548 +T4944 967 +43353 813 +423JK 869 +T99T7 219 +3AAAA 394 +T65Q6 740 +J9243 352 +6656J 496 +444K4 574 +Q8T6K 98 +AQ55K 917 +7QQJ7 605 +TJ5TT 615 +68JQ5 852 +7A3J2 745 +369AK 217 +57755 343 +A8844 61 +Q76QQ 698 +36333 774 +237Q7 12 +KT694 283 +88286 154 +4T552 990 +Q9J54 759 +K6697 350 +A3A33 937 +AA9AA 246 +QQ7KK 748 +TT4A6 380 +4J992 845 +A66AA 573 +5QQ2Q 28 +86J37 214 +2A443 362 +Q9QKK 654 +44434 964 +77773 74 +44355 235 +9QK75 863 +3AJ33 766 +T2TJT 53 +44494 860 +883A9 309 +QQ59Q 360 +A88A8 584 +A83A4 395 +7J9TA 299 +55955 833 +QJK35 188 +4656A 514 +8KTQ4 554 +56J47 985 +J272J 184 +9J999 671 +72295 31 +53555 264 +4A537 750 +7A4JJ 875 +QK834 463 +88KKA 570 +QQ9JK 906 +6Q646 858 +53336 359 +QJ8QJ 587 +424TJ 607 +KTKK6 285 +Q5AQQ 84 +899A8 542 +K8TKK 250 +4JA4A 705 +6J75J 896 +888K8 312 +5583J 660 +6T335 614 +Q757T 945 +3AKKA 629 +KK946 825 +3393Q 406 +7J288 367 +49999 907 +99729 837 +66265 384 +K47JQ 263 +2AJ4K 566 +TTKKA 186 +8J877 418 +56844 666 +JTTTT 531 +6TJ94 26 +JQ5J5 344 +7J772 85 +33747 510 +KJA2A 729 +333TQ 578 +JQAT4 955 +75766 834 +QQ6QQ 980 +32K33 306 +TTTJ6 231 +2QTTT 213 +999AQ 608 +33353 202 +Q8Q8Q 756 +KK555 490 +746K8 691 +98A75 853 +JQ858 816 +KK9KK 536 +9T999 933 +TA8A8 39 +8558J 919 +J8KQK 15 +73Q2K 503 +2K2KJ 585 +JK9K5 903 +TJ7T7 545 +J723T 453 +KT895 583 +TTTKT 123 +39535 393 +K4K88 893 +43KK6 821 +6AA8J 504 +972TA 597 +7J736 592 +536A8 63 +J23Q3 402 +83K9Q 405 +28337 396 +9T558 776 +7AA78 946 +QTT24 441 +26QT3 401 +AJQAQ 953 +6T6AJ 304 +JK5KK 162 +2JJ2J 484 +73773 6 +8J864 630 +78782 557 +6TJ52 424 +487JQ 830 +8J698 82 +AJAAA 866 +228J8 204 +622J4 823 +6J2QJ 79 +22K22 232 +A86A6 444 +83K8Q 965 +JK586 944 +JA848 465 +8888A 45 +2T28T 803 +73J73 450 +27272 857 +7A777 544 +A998J 679 +46466 458 +KJ233 192 +4453J 378 +TQQJT 451 +A3K5J 512 +888Q6 968 +6AA66 841 +QQ222 883 +3K5A3 233 +JA4AA 379 +62288 778 +44456 51 +4A644 862 +55647 981 +A77A7 327 +KQ3A3 687 +QQ7Q7 976 +T4A2T 293 +46226 628 +Q59Q5 348 +36AJ2 984 +54433 532 +JJQ24 831 +7455J 381 +78845 218 +72AQ5 276 +52T22 618 +99399 68 +36AA3 118 +69669 839 +33Q5J 785 +TJ766 626 +T28J4 556 +T883Q 142 +73928 932 +TJ884 494 +AJ36Q 485 +9Q999 324 +T725Q 267 +22622 88 +92364 685 +97792 789 +J673K 620 +99943 625 +77JJ7 921 +8828Q 572 +7777J 353 +TAAJT 926 +99T29 787 +AQ4J4 520 +9J559 5 +J3T94 706 +K9KK9 918 +KK252 439 +79925 97 +TT47T 497 +848T4 126 +6TTT6 426 +K8825 925 +888J8 62 +K5K85 972 +AAKKA 449 +J5555 663 +89J99 27 +4Q444 922 +A9A99 397 +5A555 163 +8J3K8 662 +29989 645 +95222 751 +Q4Q4Q 193 +555K5 982 +74AJ8 735 +KKQ6K 668 +7676Q 916 +A28T7 784 +K57KK 388 +A4J4J 115 +2K442 229 +33TT3 956 +TT6TA 741 +TT782 131 +TJ5JQ 238 +TQ7T7 415 +29KQQ 598 +A8AAT 676 +46A28 650 +6698K 696 +6J969 158 +6694A 271 +QTQ5T 498 +Q2QQQ 613 +2A7QJ 210 +6T466 683 +QJ575 799 +Q63Q3 822 +Q9J28 848 +TTTT7 7 +KA9AA 854 +K2JJT 859 +28228 179 +K29KJ 429 +JJ8JJ 222 +A99A5 457 +QQTTT 983 +43KK2 134 +984JJ 1 +97J97 892 +2AAA8 689 +9Q77J 819 +98TJK 517 +56KA5 71 +7J66J 294 +55855 335 +TTT8T 596 +33663 407 +7J774 911 +3JQ55 564 +QQQ7Q 329 +85668 120 +KK333 301 +Q3553 867 +7K557 988 +Q8488 400 +96J99 643 +29224 714 +T8ATA 346 +99J93 462 +K83J3 697 +3KQJ4 653 +5KJQ2 824 +4JJ3A 897 +56248 727 +JJ666 702 +355T5 245 +45KAK 553 +88AAA 236 +K55J5 581 +AJJ49 65 +A8Q3J 197 +AAAKQ 529 +55976 707 +77776 930 +A9995 227 +K7J7K 912 +29K99 244 +4Q464 80 +22972 195 +666JQ 189 +26278 241 +79288 601 +5454A 427 +JTAKQ 138 +88833 549 +84J54 215 +AATAK 114 +58959 145 +8ATTJ 431 +QJ26K 265 +A3JA3 81 +T8T4J 242 +4T3A3 37 +44777 871 +JQ542 561 +A97Q9 693 +A76T4 412 +28T4A 481 +T485A 861 +78286 303 +K6776 52 +T8TKQ 754 +KJ938 957 +Q444Q 840 +25A89 455 +58588 673 +K8858 634 +K8KJ8 170 +K6KKK 851 +53353 140 +2T2K6 593 +QQAQA 48 +TT6J6 305 +922J2 920 +AA22K 22 +J555Q 725 +TTAAT 781 +2244J 171 +A95K7 436 +2J299 651 +78AAA 321 +2KKK2 690 +2J565 649 +77J5K 77 +T999T 762 +J4445 879 +J888Q 873 +J884J 1000 +98898 413 +29299 442 +QKQ3Q 678 +A652A 993 +55272 898 +KA5K5 664 +8KJAQ 147 +Q56QJ 734 +K77J3 739 +J7677 661 +T5569 206 +2AA2J 757 +TJTJT 342 +T2TTT 682 +88J82 363 +9KK78 700 +AT4T4 730 +86968 736 +99995 207 +7A3J4 172 +8KK87 991 +TKKJJ 16 +J7532 165 +J9888 996 +9AJTA 92 +43T78 310 +93J77 317 +J4424 805 +43J86 703 +952TJ 127 +54363 146 +8T2J7 435 +88848 832 +TAAAQ 791 +8228T 256 +699QT 815 +KQQQK 30 +T82J3 49 +36222 4 +AK288 86 +6792A 194 +2Q22T 667 +J3545 270 +9QJK4 280 +QQ22Q 371 +K9247 446 +A422A 943 +765K3 469 +9J5A6 874 +4A4QA 775 +8Q8Q8 124 +T8Q62 850 +8Q8Q5 747 +6KT88 738 +82888 722 +3TQQQ 349 +2J3TT 539 +7TQ59 72 +8998T 733 +JQJT3 414 +82428 589 +92856 423 +89833 54 +79T4A 523 +95839 979 +TJJT5 936 +33839 29 +37433 511 +TKJ2T 681 +JT973 633 +Q8Q8J 971 +Q5555 440 +K8886 24 +Q75A4 43 +3AQ33 298 +T446T 719 +577J5 753 +KJTKT 167 +52528 8 +25222 641 +QJ2T8 621 +A8JQJ 316 +7T7A7 772 +KQQTQ 141 +83734 758 +6Q66Q 434 +QJ6Q2 638 +AAA7A 196 +57555 203 +4QJQ4 216 +82J5Q 763 +A73A3 940 +46AJQ 559 +T4936 103 +89Q29 262 +7872T 466 +A5J58 274 +AAAQA 290 +37399 844 +A759Q 328 +TJ9TT 273 +77887 268 +64A2J 978 +6T76Q 110 +QQ467 742 +9J7Q5 422 +4K6Q3 91 +336K3 826 +6K63Q 382 +23552 105 +243AA 505 +Q887J 764 +2J92A 749 +68A3Q 416 +7T8T8 199 +225J5 404 +24774 153 +T7T77 870 +3J393 347 +Q5Q8J 128 +7Q777 796 +QKKKK 617 +86686 108 +44KT4 75 +56858 622 +5AJK4 960 +3245Q 311 +36536 370 +6644Q 11 +JKAAA 104 +T2426 579 +J3399 83 +33933 602 +A299J 777 +26J22 224 +8666J 594 +J3J38 669 +3AJ84 239 +52Q8T 877 +QJQQK 779 +QJ6T8 797 +43339 399 +9AJ74 476 +T499Q 13 +2TAKA 928 +T3K78 809 +2923K 201 +J8858 798 +T8888 818 +98399 168 +8T266 555 +23A57 652 +3KKK3 113 +22T22 460 +AJJAA 106 +7QKA8 464 +QQ8TQ 368 +99A99 341 +62Q5A 223 +J9T47 568 +Q7388 894 +69662 744 +96J2T 323 +2A779 89 +Q2874 269 +77797 948 +5359A 864 +AJ9K4 482 +Q3Q44 567 +JT958 665 +A38J3 438 +J4666 296 +428J5 501 +38K8K 410 +6T979 709 +3533T 284 +2285A 910 +933T6 882 +K6666 786 +56Q32 992 +5J752 198 +AJJQJ 600 +KK5KK 3 +38T94 180 +67QTJ 69 +J6636 200 +229J8 493 +QJTQ3 247 +5KQ5K 149 +654AT 528 +T84T4 878 +Q23QQ 905 +QQQ74 325 +4JTQQ 408 +T4T78 340 +3T5T5 551 +3J3J3 391 +88844 631 +TTT9T 810 +57775 935 +A777J 604 +4555T 2 +A5J8T 942 +22AJJ 506 +22323 997 +A3323 624 +84442 516 +2T992 76 +J7T76 828 +J8552 995 +KTKK3 886 +33853 782 +53233 129 +44J4J 372 +KQQT2 480 +K5649 576 +3J63K 760 +2J666 827 +6JT68 318 +45Q64 849 +49884 801 +9KTTK 902 +66737 952 +5Q8J4 708 +57Q92 724 +627J7 331 +K22J6 473 +4T444 923 +J4444 552 +78J8J 491 +4K328 477 +4AA3A 808 +7A34Q 437 +AQ888 428 +8TA99 768 +AA9A9 143 +9K5AT 211 +77722 40 +TQTTT 941 +Q2A4K 492 +236T9 677 +J8686 746 +J585K 64 +TJKQT 582 +T3TTJ 157 +22266 38 +KT5TK 692 +QJQQJ 908 +4K623 279 +7JJJ7 173 +64A66 524 +J7AJ8 417 +K43Q3 769 +T662T 148 +54J2J 488 +K6485 44 +J6666 970 +J26J9 209 +8337Q 334 +A27A4 319 +A7T78 132 +K777A 842 +KKK4K 249 +99K9K 430 +8745K 151 +Q2QTJ 433 +QKQ76 525 +25Q2Q 533 +5QK6J 800 +77T77 558 +5K323 939 +33KK4 590 +K8A52 111 +ATQJ6 569 +ATK89 50 +4433A 836 +3KKKQ 891 +46TK4 538 +5249Q 447 +2462K 675 +8JT6T 336 +466J7 459 +7K7KK 838 +544Q4 959 +58773 483 +823J5 999 +2TKA5 752 +AKJ58 386 +7T833 99 +KQ88Q 659 +KJ3A4 790 +K9595 307 +3K3J4 534 +3838T 220 +32522 720 +366Q3 500 +J8868 989 +T7KTK 376 +JQQQA 14 +42555 409 +5T5T5 648 +4KK4Q 383 +K7777 884 +736A3 543 +343Q3 366 +TJ856 237 +JJ555 46 +K5QQQ 275 +QAQQ7 672 +8KTJQ 731 +QQQ3Q 47 +J257Q 575 +6Q3QQ 87 +QKK43 924 +TTATJ 998 +K44K5 771 +37895 881 +48823 521 +KKK74 456 +99J79 139 +J4542 635 +AJ96K 954 +K8937 411 +5J355 895 +96967 185 +333T3 562 +TAJ77 755 +J38A8 487 +AAT79 313 +A6Q73 398 +386JA 10 +J35Q8 623 +27758 969 +3K3KJ 966 +7928Q 627 +AAA4A 59 +2AA52 478 +848J8 133 +55225 843 +TTQT9 619 +3Q79K 255 +27AK8 58 +TKTKK 272 +KTTAT 333 +55666 802 +47748 454 +Q3T56 699 +63T3T 302 +8754Q 723 +4J86T 358 +8TTQ9 226 +5523J 125 +88588 606 +58AAA 208 +TK273 137 +4Q7KQ 160 +29292 577 +Q333Q 611 +22TT2 716 +A55AA 258 +64822 468 +22228 847 +2242T 788 +JA26Q 472 +8JAAA 174 +K5Q8A 175 +Q5AT4 732 +J4434 530 +76666 337 +9998Q 547 +9T2J9 100 +3Q982 90 +7727Q 281 +92944 973 +K2597 814 +K444K 36 +26KJ6 292 +34K38 962 +5A378 225 +636J9 375 +TTTT4 420 +A66TA 461 +69QK5 345 +76293 479 +66966 804 +A3383 297 +T82TT 657 +2QJJQ 156 +K2JK3 94 +K6K66 252 +K58QJ 876 +6J979 513 +92647 718 +QQ9Q9 586 +862Q5 20 +5465K 915 +KQ44Q 595 +T66T6 288 +TJT7T 710 +5JT8K 159 +KJTK3 603 +KKJTQ 949 +67776 914 +J4323 177 +22229 704 +96999 178 +8AJKA 70 +69T69 419 +65556 770 +87738 537 +547J4 835 +44766 421 +3355J 684 +2K266 647 +5TTT5 266 +3T3TT 332 +88JJ8 96 +QQ5K3 887 +K7JKK 377 +J8Q2Q 66 +2KKJ6 230 +TTKQT 277 +22Q92 18 +JTTTK 695 +J993Q 846 +88898 728 +88T87 715 +Q74J4 872 +4T999 951 +T997Q 289 +92QA9 726 +AJ394 900 +TT2T2 518 +JJJJJ 565 \ No newline at end of file diff --git a/aoc2023/src/day8/input.txt b/aoc2023/src/day8/input.txt new file mode 100644 index 0000000..e27fbc1 --- /dev/null +++ b/aoc2023/src/day8/input.txt @@ -0,0 +1,740 @@ +LRLRLLRLRLRRLRLRLRRLRLRLLRRLRRLRLRLRLLRRRLRRRLLRRLRLRLRRRLRRLRRRLRLRLRRLRLLRLRLRRLRRRLRLRRLRRRLLRLRLRRRLRRRLRLRRRLRLRRRLLRRLLLRRRLLRRRLRRRLRRRLRLRLRLLRLRRLRLRLLLRRLRRLRRLRLRRLRRLLRRLRLRRRLRLRLLRRRLRRRLRRRLLLRRRLRLRLRRLRRRLRRRLRLRRRLRRLRRRLRLRRLLRRRLRRRLLLRRLRLRLRRLRRRLRRLRRLRLRRRR + +GXT = (MQM, CHN) +MBK = (RCK, RCK) +HBS = (QHS, RXC) +SXK = (FDB, FKP) +NJB = (BSB, KJM) +SPD = (FNL, RSH) +FJF = (NFH, XJN) +GHV = (LSV, BTS) +QDT = (HXV, PDX) +MDH = (XDK, DKN) +AAA = (FKL, CFC) +GRB = (VDP, LMM) +CXK = (DVB, CRJ) +FDB = (FTD, CNK) +LQT = (BJV, SMQ) +TSK = (NQD, VSG) +VLF = (NDS, CTV) +PGP = (DKC, CKL) +PVJ = (FDB, FKP) +VSV = (NFP, QHX) +KXN = (XJN, NFH) +KMQ = (VBH, XXH) +QXR = (RMD, TLT) +DLN = (TPD, KBG) +BHK = (GRP, RXF) +TSX = (HQP, SHK) +PTV = (VSG, NQD) +QVN = (XBH, DHC) +DDM = (TCB, XRQ) +NKD = (CDR, BJM) +JNR = (FMC, SQN) +VPQ = (JGC, VCJ) +HPB = (STQ, DDM) +HRT = (JNR, BGH) +CNQ = (HQV, PJQ) +PMG = (LRB, XXP) +RKV = (XGN, VCG) +KVQ = (KHS, SLV) +MDM = (VDX, NSF) +VHT = (PGP, GJS) +BPD = (NBF, VNH) +JCQ = (JCB, XVR) +CFJ = (PQP, CBJ) +DSX = (BXN, VDS) +MGH = (PFV, NLQ) +MPK = (FND, BJX) +QFR = (HFC, CNG) +PHS = (VNH, NBF) +KTT = (MTG, SQM) +JBK = (CSR, VXV) +BKL = (DLB, SHQ) +GQH = (PCH, LDZ) +XVJ = (CQM, SLF) +VBN = (FFF, PDL) +KQH = (SLT, XLG) +SSN = (PQH, LFT) +MQM = (SBH, TTC) +SCR = (HGH, QGS) +XTZ = (XKM, JTJ) +ZZZ = (CFC, FKL) +PRA = (GRB, MDB) +VTV = (LXQ, HKP) +PPX = (SQM, MTG) +PVA = (MRJ, CVH) +BJH = (VTR, RKG) +KPH = (RFD, NJP) +HXG = (NVJ, HNG) +LRX = (DCX, MGH) +NFD = (PFR, FVQ) +TDG = (TDH, ZZZ) +XKM = (XDG, VHT) +CKT = (LDC, VPF) +QQR = (BFQ, FXC) +RGJ = (KTV, GFR) +XDK = (MVC, SPX) +TLT = (MBK, DGL) +CDR = (JBG, KPH) +LTH = (DFN, BHK) +PVV = (BFQ, FXC) +FCK = (FRJ, KVG) +FXB = (MDH, VSJ) +DHD = (LDJ, RNH) +HHR = (HSK, CJD) +LSV = (LNP, NMD) +JSX = (DPF, SNN) +SBH = (XKD, GTX) +BHJ = (JSX, TMN) +CQX = (XPG, RLB) +XRQ = (FJK, NCF) +GMF = (JBX, DRV) +KBD = (HCC, TND) +KGT = (NLK, FRX) +RKM = (RTM, FMQ) +GNM = (GML, NLB) +SXP = (RKG, VTR) +PMS = (XBH, DHC) +PQH = (PJD, CXK) +XXH = (BMB, JGJ) +RHL = (QHS, RXC) +DFS = (JVK, VBN) +QCS = (XGN, VCG) +MJJ = (DDM, STQ) +SPV = (PXX, RRT) +FRJ = (SNX, MPQ) +FKC = (CBF, RKM) +SRG = (QFH, LGP) +VVQ = (BJV, SMQ) +BQC = (DSP, TXQ) +SHQ = (NKR, RGJ) +KCS = (QGS, HGH) +MTV = (BXN, VDS) +CNC = (HPB, MJJ) +SNF = (XXP, LRB) +KTP = (QRX, KML) +GSC = (HSK, CJD) +QRX = (CRB, TXL) +MDB = (VDP, LMM) +PFV = (CLM, CTN) +RRB = (HHR, GSC) +DDQ = (PXX, RRT) +TJB = (LSX, XNR) +BSP = (TXC, LKB) +MMV = (DKK, NFD) +DCB = (XKP, TNJ) +QKV = (CTT, SFM) +XDG = (PGP, GJS) +JMJ = (JLK, NJB) +VBJ = (HJV, JFD) +QHM = (CLJ, QGP) +STR = (HXG, RFC) +DPF = (VNQ, DQQ) +RXF = (NHV, GBX) +FXC = (JLX, LBS) +XVR = (MVT, QHD) +KNM = (BJD, QCK) +GTX = (MSB, FNP) +XCS = (PTN, NRH) +CGS = (FRX, NLK) +RCK = (CQM, CQM) +CDS = (PRR, GCJ) +BXN = (KQC, MSV) +PTN = (VST, QHJ) +TPD = (HJF, TSS) +RNH = (TTK, DBN) +TSM = (TPD, KBG) +KTG = (GPT, BMD) +PJP = (XBR, TCM) +QPF = (KJF, NJX) +HKP = (PLS, PGK) +KBG = (HJF, TSS) +SQK = (LSD, KNM) +XKD = (MSB, FNP) +QQP = (LFB, LTK) +MDX = (KTJ, FXF) +JLK = (KJM, BSB) +FBR = (PMG, SNF) +GSJ = (TDH, TDH) +DQQ = (FKK, KRF) +CTV = (CQD, RQX) +MNT = (RLG, XXQ) +GFL = (FGJ, KMD) +BJK = (VQX, JCQ) +SPN = (NKS, CNQ) +LNL = (XLM, XLC) +HKF = (HKJ, NNC) +FTD = (CCX, MSS) +RPV = (MDQ, DGS) +DCX = (NLQ, PFV) +JGB = (DVT, DRH) +CGM = (CHN, MQM) +JNQ = (PPX, KTT) +BJM = (JBG, KPH) +NFP = (SPD, XCT) +TPL = (LSD, KNM) +XTV = (CTJ, HPX) +LKB = (PDF, SLK) +QVK = (KMQ, MGF) +QVP = (VCX, JNQ) +NSR = (TJB, NBB) +XLA = (DLB, SHQ) +QLP = (HBS, RHL) +BGH = (FMC, SQN) +BJX = (LRX, PNM) +MVC = (BPD, PHS) +DXQ = (TMN, JSX) +PBK = (QKV, CTH) +GBJ = (RNH, LDJ) +BMB = (HJS, TJT) +SHT = (MFQ, LCT) +HSK = (CGS, KGT) +DRH = (PKN, PBN) +PQF = (XKP, TNJ) +RPX = (HCT, HQT) +FPH = (VQL, NPJ) +GLC = (PMS, QVN) +VDP = (SXK, PVJ) +JFD = (QBD, DGT) +LQL = (NPT, GVS) +TPQ = (NHL, MTD) +KRF = (HVT, MPK) +JQG = (QDT, PCK) +PJQ = (KVH, LBV) +VBB = (XXQ, RLG) +PSH = (SQV, TLB) +VXH = (VCX, JNQ) +VQD = (NBB, TJB) +JVD = (GDJ, JGQ) +SDR = (FTF, NQL) +NQQ = (TFM, CMC) +FNL = (LTV, CSX) +FVS = (NSF, VDX) +VTJ = (VXH, QVP) +KQC = (LGG, LGG) +SCS = (MTV, DSX) +QPS = (HMV, QQP) +CQM = (JDD, JDD) +FJX = (VBB, MNT) +GBQ = (BXV, LFR) +HGH = (SQK, TPL) +SLT = (FXB, NGN) +PBD = (HDC, FCX) +CKL = (MQS, NND) +LSX = (MBF, SPN) +HNG = (JQG, GKD) +MFQ = (PSH, TGK) +SNX = (GCS, KSF) +FMQ = (DXT, DFS) +TXC = (SLK, PDF) +VST = (SSN, LSR) +BFB = (VSV, SVC) +VNX = (TMF, QFS) +VPK = (VBB, MNT) +NVR = (XPG, RLB) +FLS = (FSL, CKH) +FKP = (FTD, CNK) +MGF = (XXH, VBH) +LNM = (NFD, DKK) +FNP = (VTT, MVG) +HDC = (PXP, GVH) +KVL = (LCT, MFQ) +XGP = (RHG, RTK) +JCT = (NJB, JLK) +XSL = (SVC, VSV) +SRS = (HPD, XBL) +FSL = (JMG, TFD) +CXB = (KQV, QGK) +QRP = (CGF, CQF) +PRG = (MDX, KPL) +VLL = (MRB, MHN) +VNQ = (KRF, FKK) +NPJ = (VPK, FJX) +MHN = (SRG, TTL) +KFN = (DFN, BHK) +FVQ = (LJM, TJV) +GKD = (QDT, PCK) +GVS = (FCK, NGC) +MBF = (CNQ, NKS) +SMQ = (KSV, KMF) +CRJ = (GSJ, TDG) +LHT = (BTL, KMB) +KJM = (KJC, BGC) +TTC = (GTX, XKD) +QFT = (PRM, KXS) +SDS = (JMP, TSR) +BLX = (PQF, DCB) +PXX = (LJT, QFK) +SQV = (FCB, HXF) +RQX = (DBJ, VTV) +THV = (GJL, MND) +SLK = (XBP, CXB) +LVS = (CTJ, HPX) +TSS = (CGL, JST) +MTG = (RKT, GTJ) +FFF = (GBQ, VTM) +XMV = (KVL, SHT) +FDJ = (MLG, MLG) +HPD = (MQK, FLS) +TLB = (HXF, FCB) +BGC = (SCR, KCS) +FBM = (PBD, MFK) +TJP = (JSS, GHV) +TXL = (NQC, RXH) +TKM = (GLQ, TKP) +RNS = (BJK, PHJ) +RRT = (LJT, QFK) +DHC = (XVF, STR) +RXM = (KVL, SHT) +JBX = (GBJ, DHD) +TBR = (HJV, JFD) +MFK = (HDC, FCX) +TFD = (QXN, QSK) +HMV = (LFB, LTK) +RMD = (MBK, DGL) +RJP = (CTX, TPQ) +CBF = (FMQ, RTM) +XXG = (JDH, TJP) +PDX = (XGQ, BSP) +XBL = (MQK, FLS) +GMT = (PCB, GTK) +DGT = (GNH, KVQ) +CHN = (TTC, SBH) +NKS = (HQV, PJQ) +HJC = (DXQ, BHJ) +CSR = (TSX, HSM) +XTK = (BJM, CDR) +DRT = (MPB, PSV) +HQT = (CRM, XTZ) +HNM = (SXJ, GMF) +NLQ = (CLM, CTN) +LTK = (PGS, SCS) +DNR = (DRT, QLK) +QVR = (DLN, TSM) +VLD = (GSP, CKT) +LFT = (PJD, CXK) +KVG = (SNX, MPQ) +FBS = (JSN, KFT) +GTK = (XHH, LCL) +KJZ = (MDB, GRB) +QGK = (PKK, VFK) +VDS = (KQC, MSV) +KHS = (TRF, JVD) +BHH = (MLG, RPX) +JVL = (CQF, CGF) +RGQ = (CQJ, KTG) +VTM = (LFR, BXV) +GML = (VFF, VLD) +CTJ = (FKC, PDT) +BJV = (KSV, KSV) +SPX = (BPD, PHS) +CTX = (NHL, MTD) +LRB = (HHP, CDS) +XHH = (MKX, KQH) +FDL = (QFT, MNG) +CCX = (HKF, VPS) +GPT = (VHX, QPF) +VFK = (VJX, QPS) +QFH = (LHP, CKD) +KMD = (QFR, XVX) +MSB = (VTT, MVG) +TRF = (JGQ, GDJ) +PHJ = (VQX, JCQ) +DBN = (NRQ, GBN) +JPM = (PMG, SNF) +TND = (HQB, XXT) +FJK = (XHV, FBS) +PNM = (DCX, MGH) +QFK = (RKR, QVK) +VNV = (NRC, XXN) +QXN = (PSG, CFJ) +NND = (HJC, MPN) +DQM = (TJP, JDH) +PGK = (XQK, PRG) +HMK = (BJK, PHJ) +DLB = (RGJ, NKR) +PXP = (XTK, NKD) +LGG = (CNP, CNP) +HKJ = (VQD, NSR) +TMN = (SNN, DPF) +FRX = (FBR, JPM) +PTA = (JTJ, XKM) +NRH = (VST, QHJ) +BQD = (KTP, GFF) +VTT = (KFN, LTH) +GMV = (VCJ, JGC) +XLG = (FXB, NGN) +JDH = (GHV, JSS) +TJT = (JCT, JMJ) +HCT = (CRM, CRM) +BGR = (JMP, TSR) +CKH = (JMG, TFD) +DHX = (QGP, CLJ) +BQN = (TBN, BTQ) +RSH = (CSX, LTV) +SXJ = (DRV, JBX) +MRB = (SRG, TTL) +GTG = (SPV, DDQ) +VQL = (VPK, FJX) +RXC = (GXT, CGM) +MSV = (LGG, HLF) +PSV = (GBL, RRB) +LRV = (XTV, LVS) +MVR = (NQL, FTF) +JDD = (GRB, MDB) +TKG = (LHT, VLM) +NHL = (MMV, LNM) +XBR = (DHX, QHM) +DNK = (TXQ, DSP) +GBX = (SDS, BGR) +PDT = (CBF, RKM) +PGH = (FGJ, KMD) +GTR = (RPT, CXM) +GBP = (LNB, DNR) +DKC = (MQS, NND) +HSM = (SHK, HQP) +VVV = (GLQ, TKP) +TTJ = (DNK, BQC) +CJD = (CGS, KGT) +VSG = (RMJ, BQN) +XGQ = (TXC, LKB) +CNP = (PCH, PCH) +JPT = (NDS, CTV) +MVT = (GBP, RLR) +HJF = (CGL, JST) +KGB = (GML, NLB) +MPN = (DXQ, BHJ) +KFT = (DTS, DJP) +QCK = (RLF, QVR) +MJR = (MJD, RPS) +LBV = (FPH, RFH) +JMG = (QSK, QXN) +LDJ = (DBN, TTK) +XBP = (KQV, QGK) +RTM = (DFS, DXT) +VBH = (BMB, JGJ) +LHP = (MMH, BPV) +PMR = (MDQ, DGS) +NNR = (JDF, NVP) +GJL = (JDT, QLP) +JST = (SBL, LNL) +KML = (TXL, CRB) +FBA = (KQG, JSC) +KSF = (TLH, JBK) +VFF = (CKT, GSP) +PSG = (PQP, CBJ) +LDZ = (JSC, KQG) +DKN = (MVC, SPX) +DRV = (DHD, GBJ) +MJB = (HNM, LKH) +MNG = (KXS, PRM) +SNN = (VNQ, DQQ) +GNH = (KHS, SLV) +BJF = (HPD, XBL) +LGP = (LHP, CKD) +XVZ = (CVH, MRJ) +GRP = (NHV, GBX) +NGC = (FRJ, KVG) +BJD = (QVR, RLF) +FKL = (LRV, DSH) +KSV = (VHK, VHK) +XQK = (KPL, MDX) +NRC = (DMT, GLC) +VNH = (LQT, VVQ) +CGL = (SBL, SBL) +GVH = (NKD, XTK) +DBJ = (LXQ, HKP) +KVC = (PMX, XPR) +NJP = (VXG, TTJ) +VXG = (BQC, DNK) +CLJ = (JVL, QRP) +RFH = (VQL, NPJ) +GFR = (KGB, GNM) +KQV = (VFK, PKK) +SQM = (GTJ, RKT) +MQS = (MPN, HJC) +BXV = (RJP, CLN) +VSJ = (DKN, XDK) +SHK = (XMV, RXM) +GSP = (LDC, VPF) +MSS = (VPS, HKF) +SFM = (NVR, CQX) +FMC = (BJF, SRS) +DXS = (RMD, TLT) +QHS = (CGM, GXT) +DJP = (FDL, JHP) +MPT = (PQF, DCB) +LXQ = (PLS, PGK) +RFD = (TTJ, VXG) +JGJ = (HJS, TJT) +XGN = (KVT, LQL) +NBB = (LSX, XNR) +CKD = (MMH, BPV) +CTT = (CQX, NVR) +CBJ = (RRG, KBD) +CNG = (THV, QBK) +BMD = (QPF, VHX) +XLC = (BKL, SCZ) +KQG = (CPT, VLL) +KTJ = (KVC, VBM) +JBG = (NJP, RFD) +KVT = (NPT, GVS) +QGP = (JVL, QRP) +HFC = (THV, QBK) +JDT = (HBS, RHL) +MNF = (NRS, XVZ) +GKR = (GTK, PCB) +NVP = (NQQ, RRQ) +MPQ = (GCS, KSF) +PLS = (PRG, XQK) +JDF = (NQQ, RRQ) +CQD = (DBJ, VTV) +LNP = (TPK, SCP) +HQP = (XMV, RXM) +RJM = (MJD, RPS) +MQK = (FSL, CKH) +KXS = (HBJ, HMP) +CSX = (QCS, RKV) +VCG = (LQL, KVT) +NVJ = (JQG, GKD) +NLB = (VLD, VFF) +CQN = (NVP, JDF) +PDL = (VTM, GBQ) +SJM = (JNR, BGH) +VTR = (HMK, RNS) +QGS = (SQK, TPL) +NFH = (XRH, DKD) +TXQ = (GFL, PGH) +GCJ = (XSL, BFB) +RKT = (CQN, NNR) +BFQ = (LBS, JLX) +PKN = (FGD, TKG) +XKP = (FDJ, BHH) +QHX = (SPD, XCT) +NKR = (GFR, KTV) +GLQ = (FBM, KLD) +PRR = (XSL, BFB) +XLT = (HPB, MJJ) +HRD = (QVP, VXH) +SNL = (VSF, GTG) +TBN = (XCS, LJX) +RPS = (NFM, VNX) +MKX = (XLG, SLT) +NQC = (MPT, BLX) +DKK = (FVQ, PFR) +LCT = (TGK, PSH) +XHV = (JSN, KFT) +PRM = (HMP, HBJ) +NQL = (BQD, TTN) +HQV = (KVH, LBV) +RKG = (HMK, RNS) +LCL = (KQH, MKX) +LMM = (PVJ, SXK) +NCF = (XHV, FBS) +NRS = (MRJ, CVH) +RTK = (RJM, MJR) +RFC = (NVJ, HNG) +XXQ = (SXP, BJH) +RPT = (NMV, VNV) +QBR = (CTH, QKV) +FXF = (VBM, KVC) +CRB = (NQC, RXH) +NQD = (BQN, RMJ) +RKR = (KMQ, MGF) +DSP = (GFL, PGH) +DSH = (XTV, LVS) +DMT = (QVN, PMS) +VPS = (NNC, HKJ) +JSC = (CPT, VLL) +XKS = (DVT, DRH) +TTV = (LKH, HNM) +MJD = (VNX, NFM) +SCZ = (SHQ, DLB) +XVX = (CNG, HFC) +KTV = (KGB, GNM) +QHJ = (LSR, SSN) +CQJ = (GPT, BMD) +NMD = (TPK, SCP) +DVB = (GSJ, GSJ) +JMP = (MQP, RGQ) +BSB = (BGC, KJC) +CPT = (MRB, MHN) +PQP = (RRG, KBD) +RLG = (BJH, SXP) +VQX = (XVR, JCB) +XJN = (XRH, DKD) +JHP = (QFT, MNG) +KMB = (HRT, SJM) +QSK = (PSG, CFJ) +DKD = (VLF, JPT) +NHV = (BGR, SDS) +HXV = (XGQ, BSP) +XXN = (DMT, GLC) +VLM = (KMB, BTL) +RLR = (DNR, LNB) +PCH = (KQG, JSC) +XRH = (VLF, JPT) +SBL = (XLM, XLM) +CRM = (JTJ, XKM) +JSS = (BTS, LSV) +CXM = (NMV, VNV) +MLG = (HCT, HCT) +JXH = (MVR, SDR) +XBH = (XVF, STR) +DXT = (VBN, JVK) +JSN = (DTS, DJP) +KLD = (MFK, PBD) +KVH = (RFH, FPH) +NJX = (GMV, VPQ) +NRQ = (GKR, GMT) +HXF = (DXS, QXR) +DGS = (SNL, BVF) +LJT = (RKR, QVK) +JLX = (XGP, TKS) +FCX = (PXP, GVH) +VDX = (VBJ, TBR) +VSF = (SPV, DDQ) +VCX = (KTT, PPX) +MMH = (MDM, FVS) +MPB = (GBL, RRB) +RLF = (TSM, DLN) +RMJ = (BTQ, TBN) +VJX = (QQP, HMV) +XVF = (RFC, HXG) +CTN = (VVV, TKM) +QHD = (GBP, RLR) +JGC = (JXH, QCQ) +KPL = (FXF, KTJ) +NGN = (MDH, VSJ) +XPG = (MJB, TTV) +MQP = (KTG, CQJ) +JCB = (QHD, MVT) +MNM = (RPT, CXM) +RXH = (BLX, MPT) +HHP = (GCJ, PRR) +SLV = (JVD, TRF) +HVT = (BJX, FND) +MTD = (MMV, LNM) +TTL = (QFH, LGP) +LTV = (QCS, RKV) +VXV = (TSX, HSM) +TCM = (QHM, DHX) +NBF = (LQT, VVQ) +BTQ = (LJX, XCS) +TKP = (KLD, FBM) +LDC = (HSD, PJP) +VHK = (NRS, NRS) +NFM = (TMF, QFS) +GTJ = (NNR, CQN) +LSD = (QCK, BJD) +HJV = (QBD, DGT) +QBK = (MND, GJL) +XNR = (MBF, SPN) +HQB = (KXN, FJF) +TNJ = (FDJ, BHH) +TGK = (SQV, TLB) +KMF = (VHK, MNF) +JVK = (PDL, FFF) +NSF = (VBJ, TBR) +SCP = (QQR, PVV) +XXP = (HHP, CDS) +VHX = (NJX, KJF) +VCJ = (JXH, QCQ) +KJC = (KCS, SCR) +XXT = (FJF, KXN) +NNC = (VQD, NSR) +VBM = (XPR, PMX) +JTJ = (XDG, VHT) +CNK = (CCX, MSS) +FTF = (TTN, BQD) +LKH = (SXJ, GMF) +TLH = (CSR, VXV) +GFF = (KML, QRX) +LFR = (CLN, RJP) +DTS = (FDL, JHP) +TTN = (KTP, GFF) +BTL = (HRT, SJM) +HJS = (JCT, JMJ) +HBJ = (JVR, GSF) +SLF = (JDD, KJZ) +CVH = (CNC, XLT) +JGQ = (JGB, XKS) +FGJ = (QFR, XVX) +STQ = (XRQ, TCB) +GCS = (JBK, TLH) +FKK = (HVT, MPK) +LJM = (DQM, XXG) +BTS = (NMD, LNP) +SVC = (NFP, QHX) +VPF = (PJP, HSD) +NPT = (NGC, FCK) +TTK = (GBN, NRQ) +XCT = (FNL, RSH) +RRG = (TND, HCC) +HMP = (GSF, JVR) +TJV = (XXG, DQM) +CTH = (CTT, SFM) +TPK = (QQR, PVV) +LSR = (PQH, LFT) +XLM = (BKL, BKL) +FGD = (VLM, LHT) +GSF = (VTJ, HRD) +PBN = (FGD, TKG) +NMV = (NRC, XXN) +CLN = (TPQ, CTX) +TMF = (TSK, PTV) +HPX = (FKC, PDT) +GBN = (GMT, GKR) +PCK = (PDX, HXV) +TCB = (NCF, FJK) +LJX = (NRH, PTN) +QBD = (KVQ, GNH) +CMC = (QBR, PBK) +GBL = (HHR, GSC) +SQN = (BJF, SRS) +FCB = (QXR, DXS) +GDJ = (XKS, JGB) +PCB = (LCL, XHH) +BPV = (MDM, FVS) +PJD = (DVB, DVB) +RHG = (MJR, RJM) +DVT = (PKN, PBN) +TFM = (QBR, PBK) +HCC = (HQB, XXT) +PGS = (DSX, MTV) +TSR = (MQP, RGQ) +KJF = (GMV, VPQ) +GJS = (DKC, CKL) +LNB = (QLK, DRT) +PKK = (QPS, VJX) +TKS = (RHG, RTK) +QFS = (TSK, PTV) +DGL = (RCK, XVJ) +XPR = (MNM, GTR) +TDH = (FKL, CFC) +PDF = (XBP, CXB) +DFN = (RXF, GRP) +JVR = (HRD, VTJ) +LBS = (TKS, XGP) +QCQ = (MVR, SDR) +MND = (JDT, QLP) +PFR = (LJM, TJV) +QLK = (MPB, PSV) +CFC = (LRV, DSH) +PMX = (GTR, MNM) +CGF = (PMR, RPV) +MVG = (LTH, KFN) +NLK = (FBR, JPM) +LFB = (SCS, PGS) +BVF = (VSF, GTG) +MDQ = (BVF, SNL) +CQF = (PMR, RPV) +FND = (LRX, PNM) +MRJ = (CNC, XLT) +HSD = (XBR, TCM) +HLF = (CNP, GQH) +RRQ = (CMC, TFM) +CLM = (TKM, VVV) +RLB = (TTV, MJB) +NDS = (RQX, CQD) \ No newline at end of file diff --git a/aoc2023/src/day9/input.txt b/aoc2023/src/day9/input.txt new file mode 100644 index 0000000..6e0678f --- /dev/null +++ b/aoc2023/src/day9/input.txt @@ -0,0 +1,200 @@ +16 22 27 23 4 -16 23 267 1025 2943 7407 17445 39670 88339 193607 417868 887273 1851158 3792224 7628687 15083115 +12 27 53 97 184 369 757 1550 3165 6502 13489 28103 58181 118520 236055 458342 867210 1600341 2884757 5087813 8793398 +3 9 23 45 75 113 159 213 275 345 423 509 603 705 815 933 1059 1193 1335 1485 1643 +14 21 42 87 173 334 631 1162 2072 3563 5904 9441 14607 21932 32053 45724 63826 87377 117542 155643 203169 +6 13 20 27 34 41 48 55 62 69 76 83 90 97 104 111 118 125 132 139 146 +18 28 38 48 58 68 78 88 98 108 118 128 138 148 158 168 178 188 198 208 218 +21 33 40 47 73 158 375 850 1793 3543 6630 11857 20405 33964 54893 86412 132829 199805 294660 426723 607729 +5 11 28 62 114 176 227 229 123 -175 -778 -1832 -3520 -6066 -9739 -14857 -21791 -30969 -42880 -58078 -77186 +24 40 75 158 329 650 1234 2297 4245 7835 14509 27104 51294 98315 189749 365429 696074 1303683 2396426 4333544 7754453 +18 23 29 46 96 212 448 922 1929 4181 9250 20305 43249 88396 172934 324721 588708 1038939 1802431 3107544 5380614 +23 48 93 172 303 512 850 1439 2577 4950 10022 20709 42513 85461 167621 322006 611043 1157808 2213227 4297234 8485467 +-5 1 16 41 89 207 507 1216 2767 5970 12327 24602 47877 91653 174402 333999 651945 1308548 2704118 5713694 12198267 +6 29 72 158 337 698 1389 2653 4895 8818 15726 28221 51759 97922 190866 379323 758008 1504863 2945432 5665084 10707897 +9 12 14 16 18 23 61 248 912 2857 7918 20117 47998 109127 238298 501654 1019615 2002014 3798866 6969266 12368366 +17 22 22 7 -38 -133 -303 -578 -993 -1588 -2408 -3503 -4928 -6743 -9013 -11808 -15203 -19278 -24118 -29813 -36458 +-2 4 18 55 139 307 619 1172 2109 3609 5862 9109 14010 22956 43541 96348 230584 553042 1278506 2813195 5887325 +8 15 28 69 174 408 898 1887 3825 7548 14661 28355 55092 107964 213209 422581 836414 1645965 3210142 6193077 11808762 +16 42 93 189 363 674 1225 2187 3843 6689 11662 20608 37156 68227 126480 234080 428266 769300 1351491 2318111 3881153 +22 28 29 28 44 131 412 1147 2869 6647 14589 30812 63325 127656 253684 498111 966448 1850438 3489669 6469940 11775962 +10 22 64 147 279 478 797 1361 2416 4390 7966 14167 24453 40830 65971 103349 157382 233590 338764 481147 670627 +26 44 80 147 257 416 626 905 1352 2314 4756 10993 26015 59722 130486 270571 534070 1008160 1828632 3200823 5427261 +10 13 25 59 130 257 465 787 1266 1957 2929 4267 6074 8473 11609 15651 20794 27261 35305 45211 57298 +22 34 53 80 110 130 129 142 361 1361 4516 12738 31795 72709 156208 321132 640567 1253344 2426426 4679304 9031095 +-3 3 14 32 60 112 238 564 1347 3045 6402 12548 23114 40362 67330 107992 167433 252039 369702 530040 744632 +9 6 1 -6 -15 -26 -39 -54 -71 -90 -111 -134 -159 -186 -215 -246 -279 -314 -351 -390 -431 +8 19 30 41 52 63 74 85 96 107 118 129 140 151 162 173 184 195 206 217 228 +12 28 56 112 219 400 680 1122 1935 3705 7813 17117 36988 76803 152011 286901 518214 899754 1508166 2450062 3870689 +4 18 45 100 211 419 778 1355 2230 3496 5259 7638 10765 14785 19856 26149 33848 43150 54265 67416 82839 +14 27 62 122 200 276 326 367 589 1672 5468 16376 44007 108213 248366 540095 1124752 2259977 4404234 8354542 15465362 +10 22 40 63 103 210 507 1241 2865 6190 12701 25249 49587 97767 195548 398210 823495 1718635 3594121 7486884 15473014 +14 34 81 182 390 802 1584 3006 5499 9763 16982 29248 50393 87661 155200 281530 525422 1008672 1981041 3943806 7877282 +12 6 3 23 101 286 644 1284 2444 4698 9375 19317 40145 82250 163780 314954 584100 1045886 1812291 3046947 4983573 +13 21 32 52 86 138 211 307 427 571 738 926 1132 1352 1581 1813 2041 2257 2452 2616 2738 +17 35 58 79 89 86 96 217 705 2144 5802 14399 33741 76089 166928 358407 755996 1571412 3227213 6560698 13212768 +17 31 59 122 252 488 875 1475 2402 3896 6454 11039 19391 34467 61040 106490 181823 302957 492317 780784 1210046 +11 13 19 31 63 168 488 1351 3457 8223 18396 39097 79555 156016 296889 552619 1016132 1867206 3470206 6587672 12837496 +16 29 54 116 265 600 1300 2668 5219 9890 18523 34882 66641 129080 251748 490245 946750 1805263 3391104 6269484 11405501 +14 27 57 121 242 458 839 1513 2706 4807 8477 14831 25734 44266 75427 127171 211878 348395 564801 902077 1418890 +7 20 34 49 65 82 100 119 139 160 182 205 229 254 280 307 335 364 394 425 457 +1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 +11 27 54 101 191 376 755 1502 2915 5494 10051 17860 30889 52245 87140 144991 243747 418245 735396 1320359 2399651 +2 8 29 83 199 423 835 1581 2927 5359 9789 17981 33374 62532 117469 219074 401880 720802 1262037 2164843 3671777 +6 24 54 96 150 216 294 384 486 600 726 864 1014 1176 1350 1536 1734 1944 2166 2400 2646 +10 19 51 124 260 486 847 1434 2430 4183 7326 12972 22998 40360 69185 113940 176032 244249 271543 122978 -535002 +-2 -4 -14 -20 14 157 520 1272 2677 5175 9538 17144 30453 53895 95688 171741 313968 587314 1122914 2179488 4251816 +10 2 -8 -10 16 111 367 983 2360 5278 11264 23369 47724 96431 192545 378084 726118 1357970 2466328 4344512 7421136 +9 22 62 142 278 503 886 1552 2699 4608 7642 12230 18832 27881 39698 54376 71629 90602 109638 125998 135530 +-2 -1 13 46 97 157 212 250 272 307 431 790 1627 3313 6382 11570 19858 32519 51169 77822 114949 +18 43 87 167 324 645 1288 2508 4685 8358 14272 23448 37289 57738 87507 130399 191748 279005 402501 576421 820026 +-8 -3 21 87 247 597 1292 2561 4722 8197 13527 21387 32601 48157 69222 97157 133532 180141 239017 312447 402987 +1 15 44 102 209 386 650 1009 1457 1969 2496 2960 3249 3212 2654 1331 -1055 -4861 -10508 -18486 -29359 +5 1 -2 6 59 235 682 1661 3639 7499 14980 29518 57729 111857 213604 399865 731009 1302477 2260610 3823774 6310015 +1 9 37 102 234 477 887 1529 2484 3904 6221 10771 21422 48445 117084 285457 680175 1564375 3463249 7388968 15233734 +-3 -3 -1 11 59 207 588 1446 3189 6453 12177 21689 36803 59927 94182 143532 212925 308445 437475 608871 833147 +10 8 4 -1 1 26 99 259 588 1312 3062 7435 18059 42442 94973 201543 406366 781704 1441336 2558759 4391269 +10 15 18 27 59 146 351 801 1756 3756 7920 16506 33869 67961 132485 249722 453870 794437 1338782 2172261 3393567 +7 15 41 104 240 511 1006 1830 3083 4847 7237 10652 16512 29023 58918 130730 296023 656207 1400169 2864048 5623160 +-8 -4 15 66 176 382 731 1280 2096 3256 4847 6966 9720 13226 17611 23012 29576 37460 46831 57866 70752 +11 15 15 11 3 -9 -25 -45 -69 -97 -129 -165 -205 -249 -297 -349 -405 -465 -529 -597 -669 +-1 2 8 24 76 213 509 1071 2071 3838 7075 13309 25742 50751 100388 196360 376127 701946 1273914 2248326 3862968 +11 12 10 -4 -30 -41 52 467 1667 4541 10659 22594 44276 81300 141049 232411 364763 545762 777320 1048944 1327390 +9 11 12 20 63 215 648 1733 4223 9564 20404 41417 80649 151761 277849 498056 879093 1535245 2662704 4597458 7910851 +21 22 23 43 114 293 701 1602 3535 7522 15407 30447 58395 109537 202601 372448 685608 1272236 2392115 4569768 8866201 +17 27 37 47 57 67 77 87 97 107 117 127 137 147 157 167 177 187 197 207 217 +18 42 72 103 130 150 170 224 408 956 2402 5903 13836 30828 65432 132724 258166 483158 872788 1526383 2591566 +23 30 36 41 45 48 50 51 51 50 48 45 41 36 30 23 15 6 -4 -15 -27 +14 31 52 83 148 308 690 1526 3202 6317 11752 20749 35000 56746 88886 135096 199958 289099 409340 568855 777340 +4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 +14 26 44 76 143 283 574 1197 2563 5538 11840 24799 50942 103413 209274 424645 865170 1765883 3597017 7286172 14643193 +12 27 49 69 87 136 330 950 2594 6451 14824 32143 66919 135472 268945 526276 1017696 1946291 3679643 6870089 12651367 +11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 +10 35 74 146 282 527 958 1744 3300 6630 14020 30337 65320 137420 279964 550689 1046022 1921877 3423206 5925084 9988734 +20 29 40 59 108 247 607 1436 3177 6629 13289 26035 50387 96675 183550 343396 630338 1131693 1983878 3393971 5668318 +8 24 59 134 284 569 1103 2113 4045 7744 14750 27772 51427 93361 165904 288451 490806 817776 1335357 2138914 3363822 +11 25 55 105 179 281 415 585 795 1049 1351 1705 2115 2585 3119 3721 4395 5145 5975 6889 7891 +19 37 74 159 334 661 1245 2294 4257 8117 15987 32302 66195 136227 279739 571067 1156243 2317357 4588524 8958785 17217096 +-2 9 41 103 219 443 870 1652 3057 5656 10790 21562 44740 94217 197246 406018 820326 1634301 3236137 6423499 12866391 +5 -1 -8 -9 10 70 199 432 811 1385 2210 3349 4872 6856 9385 12550 16449 21187 26876 33635 41590 +19 32 45 58 71 84 97 110 123 136 149 162 175 188 201 214 227 240 253 266 279 +22 37 55 71 94 167 396 1005 2447 5608 12151 25096 49895 96676 185249 356351 696284 1389007 2822275 5796409 11921644 +22 47 92 163 266 410 610 889 1282 1854 2764 4460 8230 17669 42342 106334 266942 653145 1540604 3491025 7600370 +23 38 73 146 277 488 805 1274 2012 3332 6035 12106 26379 60395 140880 327309 746281 1655398 3556625 7389446 14848405 +10 34 81 160 274 417 573 715 811 876 1179 2852 9421 30324 88549 236536 588096 1380274 3089189 6639788 13773628 +17 32 52 70 76 73 108 318 991 2642 6104 12634 24034 42787 72208 116610 181485 273700 401708 575774 808216 +-4 7 32 78 155 279 498 962 2061 4658 10451 22528 46285 91178 174513 330071 627521 1214340 2401733 4831449 9782898 +-1 1 -1 -2 13 71 214 503 1023 1889 3253 5312 8317 12583 18500 26545 37295 51441 69803 93346 123197 +14 25 55 119 234 420 706 1143 1844 3111 5790 12143 27772 65506 152698 344108 743534 1538777 3056905 5851463 10843458 +-7 -7 2 25 72 160 317 595 1112 2172 4561 10190 23357 53033 116746 246846 500187 972563 1819588 3286119 5746790 +24 51 91 144 210 289 381 486 604 735 879 1036 1206 1389 1585 1794 2016 2251 2499 2760 3034 +-6 -8 -7 -4 9 70 282 871 2293 5443 12063 25532 52395 105321 208785 409850 798384 1544682 2969297 5672672 10775633 +18 38 74 128 197 273 343 389 388 312 128 -202 -721 -1477 -2523 -3917 -5722 -8006 -10842 -14308 -18487 +14 14 6 -15 -54 -116 -206 -329 -490 -694 -946 -1251 -1614 -2040 -2534 -3101 -3746 -4474 -5290 -6199 -7206 +0 4 22 78 215 499 1023 1911 3322 5454 8548 12892 18825 26741 37093 50397 67236 88264 114210 145882 184171 +15 19 27 58 141 316 650 1285 2551 5196 10802 22466 45823 90469 171801 313223 548567 924441 1502037 2357706 3581329 +28 49 76 114 185 353 769 1757 3977 8715 18361 37142 72176 134903 242928 422277 710018 1157133 1831442 2820274 4232451 +2 -5 0 35 133 356 819 1728 3430 6476 11736 20729 36639 67155 131593 277209 613962 1384465 3098432 6781691 14423617 +-2 7 41 121 269 517 931 1662 3062 5945 12131 25493 53858 112344 229132 455405 882418 1670639 3098937 5646285 10124879 +15 19 18 9 -6 -15 9 113 369 879 1780 3249 5508 8829 13539 20025 28739 40203 55014 73849 97470 +9 14 33 89 229 533 1128 2215 4117 7356 12767 21657 36017 58795 94238 148311 229201 347914 518973 761225 1098765 +8 23 51 104 202 386 739 1423 2763 5438 10883 22095 45241 92932 191019 392729 807586 1658885 3393971 6888230 13809204 +6 3 10 41 110 231 418 685 1046 1515 2106 2833 3710 4751 5970 7381 8998 10835 12906 15225 17806 +12 12 16 37 101 264 650 1525 3438 7497 15913 33051 67399 135147 266525 516779 984800 1844138 3393654 6138665 10918457 +9 30 68 138 276 551 1072 2001 3595 6307 10985 19236 34096 61304 111765 206261 384197 719228 1346090 2504950 4612204 +23 38 66 121 224 409 731 1285 2251 3984 7170 13069 23864 43131 76439 132081 221927 362378 575386 889489 1340792 +16 28 40 52 64 76 88 100 112 124 136 148 160 172 184 196 208 220 232 244 256 +17 30 61 119 219 397 747 1501 3179 6842 14487 29629 58121 109269 197305 343287 577501 942446 1496489 2318283 3512047 +-1 5 14 37 100 253 588 1271 2598 5105 9816 18826 36619 72851 147828 302628 616809 1237973 2429186 4642459 8629254 +16 36 76 164 342 666 1206 2046 3284 5032 7416 10576 14666 19854 26322 34266 43896 55436 69124 85212 103966 +-5 -3 12 63 182 411 809 1475 2612 4686 8786 17372 35707 74388 153464 308525 598601 1114243 1980956 3346921 5332708 +14 26 38 50 62 74 86 98 110 122 134 146 158 170 182 194 206 218 230 242 254 +2 -4 -19 -52 -115 -221 -369 -502 -417 401 3053 9640 23844 51688 102447 189584 331368 550394 870413 1307468 1850007 +21 43 82 139 220 346 563 952 1639 2805 4696 7633 12022 18364 27265 39446 55753 77167 104814 139975 184096 +-8 -16 -17 2 54 155 326 590 966 1484 2301 4109 9224 24092 64560 166325 404748 930980 2035275 4253332 8536722 +-2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 +12 33 69 137 269 529 1047 2087 4183 8402 16827 33411 65487 126554 241758 459276 874624 1682767 3288727 6538653 13194051 +5 11 36 85 167 311 593 1176 2363 4661 8852 16065 27841 46181 73565 112928 167577 241031 336764 457829 606339 +5 0 6 43 134 309 628 1231 2423 4814 9565 18848 36718 70725 134771 253948 472385 865492 1558424 2753105 4766758 +20 31 42 53 64 75 86 97 108 119 130 141 152 163 174 185 196 207 218 229 240 +17 34 57 94 167 331 710 1554 3321 6788 13195 24426 43231 73493 120544 191534 295857 445638 656285 947110 1342023 +19 22 16 1 -16 -13 61 313 960 2430 5532 11711 23385 44323 79959 137439 225057 350542 517400 718181 923118 +12 20 36 60 92 132 180 236 300 372 452 540 636 740 852 972 1100 1236 1380 1532 1692 +15 28 66 154 345 743 1533 3025 5728 10495 18847 33738 61349 115157 224805 454707 941713 1968938 4106276 8470690 17196453 +26 54 104 181 285 412 556 719 953 1484 3011 7356 18816 46948 112339 258637 577588 1260474 2701490 5699779 11842279 +-5 0 13 48 130 307 671 1382 2697 5034 9163 16738 31609 62754 130392 278202 597329 1273687 2682530 5580428 11497888 +8 23 49 86 133 194 288 465 841 1695 3749 8922 22170 55570 136666 324373 737550 1603839 3339673 6676646 12854891 +7 18 29 40 51 62 73 84 95 106 117 128 139 150 161 172 183 194 205 216 227 +10 24 44 69 95 111 110 139 432 1714 5858 17254 45544 110822 253017 547981 1133786 2251864 4308844 7966159 14265585 +-5 -2 6 18 42 106 277 693 1613 3490 7072 13536 24660 43038 72343 117643 185775 285782 429418 631726 911694 +25 49 82 120 164 225 336 574 1090 2143 4134 7640 13481 22991 39079 69707 137760 306259 738049 1829516 4498299 +28 39 59 115 256 569 1203 2401 4540 8179 14115 23447 37648 58645 88907 131541 190396 270175 376555 516315 697472 +11 22 42 82 162 312 578 1053 1983 4058 9103 21549 51304 118974 264819 563384 1146435 2237670 4203680 7626820 13407030 +13 32 67 140 285 548 987 1672 2685 4120 6083 8692 12077 16380 21755 28368 36397 46032 57475 70940 86653 +16 33 54 83 134 242 480 986 2021 4120 8486 17955 39204 87515 196569 437797 957362 2044827 4257394 8639335 17100774 +9 16 28 45 77 154 347 816 1911 4366 9654 20646 42906 87373 176023 353702 712286 1438821 2909549 5870876 11783816 +8 6 12 48 156 403 877 1669 2836 4346 6024 7554 8652 9615 12577 23971 58912 148486 351260 770724 1580844 +10 34 83 183 372 704 1257 2145 3534 5662 8863 13595 20472 30300 44117 63237 89298 124314 170731 231487 310076 +8 20 36 53 68 78 80 71 48 8 -52 -135 -244 -382 -552 -757 -1000 -1284 -1612 -1987 -2412 +8 24 64 148 311 624 1225 2369 4520 8531 15994 29900 55846 104185 193758 358183 656084 1187050 2115368 3703412 6355581 +5 15 30 49 71 95 120 145 169 191 210 225 235 239 236 225 205 175 134 81 15 +20 50 100 187 348 653 1224 2260 4071 7142 12288 21029 36419 64717 118496 222024 419946 790371 1463632 2649684 4685450 +19 31 52 89 164 327 670 1344 2599 4900 9234 17847 35889 74868 159497 340530 717567 1477557 2956756 5736005 10781030 +18 39 72 138 278 564 1112 2106 3859 6958 12565 22975 42565 79305 147043 268821 481528 842249 1436726 2390408 3882632 +4 10 15 19 22 24 25 25 24 22 19 15 10 4 -3 -11 -20 -30 -41 -53 -66 +17 26 56 136 308 628 1180 2113 3711 6506 11444 20114 35050 60116 100984 165715 265453 415242 634976 950492 1394816 +25 37 60 118 244 489 953 1860 3725 7710 16362 35110 75232 159574 333227 682794 1369993 2688371 5156120 9663710 17702660 +4 8 33 90 191 348 577 927 1566 2968 6257 13776 29961 62612 124665 236581 429480 749160 1261153 2056982 3261795 +13 25 58 131 276 546 1035 1922 3551 6559 12064 21925 39086 68016 115257 190092 305345 478325 731926 1095895 1608280 +8 7 17 55 139 281 476 687 826 731 139 -1345 -4283 -9443 -17842 -30793 -49956 -77393 -115627 -167705 -237265 +5 22 61 137 265 460 737 1111 1597 2210 2965 3877 4961 6232 7705 9395 11317 13486 15917 18625 21625 +15 14 17 28 53 111 267 709 1908 4922 11933 27153 58340 119414 235217 450591 848077 1582290 2945281 5487158 10231495 +2 9 28 68 137 258 498 1015 2135 4478 9159 18097 34472 63377 112719 194430 326056 532799 850094 1326810 2029171 +22 34 46 53 55 67 142 416 1181 3001 6930 15013 31533 66065 140600 305315 671836 1480416 3230374 6924401 14511151 +18 34 63 125 258 526 1027 1901 3338 5586 8959 13845 20714 30126 42739 59317 80738 108002 142239 184717 236850 +27 52 102 187 321 526 843 1369 2346 4335 8515 17154 34306 66795 125554 227394 397285 671238 1099884 1752853 2724063 +23 38 55 78 115 182 314 595 1239 2789 6549 15431 35510 78803 168285 347274 697739 1377040 2692175 5248108 10237257 +25 38 63 120 243 496 1004 2001 3903 7429 13817 25215 45369 80781 142570 249338 431421 736992 1240579 2054666 3345159 +28 41 54 67 80 93 106 119 132 145 158 171 184 197 210 223 236 249 262 275 288 +-6 0 15 44 101 212 418 778 1372 2304 3705 5736 8591 12500 17732 24598 33454 44704 58803 76260 97641 +4 28 65 121 220 415 796 1496 2709 4761 8325 14968 28410 57238 120465 258450 553719 1170131 2426846 4940384 9902961 +6 7 15 36 76 141 237 370 546 771 1051 1392 1800 2281 2841 3486 4222 5055 5991 7036 8196 +24 33 45 62 77 83 95 191 590 1804 4931 12217 28162 61797 131542 275661 574402 1195504 2484736 5141196 10551151 +23 41 68 104 149 203 266 338 419 509 608 716 833 959 1094 1238 1391 1553 1724 1904 2093 +22 42 68 105 161 238 323 380 347 146 -277 -830 -906 1697 13721 53857 170028 477110 1234650 2999191 6910095 +-9 -1 22 61 119 200 304 418 503 477 194 -581 -2201 -5170 -10180 -18152 -30281 -48085 -73458 -108727 -156713 +11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 +7 13 33 88 211 463 966 1970 3984 8020 16029 31654 61492 117150 218504 398730 711877 1243999 2129161 3571988 5878841 +26 54 107 191 316 512 855 1506 2775 5254 10135 19972 40418 83980 177798 379260 806629 1698071 3523848 7197074 14465457 +7 6 4 13 65 221 583 1306 2603 4745 8094 13284 21806 37503 69932 141398 301131 653436 1413420 3017283 6339755 +8 13 26 47 76 113 158 211 272 341 418 503 596 697 806 923 1048 1181 1322 1471 1628 +14 19 31 61 140 340 804 1785 3694 7157 13081 22729 37804 60542 93814 141237 207294 297463 418355 577861 785308 +18 25 41 74 132 223 355 536 774 1077 1453 1910 2456 3099 3847 4708 5690 6801 8049 9442 10988 +13 39 87 171 318 573 1009 1765 3152 5886 11539 23368 47825 97318 195247 385056 746111 1420737 2658839 4889321 8831144 +10 8 14 34 74 141 255 482 1006 2285 5397 12804 30003 69026 155797 345601 755687 1633870 3501675 7448656 15726061 +6 11 25 69 172 364 663 1064 1547 2130 3002 4780 8943 18505 38998 79845 156212 291437 520143 892151 1477318 +27 50 84 135 218 372 697 1431 3090 6700 14160 28802 56287 106157 194788 351446 631221 1142968 2109356 3994435 7771240 +9 31 66 114 175 249 336 436 549 675 814 966 1131 1309 1500 1704 1921 2151 2394 2650 2919 +8 7 7 8 10 22 98 426 1513 4538 11998 28875 64756 137733 281650 559617 1089152 2088679 3962843 7457584 13938920 +-5 -7 -9 -11 -2 54 247 779 2078 5020 11348 24426 50527 100927 195162 365902 666005 1178435 2029861 3408899 5590116 +10 16 34 74 147 274 521 1081 2432 5608 12628 27136 55313 107130 198019 351047 599686 991280 1591318 2488630 3801631 +9 8 21 66 172 391 830 1721 3552 7290 14748 29193 56376 106318 196477 357514 644161 1156577 2084086 3797672 7049008 +14 40 88 183 380 785 1580 3064 5738 10495 19048 34867 65134 124613 242953 477946 938949 1827706 3509661 6640837 12400447 +15 25 39 64 129 294 653 1337 2538 4600 8260 15178 28989 57277 115164 231711 461221 903259 1738853 3298396 6194405 +9 6 6 11 31 107 353 1029 2669 6320 14014 29709 61115 123102 243845 475664 914050 1731530 3239870 6009120 11104366 +26 37 48 75 147 313 670 1432 3073 6602 14068 29452 60189 119691 231437 435496 798808 1431239 2510444 4320037 7307627 +3 -1 -10 -24 -43 -67 -96 -130 -169 -213 -262 -316 -375 -439 -508 -582 -661 -745 -834 -928 -1027 +18 43 89 169 300 508 853 1501 2897 6147 13824 31625 71718 159389 345977 733436 1519704 3080095 6109095 11860445 22542764 +17 38 63 88 109 122 123 108 73 14 -73 -192 -347 -542 -781 -1068 -1407 -1802 -2257 -2776 -3363 +3 2 10 40 110 248 497 920 1605 2670 4268 6592 9880 14420 20555 28688 39287 52890 70110 91640 118258 +21 37 57 85 131 212 354 601 1040 1854 3418 6456 12280 23135 42677 76614 133543 226019 371895 595975 932025 +14 28 56 121 265 567 1177 2386 4774 9508 18898 37365 73056 140538 265518 493797 909482 1673256 3102528 5835085 11151679 +13 31 73 156 302 533 869 1334 1975 2899 4333 6712 10800 17849 29801 49538 81185 130471 205153 315508 474898 +-1 -10 -9 16 78 189 360 601 921 1328 1829 2430 3136 3951 4878 5919 7075 8346 9731 11228 12834 +1 10 33 77 148 252 400 620 988 1712 3344 7262 16674 38591 87590 192932 412066 856321 1739510 3468242 6804651 +2 19 60 137 265 461 749 1184 1908 3251 5909 11312 22519 46478 99470 219319 490975 1097216 2415107 5194716 10885594 +7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 +13 24 44 89 197 451 1016 2204 4587 9194 17866 33915 63351 117117 215018 392358 710721 1274860 2258304 3941069 6763777 +1 -4 1 26 80 183 394 857 1858 3876 7615 14048 24625 42043 72406 130287 249223 501620 1034021 2126310 4286814 +7 20 36 46 41 20 1 35 223 736 1838 3912 7489 13280 22211 35461 54503 81148 117592 166466 230889 +16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 +-1 3 12 46 137 336 738 1542 3172 6494 13173 26223 50812 95393 173241 304485 518733 858397 1382834 2173428 3339747 \ No newline at end of file -- cgit v1.2.3 From 0c869b2782aeecb92dff232b46a499a3821f9f2c Mon Sep 17 00:00:00 2001 From: HJ Date: Sat, 3 Feb 2024 15:10:00 -0500 Subject: cleanup --- aoc2023/aoc.toml | 4 - .../erlang/adglent/_gleam_artefacts/adglent.cache | Bin 2399 -> 0 bytes .../adglent/_gleam_artefacts/adglent.cache_meta | Bin 85 -> 0 bytes .../erlang/adglent/_gleam_artefacts/adglent.erl | 55 - .../adglent/_gleam_artefacts/adglent@day.cache | Bin 583 -> 0 bytes .../_gleam_artefacts/adglent@day.cache_meta | Bin 293 -> 0 bytes .../adglent/_gleam_artefacts/adglent@day.erl | 278 - .../adglent/_gleam_artefacts/adglent@init.cache | Bin 581 -> 0 bytes .../_gleam_artefacts/adglent@init.cache_meta | Bin 231 -> 0 bytes .../adglent/_gleam_artefacts/adglent@init.erl | 142 - .../adglent/_gleam_artefacts/adglent_ffi.erl | 12 - .../adglent/_gleam_artefacts/gleam@@compile.erl | 157 - .../adglent/_gleam_artefacts/priv@aoc_client.cache | Bin 468 -> 0 bytes .../_gleam_artefacts/priv@aoc_client.cache_meta | Bin 131 -> 0 bytes .../adglent/_gleam_artefacts/priv@aoc_client.erl | 61 - .../adglent/_gleam_artefacts/priv@errors.cache | Bin 1514 -> 0 bytes .../_gleam_artefacts/priv@errors.cache_meta | Bin 85 -> 0 bytes .../adglent/_gleam_artefacts/priv@errors.erl | 74 - .../adglent/_gleam_artefacts/priv@prompt.cache | Bin 1512 -> 0 bytes .../_gleam_artefacts/priv@prompt.cache_meta | Bin 69 -> 0 bytes .../adglent/_gleam_artefacts/priv@prompt.erl | 53 - .../adglent/_gleam_artefacts/priv@template.cache | Bin 438 -> 0 bytes .../_gleam_artefacts/priv@template.cache_meta | Bin 67 -> 0 bytes .../adglent/_gleam_artefacts/priv@template.erl | 25 - .../_gleam_artefacts/priv@templates@solution.cache | Bin 818 -> 0 bytes .../priv@templates@solution.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/priv@templates@solution.erl | 1 - .../priv@templates@test_main.cache | Bin 380 -> 0 bytes .../priv@templates@test_main.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/priv@templates@test_main.erl | 1 - .../priv@templates@testfile_gleeunit.cache | Bin 1293 -> 0 bytes .../priv@templates@testfile_gleeunit.cache_meta | Bin 29 -> 0 bytes .../priv@templates@testfile_gleeunit.erl | 1 - .../priv@templates@testfile_showtime.cache | Bin 1300 -> 0 bytes .../priv@templates@testfile_showtime.cache_meta | Bin 29 -> 0 bytes .../priv@templates@testfile_showtime.erl | 1 - .../adglent/_gleam_artefacts/priv@toml.cache | Bin 1714 -> 0 bytes .../adglent/_gleam_artefacts/priv@toml.cache_meta | Bin 60 -> 0 bytes .../erlang/adglent/_gleam_artefacts/priv@toml.erl | 83 - .../erlang/adglent/_gleam_artefacts/showtime.cache | Bin 1068 -> 0 bytes .../adglent/_gleam_artefacts/showtime.cache_meta | Bin 439 -> 0 bytes .../erlang/adglent/_gleam_artefacts/showtime.erl | 155 - .../showtime@internal@common@cli.cache | Bin 879 -> 0 bytes .../showtime@internal@common@cli.cache_meta | Bin 29 -> 0 bytes .../showtime@internal@common@cli.erl | 8 - ...time@internal@common@common_event_handler.cache | Bin 3273 -> 0 bytes ...internal@common@common_event_handler.cache_meta | Bin 89 -> 0 bytes ...owtime@internal@common@common_event_handler.erl | 131 - .../showtime@internal@common@test_result.cache | Bin 15288 -> 0 bytes ...showtime@internal@common@test_result.cache_meta | Bin 67 -> 0 bytes .../showtime@internal@common@test_result.erl | 54 - .../showtime@internal@common@test_suite.cache | Bin 8873 -> 0 bytes .../showtime@internal@common@test_suite.cache_meta | Bin 129 -> 0 bytes .../showtime@internal@common@test_suite.erl | 30 - .../showtime@internal@erlang@discover.cache | Bin 1929 -> 0 bytes .../showtime@internal@erlang@discover.cache_meta | Bin 227 -> 0 bytes .../showtime@internal@erlang@discover.erl | 230 - .../showtime@internal@erlang@event_handler.cache | Bin 1542 -> 0 bytes ...owtime@internal@erlang@event_handler.cache_meta | Bin 292 -> 0 bytes .../showtime@internal@erlang@event_handler.erl | 76 - .../showtime@internal@erlang@module_handler.cache | Bin 1135 -> 0 bytes ...wtime@internal@erlang@module_handler.cache_meta | Bin 179 -> 0 bytes .../showtime@internal@erlang@module_handler.erl | 53 - .../showtime@internal@erlang@runner.cache | Bin 1642 -> 0 bytes .../showtime@internal@erlang@runner.cache_meta | Bin 195 -> 0 bytes .../showtime@internal@erlang@runner.erl | 46 - .../showtime@internal@reports@compare.cache | Bin 479 -> 0 bytes .../showtime@internal@reports@compare.cache_meta | Bin 140 -> 0 bytes .../showtime@internal@reports@compare.erl | 61 - .../showtime@internal@reports@formatter.cache | Bin 5108 -> 0 bytes .../showtime@internal@reports@formatter.cache_meta | Bin 421 -> 0 bytes .../showtime@internal@reports@formatter.erl | 749 - .../showtime@internal@reports@styles.cache | Bin 3189 -> 0 bytes .../showtime@internal@reports@styles.cache_meta | Bin 118 -> 0 bytes .../showtime@internal@reports@styles.erl | 93 - .../showtime@internal@reports@table.cache | Bin 5510 -> 0 bytes .../showtime@internal@reports@table.cache_meta | Bin 144 -> 0 bytes .../showtime@internal@reports@table.erl | 229 - .../_gleam_artefacts/showtime@tests@meta.cache | Bin 901 -> 0 bytes .../showtime@tests@meta.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/showtime@tests@meta.erl | 8 - .../_gleam_artefacts/showtime@tests@should.cache | Bin 5547 -> 0 bytes .../showtime@tests@should.cache_meta | Bin 76 -> 0 bytes .../_gleam_artefacts/showtime@tests@should.erl | 143 - .../_gleam_artefacts/showtime@tests@test.cache | Bin 3674 -> 0 bytes .../showtime@tests@test.cache_meta | Bin 101 -> 0 bytes .../_gleam_artefacts/showtime@tests@test.erl | 57 - .../adglent/_gleam_artefacts/showtime_ffi.erl | 187 - aoc2023/build/dev/erlang/adglent/ebin/adglent.app | 17 - aoc2023/build/dev/erlang/adglent/ebin/adglent.beam | Bin 3072 -> 0 bytes .../build/dev/erlang/adglent/ebin/adglent@day.beam | Bin 8292 -> 0 bytes .../dev/erlang/adglent/ebin/adglent@init.beam | Bin 6308 -> 0 bytes .../build/dev/erlang/adglent/ebin/adglent_ffi.beam | Bin 1556 -> 0 bytes .../dev/erlang/adglent/ebin/priv@aoc_client.beam | Bin 3696 -> 0 bytes .../build/dev/erlang/adglent/ebin/priv@errors.beam | Bin 3800 -> 0 bytes .../build/dev/erlang/adglent/ebin/priv@prompt.beam | Bin 2744 -> 0 bytes .../dev/erlang/adglent/ebin/priv@template.beam | Bin 1804 -> 0 bytes .../adglent/ebin/priv@templates@solution.beam | Bin 792 -> 0 bytes .../adglent/ebin/priv@templates@test_main.beam | Bin 792 -> 0 bytes .../ebin/priv@templates@testfile_gleeunit.beam | Bin 812 -> 0 bytes .../ebin/priv@templates@testfile_showtime.beam | Bin 812 -> 0 bytes .../build/dev/erlang/adglent/ebin/priv@toml.beam | Bin 3900 -> 0 bytes .../build/dev/erlang/adglent/ebin/showtime.beam | Bin 7024 -> 0 bytes .../adglent/ebin/showtime@internal@common@cli.beam | Bin 924 -> 0 bytes ...wtime@internal@common@common_event_handler.beam | Bin 4324 -> 0 bytes .../ebin/showtime@internal@common@test_result.beam | Bin 1884 -> 0 bytes .../ebin/showtime@internal@common@test_suite.beam | Bin 1412 -> 0 bytes .../ebin/showtime@internal@erlang@discover.beam | Bin 8688 -> 0 bytes .../showtime@internal@erlang@event_handler.beam | Bin 4368 -> 0 bytes .../showtime@internal@erlang@module_handler.beam | Bin 3024 -> 0 bytes .../ebin/showtime@internal@erlang@runner.beam | Bin 2416 -> 0 bytes .../ebin/showtime@internal@reports@compare.beam | Bin 3380 -> 0 bytes .../ebin/showtime@internal@reports@formatter.beam | Bin 20468 -> 0 bytes .../ebin/showtime@internal@reports@styles.beam | Bin 4196 -> 0 bytes .../ebin/showtime@internal@reports@table.beam | Bin 7608 -> 0 bytes .../erlang/adglent/ebin/showtime@tests@meta.beam | Bin 904 -> 0 bytes .../erlang/adglent/ebin/showtime@tests@should.beam | Bin 5416 -> 0 bytes .../erlang/adglent/ebin/showtime@tests@test.beam | Bin 3412 -> 0 bytes .../dev/erlang/adglent/ebin/showtime_ffi.beam | Bin 7708 -> 0 bytes .../dev/erlang/adglent/include/adglent_Example.hrl | 1 - .../adglent/include/priv@toml_TomGetError.hrl | 1 - .../adglent/include/priv@toml_TomParseError.hrl | 1 - ...ternal@common@common_event_handler_Finished.hrl | 1 - ...al@common@common_event_handler_HandlerState.hrl | 5 - ...howtime@internal@common@test_result_ArgList.hrl | 1 - ...ime@internal@common@test_result_AssertEqual.hrl | 3 - ...ime@internal@common@test_result_AssertMatch.hrl | 3 - ...@internal@common@test_result_AssertNotEqual.hrl | 3 - ...internal@common@test_result_ErlangException.hrl | 6 - ...wtime@internal@common@test_result_ErrorInfo.hrl | 3 - ...owtime@internal@common@test_result_Expected.hrl | 1 - ...time@internal@common@test_result_Expression.hrl | 1 - .../showtime@internal@common@test_result_File.hrl | 1 - ...nternal@common@test_result_GenericException.hrl | 1 - ...ime@internal@common@test_result_GleamAssert.hrl | 1 - ...time@internal@common@test_result_GleamError.hrl | 3 - ...howtime@internal@common@test_result_Ignored.hrl | 1 - ...wtime@internal@common@test_result_LetAssert.hrl | 7 - .../showtime@internal@common@test_result_Line.hrl | 1 - ...showtime@internal@common@test_result_Module.hrl | 1 - .../showtime@internal@common@test_result_Num.hrl | 1 - ...howtime@internal@common@test_result_Pattern.hrl | 1 - ...time@internal@common@test_result_ReasonLine.hrl | 1 - ...ernal@common@test_result_TestFunctionReturn.hrl | 4 - .../showtime@internal@common@test_result_Trace.hrl | 5 - ...wtime@internal@common@test_result_TraceList.hrl | 3 - ...ime@internal@common@test_result_TraceModule.hrl | 6 - .../showtime@internal@common@test_result_Value.hrl | 1 - ...internal@common@test_suite_CompletedTestRun.hrl | 6 - ...showtime@internal@common@test_suite_EndTest.hrl | 6 - ...wtime@internal@common@test_suite_EndTestRun.hrl | 1 - ...ime@internal@common@test_suite_EndTestSuite.hrl | 3 - ...e@internal@common@test_suite_OngoingTestRun.hrl | 4 - ...owtime@internal@common@test_suite_StartTest.hrl | 4 - ...e@internal@common@test_suite_StartTestSuite.hrl | 3 - ...ime@internal@common@test_suite_TestFunction.hrl | 1 - ...wtime@internal@common@test_suite_TestModule.hrl | 1 - ...owtime@internal@common@test_suite_TestSuite.hrl | 4 - .../showtime@internal@reports@table_AlignLeft.hrl | 4 - ...me@internal@reports@table_AlignLeftOverflow.hrl | 4 - .../showtime@internal@reports@table_AlignRight.hrl | 4 - ...e@internal@reports@table_AlignRightOverflow.hrl | 4 - .../showtime@internal@reports@table_Aligned.hrl | 1 - .../showtime@internal@reports@table_Content.hrl | 1 - .../showtime@internal@reports@table_Separator.hrl | 1 - ...owtime@internal@reports@table_StyledContent.hrl | 1 - .../showtime@internal@reports@table_Table.hrl | 4 - .../adglent/include/showtime@tests@meta_Meta.hrl | 1 - .../adglent/include/showtime@tests@should_Eq.hrl | 5 - .../adglent/include/showtime@tests@should_Fail.hrl | 1 - .../include/showtime@tests@should_IsError.hrl | 4 - .../adglent/include/showtime@tests@should_IsOk.hrl | 4 - .../include/showtime@tests@should_NotEq.hrl | 5 - .../include/showtime@tests@test_MetaShould.hrl | 4 - .../adglent/include/showtime@tests@test_Test.hrl | 4 - .../erlang/aoc2023/_gleam_artefacts/aoc2023.cache | Bin 407 -> 0 bytes .../aoc2023/_gleam_artefacts/aoc2023.cache_meta | Bin 68 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/aoc2023.erl | 21 - .../aoc2023/_gleam_artefacts/aoc2023@@main.erl | 35 - .../aoc2023/_gleam_artefacts/aoc2023_test.cache | Bin 305 -> 0 bytes .../_gleam_artefacts/aoc2023_test.cache_meta | Bin 45 -> 0 bytes .../aoc2023/_gleam_artefacts/aoc2023_test.erl | 8 - .../_gleam_artefacts/day10@day10_test.cache | Bin 1845 -> 0 bytes .../_gleam_artefacts/day10@day10_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day10@day10_test.erl | 52 - .../aoc2023/_gleam_artefacts/day10@solve.cache | Bin 5462 -> 0 bytes .../_gleam_artefacts/day10@solve.cache_meta | Bin 168 -> 0 bytes .../aoc2023/_gleam_artefacts/day10@solve.erl | 340 - .../_gleam_artefacts/day11@day11_test.cache | Bin 1935 -> 0 bytes .../_gleam_artefacts/day11@day11_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day11@day11_test.erl | 68 - .../aoc2023/_gleam_artefacts/day11@solve.cache | Bin 2064 -> 0 bytes .../_gleam_artefacts/day11@solve.cache_meta | Bin 115 -> 0 bytes .../aoc2023/_gleam_artefacts/day11@solve.erl | 130 - .../_gleam_artefacts/day12@day12_test.cache | Bin 1730 -> 0 bytes .../_gleam_artefacts/day12@day12_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day12@day12_test.erl | 38 - .../aoc2023/_gleam_artefacts/day12@solve.cache | Bin 1777 -> 0 bytes .../_gleam_artefacts/day12@solve.cache_meta | Bin 157 -> 0 bytes .../aoc2023/_gleam_artefacts/day12@solve.erl | 145 - .../_gleam_artefacts/day13@day13_test.cache | Bin 1994 -> 0 bytes .../_gleam_artefacts/day13@day13_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day13@day13_test.erl | 88 - .../aoc2023/_gleam_artefacts/day13@solve.cache | Bin 2415 -> 0 bytes .../_gleam_artefacts/day13@solve.cache_meta | Bin 116 -> 0 bytes .../aoc2023/_gleam_artefacts/day13@solve.erl | 149 - .../_gleam_artefacts/day14@day14_test.cache | Bin 1933 -> 0 bytes .../_gleam_artefacts/day14@day14_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day14@day14_test.erl | 68 - .../aoc2023/_gleam_artefacts/day14@solve.cache | Bin 2257 -> 0 bytes .../_gleam_artefacts/day14@solve.cache_meta | Bin 152 -> 0 bytes .../aoc2023/_gleam_artefacts/day14@solve.erl | 149 - .../_gleam_artefacts/day15@day15_test.cache | Bin 1817 -> 0 bytes .../_gleam_artefacts/day15@day15_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day15@day15_test.erl | 32 - .../aoc2023/_gleam_artefacts/day15@solve.cache | Bin 3200 -> 0 bytes .../_gleam_artefacts/day15@solve.cache_meta | Bin 153 -> 0 bytes .../aoc2023/_gleam_artefacts/day15@solve.erl | 177 - .../_gleam_artefacts/day16@day16_test.cache | Bin 1915 -> 0 bytes .../_gleam_artefacts/day16@day16_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day16@day16_test.erl | 68 - .../aoc2023/_gleam_artefacts/day16@solve.cache | Bin 2445 -> 0 bytes .../_gleam_artefacts/day16@solve.cache_meta | Bin 176 -> 0 bytes .../aoc2023/_gleam_artefacts/day16@solve.erl | 253 - .../_gleam_artefacts/day17@day17_test.cache | Bin 1789 -> 0 bytes .../_gleam_artefacts/day17@day17_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day17@day17_test.erl | 52 - .../aoc2023/_gleam_artefacts/day17@solve.cache | Bin 4185 -> 0 bytes .../_gleam_artefacts/day17@solve.cache_meta | Bin 223 -> 0 bytes .../aoc2023/_gleam_artefacts/day17@solve.erl | 231 - .../_gleam_artefacts/day18@day18_test.cache | Bin 2116 -> 0 bytes .../_gleam_artefacts/day18@day18_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day18@day18_test.erl | 84 - .../aoc2023/_gleam_artefacts/day18@solve.cache | Bin 3614 -> 0 bytes .../_gleam_artefacts/day18@solve.cache_meta | Bin 154 -> 0 bytes .../aoc2023/_gleam_artefacts/day18@solve.erl | 218 - .../_gleam_artefacts/day19@day19_test.cache | Bin 2438 -> 0 bytes .../_gleam_artefacts/day19@day19_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day19@day19_test.erl | 96 - .../aoc2023/_gleam_artefacts/day19@solve.cache | Bin 9036 -> 0 bytes .../_gleam_artefacts/day19@solve.cache_meta | Bin 191 -> 0 bytes .../aoc2023/_gleam_artefacts/day19@solve.erl | 459 - .../aoc2023/_gleam_artefacts/day1@day1_test.cache | Bin 1836 -> 0 bytes .../_gleam_artefacts/day1@day1_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day1@day1_test.erl | 50 - .../aoc2023/_gleam_artefacts/day1@solve.cache | Bin 1176 -> 0 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache_meta | Bin 134 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day1@solve.erl | 118 - .../_gleam_artefacts/day20@day20_test.cache | Bin 1864 -> 0 bytes .../_gleam_artefacts/day20@day20_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day20@day20_test.erl | 52 - .../aoc2023/_gleam_artefacts/day20@solve.cache | Bin 4798 -> 0 bytes .../_gleam_artefacts/day20@solve.cache_meta | Bin 153 -> 0 bytes .../aoc2023/_gleam_artefacts/day20@solve.erl | 237 - .../aoc2023/_gleam_artefacts/day2@day2_test.cache | Bin 2472 -> 0 bytes .../_gleam_artefacts/day2@day2_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day2@day2_test.erl | 54 - .../aoc2023/_gleam_artefacts/day2@solve.cache | Bin 1440 -> 0 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache_meta | Bin 115 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day2@solve.erl | 166 - .../aoc2023/_gleam_artefacts/day3@day3_test.cache | Bin 1896 -> 0 bytes .../_gleam_artefacts/day3@day3_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day3@day3_test.erl | 68 - .../aoc2023/_gleam_artefacts/day3@solve.cache | Bin 5683 -> 0 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache_meta | Bin 152 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day3@solve.erl | 254 - .../aoc2023/_gleam_artefacts/day4@day4_test.cache | Bin 2259 -> 0 bytes .../_gleam_artefacts/day4@day4_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day4@day4_test.erl | 52 - .../aoc2023/_gleam_artefacts/day4@solve.cache | Bin 2089 -> 0 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache_meta | Bin 208 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day4@solve.erl | 169 - .../aoc2023/_gleam_artefacts/day5@day5_test.cache | Bin 2379 -> 0 bytes .../_gleam_artefacts/day5@day5_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day5@day5_test.erl | 160 - .../aoc2023/_gleam_artefacts/day5@solve.cache | Bin 5112 -> 0 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache_meta | Bin 157 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day5@solve.erl | 269 - .../aoc2023/_gleam_artefacts/day6@day6_test.cache | Bin 1790 -> 0 bytes .../_gleam_artefacts/day6@day6_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day6@day6_test.erl | 36 - .../aoc2023/_gleam_artefacts/day6@solve.cache | Bin 1920 -> 0 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache_meta | Bin 135 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day6@solve.erl | 131 - .../aoc2023/_gleam_artefacts/day7@day7_test.cache | Bin 1803 -> 0 bytes .../_gleam_artefacts/day7@day7_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day7@day7_test.erl | 48 - .../aoc2023/_gleam_artefacts/day7@solve.cache | Bin 3183 -> 0 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache_meta | Bin 174 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day7@solve.erl | 242 - .../aoc2023/_gleam_artefacts/day8@day8_test.cache | Bin 1865 -> 0 bytes .../_gleam_artefacts/day8@day8_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day8@day8_test.erl | 58 - .../aoc2023/_gleam_artefacts/day8@solve.cache | Bin 1810 -> 0 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache_meta | Bin 236 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day8@solve.erl | 179 - .../aoc2023/_gleam_artefacts/day9@day9_test.cache | Bin 1793 -> 0 bytes .../_gleam_artefacts/day9@day9_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day9@day9_test.erl | 40 - .../aoc2023/_gleam_artefacts/day9@solve.cache | Bin 1829 -> 0 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache_meta | Bin 115 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/day9@solve.erl | 133 - .../aoc2023/_gleam_artefacts/gleam@@compile.erl | 157 - .../_gleam_artefacts/utilities@array2d.cache | Bin 2127 -> 0 bytes .../_gleam_artefacts/utilities@array2d.cache_meta | Bin 102 -> 0 bytes .../aoc2023/_gleam_artefacts/utilities@array2d.erl | 64 - .../aoc2023/_gleam_artefacts/utilities@memo.cache | Bin 3198 -> 0 bytes .../_gleam_artefacts/utilities@memo.cache_meta | Bin 118 -> 0 bytes .../aoc2023/_gleam_artefacts/utilities@memo.erl | 70 - .../_gleam_artefacts/utilities@prioqueue.cache | Bin 3158 -> 0 bytes .../utilities@prioqueue.cache_meta | Bin 47 -> 0 bytes .../_gleam_artefacts/utilities@prioqueue.erl | 60 - aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app | 15 - aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam | Bin 1976 -> 0 bytes .../dev/erlang/aoc2023/ebin/aoc2023@@main.beam | Bin 2780 -> 0 bytes .../dev/erlang/aoc2023/ebin/aoc2023_test.beam | Bin 1088 -> 0 bytes .../dev/erlang/aoc2023/ebin/day10@day10_test.beam | Bin 2508 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day10@solve.beam | Bin 12732 -> 0 bytes .../dev/erlang/aoc2023/ebin/day11@day11_test.beam | Bin 2400 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day11@solve.beam | Bin 6228 -> 0 bytes .../dev/erlang/aoc2023/ebin/day12@day12_test.beam | Bin 2392 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day12@solve.beam | Bin 6816 -> 0 bytes .../dev/erlang/aoc2023/ebin/day13@day13_test.beam | Bin 2428 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day13@solve.beam | Bin 6624 -> 0 bytes .../dev/erlang/aoc2023/ebin/day14@day14_test.beam | Bin 2452 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day14@solve.beam | Bin 6912 -> 0 bytes .../dev/erlang/aoc2023/ebin/day15@day15_test.beam | Bin 2416 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day15@solve.beam | Bin 7676 -> 0 bytes .../dev/erlang/aoc2023/ebin/day16@day16_test.beam | Bin 2404 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day16@solve.beam | Bin 9856 -> 0 bytes .../dev/erlang/aoc2023/ebin/day17@day17_test.beam | Bin 2496 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day17@solve.beam | Bin 9700 -> 0 bytes .../dev/erlang/aoc2023/ebin/day18@day18_test.beam | Bin 2584 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day18@solve.beam | Bin 8520 -> 0 bytes .../dev/erlang/aoc2023/ebin/day19@day19_test.beam | Bin 2876 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day19@solve.beam | Bin 15476 -> 0 bytes .../dev/erlang/aoc2023/ebin/day1@day1_test.beam | Bin 2520 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day1@solve.beam | Bin 5292 -> 0 bytes .../dev/erlang/aoc2023/ebin/day20@day20_test.beam | Bin 2504 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day20@solve.beam | Bin 9516 -> 0 bytes .../dev/erlang/aoc2023/ebin/day2@day2_test.beam | Bin 2660 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day2@solve.beam | Bin 7028 -> 0 bytes .../dev/erlang/aoc2023/ebin/day3@day3_test.beam | Bin 2428 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day3@solve.beam | Bin 11296 -> 0 bytes .../dev/erlang/aoc2023/ebin/day4@day4_test.beam | Bin 2652 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day4@solve.beam | Bin 8124 -> 0 bytes .../dev/erlang/aoc2023/ebin/day5@day5_test.beam | Bin 2756 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day5@solve.beam | Bin 11140 -> 0 bytes .../dev/erlang/aoc2023/ebin/day6@day6_test.beam | Bin 2396 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day6@solve.beam | Bin 6252 -> 0 bytes .../dev/erlang/aoc2023/ebin/day7@day7_test.beam | Bin 2416 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day7@solve.beam | Bin 9700 -> 0 bytes .../dev/erlang/aoc2023/ebin/day8@day8_test.beam | Bin 2504 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day8@solve.beam | Bin 7556 -> 0 bytes .../dev/erlang/aoc2023/ebin/day9@day9_test.beam | Bin 2392 -> 0 bytes .../build/dev/erlang/aoc2023/ebin/day9@solve.beam | Bin 5652 -> 0 bytes .../dev/erlang/aoc2023/ebin/utilities@array2d.beam | Bin 3852 -> 0 bytes .../dev/erlang/aoc2023/ebin/utilities@memo.beam | Bin 4028 -> 0 bytes .../erlang/aoc2023/ebin/utilities@prioqueue.beam | Bin 3412 -> 0 bytes .../dev/erlang/aoc2023/include/day2@solve_Game.hrl | 1 - .../erlang/aoc2023/include/day5@solve_Almanac.hrl | 4 - .../erlang/aoc2023/include/day5@solve_MRange.hrl | 1 - .../erlang/aoc2023/include/day5@solve_SRange.hrl | 1 - .../aoc2023/include/utilities@array2d_Posn.hrl | 1 - .../aoc2023/include/utilities@memo_Cache.hrl | 3 - .../include/utilities@prioqueue_PriorityQueue.hrl | 4 - .../dev/erlang/gap/_gleam_artefacts/gap.cache | Bin 6090 -> 0 bytes .../dev/erlang/gap/_gleam_artefacts/gap.cache_meta | Bin 282 -> 0 bytes .../build/dev/erlang/gap/_gleam_artefacts/gap.erl | 538 - .../gap/_gleam_artefacts/gap@comparison.cache | Bin 2538 -> 0 bytes .../gap/_gleam_artefacts/gap@comparison.cache_meta | Bin 29 -> 0 bytes .../erlang/gap/_gleam_artefacts/gap@comparison.erl | 15 - .../erlang/gap/_gleam_artefacts/gap@myers.cache | Bin 4865 -> 0 bytes .../gap/_gleam_artefacts/gap@myers.cache_meta | Bin 47 -> 0 bytes .../dev/erlang/gap/_gleam_artefacts/gap@myers.erl | 156 - .../_gleam_artefacts/gap@styled_comparison.cache | Bin 946 -> 0 bytes .../gap@styled_comparison.cache_meta | Bin 29 -> 0 bytes .../gap/_gleam_artefacts/gap@styled_comparison.erl | 8 - .../erlang/gap/_gleam_artefacts/gap@styling.cache | Bin 8057 -> 0 bytes .../gap/_gleam_artefacts/gap@styling.cache_meta | Bin 166 -> 0 bytes .../erlang/gap/_gleam_artefacts/gap@styling.erl | 202 - .../dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs | 431 - .../erlang/gap/_gleam_artefacts/gleam@@compile.erl | 157 - aoc2023/build/dev/erlang/gap/ebin/gap.app | 8 - aoc2023/build/dev/erlang/gap/ebin/gap.beam | Bin 15568 -> 0 bytes .../build/dev/erlang/gap/ebin/gap@comparison.beam | Bin 1052 -> 0 bytes aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam | Bin 6508 -> 0 bytes .../dev/erlang/gap/ebin/gap@styled_comparison.beam | Bin 896 -> 0 bytes aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam | Bin 7488 -> 0 bytes .../gap/include/gap@comparison_ListComparison.hrl | 4 - .../erlang/gap/include/gap@comparison_Match.hrl | 1 - .../erlang/gap/include/gap@comparison_NoMatch.hrl | 1 - .../include/gap@comparison_StringComparison.hrl | 4 - .../gap@styled_comparison_StyledComparison.hrl | 1 - .../dev/erlang/gap/include/gap@styling_All.hrl | 1 - .../gap/include/gap@styling_Highlighters.hrl | 5 - .../dev/erlang/gap/include/gap@styling_Part.hrl | 5 - .../dev/erlang/gap/include/gap@styling_Styling.hrl | 5 - aoc2023/build/dev/erlang/gleam.lock | 0 .../_gleam_artefacts/gleam@@compile.erl | 157 - .../_gleam_artefacts/gleam_community@ansi.cache | Bin 62995 -> 0 bytes .../gleam_community@ansi.cache_meta | Bin 114 -> 0 bytes .../_gleam_artefacts/gleam_community@ansi.erl | 263 - .../ebin/gleam_community@ansi.beam | Bin 10580 -> 0 bytes .../ebin/gleam_community_ansi.app | 8 - .../_gleam_artefacts/gleam@@compile.erl | 157 - .../_gleam_artefacts/gleam_community@colour.cache | Bin 28213 -> 0 bytes .../gleam_community@colour.cache_meta | Bin 123 -> 0 bytes .../_gleam_artefacts/gleam_community@colour.erl | 513 - .../gleam_community@colour@accessibility.cache | Bin 3149 -> 0 bytes ...gleam_community@colour@accessibility.cache_meta | Bin 96 -> 0 bytes .../gleam_community@colour@accessibility.erl | 75 - .../ebin/gleam_community@colour.beam | Bin 19736 -> 0 bytes .../ebin/gleam_community@colour@accessibility.beam | Bin 4148 -> 0 bytes .../ebin/gleam_community_colour.app | 7 - .../include/gleam_community@colour_Hsla.hrl | 1 - .../include/gleam_community@colour_Rgba.hrl | 1 - .../_gleam_artefacts/gleam@@compile.erl | 157 - .../gleam_community@maths@arithmetics.cache | Bin 14528 -> 0 bytes .../gleam_community@maths@arithmetics.cache_meta | Bin 183 -> 0 bytes .../gleam_community@maths@arithmetics.erl | 172 - .../gleam_community@maths@combinatorics.cache | Bin 8209 -> 0 bytes .../gleam_community@maths@combinatorics.cache_meta | Bin 64 -> 0 bytes .../gleam_community@maths@combinatorics.erl | 218 - .../gleam_community@maths@conversion.cache | Bin 4583 -> 0 bytes .../gleam_community@maths@conversion.cache_meta | Bin 46 -> 0 bytes .../gleam_community@maths@conversion.erl | 24 - .../gleam_community@maths@elementary.cache | Bin 30763 -> 0 bytes .../gleam_community@maths@elementary.cache_meta | Bin 66 -> 0 bytes .../gleam_community@maths@elementary.erl | 286 - .../gleam_community@maths@metrics.cache | Bin 12100 -> 0 bytes .../gleam_community@maths@metrics.cache_meta | Bin 284 -> 0 bytes .../gleam_community@maths@metrics.erl | 281 - .../gleam_community@maths@piecewise.cache | Bin 34039 -> 0 bytes .../gleam_community@maths@piecewise.cache_meta | Bin 201 -> 0 bytes .../gleam_community@maths@piecewise.erl | 563 - .../gleam_community@maths@predicates.cache | Bin 8750 -> 0 bytes .../gleam_community@maths@predicates.cache_meta | Bin 222 -> 0 bytes .../gleam_community@maths@predicates.erl | 118 - .../gleam_community@maths@sequences.cache | Bin 6486 -> 0 bytes .../gleam_community@maths@sequences.cache_meta | Bin 166 -> 0 bytes .../gleam_community@maths@sequences.erl | 202 - .../gleam_community@maths@special.cache | Bin 3907 -> 0 bytes .../gleam_community@maths@special.cache_meta | Bin 166 -> 0 bytes .../gleam_community@maths@special.erl | 163 - .../_gleam_artefacts/maths.mjs | 95 - .../ebin/gleam_community@maths@arithmetics.beam | Bin 7276 -> 0 bytes .../ebin/gleam_community@maths@combinatorics.beam | Bin 7624 -> 0 bytes .../ebin/gleam_community@maths@conversion.beam | Bin 1916 -> 0 bytes .../ebin/gleam_community@maths@elementary.beam | Bin 9320 -> 0 bytes .../ebin/gleam_community@maths@metrics.beam | Bin 9308 -> 0 bytes .../ebin/gleam_community@maths@piecewise.beam | Bin 16508 -> 0 bytes .../ebin/gleam_community@maths@predicates.beam | Bin 5584 -> 0 bytes .../ebin/gleam_community@maths@sequences.beam | Bin 7084 -> 0 bytes .../ebin/gleam_community@maths@special.beam | Bin 7656 -> 0 bytes .../ebin/gleam_community_maths.app | 7 - .../_gleam_artefacts/gleam@@compile.erl | 157 - .../_gleam_artefacts/gleam@erlang.cache | Bin 8892 -> 0 bytes .../_gleam_artefacts/gleam@erlang.cache_meta | Bin 122 -> 0 bytes .../gleam_erlang/_gleam_artefacts/gleam@erlang.erl | 90 - .../_gleam_artefacts/gleam@erlang@atom.cache | Bin 2901 -> 0 bytes .../_gleam_artefacts/gleam@erlang@atom.cache_meta | Bin 50 -> 0 bytes .../_gleam_artefacts/gleam@erlang@atom.erl | 26 - .../_gleam_artefacts/gleam@erlang@charlist.cache | Bin 869 -> 0 bytes .../gleam@erlang@charlist.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@erlang@charlist.erl | 15 - .../_gleam_artefacts/gleam@erlang@file.cache | Bin 28516 -> 0 bytes .../_gleam_artefacts/gleam@erlang@file.cache_meta | Bin 72 -> 0 bytes .../_gleam_artefacts/gleam@erlang@file.erl | 190 - .../_gleam_artefacts/gleam@erlang@node.cache | Bin 3092 -> 0 bytes .../_gleam_artefacts/gleam@erlang@node.cache_meta | Bin 54 -> 0 bytes .../_gleam_artefacts/gleam@erlang@node.erl | 33 - .../_gleam_artefacts/gleam@erlang@os.cache | Bin 3322 -> 0 bytes .../_gleam_artefacts/gleam@erlang@os.cache_meta | Bin 46 -> 0 bytes .../_gleam_artefacts/gleam@erlang@os.erl | 27 - .../_gleam_artefacts/gleam@erlang@process.cache | Bin 31558 -> 0 bytes .../gleam@erlang@process.cache_meta | Bin 115 -> 0 bytes .../_gleam_artefacts/gleam@erlang@process.erl | 374 - .../_gleam_artefacts/gleam_erlang_ffi.erl | 263 - .../dev/erlang/gleam_erlang/ebin/gleam@erlang.beam | Bin 4352 -> 0 bytes .../gleam_erlang/ebin/gleam@erlang@atom.beam | Bin 1856 -> 0 bytes .../gleam_erlang/ebin/gleam@erlang@charlist.beam | Bin 1392 -> 0 bytes .../gleam_erlang/ebin/gleam@erlang@file.beam | Bin 6008 -> 0 bytes .../gleam_erlang/ebin/gleam@erlang@node.beam | Bin 1980 -> 0 bytes .../erlang/gleam_erlang/ebin/gleam@erlang@os.beam | Bin 1836 -> 0 bytes .../gleam_erlang/ebin/gleam@erlang@process.beam | Bin 14888 -> 0 bytes .../dev/erlang/gleam_erlang/ebin/gleam_erlang.app | 7 - .../erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam | Bin 13964 -> 0 bytes .../include/gleam@erlang@file_FileInfo.hrl | 15 - .../include/gleam@erlang@process_Abnormal.hrl | 1 - .../include/gleam@erlang@process_CalleeDown.hrl | 1 - .../include/gleam@erlang@process_Cancelled.hrl | 1 - .../include/gleam@erlang@process_ExitMessage.hrl | 4 - .../include/gleam@erlang@process_ProcessDown.hrl | 4 - .../gleam@erlang@process_ProcessMonitor.hrl | 1 - .../include/gleam@erlang@process_Subject.hrl | 4 - .../gleam@erlang_ApplicationFailedToStart.hrl | 4 - .../include/gleam@erlang_UnknownApplication.hrl | 1 - .../gleam_http/_gleam_artefacts/gleam@@compile.erl | 157 - .../gleam_http/_gleam_artefacts/gleam@http.cache | Bin 15491 -> 0 bytes .../_gleam_artefacts/gleam@http.cache_meta | Bin 149 -> 0 bytes .../gleam_http/_gleam_artefacts/gleam@http.erl | 626 - .../_gleam_artefacts/gleam@http@cookie.cache | Bin 4352 -> 0 bytes .../_gleam_artefacts/gleam@http@cookie.cache_meta | Bin 161 -> 0 bytes .../_gleam_artefacts/gleam@http@cookie.erl | 153 - .../_gleam_artefacts/gleam@http@request.cache | Bin 8252 -> 0 bytes .../_gleam_artefacts/gleam@http@request.cache_meta | Bin 195 -> 0 bytes .../_gleam_artefacts/gleam@http@request.erl | 202 - .../_gleam_artefacts/gleam@http@response.cache | Bin 5278 -> 0 bytes .../gleam@http@response.cache_meta | Bin 150 -> 0 bytes .../_gleam_artefacts/gleam@http@response.erl | 97 - .../_gleam_artefacts/gleam@http@service.cache | Bin 3223 -> 0 bytes .../_gleam_artefacts/gleam@http@service.cache_meta | Bin 138 -> 0 bytes .../_gleam_artefacts/gleam@http@service.erl | 82 - .../_gleam_artefacts/gleam_http_native.erl | 88 - .../_gleam_artefacts/gleam_http_native.mjs | 38 - .../dev/erlang/gleam_http/ebin/gleam@http.beam | Bin 21920 -> 0 bytes .../erlang/gleam_http/ebin/gleam@http@cookie.beam | Bin 7076 -> 0 bytes .../erlang/gleam_http/ebin/gleam@http@request.beam | Bin 8976 -> 0 bytes .../gleam_http/ebin/gleam@http@response.beam | Bin 5004 -> 0 bytes .../erlang/gleam_http/ebin/gleam@http@service.beam | Bin 4308 -> 0 bytes .../dev/erlang/gleam_http/ebin/gleam_http.app | 7 - .../erlang/gleam_http/ebin/gleam_http_native.beam | Bin 4952 -> 0 bytes .../include/gleam@http@cookie_Attributes.hrl | 8 - .../include/gleam@http@request_Request.hrl | 10 - .../include/gleam@http@response_Response.hrl | 5 - .../include/gleam@http_MoreRequiredForBody.hrl | 5 - .../include/gleam@http_MoreRequiredForHeaders.hrl | 4 - .../include/gleam@http_MultipartBody.hrl | 5 - .../include/gleam@http_MultipartHeaders.hrl | 4 - .../_gleam_artefacts/gleam@@compile.erl | 157 - .../gleam_httpc/_gleam_artefacts/gleam@httpc.cache | Bin 4263 -> 0 bytes .../_gleam_artefacts/gleam@httpc.cache_meta | Bin 199 -> 0 bytes .../gleam_httpc/_gleam_artefacts/gleam@httpc.erl | 118 - .../dev/erlang/gleam_httpc/ebin/gleam@httpc.beam | Bin 4888 -> 0 bytes .../dev/erlang/gleam_httpc/ebin/gleam_httpc.app | 10 - .../gleam_otp/_gleam_artefacts/gleam@@compile.erl | 157 - .../_gleam_artefacts/gleam@otp@actor.cache | Bin 13720 -> 0 bytes .../_gleam_artefacts/gleam@otp@actor.cache_meta | Bin 196 -> 0 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@actor.erl | 273 - .../gleam@otp@intensity_tracker.cache | Bin 2475 -> 0 bytes .../gleam@otp@intensity_tracker.cache_meta | Bin 47 -> 0 bytes .../gleam@otp@intensity_tracker.erl | 53 - .../_gleam_artefacts/gleam@otp@port.cache | Bin 354 -> 0 bytes .../_gleam_artefacts/gleam@otp@port.cache_meta | Bin 29 -> 0 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@port.erl | 8 - .../_gleam_artefacts/gleam@otp@supervisor.cache | Bin 16821 -> 0 bytes .../gleam@otp@supervisor.cache_meta | Bin 200 -> 0 bytes .../_gleam_artefacts/gleam@otp@supervisor.erl | 322 - .../_gleam_artefacts/gleam@otp@system.cache | Bin 5895 -> 0 bytes .../_gleam_artefacts/gleam@otp@system.cache_meta | Bin 103 -> 0 bytes .../_gleam_artefacts/gleam@otp@system.erl | 43 - .../_gleam_artefacts/gleam@otp@task.cache | Bin 4454 -> 0 bytes .../_gleam_artefacts/gleam@otp@task.cache_meta | Bin 78 -> 0 bytes .../gleam_otp/_gleam_artefacts/gleam@otp@task.erl | 111 - .../gleam_otp/_gleam_artefacts/gleam_otp.cache | Bin 728 -> 0 bytes .../_gleam_artefacts/gleam_otp.cache_meta | Bin 130 -> 0 bytes .../gleam_otp/_gleam_artefacts/gleam_otp.erl | 28 - .../_gleam_artefacts/gleam_otp_external.erl | 43 - .../dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam | Bin 10924 -> 0 bytes .../ebin/gleam@otp@intensity_tracker.beam | Bin 2524 -> 0 bytes .../dev/erlang/gleam_otp/ebin/gleam@otp@port.beam | Bin 852 -> 0 bytes .../gleam_otp/ebin/gleam@otp@supervisor.beam | Bin 13040 -> 0 bytes .../erlang/gleam_otp/ebin/gleam@otp@system.beam | Bin 2044 -> 0 bytes .../dev/erlang/gleam_otp/ebin/gleam@otp@task.beam | Bin 5364 -> 0 bytes .../build/dev/erlang/gleam_otp/ebin/gleam_otp.app | 8 - .../build/dev/erlang/gleam_otp/ebin/gleam_otp.beam | Bin 2396 -> 0 bytes .../erlang/gleam_otp/ebin/gleam_otp_external.beam | Bin 3096 -> 0 bytes .../gleam_otp/include/gleam@otp@actor_Continue.hrl | 4 - .../gleam_otp/include/gleam@otp@actor_Ready.hrl | 1 - .../gleam_otp/include/gleam@otp@actor_Spec.hrl | 5 - ...leam@otp@intensity_tracker_IntensityTracker.hrl | 5 - .../include/gleam@otp@supervisor_ChildSpec.hrl | 5 - .../include/gleam@otp@supervisor_Spec.hrl | 6 - .../include/gleam@otp@system_StatusInfo.hrl | 7 - .../gleam_otp/include/gleam@otp@task_Exit.hrl | 1 - .../gleam_otp/include/gleam@otp@task_Task.hrl | 6 - .../erlang/gleam_stdlib/_gleam_artefacts/dict.mjs | 957 - .../_gleam_artefacts/gleam@@compile.erl | 157 - .../gleam_stdlib/_gleam_artefacts/gleam@base.cache | Bin 1301 -> 0 bytes .../_gleam_artefacts/gleam@base.cache_meta | Bin 52 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@base.erl | 20 - .../_gleam_artefacts/gleam@bit_array.cache | Bin 5024 -> 0 bytes .../_gleam_artefacts/gleam@bit_array.cache_meta | Bin 49 -> 0 bytes .../_gleam_artefacts/gleam@bit_array.erl | 102 - .../_gleam_artefacts/gleam@bit_builder.cache | Bin 4262 -> 0 bytes .../_gleam_artefacts/gleam@bit_builder.cache_meta | Bin 84 -> 0 bytes .../_gleam_artefacts/gleam@bit_builder.erl | 66 - .../_gleam_artefacts/gleam@bit_string.cache | Bin 2010 -> 0 bytes .../_gleam_artefacts/gleam@bit_string.cache_meta | Bin 52 -> 0 bytes .../_gleam_artefacts/gleam@bit_string.erl | 33 - .../gleam_stdlib/_gleam_artefacts/gleam@bool.cache | Bin 7175 -> 0 bytes .../_gleam_artefacts/gleam@bool.cache_meta | Bin 48 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@bool.erl | 162 - .../_gleam_artefacts/gleam@bytes_builder.cache | Bin 6338 -> 0 bytes .../gleam@bytes_builder.cache_meta | Bin 98 -> 0 bytes .../_gleam_artefacts/gleam@bytes_builder.erl | 87 - .../gleam_stdlib/_gleam_artefacts/gleam@dict.cache | Bin 12361 -> 0 bytes .../_gleam_artefacts/gleam@dict.cache_meta | Bin 49 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@dict.erl | 97 - .../_gleam_artefacts/gleam@dynamic.cache | Bin 49464 -> 0 bytes .../_gleam_artefacts/gleam@dynamic.cache_meta | Bin 173 -> 0 bytes .../_gleam_artefacts/gleam@dynamic.erl | 808 - .../_gleam_artefacts/gleam@float.cache | Bin 11445 -> 0 bytes .../_gleam_artefacts/gleam@float.cache_meta | Bin 48 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@float.erl | 181 - .../_gleam_artefacts/gleam@function.cache | Bin 5886 -> 0 bytes .../_gleam_artefacts/gleam@function.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@function.erl | 67 - .../gleam_stdlib/_gleam_artefacts/gleam@int.cache | Bin 18217 -> 0 bytes .../_gleam_artefacts/gleam@int.cache_meta | Bin 67 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@int.erl | 332 - .../gleam_stdlib/_gleam_artefacts/gleam@io.cache | Bin 2936 -> 0 bytes .../_gleam_artefacts/gleam@io.cache_meta | Bin 49 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@io.erl | 27 - .../_gleam_artefacts/gleam@iterator.cache | Bin 38553 -> 0 bytes .../_gleam_artefacts/gleam@iterator.cache_meta | Bin 141 -> 0 bytes .../_gleam_artefacts/gleam@iterator.erl | 744 - .../gleam_stdlib/_gleam_artefacts/gleam@list.cache | Bin 46380 -> 0 bytes .../_gleam_artefacts/gleam@list.cache_meta | Bin 120 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@list.erl | 1129 - .../gleam_stdlib/_gleam_artefacts/gleam@map.cache | Bin 4822 -> 0 bytes .../_gleam_artefacts/gleam@map.cache_meta | Bin 67 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@map.erl | 76 - .../_gleam_artefacts/gleam@option.cache | Bin 7384 -> 0 bytes .../_gleam_artefacts/gleam@option.cache_meta | Bin 29 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@option.erl | 147 - .../_gleam_artefacts/gleam@order.cache | Bin 2807 -> 0 bytes .../_gleam_artefacts/gleam@order.cache_meta | Bin 29 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@order.erl | 79 - .../gleam_stdlib/_gleam_artefacts/gleam@pair.cache | Bin 1961 -> 0 bytes .../_gleam_artefacts/gleam@pair.cache_meta | Bin 29 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@pair.erl | 33 - .../_gleam_artefacts/gleam@queue.cache | Bin 7180 -> 0 bytes .../_gleam_artefacts/gleam@queue.cache_meta | Bin 47 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@queue.erl | 121 - .../_gleam_artefacts/gleam@regex.cache | Bin 6990 -> 0 bytes .../_gleam_artefacts/gleam@regex.cache_meta | Bin 49 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@regex.erl | 33 - .../_gleam_artefacts/gleam@result.cache | Bin 10484 -> 0 bytes .../_gleam_artefacts/gleam@result.cache_meta | Bin 47 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@result.erl | 201 - .../gleam_stdlib/_gleam_artefacts/gleam@set.cache | Bin 6575 -> 0 bytes .../_gleam_artefacts/gleam@set.cache_meta | Bin 85 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@set.erl | 85 - .../_gleam_artefacts/gleam@string.cache | Bin 21819 -> 0 bytes .../_gleam_artefacts/gleam@string.cache_meta | Bin 136 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@string.erl | 352 - .../_gleam_artefacts/gleam@string_builder.cache | Bin 10653 -> 0 bytes .../gleam@string_builder.cache_meta | Bin 47 -> 0 bytes .../_gleam_artefacts/gleam@string_builder.erl | 91 - .../gleam_stdlib/_gleam_artefacts/gleam@uri.cache | Bin 8323 -> 0 bytes .../_gleam_artefacts/gleam@uri.cache_meta | Bin 132 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@uri.erl | 252 - .../gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl | 529 - .../gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs | 875 - .../dev/erlang/gleam_stdlib/ebin/gleam@base.beam | Bin 1720 -> 0 bytes .../erlang/gleam_stdlib/ebin/gleam@bit_array.beam | Bin 4696 -> 0 bytes .../gleam_stdlib/ebin/gleam@bit_builder.beam | Bin 3308 -> 0 bytes .../erlang/gleam_stdlib/ebin/gleam@bit_string.beam | Bin 2184 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@bool.beam | Bin 4008 -> 0 bytes .../gleam_stdlib/ebin/gleam@bytes_builder.beam | Bin 3760 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@dict.beam | Bin 4712 -> 0 bytes .../erlang/gleam_stdlib/ebin/gleam@dynamic.beam | Bin 32632 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@float.beam | Bin 6128 -> 0 bytes .../erlang/gleam_stdlib/ebin/gleam@function.beam | Bin 5500 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@int.beam | Bin 9888 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@io.beam | Bin 1748 -> 0 bytes .../erlang/gleam_stdlib/ebin/gleam@iterator.beam | Bin 28416 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@list.beam | Bin 34500 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@map.beam | Bin 4092 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@option.beam | Bin 4560 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@order.beam | Bin 2384 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@pair.beam | Bin 2024 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@queue.beam | Bin 5332 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@regex.beam | Bin 2116 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@result.beam | Bin 6868 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@set.beam | Bin 4772 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@string.beam | Bin 12480 -> 0 bytes .../gleam_stdlib/ebin/gleam@string_builder.beam | Bin 4152 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam@uri.beam | Bin 9524 -> 0 bytes .../dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app | 7 - .../dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam | Bin 28356 -> 0 bytes .../include/gleam@dynamic_DecodeError.hrl | 5 - .../include/gleam@iterator_Iterator.hrl | 1 - .../gleam_stdlib/include/gleam@iterator_Next.hrl | 1 - .../gleam_stdlib/include/gleam@queue_Queue.hrl | 1 - .../include/gleam@regex_CompileError.hrl | 1 - .../gleam_stdlib/include/gleam@regex_Match.hrl | 4 - .../gleam_stdlib/include/gleam@regex_Options.hrl | 1 - .../erlang/gleam_stdlib/include/gleam@set_Set.hrl | 1 - .../erlang/gleam_stdlib/include/gleam@uri_Uri.hrl | 9 - aoc2023/build/dev/erlang/gleam_version | 1 - .../glint/_gleam_artefacts/gleam@@compile.erl | 157 - .../dev/erlang/glint/_gleam_artefacts/glint.cache | Bin 18783 -> 0 bytes .../erlang/glint/_gleam_artefacts/glint.cache_meta | Bin 278 -> 0 bytes .../dev/erlang/glint/_gleam_artefacts/glint.erl | 513 - .../erlang/glint/_gleam_artefacts/glint@flag.cache | Bin 20298 -> 0 bytes .../glint/_gleam_artefacts/glint@flag.cache_meta | Bin 214 -> 0 bytes .../erlang/glint/_gleam_artefacts/glint@flag.erl | 523 - .../_gleam_artefacts/glint@flag@constraint.cache | Bin 1675 -> 0 bytes .../glint@flag@constraint.cache_meta | Bin 116 -> 0 bytes .../_gleam_artefacts/glint@flag@constraint.erl | 68 - aoc2023/build/dev/erlang/glint/ebin/glint.app | 10 - aoc2023/build/dev/erlang/glint/ebin/glint.beam | Bin 20208 -> 0 bytes .../build/dev/erlang/glint/ebin/glint@flag.beam | Bin 22116 -> 0 bytes .../erlang/glint/ebin/glint@flag@constraint.beam | Bin 3976 -> 0 bytes .../dev/erlang/glint/include/glint@flag_Flag.hrl | 1 - .../glint/include/glint@flag_FlagBuilder.hrl | 6 - .../erlang/glint/include/glint@flag_Internal.hrl | 4 - .../dev/erlang/glint/include/glint_Command.hrl | 5 - .../erlang/glint/include/glint_CommandInput.hrl | 4 - .../dev/erlang/glint/include/glint_Config.hrl | 4 - .../build/dev/erlang/glint/include/glint_Glint.hrl | 5 - .../dev/erlang/glint/include/glint_PrettyHelp.hrl | 5 - .../build/dev/erlang/glint/include/glint_Stub.hrl | 6 - aoc2023/build/dev/erlang/pqueue/LICENSE | 21 - aoc2023/build/dev/erlang/pqueue/README.markdown | 31 - .../prod/lib/.rebar3/rebar_compiler_erl/source.dag | Bin 492 -> 0 bytes aoc2023/build/dev/erlang/pqueue/doc/edoc-info | 3 - aoc2023/build/dev/erlang/pqueue/doc/erlang.png | Bin 2109 -> 0 bytes aoc2023/build/dev/erlang/pqueue/doc/index.html | 17 - .../build/dev/erlang/pqueue/doc/modules-frame.html | 15 - .../dev/erlang/pqueue/doc/overview-summary.html | 16 - aoc2023/build/dev/erlang/pqueue/doc/pqueue.html | 166 - aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html | 143 - aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html | 162 - aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html | 205 - aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css | 55 - aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app | 6 - aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam | Bin 87040 -> 0 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam | Bin 21608 -> 0 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam | Bin 14272 -> 0 bytes aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam | Bin 1219668 -> 0 bytes aoc2023/build/dev/erlang/pqueue/rebar.config | 14 - aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src | 10 - aoc2023/build/dev/erlang/pqueue/src/pqueue.erl | 2246 - aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl | 483 - aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl | 404 - aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl | 11662 ---- .../build/dev/erlang/pqueue/src/pqueue_test.hrl | 49 - .../build/dev/erlang/pqueue/test/pqueue_proper.erl | 156 - aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl | 183 - .../simplifile/_gleam_artefacts/gleam@@compile.erl | 157 - .../simplifile/_gleam_artefacts/simplifile.cache | Bin 20340 -> 0 bytes .../_gleam_artefacts/simplifile.cache_meta | Bin 110 -> 0 bytes .../simplifile/_gleam_artefacts/simplifile.erl | 287 - .../simplifile/_gleam_artefacts/simplifile_erl.erl | 70 - .../simplifile/_gleam_artefacts/simplifile_js.mjs | 102 - .../dev/erlang/simplifile/ebin/simplifile.app | 7 - .../dev/erlang/simplifile/ebin/simplifile.beam | Bin 10420 -> 0 bytes .../dev/erlang/simplifile/ebin/simplifile_erl.beam | Bin 4536 -> 0 bytes .../snag/_gleam_artefacts/gleam@@compile.erl | 157 - .../dev/erlang/snag/_gleam_artefacts/snag.cache | Bin 3753 -> 0 bytes .../erlang/snag/_gleam_artefacts/snag.cache_meta | Bin 125 -> 0 bytes .../dev/erlang/snag/_gleam_artefacts/snag.erl | 74 - aoc2023/build/dev/erlang/snag/ebin/snag.app | 7 - aoc2023/build/dev/erlang/snag/ebin/snag.beam | Bin 3648 -> 0 bytes .../build/dev/erlang/snag/include/snag_Snag.hrl | 1 - .../erlang/tom/_gleam_artefacts/gleam@@compile.erl | 157 - .../dev/erlang/tom/_gleam_artefacts/tom.cache | Bin 33321 -> 0 bytes .../dev/erlang/tom/_gleam_artefacts/tom.cache_meta | Bin 140 -> 0 bytes .../build/dev/erlang/tom/_gleam_artefacts/tom.erl | 2142 - aoc2023/build/dev/erlang/tom/ebin/tom.app | 7 - aoc2023/build/dev/erlang/tom/ebin/tom.beam | Bin 70968 -> 0 bytes .../dev/erlang/tom/include/tom_DateTimeValue.hrl | 5 - .../build/dev/erlang/tom/include/tom_DateValue.hrl | 1 - .../dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl | 1 - .../build/dev/erlang/tom/include/tom_NotFound.hrl | 1 - .../build/dev/erlang/tom/include/tom_Offset.hrl | 5 - .../build/dev/erlang/tom/include/tom_TimeValue.hrl | 6 - .../dev/erlang/tom/include/tom_Unexpected.hrl | 1 - .../build/dev/erlang/tom/include/tom_WrongType.hrl | 5 - aoc2023/build/dev/javascript/gleam.lock | 0 .../erlang/adglent/_gleam_artefacts/adglent.cache | Bin 2397 -> 0 bytes .../adglent/_gleam_artefacts/adglent.cache_meta | Bin 85 -> 0 bytes .../adglent/_gleam_artefacts/adglent@day.cache | Bin 583 -> 0 bytes .../_gleam_artefacts/adglent@day.cache_meta | Bin 293 -> 0 bytes .../adglent/_gleam_artefacts/adglent@init.cache | Bin 581 -> 0 bytes .../_gleam_artefacts/adglent@init.cache_meta | Bin 231 -> 0 bytes .../adglent/_gleam_artefacts/priv@aoc_client.cache | Bin 468 -> 0 bytes .../_gleam_artefacts/priv@aoc_client.cache_meta | Bin 131 -> 0 bytes .../adglent/_gleam_artefacts/priv@errors.cache | Bin 1514 -> 0 bytes .../_gleam_artefacts/priv@errors.cache_meta | Bin 85 -> 0 bytes .../adglent/_gleam_artefacts/priv@prompt.cache | Bin 1512 -> 0 bytes .../_gleam_artefacts/priv@prompt.cache_meta | Bin 69 -> 0 bytes .../adglent/_gleam_artefacts/priv@template.cache | Bin 438 -> 0 bytes .../_gleam_artefacts/priv@template.cache_meta | Bin 67 -> 0 bytes .../_gleam_artefacts/priv@templates@solution.cache | Bin 818 -> 0 bytes .../priv@templates@solution.cache_meta | Bin 29 -> 0 bytes .../priv@templates@test_main.cache | Bin 380 -> 0 bytes .../priv@templates@test_main.cache_meta | Bin 29 -> 0 bytes .../priv@templates@testfile_gleeunit.cache | Bin 1293 -> 0 bytes .../priv@templates@testfile_gleeunit.cache_meta | Bin 29 -> 0 bytes .../priv@templates@testfile_showtime.cache | Bin 1300 -> 0 bytes .../priv@templates@testfile_showtime.cache_meta | Bin 29 -> 0 bytes .../adglent/_gleam_artefacts/priv@toml.cache | Bin 1712 -> 0 bytes .../adglent/_gleam_artefacts/priv@toml.cache_meta | Bin 60 -> 0 bytes .../erlang/adglent/_gleam_artefacts/showtime.cache | Bin 1068 -> 0 bytes .../adglent/_gleam_artefacts/showtime.cache_meta | Bin 439 -> 0 bytes .../showtime@internal@common@cli.cache | Bin 879 -> 0 bytes .../showtime@internal@common@cli.cache_meta | Bin 29 -> 0 bytes ...time@internal@common@common_event_handler.cache | Bin 3269 -> 0 bytes ...internal@common@common_event_handler.cache_meta | Bin 89 -> 0 bytes .../showtime@internal@common@test_result.cache | Bin 15268 -> 0 bytes ...showtime@internal@common@test_result.cache_meta | Bin 67 -> 0 bytes .../showtime@internal@common@test_suite.cache | Bin 8896 -> 0 bytes .../showtime@internal@common@test_suite.cache_meta | Bin 129 -> 0 bytes .../showtime@internal@erlang@discover.cache | Bin 1929 -> 0 bytes .../showtime@internal@erlang@discover.cache_meta | Bin 227 -> 0 bytes .../showtime@internal@erlang@event_handler.cache | Bin 1538 -> 0 bytes ...owtime@internal@erlang@event_handler.cache_meta | Bin 292 -> 0 bytes .../showtime@internal@erlang@module_handler.cache | Bin 1135 -> 0 bytes ...wtime@internal@erlang@module_handler.cache_meta | Bin 179 -> 0 bytes .../showtime@internal@erlang@runner.cache | Bin 1642 -> 0 bytes .../showtime@internal@erlang@runner.cache_meta | Bin 195 -> 0 bytes .../showtime@internal@reports@compare.cache | Bin 479 -> 0 bytes .../showtime@internal@reports@compare.cache_meta | Bin 140 -> 0 bytes .../showtime@internal@reports@formatter.cache | Bin 5112 -> 0 bytes .../showtime@internal@reports@formatter.cache_meta | Bin 421 -> 0 bytes .../showtime@internal@reports@styles.cache | Bin 3189 -> 0 bytes .../showtime@internal@reports@styles.cache_meta | Bin 118 -> 0 bytes .../showtime@internal@reports@table.cache | Bin 5512 -> 0 bytes .../showtime@internal@reports@table.cache_meta | Bin 144 -> 0 bytes .../_gleam_artefacts/showtime@tests@meta.cache | Bin 899 -> 0 bytes .../showtime@tests@meta.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/showtime@tests@should.cache | Bin 5540 -> 0 bytes .../showtime@tests@should.cache_meta | Bin 76 -> 0 bytes .../_gleam_artefacts/showtime@tests@test.cache | Bin 3672 -> 0 bytes .../showtime@tests@test.cache_meta | Bin 101 -> 0 bytes .../erlang/aoc2023/_gleam_artefacts/aoc2023.cache | Bin 407 -> 0 bytes .../aoc2023/_gleam_artefacts/aoc2023.cache_meta | Bin 68 -> 0 bytes .../aoc2023/_gleam_artefacts/aoc2023_test.cache | Bin 305 -> 0 bytes .../_gleam_artefacts/aoc2023_test.cache_meta | Bin 45 -> 0 bytes .../_gleam_artefacts/day10@day10_test.cache | Bin 1847 -> 0 bytes .../_gleam_artefacts/day10@day10_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day10@solve.cache | Bin 5449 -> 0 bytes .../_gleam_artefacts/day10@solve.cache_meta | Bin 168 -> 0 bytes .../_gleam_artefacts/day11@day11_test.cache | Bin 1935 -> 0 bytes .../_gleam_artefacts/day11@day11_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day11@solve.cache | Bin 2063 -> 0 bytes .../_gleam_artefacts/day11@solve.cache_meta | Bin 115 -> 0 bytes .../_gleam_artefacts/day12@day12_test.cache | Bin 1730 -> 0 bytes .../_gleam_artefacts/day12@day12_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day12@solve.cache | Bin 1777 -> 0 bytes .../_gleam_artefacts/day12@solve.cache_meta | Bin 157 -> 0 bytes .../_gleam_artefacts/day13@day13_test.cache | Bin 1996 -> 0 bytes .../_gleam_artefacts/day13@day13_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day13@solve.cache | Bin 2417 -> 0 bytes .../_gleam_artefacts/day13@solve.cache_meta | Bin 116 -> 0 bytes .../_gleam_artefacts/day14@day14_test.cache | Bin 1931 -> 0 bytes .../_gleam_artefacts/day14@day14_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day14@solve.cache | Bin 2257 -> 0 bytes .../_gleam_artefacts/day14@solve.cache_meta | Bin 152 -> 0 bytes .../_gleam_artefacts/day15@day15_test.cache | Bin 1819 -> 0 bytes .../_gleam_artefacts/day15@day15_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day15@solve.cache | Bin 3206 -> 0 bytes .../_gleam_artefacts/day15@solve.cache_meta | Bin 153 -> 0 bytes .../_gleam_artefacts/day16@day16_test.cache | Bin 1914 -> 0 bytes .../_gleam_artefacts/day16@day16_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day16@solve.cache | Bin 2442 -> 0 bytes .../_gleam_artefacts/day16@solve.cache_meta | Bin 176 -> 0 bytes .../_gleam_artefacts/day17@day17_test.cache | Bin 1789 -> 0 bytes .../_gleam_artefacts/day17@day17_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day17@solve.cache | Bin 4203 -> 0 bytes .../_gleam_artefacts/day17@solve.cache_meta | Bin 223 -> 0 bytes .../_gleam_artefacts/day18@day18_test.cache | Bin 2116 -> 0 bytes .../_gleam_artefacts/day18@day18_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day18@solve.cache | Bin 3614 -> 0 bytes .../_gleam_artefacts/day18@solve.cache_meta | Bin 154 -> 0 bytes .../_gleam_artefacts/day19@day19_test.cache | Bin 2440 -> 0 bytes .../_gleam_artefacts/day19@day19_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day19@solve.cache | Bin 9029 -> 0 bytes .../_gleam_artefacts/day19@solve.cache_meta | Bin 191 -> 0 bytes .../aoc2023/_gleam_artefacts/day1@day1_test.cache | Bin 1836 -> 0 bytes .../_gleam_artefacts/day1@day1_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache | Bin 1176 -> 0 bytes .../aoc2023/_gleam_artefacts/day1@solve.cache_meta | Bin 134 -> 0 bytes .../_gleam_artefacts/day20@day20_test.cache | Bin 1864 -> 0 bytes .../_gleam_artefacts/day20@day20_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day20@solve.cache | Bin 6718 -> 0 bytes .../_gleam_artefacts/day20@solve.cache_meta | Bin 192 -> 0 bytes .../_gleam_artefacts/day21@day21_test.cache | Bin 1500 -> 0 bytes .../_gleam_artefacts/day21@day21_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day21@solve.cache | Bin 551 -> 0 bytes .../_gleam_artefacts/day21@solve.cache_meta | Bin 60 -> 0 bytes .../_gleam_artefacts/day22@day22_test.cache | Bin 1850 -> 0 bytes .../_gleam_artefacts/day22@day22_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day22@solve.cache | Bin 6239 -> 0 bytes .../_gleam_artefacts/day22@solve.cache_meta | Bin 227 -> 0 bytes .../_gleam_artefacts/day23@day23_test.cache | Bin 2795 -> 0 bytes .../_gleam_artefacts/day23@day23_test.cache_meta | Bin 110 -> 0 bytes .../aoc2023/_gleam_artefacts/day23@solve.cache | Bin 5955 -> 0 bytes .../_gleam_artefacts/day23@solve.cache_meta | Bin 213 -> 0 bytes .../aoc2023/_gleam_artefacts/day2@day2_test.cache | Bin 2474 -> 0 bytes .../_gleam_artefacts/day2@day2_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache | Bin 1442 -> 0 bytes .../aoc2023/_gleam_artefacts/day2@solve.cache_meta | Bin 115 -> 0 bytes .../aoc2023/_gleam_artefacts/day3@day3_test.cache | Bin 1898 -> 0 bytes .../_gleam_artefacts/day3@day3_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache | Bin 5669 -> 0 bytes .../aoc2023/_gleam_artefacts/day3@solve.cache_meta | Bin 152 -> 0 bytes .../aoc2023/_gleam_artefacts/day4@day4_test.cache | Bin 2259 -> 0 bytes .../_gleam_artefacts/day4@day4_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache | Bin 2090 -> 0 bytes .../aoc2023/_gleam_artefacts/day4@solve.cache_meta | Bin 208 -> 0 bytes .../aoc2023/_gleam_artefacts/day5@day5_test.cache | Bin 2381 -> 0 bytes .../_gleam_artefacts/day5@day5_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache | Bin 5112 -> 0 bytes .../aoc2023/_gleam_artefacts/day5@solve.cache_meta | Bin 157 -> 0 bytes .../aoc2023/_gleam_artefacts/day6@day6_test.cache | Bin 1790 -> 0 bytes .../_gleam_artefacts/day6@day6_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache | Bin 1922 -> 0 bytes .../aoc2023/_gleam_artefacts/day6@solve.cache_meta | Bin 135 -> 0 bytes .../aoc2023/_gleam_artefacts/day7@day7_test.cache | Bin 1803 -> 0 bytes .../_gleam_artefacts/day7@day7_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache | Bin 3185 -> 0 bytes .../aoc2023/_gleam_artefacts/day7@solve.cache_meta | Bin 174 -> 0 bytes .../aoc2023/_gleam_artefacts/day8@day8_test.cache | Bin 1865 -> 0 bytes .../_gleam_artefacts/day8@day8_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache | Bin 1810 -> 0 bytes .../aoc2023/_gleam_artefacts/day8@solve.cache_meta | Bin 236 -> 0 bytes .../aoc2023/_gleam_artefacts/day9@day9_test.cache | Bin 1791 -> 0 bytes .../_gleam_artefacts/day9@day9_test.cache_meta | Bin 109 -> 0 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache | Bin 1830 -> 0 bytes .../aoc2023/_gleam_artefacts/day9@solve.cache_meta | Bin 115 -> 0 bytes .../_gleam_artefacts/utilities@array2d.cache | Bin 3025 -> 0 bytes .../_gleam_artefacts/utilities@array2d.cache_meta | Bin 122 -> 0 bytes .../aoc2023/_gleam_artefacts/utilities@memo.cache | Bin 3200 -> 0 bytes .../_gleam_artefacts/utilities@memo.cache_meta | Bin 118 -> 0 bytes .../_gleam_artefacts/utilities@prioqueue.cache | Bin 3154 -> 0 bytes .../utilities@prioqueue.cache_meta | Bin 47 -> 0 bytes .../lsp/erlang/gap/_gleam_artefacts/gap.cache | Bin 6093 -> 0 bytes .../lsp/erlang/gap/_gleam_artefacts/gap.cache_meta | Bin 282 -> 0 bytes .../gap/_gleam_artefacts/gap@comparison.cache | Bin 2544 -> 0 bytes .../gap/_gleam_artefacts/gap@comparison.cache_meta | Bin 29 -> 0 bytes .../erlang/gap/_gleam_artefacts/gap@myers.cache | Bin 4862 -> 0 bytes .../gap/_gleam_artefacts/gap@myers.cache_meta | Bin 47 -> 0 bytes .../_gleam_artefacts/gap@styled_comparison.cache | Bin 946 -> 0 bytes .../gap@styled_comparison.cache_meta | Bin 29 -> 0 bytes .../erlang/gap/_gleam_artefacts/gap@styling.cache | Bin 8073 -> 0 bytes .../gap/_gleam_artefacts/gap@styling.cache_meta | Bin 166 -> 0 bytes aoc2023/build/lsp/erlang/gleam.lock | 0 .../_gleam_artefacts/gleam_community@ansi.cache | Bin 62994 -> 0 bytes .../gleam_community@ansi.cache_meta | Bin 114 -> 0 bytes .../_gleam_artefacts/gleam_community@colour.cache | Bin 28196 -> 0 bytes .../gleam_community@colour.cache_meta | Bin 123 -> 0 bytes .../gleam_community@colour@accessibility.cache | Bin 3151 -> 0 bytes ...gleam_community@colour@accessibility.cache_meta | Bin 96 -> 0 bytes .../gleam_community@maths@arithmetics.cache | Bin 14527 -> 0 bytes .../gleam_community@maths@arithmetics.cache_meta | Bin 183 -> 0 bytes .../gleam_community@maths@combinatorics.cache | Bin 8209 -> 0 bytes .../gleam_community@maths@combinatorics.cache_meta | Bin 64 -> 0 bytes .../gleam_community@maths@conversion.cache | Bin 4583 -> 0 bytes .../gleam_community@maths@conversion.cache_meta | Bin 46 -> 0 bytes .../gleam_community@maths@elementary.cache | Bin 30776 -> 0 bytes .../gleam_community@maths@elementary.cache_meta | Bin 66 -> 0 bytes .../gleam_community@maths@metrics.cache | Bin 12100 -> 0 bytes .../gleam_community@maths@metrics.cache_meta | Bin 284 -> 0 bytes .../gleam_community@maths@piecewise.cache | Bin 34044 -> 0 bytes .../gleam_community@maths@piecewise.cache_meta | Bin 201 -> 0 bytes .../gleam_community@maths@predicates.cache | Bin 8778 -> 0 bytes .../gleam_community@maths@predicates.cache_meta | Bin 222 -> 0 bytes .../gleam_community@maths@sequences.cache | Bin 6493 -> 0 bytes .../gleam_community@maths@sequences.cache_meta | Bin 166 -> 0 bytes .../gleam_community@maths@special.cache | Bin 3907 -> 0 bytes .../gleam_community@maths@special.cache_meta | Bin 166 -> 0 bytes .../_gleam_artefacts/gleam@erlang.cache | Bin 8918 -> 0 bytes .../_gleam_artefacts/gleam@erlang.cache_meta | Bin 122 -> 0 bytes .../_gleam_artefacts/gleam@erlang@atom.cache | Bin 2901 -> 0 bytes .../_gleam_artefacts/gleam@erlang@atom.cache_meta | Bin 50 -> 0 bytes .../_gleam_artefacts/gleam@erlang@charlist.cache | Bin 869 -> 0 bytes .../gleam@erlang@charlist.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@erlang@file.cache | Bin 28539 -> 0 bytes .../_gleam_artefacts/gleam@erlang@file.cache_meta | Bin 72 -> 0 bytes .../_gleam_artefacts/gleam@erlang@node.cache | Bin 3094 -> 0 bytes .../_gleam_artefacts/gleam@erlang@node.cache_meta | Bin 54 -> 0 bytes .../_gleam_artefacts/gleam@erlang@os.cache | Bin 3322 -> 0 bytes .../_gleam_artefacts/gleam@erlang@os.cache_meta | Bin 46 -> 0 bytes .../_gleam_artefacts/gleam@erlang@process.cache | Bin 31555 -> 0 bytes .../gleam@erlang@process.cache_meta | Bin 115 -> 0 bytes .../gleam_http/_gleam_artefacts/gleam@http.cache | Bin 15465 -> 0 bytes .../_gleam_artefacts/gleam@http.cache_meta | Bin 149 -> 0 bytes .../_gleam_artefacts/gleam@http@cookie.cache | Bin 4344 -> 0 bytes .../_gleam_artefacts/gleam@http@cookie.cache_meta | Bin 161 -> 0 bytes .../_gleam_artefacts/gleam@http@request.cache | Bin 8254 -> 0 bytes .../_gleam_artefacts/gleam@http@request.cache_meta | Bin 195 -> 0 bytes .../_gleam_artefacts/gleam@http@response.cache | Bin 5271 -> 0 bytes .../gleam@http@response.cache_meta | Bin 150 -> 0 bytes .../_gleam_artefacts/gleam@http@service.cache | Bin 3225 -> 0 bytes .../_gleam_artefacts/gleam@http@service.cache_meta | Bin 138 -> 0 bytes .../gleam_httpc/_gleam_artefacts/gleam@httpc.cache | Bin 4263 -> 0 bytes .../_gleam_artefacts/gleam@httpc.cache_meta | Bin 199 -> 0 bytes .../_gleam_artefacts/gleam@otp@actor.cache | Bin 13713 -> 0 bytes .../_gleam_artefacts/gleam@otp@actor.cache_meta | Bin 196 -> 0 bytes .../gleam@otp@intensity_tracker.cache | Bin 2473 -> 0 bytes .../gleam@otp@intensity_tracker.cache_meta | Bin 47 -> 0 bytes .../_gleam_artefacts/gleam@otp@port.cache | Bin 354 -> 0 bytes .../_gleam_artefacts/gleam@otp@port.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@otp@supervisor.cache | Bin 16820 -> 0 bytes .../gleam@otp@supervisor.cache_meta | Bin 200 -> 0 bytes .../_gleam_artefacts/gleam@otp@system.cache | Bin 5899 -> 0 bytes .../_gleam_artefacts/gleam@otp@system.cache_meta | Bin 103 -> 0 bytes .../_gleam_artefacts/gleam@otp@task.cache | Bin 4453 -> 0 bytes .../_gleam_artefacts/gleam@otp@task.cache_meta | Bin 78 -> 0 bytes .../gleam_otp/_gleam_artefacts/gleam_otp.cache | Bin 728 -> 0 bytes .../_gleam_artefacts/gleam_otp.cache_meta | Bin 130 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@base.cache | Bin 1301 -> 0 bytes .../_gleam_artefacts/gleam@base.cache_meta | Bin 52 -> 0 bytes .../_gleam_artefacts/gleam@bit_array.cache | Bin 5029 -> 0 bytes .../_gleam_artefacts/gleam@bit_array.cache_meta | Bin 49 -> 0 bytes .../_gleam_artefacts/gleam@bit_builder.cache | Bin 4262 -> 0 bytes .../_gleam_artefacts/gleam@bit_builder.cache_meta | Bin 84 -> 0 bytes .../_gleam_artefacts/gleam@bit_string.cache | Bin 2010 -> 0 bytes .../_gleam_artefacts/gleam@bit_string.cache_meta | Bin 52 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@bool.cache | Bin 7182 -> 0 bytes .../_gleam_artefacts/gleam@bool.cache_meta | Bin 48 -> 0 bytes .../_gleam_artefacts/gleam@bytes_builder.cache | Bin 6332 -> 0 bytes .../gleam@bytes_builder.cache_meta | Bin 98 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@dict.cache | Bin 12366 -> 0 bytes .../_gleam_artefacts/gleam@dict.cache_meta | Bin 49 -> 0 bytes .../_gleam_artefacts/gleam@dynamic.cache | Bin 49488 -> 0 bytes .../_gleam_artefacts/gleam@dynamic.cache_meta | Bin 173 -> 0 bytes .../_gleam_artefacts/gleam@float.cache | Bin 11443 -> 0 bytes .../_gleam_artefacts/gleam@float.cache_meta | Bin 48 -> 0 bytes .../_gleam_artefacts/gleam@function.cache | Bin 5891 -> 0 bytes .../_gleam_artefacts/gleam@function.cache_meta | Bin 29 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@int.cache | Bin 18231 -> 0 bytes .../_gleam_artefacts/gleam@int.cache_meta | Bin 67 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@io.cache | Bin 2936 -> 0 bytes .../_gleam_artefacts/gleam@io.cache_meta | Bin 49 -> 0 bytes .../_gleam_artefacts/gleam@iterator.cache | Bin 38551 -> 0 bytes .../_gleam_artefacts/gleam@iterator.cache_meta | Bin 141 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@list.cache | Bin 46400 -> 0 bytes .../_gleam_artefacts/gleam@list.cache_meta | Bin 120 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@map.cache | Bin 4813 -> 0 bytes .../_gleam_artefacts/gleam@map.cache_meta | Bin 67 -> 0 bytes .../_gleam_artefacts/gleam@option.cache | Bin 7376 -> 0 bytes .../_gleam_artefacts/gleam@option.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@order.cache | Bin 2807 -> 0 bytes .../_gleam_artefacts/gleam@order.cache_meta | Bin 29 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@pair.cache | Bin 1961 -> 0 bytes .../_gleam_artefacts/gleam@pair.cache_meta | Bin 29 -> 0 bytes .../_gleam_artefacts/gleam@queue.cache | Bin 7173 -> 0 bytes .../_gleam_artefacts/gleam@queue.cache_meta | Bin 47 -> 0 bytes .../_gleam_artefacts/gleam@regex.cache | Bin 6995 -> 0 bytes .../_gleam_artefacts/gleam@regex.cache_meta | Bin 49 -> 0 bytes .../_gleam_artefacts/gleam@result.cache | Bin 10470 -> 0 bytes .../_gleam_artefacts/gleam@result.cache_meta | Bin 47 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@set.cache | Bin 6578 -> 0 bytes .../_gleam_artefacts/gleam@set.cache_meta | Bin 85 -> 0 bytes .../_gleam_artefacts/gleam@string.cache | Bin 21826 -> 0 bytes .../_gleam_artefacts/gleam@string.cache_meta | Bin 136 -> 0 bytes .../_gleam_artefacts/gleam@string_builder.cache | Bin 10647 -> 0 bytes .../gleam@string_builder.cache_meta | Bin 47 -> 0 bytes .../gleam_stdlib/_gleam_artefacts/gleam@uri.cache | Bin 8321 -> 0 bytes .../_gleam_artefacts/gleam@uri.cache_meta | Bin 132 -> 0 bytes aoc2023/build/lsp/erlang/gleam_version | 1 - .../lsp/erlang/glint/_gleam_artefacts/glint.cache | Bin 18769 -> 0 bytes .../erlang/glint/_gleam_artefacts/glint.cache_meta | Bin 278 -> 0 bytes .../erlang/glint/_gleam_artefacts/glint@flag.cache | Bin 20304 -> 0 bytes .../glint/_gleam_artefacts/glint@flag.cache_meta | Bin 214 -> 0 bytes .../_gleam_artefacts/glint@flag@constraint.cache | Bin 1675 -> 0 bytes .../glint@flag@constraint.cache_meta | Bin 116 -> 0 bytes .../simplifile/_gleam_artefacts/simplifile.cache | Bin 20315 -> 0 bytes .../_gleam_artefacts/simplifile.cache_meta | Bin 110 -> 0 bytes .../lsp/erlang/snag/_gleam_artefacts/snag.cache | Bin 3751 -> 0 bytes .../erlang/snag/_gleam_artefacts/snag.cache_meta | Bin 125 -> 0 bytes .../lsp/erlang/tom/_gleam_artefacts/tom.cache | Bin 33280 -> 0 bytes .../lsp/erlang/tom/_gleam_artefacts/tom.cache_meta | Bin 140 -> 0 bytes aoc2023/build/lsp/javascript/gleam.lock | 0 aoc2023/build/packages/adglent/LICENSE | 201 - aoc2023/build/packages/adglent/README.md | 115 - aoc2023/build/packages/adglent/gleam.toml | 29 - .../packages/adglent/include/adglent_Example.hrl | 1 - .../adglent/include/priv@toml_TomGetError.hrl | 1 - .../adglent/include/priv@toml_TomParseError.hrl | 1 - ...ternal@common@common_event_handler_Finished.hrl | 1 - ...al@common@common_event_handler_HandlerState.hrl | 5 - ...howtime@internal@common@test_result_ArgList.hrl | 1 - ...ime@internal@common@test_result_AssertEqual.hrl | 3 - ...ime@internal@common@test_result_AssertMatch.hrl | 3 - ...@internal@common@test_result_AssertNotEqual.hrl | 3 - ...internal@common@test_result_ErlangException.hrl | 6 - ...wtime@internal@common@test_result_ErrorInfo.hrl | 3 - ...owtime@internal@common@test_result_Expected.hrl | 1 - ...time@internal@common@test_result_Expression.hrl | 1 - .../showtime@internal@common@test_result_File.hrl | 1 - ...nternal@common@test_result_GenericException.hrl | 1 - ...ime@internal@common@test_result_GleamAssert.hrl | 1 - ...time@internal@common@test_result_GleamError.hrl | 3 - ...howtime@internal@common@test_result_Ignored.hrl | 1 - ...wtime@internal@common@test_result_LetAssert.hrl | 7 - .../showtime@internal@common@test_result_Line.hrl | 1 - ...showtime@internal@common@test_result_Module.hrl | 1 - .../showtime@internal@common@test_result_Num.hrl | 1 - ...howtime@internal@common@test_result_Pattern.hrl | 1 - ...time@internal@common@test_result_ReasonLine.hrl | 1 - ...ernal@common@test_result_TestFunctionReturn.hrl | 4 - .../showtime@internal@common@test_result_Trace.hrl | 5 - ...wtime@internal@common@test_result_TraceList.hrl | 3 - ...ime@internal@common@test_result_TraceModule.hrl | 6 - .../showtime@internal@common@test_result_Value.hrl | 1 - ...internal@common@test_suite_CompletedTestRun.hrl | 6 - ...showtime@internal@common@test_suite_EndTest.hrl | 6 - ...wtime@internal@common@test_suite_EndTestRun.hrl | 1 - ...ime@internal@common@test_suite_EndTestSuite.hrl | 3 - ...e@internal@common@test_suite_OngoingTestRun.hrl | 4 - ...owtime@internal@common@test_suite_StartTest.hrl | 4 - ...e@internal@common@test_suite_StartTestSuite.hrl | 3 - ...ime@internal@common@test_suite_TestFunction.hrl | 1 - ...wtime@internal@common@test_suite_TestModule.hrl | 1 - ...owtime@internal@common@test_suite_TestSuite.hrl | 4 - .../showtime@internal@reports@table_AlignLeft.hrl | 4 - ...me@internal@reports@table_AlignLeftOverflow.hrl | 4 - .../showtime@internal@reports@table_AlignRight.hrl | 4 - ...e@internal@reports@table_AlignRightOverflow.hrl | 4 - .../showtime@internal@reports@table_Aligned.hrl | 1 - .../showtime@internal@reports@table_Content.hrl | 1 - .../showtime@internal@reports@table_Separator.hrl | 1 - ...owtime@internal@reports@table_StyledContent.hrl | 1 - .../showtime@internal@reports@table_Table.hrl | 4 - .../adglent/include/showtime@tests@meta_Meta.hrl | 1 - .../adglent/include/showtime@tests@should_Eq.hrl | 5 - .../adglent/include/showtime@tests@should_Fail.hrl | 1 - .../include/showtime@tests@should_IsError.hrl | 4 - .../adglent/include/showtime@tests@should_IsOk.hrl | 4 - .../include/showtime@tests@should_NotEq.hrl | 5 - .../include/showtime@tests@test_MetaShould.hrl | 4 - .../adglent/include/showtime@tests@test_Test.hrl | 4 - aoc2023/build/packages/adglent/src/adglent.app.src | 45 - aoc2023/build/packages/adglent/src/adglent.erl | 55 - aoc2023/build/packages/adglent/src/adglent.gleam | 56 - .../build/packages/adglent/src/adglent/day.gleam | 126 - .../build/packages/adglent/src/adglent/init.gleam | 110 - aoc2023/build/packages/adglent/src/adglent@day.erl | 278 - .../build/packages/adglent/src/adglent@init.erl | 142 - aoc2023/build/packages/adglent/src/adglent_ffi.erl | 12 - .../packages/adglent/src/priv/aoc_client.gleam | 37 - .../build/packages/adglent/src/priv/errors.gleam | 54 - .../build/packages/adglent/src/priv/prompt.gleam | 38 - .../build/packages/adglent/src/priv/template.gleam | 18 - .../adglent/src/priv/templates/solution.gleam | 27 - .../adglent/src/priv/templates/test_main.gleam | 7 - .../src/priv/templates/testfile_gleeunit.gleam | 41 - .../src/priv/templates/testfile_showtime.gleam | 41 - aoc2023/build/packages/adglent/src/priv/toml.gleam | 52 - .../build/packages/adglent/src/priv@aoc_client.erl | 61 - aoc2023/build/packages/adglent/src/priv@errors.erl | 74 - aoc2023/build/packages/adglent/src/priv@prompt.erl | 53 - .../build/packages/adglent/src/priv@template.erl | 25 - .../adglent/src/priv@templates@solution.erl | 1 - .../adglent/src/priv@templates@test_main.erl | 1 - .../src/priv@templates@testfile_gleeunit.erl | 1 - .../src/priv@templates@testfile_showtime.erl | 1 - aoc2023/build/packages/adglent/src/priv@toml.erl | 83 - aoc2023/build/packages/adglent/src/showtime.erl | 155 - aoc2023/build/packages/adglent/src/showtime.gleam | 116 - .../adglent/src/showtime/internal/common/cli.gleam | 5 - .../internal/common/common_event_handler.gleam | 101 - .../src/showtime/internal/common/test_result.gleam | 119 - .../src/showtime/internal/common/test_suite.gleam | 63 - .../src/showtime/internal/erlang/discover.gleam | 167 - .../showtime/internal/erlang/event_handler.gleam | 91 - .../showtime/internal/erlang/module_handler.gleam | 43 - .../src/showtime/internal/erlang/runner.gleam | 59 - .../src/showtime/internal/reports/compare.gleam | 42 - .../src/showtime/internal/reports/formatter.gleam | 480 - .../src/showtime/internal/reports/styles.gleam | 84 - .../src/showtime/internal/reports/table.gleam | 148 - .../packages/adglent/src/showtime/tests/meta.gleam | 3 - .../adglent/src/showtime/tests/should.gleam | 113 - .../packages/adglent/src/showtime/tests/test.gleam | 57 - .../adglent/src/showtime@internal@common@cli.erl | 8 - ...owtime@internal@common@common_event_handler.erl | 131 - .../src/showtime@internal@common@test_result.erl | 54 - .../src/showtime@internal@common@test_suite.erl | 30 - .../src/showtime@internal@erlang@discover.erl | 230 - .../src/showtime@internal@erlang@event_handler.erl | 76 - .../showtime@internal@erlang@module_handler.erl | 53 - .../src/showtime@internal@erlang@runner.erl | 46 - .../src/showtime@internal@reports@compare.erl | 61 - .../src/showtime@internal@reports@formatter.erl | 749 - .../src/showtime@internal@reports@styles.erl | 93 - .../src/showtime@internal@reports@table.erl | 229 - .../packages/adglent/src/showtime@tests@meta.erl | 8 - .../packages/adglent/src/showtime@tests@should.erl | 143 - .../packages/adglent/src/showtime@tests@test.erl | 57 - .../build/packages/adglent/src/showtime_ffi.erl | 187 - aoc2023/build/packages/gap/LICENSE | 201 - aoc2023/build/packages/gap/README.md | 202 - aoc2023/build/packages/gap/gleam.toml | 18 - .../gap/include/gap@comparison_ListComparison.hrl | 4 - .../packages/gap/include/gap@comparison_Match.hrl | 1 - .../gap/include/gap@comparison_NoMatch.hrl | 1 - .../include/gap@comparison_StringComparison.hrl | 4 - .../gap@styled_comparison_StyledComparison.hrl | 1 - .../build/packages/gap/include/gap@styling_All.hrl | 1 - .../gap/include/gap@styling_Highlighters.hrl | 5 - .../packages/gap/include/gap@styling_Part.hrl | 5 - .../packages/gap/include/gap@styling_Styling.hrl | 5 - aoc2023/build/packages/gap/src/gap.app.src | 13 - aoc2023/build/packages/gap/src/gap.erl | 538 - aoc2023/build/packages/gap/src/gap.gleam | 438 - .../build/packages/gap/src/gap/comparison.gleam | 22 - aoc2023/build/packages/gap/src/gap/myers.gleam | 122 - .../packages/gap/src/gap/styled_comparison.gleam | 4 - aoc2023/build/packages/gap/src/gap/styling.gleam | 233 - aoc2023/build/packages/gap/src/gap@comparison.erl | 15 - aoc2023/build/packages/gap/src/gap@myers.erl | 156 - .../packages/gap/src/gap@styled_comparison.erl | 8 - aoc2023/build/packages/gap/src/gap@styling.erl | 202 - aoc2023/build/packages/gap/src/gap_ffi.mjs | 431 - aoc2023/build/packages/gleam.lock | 0 .../build/packages/gleam_community_ansi/LICENCE | 190 - .../build/packages/gleam_community_ansi/README.md | 72 - .../build/packages/gleam_community_ansi/gleam.toml | 13 - .../src/gleam_community/ansi.gleam | 2317 - .../src/gleam_community@ansi.erl | 263 - .../src/gleam_community_ansi.app.src | 9 - .../build/packages/gleam_community_colour/LICENCE | 190 - .../packages/gleam_community_colour/README.md | 36 - .../packages/gleam_community_colour/gleam.toml | 11 - .../include/gleam_community@colour_Hsla.hrl | 1 - .../include/gleam_community@colour_Rgba.hrl | 1 - .../src/gleam_community/colour.gleam | 1126 - .../src/gleam_community/colour/accessibility.gleam | 173 - .../src/gleam_community@colour.erl | 511 - .../src/gleam_community@colour@accessibility.erl | 73 - .../src/gleam_community_colour.app.src | 9 - .../build/packages/gleam_community_maths/LICENCE | 190 - .../build/packages/gleam_community_maths/README.md | 59 - .../packages/gleam_community_maths/gleam.toml | 12 - .../src/gleam_community/maths/arithmetics.gleam | 618 - .../src/gleam_community/maths/combinatorics.gleam | 432 - .../src/gleam_community/maths/conversion.gleam | 183 - .../src/gleam_community/maths/elementary.gleam | 1256 - .../src/gleam_community/maths/metrics.gleam | 560 - .../src/gleam_community/maths/piecewise.gleam | 1228 - .../src/gleam_community/maths/predicates.gleam | 363 - .../src/gleam_community/maths/sequences.gleam | 302 - .../src/gleam_community/maths/special.gleam | 205 - .../src/gleam_community@maths@arithmetics.erl | 172 - .../src/gleam_community@maths@combinatorics.erl | 218 - .../src/gleam_community@maths@conversion.erl | 23 - .../src/gleam_community@maths@elementary.erl | 284 - .../src/gleam_community@maths@metrics.erl | 278 - .../src/gleam_community@maths@piecewise.erl | 553 - .../src/gleam_community@maths@predicates.erl | 118 - .../src/gleam_community@maths@sequences.erl | 199 - .../src/gleam_community@maths@special.erl | 157 - .../src/gleam_community_maths.app.src | 16 - .../packages/gleam_community_maths/src/maths.mjs | 95 - aoc2023/build/packages/gleam_erlang/LICENSE | 191 - aoc2023/build/packages/gleam_erlang/README.md | 37 - aoc2023/build/packages/gleam_erlang/gleam.toml | 18 - .../include/gleam@erlang@file_FileInfo.hrl | 15 - .../include/gleam@erlang@process_Abnormal.hrl | 1 - .../include/gleam@erlang@process_CalleeDown.hrl | 1 - .../include/gleam@erlang@process_Cancelled.hrl | 1 - .../include/gleam@erlang@process_ExitMessage.hrl | 4 - .../include/gleam@erlang@process_ProcessDown.hrl | 4 - .../gleam@erlang@process_ProcessMonitor.hrl | 1 - .../include/gleam@erlang@process_Subject.hrl | 4 - .../gleam@erlang_ApplicationFailedToStart.hrl | 4 - .../include/gleam@erlang_UnknownApplication.hrl | 1 - .../packages/gleam_erlang/src/gleam/erlang.gleam | 158 - .../gleam_erlang/src/gleam/erlang/atom.gleam | 79 - .../gleam_erlang/src/gleam/erlang/charlist.gleam | 25 - .../gleam_erlang/src/gleam/erlang/file.gleam | 737 - .../gleam_erlang/src/gleam/erlang/node.gleam | 62 - .../gleam_erlang/src/gleam/erlang/os.gleam | 95 - .../gleam_erlang/src/gleam/erlang/process.gleam | 744 - .../packages/gleam_erlang/src/gleam@erlang.erl | 90 - .../gleam_erlang/src/gleam@erlang@atom.erl | 26 - .../gleam_erlang/src/gleam@erlang@charlist.erl | 15 - .../gleam_erlang/src/gleam@erlang@file.erl | 190 - .../gleam_erlang/src/gleam@erlang@node.erl | 33 - .../packages/gleam_erlang/src/gleam@erlang@os.erl | 27 - .../gleam_erlang/src/gleam@erlang@process.erl | 374 - .../packages/gleam_erlang/src/gleam_erlang.app.src | 14 - .../packages/gleam_erlang/src/gleam_erlang_ffi.erl | 263 - aoc2023/build/packages/gleam_http/LICENSE | 191 - aoc2023/build/packages/gleam_http/README.md | 67 - aoc2023/build/packages/gleam_http/gleam.toml | 17 - .../include/gleam@http@cookie_Attributes.hrl | 8 - .../include/gleam@http@request_Request.hrl | 10 - .../include/gleam@http@response_Response.hrl | 5 - .../include/gleam@http_MoreRequiredForBody.hrl | 5 - .../include/gleam@http_MoreRequiredForHeaders.hrl | 4 - .../include/gleam@http_MultipartBody.hrl | 5 - .../include/gleam@http_MultipartHeaders.hrl | 4 - .../build/packages/gleam_http/src/gleam/http.gleam | 560 - .../gleam_http/src/gleam/http/cookie.gleam | 128 - .../gleam_http/src/gleam/http/request.gleam | 267 - .../gleam_http/src/gleam/http/response.gleam | 141 - .../gleam_http/src/gleam/http/service.gleam | 82 - .../build/packages/gleam_http/src/gleam@http.erl | 626 - .../packages/gleam_http/src/gleam@http@cookie.erl | 153 - .../packages/gleam_http/src/gleam@http@request.erl | 202 - .../gleam_http/src/gleam@http@response.erl | 97 - .../packages/gleam_http/src/gleam@http@service.erl | 82 - .../packages/gleam_http/src/gleam_http.app.src | 12 - .../packages/gleam_http/src/gleam_http_native.erl | 88 - .../packages/gleam_http/src/gleam_http_native.mjs | 38 - aoc2023/build/packages/gleam_httpc/LICENSE | 191 - aoc2023/build/packages/gleam_httpc/README.md | 52 - aoc2023/build/packages/gleam_httpc/gleam.toml | 23 - .../packages/gleam_httpc/src/gleam/httpc.gleam | 105 - .../build/packages/gleam_httpc/src/gleam@httpc.erl | 118 - .../packages/gleam_httpc/src/gleam_httpc.app.src | 12 - aoc2023/build/packages/gleam_otp/LICENCE | 191 - aoc2023/build/packages/gleam_otp/README.md | 91 - aoc2023/build/packages/gleam_otp/gleam.toml | 19 - .../gleam_otp/include/gleam@otp@actor_Continue.hrl | 4 - .../gleam_otp/include/gleam@otp@actor_Ready.hrl | 1 - .../gleam_otp/include/gleam@otp@actor_Spec.hrl | 5 - ...leam@otp@intensity_tracker_IntensityTracker.hrl | 5 - .../include/gleam@otp@supervisor_ChildSpec.hrl | 5 - .../include/gleam@otp@supervisor_Spec.hrl | 6 - .../include/gleam@otp@system_StatusInfo.hrl | 7 - .../gleam_otp/include/gleam@otp@task_Exit.hrl | 1 - .../gleam_otp/include/gleam@otp@task_Task.hrl | 6 - .../packages/gleam_otp/src/gleam/otp/actor.gleam | 504 - .../src/gleam/otp/intensity_tracker.gleam | 46 - .../packages/gleam_otp/src/gleam/otp/port.gleam | 9 - .../gleam_otp/src/gleam/otp/supervisor.gleam | 410 - .../packages/gleam_otp/src/gleam/otp/system.gleam | 89 - .../packages/gleam_otp/src/gleam/otp/task.gleam | 151 - .../packages/gleam_otp/src/gleam@otp@actor.erl | 273 - .../gleam_otp/src/gleam@otp@intensity_tracker.erl | 53 - .../packages/gleam_otp/src/gleam@otp@port.erl | 8 - .../gleam_otp/src/gleam@otp@supervisor.erl | 322 - .../packages/gleam_otp/src/gleam@otp@system.erl | 43 - .../packages/gleam_otp/src/gleam@otp@task.erl | 111 - .../build/packages/gleam_otp/src/gleam_otp.app.src | 15 - aoc2023/build/packages/gleam_otp/src/gleam_otp.erl | 28 - .../build/packages/gleam_otp/src/gleam_otp.gleam | 27 - .../packages/gleam_otp/src/gleam_otp_external.erl | 43 - aoc2023/build/packages/gleam_stdlib/LICENCE | 191 - aoc2023/build/packages/gleam_stdlib/README.md | 39 - aoc2023/build/packages/gleam_stdlib/gleam.toml | 16 - .../include/gleam@dynamic_DecodeError.hrl | 5 - .../include/gleam@iterator_Iterator.hrl | 1 - .../gleam_stdlib/include/gleam@iterator_Next.hrl | 1 - .../gleam_stdlib/include/gleam@queue_Queue.hrl | 1 - .../include/gleam@regex_CompileError.hrl | 1 - .../gleam_stdlib/include/gleam@regex_Match.hrl | 4 - .../gleam_stdlib/include/gleam@regex_Options.hrl | 1 - .../gleam_stdlib/include/gleam@set_Set.hrl | 1 - .../gleam_stdlib/include/gleam@uri_Uri.hrl | 9 - aoc2023/build/packages/gleam_stdlib/src/dict.mjs | 957 - .../packages/gleam_stdlib/src/gleam/base.gleam | 21 - .../gleam_stdlib/src/gleam/bit_array.gleam | 157 - .../gleam_stdlib/src/gleam/bit_builder.gleam | 80 - .../gleam_stdlib/src/gleam/bit_string.gleam | 43 - .../packages/gleam_stdlib/src/gleam/bool.gleam | 428 - .../gleam_stdlib/src/gleam/bytes_builder.gleam | 197 - .../packages/gleam_stdlib/src/gleam/dict.gleam | 544 - .../packages/gleam_stdlib/src/gleam/dynamic.gleam | 1508 - .../packages/gleam_stdlib/src/gleam/float.gleam | 546 - .../packages/gleam_stdlib/src/gleam/function.gleam | 162 - .../packages/gleam_stdlib/src/gleam/int.gleam | 874 - .../build/packages/gleam_stdlib/src/gleam/io.gleam | 117 - .../packages/gleam_stdlib/src/gleam/iterator.gleam | 1530 - .../packages/gleam_stdlib/src/gleam/list.gleam | 2154 - .../packages/gleam_stdlib/src/gleam/map.gleam | 127 - .../packages/gleam_stdlib/src/gleam/option.gleam | 346 - .../packages/gleam_stdlib/src/gleam/order.gleam | 133 - .../packages/gleam_stdlib/src/gleam/pair.gleam | 85 - .../packages/gleam_stdlib/src/gleam/queue.gleam | 292 - .../packages/gleam_stdlib/src/gleam/regex.gleam | 214 - .../packages/gleam_stdlib/src/gleam/result.gleam | 482 - .../packages/gleam_stdlib/src/gleam/set.gleam | 264 - .../packages/gleam_stdlib/src/gleam/string.gleam | 906 - .../gleam_stdlib/src/gleam/string_builder.gleam | 298 - .../packages/gleam_stdlib/src/gleam/uri.gleam | 462 - .../build/packages/gleam_stdlib/src/gleam@base.erl | 20 - .../packages/gleam_stdlib/src/gleam@bit_array.erl | 102 - .../gleam_stdlib/src/gleam@bit_builder.erl | 66 - .../packages/gleam_stdlib/src/gleam@bit_string.erl | 33 - .../build/packages/gleam_stdlib/src/gleam@bool.erl | 162 - .../gleam_stdlib/src/gleam@bytes_builder.erl | 87 - .../build/packages/gleam_stdlib/src/gleam@dict.erl | 97 - .../packages/gleam_stdlib/src/gleam@dynamic.erl | 808 - .../packages/gleam_stdlib/src/gleam@float.erl | 181 - .../packages/gleam_stdlib/src/gleam@function.erl | 67 - .../build/packages/gleam_stdlib/src/gleam@int.erl | 332 - .../build/packages/gleam_stdlib/src/gleam@io.erl | 27 - .../packages/gleam_stdlib/src/gleam@iterator.erl | 744 - .../build/packages/gleam_stdlib/src/gleam@list.erl | 1129 - .../build/packages/gleam_stdlib/src/gleam@map.erl | 76 - .../packages/gleam_stdlib/src/gleam@option.erl | 147 - .../packages/gleam_stdlib/src/gleam@order.erl | 79 - .../build/packages/gleam_stdlib/src/gleam@pair.erl | 33 - .../packages/gleam_stdlib/src/gleam@queue.erl | 121 - .../packages/gleam_stdlib/src/gleam@regex.erl | 33 - .../packages/gleam_stdlib/src/gleam@result.erl | 201 - .../build/packages/gleam_stdlib/src/gleam@set.erl | 85 - .../packages/gleam_stdlib/src/gleam@string.erl | 352 - .../gleam_stdlib/src/gleam@string_builder.erl | 91 - .../build/packages/gleam_stdlib/src/gleam@uri.erl | 252 - .../packages/gleam_stdlib/src/gleam_stdlib.app.src | 31 - .../packages/gleam_stdlib/src/gleam_stdlib.erl | 529 - .../packages/gleam_stdlib/src/gleam_stdlib.mjs | 875 - aoc2023/build/packages/glint/LICENSE | 201 - aoc2023/build/packages/glint/README.md | 104 - aoc2023/build/packages/glint/gleam.toml | 23 - .../packages/glint/include/glint@flag_Flag.hrl | 1 - .../glint/include/glint@flag_FlagBuilder.hrl | 6 - .../packages/glint/include/glint@flag_Internal.hrl | 4 - .../build/packages/glint/include/glint_Command.hrl | 5 - .../packages/glint/include/glint_CommandInput.hrl | 4 - .../build/packages/glint/include/glint_Config.hrl | 4 - .../build/packages/glint/include/glint_Glint.hrl | 5 - .../packages/glint/include/glint_PrettyHelp.hrl | 5 - .../build/packages/glint/include/glint_Stub.hrl | 6 - aoc2023/build/packages/glint/src/glint.app.src | 13 - aoc2023/build/packages/glint/src/glint.erl | 513 - aoc2023/build/packages/glint/src/glint.gleam | 588 - aoc2023/build/packages/glint/src/glint/flag.gleam | 478 - .../packages/glint/src/glint/flag/constraint.gleam | 66 - aoc2023/build/packages/glint/src/glint@flag.erl | 523 - .../packages/glint/src/glint@flag@constraint.erl | 68 - aoc2023/build/packages/packages.toml | 16 - aoc2023/build/packages/pqueue/LICENSE | 21 - aoc2023/build/packages/pqueue/README.markdown | 31 - aoc2023/build/packages/pqueue/doc/edoc-info | 3 - aoc2023/build/packages/pqueue/doc/erlang.png | Bin 2109 -> 0 bytes aoc2023/build/packages/pqueue/doc/index.html | 17 - .../build/packages/pqueue/doc/modules-frame.html | 15 - .../packages/pqueue/doc/overview-summary.html | 16 - aoc2023/build/packages/pqueue/doc/pqueue.html | 166 - aoc2023/build/packages/pqueue/doc/pqueue2.html | 143 - aoc2023/build/packages/pqueue/doc/pqueue3.html | 162 - aoc2023/build/packages/pqueue/doc/pqueue4.html | 205 - aoc2023/build/packages/pqueue/doc/stylesheet.css | 55 - aoc2023/build/packages/pqueue/rebar.config | 14 - aoc2023/build/packages/pqueue/src/pqueue.app.src | 10 - aoc2023/build/packages/pqueue/src/pqueue.erl | 2246 - aoc2023/build/packages/pqueue/src/pqueue2.erl | 483 - aoc2023/build/packages/pqueue/src/pqueue3.erl | 404 - aoc2023/build/packages/pqueue/src/pqueue4.erl | 11662 ---- aoc2023/build/packages/pqueue/src/pqueue_test.hrl | 49 - .../build/packages/pqueue/test/pqueue_proper.erl | 156 - aoc2023/build/packages/pqueue/test/queue_srv.erl | 183 - aoc2023/build/packages/simplifile/README.md | 29 - aoc2023/build/packages/simplifile/gleam.toml | 17 - .../packages/simplifile/src/simplifile.app.src | 8 - .../build/packages/simplifile/src/simplifile.erl | 287 - .../build/packages/simplifile/src/simplifile.gleam | 580 - .../packages/simplifile/src/simplifile_erl.erl | 70 - .../packages/simplifile/src/simplifile_js.mjs | 102 - aoc2023/build/packages/snag/LICENCE | 211 - aoc2023/build/packages/snag/README.md | 81 - aoc2023/build/packages/snag/gleam.toml | 16 - aoc2023/build/packages/snag/include/snag_Snag.hrl | 1 - aoc2023/build/packages/snag/src/snag.app.src | 8 - aoc2023/build/packages/snag/src/snag.erl | 74 - aoc2023/build/packages/snag/src/snag.gleam | 141 - aoc2023/build/packages/tom/README.md | 47 - aoc2023/build/packages/tom/gleam.toml | 13 - .../packages/tom/include/tom_DateTimeValue.hrl | 5 - .../build/packages/tom/include/tom_DateValue.hrl | 1 - .../packages/tom/include/tom_KeyAlreadyInUse.hrl | 1 - .../build/packages/tom/include/tom_NotFound.hrl | 1 - aoc2023/build/packages/tom/include/tom_Offset.hrl | 5 - .../build/packages/tom/include/tom_TimeValue.hrl | 6 - .../build/packages/tom/include/tom_Unexpected.hrl | 1 - .../build/packages/tom/include/tom_WrongType.hrl | 5 - aoc2023/build/packages/tom/src/tom.app.src | 8 - aoc2023/build/packages/tom/src/tom.erl | 2140 - aoc2023/build/packages/tom/src/tom.gleam | 1317 - aoc2023/build/prod/erlang/gleam.lock | 0 aoc2023/build/prod/javascript/gleam.lock | 0 aoc2023/erl_crash.dump | 67195 ------------------- aoc2023/src/day1/input.txt | 1000 - aoc2023/src/day10/input.txt | 140 - aoc2023/src/day11/input.txt | 140 - aoc2023/src/day13/input.txt | 1379 - aoc2023/src/day15/input.txt | 1 - aoc2023/src/day16/input.txt | 110 - aoc2023/src/day17/input.txt | 141 - aoc2023/src/day18/input.txt | 676 - aoc2023/src/day19/input.txt | 766 - aoc2023/src/day2/input.txt | 100 - aoc2023/src/day20/input.txt | 58 - aoc2023/src/day3/input.txt | 140 - aoc2023/src/day4/input.txt | 203 - aoc2023/src/day6/input.txt | 2 - aoc2023/src/day7/input.txt | 1000 - aoc2023/src/day8/input.txt | 740 - aoc2023/src/day9/input.txt | 200 - 1493 files changed, 194664 deletions(-) delete mode 100644 aoc2023/aoc.toml delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent.app delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam delete mode 100644 aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl delete mode 100644 aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta delete mode 100644 aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl delete mode 100644 aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs delete mode 100644 aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap.app delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap.beam delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam delete mode 100644 aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl delete mode 100644 aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam.lock delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app delete mode 100644 aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl delete mode 100644 aoc2023/build/dev/erlang/gleam_version delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta delete mode 100644 aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl delete mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint.app delete mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint.beam delete mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam delete mode 100644 aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Command.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Config.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl delete mode 100644 aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl delete mode 100644 aoc2023/build/dev/erlang/pqueue/LICENSE delete mode 100644 aoc2023/build/dev/erlang/pqueue/README.markdown delete mode 100644 aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/edoc-info delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/erlang.png delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/index.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html delete mode 100644 aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css delete mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app delete mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam delete mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam delete mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam delete mode 100644 aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam delete mode 100644 aoc2023/build/dev/erlang/pqueue/rebar.config delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue.erl delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl delete mode 100644 aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl delete mode 100644 aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl delete mode 100644 aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl delete mode 100644 aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs delete mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app delete mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam delete mode 100644 aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam delete mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache delete mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta delete mode 100644 aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl delete mode 100644 aoc2023/build/dev/erlang/snag/ebin/snag.app delete mode 100644 aoc2023/build/dev/erlang/snag/ebin/snag.beam delete mode 100644 aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl delete mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache delete mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta delete mode 100644 aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl delete mode 100644 aoc2023/build/dev/erlang/tom/ebin/tom.app delete mode 100644 aoc2023/build/dev/erlang/tom/ebin/tom.beam delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl delete mode 100644 aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl delete mode 100644 aoc2023/build/dev/javascript/gleam.lock delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache delete mode 100644 aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache delete mode 100644 aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache delete mode 100644 aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam.lock delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache delete mode 100644 aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/gleam_version delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache delete mode 100644 aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache delete mode 100644 aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache delete mode 100644 aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta delete mode 100644 aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache delete mode 100644 aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta delete mode 100644 aoc2023/build/lsp/javascript/gleam.lock delete mode 100644 aoc2023/build/packages/adglent/LICENSE delete mode 100644 aoc2023/build/packages/adglent/README.md delete mode 100644 aoc2023/build/packages/adglent/gleam.toml delete mode 100644 aoc2023/build/packages/adglent/include/adglent_Example.hrl delete mode 100644 aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl delete mode 100644 aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl delete mode 100644 aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl delete mode 100644 aoc2023/build/packages/adglent/src/adglent.app.src delete mode 100644 aoc2023/build/packages/adglent/src/adglent.erl delete mode 100644 aoc2023/build/packages/adglent/src/adglent.gleam delete mode 100644 aoc2023/build/packages/adglent/src/adglent/day.gleam delete mode 100644 aoc2023/build/packages/adglent/src/adglent/init.gleam delete mode 100644 aoc2023/build/packages/adglent/src/adglent@day.erl delete mode 100644 aoc2023/build/packages/adglent/src/adglent@init.erl delete mode 100644 aoc2023/build/packages/adglent/src/adglent_ffi.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv/aoc_client.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/errors.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/prompt.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/template.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/templates/solution.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv/toml.gleam delete mode 100644 aoc2023/build/packages/adglent/src/priv@aoc_client.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@errors.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@prompt.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@template.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@templates@solution.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@templates@test_main.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl delete mode 100644 aoc2023/build/packages/adglent/src/priv@toml.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/should.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime/tests/test.gleam delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@meta.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@should.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime@tests@test.erl delete mode 100644 aoc2023/build/packages/adglent/src/showtime_ffi.erl delete mode 100644 aoc2023/build/packages/gap/LICENSE delete mode 100644 aoc2023/build/packages/gap/README.md delete mode 100644 aoc2023/build/packages/gap/gleam.toml delete mode 100644 aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@comparison_Match.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@styling_All.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@styling_Part.hrl delete mode 100644 aoc2023/build/packages/gap/include/gap@styling_Styling.hrl delete mode 100644 aoc2023/build/packages/gap/src/gap.app.src delete mode 100644 aoc2023/build/packages/gap/src/gap.erl delete mode 100644 aoc2023/build/packages/gap/src/gap.gleam delete mode 100644 aoc2023/build/packages/gap/src/gap/comparison.gleam delete mode 100644 aoc2023/build/packages/gap/src/gap/myers.gleam delete mode 100644 aoc2023/build/packages/gap/src/gap/styled_comparison.gleam delete mode 100644 aoc2023/build/packages/gap/src/gap/styling.gleam delete mode 100644 aoc2023/build/packages/gap/src/gap@comparison.erl delete mode 100644 aoc2023/build/packages/gap/src/gap@myers.erl delete mode 100644 aoc2023/build/packages/gap/src/gap@styled_comparison.erl delete mode 100644 aoc2023/build/packages/gap/src/gap@styling.erl delete mode 100644 aoc2023/build/packages/gap/src/gap_ffi.mjs delete mode 100644 aoc2023/build/packages/gleam.lock delete mode 100644 aoc2023/build/packages/gleam_community_ansi/LICENCE delete mode 100644 aoc2023/build/packages/gleam_community_ansi/README.md delete mode 100644 aoc2023/build/packages/gleam_community_ansi/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam delete mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl delete mode 100644 aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src delete mode 100644 aoc2023/build/packages/gleam_community_colour/LICENCE delete mode 100644 aoc2023/build/packages/gleam_community_colour/README.md delete mode 100644 aoc2023/build/packages/gleam_community_colour/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl delete mode 100644 aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl delete mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam delete mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam delete mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl delete mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl delete mode 100644 aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src delete mode 100644 aoc2023/build/packages/gleam_community_maths/LICENCE delete mode 100644 aoc2023/build/packages/gleam_community_maths/README.md delete mode 100644 aoc2023/build/packages/gleam_community_maths/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src delete mode 100644 aoc2023/build/packages/gleam_community_maths/src/maths.mjs delete mode 100644 aoc2023/build/packages/gleam_erlang/LICENSE delete mode 100644 aoc2023/build/packages/gleam_erlang/README.md delete mode 100644 aoc2023/build/packages/gleam_erlang/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src delete mode 100644 aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl delete mode 100644 aoc2023/build/packages/gleam_http/LICENSE delete mode 100644 aoc2023/build/packages/gleam_http/README.md delete mode 100644 aoc2023/build/packages/gleam_http/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl delete mode 100644 aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http.gleam delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@request.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@response.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam@http@service.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http.app.src delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http_native.erl delete mode 100644 aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs delete mode 100644 aoc2023/build/packages/gleam_httpc/LICENSE delete mode 100644 aoc2023/build/packages/gleam_httpc/README.md delete mode 100644 aoc2023/build/packages/gleam_httpc/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam delete mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl delete mode 100644 aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src delete mode 100644 aoc2023/build/packages/gleam_otp/LICENCE delete mode 100644 aoc2023/build/packages/gleam_otp/README.md delete mode 100644 aoc2023/build/packages/gleam_otp/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.erl delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam delete mode 100644 aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/LICENCE delete mode 100644 aoc2023/build/packages/gleam_stdlib/README.md delete mode 100644 aoc2023/build/packages/gleam_stdlib/gleam.toml delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/dict.mjs delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl delete mode 100644 aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs delete mode 100644 aoc2023/build/packages/glint/LICENSE delete mode 100644 aoc2023/build/packages/glint/README.md delete mode 100644 aoc2023/build/packages/glint/gleam.toml delete mode 100644 aoc2023/build/packages/glint/include/glint@flag_Flag.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint@flag_Internal.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_Command.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_CommandInput.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_Config.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_Glint.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl delete mode 100644 aoc2023/build/packages/glint/include/glint_Stub.hrl delete mode 100644 aoc2023/build/packages/glint/src/glint.app.src delete mode 100644 aoc2023/build/packages/glint/src/glint.erl delete mode 100644 aoc2023/build/packages/glint/src/glint.gleam delete mode 100644 aoc2023/build/packages/glint/src/glint/flag.gleam delete mode 100644 aoc2023/build/packages/glint/src/glint/flag/constraint.gleam delete mode 100644 aoc2023/build/packages/glint/src/glint@flag.erl delete mode 100644 aoc2023/build/packages/glint/src/glint@flag@constraint.erl delete mode 100644 aoc2023/build/packages/packages.toml delete mode 100644 aoc2023/build/packages/pqueue/LICENSE delete mode 100644 aoc2023/build/packages/pqueue/README.markdown delete mode 100644 aoc2023/build/packages/pqueue/doc/edoc-info delete mode 100644 aoc2023/build/packages/pqueue/doc/erlang.png delete mode 100644 aoc2023/build/packages/pqueue/doc/index.html delete mode 100644 aoc2023/build/packages/pqueue/doc/modules-frame.html delete mode 100644 aoc2023/build/packages/pqueue/doc/overview-summary.html delete mode 100644 aoc2023/build/packages/pqueue/doc/pqueue.html delete mode 100644 aoc2023/build/packages/pqueue/doc/pqueue2.html delete mode 100644 aoc2023/build/packages/pqueue/doc/pqueue3.html delete mode 100644 aoc2023/build/packages/pqueue/doc/pqueue4.html delete mode 100644 aoc2023/build/packages/pqueue/doc/stylesheet.css delete mode 100644 aoc2023/build/packages/pqueue/rebar.config delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue.app.src delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue.erl delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue2.erl delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue3.erl delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue4.erl delete mode 100644 aoc2023/build/packages/pqueue/src/pqueue_test.hrl delete mode 100644 aoc2023/build/packages/pqueue/test/pqueue_proper.erl delete mode 100644 aoc2023/build/packages/pqueue/test/queue_srv.erl delete mode 100644 aoc2023/build/packages/simplifile/README.md delete mode 100644 aoc2023/build/packages/simplifile/gleam.toml delete mode 100644 aoc2023/build/packages/simplifile/src/simplifile.app.src delete mode 100644 aoc2023/build/packages/simplifile/src/simplifile.erl delete mode 100644 aoc2023/build/packages/simplifile/src/simplifile.gleam delete mode 100644 aoc2023/build/packages/simplifile/src/simplifile_erl.erl delete mode 100644 aoc2023/build/packages/simplifile/src/simplifile_js.mjs delete mode 100644 aoc2023/build/packages/snag/LICENCE delete mode 100644 aoc2023/build/packages/snag/README.md delete mode 100644 aoc2023/build/packages/snag/gleam.toml delete mode 100644 aoc2023/build/packages/snag/include/snag_Snag.hrl delete mode 100644 aoc2023/build/packages/snag/src/snag.app.src delete mode 100644 aoc2023/build/packages/snag/src/snag.erl delete mode 100644 aoc2023/build/packages/snag/src/snag.gleam delete mode 100644 aoc2023/build/packages/tom/README.md delete mode 100644 aoc2023/build/packages/tom/gleam.toml delete mode 100644 aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_DateValue.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_NotFound.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_Offset.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_TimeValue.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_Unexpected.hrl delete mode 100644 aoc2023/build/packages/tom/include/tom_WrongType.hrl delete mode 100644 aoc2023/build/packages/tom/src/tom.app.src delete mode 100644 aoc2023/build/packages/tom/src/tom.erl delete mode 100644 aoc2023/build/packages/tom/src/tom.gleam delete mode 100644 aoc2023/build/prod/erlang/gleam.lock delete mode 100644 aoc2023/build/prod/javascript/gleam.lock delete mode 100644 aoc2023/erl_crash.dump delete mode 100644 aoc2023/src/day1/input.txt delete mode 100644 aoc2023/src/day10/input.txt delete mode 100644 aoc2023/src/day11/input.txt delete mode 100644 aoc2023/src/day13/input.txt delete mode 100644 aoc2023/src/day15/input.txt delete mode 100644 aoc2023/src/day16/input.txt delete mode 100644 aoc2023/src/day17/input.txt delete mode 100644 aoc2023/src/day18/input.txt delete mode 100644 aoc2023/src/day19/input.txt delete mode 100644 aoc2023/src/day2/input.txt delete mode 100644 aoc2023/src/day20/input.txt delete mode 100644 aoc2023/src/day3/input.txt delete mode 100644 aoc2023/src/day4/input.txt delete mode 100644 aoc2023/src/day6/input.txt delete mode 100644 aoc2023/src/day7/input.txt delete mode 100644 aoc2023/src/day8/input.txt delete mode 100644 aoc2023/src/day9/input.txt diff --git a/aoc2023/aoc.toml b/aoc2023/aoc.toml deleted file mode 100644 index 3843235..0000000 --- a/aoc2023/aoc.toml +++ /dev/null @@ -1,4 +0,0 @@ -version = 2 -year = "2023" -session = "53616c7465645f5f9b329c2ce8962445c1bf7e50415667e182265b26a30deb203787e6f505943bd2ee4a7bbb39e99ac4cf724a722d58e3c1984b7f30af6be76d" -showtime = true diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache deleted file mode 100644 index 939bda2..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta deleted file mode 100644 index 0af4a84..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl deleted file mode 100644 index e3ceebe..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent.erl +++ /dev/null @@ -1,55 +0,0 @@ --module(adglent). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([inspect/1, get_input/1, get_test_folder/1, start_arguments/0, get_part/0]). --export_type([example/1, problem/0, charlist/0]). - --type example(ODD) :: {example, binary(), ODD}. - --type problem() :: first | second. - --type charlist() :: any(). - --spec inspect(any()) -> binary(). -inspect(Value) -> - Inspected_value = gleam@string:inspect(Value), - case begin - _pipe = Inspected_value, - gleam@string:starts_with(_pipe, <<"\""/utf8>>) - end of - true -> - _pipe@1 = Inspected_value, - _pipe@2 = gleam@string:drop_left(_pipe@1, 1), - gleam@string:drop_right(_pipe@2, 1); - - false -> - Inspected_value - end. - --spec get_input(binary()) -> {ok, binary()} | {error, simplifile:file_error()}. -get_input(Day) -> - simplifile:read( - <<<<"src/day"/utf8, Day/binary>>/binary, "/input.txt"/utf8>> - ). - --spec get_test_folder(binary()) -> binary(). -get_test_folder(Day) -> - <<"test/day"/utf8, Day/binary>>. - --spec start_arguments() -> list(binary()). -start_arguments() -> - _pipe = init:get_plain_arguments(), - gleam@list:map(_pipe, fun unicode:characters_to_binary/1). - --spec get_part() -> {ok, problem()} | {error, nil}. -get_part() -> - case start_arguments() of - [<<"1"/utf8>>] -> - {ok, first}; - - [<<"2"/utf8>>] -> - {ok, second}; - - _ -> - {error, nil} - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache deleted file mode 100644 index a39d38a..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta deleted file mode 100644 index 1637f81..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl deleted file mode 100644 index b80368f..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@day.erl +++ /dev/null @@ -1,278 +0,0 @@ --module(adglent@day). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec create_file_if_not_present(binary(), binary()) -> {ok, binary()} | - {error, binary()}. -create_file_if_not_present(Content, Path) -> - case simplifile:is_file(Path) of - true -> - {ok, <>}; - - false -> - gleam@result:'try'( - begin - _pipe = simplifile:create_file(Path), - priv@errors:map_messages( - _pipe, - <<"Created "/utf8, Path/binary>>, - <<"Could not create "/utf8, Path/binary>> - ) - end, - fun(_) -> _pipe@1 = simplifile:write(Path, Content), - priv@errors:map_messages( - _pipe@1, - <<"Wrote "/utf8, Path/binary>>, - <<"Could not write to "/utf8, Path/binary>> - ) end - ) - end. - --spec main() -> binary(). -main() -> - Day@1 = begin - _pipe = case adglent:start_arguments() of - [Day] -> - {ok, Day}; - - Args -> - {error, - <<"Expected day - found: "/utf8, - (gleam@string:join(Args, <<", "/utf8>>))/binary>>} - end, - _pipe@1 = priv@errors:map_error( - _pipe, - <<"Error when parsing command args"/utf8>> - ), - _pipe@2 = priv@errors:print_error(_pipe@1), - priv@errors:assert_ok(_pipe@2) - end, - Aoc_toml = begin - _pipe@3 = simplifile:read(<<"aoc.toml"/utf8>>), - _pipe@4 = priv@errors:map_error( - _pipe@3, - <<"Could not read aoc.toml"/utf8>> - ), - _pipe@5 = priv@errors:print_error(_pipe@4), - priv@errors:assert_ok(_pipe@5) - end, - Aoc_toml_version = priv@toml:get_int(Aoc_toml, [<<"version"/utf8>>]), - Year = begin - _pipe@6 = priv@toml:get_string(Aoc_toml, [<<"year"/utf8>>]), - _pipe@7 = priv@errors:map_error( - _pipe@6, - <<"Could not read \"year\" from aoc.toml"/utf8>> - ), - _pipe@8 = priv@errors:print_error(_pipe@7), - priv@errors:assert_ok(_pipe@8) - end, - Session = begin - _pipe@9 = priv@toml:get_string(Aoc_toml, [<<"session"/utf8>>]), - _pipe@10 = priv@errors:map_error( - _pipe@9, - <<"Could not read \"session\" from aoc.toml"/utf8>> - ), - _pipe@11 = priv@errors:print_error(_pipe@10), - priv@errors:assert_ok(_pipe@11) - end, - Showtime = case Aoc_toml_version of - {ok, 2} -> - _pipe@12 = priv@toml:get_bool(Aoc_toml, [<<"showtime"/utf8>>]), - _pipe@13 = priv@errors:map_error( - _pipe@12, - <<"Could not read \"showtime\" from aoc.toml"/utf8>> - ), - _pipe@14 = priv@errors:print_error(_pipe@13), - priv@errors:assert_ok(_pipe@14); - - _ -> - _pipe@15 = priv@toml:get_string(Aoc_toml, [<<"showtime"/utf8>>]), - _pipe@16 = gleam@result:map( - _pipe@15, - fun(Bool_string) -> case Bool_string of - <<"True"/utf8>> -> - true; - - _ -> - false - end end - ), - _pipe@17 = priv@errors:map_error( - _pipe@16, - <<"Could not read \"showtime\" from aoc.toml"/utf8>> - ), - _pipe@18 = priv@errors:print_error(_pipe@17), - priv@errors:assert_ok(_pipe@18) - end, - Test_folder = adglent:get_test_folder(Day@1), - Test_file = <<<<<>/binary, Day@1/binary>>/binary, - "_test.gleam"/utf8>>, - _pipe@19 = simplifile:create_directory_all(Test_folder), - _pipe@20 = priv@errors:map_error( - _pipe@19, - <<<<"Could not create folder \""/utf8, Test_folder/binary>>/binary, - "\""/utf8>> - ), - _pipe@21 = priv@errors:print_error(_pipe@20), - priv@errors:assert_ok(_pipe@21), - Testfile_template = case Showtime of - true -> - <<" -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -"/utf8>>; - - false -> - <<" -import gleam/list -import gleeunit/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -"/utf8>> - end, - _pipe@22 = priv@template:render( - Testfile_template, - [{<<"day"/utf8>>, Day@1}] - ), - _pipe@23 = create_file_if_not_present(_pipe@22, Test_file), - _pipe@24 = priv@errors:print_result(_pipe@23), - priv@errors:assert_ok(_pipe@24), - Solutions_folder = <<"src/day"/utf8, Day@1/binary>>, - Solution_file = <>, - _pipe@25 = simplifile:create_directory_all(Solutions_folder), - _pipe@26 = priv@errors:map_error( - _pipe@25, - <<<<"Could not create folder \""/utf8, Solutions_folder/binary>>/binary, - "\""/utf8>> - ), - _pipe@27 = priv@errors:print_error(_pipe@26), - priv@errors:assert_ok(_pipe@27), - _pipe@28 = priv@template:render( - <<" -import adglent.{First, Second} -import gleam/io - -pub fn part1(input: String) { - todo as \"Implement solution to part 1\" -} - -pub fn part2(input: String) { - todo as \"Implement solution to part 2\" -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input(\"{{ day }}\") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} -"/utf8>>, - [{<<"day"/utf8>>, Day@1}] - ), - _pipe@29 = create_file_if_not_present(_pipe@28, Solution_file), - _pipe@30 = priv@errors:print_result(_pipe@29), - priv@errors:assert_ok(_pipe@30), - _pipe@31 = create_file_if_not_present( - <<"input.txt"/utf8>>, - <> - ), - _pipe@32 = priv@errors:print_result(_pipe@31), - priv@errors:assert_ok(_pipe@32), - Input = begin - _pipe@33 = priv@aoc_client:get_input(Year, Day@1, Session), - _pipe@34 = priv@errors:map_error( - _pipe@33, - <<"Error when fetching input"/utf8>> - ), - _pipe@35 = priv@errors:print_error(_pipe@34), - priv@errors:assert_ok(_pipe@35) - end, - _pipe@36 = Input, - _pipe@37 = gleam@string:trim(_pipe@36), - _pipe@38 = create_file_if_not_present( - _pipe@37, - <> - ), - _pipe@39 = priv@errors:print_result(_pipe@38), - priv@errors:assert_ok(_pipe@39). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache deleted file mode 100644 index 5337c50..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta deleted file mode 100644 index 2751b68..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl deleted file mode 100644 index fb28101..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent@init.erl +++ /dev/null @@ -1,142 +0,0 @@ --module(adglent@init). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec main() -> {ok, binary()} | {error, binary()}. -main() -> - Year = priv@prompt:value(<<"Year"/utf8>>, <<"2023"/utf8>>, false), - Session = priv@prompt:value(<<"Session Cookie"/utf8>>, <<""/utf8>>, false), - Use_showtime = priv@prompt:confirm(<<"Use showtime"/utf8>>, false), - Aoc_toml_file = <<"aoc.toml"/utf8>>, - Overwrite = case simplifile:create_file(Aoc_toml_file) of - {ok, _} -> - true; - - {error, eexist} -> - priv@prompt:confirm(<<"aoc.toml exits - overwrite"/utf8>>, false); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"Could not create aoc.toml"/utf8>>, - module => <<"adglent/init"/utf8>>, - function => <<"main"/utf8>>, - line => 29}) - end, - _pipe@3 = case Overwrite of - true -> - _pipe@1 = priv@template:render( - <<" -version = {{ version }} -year = \"{{ year }}\" -session = \"{{ session }}\" -showtime = {{ showtime }} -"/utf8>>, - [{<<"version"/utf8>>, <<"2"/utf8>>}, - {<<"year"/utf8>>, Year}, - {<<"session"/utf8>>, Session}, - {<<"showtime"/utf8>>, - begin - _pipe = gleam@bool:to_string(Use_showtime), - gleam@string:lowercase(_pipe) - end}] - ), - _pipe@2 = simplifile:write(Aoc_toml_file, _pipe@1), - priv@errors:map_messages( - _pipe@2, - <<"aoc.toml - written"/utf8>>, - <<"Error when writing aoc.toml"/utf8>> - ); - - false -> - {ok, <<"aoc.toml - skipped"/utf8>>} - end, - priv@errors:print_result(_pipe@3), - Gleam_toml = begin - _pipe@4 = simplifile:read(<<"gleam.toml"/utf8>>), - _pipe@5 = priv@errors:map_error( - _pipe@4, - <<"Could not read gleam.toml"/utf8>> - ), - _pipe@6 = priv@errors:print_error(_pipe@5), - priv@errors:assert_ok(_pipe@6) - end, - Name = begin - _pipe@7 = priv@toml:get_string(Gleam_toml, [<<"name"/utf8>>]), - _pipe@8 = priv@errors:map_error( - _pipe@7, - <<"Could not read \"name\" from gleam.toml"/utf8>> - ), - _pipe@9 = priv@errors:print_error(_pipe@8), - priv@errors:assert_ok(_pipe@9) - end, - Test_main_file = <<<<"test/"/utf8, Name/binary>>/binary, - "_test.gleam"/utf8>>, - _pipe@12 = case Use_showtime of - true -> - _pipe@10 = priv@template:render( - <<" -import showtime - -pub fn main() { - showtime.main() -} -"/utf8>>, - [] - ), - _pipe@11 = simplifile:write(Test_main_file, _pipe@10), - priv@errors:map_messages( - _pipe@11, - <<"Wrote "/utf8, Test_main_file/binary>>, - <<"Could not write to "/utf8, Test_main_file/binary>> - ); - - false -> - {ok, <<"Using existing (gleeunit) "/utf8, Test_main_file/binary>>} - end, - _pipe@13 = priv@errors:print_result(_pipe@12), - priv@errors:assert_ok(_pipe@13), - _pipe@17 = case simplifile:is_file(<<".gitignore"/utf8>>) of - true -> - gleam@result:'try'( - begin - _pipe@14 = simplifile:read(<<".gitignore"/utf8>>), - gleam@result:map_error( - _pipe@14, - fun(Err) -> - <<"Could not read .gitignore: "/utf8, - (gleam@string:inspect(Err))/binary>> - end - ) - end, - fun(Gitignore) -> - Aoc_toml_ignored = begin - _pipe@15 = gleam@string:split(Gitignore, <<"\n"/utf8>>), - gleam@list:find( - _pipe@15, - fun(Line) -> Line =:= <<"aoc.toml"/utf8>> end - ) - end, - case Aoc_toml_ignored of - {error, _} -> - _pipe@16 = simplifile:append( - <<".gitignore"/utf8>>, - <<"\naoc.toml"/utf8>> - ), - priv@errors:map_messages( - _pipe@16, - <<".gitignore written"/utf8>>, - <<"Error when writing .gitignore"/utf8>> - ); - - {ok, _} -> - {ok, - <<".gitignore - skipped (already configured)"/utf8>>} - end - end - ); - - false -> - {error, <<"Could not find .gitignore"/utf8>>} - end, - priv@errors:print_result(_pipe@17). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl deleted file mode 100644 index a6a92e6..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/adglent_ffi.erl +++ /dev/null @@ -1,12 +0,0 @@ --module(adglent_ffi). - --export([get_line/1]). - --spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. -get_line(Prompt) -> - case io:get_line(Prompt) of - eof -> {error, eof}; - {error, _} -> {error, no_data}; - Data when is_binary(Data) -> {ok, Data}; - Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache deleted file mode 100644 index 40f6caf..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta deleted file mode 100644 index b6c1617..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl deleted file mode 100644 index 1acb9b5..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@aoc_client.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(priv@aoc_client). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_input/3]). - --spec get_input(binary(), binary(), binary()) -> {ok, binary()} | - {error, binary()}. -get_input(Year, Day, Session) -> - Url = <<<<<<<<"https://adventofcode.com/"/utf8, Year/binary>>/binary, - "/day/"/utf8>>/binary, - Day/binary>>/binary, - "/input"/utf8>>, - gleam@result:'try'( - begin - _pipe = gleam@http@request:to(Url), - gleam@result:map_error( - _pipe, - fun(Error) -> - <<<<<<"Could not create request for \""/utf8, Url/binary>>/binary, - "\": "/utf8>>/binary, - (gleam@string:inspect(Error))/binary>> - end - ) - end, - fun(Request) -> - gleam@result:'try'( - begin - _pipe@1 = Request, - _pipe@2 = gleam@http@request:prepend_header( - _pipe@1, - <<"Accept"/utf8>>, - <<"application/json"/utf8>> - ), - _pipe@3 = gleam@http@request:prepend_header( - _pipe@2, - <<"Cookie"/utf8>>, - <<<<"session="/utf8, Session/binary>>/binary, ";"/utf8>> - ), - _pipe@4 = gleam@httpc:send(_pipe@3), - gleam@result:map_error( - _pipe@4, - fun(Error@1) -> - <<<<<<"Error when requesting \""/utf8, Url/binary>>/binary, - "\": "/utf8>>/binary, - (gleam@string:inspect(Error@1))/binary>> - end - ) - end, - fun(Response) -> case erlang:element(2, Response) of - Status when (Status >= 200) andalso (Status < 300) -> - {ok, erlang:element(4, Response)}; - - Status@1 -> - {error, - <<<<(gleam@int:to_string(Status@1))/binary, - " - "/utf8>>/binary, - (erlang:element(4, Response))/binary>>} - end end - ) - end - ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache deleted file mode 100644 index 7bfeea9..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta deleted file mode 100644 index 498e302..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl deleted file mode 100644 index 41545be..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@errors.erl +++ /dev/null @@ -1,74 +0,0 @@ --module(priv@errors). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([map_messages/3, map_error/2, print_result/1, print_error/1, assert_ok/1]). - --spec map_messages({ok, any()} | {error, any()}, binary(), binary()) -> {ok, - binary()} | - {error, binary()}. -map_messages(Result, Success_message, Error_message) -> - _pipe = Result, - _pipe@1 = gleam@result:map_error( - _pipe, - fun(Error) -> - <<<<<<"Error - "/utf8, Error_message/binary>>/binary, ": "/utf8>>/binary, - (gleam@string:inspect(Error))/binary>> - end - ), - gleam@result:replace(_pipe@1, Success_message). - --spec map_error({ok, OBD} | {error, any()}, binary()) -> {ok, OBD} | - {error, binary()}. -map_error(Result, Error_message) -> - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Error) -> - <<<>/binary, - (gleam@string:inspect(Error))/binary>> - end - ). - --spec print_result({ok, binary()} | {error, binary()}) -> {ok, binary()} | - {error, binary()}. -print_result(Result) -> - _pipe = Result, - _pipe@1 = gleam@result:unwrap_both(_pipe), - gleam@io:println(_pipe@1), - Result. - --spec print_error({ok, OBM} | {error, binary()}) -> {ok, OBM} | - {error, binary()}. -print_error(Result) -> - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Err) -> - gleam@io:println(Err), - Err - end - ). - --spec assert_ok({ok, OBQ} | {error, binary()}) -> OBQ. -assert_ok(Result) -> - _assert_subject = begin - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Err) -> - erlang:halt(1), - Err - end - ) - end, - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"priv/errors"/utf8>>, - function => <<"assert_ok"/utf8>>, - line => 43}) - end, - Value. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache deleted file mode 100644 index 45d6e3e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta deleted file mode 100644 index b010daf..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl deleted file mode 100644 index 0277f14..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@prompt.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(priv@prompt). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_line/1, confirm/2, value/3]). --export_type([get_line_error/0]). - --type get_line_error() :: eof | no_data. - --spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. -get_line(Prompt) -> - adglent_ffi:get_line(Prompt). - --spec confirm(binary(), boolean()) -> boolean(). -confirm(Message, Auto_accept) -> - Auto_accept orelse case begin - _pipe = adglent_ffi:get_line(<>), - _pipe@1 = gleam@result:unwrap(_pipe, <<"n"/utf8>>), - gleam@string:trim(_pipe@1) - end of - <<"Y"/utf8>> -> - true; - - <<"y"/utf8>> -> - true; - - _ -> - false - end. - --spec get_value_of_default(binary(), binary(), boolean()) -> binary(). -get_value_of_default(Message, Default, Auto_accept) -> - case Auto_accept of - true -> - Default; - - false -> - _pipe = adglent_ffi:get_line( - <<<<<>/binary, Default/binary>>/binary, - "): "/utf8>> - ), - _pipe@1 = gleam@result:unwrap(_pipe, <<""/utf8>>), - gleam@string:trim(_pipe@1) - end. - --spec value(binary(), binary(), boolean()) -> binary(). -value(Message, Default, Auto_accept) -> - case get_value_of_default(Message, Default, Auto_accept) of - <<""/utf8>> -> - Default; - - Value -> - Value - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache deleted file mode 100644 index 8446302..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta deleted file mode 100644 index 5e1f919..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl deleted file mode 100644 index 6a5d0bf..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@template.erl +++ /dev/null @@ -1,25 +0,0 @@ --module(priv@template). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([render/2]). - --spec render(binary(), list({binary(), binary()})) -> binary(). -render(Template, Substitutions) -> - <<(begin - _pipe = Substitutions, - _pipe@2 = gleam@list:fold( - _pipe, - Template, - fun(Template@1, Substitution) -> - {Name, Value} = Substitution, - _pipe@1 = Template@1, - gleam@string:replace( - _pipe@1, - <<<<"{{ "/utf8, Name/binary>>/binary, " }}"/utf8>>, - Value - ) - end - ), - gleam@string:trim(_pipe@2) - end)/binary, - "\n"/utf8>>. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache deleted file mode 100644 index d29fd97..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta deleted file mode 100644 index 3397840..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl deleted file mode 100644 index 7e36387..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@solution.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@solution). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache deleted file mode 100644 index 8cdc9df..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta deleted file mode 100644 index 17c867f..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl deleted file mode 100644 index ca6b127..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@test_main.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@test_main). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache deleted file mode 100644 index 2003723..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta deleted file mode 100644 index c996833..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl deleted file mode 100644 index 2f5a41e..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@testfile_gleeunit). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache deleted file mode 100644 index 155ee1e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta deleted file mode 100644 index 120c91f..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl deleted file mode 100644 index bbbc8b2..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@testfile_showtime). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache deleted file mode 100644 index e328098..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta deleted file mode 100644 index a423083..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl deleted file mode 100644 index 6c41fbf..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/priv@toml.erl +++ /dev/null @@ -1,83 +0,0 @@ --module(priv@toml). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_string/2, get_bool/2, get_int/2]). --export_type([tom_error/0]). - --type tom_error() :: {tom_parse_error, tom:parse_error()} | - {tom_get_error, tom:get_error()}. - --spec get_string(binary(), list(binary())) -> {ok, binary()} | - {error, tom_error()}. -get_string(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_string(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). - --spec get_bool(binary(), list(binary())) -> {ok, boolean()} | - {error, tom_error()}. -get_bool(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_bool(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). - --spec get_int(binary(), list(binary())) -> {ok, integer()} | - {error, tom_error()}. -get_int(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_int(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache deleted file mode 100644 index 19b5f6b..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta deleted file mode 100644 index 96a5705..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl deleted file mode 100644 index d4c0030..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime.erl +++ /dev/null @@ -1,155 +0,0 @@ --module(showtime). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec mk_runner( - fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> NYW), - glint:command_input() -) -> NYW. -mk_runner(Func, Command) -> - _assert_subject = begin - _pipe = erlang:element(3, Command), - _pipe@1 = glint@flag:get_strings(_pipe, <<"modules"/utf8>>), - gleam@result:map(_pipe@1, fun(Modules) -> case Modules of - [] -> - none; - - Modules@1 -> - {some, Modules@1} - end end) - end, - {ok, Module_list} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 91}) - end, - _assert_subject@1 = begin - _pipe@2 = erlang:element(3, Command), - glint@flag:get_strings(_pipe@2, <<"ignore"/utf8>>) - end, - {ok, Ignore_tags} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 100}) - end, - _assert_subject@2 = begin - _pipe@3 = erlang:element(3, Command), - _pipe@4 = glint@flag:get_string(_pipe@3, <<"capture"/utf8>>), - _pipe@5 = gleam@result:map( - _pipe@4, - fun(Arg) -> gleam@string:lowercase(Arg) end - ), - gleam@result:map(_pipe@5, fun(Arg@1) -> case Arg@1 of - <<"no"/utf8>> -> - no; - - <<"yes"/utf8>> -> - yes; - - <<"mixed"/utf8>> -> - mixed - end end) - end, - {ok, Capture_output} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 104}) - end, - Func(Module_list, Ignore_tags, Capture_output). - --spec start_with_args( - list(binary()), - fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> any()) -) -> nil. -start_with_args(Args, Func) -> - Modules_flag = begin - _pipe = glint@flag:string_list(), - _pipe@1 = glint@flag:default(_pipe, []), - glint@flag:description( - _pipe@1, - <<"Run only tests in the modules in this list"/utf8>> - ) - end, - Ignore_flag = begin - _pipe@2 = glint@flag:string_list(), - _pipe@3 = glint@flag:default(_pipe@2, []), - glint@flag:description( - _pipe@3, - <<"Ignore tests that are have tags matching a tag in this list"/utf8>> - ) - end, - Capture_flag = begin - _pipe@4 = glint@flag:string(), - _pipe@5 = glint@flag:default(_pipe@4, <<"no"/utf8>>), - _pipe@6 = glint@flag:constraint( - _pipe@5, - glint@flag@constraint:one_of( - [<<"yes"/utf8>>, <<"no"/utf8>>, <<"mixed"/utf8>>] - ) - ), - glint@flag:description( - _pipe@6, - <<"Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report"/utf8>> - ) - end, - _pipe@7 = glint:new(), - _pipe@12 = glint:add( - _pipe@7, - [], - begin - _pipe@8 = glint:command( - fun(_capture) -> mk_runner(Func, _capture) end - ), - _pipe@9 = glint:flag(_pipe@8, <<"modules"/utf8>>, Modules_flag), - _pipe@10 = glint:flag(_pipe@9, <<"ignore"/utf8>>, Ignore_flag), - _pipe@11 = glint:flag(_pipe@10, <<"capture"/utf8>>, Capture_flag), - glint:description(_pipe@11, <<"Runs test"/utf8>>) - end - ), - _pipe@13 = glint:with_pretty_help(_pipe@12, glint:default_pretty_help()), - glint:run(_pipe@13, Args). - --spec main() -> nil. -main() -> - start_with_args( - gleam@erlang:start_arguments(), - fun(Module_list, Ignore_tags, Capture) -> - Test_event_handler = showtime@internal@erlang@event_handler:start(), - Test_module_handler = showtime@internal@erlang@module_handler:start( - Test_event_handler, - fun showtime@internal@erlang@discover:collect_test_functions/1, - fun showtime@internal@erlang@runner:run_test_suite/4, - Ignore_tags, - Capture - ), - Test_event_handler(start_test_run), - Modules = showtime@internal@erlang@discover:collect_modules( - Test_module_handler, - Module_list - ), - Test_event_handler( - {end_test_run, - begin - _pipe = Modules, - gleam@list:length(_pipe) - end} - ), - nil - end - ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache deleted file mode 100644 index 0dded35..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta deleted file mode 100644 index 4c3ebd3..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl deleted file mode 100644 index f2d2396..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(showtime@internal@common@cli). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([capture/0]). - --type capture() :: yes | no | mixed. - - diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache deleted file mode 100644 index df75ed9..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta deleted file mode 100644 index cea0c4b..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl deleted file mode 100644 index 5ee9a85..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.erl +++ /dev/null @@ -1,131 +0,0 @@ --module(showtime@internal@common@common_event_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([handle_event/3]). --export_type([test_state/0, handler_state/0]). - --type test_state() :: not_started | running | {finished, integer()}. - --type handler_state() :: {handler_state, - test_state(), - integer(), - gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run()))}. - --spec handle_event( - showtime@internal@common@test_suite:test_event(), - fun(() -> integer()), - handler_state() -) -> handler_state(). -handle_event(Msg, System_time, State) -> - Test_state = erlang:element(2, State), - Num_done = erlang:element(3, State), - Events = erlang:element(4, State), - {Updated_test_state, Updated_num_done, Updated_events} = case Msg of - start_test_run -> - {running, Num_done, Events}; - - {start_test_suite, Module} -> - Maybe_module_events = gleam@map:get( - Events, - erlang:element(2, Module) - ), - New_events = case Maybe_module_events of - {ok, _} -> - Events; - - {error, _} -> - _pipe = Events, - gleam@map:insert( - _pipe, - erlang:element(2, Module), - gleam@map:new() - ) - end, - {Test_state, Num_done, New_events}; - - {start_test, Module@1, Test} -> - Current_time = System_time(), - Maybe_module_events@1 = gleam@map:get( - Events, - erlang:element(2, Module@1) - ), - New_events@1 = case Maybe_module_events@1 of - {ok, Module_events} -> - Maybe_test_event = gleam@map:get( - Module_events, - erlang:element(2, Test) - ), - case Maybe_test_event of - {error, _} -> - _pipe@1 = Events, - gleam@map:insert( - _pipe@1, - erlang:element(2, Module@1), - begin - _pipe@2 = Module_events, - gleam@map:insert( - _pipe@2, - erlang:element(2, Test), - {ongoing_test_run, Test, Current_time} - ) - end - ); - - {ok, _} -> - Events - end; - - {error, _} -> - Events - end, - {Test_state, Num_done, New_events@1}; - - {end_test, Module@2, Test@1, Result} -> - Current_time@1 = System_time(), - Maybe_module_events@2 = gleam@map:get( - Events, - erlang:element(2, Module@2) - ), - New_events@2 = case Maybe_module_events@2 of - {ok, Module_events@1} -> - Maybe_test_run = begin - _pipe@3 = Module_events@1, - gleam@map:get(_pipe@3, erlang:element(2, Test@1)) - end, - Updated_module_events = case Maybe_test_run of - {ok, {ongoing_test_run, Test_function, Started_at}} -> - _pipe@4 = Module_events@1, - gleam@map:insert( - _pipe@4, - erlang:element(2, Test@1), - {completed_test_run, - Test_function, - Current_time@1 - Started_at, - Result} - ); - - {error, _} -> - Module_events@1 - end, - _pipe@5 = Events, - gleam@map:insert( - _pipe@5, - erlang:element(2, Module@2), - Updated_module_events - ); - - {error, _} -> - Events - end, - {Test_state, Num_done, New_events@2}; - - {end_test_suite, _} -> - {Test_state, Num_done + 1, Events}; - - {end_test_run, Num_modules} -> - {{finished, Num_modules}, Num_done, Events}; - - _ -> - {running, Num_done, Events} - end, - {handler_state, Updated_test_state, Updated_num_done, Updated_events}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache deleted file mode 100644 index c0f776e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta deleted file mode 100644 index ae0cd95..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl deleted file mode 100644 index 7f62f4f..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.erl +++ /dev/null @@ -1,54 +0,0 @@ --module(showtime@internal@common@test_result). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([ignore_reason/0, test_return/0, exception/0, reason/0, reason_detail/0, gleam_error_detail/0, class/0, trace_list/0, trace/0, extra_info/0, arity_/0]). - --type ignore_reason() :: ignore. - --type test_return() :: {test_function_return, - gleam@dynamic:dynamic_(), - list(binary())} | - {ignored, ignore_reason()}. - --type exception() :: {erlang_exception, - class(), - reason(), - trace_list(), - list(binary())}. - --type reason() :: {assert_equal, list(reason_detail())} | - {assert_not_equal, list(reason_detail())} | - {assert_match, list(reason_detail())} | - {gleam_error, gleam_error_detail()} | - {gleam_assert, gleam@dynamic:dynamic_(), integer()} | - {generic_exception, gleam@dynamic:dynamic_()}. - --type reason_detail() :: {module, binary()} | - {reason_line, integer()} | - {expression, binary()} | - {expected, gleam@dynamic:dynamic_()} | - {value, gleam@dynamic:dynamic_()} | - {pattern, binary()}. - --type gleam_error_detail() :: {let_assert, - binary(), - binary(), - integer(), - binary(), - gleam@dynamic:dynamic_()}. - --type class() :: erlang_error | exit | throw. - --type trace_list() :: {trace_list, list(trace())}. - --type trace() :: {trace, binary(), arity_(), list(extra_info())} | - {trace_module, binary(), binary(), arity_(), list(extra_info())}. - --type extra_info() :: {error_info, - gleam@dict:dict(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_())} | - {file, binary()} | - {line, integer()}. - --type arity_() :: {num, integer()} | {arg_list, list(gleam@dynamic:dynamic_())}. - - diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache deleted file mode 100644 index 80885b8..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta deleted file mode 100644 index b2139f9..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl deleted file mode 100644 index 6a56de8..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.erl +++ /dev/null @@ -1,30 +0,0 @@ --module(showtime@internal@common@test_suite). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([test_run/0, test_module/0, test_function/0, test_suite/0, test_event/0]). - --type test_run() :: {ongoing_test_run, test_function(), integer()} | - {completed_test_run, - test_function(), - integer(), - {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}}. - --type test_module() :: {test_module, binary(), gleam@option:option(binary())}. - --type test_function() :: {test_function, binary()}. - --type test_suite() :: {test_suite, test_module(), list(test_function())}. - --type test_event() :: start_test_run | - {start_test_suite, test_module()} | - {start_test, test_module(), test_function()} | - {end_test, - test_module(), - test_function(), - {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}} | - {end_test_suite, test_module()} | - {end_test_run, integer()}. - - diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache deleted file mode 100644 index 68f7428..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta deleted file mode 100644 index 236dd39..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl deleted file mode 100644 index f0548aa..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.erl +++ /dev/null @@ -1,230 +0,0 @@ --module(showtime@internal@erlang@discover). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([collect_modules/2, collect_test_functions/1]). - --spec get_module_prefix(binary()) -> binary(). -get_module_prefix(Path) -> - Path_without_test = begin - _pipe = Path, - gleam@string:replace(_pipe, <<"./test"/utf8>>, <<""/utf8>>) - end, - Path_without_leading_slash = case gleam@string:starts_with( - Path_without_test, - <<"/"/utf8>> - ) of - true -> - gleam@string:drop_left(Path_without_test, 1); - - false -> - Path_without_test - end, - Module_prefix = begin - _pipe@1 = Path_without_leading_slash, - gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"@"/utf8>>) - end, - case gleam@string:length(Module_prefix) of - 0 -> - Module_prefix; - - _ -> - <> - end. - --spec collect_modules_in_folder( - binary(), - fun((showtime@internal@common@test_suite:test_module()) -> nil), - gleam@option:option(list(binary())) -) -> list(showtime@internal@common@test_suite:test_module()). -collect_modules_in_folder(Path, Test_module_handler, Only_modules) -> - Module_prefix = get_module_prefix(Path), - _assert_subject = simplifile:read_directory(Path), - {ok, Files} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_modules_in_folder"/utf8>>, - line => 40}) - end, - Test_modules_in_folder = begin - _pipe = Files, - _pipe@1 = gleam@list:filter( - _pipe, - fun(_capture) -> - gleam@string:ends_with(_capture, <<"_test.gleam"/utf8>>) - end - ), - gleam@list:filter_map( - _pipe@1, - fun(Test_module_file) -> - Module_name = <>, - <<""/utf8>> - ) - end)/binary>>, - case Only_modules of - {some, Only_modules_list} -> - Module_in_list = begin - _pipe@3 = Only_modules_list, - gleam@list:any( - _pipe@3, - fun(Only_module_name) -> - Only_module_name =:= begin - _pipe@4 = Module_name, - gleam@string:replace( - _pipe@4, - <<"@"/utf8>>, - <<"/"/utf8>> - ) - end - end - ) - end, - case Module_in_list of - true -> - Test_module = {test_module, - Module_name, - {some, Test_module_file}}, - Test_module_handler(Test_module), - {ok, Test_module}; - - false -> - {error, nil} - end; - - none -> - Test_module@1 = {test_module, - Module_name, - {some, Test_module_file}}, - Test_module_handler(Test_module@1), - {ok, Test_module@1} - end - end - ) - end, - Test_modules_in_subfolders = begin - _pipe@5 = Files, - _pipe@6 = gleam@list:map( - _pipe@5, - fun(Filename) -> - <<<>/binary, Filename/binary>> - end - ), - _pipe@7 = gleam@list:filter( - _pipe@6, - fun(File) -> simplifile:is_directory(File) end - ), - gleam@list:fold( - _pipe@7, - [], - fun(Modules, Subfolder) -> _pipe@8 = Modules, - gleam@list:append( - _pipe@8, - collect_modules_in_folder( - Subfolder, - Test_module_handler, - Only_modules - ) - ) end - ) - end, - _pipe@9 = Test_modules_in_folder, - gleam@list:append(_pipe@9, Test_modules_in_subfolders). - --spec collect_modules( - fun((showtime@internal@common@test_suite:test_module()) -> nil), - gleam@option:option(list(binary())) -) -> list(showtime@internal@common@test_suite:test_module()). -collect_modules(Test_module_handler, Only_modules) -> - collect_modules_in_folder( - <<"./test"/utf8>>, - Test_module_handler, - Only_modules - ). - --spec collect_test_functions(showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite(). -collect_test_functions(Module) -> - Test_functions = begin - _pipe = erlang:apply( - erlang:binary_to_atom(erlang:element(2, Module)), - erlang:binary_to_atom(<<"module_info"/utf8>>), - [gleam@dynamic:from(erlang:binary_to_atom(<<"exports"/utf8>>))] - ), - gleam@dynamic:unsafe_coerce(_pipe) - end, - Test_functions_filtered = begin - _pipe@1 = Test_functions, - _pipe@3 = gleam@list:map( - _pipe@1, - fun(Entry) -> - {Name, Arity} = case Entry of - {_, _} -> Entry; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_test_functions"/utf8>>, - line => 131}) - end, - {begin - _pipe@2 = Name, - erlang:atom_to_binary(_pipe@2) - end, - Arity} - end - ), - _pipe@4 = gleam@list:filter_map( - _pipe@3, - fun(Entry@1) -> - {Name@1, Arity@1} = case Entry@1 of - {_, _} -> Entry@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_test_functions"/utf8>>, - line => 139}) - end, - case gleam@string:ends_with(Name@1, <<"_test"/utf8>>) of - true -> - case Arity@1 of - 0 -> - {ok, Name@1}; - - _ -> - gleam@io:println( - <<<<<<<<"WARNING: function \""/utf8, - Name@1/binary>>/binary, - "\" has arity: "/utf8>>/binary, - (gleam@int:to_string(Arity@1))/binary>>/binary, - " - cannot be used as test (needs to be 0)"/utf8>> - ), - {error, <<"Wrong arity"/utf8>>} - end; - - false -> - {error, <<"Non matching name"/utf8>>} - end - end - ), - _pipe@5 = gleam@list:filter( - _pipe@4, - fun(_capture) -> - gleam@string:ends_with(_capture, <<"_test"/utf8>>) - end - ), - gleam@list:map( - _pipe@5, - fun(Function_name) -> {test_function, Function_name} end - ) - end, - {test_suite, Module, Test_functions_filtered}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache deleted file mode 100644 index 60fea12..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta deleted file mode 100644 index 1223c48..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl deleted file mode 100644 index d72ce2c..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.erl +++ /dev/null @@ -1,76 +0,0 @@ --module(showtime@internal@erlang@event_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([start/0]). --export_type([event_handler_message/0]). - --type event_handler_message() :: {event_handler_message, - showtime@internal@common@test_suite:test_event(), - gleam@erlang@process:subject(integer())}. - --spec system_time() -> integer(). -system_time() -> - os:system_time(millisecond). - --spec start() -> fun((showtime@internal@common@test_suite:test_event()) -> nil). -start() -> - _assert_subject = gleam@otp@actor:start( - {not_started, 0, gleam@map:new()}, - fun(Msg, State) -> - {event_handler_message, Test_event, Reply_to} = Msg, - {Test_state, Num_done, Events} = State, - Updated_state = showtime@internal@common@common_event_handler:handle_event( - Test_event, - fun system_time/0, - {handler_state, Test_state, Num_done, Events} - ), - case Updated_state of - {handler_state, {finished, Num_modules}, Num_done@1, Events@1} when Num_done@1 =:= Num_modules -> - {Test_report, Num_failed} = showtime@internal@reports@formatter:create_test_report( - Events@1 - ), - gleam@io:println(Test_report), - gleam@erlang@process:send(Reply_to, Num_failed), - {stop, normal}; - - {handler_state, Test_state@1, Num_done@2, Events@2} -> - {continue, {Test_state@1, Num_done@2, Events@2}, none} - end - end - ), - {ok, Subject} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/event_handler"/utf8>>, - function => <<"start"/utf8>>, - line => 32}) - end, - Parent_subject = gleam@erlang@process:new_subject(), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - gleam@erlang@process:selecting(_pipe, Parent_subject, fun(X) -> X end) - end, - fun(Test_event@1) -> case Test_event@1 of - {end_test_run, _} -> - gleam@erlang@process:send( - Subject, - {event_handler_message, Test_event@1, Parent_subject} - ), - Num_failed@1 = gleam_erlang_ffi:select(Selector), - case Num_failed@1 > 0 of - true -> - erlang:halt(1); - - false -> - erlang:halt(0) - end; - - _ -> - gleam@erlang@process:send( - Subject, - {event_handler_message, Test_event@1, Parent_subject} - ) - end end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache deleted file mode 100644 index 6b896ec..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta deleted file mode 100644 index 7cd0c75..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl deleted file mode 100644 index a6959f5..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(showtime@internal@erlang@module_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([start/5]). - --spec start( - fun((showtime@internal@common@test_suite:test_event()) -> nil), - fun((showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite()), - fun((showtime@internal@common@test_suite:test_suite(), fun((showtime@internal@common@test_suite:test_event()) -> nil), list(binary()), showtime@internal@common@cli:capture()) -> nil), - list(binary()), - showtime@internal@common@cli:capture() -) -> fun((showtime@internal@common@test_suite:test_module()) -> nil). -start( - Test_event_handler, - Test_function_collector, - Run_test_suite, - Ignore_tags, - Capture -) -> - _assert_subject = gleam@otp@actor:start( - nil, - fun(Module, State) -> - gleam@erlang@process:start( - fun() -> - Test_suite = Test_function_collector(Module), - Test_event_handler({start_test_suite, Module}), - Run_test_suite( - Test_suite, - Test_event_handler, - Ignore_tags, - Capture - ), - Test_event_handler({end_test_suite, Module}) - end, - false - ), - {continue, State, none} - end - ), - {ok, Subject} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/module_handler"/utf8>>, - function => <<"start"/utf8>>, - line => 23}) - end, - fun(Test_module) -> - gleam@erlang@process:send(Subject, Test_module), - nil - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache deleted file mode 100644 index 91e7663..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta deleted file mode 100644 index 069c9cf..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl deleted file mode 100644 index 702fb75..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.erl +++ /dev/null @@ -1,46 +0,0 @@ --module(showtime@internal@erlang@runner). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([run_test/4, run_test_suite/4]). - --spec run_test( - binary(), - binary(), - list(binary()), - showtime@internal@common@cli:capture() -) -> {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}. -run_test(Module_name, Test_name, Ignore_tags, Capture) -> - Result = showtime_ffi:run_test( - erlang:binary_to_atom(Module_name), - erlang:binary_to_atom(Test_name), - Ignore_tags, - Capture - ), - Result. - --spec run_test_suite( - showtime@internal@common@test_suite:test_suite(), - fun((showtime@internal@common@test_suite:test_event()) -> nil), - list(binary()), - showtime@internal@common@cli:capture() -) -> nil. -run_test_suite(Test_suite, Test_event_handler, Ignore_tags, Capture) -> - _pipe = erlang:element(3, Test_suite), - gleam@list:each( - _pipe, - fun(Test) -> - Test_event_handler( - {start_test, erlang:element(2, Test_suite), Test} - ), - Result = run_test( - erlang:element(2, erlang:element(2, Test_suite)), - erlang:element(2, Test), - Ignore_tags, - Capture - ), - Test_event_handler( - {end_test, erlang:element(2, Test_suite), Test, Result} - ) - end - ). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache deleted file mode 100644 index bf88ac7..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta deleted file mode 100644 index be99189..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl deleted file mode 100644 index d2969b2..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(showtime@internal@reports@compare). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compare/2]). - --spec compare(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> {binary(), - binary()}. -compare(Expected, Got) -> - Expected_as_list = begin - _pipe = Expected, - (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe) - end, - Got_as_list = begin - _pipe@1 = Got, - (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe@1) - end, - Expected_as_string = begin - _pipe@2 = Expected, - gleam@dynamic:string(_pipe@2) - end, - Got_as_string = begin - _pipe@3 = Got, - gleam@dynamic:string(_pipe@3) - end, - case {Expected_as_list, Got_as_list, Expected_as_string, Got_as_string} of - {{ok, Expected_list}, {ok, Got_list}, _, _} -> - Comparison = begin - _pipe@4 = gap:compare_lists(Expected_list, Got_list), - _pipe@5 = gap@styling:from_comparison(_pipe@4), - _pipe@6 = gap@styling:highlight( - _pipe@5, - fun showtime@internal@reports@styles:expected_highlight/1, - fun showtime@internal@reports@styles:got_highlight/1, - fun(Item) -> Item end - ), - gap@styling:to_styled_comparison(_pipe@6) - end, - {erlang:element(2, Comparison), erlang:element(3, Comparison)}; - - {_, _, {ok, Expected_string}, {ok, Got_string}} -> - Comparison@1 = begin - _pipe@7 = gap:compare_strings(Expected_string, Got_string), - _pipe@8 = gap@styling:from_comparison(_pipe@7), - _pipe@9 = gap@styling:highlight( - _pipe@8, - fun showtime@internal@reports@styles:expected_highlight/1, - fun showtime@internal@reports@styles:got_highlight/1, - fun(Item@1) -> Item@1 end - ), - gap@styling:to_styled_comparison(_pipe@9) - end, - {erlang:element(2, Comparison@1), erlang:element(3, Comparison@1)}; - - {_, _, _, _} -> - {showtime@internal@reports@styles:expected_highlight( - gleam@string:inspect(Expected) - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got) - )} - end. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache deleted file mode 100644 index 58b0250..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta deleted file mode 100644 index 86e3c59..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl deleted file mode 100644 index 4022bed..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.erl +++ /dev/null @@ -1,749 +0,0 @@ --module(showtime@internal@reports@formatter). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([create_test_report/1]). --export_type([glee_unit_assertion_type/0, module_and_test/0, unified_error/0]). - --type glee_unit_assertion_type() :: {glee_unit_assert_equal, binary()} | - {glee_unit_assert_not_equal, binary()} | - {glee_unit_assert_match, binary()}. - --type module_and_test() :: {module_and_test_run, - binary(), - showtime@internal@common@test_suite:test_run()}. - --type unified_error() :: {unified_error, - gleam@option:option(showtime@tests@meta:meta()), - binary(), - binary(), - binary(), - binary(), - gleam@option:option(integer()), - list(showtime@internal@common@test_result:trace())}. - --spec erlang_error_to_unified( - list(showtime@internal@common@test_result:reason_detail()), - glee_unit_assertion_type(), - list(showtime@internal@common@test_result:trace()) -) -> unified_error(). -erlang_error_to_unified(Error_details, Assertion_type, Stacktrace) -> - _pipe = Error_details, - gleam@list:fold( - _pipe, - {unified_error, - none, - <<"not_set"/utf8>>, - erlang:element(2, Assertion_type), - <<""/utf8>>, - <<""/utf8>>, - none, - Stacktrace}, - fun(Unified, Reason) -> case Reason of - {expression, Expression} -> - erlang:setelement(3, Unified, Expression); - - {expected, Value} -> - case Assertion_type of - {glee_unit_assert_equal, _} -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - gleam@string:inspect(Value) - ) - ); - - _ -> - Unified - end; - - {value, Value@1} -> - case Assertion_type of - {glee_unit_assert_not_equal, _} -> - erlang:setelement( - 6, - erlang:setelement( - 5, - Unified, - <<(showtime@internal@reports@styles:not_style( - <<"not "/utf8>> - ))/binary, - (gleam@string:inspect(Value@1))/binary>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Value@1) - ) - ); - - _ -> - erlang:setelement( - 6, - Unified, - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Value@1) - ) - ) - end; - - {pattern, Pattern} -> - case Pattern of - <<"{ ok , _ }"/utf8>> -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - <<"Ok(_)"/utf8>> - ) - ); - - <<"{ error , _ }"/utf8>> -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - <<"Error(_)"/utf8>> - ) - ); - - _ -> - Unified - end; - - _ -> - Unified - end end - ). - --spec gleam_error_to_unified( - showtime@internal@common@test_result:gleam_error_detail(), - list(showtime@internal@common@test_result:trace()) -) -> unified_error(). -gleam_error_to_unified(Gleam_error, Stacktrace) -> - case Gleam_error of - {let_assert, _, _, _, _, Value} -> - Result = gleam@dynamic:unsafe_coerce(Value), - {error, Assertion} = case Result of - {error, _} -> Result; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/reports/formatter"/utf8>>, - function => <<"gleam_error_to_unified"/utf8>>, - line => 293}) - end, - case Assertion of - {eq, Got, Expected, Meta} -> - {Expected@1, Got@1} = showtime@internal@reports@compare:compare( - Expected, - Got - ), - {unified_error, - Meta, - <<"assert"/utf8>>, - <<"Assert equal"/utf8>>, - Expected@1, - Got@1, - none, - Stacktrace}; - - {not_eq, Got@2, Expected@2, Meta@1} -> - {unified_error, - Meta@1, - <<"assert"/utf8>>, - <<"Assert not equal"/utf8>>, - <<(showtime@internal@reports@styles:not_style( - <<"not "/utf8>> - ))/binary, - (gleam@string:inspect(Expected@2))/binary>>, - gleam@string:inspect(Got@2), - none, - Stacktrace}; - - {is_ok, Got@3, Meta@2} -> - {unified_error, - Meta@2, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:expected_highlight( - <<"Ok(_)"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got@3) - ), - none, - Stacktrace}; - - {is_error, Got@4, Meta@3} -> - {unified_error, - Meta@3, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:expected_highlight( - <<"Error(_)"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got@4) - ), - none, - Stacktrace}; - - {fail, Meta@4} -> - {unified_error, - Meta@4, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:got_highlight( - <<"should.fail()"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - <<"N/A - test always expected to fail"/utf8>> - ), - none, - Stacktrace} - end - end. - --spec format_reason(unified_error(), binary(), binary(), list(binary())) -> list(list(showtime@internal@reports@table:col())). -format_reason(Error, Module, Function, Output_buffer) -> - Meta@1 = case erlang:element(2, Error) of - {some, Meta} -> - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Description"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, {content, erlang:element(2, Meta)}, 0}]}; - - none -> - none - end, - Stacktrace = begin - _pipe = erlang:element(8, Error), - gleam@list:map(_pipe, fun(Trace) -> case Trace of - {trace, Function@1, _, _} when Function@1 =:= <<""/utf8>> -> - <<"(anonymous)"/utf8>>; - - {trace_module, Module@1, Function@2, _, _} when Function@2 =:= <<""/utf8>> -> - <<<>/binary, - "(anonymous)"/utf8>>; - - {trace, Function@3, _, _} -> - Function@3; - - {trace_module, Module@2, Function@4, _, _} -> - <<<>/binary, - Function@4/binary>> - end end) - end, - Stacktrace_rows = case Stacktrace of - [] -> - []; - - [First | Rest] -> - First_row = {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Stacktrace"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - First - )}, - 0}]}, - Rest_rows = begin - _pipe@1 = Rest, - gleam@list:map( - _pipe@1, - fun(Row) -> - {some, - [{align_right, {content, <<""/utf8>>}, 2}, - {separator, <<" "/utf8>>}, - {align_left, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - Row - )}, - 0}]} - end - ) - end, - [First_row | Rest_rows] - end, - Output_rows = case begin - _pipe@2 = Output_buffer, - _pipe@3 = gleam@list:reverse(_pipe@2), - gleam@list:map( - _pipe@3, - fun(Row@1) -> gleam@string:trim_right(Row@1) end - ) - end of - [] -> - []; - - [First@1 | Rest@1] -> - First_row@1 = {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Output"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - First@1 - )}, - 0}]}, - Rest_rows@1 = begin - _pipe@4 = Rest@1, - gleam@list:map( - _pipe@4, - fun(Row@2) -> - {some, - [{align_right, {content, <<""/utf8>>}, 2}, - {separator, <<" "/utf8>>}, - {align_left_overflow, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - Row@2 - )}, - 0}]} - end - ) - end, - [First_row@1 | Rest_rows@1] - end, - Line@1 = begin - _pipe@5 = erlang:element(7, Error), - _pipe@6 = gleam@option:map( - _pipe@5, - fun(Line) -> <<":"/utf8, (gleam@int:to_string(Line))/binary>> end - ), - gleam@option:unwrap(_pipe@6, <<""/utf8>>) - end, - Arrow = <<(gleam@string:join( - gleam@list:repeat( - <<"-"/utf8>>, - (gleam@string:length(Module) + 1) + ((gleam@string:length( - Function - ) - + gleam@string:length(Line@1)) - div 2) - ), - <<""/utf8>> - ))/binary, - "⌄"/utf8>>, - Standard_table_rows = [{some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:error_style( - <<"Failed"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, {content, Arrow}, 0}]}, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Test"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, - {styled_content, - <<<>/binary, - (showtime@internal@reports@styles:function_style( - <> - ))/binary>>}, - 0}]}, - Meta@1, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Expected"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, erlang:element(5, Error)}, - 0}]}, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Got"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, erlang:element(6, Error)}, - 0}]}], - _pipe@7 = Standard_table_rows, - _pipe@8 = gleam@list:append(_pipe@7, Stacktrace_rows), - _pipe@9 = gleam@list:append(_pipe@8, Output_rows), - _pipe@10 = gleam@list:append( - _pipe@9, - [{some, - [{align_right, {content, <<""/utf8>>}, 0}, - {align_right, {content, <<""/utf8>>}, 0}, - {align_right, {content, <<""/utf8>>}, 0}]}] - ), - gleam@list:filter_map( - _pipe@10, - fun(Row@3) -> gleam@option:to_result(Row@3, nil) end - ). - --spec create_test_report( - gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run())) -) -> {binary(), integer()}. -create_test_report(Test_results) -> - All_test_runs = begin - _pipe = Test_results, - _pipe@1 = gleam@map:values(_pipe), - gleam@list:flat_map(_pipe@1, fun gleam@map:values/1) - end, - Failed_test_runs = begin - _pipe@2 = Test_results, - _pipe@3 = gleam@map:to_list(_pipe@2), - gleam@list:flat_map( - _pipe@3, - fun(Entry) -> - {Module_name, Test_module_results} = Entry, - _pipe@4 = Test_module_results, - _pipe@5 = gleam@map:values(_pipe@4), - gleam@list:filter_map(_pipe@5, fun(Test_run) -> case Test_run of - {completed_test_run, _, _, Result} -> - case Result of - {error, _} -> - {ok, - {module_and_test_run, - Module_name, - Test_run}}; - - {ok, {ignored, _}} -> - {error, nil}; - - {ok, _} -> - {error, nil} - end; - - _ -> - _pipe@6 = Test_run, - gleam@io:debug(_pipe@6), - {error, nil} - end end) - end - ) - end, - Ignored_test_runs = begin - _pipe@7 = Test_results, - _pipe@8 = gleam@map:to_list(_pipe@7), - gleam@list:flat_map( - _pipe@8, - fun(Entry@1) -> - {Module_name@1, Test_module_results@1} = Entry@1, - _pipe@9 = Test_module_results@1, - _pipe@10 = gleam@map:values(_pipe@9), - gleam@list:filter_map( - _pipe@10, - fun(Test_run@1) -> case Test_run@1 of - {completed_test_run, Test_function, _, Result@1} -> - case Result@1 of - {ok, {ignored, Reason}} -> - {ok, - {<<<>/binary, - (erlang:element( - 2, - Test_function - ))/binary>>, - Reason}}; - - _ -> - {error, nil} - end; - - _ -> - {error, nil} - end end - ) - end - ) - end, - Failed_tests_report = begin - _pipe@11 = Failed_test_runs, - _pipe@12 = gleam@list:filter_map( - _pipe@11, - fun(Module_and_test_run) -> - case erlang:element(3, Module_and_test_run) of - {completed_test_run, Test_function@1, _, Result@2} -> - case Result@2 of - {error, Exception} -> - case erlang:element(3, Exception) of - {assert_equal, Reason_details} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details, - {glee_unit_assert_equal, - <<"Assert equal"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {assert_not_equal, Reason_details@1} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details@1, - {glee_unit_assert_not_equal, - <<"Assert not equal"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {assert_match, Reason_details@2} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details@2, - {glee_unit_assert_match, - <<"Assert match"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {gleam_error, Reason@1} -> - {ok, - format_reason( - gleam_error_to_unified( - Reason@1, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {gleam_assert, Value, Line_no} -> - {ok, - format_reason( - {unified_error, - none, - <<"gleam assert"/utf8>>, - <<"Assert failed"/utf8>>, - <<"Patterns should match"/utf8>>, - showtime@internal@reports@styles:error_style( - gleam@string:inspect( - Value - ) - ), - {some, Line_no}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - )}, - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {generic_exception, Value@1} -> - {ok, - format_reason( - {unified_error, - none, - <<"generic exception"/utf8>>, - <<"Test function threw an exception"/utf8>>, - <<"Exception in test function"/utf8>>, - showtime@internal@reports@styles:error_style( - gleam@string:inspect( - Value@1 - ) - ), - none, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - )}, - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - Other -> - gleam@io:println( - <<"Other: "/utf8, - (gleam@string:inspect(Other))/binary>> - ), - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"showtime/internal/reports/formatter"/utf8>>, - function => <<"create_test_report"/utf8>>, - line => 178}), - {error, nil} - end; - - _ -> - {error, nil} - end; - - _ -> - {error, nil} - end - end - ), - gleam@list:fold( - _pipe@12, - [], - fun(Rows, Test_rows) -> gleam@list:append(Rows, Test_rows) end - ) - end, - All_test_execution_time_reports = begin - _pipe@13 = All_test_runs, - gleam@list:filter_map(_pipe@13, fun(Test_run@2) -> case Test_run@2 of - {completed_test_run, Test_function@2, Total_time, _} -> - {ok, - <<<<<<(erlang:element(2, Test_function@2))/binary, - ": "/utf8>>/binary, - (gleam@int:to_string(Total_time))/binary>>/binary, - " ms"/utf8>>}; - - _ -> - {error, nil} - end end) - end, - _ = begin - _pipe@14 = All_test_execution_time_reports, - gleam@string:join(_pipe@14, <<"\n"/utf8>>) - end, - All_tests_count = begin - _pipe@15 = All_test_runs, - gleam@list:length(_pipe@15) - end, - Ignored_tests_count = begin - _pipe@16 = Ignored_test_runs, - gleam@list:length(_pipe@16) - end, - Failed_tests_count = begin - _pipe@17 = Failed_test_runs, - gleam@list:length(_pipe@17) - end, - Passed = showtime@internal@reports@styles:passed_style( - <<(gleam@int:to_string( - (All_tests_count - Failed_tests_count) - Ignored_tests_count - ))/binary, - " passed"/utf8>> - ), - Failed = showtime@internal@reports@styles:failed_style( - <<(gleam@int:to_string(Failed_tests_count))/binary, " failed"/utf8>> - ), - Ignored = case Ignored_tests_count of - 0 -> - <<""/utf8>>; - - _ -> - <<", "/utf8, - (showtime@internal@reports@styles:ignored_style( - <<(gleam@int:to_string(Ignored_tests_count))/binary, - " ignored"/utf8>> - ))/binary>> - end, - Failed_tests_table = begin - _pipe@18 = {table, none, Failed_tests_report}, - _pipe@19 = showtime@internal@reports@table:align_table(_pipe@18), - showtime@internal@reports@table:to_string(_pipe@19) - end, - Test_report = <<<<<<<<<<<<"\n"/utf8, Failed_tests_table/binary>>/binary, - "\n"/utf8>>/binary, - Passed/binary>>/binary, - ", "/utf8>>/binary, - Failed/binary>>/binary, - Ignored/binary>>, - {Test_report, Failed_tests_count}. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache deleted file mode 100644 index 7dd3121..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta deleted file mode 100644 index c0078b3..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl deleted file mode 100644 index ec6230c..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.erl +++ /dev/null @@ -1,93 +0,0 @@ --module(showtime@internal@reports@styles). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([not_style/1, module_style/1, heading_style/1, stacktrace_style/1, failed_style/1, error_style/1, got_highlight/1, passed_style/1, expected_highlight/1, ignored_style/1, function_style/1, strip_style/1]). - --spec not_style(binary()) -> binary(). -not_style(Text) -> - gleam_community@ansi:bold(Text). - --spec module_style(binary()) -> binary(). -module_style(Text) -> - gleam_community@ansi:cyan(Text). - --spec heading_style(binary()) -> binary(). -heading_style(Text) -> - gleam_community@ansi:cyan(Text). - --spec stacktrace_style(binary()) -> binary(). -stacktrace_style(Text) -> - Text. - --spec bold_red(binary()) -> binary(). -bold_red(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:red(Text)). - --spec failed_style(binary()) -> binary(). -failed_style(Text) -> - bold_red(Text). - --spec error_style(binary()) -> binary(). -error_style(Text) -> - bold_red(Text). - --spec got_highlight(binary()) -> binary(). -got_highlight(Text) -> - bold_red(Text). - --spec bold_green(binary()) -> binary(). -bold_green(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:green(Text)). - --spec passed_style(binary()) -> binary(). -passed_style(Text) -> - bold_green(Text). - --spec expected_highlight(binary()) -> binary(). -expected_highlight(Text) -> - bold_green(Text). - --spec bold_yellow(binary()) -> binary(). -bold_yellow(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:yellow(Text)). - --spec ignored_style(binary()) -> binary(). -ignored_style(Text) -> - bold_yellow(Text). - --spec bold_cyan(binary()) -> binary(). -bold_cyan(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:cyan(Text)). - --spec function_style(binary()) -> binary(). -function_style(Text) -> - bold_cyan(Text). - --spec strip_style(binary()) -> binary(). -strip_style(Text) -> - {New_text, _} = begin - _pipe = Text, - _pipe@1 = gleam@string:to_graphemes(_pipe), - gleam@list:fold( - _pipe@1, - {<<""/utf8>>, false}, - fun(Acc, Char) -> - {Str, Removing} = Acc, - Bit_char = gleam_stdlib:identity(Char), - case {Bit_char, Removing} of - {<<16#1b>>, _} -> - {Str, true}; - - {<<16#6d>>, true} -> - {Str, false}; - - {_, true} -> - {Str, true}; - - {_, false} -> - {<>, false} - end - end - ) - end, - New_text. diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache deleted file mode 100644 index 61c532d..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta deleted file mode 100644 index 080524c..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl deleted file mode 100644 index 35dbba3..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.erl +++ /dev/null @@ -1,229 +0,0 @@ --module(showtime@internal@reports@table). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_string/1, align_table/1]). --export_type([content/0, col/0, table/0]). - --type content() :: {content, binary()} | {styled_content, binary()}. - --type col() :: {align_right, content(), integer()} | - {align_left, content(), integer()} | - {align_right_overflow, content(), integer()} | - {align_left_overflow, content(), integer()} | - {separator, binary()} | - {aligned, binary()}. - --type table() :: {table, gleam@option:option(binary()), list(list(col()))}. - --spec to_string(table()) -> binary(). -to_string(Table) -> - Rows = begin - _pipe = erlang:element(3, Table), - _pipe@3 = gleam@list:map(_pipe, fun(Row) -> _pipe@1 = Row, - _pipe@2 = gleam@list:filter_map(_pipe@1, fun(Col) -> case Col of - {separator, Char} -> - {ok, Char}; - - {aligned, Content} -> - {ok, Content}; - - _ -> - {error, nil} - end end), - gleam@string:join(_pipe@2, <<""/utf8>>) end), - gleam@string:join(_pipe@3, <<"\n"/utf8>>) - end, - Header@1 = begin - _pipe@4 = erlang:element(2, Table), - _pipe@5 = gleam@option:map( - _pipe@4, - fun(Header) -> <
> end - ), - gleam@option:unwrap(_pipe@5, <<""/utf8>>) - end, - <>. - --spec pad_left(binary(), integer(), binary()) -> binary(). -pad_left(Str, Num, Char) -> - Padding = begin - _pipe = gleam@list:repeat(Char, Num), - gleam@string:join(_pipe, <<""/utf8>>) - end, - <>. - --spec pad_right(binary(), integer(), binary()) -> binary(). -pad_right(Str, Num, Char) -> - Padding = begin - _pipe = gleam@list:repeat(Char, Num), - gleam@string:join(_pipe, <<""/utf8>>) - end, - <>. - --spec align_table(table()) -> table(). -align_table(Table) -> - Cols = begin - _pipe = erlang:element(3, Table), - gleam@list:transpose(_pipe) - end, - Col_width = begin - _pipe@1 = Cols, - gleam@list:map(_pipe@1, fun(Col) -> _pipe@2 = Col, - _pipe@3 = gleam@list:map( - _pipe@2, - fun(Content) -> case Content of - {align_right, {content, Unstyled}, _} -> - Unstyled; - - {align_right, {styled_content, Styled}, _} -> - showtime@internal@reports@styles:strip_style( - Styled - ); - - {align_left, {content, Unstyled@1}, _} -> - Unstyled@1; - - {align_left, {styled_content, Styled@1}, _} -> - showtime@internal@reports@styles:strip_style( - Styled@1 - ); - - {align_left_overflow, _, _} -> - <<""/utf8>>; - - {align_right_overflow, _, _} -> - <<""/utf8>>; - - {separator, Char} -> - Char; - - {aligned, Content@1} -> - Content@1 - end end - ), - gleam@list:fold( - _pipe@3, - 0, - fun(Max, Str) -> - gleam@int:max(Max, gleam@string:length(Str)) - end - ) end) - end, - Aligned_col = begin - _pipe@4 = Cols, - _pipe@5 = gleam@list:zip(_pipe@4, Col_width), - gleam@list:map( - _pipe@5, - fun(Col_and_width) -> - {Col@1, Width} = Col_and_width, - _pipe@6 = Col@1, - gleam@list:map(_pipe@6, fun(Content@2) -> case Content@2 of - {align_right, {content, Unstyled@2}, Margin} -> - {aligned, - pad_left( - Unstyled@2, - (Width + Margin) - gleam@string:length( - Unstyled@2 - ), - <<" "/utf8>> - )}; - - {align_right, {styled_content, Styled@2}, Margin@1} -> - {aligned, - pad_left( - Styled@2, - (Width + Margin@1) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@2 - ) - ), - <<" "/utf8>> - )}; - - {align_right_overflow, - {content, Unstyled@3}, - Margin@2} -> - {aligned, - pad_left( - Unstyled@3, - (Width + Margin@2) - gleam@string:length( - Unstyled@3 - ), - <<" "/utf8>> - )}; - - {align_right_overflow, - {styled_content, Styled@3}, - Margin@3} -> - {aligned, - pad_left( - Styled@3, - (Width + Margin@3) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@3 - ) - ), - <<" "/utf8>> - )}; - - {align_left, {content, Unstyled@4}, Margin@4} -> - {aligned, - pad_right( - Unstyled@4, - (Width + Margin@4) - gleam@string:length( - Unstyled@4 - ), - <<" "/utf8>> - )}; - - {align_left, {styled_content, Styled@4}, Margin@5} -> - {aligned, - pad_right( - Styled@4, - (Width + Margin@5) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@4 - ) - ), - <<" "/utf8>> - )}; - - {align_left_overflow, - {content, Unstyled@5}, - Margin@6} -> - {aligned, - pad_right( - Unstyled@5, - (Width + Margin@6) - gleam@string:length( - Unstyled@5 - ), - <<" "/utf8>> - )}; - - {align_left_overflow, - {styled_content, Styled@5}, - Margin@7} -> - {aligned, - pad_right( - Styled@5, - (Width + Margin@7) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@5 - ) - ), - <<" "/utf8>> - )}; - - {separator, Char@1} -> - {separator, Char@1}; - - {aligned, Content@3} -> - {aligned, Content@3} - end end) - end - ) - end, - Aligned_rows = begin - _pipe@7 = Aligned_col, - gleam@list:transpose(_pipe@7) - end, - erlang:setelement(3, Table, Aligned_rows). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache deleted file mode 100644 index 4aa8df1..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta deleted file mode 100644 index 7f1bdda..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl deleted file mode 100644 index c975467..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@meta.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(showtime@tests@meta). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([meta/0]). - --type meta() :: {meta, binary(), list(binary())}. - - diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache deleted file mode 100644 index 90d3838..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta deleted file mode 100644 index fcc4e8a..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl deleted file mode 100644 index 05bea8f..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@should.erl +++ /dev/null @@ -1,143 +0,0 @@ --module(showtime@tests@should). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([evaluate/1, equal/2, equal_meta/3, not_equal/2, not_equal_meta/3, be_ok/1, be_ok_meta/2, be_error/1, be_error_meta/2, fail/0, fail_meta/1, be_true/1, be_true_meta/2, be_false/1, be_false_meta/2]). --export_type([assertion/2]). - --type assertion(MXN, MXO) :: {eq, - MXN, - MXN, - gleam@option:option(showtime@tests@meta:meta())} | - {not_eq, MXN, MXN, gleam@option:option(showtime@tests@meta:meta())} | - {is_ok, - {ok, MXN} | {error, MXO}, - gleam@option:option(showtime@tests@meta:meta())} | - {is_error, - {ok, MXN} | {error, MXO}, - gleam@option:option(showtime@tests@meta:meta())} | - {fail, gleam@option:option(showtime@tests@meta:meta())}. - --spec evaluate(assertion(any(), any())) -> nil. -evaluate(Assertion) -> - case Assertion of - {eq, A, B, _} -> - case A =:= B of - true -> - nil; - - false -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {not_eq, A@1, B@1, _} -> - case A@1 /= B@1 of - true -> - nil; - - false -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {is_ok, A@2, _} -> - case A@2 of - {ok, _} -> - nil; - - {error, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {is_error, A@3, _} -> - case A@3 of - {error, _} -> - nil; - - {ok, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {fail, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end. - --spec equal(MXP, MXP) -> nil. -equal(A, B) -> - evaluate({eq, A, B, none}). - --spec equal_meta(MXR, MXR, showtime@tests@meta:meta()) -> nil. -equal_meta(A, B, Meta) -> - evaluate({eq, A, B, {some, Meta}}). - --spec not_equal(MXT, MXT) -> nil. -not_equal(A, B) -> - evaluate({not_eq, A, B, none}). - --spec not_equal_meta(MXV, MXV, showtime@tests@meta:meta()) -> nil. -not_equal_meta(A, B, Meta) -> - evaluate({not_eq, A, B, {some, Meta}}). - --spec be_ok({ok, MXX} | {error, any()}) -> MXX. -be_ok(A) -> - evaluate({is_ok, A, none}), - {ok, Value} = case A of - {ok, _} -> A; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/tests/should"/utf8>>, - function => <<"be_ok"/utf8>>, - line => 30}) - end, - Value. - --spec be_ok_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_ok_meta(A, Meta) -> - evaluate({is_ok, A, {some, Meta}}). - --spec be_error({ok, any()} | {error, MYI}) -> MYI. -be_error(A) -> - evaluate({is_error, A, none}), - {error, Value} = case A of - {error, _} -> A; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/tests/should"/utf8>>, - function => <<"be_error"/utf8>>, - line => 40}) - end, - Value. - --spec be_error_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_error_meta(A, Meta) -> - evaluate({is_error, A, {some, Meta}}). - --spec fail() -> nil. -fail() -> - evaluate({fail, none}). - --spec fail_meta(showtime@tests@meta:meta()) -> nil. -fail_meta(Meta) -> - evaluate({fail, {some, Meta}}). - --spec be_true(boolean()) -> nil. -be_true(A) -> - _pipe = A, - equal(_pipe, true). - --spec be_true_meta(boolean(), showtime@tests@meta:meta()) -> nil. -be_true_meta(A, Meta) -> - _pipe = A, - equal_meta(_pipe, true, Meta). - --spec be_false(boolean()) -> nil. -be_false(A) -> - _pipe = A, - equal(_pipe, false). - --spec be_false_meta(boolean(), showtime@tests@meta:meta()) -> nil. -be_false_meta(A, Meta) -> - _pipe = A, - equal_meta(_pipe, false, Meta). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache deleted file mode 100644 index d07ea1b..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta deleted file mode 100644 index 8354c6f..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl deleted file mode 100644 index 2f65614..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime@tests@test.erl +++ /dev/null @@ -1,57 +0,0 @@ --module(showtime@tests@test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([test/2, equal/3, not_equal/3, with_meta/2, be_ok/2, be_error/2, fail/1, be_true/2, be_false/2]). --export_type([test/0, meta_should/1]). - --type test() :: {test, showtime@tests@meta:meta(), fun(() -> nil)}. - --type meta_should(OKH) :: {meta_should, - fun((OKH, OKH) -> nil), - fun((OKH, OKH) -> nil)}. - --spec test(showtime@tests@meta:meta(), fun((showtime@tests@meta:meta()) -> nil)) -> test(). -test(Meta, Test_function) -> - {test, Meta, fun() -> Test_function(Meta) end}. - --spec equal(OKM, OKM, showtime@tests@meta:meta()) -> nil. -equal(A, B, Meta) -> - gleam@io:debug(A), - gleam@io:debug(B), - showtime@tests@should:equal_meta(A, B, Meta). - --spec not_equal(OKO, OKO, showtime@tests@meta:meta()) -> nil. -not_equal(A, B, Meta) -> - showtime@tests@should:equal_meta(A, B, Meta). - --spec with_meta(showtime@tests@meta:meta(), fun((meta_should(any())) -> nil)) -> test(). -with_meta(Meta, Test_function) -> - {test, - Meta, - fun() -> - Test_function( - {meta_should, - fun(A, B) -> equal(A, B, Meta) end, - fun(A@1, B@1) -> not_equal(A@1, B@1, Meta) end} - ) - end}. - --spec be_ok({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_ok(A, Meta) -> - showtime@tests@should:be_ok_meta(A, Meta). - --spec be_error({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_error(A, Meta) -> - showtime@tests@should:be_error_meta(A, Meta). - --spec fail(showtime@tests@meta:meta()) -> nil. -fail(Meta) -> - showtime@tests@should:fail_meta(Meta). - --spec be_true(boolean(), showtime@tests@meta:meta()) -> nil. -be_true(A, Meta) -> - showtime@tests@should:be_true_meta(A, Meta). - --spec be_false(boolean(), showtime@tests@meta:meta()) -> nil. -be_false(A, Meta) -> - showtime@tests@should:be_false_meta(A, Meta). diff --git a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl b/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl deleted file mode 100644 index 3259623..0000000 --- a/aoc2023/build/dev/erlang/adglent/_gleam_artefacts/showtime_ffi.erl +++ /dev/null @@ -1,187 +0,0 @@ --module(showtime_ffi). - --export([run_test/4, functions/0, capture_output/1, gleam_error/1]). - -gleam_error(Value) -> - erlang:error(#{ - gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => Value, - module => <<"this/is/not/used"/utf8>>, - function => <<"gleam_error"/utf8>>, - % Not used - line => 0 - }). - -start_output_capture(Capture) -> - OldGroupLeader = group_leader(), - CapturePid = spawn(showtime_ffi, capture_output, [{[], {OldGroupLeader, Capture}}]), - group_leader(CapturePid, self()), - {CapturePid, OldGroupLeader}. - -stop_output_capture({CapturePid, OldGroupLeader}) -> - group_leader(OldGroupLeader, self()), - CapturePid ! {capture_done, self()}, - receive - Buffer -> - Buffer - end. - -capture_output({Buffer, {OldGroupLeader, Capture}}) -> - receive - {io_request, From, ReplyAs, {put_chars, unicode, BitString}} -> - case Capture of - yes -> - From ! {io_reply, ReplyAs, ok}, - capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); - mixed -> - OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, - capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); - no -> - OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, - capture_output({Buffer, {OldGroupLeader, Capture}}) - end; - {capture_done, SenderPid} -> - SenderPid ! Buffer; - OtherMessage -> - OldGroupLeader ! OtherMessage, - capture_output({Buffer, {OldGroupLeader, Capture}}) - end. - -run_test(Module, Function, IgnoreTags, Capture) -> - OutputCapture = start_output_capture(Capture), - try - Result = apply(Module, Function, []), - {ResultType, FinalResult} = - case Result of - {test, {meta, _Description, Tags}, TestFun} -> - case - lists:any( - fun(Tag) -> - lists:any(fun(IgnoreTag) -> IgnoreTag == Tag end, IgnoreTags) - end, - Tags - ) - of - true -> - {ignored, ignore}; - false -> - {test_function_return, TestFun()} - end; - DirectResult -> - {test_function_return, DirectResult} - end, - OutputCaptureBuffer = stop_output_capture(OutputCapture), - case ResultType of - ignored -> {ok, {ResultType, FinalResult}}; - _ -> {ok, {ResultType, FinalResult, OutputCaptureBuffer}} - end - catch - Class:Reason:Stacktrace -> - GleamReason = - case Reason of - {Assertion, ReasonList} -> - ErlangReasonList = - lists:map( - fun(ReasonDetail) -> - case ReasonDetail of - {line, LineNo} -> - {reason_line, LineNo}; - {expression, List} -> - {expression, list_to_binary(List)}; - {module, ModuleAtom} -> - {module, atom_to_binary(ModuleAtom)}; - {pattern, Pattern} -> - {pattern, list_to_binary(Pattern)}; - Other -> - Other - end - end, - ReasonList - ), - GleamAssertionType = - case Assertion of - assertEqual -> - assert_equal; - assertNotEqual -> - assert_not_equal; - assertMatch -> - assert_match; - OtherAssertionType -> - OtherAssertionType - end, - {GleamAssertionType, ErlangReasonList}; - #{ - function := GleamFunction, - gleam_error := GleamError, - line := Line, - message := Message, - module := GleamModule, - value := Value - } -> - case Value of - {error, {OkValue, _, _, _}} when OkValue == not_eq; OkValue == eq -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - {error, {OkValue, _, _}} when OkValue == is_ok; OkValue == is_error -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - {error, {OkValue, _}} when OkValue == fail -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - _ -> - {gleam_assert, Value, Line} - end; - OtherReason -> - {generic_exception, OtherReason} - end, - GleamClass = - case Class of - error -> - erlang_error; - Other -> - Other - end, - GleamTraceList = - lists:map( - fun(Trace) -> - case Trace of - {ModuleName, FunctionName, Arity, ExtraInfoList} -> - {trace_module, atom_to_binary(ModuleName), - atom_to_binary(FunctionName), map_arity(Arity), - map_extra_info_list(ExtraInfoList)}; - {FunctionName, Arity, ExtraInfoList} -> - {trace, atom_to_binary(FunctionName), map_arity(Arity), - map_extra_info_list(ExtraInfoList)} - end - end, - Stacktrace - ), - OutputCaptureBufferCatch = stop_output_capture(OutputCapture), - {error, - {erlang_exception, GleamClass, GleamReason, {trace_list, GleamTraceList}, - OutputCaptureBufferCatch}} - end. - -map_extra_info_list(ExtraInfoList) -> - lists:map( - fun(ExtraInfo) -> - case ExtraInfo of - {file, FileNameList} -> {file, list_to_binary(FileNameList)}; - Other -> Other - end - end, - ExtraInfoList - ). - -map_arity(Arity) -> - if - is_list(Arity) -> - {arg_list, Arity}; - is_integer(Arity) -> - {num, Arity} - end. - -functions() -> - Funs = module_info(exports), - Funs. diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent.app b/aoc2023/build/dev/erlang/adglent/ebin/adglent.app deleted file mode 100644 index f8e1aa6..0000000 --- a/aoc2023/build/dev/erlang/adglent/ebin/adglent.app +++ /dev/null @@ -1,17 +0,0 @@ -{application, adglent, [ - {vsn, "1.2.0"}, - {applications, [gap, - gleam_community_ansi, - gleam_erlang, - gleam_http, - gleam_httpc, - gleam_otp, - gleam_stdlib, - glint, - simplifile, - snag, - tom]}, - {description, "Advent of code helper - automating setup of tests, solution template and problem input"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam deleted file mode 100644 index c53eb59..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/adglent.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam deleted file mode 100644 index 9ad63c2..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/adglent@day.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam deleted file mode 100644 index 37d94e6..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/adglent@init.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam b/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam deleted file mode 100644 index 259f958..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/adglent_ffi.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam deleted file mode 100644 index 9a78e8e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@aoc_client.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam deleted file mode 100644 index c97eda5..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@errors.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam deleted file mode 100644 index 50b7d68..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@prompt.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam deleted file mode 100644 index cbe144e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@template.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam deleted file mode 100644 index 54c7937..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@solution.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam deleted file mode 100644 index 7e35186..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@test_main.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam deleted file mode 100644 index 7acb10e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_gleeunit.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam deleted file mode 100644 index a77da82..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@templates@testfile_showtime.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam b/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam deleted file mode 100644 index 1788e31..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/priv@toml.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam deleted file mode 100644 index d3a477e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam deleted file mode 100644 index e9be51d..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@cli.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam deleted file mode 100644 index de943fd..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@common_event_handler.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam deleted file mode 100644 index f7b2f57..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_result.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam deleted file mode 100644 index 6146227..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@common@test_suite.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam deleted file mode 100644 index 4f28602..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@discover.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam deleted file mode 100644 index ed9bbda..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@event_handler.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam deleted file mode 100644 index 75e190f..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@module_handler.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam deleted file mode 100644 index d0a69a6..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@erlang@runner.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam deleted file mode 100644 index dc16640..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@compare.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam deleted file mode 100644 index 7d6a27a..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@formatter.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam deleted file mode 100644 index 3a5c720..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@styles.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam deleted file mode 100644 index 7778cd8..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@internal@reports@table.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam deleted file mode 100644 index 2f911da..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@meta.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam deleted file mode 100644 index 14ead72..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@should.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam deleted file mode 100644 index f3d21e6..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime@tests@test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam b/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam deleted file mode 100644 index 95c965e..0000000 Binary files a/aoc2023/build/dev/erlang/adglent/ebin/showtime_ffi.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl b/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl deleted file mode 100644 index 615e473..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/adglent_Example.hrl +++ /dev/null @@ -1 +0,0 @@ --record(example, {input :: binary(), answer :: any()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl deleted file mode 100644 index 4cd5ddd..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomGetError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(tom_get_error, {error :: tom:get_error()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl b/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl deleted file mode 100644 index 7306934..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/priv@toml_TomParseError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(tom_parse_error, {error :: tom:parse_error()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl deleted file mode 100644 index 7d24e52..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl +++ /dev/null @@ -1 +0,0 @@ --record(finished, {num_modules :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl deleted file mode 100644 index 3efcd39..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(handler_state, { - test_state :: showtime@internal@common@common_event_handler:test_state(), - num_done :: integer(), - events :: gleam@dict:dict(binary(), gleam@dict:dict(binary(), showtime@internal@common@test_suite:test_run())) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl deleted file mode 100644 index 79f34f8..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ArgList.hrl +++ /dev/null @@ -1 +0,0 @@ --record(arg_list, {arg_list :: list(gleam@dynamic:dynamic_())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl deleted file mode 100644 index c6458ba..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_equal, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl deleted file mode 100644 index 4920304..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_match, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl deleted file mode 100644 index 221c15f..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_not_equal, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl deleted file mode 100644 index 9a31ba8..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErlangException.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(erlang_exception, { - class :: showtime@internal@common@test_result:class(), - reason :: showtime@internal@common@test_result:reason(), - stacktrace :: showtime@internal@common@test_result:trace_list(), - output_buffer :: list(binary()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl deleted file mode 100644 index 4e0244d..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(error_info, { - error_info :: gleam@dict:dict(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl deleted file mode 100644 index 5e40ad3..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expected.hrl +++ /dev/null @@ -1 +0,0 @@ --record(expected, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl deleted file mode 100644 index 7aa0c35..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Expression.hrl +++ /dev/null @@ -1 +0,0 @@ --record(expression, {expression :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl deleted file mode 100644 index 1274b74..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_File.hrl +++ /dev/null @@ -1 +0,0 @@ --record(file, {filename :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl deleted file mode 100644 index 7c33d0d..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GenericException.hrl +++ /dev/null @@ -1 +0,0 @@ --record(generic_exception, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl deleted file mode 100644 index 095748c..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl +++ /dev/null @@ -1 +0,0 @@ --record(gleam_assert, {value :: gleam@dynamic:dynamic_(), line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl deleted file mode 100644 index 68e6645..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_GleamError.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(gleam_error, { - details :: showtime@internal@common@test_result:gleam_error_detail() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl deleted file mode 100644 index 87b7e2f..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Ignored.hrl +++ /dev/null @@ -1 +0,0 @@ --record(ignored, {reason :: showtime@internal@common@test_result:ignore_reason()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl deleted file mode 100644 index 5f3f60d..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_LetAssert.hrl +++ /dev/null @@ -1,7 +0,0 @@ --record(let_assert, { - module :: binary(), - function :: binary(), - line_no :: integer(), - message :: binary(), - value :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl deleted file mode 100644 index 9807df6..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Line.hrl +++ /dev/null @@ -1 +0,0 @@ --record(line, {line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl deleted file mode 100644 index 8002c0c..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Module.hrl +++ /dev/null @@ -1 +0,0 @@ --record(module, {name :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl deleted file mode 100644 index c36efa3..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Num.hrl +++ /dev/null @@ -1 +0,0 @@ --record(num, {arity :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl deleted file mode 100644 index 6aa9c84..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Pattern.hrl +++ /dev/null @@ -1 +0,0 @@ --record(pattern, {pattern :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl deleted file mode 100644 index b7ad1ab..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl +++ /dev/null @@ -1 +0,0 @@ --record(reason_line, {line_no :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl deleted file mode 100644 index b0bc294..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test_function_return, { - value :: gleam@dynamic:dynamic_(), - output_buffer :: list(binary()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl deleted file mode 100644 index 4cb007c..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Trace.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(trace, { - function :: binary(), - arity :: showtime@internal@common@test_result:arity_(), - extra_info :: list(showtime@internal@common@test_result:extra_info()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl deleted file mode 100644 index c1aa9c5..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceList.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(trace_list, { - traces :: list(showtime@internal@common@test_result:trace()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl deleted file mode 100644 index 595362f..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_TraceModule.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(trace_module, { - module :: binary(), - function :: binary(), - arity :: showtime@internal@common@test_result:arity_(), - extra_info :: list(showtime@internal@common@test_result:extra_info()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl deleted file mode 100644 index 3a4b0dd..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_result_Value.hrl +++ /dev/null @@ -1 +0,0 @@ --record(value, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl deleted file mode 100644 index 927a0cf..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(completed_test_run, { - test_function :: showtime@internal@common@test_suite:test_function(), - total_time :: integer(), - result :: {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()} -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl deleted file mode 100644 index 13df1bf..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTest.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(end_test, { - test_module :: showtime@internal@common@test_suite:test_module(), - test_function :: showtime@internal@common@test_suite:test_function(), - result :: {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()} -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl deleted file mode 100644 index 3f78991..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl +++ /dev/null @@ -1 +0,0 @@ --record(end_test_run, {num_modules :: integer()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl deleted file mode 100644 index a7f37b3..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(end_test_suite, { - test_module :: showtime@internal@common@test_suite:test_module() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl deleted file mode 100644 index f52e5cc..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(ongoing_test_run, { - test_function :: showtime@internal@common@test_suite:test_function(), - started_at :: integer() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl deleted file mode 100644 index d532609..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTest.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(start_test, { - test_module :: showtime@internal@common@test_suite:test_module(), - test_function :: showtime@internal@common@test_suite:test_function() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl deleted file mode 100644 index d5a03d3..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(start_test_suite, { - test_module :: showtime@internal@common@test_suite:test_module() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl deleted file mode 100644 index a783ba4..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl +++ /dev/null @@ -1 +0,0 @@ --record(test_function, {name :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl deleted file mode 100644 index ee9baaf..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestModule.hrl +++ /dev/null @@ -1 +0,0 @@ --record(test_module, {name :: binary(), path :: gleam@option:option(binary())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl deleted file mode 100644 index 253a946..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test_suite, { - module :: showtime@internal@common@test_suite:test_module(), - tests :: list(showtime@internal@common@test_suite:test_function()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl deleted file mode 100644 index ca52968..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeft.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_left, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl deleted file mode 100644 index 8d5a673..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_left_overflow, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl deleted file mode 100644 index 7f7a3f0..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRight.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_right, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl deleted file mode 100644 index 4fc4536..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_right_overflow, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl deleted file mode 100644 index 2343dfd..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Aligned.hrl +++ /dev/null @@ -1 +0,0 @@ --record(aligned, {content :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl deleted file mode 100644 index 044891b..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Content.hrl +++ /dev/null @@ -1 +0,0 @@ --record(content, {unstyled_text :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl deleted file mode 100644 index db3f822..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Separator.hrl +++ /dev/null @@ -1 +0,0 @@ --record(separator, {char :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl deleted file mode 100644 index ed500df..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_StyledContent.hrl +++ /dev/null @@ -1 +0,0 @@ --record(styled_content, {styled_text :: binary()}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl deleted file mode 100644 index 5b41bb1..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@internal@reports@table_Table.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(table, { - header :: gleam@option:option(binary()), - rows :: list(list(showtime@internal@reports@table:col())) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl deleted file mode 100644 index 14184fb..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@meta_Meta.hrl +++ /dev/null @@ -1 +0,0 @@ --record(meta, {description :: binary(), tags :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl deleted file mode 100644 index 6ebea34..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Eq.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(eq, { - a :: any(), - b :: any(), - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl deleted file mode 100644 index cf06a3c..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_Fail.hrl +++ /dev/null @@ -1 +0,0 @@ --record(fail, {meta :: gleam@option:option(showtime@tests@meta:meta())}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl deleted file mode 100644 index e9cabf3..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsError.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(is_error, { - a :: {ok, any()} | {error, any()}, - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl deleted file mode 100644 index 37c24ca..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_IsOk.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(is_ok, { - a :: {ok, any()} | {error, any()}, - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl deleted file mode 100644 index 2a6bf48..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@should_NotEq.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(not_eq, { - a :: any(), - b :: any(), - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl deleted file mode 100644 index a814a93..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_MetaShould.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(meta_should, { - equal :: fun((any(), any()) -> nil), - not_equal :: fun((any(), any()) -> nil) -}). diff --git a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl b/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl deleted file mode 100644 index e75a0b7..0000000 --- a/aoc2023/build/dev/erlang/adglent/include/showtime@tests@test_Test.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test, { - meta :: showtime@tests@meta:meta(), - test_function :: fun(() -> nil) -}). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache deleted file mode 100644 index e31a66a..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta deleted file mode 100644 index 7d66c62..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl deleted file mode 100644 index 12159d0..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023.erl +++ /dev/null @@ -1,21 +0,0 @@ --module(aoc2023). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec main() -> bitstring(). -main() -> - Trim = 8, - _assert_subject = gleam_stdlib:identity(<<"abcdefgh -abcdefgh"/utf8>>), - <<_:Trim/binary, "\n"/utf8, Rest/binary>> = case _assert_subject of - <<_:Trim/binary, "\n"/utf8, _/binary>> -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"aoc2023"/utf8>>, - function => <<"main"/utf8>>, - line => 9}) - end, - gleam@io:debug(Rest). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl deleted file mode 100644 index ad291f1..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023@@main.erl +++ /dev/null @@ -1,35 +0,0 @@ --module('aoc2023@@main'). - --export([run/1]). - -run(Module) -> - io:setopts(standard_io, [binary, {encoding, utf8}]), - io:setopts(standard_error, [{encoding, utf8}]), - try - {ok, _} = application:ensure_all_started('aoc2023'), - erlang:process_flag(trap_exit, false), - Module:main(), - erlang:halt(0) - catch - Class:Reason:StackTrace -> - print_error(Class, Reason, StackTrace), - erlang:halt(127, [{flush, true}]) - end. - -print_error(Class, Reason, StackTrace) -> - E = erl_error:format_exception( - 1, Class, Reason, StackTrace, fun stack_filter/3, - fun print_stack_frame/2, unicode - ), - io:put_chars(E). - -stack_filter(Module, _F, _A) -> - case Module of - ?MODULE -> true; - erl_eval -> true; - init -> true; - _ -> false - end. - -print_stack_frame(Term, I) -> - io_lib:format("~." ++ integer_to_list(I) ++ "tP", [Term, 50]). \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache deleted file mode 100644 index cb20c74..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta deleted file mode 100644 index f568aaf..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl deleted file mode 100644 index 7382e40..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/aoc2023_test.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(aoc2023_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec main() -> nil. -main() -> - showtime:main(). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache deleted file mode 100644 index 40fbdcf..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta deleted file mode 100644 index f13b8dc..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl deleted file mode 100644 index 5fd5c16..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@day10_test.erl +++ /dev/null @@ -1,52 +0,0 @@ --module(day10@day10_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, <<"7-F7- -.FJ|7 -SJLL7 -|F--J -LJ.LJ"/utf8>>, <<"8"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, <<"7-F7- -.FJ|7 -SJLL7 -|F--J -LJ.LJ"/utf8>>, <<"8"/utf8>>}], - fun(Example) -> _pipe@1 = day10@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"........... -.S-------7. -.|F-----7|. -.||OOOOO||. -.||OOOOO||. -.|L-7OF-J|. -.|II|O|II|. -.L--JOL--J. -.....O....."/utf8>>, - <<"4"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"........... -.S-------7. -.|F-----7|. -.||OOOOO||. -.||OOOOO||. -.|L-7OF-J|. -.|II|O|II|. -.L--JOL--J. -.....O....."/utf8>>, - <<"4"/utf8>>}], - fun(Example) -> _pipe@1 = day10@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache deleted file mode 100644 index 65500d7..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta deleted file mode 100644 index 51c9047..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl deleted file mode 100644 index d6802a6..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day10@solve.erl +++ /dev/null @@ -1,340 +0,0 @@ --module(day10@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([posn/0]). - --type posn() :: {posn, integer(), integer()}. - --spec add_posns(posn(), posn()) -> posn(). -add_posns(P1, P2) -> - {posn, - erlang:element(2, P1) + erlang:element(2, P2), - erlang:element(3, P1) + erlang:element(3, P2)}. - --spec pipe_neighbors(binary()) -> list(posn()). -pipe_neighbors(Pipe) -> - case Pipe of - <<"|"/utf8>> -> - [{posn, -1, 0}, {posn, 1, 0}]; - - <<"-"/utf8>> -> - [{posn, 0, 1}, {posn, 0, -1}]; - - <<"L"/utf8>> -> - [{posn, -1, 0}, {posn, 0, 1}]; - - <<"F"/utf8>> -> - [{posn, 1, 0}, {posn, 0, 1}]; - - <<"7"/utf8>> -> - [{posn, 1, 0}, {posn, 0, -1}]; - - <<"J"/utf8>> -> - [{posn, -1, 0}, {posn, 0, -1}]; - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"bad pipe"/utf8>>, - module => <<"day10/solve"/utf8>>, - function => <<"pipe_neighbors"/utf8>>, - line => 44}) - end. - --spec make_grid(binary()) -> gleam@dict:dict(posn(), binary()). -make_grid(Input) -> - _pipe = (gleam@list:index_map( - gleam@string:split(Input, <<"\n"/utf8>>), - fun(R, Row) -> - gleam@list:index_map( - gleam@string:to_graphemes(Row), - fun(C, Col) -> {{posn, R, C}, Col} end - ) - end - )), - _pipe@1 = gleam@list:flatten(_pipe), - gleam@dict:from_list(_pipe@1). - --spec valid_start_direction(gleam@dict:dict(posn(), binary()), posn()) -> posn(). -valid_start_direction(Grid, S) -> - _assert_subject = (gleam@list:filter_map( - [{{posn, -1, 0}, [<<"|"/utf8>>, <<"7"/utf8>>, <<"F"/utf8>>]}, - {{posn, 1, 0}, [<<"|"/utf8>>, <<"J"/utf8>>, <<"L"/utf8>>]}, - {{posn, 0, 1}, [<<"-"/utf8>>, <<"J"/utf8>>, <<"7"/utf8>>]}, - {{posn, 0, -1}, [<<"-"/utf8>>, <<"F"/utf8>>, <<"L"/utf8>>]}], - fun(D) -> - {Delta, Valids} = D, - Neighbor = add_posns(S, Delta), - case gleam@dict:get(Grid, Neighbor) of - {ok, Pipe} -> - case gleam@list:contains(Valids, Pipe) of - true -> - {ok, Neighbor}; - - false -> - {error, nil} - end; - - {error, _} -> - {error, nil} - end - end - )), - [Dir | _] = case _assert_subject of - [_ | _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"valid_start_direction"/utf8>>, - line => 59}) - end, - Dir. - --spec to_next_pipe(posn(), gleam@dict:dict(posn(), binary()), list(posn())) -> list(posn()). -to_next_pipe(Current, Grid, Acc) -> - [Prev | _] = case Acc of - [_ | _] -> Acc; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"to_next_pipe"/utf8>>, - line => 76}) - end, - _assert_subject = gleam@dict:get(Grid, Current), - {ok, Pipe} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day10/solve"/utf8>>, - function => <<"to_next_pipe"/utf8>>, - line => 77}) - end, - gleam@bool:guard( - Pipe =:= <<"S"/utf8>>, - [Current | Acc], - fun() -> - _assert_subject@1 = begin - _pipe = Pipe, - _pipe@1 = pipe_neighbors(_pipe), - gleam@list:filter_map( - _pipe@1, - fun(P) -> case add_posns(P, Current) of - Neighbor when Neighbor =:= Prev -> - {error, nil}; - - Neighbor@1 -> - {ok, Neighbor@1} - end end - ) - end, - [Next] = case _assert_subject@1 of - [_] -> _assert_subject@1; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day10/solve"/utf8>>, - function => <<"to_next_pipe"/utf8>>, - line => 79}) - end, - to_next_pipe(Next, Grid, [Current | Acc]) - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - Grid = begin - _pipe = Input, - make_grid(_pipe) - end, - _assert_subject = begin - _pipe@1 = Grid, - _pipe@2 = gleam@dict:filter( - _pipe@1, - fun(_, V) -> V =:= <<"S"/utf8>> end - ), - _pipe@3 = gleam@dict:keys(_pipe@2), - gleam@list:first(_pipe@3) - end, - {ok, S} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 97}) - end, - _pipe@4 = Grid, - _pipe@5 = valid_start_direction(_pipe@4, S), - _pipe@6 = to_next_pipe(_pipe@5, Grid, [S]), - _pipe@7 = gleam@list:length(_pipe@6), - _pipe@8 = (fun(I) -> ((I - 1) div 2) end)(_pipe@7), - gleam@string:inspect(_pipe@8). - --spec count_crossings( - posn(), - gleam@set:set(posn()), - gleam@dict:dict(posn(), binary()), - integer(), - binary() -) -> integer(). -count_crossings(P, Loop, Grid, Acc, Corner) -> - Maybe_cell = gleam@dict:get(Grid, P), - gleam@bool:guard( - Maybe_cell =:= {error, nil}, - Acc, - fun() -> - {ok, Cell} = case Maybe_cell of - {ok, _} -> Maybe_cell; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"count_crossings"/utf8>>, - line => 125}) - end, - Next = add_posns(P, {posn, 0, 1}), - case gleam@set:contains(Loop, P) of - false -> - count_crossings(Next, Loop, Grid, Acc, Corner); - - true -> - case {Corner, Cell} of - {_, <<"|"/utf8>>} -> - count_crossings(Next, Loop, Grid, Acc + 1, Corner); - - {_, <<"F"/utf8>>} -> - count_crossings(Next, Loop, Grid, Acc, Cell); - - {_, <<"L"/utf8>>} -> - count_crossings(Next, Loop, Grid, Acc, Cell); - - {<<"F"/utf8>>, <<"J"/utf8>>} -> - count_crossings( - Next, - Loop, - Grid, - Acc + 1, - <<""/utf8>> - ); - - {<<"L"/utf8>>, <<"7"/utf8>>} -> - count_crossings( - Next, - Loop, - Grid, - Acc + 1, - <<""/utf8>> - ); - - {<<"F"/utf8>>, <<"7"/utf8>>} -> - count_crossings(Next, Loop, Grid, Acc, <<""/utf8>>); - - {<<"L"/utf8>>, <<"J"/utf8>>} -> - count_crossings(Next, Loop, Grid, Acc, <<""/utf8>>); - - {_, _} -> - count_crossings(Next, Loop, Grid, Acc, Corner) - end - end - end - ). - --spec trace_ray( - posn(), - gleam@set:set(posn()), - gleam@dict:dict(posn(), binary()) -) -> boolean(). -trace_ray(P, Loop, Grid) -> - gleam@bool:guard( - gleam@set:contains(Loop, P), - false, - fun() -> - gleam@int:is_odd(count_crossings(P, Loop, Grid, 0, <<""/utf8>>)) - end - ). - --spec part2(binary()) -> binary(). -part2(Input) -> - Grid = begin - _pipe = Input, - make_grid(_pipe) - end, - _assert_subject = begin - _pipe@1 = Grid, - _pipe@2 = gleam@dict:filter( - _pipe@1, - fun(_, V) -> V =:= <<"S"/utf8>> end - ), - _pipe@3 = gleam@dict:keys(_pipe@2), - gleam@list:first(_pipe@3) - end, - {ok, S} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 145}) - end, - Loop_pipes = begin - _pipe@4 = Grid, - _pipe@5 = valid_start_direction(_pipe@4, S), - _pipe@6 = to_next_pipe(_pipe@5, Grid, [S]), - gleam@set:from_list(_pipe@6) - end, - _pipe@7 = Grid, - _pipe@8 = gleam@dict:keys(_pipe@7), - _pipe@9 = gleam@list:filter( - _pipe@8, - fun(_capture) -> trace_ray(_capture, Loop_pipes, Grid) end - ), - _pipe@10 = gleam@list:length(_pipe@9), - gleam@string:inspect(_pipe@10). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day10/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 165}) - end, - _assert_subject@1 = adglent:get_input(<<"10"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day10/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 166}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache deleted file mode 100644 index dd328a5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta deleted file mode 100644 index 8698a6e..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl deleted file mode 100644 index 8190b1e..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@day11_test.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(day11@day11_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#....."/utf8>>, - <<"374"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#....."/utf8>>, - <<"374"/utf8>>}], - fun(Example) -> _pipe@1 = day11@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#....."/utf8>>, - <<"8410"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"...#...... -.......#.. -#......... -.......... -......#... -.#........ -.........# -.......... -.......#.. -#...#....."/utf8>>, - <<"8410"/utf8>>}], - fun(Example) -> _pipe@1 = day11@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache deleted file mode 100644 index db28325..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta deleted file mode 100644 index 3765d62..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl deleted file mode 100644 index 2dd8574..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day11@solve.erl +++ /dev/null @@ -1,130 +0,0 @@ --module(day11@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([posn/0]). - --type posn() :: {posn, integer(), integer()}. - --spec find_empty(list(list(binary()))) -> list(integer()). -find_empty(Grid) -> - gleam@list:index_fold( - Grid, - [], - fun(Acc, Row, R) -> case gleam@list:unique(Row) of - [<<"."/utf8>>] -> - [R | Acc]; - - _ -> - Acc - end end - ). - --spec count_prior_empty_ranks(integer(), list(integer())) -> integer(). -count_prior_empty_ranks(Rank, Empty_ranks) -> - _pipe = Empty_ranks, - _pipe@1 = gleam@list:drop_while(_pipe, fun(R_empty) -> R_empty > Rank end), - gleam@list:length(_pipe@1). - --spec parse_with_expansion(binary(), integer()) -> list(posn()). -parse_with_expansion(Input, Expansion) -> - Add = Expansion - 1, - Grid = begin - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1) - end, - Empty_row_list = find_empty(Grid), - Empty_col_list = find_empty(gleam@list:transpose(Grid)), - _pipe@2 = (gleam@list:index_map( - Grid, - fun(R, Row) -> - gleam@list:index_fold( - Row, - [], - fun(Acc, Cell, C) -> - P = {posn, R, C}, - Empty_r = count_prior_empty_ranks(R, Empty_row_list), - Empty_c = count_prior_empty_ranks(C, Empty_col_list), - case Cell of - <<"#"/utf8>> -> - [{posn, - erlang:element(2, P) + (Empty_r * Add), - erlang:element(3, P) + (Empty_c * Add)} | - Acc]; - - _ -> - Acc - end - end - ) - end - )), - gleam@list:flatten(_pipe@2). - --spec all_distances(list(posn())) -> integer(). -all_distances(Stars) -> - gleam@list:fold( - gleam@list:combination_pairs(Stars), - 0, - fun(Acc, Pair) -> - {S1, S2} = Pair, - (Acc + gleam@int:absolute_value( - erlang:element(2, S1) - erlang:element(2, S2) - )) - + gleam@int:absolute_value( - erlang:element(3, S1) - erlang:element(3, S2) - ) - end - ). - --spec find_distances(binary(), integer()) -> binary(). -find_distances(Input, Expand_by) -> - _pipe = Input, - _pipe@1 = parse_with_expansion(_pipe, Expand_by), - _pipe@2 = all_distances(_pipe@1), - gleam@string:inspect(_pipe@2). - --spec part1(binary()) -> binary(). -part1(Input) -> - find_distances(Input, 2). - --spec part2(binary()) -> binary(). -part2(Input) -> - find_distances(Input, 1000000). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day11/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 72}) - end, - _assert_subject@1 = adglent:get_input(<<"11"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day11/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 73}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache deleted file mode 100644 index 13fcba5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta deleted file mode 100644 index d8d6ce0..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl deleted file mode 100644 index fcbec4b..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@day12_test.erl +++ /dev/null @@ -1,38 +0,0 @@ --module(day12@day12_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"???.### 1,1,3 -.??..??...?##. 1,1,3 -?#?#?#?#?#?#?#? 1,3,1,6 -????.#...#... 4,1,1 -????.######..#####. 1,6,5 -?###???????? 3,2,1"/utf8>>, - <<"21"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"???.### 1,1,3 -.??..??...?##. 1,1,3 -?#?#?#?#?#?#?#? 1,3,1,6 -????.#...#... 4,1,1 -????.######..#####. 1,6,5 -?###???????? 3,2,1"/utf8>>, - <<"21"/utf8>>}], - fun(Example) -> _pipe@1 = day12@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [], - fun(Example) -> _pipe@1 = day12@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache deleted file mode 100644 index 380635a..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta deleted file mode 100644 index ba4b411..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl deleted file mode 100644 index 4ca87c8..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day12@solve.erl +++ /dev/null @@ -1,145 +0,0 @@ --module(day12@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). - --spec parse_folds(binary(), integer()) -> list({binary(), list(integer())}). -parse_folds(Input, Folds) -> - Records = gleam@string:split(Input, <<"\n"/utf8>>), - gleam@list:map( - Records, - fun(Record) -> - _assert_subject = gleam@string:split_once(Record, <<" "/utf8>>), - {ok, {Template, Sets_str}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day12/solve"/utf8>>, - function => <<"parse_folds"/utf8>>, - line => 15}) - end, - Template@1 = begin - _pipe = Template, - _pipe@1 = gleam@list:repeat(_pipe, Folds), - _pipe@2 = gleam@list:intersperse(_pipe@1, <<"?"/utf8>>), - gleam@string:concat(_pipe@2) - end, - Sets = begin - _pipe@3 = Sets_str, - _pipe@4 = gleam@string:split(_pipe@3, <<","/utf8>>), - _pipe@5 = gleam@list:map(_pipe@4, fun gleam@int:parse/1), - _pipe@6 = gleam@result:values(_pipe@5), - _pipe@7 = gleam@list:repeat(_pipe@6, Folds), - gleam@list:flatten(_pipe@7) - end, - {Template@1, Sets} - end - ). - --spec do_count( - binary(), - list(integer()), - integer(), - boolean(), - utilities@memo:cache({binary(), list(integer()), integer(), boolean()}, integer()) -) -> integer(). -do_count(Template, Groups, Left, Gap, Cache) -> - utilities@memo:memoize( - Cache, - {Template, Groups, Left, Gap}, - fun() -> case {Template, Groups, Left, Gap} of - {<<""/utf8>>, [], 0, _} -> - 1; - - {<<"?"/utf8, T_rest/binary>>, [G | G_rest], 0, false} -> - do_count(T_rest, G_rest, G - 1, G =:= 1, Cache) + (do_count( - T_rest, - Groups, - 0, - false, - Cache - )); - - {<<"?"/utf8, T_rest@1/binary>>, [], 0, false} -> - do_count(T_rest@1, Groups, 0, false, Cache); - - {<<"?"/utf8, T_rest@1/binary>>, _, 0, true} -> - do_count(T_rest@1, Groups, 0, false, Cache); - - {<<"."/utf8, T_rest@1/binary>>, _, 0, _} -> - do_count(T_rest@1, Groups, 0, false, Cache); - - {<<"#"/utf8, T_rest@2/binary>>, [G@1 | G_rest@1], 0, false} -> - do_count(T_rest@2, G_rest@1, G@1 - 1, G@1 =:= 1, Cache); - - {<<"?"/utf8, T_rest@3/binary>>, Gs, L, false} -> - do_count(T_rest@3, Gs, L - 1, L =:= 1, Cache); - - {<<"#"/utf8, T_rest@3/binary>>, Gs, L, false} -> - do_count(T_rest@3, Gs, L - 1, L =:= 1, Cache); - - {_, _, _, _} -> - 0 - end end - ). - --spec count_solutions(integer(), {binary(), list(integer())}) -> integer(). -count_solutions(Acc, Condition) -> - utilities@memo:create( - fun(Cache) -> - {Template, Groups} = Condition, - Acc + do_count(Template, Groups, 0, false, Cache) - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - _pipe = Input, - _pipe@1 = parse_folds(_pipe, 1), - _pipe@2 = gleam@list:fold(_pipe@1, 0, fun count_solutions/2), - gleam@string:inspect(_pipe@2). - --spec part2(binary()) -> binary(). -part2(Input) -> - _pipe = Input, - _pipe@1 = parse_folds(_pipe, 5), - _pipe@2 = gleam@list:fold(_pipe@1, 0, fun count_solutions/2), - gleam@string:inspect(_pipe@2). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day12/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 79}) - end, - _assert_subject@1 = adglent:get_input(<<"12"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day12/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 80}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache deleted file mode 100644 index dbe362b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta deleted file mode 100644 index ccd4923..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl deleted file mode 100644 index 9aa0038..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@day13_test.erl +++ /dev/null @@ -1,88 +0,0 @@ --module(day13@day13_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#"/utf8>>, - <<"405"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#"/utf8>>, - <<"405"/utf8>>}], - fun(Example) -> _pipe@1 = day13@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#"/utf8>>, - <<"400"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. - -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..#"/utf8>>, - <<"400"/utf8>>}], - fun(Example) -> _pipe@1 = day13@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache deleted file mode 100644 index 001ba22..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta deleted file mode 100644 index 543c3ff..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl deleted file mode 100644 index 5e94b0b..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day13@solve.erl +++ /dev/null @@ -1,149 +0,0 @@ --module(day13@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([symmetry_type/0]). - --type symmetry_type() :: {horizontal, integer()} | {vertical, integer()}. - --spec do_is_symmetric(list(list(BLS)), list(list(BLS)), integer()) -> {ok, - integer()} | - {error, nil}. -do_is_symmetric(Left, Right, Errors) -> - gleam@bool:guard( - gleam@list:is_empty(Right), - {error, nil}, - fun() -> - [H | T] = case Right of - [_ | _] -> Right; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day13/solve"/utf8>>, - function => <<"do_is_symmetric"/utf8>>, - line => 23}) - end, - Found_errors = begin - _pipe = gleam@list:zip( - gleam@list:flatten(Left), - gleam@list:flatten(Right) - ), - _pipe@1 = gleam@list:filter( - _pipe, - fun(Tup) -> - erlang:element(2, Tup) /= erlang:element(1, Tup) - end - ), - gleam@list:length(_pipe@1) - end, - case Found_errors =:= Errors of - true -> - {ok, gleam@list:length(Left)}; - - false -> - do_is_symmetric([H | Left], T, Errors) - end - end - ). - --spec is_symmetric(list(list(any())), integer()) -> {ok, integer()} | - {error, nil}. -is_symmetric(Xss, Errs) -> - [Left | Right] = case Xss of - [_ | _] -> Xss; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day13/solve"/utf8>>, - function => <<"is_symmetric"/utf8>>, - line => 13}) - end, - do_is_symmetric([Left], Right, Errs). - --spec get_symmetry_type(list(list(binary())), integer()) -> symmetry_type(). -get_symmetry_type(Xss, Errors) -> - case is_symmetric(Xss, Errors) of - {ok, N} -> - {horizontal, N}; - - _ -> - _assert_subject = is_symmetric(gleam@list:transpose(Xss), Errors), - {ok, N@1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day13/solve"/utf8>>, - function => <<"get_symmetry_type"/utf8>>, - line => 38}) - end, - {vertical, N@1} - end. - --spec summarize_notes(list(symmetry_type())) -> integer(). -summarize_notes(Symmetries) -> - gleam@list:fold(Symmetries, 0, fun(Acc, Note) -> case Note of - {horizontal, N} -> - 100 * N; - - {vertical, N@1} -> - N@1 - end + Acc end). - --spec solve(binary(), integer()) -> binary(). -solve(Input, Errors) -> - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n\n"/utf8>>), - _pipe@5 = gleam@list:map(_pipe@1, fun(Strs) -> _pipe@2 = Strs, - _pipe@3 = gleam@string:split(_pipe@2, <<"\n"/utf8>>), - _pipe@4 = gleam@list:map(_pipe@3, fun gleam@string:to_graphemes/1), - get_symmetry_type(_pipe@4, Errors) end), - _pipe@6 = summarize_notes(_pipe@5), - gleam@string:inspect(_pipe@6). - --spec part1(binary()) -> binary(). -part1(Input) -> - solve(Input, 0). - --spec part2(binary()) -> binary(). -part2(Input) -> - solve(Input, 1). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day13/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 74}) - end, - _assert_subject@1 = adglent:get_input(<<"13"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day13/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 75}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache deleted file mode 100644 index 4577a2b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta deleted file mode 100644 index 9b11f88..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl deleted file mode 100644 index 12ea788..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@day14_test.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(day14@day14_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#...."/utf8>>, - <<"136"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#...."/utf8>>, - <<"136"/utf8>>}], - fun(Example) -> _pipe@1 = day14@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#...."/utf8>>, - <<"64"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"O....#.... -O.OO#....# -.....##... -OO.#O....O -.O.....O#. -O.#..O.#.# -..O..#O..O -.......O.. -#....###.. -#OO..#...."/utf8>>, - <<"64"/utf8>>}], - fun(Example) -> _pipe@1 = day14@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache deleted file mode 100644 index 0c6bea3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta deleted file mode 100644 index 91ec775..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl deleted file mode 100644 index 6c370da..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day14@solve.erl +++ /dev/null @@ -1,149 +0,0 @@ --module(day14@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). - --spec parse(binary()) -> list(list(binary())). -parse(Input) -> - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1), - gleam@list:transpose(_pipe@2). - --spec roll_boulders(list(binary())) -> list(binary()). -roll_boulders(Strs) -> - _pipe = (gleam@list:map( - gleam@list:chunk( - Strs, - fun(C) -> (C =:= <<"O"/utf8>>) orelse (C =:= <<"."/utf8>>) end - ), - fun(Chunks) -> - gleam@list:sort( - Chunks, - gleam@order:reverse(fun gleam@string:compare/2) - ) - end - )), - gleam@list:flatten(_pipe). - --spec score(list(list(binary()))) -> integer(). -score(Matrix) -> - gleam@list:fold( - Matrix, - 0, - fun(Acc, Col) -> - Acc + (gleam@list:index_fold( - gleam@list:reverse(Col), - 0, - fun(Col_acc, Char, N) -> case Char of - <<"O"/utf8>> -> - (Col_acc + N) + 1; - - _ -> - Col_acc - end end - )) - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - _pipe = Input, - _pipe@1 = parse(_pipe), - _pipe@2 = gleam@list:map(_pipe@1, fun roll_boulders/1), - _pipe@3 = score(_pipe@2), - gleam@string:inspect(_pipe@3). - --spec rotate(list(list(BBU))) -> list(list(BBU)). -rotate(Matrix) -> - _pipe = Matrix, - _pipe@1 = gleam@list:map(_pipe, fun gleam@list:reverse/1), - gleam@list:transpose(_pipe@1). - --spec spin(list(list(binary()))) -> list(list(binary())). -spin(Matrix) -> - gleam@list:fold(gleam@list:range(1, 4), Matrix, fun(Acc, _) -> _pipe = Acc, - _pipe@1 = gleam@list:map(_pipe, fun roll_boulders/1), - rotate(_pipe@1) end). - --spec check_if_seen( - list(list(binary())), - gleam@dict:dict(list(list(binary())), integer()), - integer() -) -> integer(). -check_if_seen(Matrix, Cache, Count) -> - case gleam@dict:get(Cache, Matrix) of - {error, nil} -> - check_if_seen( - spin(Matrix), - gleam@dict:insert(Cache, Matrix, Count), - Count - 1 - ); - - {ok, N} -> - _assert_subject = gleam@int:modulo(Count, N - Count), - {ok, Extra} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day14/solve"/utf8>>, - function => <<"check_if_seen"/utf8>>, - line => 66}) - end, - _pipe = gleam@list:fold( - gleam@list:range(1, Extra), - Matrix, - fun(Acc, _) -> spin(Acc) end - ), - score(_pipe) - end. - --spec spin_cycle(list(list(binary()))) -> integer(). -spin_cycle(Matrix) -> - Cache = gleam@dict:new(), - check_if_seen(Matrix, Cache, 1000000000). - --spec part2(binary()) -> binary(). -part2(Input) -> - _pipe = Input, - _pipe@1 = parse(_pipe), - _pipe@2 = spin_cycle(_pipe@1), - gleam@string:inspect(_pipe@2). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day14/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 81}) - end, - _assert_subject@1 = adglent:get_input(<<"14"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day14/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 82}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache deleted file mode 100644 index 40f928f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta deleted file mode 100644 index 7571773..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl deleted file mode 100644 index ad28e90..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@day15_test.erl +++ /dev/null @@ -1,32 +0,0 @@ --module(day15@day15_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, - <<"1320"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, - <<"1320"/utf8>>}], - fun(Example) -> _pipe@1 = day15@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, - <<"145"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7"/utf8>>, - <<"145"/utf8>>}], - fun(Example) -> _pipe@1 = day15@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache deleted file mode 100644 index 1b2e2ab..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta deleted file mode 100644 index 8cfc051..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl deleted file mode 100644 index 623b454..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day15@solve.erl +++ /dev/null @@ -1,177 +0,0 @@ --module(day15@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([instruction/0]). - --type instruction() :: {remove, binary()} | {insert, binary(), integer()}. - --spec split(binary()) -> list(binary()). -split(Input) -> - _pipe = Input, - gleam@string:split(_pipe, <<","/utf8>>). - --spec hash_algorithm(binary()) -> integer(). -hash_algorithm(Str) -> - Codepoints = begin - _pipe = Str, - _pipe@1 = gleam@string:to_utf_codepoints(_pipe), - gleam@list:map(_pipe@1, fun gleam@string:utf_codepoint_to_int/1) - end, - gleam@list:fold( - Codepoints, - 0, - fun(Acc, C) -> - _assert_subject = gleam@int:modulo((Acc + C) * 17, 256), - {ok, Acc@1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day15/solve"/utf8>>, - function => <<"hash_algorithm"/utf8>>, - line => 20}) - end, - Acc@1 - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - _pipe = Input, - _pipe@1 = split(_pipe), - _pipe@2 = gleam@list:fold( - _pipe@1, - 0, - fun(Acc, Str) -> Acc + hash_algorithm(Str) end - ), - gleam@string:inspect(_pipe@2). - --spec read_instruction(binary()) -> instruction(). -read_instruction(Str) -> - case gleam@string:split(Str, <<"="/utf8>>) of - [Label, Focal_str] -> - _assert_subject = gleam@int:parse(Focal_str), - {ok, Focal} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day15/solve"/utf8>>, - function => <<"read_instruction"/utf8>>, - line => 39}) - end, - {insert, Label, Focal}; - - _ -> - {remove, gleam@string:drop_right(Str, 1)} - end. - --spec remove_lens(gleam@dict:dict(integer(), list({binary(), BPV})), binary()) -> gleam@dict:dict(integer(), list({binary(), - BPV})). -remove_lens(Boxes, Label) -> - gleam@dict:update(Boxes, hash_algorithm(Label), fun(V) -> case V of - {some, Lenses} -> - case gleam@list:key_pop(Lenses, Label) of - {ok, {_, Updated}} -> - Updated; - - {error, nil} -> - Lenses - end; - - none -> - [] - end end). - --spec insert_lens( - gleam@dict:dict(integer(), list({binary(), BON})), - binary(), - BON -) -> gleam@dict:dict(integer(), list({binary(), BON})). -insert_lens(Boxes, Label, Focal) -> - gleam@dict:update(Boxes, hash_algorithm(Label), fun(V) -> case V of - {some, Lenses} -> - gleam@list:key_set(Lenses, Label, Focal); - - none -> - [{Label, Focal}] - end end). - --spec parse_instructions(list(binary())) -> gleam@dict:dict(integer(), list({binary(), - integer()})). -parse_instructions(Insts) -> - gleam@list:fold( - Insts, - gleam@dict:new(), - fun(Acc, Inst) -> case read_instruction(Inst) of - {remove, Label} -> - remove_lens(Acc, Label); - - {insert, Label@1, Focal} -> - insert_lens(Acc, Label@1, Focal) - end end - ). - --spec focusing_power(gleam@dict:dict(integer(), list({binary(), integer()}))) -> integer(). -focusing_power(Boxes) -> - gleam@dict:fold( - Boxes, - 0, - fun(Acc, K, V) -> - Box_acc = (gleam@list:index_fold( - V, - 0, - fun(Acc@1, Lens, I) -> - Acc@1 + (erlang:element(2, Lens) * (I + 1)) - end - )), - Acc + ((K + 1) * Box_acc) - end - ). - --spec part2(binary()) -> binary(). -part2(Input) -> - _pipe = Input, - _pipe@1 = split(_pipe), - _pipe@2 = parse_instructions(_pipe@1), - _pipe@3 = focusing_power(_pipe@2), - gleam@string:inspect(_pipe@3). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day15/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 92}) - end, - _assert_subject@1 = adglent:get_input(<<"15"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day15/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 93}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache deleted file mode 100644 index bc9a034..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta deleted file mode 100644 index 2320e16..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl deleted file mode 100644 index 978ab14..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@day16_test.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(day16@day16_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|...."/utf8>>, - 46}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|...."/utf8>>, - 46}], - fun(Example) -> _pipe@1 = day16@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|...."/utf8>>, - 51}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<".|...\\.... -|.-.\\..... -.....|-... -........|. -.......... -.........\\ -..../.\\\\.. -.-.-/..|.. -.|....-|.\\ -..//.|...."/utf8>>, - 51}], - fun(Example) -> _pipe@1 = day16@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache deleted file mode 100644 index 359bdc2..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta deleted file mode 100644 index e7cf5c0..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl deleted file mode 100644 index a07c02a..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day16@solve.erl +++ /dev/null @@ -1,253 +0,0 @@ --module(day16@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([direction/0, light/0]). - --type direction() :: up | right | down | left. - --type light() :: {light, utilities@array2d:posn(), direction()}. - --spec move(light()) -> light(). -move(L) -> - {light, P, Dir} = L, - case Dir of - up -> - erlang:setelement( - 2, - L, - erlang:setelement(2, P, erlang:element(2, P) - 1) - ); - - down -> - erlang:setelement( - 2, - L, - erlang:setelement(2, P, erlang:element(2, P) + 1) - ); - - left -> - erlang:setelement( - 2, - L, - erlang:setelement(3, P, erlang:element(3, P) - 1) - ); - - right -> - erlang:setelement( - 2, - L, - erlang:setelement(3, P, erlang:element(3, P) + 1) - ) - end. - --spec transform(light(), {ok, binary()} | {error, nil}) -> list(light()). -transform(L, Cell) -> - gleam@bool:guard( - gleam@result:is_error(Cell), - [], - fun() -> - {ok, C} = case Cell of - {ok, _} -> Cell; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day16/solve"/utf8>>, - function => <<"transform"/utf8>>, - line => 33}) - end, - {light, P, Dir} = L, - case {Dir, C} of - {_, <<"."/utf8>>} -> - [L]; - - {up, <<"|"/utf8>>} -> - [L]; - - {down, <<"|"/utf8>>} -> - [L]; - - {left, <<"-"/utf8>>} -> - [L]; - - {right, <<"-"/utf8>>} -> - [L]; - - {left, <<"/"/utf8>>} -> - [{light, P, down}]; - - {down, <<"/"/utf8>>} -> - [{light, P, left}]; - - {right, <<"/"/utf8>>} -> - [{light, P, up}]; - - {up, <<"/"/utf8>>} -> - [{light, P, right}]; - - {left, <<"\\"/utf8>>} -> - [{light, P, up}]; - - {up, <<"\\"/utf8>>} -> - [{light, P, left}]; - - {right, <<"\\"/utf8>>} -> - [{light, P, down}]; - - {down, <<"\\"/utf8>>} -> - [{light, P, right}]; - - {left, <<"|"/utf8>>} -> - [{light, P, up}, {light, P, down}]; - - {right, <<"|"/utf8>>} -> - [{light, P, up}, {light, P, down}]; - - {up, <<"-"/utf8>>} -> - [{light, P, left}, {light, P, right}]; - - {down, <<"-"/utf8>>} -> - [{light, P, left}, {light, P, right}]; - - {_, _} -> - erlang:error(#{gleam_error => panic, - message => <<"unrecognized cell type"/utf8>>, - module => <<"day16/solve"/utf8>>, - function => <<"transform"/utf8>>, - line => 50}) - end - end - ). - --spec energize( - list(light()), - gleam@set:set(light()), - gleam@dict:dict(utilities@array2d:posn(), binary()) -) -> integer(). -energize(Lights, Visited, Grid) -> - Next_positions = begin - _pipe = Lights, - _pipe@1 = gleam@list:flat_map( - _pipe, - fun(L) -> - Next = move(L), - transform(Next, gleam@dict:get(Grid, erlang:element(2, Next))) - end - ), - gleam@list:filter( - _pipe@1, - fun(L@1) -> not gleam@set:contains(Visited, L@1) end - ) - end, - All_visited = gleam@set:union(gleam@set:from_list(Next_positions), Visited), - case Visited =:= All_visited of - true -> - _pipe@2 = gleam@set:fold( - Visited, - gleam@set:new(), - fun(Acc, L@2) -> - gleam@set:insert(Acc, erlang:element(2, L@2)) - end - ), - _pipe@3 = gleam@set:to_list(_pipe@2), - gleam@list:length(_pipe@3); - - false -> - energize(Next_positions, All_visited, Grid) - end. - --spec part1(binary()) -> integer(). -part1(Input) -> - Grid = utilities@array2d:parse_grid(Input), - _pipe = [{light, {posn, 0, -1}, right}], - energize(_pipe, gleam@set:new(), Grid). - --spec part2(binary()) -> integer(). -part2(Input) -> - Grid = utilities@array2d:parse_grid(Input), - {posn, Rows, Cols} = (gleam@list:fold( - gleam@dict:keys(Grid), - {posn, 0, 0}, - fun(Acc, P) -> - case (erlang:element(2, Acc) + erlang:element(3, Acc)) > (erlang:element( - 2, - P - ) - + erlang:element(3, P)) of - true -> - Acc; - - false -> - P - end - end - )), - All_starts = gleam@list:concat( - [gleam@list:map( - gleam@list:range(0, Rows), - fun(R) -> {light, {posn, R, -1}, right} end - ), - gleam@list:map( - gleam@list:range(0, Rows), - fun(R@1) -> {light, {posn, R@1, Cols + 1}, left} end - ), - gleam@list:map( - gleam@list:range(0, Cols), - fun(C) -> {light, {posn, -1, C}, down} end - ), - gleam@list:map( - gleam@list:range(0, Cols), - fun(C@1) -> {light, {posn, Rows + 1, C@1}, up} end - )] - ), - gleam@list:fold( - All_starts, - 0, - fun(Acc@1, P@1) -> - Energized = energize([P@1], gleam@set:new(), Grid), - case Acc@1 > Energized of - true -> - Acc@1; - - false -> - Energized - end - end - ). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day16/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 107}) - end, - _assert_subject@1 = adglent:get_input(<<"16"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day16/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 108}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache deleted file mode 100644 index a6202af..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta deleted file mode 100644 index 8198a7b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl deleted file mode 100644 index 38e725d..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@day17_test.erl +++ /dev/null @@ -1,52 +0,0 @@ --module(day17@day17_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"2413432311323 -3215453535623 -3255245654254 -3446585845452 -4546657867536 -1438598798454 -4457876987766 -3637877979653 -4654967986887 -4564679986453 -1224686865563 -2546548887735 -4322674655533"/utf8>>, - <<"102"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"2413432311323 -3215453535623 -3255245654254 -3446585845452 -4546657867536 -1438598798454 -4457876987766 -3637877979653 -4654967986887 -4564679986453 -1224686865563 -2546548887735 -4322674655533"/utf8>>, - <<"102"/utf8>>}], - fun(Example) -> _pipe@1 = day17@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [], - fun(Example) -> _pipe@1 = day17@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache deleted file mode 100644 index f57cf43..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta deleted file mode 100644 index de4425a..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl deleted file mode 100644 index 1eddde6..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day17@solve.erl +++ /dev/null @@ -1,231 +0,0 @@ --module(day17@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([state/0]). - --type state() :: {state, - utilities@array2d:posn(), - integer(), - utilities@array2d:posn(), - list(utilities@array2d:posn())}. - --spec same_dir(state()) -> list(utilities@array2d:posn()). -same_dir(S) -> - case erlang:element(5, S) of - [] -> - []; - - [First | _] = Deltas -> - _pipe = gleam@list:take_while(Deltas, fun(D) -> D =:= First end), - gleam@list:take(_pipe, 10) - end. - --spec make_key(state()) -> {utilities@array2d:posn(), - list(utilities@array2d:posn())}. -make_key(S) -> - {erlang:element(2, S), same_dir(S)}. - --spec is_goal(state(), integer(), utilities@array2d:posn()) -> boolean(). -is_goal(S, Min_run, Goal) -> - (Goal =:= erlang:element(2, S)) andalso (gleam@list:length(same_dir(S)) >= Min_run). - --spec eliminate_bad_neighbors( - utilities@array2d:posn(), - state(), - integer(), - integer(), - gleam@dict:dict(utilities@array2d:posn(), any()) -) -> boolean(). -eliminate_bad_neighbors(D, S, Max, Min, Grid) -> - Neighbor = utilities@array2d:add_posns(D, erlang:element(2, S)), - gleam@bool:guard( - (Neighbor =:= erlang:element(4, S)) orelse not gleam@dict:has_key( - Grid, - Neighbor - ), - false, - fun() -> case {same_dir(S), gleam@list:length(same_dir(S))} of - {[Prev | _], L} when L =:= Max -> - D /= Prev; - - {_, 0} -> - true; - - {[Prev@1 | _], L@1} when L@1 < Min -> - D =:= Prev@1; - - {_, _} -> - true - end end - ). - --spec make_state( - utilities@array2d:posn(), - state(), - gleam@dict:dict(utilities@array2d:posn(), integer()) -) -> state(). -make_state(D, S, Grid) -> - Neighbor = utilities@array2d:add_posns(D, erlang:element(2, S)), - _assert_subject = gleam@dict:get(Grid, Neighbor), - {ok, Heat_lost} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day17/solve"/utf8>>, - function => <<"make_state"/utf8>>, - line => 58}) - end, - {state, - Neighbor, - erlang:element(3, S) + Heat_lost, - erlang:element(2, S), - [D | erlang:element(5, S)]}. - --spec find_good_neighbors( - integer(), - integer(), - state(), - gleam@dict:dict(utilities@array2d:posn(), integer()) -) -> list(state()). -find_good_neighbors(Max, Min, S, Grid) -> - _pipe = [{posn, -1, 0}, {posn, 1, 0}, {posn, 0, -1}, {posn, 0, 1}], - _pipe@1 = gleam@list:filter( - _pipe, - fun(_capture) -> - eliminate_bad_neighbors(_capture, S, Max, Min, Grid) - end - ), - gleam@list:map( - _pipe@1, - fun(_capture@1) -> make_state(_capture@1, S, Grid) end - ). - --spec find_path( - gleam@dict:dict(utilities@array2d:posn(), integer()), - utilities@prioqueue:priority_queue(state()), - gleam@set:set({utilities@array2d:posn(), list(utilities@array2d:posn())}), - fun((state()) -> list(state())), - fun((state()) -> boolean()) -) -> integer(). -find_path(Grid, Queue, Seen, Get_neighbors, Is_goal) -> - _assert_subject = utilities@prioqueue:pop(Queue), - {ok, {State, Rest}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day17/solve"/utf8>>, - function => <<"find_path"/utf8>>, - line => 74}) - end, - Key = make_key( - begin - _pipe = State, - gleam@io:debug(_pipe) - end - ), - case gleam@set:contains(Seen, Key) of - true -> - find_path(Grid, Rest, Seen, Get_neighbors, Is_goal); - - false -> - Now_seen = gleam@set:insert(Seen, Key), - Neighbors = Get_neighbors(State), - case gleam@list:find(Neighbors, Is_goal) of - {ok, Final} -> - erlang:element(3, Final); - - _ -> - Now_queue = gleam@list:fold( - Neighbors, - Rest, - fun(Acc, N) -> - utilities@prioqueue:insert( - Acc, - N, - erlang:element(3, N) - ) - end - ), - find_path(Grid, Now_queue, Now_seen, Get_neighbors, Is_goal) - end - end. - --spec part1(binary()) -> binary(). -part1(Input) -> - Raw_grid = begin - _pipe = Input, - utilities@array2d:to_list_of_lists(_pipe) - end, - Grid = utilities@array2d:to_2d_intarray(Raw_grid), - Rmax = gleam@list:length(Raw_grid), - _assert_subject = begin - _pipe@1 = Raw_grid, - _pipe@2 = gleam@list:first(_pipe@1), - gleam@result:map(_pipe@2, fun gleam@list:length/1) - end, - {ok, Cmax} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day17/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 107}) - end, - Start = {state, {posn, 0, 0}, 0, {posn, 0, 0}, []}, - Goal = {posn, Rmax, Cmax}, - _pipe@3 = find_path( - Grid, - utilities@prioqueue:insert(utilities@prioqueue:new(), Start, 0), - gleam@set:new(), - fun(_capture) -> find_good_neighbors(0, 3, _capture, Grid) end, - fun(_capture@1) -> is_goal(_capture@1, 1, Goal) end - ), - gleam@string:inspect(_pipe@3). - --spec part2(binary()) -> binary(). -part2(Input) -> - _pipe = Input, - gleam@string:inspect(_pipe). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day17/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 131}) - end, - _assert_subject@1 = adglent:get_input(<<"17"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day17/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 132}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache deleted file mode 100644 index 03f5c97..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta deleted file mode 100644 index 4d0ad03..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl deleted file mode 100644 index 9763a38..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@day18_test.erl +++ /dev/null @@ -1,84 +0,0 @@ --module(day18@day18_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)"/utf8>>, - <<"62"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)"/utf8>>, - <<"62"/utf8>>}], - fun(Example) -> _pipe@1 = day18@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)"/utf8>>, - <<"952408144115"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"R 6 (#70c710) -D 5 (#0dc571) -L 2 (#5713f0) -D 2 (#d2c081) -R 2 (#59c680) -D 2 (#411b91) -L 5 (#8ceee2) -U 2 (#caa173) -L 1 (#1b58a2) -U 2 (#caa171) -R 2 (#7807d2) -U 3 (#a77fa3) -L 2 (#015232) -U 2 (#7a21e3)"/utf8>>, - <<"952408144115"/utf8>>}], - fun(Example) -> _pipe@1 = day18@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache deleted file mode 100644 index 6fa850f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta deleted file mode 100644 index 5a4d476..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl deleted file mode 100644 index 3dc5e00..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day18@solve.erl +++ /dev/null @@ -1,218 +0,0 @@ --module(day18@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([coord/0, direction/0, dig/0]). - --type coord() :: {coord, integer(), integer()}. - --type direction() :: up | right | down | left. - --type dig() :: {dig, direction(), integer()}. - --spec to_direction(binary()) -> direction(). -to_direction(C) -> - case C of - <<"R"/utf8>> -> - right; - - <<"0"/utf8>> -> - right; - - <<"D"/utf8>> -> - down; - - <<"1"/utf8>> -> - down; - - <<"L"/utf8>> -> - left; - - <<"2"/utf8>> -> - left; - - <<"U"/utf8>> -> - up; - - <<"3"/utf8>> -> - up; - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"day18/solve"/utf8>>, - function => <<"to_direction"/utf8>>, - line => 30}) - end. - --spec parse_front(binary()) -> dig(). -parse_front(Line) -> - _assert_subject = gleam@regex:from_string(<<"(.) (.*) \\(.*\\)"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day18/solve"/utf8>>, - function => <<"parse_front"/utf8>>, - line => 35}) - end, - _assert_subject@1 = gleam@regex:scan(Re, Line), - [{match, _, [{some, Dir}, {some, Dist}]}] = case _assert_subject@1 of - [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day18/solve"/utf8>>, - function => <<"parse_front"/utf8>>, - line => 36}) - end, - _assert_subject@2 = gleam@int:parse(Dist), - {ok, N} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day18/solve"/utf8>>, - function => <<"parse_front"/utf8>>, - line => 38}) - end, - {dig, to_direction(Dir), N}. - --spec parse_hex(binary()) -> dig(). -parse_hex(Line) -> - _assert_subject = gleam@regex:from_string(<<"\\(#(.....)(.)\\)"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day18/solve"/utf8>>, - function => <<"parse_hex"/utf8>>, - line => 43}) - end, - _assert_subject@1 = gleam@regex:scan(Re, Line), - [{match, _, [{some, Dist}, {some, Dir}]}] = case _assert_subject@1 of - [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day18/solve"/utf8>>, - function => <<"parse_hex"/utf8>>, - line => 44}) - end, - _assert_subject@2 = gleam@int:base_parse(Dist, 16), - {ok, N} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day18/solve"/utf8>>, - function => <<"parse_hex"/utf8>>, - line => 46}) - end, - {dig, to_direction(Dir), N}. - --spec go(coord(), dig()) -> coord(). -go(Current, Dig) -> - case Dig of - {dig, up, N} -> - {coord, erlang:element(2, Current), erlang:element(3, Current) + N}; - - {dig, right, N@1} -> - {coord, - erlang:element(2, Current) + N@1, - erlang:element(3, Current)}; - - {dig, down, N@2} -> - {coord, - erlang:element(2, Current), - erlang:element(3, Current) - N@2}; - - {dig, left, N@3} -> - {coord, - erlang:element(2, Current) - N@3, - erlang:element(3, Current)} - end. - --spec double_triangle(coord(), coord()) -> integer(). -double_triangle(C1, C2) -> - (erlang:element(2, C1) * erlang:element(3, C2)) - (erlang:element(2, C2) * erlang:element( - 3, - C1 - )). - --spec do_next_dig(list(dig()), coord(), integer(), integer()) -> integer(). -do_next_dig(Digs, Current, Area, Perimeter) -> - case Digs of - [] -> - ((gleam@int:absolute_value(Area) div 2) + (Perimeter div 2)) + 1; - - [Dig | Rest] -> - Next = go(Current, Dig), - Area@1 = Area + double_triangle(Current, Next), - Perimeter@1 = Perimeter + erlang:element(3, Dig), - do_next_dig(Rest, Next, Area@1, Perimeter@1) - end. - --spec start_dig(list(dig())) -> integer(). -start_dig(Digs) -> - do_next_dig(Digs, {coord, 0, 0}, 0, 0). - --spec solve_with(binary(), fun((binary()) -> dig())) -> binary(). -solve_with(Input, F) -> - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, F), - _pipe@3 = start_dig(_pipe@2), - gleam@string:inspect(_pipe@3). - --spec part1(binary()) -> binary(). -part1(Input) -> - solve_with(Input, fun parse_front/1). - --spec part2(binary()) -> binary(). -part2(Input) -> - solve_with(Input, fun parse_hex/1). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day18/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 101}) - end, - _assert_subject@1 = adglent:get_input(<<"18"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day18/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 102}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache deleted file mode 100644 index 3b5eab2..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta deleted file mode 100644 index e633833..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl deleted file mode 100644 index 2404595..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@day19_test.erl +++ /dev/null @@ -1,96 +0,0 @@ --module(day19@day19_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}"/utf8>>, - <<"19114"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}"/utf8>>, - <<"19114"/utf8>>}], - fun(Example) -> _pipe@1 = day19@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}"/utf8>>, - <<"167409079868000"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"px{a<2006:qkq,m>2090:A,rfg} -pv{a>1716:R,A} -lnx{m>1548:A,A} -rfg{s<537:gd,x>2440:R,A} -qs{s>3448:A,lnx} -qkq{x<1416:A,crn} -crn{x>2662:A,R} -in{s<1351:px,qqz} -qqz{s>2770:qs,m<1801:hdj,R} -gd{a>3333:R,R} -hdj{m>838:A,pv} - -{x=787,m=2655,a=1222,s=2876} -{x=1679,m=44,a=2067,s=496} -{x=2036,m=264,a=79,s=2244} -{x=2461,m=1339,a=466,s=291} -{x=2127,m=1623,a=2188,s=1013}"/utf8>>, - <<"167409079868000"/utf8>>}], - fun(Example) -> _pipe@1 = day19@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache deleted file mode 100644 index c7e00e3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta deleted file mode 100644 index 0424b05..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl deleted file mode 100644 index 242bd74..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day19@solve.erl +++ /dev/null @@ -1,459 +0,0 @@ --module(day19@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([rating/0, part/0, action/0, rule/0, interval/0, part_range/0]). - --type rating() :: xtremely_cool | musical | aerodynamic | shiny. - --type part() :: {part, integer(), integer(), integer(), integer()}. - --type action() :: accept | reject | {send_to, binary()}. - --type rule() :: {'if', rating(), gleam@order:order(), integer(), action()} | - {just, action()}. - --type interval() :: {interval, integer(), integer()}. - --type part_range() :: {part_range, - interval(), - interval(), - interval(), - interval()}. - --spec to_instruction(binary()) -> action(). -to_instruction(Rule) -> - case Rule of - <<"A"/utf8>> -> - accept; - - <<"R"/utf8>> -> - reject; - - Name -> - {send_to, Name} - end. - --spec to_rating(binary()) -> rating(). -to_rating(Rating) -> - case Rating of - <<"x"/utf8>> -> - xtremely_cool; - - <<"m"/utf8>> -> - musical; - - <<"a"/utf8>> -> - aerodynamic; - - _ -> - shiny - end. - --spec get_rating(part(), rating()) -> integer(). -get_rating(Part, Rating) -> - case Rating of - xtremely_cool -> - erlang:element(2, Part); - - musical -> - erlang:element(3, Part); - - aerodynamic -> - erlang:element(4, Part); - - shiny -> - erlang:element(5, Part) - end. - --spec to_comp(binary()) -> gleam@order:order(). -to_comp(Comp) -> - case Comp of - <<"<"/utf8>> -> - lt; - - _ -> - gt - end. - --spec to_val(binary()) -> integer(). -to_val(Val) -> - _assert_subject = gleam@int:parse(Val), - {ok, N} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"to_val"/utf8>>, - line => 100}) - end, - N. - --spec parse_rules(list(binary())) -> list(rule()). -parse_rules(Rules) -> - _assert_subject = gleam@regex:from_string(<<"(.*)(>|<)(.*):(.*)"/utf8>>), - {ok, Re_rule} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"parse_rules"/utf8>>, - line => 57}) - end, - gleam@list:map(Rules, fun(Rule) -> case gleam@regex:scan(Re_rule, Rule) of - [{match, _, [{some, R}, {some, C}, {some, T}, {some, I}]}] -> - {'if', - to_rating(R), - to_comp(C), - to_val(T), - to_instruction(I)}; - - _ -> - {just, to_instruction(Rule)} - end end). - --spec parse_workflow(binary()) -> gleam@dict:dict(binary(), list(rule())). -parse_workflow(Input) -> - _assert_subject = gleam@regex:from_string(<<"(.*){(.*)}"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"parse_workflow"/utf8>>, - line => 45}) - end, - gleam@list:fold( - gleam@string:split(Input, <<"\n"/utf8>>), - gleam@dict:new(), - fun(Acc, Line) -> - _assert_subject@1 = gleam@regex:scan(Re, Line), - [{match, _, [{some, Name}, {some, All_rules}]}] = case _assert_subject@1 of - [{match, _, [{some, _}, {some, _}]}] -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day19/solve"/utf8>>, - function => <<"parse_workflow"/utf8>>, - line => 48}) - end, - Rules = begin - _pipe = gleam@string:split(All_rules, <<","/utf8>>), - parse_rules(_pipe) - end, - gleam@dict:insert(Acc, Name, Rules) - end - ). - --spec parse_parts(binary()) -> list(part()). -parse_parts(Input) -> - _assert_subject = gleam@regex:from_string( - <<"{x=(.*),m=(.*),a=(.*),s=(.*)}"/utf8>> - ), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"parse_parts"/utf8>>, - line => 105}) - end, - gleam@list:map( - gleam@string:split(Input, <<"\n"/utf8>>), - fun(Part) -> - _assert_subject@1 = gleam@regex:scan(Re, Part), - [{match, _, [{some, X}, {some, M}, {some, A}, {some, S}]}] = case _assert_subject@1 of - [{match, _, [{some, _}, {some, _}, {some, _}, {some, _}]}] -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day19/solve"/utf8>>, - function => <<"parse_parts"/utf8>>, - line => 108}) - end, - {part, to_val(X), to_val(M), to_val(A), to_val(S)} - end - ). - --spec evaluate_rules(part(), list(rule())) -> action(). -evaluate_rules(Part, Rules) -> - case Rules of - [] -> - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"day19/solve"/utf8>>, - function => <<"evaluate_rules"/utf8>>, - line => 128}); - - [{just, Do} | _] -> - Do; - - [{'if', Rating, Comparison, Threshold, Do@1} | Rest] -> - case gleam@int:compare(get_rating(Part, Rating), Threshold) =:= Comparison of - true -> - Do@1; - - false -> - evaluate_rules(Part, Rest) - end - end. - --spec evaluate_workflow( - part(), - binary(), - gleam@dict:dict(binary(), list(rule())) -) -> integer(). -evaluate_workflow(Part, Name, Workflow) -> - _assert_subject = gleam@dict:get(Workflow, Name), - {ok, Rules} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"evaluate_workflow"/utf8>>, - line => 118}) - end, - case evaluate_rules(Part, Rules) of - accept -> - ((erlang:element(2, Part) + erlang:element(3, Part)) + erlang:element( - 4, - Part - )) - + erlang:element(5, Part); - - reject -> - 0; - - {send_to, Name@1} -> - evaluate_workflow(Part, Name@1, Workflow) - end. - --spec start_evaluating_workflow(part(), gleam@dict:dict(binary(), list(rule()))) -> integer(). -start_evaluating_workflow(Part, Workflow) -> - evaluate_workflow(Part, <<"in"/utf8>>, Workflow). - --spec part1(binary()) -> binary(). -part1(Input) -> - _assert_subject = gleam@string:split_once(Input, <<"\n\n"/utf8>>), - {ok, {Workflows_str, Parts_str}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 139}) - end, - Workflows = parse_workflow(Workflows_str), - Parts = parse_parts(Parts_str), - _pipe = gleam@list:map( - Parts, - fun(_capture) -> start_evaluating_workflow(_capture, Workflows) end - ), - _pipe@1 = gleam@int:sum(_pipe), - gleam@string:inspect(_pipe@1). - --spec size(interval()) -> integer(). -size(Interval) -> - (erlang:element(3, Interval) - erlang:element(2, Interval)) + 1. - --spec all_in_range(part_range()) -> integer(). -all_in_range(Pr) -> - ((size(erlang:element(2, Pr)) * size(erlang:element(3, Pr))) * size( - erlang:element(4, Pr) - )) - * size(erlang:element(5, Pr)). - --spec get_partrange(part_range(), rating()) -> interval(). -get_partrange(Pr, Rating) -> - case Rating of - xtremely_cool -> - erlang:element(2, Pr); - - musical -> - erlang:element(3, Pr); - - aerodynamic -> - erlang:element(4, Pr); - - shiny -> - erlang:element(5, Pr) - end. - --spec update_partrange(part_range(), rating(), interval()) -> part_range(). -update_partrange(Pr, Rating, I) -> - case Rating of - xtremely_cool -> - erlang:setelement(2, Pr, I); - - musical -> - erlang:setelement(3, Pr, I); - - aerodynamic -> - erlang:setelement(4, Pr, I); - - shiny -> - erlang:setelement(5, Pr, I) - end. - --spec evaluate_rules_on_range( - part_range(), - list(rule()), - gleam@dict:dict(binary(), list(rule())) -) -> integer(). -evaluate_rules_on_range(Pr, Rules, Workflow) -> - case Rules of - [{just, accept} | _] -> - all_in_range(Pr); - - [{just, reject} | _] -> - 0; - - [{just, {send_to, Name}} | _] -> - evaluate_workflow_on_range(Pr, Name, Workflow); - - [{'if', Rating, Comparison, T, Action} | Rest] -> - Mod_i = get_partrange(Pr, Rating), - case Comparison of - lt -> - split_range( - update_partrange( - Pr, - Rating, - {interval, erlang:element(2, Mod_i), T - 1} - ), - Action, - update_partrange( - Pr, - Rating, - {interval, T, erlang:element(3, Mod_i)} - ), - Rest, - Workflow - ); - - _ -> - split_range( - update_partrange( - Pr, - Rating, - {interval, T + 1, erlang:element(3, Mod_i)} - ), - Action, - update_partrange( - Pr, - Rating, - {interval, erlang:element(2, Mod_i), T} - ), - Rest, - Workflow - ) - end; - - [] -> - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"day19/solve"/utf8>>, - function => <<"evaluate_rules_on_range"/utf8>>, - line => 225}) - end. - --spec evaluate_workflow_on_range( - part_range(), - binary(), - gleam@dict:dict(binary(), list(rule())) -) -> integer(). -evaluate_workflow_on_range(Pr, Name, Workflow) -> - _assert_subject = gleam@dict:get(Workflow, Name), - {ok, Rules} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"evaluate_workflow_on_range"/utf8>>, - line => 191}) - end, - evaluate_rules_on_range(Pr, Rules, Workflow). - --spec part2(binary()) -> binary(). -part2(Input) -> - _assert_subject = gleam@string:split_once(Input, <<"\n\n"/utf8>>), - {ok, {Workflows_str, _}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 176}) - end, - Workflow = parse_workflow(Workflows_str), - Start = {interval, 1, 4000}, - _pipe = {part_range, Start, Start, Start, Start}, - _pipe@1 = evaluate_workflow_on_range(_pipe, <<"in"/utf8>>, Workflow), - gleam@string:inspect(_pipe@1). - --spec split_range( - part_range(), - action(), - part_range(), - list(rule()), - gleam@dict:dict(binary(), list(rule())) -) -> integer(). -split_range(Keep, Action, Pass, Rest, Workflow) -> - gleam@int:add( - evaluate_rules_on_range(Keep, [{just, Action}], Workflow), - evaluate_rules_on_range(Pass, Rest, Workflow) - ). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day19/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 243}) - end, - _assert_subject@1 = adglent:get_input(<<"19"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day19/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 244}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache deleted file mode 100644 index 67b16ce..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta deleted file mode 100644 index 54af03d..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl deleted file mode 100644 index 8c7ab53..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@day1_test.erl +++ /dev/null @@ -1,50 +0,0 @@ --module(day1@day1_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"1abc2 -pqr3stu8vwx -a1b2c3d4e5f -treb7uchet"/utf8>>, - <<"142"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"1abc2 -pqr3stu8vwx -a1b2c3d4e5f -treb7uchet"/utf8>>, - <<"142"/utf8>>}], - fun(Example) -> _pipe@1 = day1@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen"/utf8>>, - <<"281"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen"/utf8>>, - <<"281"/utf8>>}], - fun(Example) -> _pipe@1 = day1@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache deleted file mode 100644 index ea9b785..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta deleted file mode 100644 index 8291feb..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl deleted file mode 100644 index 15dd24e..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day1@solve.erl +++ /dev/null @@ -1,118 +0,0 @@ --module(day1@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). - --spec part1(binary()) -> binary(). -part1(Input) -> - _assert_subject = gleam@regex:from_string(<<"[1-9]"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day1/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 9}) - end, - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@2 = gleam@list:fold( - _pipe@1, - 0, - fun(Acc, S) -> - Matches = gleam@regex:scan(Re, S), - _assert_subject@1 = gleam@list:first(Matches), - {ok, {match, First, _}} = case _assert_subject@1 of - {ok, {match, _, _}} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day1/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 18}) - end, - _assert_subject@2 = gleam@list:last(Matches), - {ok, {match, Last, _}} = case _assert_subject@2 of - {ok, {match, _, _}} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day1/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 19}) - end, - _assert_subject@3 = gleam@int:parse(<>), - {ok, I} = case _assert_subject@3 of - {ok, _} -> _assert_subject@3; - _assert_fail@3 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@3, - module => <<"day1/solve"/utf8>>, - function => <<"part1"/utf8>>, - line => 20}) - end, - Acc + I - end - ), - gleam@string:inspect(_pipe@2). - --spec part2(binary()) -> binary(). -part2(Input) -> - _pipe = gleam@list:fold( - [{<<"one"/utf8>>, <<"o1e"/utf8>>}, - {<<"two"/utf8>>, <<"t2o"/utf8>>}, - {<<"three"/utf8>>, <<"t3e"/utf8>>}, - {<<"four"/utf8>>, <<"4"/utf8>>}, - {<<"five"/utf8>>, <<"5e"/utf8>>}, - {<<"six"/utf8>>, <<"6"/utf8>>}, - {<<"seven"/utf8>>, <<"7n"/utf8>>}, - {<<"eight"/utf8>>, <<"e8t"/utf8>>}, - {<<"nine"/utf8>>, <<"n9e"/utf8>>}], - Input, - fun(Acc, Sub) -> - {From, To} = Sub, - gleam@string:replace(Acc, From, To) - end - ), - part1(_pipe). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day1/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 52}) - end, - _assert_subject@1 = adglent:get_input(<<"1"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day1/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 53}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache deleted file mode 100644 index 7b0c4ff..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta deleted file mode 100644 index 684b2f3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl deleted file mode 100644 index 145fc1c..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@day20_test.erl +++ /dev/null @@ -1,52 +0,0 @@ --module(day20@day20_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"broadcaster -> a, b, c -%a -> b -%b -> c -%c -> inv -&inv -> a"/utf8>>, - <<"32000000"/utf8>>}, - {example, - <<"broadcaster -> a -%a -> inv, con -&inv -> b -%b -> con -&con -> output -output -> "/utf8>>, - <<"11687500"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"broadcaster -> a, b, c -%a -> b -%b -> c -%c -> inv -&inv -> a"/utf8>>, - <<"32000000"/utf8>>}, - {example, - <<"broadcaster -> a -%a -> inv, con -&inv -> b -%b -> con -&con -> output -output -> "/utf8>>, - <<"11687500"/utf8>>}], - fun(Example) -> _pipe@1 = day20@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [], - fun(Example) -> _pipe@1 = day20@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache deleted file mode 100644 index 74900a3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta deleted file mode 100644 index e37bfb8..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl deleted file mode 100644 index a4442a0..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day20@solve.erl +++ /dev/null @@ -1,237 +0,0 @@ --module(day20@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([node_/0, tone/0, power/0, tone_pitch/0]). - --type node_() :: {broadcaster, list(binary())} | - {flipflop, list(binary()), power()} | - {conjunction, list(binary()), gleam@dict:dict(binary(), tone_pitch())} | - {ground, list(binary())}. - --type tone() :: {tone, binary(), binary(), tone_pitch()}. - --type power() :: on | off. - --type tone_pitch() :: low | high. - --spec flip_power(power()) -> power(). -flip_power(P) -> - case P of - on -> - off; - - off -> - on - end. - --spec flip_flop_pitch(power()) -> tone_pitch(). -flip_flop_pitch(P) -> - case P of - off -> - high; - - on -> - low - end. - --spec parse_node(binary()) -> {binary(), node_()}. -parse_node(Input) -> - _assert_subject = gleam@string:split(Input, <<" -> "/utf8>>), - [Full_name, Children_str] = case _assert_subject of - [_, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day20/solve"/utf8>>, - function => <<"parse_node"/utf8>>, - line => 45}) - end, - Children = gleam@string:split(Children_str, <<", "/utf8>>), - case Full_name of - <<"%"/utf8, Name/binary>> -> - {Name, {flipflop, Children, off}}; - - <<"&"/utf8, Name@1/binary>> -> - {Name@1, {conjunction, Children, gleam@dict:new()}}; - - <<"broadcaster"/utf8>> -> - {<<"broadcaster"/utf8>>, {broadcaster, Children}}; - - Name@2 -> - {Name@2, {ground, []}} - end. - --spec to_initial_state(list({binary(), node_()})) -> gleam@dict:dict(binary(), node_()). -to_initial_state(Nodes) -> - Node_dict = gleam@dict:from_list(Nodes), - Node_names = gleam@dict:keys(Node_dict), - gleam@dict:map_values(Node_dict, fun(Name, Node) -> case Node of - {conjunction, Chs, _} -> - _pipe = Node_names, - _pipe@1 = gleam@list:filter( - _pipe, - fun(N) -> - _assert_subject = gleam@dict:get(Node_dict, N), - {ok, Node@1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day20/solve"/utf8>>, - function => <<"to_initial_state"/utf8>>, - line => 65}) - end, - gleam@list:contains(erlang:element(2, Node@1), Name) - end - ), - _pipe@2 = gleam@list:map( - _pipe@1, - fun(N@1) -> {N@1, low} end - ), - _pipe@3 = gleam@dict:from_list(_pipe@2), - (fun(Dict) -> {conjunction, Chs, Dict} end)(_pipe@3); - - Other -> - Other - end end). - --spec press_button_once( - {gleam@dict:dict(binary(), node_()), integer(), integer()}, - gleam@queue:queue(tone()) -) -> {gleam@dict:dict(binary(), node_()), integer(), integer()}. -press_button_once(Initial, Queue) -> - {Nodes, High, Low} = Initial, - gleam@bool:guard( - gleam@queue:is_empty(Queue), - Initial, - fun() -> - _assert_subject = gleam@queue:pop_front(Queue), - {ok, {{tone, From_name, To_name, Pitch} = Tone, Rest}} = case _assert_subject of - {ok, {{tone, _, _, _}, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day20/solve"/utf8>>, - function => <<"press_button_once"/utf8>>, - line => 81}) - end, - gleam@io:debug(Tone), - _assert_subject@1 = gleam@dict:get(Nodes, To_name), - {ok, To_node} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day20/solve"/utf8>>, - function => <<"press_button_once"/utf8>>, - line => 84}) - end, - case To_node of - {broadcaster, Children} -> - _pipe = gleam@list:fold( - Children, - Rest, - fun(Acc, C) -> - gleam@queue:push_back( - Acc, - {tone, To_name, C, Pitch} - ) - end - ), - press_button_once(Initial, _pipe); - - {conjunction, _, _} -> - press_button_once(Initial, Rest); - - {flipflop, _, _} when Pitch =:= high -> - press_button_once(Initial, Rest); - - {flipflop, Children@1, State} -> - Updated_nodes = gleam@dict:insert( - Nodes, - To_name, - {flipflop, Children@1, flip_power(State)} - ), - Updated_queue = gleam@list:fold( - Children@1, - Rest, - fun(Acc@1, C@1) -> - gleam@queue:push_back( - Acc@1, - {tone, To_name, C@1, flip_flop_pitch(State)} - ) - end - ), - press_button_once({Updated_nodes, 0, 0}, Updated_queue); - - {ground, _} -> - press_button_once(Initial, Rest) - end - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - Initial_state = begin - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, fun parse_node/1), - to_initial_state(_pipe@2) - end, - press_button_once( - {Initial_state, 0, 1}, - begin - _pipe@3 = [{tone, <<"button"/utf8>>, <<"broadcaster"/utf8>>, low}], - gleam@queue:from_list(_pipe@3) - end - ), - <<"1"/utf8>>. - --spec part2(binary()) -> any(). -part2(Input) -> - erlang:error(#{gleam_error => todo, - message => <<"Implement solution to part 2"/utf8>>, - module => <<"day20/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 130}). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day20/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 134}) - end, - _assert_subject@1 = adglent:get_input(<<"20"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day20/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 135}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache deleted file mode 100644 index 8014a5c..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta deleted file mode 100644 index 7f44851..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl deleted file mode 100644 index 8795f58..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@day2_test.erl +++ /dev/null @@ -1,54 +0,0 @@ --module(day2@day2_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, - 8}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, - 8}], - fun(Example) -> _pipe@1 = day2@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, - 2286}, - {example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green"/utf8>>, - 48}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green -Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue -Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red -Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red -Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"/utf8>>, - 2286}, - {example, - <<"Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green"/utf8>>, - 48}], - fun(Example) -> _pipe@1 = day2@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache deleted file mode 100644 index 7533395..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta deleted file mode 100644 index 237d90e..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl deleted file mode 100644 index 0cd8105..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day2@solve.erl +++ /dev/null @@ -1,166 +0,0 @@ --module(day2@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([game/0]). - --type game() :: {game, integer(), integer(), integer()}. - --spec parse(binary()) -> list(list(game())). -parse(Input) -> - gleam@list:map( - gleam@string:split(Input, <<"\n"/utf8>>), - fun(Line) -> - _assert_subject = gleam@string:split(Line, <<": "/utf8>>), - [_, Rounds] = case _assert_subject of - [_, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day2/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 13}) - end, - gleam@list:map( - gleam@string:split(Rounds, <<"; "/utf8>>), - fun(Match) -> - gleam@list:fold( - gleam@string:split(Match, <<", "/utf8>>), - {game, 0, 0, 0}, - fun(Acc, Draw) -> - _assert_subject@1 = gleam@string:split_once( - Draw, - <<" "/utf8>> - ), - {ok, {N_str, Color}} = case _assert_subject@1 of - {ok, {_, _}} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day2/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 19}) - end, - _assert_subject@2 = gleam@int:parse(N_str), - {ok, N} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day2/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 20}) - end, - case Color of - <<"red"/utf8>> -> - erlang:setelement(2, Acc, N); - - <<"blue"/utf8>> -> - erlang:setelement(3, Acc, N); - - <<"green"/utf8>> -> - erlang:setelement(4, Acc, N); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"unrecognized color"/utf8>>, - module => <<"day2/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 25}) - end - end - ) - end - ) - end - ). - --spec part1(binary()) -> integer(). -part1(Input) -> - gleam@list:index_fold( - parse(Input), - 0, - fun(Acc, Game, I) -> - case gleam@list:any( - Game, - fun(M) -> - ((erlang:element(2, M) > 12) orelse (erlang:element(4, M) > 13)) - orelse (erlang:element(3, M) > 14) - end - ) of - false -> - (Acc + I) + 1; - - true -> - Acc - end - end - ). - --spec part2(binary()) -> integer(). -part2(Input) -> - _pipe = (gleam@list:map( - parse(Input), - fun(Game) -> - gleam@list:fold( - Game, - {game, 0, 0, 0}, - fun(Acc, Match) -> - {game, Red, Blue, Green} = Match, - {game, - gleam@int:max(Red, erlang:element(2, Acc)), - gleam@int:max(Blue, erlang:element(3, Acc)), - gleam@int:max(Green, erlang:element(4, Acc))} - end - ) - end - )), - gleam@list:fold( - _pipe, - 0, - fun(Acc@1, G) -> - Acc@1 + ((erlang:element(2, G) * erlang:element(3, G)) * erlang:element( - 4, - G - )) - end - ). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day2/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 55}) - end, - _assert_subject@1 = adglent:get_input(<<"2"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day2/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 56}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache deleted file mode 100644 index a3b1377..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta deleted file mode 100644 index f603e6b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl deleted file mode 100644 index 31de387..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@day3_test.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(day3@day3_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598.."/utf8>>, - 4361}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598.."/utf8>>, - 4361}], - fun(Example) -> _pipe@1 = day3@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598.."/utf8>>, - 467835}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"467..114.. -...*...... -..35..633. -......#... -617*...... -.....+.58. -..592..... -......755. -...$.*.... -.664.598.."/utf8>>, - 467835}], - fun(Example) -> _pipe@1 = day3@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache deleted file mode 100644 index 13bc7af..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta deleted file mode 100644 index 7961cc1..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl deleted file mode 100644 index d4df3d6..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day3@solve.erl +++ /dev/null @@ -1,254 +0,0 @@ --module(day3@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([coord/0, symbol_kind/0, symbol/0, cell/0, part/0]). - --type coord() :: {coord, integer(), integer()}. - --type symbol_kind() :: gear | something_else. - --type symbol() :: {number, integer()} | {symbol, symbol_kind()} | empty. - --type cell() :: {cell, coord(), symbol()}. - --type part() :: {part, list(coord()), integer()}. - --spec to_symbol(binary()) -> symbol(). -to_symbol(C) -> - case {gleam@int:parse(C), C} of - {{ok, N}, _} -> - {number, N}; - - {_, <<"."/utf8>>} -> - empty; - - {_, <<"*"/utf8>>} -> - {symbol, gear}; - - {_, _} -> - {symbol, something_else} - end. - --spec to_board(binary()) -> gleam@dict:dict(coord(), symbol()). -to_board(Input) -> - _pipe = (gleam@list:index_map( - gleam@string:split(Input, <<"\n"/utf8>>), - fun(Y, R) -> - gleam@list:index_map( - gleam@string:to_graphemes(R), - fun(X, C) -> {{coord, X, Y}, to_symbol(C)} end - ) - end - )), - _pipe@1 = gleam@list:flatten(_pipe), - gleam@dict:from_list(_pipe@1). - --spec cell_compare(cell(), cell()) -> gleam@order:order(). -cell_compare(A, B) -> - case gleam@int:compare( - erlang:element(3, erlang:element(2, A)), - erlang:element(3, erlang:element(2, B)) - ) of - eq -> - gleam@int:compare( - erlang:element(2, erlang:element(2, A)), - erlang:element(2, erlang:element(2, B)) - ); - - Other -> - Other - end. - --spec find_all_part_digits(gleam@dict:dict(coord(), symbol())) -> list(cell()). -find_all_part_digits(B) -> - _pipe = B, - _pipe@1 = gleam@dict:filter(_pipe, fun(_, V) -> case V of - {number, _} -> - true; - - _ -> - false - end end), - _pipe@2 = gleam@dict:to_list(_pipe@1), - _pipe@3 = gleam@list:map( - _pipe@2, - fun(Tup) -> {cell, erlang:element(1, Tup), erlang:element(2, Tup)} end - ), - gleam@list:sort(_pipe@3, fun cell_compare/2). - --spec do_parts(list(cell()), list(part())) -> list(part()). -do_parts(Cells, Parts) -> - case Cells of - [] -> - Parts; - - [{cell, Next, {number, N}} | T] -> - case Parts of - [] -> - do_parts(T, [{part, [Next], N} | Parts]); - - [{part, [Prev | _] = Coords, N0} | Rest_parts] -> - case {(erlang:element(2, Next) - erlang:element(2, Prev)), - (erlang:element(3, Next) - erlang:element(3, Prev))} of - {1, 0} -> - do_parts( - T, - [{part, [Next | Coords], (N0 * 10) + N} | - Rest_parts] - ); - - {_, _} -> - do_parts(T, [{part, [Next], N} | Parts]) - end; - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"day3/solve"/utf8>>, - function => <<"do_parts"/utf8>>, - line => 90}) - end; - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"day3/solve"/utf8>>, - function => <<"do_parts"/utf8>>, - line => 93}) - end. - --spec to_parts(list(cell())) -> list(part()). -to_parts(Cells) -> - do_parts(Cells, []). - --spec all_neighbors(coord()) -> list(coord()). -all_neighbors(C) -> - gleam@list:flat_map( - [-1, 0, 1], - fun(Dx) -> gleam@list:filter_map([-1, 0, 1], fun(Dy) -> case {Dx, Dy} of - {0, 0} -> - {error, nil}; - - {_, _} -> - {ok, - {coord, - erlang:element(2, C) + Dx, - erlang:element(3, C) + Dy}} - end end) end - ). - --spec sum_valid_parts(integer(), part(), gleam@dict:dict(coord(), symbol())) -> integer(). -sum_valid_parts(Acc, Part, Board) -> - Neighbors = begin - _pipe = erlang:element(2, Part), - _pipe@1 = gleam@list:flat_map(_pipe, fun all_neighbors/1), - gleam@list:unique(_pipe@1) - end, - Sym = [{ok, {symbol, gear}}, {ok, {symbol, something_else}}], - case gleam@list:any( - Neighbors, - fun(C) -> gleam@list:contains(Sym, gleam@dict:get(Board, C)) end - ) of - true -> - Acc + erlang:element(3, Part); - - false -> - Acc - end. - --spec part1(binary()) -> integer(). -part1(Input) -> - Board = to_board(Input), - _pipe = Board, - _pipe@1 = find_all_part_digits(_pipe), - _pipe@2 = to_parts(_pipe@1), - gleam@list:fold( - _pipe@2, - 0, - fun(Acc, P) -> sum_valid_parts(Acc, P, Board) end - ). - --spec to_part_with_neighbors(part()) -> part(). -to_part_with_neighbors(Part) -> - _pipe = erlang:element(2, Part), - _pipe@1 = gleam@list:flat_map(_pipe, fun all_neighbors/1), - _pipe@2 = gleam@list:unique(_pipe@1), - {part, _pipe@2, erlang:element(3, Part)}. - --spec find_part_numbers_near_gear(coord(), list(part())) -> list(integer()). -find_part_numbers_near_gear(Gear, Parts) -> - gleam@list:filter_map( - Parts, - fun(Part) -> case gleam@list:contains(erlang:element(2, Part), Gear) of - true -> - {ok, erlang:element(3, Part)}; - - false -> - {error, nil} - end end - ). - --spec to_sum_of_gear_ratios(list(list(integer()))) -> integer(). -to_sum_of_gear_ratios(Adjacent_parts) -> - gleam@list:fold(Adjacent_parts, 0, fun(Acc, Ps) -> case Ps of - [P1, P2] -> - Acc + (P1 * P2); - - _ -> - Acc - end end). - --spec part2(binary()) -> integer(). -part2(Input) -> - Board = to_board(Input), - Parts = begin - _pipe = Board, - _pipe@1 = find_all_part_digits(_pipe), - _pipe@2 = to_parts(_pipe@1), - gleam@list:map(_pipe@2, fun to_part_with_neighbors/1) - end, - _pipe@3 = Board, - _pipe@4 = gleam@dict:filter(_pipe@3, fun(_, V) -> V =:= {symbol, gear} end), - _pipe@5 = gleam@dict:keys(_pipe@4), - _pipe@6 = gleam@list:map( - _pipe@5, - fun(_capture) -> find_part_numbers_near_gear(_capture, Parts) end - ), - to_sum_of_gear_ratios(_pipe@6). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day3/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 168}) - end, - _assert_subject@1 = adglent:get_input(<<"3"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day3/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 169}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache deleted file mode 100644 index 0e2ffd5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta deleted file mode 100644 index 5874661..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl deleted file mode 100644 index 6044cef..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@day4_test.erl +++ /dev/null @@ -1,52 +0,0 @@ --module(day4@day4_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, - 13}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, - 13}], - fun(Example) -> _pipe@1 = day4@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, - 30}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 -Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 -Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 -Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 -Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 -Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11"/utf8>>, - 30}], - fun(Example) -> _pipe@1 = day4@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache deleted file mode 100644 index b49cc67..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta deleted file mode 100644 index e4e4c35..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl deleted file mode 100644 index 8feb45a..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day4@solve.erl +++ /dev/null @@ -1,169 +0,0 @@ --module(day4@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([card/0]). - --type card() :: {card, integer(), integer()}. - --spec numbers_to_set(binary()) -> gleam@set:set(integer()). -numbers_to_set(Str) -> - _pipe = Str, - _pipe@1 = gleam@string:split(_pipe, <<" "/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, fun gleam@int:parse/1), - _pipe@3 = gleam@result:values(_pipe@2), - gleam@set:from_list(_pipe@3). - --spec parse_card(binary()) -> card(). -parse_card(Card) -> - _assert_subject = gleam@string:split_once(Card, <<": "/utf8>>), - {ok, {<<"Card"/utf8, N_str/binary>>, Rest}} = case _assert_subject of - {ok, {<<"Card"/utf8, _/binary>>, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day4/solve"/utf8>>, - function => <<"parse_card"/utf8>>, - line => 25}) - end, - _assert_subject@1 = gleam@string:split_once(Rest, <<" | "/utf8>>), - {ok, {Winning_str, Has_str}} = case _assert_subject@1 of - {ok, {_, _}} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day4/solve"/utf8>>, - function => <<"parse_card"/utf8>>, - line => 26}) - end, - _assert_subject@2 = gleam@int:parse(gleam@string:trim(N_str)), - {ok, N} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day4/solve"/utf8>>, - function => <<"parse_card"/utf8>>, - line => 27}) - end, - Winning = numbers_to_set(Winning_str), - Has = numbers_to_set(Has_str), - Winners = gleam@set:size(gleam@set:intersection(Winning, Has)), - {card, N, Winners}. - --spec win_points(integer()) -> integer(). -win_points(N) -> - gleam@bool:guard(N < 2, N, fun() -> 2 * win_points(N - 1) end). - --spec part1(binary()) -> integer(). -part1(Input) -> - gleam@list:fold( - gleam@string:split(Input, <<"\n"/utf8>>), - 0, - fun(Acc, C) -> _pipe = C, - _pipe@1 = parse_card(_pipe), - _pipe@2 = (fun(C@1) -> win_points(erlang:element(3, C@1)) end)( - _pipe@1 - ), - gleam@int:add(_pipe@2, Acc) end - ). - --spec update_counts(integer(), card(), gleam@dict:dict(integer(), integer())) -> gleam@dict:dict(integer(), integer()). -update_counts(N, Card, Count) -> - _assert_subject = gleam@dict:get(Count, erlang:element(2, Card)), - {ok, Bonus} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day4/solve"/utf8>>, - function => <<"update_counts"/utf8>>, - line => 65}) - end, - gleam@list:fold( - gleam@list:range( - erlang:element(2, Card) + 1, - erlang:element(2, Card) + N - ), - Count, - fun(Acc, N@1) -> gleam@dict:update(Acc, N@1, fun(C) -> case C of - {some, I} -> - I + Bonus; - - none -> - erlang:error(#{gleam_error => panic, - message => <<"won a card that doesn't exist in the card pile"/utf8>>, - module => <<"day4/solve"/utf8>>, - function => <<"update_counts"/utf8>>, - line => 70}) - end end) end - ). - --spec win_more_cards(list(binary()), gleam@dict:dict(integer(), integer())) -> integer(). -win_more_cards(Cards, Count) -> - case Cards of - [] -> - _pipe = Count, - _pipe@1 = gleam@dict:values(_pipe), - gleam@int:sum(_pipe@1); - - [Raw_card | Rest] -> - Card = parse_card(Raw_card), - case erlang:element(3, Card) of - 0 -> - win_more_cards(Rest, Count); - - N -> - win_more_cards(Rest, update_counts(N, Card, Count)) - end - end. - --spec part2(binary()) -> integer(). -part2(Input) -> - Cards = gleam@string:split(Input, <<"\n"/utf8>>), - Count = begin - _pipe = gleam@list:range(1, gleam@list:length(Cards)), - _pipe@1 = gleam@list:map(_pipe, fun(N) -> {N, 1} end), - gleam@dict:from_list(_pipe@1) - end, - win_more_cards(Cards, Count). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day4/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 86}) - end, - _assert_subject@1 = adglent:get_input(<<"4"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day4/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 87}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache deleted file mode 100644 index 0b18c75..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta deleted file mode 100644 index 4224316..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl deleted file mode 100644 index c3fe14d..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@day5_test.erl +++ /dev/null @@ -1,160 +0,0 @@ --module(day5@day5_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4"/utf8>>, - <<"35"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4"/utf8>>, - <<"35"/utf8>>}], - fun(Example) -> _pipe@1 = day5@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4"/utf8>>, - <<"46"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"seeds: 79 14 55 13 - -seed-to-soil map: -50 98 2 -52 50 48 - -soil-to-fertilizer map: -0 15 37 -37 52 2 -39 0 15 - -fertilizer-to-water map: -49 53 8 -0 11 42 -42 0 7 -57 7 4 - -water-to-light map: -88 18 7 -18 25 70 - -light-to-temperature map: -45 77 23 -81 45 19 -68 64 13 - -temperature-to-humidity map: -0 69 1 -1 0 69 - -humidity-to-location map: -60 56 37 -56 93 4"/utf8>>, - <<"46"/utf8>>}], - fun(Example) -> _pipe@1 = day5@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache deleted file mode 100644 index b5e7372..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta deleted file mode 100644 index 8a8b5b8..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl deleted file mode 100644 index f47ab25..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day5@solve.erl +++ /dev/null @@ -1,269 +0,0 @@ --module(day5@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([almanac/0, mapping_range/0, seed_range/0]). - --type almanac() :: {almanac, list(integer()), list(list(mapping_range()))}. - --type mapping_range() :: {m_range, integer(), integer(), integer()}. - --type seed_range() :: {s_range, integer(), integer()}. - --spec string_to_int_list(binary()) -> list(integer()). -string_to_int_list(Str) -> - _pipe = Str, - _pipe@1 = gleam@string:split(_pipe, <<" "/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, fun gleam@int:parse/1), - gleam@result:values(_pipe@2). - --spec parse_mrange(binary()) -> mapping_range(). -parse_mrange(Str) -> - _assert_subject = string_to_int_list(Str), - [Destination, Source, Range_width] = case _assert_subject of - [_, _, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day5/solve"/utf8>>, - function => <<"parse_mrange"/utf8>>, - line => 55}) - end, - {m_range, Source, (Source + Range_width) - 1, Destination - Source}. - --spec parse_mapper(list(binary())) -> list(mapping_range()). -parse_mapper(Strs) -> - [_ | Raw_ranges] = case Strs of - [_ | _] -> Strs; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day5/solve"/utf8>>, - function => <<"parse_mapper"/utf8>>, - line => 49}) - end, - _pipe = gleam@list:map(Raw_ranges, fun parse_mrange/1), - gleam@list:sort( - _pipe, - fun(A, B) -> - gleam@int:compare(erlang:element(2, A), erlang:element(2, B)) - end - ). - --spec parse_input(binary()) -> almanac(). -parse_input(Input) -> - _assert_subject = gleam@string:split(Input, <<"\n\n"/utf8>>), - [<<"seeds: "/utf8, Raw_seeds/binary>> | Raw_mappers] = case _assert_subject of - [<<"seeds: "/utf8, _/binary>> | _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day5/solve"/utf8>>, - function => <<"parse_input"/utf8>>, - line => 29}) - end, - Seeds = string_to_int_list(Raw_seeds), - Mappers = gleam@list:map( - Raw_mappers, - gleam@function:compose( - fun(_capture) -> gleam@string:split(_capture, <<"\n"/utf8>>) end, - fun parse_mapper/1 - ) - ), - {almanac, Seeds, Mappers}. - --spec correspond(integer(), list(mapping_range())) -> integer(). -correspond(N, Mapper) -> - gleam@list:fold_until( - Mapper, - N, - fun(Acc, Mrange) -> - case (erlang:element(2, Mrange) =< Acc) andalso (Acc =< erlang:element( - 3, - Mrange - )) of - true -> - {stop, Acc + erlang:element(4, Mrange)}; - - false -> - {continue, Acc} - end - end - ). - --spec part1(binary()) -> binary(). -part1(Input) -> - {almanac, Seeds, Mappers} = parse_input(Input), - _pipe = gleam@list:map( - Seeds, - fun(_capture) -> - gleam@list:fold(Mappers, _capture, fun correspond/2) - end - ), - _pipe@1 = gleam@list:reduce(_pipe, fun gleam@int:min/2), - _pipe@2 = gleam@result:unwrap(_pipe@1, 0), - gleam@string:inspect(_pipe@2). - --spec transform_range(seed_range(), mapping_range()) -> seed_range(). -transform_range(R, Mapper) -> - {s_range, - erlang:element(2, R) + erlang:element(4, Mapper), - erlang:element(3, R) + erlang:element(4, Mapper)}. - --spec do_remap_range(seed_range(), list(mapping_range()), list(seed_range())) -> list(seed_range()). -do_remap_range(R, Mapper, Acc) -> - case Mapper of - [] -> - [R | Acc]; - - [M | _] when erlang:element(3, R) < erlang:element(2, M) -> - [R | Acc]; - - [M@1 | Ms] when erlang:element(2, R) > erlang:element(3, M@1) -> - do_remap_range(R, Ms, Acc); - - [M@2 | _] when (erlang:element(2, R) >= erlang:element(2, M@2)) andalso (erlang:element( - 3, - R - ) =< erlang:element(3, M@2)) -> - [transform_range(R, M@2) | Acc]; - - [M@3 | _] when (erlang:element(2, R) < erlang:element(2, M@3)) andalso (erlang:element( - 3, - R - ) =< erlang:element(3, M@3)) -> - [{s_range, erlang:element(2, R), erlang:element(2, M@3) - 1}, - transform_range( - {s_range, erlang:element(2, M@3), erlang:element(3, R)}, - M@3 - ) | - Acc]; - - [M@4 | Ms@1] when (erlang:element(2, R) >= erlang:element(2, M@4)) andalso (erlang:element( - 3, - R - ) > erlang:element(3, M@4)) -> - do_remap_range( - {s_range, erlang:element(3, M@4) + 1, erlang:element(3, R)}, - Ms@1, - [transform_range( - {s_range, erlang:element(2, R), erlang:element(3, M@4)}, - M@4 - ) | - Acc] - ); - - [M@5 | Ms@2] -> - do_remap_range( - {s_range, erlang:element(3, M@5) + 1, erlang:element(3, R)}, - Ms@2, - [{s_range, erlang:element(2, R), erlang:element(2, M@5) - 1}, - transform_range( - {s_range, - erlang:element(2, M@5), - erlang:element(3, M@5)}, - M@5 - ) | - Acc] - ) - end. - --spec remap_range(seed_range(), list(mapping_range())) -> list(seed_range()). -remap_range(R, Mapper) -> - do_remap_range(R, Mapper, []). - --spec remap_all_seed_ranges(list(seed_range()), list(list(mapping_range()))) -> list(seed_range()). -remap_all_seed_ranges(Srs, Mappers) -> - case Mappers of - [] -> - Srs; - - [Mapper | Rest] -> - _pipe = gleam@list:flat_map( - Srs, - fun(_capture) -> remap_range(_capture, Mapper) end - ), - remap_all_seed_ranges(_pipe, Rest) - end. - --spec part2(binary()) -> binary(). -part2(Input) -> - {almanac, Seeds, Mappers} = parse_input(Input), - _assert_subject = begin - _pipe = Seeds, - _pipe@1 = gleam@list:sized_chunk(_pipe, 2), - _pipe@3 = gleam@list:map( - _pipe@1, - fun(Chunk) -> - [Start, Length] = case Chunk of - [_, _] -> Chunk; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day5/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 87}) - end, - _pipe@2 = [{s_range, Start, (Start + Length) - 1}], - remap_all_seed_ranges(_pipe@2, Mappers) - end - ), - _pipe@4 = gleam@list:flatten(_pipe@3), - gleam@list:sort( - _pipe@4, - fun(A, B) -> - gleam@int:compare(erlang:element(2, A), erlang:element(2, B)) - end - ) - end, - [{s_range, Answer, _} | _] = case _assert_subject of - [{s_range, _, _} | _] -> _assert_subject; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day5/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 83}) - end, - gleam@string:inspect(Answer). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day5/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 155}) - end, - _assert_subject@1 = adglent:get_input(<<"5"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day5/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 156}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache deleted file mode 100644 index ebca7b3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta deleted file mode 100644 index f9fa286..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl deleted file mode 100644 index a306363..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@day6_test.erl +++ /dev/null @@ -1,36 +0,0 @@ --module(day6@day6_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"Time: 7 15 30 -Distance: 9 40 200"/utf8>>, - <<"288"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Time: 7 15 30 -Distance: 9 40 200"/utf8>>, - <<"288"/utf8>>}], - fun(Example) -> _pipe@1 = day6@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"Time: 7 15 30 -Distance: 9 40 200"/utf8>>, - <<"71503"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"Time: 7 15 30 -Distance: 9 40 200"/utf8>>, - <<"71503"/utf8>>}], - fun(Example) -> _pipe@1 = day6@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache deleted file mode 100644 index 2fa1771..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta deleted file mode 100644 index a546033..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl deleted file mode 100644 index 86a8033..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day6@solve.erl +++ /dev/null @@ -1,131 +0,0 @@ --module(day6@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([race/0]). - --type race() :: {race, integer(), integer()}. - --spec parse_with_bad_kerning(binary()) -> list(race()). -parse_with_bad_kerning(Input) -> - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@5 = gleam@list:map(_pipe@1, fun(Str) -> _pipe@2 = Str, - _pipe@3 = gleam@string:split(_pipe@2, <<" "/utf8>>), - _pipe@4 = gleam@list:map(_pipe@3, fun gleam@int:parse/1), - gleam@result:values(_pipe@4) end), - _pipe@6 = gleam@list:transpose(_pipe@5), - gleam@list:map( - _pipe@6, - fun(Ns) -> - [T, D] = case Ns of - [_, _] -> Ns; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day6/solve"/utf8>>, - function => <<"parse_with_bad_kerning"/utf8>>, - line => 23}) - end, - {race, T, D} - end - ). - --spec find_bound(race(), integer(), integer()) -> integer(). -find_bound(Race, Button_time, Step) -> - Travel_time = erlang:element(2, Race) - Button_time, - case (Button_time * Travel_time) > erlang:element(3, Race) of - true -> - Button_time; - - false -> - find_bound(Race, Button_time + Step, Step) - end. - --spec lower_bound(race()) -> integer(). -lower_bound(Race) -> - find_bound(Race, 1, 1). - --spec upper_bound(race()) -> integer(). -upper_bound(Race) -> - find_bound(Race, erlang:element(2, Race), -1). - --spec part1(binary()) -> binary(). -part1(Input) -> - _pipe = (gleam@list:fold( - parse_with_bad_kerning(Input), - 1, - fun(Acc, Race) -> - Acc * ((upper_bound(Race) - lower_bound(Race)) + 1) - end - )), - gleam@string:inspect(_pipe). - --spec parse_properly(binary()) -> list(integer()). -parse_properly(Input) -> - _pipe = Input, - _pipe@1 = gleam@string:replace(_pipe, <<" "/utf8>>, <<""/utf8>>), - _pipe@2 = gleam@string:split(_pipe@1, <<"\n"/utf8>>), - _pipe@3 = gleam@list:flat_map( - _pipe@2, - fun(_capture) -> gleam@string:split(_capture, <<":"/utf8>>) end - ), - _pipe@4 = gleam@list:map(_pipe@3, fun gleam@int:parse/1), - gleam@result:values(_pipe@4). - --spec part2(binary()) -> binary(). -part2(Input) -> - _assert_subject = begin - _pipe = Input, - parse_properly(_pipe) - end, - [Time, Distance] = case _assert_subject of - [_, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day6/solve"/utf8>>, - function => <<"part2"/utf8>>, - line => 62}) - end, - Race = {race, Time, Distance}, - _pipe@1 = (upper_bound(Race) - lower_bound(Race)) + 1, - gleam@string:inspect(_pipe@1). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day6/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 73}) - end, - _assert_subject@1 = adglent:get_input(<<"6"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day6/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 74}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache deleted file mode 100644 index 44b76c4..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta deleted file mode 100644 index 416021b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl deleted file mode 100644 index 917a57e..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@day7_test.erl +++ /dev/null @@ -1,48 +0,0 @@ --module(day7@day7_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483"/utf8>>, - <<"6440"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483"/utf8>>, - <<"6440"/utf8>>}], - fun(Example) -> _pipe@1 = day7@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483"/utf8>>, - <<"5905"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"32T3K 765 -T55J5 684 -KK677 28 -KTJJT 220 -QQQJA 483"/utf8>>, - <<"5905"/utf8>>}], - fun(Example) -> _pipe@1 = day7@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache deleted file mode 100644 index 5603a95..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta deleted file mode 100644 index c381778..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl deleted file mode 100644 index 7666e16..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day7@solve.erl +++ /dev/null @@ -1,242 +0,0 @@ --module(day7@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([hand/0]). - --type hand() :: {hand, list(integer()), integer()}. - --spec card_counts(hand()) -> list(integer()). -card_counts(Hand) -> - _pipe = erlang:element(2, Hand), - _pipe@1 = gleam@list:sort(_pipe, fun gleam@int:compare/2), - _pipe@2 = gleam@list:chunk(_pipe@1, fun gleam@function:identity/1), - _pipe@3 = gleam@list:map(_pipe@2, fun gleam@list:length/1), - gleam@list:sort(_pipe@3, fun gleam@int:compare/2). - --spec classify_hand(hand()) -> integer(). -classify_hand(Hand) -> - case {gleam@list:length(gleam@list:unique(erlang:element(2, Hand))), - card_counts(Hand)} of - {1, _} -> - 8; - - {2, [1, 4]} -> - 7; - - {2, [2, 3]} -> - 6; - - {3, [1, 1, 3]} -> - 5; - - {3, [1, 2, 2]} -> - 4; - - {4, _} -> - 3; - - {5, _} -> - 2; - - {_, _} -> - 1 - end. - --spec card_rank(binary()) -> integer(). -card_rank(Card) -> - case {gleam@int:parse(Card), Card} of - {{ok, N}, _} -> - N; - - {_, <<"A"/utf8>>} -> - 14; - - {_, <<"K"/utf8>>} -> - 13; - - {_, <<"Q"/utf8>>} -> - 12; - - {_, <<"J"/utf8>>} -> - 11; - - {_, <<"T"/utf8>>} -> - 10; - - {_, _} -> - 1 - end. - --spec parse_hand(binary()) -> hand(). -parse_hand(Str) -> - _assert_subject = gleam@string:split(Str, <<" "/utf8>>), - [Cards, Wager] = case _assert_subject of - [_, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day7/solve"/utf8>>, - function => <<"parse_hand"/utf8>>, - line => 19}) - end, - Cards@1 = begin - _pipe = gleam@string:to_graphemes(Cards), - gleam@list:map(_pipe, fun card_rank/1) - end, - _assert_subject@1 = gleam@int:parse(Wager), - {ok, Wager@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day7/solve"/utf8>>, - function => <<"parse_hand"/utf8>>, - line => 23}) - end, - {hand, Cards@1, Wager@1}. - --spec compare_top_card(list(integer()), list(integer())) -> gleam@order:order(). -compare_top_card(Cards1, Cards2) -> - gleam@bool:guard( - (Cards1 =:= []) orelse (Cards2 =:= []), - eq, - fun() -> - [C1 | Rest1] = case Cards1 of - [_ | _] -> Cards1; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day7/solve"/utf8>>, - function => <<"compare_top_card"/utf8>>, - line => 70}) - end, - [C2 | Rest2] = case Cards2 of - [_ | _] -> Cards2; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day7/solve"/utf8>>, - function => <<"compare_top_card"/utf8>>, - line => 71}) - end, - case gleam@int:compare(C1, C2) of - eq -> - compare_top_card(Rest1, Rest2); - - Other -> - Other - end - end - ). - --spec compare_hands(hand(), hand(), fun((hand()) -> integer())) -> gleam@order:order(). -compare_hands(Hand1, Hand2, Using) -> - case gleam@int:compare(Using(Hand1), Using(Hand2)) of - eq -> - compare_top_card(erlang:element(2, Hand1), erlang:element(2, Hand2)); - - Other -> - Other - end. - --spec part(binary(), fun((hand(), hand()) -> gleam@order:order())) -> binary(). -part(Input, Comparator) -> - _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - _pipe@2 = gleam@list:map(_pipe@1, fun parse_hand/1), - _pipe@3 = gleam@list:sort(_pipe@2, Comparator), - _pipe@4 = gleam@list:index_map( - _pipe@3, - fun(I, H) -> (I + 1) * erlang:element(3, H) end - ), - _pipe@5 = gleam@int:sum(_pipe@4), - gleam@string:inspect(_pipe@5). - --spec compare_without_wilds(hand(), hand()) -> gleam@order:order(). -compare_without_wilds(Hand1, Hand2) -> - compare_hands(Hand1, Hand2, fun classify_hand/1). - --spec part1(binary()) -> binary(). -part1(Input) -> - part(Input, fun compare_without_wilds/2). - --spec find_best_joker_substitution(hand()) -> hand(). -find_best_joker_substitution(Hand) -> - gleam@list:fold( - gleam@list:range(2, 14), - {hand, [], 0}, - fun(Acc, Card) -> - Subbed_cards = (gleam@list:map( - erlang:element(2, Hand), - fun(C) -> case C of - 1 -> - Card; - - Other -> - Other - end end - )), - Subbed_hand = erlang:setelement(2, Hand, Subbed_cards), - case compare_hands(Acc, Subbed_hand, fun classify_hand/1) of - lt -> - Subbed_hand; - - _ -> - Acc - end - end - ). - --spec compare_hands_considering_jokers(hand(), hand()) -> gleam@order:order(). -compare_hands_considering_jokers(Hand1, Hand2) -> - compare_hands(Hand1, Hand2, fun(Hand) -> _pipe = Hand, - _pipe@1 = find_best_joker_substitution(_pipe), - classify_hand(_pipe@1) end). - --spec part2(binary()) -> binary(). -part2(Input) -> - part( - gleam@string:replace(Input, <<"J"/utf8>>, <<"*"/utf8>>), - fun compare_hands_considering_jokers/2 - ). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day7/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 128}) - end, - _assert_subject@1 = adglent:get_input(<<"7"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day7/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 129}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache deleted file mode 100644 index 9a04fc8..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta deleted file mode 100644 index ec825d2..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl deleted file mode 100644 index 2da8521..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@day8_test.erl +++ /dev/null @@ -1,58 +0,0 @@ --module(day8@day8_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"LLR - -AAA = (BBB, BBB) -BBB = (AAA, ZZZ) -ZZZ = (ZZZ, ZZZ)"/utf8>>, - 6}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"LLR - -AAA = (BBB, BBB) -BBB = (AAA, ZZZ) -ZZZ = (ZZZ, ZZZ)"/utf8>>, - 6}], - fun(Example) -> _pipe@1 = day8@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"LR - -11A = (11B, XXX) -11B = (XXX, 11Z) -11Z = (11B, XXX) -22A = (22B, XXX) -22B = (22C, 22C) -22C = (22Z, 22Z) -22Z = (22B, 22B) -XXX = (XXX, XXX)"/utf8>>, - 6}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"LR - -11A = (11B, XXX) -11B = (XXX, 11Z) -11Z = (11B, XXX) -22A = (22B, XXX) -22B = (22C, 22C) -22C = (22Z, 22Z) -22Z = (22B, 22B) -XXX = (XXX, XXX)"/utf8>>, - 6}], - fun(Example) -> _pipe@1 = day8@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache deleted file mode 100644 index 34f5889..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta deleted file mode 100644 index b8df5b2..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl deleted file mode 100644 index 6ac3b18..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day8@solve.erl +++ /dev/null @@ -1,179 +0,0 @@ --module(day8@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). --export_type([paths/0]). - --type paths() :: {paths, binary(), binary()}. - --spec parse(binary()) -> {gleam@iterator:iterator(binary()), - gleam@dict:dict(binary(), paths())}. -parse(Input) -> - _assert_subject = gleam@string:split(Input, <<"\n\n"/utf8>>), - [Directions_str, Maze_str] = case _assert_subject of - [_, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day8/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 20}) - end, - Directions = begin - _pipe = Directions_str, - _pipe@1 = gleam@string:to_graphemes(_pipe), - _pipe@2 = gleam@iterator:from_list(_pipe@1), - gleam@iterator:cycle(_pipe@2) - end, - _assert_subject@1 = gleam@regex:from_string( - <<"(...) = \\((...), (...)\\)"/utf8>> - ), - {ok, Re} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day8/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 28}) - end, - Maze = begin - _pipe@3 = Maze_str, - _pipe@4 = gleam@string:split(_pipe@3, <<"\n"/utf8>>), - _pipe@5 = gleam@list:map( - _pipe@4, - fun(Str) -> - _assert_subject@2 = gleam@regex:scan(Re, Str), - [{match, _, [{some, Name}, {some, Left}, {some, Right}]}] = case _assert_subject@2 of - [{match, _, [{some, _}, {some, _}, {some, _}]}] -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"day8/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 33}) - end, - {Name, {paths, Left, Right}} - end - ), - gleam@dict:from_list(_pipe@5) - end, - {Directions, Maze}. - --spec to_next_step( - binary(), - binary(), - integer(), - gleam@iterator:iterator(binary()), - gleam@dict:dict(binary(), paths()) -) -> integer(). -to_next_step(Current, Stop_at, Count, Directions, Maze) -> - gleam@bool:guard( - gleam@string:ends_with(Current, Stop_at), - Count, - fun() -> - _assert_subject = gleam@iterator:step(Directions), - {next, Next_direction, Rest_directions} = case _assert_subject of - {next, _, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day8/solve"/utf8>>, - function => <<"to_next_step"/utf8>>, - line => 50}) - end, - _assert_subject@1 = gleam@dict:get(Maze, Current), - {ok, Paths} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day8/solve"/utf8>>, - function => <<"to_next_step"/utf8>>, - line => 51}) - end, - _pipe = case Next_direction of - <<"L"/utf8>> -> - erlang:element(2, Paths); - - <<"R"/utf8>> -> - erlang:element(3, Paths); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"bad direction"/utf8>>, - module => <<"day8/solve"/utf8>>, - function => <<"to_next_step"/utf8>>, - line => 55}) - end, - to_next_step(_pipe, Stop_at, Count + 1, Rest_directions, Maze) - end - ). - --spec part1(binary()) -> integer(). -part1(Input) -> - {Directions, Maze} = parse(Input), - to_next_step(<<"AAA"/utf8>>, <<"ZZZ"/utf8>>, 0, Directions, Maze). - --spec part2(binary()) -> integer(). -part2(Input) -> - {Directions, Maze} = parse(Input), - gleam@list:fold( - gleam@dict:keys(Maze), - 1, - fun(Acc, Name) -> case gleam@string:ends_with(Name, <<"A"/utf8>>) of - false -> - Acc; - - true -> - _pipe = to_next_step( - Name, - <<"Z"/utf8>>, - 0, - Directions, - Maze - ), - gleam_community@maths@arithmetics:lcm(_pipe, Acc) - end end - ). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day8/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 79}) - end, - _assert_subject@1 = adglent:get_input(<<"8"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day8/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 80}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache deleted file mode 100644 index dac9de5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta deleted file mode 100644 index 8e61830..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl deleted file mode 100644 index da0f25e..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@day9_test.erl +++ /dev/null @@ -1,40 +0,0 @@ --module(day9@day9_test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1_test/0, part2_test/0]). - --spec part1_test() -> list(nil). -part1_test() -> - _pipe = [{example, - <<"0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45"/utf8>>, - <<"114"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45"/utf8>>, - <<"114"/utf8>>}], - fun(Example) -> _pipe@1 = day9@solve:part1(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). - --spec part2_test() -> list(nil). -part2_test() -> - _pipe = [{example, - <<"0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45"/utf8>>, - <<"2"/utf8>>}], - showtime@tests@should:not_equal(_pipe, []), - gleam@list:map( - [{example, - <<"0 3 6 9 12 15 -1 3 6 10 15 21 -10 13 16 21 30 45"/utf8>>, - <<"2"/utf8>>}], - fun(Example) -> _pipe@1 = day9@solve:part2(erlang:element(2, Example)), - showtime@tests@should:equal(_pipe@1, erlang:element(3, Example)) end - ). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache deleted file mode 100644 index d5b2b24..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta deleted file mode 100644 index 7378356..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl deleted file mode 100644 index 8bef41b..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/day9@solve.erl +++ /dev/null @@ -1,133 +0,0 @@ --module(day9@solve). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([part1/1, part2/1, main/0]). - --spec maybe_backwards(list(QXJ), boolean()) -> list(QXJ). -maybe_backwards(Xs, Backwards) -> - case Backwards of - false -> - gleam@list:reverse(Xs); - - true -> - Xs - end. - --spec parse(binary(), boolean()) -> list(list(integer())). -parse(Input, Backwards) -> - gleam@list:map( - gleam@string:split(Input, <<"\n"/utf8>>), - fun(Line) -> - gleam@list:map( - maybe_backwards( - gleam@string:split(Line, <<" "/utf8>>), - Backwards - ), - fun(N_str) -> - _assert_subject = gleam@int:parse(N_str), - {ok, N} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day9/solve"/utf8>>, - function => <<"parse"/utf8>>, - line => 10}) - end, - N - end - ) - end - ). - --spec is_constant(list(integer())) -> boolean(). -is_constant(Ns) -> - case gleam@list:unique(Ns) of - [_] -> - true; - - _ -> - false - end. - --spec take_derivative(list(integer())) -> list(integer()). -take_derivative(Ns) -> - _pipe = Ns, - _pipe@1 = gleam@list:window_by_2(_pipe), - gleam@list:map( - _pipe@1, - fun(Tup) -> erlang:element(1, Tup) - erlang:element(2, Tup) end - ). - --spec extrapolate(list(integer())) -> integer(). -extrapolate(Ns) -> - case {is_constant(Ns), Ns} of - {true, [N | _]} -> - N; - - {false, [N@1 | _]} -> - N@1 + extrapolate(take_derivative(Ns)); - - {_, _} -> - erlang:error(#{gleam_error => panic, - message => <<"list empty when it shouldn't be"/utf8>>, - module => <<"day9/solve"/utf8>>, - function => <<"extrapolate"/utf8>>, - line => 38}) - end. - --spec part(binary(), boolean()) -> binary(). -part(Input, Backwards) -> - _pipe = Input, - _pipe@1 = parse(_pipe, Backwards), - _pipe@2 = gleam@list:fold( - _pipe@1, - 0, - fun(Acc, Ns) -> extrapolate(Ns) + Acc end - ), - gleam@string:inspect(_pipe@2). - --spec part1(binary()) -> binary(). -part1(Input) -> - part(Input, false). - --spec part2(binary()) -> binary(). -part2(Input) -> - part(Input, true). - --spec main() -> nil. -main() -> - _assert_subject = adglent:get_part(), - {ok, Part} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"day9/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 58}) - end, - _assert_subject@1 = adglent:get_input(<<"9"/utf8>>), - {ok, Input} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"day9/solve"/utf8>>, - function => <<"main"/utf8>>, - line => 59}) - end, - case Part of - first -> - _pipe = part1(Input), - _pipe@1 = adglent:inspect(_pipe), - gleam@io:println(_pipe@1); - - second -> - _pipe@2 = part2(Input), - _pipe@3 = adglent:inspect(_pipe@2), - gleam@io:println(_pipe@3) - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache deleted file mode 100644 index c060355..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta deleted file mode 100644 index 0e78598..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl deleted file mode 100644 index 8e6753e..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@array2d.erl +++ /dev/null @@ -1,64 +0,0 @@ --module(utilities@array2d). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([add_posns/2, to_2d_array/1, to_2d_intarray/1, to_list_of_lists/1, parse_grid/1]). --export_type([posn/0]). - --type posn() :: {posn, integer(), integer()}. - --spec add_posns(posn(), posn()) -> posn(). -add_posns(P1, P2) -> - case {P1, P2} of - {{posn, R1, C1}, {posn, R2, C2}} -> - {posn, R1 + R2, C1 + C2} - end. - --spec to_2d_array(list(list(BDY))) -> gleam@dict:dict(posn(), BDY). -to_2d_array(Xss) -> - _pipe = (gleam@list:index_map( - Xss, - fun(R, Row) -> - gleam@list:index_map(Row, fun(C, Cell) -> {{posn, R, C}, Cell} end) - end - )), - _pipe@1 = gleam@list:flatten(_pipe), - gleam@dict:from_list(_pipe@1). - --spec to_2d_intarray(list(list(binary()))) -> gleam@dict:dict(posn(), integer()). -to_2d_intarray(Xss) -> - _pipe = (gleam@list:index_map( - Xss, - fun(R, Row) -> - gleam@list:index_map( - Row, - fun(C, Cell) -> - _assert_subject = gleam@int:parse(Cell), - {ok, N} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"utilities/array2d"/utf8>>, - function => <<"to_2d_intarray"/utf8>>, - line => 33}) - end, - {{posn, R, C}, N} - end - ) - end - )), - _pipe@1 = gleam@list:flatten(_pipe), - gleam@dict:from_list(_pipe@1). - --spec to_list_of_lists(binary()) -> list(list(binary())). -to_list_of_lists(Str) -> - _pipe = Str, - _pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>), - gleam@list:map(_pipe@1, fun gleam@string:to_graphemes/1). - --spec parse_grid(binary()) -> gleam@dict:dict(posn(), binary()). -parse_grid(Str) -> - _pipe = Str, - _pipe@1 = to_list_of_lists(_pipe), - to_2d_array(_pipe@1). diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache deleted file mode 100644 index f8e9862..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta deleted file mode 100644 index 9452d09..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl deleted file mode 100644 index 2c7b126..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@memo.erl +++ /dev/null @@ -1,70 +0,0 @@ --module(utilities@memo). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([create/1, set/3, get/2, memoize/3]). --export_type([message/2, cache/2]). - --type message(BEO, BEP) :: shutdown | - {get, BEO, gleam@erlang@process:subject({ok, BEP} | {error, nil})} | - {set, BEO, BEP}. - --opaque cache(BEQ, BER) :: {cache, - gleam@erlang@process:subject(message(BEQ, BER))}. - --spec handle_message(message(BEX, BEY), gleam@dict:dict(BEX, BEY)) -> gleam@otp@actor:next(message(BEX, BEY), gleam@dict:dict(BEX, BEY)). -handle_message(Message, Dict) -> - case Message of - shutdown -> - {stop, normal}; - - {get, Key, Client} -> - gleam@erlang@process:send(Client, gleam@dict:get(Dict, Key)), - {continue, Dict, none}; - - {set, Key@1, Value} -> - {continue, gleam@dict:insert(Dict, Key@1, Value), none} - end. - --spec create(fun((cache(any(), any())) -> BFN)) -> BFN. -create(Fun) -> - _assert_subject = gleam@otp@actor:start( - gleam@dict:new(), - fun handle_message/2 - ), - {ok, Server} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"utilities/memo"/utf8>>, - function => <<"create"/utf8>>, - line => 36}) - end, - Result = Fun({cache, Server}), - gleam@erlang@process:send(Server, shutdown), - Result. - --spec set(cache(BFO, BFP), BFO, BFP) -> nil. -set(Cache, Key, Value) -> - gleam@erlang@process:send(erlang:element(2, Cache), {set, Key, Value}). - --spec get(cache(BFS, BFT), BFS) -> {ok, BFT} | {error, nil}. -get(Cache, Key) -> - gleam@erlang@process:call( - erlang:element(2, Cache), - fun(C) -> {get, Key, C} end, - 1000 - ). - --spec memoize(cache(BFY, BFZ), BFY, fun(() -> BFZ)) -> BFZ. -memoize(Cache, Key, Fun) -> - Result = case get(Cache, Key) of - {ok, Value} -> - Value; - - {error, nil} -> - Fun() - end, - set(Cache, Key, Result), - Result. diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache deleted file mode 100644 index c9c4130..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta deleted file mode 100644 index 274b278..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl b/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl deleted file mode 100644 index e97eff6..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.erl +++ /dev/null @@ -1,60 +0,0 @@ --module(utilities@prioqueue). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, insert/3, pop/1]). --export_type([ref/0, p_queue/1, priority_queue/1, out_result/1]). - --type ref() :: any(). - --type p_queue(BBO) :: any() | {gleam_phantom, BBO}. - --opaque priority_queue(BBP) :: {priority_queue, - p_queue({BBP, ref()}), - gleam@dict:dict(BBP, ref())}. - --type out_result(BBQ) :: empty | {value, BBQ, integer()}. - --spec new() -> priority_queue(any()). -new() -> - {priority_queue, pqueue2:new(), gleam@dict:new()}. - --spec insert(priority_queue(BCC), BCC, integer()) -> priority_queue(BCC). -insert(Queue, Value, Priority) -> - Ref = erlang:make_ref(), - Refs = begin - _pipe = erlang:element(3, Queue), - gleam@dict:insert(_pipe, Value, Ref) - end, - {priority_queue, - pqueue2:in({Value, Ref}, Priority, erlang:element(2, Queue)), - Refs}. - --spec pop(priority_queue(BCF)) -> {ok, {BCF, priority_queue(BCF)}} | - {error, nil}. -pop(Queue) -> - case pqueue2:pout(erlang:element(2, Queue)) of - {{value, {Value, Ref}, _}, Pqueue} -> - _assert_subject = gleam@dict:get(erlang:element(3, Queue), Value), - {ok, Recently_enqueued_ref} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"utilities/prioqueue"/utf8>>, - function => <<"pop"/utf8>>, - line => 52}) - end, - case Recently_enqueued_ref =:= Ref of - true -> - {ok, - {Value, - {priority_queue, Pqueue, erlang:element(3, Queue)}}}; - - false -> - pop({priority_queue, Pqueue, erlang:element(3, Queue)}) - end; - - {empty, _} -> - {error, nil} - end. diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app deleted file mode 100644 index 1d9ebe0..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.app +++ /dev/null @@ -1,15 +0,0 @@ -{application, aoc2023, [ - {vsn, "0.1.0"}, - {applications, [adglent, - gleam_community_maths, - gleam_erlang, - gleam_otp, - gleam_stdlib, - gleeunit, - pqueue, - simplifile]}, - {description, ""}, - {modules, [day20@day20_test, - day20@solve]}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam deleted file mode 100644 index 5ef8b6b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam deleted file mode 100644 index c4d93c5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023@@main.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam deleted file mode 100644 index a77846a..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/aoc2023_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam deleted file mode 100644 index 30b4854..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@day10_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam deleted file mode 100644 index d9c6ff3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day10@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam deleted file mode 100644 index dac7343..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@day11_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam deleted file mode 100644 index ed49a37..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day11@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam deleted file mode 100644 index 513d1a9..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@day12_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam deleted file mode 100644 index 21f1e8b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day12@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam deleted file mode 100644 index 67e62de..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@day13_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam deleted file mode 100644 index a9eb3a5..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day13@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam deleted file mode 100644 index 5a6c67e..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@day14_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam deleted file mode 100644 index 8db7efd..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day14@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam deleted file mode 100644 index f8e4a5f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@day15_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam deleted file mode 100644 index 2bf8472..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day15@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam deleted file mode 100644 index 091829f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@day16_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam deleted file mode 100644 index 78a3f8c..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day16@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam deleted file mode 100644 index 5624a2f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@day17_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam deleted file mode 100644 index ca194b3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day17@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam deleted file mode 100644 index 2f9a32a..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@day18_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam deleted file mode 100644 index 326ca15..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day18@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam deleted file mode 100644 index f5cc6c3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@day19_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam deleted file mode 100644 index 7ea70a3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day19@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam deleted file mode 100644 index c01f17e..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@day1_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam deleted file mode 100644 index d2decc9..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day1@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam deleted file mode 100644 index 5bb689f..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@day20_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam deleted file mode 100644 index 2a7a3b3..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day20@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam deleted file mode 100644 index f10ea16..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@day2_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam deleted file mode 100644 index 19a27da..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day2@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam deleted file mode 100644 index a082170..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@day3_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam deleted file mode 100644 index 803c647..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day3@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam deleted file mode 100644 index 35f5046..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@day4_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam deleted file mode 100644 index 3278158..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day4@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam deleted file mode 100644 index b03baf2..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@day5_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam deleted file mode 100644 index 67980d7..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day5@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam deleted file mode 100644 index 5d8c4d4..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@day6_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam deleted file mode 100644 index 8d47586..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day6@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam deleted file mode 100644 index ae993b1..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@day7_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam deleted file mode 100644 index 54ef711..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day7@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam deleted file mode 100644 index e8adca4..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@day8_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam deleted file mode 100644 index c208dac..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day8@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam deleted file mode 100644 index fac9c16..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@day9_test.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam deleted file mode 100644 index 0f48b99..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/day9@solve.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam deleted file mode 100644 index d30c73d..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@array2d.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam deleted file mode 100644 index 3bba319..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@memo.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam b/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam deleted file mode 100644 index 8cd709b..0000000 Binary files a/aoc2023/build/dev/erlang/aoc2023/ebin/utilities@prioqueue.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl deleted file mode 100644 index 7babf61..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/day2@solve_Game.hrl +++ /dev/null @@ -1 +0,0 @@ --record(game, {red :: integer(), blue :: integer(), green :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl deleted file mode 100644 index 5c3086c..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_Almanac.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(almanac, { - seeds :: list(integer()), - mappers :: list(list(day5@solve:mapping_range())) -}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl deleted file mode 100644 index 999313f..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_MRange.hrl +++ /dev/null @@ -1 +0,0 @@ --record(m_range, {start :: integer(), 'end' :: integer(), offset :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl b/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl deleted file mode 100644 index 56c67cd..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/day5@solve_SRange.hrl +++ /dev/null @@ -1 +0,0 @@ --record(s_range, {start :: integer(), 'end' :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl deleted file mode 100644 index 94da3d5..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/utilities@array2d_Posn.hrl +++ /dev/null @@ -1 +0,0 @@ --record(posn, {r :: integer(), c :: integer()}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl deleted file mode 100644 index 941b746..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/utilities@memo_Cache.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(cache, { - server :: gleam@erlang@process:subject(utilities@memo:message(any(), any())) -}). diff --git a/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl b/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl deleted file mode 100644 index 0e12dca..0000000 --- a/aoc2023/build/dev/erlang/aoc2023/include/utilities@prioqueue_PriorityQueue.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(priority_queue, { - queue :: utilities@prioqueue:p_queue({any(), utilities@prioqueue:ref()}), - refs :: gleam@dict:dict(any(), utilities@prioqueue:ref()) -}). diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache deleted file mode 100644 index 5e9f51b..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta deleted file mode 100644 index 3a247a0..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl deleted file mode 100644 index f28094b..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap.erl +++ /dev/null @@ -1,538 +0,0 @@ --module(gap). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_styled/1, compare_strings_with_algorithm/3, compare_lists_with_algorithm/3, myers/2, compare_lists/2, compare_strings/2, lcs/2]). --export_type([score/1]). - --type score(GBX) :: {score, integer(), gleam@option:option(GBX)}. - --spec to_styled(gap@comparison:comparison(any())) -> gap@styled_comparison:styled_comparison(). -to_styled(Comparison) -> - _pipe = Comparison, - _pipe@1 = gap@styling:from_comparison(_pipe), - _pipe@2 = gap@styling:highlight( - _pipe@1, - fun gap@styling:first_highlight_default/1, - fun gap@styling:second_highlight_default/1, - fun gap@styling:no_highlight/1 - ), - gap@styling:to_styled_comparison(_pipe@2). - --spec compare_strings_with_algorithm( - binary(), - binary(), - fun((list(binary()), list(binary())) -> gap@comparison:comparison(binary())) -) -> gap@comparison:comparison(binary()). -compare_strings_with_algorithm(First, Second, Algorithm) -> - Comparison = Algorithm( - gleam@string:to_graphemes(First), - gleam@string:to_graphemes(Second) - ), - case Comparison of - {list_comparison, First@1, Second@1} -> - {string_comparison, First@1, Second@1}; - - {string_comparison, First@2, Second@2} -> - {string_comparison, First@2, Second@2} - end. - --spec compare_lists_with_algorithm( - list(GCM), - list(GCM), - fun((list(GCM), list(GCM)) -> gap@comparison:comparison(GCM)) -) -> gap@comparison:comparison(GCM). -compare_lists_with_algorithm(First_sequence, Second_sequence, Algorithm) -> - Algorithm(First_sequence, Second_sequence). - --spec myers(list(GCR), list(GCR)) -> gap@comparison:comparison(GCR). -myers(First_sequence, Second_sequence) -> - Edits = gap@myers:difference(First_sequence, Second_sequence), - _pipe = Edits, - _pipe@1 = gleam@list:reverse(_pipe), - gleam@list:fold( - _pipe@1, - {list_comparison, [], []}, - fun(Comparison, Edit) -> case Comparison of - {list_comparison, First, Second} -> - case Edit of - {eq, Segment} -> - {list_comparison, - [{match, Segment} | First], - [{match, Segment} | Second]}; - - {ins, Segment@1} -> - {list_comparison, - First, - [{no_match, Segment@1} | Second]}; - - {del, Segment@2} -> - {list_comparison, - [{no_match, Segment@2} | First], - Second} - end; - - {string_comparison, _, _} -> - Comparison - end end - ). - --spec compare_lists(list(GCI), list(GCI)) -> gap@comparison:comparison(GCI). -compare_lists(First_sequence, Second_sequence) -> - myers(First_sequence, Second_sequence). - --spec compare_strings(binary(), binary()) -> gap@comparison:comparison(binary()). -compare_strings(First, Second) -> - Comparison = compare_lists( - gleam@string:to_graphemes(First), - gleam@string:to_graphemes(Second) - ), - case Comparison of - {list_comparison, First@1, Second@1} -> - {string_comparison, First@1, Second@1}; - - {string_comparison, First@2, Second@2} -> - {string_comparison, First@2, Second@2} - end. - --spec prepend_and_merge( - list(gap@comparison:match(list(GCZ))), - gap@comparison:match(list(GCZ)) -) -> list(gap@comparison:match(list(GCZ))). -prepend_and_merge(Matches, Match) -> - case {Matches, Match} of - {[], _} -> - [Match]; - - {[{match, First_match} | Rest], {match, _}} -> - [{match, - begin - _pipe = erlang:element(2, Match), - gleam@list:append(_pipe, First_match) - end} | - Rest]; - - {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> - [{no_match, - begin - _pipe@1 = erlang:element(2, Match), - gleam@list:append(_pipe@1, First_match@1) - end} | - Rest@1]; - - {Matches@1, Match@1} -> - [Match@1 | Matches@1] - end. - --spec append_and_merge( - list(gap@comparison:match(list(GDI))), - gap@comparison:match(list(GDI)) -) -> list(gap@comparison:match(list(GDI))). -append_and_merge(Matches, Match) -> - _pipe@3 = case {begin - _pipe = Matches, - gleam@list:reverse(_pipe) - end, - Match} of - {[], _} -> - [Match]; - - {[{match, First_match} | Rest], {match, _}} -> - [{match, - begin - _pipe@1 = First_match, - gleam@list:append(_pipe@1, erlang:element(2, Match)) - end} | - Rest]; - - {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> - [{no_match, - begin - _pipe@2 = First_match@1, - gleam@list:append(_pipe@2, erlang:element(2, Match)) - end} | - Rest@1]; - - {Matches@1, Match@1} -> - [Match@1 | Matches@1] - end, - gleam@list:reverse(_pipe@3). - --spec collect_matches( - gleam@dict:dict(GHJ, any()), - list(GDS), - fun((GHJ) -> integer()) -) -> list(gap@comparison:match(list(GDS))). -collect_matches(Tracking, Str, Extract_fun) -> - Matching_indexes = begin - _pipe = gleam@map:keys(Tracking), - _pipe@1 = gleam@list:map(_pipe, Extract_fun), - gleam@set:from_list(_pipe@1) - end, - Matches = begin - _pipe@2 = Str, - gleam@list:index_map( - _pipe@2, - fun(Index, Item) -> - case gleam@set:contains(Matching_indexes, Index) of - true -> - {match, Item}; - - false -> - {no_match, Item} - end - end - ) - end, - _pipe@3 = Matches, - _pipe@4 = gleam@list:chunk(_pipe@3, fun(Match) -> case Match of - {match, _} -> - true; - - {no_match, _} -> - false - end end), - gleam@list:map(_pipe@4, fun(Match_list) -> case Match_list of - [{match, _} | _] -> - {match, - gleam@list:filter_map( - Match_list, - fun(Match@1) -> case Match@1 of - {match, Item@1} -> - {ok, Item@1}; - - {no_match, _} -> - {error, nil} - end end - )}; - - [{no_match, _} | _] -> - {no_match, - gleam@list:filter_map( - Match_list, - fun(Match@2) -> case Match@2 of - {no_match, Item@2} -> - {ok, Item@2}; - - {match, _} -> - {error, nil} - end end - )} - end end). - --spec back_track( - gleam@dict:dict({integer(), integer()}, score(GDW)), - integer(), - integer(), - list({{integer(), integer()}, GDW}) -) -> list({{integer(), integer()}, GDW}). -back_track(Diff_map, First_index, Second_index, Stack) -> - case (First_index =:= 0) orelse (Second_index =:= 0) of - true -> - This_score = begin - _pipe = gleam@map:get(Diff_map, {First_index, Second_index}), - gleam@result:unwrap(_pipe, {score, 0, none}) - end, - case This_score of - {score, _, {some, Item}} -> - [{{First_index, Second_index}, Item} | Stack]; - - _ -> - case {First_index, Second_index} of - {0, A} when A > 0 -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - {A@1, 0} when A@1 > 0 -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - {0, 0} -> - Stack; - - {_, _} -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ) - end - end; - - false -> - This_score@1 = begin - _pipe@1 = gleam@map:get(Diff_map, {First_index, Second_index}), - gleam@result:unwrap(_pipe@1, {score, 0, none}) - end, - case This_score@1 of - {score, _, {some, Item@1}} -> - back_track( - Diff_map, - First_index - 1, - Second_index - 1, - [{{First_index, Second_index}, Item@1} | Stack] - ); - - {score, _, none} -> - Up = begin - _pipe@2 = gleam@map:get( - Diff_map, - {First_index, Second_index - 1} - ), - gleam@result:unwrap(_pipe@2, {score, 0, none}) - end, - Back = begin - _pipe@3 = gleam@map:get( - Diff_map, - {First_index - 1, Second_index} - ), - gleam@result:unwrap(_pipe@3, {score, 0, none}) - end, - case gleam@int:compare( - erlang:element(2, Up), - erlang:element(2, Back) - ) of - gt -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - lt -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - eq -> - case {First_index, Second_index} of - {0, A@2} when A@2 > 0 -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - {A@3, 0} when A@3 > 0 -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - {0, 0} -> - Stack; - - {_, _} -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ) - end - end - end - end. - --spec build_diff_map( - GEC, - integer(), - GEC, - integer(), - gleam@dict:dict({integer(), integer()}, score(GEC)) -) -> gleam@dict:dict({integer(), integer()}, score(GEC)). -build_diff_map(First_item, First_index, Second_item, Second_index, Diff_map) -> - Prev_score = begin - _pipe = gleam@map:get(Diff_map, {First_index - 1, Second_index - 1}), - gleam@result:unwrap(_pipe, {score, 0, none}) - end, - Derived_score_up = begin - _pipe@1 = Diff_map, - _pipe@2 = gleam@map:get(_pipe@1, {First_index, Second_index - 1}), - gleam@result:unwrap(_pipe@2, {score, 0, none}) - end, - Derived_score_back = begin - _pipe@3 = Diff_map, - _pipe@4 = gleam@map:get(_pipe@3, {First_index - 1, Second_index}), - gleam@result:unwrap(_pipe@4, {score, 0, none}) - end, - Derived_score = gleam@int:max( - erlang:element(2, Derived_score_up), - erlang:element(2, Derived_score_back) - ), - This_score = case First_item =:= Second_item of - true -> - {score, erlang:element(2, Prev_score) + 1, {some, First_item}}; - - false -> - {score, Derived_score, none} - end, - _pipe@5 = Diff_map, - gleam@map:insert(_pipe@5, {First_index, Second_index}, This_score). - --spec lcs(list(GCV), list(GCV)) -> gap@comparison:comparison(GCV). -lcs(First_sequence, Second_sequence) -> - Leading_matches = begin - _pipe = gleam@list:zip(First_sequence, Second_sequence), - _pipe@1 = gleam@list:take_while( - _pipe, - fun(Pair) -> erlang:element(1, Pair) =:= erlang:element(2, Pair) end - ), - gleam@list:map(_pipe@1, fun gleam@pair:first/1) - end, - Num_leading_matches = gleam@list:length(Leading_matches), - Trailing_matches = begin - _pipe@2 = gleam@list:zip( - gleam@list:reverse(First_sequence), - gleam@list:reverse(Second_sequence) - ), - _pipe@3 = gleam@list:take_while( - _pipe@2, - fun(Pair@1) -> - erlang:element(1, Pair@1) =:= erlang:element(2, Pair@1) - end - ), - _pipe@4 = gleam@list:map(_pipe@3, fun gleam@pair:first/1), - gleam@list:reverse(_pipe@4) - end, - Num_trailing_matches = gleam@list:length(Trailing_matches), - First_sequence_to_diff = begin - _pipe@5 = First_sequence, - _pipe@6 = gleam@list:drop(_pipe@5, Num_leading_matches), - gleam@list:take( - _pipe@6, - (gleam@list:length(First_sequence) - Num_leading_matches) - Num_trailing_matches - ) - end, - Second_sequence_to_diff = begin - _pipe@7 = Second_sequence, - _pipe@8 = gleam@list:drop(_pipe@7, Num_leading_matches), - gleam@list:take( - _pipe@8, - (gleam@list:length(Second_sequence) - Num_leading_matches) - Num_trailing_matches - ) - end, - Diff_map@2 = begin - _pipe@9 = Second_sequence_to_diff, - gleam@list:index_fold( - _pipe@9, - gleam@map:new(), - fun(Diff_map, Item_second, Index_second) -> - _pipe@10 = First_sequence_to_diff, - gleam@list:index_fold( - _pipe@10, - Diff_map, - fun(Diff_map@1, Item_first, Index_first) -> - build_diff_map( - Item_first, - Index_first, - Item_second, - Index_second, - Diff_map@1 - ) - end - ) - end - ) - end, - {First_segments@1, Second_segments@1} = case {First_sequence_to_diff, - Second_sequence_to_diff} of - {[], []} -> - {[], []}; - - {First_matching, []} -> - {[{no_match, First_matching}], []}; - - {[], Second_matching} -> - {[], [{no_match, Second_matching}]}; - - {First_sequence_to_diff@1, Second_sequence_to_diff@1} -> - Tracking = begin - _pipe@11 = back_track( - Diff_map@2, - gleam@list:length(First_sequence_to_diff@1) - 1, - gleam@list:length(Second_sequence_to_diff@1) - 1, - [] - ), - gleam@map:from_list(_pipe@11) - end, - First_segments = collect_matches( - Tracking, - First_sequence_to_diff@1, - fun(Key) -> - {First, _} = Key, - First - end - ), - Second_segments = collect_matches( - Tracking, - Second_sequence_to_diff@1, - fun(Key@1) -> - {_, Second} = Key@1, - Second - end - ), - {First_segments, Second_segments} - end, - {First_segments_with_leading_trailing, - Second_segments_with_leading_trailing} = case {Leading_matches, - Trailing_matches} of - {[], []} -> - {First_segments@1, Second_segments@1}; - - {[], Trailing_matches@1} -> - {begin - _pipe@12 = First_segments@1, - append_and_merge(_pipe@12, {match, Trailing_matches@1}) - end, - begin - _pipe@13 = Second_segments@1, - append_and_merge(_pipe@13, {match, Trailing_matches@1}) - end}; - - {Leading_matches@1, []} -> - {begin - _pipe@14 = First_segments@1, - prepend_and_merge(_pipe@14, {match, Leading_matches@1}) - end, - begin - _pipe@15 = Second_segments@1, - prepend_and_merge(_pipe@15, {match, Leading_matches@1}) - end}; - - {Leading_matches@2, Trailing_matches@2} -> - {begin - _pipe@16 = First_segments@1, - _pipe@17 = prepend_and_merge( - _pipe@16, - {match, Leading_matches@2} - ), - append_and_merge(_pipe@17, {match, Trailing_matches@2}) - end, - begin - _pipe@18 = Second_segments@1, - _pipe@19 = prepend_and_merge( - _pipe@18, - {match, Leading_matches@2} - ), - append_and_merge(_pipe@19, {match, Trailing_matches@2}) - end} - end, - {list_comparison, - First_segments_with_leading_trailing, - Second_segments_with_leading_trailing}. diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache deleted file mode 100644 index f754345..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta deleted file mode 100644 index e3f3599..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl deleted file mode 100644 index 76c0ff2..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@comparison.erl +++ /dev/null @@ -1,15 +0,0 @@ --module(gap@comparison). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([comparison/1, match/1]). - --type comparison(FSE) :: {list_comparison, - list(match(list(FSE))), - list(match(list(FSE)))} | - {string_comparison, - list(match(list(binary()))), - list(match(list(binary())))}. - --type match(FSF) :: {match, FSF} | {no_match, FSF}. - - diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache deleted file mode 100644 index 8935f36..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta deleted file mode 100644 index 6d51dd1..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl deleted file mode 100644 index ea26472..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@myers.erl +++ /dev/null @@ -1,156 +0,0 @@ --module(gap@myers). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([difference/2]). --export_type([edit/1, path/1, status/1]). - --type edit(FWG) :: {eq, list(FWG)} | {del, list(FWG)} | {ins, list(FWG)}. - --type path(FWH) :: {path, - integer(), - integer(), - list(FWH), - list(FWH), - list(edit(FWH))}. - --type status(FWI) :: {done, list(edit(FWI))} | - {next, list(path(FWI))} | - {cont, path(FWI)}. - --spec compact_reverse(list(edit(FWS)), list(edit(FWS))) -> list(edit(FWS)). -compact_reverse(Edits, Acc) -> - case {Edits, Acc} of - {[], Acc@1} -> - Acc@1; - - {[{eq, Elem} | Rest], [{eq, Result} | Acc_rest]} -> - compact_reverse( - Rest, - [{eq, gleam@list:flatten([Elem, Result])} | Acc_rest] - ); - - {[{del, Elem@1} | Rest@1], [{del, Result@1} | Acc_rest@1]} -> - compact_reverse( - Rest@1, - [{del, gleam@list:flatten([Elem@1, Result@1])} | Acc_rest@1] - ); - - {[{ins, Elem@2} | Rest@2], [{ins, Result@2} | Acc_rest@2]} -> - compact_reverse( - Rest@2, - [{ins, gleam@list:flatten([Elem@2, Result@2])} | Acc_rest@2] - ); - - {[{eq, Elem@3} | Rest@3], Acc@2} -> - compact_reverse(Rest@3, [{eq, Elem@3} | Acc@2]); - - {[{del, Elem@4} | Rest@4], Acc@3} -> - compact_reverse(Rest@4, [{del, Elem@4} | Acc@3]); - - {[{ins, Elem@5} | Rest@5], Acc@4} -> - compact_reverse(Rest@5, [{ins, Elem@5} | Acc@4]) - end. - --spec move_right(path(FXL)) -> path(FXL). -move_right(Path) -> - case Path of - {path, X, Y, List1, [Elem | Rest], Edits} -> - {path, X + 1, Y, List1, Rest, [{ins, [Elem]} | Edits]}; - - {path, X@1, Y@1, List1@1, [], Edits@1} -> - {path, X@1 + 1, Y@1, List1@1, [], Edits@1} - end. - --spec move_down(path(FXO)) -> path(FXO). -move_down(Path) -> - case Path of - {path, X, Y, [Elem | Rest], List2, Edits} -> - {path, X, Y + 1, Rest, List2, [{del, [Elem]} | Edits]}; - - {path, X@1, Y@1, [], List2@1, Edits@1} -> - {path, X@1, Y@1 + 1, [], List2@1, Edits@1} - end. - --spec proceed_path(integer(), integer(), list(path(FXF))) -> {path(FXF), - list(path(FXF))}. -proceed_path(Diag, Limit, Paths) -> - Neg_limit = - Limit, - case {Diag, Limit, Paths} of - {0, 0, [Path]} -> - {Path, []}; - - {Diag@1, _, [Path@1 | _] = Paths@1} when Diag@1 =:= Neg_limit -> - {move_down(Path@1), Paths@1}; - - {Diag@2, Limit@1, [Path@2 | _] = Paths@2} when Diag@2 =:= Limit@1 -> - {move_right(Path@2), Paths@2}; - - {_, _, [Path1, Path2 | Rest]} -> - case erlang:element(3, Path1) > erlang:element(3, Path2) of - true -> - {move_right(Path1), [Path2 | Rest]}; - - false -> - {move_down(Path2), [Path2 | Rest]} - end - end. - --spec follow_snake(path(FXR)) -> status(FXR). -follow_snake(Path) -> - case Path of - {path, X, Y, [Elem1 | Rest1], [Elem2 | Rest2], Edits} when Elem1 =:= Elem2 -> - follow_snake( - {path, X + 1, Y + 1, Rest1, Rest2, [{eq, [Elem1]} | Edits]} - ); - - {path, _, _, [], [], Edits@1} -> - {done, Edits@1}; - - _ -> - {cont, Path} - end. - --spec each_diagonal(integer(), integer(), list(path(FWZ)), list(path(FWZ))) -> status(FWZ). -each_diagonal(Diag, Limit, Paths, Next_paths) -> - case Diag > Limit of - true -> - {next, gleam@list:reverse(Next_paths)}; - - false -> - {Path, Rest} = proceed_path(Diag, Limit, Paths), - case follow_snake(Path) of - {cont, Path@1} -> - each_diagonal(Diag + 2, Limit, Rest, [Path@1 | Next_paths]); - - Other -> - Other - end - end. - --spec find_script(integer(), integer(), list(path(FWO))) -> list(edit(FWO)). -find_script(Envelope, Max, Paths) -> - case Envelope > Max of - true -> - []; - - false -> - case each_diagonal(- Envelope, Envelope, Paths, []) of - {done, Edits} -> - compact_reverse(Edits, []); - - {next, Paths@1} -> - find_script(Envelope + 1, Max, Paths@1); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"Didn't expect a Cont here"/utf8>>, - module => <<"gap/myers"/utf8>>, - function => <<"find_script"/utf8>>, - line => 35}) - end - end. - --spec difference(list(FWJ), list(FWJ)) -> list(edit(FWJ)). -difference(List1, List2) -> - Path = {path, 0, 0, List1, List2, []}, - find_script(0, gleam@list:length(List1) + gleam@list:length(List2), [Path]). diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache deleted file mode 100644 index d7dfd29..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta deleted file mode 100644 index dc9ffd0..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl deleted file mode 100644 index 14cc390..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styled_comparison.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(gap@styled_comparison). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([styled_comparison/0]). - --type styled_comparison() :: {styled_comparison, binary(), binary()}. - - diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache deleted file mode 100644 index 7ff8b7f..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta deleted file mode 100644 index f580983..0000000 Binary files a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl deleted file mode 100644 index 4c14974..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap@styling.erl +++ /dev/null @@ -1,202 +0,0 @@ --module(gap@styling). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_comparison/1, highlight/4, serialize/2, first_highlight_default/1, second_highlight_default/1, no_highlight/1, mk_generic_serializer/2, to_styled_comparison/1]). --export_type([part/1, highlighters/0, styling/1]). - --type part(FSP) :: {part, binary(), list(FSP), fun((binary()) -> binary())} | - {all, binary()}. - --type highlighters() :: {highlighters, - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary())}. - --opaque styling(FSQ) :: {styling, - gap@comparison:comparison(FSQ), - gleam@option:option(fun((part(FSQ)) -> binary())), - gleam@option:option(highlighters())}. - --spec from_comparison(gap@comparison:comparison(FST)) -> styling(FST). -from_comparison(Comparison) -> - {styling, Comparison, none, none}. - --spec highlight( - styling(FSW), - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()) -) -> styling(FSW). -highlight(Styling, First, Second, Matching) -> - erlang:setelement( - 4, - Styling, - {some, {highlighters, First, Second, Matching}} - ). - --spec serialize(styling(FSZ), fun((part(FSZ)) -> binary())) -> styling(FSZ). -serialize(Styling, Serializer) -> - erlang:setelement(3, Styling, {some, Serializer}). - --spec first_highlight_default(binary()) -> binary(). -first_highlight_default(String) -> - case String of - <<" "/utf8>> -> - _pipe = String, - _pipe@1 = gleam_community@ansi:underline(_pipe), - _pipe@2 = gleam_community@ansi:bold(_pipe@1), - gleam_community@ansi:green(_pipe@2); - - _ -> - _pipe@3 = String, - _pipe@4 = gleam_community@ansi:green(_pipe@3), - gleam_community@ansi:bold(_pipe@4) - end. - --spec second_highlight_default(binary()) -> binary(). -second_highlight_default(String) -> - case String of - <<" "/utf8>> -> - _pipe = String, - _pipe@1 = gleam_community@ansi:underline(_pipe), - _pipe@2 = gleam_community@ansi:bold(_pipe@1), - gleam_community@ansi:red(_pipe@2); - - _ -> - _pipe@3 = String, - _pipe@4 = gleam_community@ansi:red(_pipe@3), - gleam_community@ansi:bold(_pipe@4) - end. - --spec no_highlight(binary()) -> binary(). -no_highlight(String) -> - String. - --spec string_serializer(part(binary())) -> binary(). -string_serializer(Part) -> - case Part of - {part, Acc, Sequence, Highlight} -> - <>) - end)/binary>>; - - {all, String} -> - String - end. - --spec mk_generic_serializer(binary(), fun((binary()) -> binary())) -> fun((part(any())) -> binary()). -mk_generic_serializer(Separator, Around) -> - fun(Part) -> case Part of - {part, Acc, Sequence, Highlight} -> - Segment_separator = case Acc of - <<""/utf8>> -> - <<""/utf8>>; - - _ -> - Separator - end, - <<<>/binary, - (begin - _pipe = Sequence, - _pipe@1 = gleam@list:map( - _pipe, - fun gleam@string:inspect/1 - ), - _pipe@2 = gleam@list:map(_pipe@1, Highlight), - gleam@string:join(_pipe@2, Separator) - end)/binary>>; - - {all, String} -> - Around(String) - end end. - --spec generic_serializer(part(any())) -> binary(). -generic_serializer(Part) -> - (mk_generic_serializer( - <<", "/utf8>>, - fun(All) -> <<<<"["/utf8, All/binary>>/binary, "]"/utf8>> end - ))(Part). - --spec to_strings( - list(gap@comparison:match(list(FTJ))), - list(gap@comparison:match(list(FTJ))), - fun((part(FTJ)) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()) -) -> gap@styled_comparison:styled_comparison(). -to_strings( - First, - Second, - Serializer, - First_highlight, - Second_highlight, - No_highlight -) -> - First_styled = begin - _pipe = First, - gleam@list:fold(_pipe, <<""/utf8>>, fun(Str, Match) -> case Match of - {match, Item} -> - Serializer({part, Str, Item, No_highlight}); - - {no_match, Item@1} -> - Serializer({part, Str, Item@1, First_highlight}) - end end) - end, - Second_styled = begin - _pipe@1 = Second, - gleam@list:fold( - _pipe@1, - <<""/utf8>>, - fun(Str@1, Match@1) -> case Match@1 of - {match, Item@2} -> - Serializer({part, Str@1, Item@2, No_highlight}); - - {no_match, Item@3} -> - Serializer({part, Str@1, Item@3, Second_highlight}) - end end - ) - end, - {styled_comparison, - Serializer({all, First_styled}), - Serializer({all, Second_styled})}. - --spec to_styled_comparison(styling(any())) -> gap@styled_comparison:styled_comparison(). -to_styled_comparison(Styling) -> - Highlight = begin - _pipe = erlang:element(4, Styling), - gleam@option:unwrap( - _pipe, - {highlighters, - fun first_highlight_default/1, - fun second_highlight_default/1, - fun no_highlight/1} - ) - end, - case erlang:element(2, Styling) of - {string_comparison, First, Second} -> - to_strings( - First, - Second, - fun string_serializer/1, - erlang:element(2, Highlight), - erlang:element(3, Highlight), - erlang:element(4, Highlight) - ); - - {list_comparison, First@1, Second@1} -> - to_strings( - First@1, - Second@1, - gleam@option:unwrap( - erlang:element(3, Styling), - fun generic_serializer/1 - ), - erlang:element(2, Highlight), - erlang:element(3, Highlight), - erlang:element(4, Highlight) - ) - end. diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs deleted file mode 100644 index 235c80b..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gap_ffi.mjs +++ /dev/null @@ -1,431 +0,0 @@ -import { - Error, - List, - Ok, - inspect, - toList, - makeError, - isEqual, -} from "./gleam.mjs"; -import * as $option from "../gleam_stdlib/gleam/option.mjs"; - -const HASHCODE_CACHE = new WeakMap(); -const Nil = undefined; - -class MutableMap { - static #hashcode_cache = new WeakMap(); - - static hash(value) { - let existing = this.#hashcode_cache.get(value); - if (existing) { - return existing; - } else if (value instanceof Object) { - let hashcode = inspect(value); - HASHCODE_CACHE.set(value, hashcode); - return hashcode; - } else { - return value.toString(); - } - } - - constructor() { - this.entries = new globalThis.Map(); - } - - get size() { - return this.entries.size; - } - - inspect() { - let entries = [...this.entries.values()] - .map((pair) => inspect(pair)) - .join(", "); - return `map.from_list([${entries}])`; - } - - toList() { - return List.fromArray([...this.entries.values()]); - } - - insert(k, v) { - this.entries.set(MutableMap.hash(k), [k, v]); - return this; - } - - delete(k) { - this.entries.delete(MutableMap.hash(k)); - return this; - } - - get(key) { - let code = MutableMap.hash(key); - if (this.entries.has(code)) { - return new Ok(this.entries.get(code)[1]); - } else { - return new Error(Nil); - } - } -} - -export function new_mutable_map() { - return new MutableMap(); -} - -export function mutable_map_size(map) { - return map.size; -} - -export function mutable_map_to_list(map) { - return map.toList(); -} - -export function mutable_map_remove(k, map) { - return map.delete(k); -} - -export function mutable_map_get(map, key) { - return map.get(key); -} - -export function mutable_map_insert(key, value, map) { - return map.insert(key, value); -} - -// From map.mjs - -export function size(map) { - return mutable_map_size(map); -} - -export function to_list(map) { - return mutable_map_to_list(map); -} - -export function new$() { - return new_mutable_map(); -} - -export function get(from, get) { - return mutable_map_get(from, get); -} - -function do_has_key(key, map) { - return !isEqual(get(map, key), new Error(undefined)); -} - -export function has_key(map, key) { - return do_has_key(key, map); -} - -export function insert(map, key, value) { - return mutable_map_insert(key, value, map); -} - -function insert_pair(map, pair) { - return insert(map, pair[0], pair[1]); -} - -export function update(map, key, fun) { - let _pipe = map; - let _pipe$1 = get(_pipe, key); - let _pipe$2 = $option.from_result(_pipe$1); - let _pipe$3 = fun(_pipe$2); - return ((_capture) => { - return insert(map, key, _capture); - })(_pipe$3); -} - -export function delete$(map, key) { - return mutable_map_remove(key, map); -} - -function fold_list_of_pair(loop$list, loop$initial) { - while (true) { - let list = loop$list; - let initial = loop$initial; - if (list.hasLength(0)) { - return initial; - } else if (list.atLeastLength(1)) { - let x = list.head; - let rest = list.tail; - loop$list = rest; - loop$initial = insert(initial, x[0], x[1]); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 98, - "fold_list_of_pair", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_from_list(list) { - return fold_list_of_pair(list, new$()); -} - -export function from_list(list) { - return do_from_list(list); -} - -function do_fold(loop$list, loop$initial, loop$fun) { - while (true) { - let list = loop$list; - let initial = loop$initial; - let fun = loop$fun; - if (list.hasLength(0)) { - return initial; - } else if (list.atLeastLength(1)) { - let k = list.head[0]; - let v = list.head[1]; - let tail = list.tail; - loop$list = tail; - loop$initial = fun(initial, k, v); - loop$fun = fun; - } else { - throw makeError( - "case_no_match", - "gleam/map", - 558, - "do_fold", - "No case clause matched", - { values: [list] } - ); - } - } -} - -export function fold(map, initial, fun) { - let _pipe = map; - let _pipe$1 = to_list(_pipe); - return do_fold(_pipe$1, initial, fun); -} - -function do_map_values(f, map) { - let f$1 = (map, k, v) => { - return insert(map, k, f(k, v)); - }; - let _pipe = map; - return fold(_pipe, new$(), f$1); -} - -export function map_values(map, fun) { - return do_map_values(fun, map); -} - -function do_filter(f, map) { - let insert$1 = (map, k, v) => { - let $ = f(k, v); - if ($) { - return insert(map, k, v); - } else { - return map; - } - }; - let _pipe = map; - return fold(_pipe, new$(), insert$1); -} - -export function filter(map, property) { - return do_filter(property, map); -} - -function do_keys_acc(loop$list, loop$acc) { - while (true) { - let list = loop$list; - let acc = loop$acc; - if (list.hasLength(0)) { - return reverse_and_concat(acc, toList([])); - } else if (list.atLeastLength(1)) { - let x = list.head; - let xs = list.tail; - loop$list = xs; - loop$acc = toList([x[0]], acc); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 276, - "do_keys_acc", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_keys(map) { - let list_of_pairs = (() => { - let _pipe = map; - return to_list(_pipe); - })(); - return do_keys_acc(list_of_pairs, toList([])); -} - -export function keys(map) { - return do_keys(map); -} - -function reverse_and_concat(loop$remaining, loop$accumulator) { - while (true) { - let remaining = loop$remaining; - let accumulator = loop$accumulator; - if (remaining.hasLength(0)) { - return accumulator; - } else if (remaining.atLeastLength(1)) { - let item = remaining.head; - let rest = remaining.tail; - loop$remaining = rest; - loop$accumulator = toList([item], accumulator); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 269, - "reverse_and_concat", - "No case clause matched", - { values: [remaining] } - ); - } - } -} - -function do_values_acc(loop$list, loop$acc) { - while (true) { - let list = loop$list; - let acc = loop$acc; - if (list.hasLength(0)) { - return reverse_and_concat(acc, toList([])); - } else if (list.atLeastLength(1)) { - let x = list.head; - let xs = list.tail; - loop$list = xs; - loop$acc = toList([x[1]], acc); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 314, - "do_values_acc", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_values(map) { - let list_of_pairs = (() => { - let _pipe = map; - return to_list(_pipe); - })(); - return do_values_acc(list_of_pairs, toList([])); -} - -export function values(map) { - return do_values(map); -} - -function insert_taken(loop$map, loop$desired_keys, loop$acc) { - while (true) { - let map = loop$map; - let desired_keys = loop$desired_keys; - let acc = loop$acc; - let insert$1 = (taken, key) => { - let $ = get(map, key); - if ($.isOk()) { - let value = $[0]; - return insert(taken, key, value); - } else { - return taken; - } - }; - if (desired_keys.hasLength(0)) { - return acc; - } else if (desired_keys.atLeastLength(1)) { - let x = desired_keys.head; - let xs = desired_keys.tail; - loop$map = map; - loop$desired_keys = xs; - loop$acc = insert$1(acc, x); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 411, - "insert_taken", - "No case clause matched", - { values: [desired_keys] } - ); - } - } -} - -function do_take(desired_keys, map) { - return insert_taken(map, desired_keys, new$()); -} - -export function take(map, desired_keys) { - return do_take(desired_keys, map); -} - -function fold_inserts(loop$new_entries, loop$map) { - while (true) { - let new_entries = loop$new_entries; - let map = loop$map; - if (new_entries.hasLength(0)) { - return map; - } else if (new_entries.atLeastLength(1)) { - let x = new_entries.head; - let xs = new_entries.tail; - loop$new_entries = xs; - loop$map = insert_pair(map, x); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 451, - "fold_inserts", - "No case clause matched", - { values: [new_entries] } - ); - } - } -} - -function do_merge(map, new_entries) { - let _pipe = new_entries; - let _pipe$1 = to_list(_pipe); - return fold_inserts(_pipe$1, map); -} - -export function merge(map, new_entries) { - return do_merge(map, new_entries); -} - -export function drop(loop$map, loop$disallowed_keys) { - while (true) { - let map = loop$map; - let disallowed_keys = loop$disallowed_keys; - if (disallowed_keys.hasLength(0)) { - return map; - } else if (disallowed_keys.atLeastLength(1)) { - let x = disallowed_keys.head; - let xs = disallowed_keys.tail; - loop$map = delete$(map, x); - loop$disallowed_keys = xs; - } else { - throw makeError( - "case_no_match", - "gleam/map", - 514, - "drop", - "No case clause matched", - { values: [disallowed_keys] } - ); - } - } -} diff --git a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gap/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap.app b/aoc2023/build/dev/erlang/gap/ebin/gap.app deleted file mode 100644 index ae37254..0000000 --- a/aoc2023/build/dev/erlang/gap/ebin/gap.app +++ /dev/null @@ -1,8 +0,0 @@ -{application, gap, [ - {vsn, "1.0.1"}, - {applications, [gleam_community_ansi, - gleam_stdlib]}, - {description, "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences."}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap.beam b/aoc2023/build/dev/erlang/gap/ebin/gap.beam deleted file mode 100644 index e819167..0000000 Binary files a/aoc2023/build/dev/erlang/gap/ebin/gap.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam deleted file mode 100644 index 50227cb..0000000 Binary files a/aoc2023/build/dev/erlang/gap/ebin/gap@comparison.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam deleted file mode 100644 index 248a896..0000000 Binary files a/aoc2023/build/dev/erlang/gap/ebin/gap@myers.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam deleted file mode 100644 index 5d56885..0000000 Binary files a/aoc2023/build/dev/erlang/gap/ebin/gap@styled_comparison.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam b/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam deleted file mode 100644 index d2d0cc3..0000000 Binary files a/aoc2023/build/dev/erlang/gap/ebin/gap@styling.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl deleted file mode 100644 index 5e4b20d..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@comparison_ListComparison.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(list_comparison, { - first :: list(gap@comparison:match(list(any()))), - second :: list(gap@comparison:match(list(any()))) -}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl deleted file mode 100644 index f1225dd..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@comparison_Match.hrl +++ /dev/null @@ -1 +0,0 @@ --record(match, {item :: any()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl deleted file mode 100644 index 742783b..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@comparison_NoMatch.hrl +++ /dev/null @@ -1 +0,0 @@ --record(no_match, {item :: any()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl deleted file mode 100644 index c0b1a75..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@comparison_StringComparison.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(string_comparison, { - first :: list(gap@comparison:match(list(binary()))), - second :: list(gap@comparison:match(list(binary()))) -}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl deleted file mode 100644 index 0e7c64a..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@styled_comparison_StyledComparison.hrl +++ /dev/null @@ -1 +0,0 @@ --record(styled_comparison, {first :: binary(), second :: binary()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl deleted file mode 100644 index c11a9a6..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@styling_All.hrl +++ /dev/null @@ -1 +0,0 @@ --record(all, {all :: binary()}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl deleted file mode 100644 index 6e073b3..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@styling_Highlighters.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(highlighters, { - first :: fun((binary()) -> binary()), - second :: fun((binary()) -> binary()), - matching :: fun((binary()) -> binary()) -}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl deleted file mode 100644 index db45796..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@styling_Part.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(part, { - acc :: binary(), - part :: list(any()), - highlight :: fun((binary()) -> binary()) -}). diff --git a/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl b/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl deleted file mode 100644 index a7341c6..0000000 --- a/aoc2023/build/dev/erlang/gap/include/gap@styling_Styling.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(styling, { - comparison :: gap@comparison:comparison(any()), - serializer :: gleam@option:option(fun((gap@styling:part(any())) -> binary())), - highlight :: gleam@option:option(gap@styling:highlighters()) -}). diff --git a/aoc2023/build/dev/erlang/gleam.lock b/aoc2023/build/dev/erlang/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache deleted file mode 100644 index d77f2c9..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta deleted file mode 100644 index a01f4e8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl b/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl deleted file mode 100644 index 8b7a4c9..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.erl +++ /dev/null @@ -1,263 +0,0 @@ --module(gleam_community@ansi). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([reset/1, bold/1, dim/1, italic/1, underline/1, inverse/1, hidden/1, strikethrough/1, black/1, red/1, green/1, yellow/1, blue/1, magenta/1, cyan/1, white/1, bright_black/1, grey/1, gray/1, bright_red/1, bright_green/1, bright_yellow/1, bright_blue/1, bright_magenta/1, bright_cyan/1, bright_white/1, hex/2, pink/1, colour/2, color/2, bg_black/1, bg_red/1, bg_green/1, bg_yellow/1, bg_blue/1, bg_magenta/1, bg_cyan/1, bg_white/1, bg_bright_black/1, bg_bright_red/1, bg_bright_green/1, bg_bright_yellow/1, bg_bright_blue/1, bg_bright_magenta/1, bg_bright_cyan/1, bg_bright_white/1, bg_hex/2, bg_pink/1, bg_colour/2, bg_color/2]). --export_type([code/0]). - --type code() :: {code, binary(), binary(), binary()}. - --spec code(list(integer()), integer()) -> code(). -code(Open, Close) -> - Close_str = gleam@int:to_string(Close), - Open_strs = gleam@list:map(Open, fun gleam@int:to_string/1), - {code, - <<<<<<""/utf8, "["/utf8>>/binary, - (gleam@string:join(Open_strs, <<";"/utf8>>))/binary>>/binary, - "m"/utf8>>, - <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>, - <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>}. - --spec run(binary(), code()) -> binary(). -run(Text, Code) -> - <<<<(erlang:element(2, Code))/binary, - (gleam@string:replace( - Text, - erlang:element(4, Code), - erlang:element(2, Code) - ))/binary>>/binary, - (erlang:element(3, Code))/binary>>. - --spec reset(binary()) -> binary(). -reset(Text) -> - run(Text, code([0], 0)). - --spec bold(binary()) -> binary(). -bold(Text) -> - run(Text, code([1], 22)). - --spec dim(binary()) -> binary(). -dim(Text) -> - run(Text, code([2], 22)). - --spec italic(binary()) -> binary(). -italic(Text) -> - run(Text, code([3], 23)). - --spec underline(binary()) -> binary(). -underline(Text) -> - run(Text, code([4], 24)). - --spec inverse(binary()) -> binary(). -inverse(Text) -> - run(Text, code([7], 27)). - --spec hidden(binary()) -> binary(). -hidden(Text) -> - run(Text, code([8], 28)). - --spec strikethrough(binary()) -> binary(). -strikethrough(Text) -> - run(Text, code([9], 29)). - --spec black(binary()) -> binary(). -black(Text) -> - run(Text, code([30], 39)). - --spec red(binary()) -> binary(). -red(Text) -> - run(Text, code([31], 39)). - --spec green(binary()) -> binary(). -green(Text) -> - run(Text, code([32], 39)). - --spec yellow(binary()) -> binary(). -yellow(Text) -> - run(Text, code([33], 39)). - --spec blue(binary()) -> binary(). -blue(Text) -> - run(Text, code([34], 39)). - --spec magenta(binary()) -> binary(). -magenta(Text) -> - run(Text, code([35], 39)). - --spec cyan(binary()) -> binary(). -cyan(Text) -> - run(Text, code([36], 39)). - --spec white(binary()) -> binary(). -white(Text) -> - run(Text, code([37], 39)). - --spec bright_black(binary()) -> binary(). -bright_black(Text) -> - run(Text, code([90], 39)). - --spec grey(binary()) -> binary(). -grey(Text) -> - bright_black(Text). - --spec gray(binary()) -> binary(). -gray(Text) -> - bright_black(Text). - --spec bright_red(binary()) -> binary(). -bright_red(Text) -> - run(Text, code([91], 39)). - --spec bright_green(binary()) -> binary(). -bright_green(Text) -> - run(Text, code([92], 39)). - --spec bright_yellow(binary()) -> binary(). -bright_yellow(Text) -> - run(Text, code([93], 39)). - --spec bright_blue(binary()) -> binary(). -bright_blue(Text) -> - run(Text, code([94], 39)). - --spec bright_magenta(binary()) -> binary(). -bright_magenta(Text) -> - run(Text, code([95], 39)). - --spec bright_cyan(binary()) -> binary(). -bright_cyan(Text) -> - run(Text, code([96], 39)). - --spec bright_white(binary()) -> binary(). -bright_white(Text) -> - run(Text, code([97], 39)). - --spec hex(binary(), integer()) -> binary(). -hex(Text, Colour) -> - Colour@1 = gleam@int:clamp(Colour, 16#0, 16#ffffff), - run( - Text, - code( - [38, - 2, - begin - _pipe = erlang:'bsr'(Colour@1, 16), - erlang:'band'(_pipe, 16#ff) - end, - begin - _pipe@1 = erlang:'bsr'(Colour@1, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - erlang:'band'(Colour@1, 16#ff)], - 39 - ) - ). - --spec pink(binary()) -> binary(). -pink(Text) -> - hex(Text, 16#ffaff3). - --spec colour(binary(), gleam_community@colour:colour()) -> binary(). -colour(Text, Colour) -> - Hex_colour = gleam_community@colour:to_rgb_hex(Colour), - hex(Text, Hex_colour). - --spec color(binary(), gleam_community@colour:colour()) -> binary(). -color(Text, Color) -> - colour(Text, Color). - --spec bg_black(binary()) -> binary(). -bg_black(Text) -> - run(Text, code([40], 49)). - --spec bg_red(binary()) -> binary(). -bg_red(Text) -> - run(Text, code([41], 49)). - --spec bg_green(binary()) -> binary(). -bg_green(Text) -> - run(Text, code([42], 49)). - --spec bg_yellow(binary()) -> binary(). -bg_yellow(Text) -> - run(Text, code([43], 49)). - --spec bg_blue(binary()) -> binary(). -bg_blue(Text) -> - run(Text, code([44], 49)). - --spec bg_magenta(binary()) -> binary(). -bg_magenta(Text) -> - run(Text, code([45], 49)). - --spec bg_cyan(binary()) -> binary(). -bg_cyan(Text) -> - run(Text, code([46], 49)). - --spec bg_white(binary()) -> binary(). -bg_white(Text) -> - run(Text, code([47], 49)). - --spec bg_bright_black(binary()) -> binary(). -bg_bright_black(Text) -> - run(Text, code([100], 49)). - --spec bg_bright_red(binary()) -> binary(). -bg_bright_red(Text) -> - run(Text, code([101], 49)). - --spec bg_bright_green(binary()) -> binary(). -bg_bright_green(Text) -> - run(Text, code([102], 49)). - --spec bg_bright_yellow(binary()) -> binary(). -bg_bright_yellow(Text) -> - run(Text, code([103], 49)). - --spec bg_bright_blue(binary()) -> binary(). -bg_bright_blue(Text) -> - run(Text, code([104], 49)). - --spec bg_bright_magenta(binary()) -> binary(). -bg_bright_magenta(Text) -> - run(Text, code([105], 49)). - --spec bg_bright_cyan(binary()) -> binary(). -bg_bright_cyan(Text) -> - run(Text, code([106], 49)). - --spec bg_bright_white(binary()) -> binary(). -bg_bright_white(Text) -> - run(Text, code([107], 49)). - --spec bg_hex(binary(), integer()) -> binary(). -bg_hex(Text, Colour) -> - run( - Text, - code( - [48, - 2, - begin - _pipe = erlang:'bsr'(Colour, 16), - erlang:'band'(_pipe, 16#ff) - end, - begin - _pipe@1 = erlang:'bsr'(Colour, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - erlang:'band'(Colour, 16#ff)], - 49 - ) - ). - --spec bg_pink(binary()) -> binary(). -bg_pink(Text) -> - bg_hex(Text, 16#ffaff3). - --spec bg_colour(binary(), gleam_community@colour:colour()) -> binary(). -bg_colour(Text, Colour) -> - Hex_colour = gleam_community@colour:to_rgb_hex(Colour), - bg_hex(Text, Hex_colour). - --spec bg_color(binary(), gleam_community@colour:colour()) -> binary(). -bg_color(Text, Colour) -> - bg_colour(Text, Colour). diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam deleted file mode 100644 index f59ef96..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community@ansi.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app b/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app deleted file mode 100644 index 90e4d4a..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_ansi/ebin/gleam_community_ansi.app +++ /dev/null @@ -1,8 +0,0 @@ -{application, gleam_community_ansi, [ - {vsn, "1.2.0"}, - {applications, [gleam_community_colour, - gleam_stdlib]}, - {description, "ANSI colours, formatting, and control codes"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache deleted file mode 100644 index 7de2dd3..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta deleted file mode 100644 index 3584f7e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl deleted file mode 100644 index ceaaaaa..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.erl +++ /dev/null @@ -1,513 +0,0 @@ --module(gleam_community@colour). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_rgb255/3, from_rgb/3, from_rgba/4, from_hsla/4, from_hsl/3, from_rgb_hex/1, from_rgb_hex_string/1, from_rgba_hex/1, from_rgba_hex_string/1, to_rgba/1, to_hsla/1, to_css_rgba_string/1, to_rgba_hex/1, to_rgba_hex_string/1, to_rgb_hex/1, to_rgb_hex_string/1]). --export_type([colour/0]). - --opaque colour() :: {rgba, float(), float(), float(), float()} | - {hsla, float(), float(), float(), float()}. - --spec valid_colour_value(float()) -> {ok, float()} | {error, nil}. -valid_colour_value(C) -> - case (C > 1.0) orelse (C < +0.0) of - true -> - {error, nil}; - - false -> - {ok, C} - end. - --spec hue_to_rgb(float(), float(), float()) -> float(). -hue_to_rgb(Hue, M1, M2) -> - H = case Hue of - _ when Hue < +0.0 -> - Hue + 1.0; - - _ when Hue > 1.0 -> - Hue - 1.0; - - _ -> - Hue - end, - H_t_6 = H * 6.0, - H_t_2 = H * 2.0, - H_t_3 = H * 3.0, - case H of - _ when H_t_6 < 1.0 -> - M1 + (((M2 - M1) * H) * 6.0); - - _ when H_t_2 < 1.0 -> - M2; - - _ when H_t_3 < 2.0 -> - M1 + (((M2 - M1) * ((2.0 / 3.0) - H)) * 6.0); - - _ -> - M1 - end. - --spec hex_string_to_int(binary()) -> {ok, integer()} | {error, nil}. -hex_string_to_int(Hex_string) -> - Hex = case Hex_string of - <<"#"/utf8, Hex_number/binary>> -> - Hex_number; - - <<"0x"/utf8, Hex_number@1/binary>> -> - Hex_number@1; - - _ -> - Hex_string - end, - _pipe = Hex, - _pipe@1 = gleam@string:lowercase(_pipe), - _pipe@2 = gleam@string:to_graphemes(_pipe@1), - _pipe@3 = gleam@list:reverse(_pipe@2), - gleam@list:index_fold( - _pipe@3, - {ok, 0}, - fun(Total, Char, Index) -> case Total of - {error, nil} -> - {error, nil}; - - {ok, V} -> - gleam@result:then(case Char of - <<"a"/utf8>> -> - {ok, 10}; - - <<"b"/utf8>> -> - {ok, 11}; - - <<"c"/utf8>> -> - {ok, 12}; - - <<"d"/utf8>> -> - {ok, 13}; - - <<"e"/utf8>> -> - {ok, 14}; - - <<"f"/utf8>> -> - {ok, 15}; - - _ -> - gleam@int:parse(Char) - end, fun(Num) -> - gleam@result:then( - gleam@int:power(16, gleam@int:to_float(Index)), - fun(Base) -> - {ok, - V + gleam@float:round( - gleam@int:to_float(Num) * Base - )} - end - ) - end) - end end - ). - --spec hsla_to_rgba(float(), float(), float(), float()) -> {float(), - float(), - float(), - float()}. -hsla_to_rgba(H, S, L, A) -> - M2 = case L =< 0.5 of - true -> - L * (S + 1.0); - - false -> - (L + S) - (L * S) - end, - M1 = (L * 2.0) - M2, - R = hue_to_rgb(H + (1.0 / 3.0), M1, M2), - G = hue_to_rgb(H, M1, M2), - B = hue_to_rgb(H - (1.0 / 3.0), M1, M2), - {R, G, B, A}. - --spec rgba_to_hsla(float(), float(), float(), float()) -> {float(), - float(), - float(), - float()}. -rgba_to_hsla(R, G, B, A) -> - Min_colour = gleam@float:min(R, gleam@float:min(G, B)), - Max_colour = gleam@float:max(R, gleam@float:max(G, B)), - H1 = case true of - _ when Max_colour =:= R -> - gleam@float:divide(G - B, Max_colour - Min_colour); - - _ when Max_colour =:= G -> - _pipe = gleam@float:divide(B - R, Max_colour - Min_colour), - gleam@result:then(_pipe, fun(D) -> {ok, 2.0 + D} end); - - _ -> - _pipe@1 = gleam@float:divide(R - G, Max_colour - Min_colour), - gleam@result:then(_pipe@1, fun(D@1) -> {ok, 4.0 + D@1} end) - end, - H2 = case H1 of - {ok, V} -> - {ok, V * (1.0 / 6.0)}; - - _ -> - H1 - end, - H3 = case H2 of - {ok, V@1} when V@1 < +0.0 -> - V@1 + 1.0; - - {ok, V@2} -> - V@2; - - _ -> - +0.0 - end, - L = (Min_colour + Max_colour) / 2.0, - S = case true of - _ when Min_colour =:= Max_colour -> - +0.0; - - _ when L < 0.5 -> - case (Max_colour + Min_colour) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> (Max_colour - Min_colour) / Gleam@denominator - end; - - _ -> - case ((2.0 - Max_colour) - Min_colour) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> (Max_colour - Min_colour) / Gleam@denominator@1 - end - end, - {H3, S, L, A}. - --spec from_rgb255(integer(), integer(), integer()) -> {ok, colour()} | - {error, nil}. -from_rgb255(Red, Green, Blue) -> - gleam@result:then( - begin - _pipe = Red, - _pipe@1 = gleam@int:to_float(_pipe), - _pipe@2 = gleam@float:divide(_pipe@1, 255.0), - gleam@result:then(_pipe@2, fun valid_colour_value/1) - end, - fun(R) -> - gleam@result:then( - begin - _pipe@3 = Green, - _pipe@4 = gleam@int:to_float(_pipe@3), - _pipe@5 = gleam@float:divide(_pipe@4, 255.0), - gleam@result:then(_pipe@5, fun valid_colour_value/1) - end, - fun(G) -> - gleam@result:then( - begin - _pipe@6 = Blue, - _pipe@7 = gleam@int:to_float(_pipe@6), - _pipe@8 = gleam@float:divide(_pipe@7, 255.0), - gleam@result:then(_pipe@8, fun valid_colour_value/1) - end, - fun(B) -> {ok, {rgba, R, G, B, 1.0}} end - ) - end - ) - end - ). - --spec from_rgb(float(), float(), float()) -> {ok, colour()} | {error, nil}. -from_rgb(Red, Green, Blue) -> - gleam@result:then( - valid_colour_value(Red), - fun(R) -> - gleam@result:then( - valid_colour_value(Green), - fun(G) -> - gleam@result:then( - valid_colour_value(Blue), - fun(B) -> {ok, {rgba, R, G, B, 1.0}} end - ) - end - ) - end - ). - --spec from_rgba(float(), float(), float(), float()) -> {ok, colour()} | - {error, nil}. -from_rgba(Red, Green, Blue, Alpha) -> - gleam@result:then( - valid_colour_value(Red), - fun(R) -> - gleam@result:then( - valid_colour_value(Green), - fun(G) -> - gleam@result:then( - valid_colour_value(Blue), - fun(B) -> - gleam@result:then( - valid_colour_value(Alpha), - fun(A) -> {ok, {rgba, R, G, B, A}} end - ) - end - ) - end - ) - end - ). - --spec from_hsla(float(), float(), float(), float()) -> {ok, colour()} | - {error, nil}. -from_hsla(Hue, Saturation, Lightness, Alpha) -> - gleam@result:then( - valid_colour_value(Hue), - fun(H) -> - gleam@result:then( - valid_colour_value(Saturation), - fun(S) -> - gleam@result:then( - valid_colour_value(Lightness), - fun(L) -> - gleam@result:then( - valid_colour_value(Alpha), - fun(A) -> {ok, {hsla, H, S, L, A}} end - ) - end - ) - end - ) - end - ). - --spec from_hsl(float(), float(), float()) -> {ok, colour()} | {error, nil}. -from_hsl(Hue, Saturation, Lightness) -> - from_hsla(Hue, Saturation, Lightness, 1.0). - --spec from_rgb_hex(integer()) -> {ok, colour()} | {error, nil}. -from_rgb_hex(Hex) -> - case (Hex > 16#ffffff) orelse (Hex < 0) of - true -> - {error, nil}; - - false -> - R = begin - _pipe = erlang:'bsr'(Hex, 16), - erlang:'band'(_pipe, 16#ff) - end, - G = begin - _pipe@1 = erlang:'bsr'(Hex, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - B = erlang:'band'(Hex, 16#ff), - from_rgb255(R, G, B) - end. - --spec from_rgb_hex_string(binary()) -> {ok, colour()} | {error, nil}. -from_rgb_hex_string(Hex_string) -> - gleam@result:then( - hex_string_to_int(Hex_string), - fun(Hex_int) -> from_rgb_hex(Hex_int) end - ). - --spec from_rgba_hex(integer()) -> {ok, colour()} | {error, nil}. -from_rgba_hex(Hex) -> - case (Hex > 16#ffffffff) orelse (Hex < 0) of - true -> - {error, nil}; - - false -> - _assert_subject = begin - _pipe = erlang:'bsr'(Hex, 24), - _pipe@1 = erlang:'band'(_pipe, 16#ff), - _pipe@2 = gleam@int:to_float(_pipe@1), - gleam@float:divide(_pipe@2, 255.0) - end, - {ok, R} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 588}) - end, - _assert_subject@1 = begin - _pipe@3 = erlang:'bsr'(Hex, 16), - _pipe@4 = erlang:'band'(_pipe@3, 16#ff), - _pipe@5 = gleam@int:to_float(_pipe@4), - gleam@float:divide(_pipe@5, 255.0) - end, - {ok, G} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 594}) - end, - _assert_subject@2 = begin - _pipe@6 = erlang:'bsr'(Hex, 8), - _pipe@7 = erlang:'band'(_pipe@6, 16#ff), - _pipe@8 = gleam@int:to_float(_pipe@7), - gleam@float:divide(_pipe@8, 255.0) - end, - {ok, B} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 600}) - end, - _assert_subject@3 = begin - _pipe@9 = erlang:'band'(Hex, 16#ff), - _pipe@10 = gleam@int:to_float(_pipe@9), - gleam@float:divide(_pipe@10, 255.0) - end, - {ok, A} = case _assert_subject@3 of - {ok, _} -> _assert_subject@3; - _assert_fail@3 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@3, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 606}) - end, - from_rgba(R, G, B, A) - end. - --spec from_rgba_hex_string(binary()) -> {ok, colour()} | {error, nil}. -from_rgba_hex_string(Hex_string) -> - gleam@result:then( - hex_string_to_int(Hex_string), - fun(Hex_int) -> from_rgba_hex(Hex_int) end - ). - --spec to_rgba(colour()) -> {float(), float(), float(), float()}. -to_rgba(Colour) -> - case Colour of - {rgba, R, G, B, A} -> - {R, G, B, A}; - - {hsla, H, S, L, A@1} -> - hsla_to_rgba(H, S, L, A@1) - end. - --spec to_hsla(colour()) -> {float(), float(), float(), float()}. -to_hsla(Colour) -> - case Colour of - {hsla, H, S, L, A} -> - {H, S, L, A}; - - {rgba, R, G, B, A@1} -> - rgba_to_hsla(R, G, B, A@1) - end. - --spec to_css_rgba_string(colour()) -> binary(). -to_css_rgba_string(Colour) -> - {R, G, B, A} = to_rgba(Colour), - Percent = fun(X) -> - _assert_subject = begin - _pipe = X, - _pipe@1 = gleam@float:multiply(_pipe, 10000.0), - _pipe@2 = gleam@float:round(_pipe@1), - _pipe@3 = gleam@int:to_float(_pipe@2), - gleam@float:divide(_pipe@3, 100.0) - end, - {ok, P} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour"/utf8>>, - function => <<"to_css_rgba_string"/utf8>>, - line => 704}) - end, - P - end, - Round_to = fun(X@1) -> - _assert_subject@1 = begin - _pipe@4 = X@1, - _pipe@5 = gleam@float:multiply(_pipe@4, 1000.0), - _pipe@6 = gleam@float:round(_pipe@5), - _pipe@7 = gleam@int:to_float(_pipe@6), - gleam@float:divide(_pipe@7, 1000.0) - end, - {ok, R@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/colour"/utf8>>, - function => <<"to_css_rgba_string"/utf8>>, - line => 716}) - end, - R@1 - end, - gleam@string:join( - [<<"rgba("/utf8>>, - <<(gleam@float:to_string(Percent(R)))/binary, "%,"/utf8>>, - <<(gleam@float:to_string(Percent(G)))/binary, "%,"/utf8>>, - <<(gleam@float:to_string(Percent(B)))/binary, "%,"/utf8>>, - gleam@float:to_string(Round_to(A)), - <<")"/utf8>>], - <<""/utf8>> - ). - --spec to_rgba_hex(colour()) -> integer(). -to_rgba_hex(Colour) -> - {R, G, B, A} = to_rgba(Colour), - Red = begin - _pipe = R * 255.0, - _pipe@1 = gleam@float:round(_pipe), - erlang:'bsl'(_pipe@1, 24) - end, - Green = begin - _pipe@2 = G * 255.0, - _pipe@3 = gleam@float:round(_pipe@2), - erlang:'bsl'(_pipe@3, 16) - end, - Blue = begin - _pipe@4 = B * 255.0, - _pipe@5 = gleam@float:round(_pipe@4), - erlang:'bsl'(_pipe@5, 8) - end, - Alpha = begin - _pipe@6 = A * 255.0, - gleam@float:round(_pipe@6) - end, - ((Red + Green) + Blue) + Alpha. - --spec to_rgba_hex_string(colour()) -> binary(). -to_rgba_hex_string(Colour) -> - _pipe = to_rgba_hex(Colour), - gleam@int:to_base16(_pipe). - --spec to_rgb_hex(colour()) -> integer(). -to_rgb_hex(Colour) -> - {R, G, B, _} = to_rgba(Colour), - Red = begin - _pipe = R * 255.0, - _pipe@1 = gleam@float:round(_pipe), - erlang:'bsl'(_pipe@1, 16) - end, - Green = begin - _pipe@2 = G * 255.0, - _pipe@3 = gleam@float:round(_pipe@2), - erlang:'bsl'(_pipe@3, 8) - end, - Blue = begin - _pipe@4 = B * 255.0, - gleam@float:round(_pipe@4) - end, - (Red + Green) + Blue. - --spec to_rgb_hex_string(colour()) -> binary(). -to_rgb_hex_string(Colour) -> - _pipe = to_rgb_hex(Colour), - gleam@int:to_base16(_pipe). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache deleted file mode 100644 index 0154b0b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta deleted file mode 100644 index 0c78df4..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl b/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl deleted file mode 100644 index 28ed9fd..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.erl +++ /dev/null @@ -1,75 +0,0 @@ --module(gleam_community@colour@accessibility). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([luminance/1, contrast_ratio/2, maximum_contrast/2]). - --spec intensity(float()) -> float(). -intensity(Colour_value) -> - case true of - _ when Colour_value =< 0.03928 -> - Colour_value / 12.92; - - _ -> - _assert_subject = gleam@float:power( - (Colour_value + 0.055) / 1.055, - 2.4 - ), - {ok, I} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour/accessibility"/utf8>>, - function => <<"intensity"/utf8>>, - line => 62}) - end, - I - end. - --spec luminance(gleam_community@colour:colour()) -> float(). -luminance(Colour) -> - {R, G, B, _} = gleam_community@colour:to_rgba(Colour), - R_intensity = intensity(R), - G_intensity = intensity(G), - B_intensity = intensity(B), - ((0.2126 * R_intensity) + (0.7152 * G_intensity)) + (0.0722 * B_intensity). - --spec contrast_ratio( - gleam_community@colour:colour(), - gleam_community@colour:colour() -) -> float(). -contrast_ratio(Colour_a, Colour_b) -> - Luminance_a = luminance(Colour_a) + 0.05, - Luminance_b = luminance(Colour_b) + 0.05, - case Luminance_a > Luminance_b of - true -> - case Luminance_b of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> Luminance_a / Gleam@denominator - end; - - false -> - case Luminance_a of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> Luminance_b / Gleam@denominator@1 - end - end. - --spec maximum_contrast( - gleam_community@colour:colour(), - list(gleam_community@colour:colour()) -) -> {ok, gleam_community@colour:colour()} | {error, nil}. -maximum_contrast(Base, Colours) -> - _pipe = Colours, - _pipe@1 = gleam@list:sort( - _pipe, - fun(Colour_a, Colour_b) -> - Contrast_a = contrast_ratio(Base, Colour_a), - Contrast_b = contrast_ratio(Base, Colour_b), - gleam@float:compare(Contrast_b, Contrast_a) - end - ), - gleam@list:first(_pipe@1). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam deleted file mode 100644 index e25d425..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam deleted file mode 100644 index e599de6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community@colour@accessibility.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app b/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app deleted file mode 100644 index 51800d3..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/ebin/gleam_community_colour.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, gleam_community_colour, [ - {vsn, "1.2.0"}, - {applications, [gleam_stdlib]}, - {description, "Colour types, conversions, and other utilities"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl deleted file mode 100644 index 06116df..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Hsla.hrl +++ /dev/null @@ -1 +0,0 @@ --record(hsla, {h :: float(), s :: float(), l :: float(), a :: float()}). diff --git a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl b/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl deleted file mode 100644 index fff139e..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_colour/include/gleam_community@colour_Rgba.hrl +++ /dev/null @@ -1 +0,0 @@ --record(rgba, {r :: float(), g :: float(), b :: float(), a :: float()}). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache deleted file mode 100644 index c8def84..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta deleted file mode 100644 index 23d4726..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl deleted file mode 100644 index 9cdaccb..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.erl +++ /dev/null @@ -1,172 +0,0 @@ --module(gleam_community@maths@arithmetics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([gcd/2, lcm/2, divisors/1, proper_divisors/1, float_sum/1, int_sum/1, float_product/1, int_product/1, float_cumulative_sum/1, int_cumulative_sum/1, float_cumumlative_product/1, int_cumulative_product/1]). - --spec do_gcd(integer(), integer()) -> integer(). -do_gcd(X, Y) -> - case X =:= 0 of - true -> - Y; - - false -> - _assert_subject = gleam@int:modulo(Y, X), - {ok, Z} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/arithmetics"/utf8>>, - function => <<"do_gcd"/utf8>>, - line => 93}) - end, - do_gcd(Z, X) - end. - --spec gcd(integer(), integer()) -> integer(). -gcd(X, Y) -> - Absx = gleam_community@maths@piecewise:int_absolute_value(X), - Absy = gleam_community@maths@piecewise:int_absolute_value(Y), - do_gcd(Absx, Absy). - --spec lcm(integer(), integer()) -> integer(). -lcm(X, Y) -> - Absx = gleam_community@maths@piecewise:int_absolute_value(X), - Absy = gleam_community@maths@piecewise:int_absolute_value(Y), - case do_gcd(Absx, Absy) of - 0 -> 0; - Gleam@denominator -> Absx * Absy div Gleam@denominator - end. - --spec find_divisors(integer()) -> list(integer()). -find_divisors(N) -> - Nabs = gleam_community@maths@piecewise:float_absolute_value( - gleam_community@maths@conversion:int_to_float(N) - ), - _assert_subject = gleam_community@maths@elementary:square_root(Nabs), - {ok, Sqrt_result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/arithmetics"/utf8>>, - function => <<"find_divisors"/utf8>>, - line => 176}) - end, - Max = gleam_community@maths@conversion:float_to_int(Sqrt_result) + 1, - _pipe = gleam@list:range(2, Max), - _pipe@1 = gleam@list:fold(_pipe, [1, N], fun(Acc, I) -> case (case I of - 0 -> 0; - Gleam@denominator -> N rem Gleam@denominator - end) =:= 0 of - true -> - [I, case I of - 0 -> 0; - Gleam@denominator@1 -> N div Gleam@denominator@1 - end | Acc]; - - false -> - Acc - end end), - _pipe@2 = gleam@list:unique(_pipe@1), - gleam@list:sort(_pipe@2, fun gleam@int:compare/2). - --spec divisors(integer()) -> list(integer()). -divisors(N) -> - find_divisors(N). - --spec proper_divisors(integer()) -> list(integer()). -proper_divisors(N) -> - Divisors = find_divisors(N), - _pipe = Divisors, - gleam@list:take(_pipe, gleam@list:length(Divisors) - 1). - --spec float_sum(list(float())) -> float(). -float_sum(Arr) -> - case Arr of - [] -> - +0.0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, +0.0, fun(Acc, A) -> A + Acc end) - end. - --spec int_sum(list(integer())) -> integer(). -int_sum(Arr) -> - case Arr of - [] -> - 0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec float_product(list(float())) -> float(). -float_product(Arr) -> - case Arr of - [] -> - 1.0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 1.0, fun(Acc, A) -> A * Acc end) - end. - --spec int_product(list(integer())) -> integer(). -int_product(Arr) -> - case Arr of - [] -> - 1; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 1, fun(Acc, A) -> A * Acc end) - end. - --spec float_cumulative_sum(list(float())) -> list(float()). -float_cumulative_sum(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, +0.0, fun(Acc, A) -> A + Acc end) - end. - --spec int_cumulative_sum(list(integer())) -> list(integer()). -int_cumulative_sum(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec float_cumumlative_product(list(float())) -> list(float()). -float_cumumlative_product(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 1.0, fun(Acc, A) -> A * Acc end) - end. - --spec int_cumulative_product(list(integer())) -> list(integer()). -int_cumulative_product(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 1, fun(Acc, A) -> A * Acc end) - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache deleted file mode 100644 index 3fffb45..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta deleted file mode 100644 index f8262ee..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl deleted file mode 100644 index d600fbe..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.erl +++ /dev/null @@ -1,218 +0,0 @@ --module(gleam_community@maths@combinatorics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([combination/2, factorial/1, permutation/2, list_combination/2, list_permutation/1, cartesian_product/2]). - --spec combination(integer(), integer()) -> {ok, integer()} | {error, binary()}. -combination(N, K) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case (K < 0) orelse (K > N) of - true -> - _pipe@1 = 0, - {ok, _pipe@1}; - - false -> - case (K =:= 0) orelse (K =:= N) of - true -> - _pipe@2 = 1, - {ok, _pipe@2}; - - false -> - Min = case K < (N - K) of - true -> - K; - - false -> - N - K - end, - _pipe@3 = gleam@list:range(1, Min), - _pipe@4 = gleam@list:fold( - _pipe@3, - 1, - fun(Acc, X) -> case X of - 0 -> 0; - Gleam@denominator -> Acc * ((N + 1) - X) - div Gleam@denominator - end end - ), - {ok, _pipe@4} - end - end - end. - --spec factorial(integer()) -> {ok, integer()} | {error, binary()}. -factorial(N) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case N of - 0 -> - _pipe@1 = 1, - {ok, _pipe@1}; - - 1 -> - _pipe@2 = 1, - {ok, _pipe@2}; - - _ -> - _pipe@3 = gleam@list:range(1, N), - _pipe@4 = gleam@list:fold( - _pipe@3, - 1, - fun(Acc, X) -> Acc * X end - ), - {ok, _pipe@4} - end - end. - --spec permutation(integer(), integer()) -> {ok, integer()} | {error, binary()}. -permutation(N, K) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case (K < 0) orelse (K > N) of - true -> - _pipe@1 = 0, - {ok, _pipe@1}; - - false -> - case K =:= N of - true -> - _pipe@2 = 1, - {ok, _pipe@2}; - - false -> - _assert_subject = factorial(N), - {ok, V1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"permutation"/utf8>>, - line => 241}) - end, - _assert_subject@1 = factorial(N - K), - {ok, V2} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"permutation"/utf8>>, - line => 242}) - end, - _pipe@3 = case V2 of - 0 -> 0; - Gleam@denominator -> V1 div Gleam@denominator - end, - {ok, _pipe@3} - end - end - end. - --spec do_list_combination(list(ORJ), integer(), list(ORJ)) -> list(list(ORJ)). -do_list_combination(Arr, K, Prefix) -> - case K of - 0 -> - [gleam@list:reverse(Prefix)]; - - _ -> - case Arr of - [] -> - []; - - [X | Xs] -> - With_x = do_list_combination(Xs, K - 1, [X | Prefix]), - Without_x = do_list_combination(Xs, K, Prefix), - gleam@list:append(With_x, Without_x) - end - end. - --spec list_combination(list(ORD), integer()) -> {ok, list(list(ORD))} | - {error, binary()}. -list_combination(Arr, K) -> - case K < 0 of - true -> - _pipe = <<"Invalid input argument: k < 0. Valid input is k > 0."/utf8>>, - {error, _pipe}; - - false -> - case K > gleam@list:length(Arr) of - true -> - _pipe@1 = <<"Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)."/utf8>>, - {error, _pipe@1}; - - false -> - _pipe@2 = do_list_combination(Arr, K, []), - {ok, _pipe@2} - end - end. - --spec list_permutation(list(ORO)) -> list(list(ORO)). -list_permutation(Arr) -> - case Arr of - [] -> - [[]]; - - _ -> - gleam@list:flat_map( - Arr, - fun(X) -> - _assert_subject = gleam@list:pop(Arr, fun(Y) -> X =:= Y end), - {ok, {_, Remaining}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"list_permutation"/utf8>>, - line => 373}) - end, - gleam@list:map( - list_permutation(Remaining), - fun(Perm) -> [X | Perm] end - ) - end - ) - end. - --spec cartesian_product(list(ORS), list(ORS)) -> list({ORS, ORS}). -cartesian_product(Xarr, Yarr) -> - Xset = begin - _pipe = Xarr, - gleam@set:from_list(_pipe) - end, - Yset = begin - _pipe@1 = Yarr, - gleam@set:from_list(_pipe@1) - end, - _pipe@2 = Xset, - _pipe@3 = gleam@set:fold( - _pipe@2, - gleam@set:new(), - fun(Accumulator0, Member0) -> - gleam@set:fold( - Yset, - Accumulator0, - fun(Accumulator1, Member1) -> - gleam@set:insert(Accumulator1, {Member0, Member1}) - end - ) - end - ), - gleam@set:to_list(_pipe@3). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache deleted file mode 100644 index a95ea4b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta deleted file mode 100644 index 374a6fb..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl deleted file mode 100644 index 4923523..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.erl +++ /dev/null @@ -1,24 +0,0 @@ --module(gleam_community@maths@conversion). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([int_to_float/1, float_to_int/1, degrees_to_radians/1, radians_to_degrees/1]). - --spec int_to_float(integer()) -> float(). -int_to_float(X) -> - gleam@int:to_float(X). - --spec float_to_int(float()) -> integer(). -float_to_int(X) -> - erlang:trunc(X). - --spec degrees_to_radians(float()) -> float(). -degrees_to_radians(X) -> - (X * math:pi()) / 180.0. - --spec radians_to_degrees(float()) -> float(). -radians_to_degrees(X) -> - case math:pi() of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> X * 180.0 / Gleam@denominator - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache deleted file mode 100644 index 8b9e7ca..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta deleted file mode 100644 index 8a3590f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl deleted file mode 100644 index 15d6abc..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.erl +++ /dev/null @@ -1,286 +0,0 @@ --module(gleam_community@maths@elementary). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([acos/1, acosh/1, asin/1, asinh/1, atan/1, atan2/2, atanh/1, cos/1, cosh/1, sin/1, sinh/1, tan/1, tanh/1, exponential/1, natural_logarithm/1, logarithm_2/1, logarithm_10/1, logarithm/2, power/2, square_root/1, cube_root/1, nth_root/2, pi/0, tau/0, e/0]). - --spec acos(float()) -> {ok, float()} | {error, binary()}. -acos(X) -> - case (X >= -1.0) andalso (X =< 1.0) of - true -> - _pipe = math:acos(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, - {error, _pipe@1} - end. - --spec acosh(float()) -> {ok, float()} | {error, binary()}. -acosh(X) -> - case X >= 1.0 of - true -> - _pipe = math:acosh(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x < 1. Valid input is x >= 1."/utf8>>, - {error, _pipe@1} - end. - --spec asin(float()) -> {ok, float()} | {error, binary()}. -asin(X) -> - case (X >= -1.0) andalso (X =< 1.0) of - true -> - _pipe = math:asin(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, - {error, _pipe@1} - end. - --spec asinh(float()) -> float(). -asinh(X) -> - math:asinh(X). - --spec atan(float()) -> float(). -atan(X) -> - math:atan(X). - --spec atan2(float(), float()) -> float(). -atan2(Y, X) -> - math:atan2(Y, X). - --spec atanh(float()) -> {ok, float()} | {error, binary()}. -atanh(X) -> - case (X > -1.0) andalso (X < 1.0) of - true -> - _pipe = math:atanh(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1."/utf8>>, - {error, _pipe@1} - end. - --spec cos(float()) -> float(). -cos(X) -> - math:cos(X). - --spec cosh(float()) -> float(). -cosh(X) -> - math:cosh(X). - --spec sin(float()) -> float(). -sin(X) -> - math:sin(X). - --spec sinh(float()) -> float(). -sinh(X) -> - math:sinh(X). - --spec tan(float()) -> float(). -tan(X) -> - math:tan(X). - --spec tanh(float()) -> float(). -tanh(X) -> - math:tanh(X). - --spec exponential(float()) -> float(). -exponential(X) -> - math:exp(X). - --spec natural_logarithm(float()) -> {ok, float()} | {error, binary()}. -natural_logarithm(X) -> - case X > +0.0 of - true -> - _pipe = math:log(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm_2(float()) -> {ok, float()} | {error, binary()}. -logarithm_2(X) -> - case X > +0.0 of - true -> - _pipe = math:log2(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm_10(float()) -> {ok, float()} | {error, binary()}. -logarithm_10(X) -> - case X > +0.0 of - true -> - _pipe = math:log10(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm(float(), gleam@option:option(float())) -> {ok, float()} | - {error, binary()}. -logarithm(X, Base) -> - case X > +0.0 of - true -> - case Base of - {some, A} -> - case (A > +0.0) andalso (A /= 1.0) of - true -> - _assert_subject = logarithm_10(X), - {ok, Numerator} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"logarithm"/utf8>>, - line => 820}) - end, - _assert_subject@1 = logarithm_10(A), - {ok, Denominator} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"logarithm"/utf8>>, - line => 821}) - end, - _pipe = case Denominator of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> Numerator / Gleam@denominator - end, - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, - {error, _pipe@1} - end; - - _ -> - _pipe@2 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, - {error, _pipe@2} - end; - - _ -> - _pipe@3 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@3} - end. - --spec power(float(), float()) -> {ok, float()} | {error, binary()}. -power(X, Y) -> - Fractional = (math:ceil(Y) - Y) > +0.0, - case ((X < +0.0) andalso Fractional) orelse ((X =:= +0.0) andalso (Y < +0.0)) of - true -> - _pipe = <<"Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0."/utf8>>, - {error, _pipe}; - - false -> - _pipe@1 = math:pow(X, Y), - {ok, _pipe@1} - end. - --spec square_root(float()) -> {ok, float()} | {error, binary()}. -square_root(X) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0."/utf8>>, - {error, _pipe}; - - false -> - _assert_subject = power(X, 1.0 / 2.0), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"square_root"/utf8>>, - line => 1066}) - end, - _pipe@1 = Result, - {ok, _pipe@1} - end. - --spec cube_root(float()) -> {ok, float()} | {error, binary()}. -cube_root(X) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0."/utf8>>, - {error, _pipe}; - - false -> - _assert_subject = power(X, 1.0 / 3.0), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"cube_root"/utf8>>, - line => 1118}) - end, - _pipe@1 = Result, - {ok, _pipe@1} - end. - --spec nth_root(float(), integer()) -> {ok, float()} | {error, binary()}. -nth_root(X, N) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0. Valid input is x > 0"/utf8>>, - {error, _pipe}; - - false -> - case N >= 1 of - true -> - _assert_subject = power(X, case gleam@int:to_float(N) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"nth_root"/utf8>>, - line => 1175}) - end, - _pipe@1 = Result, - {ok, _pipe@1}; - - false -> - _pipe@2 = <<"Invalid input argument: n < 1. Valid input is n >= 2."/utf8>>, - {error, _pipe@2} - end - end. - --spec pi() -> float(). -pi() -> - math:pi(). - --spec tau() -> float(). -tau() -> - 2.0 * pi(). - --spec e() -> float(). -e() -> - exponential(1.0). diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache deleted file mode 100644 index fc137ef..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta deleted file mode 100644 index ad6a7f1..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl deleted file mode 100644 index 9b0c432..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.erl +++ /dev/null @@ -1,281 +0,0 @@ --module(gleam_community@maths@metrics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([norm/2, minkowski_distance/3, manhatten_distance/2, euclidean_distance/2, mean/1, median/1, variance/2, standard_deviation/2]). - --spec norm(list(float()), float()) -> float(). -norm(Arr, P) -> - case Arr of - [] -> - +0.0; - - _ -> - Agg = begin - _pipe = Arr, - gleam@list:fold( - _pipe, - +0.0, - fun(Acc, A) -> - _assert_subject = gleam_community@maths@elementary:power( - gleam_community@maths@piecewise:float_absolute_value( - A - ), - P - ), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"norm"/utf8>>, - line => 101}) - end, - Result + Acc - end - ) - end, - _assert_subject@1 = gleam_community@maths@elementary:power( - Agg, - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end - ), - {ok, Result@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"norm"/utf8>>, - line => 106}) - end, - Result@1 - end. - --spec minkowski_distance(list(float()), list(float()), float()) -> {ok, float()} | - {error, binary()}. -minkowski_distance(Xarr, Yarr, P) -> - Xlen = gleam@list:length(Xarr), - Ylen = gleam@list:length(Yarr), - case Xlen =:= Ylen of - false -> - _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, - {error, _pipe}; - - true -> - case P < 1.0 of - true -> - _pipe@1 = <<"Invalid input argument: p < 1. Valid input is p >= 1."/utf8>>, - {error, _pipe@1}; - - false -> - _pipe@2 = gleam@list:zip(Xarr, Yarr), - _pipe@3 = gleam@list:map( - _pipe@2, - fun(Tuple) -> - gleam@pair:first(Tuple) - gleam@pair:second(Tuple) - end - ), - _pipe@4 = norm(_pipe@3, P), - {ok, _pipe@4} - end - end. - --spec manhatten_distance(list(float()), list(float())) -> {ok, float()} | - {error, binary()}. -manhatten_distance(Xarr, Yarr) -> - minkowski_distance(Xarr, Yarr, 1.0). - --spec euclidean_distance(list(float()), list(float())) -> {ok, float()} | - {error, binary()}. -euclidean_distance(Xarr, Yarr) -> - minkowski_distance(Xarr, Yarr, 2.0). - --spec mean(list(float())) -> {ok, float()} | {error, binary()}. -mean(Arr) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _pipe@1 = Arr, - _pipe@2 = gleam_community@maths@arithmetics:float_sum(_pipe@1), - _pipe@3 = (fun(A) -> - case gleam_community@maths@conversion:int_to_float( - gleam@list:length(Arr) - ) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> A / Gleam@denominator - end - end)(_pipe@2), - {ok, _pipe@3} - end. - --spec median(list(float())) -> {ok, float()} | {error, binary()}. -median(Arr) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - Count = gleam@list:length(Arr), - Mid = gleam@list:length(Arr) div 2, - Sorted = gleam@list:sort(Arr, fun gleam@float:compare/2), - case gleam_community@maths@predicates:is_odd(Count) of - true -> - _assert_subject = gleam@list:at(Sorted, Mid), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 402}) - end, - _pipe@1 = Val0, - {ok, _pipe@1}; - - false -> - _assert_subject@1 = gleam@list:at(Sorted, Mid - 1), - {ok, Val0@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 409}) - end, - _assert_subject@2 = gleam@list:at(Sorted, Mid), - {ok, Val1} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 410}) - end, - _pipe@2 = [Val0@1, Val1], - mean(_pipe@2) - end - end. - --spec variance(list(float()), integer()) -> {ok, float()} | {error, binary()}. -variance(Arr, Ddof) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - case Ddof < 0 of - true -> - _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, - {error, _pipe@1}; - - false -> - _assert_subject = mean(Arr), - {ok, Mean} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"variance"/utf8>>, - line => 475}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:map( - _pipe@2, - fun(A) -> - _assert_subject@1 = gleam_community@maths@elementary:power( - A - Mean, - 2.0 - ), - {ok, Result} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"variance"/utf8>>, - line => 478}) - end, - Result - end - ), - _pipe@4 = gleam_community@maths@arithmetics:float_sum( - _pipe@3 - ), - _pipe@5 = (fun(A@1) -> - case (gleam_community@maths@conversion:int_to_float( - gleam@list:length(Arr) - ) - - gleam_community@maths@conversion:int_to_float(Ddof)) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> A@1 / Gleam@denominator - end - end)(_pipe@4), - {ok, _pipe@5} - end - end. - --spec standard_deviation(list(float()), integer()) -> {ok, float()} | - {error, binary()}. -standard_deviation(Arr, Ddof) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - case Ddof < 0 of - true -> - _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, - {error, _pipe@1}; - - false -> - _assert_subject = variance(Arr, Ddof), - {ok, Variance} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"standard_deviation"/utf8>>, - line => 551}) - end, - _assert_subject@1 = gleam_community@maths@elementary:square_root( - Variance - ), - {ok, Stdev} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"standard_deviation"/utf8>>, - line => 554}) - end, - _pipe@2 = Stdev, - {ok, _pipe@2} - end - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache deleted file mode 100644 index e056dbf..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta deleted file mode 100644 index 21c97d4..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl deleted file mode 100644 index 85fc290..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.erl +++ /dev/null @@ -1,563 +0,0 @@ --module(gleam_community@maths@piecewise). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([float_absolute_value/1, int_absolute_value/1, float_absolute_difference/2, int_absolute_difference/2, float_sign/1, round/3, ceiling/2, floor/2, truncate/2, int_sign/1, float_flip_sign/1, float_copy_sign/2, int_flip_sign/1, int_copy_sign/2, minimum/3, maximum/3, minmax/3, list_minimum/2, list_maximum/2, arg_minimum/2, arg_maximum/2, extrema/2]). --export_type([rounding_mode/0]). - --type rounding_mode() :: round_nearest | - round_ties_away | - round_ties_up | - round_to_zero | - round_down | - round_up. - --spec truncate_float(float()) -> float(). -truncate_float(X) -> - erlang:trunc(X). - --spec round_to_zero(float(), float()) -> float(). -round_to_zero(P, X) -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> truncate_float(X * P) / Gleam@denominator - end. - --spec round_down(float(), float()) -> float(). -round_down(P, X) -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> math:floor(X * P) / Gleam@denominator - end. - --spec round_up(float(), float()) -> float(). -round_up(P, X) -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> math:ceil(X * P) / Gleam@denominator - end. - --spec float_absolute_value(float()) -> float(). -float_absolute_value(X) -> - case X > +0.0 of - true -> - X; - - false -> - -1.0 * X - end. - --spec int_absolute_value(integer()) -> integer(). -int_absolute_value(X) -> - case X > 0 of - true -> - X; - - false -> - -1 * X - end. - --spec float_absolute_difference(float(), float()) -> float(). -float_absolute_difference(A, B) -> - _pipe = A - B, - float_absolute_value(_pipe). - --spec int_absolute_difference(integer(), integer()) -> integer(). -int_absolute_difference(A, B) -> - _pipe = A - B, - int_absolute_value(_pipe). - --spec do_float_sign(float()) -> float(). -do_float_sign(X) -> - case X < +0.0 of - true -> - -1.0; - - false -> - case X =:= +0.0 of - true -> - +0.0; - - false -> - 1.0 - end - end. - --spec float_sign(float()) -> float(). -float_sign(X) -> - do_float_sign(X). - --spec round_to_nearest(float(), float()) -> float(). -round_to_nearest(P, X) -> - Xabs = float_absolute_value(X) * P, - Xabs_truncated = truncate_float(Xabs), - Remainder = Xabs - Xabs_truncated, - case Remainder of - _ when Remainder > 0.5 -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) - / Gleam@denominator - end; - - _ when Remainder =:= 0.5 -> - _assert_subject = gleam@int:modulo( - gleam_community@maths@conversion:float_to_int(Xabs), - 2 - ), - {ok, Is_even} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"round_to_nearest"/utf8>>, - line => 423}) - end, - case Is_even =:= 0 of - true -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> float_sign(X) * Xabs_truncated / Gleam@denominator@1 - end; - - false -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@2 -> float_sign(X) * truncate_float( - Xabs + 1.0 - ) - / Gleam@denominator@2 - end - end; - - _ -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@3 -> float_sign(X) * Xabs_truncated / Gleam@denominator@3 - end - end. - --spec round_ties_away(float(), float()) -> float(). -round_ties_away(P, X) -> - Xabs = float_absolute_value(X) * P, - Remainder = Xabs - truncate_float(Xabs), - case Remainder of - _ when Remainder >= 0.5 -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) - / Gleam@denominator - end; - - _ -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> float_sign(X) * truncate_float(Xabs) / Gleam@denominator@1 - end - end. - --spec round_ties_up(float(), float()) -> float(). -round_ties_up(P, X) -> - Xabs = float_absolute_value(X) * P, - Xabs_truncated = truncate_float(Xabs), - Remainder = Xabs - Xabs_truncated, - case Remainder of - _ when (Remainder >= 0.5) andalso (X >= +0.0) -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> float_sign(X) * truncate_float(Xabs + 1.0) - / Gleam@denominator - end; - - _ -> - case P of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> float_sign(X) * Xabs_truncated / Gleam@denominator@1 - end - end. - --spec do_round(float(), float(), gleam@option:option(rounding_mode())) -> {ok, - float()} | - {error, binary()}. -do_round(P, X, Mode) -> - case Mode of - {some, round_nearest} -> - _pipe = round_to_nearest(P, X), - {ok, _pipe}; - - {some, round_ties_away} -> - _pipe@1 = round_ties_away(P, X), - {ok, _pipe@1}; - - {some, round_ties_up} -> - _pipe@2 = round_ties_up(P, X), - {ok, _pipe@2}; - - {some, round_to_zero} -> - _pipe@3 = round_to_zero(P, X), - {ok, _pipe@3}; - - {some, round_down} -> - _pipe@4 = round_down(P, X), - {ok, _pipe@4}; - - {some, round_up} -> - _pipe@5 = round_up(P, X), - {ok, _pipe@5}; - - none -> - _pipe@6 = round_to_nearest(P, X), - {ok, _pipe@6} - end. - --spec round( - float(), - gleam@option:option(integer()), - gleam@option:option(rounding_mode()) -) -> {ok, float()} | {error, binary()}. -round(X, Digits, Mode) -> - case Digits of - {some, A} -> - _assert_subject = gleam_community@maths@elementary:power( - 10.0, - gleam_community@maths@conversion:int_to_float(A) - ), - {ok, P} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"round"/utf8>>, - line => 366}) - end, - do_round(P, X, Mode); - - none -> - do_round(1.0, X, Mode) - end. - --spec ceiling(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -ceiling(X, Digits) -> - round(X, Digits, {some, round_up}). - --spec floor(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -floor(X, Digits) -> - round(X, Digits, {some, round_down}). - --spec truncate(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -truncate(X, Digits) -> - round(X, Digits, {some, round_to_zero}). - --spec do_int_sign(integer()) -> integer(). -do_int_sign(X) -> - case X < 0 of - true -> - -1; - - false -> - case X =:= 0 of - true -> - 0; - - false -> - 1 - end - end. - --spec int_sign(integer()) -> integer(). -int_sign(X) -> - do_int_sign(X). - --spec float_flip_sign(float()) -> float(). -float_flip_sign(X) -> - -1.0 * X. - --spec float_copy_sign(float(), float()) -> float(). -float_copy_sign(X, Y) -> - case float_sign(X) =:= float_sign(Y) of - true -> - X; - - false -> - float_flip_sign(X) - end. - --spec int_flip_sign(integer()) -> integer(). -int_flip_sign(X) -> - -1 * X. - --spec int_copy_sign(integer(), integer()) -> integer(). -int_copy_sign(X, Y) -> - case int_sign(X) =:= int_sign(Y) of - true -> - X; - - false -> - int_flip_sign(X) - end. - --spec minimum(PCO, PCO, fun((PCO, PCO) -> gleam@order:order())) -> PCO. -minimum(X, Y, Compare) -> - case Compare(X, Y) of - lt -> - X; - - eq -> - X; - - gt -> - Y - end. - --spec maximum(PCP, PCP, fun((PCP, PCP) -> gleam@order:order())) -> PCP. -maximum(X, Y, Compare) -> - case Compare(X, Y) of - lt -> - Y; - - eq -> - Y; - - gt -> - X - end. - --spec minmax(PCQ, PCQ, fun((PCQ, PCQ) -> gleam@order:order())) -> {PCQ, PCQ}. -minmax(X, Y, Compare) -> - {minimum(X, Y, Compare), maximum(X, Y, Compare)}. - --spec list_minimum(list(PCR), fun((PCR, PCR) -> gleam@order:order())) -> {ok, - PCR} | - {error, binary()}. -list_minimum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"list_minimum"/utf8>>, - line => 945}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - Val0, - fun(Acc, Element) -> case Compare(Element, Acc) of - lt -> - Element; - - _ -> - Acc - end end - ), - {ok, _pipe@2} - end. - --spec list_maximum(list(PCV), fun((PCV, PCV) -> gleam@order:order())) -> {ok, - PCV} | - {error, binary()}. -list_maximum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"list_maximum"/utf8>>, - line => 1004}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - Val0, - fun(Acc, Element) -> case Compare(Acc, Element) of - lt -> - Element; - - _ -> - Acc - end end - ), - {ok, _pipe@2} - end. - --spec arg_minimum(list(PCZ), fun((PCZ, PCZ) -> gleam@order:order())) -> {ok, - list(integer())} | - {error, binary()}. -arg_minimum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = begin - _pipe@1 = Arr, - list_minimum(_pipe@1, Compare) - end, - {ok, Min} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"arg_minimum"/utf8>>, - line => 1069}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:index_map( - _pipe@2, - fun(Index, Element) -> case Compare(Element, Min) of - eq -> - Index; - - _ -> - -1 - end end - ), - _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of - -1 -> - false; - - _ -> - true - end end), - {ok, _pipe@4} - end. - --spec arg_maximum(list(PDE), fun((PDE, PDE) -> gleam@order:order())) -> {ok, - list(integer())} | - {error, binary()}. -arg_maximum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = begin - _pipe@1 = Arr, - list_maximum(_pipe@1, Compare) - end, - {ok, Max} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"arg_maximum"/utf8>>, - line => 1139}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:index_map( - _pipe@2, - fun(Index, Element) -> case Compare(Element, Max) of - eq -> - Index; - - _ -> - -1 - end end - ), - _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of - -1 -> - false; - - _ -> - true - end end), - {ok, _pipe@4} - end. - --spec extrema(list(PDJ), fun((PDJ, PDJ) -> gleam@order:order())) -> {ok, - {PDJ, PDJ}} | - {error, binary()}. -extrema(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val_max} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"extrema"/utf8>>, - line => 1209}) - end, - _assert_subject@1 = gleam@list:at(Arr, 0), - {ok, Val_min} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"extrema"/utf8>>, - line => 1210}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - {Val_min, Val_max}, - fun(Acc, Element) -> - First = gleam@pair:first(Acc), - Second = gleam@pair:second(Acc), - case {Compare(Element, First), Compare(Second, Element)} of - {lt, lt} -> - {Element, Element}; - - {lt, _} -> - {Element, Second}; - - {_, lt} -> - {First, Element}; - - {_, _} -> - {First, Second} - end - end - ), - {ok, _pipe@2} - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache deleted file mode 100644 index e9d8d6b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta deleted file mode 100644 index 549041c..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl deleted file mode 100644 index d991d89..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.erl +++ /dev/null @@ -1,118 +0,0 @@ --module(gleam_community@maths@predicates). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_close/4, all_close/4, is_fractional/1, is_power/2, is_perfect/1, is_even/1, is_odd/1]). - --spec float_absolute_value(float()) -> float(). -float_absolute_value(X) -> - case X > +0.0 of - true -> - X; - - false -> - -1.0 * X - end. - --spec float_absolute_difference(float(), float()) -> float(). -float_absolute_difference(A, B) -> - _pipe = A - B, - float_absolute_value(_pipe). - --spec is_close(float(), float(), float(), float()) -> boolean(). -is_close(A, B, Rtol, Atol) -> - X = float_absolute_difference(A, B), - Y = Atol + (Rtol * float_absolute_value(B)), - case X =< Y of - true -> - true; - - false -> - false - end. - --spec all_close(list(float()), list(float()), float(), float()) -> {ok, - list(boolean())} | - {error, binary()}. -all_close(Xarr, Yarr, Rtol, Atol) -> - Xlen = gleam@list:length(Xarr), - Ylen = gleam@list:length(Yarr), - case Xlen =:= Ylen of - false -> - _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, - {error, _pipe}; - - true -> - _pipe@1 = gleam@list:zip(Xarr, Yarr), - _pipe@2 = gleam@list:map( - _pipe@1, - fun(Z) -> - is_close( - gleam@pair:first(Z), - gleam@pair:second(Z), - Rtol, - Atol - ) - end - ), - {ok, _pipe@2} - end. - --spec is_fractional(float()) -> boolean(). -is_fractional(X) -> - (math:ceil(X) - X) > +0.0. - --spec is_power(integer(), integer()) -> boolean(). -is_power(X, Y) -> - _assert_subject = gleam_community@maths@elementary:logarithm( - gleam@int:to_float(X), - {some, gleam@int:to_float(Y)} - ), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/predicates"/utf8>>, - function => <<"is_power"/utf8>>, - line => 241}) - end, - _assert_subject@1 = gleam_community@maths@piecewise:truncate( - Value, - {some, 0} - ), - {ok, Truncated} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/predicates"/utf8>>, - function => <<"is_power"/utf8>>, - line => 243}) - end, - Rem = Value - Truncated, - Rem =:= +0.0. - --spec do_sum(list(integer())) -> integer(). -do_sum(Arr) -> - case Arr of - [] -> - 0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec is_perfect(integer()) -> boolean(). -is_perfect(N) -> - do_sum(gleam_community@maths@arithmetics:proper_divisors(N)) =:= N. - --spec is_even(integer()) -> boolean(). -is_even(X) -> - (X rem 2) =:= 0. - --spec is_odd(integer()) -> boolean(). -is_odd(X) -> - (X rem 2) /= 0. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache deleted file mode 100644 index 5542bd9..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta deleted file mode 100644 index 3a025a2..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl deleted file mode 100644 index a080286..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.erl +++ /dev/null @@ -1,202 +0,0 @@ --module(gleam_community@maths@sequences). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([arange/3, linear_space/4, logarithmic_space/5, geometric_space/4]). - --spec arange(float(), float(), float()) -> list(float()). -arange(Start, Stop, Step) -> - case ((Start >= Stop) andalso (Step > +0.0)) orelse ((Start =< Stop) andalso (Step - < +0.0)) of - true -> - []; - - false -> - Direction = case Start =< Stop of - true -> - 1.0; - - false -> - -1.0 - end, - Step_abs = gleam_community@maths@piecewise:float_absolute_value( - Step - ), - Num = case Step_abs of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator - end, - _pipe = gleam@list:range( - 0, - gleam_community@maths@conversion:float_to_int(Num) - 1 - ), - gleam@list:map( - _pipe, - fun(I) -> - Start + ((gleam_community@maths@conversion:int_to_float(I) * Step_abs) - * Direction) - end - ) - end. - --spec linear_space(float(), float(), integer(), boolean()) -> {ok, - list(float())} | - {error, binary()}. -linear_space(Start, Stop, Num, Endpoint) -> - Direction = case Start =< Stop of - true -> - 1.0; - - false -> - -1.0 - end, - case Num > 0 of - true -> - case Endpoint of - true -> - Increment = case gleam_community@maths@conversion:int_to_float( - Num - 1 - ) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator - end, - _pipe = gleam@list:range(0, Num - 1), - _pipe@1 = gleam@list:map( - _pipe, - fun(I) -> - Start + ((gleam_community@maths@conversion:int_to_float( - I - ) - * Increment) - * Direction) - end - ), - {ok, _pipe@1}; - - false -> - Increment@1 = case gleam_community@maths@conversion:int_to_float( - Num - ) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator@1 - end, - _pipe@2 = gleam@list:range(0, Num - 1), - _pipe@3 = gleam@list:map( - _pipe@2, - fun(I@1) -> - Start + ((gleam_community@maths@conversion:int_to_float( - I@1 - ) - * Increment@1) - * Direction) - end - ), - {ok, _pipe@3} - end; - - false -> - _pipe@4 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@4} - end. - --spec logarithmic_space(float(), float(), integer(), boolean(), float()) -> {ok, - list(float())} | - {error, binary()}. -logarithmic_space(Start, Stop, Num, Endpoint, Base) -> - case Num > 0 of - true -> - _assert_subject = linear_space(Start, Stop, Num, Endpoint), - {ok, Linspace} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"logarithmic_space"/utf8>>, - line => 221}) - end, - _pipe = Linspace, - _pipe@1 = gleam@list:map( - _pipe, - fun(I) -> - _assert_subject@1 = gleam_community@maths@elementary:power( - Base, - I - ), - {ok, Result} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"logarithmic_space"/utf8>>, - line => 224}) - end, - Result - end - ), - {ok, _pipe@1}; - - false -> - _pipe@2 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@2} - end. - --spec geometric_space(float(), float(), integer(), boolean()) -> {ok, - list(float())} | - {error, binary()}. -geometric_space(Start, Stop, Num, Endpoint) -> - case (Start =:= +0.0) orelse (Stop =:= +0.0) of - true -> - _pipe = <<""/utf8>>, - {error, _pipe}; - - false -> - case Num > 0 of - true -> - _assert_subject = gleam_community@maths@elementary:logarithm_10( - Start - ), - {ok, Log_start} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"geometric_space"/utf8>>, - line => 293}) - end, - _assert_subject@1 = gleam_community@maths@elementary:logarithm_10( - Stop - ), - {ok, Log_stop} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"geometric_space"/utf8>>, - line => 294}) - end, - logarithmic_space(Log_start, Log_stop, Num, Endpoint, 10.0); - - false -> - _pipe@1 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@1} - end - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache deleted file mode 100644 index 7093e86..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta deleted file mode 100644 index 3c21994..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl deleted file mode 100644 index ff0307f..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.erl +++ /dev/null @@ -1,163 +0,0 @@ --module(gleam_community@maths@special). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([erf/1, gamma/1, beta/2, incomplete_gamma/2]). - --spec erf(float()) -> float(). -erf(X) -> - _assert_subject = [0.254829592, - -0.284496736, - 1.421413741, - -1.453152027, - 1.061405429], - [A1, A2, A3, A4, A5] = case _assert_subject of - [_, _, _, _, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"erf"/utf8>>, - line => 79}) - end, - P = 0.3275911, - Sign = gleam_community@maths@piecewise:float_sign(X), - X@1 = gleam_community@maths@piecewise:float_absolute_value(X), - T = case (1.0 + (P * X@1)) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end, - Y = 1.0 - ((((((((((A5 * T) + A4) * T) + A3) * T) + A2) * T) + A1) * T) * gleam_community@maths@elementary:exponential( - (-1.0 * X@1) * X@1 - )), - Sign * Y. - --spec gamma_lanczos(float()) -> float(). -gamma_lanczos(X) -> - case X < 0.5 of - true -> - case (gleam_community@maths@elementary:sin( - gleam_community@maths@elementary:pi() * X - ) - * gamma_lanczos(1.0 - X)) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> gleam_community@maths@elementary:pi() / Gleam@denominator - end; - - false -> - Z = X - 1.0, - X@1 = gleam@list:index_fold( - [0.99999999999980993, - 676.5203681218851, - -1259.1392167224028, - 771.32342877765313, - -176.61502916214059, - 12.507343278686905, - -0.13857109526572012, - 0.0000099843695780195716, - 0.00000015056327351493116], - +0.0, - fun(Acc, V, Index) -> case Index > 0 of - true -> - Acc + (case (Z + gleam_community@maths@conversion:int_to_float( - Index - )) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator@1 -> V / Gleam@denominator@1 - end); - - false -> - V - end end - ), - T = (Z + 7.0) + 0.5, - _assert_subject = gleam_community@maths@elementary:power( - 2.0 * gleam_community@maths@elementary:pi(), - 0.5 - ), - {ok, V1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"gamma_lanczos"/utf8>>, - line => 146}) - end, - _assert_subject@1 = gleam_community@maths@elementary:power( - T, - Z + 0.5 - ), - {ok, V2} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"gamma_lanczos"/utf8>>, - line => 147}) - end, - ((V1 * V2) * gleam_community@maths@elementary:exponential(-1.0 * T)) - * X@1 - end. - --spec gamma(float()) -> float(). -gamma(X) -> - gamma_lanczos(X). - --spec beta(float(), float()) -> float(). -beta(X, Y) -> - case gamma(X + Y) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> gamma(X) * gamma(Y) / Gleam@denominator - end. - --spec incomplete_gamma_sum(float(), float(), float(), float(), float()) -> float(). -incomplete_gamma_sum(A, X, T, S, N) -> - case T of - +0.0 -> - S; - - _ -> - Ns = S + T, - Nt = T * (case (A + N) of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> X / Gleam@denominator - end), - incomplete_gamma_sum(A, X, Nt, Ns, N + 1.0) - end. - --spec incomplete_gamma(float(), float()) -> {ok, float()} | {error, binary()}. -incomplete_gamma(A, X) -> - case (A > +0.0) andalso (X >= +0.0) of - true -> - _assert_subject = gleam_community@maths@elementary:power(X, A), - {ok, V} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"incomplete_gamma"/utf8>>, - line => 173}) - end, - _pipe = (V * gleam_community@maths@elementary:exponential(-1.0 * X)) - * incomplete_gamma_sum(A, X, case A of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end, +0.0, 1.0), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0."/utf8>>, - {error, _pipe@1} - end. diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs b/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs deleted file mode 100644 index 5c5ab31..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/_gleam_artefacts/maths.mjs +++ /dev/null @@ -1,95 +0,0 @@ -export function sin(float) { - return Math.sin(float) -} - -export function pi() { - return Math.PI -} - -export function acos(float) { - return Math.acos(float) -} - -export function acosh(float) { - return Math.acosh(float) -} - -export function asin(float) { - return Math.asin(float) -} - -export function asinh(float) { - return Math.asinh(float) -} - -export function atan(float) { - return Math.atan(float) -} - -export function tan(float) { - return Math.tan(float) -} - -export function atan2(floaty, floatx) { - return Math.atan2(floaty, floatx) -} - -export function atanh(float) { - return Math.atanh(float) -} - -export function cos(float) { - return Math.cos(float) -} - -export function cosh(float) { - return Math.cosh(float) -} - -export function exponential(float) { - return Math.exp(float) -} - -export function ceiling(float) { - return Math.ceil(float) -} - -export function floor(float) { - return Math.floor(float) -} - -export function power(base, exponent) { - return Math.pow(base, exponent) -} - -export function logarithm(float) { - return Math.log(float) -} - -export function logarithm_10(float) { - return Math.log10(float) -} - -export function logarithm_2(float) { - return Math.log2(float) -} - -export function sinh(float) { - return Math.sinh(float) -} - -export function tanh(float) { - return Math.tanh(float) -} - -export function sign(float) { - return Math.sign(float) -} - -export function truncate(float) { - return Math.trunc(float) -} - -export function to_int(float) { - return Math.trunc(float) -} diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam deleted file mode 100644 index 42d317f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@arithmetics.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam deleted file mode 100644 index 5b0dcc5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@combinatorics.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam deleted file mode 100644 index 8e6afb8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@conversion.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam deleted file mode 100644 index a54c3a0..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@elementary.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam deleted file mode 100644 index f55fdc0..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@metrics.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam deleted file mode 100644 index ca3947b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@piecewise.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam deleted file mode 100644 index 8a5ecf4..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@predicates.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam deleted file mode 100644 index d9defae..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@sequences.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam deleted file mode 100644 index edfa64a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community@maths@special.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app b/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app deleted file mode 100644 index b24eaf7..0000000 --- a/aoc2023/build/dev/erlang/gleam_community_maths/ebin/gleam_community_maths.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, gleam_community_maths, [ - {vsn, "1.0.1"}, - {applications, [gleam_stdlib]}, - {description, "A basic maths library"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache deleted file mode 100644 index d44adcc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta deleted file mode 100644 index 12933b2..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl deleted file mode 100644 index 2889892..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.erl +++ /dev/null @@ -1,90 +0,0 @@ --module(gleam@erlang). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([format/1, term_to_binary/1, get_line/1, system_time/1, erlang_timestamp/0, rescue/1, binary_to_term/1, unsafe_binary_to_term/1, start_arguments/0, ensure_all_started/1, make_reference/0, priv_directory/1]). --export_type([safe/0, get_line_error/0, time_unit/0, crash/0, ensure_all_started_error/0, reference_/0]). - --type safe() :: safe. - --type get_line_error() :: eof | no_data. - --type time_unit() :: second | millisecond | microsecond | nanosecond. - --type crash() :: {exited, gleam@dynamic:dynamic_()} | - {thrown, gleam@dynamic:dynamic_()} | - {errored, gleam@dynamic:dynamic_()}. - --type ensure_all_started_error() :: {unknown_application, - gleam@erlang@atom:atom_()} | - {application_failed_to_start, - gleam@erlang@atom:atom_(), - gleam@dynamic:dynamic_()}. - --type reference_() :: any(). - --spec format(any()) -> binary(). -format(Term) -> - unicode:characters_to_binary(io_lib:format(<<"~p"/utf8>>, [Term])). - --spec term_to_binary(any()) -> bitstring(). -term_to_binary(A) -> - erlang:term_to_binary(A). - --spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. -get_line(Prompt) -> - gleam_erlang_ffi:get_line(Prompt). - --spec system_time(time_unit()) -> integer(). -system_time(A) -> - os:system_time(A). - --spec erlang_timestamp() -> {integer(), integer(), integer()}. -erlang_timestamp() -> - os:timestamp(). - --spec rescue(fun(() -> GQE)) -> {ok, GQE} | {error, crash()}. -rescue(A) -> - gleam_erlang_ffi:rescue(A). - --spec binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | - {error, nil}. -binary_to_term(Binary) -> - case gleam_erlang_ffi:rescue( - fun() -> erlang:binary_to_term(Binary, [safe]) end - ) of - {ok, Term} -> - {ok, Term}; - - {error, _} -> - {error, nil} - end. - --spec unsafe_binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | - {error, nil}. -unsafe_binary_to_term(Binary) -> - case gleam_erlang_ffi:rescue(fun() -> erlang:binary_to_term(Binary, []) end) of - {ok, Term} -> - {ok, Term}; - - {error, _} -> - {error, nil} - end. - --spec start_arguments() -> list(binary()). -start_arguments() -> - _pipe = init:get_plain_arguments(), - gleam@list:map(_pipe, fun unicode:characters_to_binary/1). - --spec ensure_all_started(gleam@erlang@atom:atom_()) -> {ok, - list(gleam@erlang@atom:atom_())} | - {error, ensure_all_started_error()}. -ensure_all_started(Application) -> - gleam_erlang_ffi:ensure_all_started(Application). - --spec make_reference() -> reference_(). -make_reference() -> - erlang:make_ref(). - --spec priv_directory(binary()) -> {ok, binary()} | {error, nil}. -priv_directory(Name) -> - gleam_erlang_ffi:priv_directory(Name). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache deleted file mode 100644 index 858e310..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta deleted file mode 100644 index be33011..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl deleted file mode 100644 index e9ad530..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.erl +++ /dev/null @@ -1,26 +0,0 @@ --module(gleam@erlang@atom). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, create_from_string/1, to_string/1, from_dynamic/1]). --export_type([atom_/0, from_string_error/0]). - --type atom_() :: any(). - --type from_string_error() :: atom_not_loaded. - --spec from_string(binary()) -> {ok, atom_()} | {error, from_string_error()}. -from_string(A) -> - gleam_erlang_ffi:atom_from_string(A). - --spec create_from_string(binary()) -> atom_(). -create_from_string(A) -> - erlang:binary_to_atom(A). - --spec to_string(atom_()) -> binary(). -to_string(A) -> - erlang:atom_to_binary(A). - --spec from_dynamic(gleam@dynamic:dynamic_()) -> {ok, atom_()} | - {error, list(gleam@dynamic:decode_error())}. -from_dynamic(From) -> - gleam_erlang_ffi:atom_from_dynamic(From). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache deleted file mode 100644 index 707598f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta deleted file mode 100644 index 82cfdb5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl deleted file mode 100644 index 9f9c0fa..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.erl +++ /dev/null @@ -1,15 +0,0 @@ --module(gleam@erlang@charlist). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_string/1, from_string/1]). --export_type([charlist/0]). - --type charlist() :: any(). - --spec to_string(charlist()) -> binary(). -to_string(A) -> - unicode:characters_to_binary(A). - --spec from_string(binary()) -> charlist(). -from_string(A) -> - unicode:characters_to_list(A). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache deleted file mode 100644 index 3083885..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta deleted file mode 100644 index 1cb342b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl deleted file mode 100644 index 1fe6628..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.erl +++ /dev/null @@ -1,190 +0,0 @@ --module(gleam@erlang@file). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([file_info/1, link_info/1, is_directory/1, is_regular/1, file_exists/1, link_exists/1, make_directory/1, list_directory/1, delete_directory/1, recursive_delete/1, read/1, read_bits/1, write/2, write_bits/2, append/2, append_bits/2, delete/1]). --export_type([reason/0, file_type/0, access/0, file_info/0]). - --type reason() :: eacces | - eagain | - ebadf | - ebadmsg | - ebusy | - edeadlk | - edeadlock | - edquot | - eexist | - efault | - efbig | - eftype | - eintr | - einval | - eio | - eisdir | - eloop | - emfile | - emlink | - emultihop | - enametoolong | - enfile | - enobufs | - enodev | - enolck | - enolink | - enoent | - enomem | - enospc | - enosr | - enostr | - enosys | - enotblk | - enotdir | - enotsup | - enxio | - eopnotsupp | - eoverflow | - eperm | - epipe | - erange | - erofs | - espipe | - esrch | - estale | - etxtbsy | - exdev | - not_utf8. - --type file_type() :: device | directory | other | regular | symlink. - --type access() :: no_access | read | read_write | write. - --type file_info() :: {file_info, - integer(), - file_type(), - access(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer()}. - --spec file_info(binary()) -> {ok, file_info()} | {error, reason()}. -file_info(A) -> - gleam_erlang_ffi:file_info(A). - --spec link_info(binary()) -> {ok, file_info()} | {error, reason()}. -link_info(A) -> - gleam_erlang_ffi:link_info(A). - --spec is_directory(binary()) -> {ok, boolean()} | {error, reason()}. -is_directory(Path) -> - gleam@result:map( - gleam_erlang_ffi:file_info(Path), - fun(_use0) -> - {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, - File_type =:= directory - end - ). - --spec is_regular(binary()) -> {ok, boolean()} | {error, reason()}. -is_regular(Path) -> - gleam@result:map( - gleam_erlang_ffi:file_info(Path), - fun(_use0) -> - {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, - File_type =:= regular - end - ). - --spec file_exists(binary()) -> {ok, boolean()} | {error, reason()}. -file_exists(Path) -> - Result = begin - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:file_info(_pipe), - gleam@result:replace(_pipe@1, true) - end, - case Result of - {error, enoent} -> - {ok, false}; - - _ -> - Result - end. - --spec link_exists(binary()) -> {ok, boolean()} | {error, reason()}. -link_exists(Path) -> - Result = begin - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:link_info(_pipe), - gleam@result:replace(_pipe@1, true) - end, - case Result of - {error, enoent} -> - {ok, false}; - - _ -> - Result - end. - --spec make_directory(binary()) -> {ok, nil} | {error, reason()}. -make_directory(A) -> - gleam_erlang_ffi:make_directory(A). - --spec list_directory(binary()) -> {ok, list(binary())} | {error, reason()}. -list_directory(A) -> - gleam_erlang_ffi:list_directory(A). - --spec delete_directory(binary()) -> {ok, nil} | {error, reason()}. -delete_directory(A) -> - gleam_erlang_ffi:delete_directory(A). - --spec recursive_delete(binary()) -> {ok, nil} | {error, reason()}. -recursive_delete(A) -> - gleam_erlang_ffi:recursive_delete(A). - --spec read(binary()) -> {ok, binary()} | {error, reason()}. -read(Path) -> - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:read_file(_pipe), - gleam@result:then( - _pipe@1, - fun(Content) -> case gleam@bit_array:to_string(Content) of - {ok, String} -> - {ok, String}; - - {error, nil} -> - {error, not_utf8} - end end - ). - --spec read_bits(binary()) -> {ok, bitstring()} | {error, reason()}. -read_bits(Path) -> - gleam_erlang_ffi:read_file(Path). - --spec write(binary(), binary()) -> {ok, nil} | {error, reason()}. -write(Contents, Path) -> - _pipe = Contents, - _pipe@1 = gleam_stdlib:identity(_pipe), - gleam_erlang_ffi:write_file(_pipe@1, Path). - --spec write_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. -write_bits(Contents, Path) -> - gleam_erlang_ffi:write_file(Contents, Path). - --spec append(binary(), binary()) -> {ok, nil} | {error, reason()}. -append(Contents, Path) -> - _pipe = Contents, - _pipe@1 = gleam_stdlib:identity(_pipe), - gleam_erlang_ffi:append_file(_pipe@1, Path). - --spec append_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. -append_bits(Contents, Path) -> - gleam_erlang_ffi:append_file(Contents, Path). - --spec delete(binary()) -> {ok, nil} | {error, reason()}. -delete(A) -> - gleam_erlang_ffi:delete_file(A). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache deleted file mode 100644 index 6c2ad69..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta deleted file mode 100644 index 085886a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl deleted file mode 100644 index f57d029..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@erlang@node). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([self/0, visible/0, connect/1, send/3, to_atom/1]). --export_type([node_/0, do_not_leak/0, connect_error/0]). - --type node_() :: any(). - --type do_not_leak() :: any(). - --type connect_error() :: failed_to_connect | local_node_is_not_alive. - --spec self() -> node_(). -self() -> - erlang:node(). - --spec visible() -> list(node_()). -visible() -> - erlang:nodes(). - --spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} | - {error, connect_error()}. -connect(Node) -> - gleam_erlang_ffi:connect_node(Node). - --spec send(node_(), gleam@erlang@atom:atom_(), any()) -> nil. -send(Node, Name, Message) -> - erlang:send({Name, Node}, Message), - nil. - --spec to_atom(node_()) -> gleam@erlang@atom:atom_(). -to_atom(Node) -> - gleam_erlang_ffi:identity(Node). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache deleted file mode 100644 index 38dabf7..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta deleted file mode 100644 index 1d5fa83..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl deleted file mode 100644 index c05e6c3..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.erl +++ /dev/null @@ -1,27 +0,0 @@ --module(gleam@erlang@os). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_all_env/0, get_env/1, set_env/2, unset_env/1, family/0]). --export_type([os_family/0]). - --type os_family() :: windows_nt | linux | darwin | free_bsd | {other, binary()}. - --spec get_all_env() -> gleam@dict:dict(binary(), binary()). -get_all_env() -> - gleam_erlang_ffi:get_all_env(). - --spec get_env(binary()) -> {ok, binary()} | {error, nil}. -get_env(Name) -> - gleam_erlang_ffi:get_env(Name). - --spec set_env(binary(), binary()) -> nil. -set_env(Name, Value) -> - gleam_erlang_ffi:set_env(Name, Value). - --spec unset_env(binary()) -> nil. -unset_env(Name) -> - gleam_erlang_ffi:unset_env(Name). - --spec family() -> os_family(). -family() -> - gleam_erlang_ffi:os_family(). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache deleted file mode 100644 index 57cc2e6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta deleted file mode 100644 index ad9209c..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl deleted file mode 100644 index abb7144..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.erl +++ /dev/null @@ -1,374 +0,0 @@ --module(gleam@erlang@process). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([self/0, start/2, new_subject/0, subject_owner/1, send/2, new_selector/0, select/2, select_forever/1, map_selector/2, merge_selector/2, flush_messages/0, selecting_trapped_exits/2, selecting/3, 'receive'/2, selecting_record2/3, selecting_record3/3, selecting_record4/3, selecting_record5/3, selecting_record6/3, selecting_record7/3, selecting_record8/3, selecting_anything/2, sleep/1, sleep_forever/0, is_alive/1, monitor_process/1, selecting_process_down/3, demonitor_process/1, try_call/3, call/3, link/1, unlink/1, send_after/3, cancel_timer/1, kill/1, send_exit/1, send_abnormal_exit/2, trap_exits/1, register/2, unregister/1, named/1]). --export_type([pid_/0, subject/1, do_not_leak/0, selector/1, exit_message/0, exit_reason/0, anything_selector_tag/0, process_monitor_flag/0, process_monitor/0, process_down/0, call_error/1, timer/0, cancelled/0, kill_flag/0]). - --type pid_() :: any(). - --opaque subject(GSA) :: {subject, pid_(), gleam@erlang:reference_()} | - {gleam_phantom, GSA}. - --type do_not_leak() :: any(). - --type selector(GSB) :: any() | {gleam_phantom, GSB}. - --type exit_message() :: {exit_message, pid_(), exit_reason()}. - --type exit_reason() :: normal | killed | {abnormal, binary()}. - --type anything_selector_tag() :: anything. - --type process_monitor_flag() :: process. - --opaque process_monitor() :: {process_monitor, gleam@erlang:reference_()}. - --type process_down() :: {process_down, pid_(), gleam@dynamic:dynamic_()}. - --type call_error(GSC) :: {callee_down, gleam@dynamic:dynamic_()} | - call_timeout | - {gleam_phantom, GSC}. - --type timer() :: any(). - --type cancelled() :: timer_not_found | {cancelled, integer()}. - --type kill_flag() :: kill. - --spec self() -> pid_(). -self() -> - erlang:self(). - --spec start(fun(() -> any()), boolean()) -> pid_(). -start(Implementation, Link) -> - case Link of - true -> - erlang:spawn_link(Implementation); - - false -> - erlang:spawn(Implementation) - end. - --spec new_subject() -> subject(any()). -new_subject() -> - {subject, erlang:self(), erlang:make_ref()}. - --spec subject_owner(subject(any())) -> pid_(). -subject_owner(Subject) -> - erlang:element(2, Subject). - --spec send(subject(GSL), GSL) -> nil. -send(Subject, Message) -> - erlang:send( - erlang:element(2, Subject), - {erlang:element(3, Subject), Message} - ), - nil. - --spec new_selector() -> selector(any()). -new_selector() -> - gleam_erlang_ffi:new_selector(). - --spec select(selector(GST), integer()) -> {ok, GST} | {error, nil}. -select(From, Within) -> - gleam_erlang_ffi:select(From, Within). - --spec select_forever(selector(GSX)) -> GSX. -select_forever(From) -> - gleam_erlang_ffi:select(From). - --spec map_selector(selector(GSZ), fun((GSZ) -> GTB)) -> selector(GTB). -map_selector(A, B) -> - gleam_erlang_ffi:map_selector(A, B). - --spec merge_selector(selector(GTD), selector(GTD)) -> selector(GTD). -merge_selector(A, B) -> - gleam_erlang_ffi:merge_selector(A, B). - --spec flush_messages() -> nil. -flush_messages() -> - gleam_erlang_ffi:flush_messages(). - --spec selecting_trapped_exits(selector(GTH), fun((exit_message()) -> GTH)) -> selector(GTH). -selecting_trapped_exits(Selector, Handler) -> - Tag = erlang:binary_to_atom(<<"EXIT"/utf8>>), - Handler@1 = fun(Message) -> - Reason = erlang:element(3, Message), - Normal = gleam@dynamic:from(normal), - Killed = gleam@dynamic:from(killed), - Reason@2 = case gleam@dynamic:string(Reason) of - _ when Reason =:= Normal -> - normal; - - _ when Reason =:= Killed -> - killed; - - {ok, Reason@1} -> - {abnormal, Reason@1}; - - {error, _} -> - {abnormal, gleam@string:inspect(Reason)} - end, - Handler({exit_message, erlang:element(2, Message), Reason@2}) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler@1). - --spec selecting(selector(GTK), subject(GTM), fun((GTM) -> GTK)) -> selector(GTK). -selecting(Selector, Subject, Transform) -> - Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, - gleam_erlang_ffi:insert_selector_handler( - Selector, - {erlang:element(3, Subject), 2}, - Handler - ). - --spec 'receive'(subject(GSN), integer()) -> {ok, GSN} | {error, nil}. -'receive'(Subject, Milliseconds) -> - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = selecting(_pipe, Subject, fun(X) -> X end), - gleam_erlang_ffi:select(_pipe@1, Milliseconds). - --spec selecting_record2( - selector(GTP), - any(), - fun((gleam@dynamic:dynamic_()) -> GTP) -) -> selector(GTP). -selecting_record2(Selector, Tag, Transform) -> - Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 2}, Handler). - --spec selecting_record3( - selector(GTT), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GTT) -) -> selector(GTT). -selecting_record3(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform(erlang:element(2, Message), erlang:element(3, Message)) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler). - --spec selecting_record4( - selector(GTX), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GTX) -) -> selector(GTX). -selecting_record4(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 4}, Handler). - --spec selecting_record5( - selector(GUB), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUB) -) -> selector(GUB). -selecting_record5(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 5}, Handler). - --spec selecting_record6( - selector(GUF), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUF) -) -> selector(GUF). -selecting_record6(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 6}, Handler). - --spec selecting_record7( - selector(GUJ), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUJ) -) -> selector(GUJ). -selecting_record7(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message), - erlang:element(7, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 7}, Handler). - --spec selecting_record8( - selector(GUN), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> GUN) -) -> selector(GUN). -selecting_record8(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message), - erlang:element(7, Message), - erlang:element(8, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 8}, Handler). - --spec selecting_anything(selector(GUR), fun((gleam@dynamic:dynamic_()) -> GUR)) -> selector(GUR). -selecting_anything(Selector, Handler) -> - gleam_erlang_ffi:insert_selector_handler(Selector, anything, Handler). - --spec sleep(integer()) -> nil. -sleep(A) -> - gleam_erlang_ffi:sleep(A). - --spec sleep_forever() -> nil. -sleep_forever() -> - gleam_erlang_ffi:sleep_forever(). - --spec is_alive(pid_()) -> boolean(). -is_alive(A) -> - erlang:is_process_alive(A). - --spec monitor_process(pid_()) -> process_monitor(). -monitor_process(Pid) -> - _pipe = process, - _pipe@1 = erlang:monitor(_pipe, Pid), - {process_monitor, _pipe@1}. - --spec selecting_process_down( - selector(GUZ), - process_monitor(), - fun((process_down()) -> GUZ) -) -> selector(GUZ). -selecting_process_down(Selector, Monitor, Mapping) -> - gleam_erlang_ffi:insert_selector_handler( - Selector, - erlang:element(2, Monitor), - Mapping - ). - --spec demonitor_process(process_monitor()) -> nil. -demonitor_process(Monitor) -> - gleam_erlang_ffi:demonitor(Monitor). - --spec try_call(subject(GVC), fun((subject(GVE)) -> GVC), integer()) -> {ok, GVE} | - {error, call_error(GVE)}. -try_call(Subject, Make_request, Timeout) -> - Reply_subject = new_subject(), - Monitor = monitor_process(subject_owner(Subject)), - send(Subject, Make_request(Reply_subject)), - Result = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = selecting( - _pipe, - Reply_subject, - fun(Field@0) -> {ok, Field@0} end - ), - _pipe@2 = selecting_process_down( - _pipe@1, - Monitor, - fun(Down) -> {error, {callee_down, erlang:element(3, Down)}} end - ), - gleam_erlang_ffi:select(_pipe@2, Timeout) - end, - gleam_erlang_ffi:demonitor(Monitor), - case Result of - {error, nil} -> - {error, call_timeout}; - - {ok, Res} -> - Res - end. - --spec call(subject(GVJ), fun((subject(GVL)) -> GVJ), integer()) -> GVL. -call(Subject, Make_request, Timeout) -> - _assert_subject = try_call(Subject, Make_request, Timeout), - {ok, Resp} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/erlang/process"/utf8>>, - function => <<"call"/utf8>>, - line => 593}) - end, - Resp. - --spec link(pid_()) -> boolean(). -link(Pid) -> - gleam_erlang_ffi:link(Pid). - --spec unlink(pid_()) -> nil. -unlink(Pid) -> - erlang:unlink(Pid), - nil. - --spec send_after(subject(GVO), integer(), GVO) -> timer(). -send_after(Subject, Delay, Message) -> - erlang:send_after( - Delay, - erlang:element(2, Subject), - {erlang:element(3, Subject), Message} - ). - --spec cancel_timer(timer()) -> cancelled(). -cancel_timer(Timer) -> - case gleam@dynamic:int(erlang:cancel_timer(Timer)) of - {ok, I} -> - {cancelled, I}; - - {error, _} -> - timer_not_found - end. - --spec kill(pid_()) -> nil. -kill(Pid) -> - erlang:exit(Pid, kill), - nil. - --spec send_exit(pid_()) -> nil. -send_exit(Pid) -> - erlang:exit(Pid, normal), - nil. - --spec send_abnormal_exit(pid_(), binary()) -> nil. -send_abnormal_exit(Pid, Reason) -> - erlang:exit(Pid, {abnormal, Reason}), - nil. - --spec trap_exits(boolean()) -> nil. -trap_exits(A) -> - gleam_erlang_ffi:trap_exits(A). - --spec register(pid_(), gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. -register(Pid, Name) -> - gleam_erlang_ffi:register_process(Pid, Name). - --spec unregister(gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. -unregister(Name) -> - gleam_erlang_ffi:unregister_process(Name). - --spec named(gleam@erlang@atom:atom_()) -> {ok, pid_()} | {error, nil}. -named(Name) -> - gleam_erlang_ffi:process_named(Name). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl b/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl deleted file mode 100644 index 872126f..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/_gleam_artefacts/gleam_erlang_ffi.erl +++ /dev/null @@ -1,263 +0,0 @@ --module(gleam_erlang_ffi). --export([ - atom_from_dynamic/1, rescue/1, atom_from_string/1, get_line/1, - ensure_all_started/1, sleep/1, os_family/0, sleep_forever/0, read_file/1, - append_file/2, write_file/2, delete_file/1, get_all_env/0, get_env/1, - set_env/2, unset_env/1, delete_directory/1, recursive_delete/1, - list_directory/1, demonitor/1, make_directory/1, new_selector/0, link/1, - insert_selector_handler/3, select/1, select/2, trap_exits/1, map_selector/2, - merge_selector/2, flush_messages/0, file_info/1, link_info/1, - priv_directory/1, connect_node/1, register_process/2, unregister_process/1, - process_named/1, identity/1 -]). - --define(is_posix_error(Error), - Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse - Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse - Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse - Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse - Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse - Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse - Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse - Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse - Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse - Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse - Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse - Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse - Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse - Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse - Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse - Error =:= etxtbsy orelse Error =:= exdev -). - --spec atom_from_string(binary()) -> {ok, atom()} | {error, atom_not_loaded}. -atom_from_string(S) -> - try {ok, binary_to_existing_atom(S)} - catch error:badarg -> {error, atom_not_loaded} - end. - -atom_from_dynamic(Data) when is_atom(Data) -> - {ok, Data}; -atom_from_dynamic(Data) -> - {error, [{decode_error, <<"Atom">>, gleam@dynamic:classify(Data), []}]}. - --spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. -get_line(Prompt) -> - case io:get_line(Prompt) of - eof -> {error, eof}; - {error, _} -> {error, no_data}; - Data when is_binary(Data) -> {ok, Data}; - Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} - end. - -rescue(F) -> - try {ok, F()} - catch - throw:X -> {error, {thrown, X}}; - error:X -> {error, {errored, X}}; - exit:X -> {error, {exited, X}} - end. - -ensure_all_started(Application) -> - case application:ensure_all_started(Application) of - {ok, _} = Ok -> Ok; - - {error, {ProblemApp, {"no such file or directory", _}}} -> - {error, {unknown_application, ProblemApp}} - end. - -sleep(Microseconds) -> - timer:sleep(Microseconds), - nil. - -sleep_forever() -> - timer:sleep(infinity), - nil. - -file_info_result(Result) -> - case Result of - {ok, {file_info, Size, Type, Access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}} when Access =:= none -> - {ok, {file_info, Size, Type, no_access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}}; - {ok, _} -> - Result; - {error, Reason} when ?is_posix_error(Reason) -> - Result - end. - -file_info(Filename) -> - file_info_result(file:read_file_info(Filename, [{time, posix}])). - -link_info(Filename) -> - file_info_result(file:read_link_info(Filename, [{time, posix}])). - -posix_result(Result) -> - case Result of - ok -> {ok, nil}; - {ok, Value} -> {ok, Value}; - {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} - end. - -read_file(Filename) -> - posix_result(file:read_file(Filename)). - -write_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents)). - -append_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents, [append])). - -delete_file(Filename) -> - posix_result(file:delete(Filename)). - -make_directory(Dir) -> - posix_result(file:make_dir(Dir)). - -list_directory(Dir) -> - case file:list_dir(Dir) of - {ok, Filenames} -> - {ok, [list_to_binary(Filename) || Filename <- Filenames]}; - {error, Reason} when ?is_posix_error(Reason) -> - {error, Reason} - end. - -delete_directory(Dir) -> - posix_result(file:del_dir(Dir)). - -recursive_delete(Dir) -> - posix_result(file:del_dir_r(Dir)). - -get_all_env() -> - BinVars = lists:map(fun(VarString) -> - [VarName, VarVal] = string:split(VarString, "="), - {list_to_binary(VarName), list_to_binary(VarVal)} - end, os:getenv()), - maps:from_list(BinVars). - -get_env(Name) -> - case os:getenv(binary_to_list(Name)) of - false -> {error, nil}; - Value -> {ok, list_to_binary(Value)} - end. - -set_env(Name, Value) -> - os:putenv(binary_to_list(Name), binary_to_list(Value)), - nil. - -unset_env(Name) -> - os:unsetenv(binary_to_list(Name)), - nil. - -os_family() -> - case os:type() of - {win32, nt} -> - windows_nt; - {unix, linux} -> - linux; - {unix, darwin} -> - darwin; - {unix, freebsd} -> - free_bsd; - {_, Other} -> - {other, atom_to_binary(Other, utf8)} - end. - -new_selector() -> - {selector, #{}}. - -map_selector({selector, Handlers}, Fn) -> - MappedHandlers = maps:map(fun(_Tag, Handler) -> - fun(Message) -> Fn(Handler(Message)) end - end, Handlers), - {selector, MappedHandlers}. - -merge_selector({selector, HandlersA}, {selector, HandlersB}) -> - {selector, maps:merge(HandlersA, HandlersB)}. - -insert_selector_handler({selector, Handlers}, Tag, Fn) -> - {selector, Handlers#{Tag => Fn}}. - -select(Selector) -> - {ok, Message} = select(Selector, infinity), - Message. - -select({selector, Handlers}, Timeout) -> - AnythingHandler = maps:get(anything, Handlers, undefined), - receive - % Monitored process down messages. - % This is special cased so we can selectively receive based on the - % reference as well as the record tag. - {'DOWN', Ref, process, Pid, Reason} when is_map_key(Ref, Handlers) -> - Fn = maps:get(Ref, Handlers), - {ok, Fn({process_down, Pid, Reason})}; - - Msg when is_map_key({element(1, Msg), tuple_size(Msg)}, Handlers) -> - Fn = maps:get({element(1, Msg), tuple_size(Msg)}, Handlers), - {ok, Fn(Msg)}; - - Msg when AnythingHandler =/= undefined -> - {ok, AnythingHandler(Msg)} - after Timeout -> - {error, nil} - end. - -demonitor({_, Reference}) -> - erlang:demonitor(Reference, [flush]). - -link(Pid) -> - try - erlang:link(Pid) - catch - error:_ -> false - end. - -trap_exits(ShouldTrap) -> - erlang:process_flag(trap_exit, ShouldTrap), - nil. - -flush_messages() -> - receive _Message -> flush_messages() - after 0 -> nil - end. - -priv_directory(Name) -> - try erlang:binary_to_existing_atom(Name) of - Atom -> - case code:priv_dir(Atom) of - {error, _} -> {error, nil}; - Path -> {ok, unicode:characters_to_binary(Path)} - end - catch - error:badarg -> {error, nil} - end. - -connect_node(Node) -> - case net_kernel:connect_node(Node) of - true -> {ok, Node}; - false -> {error, failed_to_connect}; - ignored -> {error, local_node_is_not_alive} - end. - -register_process(Pid, Name) -> - try - true = erlang:register(Name, Pid), - {ok, nil} - catch - error:badarg -> {error, nil} - end. - -unregister_process(Name) -> - try - true = erlang:unregister(Name), - {ok, nil} - catch - error:badarg -> {error, nil} - end. - -process_named(Name) -> - case erlang:whereis(Name) of - Pid when is_pid(Pid) -> {ok, Pid}; - _ -> {error, nil} - end. - -identity(X) -> - X. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam deleted file mode 100644 index d54ec07..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam deleted file mode 100644 index 78d457d..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@atom.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam deleted file mode 100644 index 7624e6e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@charlist.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam deleted file mode 100644 index 972a12b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@file.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam deleted file mode 100644 index 4b2f578..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@node.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam deleted file mode 100644 index c6b8f5e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@os.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam deleted file mode 100644 index 35e940f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam@erlang@process.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app deleted file mode 100644 index 79950ab..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, gleam_erlang, [ - {vsn, "0.23.1"}, - {applications, [gleam_stdlib]}, - {description, "A Gleam library for working with Erlang"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam b/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam deleted file mode 100644 index c659a9c..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_erlang/ebin/gleam_erlang_ffi.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl deleted file mode 100644 index b38d11e..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl +++ /dev/null @@ -1,15 +0,0 @@ --record(file_info, { - size :: integer(), - file_type :: gleam@erlang@file:file_type(), - access :: gleam@erlang@file:access(), - atime :: integer(), - mtime :: integer(), - ctime :: integer(), - mode :: integer(), - links :: integer(), - major_device :: integer(), - minor_device :: integer(), - inode :: integer(), - user_id :: integer(), - group_id :: integer() -}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl deleted file mode 100644 index 4cd0452..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl +++ /dev/null @@ -1 +0,0 @@ --record(abnormal, {reason :: binary()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl deleted file mode 100644 index 5dd5047..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl +++ /dev/null @@ -1 +0,0 @@ --record(callee_down, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl deleted file mode 100644 index b82b49f..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl +++ /dev/null @@ -1 +0,0 @@ --record(cancelled, {time_remaining :: integer()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl deleted file mode 100644 index c476308..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(exit_message, { - pid :: gleam@erlang@process:pid_(), - reason :: gleam@erlang@process:exit_reason() -}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl deleted file mode 100644 index df0b6b7..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(process_down, { - pid :: gleam@erlang@process:pid_(), - reason :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl deleted file mode 100644 index ce552e2..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl +++ /dev/null @@ -1 +0,0 @@ --record(process_monitor, {tag :: gleam@erlang:reference_()}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl deleted file mode 100644 index abc46b2..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang@process_Subject.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(subject, { - owner :: gleam@erlang@process:pid_(), - tag :: gleam@erlang:reference_() -}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl deleted file mode 100644 index 52c9896..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(application_failed_to_start, { - name :: gleam@erlang@atom:atom_(), - reason :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl b/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl deleted file mode 100644 index fde3c61..0000000 --- a/aoc2023/build/dev/erlang/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl +++ /dev/null @@ -1 +0,0 @@ --record(unknown_application, {name :: gleam@erlang@atom:atom_()}). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache deleted file mode 100644 index 0b8931e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta deleted file mode 100644 index dc85da7..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl deleted file mode 100644 index 91ee6e8..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http.erl +++ /dev/null @@ -1,626 +0,0 @@ --module(gleam@http). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse_method/1, method_to_string/1, scheme_to_string/1, scheme_from_string/1, parse_content_disposition/1, parse_multipart_body/2, method_from_dynamic/1, parse_multipart_headers/2]). --export_type([method/0, scheme/0, multipart_headers/0, multipart_body/0, content_disposition/0]). - --type method() :: get | - post | - head | - put | - delete | - trace | - connect | - options | - patch | - {other, binary()}. - --type scheme() :: http | https. - --type multipart_headers() :: {multipart_headers, - list({binary(), binary()}), - bitstring()} | - {more_required_for_headers, - fun((bitstring()) -> {ok, multipart_headers()} | {error, nil})}. - --type multipart_body() :: {multipart_body, bitstring(), boolean(), bitstring()} | - {more_required_for_body, - bitstring(), - fun((bitstring()) -> {ok, multipart_body()} | {error, nil})}. - --type content_disposition() :: {content_disposition, - binary(), - list({binary(), binary()})}. - --spec parse_method(binary()) -> {ok, method()} | {error, nil}. -parse_method(S) -> - case gleam@string:lowercase(S) of - <<"connect"/utf8>> -> - {ok, connect}; - - <<"delete"/utf8>> -> - {ok, delete}; - - <<"get"/utf8>> -> - {ok, get}; - - <<"head"/utf8>> -> - {ok, head}; - - <<"options"/utf8>> -> - {ok, options}; - - <<"patch"/utf8>> -> - {ok, patch}; - - <<"post"/utf8>> -> - {ok, post}; - - <<"put"/utf8>> -> - {ok, put}; - - <<"trace"/utf8>> -> - {ok, trace}; - - _ -> - {error, nil} - end. - --spec method_to_string(method()) -> binary(). -method_to_string(Method) -> - case Method of - connect -> - <<"connect"/utf8>>; - - delete -> - <<"delete"/utf8>>; - - get -> - <<"get"/utf8>>; - - head -> - <<"head"/utf8>>; - - options -> - <<"options"/utf8>>; - - patch -> - <<"patch"/utf8>>; - - post -> - <<"post"/utf8>>; - - put -> - <<"put"/utf8>>; - - trace -> - <<"trace"/utf8>>; - - {other, S} -> - S - end. - --spec scheme_to_string(scheme()) -> binary(). -scheme_to_string(Scheme) -> - case Scheme of - http -> - <<"http"/utf8>>; - - https -> - <<"https"/utf8>> - end. - --spec scheme_from_string(binary()) -> {ok, scheme()} | {error, nil}. -scheme_from_string(Scheme) -> - case gleam@string:lowercase(Scheme) of - <<"http"/utf8>> -> - {ok, http}; - - <<"https"/utf8>> -> - {ok, https}; - - _ -> - {error, nil} - end. - --spec skip_whitespace(bitstring()) -> bitstring(). -skip_whitespace(Data) -> - case Data of - <<32, Data@1/binary>> -> - skip_whitespace(Data@1); - - <<9, Data@1/binary>> -> - skip_whitespace(Data@1); - - _ -> - Data - end. - --spec more_please_headers( - fun((bitstring()) -> {ok, multipart_headers()} | {error, nil}), - bitstring() -) -> {ok, multipart_headers()} | {error, nil}. -more_please_headers(Continuation, Existing) -> - {ok, - {more_required_for_headers, - fun(More) -> - gleam@bool:guard( - More =:= <<>>, - {error, nil}, - fun() -> - Continuation(<>) - end - ) - end}}. - --spec parse_rfc_2045_parameter_quoted_value(binary(), binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter_quoted_value(Header, Name, Value) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {error, nil}; - - {ok, {<<"\""/utf8>>, Rest}} -> - {ok, {{Name, Value}, Rest}}; - - {ok, {<<"\\"/utf8>>, Rest@1}} -> - gleam@result:'try'( - gleam@string:pop_grapheme(Rest@1), - fun(_use0) -> - {Grapheme, Rest@2} = _use0, - parse_rfc_2045_parameter_quoted_value( - Rest@2, - Name, - <> - ) - end - ); - - {ok, {Grapheme@1, Rest@3}} -> - parse_rfc_2045_parameter_quoted_value( - Rest@3, - Name, - <> - ) - end. - --spec parse_rfc_2045_parameter_unquoted_value(binary(), binary(), binary()) -> {{binary(), - binary()}, - binary()}. -parse_rfc_2045_parameter_unquoted_value(Header, Name, Value) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {{Name, Value}, Header}; - - {ok, {<<";"/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {<<" "/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {<<"\t"/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {Grapheme, Rest@1}} -> - parse_rfc_2045_parameter_unquoted_value( - Rest@1, - Name, - <> - ) - end. - --spec parse_rfc_2045_parameter_value(binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter_value(Header, Name) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {error, nil}; - - {ok, {<<"\""/utf8>>, Rest}} -> - parse_rfc_2045_parameter_quoted_value(Rest, Name, <<""/utf8>>); - - {ok, {Grapheme, Rest@1}} -> - {ok, - parse_rfc_2045_parameter_unquoted_value(Rest@1, Name, Grapheme)} - end. - --spec parse_rfc_2045_parameter(binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter(Header, Name) -> - gleam@result:'try'( - gleam@string:pop_grapheme(Header), - fun(_use0) -> - {Grapheme, Rest} = _use0, - case Grapheme of - <<"="/utf8>> -> - parse_rfc_2045_parameter_value(Rest, Name); - - _ -> - parse_rfc_2045_parameter( - Rest, - <> - ) - end - end - ). - --spec parse_rfc_2045_parameters(binary(), list({binary(), binary()})) -> {ok, - list({binary(), binary()})} | - {error, nil}. -parse_rfc_2045_parameters(Header, Parameters) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {ok, gleam@list:reverse(Parameters)}; - - {ok, {<<";"/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {<<" "/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {<<"\t"/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {Grapheme, Rest@1}} -> - Acc = gleam@string:lowercase(Grapheme), - gleam@result:'try'( - parse_rfc_2045_parameter(Rest@1, Acc), - fun(_use0) -> - {Parameter, Rest@2} = _use0, - parse_rfc_2045_parameters(Rest@2, [Parameter | Parameters]) - end - ) - end. - --spec parse_content_disposition_type(binary(), binary()) -> {ok, - content_disposition()} | - {error, nil}. -parse_content_disposition_type(Header, Name) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {ok, {content_disposition, Name, []}}; - - {ok, {<<" "/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {<<"\t"/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {<<";"/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {Grapheme, Rest@1}} -> - parse_content_disposition_type( - Rest@1, - <> - ) - end. - --spec parse_content_disposition(binary()) -> {ok, content_disposition()} | - {error, nil}. -parse_content_disposition(Header) -> - parse_content_disposition_type(Header, <<""/utf8>>). - --spec more_please_body( - fun((bitstring()) -> {ok, multipart_body()} | {error, nil}), - bitstring(), - bitstring() -) -> {ok, multipart_body()} | {error, nil}. -more_please_body(Continuation, Chunk, Existing) -> - _pipe = fun(More) -> - gleam@bool:guard( - More =:= <<>>, - {error, nil}, - fun() -> Continuation(<>) end - ) - end, - _pipe@1 = {more_required_for_body, Chunk, _pipe}, - {ok, _pipe@1}. - --spec parse_body_loop(bitstring(), bitstring(), bitstring()) -> {ok, - multipart_body()} | - {error, nil}. -parse_body_loop(Data, Boundary, Body) -> - Dsize = erlang:byte_size(Data), - Bsize = erlang:byte_size(Boundary), - Required = 6 + Bsize, - case Data of - _ when Dsize < Required -> - more_please_body( - fun(_capture) -> parse_body_loop(_capture, Boundary, <<>>) end, - Body, - Data - ); - - <<13, 10, Data@1/binary>> -> - Desired = <<45, 45, Boundary/bitstring>>, - Size = erlang:byte_size(Desired), - Dsize@1 = erlang:byte_size(Data@1), - Prefix = gleam_stdlib:bit_array_slice(Data@1, 0, Size), - Rest = gleam_stdlib:bit_array_slice(Data@1, Size, Dsize@1 - Size), - case {Prefix =:= {ok, Desired}, Rest} of - {true, {ok, <<13, 10, _/binary>>}} -> - {ok, {multipart_body, Body, false, Data@1}}; - - {true, {ok, <<45, 45, Data@2/binary>>}} -> - {ok, {multipart_body, Body, true, Data@2}}; - - {false, _} -> - parse_body_loop( - Data@1, - Boundary, - <> - ); - - {_, _} -> - {error, nil} - end; - - <> -> - parse_body_loop(Data@3, Boundary, <>) - end. - --spec parse_body_with_bit_array(bitstring(), bitstring()) -> {ok, - multipart_body()} | - {error, nil}. -parse_body_with_bit_array(Data, Boundary) -> - Bsize = erlang:byte_size(Boundary), - Prefix = gleam_stdlib:bit_array_slice(Data, 0, 2 + Bsize), - case Prefix =:= {ok, <<45, 45, Boundary/bitstring>>} of - true -> - {ok, {multipart_body, <<>>, false, Data}}; - - false -> - parse_body_loop(Data, Boundary, <<>>) - end. - --spec parse_multipart_body(bitstring(), binary()) -> {ok, multipart_body()} | - {error, nil}. -parse_multipart_body(Data, Boundary) -> - _pipe = Boundary, - _pipe@1 = gleam_stdlib:identity(_pipe), - parse_body_with_bit_array(Data, _pipe@1). - --spec method_from_dynamic(gleam@dynamic:dynamic_()) -> {ok, method()} | - {error, list(gleam@dynamic:decode_error())}. -method_from_dynamic(Value) -> - case gleam_http_native:decode_method(Value) of - {ok, Method} -> - {ok, Method}; - - {error, _} -> - {error, - [{decode_error, - <<"HTTP method"/utf8>>, - gleam@dynamic:classify(Value), - []}]} - end. - --spec parse_header_value( - bitstring(), - list({binary(), binary()}), - bitstring(), - bitstring() -) -> {ok, multipart_headers()} | {error, nil}. -parse_header_value(Data, Headers, Name, Value) -> - Size = erlang:byte_size(Data), - case Data of - _ when Size < 4 -> - _pipe@2 = fun(Data@1) -> _pipe = Data@1, - _pipe@1 = skip_whitespace(_pipe), - parse_header_value(_pipe@1, Headers, Name, Value) end, - more_please_headers(_pipe@2, Data); - - <<13, 10, 13, 10, Data@2/binary>> -> - gleam@result:'try'( - gleam@bit_array:to_string(Name), - fun(Name@1) -> - gleam@result:map( - gleam@bit_array:to_string(Value), - fun(Value@1) -> - Headers@1 = gleam@list:reverse( - [{gleam@string:lowercase(Name@1), Value@1} | - Headers] - ), - {multipart_headers, Headers@1, Data@2} - end - ) - end - ); - - <<13, 10, 32, Data@3/binary>> -> - parse_header_value(Data@3, Headers, Name, Value); - - <<13, 10, 9, Data@3/binary>> -> - parse_header_value(Data@3, Headers, Name, Value); - - <<13, 10, Data@4/binary>> -> - gleam@result:'try'( - gleam@bit_array:to_string(Name), - fun(Name@2) -> - gleam@result:'try'( - gleam@bit_array:to_string(Value), - fun(Value@2) -> - Headers@2 = [{gleam@string:lowercase(Name@2), - Value@2} | - Headers], - parse_header_name(Data@4, Headers@2, <<>>) - end - ) - end - ); - - <> -> - Value@3 = <>, - parse_header_value(Rest, Headers, Name, Value@3); - - _ -> - {error, nil} - end. - --spec parse_header_name(bitstring(), list({binary(), binary()}), bitstring()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_header_name(Data, Headers, Name) -> - case skip_whitespace(Data) of - <<58, Data@1/binary>> -> - _pipe = Data@1, - _pipe@1 = skip_whitespace(_pipe), - parse_header_value(_pipe@1, Headers, Name, <<>>); - - <> -> - parse_header_name(Data@2, Headers, <>); - - <<>> -> - more_please_headers( - fun(_capture) -> parse_header_name(_capture, Headers, Name) end, - Data - ) - end. - --spec do_parse_headers(bitstring()) -> {ok, multipart_headers()} | {error, nil}. -do_parse_headers(Data) -> - case Data of - <<13, 10, 13, 10, Data@1/binary>> -> - {ok, {multipart_headers, [], Data@1}}; - - <<13, 10, Data@2/binary>> -> - parse_header_name(Data@2, [], <<>>); - - <<13>> -> - more_please_headers(fun do_parse_headers/1, Data); - - <<>> -> - more_please_headers(fun do_parse_headers/1, Data); - - _ -> - {error, nil} - end. - --spec parse_headers_after_prelude(bitstring(), bitstring()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_headers_after_prelude(Data, Boundary) -> - Dsize = erlang:byte_size(Data), - Bsize = erlang:byte_size(Boundary), - Required_size = Bsize + 4, - gleam@bool:guard( - Dsize < Required_size, - more_please_headers( - fun(_capture) -> parse_headers_after_prelude(_capture, Boundary) end, - Data - ), - fun() -> - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data, 0, Required_size - 2), - fun(Prefix) -> - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data, 2 + Bsize, 2), - fun(Second) -> - Desired = <<45, 45, Boundary/bitstring>>, - gleam@bool:guard( - Prefix /= Desired, - {error, nil}, - fun() -> case Second =:= <<45, 45>> of - true -> - Rest_size = Dsize - Required_size, - gleam@result:map( - gleam_stdlib:bit_array_slice( - Data, - Required_size, - Rest_size - ), - fun(Data@1) -> - {multipart_headers, - [], - Data@1} - end - ); - - false -> - Start = Required_size - 2, - Rest_size@1 = (Dsize - Required_size) - + 2, - gleam@result:'try'( - gleam_stdlib:bit_array_slice( - Data, - Start, - Rest_size@1 - ), - fun(Data@2) -> - do_parse_headers(Data@2) - end - ) - end end - ) - end - ) - end - ) - end - ). - --spec skip_preamble(bitstring(), bitstring()) -> {ok, multipart_headers()} | - {error, nil}. -skip_preamble(Data, Boundary) -> - Data_size = erlang:byte_size(Data), - Boundary_size = erlang:byte_size(Boundary), - Required = Boundary_size + 4, - case Data of - _ when Data_size < Required -> - more_please_headers( - fun(_capture) -> skip_preamble(_capture, Boundary) end, - Data - ); - - <<13, 10, 45, 45, Data@1/binary>> -> - case gleam_stdlib:bit_array_slice(Data@1, 0, Boundary_size) of - {ok, Prefix} when Prefix =:= Boundary -> - Start = Boundary_size, - Length = erlang:byte_size(Data@1) - Boundary_size, - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data@1, Start, Length), - fun(Rest) -> do_parse_headers(Rest) end - ); - - {ok, _} -> - skip_preamble(Data@1, Boundary); - - {error, _} -> - {error, nil} - end; - - <<_, Data@2/binary>> -> - skip_preamble(Data@2, Boundary) - end. - --spec parse_multipart_headers(bitstring(), binary()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_multipart_headers(Data, Boundary) -> - Boundary@1 = gleam_stdlib:identity(Boundary), - Prefix = <<45, 45, Boundary@1/bitstring>>, - case gleam_stdlib:bit_array_slice(Data, 0, erlang:byte_size(Prefix)) =:= {ok, - Prefix} of - true -> - parse_headers_after_prelude(Data, Boundary@1); - - false -> - skip_preamble(Data, Boundary@1) - end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache deleted file mode 100644 index 173ac86..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta deleted file mode 100644 index 1f65dce..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl deleted file mode 100644 index 9d6d13e..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.erl +++ /dev/null @@ -1,153 +0,0 @@ --module(gleam@http@cookie). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([defaults/1, set_header/3, parse/1]). --export_type([same_site_policy/0, attributes/0]). - --type same_site_policy() :: lax | strict | none. - --type attributes() :: {attributes, - gleam@option:option(integer()), - gleam@option:option(binary()), - gleam@option:option(binary()), - boolean(), - boolean(), - gleam@option:option(same_site_policy())}. - --spec same_site_to_string(same_site_policy()) -> binary(). -same_site_to_string(Policy) -> - case Policy of - lax -> - <<"Lax"/utf8>>; - - strict -> - <<"Strict"/utf8>>; - - none -> - <<"None"/utf8>> - end. - --spec defaults(gleam@http:scheme()) -> attributes(). -defaults(Scheme) -> - {attributes, - none, - none, - {some, <<"/"/utf8>>}, - Scheme =:= https, - true, - {some, lax}}. - --spec cookie_attributes_to_list(attributes()) -> list(list(binary())). -cookie_attributes_to_list(Attributes) -> - {attributes, Max_age, Domain, Path, Secure, Http_only, Same_site} = Attributes, - _pipe = [case Max_age of - {some, 0} -> - {some, [<<"Expires=Thu, 01 Jan 1970 00:00:00 GMT"/utf8>>]}; - - _ -> - none - end, gleam@option:map( - Max_age, - fun(Max_age@1) -> - [<<"Max-Age="/utf8>>, gleam@int:to_string(Max_age@1)] - end - ), gleam@option:map( - Domain, - fun(Domain@1) -> [<<"Domain="/utf8>>, Domain@1] end - ), gleam@option:map(Path, fun(Path@1) -> [<<"Path="/utf8>>, Path@1] end), case Secure of - true -> - {some, [<<"Secure"/utf8>>]}; - - false -> - none - end, case Http_only of - true -> - {some, [<<"HttpOnly"/utf8>>]}; - - false -> - none - end, gleam@option:map( - Same_site, - fun(Same_site@1) -> - [<<"SameSite="/utf8>>, same_site_to_string(Same_site@1)] - end - )], - gleam@list:filter_map( - _pipe, - fun(_capture) -> gleam@option:to_result(_capture, nil) end - ). - --spec set_header(binary(), binary(), attributes()) -> binary(). -set_header(Name, Value, Attributes) -> - _pipe = [[Name, <<"="/utf8>>, Value] | - cookie_attributes_to_list(Attributes)], - _pipe@1 = gleam@list:map( - _pipe, - fun(_capture) -> gleam@string:join(_capture, <<""/utf8>>) end - ), - gleam@string:join(_pipe@1, <<"; "/utf8>>). - --spec check_token(binary()) -> {ok, nil} | {error, nil}. -check_token(Token) -> - case gleam@string:pop_grapheme(Token) of - {error, nil} -> - {ok, nil}; - - {ok, {<<" "/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\t"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\r"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\n"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\f"/utf8>>, _}} -> - {error, nil}; - - {ok, {_, Rest}} -> - check_token(Rest) - end. - --spec parse(binary()) -> list({binary(), binary()}). -parse(Cookie_string) -> - _assert_subject = gleam@regex:from_string(<<"[,;]"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/http/cookie"/utf8>>, - function => <<"parse"/utf8>>, - line => 101}) - end, - _pipe = gleam@regex:split(Re, Cookie_string), - gleam@list:filter_map( - _pipe, - fun(Pair) -> - case gleam@string:split_once(gleam@string:trim(Pair), <<"="/utf8>>) of - {ok, {<<""/utf8>>, _}} -> - {error, nil}; - - {ok, {Key, Value}} -> - Key@1 = gleam@string:trim(Key), - Value@1 = gleam@string:trim(Value), - gleam@result:then( - check_token(Key@1), - fun(_) -> - gleam@result:then( - check_token(Value@1), - fun(_) -> {ok, {Key@1, Value@1}} end - ) - end - ); - - {error, nil} -> - {error, nil} - end - end - ). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache deleted file mode 100644 index cf9bcd7..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta deleted file mode 100644 index 2108b82..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl deleted file mode 100644 index e41d548..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@request.erl +++ /dev/null @@ -1,202 +0,0 @@ --module(gleam@http@request). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_uri/1, from_uri/1, get_header/2, set_header/3, prepend_header/3, set_body/2, map/2, path_segments/1, get_query/1, set_query/2, set_method/2, new/0, to/1, set_scheme/2, set_host/2, set_port/2, set_path/2, set_cookie/3, get_cookies/1]). --export_type([request/1]). - --type request(IAV) :: {request, - gleam@http:method(), - list({binary(), binary()}), - IAV, - gleam@http:scheme(), - binary(), - gleam@option:option(integer()), - binary(), - gleam@option:option(binary())}. - --spec to_uri(request(any())) -> gleam@uri:uri(). -to_uri(Request) -> - {uri, - {some, gleam@http:scheme_to_string(erlang:element(5, Request))}, - none, - {some, erlang:element(6, Request)}, - erlang:element(7, Request), - erlang:element(8, Request), - erlang:element(9, Request), - none}. - --spec from_uri(gleam@uri:uri()) -> {ok, request(binary())} | {error, nil}. -from_uri(Uri) -> - gleam@result:then( - begin - _pipe = erlang:element(2, Uri), - _pipe@1 = gleam@option:unwrap(_pipe, <<""/utf8>>), - gleam@http:scheme_from_string(_pipe@1) - end, - fun(Scheme) -> - gleam@result:then( - begin - _pipe@2 = erlang:element(4, Uri), - gleam@option:to_result(_pipe@2, nil) - end, - fun(Host) -> - Req = {request, - get, - [], - <<""/utf8>>, - Scheme, - Host, - erlang:element(5, Uri), - erlang:element(6, Uri), - erlang:element(7, Uri)}, - {ok, Req} - end - ) - end - ). - --spec get_header(request(any()), binary()) -> {ok, binary()} | {error, nil}. -get_header(Request, Key) -> - gleam@list:key_find(erlang:element(3, Request), gleam@string:lowercase(Key)). - --spec set_header(request(IBF), binary(), binary()) -> request(IBF). -set_header(Request, Key, Value) -> - Headers = gleam@list:key_set( - erlang:element(3, Request), - gleam@string:lowercase(Key), - Value - ), - erlang:setelement(3, Request, Headers). - --spec prepend_header(request(IBI), binary(), binary()) -> request(IBI). -prepend_header(Request, Key, Value) -> - Headers = [{gleam@string:lowercase(Key), Value} | - erlang:element(3, Request)], - erlang:setelement(3, Request, Headers). - --spec set_body(request(any()), IBN) -> request(IBN). -set_body(Req, Body) -> - {request, Method, Headers, _, Scheme, Host, Port, Path, Query} = Req, - {request, Method, Headers, Body, Scheme, Host, Port, Path, Query}. - --spec map(request(IBP), fun((IBP) -> IBR)) -> request(IBR). -map(Request, Transform) -> - _pipe = erlang:element(4, Request), - _pipe@1 = Transform(_pipe), - set_body(Request, _pipe@1). - --spec path_segments(request(any())) -> list(binary()). -path_segments(Request) -> - _pipe = erlang:element(8, Request), - gleam@uri:path_segments(_pipe). - --spec get_query(request(any())) -> {ok, list({binary(), binary()})} | - {error, nil}. -get_query(Request) -> - case erlang:element(9, Request) of - {some, Query_string} -> - gleam@uri:parse_query(Query_string); - - none -> - {ok, []} - end. - --spec set_query(request(ICB), list({binary(), binary()})) -> request(ICB). -set_query(Req, Query) -> - Pair = fun(T) -> - gleam@string_builder:from_strings( - [erlang:element(1, T), <<"="/utf8>>, erlang:element(2, T)] - ) - end, - Query@1 = begin - _pipe = Query, - _pipe@1 = gleam@list:map(_pipe, Pair), - _pipe@2 = gleam@list:intersperse( - _pipe@1, - gleam@string_builder:from_string(<<"&"/utf8>>) - ), - _pipe@3 = gleam@string_builder:concat(_pipe@2), - _pipe@4 = gleam@string_builder:to_string(_pipe@3), - {some, _pipe@4} - end, - erlang:setelement(9, Req, Query@1). - --spec set_method(request(ICF), gleam@http:method()) -> request(ICF). -set_method(Req, Method) -> - erlang:setelement(2, Req, Method). - --spec new() -> request(binary()). -new() -> - {request, - get, - [], - <<""/utf8>>, - https, - <<"localhost"/utf8>>, - none, - <<""/utf8>>, - none}. - --spec to(binary()) -> {ok, request(binary())} | {error, nil}. -to(Url) -> - _pipe = Url, - _pipe@1 = gleam@uri:parse(_pipe), - gleam@result:then(_pipe@1, fun from_uri/1). - --spec set_scheme(request(ICM), gleam@http:scheme()) -> request(ICM). -set_scheme(Req, Scheme) -> - erlang:setelement(5, Req, Scheme). - --spec set_host(request(ICP), binary()) -> request(ICP). -set_host(Req, Host) -> - erlang:setelement(6, Req, Host). - --spec set_port(request(ICS), integer()) -> request(ICS). -set_port(Req, Port) -> - erlang:setelement(7, Req, {some, Port}). - --spec set_path(request(ICV), binary()) -> request(ICV). -set_path(Req, Path) -> - erlang:setelement(8, Req, Path). - --spec set_cookie(request(ICY), binary(), binary()) -> request(ICY). -set_cookie(Req, Name, Value) -> - New_cookie_string = gleam@string:join([Name, Value], <<"="/utf8>>), - {Cookies_string@2, Headers@1} = case gleam@list:key_pop( - erlang:element(3, Req), - <<"cookie"/utf8>> - ) of - {ok, {Cookies_string, Headers}} -> - Cookies_string@1 = gleam@string:join( - [Cookies_string, New_cookie_string], - <<"; "/utf8>> - ), - {Cookies_string@1, Headers}; - - {error, nil} -> - {New_cookie_string, erlang:element(3, Req)} - end, - erlang:setelement( - 3, - Req, - [{<<"cookie"/utf8>>, Cookies_string@2} | Headers@1] - ). - --spec get_cookies(request(any())) -> list({binary(), binary()}). -get_cookies(Req) -> - {request, _, Headers, _, _, _, _, _, _} = Req, - _pipe = Headers, - _pipe@1 = gleam@list:filter_map( - _pipe, - fun(Header) -> - {Name, Value} = Header, - case Name of - <<"cookie"/utf8>> -> - {ok, gleam@http@cookie:parse(Value)}; - - _ -> - {error, nil} - end - end - ), - gleam@list:flatten(_pipe@1). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache deleted file mode 100644 index 5656963..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta deleted file mode 100644 index 1f05041..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl deleted file mode 100644 index 300726a..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@response.erl +++ /dev/null @@ -1,97 +0,0 @@ --module(gleam@http@response). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/1, get_header/2, set_header/3, prepend_header/3, set_body/2, try_map/2, map/2, redirect/1, get_cookies/1, set_cookie/4, expire_cookie/3]). --export_type([response/1]). - --type response(HXJ) :: {response, integer(), list({binary(), binary()}), HXJ}. - --spec new(integer()) -> response(binary()). -new(Status) -> - {response, Status, [], <<""/utf8>>}. - --spec get_header(response(any()), binary()) -> {ok, binary()} | {error, nil}. -get_header(Response, Key) -> - gleam@list:key_find( - erlang:element(3, Response), - gleam@string:lowercase(Key) - ). - --spec set_header(response(HXY), binary(), binary()) -> response(HXY). -set_header(Response, Key, Value) -> - Headers = gleam@list:key_set( - erlang:element(3, Response), - gleam@string:lowercase(Key), - Value - ), - erlang:setelement(3, Response, Headers). - --spec prepend_header(response(HYB), binary(), binary()) -> response(HYB). -prepend_header(Response, Key, Value) -> - Headers = [{gleam@string:lowercase(Key), Value} | - erlang:element(3, Response)], - erlang:setelement(3, Response, Headers). - --spec set_body(response(any()), HYG) -> response(HYG). -set_body(Response, Body) -> - {response, Status, Headers, _} = Response, - {response, Status, Headers, Body}. - --spec try_map(response(HXK), fun((HXK) -> {ok, HXM} | {error, HXN})) -> {ok, - response(HXM)} | - {error, HXN}. -try_map(Response, Transform) -> - gleam@result:then( - Transform(erlang:element(4, Response)), - fun(Body) -> {ok, set_body(Response, Body)} end - ). - --spec map(response(HYI), fun((HYI) -> HYK)) -> response(HYK). -map(Response, Transform) -> - _pipe = erlang:element(4, Response), - _pipe@1 = Transform(_pipe), - set_body(Response, _pipe@1). - --spec redirect(binary()) -> response(binary()). -redirect(Uri) -> - {response, - 303, - [{<<"location"/utf8>>, Uri}], - gleam@string:append(<<"You are being redirected to "/utf8>>, Uri)}. - --spec get_cookies(response(any())) -> list({binary(), binary()}). -get_cookies(Resp) -> - {response, _, Headers, _} = Resp, - _pipe = Headers, - _pipe@1 = gleam@list:filter_map( - _pipe, - fun(Header) -> - {Name, Value} = Header, - case Name of - <<"set-cookie"/utf8>> -> - {ok, gleam@http@cookie:parse(Value)}; - - _ -> - {error, nil} - end - end - ), - gleam@list:flatten(_pipe@1). - --spec set_cookie( - response(HYP), - binary(), - binary(), - gleam@http@cookie:attributes() -) -> response(HYP). -set_cookie(Response, Name, Value, Attributes) -> - prepend_header( - Response, - <<"set-cookie"/utf8>>, - gleam@http@cookie:set_header(Name, Value, Attributes) - ). - --spec expire_cookie(response(HYS), binary(), gleam@http@cookie:attributes()) -> response(HYS). -expire_cookie(Response, Name, Attributes) -> - Attrs = erlang:setelement(2, Attributes, {some, 0}), - set_cookie(Response, Name, <<""/utf8>>, Attrs). diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache deleted file mode 100644 index 2bdc561..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta deleted file mode 100644 index c0222d6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl deleted file mode 100644 index 7aa0ed5..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam@http@service.erl +++ /dev/null @@ -1,82 +0,0 @@ --module(gleam@http@service). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([map_response_body/2, prepend_response_header/3, method_override/1]). - --spec map_response_body( - fun((gleam@http@request:request(IIL)) -> gleam@http@response:response(IIM)), - fun((IIM) -> IIP) -) -> fun((gleam@http@request:request(IIL)) -> gleam@http@response:response(IIP)). -map_response_body(Service, Mapper) -> - fun(Req) -> _pipe = Req, - _pipe@1 = Service(_pipe), - gleam@http@response:map(_pipe@1, Mapper) end. - --spec prepend_response_header( - fun((gleam@http@request:request(IIS)) -> gleam@http@response:response(IIT)), - binary(), - binary() -) -> fun((gleam@http@request:request(IIS)) -> gleam@http@response:response(IIT)). -prepend_response_header(Service, Key, Value) -> - fun(Req) -> _pipe = Req, - _pipe@1 = Service(_pipe), - gleam@http@response:prepend_header(_pipe@1, Key, Value) end. - --spec ensure_post(gleam@http@request:request(IIY)) -> {ok, - gleam@http@request:request(IIY)} | - {error, nil}. -ensure_post(Req) -> - case erlang:element(2, Req) of - post -> - {ok, Req}; - - _ -> - {error, nil} - end. - --spec get_override_method(gleam@http@request:request(any())) -> {ok, - gleam@http:method()} | - {error, nil}. -get_override_method(Request) -> - gleam@result:then( - gleam@http@request:get_query(Request), - fun(Query_params) -> - gleam@result:then( - gleam@list:key_find(Query_params, <<"_method"/utf8>>), - fun(Method) -> - gleam@result:then( - gleam@http:parse_method(Method), - fun(Method@1) -> case Method@1 of - put -> - {ok, Method@1}; - - patch -> - {ok, Method@1}; - - delete -> - {ok, Method@1}; - - _ -> - {error, nil} - end end - ) - end - ) - end - ). - --spec method_override( - fun((gleam@http@request:request(IJF)) -> gleam@http@response:response(IJG)) -) -> fun((gleam@http@request:request(IJF)) -> gleam@http@response:response(IJG)). -method_override(Service) -> - fun(Request) -> _pipe = Request, - _pipe@1 = ensure_post(_pipe), - _pipe@2 = gleam@result:then(_pipe@1, fun get_override_method/1), - _pipe@3 = gleam@result:map( - _pipe@2, - fun(_capture) -> - gleam@http@request:set_method(Request, _capture) - end - ), - _pipe@4 = gleam@result:unwrap(_pipe@3, Request), - Service(_pipe@4) end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl deleted file mode 100644 index bb499bb..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.erl +++ /dev/null @@ -1,88 +0,0 @@ --module(gleam_http_native). --export([decode_method/1]). - -decode_method(Term) -> - case Term of - "connect" -> {ok, connect}; - "delete" -> {ok, delete}; - "get" -> {ok, get}; - "head" -> {ok, head}; - "options" -> {ok, options}; - "patch" -> {ok, patch}; - "post" -> {ok, post}; - "put" -> {ok, put}; - "trace" -> {ok, trace}; - "CONNECT" -> {ok, connect}; - "DELETE" -> {ok, delete}; - "GET" -> {ok, get}; - "HEAD" -> {ok, head}; - "OPTIONS" -> {ok, options}; - "PATCH" -> {ok, patch}; - "POST" -> {ok, post}; - "PUT" -> {ok, put}; - "TRACE" -> {ok, trace}; - "Connect" -> {ok, connect}; - "Delete" -> {ok, delete}; - "Get" -> {ok, get}; - "Head" -> {ok, head}; - "Options" -> {ok, options}; - "Patch" -> {ok, patch}; - "Post" -> {ok, post}; - "Put" -> {ok, put}; - "Trace" -> {ok, trace}; - 'connect' -> {ok, connect}; - 'delete' -> {ok, delete}; - 'get' -> {ok, get}; - 'head' -> {ok, head}; - 'options' -> {ok, options}; - 'patch' -> {ok, patch}; - 'post' -> {ok, post}; - 'put' -> {ok, put}; - 'trace' -> {ok, trace}; - 'CONNECT' -> {ok, connect}; - 'DELETE' -> {ok, delete}; - 'GET' -> {ok, get}; - 'HEAD' -> {ok, head}; - 'OPTIONS' -> {ok, options}; - 'PATCH' -> {ok, patch}; - 'POST' -> {ok, post}; - 'PUT' -> {ok, put}; - 'TRACE' -> {ok, trace}; - 'Connect' -> {ok, connect}; - 'Delete' -> {ok, delete}; - 'Get' -> {ok, get}; - 'Head' -> {ok, head}; - 'Options' -> {ok, options}; - 'Patch' -> {ok, patch}; - 'Post' -> {ok, post}; - 'Put' -> {ok, put}; - 'Trace' -> {ok, trace}; - <<"connect">> -> {ok, connect}; - <<"delete">> -> {ok, delete}; - <<"get">> -> {ok, get}; - <<"head">> -> {ok, head}; - <<"options">> -> {ok, options}; - <<"patch">> -> {ok, patch}; - <<"post">> -> {ok, post}; - <<"put">> -> {ok, put}; - <<"trace">> -> {ok, trace}; - <<"CONNECT">> -> {ok, connect}; - <<"DELETE">> -> {ok, delete}; - <<"GET">> -> {ok, get}; - <<"HEAD">> -> {ok, head}; - <<"OPTIONS">> -> {ok, options}; - <<"PATCH">> -> {ok, patch}; - <<"POST">> -> {ok, post}; - <<"PUT">> -> {ok, put}; - <<"TRACE">> -> {ok, trace}; - <<"Connect">> -> {ok, connect}; - <<"Delete">> -> {ok, delete}; - <<"Get">> -> {ok, get}; - <<"Head">> -> {ok, head}; - <<"Options">> -> {ok, options}; - <<"Patch">> -> {ok, patch}; - <<"Post">> -> {ok, post}; - <<"Put">> -> {ok, put}; - <<"Trace">> -> {ok, trace}; - _ -> {error, nil} - end. diff --git a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs b/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs deleted file mode 100644 index c871a8b..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/_gleam_artefacts/gleam_http_native.mjs +++ /dev/null @@ -1,38 +0,0 @@ -import { Ok, Error } from "./gleam.mjs"; -import { - Get, - Post, - Head, - Put, - Delete, - Trace, - Connect, - Options, - Patch, -} from "./gleam/http.mjs"; - -export function decode_method(value) { - try { - switch (value.toLowerCase()) { - case "get": - return new Ok(new Get()); - case "post": - return new Ok(new Post()); - case "head": - return new Ok(new Head()); - case "put": - return new Ok(new Put()); - case "delete": - return new Ok(new Delete()); - case "trace": - return new Ok(new Trace()); - case "connect": - return new Ok(new Connect()); - case "options": - return new Ok(new Options()); - case "patch": - return new Ok(new Patch()); - } - } catch {} - return new Error(undefined); -} diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam deleted file mode 100644 index 39142e6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam deleted file mode 100644 index 905fe68..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@cookie.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam deleted file mode 100644 index f499969..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@request.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam deleted file mode 100644 index 1554f40..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@response.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam deleted file mode 100644 index aa271f1..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam@http@service.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app deleted file mode 100644 index 5f55c6f..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, gleam_http, [ - {vsn, "3.5.2"}, - {applications, [gleam_stdlib]}, - {description, "Types and functions for Gleam HTTP clients and servers"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam b/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam deleted file mode 100644 index 0b5e282..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_http/ebin/gleam_http_native.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl deleted file mode 100644 index 78a7d02..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@cookie_Attributes.hrl +++ /dev/null @@ -1,8 +0,0 @@ --record(attributes, { - max_age :: gleam@option:option(integer()), - domain :: gleam@option:option(binary()), - path :: gleam@option:option(binary()), - secure :: boolean(), - http_only :: boolean(), - same_site :: gleam@option:option(gleam@http@cookie:same_site_policy()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl deleted file mode 100644 index c8bbae6..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@request_Request.hrl +++ /dev/null @@ -1,10 +0,0 @@ --record(request, { - method :: gleam@http:method(), - headers :: list({binary(), binary()}), - body :: any(), - scheme :: gleam@http:scheme(), - host :: binary(), - port :: gleam@option:option(integer()), - path :: binary(), - 'query' :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl deleted file mode 100644 index ba6f077..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http@response_Response.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(response, { - status :: integer(), - headers :: list({binary(), binary()}), - body :: any() -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl deleted file mode 100644 index abd56dd..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForBody.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(more_required_for_body, { - chunk :: bitstring(), - continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_body()} | - {error, nil}) -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl deleted file mode 100644 index 43729c1..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(more_required_for_headers, { - continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_headers()} | - {error, nil}) -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl deleted file mode 100644 index 4521591..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartBody.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(multipart_body, { - chunk :: bitstring(), - done :: boolean(), - remaining :: bitstring() -}). diff --git a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl b/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl deleted file mode 100644 index d9fca5c..0000000 --- a/aoc2023/build/dev/erlang/gleam_http/include/gleam@http_MultipartHeaders.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(multipart_headers, { - headers :: list({binary(), binary()}), - remaining :: bitstring() -}). diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache deleted file mode 100644 index 59082af..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta deleted file mode 100644 index a340156..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl b/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl deleted file mode 100644 index 1d634df..0000000 --- a/aoc2023/build/dev/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.erl +++ /dev/null @@ -1,118 +0,0 @@ --module(gleam@httpc). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([send_bits/1, send/1]). --export_type([charlist/0, erl_http_option/0, body_format/0, erl_option/0]). - --type charlist() :: any(). - --type erl_http_option() :: any(). - --type body_format() :: binary. - --type erl_option() :: {body_format, body_format()}. - --spec charlist_header({binary(), binary()}) -> {charlist(), charlist()}. -charlist_header(Header) -> - {K, V} = Header, - {erlang:binary_to_list(K), erlang:binary_to_list(V)}. - --spec string_header({charlist(), charlist()}) -> {binary(), binary()}. -string_header(Header) -> - {K, V} = Header, - {erlang:list_to_binary(K), erlang:list_to_binary(V)}. - --spec send_bits(gleam@http@request:request(bitstring())) -> {ok, - gleam@http@response:response(bitstring())} | - {error, gleam@dynamic:dynamic_()}. -send_bits(Req) -> - Erl_url = begin - _pipe = Req, - _pipe@1 = gleam@http@request:to_uri(_pipe), - _pipe@2 = gleam@uri:to_string(_pipe@1), - erlang:binary_to_list(_pipe@2) - end, - Erl_headers = gleam@list:map(erlang:element(3, Req), fun charlist_header/1), - Erl_http_options = [], - Erl_options = [{body_format, binary}], - gleam@result:then(case erlang:element(2, Req) of - options -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - head -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - get -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - _ -> - Erl_content_type = begin - _pipe@3 = Req, - _pipe@4 = gleam@http@request:get_header( - _pipe@3, - <<"content-type"/utf8>> - ), - _pipe@5 = gleam@result:unwrap( - _pipe@4, - <<"application/octet-stream"/utf8>> - ), - erlang:binary_to_list(_pipe@5) - end, - Erl_req@1 = {Erl_url, - Erl_headers, - Erl_content_type, - erlang:element(4, Req)}, - httpc:request( - erlang:element(2, Req), - Erl_req@1, - Erl_http_options, - Erl_options - ) - end, fun(Response) -> - {{_, Status, _}, Headers, Resp_body} = Response, - {ok, - {response, - Status, - gleam@list:map(Headers, fun string_header/1), - Resp_body}} - end). - --spec send(gleam@http@request:request(binary())) -> {ok, - gleam@http@response:response(binary())} | - {error, gleam@dynamic:dynamic_()}. -send(Req) -> - gleam@result:then( - begin - _pipe = Req, - _pipe@1 = gleam@http@request:map(_pipe, fun gleam_stdlib:identity/1), - send_bits(_pipe@1) - end, - fun(Resp) -> case gleam@bit_array:to_string(erlang:element(4, Resp)) of - {ok, Body} -> - {ok, gleam@http@response:set_body(Resp, Body)}; - - {error, _} -> - {error, - gleam@dynamic:from( - <<"Response body was not valid UTF-8"/utf8>> - )} - end end - ). diff --git a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam deleted file mode 100644 index 1edf411..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam@httpc.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app b/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app deleted file mode 100644 index c99b5ea..0000000 --- a/aoc2023/build/dev/erlang/gleam_httpc/ebin/gleam_httpc.app +++ /dev/null @@ -1,10 +0,0 @@ -{application, gleam_httpc, [ - {vsn, "2.1.1"}, - {applications, [gleam_http, - gleam_stdlib, - inets, - ssl]}, - {description, "Gleam bindings to Erlang's built in HTTP client, httpc"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache deleted file mode 100644 index 5aa9880..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta deleted file mode 100644 index d5f2a3e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl deleted file mode 100644 index 9b215cb..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.erl +++ /dev/null @@ -1,273 +0,0 @@ --module(gleam@otp@actor). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([continue/1, with_selector/2, to_erlang_start_result/1, start_spec/1, start/2, send/2, call/3]). --export_type([message/1, next/2, init_result/2, self/2, spec/2, start_error/0, start_init_message/1]). - --type message(LTB) :: {message, LTB} | - {system, gleam@otp@system:system_message()} | - {unexpected, gleam@dynamic:dynamic_()}. - --type next(LTC, LTD) :: {continue, - LTD, - gleam@option:option(gleam@erlang@process:selector(LTC))} | - {stop, gleam@erlang@process:exit_reason()}. - --type init_result(LTE, LTF) :: {ready, LTE, gleam@erlang@process:selector(LTF)} | - {failed, binary()}. - --type self(LTG, LTH) :: {self, - gleam@otp@system:mode(), - gleam@erlang@process:pid_(), - LTG, - gleam@erlang@process:subject(LTH), - gleam@erlang@process:selector(message(LTH)), - gleam@otp@system:debug_state(), - fun((LTH, LTG) -> next(LTH, LTG))}. - --type spec(LTI, LTJ) :: {spec, - fun(() -> init_result(LTI, LTJ)), - integer(), - fun((LTJ, LTI) -> next(LTJ, LTI))}. - --type start_error() :: init_timeout | - {init_failed, gleam@erlang@process:exit_reason()} | - {init_crashed, gleam@dynamic:dynamic_()}. - --type start_init_message(LTK) :: {ack, - {ok, gleam@erlang@process:subject(LTK)} | - {error, gleam@erlang@process:exit_reason()}} | - {mon, gleam@erlang@process:process_down()}. - --spec continue(LTR) -> next(any(), LTR). -continue(State) -> - {continue, State, none}. - --spec with_selector(next(LTV, LTW), gleam@erlang@process:selector(LTV)) -> next(LTV, LTW). -with_selector(Value, Selector) -> - case Value of - {continue, State, _} -> - {continue, State, {some, Selector}}; - - _ -> - Value - end. - --spec exit_process(gleam@erlang@process:exit_reason()) -> gleam@erlang@process:exit_reason(). -exit_process(Reason) -> - Reason. - --spec selecting_system_messages(gleam@erlang@process:selector(message(LUH))) -> gleam@erlang@process:selector(message(LUH)). -selecting_system_messages(Selector) -> - _pipe = Selector, - gleam@erlang@process:selecting_record3( - _pipe, - erlang:binary_to_atom(<<"system"/utf8>>), - fun gleam_otp_external:convert_system_message/2 - ). - --spec receive_message(self(any(), LUD)) -> message(LUD). -receive_message(Self) -> - Selector = case erlang:element(2, Self) of - suspended -> - _pipe = gleam_erlang_ffi:new_selector(), - selecting_system_messages(_pipe); - - running -> - _pipe@1 = gleam_erlang_ffi:new_selector(), - _pipe@2 = gleam@erlang@process:selecting_anything( - _pipe@1, - fun(Field@0) -> {unexpected, Field@0} end - ), - _pipe@3 = gleam_erlang_ffi:merge_selector( - _pipe@2, - erlang:element(6, Self) - ), - selecting_system_messages(_pipe@3) - end, - gleam_erlang_ffi:select(Selector). - --spec process_status_info(self(any(), any())) -> gleam@otp@system:status_info(). -process_status_info(Self) -> - {status_info, - erlang:binary_to_atom(<<"gleam@otp@actor"/utf8>>), - erlang:element(3, Self), - erlang:element(2, Self), - erlang:element(7, Self), - gleam@dynamic:from(erlang:element(4, Self))}. - --spec init_selector( - gleam@erlang@process:subject(LYW), - gleam@erlang@process:selector(LYW) -) -> gleam@erlang@process:selector(message(LYW)). -init_selector(Subject, Selector) -> - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Subject, - fun(Field@0) -> {message, Field@0} end - ), - gleam_erlang_ffi:merge_selector( - _pipe@1, - gleam_erlang_ffi:map_selector( - Selector, - fun(Field@0) -> {message, Field@0} end - ) - ). - --spec loop(self(any(), any())) -> gleam@erlang@process:exit_reason(). -loop(Self) -> - case receive_message(Self) of - {system, System} -> - case System of - {get_state, Callback} -> - Callback(gleam@dynamic:from(erlang:element(4, Self))), - loop(Self); - - {resume, Callback@1} -> - Callback@1(), - loop(erlang:setelement(2, Self, running)); - - {suspend, Callback@2} -> - Callback@2(), - loop(erlang:setelement(2, Self, suspended)); - - {get_status, Callback@3} -> - Callback@3(process_status_info(Self)), - loop(Self) - end; - - {unexpected, Message} -> - logger:warning( - unicode:characters_to_list( - <<"Actor discarding unexpected message: ~s"/utf8>> - ), - [unicode:characters_to_list(gleam@string:inspect(Message))] - ), - loop(Self); - - {message, Msg} -> - case (erlang:element(8, Self))(Msg, erlang:element(4, Self)) of - {stop, Reason} -> - exit_process(Reason); - - {continue, State, New_selector} -> - Selector = begin - _pipe = New_selector, - _pipe@1 = gleam@option:map( - _pipe, - fun(_capture) -> - init_selector(erlang:element(5, Self), _capture) - end - ), - gleam@option:unwrap(_pipe@1, erlang:element(6, Self)) - end, - loop( - erlang:setelement( - 6, - erlang:setelement(4, Self, State), - Selector - ) - ) - end - end. - --spec initialise_actor( - spec(any(), LUY), - gleam@erlang@process:subject({ok, gleam@erlang@process:subject(LUY)} | - {error, gleam@erlang@process:exit_reason()}) -) -> gleam@erlang@process:exit_reason(). -initialise_actor(Spec, Ack) -> - Subject = gleam@erlang@process:new_subject(), - case (erlang:element(2, Spec))() of - {ready, State, Selector} -> - Selector@1 = init_selector(Subject, Selector), - gleam@erlang@process:send(Ack, {ok, Subject}), - Self = {self, - running, - gleam@erlang@process:subject_owner(Ack), - State, - Subject, - Selector@1, - sys:debug_options([]), - erlang:element(4, Spec)}, - loop(Self); - - {failed, Reason} -> - gleam@erlang@process:send(Ack, {error, {abnormal, Reason}}), - exit_process({abnormal, Reason}) - end. - --spec to_erlang_start_result( - {ok, gleam@erlang@process:subject(any())} | {error, start_error()} -) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. -to_erlang_start_result(Res) -> - case Res of - {ok, X} -> - {ok, gleam@erlang@process:subject_owner(X)}; - - {error, X@1} -> - {error, gleam@dynamic:from(X@1)} - end. - --spec start_spec(spec(any(), LVM)) -> {ok, gleam@erlang@process:subject(LVM)} | - {error, start_error()}. -start_spec(Spec) -> - Ack_subject = gleam@erlang@process:new_subject(), - Child = gleam@erlang@process:start( - fun() -> initialise_actor(Spec, Ack_subject) end, - true - ), - Monitor = gleam@erlang@process:monitor_process(Child), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Ack_subject, - fun(Field@0) -> {ack, Field@0} end - ), - gleam@erlang@process:selecting_process_down( - _pipe@1, - Monitor, - fun(Field@0) -> {mon, Field@0} end - ) - end, - Result = case gleam_erlang_ffi:select(Selector, erlang:element(3, Spec)) of - {ok, {ack, {ok, Channel}}} -> - {ok, Channel}; - - {ok, {ack, {error, Reason}}} -> - {error, {init_failed, Reason}}; - - {ok, {mon, Down}} -> - {error, {init_crashed, erlang:element(3, Down)}}; - - {error, nil} -> - gleam@erlang@process:kill(Child), - {error, init_timeout} - end, - gleam_erlang_ffi:demonitor(Monitor), - Result. - --spec start(LVS, fun((LVT, LVS) -> next(LVT, LVS))) -> {ok, - gleam@erlang@process:subject(LVT)} | - {error, start_error()}. -start(State, Loop) -> - start_spec( - {spec, - fun() -> {ready, State, gleam_erlang_ffi:new_selector()} end, - 5000, - Loop} - ). - --spec send(gleam@erlang@process:subject(LVZ), LVZ) -> nil. -send(Subject, Msg) -> - gleam@erlang@process:send(Subject, Msg). - --spec call( - gleam@erlang@process:subject(LWB), - fun((gleam@erlang@process:subject(LWD)) -> LWB), - integer() -) -> LWD. -call(Selector, Make_message, Timeout) -> - gleam@erlang@process:call(Selector, Make_message, Timeout). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache deleted file mode 100644 index 2970843..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta deleted file mode 100644 index 1997b5a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl deleted file mode 100644 index 8792f14..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(gleam@otp@intensity_tracker). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/2, trim_window/3, add_event/1]). --export_type([intensity_tracker/0, too_intense/0]). - --opaque intensity_tracker() :: {intensity_tracker, - integer(), - integer(), - list(integer())}. - --type too_intense() :: too_intense. - --spec new(integer(), integer()) -> intensity_tracker(). -new(Limit, Period) -> - {intensity_tracker, Limit, Period, []}. - --spec now_seconds() -> integer(). -now_seconds() -> - erlang:monotonic_time(1). - --spec trim_window(list(integer()), integer(), integer()) -> list(integer()). -trim_window(Events, Now, Period) -> - case Events of - [] -> - []; - - [Event | Events@1] -> - case Now >= (Event + Period) of - true -> - [Event | trim_window(Events@1, Now, Period)]; - - false -> - [] - end - end. - --spec add_event(intensity_tracker()) -> {ok, intensity_tracker()} | - {error, too_intense()}. -add_event(Tracker) -> - Now = now_seconds(), - Events = trim_window( - [Now | erlang:element(4, Tracker)], - Now, - erlang:element(3, Tracker) - ), - case gleam@list:length(Events) >= erlang:element(2, Tracker) of - true -> - {error, too_intense}; - - false -> - {ok, erlang:setelement(4, Tracker, Events)} - end. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache deleted file mode 100644 index e911262..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta deleted file mode 100644 index 5f1cb59..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl deleted file mode 100644 index b205739..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(gleam@otp@port). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([port_/0]). - --type port_() :: any(). - - diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache deleted file mode 100644 index e3cbbc7..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta deleted file mode 100644 index f6f257e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl deleted file mode 100644 index 75e6c9f..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.erl +++ /dev/null @@ -1,322 +0,0 @@ --module(gleam@otp@supervisor). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([add/2, supervisor/1, worker/1, returning/2, start_spec/1, start/1, application_stopped/0, to_erlang_start_result/1]). --export_type([spec/2, children/1, child_spec/3, child_start_error/0, message/0, instruction/0, state/1, starter/1, child/1, handle_exit_error/0, application_start_mode/0, application_stop/0]). - --type spec(MID, MIE) :: {spec, - MID, - integer(), - integer(), - fun((children(MID)) -> children(MIE))}. - --opaque children(MIF) :: {ready, starter(MIF)} | {failed, child_start_error()}. - --opaque child_spec(MIG, MIH, MII) :: {child_spec, - fun((MIH) -> {ok, gleam@erlang@process:subject(MIG)} | - {error, gleam@otp@actor:start_error()}), - fun((MIH, gleam@erlang@process:subject(MIG)) -> MII)}. - --type child_start_error() :: {child_start_error, - gleam@option:option(gleam@erlang@process:pid_()), - gleam@otp@actor:start_error()}. - --opaque message() :: {exit, gleam@erlang@process:exit_message()} | - {retry_restart, gleam@erlang@process:pid_()}. - --type instruction() :: start_all | {start_from, gleam@erlang@process:pid_()}. - --type state(MIJ) :: {state, - gleam@otp@intensity_tracker:intensity_tracker(), - starter(MIJ), - gleam@erlang@process:subject(gleam@erlang@process:pid_())}. - --type starter(MIK) :: {starter, - MIK, - gleam@option:option(fun((instruction()) -> {ok, - {starter(MIK), instruction()}} | - {error, child_start_error()}))}. - --type child(MIL) :: {child, gleam@erlang@process:pid_(), MIL}. - --type handle_exit_error() :: {restart_failed, - gleam@erlang@process:pid_(), - gleam@otp@intensity_tracker:intensity_tracker()} | - too_many_restarts. - --type application_start_mode() :: normal | - {takeover, gleam@erlang@node:node_()} | - {failover, gleam@erlang@node:node_()}. - --type application_stop() :: any(). - --spec start_child(child_spec(any(), MIP, MIQ), MIP) -> {ok, child(MIQ)} | - {error, child_start_error()}. -start_child(Child_spec, Argument) -> - gleam@result:then( - begin - _pipe = (erlang:element(2, Child_spec))(Argument), - gleam@result:map_error( - _pipe, - fun(_capture) -> {child_start_error, none, _capture} end - ) - end, - fun(Subject) -> - {ok, - {child, - gleam@erlang@process:subject_owner(Subject), - (erlang:element(3, Child_spec))(Argument, Subject)}} - end - ). - --spec shutdown_child( - gleam@erlang@process:pid_(), - child_spec(any(), any(), any()) -) -> nil. -shutdown_child(Pid, _) -> - gleam@erlang@process:send_exit(Pid). - --spec perform_instruction_for_child( - MJD, - instruction(), - child_spec(any(), MJD, MJF), - child(MJF) -) -> {ok, {child(MJF), instruction()}} | {error, child_start_error()}. -perform_instruction_for_child(Argument, Instruction, Child_spec, Child) -> - Current = erlang:element(2, Child), - case Instruction of - {start_from, Target} when Target =/= Current -> - {ok, {Child, Instruction}}; - - _ -> - shutdown_child(Current, Child_spec), - gleam@result:then( - start_child(Child_spec, Argument), - fun(Child@1) -> {ok, {Child@1, start_all}} end - ) - end. - --spec add_child_to_starter( - starter(MJN), - child_spec(any(), MJN, MJQ), - child(MJQ) -) -> starter(MJQ). -add_child_to_starter(Starter, Child_spec, Child) -> - Starter@3 = fun(Instruction) -> - gleam@result:then(case erlang:element(3, Starter) of - {some, Start} -> - Start(Instruction); - - none -> - {ok, {Starter, Instruction}} - end, fun(_use0) -> - {Starter@1, Instruction@1} = _use0, - gleam@result:then( - perform_instruction_for_child( - erlang:element(2, Starter@1), - Instruction@1, - Child_spec, - Child - ), - fun(_use0@1) -> - {Child@1, Instruction@2} = _use0@1, - Starter@2 = add_child_to_starter( - Starter@1, - Child_spec, - Child@1 - ), - {ok, {Starter@2, Instruction@2}} - end - ) - end) - end, - {starter, erlang:element(3, Child), {some, Starter@3}}. - --spec start_and_add_child(starter(MJW), child_spec(any(), MJW, MJZ)) -> children(MJZ). -start_and_add_child(State, Child_spec) -> - case start_child(Child_spec, erlang:element(2, State)) of - {ok, Child} -> - {ready, add_child_to_starter(State, Child_spec, Child)}; - - {error, Reason} -> - {failed, Reason} - end. - --spec add(children(MKE), child_spec(any(), MKE, MKH)) -> children(MKH). -add(Children, Child_spec) -> - case Children of - {failed, Fail} -> - {failed, Fail}; - - {ready, State} -> - start_and_add_child(State, Child_spec) - end. - --spec supervisor( - fun((MKM) -> {ok, gleam@erlang@process:subject(MKN)} | - {error, gleam@otp@actor:start_error()}) -) -> child_spec(MKN, MKM, MKM). -supervisor(Start) -> - {child_spec, Start, fun(Argument, _) -> Argument end}. - --spec worker( - fun((MKU) -> {ok, gleam@erlang@process:subject(MKV)} | - {error, gleam@otp@actor:start_error()}) -) -> child_spec(MKV, MKU, MKU). -worker(Start) -> - {child_spec, Start, fun(Argument, _) -> Argument end}. - --spec returning( - child_spec(MLC, MLD, any()), - fun((MLD, gleam@erlang@process:subject(MLC)) -> MLJ) -) -> child_spec(MLC, MLD, MLJ). -returning(Child, Updater) -> - {child_spec, erlang:element(2, Child), Updater}. - --spec init(spec(any(), MLO)) -> gleam@otp@actor:init_result(state(MLO), message()). -init(Spec) -> - Retry = gleam@erlang@process:new_subject(), - gleam_erlang_ffi:trap_exits(true), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Retry, - fun(Field@0) -> {retry_restart, Field@0} end - ), - gleam@erlang@process:selecting_trapped_exits( - _pipe@1, - fun(Field@0) -> {exit, Field@0} end - ) - end, - Result = begin - _pipe@2 = {starter, erlang:element(2, Spec), none}, - _pipe@3 = {ready, _pipe@2}, - (erlang:element(5, Spec))(_pipe@3) - end, - case Result of - {ready, Starter} -> - Restarts = gleam@otp@intensity_tracker:new( - erlang:element(3, Spec), - erlang:element(4, Spec) - ), - State = {state, Restarts, Starter, Retry}, - {ready, State, Selector}; - - {failed, Error} -> - {failed, case erlang:element(3, Error) of - init_timeout -> - <<"Child initialisation timed out"/utf8>>; - - {init_crashed, Reason} -> - gleam@string:append( - <<"Child crashed during initialisation: "/utf8>>, - gleam@string:inspect(Reason) - ); - - {init_failed, Reason@1} -> - gleam@string:append( - <<"Child failed to start during initialisation: "/utf8>>, - gleam@string:inspect(Reason@1) - ) - end} - end. - --spec handle_exit(gleam@erlang@process:pid_(), state(MLU)) -> gleam@otp@actor:next(message(), state(MLU)). -handle_exit(Pid, State) -> - Outcome = begin - _assert_subject = erlang:element(3, erlang:element(3, State)), - {some, Start} = case _assert_subject of - {some, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/supervisor"/utf8>>, - function => <<"handle_exit"/utf8>>, - line => 293}) - end, - gleam@result:then( - begin - _pipe = erlang:element(2, State), - _pipe@1 = gleam@otp@intensity_tracker:add_event(_pipe), - gleam@result:map_error(_pipe@1, fun(_) -> too_many_restarts end) - end, - fun(Restarts) -> - gleam@result:then( - begin - _pipe@2 = Start({start_from, Pid}), - gleam@result:map_error( - _pipe@2, - fun(E) -> - {restart_failed, - gleam@option:unwrap( - erlang:element(2, E), - Pid - ), - Restarts} - end - ) - end, - fun(_use0) -> - {Starter, _} = _use0, - {ok, - erlang:setelement( - 2, - erlang:setelement(3, State, Starter), - Restarts - )} - end - ) - end - ) - end, - case Outcome of - {ok, State@1} -> - gleam@otp@actor:continue(State@1); - - {error, {restart_failed, Failed_child, Restarts@1}} -> - gleam@erlang@process:send(erlang:element(4, State), Failed_child), - State@2 = erlang:setelement(2, State, Restarts@1), - gleam@otp@actor:continue(State@2); - - {error, too_many_restarts} -> - {stop, - {abnormal, - <<"Child processes restarted too many times within allowed period"/utf8>>}} - end. - --spec loop(message(), state(MLZ)) -> gleam@otp@actor:next(message(), state(MLZ)). -loop(Message, State) -> - case Message of - {exit, Exit_message} -> - handle_exit(erlang:element(2, Exit_message), State); - - {retry_restart, Pid} -> - handle_exit(Pid, State) - end. - --spec start_spec(spec(any(), any())) -> {ok, - gleam@erlang@process:subject(message())} | - {error, gleam@otp@actor:start_error()}. -start_spec(Spec) -> - gleam@otp@actor:start_spec( - {spec, fun() -> init(Spec) end, 60000, fun loop/2} - ). - --spec start(fun((children(nil)) -> children(any()))) -> {ok, - gleam@erlang@process:subject(message())} | - {error, gleam@otp@actor:start_error()}. -start(Init) -> - start_spec({spec, nil, 1, 5, Init}). - --spec application_stopped() -> application_stop(). -application_stopped() -> - gleam_otp_external:application_stopped(). - --spec to_erlang_start_result( - {ok, gleam@erlang@process:subject(any())} | - {error, gleam@otp@actor:start_error()} -) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. -to_erlang_start_result(Res) -> - gleam@otp@actor:to_erlang_start_result(Res). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache deleted file mode 100644 index 1ecd94e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta deleted file mode 100644 index 9f64041..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl deleted file mode 100644 index 622e5ea..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.erl +++ /dev/null @@ -1,43 +0,0 @@ --module(gleam@otp@system). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([debug_state/1, get_state/1, suspend/1, resume/1]). --export_type([mode/0, debug_option/0, debug_state/0, status_info/0, system_message/0, do_not_leak/0]). - --type mode() :: running | suspended. - --type debug_option() :: no_debug. - --type debug_state() :: any(). - --type status_info() :: {status_info, - gleam@erlang@atom:atom_(), - gleam@erlang@process:pid_(), - mode(), - debug_state(), - gleam@dynamic:dynamic_()}. - --type system_message() :: {resume, fun(() -> nil)} | - {suspend, fun(() -> nil)} | - {get_state, fun((gleam@dynamic:dynamic_()) -> nil)} | - {get_status, fun((status_info()) -> nil)}. - --type do_not_leak() :: any(). - --spec debug_state(list(debug_option())) -> debug_state(). -debug_state(A) -> - sys:debug_options(A). - --spec get_state(gleam@erlang@process:pid_()) -> gleam@dynamic:dynamic_(). -get_state(From) -> - sys:get_state(From). - --spec suspend(gleam@erlang@process:pid_()) -> nil. -suspend(Pid) -> - sys:suspend(Pid), - nil. - --spec resume(gleam@erlang@process:pid_()) -> nil. -resume(Pid) -> - sys:resume(Pid), - nil. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache deleted file mode 100644 index 3360869..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta deleted file mode 100644 index e4f89cf..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl deleted file mode 100644 index ae4037d..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.erl +++ /dev/null @@ -1,111 +0,0 @@ --module(gleam@otp@task). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([async/1, try_await/2, await/2, try_await_forever/1, await_forever/1]). --export_type([task/1, await_error/0, message/1]). - --opaque task(MEB) :: {task, - gleam@erlang@process:pid_(), - gleam@erlang@process:pid_(), - gleam@erlang@process:process_monitor(), - gleam@erlang@process:selector(message(MEB))}. - --type await_error() :: timeout | {exit, gleam@dynamic:dynamic_()}. - --type message(MEC) :: {from_monitor, gleam@erlang@process:process_down()} | - {from_subject, MEC}. - --spec async(fun(() -> MED)) -> task(MED). -async(Work) -> - Owner = erlang:self(), - Subject = gleam@erlang@process:new_subject(), - Pid = gleam@erlang@process:start( - fun() -> gleam@erlang@process:send(Subject, Work()) end, - true - ), - Monitor = gleam@erlang@process:monitor_process(Pid), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting_process_down( - _pipe, - Monitor, - fun(Field@0) -> {from_monitor, Field@0} end - ), - gleam@erlang@process:selecting( - _pipe@1, - Subject, - fun(Field@0) -> {from_subject, Field@0} end - ) - end, - {task, Owner, Pid, Monitor, Selector}. - --spec assert_owner(task(any())) -> nil. -assert_owner(Task) -> - Self = erlang:self(), - case erlang:element(2, Task) =:= Self of - true -> - nil; - - false -> - gleam@erlang@process:send_abnormal_exit( - Self, - <<"awaited on a task that does not belong to this process"/utf8>> - ) - end. - --spec try_await(task(MEH), integer()) -> {ok, MEH} | {error, await_error()}. -try_await(Task, Timeout) -> - assert_owner(Task), - case gleam_erlang_ffi:select(erlang:element(5, Task), Timeout) of - {ok, {from_subject, X}} -> - gleam_erlang_ffi:demonitor(erlang:element(4, Task)), - {ok, X}; - - {ok, {from_monitor, {process_down, _, Reason}}} -> - {error, {exit, Reason}}; - - {error, nil} -> - {error, timeout} - end. - --spec await(task(MEL), integer()) -> MEL. -await(Task, Timeout) -> - _assert_subject = try_await(Task, Timeout), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/task"/utf8>>, - function => <<"await"/utf8>>, - line => 117}) - end, - Value. - --spec try_await_forever(task(MEN)) -> {ok, MEN} | {error, await_error()}. -try_await_forever(Task) -> - assert_owner(Task), - case gleam_erlang_ffi:select(erlang:element(5, Task)) of - {from_subject, X} -> - gleam_erlang_ffi:demonitor(erlang:element(4, Task)), - {ok, X}; - - {from_monitor, {process_down, _, Reason}} -> - {error, {exit, Reason}} - end. - --spec await_forever(task(MER)) -> MER. -await_forever(Task) -> - _assert_subject = try_await_forever(Task), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/task"/utf8>>, - function => <<"await_forever"/utf8>>, - line => 149}) - end, - Value. diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache deleted file mode 100644 index 601b922..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta deleted file mode 100644 index 6b7a3a8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl deleted file mode 100644 index 9381ad2..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(gleam_otp). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec spawn_task(integer()) -> gleam@otp@task:task(nil). -spawn_task(I) -> - gleam@otp@task:async(fun() -> case (I rem 500) =:= 0 of - true -> - gleam@io:println( - <<"Hello from "/utf8, (gleam@int:to_string(I))/binary>> - ); - - false -> - nil - end end). - --spec main() -> integer(). -main() -> - gleam@io:debug( - gleam_otp_test_external:get_message_queue_length(erlang:self()) - ), - _pipe = gleam@list:range(0, 1000000), - _pipe@1 = gleam@list:map(_pipe, fun spawn_task/1), - gleam@list:each(_pipe@1, fun gleam@otp@task:await_forever/1), - gleam@io:debug( - gleam_otp_test_external:get_message_queue_length(erlang:self()) - ). diff --git a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl b/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl deleted file mode 100644 index 8910a67..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/_gleam_artefacts/gleam_otp_external.erl +++ /dev/null @@ -1,43 +0,0 @@ --module(gleam_otp_external). - --export([application_stopped/0, convert_system_message/2]). - -% TODO: support other system messages -% {replace_state, StateFn} -% {change_code, Mod, Vsn, Extra} -% {terminate, Reason} -% {debug, {log, Flag}} -% {debug, {trace, Flag}} -% {debug, {log_to_file, FileName}} -% {debug, {statistics, Flag}} -% {debug, no_debug} -% {debug, {install, {Func, FuncState}}} -% {debug, {install, {FuncId, Func, FuncState}}} -% {debug, {remove, FuncOrId}} -% GetStatus(Subject(StatusInfo)) -convert_system_message({From, Ref}, Request) when is_pid(From) -> - Reply = fun(Msg) -> - erlang:send(From, {Ref, Msg}), - nil - end, - System = fun(Callback) -> - {system, {Request, Callback}} - end, - case Request of - get_status -> System(fun(Status) -> Reply(process_status(Status)) end); - get_state -> System(Reply); - suspend -> System(fun() -> Reply(ok) end); - resume -> System(fun() -> Reply(ok) end); - Other -> {unexpeceted, Other} - end. - -process_status({status_info, Module, Parent, Mode, DebugState, State}) -> - Data = [ - get(), Mode, Parent, DebugState, - [{header, "Status for Gleam process " ++ pid_to_list(self())}, - {data, [{'Status', Mode}, {'Parent', Parent}, {'State', State}]}] - ], - {status, self(), {module, Module}, Data}. - -application_stopped() -> - ok. diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam deleted file mode 100644 index 1a777b4..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@actor.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam deleted file mode 100644 index 5a126b5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@intensity_tracker.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam deleted file mode 100644 index 8b72b7d..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@port.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam deleted file mode 100644 index 72f4b32..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@supervisor.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam deleted file mode 100644 index 3aefd21..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@system.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam deleted file mode 100644 index c21bc3b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam@otp@task.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app deleted file mode 100644 index 21dd444..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.app +++ /dev/null @@ -1,8 +0,0 @@ -{application, gleam_otp, [ - {vsn, "0.8.0"}, - {applications, [gleam_erlang, - gleam_stdlib]}, - {description, "Fault tolerant multicore Gleam programs with OTP"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam deleted file mode 100644 index 0a25445..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam b/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam deleted file mode 100644 index f77f93b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_otp/ebin/gleam_otp_external.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl deleted file mode 100644 index 85677d1..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Continue.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(continue, { - state :: any(), - selector :: gleam@option:option(gleam@erlang@process:selector(any())) -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl deleted file mode 100644 index 75faa95..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Ready.hrl +++ /dev/null @@ -1 +0,0 @@ --record(ready, {state :: any(), selector :: gleam@erlang@process:selector(any())}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl deleted file mode 100644 index 5287439..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@actor_Spec.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(spec, { - init :: fun(() -> gleam@otp@actor:init_result(any(), any())), - init_timeout :: integer(), - loop :: fun((any(), any()) -> gleam@otp@actor:next(any(), any())) -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl deleted file mode 100644 index 3ed0b01..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(intensity_tracker, { - limit :: integer(), - period :: integer(), - events :: list(integer()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl deleted file mode 100644 index 7afd07f..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(child_spec, { - start :: fun((any()) -> {ok, gleam@erlang@process:subject(any())} | - {error, gleam@otp@actor:start_error()}), - returning :: fun((any(), gleam@erlang@process:subject(any())) -> any()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl deleted file mode 100644 index b10bd9f..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@supervisor_Spec.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(spec, { - argument :: any(), - max_frequency :: integer(), - frequency_period :: integer(), - init :: fun((gleam@otp@supervisor:children(any())) -> gleam@otp@supervisor:children(any())) -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl deleted file mode 100644 index 99ab4cb..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@system_StatusInfo.hrl +++ /dev/null @@ -1,7 +0,0 @@ --record(status_info, { - module :: gleam@erlang@atom:atom_(), - parent :: gleam@erlang@process:pid_(), - mode :: gleam@otp@system:mode(), - debug_state :: gleam@otp@system:debug_state(), - state :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl deleted file mode 100644 index 7c83874..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Exit.hrl +++ /dev/null @@ -1 +0,0 @@ --record(exit, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl b/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl deleted file mode 100644 index 959bea8..0000000 --- a/aoc2023/build/dev/erlang/gleam_otp/include/gleam@otp@task_Task.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(task, { - owner :: gleam@erlang@process:pid_(), - pid :: gleam@erlang@process:pid_(), - monitor :: gleam@erlang@process:process_monitor(), - selector :: gleam@erlang@process:selector(gleam@otp@task:message(any())) -}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs deleted file mode 100644 index a8309e0..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/dict.mjs +++ /dev/null @@ -1,957 +0,0 @@ -/** - * This file uses jsdoc to annotate types. - * These types can be checked using the typescript compiler with "checkjs" option. - */ - -import { isEqual } from "./gleam.mjs"; - -const referenceMap = new WeakMap(); -const tempDataView = new DataView(new ArrayBuffer(8)); -let referenceUID = 0; -/** - * hash the object by reference using a weak map and incrementing uid - * @param {any} o - * @returns {number} - */ -function hashByReference(o) { - const known = referenceMap.get(o); - if (known !== undefined) { - return known; - } - const hash = referenceUID++; - if (referenceUID === 0x7fffffff) { - referenceUID = 0; - } - referenceMap.set(o, hash); - return hash; -} -/** - * merge two hashes in an order sensitive way - * @param {number} a - * @param {number} b - * @returns {number} - */ -function hashMerge(a, b) { - return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; -} -/** - * standard string hash popularised by java - * @param {string} s - * @returns {number} - */ -function hashString(s) { - let hash = 0; - const len = s.length; - for (let i = 0; i < len; i++) { - hash = (Math.imul(31, hash) + s.charCodeAt(i)) | 0; - } - return hash; -} -/** - * hash a number by converting to two integers and do some jumbling - * @param {number} n - * @returns {number} - */ -function hashNumber(n) { - tempDataView.setFloat64(0, n); - const i = tempDataView.getInt32(0); - const j = tempDataView.getInt32(4); - return Math.imul(0x45d9f3b, (i >> 16) ^ i) ^ j; -} -/** - * hash a BigInt by converting it to a string and hashing that - * @param {BigInt} n - * @returns {number} - */ -function hashBigInt(n) { - return hashString(n.toString()); -} -/** - * hash any js object - * @param {any} o - * @returns {number} - */ -function hashObject(o) { - const proto = Object.getPrototypeOf(o); - if (proto !== null && typeof proto.hashCode === "function") { - try { - const code = o.hashCode(o); - if (typeof code === "number") { - return code; - } - } catch {} - } - if (o instanceof Promise || o instanceof WeakSet || o instanceof WeakMap) { - return hashByReference(o); - } - if (o instanceof Date) { - return hashNumber(o.getTime()); - } - let h = 0; - if (o instanceof ArrayBuffer) { - o = new Uint8Array(o); - } - if (Array.isArray(o) || o instanceof Uint8Array) { - for (let i = 0; i < o.length; i++) { - h = (Math.imul(31, h) + getHash(o[i])) | 0; - } - } else if (o instanceof Set) { - o.forEach((v) => { - h = (h + getHash(v)) | 0; - }); - } else if (o instanceof Map) { - o.forEach((v, k) => { - h = (h + hashMerge(getHash(v), getHash(k))) | 0; - }); - } else { - const keys = Object.keys(o); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - const v = o[k]; - h = (h + hashMerge(getHash(v), hashString(k))) | 0; - } - } - return h; -} -/** - * hash any js value - * @param {any} u - * @returns {number} - */ -export function getHash(u) { - if (u === null) return 0x42108422; - if (u === undefined) return 0x42108423; - if (u === true) return 0x42108421; - if (u === false) return 0x42108420; - switch (typeof u) { - case "number": - return hashNumber(u); - case "string": - return hashString(u); - case "bigint": - return hashBigInt(u); - case "object": - return hashObject(u); - case "symbol": - return hashByReference(u); - case "function": - return hashByReference(u); - default: - return 0; // should be unreachable - } -} -/** - * @template K,V - * @typedef {ArrayNode | IndexNode | CollisionNode} Node - */ -/** - * @template K,V - * @typedef {{ type: typeof ENTRY, k: K, v: V }} Entry - */ -/** - * @template K,V - * @typedef {{ type: typeof ARRAY_NODE, size: number, array: (undefined | Entry | Node)[] }} ArrayNode - */ -/** - * @template K,V - * @typedef {{ type: typeof INDEX_NODE, bitmap: number, array: (Entry | Node)[] }} IndexNode - */ -/** - * @template K,V - * @typedef {{ type: typeof COLLISION_NODE, hash: number, array: Entry[] }} CollisionNode - */ -/** - * @typedef {{ val: boolean }} Flag - */ -const SHIFT = 5; // number of bits you need to shift by to get the next bucket -const BUCKET_SIZE = Math.pow(2, SHIFT); -const MASK = BUCKET_SIZE - 1; // used to zero out all bits not in the bucket -const MAX_INDEX_NODE = BUCKET_SIZE / 2; // when does index node grow into array node -const MIN_ARRAY_NODE = BUCKET_SIZE / 4; // when does array node shrink to index node -const ENTRY = 0; -const ARRAY_NODE = 1; -const INDEX_NODE = 2; -const COLLISION_NODE = 3; -/** @type {IndexNode} */ -const EMPTY = { - type: INDEX_NODE, - bitmap: 0, - array: [], -}; -/** - * Mask the hash to get only the bucket corresponding to shift - * @param {number} hash - * @param {number} shift - * @returns {number} - */ -function mask(hash, shift) { - return (hash >>> shift) & MASK; -} -/** - * Set only the Nth bit where N is the masked hash - * @param {number} hash - * @param {number} shift - * @returns {number} - */ -function bitpos(hash, shift) { - return 1 << mask(hash, shift); -} -/** - * Count the number of 1 bits in a number - * @param {number} x - * @returns {number} - */ -function bitcount(x) { - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0f0f0f0f; - x += x >> 8; - x += x >> 16; - return x & 0x7f; -} -/** - * Calculate the array index of an item in a bitmap index node - * @param {number} bitmap - * @param {number} bit - * @returns {number} - */ -function index(bitmap, bit) { - return bitcount(bitmap & (bit - 1)); -} -/** - * Efficiently copy an array and set one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @param {T} val - * @returns {T[]} - */ -function cloneAndSet(arr, at, val) { - const len = arr.length; - const out = new Array(len); - for (let i = 0; i < len; ++i) { - out[i] = arr[i]; - } - out[at] = val; - return out; -} -/** - * Efficiently copy an array and insert one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @param {T} val - * @returns {T[]} - */ -function spliceIn(arr, at, val) { - const len = arr.length; - const out = new Array(len + 1); - let i = 0; - let g = 0; - while (i < at) { - out[g++] = arr[i++]; - } - out[g++] = val; - while (i < len) { - out[g++] = arr[i++]; - } - return out; -} -/** - * Efficiently copy an array and remove one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @returns {T[]} - */ -function spliceOut(arr, at) { - const len = arr.length; - const out = new Array(len - 1); - let i = 0; - let g = 0; - while (i < at) { - out[g++] = arr[i++]; - } - ++i; - while (i < len) { - out[g++] = arr[i++]; - } - return out; -} -/** - * Create a new node containing two entries - * @template K,V - * @param {number} shift - * @param {K} key1 - * @param {V} val1 - * @param {number} key2hash - * @param {K} key2 - * @param {V} val2 - * @returns {Node} - */ -function createNode(shift, key1, val1, key2hash, key2, val2) { - const key1hash = getHash(key1); - if (key1hash === key2hash) { - return { - type: COLLISION_NODE, - hash: key1hash, - array: [ - { type: ENTRY, k: key1, v: val1 }, - { type: ENTRY, k: key2, v: val2 }, - ], - }; - } - const addedLeaf = { val: false }; - return assoc( - assocIndex(EMPTY, shift, key1hash, key1, val1, addedLeaf), - shift, - key2hash, - key2, - val2, - addedLeaf - ); -} -/** - * @template T,K,V - * @callback AssocFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @param {V} val - * @param {Flag} addedLeaf - * @returns {Node} - */ -/** - * Associate a node with a new entry, creating a new node - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assoc(root, shift, hash, key, val, addedLeaf) { - switch (root.type) { - case ARRAY_NODE: - return assocArray(root, shift, hash, key, val, addedLeaf); - case INDEX_NODE: - return assocIndex(root, shift, hash, key, val, addedLeaf); - case COLLISION_NODE: - return assocCollision(root, shift, hash, key, val, addedLeaf); - } -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocArray(root, shift, hash, key, val, addedLeaf) { - const idx = mask(hash, shift); - const node = root.array[idx]; - // if the corresponding index is empty set the index to a newly created node - if (node === undefined) { - addedLeaf.val = true; - return { - type: ARRAY_NODE, - size: root.size + 1, - array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), - }; - } - if (node.type === ENTRY) { - // if keys are equal replace the entry - if (isEqual(key, node.k)) { - if (val === node.v) { - return root; - } - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }), - }; - } - // otherwise upgrade the entry to a node and insert - addedLeaf.val = true; - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet( - root.array, - idx, - createNode(shift + SHIFT, node.k, node.v, hash, key, val) - ), - }; - } - // otherwise call assoc on the child node - const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); - // if the child node hasn't changed just return the old root - if (n === node) { - return root; - } - // otherwise set the index to the new node - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, n), - }; -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocIndex(root, shift, hash, key, val, addedLeaf) { - const bit = bitpos(hash, shift); - const idx = index(root.bitmap, bit); - // if there is already a item at this hash index.. - if ((root.bitmap & bit) !== 0) { - // if there is a node at the index (not an entry), call assoc on the child node - const node = root.array[idx]; - if (node.type !== ENTRY) { - const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); - if (n === node) { - return root; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, n), - }; - } - // otherwise there is an entry at the index - // if the keys are equal replace the entry with the updated value - const nodeKey = node.k; - if (isEqual(key, nodeKey)) { - if (val === node.v) { - return root; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }), - }; - } - // if the keys are not equal, replace the entry with a new child node - addedLeaf.val = true; - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet( - root.array, - idx, - createNode(shift + SHIFT, nodeKey, node.v, hash, key, val) - ), - }; - } else { - // else there is currently no item at the hash index - const n = root.array.length; - // if the number of nodes is at the maximum, expand this node into an array node - if (n >= MAX_INDEX_NODE) { - // create a 32 length array for the new array node (one for each bit in the hash) - const nodes = new Array(32); - // create and insert a node for the new entry - const jdx = mask(hash, shift); - nodes[jdx] = assocIndex(EMPTY, shift + SHIFT, hash, key, val, addedLeaf); - let j = 0; - let bitmap = root.bitmap; - // place each item in the index node into the correct spot in the array node - // loop through all 32 bits / array positions - for (let i = 0; i < 32; i++) { - if ((bitmap & 1) !== 0) { - const node = root.array[j++]; - nodes[i] = node; - } - // shift the bitmap to process the next bit - bitmap = bitmap >>> 1; - } - return { - type: ARRAY_NODE, - size: n + 1, - array: nodes, - }; - } else { - // else there is still space in this index node - // simply insert a new entry at the hash index - const newArray = spliceIn(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }); - addedLeaf.val = true; - return { - type: INDEX_NODE, - bitmap: root.bitmap | bit, - array: newArray, - }; - } - } -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocCollision(root, shift, hash, key, val, addedLeaf) { - // if there is a hash collision - if (hash === root.hash) { - const idx = collisionIndexOf(root, key); - // if this key already exists replace the entry with the new value - if (idx !== -1) { - const entry = root.array[idx]; - if (entry.v === val) { - return root; - } - return { - type: COLLISION_NODE, - hash: hash, - array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), - }; - } - // otherwise insert the entry at the end of the array - const size = root.array.length; - addedLeaf.val = true; - return { - type: COLLISION_NODE, - hash: hash, - array: cloneAndSet(root.array, size, { type: ENTRY, k: key, v: val }), - }; - } - // if there is no hash collision, upgrade to an index node - return assoc( - { - type: INDEX_NODE, - bitmap: bitpos(root.hash, shift), - array: [root], - }, - shift, - hash, - key, - val, - addedLeaf - ); -} -/** - * Find the index of a key in the collision node's array - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {number} - */ -function collisionIndexOf(root, key) { - const size = root.array.length; - for (let i = 0; i < size; i++) { - if (isEqual(key, root.array[i].k)) { - return i; - } - } - return -1; -} -/** - * @template T,K,V - * @callback FindFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @returns {undefined | Entry} - */ -/** - * Return the found entry or undefined if not present in the root - * @template K,V - * @type {FindFunction,K,V>} - */ -function find(root, shift, hash, key) { - switch (root.type) { - case ARRAY_NODE: - return findArray(root, shift, hash, key); - case INDEX_NODE: - return findIndex(root, shift, hash, key); - case COLLISION_NODE: - return findCollision(root, key); - } -} -/** - * @template K,V - * @type {FindFunction,K,V>} - */ -function findArray(root, shift, hash, key) { - const idx = mask(hash, shift); - const node = root.array[idx]; - if (node === undefined) { - return undefined; - } - if (node.type !== ENTRY) { - return find(node, shift + SHIFT, hash, key); - } - if (isEqual(key, node.k)) { - return node; - } - return undefined; -} -/** - * @template K,V - * @type {FindFunction,K,V>} - */ -function findIndex(root, shift, hash, key) { - const bit = bitpos(hash, shift); - if ((root.bitmap & bit) === 0) { - return undefined; - } - const idx = index(root.bitmap, bit); - const node = root.array[idx]; - if (node.type !== ENTRY) { - return find(node, shift + SHIFT, hash, key); - } - if (isEqual(key, node.k)) { - return node; - } - return undefined; -} -/** - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {undefined | Entry} - */ -function findCollision(root, key) { - const idx = collisionIndexOf(root, key); - if (idx < 0) { - return undefined; - } - return root.array[idx]; -} -/** - * @template T,K,V - * @callback WithoutFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @returns {undefined | Node} - */ -/** - * Remove an entry from the root, returning the updated root. - * Returns undefined if the node should be removed from the parent. - * @template K,V - * @type {WithoutFunction,K,V>} - * */ -function without(root, shift, hash, key) { - switch (root.type) { - case ARRAY_NODE: - return withoutArray(root, shift, hash, key); - case INDEX_NODE: - return withoutIndex(root, shift, hash, key); - case COLLISION_NODE: - return withoutCollision(root, key); - } -} -/** - * @template K,V - * @type {WithoutFunction,K,V>} - */ -function withoutArray(root, shift, hash, key) { - const idx = mask(hash, shift); - const node = root.array[idx]; - if (node === undefined) { - return root; // already empty - } - let n = undefined; - // if node is an entry and the keys are not equal there is nothing to remove - // if node is not an entry do a recursive call - if (node.type === ENTRY) { - if (!isEqual(node.k, key)) { - return root; // no changes - } - } else { - n = without(node, shift + SHIFT, hash, key); - if (n === node) { - return root; // no changes - } - } - // if the recursive call returned undefined the node should be removed - if (n === undefined) { - // if the number of child nodes is at the minimum, pack into an index node - if (root.size <= MIN_ARRAY_NODE) { - const arr = root.array; - const out = new Array(root.size - 1); - let i = 0; - let j = 0; - let bitmap = 0; - while (i < idx) { - const nv = arr[i]; - if (nv !== undefined) { - out[j] = nv; - bitmap |= 1 << i; - ++j; - } - ++i; - } - ++i; // skip copying the removed node - while (i < arr.length) { - const nv = arr[i]; - if (nv !== undefined) { - out[j] = nv; - bitmap |= 1 << i; - ++j; - } - ++i; - } - return { - type: INDEX_NODE, - bitmap: bitmap, - array: out, - }; - } - return { - type: ARRAY_NODE, - size: root.size - 1, - array: cloneAndSet(root.array, idx, n), - }; - } - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, n), - }; -} -/** - * @template K,V - * @type {WithoutFunction,K,V>} - */ -function withoutIndex(root, shift, hash, key) { - const bit = bitpos(hash, shift); - if ((root.bitmap & bit) === 0) { - return root; // already empty - } - const idx = index(root.bitmap, bit); - const node = root.array[idx]; - // if the item is not an entry - if (node.type !== ENTRY) { - const n = without(node, shift + SHIFT, hash, key); - if (n === node) { - return root; // no changes - } - // if not undefined, the child node still has items, so update it - if (n !== undefined) { - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, n), - }; - } - // otherwise the child node should be removed - // if it was the only child node, remove this node from the parent - if (root.bitmap === bit) { - return undefined; - } - // otherwise just remove the child node - return { - type: INDEX_NODE, - bitmap: root.bitmap ^ bit, - array: spliceOut(root.array, idx), - }; - } - // otherwise the item is an entry, remove it if the key matches - if (isEqual(key, node.k)) { - if (root.bitmap === bit) { - return undefined; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap ^ bit, - array: spliceOut(root.array, idx), - }; - } - return root; -} -/** - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {undefined | Node} - */ -function withoutCollision(root, key) { - const idx = collisionIndexOf(root, key); - // if the key not found, no changes - if (idx < 0) { - return root; - } - // otherwise the entry was found, remove it - // if it was the only entry in this node, remove the whole node - if (root.array.length === 1) { - return undefined; - } - // otherwise just remove the entry - return { - type: COLLISION_NODE, - hash: root.hash, - array: spliceOut(root.array, idx), - }; -} -/** - * @template K,V - * @param {undefined | Node} root - * @param {(value:V,key:K)=>void} fn - * @returns {void} - */ -function forEach(root, fn) { - if (root === undefined) { - return; - } - const items = root.array; - const size = items.length; - for (let i = 0; i < size; i++) { - const item = items[i]; - if (item === undefined) { - continue; - } - if (item.type === ENTRY) { - fn(item.v, item.k); - continue; - } - forEach(item, fn); - } -} -/** - * Extra wrapper to keep track of Dict size and clean up the API - * @template K,V - */ -export default class Dict { - /** - * @template V - * @param {Record} o - * @returns {Dict} - */ - static fromObject(o) { - const keys = Object.keys(o); - /** @type Dict */ - let m = Dict.new(); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - m = m.set(k, o[k]); - } - return m; - } - /** - * @template K,V - * @param {Map} o - * @returns {Dict} - */ - static fromMap(o) { - /** @type Dict */ - let m = Dict.new(); - o.forEach((v, k) => { - m = m.set(k, v); - }); - return m; - } - static new() { - return new Dict(undefined, 0); - } - /** - * @param {undefined | Node} root - * @param {number} size - */ - constructor(root, size) { - this.root = root; - this.size = size; - } - /** - * @template NotFound - * @param {K} key - * @param {NotFound} notFound - * @returns {NotFound | V} - */ - get(key, notFound) { - if (this.root === undefined) { - return notFound; - } - const found = find(this.root, 0, getHash(key), key); - if (found === undefined) { - return notFound; - } - return found.v; - } - /** - * @param {K} key - * @param {V} val - * @returns {Dict} - */ - set(key, val) { - const addedLeaf = { val: false }; - const root = this.root === undefined ? EMPTY : this.root; - const newRoot = assoc(root, 0, getHash(key), key, val, addedLeaf); - if (newRoot === this.root) { - return this; - } - return new Dict(newRoot, addedLeaf.val ? this.size + 1 : this.size); - } - /** - * @param {K} key - * @returns {Dict} - */ - delete(key) { - if (this.root === undefined) { - return this; - } - const newRoot = without(this.root, 0, getHash(key), key); - if (newRoot === this.root) { - return this; - } - if (newRoot === undefined) { - return Dict.new(); - } - return new Dict(newRoot, this.size - 1); - } - /** - * @param {K} key - * @returns {boolean} - */ - has(key) { - if (this.root === undefined) { - return false; - } - return find(this.root, 0, getHash(key), key) !== undefined; - } - /** - * @returns {[K,V][]} - */ - entries() { - if (this.root === undefined) { - return []; - } - /** @type [K,V][] */ - const result = []; - this.forEach((v, k) => result.push([k, v])); - return result; - } - /** - * - * @param {(val:V,key:K)=>void} fn - */ - forEach(fn) { - forEach(this.root, fn); - } - hashCode() { - let h = 0; - this.forEach((v, k) => { - h = (h + hashMerge(getHash(v), getHash(k))) | 0; - }); - return h; - } - /** - * @param {unknown} o - * @returns {boolean} - */ - equals(o) { - if (!(o instanceof Dict) || this.size !== o.size) { - return false; - } - let equal = true; - this.forEach((v, k) => { - equal = equal && isEqual(o.get(k, !v), v); - }); - return equal; - } -} diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache deleted file mode 100644 index 1a9b6c1..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta deleted file mode 100644 index a935fcc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl deleted file mode 100644 index 65bc3f6..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.erl +++ /dev/null @@ -1,20 +0,0 @@ --module(gleam@base). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]). - --spec encode64(bitstring(), boolean()) -> binary(). -encode64(Input, Padding) -> - gleam@bit_array:base64_encode(Input, Padding). - --spec decode64(binary()) -> {ok, bitstring()} | {error, nil}. -decode64(Encoded) -> - gleam@bit_array:base64_decode(Encoded). - --spec url_encode64(bitstring(), boolean()) -> binary(). -url_encode64(Input, Padding) -> - gleam@bit_array:base64_url_encode(Input, Padding). - --spec url_decode64(binary()) -> {ok, bitstring()} | {error, nil}. -url_decode64(Encoded) -> - gleam@bit_array:base64_url_decode(Encoded). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache deleted file mode 100644 index 3b197e5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta deleted file mode 100644 index bfd3dd8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl deleted file mode 100644 index ba18dfa..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.erl +++ /dev/null @@ -1,102 +0,0 @@ --module(gleam@bit_array). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, byte_size/1, slice/3, is_utf8/1, to_string/1, concat/1, append/2, base64_encode/2, base64_decode/1, base64_url_encode/2, base64_url_decode/1, base16_encode/1, base16_decode/1]). - --spec from_string(binary()) -> bitstring(). -from_string(X) -> - gleam_stdlib:identity(X). - --spec byte_size(bitstring()) -> integer(). -byte_size(X) -> - erlang:byte_size(X). - --spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | - {error, nil}. -slice(String, Position, Length) -> - gleam_stdlib:bit_array_slice(String, Position, Length). - --spec do_is_utf8(bitstring()) -> boolean(). -do_is_utf8(Bits) -> - case Bits of - <<>> -> - true; - - <<_/utf8, Rest/binary>> -> - do_is_utf8(Rest); - - _ -> - false - end. - --spec is_utf8(bitstring()) -> boolean(). -is_utf8(Bits) -> - do_is_utf8(Bits). - --spec do_to_string(bitstring()) -> {ok, binary()} | {error, nil}. -do_to_string(Bits) -> - case is_utf8(Bits) of - true -> - {ok, gleam_stdlib:identity(Bits)}; - - false -> - {error, nil} - end. - --spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. -to_string(Bits) -> - do_to_string(Bits). - --spec concat(list(bitstring())) -> bitstring(). -concat(Bit_arrays) -> - gleam_stdlib:bit_array_concat(Bit_arrays). - --spec append(bitstring(), bitstring()) -> bitstring(). -append(First, Second) -> - gleam_stdlib:bit_array_concat([First, Second]). - --spec base64_encode(bitstring(), boolean()) -> binary(). -base64_encode(Input, Padding) -> - Encoded = base64:encode(Input), - case Padding of - true -> - Encoded; - - false -> - gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>) - end. - --spec base64_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base64_decode(Encoded) -> - Padded = case erlang:byte_size(gleam_stdlib:identity(Encoded)) rem 4 of - 0 -> - Encoded; - - N -> - gleam@string:append( - Encoded, - gleam@string:repeat(<<"="/utf8>>, 4 - N) - ) - end, - gleam_stdlib:base_decode64(Padded). - --spec base64_url_encode(bitstring(), boolean()) -> binary(). -base64_url_encode(Input, Padding) -> - _pipe = base64_encode(Input, Padding), - _pipe@1 = gleam@string:replace(_pipe, <<"+"/utf8>>, <<"-"/utf8>>), - gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"_"/utf8>>). - --spec base64_url_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base64_url_decode(Encoded) -> - _pipe = Encoded, - _pipe@1 = gleam@string:replace(_pipe, <<"-"/utf8>>, <<"+"/utf8>>), - _pipe@2 = gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<"/"/utf8>>), - base64_decode(_pipe@2). - --spec base16_encode(bitstring()) -> binary(). -base16_encode(Input) -> - binary:encode_hex(Input). - --spec base16_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base16_decode(Input) -> - gleam_stdlib:base16_decode(Input). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache deleted file mode 100644 index d992172..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta deleted file mode 100644 index bc4a1a5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl deleted file mode 100644 index 284c6d4..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.erl +++ /dev/null @@ -1,66 +0,0 @@ --module(gleam@bit_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, prepend/2, append/2, prepend_builder/2, append_builder/2, prepend_string/2, append_string/2, concat/1, concat_bit_strings/1, from_string/1, from_string_builder/1, from_bit_string/1, to_bit_string/1, byte_size/1]). - --spec new() -> gleam@bytes_builder:bytes_builder(). -new() -> - gleam@bytes_builder:new(). - --spec prepend(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). -prepend(To, Prefix) -> - gleam@bytes_builder:prepend(To, Prefix). - --spec append(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). -append(To, Suffix) -> - gleam@bytes_builder:append(To, Suffix). - --spec prepend_builder( - gleam@bytes_builder:bytes_builder(), - gleam@bytes_builder:bytes_builder() -) -> gleam@bytes_builder:bytes_builder(). -prepend_builder(To, Prefix) -> - gleam@bytes_builder:prepend_builder(To, Prefix). - --spec append_builder( - gleam@bytes_builder:bytes_builder(), - gleam@bytes_builder:bytes_builder() -) -> gleam@bytes_builder:bytes_builder(). -append_builder(First, Second) -> - gleam_stdlib:iodata_append(First, Second). - --spec prepend_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). -prepend_string(To, Prefix) -> - gleam@bytes_builder:prepend_string(To, Prefix). - --spec append_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). -append_string(To, Suffix) -> - gleam@bytes_builder:append_string(To, Suffix). - --spec concat(list(gleam@bytes_builder:bytes_builder())) -> gleam@bytes_builder:bytes_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec concat_bit_strings(list(bitstring())) -> gleam@bytes_builder:bytes_builder(). -concat_bit_strings(Bits) -> - gleam_stdlib:identity(Bits). - --spec from_string(binary()) -> gleam@bytes_builder:bytes_builder(). -from_string(String) -> - gleam_stdlib:wrap_list(String). - --spec from_string_builder(gleam@string_builder:string_builder()) -> gleam@bytes_builder:bytes_builder(). -from_string_builder(Builder) -> - gleam_stdlib:wrap_list(Builder). - --spec from_bit_string(bitstring()) -> gleam@bytes_builder:bytes_builder(). -from_bit_string(Bits) -> - gleam_stdlib:wrap_list(Bits). - --spec to_bit_string(gleam@bytes_builder:bytes_builder()) -> bitstring(). -to_bit_string(Builder) -> - erlang:list_to_bitstring(Builder). - --spec byte_size(gleam@bytes_builder:bytes_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache deleted file mode 100644 index 60cf27e..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta deleted file mode 100644 index f9f229f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl deleted file mode 100644 index 7dabaa3..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@bit_string). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, byte_size/1, append/2, slice/3, is_utf8/1, to_string/1, concat/1]). - --spec from_string(binary()) -> bitstring(). -from_string(X) -> - gleam_stdlib:identity(X). - --spec byte_size(bitstring()) -> integer(). -byte_size(X) -> - erlang:byte_size(X). - --spec append(bitstring(), bitstring()) -> bitstring(). -append(First, Second) -> - gleam@bit_array:append(First, Second). - --spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | - {error, nil}. -slice(String, Position, Length) -> - gleam_stdlib:bit_array_slice(String, Position, Length). - --spec is_utf8(bitstring()) -> boolean(). -is_utf8(Bits) -> - gleam@bit_array:is_utf8(Bits). - --spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. -to_string(Bits) -> - gleam@bit_array:to_string(Bits). - --spec concat(list(bitstring())) -> bitstring(). -concat(Bit_strings) -> - gleam_stdlib:bit_array_concat(Bit_strings). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache deleted file mode 100644 index 10a98f8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta deleted file mode 100644 index 33ef24c..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl deleted file mode 100644 index 57078cb..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.erl +++ /dev/null @@ -1,162 +0,0 @@ --module(gleam@bool). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export(['and'/2, 'or'/2, negate/1, nor/2, nand/2, exclusive_or/2, exclusive_nor/2, compare/2, max/2, min/2, to_int/1, to_string/1, guard/3, lazy_guard/3]). - --spec 'and'(boolean(), boolean()) -> boolean(). -'and'(A, B) -> - A andalso B. - --spec 'or'(boolean(), boolean()) -> boolean(). -'or'(A, B) -> - A orelse B. - --spec negate(boolean()) -> boolean(). -negate(Bool) -> - case Bool of - true -> - false; - - false -> - true - end. - --spec nor(boolean(), boolean()) -> boolean(). -nor(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - false; - - {true, false} -> - false; - - {true, true} -> - false - end. - --spec nand(boolean(), boolean()) -> boolean(). -nand(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - true; - - {true, false} -> - true; - - {true, true} -> - false - end. - --spec exclusive_or(boolean(), boolean()) -> boolean(). -exclusive_or(A, B) -> - case {A, B} of - {false, false} -> - false; - - {false, true} -> - true; - - {true, false} -> - true; - - {true, true} -> - false - end. - --spec exclusive_nor(boolean(), boolean()) -> boolean(). -exclusive_nor(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - false; - - {true, false} -> - false; - - {true, true} -> - true - end. - --spec compare(boolean(), boolean()) -> gleam@order:order(). -compare(A, B) -> - case {A, B} of - {true, true} -> - eq; - - {true, false} -> - gt; - - {false, false} -> - eq; - - {false, true} -> - lt - end. - --spec max(boolean(), boolean()) -> boolean(). -max(A, B) -> - case A of - true -> - true; - - false -> - B - end. - --spec min(boolean(), boolean()) -> boolean(). -min(A, B) -> - case A of - false -> - false; - - true -> - B - end. - --spec to_int(boolean()) -> integer(). -to_int(Bool) -> - case Bool of - false -> - 0; - - true -> - 1 - end. - --spec to_string(boolean()) -> binary(). -to_string(Bool) -> - case Bool of - false -> - <<"False"/utf8>>; - - true -> - <<"True"/utf8>> - end. - --spec guard(boolean(), EVP, fun(() -> EVP)) -> EVP. -guard(Requirement, Consequence, Alternative) -> - case Requirement of - true -> - Consequence; - - false -> - Alternative() - end. - --spec lazy_guard(boolean(), fun(() -> EVQ), fun(() -> EVQ)) -> EVQ. -lazy_guard(Requirement, Consequence, Alternative) -> - case Requirement of - true -> - Consequence(); - - false -> - Alternative() - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache deleted file mode 100644 index 8962cfc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta deleted file mode 100644 index 7b614aa..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl deleted file mode 100644 index 2f6dd93..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.erl +++ /dev/null @@ -1,87 +0,0 @@ --module(gleam@bytes_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([append_builder/2, prepend_builder/2, concat/1, new/0, from_string/1, prepend_string/2, append_string/2, from_string_builder/1, from_bit_array/1, prepend/2, append/2, concat_bit_arrays/1, to_bit_array/1, byte_size/1]). --export_type([bytes_builder/0]). - --opaque bytes_builder() :: {bytes, bitstring()} | - {text, gleam@string_builder:string_builder()} | - {many, list(bytes_builder())}. - --spec append_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). -append_builder(First, Second) -> - gleam_stdlib:iodata_append(First, Second). - --spec prepend_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). -prepend_builder(Second, First) -> - gleam_stdlib:iodata_append(First, Second). - --spec concat(list(bytes_builder())) -> bytes_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec new() -> bytes_builder(). -new() -> - gleam_stdlib:identity([]). - --spec from_string(binary()) -> bytes_builder(). -from_string(String) -> - gleam_stdlib:wrap_list(String). - --spec prepend_string(bytes_builder(), binary()) -> bytes_builder(). -prepend_string(Second, First) -> - gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). - --spec append_string(bytes_builder(), binary()) -> bytes_builder(). -append_string(First, Second) -> - gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). - --spec from_string_builder(gleam@string_builder:string_builder()) -> bytes_builder(). -from_string_builder(Builder) -> - gleam_stdlib:wrap_list(Builder). - --spec from_bit_array(bitstring()) -> bytes_builder(). -from_bit_array(Bits) -> - gleam_stdlib:wrap_list(Bits). - --spec prepend(bytes_builder(), bitstring()) -> bytes_builder(). -prepend(Second, First) -> - gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). - --spec append(bytes_builder(), bitstring()) -> bytes_builder(). -append(First, Second) -> - gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). - --spec concat_bit_arrays(list(bitstring())) -> bytes_builder(). -concat_bit_arrays(Bits) -> - gleam_stdlib:identity(Bits). - --spec to_list(list(list(bytes_builder())), list(bitstring())) -> list(bitstring()). -to_list(Stack, Acc) -> - case Stack of - [] -> - Acc; - - [[] | Remaining_stack] -> - to_list(Remaining_stack, Acc); - - [[{bytes, Bits} | Rest] | Remaining_stack@1] -> - to_list([Rest | Remaining_stack@1], [Bits | Acc]); - - [[{text, Builder} | Rest@1] | Remaining_stack@2] -> - Bits@1 = gleam_stdlib:identity( - gleam@string_builder:to_string(Builder) - ), - to_list([Rest@1 | Remaining_stack@2], [Bits@1 | Acc]); - - [[{many, Builders} | Rest@2] | Remaining_stack@3] -> - to_list([Builders, Rest@2 | Remaining_stack@3], Acc) - end. - --spec to_bit_array(bytes_builder()) -> bitstring(). -to_bit_array(Builder) -> - erlang:list_to_bitstring(Builder). - --spec byte_size(bytes_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache deleted file mode 100644 index acf4017..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta deleted file mode 100644 index 4410520..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl deleted file mode 100644 index 44b89ea..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.erl +++ /dev/null @@ -1,97 +0,0 @@ --module(gleam@dict). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). --export_type([dict/2]). - --type dict(KS, KT) :: any() | {gleam_phantom, KS, KT}. - --spec size(dict(any(), any())) -> integer(). -size(Dict) -> - maps:size(Dict). - --spec to_list(dict(LC, LD)) -> list({LC, LD}). -to_list(Dict) -> - maps:to_list(Dict). - --spec from_list(list({LM, LN})) -> dict(LM, LN). -from_list(List) -> - maps:from_list(List). - --spec has_key(dict(LW, any()), LW) -> boolean(). -has_key(Dict, Key) -> - maps:is_key(Key, Dict). - --spec new() -> dict(any(), any()). -new() -> - maps:new(). - --spec get(dict(MM, MN), MM) -> {ok, MN} | {error, nil}. -get(From, Get) -> - gleam_stdlib:map_get(From, Get). - --spec insert(dict(MY, MZ), MY, MZ) -> dict(MY, MZ). -insert(Dict, Key, Value) -> - maps:put(Key, Value, Dict). - --spec map_values(dict(NK, NL), fun((NK, NL) -> NO)) -> dict(NK, NO). -map_values(Dict, Fun) -> - maps:map(Fun, Dict). - --spec keys(dict(NY, any())) -> list(NY). -keys(Dict) -> - maps:keys(Dict). - --spec values(dict(any(), OJ)) -> list(OJ). -values(Dict) -> - maps:values(Dict). - --spec filter(dict(OS, OT), fun((OS, OT) -> boolean())) -> dict(OS, OT). -filter(Dict, Predicate) -> - maps:filter(Predicate, Dict). - --spec take(dict(PE, PF), list(PE)) -> dict(PE, PF). -take(Dict, Desired_keys) -> - maps:with(Desired_keys, Dict). - --spec merge(dict(PS, PT), dict(PS, PT)) -> dict(PS, PT). -merge(Dict, New_entries) -> - maps:merge(Dict, New_entries). - --spec delete(dict(QI, QJ), QI) -> dict(QI, QJ). -delete(Dict, Key) -> - maps:remove(Key, Dict). - --spec drop(dict(QU, QV), list(QU)) -> dict(QU, QV). -drop(Dict, Disallowed_keys) -> - case Disallowed_keys of - [] -> - Dict; - - [X | Xs] -> - drop(delete(Dict, X), Xs) - end. - --spec update(dict(RB, RC), RB, fun((gleam@option:option(RC)) -> RC)) -> dict(RB, RC). -update(Dict, Key, Fun) -> - _pipe = Dict, - _pipe@1 = get(_pipe, Key), - _pipe@2 = gleam@option:from_result(_pipe@1), - _pipe@3 = Fun(_pipe@2), - insert(Dict, Key, _pipe@3). - --spec do_fold(list({RI, RJ}), RL, fun((RL, RI, RJ) -> RL)) -> RL. -do_fold(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [{K, V} | Rest] -> - do_fold(Rest, Fun(Initial, K, V), Fun) - end. - --spec fold(dict(RM, RN), RQ, fun((RQ, RM, RN) -> RQ)) -> RQ. -fold(Dict, Initial, Fun) -> - _pipe = Dict, - _pipe@1 = to_list(_pipe), - do_fold(_pipe@1, Initial, Fun). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache deleted file mode 100644 index f10ed2a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta deleted file mode 100644 index 9ae5074..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl deleted file mode 100644 index 2c6016f..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.erl +++ /dev/null @@ -1,808 +0,0 @@ --module(gleam@dynamic). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from/1, unsafe_coerce/1, dynamic/1, bit_array/1, bit_string/1, classify/1, int/1, float/1, bool/1, shallow_list/1, optional/1, any/1, decode1/2, result/2, list/1, string/1, field/2, optional_field/2, element/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, dict/2, map/2, decode2/3, decode3/4, decode4/5, decode5/6, decode6/7, decode7/8, decode8/9, decode9/10]). --export_type([dynamic_/0, decode_error/0, unknown_tuple/0]). - --type dynamic_() :: any(). - --type decode_error() :: {decode_error, binary(), binary(), list(binary())}. - --type unknown_tuple() :: any(). - --spec from(any()) -> dynamic_(). -from(A) -> - gleam_stdlib:identity(A). - --spec unsafe_coerce(dynamic_()) -> any(). -unsafe_coerce(A) -> - gleam_stdlib:identity(A). - --spec dynamic(dynamic_()) -> {ok, dynamic_()} | {error, list(decode_error())}. -dynamic(Value) -> - {ok, Value}. - --spec bit_array(dynamic_()) -> {ok, bitstring()} | {error, list(decode_error())}. -bit_array(Data) -> - gleam_stdlib:decode_bit_array(Data). - --spec bit_string(dynamic_()) -> {ok, bitstring()} | - {error, list(decode_error())}. -bit_string(Data) -> - bit_array(Data). - --spec put_expected(decode_error(), binary()) -> decode_error(). -put_expected(Error, Expected) -> - erlang:setelement(2, Error, Expected). - --spec classify(dynamic_()) -> binary(). -classify(Data) -> - gleam_stdlib:classify_dynamic(Data). - --spec int(dynamic_()) -> {ok, integer()} | {error, list(decode_error())}. -int(Data) -> - gleam_stdlib:decode_int(Data). - --spec float(dynamic_()) -> {ok, float()} | {error, list(decode_error())}. -float(Data) -> - gleam_stdlib:decode_float(Data). - --spec bool(dynamic_()) -> {ok, boolean()} | {error, list(decode_error())}. -bool(Data) -> - gleam_stdlib:decode_bool(Data). - --spec shallow_list(dynamic_()) -> {ok, list(dynamic_())} | - {error, list(decode_error())}. -shallow_list(Value) -> - gleam_stdlib:decode_list(Value). - --spec optional(fun((dynamic_()) -> {ok, DGM} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, - gleam@option:option(DGM)} | - {error, list(decode_error())}). -optional(Decode) -> - fun(Value) -> gleam_stdlib:decode_option(Value, Decode) end. - --spec at_least_decode_tuple_error(integer(), dynamic_()) -> {ok, any()} | - {error, list(decode_error())}. -at_least_decode_tuple_error(Size, Data) -> - S = case Size of - 1 -> - <<""/utf8>>; - - _ -> - <<"s"/utf8>> - end, - Error = begin - _pipe = [<<"Tuple of at least "/utf8>>, - gleam@int:to_string(Size), - <<" element"/utf8>>, - S], - _pipe@1 = gleam@string_builder:from_strings(_pipe), - _pipe@2 = gleam@string_builder:to_string(_pipe@1), - {decode_error, _pipe@2, classify(Data), []} - end, - {error, [Error]}. - --spec any(list(fun((dynamic_()) -> {ok, DKT} | {error, list(decode_error())}))) -> fun((dynamic_()) -> {ok, - DKT} | - {error, list(decode_error())}). -any(Decoders) -> - fun(Data) -> case Decoders of - [] -> - {error, - [{decode_error, <<"another type"/utf8>>, classify(Data), []}]}; - - [Decoder | Decoders@1] -> - case Decoder(Data) of - {ok, Decoded} -> - {ok, Decoded}; - - {error, _} -> - (any(Decoders@1))(Data) - end - end end. - --spec all_errors({ok, any()} | {error, list(decode_error())}) -> list(decode_error()). -all_errors(Result) -> - case Result of - {ok, _} -> - []; - - {error, Errors} -> - Errors - end. - --spec decode1( - fun((DKX) -> DKY), - fun((dynamic_()) -> {ok, DKX} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DKY} | {error, list(decode_error())}). -decode1(Constructor, T1) -> - fun(Value) -> case T1(Value) of - {ok, A} -> - {ok, Constructor(A)}; - - A@1 -> - {error, all_errors(A@1)} - end end. - --spec push_path(decode_error(), any()) -> decode_error(). -push_path(Error, Name) -> - Name@1 = from(Name), - Decoder = any( - [fun string/1, - fun(X) -> gleam@result:map(int(X), fun gleam@int:to_string/1) end] - ), - Name@3 = case Decoder(Name@1) of - {ok, Name@2} -> - Name@2; - - {error, _} -> - _pipe = [<<"<"/utf8>>, classify(Name@1), <<">"/utf8>>], - _pipe@1 = gleam@string_builder:from_strings(_pipe), - gleam@string_builder:to_string(_pipe@1) - end, - erlang:setelement(4, Error, [Name@3 | erlang:element(4, Error)]). - --spec result( - fun((dynamic_()) -> {ok, DGA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DGC} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {ok, DGA} | {error, DGC}} | - {error, list(decode_error())}). -result(Decode_ok, Decode_error) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_result(Value), - fun(Inner_result) -> case Inner_result of - {ok, Raw} -> - gleam@result:'try'( - begin - _pipe = Decode_ok(Raw), - map_errors( - _pipe, - fun(_capture) -> - push_path(_capture, <<"ok"/utf8>>) - end - ) - end, - fun(Value@1) -> {ok, {ok, Value@1}} end - ); - - {error, Raw@1} -> - gleam@result:'try'( - begin - _pipe@1 = Decode_error(Raw@1), - map_errors( - _pipe@1, - fun(_capture@1) -> - push_path(_capture@1, <<"error"/utf8>>) - end - ) - end, - fun(Value@2) -> {ok, {error, Value@2}} end - ) - end end - ) - end. - --spec list(fun((dynamic_()) -> {ok, DGH} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, - list(DGH)} | - {error, list(decode_error())}). -list(Decoder_type) -> - fun(Dynamic) -> - gleam@result:'try'(shallow_list(Dynamic), fun(List) -> _pipe = List, - _pipe@1 = gleam@list:try_map(_pipe, Decoder_type), - map_errors( - _pipe@1, - fun(_capture) -> push_path(_capture, <<"*"/utf8>>) end - ) end) - end. - --spec map_errors( - {ok, DEV} | {error, list(decode_error())}, - fun((decode_error()) -> decode_error()) -) -> {ok, DEV} | {error, list(decode_error())}. -map_errors(Result, F) -> - gleam@result:map_error( - Result, - fun(_capture) -> gleam@list:map(_capture, F) end - ). - --spec decode_string(dynamic_()) -> {ok, binary()} | - {error, list(decode_error())}. -decode_string(Data) -> - _pipe = bit_array(Data), - _pipe@1 = map_errors( - _pipe, - fun(_capture) -> put_expected(_capture, <<"String"/utf8>>) end - ), - gleam@result:'try'( - _pipe@1, - fun(Raw) -> case gleam@bit_array:to_string(Raw) of - {ok, String} -> - {ok, String}; - - {error, nil} -> - {error, - [{decode_error, - <<"String"/utf8>>, - <<"BitArray"/utf8>>, - []}]} - end end - ). - --spec string(dynamic_()) -> {ok, binary()} | {error, list(decode_error())}. -string(Data) -> - decode_string(Data). - --spec field( - any(), - fun((dynamic_()) -> {ok, DGW} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DGW} | {error, list(decode_error())}). -field(Name, Inner_type) -> - fun(Value) -> - Missing_field_error = {decode_error, - <<"field"/utf8>>, - <<"nothing"/utf8>>, - []}, - gleam@result:'try'( - gleam_stdlib:decode_field(Value, Name), - fun(Maybe_inner) -> _pipe = Maybe_inner, - _pipe@1 = gleam@option:to_result(_pipe, [Missing_field_error]), - _pipe@2 = gleam@result:'try'(_pipe@1, Inner_type), - map_errors( - _pipe@2, - fun(_capture) -> push_path(_capture, Name) end - ) end - ) - end. - --spec optional_field( - any(), - fun((dynamic_()) -> {ok, DHA} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@option:option(DHA)} | - {error, list(decode_error())}). -optional_field(Name, Inner_type) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_field(Value, Name), - fun(Maybe_inner) -> case Maybe_inner of - none -> - {ok, none}; - - {some, Dynamic_inner} -> - _pipe = Dynamic_inner, - _pipe@1 = gleam_stdlib:decode_option(_pipe, Inner_type), - map_errors( - _pipe@1, - fun(_capture) -> push_path(_capture, Name) end - ) - end end - ) - end. - --spec element( - integer(), - fun((dynamic_()) -> {ok, DHI} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DHI} | {error, list(decode_error())}). -element(Index, Inner_type) -> - fun(Data) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple(Data), - fun(Tuple) -> - Size = gleam_stdlib:size_of_tuple(Tuple), - gleam@result:'try'(case Index >= 0 of - true -> - case Index < Size of - true -> - gleam_stdlib:tuple_get(Tuple, Index); - - false -> - at_least_decode_tuple_error(Index + 1, Data) - end; - - false -> - case gleam@int:absolute_value(Index) =< Size of - true -> - gleam_stdlib:tuple_get(Tuple, Size + Index); - - false -> - at_least_decode_tuple_error( - gleam@int:absolute_value(Index), - Data - ) - end - end, fun(Data@1) -> _pipe = Inner_type(Data@1), - map_errors( - _pipe, - fun(_capture) -> push_path(_capture, Index) end - ) end) - end - ) - end. - --spec tuple_errors({ok, any()} | {error, list(decode_error())}, binary()) -> list(decode_error()). -tuple_errors(Result, Name) -> - case Result of - {ok, _} -> - []; - - {error, Errors} -> - gleam@list:map( - Errors, - fun(_capture) -> push_path(_capture, Name) end - ) - end. - --spec tuple2( - fun((dynamic_()) -> {ok, DII} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DIK} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {DII, DIK}} | {error, list(decode_error())}). -tuple2(Decode1, Decode2) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple2(Value), - fun(_use0) -> - {A, B} = _use0, - case {Decode1(A), Decode2(B)} of - {{ok, A@1}, {ok, B@1}} -> - {ok, {A@1, B@1}}; - - {A@2, B@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - {error, _pipe@1} - end - end - ) - end. - --spec tuple3( - fun((dynamic_()) -> {ok, DIN} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DIP} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DIR} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {DIN, DIP, DIR}} | {error, list(decode_error())}). -tuple3(Decode1, Decode2, Decode3) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple3(Value), - fun(_use0) -> - {A, B, C} = _use0, - case {Decode1(A), Decode2(B), Decode3(C)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}} -> - {ok, {A@1, B@1, C@1}}; - - {A@2, B@2, C@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - {error, _pipe@2} - end - end - ) - end. - --spec tuple4( - fun((dynamic_()) -> {ok, DIU} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DIW} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DIY} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJA} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {DIU, DIW, DIY, DJA}} | - {error, list(decode_error())}). -tuple4(Decode1, Decode2, Decode3, Decode4) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple4(Value), - fun(_use0) -> - {A, B, C, D} = _use0, - case {Decode1(A), Decode2(B), Decode3(C), Decode4(D)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}} -> - {ok, {A@1, B@1, C@1, D@1}}; - - {A@2, B@2, C@2, D@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - {error, _pipe@3} - end - end - ) - end. - --spec tuple5( - fun((dynamic_()) -> {ok, DJD} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJF} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJH} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJJ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJL} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {DJD, DJF, DJH, DJJ, DJL}} | - {error, list(decode_error())}). -tuple5(Decode1, Decode2, Decode3, Decode4, Decode5) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple5(Value), - fun(_use0) -> - {A, B, C, D, E} = _use0, - case {Decode1(A), - Decode2(B), - Decode3(C), - Decode4(D), - Decode5(E)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}, {ok, E@1}} -> - {ok, {A@1, B@1, C@1, D@1, E@1}}; - - {A@2, B@2, C@2, D@2, E@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - _pipe@4 = gleam@list:append( - _pipe@3, - tuple_errors(E@2, <<"4"/utf8>>) - ), - {error, _pipe@4} - end - end - ) - end. - --spec tuple6( - fun((dynamic_()) -> {ok, DJO} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJQ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJS} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJU} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJW} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DJY} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {DJO, DJQ, DJS, DJU, DJW, DJY}} | - {error, list(decode_error())}). -tuple6(Decode1, Decode2, Decode3, Decode4, Decode5, Decode6) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple6(Value), - fun(_use0) -> - {A, B, C, D, E, F} = _use0, - case {Decode1(A), - Decode2(B), - Decode3(C), - Decode4(D), - Decode5(E), - Decode6(F)} of - {{ok, A@1}, - {ok, B@1}, - {ok, C@1}, - {ok, D@1}, - {ok, E@1}, - {ok, F@1}} -> - {ok, {A@1, B@1, C@1, D@1, E@1, F@1}}; - - {A@2, B@2, C@2, D@2, E@2, F@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - _pipe@4 = gleam@list:append( - _pipe@3, - tuple_errors(E@2, <<"4"/utf8>>) - ), - _pipe@5 = gleam@list:append( - _pipe@4, - tuple_errors(F@2, <<"5"/utf8>>) - ), - {error, _pipe@5} - end - end - ) - end. - --spec dict( - fun((dynamic_()) -> {ok, DKB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DKD} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@dict:dict(DKB, DKD)} | - {error, list(decode_error())}). -dict(Key_type, Value_type) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_map(Value), - fun(Map) -> - gleam@result:'try'( - begin - _pipe = Map, - _pipe@1 = gleam@dict:to_list(_pipe), - gleam@list:try_map( - _pipe@1, - fun(Pair) -> - {K, V} = Pair, - gleam@result:'try'( - begin - _pipe@2 = Key_type(K), - map_errors( - _pipe@2, - fun(_capture) -> - push_path( - _capture, - <<"keys"/utf8>> - ) - end - ) - end, - fun(K@1) -> - gleam@result:'try'( - begin - _pipe@3 = Value_type(V), - map_errors( - _pipe@3, - fun(_capture@1) -> - push_path( - _capture@1, - <<"values"/utf8>> - ) - end - ) - end, - fun(V@1) -> {ok, {K@1, V@1}} end - ) - end - ) - end - ) - end, - fun(Pairs) -> {ok, gleam@dict:from_list(Pairs)} end - ) - end - ) - end. - --spec map( - fun((dynamic_()) -> {ok, DKI} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DKK} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@dict:dict(DKI, DKK)} | - {error, list(decode_error())}). -map(Key_type, Value_type) -> - dict(Key_type, Value_type). - --spec decode2( - fun((DLB, DLC) -> DLD), - fun((dynamic_()) -> {ok, DLB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLC} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DLD} | {error, list(decode_error())}). -decode2(Constructor, T1, T2) -> - fun(Value) -> case {T1(Value), T2(Value)} of - {{ok, A}, {ok, B}} -> - {ok, Constructor(A, B)}; - - {A@1, B@1} -> - {error, gleam@list:concat([all_errors(A@1), all_errors(B@1)])} - end end. - --spec decode3( - fun((DLH, DLI, DLJ) -> DLK), - fun((dynamic_()) -> {ok, DLH} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLI} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLJ} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DLK} | {error, list(decode_error())}). -decode3(Constructor, T1, T2, T3) -> - fun(Value) -> case {T1(Value), T2(Value), T3(Value)} of - {{ok, A}, {ok, B}, {ok, C}} -> - {ok, Constructor(A, B, C)}; - - {A@1, B@1, C@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), all_errors(B@1), all_errors(C@1)] - )} - end end. - --spec decode4( - fun((DLP, DLQ, DLR, DLS) -> DLT), - fun((dynamic_()) -> {ok, DLP} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLQ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLR} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DLS} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DLT} | {error, list(decode_error())}). -decode4(Constructor, T1, T2, T3, T4) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}} -> - {ok, Constructor(A, B, C, D)}; - - {A@1, B@1, C@1, D@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1)] - )} - end end. - --spec decode5( - fun((DLZ, DMA, DMB, DMC, DMD) -> DME), - fun((dynamic_()) -> {ok, DLZ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMC} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMD} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DME} | {error, list(decode_error())}). -decode5(Constructor, T1, T2, T3, T4, T5) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}} -> - {ok, Constructor(A, B, C, D, E)}; - - {A@1, B@1, C@1, D@1, E@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1)] - )} - end end. - --spec decode6( - fun((DML, DMM, DMN, DMO, DMP, DMQ) -> DMR), - fun((dynamic_()) -> {ok, DML} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMN} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMO} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMP} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DMQ} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DMR} | {error, list(decode_error())}). -decode6(Constructor, T1, T2, T3, T4, T5, T6) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}} -> - {ok, Constructor(A, B, C, D, E, F)}; - - {A@1, B@1, C@1, D@1, E@1, F@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1)] - )} - end end. - --spec decode7( - fun((DMZ, DNA, DNB, DNC, DND, DNE, DNF) -> DNG), - fun((dynamic_()) -> {ok, DMZ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNC} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DND} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNE} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNF} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DNG} | {error, list(decode_error())}). -decode7(Constructor, T1, T2, T3, T4, T5, T6, T7) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}, {ok, G}} -> - {ok, Constructor(A, B, C, D, E, F, G)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1)] - )} - end end. - --spec decode8( - fun((DNP, DNQ, DNR, DNS, DNT, DNU, DNV, DNW) -> DNX), - fun((dynamic_()) -> {ok, DNP} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNQ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNR} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNS} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNT} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNU} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNV} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DNW} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DNX} | {error, list(decode_error())}). -decode8(Constructor, T1, T2, T3, T4, T5, T6, T7, T8) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X)} of - {{ok, A}, - {ok, B}, - {ok, C}, - {ok, D}, - {ok, E}, - {ok, F}, - {ok, G}, - {ok, H}} -> - {ok, Constructor(A, B, C, D, E, F, G, H)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1), - all_errors(H@1)] - )} - end end. - --spec decode9( - fun((DOH, DOI, DOJ, DOK, DOL, DOM, DON, DOO, DOP) -> DOQ), - fun((dynamic_()) -> {ok, DOH} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOI} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOJ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOK} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOL} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DON} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOO} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DOP} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, DOQ} | {error, list(decode_error())}). -decode9(Constructor, T1, T2, T3, T4, T5, T6, T7, T8, T9) -> - fun(X) -> - case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X), T9(X)} of - {{ok, A}, - {ok, B}, - {ok, C}, - {ok, D}, - {ok, E}, - {ok, F}, - {ok, G}, - {ok, H}, - {ok, I}} -> - {ok, Constructor(A, B, C, D, E, F, G, H, I)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1, I@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1), - all_errors(H@1), - all_errors(I@1)] - )} - end - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache deleted file mode 100644 index 677362b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta deleted file mode 100644 index f10b39f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl deleted file mode 100644 index 33b3d4a..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.erl +++ /dev/null @@ -1,181 +0,0 @@ --module(gleam@float). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse/1, to_string/1, compare/2, min/2, max/2, clamp/3, ceiling/1, floor/1, round/1, truncate/1, absolute_value/1, loosely_compare/3, loosely_equals/3, power/2, square_root/1, negate/1, sum/1, product/1, random/2, divide/2, add/2, multiply/2, subtract/2]). - --spec parse(binary()) -> {ok, float()} | {error, nil}. -parse(String) -> - gleam_stdlib:parse_float(String). - --spec to_string(float()) -> binary(). -to_string(X) -> - gleam_stdlib:float_to_string(X). - --spec compare(float(), float()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. - --spec min(float(), float()) -> float(). -min(A, B) -> - case A < B of - true -> - A; - - false -> - B - end. - --spec max(float(), float()) -> float(). -max(A, B) -> - case A > B of - true -> - A; - - false -> - B - end. - --spec clamp(float(), float(), float()) -> float(). -clamp(X, Min_bound, Max_bound) -> - _pipe = X, - _pipe@1 = min(_pipe, Max_bound), - max(_pipe@1, Min_bound). - --spec ceiling(float()) -> float(). -ceiling(X) -> - math:ceil(X). - --spec floor(float()) -> float(). -floor(X) -> - math:floor(X). - --spec round(float()) -> integer(). -round(X) -> - erlang:round(X). - --spec truncate(float()) -> integer(). -truncate(X) -> - erlang:trunc(X). - --spec absolute_value(float()) -> float(). -absolute_value(X) -> - case X >= +0.0 of - true -> - X; - - _ -> - +0.0 - X - end. - --spec loosely_compare(float(), float(), float()) -> gleam@order:order(). -loosely_compare(A, B, Tolerance) -> - Difference = absolute_value(A - B), - case Difference =< Tolerance of - true -> - eq; - - false -> - compare(A, B) - end. - --spec loosely_equals(float(), float(), float()) -> boolean(). -loosely_equals(A, B, Tolerance) -> - Difference = absolute_value(A - B), - Difference =< Tolerance. - --spec power(float(), float()) -> {ok, float()} | {error, nil}. -power(Base, Exponent) -> - Fractional = (ceiling(Exponent) - Exponent) > +0.0, - case ((Base < +0.0) andalso Fractional) orelse ((Base =:= +0.0) andalso (Exponent - < +0.0)) of - true -> - {error, nil}; - - false -> - {ok, math:pow(Base, Exponent)} - end. - --spec square_root(float()) -> {ok, float()} | {error, nil}. -square_root(X) -> - power(X, 0.5). - --spec negate(float()) -> float(). -negate(X) -> - -1.0 * X. - --spec do_sum(list(float()), float()) -> float(). -do_sum(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_sum(Rest, X + Initial) - end. - --spec sum(list(float())) -> float(). -sum(Numbers) -> - _pipe = Numbers, - do_sum(_pipe, +0.0). - --spec do_product(list(float()), float()) -> float(). -do_product(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_product(Rest, X * Initial) - end. - --spec product(list(float())) -> float(). -product(Numbers) -> - case Numbers of - [] -> - 1.0; - - _ -> - do_product(Numbers, 1.0) - end. - --spec random(float(), float()) -> float(). -random(Min, Max) -> - (rand:uniform() * (Max - Min)) + Min. - --spec divide(float(), float()) -> {ok, float()} | {error, nil}. -divide(A, B) -> - case B of - +0.0 -> - {error, nil}; - - B@1 -> - {ok, case B@1 of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> A / Gleam@denominator - end} - end. - --spec add(float(), float()) -> float(). -add(A, B) -> - A + B. - --spec multiply(float(), float()) -> float(). -multiply(A, B) -> - A * B. - --spec subtract(float(), float()) -> float(). -subtract(A, B) -> - A - B. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache deleted file mode 100644 index 2f3e554..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta deleted file mode 100644 index ffb4624..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl deleted file mode 100644 index 75f142f..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.erl +++ /dev/null @@ -1,67 +0,0 @@ --module(gleam@function). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1, constant/1, tap/2, apply1/2, apply2/3, apply3/4]). - --spec compose(fun((ENH) -> ENI), fun((ENI) -> ENJ)) -> fun((ENH) -> ENJ). -compose(Fun1, Fun2) -> - fun(A) -> Fun2(Fun1(A)) end. - --spec curry2(fun((ENK, ENL) -> ENM)) -> fun((ENK) -> fun((ENL) -> ENM)). -curry2(Fun) -> - fun(A) -> fun(B) -> Fun(A, B) end end. - --spec curry3(fun((ENO, ENP, ENQ) -> ENR)) -> fun((ENO) -> fun((ENP) -> fun((ENQ) -> ENR))). -curry3(Fun) -> - fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. - --spec curry4(fun((ENT, ENU, ENV, ENW) -> ENX)) -> fun((ENT) -> fun((ENU) -> fun((ENV) -> fun((ENW) -> ENX)))). -curry4(Fun) -> - fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. - --spec curry5(fun((ENZ, EOA, EOB, EOC, EOD) -> EOE)) -> fun((ENZ) -> fun((EOA) -> fun((EOB) -> fun((EOC) -> fun((EOD) -> EOE))))). -curry5(Fun) -> - fun(A) -> - fun(B) -> - fun(C) -> fun(D) -> fun(E) -> Fun(A, B, C, D, E) end end end - end - end. - --spec curry6(fun((EOG, EOH, EOI, EOJ, EOK, EOL) -> EOM)) -> fun((EOG) -> fun((EOH) -> fun((EOI) -> fun((EOJ) -> fun((EOK) -> fun((EOL) -> EOM)))))). -curry6(Fun) -> - fun(A) -> - fun(B) -> - fun(C) -> - fun(D) -> fun(E) -> fun(F) -> Fun(A, B, C, D, E, F) end end end - end - end - end. - --spec flip(fun((EOO, EOP) -> EOQ)) -> fun((EOP, EOO) -> EOQ). -flip(Fun) -> - fun(B, A) -> Fun(A, B) end. - --spec identity(EOR) -> EOR. -identity(X) -> - X. - --spec constant(EOS) -> fun((any()) -> EOS). -constant(Value) -> - fun(_) -> Value end. - --spec tap(EOU, fun((EOU) -> any())) -> EOU. -tap(Arg, Effect) -> - Effect(Arg), - Arg. - --spec apply1(fun((EOW) -> EOX), EOW) -> EOX. -apply1(Fun, Arg1) -> - Fun(Arg1). - --spec apply2(fun((EOY, EOZ) -> EPA), EOY, EOZ) -> EPA. -apply2(Fun, Arg1, Arg2) -> - Fun(Arg1, Arg2). - --spec apply3(fun((EPB, EPC, EPD) -> EPE), EPB, EPC, EPD) -> EPE. -apply3(Fun, Arg1, Arg2, Arg3) -> - Fun(Arg1, Arg2, Arg3). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache deleted file mode 100644 index 62076d5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta deleted file mode 100644 index 2d987e1..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl deleted file mode 100644 index 2a5dd2c..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.erl +++ /dev/null @@ -1,332 +0,0 @@ --module(gleam@int). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([absolute_value/1, parse/1, base_parse/2, to_string/1, to_base_string/2, to_base2/1, to_base8/1, to_base16/1, to_base36/1, to_float/1, power/2, square_root/1, compare/2, min/2, max/2, clamp/3, is_even/1, is_odd/1, negate/1, sum/1, product/1, digits/2, undigits/2, random/2, divide/2, remainder/2, modulo/2, floor_divide/2, add/2, multiply/2, subtract/2, bitwise_and/2, bitwise_not/1, bitwise_or/2, bitwise_exclusive_or/2, bitwise_shift_left/2, bitwise_shift_right/2]). --export_type([invalid_base/0]). - --type invalid_base() :: invalid_base. - --spec absolute_value(integer()) -> integer(). -absolute_value(X) -> - case X >= 0 of - true -> - X; - - false -> - X * -1 - end. - --spec parse(binary()) -> {ok, integer()} | {error, nil}. -parse(String) -> - gleam_stdlib:parse_int(String). - --spec base_parse(binary(), integer()) -> {ok, integer()} | {error, nil}. -base_parse(String, Base) -> - case (Base >= 2) andalso (Base =< 36) of - true -> - gleam_stdlib:int_from_base_string(String, Base); - - false -> - {error, nil} - end. - --spec to_string(integer()) -> binary(). -to_string(X) -> - erlang:integer_to_binary(X). - --spec to_base_string(integer(), integer()) -> {ok, binary()} | - {error, invalid_base()}. -to_base_string(X, Base) -> - case (Base >= 2) andalso (Base =< 36) of - true -> - {ok, erlang:integer_to_binary(X, Base)}; - - false -> - {error, invalid_base} - end. - --spec to_base2(integer()) -> binary(). -to_base2(X) -> - erlang:integer_to_binary(X, 2). - --spec to_base8(integer()) -> binary(). -to_base8(X) -> - erlang:integer_to_binary(X, 8). - --spec to_base16(integer()) -> binary(). -to_base16(X) -> - erlang:integer_to_binary(X, 16). - --spec to_base36(integer()) -> binary(). -to_base36(X) -> - erlang:integer_to_binary(X, 36). - --spec to_float(integer()) -> float(). -to_float(X) -> - erlang:float(X). - --spec power(integer(), float()) -> {ok, float()} | {error, nil}. -power(Base, Exponent) -> - _pipe = Base, - _pipe@1 = to_float(_pipe), - gleam@float:power(_pipe@1, Exponent). - --spec square_root(integer()) -> {ok, float()} | {error, nil}. -square_root(X) -> - _pipe = X, - _pipe@1 = to_float(_pipe), - gleam@float:square_root(_pipe@1). - --spec compare(integer(), integer()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. - --spec min(integer(), integer()) -> integer(). -min(A, B) -> - case A < B of - true -> - A; - - false -> - B - end. - --spec max(integer(), integer()) -> integer(). -max(A, B) -> - case A > B of - true -> - A; - - false -> - B - end. - --spec clamp(integer(), integer(), integer()) -> integer(). -clamp(X, Min_bound, Max_bound) -> - _pipe = X, - _pipe@1 = min(_pipe, Max_bound), - max(_pipe@1, Min_bound). - --spec is_even(integer()) -> boolean(). -is_even(X) -> - (X rem 2) =:= 0. - --spec is_odd(integer()) -> boolean(). -is_odd(X) -> - (X rem 2) /= 0. - --spec negate(integer()) -> integer(). -negate(X) -> - -1 * X. - --spec do_sum(list(integer()), integer()) -> integer(). -do_sum(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_sum(Rest, X + Initial) - end. - --spec sum(list(integer())) -> integer(). -sum(Numbers) -> - _pipe = Numbers, - do_sum(_pipe, 0). - --spec do_product(list(integer()), integer()) -> integer(). -do_product(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_product(Rest, X * Initial) - end. - --spec product(list(integer())) -> integer(). -product(Numbers) -> - case Numbers of - [] -> - 1; - - _ -> - do_product(Numbers, 1) - end. - --spec do_digits(integer(), integer(), list(integer())) -> list(integer()). -do_digits(X, Base, Acc) -> - case absolute_value(X) < Base of - true -> - [X | Acc]; - - false -> - do_digits(case Base of - 0 -> 0; - Gleam@denominator -> X div Gleam@denominator - end, Base, [case Base of - 0 -> 0; - Gleam@denominator@1 -> X rem Gleam@denominator@1 - end | Acc]) - end. - --spec digits(integer(), integer()) -> {ok, list(integer())} | - {error, invalid_base()}. -digits(X, Base) -> - case Base < 2 of - true -> - {error, invalid_base}; - - false -> - {ok, do_digits(X, Base, [])} - end. - --spec do_undigits(list(integer()), integer(), integer()) -> {ok, integer()} | - {error, invalid_base()}. -do_undigits(Numbers, Base, Acc) -> - case Numbers of - [] -> - {ok, Acc}; - - [Digit | _] when Digit >= Base -> - {error, invalid_base}; - - [Digit@1 | Rest] -> - do_undigits(Rest, Base, (Acc * Base) + Digit@1) - end. - --spec undigits(list(integer()), integer()) -> {ok, integer()} | - {error, invalid_base()}. -undigits(Numbers, Base) -> - case Base < 2 of - true -> - {error, invalid_base}; - - false -> - do_undigits(Numbers, Base, 0) - end. - --spec random(integer(), integer()) -> integer(). -random(Min, Max) -> - _pipe = gleam@float:random(to_float(Min), to_float(Max)), - _pipe@1 = gleam@float:floor(_pipe), - gleam@float:round(_pipe@1). - --spec divide(integer(), integer()) -> {ok, integer()} | {error, nil}. -divide(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend div Gleam@denominator - end} - end. - --spec remainder(integer(), integer()) -> {ok, integer()} | {error, nil}. -remainder(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end} - end. - --spec modulo(integer(), integer()) -> {ok, integer()} | {error, nil}. -modulo(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - _ -> - Remainder = case Divisor of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end, - case (Remainder * Divisor) < 0 of - true -> - {ok, Remainder + Divisor}; - - false -> - {ok, Remainder} - end - end. - --spec floor_divide(integer(), integer()) -> {ok, integer()} | {error, nil}. -floor_divide(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - case ((Dividend * Divisor@1) < 0) andalso ((case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end) /= 0) of - true -> - {ok, (case Divisor@1 of - 0 -> 0; - Gleam@denominator@1 -> Dividend div Gleam@denominator@1 - end) - 1}; - - false -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator@2 -> Dividend div Gleam@denominator@2 - end} - end - end. - --spec add(integer(), integer()) -> integer(). -add(A, B) -> - A + B. - --spec multiply(integer(), integer()) -> integer(). -multiply(A, B) -> - A * B. - --spec subtract(integer(), integer()) -> integer(). -subtract(A, B) -> - A - B. - --spec bitwise_and(integer(), integer()) -> integer(). -bitwise_and(X, Y) -> - erlang:'band'(X, Y). - --spec bitwise_not(integer()) -> integer(). -bitwise_not(X) -> - erlang:'bnot'(X). - --spec bitwise_or(integer(), integer()) -> integer(). -bitwise_or(X, Y) -> - erlang:'bor'(X, Y). - --spec bitwise_exclusive_or(integer(), integer()) -> integer(). -bitwise_exclusive_or(X, Y) -> - erlang:'bxor'(X, Y). - --spec bitwise_shift_left(integer(), integer()) -> integer(). -bitwise_shift_left(X, Y) -> - erlang:'bsl'(X, Y). - --spec bitwise_shift_right(integer(), integer()) -> integer(). -bitwise_shift_right(X, Y) -> - erlang:'bsr'(X, Y). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache deleted file mode 100644 index ddf78ca..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta deleted file mode 100644 index 06ce652..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl deleted file mode 100644 index 3ab9c35..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.erl +++ /dev/null @@ -1,27 +0,0 @@ --module(gleam@io). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([print/1, print_error/1, println/1, println_error/1, debug/1]). - --spec print(binary()) -> nil. -print(String) -> - gleam_stdlib:print(String). - --spec print_error(binary()) -> nil. -print_error(String) -> - gleam_stdlib:print_error(String). - --spec println(binary()) -> nil. -println(String) -> - gleam_stdlib:println(String). - --spec println_error(binary()) -> nil. -println_error(String) -> - gleam_stdlib:println_error(String). - --spec debug(FHE) -> FHE. -debug(Term) -> - _pipe = Term, - _pipe@1 = gleam@string:inspect(_pipe), - gleam_stdlib:println_error(_pipe@1), - Term. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache deleted file mode 100644 index 2582f43..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta deleted file mode 100644 index 2dcb80d..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl deleted file mode 100644 index c7a4b31..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.erl +++ /dev/null @@ -1,744 +0,0 @@ --module(gleam@iterator). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([unfold/2, repeatedly/1, repeat/1, from_list/1, transform/3, fold/3, run/1, to_list/1, step/1, take/2, drop/2, map/2, map2/3, append/2, flatten/1, concat/1, flat_map/2, filter/2, cycle/1, find/2, index/1, iterate/2, take_while/2, drop_while/2, scan/3, zip/2, chunk/2, sized_chunk/2, intersperse/2, any/2, all/2, group/2, reduce/2, last/1, empty/0, once/1, range/2, single/1, interleave/2, fold_until/3, try_fold/3, first/1, at/2, length/1, each/2, yield/2]). --export_type([action/1, iterator/1, step/2, chunk/2, sized_chunk/1]). - --type action(BUS) :: stop | {continue, BUS, fun(() -> action(BUS))}. - --opaque iterator(BUT) :: {iterator, fun(() -> action(BUT))}. - --type step(BUU, BUV) :: {next, BUU, BUV} | done. - --type chunk(BUW, BUX) :: {another_by, - list(BUW), - BUX, - BUW, - fun(() -> action(BUW))} | - {last_by, list(BUW)}. - --type sized_chunk(BUY) :: {another, list(BUY), fun(() -> action(BUY))} | - {last, list(BUY)} | - no_more. - --spec stop() -> action(any()). -stop() -> - stop. - --spec do_unfold(BVB, fun((BVB) -> step(BVC, BVB))) -> fun(() -> action(BVC)). -do_unfold(Initial, F) -> - fun() -> case F(Initial) of - {next, X, Acc} -> - {continue, X, do_unfold(Acc, F)}; - - done -> - stop - end end. - --spec unfold(BVG, fun((BVG) -> step(BVH, BVG))) -> iterator(BVH). -unfold(Initial, F) -> - _pipe = Initial, - _pipe@1 = do_unfold(_pipe, F), - {iterator, _pipe@1}. - --spec repeatedly(fun(() -> BVL)) -> iterator(BVL). -repeatedly(F) -> - unfold(nil, fun(_) -> {next, F(), nil} end). - --spec repeat(BVN) -> iterator(BVN). -repeat(X) -> - repeatedly(fun() -> X end). - --spec from_list(list(BVP)) -> iterator(BVP). -from_list(List) -> - Yield = fun(Acc) -> case Acc of - [] -> - done; - - [Head | Tail] -> - {next, Head, Tail} - end end, - unfold(List, Yield). - --spec do_transform( - fun(() -> action(BVS)), - BVU, - fun((BVU, BVS) -> step(BVV, BVU)) -) -> fun(() -> action(BVV)). -do_transform(Continuation, State, F) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, El, Next} -> - case F(State, El) of - done -> - stop; - - {next, Yield, Next_state} -> - {continue, Yield, do_transform(Next, Next_state, F)} - end - end end. - --spec transform(iterator(BVZ), BWB, fun((BWB, BVZ) -> step(BWC, BWB))) -> iterator(BWC). -transform(Iterator, Initial, F) -> - _pipe = do_transform(erlang:element(2, Iterator), Initial, F), - {iterator, _pipe}. - --spec do_fold(fun(() -> action(BWG)), fun((BWI, BWG) -> BWI), BWI) -> BWI. -do_fold(Continuation, F, Accumulator) -> - case Continuation() of - {continue, Elem, Next} -> - do_fold(Next, F, F(Accumulator, Elem)); - - stop -> - Accumulator - end. - --spec fold(iterator(BWJ), BWL, fun((BWL, BWJ) -> BWL)) -> BWL. -fold(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_fold(_pipe, F, Initial). - --spec run(iterator(any())) -> nil. -run(Iterator) -> - fold(Iterator, nil, fun(_, _) -> nil end). - --spec to_list(iterator(BWO)) -> list(BWO). -to_list(Iterator) -> - _pipe = Iterator, - _pipe@1 = fold(_pipe, [], fun(Acc, E) -> [E | Acc] end), - gleam@list:reverse(_pipe@1). - --spec step(iterator(BWR)) -> step(BWR, iterator(BWR)). -step(Iterator) -> - case (erlang:element(2, Iterator))() of - stop -> - done; - - {continue, E, A} -> - {next, E, {iterator, A}} - end. - --spec do_take(fun(() -> action(BWW)), integer()) -> fun(() -> action(BWW)). -do_take(Continuation, Desired) -> - fun() -> case Desired > 0 of - false -> - stop; - - true -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - {continue, E, do_take(Next, Desired - 1)} - end - end end. - --spec take(iterator(BWZ), integer()) -> iterator(BWZ). -take(Iterator, Desired) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_take(_pipe, Desired), - {iterator, _pipe@1}. - --spec do_drop(fun(() -> action(BXC)), integer()) -> action(BXC). -do_drop(Continuation, Desired) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Desired > 0 of - true -> - do_drop(Next, Desired - 1); - - false -> - {continue, E, Next} - end - end. - --spec drop(iterator(BXF), integer()) -> iterator(BXF). -drop(Iterator, Desired) -> - _pipe = fun() -> do_drop(erlang:element(2, Iterator), Desired) end, - {iterator, _pipe}. - --spec do_map(fun(() -> action(BXI)), fun((BXI) -> BXK)) -> fun(() -> action(BXK)). -do_map(Continuation, F) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Continuation@1} -> - {continue, F(E), do_map(Continuation@1, F)} - end end. - --spec map(iterator(BXM), fun((BXM) -> BXO)) -> iterator(BXO). -map(Iterator, F) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_map(_pipe, F), - {iterator, _pipe@1}. - --spec do_map2( - fun(() -> action(BXQ)), - fun(() -> action(BXS)), - fun((BXQ, BXS) -> BXU) -) -> fun(() -> action(BXU)). -do_map2(Continuation1, Continuation2, Fun) -> - fun() -> case Continuation1() of - stop -> - stop; - - {continue, A, Next_a} -> - case Continuation2() of - stop -> - stop; - - {continue, B, Next_b} -> - {continue, Fun(A, B), do_map2(Next_a, Next_b, Fun)} - end - end end. - --spec map2(iterator(BXW), iterator(BXY), fun((BXW, BXY) -> BYA)) -> iterator(BYA). -map2(Iterator1, Iterator2, Fun) -> - _pipe = do_map2( - erlang:element(2, Iterator1), - erlang:element(2, Iterator2), - Fun - ), - {iterator, _pipe}. - --spec do_append(fun(() -> action(BYC)), fun(() -> action(BYC))) -> action(BYC). -do_append(First, Second) -> - case First() of - {continue, E, First@1} -> - {continue, E, fun() -> do_append(First@1, Second) end}; - - stop -> - Second() - end. - --spec append(iterator(BYG), iterator(BYG)) -> iterator(BYG). -append(First, Second) -> - _pipe = fun() -> - do_append(erlang:element(2, First), erlang:element(2, Second)) - end, - {iterator, _pipe}. - --spec do_flatten(fun(() -> action(iterator(BYK)))) -> action(BYK). -do_flatten(Flattened) -> - case Flattened() of - stop -> - stop; - - {continue, It, Next_iterator} -> - do_append( - erlang:element(2, It), - fun() -> do_flatten(Next_iterator) end - ) - end. - --spec flatten(iterator(iterator(BYO))) -> iterator(BYO). -flatten(Iterator) -> - _pipe = fun() -> do_flatten(erlang:element(2, Iterator)) end, - {iterator, _pipe}. - --spec concat(list(iterator(BYS))) -> iterator(BYS). -concat(Iterators) -> - flatten(from_list(Iterators)). - --spec flat_map(iterator(BYW), fun((BYW) -> iterator(BYY))) -> iterator(BYY). -flat_map(Iterator, F) -> - _pipe = Iterator, - _pipe@1 = map(_pipe, F), - flatten(_pipe@1). - --spec do_filter(fun(() -> action(BZB)), fun((BZB) -> boolean())) -> action(BZB). -do_filter(Continuation, Predicate) -> - case Continuation() of - stop -> - stop; - - {continue, E, Iterator} -> - case Predicate(E) of - true -> - {continue, E, fun() -> do_filter(Iterator, Predicate) end}; - - false -> - do_filter(Iterator, Predicate) - end - end. - --spec filter(iterator(BZE), fun((BZE) -> boolean())) -> iterator(BZE). -filter(Iterator, Predicate) -> - _pipe = fun() -> do_filter(erlang:element(2, Iterator), Predicate) end, - {iterator, _pipe}. - --spec cycle(iterator(BZH)) -> iterator(BZH). -cycle(Iterator) -> - _pipe = repeat(Iterator), - flatten(_pipe). - --spec do_find(fun(() -> action(BZL)), fun((BZL) -> boolean())) -> {ok, BZL} | - {error, nil}. -do_find(Continuation, F) -> - case Continuation() of - stop -> - {error, nil}; - - {continue, E, Next} -> - case F(E) of - true -> - {ok, E}; - - false -> - do_find(Next, F) - end - end. - --spec find(iterator(BZP), fun((BZP) -> boolean())) -> {ok, BZP} | {error, nil}. -find(Haystack, Is_desired) -> - _pipe = erlang:element(2, Haystack), - do_find(_pipe, Is_desired). - --spec do_index(fun(() -> action(BZT)), integer()) -> fun(() -> action({integer(), - BZT})). -do_index(Continuation, Next) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Continuation@1} -> - {continue, {Next, E}, do_index(Continuation@1, Next + 1)} - end end. - --spec index(iterator(BZW)) -> iterator({integer(), BZW}). -index(Iterator) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_index(_pipe, 0), - {iterator, _pipe@1}. - --spec iterate(BZZ, fun((BZZ) -> BZZ)) -> iterator(BZZ). -iterate(Initial, F) -> - unfold(Initial, fun(Element) -> {next, Element, F(Element)} end). - --spec do_take_while(fun(() -> action(CAB)), fun((CAB) -> boolean())) -> fun(() -> action(CAB)). -do_take_while(Continuation, Predicate) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Predicate(E) of - false -> - stop; - - true -> - {continue, E, do_take_while(Next, Predicate)} - end - end end. - --spec take_while(iterator(CAE), fun((CAE) -> boolean())) -> iterator(CAE). -take_while(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_take_while(_pipe, Predicate), - {iterator, _pipe@1}. - --spec do_drop_while(fun(() -> action(CAH)), fun((CAH) -> boolean())) -> action(CAH). -do_drop_while(Continuation, Predicate) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Predicate(E) of - false -> - {continue, E, Next}; - - true -> - do_drop_while(Next, Predicate) - end - end. - --spec drop_while(iterator(CAK), fun((CAK) -> boolean())) -> iterator(CAK). -drop_while(Iterator, Predicate) -> - _pipe = fun() -> do_drop_while(erlang:element(2, Iterator), Predicate) end, - {iterator, _pipe}. - --spec do_scan(fun(() -> action(CAN)), fun((CAP, CAN) -> CAP), CAP) -> fun(() -> action(CAP)). -do_scan(Continuation, F, Accumulator) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, El, Next} -> - Accumulated = F(Accumulator, El), - {continue, Accumulated, do_scan(Next, F, Accumulated)} - end end. - --spec scan(iterator(CAR), CAT, fun((CAT, CAR) -> CAT)) -> iterator(CAT). -scan(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_scan(_pipe, F, Initial), - {iterator, _pipe@1}. - --spec do_zip(fun(() -> action(CAV)), fun(() -> action(CAX))) -> fun(() -> action({CAV, - CAX})). -do_zip(Left, Right) -> - fun() -> case Left() of - stop -> - stop; - - {continue, El_left, Next_left} -> - case Right() of - stop -> - stop; - - {continue, El_right, Next_right} -> - {continue, - {El_left, El_right}, - do_zip(Next_left, Next_right)} - end - end end. - --spec zip(iterator(CBA), iterator(CBC)) -> iterator({CBA, CBC}). -zip(Left, Right) -> - _pipe = do_zip(erlang:element(2, Left), erlang:element(2, Right)), - {iterator, _pipe}. - --spec next_chunk(fun(() -> action(CBF)), fun((CBF) -> CBH), CBH, list(CBF)) -> chunk(CBF, CBH). -next_chunk(Continuation, F, Previous_key, Current_chunk) -> - case Continuation() of - stop -> - {last_by, gleam@list:reverse(Current_chunk)}; - - {continue, E, Next} -> - Key = F(E), - case Key =:= Previous_key of - true -> - next_chunk(Next, F, Key, [E | Current_chunk]); - - false -> - {another_by, - gleam@list:reverse(Current_chunk), - Key, - E, - Next} - end - end. - --spec do_chunk(fun(() -> action(CBL)), fun((CBL) -> CBN), CBN, CBL) -> action(list(CBL)). -do_chunk(Continuation, F, Previous_key, Previous_element) -> - case next_chunk(Continuation, F, Previous_key, [Previous_element]) of - {last_by, Chunk} -> - {continue, Chunk, fun stop/0}; - - {another_by, Chunk@1, Key, El, Next} -> - {continue, Chunk@1, fun() -> do_chunk(Next, F, Key, El) end} - end. - --spec chunk(iterator(CBQ), fun((CBQ) -> any())) -> iterator(list(CBQ)). -chunk(Iterator, F) -> - _pipe = fun() -> case (erlang:element(2, Iterator))() of - stop -> - stop; - - {continue, E, Next} -> - do_chunk(Next, F, F(E), E) - end end, - {iterator, _pipe}. - --spec next_sized_chunk(fun(() -> action(CBV)), integer(), list(CBV)) -> sized_chunk(CBV). -next_sized_chunk(Continuation, Left, Current_chunk) -> - case Continuation() of - stop -> - case Current_chunk of - [] -> - no_more; - - Remaining -> - {last, gleam@list:reverse(Remaining)} - end; - - {continue, E, Next} -> - Chunk = [E | Current_chunk], - case Left > 1 of - false -> - {another, gleam@list:reverse(Chunk), Next}; - - true -> - next_sized_chunk(Next, Left - 1, Chunk) - end - end. - --spec do_sized_chunk(fun(() -> action(CBZ)), integer()) -> fun(() -> action(list(CBZ))). -do_sized_chunk(Continuation, Count) -> - fun() -> case next_sized_chunk(Continuation, Count, []) of - no_more -> - stop; - - {last, Chunk} -> - {continue, Chunk, fun stop/0}; - - {another, Chunk@1, Next_element} -> - {continue, Chunk@1, do_sized_chunk(Next_element, Count)} - end end. - --spec sized_chunk(iterator(CCD), integer()) -> iterator(list(CCD)). -sized_chunk(Iterator, Count) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_sized_chunk(_pipe, Count), - {iterator, _pipe@1}. - --spec do_intersperse(fun(() -> action(CCH)), CCH) -> action(CCH). -do_intersperse(Continuation, Separator) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - Next_interspersed = fun() -> do_intersperse(Next, Separator) end, - {continue, Separator, fun() -> {continue, E, Next_interspersed} end} - end. - --spec intersperse(iterator(CCK), CCK) -> iterator(CCK). -intersperse(Iterator, Elem) -> - _pipe = fun() -> case (erlang:element(2, Iterator))() of - stop -> - stop; - - {continue, E, Next} -> - {continue, E, fun() -> do_intersperse(Next, Elem) end} - end end, - {iterator, _pipe}. - --spec do_any(fun(() -> action(CCN)), fun((CCN) -> boolean())) -> boolean(). -do_any(Continuation, Predicate) -> - case Continuation() of - stop -> - false; - - {continue, E, Next} -> - case Predicate(E) of - true -> - true; - - false -> - do_any(Next, Predicate) - end - end. - --spec any(iterator(CCP), fun((CCP) -> boolean())) -> boolean(). -any(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - do_any(_pipe, Predicate). - --spec do_all(fun(() -> action(CCR)), fun((CCR) -> boolean())) -> boolean(). -do_all(Continuation, Predicate) -> - case Continuation() of - stop -> - true; - - {continue, E, Next} -> - case Predicate(E) of - true -> - do_all(Next, Predicate); - - false -> - false - end - end. - --spec all(iterator(CCT), fun((CCT) -> boolean())) -> boolean(). -all(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - do_all(_pipe, Predicate). - --spec update_group_with(CCV) -> fun((gleam@option:option(list(CCV))) -> list(CCV)). -update_group_with(El) -> - fun(Maybe_group) -> case Maybe_group of - {some, Group} -> - [El | Group]; - - none -> - [El] - end end. - --spec group_updater(fun((CCZ) -> CDA)) -> fun((gleam@dict:dict(CDA, list(CCZ)), CCZ) -> gleam@dict:dict(CDA, list(CCZ))). -group_updater(F) -> - fun(Groups, Elem) -> _pipe = Groups, - gleam@dict:update(_pipe, F(Elem), update_group_with(Elem)) end. - --spec group(iterator(CDH), fun((CDH) -> CDJ)) -> gleam@dict:dict(CDJ, list(CDH)). -group(Iterator, Key) -> - _pipe = Iterator, - _pipe@1 = fold(_pipe, gleam@dict:new(), group_updater(Key)), - gleam@dict:map_values( - _pipe@1, - fun(_, Group) -> gleam@list:reverse(Group) end - ). - --spec reduce(iterator(CDN), fun((CDN, CDN) -> CDN)) -> {ok, CDN} | {error, nil}. -reduce(Iterator, F) -> - case (erlang:element(2, Iterator))() of - stop -> - {error, nil}; - - {continue, E, Next} -> - _pipe = do_fold(Next, F, E), - {ok, _pipe} - end. - --spec last(iterator(CDR)) -> {ok, CDR} | {error, nil}. -last(Iterator) -> - _pipe = Iterator, - reduce(_pipe, fun(_, Elem) -> Elem end). - --spec empty() -> iterator(any()). -empty() -> - {iterator, fun stop/0}. - --spec once(fun(() -> CDX)) -> iterator(CDX). -once(F) -> - _pipe = fun() -> {continue, F(), fun stop/0} end, - {iterator, _pipe}. - --spec range(integer(), integer()) -> iterator(integer()). -range(Start, Stop) -> - case gleam@int:compare(Start, Stop) of - eq -> - once(fun() -> Start end); - - gt -> - unfold(Start, fun(Current) -> case Current < Stop of - false -> - {next, Current, Current - 1}; - - true -> - done - end end); - - lt -> - unfold(Start, fun(Current@1) -> case Current@1 > Stop of - false -> - {next, Current@1, Current@1 + 1}; - - true -> - done - end end) - end. - --spec single(CDZ) -> iterator(CDZ). -single(Elem) -> - once(fun() -> Elem end). - --spec do_interleave(fun(() -> action(CEB)), fun(() -> action(CEB))) -> action(CEB). -do_interleave(Current, Next) -> - case Current() of - stop -> - Next(); - - {continue, E, Next_other} -> - {continue, E, fun() -> do_interleave(Next, Next_other) end} - end. - --spec interleave(iterator(CEF), iterator(CEF)) -> iterator(CEF). -interleave(Left, Right) -> - _pipe = fun() -> - do_interleave(erlang:element(2, Left), erlang:element(2, Right)) - end, - {iterator, _pipe}. - --spec do_fold_until( - fun(() -> action(CEJ)), - fun((CEL, CEJ) -> gleam@list:continue_or_stop(CEL)), - CEL -) -> CEL. -do_fold_until(Continuation, F, Accumulator) -> - case Continuation() of - stop -> - Accumulator; - - {continue, Elem, Next} -> - case F(Accumulator, Elem) of - {continue, Accumulator@1} -> - do_fold_until(Next, F, Accumulator@1); - - {stop, Accumulator@2} -> - Accumulator@2 - end - end. - --spec fold_until( - iterator(CEN), - CEP, - fun((CEP, CEN) -> gleam@list:continue_or_stop(CEP)) -) -> CEP. -fold_until(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_fold_until(_pipe, F, Initial). - --spec do_try_fold( - fun(() -> action(CER)), - fun((CET, CER) -> {ok, CET} | {error, CEU}), - CET -) -> {ok, CET} | {error, CEU}. -do_try_fold(Continuation, F, Accumulator) -> - case Continuation() of - stop -> - {ok, Accumulator}; - - {continue, Elem, Next} -> - gleam@result:'try'( - F(Accumulator, Elem), - fun(Accumulator@1) -> do_try_fold(Next, F, Accumulator@1) end - ) - end. - --spec try_fold(iterator(CEZ), CFB, fun((CFB, CEZ) -> {ok, CFB} | {error, CFC})) -> {ok, - CFB} | - {error, CFC}. -try_fold(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_try_fold(_pipe, F, Initial). - --spec first(iterator(CFH)) -> {ok, CFH} | {error, nil}. -first(Iterator) -> - case (erlang:element(2, Iterator))() of - stop -> - {error, nil}; - - {continue, E, _} -> - {ok, E} - end. - --spec at(iterator(CFL), integer()) -> {ok, CFL} | {error, nil}. -at(Iterator, Index) -> - _pipe = Iterator, - _pipe@1 = drop(_pipe, Index), - first(_pipe@1). - --spec do_length(fun(() -> action(any())), integer()) -> integer(). -do_length(Continuation, Length) -> - case Continuation() of - stop -> - Length; - - {continue, _, Next} -> - do_length(Next, Length + 1) - end. - --spec length(iterator(any())) -> integer(). -length(Iterator) -> - _pipe = erlang:element(2, Iterator), - do_length(_pipe, 0). - --spec each(iterator(CFT), fun((CFT) -> any())) -> nil. -each(Iterator, F) -> - _pipe = Iterator, - _pipe@1 = map(_pipe, F), - run(_pipe@1). - --spec yield(CFW, fun(() -> iterator(CFW))) -> iterator(CFW). -yield(Element, Next) -> - {iterator, fun() -> {continue, Element, erlang:element(2, Next())} end}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache deleted file mode 100644 index 394792a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta deleted file mode 100644 index 56b294f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl deleted file mode 100644 index 6c2e684..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.erl +++ /dev/null @@ -1,1129 +0,0 @@ --module(gleam@list). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([length/1, reverse/1, is_empty/1, contains/2, first/1, rest/1, filter/2, filter_map/2, map/2, map2/3, index_map/2, try_map/2, drop/2, take/2, new/0, append/2, prepend/2, concat/1, flatten/1, flat_map/2, fold/3, group/2, map_fold/3, fold_right/3, index_fold/3, try_fold/3, fold_until/3, find/2, find_map/2, all/2, any/2, zip/2, strict_zip/2, unzip/1, intersperse/2, at/2, unique/1, sort/2, range/2, repeat/2, split/2, split_while/2, key_find/2, key_filter/2, pop/2, pop_map/2, key_pop/2, key_set/3, each/2, try_each/2, partition/2, permutations/1, window/2, window_by_2/1, drop_while/2, take_while/2, chunk/2, sized_chunk/2, reduce/2, scan/3, last/1, combinations/2, combination_pairs/1, transpose/1, interleave/1, shuffle/1]). --export_type([length_mismatch/0, continue_or_stop/1]). - --type length_mismatch() :: length_mismatch. - --type continue_or_stop(UD) :: {continue, UD} | {stop, UD}. - --spec length(list(any())) -> integer(). -length(List) -> - erlang:length(List). - --spec reverse(list(UI)) -> list(UI). -reverse(Xs) -> - lists:reverse(Xs). - --spec is_empty(list(any())) -> boolean(). -is_empty(List) -> - List =:= []. - --spec contains(list(UQ), UQ) -> boolean(). -contains(List, Elem) -> - case List of - [] -> - false; - - [First | _] when First =:= Elem -> - true; - - [_ | Rest] -> - contains(Rest, Elem) - end. - --spec first(list(US)) -> {ok, US} | {error, nil}. -first(List) -> - case List of - [] -> - {error, nil}; - - [X | _] -> - {ok, X} - end. - --spec rest(list(UW)) -> {ok, list(UW)} | {error, nil}. -rest(List) -> - case List of - [] -> - {error, nil}; - - [_ | Xs] -> - {ok, Xs} - end. - --spec update_group(fun((VB) -> VC)) -> fun((gleam@dict:dict(VC, list(VB)), VB) -> gleam@dict:dict(VC, list(VB))). -update_group(F) -> - fun(Groups, Elem) -> case gleam@dict:get(Groups, F(Elem)) of - {ok, Existing} -> - gleam@dict:insert(Groups, F(Elem), [Elem | Existing]); - - {error, _} -> - gleam@dict:insert(Groups, F(Elem), [Elem]) - end end. - --spec do_filter(list(VP), fun((VP) -> boolean()), list(VP)) -> list(VP). -do_filter(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - New_acc = case Fun(X) of - true -> - [X | Acc]; - - false -> - Acc - end, - do_filter(Xs, Fun, New_acc) - end. - --spec filter(list(VT), fun((VT) -> boolean())) -> list(VT). -filter(List, Predicate) -> - do_filter(List, Predicate, []). - --spec do_filter_map(list(VW), fun((VW) -> {ok, VY} | {error, any()}), list(VY)) -> list(VY). -do_filter_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - New_acc = case Fun(X) of - {ok, X@1} -> - [X@1 | Acc]; - - {error, _} -> - Acc - end, - do_filter_map(Xs, Fun, New_acc) - end. - --spec filter_map(list(WE), fun((WE) -> {ok, WG} | {error, any()})) -> list(WG). -filter_map(List, Fun) -> - do_filter_map(List, Fun, []). - --spec do_map(list(WL), fun((WL) -> WN), list(WN)) -> list(WN). -do_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_map(Xs, Fun, [Fun(X) | Acc]) - end. - --spec map(list(WQ), fun((WQ) -> WS)) -> list(WS). -map(List, Fun) -> - do_map(List, Fun, []). - --spec do_map2(list(XA), list(XC), fun((XA, XC) -> XE), list(XE)) -> list(XE). -do_map2(List1, List2, Fun, Acc) -> - case {List1, List2} of - {[], _} -> - reverse(Acc); - - {_, []} -> - reverse(Acc); - - {[A | As_], [B | Bs]} -> - do_map2(As_, Bs, Fun, [Fun(A, B) | Acc]) - end. - --spec map2(list(WU), list(WW), fun((WU, WW) -> WY)) -> list(WY). -map2(List1, List2, Fun) -> - do_map2(List1, List2, Fun, []). - --spec do_index_map(list(XM), fun((integer(), XM) -> XO), integer(), list(XO)) -> list(XO). -do_index_map(List, Fun, Index, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - Acc@1 = [Fun(Index, X) | Acc], - do_index_map(Xs, Fun, Index + 1, Acc@1) - end. - --spec index_map(list(XR), fun((integer(), XR) -> XT)) -> list(XT). -index_map(List, Fun) -> - do_index_map(List, Fun, 0, []). - --spec do_try_map(list(XV), fun((XV) -> {ok, XX} | {error, XY}), list(XX)) -> {ok, - list(XX)} | - {error, XY}. -do_try_map(List, Fun, Acc) -> - case List of - [] -> - {ok, reverse(Acc)}; - - [X | Xs] -> - case Fun(X) of - {ok, Y} -> - do_try_map(Xs, Fun, [Y | Acc]); - - {error, Error} -> - {error, Error} - end - end. - --spec try_map(list(YF), fun((YF) -> {ok, YH} | {error, YI})) -> {ok, list(YH)} | - {error, YI}. -try_map(List, Fun) -> - do_try_map(List, Fun, []). - --spec drop(list(YO), integer()) -> list(YO). -drop(List, N) -> - case N =< 0 of - true -> - List; - - false -> - case List of - [] -> - []; - - [_ | Xs] -> - drop(Xs, N - 1) - end - end. - --spec do_take(list(YR), integer(), list(YR)) -> list(YR). -do_take(List, N, Acc) -> - case N =< 0 of - true -> - reverse(Acc); - - false -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_take(Xs, N - 1, [X | Acc]) - end - end. - --spec take(list(YV), integer()) -> list(YV). -take(List, N) -> - do_take(List, N, []). - --spec new() -> list(any()). -new() -> - []. - --spec append(list(AAA), list(AAA)) -> list(AAA). -append(First, Second) -> - lists:append(First, Second). - --spec prepend(list(AAI), AAI) -> list(AAI). -prepend(List, Item) -> - [Item | List]. - --spec reverse_and_prepend(list(AAL), list(AAL)) -> list(AAL). -reverse_and_prepend(Prefix, Suffix) -> - case Prefix of - [] -> - Suffix; - - [First | Rest] -> - reverse_and_prepend(Rest, [First | Suffix]) - end. - --spec do_concat(list(list(AAP)), list(AAP)) -> list(AAP). -do_concat(Lists, Acc) -> - case Lists of - [] -> - reverse(Acc); - - [List | Further_lists] -> - do_concat(Further_lists, reverse_and_prepend(List, Acc)) - end. - --spec concat(list(list(AAU))) -> list(AAU). -concat(Lists) -> - do_concat(Lists, []). - --spec flatten(list(list(AAY))) -> list(AAY). -flatten(Lists) -> - do_concat(Lists, []). - --spec flat_map(list(ABC), fun((ABC) -> list(ABE))) -> list(ABE). -flat_map(List, Fun) -> - _pipe = map(List, Fun), - concat(_pipe). - --spec fold(list(ABH), ABJ, fun((ABJ, ABH) -> ABJ)) -> ABJ. -fold(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [X | Rest] -> - fold(Rest, Fun(Initial, X), Fun) - end. - --spec group(list(VJ), fun((VJ) -> VL)) -> gleam@dict:dict(VL, list(VJ)). -group(List, Key) -> - fold(List, gleam@dict:new(), update_group(Key)). - --spec map_fold(list(XH), XJ, fun((XJ, XH) -> {XJ, XK})) -> {XJ, list(XK)}. -map_fold(List, Acc, Fun) -> - _pipe = fold( - List, - {Acc, []}, - fun(Acc@1, Item) -> - {Current_acc, Items} = Acc@1, - {Next_acc, Next_item} = Fun(Current_acc, Item), - {Next_acc, [Next_item | Items]} - end - ), - gleam@pair:map_second(_pipe, fun reverse/1). - --spec fold_right(list(ABK), ABM, fun((ABM, ABK) -> ABM)) -> ABM. -fold_right(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [X | Rest] -> - Fun(fold_right(Rest, Initial, Fun), X) - end. - --spec do_index_fold( - list(ABN), - ABP, - fun((ABP, ABN, integer()) -> ABP), - integer() -) -> ABP. -do_index_fold(Over, Acc, With, Index) -> - case Over of - [] -> - Acc; - - [First | Rest] -> - do_index_fold(Rest, With(Acc, First, Index), With, Index + 1) - end. - --spec index_fold(list(ABQ), ABS, fun((ABS, ABQ, integer()) -> ABS)) -> ABS. -index_fold(Over, Initial, Fun) -> - do_index_fold(Over, Initial, Fun, 0). - --spec try_fold(list(ABT), ABV, fun((ABV, ABT) -> {ok, ABV} | {error, ABW})) -> {ok, - ABV} | - {error, ABW}. -try_fold(Collection, Accumulator, Fun) -> - case Collection of - [] -> - {ok, Accumulator}; - - [First | Rest] -> - case Fun(Accumulator, First) of - {ok, Result} -> - try_fold(Rest, Result, Fun); - - {error, _} = Error -> - Error - end - end. - --spec fold_until(list(ACB), ACD, fun((ACD, ACB) -> continue_or_stop(ACD))) -> ACD. -fold_until(Collection, Accumulator, Fun) -> - case Collection of - [] -> - Accumulator; - - [First | Rest] -> - case Fun(Accumulator, First) of - {continue, Next_accumulator} -> - fold_until(Rest, Next_accumulator, Fun); - - {stop, B} -> - B - end - end. - --spec find(list(ACF), fun((ACF) -> boolean())) -> {ok, ACF} | {error, nil}. -find(Haystack, Is_desired) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Is_desired(X) of - true -> - {ok, X}; - - _ -> - find(Rest, Is_desired) - end - end. - --spec find_map(list(ACJ), fun((ACJ) -> {ok, ACL} | {error, any()})) -> {ok, ACL} | - {error, nil}. -find_map(Haystack, Fun) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Fun(X) of - {ok, X@1} -> - {ok, X@1}; - - _ -> - find_map(Rest, Fun) - end - end. - --spec all(list(ACR), fun((ACR) -> boolean())) -> boolean(). -all(List, Predicate) -> - case List of - [] -> - true; - - [First | Rest] -> - case Predicate(First) of - true -> - all(Rest, Predicate); - - false -> - false - end - end. - --spec any(list(ACT), fun((ACT) -> boolean())) -> boolean(). -any(List, Predicate) -> - case List of - [] -> - false; - - [First | Rest] -> - case Predicate(First) of - true -> - true; - - false -> - any(Rest, Predicate) - end - end. - --spec do_zip(list(ACV), list(ACX), list({ACV, ACX})) -> list({ACV, ACX}). -do_zip(Xs, Ys, Acc) -> - case {Xs, Ys} of - {[X | Xs@1], [Y | Ys@1]} -> - do_zip(Xs@1, Ys@1, [{X, Y} | Acc]); - - {_, _} -> - reverse(Acc) - end. - --spec zip(list(ADB), list(ADD)) -> list({ADB, ADD}). -zip(List, Other) -> - do_zip(List, Other, []). - --spec strict_zip(list(ADG), list(ADI)) -> {ok, list({ADG, ADI})} | - {error, length_mismatch()}. -strict_zip(List, Other) -> - case length(List) =:= length(Other) of - true -> - {ok, zip(List, Other)}; - - false -> - {error, length_mismatch} - end. - --spec do_unzip(list({ATA, ATB}), list(ATA), list(ATB)) -> {list(ATA), list(ATB)}. -do_unzip(Input, Xs, Ys) -> - case Input of - [] -> - {reverse(Xs), reverse(Ys)}; - - [{X, Y} | Rest] -> - do_unzip(Rest, [X | Xs], [Y | Ys]) - end. - --spec unzip(list({ADR, ADS})) -> {list(ADR), list(ADS)}. -unzip(Input) -> - do_unzip(Input, [], []). - --spec do_intersperse(list(ADW), ADW, list(ADW)) -> list(ADW). -do_intersperse(List, Separator, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Rest] -> - do_intersperse(Rest, Separator, [X, Separator | Acc]) - end. - --spec intersperse(list(AEA), AEA) -> list(AEA). -intersperse(List, Elem) -> - case List of - [] -> - List; - - [_] -> - List; - - [X | Rest] -> - do_intersperse(Rest, Elem, [X]) - end. - --spec at(list(AED), integer()) -> {ok, AED} | {error, nil}. -at(List, Index) -> - case Index >= 0 of - true -> - _pipe = List, - _pipe@1 = drop(_pipe, Index), - first(_pipe@1); - - false -> - {error, nil} - end. - --spec unique(list(AEH)) -> list(AEH). -unique(List) -> - case List of - [] -> - []; - - [X | Rest] -> - [X | unique(filter(Rest, fun(Y) -> Y /= X end))] - end. - --spec merge_up( - integer(), - integer(), - list(AEK), - list(AEK), - list(AEK), - fun((AEK, AEK) -> gleam@order:order()) -) -> list(AEK). -merge_up(Na, Nb, A, B, Acc, Compare) -> - case {Na, Nb, A, B} of - {0, 0, _, _} -> - Acc; - - {_, 0, [Ax | Ar], _} -> - merge_up(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); - - {0, _, _, [Bx | Br]} -> - merge_up(Na, Nb - 1, A, Br, [Bx | Acc], Compare); - - {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> - case Compare(Ax@1, Bx@1) of - gt -> - merge_up(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare); - - _ -> - merge_up(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare) - end; - - {_, _, _, _} -> - Acc - end. - --spec merge_down( - integer(), - integer(), - list(AEP), - list(AEP), - list(AEP), - fun((AEP, AEP) -> gleam@order:order()) -) -> list(AEP). -merge_down(Na, Nb, A, B, Acc, Compare) -> - case {Na, Nb, A, B} of - {0, 0, _, _} -> - Acc; - - {_, 0, [Ax | Ar], _} -> - merge_down(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); - - {0, _, _, [Bx | Br]} -> - merge_down(Na, Nb - 1, A, Br, [Bx | Acc], Compare); - - {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> - case Compare(Bx@1, Ax@1) of - lt -> - merge_down(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare); - - _ -> - merge_down(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare) - end; - - {_, _, _, _} -> - Acc - end. - --spec merge_sort( - list(AEU), - integer(), - fun((AEU, AEU) -> gleam@order:order()), - boolean() -) -> list(AEU). -merge_sort(L, Ln, Compare, Down) -> - N = Ln div 2, - A = L, - B = drop(L, N), - case Ln < 3 of - true -> - case Down of - true -> - merge_down(N, Ln - N, A, B, [], Compare); - - false -> - merge_up(N, Ln - N, A, B, [], Compare) - end; - - false -> - case Down of - true -> - merge_down( - N, - Ln - N, - merge_sort(A, N, Compare, false), - merge_sort(B, Ln - N, Compare, false), - [], - Compare - ); - - false -> - merge_up( - N, - Ln - N, - merge_sort(A, N, Compare, true), - merge_sort(B, Ln - N, Compare, true), - [], - Compare - ) - end - end. - --spec sort(list(AEX), fun((AEX, AEX) -> gleam@order:order())) -> list(AEX). -sort(List, Compare) -> - merge_sort(List, length(List), Compare, true). - --spec tail_recursive_range(integer(), integer(), list(integer())) -> list(integer()). -tail_recursive_range(Start, Stop, Acc) -> - case gleam@int:compare(Start, Stop) of - eq -> - [Stop | Acc]; - - gt -> - tail_recursive_range(Start, Stop + 1, [Stop | Acc]); - - lt -> - tail_recursive_range(Start, Stop - 1, [Stop | Acc]) - end. - --spec range(integer(), integer()) -> list(integer()). -range(Start, Stop) -> - tail_recursive_range(Start, Stop, []). - --spec do_repeat(AFD, integer(), list(AFD)) -> list(AFD). -do_repeat(A, Times, Acc) -> - case Times =< 0 of - true -> - Acc; - - false -> - do_repeat(A, Times - 1, [A | Acc]) - end. - --spec repeat(AFG, integer()) -> list(AFG). -repeat(A, Times) -> - do_repeat(A, Times, []). - --spec do_split(list(AFI), integer(), list(AFI)) -> {list(AFI), list(AFI)}. -do_split(List, N, Taken) -> - case N =< 0 of - true -> - {reverse(Taken), List}; - - false -> - case List of - [] -> - {reverse(Taken), []}; - - [X | Xs] -> - do_split(Xs, N - 1, [X | Taken]) - end - end. - --spec split(list(AFN), integer()) -> {list(AFN), list(AFN)}. -split(List, Index) -> - do_split(List, Index, []). - --spec do_split_while(list(AFR), fun((AFR) -> boolean()), list(AFR)) -> {list(AFR), - list(AFR)}. -do_split_while(List, F, Acc) -> - case List of - [] -> - {reverse(Acc), []}; - - [X | Xs] -> - case F(X) of - false -> - {reverse(Acc), List}; - - _ -> - do_split_while(Xs, F, [X | Acc]) - end - end. - --spec split_while(list(AFW), fun((AFW) -> boolean())) -> {list(AFW), list(AFW)}. -split_while(List, Predicate) -> - do_split_while(List, Predicate, []). - --spec key_find(list({AGA, AGB}), AGA) -> {ok, AGB} | {error, nil}. -key_find(Keyword_list, Desired_key) -> - find_map( - Keyword_list, - fun(Keyword) -> - {Key, Value} = Keyword, - case Key =:= Desired_key of - true -> - {ok, Value}; - - false -> - {error, nil} - end - end - ). - --spec key_filter(list({AGF, AGG}), AGF) -> list(AGG). -key_filter(Keyword_list, Desired_key) -> - filter_map( - Keyword_list, - fun(Keyword) -> - {Key, Value} = Keyword, - case Key =:= Desired_key of - true -> - {ok, Value}; - - false -> - {error, nil} - end - end - ). - --spec do_pop(list(AWT), fun((AWT) -> boolean()), list(AWT)) -> {ok, - {AWT, list(AWT)}} | - {error, nil}. -do_pop(Haystack, Predicate, Checked) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Predicate(X) of - true -> - {ok, {X, append(reverse(Checked), Rest)}}; - - false -> - do_pop(Rest, Predicate, [X | Checked]) - end - end. - --spec pop(list(AGN), fun((AGN) -> boolean())) -> {ok, {AGN, list(AGN)}} | - {error, nil}. -pop(Haystack, Is_desired) -> - do_pop(Haystack, Is_desired, []). - --spec do_pop_map(list(AXH), fun((AXH) -> {ok, AXU} | {error, any()}), list(AXH)) -> {ok, - {AXU, list(AXH)}} | - {error, nil}. -do_pop_map(Haystack, Mapper, Checked) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Mapper(X) of - {ok, Y} -> - {ok, {Y, append(reverse(Checked), Rest)}}; - - {error, _} -> - do_pop_map(Rest, Mapper, [X | Checked]) - end - end. - --spec pop_map(list(AGW), fun((AGW) -> {ok, AGY} | {error, any()})) -> {ok, - {AGY, list(AGW)}} | - {error, nil}. -pop_map(Haystack, Is_desired) -> - do_pop_map(Haystack, Is_desired, []). - --spec key_pop(list({AHF, AHG}), AHF) -> {ok, {AHG, list({AHF, AHG})}} | - {error, nil}. -key_pop(Haystack, Key) -> - pop_map( - Haystack, - fun(Entry) -> - {K, V} = Entry, - case K of - K@1 when K@1 =:= Key -> - {ok, V}; - - _ -> - {error, nil} - end - end - ). - --spec key_set(list({AHL, AHM}), AHL, AHM) -> list({AHL, AHM}). -key_set(List, Key, Value) -> - case List of - [] -> - [{Key, Value}]; - - [{K, _} | Rest] when K =:= Key -> - [{Key, Value} | Rest]; - - [First | Rest@1] -> - [First | key_set(Rest@1, Key, Value)] - end. - --spec each(list(AHP), fun((AHP) -> any())) -> nil. -each(List, F) -> - case List of - [] -> - nil; - - [X | Xs] -> - F(X), - each(Xs, F) - end. - --spec try_each(list(AHS), fun((AHS) -> {ok, any()} | {error, AHV})) -> {ok, nil} | - {error, AHV}. -try_each(List, Fun) -> - case List of - [] -> - {ok, nil}; - - [X | Xs] -> - case Fun(X) of - {ok, _} -> - try_each(Xs, Fun); - - {error, E} -> - {error, E} - end - end. - --spec do_partition(list(AZB), fun((AZB) -> boolean()), list(AZB), list(AZB)) -> {list(AZB), - list(AZB)}. -do_partition(List, Categorise, Trues, Falses) -> - case List of - [] -> - {reverse(Trues), reverse(Falses)}; - - [X | Xs] -> - case Categorise(X) of - true -> - do_partition(Xs, Categorise, [X | Trues], Falses); - - false -> - do_partition(Xs, Categorise, Trues, [X | Falses]) - end - end. - --spec partition(list(AIF), fun((AIF) -> boolean())) -> {list(AIF), list(AIF)}. -partition(List, Categorise) -> - do_partition(List, Categorise, [], []). - --spec permutations(list(AIJ)) -> list(list(AIJ)). -permutations(L) -> - case L of - [] -> - [[]]; - - _ -> - _pipe = L, - _pipe@5 = index_map(_pipe, fun(I_idx, I) -> _pipe@1 = L, - _pipe@2 = index_fold( - _pipe@1, - [], - fun(Acc, J, J_idx) -> case I_idx =:= J_idx of - true -> - Acc; - - false -> - [J | Acc] - end end - ), - _pipe@3 = reverse(_pipe@2), - _pipe@4 = permutations(_pipe@3), - map(_pipe@4, fun(Permutation) -> [I | Permutation] end) end), - concat(_pipe@5) - end. - --spec do_window(list(list(AIN)), list(AIN), integer()) -> list(list(AIN)). -do_window(Acc, L, N) -> - Window = take(L, N), - case length(Window) =:= N of - true -> - do_window([Window | Acc], drop(L, 1), N); - - false -> - Acc - end. - --spec window(list(AIT), integer()) -> list(list(AIT)). -window(L, N) -> - _pipe = do_window([], L, N), - reverse(_pipe). - --spec window_by_2(list(AIX)) -> list({AIX, AIX}). -window_by_2(L) -> - zip(L, drop(L, 1)). - --spec drop_while(list(AJA), fun((AJA) -> boolean())) -> list(AJA). -drop_while(List, Predicate) -> - case List of - [] -> - []; - - [X | Xs] -> - case Predicate(X) of - true -> - drop_while(Xs, Predicate); - - false -> - [X | Xs] - end - end. - --spec do_take_while(list(AJD), fun((AJD) -> boolean()), list(AJD)) -> list(AJD). -do_take_while(List, Predicate, Acc) -> - case List of - [] -> - reverse(Acc); - - [First | Rest] -> - case Predicate(First) of - true -> - do_take_while(Rest, Predicate, [First | Acc]); - - false -> - reverse(Acc) - end - end. - --spec take_while(list(AJH), fun((AJH) -> boolean())) -> list(AJH). -take_while(List, Predicate) -> - do_take_while(List, Predicate, []). - --spec do_chunk(list(AJK), fun((AJK) -> AJM), AJM, list(AJK), list(list(AJK))) -> list(list(AJK)). -do_chunk(List, F, Previous_key, Current_chunk, Acc) -> - case List of - [First | Rest] -> - Key = F(First), - case Key =:= Previous_key of - false -> - New_acc = [reverse(Current_chunk) | Acc], - do_chunk(Rest, F, Key, [First], New_acc); - - _ -> - do_chunk(Rest, F, Key, [First | Current_chunk], Acc) - end; - - _ -> - reverse([reverse(Current_chunk) | Acc]) - end. - --spec chunk(list(AJS), fun((AJS) -> any())) -> list(list(AJS)). -chunk(List, F) -> - case List of - [] -> - []; - - [First | Rest] -> - do_chunk(Rest, F, F(First), [First], []) - end. - --spec do_sized_chunk( - list(AJX), - integer(), - integer(), - list(AJX), - list(list(AJX)) -) -> list(list(AJX)). -do_sized_chunk(List, Count, Left, Current_chunk, Acc) -> - case List of - [] -> - case Current_chunk of - [] -> - reverse(Acc); - - Remaining -> - reverse([reverse(Remaining) | Acc]) - end; - - [First | Rest] -> - Chunk = [First | Current_chunk], - case Left > 1 of - false -> - do_sized_chunk( - Rest, - Count, - Count, - [], - [reverse(Chunk) | Acc] - ); - - true -> - do_sized_chunk(Rest, Count, Left - 1, Chunk, Acc) - end - end. - --spec sized_chunk(list(AKE), integer()) -> list(list(AKE)). -sized_chunk(List, Count) -> - do_sized_chunk(List, Count, Count, [], []). - --spec reduce(list(AKI), fun((AKI, AKI) -> AKI)) -> {ok, AKI} | {error, nil}. -reduce(List, Fun) -> - case List of - [] -> - {error, nil}; - - [First | Rest] -> - {ok, fold(Rest, First, Fun)} - end. - --spec do_scan(list(AKM), AKO, list(AKO), fun((AKO, AKM) -> AKO)) -> list(AKO). -do_scan(List, Accumulator, Accumulated, Fun) -> - case List of - [] -> - reverse(Accumulated); - - [X | Xs] -> - Next = Fun(Accumulator, X), - do_scan(Xs, Next, [Next | Accumulated], Fun) - end. - --spec scan(list(AKR), AKT, fun((AKT, AKR) -> AKT)) -> list(AKT). -scan(List, Initial, Fun) -> - do_scan(List, Initial, [], Fun). - --spec last(list(AKV)) -> {ok, AKV} | {error, nil}. -last(List) -> - _pipe = List, - reduce(_pipe, fun(_, Elem) -> Elem end). - --spec combinations(list(AKZ), integer()) -> list(list(AKZ)). -combinations(Items, N) -> - case N of - 0 -> - [[]]; - - _ -> - case Items of - [] -> - []; - - [X | Xs] -> - First_combinations = begin - _pipe = map( - combinations(Xs, N - 1), - fun(Com) -> [X | Com] end - ), - reverse(_pipe) - end, - fold( - First_combinations, - combinations(Xs, N), - fun(Acc, C) -> [C | Acc] end - ) - end - end. - --spec do_combination_pairs(list(ALD)) -> list(list({ALD, ALD})). -do_combination_pairs(Items) -> - case Items of - [] -> - []; - - [X | Xs] -> - First_combinations = map(Xs, fun(Other) -> {X, Other} end), - [First_combinations | do_combination_pairs(Xs)] - end. - --spec combination_pairs(list(ALH)) -> list({ALH, ALH}). -combination_pairs(Items) -> - _pipe = do_combination_pairs(Items), - concat(_pipe). - --spec transpose(list(list(ALO))) -> list(list(ALO)). -transpose(List_of_list) -> - Take_first = fun(List) -> case List of - [] -> - []; - - [F] -> - [F]; - - [F@1 | _] -> - [F@1] - end end, - case List_of_list of - [] -> - []; - - [[] | Xss] -> - transpose(Xss); - - Rows -> - Firsts = begin - _pipe = Rows, - _pipe@1 = map(_pipe, Take_first), - concat(_pipe@1) - end, - Rest = transpose(map(Rows, fun(_capture) -> drop(_capture, 1) end)), - [Firsts | Rest] - end. - --spec interleave(list(list(ALK))) -> list(ALK). -interleave(List) -> - _pipe = transpose(List), - concat(_pipe). - --spec do_shuffle_pair_unwrap(list({float(), ALT}), list(ALT)) -> list(ALT). -do_shuffle_pair_unwrap(List, Acc) -> - case List of - [] -> - Acc; - - [Elem_pair | Enumerable] -> - do_shuffle_pair_unwrap( - Enumerable, - [erlang:element(2, Elem_pair) | Acc] - ) - end. - --spec do_shuffle_by_pair_indexes(list({float(), ALX})) -> list({float(), ALX}). -do_shuffle_by_pair_indexes(List_of_pairs) -> - sort( - List_of_pairs, - fun(A_pair, B_pair) -> - gleam@float:compare( - erlang:element(1, A_pair), - erlang:element(1, B_pair) - ) - end - ). - --spec shuffle(list(AMA)) -> list(AMA). -shuffle(List) -> - _pipe = List, - _pipe@1 = fold( - _pipe, - [], - fun(Acc, A) -> [{gleam@float:random(+0.0, 1.0), A} | Acc] end - ), - _pipe@2 = do_shuffle_by_pair_indexes(_pipe@1), - do_shuffle_pair_unwrap(_pipe@2, []). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache deleted file mode 100644 index d0685b3..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta deleted file mode 100644 index 03b0ec9..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl deleted file mode 100644 index 4f90bbd..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.erl +++ /dev/null @@ -1,76 +0,0 @@ --module(gleam@map). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). - --spec size(gleam@dict:dict(any(), any())) -> integer(). -size(Map) -> - gleam@dict:size(Map). - --spec to_list(gleam@dict:dict(FDO, FDP)) -> list({FDO, FDP}). -to_list(Map) -> - gleam@dict:to_list(Map). - --spec from_list(list({FDR, FDS})) -> gleam@dict:dict(FDR, FDS). -from_list(List) -> - gleam@dict:from_list(List). - --spec has_key(gleam@dict:dict(FDW, any()), FDW) -> boolean(). -has_key(Map, Key) -> - gleam@dict:has_key(Map, Key). - --spec new() -> gleam@dict:dict(any(), any()). -new() -> - gleam@dict:new(). - --spec get(gleam@dict:dict(FDZ, FEA), FDZ) -> {ok, FEA} | {error, nil}. -get(From, Get) -> - gleam@dict:get(From, Get). - --spec insert(gleam@dict:dict(FEE, FEF), FEE, FEF) -> gleam@dict:dict(FEE, FEF). -insert(Map, Key, Value) -> - gleam@dict:insert(Map, Key, Value). - --spec map_values(gleam@dict:dict(FEI, FEJ), fun((FEI, FEJ) -> FEK)) -> gleam@dict:dict(FEI, FEK). -map_values(Map, Fun) -> - gleam@dict:map_values(Map, Fun). - --spec keys(gleam@dict:dict(FEN, any())) -> list(FEN). -keys(Map) -> - gleam@dict:keys(Map). - --spec values(gleam@dict:dict(any(), FEQ)) -> list(FEQ). -values(Map) -> - gleam@dict:values(Map). - --spec filter(gleam@dict:dict(FET, FEU), fun((FET, FEU) -> boolean())) -> gleam@dict:dict(FET, FEU). -filter(Map, Predicate) -> - gleam@dict:filter(Map, Predicate). - --spec take(gleam@dict:dict(FEX, FGR), list(FEX)) -> gleam@dict:dict(FEX, FGR). -take(Map, Desired_keys) -> - gleam@dict:take(Map, Desired_keys). - --spec merge(gleam@dict:dict(FGS, FGT), gleam@dict:dict(FGS, FGT)) -> gleam@dict:dict(FGS, FGT). -merge(Map, New_entries) -> - gleam@dict:merge(Map, New_entries). - --spec delete(gleam@dict:dict(FFE, FGV), FFE) -> gleam@dict:dict(FFE, FGV). -delete(Map, Key) -> - gleam@dict:delete(Map, Key). - --spec drop(gleam@dict:dict(FFH, FGX), list(FFH)) -> gleam@dict:dict(FFH, FGX). -drop(Map, Disallowed_keys) -> - gleam@dict:drop(Map, Disallowed_keys). - --spec update( - gleam@dict:dict(FFL, FFM), - FFL, - fun((gleam@option:option(FFM)) -> FFM) -) -> gleam@dict:dict(FFL, FFM). -update(Map, Key, Fun) -> - gleam@dict:update(Map, Key, Fun). - --spec fold(gleam@dict:dict(FFR, FFS), FFQ, fun((FFQ, FFR, FFS) -> FFQ)) -> FFQ. -fold(Map, Initial, Fun) -> - gleam@dict:fold(Map, Initial, Fun). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache deleted file mode 100644 index b0763c1..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta deleted file mode 100644 index ff8f8df..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl deleted file mode 100644 index 5c20713..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.erl +++ /dev/null @@ -1,147 +0,0 @@ --module(gleam@option). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, lazy_unwrap/2, map/2, flatten/1, then/2, 'or'/2, lazy_or/2, values/1]). --export_type([option/1]). - --type option(GB) :: {some, GB} | none. - --spec do_all(list(option(GC)), list(GC)) -> option(list(GC)). -do_all(List, Acc) -> - case List of - [] -> - {some, Acc}; - - [X | Rest] -> - Accumulate = fun(Acc@1, Item) -> case {Acc@1, Item} of - {{some, Values}, {some, Value}} -> - {some, [Value | Values]}; - - {_, _} -> - none - end end, - Accumulate(do_all(Rest, Acc), X) - end. - --spec all(list(option(GI))) -> option(list(GI)). -all(List) -> - do_all(List, []). - --spec is_some(option(any())) -> boolean(). -is_some(Option) -> - Option /= none. - --spec is_none(option(any())) -> boolean(). -is_none(Option) -> - Option =:= none. - --spec to_result(option(GR), GU) -> {ok, GR} | {error, GU}. -to_result(Option, E) -> - case Option of - {some, A} -> - {ok, A}; - - _ -> - {error, E} - end. - --spec from_result({ok, GX} | {error, any()}) -> option(GX). -from_result(Result) -> - case Result of - {ok, A} -> - {some, A}; - - _ -> - none - end. - --spec unwrap(option(HC), HC) -> HC. -unwrap(Option, Default) -> - case Option of - {some, X} -> - X; - - none -> - Default - end. - --spec lazy_unwrap(option(HE), fun(() -> HE)) -> HE. -lazy_unwrap(Option, Default) -> - case Option of - {some, X} -> - X; - - none -> - Default() - end. - --spec map(option(HG), fun((HG) -> HI)) -> option(HI). -map(Option, Fun) -> - case Option of - {some, X} -> - {some, Fun(X)}; - - none -> - none - end. - --spec flatten(option(option(HK))) -> option(HK). -flatten(Option) -> - case Option of - {some, X} -> - X; - - none -> - none - end. - --spec then(option(HO), fun((HO) -> option(HQ))) -> option(HQ). -then(Option, Fun) -> - case Option of - {some, X} -> - Fun(X); - - none -> - none - end. - --spec 'or'(option(HT), option(HT)) -> option(HT). -'or'(First, Second) -> - case First of - {some, _} -> - First; - - none -> - Second - end. - --spec lazy_or(option(HX), fun(() -> option(HX))) -> option(HX). -lazy_or(First, Second) -> - case First of - {some, _} -> - First; - - none -> - Second() - end. - --spec do_values(list(option(IB)), list(IB)) -> list(IB). -do_values(List, Acc) -> - case List of - [] -> - Acc; - - [X | Xs] -> - Accumulate = fun(Acc@1, Item) -> case Item of - {some, Value} -> - [Value | Acc@1]; - - none -> - Acc@1 - end end, - Accumulate(do_values(Xs, Acc), X) - end. - --spec values(list(option(IG))) -> list(IG). -values(Options) -> - do_values(Options, []). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache deleted file mode 100644 index 00f75bc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta deleted file mode 100644 index c304185..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl deleted file mode 100644 index 61649b9..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.erl +++ /dev/null @@ -1,79 +0,0 @@ --module(gleam@order). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([negate/1, to_int/1, compare/2, max/2, min/2, reverse/1]). --export_type([order/0]). - --type order() :: lt | eq | gt. - --spec negate(order()) -> order(). -negate(Order) -> - case Order of - lt -> - gt; - - eq -> - eq; - - gt -> - lt - end. - --spec to_int(order()) -> integer(). -to_int(Order) -> - case Order of - lt -> - -1; - - eq -> - 0; - - gt -> - 1 - end. - --spec compare(order(), order()) -> order(). -compare(A, B) -> - case {A, B} of - {X, Y} when X =:= Y -> - eq; - - {lt, _} -> - lt; - - {eq, gt} -> - lt; - - {_, _} -> - gt - end. - --spec max(order(), order()) -> order(). -max(A, B) -> - case {A, B} of - {gt, _} -> - gt; - - {eq, lt} -> - eq; - - {_, _} -> - B - end. - --spec min(order(), order()) -> order(). -min(A, B) -> - case {A, B} of - {lt, _} -> - lt; - - {eq, gt} -> - eq; - - {_, _} -> - B - end. - --spec reverse(fun((I, I) -> order())) -> fun((I, I) -> order()). -reverse(Orderer) -> - fun(A, B) -> Orderer(B, A) end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache deleted file mode 100644 index 5eb2973..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta deleted file mode 100644 index 8ee3fd8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl deleted file mode 100644 index f4eff52..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@pair). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([first/1, second/1, swap/1, map_first/2, map_second/2, new/2]). - --spec first({FM, any()}) -> FM. -first(Pair) -> - {A, _} = Pair, - A. - --spec second({any(), FP}) -> FP. -second(Pair) -> - {_, A} = Pair, - A. - --spec swap({FQ, FR}) -> {FR, FQ}. -swap(Pair) -> - {A, B} = Pair, - {B, A}. - --spec map_first({FS, FT}, fun((FS) -> FU)) -> {FU, FT}. -map_first(Pair, Fun) -> - {A, B} = Pair, - {Fun(A), B}. - --spec map_second({FV, FW}, fun((FW) -> FX)) -> {FV, FX}. -map_second(Pair, Fun) -> - {A, B} = Pair, - {A, Fun(B)}. - --spec new(FY, FZ) -> {FY, FZ}. -new(First, Second) -> - {First, Second}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache deleted file mode 100644 index a35d701..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta deleted file mode 100644 index 26ea872..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl deleted file mode 100644 index d9ec12a..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.erl +++ /dev/null @@ -1,121 +0,0 @@ --module(gleam@queue). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, from_list/1, to_list/1, is_empty/1, length/1, push_back/2, push_front/2, pop_back/1, pop_front/1, reverse/1, is_logically_equal/3, is_equal/2]). --export_type([queue/1]). - --opaque queue(BFE) :: {queue, list(BFE), list(BFE)}. - --spec new() -> queue(any()). -new() -> - {queue, [], []}. - --spec from_list(list(BFH)) -> queue(BFH). -from_list(List) -> - {queue, [], List}. - --spec to_list(queue(BFK)) -> list(BFK). -to_list(Queue) -> - _pipe = erlang:element(3, Queue), - gleam@list:append(_pipe, gleam@list:reverse(erlang:element(2, Queue))). - --spec is_empty(queue(any())) -> boolean(). -is_empty(Queue) -> - (erlang:element(2, Queue) =:= []) andalso (erlang:element(3, Queue) =:= []). - --spec length(queue(any())) -> integer(). -length(Queue) -> - gleam@list:length(erlang:element(2, Queue)) + gleam@list:length( - erlang:element(3, Queue) - ). - --spec push_back(queue(BFR), BFR) -> queue(BFR). -push_back(Queue, Item) -> - {queue, [Item | erlang:element(2, Queue)], erlang:element(3, Queue)}. - --spec push_front(queue(BFU), BFU) -> queue(BFU). -push_front(Queue, Item) -> - {queue, erlang:element(2, Queue), [Item | erlang:element(3, Queue)]}. - --spec pop_back(queue(BFX)) -> {ok, {BFX, queue(BFX)}} | {error, nil}. -pop_back(Queue) -> - case Queue of - {queue, [], []} -> - {error, nil}; - - {queue, [], Out} -> - pop_back({queue, gleam@list:reverse(Out), []}); - - {queue, [First | Rest], Out@1} -> - Queue@1 = {queue, Rest, Out@1}, - {ok, {First, Queue@1}} - end. - --spec pop_front(queue(BGC)) -> {ok, {BGC, queue(BGC)}} | {error, nil}. -pop_front(Queue) -> - case Queue of - {queue, [], []} -> - {error, nil}; - - {queue, In, []} -> - pop_front({queue, [], gleam@list:reverse(In)}); - - {queue, In@1, [First | Rest]} -> - Queue@1 = {queue, In@1, Rest}, - {ok, {First, Queue@1}} - end. - --spec reverse(queue(BGH)) -> queue(BGH). -reverse(Queue) -> - {queue, erlang:element(3, Queue), erlang:element(2, Queue)}. - --spec check_equal( - list(BGK), - list(BGK), - list(BGK), - list(BGK), - fun((BGK, BGK) -> boolean()) -) -> boolean(). -check_equal(Xs, X_tail, Ys, Y_tail, Eq) -> - case {Xs, X_tail, Ys, Y_tail} of - {[], [], [], []} -> - true; - - {[X | Xs@1], _, [Y | Ys@1], _} -> - case Eq(X, Y) of - false -> - false; - - true -> - check_equal(Xs@1, X_tail, Ys@1, Y_tail, Eq) - end; - - {[], [_ | _], _, _} -> - check_equal(gleam@list:reverse(X_tail), [], Ys, Y_tail, Eq); - - {_, _, [], [_ | _]} -> - check_equal(Xs, X_tail, gleam@list:reverse(Y_tail), [], Eq); - - {_, _, _, _} -> - false - end. - --spec is_logically_equal(queue(BGP), queue(BGP), fun((BGP, BGP) -> boolean())) -> boolean(). -is_logically_equal(A, B, Element_is_equal) -> - check_equal( - erlang:element(3, A), - erlang:element(2, A), - erlang:element(3, B), - erlang:element(2, B), - Element_is_equal - ). - --spec is_equal(queue(BGS), queue(BGS)) -> boolean(). -is_equal(A, B) -> - check_equal( - erlang:element(3, A), - erlang:element(2, A), - erlang:element(3, B), - erlang:element(2, B), - fun(A@1, B@1) -> A@1 =:= B@1 end - ). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache deleted file mode 100644 index de8820b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta deleted file mode 100644 index ab416af..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl deleted file mode 100644 index 2d1c5fc..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@regex). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compile/2, from_string/1, check/2, split/2, scan/2]). --export_type([regex/0, match/0, compile_error/0, options/0]). - --type regex() :: any(). - --type match() :: {match, binary(), list(gleam@option:option(binary()))}. - --type compile_error() :: {compile_error, binary(), integer()}. - --type options() :: {options, boolean(), boolean()}. - --spec compile(binary(), options()) -> {ok, regex()} | {error, compile_error()}. -compile(Pattern, Options) -> - gleam_stdlib:compile_regex(Pattern, Options). - --spec from_string(binary()) -> {ok, regex()} | {error, compile_error()}. -from_string(Pattern) -> - compile(Pattern, {options, false, false}). - --spec check(regex(), binary()) -> boolean(). -check(Regex, Content) -> - gleam_stdlib:regex_check(Regex, Content). - --spec split(regex(), binary()) -> list(binary()). -split(Regex, String) -> - gleam_stdlib:regex_split(Regex, String). - --spec scan(regex(), binary()) -> list(match()). -scan(Regex, String) -> - gleam_stdlib:regex_scan(Regex, String). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache deleted file mode 100644 index d7f9b5d..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta deleted file mode 100644 index 732654a..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl deleted file mode 100644 index e7bdaff..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.erl +++ /dev/null @@ -1,201 +0,0 @@ --module(gleam@result). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, 'try'/2, then/2, unwrap/2, lazy_unwrap/2, unwrap_error/2, unwrap_both/1, nil_error/1, 'or'/2, lazy_or/2, all/1, partition/1, replace/2, replace_error/2, values/1, try_recover/2]). - --spec is_ok({ok, any()} | {error, any()}) -> boolean(). -is_ok(Result) -> - case Result of - {error, _} -> - false; - - {ok, _} -> - true - end. - --spec is_error({ok, any()} | {error, any()}) -> boolean(). -is_error(Result) -> - case Result of - {ok, _} -> - false; - - {error, _} -> - true - end. - --spec map({ok, BKA} | {error, BKB}, fun((BKA) -> BKE)) -> {ok, BKE} | - {error, BKB}. -map(Result, Fun) -> - case Result of - {ok, X} -> - {ok, Fun(X)}; - - {error, E} -> - {error, E} - end. - --spec map_error({ok, BKH} | {error, BKI}, fun((BKI) -> BKL)) -> {ok, BKH} | - {error, BKL}. -map_error(Result, Fun) -> - case Result of - {ok, X} -> - {ok, X}; - - {error, Error} -> - {error, Fun(Error)} - end. - --spec flatten({ok, {ok, BKO} | {error, BKP}} | {error, BKP}) -> {ok, BKO} | - {error, BKP}. -flatten(Result) -> - case Result of - {ok, X} -> - X; - - {error, Error} -> - {error, Error} - end. - --spec 'try'({ok, BKW} | {error, BKX}, fun((BKW) -> {ok, BLA} | {error, BKX})) -> {ok, - BLA} | - {error, BKX}. -'try'(Result, Fun) -> - case Result of - {ok, X} -> - Fun(X); - - {error, E} -> - {error, E} - end. - --spec then({ok, BLF} | {error, BLG}, fun((BLF) -> {ok, BLJ} | {error, BLG})) -> {ok, - BLJ} | - {error, BLG}. -then(Result, Fun) -> - 'try'(Result, Fun). - --spec unwrap({ok, BLO} | {error, any()}, BLO) -> BLO. -unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default - end. - --spec lazy_unwrap({ok, BLS} | {error, any()}, fun(() -> BLS)) -> BLS. -lazy_unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default() - end. - --spec unwrap_error({ok, any()} | {error, BLX}, BLX) -> BLX. -unwrap_error(Result, Default) -> - case Result of - {ok, _} -> - Default; - - {error, E} -> - E - end. - --spec unwrap_both({ok, BMA} | {error, BMA}) -> BMA. -unwrap_both(Result) -> - case Result of - {ok, A} -> - A; - - {error, A@1} -> - A@1 - end. - --spec nil_error({ok, BMD} | {error, any()}) -> {ok, BMD} | {error, nil}. -nil_error(Result) -> - map_error(Result, fun(_) -> nil end). - --spec 'or'({ok, BMJ} | {error, BMK}, {ok, BMJ} | {error, BMK}) -> {ok, BMJ} | - {error, BMK}. -'or'(First, Second) -> - case First of - {ok, _} -> - First; - - {error, _} -> - Second - end. - --spec lazy_or({ok, BMR} | {error, BMS}, fun(() -> {ok, BMR} | {error, BMS})) -> {ok, - BMR} | - {error, BMS}. -lazy_or(First, Second) -> - case First of - {ok, _} -> - First; - - {error, _} -> - Second() - end. - --spec all(list({ok, BMZ} | {error, BNA})) -> {ok, list(BMZ)} | {error, BNA}. -all(Results) -> - gleam@list:try_map(Results, fun(X) -> X end). - --spec do_partition(list({ok, BNO} | {error, BNP}), list(BNO), list(BNP)) -> {list(BNO), - list(BNP)}. -do_partition(Results, Oks, Errors) -> - case Results of - [] -> - {Oks, Errors}; - - [{ok, A} | Rest] -> - do_partition(Rest, [A | Oks], Errors); - - [{error, E} | Rest@1] -> - do_partition(Rest@1, Oks, [E | Errors]) - end. - --spec partition(list({ok, BNH} | {error, BNI})) -> {list(BNH), list(BNI)}. -partition(Results) -> - do_partition(Results, [], []). - --spec replace({ok, any()} | {error, BNX}, BOA) -> {ok, BOA} | {error, BNX}. -replace(Result, Value) -> - case Result of - {ok, _} -> - {ok, Value}; - - {error, Error} -> - {error, Error} - end. - --spec replace_error({ok, BOD} | {error, any()}, BOH) -> {ok, BOD} | {error, BOH}. -replace_error(Result, Error) -> - case Result of - {ok, X} -> - {ok, X}; - - {error, _} -> - {error, Error} - end. - --spec values(list({ok, BOK} | {error, any()})) -> list(BOK). -values(Results) -> - gleam@list:filter_map(Results, fun(R) -> R end). - --spec try_recover( - {ok, BOQ} | {error, BOR}, - fun((BOR) -> {ok, BOQ} | {error, BOU}) -) -> {ok, BOQ} | {error, BOU}. -try_recover(Result, Fun) -> - case Result of - {ok, Value} -> - {ok, Value}; - - {error, Error} -> - Fun(Error) - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache deleted file mode 100644 index 43fd2a5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta deleted file mode 100644 index ee9607b..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl deleted file mode 100644 index 2a23b83..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.erl +++ /dev/null @@ -1,85 +0,0 @@ --module(gleam@set). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, size/1, insert/2, contains/2, delete/2, to_list/1, from_list/1, fold/3, filter/2, drop/2, take/2, union/2, intersection/2]). --export_type([set/1]). - --opaque set(EYO) :: {set, gleam@dict:dict(EYO, list(nil))}. - --spec new() -> set(any()). -new() -> - {set, gleam@dict:new()}. - --spec size(set(any())) -> integer(). -size(Set) -> - gleam@dict:size(erlang:element(2, Set)). - --spec insert(set(EYU), EYU) -> set(EYU). -insert(Set, Member) -> - {set, gleam@dict:insert(erlang:element(2, Set), Member, [])}. - --spec contains(set(EYX), EYX) -> boolean(). -contains(Set, Member) -> - _pipe = erlang:element(2, Set), - _pipe@1 = gleam@dict:get(_pipe, Member), - gleam@result:is_ok(_pipe@1). - --spec delete(set(EYZ), EYZ) -> set(EYZ). -delete(Set, Member) -> - {set, gleam@dict:delete(erlang:element(2, Set), Member)}. - --spec to_list(set(EZC)) -> list(EZC). -to_list(Set) -> - gleam@dict:keys(erlang:element(2, Set)). - --spec from_list(list(EZF)) -> set(EZF). -from_list(Members) -> - Map = gleam@list:fold( - Members, - gleam@dict:new(), - fun(M, K) -> gleam@dict:insert(M, K, []) end - ), - {set, Map}. - --spec fold(set(EZI), EZK, fun((EZK, EZI) -> EZK)) -> EZK. -fold(Set, Initial, Reducer) -> - gleam@dict:fold( - erlang:element(2, Set), - Initial, - fun(A, K, _) -> Reducer(A, K) end - ). - --spec filter(set(EZL), fun((EZL) -> boolean())) -> set(EZL). -filter(Set, Predicate) -> - {set, - gleam@dict:filter(erlang:element(2, Set), fun(M, _) -> Predicate(M) end)}. - --spec drop(set(EZO), list(EZO)) -> set(EZO). -drop(Set, Disallowed) -> - gleam@list:fold(Disallowed, Set, fun delete/2). - --spec take(set(EZS), list(EZS)) -> set(EZS). -take(Set, Desired) -> - {set, gleam@dict:take(erlang:element(2, Set), Desired)}. - --spec order(set(EZW), set(EZW)) -> {set(EZW), set(EZW)}. -order(First, Second) -> - case gleam@dict:size(erlang:element(2, First)) > gleam@dict:size( - erlang:element(2, Second) - ) of - true -> - {First, Second}; - - false -> - {Second, First} - end. - --spec union(set(FAB), set(FAB)) -> set(FAB). -union(First, Second) -> - {Larger, Smaller} = order(First, Second), - fold(Smaller, Larger, fun insert/2). - --spec intersection(set(FAF), set(FAF)) -> set(FAF). -intersection(First, Second) -> - {Larger, Smaller} = order(First, Second), - take(Larger, to_list(Smaller)). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache deleted file mode 100644 index d024425..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta deleted file mode 100644 index 300d752..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl deleted file mode 100644 index 6cba31d..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.erl +++ /dev/null @@ -1,352 +0,0 @@ --module(gleam@string). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_empty/1, length/1, reverse/1, replace/3, lowercase/1, uppercase/1, compare/2, slice/3, crop/2, drop_left/2, drop_right/2, contains/2, starts_with/2, ends_with/2, split_once/2, append/2, concat/1, repeat/2, join/2, pad_left/3, pad_right/3, trim/1, trim_left/1, trim_right/1, pop_grapheme/1, to_graphemes/1, split/2, to_utf_codepoints/1, from_utf_codepoints/1, utf_codepoint/1, utf_codepoint_to_int/1, to_option/1, first/1, last/1, capitalise/1, inspect/1, byte_size/1]). --export_type([direction/0]). - --type direction() :: leading | trailing | both. - --spec is_empty(binary()) -> boolean(). -is_empty(Str) -> - Str =:= <<""/utf8>>. - --spec length(binary()) -> integer(). -length(String) -> - string:length(String). - --spec do_reverse(binary()) -> binary(). -do_reverse(String) -> - _pipe = String, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:reverse(_pipe@1), - gleam@string_builder:to_string(_pipe@2). - --spec reverse(binary()) -> binary(). -reverse(String) -> - do_reverse(String). - --spec replace(binary(), binary(), binary()) -> binary(). -replace(String, Pattern, Substitute) -> - _pipe = String, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:replace(_pipe@1, Pattern, Substitute), - gleam@string_builder:to_string(_pipe@2). - --spec lowercase(binary()) -> binary(). -lowercase(String) -> - string:lowercase(String). - --spec uppercase(binary()) -> binary(). -uppercase(String) -> - string:uppercase(String). - --spec compare(binary(), binary()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - _ -> - case gleam_stdlib:less_than(A, B) of - true -> - lt; - - _ -> - gt - end - end. - --spec slice(binary(), integer(), integer()) -> binary(). -slice(String, Idx, Len) -> - case Len < 0 of - true -> - <<""/utf8>>; - - false -> - case Idx < 0 of - true -> - Translated_idx = length(String) + Idx, - case Translated_idx < 0 of - true -> - <<""/utf8>>; - - false -> - string:slice(String, Translated_idx, Len) - end; - - false -> - string:slice(String, Idx, Len) - end - end. - --spec crop(binary(), binary()) -> binary(). -crop(String, Substring) -> - gleam_stdlib:crop_string(String, Substring). - --spec drop_left(binary(), integer()) -> binary(). -drop_left(String, Num_graphemes) -> - case Num_graphemes < 0 of - true -> - String; - - false -> - slice(String, Num_graphemes, length(String) - Num_graphemes) - end. - --spec drop_right(binary(), integer()) -> binary(). -drop_right(String, Num_graphemes) -> - case Num_graphemes < 0 of - true -> - String; - - false -> - slice(String, 0, length(String) - Num_graphemes) - end. - --spec contains(binary(), binary()) -> boolean(). -contains(Haystack, Needle) -> - gleam_stdlib:contains_string(Haystack, Needle). - --spec starts_with(binary(), binary()) -> boolean(). -starts_with(String, Prefix) -> - gleam_stdlib:string_starts_with(String, Prefix). - --spec ends_with(binary(), binary()) -> boolean(). -ends_with(String, Suffix) -> - gleam_stdlib:string_ends_with(String, Suffix). - --spec do_split_once(binary(), binary()) -> {ok, {binary(), binary()}} | - {error, nil}. -do_split_once(X, Substring) -> - case string:split(X, Substring) of - [First, Rest] -> - {ok, {First, Rest}}; - - _ -> - {error, nil} - end. - --spec split_once(binary(), binary()) -> {ok, {binary(), binary()}} | - {error, nil}. -split_once(X, Substring) -> - do_split_once(X, Substring). - --spec append(binary(), binary()) -> binary(). -append(First, Second) -> - _pipe = First, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:append(_pipe@1, Second), - gleam@string_builder:to_string(_pipe@2). - --spec concat(list(binary())) -> binary(). -concat(Strings) -> - _pipe = Strings, - _pipe@1 = gleam@string_builder:from_strings(_pipe), - gleam@string_builder:to_string(_pipe@1). - --spec repeat(binary(), integer()) -> binary(). -repeat(String, Times) -> - _pipe = gleam@iterator:repeat(String), - _pipe@1 = gleam@iterator:take(_pipe, Times), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec do_join(list(binary()), binary()) -> binary(). -do_join(Strings, Separator) -> - _pipe = Strings, - _pipe@1 = gleam@list:intersperse(_pipe, Separator), - concat(_pipe@1). - --spec join(list(binary()), binary()) -> binary(). -join(Strings, Separator) -> - do_join(Strings, Separator). - --spec padding(integer(), binary()) -> gleam@iterator:iterator(binary()). -padding(Size, Pad_string) -> - Pad_length = length(Pad_string), - Num_pads = case Pad_length of - 0 -> 0; - Gleam@denominator -> Size div Gleam@denominator - end, - Extra = case Pad_length of - 0 -> 0; - Gleam@denominator@1 -> Size rem Gleam@denominator@1 - end, - _pipe = gleam@iterator:repeat(Pad_string), - _pipe@1 = gleam@iterator:take(_pipe, Num_pads), - gleam@iterator:append( - _pipe@1, - gleam@iterator:single(slice(Pad_string, 0, Extra)) - ). - --spec pad_left(binary(), integer(), binary()) -> binary(). -pad_left(String, Desired_length, Pad_string) -> - Current_length = length(String), - To_pad_length = Desired_length - Current_length, - _pipe = padding(To_pad_length, Pad_string), - _pipe@1 = gleam@iterator:append(_pipe, gleam@iterator:single(String)), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec pad_right(binary(), integer(), binary()) -> binary(). -pad_right(String, Desired_length, Pad_string) -> - Current_length = length(String), - To_pad_length = Desired_length - Current_length, - _pipe = gleam@iterator:single(String), - _pipe@1 = gleam@iterator:append(_pipe, padding(To_pad_length, Pad_string)), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec do_trim(binary()) -> binary(). -do_trim(String) -> - string:trim(String, both). - --spec trim(binary()) -> binary(). -trim(String) -> - do_trim(String). - --spec do_trim_left(binary()) -> binary(). -do_trim_left(String) -> - string:trim(String, leading). - --spec trim_left(binary()) -> binary(). -trim_left(String) -> - do_trim_left(String). - --spec do_trim_right(binary()) -> binary(). -do_trim_right(String) -> - string:trim(String, trailing). - --spec trim_right(binary()) -> binary(). -trim_right(String) -> - do_trim_right(String). - --spec pop_grapheme(binary()) -> {ok, {binary(), binary()}} | {error, nil}. -pop_grapheme(String) -> - gleam_stdlib:string_pop_grapheme(String). - --spec do_to_graphemes(binary(), list(binary())) -> list(binary()). -do_to_graphemes(String, Acc) -> - case pop_grapheme(String) of - {ok, {Grapheme, Rest}} -> - do_to_graphemes(Rest, [Grapheme | Acc]); - - _ -> - Acc - end. - --spec to_graphemes(binary()) -> list(binary()). -to_graphemes(String) -> - _pipe = do_to_graphemes(String, []), - gleam@list:reverse(_pipe). - --spec split(binary(), binary()) -> list(binary()). -split(X, Substring) -> - case Substring of - <<""/utf8>> -> - to_graphemes(X); - - _ -> - _pipe = X, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:split(_pipe@1, Substring), - gleam@list:map(_pipe@2, fun gleam@string_builder:to_string/1) - end. - --spec do_to_utf_codepoints_impl(bitstring(), list(integer())) -> list(integer()). -do_to_utf_codepoints_impl(Bit_array, Acc) -> - case Bit_array of - <> -> - do_to_utf_codepoints_impl(Rest, [First | Acc]); - - _ -> - Acc - end. - --spec do_to_utf_codepoints(binary()) -> list(integer()). -do_to_utf_codepoints(String) -> - _pipe = do_to_utf_codepoints_impl(<>, []), - gleam@list:reverse(_pipe). - --spec to_utf_codepoints(binary()) -> list(integer()). -to_utf_codepoints(String) -> - do_to_utf_codepoints(String). - --spec from_utf_codepoints(list(integer())) -> binary(). -from_utf_codepoints(Utf_codepoints) -> - gleam_stdlib:utf_codepoint_list_to_string(Utf_codepoints). - --spec utf_codepoint(integer()) -> {ok, integer()} | {error, nil}. -utf_codepoint(Value) -> - case Value of - I when I > 1114111 -> - {error, nil}; - - 65534 -> - {error, nil}; - - 65535 -> - {error, nil}; - - I@1 when (I@1 >= 55296) andalso (I@1 =< 57343) -> - {error, nil}; - - I@2 -> - {ok, gleam_stdlib:identity(I@2)} - end. - --spec utf_codepoint_to_int(integer()) -> integer(). -utf_codepoint_to_int(Cp) -> - gleam_stdlib:identity(Cp). - --spec to_option(binary()) -> gleam@option:option(binary()). -to_option(S) -> - case S of - <<""/utf8>> -> - none; - - _ -> - {some, S} - end. - --spec first(binary()) -> {ok, binary()} | {error, nil}. -first(S) -> - case pop_grapheme(S) of - {ok, {First, _}} -> - {ok, First}; - - {error, E} -> - {error, E} - end. - --spec last(binary()) -> {ok, binary()} | {error, nil}. -last(S) -> - case pop_grapheme(S) of - {ok, {First, <<""/utf8>>}} -> - {ok, First}; - - {ok, {_, Rest}} -> - {ok, slice(Rest, -1, 1)}; - - {error, E} -> - {error, E} - end. - --spec capitalise(binary()) -> binary(). -capitalise(S) -> - case pop_grapheme(S) of - {ok, {First, Rest}} -> - append(uppercase(First), lowercase(Rest)); - - _ -> - <<""/utf8>> - end. - --spec inspect(any()) -> binary(). -inspect(Term) -> - _pipe = gleam_stdlib:inspect(Term), - gleam@string_builder:to_string(_pipe). - --spec byte_size(binary()) -> integer(). -byte_size(String) -> - erlang:byte_size(String). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache deleted file mode 100644 index 0d2c392..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta deleted file mode 100644 index 2ef42cf..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl deleted file mode 100644 index 693e840..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.erl +++ /dev/null @@ -1,91 +0,0 @@ --module(gleam@string_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([prepend_builder/2, append_builder/2, new/0, from_strings/1, concat/1, from_string/1, prepend/2, append/2, to_string/1, byte_size/1, join/2, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). --export_type([string_builder/0, direction/0]). - --type string_builder() :: any(). - --type direction() :: all. - --spec prepend_builder(string_builder(), string_builder()) -> string_builder(). -prepend_builder(Builder, Prefix) -> - gleam_stdlib:iodata_append(Prefix, Builder). - --spec append_builder(string_builder(), string_builder()) -> string_builder(). -append_builder(Builder, Suffix) -> - gleam_stdlib:iodata_append(Builder, Suffix). - --spec new() -> string_builder(). -new() -> - gleam_stdlib:identity([]). - --spec from_strings(list(binary())) -> string_builder(). -from_strings(Strings) -> - gleam_stdlib:identity(Strings). - --spec concat(list(string_builder())) -> string_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec from_string(binary()) -> string_builder(). -from_string(String) -> - gleam_stdlib:identity(String). - --spec prepend(string_builder(), binary()) -> string_builder(). -prepend(Builder, Prefix) -> - append_builder(from_string(Prefix), Builder). - --spec append(string_builder(), binary()) -> string_builder(). -append(Builder, Second) -> - append_builder(Builder, from_string(Second)). - --spec to_string(string_builder()) -> binary(). -to_string(Builder) -> - unicode:characters_to_binary(Builder). - --spec byte_size(string_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). - --spec join(list(string_builder()), binary()) -> string_builder(). -join(Builders, Sep) -> - _pipe = Builders, - _pipe@1 = gleam@list:intersperse(_pipe, from_string(Sep)), - concat(_pipe@1). - --spec lowercase(string_builder()) -> string_builder(). -lowercase(Builder) -> - string:lowercase(Builder). - --spec uppercase(string_builder()) -> string_builder(). -uppercase(Builder) -> - string:uppercase(Builder). - --spec reverse(string_builder()) -> string_builder(). -reverse(Builder) -> - string:reverse(Builder). - --spec do_split(string_builder(), binary()) -> list(string_builder()). -do_split(Iodata, Pattern) -> - string:split(Iodata, Pattern, all). - --spec split(string_builder(), binary()) -> list(string_builder()). -split(Iodata, Pattern) -> - do_split(Iodata, Pattern). - --spec do_replace(string_builder(), binary(), binary()) -> string_builder(). -do_replace(Iodata, Pattern, Substitute) -> - string:replace(Iodata, Pattern, Substitute, all). - --spec replace(string_builder(), binary(), binary()) -> string_builder(). -replace(Builder, Pattern, Substitute) -> - do_replace(Builder, Pattern, Substitute). - --spec is_equal(string_builder(), string_builder()) -> boolean(). -is_equal(A, B) -> - string:equal(A, B). - --spec is_empty(string_builder()) -> boolean(). -is_empty(Builder) -> - string:is_empty(Builder). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache deleted file mode 100644 index 808bd6c..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta deleted file mode 100644 index a8195fc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl deleted file mode 100644 index e7c2696..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.erl +++ /dev/null @@ -1,252 +0,0 @@ --module(gleam@uri). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse/1, parse_query/1, percent_encode/1, query_to_string/1, percent_decode/1, path_segments/1, to_string/1, origin/1, merge/2]). --export_type([uri/0]). - --type uri() :: {uri, - gleam@option:option(binary()), - gleam@option:option(binary()), - gleam@option:option(binary()), - gleam@option:option(integer()), - binary(), - gleam@option:option(binary()), - gleam@option:option(binary())}. - --spec parse(binary()) -> {ok, uri()} | {error, nil}. -parse(Uri_string) -> - gleam_stdlib:uri_parse(Uri_string). - --spec parse_query(binary()) -> {ok, list({binary(), binary()})} | {error, nil}. -parse_query(Query) -> - gleam_stdlib:parse_query(Query). - --spec percent_encode(binary()) -> binary(). -percent_encode(Value) -> - gleam_stdlib:percent_encode(Value). - --spec query_pair({binary(), binary()}) -> gleam@string_builder:string_builder(). -query_pair(Pair) -> - gleam@string_builder:from_strings( - [percent_encode(erlang:element(1, Pair)), - <<"="/utf8>>, - percent_encode(erlang:element(2, Pair))] - ). - --spec query_to_string(list({binary(), binary()})) -> binary(). -query_to_string(Query) -> - _pipe = Query, - _pipe@1 = gleam@list:map(_pipe, fun query_pair/1), - _pipe@2 = gleam@list:intersperse( - _pipe@1, - gleam@string_builder:from_string(<<"&"/utf8>>) - ), - _pipe@3 = gleam@string_builder:concat(_pipe@2), - gleam@string_builder:to_string(_pipe@3). - --spec percent_decode(binary()) -> {ok, binary()} | {error, nil}. -percent_decode(Value) -> - gleam_stdlib:percent_decode(Value). - --spec do_remove_dot_segments(list(binary()), list(binary())) -> list(binary()). -do_remove_dot_segments(Input, Accumulator) -> - case Input of - [] -> - gleam@list:reverse(Accumulator); - - [Segment | Rest] -> - Accumulator@5 = case {Segment, Accumulator} of - {<<""/utf8>>, Accumulator@1} -> - Accumulator@1; - - {<<"."/utf8>>, Accumulator@2} -> - Accumulator@2; - - {<<".."/utf8>>, []} -> - []; - - {<<".."/utf8>>, [_ | Accumulator@3]} -> - Accumulator@3; - - {Segment@1, Accumulator@4} -> - [Segment@1 | Accumulator@4] - end, - do_remove_dot_segments(Rest, Accumulator@5) - end. - --spec remove_dot_segments(list(binary())) -> list(binary()). -remove_dot_segments(Input) -> - do_remove_dot_segments(Input, []). - --spec path_segments(binary()) -> list(binary()). -path_segments(Path) -> - remove_dot_segments(gleam@string:split(Path, <<"/"/utf8>>)). - --spec to_string(uri()) -> binary(). -to_string(Uri) -> - Parts = case erlang:element(8, Uri) of - {some, Fragment} -> - [<<"#"/utf8>>, Fragment]; - - _ -> - [] - end, - Parts@1 = case erlang:element(7, Uri) of - {some, Query} -> - [<<"?"/utf8>>, Query | Parts]; - - _ -> - Parts - end, - Parts@2 = [erlang:element(6, Uri) | Parts@1], - Parts@3 = case {erlang:element(4, Uri), - gleam@string:starts_with(erlang:element(6, Uri), <<"/"/utf8>>)} of - {{some, Host}, false} when Host =/= <<""/utf8>> -> - [<<"/"/utf8>> | Parts@2]; - - {_, _} -> - Parts@2 - end, - Parts@4 = case {erlang:element(4, Uri), erlang:element(5, Uri)} of - {{some, _}, {some, Port}} -> - [<<":"/utf8>>, gleam@int:to_string(Port) | Parts@3]; - - {_, _} -> - Parts@3 - end, - Parts@5 = case {erlang:element(2, Uri), - erlang:element(3, Uri), - erlang:element(4, Uri)} of - {{some, S}, {some, U}, {some, H}} -> - [S, <<"://"/utf8>>, U, <<"@"/utf8>>, H | Parts@4]; - - {{some, S@1}, none, {some, H@1}} -> - [S@1, <<"://"/utf8>>, H@1 | Parts@4]; - - {{some, S@2}, {some, _}, none} -> - [S@2, <<":"/utf8>> | Parts@4]; - - {{some, S@2}, none, none} -> - [S@2, <<":"/utf8>> | Parts@4]; - - {none, none, {some, H@2}} -> - [<<"//"/utf8>>, H@2 | Parts@4]; - - {_, _, _} -> - Parts@4 - end, - gleam@string:concat(Parts@5). - --spec origin(uri()) -> {ok, binary()} | {error, nil}. -origin(Uri) -> - {uri, Scheme, _, Host, Port, _, _, _} = Uri, - case Scheme of - {some, <<"https"/utf8>>} when Port =:= {some, 443} -> - Origin = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, - {ok, to_string(Origin)}; - - {some, <<"http"/utf8>>} when Port =:= {some, 80} -> - Origin@1 = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, - {ok, to_string(Origin@1)}; - - {some, S} when (S =:= <<"http"/utf8>>) orelse (S =:= <<"https"/utf8>>) -> - Origin@2 = {uri, Scheme, none, Host, Port, <<""/utf8>>, none, none}, - {ok, to_string(Origin@2)}; - - _ -> - {error, nil} - end. - --spec drop_last(list(ERB)) -> list(ERB). -drop_last(Elements) -> - gleam@list:take(Elements, gleam@list:length(Elements) - 1). - --spec join_segments(list(binary())) -> binary(). -join_segments(Segments) -> - gleam@string:join([<<""/utf8>> | Segments], <<"/"/utf8>>). - --spec merge(uri(), uri()) -> {ok, uri()} | {error, nil}. -merge(Base, Relative) -> - case Base of - {uri, {some, _}, _, {some, _}, _, _, _, _} -> - case Relative of - {uri, _, _, {some, _}, _, _, _, _} -> - Path = begin - _pipe = gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ), - _pipe@1 = remove_dot_segments(_pipe), - join_segments(_pipe@1) - end, - Resolved = {uri, - gleam@option:'or'( - erlang:element(2, Relative), - erlang:element(2, Base) - ), - none, - erlang:element(4, Relative), - gleam@option:'or'( - erlang:element(5, Relative), - erlang:element(5, Base) - ), - Path, - erlang:element(7, Relative), - erlang:element(8, Relative)}, - {ok, Resolved}; - - _ -> - {New_path, New_query} = case erlang:element(6, Relative) of - <<""/utf8>> -> - {erlang:element(6, Base), - gleam@option:'or'( - erlang:element(7, Relative), - erlang:element(7, Base) - )}; - - _ -> - Path_segments = case gleam@string:starts_with( - erlang:element(6, Relative), - <<"/"/utf8>> - ) of - true -> - gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ); - - false -> - _pipe@2 = gleam@string:split( - erlang:element(6, Base), - <<"/"/utf8>> - ), - _pipe@3 = drop_last(_pipe@2), - gleam@list:append( - _pipe@3, - gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ) - ) - end, - Path@1 = begin - _pipe@4 = Path_segments, - _pipe@5 = remove_dot_segments(_pipe@4), - join_segments(_pipe@5) - end, - {Path@1, erlang:element(7, Relative)} - end, - Resolved@1 = {uri, - erlang:element(2, Base), - none, - erlang:element(4, Base), - erlang:element(5, Base), - New_path, - New_query, - erlang:element(8, Relative)}, - {ok, Resolved@1} - end; - - _ -> - {error, nil} - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl deleted file mode 100644 index c6ea125..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.erl +++ /dev/null @@ -1,529 +0,0 @@ --module(gleam_stdlib). - --export([ - map_get/2, iodata_append/2, identity/1, decode_int/1, decode_bool/1, - decode_float/1, decode_list/1, decode_option/2, decode_field/2, parse_int/1, - parse_float/1, less_than/2, string_pop_grapheme/1, string_starts_with/2, - wrap_list/1, string_ends_with/2, string_pad/4, decode_map/1, uri_parse/1, - bit_array_int_to_u32/1, bit_array_int_from_u32/1, decode_result/1, - bit_array_slice/3, decode_bit_array/1, compile_regex/2, regex_scan/2, - percent_encode/1, percent_decode/1, regex_check/2, regex_split/2, - base_decode64/1, parse_query/1, bit_array_concat/1, size_of_tuple/1, - decode_tuple/1, decode_tuple2/1, decode_tuple3/1, decode_tuple4/1, - decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1, - println/1, print_error/1, println_error/1, inspect/1, float_to_string/1, - int_from_base_string/2, utf_codepoint_list_to_string/1, contains_string/2, - crop_string/2, base16_decode/1 -]). - -%% Taken from OTP's uri_string module --define(DEC2HEX(X), - if ((X) >= 0) andalso ((X) =< 9) -> (X) + $0; - ((X) >= 10) andalso ((X) =< 15) -> (X) + $A - 10 - end). - -%% Taken from OTP's uri_string module --define(HEX2DEC(X), - if ((X) >= $0) andalso ((X) =< $9) -> (X) - $0; - ((X) >= $A) andalso ((X) =< $F) -> (X) - $A + 10; - ((X) >= $a) andalso ((X) =< $f) -> (X) - $a + 10 - end). - --define(is_lowercase_char(X), (X > 96 andalso X < 123)). --define(is_underscore_char(X), (X == 95)). --define(is_digit_char(X), (X > 47 andalso X < 58)). - -uppercase(X) -> X - 32. - -map_get(Map, Key) -> - case maps:find(Key, Map) of - error -> {error, nil}; - OkFound -> OkFound - end. - -iodata_append(Iodata, String) -> [Iodata, String]. - -identity(X) -> X. - -decode_error_msg(Expected, Data) when is_binary(Expected) -> - decode_error(Expected, classify_dynamic(Data)). -decode_error(Expected, Got) when is_binary(Expected) andalso is_binary(Got) -> - {error, [{decode_error, Expected, Got, []}]}. - -classify_dynamic(nil) -> <<"Nil">>; -classify_dynamic(X) when is_atom(X) -> <<"Atom">>; -classify_dynamic(X) when is_binary(X) -> <<"String">>; -classify_dynamic(X) when is_bitstring(X) -> <<"BitArray">>; -classify_dynamic(X) when is_integer(X) -> <<"Int">>; -classify_dynamic(X) when is_float(X) -> <<"Float">>; -classify_dynamic(X) when is_list(X) -> <<"List">>; -classify_dynamic(X) when is_boolean(X) -> <<"Bool">>; -classify_dynamic(X) when is_map(X) -> <<"Map">>; -classify_dynamic(X) when is_tuple(X) -> - iolist_to_binary(["Tuple of ", integer_to_list(tuple_size(X)), " elements"]); -classify_dynamic(X) when - is_function(X, 0) orelse is_function(X, 1) orelse is_function(X, 2) orelse - is_function(X, 3) orelse is_function(X, 4) orelse is_function(X, 5) orelse - is_function(X, 6) orelse is_function(X, 7) orelse is_function(X, 8) orelse - is_function(X, 9) orelse is_function(X, 10) orelse is_function(X, 11) orelse - is_function(X, 12) -> <<"Function">>; -classify_dynamic(_) -> <<"Some other type">>. - -decode_map(Data) when is_map(Data) -> {ok, Data}; -decode_map(Data) -> decode_error_msg(<<"Map">>, Data). - -decode_bit_array(Data) when is_bitstring(Data) -> {ok, Data}; -decode_bit_array(Data) -> decode_error_msg(<<"BitArray">>, Data). - -decode_int(Data) when is_integer(Data) -> {ok, Data}; -decode_int(Data) -> decode_error_msg(<<"Int">>, Data). - -decode_float(Data) when is_float(Data) -> {ok, Data}; -decode_float(Data) -> decode_error_msg(<<"Float">>, Data). - -decode_bool(Data) when is_boolean(Data) -> {ok, Data}; -decode_bool(Data) -> decode_error_msg(<<"Bool">>, Data). - -decode_list(Data) when is_list(Data) -> {ok, Data}; -decode_list(Data) -> decode_error_msg(<<"List">>, Data). - -decode_field(Data, Key) when is_map(Data) -> - case Data of - #{Key := Value} -> {ok, {some, Value}}; - _ -> - {ok, none} - end; -decode_field(Data, _) -> - decode_error_msg(<<"Map">>, Data). - -size_of_tuple(Data) -> tuple_size(Data). - -tuple_get(_tup, Index) when Index < 0 -> {error, nil}; -tuple_get(Data, Index) when Index >= tuple_size(Data) -> {error, nil}; -tuple_get(Data, Index) -> {ok, element(Index + 1, Data)}. - -decode_tuple(Data) when is_tuple(Data) -> {ok, Data}; -decode_tuple(Data) -> decode_error_msg(<<"Tuple">>, Data). - -decode_tuple2({_,_} = A) -> {ok, A}; -decode_tuple2([A,B]) -> {ok, {A,B}}; -decode_tuple2(Data) -> decode_error_msg(<<"Tuple of 2 elements">>, Data). - -decode_tuple3({_,_,_} = A) -> {ok, A}; -decode_tuple3([A,B,C]) -> {ok, {A,B,C}}; -decode_tuple3(Data) -> decode_error_msg(<<"Tuple of 3 elements">>, Data). - -decode_tuple4({_,_,_,_} = A) -> {ok, A}; -decode_tuple4([A,B,C,D]) -> {ok, {A,B,C,D}}; -decode_tuple4(Data) -> decode_error_msg(<<"Tuple of 4 elements">>, Data). - -decode_tuple5({_,_,_,_,_} = A) -> {ok, A}; -decode_tuple5([A,B,C,D,E]) -> {ok, {A,B,C,D,E}}; -decode_tuple5(Data) -> decode_error_msg(<<"Tuple of 5 elements">>, Data). - -decode_tuple6({_,_,_,_,_,_} = A) -> {ok, A}; -decode_tuple6([A,B,C,D,E,F]) -> {ok, {A,B,C,D,E,F}}; -decode_tuple6(Data) -> decode_error_msg(<<"Tuple of 6 elements">>, Data). - -decode_option(Term, F) -> - Decode = fun(Inner) -> - case F(Inner) of - {ok, Decoded} -> {ok, {some, Decoded}}; - Error -> Error - end - end, - case Term of - undefined -> {ok, none}; - error -> {ok, none}; - null -> {ok, none}; - none -> {ok, none}; - nil -> {ok, none}; - {some, Inner} -> Decode(Inner); - _ -> Decode(Term) - end. - -decode_result(Term) -> - case Term of - {ok, Inner} -> {ok, {ok, Inner}}; - ok -> {ok, {ok, nil}}; - {error, Inner} -> {ok, {error, Inner}}; - error -> {ok, {error, nil}}; - _ -> decode_error_msg(<<"Result">>, Term) - end. - -int_from_base_string(String, Base) -> - case catch binary_to_integer(String, Base) of - Int when is_integer(Int) -> {ok, Int}; - _ -> {error, nil} - end. - -parse_int(String) -> - case catch binary_to_integer(String) of - Int when is_integer(Int) -> {ok, Int}; - _ -> {error, nil} - end. - -parse_float(String) -> - case catch binary_to_float(String) of - Float when is_float(Float) -> {ok, Float}; - _ -> {error, nil} - end. - -less_than(Lhs, Rhs) -> - Lhs < Rhs. - -string_starts_with(_, <<>>) -> true; -string_starts_with(String, Prefix) when byte_size(Prefix) > byte_size(String) -> false; -string_starts_with(String, Prefix) -> - PrefixSize = byte_size(Prefix), - Prefix == binary_part(String, 0, PrefixSize). - -string_ends_with(_, <<>>) -> true; -string_ends_with(String, Suffix) when byte_size(Suffix) > byte_size(String) -> false; -string_ends_with(String, Suffix) -> - SuffixSize = byte_size(Suffix), - Suffix == binary_part(String, byte_size(String) - SuffixSize, SuffixSize). - -string_pad(String, Length, Dir, PadString) -> - Chars = string:pad(String, Length, Dir, binary_to_list(PadString)), - case unicode:characters_to_binary(Chars) of - Bin when is_binary(Bin) -> Bin; - Error -> erlang:error({gleam_error, {string_invalid_utf8, Error}}) - end. - -string_pop_grapheme(String) -> - case string:next_grapheme(String) of - [ Next | Rest ] -> - {ok, {unicode:characters_to_binary([Next]), unicode:characters_to_binary(Rest)}}; - _ -> {error, nil} - end. - -bit_array_concat(BitArrays) -> - list_to_bitstring(BitArrays). - -bit_array_slice(Bin, Pos, Len) -> - try {ok, binary:part(Bin, Pos, Len)} - catch error:badarg -> {error, nil} - end. - -bit_array_int_to_u32(I) when 0 =< I, I < 4294967296 -> - {ok, <>}; -bit_array_int_to_u32(_) -> - {error, nil}. - -bit_array_int_from_u32(<>) -> - {ok, I}; -bit_array_int_from_u32(_) -> - {error, nil}. - -compile_regex(String, Options) -> - {options, Caseless, Multiline} = Options, - OptionsList = [ - unicode, - ucp, - Caseless andalso caseless, - Multiline andalso multiline - ], - FilteredOptions = [Option || Option <- OptionsList, Option /= false], - case re:compile(String, FilteredOptions) of - {ok, MP} -> {ok, MP}; - {error, {Str, Pos}} -> - {error, {compile_error, unicode:characters_to_binary(Str), Pos}} - end. - -regex_check(Regex, String) -> - re:run(String, Regex) /= nomatch. - -regex_split(Regex, String) -> - re:split(String, Regex). - -regex_submatches(_, {-1, 0}) -> none; -regex_submatches(String, {Start, Length}) -> - BinarySlice = binary:part(String, {Start, Length}), - case string:is_empty(binary_to_list(BinarySlice)) of - true -> none; - false -> {some, BinarySlice} - end. - -regex_matches(String, [{Start, Length} | Submatches]) -> - Submatches1 = lists:map(fun(X) -> regex_submatches(String, X) end, Submatches), - {match, binary:part(String, Start, Length), Submatches1}. - -regex_scan(Regex, String) -> - case re:run(String, Regex, [global]) of - {match, Captured} -> lists:map(fun(X) -> regex_matches(String, X) end, Captured); - nomatch -> [] - end. - -base_decode64(S) -> - try {ok, base64:decode(S)} - catch error:_ -> {error, nil} - end. - -wrap_list(X) when is_list(X) -> X; -wrap_list(X) -> [X]. - -parse_query(Query) -> - case uri_string:dissect_query(Query) of - {error, _, _} -> {error, nil}; - Pairs -> - Pairs1 = lists:map(fun - ({K, true}) -> {K, <<"">>}; - (Pair) -> Pair - end, Pairs), - {ok, Pairs1} - end. - -percent_encode(B) -> percent_encode(B, <<>>). -percent_encode(<<>>, Acc) -> - Acc; -percent_encode(<>, Acc) -> - case percent_ok(H) of - true -> - percent_encode(T, <>); - false -> - <> = <>, - percent_encode(T, <>) - end. - -percent_decode(Cs) -> percent_decode(Cs, <<>>). -percent_decode(<<$%, C0, C1, Cs/binary>>, Acc) -> - case is_hex_digit(C0) andalso is_hex_digit(C1) of - true -> - B = ?HEX2DEC(C0)*16+?HEX2DEC(C1), - percent_decode(Cs, <>); - false -> - {error, nil} - end; -percent_decode(<>, Acc) -> - percent_decode(Cs, <>); -percent_decode(<<>>, Acc) -> - check_utf8(Acc). - -percent_ok($!) -> true; -percent_ok($$) -> true; -percent_ok($') -> true; -percent_ok($() -> true; -percent_ok($)) -> true; -percent_ok($*) -> true; -percent_ok($+) -> true; -percent_ok($-) -> true; -percent_ok($.) -> true; -percent_ok($_) -> true; -percent_ok($~) -> true; -percent_ok(C) when $0 =< C, C =< $9 -> true; -percent_ok(C) when $A =< C, C =< $Z -> true; -percent_ok(C) when $a =< C, C =< $z -> true; -percent_ok(_) -> false. - -is_hex_digit(C) -> - ($0 =< C andalso C =< $9) orelse ($a =< C andalso C =< $f) orelse ($A =< C andalso C =< $F). - -check_utf8(Cs) -> - case unicode:characters_to_list(Cs) of - {incomplete, _, _} -> {error, nil}; - {error, _, _} -> {error, nil}; - _ -> {ok, Cs} - end. - -uri_parse(String) -> - case uri_string:parse(String) of - {error, _, _} -> {error, nil}; - Uri -> - {ok, {uri, - maps_get_optional(Uri, scheme), - maps_get_optional(Uri, userinfo), - maps_get_optional(Uri, host), - maps_get_optional(Uri, port), - maps_get_or(Uri, path, <<>>), - maps_get_optional(Uri, query), - maps_get_optional(Uri, fragment) - }} - end. - -maps_get_optional(Map, Key) -> - try {some, maps:get(Key, Map)} - catch _:_ -> none - end. - -maps_get_or(Map, Key, Default) -> - try maps:get(Key, Map) - catch _:_ -> Default - end. - -print(String) -> - io:put_chars(String), - nil. - -println(String) -> - io:put_chars([String, $\n]), - nil. - -print_error(String) -> - io:put_chars(standard_error, String), - nil. - -println_error(String) -> - io:put_chars(standard_error, [String, $\n]), - nil. - -inspect(true) -> - "True"; -inspect(false) -> - "False"; -inspect(nil) -> - "Nil"; -inspect(Data) when is_map(Data) -> - Fields = [ - [<<"#(">>, inspect(Key), <<", ">>, inspect(Value), <<")">>] - || {Key, Value} <- maps:to_list(Data) - ], - ["dict.from_list([", lists:join(", ", Fields), "])"]; -inspect(Atom) when is_atom(Atom) -> - Binary = erlang:atom_to_binary(Atom), - case inspect_maybe_gleam_atom(Binary, none, <<>>) of - {ok, Inspected} -> Inspected; - {error, _} -> ["atom.create_from_string(\"", Binary, "\")"] - end; -inspect(Any) when is_integer(Any) -> - erlang:integer_to_list(Any); -inspect(Any) when is_float(Any) -> - io_lib_format:fwrite_g(Any); -inspect(Binary) when is_binary(Binary) -> - case inspect_maybe_utf8_string(Binary, <<>>) of - {ok, InspectedUtf8String} -> InspectedUtf8String; - {error, not_a_utf8_string} -> - Segments = [erlang:integer_to_list(X) || <> <= Binary], - ["<<", lists:join(", ", Segments), ">>"] - end; -inspect(Bits) when is_bitstring(Bits) -> - inspect_bit_array(Bits); -inspect(List) when is_list(List) -> - case inspect_list(List) of - {proper, Elements} -> ["[", Elements, "]"]; - {improper, Elements} -> ["//erl([", Elements, "])"] - end; -inspect(Any) when is_tuple(Any) % Record constructors - andalso is_atom(element(1, Any)) - andalso element(1, Any) =/= false - andalso element(1, Any) =/= true - andalso element(1, Any) =/= nil --> - [Atom | ArgsList] = erlang:tuple_to_list(Any), - Args = lists:join(<<", ">>, - lists:map(fun inspect/1, ArgsList) - ), - [inspect(Atom), "(", Args, ")"]; -inspect(Tuple) when is_tuple(Tuple) -> - Elements = lists:map(fun inspect/1, erlang:tuple_to_list(Tuple)), - ["#(", lists:join(", ", Elements), ")"]; -inspect(Any) when is_function(Any) -> - {arity, Arity} = erlang:fun_info(Any, arity), - ArgsAsciiCodes = lists:seq($a, $a + Arity - 1), - Args = lists:join(<<", ">>, - lists:map(fun(Arg) -> <> end, ArgsAsciiCodes) - ), - ["//fn(", Args, ") { ... }"]; -inspect(Any) -> - ["//erl(", io_lib:format("~p", [Any]), ")"]. - - -inspect_maybe_gleam_atom(<<>>, none, _) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, none, _) when ?is_digit_char(First) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, none, _) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_">>, _PrevChar, _Acc) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, $_, _Acc) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, _PrevChar, _Acc) - when not (?is_lowercase_char(First) orelse ?is_underscore_char(First) orelse ?is_digit_char(First)) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, none, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<<"_", Rest/binary>>, _PrevChar, Acc) -> - inspect_maybe_gleam_atom(Rest, $_, Acc); -inspect_maybe_gleam_atom(<>, $_, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<>, _PrevChar, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<<>>, _PrevChar, Acc) -> - {ok, Acc}; -inspect_maybe_gleam_atom(A, B, C) -> - erlang:display({A, B, C}), - throw({gleam_error, A, B, C}). - -inspect_list([]) -> - {proper, []}; -inspect_list([First]) -> - {proper, [inspect(First)]}; -inspect_list([First | Rest]) when is_list(Rest) -> - {Kind, Inspected} = inspect_list(Rest), - {Kind, [inspect(First), <<", ">> | Inspected]}; -inspect_list([First | ImproperTail]) -> - {improper, [inspect(First), <<" | ">>, inspect(ImproperTail)]}. - -inspect_bit_array(Bits) -> - Text = inspect_bit_array(Bits, <<"<<">>), - <>">>. - -inspect_bit_array(<<>>, Acc) -> - Acc; -inspect_bit_array(<>, Acc) -> - inspect_bit_array(Rest, append_segment(Acc, erlang:integer_to_binary(X))); -inspect_bit_array(Rest, Acc) -> - Size = bit_size(Rest), - <> = Rest, - X1 = erlang:integer_to_binary(X), - Size1 = erlang:integer_to_binary(Size), - Segment = <>, - inspect_bit_array(<<>>, append_segment(Acc, Segment)). - -append_segment(<<"<<">>, Segment) -> - <<"<<", Segment/binary>>; -append_segment(Acc, Segment) -> - <>. - - -inspect_maybe_utf8_string(Binary, Acc) -> - case Binary of - <<>> -> {ok, <<$", Acc/binary, $">>}; - <> -> - Escaped = case First of - $" -> <<$\\, $">>; - $\\ -> <<$\\, $\\>>; - $\r -> <<$\\, $r>>; - $\n -> <<$\\, $n>>; - $\t -> <<$\\, $t>>; - Other -> <> - end, - inspect_maybe_utf8_string(Rest, <>); - _ -> {error, not_a_utf8_string} - end. - -float_to_string(Float) when is_float(Float) -> - erlang:iolist_to_binary(io_lib_format:fwrite_g(Float)). - -utf_codepoint_list_to_string(List) -> - case unicode:characters_to_binary(List) of - {error, _} -> erlang:error({gleam_error, {string_invalid_utf8, List}}); - Binary -> Binary - end. - -crop_string(String, Prefix) -> - case string:find(String, Prefix) of - nomatch -> String; - New -> New - end. - -contains_string(String, Substring) -> - is_bitstring(string:find(String, Substring)). - -base16_decode(String) -> - try - {ok, binary:decode_hex(String)} - catch - _:_ -> {error, nil} - end. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs b/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs deleted file mode 100644 index a908b23..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/_gleam_artefacts/gleam_stdlib.mjs +++ /dev/null @@ -1,875 +0,0 @@ -import { - BitArray, - Error, - List, - Ok, - Result, - UtfCodepoint, - stringBits, - toBitArray, - NonEmpty, - CustomType, -} from "./gleam.mjs"; -import { - CompileError as RegexCompileError, - Match as RegexMatch, -} from "./gleam/regex.mjs"; -import { DecodeError } from "./gleam/dynamic.mjs"; -import { Some, None } from "./gleam/option.mjs"; -import Dict from "./dict.mjs"; - -const Nil = undefined; -const NOT_FOUND = {}; - -export function identity(x) { - return x; -} - -export function parse_int(value) { - if (/^[-+]?(\d+)$/.test(value)) { - return new Ok(parseInt(value)); - } else { - return new Error(Nil); - } -} - -export function parse_float(value) { - if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { - return new Ok(parseFloat(value)); - } else { - return new Error(Nil); - } -} - -export function to_string(term) { - return term.toString(); -} - -export function float_to_string(float) { - const string = float.toString(); - if (string.indexOf(".") >= 0) { - return string; - } else { - return string + ".0"; - } -} - -export function int_to_base_string(int, base) { - return int.toString(base).toUpperCase(); -} - -const int_base_patterns = { - 2: /[^0-1]/, - 3: /[^0-2]/, - 4: /[^0-3]/, - 5: /[^0-4]/, - 6: /[^0-5]/, - 7: /[^0-6]/, - 8: /[^0-7]/, - 9: /[^0-8]/, - 10: /[^0-9]/, - 11: /[^0-9a]/, - 12: /[^0-9a-b]/, - 13: /[^0-9a-c]/, - 14: /[^0-9a-d]/, - 15: /[^0-9a-e]/, - 16: /[^0-9a-f]/, - 17: /[^0-9a-g]/, - 18: /[^0-9a-h]/, - 19: /[^0-9a-i]/, - 20: /[^0-9a-j]/, - 21: /[^0-9a-k]/, - 22: /[^0-9a-l]/, - 23: /[^0-9a-m]/, - 24: /[^0-9a-n]/, - 25: /[^0-9a-o]/, - 26: /[^0-9a-p]/, - 27: /[^0-9a-q]/, - 28: /[^0-9a-r]/, - 29: /[^0-9a-s]/, - 30: /[^0-9a-t]/, - 31: /[^0-9a-u]/, - 32: /[^0-9a-v]/, - 33: /[^0-9a-w]/, - 34: /[^0-9a-x]/, - 35: /[^0-9a-y]/, - 36: /[^0-9a-z]/, -}; - -export function int_from_base_string(string, base) { - if (int_base_patterns[base].test(string.replace(/^-/, "").toLowerCase())) { - return new Error(Nil); - } - - const result = parseInt(string, base); - - if (isNaN(result)) { - return new Error(Nil); - } - - return new Ok(result); -} - -export function string_replace(string, target, substitute) { - if (typeof string.replaceAll !== "undefined") { - return string.replaceAll(target, substitute); - } - // Fallback for older Node.js versions: - // 1. - // 2. - // TODO: This fallback could be remove once Node.js 14 is EOL - // aka on or after 2024-04-30 - return string.replace( - // $& means the whole matched string - new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), - substitute - ); -} - -export function string_reverse(string) { - return [...string].reverse().join(""); -} - -export function string_length(string) { - if (string === "") { - return 0; - } - const iterator = graphemes_iterator(string); - if (iterator) { - let i = 0; - for (const _ of iterator) { - i++; - } - return i; - } else { - return string.match(/./gsu).length; - } -} - -export function graphemes(string) { - return List.fromArray( - Array.from(graphemes_iterator(string)).map((item) => item.segment) - ); -} - -function graphemes_iterator(string) { - if (Intl && Intl.Segmenter) { - return new Intl.Segmenter().segment(string)[Symbol.iterator](); - } -} - -export function pop_grapheme(string) { - let first; - const iterator = graphemes_iterator(string); - if (iterator) { - first = iterator.next().value?.segment; - } else { - first = string.match(/./su)?.[0]; - } - if (first) { - return new Ok([first, string.slice(first.length)]); - } else { - return new Error(Nil); - } -} - -export function lowercase(string) { - return string.toLowerCase(); -} - -export function uppercase(string) { - return string.toUpperCase(); -} - -export function less_than(a, b) { - return a < b; -} - -export function add(a, b) { - return a + b; -} - -export function equal(a, b) { - return a === b; -} - -export function split(xs, pattern) { - return List.fromArray(xs.split(pattern)); -} - -export function join(xs, separator) { - const iterator = xs[Symbol.iterator](); - let result = iterator.next().value || ""; - let current = iterator.next(); - while (!current.done) { - result = result + separator + current.value; - current = iterator.next(); - } - return result; -} - -export function concat(xs) { - let result = ""; - for (const x of xs) { - result = result + x; - } - return result; -} - -export function length(data) { - return data.length; -} - -export function crop_string(string, substring) { - return string.substring(string.indexOf(substring)); -} - -export function contains_string(haystack, needle) { - return haystack.indexOf(needle) >= 0; -} - -export function starts_with(haystack, needle) { - return haystack.startsWith(needle); -} - -export function ends_with(haystack, needle) { - return haystack.endsWith(needle); -} - -export function split_once(haystack, needle) { - const index = haystack.indexOf(needle); - if (index >= 0) { - const before = haystack.slice(0, index); - const after = haystack.slice(index + needle.length); - return new Ok([before, after]); - } else { - return new Error(Nil); - } -} - -export function trim(string) { - return string.trim(); -} - -export function trim_left(string) { - return string.trimLeft(); -} - -export function trim_right(string) { - return string.trimRight(); -} - -export function bit_array_from_string(string) { - return toBitArray([stringBits(string)]); -} - -export function bit_array_concat(bit_arrays) { - return toBitArray(bit_arrays.toArray().map((b) => b.buffer)); -} - -export function console_log(term) { - console.log(term); -} - -export function console_error(term) { - console.error(term); -} - -export function crash(message) { - throw new globalThis.Error(message); -} - -export function bit_array_to_string(bit_array) { - try { - const decoder = new TextDecoder("utf-8", { fatal: true }); - return new Ok(decoder.decode(bit_array.buffer)); - } catch (_error) { - return new Error(Nil); - } -} - -export function print(string) { - if (typeof process === "object") { - process.stdout.write(string); // We can write without a trailing newline - } else if (typeof Deno === "object") { - Deno.stdout.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline - } else { - console.log(string); // We're in a browser. Newlines are mandated - } -} - -export function print_error(string) { - if (typeof process === "object" && process.stderr?.write) { - process.stderr.write(string); // We can write without a trailing newline - } else if (typeof Deno === "object") { - Deno.stderr.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline - } else { - console.error(string); // We're in a browser. Newlines are mandated - } -} - -export function print_debug(string) { - if (typeof process === "object" && process.stderr?.write) { - process.stderr.write(string + "\n"); // If we're in Node.js, use `stderr` - } else if (typeof Deno === "object") { - Deno.stderr.writeSync(new TextEncoder().encode(string + "\n")); // If we're in Deno, use `stderr` - } else { - console.log(string); // Otherwise, use `console.log` (so that it doesn't look like an error) - } -} - -export function ceiling(float) { - return Math.ceil(float); -} - -export function floor(float) { - return Math.floor(float); -} - -export function round(float) { - return Math.round(float); -} - -export function truncate(float) { - return Math.trunc(float); -} - -export function power(base, exponent) { - // It is checked in Gleam that: - // - The base is non-negative and that the exponent is not fractional. - // - The base is non-zero and the exponent is non-negative (otherwise - // the result will essentially be division by zero). - // It can thus be assumed that valid input is passed to the Math.pow - // function and a NaN or Infinity value will not be produced. - return Math.pow(base, exponent); -} - -export function random_uniform() { - const random_uniform_result = Math.random(); - // With round-to-nearest-even behavior, the ranges claimed for the functions below - // (excluding the one for Math.random() itself) aren't exact. - // If extremely large bounds are chosen (2^53 or higher), - // it's possible in extremely rare cases to calculate the usually-excluded upper bound. - // Note that as numbers in JavaScript are IEEE 754 floating point numbers - // See: - // Because of this, we just loop 'until' we get a valid result where 0.0 <= x < 1.0: - if (random_uniform_result === 1.0) { - return random_uniform(); - } - return random_uniform_result; -} - -export function bit_array_slice(bits, position, length) { - const start = Math.min(position, position + length); - const end = Math.max(position, position + length); - if (start < 0 || end > bits.length) return new Error(Nil); - const buffer = new Uint8Array(bits.buffer.buffer, start, Math.abs(length)); - return new Ok(new BitArray(buffer)); -} - -export function codepoint(int) { - return new UtfCodepoint(int); -} - -export function string_to_codepoint_integer_list(string) { - return List.fromArray(Array.from(string).map((item) => item.codePointAt(0))); -} - -export function utf_codepoint_list_to_string(utf_codepoint_integer_list) { - return utf_codepoint_integer_list - .toArray() - .map((x) => String.fromCodePoint(x.value)) - .join(""); -} - -export function utf_codepoint_to_int(utf_codepoint) { - return utf_codepoint.value; -} - -export function regex_check(regex, string) { - regex.lastIndex = 0; - return regex.test(string); -} - -export function compile_regex(pattern, options) { - try { - let flags = "gu"; - if (options.case_insensitive) flags += "i"; - if (options.multi_line) flags += "m"; - return new Ok(new RegExp(pattern, flags)); - } catch (error) { - const number = (error.columnNumber || 0) | 0; - return new Error(new RegexCompileError(error.message, number)); - } -} - -export function regex_scan(regex, string) { - const matches = Array.from(string.matchAll(regex)).map((match) => { - const content = match[0]; - const submatches = []; - for (let n = match.length - 1; n > 0; n--) { - if (match[n]) { - submatches[n - 1] = new Some(match[n]); - continue; - } - if (submatches.length > 0) { - submatches[n - 1] = new None(); - } - } - return new RegexMatch(content, List.fromArray(submatches)); - }); - return List.fromArray(matches); -} - -export function new_map() { - return Dict.new(); -} - -export function map_size(map) { - return map.size; -} - -export function map_to_list(map) { - return List.fromArray(map.entries()); -} - -export function map_remove(key, map) { - return map.delete(key); -} - -export function map_get(map, key) { - const value = map.get(key, NOT_FOUND); - if (value === NOT_FOUND) { - return new Error(Nil); - } - return new Ok(value); -} - -export function map_insert(key, value, map) { - return map.set(key, value); -} - -function unsafe_percent_decode(string) { - return decodeURIComponent((string || "").replace("+", " ")); -} - -export function percent_decode(string) { - try { - return new Ok(unsafe_percent_decode(string)); - } catch (_error) { - return new Error(Nil); - } -} - -export function percent_encode(string) { - return encodeURIComponent(string); -} - -export function parse_query(query) { - try { - const pairs = []; - for (const section of query.split("&")) { - const [key, value] = section.split("="); - if (!key) continue; - pairs.push([unsafe_percent_decode(key), unsafe_percent_decode(value)]); - } - return new Ok(List.fromArray(pairs)); - } catch (_error) { - return new Error(Nil); - } -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -export function encode64(bit_array) { - const aBytes = bit_array.buffer; - let nMod3 = 2; - let sB64Enc = ""; - - for (let nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { - nMod3 = nIdx % 3; - if (nIdx > 0 && ((nIdx * 4) / 3) % 76 === 0) { - sB64Enc += "\r\n"; - } - nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24); - if (nMod3 === 2 || aBytes.length - nIdx === 1) { - sB64Enc += String.fromCharCode( - uint6ToB64((nUint24 >>> 18) & 63), - uint6ToB64((nUint24 >>> 12) & 63), - uint6ToB64((nUint24 >>> 6) & 63), - uint6ToB64(nUint24 & 63) - ); - nUint24 = 0; - } - } - - return ( - sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + - (nMod3 === 2 ? "" : nMod3 === 1 ? "=" : "==") - ); -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -function uint6ToB64(nUint6) { - return nUint6 < 26 - ? nUint6 + 65 - : nUint6 < 52 - ? nUint6 + 71 - : nUint6 < 62 - ? nUint6 - 4 - : nUint6 === 62 - ? 43 - : nUint6 === 63 - ? 47 - : 65; -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -function b64ToUint6(nChr) { - return nChr > 64 && nChr < 91 - ? nChr - 65 - : nChr > 96 && nChr < 123 - ? nChr - 71 - : nChr > 47 && nChr < 58 - ? nChr + 4 - : nChr === 43 - ? 62 - : nChr === 47 - ? 63 - : 0; -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -export function decode64(sBase64) { - if (sBase64.match(/[^A-Za-z0-9\+\/=]/g)) return new Error(Nil); - const sB64Enc = sBase64.replace(/=/g, ""); - const nInLen = sB64Enc.length; - const nOutLen = (nInLen * 3 + 1) >> 2; - const taBytes = new Uint8Array(nOutLen); - - for ( - let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; - nInIdx < nInLen; - nInIdx++ - ) { - nMod4 = nInIdx & 3; - nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4)); - if (nMod4 === 3 || nInLen - nInIdx === 1) { - for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { - taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255; - } - nUint24 = 0; - } - } - - return new Ok(new BitArray(taBytes)); -} - -export function classify_dynamic(data) { - if (typeof data === "string") { - return "String"; - } else if (data instanceof Result) { - return "Result"; - } else if (data instanceof List) { - return "List"; - } else if (data instanceof BitArray) { - return "BitArray"; - } else if (data instanceof Dict) { - return "Map"; - } else if (Number.isInteger(data)) { - return "Int"; - } else if (Array.isArray(data)) { - return `Tuple of ${data.length} elements`; - } else if (typeof data === "number") { - return "Float"; - } else if (data === null) { - return "Null"; - } else if (data === undefined) { - return "Nil"; - } else { - const type = typeof data; - return type.charAt(0).toUpperCase() + type.slice(1); - } -} - -function decoder_error(expected, got) { - return decoder_error_no_classify(expected, classify_dynamic(got)); -} - -function decoder_error_no_classify(expected, got) { - return new Error( - List.fromArray([new DecodeError(expected, got, List.fromArray([]))]) - ); -} - -export function decode_string(data) { - return typeof data === "string" - ? new Ok(data) - : decoder_error("String", data); -} - -export function decode_int(data) { - return Number.isInteger(data) ? new Ok(data) : decoder_error("Int", data); -} - -export function decode_float(data) { - return typeof data === "number" ? new Ok(data) : decoder_error("Float", data); -} - -export function decode_bool(data) { - return typeof data === "boolean" ? new Ok(data) : decoder_error("Bool", data); -} - -export function decode_bit_array(data) { - if (data instanceof BitArray) { - return new Ok(data); - } - if (data instanceof Uint8Array) { - return new Ok(new BitArray(data)); - } - return decoder_error("BitArray", data); -} - -export function decode_tuple(data) { - return Array.isArray(data) ? new Ok(data) : decoder_error("Tuple", data); -} - -export function decode_tuple2(data) { - return decode_tupleN(data, 2); -} - -export function decode_tuple3(data) { - return decode_tupleN(data, 3); -} - -export function decode_tuple4(data) { - return decode_tupleN(data, 4); -} - -export function decode_tuple5(data) { - return decode_tupleN(data, 5); -} - -export function decode_tuple6(data) { - return decode_tupleN(data, 6); -} - -function decode_tupleN(data, n) { - if (Array.isArray(data) && data.length == n) { - return new Ok(data); - } - - const list = decode_exact_length_list(data, n); - if (list) return new Ok(list); - - return decoder_error(`Tuple of ${n} elements`, data); -} - -function decode_exact_length_list(data, n) { - if (!(data instanceof List)) return; - - const elements = []; - let current = data; - - for (let i = 0; i < n; i++) { - if (!(current instanceof NonEmpty)) break; - elements.push(current.head); - current = current.tail; - } - - if (elements.length === n && !(current instanceof NonEmpty)) return elements; -} - -export function tuple_get(data, index) { - return index >= 0 && data.length > index - ? new Ok(data[index]) - : new Error(Nil); -} - -export function decode_list(data) { - if (Array.isArray(data)) { - return new Ok(List.fromArray(data)); - } - return data instanceof List ? new Ok(data) : decoder_error("List", data); -} - -export function decode_result(data) { - return data instanceof Result ? new Ok(data) : decoder_error("Result", data); -} - -export function decode_map(data) { - if (data instanceof Dict) { - return new Ok(Dict.fromMap(data)); - } - if (data == null) { - return decoder_error("Map", data); - } - if (typeof data !== "object") { - return decoder_error("Map", data); - } - const proto = Object.getPrototypeOf(data); - if (proto === Object.prototype || proto === null) { - return new Ok(Dict.fromObject(data)); - } - return decoder_error("Map", data); -} - -export function decode_option(data, decoder) { - if (data === null || data === undefined || data instanceof None) - return new Ok(new None()); - if (data instanceof Some) data = data[0]; - const result = decoder(data); - if (result.isOk()) { - return new Ok(new Some(result[0])); - } else { - return result; - } -} - -export function decode_field(value, name) { - const not_a_map_error = () => decoder_error("Map", value); - - if ( - value instanceof Dict || - value instanceof WeakMap || - value instanceof Map - ) { - const entry = map_get(value, name); - return new Ok(entry.isOk() ? new Some(entry[0]) : new None()); - } else if (Object.getPrototypeOf(value) == Object.prototype) { - return try_get_field(value, name, () => new Ok(new None())); - } else { - return try_get_field(value, name, not_a_map_error); - } -} - -function try_get_field(value, field, or_else) { - try { - return field in value ? new Ok(new Some(value[field])) : or_else(); - } catch { - return or_else(); - } -} - -export function byte_size(string) { - return new TextEncoder().encode(string).length; -} - -// In Javascript bitwise operations convert numbers to a sequence of 32 bits -// while Erlang uses arbitrary precision. -// To get around this problem and get consistent results use BigInt and then -// downcast the value back to a Number value. - -export function bitwise_and(x, y) { - return Number(BigInt(x) & BigInt(y)); -} - -export function bitwise_not(x) { - return Number(~BigInt(x)); -} - -export function bitwise_or(x, y) { - return Number(BigInt(x) | BigInt(y)); -} - -export function bitwise_exclusive_or(x, y) { - return Number(BigInt(x) ^ BigInt(y)); -} - -export function bitwise_shift_left(x, y) { - return Number(BigInt(x) << BigInt(y)); -} - -export function bitwise_shift_right(x, y) { - return Number(BigInt(x) >> BigInt(y)); -} - -export function inspect(v) { - const t = typeof v; - if (v === true) return "True"; - if (v === false) return "False"; - if (v === null) return "//js(null)"; - if (v === undefined) return "Nil"; - if (t === "string") return JSON.stringify(v); - if (t === "bigint" || t === "number") return v.toString(); - if (Array.isArray(v)) return `#(${v.map(inspect).join(", ")})`; - if (v instanceof List) return inspectList(v); - if (v instanceof UtfCodepoint) return inspectUtfCodepoint(v); - if (v instanceof BitArray) return inspectBitArray(v); - if (v instanceof CustomType) return inspectCustomType(v); - if (v instanceof Dict) return inspectDict(v); - if (v instanceof Set) return `//js(Set(${[...v].map(inspect).join(", ")}))`; - if (v instanceof RegExp) return `//js(${v})`; - if (v instanceof Date) return `//js(Date("${v.toISOString()}"))`; - if (v instanceof Function) { - const args = []; - for (const i of Array(v.length).keys()) - args.push(String.fromCharCode(i + 97)); - return `//fn(${args.join(", ")}) { ... }`; - } - return inspectObject(v); -} - -function inspectDict(map) { - let body = "dict.from_list(["; - let first = true; - map.forEach((value, key) => { - if (!first) body = body + ", "; - body = body + "#(" + inspect(key) + ", " + inspect(value) + ")"; - first = false; - }); - return body + "])"; -} - -function inspectObject(v) { - const name = Object.getPrototypeOf(v)?.constructor?.name || "Object"; - const props = []; - for (const k of Object.keys(v)) { - props.push(`${inspect(k)}: ${inspect(v[k])}`); - } - const body = props.length ? " " + props.join(", ") + " " : ""; - const head = name === "Object" ? "" : name + " "; - return `//js(${head}{${body}})`; -} - -function inspectCustomType(record) { - const props = Object.keys(record) - .map((label) => { - const value = inspect(record[label]); - return isNaN(parseInt(label)) ? `${label}: ${value}` : value; - }) - .join(", "); - return props - ? `${record.constructor.name}(${props})` - : record.constructor.name; -} - -export function inspectList(list) { - return `[${list.toArray().map(inspect).join(", ")}]`; -} - -export function inspectBitArray(bits) { - return `<<${Array.from(bits.buffer).join(", ")}>>`; -} - -export function inspectUtfCodepoint(codepoint) { - return `//utfcodepoint(${String.fromCodePoint(codepoint.value)})`; -} - -export function base16_encode(bit_array) { - let result = ""; - for (const byte of bit_array.buffer) { - result += byte.toString(16).padStart(2, "0").toUpperCase(); - } - return result; -} - -export function base16_decode(string) { - const bytes = new Uint8Array(string.length / 2); - for (let i = 0; i < string.length; i += 2) { - const a = parseInt(string[i], 16); - const b = parseInt(string[i + 1], 16); - if (isNaN(a) || isNaN(b)) return new Error(Nil); - bytes[i / 2] = a * 16 + b; - } - return new Ok(new BitArray(bytes)); -} diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam deleted file mode 100644 index 66ecfaf..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@base.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam deleted file mode 100644 index 12fe362..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_array.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam deleted file mode 100644 index ea1ebc6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_builder.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam deleted file mode 100644 index b8a7f29..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bit_string.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam deleted file mode 100644 index 49ceff6..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bool.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam deleted file mode 100644 index 768e658..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@bytes_builder.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam deleted file mode 100644 index 91ac492..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dict.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam deleted file mode 100644 index 4945547..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@dynamic.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam deleted file mode 100644 index b0b6b33..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@float.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam deleted file mode 100644 index 1a0aca0..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@function.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam deleted file mode 100644 index a8594f4..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@int.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam deleted file mode 100644 index fdadf55..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@io.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam deleted file mode 100644 index e7997d2..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@iterator.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam deleted file mode 100644 index 2d8125f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@list.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam deleted file mode 100644 index ba9c9e2..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@map.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam deleted file mode 100644 index ed16040..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@option.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam deleted file mode 100644 index e5a5990..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@order.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam deleted file mode 100644 index 1db55b8..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@pair.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam deleted file mode 100644 index c4e81fc..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@queue.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam deleted file mode 100644 index d4daa3f..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@regex.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam deleted file mode 100644 index 13eeb10..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@result.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam deleted file mode 100644 index ad16119..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@set.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam deleted file mode 100644 index 6565dd5..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam deleted file mode 100644 index f968a74..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@string_builder.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam deleted file mode 100644 index 8c0d9ec..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam@uri.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app deleted file mode 100644 index 8231979..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, gleam_stdlib, [ - {vsn, "0.33.0"}, - {applications, []}, - {description, "A standard library for the Gleam programming language"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam b/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam deleted file mode 100644 index 4215626..0000000 Binary files a/aoc2023/build/dev/erlang/gleam_stdlib/ebin/gleam_stdlib.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl deleted file mode 100644 index b1135f2..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(decode_error, { - expected :: binary(), - found :: binary(), - path :: list(binary()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl deleted file mode 100644 index b0d08dc..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Iterator.hrl +++ /dev/null @@ -1 +0,0 @@ --record(iterator, {continuation :: fun(() -> gleam@iterator:action(any()))}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl deleted file mode 100644 index 1f61922..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@iterator_Next.hrl +++ /dev/null @@ -1 +0,0 @@ --record(next, {element :: any(), accumulator :: any()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl deleted file mode 100644 index 88ac25e..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@queue_Queue.hrl +++ /dev/null @@ -1 +0,0 @@ --record(queue, {in :: list(any()), out :: list(any())}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl deleted file mode 100644 index ad5511e..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_CompileError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(compile_error, {error :: binary(), byte_index :: integer()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl deleted file mode 100644 index 4216619..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Match.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(match, { - content :: binary(), - submatches :: list(gleam@option:option(binary())) -}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl deleted file mode 100644 index 0074603..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@regex_Options.hrl +++ /dev/null @@ -1 +0,0 @@ --record(options, {case_insensitive :: boolean(), multi_line :: boolean()}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl deleted file mode 100644 index 6e1e226..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@set_Set.hrl +++ /dev/null @@ -1 +0,0 @@ --record(set, {map :: gleam@dict:dict(any(), list(nil))}). diff --git a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl b/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl deleted file mode 100644 index 50150f4..0000000 --- a/aoc2023/build/dev/erlang/gleam_stdlib/include/gleam@uri_Uri.hrl +++ /dev/null @@ -1,9 +0,0 @@ --record(uri, { - scheme :: gleam@option:option(binary()), - userinfo :: gleam@option:option(binary()), - host :: gleam@option:option(binary()), - port :: gleam@option:option(integer()), - path :: binary(), - 'query' :: gleam@option:option(binary()), - fragment :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/dev/erlang/gleam_version b/aoc2023/build/dev/erlang/gleam_version deleted file mode 100644 index 048acbd..0000000 --- a/aoc2023/build/dev/erlang/gleam_version +++ /dev/null @@ -1 +0,0 @@ -0.33.0-rc2 \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache deleted file mode 100644 index d1a66cb..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta deleted file mode 100644 index 23d66d7..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl deleted file mode 100644 index 13ae369..0000000 --- a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint.erl +++ /dev/null @@ -1,513 +0,0 @@ --module(glint). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([with_config/2, with_pretty_help/2, without_pretty_help/1, with_name/2, new/0, command/1, description/2, flag/3, flag_tuple/2, flags/2, global_flag/3, global_flag_tuple/2, global_flags/2, default_pretty_help/0, add/3, help_flag/0, execute/2, run_and_handle/3, run/2, add_command_from_stub/2]). --export_type([config/0, pretty_help/0, glint/1, command/1, command_input/0, command_node/1, out/1, stub/1]). - --type config() :: {config, - gleam@option:option(pretty_help()), - gleam@option:option(binary())}. - --type pretty_help() :: {pretty_help, - gleam_community@colour:colour(), - gleam_community@colour:colour(), - gleam_community@colour:colour()}. - --opaque glint(JFP) :: {glint, - config(), - command_node(JFP), - gleam@dict:dict(binary(), glint@flag:flag())}. - --opaque command(JFQ) :: {command, - fun((command_input()) -> JFQ), - gleam@dict:dict(binary(), glint@flag:flag()), - binary()}. - --type command_input() :: {command_input, - list(binary()), - gleam@dict:dict(binary(), glint@flag:flag())}. - --type command_node(JFR) :: {command_node, - gleam@option:option(command(JFR)), - gleam@dict:dict(binary(), command_node(JFR))}. - --type out(JFS) :: {out, JFS} | {help, binary()}. - --type stub(JFT) :: {stub, - list(binary()), - fun((command_input()) -> JFT), - list({binary(), glint@flag:flag()}), - binary()}. - --spec with_config(glint(JFY), config()) -> glint(JFY). -with_config(Glint, Config) -> - erlang:setelement(2, Glint, Config). - --spec with_pretty_help(glint(JGB), pretty_help()) -> glint(JGB). -with_pretty_help(Glint, Pretty) -> - _pipe = erlang:setelement(2, erlang:element(2, Glint), {some, Pretty}), - with_config(Glint, _pipe). - --spec without_pretty_help(glint(JGE)) -> glint(JGE). -without_pretty_help(Glint) -> - _pipe = erlang:setelement(2, erlang:element(2, Glint), none), - with_config(Glint, _pipe). - --spec with_name(glint(JGH), binary()) -> glint(JGH). -with_name(Glint, Name) -> - _pipe = erlang:setelement(3, erlang:element(2, Glint), {some, Name}), - with_config(Glint, _pipe). - --spec empty_command() -> command_node(any()). -empty_command() -> - {command_node, none, gleam@map:new()}. - --spec new() -> glint(any()). -new() -> - {glint, {config, none, none}, empty_command(), gleam@map:new()}. - --spec do_add(command_node(JGR), list(binary()), command(JGR)) -> command_node(JGR). -do_add(Root, Path, Contents) -> - case Path of - [] -> - erlang:setelement(2, Root, {some, Contents}); - - [X | Xs] -> - erlang:setelement( - 3, - Root, - (gleam@map:update( - erlang:element(3, Root), - X, - fun(Node) -> _pipe = Node, - _pipe@1 = gleam@option:lazy_unwrap( - _pipe, - fun empty_command/0 - ), - do_add(_pipe@1, Xs, Contents) end - )) - ) - end. - --spec command(fun((command_input()) -> JHA)) -> command(JHA). -command(Runner) -> - {command, Runner, gleam@map:new(), <<""/utf8>>}. - --spec description(command(JHD), binary()) -> command(JHD). -description(Cmd, Description) -> - erlang:setelement(4, Cmd, Description). - --spec flag(command(JHG), binary(), glint@flag:flag_builder(any())) -> command(JHG). -flag(Cmd, Key, Flag) -> - erlang:setelement( - 3, - Cmd, - gleam@map:insert(erlang:element(3, Cmd), Key, glint@flag:build(Flag)) - ). - --spec flag_tuple(command(JHL), {binary(), glint@flag:flag_builder(any())}) -> command(JHL). -flag_tuple(Cmd, Tup) -> - flag(Cmd, erlang:element(1, Tup), erlang:element(2, Tup)). - --spec flags(command(JHQ), list({binary(), glint@flag:flag()})) -> command(JHQ). -flags(Cmd, Flags) -> - gleam@list:fold( - Flags, - Cmd, - fun(Cmd@1, _use1) -> - {Key, Flag} = _use1, - erlang:setelement( - 3, - Cmd@1, - gleam@map:insert(erlang:element(3, Cmd@1), Key, Flag) - ) - end - ). - --spec global_flag(glint(JHU), binary(), glint@flag:flag_builder(any())) -> glint(JHU). -global_flag(Glint, Key, Flag) -> - erlang:setelement( - 4, - Glint, - gleam@map:insert(erlang:element(4, Glint), Key, glint@flag:build(Flag)) - ). - --spec global_flag_tuple(glint(JHZ), {binary(), glint@flag:flag_builder(any())}) -> glint(JHZ). -global_flag_tuple(Glint, Tup) -> - global_flag(Glint, erlang:element(1, Tup), erlang:element(2, Tup)). - --spec global_flags(glint(JIE), list({binary(), glint@flag:flag()})) -> glint(JIE). -global_flags(Glint, Flags) -> - erlang:setelement( - 4, - Glint, - (gleam@list:fold( - Flags, - erlang:element(4, Glint), - fun(Acc, Tup) -> - gleam@map:insert( - Acc, - erlang:element(1, Tup), - erlang:element(2, Tup) - ) - end - )) - ). - --spec execute_root( - command_node(JIS), - gleam@dict:dict(binary(), glint@flag:flag()), - list(binary()), - list(binary()) -) -> {ok, out(JIS)} | {error, snag:snag()}. -execute_root(Cmd, Global_flags, Args, Flag_inputs) -> - _pipe@3 = case erlang:element(2, Cmd) of - {some, Contents} -> - gleam@result:'try'( - gleam@list:try_fold( - Flag_inputs, - gleam@map:merge(Global_flags, erlang:element(3, Contents)), - fun glint@flag:update_flags/2 - ), - fun(New_flags) -> _pipe = {command_input, Args, New_flags}, - _pipe@1 = (erlang:element(2, Contents))(_pipe), - _pipe@2 = {out, _pipe@1}, - {ok, _pipe@2} end - ); - - none -> - snag:error(<<"command not found"/utf8>>) - end, - snag:context(_pipe@3, <<"failed to run command"/utf8>>). - --spec default_pretty_help() -> pretty_help(). -default_pretty_help() -> - _assert_subject = gleam_community@colour:from_rgb255(182, 255, 234), - {ok, Usage_colour} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 404}) - end, - _assert_subject@1 = gleam_community@colour:from_rgb255(255, 175, 243), - {ok, Flags_colour} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 405}) - end, - _assert_subject@2 = gleam_community@colour:from_rgb255(252, 226, 174), - {ok, Subcommands_colour} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 406}) - end, - {pretty_help, Usage_colour, Flags_colour, Subcommands_colour}. - --spec is_not_empty(binary()) -> boolean(). -is_not_empty(S) -> - S /= <<""/utf8>>. - --spec sanitize_path(list(binary())) -> list(binary()). -sanitize_path(Path) -> - _pipe = Path, - _pipe@1 = gleam@list:map(_pipe, fun gleam@string:trim/1), - gleam@list:filter(_pipe@1, fun is_not_empty/1). - --spec add(glint(JGM), list(binary()), command(JGM)) -> glint(JGM). -add(Glint, Path, Contents) -> - erlang:setelement( - 3, - Glint, - begin - _pipe = Path, - _pipe@1 = sanitize_path(_pipe), - do_add(erlang:element(3, Glint), _pipe@1, Contents) - end - ). - --spec help_flag() -> binary(). -help_flag() -> - <<(<<"--"/utf8>>)/binary, "help"/utf8>>. - --spec wrap_with_space(binary()) -> binary(). -wrap_with_space(S) -> - case S of - <<""/utf8>> -> - <<" "/utf8>>; - - _ -> - <<<<" "/utf8, S/binary>>/binary, " "/utf8>> - end. - --spec subcommand_help(binary(), command_node(any())) -> binary(). -subcommand_help(Name, Cmd) -> - case erlang:element(2, Cmd) of - none -> - Name; - - {some, Contents} -> - <<<>/binary, - (erlang:element(4, Contents))/binary>> - end. - --spec subcommands_help(gleam@dict:dict(binary(), command_node(any()))) -> binary(). -subcommands_help(Cmds) -> - _pipe = Cmds, - _pipe@1 = gleam@map:map_values(_pipe, fun subcommand_help/2), - _pipe@2 = gleam@map:values(_pipe@1), - _pipe@3 = gleam@list:sort(_pipe@2, fun gleam@string:compare/2), - gleam@string:join(_pipe@3, <<"\n\t"/utf8>>). - --spec heading_style(binary(), gleam_community@colour:colour()) -> binary(). -heading_style(Heading, Colour) -> - _pipe = Heading, - _pipe@1 = gleam_community@ansi:bold(_pipe), - _pipe@2 = gleam_community@ansi:underline(_pipe@1), - _pipe@3 = gleam_community@ansi:italic(_pipe@2), - _pipe@4 = gleam_community@ansi:hex( - _pipe@3, - gleam_community@colour:to_rgb_hex(Colour) - ), - gleam_community@ansi:reset(_pipe@4). - --spec usage_help( - binary(), - gleam@dict:dict(binary(), glint@flag:flag()), - config() -) -> binary(). -usage_help(Cmd_name, Flags, Config) -> - App_name = gleam@option:unwrap( - erlang:element(3, Config), - <<"gleam run"/utf8>> - ), - Flags@1 = begin - _pipe = Flags, - _pipe@1 = gleam@map:to_list(_pipe), - _pipe@2 = gleam@list:map(_pipe@1, fun glint@flag:flag_type_help/1), - gleam@list:sort(_pipe@2, fun gleam@string:compare/2) - end, - Flag_sb = case Flags@1 of - [] -> - gleam@string_builder:new(); - - _ -> - _pipe@3 = Flags@1, - _pipe@4 = gleam@list:intersperse(_pipe@3, <<" "/utf8>>), - _pipe@5 = gleam@string_builder:from_strings(_pipe@4), - _pipe@6 = gleam@string_builder:prepend(_pipe@5, <<" [ "/utf8>>), - gleam@string_builder:append(_pipe@6, <<" ]"/utf8>>) - end, - _pipe@7 = [App_name, wrap_with_space(Cmd_name), <<"[ ARGS ]"/utf8>>], - _pipe@8 = gleam@string_builder:from_strings(_pipe@7), - _pipe@9 = gleam@string_builder:append_builder(_pipe@8, Flag_sb), - _pipe@12 = gleam@string_builder:prepend( - _pipe@9, - <<(begin - _pipe@10 = erlang:element(2, Config), - _pipe@11 = gleam@option:map( - _pipe@10, - fun(Styling) -> - heading_style( - <<"USAGE:"/utf8>>, - erlang:element(2, Styling) - ) - end - ), - gleam@option:unwrap(_pipe@11, <<"USAGE:"/utf8>>) - end)/binary, - "\n\t"/utf8>> - ), - gleam@string_builder:to_string(_pipe@12). - --spec cmd_help( - list(binary()), - command_node(any()), - config(), - gleam@dict:dict(binary(), glint@flag:flag()) -) -> binary(). -cmd_help(Path, Cmd, Config, Global_flags) -> - Name = begin - _pipe = Path, - _pipe@1 = gleam@list:reverse(_pipe), - gleam@string:join(_pipe@1, <<" "/utf8>>) - end, - Flags = begin - _pipe@2 = gleam@option:map( - erlang:element(2, Cmd), - fun(Contents) -> erlang:element(3, Contents) end - ), - _pipe@3 = gleam@option:lazy_unwrap(_pipe@2, fun gleam@map:new/0), - gleam@map:merge(Global_flags, _pipe@3) - end, - Flags_help_body = <<<<(begin - _pipe@4 = erlang:element(2, Config), - _pipe@5 = gleam@option:map( - _pipe@4, - fun(P) -> - heading_style(<<"FLAGS:"/utf8>>, erlang:element(3, P)) - end - ), - gleam@option:unwrap(_pipe@5, <<"FLAGS:"/utf8>>) - end)/binary, - "\n\t"/utf8>>/binary, - (gleam@string:join( - gleam@list:sort( - [<<"--help\t\t\tPrint help information"/utf8>> | - glint@flag:flags_help(Flags)], - fun gleam@string:compare/2 - ), - <<"\n\t"/utf8>> - ))/binary>>, - Usage = usage_help(Name, Flags, Config), - Description = begin - _pipe@6 = erlang:element(2, Cmd), - _pipe@7 = gleam@option:map( - _pipe@6, - fun(Contents@1) -> erlang:element(4, Contents@1) end - ), - gleam@option:unwrap(_pipe@7, <<""/utf8>>) - end, - Header_items = begin - _pipe@8 = [Name, Description], - _pipe@9 = gleam@list:filter(_pipe@8, fun is_not_empty/1), - gleam@string:join(_pipe@9, <<"\n"/utf8>>) - end, - Subcommands = case subcommands_help(erlang:element(3, Cmd)) of - <<""/utf8>> -> - <<""/utf8>>; - - Subcommands_help_body -> - <<<<(begin - _pipe@10 = erlang:element(2, Config), - _pipe@11 = gleam@option:map( - _pipe@10, - fun(P@1) -> - heading_style( - <<"SUBCOMMANDS:"/utf8>>, - erlang:element(4, P@1) - ) - end - ), - gleam@option:unwrap(_pipe@11, <<"SUBCOMMANDS:"/utf8>>) - end)/binary, - "\n\t"/utf8>>/binary, - Subcommands_help_body/binary>> - end, - _pipe@12 = [Header_items, Usage, Flags_help_body, Subcommands], - _pipe@13 = gleam@list:filter(_pipe@12, fun is_not_empty/1), - gleam@string:join(_pipe@13, <<"\n\n"/utf8>>). - --spec do_execute( - command_node(JIM), - config(), - gleam@dict:dict(binary(), glint@flag:flag()), - list(binary()), - list(binary()), - boolean(), - list(binary()) -) -> {ok, out(JIM)} | {error, snag:snag()}. -do_execute(Cmd, Config, Global_flags, Args, Flags, Help, Command_path) -> - case Args of - [] when Help -> - _pipe = Command_path, - _pipe@1 = cmd_help(_pipe, Cmd, Config, Global_flags), - _pipe@2 = {help, _pipe@1}, - {ok, _pipe@2}; - - [] -> - execute_root(Cmd, Global_flags, [], Flags); - - [Arg | Rest] -> - case gleam@map:get(erlang:element(3, Cmd), Arg) of - {ok, Cmd@1} -> - do_execute( - Cmd@1, - Config, - Global_flags, - Rest, - Flags, - Help, - [Arg | Command_path] - ); - - _ when Help -> - _pipe@3 = Command_path, - _pipe@4 = cmd_help(_pipe@3, Cmd, Config, Global_flags), - _pipe@5 = {help, _pipe@4}, - {ok, _pipe@5}; - - _ -> - execute_root(Cmd, Global_flags, Args, Flags) - end - end. - --spec execute(glint(JII), list(binary())) -> {ok, out(JII)} | - {error, snag:snag()}. -execute(Glint, Args) -> - Help_flag = help_flag(), - {Help, Args@2} = case gleam@list:pop(Args, fun(S) -> S =:= Help_flag end) of - {ok, {_, Args@1}} -> - {true, Args@1}; - - _ -> - {false, Args} - end, - {Flags, Args@3} = gleam@list:partition( - Args@2, - fun(_capture) -> gleam@string:starts_with(_capture, <<"--"/utf8>>) end - ), - do_execute( - erlang:element(3, Glint), - erlang:element(2, Glint), - erlang:element(4, Glint), - Args@3, - Flags, - Help, - [] - ). - --spec run_and_handle(glint(JJA), list(binary()), fun((JJA) -> any())) -> nil. -run_and_handle(Glint, Args, Handle) -> - case execute(Glint, Args) of - {error, Err} -> - _pipe = Err, - _pipe@1 = snag:pretty_print(_pipe), - gleam@io:println(_pipe@1); - - {ok, {help, Help}} -> - gleam@io:println(Help); - - {ok, {out, Out}} -> - Handle(Out), - nil - end. - --spec run(glint(any()), list(binary())) -> nil. -run(Glint, Args) -> - run_and_handle(Glint, Args, gleam@function:constant(nil)). - --spec add_command_from_stub(glint(JJN), stub(JJN)) -> glint(JJN). -add_command_from_stub(Glint, Stub) -> - add( - Glint, - erlang:element(2, Stub), - begin - _pipe = command(erlang:element(3, Stub)), - _pipe@1 = flags(_pipe, erlang:element(4, Stub)), - description(_pipe@1, erlang:element(5, Stub)) - end - ). diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache deleted file mode 100644 index 90aed37..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta deleted file mode 100644 index be367e3..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl deleted file mode 100644 index 634b37b..0000000 --- a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag.erl +++ /dev/null @@ -1,523 +0,0 @@ --module(glint@flag). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([string/0, string_list/0, build/1, constraint/2, description/2, default/2, build_map/1, int/0, int_list/0, float/0, float_list/0, bool/0, flag_type_help/1, flags_help/1, update_flags/2, get_int_value/1, get_int/2, get_ints_value/1, get_ints/2, get_bool_value/1, get_bool/2, get_string_value/1, get_string/2, get_strings_value/1, get_strings/2, get_float_value/1, get_float/2, get_floats_value/1, get_floats/2]). --export_type([value/0, flag_builder/1, internal/1, flag/0]). - --type value() :: {b, internal(boolean())} | - {i, internal(integer())} | - {li, internal(list(integer()))} | - {f, internal(float())} | - {lf, internal(list(float()))} | - {s, internal(binary())} | - {ls, internal(list(binary()))}. - --opaque flag_builder(IRX) :: {flag_builder, - binary(), - fun((binary()) -> {ok, IRX} | {error, snag:snag()}), - fun((internal(IRX)) -> value()), - gleam@option:option(IRX)}. - --opaque internal(IRY) :: {internal, - gleam@option:option(IRY), - fun((binary()) -> {ok, IRY} | {error, snag:snag()})}. - --type flag() :: {flag, value(), binary()}. - --spec new( - fun((internal(ISP)) -> value()), - fun((binary()) -> {ok, ISP} | {error, snag:snag()}) -) -> flag_builder(ISP). -new(Valuer, P) -> - {flag_builder, <<""/utf8>>, P, Valuer, none}. - --spec string() -> flag_builder(binary()). -string() -> - new(fun(Field@0) -> {s, Field@0} end, fun(S) -> {ok, S} end). - --spec string_list() -> flag_builder(list(binary())). -string_list() -> - new(fun(Field@0) -> {ls, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - {ok, _pipe@1} end). - --spec build(flag_builder(any())) -> flag(). -build(Fb) -> - {flag, - (erlang:element(4, Fb))( - {internal, erlang:element(5, Fb), erlang:element(3, Fb)} - ), - erlang:element(2, Fb)}. - --spec attempt( - {ok, ITG} | {error, ITH}, - fun((ITG) -> {ok, any()} | {error, ITH}) -) -> {ok, ITG} | {error, ITH}. -attempt(Val, F) -> - gleam@result:'try'(Val, fun(A) -> gleam@result:replace(F(A), A) end). - --spec wrap_with_constraint( - fun((binary()) -> {ok, ITA} | {error, snag:snag()}), - fun((ITA) -> {ok, nil} | {error, snag:snag()}) -) -> fun((binary()) -> {ok, ITA} | {error, snag:snag()}). -wrap_with_constraint(P, Constraint) -> - fun(Input) -> attempt(P(Input), Constraint) end. - --spec constraint( - flag_builder(ISW), - fun((ISW) -> {ok, nil} | {error, snag:snag()}) -) -> flag_builder(ISW). -constraint(Builder, Constraint) -> - erlang:setelement( - 3, - Builder, - wrap_with_constraint(erlang:element(3, Builder), Constraint) - ). - --spec description(flag_builder(ITP), binary()) -> flag_builder(ITP). -description(Builder, Description) -> - erlang:setelement(2, Builder, Description). - --spec default(flag_builder(ITS), ITS) -> flag_builder(ITS). -default(Builder, Default) -> - erlang:setelement(5, Builder, {some, Default}). - --spec build_map(list({binary(), flag()})) -> gleam@dict:dict(binary(), flag()). -build_map(Flags) -> - gleam@map:from_list(Flags). - --spec access_type_error(binary()) -> {ok, any()} | {error, snag:snag()}. -access_type_error(Flag_type) -> - snag:error(<<"cannot access flag as "/utf8, Flag_type/binary>>). - --spec flag_not_provided_error() -> {ok, any()} | {error, snag:snag()}. -flag_not_provided_error() -> - snag:error(<<"no value provided"/utf8>>). - --spec construct_value(binary(), internal(IUC), fun((internal(IUC)) -> value())) -> {ok, - value()} | - {error, snag:snag()}. -construct_value(Input, Internal, Constructor) -> - gleam@result:map( - (erlang:element(3, Internal))(Input), - fun(Val) -> Constructor(erlang:setelement(2, Internal, {some, Val})) end - ). - --spec compute_flag(binary(), value()) -> {ok, value()} | {error, snag:snag()}. -compute_flag(Input, Current) -> - _pipe = Input, - _pipe@1 = case Current of - {i, Internal} -> - fun(_capture) -> - construct_value( - _capture, - Internal, - fun(Field@0) -> {i, Field@0} end - ) - end; - - {li, Internal@1} -> - fun(_capture@1) -> - construct_value( - _capture@1, - Internal@1, - fun(Field@0) -> {li, Field@0} end - ) - end; - - {f, Internal@2} -> - fun(_capture@2) -> - construct_value( - _capture@2, - Internal@2, - fun(Field@0) -> {f, Field@0} end - ) - end; - - {lf, Internal@3} -> - fun(_capture@3) -> - construct_value( - _capture@3, - Internal@3, - fun(Field@0) -> {lf, Field@0} end - ) - end; - - {s, Internal@4} -> - fun(_capture@4) -> - construct_value( - _capture@4, - Internal@4, - fun(Field@0) -> {s, Field@0} end - ) - end; - - {ls, Internal@5} -> - fun(_capture@5) -> - construct_value( - _capture@5, - Internal@5, - fun(Field@0) -> {ls, Field@0} end - ) - end; - - {b, Internal@6} -> - fun(_capture@6) -> - construct_value( - _capture@6, - Internal@6, - fun(Field@0) -> {b, Field@0} end - ) - end - end(_pipe), - snag:context(_pipe@1, <<"failed to compute value for flag"/utf8>>). - --spec layer_invalid_flag(snag:snag(), binary()) -> snag:snag(). -layer_invalid_flag(Err, Flag) -> - snag:layer(Err, <<<<"invalid flag '"/utf8, Flag/binary>>/binary, "'"/utf8>>). - --spec no_value_flag_err(binary()) -> snag:snag(). -no_value_flag_err(Flag_input) -> - _pipe = (<<<<"flag '"/utf8, Flag_input/binary>>/binary, - "' has no assigned value"/utf8>>), - _pipe@1 = snag:new(_pipe), - layer_invalid_flag(_pipe@1, Flag_input). - --spec undefined_flag_err(binary()) -> snag:snag(). -undefined_flag_err(Key) -> - _pipe = <<"flag provided but not defined"/utf8>>, - _pipe@1 = snag:new(_pipe), - layer_invalid_flag(_pipe@1, Key). - --spec cannot_parse(binary(), binary()) -> snag:snag(). -cannot_parse(Value, Kind) -> - _pipe = (<<<<<<"cannot parse value '"/utf8, Value/binary>>/binary, - "' as "/utf8>>/binary, - Kind/binary>>), - snag:new(_pipe). - --spec int() -> flag_builder(integer()). -int() -> - new(fun(Field@0) -> {i, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@int:parse(_pipe), - gleam@result:replace_error( - _pipe@1, - cannot_parse(Input, <<"int"/utf8>>) - ) end). - --spec int_list() -> flag_builder(list(integer())). -int_list() -> - new(fun(Field@0) -> {li, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@int:parse/1), - gleam@result:replace_error( - _pipe@2, - cannot_parse(Input, <<"int list"/utf8>>) - ) end). - --spec float() -> flag_builder(float()). -float() -> - new(fun(Field@0) -> {f, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@float:parse(_pipe), - gleam@result:replace_error( - _pipe@1, - cannot_parse(Input, <<"float"/utf8>>) - ) end). - --spec float_list() -> flag_builder(list(float())). -float_list() -> - new(fun(Field@0) -> {lf, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@float:parse/1), - gleam@result:replace_error( - _pipe@2, - cannot_parse(Input, <<"float list"/utf8>>) - ) end). - --spec bool() -> flag_builder(boolean()). -bool() -> - new( - fun(Field@0) -> {b, Field@0} end, - fun(Input) -> case gleam@string:lowercase(Input) of - <<"true"/utf8>> -> - {ok, true}; - - <<"t"/utf8>> -> - {ok, true}; - - <<"false"/utf8>> -> - {ok, false}; - - <<"f"/utf8>> -> - {ok, false}; - - _ -> - {error, cannot_parse(Input, <<"bool"/utf8>>)} - end end - ). - --spec flag_type_help({binary(), flag()}) -> binary(). -flag_type_help(Flag) -> - {Name, Contents} = Flag, - Kind = case erlang:element(2, Contents) of - {i, _} -> - <<"INT"/utf8>>; - - {b, _} -> - <<"BOOL"/utf8>>; - - {f, _} -> - <<"FLOAT"/utf8>>; - - {lf, _} -> - <<"FLOAT_LIST"/utf8>>; - - {li, _} -> - <<"INT_LIST"/utf8>>; - - {ls, _} -> - <<"STRING_LIST"/utf8>>; - - {s, _} -> - <<"STRING"/utf8>> - end, - <<<<<<<<<<"--"/utf8, Name/binary>>/binary, "="/utf8>>/binary, "<"/utf8>>/binary, - Kind/binary>>/binary, - ">"/utf8>>. - --spec flag_help({binary(), flag()}) -> binary(). -flag_help(Flag) -> - <<<<(flag_type_help(Flag))/binary, "\t\t"/utf8>>/binary, - (erlang:element(3, (erlang:element(2, Flag))))/binary>>. - --spec flags_help(gleam@dict:dict(binary(), flag())) -> list(binary()). -flags_help(Flags) -> - _pipe = Flags, - _pipe@1 = gleam@map:to_list(_pipe), - gleam@list:map(_pipe@1, fun flag_help/1). - --spec access(gleam@dict:dict(binary(), flag()), binary()) -> {ok, flag()} | - {error, snag:snag()}. -access(Flags, Name) -> - _pipe = gleam@map:get(Flags, Name), - gleam@result:replace_error(_pipe, undefined_flag_err(Name)). - --spec update_flag_value(gleam@dict:dict(binary(), flag()), {binary(), binary()}) -> {ok, - gleam@dict:dict(binary(), flag())} | - {error, snag:snag()}. -update_flag_value(Flags, Data) -> - {Key, Input} = Data, - gleam@result:'try'( - access(Flags, Key), - fun(Contents) -> - gleam@result:map( - begin - _pipe = compute_flag(Input, erlang:element(2, Contents)), - gleam@result:map_error( - _pipe, - fun(_capture) -> layer_invalid_flag(_capture, Key) end - ) - end, - fun(Value) -> - gleam@map:insert( - Flags, - Key, - erlang:setelement(2, Contents, Value) - ) - end - ) - end - ). - --spec attempt_toggle_flag(gleam@dict:dict(binary(), flag()), binary()) -> {ok, - gleam@dict:dict(binary(), flag())} | - {error, snag:snag()}. -attempt_toggle_flag(Flags, Key) -> - gleam@result:'try'( - access(Flags, Key), - fun(Contents) -> case erlang:element(2, Contents) of - {b, {internal, none, _} = Internal} -> - _pipe = erlang:setelement(2, Internal, {some, true}), - _pipe@1 = {b, _pipe}, - _pipe@2 = (fun(Val) -> - erlang:setelement(2, Contents, Val) - end)(_pipe@1), - _pipe@3 = gleam@map:insert(Flags, Key, _pipe@2), - {ok, _pipe@3}; - - {b, {internal, {some, Val@1}, _} = Internal@1} -> - _pipe@4 = erlang:setelement( - 2, - Internal@1, - {some, not Val@1} - ), - _pipe@5 = {b, _pipe@4}, - _pipe@6 = (fun(Val@2) -> - erlang:setelement(2, Contents, Val@2) - end)(_pipe@5), - _pipe@7 = gleam@map:insert(Flags, Key, _pipe@6), - {ok, _pipe@7}; - - _ -> - {error, no_value_flag_err(Key)} - end end - ). - --spec update_flags(gleam@dict:dict(binary(), flag()), binary()) -> {ok, - gleam@dict:dict(binary(), flag())} | - {error, snag:snag()}. -update_flags(Flags, Flag_input) -> - Flag_input@1 = gleam@string:drop_left( - Flag_input, - gleam@string:length(<<"--"/utf8>>) - ), - case gleam@string:split_once(Flag_input@1, <<"="/utf8>>) of - {ok, Data} -> - update_flag_value(Flags, Data); - - {error, _} -> - attempt_toggle_flag(Flags, Flag_input@1) - end. - --spec get_value( - gleam@dict:dict(binary(), flag()), - binary(), - fun((flag()) -> {ok, IUK} | {error, snag:snag()}) -) -> {ok, IUK} | {error, snag:snag()}. -get_value(Flags, Key, Kind) -> - _pipe = access(Flags, Key), - _pipe@1 = gleam@result:'try'(_pipe, Kind), - snag:context( - _pipe@1, - <<<<"failed to retrieve value for flag '"/utf8, Key/binary>>/binary, - "'"/utf8>> - ). - --spec get_int_value(flag()) -> {ok, integer()} | {error, snag:snag()}. -get_int_value(Flag) -> - case erlang:element(2, Flag) of - {i, {internal, {some, Val}, _}} -> - {ok, Val}; - - {i, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"int"/utf8>>) - end. - --spec get_int(gleam@dict:dict(binary(), flag()), binary()) -> {ok, integer()} | - {error, snag:snag()}. -get_int(Flags, Name) -> - get_value(Flags, Name, fun get_int_value/1). - --spec get_ints_value(flag()) -> {ok, list(integer())} | {error, snag:snag()}. -get_ints_value(Flag) -> - case erlang:element(2, Flag) of - {li, {internal, {some, Val}, _}} -> - {ok, Val}; - - {li, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"int list"/utf8>>) - end. - --spec get_ints(gleam@dict:dict(binary(), flag()), binary()) -> {ok, - list(integer())} | - {error, snag:snag()}. -get_ints(Flags, Name) -> - get_value(Flags, Name, fun get_ints_value/1). - --spec get_bool_value(flag()) -> {ok, boolean()} | {error, snag:snag()}. -get_bool_value(Flag) -> - case erlang:element(2, Flag) of - {b, {internal, {some, Val}, _}} -> - {ok, Val}; - - {b, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"bool"/utf8>>) - end. - --spec get_bool(gleam@dict:dict(binary(), flag()), binary()) -> {ok, boolean()} | - {error, snag:snag()}. -get_bool(Flags, Name) -> - get_value(Flags, Name, fun get_bool_value/1). - --spec get_string_value(flag()) -> {ok, binary()} | {error, snag:snag()}. -get_string_value(Flag) -> - case erlang:element(2, Flag) of - {s, {internal, {some, Val}, _}} -> - {ok, Val}; - - {s, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"string"/utf8>>) - end. - --spec get_string(gleam@dict:dict(binary(), flag()), binary()) -> {ok, binary()} | - {error, snag:snag()}. -get_string(Flags, Name) -> - get_value(Flags, Name, fun get_string_value/1). - --spec get_strings_value(flag()) -> {ok, list(binary())} | {error, snag:snag()}. -get_strings_value(Flag) -> - case erlang:element(2, Flag) of - {ls, {internal, {some, Val}, _}} -> - {ok, Val}; - - {ls, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"string list"/utf8>>) - end. - --spec get_strings(gleam@dict:dict(binary(), flag()), binary()) -> {ok, - list(binary())} | - {error, snag:snag()}. -get_strings(Flags, Name) -> - get_value(Flags, Name, fun get_strings_value/1). - --spec get_float_value(flag()) -> {ok, float()} | {error, snag:snag()}. -get_float_value(Flag) -> - case erlang:element(2, Flag) of - {f, {internal, {some, Val}, _}} -> - {ok, Val}; - - {f, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"float"/utf8>>) - end. - --spec get_float(gleam@dict:dict(binary(), flag()), binary()) -> {ok, float()} | - {error, snag:snag()}. -get_float(Flags, Name) -> - get_value(Flags, Name, fun get_float_value/1). - --spec get_floats_value(flag()) -> {ok, list(float())} | {error, snag:snag()}. -get_floats_value(Flag) -> - case erlang:element(2, Flag) of - {lf, {internal, {some, Val}, _}} -> - {ok, Val}; - - {lf, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"float list"/utf8>>) - end. - --spec get_floats(gleam@dict:dict(binary(), flag()), binary()) -> {ok, - list(float())} | - {error, snag:snag()}. -get_floats(Flags, Name) -> - get_value(Flags, Name, fun get_floats_value/1). diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache deleted file mode 100644 index 6881dda..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta deleted file mode 100644 index 355567d..0000000 Binary files a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl b/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl deleted file mode 100644 index 52eb319..0000000 --- a/aoc2023/build/dev/erlang/glint/_gleam_artefacts/glint@flag@constraint.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(glint@flag@constraint). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([one_of/1, none_of/1, each/1]). - --spec one_of(list(IQG)) -> fun((IQG) -> {ok, nil} | {error, snag:snag()}). -one_of(Allowed) -> - Allowed_set = gleam@set:from_list(Allowed), - fun(Val) -> case gleam@set:contains(Allowed_set, Val) of - true -> - {ok, nil}; - - false -> - snag:error( - <<<<<<"invalid value '"/utf8, - (gleam@string:inspect(Val))/binary>>/binary, - "', must be one of: ["/utf8>>/binary, - ((<<(begin - _pipe = Allowed, - _pipe@1 = gleam@list:map( - _pipe, - fun(A) -> - <<<<"'"/utf8, - (gleam@string:inspect(A))/binary>>/binary, - "'"/utf8>> - end - ), - gleam@string:join(_pipe@1, <<", "/utf8>>) - end)/binary, - "]"/utf8>>))/binary>> - ) - end end. - --spec none_of(list(IQJ)) -> fun((IQJ) -> {ok, nil} | {error, snag:snag()}). -none_of(Disallowed) -> - Disallowed_set = gleam@set:from_list(Disallowed), - fun(Val) -> case gleam@set:contains(Disallowed_set, Val) of - false -> - {ok, nil}; - - true -> - snag:error( - <<<<<<"invalid value '"/utf8, - (gleam@string:inspect(Val))/binary>>/binary, - "', must not be one of: ["/utf8>>/binary, - (((<<(begin - _pipe = Disallowed, - _pipe@1 = gleam@list:map( - _pipe, - fun(A) -> - <<<<"'"/utf8, - (gleam@string:inspect(A))/binary>>/binary, - "'"/utf8>> - end - ), - gleam@string:join(_pipe@1, <<", "/utf8>>) - end)/binary, - "]"/utf8>>)))/binary>> - ) - end end. - --spec each(fun((IQM) -> {ok, nil} | {error, snag:snag()})) -> fun((list(IQM)) -> {ok, - nil} | - {error, snag:snag()}). -each(Constraint) -> - fun(L) -> _pipe = L, - _pipe@1 = gleam@list:try_map(_pipe, Constraint), - gleam@result:replace(_pipe@1, nil) end. diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint.app b/aoc2023/build/dev/erlang/glint/ebin/glint.app deleted file mode 100644 index 41fba79..0000000 --- a/aoc2023/build/dev/erlang/glint/ebin/glint.app +++ /dev/null @@ -1,10 +0,0 @@ -{application, glint, [ - {vsn, "0.13.0"}, - {applications, [gleam_community_ansi, - gleam_community_colour, - gleam_stdlib, - snag]}, - {description, "Gleam command line argument parsing with basic flag support."}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint.beam b/aoc2023/build/dev/erlang/glint/ebin/glint.beam deleted file mode 100644 index 39b9ce7..0000000 Binary files a/aoc2023/build/dev/erlang/glint/ebin/glint.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam b/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam deleted file mode 100644 index 14b7dec..0000000 Binary files a/aoc2023/build/dev/erlang/glint/ebin/glint@flag.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam b/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam deleted file mode 100644 index 1d36d10..0000000 Binary files a/aoc2023/build/dev/erlang/glint/ebin/glint@flag@constraint.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl deleted file mode 100644 index 645cb12..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint@flag_Flag.hrl +++ /dev/null @@ -1 +0,0 @@ --record(flag, {value :: glint@flag:value(), description :: binary()}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl deleted file mode 100644 index b5e21a2..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint@flag_FlagBuilder.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(flag_builder, { - desc :: binary(), - parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}), - value :: fun((glint@flag:internal(any())) -> glint@flag:value()), - default :: gleam@option:option(any()) -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl b/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl deleted file mode 100644 index 281bbd0..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint@flag_Internal.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(internal, { - value :: gleam@option:option(any()), - parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}) -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl deleted file mode 100644 index 2761365..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_Command.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(command, { - do :: fun((glint:command_input()) -> any()), - flags :: gleam@dict:dict(binary(), glint@flag:flag()), - description :: binary() -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl b/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl deleted file mode 100644 index e0e1a81..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_CommandInput.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(command_input, { - args :: list(binary()), - flags :: gleam@dict:dict(binary(), glint@flag:flag()) -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl deleted file mode 100644 index 70cf645..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_Config.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(config, { - pretty_help :: gleam@option:option(glint:pretty_help()), - name :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl deleted file mode 100644 index f14c34c..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_Glint.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(glint, { - config :: glint:config(), - cmd :: glint:command_node(any()), - global_flags :: gleam@dict:dict(binary(), glint@flag:flag()) -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl b/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl deleted file mode 100644 index 79bd887..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_PrettyHelp.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(pretty_help, { - usage :: gleam_community@colour:colour(), - flags :: gleam_community@colour:colour(), - subcommands :: gleam_community@colour:colour() -}). diff --git a/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl b/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl deleted file mode 100644 index 5aa5d83..0000000 --- a/aoc2023/build/dev/erlang/glint/include/glint_Stub.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(stub, { - path :: list(binary()), - run :: fun((glint:command_input()) -> any()), - flags :: list({binary(), glint@flag:flag()}), - description :: binary() -}). diff --git a/aoc2023/build/dev/erlang/pqueue/LICENSE b/aoc2023/build/dev/erlang/pqueue/LICENSE deleted file mode 100644 index 5697803..0000000 --- a/aoc2023/build/dev/erlang/pqueue/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2011-2023 Michael Truog - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/aoc2023/build/dev/erlang/pqueue/README.markdown b/aoc2023/build/dev/erlang/pqueue/README.markdown deleted file mode 100644 index 77aaf1c..0000000 --- a/aoc2023/build/dev/erlang/pqueue/README.markdown +++ /dev/null @@ -1,31 +0,0 @@ -Erlang Priority Queue Implementation -==================================== - -The priority queue implementations implement a subset of the stdlib Erlang queue interface as seen in the implementation used by both [Riak and RabbitMQ](https://github.com/basho/riak_core/blob/master/src/riak_core_priority_queue.erl). - -The implementations: - -* `priority_queue` (fastest for any priorities when only using a single priority at a time) -* `pqueue` (fastest for 41 priorities, -20 (high) to 20 (low), when using 2 or more priorities at the same time) -* `pqueue2` (slower heap implementation) -* `pqueue3` (faster than `pqueue2` and `priority_queue` when using 64 or more priorities at the same time) -* `pqueue4` (slightly slower than `pqueue` but fastest for allowing 257 priorities, -128 (high) to 128 (low), i.e., fastest when using 42 or more priorities at the same time) - -[The latest results are here](http://okeuday.livejournal.com/19539.html), with [the benchmark here](http://github.com/okeuday/erlbench). - -Author ------- - -Michael Truog (mjtruog at protonmail dot com) - -Thanks ------- - -* Jesper Louis andersen (PropEr integration and testing) -* Ulf Wiger (suggestions and insight) - -License -------- - -MIT License - diff --git a/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag b/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag deleted file mode 100644 index fe3f9f8..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/_build/prod/lib/.rebar3/rebar_compiler_erl/source.dag and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/doc/edoc-info b/aoc2023/build/dev/erlang/pqueue/doc/edoc-info deleted file mode 100644 index 5e5a8d3..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/edoc-info +++ /dev/null @@ -1,3 +0,0 @@ -%% encoding: UTF-8 -{application,pqueue}. -{modules,[pqueue,pqueue2,pqueue3,pqueue4]}. diff --git a/aoc2023/build/dev/erlang/pqueue/doc/erlang.png b/aoc2023/build/dev/erlang/pqueue/doc/erlang.png deleted file mode 100644 index 987a618..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/doc/erlang.png and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/doc/index.html b/aoc2023/build/dev/erlang/pqueue/doc/index.html deleted file mode 100644 index d55b5e6..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - -The pqueue application - - - - - - -<h2>This page uses frames</h2> -<p>Your browser does not accept frames. -<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead. -</p> - - - \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html b/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html deleted file mode 100644 index 5a87cc4..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/modules-frame.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -The pqueue application - - - -

Modules

- - - - -
pqueue
pqueue2
pqueue3
pqueue4
- - \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html b/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html deleted file mode 100644 index e2f8906..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/overview-summary.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - -The pqueue application - - - - -

The pqueue application

- -
- -

Generated by EDoc

- - diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html deleted file mode 100644 index 40b05ac..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/pqueue.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - -Module pqueue - - - - -
- -

Module pqueue

- -

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-20 (high) to 20 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:34 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-20 (high) to 20 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. This implementation was created to - avoid the slowness within the priority queue used by both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue()

-

pqueue() = {integer(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}} | {empty, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}}

- - -

Function Index

- - - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
join/2 -

Join two priority queues.

- O(N).
len/1 -

Determine the length of a priority queue.

- O(N).
new/0 -

Create a new priority queue.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
test/0 -

Regression test.

.
to_list/1 -

Convert the priority queue to a list.

- O(N).
- -

Function Details

- -

in/2

-
-

in(X::term(), Q::pqueue()) -> pqueue()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(X::term(), P::integer(), Q::pqueue()) -> pqueue()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(X1::pqueue()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

join/2

-
-

join(X1::pqueue(), X2::pqueue()) -> pqueue()

-

-

Join two priority queues.

- O(N)

- -

len/1

-
-

len(X1::pqueue()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(N)

- -

new/0

-
-

new() -> pqueue()

-

-

Create a new priority queue.

- O(1)

- -

out/1

-
-

out(Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue()) -> {{value, term(), integer()}, pqueue()} | {empty, pqueue()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

test/0

-
-

test() -> any()

-

-

Regression test.

-

- -

to_list/1

-
-

to_list(X1::pqueue()) -> [term()]

-

-

Convert the priority queue to a list.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html deleted file mode 100644 index 2942b84..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/pqueue2.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -Module pqueue2 - - - - -
- -

Module pqueue2

- -

Skew Heap Priority Queue.

- Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority - queue implementation. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:32 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Skew Heap Priority Queue.

- Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority - queue implementation. Unfortunately, testing has shown this solution to - be more than 2 times slower than pqueue. -

Data Types

- -

pqueue2()

-

pqueue2() = empty | {integer(), pqueue2(), pqueue2(), element, term()} | {integer(), pqueue2(), pqueue2(), queue, queue:queue()}

- - -

Function Index

- - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

.
in/3 -

Append an item to the tail of a specific priority queue.

.
is_empty/1 -

Check if the priority queue is empty.

.
is_queue/1 -

Check if the priority queue type is as expected.

.
len/1 -

Determine the length of a priority queue.

.
new/0 -

Create a new priority queue.

.
out/1 -

Take an item from the head of the priority queue.

.
out/2 -

Take an item of a specific priority from the head of the queue.

.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
test/0 -

Regression test.

.
to_list/1 -

Convert the priority queue to a list.

.
- -

Function Details

- -

in/2

-
-

in(Value::term(), H::pqueue2()) -> pqueue2()

-

-

Append an item to the tail of the 0 priority queue.

-

- -

in/3

-
-

in(Value::term(), P::integer(), H::pqueue2()) -> pqueue2()

-

-

Append an item to the tail of a specific priority queue.

-

- -

is_empty/1

-
-

is_empty(X1::pqueue2()) -> true | false

-

-

Check if the priority queue is empty.

-

- -

is_queue/1

-
-

is_queue(X1::pqueue2()) -> true | false

-

-

Check if the priority queue type is as expected.

-

- -

len/1

-
-

len(H::pqueue2()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

-

- -

new/0

-
-

new() -> pqueue2()

-

-

Create a new priority queue.

-

- -

out/1

-
-

out(X1::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item from the head of the priority queue.

-

- -

out/2

-
-

out(P::integer(), H::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item of a specific priority from the head of the queue.

-

- -

pout/1

-
-

pout(X1::pqueue2()) -> {{value, term(), integer()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value.

- -

test/0

-
-

test() -> any()

-

-

Regression test.

-

- -

to_list/1

-
-

to_list(H::pqueue2()) -> [term()]

-

-

Convert the priority queue to a list.

-

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html deleted file mode 100644 index 35f1a7b..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/pqueue3.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -Module pqueue3 - - - - -
- -

Module pqueue3

- -

A Large Priority Queue.

- This priority queue implementation depends on layered tuples, so that tuple - access times can be exploited for quick in/out priority queue operations - when using 64 or more total priorities. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:32 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

A Large Priority Queue.

- This priority queue implementation depends on layered tuples, so that tuple - access times can be exploited for quick in/out priority queue operations - when using 64 or more total priorities. This implementation was created - to avoid the slowness within the priority queue used by - both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue3()

-

pqueue3() = {integer(), integer(), empty | integer(), tuple()}

- - -

pqueue3_empty()

-

pqueue3_empty() = {integer(), integer(), empty, tuple()}

- - -

Function Index

- - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
len/1 -

Determine the length of a priority queue.

- O(N).
new/0 -

Create a new priority queue.

- O(1).
new/1 -

Create a new priority queue with customization options.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
to_list/1 -

Convert the priority queue to a list.

- O(N).
- -

Function Details

- -

in/2

-
-

in(Value::term(), Q::pqueue3()) -> pqueue3()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(Value::term(), P::integer(), X3::pqueue3()) -> pqueue3()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(Q::pqueue3()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue3()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

len/1

-
-

len(Q::pqueue3()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(N)

- -

new/0

-
-

new() -> pqueue3_empty()

-

-

Create a new priority queue.

- O(1)

- -

new/1

-
-

new(Options::[{atom(), term()}]) -> pqueue3()

-

-

Create a new priority queue with customization options.

- O(1)

- -

out/1

-
-

out(Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue3()) -> {{value, term(), integer()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

to_list/1

-
-

to_list(Q::pqueue3()) -> [term()]

-

-

Convert the priority queue to a list.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html b/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html deleted file mode 100644 index edcdb6e..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/pqueue4.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - -Module pqueue4 - - - - -
- -

Module pqueue4

- -

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-128 (high) to 128 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:34 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-128 (high) to 128 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. This implementation was created to - avoid the slowness within the priority queue used by both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue4()

-

pqueue4() = pqueue4(any())

- - -

pqueue4()

-

pqueue4(T) = {priority() | empty, non_neg_integer(), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, queue:queue(T), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}

- - -

priority()

-

priority() = -128..128

- - -

Function Index

- - - - - - - - - - - - - - - -
filter/2 -

Filter the priority queue.

- O(N).
filter/3 -

Filter a specific priority within the priority queue.

- O(N).
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
len/1 -

Determine the length of a priority queue.

- O(1).
new/0 -

Create a new priority queue.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
remove_unique/2 -

Remove a unique value from the priority queue with a binary predicate.

- O(N) but smaller constant than filter/2.
remove_unique/3 -

Remove a unique value in a specific priority within the priority queue with a binary predicate.

- O(N) but smaller constant than filter/3.
to_list/1 -

Convert the priority queue to a list.

- O(N).
to_plist/1 -

Convert the priority queue to a list with priorities.

- O(N).
- -

Function Details

- -

filter/2

-
-

filter(F::fun((any()) -> boolean()), Q::pqueue4()) -> pqueue4()

-

-

Filter the priority queue.

- O(N)

- -

filter/3

-
-

filter(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> pqueue4()

-

-

Filter a specific priority within the priority queue.

- O(N)

- -

in/2

-
-

in(X::any(), Q::pqueue4()) -> pqueue4()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(X::any(), P::integer(), Q::pqueue4()) -> pqueue4()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(X1::pqueue4()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue4()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

len/1

-
-

len(X1::pqueue4()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(1)

- -

new/0

-
-

new() -> pqueue4()

-

-

Create a new priority queue.

- O(1)

- -

out/1

-
-

out(Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue4()) -> {{value, any(), integer()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

remove_unique/2

-
-

remove_unique(F::fun((any()) -> boolean()), Q::pqueue4()) -> {boolean(), pqueue4()}

-

-

Remove a unique value from the priority queue with a binary predicate.

- O(N) but smaller constant than filter/2

- -

remove_unique/3

-
-

remove_unique(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> {boolean(), pqueue4()}

-

-

Remove a unique value in a specific priority within the priority queue with a binary predicate.

- O(N) but smaller constant than filter/3

- -

to_list/1

-
-

to_list(Q::pqueue4()) -> list()

-

-

Convert the priority queue to a list.

- O(N)

- -

to_plist/1

-
-

to_plist(Q::pqueue4()) -> [{priority(), list()}]

-

-

Convert the priority queue to a list with priorities.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css b/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css deleted file mode 100644 index ab170c0..0000000 --- a/aoc2023/build/dev/erlang/pqueue/doc/stylesheet.css +++ /dev/null @@ -1,55 +0,0 @@ -/* standard EDoc style sheet */ -body { - font-family: Verdana, Arial, Helvetica, sans-serif; - margin-left: .25in; - margin-right: .2in; - margin-top: 0.2in; - margin-bottom: 0.2in; - color: #000000; - background-color: #ffffff; -} -h1,h2 { - margin-left: -0.2in; -} -div.navbar { - background-color: #add8e6; - padding: 0.2em; -} -h2.indextitle { - padding: 0.4em; - background-color: #add8e6; -} -h3.function,h3.typedecl { - background-color: #add8e6; - padding-left: 1em; -} -div.spec { - margin-left: 2em; - background-color: #eeeeee; -} -a.module { - text-decoration:none -} -a.module:hover { - background-color: #eeeeee; -} -ul.definitions { - list-style-type: none; -} -ul.index { - list-style-type: none; - background-color: #eeeeee; -} - -/* - * Minor style tweaks - */ -ul { - list-style-type: square; -} -table { - border-collapse: collapse; -} -td { - padding: 3 -} diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app deleted file mode 100644 index 974098f..0000000 --- a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.app +++ /dev/null @@ -1,6 +0,0 @@ -{application,pqueue, - [{description,"Priority Queue Data Structures"}, - {vsn,"2.0.7"}, - {modules,[pqueue,pqueue2,pqueue3,pqueue4]}, - {registered,[]}, - {applications,[stdlib,kernel]}]}. diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam deleted file mode 100644 index bf379ea..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam deleted file mode 100644 index 2913682..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue2.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam deleted file mode 100644 index 1d55303..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue3.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam b/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam deleted file mode 100644 index 13f75f5..0000000 Binary files a/aoc2023/build/dev/erlang/pqueue/ebin/pqueue4.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/pqueue/rebar.config b/aoc2023/build/dev/erlang/pqueue/rebar.config deleted file mode 100644 index f8022f0..0000000 --- a/aoc2023/build/dev/erlang/pqueue/rebar.config +++ /dev/null @@ -1,14 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: - -{erl_opts, - [{platform_define, "^R16", 'ERLANG_OTP_VERSION_16'}, - {platform_define, "^17\.", 'ERLANG_OTP_VERSION_17'}, - {platform_define, "^18\.", 'ERLANG_OTP_VERSION_18'}, - {platform_define, "^19\.", 'ERLANG_OTP_VERSION_19'}, - {platform_define, "^20\.", 'ERLANG_OTP_VERSION_20'}, - warn_export_vars, - warn_unused_import, - %warn_missing_spec, - warnings_as_errors]}. -{edoc_opts, [{preprocess, true}]}. diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src b/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src deleted file mode 100644 index b153ad1..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue.app.src +++ /dev/null @@ -1,10 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: - -{application, pqueue, - [{description, "Priority Queue Data Structures"}, - {vsn, "2.0.7"}, - {modules, [pqueue, pqueue2, pqueue3, pqueue4]}, - {registered, []}, - {applications, [stdlib, kernel]}]}. - diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl deleted file mode 100644 index 2c57fa2..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue.erl +++ /dev/null @@ -1,2246 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Static Priority Queue.== -%%% This priority queue implementation depends on a static number of priorities -%%% (-20 (high) to 20 (low)) so that tuple access times can be exploited for -%%% quick in/out priority queue operations. This implementation was created to -%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - join/2, % O(N) typically (?) - len/1, % O(N) - new/0, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - to_list/1, % O(N) - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --ifdef(ERLANG_OTP_VERSION_16). --type pqueue() :: - {integer(), - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}} | - {'empty', - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. --else. --type pqueue() :: - {integer(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - queue:queue(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}} | - {'empty', - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - queue:queue(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}}. --endif. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue()) -> pqueue(). - -in(X, Q) -> - in(X, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue()) -> pqueue(). - -in(_, P, _) - when P < -20; P > 20 -> - erlang:exit(badarg); -in(X, P, {empty, _, _, _, _, _, _, _} = Q) -> - in_higher(P, Q, X); -in(X, P, {Pc, _, _, _, _, _, _, _} = Q) - when P < Pc -> - in_higher(P, Q, X); -in(X, P, Q) -> - in_lower(P, Q, X). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue()) -> 'true' | 'false'. - -is_empty({empty, _, _, _, _, _, _, _}) -> - true; -is_empty({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:is_empty(Qn20) and queue:is_empty(Qn19) and queue:is_empty(Qn18) and - queue:is_empty(Qn17) and queue:is_empty(Qn16) and queue:is_empty(Qn15) and - queue:is_empty(Qn14) and - queue:is_empty(Qn13) and queue:is_empty(Qn12) and queue:is_empty(Qn11) and - queue:is_empty(Qn10) and queue:is_empty(Qn9) and queue:is_empty(Qn8) and - queue:is_empty(Qn7) and - queue:is_empty(Qn6) and queue:is_empty(Qn5) and queue:is_empty(Qn4) and - queue:is_empty(Qn3) and queue:is_empty(Qn2) and queue:is_empty(Qn1) and - queue:is_empty(Q0) and - queue:is_empty(Qp1) and queue:is_empty(Qp2) and queue:is_empty(Qp3) and - queue:is_empty(Qp4) and queue:is_empty(Qp5) and queue:is_empty(Qp6) and - queue:is_empty(Qp7) and queue:is_empty(Qp8) and queue:is_empty(Qp9) and - queue:is_empty(Qp10) and queue:is_empty(Qp11) and queue:is_empty(Qp12) and - queue:is_empty(Qp13) and - queue:is_empty(Qp14) and queue:is_empty(Qp15) and queue:is_empty(Qp16) and - queue:is_empty(Qp17) and queue:is_empty(Qp18) and queue:is_empty(Qp19) and - queue:is_empty(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue()) -> 'true' | 'false'. - -is_queue({Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) - when tuple_size(Qsn14) == 7, tuple_size(Qsn7) == 7, tuple_size(Qsn1) == 6, - tuple_size(Qsp14) == 7, tuple_size(Qsp7) == 7, tuple_size(Qsp1) == 6 -> - (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Join two priority queues.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec join(pqueue(), pqueue()) -> pqueue(). - -join({P1c, - {Q1_n20, Q1_n19, Q1_n18, Q1_n17, Q1_n16, Q1_n15, Q1_n14}, - {Q1_n13, Q1_n12, Q1_n11, Q1_n10, Q1_n9, Q1_n8, Q1_n7}, - {Q1_n6, Q1_n5, Q1_n4, Q1_n3, Q1_n2, Q1_n1}, - Q1_0, - {Q1_p1, Q1_p2, Q1_p3, Q1_p4, Q1_p5, Q1_p6}, - {Q1_p7, Q1_p8, Q1_p9, Q1_p10, Q1_p11, Q1_p12, Q1_p13}, - {Q1_p14, Q1_p15, Q1_p16, Q1_p17, Q1_p18, Q1_p19, Q1_p20}}, - {P2c, - {Q2_n20, Q2_n19, Q2_n18, Q2_n17, Q2_n16, Q2_n15, Q2_n14}, - {Q2_n13, Q2_n12, Q2_n11, Q2_n10, Q2_n9, Q2_n8, Q2_n7}, - {Q2_n6, Q2_n5, Q2_n4, Q2_n3, Q2_n2, Q2_n1}, - Q2_0, - {Q2_p1, Q2_p2, Q2_p3, Q2_p4, Q2_p5, Q2_p6}, - {Q2_p7, Q2_p8, Q2_p9, Q2_p10, Q2_p11, Q2_p12, Q2_p13}, - {Q2_p14, Q2_p15, Q2_p16, Q2_p17, Q2_p18, Q2_p19, Q2_p20}}) -> - {erlang:min(P1c, P2c), - {queue:join(Q1_n20, Q2_n20), queue:join(Q1_n19, Q2_n19), - queue:join(Q1_n18, Q2_n18), queue:join(Q1_n17, Q2_n17), - queue:join(Q1_n16, Q2_n16), queue:join(Q1_n15, Q2_n15), - queue:join(Q1_n14, Q2_n14)}, - {queue:join(Q1_n13, Q2_n13), queue:join(Q1_n12, Q2_n12), - queue:join(Q1_n11, Q2_n11), queue:join(Q1_n10, Q2_n10), - queue:join(Q1_n9, Q2_n9), queue:join(Q1_n8, Q2_n8), - queue:join(Q1_n7, Q2_n7)}, - {queue:join(Q1_n6, Q2_n6), queue:join(Q1_n5, Q2_n5), - queue:join(Q1_n4, Q2_n4), queue:join(Q1_n3, Q2_n3), - queue:join(Q1_n2, Q2_n2), queue:join(Q1_n1, Q2_n1)}, - queue:join(Q1_0, Q2_0), - {queue:join(Q1_p1, Q2_p1), queue:join(Q1_p2, Q2_p2), - queue:join(Q1_p3, Q2_p3), queue:join(Q1_p4, Q2_p4), - queue:join(Q1_p5, Q2_p5), queue:join(Q1_p6, Q2_p6)}, - {queue:join(Q1_p7, Q2_p7), queue:join(Q1_p8, Q2_p8), - queue:join(Q1_p9, Q2_p9), queue:join(Q1_p10, Q2_p10), - queue:join(Q1_p11, Q2_p11), queue:join(Q1_p12, Q2_p12), - queue:join(Q1_p13, Q2_p13)}, - {queue:join(Q1_p14, Q2_p14), queue:join(Q1_p15, Q2_p15), - queue:join(Q1_p16, Q2_p16), queue:join(Q1_p17, Q2_p17), - queue:join(Q1_p18, Q2_p18), queue:join(Q1_p19, Q2_p19), - queue:join(Q1_p20, Q2_p20)}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue()) -> non_neg_integer(). - -len({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:len(Qn20) + queue:len(Qn19) + queue:len(Qn18) + queue:len(Qn17) + - queue:len(Qn16) + queue:len(Qn15) + queue:len(Qn14) + - queue:len(Qn13) + queue:len(Qn12) + queue:len(Qn11) + queue:len(Qn10) + - queue:len(Qn9) + queue:len(Qn8) + queue:len(Qn7) + - queue:len(Qn6) + queue:len(Qn5) + queue:len(Qn4) + queue:len(Qn3) + - queue:len(Qn2) + queue:len(Qn1) + - queue:len(Q0) + - queue:len(Qp1) + queue:len(Qp2) + queue:len(Qp3) + queue:len(Qp4) + - queue:len(Qp5) + queue:len(Qp6) + - queue:len(Qp7) + queue:len(Qp8) + queue:len(Qp9) + queue:len(Qp10) + - queue:len(Qp11) + queue:len(Qp12) + queue:len(Qp13) + - queue:len(Qp14) + queue:len(Qp15) + queue:len(Qp16) + queue:len(Qp17) + - queue:len(Qp18) + queue:len(Qp19) + queue:len(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue(). - -new() -> - {empty, % current priority - erlang:make_tuple(7, queue:new()), % priority [-20..-14] - erlang:make_tuple(7, queue:new()), % priority [-13.. -7] - erlang:make_tuple(6, queue:new()), % priority [ -6.. -1] - queue:new(), % priority 0 (default) - erlang:make_tuple(6, queue:new()), % priority [ 1.. 6] - erlang:make_tuple(7, queue:new()), % priority [ 7.. 13] - erlang:make_tuple(7, queue:new())}. % priority [ 14.. 20] - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue()) -> - {{'value', term()}, pqueue()} | {'empty', pqueue()}. - -out({empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out({Pc, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q, nopriority). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue()) -> - {{'value', term()}, pqueue()} | {'empty', pqueue()}. - -out(P, _) - when P < -20; P > 20 -> - erlang:exit(badarg); -out(_, {empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out(P, Q) -> - out_specific(P, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue()) -> - {{'value', term(), integer()}, pqueue()} | {'empty', pqueue()}. - -pout({empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -pout({Pc, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q, priority). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue()) -> list(term()). - -to_list({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:to_list(Qn20) ++ queue:to_list(Qn19) ++ queue:to_list(Qn18) ++ - queue:to_list(Qn17) ++ queue:to_list(Qn16) ++ queue:to_list(Qn15) ++ - queue:to_list(Qn14) ++ - queue:to_list(Qn13) ++ queue:to_list(Qn12) ++ queue:to_list(Qn11) ++ - queue:to_list(Qn10) ++ queue:to_list(Qn9) ++ queue:to_list(Qn8) ++ - queue:to_list(Qn7) ++ - queue:to_list(Qn6) ++ queue:to_list(Qn5) ++ queue:to_list(Qn4) ++ - queue:to_list(Qn3) ++ queue:to_list(Qn2) ++ queue:to_list(Qn1) ++ - queue:to_list(Q0) ++ - queue:to_list(Qp1) ++ queue:to_list(Qp2) ++ queue:to_list(Qp3) ++ - queue:to_list(Qp4) ++ queue:to_list(Qp5) ++ queue:to_list(Qp6) ++ - queue:to_list(Qp7) ++ queue:to_list(Qp8) ++ queue:to_list(Qp9) ++ - queue:to_list(Qp10) ++ queue:to_list(Qp11) ++ queue:to_list(Qp12) ++ - queue:to_list(Qp13) ++ - queue:to_list(Qp14) ++ queue:to_list(Qp15) ++ queue:to_list(Qp16) ++ - queue:to_list(Qp17) ++ queue:to_list(Qp18) ++ queue:to_list(Qp19) ++ - queue:to_list(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue:new(), - true = pqueue:is_queue(Q0), - Q1 = pqueue:in(20, 20, Q0), - Q2 = pqueue:in(19, 19, Q1), - Q3 = pqueue:in(18, 18, Q2), - Q4 = pqueue:in(17, 17, Q3), - Q5 = pqueue:in(16, 16, Q4), - Q6 = pqueue:in(15, 15, Q5), - Q7 = pqueue:in(14, 14, Q6), - Q8 = pqueue:in(13, 13, Q7), - Q9 = pqueue:in(12, 12, Q8), - Q10 = pqueue:in(11, 11, Q9), - Q11 = pqueue:in(10, 10, Q10), - Q12 = pqueue:in(9, 9, Q11), - Q13 = pqueue:in(8, 8, Q12), - Q14 = pqueue:in(7, 7, Q13), - Q15 = pqueue:in(6, 6, Q14), - Q16 = pqueue:in(5, 5, Q15), - Q17 = pqueue:in(4, 4, Q16), - Q18 = pqueue:in(3, 3, Q17), - Q19 = pqueue:in(2, 2, Q18), - Q20 = pqueue:in(1, 1, Q19), - Q21 = pqueue:in(0, 0, Q20), - Q22 = pqueue:in(-1, -1, Q21), - Q23 = pqueue:in(-2, -2, Q22), - Q24 = pqueue:in(-3, -3, Q23), - Q25 = pqueue:in(-4, -4, Q24), - Q26 = pqueue:in(-5, -5, Q25), - Q27 = pqueue:in(-6, -6, Q26), - Q28 = pqueue:in(-7, -7, Q27), - Q29 = pqueue:in(-8, -8, Q28), - Q30 = pqueue:in(-9, -9, Q29), - Q31 = pqueue:in(-10, -10, Q30), - Q32 = pqueue:in(-11, -11, Q31), - Q33 = pqueue:in(-12, -12, Q32), - Q34 = pqueue:in(-13, -13, Q33), - Q35 = pqueue:in(-14, -14, Q34), - Q36 = pqueue:in(-15, -15, Q35), - Q37 = pqueue:in(-16, -16, Q36), - Q38 = pqueue:in(-17, -17, Q37), - Q39 = pqueue:in(-18, -18, Q38), - Q40 = pqueue:in(-19, -19, Q39), - Q41 = pqueue:in(-20, -20, Q40), - Q42 = pqueue:in(-20, -20, Q41), - Q43 = pqueue:in(-19, -19, Q42), - Q44 = pqueue:in(-18, -18, Q43), - Q45 = pqueue:in(-17, -17, Q44), - Q46 = pqueue:in(-16, -16, Q45), - Q47 = pqueue:in(-15, -15, Q46), - Q48 = pqueue:in(-14, -14, Q47), - Q49 = pqueue:in(-13, -13, Q48), - Q50 = pqueue:in(-12, -12, Q49), - Q51 = pqueue:in(-11, -11, Q50), - Q52 = pqueue:in(-10, -10, Q51), - Q53 = pqueue:in(-9, -9, Q52), - Q54 = pqueue:in(-8, -8, Q53), - Q55 = pqueue:in(-7, -7, Q54), - Q56 = pqueue:in(-6, -6, Q55), - Q57 = pqueue:in(-5, -5, Q56), - Q58 = pqueue:in(-4, -4, Q57), - Q59 = pqueue:in(-3, -3, Q58), - Q60 = pqueue:in(-2, -2, Q59), - Q61 = pqueue:in(-1, -1, Q60), - Q62 = pqueue:in(0, 0, Q61), - Q63 = pqueue:in(1, 1, Q62), - Q64 = pqueue:in(2, 2, Q63), - Q65 = pqueue:in(3, 3, Q64), - Q66 = pqueue:in(4, 4, Q65), - Q67 = pqueue:in(5, 5, Q66), - Q68 = pqueue:in(6, 6, Q67), - Q69 = pqueue:in(7, 7, Q68), - Q70 = pqueue:in(8, 8, Q69), - Q71 = pqueue:in(9, 9, Q70), - Q72 = pqueue:in(10, 10, Q71), - Q73 = pqueue:in(11, 11, Q72), - Q74 = pqueue:in(12, 12, Q73), - Q75 = pqueue:in(13, 13, Q74), - Q76 = pqueue:in(14, 14, Q75), - Q77 = pqueue:in(15, 15, Q76), - Q78 = pqueue:in(16, 16, Q77), - Q79 = pqueue:in(17, 17, Q78), - Q80 = pqueue:in(18, 18, Q79), - Q81 = pqueue:in(19, 19, Q80), - Q82 = pqueue:in(20, 20, Q81), - true = pqueue:is_queue(Q82), - 82 = pqueue:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue:to_list(Q82), - {{value, -20}, Q83} = pqueue:out(Q82), - {{value, -20}, Q84} = pqueue:out(Q83), - {{value, -19}, Q85} = pqueue:out(Q84), - {{value, -19}, Q86} = pqueue:out(Q85), - {{value, -18}, Q87} = pqueue:out(Q86), - {{value, -18}, Q88} = pqueue:out(Q87), - {{value, 0}, Q89} = pqueue:out(0, Q88), - {{value, 0}, Q90} = pqueue:out(0, Q89), - {empty, _} = pqueue:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue:pout(Q90), - {{value, -17, -17}, Q92} = pqueue:pout(Q91), - {{value, -16, -16}, Q93} = pqueue:pout(Q92), - {{value, -16, -16}, Q94} = pqueue:pout(Q93), - {{value, -15, -15}, Q95} = pqueue:pout(Q94), - {{value, -15, -15}, Q96} = pqueue:pout(Q95), - {{value, -14, -14}, Q97} = pqueue:pout(Q96), - {{value, -14, -14}, Q98} = pqueue:pout(Q97), - {{value, -13, -13}, Q99} = pqueue:pout(Q98), - {{value, -13, -13}, Q100} = pqueue:pout(Q99), - {{value, -12, -12}, Q101} = pqueue:pout(Q100), - {{value, -12, -12}, Q102} = pqueue:pout(Q101), - {{value, -11, -11}, Q103} = pqueue:pout(Q102), - {{value, -11, -11}, Q104} = pqueue:pout(Q103), - {{value, -10, -10}, Q105} = pqueue:pout(Q104), - {{value, -10, -10}, Q106} = pqueue:pout(Q105), - {{value, -9, -9}, Q107} = pqueue:pout(Q106), - {{value, -9, -9}, Q108} = pqueue:pout(Q107), - {{value, -8, -8}, Q109} = pqueue:pout(Q108), - {{value, -8, -8}, Q110} = pqueue:pout(Q109), - {{value, -7, -7}, Q111} = pqueue:pout(Q110), - {{value, -7, -7}, Q112} = pqueue:pout(Q111), - {{value, -6, -6}, Q113} = pqueue:pout(Q112), - {{value, -6, -6}, Q114} = pqueue:pout(Q113), - {{value, -5, -5}, Q115} = pqueue:pout(Q114), - {{value, -5, -5}, Q116} = pqueue:pout(Q115), - {{value, -4, -4}, Q117} = pqueue:pout(Q116), - {{value, -4, -4}, Q118} = pqueue:pout(Q117), - {{value, -3, -3}, Q119} = pqueue:pout(Q118), - {{value, -3, -3}, Q120} = pqueue:pout(Q119), - {{value, -2, -2}, Q121} = pqueue:pout(Q120), - {{value, -2, -2}, Q122} = pqueue:pout(Q121), - {{value, -1, -1}, Q123} = pqueue:pout(Q122), - {{value, -1, -1}, Q124} = pqueue:pout(Q123), - {{value, 1, 1}, Q125} = pqueue:pout(Q124), - {{value, 1, 1}, Q126} = pqueue:pout(Q125), - {{value, 2, 2}, Q127} = pqueue:pout(Q126), - {{value, 2, 2}, Q128} = pqueue:pout(Q127), - {{value, 3, 3}, Q129} = pqueue:pout(Q128), - {{value, 3, 3}, Q130} = pqueue:pout(Q129), - {{value, 4, 4}, Q131} = pqueue:pout(Q130), - {{value, 4, 4}, Q132} = pqueue:pout(Q131), - {{value, 5, 5}, Q133} = pqueue:pout(Q132), - {{value, 5, 5}, Q134} = pqueue:pout(Q133), - {{value, 6, 6}, Q135} = pqueue:pout(Q134), - {{value, 6, 6}, Q136} = pqueue:pout(Q135), - {{value, 7, 7}, Q137} = pqueue:pout(Q136), - {{value, 7, 7}, Q138} = pqueue:pout(Q137), - {{value, 8, 8}, Q139} = pqueue:pout(Q138), - {{value, 8, 8}, Q140} = pqueue:pout(Q139), - {{value, 9, 9}, Q141} = pqueue:pout(Q140), - {{value, 9, 9}, Q142} = pqueue:pout(Q141), - {{value, 10, 10}, Q143} = pqueue:pout(Q142), - {{value, 10, 10}, Q144} = pqueue:pout(Q143), - {{value, 11, 11}, Q145} = pqueue:pout(Q144), - {{value, 11, 11}, Q146} = pqueue:pout(Q145), - {{value, 12, 12}, Q147} = pqueue:pout(Q146), - {{value, 12, 12}, Q148} = pqueue:pout(Q147), - {{value, 13, 13}, Q149} = pqueue:pout(Q148), - {{value, 13, 13}, Q150} = pqueue:pout(Q149), - {{value, 14, 14}, Q151} = pqueue:pout(Q150), - {{value, 14, 14}, Q152} = pqueue:pout(Q151), - {{value, 15, 15}, Q153} = pqueue:pout(Q152), - {{value, 15, 15}, Q154} = pqueue:pout(Q153), - {{value, 16, 16}, Q155} = pqueue:pout(Q154), - {{value, 16, 16}, Q156} = pqueue:pout(Q155), - {{value, 17, 17}, Q157} = pqueue:pout(Q156), - {{value, 17, 17}, Q158} = pqueue:pout(Q157), - {{value, 18, 18}, Q159} = pqueue:pout(Q158), - {{value, 18, 18}, Q160} = pqueue:pout(Q159), - {{value, 19, 19}, Q161} = pqueue:pout(Q160), - {{value, 19, 19}, Q162} = pqueue:pout(Q161), - {{value, 20, 20}, Q163} = pqueue:pout(Q162), - {{value, 20, 20}, Q164} = pqueue:pout(Q163), - true = pqueue:is_empty(Q164), - {empty, Q165} = pqueue:pout(Q164), - true = pqueue:is_empty(Q165), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -in_higher(-20, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-20, - {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-19, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-19, - {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-18, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-18, - {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-17, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-17, - {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-16, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-16, - {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-15, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-15, - {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-14, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-14, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-13, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-13, Qsn14, - {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-12, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-12, Qsn14, - {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-11, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-11, Qsn14, - {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-10, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-10, Qsn14, - {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-9, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-9, Qsn14, - {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-8, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-8, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-7, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-7, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-6, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-6, Qsn14, Qsn7, - {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-5, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-5, Qsn14, Qsn7, - {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-4, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-4, Qsn14, Qsn7, - {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-3, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-3, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-2, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-2, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-1, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-1, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(0, {_, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {0, Qsn14, Qsn7, Qsn1, - queue:in(X, Q0), - Qsp1, Qsp7, Qsp14}; -in_higher(1, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {1, Qsn14, Qsn7, Qsn1, Q0, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(2, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {2, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(3, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {3, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(4, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {4, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(5, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {5, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, - Qsp7, Qsp14}; -in_higher(6, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {6, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, - Qsp7, Qsp14}; -in_higher(7, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(8, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(9, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(10, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(11, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, - Qsp14}; -in_higher(12, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, - Qsp14}; -in_higher(13, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, - Qsp14}; -in_higher(14, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_higher(15, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_higher(16, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; -in_higher(17, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; -in_higher(18, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; -in_higher(19, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; -in_higher(20, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. - -in_lower(-20, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-19, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-18, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-17, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-16, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-15, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-14, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-13, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-12, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-11, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-10, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-9, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-8, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-7, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-6, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-5, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-4, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-3, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-2, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-1, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(0, {Pc, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, - queue:in(X, Q0), - Qsp1, Qsp7, Qsp14}; -in_lower(1, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(2, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(3, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(4, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(5, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, - Qsp7, Qsp14}; -in_lower(6, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, - Qsp7, Qsp14}; -in_lower(7, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(8, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(9, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(10, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(11, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, - Qsp14}; -in_lower(12, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, - Qsp14}; -in_lower(13, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, - Qsp14}; -in_lower(14, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_lower(15, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_lower(16, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; -in_lower(17, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; -in_lower(18, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; -in_lower(19, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; -in_lower(20, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. - -out_current(-20, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn20} = queue:out(Qn20), - if - Value =:= empty -> - out_current(-19, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -20}; - true -> - Value - end, - {NewValue, - {-20, - {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-19, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn19} = queue:out(Qn19), - if - Value =:= empty -> - out_current(-18, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -19}; - true -> - Value - end, - {NewValue, - {-19, - {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-18, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn18} = queue:out(Qn18), - if - Value =:= empty -> - out_current(-17, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -18}; - true -> - Value - end, - {NewValue, - {-18, - {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-17, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn17} = queue:out(Qn17), - if - Value =:= empty -> - out_current(-16, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -17}; - true -> - Value - end, - {NewValue, - {-17, - {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-16, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn16} = queue:out(Qn16), - if - Value =:= empty -> - out_current(-15, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -16}; - true -> - Value - end, - {NewValue, - {-16, - {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-15, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn15} = queue:out(Qn15), - if - Value =:= empty -> - out_current(-14, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -15}; - true -> - Value - end, - {NewValue, - {-15, - {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-14, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn14} = queue:out(Qn14), - if - Value =:= empty -> - out_current(-13, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -14}; - true -> - Value - end, - {NewValue, - {-14, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-13, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn13} = queue:out(Qn13), - if - Value =:= empty -> - out_current(-12, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -13}; - true -> - Value - end, - {NewValue, - {-13, Qsn14, - {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-12, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn12} = queue:out(Qn12), - if - Value =:= empty -> - out_current(-11, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -12}; - true -> - Value - end, - {NewValue, - {-12, Qsn14, - {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-11, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn11} = queue:out(Qn11), - if - Value =:= empty -> - out_current(-10, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -11}; - true -> - Value - end, - {NewValue, - {-11, Qsn14, - {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-10, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn10} = queue:out(Qn10), - if - Value =:= empty -> - out_current(-9, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -10}; - true -> - Value - end, - {NewValue, - {-10, Qsn14, - {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-9, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn9} = queue:out(Qn9), - if - Value =:= empty -> - out_current(-8, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -9}; - true -> - Value - end, - {NewValue, - {-9, Qsn14, - {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-8, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn8} = queue:out(Qn8), - if - Value =:= empty -> - out_current(-7, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -8}; - true -> - Value - end, - {NewValue, - {-8, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-7, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn7} = queue:out(Qn7), - if - Value =:= empty -> - out_current(-6, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -7}; - true -> - Value - end, - {NewValue, - {-7, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-6, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn6} = queue:out(Qn6), - if - Value =:= empty -> - out_current(-5, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -6}; - true -> - Value - end, - {NewValue, - {-6, Qsn14, Qsn7, - {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-5, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn5} = queue:out(Qn5), - if - Value =:= empty -> - out_current(-4, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -5}; - true -> - Value - end, - {NewValue, - {-5, Qsn14, Qsn7, - {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-4, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn4} = queue:out(Qn4), - if - Value =:= empty -> - out_current(-3, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -4}; - true -> - Value - end, - {NewValue, - {-4, Qsn14, Qsn7, - {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-3, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn3} = queue:out(Qn3), - if - Value =:= empty -> - out_current(-2, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -3}; - true -> - Value - end, - {NewValue, - {-3, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-2, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn2} = queue:out(Qn2), - if - Value =:= empty -> - out_current(-1, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -2}; - true -> - Value - end, - {NewValue, - {-2, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-1, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn1} = queue:out(Qn1), - if - Value =:= empty -> - out_current(0, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -1}; - true -> - Value - end, - {NewValue, - {-1, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(0, - {_, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQ0} = queue:out(Q0), - if - Value =:= empty -> - out_current(1, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 0}; - true -> - Value - end, - {NewValue, - {0, Qsn14, Qsn7, Qsn1, - NewQ0, - Qsp1, Qsp7, Qsp14}} - end; -out_current(1, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp1} = queue:out(Qp1), - if - Value =:= empty -> - out_current(2, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 1}; - true -> - Value - end, - {NewValue, - {1, Qsn14, Qsn7, Qsn1, Q0, - {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(2, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp2} = queue:out(Qp2), - if - Value =:= empty -> - out_current(3, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 2}; - true -> - Value - end, - {NewValue, - {2, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(3, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp3} = queue:out(Qp3), - if - Value =:= empty -> - out_current(4, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 3}; - true -> - Value - end, - {NewValue, - {3, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(4, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp4} = queue:out(Qp4), - if - Value =:= empty -> - out_current(5, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 4}; - true -> - Value - end, - {NewValue, - {4, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(5, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp5} = queue:out(Qp5), - if - Value =:= empty -> - out_current(6, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 5}; - true -> - Value - end, - {NewValue, - {5, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(6, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp6} = queue:out(Qp6), - if - Value =:= empty -> - out_current(7, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 6}; - true -> - Value - end, - {NewValue, - {6, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, - Qsp7, Qsp14}} - end; -out_current(7, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp7} = queue:out(Qp7), - if - Value =:= empty -> - out_current(8, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 7}; - true -> - Value - end, - {NewValue, - {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(8, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp8} = queue:out(Qp8), - if - Value =:= empty -> - out_current(9, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 8}; - true -> - Value - end, - {NewValue, - {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(9, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp9} = queue:out(Qp9), - if - Value =:= empty -> - out_current(10, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 9}; - true -> - Value - end, - {NewValue, - {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(10, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp10} = queue:out(Qp10), - if - Value =:= empty -> - out_current(11, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 10}; - true -> - Value - end, - {NewValue, - {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(11, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp11} = queue:out(Qp11), - if - Value =:= empty -> - out_current(12, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 11}; - true -> - Value - end, - {NewValue, - {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(12, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp12} = queue:out(Qp12), - if - Value =:= empty -> - out_current(13, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 12}; - true -> - Value - end, - {NewValue, - {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, - Qsp14}} - end; -out_current(13, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp13} = queue:out(Qp13), - if - Value =:= empty -> - out_current(14, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 13}; - true -> - Value - end, - {NewValue, - {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, - Qsp14}} - end; -out_current(14, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp14} = queue:out(Qp14), - if - Value =:= empty -> - out_current(15, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 14}; - true -> - Value - end, - {NewValue, - {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(15, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp15} = queue:out(Qp15), - if - Value =:= empty -> - out_current(16, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 15}; - true -> - Value - end, - {NewValue, - {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(16, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp16} = queue:out(Qp16), - if - Value =:= empty -> - out_current(17, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 16}; - true -> - Value - end, - {NewValue, - {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(17, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp17} = queue:out(Qp17), - if - Value =:= empty -> - out_current(18, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 17}; - true -> - Value - end, - {NewValue, - {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}} - end; -out_current(18, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp18} = queue:out(Qp18), - if - Value =:= empty -> - out_current(19, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 18}; - true -> - Value - end, - {NewValue, - {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}} - end; -out_current(19, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp19} = queue:out(Qp19), - if - Value =:= empty -> - out_current(20, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 19}; - true -> - Value - end, - {NewValue, - {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}} - end; -out_current(20, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20} = Qsp14}, ReturnType) -> - {Value, NewQp20} = queue:out(Qp20), - if - Value =:= empty -> - {empty, {empty, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 20}; - true -> - Value - end, - {NewValue, - {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}} - end. - -out_specific(-20, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn20} = queue:out(Qn20), - {Value, - {Pc, - {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-19, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn19} = queue:out(Qn19), - {Value, - {Pc, - {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-18, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn18} = queue:out(Qn18), - {Value, - {Pc, - {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-17, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn17} = queue:out(Qn17), - {Value, - {Pc, - {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-16, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn16} = queue:out(Qn16), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-15, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn15} = queue:out(Qn15), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-14, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn14} = queue:out(Qn14), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-13, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn13} = queue:out(Qn13), - {Value, - {Pc, Qsn14, - {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-12, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn12} = queue:out(Qn12), - {Value, - {Pc, Qsn14, - {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-11, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn11} = queue:out(Qn11), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-10, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn10} = queue:out(Qn10), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-9, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn9} = queue:out(Qn9), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-8, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn8} = queue:out(Qn8), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-7, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn7} = queue:out(Qn7), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-6, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn6} = queue:out(Qn6), - {Value, - {Pc, Qsn14, Qsn7, - {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-5, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn5} = queue:out(Qn5), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-4, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn4} = queue:out(Qn4), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-3, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn3} = queue:out(Qn3), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-2, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn2} = queue:out(Qn2), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-1, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn1} = queue:out(Qn1), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(0, - {Pc, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQ0} = queue:out(Q0), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, - NewQ0, - Qsp1, Qsp7, Qsp14}}; -out_specific(1, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp1} = queue:out(Qp1), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(2, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp2} = queue:out(Qp2), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(3, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp3} = queue:out(Qp3), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(4, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp4} = queue:out(Qp4), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(5, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp5} = queue:out(Qp5), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(6, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp6} = queue:out(Qp6), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, - Qsp7, Qsp14}}; -out_specific(7, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp7} = queue:out(Qp7), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(8, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp8} = queue:out(Qp8), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(9, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp9} = queue:out(Qp9), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(10, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp10} = queue:out(Qp10), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(11, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp11} = queue:out(Qp11), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, - Qsp14}}; -out_specific(12, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp12} = queue:out(Qp12), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, - Qsp14}}; -out_specific(13, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp13} = queue:out(Qp13), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, - Qsp14}}; -out_specific(14, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp14} = queue:out(Qp14), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(15, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp15} = queue:out(Qp15), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(16, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp16} = queue:out(Qp16), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(17, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp17} = queue:out(Qp17), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}}; -out_specific(18, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp18} = queue:out(Qp18), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}}; -out_specific(19, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp19} = queue:out(Qp19), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}}; -out_specific(20, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp20} = queue:out(Qp20), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}}. - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl deleted file mode 100644 index bbdeaaf..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue2.erl +++ /dev/null @@ -1,483 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Skew Heap Priority Queue.== -%%% Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority -%%% queue implementation. Unfortunately, testing has shown this solution to -%%% be more than 2 times slower than pqueue. -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue2). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, - in/3, - is_empty/1, - is_queue/1, - len/1, - new/0, - out/1, - out/2, - pout/1, - to_list/1, - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --ifdef(ERLANG_OTP_VERSION_16). --type pqueue2() :: - empty | - {integer(), pqueue2(), pqueue2(), element, term()} | - {integer(), pqueue2(), pqueue2(), queue, queue()}. --else. --type pqueue2() :: - empty | - {integer(), pqueue2(), pqueue2(), element, term()} | - {integer(), pqueue2(), pqueue2(), queue, queue:queue()}. --endif. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue2()) -> pqueue2(). - -in(Value, H) -> - in(Value, 0, H). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue2()) -> pqueue2(). - -in(Value, P, H) -> - merge({P, empty, empty, element, Value}, H). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue2()) -> 'true' | 'false'. - -is_empty(empty) -> - true; -is_empty({_, HL, HR, queue, Queue}) -> - is_empty(HL) andalso is_empty(HR) andalso queue:is_empty(Queue); -is_empty(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue2()) -> 'true' | 'false'. - -is_queue(empty) -> - true; -is_queue({P, _, _, element, _}) - when is_integer(P) -> - true; -is_queue({P, _, _, queue, Queue}) - when is_integer(P) -> - queue:is_queue(Queue); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue2()) -> non_neg_integer(). - -len(H) -> - len(0, out(H)). -len(I, {empty, _}) -> - I; -len(I, {{value, _}, H}) -> - len(I + 1, out(H)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue2(). - -new() -> - empty. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue2()) -> - {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. - -out(empty) -> - {empty, empty}; -out({_, HL, HR, element, Value}) -> - {{value, Value}, merge(HL, HR)}; -out({P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, _} = Result, NewQueue} -> - {Result, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - out(merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue2()) -> - {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. - -out(_, empty) -> - {empty, empty}; -out(P, {P1, _, _, _, _} = H) when P < P1 -> - {empty, H}; -out(P, {P1, HL1, HR1, T, D}) when P > P1 -> - case out(P, HL1) of - {{value, _} = Result, HL2} -> - {Result, {P1, HL2, HR1, T, D}}; - {empty, HL2} -> - case out(P, HR1) of - {{value, _} = Result, HR2} -> - {Result, {P1, HL2, HR2, T, D}}; - {empty, HR2} -> - {empty, {P1, HL2, HR2, T, D}} - end - end; -out(P, {P, HL, HR, element, Value}) -> - {{value, Value}, merge(HL, HR)}; -out(P, {P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, _} = Result, NewQueue} -> - {Result, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - out(P, merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue2()) -> - {{'value', term(), integer()}, pqueue2()} | {'empty', pqueue2()}. - -pout(empty) -> - {empty, empty}; -pout({P, HL, HR, element, Value}) -> - {{value, Value, P}, merge(HL, HR)}; -pout({P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, Value}, NewQueue} -> - {{value, Value, P}, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - pout(merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue2()) -> list(term()). - -to_list(H) -> - to_list([], out(H)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, H}) -> - to_list([Value | L], out(H)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue2:new(), - true = pqueue2:is_queue(Q0), - Q1 = pqueue2:in(20, 20, Q0), - Q2 = pqueue2:in(19, 19, Q1), - Q3 = pqueue2:in(18, 18, Q2), - Q4 = pqueue2:in(17, 17, Q3), - Q5 = pqueue2:in(16, 16, Q4), - Q6 = pqueue2:in(15, 15, Q5), - Q7 = pqueue2:in(14, 14, Q6), - Q8 = pqueue2:in(13, 13, Q7), - Q9 = pqueue2:in(12, 12, Q8), - Q10 = pqueue2:in(11, 11, Q9), - Q11 = pqueue2:in(10, 10, Q10), - Q12 = pqueue2:in(9, 9, Q11), - Q13 = pqueue2:in(8, 8, Q12), - Q14 = pqueue2:in(7, 7, Q13), - Q15 = pqueue2:in(6, 6, Q14), - Q16 = pqueue2:in(5, 5, Q15), - Q17 = pqueue2:in(4, 4, Q16), - Q18 = pqueue2:in(3, 3, Q17), - Q19 = pqueue2:in(2, 2, Q18), - Q20 = pqueue2:in(1, 1, Q19), - Q21 = pqueue2:in(0, 0, Q20), - Q22 = pqueue2:in(-1, -1, Q21), - Q23 = pqueue2:in(-2, -2, Q22), - Q24 = pqueue2:in(-3, -3, Q23), - Q25 = pqueue2:in(-4, -4, Q24), - Q26 = pqueue2:in(-5, -5, Q25), - Q27 = pqueue2:in(-6, -6, Q26), - Q28 = pqueue2:in(-7, -7, Q27), - Q29 = pqueue2:in(-8, -8, Q28), - Q30 = pqueue2:in(-9, -9, Q29), - Q31 = pqueue2:in(-10, -10, Q30), - Q32 = pqueue2:in(-11, -11, Q31), - Q33 = pqueue2:in(-12, -12, Q32), - Q34 = pqueue2:in(-13, -13, Q33), - Q35 = pqueue2:in(-14, -14, Q34), - Q36 = pqueue2:in(-15, -15, Q35), - Q37 = pqueue2:in(-16, -16, Q36), - Q38 = pqueue2:in(-17, -17, Q37), - Q39 = pqueue2:in(-18, -18, Q38), - Q40 = pqueue2:in(-19, -19, Q39), - Q41 = pqueue2:in(-20, -20, Q40), - Q42 = pqueue2:in(-20, -20, Q41), - Q43 = pqueue2:in(-19, -19, Q42), - Q44 = pqueue2:in(-18, -18, Q43), - Q45 = pqueue2:in(-17, -17, Q44), - Q46 = pqueue2:in(-16, -16, Q45), - Q47 = pqueue2:in(-15, -15, Q46), - Q48 = pqueue2:in(-14, -14, Q47), - Q49 = pqueue2:in(-13, -13, Q48), - Q50 = pqueue2:in(-12, -12, Q49), - Q51 = pqueue2:in(-11, -11, Q50), - Q52 = pqueue2:in(-10, -10, Q51), - Q53 = pqueue2:in(-9, -9, Q52), - Q54 = pqueue2:in(-8, -8, Q53), - Q55 = pqueue2:in(-7, -7, Q54), - Q56 = pqueue2:in(-6, -6, Q55), - Q57 = pqueue2:in(-5, -5, Q56), - Q58 = pqueue2:in(-4, -4, Q57), - Q59 = pqueue2:in(-3, -3, Q58), - Q60 = pqueue2:in(-2, -2, Q59), - Q61 = pqueue2:in(-1, -1, Q60), - Q62 = pqueue2:in(0, 0, Q61), - Q63 = pqueue2:in(1, 1, Q62), - Q64 = pqueue2:in(2, 2, Q63), - Q65 = pqueue2:in(3, 3, Q64), - Q66 = pqueue2:in(4, 4, Q65), - Q67 = pqueue2:in(5, 5, Q66), - Q68 = pqueue2:in(6, 6, Q67), - Q69 = pqueue2:in(7, 7, Q68), - Q70 = pqueue2:in(8, 8, Q69), - Q71 = pqueue2:in(9, 9, Q70), - Q72 = pqueue2:in(10, 10, Q71), - Q73 = pqueue2:in(11, 11, Q72), - Q74 = pqueue2:in(12, 12, Q73), - Q75 = pqueue2:in(13, 13, Q74), - Q76 = pqueue2:in(14, 14, Q75), - Q77 = pqueue2:in(15, 15, Q76), - Q78 = pqueue2:in(16, 16, Q77), - Q79 = pqueue2:in(17, 17, Q78), - Q80 = pqueue2:in(18, 18, Q79), - Q81 = pqueue2:in(19, 19, Q80), - Q82 = pqueue2:in(20, 20, Q81), - true = pqueue2:is_queue(Q82), - 82 = pqueue2:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue2:to_list(Q82), - {{value, -20}, Q83} = pqueue2:out(Q82), - {{value, -20}, Q84} = pqueue2:out(Q83), - {{value, -19}, Q85} = pqueue2:out(Q84), - {{value, -19}, Q86} = pqueue2:out(Q85), - {{value, -18}, Q87} = pqueue2:out(Q86), - {{value, -18}, Q88} = pqueue2:out(Q87), - {{value, 0}, Q89} = pqueue2:out(0, Q88), - {{value, 0}, Q90} = pqueue2:out(0, Q89), - {empty, _} = pqueue2:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue2:pout(Q90), - {{value, -17, -17}, Q92} = pqueue2:pout(Q91), - {{value, -16, -16}, Q93} = pqueue2:pout(Q92), - {{value, -16, -16}, Q94} = pqueue2:pout(Q93), - {{value, -15, -15}, Q95} = pqueue2:pout(Q94), - {{value, -15, -15}, Q96} = pqueue2:pout(Q95), - {{value, -14, -14}, Q97} = pqueue2:pout(Q96), - {{value, -14, -14}, Q98} = pqueue2:pout(Q97), - {{value, -13, -13}, Q99} = pqueue2:pout(Q98), - {{value, -13, -13}, Q100} = pqueue2:pout(Q99), - {{value, -12, -12}, Q101} = pqueue2:pout(Q100), - {{value, -12, -12}, Q102} = pqueue2:pout(Q101), - {{value, -11, -11}, Q103} = pqueue2:pout(Q102), - {{value, -11, -11}, Q104} = pqueue2:pout(Q103), - {{value, -10, -10}, Q105} = pqueue2:pout(Q104), - {{value, -10, -10}, Q106} = pqueue2:pout(Q105), - {{value, -9, -9}, Q107} = pqueue2:pout(Q106), - {{value, -9, -9}, Q108} = pqueue2:pout(Q107), - {{value, -8, -8}, Q109} = pqueue2:pout(Q108), - {{value, -8, -8}, Q110} = pqueue2:pout(Q109), - {{value, -7, -7}, Q111} = pqueue2:pout(Q110), - {{value, -7, -7}, Q112} = pqueue2:pout(Q111), - {{value, -6, -6}, Q113} = pqueue2:pout(Q112), - {{value, -6, -6}, Q114} = pqueue2:pout(Q113), - {{value, -5, -5}, Q115} = pqueue2:pout(Q114), - {{value, -5, -5}, Q116} = pqueue2:pout(Q115), - {{value, -4, -4}, Q117} = pqueue2:pout(Q116), - {{value, -4, -4}, Q118} = pqueue2:pout(Q117), - {{value, -3, -3}, Q119} = pqueue2:pout(Q118), - {{value, -3, -3}, Q120} = pqueue2:pout(Q119), - {{value, -2, -2}, Q121} = pqueue2:pout(Q120), - {{value, -2, -2}, Q122} = pqueue2:pout(Q121), - {{value, -1, -1}, Q123} = pqueue2:pout(Q122), - {{value, -1, -1}, Q124} = pqueue2:pout(Q123), - {{value, 1, 1}, Q125} = pqueue2:pout(Q124), - {{value, 1, 1}, Q126} = pqueue2:pout(Q125), - {{value, 2, 2}, Q127} = pqueue2:pout(Q126), - {{value, 2, 2}, Q128} = pqueue2:pout(Q127), - {{value, 3, 3}, Q129} = pqueue2:pout(Q128), - {{value, 3, 3}, Q130} = pqueue2:pout(Q129), - {{value, 4, 4}, Q131} = pqueue2:pout(Q130), - {{value, 4, 4}, Q132} = pqueue2:pout(Q131), - {{value, 5, 5}, Q133} = pqueue2:pout(Q132), - {{value, 5, 5}, Q134} = pqueue2:pout(Q133), - {{value, 6, 6}, Q135} = pqueue2:pout(Q134), - {{value, 6, 6}, Q136} = pqueue2:pout(Q135), - {{value, 7, 7}, Q137} = pqueue2:pout(Q136), - {{value, 7, 7}, Q138} = pqueue2:pout(Q137), - {{value, 8, 8}, Q139} = pqueue2:pout(Q138), - {{value, 8, 8}, Q140} = pqueue2:pout(Q139), - {{value, 9, 9}, Q141} = pqueue2:pout(Q140), - {{value, 9, 9}, Q142} = pqueue2:pout(Q141), - {{value, 10, 10}, Q143} = pqueue2:pout(Q142), - {{value, 10, 10}, Q144} = pqueue2:pout(Q143), - {{value, 11, 11}, Q145} = pqueue2:pout(Q144), - {{value, 11, 11}, Q146} = pqueue2:pout(Q145), - {{value, 12, 12}, Q147} = pqueue2:pout(Q146), - {{value, 12, 12}, Q148} = pqueue2:pout(Q147), - {{value, 13, 13}, Q149} = pqueue2:pout(Q148), - {{value, 13, 13}, Q150} = pqueue2:pout(Q149), - {{value, 14, 14}, Q151} = pqueue2:pout(Q150), - {{value, 14, 14}, Q152} = pqueue2:pout(Q151), - {{value, 15, 15}, Q153} = pqueue2:pout(Q152), - {{value, 15, 15}, Q154} = pqueue2:pout(Q153), - {{value, 16, 16}, Q155} = pqueue2:pout(Q154), - {{value, 16, 16}, Q156} = pqueue2:pout(Q155), - {{value, 17, 17}, Q157} = pqueue2:pout(Q156), - {{value, 17, 17}, Q158} = pqueue2:pout(Q157), - {{value, 18, 18}, Q159} = pqueue2:pout(Q158), - {{value, 18, 18}, Q160} = pqueue2:pout(Q159), - {{value, 19, 19}, Q161} = pqueue2:pout(Q160), - {{value, 19, 19}, Q162} = pqueue2:pout(Q161), - {{value, 20, 20}, Q163} = pqueue2:pout(Q162), - {{value, 20, 20}, Q164} = pqueue2:pout(Q163), - true = pqueue2:is_empty(Q164), - {empty, Q165} = pqueue2:pout(Q164), - true = pqueue2:is_empty(Q165), - % test case 1, based on proper testing - C1V0 = pqueue2:in(-18, pqueue2:new()), - C1V1 = pqueue2:in(9, C1V0), - C1V2 = pqueue2:in(-10, -4, C1V1), - C1V3 = pqueue2:in(-29, C1V2), - C1V4 = pqueue2:in(11, C1V3), - 5 = pqueue2:len(C1V4), - [-10, -18, 9, -29, 11] = pqueue2:to_list(C1V4), - % test case 2, based on proper testing - C2V0 = pqueue2:in(-4, -15, pqueue2:new()), - C2V1 = pqueue2:in(13, C2V0), - C2V2 = pqueue2:in(2, C2V1), - [-4, 13, 2] = to_list(C2V2), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -merge(empty, empty) -> - empty; -merge(empty, {_, _, _, _, _} = H) -> - H; -merge({_, _, _, _, _} = H, empty) -> - H; -merge({P1, HL1, HR1, T, D}, {P2, _, _, _, _} = H2) when P1 < P2 -> - {P1, HL1, merge(HR1, H2), T, D}; -merge({P1, _, _, _, _} = H1, {P2, HL2, HR2, T, D}) when P1 > P2 -> - {P2, HL2, merge(H1, HR2), T, D}; -merge({P, HL1, HR1, element, Value1}, {P, HL2, HR2, element, Value2}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, - queue:from_list([Value2, Value1])}; -merge({P, HL1, HR1, queue, Queue}, {P, HL2, HR2, element, Value}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}; -merge({P, HL1, HR1, element, Value}, {P, HL2, HR2, queue, Queue}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}. - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq2())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl deleted file mode 100644 index 03b370a..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue3.erl +++ /dev/null @@ -1,404 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==A Large Priority Queue.== -%%% This priority queue implementation depends on layered tuples, so that tuple -%%% access times can be exploited for quick in/out priority queue operations -%%% when using 64 or more total priorities. This implementation was created -%%% to avoid the slowness within the priority queue used by -%%% both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue3). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - len/1, % O(N) - new/0, % O(1) - new/1, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - to_list/1]). % O(N) - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --type pqueue3() :: {integer(), integer(), empty | integer(), tuple()}. --type pqueue3_empty() :: {integer(), integer(), empty, tuple()}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue3()) -> pqueue3(). - -in(Value, Q) -> - in(Value, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue3()) -> pqueue3(). - -in(_, P, {Size, Offset, _, _}) - when (P + Offset) < 0; (P + Offset) > Size -> - erlang:exit(badarg); -in(Value, P, {Size, Offset, empty, Bins}) -> - PriorityIndex = P + Offset, - {Size, Offset, PriorityIndex, - in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; -in(Value, P, {Size, Offset, I, Bins}) - when (P + Offset) < I -> - PriorityIndex = P + Offset, - {Size, Offset, PriorityIndex, - in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; -in(Value, P, {Size, Offset, I, Bins}) -> - {Size, Offset, I, - in_queue(layer_indexes(Size, P + Offset), Value, Bins)}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue3()) -> 'true' | 'false'. - -is_empty({_, _, empty, _}) -> - true; -is_empty({_, _, _, _} = Q) -> - case out(Q) of - {empty, _} -> - true; - {{value, _}, _} -> - false - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue3()) -> 'true' | 'false'. - -is_queue({Size, Offset, I, Bins}) - when is_integer(Size), is_integer(Offset), is_tuple(Bins) -> - (I =:= empty) or is_integer(I); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue3()) -> non_neg_integer(). - -len(Q) -> - len(0, out(Q)). -len(I, {empty, _}) -> - I; -len(I, {{value, _}, Q}) -> - len(I + 1, out(Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue3_empty(). - -new() -> - new([]). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue with customization options.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new(list({atom(), term()})) -> pqueue3(). - -new(Options) -> - Size = proplists:get_value(priorities, Options, 256), - MiddleZero = proplists:get_value(middle_priority_zero, Options, true), - Offset = if - MiddleZero =:= true -> - erlang:round((Size / 2) + 0.5) - 1; - true -> - 0 - end, - {Size, Offset, empty, create(layer_sizes(Size))}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue3()) -> - {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. - -out({_, _, empty, _} = Q) -> - {empty, Q}; -out({Size, Offset, I, Bins}) -> - {Result, NewI, NewBins} = out_check( - I, Size, out_queue(layer_indexes(Size, I), Bins) - ), - {Result, {Size, Offset, NewI, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue3()) -> - {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. - -out(P, {Size, Offset, _, _}) - when (P + Offset) < 0; (P + Offset) > Size -> - erlang:exit(badarg); -out(_, {_, _, empty, _} = Q) -> - {empty, Q}; -out(P, {Size, Offset, I, Bins}) -> - {Result, NewBins} = out_queue(layer_indexes(Size, P + Offset), Bins), - {Result, {Size, Offset, I, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue3()) -> - {{'value', term(), integer()}, pqueue3()} | {'empty', pqueue3()}. - -pout({_, _, empty, _} = Q) -> - {empty, Q}; -pout({Size, Offset, I, Bins}) -> - {Result, NewI, NewBins} = pout_check( - I, Size, Offset, out_queue(layer_indexes(Size, I), Bins) - ), - {Result, {Size, Offset, NewI, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue3()) -> list(term()). - -to_list(Q) -> - to_list([], out(Q)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, Q}) -> - to_list([Value | L], out(Q)). - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -create([]) -> - queue:new(); - -create([I | Is]) -> - erlang:make_tuple(I + 1, create(Is)). - -in_queue({I1}, Value, Bins1) -> - erlang:setelement(I1, Bins1, queue:in(Value, erlang:element(I1, Bins1))); - -in_queue({I1, I2}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, queue:in(Value, erlang:element(I2, Bins2)))); - -in_queue({I1, I2, I3}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, queue:in(Value, erlang:element(I3, Bins3))))); - -in_queue({I1, I2, I3, I4}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - Bins4 = erlang:element(I3, Bins3), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, - erlang:setelement(I4, Bins4, queue:in(Value, erlang:element(I4, Bins4)))))). - -pout_check(Size, Size, _, {empty, Bins}) -> - {empty, empty, Bins}; -pout_check(I, _, Offset, {{value, Value}, Bins}) -> - {{value, Value, I - Offset}, I, Bins}; -pout_check(I, Size, Offset, {empty, Bins}) -> - NewI = I + 1, - pout_check(NewI, Size, Offset, out_queue(layer_indexes(Size, NewI), Bins)). - -out_check(Size, Size, {empty, Bins}) -> - {empty, empty, Bins}; -out_check(I, _, {{value, _} = Result, Bins}) -> - {Result, I, Bins}; -out_check(I, Size, {empty, Bins}) -> - NewI = I + 1, - out_check(NewI, Size, out_queue(layer_indexes(Size, NewI), Bins)). - -out_queue({I1}, Bins1) -> - {Result, NewQueue} = queue:out(erlang:element(I1, Bins1)), - {Result, - erlang:setelement(I1, Bins1, NewQueue)}; - -out_queue({I1, I2}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - {Result, NewQueue} = queue:out(erlang:element(I2, Bins2)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, NewQueue))}; - -out_queue({I1, I2, I3}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - {Result, NewQueue} = queue:out(erlang:element(I3, Bins3)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, NewQueue)))}; - -out_queue({I1, I2, I3, I4}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - Bins4 = erlang:element(I3, Bins3), - {Result, NewQueue} = queue:out(erlang:element(I4, Bins4)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, - erlang:setelement(I4, Bins4, NewQueue))))}. - -layer_indexes(Size, PriorityIndex) -> - if - Size =< 127 -> - {PriorityIndex + 1}; - Size =< 255 -> - <> = <>, - {I1 + 1, I2 + 1}; - Size =< 511 -> - <> = <>, - {I1 + 1, I2 + 1}; - Size =< 1023 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 2047 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 4095 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 8191 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 16383 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 32767 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1, I4 + 1}; - Size =< 65535 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1, I4 + 1} - end. - -layer_sizes(Size) -> - if - Size =< 127 -> - <> = <<127:7>>, - [I1]; - Size =< 255 -> - <> = <<255:8>>, - [I1, I2]; - Size =< 511 -> - <> = <<511:9>>, - [I1, I2]; - Size =< 1023 -> - <> = <<1023:10>>, - [I1, I2, I3]; - Size =< 2047 -> - <> = <<2047:11>>, - [I1, I2, I3]; - Size =< 4095 -> - <> = <<4095:12>>, - [I1, I2, I3]; - Size =< 8191 -> - <> = <<8191:13>>, - [I1, I2, I3]; - Size =< 16383 -> - <> = <<16383:14>>, - [I1, I2, I3]; - Size =< 32767 -> - <> = <<32767:15>>, - [I1, I2, I3, I4]; - Size =< 65535 -> - <> = <<65535:16>>, - [I1, I2, I3, I4] - end. - diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl b/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl deleted file mode 100644 index 30b188d..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue4.erl +++ /dev/null @@ -1,11662 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Static Priority Queue.== -%%% This priority queue implementation depends on a static number of priorities -%%% (-128 (high) to 128 (low)) so that tuple access times can be exploited for -%%% quick in/out priority queue operations. This implementation was created to -%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% -%%% queue_remove_unique/2 is based on queue:filter/2 -%%% which is under the Apache License 2.0: -%%% -%%% Copyright Ericsson AB 1996-2016. All Rights Reserved. -%%% -%%% Licensed under the Apache License, Version 2.0 (the "License"); -%%% you may not use this file except in compliance with the License. -%%% You may obtain a copy of the License at -%%% -%%% http://www.apache.org/licenses/LICENSE-2.0 -%%% -%%% Unless required by applicable law or agreed to in writing, software -%%% distributed under the License is distributed on an "AS IS" BASIS, -%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%%% See the License for the specific language governing permissions and -%%% limitations under the License. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue4). --author('mjtruog at protonmail dot com'). - -%% external interface --export([filter/2, % O(N) - filter/3, % O(N) - in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - len/1, % O(1) - new/0, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - remove_unique/2, % O(N) but smaller constant than filter/2 - remove_unique/3, % O(N) but smaller constant than filter/3 - to_list/1, % O(N) - to_plist/1, % O(N) - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --type priority() :: -128..128. --ifdef(ERLANG_OTP_VERSION_16). --type pqueue4(_) :: - {priority() | 'empty', % current priority - non_neg_integer(), % total size - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. --else. --type pqueue4(T) :: - {priority() | 'empty', % current priority - non_neg_integer(), % total size - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - queue:queue(T), - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}. --endif. --type pqueue4() :: pqueue4(any()). --export_type([pqueue4/0, pqueue4/1]). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Filter the priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec filter(fun((any()) -> boolean()), pqueue4()) -> pqueue4(). - -filter(F, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - Q; -filter(F, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - filter_all(Pc, F, Q). - -filter_all(_, _, {_, 0, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) -> - Q; -filter_all(128, F, Q) -> - filter_priority(128, F, Q); -filter_all(P, F, Q) when is_integer(P) -> - filter_all(P + 1, F, filter_priority(P, F, Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Filter a specific priority within the priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec filter(fun((any()) -> boolean()), integer(), pqueue4()) -> pqueue4(). - -filter(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -filter(F, P, Q) when is_function(F, 1) -> - filter_priority(P, F, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(any(), pqueue4()) -> pqueue4(). - -in(X, Q) -> - in(X, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(any(), integer(), pqueue4()) -> pqueue4(). - -in(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -in(X, P, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - in_higher(P, Q, X); % (in a higher priority) -in(X, P, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when P < Pc -> - in_higher(P, Q, X); % (in a higher priority) -in(X, P, Q) -> - in_lower(P, Q, X). % (in a lower priority) - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue4()) -> 'true' | 'false'. - -is_empty({_, 0, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - true; -is_empty({_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue4()) -> 'true' | 'false'. - -is_queue({Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) - when is_integer(Size), - tuple_size(Qn128) == 16, tuple_size(Qn112) == 16, - tuple_size(Qn96) == 16, tuple_size(Qn80) == 16, - tuple_size(Qn64) == 16, tuple_size(Qn48) == 16, - tuple_size(Qn32) == 16, tuple_size(Qn16) == 16, - tuple_size(Qp16) == 16, tuple_size(Qp32) == 16, - tuple_size(Qp48) == 16, tuple_size(Qp64) == 16, - tuple_size(Qp80) == 16, tuple_size(Qp96) == 16, - tuple_size(Qp112) == 16, tuple_size(Qp128) == 16 -> - (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue4()) -> non_neg_integer(). - -len({_, Size, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - Size. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue4(). - -new() -> - {empty, % current priority - 0, % current size - erlang:make_tuple(16, queue:new()), % priority [-128..-113] - erlang:make_tuple(16, queue:new()), % priority [-112.. -97] - erlang:make_tuple(16, queue:new()), % priority [ -96.. -81] - erlang:make_tuple(16, queue:new()), % priority [ -80.. -65] - erlang:make_tuple(16, queue:new()), % priority [ -64.. -49] - erlang:make_tuple(16, queue:new()), % priority [ -48.. -33] - erlang:make_tuple(16, queue:new()), % priority [ -32.. -17] - erlang:make_tuple(16, queue:new()), % priority [ -16.. -1] - queue:new(), % priority 0 (default) - erlang:make_tuple(16, queue:new()), % priority [ 1.. 16] - erlang:make_tuple(16, queue:new()), % priority [ 17.. 32] - erlang:make_tuple(16, queue:new()), % priority [ 33.. 48] - erlang:make_tuple(16, queue:new()), % priority [ 49.. 64] - erlang:make_tuple(16, queue:new()), % priority [ 65.. 80] - erlang:make_tuple(16, queue:new()), % priority [ 81.. 96] - erlang:make_tuple(16, queue:new()), % priority [ 97.. 112] - erlang:make_tuple(16, queue:new())}. % priority [ 113.. 128] - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue4()) -> - {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. - -out({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue4()) -> - {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. - -out(P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -out(_, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out(P, Q) -> - out_specific(P, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue4()) -> - {{'value', any(), integer()}, pqueue4()} | {'empty', pqueue4()}. - -pout({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -pout({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - out_current_p(Pc, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Remove a unique value from the priority queue with a binary predicate.=== -%% O(N) but smaller constant than filter/2 -%% @end -%%------------------------------------------------------------------------- - --spec remove_unique(fun((any()) -> boolean()), pqueue4()) -> - {boolean(), pqueue4()}. - -remove_unique(F, {_, 0, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - {false, Q}; -remove_unique(F, {Pc, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - remove_unique_all(Pc, F, Q). - -remove_unique_all(128, F, Q) -> - remove_unique_p(128, F, Q); -remove_unique_all(P, F, Q) when is_integer(P) -> - case remove_unique_p(P, F, Q) of - {true, _} = Result -> - Result; - {false, Q} -> - remove_unique_all(P + 1, F, Q) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Remove a unique value in a specific priority within the priority queue with a binary predicate.=== -%% O(N) but smaller constant than filter/3 -%% @end -%%------------------------------------------------------------------------- - --spec remove_unique(fun((any()) -> boolean()), integer(), pqueue4()) -> - {boolean(), pqueue4()}. - -remove_unique(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -remove_unique(F, P, Q) when is_function(F, 1) -> - remove_unique_p(P, F, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue4()) -> list(). - -to_list(Q) -> - to_list([], out(Q)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, Q}) -> - to_list([Value | L], out(Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list with priorities.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_plist(pqueue4()) -> list({priority(), list()}). - -to_plist(Q) -> - to_plist([], [], undefined, pout(Q)). -to_plist(L, [], _, {empty, _}) -> - lists:reverse(L); -to_plist(L, Lp, Pc, {empty, _}) -> - lists:reverse([{Pc, lists:reverse(Lp)} | L]); -to_plist(L, Lp, Pc, {{value, Value, Pc}, Q}) -> - to_plist(L, [Value | Lp], Pc, pout(Q)); -to_plist(L, [], _, {{value, Value, Pc}, Q}) -> - to_plist(L, [Value], Pc, pout(Q)); -to_plist(L, Lp, P, {{value, Value, Pc}, Q}) -> - to_plist([{P, lists:reverse(Lp)} | L], [Value], Pc, pout(Q)). - -%%------------------------------------------------------------------------- -%% @private -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue4:new(), - true = pqueue4:is_queue(Q0), - Q1 = pqueue4:in(20, 20, Q0), - Q2 = pqueue4:in(19, 19, Q1), - Q3 = pqueue4:in(18, 18, Q2), - Q4 = pqueue4:in(17, 17, Q3), - Q5 = pqueue4:in(16, 16, Q4), - Q6 = pqueue4:in(15, 15, Q5), - Q7 = pqueue4:in(14, 14, Q6), - Q8 = pqueue4:in(13, 13, Q7), - Q9 = pqueue4:in(12, 12, Q8), - Q10 = pqueue4:in(11, 11, Q9), - Q11 = pqueue4:in(10, 10, Q10), - Q12 = pqueue4:in(9, 9, Q11), - Q13 = pqueue4:in(8, 8, Q12), - Q14 = pqueue4:in(7, 7, Q13), - Q15 = pqueue4:in(6, 6, Q14), - Q16 = pqueue4:in(5, 5, Q15), - Q17 = pqueue4:in(4, 4, Q16), - Q18 = pqueue4:in(3, 3, Q17), - Q19 = pqueue4:in(2, 2, Q18), - Q20 = pqueue4:in(1, 1, Q19), - Q21 = pqueue4:in(0, 0, Q20), - Q22 = pqueue4:in(-1, -1, Q21), - Q23 = pqueue4:in(-2, -2, Q22), - Q24 = pqueue4:in(-3, -3, Q23), - Q25 = pqueue4:in(-4, -4, Q24), - Q26 = pqueue4:in(-5, -5, Q25), - Q27 = pqueue4:in(-6, -6, Q26), - Q28 = pqueue4:in(-7, -7, Q27), - Q29 = pqueue4:in(-8, -8, Q28), - Q30 = pqueue4:in(-9, -9, Q29), - Q31 = pqueue4:in(-10, -10, Q30), - Q32 = pqueue4:in(-11, -11, Q31), - Q33 = pqueue4:in(-12, -12, Q32), - Q34 = pqueue4:in(-13, -13, Q33), - Q35 = pqueue4:in(-14, -14, Q34), - Q36 = pqueue4:in(-15, -15, Q35), - Q37 = pqueue4:in(-16, -16, Q36), - Q38 = pqueue4:in(-17, -17, Q37), - Q39 = pqueue4:in(-18, -18, Q38), - Q40 = pqueue4:in(-19, -19, Q39), - Q41 = pqueue4:in(-20, -20, Q40), - Q42 = pqueue4:in(-20, -20, Q41), - Q43 = pqueue4:in(-19, -19, Q42), - Q44 = pqueue4:in(-18, -18, Q43), - Q45 = pqueue4:in(-17, -17, Q44), - Q46 = pqueue4:in(-16, -16, Q45), - Q47 = pqueue4:in(-15, -15, Q46), - Q48 = pqueue4:in(-14, -14, Q47), - Q49 = pqueue4:in(-13, -13, Q48), - Q50 = pqueue4:in(-12, -12, Q49), - Q51 = pqueue4:in(-11, -11, Q50), - Q52 = pqueue4:in(-10, -10, Q51), - Q53 = pqueue4:in(-9, -9, Q52), - Q54 = pqueue4:in(-8, -8, Q53), - Q55 = pqueue4:in(-7, -7, Q54), - Q56 = pqueue4:in(-6, -6, Q55), - Q57 = pqueue4:in(-5, -5, Q56), - Q58 = pqueue4:in(-4, -4, Q57), - Q59 = pqueue4:in(-3, -3, Q58), - Q60 = pqueue4:in(-2, -2, Q59), - Q61 = pqueue4:in(-1, -1, Q60), - Q62 = pqueue4:in(0, 0, Q61), - Q63 = pqueue4:in(1, 1, Q62), - Q64 = pqueue4:in(2, 2, Q63), - Q65 = pqueue4:in(3, 3, Q64), - Q66 = pqueue4:in(4, 4, Q65), - Q67 = pqueue4:in(5, 5, Q66), - Q68 = pqueue4:in(6, 6, Q67), - Q69 = pqueue4:in(7, 7, Q68), - Q70 = pqueue4:in(8, 8, Q69), - Q71 = pqueue4:in(9, 9, Q70), - Q72 = pqueue4:in(10, 10, Q71), - Q73 = pqueue4:in(11, 11, Q72), - Q74 = pqueue4:in(12, 12, Q73), - Q75 = pqueue4:in(13, 13, Q74), - Q76 = pqueue4:in(14, 14, Q75), - Q77 = pqueue4:in(15, 15, Q76), - Q78 = pqueue4:in(16, 16, Q77), - Q79 = pqueue4:in(17, 17, Q78), - Q80 = pqueue4:in(18, 18, Q79), - Q81 = pqueue4:in(19, 19, Q80), - Q82 = pqueue4:in(20, 20, Q81), - true = pqueue4:is_queue(Q82), - 82 = pqueue4:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue4:to_list(Q82), - [{-20, [-20, -20]}, {-19, [-19, -19]}, {-18, [-18, -18]}, - {-17, [-17, -17]}, {-16, [-16, -16]}, {-15, [-15, -15]}, - {-14, [-14, -14]}, {-13, [-13, -13]}, {-12, [-12, -12]}, - {-11, [-11, -11]}, {-10, [-10, -10]}, {-9, [-9, -9]}, - {-8, [-8, -8]}, {-7, [-7, -7]}, {-6, [-6, -6]}, - {-5, [-5, -5]}, {-4, [-4, -4]}, {-3, [-3, -3]}, - {-2, [-2, -2]}, {-1, [-1, -1]}, {0, [0, 0]}, - {1, [1, 1]}, {2, [2, 2]}, {3, [3, 3]}, - {4, [4, 4]}, {5, [5, 5]}, {6, [6, 6]}, - {7, [7, 7]}, {8, [8, 8]}, {9, [9, 9]}, - {10, [10, 10]}, {11, [11, 11]}, {12, [12, 12]}, - {13, [13, 13]}, {14, [14, 14]}, {15, [15, 15]}, - {16, [16, 16]}, {17, [17, 17]}, {18, [18, 18]}, - {19, [19, 19]}, {20, [20, 20]}] = pqueue4:to_plist(Q82), - {{value, -20}, Q83} = pqueue4:out(Q82), - {{value, -20}, Q84} = pqueue4:out(Q83), - {{value, -19}, Q85} = pqueue4:out(Q84), - {{value, -19}, Q86} = pqueue4:out(Q85), - {{value, -18}, Q87} = pqueue4:out(Q86), - {{value, -18}, Q88} = pqueue4:out(Q87), - {{value, 0}, Q89} = pqueue4:out(0, Q88), - {{value, 0}, Q90} = pqueue4:out(0, Q89), - {empty, _} = pqueue4:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue4:pout(Q90), - {{value, -17, -17}, Q92} = pqueue4:pout(Q91), - {{value, -16, -16}, Q93} = pqueue4:pout(Q92), - {{value, -16, -16}, Q94} = pqueue4:pout(Q93), - {{value, -15, -15}, Q95} = pqueue4:pout(Q94), - {{value, -15, -15}, Q96} = pqueue4:pout(Q95), - {{value, -14, -14}, Q97} = pqueue4:pout(Q96), - {{value, -14, -14}, Q98} = pqueue4:pout(Q97), - {{value, -13, -13}, Q99} = pqueue4:pout(Q98), - {{value, -13, -13}, Q100} = pqueue4:pout(Q99), - {{value, -12, -12}, Q101} = pqueue4:pout(Q100), - {{value, -12, -12}, Q102} = pqueue4:pout(Q101), - {{value, -11, -11}, Q103} = pqueue4:pout(Q102), - {{value, -11, -11}, Q104} = pqueue4:pout(Q103), - {{value, -10, -10}, Q105} = pqueue4:pout(Q104), - {{value, -10, -10}, Q106} = pqueue4:pout(Q105), - {{value, -9, -9}, Q107} = pqueue4:pout(Q106), - {{value, -9, -9}, Q108} = pqueue4:pout(Q107), - {{value, -8, -8}, Q109} = pqueue4:pout(Q108), - {{value, -8, -8}, Q110} = pqueue4:pout(Q109), - {{value, -7, -7}, Q111} = pqueue4:pout(Q110), - {{value, -7, -7}, Q112} = pqueue4:pout(Q111), - {{value, -6, -6}, Q113} = pqueue4:pout(Q112), - {{value, -6, -6}, Q114} = pqueue4:pout(Q113), - {{value, -5, -5}, Q115} = pqueue4:pout(Q114), - {{value, -5, -5}, Q116} = pqueue4:pout(Q115), - {{value, -4, -4}, Q117} = pqueue4:pout(Q116), - {{value, -4, -4}, Q118} = pqueue4:pout(Q117), - {{value, -3, -3}, Q119} = pqueue4:pout(Q118), - {{value, -3, -3}, Q120} = pqueue4:pout(Q119), - {{value, -2, -2}, Q121} = pqueue4:pout(Q120), - {{value, -2, -2}, Q122} = pqueue4:pout(Q121), - {{value, -1, -1}, Q123} = pqueue4:pout(Q122), - {{value, -1, -1}, Q124} = pqueue4:pout(Q123), - {{value, 1, 1}, Q125} = pqueue4:pout(Q124), - {{value, 1, 1}, Q126} = pqueue4:pout(Q125), - {{value, 2, 2}, Q127} = pqueue4:pout(Q126), - {{value, 2, 2}, Q128} = pqueue4:pout(Q127), - {{value, 3, 3}, Q129} = pqueue4:pout(Q128), - {{value, 3, 3}, Q130} = pqueue4:pout(Q129), - {{value, 4, 4}, Q131} = pqueue4:pout(Q130), - {{value, 4, 4}, Q132} = pqueue4:pout(Q131), - {{value, 5, 5}, Q133} = pqueue4:pout(Q132), - {{value, 5, 5}, Q134} = pqueue4:pout(Q133), - {{value, 6, 6}, Q135} = pqueue4:pout(Q134), - {{value, 6, 6}, Q136} = pqueue4:pout(Q135), - {{value, 7, 7}, Q137} = pqueue4:pout(Q136), - {{value, 7, 7}, Q138} = pqueue4:pout(Q137), - {{value, 8, 8}, Q139} = pqueue4:pout(Q138), - {{value, 8, 8}, Q140} = pqueue4:pout(Q139), - {{value, 9, 9}, Q141} = pqueue4:pout(Q140), - {{value, 9, 9}, Q142} = pqueue4:pout(Q141), - {{value, 10, 10}, Q143} = pqueue4:pout(Q142), - {{value, 10, 10}, Q144} = pqueue4:pout(Q143), - {{value, 11, 11}, Q145} = pqueue4:pout(Q144), - {{value, 11, 11}, Q146} = pqueue4:pout(Q145), - {{value, 12, 12}, Q147} = pqueue4:pout(Q146), - {{value, 12, 12}, Q148} = pqueue4:pout(Q147), - {{value, 13, 13}, Q149} = pqueue4:pout(Q148), - {{value, 13, 13}, Q150} = pqueue4:pout(Q149), - {{value, 14, 14}, Q151} = pqueue4:pout(Q150), - {{value, 14, 14}, Q152} = pqueue4:pout(Q151), - {{value, 15, 15}, Q153} = pqueue4:pout(Q152), - {{value, 15, 15}, Q154} = pqueue4:pout(Q153), - {{value, 16, 16}, Q155} = pqueue4:pout(Q154), - {{value, 16, 16}, Q156} = pqueue4:pout(Q155), - {{value, 17, 17}, Q157} = pqueue4:pout(Q156), - {{value, 17, 17}, Q158} = pqueue4:pout(Q157), - {{value, 18, 18}, Q159} = pqueue4:pout(Q158), - {{value, 18, 18}, Q160} = pqueue4:pout(Q159), - {{value, 19, 19}, Q161} = pqueue4:pout(Q160), - {{value, 19, 19}, Q162} = pqueue4:pout(Q161), - {{value, 20, 20}, Q163} = pqueue4:pout(Q162), - {{value, 20, 20}, Q164} = pqueue4:pout(Q163), - {{value, 20}, Q164} = pqueue4:out(Q163), - {{value, 20}, Q164} = pqueue4:out(20, Q163), - true = pqueue4:is_empty(Q164), - empty = erlang:element(1, Q164), % current priority - 0 = erlang:element(2, Q164), % size - {empty, Q164} = pqueue4:pout(Q164), - {empty, Q164} = pqueue4:out(Q164), - {empty, Q164} = pqueue4:out(20, Q164), - - Queue0 = queue:new(), - "{[],[]}" = lists:flatten(io_lib:format("~p", [Queue0])), - Queue1 = queue:in(1, Queue0), - Queue2 = queue:in(2, Queue1), - Queue3 = queue:in(3, Queue2), - {{value, 1}, _} = queue:out(Queue2), - "{[3,2],[1]}" = lists:flatten(io_lib:format("~p", [Queue3])), - {true, {[3],[1]}} = queue_remove_unique(fun(I) -> I == 2 end, {[3,2],[1]}), - Queue4 = queue:filter(fun(I) -> not (I == 2) end, Queue3), - "{[3],[1]}" = lists:flatten(io_lib:format("~p", [Queue4])), - 2 = queue:len(Queue4), - {{value, 1}, _} = queue:out(Queue4), - [1, 3] = queue:to_list(Queue4), - - Q166 = pqueue4:new(), - true = pqueue4:is_queue(Q166), - Q167 = pqueue4:in(6, 1, Q166), - Q168 = pqueue4:in(7, 1, Q167), - Q169 = pqueue4:in(8, 1, Q168), - Q170 = pqueue4:in(3, 0, Q169), - Q171 = pqueue4:in(4, 0, Q170), - Q172 = pqueue4:in(5, 0, Q171), - Q173 = pqueue4:in(0, -1, Q172), - Q174 = pqueue4:in(1, -1, Q173), - Q175 = pqueue4:in(2, -1, Q174), - [{-1, [0, 1, 2]}, {0, [3, 4, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q175), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> I > 5 end, Q175)), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> I < 3 end, Q175)), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> (I < 1) orelse (I > 6) end, Q175)), - {true, Q176} = pqueue4:remove_unique(fun(I) -> I == 4 end, Q175), - [{-1, [0, 1, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q176), - {true, Q177} = pqueue4:remove_unique(fun(I) -> I == 1 end, Q176), - [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q177), - {true, Q178} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q177), - [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 8]}] = pqueue4:to_plist(Q178), - 6 = pqueue4:len(Q178), - {{value, 0, -1}, Q179} = pqueue4:pout(Q178), - {{value, 2}, Q180} = pqueue4:out(Q179), - {{value, 6}, Q181} = pqueue4:out(1, Q180), - {false, Q181} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q181), - [{0, [3, 5]}, {1, [8]}] = pqueue4:to_plist(Q181), - {true, Q182} = pqueue4:remove_unique(fun(I) -> I == 5 end, Q181), - {true, Q183} = pqueue4:remove_unique(fun(I) -> I == 8 end, 1, Q182), - {true, Q184} = pqueue4:remove_unique(fun(I) -> I == 3 end, Q183), - {empty, Q184} = pqueue4:pout(Q184), - {empty, Q184} = pqueue4:out(Q184), - {empty, Q184} = pqueue4:out(0, Q184), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -%% @hidden --define(FILTER_P_Qn128(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn112(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn96(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn80(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn64(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn48(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn32(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn16(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp16(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp32(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp48(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp64(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp80(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}). --define(FILTER_P_Qp96(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}). --define(FILTER_P_Qp112(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}). --define(FILTER_P_Qp128(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}). - -?FILTER_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?FILTER_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?FILTER_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?FILTER_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?FILTER_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?FILTER_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?FILTER_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?FILTER_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?FILTER_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?FILTER_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?FILTER_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?FILTER_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?FILTER_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?FILTER_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?FILTER_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?FILTER_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?FILTER_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?FILTER_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?FILTER_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?FILTER_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?FILTER_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?FILTER_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?FILTER_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?FILTER_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -filter_priority(0, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - NewQ0 = queue:filter(F, Q0), - NewSize = Size - (queue:len(Q0) - queue:len(NewQ0)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?FILTER_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?FILTER_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?FILTER_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?FILTER_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?FILTER_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?FILTER_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?FILTER_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?FILTER_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?FILTER_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?FILTER_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?FILTER_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?FILTER_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?FILTER_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?FILTER_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?FILTER_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?FILTER_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?FILTER_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?FILTER_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?FILTER_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?FILTER_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?FILTER_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?FILTER_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?FILTER_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?FILTER_P_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - -%% @hidden --define(IN_HIGHER_Qn128(P, V), -in_higher(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - V, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn112(P, V), -in_higher(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, - V, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn96(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, - V, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn80(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, - V, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn64(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, - V, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn48(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, - V, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn32(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn16(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp16(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp32(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp48(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp64(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V, - Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp80(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V, - Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp96(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V, - Qp112, Qp128}). --define(IN_HIGHER_Qp112(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V, - Qp128}). --define(IN_HIGHER_Qp128(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V}). - -?IN_HIGHER_Qn128(-128, - {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-127, - {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-126, - {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-125, - {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-124, - {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); -?IN_HIGHER_Qn128(-114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); -?IN_HIGHER_Qn128(-113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); -?IN_HIGHER_Qn112(-112, - {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-111, - {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-110, - {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-109, - {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-108, - {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); -?IN_HIGHER_Qn112(-98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); -?IN_HIGHER_Qn112(-97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); -?IN_HIGHER_Qn96(-96, - {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-95, - {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-94, - {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-93, - {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-92, - {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); -?IN_HIGHER_Qn96(-82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); -?IN_HIGHER_Qn96(-81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); -?IN_HIGHER_Qn80(-80, - {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-79, - {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-78, - {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-77, - {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-76, - {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); -?IN_HIGHER_Qn80(-66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); -?IN_HIGHER_Qn80(-65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); -?IN_HIGHER_Qn64(-64, - {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-63, - {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-62, - {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-61, - {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-60, - {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); -?IN_HIGHER_Qn64(-50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); -?IN_HIGHER_Qn64(-49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); -?IN_HIGHER_Qn48(-48, - {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-47, - {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-46, - {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-45, - {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-44, - {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); -?IN_HIGHER_Qn48(-34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); -?IN_HIGHER_Qn48(-33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); -?IN_HIGHER_Qn32(-32, - {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-31, - {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-30, - {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-29, - {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-28, - {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); -?IN_HIGHER_Qn32(-18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); -?IN_HIGHER_Qn32(-17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); -?IN_HIGHER_Qn16(-16, - {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-15, - {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-14, - {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-13, - {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-12, - {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); -?IN_HIGHER_Qn16(-2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); -?IN_HIGHER_Qn16(-1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); -in_higher(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {0, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - queue:in(X, Q0), - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?IN_HIGHER_Qp16(1, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(2, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(3, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(4, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(5, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); -?IN_HIGHER_Qp16(15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); -?IN_HIGHER_Qp16(16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); -?IN_HIGHER_Qp32(17, - {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(18, - {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(19, - {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(20, - {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(21, - {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); -?IN_HIGHER_Qp32(31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); -?IN_HIGHER_Qp32(32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); -?IN_HIGHER_Qp48(33, - {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(34, - {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(35, - {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(36, - {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(37, - {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); -?IN_HIGHER_Qp48(47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); -?IN_HIGHER_Qp48(48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); -?IN_HIGHER_Qp64(49, - {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(50, - {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(51, - {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(52, - {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(53, - {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); -?IN_HIGHER_Qp64(63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); -?IN_HIGHER_Qp64(64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); -?IN_HIGHER_Qp80(65, - {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(66, - {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(67, - {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(68, - {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(69, - {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); -?IN_HIGHER_Qp80(79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); -?IN_HIGHER_Qp80(80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); -?IN_HIGHER_Qp96(81, - {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(82, - {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(83, - {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(84, - {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(85, - {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); -?IN_HIGHER_Qp96(95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); -?IN_HIGHER_Qp96(96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); -?IN_HIGHER_Qp112(97, - {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(98, - {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(99, - {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(100, - {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(101, - {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); -?IN_HIGHER_Qp112(111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); -?IN_HIGHER_Qp112(112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); -?IN_HIGHER_Qp128(113, - {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(114, - {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(115, - {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(116, - {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(117, - {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); -?IN_HIGHER_Qp128(127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); -?IN_HIGHER_Qp128(128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). - -%% @hidden --define(IN_LOWER_Qn128(P, V), -in_lower(P, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - V, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn112(P, V), -in_lower(P, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, - V, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn96(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, - V, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn80(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, - V, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn64(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, - V, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn48(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, - V, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn32(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn16(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp16(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp32(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp48(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp64(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V, - Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp80(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V, - Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp96(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V, - Qp112, Qp128}). --define(IN_LOWER_Qp112(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V, - Qp128}). --define(IN_LOWER_Qp128(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V}). - -?IN_LOWER_Qn128(-128, - {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-127, - {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-126, - {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-125, - {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-124, - {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); -?IN_LOWER_Qn128(-114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); -?IN_LOWER_Qn128(-113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); -?IN_LOWER_Qn112(-112, - {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-111, - {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-110, - {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-109, - {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-108, - {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); -?IN_LOWER_Qn112(-98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); -?IN_LOWER_Qn112(-97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); -?IN_LOWER_Qn96(-96, - {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-95, - {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-94, - {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-93, - {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-92, - {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); -?IN_LOWER_Qn96(-82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); -?IN_LOWER_Qn96(-81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); -?IN_LOWER_Qn80(-80, - {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-79, - {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-78, - {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-77, - {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-76, - {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); -?IN_LOWER_Qn80(-66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); -?IN_LOWER_Qn80(-65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); -?IN_LOWER_Qn64(-64, - {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-63, - {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-62, - {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-61, - {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-60, - {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); -?IN_LOWER_Qn64(-50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); -?IN_LOWER_Qn64(-49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); -?IN_LOWER_Qn48(-48, - {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-47, - {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-46, - {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-45, - {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-44, - {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); -?IN_LOWER_Qn48(-34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); -?IN_LOWER_Qn48(-33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); -?IN_LOWER_Qn32(-32, - {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-31, - {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-30, - {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-29, - {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-28, - {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); -?IN_LOWER_Qn32(-18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); -?IN_LOWER_Qn32(-17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); -?IN_LOWER_Qn16(-16, - {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-15, - {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-14, - {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-13, - {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-12, - {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); -?IN_LOWER_Qn16(-2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); -?IN_LOWER_Qn16(-1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); -in_lower(0, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - queue:in(X, Q0), - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?IN_LOWER_Qp16(1, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(2, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(3, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(4, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(5, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); -?IN_LOWER_Qp16(15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); -?IN_LOWER_Qp16(16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); -?IN_LOWER_Qp32(17, - {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(18, - {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(19, - {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(20, - {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(21, - {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); -?IN_LOWER_Qp32(31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); -?IN_LOWER_Qp32(32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); -?IN_LOWER_Qp48(33, - {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(34, - {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(35, - {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(36, - {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(37, - {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); -?IN_LOWER_Qp48(47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); -?IN_LOWER_Qp48(48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); -?IN_LOWER_Qp64(49, - {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(50, - {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(51, - {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(52, - {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(53, - {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); -?IN_LOWER_Qp64(63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); -?IN_LOWER_Qp64(64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); -?IN_LOWER_Qp80(65, - {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(66, - {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(67, - {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(68, - {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(69, - {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); -?IN_LOWER_Qp80(79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); -?IN_LOWER_Qp80(80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); -?IN_LOWER_Qp96(81, - {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(82, - {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(83, - {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(84, - {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(85, - {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); -?IN_LOWER_Qp96(95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); -?IN_LOWER_Qp96(96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); -?IN_LOWER_Qp112(97, - {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(98, - {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(99, - {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(100, - {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(101, - {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); -?IN_LOWER_Qp112(111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); -?IN_LOWER_Qp112(112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); -?IN_LOWER_Qp128(113, - {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(114, - {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(115, - {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(116, - {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(117, - {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); -?IN_LOWER_Qp128(127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); -?IN_LOWER_Qp128(128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). - -%% @hidden --define(OUT_CURRENT_Qn128(P, V1, V2, V3), -out_current(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn112(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn96(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn80(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn64(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn48(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn32(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn16(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp16(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp32(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp48(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp64(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp80(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp96(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp112(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}} - end). --define(OUT_CURRENT_Qp128(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}} - end). - -?OUT_CURRENT_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_CURRENT_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_CURRENT_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_CURRENT_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_CURRENT_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_CURRENT_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_CURRENT_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_CURRENT_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_CURRENT_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_CURRENT_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_CURRENT_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_CURRENT_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_CURRENT_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_CURRENT_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_CURRENT_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_CURRENT_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_current(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, NewQ0} = queue:out(Q0), - if - Value =:= empty -> - out_current(1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> 0 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end; -?OUT_CURRENT_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_CURRENT_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_CURRENT_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_CURRENT_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_CURRENT_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_CURRENT_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_CURRENT_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_CURRENT_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_CURRENT_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_CURRENT_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_CURRENT_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_CURRENT_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_CURRENT_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_CURRENT_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_CURRENT_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -out_current(128, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, NewQp128} = queue:out(Qp128), - if - Value =:= empty -> - {empty, - {empty, - 0, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}}; - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> 128 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} - end. - -%% @hidden --define(OUT_CURRENT_P_Qn128(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn112(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn96(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn80(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn64(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn48(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn32(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn16(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp16(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp32(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp48(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp64(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp80(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp96(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp112(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}} - end). --define(OUT_CURRENT_P_Qp128(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}} - end). - -?OUT_CURRENT_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_CURRENT_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_CURRENT_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_CURRENT_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_CURRENT_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_CURRENT_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_CURRENT_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_CURRENT_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_CURRENT_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_CURRENT_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_CURRENT_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_CURRENT_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_CURRENT_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_CURRENT_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_CURRENT_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_CURRENT_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_current_p(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(Q0) of - {empty, _} -> - out_current_p(1, Q); - {{value, X}, NewQ0} -> - NewSize = Size - 1, - {{value, X, 0}, - {if NewSize == 0 -> empty; true -> 0 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end; -?OUT_CURRENT_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_CURRENT_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_CURRENT_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_CURRENT_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_CURRENT_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_CURRENT_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_CURRENT_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_CURRENT_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_CURRENT_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_CURRENT_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_CURRENT_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_CURRENT_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_CURRENT_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_CURRENT_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_CURRENT_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -out_current_p(128, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - case queue:out(Qp128) of - {empty, _} -> - {empty, - {empty, - 0, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}}; - {{value, X}, NewQp128} -> - NewSize = Size - 1, - {{value, X, 128}, - {if NewSize == 0 -> empty; true -> 128 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} - end. - -%% @hidden --define(OUT_SPECIFIC_Qn128(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn112(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn96(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn80(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn64(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn48(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn32(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn16(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp16(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp32(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp48(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp64(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp80(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp96(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp112(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}}). --define(OUT_SPECIFIC_Qp128(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}}). - -?OUT_SPECIFIC_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_SPECIFIC_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_SPECIFIC_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_SPECIFIC_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_SPECIFIC_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_SPECIFIC_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_SPECIFIC_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_SPECIFIC_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_SPECIFIC_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_SPECIFIC_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_SPECIFIC_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_SPECIFIC_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_SPECIFIC_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_SPECIFIC_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_SPECIFIC_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_SPECIFIC_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_specific(0, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, NewQ0} = queue:out(Q0), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; -?OUT_SPECIFIC_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_SPECIFIC_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_SPECIFIC_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_SPECIFIC_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_SPECIFIC_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_SPECIFIC_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_SPECIFIC_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_SPECIFIC_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_SPECIFIC_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_SPECIFIC_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_SPECIFIC_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_SPECIFIC_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_SPECIFIC_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_SPECIFIC_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_SPECIFIC_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?OUT_SPECIFIC_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - -%% @hidden --define(REMOVE_UNIQ_P_Qn128(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn112(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn96(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn80(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn64(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn48(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn32(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn16(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp16(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp32(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp48(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp64(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp80(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp96(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp112(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}}). --define(REMOVE_UNIQ_P_Qp128(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}}). - -?REMOVE_UNIQ_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?REMOVE_UNIQ_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?REMOVE_UNIQ_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?REMOVE_UNIQ_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?REMOVE_UNIQ_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?REMOVE_UNIQ_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?REMOVE_UNIQ_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?REMOVE_UNIQ_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -remove_unique_p(0, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, NewQ0} = queue_remove_unique(F, Q0), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; -?REMOVE_UNIQ_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?REMOVE_UNIQ_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?REMOVE_UNIQ_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?REMOVE_UNIQ_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?REMOVE_UNIQ_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?REMOVE_UNIQ_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?REMOVE_UNIQ_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?REMOVE_UNIQ_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq4())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - -%%------------------------------------------------------------------------- -%% @hidden -%% remove a unique value from a queue based on a binary predicate, -%% traversal order is undefined to keep it efficient (i.e., shouldn't matter) -%% (based on the implementation of queue:filter/2 -%% which is under the Apache License 2.0) -%%------------------------------------------------------------------------- - --spec queue_remove_unique(F :: fun((any()) -> boolean()), - Q :: {list(), list()}) -> - {boolean(), {list(), list()}}. - -queue_remove_unique(Fun, {R0, F0} = Q) - when is_function(Fun, 1), is_list(R0), is_list(F0) -> - case queue_remove_unique_f(Fun, F0) of - {true, []} -> - {true, queue_r2f(R0)}; - {true, F1} -> - {true, {R0, F1}}; - {false, F1} -> - %true = F1 == F0, - case queue_remove_unique_f(Fun, R0) of % backwards - {true, []} -> - {true, queue_f2r(F1)}; - {true, R1} -> - {true, {R1, F1}}; - {false, _} -> - {false, Q} - end - end; -queue_remove_unique(Fun, Q) -> - erlang:error(badarg, [Fun,Q]). - -% Call Fun in front to back order -queue_remove_unique_f(_, [] = F) -> - {false, F}; -queue_remove_unique_f(Fun, F) -> - queue_remove_unique_f(F, [], F, Fun). - -queue_remove_unique_f([], _, F, _) -> - {false, F}; -queue_remove_unique_f([X | F0], F1, F, Fun) -> - case Fun(X) of - true -> - {true, lists:reverse(F1, F0)}; - false -> - queue_remove_unique_f(F0, [X | F1], F, Fun) - end. - --compile({inline, [{queue_r2f,1},{queue_f2r,1}]}). - -% Move half of elements from R to F, if there are at least three -queue_r2f([]) -> - {[],[]}; -queue_r2f([_]=R) -> - {[],R}; -queue_r2f([X,Y]) -> - {[X],[Y]}; -queue_r2f(List) -> - {FF,RR} = lists:split(length(List) div 2 + 1, List), - {FF,lists:reverse(RR, [])}. - -% Move half of elements from F to R, if there are enough -queue_f2r([]) -> - {[],[]}; -queue_f2r([_]=F) -> - {F,[]}; -queue_f2r([X,Y]) -> - {[Y],[X]}; -queue_f2r(List) -> - {FF,RR} = lists:split(length(List) div 2 + 1, List), - {lists:reverse(RR, []),FF}. - diff --git a/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl b/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl deleted file mode 100644 index cedffe0..0000000 --- a/aoc2023/build/dev/erlang/pqueue/src/pqueue_test.hrl +++ /dev/null @@ -1,49 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% pqueue eunit common functionality -%%% -%%% MIT License -%%% -%%% Copyright (c) 2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%%------------------------------------------------------------------------ - --ifndef(_assertOk). --define(_assertOk(Expr), ?_assertEqual(ok, Expr)). --endif. - --ifdef(CLOUDI_TEST_TIMEOUT). --define(TEST_TIMEOUT, ?CLOUDI_TEST_TIMEOUT). % seconds --else. --define(TEST_TIMEOUT, 10). % seconds --endif. --ifndef(CLOUDI_LONG_TEST_TIMEOUT). --define(CLOUDI_LONG_TEST_TIMEOUT, 60). % minutes --endif. - -test_condition(_, 0) -> - []; -test_condition(L, LongTestTimeout) - when LongTestTimeout > 0 -> - {timeout, LongTestTimeout * 60, L}. - diff --git a/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl b/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl deleted file mode 100644 index 6702960..0000000 --- a/aoc2023/build/dev/erlang/pqueue/test/pqueue_proper.erl +++ /dev/null @@ -1,156 +0,0 @@ --module(pqueue_proper). --ifdef(TEST). --include_lib("proper/include/proper.hrl"). - --behaviour(proper_statem). - --export([qc_pq/0, qc_pq2/0, qc_pq3/0, qc_pq4/0, correct/1]). - --export([command/1, initial_state/0, next_state/3, postcondition/3, - precondition/2]). - --type value() :: integer(). --record(state, { in_queue :: [{value(), term()}] }). --define(SERVER, queue_srv). - -priority() -> - integer(-20, 20). - -%% Selects priorities we have added -priority(InQ) -> - elements([P || {P, _} <- InQ]). - -value() -> - integer(). - -initial_state() -> - #state { in_queue = [] }. - -command(#state { in_queue = InQ }) -> - oneof([{call, ?SERVER, in, [value()]}, - {call, ?SERVER, in, [value(), priority()]}, - {call, ?SERVER, is_empty, []}, - {call, ?SERVER, is_queue, []}, - {call, ?SERVER, len, []}, - {call, ?SERVER, out, []}] ++ - [{call, ?SERVER, out, [priority(InQ)]} || InQ =/= []] ++ - [{call, ?SERVER, pout, []}, - {call, ?SERVER, to_list, []}]). - -next_state(#state { in_queue = InQ } = S, _V, {call, _, out, []}) -> - S#state { in_queue = listq_rem(InQ) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, out, [Prio]}) -> - S#state { in_queue = listq_rem(InQ, Prio) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, pout, _}) -> - S#state { in_queue = listq_rem(InQ) }; -next_state(S, _V, {call, _, to_list, _}) -> S; -next_state(S, _V, {call, _, is_queue, _}) -> S; -next_state(S, _V, {call, _, is_empty, _}) -> S; -next_state(S, _V, {call, _, len, _}) -> S; -next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value, Prio]}) -> - S#state { in_queue = listq_insert({Prio, Value}, InQ) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value]}) -> - S#state { in_queue = listq_insert({0, Value}, InQ) }. - -precondition(_S, _Call) -> - true. % No limitation on the things we can call at all. - -postcondition(#state { in_queue = InQ }, {call, _, out, [Prio]}, R) -> - R == listq_prio_peek(InQ, Prio); -postcondition(#state { in_queue = InQ }, {call, _, pout, _}, R) -> - R == listq_ppeek(InQ); -postcondition(#state { in_queue = InQ }, {call, _, out, _}, R) -> - R == listq_peek(InQ); -postcondition(S, {call, _, to_list, _}, R) -> - R == listq_to_list(S#state.in_queue); -postcondition(S, {call, _, len, _}, L) -> - L == listq_length(S#state.in_queue); -postcondition(_S, {call, _, is_queue, _}, true) -> true; -postcondition(S, {call, _, is_empty, _}, Res) -> - Res == (S#state.in_queue == []); -postcondition(_S, {call, _, in, _}, _) -> - true; -postcondition(_, _, _) -> - false. - -correct(M) -> - ?FORALL(Cmds, commands(?MODULE), - ?TRAPEXIT( - begin - ?SERVER:start_link(M), - {History,State,Result} = run_commands(?MODULE, Cmds), - ?SERVER:stop(), - ?WHENFAIL(io:format("History: ~w\nState: ~w\nResult: ~w\n", - [History,State,Result]), - aggregate(command_names(Cmds), Result =:= ok)) - end)). - -qc_opts() -> - [{numtests, 10000}]. - -qc_pq() -> - proper:quickcheck(pqueue_proper:correct(pqueue), qc_opts()). - -qc_pq2() -> - proper:quickcheck(pqueue_proper:correct(pqueue2), qc_opts()). - -qc_pq3() -> - proper:quickcheck(pqueue_proper:correct(pqueue3), qc_opts()). - -qc_pq4() -> - proper:quickcheck(pqueue_proper:correct(pqueue4), qc_opts()). - -%% ---------------------------------------------------------------------- - -%% A listq is a sorted list of priorities -listq_insert({P, V}, []) -> - [{P, [V]}]; -listq_insert({P, V}, [{P1, _} | _] = LQ) when P < P1 -> - [{P, [V]} | LQ]; -listq_insert({P, V}, [{P1, Vs} | Next]) when P == P1 -> - [{P, Vs ++ [V]} | Next]; -listq_insert({P, V}, [{P1, Vs} | Next]) when P > P1 -> - [{P1, Vs} | listq_insert({P, V}, Next)]. - -listq_to_list(L) -> - lists:concat( - [ Vals || {_Prio, Vals} <- L]). - -listq_length(L) -> - lists:sum( - [ length(Vs) || {_Prio, Vs} <- L]). - -listq_rem([]) -> - []; -listq_rem([{_P, [_V]} | Next]) -> - Next; -listq_rem([{P, [_V1 | Vs]} | Next]) -> - [{P, Vs} | Next]. - -listq_rem([], _P) -> - []; -listq_rem([{P, [_]} | Next], P) -> - Next; -listq_rem([{P, [_ | Vs]} | Next], P) -> - [{P, Vs} | Next]; -listq_rem([{P1, Vs} | Next], P) -> - [{P1, Vs} | listq_rem(Next, P)]. - -listq_peek([]) -> - empty; -listq_peek([{_P, [V | _]} | _]) -> - {value, V}. - -listq_prio_peek([{P, [V | _]} | _], P) -> - {value, V}; -listq_prio_peek([{_P1, _} | Next], P) -> - listq_prio_peek(Next, P); -listq_prio_peek([], _P) -> - empty. - -listq_ppeek([]) -> - empty; -listq_ppeek([{P, [V | _]} | _]) -> - {value, V, P}. - --endif. diff --git a/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl b/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl deleted file mode 100644 index 7fcb0a1..0000000 --- a/aoc2023/build/dev/erlang/pqueue/test/queue_srv.erl +++ /dev/null @@ -1,183 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Jesper Louis andersen <> -%%% @copyright (C) 2011, Jesper Louis andersen -%%% @doc -%%% -%%% @end -%%% Created : 11 Nov 2011 by Jesper Louis andersen <> -%%%------------------------------------------------------------------- --module(queue_srv). - --behaviour(gen_server). - -%% API --export([start_link/1, stop/0, len/0, in/1, in/2, is_empty/0, - out/0, out/1, pout/0, - is_queue/0, to_list/0]). - -%% gen_server callbacks --export([init/1, handle_call/3, handle_cast/2, handle_info/2, - terminate/2, code_change/3]). - --define(SERVER, ?MODULE). - --record(state, { mod, q }). - -%%%=================================================================== -%%% API -%%%=================================================================== - -%%-------------------------------------------------------------------- -%% @doc -%% Starts the server -%% -%% @spec start_link(Mod) -> {ok, Pid} | ignore | {error, Error} -%% @end -%%-------------------------------------------------------------------- -start_link(Mod) -> - gen_server:start_link({local, ?SERVER}, ?MODULE, [Mod], []). - -stop() -> - gen_server:stop(?SERVER). - -call(M) -> - gen_server:call(?SERVER, M, infinity). - -in(I) -> - call({in, I}). - -in(I, P) -> - call({in, I, P}). - -len() -> - call(len). - -is_empty() -> - call(is_empty). - -is_queue() -> - call(is_queue). - -to_list() -> - call(to_list). - -out() -> - call(out). - -out(P) -> - call({out, P}). - -pout() -> - call(pout). - -%%%=================================================================== -%%% gen_server callbacks -%%%=================================================================== - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Initializes the server -%% -%% @spec init(Args) -> {ok, State} | -%% {ok, State, Timeout} | -%% ignore | -%% {stop, Reason} -%% @end -%%-------------------------------------------------------------------- -init([Mod]) -> - {ok, #state{ mod = Mod, - q = Mod:new() }}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling call messages -%% -%% @spec handle_call(Request, From, State) -> -%% {reply, Reply, State} | -%% {reply, Reply, State, Timeout} | -%% {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, Reply, State} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_call({in, Item}, _F, #state { q = Q, mod = M } = S) -> - NQ = M:in(Item, Q), - {reply, ok, S#state { q = NQ }}; -handle_call({in, Item, Prio}, _F, #state { q = Q, mod = M } = S) -> - NQ = M:in(Item, Prio, Q), - {reply, ok, S#state { q = NQ }}; -handle_call({out, P}, _F, #state { q = Q, mod = M } = S) -> - {R, NQ} = M:out(P, Q), - {reply, R, S#state { q = NQ }}; -handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == out; - Ty == pout -> - {R, NQ} = M:Ty(Q), - {reply, R, S#state { q = NQ }}; -handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == is_queue; - Ty == is_empty; - Ty == len; - Ty == to_list -> - R = M:Ty(Q), - {reply, R, S}; -handle_call(Req, From, State) -> - error_logger:info_report([{handle_call, Req, From, State}]), - Reply = ok, - {reply, Reply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling cast messages -%% -%% @spec handle_cast(Msg, State) -> {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_cast(_Msg, State) -> - {noreply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling all non call/cast messages -%% -%% @spec handle_info(Info, State) -> {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_info(_Info, State) -> - {noreply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% This function is called by a gen_server when it is about to -%% terminate. It should be the opposite of Module:init/1 and do any -%% necessary cleaning up. When it returns, the gen_server terminates -%% with Reason. The return value is ignored. -%% -%% @spec terminate(Reason, State) -> void() -%% @end -%%-------------------------------------------------------------------- -terminate(_Reason, _State) -> - ok. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Convert process state when code is changed -%% -%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState} -%% @end -%%-------------------------------------------------------------------- -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache deleted file mode 100644 index 4ef501f..0000000 Binary files a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta deleted file mode 100644 index 90aa893..0000000 Binary files a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl deleted file mode 100644 index 59361a2..0000000 --- a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile.erl +++ /dev/null @@ -1,287 +0,0 @@ --module(simplifile). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([read/1, write/2, delete/1, delete_all/1, append/2, read_bits/1, write_bits/2, append_bits/2, is_directory/1, create_directory/1, read_directory/1, is_file/1, create_file/1, get_files/1, create_directory_all/1, copy_directory/2, rename_directory/2, copy_file/2, rename_file/2]). --export_type([file_error/0]). - --type file_error() :: eacces | - eagain | - ebadf | - ebadmsg | - ebusy | - edeadlk | - edeadlock | - edquot | - eexist | - efault | - efbig | - eftype | - eintr | - einval | - eio | - eisdir | - eloop | - emfile | - emlink | - emultihop | - enametoolong | - enfile | - enobufs | - enodev | - enolck | - enolink | - enoent | - enomem | - enospc | - enosr | - enostr | - enosys | - enotblk | - enotdir | - enotsup | - enxio | - eopnotsupp | - eoverflow | - eperm | - epipe | - erange | - erofs | - espipe | - esrch | - estale | - etxtbsy | - exdev | - not_utf8 | - unknown. - --spec do_append(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_append(Content, Filepath) -> - _pipe = Content, - _pipe@1 = gleam_stdlib:identity(_pipe), - simplifile_erl:append_file(_pipe@1, Filepath). - --spec do_write(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_write(Content, Filepath) -> - _pipe = Content, - _pipe@1 = gleam_stdlib:identity(_pipe), - simplifile_erl:write_file(_pipe@1, Filepath). - --spec do_read(binary()) -> {ok, binary()} | {error, file_error()}. -do_read(Filepath) -> - case simplifile_erl:read_file(Filepath) of - {ok, Bits} -> - case gleam@bit_array:to_string(Bits) of - {ok, Str} -> - {ok, Str}; - - _ -> - {error, not_utf8} - end; - - {error, E} -> - {error, E} - end. - --spec cast_error({ok, JXG} | {error, file_error()}) -> {ok, JXG} | - {error, file_error()}. -cast_error(Input) -> - Input. - --spec read(binary()) -> {ok, binary()} | {error, file_error()}. -read(Filepath) -> - _pipe = do_read(Filepath), - cast_error(_pipe). - --spec write(binary(), binary()) -> {ok, nil} | {error, file_error()}. -write(Filepath, Contents) -> - _pipe = do_write(Contents, Filepath), - cast_error(_pipe). - --spec delete(binary()) -> {ok, nil} | {error, file_error()}. -delete(Path) -> - _pipe = simplifile_erl:recursive_delete(Path), - cast_error(_pipe). - --spec delete_all(list(binary())) -> {ok, nil} | {error, file_error()}. -delete_all(Paths) -> - case Paths of - [] -> - {ok, nil}; - - [Path | Rest] -> - case delete(Path) of - {ok, nil} -> - delete_all(Rest); - - {error, enoent} -> - delete_all(Rest); - - E -> - E - end - end. - --spec append(binary(), binary()) -> {ok, nil} | {error, file_error()}. -append(Filepath, Contents) -> - _pipe = do_append(Contents, Filepath), - cast_error(_pipe). - --spec read_bits(binary()) -> {ok, bitstring()} | {error, file_error()}. -read_bits(Filepath) -> - _pipe = simplifile_erl:read_file(Filepath), - cast_error(_pipe). - --spec write_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. -write_bits(Filepath, Bits) -> - _pipe = simplifile_erl:write_file(Bits, Filepath), - cast_error(_pipe). - --spec append_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. -append_bits(Filepath, Bits) -> - _pipe = simplifile_erl:append_file(Bits, Filepath), - cast_error(_pipe). - --spec is_directory(binary()) -> boolean(). -is_directory(Filepath) -> - filelib:is_dir(Filepath). - --spec create_directory(binary()) -> {ok, nil} | {error, file_error()}. -create_directory(Filepath) -> - _pipe = simplifile_erl:make_directory(Filepath), - cast_error(_pipe). - --spec read_directory(binary()) -> {ok, list(binary())} | {error, file_error()}. -read_directory(Path) -> - _pipe = simplifile_erl:list_directory(Path), - cast_error(_pipe). - --spec is_file(binary()) -> boolean(). -is_file(Filepath) -> - simplifile_erl:is_file(Filepath). - --spec create_file(binary()) -> {ok, nil} | {error, file_error()}. -create_file(Filepath) -> - case begin - _pipe = Filepath, - is_file(_pipe) - end - orelse begin - _pipe@1 = Filepath, - is_directory(_pipe@1) - end of - true -> - {error, eexist}; - - false -> - write_bits(Filepath, <<>>) - end. - --spec do_copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_copy_directory(Src, Dest) -> - gleam@result:'try'( - read_directory(Src), - fun(Segments) -> - _pipe = Segments, - gleam@list:each( - _pipe, - fun(Segment) -> - Src_path = <<<>/binary, - Segment/binary>>, - Dest_path = <<<>/binary, - Segment/binary>>, - case {is_file(Src_path), is_directory(Src_path)} of - {true, false} -> - gleam@result:'try'( - read_bits(Src_path), - fun(Content) -> _pipe@1 = Content, - write_bits(Dest_path, _pipe@1) end - ); - - {false, true} -> - gleam@result:'try'( - create_directory(Dest_path), - fun(_) -> - do_copy_directory(Src_path, Dest_path) - end - ); - - {_, _} -> - erlang:error(#{gleam_error => panic, - message => <<"unreachable"/utf8>>, - module => <<"simplifile"/utf8>>, - function => <<"do_copy_directory"/utf8>>, - line => 341}) - end - end - ), - {ok, nil} - end - ). - --spec get_files(binary()) -> {ok, list(binary())} | {error, file_error()}. -get_files(Directory) -> - gleam@result:'try'( - read_directory(Directory), - fun(Contents) -> - Paths = gleam@list:map( - Contents, - fun(Segment) -> - <<<>/binary, Segment/binary>> - end - ), - Files = gleam@list:filter(Paths, fun is_file/1), - case gleam@list:filter(Paths, fun is_directory/1) of - [] -> - {ok, Files}; - - Directories -> - gleam@result:'try'( - gleam@list:try_map(Directories, fun get_files/1), - fun(Nested_files) -> - {ok, - gleam@list:append( - Files, - gleam@list:flatten(Nested_files) - )} - end - ) - end - end - ). - --spec create_directory_all(binary()) -> {ok, nil} | {error, file_error()}. -create_directory_all(Dirpath) -> - Path = case begin - _pipe = Dirpath, - gleam@string:ends_with(_pipe, <<"/"/utf8>>) - end of - true -> - Dirpath; - - false -> - <> - end, - _pipe@1 = simplifile_erl:create_dir_all(Path), - cast_error(_pipe@1). - --spec copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -copy_directory(Src, Dest) -> - gleam@result:'try'( - create_directory_all(Dest), - fun(_) -> do_copy_directory(Src, Dest) end - ). - --spec rename_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -rename_directory(Src, Dest) -> - gleam@result:'try'(copy_directory(Src, Dest), fun(_) -> delete(Src) end). - --spec copy_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. -copy_file(Src, Dest) -> - _pipe = file:copy(Src, Dest), - _pipe@1 = gleam@result:replace(_pipe, nil), - cast_error(_pipe@1). - --spec rename_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. -rename_file(Src, Dest) -> - _pipe = simplifile_erl:rename_file(Src, Dest), - cast_error(_pipe). diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl deleted file mode 100644 index dac135a..0000000 --- a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_erl.erl +++ /dev/null @@ -1,70 +0,0 @@ --module(simplifile_erl). --export([ - read_file/1, - append_file/2, write_file/2, delete_file/1, delete_directory/1, recursive_delete/1, - list_directory/1, make_directory/1, is_file/1, create_dir_all/1, rename_file/2 -]). - --define(is_posix_error(Error), - Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse - Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse - Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse - Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse - Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse - Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse - Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse - Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse - Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse - Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse - Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse - Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse - Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse - Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse - Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse - Error =:= etxtbsy orelse Error =:= exdev -). - -posix_result(Result) -> - case Result of - ok -> {ok, nil}; - {ok, Value} -> {ok, Value}; - {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} - end. - -read_file(Filename) -> - posix_result(file:read_file(Filename)). - -write_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents)). - -append_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents, [append])). - -delete_file(Filename) -> - posix_result(file:delete(Filename)). - -make_directory(Dir) -> - posix_result(file:make_dir(Dir)). - -list_directory(Dir) -> - case file:list_dir(Dir) of - {ok, Filenames} -> - {ok, [list_to_binary(Filename) || Filename <- Filenames]}; - {error, Reason} when ?is_posix_error(Reason) -> - {error, Reason} - end. - -delete_directory(Dir) -> - posix_result(file:del_dir(Dir)). - -recursive_delete(Dir) -> - posix_result(file:del_dir_r(Dir)). - -is_file(Filename) -> - not (file:read_file_info(Filename) == {error, enoent}) and not filelib: is_dir(Filename). - -create_dir_all(Filename) -> - posix_result(filelib:ensure_dir(Filename)). - -rename_file(Source, Destination) -> - posix_result(file:rename(Source, Destination)). diff --git a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs b/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs deleted file mode 100644 index faf4109..0000000 --- a/aoc2023/build/dev/erlang/simplifile/_gleam_artefacts/simplifile_js.mjs +++ /dev/null @@ -1,102 +0,0 @@ -import fs from "node:fs" -import path from "node:path" -import { BitArray, Ok, Error as GError, toList} from "./gleam.mjs"; - -export function readBits(filepath) { - try { - const contents = fs.readFileSync(path.normalize(filepath)) - return new Ok(new BitArray(new Uint8Array(contents))) - } catch(e) { - return new GError(stringifyError(e)) - } -} - -export function writeBits(contents, filepath) { - try { - fs.writeFileSync(path.normalize(filepath), contents.buffer) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function appendBits(contents, filepath) { - try { - fs.appendFileSync(path.normalize(filepath), contents.buffer) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -function stringifyError(e) { - return e.code -} - -export function isFile(filepath) { - let fp = path.normalize(filepath) - return fs.existsSync(fp) && fs.lstatSync(fp).isFile(); -} - -export function isDirectory(filepath) { - let fp = path.normalize(filepath) - return fs.existsSync(fp) && fs.lstatSync(fp).isDirectory(); -} - -export function makeDirectory(filepath) { - try { - fs.mkdirSync(path.normalize(filepath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function createDirAll(filepath) { - try { - fs.mkdirSync(filepath, { recursive: true }) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function deleteFileOrDirRecursive(fileOrDirPath) { - try { - if (isDirectory(fileOrDirPath)) { - fs.rmSync(path.normalize(fileOrDirPath), { recursive: true }) - } else { - fs.unlinkSync(path.normalize(fileOrDirPath)) - } - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function listContents(filepath) { - try { - const stuff = toList(fs.readdirSync(path.normalize(filepath))) - return new Ok(stuff) - } catch(e) { - return new GError(stringifyError(e)) - } -} - -export function copyFile(srcpath, destpath) { - try { - fs.copyFileSync(path.normalize(srcpath), path.normalize(destpath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function renameFile(srcpath, destpath) { - try { - fs.renameSync(path.normalize(srcpath), path.normalize(destpath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} \ No newline at end of file diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app deleted file mode 100644 index 3bb63fa..0000000 --- a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, simplifile, [ - {vsn, "1.0.0"}, - {applications, [gleam_stdlib]}, - {description, "Basic file operations that work on all targets"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam deleted file mode 100644 index 7d3bcd6..0000000 Binary files a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam b/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam deleted file mode 100644 index b859e1e..0000000 Binary files a/aoc2023/build/dev/erlang/simplifile/ebin/simplifile_erl.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache deleted file mode 100644 index 7fa2fe5..0000000 Binary files a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta deleted file mode 100644 index daef1e9..0000000 Binary files a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl b/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl deleted file mode 100644 index a3ad8f4..0000000 --- a/aoc2023/build/dev/erlang/snag/_gleam_artefacts/snag.erl +++ /dev/null @@ -1,74 +0,0 @@ --module(snag). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/1, error/1, layer/2, context/2, pretty_print/1, line_print/1]). --export_type([snag/0]). - --type snag() :: {snag, binary(), list(binary())}. - --spec new(binary()) -> snag(). -new(Issue) -> - {snag, Issue, []}. - --spec error(binary()) -> {ok, any()} | {error, snag()}. -error(Issue) -> - {error, new(Issue)}. - --spec layer(snag(), binary()) -> snag(). -layer(Snag, Issue) -> - {snag, Issue, [erlang:element(2, Snag) | erlang:element(3, Snag)]}. - --spec context({ok, IOV} | {error, snag()}, binary()) -> {ok, IOV} | - {error, snag()}. -context(Result, Issue) -> - case Result of - {ok, _} -> - Result; - - {error, Snag} -> - {error, layer(Snag, Issue)} - end. - --spec pretty_print_cause(list(binary())) -> gleam@string_builder:string_builder(). -pretty_print_cause(Cause) -> - _pipe = Cause, - _pipe@1 = gleam@list:index_map( - _pipe, - fun(Index, Line) -> - gleam@string:concat( - [<<" "/utf8>>, - gleam@int:to_string(Index), - <<": "/utf8>>, - Line, - <<"\n"/utf8>>] - ) - end - ), - gleam@string_builder:from_strings(_pipe@1). - --spec pretty_print(snag()) -> binary(). -pretty_print(Snag) -> - Builder = gleam@string_builder:from_strings( - [<<"error: "/utf8>>, erlang:element(2, Snag), <<"\n"/utf8>>] - ), - gleam@string_builder:to_string(case erlang:element(3, Snag) of - [] -> - Builder; - - Cause -> - _pipe = Builder, - _pipe@1 = gleam@string_builder:append( - _pipe, - <<"\ncause:\n"/utf8>> - ), - gleam@string_builder:append_builder( - _pipe@1, - pretty_print_cause(Cause) - ) - end). - --spec line_print(snag()) -> binary(). -line_print(Snag) -> - _pipe = [gleam@string:append(<<"error: "/utf8>>, erlang:element(2, Snag)) | - erlang:element(3, Snag)], - gleam@string:join(_pipe, <<" <- "/utf8>>). diff --git a/aoc2023/build/dev/erlang/snag/ebin/snag.app b/aoc2023/build/dev/erlang/snag/ebin/snag.app deleted file mode 100644 index 724fb97..0000000 --- a/aoc2023/build/dev/erlang/snag/ebin/snag.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, snag, [ - {vsn, "0.2.1"}, - {applications, [gleam_stdlib]}, - {description, "A boilerplate-free ad-hoc error type"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/snag/ebin/snag.beam b/aoc2023/build/dev/erlang/snag/ebin/snag.beam deleted file mode 100644 index 4af73ad..0000000 Binary files a/aoc2023/build/dev/erlang/snag/ebin/snag.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl b/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl deleted file mode 100644 index 5d6614e..0000000 --- a/aoc2023/build/dev/erlang/snag/include/snag_Snag.hrl +++ /dev/null @@ -1 +0,0 @@ --record(snag, {issue :: binary(), cause :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl deleted file mode 100644 index 543db88..0000000 --- a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/gleam@@compile.erl +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env escript - -% TODO: Don't concurrently print warnings and errors -% TODO: Some tests - --record(arguments, {lib = "./", out = "./", modules = []}). - -main(Args) -> - #arguments{out = Out, lib = Lib, modules = Modules} = parse(Args), - IsElixirModule = fun(Module) -> - filename:extension(Module) =:= ".ex" - end, - {ElixirModules, ErlangModules} = lists:partition(IsElixirModule, Modules), - ok = configure_logging(), - ok = add_lib_to_erlang_path(Lib), - ok = filelib:ensure_dir([Out, $/]), - {ErlangOk, _ErlangBeams} = compile_erlang(ErlangModules, Out), - {ElixirOk, _ElixirBeams} = case ErlangOk of - true -> compile_elixir(ElixirModules, Out); - false -> {false, []} - end, - case ErlangOk and ElixirOk of - true -> ok; - false -> erlang:halt(1) - end. - -compile_erlang(Modules, Out) -> - Workers = start_compiler_workers(Out), - ok = producer_loop(Modules, Workers), - collect_results({true, []}). - -collect_results(Acc = {Result, Beams}) -> - receive - {compiled, Beam} -> collect_results({Result, [Beam | Beams]}); - failed -> collect_results({false, Beams}) - after 0 -> Acc - end. - -producer_loop([], 0) -> - ok; -producer_loop([], Workers) -> - receive - {work_please, _} -> producer_loop([], Workers - 1) - end; -producer_loop([Module | Modules], Workers) -> - receive - {work_please, Worker} -> - erlang:send(Worker, {module, Module}), - producer_loop(Modules, Workers) - end. - -start_compiler_workers(Out) -> - Parent = self(), - NumSchedulers = erlang:system_info(schedulers), - SpawnWorker = fun(_) -> - erlang:spawn_link(fun() -> worker_loop(Parent, Out) end) - end, - lists:foreach(SpawnWorker, lists:seq(1, NumSchedulers)), - NumSchedulers. - -worker_loop(Parent, Out) -> - Options = [report_errors, report_warnings, debug_info, {outdir, Out}], - erlang:send(Parent, {work_please, self()}), - receive - {module, Module} -> - log({compiling, Module}), - case compile:file(Module, Options) of - {ok, ModuleName} -> - Beam = filename:join(Out, ModuleName) ++ ".beam", - Message = {compiled, Beam}, - log(Message), - erlang:send(Parent, Message); - error -> - log({failed, Module}), - erlang:send(Parent, failed) - end, - worker_loop(Parent, Out) - end. - -compile_elixir(Modules, Out) -> - Error = [ - "The program elixir was not found. Is it installed?", - $\n, - "Documentation for installing Elixir can be viewed here:", - $\n, - "https://elixir-lang.org/install.html" - ], - case Modules of - [] -> {true, []}; - _ -> - log({starting, "compiler.app"}), - ok = application:start(compiler), - log({starting, "elixir.app"}), - case application:start(elixir) of - ok -> do_compile_elixir(Modules, Out); - _ -> - io:put_chars(standard_error, [Error, $\n]), - {false, []} - end - end. - -do_compile_elixir(Modules, Out) -> - ModuleBins = lists:map(fun(Module) -> - log({compiling, Module}), - list_to_binary(Module) - end, Modules), - OutBin = list_to_binary(Out), - Options = [{dest, OutBin}], - % Silence "redefining module" warnings. - % Compiled modules in the build directory are added to the code path. - % These warnings result from recompiling loaded modules. - % TODO: This line can likely be removed if/when the build directory is cleaned before every compilation. - 'Elixir.Code':compiler_options([{ignore_module_conflict, true}]), - case 'Elixir.Kernel.ParallelCompiler':compile_to_path(ModuleBins, OutBin, Options) of - {ok, ModuleAtoms, _} -> - ToBeam = fun(ModuleAtom) -> - Beam = filename:join(Out, atom_to_list(ModuleAtom)) ++ ".beam", - log({compiled, Beam}), - Beam - end, - {true, lists:map(ToBeam, ModuleAtoms)}; - {error, Errors, _} -> - % Log all filenames associated with modules that failed to compile. - % Note: The compiler prints compilation errors upon encountering them. - ErrorFiles = lists:usort([File || {File, _, _} <- Errors]), - Log = fun(File) -> - log({failed, binary_to_list(File)}) - end, - lists:foreach(Log, ErrorFiles), - {false, []}; - _ -> {false, []} - end. - -add_lib_to_erlang_path(Lib) -> - code:add_paths(filelib:wildcard([Lib, "/*/ebin"])). - -parse(Args) -> - parse(Args, #arguments{}). - -parse([], Arguments) -> - Arguments; -parse(["--lib", Lib | Rest], Arguments) -> - parse(Rest, Arguments#arguments{lib = Lib}); -parse(["--out", Out | Rest], Arguments) -> - parse(Rest, Arguments#arguments{out = Out}); -parse([Module | Rest], Arguments = #arguments{modules = Modules}) -> - parse(Rest, Arguments#arguments{modules = [Module | Modules]}). - -configure_logging() -> - Enabled = os:getenv("GLEAM_LOG") /= false, - persistent_term:put(gleam_logging_enabled, Enabled). - -log(Term) -> - case persistent_term:get(gleam_logging_enabled) of - true -> erlang:display(Term), ok; - false -> ok - end. diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache deleted file mode 100644 index 036c033..0000000 Binary files a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache and /dev/null differ diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta deleted file mode 100644 index 492599b..0000000 Binary files a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.cache_meta and /dev/null differ diff --git a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl b/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl deleted file mode 100644 index 0429a31..0000000 --- a/aoc2023/build/dev/erlang/tom/_gleam_artefacts/tom.erl +++ /dev/null @@ -1,2142 +0,0 @@ --module(tom). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get/2, get_int/2, get_float/2, get_bool/2, get_string/2, get_date/2, get_time/2, get_date_time/2, get_array/2, get_table/2, get_number/2, parse/1]). --export_type([toml/0, date_time/0, date/0, time/0, offset/0, sign/0, parse_error/0, number_/0, get_error/0]). - --type toml() :: {int, integer()} | - {float, float()} | - {infinity, sign()} | - {nan, sign()} | - {bool, boolean()} | - {string, binary()} | - {date, date()} | - {time, time()} | - {date_time, date_time()} | - {array, list(toml())} | - {array_of_tables, list(gleam@dict:dict(binary(), toml()))} | - {table, gleam@dict:dict(binary(), toml())} | - {inline_table, gleam@dict:dict(binary(), toml())}. - --type date_time() :: {date_time_value, date(), time(), offset()}. - --type date() :: {date_value, integer(), integer(), integer()}. - --type time() :: {time_value, integer(), integer(), integer(), integer()}. - --type offset() :: local | {offset, sign(), integer(), integer()}. - --type sign() :: positive | negative. - --type parse_error() :: {unexpected, binary(), binary()} | - {key_already_in_use, list(binary())}. - --type number_() :: {number_int, integer()} | - {number_float, float()} | - {number_infinity, sign()} | - {number_nan, sign()}. - --type get_error() :: {not_found, list(binary())} | - {wrong_type, list(binary()), binary(), binary()}. - --spec classify(toml()) -> binary(). -classify(Toml) -> - case Toml of - {int, _} -> - <<"Int"/utf8>>; - - {float, _} -> - <<"Float"/utf8>>; - - {nan, positive} -> - <<"NaN"/utf8>>; - - {nan, negative} -> - <<"Negative NaN"/utf8>>; - - {infinity, positive} -> - <<"Infinity"/utf8>>; - - {infinity, negative} -> - <<"Negative Infinity"/utf8>>; - - {bool, _} -> - <<"Bool"/utf8>>; - - {string, _} -> - <<"String"/utf8>>; - - {date, _} -> - <<"Date"/utf8>>; - - {time, _} -> - <<"Time"/utf8>>; - - {date_time, _} -> - <<"DateTime"/utf8>>; - - {array, _} -> - <<"Array"/utf8>>; - - {array_of_tables, _} -> - <<"Array"/utf8>>; - - {table, _} -> - <<"Table"/utf8>>; - - {inline_table, _} -> - <<"Table"/utf8>> - end. - --spec push_key({ok, KFC} | {error, get_error()}, binary()) -> {ok, KFC} | - {error, get_error()}. -push_key(Result, Key) -> - case Result of - {ok, T} -> - {ok, T}; - - {error, {not_found, Path}} -> - {error, {not_found, [Key | Path]}}; - - {error, {wrong_type, Path@1, Expected, Got}} -> - {error, {wrong_type, [Key | Path@1], Expected, Got}} - end. - --spec get(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, toml()} | - {error, get_error()}. -get(Toml, Key) -> - case Key of - [] -> - {error, {not_found, []}}; - - [K] -> - gleam@result:replace_error(gleam@map:get(Toml, K), {not_found, [K]}); - - [K@1 | Key@1] -> - case gleam@map:get(Toml, K@1) of - {ok, {table, T}} -> - push_key(get(T, Key@1), K@1); - - {ok, Other} -> - {error, - {wrong_type, [K@1], <<"Table"/utf8>>, classify(Other)}}; - - {error, _} -> - {error, {not_found, [K@1]}} - end - end. - --spec get_int(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - integer()} | - {error, get_error()}. -get_int(Toml, Key) -> - case get(Toml, Key) of - {ok, {int, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Int"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_float(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - float()} | - {error, get_error()}. -get_float(Toml, Key) -> - case get(Toml, Key) of - {ok, {float, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Float"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_bool(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - boolean()} | - {error, get_error()}. -get_bool(Toml, Key) -> - case get(Toml, Key) of - {ok, {bool, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Bool"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_string(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - binary()} | - {error, get_error()}. -get_string(Toml, Key) -> - case get(Toml, Key) of - {ok, {string, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"String"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_date(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - date()} | - {error, get_error()}. -get_date(Toml, Key) -> - case get(Toml, Key) of - {ok, {date, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Date"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_time(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - time()} | - {error, get_error()}. -get_time(Toml, Key) -> - case get(Toml, Key) of - {ok, {time, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Time"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_date_time(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - date_time()} | - {error, get_error()}. -get_date_time(Toml, Key) -> - case get(Toml, Key) of - {ok, {date_time, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"DateTime"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_array(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - list(toml())} | - {error, get_error()}. -get_array(Toml, Key) -> - case get(Toml, Key) of - {ok, {array, I}} -> - {ok, I}; - - {ok, {array_of_tables, I@1}} -> - {ok, gleam@list:map(I@1, fun(Field@0) -> {table, Field@0} end)}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Array"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_table(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - gleam@dict:dict(binary(), toml())} | - {error, get_error()}. -get_table(Toml, Key) -> - case get(Toml, Key) of - {ok, {table, I}} -> - {ok, I}; - - {ok, {inline_table, I@1}} -> - {ok, I@1}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Table"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_number(gleam@dict:dict(binary(), toml()), list(binary())) -> {ok, - number_()} | - {error, get_error()}. -get_number(Toml, Key) -> - case get(Toml, Key) of - {ok, {int, X}} -> - {ok, {number_int, X}}; - - {ok, {float, X@1}} -> - {ok, {number_float, X@1}}; - - {ok, {nan, X@2}} -> - {ok, {number_nan, X@2}}; - - {ok, {infinity, X@3}} -> - {ok, {number_infinity, X@3}}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Number"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec merge(gleam@dict:dict(binary(), toml()), binary(), toml(), toml()) -> {ok, - gleam@dict:dict(binary(), toml())} | - {error, list(binary())}. -merge(Table, Key, Old, New) -> - case {Old, New} of - {{array_of_tables, Tables}, {array_of_tables, New@1}} -> - {ok, - gleam@map:insert( - Table, - Key, - {array_of_tables, gleam@list:append(New@1, Tables)} - )}; - - {_, _} -> - {error, [Key]} - end. - --spec insert_loop(gleam@dict:dict(binary(), toml()), list(binary()), toml()) -> {ok, - gleam@dict:dict(binary(), toml())} | - {error, list(binary())}. -insert_loop(Table, Key, Value) -> - case Key of - [] -> - erlang:error(#{gleam_error => panic, - message => <<"unreachable"/utf8>>, - module => <<"tom"/utf8>>, - function => <<"insert_loop"/utf8>>, - line => 511}); - - [K] -> - case gleam@map:get(Table, K) of - {error, nil} -> - {ok, gleam@map:insert(Table, K, Value)}; - - {ok, Old} -> - merge(Table, K, Old, Value) - end; - - [K@1 | Key@1] -> - case gleam@map:get(Table, K@1) of - {error, nil} -> - case insert_loop(gleam@map:new(), Key@1, Value) of - {ok, Inner} -> - {ok, gleam@map:insert(Table, K@1, {table, Inner})}; - - {error, Path} -> - {error, [K@1 | Path]} - end; - - {ok, {array_of_tables, [Inner@1 | Rest]}} -> - case insert_loop(Inner@1, Key@1, Value) of - {ok, Inner@2} -> - {ok, - gleam@map:insert( - Table, - K@1, - {array_of_tables, [Inner@2 | Rest]} - )}; - - {error, Path@1} -> - {error, [K@1 | Path@1]} - end; - - {ok, {table, Inner@3}} -> - case insert_loop(Inner@3, Key@1, Value) of - {ok, Inner@4} -> - {ok, gleam@map:insert(Table, K@1, {table, Inner@4})}; - - {error, Path@2} -> - {error, [K@1 | Path@2]} - end; - - {ok, _} -> - {error, [K@1]} - end - end. - --spec insert(gleam@dict:dict(binary(), toml()), list(binary()), toml()) -> {ok, - gleam@dict:dict(binary(), toml())} | - {error, parse_error()}. -insert(Table, Key, Value) -> - case insert_loop(Table, Key, Value) of - {ok, Table@1} -> - {ok, Table@1}; - - {error, Path} -> - {error, {key_already_in_use, Path}} - end. - --spec expect_end_of_line( - list(binary()), - fun((list(binary())) -> {ok, {KHH, list(binary())}} | {error, parse_error()}) -) -> {ok, {KHH, list(binary())}} | {error, parse_error()}. -expect_end_of_line(Input, Next) -> - case Input of - [<<"\n"/utf8>> | Input@1] -> - Next(Input@1); - - [<<"\r\n"/utf8>> | Input@2] -> - Next(Input@2); - - [G | _] -> - {error, {unexpected, G, <<"\n"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\n"/utf8>>}} - end. - --spec parse_key_quoted(list(binary()), binary(), binary()) -> {ok, - {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_quoted(Input, Close, Name) -> - case Input of - [G | Input@1] when G =:= Close -> - {ok, {Name, Input@1}}; - - [G@1 | Input@2] -> - parse_key_quoted(Input@2, Close, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Close}} - end. - --spec parse_key_bare(list(binary()), binary()) -> {ok, - {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_bare(Input, Name) -> - case Input of - [<<" "/utf8>> | Input@1] when Name =/= <<""/utf8>> -> - {ok, {Name, Input@1}}; - - [<<"="/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<"."/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<"]"/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<","/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<","/utf8>>, <<"="/utf8>>}}; - - [<<"\n"/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<"\n"/utf8>>, <<"="/utf8>>}}; - - [<<"\r\n"/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"="/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"key"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"key"/utf8>>}}; - - [<<"]"/utf8>> | _] -> - {error, {unexpected, <<"]"/utf8>>, <<"key"/utf8>>}}; - - [<<","/utf8>> | _] -> - {error, {unexpected, <<","/utf8>>, <<"key"/utf8>>}}; - - [G | Input@2] -> - parse_key_bare(Input@2, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"key"/utf8>>}} - end. - --spec skip_line_whitespace(list(binary())) -> list(binary()). -skip_line_whitespace(Input) -> - gleam@list:drop_while( - Input, - fun(G) -> (G =:= <<" "/utf8>>) orelse (G =:= <<"\t"/utf8>>) end - ). - --spec parse_key_segment(list(binary())) -> {ok, {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_segment(Input) -> - Input@1 = skip_line_whitespace(Input), - case Input@1 of - [<<"="/utf8>> | _] -> - {error, {unexpected, <<"="/utf8>>, <<"Key"/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"Key"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"Key"/utf8>>}}; - - [<<"["/utf8>> | _] -> - {error, {unexpected, <<"["/utf8>>, <<"Key"/utf8>>}}; - - [<<"\""/utf8>> | Input@2] -> - parse_key_quoted(Input@2, <<"\""/utf8>>, <<""/utf8>>); - - [<<"'"/utf8>> | Input@3] -> - parse_key_quoted(Input@3, <<"'"/utf8>>, <<""/utf8>>); - - _ -> - parse_key_bare(Input@1, <<""/utf8>>) - end. - --spec skip_whitespace(list(binary())) -> list(binary()). -skip_whitespace(Input) -> - case Input of - [<<" "/utf8>> | Input@1] -> - skip_whitespace(Input@1); - - [<<"\t"/utf8>> | Input@2] -> - skip_whitespace(Input@2); - - [<<"\n"/utf8>> | Input@3] -> - skip_whitespace(Input@3); - - [<<"\r\n"/utf8>> | Input@4] -> - skip_whitespace(Input@4); - - Input@5 -> - Input@5 - end. - --spec drop_comments(list(binary()), list(binary())) -> list(binary()). -drop_comments(Input, Acc) -> - case Input of - [<<"#"/utf8>> | Input@1] -> - _pipe = Input@1, - _pipe@1 = gleam@list:drop_while( - _pipe, - fun(G) -> G /= <<"\n"/utf8>> end - ), - drop_comments(_pipe@1, Acc); - - [G@1 | Input@2] -> - drop_comments(Input@2, [G@1 | Acc]); - - [] -> - gleam@list:reverse(Acc) - end. - --spec do( - {ok, {KHS, list(binary())}} | {error, parse_error()}, - fun((KHS, list(binary())) -> {ok, KHV} | {error, parse_error()}) -) -> {ok, KHV} | {error, parse_error()}. -do(Result, Next) -> - case Result of - {ok, {A, Input}} -> - Next(A, Input); - - {error, E} -> - {error, E} - end. - --spec parse_key(list(binary()), list(binary())) -> {ok, - {list(binary()), list(binary())}} | - {error, parse_error()}. -parse_key(Input, Segments) -> - do( - parse_key_segment(Input), - fun(Segment, Input@1) -> - Segments@1 = [Segment | Segments], - Input@2 = skip_line_whitespace(Input@1), - case Input@2 of - [<<"."/utf8>> | Input@3] -> - parse_key(Input@3, Segments@1); - - _ -> - {ok, {gleam@list:reverse(Segments@1), Input@2}} - end - end - ). - --spec expect( - list(binary()), - binary(), - fun((list(binary())) -> {ok, {KIA, list(binary())}} | {error, parse_error()}) -) -> {ok, {KIA, list(binary())}} | {error, parse_error()}. -expect(Input, Expected, Next) -> - case Input of - [G | Input@1] when G =:= Expected -> - Next(Input@1); - - [G@1 | _] -> - {error, {unexpected, G@1, Expected}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Expected}} - end. - --spec parse_table_header(list(binary())) -> {ok, - {list(binary()), list(binary())}} | - {error, parse_error()}. -parse_table_header(Input) -> - Input@1 = skip_line_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - expect( - Input@2, - <<"]"/utf8>>, - fun(Input@3) -> - Input@4 = skip_line_whitespace(Input@3), - expect_end_of_line( - Input@4, - fun(Input@5) -> {ok, {Key, Input@5}} end - ) - end - ) - end - ). - --spec parse_hex(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_hex(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_hex(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_hex(Input@2, (Number * 16) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_hex(Input@3, (Number * 16) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_hex(Input@4, (Number * 16) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_hex(Input@5, (Number * 16) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_hex(Input@6, (Number * 16) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_hex(Input@7, (Number * 16) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_hex(Input@8, (Number * 16) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_hex(Input@9, (Number * 16) + 7, Sign); - - [<<"8"/utf8>> | Input@10] -> - parse_hex(Input@10, (Number * 16) + 8, Sign); - - [<<"9"/utf8>> | Input@11] -> - parse_hex(Input@11, (Number * 16) + 9, Sign); - - [<<"a"/utf8>> | Input@12] -> - parse_hex(Input@12, (Number * 16) + 10, Sign); - - [<<"b"/utf8>> | Input@13] -> - parse_hex(Input@13, (Number * 16) + 11, Sign); - - [<<"c"/utf8>> | Input@14] -> - parse_hex(Input@14, (Number * 16) + 12, Sign); - - [<<"d"/utf8>> | Input@15] -> - parse_hex(Input@15, (Number * 16) + 13, Sign); - - [<<"e"/utf8>> | Input@16] -> - parse_hex(Input@16, (Number * 16) + 14, Sign); - - [<<"f"/utf8>> | Input@17] -> - parse_hex(Input@17, (Number * 16) + 15, Sign); - - [<<"A"/utf8>> | Input@18] -> - parse_hex(Input@18, (Number * 16) + 10, Sign); - - [<<"B"/utf8>> | Input@19] -> - parse_hex(Input@19, (Number * 16) + 11, Sign); - - [<<"C"/utf8>> | Input@20] -> - parse_hex(Input@20, (Number * 16) + 12, Sign); - - [<<"D"/utf8>> | Input@21] -> - parse_hex(Input@21, (Number * 16) + 13, Sign); - - [<<"E"/utf8>> | Input@22] -> - parse_hex(Input@22, (Number * 16) + 14, Sign); - - [<<"F"/utf8>> | Input@23] -> - parse_hex(Input@23, (Number * 16) + 15, Sign); - - Input@24 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@24}} - end. - --spec parse_octal(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_octal(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_octal(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_octal(Input@2, (Number * 8) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_octal(Input@3, (Number * 8) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_octal(Input@4, (Number * 8) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_octal(Input@5, (Number * 8) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_octal(Input@6, (Number * 8) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_octal(Input@7, (Number * 8) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_octal(Input@8, (Number * 8) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_octal(Input@9, (Number * 8) + 7, Sign); - - Input@10 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@10}} - end. - --spec parse_binary(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_binary(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_binary(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_binary(Input@2, (Number * 2) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_binary(Input@3, (Number * 2) + 1, Sign); - - Input@4 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@4}} - end. - --spec parse_exponent(list(binary()), float(), sign(), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_exponent(Input, N, N_sign, Ex, Ex_sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_exponent(Input@1, N, N_sign, Ex, Ex_sign); - - [<<"0"/utf8>> | Input@2] -> - parse_exponent(Input@2, N, N_sign, Ex * 10, Ex_sign); - - [<<"1"/utf8>> | Input@3] -> - parse_exponent(Input@3, N, N_sign, (Ex * 10) + 1, Ex_sign); - - [<<"2"/utf8>> | Input@4] -> - parse_exponent(Input@4, N, N_sign, (Ex * 10) + 2, Ex_sign); - - [<<"3"/utf8>> | Input@5] -> - parse_exponent(Input@5, N, N_sign, (Ex * 10) + 3, Ex_sign); - - [<<"4"/utf8>> | Input@6] -> - parse_exponent(Input@6, N, N_sign, (Ex * 10) + 4, Ex_sign); - - [<<"5"/utf8>> | Input@7] -> - parse_exponent(Input@7, N, N_sign, (Ex * 10) + 5, Ex_sign); - - [<<"6"/utf8>> | Input@8] -> - parse_exponent(Input@8, N, N_sign, (Ex * 10) + 6, Ex_sign); - - [<<"7"/utf8>> | Input@9] -> - parse_exponent(Input@9, N, N_sign, (Ex * 10) + 7, Ex_sign); - - [<<"8"/utf8>> | Input@10] -> - parse_exponent(Input@10, N, N_sign, (Ex * 10) + 8, Ex_sign); - - [<<"9"/utf8>> | Input@11] -> - parse_exponent(Input@11, N, N_sign, (Ex * 10) + 9, Ex_sign); - - Input@12 -> - Number = case N_sign of - positive -> - N; - - negative -> - N * -1.0 - end, - Exponent = gleam@int:to_float(case Ex_sign of - positive -> - Ex; - - negative -> - - Ex - end), - Multiplier@1 = case gleam@float:power(10.0, Exponent) of - {ok, Multiplier} -> - Multiplier; - - {error, _} -> - 1.0 - end, - {ok, {{float, Number * Multiplier@1}, Input@12}} - end. - --spec parse_float(list(binary()), float(), sign(), float()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_float(Input, Number, Sign, Unit) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_float(Input@1, Number, Sign, Unit); - - [<<"0"/utf8>> | Input@2] -> - parse_float(Input@2, Number, Sign, Unit * 0.1); - - [<<"1"/utf8>> | Input@3] -> - parse_float(Input@3, Number + (1.0 * Unit), Sign, Unit * 0.1); - - [<<"2"/utf8>> | Input@4] -> - parse_float(Input@4, Number + (2.0 * Unit), Sign, Unit * 0.1); - - [<<"3"/utf8>> | Input@5] -> - parse_float(Input@5, Number + (3.0 * Unit), Sign, Unit * 0.1); - - [<<"4"/utf8>> | Input@6] -> - parse_float(Input@6, Number + (4.0 * Unit), Sign, Unit * 0.1); - - [<<"5"/utf8>> | Input@7] -> - parse_float(Input@7, Number + (5.0 * Unit), Sign, Unit * 0.1); - - [<<"6"/utf8>> | Input@8] -> - parse_float(Input@8, Number + (6.0 * Unit), Sign, Unit * 0.1); - - [<<"7"/utf8>> | Input@9] -> - parse_float(Input@9, Number + (7.0 * Unit), Sign, Unit * 0.1); - - [<<"8"/utf8>> | Input@10] -> - parse_float(Input@10, Number + (8.0 * Unit), Sign, Unit * 0.1); - - [<<"9"/utf8>> | Input@11] -> - parse_float(Input@11, Number + (9.0 * Unit), Sign, Unit * 0.1); - - [<<"e"/utf8>>, <<"+"/utf8>> | Input@12] -> - parse_exponent(Input@12, Number, Sign, 0, positive); - - [<<"e"/utf8>>, <<"-"/utf8>> | Input@13] -> - parse_exponent(Input@13, Number, Sign, 0, negative); - - [<<"e"/utf8>> | Input@14] -> - parse_exponent(Input@14, Number, Sign, 0, positive); - - [<<"E"/utf8>>, <<"+"/utf8>> | Input@15] -> - parse_exponent(Input@15, Number, Sign, 0, positive); - - [<<"E"/utf8>>, <<"-"/utf8>> | Input@16] -> - parse_exponent(Input@16, Number, Sign, 0, negative); - - [<<"E"/utf8>> | Input@17] -> - parse_exponent(Input@17, Number, Sign, 0, positive); - - Input@18 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - Number * -1.0 - end, - {ok, {{float, Number@1}, Input@18}} - end. - --spec parse_string(list(binary()), binary()) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_string(Input, String) -> - case Input of - [<<"\""/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\\"/utf8>>, <<"t"/utf8>> | Input@2] -> - parse_string(Input@2, <>); - - [<<"\\"/utf8>>, <<"n"/utf8>> | Input@3] -> - parse_string(Input@3, <>); - - [<<"\\"/utf8>>, <<"r"/utf8>> | Input@4] -> - parse_string(Input@4, <>); - - [<<"\\"/utf8>>, <<"\""/utf8>> | Input@5] -> - parse_string(Input@5, <>); - - [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@6] -> - parse_string(Input@6, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"\""/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"\""/utf8>>}}; - - [G | Input@7] -> - parse_string(Input@7, <>) - end. - --spec parse_multi_line_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_multi_line_string(Input, String) -> - case Input of - [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\\"/utf8>>, <<"\n"/utf8>> | Input@2] -> - parse_multi_line_string(skip_whitespace(Input@2), String); - - [<<"\\"/utf8>>, <<"\r\n"/utf8>> | Input@3] -> - parse_multi_line_string(skip_whitespace(Input@3), String); - - [<<"\r\n"/utf8>> | Input@4] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@4, String); - - [<<"\n"/utf8>> | Input@5] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@5, String); - - [<<"\r\n"/utf8>> | Input@6] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@6, String); - - [<<"\\"/utf8>>, <<"t"/utf8>> | Input@7] -> - parse_multi_line_string(Input@7, <>); - - [<<"\\"/utf8>>, <<"n"/utf8>> | Input@8] -> - parse_multi_line_string(Input@8, <>); - - [<<"\\"/utf8>>, <<"r"/utf8>> | Input@9] -> - parse_multi_line_string(Input@9, <>); - - [<<"\\"/utf8>>, <<"\""/utf8>> | Input@10] -> - parse_multi_line_string(Input@10, <>); - - [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@11] -> - parse_multi_line_string(Input@11, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [G | Input@12] -> - parse_multi_line_string(Input@12, <>) - end. - --spec parse_multi_line_literal_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_multi_line_literal_string(Input, String) -> - case Input of - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | _] -> - {error, {unexpected, <<"''''"/utf8>>, <<"'''"/utf8>>}}; - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\n"/utf8>> | Input@2] when String =:= <<""/utf8>> -> - parse_multi_line_literal_string(Input@2, String); - - [<<"\r\n"/utf8>> | Input@3] when String =:= <<""/utf8>> -> - parse_multi_line_literal_string(Input@3, String); - - [G | Input@4] -> - parse_multi_line_literal_string( - Input@4, - <> - ) - end. - --spec parse_literal_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_literal_string(Input, String) -> - case Input of - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"'"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"'"/utf8>>}}; - - [<<"'"/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [G | Input@2] -> - parse_literal_string(Input@2, <>) - end. - --spec parse_time_ms(list(binary()), integer(), integer()) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_time_ms(Input, Seconds, Ms) -> - case Input of - [<<"0"/utf8>> | Input@1] when Ms < 100000 -> - parse_time_ms(Input@1, Seconds, (Ms * 10) + 0); - - [<<"1"/utf8>> | Input@2] when Ms < 100000 -> - parse_time_ms(Input@2, Seconds, (Ms * 10) + 1); - - [<<"2"/utf8>> | Input@3] when Ms < 100000 -> - parse_time_ms(Input@3, Seconds, (Ms * 10) + 2); - - [<<"3"/utf8>> | Input@4] when Ms < 100000 -> - parse_time_ms(Input@4, Seconds, (Ms * 10) + 3); - - [<<"4"/utf8>> | Input@5] when Ms < 100000 -> - parse_time_ms(Input@5, Seconds, (Ms * 10) + 4); - - [<<"5"/utf8>> | Input@6] when Ms < 100000 -> - parse_time_ms(Input@6, Seconds, (Ms * 10) + 5); - - [<<"6"/utf8>> | Input@7] when Ms < 100000 -> - parse_time_ms(Input@7, Seconds, (Ms * 10) + 6); - - [<<"7"/utf8>> | Input@8] when Ms < 100000 -> - parse_time_ms(Input@8, Seconds, (Ms * 10) + 7); - - [<<"8"/utf8>> | Input@9] when Ms < 100000 -> - parse_time_ms(Input@9, Seconds, (Ms * 10) + 8); - - [<<"9"/utf8>> | Input@10] when Ms < 100000 -> - parse_time_ms(Input@10, Seconds, (Ms * 10) + 9); - - _ -> - {ok, {{Seconds, Ms}, Input}} - end. - --spec parse_number_under_60(list(binary()), binary()) -> {ok, - {integer(), list(binary())}} | - {error, parse_error()}. -parse_number_under_60(Input, Expected) -> - case Input of - [<<"0"/utf8>>, <<"0"/utf8>> | Input@1] -> - {ok, {0, Input@1}}; - - [<<"0"/utf8>>, <<"1"/utf8>> | Input@2] -> - {ok, {1, Input@2}}; - - [<<"0"/utf8>>, <<"2"/utf8>> | Input@3] -> - {ok, {2, Input@3}}; - - [<<"0"/utf8>>, <<"3"/utf8>> | Input@4] -> - {ok, {3, Input@4}}; - - [<<"0"/utf8>>, <<"4"/utf8>> | Input@5] -> - {ok, {4, Input@5}}; - - [<<"0"/utf8>>, <<"5"/utf8>> | Input@6] -> - {ok, {5, Input@6}}; - - [<<"0"/utf8>>, <<"6"/utf8>> | Input@7] -> - {ok, {6, Input@7}}; - - [<<"0"/utf8>>, <<"7"/utf8>> | Input@8] -> - {ok, {7, Input@8}}; - - [<<"0"/utf8>>, <<"8"/utf8>> | Input@9] -> - {ok, {8, Input@9}}; - - [<<"0"/utf8>>, <<"9"/utf8>> | Input@10] -> - {ok, {9, Input@10}}; - - [<<"1"/utf8>>, <<"0"/utf8>> | Input@11] -> - {ok, {10, Input@11}}; - - [<<"1"/utf8>>, <<"1"/utf8>> | Input@12] -> - {ok, {11, Input@12}}; - - [<<"1"/utf8>>, <<"2"/utf8>> | Input@13] -> - {ok, {12, Input@13}}; - - [<<"1"/utf8>>, <<"3"/utf8>> | Input@14] -> - {ok, {13, Input@14}}; - - [<<"1"/utf8>>, <<"4"/utf8>> | Input@15] -> - {ok, {14, Input@15}}; - - [<<"1"/utf8>>, <<"5"/utf8>> | Input@16] -> - {ok, {15, Input@16}}; - - [<<"1"/utf8>>, <<"6"/utf8>> | Input@17] -> - {ok, {16, Input@17}}; - - [<<"1"/utf8>>, <<"7"/utf8>> | Input@18] -> - {ok, {17, Input@18}}; - - [<<"1"/utf8>>, <<"8"/utf8>> | Input@19] -> - {ok, {18, Input@19}}; - - [<<"1"/utf8>>, <<"9"/utf8>> | Input@20] -> - {ok, {19, Input@20}}; - - [<<"2"/utf8>>, <<"0"/utf8>> | Input@21] -> - {ok, {20, Input@21}}; - - [<<"2"/utf8>>, <<"1"/utf8>> | Input@22] -> - {ok, {21, Input@22}}; - - [<<"2"/utf8>>, <<"2"/utf8>> | Input@23] -> - {ok, {22, Input@23}}; - - [<<"2"/utf8>>, <<"3"/utf8>> | Input@24] -> - {ok, {23, Input@24}}; - - [<<"2"/utf8>>, <<"4"/utf8>> | Input@25] -> - {ok, {24, Input@25}}; - - [<<"2"/utf8>>, <<"5"/utf8>> | Input@26] -> - {ok, {25, Input@26}}; - - [<<"2"/utf8>>, <<"6"/utf8>> | Input@27] -> - {ok, {26, Input@27}}; - - [<<"2"/utf8>>, <<"7"/utf8>> | Input@28] -> - {ok, {27, Input@28}}; - - [<<"2"/utf8>>, <<"8"/utf8>> | Input@29] -> - {ok, {28, Input@29}}; - - [<<"2"/utf8>>, <<"9"/utf8>> | Input@30] -> - {ok, {29, Input@30}}; - - [<<"3"/utf8>>, <<"0"/utf8>> | Input@31] -> - {ok, {30, Input@31}}; - - [<<"3"/utf8>>, <<"1"/utf8>> | Input@32] -> - {ok, {31, Input@32}}; - - [<<"3"/utf8>>, <<"2"/utf8>> | Input@33] -> - {ok, {32, Input@33}}; - - [<<"3"/utf8>>, <<"3"/utf8>> | Input@34] -> - {ok, {33, Input@34}}; - - [<<"3"/utf8>>, <<"4"/utf8>> | Input@35] -> - {ok, {34, Input@35}}; - - [<<"3"/utf8>>, <<"5"/utf8>> | Input@36] -> - {ok, {35, Input@36}}; - - [<<"3"/utf8>>, <<"6"/utf8>> | Input@37] -> - {ok, {36, Input@37}}; - - [<<"3"/utf8>>, <<"7"/utf8>> | Input@38] -> - {ok, {37, Input@38}}; - - [<<"3"/utf8>>, <<"8"/utf8>> | Input@39] -> - {ok, {38, Input@39}}; - - [<<"3"/utf8>>, <<"9"/utf8>> | Input@40] -> - {ok, {39, Input@40}}; - - [<<"4"/utf8>>, <<"0"/utf8>> | Input@41] -> - {ok, {40, Input@41}}; - - [<<"4"/utf8>>, <<"1"/utf8>> | Input@42] -> - {ok, {41, Input@42}}; - - [<<"4"/utf8>>, <<"2"/utf8>> | Input@43] -> - {ok, {42, Input@43}}; - - [<<"4"/utf8>>, <<"3"/utf8>> | Input@44] -> - {ok, {43, Input@44}}; - - [<<"4"/utf8>>, <<"4"/utf8>> | Input@45] -> - {ok, {44, Input@45}}; - - [<<"4"/utf8>>, <<"5"/utf8>> | Input@46] -> - {ok, {45, Input@46}}; - - [<<"4"/utf8>>, <<"6"/utf8>> | Input@47] -> - {ok, {46, Input@47}}; - - [<<"4"/utf8>>, <<"7"/utf8>> | Input@48] -> - {ok, {47, Input@48}}; - - [<<"4"/utf8>>, <<"8"/utf8>> | Input@49] -> - {ok, {48, Input@49}}; - - [<<"4"/utf8>>, <<"9"/utf8>> | Input@50] -> - {ok, {49, Input@50}}; - - [<<"5"/utf8>>, <<"0"/utf8>> | Input@51] -> - {ok, {50, Input@51}}; - - [<<"5"/utf8>>, <<"1"/utf8>> | Input@52] -> - {ok, {51, Input@52}}; - - [<<"5"/utf8>>, <<"2"/utf8>> | Input@53] -> - {ok, {52, Input@53}}; - - [<<"5"/utf8>>, <<"3"/utf8>> | Input@54] -> - {ok, {53, Input@54}}; - - [<<"5"/utf8>>, <<"4"/utf8>> | Input@55] -> - {ok, {54, Input@55}}; - - [<<"5"/utf8>>, <<"5"/utf8>> | Input@56] -> - {ok, {55, Input@56}}; - - [<<"5"/utf8>>, <<"6"/utf8>> | Input@57] -> - {ok, {56, Input@57}}; - - [<<"5"/utf8>>, <<"7"/utf8>> | Input@58] -> - {ok, {57, Input@58}}; - - [<<"5"/utf8>>, <<"8"/utf8>> | Input@59] -> - {ok, {58, Input@59}}; - - [<<"5"/utf8>>, <<"9"/utf8>> | Input@60] -> - {ok, {59, Input@60}}; - - [G | _] -> - {error, {unexpected, G, Expected}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Expected}} - end. - --spec parse_hour_minute(list(binary())) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_hour_minute(Input) -> - do(case Input of - [<<"0"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@1] -> - {ok, {0, Input@1}}; - - [<<"0"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@2] -> - {ok, {1, Input@2}}; - - [<<"0"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@3] -> - {ok, {2, Input@3}}; - - [<<"0"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@4] -> - {ok, {3, Input@4}}; - - [<<"0"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@5] -> - {ok, {4, Input@5}}; - - [<<"0"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@6] -> - {ok, {5, Input@6}}; - - [<<"0"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@7] -> - {ok, {6, Input@7}}; - - [<<"0"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@8] -> - {ok, {7, Input@8}}; - - [<<"0"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@9] -> - {ok, {8, Input@9}}; - - [<<"0"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@10] -> - {ok, {9, Input@10}}; - - [<<"1"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@11] -> - {ok, {10, Input@11}}; - - [<<"1"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@12] -> - {ok, {11, Input@12}}; - - [<<"1"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@13] -> - {ok, {12, Input@13}}; - - [<<"1"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@14] -> - {ok, {13, Input@14}}; - - [<<"1"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@15] -> - {ok, {14, Input@15}}; - - [<<"1"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@16] -> - {ok, {15, Input@16}}; - - [<<"1"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@17] -> - {ok, {16, Input@17}}; - - [<<"1"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@18] -> - {ok, {17, Input@18}}; - - [<<"1"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@19] -> - {ok, {18, Input@19}}; - - [<<"1"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@20] -> - {ok, {19, Input@20}}; - - [<<"2"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@21] -> - {ok, {20, Input@21}}; - - [<<"2"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@22] -> - {ok, {21, Input@22}}; - - [<<"2"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@23] -> - {ok, {22, Input@23}}; - - [<<"2"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@24] -> - {ok, {23, Input@24}}; - - [G | _] -> - {error, {unexpected, G, <<"time"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"time"/utf8>>}} - end, fun(Hours, Input@25) -> - do( - parse_number_under_60(Input@25, <<"minutes"/utf8>>), - fun(Minutes, Input@26) -> {ok, {{Hours, Minutes}, Input@26}} end - ) - end). - --spec parse_time_s_ms(list(binary())) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_time_s_ms(Input) -> - case Input of - [<<":"/utf8>> | Input@1] -> - do( - parse_number_under_60(Input@1, <<"seconds"/utf8>>), - fun(Seconds, Input@2) -> case Input@2 of - [<<"."/utf8>> | Input@3] -> - parse_time_ms(Input@3, Seconds, 0); - - _ -> - {ok, {{Seconds, 0}, Input@2}} - end end - ); - - _ -> - {ok, {{0, 0}, Input}} - end. - --spec parse_time_minute(list(binary()), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_time_minute(Input, Hours) -> - do( - parse_number_under_60(Input, <<"minutes"/utf8>>), - fun(Minutes, Input@1) -> - do( - parse_time_s_ms(Input@1), - fun(_use0, Input@2) -> - {Seconds, Ms} = _use0, - Time = {time_value, Hours, Minutes, Seconds, Ms}, - {ok, {{time, Time}, Input@2}} - end - ) - end - ). - --spec parse_time_value(list(binary())) -> {ok, {time(), list(binary())}} | - {error, parse_error()}. -parse_time_value(Input) -> - do( - parse_hour_minute(Input), - fun(_use0, Input@1) -> - {Hours, Minutes} = _use0, - do( - parse_time_s_ms(Input@1), - fun(_use0@1, Input@2) -> - {Seconds, Ms} = _use0@1, - Time = {time_value, Hours, Minutes, Seconds, Ms}, - {ok, {Time, Input@2}} - end - ) - end - ). - --spec parse_offset_hours(list(binary()), sign()) -> {ok, - {offset(), list(binary())}} | - {error, parse_error()}. -parse_offset_hours(Input, Sign) -> - do( - parse_hour_minute(Input), - fun(_use0, Input@1) -> - {Hours, Minutes} = _use0, - {ok, {{offset, Sign, Hours, Minutes}, Input@1}} - end - ). - --spec parse_offset(list(binary())) -> {ok, {offset(), list(binary())}} | - {error, parse_error()}. -parse_offset(Input) -> - case Input of - [<<"Z"/utf8>> | Input@1] -> - {ok, {{offset, positive, 0, 0}, Input@1}}; - - [<<"+"/utf8>> | Input@2] -> - parse_offset_hours(Input@2, positive); - - [<<"-"/utf8>> | Input@3] -> - parse_offset_hours(Input@3, negative); - - _ -> - {ok, {local, Input}} - end. - --spec parse_date_end(list(binary()), integer(), integer(), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_date_end(Input, Year, Month, Day) -> - Date = {date_value, Year, Month, Day}, - case Input of - [<<" "/utf8>> | Input@1] -> - do( - parse_time_value(Input@1), - fun(Time, Input@2) -> - do( - parse_offset(Input@2), - fun(Offset, Input@3) -> - {ok, - {{date_time, - {date_time_value, Date, Time, Offset}}, - Input@3}} - end - ) - end - ); - - [<<"T"/utf8>> | Input@1] -> - do( - parse_time_value(Input@1), - fun(Time, Input@2) -> - do( - parse_offset(Input@2), - fun(Offset, Input@3) -> - {ok, - {{date_time, - {date_time_value, Date, Time, Offset}}, - Input@3}} - end - ) - end - ); - - _ -> - {ok, {{date, Date}, Input}} - end. - --spec parse_date_day(list(binary()), integer(), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_date_day(Input, Year, Month) -> - case Input of - [<<"0"/utf8>>, <<"1"/utf8>> | Input@1] -> - parse_date_end(Input@1, Year, Month, 1); - - [<<"0"/utf8>>, <<"2"/utf8>> | Input@2] -> - parse_date_end(Input@2, Year, Month, 2); - - [<<"0"/utf8>>, <<"3"/utf8>> | Input@3] -> - parse_date_end(Input@3, Year, Month, 3); - - [<<"0"/utf8>>, <<"4"/utf8>> | Input@4] -> - parse_date_end(Input@4, Year, Month, 4); - - [<<"0"/utf8>>, <<"5"/utf8>> | Input@5] -> - parse_date_end(Input@5, Year, Month, 5); - - [<<"0"/utf8>>, <<"6"/utf8>> | Input@6] -> - parse_date_end(Input@6, Year, Month, 6); - - [<<"0"/utf8>>, <<"7"/utf8>> | Input@7] -> - parse_date_end(Input@7, Year, Month, 7); - - [<<"0"/utf8>>, <<"8"/utf8>> | Input@8] -> - parse_date_end(Input@8, Year, Month, 8); - - [<<"0"/utf8>>, <<"9"/utf8>> | Input@9] -> - parse_date_end(Input@9, Year, Month, 9); - - [<<"1"/utf8>>, <<"0"/utf8>> | Input@10] -> - parse_date_end(Input@10, Year, Month, 10); - - [<<"1"/utf8>>, <<"1"/utf8>> | Input@11] -> - parse_date_end(Input@11, Year, Month, 11); - - [<<"1"/utf8>>, <<"2"/utf8>> | Input@12] -> - parse_date_end(Input@12, Year, Month, 12); - - [<<"1"/utf8>>, <<"3"/utf8>> | Input@13] -> - parse_date_end(Input@13, Year, Month, 13); - - [<<"1"/utf8>>, <<"4"/utf8>> | Input@14] -> - parse_date_end(Input@14, Year, Month, 14); - - [<<"1"/utf8>>, <<"5"/utf8>> | Input@15] -> - parse_date_end(Input@15, Year, Month, 15); - - [<<"1"/utf8>>, <<"6"/utf8>> | Input@16] -> - parse_date_end(Input@16, Year, Month, 16); - - [<<"1"/utf8>>, <<"7"/utf8>> | Input@17] -> - parse_date_end(Input@17, Year, Month, 17); - - [<<"1"/utf8>>, <<"8"/utf8>> | Input@18] -> - parse_date_end(Input@18, Year, Month, 18); - - [<<"1"/utf8>>, <<"9"/utf8>> | Input@19] -> - parse_date_end(Input@19, Year, Month, 19); - - [<<"2"/utf8>>, <<"0"/utf8>> | Input@20] -> - parse_date_end(Input@20, Year, Month, 20); - - [<<"2"/utf8>>, <<"1"/utf8>> | Input@21] -> - parse_date_end(Input@21, Year, Month, 21); - - [<<"2"/utf8>>, <<"2"/utf8>> | Input@22] -> - parse_date_end(Input@22, Year, Month, 22); - - [<<"2"/utf8>>, <<"3"/utf8>> | Input@23] -> - parse_date_end(Input@23, Year, Month, 23); - - [<<"2"/utf8>>, <<"4"/utf8>> | Input@24] -> - parse_date_end(Input@24, Year, Month, 24); - - [<<"2"/utf8>>, <<"5"/utf8>> | Input@25] -> - parse_date_end(Input@25, Year, Month, 25); - - [<<"2"/utf8>>, <<"6"/utf8>> | Input@26] -> - parse_date_end(Input@26, Year, Month, 26); - - [<<"2"/utf8>>, <<"7"/utf8>> | Input@27] -> - parse_date_end(Input@27, Year, Month, 27); - - [<<"2"/utf8>>, <<"8"/utf8>> | Input@28] -> - parse_date_end(Input@28, Year, Month, 28); - - [<<"2"/utf8>>, <<"9"/utf8>> | Input@29] -> - parse_date_end(Input@29, Year, Month, 29); - - [<<"3"/utf8>>, <<"0"/utf8>> | Input@30] -> - parse_date_end(Input@30, Year, Month, 30); - - [<<"3"/utf8>>, <<"1"/utf8>> | Input@31] -> - parse_date_end(Input@31, Year, Month, 31); - - [G | _] -> - {error, {unexpected, G, <<"date day"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"date day"/utf8>>}} - end. - --spec parse_date(list(binary()), integer()) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_date(Input, Year) -> - case Input of - [<<"0"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@1] -> - parse_date_day(Input@1, Year, 1); - - [<<"0"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@2] -> - parse_date_day(Input@2, Year, 2); - - [<<"0"/utf8>>, <<"3"/utf8>>, <<"-"/utf8>> | Input@3] -> - parse_date_day(Input@3, Year, 3); - - [<<"0"/utf8>>, <<"4"/utf8>>, <<"-"/utf8>> | Input@4] -> - parse_date_day(Input@4, Year, 4); - - [<<"0"/utf8>>, <<"5"/utf8>>, <<"-"/utf8>> | Input@5] -> - parse_date_day(Input@5, Year, 5); - - [<<"0"/utf8>>, <<"6"/utf8>>, <<"-"/utf8>> | Input@6] -> - parse_date_day(Input@6, Year, 6); - - [<<"0"/utf8>>, <<"7"/utf8>>, <<"-"/utf8>> | Input@7] -> - parse_date_day(Input@7, Year, 7); - - [<<"0"/utf8>>, <<"8"/utf8>>, <<"-"/utf8>> | Input@8] -> - parse_date_day(Input@8, Year, 8); - - [<<"0"/utf8>>, <<"9"/utf8>>, <<"-"/utf8>> | Input@9] -> - parse_date_day(Input@9, Year, 9); - - [<<"1"/utf8>>, <<"0"/utf8>>, <<"-"/utf8>> | Input@10] -> - parse_date_day(Input@10, Year, 10); - - [<<"1"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@11] -> - parse_date_day(Input@11, Year, 11); - - [<<"1"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@12] -> - parse_date_day(Input@12, Year, 12); - - [G | _] -> - {error, {unexpected, G, <<"date month"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"date month"/utf8>>}} - end. - --spec parse_number(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_number(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_number(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_number(Input@2, (Number * 10) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_number(Input@3, (Number * 10) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_number(Input@4, (Number * 10) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_number(Input@5, (Number * 10) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_number(Input@6, (Number * 10) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_number(Input@7, (Number * 10) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_number(Input@8, (Number * 10) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_number(Input@9, (Number * 10) + 7, Sign); - - [<<"8"/utf8>> | Input@10] -> - parse_number(Input@10, (Number * 10) + 8, Sign); - - [<<"9"/utf8>> | Input@11] -> - parse_number(Input@11, (Number * 10) + 9, Sign); - - [<<"-"/utf8>> | Input@12] -> - parse_date(Input@12, Number); - - [<<":"/utf8>> | Input@13] when Number < 24 -> - parse_time_minute(Input@13, Number); - - [<<"."/utf8>> | Input@14] -> - parse_float(Input@14, gleam@int:to_float(Number), Sign, 0.1); - - [<<"e"/utf8>>, <<"+"/utf8>> | Input@15] -> - parse_exponent( - Input@15, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"e"/utf8>>, <<"-"/utf8>> | Input@16] -> - parse_exponent( - Input@16, - gleam@int:to_float(Number), - Sign, - 0, - negative - ); - - [<<"e"/utf8>> | Input@17] -> - parse_exponent( - Input@17, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"E"/utf8>>, <<"+"/utf8>> | Input@18] -> - parse_exponent( - Input@18, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"E"/utf8>>, <<"-"/utf8>> | Input@19] -> - parse_exponent( - Input@19, - gleam@int:to_float(Number), - Sign, - 0, - negative - ); - - [<<"E"/utf8>> | Input@20] -> - parse_exponent( - Input@20, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - Input@21 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@21}} - end. - --spec reverse_arrays_of_tables(toml()) -> toml(). -reverse_arrays_of_tables(Toml) -> - case Toml of - {array_of_tables, Tables} -> - {array_of_tables, reverse_arrays_of_tables_array(Tables, [])}; - - {table, Table} -> - {table, reverse_arrays_of_tables_table(Table)}; - - _ -> - Toml - end. - --spec reverse_arrays_of_tables_table(gleam@dict:dict(binary(), toml())) -> gleam@dict:dict(binary(), toml()). -reverse_arrays_of_tables_table(Table) -> - gleam@map:map_values(Table, fun(_, V) -> reverse_arrays_of_tables(V) end). - --spec reverse_arrays_of_tables_array( - list(gleam@dict:dict(binary(), toml())), - list(gleam@dict:dict(binary(), toml())) -) -> list(gleam@dict:dict(binary(), toml())). -reverse_arrays_of_tables_array(Array, Acc) -> - case Array of - [] -> - Acc; - - [First | Rest] -> - First@1 = reverse_arrays_of_tables_table(First), - reverse_arrays_of_tables_array(Rest, [First@1 | Acc]) - end. - --spec parse_inline_table_property( - list(binary()), - gleam@dict:dict(binary(), toml()) -) -> {ok, {gleam@dict:dict(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_inline_table_property(Input, Properties) -> - Input@1 = skip_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - Input@3 = skip_line_whitespace(Input@2), - expect( - Input@3, - <<"="/utf8>>, - fun(Input@4) -> - Input@5 = skip_line_whitespace(Input@4), - do( - parse_value(Input@5), - fun(Value, Input@6) -> - case insert(Properties, Key, Value) of - {ok, Properties@1} -> - {ok, {Properties@1, Input@6}}; - - {error, E} -> - {error, E} - end - end - ) - end - ) - end - ). - --spec parse_value(list(binary())) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_value(Input) -> - case Input of - [<<"t"/utf8>>, <<"r"/utf8>>, <<"u"/utf8>>, <<"e"/utf8>> | Input@1] -> - {ok, {{bool, true}, Input@1}}; - - [<<"f"/utf8>>, - <<"a"/utf8>>, - <<"l"/utf8>>, - <<"s"/utf8>>, - <<"e"/utf8>> | - Input@2] -> - {ok, {{bool, false}, Input@2}}; - - [<<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@3] -> - {ok, {{nan, positive}, Input@3}}; - - [<<"+"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@4] -> - {ok, {{nan, positive}, Input@4}}; - - [<<"-"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@5] -> - {ok, {{nan, negative}, Input@5}}; - - [<<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@6] -> - {ok, {{infinity, positive}, Input@6}}; - - [<<"+"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@7] -> - {ok, {{infinity, positive}, Input@7}}; - - [<<"-"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@8] -> - {ok, {{infinity, negative}, Input@8}}; - - [<<"["/utf8>> | Input@9] -> - parse_array(Input@9, []); - - [<<"{"/utf8>> | Input@10] -> - parse_inline_table(Input@10, gleam@map:new()); - - [<<"0"/utf8>>, <<"x"/utf8>> | Input@11] -> - parse_hex(Input@11, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@12] -> - parse_hex(Input@12, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@13] -> - parse_hex(Input@13, 0, negative); - - [<<"0"/utf8>>, <<"o"/utf8>> | Input@14] -> - parse_octal(Input@14, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@15] -> - parse_octal(Input@15, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@16] -> - parse_octal(Input@16, 0, negative); - - [<<"0"/utf8>>, <<"b"/utf8>> | Input@17] -> - parse_binary(Input@17, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@18] -> - parse_binary(Input@18, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@19] -> - parse_binary(Input@19, 0, negative); - - [<<"+"/utf8>> | Input@20] -> - parse_number(Input@20, 0, positive); - - [<<"-"/utf8>> | Input@21] -> - parse_number(Input@21, 0, negative); - - [<<"0"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"1"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"2"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"3"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"4"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"5"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"6"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"7"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"8"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"9"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@22] -> - parse_multi_line_string(Input@22, <<""/utf8>>); - - [<<"\""/utf8>> | Input@23] -> - parse_string(Input@23, <<""/utf8>>); - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@24] -> - parse_multi_line_literal_string(Input@24, <<""/utf8>>); - - [<<"'"/utf8>> | Input@25] -> - parse_literal_string(Input@25, <<""/utf8>>); - - [G | _] -> - {error, {unexpected, G, <<"value"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"value"/utf8>>}} - end. - --spec parse_inline_table(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_inline_table(Input, Properties) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"}"/utf8>> | Input@2] -> - {ok, {{inline_table, Properties}, Input@2}}; - - _ -> - case parse_inline_table_property(Input@1, Properties) of - {ok, {Properties@1, Input@3}} -> - Input@4 = skip_whitespace(Input@3), - case Input@4 of - [<<"}"/utf8>> | Input@5] -> - {ok, {{inline_table, Properties@1}, Input@5}}; - - [<<","/utf8>> | Input@6] -> - Input@7 = skip_whitespace(Input@6), - parse_inline_table(Input@7, Properties@1); - - [G | _] -> - {error, {unexpected, G, <<"}"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"}"/utf8>>}} - end; - - {error, E} -> - {error, E} - end - end. - --spec parse_key_value(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, - {gleam@dict:dict(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_key_value(Input, Toml) -> - do( - parse_key(Input, []), - fun(Key, Input@1) -> - Input@2 = skip_line_whitespace(Input@1), - expect( - Input@2, - <<"="/utf8>>, - fun(Input@3) -> - Input@4 = skip_line_whitespace(Input@3), - do( - parse_value(Input@4), - fun(Value, Input@5) -> case insert(Toml, Key, Value) of - {ok, Toml@1} -> - {ok, {Toml@1, Input@5}}; - - {error, E} -> - {error, E} - end end - ) - end - ) - end - ). - --spec parse_table(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, - {gleam@dict:dict(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_table(Input, Toml) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"["/utf8>> | _] -> - {ok, {Toml, Input@1}}; - - [] -> - {ok, {Toml, Input@1}}; - - _ -> - case parse_key_value(Input@1, Toml) of - {ok, {Toml@1, Input@2}} -> - case skip_line_whitespace(Input@2) of - [] -> - {ok, {Toml@1, []}}; - - [<<"\n"/utf8>> | In] -> - parse_table(In, Toml@1); - - [<<"\r\n"/utf8>> | In] -> - parse_table(In, Toml@1); - - [G | _] -> - {error, {unexpected, G, <<"\n"/utf8>>}} - end; - - E -> - E - end - end. - --spec parse_array_of_tables(list(binary())) -> {ok, - {{list(binary()), gleam@dict:dict(binary(), toml())}, list(binary())}} | - {error, parse_error()}. -parse_array_of_tables(Input) -> - Input@1 = skip_line_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - expect( - Input@2, - <<"]"/utf8>>, - fun(Input@3) -> - expect( - Input@3, - <<"]"/utf8>>, - fun(Input@4) -> - do( - parse_table(Input@4, gleam@map:new()), - fun(Table, Input@5) -> - {ok, {{Key, Table}, Input@5}} - end - ) - end - ) - end - ) - end - ). - --spec parse_table_and_header(list(binary())) -> {ok, - {{list(binary()), gleam@dict:dict(binary(), toml())}, list(binary())}} | - {error, parse_error()}. -parse_table_and_header(Input) -> - do( - parse_table_header(Input), - fun(Key, Input@1) -> - do( - parse_table(Input@1, gleam@map:new()), - fun(Table, Input@2) -> {ok, {{Key, Table}, Input@2}} end - ) - end - ). - --spec parse_tables(list(binary()), gleam@dict:dict(binary(), toml())) -> {ok, - gleam@dict:dict(binary(), toml())} | - {error, parse_error()}. -parse_tables(Input, Toml) -> - case Input of - [<<"["/utf8>>, <<"["/utf8>> | Input@1] -> - case parse_array_of_tables(Input@1) of - {error, E} -> - {error, E}; - - {ok, {{Key, Table}, Input@2}} -> - case insert(Toml, Key, {array_of_tables, [Table]}) of - {ok, Toml@1} -> - parse_tables(Input@2, Toml@1); - - {error, E@1} -> - {error, E@1} - end - end; - - [<<"["/utf8>> | Input@3] -> - case parse_table_and_header(Input@3) of - {error, E@2} -> - {error, E@2}; - - {ok, {{Key@1, Table@1}, Input@4}} -> - case insert(Toml, Key@1, {table, Table@1}) of - {ok, Toml@2} -> - parse_tables(Input@4, Toml@2); - - {error, E@3} -> - {error, E@3} - end - end; - - [G | _] -> - {error, {unexpected, G, <<"["/utf8>>}}; - - [] -> - {ok, Toml} - end. - --spec parse(binary()) -> {ok, gleam@dict:dict(binary(), toml())} | - {error, parse_error()}. -parse(Input) -> - Input@1 = gleam@string:to_graphemes(Input), - Input@2 = drop_comments(Input@1, []), - Input@3 = skip_whitespace(Input@2), - do( - parse_table(Input@3, gleam@map:new()), - fun(Toml, Input@4) -> case parse_tables(Input@4, Toml) of - {ok, Toml@1} -> - {ok, reverse_arrays_of_tables_table(Toml@1)}; - - {error, E} -> - {error, E} - end end - ). - --spec parse_array(list(binary()), list(toml())) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_array(Input, Elements) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"]"/utf8>> | Input@2] -> - {ok, {{array, gleam@list:reverse(Elements)}, Input@2}}; - - _ -> - do( - parse_value(Input@1), - fun(Element, Input@3) -> - Elements@1 = [Element | Elements], - Input@4 = skip_whitespace(Input@3), - case Input@4 of - [<<"]"/utf8>> | Input@5] -> - {ok, - {{array, gleam@list:reverse(Elements@1)}, - Input@5}}; - - [<<","/utf8>> | Input@6] -> - Input@7 = skip_whitespace(Input@6), - parse_array(Input@7, Elements@1); - - [G | _] -> - {error, {unexpected, G, <<"]"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"]"/utf8>>}} - end - end - ) - end. diff --git a/aoc2023/build/dev/erlang/tom/ebin/tom.app b/aoc2023/build/dev/erlang/tom/ebin/tom.app deleted file mode 100644 index ade9be1..0000000 --- a/aoc2023/build/dev/erlang/tom/ebin/tom.app +++ /dev/null @@ -1,7 +0,0 @@ -{application, tom, [ - {vsn, "0.2.1"}, - {applications, [gleam_stdlib]}, - {description, "A pure Gleam TOML parser!"}, - {modules, []}, - {registered, []} -]}. diff --git a/aoc2023/build/dev/erlang/tom/ebin/tom.beam b/aoc2023/build/dev/erlang/tom/ebin/tom.beam deleted file mode 100644 index 0d4e0d2..0000000 Binary files a/aoc2023/build/dev/erlang/tom/ebin/tom.beam and /dev/null differ diff --git a/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl deleted file mode 100644 index 3b1e660..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_DateTimeValue.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(date_time_value, { - date :: tom:date(), - time :: tom:time(), - offset :: tom:offset() -}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl deleted file mode 100644 index c41f901..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_DateValue.hrl +++ /dev/null @@ -1 +0,0 @@ --record(date_value, {year :: integer(), month :: integer(), day :: integer()}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl b/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl deleted file mode 100644 index 930df26..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_KeyAlreadyInUse.hrl +++ /dev/null @@ -1 +0,0 @@ --record(key_already_in_use, {key :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl b/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl deleted file mode 100644 index 19c9a17..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_NotFound.hrl +++ /dev/null @@ -1 +0,0 @@ --record(not_found, {key :: list(binary())}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl b/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl deleted file mode 100644 index a58a8e1..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_Offset.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(offset, { - direction :: tom:sign(), - hours :: integer(), - minutes :: integer() -}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl b/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl deleted file mode 100644 index e1275de..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_TimeValue.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(time_value, { - hour :: integer(), - minute :: integer(), - second :: integer(), - millisecond :: integer() -}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl b/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl deleted file mode 100644 index ab1091c..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_Unexpected.hrl +++ /dev/null @@ -1 +0,0 @@ --record(unexpected, {got :: binary(), expected :: binary()}). diff --git a/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl b/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl deleted file mode 100644 index ae57352..0000000 --- a/aoc2023/build/dev/erlang/tom/include/tom_WrongType.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(wrong_type, { - key :: list(binary()), - expected :: binary(), - got :: binary() -}). diff --git a/aoc2023/build/dev/javascript/gleam.lock b/aoc2023/build/dev/javascript/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache deleted file mode 100644 index 521ceaf..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta deleted file mode 100644 index 5b2e4fa..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache deleted file mode 100644 index 4a84a17..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta deleted file mode 100644 index 13db829..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@day.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache deleted file mode 100644 index fc93f49..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta deleted file mode 100644 index 25d46c5..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/adglent@init.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache deleted file mode 100644 index 3f2627e..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta deleted file mode 100644 index ea20543..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@aoc_client.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache deleted file mode 100644 index 6b372e3..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta deleted file mode 100644 index d74550f..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@errors.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache deleted file mode 100644 index 892378a..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta deleted file mode 100644 index 6069b5f..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@prompt.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache deleted file mode 100644 index 59c03e8..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta deleted file mode 100644 index 4280edf..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@template.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache deleted file mode 100644 index eabceb6..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta deleted file mode 100644 index efc3c1e..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@solution.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache deleted file mode 100644 index 7941b60..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta deleted file mode 100644 index a43f871..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@test_main.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache deleted file mode 100644 index 3c13e17..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta deleted file mode 100644 index 171b42d..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_gleeunit.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache deleted file mode 100644 index 6f3ef24..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta deleted file mode 100644 index 943d5d1..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@templates@testfile_showtime.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache deleted file mode 100644 index 689de34..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta deleted file mode 100644 index dd43210..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/priv@toml.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache deleted file mode 100644 index 222be7f..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta deleted file mode 100644 index a6a146a..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache deleted file mode 100644 index 2827e6a..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta deleted file mode 100644 index 7772183..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@cli.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache deleted file mode 100644 index be4949e..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta deleted file mode 100644 index c4fec3d..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@common_event_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache deleted file mode 100644 index e21cf07..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta deleted file mode 100644 index 1756ecb..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_result.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache deleted file mode 100644 index 6fc886b..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta deleted file mode 100644 index 6ee96ca..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@common@test_suite.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache deleted file mode 100644 index 1fb5bce..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta deleted file mode 100644 index f515230..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@discover.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache deleted file mode 100644 index a37646a..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta deleted file mode 100644 index 7cfc212..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@event_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache deleted file mode 100644 index 2215915..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta deleted file mode 100644 index 39219c2..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@module_handler.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache deleted file mode 100644 index 6d99c72..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta deleted file mode 100644 index 3c79f10..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@erlang@runner.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache deleted file mode 100644 index 552c884..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta deleted file mode 100644 index b8918d9..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@compare.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache deleted file mode 100644 index 1a93299..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta deleted file mode 100644 index 8edfde1..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@formatter.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache deleted file mode 100644 index 90c98f2..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta deleted file mode 100644 index b116b96..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@styles.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache deleted file mode 100644 index 6fbddc2..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta deleted file mode 100644 index ff3b647..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@internal@reports@table.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache deleted file mode 100644 index 6d293dd..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta deleted file mode 100644 index 1236a4e..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@meta.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache deleted file mode 100644 index 56d5588..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta deleted file mode 100644 index 8458464..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@should.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache deleted file mode 100644 index 18e4c90..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta b/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta deleted file mode 100644 index 784c0c6..0000000 Binary files a/aoc2023/build/lsp/erlang/adglent/_gleam_artefacts/showtime@tests@test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache deleted file mode 100644 index 03ccd8d..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta deleted file mode 100644 index 010588b..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache deleted file mode 100644 index a3e359f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta deleted file mode 100644 index 7e5812c..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/aoc2023_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache deleted file mode 100644 index 679e63b..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta deleted file mode 100644 index 492226f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@day10_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache deleted file mode 100644 index cac1824..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta deleted file mode 100644 index f684afc..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day10@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache deleted file mode 100644 index 1924a60..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta deleted file mode 100644 index e9f22f9..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@day11_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache deleted file mode 100644 index 94061b3..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta deleted file mode 100644 index fb68ddf..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day11@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache deleted file mode 100644 index ae12c19..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta deleted file mode 100644 index 8696694..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@day12_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache deleted file mode 100644 index d66a1b7..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta deleted file mode 100644 index dbcb771..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day12@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache deleted file mode 100644 index 6605c0f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta deleted file mode 100644 index e8e1290..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@day13_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache deleted file mode 100644 index 285fc49..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta deleted file mode 100644 index 7ef4eea..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day13@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache deleted file mode 100644 index 99eb8b4..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta deleted file mode 100644 index c6b6dc6..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@day14_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache deleted file mode 100644 index 19fc049..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta deleted file mode 100644 index eb4b13e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day14@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache deleted file mode 100644 index 2cd9b6f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta deleted file mode 100644 index a5a8349..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@day15_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache deleted file mode 100644 index ec1b22a..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta deleted file mode 100644 index c27e086..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day15@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache deleted file mode 100644 index 9aed405..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta deleted file mode 100644 index a3e7398..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@day16_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache deleted file mode 100644 index 30d5d19..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta deleted file mode 100644 index 09cc64c..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day16@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache deleted file mode 100644 index a859e78..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta deleted file mode 100644 index 1de55c9..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@day17_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache deleted file mode 100644 index 2efed01..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta deleted file mode 100644 index 71761c7..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day17@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache deleted file mode 100644 index 65f231e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta deleted file mode 100644 index 8373480..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@day18_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache deleted file mode 100644 index f9f0f27..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta deleted file mode 100644 index dcebbaf..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day18@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache deleted file mode 100644 index b29c52a..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta deleted file mode 100644 index 51fdff1..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@day19_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache deleted file mode 100644 index 586dc8a..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta deleted file mode 100644 index 7d7d9f7..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day19@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache deleted file mode 100644 index 81e1b95..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta deleted file mode 100644 index 216bc61..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@day1_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache deleted file mode 100644 index 7fb41c1..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta deleted file mode 100644 index 683844e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day1@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache deleted file mode 100644 index 17bd031..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta deleted file mode 100644 index a62c67e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@day20_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache deleted file mode 100644 index b0eb623..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta deleted file mode 100644 index 2fec13e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day20@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache deleted file mode 100644 index 6ca601f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta deleted file mode 100644 index d2ccb36..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@day21_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache deleted file mode 100644 index 696553d..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta deleted file mode 100644 index d86557e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day21@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache deleted file mode 100644 index ba7b665..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta deleted file mode 100644 index e3b757f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@day22_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache deleted file mode 100644 index 4367d01..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta deleted file mode 100644 index 1debfe9..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day22@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache deleted file mode 100644 index a911091..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta deleted file mode 100644 index 828230e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@day23_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache deleted file mode 100644 index 9b88d01..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta deleted file mode 100644 index 35a9a48..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day23@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache deleted file mode 100644 index 482a3bf..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta deleted file mode 100644 index 2af1fbe..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@day2_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache deleted file mode 100644 index 50d9065..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta deleted file mode 100644 index e326f72..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day2@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache deleted file mode 100644 index 80b9225..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta deleted file mode 100644 index e9df393..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@day3_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache deleted file mode 100644 index 52a1a03..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta deleted file mode 100644 index bb3d942..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day3@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache deleted file mode 100644 index 9adb008..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta deleted file mode 100644 index d80de98..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@day4_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache deleted file mode 100644 index fc70a08..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta deleted file mode 100644 index 3b1a2a0..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day4@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache deleted file mode 100644 index d2b4607..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta deleted file mode 100644 index eca9fea..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@day5_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache deleted file mode 100644 index 0a13d69..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta deleted file mode 100644 index 054cd0e..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day5@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache deleted file mode 100644 index 6764230..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta deleted file mode 100644 index d316cb3..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@day6_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache deleted file mode 100644 index 0172460..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta deleted file mode 100644 index bd28173..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day6@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache deleted file mode 100644 index fefff2d..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta deleted file mode 100644 index 5355703..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@day7_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache deleted file mode 100644 index 2c9cded..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta deleted file mode 100644 index a7d2130..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day7@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache deleted file mode 100644 index 4d54d49..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta deleted file mode 100644 index 4f164d5..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@day8_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache deleted file mode 100644 index 5fa8a20..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta deleted file mode 100644 index c13d429..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day8@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache deleted file mode 100644 index a99c932..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta deleted file mode 100644 index bff2f05..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@day9_test.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache deleted file mode 100644 index beefe36..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta deleted file mode 100644 index de6a9ae..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/day9@solve.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache deleted file mode 100644 index afe092f..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta deleted file mode 100644 index 88a04e0..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@array2d.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache deleted file mode 100644 index 9273efb..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta deleted file mode 100644 index f81ca7a..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@memo.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache deleted file mode 100644 index 5a113a7..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta b/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta deleted file mode 100644 index f3cebb8..0000000 Binary files a/aoc2023/build/lsp/erlang/aoc2023/_gleam_artefacts/utilities@prioqueue.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache deleted file mode 100644 index 58fdf0a..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta deleted file mode 100644 index edd8d2a..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache deleted file mode 100644 index df62224..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta deleted file mode 100644 index 3bc139d..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@comparison.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache deleted file mode 100644 index bbfe5ed..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta deleted file mode 100644 index 4a36f3c..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@myers.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache deleted file mode 100644 index 65752d7..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta deleted file mode 100644 index ca915f3..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styled_comparison.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache deleted file mode 100644 index c0172d9..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta b/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta deleted file mode 100644 index 3773567..0000000 Binary files a/aoc2023/build/lsp/erlang/gap/_gleam_artefacts/gap@styling.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam.lock b/aoc2023/build/lsp/erlang/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache deleted file mode 100644 index 5163da7..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta deleted file mode 100644 index 6988904..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_ansi/_gleam_artefacts/gleam_community@ansi.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache deleted file mode 100644 index d1acf6b..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta deleted file mode 100644 index 53e1ad9..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache deleted file mode 100644 index 7012d28..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta deleted file mode 100644 index e926edf..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_colour/_gleam_artefacts/gleam_community@colour@accessibility.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache deleted file mode 100644 index dbe18f4..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta deleted file mode 100644 index ac9cd0c..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@arithmetics.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache deleted file mode 100644 index 82de246..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta deleted file mode 100644 index 8124d25..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@combinatorics.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache deleted file mode 100644 index 18e058a..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta deleted file mode 100644 index eada136..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@conversion.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache deleted file mode 100644 index 706c48f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta deleted file mode 100644 index ade0e09..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@elementary.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache deleted file mode 100644 index e21f351..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta deleted file mode 100644 index 7edd566..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@metrics.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache deleted file mode 100644 index 31e4bd8..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta deleted file mode 100644 index 14c1d0f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@piecewise.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache deleted file mode 100644 index a0c65e8..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta deleted file mode 100644 index 8d56c49..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@predicates.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache deleted file mode 100644 index c1adae5..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta deleted file mode 100644 index 3cfa2ef..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@sequences.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache deleted file mode 100644 index ecca197..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta b/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta deleted file mode 100644 index e8cada3..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_community_maths/_gleam_artefacts/gleam_community@maths@special.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache deleted file mode 100644 index 9cb4b7e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta deleted file mode 100644 index d76e6b6..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache deleted file mode 100644 index ee9e3c5..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta deleted file mode 100644 index bfd938d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@atom.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache deleted file mode 100644 index 223f016..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta deleted file mode 100644 index 7996afc..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@charlist.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache deleted file mode 100644 index e935a8b..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta deleted file mode 100644 index e194cad..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@file.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache deleted file mode 100644 index b0b77f7..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta deleted file mode 100644 index 4423143..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@node.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache deleted file mode 100644 index 977e362..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta deleted file mode 100644 index a5a851f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@os.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache deleted file mode 100644 index 4c47a8f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta b/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta deleted file mode 100644 index 90df4b9..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_erlang/_gleam_artefacts/gleam@erlang@process.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache deleted file mode 100644 index 6b925a9..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta deleted file mode 100644 index f53edb8..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache deleted file mode 100644 index ab6b66d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta deleted file mode 100644 index 89d9a4d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@cookie.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache deleted file mode 100644 index a5cf562..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta deleted file mode 100644 index 91001e2..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@request.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache deleted file mode 100644 index 19c78e4..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta deleted file mode 100644 index 37ee645..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@response.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache deleted file mode 100644 index 903ffa4..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta b/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta deleted file mode 100644 index 30e0838..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_http/_gleam_artefacts/gleam@http@service.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache deleted file mode 100644 index ba9ef78..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta b/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta deleted file mode 100644 index d66a2c3..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_httpc/_gleam_artefacts/gleam@httpc.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache deleted file mode 100644 index 739be7d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta deleted file mode 100644 index 01991ea..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@actor.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache deleted file mode 100644 index 24b814e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta deleted file mode 100644 index ad921d2..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@intensity_tracker.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache deleted file mode 100644 index b35f9fd..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta deleted file mode 100644 index ac4a4c2..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@port.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache deleted file mode 100644 index 30fbb09..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta deleted file mode 100644 index a58472a..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@supervisor.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache deleted file mode 100644 index 9992f8e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta deleted file mode 100644 index 830d435..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@system.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache deleted file mode 100644 index fb7d4a6..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta deleted file mode 100644 index 26c03cf..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam@otp@task.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache deleted file mode 100644 index c447835..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta b/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta deleted file mode 100644 index 6beed5e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_otp/_gleam_artefacts/gleam_otp.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache deleted file mode 100644 index e295cef..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta deleted file mode 100644 index d03bd4e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@base.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache deleted file mode 100644 index 6b43913..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta deleted file mode 100644 index 09e2f8a..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache deleted file mode 100644 index 122b269..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta deleted file mode 100644 index b59a80e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache deleted file mode 100644 index 7a80622..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta deleted file mode 100644 index e7f013d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bit_string.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache deleted file mode 100644 index 06a6c96..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta deleted file mode 100644 index e616ec0..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache deleted file mode 100644 index 01ea426..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta deleted file mode 100644 index 701db1f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@bytes_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache deleted file mode 100644 index 49f4e5c..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta deleted file mode 100644 index fd97a7e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache deleted file mode 100644 index cbc0f1c..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta deleted file mode 100644 index e0ebbda..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache deleted file mode 100644 index 189b9ad..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta deleted file mode 100644 index 8778fab..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache deleted file mode 100644 index 726a070..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta deleted file mode 100644 index 8bfae6d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache deleted file mode 100644 index 83be3b0..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta deleted file mode 100644 index 7c99d5d..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache deleted file mode 100644 index b20af0e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta deleted file mode 100644 index 48ca73e..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache deleted file mode 100644 index c3d8348..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta deleted file mode 100644 index fb52d57..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@iterator.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache deleted file mode 100644 index 752dab0..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta deleted file mode 100644 index 6587875..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache deleted file mode 100644 index ba87194..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta deleted file mode 100644 index 0b52486..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@map.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache deleted file mode 100644 index 100fb62..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta deleted file mode 100644 index 8b36f47..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache deleted file mode 100644 index cf6532f..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta deleted file mode 100644 index 2395015..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache deleted file mode 100644 index 8b90bd7..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta deleted file mode 100644 index a2089a5..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache deleted file mode 100644 index cbb4139..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta deleted file mode 100644 index 6ec02d2..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@queue.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache deleted file mode 100644 index 04900e9..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta deleted file mode 100644 index d6129ae..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@regex.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache deleted file mode 100644 index fa35d18..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta deleted file mode 100644 index f4e8874..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache deleted file mode 100644 index d33ebc9..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta deleted file mode 100644 index e4e832b..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache deleted file mode 100644 index 64e10ec..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta deleted file mode 100644 index 0f375fd..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache deleted file mode 100644 index 2130157..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta deleted file mode 100644 index b367bfd..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@string_builder.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache deleted file mode 100644 index 0e387bb..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta b/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta deleted file mode 100644 index 2ae412b..0000000 Binary files a/aoc2023/build/lsp/erlang/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/gleam_version b/aoc2023/build/lsp/erlang/gleam_version deleted file mode 100644 index 048acbd..0000000 --- a/aoc2023/build/lsp/erlang/gleam_version +++ /dev/null @@ -1 +0,0 @@ -0.33.0-rc2 \ No newline at end of file diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache deleted file mode 100644 index eb7ff68..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta deleted file mode 100644 index 961512a..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache deleted file mode 100644 index 80596e9..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta deleted file mode 100644 index 1c9f1af..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache deleted file mode 100644 index cc6fd56..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta b/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta deleted file mode 100644 index 9339182..0000000 Binary files a/aoc2023/build/lsp/erlang/glint/_gleam_artefacts/glint@flag@constraint.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache deleted file mode 100644 index 6012ccd..0000000 Binary files a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta b/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta deleted file mode 100644 index 2120b13..0000000 Binary files a/aoc2023/build/lsp/erlang/simplifile/_gleam_artefacts/simplifile.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache deleted file mode 100644 index 72355df..0000000 Binary files a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta b/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta deleted file mode 100644 index 181b01e..0000000 Binary files a/aoc2023/build/lsp/erlang/snag/_gleam_artefacts/snag.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache deleted file mode 100644 index c632faf..0000000 Binary files a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache and /dev/null differ diff --git a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta b/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta deleted file mode 100644 index 3371771..0000000 Binary files a/aoc2023/build/lsp/erlang/tom/_gleam_artefacts/tom.cache_meta and /dev/null differ diff --git a/aoc2023/build/lsp/javascript/gleam.lock b/aoc2023/build/lsp/javascript/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/packages/adglent/LICENSE b/aoc2023/build/packages/adglent/LICENSE deleted file mode 100644 index c7c82cc..0000000 --- a/aoc2023/build/packages/adglent/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2023 John Björk - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/aoc2023/build/packages/adglent/README.md b/aoc2023/build/packages/adglent/README.md deleted file mode 100644 index fcd81eb..0000000 --- a/aoc2023/build/packages/adglent/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# adglent - -[![Package Version](https://img.shields.io/hexpm/v/adglent)](https://hex.pm/packages/adglent) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/adglent/) - -## About - -`adglent` is a Gleam library which can be used to setup testing code and a template for implementing solution to [Advent of code](https://adventofcode.com/) problems. - -> NOTE: `adglent` **only** supports `erlang` target (default) for Gleam. - -## Prerequisites - -`adglent` is written in `gleam` and runs and tests solutions written in Gleam. Read more about `gleam` at [gleam.run](https://gleam.run). - -The easiest way to install `gleam` is to use `asdf`: - -1. Install `asdf` according to the instructions at the [asdf website](https://asdf-vm.com/) -2. Install the gleam asdf plugin: `asdf plugin-add gleam` -3. Install the latest `asdf install gleam latest` -4. Use the latest gleam version globally: `asdf global gleam latest` - -> HINT: `asdf` can manage multiple versions of gleam and the version can be set globally and also locally (`asdf local gleam `) to use a specific gleam version in a project. - -## Installation - -Start a new gleam project for your AOC soluctions with `gleam new`. In the project folder run: - -```sh -gleam add --dev adglent -``` - -## Usage - -### Initializing - -First log in to [Advent of code](https://adventofcode.com/) and copy your personal `session-cookie`. The value can be found using developer tools in the browser (in Chrome: "Application->Cookies->https://adventofcode.com->session" and copy the Cookie-value) - -```sh -gleam run -m adglent/init -``` - -Input the AOC year, you personal AOC session cookie and select if `showtime` should be used for tests (otherwise it will assume the project uses `gleeunit` as is default for `gleam new `) - -> NOTE: `showtime` is an alternate gleam test-runner. It is still quite new and havn't been tested in as many project as `gleeunit`. It has a different way of formatting the test-results and also supports the possibility to run specific test-modules (which can be useful in AOC). `showtime` is a standalone project but have been embedded into `adglent`. - -### Add day - -To start working on the solution for a specific day run: - -```sh -gleam run -m adglent/day -``` - -Where `` is the day number of the day you want to solve a problem for. - -> Example (start solving 1st of December): -> -> ```sh -> gleam run -m adglent/day 1 -> ``` - -Adding a day will add tests in `test/day/day_test.gleam`and a `src/day/solve.gleam` file where the solution can be implemented. - -Furthermore it will also download the input for the problem to `src/day/input.txt` - -Before running the tests you need to provide one or more example. These can be found in the problem description for that day at the AOC website. - -Add an example to a part of the problem by adding examples to the `part1_examples` or `part2_examples` lists. - -> Example (input "Hello Joe!" should give answer 613411): -> -> ```gleam -> const part1_examples: List(Example(Problem1AnswerType)) = [ -> Example("Hello Joe!", "613411"), -> ] -> ``` - -The type of the answer for a part can be adjusted if needed by changing the type aliases `Problem1AnswerType` / `Problem2AnswerType`. Note that this will change the type that the `part1` / `part2` functions in `solve.gleam` expect to return. - -### Testing - -To test all days in the project use: - -```sh -gleam test -``` - -If you are using `showtime` you can test a single day by running: - -```sh -gleam test -- --modules=day/day_test -``` - -> Example (test solution for 1st of December): -> -> ```sh -> gleam test -- modules=day1/day1_test -> ``` - -### Get the answer - -To get the (hopefully correct) answer after the tests are ok run: - -```sh -gleam run -m day/solve -``` - -where `` is the day to solve and `` is the part of the problem (1 or 2) to solve. - -This will run the solver and print the answer to stdout. - -### Module documentation - -Module documentation can be found at . diff --git a/aoc2023/build/packages/adglent/gleam.toml b/aoc2023/build/packages/adglent/gleam.toml deleted file mode 100644 index e1d81b8..0000000 --- a/aoc2023/build/packages/adglent/gleam.toml +++ /dev/null @@ -1,29 +0,0 @@ -name = "adglent" -version = "1.2.0" - -description = "Advent of code helper - automating setup of tests, solution template and problem input" -licences = ["Apache-2.0"] -repository = { type = "github", user = "JohnBjrk", repo = "adglent" } - -internal_modules = [ - "adglent/priv", - "adglent/priv/*", - "showtime/internal/*", -] -gleam = ">= 0.32.0" - -[dependencies] -gleam_stdlib = "~> 0.32" -simplifile = "~> 1.0" -gleam_http = "~> 3.5" -gleam_erlang = "~> 0.23.0" -gleam_otp = "~> 0.8.0" -gleam_community_ansi = "~> 1.2" -glint = "~> 0.13.0" -gap = "~> 1.0" -snag = "~> 0.2.0" -tom = "~> 0.2.0" -gleam_httpc = "~> 2.1" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/adglent/include/adglent_Example.hrl b/aoc2023/build/packages/adglent/include/adglent_Example.hrl deleted file mode 100644 index 615e473..0000000 --- a/aoc2023/build/packages/adglent/include/adglent_Example.hrl +++ /dev/null @@ -1 +0,0 @@ --record(example, {input :: binary(), answer :: any()}). diff --git a/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl b/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl deleted file mode 100644 index 4cd5ddd..0000000 --- a/aoc2023/build/packages/adglent/include/priv@toml_TomGetError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(tom_get_error, {error :: tom:get_error()}). diff --git a/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl b/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl deleted file mode 100644 index 7306934..0000000 --- a/aoc2023/build/packages/adglent/include/priv@toml_TomParseError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(tom_parse_error, {error :: tom:parse_error()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl deleted file mode 100644 index 7d24e52..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_Finished.hrl +++ /dev/null @@ -1 +0,0 @@ --record(finished, {num_modules :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl deleted file mode 100644 index 2eceb23..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@common_event_handler_HandlerState.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(handler_state, { - test_state :: showtime@internal@common@common_event_handler:test_state(), - num_done :: integer(), - events :: gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run())) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl deleted file mode 100644 index 79f34f8..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ArgList.hrl +++ /dev/null @@ -1 +0,0 @@ --record(arg_list, {arg_list :: list(gleam@dynamic:dynamic_())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl deleted file mode 100644 index c6458ba..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertEqual.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_equal, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl deleted file mode 100644 index 4920304..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertMatch.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_match, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl deleted file mode 100644 index 221c15f..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_AssertNotEqual.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(assert_not_equal, { - details :: list(showtime@internal@common@test_result:reason_detail()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl deleted file mode 100644 index 9a31ba8..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErlangException.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(erlang_exception, { - class :: showtime@internal@common@test_result:class(), - reason :: showtime@internal@common@test_result:reason(), - stacktrace :: showtime@internal@common@test_result:trace_list(), - output_buffer :: list(binary()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl deleted file mode 100644 index 97d0802..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ErrorInfo.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(error_info, { - error_info :: gleam@map:map_(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl deleted file mode 100644 index 5e40ad3..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expected.hrl +++ /dev/null @@ -1 +0,0 @@ --record(expected, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl deleted file mode 100644 index 7aa0c35..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Expression.hrl +++ /dev/null @@ -1 +0,0 @@ --record(expression, {expression :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl deleted file mode 100644 index 1274b74..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_File.hrl +++ /dev/null @@ -1 +0,0 @@ --record(file, {filename :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl deleted file mode 100644 index 7c33d0d..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GenericException.hrl +++ /dev/null @@ -1 +0,0 @@ --record(generic_exception, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl deleted file mode 100644 index 095748c..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamAssert.hrl +++ /dev/null @@ -1 +0,0 @@ --record(gleam_assert, {value :: gleam@dynamic:dynamic_(), line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl deleted file mode 100644 index 68e6645..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_GleamError.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(gleam_error, { - details :: showtime@internal@common@test_result:gleam_error_detail() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl deleted file mode 100644 index 87b7e2f..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Ignored.hrl +++ /dev/null @@ -1 +0,0 @@ --record(ignored, {reason :: showtime@internal@common@test_result:ignore_reason()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl deleted file mode 100644 index 5f3f60d..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_LetAssert.hrl +++ /dev/null @@ -1,7 +0,0 @@ --record(let_assert, { - module :: binary(), - function :: binary(), - line_no :: integer(), - message :: binary(), - value :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl deleted file mode 100644 index 9807df6..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Line.hrl +++ /dev/null @@ -1 +0,0 @@ --record(line, {line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl deleted file mode 100644 index 8002c0c..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Module.hrl +++ /dev/null @@ -1 +0,0 @@ --record(module, {name :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl deleted file mode 100644 index c36efa3..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Num.hrl +++ /dev/null @@ -1 +0,0 @@ --record(num, {arity :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl deleted file mode 100644 index 6aa9c84..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Pattern.hrl +++ /dev/null @@ -1 +0,0 @@ --record(pattern, {pattern :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl deleted file mode 100644 index b7ad1ab..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_ReasonLine.hrl +++ /dev/null @@ -1 +0,0 @@ --record(reason_line, {line_no :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl deleted file mode 100644 index b0bc294..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TestFunctionReturn.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test_function_return, { - value :: gleam@dynamic:dynamic_(), - output_buffer :: list(binary()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl deleted file mode 100644 index 4cb007c..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Trace.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(trace, { - function :: binary(), - arity :: showtime@internal@common@test_result:arity_(), - extra_info :: list(showtime@internal@common@test_result:extra_info()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl deleted file mode 100644 index c1aa9c5..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceList.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(trace_list, { - traces :: list(showtime@internal@common@test_result:trace()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl deleted file mode 100644 index 595362f..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_TraceModule.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(trace_module, { - module :: binary(), - function :: binary(), - arity :: showtime@internal@common@test_result:arity_(), - extra_info :: list(showtime@internal@common@test_result:extra_info()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl deleted file mode 100644 index 3a4b0dd..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_result_Value.hrl +++ /dev/null @@ -1 +0,0 @@ --record(value, {value :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl deleted file mode 100644 index 927a0cf..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_CompletedTestRun.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(completed_test_run, { - test_function :: showtime@internal@common@test_suite:test_function(), - total_time :: integer(), - result :: {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()} -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl deleted file mode 100644 index 13df1bf..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTest.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(end_test, { - test_module :: showtime@internal@common@test_suite:test_module(), - test_function :: showtime@internal@common@test_suite:test_function(), - result :: {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()} -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl deleted file mode 100644 index 3f78991..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestRun.hrl +++ /dev/null @@ -1 +0,0 @@ --record(end_test_run, {num_modules :: integer()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl deleted file mode 100644 index a7f37b3..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_EndTestSuite.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(end_test_suite, { - test_module :: showtime@internal@common@test_suite:test_module() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl deleted file mode 100644 index f52e5cc..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_OngoingTestRun.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(ongoing_test_run, { - test_function :: showtime@internal@common@test_suite:test_function(), - started_at :: integer() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl deleted file mode 100644 index d532609..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTest.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(start_test, { - test_module :: showtime@internal@common@test_suite:test_module(), - test_function :: showtime@internal@common@test_suite:test_function() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl deleted file mode 100644 index d5a03d3..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_StartTestSuite.hrl +++ /dev/null @@ -1,3 +0,0 @@ --record(start_test_suite, { - test_module :: showtime@internal@common@test_suite:test_module() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl deleted file mode 100644 index a783ba4..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestFunction.hrl +++ /dev/null @@ -1 +0,0 @@ --record(test_function, {name :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl deleted file mode 100644 index ee9baaf..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestModule.hrl +++ /dev/null @@ -1 +0,0 @@ --record(test_module, {name :: binary(), path :: gleam@option:option(binary())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl deleted file mode 100644 index 253a946..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@common@test_suite_TestSuite.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test_suite, { - module :: showtime@internal@common@test_suite:test_module(), - tests :: list(showtime@internal@common@test_suite:test_function()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl deleted file mode 100644 index ca52968..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeft.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_left, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl deleted file mode 100644 index 8d5a673..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignLeftOverflow.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_left_overflow, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl deleted file mode 100644 index 7f7a3f0..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRight.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_right, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl deleted file mode 100644 index 4fc4536..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_AlignRightOverflow.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(align_right_overflow, { - content :: showtime@internal@reports@table:content(), - margin :: integer() -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl deleted file mode 100644 index 2343dfd..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Aligned.hrl +++ /dev/null @@ -1 +0,0 @@ --record(aligned, {content :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl deleted file mode 100644 index 044891b..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Content.hrl +++ /dev/null @@ -1 +0,0 @@ --record(content, {unstyled_text :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl deleted file mode 100644 index db3f822..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Separator.hrl +++ /dev/null @@ -1 +0,0 @@ --record(separator, {char :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl deleted file mode 100644 index ed500df..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_StyledContent.hrl +++ /dev/null @@ -1 +0,0 @@ --record(styled_content, {styled_text :: binary()}). diff --git a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl b/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl deleted file mode 100644 index 5b41bb1..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@internal@reports@table_Table.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(table, { - header :: gleam@option:option(binary()), - rows :: list(list(showtime@internal@reports@table:col())) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl deleted file mode 100644 index 14184fb..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@meta_Meta.hrl +++ /dev/null @@ -1 +0,0 @@ --record(meta, {description :: binary(), tags :: list(binary())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl deleted file mode 100644 index 6ebea34..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@should_Eq.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(eq, { - a :: any(), - b :: any(), - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl deleted file mode 100644 index cf06a3c..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@should_Fail.hrl +++ /dev/null @@ -1 +0,0 @@ --record(fail, {meta :: gleam@option:option(showtime@tests@meta:meta())}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl deleted file mode 100644 index e9cabf3..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsError.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(is_error, { - a :: {ok, any()} | {error, any()}, - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl deleted file mode 100644 index 37c24ca..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@should_IsOk.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(is_ok, { - a :: {ok, any()} | {error, any()}, - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl deleted file mode 100644 index 2a6bf48..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@should_NotEq.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(not_eq, { - a :: any(), - b :: any(), - meta :: gleam@option:option(showtime@tests@meta:meta()) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl deleted file mode 100644 index a814a93..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@test_MetaShould.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(meta_should, { - equal :: fun((any(), any()) -> nil), - not_equal :: fun((any(), any()) -> nil) -}). diff --git a/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl b/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl deleted file mode 100644 index e75a0b7..0000000 --- a/aoc2023/build/packages/adglent/include/showtime@tests@test_Test.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(test, { - meta :: showtime@tests@meta:meta(), - test_function :: fun(() -> nil) -}). diff --git a/aoc2023/build/packages/adglent/src/adglent.app.src b/aoc2023/build/packages/adglent/src/adglent.app.src deleted file mode 100644 index aa44f8b..0000000 --- a/aoc2023/build/packages/adglent/src/adglent.app.src +++ /dev/null @@ -1,45 +0,0 @@ -{application, adglent, [ - {vsn, "1.2.0"}, - {applications, [gap, - gleam_community_ansi, - gleam_erlang, - gleam_http, - gleam_httpc, - gleam_otp, - gleam_stdlib, - gleeunit, - glint, - simplifile, - snag, - tom]}, - {description, "Advent of code helper - automating setup of tests, solution template and problem input"}, - {modules, [adglent, - adglent@day, - adglent@init, - priv@aoc_client, - priv@errors, - priv@prompt, - priv@template, - priv@templates@solution, - priv@templates@test_main, - priv@templates@testfile_gleeunit, - priv@templates@testfile_showtime, - priv@toml, - showtime, - showtime@internal@common@cli, - showtime@internal@common@common_event_handler, - showtime@internal@common@test_result, - showtime@internal@common@test_suite, - showtime@internal@erlang@discover, - showtime@internal@erlang@event_handler, - showtime@internal@erlang@module_handler, - showtime@internal@erlang@runner, - showtime@internal@reports@compare, - showtime@internal@reports@formatter, - showtime@internal@reports@styles, - showtime@internal@reports@table, - showtime@tests@meta, - showtime@tests@should, - showtime@tests@test]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/adglent/src/adglent.erl b/aoc2023/build/packages/adglent/src/adglent.erl deleted file mode 100644 index e9df2b7..0000000 --- a/aoc2023/build/packages/adglent/src/adglent.erl +++ /dev/null @@ -1,55 +0,0 @@ --module(adglent). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([inspect/1, get_input/1, get_test_folder/1, start_arguments/0, get_part/0]). --export_type([example/1, problem/0, charlist/0]). - --type example(OFF) :: {example, binary(), OFF}. - --type problem() :: first | second. - --type charlist() :: any(). - --spec inspect(any()) -> binary(). -inspect(Value) -> - Inspected_value = gleam@string:inspect(Value), - case begin - _pipe = Inspected_value, - gleam@string:starts_with(_pipe, <<"\""/utf8>>) - end of - true -> - _pipe@1 = Inspected_value, - _pipe@2 = gleam@string:drop_left(_pipe@1, 1), - gleam@string:drop_right(_pipe@2, 1); - - false -> - Inspected_value - end. - --spec get_input(binary()) -> {ok, binary()} | {error, simplifile:file_error()}. -get_input(Day) -> - simplifile:read( - <<<<"src/day"/utf8, Day/binary>>/binary, "/input.txt"/utf8>> - ). - --spec get_test_folder(binary()) -> binary(). -get_test_folder(Day) -> - <<"test/day"/utf8, Day/binary>>. - --spec start_arguments() -> list(binary()). -start_arguments() -> - _pipe = init:get_plain_arguments(), - gleam@list:map(_pipe, fun unicode:characters_to_binary/1). - --spec get_part() -> {ok, problem()} | {error, nil}. -get_part() -> - case start_arguments() of - [<<"1"/utf8>>] -> - {ok, first}; - - [<<"2"/utf8>>] -> - {ok, second}; - - _ -> - {error, nil} - end. diff --git a/aoc2023/build/packages/adglent/src/adglent.gleam b/aoc2023/build/packages/adglent/src/adglent.gleam deleted file mode 100644 index 077d49d..0000000 --- a/aoc2023/build/packages/adglent/src/adglent.gleam +++ /dev/null @@ -1,56 +0,0 @@ -import simplifile.{type FileError} -import gleam/list -import gleam/string - -pub type Example(a) { - Example(input: String, answer: a) -} - -pub fn inspect(value: a) -> String { - let inspected_value = string.inspect(value) - case - inspected_value - |> string.starts_with("\"") - { - True -> - inspected_value - |> string.drop_left(1) - |> string.drop_right(1) - False -> inspected_value - } -} - -pub fn get_input(day: String) -> Result(String, FileError) { - simplifile.read("src/day" <> day <> "/input.txt") -} - -pub fn get_test_folder(day: String) -> String { - "test/day" <> day -} - -pub type Problem { - First - Second -} - -pub fn get_part() -> Result(Problem, Nil) { - case start_arguments() { - ["1"] -> Ok(First) - ["2"] -> Ok(Second) - _ -> Error(Nil) - } -} - -pub fn start_arguments() -> List(String) { - get_start_arguments() - |> list.map(to_string) -} - -type Charlist - -/// Transform a charlist to a string -@external(erlang, "unicode", "characters_to_binary") -fn to_string(a: Charlist) -> String - -@external(erlang, "init", "get_plain_arguments") -fn get_start_arguments() -> List(Charlist) diff --git a/aoc2023/build/packages/adglent/src/adglent/day.gleam b/aoc2023/build/packages/adglent/src/adglent/day.gleam deleted file mode 100644 index 69e4ccc..0000000 --- a/aoc2023/build/packages/adglent/src/adglent/day.gleam +++ /dev/null @@ -1,126 +0,0 @@ -import adglent -import gleam/string -import gleam/result -import priv/template -import priv/templates/testfile_gleeunit -import priv/templates/testfile_showtime -import priv/templates/solution -import priv/toml -import priv/aoc_client -import priv/errors -import simplifile - -pub fn main() { - let day = - case adglent.start_arguments() { - [day] -> Ok(day) - args -> Error("Expected day - found: " <> string.join(args, ", ")) - } - |> errors.map_error("Error when parsing command args") - |> errors.print_error - |> errors.assert_ok - - let aoc_toml = - simplifile.read("aoc.toml") - |> errors.map_error("Could not read aoc.toml") - |> errors.print_error - |> errors.assert_ok - - let aoc_toml_version = toml.get_int(aoc_toml, ["version"]) - let year = - toml.get_string(aoc_toml, ["year"]) - |> errors.map_error("Could not read \"year\" from aoc.toml") - |> errors.print_error - |> errors.assert_ok - let session = - toml.get_string(aoc_toml, ["session"]) - |> errors.map_error("Could not read \"session\" from aoc.toml") - |> errors.print_error - |> errors.assert_ok - - let showtime = case aoc_toml_version { - Ok(2) -> { - toml.get_bool(aoc_toml, ["showtime"]) - |> errors.map_error("Could not read \"showtime\" from aoc.toml") - |> errors.print_error - |> errors.assert_ok - } - _ -> - toml.get_string(aoc_toml, ["showtime"]) - |> result.map(fn(bool_string) { - case bool_string { - "True" -> True - _ -> False - } - }) - |> errors.map_error("Could not read \"showtime\" from aoc.toml") - |> errors.print_error - |> errors.assert_ok - } - - let test_folder = adglent.get_test_folder(day) - let test_file = test_folder <> "/day" <> day <> "_test.gleam" - - simplifile.create_directory_all(test_folder) - |> errors.map_error("Could not create folder \"" <> test_folder <> "\"") - |> errors.print_error - |> errors.assert_ok - - let testfile_template = case showtime { - True -> testfile_showtime.template - False -> testfile_gleeunit.template - } - - template.render(testfile_template, [#("day", day)]) - |> create_file_if_not_present(test_file) - |> errors.print_result - |> errors.assert_ok - - let solutions_folder = "src/day" <> day - let solution_file = solutions_folder <> "/solve.gleam" - - simplifile.create_directory_all(solutions_folder) - |> errors.map_error("Could not create folder \"" <> solutions_folder <> "\"") - |> errors.print_error - |> errors.assert_ok - - template.render(solution.template, [#("day", day)]) - |> create_file_if_not_present(solution_file) - |> errors.print_result - |> errors.assert_ok - - create_file_if_not_present("input.txt", solutions_folder <> "/.gitignore") - |> errors.print_result - |> errors.assert_ok - - let input = - aoc_client.get_input(year, day, session) - |> errors.map_error("Error when fetching input") - |> errors.print_error - |> errors.assert_ok - - input - |> string.trim - |> create_file_if_not_present(solutions_folder <> "/input.txt") - |> errors.print_result - |> errors.assert_ok -} - -fn create_file_if_not_present( - content: String, - path: String, -) -> Result(String, String) { - case simplifile.is_file(path) { - True -> { - Ok(path <> " already exists - skipped") - } - False -> { - use _ <- result.try( - simplifile.create_file(path) - |> errors.map_messages("Created " <> path, "Could not create " <> path), - ) - simplifile.write(content, to: path) - |> errors.map_messages("Wrote " <> path, "Could not write to " <> path) - } - } -} diff --git a/aoc2023/build/packages/adglent/src/adglent/init.gleam b/aoc2023/build/packages/adglent/src/adglent/init.gleam deleted file mode 100644 index 42eb833..0000000 --- a/aoc2023/build/packages/adglent/src/adglent/init.gleam +++ /dev/null @@ -1,110 +0,0 @@ -import priv/prompt -import priv/template -import priv/templates/test_main -import priv/errors -import priv/toml -import simplifile -import gleam/string -import gleam/list -import gleam/result -import gleam/bool - -const aoc_toml_template = " -version = {{ version }} -year = \"{{ year }}\" -session = \"{{ session }}\" -showtime = {{ showtime }} -" - -pub fn main() { - let year = prompt.value("Year", "2023", False) - let session = prompt.value("Session Cookie", "", False) - let use_showtime = prompt.confirm("Use showtime", False) - - let aoc_toml_file = "aoc.toml" - let overwrite = case simplifile.create_file(aoc_toml_file) { - Ok(_) -> True - Error(simplifile.Eexist) -> - prompt.confirm("aoc.toml exits - overwrite", False) - _ -> panic as "Could not create aoc.toml" - } - case overwrite { - True -> { - template.render( - aoc_toml_template, - [ - #("version", "2"), - #("year", year), - #("session", session), - #( - "showtime", - bool.to_string(use_showtime) - |> string.lowercase, - ), - ], - ) - |> simplifile.write(to: aoc_toml_file) - |> errors.map_messages( - "aoc.toml - written", - "Error when writing aoc.toml", - ) - } - - False -> Ok("aoc.toml - skipped") - } - |> errors.print_result - - let gleam_toml = - simplifile.read("gleam.toml") - |> errors.map_error("Could not read gleam.toml") - |> errors.print_error - |> errors.assert_ok - - let name = - toml.get_string(gleam_toml, ["name"]) - |> errors.map_error("Could not read \"name\" from gleam.toml") - |> errors.print_error - |> errors.assert_ok - - let test_main_file = "test/" <> name <> "_test.gleam" - - case use_showtime { - True -> { - template.render(test_main.template, []) - |> simplifile.write(to: test_main_file) - |> errors.map_messages( - "Wrote " <> test_main_file, - "Could not write to " <> test_main_file, - ) - } - False -> Ok("Using existing (gleeunit) " <> test_main_file) - } - |> errors.print_result - |> errors.assert_ok - - case simplifile.is_file(".gitignore") { - True -> { - use gitignore <- result.try( - simplifile.read(".gitignore") - |> result.map_error(fn(err) { - "Could not read .gitignore: " <> string.inspect(err) - }), - ) - let aoc_toml_ignored = - string.split(gitignore, "\n") - |> list.find(fn(line) { line == "aoc.toml" }) - case aoc_toml_ignored { - Error(_) -> { - simplifile.append("\naoc.toml", to: ".gitignore") - |> errors.map_messages( - ".gitignore written", - "Error when writing .gitignore", - ) - } - Ok(_) -> Ok(".gitignore - skipped (already configured)") - } - } - False -> Error("Could not find .gitignore") - } - |> errors.print_result -} diff --git a/aoc2023/build/packages/adglent/src/adglent@day.erl b/aoc2023/build/packages/adglent/src/adglent@day.erl deleted file mode 100644 index b80368f..0000000 --- a/aoc2023/build/packages/adglent/src/adglent@day.erl +++ /dev/null @@ -1,278 +0,0 @@ --module(adglent@day). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec create_file_if_not_present(binary(), binary()) -> {ok, binary()} | - {error, binary()}. -create_file_if_not_present(Content, Path) -> - case simplifile:is_file(Path) of - true -> - {ok, <>}; - - false -> - gleam@result:'try'( - begin - _pipe = simplifile:create_file(Path), - priv@errors:map_messages( - _pipe, - <<"Created "/utf8, Path/binary>>, - <<"Could not create "/utf8, Path/binary>> - ) - end, - fun(_) -> _pipe@1 = simplifile:write(Path, Content), - priv@errors:map_messages( - _pipe@1, - <<"Wrote "/utf8, Path/binary>>, - <<"Could not write to "/utf8, Path/binary>> - ) end - ) - end. - --spec main() -> binary(). -main() -> - Day@1 = begin - _pipe = case adglent:start_arguments() of - [Day] -> - {ok, Day}; - - Args -> - {error, - <<"Expected day - found: "/utf8, - (gleam@string:join(Args, <<", "/utf8>>))/binary>>} - end, - _pipe@1 = priv@errors:map_error( - _pipe, - <<"Error when parsing command args"/utf8>> - ), - _pipe@2 = priv@errors:print_error(_pipe@1), - priv@errors:assert_ok(_pipe@2) - end, - Aoc_toml = begin - _pipe@3 = simplifile:read(<<"aoc.toml"/utf8>>), - _pipe@4 = priv@errors:map_error( - _pipe@3, - <<"Could not read aoc.toml"/utf8>> - ), - _pipe@5 = priv@errors:print_error(_pipe@4), - priv@errors:assert_ok(_pipe@5) - end, - Aoc_toml_version = priv@toml:get_int(Aoc_toml, [<<"version"/utf8>>]), - Year = begin - _pipe@6 = priv@toml:get_string(Aoc_toml, [<<"year"/utf8>>]), - _pipe@7 = priv@errors:map_error( - _pipe@6, - <<"Could not read \"year\" from aoc.toml"/utf8>> - ), - _pipe@8 = priv@errors:print_error(_pipe@7), - priv@errors:assert_ok(_pipe@8) - end, - Session = begin - _pipe@9 = priv@toml:get_string(Aoc_toml, [<<"session"/utf8>>]), - _pipe@10 = priv@errors:map_error( - _pipe@9, - <<"Could not read \"session\" from aoc.toml"/utf8>> - ), - _pipe@11 = priv@errors:print_error(_pipe@10), - priv@errors:assert_ok(_pipe@11) - end, - Showtime = case Aoc_toml_version of - {ok, 2} -> - _pipe@12 = priv@toml:get_bool(Aoc_toml, [<<"showtime"/utf8>>]), - _pipe@13 = priv@errors:map_error( - _pipe@12, - <<"Could not read \"showtime\" from aoc.toml"/utf8>> - ), - _pipe@14 = priv@errors:print_error(_pipe@13), - priv@errors:assert_ok(_pipe@14); - - _ -> - _pipe@15 = priv@toml:get_string(Aoc_toml, [<<"showtime"/utf8>>]), - _pipe@16 = gleam@result:map( - _pipe@15, - fun(Bool_string) -> case Bool_string of - <<"True"/utf8>> -> - true; - - _ -> - false - end end - ), - _pipe@17 = priv@errors:map_error( - _pipe@16, - <<"Could not read \"showtime\" from aoc.toml"/utf8>> - ), - _pipe@18 = priv@errors:print_error(_pipe@17), - priv@errors:assert_ok(_pipe@18) - end, - Test_folder = adglent:get_test_folder(Day@1), - Test_file = <<<<<>/binary, Day@1/binary>>/binary, - "_test.gleam"/utf8>>, - _pipe@19 = simplifile:create_directory_all(Test_folder), - _pipe@20 = priv@errors:map_error( - _pipe@19, - <<<<"Could not create folder \""/utf8, Test_folder/binary>>/binary, - "\""/utf8>> - ), - _pipe@21 = priv@errors:print_error(_pipe@20), - priv@errors:assert_ok(_pipe@21), - Testfile_template = case Showtime of - true -> - <<" -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -"/utf8>>; - - false -> - <<" -import gleam/list -import gleeunit/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -"/utf8>> - end, - _pipe@22 = priv@template:render( - Testfile_template, - [{<<"day"/utf8>>, Day@1}] - ), - _pipe@23 = create_file_if_not_present(_pipe@22, Test_file), - _pipe@24 = priv@errors:print_result(_pipe@23), - priv@errors:assert_ok(_pipe@24), - Solutions_folder = <<"src/day"/utf8, Day@1/binary>>, - Solution_file = <>, - _pipe@25 = simplifile:create_directory_all(Solutions_folder), - _pipe@26 = priv@errors:map_error( - _pipe@25, - <<<<"Could not create folder \""/utf8, Solutions_folder/binary>>/binary, - "\""/utf8>> - ), - _pipe@27 = priv@errors:print_error(_pipe@26), - priv@errors:assert_ok(_pipe@27), - _pipe@28 = priv@template:render( - <<" -import adglent.{First, Second} -import gleam/io - -pub fn part1(input: String) { - todo as \"Implement solution to part 1\" -} - -pub fn part2(input: String) { - todo as \"Implement solution to part 2\" -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input(\"{{ day }}\") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} -"/utf8>>, - [{<<"day"/utf8>>, Day@1}] - ), - _pipe@29 = create_file_if_not_present(_pipe@28, Solution_file), - _pipe@30 = priv@errors:print_result(_pipe@29), - priv@errors:assert_ok(_pipe@30), - _pipe@31 = create_file_if_not_present( - <<"input.txt"/utf8>>, - <> - ), - _pipe@32 = priv@errors:print_result(_pipe@31), - priv@errors:assert_ok(_pipe@32), - Input = begin - _pipe@33 = priv@aoc_client:get_input(Year, Day@1, Session), - _pipe@34 = priv@errors:map_error( - _pipe@33, - <<"Error when fetching input"/utf8>> - ), - _pipe@35 = priv@errors:print_error(_pipe@34), - priv@errors:assert_ok(_pipe@35) - end, - _pipe@36 = Input, - _pipe@37 = gleam@string:trim(_pipe@36), - _pipe@38 = create_file_if_not_present( - _pipe@37, - <> - ), - _pipe@39 = priv@errors:print_result(_pipe@38), - priv@errors:assert_ok(_pipe@39). diff --git a/aoc2023/build/packages/adglent/src/adglent@init.erl b/aoc2023/build/packages/adglent/src/adglent@init.erl deleted file mode 100644 index fb28101..0000000 --- a/aoc2023/build/packages/adglent/src/adglent@init.erl +++ /dev/null @@ -1,142 +0,0 @@ --module(adglent@init). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec main() -> {ok, binary()} | {error, binary()}. -main() -> - Year = priv@prompt:value(<<"Year"/utf8>>, <<"2023"/utf8>>, false), - Session = priv@prompt:value(<<"Session Cookie"/utf8>>, <<""/utf8>>, false), - Use_showtime = priv@prompt:confirm(<<"Use showtime"/utf8>>, false), - Aoc_toml_file = <<"aoc.toml"/utf8>>, - Overwrite = case simplifile:create_file(Aoc_toml_file) of - {ok, _} -> - true; - - {error, eexist} -> - priv@prompt:confirm(<<"aoc.toml exits - overwrite"/utf8>>, false); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"Could not create aoc.toml"/utf8>>, - module => <<"adglent/init"/utf8>>, - function => <<"main"/utf8>>, - line => 29}) - end, - _pipe@3 = case Overwrite of - true -> - _pipe@1 = priv@template:render( - <<" -version = {{ version }} -year = \"{{ year }}\" -session = \"{{ session }}\" -showtime = {{ showtime }} -"/utf8>>, - [{<<"version"/utf8>>, <<"2"/utf8>>}, - {<<"year"/utf8>>, Year}, - {<<"session"/utf8>>, Session}, - {<<"showtime"/utf8>>, - begin - _pipe = gleam@bool:to_string(Use_showtime), - gleam@string:lowercase(_pipe) - end}] - ), - _pipe@2 = simplifile:write(Aoc_toml_file, _pipe@1), - priv@errors:map_messages( - _pipe@2, - <<"aoc.toml - written"/utf8>>, - <<"Error when writing aoc.toml"/utf8>> - ); - - false -> - {ok, <<"aoc.toml - skipped"/utf8>>} - end, - priv@errors:print_result(_pipe@3), - Gleam_toml = begin - _pipe@4 = simplifile:read(<<"gleam.toml"/utf8>>), - _pipe@5 = priv@errors:map_error( - _pipe@4, - <<"Could not read gleam.toml"/utf8>> - ), - _pipe@6 = priv@errors:print_error(_pipe@5), - priv@errors:assert_ok(_pipe@6) - end, - Name = begin - _pipe@7 = priv@toml:get_string(Gleam_toml, [<<"name"/utf8>>]), - _pipe@8 = priv@errors:map_error( - _pipe@7, - <<"Could not read \"name\" from gleam.toml"/utf8>> - ), - _pipe@9 = priv@errors:print_error(_pipe@8), - priv@errors:assert_ok(_pipe@9) - end, - Test_main_file = <<<<"test/"/utf8, Name/binary>>/binary, - "_test.gleam"/utf8>>, - _pipe@12 = case Use_showtime of - true -> - _pipe@10 = priv@template:render( - <<" -import showtime - -pub fn main() { - showtime.main() -} -"/utf8>>, - [] - ), - _pipe@11 = simplifile:write(Test_main_file, _pipe@10), - priv@errors:map_messages( - _pipe@11, - <<"Wrote "/utf8, Test_main_file/binary>>, - <<"Could not write to "/utf8, Test_main_file/binary>> - ); - - false -> - {ok, <<"Using existing (gleeunit) "/utf8, Test_main_file/binary>>} - end, - _pipe@13 = priv@errors:print_result(_pipe@12), - priv@errors:assert_ok(_pipe@13), - _pipe@17 = case simplifile:is_file(<<".gitignore"/utf8>>) of - true -> - gleam@result:'try'( - begin - _pipe@14 = simplifile:read(<<".gitignore"/utf8>>), - gleam@result:map_error( - _pipe@14, - fun(Err) -> - <<"Could not read .gitignore: "/utf8, - (gleam@string:inspect(Err))/binary>> - end - ) - end, - fun(Gitignore) -> - Aoc_toml_ignored = begin - _pipe@15 = gleam@string:split(Gitignore, <<"\n"/utf8>>), - gleam@list:find( - _pipe@15, - fun(Line) -> Line =:= <<"aoc.toml"/utf8>> end - ) - end, - case Aoc_toml_ignored of - {error, _} -> - _pipe@16 = simplifile:append( - <<".gitignore"/utf8>>, - <<"\naoc.toml"/utf8>> - ), - priv@errors:map_messages( - _pipe@16, - <<".gitignore written"/utf8>>, - <<"Error when writing .gitignore"/utf8>> - ); - - {ok, _} -> - {ok, - <<".gitignore - skipped (already configured)"/utf8>>} - end - end - ); - - false -> - {error, <<"Could not find .gitignore"/utf8>>} - end, - priv@errors:print_result(_pipe@17). diff --git a/aoc2023/build/packages/adglent/src/adglent_ffi.erl b/aoc2023/build/packages/adglent/src/adglent_ffi.erl deleted file mode 100644 index a6a92e6..0000000 --- a/aoc2023/build/packages/adglent/src/adglent_ffi.erl +++ /dev/null @@ -1,12 +0,0 @@ --module(adglent_ffi). - --export([get_line/1]). - --spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. -get_line(Prompt) -> - case io:get_line(Prompt) of - eof -> {error, eof}; - {error, _} -> {error, no_data}; - Data when is_binary(Data) -> {ok, Data}; - Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} - end. diff --git a/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam b/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam deleted file mode 100644 index e18bafa..0000000 --- a/aoc2023/build/packages/adglent/src/priv/aoc_client.gleam +++ /dev/null @@ -1,37 +0,0 @@ -import gleam/result.{try} -import gleam/httpc -import gleam/http/request -import gleam/int -import gleam/string - -pub fn get_input( - year: String, - day: String, - session: String, -) -> Result(String, String) { - let url = "https://adventofcode.com/" <> year <> "/day/" <> day <> "/input" - use request <- try( - request.to(url) - |> result.map_error(fn(error) { - "Could not create request for \"" <> url <> "\": " <> string.inspect( - error, - ) - }), - ) - - // Send the HTTP request to the server - use response <- try( - request - |> request.prepend_header("Accept", "application/json") - |> request.prepend_header("Cookie", "session=" <> session <> ";") - |> httpc.send - |> result.map_error(fn(error) { - "Error when requesting \"" <> url <> "\": " <> string.inspect(error) - }), - ) - - case response.status { - status if status >= 200 && status < 300 -> Ok(response.body) - status -> Error(int.to_string(status) <> " - " <> response.body) - } -} diff --git a/aoc2023/build/packages/adglent/src/priv/errors.gleam b/aoc2023/build/packages/adglent/src/priv/errors.gleam deleted file mode 100644 index 14c35ca..0000000 --- a/aoc2023/build/packages/adglent/src/priv/errors.gleam +++ /dev/null @@ -1,54 +0,0 @@ -import gleam/result -import gleam/string -import gleam/io - -pub fn map_messages( - result: Result(a, b), - success_message: String, - error_message: String, -) -> Result(String, String) { - result - |> result.map_error(fn(error) { - "Error - " <> error_message <> ": " <> string.inspect(error) - }) - |> result.replace(success_message) -} - -pub fn map_error( - result: Result(a, b), - error_message: String, -) -> Result(a, String) { - result - |> result.map_error(fn(error) { - error_message <> ": " <> string.inspect(error) - }) -} - -pub fn print_result(result: Result(String, String)) { - result - |> result.unwrap_both - |> io.println - result -} - -pub fn print_error(result: Result(a, String)) { - result - |> result.map_error(fn(err) { - io.println(err) - err - }) -} - -pub fn assert_ok(result: Result(a, String)) { - let assert Ok(value) = - result - |> result.map_error(fn(err) { - halt(1) - err - }) - value -} - -@target(erlang) -@external(erlang, "erlang", "halt") -fn halt(a: Int) -> Nil diff --git a/aoc2023/build/packages/adglent/src/priv/prompt.gleam b/aoc2023/build/packages/adglent/src/priv/prompt.gleam deleted file mode 100644 index 6cee35a..0000000 --- a/aoc2023/build/packages/adglent/src/priv/prompt.gleam +++ /dev/null @@ -1,38 +0,0 @@ -import gleam/result -import gleam/string - -pub fn confirm(message: String, auto_accept: Bool) -> Bool { - auto_accept || case - get_line(message <> "? (Y/N): ") - |> result.unwrap("n") - |> string.trim() - { - "Y" | "y" -> True - _ -> False - } -} - -pub fn value(message: String, default: String, auto_accept: Bool) -> String { - case get_value_of_default(message, default, auto_accept) { - "" -> default - value -> value - } -} - -fn get_value_of_default(message: String, default: String, auto_accept: Bool) { - case auto_accept { - True -> default - False -> - get_line(message <> "? (" <> default <> "): ") - |> result.unwrap("") - |> string.trim() - } -} - -pub type GetLineError { - Eof - NoData -} - -@external(erlang, "adglent_ffi", "get_line") -pub fn get_line(prompt prompt: String) -> Result(String, GetLineError) diff --git a/aoc2023/build/packages/adglent/src/priv/template.gleam b/aoc2023/build/packages/adglent/src/priv/template.gleam deleted file mode 100644 index e946888..0000000 --- a/aoc2023/build/packages/adglent/src/priv/template.gleam +++ /dev/null @@ -1,18 +0,0 @@ -import gleam/list -import gleam/string - -pub fn render( - template: String, - substitutions: List(#(String, String)), -) -> String { - substitutions - |> list.fold( - template, - fn(template, substitution) { - let #(name, value) = substitution - template - |> string.replace("{{ " <> name <> " }}", value) - }, - ) - |> string.trim <> "\n" -} diff --git a/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam b/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam deleted file mode 100644 index 96085c3..0000000 --- a/aoc2023/build/packages/adglent/src/priv/templates/solution.gleam +++ /dev/null @@ -1,27 +0,0 @@ -pub const template = " -import adglent.{First, Second} -import gleam/io - -pub fn part1(input: String) { - todo as \"Implement solution to part 1\" -} - -pub fn part2(input: String) { - todo as \"Implement solution to part 2\" -} - -pub fn main() { - let assert Ok(part) = adglent.get_part() - let assert Ok(input) = adglent.get_input(\"{{ day }}\") - case part { - First -> - part1(input) - |> adglent.inspect - |> io.println - Second -> - part2(input) - |> adglent.inspect - |> io.println - } -} -" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam b/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam deleted file mode 100644 index 27548d3..0000000 --- a/aoc2023/build/packages/adglent/src/priv/templates/test_main.gleam +++ /dev/null @@ -1,7 +0,0 @@ -pub const template = " -import showtime - -pub fn main() { - showtime.main() -} -" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam b/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam deleted file mode 100644 index a1d56f6..0000000 --- a/aoc2023/build/packages/adglent/src/priv/templates/testfile_gleeunit.gleam +++ /dev/null @@ -1,41 +0,0 @@ -pub const template = " -import gleam/list -import gleeunit/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -" diff --git a/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam b/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam deleted file mode 100644 index 699feb2..0000000 --- a/aoc2023/build/packages/adglent/src/priv/templates/testfile_showtime.gleam +++ /dev/null @@ -1,41 +0,0 @@ -pub const template = " -import gleam/list -import showtime/tests/should -import adglent.{type Example, Example} -import day{{ day }}/solve - -type Problem1AnswerType = - String - -type Problem2AnswerType = - String - -/// Add examples for part 1 here: -/// ```gleam -///const part1_examples: List(Example(Problem1AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part1_examples: List(Example(Problem1AnswerType)) = [] - -/// Add examples for part 2 here: -/// ```gleam -///const part2_examples: List(Example(Problem2AnswerType)) = [Example(\"some input\", \"\")] -/// ``` -const part2_examples: List(Example(Problem2AnswerType)) = [] - -pub fn part1_test() { - part1_examples - |> should.not_equal([]) - use example <- list.map(part1_examples) - solve.part1(example.input) - |> should.equal(example.answer) -} - -pub fn part2_test() { - part2_examples - |> should.not_equal([]) - use example <- list.map(part2_examples) - solve.part2(example.input) - |> should.equal(example.answer) -} - -" diff --git a/aoc2023/build/packages/adglent/src/priv/toml.gleam b/aoc2023/build/packages/adglent/src/priv/toml.gleam deleted file mode 100644 index 7042833..0000000 --- a/aoc2023/build/packages/adglent/src/priv/toml.gleam +++ /dev/null @@ -1,52 +0,0 @@ -import tom -import gleam/result - -pub type TomError { - TomParseError(error: tom.ParseError) - TomGetError(error: tom.GetError) -} - -pub fn get_string( - toml_content: String, - key_path: List(String), -) -> Result(String, TomError) { - use toml <- result.try( - tom.parse(toml_content <> "\n") - |> result.map_error(TomParseError), - ) - use value <- result.try( - tom.get_string(toml, key_path) - |> result.map_error(TomGetError), - ) - Ok(value) -} - -pub fn get_bool( - toml_content: String, - key_path: List(String), -) -> Result(Bool, TomError) { - use toml <- result.try( - tom.parse(toml_content <> "\n") - |> result.map_error(TomParseError), - ) - use value <- result.try( - tom.get_bool(toml, key_path) - |> result.map_error(TomGetError), - ) - Ok(value) -} - -pub fn get_int( - toml_content: String, - key_path: List(String), -) -> Result(Int, TomError) { - use toml <- result.try( - tom.parse(toml_content <> "\n") - |> result.map_error(TomParseError), - ) - use value <- result.try( - tom.get_int(toml, key_path) - |> result.map_error(TomGetError), - ) - Ok(value) -} diff --git a/aoc2023/build/packages/adglent/src/priv@aoc_client.erl b/aoc2023/build/packages/adglent/src/priv@aoc_client.erl deleted file mode 100644 index 1acb9b5..0000000 --- a/aoc2023/build/packages/adglent/src/priv@aoc_client.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(priv@aoc_client). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_input/3]). - --spec get_input(binary(), binary(), binary()) -> {ok, binary()} | - {error, binary()}. -get_input(Year, Day, Session) -> - Url = <<<<<<<<"https://adventofcode.com/"/utf8, Year/binary>>/binary, - "/day/"/utf8>>/binary, - Day/binary>>/binary, - "/input"/utf8>>, - gleam@result:'try'( - begin - _pipe = gleam@http@request:to(Url), - gleam@result:map_error( - _pipe, - fun(Error) -> - <<<<<<"Could not create request for \""/utf8, Url/binary>>/binary, - "\": "/utf8>>/binary, - (gleam@string:inspect(Error))/binary>> - end - ) - end, - fun(Request) -> - gleam@result:'try'( - begin - _pipe@1 = Request, - _pipe@2 = gleam@http@request:prepend_header( - _pipe@1, - <<"Accept"/utf8>>, - <<"application/json"/utf8>> - ), - _pipe@3 = gleam@http@request:prepend_header( - _pipe@2, - <<"Cookie"/utf8>>, - <<<<"session="/utf8, Session/binary>>/binary, ";"/utf8>> - ), - _pipe@4 = gleam@httpc:send(_pipe@3), - gleam@result:map_error( - _pipe@4, - fun(Error@1) -> - <<<<<<"Error when requesting \""/utf8, Url/binary>>/binary, - "\": "/utf8>>/binary, - (gleam@string:inspect(Error@1))/binary>> - end - ) - end, - fun(Response) -> case erlang:element(2, Response) of - Status when (Status >= 200) andalso (Status < 300) -> - {ok, erlang:element(4, Response)}; - - Status@1 -> - {error, - <<<<(gleam@int:to_string(Status@1))/binary, - " - "/utf8>>/binary, - (erlang:element(4, Response))/binary>>} - end end - ) - end - ). diff --git a/aoc2023/build/packages/adglent/src/priv@errors.erl b/aoc2023/build/packages/adglent/src/priv@errors.erl deleted file mode 100644 index 978c675..0000000 --- a/aoc2023/build/packages/adglent/src/priv@errors.erl +++ /dev/null @@ -1,74 +0,0 @@ --module(priv@errors). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([map_messages/3, map_error/2, print_result/1, print_error/1, assert_ok/1]). - --spec map_messages({ok, any()} | {error, any()}, binary(), binary()) -> {ok, - binary()} | - {error, binary()}. -map_messages(Result, Success_message, Error_message) -> - _pipe = Result, - _pipe@1 = gleam@result:map_error( - _pipe, - fun(Error) -> - <<<<<<"Error - "/utf8, Error_message/binary>>/binary, ": "/utf8>>/binary, - (gleam@string:inspect(Error))/binary>> - end - ), - gleam@result:replace(_pipe@1, Success_message). - --spec map_error({ok, NIB} | {error, any()}, binary()) -> {ok, NIB} | - {error, binary()}. -map_error(Result, Error_message) -> - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Error) -> - <<<>/binary, - (gleam@string:inspect(Error))/binary>> - end - ). - --spec print_result({ok, binary()} | {error, binary()}) -> {ok, binary()} | - {error, binary()}. -print_result(Result) -> - _pipe = Result, - _pipe@1 = gleam@result:unwrap_both(_pipe), - gleam@io:println(_pipe@1), - Result. - --spec print_error({ok, NIK} | {error, binary()}) -> {ok, NIK} | - {error, binary()}. -print_error(Result) -> - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Err) -> - gleam@io:println(Err), - Err - end - ). - --spec assert_ok({ok, NIO} | {error, binary()}) -> NIO. -assert_ok(Result) -> - _assert_subject = begin - _pipe = Result, - gleam@result:map_error( - _pipe, - fun(Err) -> - erlang:halt(1), - Err - end - ) - end, - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"priv/errors"/utf8>>, - function => <<"assert_ok"/utf8>>, - line => 43}) - end, - Value. diff --git a/aoc2023/build/packages/adglent/src/priv@prompt.erl b/aoc2023/build/packages/adglent/src/priv@prompt.erl deleted file mode 100644 index 0277f14..0000000 --- a/aoc2023/build/packages/adglent/src/priv@prompt.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(priv@prompt). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_line/1, confirm/2, value/3]). --export_type([get_line_error/0]). - --type get_line_error() :: eof | no_data. - --spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. -get_line(Prompt) -> - adglent_ffi:get_line(Prompt). - --spec confirm(binary(), boolean()) -> boolean(). -confirm(Message, Auto_accept) -> - Auto_accept orelse case begin - _pipe = adglent_ffi:get_line(<>), - _pipe@1 = gleam@result:unwrap(_pipe, <<"n"/utf8>>), - gleam@string:trim(_pipe@1) - end of - <<"Y"/utf8>> -> - true; - - <<"y"/utf8>> -> - true; - - _ -> - false - end. - --spec get_value_of_default(binary(), binary(), boolean()) -> binary(). -get_value_of_default(Message, Default, Auto_accept) -> - case Auto_accept of - true -> - Default; - - false -> - _pipe = adglent_ffi:get_line( - <<<<<>/binary, Default/binary>>/binary, - "): "/utf8>> - ), - _pipe@1 = gleam@result:unwrap(_pipe, <<""/utf8>>), - gleam@string:trim(_pipe@1) - end. - --spec value(binary(), binary(), boolean()) -> binary(). -value(Message, Default, Auto_accept) -> - case get_value_of_default(Message, Default, Auto_accept) of - <<""/utf8>> -> - Default; - - Value -> - Value - end. diff --git a/aoc2023/build/packages/adglent/src/priv@template.erl b/aoc2023/build/packages/adglent/src/priv@template.erl deleted file mode 100644 index 6a5d0bf..0000000 --- a/aoc2023/build/packages/adglent/src/priv@template.erl +++ /dev/null @@ -1,25 +0,0 @@ --module(priv@template). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([render/2]). - --spec render(binary(), list({binary(), binary()})) -> binary(). -render(Template, Substitutions) -> - <<(begin - _pipe = Substitutions, - _pipe@2 = gleam@list:fold( - _pipe, - Template, - fun(Template@1, Substitution) -> - {Name, Value} = Substitution, - _pipe@1 = Template@1, - gleam@string:replace( - _pipe@1, - <<<<"{{ "/utf8, Name/binary>>/binary, " }}"/utf8>>, - Value - ) - end - ), - gleam@string:trim(_pipe@2) - end)/binary, - "\n"/utf8>>. diff --git a/aoc2023/build/packages/adglent/src/priv@templates@solution.erl b/aoc2023/build/packages/adglent/src/priv@templates@solution.erl deleted file mode 100644 index 7e36387..0000000 --- a/aoc2023/build/packages/adglent/src/priv@templates@solution.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@solution). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl b/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl deleted file mode 100644 index ca6b127..0000000 --- a/aoc2023/build/packages/adglent/src/priv@templates@test_main.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@test_main). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl b/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl deleted file mode 100644 index 2f5a41e..0000000 --- a/aoc2023/build/packages/adglent/src/priv@templates@testfile_gleeunit.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@testfile_gleeunit). diff --git a/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl b/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl deleted file mode 100644 index bbbc8b2..0000000 --- a/aoc2023/build/packages/adglent/src/priv@templates@testfile_showtime.erl +++ /dev/null @@ -1 +0,0 @@ --module(priv@templates@testfile_showtime). diff --git a/aoc2023/build/packages/adglent/src/priv@toml.erl b/aoc2023/build/packages/adglent/src/priv@toml.erl deleted file mode 100644 index 6c41fbf..0000000 --- a/aoc2023/build/packages/adglent/src/priv@toml.erl +++ /dev/null @@ -1,83 +0,0 @@ --module(priv@toml). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_string/2, get_bool/2, get_int/2]). --export_type([tom_error/0]). - --type tom_error() :: {tom_parse_error, tom:parse_error()} | - {tom_get_error, tom:get_error()}. - --spec get_string(binary(), list(binary())) -> {ok, binary()} | - {error, tom_error()}. -get_string(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_string(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). - --spec get_bool(binary(), list(binary())) -> {ok, boolean()} | - {error, tom_error()}. -get_bool(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_bool(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). - --spec get_int(binary(), list(binary())) -> {ok, integer()} | - {error, tom_error()}. -get_int(Toml_content, Key_path) -> - gleam@result:'try'( - begin - _pipe = tom:parse(<>), - gleam@result:map_error( - _pipe, - fun(Field@0) -> {tom_parse_error, Field@0} end - ) - end, - fun(Toml) -> - gleam@result:'try'( - begin - _pipe@1 = tom:get_int(Toml, Key_path), - gleam@result:map_error( - _pipe@1, - fun(Field@0) -> {tom_get_error, Field@0} end - ) - end, - fun(Value) -> {ok, Value} end - ) - end - ). diff --git a/aoc2023/build/packages/adglent/src/showtime.erl b/aoc2023/build/packages/adglent/src/showtime.erl deleted file mode 100644 index 721bad4..0000000 --- a/aoc2023/build/packages/adglent/src/showtime.erl +++ /dev/null @@ -1,155 +0,0 @@ --module(showtime). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec mk_runner( - fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> OBY), - glint:command_input() -) -> OBY. -mk_runner(Func, Command) -> - _assert_subject = begin - _pipe = erlang:element(3, Command), - _pipe@1 = glint@flag:get_strings(_pipe, <<"modules"/utf8>>), - gleam@result:map(_pipe@1, fun(Modules) -> case Modules of - [] -> - none; - - Modules@1 -> - {some, Modules@1} - end end) - end, - {ok, Module_list} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 91}) - end, - _assert_subject@1 = begin - _pipe@2 = erlang:element(3, Command), - glint@flag:get_strings(_pipe@2, <<"ignore"/utf8>>) - end, - {ok, Ignore_tags} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 100}) - end, - _assert_subject@2 = begin - _pipe@3 = erlang:element(3, Command), - _pipe@4 = glint@flag:get_string(_pipe@3, <<"capture"/utf8>>), - _pipe@5 = gleam@result:map( - _pipe@4, - fun(Arg) -> gleam@string:lowercase(Arg) end - ), - gleam@result:map(_pipe@5, fun(Arg@1) -> case Arg@1 of - <<"no"/utf8>> -> - no; - - <<"yes"/utf8>> -> - yes; - - <<"mixed"/utf8>> -> - mixed - end end) - end, - {ok, Capture_output} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"showtime"/utf8>>, - function => <<"mk_runner"/utf8>>, - line => 104}) - end, - Func(Module_list, Ignore_tags, Capture_output). - --spec start_with_args( - list(binary()), - fun((gleam@option:option(list(binary())), list(binary()), showtime@internal@common@cli:capture()) -> any()) -) -> nil. -start_with_args(Args, Func) -> - Modules_flag = begin - _pipe = glint@flag:string_list(), - _pipe@1 = glint@flag:default(_pipe, []), - glint@flag:description( - _pipe@1, - <<"Run only tests in the modules in this list"/utf8>> - ) - end, - Ignore_flag = begin - _pipe@2 = glint@flag:string_list(), - _pipe@3 = glint@flag:default(_pipe@2, []), - glint@flag:description( - _pipe@3, - <<"Ignore tests that are have tags matching a tag in this list"/utf8>> - ) - end, - Capture_flag = begin - _pipe@4 = glint@flag:string(), - _pipe@5 = glint@flag:default(_pipe@4, <<"no"/utf8>>), - _pipe@6 = glint@flag:constraint( - _pipe@5, - glint@flag@constraint:one_of( - [<<"yes"/utf8>>, <<"no"/utf8>>, <<"mixed"/utf8>>] - ) - ), - glint@flag:description( - _pipe@6, - <<"Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report"/utf8>> - ) - end, - _pipe@7 = glint:new(), - _pipe@12 = glint:add( - _pipe@7, - [], - begin - _pipe@8 = glint:command( - fun(_capture) -> mk_runner(Func, _capture) end - ), - _pipe@9 = glint:flag(_pipe@8, <<"modules"/utf8>>, Modules_flag), - _pipe@10 = glint:flag(_pipe@9, <<"ignore"/utf8>>, Ignore_flag), - _pipe@11 = glint:flag(_pipe@10, <<"capture"/utf8>>, Capture_flag), - glint:description(_pipe@11, <<"Runs test"/utf8>>) - end - ), - _pipe@13 = glint:with_pretty_help(_pipe@12, glint:default_pretty_help()), - glint:run(_pipe@13, Args). - --spec main() -> nil. -main() -> - start_with_args( - gleam@erlang:start_arguments(), - fun(Module_list, Ignore_tags, Capture) -> - Test_event_handler = showtime@internal@erlang@event_handler:start(), - Test_module_handler = showtime@internal@erlang@module_handler:start( - Test_event_handler, - fun showtime@internal@erlang@discover:collect_test_functions/1, - fun showtime@internal@erlang@runner:run_test_suite/4, - Ignore_tags, - Capture - ), - Test_event_handler(start_test_run), - Modules = showtime@internal@erlang@discover:collect_modules( - Test_module_handler, - Module_list - ), - Test_event_handler( - {end_test_run, - begin - _pipe = Modules, - gleam@list:length(_pipe) - end} - ), - nil - end - ). diff --git a/aoc2023/build/packages/adglent/src/showtime.gleam b/aoc2023/build/packages/adglent/src/showtime.gleam deleted file mode 100644 index f0401c9..0000000 --- a/aoc2023/build/packages/adglent/src/showtime.gleam +++ /dev/null @@ -1,116 +0,0 @@ -import glint.{type CommandInput, flag} -import glint/flag -import glint/flag/constraint.{one_of} -import gleam/result -import gleam/string -import showtime/internal/common/cli.{Mixed, No, Yes} -@target(erlang) -import gleam/list -@target(erlang) -import gleam/option.{None, Some} -@target(erlang) -import gleam/erlang.{start_arguments} -@target(erlang) -import showtime/internal/common/test_suite.{EndTestRun, StartTestRun} -@target(erlang) -import showtime/internal/erlang/event_handler -@target(erlang) -import showtime/internal/erlang/module_handler -@target(erlang) -import showtime/internal/erlang/runner -@target(erlang) -import showtime/internal/erlang/discover.{ - collect_modules, collect_test_functions, -} - -// @target(javascript) -// import gleam/io - -@target(erlang) -pub fn main() { - use module_list, ignore_tags, capture <- start_with_args(start_arguments()) - // Start event handler which will collect test-results and eventually - // print test report - let test_event_handler = event_handler.start() - // Start module handler which receives msg about modules to test and - // runs the test-suite for the module - let test_module_handler = - module_handler.start( - test_event_handler, - collect_test_functions, - runner.run_test_suite, - ignore_tags, - capture, - ) - - test_event_handler(StartTestRun) - // Collect modules and notify the module handler to start the test-suites - let modules = collect_modules(test_module_handler, module_list) - test_event_handler(EndTestRun( - modules - |> list.length(), - )) - Nil -} - -fn start_with_args(args, func) { - let modules_flag = - flag.string_list() - |> flag.default([]) - |> flag.description("Run only tests in the modules in this list") - - let ignore_flag = - flag.string_list() - |> flag.default([]) - |> flag.description( - "Ignore tests that are have tags matching a tag in this list", - ) - - let capture_flag = - flag.string() - |> flag.default("no") - |> flag.constraint(one_of(["yes", "no", "mixed"])) - |> flag.description( - "Capture output: no (default) - output when tests are run, yes - output is captured and shown in report, mixed - output when run and in report", - ) - - glint.new() - |> glint.add( - at: [], - do: glint.command(mk_runner(func, _)) - |> glint.flag("modules", modules_flag) - |> glint.flag("ignore", ignore_flag) - |> glint.flag("capture", capture_flag) - |> glint.description("Runs test"), - ) - |> glint.with_pretty_help(glint.default_pretty_help()) - |> glint.run(args) -} - -fn mk_runner(func, command: CommandInput) { - let assert Ok(module_list) = - command.flags - |> flag.get_strings("modules") - |> result.map(fn(modules) { - case modules { - [] -> None - modules -> Some(modules) - } - }) - let assert Ok(ignore_tags) = - command.flags - |> flag.get_strings("ignore") - - let assert Ok(capture_output) = - command.flags - |> flag.get_string("capture") - |> result.map(fn(arg) { string.lowercase(arg) }) - |> result.map(fn(arg) { - case arg { - "no" -> No - "yes" -> Yes - "mixed" -> Mixed - } - }) - func(module_list, ignore_tags, capture_output) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam deleted file mode 100644 index 1c03211..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/common/cli.gleam +++ /dev/null @@ -1,5 +0,0 @@ -pub type Capture { - Yes - No - Mixed -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam deleted file mode 100644 index b90af14..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/common/common_event_handler.gleam +++ /dev/null @@ -1,101 +0,0 @@ -import gleam/map.{type Map} -import showtime/internal/common/test_suite.{ - type TestEvent, type TestRun, CompletedTestRun, EndTest, EndTestRun, - EndTestSuite, OngoingTestRun, StartTest, StartTestRun, StartTestSuite, -} - -pub type TestState { - NotStarted - Running - Finished(num_modules: Int) -} - -pub type HandlerState { - HandlerState( - test_state: TestState, - num_done: Int, - events: Map(String, Map(String, TestRun)), - ) -} - -// This is the common event-handler (shared between erlang/JS targets) -// The main strategy is to collect the test-results in a map of maps: -// module_name -> -// test_name -> test_result -// It will also keep track of if it is running (i.e. did it receive the EndTestRun) -// so that the caller can determine when to print test-results -pub fn handle_event( - msg: TestEvent, - system_time: fn() -> Int, - state: HandlerState, -) { - let test_state = state.test_state - let num_done = state.num_done - let events = state.events - let #(updated_test_state, updated_num_done, updated_events) = case msg { - StartTestRun -> #(Running, num_done, events) - StartTestSuite(module) -> { - let maybe_module_events = map.get(events, module.name) - let new_events = case maybe_module_events { - Ok(_) -> events - Error(_) -> - events - |> map.insert(module.name, map.new()) - } - #(test_state, num_done, new_events) - } - StartTest(module, test) -> { - let current_time = system_time() - let maybe_module_events = map.get(events, module.name) - let new_events = case maybe_module_events { - Ok(module_events) -> { - let maybe_test_event = map.get(module_events, test.name) - case maybe_test_event { - Error(_) -> - events - |> map.insert( - module.name, - module_events - |> map.insert(test.name, OngoingTestRun(test, current_time)), - ) - Ok(_) -> events - } - } - Error(_) -> events - } - #(test_state, num_done, new_events) - } - EndTest(module, test, result) -> { - let current_time = system_time() - let maybe_module_events = map.get(events, module.name) - let new_events = case maybe_module_events { - Ok(module_events) -> { - let maybe_test_run = - module_events - |> map.get(test.name) - let updated_module_events = case maybe_test_run { - Ok(OngoingTestRun(test_function, started_at)) -> - module_events - |> map.insert( - test.name, - CompletedTestRun( - test_function, - current_time - started_at, - result, - ), - ) - Error(_) -> module_events - } - events - |> map.insert(module.name, updated_module_events) - } - Error(_) -> events - } - #(test_state, num_done, new_events) - } - EndTestSuite(_) -> #(test_state, num_done + 1, events) - EndTestRun(num_modules) -> #(Finished(num_modules), num_done, events) - _ -> #(Running, num_done, events) - } - HandlerState(updated_test_state, updated_num_done, updated_events) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam deleted file mode 100644 index a1d6bd9..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_result.gleam +++ /dev/null @@ -1,119 +0,0 @@ -import gleam/dynamic.{type Dynamic} -import gleam/map.{type Map} - -// These are all the types used for test-results -// NOTE: These are heavily used in the erlang/js ffi:s -// so any changes here are likely to break the ffi:s unless -// the corresponding change is introduced there -// -// Futhermore this has some erlang related names that should -// probably be cleaned up, but it is used by both the ffi:s - -// Currently only one reason, but could be possible to support -// more reasons in the future -pub type IgnoreReason { - Ignore -} - -// This is the return value from running the test-function -// or ignored if the test was ignored -pub type TestReturn { - TestFunctionReturn(value: Dynamic, output_buffer: List(String)) - Ignored(reason: IgnoreReason) -} - -// All data about an exception in the test function is captured -// in this type. -// This is also where the data about the assertions will end up (in reason) -pub type Exception { - ErlangException( - class: Class, - reason: Reason, - stacktrace: TraceList, - output_buffer: List(String), - ) -} - -// Alias for the test-result which is either a TestResult (passed test, ignored or a test-definition) -// or an Exception (failed test) -pub type TestResult = - Result(TestReturn, Exception) - -// Reason is either an assert equal (which is if the error was produced by gleeunit should) -// TODO: Add other asserts -// or it is a gleam error meaning that is was produced by showtime should -// TODO: Rename GleamError to ShowtimeError -pub type Reason { - AssertEqual(details: List(ReasonDetail)) - AssertNotEqual(details: List(ReasonDetail)) - AssertMatch(details: List(ReasonDetail)) - GleamError(details: GleamErrorDetail) - GleamAssert(value: Dynamic, line_no: Int) - GenericException(value: Dynamic) -} - -// ReasonDetail is the union-type used in erlang-exceptions where the reason -// is a list of such details -pub type ReasonDetail { - Module(name: String) - ReasonLine(line_no: Int) - Expression(expression: String) - Expected(value: Dynamic) - Value(value: Dynamic) - Pattern(pattern: String) -} - -// Gleam error detail is produced by showtime should and will hold all the information -// about the assertion (both expected and got) -pub type GleamErrorDetail { - LetAssert( - module: String, - function: String, - line_no: Int, - message: String, - value: Dynamic, - ) -} - -// Class is a part of standard erlang exceptions, but also used on js-side -// TODO: Extend to include a JS specific constructor -pub type Class { - ErlangError - Exit - Throw -} - -// The trace list is part of the standard erlang exception, but is also -// emulated on js-side. -// TODO: Maybe we need a js-version that contain some js-specific trace-elements -pub type TraceList { - TraceList(traces: List(Trace)) -} - -// Trace are the elements in the trace list in an erlang exception -// TODO: Maybe add a js-specific trace (since arity is not really a js attribute) -pub type Trace { - Trace(function: String, arity: Arity, extra_info: List(ExtraInfo)) - TraceModule( - module: String, - function: String, - arity: Arity, - extra_info: List(ExtraInfo), - ) -} - -// Extra info holds information about the file and line -// as well as some dynamic data in a map -// This is currently not used in the reporter -pub type ExtraInfo { - ErrorInfo(error_info: Map(Dynamic, Dynamic)) - File(filename: String) - Line(line_no: Int) -} - -// Arity is the erlang type for arity -// Can be either a number, or a list of arguments -pub type Arity { - Num(arity: Int) - ArgList(arg_list: List(Dynamic)) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam deleted file mode 100644 index eb58d64..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/common/test_suite.gleam +++ /dev/null @@ -1,63 +0,0 @@ -import gleam/option.{type Option} -import showtime/internal/common/test_result.{type TestResult} -import showtime/internal/common/cli.{type Capture} - -// The state (and result) of a test function -pub type TestRun { - OngoingTestRun(test_function: TestFunction, started_at: Int) - CompletedTestRun( - test_function: TestFunction, - total_time: Int, - result: TestResult, - ) -} - -// A test module (found by discovery) -pub type TestModule { - TestModule(name: String, path: Option(String)) -} - -// A test function -pub type TestFunction { - TestFunction(name: String) -} - -// A test suite is a test module together with the test functions -// that were collected from that module -pub type TestSuite { - TestSuite(module: TestModule, tests: List(TestFunction)) -} - -// Test event for the event handler -pub type TestEvent { - StartTestRun - StartTestSuite(test_module: TestModule) - StartTest(test_module: TestModule, test_function: TestFunction) - EndTest( - test_module: TestModule, - test_function: TestFunction, - result: TestResult, - ) - EndTestSuite(test_module: TestModule) - EndTestRun(num_modules: Int) -} - -// Interface for the module handler -pub type TestModuleHandler = - fn(TestModule) -> Nil - -// Interface for the event handler -pub type TestEventHandler = - fn(TestEvent) -> Nil - -// Interface for the module collector -pub type ModuleCollector = - fn(TestModuleHandler) -> List(TestModule) - -// Interface for the function collector -pub type TestFunctionCollector = - fn(TestModule) -> TestSuite - -// Interface for the test runner -pub type TestRunner = - fn(TestSuite, TestEventHandler, List(String), Capture) -> Nil diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam deleted file mode 100644 index ecb752d..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/discover.gleam +++ /dev/null @@ -1,167 +0,0 @@ -@target(erlang) -import gleam/io -@target(erlang) -import gleam/dynamic.{type Dynamic} -@target(erlang) -import gleam/list -@target(erlang) -import gleam/string -@target(erlang) -import gleam/int -@target(erlang) -import gleam/option.{type Option, None, Some} -@target(erlang) -import gleam/erlang/atom.{type Atom} -@target(erlang) -import showtime/internal/common/test_suite.{ - type TestModule, type TestModuleHandler, type TestSuite, TestFunction, - TestModule, TestSuite, -} -import simplifile - -// Module collector for erlang -// Will search the test folder for files ending with _test and notify -// the module handler about each module it finds -@target(erlang) -pub fn collect_modules( - test_module_handler: TestModuleHandler, - only_modules: Option(List(String)), -) -> List(TestModule) { - collect_modules_in_folder("./test", test_module_handler, only_modules) -} - -@target(erlang) -fn collect_modules_in_folder( - path: String, - test_module_handler: TestModuleHandler, - only_modules: Option(List(String)), -) { - let module_prefix = get_module_prefix(path) - let assert Ok(files) = simplifile.read_directory(path) - let test_modules_in_folder = - files - |> list.filter(string.ends_with(_, "_test.gleam")) - |> list.filter_map(fn(test_module_file) { - let module_name = - module_prefix <> { - test_module_file - |> string.replace(".gleam", "") - } - case only_modules { - Some(only_modules_list) -> { - let module_in_list = - only_modules_list - |> list.any(fn(only_module_name) { - only_module_name == module_name - |> string.replace("@", "/") - }) - case module_in_list { - True -> { - let test_module = TestModule(module_name, Some(test_module_file)) - test_module_handler(test_module) - Ok(test_module) - } - - False -> Error(Nil) - } - } - None -> { - let test_module = TestModule(module_name, Some(test_module_file)) - test_module_handler(test_module) - Ok(test_module) - } - } - }) - let test_modules_in_subfolders = - files - |> list.map(fn(filename) { path <> "/" <> filename }) - |> list.filter(fn(file) { simplifile.is_directory(file) }) - |> list.fold( - [], - fn(modules, subfolder) { - modules - |> list.append(collect_modules_in_folder( - subfolder, - test_module_handler, - only_modules, - )) - }, - ) - test_modules_in_folder - |> list.append(test_modules_in_subfolders) -} - -@target(erlang) -fn get_module_prefix(path) { - let path_without_test = - path - |> string.replace("./test", "") - - let path_without_leading_slash = case - string.starts_with(path_without_test, "/") - { - True -> string.drop_left(path_without_test, 1) - False -> path_without_test - } - let module_prefix = - path_without_leading_slash - |> string.replace("/", "@") - case string.length(module_prefix) { - 0 -> module_prefix - _ -> module_prefix <> "@" - } -} - -// Test function collector for erlang -// Uses erlang `apply` to run `module_info` for the test module -// and collects all the exports ending with _test into a `TestSuite` -@target(erlang) -pub fn collect_test_functions(module: TestModule) -> TestSuite { - let test_functions: List(#(Atom, Int)) = - apply( - atom.create_from_string(module.name), - atom.create_from_string("module_info"), - [dynamic.from(atom.create_from_string("exports"))], - ) - |> dynamic.unsafe_coerce() - - let test_functions_filtered = - test_functions - |> list.map(fn(entry) { - let assert #(name, arity) = entry - #( - name - |> atom.to_string(), - arity, - ) - }) - |> list.filter_map(fn(entry) { - let assert #(name, arity) = entry - case string.ends_with(name, "_test") { - True -> - case arity { - 0 -> Ok(name) - _ -> { - io.println( - "WARNING: function \"" <> name <> "\" has arity: " <> int.to_string( - arity, - ) <> " - cannot be used as test (needs to be 0)", - ) - Error("Wrong arity") - } - } - False -> Error("Non matching name") - } - }) - |> list.filter(string.ends_with(_, "_test")) - |> list.map(fn(function_name) { TestFunction(function_name) }) - TestSuite(module, test_functions_filtered) -} - -@target(erlang) -@external(erlang, "erlang", "apply") -fn apply( - module module: Atom, - function function: Atom, - args args: List(Dynamic), -) -> Dynamic diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam deleted file mode 100644 index 62a9caf..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/event_handler.gleam +++ /dev/null @@ -1,91 +0,0 @@ -@target(erlang) -import gleam/io -@target(erlang) -import gleam/otp/actor.{Continue, Stop} -@target(erlang) -import gleam/erlang/process.{type Subject, Normal} -@target(erlang) -import gleam/map -@target(erlang) -import showtime/internal/common/test_suite.{type TestEvent, EndTestRun} -@target(erlang) -import showtime/internal/common/common_event_handler.{ - Finished, HandlerState, NotStarted, handle_event, -} -@target(erlang) -import showtime/internal/reports/formatter.{create_test_report} -@target(erlang) -import gleam/erlang.{Millisecond} -@target(erlang) -import gleam/option.{None} - -@target(erlang) -type EventHandlerMessage { - EventHandlerMessage(test_event: TestEvent, reply_to: Subject(Int)) -} - -// Starts an actor that receives test events and forwards the to the event handler -// When handler updates the state to `Finished` the actor will wait until handler -// reports that all modules are done and the stop -@target(erlang) -pub fn start() { - let assert Ok(subject) = - actor.start( - #(NotStarted, 0, map.new()), - fn(msg: EventHandlerMessage, state) { - let EventHandlerMessage(test_event, reply_to) = msg - let #(test_state, num_done, events) = state - let updated_state = - handle_event( - test_event, - system_time, - HandlerState(test_state, num_done, events), - ) - case updated_state { - HandlerState(Finished(num_modules), num_done, events) if num_done == num_modules -> { - let #(test_report, num_failed) = create_test_report(events) - io.println(test_report) - process.send(reply_to, num_failed) - Stop(Normal) - } - HandlerState(test_state, num_done, events) -> - Continue(#(test_state, num_done, events), None) - } - }, - ) - let parent_subject = process.new_subject() - - let selector = - process.new_selector() - |> process.selecting(parent_subject, fn(x) { x }) - - // Returns a callback that can receive test events - fn(test_event: TestEvent) { - case test_event { - EndTestRun(..) -> { - // When EndTestRun has been received the callback will wait until the - // actor has stopped - // TODO: Use a timeout? - process.send(subject, EventHandlerMessage(test_event, parent_subject)) - let num_failed = process.select_forever(selector) - case num_failed > 0 { - True -> halt(1) - False -> halt(0) - } - } - - // Normally just send the test event to the actor - _ -> - process.send(subject, EventHandlerMessage(test_event, parent_subject)) - } - } -} - -@target(erlang) -@external(erlang, "erlang", "halt") -fn halt(a: Int) -> Nil - -@target(erlang) -fn system_time() { - erlang.system_time(Millisecond) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam deleted file mode 100644 index 88cc251..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/module_handler.gleam +++ /dev/null @@ -1,43 +0,0 @@ -@target(erlang) -import gleam/otp/actor.{Continue} -@target(erlang) -import gleam/erlang/process -@target(erlang) -import showtime/internal/common/test_suite.{ - type TestEventHandler, type TestFunctionCollector, type TestModule, - type TestRunner, EndTestSuite, StartTestSuite, -} -@target(erlang) -import showtime/internal/common/cli.{type Capture} -@target(erlang) -import gleam/option.{None} - -@target(erlang) -pub fn start( - test_event_handler: TestEventHandler, - test_function_collector: TestFunctionCollector, - run_test_suite: TestRunner, - ignore_tags: List(String), - capture: Capture, -) { - let assert Ok(subject) = - actor.start( - Nil, - fn(module: TestModule, state) { - process.start( - fn() { - let test_suite = test_function_collector(module) - test_event_handler(StartTestSuite(module)) - run_test_suite(test_suite, test_event_handler, ignore_tags, capture) - test_event_handler(EndTestSuite(module)) - }, - False, - ) - Continue(state, None) - }, - ) - fn(test_module: TestModule) { - process.send(subject, test_module) - Nil - } -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam deleted file mode 100644 index ebbf426..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/erlang/runner.gleam +++ /dev/null @@ -1,59 +0,0 @@ -@target(erlang) -import gleam/list -@target(erlang) -import gleam/erlang/atom.{type Atom} -@target(erlang) -import showtime/internal/common/test_suite.{ - type TestEventHandler, type TestSuite, EndTest, StartTest, -} -@target(erlang) -import showtime/internal/common/test_result.{type TestResult} -@target(erlang) -import showtime/internal/common/cli.{type Capture} - -// Runs all tests in a test suite -@target(erlang) -pub fn run_test_suite( - test_suite: TestSuite, - test_event_handler: TestEventHandler, - ignore_tags: List(String), - capture: Capture, -) { - test_suite.tests - |> list.each(fn(test) { - test_event_handler(StartTest(test_suite.module, test)) - let result = - run_test(test_suite.module.name, test.name, ignore_tags, capture) - test_event_handler(EndTest(test_suite.module, test, result)) - }) -} - -// Wrapper around the ffi function that converts names to atoms -@target(erlang) -pub fn run_test( - module_name: String, - test_name: String, - ignore_tags: List(String), - capture: Capture, -) -> TestResult { - let result = - run_test_ffi( - atom.create_from_string(module_name), - atom.create_from_string(test_name), - ignore_tags, - capture, - ) - result -} - -// Calls ffi for running a test function -// The ffi will take care of mapping the result and exception to the data-types -// used in gleam -@target(erlang) -@external(erlang, "showtime_ffi", "run_test") -fn run_test_ffi( - module module: Atom, - function function: Atom, - ignore_tags ignore_tags: List(String), - capture capture: Capture, -) -> TestResult diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam deleted file mode 100644 index 5ccddee..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/reports/compare.gleam +++ /dev/null @@ -1,42 +0,0 @@ -import gleam/dynamic.{type Dynamic} -import gleam/string -import showtime/internal/reports/styles.{expected_highlight, got_highlight} -import gap.{compare_lists, compare_strings} -import gap/styling.{from_comparison, highlight, to_styled_comparison} - -pub fn compare(expected: Dynamic, got: Dynamic) -> #(String, String) { - let expected_as_list = - expected - |> dynamic.list(dynamic.dynamic) - let got_as_list = - got - |> dynamic.list(dynamic.dynamic) - let expected_as_string = - expected - |> dynamic.string() - let got_as_string = - got - |> dynamic.string() - case expected_as_list, got_as_list, expected_as_string, got_as_string { - Ok(expected_list), Ok(got_list), _, _ -> { - let comparison = - compare_lists(expected_list, got_list) - |> from_comparison() - |> highlight(expected_highlight, got_highlight, fn(item) { item }) - |> to_styled_comparison() - #(comparison.first, comparison.second) - } - _, _, Ok(expected_string), Ok(got_string) -> { - let comparison = - compare_strings(expected_string, got_string) - |> from_comparison() - |> highlight(expected_highlight, got_highlight, fn(item) { item }) - |> to_styled_comparison() - #(comparison.first, comparison.second) - } - _, _, _, _ -> #( - expected_highlight(string.inspect(expected)), - got_highlight(string.inspect(got)), - ) - } -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam deleted file mode 100644 index 8c1a6ac..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/reports/formatter.gleam +++ /dev/null @@ -1,480 +0,0 @@ -import gleam/io -import gleam/int -import gleam/list -import gleam/string -import gleam/option.{type Option, None, Some} -import gleam/map.{type Map} -import gleam/dynamic.{type Dynamic} -import showtime/internal/common/test_result.{ - type GleamErrorDetail, type ReasonDetail, type Trace, AssertEqual, AssertMatch, - AssertNotEqual, Expected, Expression, GenericException, GleamAssert, - GleamError, Ignored, LetAssert, Pattern, Trace, TraceModule, Value, -} -import showtime/internal/common/test_suite.{type TestRun, CompletedTestRun} -import showtime/tests/should.{type Assertion, Eq, Fail, IsError, IsOk, NotEq} -import showtime/internal/reports/styles.{ - error_style, expected_highlight, failed_style, function_style, got_highlight, - heading_style, ignored_style, not_style, passed_style, stacktrace_style, -} -import showtime/internal/reports/compare.{compare} -import showtime/internal/reports/table.{ - AlignLeft, AlignLeftOverflow, AlignRight, Content, Separator, StyledContent, - Table, align_table, to_string, -} -import showtime/tests/meta.{type Meta} - -type GleeUnitAssertionType { - GleeUnitAssertEqual(message: String) - GleeUnitAssertNotEqual(message: String) - GleeUnitAssertMatch(message: String) -} - -type ModuleAndTest { - ModuleAndTestRun(module_name: String, test_run: TestRun) -} - -type UnifiedError { - UnifiedError( - meta: Option(Meta), - reason: String, - message: String, - expected: String, - got: String, - line: Option(Int), - stacktrace: List(Trace), - ) -} - -pub fn create_test_report(test_results: Map(String, Map(String, TestRun))) { - let all_test_runs = - test_results - |> map.values() - |> list.flat_map(map.values) - let failed_test_runs = - test_results - |> map.to_list() - |> list.flat_map(fn(entry) { - let #(module_name, test_module_results) = entry - test_module_results - |> map.values() - |> list.filter_map(fn(test_run) { - case test_run { - CompletedTestRun(_test_function, _, result) -> - case result { - Error(_) -> Ok(ModuleAndTestRun(module_name, test_run)) - Ok(Ignored(_)) -> Error(Nil) - Ok(_) -> Error(Nil) - } - _ -> { - test_run - |> io.debug() - Error(Nil) - } - } - }) - }) - - let ignored_test_runs = - test_results - |> map.to_list() - |> list.flat_map(fn(entry) { - let #(module_name, test_module_results) = entry - test_module_results - |> map.values() - |> list.filter_map(fn(test_run) { - case test_run { - CompletedTestRun(test_function, _, result) -> - case result { - Ok(Ignored(reason)) -> - Ok(#(module_name <> "." <> test_function.name, reason)) - _ -> Error(Nil) - } - _ -> Error(Nil) - } - }) - }) - - let failed_tests_report = - failed_test_runs - |> list.filter_map(fn(module_and_test_run) { - case module_and_test_run.test_run { - CompletedTestRun(test_function, _total_time, result) -> - case result { - Error(exception) -> - case exception.reason { - AssertEqual(reason_details) -> - Ok(format_reason( - erlang_error_to_unified( - reason_details, - GleeUnitAssertEqual("Assert equal"), - exception.stacktrace.traces, - ), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - AssertNotEqual(reason_details) -> - Ok(format_reason( - erlang_error_to_unified( - reason_details, - GleeUnitAssertNotEqual("Assert not equal"), - exception.stacktrace.traces, - ), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - AssertMatch(reason_details) -> - Ok(format_reason( - erlang_error_to_unified( - reason_details, - GleeUnitAssertMatch("Assert match"), - exception.stacktrace.traces, - ), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - GleamError(reason) -> - Ok(format_reason( - gleam_error_to_unified(reason, exception.stacktrace.traces), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - // GleamAssert(value) -> Error(Nil) - GleamAssert(value, line_no) -> - Ok(format_reason( - UnifiedError( - None, - "gleam assert", - "Assert failed", - "Patterns should match", - error_style(string.inspect(value)), - Some(line_no), - exception.stacktrace.traces, - ), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - GenericException(value) -> - Ok(format_reason( - UnifiedError( - None, - "generic exception", - "Test function threw an exception", - "Exception in test function", - error_style(string.inspect(value)), - None, - exception.stacktrace.traces, - ), - module_and_test_run.module_name, - test_function.name, - exception.output_buffer, - )) - other -> { - io.println("Other: " <> string.inspect(other)) - panic - Error(Nil) - } - } - _ -> Error(Nil) - } - _ -> Error(Nil) - } - }) - |> list.fold([], fn(rows, test_rows) { list.append(rows, test_rows) }) - - let all_test_execution_time_reports = - all_test_runs - |> list.filter_map(fn(test_run) { - case test_run { - CompletedTestRun(test_function, total_time, _) -> - Ok(test_function.name <> ": " <> int.to_string(total_time) <> " ms") - _ -> Error(Nil) - } - }) - let _execution_times_report = - all_test_execution_time_reports - |> string.join("\n") - - let all_tests_count = - all_test_runs - |> list.length() - let ignored_tests_count = - ignored_test_runs - |> list.length() - let failed_tests_count = - failed_test_runs - |> list.length() - - let passed = - passed_style( - int.to_string(all_tests_count - failed_tests_count - ignored_tests_count) <> " passed", - ) - let failed = failed_style(int.to_string(failed_tests_count) <> " failed") - let ignored = case ignored_tests_count { - 0 -> "" - _ -> ", " <> ignored_style(int.to_string(ignored_tests_count) <> " ignored") - } - - let failed_tests_table = - Table(None, failed_tests_report) - |> align_table() - |> to_string() - - let test_report = - "\n" <> failed_tests_table <> "\n" <> passed <> ", " <> failed <> ignored - #(test_report, failed_tests_count) -} - -fn erlang_error_to_unified( - error_details: List(ReasonDetail), - assertion_type: GleeUnitAssertionType, - stacktrace: List(Trace), -) { - error_details - |> list.fold( - UnifiedError( - None, - "not_set", - assertion_type.message, - "", - "", - None, - stacktrace, - ), - fn(unified, reason) { - case reason { - Expression(expression) -> UnifiedError(..unified, reason: expression) - Expected(value) -> - case assertion_type { - GleeUnitAssertEqual(_messaged) -> - UnifiedError( - ..unified, - expected: expected_highlight(string.inspect(value)), - ) - _ -> unified - } - Value(value) -> - case assertion_type { - GleeUnitAssertNotEqual(_message) -> - UnifiedError( - ..unified, - expected: not_style("not ") <> string.inspect(value), - got: got_highlight(string.inspect(value)), - ) - _ -> - UnifiedError(..unified, got: got_highlight(string.inspect(value))) - } - Pattern(pattern) -> - case pattern { - "{ ok , _ }" -> - UnifiedError(..unified, expected: expected_highlight("Ok(_)")) - "{ error , _ }" -> - UnifiedError(..unified, expected: expected_highlight("Error(_)")) - _ -> unified - } - _ -> unified - } - }, - ) -} - -fn gleam_error_to_unified( - gleam_error: GleamErrorDetail, - stacktrace: List(Trace), -) -> UnifiedError { - case gleam_error { - LetAssert(_module, _function, _line_no, _message, value) -> { - let result: Result(Dynamic, Assertion(Dynamic, Dynamic)) = - dynamic.unsafe_coerce(value) - let assert Error(assertion) = result - case assertion { - Eq(got, expected, meta) -> { - let #(expected, got) = compare(expected, got) - UnifiedError( - meta, - "assert", - "Assert equal", - expected, - got, - None, - stacktrace, - ) - } - NotEq(got, expected, meta) -> - UnifiedError( - meta, - "assert", - "Assert not equal", - not_style("not ") <> string.inspect(expected), - string.inspect(got), - None, - stacktrace, - ) - IsOk(got, meta) -> - UnifiedError( - meta, - "assert", - "Assert is Ok", - expected_highlight("Ok(_)"), - got_highlight(string.inspect(got)), - None, - stacktrace, - ) - IsError(got, meta) -> - UnifiedError( - meta, - "assert", - "Assert is Ok", - expected_highlight("Error(_)"), - got_highlight(string.inspect(got)), - None, - stacktrace, - ) - Fail(meta) -> - UnifiedError( - meta, - "assert", - "Assert is Ok", - got_highlight("should.fail()"), - got_highlight("N/A - test always expected to fail"), - None, - stacktrace, - ) - } - } - } -} - -fn format_reason( - error: UnifiedError, - module: String, - function: String, - output_buffer: List(String), -) { - let meta = case error.meta { - Some(meta) -> - Some([ - AlignRight(StyledContent(heading_style("Description")), 2), - Separator(": "), - AlignLeft(Content(meta.description), 0), - ]) - - None -> None - } - - let stacktrace = - error.stacktrace - |> list.map(fn(trace) { - case trace { - Trace(function, _, _) if function == "" -> "(anonymous)" - TraceModule(module, function, _, _) if function == "" -> - module <> "." <> "(anonymous)" - Trace(function, _, _) -> function - TraceModule(module, function, _, _) -> module <> "." <> function - } - }) - let stacktrace_rows = case stacktrace { - [] -> [] - [first, ..rest] -> { - let first_row = - Some([ - AlignRight(StyledContent(heading_style("Stacktrace")), 2), - Separator(": "), - AlignLeft(StyledContent(stacktrace_style(first)), 0), - ]) - let rest_rows = - rest - |> list.map(fn(row) { - Some([ - AlignRight(Content(""), 2), - Separator(" "), - AlignLeft(StyledContent(stacktrace_style(row)), 0), - ]) - }) - [first_row, ..rest_rows] - } - } - - let output_rows = case - output_buffer - |> list.reverse() - |> list.map(fn(row) { string.trim_right(row) }) - { - [] -> [] - [first, ..rest] -> { - let first_row = - Some([ - AlignRight(StyledContent(heading_style("Output")), 2), - Separator(": "), - AlignLeftOverflow(StyledContent(stacktrace_style(first)), 0), - ]) - let rest_rows = - rest - |> list.map(fn(row) { - Some([ - AlignRight(Content(""), 2), - Separator(" "), - AlignLeftOverflow(StyledContent(stacktrace_style(row)), 0), - ]) - }) - [first_row, ..rest_rows] - } - } - - let line = - error.line - |> option.map(fn(line) { ":" <> int.to_string(line) }) - |> option.unwrap("") - - let arrow = - string.join( - list.repeat( - "-", - string.length(module) + 1 + { - string.length(function) + string.length(line) - } / 2, - ), - "", - ) <> "⌄" - let standard_table_rows = [ - Some([ - AlignRight(StyledContent(error_style("Failed")), 2), - Separator(": "), - AlignLeft(Content(arrow), 0), - ]), - Some([ - AlignRight(StyledContent(heading_style("Test")), 2), - Separator(": "), - AlignLeft( - StyledContent(module <> "." <> function_style(function <> line)), - 0, - ), - ]), - meta, - Some([ - AlignRight(StyledContent(heading_style("Expected")), 2), - Separator(": "), - AlignLeftOverflow(StyledContent(error.expected), 0), - ]), - Some([ - AlignRight(StyledContent(heading_style("Got")), 2), - Separator(": "), - AlignLeftOverflow(StyledContent(error.got), 0), - ]), - ] - standard_table_rows - |> list.append(stacktrace_rows) - |> list.append(output_rows) - |> list.append([ - Some([ - AlignRight(Content(""), 0), - AlignRight(Content(""), 0), - AlignRight(Content(""), 0), - ]), - ]) - |> list.filter_map(fn(row) { option.to_result(row, Nil) }) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam deleted file mode 100644 index b051dd3..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/reports/styles.gleam +++ /dev/null @@ -1,84 +0,0 @@ -import gleam_community/ansi -import gleam/list -import gleam/string -import gleam/bit_array - -pub fn passed_style(text) { - bold_green(text) -} - -pub fn failed_style(text) { - bold_red(text) -} - -pub fn ignored_style(text) { - bold_yellow(text) -} - -pub fn error_style(text) { - bold_red(text) -} - -pub fn expected_highlight(text) { - bold_green(text) -} - -pub fn got_highlight(text) { - bold_red(text) -} - -pub fn not_style(text) { - ansi.bold(text) -} - -pub fn module_style(text: String) { - ansi.cyan(text) -} - -pub fn heading_style(text: String) { - ansi.cyan(text) -} - -pub fn function_style(text: String) { - bold_cyan(text) -} - -pub fn stacktrace_style(text: String) { - text -} - -fn bold_red(text: String) { - ansi.bold(ansi.red(text)) -} - -fn bold_green(text) { - ansi.bold(ansi.green(text)) -} - -fn bold_yellow(text) { - ansi.bold(ansi.yellow(text)) -} - -fn bold_cyan(text) { - ansi.bold(ansi.cyan(text)) -} - -pub fn strip_style(text) { - let #(new_text, _) = - text - |> string.to_graphemes() - |> list.fold( - #("", False), - fn(acc, char) { - let #(str, removing) = acc - let bit_char = bit_array.from_string(char) - case bit_char, removing { - <<0x1b>>, _ -> #(str, True) - <<0x6d>>, True -> #(str, False) - _, True -> #(str, True) - _, False -> #(str <> char, False) - } - }, - ) - new_text -} diff --git a/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam b/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam deleted file mode 100644 index f8bc00c..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/internal/reports/table.gleam +++ /dev/null @@ -1,148 +0,0 @@ -import gleam/list -import gleam/string -import gleam/int -import gleam/option.{type Option} -import showtime/internal/reports/styles.{strip_style} - -pub type Content { - Content(unstyled_text: String) - StyledContent(styled_text: String) -} - -pub type Col { - AlignRight(content: Content, margin: Int) - AlignLeft(content: Content, margin: Int) - AlignRightOverflow(content: Content, margin: Int) - AlignLeftOverflow(content: Content, margin: Int) - Separator(char: String) - Aligned(content: String) -} - -pub type Table { - Table(header: Option(String), rows: List(List(Col))) -} - -pub fn to_string(table: Table) -> String { - let rows = - table.rows - |> list.map(fn(row) { - row - |> list.filter_map(fn(col) { - case col { - Separator(char) -> Ok(char) - Aligned(content) -> Ok(content) - _ -> Error(Nil) - } - }) - |> string.join("") - }) - |> string.join("\n") - let header = - table.header - |> option.map(fn(header) { header <> "\n" }) - |> option.unwrap("") - header <> rows -} - -pub fn align_table(table: Table) -> Table { - let cols = - table.rows - |> list.transpose() - let col_width = - cols - |> list.map(fn(col) { - col - |> list.map(fn(content) { - case content { - AlignRight(Content(unstyled), _) -> unstyled - AlignRight(StyledContent(styled), _) -> strip_style(styled) - AlignLeft(Content(unstyled), _) -> unstyled - AlignLeft(StyledContent(styled), _) -> strip_style(styled) - AlignLeftOverflow(_, _) -> "" - AlignRightOverflow(_, _) -> "" - Separator(char) -> char - Aligned(content) -> content - } - }) - |> list.fold(0, fn(max, str) { int.max(max, string.length(str)) }) - }) - let aligned_col = - cols - |> list.zip(col_width) - |> list.map(fn(col_and_width) { - let #(col, width) = col_and_width - col - |> list.map(fn(content) { - case content { - AlignRight(Content(unstyled), margin) -> - Aligned(pad_left( - unstyled, - width + margin - string.length(unstyled), - " ", - )) - AlignRight(StyledContent(styled), margin) -> - Aligned(pad_left( - styled, - width + margin - string.length(strip_style(styled)), - " ", - )) - AlignRightOverflow(Content(unstyled), margin) -> - Aligned(pad_left( - unstyled, - width + margin - string.length(unstyled), - " ", - )) - AlignRightOverflow(StyledContent(styled), margin) -> - Aligned(pad_left( - styled, - width + margin - string.length(strip_style(styled)), - " ", - )) - AlignLeft(Content(unstyled), margin) -> - Aligned(pad_right( - unstyled, - width + margin - string.length(unstyled), - " ", - )) - AlignLeft(StyledContent(styled), margin) -> - Aligned(pad_right( - styled, - width + margin - string.length(strip_style(styled)), - " ", - )) - AlignLeftOverflow(Content(unstyled), margin) -> - Aligned(pad_right( - unstyled, - width + margin - string.length(unstyled), - " ", - )) - AlignLeftOverflow(StyledContent(styled), margin) -> - Aligned(pad_right( - styled, - width + margin - string.length(strip_style(styled)), - " ", - )) - Separator(char) -> Separator(char) - Aligned(content) -> Aligned(content) - } - }) - }) - let aligned_rows = - aligned_col - |> list.transpose() - Table(..table, rows: aligned_rows) -} - -fn pad_left(str: String, num: Int, char: String) { - let padding = - list.repeat(char, num) - |> string.join("") - padding <> str -} - -fn pad_right(str: String, num: Int, char: String) { - let padding = - list.repeat(char, num) - |> string.join("") - str <> padding -} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam deleted file mode 100644 index cbba414..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/tests/meta.gleam +++ /dev/null @@ -1,3 +0,0 @@ -pub type Meta { - Meta(description: String, tags: List(String)) -} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam deleted file mode 100644 index 71578c7..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/tests/should.gleam +++ /dev/null @@ -1,113 +0,0 @@ -import gleam/option.{type Option, None, Some} -import showtime/tests/meta.{type Meta} - -pub type Assertion(t, e) { - Eq(a: t, b: t, meta: Option(Meta)) - NotEq(a: t, b: t, meta: Option(Meta)) - IsOk(a: Result(t, e), meta: Option(Meta)) - IsError(a: Result(t, e), meta: Option(Meta)) - Fail(meta: Option(Meta)) -} - -pub fn equal(a: t, b: t) { - evaluate(Eq(a, b, None)) -} - -pub fn equal_meta(a: t, b: t, meta: Meta) { - evaluate(Eq(a, b, Some(meta))) -} - -pub fn not_equal(a: t, b: t) { - evaluate(NotEq(a, b, None)) -} - -pub fn not_equal_meta(a: t, b: t, meta: Meta) { - evaluate(NotEq(a, b, Some(meta))) -} - -pub fn be_ok(a: Result(o, e)) { - evaluate(IsOk(a, None)) - let assert Ok(value) = a - value -} - -pub fn be_ok_meta(a: Result(o, e), meta: Meta) { - evaluate(IsOk(a, Some(meta))) -} - -pub fn be_error(a: Result(o, e)) { - evaluate(IsError(a, None)) - let assert Error(value) = a - value -} - -pub fn be_error_meta(a: Result(o, e), meta: Meta) { - evaluate(IsError(a, Some(meta))) -} - -pub fn fail() { - evaluate(Fail(None)) -} - -pub fn fail_meta(meta: Meta) { - evaluate(Fail(Some(meta))) -} - -pub fn be_true(a: Bool) { - a - |> equal(True) -} - -pub fn be_true_meta(a: Bool, meta: Meta) { - a - |> equal_meta(True, meta) -} - -pub fn be_false(a: Bool) { - a - |> equal(False) -} - -pub fn be_false_meta(a: Bool, meta: Meta) { - a - |> equal_meta(False, meta) -} - -@external(erlang, "showtime_ffi", "gleam_error") -fn gleam_error(value: Result(Nil, Assertion(a, b))) -> Nil - -pub fn evaluate(assertion) -> Nil { - case assertion { - Eq(a, b, _meta) -> - case a == b { - True -> Nil - False -> { - gleam_error(Error(assertion)) - } - } - NotEq(a, b, _meta) -> - case a != b { - True -> Nil - False -> { - gleam_error(Error(assertion)) - } - } - IsOk(a, _meta) -> - case a { - Ok(_) -> Nil - Error(_) -> { - gleam_error(Error(assertion)) - } - } - IsError(a, _meta) -> - case a { - Error(_) -> Nil - Ok(_) -> { - gleam_error(Error(assertion)) - } - } - Fail(_meta) -> { - gleam_error(Error(assertion)) - } - } -} diff --git a/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam b/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam deleted file mode 100644 index 730f943..0000000 --- a/aoc2023/build/packages/adglent/src/showtime/tests/test.gleam +++ /dev/null @@ -1,57 +0,0 @@ -import showtime/tests/should -import showtime/tests/meta.{type Meta} -import gleam/io - -pub type Test { - Test(meta: Meta, test_function: fn() -> Nil) -} - -pub type MetaShould(t) { - MetaShould(equal: fn(t, t) -> Nil, not_equal: fn(t, t) -> Nil) -} - -pub fn test(meta: Meta, test_function: fn(Meta) -> Nil) { - Test(meta, fn() { test_function(meta) }) -} - -pub fn with_meta(meta: Meta, test_function: fn(MetaShould(a)) -> Nil) { - Test( - meta, - fn() { - test_function(MetaShould( - fn(a, b) { equal(a, b, meta) }, - fn(a, b) { not_equal(a, b, meta) }, - )) - }, - ) -} - -pub fn equal(a: t, b: t, meta: Meta) { - io.debug(a) - io.debug(b) - should.equal_meta(a, b, meta) -} - -pub fn not_equal(a: t, b: t, meta: Meta) { - should.equal_meta(a, b, meta) -} - -pub fn be_ok(a: Result(o, e), meta: Meta) { - should.be_ok_meta(a, meta) -} - -pub fn be_error(a: Result(o, e), meta: Meta) { - should.be_error_meta(a, meta) -} - -pub fn fail(meta: Meta) { - should.fail_meta(meta) -} - -pub fn be_true(a: Bool, meta: Meta) { - should.be_true_meta(a, meta) -} - -pub fn be_false(a: Bool, meta: Meta) { - should.be_false_meta(a, meta) -} diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl deleted file mode 100644 index f2d2396..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@common@cli.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(showtime@internal@common@cli). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([capture/0]). - --type capture() :: yes | no | mixed. - - diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl deleted file mode 100644 index b0a6d7a..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@common@common_event_handler.erl +++ /dev/null @@ -1,131 +0,0 @@ --module(showtime@internal@common@common_event_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([handle_event/3]). --export_type([test_state/0, handler_state/0]). - --type test_state() :: not_started | running | {finished, integer()}. - --type handler_state() :: {handler_state, - test_state(), - integer(), - gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run()))}. - --spec handle_event( - showtime@internal@common@test_suite:test_event(), - fun(() -> integer()), - handler_state() -) -> handler_state(). -handle_event(Msg, System_time, State) -> - Test_state = erlang:element(2, State), - Num_done = erlang:element(3, State), - Events = erlang:element(4, State), - {Updated_test_state, Updated_num_done, Updated_events} = case Msg of - start_test_run -> - {running, Num_done, Events}; - - {start_test_suite, Module} -> - Maybe_module_events = gleam@map:get( - Events, - erlang:element(2, Module) - ), - New_events = case Maybe_module_events of - {ok, _} -> - Events; - - {error, _} -> - _pipe = Events, - gleam@map:insert( - _pipe, - erlang:element(2, Module), - gleam@map:new() - ) - end, - {Test_state, Num_done, New_events}; - - {start_test, Module@1, Test} -> - Current_time = System_time(), - Maybe_module_events@1 = gleam@map:get( - Events, - erlang:element(2, Module@1) - ), - New_events@1 = case Maybe_module_events@1 of - {ok, Module_events} -> - Maybe_test_event = gleam@map:get( - Module_events, - erlang:element(2, Test) - ), - case Maybe_test_event of - {error, _} -> - _pipe@1 = Events, - gleam@map:insert( - _pipe@1, - erlang:element(2, Module@1), - begin - _pipe@2 = Module_events, - gleam@map:insert( - _pipe@2, - erlang:element(2, Test), - {ongoing_test_run, Test, Current_time} - ) - end - ); - - {ok, _} -> - Events - end; - - {error, _} -> - Events - end, - {Test_state, Num_done, New_events@1}; - - {end_test, Module@2, Test@1, Result} -> - Current_time@1 = System_time(), - Maybe_module_events@2 = gleam@map:get( - Events, - erlang:element(2, Module@2) - ), - New_events@2 = case Maybe_module_events@2 of - {ok, Module_events@1} -> - Maybe_test_run = begin - _pipe@3 = Module_events@1, - gleam@map:get(_pipe@3, erlang:element(2, Test@1)) - end, - Updated_module_events = case Maybe_test_run of - {ok, {ongoing_test_run, Test_function, Started_at}} -> - _pipe@4 = Module_events@1, - gleam@map:insert( - _pipe@4, - erlang:element(2, Test@1), - {completed_test_run, - Test_function, - Current_time@1 - Started_at, - Result} - ); - - {error, _} -> - Module_events@1 - end, - _pipe@5 = Events, - gleam@map:insert( - _pipe@5, - erlang:element(2, Module@2), - Updated_module_events - ); - - {error, _} -> - Events - end, - {Test_state, Num_done, New_events@2}; - - {end_test_suite, _} -> - {Test_state, Num_done + 1, Events}; - - {end_test_run, Num_modules} -> - {{finished, Num_modules}, Num_done, Events}; - - _ -> - {running, Num_done, Events} - end, - {handler_state, Updated_test_state, Updated_num_done, Updated_events}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl deleted file mode 100644 index b7b73be..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_result.erl +++ /dev/null @@ -1,54 +0,0 @@ --module(showtime@internal@common@test_result). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([ignore_reason/0, test_return/0, exception/0, reason/0, reason_detail/0, gleam_error_detail/0, class/0, trace_list/0, trace/0, extra_info/0, arity_/0]). - --type ignore_reason() :: ignore. - --type test_return() :: {test_function_return, - gleam@dynamic:dynamic_(), - list(binary())} | - {ignored, ignore_reason()}. - --type exception() :: {erlang_exception, - class(), - reason(), - trace_list(), - list(binary())}. - --type reason() :: {assert_equal, list(reason_detail())} | - {assert_not_equal, list(reason_detail())} | - {assert_match, list(reason_detail())} | - {gleam_error, gleam_error_detail()} | - {gleam_assert, gleam@dynamic:dynamic_(), integer()} | - {generic_exception, gleam@dynamic:dynamic_()}. - --type reason_detail() :: {module, binary()} | - {reason_line, integer()} | - {expression, binary()} | - {expected, gleam@dynamic:dynamic_()} | - {value, gleam@dynamic:dynamic_()} | - {pattern, binary()}. - --type gleam_error_detail() :: {let_assert, - binary(), - binary(), - integer(), - binary(), - gleam@dynamic:dynamic_()}. - --type class() :: erlang_error | exit | throw. - --type trace_list() :: {trace_list, list(trace())}. - --type trace() :: {trace, binary(), arity_(), list(extra_info())} | - {trace_module, binary(), binary(), arity_(), list(extra_info())}. - --type extra_info() :: {error_info, - gleam@map:map_(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_())} | - {file, binary()} | - {line, integer()}. - --type arity_() :: {num, integer()} | {arg_list, list(gleam@dynamic:dynamic_())}. - - diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl b/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl deleted file mode 100644 index 6a56de8..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@common@test_suite.erl +++ /dev/null @@ -1,30 +0,0 @@ --module(showtime@internal@common@test_suite). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([test_run/0, test_module/0, test_function/0, test_suite/0, test_event/0]). - --type test_run() :: {ongoing_test_run, test_function(), integer()} | - {completed_test_run, - test_function(), - integer(), - {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}}. - --type test_module() :: {test_module, binary(), gleam@option:option(binary())}. - --type test_function() :: {test_function, binary()}. - --type test_suite() :: {test_suite, test_module(), list(test_function())}. - --type test_event() :: start_test_run | - {start_test_suite, test_module()} | - {start_test, test_module(), test_function()} | - {end_test, - test_module(), - test_function(), - {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}} | - {end_test_suite, test_module()} | - {end_test_run, integer()}. - - diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl deleted file mode 100644 index f0548aa..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@discover.erl +++ /dev/null @@ -1,230 +0,0 @@ --module(showtime@internal@erlang@discover). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([collect_modules/2, collect_test_functions/1]). - --spec get_module_prefix(binary()) -> binary(). -get_module_prefix(Path) -> - Path_without_test = begin - _pipe = Path, - gleam@string:replace(_pipe, <<"./test"/utf8>>, <<""/utf8>>) - end, - Path_without_leading_slash = case gleam@string:starts_with( - Path_without_test, - <<"/"/utf8>> - ) of - true -> - gleam@string:drop_left(Path_without_test, 1); - - false -> - Path_without_test - end, - Module_prefix = begin - _pipe@1 = Path_without_leading_slash, - gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"@"/utf8>>) - end, - case gleam@string:length(Module_prefix) of - 0 -> - Module_prefix; - - _ -> - <> - end. - --spec collect_modules_in_folder( - binary(), - fun((showtime@internal@common@test_suite:test_module()) -> nil), - gleam@option:option(list(binary())) -) -> list(showtime@internal@common@test_suite:test_module()). -collect_modules_in_folder(Path, Test_module_handler, Only_modules) -> - Module_prefix = get_module_prefix(Path), - _assert_subject = simplifile:read_directory(Path), - {ok, Files} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_modules_in_folder"/utf8>>, - line => 40}) - end, - Test_modules_in_folder = begin - _pipe = Files, - _pipe@1 = gleam@list:filter( - _pipe, - fun(_capture) -> - gleam@string:ends_with(_capture, <<"_test.gleam"/utf8>>) - end - ), - gleam@list:filter_map( - _pipe@1, - fun(Test_module_file) -> - Module_name = <>, - <<""/utf8>> - ) - end)/binary>>, - case Only_modules of - {some, Only_modules_list} -> - Module_in_list = begin - _pipe@3 = Only_modules_list, - gleam@list:any( - _pipe@3, - fun(Only_module_name) -> - Only_module_name =:= begin - _pipe@4 = Module_name, - gleam@string:replace( - _pipe@4, - <<"@"/utf8>>, - <<"/"/utf8>> - ) - end - end - ) - end, - case Module_in_list of - true -> - Test_module = {test_module, - Module_name, - {some, Test_module_file}}, - Test_module_handler(Test_module), - {ok, Test_module}; - - false -> - {error, nil} - end; - - none -> - Test_module@1 = {test_module, - Module_name, - {some, Test_module_file}}, - Test_module_handler(Test_module@1), - {ok, Test_module@1} - end - end - ) - end, - Test_modules_in_subfolders = begin - _pipe@5 = Files, - _pipe@6 = gleam@list:map( - _pipe@5, - fun(Filename) -> - <<<>/binary, Filename/binary>> - end - ), - _pipe@7 = gleam@list:filter( - _pipe@6, - fun(File) -> simplifile:is_directory(File) end - ), - gleam@list:fold( - _pipe@7, - [], - fun(Modules, Subfolder) -> _pipe@8 = Modules, - gleam@list:append( - _pipe@8, - collect_modules_in_folder( - Subfolder, - Test_module_handler, - Only_modules - ) - ) end - ) - end, - _pipe@9 = Test_modules_in_folder, - gleam@list:append(_pipe@9, Test_modules_in_subfolders). - --spec collect_modules( - fun((showtime@internal@common@test_suite:test_module()) -> nil), - gleam@option:option(list(binary())) -) -> list(showtime@internal@common@test_suite:test_module()). -collect_modules(Test_module_handler, Only_modules) -> - collect_modules_in_folder( - <<"./test"/utf8>>, - Test_module_handler, - Only_modules - ). - --spec collect_test_functions(showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite(). -collect_test_functions(Module) -> - Test_functions = begin - _pipe = erlang:apply( - erlang:binary_to_atom(erlang:element(2, Module)), - erlang:binary_to_atom(<<"module_info"/utf8>>), - [gleam@dynamic:from(erlang:binary_to_atom(<<"exports"/utf8>>))] - ), - gleam@dynamic:unsafe_coerce(_pipe) - end, - Test_functions_filtered = begin - _pipe@1 = Test_functions, - _pipe@3 = gleam@list:map( - _pipe@1, - fun(Entry) -> - {Name, Arity} = case Entry of - {_, _} -> Entry; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_test_functions"/utf8>>, - line => 131}) - end, - {begin - _pipe@2 = Name, - erlang:atom_to_binary(_pipe@2) - end, - Arity} - end - ), - _pipe@4 = gleam@list:filter_map( - _pipe@3, - fun(Entry@1) -> - {Name@1, Arity@1} = case Entry@1 of - {_, _} -> Entry@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"showtime/internal/erlang/discover"/utf8>>, - function => <<"collect_test_functions"/utf8>>, - line => 139}) - end, - case gleam@string:ends_with(Name@1, <<"_test"/utf8>>) of - true -> - case Arity@1 of - 0 -> - {ok, Name@1}; - - _ -> - gleam@io:println( - <<<<<<<<"WARNING: function \""/utf8, - Name@1/binary>>/binary, - "\" has arity: "/utf8>>/binary, - (gleam@int:to_string(Arity@1))/binary>>/binary, - " - cannot be used as test (needs to be 0)"/utf8>> - ), - {error, <<"Wrong arity"/utf8>>} - end; - - false -> - {error, <<"Non matching name"/utf8>>} - end - end - ), - _pipe@5 = gleam@list:filter( - _pipe@4, - fun(_capture) -> - gleam@string:ends_with(_capture, <<"_test"/utf8>>) - end - ), - gleam@list:map( - _pipe@5, - fun(Function_name) -> {test_function, Function_name} end - ) - end, - {test_suite, Module, Test_functions_filtered}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl deleted file mode 100644 index d72ce2c..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@event_handler.erl +++ /dev/null @@ -1,76 +0,0 @@ --module(showtime@internal@erlang@event_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([start/0]). --export_type([event_handler_message/0]). - --type event_handler_message() :: {event_handler_message, - showtime@internal@common@test_suite:test_event(), - gleam@erlang@process:subject(integer())}. - --spec system_time() -> integer(). -system_time() -> - os:system_time(millisecond). - --spec start() -> fun((showtime@internal@common@test_suite:test_event()) -> nil). -start() -> - _assert_subject = gleam@otp@actor:start( - {not_started, 0, gleam@map:new()}, - fun(Msg, State) -> - {event_handler_message, Test_event, Reply_to} = Msg, - {Test_state, Num_done, Events} = State, - Updated_state = showtime@internal@common@common_event_handler:handle_event( - Test_event, - fun system_time/0, - {handler_state, Test_state, Num_done, Events} - ), - case Updated_state of - {handler_state, {finished, Num_modules}, Num_done@1, Events@1} when Num_done@1 =:= Num_modules -> - {Test_report, Num_failed} = showtime@internal@reports@formatter:create_test_report( - Events@1 - ), - gleam@io:println(Test_report), - gleam@erlang@process:send(Reply_to, Num_failed), - {stop, normal}; - - {handler_state, Test_state@1, Num_done@2, Events@2} -> - {continue, {Test_state@1, Num_done@2, Events@2}, none} - end - end - ), - {ok, Subject} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/event_handler"/utf8>>, - function => <<"start"/utf8>>, - line => 32}) - end, - Parent_subject = gleam@erlang@process:new_subject(), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - gleam@erlang@process:selecting(_pipe, Parent_subject, fun(X) -> X end) - end, - fun(Test_event@1) -> case Test_event@1 of - {end_test_run, _} -> - gleam@erlang@process:send( - Subject, - {event_handler_message, Test_event@1, Parent_subject} - ), - Num_failed@1 = gleam_erlang_ffi:select(Selector), - case Num_failed@1 > 0 of - true -> - erlang:halt(1); - - false -> - erlang:halt(0) - end; - - _ -> - gleam@erlang@process:send( - Subject, - {event_handler_message, Test_event@1, Parent_subject} - ) - end end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl deleted file mode 100644 index a6959f5..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@module_handler.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(showtime@internal@erlang@module_handler). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([start/5]). - --spec start( - fun((showtime@internal@common@test_suite:test_event()) -> nil), - fun((showtime@internal@common@test_suite:test_module()) -> showtime@internal@common@test_suite:test_suite()), - fun((showtime@internal@common@test_suite:test_suite(), fun((showtime@internal@common@test_suite:test_event()) -> nil), list(binary()), showtime@internal@common@cli:capture()) -> nil), - list(binary()), - showtime@internal@common@cli:capture() -) -> fun((showtime@internal@common@test_suite:test_module()) -> nil). -start( - Test_event_handler, - Test_function_collector, - Run_test_suite, - Ignore_tags, - Capture -) -> - _assert_subject = gleam@otp@actor:start( - nil, - fun(Module, State) -> - gleam@erlang@process:start( - fun() -> - Test_suite = Test_function_collector(Module), - Test_event_handler({start_test_suite, Module}), - Run_test_suite( - Test_suite, - Test_event_handler, - Ignore_tags, - Capture - ), - Test_event_handler({end_test_suite, Module}) - end, - false - ), - {continue, State, none} - end - ), - {ok, Subject} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/erlang/module_handler"/utf8>>, - function => <<"start"/utf8>>, - line => 23}) - end, - fun(Test_module) -> - gleam@erlang@process:send(Subject, Test_module), - nil - end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl b/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl deleted file mode 100644 index 702fb75..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@erlang@runner.erl +++ /dev/null @@ -1,46 +0,0 @@ --module(showtime@internal@erlang@runner). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([run_test/4, run_test_suite/4]). - --spec run_test( - binary(), - binary(), - list(binary()), - showtime@internal@common@cli:capture() -) -> {ok, showtime@internal@common@test_result:test_return()} | - {error, showtime@internal@common@test_result:exception()}. -run_test(Module_name, Test_name, Ignore_tags, Capture) -> - Result = showtime_ffi:run_test( - erlang:binary_to_atom(Module_name), - erlang:binary_to_atom(Test_name), - Ignore_tags, - Capture - ), - Result. - --spec run_test_suite( - showtime@internal@common@test_suite:test_suite(), - fun((showtime@internal@common@test_suite:test_event()) -> nil), - list(binary()), - showtime@internal@common@cli:capture() -) -> nil. -run_test_suite(Test_suite, Test_event_handler, Ignore_tags, Capture) -> - _pipe = erlang:element(3, Test_suite), - gleam@list:each( - _pipe, - fun(Test) -> - Test_event_handler( - {start_test, erlang:element(2, Test_suite), Test} - ), - Result = run_test( - erlang:element(2, erlang:element(2, Test_suite)), - erlang:element(2, Test), - Ignore_tags, - Capture - ), - Test_event_handler( - {end_test, erlang:element(2, Test_suite), Test, Result} - ) - end - ). diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl deleted file mode 100644 index d2969b2..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@reports@compare.erl +++ /dev/null @@ -1,61 +0,0 @@ --module(showtime@internal@reports@compare). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compare/2]). - --spec compare(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> {binary(), - binary()}. -compare(Expected, Got) -> - Expected_as_list = begin - _pipe = Expected, - (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe) - end, - Got_as_list = begin - _pipe@1 = Got, - (gleam@dynamic:list(fun gleam@dynamic:dynamic/1))(_pipe@1) - end, - Expected_as_string = begin - _pipe@2 = Expected, - gleam@dynamic:string(_pipe@2) - end, - Got_as_string = begin - _pipe@3 = Got, - gleam@dynamic:string(_pipe@3) - end, - case {Expected_as_list, Got_as_list, Expected_as_string, Got_as_string} of - {{ok, Expected_list}, {ok, Got_list}, _, _} -> - Comparison = begin - _pipe@4 = gap:compare_lists(Expected_list, Got_list), - _pipe@5 = gap@styling:from_comparison(_pipe@4), - _pipe@6 = gap@styling:highlight( - _pipe@5, - fun showtime@internal@reports@styles:expected_highlight/1, - fun showtime@internal@reports@styles:got_highlight/1, - fun(Item) -> Item end - ), - gap@styling:to_styled_comparison(_pipe@6) - end, - {erlang:element(2, Comparison), erlang:element(3, Comparison)}; - - {_, _, {ok, Expected_string}, {ok, Got_string}} -> - Comparison@1 = begin - _pipe@7 = gap:compare_strings(Expected_string, Got_string), - _pipe@8 = gap@styling:from_comparison(_pipe@7), - _pipe@9 = gap@styling:highlight( - _pipe@8, - fun showtime@internal@reports@styles:expected_highlight/1, - fun showtime@internal@reports@styles:got_highlight/1, - fun(Item@1) -> Item@1 end - ), - gap@styling:to_styled_comparison(_pipe@9) - end, - {erlang:element(2, Comparison@1), erlang:element(3, Comparison@1)}; - - {_, _, _, _} -> - {showtime@internal@reports@styles:expected_highlight( - gleam@string:inspect(Expected) - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got) - )} - end. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl deleted file mode 100644 index faea091..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@reports@formatter.erl +++ /dev/null @@ -1,749 +0,0 @@ --module(showtime@internal@reports@formatter). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([create_test_report/1]). --export_type([glee_unit_assertion_type/0, module_and_test/0, unified_error/0]). - --type glee_unit_assertion_type() :: {glee_unit_assert_equal, binary()} | - {glee_unit_assert_not_equal, binary()} | - {glee_unit_assert_match, binary()}. - --type module_and_test() :: {module_and_test_run, - binary(), - showtime@internal@common@test_suite:test_run()}. - --type unified_error() :: {unified_error, - gleam@option:option(showtime@tests@meta:meta()), - binary(), - binary(), - binary(), - binary(), - gleam@option:option(integer()), - list(showtime@internal@common@test_result:trace())}. - --spec erlang_error_to_unified( - list(showtime@internal@common@test_result:reason_detail()), - glee_unit_assertion_type(), - list(showtime@internal@common@test_result:trace()) -) -> unified_error(). -erlang_error_to_unified(Error_details, Assertion_type, Stacktrace) -> - _pipe = Error_details, - gleam@list:fold( - _pipe, - {unified_error, - none, - <<"not_set"/utf8>>, - erlang:element(2, Assertion_type), - <<""/utf8>>, - <<""/utf8>>, - none, - Stacktrace}, - fun(Unified, Reason) -> case Reason of - {expression, Expression} -> - erlang:setelement(3, Unified, Expression); - - {expected, Value} -> - case Assertion_type of - {glee_unit_assert_equal, _} -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - gleam@string:inspect(Value) - ) - ); - - _ -> - Unified - end; - - {value, Value@1} -> - case Assertion_type of - {glee_unit_assert_not_equal, _} -> - erlang:setelement( - 6, - erlang:setelement( - 5, - Unified, - <<(showtime@internal@reports@styles:not_style( - <<"not "/utf8>> - ))/binary, - (gleam@string:inspect(Value@1))/binary>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Value@1) - ) - ); - - _ -> - erlang:setelement( - 6, - Unified, - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Value@1) - ) - ) - end; - - {pattern, Pattern} -> - case Pattern of - <<"{ ok , _ }"/utf8>> -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - <<"Ok(_)"/utf8>> - ) - ); - - <<"{ error , _ }"/utf8>> -> - erlang:setelement( - 5, - Unified, - showtime@internal@reports@styles:expected_highlight( - <<"Error(_)"/utf8>> - ) - ); - - _ -> - Unified - end; - - _ -> - Unified - end end - ). - --spec gleam_error_to_unified( - showtime@internal@common@test_result:gleam_error_detail(), - list(showtime@internal@common@test_result:trace()) -) -> unified_error(). -gleam_error_to_unified(Gleam_error, Stacktrace) -> - case Gleam_error of - {let_assert, _, _, _, _, Value} -> - Result = gleam@dynamic:unsafe_coerce(Value), - {error, Assertion} = case Result of - {error, _} -> Result; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/internal/reports/formatter"/utf8>>, - function => <<"gleam_error_to_unified"/utf8>>, - line => 293}) - end, - case Assertion of - {eq, Got, Expected, Meta} -> - {Expected@1, Got@1} = showtime@internal@reports@compare:compare( - Expected, - Got - ), - {unified_error, - Meta, - <<"assert"/utf8>>, - <<"Assert equal"/utf8>>, - Expected@1, - Got@1, - none, - Stacktrace}; - - {not_eq, Got@2, Expected@2, Meta@1} -> - {unified_error, - Meta@1, - <<"assert"/utf8>>, - <<"Assert not equal"/utf8>>, - <<(showtime@internal@reports@styles:not_style( - <<"not "/utf8>> - ))/binary, - (gleam@string:inspect(Expected@2))/binary>>, - gleam@string:inspect(Got@2), - none, - Stacktrace}; - - {is_ok, Got@3, Meta@2} -> - {unified_error, - Meta@2, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:expected_highlight( - <<"Ok(_)"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got@3) - ), - none, - Stacktrace}; - - {is_error, Got@4, Meta@3} -> - {unified_error, - Meta@3, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:expected_highlight( - <<"Error(_)"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - gleam@string:inspect(Got@4) - ), - none, - Stacktrace}; - - {fail, Meta@4} -> - {unified_error, - Meta@4, - <<"assert"/utf8>>, - <<"Assert is Ok"/utf8>>, - showtime@internal@reports@styles:got_highlight( - <<"should.fail()"/utf8>> - ), - showtime@internal@reports@styles:got_highlight( - <<"N/A - test always expected to fail"/utf8>> - ), - none, - Stacktrace} - end - end. - --spec format_reason(unified_error(), binary(), binary(), list(binary())) -> list(list(showtime@internal@reports@table:col())). -format_reason(Error, Module, Function, Output_buffer) -> - Meta@1 = case erlang:element(2, Error) of - {some, Meta} -> - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Description"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, {content, erlang:element(2, Meta)}, 0}]}; - - none -> - none - end, - Stacktrace = begin - _pipe = erlang:element(8, Error), - gleam@list:map(_pipe, fun(Trace) -> case Trace of - {trace, Function@1, _, _} when Function@1 =:= <<""/utf8>> -> - <<"(anonymous)"/utf8>>; - - {trace_module, Module@1, Function@2, _, _} when Function@2 =:= <<""/utf8>> -> - <<<>/binary, - "(anonymous)"/utf8>>; - - {trace, Function@3, _, _} -> - Function@3; - - {trace_module, Module@2, Function@4, _, _} -> - <<<>/binary, - Function@4/binary>> - end end) - end, - Stacktrace_rows = case Stacktrace of - [] -> - []; - - [First | Rest] -> - First_row = {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Stacktrace"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - First - )}, - 0}]}, - Rest_rows = begin - _pipe@1 = Rest, - gleam@list:map( - _pipe@1, - fun(Row) -> - {some, - [{align_right, {content, <<""/utf8>>}, 2}, - {separator, <<" "/utf8>>}, - {align_left, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - Row - )}, - 0}]} - end - ) - end, - [First_row | Rest_rows] - end, - Output_rows = case begin - _pipe@2 = Output_buffer, - _pipe@3 = gleam@list:reverse(_pipe@2), - gleam@list:map( - _pipe@3, - fun(Row@1) -> gleam@string:trim_right(Row@1) end - ) - end of - [] -> - []; - - [First@1 | Rest@1] -> - First_row@1 = {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Output"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - First@1 - )}, - 0}]}, - Rest_rows@1 = begin - _pipe@4 = Rest@1, - gleam@list:map( - _pipe@4, - fun(Row@2) -> - {some, - [{align_right, {content, <<""/utf8>>}, 2}, - {separator, <<" "/utf8>>}, - {align_left_overflow, - {styled_content, - showtime@internal@reports@styles:stacktrace_style( - Row@2 - )}, - 0}]} - end - ) - end, - [First_row@1 | Rest_rows@1] - end, - Line@1 = begin - _pipe@5 = erlang:element(7, Error), - _pipe@6 = gleam@option:map( - _pipe@5, - fun(Line) -> <<":"/utf8, (gleam@int:to_string(Line))/binary>> end - ), - gleam@option:unwrap(_pipe@6, <<""/utf8>>) - end, - Arrow = <<(gleam@string:join( - gleam@list:repeat( - <<"-"/utf8>>, - (gleam@string:length(Module) + 1) + ((gleam@string:length( - Function - ) - + gleam@string:length(Line@1)) - div 2) - ), - <<""/utf8>> - ))/binary, - "⌄"/utf8>>, - Standard_table_rows = [{some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:error_style( - <<"Failed"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, {content, Arrow}, 0}]}, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Test"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left, - {styled_content, - <<<>/binary, - (showtime@internal@reports@styles:function_style( - <> - ))/binary>>}, - 0}]}, - Meta@1, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Expected"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, erlang:element(5, Error)}, - 0}]}, - {some, - [{align_right, - {styled_content, - showtime@internal@reports@styles:heading_style( - <<"Got"/utf8>> - )}, - 2}, - {separator, <<": "/utf8>>}, - {align_left_overflow, - {styled_content, erlang:element(6, Error)}, - 0}]}], - _pipe@7 = Standard_table_rows, - _pipe@8 = gleam@list:append(_pipe@7, Stacktrace_rows), - _pipe@9 = gleam@list:append(_pipe@8, Output_rows), - _pipe@10 = gleam@list:append( - _pipe@9, - [{some, - [{align_right, {content, <<""/utf8>>}, 0}, - {align_right, {content, <<""/utf8>>}, 0}, - {align_right, {content, <<""/utf8>>}, 0}]}] - ), - gleam@list:filter_map( - _pipe@10, - fun(Row@3) -> gleam@option:to_result(Row@3, nil) end - ). - --spec create_test_report( - gleam@map:map_(binary(), gleam@map:map_(binary(), showtime@internal@common@test_suite:test_run())) -) -> {binary(), integer()}. -create_test_report(Test_results) -> - All_test_runs = begin - _pipe = Test_results, - _pipe@1 = gleam@map:values(_pipe), - gleam@list:flat_map(_pipe@1, fun gleam@map:values/1) - end, - Failed_test_runs = begin - _pipe@2 = Test_results, - _pipe@3 = gleam@map:to_list(_pipe@2), - gleam@list:flat_map( - _pipe@3, - fun(Entry) -> - {Module_name, Test_module_results} = Entry, - _pipe@4 = Test_module_results, - _pipe@5 = gleam@map:values(_pipe@4), - gleam@list:filter_map(_pipe@5, fun(Test_run) -> case Test_run of - {completed_test_run, _, _, Result} -> - case Result of - {error, _} -> - {ok, - {module_and_test_run, - Module_name, - Test_run}}; - - {ok, {ignored, _}} -> - {error, nil}; - - {ok, _} -> - {error, nil} - end; - - _ -> - _pipe@6 = Test_run, - gleam@io:debug(_pipe@6), - {error, nil} - end end) - end - ) - end, - Ignored_test_runs = begin - _pipe@7 = Test_results, - _pipe@8 = gleam@map:to_list(_pipe@7), - gleam@list:flat_map( - _pipe@8, - fun(Entry@1) -> - {Module_name@1, Test_module_results@1} = Entry@1, - _pipe@9 = Test_module_results@1, - _pipe@10 = gleam@map:values(_pipe@9), - gleam@list:filter_map( - _pipe@10, - fun(Test_run@1) -> case Test_run@1 of - {completed_test_run, Test_function, _, Result@1} -> - case Result@1 of - {ok, {ignored, Reason}} -> - {ok, - {<<<>/binary, - (erlang:element( - 2, - Test_function - ))/binary>>, - Reason}}; - - _ -> - {error, nil} - end; - - _ -> - {error, nil} - end end - ) - end - ) - end, - Failed_tests_report = begin - _pipe@11 = Failed_test_runs, - _pipe@12 = gleam@list:filter_map( - _pipe@11, - fun(Module_and_test_run) -> - case erlang:element(3, Module_and_test_run) of - {completed_test_run, Test_function@1, _, Result@2} -> - case Result@2 of - {error, Exception} -> - case erlang:element(3, Exception) of - {assert_equal, Reason_details} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details, - {glee_unit_assert_equal, - <<"Assert equal"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {assert_not_equal, Reason_details@1} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details@1, - {glee_unit_assert_not_equal, - <<"Assert not equal"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {assert_match, Reason_details@2} -> - {ok, - format_reason( - erlang_error_to_unified( - Reason_details@2, - {glee_unit_assert_match, - <<"Assert match"/utf8>>}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {gleam_error, Reason@1} -> - {ok, - format_reason( - gleam_error_to_unified( - Reason@1, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - ) - ), - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {gleam_assert, Value, Line_no} -> - {ok, - format_reason( - {unified_error, - none, - <<"gleam assert"/utf8>>, - <<"Assert failed"/utf8>>, - <<"Patterns should match"/utf8>>, - showtime@internal@reports@styles:error_style( - gleam@string:inspect( - Value - ) - ), - {some, Line_no}, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - )}, - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - {generic_exception, Value@1} -> - {ok, - format_reason( - {unified_error, - none, - <<"generic exception"/utf8>>, - <<"Test function threw an exception"/utf8>>, - <<"Exception in test function"/utf8>>, - showtime@internal@reports@styles:error_style( - gleam@string:inspect( - Value@1 - ) - ), - none, - erlang:element( - 2, - erlang:element( - 4, - Exception - ) - )}, - erlang:element( - 2, - Module_and_test_run - ), - erlang:element( - 2, - Test_function@1 - ), - erlang:element(5, Exception) - )}; - - Other -> - gleam@io:println( - <<"Other: "/utf8, - (gleam@string:inspect(Other))/binary>> - ), - erlang:error(#{gleam_error => panic, - message => <<"panic expression evaluated"/utf8>>, - module => <<"showtime/internal/reports/formatter"/utf8>>, - function => <<"create_test_report"/utf8>>, - line => 178}), - {error, nil} - end; - - _ -> - {error, nil} - end; - - _ -> - {error, nil} - end - end - ), - gleam@list:fold( - _pipe@12, - [], - fun(Rows, Test_rows) -> gleam@list:append(Rows, Test_rows) end - ) - end, - All_test_execution_time_reports = begin - _pipe@13 = All_test_runs, - gleam@list:filter_map(_pipe@13, fun(Test_run@2) -> case Test_run@2 of - {completed_test_run, Test_function@2, Total_time, _} -> - {ok, - <<<<<<(erlang:element(2, Test_function@2))/binary, - ": "/utf8>>/binary, - (gleam@int:to_string(Total_time))/binary>>/binary, - " ms"/utf8>>}; - - _ -> - {error, nil} - end end) - end, - _ = begin - _pipe@14 = All_test_execution_time_reports, - gleam@string:join(_pipe@14, <<"\n"/utf8>>) - end, - All_tests_count = begin - _pipe@15 = All_test_runs, - gleam@list:length(_pipe@15) - end, - Ignored_tests_count = begin - _pipe@16 = Ignored_test_runs, - gleam@list:length(_pipe@16) - end, - Failed_tests_count = begin - _pipe@17 = Failed_test_runs, - gleam@list:length(_pipe@17) - end, - Passed = showtime@internal@reports@styles:passed_style( - <<(gleam@int:to_string( - (All_tests_count - Failed_tests_count) - Ignored_tests_count - ))/binary, - " passed"/utf8>> - ), - Failed = showtime@internal@reports@styles:failed_style( - <<(gleam@int:to_string(Failed_tests_count))/binary, " failed"/utf8>> - ), - Ignored = case Ignored_tests_count of - 0 -> - <<""/utf8>>; - - _ -> - <<", "/utf8, - (showtime@internal@reports@styles:ignored_style( - <<(gleam@int:to_string(Ignored_tests_count))/binary, - " ignored"/utf8>> - ))/binary>> - end, - Failed_tests_table = begin - _pipe@18 = {table, none, Failed_tests_report}, - _pipe@19 = showtime@internal@reports@table:align_table(_pipe@18), - showtime@internal@reports@table:to_string(_pipe@19) - end, - Test_report = <<<<<<<<<<<<"\n"/utf8, Failed_tests_table/binary>>/binary, - "\n"/utf8>>/binary, - Passed/binary>>/binary, - ", "/utf8>>/binary, - Failed/binary>>/binary, - Ignored/binary>>, - {Test_report, Failed_tests_count}. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl deleted file mode 100644 index ec6230c..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@reports@styles.erl +++ /dev/null @@ -1,93 +0,0 @@ --module(showtime@internal@reports@styles). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([not_style/1, module_style/1, heading_style/1, stacktrace_style/1, failed_style/1, error_style/1, got_highlight/1, passed_style/1, expected_highlight/1, ignored_style/1, function_style/1, strip_style/1]). - --spec not_style(binary()) -> binary(). -not_style(Text) -> - gleam_community@ansi:bold(Text). - --spec module_style(binary()) -> binary(). -module_style(Text) -> - gleam_community@ansi:cyan(Text). - --spec heading_style(binary()) -> binary(). -heading_style(Text) -> - gleam_community@ansi:cyan(Text). - --spec stacktrace_style(binary()) -> binary(). -stacktrace_style(Text) -> - Text. - --spec bold_red(binary()) -> binary(). -bold_red(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:red(Text)). - --spec failed_style(binary()) -> binary(). -failed_style(Text) -> - bold_red(Text). - --spec error_style(binary()) -> binary(). -error_style(Text) -> - bold_red(Text). - --spec got_highlight(binary()) -> binary(). -got_highlight(Text) -> - bold_red(Text). - --spec bold_green(binary()) -> binary(). -bold_green(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:green(Text)). - --spec passed_style(binary()) -> binary(). -passed_style(Text) -> - bold_green(Text). - --spec expected_highlight(binary()) -> binary(). -expected_highlight(Text) -> - bold_green(Text). - --spec bold_yellow(binary()) -> binary(). -bold_yellow(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:yellow(Text)). - --spec ignored_style(binary()) -> binary(). -ignored_style(Text) -> - bold_yellow(Text). - --spec bold_cyan(binary()) -> binary(). -bold_cyan(Text) -> - gleam_community@ansi:bold(gleam_community@ansi:cyan(Text)). - --spec function_style(binary()) -> binary(). -function_style(Text) -> - bold_cyan(Text). - --spec strip_style(binary()) -> binary(). -strip_style(Text) -> - {New_text, _} = begin - _pipe = Text, - _pipe@1 = gleam@string:to_graphemes(_pipe), - gleam@list:fold( - _pipe@1, - {<<""/utf8>>, false}, - fun(Acc, Char) -> - {Str, Removing} = Acc, - Bit_char = gleam_stdlib:identity(Char), - case {Bit_char, Removing} of - {<<16#1b>>, _} -> - {Str, true}; - - {<<16#6d>>, true} -> - {Str, false}; - - {_, true} -> - {Str, true}; - - {_, false} -> - {<>, false} - end - end - ) - end, - New_text. diff --git a/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl b/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl deleted file mode 100644 index 35dbba3..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@internal@reports@table.erl +++ /dev/null @@ -1,229 +0,0 @@ --module(showtime@internal@reports@table). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_string/1, align_table/1]). --export_type([content/0, col/0, table/0]). - --type content() :: {content, binary()} | {styled_content, binary()}. - --type col() :: {align_right, content(), integer()} | - {align_left, content(), integer()} | - {align_right_overflow, content(), integer()} | - {align_left_overflow, content(), integer()} | - {separator, binary()} | - {aligned, binary()}. - --type table() :: {table, gleam@option:option(binary()), list(list(col()))}. - --spec to_string(table()) -> binary(). -to_string(Table) -> - Rows = begin - _pipe = erlang:element(3, Table), - _pipe@3 = gleam@list:map(_pipe, fun(Row) -> _pipe@1 = Row, - _pipe@2 = gleam@list:filter_map(_pipe@1, fun(Col) -> case Col of - {separator, Char} -> - {ok, Char}; - - {aligned, Content} -> - {ok, Content}; - - _ -> - {error, nil} - end end), - gleam@string:join(_pipe@2, <<""/utf8>>) end), - gleam@string:join(_pipe@3, <<"\n"/utf8>>) - end, - Header@1 = begin - _pipe@4 = erlang:element(2, Table), - _pipe@5 = gleam@option:map( - _pipe@4, - fun(Header) -> <
> end - ), - gleam@option:unwrap(_pipe@5, <<""/utf8>>) - end, - <>. - --spec pad_left(binary(), integer(), binary()) -> binary(). -pad_left(Str, Num, Char) -> - Padding = begin - _pipe = gleam@list:repeat(Char, Num), - gleam@string:join(_pipe, <<""/utf8>>) - end, - <>. - --spec pad_right(binary(), integer(), binary()) -> binary(). -pad_right(Str, Num, Char) -> - Padding = begin - _pipe = gleam@list:repeat(Char, Num), - gleam@string:join(_pipe, <<""/utf8>>) - end, - <>. - --spec align_table(table()) -> table(). -align_table(Table) -> - Cols = begin - _pipe = erlang:element(3, Table), - gleam@list:transpose(_pipe) - end, - Col_width = begin - _pipe@1 = Cols, - gleam@list:map(_pipe@1, fun(Col) -> _pipe@2 = Col, - _pipe@3 = gleam@list:map( - _pipe@2, - fun(Content) -> case Content of - {align_right, {content, Unstyled}, _} -> - Unstyled; - - {align_right, {styled_content, Styled}, _} -> - showtime@internal@reports@styles:strip_style( - Styled - ); - - {align_left, {content, Unstyled@1}, _} -> - Unstyled@1; - - {align_left, {styled_content, Styled@1}, _} -> - showtime@internal@reports@styles:strip_style( - Styled@1 - ); - - {align_left_overflow, _, _} -> - <<""/utf8>>; - - {align_right_overflow, _, _} -> - <<""/utf8>>; - - {separator, Char} -> - Char; - - {aligned, Content@1} -> - Content@1 - end end - ), - gleam@list:fold( - _pipe@3, - 0, - fun(Max, Str) -> - gleam@int:max(Max, gleam@string:length(Str)) - end - ) end) - end, - Aligned_col = begin - _pipe@4 = Cols, - _pipe@5 = gleam@list:zip(_pipe@4, Col_width), - gleam@list:map( - _pipe@5, - fun(Col_and_width) -> - {Col@1, Width} = Col_and_width, - _pipe@6 = Col@1, - gleam@list:map(_pipe@6, fun(Content@2) -> case Content@2 of - {align_right, {content, Unstyled@2}, Margin} -> - {aligned, - pad_left( - Unstyled@2, - (Width + Margin) - gleam@string:length( - Unstyled@2 - ), - <<" "/utf8>> - )}; - - {align_right, {styled_content, Styled@2}, Margin@1} -> - {aligned, - pad_left( - Styled@2, - (Width + Margin@1) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@2 - ) - ), - <<" "/utf8>> - )}; - - {align_right_overflow, - {content, Unstyled@3}, - Margin@2} -> - {aligned, - pad_left( - Unstyled@3, - (Width + Margin@2) - gleam@string:length( - Unstyled@3 - ), - <<" "/utf8>> - )}; - - {align_right_overflow, - {styled_content, Styled@3}, - Margin@3} -> - {aligned, - pad_left( - Styled@3, - (Width + Margin@3) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@3 - ) - ), - <<" "/utf8>> - )}; - - {align_left, {content, Unstyled@4}, Margin@4} -> - {aligned, - pad_right( - Unstyled@4, - (Width + Margin@4) - gleam@string:length( - Unstyled@4 - ), - <<" "/utf8>> - )}; - - {align_left, {styled_content, Styled@4}, Margin@5} -> - {aligned, - pad_right( - Styled@4, - (Width + Margin@5) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@4 - ) - ), - <<" "/utf8>> - )}; - - {align_left_overflow, - {content, Unstyled@5}, - Margin@6} -> - {aligned, - pad_right( - Unstyled@5, - (Width + Margin@6) - gleam@string:length( - Unstyled@5 - ), - <<" "/utf8>> - )}; - - {align_left_overflow, - {styled_content, Styled@5}, - Margin@7} -> - {aligned, - pad_right( - Styled@5, - (Width + Margin@7) - gleam@string:length( - showtime@internal@reports@styles:strip_style( - Styled@5 - ) - ), - <<" "/utf8>> - )}; - - {separator, Char@1} -> - {separator, Char@1}; - - {aligned, Content@3} -> - {aligned, Content@3} - end end) - end - ) - end, - Aligned_rows = begin - _pipe@7 = Aligned_col, - gleam@list:transpose(_pipe@7) - end, - erlang:setelement(3, Table, Aligned_rows). diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl b/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl deleted file mode 100644 index c975467..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@tests@meta.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(showtime@tests@meta). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([meta/0]). - --type meta() :: {meta, binary(), list(binary())}. - - diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@should.erl b/aoc2023/build/packages/adglent/src/showtime@tests@should.erl deleted file mode 100644 index 29906b4..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@tests@should.erl +++ /dev/null @@ -1,143 +0,0 @@ --module(showtime@tests@should). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([evaluate/1, equal/2, equal_meta/3, not_equal/2, not_equal_meta/3, be_ok/1, be_ok_meta/2, be_error/1, be_error_meta/2, fail/0, fail_meta/1, be_true/1, be_true_meta/2, be_false/1, be_false_meta/2]). --export_type([assertion/2]). - --type assertion(MXP, MXQ) :: {eq, - MXP, - MXP, - gleam@option:option(showtime@tests@meta:meta())} | - {not_eq, MXP, MXP, gleam@option:option(showtime@tests@meta:meta())} | - {is_ok, - {ok, MXP} | {error, MXQ}, - gleam@option:option(showtime@tests@meta:meta())} | - {is_error, - {ok, MXP} | {error, MXQ}, - gleam@option:option(showtime@tests@meta:meta())} | - {fail, gleam@option:option(showtime@tests@meta:meta())}. - --spec evaluate(assertion(any(), any())) -> nil. -evaluate(Assertion) -> - case Assertion of - {eq, A, B, _} -> - case A =:= B of - true -> - nil; - - false -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {not_eq, A@1, B@1, _} -> - case A@1 /= B@1 of - true -> - nil; - - false -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {is_ok, A@2, _} -> - case A@2 of - {ok, _} -> - nil; - - {error, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {is_error, A@3, _} -> - case A@3 of - {error, _} -> - nil; - - {ok, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end; - - {fail, _} -> - showtime_ffi:gleam_error({error, Assertion}) - end. - --spec equal(MXR, MXR) -> nil. -equal(A, B) -> - evaluate({eq, A, B, none}). - --spec equal_meta(MXT, MXT, showtime@tests@meta:meta()) -> nil. -equal_meta(A, B, Meta) -> - evaluate({eq, A, B, {some, Meta}}). - --spec not_equal(MXV, MXV) -> nil. -not_equal(A, B) -> - evaluate({not_eq, A, B, none}). - --spec not_equal_meta(MXX, MXX, showtime@tests@meta:meta()) -> nil. -not_equal_meta(A, B, Meta) -> - evaluate({not_eq, A, B, {some, Meta}}). - --spec be_ok({ok, MXZ} | {error, any()}) -> MXZ. -be_ok(A) -> - evaluate({is_ok, A, none}), - {ok, Value} = case A of - {ok, _} -> A; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/tests/should"/utf8>>, - function => <<"be_ok"/utf8>>, - line => 30}) - end, - Value. - --spec be_ok_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_ok_meta(A, Meta) -> - evaluate({is_ok, A, {some, Meta}}). - --spec be_error({ok, any()} | {error, MYK}) -> MYK. -be_error(A) -> - evaluate({is_error, A, none}), - {error, Value} = case A of - {error, _} -> A; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"showtime/tests/should"/utf8>>, - function => <<"be_error"/utf8>>, - line => 40}) - end, - Value. - --spec be_error_meta({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_error_meta(A, Meta) -> - evaluate({is_error, A, {some, Meta}}). - --spec fail() -> nil. -fail() -> - evaluate({fail, none}). - --spec fail_meta(showtime@tests@meta:meta()) -> nil. -fail_meta(Meta) -> - evaluate({fail, {some, Meta}}). - --spec be_true(boolean()) -> nil. -be_true(A) -> - _pipe = A, - equal(_pipe, true). - --spec be_true_meta(boolean(), showtime@tests@meta:meta()) -> nil. -be_true_meta(A, Meta) -> - _pipe = A, - equal_meta(_pipe, true, Meta). - --spec be_false(boolean()) -> nil. -be_false(A) -> - _pipe = A, - equal(_pipe, false). - --spec be_false_meta(boolean(), showtime@tests@meta:meta()) -> nil. -be_false_meta(A, Meta) -> - _pipe = A, - equal_meta(_pipe, false, Meta). diff --git a/aoc2023/build/packages/adglent/src/showtime@tests@test.erl b/aoc2023/build/packages/adglent/src/showtime@tests@test.erl deleted file mode 100644 index 2f23b9f..0000000 --- a/aoc2023/build/packages/adglent/src/showtime@tests@test.erl +++ /dev/null @@ -1,57 +0,0 @@ --module(showtime@tests@test). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([test/2, equal/3, not_equal/3, with_meta/2, be_ok/2, be_error/2, fail/1, be_true/2, be_false/2]). --export_type([test/0, meta_should/1]). - --type test() :: {test, showtime@tests@meta:meta(), fun(() -> nil)}. - --type meta_should(NDO) :: {meta_should, - fun((NDO, NDO) -> nil), - fun((NDO, NDO) -> nil)}. - --spec test(showtime@tests@meta:meta(), fun((showtime@tests@meta:meta()) -> nil)) -> test(). -test(Meta, Test_function) -> - {test, Meta, fun() -> Test_function(Meta) end}. - --spec equal(NDT, NDT, showtime@tests@meta:meta()) -> nil. -equal(A, B, Meta) -> - gleam@io:debug(A), - gleam@io:debug(B), - showtime@tests@should:equal_meta(A, B, Meta). - --spec not_equal(NDV, NDV, showtime@tests@meta:meta()) -> nil. -not_equal(A, B, Meta) -> - showtime@tests@should:equal_meta(A, B, Meta). - --spec with_meta(showtime@tests@meta:meta(), fun((meta_should(any())) -> nil)) -> test(). -with_meta(Meta, Test_function) -> - {test, - Meta, - fun() -> - Test_function( - {meta_should, - fun(A, B) -> equal(A, B, Meta) end, - fun(A@1, B@1) -> not_equal(A@1, B@1, Meta) end} - ) - end}. - --spec be_ok({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_ok(A, Meta) -> - showtime@tests@should:be_ok_meta(A, Meta). - --spec be_error({ok, any()} | {error, any()}, showtime@tests@meta:meta()) -> nil. -be_error(A, Meta) -> - showtime@tests@should:be_error_meta(A, Meta). - --spec fail(showtime@tests@meta:meta()) -> nil. -fail(Meta) -> - showtime@tests@should:fail_meta(Meta). - --spec be_true(boolean(), showtime@tests@meta:meta()) -> nil. -be_true(A, Meta) -> - showtime@tests@should:be_true_meta(A, Meta). - --spec be_false(boolean(), showtime@tests@meta:meta()) -> nil. -be_false(A, Meta) -> - showtime@tests@should:be_false_meta(A, Meta). diff --git a/aoc2023/build/packages/adglent/src/showtime_ffi.erl b/aoc2023/build/packages/adglent/src/showtime_ffi.erl deleted file mode 100644 index 3259623..0000000 --- a/aoc2023/build/packages/adglent/src/showtime_ffi.erl +++ /dev/null @@ -1,187 +0,0 @@ --module(showtime_ffi). - --export([run_test/4, functions/0, capture_output/1, gleam_error/1]). - -gleam_error(Value) -> - erlang:error(#{ - gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => Value, - module => <<"this/is/not/used"/utf8>>, - function => <<"gleam_error"/utf8>>, - % Not used - line => 0 - }). - -start_output_capture(Capture) -> - OldGroupLeader = group_leader(), - CapturePid = spawn(showtime_ffi, capture_output, [{[], {OldGroupLeader, Capture}}]), - group_leader(CapturePid, self()), - {CapturePid, OldGroupLeader}. - -stop_output_capture({CapturePid, OldGroupLeader}) -> - group_leader(OldGroupLeader, self()), - CapturePid ! {capture_done, self()}, - receive - Buffer -> - Buffer - end. - -capture_output({Buffer, {OldGroupLeader, Capture}}) -> - receive - {io_request, From, ReplyAs, {put_chars, unicode, BitString}} -> - case Capture of - yes -> - From ! {io_reply, ReplyAs, ok}, - capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); - mixed -> - OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, - capture_output({[BitString | Buffer], {OldGroupLeader, Capture}}); - no -> - OldGroupLeader ! {io_request, From, ReplyAs, {put_chars, unicode, BitString}}, - capture_output({Buffer, {OldGroupLeader, Capture}}) - end; - {capture_done, SenderPid} -> - SenderPid ! Buffer; - OtherMessage -> - OldGroupLeader ! OtherMessage, - capture_output({Buffer, {OldGroupLeader, Capture}}) - end. - -run_test(Module, Function, IgnoreTags, Capture) -> - OutputCapture = start_output_capture(Capture), - try - Result = apply(Module, Function, []), - {ResultType, FinalResult} = - case Result of - {test, {meta, _Description, Tags}, TestFun} -> - case - lists:any( - fun(Tag) -> - lists:any(fun(IgnoreTag) -> IgnoreTag == Tag end, IgnoreTags) - end, - Tags - ) - of - true -> - {ignored, ignore}; - false -> - {test_function_return, TestFun()} - end; - DirectResult -> - {test_function_return, DirectResult} - end, - OutputCaptureBuffer = stop_output_capture(OutputCapture), - case ResultType of - ignored -> {ok, {ResultType, FinalResult}}; - _ -> {ok, {ResultType, FinalResult, OutputCaptureBuffer}} - end - catch - Class:Reason:Stacktrace -> - GleamReason = - case Reason of - {Assertion, ReasonList} -> - ErlangReasonList = - lists:map( - fun(ReasonDetail) -> - case ReasonDetail of - {line, LineNo} -> - {reason_line, LineNo}; - {expression, List} -> - {expression, list_to_binary(List)}; - {module, ModuleAtom} -> - {module, atom_to_binary(ModuleAtom)}; - {pattern, Pattern} -> - {pattern, list_to_binary(Pattern)}; - Other -> - Other - end - end, - ReasonList - ), - GleamAssertionType = - case Assertion of - assertEqual -> - assert_equal; - assertNotEqual -> - assert_not_equal; - assertMatch -> - assert_match; - OtherAssertionType -> - OtherAssertionType - end, - {GleamAssertionType, ErlangReasonList}; - #{ - function := GleamFunction, - gleam_error := GleamError, - line := Line, - message := Message, - module := GleamModule, - value := Value - } -> - case Value of - {error, {OkValue, _, _, _}} when OkValue == not_eq; OkValue == eq -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - {error, {OkValue, _, _}} when OkValue == is_ok; OkValue == is_error -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - {error, {OkValue, _}} when OkValue == fail -> - {gleam_error, - {GleamError, GleamModule, GleamFunction, Line, Message, Value}}; - _ -> - {gleam_assert, Value, Line} - end; - OtherReason -> - {generic_exception, OtherReason} - end, - GleamClass = - case Class of - error -> - erlang_error; - Other -> - Other - end, - GleamTraceList = - lists:map( - fun(Trace) -> - case Trace of - {ModuleName, FunctionName, Arity, ExtraInfoList} -> - {trace_module, atom_to_binary(ModuleName), - atom_to_binary(FunctionName), map_arity(Arity), - map_extra_info_list(ExtraInfoList)}; - {FunctionName, Arity, ExtraInfoList} -> - {trace, atom_to_binary(FunctionName), map_arity(Arity), - map_extra_info_list(ExtraInfoList)} - end - end, - Stacktrace - ), - OutputCaptureBufferCatch = stop_output_capture(OutputCapture), - {error, - {erlang_exception, GleamClass, GleamReason, {trace_list, GleamTraceList}, - OutputCaptureBufferCatch}} - end. - -map_extra_info_list(ExtraInfoList) -> - lists:map( - fun(ExtraInfo) -> - case ExtraInfo of - {file, FileNameList} -> {file, list_to_binary(FileNameList)}; - Other -> Other - end - end, - ExtraInfoList - ). - -map_arity(Arity) -> - if - is_list(Arity) -> - {arg_list, Arity}; - is_integer(Arity) -> - {num, Arity} - end. - -functions() -> - Funs = module_info(exports), - Funs. diff --git a/aoc2023/build/packages/gap/LICENSE b/aoc2023/build/packages/gap/LICENSE deleted file mode 100644 index d1cec9b..0000000 --- a/aoc2023/build/packages/gap/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023 John Björk - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gap/README.md b/aoc2023/build/packages/gap/README.md deleted file mode 100644 index 3e02686..0000000 --- a/aoc2023/build/packages/gap/README.md +++ /dev/null @@ -1,202 +0,0 @@ -# gap - -[![Package Version](https://img.shields.io/hexpm/v/gap)](https://hex.pm/packages/gap) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gap/) - -A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences. - -A typical styled output from the comparison can look like this: - -Image of two strings with highlighted differences - -## Installation - -If available on Hex this package can be added to your Gleam project: - -```sh -gleam add gap -``` - -Documentation can be found at . - -## Usage - -# Introduction - -Gap implements string/list comparison by finding the longest common subsequence. The result of the comparison are two sequences -(one for each of the compared strings/lists) consisting of subsequences that are annotated as matching or non-matching. - -For example comparing the strings in the example above will look as follows: - -```gleam -let comparison = -compare_strings( - "lucy in the sky with diamonds", - "lucy is the shy with diagrams", -) -|> io.debug() -// StringComparison( -// [ -// Match(["l", "u", "c", "y", " ", "i"]), -// NoMatch(["n"]), -// Match([" ", "t", "h", "e", " ", "s"]), -// NoMatch(["k"]), -// Match(["y", " ", "w", "i", "t", "h", " ", "d", "i", "a", "m"]), -// NoMatch(["o", "n", "d"]), -// Match(["s"]), -// ], -// [ -// Match(["l", "u", "c", "y", " ", "i"]), -// NoMatch(["s", " "]), -// Match([" ", "t", "h", "e", " ", "s"]), -// NoMatch(["h"]), -// Match(["y", " ", "w", "i", "t", "h", " ", "d", "i"]), -// NoMatch(["a", "g", "r"]), -// Match(["a", "m", "s"]), -// ], -// ) -``` - -## Styling - -This is useful information but a bit overwhelming to look at (specially for longer string) so the library -has some built in functions to display the differences using colors instead. - -Using the same example again we can style the result and print it to the console - -```gleam -let comparison = -compare_strings( - "lucy in the sky with diamonds", - "lucy is the shy with diagrams", -) -|> to_styled() -io.println(comparison.first) -io.println(comparison.second) -``` - -This will give us something similar to the output above. - -## Comparing list - -It is also possible to compare lists with elements of arbitrary types. - -```gleam -pub type Warning { - Please - Mind - The(what: String) -} - -compare_lists([Mind, The("Gap")], [Please, Mind, The("What")]) -|> io.debug() -// ListComparison( -// [Match([Mind]), NoMatch([The("Gap")])], -// [NoMatch([Please]), Match([Mind]), NoMatch([The("What")])], -// ) -``` - -## Customize styling - -The visual representation of the comparison can be customized. To do this use a `Styling` created from -the comparison that should be styled. This example uses [gleam_community/ansi](https://hexdocs.pm/gleam_community_ansi/index.html) -to highlight the non-matches in different colors. - -```gleam -let comparison = -compare_strings( - "Strings are made of smaller things", - "Things are maybe smaller string", -) -|> from_comparison() -|> highlight( - fn(first) { ansi.cyan(first) }, - fn(second) { ansi.magenta(second) }, - fn(matching) { matching }, -) -|> to_styled_comparison() -io.println(comparison.first) -io.println(comparison.second) -``` - -This will output something similar to this - -Image of two strings with highlighted differences - -### Serialization - -Furthermore it is also possible to customize the styling by changing the way that the comparison is serialized. An easy way to do -this is to use the utility function `mk_generic_serializer` which creates a serializer which some specific separator and a hook -for surrounding the result with some content. Here is a somewhat contrived example - -```gleam -let comparison = -compare_lists(["one", "two", "three"], ["two", "two", "tree"]) -|> from_comparison() -|> highlight( - fn(first) { first <> " was not found in other" }, - fn(second) { second <> " was not found in other" }, -) -|> serialize(mk_generic_serializer( - ", and ", - fn(result) { "Comparing the lists gave the following result: " <> result }, -)) -|> to_styled_comparison() -io.println(comparison.first) -io.println(comparison.second) -// Comparing the lists gave the following result: "one" was not found in other, and "two" was found in other, and "three" was not found in other -// Comparing the lists gave the following result: "two" was not found in other, and "two" was found in other, and "tree" was not found in other -``` - -### Custom serialization - -Serializers can of course have a custom implementation. The following example utilizes this together with custom highlighters, -creating a patch-like output (this is not exactly the same as patch-format since that shows the changes in relation to the original - to do -that both lists of matching/non-matching lines would need to be processed together) - -```gleam -let comparison = -compare_lists( - [ - "pub type Gap = List(EmptyString)", "", "pub type Traveler {", - " OnTrain", " OverGap(gap: Gap)", " OnPlatform", "}", - ], - [ - "pub type Traveler {", " OnTrain", " OverGap(gap: String)", - " OnPlatform", "}", - ], -) -|> from_comparison() -|> highlight( - fn(first) { "+" <> first }, - fn(second) { "-" <> second }, - fn(matching) { " " <> matching }, -) -|> serialize(fn(part) { - case part { - Part(acc, lines, highlight) -> - acc <> { - lines - |> list.map(fn(line) { highlight(line) }) - |> string.join("\n") - } <> "\n" - All(result) -> result - } -}) -|> to_styled_comparison() -io.println(comparison.first) -io.println(comparison.second) -// +pub type Gap = List(EmptyString) -// + -// pub type Traveler { -// OnTrain -// + OverGap(gap: Gap) -// OnPlatform -// } -// -// pub type Traveler { -// OnTrain -// - OverGap(gap: String) -// OnPlatform -// } -``` diff --git a/aoc2023/build/packages/gap/gleam.toml b/aoc2023/build/packages/gap/gleam.toml deleted file mode 100644 index ec35329..0000000 --- a/aoc2023/build/packages/gap/gleam.toml +++ /dev/null @@ -1,18 +0,0 @@ -name = "gap" -gleam = ">= 0.32.2" -version = "1.0.1" -description = "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences." - -# Fill out these fields if you intend to generate HTML documentation or publish -# your project to the Hex package manager. -# -licences = ["Apache-2.0"] -repository = { type = "github", user = "JohnBjrk", repo = "gap" } -# links = [{ title = "Website", href = "https://gleam.run" }] - -[dependencies] -gleam_stdlib = "~> 0.32" -gleam_community_ansi = "~> 1.2" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl b/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl deleted file mode 100644 index 5e4b20d..0000000 --- a/aoc2023/build/packages/gap/include/gap@comparison_ListComparison.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(list_comparison, { - first :: list(gap@comparison:match(list(any()))), - second :: list(gap@comparison:match(list(any()))) -}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl b/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl deleted file mode 100644 index f1225dd..0000000 --- a/aoc2023/build/packages/gap/include/gap@comparison_Match.hrl +++ /dev/null @@ -1 +0,0 @@ --record(match, {item :: any()}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl b/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl deleted file mode 100644 index 742783b..0000000 --- a/aoc2023/build/packages/gap/include/gap@comparison_NoMatch.hrl +++ /dev/null @@ -1 +0,0 @@ --record(no_match, {item :: any()}). diff --git a/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl b/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl deleted file mode 100644 index c0b1a75..0000000 --- a/aoc2023/build/packages/gap/include/gap@comparison_StringComparison.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(string_comparison, { - first :: list(gap@comparison:match(list(binary()))), - second :: list(gap@comparison:match(list(binary()))) -}). diff --git a/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl b/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl deleted file mode 100644 index 0e7c64a..0000000 --- a/aoc2023/build/packages/gap/include/gap@styled_comparison_StyledComparison.hrl +++ /dev/null @@ -1 +0,0 @@ --record(styled_comparison, {first :: binary(), second :: binary()}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_All.hrl b/aoc2023/build/packages/gap/include/gap@styling_All.hrl deleted file mode 100644 index c11a9a6..0000000 --- a/aoc2023/build/packages/gap/include/gap@styling_All.hrl +++ /dev/null @@ -1 +0,0 @@ --record(all, {all :: binary()}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl b/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl deleted file mode 100644 index 6e073b3..0000000 --- a/aoc2023/build/packages/gap/include/gap@styling_Highlighters.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(highlighters, { - first :: fun((binary()) -> binary()), - second :: fun((binary()) -> binary()), - matching :: fun((binary()) -> binary()) -}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Part.hrl b/aoc2023/build/packages/gap/include/gap@styling_Part.hrl deleted file mode 100644 index db45796..0000000 --- a/aoc2023/build/packages/gap/include/gap@styling_Part.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(part, { - acc :: binary(), - part :: list(any()), - highlight :: fun((binary()) -> binary()) -}). diff --git a/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl b/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl deleted file mode 100644 index a7341c6..0000000 --- a/aoc2023/build/packages/gap/include/gap@styling_Styling.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(styling, { - comparison :: gap@comparison:comparison(any()), - serializer :: gleam@option:option(fun((gap@styling:part(any())) -> binary())), - highlight :: gleam@option:option(gap@styling:highlighters()) -}). diff --git a/aoc2023/build/packages/gap/src/gap.app.src b/aoc2023/build/packages/gap/src/gap.app.src deleted file mode 100644 index 1abc7df..0000000 --- a/aoc2023/build/packages/gap/src/gap.app.src +++ /dev/null @@ -1,13 +0,0 @@ -{application, gap, [ - {vsn, "1.0.1"}, - {applications, [gleam_community_ansi, - gleam_stdlib, - gleeunit]}, - {description, "A Gleam library for comparing strings/lists and producing a textual (styled) representation of the differences."}, - {modules, [gap, - gap@comparison, - gap@myers, - gap@styled_comparison, - gap@styling]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gap/src/gap.erl b/aoc2023/build/packages/gap/src/gap.erl deleted file mode 100644 index 827e5ce..0000000 --- a/aoc2023/build/packages/gap/src/gap.erl +++ /dev/null @@ -1,538 +0,0 @@ --module(gap). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_styled/1, compare_strings_with_algorithm/3, compare_lists_with_algorithm/3, myers/2, compare_lists/2, compare_strings/2, lcs/2]). --export_type([score/1]). - --type score(GAM) :: {score, integer(), gleam@option:option(GAM)}. - --spec to_styled(gap@comparison:comparison(any())) -> gap@styled_comparison:styled_comparison(). -to_styled(Comparison) -> - _pipe = Comparison, - _pipe@1 = gap@styling:from_comparison(_pipe), - _pipe@2 = gap@styling:highlight( - _pipe@1, - fun gap@styling:first_highlight_default/1, - fun gap@styling:second_highlight_default/1, - fun gap@styling:no_highlight/1 - ), - gap@styling:to_styled_comparison(_pipe@2). - --spec compare_strings_with_algorithm( - binary(), - binary(), - fun((list(binary()), list(binary())) -> gap@comparison:comparison(binary())) -) -> gap@comparison:comparison(binary()). -compare_strings_with_algorithm(First, Second, Algorithm) -> - Comparison = Algorithm( - gleam@string:to_graphemes(First), - gleam@string:to_graphemes(Second) - ), - case Comparison of - {list_comparison, First@1, Second@1} -> - {string_comparison, First@1, Second@1}; - - {string_comparison, First@2, Second@2} -> - {string_comparison, First@2, Second@2} - end. - --spec compare_lists_with_algorithm( - list(GBB), - list(GBB), - fun((list(GBB), list(GBB)) -> gap@comparison:comparison(GBB)) -) -> gap@comparison:comparison(GBB). -compare_lists_with_algorithm(First_sequence, Second_sequence, Algorithm) -> - Algorithm(First_sequence, Second_sequence). - --spec myers(list(GBG), list(GBG)) -> gap@comparison:comparison(GBG). -myers(First_sequence, Second_sequence) -> - Edits = gap@myers:difference(First_sequence, Second_sequence), - _pipe = Edits, - _pipe@1 = gleam@list:reverse(_pipe), - gleam@list:fold( - _pipe@1, - {list_comparison, [], []}, - fun(Comparison, Edit) -> case Comparison of - {list_comparison, First, Second} -> - case Edit of - {eq, Segment} -> - {list_comparison, - [{match, Segment} | First], - [{match, Segment} | Second]}; - - {ins, Segment@1} -> - {list_comparison, - First, - [{no_match, Segment@1} | Second]}; - - {del, Segment@2} -> - {list_comparison, - [{no_match, Segment@2} | First], - Second} - end; - - {string_comparison, _, _} -> - Comparison - end end - ). - --spec compare_lists(list(GAX), list(GAX)) -> gap@comparison:comparison(GAX). -compare_lists(First_sequence, Second_sequence) -> - myers(First_sequence, Second_sequence). - --spec compare_strings(binary(), binary()) -> gap@comparison:comparison(binary()). -compare_strings(First, Second) -> - Comparison = compare_lists( - gleam@string:to_graphemes(First), - gleam@string:to_graphemes(Second) - ), - case Comparison of - {list_comparison, First@1, Second@1} -> - {string_comparison, First@1, Second@1}; - - {string_comparison, First@2, Second@2} -> - {string_comparison, First@2, Second@2} - end. - --spec prepend_and_merge( - list(gap@comparison:match(list(GBO))), - gap@comparison:match(list(GBO)) -) -> list(gap@comparison:match(list(GBO))). -prepend_and_merge(Matches, Match) -> - case {Matches, Match} of - {[], _} -> - [Match]; - - {[{match, First_match} | Rest], {match, _}} -> - [{match, - begin - _pipe = erlang:element(2, Match), - gleam@list:append(_pipe, First_match) - end} | - Rest]; - - {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> - [{no_match, - begin - _pipe@1 = erlang:element(2, Match), - gleam@list:append(_pipe@1, First_match@1) - end} | - Rest@1]; - - {Matches@1, Match@1} -> - [Match@1 | Matches@1] - end. - --spec append_and_merge( - list(gap@comparison:match(list(GBX))), - gap@comparison:match(list(GBX)) -) -> list(gap@comparison:match(list(GBX))). -append_and_merge(Matches, Match) -> - _pipe@3 = case {begin - _pipe = Matches, - gleam@list:reverse(_pipe) - end, - Match} of - {[], _} -> - [Match]; - - {[{match, First_match} | Rest], {match, _}} -> - [{match, - begin - _pipe@1 = First_match, - gleam@list:append(_pipe@1, erlang:element(2, Match)) - end} | - Rest]; - - {[{no_match, First_match@1} | Rest@1], {no_match, _}} -> - [{no_match, - begin - _pipe@2 = First_match@1, - gleam@list:append(_pipe@2, erlang:element(2, Match)) - end} | - Rest@1]; - - {Matches@1, Match@1} -> - [Match@1 | Matches@1] - end, - gleam@list:reverse(_pipe@3). - --spec collect_matches( - gleam@map:map_(GFY, any()), - list(GCH), - fun((GFY) -> integer()) -) -> list(gap@comparison:match(list(GCH))). -collect_matches(Tracking, Str, Extract_fun) -> - Matching_indexes = begin - _pipe = gleam@map:keys(Tracking), - _pipe@1 = gleam@list:map(_pipe, Extract_fun), - gleam@set:from_list(_pipe@1) - end, - Matches = begin - _pipe@2 = Str, - gleam@list:index_map( - _pipe@2, - fun(Index, Item) -> - case gleam@set:contains(Matching_indexes, Index) of - true -> - {match, Item}; - - false -> - {no_match, Item} - end - end - ) - end, - _pipe@3 = Matches, - _pipe@4 = gleam@list:chunk(_pipe@3, fun(Match) -> case Match of - {match, _} -> - true; - - {no_match, _} -> - false - end end), - gleam@list:map(_pipe@4, fun(Match_list) -> case Match_list of - [{match, _} | _] -> - {match, - gleam@list:filter_map( - Match_list, - fun(Match@1) -> case Match@1 of - {match, Item@1} -> - {ok, Item@1}; - - {no_match, _} -> - {error, nil} - end end - )}; - - [{no_match, _} | _] -> - {no_match, - gleam@list:filter_map( - Match_list, - fun(Match@2) -> case Match@2 of - {no_match, Item@2} -> - {ok, Item@2}; - - {match, _} -> - {error, nil} - end end - )} - end end). - --spec back_track( - gleam@map:map_({integer(), integer()}, score(GCL)), - integer(), - integer(), - list({{integer(), integer()}, GCL}) -) -> list({{integer(), integer()}, GCL}). -back_track(Diff_map, First_index, Second_index, Stack) -> - case (First_index =:= 0) orelse (Second_index =:= 0) of - true -> - This_score = begin - _pipe = gleam@map:get(Diff_map, {First_index, Second_index}), - gleam@result:unwrap(_pipe, {score, 0, none}) - end, - case This_score of - {score, _, {some, Item}} -> - [{{First_index, Second_index}, Item} | Stack]; - - _ -> - case {First_index, Second_index} of - {0, A} when A > 0 -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - {A@1, 0} when A@1 > 0 -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - {0, 0} -> - Stack; - - {_, _} -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ) - end - end; - - false -> - This_score@1 = begin - _pipe@1 = gleam@map:get(Diff_map, {First_index, Second_index}), - gleam@result:unwrap(_pipe@1, {score, 0, none}) - end, - case This_score@1 of - {score, _, {some, Item@1}} -> - back_track( - Diff_map, - First_index - 1, - Second_index - 1, - [{{First_index, Second_index}, Item@1} | Stack] - ); - - {score, _, none} -> - Up = begin - _pipe@2 = gleam@map:get( - Diff_map, - {First_index, Second_index - 1} - ), - gleam@result:unwrap(_pipe@2, {score, 0, none}) - end, - Back = begin - _pipe@3 = gleam@map:get( - Diff_map, - {First_index - 1, Second_index} - ), - gleam@result:unwrap(_pipe@3, {score, 0, none}) - end, - case gleam@int:compare( - erlang:element(2, Up), - erlang:element(2, Back) - ) of - gt -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - lt -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - eq -> - case {First_index, Second_index} of - {0, A@2} when A@2 > 0 -> - back_track( - Diff_map, - First_index, - Second_index - 1, - Stack - ); - - {A@3, 0} when A@3 > 0 -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ); - - {0, 0} -> - Stack; - - {_, _} -> - back_track( - Diff_map, - First_index - 1, - Second_index, - Stack - ) - end - end - end - end. - --spec build_diff_map( - GCR, - integer(), - GCR, - integer(), - gleam@map:map_({integer(), integer()}, score(GCR)) -) -> gleam@map:map_({integer(), integer()}, score(GCR)). -build_diff_map(First_item, First_index, Second_item, Second_index, Diff_map) -> - Prev_score = begin - _pipe = gleam@map:get(Diff_map, {First_index - 1, Second_index - 1}), - gleam@result:unwrap(_pipe, {score, 0, none}) - end, - Derived_score_up = begin - _pipe@1 = Diff_map, - _pipe@2 = gleam@map:get(_pipe@1, {First_index, Second_index - 1}), - gleam@result:unwrap(_pipe@2, {score, 0, none}) - end, - Derived_score_back = begin - _pipe@3 = Diff_map, - _pipe@4 = gleam@map:get(_pipe@3, {First_index - 1, Second_index}), - gleam@result:unwrap(_pipe@4, {score, 0, none}) - end, - Derived_score = gleam@int:max( - erlang:element(2, Derived_score_up), - erlang:element(2, Derived_score_back) - ), - This_score = case First_item =:= Second_item of - true -> - {score, erlang:element(2, Prev_score) + 1, {some, First_item}}; - - false -> - {score, Derived_score, none} - end, - _pipe@5 = Diff_map, - gleam@map:insert(_pipe@5, {First_index, Second_index}, This_score). - --spec lcs(list(GBK), list(GBK)) -> gap@comparison:comparison(GBK). -lcs(First_sequence, Second_sequence) -> - Leading_matches = begin - _pipe = gleam@list:zip(First_sequence, Second_sequence), - _pipe@1 = gleam@list:take_while( - _pipe, - fun(Pair) -> erlang:element(1, Pair) =:= erlang:element(2, Pair) end - ), - gleam@list:map(_pipe@1, fun gleam@pair:first/1) - end, - Num_leading_matches = gleam@list:length(Leading_matches), - Trailing_matches = begin - _pipe@2 = gleam@list:zip( - gleam@list:reverse(First_sequence), - gleam@list:reverse(Second_sequence) - ), - _pipe@3 = gleam@list:take_while( - _pipe@2, - fun(Pair@1) -> - erlang:element(1, Pair@1) =:= erlang:element(2, Pair@1) - end - ), - _pipe@4 = gleam@list:map(_pipe@3, fun gleam@pair:first/1), - gleam@list:reverse(_pipe@4) - end, - Num_trailing_matches = gleam@list:length(Trailing_matches), - First_sequence_to_diff = begin - _pipe@5 = First_sequence, - _pipe@6 = gleam@list:drop(_pipe@5, Num_leading_matches), - gleam@list:take( - _pipe@6, - (gleam@list:length(First_sequence) - Num_leading_matches) - Num_trailing_matches - ) - end, - Second_sequence_to_diff = begin - _pipe@7 = Second_sequence, - _pipe@8 = gleam@list:drop(_pipe@7, Num_leading_matches), - gleam@list:take( - _pipe@8, - (gleam@list:length(Second_sequence) - Num_leading_matches) - Num_trailing_matches - ) - end, - Diff_map@2 = begin - _pipe@9 = Second_sequence_to_diff, - gleam@list:index_fold( - _pipe@9, - gleam@map:new(), - fun(Diff_map, Item_second, Index_second) -> - _pipe@10 = First_sequence_to_diff, - gleam@list:index_fold( - _pipe@10, - Diff_map, - fun(Diff_map@1, Item_first, Index_first) -> - build_diff_map( - Item_first, - Index_first, - Item_second, - Index_second, - Diff_map@1 - ) - end - ) - end - ) - end, - {First_segments@1, Second_segments@1} = case {First_sequence_to_diff, - Second_sequence_to_diff} of - {[], []} -> - {[], []}; - - {First_matching, []} -> - {[{no_match, First_matching}], []}; - - {[], Second_matching} -> - {[], [{no_match, Second_matching}]}; - - {First_sequence_to_diff@1, Second_sequence_to_diff@1} -> - Tracking = begin - _pipe@11 = back_track( - Diff_map@2, - gleam@list:length(First_sequence_to_diff@1) - 1, - gleam@list:length(Second_sequence_to_diff@1) - 1, - [] - ), - gleam@map:from_list(_pipe@11) - end, - First_segments = collect_matches( - Tracking, - First_sequence_to_diff@1, - fun(Key) -> - {First, _} = Key, - First - end - ), - Second_segments = collect_matches( - Tracking, - Second_sequence_to_diff@1, - fun(Key@1) -> - {_, Second} = Key@1, - Second - end - ), - {First_segments, Second_segments} - end, - {First_segments_with_leading_trailing, - Second_segments_with_leading_trailing} = case {Leading_matches, - Trailing_matches} of - {[], []} -> - {First_segments@1, Second_segments@1}; - - {[], Trailing_matches@1} -> - {begin - _pipe@12 = First_segments@1, - append_and_merge(_pipe@12, {match, Trailing_matches@1}) - end, - begin - _pipe@13 = Second_segments@1, - append_and_merge(_pipe@13, {match, Trailing_matches@1}) - end}; - - {Leading_matches@1, []} -> - {begin - _pipe@14 = First_segments@1, - prepend_and_merge(_pipe@14, {match, Leading_matches@1}) - end, - begin - _pipe@15 = Second_segments@1, - prepend_and_merge(_pipe@15, {match, Leading_matches@1}) - end}; - - {Leading_matches@2, Trailing_matches@2} -> - {begin - _pipe@16 = First_segments@1, - _pipe@17 = prepend_and_merge( - _pipe@16, - {match, Leading_matches@2} - ), - append_and_merge(_pipe@17, {match, Trailing_matches@2}) - end, - begin - _pipe@18 = Second_segments@1, - _pipe@19 = prepend_and_merge( - _pipe@18, - {match, Leading_matches@2} - ), - append_and_merge(_pipe@19, {match, Trailing_matches@2}) - end} - end, - {list_comparison, - First_segments_with_leading_trailing, - Second_segments_with_leading_trailing}. diff --git a/aoc2023/build/packages/gap/src/gap.gleam b/aoc2023/build/packages/gap/src/gap.gleam deleted file mode 100644 index 7eb0e7f..0000000 --- a/aoc2023/build/packages/gap/src/gap.gleam +++ /dev/null @@ -1,438 +0,0 @@ -import gleam/string -import gleam/list -import gleam/pair -import gleam/map.{type Map} -import gleam/result -import gleam/option.{type Option, None, Some} -import gleam/int -import gleam/order.{Eq, Gt, Lt} -import gleam/set -import gap/comparison.{ - type Comparison, type Match, type Segments, ListComparison, Match, NoMatch, - StringComparison, -} -import gap/styled_comparison.{type StyledComparison} -import gap/styling.{ - first_highlight_default, from_comparison, highlight, no_highlight, - second_highlight_default, to_styled_comparison, -} -import gap/myers.{type Edit, Del, Eq as MyerEq, Ins} - -type MatchedItem(a) = - #(#(Int, Int), a) - -type Score(a) { - Score(value: Int, item: Option(a)) -} - -type DiffMap(a) = - Map(#(Int, Int), Score(a)) - -/// Creates a `StyledComparison` from `Comparison` using default values for -/// highting and serialization. -/// -/// ## Example -/// -/// ```gleam -/// > compare_strings("abc", "abe") |> to_styled() -/// ``` -/// This will return a `StyledComparison(first, second)` where "c" in `first` is green -/// and "e" in `second` is red. -pub fn to_styled(comparison: Comparison(a)) -> StyledComparison { - comparison - |> from_comparison() - |> highlight(first_highlight_default, second_highlight_default, no_highlight) - |> to_styled_comparison() -} - -/// Compare two string and return a `StringComparison` which will be styled as string -/// when passed to `to_styled` -/// -/// Will use the default `myers` algorithm -pub fn compare_strings(first: String, second: String) -> Comparison(String) { - let comparison = - compare_lists(string.to_graphemes(first), string.to_graphemes(second)) - case comparison { - ListComparison(first, second) -> StringComparison(first, second) - StringComparison(first, second) -> StringComparison(first, second) - } -} - -/// Compare two string and return a `StringComparison` which will be styled as string -/// when passed to `to_styled` -/// -/// Algorithm can be used to select either `myers` or the legacy `lcs` algorithm -pub fn compare_strings_with_algorithm( - first: String, - second: String, - algorithm, -) -> Comparison(String) { - let comparison = - algorithm(string.to_graphemes(first), string.to_graphemes(second)) - case comparison { - ListComparison(first, second) -> StringComparison(first, second) - StringComparison(first, second) -> StringComparison(first, second) - } -} - -/// Compare two lists and return a `ListComparison` which will be styled as list -/// when passed to `to_styled` -/// -/// Will use the default `myers` algorithm -pub fn compare_lists( - first_sequence: List(a), - second_sequence: List(a), -) -> Comparison(a) { - myers(first_sequence, second_sequence) -} - -/// Compare two lists and return a `ListComparison` which will be styled as list -/// when passed to `to_styled` -/// -/// Algorithm can be used to select either `myers` or the legacy `lcs` algorithm -pub fn compare_lists_with_algorithm( - first_sequence: List(a), - second_sequence: List(a), - algorithm, -) -> Comparison(a) { - algorithm(first_sequence, second_sequence) -} - -/// An adapter for the the `myers` algorithm. -/// Intended to be use as an argument to `compare_strings_with_algorithm` or -/// `compare_lists_with_algorithm` -pub fn myers(first_sequence: List(a), second_sequence: List(a)) -> Comparison(a) { - let edits = myers.difference(first_sequence, second_sequence) - edits - |> list.reverse() - |> list.fold( - ListComparison([], []), - fn(comparison: Comparison(a), edit: Edit(a)) { - case comparison { - ListComparison(first, second) -> { - case edit { - MyerEq(segment) -> - ListComparison( - [Match(segment), ..first], - [Match(segment), ..second], - ) - Ins(segment) -> ListComparison(first, [NoMatch(segment), ..second]) - Del(segment) -> ListComparison([NoMatch(segment), ..first], second) - } - } - StringComparison(..) -> comparison - } - }, - ) -} - -/// An adapter for the the `lcs` (longest common subsequence) algorithm. -/// Intended to be use as an argument to `compare_strings_with_algorithm` or -/// `compare_lists_with_algorithm` -pub fn lcs(first_sequence: List(a), second_sequence: List(a)) -> Comparison(a) { - let leading_matches = - list.zip(first_sequence, second_sequence) - |> list.take_while(fn(pair) { pair.0 == pair.1 }) - |> list.map(pair.first) - let num_leading_matches = list.length(leading_matches) - let trailing_matches = - list.zip(list.reverse(first_sequence), list.reverse(second_sequence)) - |> list.take_while(fn(pair) { pair.0 == pair.1 }) - |> list.map(pair.first) - |> list.reverse() - let num_trailing_matches = list.length(trailing_matches) - let first_sequence_to_diff = - first_sequence - |> list.drop(num_leading_matches) - |> list.take( - list.length(first_sequence) - num_leading_matches - num_trailing_matches, - ) - let second_sequence_to_diff = - second_sequence - |> list.drop(num_leading_matches) - |> list.take( - list.length(second_sequence) - num_leading_matches - num_trailing_matches, - ) - - let diff_map = - second_sequence_to_diff - |> list.index_fold( - map.new(), - fn(diff_map, item_second, index_second) { - first_sequence_to_diff - |> list.index_fold( - diff_map, - fn(diff_map, item_first, index_first) { - build_diff_map( - item_first, - index_first, - item_second, - index_second, - diff_map, - ) - }, - ) - }, - ) - let #(first_segments, second_segments) = case - first_sequence_to_diff, - second_sequence_to_diff - { - [], [] -> #([], []) - first_matching, [] -> #([NoMatch(first_matching)], []) - [], second_matching -> #([], [NoMatch(second_matching)]) - first_sequence_to_diff, second_sequence_to_diff -> { - let tracking = - back_track( - diff_map, - list.length(first_sequence_to_diff) - 1, - list.length(second_sequence_to_diff) - 1, - [], - ) - |> map.from_list() - - let first_segments = - collect_matches( - tracking, - first_sequence_to_diff, - fn(key) { - let #(first, _) = key - first - }, - ) - let second_segments = - collect_matches( - tracking, - second_sequence_to_diff, - fn(key) { - let #(_, second) = key - second - }, - ) - #(first_segments, second_segments) - } - } - - let #( - first_segments_with_leading_trailing, - second_segments_with_leading_trailing, - ) = case leading_matches, trailing_matches { - [], [] -> #(first_segments, second_segments) - [], trailing_matches -> #( - first_segments - |> append_and_merge(Match(trailing_matches)), - second_segments - |> append_and_merge(Match(trailing_matches)), - ) - leading_matches, [] -> #( - first_segments - |> prepend_and_merge(Match(leading_matches)), - second_segments - |> prepend_and_merge(Match(leading_matches)), - ) - leading_matches, trailing_matches -> #( - first_segments - |> prepend_and_merge(Match(leading_matches)) - |> append_and_merge(Match(trailing_matches)), - second_segments - |> prepend_and_merge(Match(leading_matches)) - |> append_and_merge(Match(trailing_matches)), - ) - } - - ListComparison( - first_segments_with_leading_trailing, - second_segments_with_leading_trailing, - ) -} - -fn prepend_and_merge( - matches: List(Match(List(a))), - match: Match(List(a)), -) -> List(Match(List(a))) { - case matches, match { - [], _ -> [match] - [Match(first_match), ..rest], Match(_) -> [ - Match( - match.item - |> list.append(first_match), - ), - ..rest - ] - [NoMatch(first_match), ..rest], NoMatch(_) -> [ - NoMatch( - match.item - |> list.append(first_match), - ), - ..rest - ] - matches, match -> [match, ..matches] - } -} - -fn append_and_merge( - matches: List(Match(List(a))), - match: Match(List(a)), -) -> List(Match(List(a))) { - case - matches - |> list.reverse(), - match - { - [], _ -> [match] - [Match(first_match), ..rest], Match(_) -> [ - Match( - first_match - |> list.append(match.item), - ), - ..rest - ] - [NoMatch(first_match), ..rest], NoMatch(_) -> [ - NoMatch( - first_match - |> list.append(match.item), - ), - ..rest - ] - matches, match -> [match, ..matches] - } - |> list.reverse() -} - -fn collect_matches(tracking, str: List(a), extract_fun) -> Segments(a) { - let matching_indexes = - map.keys(tracking) - |> list.map(extract_fun) - |> set.from_list() - - let matches = - str - |> list.index_map(fn(index, item) { - case set.contains(matching_indexes, index) { - True -> Match(item) - False -> NoMatch(item) - } - }) - - matches - |> list.chunk(fn(match) { - case match { - Match(_) -> True - NoMatch(_) -> False - } - }) - |> list.map(fn(match_list) { - case match_list { - [Match(_), ..] -> - Match(list.filter_map( - match_list, - fn(match) { - case match { - Match(item) -> Ok(item) - NoMatch(_) -> Error(Nil) - } - }, - )) - [NoMatch(_), ..] -> - NoMatch(list.filter_map( - match_list, - fn(match) { - case match { - NoMatch(item) -> Ok(item) - Match(_) -> Error(Nil) - } - }, - )) - } - }) -} - -fn back_track( - diff_map: DiffMap(a), - first_index: Int, - second_index: Int, - stack: List(MatchedItem(a)), -) -> List(MatchedItem(a)) { - case first_index == 0 || second_index == 0 { - True -> { - let this_score = - map.get(diff_map, #(first_index, second_index)) - |> result.unwrap(Score(0, None)) - case this_score { - Score(_, Some(item)) -> [#(#(first_index, second_index), item), ..stack] - _ -> - case first_index, second_index { - 0, a if a > 0 -> - back_track(diff_map, first_index, second_index - 1, stack) - a, 0 if a > 0 -> - back_track(diff_map, first_index - 1, second_index, stack) - 0, 0 -> stack - _, _ -> back_track(diff_map, first_index - 1, second_index, stack) - } - } - } - False -> { - let this_score = - map.get(diff_map, #(first_index, second_index)) - |> result.unwrap(Score(0, None)) - case this_score { - Score(_, Some(item)) -> - back_track( - diff_map, - first_index - 1, - second_index - 1, - [#(#(first_index, second_index), item), ..stack], - ) - Score(_, None) -> { - let up = - map.get(diff_map, #(first_index, second_index - 1)) - |> result.unwrap(Score(0, None)) - let back = - map.get(diff_map, #(first_index - 1, second_index)) - |> result.unwrap(Score(0, None)) - case int.compare(up.value, back.value) { - Gt -> back_track(diff_map, first_index, second_index - 1, stack) - Lt -> back_track(diff_map, first_index - 1, second_index, stack) - Eq -> - case first_index, second_index { - 0, a if a > 0 -> - back_track(diff_map, first_index, second_index - 1, stack) - a, 0 if a > 0 -> - back_track(diff_map, first_index - 1, second_index, stack) - 0, 0 -> stack - _, _ -> - back_track(diff_map, first_index - 1, second_index, stack) - } - } - } - } - } - } -} - -fn build_diff_map( - first_item: a, - first_index: Int, - second_item: a, - second_index: Int, - diff_map: DiffMap(a), -) -> DiffMap(a) { - let prev_score = - map.get(diff_map, #(first_index - 1, second_index - 1)) - |> result.unwrap(Score(0, None)) - let derived_score_up = - diff_map - |> map.get(#(first_index, second_index - 1)) - |> result.unwrap(Score(0, None)) - let derived_score_back = - diff_map - |> map.get(#(first_index - 1, second_index)) - |> result.unwrap(Score(0, None)) - let derived_score = int.max(derived_score_up.value, derived_score_back.value) - let this_score = case first_item == second_item { - True -> Score(prev_score.value + 1, Some(first_item)) - False -> Score(derived_score, None) - } - diff_map - |> map.insert(#(first_index, second_index), this_score) -} diff --git a/aoc2023/build/packages/gap/src/gap/comparison.gleam b/aoc2023/build/packages/gap/src/gap/comparison.gleam deleted file mode 100644 index da30c29..0000000 --- a/aoc2023/build/packages/gap/src/gap/comparison.gleam +++ /dev/null @@ -1,22 +0,0 @@ -/// Comparison of two strings or lists -/// -/// The comparison consists of two lists of matched segments. The segments represent -/// a sequence of succeeding matches or non-matches (up until the next match/non-match) -/// -/// For lists the elements in the segment will be same as the elements in the list, and -/// for strings the elements will be the graphemes of the string -pub type Comparison(a) { - ListComparison(first: Segments(a), second: Segments(a)) - StringComparison(first: Segments(String), second: Segments(String)) -} - -/// Indicating that the item has a matching (`Match`) or no matching (`NoMatch`) item in the -/// other string/list -pub type Match(a) { - Match(item: a) - NoMatch(item: a) -} - -/// List of segments of succeeding matches / non-matches -pub type Segments(a) = - List(Match(List(a))) diff --git a/aoc2023/build/packages/gap/src/gap/myers.gleam b/aoc2023/build/packages/gap/src/gap/myers.gleam deleted file mode 100644 index f0b8ddc..0000000 --- a/aoc2023/build/packages/gap/src/gap/myers.gleam +++ /dev/null @@ -1,122 +0,0 @@ -import gleam/list - -pub type Edit(a) { - Eq(List(a)) - Del(List(a)) - Ins(List(a)) -} - -type Path(a) { - Path(x: Int, y: Int, list1: List(a), list2: List(a), edits: List(Edit(a))) -} - -type Status(a) { - Done(edits: List(Edit(a))) - Next(paths: List(Path(a))) - Cont(path: Path(a)) -} - -/// The algorithm is outlined in the -/// "An O(ND) Difference Algorithm and Its Variations" paper by E. Myers. -/// -/// Adapted from the implementation of "myers_difference" in Elixirs List module -pub fn difference(list1: List(a), list2: List(a)) -> List(Edit(a)) { - let path = Path(0, 0, list1, list2, []) - find_script(0, list.length(list1) + list.length(list2), [path]) -} - -fn find_script(envelope: Int, max: Int, paths: List(Path(a))) { - case envelope > max { - True -> [] - False -> { - case each_diagonal(-envelope, envelope, paths, []) { - Done(edits) -> compact_reverse(edits, []) - Next(paths) -> find_script(envelope + 1, max, paths) - _ -> panic as "Didn't expect a Cont here" - } - } - } -} - -fn compact_reverse(edits: List(Edit(a)), acc: List(Edit(a))) -> List(Edit(a)) { - case edits, acc { - [], acc -> acc - [Eq(elem), ..rest], [Eq(result), ..acc_rest] -> - compact_reverse(rest, [Eq(list.flatten([elem, result])), ..acc_rest]) - [Del(elem), ..rest], [Del(result), ..acc_rest] -> - compact_reverse(rest, [Del(list.flatten([elem, result])), ..acc_rest]) - [Ins(elem), ..rest], [Ins(result), ..acc_rest] -> - compact_reverse(rest, [Ins(list.flatten([elem, result])), ..acc_rest]) - [Eq(elem), ..rest], acc -> compact_reverse(rest, [Eq(elem), ..acc]) - [Del(elem), ..rest], acc -> compact_reverse(rest, [Del(elem), ..acc]) - [Ins(elem), ..rest], acc -> compact_reverse(rest, [Ins(elem), ..acc]) - } -} - -fn each_diagonal( - diag: Int, - limit: Int, - paths: List(Path(a)), - next_paths: List(Path(a)), -) -> Status(a) { - case diag > limit { - True -> Next(list.reverse(next_paths)) - False -> { - let #(path, rest) = proceed_path(diag, limit, paths) - case follow_snake(path) { - Cont(path) -> each_diagonal(diag + 2, limit, rest, [path, ..next_paths]) - other -> other - } - } - } -} - -fn proceed_path( - diag: Int, - limit: Int, - paths: List(Path(a)), -) -> #(Path(a), List(Path(a))) { - let neg_limit = -limit - case diag, limit, paths { - 0, 0, [path] -> #(path, []) - diag, _limit, [path, ..] as paths if diag == neg_limit -> #( - move_down(path), - paths, - ) - diag, limit, [path, ..] as paths if diag == limit -> #( - move_right(path), - paths, - ) - _diag, _limit, [path1, path2, ..rest] -> { - case path1.y > path2.y { - True -> #(move_right(path1), [path2, ..rest]) - False -> #(move_down(path2), [path2, ..rest]) - } - } - } -} - -fn move_right(path: Path(a)) -> Path(a) { - case path { - Path(x, y, list1, [elem, ..rest], edits) -> - Path(x + 1, y, list1, rest, [Ins([elem]), ..edits]) - Path(x, y, list1, [], edits) -> Path(x + 1, y, list1, [], edits) - } -} - -fn move_down(path: Path(a)) -> Path(a) { - case path { - Path(x, y, [elem, ..rest], list2, edits) -> - Path(x, y + 1, rest, list2, [Del([elem]), ..edits]) - Path(x, y, [], list2, edits) -> Path(x, y + 1, [], list2, edits) - } -} - -fn follow_snake(path: Path(a)) -> Status(a) { - case path { - Path(x, y, [elem1, ..rest1], [elem2, ..rest2], edits) if elem1 == elem2 -> - follow_snake(Path(x + 1, y + 1, rest1, rest2, [Eq([elem1]), ..edits])) - Path(_x, _y, [], [], edits) -> Done(edits) - _ -> Cont(path) - } -} diff --git a/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam b/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam deleted file mode 100644 index 7103c2e..0000000 --- a/aoc2023/build/packages/gap/src/gap/styled_comparison.gleam +++ /dev/null @@ -1,4 +0,0 @@ -/// A comparison where the parts have been styled (serialized and highlighted) -pub type StyledComparison { - StyledComparison(first: String, second: String) -} diff --git a/aoc2023/build/packages/gap/src/gap/styling.gleam b/aoc2023/build/packages/gap/src/gap/styling.gleam deleted file mode 100644 index 623ae8a..0000000 --- a/aoc2023/build/packages/gap/src/gap/styling.gleam +++ /dev/null @@ -1,233 +0,0 @@ -import gleam/option.{type Option, None, Some} -import gleam/list -import gleam/string -import gleam_community/ansi -import gap/comparison.{ - type Comparison, type Segments, ListComparison, Match, NoMatch, - StringComparison, -} -import gap/styled_comparison.{type StyledComparison, StyledComparison} - -/// The `Highlighter`takes a string representation of the item that was not matching -/// and should return a string representation that can be used to visually indicate that -/// it is a non-matching item. -/// -/// The default implementation of the highlighters uses the -/// [gleam_community/ansi](https://hexdocs.pm/gleam_community_ansi/index.html) library -/// to set a different color for the item, but any type if indication can be used as long -/// as it returns a valid string -pub type Highlighter = - fn(String) -> String - -/// `Part` is used to indicate to a custom serializer if it should produce a serialization -/// based on a segment with items or the final string that contains already serialized segments -pub type Part(a) { - /// `acc` the already serialized part of the result, `part` is the current segment that should be serialized and appended and `highlighter` is the `Highlighter` that can be used to indicate non-matching items - Part(acc: String, part: List(a), highlight: Highlighter) - /// `all` is a string representing all serialized segments. This can be useful if some string should be prepended/appended to the final result - All(all: String) -} - -/// A `Serializer`can be used to create string representation of the comparison results -/// -/// See [serialize](#serialize) for adding custom serializers and [mk_generic_serializer](#mk_generic_serializer) -pub type Serializer(a) = - fn(Part(a)) -> String - -/// Highlighters to use for indicating matches / non-matches -/// -/// `first` is used to highlight non-matches in the first string/list -/// `second` is used to highlight non-matches in the second string/list -/// `matching` is used to highlight matches in the both strings/lists -pub type Highlighters { - Highlighters(first: Highlighter, second: Highlighter, matching: Highlighter) -} - -/// Styling of a `Comparison` -/// -/// See [from_comparison](#from_comparison) -pub opaque type Styling(a) { - Styling( - comparison: Comparison(a), - serializer: Option(Serializer(a)), - highlight: Option(Highlighters), - ) -} - -/// Create a new `Styling` from a `Comparison` -/// -/// The `Styling` can be customized by adding highlighters and a serializer -/// See [highlight](#highlight) and [serialize](#serialize) -pub fn from_comparison(comparison: Comparison(a)) -> Styling(a) { - Styling(comparison, None, None) -} - -/// Add highlighters to the `Styling` -/// -/// The highlighters are used to mark the matching/non-matching items in the -/// first/second list/string -pub fn highlight( - styling: Styling(a), - first: Highlighter, - second: Highlighter, - matching: Highlighter, -) -> Styling(a) { - Styling(..styling, highlight: Some(Highlighters(first, second, matching))) -} - -/// Add a serializer to the `Styling` -/// -/// The serializer is used to create string representation of the items in the segments of the `Comparison` -/// See [Part](#part) for details -/// -/// > **NOTE:** `StringComparison` will always use the default string serializer (concatenating the graphemes). -/// > If there is a need for custom serialization of `StringComparison` convert the string to a list of -/// > graphemes and treat it as a `ListComparison` -pub fn serialize(styling: Styling(a), serializer: Serializer(a)) -> Styling(a) { - Styling(..styling, serializer: Some(serializer)) -} - -/// Creates a styled comparison using either custom highlighters/serializer if they where added or default -/// highlighters and/or serializer -pub fn to_styled_comparison(styling: Styling(a)) -> StyledComparison { - let highlight = - styling.highlight - |> option.unwrap(Highlighters( - first_highlight_default, - second_highlight_default, - no_highlight, - )) - case styling.comparison { - StringComparison(first, second) -> - to_strings( - first, - second, - // NOTE: Using string serializer here because otherwise we need to have a specific string serializer on the styling - string_serializer, - highlight.first, - highlight.second, - highlight.matching, - ) - ListComparison(first, second) -> - to_strings( - first, - second, - option.unwrap(styling.serializer, generic_serializer), - highlight.first, - highlight.second, - highlight.matching, - ) - } -} - -/// Default highlighter for the first string/list in the comparison -pub fn first_highlight_default(string: String) -> String { - case string { - " " -> - string - |> ansi.underline() - |> ansi.bold() - |> ansi.green() - - _ -> - string - |> ansi.green() - |> ansi.bold() - } -} - -/// Default highlighter for the second string/list in the comparison -pub fn second_highlight_default(string: String) -> String { - case string { - " " -> - string - |> ansi.underline() - |> ansi.bold() - |> ansi.red() - - _ -> - string - |> ansi.red() - |> ansi.bold() - } -} - -/// Default highlighter used for matching items -pub fn no_highlight(string: String) -> String { - string -} - -fn string_serializer(part: Part(String)) -> String { - case part { - Part(acc, sequence, highlight) -> - acc <> { - sequence - |> list.map(highlight) - |> string.join("") - } - All(string) -> string - } -} - -fn generic_serializer(part: Part(a)) -> String { - mk_generic_serializer(", ", fn(all) { "[" <> all <> "]" })(part) -} - -/// Creates a generic serializer that uses `separator` between all items and calls -/// `around` for possibility to prepend/append strings to the final result -pub fn mk_generic_serializer(separator: String, around: fn(String) -> String) { - fn(part) { - case part { - Part(acc, sequence, highlight) -> { - let segment_separator = case acc { - "" -> "" - _ -> separator - } - acc <> segment_separator <> { - sequence - |> list.map(string.inspect) - |> list.map(highlight) - |> string.join(separator) - } - } - All(string) -> around(string) - } - } -} - -fn to_strings( - first: Segments(a), - second: Segments(a), - serializer: Serializer(a), - first_highlight: Highlighter, - second_highlight: Highlighter, - no_highlight: Highlighter, -) -> StyledComparison { - let first_styled = - first - |> list.fold( - "", - fn(str, match) { - case match { - Match(item) -> serializer(Part(str, item, no_highlight)) - NoMatch(item) -> serializer(Part(str, item, first_highlight)) - } - }, - ) - let second_styled = - second - |> list.fold( - "", - fn(str, match) { - case match { - Match(item) -> serializer(Part(str, item, no_highlight)) - NoMatch(item) -> serializer(Part(str, item, second_highlight)) - } - }, - ) - - StyledComparison( - serializer(All(first_styled)), - serializer(All(second_styled)), - ) -} diff --git a/aoc2023/build/packages/gap/src/gap@comparison.erl b/aoc2023/build/packages/gap/src/gap@comparison.erl deleted file mode 100644 index 36bd1c3..0000000 --- a/aoc2023/build/packages/gap/src/gap@comparison.erl +++ /dev/null @@ -1,15 +0,0 @@ --module(gap@comparison). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([comparison/1, match/1]). - --type comparison(FQT) :: {list_comparison, - list(match(list(FQT))), - list(match(list(FQT)))} | - {string_comparison, - list(match(list(binary()))), - list(match(list(binary())))}. - --type match(FQU) :: {match, FQU} | {no_match, FQU}. - - diff --git a/aoc2023/build/packages/gap/src/gap@myers.erl b/aoc2023/build/packages/gap/src/gap@myers.erl deleted file mode 100644 index 6a8ad35..0000000 --- a/aoc2023/build/packages/gap/src/gap@myers.erl +++ /dev/null @@ -1,156 +0,0 @@ --module(gap@myers). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([difference/2]). --export_type([edit/1, path/1, status/1]). - --type edit(FUV) :: {eq, list(FUV)} | {del, list(FUV)} | {ins, list(FUV)}. - --type path(FUW) :: {path, - integer(), - integer(), - list(FUW), - list(FUW), - list(edit(FUW))}. - --type status(FUX) :: {done, list(edit(FUX))} | - {next, list(path(FUX))} | - {cont, path(FUX)}. - --spec compact_reverse(list(edit(FVH)), list(edit(FVH))) -> list(edit(FVH)). -compact_reverse(Edits, Acc) -> - case {Edits, Acc} of - {[], Acc@1} -> - Acc@1; - - {[{eq, Elem} | Rest], [{eq, Result} | Acc_rest]} -> - compact_reverse( - Rest, - [{eq, gleam@list:flatten([Elem, Result])} | Acc_rest] - ); - - {[{del, Elem@1} | Rest@1], [{del, Result@1} | Acc_rest@1]} -> - compact_reverse( - Rest@1, - [{del, gleam@list:flatten([Elem@1, Result@1])} | Acc_rest@1] - ); - - {[{ins, Elem@2} | Rest@2], [{ins, Result@2} | Acc_rest@2]} -> - compact_reverse( - Rest@2, - [{ins, gleam@list:flatten([Elem@2, Result@2])} | Acc_rest@2] - ); - - {[{eq, Elem@3} | Rest@3], Acc@2} -> - compact_reverse(Rest@3, [{eq, Elem@3} | Acc@2]); - - {[{del, Elem@4} | Rest@4], Acc@3} -> - compact_reverse(Rest@4, [{del, Elem@4} | Acc@3]); - - {[{ins, Elem@5} | Rest@5], Acc@4} -> - compact_reverse(Rest@5, [{ins, Elem@5} | Acc@4]) - end. - --spec move_right(path(FWA)) -> path(FWA). -move_right(Path) -> - case Path of - {path, X, Y, List1, [Elem | Rest], Edits} -> - {path, X + 1, Y, List1, Rest, [{ins, [Elem]} | Edits]}; - - {path, X@1, Y@1, List1@1, [], Edits@1} -> - {path, X@1 + 1, Y@1, List1@1, [], Edits@1} - end. - --spec move_down(path(FWD)) -> path(FWD). -move_down(Path) -> - case Path of - {path, X, Y, [Elem | Rest], List2, Edits} -> - {path, X, Y + 1, Rest, List2, [{del, [Elem]} | Edits]}; - - {path, X@1, Y@1, [], List2@1, Edits@1} -> - {path, X@1, Y@1 + 1, [], List2@1, Edits@1} - end. - --spec proceed_path(integer(), integer(), list(path(FVU))) -> {path(FVU), - list(path(FVU))}. -proceed_path(Diag, Limit, Paths) -> - Neg_limit = - Limit, - case {Diag, Limit, Paths} of - {0, 0, [Path]} -> - {Path, []}; - - {Diag@1, _, [Path@1 | _] = Paths@1} when Diag@1 =:= Neg_limit -> - {move_down(Path@1), Paths@1}; - - {Diag@2, Limit@1, [Path@2 | _] = Paths@2} when Diag@2 =:= Limit@1 -> - {move_right(Path@2), Paths@2}; - - {_, _, [Path1, Path2 | Rest]} -> - case erlang:element(3, Path1) > erlang:element(3, Path2) of - true -> - {move_right(Path1), [Path2 | Rest]}; - - false -> - {move_down(Path2), [Path2 | Rest]} - end - end. - --spec follow_snake(path(FWG)) -> status(FWG). -follow_snake(Path) -> - case Path of - {path, X, Y, [Elem1 | Rest1], [Elem2 | Rest2], Edits} when Elem1 =:= Elem2 -> - follow_snake( - {path, X + 1, Y + 1, Rest1, Rest2, [{eq, [Elem1]} | Edits]} - ); - - {path, _, _, [], [], Edits@1} -> - {done, Edits@1}; - - _ -> - {cont, Path} - end. - --spec each_diagonal(integer(), integer(), list(path(FVO)), list(path(FVO))) -> status(FVO). -each_diagonal(Diag, Limit, Paths, Next_paths) -> - case Diag > Limit of - true -> - {next, gleam@list:reverse(Next_paths)}; - - false -> - {Path, Rest} = proceed_path(Diag, Limit, Paths), - case follow_snake(Path) of - {cont, Path@1} -> - each_diagonal(Diag + 2, Limit, Rest, [Path@1 | Next_paths]); - - Other -> - Other - end - end. - --spec find_script(integer(), integer(), list(path(FVD))) -> list(edit(FVD)). -find_script(Envelope, Max, Paths) -> - case Envelope > Max of - true -> - []; - - false -> - case each_diagonal(- Envelope, Envelope, Paths, []) of - {done, Edits} -> - compact_reverse(Edits, []); - - {next, Paths@1} -> - find_script(Envelope + 1, Max, Paths@1); - - _ -> - erlang:error(#{gleam_error => panic, - message => <<"Didn't expect a Cont here"/utf8>>, - module => <<"gap/myers"/utf8>>, - function => <<"find_script"/utf8>>, - line => 35}) - end - end. - --spec difference(list(FUY), list(FUY)) -> list(edit(FUY)). -difference(List1, List2) -> - Path = {path, 0, 0, List1, List2, []}, - find_script(0, gleam@list:length(List1) + gleam@list:length(List2), [Path]). diff --git a/aoc2023/build/packages/gap/src/gap@styled_comparison.erl b/aoc2023/build/packages/gap/src/gap@styled_comparison.erl deleted file mode 100644 index 14cc390..0000000 --- a/aoc2023/build/packages/gap/src/gap@styled_comparison.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(gap@styled_comparison). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([styled_comparison/0]). - --type styled_comparison() :: {styled_comparison, binary(), binary()}. - - diff --git a/aoc2023/build/packages/gap/src/gap@styling.erl b/aoc2023/build/packages/gap/src/gap@styling.erl deleted file mode 100644 index ba226c3..0000000 --- a/aoc2023/build/packages/gap/src/gap@styling.erl +++ /dev/null @@ -1,202 +0,0 @@ --module(gap@styling). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_comparison/1, highlight/4, serialize/2, first_highlight_default/1, second_highlight_default/1, no_highlight/1, mk_generic_serializer/2, to_styled_comparison/1]). --export_type([part/1, highlighters/0, styling/1]). - --type part(FRE) :: {part, binary(), list(FRE), fun((binary()) -> binary())} | - {all, binary()}. - --type highlighters() :: {highlighters, - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary())}. - --opaque styling(FRF) :: {styling, - gap@comparison:comparison(FRF), - gleam@option:option(fun((part(FRF)) -> binary())), - gleam@option:option(highlighters())}. - --spec from_comparison(gap@comparison:comparison(FRI)) -> styling(FRI). -from_comparison(Comparison) -> - {styling, Comparison, none, none}. - --spec highlight( - styling(FRL), - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()) -) -> styling(FRL). -highlight(Styling, First, Second, Matching) -> - erlang:setelement( - 4, - Styling, - {some, {highlighters, First, Second, Matching}} - ). - --spec serialize(styling(FRO), fun((part(FRO)) -> binary())) -> styling(FRO). -serialize(Styling, Serializer) -> - erlang:setelement(3, Styling, {some, Serializer}). - --spec first_highlight_default(binary()) -> binary(). -first_highlight_default(String) -> - case String of - <<" "/utf8>> -> - _pipe = String, - _pipe@1 = gleam_community@ansi:underline(_pipe), - _pipe@2 = gleam_community@ansi:bold(_pipe@1), - gleam_community@ansi:green(_pipe@2); - - _ -> - _pipe@3 = String, - _pipe@4 = gleam_community@ansi:green(_pipe@3), - gleam_community@ansi:bold(_pipe@4) - end. - --spec second_highlight_default(binary()) -> binary(). -second_highlight_default(String) -> - case String of - <<" "/utf8>> -> - _pipe = String, - _pipe@1 = gleam_community@ansi:underline(_pipe), - _pipe@2 = gleam_community@ansi:bold(_pipe@1), - gleam_community@ansi:red(_pipe@2); - - _ -> - _pipe@3 = String, - _pipe@4 = gleam_community@ansi:red(_pipe@3), - gleam_community@ansi:bold(_pipe@4) - end. - --spec no_highlight(binary()) -> binary(). -no_highlight(String) -> - String. - --spec string_serializer(part(binary())) -> binary(). -string_serializer(Part) -> - case Part of - {part, Acc, Sequence, Highlight} -> - <>) - end)/binary>>; - - {all, String} -> - String - end. - --spec mk_generic_serializer(binary(), fun((binary()) -> binary())) -> fun((part(any())) -> binary()). -mk_generic_serializer(Separator, Around) -> - fun(Part) -> case Part of - {part, Acc, Sequence, Highlight} -> - Segment_separator = case Acc of - <<""/utf8>> -> - <<""/utf8>>; - - _ -> - Separator - end, - <<<>/binary, - (begin - _pipe = Sequence, - _pipe@1 = gleam@list:map( - _pipe, - fun gleam@string:inspect/1 - ), - _pipe@2 = gleam@list:map(_pipe@1, Highlight), - gleam@string:join(_pipe@2, Separator) - end)/binary>>; - - {all, String} -> - Around(String) - end end. - --spec generic_serializer(part(any())) -> binary(). -generic_serializer(Part) -> - (mk_generic_serializer( - <<", "/utf8>>, - fun(All) -> <<<<"["/utf8, All/binary>>/binary, "]"/utf8>> end - ))(Part). - --spec to_strings( - list(gap@comparison:match(list(FRY))), - list(gap@comparison:match(list(FRY))), - fun((part(FRY)) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()), - fun((binary()) -> binary()) -) -> gap@styled_comparison:styled_comparison(). -to_strings( - First, - Second, - Serializer, - First_highlight, - Second_highlight, - No_highlight -) -> - First_styled = begin - _pipe = First, - gleam@list:fold(_pipe, <<""/utf8>>, fun(Str, Match) -> case Match of - {match, Item} -> - Serializer({part, Str, Item, No_highlight}); - - {no_match, Item@1} -> - Serializer({part, Str, Item@1, First_highlight}) - end end) - end, - Second_styled = begin - _pipe@1 = Second, - gleam@list:fold( - _pipe@1, - <<""/utf8>>, - fun(Str@1, Match@1) -> case Match@1 of - {match, Item@2} -> - Serializer({part, Str@1, Item@2, No_highlight}); - - {no_match, Item@3} -> - Serializer({part, Str@1, Item@3, Second_highlight}) - end end - ) - end, - {styled_comparison, - Serializer({all, First_styled}), - Serializer({all, Second_styled})}. - --spec to_styled_comparison(styling(any())) -> gap@styled_comparison:styled_comparison(). -to_styled_comparison(Styling) -> - Highlight = begin - _pipe = erlang:element(4, Styling), - gleam@option:unwrap( - _pipe, - {highlighters, - fun first_highlight_default/1, - fun second_highlight_default/1, - fun no_highlight/1} - ) - end, - case erlang:element(2, Styling) of - {string_comparison, First, Second} -> - to_strings( - First, - Second, - fun string_serializer/1, - erlang:element(2, Highlight), - erlang:element(3, Highlight), - erlang:element(4, Highlight) - ); - - {list_comparison, First@1, Second@1} -> - to_strings( - First@1, - Second@1, - gleam@option:unwrap( - erlang:element(3, Styling), - fun generic_serializer/1 - ), - erlang:element(2, Highlight), - erlang:element(3, Highlight), - erlang:element(4, Highlight) - ) - end. diff --git a/aoc2023/build/packages/gap/src/gap_ffi.mjs b/aoc2023/build/packages/gap/src/gap_ffi.mjs deleted file mode 100644 index 235c80b..0000000 --- a/aoc2023/build/packages/gap/src/gap_ffi.mjs +++ /dev/null @@ -1,431 +0,0 @@ -import { - Error, - List, - Ok, - inspect, - toList, - makeError, - isEqual, -} from "./gleam.mjs"; -import * as $option from "../gleam_stdlib/gleam/option.mjs"; - -const HASHCODE_CACHE = new WeakMap(); -const Nil = undefined; - -class MutableMap { - static #hashcode_cache = new WeakMap(); - - static hash(value) { - let existing = this.#hashcode_cache.get(value); - if (existing) { - return existing; - } else if (value instanceof Object) { - let hashcode = inspect(value); - HASHCODE_CACHE.set(value, hashcode); - return hashcode; - } else { - return value.toString(); - } - } - - constructor() { - this.entries = new globalThis.Map(); - } - - get size() { - return this.entries.size; - } - - inspect() { - let entries = [...this.entries.values()] - .map((pair) => inspect(pair)) - .join(", "); - return `map.from_list([${entries}])`; - } - - toList() { - return List.fromArray([...this.entries.values()]); - } - - insert(k, v) { - this.entries.set(MutableMap.hash(k), [k, v]); - return this; - } - - delete(k) { - this.entries.delete(MutableMap.hash(k)); - return this; - } - - get(key) { - let code = MutableMap.hash(key); - if (this.entries.has(code)) { - return new Ok(this.entries.get(code)[1]); - } else { - return new Error(Nil); - } - } -} - -export function new_mutable_map() { - return new MutableMap(); -} - -export function mutable_map_size(map) { - return map.size; -} - -export function mutable_map_to_list(map) { - return map.toList(); -} - -export function mutable_map_remove(k, map) { - return map.delete(k); -} - -export function mutable_map_get(map, key) { - return map.get(key); -} - -export function mutable_map_insert(key, value, map) { - return map.insert(key, value); -} - -// From map.mjs - -export function size(map) { - return mutable_map_size(map); -} - -export function to_list(map) { - return mutable_map_to_list(map); -} - -export function new$() { - return new_mutable_map(); -} - -export function get(from, get) { - return mutable_map_get(from, get); -} - -function do_has_key(key, map) { - return !isEqual(get(map, key), new Error(undefined)); -} - -export function has_key(map, key) { - return do_has_key(key, map); -} - -export function insert(map, key, value) { - return mutable_map_insert(key, value, map); -} - -function insert_pair(map, pair) { - return insert(map, pair[0], pair[1]); -} - -export function update(map, key, fun) { - let _pipe = map; - let _pipe$1 = get(_pipe, key); - let _pipe$2 = $option.from_result(_pipe$1); - let _pipe$3 = fun(_pipe$2); - return ((_capture) => { - return insert(map, key, _capture); - })(_pipe$3); -} - -export function delete$(map, key) { - return mutable_map_remove(key, map); -} - -function fold_list_of_pair(loop$list, loop$initial) { - while (true) { - let list = loop$list; - let initial = loop$initial; - if (list.hasLength(0)) { - return initial; - } else if (list.atLeastLength(1)) { - let x = list.head; - let rest = list.tail; - loop$list = rest; - loop$initial = insert(initial, x[0], x[1]); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 98, - "fold_list_of_pair", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_from_list(list) { - return fold_list_of_pair(list, new$()); -} - -export function from_list(list) { - return do_from_list(list); -} - -function do_fold(loop$list, loop$initial, loop$fun) { - while (true) { - let list = loop$list; - let initial = loop$initial; - let fun = loop$fun; - if (list.hasLength(0)) { - return initial; - } else if (list.atLeastLength(1)) { - let k = list.head[0]; - let v = list.head[1]; - let tail = list.tail; - loop$list = tail; - loop$initial = fun(initial, k, v); - loop$fun = fun; - } else { - throw makeError( - "case_no_match", - "gleam/map", - 558, - "do_fold", - "No case clause matched", - { values: [list] } - ); - } - } -} - -export function fold(map, initial, fun) { - let _pipe = map; - let _pipe$1 = to_list(_pipe); - return do_fold(_pipe$1, initial, fun); -} - -function do_map_values(f, map) { - let f$1 = (map, k, v) => { - return insert(map, k, f(k, v)); - }; - let _pipe = map; - return fold(_pipe, new$(), f$1); -} - -export function map_values(map, fun) { - return do_map_values(fun, map); -} - -function do_filter(f, map) { - let insert$1 = (map, k, v) => { - let $ = f(k, v); - if ($) { - return insert(map, k, v); - } else { - return map; - } - }; - let _pipe = map; - return fold(_pipe, new$(), insert$1); -} - -export function filter(map, property) { - return do_filter(property, map); -} - -function do_keys_acc(loop$list, loop$acc) { - while (true) { - let list = loop$list; - let acc = loop$acc; - if (list.hasLength(0)) { - return reverse_and_concat(acc, toList([])); - } else if (list.atLeastLength(1)) { - let x = list.head; - let xs = list.tail; - loop$list = xs; - loop$acc = toList([x[0]], acc); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 276, - "do_keys_acc", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_keys(map) { - let list_of_pairs = (() => { - let _pipe = map; - return to_list(_pipe); - })(); - return do_keys_acc(list_of_pairs, toList([])); -} - -export function keys(map) { - return do_keys(map); -} - -function reverse_and_concat(loop$remaining, loop$accumulator) { - while (true) { - let remaining = loop$remaining; - let accumulator = loop$accumulator; - if (remaining.hasLength(0)) { - return accumulator; - } else if (remaining.atLeastLength(1)) { - let item = remaining.head; - let rest = remaining.tail; - loop$remaining = rest; - loop$accumulator = toList([item], accumulator); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 269, - "reverse_and_concat", - "No case clause matched", - { values: [remaining] } - ); - } - } -} - -function do_values_acc(loop$list, loop$acc) { - while (true) { - let list = loop$list; - let acc = loop$acc; - if (list.hasLength(0)) { - return reverse_and_concat(acc, toList([])); - } else if (list.atLeastLength(1)) { - let x = list.head; - let xs = list.tail; - loop$list = xs; - loop$acc = toList([x[1]], acc); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 314, - "do_values_acc", - "No case clause matched", - { values: [list] } - ); - } - } -} - -function do_values(map) { - let list_of_pairs = (() => { - let _pipe = map; - return to_list(_pipe); - })(); - return do_values_acc(list_of_pairs, toList([])); -} - -export function values(map) { - return do_values(map); -} - -function insert_taken(loop$map, loop$desired_keys, loop$acc) { - while (true) { - let map = loop$map; - let desired_keys = loop$desired_keys; - let acc = loop$acc; - let insert$1 = (taken, key) => { - let $ = get(map, key); - if ($.isOk()) { - let value = $[0]; - return insert(taken, key, value); - } else { - return taken; - } - }; - if (desired_keys.hasLength(0)) { - return acc; - } else if (desired_keys.atLeastLength(1)) { - let x = desired_keys.head; - let xs = desired_keys.tail; - loop$map = map; - loop$desired_keys = xs; - loop$acc = insert$1(acc, x); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 411, - "insert_taken", - "No case clause matched", - { values: [desired_keys] } - ); - } - } -} - -function do_take(desired_keys, map) { - return insert_taken(map, desired_keys, new$()); -} - -export function take(map, desired_keys) { - return do_take(desired_keys, map); -} - -function fold_inserts(loop$new_entries, loop$map) { - while (true) { - let new_entries = loop$new_entries; - let map = loop$map; - if (new_entries.hasLength(0)) { - return map; - } else if (new_entries.atLeastLength(1)) { - let x = new_entries.head; - let xs = new_entries.tail; - loop$new_entries = xs; - loop$map = insert_pair(map, x); - } else { - throw makeError( - "case_no_match", - "gleam/map", - 451, - "fold_inserts", - "No case clause matched", - { values: [new_entries] } - ); - } - } -} - -function do_merge(map, new_entries) { - let _pipe = new_entries; - let _pipe$1 = to_list(_pipe); - return fold_inserts(_pipe$1, map); -} - -export function merge(map, new_entries) { - return do_merge(map, new_entries); -} - -export function drop(loop$map, loop$disallowed_keys) { - while (true) { - let map = loop$map; - let disallowed_keys = loop$disallowed_keys; - if (disallowed_keys.hasLength(0)) { - return map; - } else if (disallowed_keys.atLeastLength(1)) { - let x = disallowed_keys.head; - let xs = disallowed_keys.tail; - loop$map = delete$(map, x); - loop$disallowed_keys = xs; - } else { - throw makeError( - "case_no_match", - "gleam/map", - 514, - "drop", - "No case clause matched", - { values: [disallowed_keys] } - ); - } - } -} diff --git a/aoc2023/build/packages/gleam.lock b/aoc2023/build/packages/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/packages/gleam_community_ansi/LICENCE b/aoc2023/build/packages/gleam_community_ansi/LICENCE deleted file mode 100644 index a84f0ec..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/LICENCE +++ /dev/null @@ -1,190 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2023 Gleam Community Contributors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_ansi/README.md b/aoc2023/build/packages/gleam_community_ansi/README.md deleted file mode 100644 index 90ab0d5..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# gleam-community/ansi - -Format text with ANSI escape sequences. - -[![Package Version](https://img.shields.io/hexpm/v/gleam_community_ansi)](https://hex.pm/packages/gleam_community_ansi) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_ansi/) - -✨ This project is written in _pure Gleam_ so you can use it anywhere Gleam runs: -Erlang, Elixir, Node, Deno, even [some browsers](https://bit.ly/devtools-console-ansi-support)! - ---- - -## Quickstart - -```gleam -import gleam/io -import gleam_community/ansi - -pub fn main() { - let greeting = "Hello, " <> ansi.pink("world") <> "!" - - greeting - |> ansi.bg_white - |> io.println -} - -``` - -## Installation - -`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_ansi) -with the prefix `gleam_community_`. You can add them to your Gleam projects directly: - -```sh -gleam add gleam_community_ansi -``` - -The docs can be found over at [hexdocs.pm](https://hexdocs.pm/gleam_community_ansi). - -## ANSI-what? - -ANSI escape sequences date back to the 70s as a standard way to format text on -various video text terminals. Since then they have been adopted by many software -terminal emulators and platforms, including some Web browsers, and are a simple -way to format text without platform-specific APIs. - -The point of this package is to abstract the specific codes away and give you an -easy-to-understand API for formatting and colouring terminal text. Still, here is -a quick couple of examples of what's happening under the hood. - -You can copy these examples straight into your terminal to see them in action! - -- Colour text yellow: - - ```shell - $ echo "\e[33mhello" - ``` - -- Colour the background pink: - - ```shell - $ echo "\e[45mhello" - ``` - -- Render text italic: - - ```shell - $ echo "\e[3mhello\e[23m" - ``` - -As you can see, the escape sequences are a bit obscure. Sure, you could hard code -them, or you could use this package! diff --git a/aoc2023/build/packages/gleam_community_ansi/gleam.toml b/aoc2023/build/packages/gleam_community_ansi/gleam.toml deleted file mode 100644 index 5da1f7e..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/gleam.toml +++ /dev/null @@ -1,13 +0,0 @@ -name = "gleam_community_ansi" -version = "1.2.0" -licences = ["Apache-2.0"] -description = "ANSI colours, formatting, and control codes" -repository = { type = "github", user = "gleam-community", repo = "ansi" } -gleam = ">= 0.32.0" - -[dependencies] -gleam_stdlib = "~> 0.32" -gleam_community_colour = "~> 1.2" - -[dev-dependencies] -gleeunit = "~> 0.11" diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam deleted file mode 100644 index a542dda..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community/ansi.gleam +++ /dev/null @@ -1,2317 +0,0 @@ -//// -//// - **Text style** -//// - [`bold`](#bold) -//// - [`italic`](#italic) -//// - [`underline`](#underline) -//// - [`strikethrough`](#strikethrough) -//// - [`inverse`](#inverse) -//// - [`dim`](#dim) -//// - [`hidden`](#hidden) -//// - [`reset`](#reset) -//// - **Text colour** -//// - [`black`](#black) -//// - [`red`](#red) -//// - [`green`](#green) -//// - [`yellow`](#yellow) -//// - [`blue`](#blue) -//// - [`magenta`](#magenta) -//// - [`cyan`](#cyan) -//// - [`white`](#white) -//// - [`pink`](#pink) -//// - [`grey`](#grey) -//// - [`gray`](#gray) -//// - [`bright_black`](#bright_black) -//// - [`bright_red`](#bright_red) -//// - [`bright_green`](#bright_green) -//// - [`bright_yellow`](#bright_yellow) -//// - [`bright_blue`](#bright_blue) -//// - [`bright_magenta`](#bright_magenta) -//// - [`bright_cyan`](#bright_cyan) -//// - [`bright_white`](#bright_white) -//// - [`hex`](#hex) -//// - [`colour`](#colour) -//// - [`color`](#color) -//// - **Background colour** -//// - [`bg_black`](#bg_black) -//// - [`bg_red`](#bg_red) -//// - [`bg_green`](#bg_green) -//// - [`bg_yellow`](#bg_yellow) -//// - [`bg_blue`](#bg_blue) -//// - [`bg_magenta`](#bg_magenta) -//// - [`bg_cyan`](#bg_cyan) -//// - [`bg_white`](#bg_white) -//// - [`bg_pink`](#bg_pink) -//// - [`bg_bright_black`](#bg_bright_black) -//// - [`bg_bright_red`](#bg_bright_red) -//// - [`bg_bright_green`](#bg_bright_green) -//// - [`bg_bright_yellow`](#bg_bright_yellow) -//// - [`bg_bright_blue`](#bg_bright_blue) -//// - [`bg_bright_magenta`](#bg_bright_magenta) -//// - [`bg_bright_cyan`](#bg_bright_cyan) -//// - [`bg_bright_white`](#bg_bright_white) -//// - [`bg_hex`](#bg_hex) -//// - [`bg_colour`](#bg_colour) -//// - [`bg_color`](#bg_color) -//// -//// --- -//// -//// This package was heavily inspired by the `colours` module in the Deno standard -//// library. The original source code can be found -//// here. -//// -////
-//// The license of that package is produced below: -//// -//// -//// > MIT License -//// -//// > Copyright 2018-2022 the Deno authors. -//// -//// > Permission is hereby granted, free of charge, to any person obtaining a copy -//// of this software and associated documentation files (the "Software"), to deal -//// in the Software without restriction, including without limitation the rights -//// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//// copies of the Software, and to permit persons to whom the Software is -//// furnished to do so, subject to the following conditions: -//// -//// > The above copyright notice and this permission notice shall be included in all -//// copies or substantial portions of the Software. -////
-//// - -// Just in case we decide in the future to no longer include the above reference -// and license, this package was initially a port of the Deno `colours` module: -// -// https://deno.land/std@0.167.0/fmt/colours.ts -// - -// This seems like a really handy reference if/when we want to expand this beyond -// formatting escape sequences: -// -// https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797 -// - -// IMPORTS -------------------------------------------------------------------- - -import gleam/int -import gleam/list -import gleam/string -import gleam_community/colour.{type Colour} as gc_colour - -// CONSTS --------------------------------------------------------------------- - -const asci_escape_character = "" - -// TYPES ---------------------------------------------------------------------- - -type Code { - Code(open: String, close: String, regexp: String) -} - -// UTILITY -------------------------------------------------------------------- - -/// Builds colour code -fn code(open: List(Int), close: Int) -> Code { - let close_str = int.to_string(close) - let open_strs = list.map(open, int.to_string) - - Code( - open: asci_escape_character <> "[" <> string.join(open_strs, ";") <> "m", - close: asci_escape_character <> "[" <> close_str <> "m", - regexp: asci_escape_character <> "[" <> close_str <> "m", - ) -} - -/// Applies colour and background based on colour code and its associated text -fn run(text: String, code: Code) -> String { - code.open <> string.replace(text, code.regexp, code.open) <> code.close -} - -// STYLES --------------------------------------------------------------------- - -/// Reset the text modified -pub fn reset(text: String) -> String { - run(text, code([0], 0)) -} - -/// Style the given text bold. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bold("lucy") -/// // => "\x1B[1mlucy\x1B[22m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[22m"` added to the string. This is the escape code -/// for the "default" bold/dim style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn bold(text: String) -> String { - run(text, code([1], 22)) -} - -/// Style the given text's colour to be dimmer. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("lucy") -/// // => "\x1B[2mlucy\x1B[22m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[22m"` added to the string. This is the escape code -/// for the "default" bold/dim style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn dim(text: String) -> String { - run(text, code([2], 22)) -} - -/// Style the given text italic. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.italic("lucy") -/// // => "\x1B[3mlucy\x1B[23m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[23m"` added to the string. This is the escape code -/// for the "default" italic style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.underline("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be underlined but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn italic(text: String) -> String { - run(text, code([3], 23)) -} - -/// Style the given text's colour to be dimmer. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.underline("lucy") -/// // => "\x1B[4mlucy\x1B[24m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[24m"` added to the string. This is the escape code -/// for the "default" underline style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn underline(text: String) -> String { - run(text, code([4], 24)) -} - -/// Inverse the given text's colour, and background colour. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.inverse("lucy") -/// // => "\x1B[7mlucy\x1B[27m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[27m"` added to the string. This is the escape code -/// for the "default" inverse style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn inverse(text: String) -> String { - run(text, code([7], 27)) -} - -/// Style the given text to be hidden. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.hidden("lucy") -/// // => "\x1B[8mlucy\x1B[28m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[28m"` added to the string. This is the escape code -/// for the "default" hidden style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn hidden(text: String) -> String { - run(text, code([8], 28)) -} - -/// Style the given text to be striked through. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.strikethrough("lucy") -/// // => "\x1B[9mlucy\x1B[29m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[29m"` added to the string. This is the escape code -/// for the "default" strikethrough style of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// style, it will use both the outter style and the inner style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.dim("Isn't " <> ansi.bold("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be dim but the text "fun?" will be -/// both underlined, *and* bold! -///
-/// -/// -/// -pub fn strikethrough(text: String) -> String { - run(text, code([9], 29)) -} - -// FOREGROUND ----------------------------------------------------------------- - -/// Colour the given text black. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.black("lucy") -/// // => "\x1B[30mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn black(text: String) -> String { - run(text, code([30], 39)) -} - -/// Colour the given text red. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.red("lucy") -/// // => "\x1B[31mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn red(text: String) -> String { - run(text, code([31], 39)) -} - -/// Colour the given text green. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.green("lucy") -/// // => "\x1B[32mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn green(text: String) -> String { - run(text, code([32], 39)) -} - -/// Colour the given text yellow. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("lucy") -/// // => "\x1B[33mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn yellow(text: String) -> String { - run(text, code([33], 39)) -} - -/// Colour the given text blue. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.blue("lucy") -/// // => "\x1B[34mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn blue(text: String) -> String { - run(text, code([34], 39)) -} - -/// Colour the given text magenta. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.magenta("lucy") -/// // => "\x1B[35mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn magenta(text: String) -> String { - run(text, code([35], 39)) -} - -/// Colour the given text cyan. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.cyan("lucy") -/// // => "\x1B[36mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn cyan(text: String) -> String { - run(text, code([36], 39)) -} - -/// Colour the given text white. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.white("lucy") -/// // => "\x1B[37mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn white(text: String) -> String { - run(text, code([37], 39)) -} - -/// Colour the given text gray. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.gray("lucy") -/// // => "\x1B[90mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn grey(text: String) -> String { - bright_black(text) -} - -/// This is an alias for [`grey`](#grey) for those who prefer the American English -/// spelling. -/// -pub fn gray(text: String) -> String { - bright_black(text) -} - -/// Colour the given text bright black. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bright_black("lucy") -/// // => "\x1B[90mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_black(text: String) -> String { - run(text, code([90], 39)) -} - -/// Colour the given text bright red. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bright_red("lucy") -/// // => "\x1B[91mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_red(text: String) -> String { - run(text, code([91], 39)) -} - -/// Colour the given text bright green. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_green("lucy") -/// // => "\x1B[92mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_green(text: String) -> String { - run(text, code([92], 39)) -} - -/// Colour the given text bright yellow. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_yellow("lucy") -/// // => "\x1B[93mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_yellow(text: String) -> String { - run(text, code([93], 39)) -} - -/// Colour the given text bright blue. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_blue("lucy") -/// // => "\x1B[94mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_blue(text: String) -> String { - run(text, code([94], 39)) -} - -/// Colour the given text bright gremagentaen. This should increase the luminosity -/// of the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_magenta("lucy") -/// // => "\x1B[95mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_magenta(text: String) -> String { - run(text, code([95], 39)) -} - -/// Colour the given text bright cyan. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_cyan("lucy") -/// // => "\x1B[96mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_cyan(text: String) -> String { - run(text, code([96], 39)) -} - -/// Colour the given text bright white. This should increase the luminosity of -/// the base colour, but some terminals will interpret this as bold instead. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// ansi.bright_white("lucy") -/// // => "\x1B[97mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bright_white(text: String) -> String { - run(text, code([97], 39)) -} - -/// Colour the given text pink. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.pink("lucy") -/// // => "\x1B[38;2;255;175;243mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[39m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn pink(text: String) -> String { - hex(text, 0xffaff3) -} - -/// Colour the given text the given colour represented by a hex `Int`. -/// -/// The given hex Int can be any valid [shorthand hexadecimal form](https://en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form). -/// -/// ❗️ Note that if supplied hex Int is less than 0 or larger than 0xfffff the -/// colour will be set to black and white respectively. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.hex("lucy", 0xffaff3) -/// // => "\x1B[38;2;255;175;243mlucy\x1B[39m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn hex(text: String, colour: Int) -> String { - let colour = int.clamp(colour, max: 0xffffff, min: 0x0) - run( - text, - code( - [ - 38, - 2, - int.bitwise_shift_right(colour, 16) - |> int.bitwise_and(0xff), - int.bitwise_shift_right(colour, 8) - |> int.bitwise_and(0xff), - int.bitwise_and(colour, 0xff), - ], - 39, - ), - ) -} - -/// Colour the given text the given colour represented by a `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// import gleam_community/colour.{Colour} -/// -/// fn example() { -/// let pink = colour.from_hsl(0.8583, 1.0, 0,84) -/// ansi.colour("lucy", pink) -/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn colour(text: String, colour: Colour) -> String { - let hex_colour = gc_colour.to_rgb_hex(colour) - hex(text, hex_colour) -} - -/// This is an alias for [`colour`](#colour) for those who prefer the American English -/// spelling. -/// -pub fn color(text: String, color: Colour) -> String { - colour(text, color) -} - -// BACKGROUND ----------------------------------------------------------------- - -/// Colour the given text's background black. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_black("lucy") -/// // => "\x1B[40mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_black(text: String) -> String { - run(text, code([40], 49)) -} - -/// Colour the given text's background red. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_red("lucy") -/// // => "\x1B[41mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_red(text: String) -> String { - run(text, code([41], 49)) -} - -/// Colour the given text's background green. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_green("lucy") -/// // => "\x1B[42mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_green(text: String) -> String { - run(text, code([42], 49)) -} - -/// Colour the given text's background yellow. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_yellow("lucy") -/// // => "\x1B[43mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_yellow(text: String) -> String { - run(text, code([43], 49)) -} - -/// Colour the given text's background blue. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_blue("lucy") -/// // => "\x1B[44mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_blue(text: String) -> String { - run(text, code([44], 49)) -} - -/// Colour the given text's background magenta. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_magenta("lucy") -/// // => "\x1B[45mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_magenta(text: String) -> String { - run(text, code([45], 49)) -} - -/// Colour the given text's background cyan. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_cyan("lucy") -/// // => "\x1B[46mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_cyan(text: String) -> String { - run(text, code([46], 49)) -} - -/// Colour the given text's background white. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_white("lucy") -/// // => "\x1B[47mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_white(text: String) -> String { - run(text, code([47], 49)) -} - -/// Colour the given text's background bright black. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_black("lucy") -/// // => "\x1B[100mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_black(text: String) -> String { - run(text, code([100], 49)) -} - -/// Colour the given text's background bright red. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_red("lucy") -/// // => "\x1B[101mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_red(text: String) -> String { - run(text, code([101], 49)) -} - -/// Colour the given text's background bright green. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_green("lucy") -/// // => "\x1B[102mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_green(text: String) -> String { - run(text, code([102], 49)) -} - -/// Colour the given text's background bright yellow. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_yellow("lucy") -/// // => "\x1B[103mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_yellow(text: String) -> String { - run(text, code([103], 49)) -} - -/// Colour the given text's background bright blue. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_blue("lucy") -/// // => "\x1B[104mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_blue(text: String) -> String { - run(text, code([104], 49)) -} - -/// Colour the given text's background bright magenta. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_magenta("lucy") -/// // => "\x1B[105mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_magenta(text: String) -> String { - run(text, code([105], 49)) -} - -/// Colour the given text's background bright cyan. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_cyan("lucy") -/// // => "\x1B[106mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_cyan(text: String) -> String { - run(text, code([106], 49)) -} - -/// Colour the given text's background bright white. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_bright_white("lucy") -/// // => "\x1B[107mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_bright_white(text: String) -> String { - run(text, code([107], 49)) -} - -/// Colour the given text's background pink. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.bg_pink("lucy") -/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_pink(text: String) -> String { - bg_hex(text, 0xffaff3) -} - -/// Colour the given text's background the given colour represented by a hex `Int`. -/// -/// The given hex Int can be any valid [shorthand hexadecimal form](https://en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form). -/// -/// ❗️ Note that if supplied hex Int is less than 0 or larger than 0xfffff the -/// colour will be set to black and white respectively. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.hex("lucy", 0xffaff3) -/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_hex(text: String, colour: Int) -> String { - run( - text, - code( - [ - 48, - 2, - int.bitwise_shift_right(colour, 16) - |> int.bitwise_and(0xff), - int.bitwise_shift_right(colour, 8) - |> int.bitwise_and(0xff), - int.bitwise_and(colour, 0xff), - ], - 49, - ), - ) -} - -/// Colour the given text's background with the given colour represented by a `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// import gleam_community/ansi -/// import gleam_community/colour.{Colour} -/// -/// fn example() { -/// let pink = colour.from_hsl(0.8583, 1.0, 0,84) -/// ansi.bg_colour("lucy", pink) -/// // => "\x1B[48;2;255;175;243mlucy\x1B[49m" -/// } -/// ``` -/// -/// ❗️ Note the trailing `"\x1B[49m"` added to the string. This is the escape code -/// for the "default" colour of the terminal. This means text you write after -/// this will revert back to default. -/// -/// ✨ `gleam_community/ansi` is smart about nested styles; instead of using the default -/// colour, it will use the colour of the outter style. -/// -/// ```gleam -/// import gleam_community/ansi -/// -/// fn example() { -/// ansi.yellow("Isn't " <> ansi.pink("Gleam") <> " fun?") -/// } -/// ``` -/// -/// In this example, the text "Gleam" will be pink but the text "fun?" will be -/// yellow, *not* the default colour! -///
-/// -/// -/// -pub fn bg_colour(text: String, colour: Colour) -> String { - let hex_colour = gc_colour.to_rgb_hex(colour) - bg_hex(text, hex_colour) -} - -/// This is an alias for [`bg_colour`](#bg_colour) for those who prefer the American English -/// spelling. -/// -pub fn bg_color(text: String, colour: Colour) -> String { - bg_colour(text, colour) -} diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl deleted file mode 100644 index 8b7a4c9..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community@ansi.erl +++ /dev/null @@ -1,263 +0,0 @@ --module(gleam_community@ansi). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([reset/1, bold/1, dim/1, italic/1, underline/1, inverse/1, hidden/1, strikethrough/1, black/1, red/1, green/1, yellow/1, blue/1, magenta/1, cyan/1, white/1, bright_black/1, grey/1, gray/1, bright_red/1, bright_green/1, bright_yellow/1, bright_blue/1, bright_magenta/1, bright_cyan/1, bright_white/1, hex/2, pink/1, colour/2, color/2, bg_black/1, bg_red/1, bg_green/1, bg_yellow/1, bg_blue/1, bg_magenta/1, bg_cyan/1, bg_white/1, bg_bright_black/1, bg_bright_red/1, bg_bright_green/1, bg_bright_yellow/1, bg_bright_blue/1, bg_bright_magenta/1, bg_bright_cyan/1, bg_bright_white/1, bg_hex/2, bg_pink/1, bg_colour/2, bg_color/2]). --export_type([code/0]). - --type code() :: {code, binary(), binary(), binary()}. - --spec code(list(integer()), integer()) -> code(). -code(Open, Close) -> - Close_str = gleam@int:to_string(Close), - Open_strs = gleam@list:map(Open, fun gleam@int:to_string/1), - {code, - <<<<<<""/utf8, "["/utf8>>/binary, - (gleam@string:join(Open_strs, <<";"/utf8>>))/binary>>/binary, - "m"/utf8>>, - <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>, - <<<<<<""/utf8, "["/utf8>>/binary, Close_str/binary>>/binary, "m"/utf8>>}. - --spec run(binary(), code()) -> binary(). -run(Text, Code) -> - <<<<(erlang:element(2, Code))/binary, - (gleam@string:replace( - Text, - erlang:element(4, Code), - erlang:element(2, Code) - ))/binary>>/binary, - (erlang:element(3, Code))/binary>>. - --spec reset(binary()) -> binary(). -reset(Text) -> - run(Text, code([0], 0)). - --spec bold(binary()) -> binary(). -bold(Text) -> - run(Text, code([1], 22)). - --spec dim(binary()) -> binary(). -dim(Text) -> - run(Text, code([2], 22)). - --spec italic(binary()) -> binary(). -italic(Text) -> - run(Text, code([3], 23)). - --spec underline(binary()) -> binary(). -underline(Text) -> - run(Text, code([4], 24)). - --spec inverse(binary()) -> binary(). -inverse(Text) -> - run(Text, code([7], 27)). - --spec hidden(binary()) -> binary(). -hidden(Text) -> - run(Text, code([8], 28)). - --spec strikethrough(binary()) -> binary(). -strikethrough(Text) -> - run(Text, code([9], 29)). - --spec black(binary()) -> binary(). -black(Text) -> - run(Text, code([30], 39)). - --spec red(binary()) -> binary(). -red(Text) -> - run(Text, code([31], 39)). - --spec green(binary()) -> binary(). -green(Text) -> - run(Text, code([32], 39)). - --spec yellow(binary()) -> binary(). -yellow(Text) -> - run(Text, code([33], 39)). - --spec blue(binary()) -> binary(). -blue(Text) -> - run(Text, code([34], 39)). - --spec magenta(binary()) -> binary(). -magenta(Text) -> - run(Text, code([35], 39)). - --spec cyan(binary()) -> binary(). -cyan(Text) -> - run(Text, code([36], 39)). - --spec white(binary()) -> binary(). -white(Text) -> - run(Text, code([37], 39)). - --spec bright_black(binary()) -> binary(). -bright_black(Text) -> - run(Text, code([90], 39)). - --spec grey(binary()) -> binary(). -grey(Text) -> - bright_black(Text). - --spec gray(binary()) -> binary(). -gray(Text) -> - bright_black(Text). - --spec bright_red(binary()) -> binary(). -bright_red(Text) -> - run(Text, code([91], 39)). - --spec bright_green(binary()) -> binary(). -bright_green(Text) -> - run(Text, code([92], 39)). - --spec bright_yellow(binary()) -> binary(). -bright_yellow(Text) -> - run(Text, code([93], 39)). - --spec bright_blue(binary()) -> binary(). -bright_blue(Text) -> - run(Text, code([94], 39)). - --spec bright_magenta(binary()) -> binary(). -bright_magenta(Text) -> - run(Text, code([95], 39)). - --spec bright_cyan(binary()) -> binary(). -bright_cyan(Text) -> - run(Text, code([96], 39)). - --spec bright_white(binary()) -> binary(). -bright_white(Text) -> - run(Text, code([97], 39)). - --spec hex(binary(), integer()) -> binary(). -hex(Text, Colour) -> - Colour@1 = gleam@int:clamp(Colour, 16#0, 16#ffffff), - run( - Text, - code( - [38, - 2, - begin - _pipe = erlang:'bsr'(Colour@1, 16), - erlang:'band'(_pipe, 16#ff) - end, - begin - _pipe@1 = erlang:'bsr'(Colour@1, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - erlang:'band'(Colour@1, 16#ff)], - 39 - ) - ). - --spec pink(binary()) -> binary(). -pink(Text) -> - hex(Text, 16#ffaff3). - --spec colour(binary(), gleam_community@colour:colour()) -> binary(). -colour(Text, Colour) -> - Hex_colour = gleam_community@colour:to_rgb_hex(Colour), - hex(Text, Hex_colour). - --spec color(binary(), gleam_community@colour:colour()) -> binary(). -color(Text, Color) -> - colour(Text, Color). - --spec bg_black(binary()) -> binary(). -bg_black(Text) -> - run(Text, code([40], 49)). - --spec bg_red(binary()) -> binary(). -bg_red(Text) -> - run(Text, code([41], 49)). - --spec bg_green(binary()) -> binary(). -bg_green(Text) -> - run(Text, code([42], 49)). - --spec bg_yellow(binary()) -> binary(). -bg_yellow(Text) -> - run(Text, code([43], 49)). - --spec bg_blue(binary()) -> binary(). -bg_blue(Text) -> - run(Text, code([44], 49)). - --spec bg_magenta(binary()) -> binary(). -bg_magenta(Text) -> - run(Text, code([45], 49)). - --spec bg_cyan(binary()) -> binary(). -bg_cyan(Text) -> - run(Text, code([46], 49)). - --spec bg_white(binary()) -> binary(). -bg_white(Text) -> - run(Text, code([47], 49)). - --spec bg_bright_black(binary()) -> binary(). -bg_bright_black(Text) -> - run(Text, code([100], 49)). - --spec bg_bright_red(binary()) -> binary(). -bg_bright_red(Text) -> - run(Text, code([101], 49)). - --spec bg_bright_green(binary()) -> binary(). -bg_bright_green(Text) -> - run(Text, code([102], 49)). - --spec bg_bright_yellow(binary()) -> binary(). -bg_bright_yellow(Text) -> - run(Text, code([103], 49)). - --spec bg_bright_blue(binary()) -> binary(). -bg_bright_blue(Text) -> - run(Text, code([104], 49)). - --spec bg_bright_magenta(binary()) -> binary(). -bg_bright_magenta(Text) -> - run(Text, code([105], 49)). - --spec bg_bright_cyan(binary()) -> binary(). -bg_bright_cyan(Text) -> - run(Text, code([106], 49)). - --spec bg_bright_white(binary()) -> binary(). -bg_bright_white(Text) -> - run(Text, code([107], 49)). - --spec bg_hex(binary(), integer()) -> binary(). -bg_hex(Text, Colour) -> - run( - Text, - code( - [48, - 2, - begin - _pipe = erlang:'bsr'(Colour, 16), - erlang:'band'(_pipe, 16#ff) - end, - begin - _pipe@1 = erlang:'bsr'(Colour, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - erlang:'band'(Colour, 16#ff)], - 49 - ) - ). - --spec bg_pink(binary()) -> binary(). -bg_pink(Text) -> - bg_hex(Text, 16#ffaff3). - --spec bg_colour(binary(), gleam_community@colour:colour()) -> binary(). -bg_colour(Text, Colour) -> - Hex_colour = gleam_community@colour:to_rgb_hex(Colour), - bg_hex(Text, Hex_colour). - --spec bg_color(binary(), gleam_community@colour:colour()) -> binary(). -bg_color(Text, Colour) -> - bg_colour(Text, Colour). diff --git a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src b/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src deleted file mode 100644 index dfcfdc3..0000000 --- a/aoc2023/build/packages/gleam_community_ansi/src/gleam_community_ansi.app.src +++ /dev/null @@ -1,9 +0,0 @@ -{application, gleam_community_ansi, [ - {vsn, "1.2.0"}, - {applications, [gleam_community_colour, - gleam_stdlib, - gleeunit]}, - {description, "ANSI colours, formatting, and control codes"}, - {modules, [gleam_community@ansi]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_community_colour/LICENCE b/aoc2023/build/packages/gleam_community_colour/LICENCE deleted file mode 100644 index a84f0ec..0000000 --- a/aoc2023/build/packages/gleam_community_colour/LICENCE +++ /dev/null @@ -1,190 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2023 Gleam Community Contributors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_colour/README.md b/aoc2023/build/packages/gleam_community_colour/README.md deleted file mode 100644 index 0eccdd7..0000000 --- a/aoc2023/build/packages/gleam_community_colour/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# gleam-community/colour - -A package for a standard Colour type, conversions, and other utilities. - -[![Package Version](https://img.shields.io/hexpm/v/gleam_community_colour)](https://hex.pm/packages/gleam_community_colour) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_colour/) - -✨ This project is written in pure Gleam so you can use it anywhere Gleam runs: Erlang, Elixir, Node, Deno, and the browser! - ---- - -## Quickstart - -```gleam -import gleam_community/colour -import gleam_community/colour/accessibility - -pub fn main() { - let foreground = colour.from_hsl(h: 0.858, s: 1.0, l: 0.843) - - let background_options = [colour.light_grey, colour.dark_grey] - - let background = accessibility.maximum_contrast(foreground, background_options) -} -``` - -## Installation - -`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_colour) -with the prefix `gleam_community_`. You can add them to your Gleam projects directly: - -```sh -gleam add gleam_community_colour -``` - -The docs can be found over at [hexdocs.pm](https://hexdocs.pm/gleam_community_colour). diff --git a/aoc2023/build/packages/gleam_community_colour/gleam.toml b/aoc2023/build/packages/gleam_community_colour/gleam.toml deleted file mode 100644 index 07a81bf..0000000 --- a/aoc2023/build/packages/gleam_community_colour/gleam.toml +++ /dev/null @@ -1,11 +0,0 @@ -name = "gleam_community_colour" -version = "1.2.0" -licences = ["Apache-2.0"] -description = "Colour types, conversions, and other utilities" -repository = { type = "github", user = "gleam-community", repo = "colour" } - -[dependencies] -gleam_stdlib = "~> 0.32" - -[dev-dependencies] -gleeunit = "~> 0.11" diff --git a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl deleted file mode 100644 index 06116df..0000000 --- a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Hsla.hrl +++ /dev/null @@ -1 +0,0 @@ --record(hsla, {h :: float(), s :: float(), l :: float(), a :: float()}). diff --git a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl b/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl deleted file mode 100644 index fff139e..0000000 --- a/aoc2023/build/packages/gleam_community_colour/include/gleam_community@colour_Rgba.hrl +++ /dev/null @@ -1 +0,0 @@ --record(rgba, {r :: float(), g :: float(), b :: float(), a :: float()}). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam deleted file mode 100644 index 1f5872f..0000000 --- a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour.gleam +++ /dev/null @@ -1,1126 +0,0 @@ -//// -//// - **Types** -//// - [`Colour`](#Colour) -//// - [`Color`](#Color) -//// - **Constructors** -//// - [`from_rgb255`](#from_rgb255) -//// - [`from_rgb`](#from_rgb) -//// - [`from_rgba`](#from_rgba) -//// - [`from_hsl`](#from_hsl) -//// - [`from_hsla`](#from_hsla) -//// - [`from_rgb_hex`](#from_rgb_hex) -//// - [`from_rgba_hex`](#from_rgba_hex) -//// - [`from_rgb_hex_string`](#from_rgb_hex_string) -//// - [`from_rgba_hex_string`](#from_rgba_hex_string) -//// - **Conversions** -//// - [`to_rgba`](#to_rgba) -//// - [`to_hsla`](#hsla) -//// - [`to_css_rgba_string`](#to_css_rgba_string) -//// - [`to_rgba_hex_string`](#to_rgba_hex_string) -//// - [`to_rgb_hex_string`](#to_rgb_hex_string) -//// - [`to_rgba_hex`](#to_rgba_hex) -//// - [`to_rgb_hex`](#to_rgb_hex) -//// - **Colours** -//// - [`light_red`](#light_red) -//// - [`red`](#red) -//// - [`dark_red`](#dark_red) -//// - [`light_orange`](#light_orange) -//// - [`orange`](#orange) -//// - [`dark_orange`](#dark_orange) -//// - [`light_yellow`](#light_yellow) -//// - [`yellow`](#yellow) -//// - [`dark_yellow`](#dark_yellow) -//// - [`light_green`](#light_green) -//// - [`green`](#green) -//// - [`dark_green`](#dark_green) -//// - [`light_blue`](#light_blue) -//// - [`blue`](#blue) -//// - [`dark_blue`](#dark_blue) -//// - [`light_purple`](#light_purple) -//// - [`purple`](#purple) -//// - [`dark_purple`](#dark_purple) -//// - [`light_brown`](#light_brown) -//// - [`brown`](#brown) -//// - [`dark_brown`](#dark_brown) -//// - [`black`](#black) -//// - [`white`](#white) -//// - [`light_grey`](#light_grey) -//// - [`grey`](#grey) -//// - [`dark_grey`](#dark_grey) -//// - [`light_gray`](#light_gray) -//// - [`gray`](#gray) -//// - [`dark_gray`](#dark_gray) -//// - [`light_charcoal`](#light_charcoal) -//// - [`charcoal`](#charcoal) -//// - [`dark_charcoal`](#dark_charcoal) -//// - [`pink`](#pink) -//// -//// --- -//// -//// This package was heavily inspired by the `elm-color` module. -//// The original source code can be found -//// here. -//// -////
-//// The license of that package is produced below: -//// -//// -//// > MIT License -//// -//// > Copyright 2018 Aaron VonderHaar -//// -//// > Redistribution and use in source and binary forms, with or without modification, -//// are permitted provided that the following conditions are met: -//// -//// 1. Redistributions of source code must retain the above copyright notice, -//// this list of conditions and the following disclaimer. -//// -//// 2. Redistributions in binary form must reproduce the above copyright notice, -//// this list of conditions and the following disclaimer in the documentation -//// and/or other materials provided with the distribution. -//// -//// 3. Neither the name of the copyright holder nor the names of its contributors -//// may be used to endorse or promote products derived from this software without -//// specific prior written permission. -//// -//// > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -//// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -//// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -//// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -//// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -//// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -//// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -//// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -//// -//// > The above copyright notice and this permission notice shall be included in all -//// copies or substantial portions of the Software. -////
-//// - -// Just in case we decide in the future to no longer include the above reference -// and license, this package was initially a port of the `elm-color` module: -// -// https://github.com/avh4/elm-color/ -// - -// IMPORTS -------------------------------------------------------------------- - -import gleam/int -import gleam/float -import gleam/result -import gleam/string -import gleam/list - -// TYPES ---------------------------------------------------------------------- - -/// A representation of a colour that can be converted to RGBA or HSLA format. -/// -/// -///
-/// -pub opaque type Colour { - Rgba(r: Float, g: Float, b: Float, a: Float) - Hsla(h: Float, s: Float, l: Float, a: Float) -} - -/// Type alias for `Colour` -/// -/// -///
-/// -pub type Color = - Colour - -// UTILITY -------------------------------------------------------------------- - -fn valid_colour_value(c: Float) -> Result(Float, Nil) { - case c >. 1.0 || c <. 0.0 { - True -> Error(Nil) - False -> Ok(c) - } -} - -fn hue_to_rgb(hue: Float, m1: Float, m2: Float) -> Float { - let h = case hue { - _ if hue <. 0.0 -> hue +. 1.0 - _ if hue >. 1.0 -> hue -. 1.0 - _ -> hue - } - - let h_t_6 = h *. 6.0 - let h_t_2 = h *. 2.0 - let h_t_3 = h *. 3.0 - - case h { - _ if h_t_6 <. 1.0 -> m1 +. { m2 -. m1 } *. h *. 6.0 - _ if h_t_2 <. 1.0 -> m2 - _ if h_t_3 <. 2.0 -> m1 +. { m2 -. m1 } *. { 2.0 /. 3.0 -. h } *. 6.0 - _ -> m1 - } -} - -fn hex_string_to_int(hex_string: String) -> Result(Int, Nil) { - let hex = case hex_string { - "#" <> hex_number -> hex_number - "0x" <> hex_number -> hex_number - _ -> hex_string - } - - hex - |> string.lowercase() - |> string.to_graphemes() - |> list.reverse() - |> list.index_fold( - Ok(0), - fn(total, char, index) { - case total { - Error(Nil) -> Error(Nil) - Ok(v) -> { - use num <- result.then(case char { - "a" -> Ok(10) - "b" -> Ok(11) - "c" -> Ok(12) - "d" -> Ok(13) - "e" -> Ok(14) - "f" -> Ok(15) - _ -> int.parse(char) - }) - use base <- result.then(int.power(16, int.to_float(index))) - Ok(v + float.round(int.to_float(num) *. base)) - } - } - }, - ) -} - -fn hsla_to_rgba( - h: Float, - s: Float, - l: Float, - a: Float, -) -> #(Float, Float, Float, Float) { - let m2 = case l <=. 0.5 { - True -> l *. { s +. 1.0 } - False -> l +. s -. l *. s - } - - let m1 = l *. 2.0 -. m2 - - let r = hue_to_rgb(h +. 1.0 /. 3.0, m1, m2) - let g = hue_to_rgb(h, m1, m2) - let b = hue_to_rgb(h -. 1.0 /. 3.0, m1, m2) - - #(r, g, b, a) -} - -fn rgba_to_hsla( - r: Float, - g: Float, - b: Float, - a: Float, -) -> #(Float, Float, Float, Float) { - let min_colour = float.min(r, float.min(g, b)) - - let max_colour = float.max(r, float.max(g, b)) - - let h1 = case True { - _ if max_colour == r -> float.divide(g -. b, max_colour -. min_colour) - _ if max_colour == g -> - float.divide(b -. r, max_colour -. min_colour) - |> result.then(fn(d) { Ok(2.0 +. d) }) - _ -> - float.divide(r -. g, max_colour -. min_colour) - |> result.then(fn(d) { Ok(4.0 +. d) }) - } - - let h2 = case h1 { - Ok(v) -> Ok(v *. { 1.0 /. 6.0 }) - _ -> h1 - } - - let h3 = case h2 { - Ok(v) if v <. 0.0 -> v +. 1.0 - Ok(v) -> v - _ -> 0.0 - } - - let l = { min_colour +. max_colour } /. 2.0 - - let s = case True { - _ if min_colour == max_colour -> 0.0 - _ if l <. 0.5 -> - { max_colour -. min_colour } /. { max_colour +. min_colour } - _ -> { max_colour -. min_colour } /. { 2.0 -. max_colour -. min_colour } - } - - #(h3, s, l, a) -} - -// CONSTRUCTORS --------------------------------------------------------------- - -/// Returns a `Result(Colour)` created from the given 8 bit RGB values. -/// -/// Returns `Error(Nil)` if the supplied RGB values are greater than 255 or less than 0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb255(255, 0, 0) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgb255(r red: Int, g green: Int, b blue: Int) -> Result(Colour, Nil) { - use r <- result.then( - red - |> int.to_float() - |> float.divide(255.0) - |> result.then(valid_colour_value), - ) - - use g <- result.then( - green - |> int.to_float() - |> float.divide(255.0) - |> result.then(valid_colour_value), - ) - - use b <- result.then( - blue - |> int.to_float() - |> float.divide(255.0) - |> result.then(valid_colour_value), - ) - - Ok(Rgba(r: r, g: g, b: b, a: 1.0)) -} - -/// Returns `Result(Colour)` created from the given RGB values. -/// -/// If the supplied RGB values are greater than 1.0 or less than 0.0 returns `Error(Nil)` -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb(1.0, 0.0, 0.0) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgb( - r red: Float, - g green: Float, - b blue: Float, -) -> Result(Colour, Nil) { - use r <- result.then(valid_colour_value(red)) - use g <- result.then(valid_colour_value(green)) - use b <- result.then(valid_colour_value(blue)) - - Ok(Rgba(r: r, g: g, b: b, a: 1.0)) -} - -/// Returns `Result(Colour)` created from the given RGBA values. -/// -/// Returns `Error(Nil)` if the supplied RGBA values are greater than 1.0 or less than 0.0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red_half_opacity) = from_rbga(1.0, 0.0, 0.0, 0.5) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgba( - r red: Float, - g green: Float, - b blue: Float, - a alpha: Float, -) -> Result(Colour, Nil) { - use r <- result.then(valid_colour_value(red)) - use g <- result.then(valid_colour_value(green)) - use b <- result.then(valid_colour_value(blue)) - use a <- result.then(valid_colour_value(alpha)) - - Ok(Rgba(r: r, g: g, b: b, a: a)) -} - -/// Returns `Result(Colour)` created from the given HSLA values. -/// -/// Returns `Error(Nil)`f the supplied HSLA values are greater than 1.0 or less than 0.0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red_half_opacity) = from_hsla(0.0, 1.0, 0.5, 0.5) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_hsla( - h hue: Float, - s saturation: Float, - l lightness: Float, - a alpha: Float, -) -> Result(Colour, Nil) { - use h <- result.then(valid_colour_value(hue)) - use s <- result.then(valid_colour_value(saturation)) - use l <- result.then(valid_colour_value(lightness)) - use a <- result.then(valid_colour_value(alpha)) - - Ok(Hsla(h: h, s: s, l: l, a: a)) -} - -/// Returns `Result(Colour)` created from the given HSL values. -/// -/// Returns `Error(Nil)` if the supplied HSL values are greater than 1.0 or less than 0.0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_hsla(0.0, 1.0, 0.5) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_hsl( - h hue: Float, - s saturation: Float, - l lightness: Float, -) -> Result(Colour, Nil) { - from_hsla(hue, saturation, lightness, 1.0) -} - -/// Returns a `Result(Colour)` created from the given hex `Int`. -/// -/// Returns `Error(Nil)` if the supplied hex `Int is greater than 0xffffff or less than 0x0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb_hex(0xff0000) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgb_hex(hex: Int) -> Result(Colour, Nil) { - case hex > 0xffffff || hex < 0 { - True -> Error(Nil) - False -> { - let r = - int.bitwise_shift_right(hex, 16) - |> int.bitwise_and(0xff) - let g = - int.bitwise_shift_right(hex, 8) - |> int.bitwise_and(0xff) - let b = int.bitwise_and(hex, 0xff) - from_rgb255(r, g, b) - } - } -} - -/// Returns a `Result(Colour)` created from the given RGB hex `String`. -/// -/// Returns `Error(Nil)` if the supplied hex `String` is invalid, or greater than `"#ffffff" or less than `"#0"` -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb_hex_string("#ff0000") -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgb_hex_string(hex_string: String) -> Result(Colour, Nil) { - use hex_int <- result.then(hex_string_to_int(hex_string)) - - from_rgb_hex(hex_int) -} - -/// Returns a `Result(Colour)` created from the given RGBA hex `String`. -/// -/// Returns `Error(Nil)` if the supplied hex `String` is invalid, or greater than `"#ffffffff" or less than `"#0"` -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red_half_opacity) = from_rgba_hex_string("#ff00007f") -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgba_hex_string(hex_string: String) -> Result(Colour, Nil) { - use hex_int <- result.then(hex_string_to_int(hex_string)) - - from_rgba_hex(hex_int) -} - -/// Returns a `Result(Colour)` created from the given hex `Int`. -/// -/// Returns `Error(Nil)` if the supplied hex `Int is greater than 0xffffffff or less than 0x0. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red_half_opacity) = from_rgba_hex(0xff00007f) -/// } -/// ``` -///
-/// -/// -/// -pub fn from_rgba_hex(hex: Int) -> Result(Colour, Nil) { - case hex > 0xffffffff || hex < 0 { - True -> Error(Nil) - False -> { - // This won't fail because we are always dividing by 255.0 - let assert Ok(r) = - int.bitwise_shift_right(hex, 24) - |> int.bitwise_and(0xff) - |> int.to_float() - |> float.divide(255.0) - // This won't fail because we are always dividing by 255.0 - let assert Ok(g) = - int.bitwise_shift_right(hex, 16) - |> int.bitwise_and(0xff) - |> int.to_float() - |> float.divide(255.0) - // This won't fail because we are always dividing by 255.0 - let assert Ok(b) = - int.bitwise_shift_right(hex, 8) - |> int.bitwise_and(0xff) - |> int.to_float() - |> float.divide(255.0) - // This won't fail because we are always dividing by 255.0 - let assert Ok(a) = - int.bitwise_and(hex, 0xff) - |> int.to_float() - |> float.divide(255.0) - from_rgba(r, g, b, a) - } - } -} - -// CONVERSIONS ---------------------------------------------------------------- - -/// Returns `#(Float, Float, Float, Float)` representing the given `Colour`'s -/// R, G, B, and A values respectively. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb255(255, 0, 0) -/// let #(r, g, b, a) = to_rgba(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_rgba(colour: Colour) -> #(Float, Float, Float, Float) { - case colour { - Rgba(r, g, b, a) -> #(r, g, b, a) - Hsla(h, s, l, a) -> hsla_to_rgba(h, s, l, a) - } -} - -/// Returns `#(Float, Float, Float, Float)` representing the given `Colour`'s -/// H, S, L, and A values respectively. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb255(255, 0, 0) -/// let #(h, s, l, a) = to_hsla(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_hsla(colour: Colour) -> #(Float, Float, Float, Float) { - case colour { - Hsla(h, s, l, a) -> #(h, s, l, a) - Rgba(r, g, b, a) -> rgba_to_hsla(r, g, b, a) - } -} - -/// Returns an rgba formatted CSS `String` created from the given `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgb255(255, 0, 0) -/// let css_red = to_css_rgba_string(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_css_rgba_string(colour: Colour) -> String { - let #(r, g, b, a) = to_rgba(colour) - - let percent = fn(x: Float) -> Float { - // This won't fail because we are always dividing by 100.0 - let assert Ok(p) = - x - |> float.multiply(10_000.0) - |> float.round() - |> int.to_float() - |> float.divide(100.0) - - p - } - - let round_to = fn(x: Float) -> Float { - // This won't fail because we are always dividing by 1000.0 - let assert Ok(r) = - x - |> float.multiply(1000.0) - |> float.round() - |> int.to_float() - |> float.divide(1000.0) - - r - } - - string.join( - [ - "rgba(", - float.to_string(percent(r)) <> "%,", - float.to_string(percent(g)) <> "%,", - float.to_string(percent(b)) <> "%,", - float.to_string(round_to(a)), - ")", - ], - "", - ) -} - -/// Returns an rgba hex formatted `String` created from the given `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgba(1.0, 0.0, 0.0, 1.0) -/// let red_hex = to_rgba_hex_string(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_rgba_hex_string(colour: Colour) -> String { - to_rgba_hex(colour) - |> int.to_base16() -} - -/// Returns an rgb hex formatted `String` created from the given `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgba(255, 0, 0) -/// let red_hex = to_rgb_hex_string(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_rgb_hex_string(colour: Colour) -> String { - to_rgb_hex(colour) - |> int.to_base16() -} - -/// Returns an hex `Int` created from the given `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgba(1.0, 0.0, 0.0, 1.0) -/// let red_hex_int = to_rgba_hex(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_rgba_hex(colour: Colour) -> Int { - let #(r, g, b, a) = to_rgba(colour) - - let red = - r *. 255.0 - |> float.round() - |> int.bitwise_shift_left(24) - - let green = - g *. 255.0 - |> float.round() - |> int.bitwise_shift_left(16) - - let blue = - b *. 255.0 - |> float.round() - |> int.bitwise_shift_left(8) - - let alpha = - a *. 255.0 - |> float.round() - - red + green + blue + alpha -} - -/// Returns a rgb hex `Int` created from the given `Colour`. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// assert Ok(red) = from_rgba(255, 0, 0) -/// let red_hex_int = to_rgb_hex(red) -/// } -/// ``` -///
-/// -/// -/// -pub fn to_rgb_hex(colour: Colour) -> Int { - let #(r, g, b, _) = to_rgba(colour) - - let red = - r *. 255.0 - |> float.round() - |> int.bitwise_shift_left(16) - - let green = - g *. 255.0 - |> float.round() - |> int.bitwise_shift_left(8) - - let blue = - b *. 255.0 - |> float.round() - - red + green + blue -} - -// COLOURS -------------------------------------------------------------------- - -/// A `Colour` reprsenting the colour RGBA(239, 41, 41, 1.0) -pub const light_red = Rgba( - r: 0.9372549019607843, - g: 0.1607843137254902, - b: 0.1607843137254902, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(204, 0, 0, 1.0) -pub const red = Rgba(r: 0.8, g: 0.0, b: 0.0, a: 1.0) - -/// A `Colour` reprsenting the colour RGBA(164, 0, 0, 1.0) -pub const dark_red = Rgba(r: 0.6431372549019608, g: 0.0, b: 0.0, a: 1.0) - -/// A `Colour` reprsenting the colour RGBA(252, 175, 62, 1.0) -pub const light_orange = Rgba( - r: 0.9882352941176471, - g: 0.6862745098039216, - b: 0.24313725490196078, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(245, 121, 0, 1.0) -pub const orange = Rgba( - r: 0.9607843137254902, - g: 0.4745098039215686, - b: 0.0, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(206, 92, 0, 1.0) -pub const dark_orange = Rgba( - r: 0.807843137254902, - g: 0.3607843137254902, - b: 0.0, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(255, 233, 79, 1.0) -pub const light_yellow = Rgba( - r: 1.0, - g: 0.9137254901960784, - b: 0.30980392156862746, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(237, 212, 0, 1.0) -pub const yellow = Rgba( - r: 0.9294117647058824, - g: 0.8313725490196079, - b: 0.0, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(196, 160, 0, 1.0) -pub const dark_yellow = Rgba( - r: 0.7686274509803922, - g: 0.6274509803921569, - b: 0.0, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(138, 226, 52, 1.0) -pub const light_green = Rgba( - r: 0.5411764705882353, - g: 0.8862745098039215, - b: 0.20392156862745098, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(115, 210, 22, 1.0) -pub const green = Rgba( - r: 0.45098039215686275, - g: 0.8235294117647058, - b: 0.08627450980392157, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(78, 154, 6, 1.0) -pub const dark_green = Rgba( - r: 0.3058823529411765, - g: 0.6039215686274509, - b: 0.023529411764705882, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(114, 159, 207, 1.0) -pub const light_blue = Rgba( - r: 0.4470588235294118, - g: 0.6235294117647059, - b: 0.8117647058823529, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(52, 101, 164, 1.0) -pub const blue = Rgba( - r: 0.20392156862745098, - g: 0.396078431372549, - b: 0.6431372549019608, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(32, 74, 135, 1.0) -pub const dark_blue = Rgba( - r: 0.12549019607843137, - g: 0.2901960784313726, - b: 0.5294117647058824, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(173, 127, 168, 1.0) -pub const light_purple = Rgba( - r: 0.6784313725490196, - g: 0.4980392156862745, - b: 0.6588235294117647, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(117, 80, 123, 1.0) -pub const purple = Rgba( - r: 0.4588235294117647, - g: 0.3137254901960784, - b: 0.4823529411764706, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(92, 53, 102, 1.0) -pub const dark_purple = Rgba( - r: 0.3607843137254902, - g: 0.20784313725490197, - b: 0.4, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(233, 185, 110, 1.0) -pub const light_brown = Rgba( - r: 0.9137254901960784, - g: 0.7254901960784313, - b: 0.43137254901960786, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(193, 125, 17, 1.0) -pub const brown = Rgba( - r: 0.7568627450980392, - g: 0.49019607843137253, - b: 0.06666666666666667, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(143, 89, 2, 1.0) -pub const dark_brown = Rgba( - r: 0.5607843137254902, - g: 0.34901960784313724, - b: 0.00784313725490196, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(0, 0, 0, 1.0) -pub const black = Rgba(r: 0.0, g: 0.0, b: 0.0, a: 1.0) - -/// A `Colour` reprsenting the colour RGBA(255, 255, 255, 1.0) -pub const white = Rgba(r: 1.0, g: 1.0, b: 1.0, a: 1.0) - -/// A `Colour` reprsenting the colour RGBA(238, 238, 236, 1.0) -pub const light_grey = Rgba( - r: 0.9333333333333333, - g: 0.9333333333333333, - b: 0.9254901960784314, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(211, 215, 207, 1.0) -pub const grey = Rgba( - r: 0.8274509803921568, - g: 0.8431372549019608, - b: 0.8117647058823529, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(186, 189, 182, 1.0) -pub const dark_grey = Rgba( - r: 0.7294117647058823, - g: 0.7411764705882353, - b: 0.7137254901960784, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(238, 238, 236, 1.0) -pub const light_gray = Rgba( - r: 0.9333333333333333, - g: 0.9333333333333333, - b: 0.9254901960784314, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(211, 215, 207, 1.0) -pub const gray = Rgba( - r: 0.8274509803921568, - g: 0.8431372549019608, - b: 0.8117647058823529, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(186, 189, 182, 1.0) -pub const dark_gray = Rgba( - r: 0.7294117647058823, - g: 0.7411764705882353, - b: 0.7137254901960784, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(136, 138, 133, 1.0) -pub const light_charcoal = Rgba( - r: 0.5333333333333333, - g: 0.5411764705882353, - b: 0.5215686274509804, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(85, 87, 83, 1.0) -pub const charcoal = Rgba( - r: 0.3333333333333333, - g: 0.3411764705882353, - b: 0.3254901960784314, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(46, 52, 54, 1.0) -pub const dark_charcoal = Rgba( - r: 0.1803921568627451, - g: 0.20392156862745098, - b: 0.21176470588235294, - a: 1.0, -) - -/// A `Colour` reprsenting the colour RGBA(255, 175, 243, 1.0) -pub const pink = Rgba( - r: 1.0, - g: 0.6862745098039216, - b: 0.9529411764705882, - a: 1.0, -) diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam b/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam deleted file mode 100644 index 54f75e4..0000000 --- a/aoc2023/build/packages/gleam_community_colour/src/gleam_community/colour/accessibility.gleam +++ /dev/null @@ -1,173 +0,0 @@ -//// -//// - **Accessibility** -//// - [`luminance`](#luminance) -//// - [`contrast_ratio`](#contrast_ratio) -//// - [`maximum_contrast`](#maximum_contrast) -//// -//// --- -//// -//// This package was heavily inspired by the `elm-color-extra` module. -//// The original source code can be found -//// here. -//// -////
-//// The license of that package is produced below: -//// -//// -//// > MIT License -//// -//// > Copyright (c) 2016 Andreas Köberle -//// -//// > Permission is hereby granted, free of charge, to any person obtaining a copy -//// of this software and associated documentation files (the "Software"), to deal -//// in the Software without restriction, including without limitation the rights -//// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//// copies of the Software, and to permit persons to whom the Software is -//// furnished to do so, subject to the following conditions: -//// -//// > The above copyright notice and this permission notice shall be included in all -//// copies or substantial portions of the Software. -//// -//// > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//// SOFTWARE. -//// -////
-//// - -// Just in case we decide in the future to no longer include the above reference -// and license, this package was initially a port of the `elm-color-extra` module: -// -// https://github.com/noahzgordon/elm-color-extra -// - -// IMPORTS -------------------------------------------------------------------- - -import gleam/float -import gleam/list -import gleam_community/colour.{type Colour} - -// UTILITIES ------------------------------------------------------------------ - -fn intensity(colour_value: Float) -> Float { - // Calculation taken from https://www.w3.org/TR/WCAG20/#relativeluminancedef - case True { - _ if colour_value <=. 0.03928 -> colour_value /. 12.92 - _ -> { - // Is this guaranteed to be `OK`? - let assert Ok(i) = float.power({ colour_value +. 0.055 } /. 1.055, 2.4) - i - } - } -} - -// ACCESSIBILITY -------------------------------------------------------------- - -/// Returns the relative brightness of the given `Colour` as a `Float` between -/// 0.0, and 1.0 with 0.0 being the darkest possible colour and 1.0 being the lightest. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// luminance(colour.white) // 1.0 -/// } -/// ``` -///
-/// -/// -/// -pub fn luminance(colour: Colour) -> Float { - // Calculation taken from https://www.w3.org/TR/WCAG20/#relativeluminancedef - let #(r, g, b, _) = colour.to_rgba(colour) - - let r_intensity = intensity(r) - let g_intensity = intensity(g) - let b_intensity = intensity(b) - - 0.2126 *. r_intensity +. 0.7152 *. g_intensity +. 0.0722 *. b_intensity -} - -/// Returns the contrast between two `Colour` values as a `Float` between 1.0, -/// and 21.0 with 1.0 being no contrast and, 21.0 being the highest possible contrast. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// contrast_ratio(between: colour.white, and: colour.black) // 21.0 -/// } -/// ``` -///
-/// -/// -/// -pub fn contrast_ratio(between colour_a: Colour, and colour_b: Colour) -> Float { - // Calculation taken from https://www.w3.org/TR/WCAG20/#contrast-ratiodef - let luminance_a = luminance(colour_a) +. 0.05 - let luminance_b = luminance(colour_b) +. 0.05 - - case luminance_a >. luminance_b { - True -> luminance_a /. luminance_b - False -> luminance_b /. luminance_a - } -} - -/// Returns the `Colour` with the highest contrast between the base `Colour`, -/// and and the other provided `Colour` values. -/// -///
-/// Example: -/// -/// ```gleam -/// fn example() { -/// maximum_contrast( -/// colour.yellow, -/// [colour.white, colour.dark_blue, colour.green], -/// ) -/// } -/// ``` -///
-/// -/// -/// -pub fn maximum_contrast( - base: Colour, - colours: List(Colour), -) -> Result(Colour, Nil) { - colours - |> list.sort(fn(colour_a, colour_b) { - let contrast_a = contrast_ratio(base, colour_a) - let contrast_b = contrast_ratio(base, colour_b) - - float.compare(contrast_b, contrast_a) - }) - |> list.first() -} diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl deleted file mode 100644 index 21e4c81..0000000 --- a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour.erl +++ /dev/null @@ -1,511 +0,0 @@ --module(gleam_community@colour). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_rgb255/3, from_rgb/3, from_rgba/4, from_hsla/4, from_hsl/3, from_rgb_hex/1, from_rgb_hex_string/1, from_rgba_hex/1, from_rgba_hex_string/1, to_rgba/1, to_hsla/1, to_css_rgba_string/1, to_rgba_hex/1, to_rgba_hex_string/1, to_rgb_hex/1, to_rgb_hex_string/1]). --export_type([colour/0]). - --opaque colour() :: {rgba, float(), float(), float(), float()} | - {hsla, float(), float(), float(), float()}. - --spec valid_colour_value(float()) -> {ok, float()} | {error, nil}. -valid_colour_value(C) -> - case (C > 1.0) orelse (C < +0.0) of - true -> - {error, nil}; - - false -> - {ok, C} - end. - --spec hue_to_rgb(float(), float(), float()) -> float(). -hue_to_rgb(Hue, M1, M2) -> - H = case Hue of - _ when Hue < +0.0 -> - Hue + 1.0; - - _ when Hue > 1.0 -> - Hue - 1.0; - - _ -> - Hue - end, - H_t_6 = H * 6.0, - H_t_2 = H * 2.0, - H_t_3 = H * 3.0, - case H of - _ when H_t_6 < 1.0 -> - M1 + (((M2 - M1) * H) * 6.0); - - _ when H_t_2 < 1.0 -> - M2; - - _ when H_t_3 < 2.0 -> - M1 + (((M2 - M1) * ((2.0 / 3.0) - H)) * 6.0); - - _ -> - M1 - end. - --spec hex_string_to_int(binary()) -> {ok, integer()} | {error, nil}. -hex_string_to_int(Hex_string) -> - Hex = case Hex_string of - <<"#"/utf8, Hex_number/binary>> -> - Hex_number; - - <<"0x"/utf8, Hex_number@1/binary>> -> - Hex_number@1; - - _ -> - Hex_string - end, - _pipe = Hex, - _pipe@1 = gleam@string:lowercase(_pipe), - _pipe@2 = gleam@string:to_graphemes(_pipe@1), - _pipe@3 = gleam@list:reverse(_pipe@2), - gleam@list:index_fold( - _pipe@3, - {ok, 0}, - fun(Total, Char, Index) -> case Total of - {error, nil} -> - {error, nil}; - - {ok, V} -> - gleam@result:then(case Char of - <<"a"/utf8>> -> - {ok, 10}; - - <<"b"/utf8>> -> - {ok, 11}; - - <<"c"/utf8>> -> - {ok, 12}; - - <<"d"/utf8>> -> - {ok, 13}; - - <<"e"/utf8>> -> - {ok, 14}; - - <<"f"/utf8>> -> - {ok, 15}; - - _ -> - gleam@int:parse(Char) - end, fun(Num) -> - gleam@result:then( - gleam@int:power(16, gleam@int:to_float(Index)), - fun(Base) -> - {ok, - V + gleam@float:round( - gleam@int:to_float(Num) * Base - )} - end - ) - end) - end end - ). - --spec hsla_to_rgba(float(), float(), float(), float()) -> {float(), - float(), - float(), - float()}. -hsla_to_rgba(H, S, L, A) -> - M2 = case L =< 0.5 of - true -> - L * (S + 1.0); - - false -> - (L + S) - (L * S) - end, - M1 = (L * 2.0) - M2, - R = hue_to_rgb(H + (1.0 / 3.0), M1, M2), - G = hue_to_rgb(H, M1, M2), - B = hue_to_rgb(H - (1.0 / 3.0), M1, M2), - {R, G, B, A}. - --spec rgba_to_hsla(float(), float(), float(), float()) -> {float(), - float(), - float(), - float()}. -rgba_to_hsla(R, G, B, A) -> - Min_colour = gleam@float:min(R, gleam@float:min(G, B)), - Max_colour = gleam@float:max(R, gleam@float:max(G, B)), - H1 = case true of - _ when Max_colour =:= R -> - gleam@float:divide(G - B, Max_colour - Min_colour); - - _ when Max_colour =:= G -> - _pipe = gleam@float:divide(B - R, Max_colour - Min_colour), - gleam@result:then(_pipe, fun(D) -> {ok, 2.0 + D} end); - - _ -> - _pipe@1 = gleam@float:divide(R - G, Max_colour - Min_colour), - gleam@result:then(_pipe@1, fun(D@1) -> {ok, 4.0 + D@1} end) - end, - H2 = case H1 of - {ok, V} -> - {ok, V * (1.0 / 6.0)}; - - _ -> - H1 - end, - H3 = case H2 of - {ok, V@1} when V@1 < +0.0 -> - V@1 + 1.0; - - {ok, V@2} -> - V@2; - - _ -> - +0.0 - end, - L = (Min_colour + Max_colour) / 2.0, - S = case true of - _ when Min_colour =:= Max_colour -> - +0.0; - - _ when L < 0.5 -> - case (Max_colour + Min_colour) of - 0.0 -> 0.0; - Gleam@denominator -> (Max_colour - Min_colour) / Gleam@denominator - end; - - _ -> - case ((2.0 - Max_colour) - Min_colour) of - 0.0 -> 0.0; - Gleam@denominator@1 -> (Max_colour - Min_colour) / Gleam@denominator@1 - end - end, - {H3, S, L, A}. - --spec from_rgb255(integer(), integer(), integer()) -> {ok, colour()} | - {error, nil}. -from_rgb255(Red, Green, Blue) -> - gleam@result:then( - begin - _pipe = Red, - _pipe@1 = gleam@int:to_float(_pipe), - _pipe@2 = gleam@float:divide(_pipe@1, 255.0), - gleam@result:then(_pipe@2, fun valid_colour_value/1) - end, - fun(R) -> - gleam@result:then( - begin - _pipe@3 = Green, - _pipe@4 = gleam@int:to_float(_pipe@3), - _pipe@5 = gleam@float:divide(_pipe@4, 255.0), - gleam@result:then(_pipe@5, fun valid_colour_value/1) - end, - fun(G) -> - gleam@result:then( - begin - _pipe@6 = Blue, - _pipe@7 = gleam@int:to_float(_pipe@6), - _pipe@8 = gleam@float:divide(_pipe@7, 255.0), - gleam@result:then(_pipe@8, fun valid_colour_value/1) - end, - fun(B) -> {ok, {rgba, R, G, B, 1.0}} end - ) - end - ) - end - ). - --spec from_rgb(float(), float(), float()) -> {ok, colour()} | {error, nil}. -from_rgb(Red, Green, Blue) -> - gleam@result:then( - valid_colour_value(Red), - fun(R) -> - gleam@result:then( - valid_colour_value(Green), - fun(G) -> - gleam@result:then( - valid_colour_value(Blue), - fun(B) -> {ok, {rgba, R, G, B, 1.0}} end - ) - end - ) - end - ). - --spec from_rgba(float(), float(), float(), float()) -> {ok, colour()} | - {error, nil}. -from_rgba(Red, Green, Blue, Alpha) -> - gleam@result:then( - valid_colour_value(Red), - fun(R) -> - gleam@result:then( - valid_colour_value(Green), - fun(G) -> - gleam@result:then( - valid_colour_value(Blue), - fun(B) -> - gleam@result:then( - valid_colour_value(Alpha), - fun(A) -> {ok, {rgba, R, G, B, A}} end - ) - end - ) - end - ) - end - ). - --spec from_hsla(float(), float(), float(), float()) -> {ok, colour()} | - {error, nil}. -from_hsla(Hue, Saturation, Lightness, Alpha) -> - gleam@result:then( - valid_colour_value(Hue), - fun(H) -> - gleam@result:then( - valid_colour_value(Saturation), - fun(S) -> - gleam@result:then( - valid_colour_value(Lightness), - fun(L) -> - gleam@result:then( - valid_colour_value(Alpha), - fun(A) -> {ok, {hsla, H, S, L, A}} end - ) - end - ) - end - ) - end - ). - --spec from_hsl(float(), float(), float()) -> {ok, colour()} | {error, nil}. -from_hsl(Hue, Saturation, Lightness) -> - from_hsla(Hue, Saturation, Lightness, 1.0). - --spec from_rgb_hex(integer()) -> {ok, colour()} | {error, nil}. -from_rgb_hex(Hex) -> - case (Hex > 16#ffffff) orelse (Hex < 0) of - true -> - {error, nil}; - - false -> - R = begin - _pipe = erlang:'bsr'(Hex, 16), - erlang:'band'(_pipe, 16#ff) - end, - G = begin - _pipe@1 = erlang:'bsr'(Hex, 8), - erlang:'band'(_pipe@1, 16#ff) - end, - B = erlang:'band'(Hex, 16#ff), - from_rgb255(R, G, B) - end. - --spec from_rgb_hex_string(binary()) -> {ok, colour()} | {error, nil}. -from_rgb_hex_string(Hex_string) -> - gleam@result:then( - hex_string_to_int(Hex_string), - fun(Hex_int) -> from_rgb_hex(Hex_int) end - ). - --spec from_rgba_hex(integer()) -> {ok, colour()} | {error, nil}. -from_rgba_hex(Hex) -> - case (Hex > 16#ffffffff) orelse (Hex < 0) of - true -> - {error, nil}; - - false -> - _assert_subject = begin - _pipe = erlang:'bsr'(Hex, 24), - _pipe@1 = erlang:'band'(_pipe, 16#ff), - _pipe@2 = gleam@int:to_float(_pipe@1), - gleam@float:divide(_pipe@2, 255.0) - end, - {ok, R} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 588}) - end, - _assert_subject@1 = begin - _pipe@3 = erlang:'bsr'(Hex, 16), - _pipe@4 = erlang:'band'(_pipe@3, 16#ff), - _pipe@5 = gleam@int:to_float(_pipe@4), - gleam@float:divide(_pipe@5, 255.0) - end, - {ok, G} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 594}) - end, - _assert_subject@2 = begin - _pipe@6 = erlang:'bsr'(Hex, 8), - _pipe@7 = erlang:'band'(_pipe@6, 16#ff), - _pipe@8 = gleam@int:to_float(_pipe@7), - gleam@float:divide(_pipe@8, 255.0) - end, - {ok, B} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 600}) - end, - _assert_subject@3 = begin - _pipe@9 = erlang:'band'(Hex, 16#ff), - _pipe@10 = gleam@int:to_float(_pipe@9), - gleam@float:divide(_pipe@10, 255.0) - end, - {ok, A} = case _assert_subject@3 of - {ok, _} -> _assert_subject@3; - _assert_fail@3 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@3, - module => <<"gleam_community/colour"/utf8>>, - function => <<"from_rgba_hex"/utf8>>, - line => 606}) - end, - from_rgba(R, G, B, A) - end. - --spec from_rgba_hex_string(binary()) -> {ok, colour()} | {error, nil}. -from_rgba_hex_string(Hex_string) -> - gleam@result:then( - hex_string_to_int(Hex_string), - fun(Hex_int) -> from_rgba_hex(Hex_int) end - ). - --spec to_rgba(colour()) -> {float(), float(), float(), float()}. -to_rgba(Colour) -> - case Colour of - {rgba, R, G, B, A} -> - {R, G, B, A}; - - {hsla, H, S, L, A@1} -> - hsla_to_rgba(H, S, L, A@1) - end. - --spec to_hsla(colour()) -> {float(), float(), float(), float()}. -to_hsla(Colour) -> - case Colour of - {hsla, H, S, L, A} -> - {H, S, L, A}; - - {rgba, R, G, B, A@1} -> - rgba_to_hsla(R, G, B, A@1) - end. - --spec to_css_rgba_string(colour()) -> binary(). -to_css_rgba_string(Colour) -> - {R, G, B, A} = to_rgba(Colour), - Percent = fun(X) -> - _assert_subject = begin - _pipe = X, - _pipe@1 = gleam@float:multiply(_pipe, 10000.0), - _pipe@2 = gleam@float:round(_pipe@1), - _pipe@3 = gleam@int:to_float(_pipe@2), - gleam@float:divide(_pipe@3, 100.0) - end, - {ok, P} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour"/utf8>>, - function => <<"to_css_rgba_string"/utf8>>, - line => 704}) - end, - P - end, - Round_to = fun(X@1) -> - _assert_subject@1 = begin - _pipe@4 = X@1, - _pipe@5 = gleam@float:multiply(_pipe@4, 1000.0), - _pipe@6 = gleam@float:round(_pipe@5), - _pipe@7 = gleam@int:to_float(_pipe@6), - gleam@float:divide(_pipe@7, 1000.0) - end, - {ok, R@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/colour"/utf8>>, - function => <<"to_css_rgba_string"/utf8>>, - line => 716}) - end, - R@1 - end, - gleam@string:join( - [<<"rgba("/utf8>>, - <<(gleam@float:to_string(Percent(R)))/binary, "%,"/utf8>>, - <<(gleam@float:to_string(Percent(G)))/binary, "%,"/utf8>>, - <<(gleam@float:to_string(Percent(B)))/binary, "%,"/utf8>>, - gleam@float:to_string(Round_to(A)), - <<")"/utf8>>], - <<""/utf8>> - ). - --spec to_rgba_hex(colour()) -> integer(). -to_rgba_hex(Colour) -> - {R, G, B, A} = to_rgba(Colour), - Red = begin - _pipe = R * 255.0, - _pipe@1 = gleam@float:round(_pipe), - erlang:'bsl'(_pipe@1, 24) - end, - Green = begin - _pipe@2 = G * 255.0, - _pipe@3 = gleam@float:round(_pipe@2), - erlang:'bsl'(_pipe@3, 16) - end, - Blue = begin - _pipe@4 = B * 255.0, - _pipe@5 = gleam@float:round(_pipe@4), - erlang:'bsl'(_pipe@5, 8) - end, - Alpha = begin - _pipe@6 = A * 255.0, - gleam@float:round(_pipe@6) - end, - ((Red + Green) + Blue) + Alpha. - --spec to_rgba_hex_string(colour()) -> binary(). -to_rgba_hex_string(Colour) -> - _pipe = to_rgba_hex(Colour), - gleam@int:to_base16(_pipe). - --spec to_rgb_hex(colour()) -> integer(). -to_rgb_hex(Colour) -> - {R, G, B, _} = to_rgba(Colour), - Red = begin - _pipe = R * 255.0, - _pipe@1 = gleam@float:round(_pipe), - erlang:'bsl'(_pipe@1, 16) - end, - Green = begin - _pipe@2 = G * 255.0, - _pipe@3 = gleam@float:round(_pipe@2), - erlang:'bsl'(_pipe@3, 8) - end, - Blue = begin - _pipe@4 = B * 255.0, - gleam@float:round(_pipe@4) - end, - (Red + Green) + Blue. - --spec to_rgb_hex_string(colour()) -> binary(). -to_rgb_hex_string(Colour) -> - _pipe = to_rgb_hex(Colour), - gleam@int:to_base16(_pipe). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl b/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl deleted file mode 100644 index 64d37bf..0000000 --- a/aoc2023/build/packages/gleam_community_colour/src/gleam_community@colour@accessibility.erl +++ /dev/null @@ -1,73 +0,0 @@ --module(gleam_community@colour@accessibility). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([luminance/1, contrast_ratio/2, maximum_contrast/2]). - --spec intensity(float()) -> float(). -intensity(Colour_value) -> - case true of - _ when Colour_value =< 0.03928 -> - Colour_value / 12.92; - - _ -> - _assert_subject = gleam@float:power( - (Colour_value + 0.055) / 1.055, - 2.4 - ), - {ok, I} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/colour/accessibility"/utf8>>, - function => <<"intensity"/utf8>>, - line => 62}) - end, - I - end. - --spec luminance(gleam_community@colour:colour()) -> float(). -luminance(Colour) -> - {R, G, B, _} = gleam_community@colour:to_rgba(Colour), - R_intensity = intensity(R), - G_intensity = intensity(G), - B_intensity = intensity(B), - ((0.2126 * R_intensity) + (0.7152 * G_intensity)) + (0.0722 * B_intensity). - --spec contrast_ratio( - gleam_community@colour:colour(), - gleam_community@colour:colour() -) -> float(). -contrast_ratio(Colour_a, Colour_b) -> - Luminance_a = luminance(Colour_a) + 0.05, - Luminance_b = luminance(Colour_b) + 0.05, - case Luminance_a > Luminance_b of - true -> - case Luminance_b of - 0.0 -> 0.0; - Gleam@denominator -> Luminance_a / Gleam@denominator - end; - - false -> - case Luminance_a of - 0.0 -> 0.0; - Gleam@denominator@1 -> Luminance_b / Gleam@denominator@1 - end - end. - --spec maximum_contrast( - gleam_community@colour:colour(), - list(gleam_community@colour:colour()) -) -> {ok, gleam_community@colour:colour()} | {error, nil}. -maximum_contrast(Base, Colours) -> - _pipe = Colours, - _pipe@1 = gleam@list:sort( - _pipe, - fun(Colour_a, Colour_b) -> - Contrast_a = contrast_ratio(Base, Colour_a), - Contrast_b = contrast_ratio(Base, Colour_b), - gleam@float:compare(Contrast_b, Contrast_a) - end - ), - gleam@list:first(_pipe@1). diff --git a/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src b/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src deleted file mode 100644 index a327650..0000000 --- a/aoc2023/build/packages/gleam_community_colour/src/gleam_community_colour.app.src +++ /dev/null @@ -1,9 +0,0 @@ -{application, gleam_community_colour, [ - {vsn, "1.2.0"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "Colour types, conversions, and other utilities"}, - {modules, [gleam_community@colour, - gleam_community@colour@accessibility]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_community_maths/LICENCE b/aoc2023/build/packages/gleam_community_maths/LICENCE deleted file mode 100644 index a84f0ec..0000000 --- a/aoc2023/build/packages/gleam_community_maths/LICENCE +++ /dev/null @@ -1,190 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2023 Gleam Community Contributors - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/aoc2023/build/packages/gleam_community_maths/README.md b/aoc2023/build/packages/gleam_community_maths/README.md deleted file mode 100644 index c912757..0000000 --- a/aoc2023/build/packages/gleam_community_maths/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# gleam-community/maths - -[![Package Version](https://img.shields.io/hexpm/v/gleam_community_maths)](https://hex.pm/packages/gleam_community_maths) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gleam_community_maths/) - -A basic mathematics library that contains some of the most fundamental mathematics functions and utilities. - -The library supports both targets: Erlang and JavaScript. - -## Quickstart - -```gleam -import gleam_community/maths/arithmetics -import gleam_community/maths/combinatorics -import gleam_community/maths/elementary -import gleam_community/maths/piecewise -import gleam_community/maths/predicates -import gleam/float - -pub fn main() { - // Evaluate the sine function - elementary.sin(elementary.pi()) - // Returns Float: 0.0 - - // Find the greatest common divisor - arithmetics.gcd(54, 24) - // Returns Int: 6 - - // Find the minimum and maximum of a list - piecewise.extrema([10.0, 3.0, 50.0, 20.0, 3.0], float.compare) - // Returns Tuple: Ok(#(3.0, 50.0)) - - // Find the list indices of the smallest value - piecewise.arg_minimum([10, 3, 50, 20, 3], float.compare) - // Returns List: Ok([1, 4]) - - // Determine if a number is fractional - predicates.is_fractional(0.3333) - // Returns Bool: True - - // Determine if 28 is a power of 3 - predicates.is_power(28, 3) - // Returns Bool: False - - // Generate all k = 1 combinations of [1, 2] - combinatorics.list_combination([1, 2], 1) - // Returns List: Ok([[1], [2]]) -} - -``` - -## Installation - -`gleam_community` packages are published to [hex.pm](https://hex.pm/packages/gleam_community_maths) -with the prefix `gleam_community_`. You can add them to your Gleam projects directly: - -```sh -gleam add gleam_community_maths -``` diff --git a/aoc2023/build/packages/gleam_community_maths/gleam.toml b/aoc2023/build/packages/gleam_community_maths/gleam.toml deleted file mode 100644 index 9dc5fd7..0000000 --- a/aoc2023/build/packages/gleam_community_maths/gleam.toml +++ /dev/null @@ -1,12 +0,0 @@ -name = "gleam_community_maths" -version = "1.0.1" - -licences = ["Apache-2.0"] -description = "A basic maths library" -repository = { type = "github", user = "gleam-community", repo = "maths" } - -[dependencies] -gleam_stdlib = "~> 0.33" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam deleted file mode 100644 index 3e0f63a..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/arithmetics.gleam +++ /dev/null @@ -1,618 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Arithmetics: A module containing a collection of fundamental mathematical functions relating to simple arithmetics (addition, subtraction, multiplication, etc.), but also number theory. -//// -//// * **Division functions** -//// * [`gcd`](#gcd) -//// * [`lcm`](#lcm) -//// * [`divisors`](#divisors) -//// * [`proper_divisors`](#proper_divisors) -//// * **Sums and products** -//// * [`float_sum`](#float_sum) -//// * [`int_sum`](#int_sum) -//// * [`float_product`](#float_product) -//// * [`int_product`](#int_product) -//// * [`float_cumulative_sum`](#float_cumulative_sum) -//// * [`int_cumulative_sum`](#int_cumulative_sum) -//// * [`float_cumulative_product`](#float_cumulative_product) -//// * [`int_cumulative_product`](#int_cumulative_product) -//// - -import gleam/int -import gleam/list -import gleam_community/maths/conversion -import gleam_community/maths/elementary -import gleam_community/maths/piecewise - -/// -/// -/// The function calculates the greatest common multiple of two integers $$x, y \in \mathbb{Z}$$. -/// The greatest common multiple is the largest positive integer that is divisible by both $$x$$ and $$y$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example() { -/// arithmetics.lcm(1, 1) -/// |> should.equal(1) -/// -/// arithmetics.lcm(100, 10) -/// |> should.equal(10) -/// -/// arithmetics.gcd(-36, -17) -/// |> should.equal(1) -/// } -///
-/// -/// -/// -pub fn gcd(x: Int, y: Int) -> Int { - let absx: Int = piecewise.int_absolute_value(x) - let absy: Int = piecewise.int_absolute_value(y) - do_gcd(absx, absy) -} - -fn do_gcd(x: Int, y: Int) -> Int { - case x == 0 { - True -> y - False -> { - let assert Ok(z) = int.modulo(y, x) - do_gcd(z, x) - } - } -} - -/// -/// -/// The function calculates the least common multiple of two integers $$x, y \in \mathbb{Z}$$. -/// The least common multiple is the smallest positive integer that has both $$x$$ and $$y$$ as factors. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example() { -/// arithmetics.lcm(1, 1) -/// |> should.equal(1) -/// -/// arithmetics.lcm(100, 10) -/// |> should.equal(100) -/// -/// arithmetics.lcm(-36, -17) -/// |> should.equal(612) -/// } -///
-/// -/// -/// -pub fn lcm(x: Int, y: Int) -> Int { - let absx: Int = piecewise.int_absolute_value(x) - let absy: Int = piecewise.int_absolute_value(y) - absx * absy / do_gcd(absx, absy) -} - -/// -/// -/// The function returns all the positive divisors of an integer, including the number iteself. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example() { -/// arithmetics.divisors(4) -/// |> should.equal([1, 2, 4]) -/// -/// arithmetics.divisors(6) -/// |> should.equal([1, 2, 3, 6]) -/// -/// arithmetics.proper_divisors(13) -/// |> should.equal([1, 13]) -/// } -///
-/// -/// -/// -pub fn divisors(n: Int) -> List(Int) { - find_divisors(n) -} - -fn find_divisors(n: Int) -> List(Int) { - let nabs: Float = piecewise.float_absolute_value(conversion.int_to_float(n)) - let assert Ok(sqrt_result) = elementary.square_root(nabs) - let max: Int = conversion.float_to_int(sqrt_result) + 1 - list.range(2, max) - |> list.fold( - [1, n], - fn(acc: List(Int), i: Int) -> List(Int) { - case n % i == 0 { - True -> [i, n / i, ..acc] - False -> acc - } - }, - ) - |> list.unique() - |> list.sort(int.compare) -} - -/// -/// -/// The function returns all the positive divisors of an integer, excluding the number iteself. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example() { -/// arithmetics.proper_divisors(4) -/// |> should.equal([1, 2]) -/// -/// arithmetics.proper_divisors(6) -/// |> should.equal([1, 2, 3]) -/// -/// arithmetics.proper_divisors(13) -/// |> should.equal([1]) -/// } -///
-/// -/// -/// -pub fn proper_divisors(n: Int) -> List(Int) { - let divisors: List(Int) = find_divisors(n) - divisors - |> list.take(list.length(divisors) - 1) -} - -/// -/// -/// Calculcate the sum of the elements in a list: -/// -/// \\[ -/// \sum_{i=1}^n x_i -/// \\] -/// -/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns an error -/// [] -/// |> arithmetics.float_sum() -/// |> should.equal(0.0) -/// -/// // Valid input returns a result -/// [1.0, 2.0, 3.0] -/// |> arithmetics.float_sum() -/// |> should.equal(6.0) -/// } -///
-/// -/// -/// -pub fn float_sum(arr: List(Float)) -> Float { - case arr { - [] -> 0.0 - _ -> - arr - |> list.fold(0.0, fn(acc: Float, a: Float) -> Float { a +. acc }) - } -} - -/// -/// -/// Calculcate the sum of the elements in a list: -/// -/// \\[ -/// \sum_{i=1}^n x_i -/// \\] -/// -/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns 0 -/// [] -/// |> arithmetics.int_sum() -/// |> should.equal(0) -/// -/// // Valid input returns a result -/// [1, 2, 3] -/// |> arithmetics.int_sum() -/// |> should.equal(6) -/// } -///
-/// -/// -/// -pub fn int_sum(arr: List(Int)) -> Int { - case arr { - [] -> 0 - _ -> - arr - |> list.fold(0, fn(acc: Int, a: Int) -> Int { a + acc }) - } -} - -/// -/// -/// Calculcate the product of the elements in a list: -/// -/// \\[ -/// \prod_{i=1}^n x_i -/// \\] -/// -/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns 0.0 -/// [] -/// |> arithmetics.float_product() -/// |> should.equal(0.0) -/// -/// // Valid input returns a result -/// [1.0, 2.0, 3.0] -/// |> arithmetics.float_product() -/// |> should.equal(6.0) -/// } -///
-/// -/// -/// -pub fn float_product(arr: List(Float)) -> Float { - case arr { - [] -> 1.0 - _ -> - arr - |> list.fold(1.0, fn(acc: Float, a: Float) -> Float { a *. acc }) - } -} - -/// -/// -/// Calculcate the product of the elements in a list: -/// -/// \\[ -/// \prod_{i=1}^n x_i -/// \\] -/// -/// In the formula, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns 0 -/// [] -/// |> arithmetics.int_product() -/// |> should.equal(0) -/// -/// // Valid input returns a result -/// [1, 2, 3] -/// |> arithmetics.int_product() -/// |> should.equal(6) -/// } -///
-/// -/// -/// -pub fn int_product(arr: List(Int)) -> Int { - case arr { - [] -> 1 - _ -> - arr - |> list.fold(1, fn(acc: Int, a: Int) -> Int { a * acc }) - } -} - -/// -/// -/// Calculcate the cumulative sum of the elements in a list: -/// -/// \\[ -/// v_j = \sum_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n -/// \\] -/// -/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative sum of $$n$$ elements. -/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. -/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// [] -/// |> arithmetics.float_cumulative_sum() -/// |> should.equal([]) -/// -/// // Valid input returns a result -/// [1.0, 2.0, 3.0] -/// |> arithmetics.float_cumulative_sum() -/// |> should.equal([1.0, 3.0, 6.0]) -/// } -///
-/// -/// -/// -pub fn float_cumulative_sum(arr: List(Float)) -> List(Float) { - case arr { - [] -> [] - _ -> - arr - |> list.scan(0.0, fn(acc: Float, a: Float) -> Float { a +. acc }) - } -} - -/// -/// -/// Calculcate the cumulative sum of the elements in a list: -/// -/// \\[ -/// v_j = \sum_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n -/// \\] -/// -/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative sum of $$n$$ elements. -/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. -/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// [] -/// |> arithmetics.int_cumulative_sum() -/// |> should.equal([]) -/// -/// // Valid input returns a result -/// [1, 2, 3] -/// |> arithmetics.int_cumulative_sum() -/// |> should.equal([1, 3, 6]) -/// } -///
-/// -/// -/// -pub fn int_cumulative_sum(arr: List(Int)) -> List(Int) { - case arr { - [] -> [] - _ -> - arr - |> list.scan(0, fn(acc: Int, a: Int) -> Int { a + acc }) - } -} - -/// -/// -/// Calculcate the cumulative product of the elements in a list: -/// -/// \\[ -/// v_j = \prod_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n -/// \\] -/// -/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative product of $$n$$ elements. -/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{R}$$ is the value in the input list indexed by $$i$$. -/// The value $$v_j$$ is thus the sum of the $$1$$ to $$j$$ first elements in the given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns an error -/// [] -/// |> arithmetics.float_cumulative_product() -/// |> should.equal([]) -/// -/// // Valid input returns a result -/// [1.0, 2.0, 3.0] -/// |> arithmetics.float_cumulative_product() -/// |> should.equal([1.0, 2.0, 6.0]) -/// } -///
-/// -/// -/// -pub fn float_cumumlative_product(arr: List(Float)) -> List(Float) { - case arr { - [] -> [] - _ -> - arr - |> list.scan(1.0, fn(acc: Float, a: Float) -> Float { a *. acc }) - } -} - -/// -/// -/// Calculcate the cumulative product of the elements in a list: -/// -/// \\[ -/// v_j = \prod_{i=1}^j x_i \\;\\; \forall j = 1,\dots, n -/// \\] -/// -/// In the formula, $$v_j$$ is the $$j$$'th element in the cumulative product of $$n$$ elements. -/// That is, $$n$$ is the length of the list and $$x_i \in \mathbb{Z}$$ is the value in the input list indexed by $$i$$. -/// The value $$v_j$$ is thus the product of the $$1$$ to $$j$$ first elements in the given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/arithmetics -/// -/// pub fn example () { -/// // An empty list returns an error -/// [] -/// |> arithmetics.int_cumulative_product() -/// |> should.equal([]) -/// -/// // Valid input returns a result -/// [1, 2, 3] -/// |> arithmetics.int_cumulative_product() -/// |> should.equal([1, 2, 6]) -/// } -///
-/// -/// -/// -pub fn int_cumulative_product(arr: List(Int)) -> List(Int) { - case arr { - [] -> [] - _ -> - arr - |> list.scan(1, fn(acc: Int, a: Int) -> Int { a * acc }) - } -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam deleted file mode 100644 index ee771a1..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/combinatorics.gleam +++ /dev/null @@ -1,432 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Combinatorics: A module that offers mathematical functions related to counting, arrangements, and combinations. -//// -//// * **Combinatorial functions** -//// * [`combination`](#combination) -//// * [`factorial`](#factorial) -//// * [`permutation`](#permutation) -//// * [`list_combination`](#list_combination) -//// * [`list_permutation`](#list_permutation) -//// * [`cartesian_product`](#cartesian_product) -//// - -import gleam/list -import gleam/set - -/// -/// -/// A combinatorial function for computing the number of a $$k$$-combinations of $$n$$ elements: -/// -/// \\[ -/// C(n, k) = \binom{n}{k} = \frac{n!}{k! (n-k)!} -/// \\] -/// Also known as "$$n$$ choose $$k$$" or the binomial coefficient. -/// -/// The implementation uses the effecient iterative multiplicative formula for the computation. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/combinatorics -/// -/// pub fn example() { -/// // Invalid input gives an error -/// // Error on: n = -1 < 0 -/// combinatorics.combination(-1, 1) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// combinatorics.combination(4, 0) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.combination(4, 4) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.combination(4, 2) -/// |> should.equal(Ok(6)) -/// } -///
-/// -/// -/// -pub fn combination(n: Int, k: Int) -> Result(Int, String) { - case n < 0 { - True -> - "Invalid input argument: n < 0. Valid input is n > 0." - |> Error - False -> - case k < 0 || k > n { - True -> - 0 - |> Ok - False -> - case k == 0 || k == n { - True -> - 1 - |> Ok - False -> { - let min = case k < n - k { - True -> k - False -> n - k - } - list.range(1, min) - |> list.fold( - 1, - fn(acc: Int, x: Int) -> Int { acc * { n + 1 - x } / x }, - ) - |> Ok - } - } - } - } -} - -/// -/// -/// A combinatorial function for computing the total number of combinations of $$n$$ -/// elements, that is $$n!$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/combinatorics -/// -/// pub fn example() { -/// // Invalid input gives an error -/// combinatorics.factorial(-1) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// combinatorics.factorial(0) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.factorial(1) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.factorial(2) -/// |> should.equal(Ok(2)) -/// -/// combinatorics.factorial(3) -/// |> should.equal(Ok(6)) -/// -/// combinatorics.factorial(4) -/// |> should.equal(Ok(24)) -/// } -///
-/// -/// -/// -pub fn factorial(n) -> Result(Int, String) { - case n < 0 { - True -> - "Invalid input argument: n < 0. Valid input is n > 0." - |> Error - False -> - case n { - 0 -> - 1 - |> Ok - 1 -> - 1 - |> Ok - _ -> - list.range(1, n) - |> list.fold(1, fn(acc: Int, x: Int) { acc * x }) - |> Ok - } - } -} - -/// -/// -/// A combinatorial function for computing the number of $$k$$-permuations (without repetitions) -/// of $$n$$ elements: -/// -/// \\[ -/// P(n, k) = \frac{n!}{(n - k)!} -/// \\] -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/combinatorics -/// -/// pub fn example() { -/// // Invalid input gives an error -/// // Error on: n = -1 < 0 -/// combinatorics.permutation(-1, 1) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// combinatorics.permutation(4, 0) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.permutation(4, 4) -/// |> should.equal(Ok(1)) -/// -/// combinatorics.permutation(4, 2) -/// |> should.equal(Ok(12)) -/// } -///
-/// -/// -/// -pub fn permutation(n: Int, k: Int) -> Result(Int, String) { - case n < 0 { - True -> - "Invalid input argument: n < 0. Valid input is n > 0." - |> Error - False -> - case k < 0 || k > n { - True -> - 0 - |> Ok - False -> - case k == n { - True -> - 1 - |> Ok - False -> { - let assert Ok(v1) = factorial(n) - let assert Ok(v2) = factorial(n - k) - v1 / v2 - |> Ok - } - } - } - } -} - -/// -/// -/// Generate all $$k$$-combinations based on a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/set -/// import gleam_community/maths/combinatorics -/// -/// pub fn example () { -/// let assert Ok(result) = combinatorics.list_combination([1, 2, 3, 4], 3) -/// result -/// |> set.from_list() -/// |> should.equal(set.from_list([[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]])) -/// } -///
-/// -/// -/// -pub fn list_combination(arr: List(a), k: Int) -> Result(List(List(a)), String) { - case k < 0 { - True -> - "Invalid input argument: k < 0. Valid input is k > 0." - |> Error - False -> { - case k > list.length(arr) { - True -> - "Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)." - |> Error - False -> { - do_list_combination(arr, k, []) - |> Ok - } - } - } - } -} - -fn do_list_combination(arr: List(a), k: Int, prefix: List(a)) -> List(List(a)) { - case k { - 0 -> [list.reverse(prefix)] - _ -> - case arr { - [] -> [] - [x, ..xs] -> { - let with_x = do_list_combination(xs, k - 1, [x, ..prefix]) - let without_x = do_list_combination(xs, k, prefix) - list.append(with_x, without_x) - } - } - } -} - -/// -/// -/// Generate all permutations of a given list. -/// -/// Repeated elements are treated as distinct for the -/// purpose of permutations, so two identical elements -/// for example will appear "both ways round". This -/// means lists with repeated elements return the same -/// number of permutations as ones without. -/// -/// N.B. The output of this function is a list of size -/// factorial in the size of the input list. Caution is -/// advised on input lists longer than ~11 elements, which -/// may cause the VM to use unholy amounts of memory for -/// the output. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/set -/// import gleam_community/maths/combinatorics -/// -/// pub fn example () { -/// [1, 2, 3] -/// |> combinatorics.list_permutation() -/// |> set.from_list() -/// |> should.equal(set.from_list([ -/// [1, 2, 3], -/// [2, 1, 3], -/// [3, 1, 2], -/// [1, 3, 2], -/// [2, 3, 1], -/// [3, 2, 1], -/// ])) -/// -/// [1.0, 1.0] -/// |> combinatorics.list_permutation() -/// |> should.equal([[1.0, 1.0], [1.0, 1.0]]) -/// } -///
-/// -/// -/// -pub fn list_permutation(arr: List(a)) -> List(List(a)) { - case arr { - [] -> [[]] - _ -> { - use x <- list.flat_map(arr) - // `x` is drawn from the list `arr` above, - // so Ok(...) can be safely asserted as the result of `list.pop` below - let assert Ok(#(_, remaining)) = list.pop(arr, fn(y) { x == y }) - list.map(list_permutation(remaining), fn(perm) { [x, ..perm] }) - } - } -} - -/// -/// -/// Generate a list containing all combinations of pairs of elements coming from two given lists. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/list -/// import gleam_community/maths/combinatorics -/// -/// pub fn example () { -/// [] -/// |> combinatorics.cartesian_product([]) -/// |> should.equal([]) -/// -/// [1.0, 10.0] -/// |> combinatorics.cartesian_product([1.0, 2.0]) -/// |> should.equal([#(1.0, 1.0), #(1.0, 2.0), #(10.0, 1.0), #(10.0, 2.0)]) -/// } -///
-/// -/// -/// -pub fn cartesian_product(xarr: List(a), yarr: List(a)) -> List(#(a, a)) { - let xset: set.Set(a) = - xarr - |> set.from_list() - let yset: set.Set(a) = - yarr - |> set.from_list() - xset - |> set.fold( - set.new(), - fn(accumulator0: set.Set(#(a, a)), member0: a) -> set.Set(#(a, a)) { - set.fold( - yset, - accumulator0, - fn(accumulator1: set.Set(#(a, a)), member1: a) -> set.Set(#(a, a)) { - set.insert(accumulator1, #(member0, member1)) - }, - ) - }, - ) - |> set.to_list() -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam deleted file mode 100644 index 017aabd..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/conversion.gleam +++ /dev/null @@ -1,183 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Conversion: A module containing various functions for converting between types and quantities. -//// -//// * **Misc. functions** -//// * [`float_to_int`](#float_to_int) -//// * [`int_to_float`](#int_to_float) -//// * [`degrees_to_radians`](#degrees_to_radians) -//// * [`radians_to_degrees`](#radians_to_degrees) - -import gleam/int - -/// -/// -/// A function that produces a number of type `Float` from an `Int`. -/// -/// Note: The function is equivalent to the `int.to_float` function in the Gleam stdlib. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/conversion -/// -/// pub fn example() { -/// conversion.int_to_float(-1) -/// |> should.equal(-1.0) -/// -/// conversion.int_to_float(1) -/// |> should.equal(1.0) -/// } -///
-/// -/// -/// -pub fn int_to_float(x: Int) -> Float { - int.to_float(x) -} - -/// -/// -/// The function returns the integral part of a given floating point value. -/// That is, everything after the decimal point of a given floating point value is discarded and only the integer value before the decimal point is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/conversion -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// conversion.float_to_int(12.0654) -/// |> should.equal(12) -/// -/// // Note: Making the following function call is equivalent -/// // but instead of returning a value of type 'Int' a value -/// // of type 'Float' is returned. -/// piecewise.round(12.0654, option.Some(0), option.Some(piecewise.RoundToZero)) -/// |> should.equal(Ok(12.0)) -/// } -///
-/// -/// -/// -pub fn float_to_int(x: Float) -> Int { - do_to_int(x) -} - -@external(erlang, "erlang", "trunc") -@external(javascript, "../../maths.mjs", "truncate") -fn do_to_int(a: Float) -> Int - -/// -/// -/// Convert a value in degrees to a value measured in radians. -/// That is, $$1 \text{ degrees } = \frac{\pi}{180} \text{ radians }$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/conversion -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// conversion.degrees_to_radians(360.) -/// |> should.equal(2. *. elementary.pi()) -/// } -///
-/// -/// -/// -pub fn degrees_to_radians(x: Float) -> Float { - x *. do_pi() /. 180.0 -} - -/// -/// -/// Convert a value in degrees to a value measured in radians. -/// That is, $$1 \text{ radians } = \frac{180}{\pi} \text{ degrees }$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/conversion -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// conversion.radians_to_degrees(0.0) -/// |> should.equal(0.0) -/// -/// conversion.radians_to_degrees(2. *. elementary.pi()) -/// |> should.equal(360.) -/// } -///
-/// -/// -/// -pub fn radians_to_degrees(x: Float) -> Float { - x *. 180.0 /. do_pi() -} - -@external(erlang, "math", "pi") -@external(javascript, "../../maths.mjs", "pi") -fn do_pi() -> Float diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam deleted file mode 100644 index 1b518a4..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/elementary.gleam +++ /dev/null @@ -1,1256 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Elementary: A module containing a comprehensive set of foundational mathematical functions and constants. -//// -//// * **Trigonometric and hyperbolic functions** -//// * [`acos`](#acos) -//// * [`acosh`](#acosh) -//// * [`asin`](#asin) -//// * [`asinh`](#asinh) -//// * [`atan`](#atan) -//// * [`atan2`](#atan2) -//// * [`atanh`](#atanh) -//// * [`cos`](#cos) -//// * [`cosh`](#cosh) -//// * [`sin`](#sin) -//// * [`sinh`](#sinh) -//// * [`tan`](#tan) -//// * [`tanh`](#tanh) -//// * **Powers, logs and roots** -//// * [`exponential`](#exponential) -//// * [`natural_logarithm`](#natural_logarithm) -//// * [`logarithm`](#logarithm) -//// * [`logarithm_2`](#logarithm_2) -//// * [`logarithm_10`](#logarithm_10) -//// * [`power`](#power) -//// * [`square_root`](#square_root) -//// * [`cube_root`](#cube_root) -//// * [`nth_root`](#nth_root) -//// * **Mathematical constants** -//// * [`pi`](#pi) -//// * [`tau`](#tau) -//// * [`e`](#e) -//// - -import gleam/int -import gleam/option - -/// -/// -/// The inverse cosine function: -/// -/// \\[ -/// \forall x \in \[-1, 1\], \\; \cos^{-1}{(x)} = y \in \[0, \pi \] -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\[-1, 1\]$$ as input and returns a -/// numeric value $$y$$ that lies in the range $$\[0, \pi \]$$ (an angle in radians). -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.acos(1.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.acos(1.1) -/// |> should.be_error() -/// -/// elementary.acos(-1.1) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn acos(x: Float) -> Result(Float, String) { - case x >=. -1.0 && x <=. 1.0 { - True -> - do_acos(x) - |> Ok - False -> - "Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1." - |> Error - } -} - -@external(erlang, "math", "acos") -@external(javascript, "../../maths.mjs", "acos") -fn do_acos(a: Float) -> Float - -/// -/// -/// The inverse hyperbolic cosine function: -/// -/// \\[ -/// \forall x \in [1, +\infty\), \\; \cosh^{-1}{(x)} = y \in \[0, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\[1, +\infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\[0, +\infty\)$$ (an angle in radians). -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.acosh(1.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.acosh(0.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn acosh(x: Float) -> Result(Float, String) { - case x >=. 1.0 { - True -> - do_acosh(x) - |> Ok - False -> - "Invalid input argument: x < 1. Valid input is x >= 1." - |> Error - } -} - -@external(erlang, "math", "acosh") -@external(javascript, "../../maths.mjs", "acosh") -fn do_acosh(a: Float) -> Float - -/// -/// -/// The inverse sine function: -/// -/// \\[ -/// \forall x \in \[-1, 1\], \\; \sin^{-1}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\[-1, 1\]$$ as input and returns a numeric -/// value $$y$$ that lies in the range $$\[-\frac{\pi}{2}, \frac{\pi}{2}\]$$ (an angle in radians). -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.asin(0.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.asin(1.1) -/// |> should.be_error() -/// -/// elementary.asin(-1.1) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn asin(x: Float) -> Result(Float, String) { - case x >=. -1.0 && x <=. 1.0 { - True -> - do_asin(x) - |> Ok - False -> - "Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1." - |> Error - } -} - -@external(erlang, "math", "asin") -@external(javascript, "../../maths.mjs", "asin") -fn do_asin(a: Float) -> Float - -/// -/// -/// The inverse hyperbolic sine function: -/// -/// \\[ -/// \forall x \in \(-\infty, \infty\), \\; \sinh^{-1}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, +\infty\)$$ (an angle in radians). -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.asinh(0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn asinh(x: Float) -> Float { - do_asinh(x) -} - -@external(erlang, "math", "asinh") -@external(javascript, "../../maths.mjs", "asinh") -fn do_asinh(a: Float) -> Float - -/// -/// -/// The inverse tangent function: -/// -/// \\[ -/// \forall x \in \(-\infty, \infty\), \\; \tan^{-1}{(x)} = y \in \[-\frac{\pi}{2}, \frac{\pi}{2}\] -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\[-\frac{\pi}{2}, \frac{\pi}{2}\]$$ (an angle in radians). -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.atan(0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn atan(x: Float) -> Float { - do_atan(x) -} - -@external(erlang, "math", "atan") -@external(javascript, "../../maths.mjs", "atan") -fn do_atan(a: Float) -> Float - -/// -/// -/// The inverse 2-argument tangent function: -/// -/// \\[ -/// \text{atan2}(y, x) = -/// \begin{cases} -/// \tan^{-1}(\frac y x) &\text{if } x > 0, \\\\ -/// \tan^{-1}(\frac y x) + \pi &\text{if } x < 0 \text{ and } y \ge 0, \\\\ -/// \tan^{-1}(\frac y x) - \pi &\text{if } x < 0 \text{ and } y < 0, \\\\ -/// +\frac{\pi}{2} &\text{if } x = 0 \text{ and } y > 0, \\\\ -/// -\frac{\pi}{2} &\text{if } x = 0 \text{ and } y < 0, \\\\ -/// \text{undefined} &\text{if } x = 0 \text{ and } y = 0. -/// \end{cases} -/// \\] -/// -/// The function returns the angle in radians from the x-axis to the line containing the -/// origin $$\(0, 0\)$$ and a point given as input with coordinates $$\(x, y\)$$. The numeric value -/// returned by $$\text{atan2}(y, x)$$ is in the range $$\[-\pi, \pi\]$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.atan2(0.0, 0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn atan2(y: Float, x: Float) -> Float { - do_atan2(y, x) -} - -@external(erlang, "math", "atan2") -@external(javascript, "../../maths.mjs", "atan2") -fn do_atan2(a: Float, b: Float) -> Float - -/// -/// -/// The inverse hyperbolic tangent function: -/// -/// \\[ -/// \forall x \in \(-1, 1\), \\; \tanh^{-1}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-1, 1\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$ (an angle in radians). -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.atanh(0.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.atanh(1.0) -/// |> should.be_error() -/// -/// elementary.atanh(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn atanh(x: Float) -> Result(Float, String) { - case x >. -1.0 && x <. 1.0 { - True -> - do_atanh(x) - |> Ok - False -> - "Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1." - |> Error - } -} - -@external(erlang, "math", "atanh") -@external(javascript, "../../maths.mjs", "atanh") -fn do_atanh(a: Float) -> Float - -/// -/// -/// The cosine function: -/// -/// \\[ -/// \forall x \in \(-\infty, +\infty\), \\; \cos{(x)} = y \in \[-1, 1\] -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ (an angle in radians) -/// as input and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.cos(0.0) -/// |> should.equal(1.0) -/// -/// elementary.cos(elementary.pi()) -/// |> should.equal(-1.0) -/// } -///
-/// -/// -/// -pub fn cos(x: Float) -> Float { - do_cos(x) -} - -@external(erlang, "math", "cos") -@external(javascript, "../../maths.mjs", "cos") -fn do_cos(a: Float) -> Float - -/// -/// -/// The hyperbolic cosine function: -/// -/// \\[ -/// \forall x \in \(-\infty, \infty\), \\; \cosh{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ as input (an angle in radians) -/// and returns a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. -/// If the input value is too large an overflow error might occur. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.cosh(0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn cosh(x: Float) -> Float { - do_cosh(x) -} - -@external(erlang, "math", "cosh") -@external(javascript, "../../maths.mjs", "cosh") -fn do_cosh(a: Float) -> Float - -/// -/// -/// The sine function: -/// -/// \\[ -/// \forall x \in \(-\infty, +\infty\), \\; \sin{(x)} = y \in \[-1, 1\] -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ (an angle in radians) -/// as input and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.sin(0.0) -/// |> should.equal(0.0) -/// -/// elementary.sin(0.5 *. elementary.pi()) -/// |> should.equal(1.0) -/// } -///
-/// -/// -/// -pub fn sin(x: Float) -> Float { - do_sin(x) -} - -@external(erlang, "math", "sin") -@external(javascript, "../../maths.mjs", "sin") -fn do_sin(a: Float) -> Float - -/// -/// -/// The hyperbolic sine function: -/// -/// \\[ -/// \forall x \in \(-\infty, +\infty\), \\; \sinh{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input -/// (an angle in radians) and returns a numeric value $$y$$ that lies in the range -/// $$\(-\infty, +\infty\)$$. If the input value is too large an overflow error might -/// occur. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.sinh(0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn sinh(x: Float) -> Float { - do_sinh(x) -} - -@external(erlang, "math", "sinh") -@external(javascript, "../../maths.mjs", "sinh") -fn do_sinh(a: Float) -> Float - -/// -/// -/// The tangent function: -/// -/// \\[ -/// \forall x \in \(-\infty, +\infty\), \\; \tan{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, +\infty\)$$ as input -/// (an angle in radians) and returns a numeric value $$y$$ that lies in the range -/// $$\(-\infty, +\infty\)$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.tan(0.0) -/// |> should.equal(0.0) -/// } -///
-/// -/// -/// -pub fn tan(x: Float) -> Float { - do_tan(x) -} - -@external(erlang, "math", "tan") -@external(javascript, "../../maths.mjs", "tan") -fn do_tan(a: Float) -> Float - -/// -/// -/// The hyperbolic tangent function: -/// -/// \\[ -/// \forall x \in \(-\infty, \infty\), \\; \tanh{(x)} = y \in \[-1, 1\] -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(-\infty, \infty\)$$ as input (an angle in radians) -/// and returns a numeric value $$y$$ that lies in the range $$\[-1, 1\]$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example () { -/// elementary.tanh(0.0) -/// |> should.equal(0.0) -/// -/// elementary.tanh(25.0) -/// |> should.equal(1.0) -/// -/// elementary.tanh(-25.0) -/// |> should.equal(-1.0) -/// } -///
-/// -/// -/// -pub fn tanh(x: Float) -> Float { - do_tanh(x) -} - -@external(erlang, "math", "tanh") -@external(javascript, "../../maths.mjs", "tanh") -fn do_tanh(a: Float) -> Float - -/// -/// -/// The exponential function: -/// -/// \\[ -/// \forall x \in \(-\infty, \infty\), \\; e^{(x)} = y \in \(0, +\infty\) -/// \\] -/// -/// $$e \approx 2.71828\dots$$ is Eulers' number. -/// -/// Note: If the input value $$x$$ is too large an overflow error might occur. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.exponential(0.0) -/// |> should.equal(1.0) -/// } -///
-/// -/// -/// -pub fn exponential(x: Float) -> Float { - do_exponential(x) -} - -@external(erlang, "math", "exp") -@external(javascript, "../../maths.mjs", "exponential") -fn do_exponential(a: Float) -> Float - -/// -/// -/// The natural logarithm function: -/// -/// \\[ -/// \forall x \in \(0, \infty\), \\; \log_{e}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example () { -/// elementary.natural_logarithm(1.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.natural_logarithm(elementary.e()) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.natural_logarithm(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -/// -pub fn natural_logarithm(x: Float) -> Result(Float, String) { - case x >. 0.0 { - True -> - do_natural_logarithm(x) - |> Ok - False -> - "Invalid input argument: x <= 0. Valid input is x > 0." - |> Error - } -} - -@external(erlang, "math", "log") -@external(javascript, "../../maths.mjs", "logarithm") -fn do_natural_logarithm(a: Float) -> Float - -/// -/// -/// The base $$b$$ logarithm function (computed through the "change of base" formula): -/// -/// \\[ -/// \forall x \in \(0, \infty\) \textnormal{ and } b > 1, \\; \log_{b}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ and a base $$b > 1$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/elementary -/// -/// pub fn example () { -/// elementary.logarithm(1.0, option.Some(10.0)) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.logarithm(elementary.e(), option.Some(elementary.e())) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.logarithm(-1.0, option.Some(2.0)) -/// |> should.be_error() -/// } -///
-/// -/// -/// -/// -pub fn logarithm(x: Float, base: option.Option(Float)) -> Result(Float, String) { - case x >. 0.0 { - True -> - case base { - option.Some(a) -> - case a >. 0.0 && a != 1.0 { - True -> { - // Apply the "change of base formula" - let assert Ok(numerator) = logarithm_10(x) - let assert Ok(denominator) = logarithm_10(a) - numerator /. denominator - |> Ok - } - False -> - "Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1." - |> Error - } - _ -> - "Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1." - |> Error - } - _ -> - "Invalid input argument: x <= 0. Valid input is x > 0." - |> Error - } -} - -/// -/// -/// The The base-2 logarithm function: -/// -/// \\[ -/// \forall x \in \(0, \infty), \\; \log_{2}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example () { -/// elementary.logarithm_2(1.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.logarithm_2(2.0) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.logarithm_2(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn logarithm_2(x: Float) -> Result(Float, String) { - case x >. 0.0 { - True -> - do_logarithm_2(x) - |> Ok - False -> - "Invalid input argument: x <= 0. Valid input is x > 0." - |> Error - } -} - -@external(erlang, "math", "log2") -@external(javascript, "../../maths.mjs", "logarithm_2") -fn do_logarithm_2(a: Float) -> Float - -/// -/// -/// The base-10 logarithm function: -/// -/// \\[ -/// \forall x \in \(0, \infty), \\; \log_{10}{(x)} = y \in \(-\infty, +\infty\) -/// \\] -/// -/// The function takes a number $$x$$ in its domain $$\(0, \infty\)$$ as input and returns -/// a numeric value $$y$$ that lies in the range $$\(-\infty, \infty\)$$. -/// If the input value is outside the domain of the function an error is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example () { -/// elementary.logarithm_10(1.0) -/// |> should.equal(Ok(0.0)) -/// -/// elementary.logarithm_10(10.0) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.logarithm_10(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn logarithm_10(x: Float) -> Result(Float, String) { - case x >. 0.0 { - True -> - do_logarithm_10(x) - |> Ok - False -> - "Invalid input argument: x <= 0. Valid input is x > 0." - |> Error - } -} - -@external(erlang, "math", "log10") -@external(javascript, "../../maths.mjs", "logarithm_10") -fn do_logarithm_10(a: Float) -> Float - -/// -/// -/// -/// -/// The exponentiation function: $$y = x^{a}$$. -/// -/// Note that the function is not defined if: -/// 1. The base is negative ($$x < 0$$) and the exponent is fractional -/// ($$a = \frac{n}{m}$$ is an irrreducible fraction). An error will be returned -/// as an imaginary number will otherwise have to be returned. -/// 2. The base is zero ($$x = 0$$) and the exponent is negative ($$a < 0$$) then the -/// expression is equivalent to the exponent $$y$$ divided by $$0$$ and an -/// error will have to be returned as the expression is otherwise undefined. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.power(2., -1.) -/// |> should.equal(Ok(0.5)) -/// -/// elementary.power(2., 2.) -/// |> should.equal(Ok(4.0)) -/// -/// elementary.power(-1., 0.5) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn power(x: Float, y: Float) -> Result(Float, String) { - let fractional: Bool = do_ceiling(y) -. y >. 0.0 - // In the following check: - // 1. If the base (x) is negative and the exponent (y) is fractional - // then return an error as it will otherwise be an imaginary number - // 2. If the base (x) is 0 and the exponent (y) is negative then the - // expression is equivalent to the exponent (y) divided by 0 and an - // error should be returned - case x <. 0.0 && fractional || x == 0.0 && y <. 0.0 { - True -> - "Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0." - |> Error - False -> - do_power(x, y) - |> Ok - } -} - -@external(erlang, "math", "pow") -@external(javascript, "../../maths.mjs", "power") -fn do_power(a: Float, b: Float) -> Float - -@external(erlang, "math", "ceil") -@external(javascript, "../../maths.mjs", "ceiling") -fn do_ceiling(a: Float) -> Float - -/// -/// -/// The square root function: $$y = \sqrt[2]{x} = x^{\frac{1}{2}}$$. -/// -/// Note that the function is not defined if: -/// 1. The input is negative ($$x < 0$$). An error will be returned -/// as an imaginary number will otherwise have to be returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.square_root(1.0) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.square_root(4.0) -/// |> should.equal(Ok(2.0)) -/// -/// elementary.square_root(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn square_root(x: Float) -> Result(Float, String) { - // In the following check: - // 1. If x is negative then return an error as it will otherwise be an - // imaginary number - case x <. 0.0 { - True -> - "Invalid input argument: x < 0." - |> Error - False -> { - let assert Ok(result) = power(x, 1.0 /. 2.0) - result - |> Ok - } - } -} - -/// -/// -/// The cube root function: $$y = \sqrt[3]{x} = x^{\frac{1}{3}}$$. -/// -/// Note that the function is not defined if: -/// 1. The input is negative ($$x < 0$$). An error will be returned -/// as an imaginary number will otherwise have to be returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.cube_root(1.0) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.cube_root(27.0) -/// |> should.equal(Ok(3.0)) -/// -/// elementary.cube_root(-1.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn cube_root(x: Float) -> Result(Float, String) { - // In the following check: - // 1. If x is negative then return an error as it will otherwise be an - // imaginary number - case x <. 0.0 { - True -> - "Invalid input argument: x < 0." - |> Error - False -> { - let assert Ok(result) = power(x, 1.0 /. 3.0) - result - |> Ok - } - } -} - -/// -/// -/// The $$n$$'th root function: $$y = \sqrt[n]{x} = x^{\frac{1}{n}}$$. -/// -/// Note that the function is not defined if: -/// 1. The input is negative ($$x < 0$$). An error will be returned -/// as an imaginary number will otherwise have to be returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// elementary.nth_root(1.0, 2) -/// |> should.equal(Ok(1.0)) -/// -/// elementary.nth_root(27.0, 3) -/// |> should.equal(Ok(3.0)) -/// -/// elementary.nth_root(256.0, 4) -/// |> should.equal(Ok(4.0)) -/// -/// elementary.nth_root(-1.0, 2) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn nth_root(x: Float, n: Int) -> Result(Float, String) { - // In the following check: - // 1. If x is negative then return an error as it will otherwise be an - // imaginary number - case x <. 0.0 { - True -> - "Invalid input argument: x < 0. Valid input is x > 0" - |> Error - False -> - case n >= 1 { - True -> { - let assert Ok(result) = power(x, 1.0 /. int.to_float(n)) - result - |> Ok - } - False -> - "Invalid input argument: n < 1. Valid input is n >= 2." - |> Error - } - } -} - -/// -/// -/// The mathematical constant pi: $$\pi \approx 3.1415\dots$$ -/// -/// -/// -pub fn pi() -> Float { - do_pi() -} - -@external(erlang, "math", "pi") -@external(javascript, "../../maths.mjs", "pi") -fn do_pi() -> Float - -/// -/// -/// The mathematical constant tau: $$\tau = 2 \cdot \pi \approx 6.283\dots$$ -/// -/// -/// -pub fn tau() -> Float { - 2.0 *. pi() -} - -/// -/// -/// Euler's number $$e \approx 2.71828\dots$$. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// -/// pub fn example() { -/// // Test that the constant is approximately equal to 2.7128... -/// elementary.e() -/// |> elementary.is_close(2.7128, 0.0, 0.000001) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn e() -> Float { - exponential(1.0) -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam deleted file mode 100644 index 1dab2b4..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/metrics.gleam +++ /dev/null @@ -1,560 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Metrics: A module offering functions for calculating distances and other types of metrics. -//// -//// * **Distances** -//// * [`norm`](#norm) -//// * [`manhatten_distance`](#float_manhatten_distance) -//// * [`minkowski_distance`](#minkowski_distance) -//// * [`euclidean_distance`](#euclidean_distance) -//// * **Basic statistical measures** -//// * [`mean`](#mean) -//// * [`median`](#median) -//// * [`variance`](#variance) -//// * [`standard_deviation`](#standard_deviation) -//// - -import gleam_community/maths/elementary -import gleam_community/maths/piecewise -import gleam_community/maths/arithmetics -import gleam_community/maths/predicates -import gleam_community/maths/conversion -import gleam/list -import gleam/pair -import gleam/float - -/// -/// -/// Calculcate the $$p$$-norm of a list (representing a vector): -/// -/// \\[ -/// \left( \sum_{i=1}^n \left|x_i\right|^{p} \right)^{\frac{1}{p}} -/// \\] -/// -/// In the formula, $$n$$ is the length of the list and $$x_i$$ is the value in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/metrics -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// -/// [1.0, 1.0, 1.0] -/// |> metrics.norm(1.0) -/// |> predicates.is_close(3.0, 0.0, tol) -/// |> should.be_true() -/// -/// [1.0, 1.0, 1.0] -/// |> metrics.norm(-1.0) -/// |> predicates.is_close(0.3333333333333333, 0.0, tol) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn norm(arr: List(Float), p: Float) -> Float { - case arr { - [] -> 0.0 - _ -> { - let agg: Float = - arr - |> list.fold( - 0.0, - fn(acc: Float, a: Float) -> Float { - let assert Ok(result) = - elementary.power(piecewise.float_absolute_value(a), p) - result +. acc - }, - ) - let assert Ok(result) = elementary.power(agg, 1.0 /. p) - result - } - } -} - -/// -/// -/// Calculcate the Manhatten distance between two lists (representing vectors): -/// -/// \\[ -/// \sum_{i=1}^n \left|x_i - y_i \right| -/// \\] -/// -/// In the formula, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/metrics -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// -/// // Empty lists returns 0.0 -/// metrics.float_manhatten_distance([], []) -/// |> should.equal(Ok(0.0)) -/// -/// // Differing lengths returns error -/// metrics.manhatten_distance([], [1.0]) -/// |> should.be_error() -/// -/// let assert Ok(result) = metrics.manhatten_distance([0.0, 0.0], [1.0, 2.0]) -/// result -/// |> predicates.is_close(3.0, 0.0, tol) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn manhatten_distance( - xarr: List(Float), - yarr: List(Float), -) -> Result(Float, String) { - minkowski_distance(xarr, yarr, 1.0) -} - -/// -/// -/// Calculcate the Minkowski distance between two lists (representing vectors): -/// -/// \\[ -/// \left( \sum_{i=1}^n \left|x_i - y_i \right|^{p} \right)^{\frac{1}{p}} -/// \\] -/// -/// In the formula, $$p >= 1$$ is the order, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. -/// -/// The Minkowski distance is a generalization of both the Euclidean distance ($$p=2$$) and the Manhattan distance ($$p = 1$$). -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/metrics -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// -/// // Empty lists returns 0.0 -/// metrics.minkowski_distance([], [], 1.0) -/// |> should.equal(Ok(0.0)) -/// -/// // Differing lengths returns error -/// metrics.minkowski_distance([], [1.0], 1.0) -/// |> should.be_error() -/// -/// // Test order < 1 -/// metrics.minkowski_distance([0.0, 0.0], [0.0, 0.0], -1.0) -/// |> should.be_error() -/// -/// let assert Ok(result) = metrics.minkowski_distance([0.0, 0.0], [1.0, 2.0], 1.0) -/// result -/// |> predicates.is_close(3.0, 0.0, tol) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn minkowski_distance( - xarr: List(Float), - yarr: List(Float), - p: Float, -) -> Result(Float, String) { - let xlen: Int = list.length(xarr) - let ylen: Int = list.length(yarr) - case xlen == ylen { - False -> - "Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)." - |> Error - True -> - case p <. 1.0 { - True -> - "Invalid input argument: p < 1. Valid input is p >= 1." - |> Error - False -> - list.zip(xarr, yarr) - |> list.map(fn(tuple: #(Float, Float)) -> Float { - pair.first(tuple) -. pair.second(tuple) - }) - |> norm(p) - |> Ok - } - } -} - -/// -/// -/// Calculcate the Euclidean distance between two lists (representing vectors): -/// -/// \\[ -/// \left( \sum_{i=1}^n \left|x_i - y_i \right|^{2} \right)^{\frac{1}{2}} -/// \\] -/// -/// In the formula, $$n$$ is the length of the two lists and $$x_i, y_i$$ are the values in the respective input lists indexed by $$i, j$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/metrics -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// -/// // Empty lists returns 0.0 -/// metrics.euclidean_distance([], []) -/// |> should.equal(Ok(0.0)) -/// -/// // Differing lengths returns error -/// metrics.euclidean_distance([], [1.0]) -/// |> should.be_error() -/// -/// let assert Ok(result) = metrics.euclidean_distance([0.0, 0.0], [1.0, 2.0]) -/// result -/// |> predicates.is_close(2.23606797749979, 0.0, tol) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn euclidean_distance( - xarr: List(Float), - yarr: List(Float), -) -> Result(Float, String) { - minkowski_distance(xarr, yarr, 2.0) -} - -/// -/// -/// Calculcate the arithmetic mean of the elements in a list: -/// -/// \\[ -/// \bar{x} = \frac{1}{n}\sum_{i=1}^n x_i -/// \\] -/// -/// In the formula, $$n$$ is the sample size (the length of the list) and -/// $$x_i$$ is the sample point in the input list indexed by $$i$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/metrics -/// -/// pub fn example () { -/// // An empty list returns an error -/// [] -/// |> metrics.mean() -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [1., 2., 3.] -/// |> metrics.mean() -/// |> should.equal(Ok(2.)) -/// } -///
-/// -/// -/// -pub fn mean(arr: List(Float)) -> Result(Float, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> - arr - |> arithmetics.float_sum() - |> fn(a: Float) -> Float { - a /. conversion.int_to_float(list.length(arr)) - } - |> Ok - } -} - -/// -/// -/// Calculcate the median of the elements in a list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/metrics -/// -/// pub fn example () { -/// // An empty list returns an error -/// [] -/// |> metrics.median() -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [1., 2., 3.] -/// |> metrics.median() -/// |> should.equal(Ok(2.)) -/// -/// [1., 2., 3., 4.] -/// |> metrics.median() -/// |> should.equal(Ok(2.5)) -/// } -///
-/// -/// -/// -pub fn median(arr: List(Float)) -> Result(Float, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let count: Int = list.length(arr) - let mid: Int = list.length(arr) / 2 - let sorted: List(Float) = list.sort(arr, float.compare) - case predicates.is_odd(count) { - // If there is an odd number of elements in the list, then the median - // is just the middle value - True -> { - let assert Ok(val0) = list.at(sorted, mid) - val0 - |> Ok - } - // If there is an even number of elements in the list, then the median - // is the mean of the two middle values - False -> { - let assert Ok(val0) = list.at(sorted, mid - 1) - let assert Ok(val1) = list.at(sorted, mid) - [val0, val1] - |> mean() - } - } - } - } -} - -/// -/// -/// Calculcate the sample variance of the elements in a list: -/// \\[ -/// s^{2} = \frac{1}{n - d} \sum_{i=1}^{n}(x_i - \bar{x}) -/// \\] -/// -/// In the formula, $$n$$ is the sample size (the length of the list) and -/// $$x_i$$ is the sample point in the input list indexed by $$i$$. -/// Furthermore, $$\bar{x}$$ is the sample mean and $$d$$ is the "Delta -/// Degrees of Freedom", and is by default set to $$d = 0$$, which gives a biased -/// estimate of the sample variance. Setting $$d = 1$$ gives an unbiased estimate. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/metrics -/// -/// pub fn example () { -/// // Degrees of freedom -/// let ddof: Int = 1 -/// -/// // An empty list returns an error -/// [] -/// |> metrics.variance(ddof) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [1., 2., 3.] -/// |> metrics.variance(ddof) -/// |> should.equal(Ok(1.)) -/// } -///
-/// -/// -/// -pub fn variance(arr: List(Float), ddof: Int) -> Result(Float, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> - case ddof < 0 { - True -> - "Invalid input argument: ddof < 0. Valid input is ddof >= 0." - |> Error - False -> { - let assert Ok(mean) = mean(arr) - arr - |> list.map(fn(a: Float) -> Float { - let assert Ok(result) = elementary.power(a -. mean, 2.0) - result - }) - |> arithmetics.float_sum() - |> fn(a: Float) -> Float { - a /. { - conversion.int_to_float(list.length(arr)) -. conversion.int_to_float( - ddof, - ) - } - } - |> Ok - } - } - } -} - -/// -/// -/// Calculcate the sample standard deviation of the elements in a list: -/// \\[ -/// s = \left(\frac{1}{n - d} \sum_{i=1}^{n}(x_i - \bar{x})\right)^{\frac{1}{2}} -/// \\] -/// -/// In the formula, $$n$$ is the sample size (the length of the list) and -/// $$x_i$$ is the sample point in the input list indexed by $$i$$. -/// Furthermore, $$\bar{x}$$ is the sample mean and $$d$$ is the "Delta -/// Degrees of Freedom", and is by default set to $$d = 0$$, which gives a biased -/// estimate of the sample standard deviation. Setting $$d = 1$$ gives an unbiased estimate. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/metrics -/// -/// pub fn example () { -/// // Degrees of freedom -/// let ddof: Int = 1 -/// -/// // An empty list returns an error -/// [] -/// |> metrics.standard_deviationddof) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [1., 2., 3.] -/// |> metrics.standard_deviation(ddof) -/// |> should.equal(Ok(1.)) -/// } -///
-/// -/// -/// -pub fn standard_deviation(arr: List(Float), ddof: Int) -> Result(Float, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> - case ddof < 0 { - True -> - "Invalid input argument: ddof < 0. Valid input is ddof >= 0." - |> Error - False -> { - let assert Ok(variance) = variance(arr, ddof) - // The computed variance will always be positive - // So an error should never be returned - let assert Ok(stdev) = elementary.square_root(variance) - stdev - |> Ok - } - } - } -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam deleted file mode 100644 index 3b40a18..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/piecewise.gleam +++ /dev/null @@ -1,1228 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Piecewise: A module containing functions that have different definitions depending on conditions or intervals of their domain. -//// -//// * **Rounding functions** -//// * [`ceiling`](#ceiling) -//// * [`floor`](#floor) -//// * [`truncate`](#truncate) -//// * [`round`](#round) -//// * **Sign and absolute value functions** -//// * [`float_absolute_value`](#float_absolute_value) -//// * [`int_absolute_value`](#int_absolute_value) -//// * [`float_absolute_difference`](#float_absolute_difference) -//// * [`int_absolute_difference`](#int_absolute_difference) -//// * [`float_sign`](#float_sign) -//// * [`int_sign`](#int_sign) -//// * [`float_copy_sign`](#float_copy_sign) -//// * [`int_copy_sign`](#float_copy_sign) -//// * [`float_flip_sign`](#float_flip_sign) -//// * [`int_flip_sign`](#int_flip_sign) -//// * **Misc. mathematical functions** -//// * [`minimum`](#minimum) -//// * [`maximum`](#maximum) -//// * [`minmax`](#minmax) -//// * [`list_minimum`](#list_minimum) -//// * [`list_maximum`](#list_maximum) -//// * [`extrema`](#extrema) -//// * [`arg_minimum`](#arg_minimum) -//// * [`arg_maximum`](#arg_maximum) -//// - -import gleam/option -import gleam/list -import gleam/order -import gleam/pair -import gleam/int -import gleam_community/maths/conversion -import gleam_community/maths/elementary - -/// -/// -/// The ceiling function rounds a given input value $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is larger than or equal to the input $$x$$. -/// -/// Note: The ceiling function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundUp`. -/// -///
-/// Details -/// -/// For example, $$12.0654$$ is rounded to: -/// - $$13.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) -/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.066$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// For example, $$12.0654$$ is rounded to: -/// - $$20.0$$ for 1 digit places before the decimal point (`digit = -1`) -/// - $$100.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$1000.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -///
-/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.ceiling(12.0654, option.Some(1)) -/// |> should.equal(Ok(12.1)) -/// -/// piecewise.ceiling(12.0654, option.Some(2)) -/// |> should.equal(Ok(12.07)) -/// -/// piecewise.ceiling(12.0654, option.Some(3)) -/// |> should.equal(Ok(12.066)) -/// } -///
-/// -/// -/// -pub fn ceiling(x: Float, digits: option.Option(Int)) -> Result(Float, String) { - round(x, digits, option.Some(RoundUp)) -} - -/// -/// -/// The floor function rounds input $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is less than or equal to the input $$x$$. -/// -/// Note: The floor function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundDown`. -/// -///
-/// Details -/// -/// For example, $$12.0654$$ is rounded to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) -/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -///
-/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.floor(12.0654, option.Some(1)) -/// |> should.equal(Ok(12.0)) -/// -/// piecewise.floor(12.0654, option.Some(2)) -/// |> should.equal(Ok(12.06)) -/// -/// piecewise.floor(12.0654, option.Some(3)) -/// |> should.equal(Ok(12.065)) -/// } -///
-/// -/// -/// -pub fn floor(x: Float, digits: option.Option(Int)) -> Result(Float, String) { - round(x, digits, option.Some(RoundDown)) -} - -/// -/// -/// The truncate function rounds a given input $$x \in \mathbb{R}$$ to the nearest integer value (at the specified digit) that is less than or equal to the absolute value of the input $$x$$. -/// -/// Note: The truncate function is used as an alias for the rounding function [`round`](#round) with rounding mode `RoundToZero`. -/// -///
-/// Details -/// -/// For example, $$12.0654$$ is rounded to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) -/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -///
-/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.truncate(12.0654, option.Some(1)) -/// |> should.equal(Ok(12.0)) -/// -/// piecewise.truncate(12.0654, option.Some(2)) -/// |> should.equal(Ok(12.0)) -/// -/// piecewise.truncate(12.0654, option.Some(3)) -/// |> should.equal(Ok(12.0)) -/// } -///
-/// -/// -/// -pub fn truncate(x: Float, digits: option.Option(Int)) -> Result(Float, String) { - round(x, digits, option.Some(RoundToZero)) -} - -/// -/// -/// The function rounds a float to a specific number of digits (after the decimal place or before if negative) using a specified rounding mode. -/// -/// Valid rounding modes include: -/// - `RoundNearest` (default): The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded to the nearest even integer. -/// - `RoundTiesAway`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded away from zero (C/C++ rounding behavior). -/// - `RoundTiesUp`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) with ties (fractional values of 0.5) being rounded towards $$+\infty$$ (Java/JavaScript rounding behaviour). -/// - `RoundToZero`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is less than or equal to the absolute value of the input $$x$$. An alias for this rounding mode is [`truncate`](#truncate). -/// - `RoundDown`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is less than or equal to the input $$x$$. An alias for this rounding mode is [`floor`](#floor). -/// - `RoundUp`: The input $$x$$ is rounded to the nearest integer value (at the specified digit) that is larger than or equal to the input $$x$$. An alias for this rounding mode is [`ceiling`](#ceiling). -/// -///
-/// Details -/// -/// The `RoundNearest` rounding mode, rounds $$12.0654$$ to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) -/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -/// The `RoundTiesAway` rounding mode, rounds $$12.0654$$ to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) -/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -/// The `RoundTiesUp` rounding mode, rounds $$12.0654$$ to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.1$$ for 1 digits after the decimal point (`digits = 1`) -/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -/// The `RoundToZero` rounding mode, rounds $$12.0654$$ to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.0$$ for 1 digit after the decimal point (`digits = 1`) -/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -/// The `RoundDown` rounding mode, rounds $$12.0654$$ to: -/// - $$12.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.0$$ for 1 digits after the decimal point (`digits = 1`) -/// - $$12.06$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.065$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$10.0$$ for 1 digit before the decimal point (`digits = -1`) -/// - $$0.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$0.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -/// The `RoundUp` rounding mode, rounds $$12.0654$$ to: -/// - $$13.0$$ for 0 digits after the decimal point (`digits = 0`) -/// - $$12.1$$ for 1 digit after the decimal point (`digits = 1`) -/// - $$12.07$$ for 2 digits after the decimal point (`digits = 2`) -/// - $$12.066$$ for 3 digits after the decimal point (`digits = 3`) -/// -/// It is also possible to specify a negative number of digits. In that case, the negative number refers to the digits before the decimal point. -/// - $$20.0$$ for 1 digit places before the decimal point (`digit = -1`) -/// - $$100.0$$ for 2 digits before the decimal point (`digits = -2`) -/// - $$1000.0$$ for 3 digits before the decimal point (`digits = -3`) -/// -///
-/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/option -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// // The default number of digits is 0 if None is provided -/// piecewise.round(12.0654, option.None, option.Some(piecewise.RoundNearest)) -/// |> should.equal(Ok(12.0)) -/// -/// // The default rounding mode is "RoundNearest" if None is provided -/// piecewise.round(12.0654, option.None, option.None) -/// |> should.equal(Ok(12.0)) -/// -/// // Try different rounding modes -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundNearest)) -/// |> should.equal(Ok(12.07)) -/// -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundTiesAway)) -/// |> should.equal(Ok(12.07)) -/// -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundTiesUp)) -/// |> should.equal(Ok(12.07)) -/// -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundToZero)) -/// |> should.equal(Ok(12.06)) -/// -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundDown)) -/// |> should.equal(Ok(12.06)) -/// -/// piecewise.round(12.0654, option.Some(2), option.Some(piecewise.RoundUp)) -/// |> should.equal(Ok(12.07)) -/// } -///
-/// -/// -/// -pub fn round( - x: Float, - digits: option.Option(Int), - mode: option.Option(RoundingMode), -) -> Result(Float, String) { - case digits { - option.Some(a) -> { - let assert Ok(p) = elementary.power(10.0, conversion.int_to_float(a)) - // Round the given input x using at the specified digit - do_round(p, x, mode) - } - // Round the given input x using at the default digit - option.None -> do_round(1.0, x, mode) - } -} - -pub type RoundingMode { - RoundNearest - RoundTiesAway - RoundTiesUp - RoundToZero - RoundDown - RoundUp -} - -fn do_round( - p: Float, - x: Float, - mode: option.Option(RoundingMode), -) -> Result(Float, String) { - case mode { - // Determine the rounding mode - option.Some(RoundNearest) -> - round_to_nearest(p, x) - |> Ok - option.Some(RoundTiesAway) -> - round_ties_away(p, x) - |> Ok - option.Some(RoundTiesUp) -> - round_ties_up(p, x) - |> Ok - option.Some(RoundToZero) -> - round_to_zero(p, x) - |> Ok - option.Some(RoundDown) -> - round_down(p, x) - |> Ok - option.Some(RoundUp) -> - round_up(p, x) - |> Ok - // Otherwise, use the default rounding mode - option.None -> - round_to_nearest(p, x) - |> Ok - } -} - -fn round_to_nearest(p: Float, x: Float) -> Float { - let xabs: Float = float_absolute_value(x) *. p - let xabs_truncated: Float = truncate_float(xabs) - let remainder: Float = xabs -. xabs_truncated - case remainder { - _ if remainder >. 0.5 -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p - _ if remainder == 0.5 -> { - let assert Ok(is_even) = int.modulo(conversion.float_to_int(xabs), 2) - case is_even == 0 { - True -> float_sign(x) *. xabs_truncated /. p - False -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p - } - } - _ -> float_sign(x) *. xabs_truncated /. p - } -} - -fn round_ties_away(p: Float, x: Float) -> Float { - let xabs: Float = float_absolute_value(x) *. p - let remainder: Float = xabs -. truncate_float(xabs) - case remainder { - _ if remainder >=. 0.5 -> float_sign(x) *. truncate_float(xabs +. 1.0) /. p - _ -> float_sign(x) *. truncate_float(xabs) /. p - } -} - -fn round_ties_up(p: Float, x: Float) -> Float { - let xabs: Float = float_absolute_value(x) *. p - let xabs_truncated: Float = truncate_float(xabs) - let remainder: Float = xabs -. xabs_truncated - case remainder { - _ if remainder >=. 0.5 && x >=. 0.0 -> - float_sign(x) *. truncate_float(xabs +. 1.0) /. p - _ -> float_sign(x) *. xabs_truncated /. p - } -} - -// Rounding mode: ToZero / Truncate -fn round_to_zero(p: Float, x: Float) -> Float { - truncate_float(x *. p) /. p -} - -fn truncate_float(x: Float) -> Float { - do_truncate_float(x) -} - -@external(erlang, "erlang", "trunc") -@external(javascript, "../../maths.mjs", "truncate") -fn do_truncate_float(a: Float) -> Float - -// Rounding mode: Down / Floor -fn round_down(p: Float, x: Float) -> Float { - do_floor(x *. p) /. p -} - -@external(erlang, "math", "floor") -@external(javascript, "../../maths.mjs", "floor") -fn do_floor(a: Float) -> Float - -// Rounding mode: Up / Ceiling -fn round_up(p: Float, x: Float) -> Float { - do_ceiling(x *. p) /. p -} - -@external(erlang, "math", "ceil") -@external(javascript, "../../maths.mjs", "ceiling") -fn do_ceiling(a: Float) -> Float - -/// -/// -/// The absolute value: -/// -/// \\[ -/// \forall x, y \in \mathbb{R}, \\; |x| \in \mathbb{R}_{+}. -/// \\] -/// -/// The function takes an input $$x$$ and returns a positive float value. -/// -/// -/// -/// -/// -pub fn float_absolute_value(x: Float) -> Float { - case x >. 0.0 { - True -> x - False -> -1.0 *. x - } -} - -/// -/// -/// The absolute value: -/// -/// \\[ -/// \forall x, y \in \mathbb{Z}, \\; |x| \in \mathbb{Z}_{+}. -/// \\] -/// -/// The function takes an input $$x$$ and returns a positive integer value. -/// -/// -/// -/// -/// -pub fn int_absolute_value(x: Int) -> Int { - case x > 0 { - True -> x - False -> -1 * x - } -} - -/// -/// -/// The absolute difference: -/// -/// \\[ -/// \forall x, y \in \mathbb{R}, \\; |x - y| \in \mathbb{R}_{+}. -/// \\] -/// -/// The function takes two inputs $$x$$ and $$y$$ and returns a positive float -/// value which is the the absolute difference of the inputs. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.float_absolute_difference(-10.0, 10.0) -/// |> should.equal(20.0) -/// -/// piecewise.float_absolute_difference(0.0, -2.0) -/// |> should.equal(2.0) -/// } -///
-/// -/// -/// -pub fn float_absolute_difference(a: Float, b: Float) -> Float { - a -. b - |> float_absolute_value() -} - -/// -/// -/// The absolute difference: -/// -/// \\[ -/// \forall x, y \in \mathbb{Z}, \\; |x - y| \in \mathbb{Z}_{+}. -/// \\] -/// -/// The function takes two inputs $$x$$ and $$y$$ and returns a positive integer value which is the the absolute difference of the inputs. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.absolute_difference(-10, 10) -/// |> should.equal(20) -/// -/// piecewise.absolute_difference(0, -2) -/// |> should.equal(2) -/// } -///
-/// -/// -/// -pub fn int_absolute_difference(a: Int, b: Int) -> Int { - a - b - |> int_absolute_value() -} - -/// -/// -/// The function takes an input $$x \in \mathbb{R}$$ and returns the sign of -/// the input, indicating whether it is positive (+1.0), negative (-1.0), or -/// zero (0.0). -/// -/// -/// -pub fn float_sign(x: Float) -> Float { - do_float_sign(x) -} - -@target(erlang) -fn do_float_sign(x: Float) -> Float { - case x <. 0.0 { - True -> -1.0 - False -> - case x == 0.0 { - True -> 0.0 - False -> 1.0 - } - } -} - -@target(javascript) -@external(javascript, "../../maths.mjs", "sign") -fn do_float_sign(a: Float) -> Float - -/// -/// -/// The function takes an input $$x \in \mathbb{Z}$$ and returns the sign of -/// the input, indicating whether it is positive (+1), negative (-1), or zero -/// (0). -/// -/// -/// -pub fn int_sign(x: Int) -> Int { - do_int_sign(x) -} - -@target(erlang) -fn do_int_sign(x: Int) -> Int { - case x < 0 { - True -> -1 - False -> - case x == 0 { - True -> 0 - False -> 1 - } - } -} - -@target(javascript) -@external(javascript, "../../maths.mjs", "sign") -fn do_int_sign(a: Int) -> Int - -/// -/// -/// The function takes two arguments $$x, y \in \mathbb{R}$$ and returns $$x$$ such that it has the same sign as $$y$$. -/// -/// -/// -pub fn float_copy_sign(x: Float, y: Float) -> Float { - case float_sign(x) == float_sign(y) { - // x and y have the same sign, just return x - True -> x - // x and y have different signs: - // - x is positive and y is negative, then flip sign of x - // - x is negative and y is positive, then flip sign of x - False -> float_flip_sign(x) - } -} - -/// -/// -/// The function takes two arguments $$x, y \in \mathbb{Z}$$ and returns $$x$$ such that it has the same sign as $$y$$. -/// -/// -/// -pub fn int_copy_sign(x: Int, y: Int) -> Int { - case int_sign(x) == int_sign(y) { - // x and y have the same sign, just return x - True -> x - // x and y have different signs: - // - x is positive and y is negative, then flip sign of x - // - x is negative and y is positive, then flip sign of x - False -> int_flip_sign(x) - } -} - -/// -/// -/// The function flips the sign of a given input value $$x \in \mathbb{R}$$. -/// -/// -/// -pub fn float_flip_sign(x: Float) -> Float { - -1.0 *. x -} - -/// -/// -/// The function flips the sign of a given input value $$x \in \mathbb{Z}$$. -/// -/// -/// -pub fn int_flip_sign(x: Int) -> Int { - -1 * x -} - -/// -/// -/// The minimum function takes two arguments $$x, y$$ along with a function -/// for comparing $$x, y$$. The function returns the smallest of the two given -/// values. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.minimum(2.0, 1.5, float.compare) -/// |> should.equal(1.5) -/// -/// piecewise.minimum(1.5, 2.0, float.compare) -/// |> should.equal(1.5) -/// } -///
-/// -/// -/// -pub fn minimum(x: a, y: a, compare: fn(a, a) -> order.Order) -> a { - case compare(x, y) { - order.Lt -> x - order.Eq -> x - order.Gt -> y - } -} - -/// -/// -/// -/// -/// The maximum function takes two arguments $$x, y$$ along with a function -/// for comparing $$x, y$$. The function returns the largest of the two given -/// values. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.maximum(2.0, 1.5, float.compare) -/// |> should.equal(1.5) -/// -/// piecewise.maximum(1.5, 2.0, float.compare) -/// |> should.equal(1.5) -/// } -///
-/// -/// -/// -pub fn maximum(x: a, y: a, compare: fn(a, a) -> order.Order) -> a { - case compare(x, y) { - order.Lt -> y - order.Eq -> y - order.Gt -> x - } -} - -/// -/// -/// The minmax function takes two arguments $$x, y$$ along with a function -/// for comparing $$x, y$$. The function returns a tuple with the smallest -/// value first and largest second. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example() { -/// piecewise.minmax(2.0, 1.5, float.compare) -/// |> should.equal(#(1.5, 2.0)) -/// -/// piecewise.minmax(1.5, 2.0, float.compare) -/// |> should.equal(#(1.5, 2.0)) -/// } -///
-/// -/// -/// -pub fn minmax(x: a, y: a, compare: fn(a, a) -> order.Order) -> #(a, a) { - #(minimum(x, y, compare), maximum(x, y, compare)) -} - -/// -/// -/// Returns the minimum value of a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/int -/// import gleam_community/maths/piecewise -/// -/// pub fn example () { -/// // An empty lists returns an error -/// [] -/// |> piecewise.list_minimum(int.compare) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [4, 4, 3, 2, 1] -/// |> piecewise.list_minimum(int.compare) -/// |> should.equal(Ok(1)) -/// } -///
-/// -/// -pub fn list_minimum( - arr: List(a), - compare: fn(a, a) -> order.Order, -) -> Result(a, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let assert Ok(val0) = list.at(arr, 0) - arr - |> list.fold( - val0, - fn(acc: a, element: a) { - case compare(element, acc) { - order.Lt -> element - _ -> acc - } - }, - ) - |> Ok - } - } -} - -/// -/// -/// Returns the maximum value of a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example () { -/// // An empty lists returns an error -/// [] -/// |> piecewise.list_maximum(float.compare) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [4.0, 4.0, 3.0, 2.0, 1.0] -/// |> piecewise.list_maximum(float.compare) -/// |> should.equal(Ok(4.0)) -/// } -///
-/// -/// -/// -pub fn list_maximum( - arr: List(a), - compare: fn(a, a) -> order.Order, -) -> Result(a, String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let assert Ok(val0) = list.at(arr, 0) - arr - |> list.fold( - val0, - fn(acc: a, element: a) { - case compare(acc, element) { - order.Lt -> element - _ -> acc - } - }, - ) - |> Ok - } - } -} - -/// -/// -/// -/// -/// Returns the indices of the minimum values in a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example () { -/// // An empty lists returns an error -/// [] -/// |> piecewise.arg_minimum(float.compare) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [4.0, 4.0, 3.0, 2.0, 1.0] -/// |> piecewise.arg_minimum(float.compare) -/// |> should.equal(Ok([4])) -/// } -///
-/// -/// -/// -pub fn arg_minimum( - arr: List(a), - compare: fn(a, a) -> order.Order, -) -> Result(List(Int), String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let assert Ok(min) = - arr - |> list_minimum(compare) - arr - |> list.index_map(fn(index: Int, element: a) -> Int { - case compare(element, min) { - order.Eq -> index - _ -> -1 - } - }) - |> list.filter(fn(index: Int) -> Bool { - case index { - -1 -> False - _ -> True - } - }) - |> Ok - } - } -} - -/// -/// -/// -/// -/// Returns the indices of the maximum values in a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example () { -/// // An empty lists returns an error -/// [] -/// |> piecewise.arg_maximum(float.compare) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [4.0, 4.0, 3.0, 2.0, 1.0] -/// |> piecewise.arg_maximum(float.compare) -/// |> should.equal(Ok([0, 1])) -/// } -///
-/// -/// -/// -pub fn arg_maximum( - arr: List(a), - compare: fn(a, a) -> order.Order, -) -> Result(List(Int), String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let assert Ok(max) = - arr - |> list_maximum(compare) - arr - |> list.index_map(fn(index: Int, element: a) -> Int { - case compare(element, max) { - order.Eq -> index - _ -> -1 - } - }) - |> list.filter(fn(index: Int) -> Bool { - case index { - -1 -> False - _ -> True - } - }) - |> Ok - } - } -} - -/// -/// -/// -/// -/// Returns a tuple consisting of the minimum and maximum values of a given list. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/float -/// import gleam_community/maths/piecewise -/// -/// pub fn example () { -/// // An empty lists returns an error -/// [] -/// |> piecewise.extrema(float.compare) -/// |> should.be_error() -/// -/// // Valid input returns a result -/// [4.0, 4.0, 3.0, 2.0, 1.0] -/// |> piecewise.extrema(float.compare) -/// |> should.equal(Ok(#(1.0, 4.0))) -/// } -///
-/// -/// -/// -pub fn extrema( - arr: List(a), - compare: fn(a, a) -> order.Order, -) -> Result(#(a, a), String) { - case arr { - [] -> - "Invalid input argument: The list is empty." - |> Error - _ -> { - let assert Ok(val_max) = list.at(arr, 0) - let assert Ok(val_min) = list.at(arr, 0) - arr - |> list.fold( - #(val_min, val_max), - fn(acc: #(a, a), element: a) { - let first: a = pair.first(acc) - let second: a = pair.second(acc) - case compare(element, first), compare(second, element) { - order.Lt, order.Lt -> #(element, element) - order.Lt, _ -> #(element, second) - _, order.Lt -> #(first, element) - _, _ -> #(first, second) - } - }, - ) - |> Ok - } - } -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam deleted file mode 100644 index f8d357c..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/predicates.gleam +++ /dev/null @@ -1,363 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Predicates: A module containing functions for testing various mathematical properties of numbers. -//// -//// * **Tests** -//// * [`is_close`](#is_close) -//// * [`list_all_close`](#all_close) -//// * [`is_fractional`](#is_fractional) -//// * [`is_power`](#is_power) -//// * [`is_perfect`](#is_perfect) -//// * [`is_even`](#is_even) -//// * [`is_odd`](#is_odd) - -import gleam/pair -import gleam/int -import gleam/list -import gleam/option -import gleam_community/maths/elementary -import gleam_community/maths/piecewise -import gleam_community/maths/arithmetics - -/// -/// -/// Determine if a given value $$a$$ is close to or equivalent to a reference value -/// $$b$$ based on supplied relative $$r_{tol}$$ and absolute $$a_{tol}$$ tolerance values. -/// The equivalance of the two given values are then determined based on the equation: -/// -/// \\[ -/// \|a - b\| \leq (a_{tol} + r_{tol} \cdot \|b\|) -/// \\] -/// -/// `True` is returned if statement holds, otherwise `False` is returned. -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example () { -/// let val: Float = 99. -/// let ref_val: Float = 100. -/// // We set 'atol' and 'rtol' such that the values are equivalent -/// // if 'val' is within 1 percent of 'ref_val' +/- 0.1 -/// let rtol: Float = 0.01 -/// let atol: Float = 0.10 -/// floatx.is_close(val, ref_val, rtol, atol) -/// |> should.be_true() -/// } -///
-/// -/// -/// -pub fn is_close(a: Float, b: Float, rtol: Float, atol: Float) -> Bool { - let x: Float = float_absolute_difference(a, b) - let y: Float = atol +. rtol *. float_absolute_value(b) - case x <=. y { - True -> True - False -> False - } -} - -fn float_absolute_value(x: Float) -> Float { - case x >. 0.0 { - True -> x - False -> -1.0 *. x - } -} - -fn float_absolute_difference(a: Float, b: Float) -> Float { - a -. b - |> float_absolute_value() -} - -/// -/// -/// Determine if a list of values are close to or equivalent to a another list of reference values. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam/list -/// import gleam_community/maths/tests -/// -/// pub fn example () { -/// let val: Float = 99. -/// let ref_val: Float = 100. -/// let xarr: List(Float) = list.repeat(val, 42) -/// let yarr: List(Float) = list.repeat(ref_val, 42) -/// // We set 'atol' and 'rtol' such that the values are equivalent -/// // if 'val' is within 1 percent of 'ref_val' +/- 0.1 -/// let rtol: Float = 0.01 -/// let atol: Float = 0.10 -/// tests.all_close(xarr, yarr, rtol, atol) -/// |> fn(zarr: Result(List(Bool), String)) -> Result(Bool, Nil) { -/// case zarr { -/// Ok(arr) -> -/// arr -/// |> list.all(fn(a: Bool) -> Bool { a }) -/// |> Ok -/// _ -> Nil |> Error -/// } -/// } -/// |> should.equal(Ok(True)) -/// } -///
-/// -/// -/// -pub fn all_close( - xarr: List(Float), - yarr: List(Float), - rtol: Float, - atol: Float, -) -> Result(List(Bool), String) { - let xlen: Int = list.length(xarr) - let ylen: Int = list.length(yarr) - case xlen == ylen { - False -> - "Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)." - |> Error - True -> - list.zip(xarr, yarr) - |> list.map(fn(z: #(Float, Float)) -> Bool { - is_close(pair.first(z), pair.second(z), rtol, atol) - }) - |> Ok - } -} - -/// -/// -/// Determine if a given value is fractional. -/// -/// `True` is returned if the given value is fractional, otherwise `False` is returned. -/// -///
-/// Example -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example () { -/// tests.is_fractional(0.3333) -/// |> should.equal(True) -/// -/// tests.is_fractional(1.0) -/// |> should.equal(False) -/// } -///
-/// -/// -/// -pub fn is_fractional(x: Float) -> Bool { - do_ceiling(x) -. x >. 0.0 -} - -@external(erlang, "math", "ceil") -@external(javascript, "../../maths.mjs", "ceiling") -fn do_ceiling(a: Float) -> Float - -/// -/// -/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is a power of another integer value $$y \in \mathbb{Z}$$. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example() { -/// // Check if 4 is a power of 2 (it is) -/// tests.is_power(4, 2) -/// |> should.equal(True) -/// -/// // Check if 5 is a power of 2 (it is not) -/// tests.is_power(5, 2) -/// |> should.equal(False) -/// } -///
-/// -/// -/// -pub fn is_power(x: Int, y: Int) -> Bool { - let assert Ok(value) = - elementary.logarithm(int.to_float(x), option.Some(int.to_float(y))) - let assert Ok(truncated) = piecewise.truncate(value, option.Some(0)) - let rem = value -. truncated - rem == 0.0 -} - -/// -/// -/// A function that tests whether a given integer value $$n \in \mathbb{Z}$$ is a perfect number. A number is perfect if it is equal to the sum of its proper positive divisors. -/// -///
-/// Details -/// -/// For example: -/// - $$6$$ is a perfect number since the divisors of 6 are $$1 + 2 + 3 = 6$$. -/// - $$28$$ is a perfect number since the divisors of 28 are $$1 + 2 + 4 + 7 + 14 = 28$$ -/// -///
-/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example() { -/// tests.is_perfect(6) -/// |> should.equal(True) -/// -/// tests.is_perfect(28) -/// |> should.equal(True) -/// } -///
-/// -/// -/// -pub fn is_perfect(n: Int) -> Bool { - do_sum(arithmetics.proper_divisors(n)) == n -} - -fn do_sum(arr: List(Int)) -> Int { - case arr { - [] -> 0 - _ -> - arr - |> list.fold(0, fn(acc: Int, a: Int) -> Int { a + acc }) - } -} - -/// -/// -/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is even. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example() { -/// tests.is_even(-3) -/// |> should.equal(False) -/// -/// tests.is_even(-4) -/// |> should.equal(True) -/// } -///
-/// -/// -/// -pub fn is_even(x: Int) -> Bool { - x % 2 == 0 -} - -/// -/// -/// A function that tests whether a given integer value $$x \in \mathbb{Z}$$ is odd. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/tests -/// -/// pub fn example() { -/// tests.is_odd(-3) -/// |> should.equal(True) -/// -/// tests.is_odd(-4) -/// |> should.equal(False) -/// } -///
-/// -/// -/// -pub fn is_odd(x: Int) -> Bool { - x % 2 != 0 -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam deleted file mode 100644 index e7c0388..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/sequences.gleam +++ /dev/null @@ -1,302 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Sequences: A module containing functions for generating various types of sequences, ranges and intervals. -//// -//// * **Ranges and intervals** -//// * [`arange`](#arange) -//// * [`linear_space`](#linear_space) -//// * [`logarithmic_space`](#logarithmic_space) -//// * [`geometric_space`](#geometric_space) - -import gleam_community/maths/elementary -import gleam_community/maths/piecewise -import gleam_community/maths/conversion -import gleam/list - -/// -/// -/// The function returns a list with evenly spaced values within a given interval based on a start, stop value and a given increment (step-length) between consecutive values. -/// The list returned includes the given start value but excludes the stop value. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/sequences -/// -/// pub fn example () { -/// sequences.arange(1.0, 5.0, 1.0) -/// |> should.equal([1.0, 2.0, 3.0, 4.0]) -/// -/// // No points returned since -/// // start smaller than stop and positive step -/// sequences.arange(5.0, 1.0, 1.0) -/// |> should.equal([]) -/// -/// // Points returned since -/// // start smaller than stop but negative step -/// sequences.arange(5.0, 1.0, -1.0) -/// |> should.equal([5.0, 4.0, 3.0, 2.0]) -/// } -///
-/// -/// -/// -pub fn arange(start: Float, stop: Float, step: Float) -> List(Float) { - case start >=. stop && step >. 0.0 || start <=. stop && step <. 0.0 { - True -> [] - False -> { - let direction: Float = case start <=. stop { - True -> 1.0 - False -> -1.0 - } - let step_abs: Float = piecewise.float_absolute_value(step) - let num: Float = piecewise.float_absolute_value(start -. stop) /. step_abs - - list.range(0, conversion.float_to_int(num) - 1) - |> list.map(fn(i: Int) -> Float { - start +. conversion.int_to_float(i) *. step_abs *. direction - }) - } - } -} - -/// -/// -/// Generate a linearly spaced list of points over a specified interval. The endpoint of the interval can optionally be included/excluded. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/sequences -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// let assert Ok(linspace) = sequences.linear_space(10.0, 50.0, 5, True) -/// let assert Ok(result) = -/// predicates.all_close(linspace, [10.0, 20.0, 30.0, 40.0, 50.0], 0.0, tol) -/// result -/// |> list.all(fn(x) { x == True }) -/// |> should.be_true() -/// -/// // A negative number of points (-5) does not work -/// sequences.linear_space(10.0, 50.0, -5, True) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn linear_space( - start: Float, - stop: Float, - num: Int, - endpoint: Bool, -) -> Result(List(Float), String) { - let direction: Float = case start <=. stop { - True -> 1.0 - False -> -1.0 - } - case num > 0 { - True -> - case endpoint { - True -> { - let increment: Float = - piecewise.float_absolute_value(start -. stop) /. conversion.int_to_float( - num - 1, - ) - list.range(0, num - 1) - |> list.map(fn(i: Int) -> Float { - start +. conversion.int_to_float(i) *. increment *. direction - }) - |> Ok - } - False -> { - let increment: Float = - piecewise.float_absolute_value(start -. stop) /. conversion.int_to_float( - num, - ) - list.range(0, num - 1) - |> list.map(fn(i: Int) -> Float { - start +. conversion.int_to_float(i) *. increment *. direction - }) - |> Ok - } - } - - False -> - "Invalid input: num < 0. Valid input is num > 0." - |> Error - } -} - -/// -/// -/// Generate a logarithmically spaced list of points over a specified interval. The endpoint of the interval can optionally be included/excluded. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/sequences -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// let assert Ok(logspace) = sequences.logarithmic_space(1.0, 3.0, 3, True, 10.0) -/// let assert Ok(result) = -/// predicates.all_close(logspace, [10.0, 100.0, 1000.0], 0.0, tol) -/// result -/// |> list.all(fn(x) { x == True }) -/// |> should.be_true() -/// -/// // A negative number of points (-3) does not work -/// sequences.logarithmic_space(1.0, 3.0, -3, False, 10.0) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn logarithmic_space( - start: Float, - stop: Float, - num: Int, - endpoint: Bool, - base: Float, -) -> Result(List(Float), String) { - case num > 0 { - True -> { - let assert Ok(linspace) = linear_space(start, stop, num, endpoint) - linspace - |> list.map(fn(i: Float) -> Float { - let assert Ok(result) = elementary.power(base, i) - result - }) - |> Ok - } - False -> - "Invalid input: num < 0. Valid input is num > 0." - |> Error - } -} - -/// -/// -/// The function returns a list of numbers spaced evenly on a log scale (a geometric progression). Each point in the list is a constant multiple of the previous. -/// The function is similar to the [`logarithmic_space`](#logarithmic_space) function, but with endpoints specified directly. -/// -///
-/// Example: -/// -/// import gleeunit/should -/// import gleam_community/maths/elementary -/// import gleam_community/maths/sequences -/// import gleam_community/maths/predicates -/// -/// pub fn example () { -/// let assert Ok(tol) = elementary.power(-10.0, -6.0) -/// let assert Ok(logspace) = sequences.geometric_space(10.0, 1000.0, 3, True) -/// let assert Ok(result) = -/// predicates.all_close(logspace, [10.0, 100.0, 1000.0], 0.0, tol) -/// result -/// |> list.all(fn(x) { x == True }) -/// |> should.be_true() -/// -/// // Input (start and stop can't be equal to 0.0) -/// sequences.geometric_space(0.0, 1000.0, 3, False) -/// |> should.be_error() -/// -/// sequences.geometric_space(-1000.0, 0.0, 3, False) -/// |> should.be_error() -/// -/// // A negative number of points (-3) does not work -/// sequences.geometric_space(10.0, 1000.0, -3, False) -/// |> should.be_error() -/// } -///
-/// -/// -/// -pub fn geometric_space( - start: Float, - stop: Float, - num: Int, - endpoint: Bool, -) -> Result(List(Float), String) { - case start == 0.0 || stop == 0.0 { - True -> - "" - |> Error - False -> - case num > 0 { - True -> { - let assert Ok(log_start) = elementary.logarithm_10(start) - let assert Ok(log_stop) = elementary.logarithm_10(stop) - logarithmic_space(log_start, log_stop, num, endpoint, 10.0) - } - False -> - "Invalid input: num < 0. Valid input is num > 0." - |> Error - } - } -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam b/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam deleted file mode 100644 index dfd9cbb..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community/maths/special.gleam +++ /dev/null @@ -1,205 +0,0 @@ -//// -//// -//// -//// -//// -//// -//// --- -//// -//// Special: A module containing special mathematical functions. -//// -//// * **Special mathematical functions** -//// * [`beta`](#beta) -//// * [`erf`](#erf) -//// * [`gamma`](#gamma) -//// * [`incomplete_gamma`](#incomplete_gamma) -//// - -import gleam_community/maths/conversion -import gleam_community/maths/elementary -import gleam_community/maths/piecewise -import gleam/list - -/// -/// -/// The beta function over the real numbers: -/// -/// \\[ -/// \text{B}(x, y) = \frac{\Gamma(x) \cdot \Gamma(y)}{\Gamma(x + y)} -/// \\] -/// -/// The beta function is evaluated through the use of the gamma function. -/// -/// -/// -pub fn beta(x: Float, y: Float) -> Float { - gamma(x) *. gamma(y) /. gamma(x +. y) -} - -/// -/// -/// The error function. -/// -/// -/// -pub fn erf(x: Float) -> Float { - let assert [a1, a2, a3, a4, a5]: List(Float) = [ - 0.254829592, -0.284496736, 1.421413741, -1.453152027, 1.061405429, - ] - let p: Float = 0.3275911 - - let sign: Float = piecewise.float_sign(x) - let x: Float = piecewise.float_absolute_value(x) - - // Formula 7.1.26 given in Abramowitz and Stegun. - let t: Float = 1.0 /. { 1.0 +. p *. x } - let y: Float = - 1.0 -. { { { { a5 *. t +. a4 } *. t +. a3 } *. t +. a2 } *. t +. a1 } *. t *. elementary.exponential( - -1.0 *. x *. x, - ) - sign *. y -} - -/// -/// -/// The gamma function over the real numbers. The function is essentially equal to the -/// factorial for any positive integer argument: $$\Gamma(n) = (n - 1)!$$ -/// -/// The implemented gamma function is approximated through Lanczos approximation -/// using the same coefficients used by the GNU Scientific Library. -/// -/// -/// -pub fn gamma(x: Float) -> Float { - gamma_lanczos(x) -} - -const lanczos_g: Float = 7.0 - -const lanczos_p: List(Float) = [ - 0.99999999999980993, 676.5203681218851, -1259.1392167224028, - 771.32342877765313, -176.61502916214059, 12.507343278686905, - -0.13857109526572012, 0.0000099843695780195716, 0.00000015056327351493116, -] - -fn gamma_lanczos(x: Float) -> Float { - case x <. 0.5 { - True -> - elementary.pi() /. { - elementary.sin(elementary.pi() *. x) *. gamma_lanczos(1.0 -. x) - } - False -> { - let z = x -. 1.0 - let x: Float = - list.index_fold( - lanczos_p, - 0.0, - fn(acc: Float, v: Float, index: Int) { - case index > 0 { - True -> acc +. v /. { z +. conversion.int_to_float(index) } - False -> v - } - }, - ) - let t: Float = z +. lanczos_g +. 0.5 - let assert Ok(v1) = elementary.power(2.0 *. elementary.pi(), 0.5) - let assert Ok(v2) = elementary.power(t, z +. 0.5) - v1 *. v2 *. elementary.exponential(-1.0 *. t) *. x - } - } -} - -/// -/// -/// The lower incomplete gamma function over the real numbers. -/// -/// The implemented incomplete gamma function is evaluated through a power series -/// expansion. -/// -/// -/// -pub fn incomplete_gamma(a: Float, x: Float) -> Result(Float, String) { - case a >. 0.0 && x >=. 0.0 { - True -> { - let assert Ok(v) = elementary.power(x, a) - v *. elementary.exponential(-1.0 *. x) *. incomplete_gamma_sum( - a, - x, - 1.0 /. a, - 0.0, - 1.0, - ) - |> Ok - } - - False -> - "Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0." - |> Error - } -} - -fn incomplete_gamma_sum( - a: Float, - x: Float, - t: Float, - s: Float, - n: Float, -) -> Float { - case t { - 0.0 -> s - _ -> { - let ns: Float = s +. t - let nt: Float = t *. { x /. { a +. n } } - incomplete_gamma_sum(a, x, nt, ns, n +. 1.0) - } - } -} diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl deleted file mode 100644 index ca266c8..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@arithmetics.erl +++ /dev/null @@ -1,172 +0,0 @@ --module(gleam_community@maths@arithmetics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([gcd/2, lcm/2, divisors/1, proper_divisors/1, float_sum/1, int_sum/1, float_product/1, int_product/1, float_cumulative_sum/1, int_cumulative_sum/1, float_cumumlative_product/1, int_cumulative_product/1]). - --spec do_gcd(integer(), integer()) -> integer(). -do_gcd(X, Y) -> - case X =:= 0 of - true -> - Y; - - false -> - _assert_subject = gleam@int:modulo(Y, X), - {ok, Z} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/arithmetics"/utf8>>, - function => <<"do_gcd"/utf8>>, - line => 93}) - end, - do_gcd(Z, X) - end. - --spec gcd(integer(), integer()) -> integer(). -gcd(X, Y) -> - Absx = gleam_community@maths@piecewise:int_absolute_value(X), - Absy = gleam_community@maths@piecewise:int_absolute_value(Y), - do_gcd(Absx, Absy). - --spec lcm(integer(), integer()) -> integer(). -lcm(X, Y) -> - Absx = gleam_community@maths@piecewise:int_absolute_value(X), - Absy = gleam_community@maths@piecewise:int_absolute_value(Y), - case do_gcd(Absx, Absy) of - 0 -> 0; - Gleam@denominator -> (Absx * Absy) div Gleam@denominator - end. - --spec find_divisors(integer()) -> list(integer()). -find_divisors(N) -> - Nabs = gleam_community@maths@piecewise:float_absolute_value( - gleam_community@maths@conversion:int_to_float(N) - ), - _assert_subject = gleam_community@maths@elementary:square_root(Nabs), - {ok, Sqrt_result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/arithmetics"/utf8>>, - function => <<"find_divisors"/utf8>>, - line => 176}) - end, - Max = gleam_community@maths@conversion:float_to_int(Sqrt_result) + 1, - _pipe = gleam@list:range(2, Max), - _pipe@1 = gleam@list:fold(_pipe, [1, N], fun(Acc, I) -> case (case I of - 0 -> 0; - Gleam@denominator -> N rem Gleam@denominator - end) =:= 0 of - true -> - [I, case I of - 0 -> 0; - Gleam@denominator@1 -> N div Gleam@denominator@1 - end | Acc]; - - false -> - Acc - end end), - _pipe@2 = gleam@list:unique(_pipe@1), - gleam@list:sort(_pipe@2, fun gleam@int:compare/2). - --spec divisors(integer()) -> list(integer()). -divisors(N) -> - find_divisors(N). - --spec proper_divisors(integer()) -> list(integer()). -proper_divisors(N) -> - Divisors = find_divisors(N), - _pipe = Divisors, - gleam@list:take(_pipe, gleam@list:length(Divisors) - 1). - --spec float_sum(list(float())) -> float(). -float_sum(Arr) -> - case Arr of - [] -> - +0.0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, +0.0, fun(Acc, A) -> A + Acc end) - end. - --spec int_sum(list(integer())) -> integer(). -int_sum(Arr) -> - case Arr of - [] -> - 0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec float_product(list(float())) -> float(). -float_product(Arr) -> - case Arr of - [] -> - 1.0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 1.0, fun(Acc, A) -> A * Acc end) - end. - --spec int_product(list(integer())) -> integer(). -int_product(Arr) -> - case Arr of - [] -> - 1; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 1, fun(Acc, A) -> A * Acc end) - end. - --spec float_cumulative_sum(list(float())) -> list(float()). -float_cumulative_sum(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, +0.0, fun(Acc, A) -> A + Acc end) - end. - --spec int_cumulative_sum(list(integer())) -> list(integer()). -int_cumulative_sum(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec float_cumumlative_product(list(float())) -> list(float()). -float_cumumlative_product(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 1.0, fun(Acc, A) -> A * Acc end) - end. - --spec int_cumulative_product(list(integer())) -> list(integer()). -int_cumulative_product(Arr) -> - case Arr of - [] -> - []; - - _ -> - _pipe = Arr, - gleam@list:scan(_pipe, 1, fun(Acc, A) -> A * Acc end) - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl deleted file mode 100644 index 17644c4..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@combinatorics.erl +++ /dev/null @@ -1,218 +0,0 @@ --module(gleam_community@maths@combinatorics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([combination/2, factorial/1, permutation/2, list_combination/2, list_permutation/1, cartesian_product/2]). - --spec combination(integer(), integer()) -> {ok, integer()} | {error, binary()}. -combination(N, K) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case (K < 0) orelse (K > N) of - true -> - _pipe@1 = 0, - {ok, _pipe@1}; - - false -> - case (K =:= 0) orelse (K =:= N) of - true -> - _pipe@2 = 1, - {ok, _pipe@2}; - - false -> - Min = case K < (N - K) of - true -> - K; - - false -> - N - K - end, - _pipe@3 = gleam@list:range(1, Min), - _pipe@4 = gleam@list:fold( - _pipe@3, - 1, - fun(Acc, X) -> case X of - 0 -> 0; - Gleam@denominator -> (Acc * ((N + 1) - X)) - div Gleam@denominator - end end - ), - {ok, _pipe@4} - end - end - end. - --spec factorial(integer()) -> {ok, integer()} | {error, binary()}. -factorial(N) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case N of - 0 -> - _pipe@1 = 1, - {ok, _pipe@1}; - - 1 -> - _pipe@2 = 1, - {ok, _pipe@2}; - - _ -> - _pipe@3 = gleam@list:range(1, N), - _pipe@4 = gleam@list:fold( - _pipe@3, - 1, - fun(Acc, X) -> Acc * X end - ), - {ok, _pipe@4} - end - end. - --spec permutation(integer(), integer()) -> {ok, integer()} | {error, binary()}. -permutation(N, K) -> - case N < 0 of - true -> - _pipe = <<"Invalid input argument: n < 0. Valid input is n > 0."/utf8>>, - {error, _pipe}; - - false -> - case (K < 0) orelse (K > N) of - true -> - _pipe@1 = 0, - {ok, _pipe@1}; - - false -> - case K =:= N of - true -> - _pipe@2 = 1, - {ok, _pipe@2}; - - false -> - _assert_subject = factorial(N), - {ok, V1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"permutation"/utf8>>, - line => 241}) - end, - _assert_subject@1 = factorial(N - K), - {ok, V2} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"permutation"/utf8>>, - line => 242}) - end, - _pipe@3 = case V2 of - 0 -> 0; - Gleam@denominator -> V1 div Gleam@denominator - end, - {ok, _pipe@3} - end - end - end. - --spec do_list_combination(list(GIO), integer(), list(GIO)) -> list(list(GIO)). -do_list_combination(Arr, K, Prefix) -> - case K of - 0 -> - [gleam@list:reverse(Prefix)]; - - _ -> - case Arr of - [] -> - []; - - [X | Xs] -> - With_x = do_list_combination(Xs, K - 1, [X | Prefix]), - Without_x = do_list_combination(Xs, K, Prefix), - gleam@list:append(With_x, Without_x) - end - end. - --spec list_combination(list(GII), integer()) -> {ok, list(list(GII))} | - {error, binary()}. -list_combination(Arr, K) -> - case K < 0 of - true -> - _pipe = <<"Invalid input argument: k < 0. Valid input is k > 0."/utf8>>, - {error, _pipe}; - - false -> - case K > gleam@list:length(Arr) of - true -> - _pipe@1 = <<"Invalid input argument: k > length(arr). Valid input is 0 < k <= length(arr)."/utf8>>, - {error, _pipe@1}; - - false -> - _pipe@2 = do_list_combination(Arr, K, []), - {ok, _pipe@2} - end - end. - --spec list_permutation(list(GIT)) -> list(list(GIT)). -list_permutation(Arr) -> - case Arr of - [] -> - [[]]; - - _ -> - gleam@list:flat_map( - Arr, - fun(X) -> - _assert_subject = gleam@list:pop(Arr, fun(Y) -> X =:= Y end), - {ok, {_, Remaining}} = case _assert_subject of - {ok, {_, _}} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/combinatorics"/utf8>>, - function => <<"list_permutation"/utf8>>, - line => 373}) - end, - gleam@list:map( - list_permutation(Remaining), - fun(Perm) -> [X | Perm] end - ) - end - ) - end. - --spec cartesian_product(list(GIX), list(GIX)) -> list({GIX, GIX}). -cartesian_product(Xarr, Yarr) -> - Xset = begin - _pipe = Xarr, - gleam@set:from_list(_pipe) - end, - Yset = begin - _pipe@1 = Yarr, - gleam@set:from_list(_pipe@1) - end, - _pipe@2 = Xset, - _pipe@3 = gleam@set:fold( - _pipe@2, - gleam@set:new(), - fun(Accumulator0, Member0) -> - gleam@set:fold( - Yset, - Accumulator0, - fun(Accumulator1, Member1) -> - gleam@set:insert(Accumulator1, {Member0, Member1}) - end - ) - end - ), - gleam@set:to_list(_pipe@3). diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl deleted file mode 100644 index 0f6decb..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@conversion.erl +++ /dev/null @@ -1,23 +0,0 @@ --module(gleam_community@maths@conversion). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([int_to_float/1, float_to_int/1, degrees_to_radians/1, radians_to_degrees/1]). - --spec int_to_float(integer()) -> float(). -int_to_float(X) -> - gleam@int:to_float(X). - --spec float_to_int(float()) -> integer(). -float_to_int(X) -> - erlang:trunc(X). - --spec degrees_to_radians(float()) -> float(). -degrees_to_radians(X) -> - (X * math:pi()) / 180.0. - --spec radians_to_degrees(float()) -> float(). -radians_to_degrees(X) -> - case math:pi() of - 0.0 -> 0.0; - Gleam@denominator -> (X * 180.0) / Gleam@denominator - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl deleted file mode 100644 index dab5d68..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@elementary.erl +++ /dev/null @@ -1,284 +0,0 @@ --module(gleam_community@maths@elementary). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([acos/1, acosh/1, asin/1, asinh/1, atan/1, atan2/2, atanh/1, cos/1, cosh/1, sin/1, sinh/1, tan/1, tanh/1, exponential/1, natural_logarithm/1, logarithm_2/1, logarithm_10/1, logarithm/2, power/2, square_root/1, cube_root/1, nth_root/2, pi/0, tau/0, e/0]). - --spec acos(float()) -> {ok, float()} | {error, binary()}. -acos(X) -> - case (X >= -1.0) andalso (X =< 1.0) of - true -> - _pipe = math:acos(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, - {error, _pipe@1} - end. - --spec acosh(float()) -> {ok, float()} | {error, binary()}. -acosh(X) -> - case X >= 1.0 of - true -> - _pipe = math:acosh(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x < 1. Valid input is x >= 1."/utf8>>, - {error, _pipe@1} - end. - --spec asin(float()) -> {ok, float()} | {error, binary()}. -asin(X) -> - case (X >= -1.0) andalso (X =< 1.0) of - true -> - _pipe = math:asin(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x >= -1 or x <= 1. Valid input is -1. <= x <= 1."/utf8>>, - {error, _pipe@1} - end. - --spec asinh(float()) -> float(). -asinh(X) -> - math:asinh(X). - --spec atan(float()) -> float(). -atan(X) -> - math:atan(X). - --spec atan2(float(), float()) -> float(). -atan2(Y, X) -> - math:atan2(Y, X). - --spec atanh(float()) -> {ok, float()} | {error, binary()}. -atanh(X) -> - case (X > -1.0) andalso (X < 1.0) of - true -> - _pipe = math:atanh(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x > -1 or x < 1. Valid input is -1. < x < 1."/utf8>>, - {error, _pipe@1} - end. - --spec cos(float()) -> float(). -cos(X) -> - math:cos(X). - --spec cosh(float()) -> float(). -cosh(X) -> - math:cosh(X). - --spec sin(float()) -> float(). -sin(X) -> - math:sin(X). - --spec sinh(float()) -> float(). -sinh(X) -> - math:sinh(X). - --spec tan(float()) -> float(). -tan(X) -> - math:tan(X). - --spec tanh(float()) -> float(). -tanh(X) -> - math:tanh(X). - --spec exponential(float()) -> float(). -exponential(X) -> - math:exp(X). - --spec natural_logarithm(float()) -> {ok, float()} | {error, binary()}. -natural_logarithm(X) -> - case X > +0.0 of - true -> - _pipe = math:log(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm_2(float()) -> {ok, float()} | {error, binary()}. -logarithm_2(X) -> - case X > +0.0 of - true -> - _pipe = math:log2(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm_10(float()) -> {ok, float()} | {error, binary()}. -logarithm_10(X) -> - case X > +0.0 of - true -> - _pipe = math:log10(X), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@1} - end. - --spec logarithm(float(), gleam@option:option(float())) -> {ok, float()} | - {error, binary()}. -logarithm(X, Base) -> - case X > +0.0 of - true -> - case Base of - {some, A} -> - case (A > +0.0) andalso (A /= 1.0) of - true -> - _assert_subject = logarithm_10(X), - {ok, Numerator} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"logarithm"/utf8>>, - line => 820}) - end, - _assert_subject@1 = logarithm_10(A), - {ok, Denominator} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"logarithm"/utf8>>, - line => 821}) - end, - _pipe = case Denominator of - 0.0 -> 0.0; - Gleam@denominator -> Numerator / Gleam@denominator - end, - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, - {error, _pipe@1} - end; - - _ -> - _pipe@2 = <<"Invalid input argument: base <= 0 or base == 1. Valid input is base > 0 and base != 1."/utf8>>, - {error, _pipe@2} - end; - - _ -> - _pipe@3 = <<"Invalid input argument: x <= 0. Valid input is x > 0."/utf8>>, - {error, _pipe@3} - end. - --spec power(float(), float()) -> {ok, float()} | {error, binary()}. -power(X, Y) -> - Fractional = (math:ceil(Y) - Y) > +0.0, - case ((X < +0.0) andalso Fractional) orelse ((X =:= +0.0) andalso (Y < +0.0)) of - true -> - _pipe = <<"Invalid input argument: x < 0 and y is fractional or x = 0 and y < 0."/utf8>>, - {error, _pipe}; - - false -> - _pipe@1 = math:pow(X, Y), - {ok, _pipe@1} - end. - --spec square_root(float()) -> {ok, float()} | {error, binary()}. -square_root(X) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0."/utf8>>, - {error, _pipe}; - - false -> - _assert_subject = power(X, 1.0 / 2.0), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"square_root"/utf8>>, - line => 1066}) - end, - _pipe@1 = Result, - {ok, _pipe@1} - end. - --spec cube_root(float()) -> {ok, float()} | {error, binary()}. -cube_root(X) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0."/utf8>>, - {error, _pipe}; - - false -> - _assert_subject = power(X, 1.0 / 3.0), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"cube_root"/utf8>>, - line => 1118}) - end, - _pipe@1 = Result, - {ok, _pipe@1} - end. - --spec nth_root(float(), integer()) -> {ok, float()} | {error, binary()}. -nth_root(X, N) -> - case X < +0.0 of - true -> - _pipe = <<"Invalid input argument: x < 0. Valid input is x > 0"/utf8>>, - {error, _pipe}; - - false -> - case N >= 1 of - true -> - _assert_subject = power(X, case gleam@int:to_float(N) of - 0.0 -> 0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/elementary"/utf8>>, - function => <<"nth_root"/utf8>>, - line => 1175}) - end, - _pipe@1 = Result, - {ok, _pipe@1}; - - false -> - _pipe@2 = <<"Invalid input argument: n < 1. Valid input is n >= 2."/utf8>>, - {error, _pipe@2} - end - end. - --spec pi() -> float(). -pi() -> - math:pi(). - --spec tau() -> float(). -tau() -> - 2.0 * pi(). - --spec e() -> float(). -e() -> - exponential(1.0). diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl deleted file mode 100644 index 2a58da6..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@metrics.erl +++ /dev/null @@ -1,278 +0,0 @@ --module(gleam_community@maths@metrics). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([norm/2, minkowski_distance/3, manhatten_distance/2, euclidean_distance/2, mean/1, median/1, variance/2, standard_deviation/2]). - --spec norm(list(float()), float()) -> float(). -norm(Arr, P) -> - case Arr of - [] -> - +0.0; - - _ -> - Agg = begin - _pipe = Arr, - gleam@list:fold( - _pipe, - +0.0, - fun(Acc, A) -> - _assert_subject = gleam_community@maths@elementary:power( - gleam_community@maths@piecewise:float_absolute_value( - A - ), - P - ), - {ok, Result} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"norm"/utf8>>, - line => 101}) - end, - Result + Acc - end - ) - end, - _assert_subject@1 = gleam_community@maths@elementary:power( - Agg, - case P of - 0.0 -> 0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end - ), - {ok, Result@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"norm"/utf8>>, - line => 106}) - end, - Result@1 - end. - --spec minkowski_distance(list(float()), list(float()), float()) -> {ok, float()} | - {error, binary()}. -minkowski_distance(Xarr, Yarr, P) -> - Xlen = gleam@list:length(Xarr), - Ylen = gleam@list:length(Yarr), - case Xlen =:= Ylen of - false -> - _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, - {error, _pipe}; - - true -> - case P < 1.0 of - true -> - _pipe@1 = <<"Invalid input argument: p < 1. Valid input is p >= 1."/utf8>>, - {error, _pipe@1}; - - false -> - _pipe@2 = gleam@list:zip(Xarr, Yarr), - _pipe@3 = gleam@list:map( - _pipe@2, - fun(Tuple) -> - gleam@pair:first(Tuple) - gleam@pair:second(Tuple) - end - ), - _pipe@4 = norm(_pipe@3, P), - {ok, _pipe@4} - end - end. - --spec manhatten_distance(list(float()), list(float())) -> {ok, float()} | - {error, binary()}. -manhatten_distance(Xarr, Yarr) -> - minkowski_distance(Xarr, Yarr, 1.0). - --spec euclidean_distance(list(float()), list(float())) -> {ok, float()} | - {error, binary()}. -euclidean_distance(Xarr, Yarr) -> - minkowski_distance(Xarr, Yarr, 2.0). - --spec mean(list(float())) -> {ok, float()} | {error, binary()}. -mean(Arr) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _pipe@1 = Arr, - _pipe@2 = gleam_community@maths@arithmetics:float_sum(_pipe@1), - _pipe@3 = (fun(A) -> - case gleam_community@maths@conversion:int_to_float( - gleam@list:length(Arr) - ) of - 0.0 -> 0.0; - Gleam@denominator -> A / Gleam@denominator - end - end)(_pipe@2), - {ok, _pipe@3} - end. - --spec median(list(float())) -> {ok, float()} | {error, binary()}. -median(Arr) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - Count = gleam@list:length(Arr), - Mid = gleam@list:length(Arr) div 2, - Sorted = gleam@list:sort(Arr, fun gleam@float:compare/2), - case gleam_community@maths@predicates:is_odd(Count) of - true -> - _assert_subject = gleam@list:at(Sorted, Mid), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 402}) - end, - _pipe@1 = Val0, - {ok, _pipe@1}; - - false -> - _assert_subject@1 = gleam@list:at(Sorted, Mid - 1), - {ok, Val0@1} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 409}) - end, - _assert_subject@2 = gleam@list:at(Sorted, Mid), - {ok, Val1} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"median"/utf8>>, - line => 410}) - end, - _pipe@2 = [Val0@1, Val1], - mean(_pipe@2) - end - end. - --spec variance(list(float()), integer()) -> {ok, float()} | {error, binary()}. -variance(Arr, Ddof) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - case Ddof < 0 of - true -> - _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, - {error, _pipe@1}; - - false -> - _assert_subject = mean(Arr), - {ok, Mean} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"variance"/utf8>>, - line => 475}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:map( - _pipe@2, - fun(A) -> - _assert_subject@1 = gleam_community@maths@elementary:power( - A - Mean, - 2.0 - ), - {ok, Result} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"variance"/utf8>>, - line => 478}) - end, - Result - end - ), - _pipe@4 = gleam_community@maths@arithmetics:float_sum( - _pipe@3 - ), - _pipe@5 = (fun(A@1) -> - case (gleam_community@maths@conversion:int_to_float( - gleam@list:length(Arr) - ) - - gleam_community@maths@conversion:int_to_float(Ddof)) of - 0.0 -> 0.0; - Gleam@denominator -> A@1 / Gleam@denominator - end - end)(_pipe@4), - {ok, _pipe@5} - end - end. - --spec standard_deviation(list(float()), integer()) -> {ok, float()} | - {error, binary()}. -standard_deviation(Arr, Ddof) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - case Ddof < 0 of - true -> - _pipe@1 = <<"Invalid input argument: ddof < 0. Valid input is ddof >= 0."/utf8>>, - {error, _pipe@1}; - - false -> - _assert_subject = variance(Arr, Ddof), - {ok, Variance} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"standard_deviation"/utf8>>, - line => 551}) - end, - _assert_subject@1 = gleam_community@maths@elementary:square_root( - Variance - ), - {ok, Stdev} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/metrics"/utf8>>, - function => <<"standard_deviation"/utf8>>, - line => 554}) - end, - _pipe@2 = Stdev, - {ok, _pipe@2} - end - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl deleted file mode 100644 index 258d879..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@piecewise.erl +++ /dev/null @@ -1,553 +0,0 @@ --module(gleam_community@maths@piecewise). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([float_absolute_value/1, int_absolute_value/1, float_absolute_difference/2, int_absolute_difference/2, float_sign/1, round/3, ceiling/2, floor/2, truncate/2, int_sign/1, float_flip_sign/1, float_copy_sign/2, int_flip_sign/1, int_copy_sign/2, minimum/3, maximum/3, minmax/3, list_minimum/2, list_maximum/2, arg_minimum/2, arg_maximum/2, extrema/2]). --export_type([rounding_mode/0]). - --type rounding_mode() :: round_nearest | - round_ties_away | - round_ties_up | - round_to_zero | - round_down | - round_up. - --spec truncate_float(float()) -> float(). -truncate_float(X) -> - erlang:trunc(X). - --spec round_to_zero(float(), float()) -> float(). -round_to_zero(P, X) -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> truncate_float(X * P) / Gleam@denominator - end. - --spec round_down(float(), float()) -> float(). -round_down(P, X) -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> math:floor(X * P) / Gleam@denominator - end. - --spec round_up(float(), float()) -> float(). -round_up(P, X) -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> math:ceil(X * P) / Gleam@denominator - end. - --spec float_absolute_value(float()) -> float(). -float_absolute_value(X) -> - case X > +0.0 of - true -> - X; - - false -> - -1.0 * X - end. - --spec int_absolute_value(integer()) -> integer(). -int_absolute_value(X) -> - case X > 0 of - true -> - X; - - false -> - -1 * X - end. - --spec float_absolute_difference(float(), float()) -> float(). -float_absolute_difference(A, B) -> - _pipe = A - B, - float_absolute_value(_pipe). - --spec int_absolute_difference(integer(), integer()) -> integer(). -int_absolute_difference(A, B) -> - _pipe = A - B, - int_absolute_value(_pipe). - --spec do_float_sign(float()) -> float(). -do_float_sign(X) -> - case X < +0.0 of - true -> - -1.0; - - false -> - case X =:= +0.0 of - true -> - +0.0; - - false -> - 1.0 - end - end. - --spec float_sign(float()) -> float(). -float_sign(X) -> - do_float_sign(X). - --spec round_to_nearest(float(), float()) -> float(). -round_to_nearest(P, X) -> - Xabs = float_absolute_value(X) * P, - Xabs_truncated = truncate_float(Xabs), - Remainder = Xabs - Xabs_truncated, - case Remainder of - _ when Remainder > 0.5 -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) - / Gleam@denominator - end; - - _ when Remainder =:= 0.5 -> - _assert_subject = gleam@int:modulo( - gleam_community@maths@conversion:float_to_int(Xabs), - 2 - ), - {ok, Is_even} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"round_to_nearest"/utf8>>, - line => 423}) - end, - case Is_even =:= 0 of - true -> - case P of - 0.0 -> 0.0; - Gleam@denominator@1 -> (float_sign(X) * Xabs_truncated) - / Gleam@denominator@1 - end; - - false -> - case P of - 0.0 -> 0.0; - Gleam@denominator@2 -> (float_sign(X) * truncate_float( - Xabs + 1.0 - )) - / Gleam@denominator@2 - end - end; - - _ -> - case P of - 0.0 -> 0.0; - Gleam@denominator@3 -> (float_sign(X) * Xabs_truncated) / Gleam@denominator@3 - end - end. - --spec round_ties_away(float(), float()) -> float(). -round_ties_away(P, X) -> - Xabs = float_absolute_value(X) * P, - Remainder = Xabs - truncate_float(Xabs), - case Remainder of - _ when Remainder >= 0.5 -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) - / Gleam@denominator - end; - - _ -> - case P of - 0.0 -> 0.0; - Gleam@denominator@1 -> (float_sign(X) * truncate_float(Xabs)) / Gleam@denominator@1 - end - end. - --spec round_ties_up(float(), float()) -> float(). -round_ties_up(P, X) -> - Xabs = float_absolute_value(X) * P, - Xabs_truncated = truncate_float(Xabs), - Remainder = Xabs - Xabs_truncated, - case Remainder of - _ when (Remainder >= 0.5) andalso (X >= +0.0) -> - case P of - 0.0 -> 0.0; - Gleam@denominator -> (float_sign(X) * truncate_float(Xabs + 1.0)) - / Gleam@denominator - end; - - _ -> - case P of - 0.0 -> 0.0; - Gleam@denominator@1 -> (float_sign(X) * Xabs_truncated) / Gleam@denominator@1 - end - end. - --spec do_round(float(), float(), gleam@option:option(rounding_mode())) -> {ok, - float()} | - {error, binary()}. -do_round(P, X, Mode) -> - case Mode of - {some, round_nearest} -> - _pipe = round_to_nearest(P, X), - {ok, _pipe}; - - {some, round_ties_away} -> - _pipe@1 = round_ties_away(P, X), - {ok, _pipe@1}; - - {some, round_ties_up} -> - _pipe@2 = round_ties_up(P, X), - {ok, _pipe@2}; - - {some, round_to_zero} -> - _pipe@3 = round_to_zero(P, X), - {ok, _pipe@3}; - - {some, round_down} -> - _pipe@4 = round_down(P, X), - {ok, _pipe@4}; - - {some, round_up} -> - _pipe@5 = round_up(P, X), - {ok, _pipe@5}; - - none -> - _pipe@6 = round_to_nearest(P, X), - {ok, _pipe@6} - end. - --spec round( - float(), - gleam@option:option(integer()), - gleam@option:option(rounding_mode()) -) -> {ok, float()} | {error, binary()}. -round(X, Digits, Mode) -> - case Digits of - {some, A} -> - _assert_subject = gleam_community@maths@elementary:power( - 10.0, - gleam_community@maths@conversion:int_to_float(A) - ), - {ok, P} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"round"/utf8>>, - line => 366}) - end, - do_round(P, X, Mode); - - none -> - do_round(1.0, X, Mode) - end. - --spec ceiling(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -ceiling(X, Digits) -> - round(X, Digits, {some, round_up}). - --spec floor(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -floor(X, Digits) -> - round(X, Digits, {some, round_down}). - --spec truncate(float(), gleam@option:option(integer())) -> {ok, float()} | - {error, binary()}. -truncate(X, Digits) -> - round(X, Digits, {some, round_to_zero}). - --spec do_int_sign(integer()) -> integer(). -do_int_sign(X) -> - case X < 0 of - true -> - -1; - - false -> - case X =:= 0 of - true -> - 0; - - false -> - 1 - end - end. - --spec int_sign(integer()) -> integer(). -int_sign(X) -> - do_int_sign(X). - --spec float_flip_sign(float()) -> float(). -float_flip_sign(X) -> - -1.0 * X. - --spec float_copy_sign(float(), float()) -> float(). -float_copy_sign(X, Y) -> - case float_sign(X) =:= float_sign(Y) of - true -> - X; - - false -> - float_flip_sign(X) - end. - --spec int_flip_sign(integer()) -> integer(). -int_flip_sign(X) -> - -1 * X. - --spec int_copy_sign(integer(), integer()) -> integer(). -int_copy_sign(X, Y) -> - case int_sign(X) =:= int_sign(Y) of - true -> - X; - - false -> - int_flip_sign(X) - end. - --spec minimum(FQL, FQL, fun((FQL, FQL) -> gleam@order:order())) -> FQL. -minimum(X, Y, Compare) -> - case Compare(X, Y) of - lt -> - X; - - eq -> - X; - - gt -> - Y - end. - --spec maximum(FQM, FQM, fun((FQM, FQM) -> gleam@order:order())) -> FQM. -maximum(X, Y, Compare) -> - case Compare(X, Y) of - lt -> - Y; - - eq -> - Y; - - gt -> - X - end. - --spec minmax(FQN, FQN, fun((FQN, FQN) -> gleam@order:order())) -> {FQN, FQN}. -minmax(X, Y, Compare) -> - {minimum(X, Y, Compare), maximum(X, Y, Compare)}. - --spec list_minimum(list(FQO), fun((FQO, FQO) -> gleam@order:order())) -> {ok, - FQO} | - {error, binary()}. -list_minimum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"list_minimum"/utf8>>, - line => 945}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - Val0, - fun(Acc, Element) -> case Compare(Element, Acc) of - lt -> - Element; - - _ -> - Acc - end end - ), - {ok, _pipe@2} - end. - --spec list_maximum(list(FQS), fun((FQS, FQS) -> gleam@order:order())) -> {ok, - FQS} | - {error, binary()}. -list_maximum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val0} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"list_maximum"/utf8>>, - line => 1004}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - Val0, - fun(Acc, Element) -> case Compare(Acc, Element) of - lt -> - Element; - - _ -> - Acc - end end - ), - {ok, _pipe@2} - end. - --spec arg_minimum(list(FQW), fun((FQW, FQW) -> gleam@order:order())) -> {ok, - list(integer())} | - {error, binary()}. -arg_minimum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = begin - _pipe@1 = Arr, - list_minimum(_pipe@1, Compare) - end, - {ok, Min} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"arg_minimum"/utf8>>, - line => 1069}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:index_map( - _pipe@2, - fun(Index, Element) -> case Compare(Element, Min) of - eq -> - Index; - - _ -> - -1 - end end - ), - _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of - -1 -> - false; - - _ -> - true - end end), - {ok, _pipe@4} - end. - --spec arg_maximum(list(FRB), fun((FRB, FRB) -> gleam@order:order())) -> {ok, - list(integer())} | - {error, binary()}. -arg_maximum(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = begin - _pipe@1 = Arr, - list_maximum(_pipe@1, Compare) - end, - {ok, Max} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"arg_maximum"/utf8>>, - line => 1139}) - end, - _pipe@2 = Arr, - _pipe@3 = gleam@list:index_map( - _pipe@2, - fun(Index, Element) -> case Compare(Element, Max) of - eq -> - Index; - - _ -> - -1 - end end - ), - _pipe@4 = gleam@list:filter(_pipe@3, fun(Index@1) -> case Index@1 of - -1 -> - false; - - _ -> - true - end end), - {ok, _pipe@4} - end. - --spec extrema(list(FRG), fun((FRG, FRG) -> gleam@order:order())) -> {ok, - {FRG, FRG}} | - {error, binary()}. -extrema(Arr, Compare) -> - case Arr of - [] -> - _pipe = <<"Invalid input argument: The list is empty."/utf8>>, - {error, _pipe}; - - _ -> - _assert_subject = gleam@list:at(Arr, 0), - {ok, Val_max} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"extrema"/utf8>>, - line => 1209}) - end, - _assert_subject@1 = gleam@list:at(Arr, 0), - {ok, Val_min} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/piecewise"/utf8>>, - function => <<"extrema"/utf8>>, - line => 1210}) - end, - _pipe@1 = Arr, - _pipe@2 = gleam@list:fold( - _pipe@1, - {Val_min, Val_max}, - fun(Acc, Element) -> - First = gleam@pair:first(Acc), - Second = gleam@pair:second(Acc), - case {Compare(Element, First), Compare(Second, Element)} of - {lt, lt} -> - {Element, Element}; - - {lt, _} -> - {Element, Second}; - - {_, lt} -> - {First, Element}; - - {_, _} -> - {First, Second} - end - end - ), - {ok, _pipe@2} - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl deleted file mode 100644 index d991d89..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@predicates.erl +++ /dev/null @@ -1,118 +0,0 @@ --module(gleam_community@maths@predicates). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_close/4, all_close/4, is_fractional/1, is_power/2, is_perfect/1, is_even/1, is_odd/1]). - --spec float_absolute_value(float()) -> float(). -float_absolute_value(X) -> - case X > +0.0 of - true -> - X; - - false -> - -1.0 * X - end. - --spec float_absolute_difference(float(), float()) -> float(). -float_absolute_difference(A, B) -> - _pipe = A - B, - float_absolute_value(_pipe). - --spec is_close(float(), float(), float(), float()) -> boolean(). -is_close(A, B, Rtol, Atol) -> - X = float_absolute_difference(A, B), - Y = Atol + (Rtol * float_absolute_value(B)), - case X =< Y of - true -> - true; - - false -> - false - end. - --spec all_close(list(float()), list(float()), float(), float()) -> {ok, - list(boolean())} | - {error, binary()}. -all_close(Xarr, Yarr, Rtol, Atol) -> - Xlen = gleam@list:length(Xarr), - Ylen = gleam@list:length(Yarr), - case Xlen =:= Ylen of - false -> - _pipe = <<"Invalid input argument: length(xarr) != length(yarr). Valid input is when length(xarr) == length(yarr)."/utf8>>, - {error, _pipe}; - - true -> - _pipe@1 = gleam@list:zip(Xarr, Yarr), - _pipe@2 = gleam@list:map( - _pipe@1, - fun(Z) -> - is_close( - gleam@pair:first(Z), - gleam@pair:second(Z), - Rtol, - Atol - ) - end - ), - {ok, _pipe@2} - end. - --spec is_fractional(float()) -> boolean(). -is_fractional(X) -> - (math:ceil(X) - X) > +0.0. - --spec is_power(integer(), integer()) -> boolean(). -is_power(X, Y) -> - _assert_subject = gleam_community@maths@elementary:logarithm( - gleam@int:to_float(X), - {some, gleam@int:to_float(Y)} - ), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/predicates"/utf8>>, - function => <<"is_power"/utf8>>, - line => 241}) - end, - _assert_subject@1 = gleam_community@maths@piecewise:truncate( - Value, - {some, 0} - ), - {ok, Truncated} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/predicates"/utf8>>, - function => <<"is_power"/utf8>>, - line => 243}) - end, - Rem = Value - Truncated, - Rem =:= +0.0. - --spec do_sum(list(integer())) -> integer(). -do_sum(Arr) -> - case Arr of - [] -> - 0; - - _ -> - _pipe = Arr, - gleam@list:fold(_pipe, 0, fun(Acc, A) -> A + Acc end) - end. - --spec is_perfect(integer()) -> boolean(). -is_perfect(N) -> - do_sum(gleam_community@maths@arithmetics:proper_divisors(N)) =:= N. - --spec is_even(integer()) -> boolean(). -is_even(X) -> - (X rem 2) =:= 0. - --spec is_odd(integer()) -> boolean(). -is_odd(X) -> - (X rem 2) /= 0. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl deleted file mode 100644 index 74dcff4..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@sequences.erl +++ /dev/null @@ -1,199 +0,0 @@ --module(gleam_community@maths@sequences). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([arange/3, linear_space/4, logarithmic_space/5, geometric_space/4]). - --spec arange(float(), float(), float()) -> list(float()). -arange(Start, Stop, Step) -> - case ((Start >= Stop) andalso (Step > +0.0)) orelse ((Start =< Stop) andalso (Step - < +0.0)) of - true -> - []; - - false -> - Direction = case Start =< Stop of - true -> - 1.0; - - false -> - -1.0 - end, - Step_abs = gleam_community@maths@piecewise:float_absolute_value( - Step - ), - Num = case Step_abs of - 0.0 -> 0.0; - Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator - end, - _pipe = gleam@list:range( - 0, - gleam_community@maths@conversion:float_to_int(Num) - 1 - ), - gleam@list:map( - _pipe, - fun(I) -> - Start + ((gleam_community@maths@conversion:int_to_float(I) * Step_abs) - * Direction) - end - ) - end. - --spec linear_space(float(), float(), integer(), boolean()) -> {ok, - list(float())} | - {error, binary()}. -linear_space(Start, Stop, Num, Endpoint) -> - Direction = case Start =< Stop of - true -> - 1.0; - - false -> - -1.0 - end, - case Num > 0 of - true -> - case Endpoint of - true -> - Increment = case gleam_community@maths@conversion:int_to_float( - Num - 1 - ) of - 0.0 -> 0.0; - Gleam@denominator -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator - end, - _pipe = gleam@list:range(0, Num - 1), - _pipe@1 = gleam@list:map( - _pipe, - fun(I) -> - Start + ((gleam_community@maths@conversion:int_to_float( - I - ) - * Increment) - * Direction) - end - ), - {ok, _pipe@1}; - - false -> - Increment@1 = case gleam_community@maths@conversion:int_to_float( - Num - ) of - 0.0 -> 0.0; - Gleam@denominator@1 -> gleam_community@maths@piecewise:float_absolute_value( - Start - Stop - ) - / Gleam@denominator@1 - end, - _pipe@2 = gleam@list:range(0, Num - 1), - _pipe@3 = gleam@list:map( - _pipe@2, - fun(I@1) -> - Start + ((gleam_community@maths@conversion:int_to_float( - I@1 - ) - * Increment@1) - * Direction) - end - ), - {ok, _pipe@3} - end; - - false -> - _pipe@4 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@4} - end. - --spec logarithmic_space(float(), float(), integer(), boolean(), float()) -> {ok, - list(float())} | - {error, binary()}. -logarithmic_space(Start, Stop, Num, Endpoint, Base) -> - case Num > 0 of - true -> - _assert_subject = linear_space(Start, Stop, Num, Endpoint), - {ok, Linspace} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"logarithmic_space"/utf8>>, - line => 221}) - end, - _pipe = Linspace, - _pipe@1 = gleam@list:map( - _pipe, - fun(I) -> - _assert_subject@1 = gleam_community@maths@elementary:power( - Base, - I - ), - {ok, Result} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"logarithmic_space"/utf8>>, - line => 224}) - end, - Result - end - ), - {ok, _pipe@1}; - - false -> - _pipe@2 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@2} - end. - --spec geometric_space(float(), float(), integer(), boolean()) -> {ok, - list(float())} | - {error, binary()}. -geometric_space(Start, Stop, Num, Endpoint) -> - case (Start =:= +0.0) orelse (Stop =:= +0.0) of - true -> - _pipe = <<""/utf8>>, - {error, _pipe}; - - false -> - case Num > 0 of - true -> - _assert_subject = gleam_community@maths@elementary:logarithm_10( - Start - ), - {ok, Log_start} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"geometric_space"/utf8>>, - line => 293}) - end, - _assert_subject@1 = gleam_community@maths@elementary:logarithm_10( - Stop - ), - {ok, Log_stop} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/sequences"/utf8>>, - function => <<"geometric_space"/utf8>>, - line => 294}) - end, - logarithmic_space(Log_start, Log_stop, Num, Endpoint, 10.0); - - false -> - _pipe@1 = <<"Invalid input: num < 0. Valid input is num > 0."/utf8>>, - {error, _pipe@1} - end - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl b/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl deleted file mode 100644 index 925f4bb..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community@maths@special.erl +++ /dev/null @@ -1,157 +0,0 @@ --module(gleam_community@maths@special). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([erf/1, gamma/1, beta/2, incomplete_gamma/2]). - --spec erf(float()) -> float(). -erf(X) -> - _assert_subject = [0.254829592, - -0.284496736, - 1.421413741, - -1.453152027, - 1.061405429], - [A1, A2, A3, A4, A5] = case _assert_subject of - [_, _, _, _, _] -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"erf"/utf8>>, - line => 79}) - end, - P = 0.3275911, - Sign = gleam_community@maths@piecewise:float_sign(X), - X@1 = gleam_community@maths@piecewise:float_absolute_value(X), - T = case (1.0 + (P * X@1)) of - 0.0 -> 0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end, - Y = 1.0 - ((((((((((A5 * T) + A4) * T) + A3) * T) + A2) * T) + A1) * T) * gleam_community@maths@elementary:exponential( - (-1.0 * X@1) * X@1 - )), - Sign * Y. - --spec gamma_lanczos(float()) -> float(). -gamma_lanczos(X) -> - case X < 0.5 of - true -> - case (gleam_community@maths@elementary:sin( - gleam_community@maths@elementary:pi() * X - ) - * gamma_lanczos(1.0 - X)) of - 0.0 -> 0.0; - Gleam@denominator -> gleam_community@maths@elementary:pi() / Gleam@denominator - end; - - false -> - Z = X - 1.0, - X@1 = gleam@list:index_fold( - [0.99999999999980993, - 676.5203681218851, - -1259.1392167224028, - 771.32342877765313, - -176.61502916214059, - 12.507343278686905, - -0.13857109526572012, - 0.0000099843695780195716, - 0.00000015056327351493116], - +0.0, - fun(Acc, V, Index) -> case Index > 0 of - true -> - Acc + (case (Z + gleam_community@maths@conversion:int_to_float( - Index - )) of - 0.0 -> 0.0; - Gleam@denominator@1 -> V / Gleam@denominator@1 - end); - - false -> - V - end end - ), - T = (Z + 7.0) + 0.5, - _assert_subject = gleam_community@maths@elementary:power( - 2.0 * gleam_community@maths@elementary:pi(), - 0.5 - ), - {ok, V1} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"gamma_lanczos"/utf8>>, - line => 146}) - end, - _assert_subject@1 = gleam_community@maths@elementary:power( - T, - Z + 0.5 - ), - {ok, V2} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"gamma_lanczos"/utf8>>, - line => 147}) - end, - ((V1 * V2) * gleam_community@maths@elementary:exponential(-1.0 * T)) - * X@1 - end. - --spec gamma(float()) -> float(). -gamma(X) -> - gamma_lanczos(X). - --spec beta(float(), float()) -> float(). -beta(X, Y) -> - case gamma(X + Y) of - 0.0 -> 0.0; - Gleam@denominator -> (gamma(X) * gamma(Y)) / Gleam@denominator - end. - --spec incomplete_gamma_sum(float(), float(), float(), float(), float()) -> float(). -incomplete_gamma_sum(A, X, T, S, N) -> - case T of - +0.0 -> - S; - - _ -> - Ns = S + T, - Nt = T * (case (A + N) of - 0.0 -> 0.0; - Gleam@denominator -> X / Gleam@denominator - end), - incomplete_gamma_sum(A, X, Nt, Ns, N + 1.0) - end. - --spec incomplete_gamma(float(), float()) -> {ok, float()} | {error, binary()}. -incomplete_gamma(A, X) -> - case (A > +0.0) andalso (X >= +0.0) of - true -> - _assert_subject = gleam_community@maths@elementary:power(X, A), - {ok, V} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam_community/maths/special"/utf8>>, - function => <<"incomplete_gamma"/utf8>>, - line => 173}) - end, - _pipe = (V * gleam_community@maths@elementary:exponential(-1.0 * X)) - * incomplete_gamma_sum(A, X, case A of - 0.0 -> 0.0; - Gleam@denominator -> 1.0 / Gleam@denominator - end, +0.0, 1.0), - {ok, _pipe}; - - false -> - _pipe@1 = <<"Invlaid input argument: a <= 0 or x < 0. Valid input is a > 0 and x >= 0."/utf8>>, - {error, _pipe@1} - end. diff --git a/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src b/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src deleted file mode 100644 index 091e679..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/gleam_community_maths.app.src +++ /dev/null @@ -1,16 +0,0 @@ -{application, gleam_community_maths, [ - {vsn, "1.0.1"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "A basic maths library"}, - {modules, [gleam_community@maths@arithmetics, - gleam_community@maths@combinatorics, - gleam_community@maths@conversion, - gleam_community@maths@elementary, - gleam_community@maths@metrics, - gleam_community@maths@piecewise, - gleam_community@maths@predicates, - gleam_community@maths@sequences, - gleam_community@maths@special]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_community_maths/src/maths.mjs b/aoc2023/build/packages/gleam_community_maths/src/maths.mjs deleted file mode 100644 index 5c5ab31..0000000 --- a/aoc2023/build/packages/gleam_community_maths/src/maths.mjs +++ /dev/null @@ -1,95 +0,0 @@ -export function sin(float) { - return Math.sin(float) -} - -export function pi() { - return Math.PI -} - -export function acos(float) { - return Math.acos(float) -} - -export function acosh(float) { - return Math.acosh(float) -} - -export function asin(float) { - return Math.asin(float) -} - -export function asinh(float) { - return Math.asinh(float) -} - -export function atan(float) { - return Math.atan(float) -} - -export function tan(float) { - return Math.tan(float) -} - -export function atan2(floaty, floatx) { - return Math.atan2(floaty, floatx) -} - -export function atanh(float) { - return Math.atanh(float) -} - -export function cos(float) { - return Math.cos(float) -} - -export function cosh(float) { - return Math.cosh(float) -} - -export function exponential(float) { - return Math.exp(float) -} - -export function ceiling(float) { - return Math.ceil(float) -} - -export function floor(float) { - return Math.floor(float) -} - -export function power(base, exponent) { - return Math.pow(base, exponent) -} - -export function logarithm(float) { - return Math.log(float) -} - -export function logarithm_10(float) { - return Math.log10(float) -} - -export function logarithm_2(float) { - return Math.log2(float) -} - -export function sinh(float) { - return Math.sinh(float) -} - -export function tanh(float) { - return Math.tanh(float) -} - -export function sign(float) { - return Math.sign(float) -} - -export function truncate(float) { - return Math.trunc(float) -} - -export function to_int(float) { - return Math.trunc(float) -} diff --git a/aoc2023/build/packages/gleam_erlang/LICENSE b/aoc2023/build/packages/gleam_erlang/LICENSE deleted file mode 100644 index 59e1345..0000000 --- a/aoc2023/build/packages/gleam_erlang/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright {{copyright_year}}, {{author_name}} <{{author_email}}>. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/aoc2023/build/packages/gleam_erlang/README.md b/aoc2023/build/packages/gleam_erlang/README.md deleted file mode 100644 index ffee4cd..0000000 --- a/aoc2023/build/packages/gleam_erlang/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Gleam Erlang 🐙 - -A library for making use of Erlang specific code! - -## Features - -- Typed Erlang processes and message sending. -- Erlang binary format (de)serialisation. -- Functions for working with Erlang's charlists. -- Reading, writing, and deletion of files. -- Basic distributed Erlang support and working with nodes. -- Reading and writing of environment variables. -- Functions for working with atoms. - -## Usage - -Add this library to your Gleam project - -```shell -gleam add gleam_erlang -``` - -And then use it in your code - -```gleam -import gleam/io -import gleam/erlang/file - -pub fn main() { - assert Ok(contents) = file.read("pokedex.txt") - io.println(contents) -} -``` - -Documentation can be found at . - -This library requires OTP 23.0 or higher. diff --git a/aoc2023/build/packages/gleam_erlang/gleam.toml b/aoc2023/build/packages/gleam_erlang/gleam.toml deleted file mode 100644 index 8d62603..0000000 --- a/aoc2023/build/packages/gleam_erlang/gleam.toml +++ /dev/null @@ -1,18 +0,0 @@ -name = "gleam_erlang" - -version = "0.23.1" -licences = ["Apache-2.0"] -description = "A Gleam library for working with Erlang" - -repository = { type = "github", user = "gleam-lang", repo = "erlang" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] -gleam = ">= 0.32.0" - -[dependencies] -gleam_stdlib = "~> 0.32" - -[dev-dependencies] -gleeunit = "~> 0.6" diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl deleted file mode 100644 index b38d11e..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@file_FileInfo.hrl +++ /dev/null @@ -1,15 +0,0 @@ --record(file_info, { - size :: integer(), - file_type :: gleam@erlang@file:file_type(), - access :: gleam@erlang@file:access(), - atime :: integer(), - mtime :: integer(), - ctime :: integer(), - mode :: integer(), - links :: integer(), - major_device :: integer(), - minor_device :: integer(), - inode :: integer(), - user_id :: integer(), - group_id :: integer() -}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl deleted file mode 100644 index 4cd0452..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Abnormal.hrl +++ /dev/null @@ -1 +0,0 @@ --record(abnormal, {reason :: binary()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl deleted file mode 100644 index 5dd5047..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_CalleeDown.hrl +++ /dev/null @@ -1 +0,0 @@ --record(callee_down, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl deleted file mode 100644 index b82b49f..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Cancelled.hrl +++ /dev/null @@ -1 +0,0 @@ --record(cancelled, {time_remaining :: integer()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl deleted file mode 100644 index c476308..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ExitMessage.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(exit_message, { - pid :: gleam@erlang@process:pid_(), - reason :: gleam@erlang@process:exit_reason() -}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl deleted file mode 100644 index df0b6b7..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessDown.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(process_down, { - pid :: gleam@erlang@process:pid_(), - reason :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl deleted file mode 100644 index ce552e2..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_ProcessMonitor.hrl +++ /dev/null @@ -1 +0,0 @@ --record(process_monitor, {tag :: gleam@erlang:reference_()}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl deleted file mode 100644 index abc46b2..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang@process_Subject.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(subject, { - owner :: gleam@erlang@process:pid_(), - tag :: gleam@erlang:reference_() -}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl deleted file mode 100644 index 52c9896..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_ApplicationFailedToStart.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(application_failed_to_start, { - name :: gleam@erlang@atom:atom_(), - reason :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl b/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl deleted file mode 100644 index fde3c61..0000000 --- a/aoc2023/build/packages/gleam_erlang/include/gleam@erlang_UnknownApplication.hrl +++ /dev/null @@ -1 +0,0 @@ --record(unknown_application, {name :: gleam@erlang@atom:atom_()}). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam deleted file mode 100644 index 783cd53..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang.gleam +++ /dev/null @@ -1,158 +0,0 @@ -import gleam/dynamic.{type Dynamic} -import gleam/list -import gleam/erlang/atom.{type Atom} -import gleam/erlang/charlist.{type Charlist} - -@external(erlang, "io_lib", "format") -fn erl_format(a: String, b: List(a)) -> Charlist - -/// Return a string representation of any term -pub fn format(term: any) -> String { - charlist.to_string(erl_format("~p", [term])) -} - -@external(erlang, "erlang", "term_to_binary") -pub fn term_to_binary(a: a) -> BitArray - -type Safe { - Safe -} - -@external(erlang, "erlang", "binary_to_term") -fn erl_binary_to_term(a: BitArray, b: List(Safe)) -> Dynamic - -pub fn binary_to_term(binary: BitArray) -> Result(Dynamic, Nil) { - case rescue(fn() { erl_binary_to_term(binary, [Safe]) }) { - Ok(term) -> Ok(term) - Error(_) -> Error(Nil) - } -} - -pub fn unsafe_binary_to_term(binary: BitArray) -> Result(Dynamic, Nil) { - case rescue(fn() { erl_binary_to_term(binary, []) }) { - Ok(term) -> Ok(term) - Error(_) -> Error(Nil) - } -} - -/// Error value returned by `get_line` function -/// -pub type GetLineError { - Eof - NoData -} - -/// Reads a line from standard input with the given prompt. -/// -/// # Example -/// -/// > get_line("Language: ") -/// // -> Language: <- gleam -/// Ok("gleam\n") -/// -@external(erlang, "gleam_erlang_ffi", "get_line") -pub fn get_line(prompt prompt: String) -> Result(String, GetLineError) - -pub type TimeUnit { - Second - Millisecond - Microsecond - Nanosecond -} - -/// Returns the current OS system time. -/// -/// -@external(erlang, "os", "system_time") -pub fn system_time(a: TimeUnit) -> Int - -/// Returns the current OS system time as a tuple of Ints -/// -/// http://erlang.org/doc/man/os.html#timestamp-0 -@external(erlang, "os", "timestamp") -pub fn erlang_timestamp() -> #(Int, Int, Int) - -/// Gleam doesn't offer any way to raise exceptions, but they may still occur -/// due to bugs when working with unsafe code, such as when calling Erlang -/// function. -/// -/// This function will catch any error thrown and convert it into a result -/// rather than crashing the process. -/// -@external(erlang, "gleam_erlang_ffi", "rescue") -pub fn rescue(a: fn() -> a) -> Result(a, Crash) - -pub type Crash { - Exited(Dynamic) - Thrown(Dynamic) - Errored(Dynamic) -} - -@external(erlang, "init", "get_plain_arguments") -fn get_start_arguments() -> List(Charlist) - -/// Get the arguments given to the program when it was started. -/// -/// This is sometimes called `argv` in other languages. -pub fn start_arguments() -> List(String) { - get_start_arguments() - |> list.map(charlist.to_string) -} - -/// Starts an OTP application's process tree in the background, as well as -/// the trees of any applications that the given application depends upon. An -/// OTP application typically maps onto a Gleam or Hex package. -/// -/// Returns a list of the applications that were started. Calling this function -/// for application that have already been started is a no-op so you do not need -/// to check the application state beforehand. -/// -/// In Gleam we prefer to not use these implicit background process trees, but -/// you will likely still need to start the trees of OTP applications written in -/// other BEAM languages such as Erlang or Elixir, including those included by -/// default with Erlang/OTP. -/// -/// For more information see the OTP documentation. -/// - -/// - -/// -@external(erlang, "gleam_erlang_ffi", "ensure_all_started") -pub fn ensure_all_started( - application application: Atom, -) -> Result(List(Atom), EnsureAllStartedError) - -pub type EnsureAllStartedError { - UnknownApplication(name: Atom) - ApplicationFailedToStart(name: Atom, reason: Dynamic) -} - -/// A unique reference value. -/// -/// It holds no particular meaning or value, but unique values are often useful -/// in programs are used heavily within both Gleam and Erlang's OTP frameworks. -/// -/// More can be read about references in the [Erlang documentation][1]. -/// -/// [1]: https://www.erlang.org/doc/efficiency_guide/advanced.html#unique_references -/// -pub type Reference - -/// Create a new unique reference. -/// -@external(erlang, "erlang", "make_ref") -pub fn make_reference() -> Reference - -/// Returns the path of a package's `priv` directory, where extra non-Gleam -/// or Erlang files are typically kept. -/// -/// Returns an error if no package was found with the given name. -/// -/// # Example -/// -/// ```gleam -/// > erlang.priv_directory("my_app") -/// // -> Ok("/some/location/my_app/priv") -/// ``` -/// -@external(erlang, "gleam_erlang_ffi", "priv_directory") -pub fn priv_directory(name: String) -> Result(String, Nil) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam deleted file mode 100644 index a27289c..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/atom.gleam +++ /dev/null @@ -1,79 +0,0 @@ -import gleam/dynamic.{type DecodeErrors, type Dynamic} - -/// Atom is a special string-like data-type that is most commonly used for -/// interfacing with code written in other BEAM languages such as Erlang and -/// Elixir. It is preferable to define your own custom types to use instead of -/// atoms where possible. -/// -/// Atoms are not used much in typical Gleam code! -/// -/// ## Creating atoms -/// -/// We can create atoms with the the [`create_from_string`](#create_from_string) -/// function, though we must be careful when doing so as atoms are never -/// garbage collected. If we create too many atoms (for example, if we convert -/// user input into atoms) we may hit the max limit of atoms and cause the -/// virtual machine to crash. -/// -pub type Atom - -/// An error returned when no atom is found in the virtual machine's atom table -/// for a given string when calling the [`from_string`](#from_string) function. -pub type FromStringError { - AtomNotLoaded -} - -/// Finds an existing Atom for the given String. -/// -/// If no atom is found in the virtual machine's atom table for the String then -/// an error is returned. -/// -/// ## Examples -/// -/// > from_string("ok") -/// Ok(create_from_string("ok")) -/// -/// > from_string("some_new_atom") -/// Error(AtomNotLoaded) -/// -@external(erlang, "gleam_erlang_ffi", "atom_from_string") -pub fn from_string(a: String) -> Result(Atom, FromStringError) - -/// Creates an atom from a string, inserting a new value into the virtual -/// machine's atom table if an atom does not already exist for the given -/// string. -/// -/// We must be careful when using this function as there is a limit to the -/// number of atom that can fit in the virtual machine's atom table. Never -/// convert user input into atoms as filling the atom table will cause the -/// virtual machine to crash! -/// -@external(erlang, "erlang", "binary_to_atom") -pub fn create_from_string(a: String) -> Atom - -/// Returns a `String` corresponding to the text representation of the given -/// `Atom`. -/// -/// ## Examples -/// -/// > let ok_atom = create_from_string("ok") -/// > to_string(ok_atom) -/// "ok" -/// -@external(erlang, "erlang", "atom_to_binary") -pub fn to_string(a: Atom) -> String - -/// Checks to see whether a `Dynamic` value is an atom, and return the atom if -/// it is. -/// -/// ## Examples -/// -/// > import gleam/dynamic -/// > from_dynamic(dynamic.from(create_from_string("hello"))) -/// Ok(create_from_string("hello")) -/// -/// > from_dynamic(dynamic.from(123)) -/// Error([DecodeError(expected: "Atom", found: "Int", path: [])]) -/// -@external(erlang, "gleam_erlang_ffi", "atom_from_dynamic") -pub fn from_dynamic(from from: Dynamic) -> Result(Atom, DecodeErrors) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam deleted file mode 100644 index e5b6d65..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/charlist.gleam +++ /dev/null @@ -1,25 +0,0 @@ -//// A charlist is a list of integers where all the integers are valid code -//// points. -//// -//// In practice, you will not come across them often, except perhaps when -//// interfacing with Erlang, in particular when using older libraries that do -//// not accept binaries as arguments. - -/// A list of characters represented as ints. Commonly used by older Erlang -/// modules. -pub type Charlist - -/// Transform a charlist to a string -@external(erlang, "unicode", "characters_to_binary") -pub fn to_string(a: Charlist) -> String - -// Calls `unicode:characters_to_binary(Data, unicode, unicode)` -// Note: `unicode is an alias for utf8` -// See - -/// Transform a string to a charlist -@external(erlang, "unicode", "characters_to_list") -pub fn from_string(a: String) -> Charlist -// Calls `unicode:characters_to_list(Data, unicode)` -// Note: `unicode is an alias for utf8` -// See diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam deleted file mode 100644 index 48e11a7..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/file.gleam +++ /dev/null @@ -1,737 +0,0 @@ -//// Working with files on the filesystem. -//// -//// The functions included in this module are for high-level concepts such as -//// reading and writing. - -import gleam/bit_array -import gleam/result - -/// Reason represents all of the reasons that Erlang surfaces of why a file -/// system operation could fail. Most of these reasons are POSIX errors, which -/// come from the operating system and start with `E`. Others have been added to -/// represent other issues that may arise. -pub type Reason { - /// Permission denied. - Eacces - /// Resource temporarily unavailable. - Eagain - /// Bad file number - Ebadf - /// Bad message. - Ebadmsg - /// File busy. - Ebusy - /// Resource deadlock avoided. - Edeadlk - /// On most architectures, same as `Edeadlk`. On some architectures, it - /// means "File locking deadlock error." - Edeadlock - /// Disk quota exceeded. - Edquot - /// File already exists. - Eexist - /// Bad address in system call argument. - Efault - /// File too large. - Efbig - /// Inappropriate file type or format. Usually caused by trying to set the - /// "sticky bit" on a regular file (not a directory). - Eftype - /// Interrupted system call. - Eintr - /// Invalid argument. - Einval - /// I/O error. - Eio - /// Illegal operation on a directory. - Eisdir - /// Too many levels of symbolic links. - Eloop - /// Too many open files. - Emfile - /// Too many links. - Emlink - /// Multihop attempted. - Emultihop - /// Filename too long - Enametoolong - /// File table overflow - Enfile - /// No buffer space available. - Enobufs - /// No such device. - Enodev - /// No locks available. - Enolck - /// Link has been severed. - Enolink - /// No such file or directory. - Enoent - /// Not enough memory. - Enomem - /// No space left on device. - Enospc - /// No STREAM resources. - Enosr - /// Not a STREAM. - Enostr - /// Function not implemented. - Enosys - /// Block device required. - Enotblk - /// Not a directory. - Enotdir - /// Operation not supported. - Enotsup - /// No such device or address. - Enxio - /// Operation not supported on socket. - Eopnotsupp - /// Value too large to be stored in data type. - Eoverflow - /// Not owner. - Eperm - /// Broken pipe. - Epipe - /// Result too large. - Erange - /// Read-only file system. - Erofs - /// Invalid seek. - Espipe - /// No such process. - Esrch - /// Stale remote file handle. - Estale - /// Text file busy. - Etxtbsy - /// Cross-domain link. - Exdev - /// File was requested to be read as UTF-8, but is not UTF-8 encoded. - NotUtf8 -} - -/// The type of file found by `file_info` or `link_info`. -/// -pub type FileType { - Device - Directory - Other - Regular - Symlink -} - -/// The read/write permissions a user can have for a file. -/// -pub type Access { - NoAccess - Read - ReadWrite - Write -} - -/// Meta information for a file. -/// -/// Timestamps are in seconds before or after the Unix time epoch, -/// `1970-01-01 00:00:00 UTC`. -/// -pub type FileInfo { - FileInfo( - /// File size in bytes. - /// - size: Int, - /// `Regular`, `Directory`, `Symlink`, `Device`, or `Other`. - /// - file_type: FileType, - /// `ReadWrite`, `Read`, `Write`, or `NoAccess`. - /// - access: Access, - /// Timestamp of most recent access. - /// - atime: Int, - /// Timestamp of most recent modification. - /// - mtime: Int, - /// Timestamp of most recent change (or file creation, depending on - /// operating system). - /// - ctime: Int, - /// File permissions encoded as a sum of bit values, including but not - /// limited to: - /// - /// Owner read, write, execute. - /// - /// `0o400`, `0o200`, `0o100` - /// - /// Group read, write, execute. - /// - /// `0o40`, `0o20`, `0o10` - /// - /// Other read, write, execute. - /// - /// `0o4`, `0o2`, `0o1` - /// - /// Set user ID, group ID on execution. - /// - /// `0x800`, `0x400` - /// - mode: Int, - /// Total links to a file (always `1` for file systems without links). - /// - links: Int, - /// The file system where a file is located (`0` for drive `A:` on Windows, - /// `1` for `B:`, etc.). - /// - major_device: Int, - /// Character device (or `0` on non-Unix systems). - /// - minor_device: Int, - /// The `inode` number for a file (always `0` on non-Unix file systems). - /// - inode: Int, - /// The owner of a file (always `0` on non-Unix file systems). - /// - user_id: Int, - /// The group id of a file (always `0` on non-Unix file systems). - /// - group_id: Int, - ) -} - -/// Results in `FileInfo` about the given `path` on success, otherwise a -/// `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link's target. -/// To get `FileInfo` about a symlink itself, use `link_info`. -/// -/// ## Examples -/// -/// ```gleam -/// > file_info("gleam.toml") -/// Ok(FileInfo( -/// size: 430, -/// file_type: Regular, -/// access: ReadWrite, -/// atime: 1680580321, -/// mtime: 1680580272, -/// ctime: 1680580272, -/// mode: 33188, -/// links: 1, -/// major_device: 64, -/// minor_device: 0, -/// inode: 469028, -/// user_id: 1000, -/// group_id: 1000, -/// )) -/// -/// > file_info("/root") -/// Ok(FileInfo( -/// size: 16, -/// file_type: Directory, -/// access: Read, -/// atime: 1677789967, -/// mtime: 1664561240, -/// ctime: 1664561240, -/// mode: 16877, -/// links: 11, -/// major_device: 54, -/// minor_device: 0, -/// inode: 34, -/// user_id: 0, -/// group_id: 0, -/// )) -/// -/// > file_info("./build/dev/erlang/rad/priv") -/// Ok(FileInfo( -/// size: 140, -/// file_type: Directory, -/// access: ReadWrite, -/// atime: 1680580321, -/// mtime: 1680580272, -/// ctime: 1680580272, -/// mode: 33188, -/// links: 1, -/// major_device: 64, -/// minor_device: 0, -/// inode: 469028, -/// user_id: 1000, -/// group_id: 1000, -/// )) -/// -/// > file_info("/does_not_exist") -/// Error(Enoent) -/// -/// > file_info("/root/.local/maybe_exists") -/// Error(Eacces) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn file_info(a: String) -> Result(FileInfo, Reason) { - do_file_info(a) -} - -@external(erlang, "gleam_erlang_ffi", "file_info") -fn do_file_info(a: String) -> Result(FileInfo, Reason) - -/// Results in `FileInfo` about the given `path` on success, otherwise a -/// `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link itself. -/// To get `FileInfo` about a symlink's target, use `file_info`. -/// -/// ## Examples -/// -/// ```gleam -/// > link_info("gleam.toml") -/// Ok(FileInfo( -/// size: 430, -/// file_type: Regular, -/// access: ReadWrite, -/// atime: 1680580321, -/// mtime: 1680580272, -/// ctime: 1680580272, -/// mode: 33188, -/// links: 1, -/// major_device: 64, -/// minor_device: 0, -/// inode: 469028, -/// user_id: 1000, -/// group_id: 1000, -/// )) -/// -/// > link_info("/root") -/// Ok(FileInfo( -/// size: 16, -/// file_type: Directory, -/// access: Read, -/// atime: 1677789967, -/// mtime: 1664561240, -/// ctime: 1664561240, -/// mode: 16877, -/// links: 11, -/// major_device: 54, -/// minor_device: 0, -/// inode: 34, -/// user_id: 0, -/// group_id: 0, -/// )) -/// -/// > link_info("./build/dev/erlang/rad/priv") -/// Ok(FileInfo( -/// size: 41, -/// file_type: Symlink, -/// access: ReadWrite, -/// atime: 1680581150, -/// mtime: 1680581150, -/// ctime: 1680581150, -/// mode: 41471, -/// links: 1, -/// major_device: 64, -/// minor_device: 0, -/// inode: 471587, -/// user_id: 1000, -/// group_id: 1000, -/// )) -/// -/// > link_info("/does_not_exist") -/// Error(Enoent) -/// -/// > link_info("/root/.local/maybe_exists") -/// Error(Eacces) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn link_info(a: String) -> Result(FileInfo, Reason) { - do_link_info(a) -} - -@external(erlang, "gleam_erlang_ffi", "link_info") -fn do_link_info(a: String) -> Result(FileInfo, Reason) - -/// Results in a `Bool` on success that indicates whether the given `path` has -/// a `Directory` `FileType`, otherwise a `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link's target. -/// -/// ## Examples -/// -/// ```gleam -/// > is_directory("/tmp") -/// Ok(True) -/// -/// > is_directory("resume.pdf") -/// Ok(False) -/// -/// > is_directory("/does_not_exist") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn is_directory(path: String) -> Result(Bool, Reason) { - use FileInfo(file_type: file_type, ..) <- result.map(over: do_file_info(path)) - file_type == Directory -} - -/// Results in a `Bool` on success that indicates whether the given `path` has -/// a `Regular` `FileType`, otherwise a `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link's target. -/// -/// ## Examples -/// -/// ```gleam -/// > is_regular("resume.pdf") -/// Ok(True) -/// -/// > is_regular("/tmp") -/// Ok(False) -/// -/// > is_regular("/does_not_exist.txt") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn is_regular(path: String) -> Result(Bool, Reason) { - use FileInfo(file_type: file_type, ..) <- result.map(over: do_file_info(path)) - file_type == Regular -} - -/// Results in a `Bool` on success that indicates whether the given `path` -/// exists, otherwise a `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link's target. -/// To find whether a symlink itself exists, use `link_exists`. -/// -/// ## Examples -/// -/// ```gleam -/// > file_exists("resume.pdf") -/// Ok(True) -/// -/// > file_exists("/tmp") -/// Ok(True) -/// -/// > file_exists("/does_not_exist") -/// Ok(False) -/// -/// > file_exists("/root/.local/maybe_exists") -/// Error(Eacces) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn file_exists(path: String) -> Result(Bool, Reason) { - let result = - path - |> do_file_info - |> result.replace(True) - case result { - Error(Enoent) -> Ok(False) - _ -> result - } -} - -/// Results in a `Bool` on success that indicates whether the given `path` -/// exists, otherwise a `Reason` for failure. -/// -/// When `path` refers to a symlink, the result pertains to the link itself. -/// To find whether a symlink's target exists, use `file_exists`. -/// -/// ## Examples -/// -/// ```gleam -/// > link_exists("resume.pdf") -/// Ok(True) -/// -/// > link_exists("/tmp") -/// Ok(True) -/// -/// > link_exists("/does_not_exist") -/// Ok(False) -/// -/// > link_exists("/root/.local/maybe_exists") -/// Error(Eacces) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn link_exists(path: String) -> Result(Bool, Reason) { - let result = - path - |> do_link_info - |> result.replace(True) - case result { - Error(Enoent) -> Ok(False) - _ -> result - } -} - -/// Tries to create a directory. Missing parent directories are not created. -/// -/// Returns a Result of nil if the directory is created or Reason if the -/// operation failed. -/// -/// ## Examples -/// -/// ```gleam -/// > make_directory("/tmp/foo") -/// Ok(Nil) -/// -/// > make_directory("relative_directory") -/// Ok(Nil) -/// -/// > make_directory("/tmp/missing_intermediate_directory/foo") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -@external(erlang, "gleam_erlang_ffi", "make_directory") -pub fn make_directory(a: String) -> Result(Nil, Reason) - -/// Lists all files in a directory, except files with -/// [raw filenames](https://www.erlang.org/doc/apps/stdlib/unicode_usage.html#notes-about-raw-filenames). -/// -/// Returns a Result containing the list of filenames in the directory, or Reason -/// if the operation failed. -/// -/// ## Examples -/// -/// ```gleam -/// > list_directory("/tmp") -/// Ok(["FB01293B-8597-4359-80D5-130140A0C0DE","AlTest2.out"]) -/// -/// > list_directory("resume.docx") -/// Error(Enotdir) -/// ``` -/// -@deprecated("Use the simplifile package instead") -@external(erlang, "gleam_erlang_ffi", "list_directory") -pub fn list_directory(a: String) -> Result(List(String), Reason) - -/// Deletes a directory. -/// -/// The directory must be empty before it can be deleted. Returns a nil Success -/// or Reason if the operation failed. -/// -/// ## Examples -/// -/// ```gleam -/// > delete_directory("foo") -/// Ok(Nil) -/// -/// > delete_directory("does_not_exist/") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -@external(erlang, "gleam_erlang_ffi", "delete_directory") -pub fn delete_directory(a: String) -> Result(Nil, Reason) - -/// Deletes a file or directory recursively. -/// -/// Returns a nil Success or Reason if the operation failed. -/// -/// ## Examples -/// -/// ```gleam -/// > recursive_delete("foo") -/// Ok(Nil) -/// -/// > recursive_delete("/bar") -/// Ok(Nil) -/// -/// > recursive_delete("does_not_exist/") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -@external(erlang, "gleam_erlang_ffi", "recursive_delete") -pub fn recursive_delete(a: String) -> Result(Nil, Reason) - -/// Read the contents of the given file as a String -/// -/// Assumes the file is UTF-8 encoded. Returns a Result containing the file's -/// contents as a String if the operation was successful, or Reason if the file -/// operation failed. If the file is not UTF-8 encoded, the `NotUTF8` variant -/// will be returned. -/// -/// ## Examples -/// -/// ```gleam -/// > read("example.txt") -/// Ok("Hello, World!") -/// -/// > read(from: "example.txt") -/// Ok("Hello, World!") -/// -/// > read("does_not_exist.txt") -/// Error(Enoent) -/// -/// > read("cat.gif") -/// Error(NotUTF8) -/// ``` -/// -@deprecated("Use the simplifile package instead?") -pub fn read(from path: String) -> Result(String, Reason) { - path - |> do_read_bits() - |> result.then(fn(content) { - case bit_array.to_string(content) { - Ok(string) -> Ok(string) - Error(Nil) -> Error(NotUtf8) - } - }) -} - -/// Read the contents of the given file as a BitString -/// -/// Returns a Result containing the file's contents as a BitString if the -/// operation was successful, or Reason if the operation failed. -/// -/// ## Examples -/// -/// ```gleam -/// > read_bits("example.txt") -/// Ok(<<"Hello, World!">>) -/// -/// > read_bits(from: "cat.gif") -/// Ok(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) -/// -/// > read_bits("does_not_exist.txt") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn read_bits(from path: String) -> Result(BitArray, Reason) { - do_read_bits(path) -} - -@external(erlang, "gleam_erlang_ffi", "read_file") -fn do_read_bits(a: path) -> Result(BitArray, Reason) - -/// Write the given String contents to a file of the given name. -/// -/// Returns a Result with Nil if the operation was successful or a Reason -/// otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > write("Hello, World!", "file.txt") -/// Ok(Nil) -/// -/// > write(to: "file.txt", contents: "Hello, World!") -/// Ok(Nil) -/// -/// > write("Hello, World!", "does_not_exist/file.txt") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn write(contents contents: String, to path: String) -> Result(Nil, Reason) { - contents - |> bit_array.from_string - |> do_write_bits(path) -} - -/// Write the given BitString contents to a file of the given name. -/// -/// Returns a Result with Nil if the operation was successful or a Reason -/// otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > write_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "cat.gif") -/// Ok(Nil) -/// -/// > write_bits(to: "cat.gif", contents: <<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) -/// Ok(Nil) -/// -/// > write_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "does_not_exist/cat.gif") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn write_bits( - contents contents: BitArray, - to path: String, -) -> Result(Nil, Reason) { - do_write_bits(contents, path) -} - -@external(erlang, "gleam_erlang_ffi", "write_file") -fn do_write_bits(a: BitArray, b: String) -> Result(Nil, Reason) - -/// Append the given String contents to a file of the given name. -/// -/// Returns a Result with Nil if the operation was successful or a Reason -/// otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > append("Hello, World!", "file.txt") -/// Ok(Nil) -/// -/// > append(to: "file.txt", contents: "Hello, World!") -/// Ok(Nil) -/// -/// > append("Hello, World!", "does_not_exist/file.txt") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -pub fn append(contents contents: String, to path: String) -> Result(Nil, Reason) { - contents - |> bit_array.from_string - |> do_append_bits(path) -} - -/// Append the given BitString contents to a file of the given name. -/// -/// Returns a Result with Nil if the operation was successful or a Reason -/// otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > append_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "cat.gif") -/// Ok(Nil) -/// -/// > append_bits(to: "cat.gif", contents: <<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>) -/// Ok(Nil) -/// -/// > append_bits(<<71,73,70,56,57,97,1,0,1,0,0,0,0,59>>, "does_not_exist/cat.gif") -/// Error(Enoent) -/// ``` -/// -pub fn append_bits( - contents contents: BitArray, - to path: String, -) -> Result(Nil, Reason) { - do_append_bits(contents, path) -} - -@external(erlang, "gleam_erlang_ffi", "append_file") -fn do_append_bits( - contents contents: BitArray, - path path: String, -) -> Result(Nil, Reason) - -/// Delete the given file. -/// -/// Returns a Result with Nil if the operation was successful or a Reason -/// otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > delete("file.txt") -/// Ok(Nil) -/// -/// > delete("does_not_exist.txt") -/// Error(Enoent) -/// ``` -/// -@deprecated("Use the simplifile package instead") -@external(erlang, "gleam_erlang_ffi", "delete_file") -pub fn delete(a: String) -> Result(Nil, Reason) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam deleted file mode 100644 index 339415c..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/node.gleam +++ /dev/null @@ -1,62 +0,0 @@ -import gleam/erlang/atom.{type Atom} - -pub type Node - -type DoNotLeak - -/// Return the current node. -/// -@external(erlang, "erlang", "node") -pub fn self() -> Node - -/// Return a list of all visible nodes in the cluster, not including the current -/// node. -/// -/// The current node can be included by calling `self()` and prepending the -/// result. -/// -/// ```gleam -/// let all_nodes = [node.self(), ..node.visible()] -/// ``` -/// -@external(erlang, "erlang", "nodes") -pub fn visible() -> List(Node) - -pub type ConnectError { - /// Was unable to connect to the node. - FailedToConnect - /// The local node is not alive, so it is not possible to connect to the other - /// node. - LocalNodeIsNotAlive -} - -// TODO: test unknown node -// TODO: test successfully connecting -/// Establish a connection to a node, so the nodes can send messages to each -/// other and any other connected nodes. -/// -/// Returns `Error(FailedToConnect)` if the node is not reachable. -/// -/// Returns `Error(LocalNodeIsNotAlive)` if the local node is not alive, meaning -/// it is not running in distributed mode. -/// -@external(erlang, "gleam_erlang_ffi", "connect_node") -pub fn connect(node: Atom) -> Result(Node, ConnectError) - -// TODO: test -/// Send a message to a named process on a given node. -/// -/// These messages are untyped, like regular Erlang messages. -/// -pub fn send(node: Node, name: Atom, message: message) -> Nil { - raw_send(#(name, node), message) - Nil -} - -@external(erlang, "erlang", "send") -fn raw_send(receiver: #(Atom, Node), message: message) -> DoNotLeak - -/// Convert a node to the atom of its name. -/// -@external(erlang, "gleam_erlang_ffi", "identity") -pub fn to_atom(node: Node) -> Atom diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam deleted file mode 100644 index e135974..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/os.gleam +++ /dev/null @@ -1,95 +0,0 @@ -//// Access to the shell's environment variables - -import gleam/map.{type Map} - -/// Returns the list of all available environment variables as a list of key, -/// tuples. -/// -/// ## Examples -/// -/// > get_all_env() -/// map.from_list([ -/// #("SHELL", "/bin/bash"), -/// #("PWD", "/home/j3rn"), -/// ... -/// ]) -/// -@external(erlang, "gleam_erlang_ffi", "get_all_env") -pub fn get_all_env() -> Map(String, String) - -/// Returns the value associated with the given environment variable name. -/// -/// ## Examples -/// -/// > get_env("SHELL") -/// "/bin/bash" -/// -/// > get_env(name: "PWD") -/// "/home/j3rn" -/// -@external(erlang, "gleam_erlang_ffi", "get_env") -pub fn get_env(name name: String) -> Result(String, Nil) - -/// Associates the given value with the given environment variable name. -/// -/// ## Examples -/// -/// > set_env("MYVAR", "MYVALUE") -/// Nil -/// > get_env("MYVAR") -/// "MYVALUE" -/// -/// > set_env(value: "MYVALUE", name: "MYVAR") -/// Nil -/// -@external(erlang, "gleam_erlang_ffi", "set_env") -pub fn set_env(name name: String, value value: String) -> Nil - -/// Removes the environment variable with the given name. -/// -/// Returns Nil regardless of whether the variable ever existed. -/// -/// ## Examples -/// -/// > get_env("MYVAR") -/// Ok("MYVALUE") -/// > unset_env("MYVAR") -/// Nil -/// > get_env("MYVAR") -/// Error(Nil) -/// -/// > unset_env(name: "MYVAR") -/// Nil -/// -@external(erlang, "gleam_erlang_ffi", "unset_env") -pub fn unset_env(name name: String) -> Nil - -/// Represents operating system kernels -pub type OsFamily { - // The family which includes modern versions of the Windows operating system. - WindowsNt - // The family of operating systems based on the open source Linux kernel. - Linux - // The family of Apple operating systems such as macOS and iOS. - Darwin - // The family of operating systems based on the FreeBSD kernel. - FreeBsd - // An operating system kernel other than Linux, Darwin, FreeBSD, or NT. - Other(String) -} - -/// Returns the kernel of the host operating system. -/// -/// Unknown kernels are reported as `Other(String)`; e.g. `Other("sunos")`. -/// -/// ## Examples -/// -/// > family() -/// Linux -/// > family() -/// Darwin -/// > family() -/// Other("sunos") -/// -@external(erlang, "gleam_erlang_ffi", "os_family") -pub fn family() -> OsFamily diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam b/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam deleted file mode 100644 index f660306..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam/erlang/process.gleam +++ /dev/null @@ -1,744 +0,0 @@ -import gleam/string -import gleam/dynamic.{type Dynamic} -import gleam/erlang.{type Reference} -import gleam/erlang/atom.{type Atom} - -/// A `Pid` (or Process identifier) is a reference to an Erlang process. Each -/// process has a `Pid` and it is one of the lowest level building blocks of -/// inter-process communication in the Erlang and Gleam OTP frameworks. -/// -pub type Pid - -/// Get the `Pid` for the current process. -@external(erlang, "erlang", "self") -pub fn self() -> Pid - -/// Create a new Erlang process that runs concurrently to the creator. In other -/// languages this might be called a fibre, a green thread, or a coroutine. -/// -/// If `linked` is `True` then the created process is linked to the creator -/// process. When a process terminates an exit signal is sent to all other -/// processes that are linked to it, causing the process to either terminate or -/// have to handle the signal. -/// -/// More can be read about processes and links in the [Erlang documentation][1]. -/// -/// [1]: https://www.erlang.org/doc/reference_manual/processes.html -/// -pub fn start(running implementation: fn() -> anything, linked link: Bool) -> Pid { - case link { - True -> spawn_link(implementation) - False -> spawn(implementation) - } -} - -@external(erlang, "erlang", "spawn") -fn spawn(a: fn() -> anything) -> Pid - -@external(erlang, "erlang", "spawn_link") -fn spawn_link(a: fn() -> anything) -> Pid - -/// A `Subject` is a value that processes can use to send and receive messages -/// to and from each other in a well typed way. -/// -/// Each subject is "owned" by the process that created it. Any process can use -/// the `send` function to sent a message of the correct type to the process -/// that owns the subject, and the owner can use the `receive` function or the -/// `Selector` type to receive these messages. -/// -/// The `Subject` type is similar to the "channel" types found in other -/// languages and the "topic" concept found in some pub-sub systems. -/// -/// # Examples -/// -/// ```gleam -/// let subject = new_subject() -/// -/// // Send a message with the subject -/// send(subject, "Hello, Joe!") -/// -/// // Receive the message -/// receive(subject, within: 10) -/// ``` -/// -pub opaque type Subject(message) { - Subject(owner: Pid, tag: Reference) -} - -/// Create a new `Subject` owned by the current process. -/// -pub fn new_subject() -> Subject(message) { - Subject(owner: self(), tag: erlang.make_reference()) -} - -/// Get the owner process for a `Subject`. This is the process that created the -/// `Subject` and will receive messages sent with it. -/// -pub fn subject_owner(subject: Subject(message)) -> Pid { - subject.owner -} - -type DoNotLeak - -@external(erlang, "erlang", "send") -fn raw_send(a: Pid, b: message) -> DoNotLeak - -/// Send a message to a process using a `Subject`. The message must be of the -/// type that the `Subject` accepts. -/// -/// This function does not wait for the `Subject` owner process to call the -/// `receive` function, instead it returns once the message has been placed in -/// the process' mailbox. -/// -/// # Ordering -/// -/// If process P1 sends two messages to process P2 it is guaranteed that process -/// P1 will receive the messages in the order they were sent. -/// -/// If you wish to receive the messages in a different order you can send them -/// on two different subjects and the receiver function can call the `receive` -/// function for each subject in the desired order, or you can write some Erlang -/// code to perform a selective receive. -/// -/// # Examples -/// -/// ```gleam -/// let subject = new_subject() -/// send(subject, "Hello, Joe!") -/// ``` -/// -pub fn send(subject: Subject(message), message: message) -> Nil { - raw_send(subject.owner, #(subject.tag, message)) - Nil -} - -/// Receive a message that has been sent to current process using the `Subject`. -/// -/// If there is not an existing message for the `Subject` in the process' -/// mailbox or one does not arrive `within` the permitted timeout then the -/// `Error(Nil)` is returned. -/// -/// Only the process that is owner of the `Subject` can receive a message using -/// it. If a process that does not own the `Subject` attempts to receive with it -/// then it will not receive a message. -/// -/// To wait for messages from multiple `Subject`s at the same time see the -/// `Selector` type. -/// -pub fn receive( - from subject: Subject(message), - within milliseconds: Int, -) -> Result(message, Nil) { - new_selector() - |> selecting(subject, fn(x) { x }) - |> select(within: milliseconds) -} - -/// A type that enables a process to wait for messages from multiple `Subject`s -/// at the same time, returning whichever message arrives first. -/// -/// Used with the `new_selector`, `selecting`, and `select` functions. -/// -/// # Examples -/// -/// ```gleam -/// > let int_subject = new_subject() -/// > let float_subject = new_subject() -/// > send(int_subject, 1) -/// > -/// > let selector = -/// > new_selector() -/// > |> selecting(int_subject, int.to_string) -/// > |> selecting(float_subject, float.to_string) -/// > -/// > select(selector, 10) -/// Ok("1") -/// ``` -/// -pub type Selector(payload) - -/// Create a new `Selector` which can be used to receive messages on multiple -/// `Subject`s at once. -/// -@external(erlang, "gleam_erlang_ffi", "new_selector") -pub fn new_selector() -> Selector(payload) - -/// Receive a message that has been sent to current process using any of the -/// `Subject`s that have been added to the `Selector` with the `selecting` -/// function. -/// -/// If there is not an existing message for the `Selector` in the process' -/// mailbox or one does not arrive `within` the permitted timeout then the -/// `Error(Nil)` is returned. -/// -/// Only the process that is owner of the `Subject`s can receive a message using -/// them. If a process that does not own the a `Subject` attempts to receive -/// with it then it will not receive a message. -/// -/// To wait forever for the next message rather than for a limited amount of -/// time see the `select_forever` function. -/// -@external(erlang, "gleam_erlang_ffi", "select") -pub fn select( - from from: Selector(payload), - within within: Int, -) -> Result(payload, Nil) - -/// Similar to the `select` function but will wait forever for a message to -/// arrive rather than timing out after a specified amount of time. -/// -@external(erlang, "gleam_erlang_ffi", "select") -pub fn select_forever(from from: Selector(payload)) -> payload - -/// Add a transformation function to a selector. When a message is received -/// using this selector the transformation function is applied to the message. -/// -/// This function can be used to change the type of messages received and may -/// be useful when combined with the `merge_selector` function. -/// -@external(erlang, "gleam_erlang_ffi", "map_selector") -pub fn map_selector(a: Selector(a), b: fn(a) -> b) -> Selector(b) - -/// Merge one selector into another, producing a selector that contains the -/// message handlers of both. -/// -/// If a subject is handled by both selectors the handler function of the -/// second selector is used. -/// -@external(erlang, "gleam_erlang_ffi", "merge_selector") -pub fn merge_selector(a: Selector(a), b: Selector(a)) -> Selector(a) - -pub type ExitMessage { - ExitMessage(pid: Pid, reason: ExitReason) -} - -pub type ExitReason { - Normal - Killed - Abnormal(reason: String) -} - -/// Add a handler for trapped exit messages. In order for these messages to be -/// sent to the process when a linked process exits the process must call the -/// `trap_exit` beforehand. -/// -pub fn selecting_trapped_exits( - selector: Selector(a), - handler: fn(ExitMessage) -> a, -) -> Selector(a) { - let tag = atom.create_from_string("EXIT") - let handler = fn(message: #(Atom, Pid, Dynamic)) -> a { - let reason = message.2 - let normal = dynamic.from(Normal) - let killed = dynamic.from(Killed) - let reason = case dynamic.string(reason) { - _ if reason == normal -> Normal - _ if reason == killed -> Killed - Ok(reason) -> Abnormal(reason) - Error(_) -> Abnormal(string.inspect(reason)) - } - handler(ExitMessage(message.1, reason)) - } - insert_selector_handler(selector, #(tag, 3), handler) -} - -// TODO: implement in Gleam -/// Discard all messages in the current process' mailbox. -/// -/// Warning: This function may cause other processes to crash if they sent a -/// message to the current process and are waiting for a response, so use with -/// caution. -/// -@external(erlang, "gleam_erlang_ffi", "flush_messages") -pub fn flush_messages() -> Nil - -/// Add a new `Subject` to the `Selector` to that it's messages can be received. -/// -/// The `mapping` function provided with the `Subject` can be used to convert -/// the type of messages received using this `Subject`. This is useful for when -/// you wish to add multiple `Subject`s to a `Seletor` when they have differing -/// message types. If you do not wish to transform the incoming messages in any -/// way then the `identity` function can be given. -/// -pub fn selecting( - selector: Selector(payload), - for subject: Subject(message), - mapping transform: fn(message) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(Reference, message)) { transform(message.1) } - insert_selector_handler(selector, #(subject.tag, 2), handler) -} - -/// Add a handler to a selector for 2 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record2( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(tag, Dynamic)) { transform(message.1) } - insert_selector_handler(selector, #(tag, 2), handler) -} - -/// Add a handler to a selector for 3 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record3( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic, Dynamic) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(tag, Dynamic, Dynamic)) { - transform(message.1, message.2) - } - insert_selector_handler(selector, #(tag, 3), handler) -} - -/// Add a handler to a selector for 4 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record4( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic, Dynamic, Dynamic) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic)) { - transform(message.1, message.2, message.3) - } - insert_selector_handler(selector, #(tag, 4), handler) -} - -/// Add a handler to a selector for 5 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record5( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic)) { - transform(message.1, message.2, message.3, message.4) - } - insert_selector_handler(selector, #(tag, 5), handler) -} - -/// Add a handler to a selector for 6 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record6( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> payload, -) -> Selector(payload) { - let handler = fn(message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic)) { - transform(message.1, message.2, message.3, message.4, message.5) - } - insert_selector_handler(selector, #(tag, 6), handler) -} - -/// Add a handler to a selector for 7 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record7( - selector: Selector(payload), - tag: tag, - mapping transform: fn(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic) -> - payload, -) -> Selector(payload) { - let handler = fn( - message: #(tag, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), - ) { - transform(message.1, message.2, message.3, message.4, message.5, message.6) - } - insert_selector_handler(selector, #(tag, 7), handler) -} - -/// Add a handler to a selector for 8 element tuple messages with a given tag -/// element in the first position. -/// -/// Typically you want to use the `selecting` function with a `Subject` instead, -/// but this function may be useful if you need to receive messages sent from -/// other BEAM languages that do not use the `Subject` type. -/// -pub fn selecting_record8( - selector: Selector(payload), - tag: tag, - mapping transform: fn( - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - ) -> - payload, -) -> Selector(payload) { - let handler = fn( - message: #( - tag, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - Dynamic, - ), - ) { - transform( - message.1, - message.2, - message.3, - message.4, - message.5, - message.6, - message.7, - ) - } - insert_selector_handler(selector, #(tag, 8), handler) -} - -type AnythingSelectorTag { - Anything -} - -/// Add a catch-all handler to a selector that will be used when no other -/// handler in a selector is suitable for a given message. -/// -/// This may be useful for when you want to ensure that any message in the inbox -/// is handled, or when you need to handle messages from other BEAM languages -/// which do not use subjects or record format messages. -/// -pub fn selecting_anything( - selector: Selector(payload), - mapping handler: fn(Dynamic) -> payload, -) -> Selector(payload) { - insert_selector_handler(selector, Anything, handler) -} - -@external(erlang, "gleam_erlang_ffi", "insert_selector_handler") -fn insert_selector_handler( - a: Selector(payload), - for for: tag, - mapping mapping: fn(message) -> payload, -) -> Selector(payload) - -/// Suspends the process calling this function for the specified number of -/// milliseconds. -/// -@external(erlang, "gleam_erlang_ffi", "sleep") -pub fn sleep(a: Int) -> Nil - -/// Suspends the process forever! This may be useful for suspending the main -/// process in a Gleam program when it has no more work to do but we want other -/// processes to continue to work. -/// -@external(erlang, "gleam_erlang_ffi", "sleep_forever") -pub fn sleep_forever() -> Nil - -/// Check to see whether the process for a given `Pid` is alive. -/// -/// See the [Erlang documentation][1] for more information. -/// -/// [1]: http://erlang.org/doc/man/erlang.html#is_process_alive-1 -/// -@external(erlang, "erlang", "is_process_alive") -pub fn is_alive(a: Pid) -> Bool - -type ProcessMonitorFlag { - Process -} - -@external(erlang, "erlang", "monitor") -fn erlang_monitor_process(a: ProcessMonitorFlag, b: Pid) -> Reference - -pub opaque type ProcessMonitor { - ProcessMonitor(tag: Reference) -} - -/// A message received when a monitored process exits. -/// -pub type ProcessDown { - ProcessDown(pid: Pid, reason: Dynamic) -} - -/// Start monitoring a process so that when the monitored process exits a -/// message is sent to the monitoring process. -/// -/// The message is only sent once, when the target process exits. If the -/// process was not alive when this function is called the message will never -/// be received. -/// -/// The down message can be received with a `Selector` and the -/// `selecting_process_down` function. -/// -/// The process can be demonitored with the `demonitor_process` function. -/// -pub fn monitor_process(pid: Pid) -> ProcessMonitor { - Process - |> erlang_monitor_process(pid) - |> ProcessMonitor -} - -/// Add a `ProcessMonitor` to a `Selector` so that the `ProcessDown` message can -/// be received using the `Selector` and the `select` function. -/// -pub fn selecting_process_down( - selector: Selector(payload), - monitor: ProcessMonitor, - mapping: fn(ProcessDown) -> payload, -) -> Selector(payload) { - insert_selector_handler(selector, monitor.tag, mapping) -} - -/// Remove the monitor for a process so that when the monitor process exits a -/// `ProcessDown` message is not sent to the monitoring process. -/// -/// If the message has already been sent it is removed from the monitoring -/// process' mailbox. -/// -@external(erlang, "gleam_erlang_ffi", "demonitor") -pub fn demonitor_process(monitor monitor: ProcessMonitor) -> Nil - -/// An error returned when making a call to a process. -/// -pub type CallError(msg) { - /// The process being called exited before it sent a response. - /// - CalleeDown(reason: Dynamic) - - /// The process being called did not response within the permitted amount of - /// time. - /// - CallTimeout -} - -// This function is based off of Erlang's gen:do_call/4. -/// Send a message to a process and wait for a reply. -/// -/// If the receiving process exits or does not reply within the allowed amount -/// of time then an error is returned. -/// -pub fn try_call( - subject: Subject(request), - make_request: fn(Subject(response)) -> request, - within timeout: Int, -) -> Result(response, CallError(response)) { - let reply_subject = new_subject() - - // Monitor the callee process so we can tell if it goes down (meaning we - // won't get a reply) - let monitor = monitor_process(subject_owner(subject)) - - // Send the request to the process over the channel - send(subject, make_request(reply_subject)) - - // Await a reply or handle failure modes (timeout, process down, etc) - let result = - new_selector() - |> selecting(reply_subject, Ok) - |> selecting_process_down( - monitor, - fn(down: ProcessDown) { Error(CalleeDown(reason: down.reason)) }, - ) - |> select(timeout) - - // Demonitor the process and close the channels as we're done - demonitor_process(monitor) - - // Prepare an appropriate error (if present) for the caller - case result { - Error(Nil) -> Error(CallTimeout) - Ok(res) -> res - } -} - -/// Send a message to a process and wait for a reply. -/// -/// If the receiving process exits or does not reply within the allowed amount -/// of time the calling process crashes. If you wish an error to be returned -/// instead see the `try_call` function. -/// -pub fn call( - subject: Subject(request), - make_request: fn(Subject(response)) -> request, - within timeout: Int, -) -> response { - let assert Ok(resp) = try_call(subject, make_request, timeout) - resp -} - -/// Creates a link between the calling process and another process. -/// -/// When a process crashes any linked processes will also crash. This is useful -/// to ensure that groups of processes that depend on each other all either -/// succeed or fail together. -/// -/// Returns `True` if the link was created successfully, returns `False` if the -/// process was not alive and as such could not be linked. -/// -@external(erlang, "gleam_erlang_ffi", "link") -pub fn link(pid pid: Pid) -> Bool - -@external(erlang, "erlang", "unlink") -fn erlang_unlink(pid pid: Pid) -> Bool - -/// Removes any existing link between the caller process and the target process. -/// -pub fn unlink(pid: Pid) -> Nil { - erlang_unlink(pid) - Nil -} - -pub type Timer - -@external(erlang, "erlang", "send_after") -fn erlang_send_after(a: Int, b: Pid, c: msg) -> Timer - -/// Send a message over a channel after a specified number of milliseconds. -/// -pub fn send_after(subject: Subject(msg), delay: Int, message: msg) -> Timer { - erlang_send_after(delay, subject.owner, #(subject.tag, message)) -} - -@external(erlang, "erlang", "cancel_timer") -fn erlang_cancel_timer(a: Timer) -> Dynamic - -/// Values returned when a timer is cancelled. -/// -pub type Cancelled { - /// The timer could not be found. It likely has already triggered. - /// - TimerNotFound - - /// The timer was found and cancelled before it triggered. - /// - /// The amount of remaining time before the timer was due to be triggered is - /// returned in milliseconds. - /// - Cancelled(time_remaining: Int) -} - -/// Cancel a given timer, causing it not to trigger if it has not done already. -/// -pub fn cancel_timer(timer: Timer) -> Cancelled { - case dynamic.int(erlang_cancel_timer(timer)) { - Ok(i) -> Cancelled(i) - Error(_) -> TimerNotFound - } -} - -type KillFlag { - Kill -} - -@external(erlang, "erlang", "exit") -fn erlang_kill(to to: Pid, because because: KillFlag) -> Bool - -// Go, my pretties. Kill! Kill! -// - Bart Simpson -// -/// Send an untrappable `kill` exit signal to the target process. -/// -/// See the documentation for the Erlang [`erlang:exit`][1] function for more -/// information. -/// -/// [1]: https://erlang.org/doc/man/erlang.html#exit-1 -/// -pub fn kill(pid: Pid) -> Nil { - erlang_kill(pid, Kill) - Nil -} - -@external(erlang, "erlang", "exit") -fn erlang_send_exit(to to: Pid, because because: whatever) -> Bool - -// TODO: test -/// Sends an exit signal to a process, indicating that the process is to shut -/// down. -/// -/// See the [Erlang documentation][erl] for more information. -/// [erl]: http://erlang.org/doc/man/erlang.html#exit-2 -/// -pub fn send_exit(to pid: Pid) -> Nil { - erlang_send_exit(pid, Normal) - Nil -} - -/// Sends an exit signal to a process, indicating that the process is to shut -/// down due to an abnormal reason such as a failure. -/// -/// See the [Erlang documentation][erl] for more information. -/// [erl]: http://erlang.org/doc/man/erlang.html#exit-2 -/// -pub fn send_abnormal_exit(pid: Pid, reason: String) -> Nil { - erlang_send_exit(pid, Abnormal(reason)) - Nil -} - -/// Set whether the current process is to trap exit signals or not. -/// -/// When not trapping exits if a linked process crashes the exit signal -/// propagates to the process which will also crash. -/// This is the normal behaviour before this function is called. -/// -/// When trapping exits (after this function is called) if a linked process -/// crashes an exit message is sent to the process instead. These messages can -/// be handled with the `selecting_trapped_exits` function. -/// -@external(erlang, "gleam_erlang_ffi", "trap_exits") -pub fn trap_exits(a: Bool) -> Nil - -/// Register a process under a given name, allowing it to be looked up using -/// the `named` function. -/// -/// This function will return an error under the following conditions: -/// - The process for the pid no longer exists. -/// - The name has already been registered. -/// - The process already has a name. -/// - The name is the atom `undefined`, which is reserved by Erlang. -/// -@external(erlang, "gleam_erlang_ffi", "register_process") -pub fn register(pid: Pid, name: Atom) -> Result(Nil, Nil) - -/// Un-register a process name, after which the process can no longer be looked -/// up by that name, and both the name and the process can be re-used in other -/// registrations. -/// -/// It is possible to un-register process that are not from your application, -/// including those from Erlang/OTP itself. This is not recommended and will -/// likely result in undesirable behaviour and crashes. -/// -@external(erlang, "gleam_erlang_ffi", "unregister_process") -pub fn unregister(name: Atom) -> Result(Nil, Nil) - -/// Look up a process by name, returning the pid if it exists. -/// -@external(erlang, "gleam_erlang_ffi", "process_named") -pub fn named(name: Atom) -> Result(Pid, Nil) diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl deleted file mode 100644 index 14a5538..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang.erl +++ /dev/null @@ -1,90 +0,0 @@ --module(gleam@erlang). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([format/1, term_to_binary/1, get_line/1, system_time/1, erlang_timestamp/0, rescue/1, binary_to_term/1, unsafe_binary_to_term/1, start_arguments/0, ensure_all_started/1, make_reference/0, priv_directory/1]). --export_type([safe/0, get_line_error/0, time_unit/0, crash/0, ensure_all_started_error/0, reference_/0]). - --type safe() :: safe. - --type get_line_error() :: eof | no_data. - --type time_unit() :: second | millisecond | microsecond | nanosecond. - --type crash() :: {exited, gleam@dynamic:dynamic_()} | - {thrown, gleam@dynamic:dynamic_()} | - {errored, gleam@dynamic:dynamic_()}. - --type ensure_all_started_error() :: {unknown_application, - gleam@erlang@atom:atom_()} | - {application_failed_to_start, - gleam@erlang@atom:atom_(), - gleam@dynamic:dynamic_()}. - --type reference_() :: any(). - --spec format(any()) -> binary(). -format(Term) -> - unicode:characters_to_binary(io_lib:format(<<"~p"/utf8>>, [Term])). - --spec term_to_binary(any()) -> bitstring(). -term_to_binary(A) -> - erlang:term_to_binary(A). - --spec get_line(binary()) -> {ok, binary()} | {error, get_line_error()}. -get_line(Prompt) -> - gleam_erlang_ffi:get_line(Prompt). - --spec system_time(time_unit()) -> integer(). -system_time(A) -> - os:system_time(A). - --spec erlang_timestamp() -> {integer(), integer(), integer()}. -erlang_timestamp() -> - os:timestamp(). - --spec rescue(fun(() -> FHH)) -> {ok, FHH} | {error, crash()}. -rescue(A) -> - gleam_erlang_ffi:rescue(A). - --spec binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | - {error, nil}. -binary_to_term(Binary) -> - case gleam_erlang_ffi:rescue( - fun() -> erlang:binary_to_term(Binary, [safe]) end - ) of - {ok, Term} -> - {ok, Term}; - - {error, _} -> - {error, nil} - end. - --spec unsafe_binary_to_term(bitstring()) -> {ok, gleam@dynamic:dynamic_()} | - {error, nil}. -unsafe_binary_to_term(Binary) -> - case gleam_erlang_ffi:rescue(fun() -> erlang:binary_to_term(Binary, []) end) of - {ok, Term} -> - {ok, Term}; - - {error, _} -> - {error, nil} - end. - --spec start_arguments() -> list(binary()). -start_arguments() -> - _pipe = init:get_plain_arguments(), - gleam@list:map(_pipe, fun unicode:characters_to_binary/1). - --spec ensure_all_started(gleam@erlang@atom:atom_()) -> {ok, - list(gleam@erlang@atom:atom_())} | - {error, ensure_all_started_error()}. -ensure_all_started(Application) -> - gleam_erlang_ffi:ensure_all_started(Application). - --spec make_reference() -> reference_(). -make_reference() -> - erlang:make_ref(). - --spec priv_directory(binary()) -> {ok, binary()} | {error, nil}. -priv_directory(Name) -> - gleam_erlang_ffi:priv_directory(Name). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl deleted file mode 100644 index e9ad530..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@atom.erl +++ /dev/null @@ -1,26 +0,0 @@ --module(gleam@erlang@atom). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, create_from_string/1, to_string/1, from_dynamic/1]). --export_type([atom_/0, from_string_error/0]). - --type atom_() :: any(). - --type from_string_error() :: atom_not_loaded. - --spec from_string(binary()) -> {ok, atom_()} | {error, from_string_error()}. -from_string(A) -> - gleam_erlang_ffi:atom_from_string(A). - --spec create_from_string(binary()) -> atom_(). -create_from_string(A) -> - erlang:binary_to_atom(A). - --spec to_string(atom_()) -> binary(). -to_string(A) -> - erlang:atom_to_binary(A). - --spec from_dynamic(gleam@dynamic:dynamic_()) -> {ok, atom_()} | - {error, list(gleam@dynamic:decode_error())}. -from_dynamic(From) -> - gleam_erlang_ffi:atom_from_dynamic(From). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl deleted file mode 100644 index 9f9c0fa..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@charlist.erl +++ /dev/null @@ -1,15 +0,0 @@ --module(gleam@erlang@charlist). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_string/1, from_string/1]). --export_type([charlist/0]). - --type charlist() :: any(). - --spec to_string(charlist()) -> binary(). -to_string(A) -> - unicode:characters_to_binary(A). - --spec from_string(binary()) -> charlist(). -from_string(A) -> - unicode:characters_to_list(A). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl deleted file mode 100644 index 1fe6628..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@file.erl +++ /dev/null @@ -1,190 +0,0 @@ --module(gleam@erlang@file). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([file_info/1, link_info/1, is_directory/1, is_regular/1, file_exists/1, link_exists/1, make_directory/1, list_directory/1, delete_directory/1, recursive_delete/1, read/1, read_bits/1, write/2, write_bits/2, append/2, append_bits/2, delete/1]). --export_type([reason/0, file_type/0, access/0, file_info/0]). - --type reason() :: eacces | - eagain | - ebadf | - ebadmsg | - ebusy | - edeadlk | - edeadlock | - edquot | - eexist | - efault | - efbig | - eftype | - eintr | - einval | - eio | - eisdir | - eloop | - emfile | - emlink | - emultihop | - enametoolong | - enfile | - enobufs | - enodev | - enolck | - enolink | - enoent | - enomem | - enospc | - enosr | - enostr | - enosys | - enotblk | - enotdir | - enotsup | - enxio | - eopnotsupp | - eoverflow | - eperm | - epipe | - erange | - erofs | - espipe | - esrch | - estale | - etxtbsy | - exdev | - not_utf8. - --type file_type() :: device | directory | other | regular | symlink. - --type access() :: no_access | read | read_write | write. - --type file_info() :: {file_info, - integer(), - file_type(), - access(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer(), - integer()}. - --spec file_info(binary()) -> {ok, file_info()} | {error, reason()}. -file_info(A) -> - gleam_erlang_ffi:file_info(A). - --spec link_info(binary()) -> {ok, file_info()} | {error, reason()}. -link_info(A) -> - gleam_erlang_ffi:link_info(A). - --spec is_directory(binary()) -> {ok, boolean()} | {error, reason()}. -is_directory(Path) -> - gleam@result:map( - gleam_erlang_ffi:file_info(Path), - fun(_use0) -> - {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, - File_type =:= directory - end - ). - --spec is_regular(binary()) -> {ok, boolean()} | {error, reason()}. -is_regular(Path) -> - gleam@result:map( - gleam_erlang_ffi:file_info(Path), - fun(_use0) -> - {file_info, _, File_type, _, _, _, _, _, _, _, _, _, _, _} = _use0, - File_type =:= regular - end - ). - --spec file_exists(binary()) -> {ok, boolean()} | {error, reason()}. -file_exists(Path) -> - Result = begin - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:file_info(_pipe), - gleam@result:replace(_pipe@1, true) - end, - case Result of - {error, enoent} -> - {ok, false}; - - _ -> - Result - end. - --spec link_exists(binary()) -> {ok, boolean()} | {error, reason()}. -link_exists(Path) -> - Result = begin - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:link_info(_pipe), - gleam@result:replace(_pipe@1, true) - end, - case Result of - {error, enoent} -> - {ok, false}; - - _ -> - Result - end. - --spec make_directory(binary()) -> {ok, nil} | {error, reason()}. -make_directory(A) -> - gleam_erlang_ffi:make_directory(A). - --spec list_directory(binary()) -> {ok, list(binary())} | {error, reason()}. -list_directory(A) -> - gleam_erlang_ffi:list_directory(A). - --spec delete_directory(binary()) -> {ok, nil} | {error, reason()}. -delete_directory(A) -> - gleam_erlang_ffi:delete_directory(A). - --spec recursive_delete(binary()) -> {ok, nil} | {error, reason()}. -recursive_delete(A) -> - gleam_erlang_ffi:recursive_delete(A). - --spec read(binary()) -> {ok, binary()} | {error, reason()}. -read(Path) -> - _pipe = Path, - _pipe@1 = gleam_erlang_ffi:read_file(_pipe), - gleam@result:then( - _pipe@1, - fun(Content) -> case gleam@bit_array:to_string(Content) of - {ok, String} -> - {ok, String}; - - {error, nil} -> - {error, not_utf8} - end end - ). - --spec read_bits(binary()) -> {ok, bitstring()} | {error, reason()}. -read_bits(Path) -> - gleam_erlang_ffi:read_file(Path). - --spec write(binary(), binary()) -> {ok, nil} | {error, reason()}. -write(Contents, Path) -> - _pipe = Contents, - _pipe@1 = gleam_stdlib:identity(_pipe), - gleam_erlang_ffi:write_file(_pipe@1, Path). - --spec write_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. -write_bits(Contents, Path) -> - gleam_erlang_ffi:write_file(Contents, Path). - --spec append(binary(), binary()) -> {ok, nil} | {error, reason()}. -append(Contents, Path) -> - _pipe = Contents, - _pipe@1 = gleam_stdlib:identity(_pipe), - gleam_erlang_ffi:append_file(_pipe@1, Path). - --spec append_bits(bitstring(), binary()) -> {ok, nil} | {error, reason()}. -append_bits(Contents, Path) -> - gleam_erlang_ffi:append_file(Contents, Path). - --spec delete(binary()) -> {ok, nil} | {error, reason()}. -delete(A) -> - gleam_erlang_ffi:delete_file(A). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl deleted file mode 100644 index f57d029..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@node.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@erlang@node). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([self/0, visible/0, connect/1, send/3, to_atom/1]). --export_type([node_/0, do_not_leak/0, connect_error/0]). - --type node_() :: any(). - --type do_not_leak() :: any(). - --type connect_error() :: failed_to_connect | local_node_is_not_alive. - --spec self() -> node_(). -self() -> - erlang:node(). - --spec visible() -> list(node_()). -visible() -> - erlang:nodes(). - --spec connect(gleam@erlang@atom:atom_()) -> {ok, node_()} | - {error, connect_error()}. -connect(Node) -> - gleam_erlang_ffi:connect_node(Node). - --spec send(node_(), gleam@erlang@atom:atom_(), any()) -> nil. -send(Node, Name, Message) -> - erlang:send({Name, Node}, Message), - nil. - --spec to_atom(node_()) -> gleam@erlang@atom:atom_(). -to_atom(Node) -> - gleam_erlang_ffi:identity(Node). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl deleted file mode 100644 index 6604255..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@os.erl +++ /dev/null @@ -1,27 +0,0 @@ --module(gleam@erlang@os). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get_all_env/0, get_env/1, set_env/2, unset_env/1, family/0]). --export_type([os_family/0]). - --type os_family() :: windows_nt | linux | darwin | free_bsd | {other, binary()}. - --spec get_all_env() -> gleam@map:map_(binary(), binary()). -get_all_env() -> - gleam_erlang_ffi:get_all_env(). - --spec get_env(binary()) -> {ok, binary()} | {error, nil}. -get_env(Name) -> - gleam_erlang_ffi:get_env(Name). - --spec set_env(binary(), binary()) -> nil. -set_env(Name, Value) -> - gleam_erlang_ffi:set_env(Name, Value). - --spec unset_env(binary()) -> nil. -unset_env(Name) -> - gleam_erlang_ffi:unset_env(Name). - --spec family() -> os_family(). -family() -> - gleam_erlang_ffi:os_family(). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl b/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl deleted file mode 100644 index fc8e0ff..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam@erlang@process.erl +++ /dev/null @@ -1,374 +0,0 @@ --module(gleam@erlang@process). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([self/0, start/2, new_subject/0, subject_owner/1, send/2, new_selector/0, select/2, select_forever/1, map_selector/2, merge_selector/2, flush_messages/0, selecting_trapped_exits/2, selecting/3, 'receive'/2, selecting_record2/3, selecting_record3/3, selecting_record4/3, selecting_record5/3, selecting_record6/3, selecting_record7/3, selecting_record8/3, selecting_anything/2, sleep/1, sleep_forever/0, is_alive/1, monitor_process/1, selecting_process_down/3, demonitor_process/1, try_call/3, call/3, link/1, unlink/1, send_after/3, cancel_timer/1, kill/1, send_exit/1, send_abnormal_exit/2, trap_exits/1, register/2, unregister/1, named/1]). --export_type([pid_/0, subject/1, do_not_leak/0, selector/1, exit_message/0, exit_reason/0, anything_selector_tag/0, process_monitor_flag/0, process_monitor/0, process_down/0, call_error/1, timer/0, cancelled/0, kill_flag/0]). - --type pid_() :: any(). - --opaque subject(FJD) :: {subject, pid_(), gleam@erlang:reference_()} | - {gleam_phantom, FJD}. - --type do_not_leak() :: any(). - --type selector(FJE) :: any() | {gleam_phantom, FJE}. - --type exit_message() :: {exit_message, pid_(), exit_reason()}. - --type exit_reason() :: normal | killed | {abnormal, binary()}. - --type anything_selector_tag() :: anything. - --type process_monitor_flag() :: process. - --opaque process_monitor() :: {process_monitor, gleam@erlang:reference_()}. - --type process_down() :: {process_down, pid_(), gleam@dynamic:dynamic_()}. - --type call_error(FJF) :: {callee_down, gleam@dynamic:dynamic_()} | - call_timeout | - {gleam_phantom, FJF}. - --type timer() :: any(). - --type cancelled() :: timer_not_found | {cancelled, integer()}. - --type kill_flag() :: kill. - --spec self() -> pid_(). -self() -> - erlang:self(). - --spec start(fun(() -> any()), boolean()) -> pid_(). -start(Implementation, Link) -> - case Link of - true -> - erlang:spawn_link(Implementation); - - false -> - erlang:spawn(Implementation) - end. - --spec new_subject() -> subject(any()). -new_subject() -> - {subject, erlang:self(), erlang:make_ref()}. - --spec subject_owner(subject(any())) -> pid_(). -subject_owner(Subject) -> - erlang:element(2, Subject). - --spec send(subject(FJO), FJO) -> nil. -send(Subject, Message) -> - erlang:send( - erlang:element(2, Subject), - {erlang:element(3, Subject), Message} - ), - nil. - --spec new_selector() -> selector(any()). -new_selector() -> - gleam_erlang_ffi:new_selector(). - --spec select(selector(FJW), integer()) -> {ok, FJW} | {error, nil}. -select(From, Within) -> - gleam_erlang_ffi:select(From, Within). - --spec select_forever(selector(FKA)) -> FKA. -select_forever(From) -> - gleam_erlang_ffi:select(From). - --spec map_selector(selector(FKC), fun((FKC) -> FKE)) -> selector(FKE). -map_selector(A, B) -> - gleam_erlang_ffi:map_selector(A, B). - --spec merge_selector(selector(FKG), selector(FKG)) -> selector(FKG). -merge_selector(A, B) -> - gleam_erlang_ffi:merge_selector(A, B). - --spec flush_messages() -> nil. -flush_messages() -> - gleam_erlang_ffi:flush_messages(). - --spec selecting_trapped_exits(selector(FKK), fun((exit_message()) -> FKK)) -> selector(FKK). -selecting_trapped_exits(Selector, Handler) -> - Tag = erlang:binary_to_atom(<<"EXIT"/utf8>>), - Handler@1 = fun(Message) -> - Reason = erlang:element(3, Message), - Normal = gleam@dynamic:from(normal), - Killed = gleam@dynamic:from(killed), - Reason@2 = case gleam@dynamic:string(Reason) of - _ when Reason =:= Normal -> - normal; - - _ when Reason =:= Killed -> - killed; - - {ok, Reason@1} -> - {abnormal, Reason@1}; - - {error, _} -> - {abnormal, gleam@string:inspect(Reason)} - end, - Handler({exit_message, erlang:element(2, Message), Reason@2}) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler@1). - --spec selecting(selector(FKN), subject(FKP), fun((FKP) -> FKN)) -> selector(FKN). -selecting(Selector, Subject, Transform) -> - Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, - gleam_erlang_ffi:insert_selector_handler( - Selector, - {erlang:element(3, Subject), 2}, - Handler - ). - --spec 'receive'(subject(FJQ), integer()) -> {ok, FJQ} | {error, nil}. -'receive'(Subject, Milliseconds) -> - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = selecting(_pipe, Subject, fun(X) -> X end), - gleam_erlang_ffi:select(_pipe@1, Milliseconds). - --spec selecting_record2( - selector(FKS), - any(), - fun((gleam@dynamic:dynamic_()) -> FKS) -) -> selector(FKS). -selecting_record2(Selector, Tag, Transform) -> - Handler = fun(Message) -> Transform(erlang:element(2, Message)) end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 2}, Handler). - --spec selecting_record3( - selector(FKW), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FKW) -) -> selector(FKW). -selecting_record3(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform(erlang:element(2, Message), erlang:element(3, Message)) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 3}, Handler). - --spec selecting_record4( - selector(FLA), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLA) -) -> selector(FLA). -selecting_record4(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 4}, Handler). - --spec selecting_record5( - selector(FLE), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLE) -) -> selector(FLE). -selecting_record5(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 5}, Handler). - --spec selecting_record6( - selector(FLI), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLI) -) -> selector(FLI). -selecting_record6(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 6}, Handler). - --spec selecting_record7( - selector(FLM), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLM) -) -> selector(FLM). -selecting_record7(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message), - erlang:element(7, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 7}, Handler). - --spec selecting_record8( - selector(FLQ), - any(), - fun((gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> FLQ) -) -> selector(FLQ). -selecting_record8(Selector, Tag, Transform) -> - Handler = fun(Message) -> - Transform( - erlang:element(2, Message), - erlang:element(3, Message), - erlang:element(4, Message), - erlang:element(5, Message), - erlang:element(6, Message), - erlang:element(7, Message), - erlang:element(8, Message) - ) - end, - gleam_erlang_ffi:insert_selector_handler(Selector, {Tag, 8}, Handler). - --spec selecting_anything(selector(FLU), fun((gleam@dynamic:dynamic_()) -> FLU)) -> selector(FLU). -selecting_anything(Selector, Handler) -> - gleam_erlang_ffi:insert_selector_handler(Selector, anything, Handler). - --spec sleep(integer()) -> nil. -sleep(A) -> - gleam_erlang_ffi:sleep(A). - --spec sleep_forever() -> nil. -sleep_forever() -> - gleam_erlang_ffi:sleep_forever(). - --spec is_alive(pid_()) -> boolean(). -is_alive(A) -> - erlang:is_process_alive(A). - --spec monitor_process(pid_()) -> process_monitor(). -monitor_process(Pid) -> - _pipe = process, - _pipe@1 = erlang:monitor(_pipe, Pid), - {process_monitor, _pipe@1}. - --spec selecting_process_down( - selector(FMC), - process_monitor(), - fun((process_down()) -> FMC) -) -> selector(FMC). -selecting_process_down(Selector, Monitor, Mapping) -> - gleam_erlang_ffi:insert_selector_handler( - Selector, - erlang:element(2, Monitor), - Mapping - ). - --spec demonitor_process(process_monitor()) -> nil. -demonitor_process(Monitor) -> - gleam_erlang_ffi:demonitor(Monitor). - --spec try_call(subject(FMF), fun((subject(FMH)) -> FMF), integer()) -> {ok, FMH} | - {error, call_error(FMH)}. -try_call(Subject, Make_request, Timeout) -> - Reply_subject = new_subject(), - Monitor = monitor_process(subject_owner(Subject)), - send(Subject, Make_request(Reply_subject)), - Result = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = selecting( - _pipe, - Reply_subject, - fun(Field@0) -> {ok, Field@0} end - ), - _pipe@2 = selecting_process_down( - _pipe@1, - Monitor, - fun(Down) -> {error, {callee_down, erlang:element(3, Down)}} end - ), - gleam_erlang_ffi:select(_pipe@2, Timeout) - end, - gleam_erlang_ffi:demonitor(Monitor), - case Result of - {error, nil} -> - {error, call_timeout}; - - {ok, Res} -> - Res - end. - --spec call(subject(FMM), fun((subject(FMO)) -> FMM), integer()) -> FMO. -call(Subject, Make_request, Timeout) -> - _assert_subject = try_call(Subject, Make_request, Timeout), - {ok, Resp} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/erlang/process"/utf8>>, - function => <<"call"/utf8>>, - line => 593}) - end, - Resp. - --spec link(pid_()) -> boolean(). -link(Pid) -> - gleam_erlang_ffi:link(Pid). - --spec unlink(pid_()) -> nil. -unlink(Pid) -> - erlang:unlink(Pid), - nil. - --spec send_after(subject(FMR), integer(), FMR) -> timer(). -send_after(Subject, Delay, Message) -> - erlang:send_after( - Delay, - erlang:element(2, Subject), - {erlang:element(3, Subject), Message} - ). - --spec cancel_timer(timer()) -> cancelled(). -cancel_timer(Timer) -> - case gleam@dynamic:int(erlang:cancel_timer(Timer)) of - {ok, I} -> - {cancelled, I}; - - {error, _} -> - timer_not_found - end. - --spec kill(pid_()) -> nil. -kill(Pid) -> - erlang:exit(Pid, kill), - nil. - --spec send_exit(pid_()) -> nil. -send_exit(Pid) -> - erlang:exit(Pid, normal), - nil. - --spec send_abnormal_exit(pid_(), binary()) -> nil. -send_abnormal_exit(Pid, Reason) -> - erlang:exit(Pid, {abnormal, Reason}), - nil. - --spec trap_exits(boolean()) -> nil. -trap_exits(A) -> - gleam_erlang_ffi:trap_exits(A). - --spec register(pid_(), gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. -register(Pid, Name) -> - gleam_erlang_ffi:register_process(Pid, Name). - --spec unregister(gleam@erlang@atom:atom_()) -> {ok, nil} | {error, nil}. -unregister(Name) -> - gleam_erlang_ffi:unregister_process(Name). - --spec named(gleam@erlang@atom:atom_()) -> {ok, pid_()} | {error, nil}. -named(Name) -> - gleam_erlang_ffi:process_named(Name). diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src deleted file mode 100644 index bb1b8e6..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang.app.src +++ /dev/null @@ -1,14 +0,0 @@ -{application, gleam_erlang, [ - {vsn, "0.23.1"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "A Gleam library for working with Erlang"}, - {modules, [gleam@erlang, - gleam@erlang@atom, - gleam@erlang@charlist, - gleam@erlang@file, - gleam@erlang@node, - gleam@erlang@os, - gleam@erlang@process]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl b/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl deleted file mode 100644 index 872126f..0000000 --- a/aoc2023/build/packages/gleam_erlang/src/gleam_erlang_ffi.erl +++ /dev/null @@ -1,263 +0,0 @@ --module(gleam_erlang_ffi). --export([ - atom_from_dynamic/1, rescue/1, atom_from_string/1, get_line/1, - ensure_all_started/1, sleep/1, os_family/0, sleep_forever/0, read_file/1, - append_file/2, write_file/2, delete_file/1, get_all_env/0, get_env/1, - set_env/2, unset_env/1, delete_directory/1, recursive_delete/1, - list_directory/1, demonitor/1, make_directory/1, new_selector/0, link/1, - insert_selector_handler/3, select/1, select/2, trap_exits/1, map_selector/2, - merge_selector/2, flush_messages/0, file_info/1, link_info/1, - priv_directory/1, connect_node/1, register_process/2, unregister_process/1, - process_named/1, identity/1 -]). - --define(is_posix_error(Error), - Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse - Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse - Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse - Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse - Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse - Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse - Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse - Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse - Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse - Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse - Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse - Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse - Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse - Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse - Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse - Error =:= etxtbsy orelse Error =:= exdev -). - --spec atom_from_string(binary()) -> {ok, atom()} | {error, atom_not_loaded}. -atom_from_string(S) -> - try {ok, binary_to_existing_atom(S)} - catch error:badarg -> {error, atom_not_loaded} - end. - -atom_from_dynamic(Data) when is_atom(Data) -> - {ok, Data}; -atom_from_dynamic(Data) -> - {error, [{decode_error, <<"Atom">>, gleam@dynamic:classify(Data), []}]}. - --spec get_line(io:prompt()) -> {ok, unicode:unicode_binary()} | {error, eof | no_data}. -get_line(Prompt) -> - case io:get_line(Prompt) of - eof -> {error, eof}; - {error, _} -> {error, no_data}; - Data when is_binary(Data) -> {ok, Data}; - Data when is_list(Data) -> {ok, unicode:characters_to_binary(Data)} - end. - -rescue(F) -> - try {ok, F()} - catch - throw:X -> {error, {thrown, X}}; - error:X -> {error, {errored, X}}; - exit:X -> {error, {exited, X}} - end. - -ensure_all_started(Application) -> - case application:ensure_all_started(Application) of - {ok, _} = Ok -> Ok; - - {error, {ProblemApp, {"no such file or directory", _}}} -> - {error, {unknown_application, ProblemApp}} - end. - -sleep(Microseconds) -> - timer:sleep(Microseconds), - nil. - -sleep_forever() -> - timer:sleep(infinity), - nil. - -file_info_result(Result) -> - case Result of - {ok, {file_info, Size, Type, Access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}} when Access =:= none -> - {ok, {file_info, Size, Type, no_access, Atime, Mtime, Ctime, Mode, Links, MajorDevice, MinorDevice, Inode, Uid, Gid}}; - {ok, _} -> - Result; - {error, Reason} when ?is_posix_error(Reason) -> - Result - end. - -file_info(Filename) -> - file_info_result(file:read_file_info(Filename, [{time, posix}])). - -link_info(Filename) -> - file_info_result(file:read_link_info(Filename, [{time, posix}])). - -posix_result(Result) -> - case Result of - ok -> {ok, nil}; - {ok, Value} -> {ok, Value}; - {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} - end. - -read_file(Filename) -> - posix_result(file:read_file(Filename)). - -write_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents)). - -append_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents, [append])). - -delete_file(Filename) -> - posix_result(file:delete(Filename)). - -make_directory(Dir) -> - posix_result(file:make_dir(Dir)). - -list_directory(Dir) -> - case file:list_dir(Dir) of - {ok, Filenames} -> - {ok, [list_to_binary(Filename) || Filename <- Filenames]}; - {error, Reason} when ?is_posix_error(Reason) -> - {error, Reason} - end. - -delete_directory(Dir) -> - posix_result(file:del_dir(Dir)). - -recursive_delete(Dir) -> - posix_result(file:del_dir_r(Dir)). - -get_all_env() -> - BinVars = lists:map(fun(VarString) -> - [VarName, VarVal] = string:split(VarString, "="), - {list_to_binary(VarName), list_to_binary(VarVal)} - end, os:getenv()), - maps:from_list(BinVars). - -get_env(Name) -> - case os:getenv(binary_to_list(Name)) of - false -> {error, nil}; - Value -> {ok, list_to_binary(Value)} - end. - -set_env(Name, Value) -> - os:putenv(binary_to_list(Name), binary_to_list(Value)), - nil. - -unset_env(Name) -> - os:unsetenv(binary_to_list(Name)), - nil. - -os_family() -> - case os:type() of - {win32, nt} -> - windows_nt; - {unix, linux} -> - linux; - {unix, darwin} -> - darwin; - {unix, freebsd} -> - free_bsd; - {_, Other} -> - {other, atom_to_binary(Other, utf8)} - end. - -new_selector() -> - {selector, #{}}. - -map_selector({selector, Handlers}, Fn) -> - MappedHandlers = maps:map(fun(_Tag, Handler) -> - fun(Message) -> Fn(Handler(Message)) end - end, Handlers), - {selector, MappedHandlers}. - -merge_selector({selector, HandlersA}, {selector, HandlersB}) -> - {selector, maps:merge(HandlersA, HandlersB)}. - -insert_selector_handler({selector, Handlers}, Tag, Fn) -> - {selector, Handlers#{Tag => Fn}}. - -select(Selector) -> - {ok, Message} = select(Selector, infinity), - Message. - -select({selector, Handlers}, Timeout) -> - AnythingHandler = maps:get(anything, Handlers, undefined), - receive - % Monitored process down messages. - % This is special cased so we can selectively receive based on the - % reference as well as the record tag. - {'DOWN', Ref, process, Pid, Reason} when is_map_key(Ref, Handlers) -> - Fn = maps:get(Ref, Handlers), - {ok, Fn({process_down, Pid, Reason})}; - - Msg when is_map_key({element(1, Msg), tuple_size(Msg)}, Handlers) -> - Fn = maps:get({element(1, Msg), tuple_size(Msg)}, Handlers), - {ok, Fn(Msg)}; - - Msg when AnythingHandler =/= undefined -> - {ok, AnythingHandler(Msg)} - after Timeout -> - {error, nil} - end. - -demonitor({_, Reference}) -> - erlang:demonitor(Reference, [flush]). - -link(Pid) -> - try - erlang:link(Pid) - catch - error:_ -> false - end. - -trap_exits(ShouldTrap) -> - erlang:process_flag(trap_exit, ShouldTrap), - nil. - -flush_messages() -> - receive _Message -> flush_messages() - after 0 -> nil - end. - -priv_directory(Name) -> - try erlang:binary_to_existing_atom(Name) of - Atom -> - case code:priv_dir(Atom) of - {error, _} -> {error, nil}; - Path -> {ok, unicode:characters_to_binary(Path)} - end - catch - error:badarg -> {error, nil} - end. - -connect_node(Node) -> - case net_kernel:connect_node(Node) of - true -> {ok, Node}; - false -> {error, failed_to_connect}; - ignored -> {error, local_node_is_not_alive} - end. - -register_process(Pid, Name) -> - try - true = erlang:register(Name, Pid), - {ok, nil} - catch - error:badarg -> {error, nil} - end. - -unregister_process(Name) -> - try - true = erlang:unregister(Name), - {ok, nil} - catch - error:badarg -> {error, nil} - end. - -process_named(Name) -> - case erlang:whereis(Name) of - Pid when is_pid(Pid) -> {ok, Pid}; - _ -> {error, nil} - end. - -identity(X) -> - X. diff --git a/aoc2023/build/packages/gleam_http/LICENSE b/aoc2023/build/packages/gleam_http/LICENSE deleted file mode 100644 index 619ec77..0000000 --- a/aoc2023/build/packages/gleam_http/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2019, Louis Pilfold . - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/aoc2023/build/packages/gleam_http/README.md b/aoc2023/build/packages/gleam_http/README.md deleted file mode 100644 index 9e06952..0000000 --- a/aoc2023/build/packages/gleam_http/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Gleam HTTP - -Types and functions for HTTP clients and servers! - -## HTTP Service Example - -```gleam -import gleam/http/elli -import gleam/http/response.{Response} -import gleam/http/request.{Request} -import gleam/bit_builder.{BitBuilder} - -// Define a HTTP service -// -pub fn my_service(request: Request(t)) -> Response(BitBuilder) { - let body = bit_builder.from_string("Hello, world!") - - response.new(200) - |> response.prepend_header("made-with", "Gleam") - |> response.set_body(body) -} - -// Start it on port 3000 using the Elli web server -// -pub fn main() { - elli.become(my_service, on_port: 3000) -} -``` - -## Server adapters - -In the example above the Elli Erlang web server is used to run the Gleam HTTP -service. Here's a full list of the server adapters available, sorted -alphabetically. - -| Adapter | About | -| --- | --- | -| [Mist][mist] | [Mist][mist] is a high performance pure Gleam web server | -| [gleam_cowboy][cowboy-adapter] | [Cowboy][cowboy] is an Erlang HTTP2 & HTTP1.1 web server | -| [gleam_elli][elli-adapter] | [Elli][elli] is an Erlang HTTP1.1 web server | -| [gleam_plug][plug-adapter] | [Plug][plug] is an Elixir web application interface | - -[cowboy]:https://github.com/ninenines/cowboy -[cowboy-adapter]: https://github.com/gleam-lang/cowboy -[elli]:https://github.com/elli-lib/elli -[elli-adapter]: https://github.com/gleam-lang/elli -[plug]:https://github.com/elixir-plug/plug -[plug-adapter]: https://github.com/gleam-lang/plug -[mist]: https://github.com/rawhat/mist - -## Client adapters - -Client adapters are used to send HTTP requests to services over the network. -Here's a full list of the client adapters available, sorted alphabetically. - -| Adapter | About | -| --- | --- | -| [gleam_fetch][fetch-adapter] | [fetch][fetch] is a HTTP client included with JavaScript | -| [gleam_hackney][hackney-adapter] | [Hackney][hackney] is a simple HTTP client for Erlang | -| [gleam_httpc][httpc-adapter] | [httpc][httpc] is a HTTP client included with Erlang | - -[hackney]: https://github.com/benoitc/hackney -[hackney-adapter]: https://github.com/gleam-lang/hackney -[httpc]: https://erlang.org/doc/man/httpc.html -[httpc-adapter]: https://github.com/gleam-lang/httpc -[fetch]: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API -[fetch-adapter]: https://github.com/gleam-lang/fetch diff --git a/aoc2023/build/packages/gleam_http/gleam.toml b/aoc2023/build/packages/gleam_http/gleam.toml deleted file mode 100644 index ba733e8..0000000 --- a/aoc2023/build/packages/gleam_http/gleam.toml +++ /dev/null @@ -1,17 +0,0 @@ -name = "gleam_http" -version = "3.5.2" -licences = ["Apache-2.0"] -description = "Types and functions for Gleam HTTP clients and servers" -gleam = ">= 0.32.0" - -repository = { type = "github", user = "gleam-lang", repo = "http" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] - -[dependencies] -gleam_stdlib = "~> 0.32" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl deleted file mode 100644 index 78a7d02..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http@cookie_Attributes.hrl +++ /dev/null @@ -1,8 +0,0 @@ --record(attributes, { - max_age :: gleam@option:option(integer()), - domain :: gleam@option:option(binary()), - path :: gleam@option:option(binary()), - secure :: boolean(), - http_only :: boolean(), - same_site :: gleam@option:option(gleam@http@cookie:same_site_policy()) -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl deleted file mode 100644 index c8bbae6..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http@request_Request.hrl +++ /dev/null @@ -1,10 +0,0 @@ --record(request, { - method :: gleam@http:method(), - headers :: list({binary(), binary()}), - body :: any(), - scheme :: gleam@http:scheme(), - host :: binary(), - port :: gleam@option:option(integer()), - path :: binary(), - 'query' :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl deleted file mode 100644 index ba6f077..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http@response_Response.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(response, { - status :: integer(), - headers :: list({binary(), binary()}), - body :: any() -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl deleted file mode 100644 index abd56dd..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForBody.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(more_required_for_body, { - chunk :: bitstring(), - continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_body()} | - {error, nil}) -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl deleted file mode 100644 index 43729c1..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http_MoreRequiredForHeaders.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(more_required_for_headers, { - continuation :: fun((bitstring()) -> {ok, gleam@http:multipart_headers()} | - {error, nil}) -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl deleted file mode 100644 index 4521591..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartBody.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(multipart_body, { - chunk :: bitstring(), - done :: boolean(), - remaining :: bitstring() -}). diff --git a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl b/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl deleted file mode 100644 index d9fca5c..0000000 --- a/aoc2023/build/packages/gleam_http/include/gleam@http_MultipartHeaders.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(multipart_headers, { - headers :: list({binary(), binary()}), - remaining :: bitstring() -}). diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http.gleam deleted file mode 100644 index a892006..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam/http.gleam +++ /dev/null @@ -1,560 +0,0 @@ -//// Functions for working with HTTP data structures in Gleam. -//// -//// This module makes it easy to create and modify Requests and Responses, data types. -//// A general HTTP message type is defined that enables functions to work on both requests and responses. -//// -//// This module does not implement a HTTP client or HTTP server, but it can be used as a base for them. - -import gleam/dynamic.{type DecodeError, type Dynamic, DecodeError} -import gleam/string -import gleam/bit_array -import gleam/result -import gleam/list -import gleam/bool - -/// HTTP standard method as defined by [RFC 2616](https://tools.ietf.org/html/rfc2616), -/// and PATCH which is defined by [RFC 5789](https://tools.ietf.org/html/rfc5789). -pub type Method { - Get - Post - Head - Put - Delete - Trace - Connect - Options - Patch - - /// Non-standard but valid HTTP methods. - Other(String) -} - -// TODO: check if the a is a valid HTTP method (i.e. it is a token, as per the -// spec) and return Ok(Other(s)) if so. -pub fn parse_method(s) -> Result(Method, Nil) { - case string.lowercase(s) { - "connect" -> Ok(Connect) - "delete" -> Ok(Delete) - "get" -> Ok(Get) - "head" -> Ok(Head) - "options" -> Ok(Options) - "patch" -> Ok(Patch) - "post" -> Ok(Post) - "put" -> Ok(Put) - "trace" -> Ok(Trace) - _ -> Error(Nil) - } -} - -pub fn method_to_string(method: Method) -> String { - case method { - Connect -> "connect" - Delete -> "delete" - Get -> "get" - Head -> "head" - Options -> "options" - Patch -> "patch" - Post -> "post" - Put -> "put" - Trace -> "trace" - Other(s) -> s - } -} - -/// The two URI schemes for HTTP -/// -pub type Scheme { - Http - Https -} - -/// Convert a scheme into a string. -/// -/// # Examples -/// -/// > scheme_to_string(Http) -/// "http" -/// -/// > scheme_to_string(Https) -/// "https" -/// -pub fn scheme_to_string(scheme: Scheme) -> String { - case scheme { - Http -> "http" - Https -> "https" - } -} - -/// Parse a HTTP scheme from a string -/// -/// # Examples -/// -/// > scheme_from_string("http") -/// Ok(Http) -/// -/// > scheme_from_string("ftp") -/// Error(Nil) -/// -pub fn scheme_from_string(scheme: String) -> Result(Scheme, Nil) { - case string.lowercase(scheme) { - "http" -> Ok(Http) - "https" -> Ok(Https) - _ -> Error(Nil) - } -} - -pub fn method_from_dynamic(value: Dynamic) -> Result(Method, List(DecodeError)) { - case do_method_from_dynamic(value) { - Ok(method) -> Ok(method) - Error(_) -> Error([DecodeError("HTTP method", dynamic.classify(value), [])]) - } -} - -pub type MultipartHeaders { - /// The headers for the part have been fully parsed. - MultipartHeaders( - headers: List(Header), - /// The remaining content that has not yet been parsed. This will contain - /// the body for this part, if any, and can be parsed with the - /// `parse_multipart_body` function. - remaining: BitArray, - ) - /// More input is required to parse the headers for this part. - MoreRequiredForHeaders( - /// Call this function to continue parsing the headers for this part. - continuation: fn(BitArray) -> Result(MultipartHeaders, Nil), - ) -} - -pub type MultipartBody { - /// The body for the part has been fully parsed. - MultipartBody( - // The rest of the body for this part. The full body of the part is this - // concatenated onto the end of each chunk returned by any previous - // `MoreRequiredForBody` returns. - chunk: BitArray, - /// This is `True` if this was the last part in the multipart message, - /// otherwise there are more parts to parse. - done: Bool, - /// The remaining content that has not yet been parsed. This will contain - /// the next part if `done` is `False`, otherwise it will contain the - /// epilogue, if any. - remaining: BitArray, - ) - MoreRequiredForBody( - // The body that has been parsed so far. The full body of the part is this - // concatenated with the chunk returned by each `MoreRequiredForBody` return - // value, and the final `MultipartBody` return value. - chunk: BitArray, - /// Call this function to continue parsing the body for this part. - continuation: fn(BitArray) -> Result(MultipartBody, Nil), - ) -} - -/// Parse the headers for part of a multipart message, as defined in RFC 2045. -/// -/// This function skips any preamble before the boundary. The preamble may be -/// retrieved using `parse_multipart_body`. -/// -/// This function will accept input of any size, it is up to the caller to limit -/// it if needed. -/// -/// To enable streaming parsing of multipart messages, this function will return -/// a continuation if there is not enough data to fully parse the headers. -/// Further information is available in the documentation for `MultipartBody`. -/// -pub fn parse_multipart_headers( - data: BitArray, - boundary: String, -) -> Result(MultipartHeaders, Nil) { - let boundary = bit_array.from_string(boundary) - // TODO: rewrite this to use a bit pattern once JavaScript supports - // the `b:binary-size(bsize)` pattern. - let prefix = <<45, 45, boundary:bits>> - case bit_array.slice(data, 0, bit_array.byte_size(prefix)) == Ok(prefix) { - // There is no preamble, parse the headers. - True -> parse_headers_after_prelude(data, boundary) - // There is a preamble, skip it before parsing. - False -> skip_preamble(data, boundary) - } -} - -/// Parse the body for part of a multipart message, as defined in RFC 2045. The -/// body is everything until the next boundary. This function is generally to be -/// called after calling `parse_multipart_headers` for a given part. -/// -/// This function will accept input of any size, it is up to the caller to limit -/// it if needed. -/// -/// To enable streaming parsing of multipart messages, this function will return -/// a continuation if there is not enough data to fully parse the body, along -/// with the data that has been parsed so far. Further information is available -/// in the documentation for `MultipartBody`. -/// -pub fn parse_multipart_body( - data: BitArray, - boundary: String, -) -> Result(MultipartBody, Nil) { - boundary - |> bit_array.from_string - |> parse_body_with_bit_array(data, _) -} - -fn parse_body_with_bit_array( - data: BitArray, - boundary: BitArray, -) -> Result(MultipartBody, Nil) { - let bsize = bit_array.byte_size(boundary) - let prefix = bit_array.slice(data, 0, 2 + bsize) - case prefix == Ok(<<45, 45, boundary:bits>>) { - True -> Ok(MultipartBody(<<>>, done: False, remaining: data)) - False -> parse_body_loop(data, boundary, <<>>) - } -} - -fn parse_body_loop( - data: BitArray, - boundary: BitArray, - body: BitArray, -) -> Result(MultipartBody, Nil) { - let dsize = bit_array.byte_size(data) - let bsize = bit_array.byte_size(boundary) - let required = 6 + bsize - case data { - _ if dsize < required -> { - more_please_body(parse_body_loop(_, boundary, <<>>), body, data) - } - - // TODO: flatten this into a single case expression once JavaScript supports - // the `b:binary-size(bsize)` pattern. - // - // \r\n - <<13, 10, data:bytes>> -> { - let desired = <<45, 45, boundary:bits>> - let size = bit_array.byte_size(desired) - let dsize = bit_array.byte_size(data) - let prefix = bit_array.slice(data, 0, size) - let rest = bit_array.slice(data, size, dsize - size) - case prefix == Ok(desired), rest { - // --boundary\r\n - True, Ok(<<13, 10, _:bytes>>) -> - Ok(MultipartBody(body, done: False, remaining: data)) - - // --boundary-- - True, Ok(<<45, 45, data:bytes>>) -> - Ok(MultipartBody(body, done: True, remaining: data)) - - False, _ -> parse_body_loop(data, boundary, <>) - _, _ -> Error(Nil) - } - } - - <> -> { - parse_body_loop(data, boundary, <>) - } - } -} - -fn parse_headers_after_prelude( - data: BitArray, - boundary: BitArray, -) -> Result(MultipartHeaders, Nil) { - let dsize = bit_array.byte_size(data) - let bsize = bit_array.byte_size(boundary) - let required_size = bsize + 4 - - // TODO: this could be written as a single case expression if JavaScript had - // support for the `b:binary-size(bsize)` pattern. Rewrite this once the - // compiler support this. - - use <- bool.guard( - when: dsize < required_size, - return: more_please_headers(parse_headers_after_prelude(_, boundary), data), - ) - - use prefix <- result.try(bit_array.slice(data, 0, required_size - 2)) - use second <- result.try(bit_array.slice(data, 2 + bsize, 2)) - let desired = <<45, 45, boundary:bits>> - - use <- bool.guard(prefix != desired, return: Error(Nil)) - - case second == <<45, 45>> { - // --boundary-- - // The last boundary. Return the epilogue. - True -> { - let rest_size = dsize - required_size - use data <- result.map(bit_array.slice(data, required_size, rest_size)) - MultipartHeaders([], remaining: data) - } - - // --boundary - False -> { - let start = required_size - 2 - let rest_size = dsize - required_size + 2 - use data <- result.try(bit_array.slice(data, start, rest_size)) - do_parse_headers(data) - } - } -} - -fn skip_preamble( - data: BitArray, - boundary: BitArray, -) -> Result(MultipartHeaders, Nil) { - let data_size = bit_array.byte_size(data) - let boundary_size = bit_array.byte_size(boundary) - let required = boundary_size + 4 - case data { - _ if data_size < required -> - more_please_headers(skip_preamble(_, boundary), data) - - // TODO: change this to use one non-nested case expression once the compiler - // supports the `b:binary-size(bsize)` pattern on JS. - // \r\n-- - <<13, 10, 45, 45, data:bytes>> -> { - case bit_array.slice(data, 0, boundary_size) { - // --boundary - Ok(prefix) if prefix == boundary -> { - let start = boundary_size - let length = bit_array.byte_size(data) - boundary_size - use rest <- result.try(bit_array.slice(data, start, length)) - do_parse_headers(rest) - } - Ok(_) -> skip_preamble(data, boundary) - Error(_) -> Error(Nil) - } - } - - <<_, data:bytes>> -> skip_preamble(data, boundary) - } -} - -fn skip_whitespace(data: BitArray) -> BitArray { - case data { - // Space or tab. - <<32, data:bytes>> | <<9, data:bytes>> -> skip_whitespace(data) - _ -> data - } -} - -fn do_parse_headers(data: BitArray) -> Result(MultipartHeaders, Nil) { - case data { - // \r\n\r\n - // We've reached the end, there are no headers. - <<13, 10, 13, 10, data:bytes>> -> Ok(MultipartHeaders([], remaining: data)) - - // \r\n - // Skip the line break after the boundary. - <<13, 10, data:bytes>> -> parse_header_name(data, [], <<>>) - - <<13>> | <<>> -> more_please_headers(do_parse_headers, data) - - _ -> Error(Nil) - } -} - -fn parse_header_name( - data: BitArray, - headers: List(Header), - name: BitArray, -) -> Result(MultipartHeaders, Nil) { - case skip_whitespace(data) { - // : - <<58, data:bytes>> -> - data - |> skip_whitespace - |> parse_header_value(headers, name, <<>>) - - <> -> - parse_header_name(data, headers, <>) - - <<>> -> more_please_headers(parse_header_name(_, headers, name), data) - } -} - -fn parse_header_value( - data: BitArray, - headers: List(Header), - name: BitArray, - value: BitArray, -) -> Result(MultipartHeaders, Nil) { - let size = bit_array.byte_size(data) - case data { - // We need at least 4 bytes to check for the end of the headers. - _ if size < 4 -> - fn(data) { - data - |> skip_whitespace - |> parse_header_value(headers, name, value) - } - |> more_please_headers(data) - - // \r\n\r\n - <<13, 10, 13, 10, data:bytes>> -> { - use name <- result.try(bit_array.to_string(name)) - use value <- result.map(bit_array.to_string(value)) - let headers = list.reverse([#(string.lowercase(name), value), ..headers]) - MultipartHeaders(headers, data) - } - - // \r\n\s - // \r\n\t - <<13, 10, 32, data:bytes>> | <<13, 10, 9, data:bytes>> -> - parse_header_value(data, headers, name, value) - - // \r\n - <<13, 10, data:bytes>> -> { - use name <- result.try(bit_array.to_string(name)) - use value <- result.try(bit_array.to_string(value)) - let headers = [#(string.lowercase(name), value), ..headers] - parse_header_name(data, headers, <<>>) - } - - <> -> { - let value = <> - parse_header_value(rest, headers, name, value) - } - - _ -> Error(Nil) - } -} - -fn more_please_headers( - continuation: fn(BitArray) -> Result(MultipartHeaders, Nil), - existing: BitArray, -) -> Result(MultipartHeaders, Nil) { - Ok(MoreRequiredForHeaders(fn(more) { - use <- bool.guard(more == <<>>, return: Error(Nil)) - continuation(<>) - })) -} - -pub type ContentDisposition { - ContentDisposition(String, parameters: List(#(String, String))) -} - -pub fn parse_content_disposition( - header: String, -) -> Result(ContentDisposition, Nil) { - parse_content_disposition_type(header, "") -} - -fn parse_content_disposition_type( - header: String, - name: String, -) -> Result(ContentDisposition, Nil) { - case string.pop_grapheme(header) { - Error(Nil) -> Ok(ContentDisposition(name, [])) - - Ok(#(" ", rest)) | Ok(#("\t", rest)) | Ok(#(";", rest)) -> { - let result = parse_rfc_2045_parameters(rest, []) - use parameters <- result.map(result) - ContentDisposition(name, parameters) - } - - Ok(#(grapheme, rest)) -> - parse_content_disposition_type(rest, name <> string.lowercase(grapheme)) - } -} - -fn parse_rfc_2045_parameters( - header: String, - parameters: List(#(String, String)), -) -> Result(List(#(String, String)), Nil) { - case string.pop_grapheme(header) { - Error(Nil) -> Ok(list.reverse(parameters)) - - Ok(#(";", rest)) | Ok(#(" ", rest)) | Ok(#("\t", rest)) -> - parse_rfc_2045_parameters(rest, parameters) - - Ok(#(grapheme, rest)) -> { - let acc = string.lowercase(grapheme) - use #(parameter, rest) <- result.try(parse_rfc_2045_parameter(rest, acc)) - parse_rfc_2045_parameters(rest, [parameter, ..parameters]) - } - } -} - -fn parse_rfc_2045_parameter( - header: String, - name: String, -) -> Result(#(#(String, String), String), Nil) { - use #(grapheme, rest) <- result.try(string.pop_grapheme(header)) - case grapheme { - "=" -> parse_rfc_2045_parameter_value(rest, name) - _ -> parse_rfc_2045_parameter(rest, name <> string.lowercase(grapheme)) - } -} - -fn parse_rfc_2045_parameter_value( - header: String, - name: String, -) -> Result(#(#(String, String), String), Nil) { - case string.pop_grapheme(header) { - Error(Nil) -> Error(Nil) - Ok(#("\"", rest)) -> parse_rfc_2045_parameter_quoted_value(rest, name, "") - Ok(#(grapheme, rest)) -> - Ok(parse_rfc_2045_parameter_unquoted_value(rest, name, grapheme)) - } -} - -fn parse_rfc_2045_parameter_quoted_value( - header: String, - name: String, - value: String, -) -> Result(#(#(String, String), String), Nil) { - case string.pop_grapheme(header) { - Error(Nil) -> Error(Nil) - Ok(#("\"", rest)) -> Ok(#(#(name, value), rest)) - Ok(#("\\", rest)) -> { - use #(grapheme, rest) <- result.try(string.pop_grapheme(rest)) - parse_rfc_2045_parameter_quoted_value(rest, name, value <> grapheme) - } - Ok(#(grapheme, rest)) -> - parse_rfc_2045_parameter_quoted_value(rest, name, value <> grapheme) - } -} - -fn parse_rfc_2045_parameter_unquoted_value( - header: String, - name: String, - value: String, -) -> #(#(String, String), String) { - case string.pop_grapheme(header) { - Error(Nil) -> #(#(name, value), header) - - Ok(#(";", rest)) | Ok(#(" ", rest)) | Ok(#("\t", rest)) -> #( - #(name, value), - rest, - ) - - Ok(#(grapheme, rest)) -> - parse_rfc_2045_parameter_unquoted_value(rest, name, value <> grapheme) - } -} - -fn more_please_body( - continuation: fn(BitArray) -> Result(MultipartBody, Nil), - chunk: BitArray, - existing: BitArray, -) -> Result(MultipartBody, Nil) { - fn(more) { - use <- bool.guard(more == <<>>, return: Error(Nil)) - continuation(<>) - } - |> MoreRequiredForBody(chunk, _) - |> Ok -} - -@target(erlang) -@external(erlang, "gleam_http_native", "decode_method") -fn do_method_from_dynamic(a: Dynamic) -> Result(Method, nil) - -@target(javascript) -@external(javascript, "../gleam_http_native.mjs", "decode_method") -fn do_method_from_dynamic(a: Dynamic) -> Result(Method, Nil) - -/// A HTTP header is a key-value pair. Header keys should be all lowercase -/// characters. -pub type Header = - #(String, String) diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam deleted file mode 100644 index e9ccb55..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam/http/cookie.gleam +++ /dev/null @@ -1,128 +0,0 @@ -import gleam/result -import gleam/int -import gleam/list -import gleam/regex -import gleam/string -import gleam/option.{type Option, Some} -import gleam/http.{type Scheme} - -/// Policy options for the SameSite cookie attribute -/// -/// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite -pub type SameSitePolicy { - Lax - Strict - None -} - -fn same_site_to_string(policy) { - case policy { - Lax -> "Lax" - Strict -> "Strict" - None -> "None" - } -} - -/// Attributes of a cookie when sent to a client in the `set-cookie` header. -pub type Attributes { - Attributes( - max_age: Option(Int), - domain: Option(String), - path: Option(String), - secure: Bool, - http_only: Bool, - same_site: Option(SameSitePolicy), - ) -} - -/// Helper to create sensible default attributes for a set cookie. -/// -/// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Attributes -pub fn defaults(scheme: Scheme) { - Attributes( - max_age: option.None, - domain: option.None, - path: option.Some("/"), - secure: scheme == http.Https, - http_only: True, - same_site: Some(Lax), - ) -} - -const epoch = "Expires=Thu, 01 Jan 1970 00:00:00 GMT" - -fn cookie_attributes_to_list(attributes) { - let Attributes( - max_age: max_age, - domain: domain, - path: path, - secure: secure, - http_only: http_only, - same_site: same_site, - ) = attributes - [ - // Expires is a deprecated attribute for cookies, it has been replaced with MaxAge - // MaxAge is widely supported and so Expires values are not set. - // Only when deleting cookies is the exception made to use the old format, - // to ensure complete clearup of cookies if required by an application. - case max_age { - option.Some(0) -> option.Some([epoch]) - _ -> option.None - }, - option.map(max_age, fn(max_age) { ["Max-Age=", int.to_string(max_age)] }), - option.map(domain, fn(domain) { ["Domain=", domain] }), - option.map(path, fn(path) { ["Path=", path] }), - case secure { - True -> option.Some(["Secure"]) - False -> option.None - }, - case http_only { - True -> option.Some(["HttpOnly"]) - False -> option.None - }, - option.map( - same_site, - fn(same_site) { ["SameSite=", same_site_to_string(same_site)] }, - ), - ] - |> list.filter_map(option.to_result(_, Nil)) -} - -pub fn set_header(name: String, value: String, attributes: Attributes) -> String { - [[name, "=", value], ..cookie_attributes_to_list(attributes)] - |> list.map(string.join(_, "")) - |> string.join("; ") -} - -/// Parse a list of cookies from a header string. Any malformed cookies will be -/// discarded. -/// -pub fn parse(cookie_string: String) -> List(#(String, String)) { - let assert Ok(re) = regex.from_string("[,;]") - regex.split(re, cookie_string) - |> list.filter_map(fn(pair) { - case string.split_once(string.trim(pair), "=") { - Ok(#("", _)) -> Error(Nil) - Ok(#(key, value)) -> { - let key = string.trim(key) - let value = string.trim(value) - use _ <- result.then(check_token(key)) - use _ <- result.then(check_token(value)) - Ok(#(key, value)) - } - Error(Nil) -> Error(Nil) - } - }) -} - -fn check_token(token: String) -> Result(Nil, Nil) { - case string.pop_grapheme(token) { - Error(Nil) -> Ok(Nil) - Ok(#(" ", _)) -> Error(Nil) - Ok(#("\t", _)) -> Error(Nil) - Ok(#("\r", _)) -> Error(Nil) - Ok(#("\n", _)) -> Error(Nil) - Ok(#("\f", _)) -> Error(Nil) - Ok(#(_, rest)) -> check_token(rest) - } -} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam deleted file mode 100644 index 0bf9af9..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam/http/request.gleam +++ /dev/null @@ -1,267 +0,0 @@ -import gleam/result -// TODO: validate_req -import gleam/http.{type Header, type Method, type Scheme, Get} -import gleam/http/cookie -import gleam/option.{type Option} -import gleam/uri.{type Uri, Uri} -import gleam/list -import gleam/string -import gleam/string_builder - -// TODO: document -pub type Request(body) { - Request( - method: Method, - headers: List(Header), - body: body, - scheme: Scheme, - host: String, - port: Option(Int), - path: String, - query: Option(String), - ) -} - -/// Return the uri that a request was sent to. -/// -pub fn to_uri(request: Request(a)) -> Uri { - Uri( - scheme: option.Some(http.scheme_to_string(request.scheme)), - userinfo: option.None, - host: option.Some(request.host), - port: request.port, - path: request.path, - query: request.query, - fragment: option.None, - ) -} - -/// Construct a request from a URI. -/// -pub fn from_uri(uri: Uri) -> Result(Request(String), Nil) { - use scheme <- result.then( - uri.scheme - |> option.unwrap("") - |> http.scheme_from_string, - ) - use host <- result.then( - uri.host - |> option.to_result(Nil), - ) - let req = - Request( - method: Get, - headers: [], - body: "", - scheme: scheme, - host: host, - port: uri.port, - path: uri.path, - query: uri.query, - ) - Ok(req) -} - -/// Get the value for a given header. -/// -/// If the request does not have that header then `Error(Nil)` is returned. -/// -pub fn get_header(request: Request(body), key: String) -> Result(String, Nil) { - list.key_find(request.headers, string.lowercase(key)) -} - -/// Set the header with the given value under the given header key. -/// -/// If already present, it is replaced. -pub fn set_header( - request: Request(body), - key: String, - value: String, -) -> Request(body) { - let headers = list.key_set(request.headers, string.lowercase(key), value) - Request(..request, headers: headers) -} - -/// Prepend the header with the given value under the given header key. -/// -/// Similar to `set_header` except if the header already exists it prepends -/// another header with the same key. -pub fn prepend_header( - request: Request(body), - key: String, - value: String, -) -> Request(body) { - let headers = [#(string.lowercase(key), value), ..request.headers] - Request(..request, headers: headers) -} - -// TODO: record update syntax, which can't be done currently as body type changes -/// Set the body of the request, overwriting any existing body. -/// -pub fn set_body(req: Request(old_body), body: new_body) -> Request(new_body) { - let Request( - method: method, - headers: headers, - scheme: scheme, - host: host, - port: port, - path: path, - query: query, - .., - ) = req - Request( - method: method, - headers: headers, - body: body, - scheme: scheme, - host: host, - port: port, - path: path, - query: query, - ) -} - -/// Update the body of a request using a given function. -/// -pub fn map( - request: Request(old_body), - transform: fn(old_body) -> new_body, -) -> Request(new_body) { - request.body - |> transform - |> set_body(request, _) -} - -/// Return the non-empty segments of a request path. -/// -/// # Examples -/// -/// ```gleam -/// > new() -/// > |> set_path("/one/two/three") -/// > |> path_segments -/// ["one", "two", "three"] -/// ``` -/// -pub fn path_segments(request: Request(body)) -> List(String) { - request.path - |> uri.path_segments -} - -/// Decode the query of a request. -pub fn get_query(request: Request(body)) -> Result(List(#(String, String)), Nil) { - case request.query { - option.Some(query_string) -> uri.parse_query(query_string) - option.None -> Ok([]) - } -} - -// TODO: escape -/// Set the query of the request. -/// -pub fn set_query( - req: Request(body), - query: List(#(String, String)), -) -> Request(body) { - let pair = fn(t: #(String, String)) { - string_builder.from_strings([t.0, "=", t.1]) - } - let query = - query - |> list.map(pair) - |> list.intersperse(string_builder.from_string("&")) - |> string_builder.concat - |> string_builder.to_string - |> option.Some - Request(..req, query: query) -} - -/// Set the method of the request. -/// -pub fn set_method(req: Request(body), method: Method) -> Request(body) { - Request(..req, method: method) -} - -/// A request with commonly used default values. This request can be used as -/// an initial value and then update to create the desired request. -/// -pub fn new() -> Request(String) { - Request( - method: Get, - headers: [], - body: "", - scheme: http.Https, - host: "localhost", - port: option.None, - path: "", - query: option.None, - ) -} - -/// Construct a request from a URL string -/// -pub fn to(url: String) -> Result(Request(String), Nil) { - url - |> uri.parse - |> result.then(from_uri) -} - -/// Set the scheme (protocol) of the request. -/// -pub fn set_scheme(req: Request(body), scheme: Scheme) -> Request(body) { - Request(..req, scheme: scheme) -} - -/// Set the method of the request. -/// -pub fn set_host(req: Request(body), host: String) -> Request(body) { - Request(..req, host: host) -} - -/// Set the port of the request. -/// -pub fn set_port(req: Request(body), port: Int) -> Request(body) { - Request(..req, port: option.Some(port)) -} - -/// Set the path of the request. -/// -pub fn set_path(req: Request(body), path: String) -> Request(body) { - Request(..req, path: path) -} - -/// Send a cookie with a request -/// -/// Multiple cookies are added to the same cookie header. -pub fn set_cookie(req: Request(body), name: String, value: String) { - let new_cookie_string = string.join([name, value], "=") - - let #(cookies_string, headers) = case list.key_pop(req.headers, "cookie") { - Ok(#(cookies_string, headers)) -> { - let cookies_string = - string.join([cookies_string, new_cookie_string], "; ") - #(cookies_string, headers) - } - Error(Nil) -> #(new_cookie_string, req.headers) - } - - Request(..req, headers: [#("cookie", cookies_string), ..headers]) -} - -/// Fetch the cookies sent in a request. -/// -/// Note badly formed cookie pairs will be ignored. -/// RFC6265 specifies that invalid cookie names/attributes should be ignored. -pub fn get_cookies(req) -> List(#(String, String)) { - let Request(headers: headers, ..) = req - - headers - |> list.filter_map(fn(header) { - let #(name, value) = header - case name { - "cookie" -> Ok(cookie.parse(value)) - _ -> Error(Nil) - } - }) - |> list.flatten() -} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam deleted file mode 100644 index 87f9140..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam/http/response.gleam +++ /dev/null @@ -1,141 +0,0 @@ -import gleam/result -import gleam/http.{type Header} -import gleam/http/cookie -import gleam/list -import gleam/string -import gleam/option - -// TODO: document -pub type Response(body) { - Response(status: Int, headers: List(Header), body: body) -} - -/// Update the body of a response using a given result returning function. -/// -/// If the given function returns an `Ok` value the body is set, if it returns -/// an `Error` value then the error is returned. -/// -pub fn try_map( - response: Response(old_body), - transform: fn(old_body) -> Result(new_body, error), -) -> Result(Response(new_body), error) { - use body <- result.then(transform(response.body)) - Ok(set_body(response, body)) -} - -/// Construct an empty Response. -/// -/// The body type of the returned response is `String` and could be set with a -/// call to `set_body`. -/// -pub fn new(status: Int) -> Response(String) { - Response(status: status, headers: [], body: "") -} - -/// Get the value for a given header. -/// -/// If the response does not have that header then `Error(Nil)` is returned. -/// -pub fn get_header(response: Response(body), key: String) -> Result(String, Nil) { - list.key_find(response.headers, string.lowercase(key)) -} - -/// Set the header with the given value under the given header key. -/// -/// If the response already has that key, it is replaced. -pub fn set_header( - response: Response(body), - key: String, - value: String, -) -> Response(body) { - let headers = list.key_set(response.headers, string.lowercase(key), value) - Response(..response, headers: headers) -} - -/// Prepend the header with the given value under the given header key. -/// -/// Similar to `set_header` except if the header already exists it prepends -/// another header with the same key. -pub fn prepend_header( - response: Response(body), - key: String, - value: String, -) -> Response(body) { - let headers = [#(string.lowercase(key), value), ..response.headers] - Response(..response, headers: headers) -} - -/// Set the body of the response, overwriting any existing body. -/// -pub fn set_body( - response: Response(old_body), - body: new_body, -) -> Response(new_body) { - let Response(status: status, headers: headers, ..) = response - Response(status: status, headers: headers, body: body) -} - -/// Update the body of a response using a given function. -/// -pub fn map( - response: Response(old_body), - transform: fn(old_body) -> new_body, -) -> Response(new_body) { - response.body - |> transform - |> set_body(response, _) -} - -/// Create a response that redirects to the given uri. -/// -pub fn redirect(uri: String) -> Response(String) { - Response( - status: 303, - headers: [#("location", uri)], - body: string.append("You are being redirected to ", uri), - ) -} - -/// Fetch the cookies sent in a response. -/// -/// Badly formed cookies will be discarded. -/// -pub fn get_cookies(resp) -> List(#(String, String)) { - let Response(headers: headers, ..) = resp - headers - |> list.filter_map(fn(header) { - let #(name, value) = header - case name { - "set-cookie" -> Ok(cookie.parse(value)) - _ -> Error(Nil) - } - }) - |> list.flatten() -} - -/// Set a cookie value for a client -/// -pub fn set_cookie( - response: Response(t), - name: String, - value: String, - attributes: cookie.Attributes, -) -> Response(t) { - prepend_header( - response, - "set-cookie", - cookie.set_header(name, value, attributes), - ) -} - -/// Expire a cookie value for a client -/// -/// Note: The attributes value should be the same as when the response cookie was set. -pub fn expire_cookie( - response: Response(t), - name: String, - attributes: cookie.Attributes, -) -> Response(t) { - let attrs = cookie.Attributes(..attributes, max_age: option.Some(0)) - set_cookie(response, name, "", attrs) -} diff --git a/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam b/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam deleted file mode 100644 index 3dfac87..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam/http/service.gleam +++ /dev/null @@ -1,82 +0,0 @@ -import gleam/http.{Delete, Patch, Post, Put} -import gleam/http/request.{type Request} -import gleam/http/response.{type Response} -import gleam/list -import gleam/result - -// TODO: document -pub type Service(in, out) = - fn(Request(in)) -> Response(out) - -pub type Middleware(before_req, before_resp, after_req, after_resp) = - fn(Service(before_req, before_resp)) -> Service(after_req, after_resp) - -/// A middleware that transform the response body returned by the service using -/// a given function. -/// -pub fn map_response_body( - service: Service(req, a), - with mapper: fn(a) -> b, -) -> Service(req, b) { - fn(req) { - req - |> service - |> response.map(mapper) - } -} - -/// A middleware that prepends a header to the request. -/// -pub fn prepend_response_header( - service: Service(req, resp), - key: String, - value: String, -) -> Service(req, resp) { - fn(req) { - req - |> service - |> response.prepend_header(key, value) - } -} - -fn ensure_post(req: Request(a)) { - case req.method { - Post -> Ok(req) - _ -> Error(Nil) - } -} - -fn get_override_method(request: Request(t)) -> Result(http.Method, Nil) { - use query_params <- result.then(request.get_query(request)) - use method <- result.then(list.key_find(query_params, "_method")) - use method <- result.then(http.parse_method(method)) - case method { - Put | Patch | Delete -> Ok(method) - _ -> Error(Nil) - } -} - -/// A middleware that overrides an incoming POST request with a method given in -/// the request's `_method` query paramerter. This is useful as web browsers -/// typically only support GET and POST requests, but our application may -/// expect other HTTP methods that are more semantically correct. -/// -/// The methods PUT, PATCH, and DELETE are accepted for overriding, all others -/// are ignored. -/// -/// The `_method` query paramerter can be specified in a HTML form like so: -/// -///
-/// -///
-/// -pub fn method_override(service: Service(req, resp)) -> Service(req, resp) { - fn(request) { - request - |> ensure_post - |> result.then(get_override_method) - |> result.map(request.set_method(request, _)) - |> result.unwrap(request) - |> service - } -} diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http.erl b/aoc2023/build/packages/gleam_http/src/gleam@http.erl deleted file mode 100644 index 91ee6e8..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam@http.erl +++ /dev/null @@ -1,626 +0,0 @@ --module(gleam@http). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse_method/1, method_to_string/1, scheme_to_string/1, scheme_from_string/1, parse_content_disposition/1, parse_multipart_body/2, method_from_dynamic/1, parse_multipart_headers/2]). --export_type([method/0, scheme/0, multipart_headers/0, multipart_body/0, content_disposition/0]). - --type method() :: get | - post | - head | - put | - delete | - trace | - connect | - options | - patch | - {other, binary()}. - --type scheme() :: http | https. - --type multipart_headers() :: {multipart_headers, - list({binary(), binary()}), - bitstring()} | - {more_required_for_headers, - fun((bitstring()) -> {ok, multipart_headers()} | {error, nil})}. - --type multipart_body() :: {multipart_body, bitstring(), boolean(), bitstring()} | - {more_required_for_body, - bitstring(), - fun((bitstring()) -> {ok, multipart_body()} | {error, nil})}. - --type content_disposition() :: {content_disposition, - binary(), - list({binary(), binary()})}. - --spec parse_method(binary()) -> {ok, method()} | {error, nil}. -parse_method(S) -> - case gleam@string:lowercase(S) of - <<"connect"/utf8>> -> - {ok, connect}; - - <<"delete"/utf8>> -> - {ok, delete}; - - <<"get"/utf8>> -> - {ok, get}; - - <<"head"/utf8>> -> - {ok, head}; - - <<"options"/utf8>> -> - {ok, options}; - - <<"patch"/utf8>> -> - {ok, patch}; - - <<"post"/utf8>> -> - {ok, post}; - - <<"put"/utf8>> -> - {ok, put}; - - <<"trace"/utf8>> -> - {ok, trace}; - - _ -> - {error, nil} - end. - --spec method_to_string(method()) -> binary(). -method_to_string(Method) -> - case Method of - connect -> - <<"connect"/utf8>>; - - delete -> - <<"delete"/utf8>>; - - get -> - <<"get"/utf8>>; - - head -> - <<"head"/utf8>>; - - options -> - <<"options"/utf8>>; - - patch -> - <<"patch"/utf8>>; - - post -> - <<"post"/utf8>>; - - put -> - <<"put"/utf8>>; - - trace -> - <<"trace"/utf8>>; - - {other, S} -> - S - end. - --spec scheme_to_string(scheme()) -> binary(). -scheme_to_string(Scheme) -> - case Scheme of - http -> - <<"http"/utf8>>; - - https -> - <<"https"/utf8>> - end. - --spec scheme_from_string(binary()) -> {ok, scheme()} | {error, nil}. -scheme_from_string(Scheme) -> - case gleam@string:lowercase(Scheme) of - <<"http"/utf8>> -> - {ok, http}; - - <<"https"/utf8>> -> - {ok, https}; - - _ -> - {error, nil} - end. - --spec skip_whitespace(bitstring()) -> bitstring(). -skip_whitespace(Data) -> - case Data of - <<32, Data@1/binary>> -> - skip_whitespace(Data@1); - - <<9, Data@1/binary>> -> - skip_whitespace(Data@1); - - _ -> - Data - end. - --spec more_please_headers( - fun((bitstring()) -> {ok, multipart_headers()} | {error, nil}), - bitstring() -) -> {ok, multipart_headers()} | {error, nil}. -more_please_headers(Continuation, Existing) -> - {ok, - {more_required_for_headers, - fun(More) -> - gleam@bool:guard( - More =:= <<>>, - {error, nil}, - fun() -> - Continuation(<>) - end - ) - end}}. - --spec parse_rfc_2045_parameter_quoted_value(binary(), binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter_quoted_value(Header, Name, Value) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {error, nil}; - - {ok, {<<"\""/utf8>>, Rest}} -> - {ok, {{Name, Value}, Rest}}; - - {ok, {<<"\\"/utf8>>, Rest@1}} -> - gleam@result:'try'( - gleam@string:pop_grapheme(Rest@1), - fun(_use0) -> - {Grapheme, Rest@2} = _use0, - parse_rfc_2045_parameter_quoted_value( - Rest@2, - Name, - <> - ) - end - ); - - {ok, {Grapheme@1, Rest@3}} -> - parse_rfc_2045_parameter_quoted_value( - Rest@3, - Name, - <> - ) - end. - --spec parse_rfc_2045_parameter_unquoted_value(binary(), binary(), binary()) -> {{binary(), - binary()}, - binary()}. -parse_rfc_2045_parameter_unquoted_value(Header, Name, Value) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {{Name, Value}, Header}; - - {ok, {<<";"/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {<<" "/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {<<"\t"/utf8>>, Rest}} -> - {{Name, Value}, Rest}; - - {ok, {Grapheme, Rest@1}} -> - parse_rfc_2045_parameter_unquoted_value( - Rest@1, - Name, - <> - ) - end. - --spec parse_rfc_2045_parameter_value(binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter_value(Header, Name) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {error, nil}; - - {ok, {<<"\""/utf8>>, Rest}} -> - parse_rfc_2045_parameter_quoted_value(Rest, Name, <<""/utf8>>); - - {ok, {Grapheme, Rest@1}} -> - {ok, - parse_rfc_2045_parameter_unquoted_value(Rest@1, Name, Grapheme)} - end. - --spec parse_rfc_2045_parameter(binary(), binary()) -> {ok, - {{binary(), binary()}, binary()}} | - {error, nil}. -parse_rfc_2045_parameter(Header, Name) -> - gleam@result:'try'( - gleam@string:pop_grapheme(Header), - fun(_use0) -> - {Grapheme, Rest} = _use0, - case Grapheme of - <<"="/utf8>> -> - parse_rfc_2045_parameter_value(Rest, Name); - - _ -> - parse_rfc_2045_parameter( - Rest, - <> - ) - end - end - ). - --spec parse_rfc_2045_parameters(binary(), list({binary(), binary()})) -> {ok, - list({binary(), binary()})} | - {error, nil}. -parse_rfc_2045_parameters(Header, Parameters) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {ok, gleam@list:reverse(Parameters)}; - - {ok, {<<";"/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {<<" "/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {<<"\t"/utf8>>, Rest}} -> - parse_rfc_2045_parameters(Rest, Parameters); - - {ok, {Grapheme, Rest@1}} -> - Acc = gleam@string:lowercase(Grapheme), - gleam@result:'try'( - parse_rfc_2045_parameter(Rest@1, Acc), - fun(_use0) -> - {Parameter, Rest@2} = _use0, - parse_rfc_2045_parameters(Rest@2, [Parameter | Parameters]) - end - ) - end. - --spec parse_content_disposition_type(binary(), binary()) -> {ok, - content_disposition()} | - {error, nil}. -parse_content_disposition_type(Header, Name) -> - case gleam@string:pop_grapheme(Header) of - {error, nil} -> - {ok, {content_disposition, Name, []}}; - - {ok, {<<" "/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {<<"\t"/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {<<";"/utf8>>, Rest}} -> - Result = parse_rfc_2045_parameters(Rest, []), - gleam@result:map( - Result, - fun(Parameters) -> {content_disposition, Name, Parameters} end - ); - - {ok, {Grapheme, Rest@1}} -> - parse_content_disposition_type( - Rest@1, - <> - ) - end. - --spec parse_content_disposition(binary()) -> {ok, content_disposition()} | - {error, nil}. -parse_content_disposition(Header) -> - parse_content_disposition_type(Header, <<""/utf8>>). - --spec more_please_body( - fun((bitstring()) -> {ok, multipart_body()} | {error, nil}), - bitstring(), - bitstring() -) -> {ok, multipart_body()} | {error, nil}. -more_please_body(Continuation, Chunk, Existing) -> - _pipe = fun(More) -> - gleam@bool:guard( - More =:= <<>>, - {error, nil}, - fun() -> Continuation(<>) end - ) - end, - _pipe@1 = {more_required_for_body, Chunk, _pipe}, - {ok, _pipe@1}. - --spec parse_body_loop(bitstring(), bitstring(), bitstring()) -> {ok, - multipart_body()} | - {error, nil}. -parse_body_loop(Data, Boundary, Body) -> - Dsize = erlang:byte_size(Data), - Bsize = erlang:byte_size(Boundary), - Required = 6 + Bsize, - case Data of - _ when Dsize < Required -> - more_please_body( - fun(_capture) -> parse_body_loop(_capture, Boundary, <<>>) end, - Body, - Data - ); - - <<13, 10, Data@1/binary>> -> - Desired = <<45, 45, Boundary/bitstring>>, - Size = erlang:byte_size(Desired), - Dsize@1 = erlang:byte_size(Data@1), - Prefix = gleam_stdlib:bit_array_slice(Data@1, 0, Size), - Rest = gleam_stdlib:bit_array_slice(Data@1, Size, Dsize@1 - Size), - case {Prefix =:= {ok, Desired}, Rest} of - {true, {ok, <<13, 10, _/binary>>}} -> - {ok, {multipart_body, Body, false, Data@1}}; - - {true, {ok, <<45, 45, Data@2/binary>>}} -> - {ok, {multipart_body, Body, true, Data@2}}; - - {false, _} -> - parse_body_loop( - Data@1, - Boundary, - <> - ); - - {_, _} -> - {error, nil} - end; - - <> -> - parse_body_loop(Data@3, Boundary, <>) - end. - --spec parse_body_with_bit_array(bitstring(), bitstring()) -> {ok, - multipart_body()} | - {error, nil}. -parse_body_with_bit_array(Data, Boundary) -> - Bsize = erlang:byte_size(Boundary), - Prefix = gleam_stdlib:bit_array_slice(Data, 0, 2 + Bsize), - case Prefix =:= {ok, <<45, 45, Boundary/bitstring>>} of - true -> - {ok, {multipart_body, <<>>, false, Data}}; - - false -> - parse_body_loop(Data, Boundary, <<>>) - end. - --spec parse_multipart_body(bitstring(), binary()) -> {ok, multipart_body()} | - {error, nil}. -parse_multipart_body(Data, Boundary) -> - _pipe = Boundary, - _pipe@1 = gleam_stdlib:identity(_pipe), - parse_body_with_bit_array(Data, _pipe@1). - --spec method_from_dynamic(gleam@dynamic:dynamic_()) -> {ok, method()} | - {error, list(gleam@dynamic:decode_error())}. -method_from_dynamic(Value) -> - case gleam_http_native:decode_method(Value) of - {ok, Method} -> - {ok, Method}; - - {error, _} -> - {error, - [{decode_error, - <<"HTTP method"/utf8>>, - gleam@dynamic:classify(Value), - []}]} - end. - --spec parse_header_value( - bitstring(), - list({binary(), binary()}), - bitstring(), - bitstring() -) -> {ok, multipart_headers()} | {error, nil}. -parse_header_value(Data, Headers, Name, Value) -> - Size = erlang:byte_size(Data), - case Data of - _ when Size < 4 -> - _pipe@2 = fun(Data@1) -> _pipe = Data@1, - _pipe@1 = skip_whitespace(_pipe), - parse_header_value(_pipe@1, Headers, Name, Value) end, - more_please_headers(_pipe@2, Data); - - <<13, 10, 13, 10, Data@2/binary>> -> - gleam@result:'try'( - gleam@bit_array:to_string(Name), - fun(Name@1) -> - gleam@result:map( - gleam@bit_array:to_string(Value), - fun(Value@1) -> - Headers@1 = gleam@list:reverse( - [{gleam@string:lowercase(Name@1), Value@1} | - Headers] - ), - {multipart_headers, Headers@1, Data@2} - end - ) - end - ); - - <<13, 10, 32, Data@3/binary>> -> - parse_header_value(Data@3, Headers, Name, Value); - - <<13, 10, 9, Data@3/binary>> -> - parse_header_value(Data@3, Headers, Name, Value); - - <<13, 10, Data@4/binary>> -> - gleam@result:'try'( - gleam@bit_array:to_string(Name), - fun(Name@2) -> - gleam@result:'try'( - gleam@bit_array:to_string(Value), - fun(Value@2) -> - Headers@2 = [{gleam@string:lowercase(Name@2), - Value@2} | - Headers], - parse_header_name(Data@4, Headers@2, <<>>) - end - ) - end - ); - - <> -> - Value@3 = <>, - parse_header_value(Rest, Headers, Name, Value@3); - - _ -> - {error, nil} - end. - --spec parse_header_name(bitstring(), list({binary(), binary()}), bitstring()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_header_name(Data, Headers, Name) -> - case skip_whitespace(Data) of - <<58, Data@1/binary>> -> - _pipe = Data@1, - _pipe@1 = skip_whitespace(_pipe), - parse_header_value(_pipe@1, Headers, Name, <<>>); - - <> -> - parse_header_name(Data@2, Headers, <>); - - <<>> -> - more_please_headers( - fun(_capture) -> parse_header_name(_capture, Headers, Name) end, - Data - ) - end. - --spec do_parse_headers(bitstring()) -> {ok, multipart_headers()} | {error, nil}. -do_parse_headers(Data) -> - case Data of - <<13, 10, 13, 10, Data@1/binary>> -> - {ok, {multipart_headers, [], Data@1}}; - - <<13, 10, Data@2/binary>> -> - parse_header_name(Data@2, [], <<>>); - - <<13>> -> - more_please_headers(fun do_parse_headers/1, Data); - - <<>> -> - more_please_headers(fun do_parse_headers/1, Data); - - _ -> - {error, nil} - end. - --spec parse_headers_after_prelude(bitstring(), bitstring()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_headers_after_prelude(Data, Boundary) -> - Dsize = erlang:byte_size(Data), - Bsize = erlang:byte_size(Boundary), - Required_size = Bsize + 4, - gleam@bool:guard( - Dsize < Required_size, - more_please_headers( - fun(_capture) -> parse_headers_after_prelude(_capture, Boundary) end, - Data - ), - fun() -> - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data, 0, Required_size - 2), - fun(Prefix) -> - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data, 2 + Bsize, 2), - fun(Second) -> - Desired = <<45, 45, Boundary/bitstring>>, - gleam@bool:guard( - Prefix /= Desired, - {error, nil}, - fun() -> case Second =:= <<45, 45>> of - true -> - Rest_size = Dsize - Required_size, - gleam@result:map( - gleam_stdlib:bit_array_slice( - Data, - Required_size, - Rest_size - ), - fun(Data@1) -> - {multipart_headers, - [], - Data@1} - end - ); - - false -> - Start = Required_size - 2, - Rest_size@1 = (Dsize - Required_size) - + 2, - gleam@result:'try'( - gleam_stdlib:bit_array_slice( - Data, - Start, - Rest_size@1 - ), - fun(Data@2) -> - do_parse_headers(Data@2) - end - ) - end end - ) - end - ) - end - ) - end - ). - --spec skip_preamble(bitstring(), bitstring()) -> {ok, multipart_headers()} | - {error, nil}. -skip_preamble(Data, Boundary) -> - Data_size = erlang:byte_size(Data), - Boundary_size = erlang:byte_size(Boundary), - Required = Boundary_size + 4, - case Data of - _ when Data_size < Required -> - more_please_headers( - fun(_capture) -> skip_preamble(_capture, Boundary) end, - Data - ); - - <<13, 10, 45, 45, Data@1/binary>> -> - case gleam_stdlib:bit_array_slice(Data@1, 0, Boundary_size) of - {ok, Prefix} when Prefix =:= Boundary -> - Start = Boundary_size, - Length = erlang:byte_size(Data@1) - Boundary_size, - gleam@result:'try'( - gleam_stdlib:bit_array_slice(Data@1, Start, Length), - fun(Rest) -> do_parse_headers(Rest) end - ); - - {ok, _} -> - skip_preamble(Data@1, Boundary); - - {error, _} -> - {error, nil} - end; - - <<_, Data@2/binary>> -> - skip_preamble(Data@2, Boundary) - end. - --spec parse_multipart_headers(bitstring(), binary()) -> {ok, - multipart_headers()} | - {error, nil}. -parse_multipart_headers(Data, Boundary) -> - Boundary@1 = gleam_stdlib:identity(Boundary), - Prefix = <<45, 45, Boundary@1/bitstring>>, - case gleam_stdlib:bit_array_slice(Data, 0, erlang:byte_size(Prefix)) =:= {ok, - Prefix} of - true -> - parse_headers_after_prelude(Data, Boundary@1); - - false -> - skip_preamble(Data, Boundary@1) - end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl deleted file mode 100644 index 9d6d13e..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam@http@cookie.erl +++ /dev/null @@ -1,153 +0,0 @@ --module(gleam@http@cookie). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([defaults/1, set_header/3, parse/1]). --export_type([same_site_policy/0, attributes/0]). - --type same_site_policy() :: lax | strict | none. - --type attributes() :: {attributes, - gleam@option:option(integer()), - gleam@option:option(binary()), - gleam@option:option(binary()), - boolean(), - boolean(), - gleam@option:option(same_site_policy())}. - --spec same_site_to_string(same_site_policy()) -> binary(). -same_site_to_string(Policy) -> - case Policy of - lax -> - <<"Lax"/utf8>>; - - strict -> - <<"Strict"/utf8>>; - - none -> - <<"None"/utf8>> - end. - --spec defaults(gleam@http:scheme()) -> attributes(). -defaults(Scheme) -> - {attributes, - none, - none, - {some, <<"/"/utf8>>}, - Scheme =:= https, - true, - {some, lax}}. - --spec cookie_attributes_to_list(attributes()) -> list(list(binary())). -cookie_attributes_to_list(Attributes) -> - {attributes, Max_age, Domain, Path, Secure, Http_only, Same_site} = Attributes, - _pipe = [case Max_age of - {some, 0} -> - {some, [<<"Expires=Thu, 01 Jan 1970 00:00:00 GMT"/utf8>>]}; - - _ -> - none - end, gleam@option:map( - Max_age, - fun(Max_age@1) -> - [<<"Max-Age="/utf8>>, gleam@int:to_string(Max_age@1)] - end - ), gleam@option:map( - Domain, - fun(Domain@1) -> [<<"Domain="/utf8>>, Domain@1] end - ), gleam@option:map(Path, fun(Path@1) -> [<<"Path="/utf8>>, Path@1] end), case Secure of - true -> - {some, [<<"Secure"/utf8>>]}; - - false -> - none - end, case Http_only of - true -> - {some, [<<"HttpOnly"/utf8>>]}; - - false -> - none - end, gleam@option:map( - Same_site, - fun(Same_site@1) -> - [<<"SameSite="/utf8>>, same_site_to_string(Same_site@1)] - end - )], - gleam@list:filter_map( - _pipe, - fun(_capture) -> gleam@option:to_result(_capture, nil) end - ). - --spec set_header(binary(), binary(), attributes()) -> binary(). -set_header(Name, Value, Attributes) -> - _pipe = [[Name, <<"="/utf8>>, Value] | - cookie_attributes_to_list(Attributes)], - _pipe@1 = gleam@list:map( - _pipe, - fun(_capture) -> gleam@string:join(_capture, <<""/utf8>>) end - ), - gleam@string:join(_pipe@1, <<"; "/utf8>>). - --spec check_token(binary()) -> {ok, nil} | {error, nil}. -check_token(Token) -> - case gleam@string:pop_grapheme(Token) of - {error, nil} -> - {ok, nil}; - - {ok, {<<" "/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\t"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\r"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\n"/utf8>>, _}} -> - {error, nil}; - - {ok, {<<"\f"/utf8>>, _}} -> - {error, nil}; - - {ok, {_, Rest}} -> - check_token(Rest) - end. - --spec parse(binary()) -> list({binary(), binary()}). -parse(Cookie_string) -> - _assert_subject = gleam@regex:from_string(<<"[,;]"/utf8>>), - {ok, Re} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/http/cookie"/utf8>>, - function => <<"parse"/utf8>>, - line => 101}) - end, - _pipe = gleam@regex:split(Re, Cookie_string), - gleam@list:filter_map( - _pipe, - fun(Pair) -> - case gleam@string:split_once(gleam@string:trim(Pair), <<"="/utf8>>) of - {ok, {<<""/utf8>>, _}} -> - {error, nil}; - - {ok, {Key, Value}} -> - Key@1 = gleam@string:trim(Key), - Value@1 = gleam@string:trim(Value), - gleam@result:then( - check_token(Key@1), - fun(_) -> - gleam@result:then( - check_token(Value@1), - fun(_) -> {ok, {Key@1, Value@1}} end - ) - end - ); - - {error, nil} -> - {error, nil} - end - end - ). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl deleted file mode 100644 index 630788d..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam@http@request.erl +++ /dev/null @@ -1,202 +0,0 @@ --module(gleam@http@request). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([to_uri/1, from_uri/1, get_header/2, set_header/3, prepend_header/3, set_body/2, map/2, path_segments/1, get_query/1, set_query/2, set_method/2, new/0, to/1, set_scheme/2, set_host/2, set_port/2, set_path/2, set_cookie/3, get_cookies/1]). --export_type([request/1]). - --type request(FYJ) :: {request, - gleam@http:method(), - list({binary(), binary()}), - FYJ, - gleam@http:scheme(), - binary(), - gleam@option:option(integer()), - binary(), - gleam@option:option(binary())}. - --spec to_uri(request(any())) -> gleam@uri:uri(). -to_uri(Request) -> - {uri, - {some, gleam@http:scheme_to_string(erlang:element(5, Request))}, - none, - {some, erlang:element(6, Request)}, - erlang:element(7, Request), - erlang:element(8, Request), - erlang:element(9, Request), - none}. - --spec from_uri(gleam@uri:uri()) -> {ok, request(binary())} | {error, nil}. -from_uri(Uri) -> - gleam@result:then( - begin - _pipe = erlang:element(2, Uri), - _pipe@1 = gleam@option:unwrap(_pipe, <<""/utf8>>), - gleam@http:scheme_from_string(_pipe@1) - end, - fun(Scheme) -> - gleam@result:then( - begin - _pipe@2 = erlang:element(4, Uri), - gleam@option:to_result(_pipe@2, nil) - end, - fun(Host) -> - Req = {request, - get, - [], - <<""/utf8>>, - Scheme, - Host, - erlang:element(5, Uri), - erlang:element(6, Uri), - erlang:element(7, Uri)}, - {ok, Req} - end - ) - end - ). - --spec get_header(request(any()), binary()) -> {ok, binary()} | {error, nil}. -get_header(Request, Key) -> - gleam@list:key_find(erlang:element(3, Request), gleam@string:lowercase(Key)). - --spec set_header(request(FYT), binary(), binary()) -> request(FYT). -set_header(Request, Key, Value) -> - Headers = gleam@list:key_set( - erlang:element(3, Request), - gleam@string:lowercase(Key), - Value - ), - erlang:setelement(3, Request, Headers). - --spec prepend_header(request(FYW), binary(), binary()) -> request(FYW). -prepend_header(Request, Key, Value) -> - Headers = [{gleam@string:lowercase(Key), Value} | - erlang:element(3, Request)], - erlang:setelement(3, Request, Headers). - --spec set_body(request(any()), FZB) -> request(FZB). -set_body(Req, Body) -> - {request, Method, Headers, _, Scheme, Host, Port, Path, Query} = Req, - {request, Method, Headers, Body, Scheme, Host, Port, Path, Query}. - --spec map(request(FZD), fun((FZD) -> FZF)) -> request(FZF). -map(Request, Transform) -> - _pipe = erlang:element(4, Request), - _pipe@1 = Transform(_pipe), - set_body(Request, _pipe@1). - --spec path_segments(request(any())) -> list(binary()). -path_segments(Request) -> - _pipe = erlang:element(8, Request), - gleam@uri:path_segments(_pipe). - --spec get_query(request(any())) -> {ok, list({binary(), binary()})} | - {error, nil}. -get_query(Request) -> - case erlang:element(9, Request) of - {some, Query_string} -> - gleam@uri:parse_query(Query_string); - - none -> - {ok, []} - end. - --spec set_query(request(FZP), list({binary(), binary()})) -> request(FZP). -set_query(Req, Query) -> - Pair = fun(T) -> - gleam@string_builder:from_strings( - [erlang:element(1, T), <<"="/utf8>>, erlang:element(2, T)] - ) - end, - Query@1 = begin - _pipe = Query, - _pipe@1 = gleam@list:map(_pipe, Pair), - _pipe@2 = gleam@list:intersperse( - _pipe@1, - gleam@string_builder:from_string(<<"&"/utf8>>) - ), - _pipe@3 = gleam@string_builder:concat(_pipe@2), - _pipe@4 = gleam@string_builder:to_string(_pipe@3), - {some, _pipe@4} - end, - erlang:setelement(9, Req, Query@1). - --spec set_method(request(FZT), gleam@http:method()) -> request(FZT). -set_method(Req, Method) -> - erlang:setelement(2, Req, Method). - --spec new() -> request(binary()). -new() -> - {request, - get, - [], - <<""/utf8>>, - https, - <<"localhost"/utf8>>, - none, - <<""/utf8>>, - none}. - --spec to(binary()) -> {ok, request(binary())} | {error, nil}. -to(Url) -> - _pipe = Url, - _pipe@1 = gleam@uri:parse(_pipe), - gleam@result:then(_pipe@1, fun from_uri/1). - --spec set_scheme(request(GAA), gleam@http:scheme()) -> request(GAA). -set_scheme(Req, Scheme) -> - erlang:setelement(5, Req, Scheme). - --spec set_host(request(GAD), binary()) -> request(GAD). -set_host(Req, Host) -> - erlang:setelement(6, Req, Host). - --spec set_port(request(GAG), integer()) -> request(GAG). -set_port(Req, Port) -> - erlang:setelement(7, Req, {some, Port}). - --spec set_path(request(GAJ), binary()) -> request(GAJ). -set_path(Req, Path) -> - erlang:setelement(8, Req, Path). - --spec set_cookie(request(GAM), binary(), binary()) -> request(GAM). -set_cookie(Req, Name, Value) -> - New_cookie_string = gleam@string:join([Name, Value], <<"="/utf8>>), - {Cookies_string@2, Headers@1} = case gleam@list:key_pop( - erlang:element(3, Req), - <<"cookie"/utf8>> - ) of - {ok, {Cookies_string, Headers}} -> - Cookies_string@1 = gleam@string:join( - [Cookies_string, New_cookie_string], - <<"; "/utf8>> - ), - {Cookies_string@1, Headers}; - - {error, nil} -> - {New_cookie_string, erlang:element(3, Req)} - end, - erlang:setelement( - 3, - Req, - [{<<"cookie"/utf8>>, Cookies_string@2} | Headers@1] - ). - --spec get_cookies(request(any())) -> list({binary(), binary()}). -get_cookies(Req) -> - {request, _, Headers, _, _, _, _, _, _} = Req, - _pipe = Headers, - _pipe@1 = gleam@list:filter_map( - _pipe, - fun(Header) -> - {Name, Value} = Header, - case Name of - <<"cookie"/utf8>> -> - {ok, gleam@http@cookie:parse(Value)}; - - _ -> - {error, nil} - end - end - ), - gleam@list:flatten(_pipe@1). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl deleted file mode 100644 index b073c1d..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam@http@response.erl +++ /dev/null @@ -1,97 +0,0 @@ --module(gleam@http@response). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/1, get_header/2, set_header/3, prepend_header/3, set_body/2, try_map/2, map/2, redirect/1, get_cookies/1, set_cookie/4, expire_cookie/3]). --export_type([response/1]). - --type response(GFN) :: {response, integer(), list({binary(), binary()}), GFN}. - --spec new(integer()) -> response(binary()). -new(Status) -> - {response, Status, [], <<""/utf8>>}. - --spec get_header(response(any()), binary()) -> {ok, binary()} | {error, nil}. -get_header(Response, Key) -> - gleam@list:key_find( - erlang:element(3, Response), - gleam@string:lowercase(Key) - ). - --spec set_header(response(GGC), binary(), binary()) -> response(GGC). -set_header(Response, Key, Value) -> - Headers = gleam@list:key_set( - erlang:element(3, Response), - gleam@string:lowercase(Key), - Value - ), - erlang:setelement(3, Response, Headers). - --spec prepend_header(response(GGF), binary(), binary()) -> response(GGF). -prepend_header(Response, Key, Value) -> - Headers = [{gleam@string:lowercase(Key), Value} | - erlang:element(3, Response)], - erlang:setelement(3, Response, Headers). - --spec set_body(response(any()), GGK) -> response(GGK). -set_body(Response, Body) -> - {response, Status, Headers, _} = Response, - {response, Status, Headers, Body}. - --spec try_map(response(GFO), fun((GFO) -> {ok, GFQ} | {error, GFR})) -> {ok, - response(GFQ)} | - {error, GFR}. -try_map(Response, Transform) -> - gleam@result:then( - Transform(erlang:element(4, Response)), - fun(Body) -> {ok, set_body(Response, Body)} end - ). - --spec map(response(GGM), fun((GGM) -> GGO)) -> response(GGO). -map(Response, Transform) -> - _pipe = erlang:element(4, Response), - _pipe@1 = Transform(_pipe), - set_body(Response, _pipe@1). - --spec redirect(binary()) -> response(binary()). -redirect(Uri) -> - {response, - 303, - [{<<"location"/utf8>>, Uri}], - gleam@string:append(<<"You are being redirected to "/utf8>>, Uri)}. - --spec get_cookies(response(any())) -> list({binary(), binary()}). -get_cookies(Resp) -> - {response, _, Headers, _} = Resp, - _pipe = Headers, - _pipe@1 = gleam@list:filter_map( - _pipe, - fun(Header) -> - {Name, Value} = Header, - case Name of - <<"set-cookie"/utf8>> -> - {ok, gleam@http@cookie:parse(Value)}; - - _ -> - {error, nil} - end - end - ), - gleam@list:flatten(_pipe@1). - --spec set_cookie( - response(GGT), - binary(), - binary(), - gleam@http@cookie:attributes() -) -> response(GGT). -set_cookie(Response, Name, Value, Attributes) -> - prepend_header( - Response, - <<"set-cookie"/utf8>>, - gleam@http@cookie:set_header(Name, Value, Attributes) - ). - --spec expire_cookie(response(GGW), binary(), gleam@http@cookie:attributes()) -> response(GGW). -expire_cookie(Response, Name, Attributes) -> - Attrs = erlang:setelement(2, Attributes, {some, 0}), - set_cookie(Response, Name, <<""/utf8>>, Attrs). diff --git a/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl b/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl deleted file mode 100644 index d07b31f..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam@http@service.erl +++ /dev/null @@ -1,82 +0,0 @@ --module(gleam@http@service). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([map_response_body/2, prepend_response_header/3, method_override/1]). - --spec map_response_body( - fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJM)), - fun((GJM) -> GJP) -) -> fun((gleam@http@request:request(GJL)) -> gleam@http@response:response(GJP)). -map_response_body(Service, Mapper) -> - fun(Req) -> _pipe = Req, - _pipe@1 = Service(_pipe), - gleam@http@response:map(_pipe@1, Mapper) end. - --spec prepend_response_header( - fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)), - binary(), - binary() -) -> fun((gleam@http@request:request(GJS)) -> gleam@http@response:response(GJT)). -prepend_response_header(Service, Key, Value) -> - fun(Req) -> _pipe = Req, - _pipe@1 = Service(_pipe), - gleam@http@response:prepend_header(_pipe@1, Key, Value) end. - --spec ensure_post(gleam@http@request:request(GJY)) -> {ok, - gleam@http@request:request(GJY)} | - {error, nil}. -ensure_post(Req) -> - case erlang:element(2, Req) of - post -> - {ok, Req}; - - _ -> - {error, nil} - end. - --spec get_override_method(gleam@http@request:request(any())) -> {ok, - gleam@http:method()} | - {error, nil}. -get_override_method(Request) -> - gleam@result:then( - gleam@http@request:get_query(Request), - fun(Query_params) -> - gleam@result:then( - gleam@list:key_find(Query_params, <<"_method"/utf8>>), - fun(Method) -> - gleam@result:then( - gleam@http:parse_method(Method), - fun(Method@1) -> case Method@1 of - put -> - {ok, Method@1}; - - patch -> - {ok, Method@1}; - - delete -> - {ok, Method@1}; - - _ -> - {error, nil} - end end - ) - end - ) - end - ). - --spec method_override( - fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG)) -) -> fun((gleam@http@request:request(GKF)) -> gleam@http@response:response(GKG)). -method_override(Service) -> - fun(Request) -> _pipe = Request, - _pipe@1 = ensure_post(_pipe), - _pipe@2 = gleam@result:then(_pipe@1, fun get_override_method/1), - _pipe@3 = gleam@result:map( - _pipe@2, - fun(_capture) -> - gleam@http@request:set_method(Request, _capture) - end - ), - _pipe@4 = gleam@result:unwrap(_pipe@3, Request), - Service(_pipe@4) end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http.app.src b/aoc2023/build/packages/gleam_http/src/gleam_http.app.src deleted file mode 100644 index c37ad54..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam_http.app.src +++ /dev/null @@ -1,12 +0,0 @@ -{application, gleam_http, [ - {vsn, "3.5.2"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "Types and functions for Gleam HTTP clients and servers"}, - {modules, [gleam@http, - gleam@http@cookie, - gleam@http@request, - gleam@http@response, - gleam@http@service]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl b/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl deleted file mode 100644 index bb499bb..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam_http_native.erl +++ /dev/null @@ -1,88 +0,0 @@ --module(gleam_http_native). --export([decode_method/1]). - -decode_method(Term) -> - case Term of - "connect" -> {ok, connect}; - "delete" -> {ok, delete}; - "get" -> {ok, get}; - "head" -> {ok, head}; - "options" -> {ok, options}; - "patch" -> {ok, patch}; - "post" -> {ok, post}; - "put" -> {ok, put}; - "trace" -> {ok, trace}; - "CONNECT" -> {ok, connect}; - "DELETE" -> {ok, delete}; - "GET" -> {ok, get}; - "HEAD" -> {ok, head}; - "OPTIONS" -> {ok, options}; - "PATCH" -> {ok, patch}; - "POST" -> {ok, post}; - "PUT" -> {ok, put}; - "TRACE" -> {ok, trace}; - "Connect" -> {ok, connect}; - "Delete" -> {ok, delete}; - "Get" -> {ok, get}; - "Head" -> {ok, head}; - "Options" -> {ok, options}; - "Patch" -> {ok, patch}; - "Post" -> {ok, post}; - "Put" -> {ok, put}; - "Trace" -> {ok, trace}; - 'connect' -> {ok, connect}; - 'delete' -> {ok, delete}; - 'get' -> {ok, get}; - 'head' -> {ok, head}; - 'options' -> {ok, options}; - 'patch' -> {ok, patch}; - 'post' -> {ok, post}; - 'put' -> {ok, put}; - 'trace' -> {ok, trace}; - 'CONNECT' -> {ok, connect}; - 'DELETE' -> {ok, delete}; - 'GET' -> {ok, get}; - 'HEAD' -> {ok, head}; - 'OPTIONS' -> {ok, options}; - 'PATCH' -> {ok, patch}; - 'POST' -> {ok, post}; - 'PUT' -> {ok, put}; - 'TRACE' -> {ok, trace}; - 'Connect' -> {ok, connect}; - 'Delete' -> {ok, delete}; - 'Get' -> {ok, get}; - 'Head' -> {ok, head}; - 'Options' -> {ok, options}; - 'Patch' -> {ok, patch}; - 'Post' -> {ok, post}; - 'Put' -> {ok, put}; - 'Trace' -> {ok, trace}; - <<"connect">> -> {ok, connect}; - <<"delete">> -> {ok, delete}; - <<"get">> -> {ok, get}; - <<"head">> -> {ok, head}; - <<"options">> -> {ok, options}; - <<"patch">> -> {ok, patch}; - <<"post">> -> {ok, post}; - <<"put">> -> {ok, put}; - <<"trace">> -> {ok, trace}; - <<"CONNECT">> -> {ok, connect}; - <<"DELETE">> -> {ok, delete}; - <<"GET">> -> {ok, get}; - <<"HEAD">> -> {ok, head}; - <<"OPTIONS">> -> {ok, options}; - <<"PATCH">> -> {ok, patch}; - <<"POST">> -> {ok, post}; - <<"PUT">> -> {ok, put}; - <<"TRACE">> -> {ok, trace}; - <<"Connect">> -> {ok, connect}; - <<"Delete">> -> {ok, delete}; - <<"Get">> -> {ok, get}; - <<"Head">> -> {ok, head}; - <<"Options">> -> {ok, options}; - <<"Patch">> -> {ok, patch}; - <<"Post">> -> {ok, post}; - <<"Put">> -> {ok, put}; - <<"Trace">> -> {ok, trace}; - _ -> {error, nil} - end. diff --git a/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs b/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs deleted file mode 100644 index c871a8b..0000000 --- a/aoc2023/build/packages/gleam_http/src/gleam_http_native.mjs +++ /dev/null @@ -1,38 +0,0 @@ -import { Ok, Error } from "./gleam.mjs"; -import { - Get, - Post, - Head, - Put, - Delete, - Trace, - Connect, - Options, - Patch, -} from "./gleam/http.mjs"; - -export function decode_method(value) { - try { - switch (value.toLowerCase()) { - case "get": - return new Ok(new Get()); - case "post": - return new Ok(new Post()); - case "head": - return new Ok(new Head()); - case "put": - return new Ok(new Put()); - case "delete": - return new Ok(new Delete()); - case "trace": - return new Ok(new Trace()); - case "connect": - return new Ok(new Connect()); - case "options": - return new Ok(new Options()); - case "patch": - return new Ok(new Patch()); - } - } catch {} - return new Error(undefined); -} diff --git a/aoc2023/build/packages/gleam_httpc/LICENSE b/aoc2023/build/packages/gleam_httpc/LICENSE deleted file mode 100644 index 59e1345..0000000 --- a/aoc2023/build/packages/gleam_httpc/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright {{copyright_year}}, {{author_name}} <{{author_email}}>. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/aoc2023/build/packages/gleam_httpc/README.md b/aoc2023/build/packages/gleam_httpc/README.md deleted file mode 100644 index c2363c5..0000000 --- a/aoc2023/build/packages/gleam_httpc/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# httpc -GitHub release -Discord chat -![CI](https://github.com/gleam-lang/httpc/workflows/test/badge.svg?branch=main) - -Bindings to Erlang's built in HTTP client, `httpc`. - -```gleam -import gleam/httpc -import gleam/http.{Get} -import gleam/http/request -import gleam/http/response -import gleeunit/should - -pub fn main() { - // Prepare a HTTP request record - let request = request.new() - |> request.set_method(Get) - |> request.set_host("test-api.service.hmrc.gov.uk") - |> request.set_path("/hello/world") - |> request.prepend_header("accept", "application/vnd.hmrc.1.0+json") - - // Send the HTTP request to the server - try resp = httpc.send(req) - - // We get a response record back - resp.status - |> should.equal(200) - - resp - |> response.get_header("content-type") - |> should.equal(Ok("application/json")) - - resp.body - |> should.equal("{\"message\":\"Hello World\"}") - - Ok(resp) -} -``` - -## Installation - -```shell -gleam add gleam_httpc -``` - -## Use with Erlang/OTP versions older than 26.0 - -Older versions of HTTPC do not verify TLS connections by default, so with them -your connection may not be secure when using this library. Consider upgrading to -a newer version of Erlang/OTP, or using a different HTTP client such as -[hackney](https://github.com/gleam-lang/hackney). diff --git a/aoc2023/build/packages/gleam_httpc/gleam.toml b/aoc2023/build/packages/gleam_httpc/gleam.toml deleted file mode 100644 index d623a94..0000000 --- a/aoc2023/build/packages/gleam_httpc/gleam.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "gleam_httpc" -version = "2.1.1" -gleam = ">= 0.32.0" - -licences = ["Apache-2.0"] -description = "Gleam bindings to Erlang's built in HTTP client, httpc" - -repository = { type = "github", user = "gleam-lang", repo = "httpc" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] - -[erlang] -extra_applications = ["inets", "ssl"] - -[dependencies] -gleam_stdlib = "~> 0.32" -gleam_http = "~> 3.0" - -[dev-dependencies] -gleeunit = "~> 0.6" -gleam_erlang = "~> 0.9" diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam b/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam deleted file mode 100644 index cf166c3..0000000 --- a/aoc2023/build/packages/gleam_httpc/src/gleam/httpc.gleam +++ /dev/null @@ -1,105 +0,0 @@ -import gleam/dynamic.{type Dynamic} -import gleam/http.{type Method} -import gleam/http/response.{type Response, Response} -import gleam/http/request.{type Request} -import gleam/bit_array -import gleam/result -import gleam/list -import gleam/uri - -type Charlist - -@external(erlang, "erlang", "binary_to_list") -fn binary_to_list(a: String) -> Charlist - -@external(erlang, "erlang", "list_to_binary") -fn list_to_binary(a: Charlist) -> String - -type ErlHttpOption - -type BodyFormat { - Binary -} - -type ErlOption { - BodyFormat(BodyFormat) -} - -@external(erlang, "httpc", "request") -fn erl_request( - a: Method, - b: #(Charlist, List(#(Charlist, Charlist)), Charlist, BitArray), - c: List(ErlHttpOption), - d: List(ErlOption), -) -> Result( - #(#(Charlist, Int, Charlist), List(#(Charlist, Charlist)), BitArray), - Dynamic, -) - -@external(erlang, "httpc", "request") -fn erl_request_no_body( - a: Method, - b: #(Charlist, List(#(Charlist, Charlist))), - c: List(ErlHttpOption), - d: List(ErlOption), -) -> Result( - #(#(Charlist, Int, Charlist), List(#(Charlist, Charlist)), BitArray), - Dynamic, -) - -fn charlist_header(header: #(String, String)) -> #(Charlist, Charlist) { - let #(k, v) = header - #(binary_to_list(k), binary_to_list(v)) -} - -fn string_header(header: #(Charlist, Charlist)) -> #(String, String) { - let #(k, v) = header - #(list_to_binary(k), list_to_binary(v)) -} - -// TODO: test -// TODO: refine error type -pub fn send_bits(req: Request(BitArray)) -> Result(Response(BitArray), Dynamic) { - let erl_url = - req - |> request.to_uri - |> uri.to_string - |> binary_to_list - let erl_headers = list.map(req.headers, charlist_header) - let erl_http_options = [] - let erl_options = [BodyFormat(Binary)] - - use response <- result.then(case req.method { - http.Options | http.Head | http.Get -> { - let erl_req = #(erl_url, erl_headers) - erl_request_no_body(req.method, erl_req, erl_http_options, erl_options) - } - _ -> { - let erl_content_type = - req - |> request.get_header("content-type") - |> result.unwrap("application/octet-stream") - |> binary_to_list - let erl_req = #(erl_url, erl_headers, erl_content_type, req.body) - erl_request(req.method, erl_req, erl_http_options, erl_options) - } - }) - - let #(#(_version, status, _status), headers, resp_body) = response - Ok(Response(status, list.map(headers, string_header), resp_body)) -} - -// TODO: test -// TODO: refine error type -pub fn send(req: Request(String)) -> Result(Response(String), Dynamic) { - use resp <- result.then( - req - |> request.map(bit_array.from_string) - |> send_bits, - ) - - case bit_array.to_string(resp.body) { - Ok(body) -> Ok(response.set_body(resp, body)) - Error(_) -> Error(dynamic.from("Response body was not valid UTF-8")) - } -} diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl b/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl deleted file mode 100644 index 1d634df..0000000 --- a/aoc2023/build/packages/gleam_httpc/src/gleam@httpc.erl +++ /dev/null @@ -1,118 +0,0 @@ --module(gleam@httpc). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([send_bits/1, send/1]). --export_type([charlist/0, erl_http_option/0, body_format/0, erl_option/0]). - --type charlist() :: any(). - --type erl_http_option() :: any(). - --type body_format() :: binary. - --type erl_option() :: {body_format, body_format()}. - --spec charlist_header({binary(), binary()}) -> {charlist(), charlist()}. -charlist_header(Header) -> - {K, V} = Header, - {erlang:binary_to_list(K), erlang:binary_to_list(V)}. - --spec string_header({charlist(), charlist()}) -> {binary(), binary()}. -string_header(Header) -> - {K, V} = Header, - {erlang:list_to_binary(K), erlang:list_to_binary(V)}. - --spec send_bits(gleam@http@request:request(bitstring())) -> {ok, - gleam@http@response:response(bitstring())} | - {error, gleam@dynamic:dynamic_()}. -send_bits(Req) -> - Erl_url = begin - _pipe = Req, - _pipe@1 = gleam@http@request:to_uri(_pipe), - _pipe@2 = gleam@uri:to_string(_pipe@1), - erlang:binary_to_list(_pipe@2) - end, - Erl_headers = gleam@list:map(erlang:element(3, Req), fun charlist_header/1), - Erl_http_options = [], - Erl_options = [{body_format, binary}], - gleam@result:then(case erlang:element(2, Req) of - options -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - head -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - get -> - Erl_req = {Erl_url, Erl_headers}, - httpc:request( - erlang:element(2, Req), - Erl_req, - Erl_http_options, - Erl_options - ); - - _ -> - Erl_content_type = begin - _pipe@3 = Req, - _pipe@4 = gleam@http@request:get_header( - _pipe@3, - <<"content-type"/utf8>> - ), - _pipe@5 = gleam@result:unwrap( - _pipe@4, - <<"application/octet-stream"/utf8>> - ), - erlang:binary_to_list(_pipe@5) - end, - Erl_req@1 = {Erl_url, - Erl_headers, - Erl_content_type, - erlang:element(4, Req)}, - httpc:request( - erlang:element(2, Req), - Erl_req@1, - Erl_http_options, - Erl_options - ) - end, fun(Response) -> - {{_, Status, _}, Headers, Resp_body} = Response, - {ok, - {response, - Status, - gleam@list:map(Headers, fun string_header/1), - Resp_body}} - end). - --spec send(gleam@http@request:request(binary())) -> {ok, - gleam@http@response:response(binary())} | - {error, gleam@dynamic:dynamic_()}. -send(Req) -> - gleam@result:then( - begin - _pipe = Req, - _pipe@1 = gleam@http@request:map(_pipe, fun gleam_stdlib:identity/1), - send_bits(_pipe@1) - end, - fun(Resp) -> case gleam@bit_array:to_string(erlang:element(4, Resp)) of - {ok, Body} -> - {ok, gleam@http@response:set_body(Resp, Body)}; - - {error, _} -> - {error, - gleam@dynamic:from( - <<"Response body was not valid UTF-8"/utf8>> - )} - end end - ). diff --git a/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src b/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src deleted file mode 100644 index c0d2b20..0000000 --- a/aoc2023/build/packages/gleam_httpc/src/gleam_httpc.app.src +++ /dev/null @@ -1,12 +0,0 @@ -{application, gleam_httpc, [ - {vsn, "2.1.1"}, - {applications, [gleam_erlang, - gleam_http, - gleam_stdlib, - gleeunit, - inets, - ssl]}, - {description, "Gleam bindings to Erlang's built in HTTP client, httpc"}, - {modules, [gleam@httpc]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_otp/LICENCE b/aoc2023/build/packages/gleam_otp/LICENCE deleted file mode 100644 index 619ec77..0000000 --- a/aoc2023/build/packages/gleam_otp/LICENCE +++ /dev/null @@ -1,191 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2019, Louis Pilfold . - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/aoc2023/build/packages/gleam_otp/README.md b/aoc2023/build/packages/gleam_otp/README.md deleted file mode 100644 index 3c313a1..0000000 --- a/aoc2023/build/packages/gleam_otp/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Gleam OTP - -GitHub release -Discord chat -![CI](https://github.com/gleam-lang/otp/workflows/test/badge.svg?branch=main) - -A Gleam library for building fault tolerant multi-core programs using the -actor model. It is compatible with Erlang's OTP framework. - -This library is experimental and will likely have many breaking changes in the -future! - -Gleam’s actor system is built with a few primary goals: - -- Full type safety of actors and messages. -- Be compatible with Erlang’s OTP actor framework. -- Provide fault tolerance and self-healing through supervisors. -- Have equivalent performance to Erlang’s OTP. - -This library documents its abstractions and functionality, but you may also wish -to read the documentation or other material on Erlang’s OTP framework to get a -fuller understanding of OTP, the problems it solves, and and the motivations for -its design. - -## Usage - -Add this library to your Gleam project. - -```shell -gleam add gleam_otp -``` - -## Actor hierarchy - -This library provides several different types of actor that can be used in -Gleam programs. - -### Process - -The process is the lowest level building block of OTP, all other actors are -built on top of processes either directly or indirectly. Typically this -abstraction would be not be used very often in Gleam applications, favour -other actor types that provide more functionality. - -Gleam's process module is defined in the `gleam_erlang` library. - -[[Documentation]](https://hexdocs.pm/gleam_erlang/gleam/erlang/process.html) - -### Actor - -The `actor` is the most commonly used process type in Gleam and serves as a good -building block for other abstractions. Like Erlang's `gen_server` it handles -OTP's system messages automatically to enable OTP's debugging and tracing -functionality. - -[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/actor.html) - -### Task - -A task is a kind of process that performs a single task and then shuts down. -Commonly tasks are used to convert sequential code into concurrent code by -performing computation in another process. - -[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/task.html) - -### Supervisor - -Supervisors is a process that starts and then supervises a group of processes, -restarting them if they crash. Supervisors can start other supervisors, -resulting in a hierarchical process structure called a supervision tree, -providing fault tolerance to a Gleam application. - -[[Documentation]](https://hexdocs.pm/gleam_otp/gleam/otp/supervisor.html) - -## Limitations and known issues - -This library is experimental there are some limitations that not yet been resolved. - -- There is no support for named processes. They are untyped global mutable - variables which may be uninitialized, more research is needed to find a - suitable type safe alternative. -- There are relatively few actor abstractions provided by this library. More - will be added in the future. -- Actors do not yet support all OTP system messages. Unsupported messages are - dropped. -- Supervisors do not yet support different shutdown periods per child. In - practice this means that children that are supervisors do not get an - unlimited amount of time to shut down, as is expected in Erlang or Elixir. -- This library has not seen much testing compared to the Erlang OTP - libraries, both in terms of unit tests and real world testing in - applications. diff --git a/aoc2023/build/packages/gleam_otp/gleam.toml b/aoc2023/build/packages/gleam_otp/gleam.toml deleted file mode 100644 index 26e451b..0000000 --- a/aoc2023/build/packages/gleam_otp/gleam.toml +++ /dev/null @@ -1,19 +0,0 @@ -name = "gleam_otp" -version = "0.8.0" -licences = ["Apache-2.0"] -description = "Fault tolerant multicore Gleam programs with OTP" - -gleam = ">= 0.32.0" - -repository = { type = "github", user = "gleam-lang", repo = "otp" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] - -[dependencies] -gleam_stdlib = "~> 0.32" -gleam_erlang = "~> 0.22" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl deleted file mode 100644 index 85677d1..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Continue.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(continue, { - state :: any(), - selector :: gleam@option:option(gleam@erlang@process:selector(any())) -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl deleted file mode 100644 index 75faa95..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Ready.hrl +++ /dev/null @@ -1 +0,0 @@ --record(ready, {state :: any(), selector :: gleam@erlang@process:selector(any())}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl deleted file mode 100644 index 5287439..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@actor_Spec.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(spec, { - init :: fun(() -> gleam@otp@actor:init_result(any(), any())), - init_timeout :: integer(), - loop :: fun((any(), any()) -> gleam@otp@actor:next(any(), any())) -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl deleted file mode 100644 index 3ed0b01..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@intensity_tracker_IntensityTracker.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(intensity_tracker, { - limit :: integer(), - period :: integer(), - events :: list(integer()) -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl deleted file mode 100644 index 7afd07f..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_ChildSpec.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(child_spec, { - start :: fun((any()) -> {ok, gleam@erlang@process:subject(any())} | - {error, gleam@otp@actor:start_error()}), - returning :: fun((any(), gleam@erlang@process:subject(any())) -> any()) -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl deleted file mode 100644 index b10bd9f..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@supervisor_Spec.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(spec, { - argument :: any(), - max_frequency :: integer(), - frequency_period :: integer(), - init :: fun((gleam@otp@supervisor:children(any())) -> gleam@otp@supervisor:children(any())) -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl deleted file mode 100644 index 99ab4cb..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@system_StatusInfo.hrl +++ /dev/null @@ -1,7 +0,0 @@ --record(status_info, { - module :: gleam@erlang@atom:atom_(), - parent :: gleam@erlang@process:pid_(), - mode :: gleam@otp@system:mode(), - debug_state :: gleam@otp@system:debug_state(), - state :: gleam@dynamic:dynamic_() -}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl deleted file mode 100644 index 7c83874..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Exit.hrl +++ /dev/null @@ -1 +0,0 @@ --record(exit, {reason :: gleam@dynamic:dynamic_()}). diff --git a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl b/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl deleted file mode 100644 index 959bea8..0000000 --- a/aoc2023/build/packages/gleam_otp/include/gleam@otp@task_Task.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(task, { - owner :: gleam@erlang@process:pid_(), - pid :: gleam@erlang@process:pid_(), - monitor :: gleam@erlang@process:process_monitor(), - selector :: gleam@erlang@process:selector(gleam@otp@task:message(any())) -}). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam deleted file mode 100644 index 9f6a6c4..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/actor.gleam +++ /dev/null @@ -1,504 +0,0 @@ -//// This module provides the _Actor_ abstraction, one of the most common -//// building blocks of Gleam OTP programs. -//// -//// An Actor is a process like any other BEAM process and can be be used to hold -//// state, execute code, and communicate with other processes by sending and -//// receiving messages. The advantage of using the actor abstraction over a bare -//// process is that it provides a single interface for commonly needed -//// functionality, including support for the [tracing and debugging -//// features in OTP](erlang-sys). -//// -//// Gleam's Actor is similar to Erlang's `gen_server` and Elixir's `GenServer` -//// but differs in that it offers a fully typed interface. This different API is -//// why Gleam uses the name Actor rather than some variation of generic-server. -//// -//// [erlang-sys]: https://www.erlang.org/doc/man/sys.html -//// -//// ## Example -//// -//// An Actor can be used to create a client-server interaction between an Actor -//// (the server) and other processes (the clients). In this example we have an -//// Actor that works as a stack, allowing clients to push and pop elements. -//// -//// ```gleam -//// pub fn main() { -//// // Start the actor with initial state of an empty list, and the -//// // `handle_message` callback function (defined below). -//// // We assert that it starts successfully. -//// // -//// // In real-world Gleam OTP programs we would likely write a wrapper functions -//// // called `start`, `push` `pop`, `shutdown` to start and interact with the -//// // Actor. We are not doing that here for the sake of showing how the Actor -//// // API works. -//// let assert Ok(actor) = actor.start([], handle_message) -//// -//// // We can send a message to the actor to push elements onto the stack. -//// process.send(actor, Push("Joe")) -//// process.send(actor, Push("Mike")) -//// process.send(actor, Push("Robert")) -//// -//// // The `Push` message expects no response, these messages are sent purely for -//// // the side effect of mutating the state held by the actor. -//// // -//// // We can also send the `Pop` message to take a value off of the actor's -//// // stack. This message expects a response, so we use `process.call` to send a -//// // message and wait until a reply is received. -//// // -//// // In this instance we are giving the actor 10 milliseconds to reply, if the -//// // `call` function doesn't get a reply within this time it will panic and -//// // crash the client process. -//// let assert Ok("Robert") = process.call(actor, Pop, 10) -//// let assert Ok("Mike") = process.call(actor, Pop, 10) -//// let assert Ok("Joe") = process.call(actor, Pop, 10) -//// -//// // The stack is now empty, so if we pop again the actor replies with an error. -//// let assert Error(Nil) = process.call(actor, Pop, 10) -//// -//// // Lastly, we can send a message to the actor asking it to shut down. -//// process.send(actor, Shutdown) -//// } -//// ``` -//// -//// Here is the code that is used to implement this actor: -//// -//// ```gleam -//// // First step of implementing the stack Actor is to define the message type that -//// // it can receive. -//// // -//// // The type of the elements in the stack is no fixed so a type parameter is used -//// // for it instead of a concrete type such as `String` or `Int`. -//// pub type Message(element) { -//// // The `Shutdown` message is used to tell the actor to stop. -//// // It is the simplest message type, it contains no data. -//// Shutdown -//// -//// // The `Push` message is used to add a new element to the stack. -//// // It contains the item to add, the type of which is the `element` -//// // parameterised type. -//// Push(push: element) -//// -//// // The `Pop` message is used to remove an element from the stack. -//// // It contains a `Subject`, which is used to send the response back to the -//// // message sender. In this case the reply is of type `Result(element, Nil)`. -//// Pop(reply_with: Subject(Result(element, Nil))) -//// } -//// -//// // The last part is to implement the `handle_message` callback function. -//// // -//// // This function is called by the Actor each for each message it receives. -//// // Actor is single threaded only does one thing at a time, so it handles -//// // messages sequentially and one at a time, in the order they are received. -//// // -//// // The function takes the message and the current state, and returns a data -//// // structure that indicates what to do next, along with the new state. -//// fn handle_message( -//// message: Message(e), -//// stack: List(e), -//// ) -> actor.Next(Message(e), List(e)) { -//// case message { -//// // For the `Shutdown` message we return the `actor.Stop` value, which causes -//// // the actor to discard any remaining messages and stop. -//// Shutdown -> actor.Stop(process.Normal) -//// -//// // For the `Push` message we add the new element to the stack and return -//// // `actor.continue` with this new stack, causing the actor to process any -//// // queued messages or wait for more. -//// Push(value) -> { -//// let new_state = [value, ..stack] -//// actor.continue(new_state) -//// } -//// -//// // For the `Pop` message we attempt to remove an element from the stack, -//// // sending it or an error back to the caller, before continuing. -//// Pop(client) -> -//// case stack { -//// [] -> { -//// // When the stack is empty we can't pop an element, so we send an -//// // error back. -//// process.send(client, Error(Nil)) -//// actor.continue([]) -//// } -//// -//// [first, ..rest] -> { -//// // Otherwise we send the first element back and use the remaining -//// // elements as the new state. -//// process.send(client, Ok(first)) -//// actor.continue(rest) -//// } -//// } -//// } -//// } -//// ``` - -import gleam/erlang/process.{ - type ExitReason, type Pid, type Selector, type Subject, Abnormal, -} -import gleam/erlang/charlist.{type Charlist} -import gleam/otp/system.{ - type DebugState, type Mode, type StatusInfo, type SystemMessage, GetState, - GetStatus, Resume, Running, StatusInfo, Suspend, Suspended, -} -import gleam/string -import gleam/dynamic.{type Dynamic} -import gleam/erlang/atom -import gleam/option.{type Option, None, Some} - -type Message(message) { - /// A regular message excepted by the process - Message(message) - - /// An OTP system message, for debugging or maintenance - System(SystemMessage) - - /// An unexpected message - Unexpected(Dynamic) -} - -/// The type used to indicate what to do after handling a message. -/// -pub type Next(message, state) { - /// Continue handling messages. - /// - Continue(state: state, selector: Option(Selector(message))) - - /// Stop handling messages and shut down. - /// - Stop(ExitReason) -} - -pub fn continue(state: state) -> Next(message, state) { - Continue(state, None) -} - -pub fn with_selector( - value: Next(message, state), - selector: Selector(message), -) -> Next(message, state) { - case value { - Continue(state, _) -> Continue(state, Some(selector)) - _ -> value - } -} - -/// The type used to indicate whether an actor has started successfully or not. -/// -pub type InitResult(state, message) { - /// The actor has successfully initialised. The actor can start handling - /// messages and actor's channel sender can be returned to the parent - /// process. - /// - Ready(state: state, selector: Selector(message)) - - /// The actor has failed to initialise. The actor shuts down and an error is - /// returned to the parent process. - /// - Failed(String) -} - -type Self(state, msg) { - Self( - mode: Mode, - parent: Pid, - state: state, - subject: Subject(msg), - selector: Selector(Message(msg)), - debug_state: DebugState, - message_handler: fn(msg, state) -> Next(msg, state), - ) -} - -/// This data structure holds all the values required by the `start_spec` -/// function in order to create an actor. -/// -/// If you do not need to configure the initialisation behaviour of your actor -/// consider using the `start` function. -/// -pub type Spec(state, msg) { - Spec( - /// The initialisation functionality for the actor. This function is called - /// just after the actor starts but before the channel sender is returned - /// to the parent. - /// - /// This function is used to ensure that any required data or state is - /// correct. If this function returns an error it means that the actor has - /// failed to start and an error is returned to the parent. - /// - init: fn() -> InitResult(state, msg), - /// How many milliseconds the `init` function has to return before it is - /// considered to have taken too long and failed. - /// - init_timeout: Int, - /// This function is called to handle each message that the actor receives. - /// - loop: fn(msg, state) -> Next(msg, state), - ) -} - -// TODO: Check needed functionality here to be OTP compatible -fn exit_process(reason: ExitReason) -> ExitReason { - // TODO - reason -} - -fn receive_message(self: Self(state, msg)) -> Message(msg) { - let selector = case self.mode { - // When suspended we only respond to system messages - Suspended -> - process.new_selector() - |> selecting_system_messages - - // When running we respond to all messages - Running -> - // We add the handler for unexpected messages first so that the user - // supplied selector can override it if desired - process.new_selector() - |> process.selecting_anything(Unexpected) - |> process.merge_selector(self.selector) - |> selecting_system_messages - } - - process.select_forever(selector) -} - -fn selecting_system_messages( - selector: Selector(Message(msg)), -) -> Selector(Message(msg)) { - selector - |> process.selecting_record3( - atom.create_from_string("system"), - convert_system_message, - ) -} - -@external(erlang, "gleam_otp_external", "convert_system_message") -fn convert_system_message(a: Dynamic, b: Dynamic) -> Message(msg) - -fn process_status_info(self: Self(state, msg)) -> StatusInfo { - StatusInfo( - module: atom.create_from_string("gleam@otp@actor"), - parent: self.parent, - mode: self.mode, - debug_state: self.debug_state, - state: dynamic.from(self.state), - ) -} - -fn loop(self: Self(state, msg)) -> ExitReason { - case receive_message(self) { - System(system) -> - case system { - GetState(callback) -> { - callback(dynamic.from(self.state)) - loop(self) - } - Resume(callback) -> { - callback() - loop(Self(..self, mode: Running)) - } - Suspend(callback) -> { - callback() - loop(Self(..self, mode: Suspended)) - } - GetStatus(callback) -> { - callback(process_status_info(self)) - loop(self) - } - } - - Unexpected(message) -> { - log_warning( - charlist.from_string("Actor discarding unexpected message: ~s"), - [charlist.from_string(string.inspect(message))], - ) - loop(self) - } - - Message(msg) -> - case self.message_handler(msg, self.state) { - Stop(reason) -> exit_process(reason) - Continue(state: state, selector: new_selector) -> { - let selector = - new_selector - |> option.map(init_selector(self.subject, _)) - |> option.unwrap(self.selector) - loop(Self(..self, state: state, selector: selector)) - } - } - } -} - -// TODO: replace this when we have Gleam bindings to the logger -@external(erlang, "logger", "warning") -fn log_warning(a: Charlist, b: List(Charlist)) -> Nil - -fn initialise_actor( - spec: Spec(state, msg), - ack: Subject(Result(Subject(msg), ExitReason)), -) { - let subject = process.new_subject() - case spec.init() { - Ready(state, selector) -> { - let selector = init_selector(subject, selector) - // Signal to parent that the process has initialised successfully - process.send(ack, Ok(subject)) - // Start message receive loop - let self = - Self( - state: state, - parent: process.subject_owner(ack), - subject: subject, - selector: selector, - message_handler: spec.loop, - debug_state: system.debug_state([]), - mode: Running, - ) - loop(self) - } - - Failed(reason) -> { - process.send(ack, Error(Abnormal(reason))) - exit_process(Abnormal(reason)) - } - } -} - -fn init_selector(subject, selector) { - process.new_selector() - |> process.selecting(subject, Message) - |> process.merge_selector(process.map_selector(selector, Message)) -} - -pub type StartError { - InitTimeout - InitFailed(ExitReason) - InitCrashed(Dynamic) -} - -/// The result of starting a Gleam actor. -/// -/// This type is compatible with Gleam supervisors. If you wish to convert it -/// to a type compatible with Erlang supervisors see the `ErlangStartResult` -/// type and `erlang_start_result` function. -/// -pub type StartResult(msg) = - Result(Subject(msg), StartError) - -/// An Erlang supervisor compatible process start result. -/// -/// If you wish to convert this into a `StartResult` compatible with Gleam -/// supervisors see the `from_erlang_start_result` and `wrap_erlang_starter` -/// functions. -/// -pub type ErlangStartResult = - Result(Pid, Dynamic) - -/// Convert a Gleam actor start result into an Erlang supervisor compatible -/// process start result. -/// -pub fn to_erlang_start_result(res: StartResult(msg)) -> ErlangStartResult { - case res { - Ok(x) -> Ok(process.subject_owner(x)) - Error(x) -> Error(dynamic.from(x)) - } -} - -type StartInitMessage(msg) { - Ack(Result(Subject(msg), ExitReason)) - Mon(process.ProcessDown) -} - -// TODO: test init_timeout. Currently if we test it eunit prints an error from -// the process death. How do we avoid this? -// -/// Start an actor from a given specification. If the actor's `init` function -/// returns an error or does not return within `init_timeout` then an error is -/// returned. -/// -/// If you do not need to specify the initialisation behaviour of your actor -/// consider using the `start` function. -/// -pub fn start_spec(spec: Spec(state, msg)) -> Result(Subject(msg), StartError) { - let ack_subject = process.new_subject() - - let child = - process.start( - linked: True, - running: fn() { initialise_actor(spec, ack_subject) }, - ) - - let monitor = process.monitor_process(child) - let selector = - process.new_selector() - |> process.selecting(ack_subject, Ack) - |> process.selecting_process_down(monitor, Mon) - - let result = case process.select(selector, spec.init_timeout) { - // Child started OK - Ok(Ack(Ok(channel))) -> Ok(channel) - - // Child initialiser returned an error - Ok(Ack(Error(reason))) -> Error(InitFailed(reason)) - - // Child went down while initialising - Ok(Mon(down)) -> Error(InitCrashed(down.reason)) - - // Child did not finish initialising in time - Error(Nil) -> { - process.kill(child) - Error(InitTimeout) - } - } - - // Remove the monitor used for the starting of the actor as to avoid an extra - // message arriving at the parent if the child dies later. - process.demonitor_process(monitor) - - result -} - -/// Start an actor with a given initial state and message handling loop -/// function. -/// -/// This function returns a `Result` but it will always be `Ok` so it is safe -/// to use with `assert` if you are not starting this actor as part of a -/// supervision tree. -/// -/// If you wish to configure the initialisation behaviour of a new actor see -/// the `Spec` record and the `start_spec` function. -/// -pub fn start( - state: state, - loop: fn(msg, state) -> Next(msg, state), -) -> Result(Subject(msg), StartError) { - start_spec(Spec( - init: fn() { Ready(state, process.new_selector()) }, - loop: loop, - init_timeout: 5000, - )) -} - -/// Send a message over a given channel. -/// -/// This is a re-export of `process.send`, for the sake of convenience. -/// -pub fn send(subject: Subject(msg), msg: msg) -> Nil { - process.send(subject, msg) -} - -// TODO: test -/// Send a synchronous message and wait for a response from the receiving -/// process. -/// -/// If a reply is not received within the given timeout then the sender process -/// crashes. If you wish receive a `Result` rather than crashing see the -/// `process.try_call` function. -/// -/// This is a re-export of `process.call`, for the sake of convenience. -/// -pub fn call( - selector: Subject(message), - make_message: fn(Subject(reply)) -> message, - timeout: Int, -) -> reply { - process.call(selector, make_message, timeout) -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam deleted file mode 100644 index 2044be0..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/intensity_tracker.gleam +++ /dev/null @@ -1,46 +0,0 @@ -//// The intensity tracker is used to monitor how frequently an event happens, -//// erroring if it happens too many times within a period of time. - -import gleam/list - -// TODO: test -pub opaque type IntensityTracker { - IntensityTracker(limit: Int, period: Int, events: List(Int)) -} - -pub type TooIntense { - TooIntense -} - -pub fn new(limit limit: Int, period period: Int) -> IntensityTracker { - IntensityTracker(limit: limit, period: period, events: []) -} - -@external(erlang, "erlang", "monotonic_time") -fn monotonic_time(a: Int) -> Int - -fn now_seconds() -> Int { - monotonic_time(1) -} - -pub fn trim_window(events: List(Int), now: Int, period: Int) -> List(Int) { - case events { - [] -> [] - [event, ..events] -> - case now >= event + period { - True -> [event, ..trim_window(events, now, period)] - False -> [] - } - } -} - -pub fn add_event( - tracker: IntensityTracker, -) -> Result(IntensityTracker, TooIntense) { - let now = now_seconds() - let events = trim_window([now, ..tracker.events], now, tracker.period) - case list.length(events) >= tracker.limit { - True -> Error(TooIntense) - False -> Ok(IntensityTracker(..tracker, events: events)) - } -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam deleted file mode 100644 index 4e1b4d8..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/port.gleam +++ /dev/null @@ -1,9 +0,0 @@ -/// Ports are how code running on the Erlang virtual machine interacts with -/// the outside world. Bytes of data can be sent to and read from ports, -/// providing a form of message passing to an external program or resource. -/// -/// For more information on ports see the [Erlang ports documentation][1]. -/// -/// [1]: https://erlang.org/doc/reference_manual/ports.html -/// -pub type Port diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam deleted file mode 100644 index b99ad8e..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/supervisor.gleam +++ /dev/null @@ -1,410 +0,0 @@ -// TODO: specify amount of time permitted for shut-down -import gleam/result -import gleam/string -import gleam/option.{type Option, None, Some} -import gleam/erlang/process.{type Pid, type Subject} -import gleam/otp/actor.{type StartError} -import gleam/otp/intensity_tracker.{type IntensityTracker} -import gleam/erlang/node.{type Node} - -/// This data structure holds all the values required by the `start_spec` -/// function in order to create an supervisor. -/// -/// If you do not need to configure the behaviour of your supervisor consider -/// using the `start` function. -/// -pub type Spec(argument, return) { - Spec( - argument: argument, - max_frequency: Int, - frequency_period: Int, - init: fn(Children(argument)) -> Children(return), - ) -} - -/// This type represents the starting children of a supervisor within the -/// `init` function. -/// -pub opaque type Children(argument) { - Ready(Starter(argument)) - Failed(ChildStartError) -} - -/// This type contains all the information required to start a new child and -/// add it to the `Children`. -/// -/// This is typically created with the `worker` function. -/// -pub opaque type ChildSpec(msg, argument, returning) { - ChildSpec( - // TODO: merge this into one field - start: fn(argument) -> Result(Subject(msg), StartError), - returning: fn(argument, Subject(msg)) -> returning, - ) -} - -type ChildStartError { - ChildStartError(previous_pid: Option(Pid), error: StartError) -} - -pub opaque type Message { - Exit(process.ExitMessage) - RetryRestart(Pid) -} - -type Instruction { - StartAll - StartFrom(Pid) -} - -type State(a) { - State( - restarts: IntensityTracker, - starter: Starter(a), - retry_restarts: Subject(Pid), - ) -} - -type Starter(argument) { - Starter( - argument: argument, - exec: Option( - fn(Instruction) -> - Result(#(Starter(argument), Instruction), ChildStartError), - ), - ) -} - -type Child(argument) { - Child(pid: Pid, argument: argument) -} - -fn start_child( - child_spec: ChildSpec(msg, argument_in, argument_out), - argument: argument_in, -) -> Result(Child(argument_out), ChildStartError) { - use subject <- result.then( - child_spec.start(argument) - |> result.map_error(ChildStartError(None, _)), - ) - - Ok(Child( - pid: process.subject_owner(subject), - // Merge the new child's pid into the argument to produce the new argument - // used to start any remaining children. - argument: child_spec.returning(argument, subject), - )) -} - -// TODO: more sophsiticated stopping of processes. i.e. give supervisors -// more time to shut down. -fn shutdown_child(pid: Pid, _spec: ChildSpec(msg, arg_1, arg_2)) -> Nil { - process.send_exit(pid) -} - -fn perform_instruction_for_child( - argument: argument_in, - instruction: Instruction, - child_spec: ChildSpec(msg, argument_in, argument_out), - child: Child(argument_out), -) -> Result(#(Child(argument_out), Instruction), ChildStartError) { - let current = child.pid - case instruction { - // This child is older than the StartFrom target, we don't need to - // restart it - StartFrom(target) if target != current -> Ok(#(child, instruction)) - - // This pid either is the cause of the problem, or we have the StartAll - // instruction. Either way it and its younger siblings need to be restarted. - _ -> { - shutdown_child(current, child_spec) - use child <- result.then(start_child(child_spec, argument)) - Ok(#(child, StartAll)) - } - } -} - -fn add_child_to_starter( - starter: Starter(argument_in), - child_spec: ChildSpec(msg, argument_in, argument_out), - child: Child(argument_out), -) -> Starter(argument_out) { - let starter = fn(instruction) { - // Restart the older children. We use `try` to return early if the older - // children failed to start - use #(starter, instruction) <- result.then(case starter.exec { - Some(start) -> start(instruction) - None -> Ok(#(starter, instruction)) - }) - - // Perform the instruction, restarting the child as required - use #(child, instruction) <- result.then(perform_instruction_for_child( - starter.argument, - instruction, - child_spec, - child, - )) - - // Create a new starter for the next time the supervisor needs to restart - let starter = add_child_to_starter(starter, child_spec, child) - - Ok(#(starter, instruction)) - } - - Starter(exec: Some(starter), argument: child.argument) -} - -fn start_and_add_child( - state: Starter(argument_0), - child_spec: ChildSpec(msg, argument_0, argument_1), -) -> Children(argument_1) { - case start_child(child_spec, state.argument) { - Ok(child) -> Ready(add_child_to_starter(state, child_spec, child)) - Error(reason) -> Failed(reason) - } -} - -/// Add a child to the collection of children of the supervisor -/// -/// This function starts the child from the child spec. -/// -pub fn add( - children: Children(argument), - child_spec: ChildSpec(msg, argument, new_argument), -) -> Children(new_argument) { - case children { - // If one of the previous children has failed then we cannot continue - Failed(fail) -> Failed(fail) - - // If everything is OK so far then we can add the child - Ready(state) -> start_and_add_child(state, child_spec) - } -} - -// TODO: test -// TODO: unlimitd shut down duration -/// Prepare a new supervisor type child. -/// -/// If you wish to prepare a new non-supervisor type child see the `worker` -/// function. -/// -/// If you wish to change the type of the argument for later children see the -/// `returning` function. -/// -/// Note: Gleam supervisors do not yet support different shutdown periods per -/// child so this function is currently identical in behaviour to `worker`. It is -/// recommended to use this function for supervisor children nevertheless so the -/// correct shut down behaviour is used in later releases of this library. -/// -pub fn supervisor( - start: fn(argument) -> Result(Subject(msg), StartError), -) -> ChildSpec(msg, argument, argument) { - ChildSpec(start: start, returning: fn(argument, _channel) { argument }) -} - -/// Prepare a new worker type child. -/// -/// If you wish to prepare a new supervisor type child see the `supervisor` -/// function. -/// -/// If you wish to change the type of the argument for later children see the -/// `returning` function. -/// -pub fn worker( - start: fn(argument) -> Result(Subject(msg), StartError), -) -> ChildSpec(msg, argument, argument) { - ChildSpec(start: start, returning: fn(argument, _channel) { argument }) -} - -// TODO: test -/// As each child is added to a supervisors children a new argument is prepared -/// with which to start the next child. By default argument is the same as the -/// previous argument, but this function can be used to change it to something -/// else by passing a function that takes the previous argument and the sender -/// of the previous child. -/// -pub fn returning( - child: ChildSpec(msg, argument_a, argument_b), - updater: fn(argument_a, Subject(msg)) -> argument_c, -) -> ChildSpec(msg, argument_a, argument_c) { - ChildSpec(start: child.start, returning: updater) -} - -fn init( - spec: Spec(argument, return), -) -> actor.InitResult(State(return), Message) { - // Create a subject so that we can asynchronously retry restarting when we - // fail to bring an exited child - let retry = process.new_subject() - - // Trap exits so that we get a message when a child crashes - process.trap_exits(True) - - // Combine selectors - let selector = - process.new_selector() - |> process.selecting(retry, RetryRestart) - |> process.selecting_trapped_exits(Exit) - - // Start any children - let result = - Starter(argument: spec.argument, exec: None) - |> Ready - |> spec.init - - // Pass back up the result - case result { - Ready(starter) -> { - let restarts = - intensity_tracker.new( - limit: spec.max_frequency, - period: spec.frequency_period, - ) - let state = - State(starter: starter, restarts: restarts, retry_restarts: retry) - actor.Ready(state, selector) - } - - Failed(error) -> - actor.Failed(case error.error { - actor.InitTimeout -> "Child initialisation timed out" - actor.InitCrashed(reason) -> - string.append( - "Child crashed during initialisation: ", - string.inspect(reason), - ) - actor.InitFailed(reason) -> - string.append( - "Child failed to start during initialisation: ", - string.inspect(reason), - ) - }) - } -} - -type HandleExitError { - RestartFailed(pid: Pid, restarts: IntensityTracker) - TooManyRestarts -} - -fn handle_exit(pid: Pid, state: State(a)) -> actor.Next(Message, State(a)) { - let outcome = { - // If we are handling an exit then we must have some children - let assert Some(start) = state.starter.exec - - // Check to see if there has been too many restarts in this period - use restarts <- result.then( - state.restarts - |> intensity_tracker.add_event - |> result.map_error(fn(_) { TooManyRestarts }), - ) - - // Restart the exited child and any following children - use #(starter, _) <- result.then( - start(StartFrom(pid)) - |> result.map_error(fn(e: ChildStartError) { - RestartFailed(option.unwrap(e.previous_pid, pid), restarts) - }), - ) - - Ok(State(..state, starter: starter, restarts: restarts)) - } - - case outcome { - Ok(state) -> actor.continue(state) - Error(RestartFailed(failed_child, restarts)) -> { - // Asynchronously enqueue the restarting of this child again as we were - // unable to restart them this time. We do this asynchronously as we want - // to have a chance to handle any system messages that have come in. - process.send(state.retry_restarts, failed_child) - let state = State(..state, restarts: restarts) - actor.continue(state) - } - Error(TooManyRestarts) -> - actor.Stop(process.Abnormal( - "Child processes restarted too many times within allowed period", - )) - } -} - -fn loop( - message: Message, - state: State(argument), -) -> actor.Next(Message, State(argument)) { - case message { - Exit(exit_message) -> handle_exit(exit_message.pid, state) - RetryRestart(pid) -> handle_exit(pid, state) - } -} - -/// Start a supervisor from a given specification. -/// -pub fn start_spec(spec: Spec(a, b)) -> Result(Subject(Message), StartError) { - actor.start_spec(actor.Spec( - init: fn() { init(spec) }, - loop: loop, - init_timeout: 60_000, - )) -} - -/// Start a supervisor from a given `init` function. -/// -/// The init argument passed to children will be `Nil` and the maximum restart -/// intensity will be 1 restart per 5 seconds (the same as the default for -/// [Erlang supervisors][erl-sup]). If you wish to specify these values, see -/// the `start_spec` function and the `Spec` type. -/// -/// [erl-sup]: https://www.erlang.org/doc/design_principles/sup_princ.html#maximum-restart-intensity -/// -pub fn start( - init: fn(Children(Nil)) -> Children(a), -) -> Result(Subject(Message), StartError) { - start_spec(Spec( - init: init, - argument: Nil, - max_frequency: 1, - frequency_period: 5, - )) -} - -/// A type used to describe the situation in which an Erlang based application -/// is starting. -/// -/// For more information see the [Erlang distributed application -/// documentation][1] and the Learn Your Some Erlang chapter on [distributed -/// applications][2]. -/// -/// [1]: https://erlang.org/doc/design_principles/distributed_applications.html -/// [2]: https://learnyousomeerlang.com/distributed-otp-applications -/// -pub type ApplicationStartMode { - Normal - Takeover(Node) - Failover(Node) -} - -pub type ApplicationStop - -@external(erlang, "gleam_otp_external", "application_stopped") -pub fn application_stopped() -> ApplicationStop - -/// The result of starting a Gleam actor. -/// -/// This type is compatible with Gleam supervisors. If you wish to convert it -/// to a type compatible with Erlang supervisors see the `ErlangStartResult` -/// type and `erlang_start_result` function. -/// -pub type StartResult(msg) = - actor.StartResult(msg) - -/// An Erlang supervisor compatible process start result. -/// -pub type ErlangStartResult = - actor.ErlangStartResult - -/// Convert a Gleam actor start result into an Erlang supervisor compatible -/// process start result. -/// -pub fn to_erlang_start_result(res: StartResult(msg)) -> ErlangStartResult { - actor.to_erlang_start_result(res) -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam deleted file mode 100644 index c05646b..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/system.gleam +++ /dev/null @@ -1,89 +0,0 @@ -import gleam/dynamic.{type Dynamic} -import gleam/erlang/atom.{type Atom} -import gleam/erlang/process.{type Pid} - -pub type Mode { - Running - Suspended -} - -pub type DebugOption { - NoDebug -} - -pub type DebugState - -@external(erlang, "sys", "debug_options") -pub fn debug_state(a: List(DebugOption)) -> DebugState - -pub type StatusInfo { - StatusInfo( - module: Atom, - parent: Pid, - mode: Mode, - debug_state: DebugState, - state: Dynamic, - ) -} - -// TODO: document -// TODO: implement remaining messages -pub type SystemMessage { - // {replace_state, StateFn} - // {change_code, Mod, Vsn, Extra} - // {terminate, Reason} - // {debug, {log, Flag}} - // {debug, {trace, Flag}} - // {debug, {log_to_file, FileName}} - // {debug, {statistics, Flag}} - // {debug, no_debug} - // {debug, {install, {Func, FuncState}}} - // {debug, {install, {FuncId, Func, FuncState}}} - // {debug, {remove, FuncOrId}} - Resume(fn() -> Nil) - Suspend(fn() -> Nil) - GetState(fn(Dynamic) -> Nil) - GetStatus(fn(StatusInfo) -> Nil) -} - -type DoNotLeak - -/// Get the state of a given OTP compatible process. This function is only -/// intended for debugging. -/// -/// For more information see the [Erlang documentation][1]. -/// -/// [1]: https://erlang.org/doc/man/sys.html#get_state-1 -/// -@external(erlang, "sys", "get_state") -pub fn get_state(from from: Pid) -> Dynamic - -@external(erlang, "sys", "suspend") -fn erl_suspend(a: Pid) -> DoNotLeak - -/// Request an OTP compatible process to suspend, causing it to only handle -/// system messages. -/// -/// For more information see the [Erlang documentation][1]. -/// -/// [1]: https://erlang.org/doc/man/sys.html#suspend-1 -/// -pub fn suspend(pid: Pid) -> Nil { - erl_suspend(pid) - Nil -} - -@external(erlang, "sys", "resume") -fn erl_resume(from from: Pid) -> DoNotLeak - -/// Request a suspended OTP compatible process to result, causing it to handle -/// all messages rather than only system messages. -/// -/// For more information see the [Erlang documentation][1]. -/// -/// [1]: https://erlang.org/doc/man/sys.html#resume-1 -/// -pub fn resume(pid: Pid) -> Nil { - erl_resume(pid) - Nil -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam b/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam deleted file mode 100644 index b2b2c5c..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam/otp/task.gleam +++ /dev/null @@ -1,151 +0,0 @@ -//// A task is a kind of process that performs a single task and then shuts -//// down. Commonly tasks are used to convert sequential code into concurrent -//// code by performing computation in another process. -//// -//// let task = task.async(fn() { do_some_work() }) -//// let value = do_some_other_work() -//// value + task.await(task, 100) -//// -//// Tasks spawned with async can be awaited on by their caller process (and -//// only their caller) as shown in the example above. They are implemented by -//// spawning a process that sends a message to the caller once the given -//// computation is performed. -//// -//// There are two important things to consider when using `async`: -//// -//// 1. If you are using async tasks, you must await a reply as they are always -//// sent. -//// -//// 2. async tasks link the caller and the spawned process. This means that, -//// if the caller crashes, the task will crash too and vice-versa. This is -//// on purpose: if the process meant to receive the result no longer -//// exists, there is no purpose in completing the computation. -//// -//// This module is inspired by Elixir's [Task module][1]. -//// -//// [1]: https://hexdocs.pm/elixir/master/Task.html -//// - -// TODO: await_many -import gleam/erlang/process.{type Pid, type ProcessMonitor, type Selector} -import gleam/dynamic.{type Dynamic} - -pub opaque type Task(value) { - Task( - owner: Pid, - pid: Pid, - monitor: ProcessMonitor, - selector: Selector(Message(value)), - ) -} - -// TODO: test -/// Spawn a task process that calls a given function in order to perform some -/// work. The result of this function is send back to the parent and can be -/// received using the `await` function. -/// -/// See the top level module documentation for more information on async/await. -/// -pub fn async(work: fn() -> value) -> Task(value) { - let owner = process.self() - let subject = process.new_subject() - let pid = - process.start(linked: True, running: fn() { process.send(subject, work()) }) - let monitor = process.monitor_process(pid) - let selector = - process.new_selector() - |> process.selecting_process_down(monitor, FromMonitor) - |> process.selecting(subject, FromSubject) - Task(owner: owner, pid: pid, monitor: monitor, selector: selector) -} - -pub type AwaitError { - Timeout - Exit(reason: Dynamic) -} - -// We can only wait on a task if we are the owner of it so crash if we are -// waiting on a task we don't own. -fn assert_owner(task: Task(a)) -> Nil { - let self = process.self() - case task.owner == self { - True -> Nil - False -> - process.send_abnormal_exit( - self, - "awaited on a task that does not belong to this process", - ) - } -} - -type Message(value) { - FromMonitor(process.ProcessDown) - FromSubject(value) -} - -// TODO: test -/// Wait for the value computed by a task. -/// -/// If the a value is not received before the timeout has elapsed or if the -/// task process crashes then an error is returned. -/// -pub fn try_await(task: Task(value), timeout: Int) -> Result(value, AwaitError) { - assert_owner(task) - case process.select(task.selector, timeout) { - // The task process has sent back a value - Ok(FromSubject(x)) -> { - process.demonitor_process(task.monitor) - Ok(x) - } - - // The task process crashed without sending a value - Ok(FromMonitor(process.ProcessDown(reason: reason, ..))) -> - Error(Exit(reason)) - - // The task process is alive but has not sent a value yet - Error(Nil) -> Error(Timeout) - } -} - -// TODO: test -/// Wait for the value computed by a task. -/// -/// If the a value is not received before the timeout has elapsed or if the -/// task process crashes then this function crashes. -/// -pub fn await(task: Task(value), timeout: Int) -> value { - let assert Ok(value) = try_await(task, timeout) - value -} - -/// Wait endlessly for the value computed by a task. -/// -/// Be Careful! This function does not return until there is a value to -/// receive. If a value is not received then the process will be stuck waiting -/// forever. -/// -pub fn try_await_forever(task: Task(value)) -> Result(value, AwaitError) { - assert_owner(task) - case process.select_forever(task.selector) { - // The task process has sent back a value - FromSubject(x) -> { - process.demonitor_process(task.monitor) - Ok(x) - } - - // The task process crashed without sending a value - FromMonitor(process.ProcessDown(reason: reason, ..)) -> Error(Exit(reason)) - } -} - -/// Wait endlessly for the value computed by a task. -/// -/// Be Careful! Like `try_await_forever`, this function does not return until there is a value to -/// receive. -/// -/// If the task process crashes then this function crashes. -/// -pub fn await_forever(task: Task(value)) -> value { - let assert Ok(value) = try_await_forever(task) - value -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl deleted file mode 100644 index 0606147..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@actor.erl +++ /dev/null @@ -1,273 +0,0 @@ --module(gleam@otp@actor). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([continue/1, with_selector/2, to_erlang_start_result/1, start_spec/1, start/2, send/2, call/3]). --export_type([message/1, next/2, init_result/2, self/2, spec/2, start_error/0, start_init_message/1]). - --type message(GAS) :: {message, GAS} | - {system, gleam@otp@system:system_message()} | - {unexpected, gleam@dynamic:dynamic_()}. - --type next(GAT, GAU) :: {continue, - GAU, - gleam@option:option(gleam@erlang@process:selector(GAT))} | - {stop, gleam@erlang@process:exit_reason()}. - --type init_result(GAV, GAW) :: {ready, GAV, gleam@erlang@process:selector(GAW)} | - {failed, binary()}. - --type self(GAX, GAY) :: {self, - gleam@otp@system:mode(), - gleam@erlang@process:pid_(), - GAX, - gleam@erlang@process:subject(GAY), - gleam@erlang@process:selector(message(GAY)), - gleam@otp@system:debug_state(), - fun((GAY, GAX) -> next(GAY, GAX))}. - --type spec(GAZ, GBA) :: {spec, - fun(() -> init_result(GAZ, GBA)), - integer(), - fun((GBA, GAZ) -> next(GBA, GAZ))}. - --type start_error() :: init_timeout | - {init_failed, gleam@erlang@process:exit_reason()} | - {init_crashed, gleam@dynamic:dynamic_()}. - --type start_init_message(GBB) :: {ack, - {ok, gleam@erlang@process:subject(GBB)} | - {error, gleam@erlang@process:exit_reason()}} | - {mon, gleam@erlang@process:process_down()}. - --spec continue(GBI) -> next(any(), GBI). -continue(State) -> - {continue, State, none}. - --spec with_selector(next(GBM, GBN), gleam@erlang@process:selector(GBM)) -> next(GBM, GBN). -with_selector(Value, Selector) -> - case Value of - {continue, State, _} -> - {continue, State, {some, Selector}}; - - _ -> - Value - end. - --spec exit_process(gleam@erlang@process:exit_reason()) -> gleam@erlang@process:exit_reason(). -exit_process(Reason) -> - Reason. - --spec selecting_system_messages(gleam@erlang@process:selector(message(GBY))) -> gleam@erlang@process:selector(message(GBY)). -selecting_system_messages(Selector) -> - _pipe = Selector, - gleam@erlang@process:selecting_record3( - _pipe, - erlang:binary_to_atom(<<"system"/utf8>>), - fun gleam_otp_external:convert_system_message/2 - ). - --spec receive_message(self(any(), GBU)) -> message(GBU). -receive_message(Self) -> - Selector = case erlang:element(2, Self) of - suspended -> - _pipe = gleam_erlang_ffi:new_selector(), - selecting_system_messages(_pipe); - - running -> - _pipe@1 = gleam_erlang_ffi:new_selector(), - _pipe@2 = gleam@erlang@process:selecting_anything( - _pipe@1, - fun(Field@0) -> {unexpected, Field@0} end - ), - _pipe@3 = gleam_erlang_ffi:merge_selector( - _pipe@2, - erlang:element(6, Self) - ), - selecting_system_messages(_pipe@3) - end, - gleam_erlang_ffi:select(Selector). - --spec process_status_info(self(any(), any())) -> gleam@otp@system:status_info(). -process_status_info(Self) -> - {status_info, - erlang:binary_to_atom(<<"gleam@otp@actor"/utf8>>), - erlang:element(3, Self), - erlang:element(2, Self), - erlang:element(7, Self), - gleam@dynamic:from(erlang:element(4, Self))}. - --spec init_selector( - gleam@erlang@process:subject(GGN), - gleam@erlang@process:selector(GGN) -) -> gleam@erlang@process:selector(message(GGN)). -init_selector(Subject, Selector) -> - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Subject, - fun(Field@0) -> {message, Field@0} end - ), - gleam_erlang_ffi:merge_selector( - _pipe@1, - gleam_erlang_ffi:map_selector( - Selector, - fun(Field@0) -> {message, Field@0} end - ) - ). - --spec loop(self(any(), any())) -> gleam@erlang@process:exit_reason(). -loop(Self) -> - case receive_message(Self) of - {system, System} -> - case System of - {get_state, Callback} -> - Callback(gleam@dynamic:from(erlang:element(4, Self))), - loop(Self); - - {resume, Callback@1} -> - Callback@1(), - loop(erlang:setelement(2, Self, running)); - - {suspend, Callback@2} -> - Callback@2(), - loop(erlang:setelement(2, Self, suspended)); - - {get_status, Callback@3} -> - Callback@3(process_status_info(Self)), - loop(Self) - end; - - {unexpected, Message} -> - logger:warning( - unicode:characters_to_list( - <<"Actor discarding unexpected message: ~s"/utf8>> - ), - [unicode:characters_to_list(gleam@string:inspect(Message))] - ), - loop(Self); - - {message, Msg} -> - case (erlang:element(8, Self))(Msg, erlang:element(4, Self)) of - {stop, Reason} -> - exit_process(Reason); - - {continue, State, New_selector} -> - Selector = begin - _pipe = New_selector, - _pipe@1 = gleam@option:map( - _pipe, - fun(_capture) -> - init_selector(erlang:element(5, Self), _capture) - end - ), - gleam@option:unwrap(_pipe@1, erlang:element(6, Self)) - end, - loop( - erlang:setelement( - 6, - erlang:setelement(4, Self, State), - Selector - ) - ) - end - end. - --spec initialise_actor( - spec(any(), GCP), - gleam@erlang@process:subject({ok, gleam@erlang@process:subject(GCP)} | - {error, gleam@erlang@process:exit_reason()}) -) -> gleam@erlang@process:exit_reason(). -initialise_actor(Spec, Ack) -> - Subject = gleam@erlang@process:new_subject(), - case (erlang:element(2, Spec))() of - {ready, State, Selector} -> - Selector@1 = init_selector(Subject, Selector), - gleam@erlang@process:send(Ack, {ok, Subject}), - Self = {self, - running, - gleam@erlang@process:subject_owner(Ack), - State, - Subject, - Selector@1, - sys:debug_options([]), - erlang:element(4, Spec)}, - loop(Self); - - {failed, Reason} -> - gleam@erlang@process:send(Ack, {error, {abnormal, Reason}}), - exit_process({abnormal, Reason}) - end. - --spec to_erlang_start_result( - {ok, gleam@erlang@process:subject(any())} | {error, start_error()} -) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. -to_erlang_start_result(Res) -> - case Res of - {ok, X} -> - {ok, gleam@erlang@process:subject_owner(X)}; - - {error, X@1} -> - {error, gleam@dynamic:from(X@1)} - end. - --spec start_spec(spec(any(), GDD)) -> {ok, gleam@erlang@process:subject(GDD)} | - {error, start_error()}. -start_spec(Spec) -> - Ack_subject = gleam@erlang@process:new_subject(), - Child = gleam@erlang@process:start( - fun() -> initialise_actor(Spec, Ack_subject) end, - true - ), - Monitor = gleam@erlang@process:monitor_process(Child), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Ack_subject, - fun(Field@0) -> {ack, Field@0} end - ), - gleam@erlang@process:selecting_process_down( - _pipe@1, - Monitor, - fun(Field@0) -> {mon, Field@0} end - ) - end, - Result = case gleam_erlang_ffi:select(Selector, erlang:element(3, Spec)) of - {ok, {ack, {ok, Channel}}} -> - {ok, Channel}; - - {ok, {ack, {error, Reason}}} -> - {error, {init_failed, Reason}}; - - {ok, {mon, Down}} -> - {error, {init_crashed, erlang:element(3, Down)}}; - - {error, nil} -> - gleam@erlang@process:kill(Child), - {error, init_timeout} - end, - gleam_erlang_ffi:demonitor(Monitor), - Result. - --spec start(GDJ, fun((GDK, GDJ) -> next(GDK, GDJ))) -> {ok, - gleam@erlang@process:subject(GDK)} | - {error, start_error()}. -start(State, Loop) -> - start_spec( - {spec, - fun() -> {ready, State, gleam_erlang_ffi:new_selector()} end, - 5000, - Loop} - ). - --spec send(gleam@erlang@process:subject(GDQ), GDQ) -> nil. -send(Subject, Msg) -> - gleam@erlang@process:send(Subject, Msg). - --spec call( - gleam@erlang@process:subject(GDS), - fun((gleam@erlang@process:subject(GDU)) -> GDS), - integer() -) -> GDU. -call(Selector, Make_message, Timeout) -> - gleam@erlang@process:call(Selector, Make_message, Timeout). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl deleted file mode 100644 index 8792f14..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@intensity_tracker.erl +++ /dev/null @@ -1,53 +0,0 @@ --module(gleam@otp@intensity_tracker). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/2, trim_window/3, add_event/1]). --export_type([intensity_tracker/0, too_intense/0]). - --opaque intensity_tracker() :: {intensity_tracker, - integer(), - integer(), - list(integer())}. - --type too_intense() :: too_intense. - --spec new(integer(), integer()) -> intensity_tracker(). -new(Limit, Period) -> - {intensity_tracker, Limit, Period, []}. - --spec now_seconds() -> integer(). -now_seconds() -> - erlang:monotonic_time(1). - --spec trim_window(list(integer()), integer(), integer()) -> list(integer()). -trim_window(Events, Now, Period) -> - case Events of - [] -> - []; - - [Event | Events@1] -> - case Now >= (Event + Period) of - true -> - [Event | trim_window(Events@1, Now, Period)]; - - false -> - [] - end - end. - --spec add_event(intensity_tracker()) -> {ok, intensity_tracker()} | - {error, too_intense()}. -add_event(Tracker) -> - Now = now_seconds(), - Events = trim_window( - [Now | erlang:element(4, Tracker)], - Now, - erlang:element(3, Tracker) - ), - case gleam@list:length(Events) >= erlang:element(2, Tracker) of - true -> - {error, too_intense}; - - false -> - {ok, erlang:setelement(4, Tracker, Events)} - end. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl deleted file mode 100644 index b205739..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@port.erl +++ /dev/null @@ -1,8 +0,0 @@ --module(gleam@otp@port). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export_type([port_/0]). - --type port_() :: any(). - - diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl deleted file mode 100644 index 39118f1..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@supervisor.erl +++ /dev/null @@ -1,322 +0,0 @@ --module(gleam@otp@supervisor). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([add/2, supervisor/1, worker/1, returning/2, start_spec/1, start/1, application_stopped/0, to_erlang_start_result/1]). --export_type([spec/2, children/1, child_spec/3, child_start_error/0, message/0, instruction/0, state/1, starter/1, child/1, handle_exit_error/0, application_start_mode/0, application_stop/0]). - --type spec(GLS, GLT) :: {spec, - GLS, - integer(), - integer(), - fun((children(GLS)) -> children(GLT))}. - --opaque children(GLU) :: {ready, starter(GLU)} | {failed, child_start_error()}. - --opaque child_spec(GLV, GLW, GLX) :: {child_spec, - fun((GLW) -> {ok, gleam@erlang@process:subject(GLV)} | - {error, gleam@otp@actor:start_error()}), - fun((GLW, gleam@erlang@process:subject(GLV)) -> GLX)}. - --type child_start_error() :: {child_start_error, - gleam@option:option(gleam@erlang@process:pid_()), - gleam@otp@actor:start_error()}. - --opaque message() :: {exit, gleam@erlang@process:exit_message()} | - {retry_restart, gleam@erlang@process:pid_()}. - --type instruction() :: start_all | {start_from, gleam@erlang@process:pid_()}. - --type state(GLY) :: {state, - gleam@otp@intensity_tracker:intensity_tracker(), - starter(GLY), - gleam@erlang@process:subject(gleam@erlang@process:pid_())}. - --type starter(GLZ) :: {starter, - GLZ, - gleam@option:option(fun((instruction()) -> {ok, - {starter(GLZ), instruction()}} | - {error, child_start_error()}))}. - --type child(GMA) :: {child, gleam@erlang@process:pid_(), GMA}. - --type handle_exit_error() :: {restart_failed, - gleam@erlang@process:pid_(), - gleam@otp@intensity_tracker:intensity_tracker()} | - too_many_restarts. - --type application_start_mode() :: normal | - {takeover, gleam@erlang@node:node_()} | - {failover, gleam@erlang@node:node_()}. - --type application_stop() :: any(). - --spec start_child(child_spec(any(), GME, GMF), GME) -> {ok, child(GMF)} | - {error, child_start_error()}. -start_child(Child_spec, Argument) -> - gleam@result:then( - begin - _pipe = (erlang:element(2, Child_spec))(Argument), - gleam@result:map_error( - _pipe, - fun(_capture) -> {child_start_error, none, _capture} end - ) - end, - fun(Subject) -> - {ok, - {child, - gleam@erlang@process:subject_owner(Subject), - (erlang:element(3, Child_spec))(Argument, Subject)}} - end - ). - --spec shutdown_child( - gleam@erlang@process:pid_(), - child_spec(any(), any(), any()) -) -> nil. -shutdown_child(Pid, _) -> - gleam@erlang@process:send_exit(Pid). - --spec perform_instruction_for_child( - GMS, - instruction(), - child_spec(any(), GMS, GMU), - child(GMU) -) -> {ok, {child(GMU), instruction()}} | {error, child_start_error()}. -perform_instruction_for_child(Argument, Instruction, Child_spec, Child) -> - Current = erlang:element(2, Child), - case Instruction of - {start_from, Target} when Target =/= Current -> - {ok, {Child, Instruction}}; - - _ -> - shutdown_child(Current, Child_spec), - gleam@result:then( - start_child(Child_spec, Argument), - fun(Child@1) -> {ok, {Child@1, start_all}} end - ) - end. - --spec add_child_to_starter( - starter(GNC), - child_spec(any(), GNC, GNF), - child(GNF) -) -> starter(GNF). -add_child_to_starter(Starter, Child_spec, Child) -> - Starter@3 = fun(Instruction) -> - gleam@result:then(case erlang:element(3, Starter) of - {some, Start} -> - Start(Instruction); - - none -> - {ok, {Starter, Instruction}} - end, fun(_use0) -> - {Starter@1, Instruction@1} = _use0, - gleam@result:then( - perform_instruction_for_child( - erlang:element(2, Starter@1), - Instruction@1, - Child_spec, - Child - ), - fun(_use0@1) -> - {Child@1, Instruction@2} = _use0@1, - Starter@2 = add_child_to_starter( - Starter@1, - Child_spec, - Child@1 - ), - {ok, {Starter@2, Instruction@2}} - end - ) - end) - end, - {starter, erlang:element(3, Child), {some, Starter@3}}. - --spec start_and_add_child(starter(GNL), child_spec(any(), GNL, GNO)) -> children(GNO). -start_and_add_child(State, Child_spec) -> - case start_child(Child_spec, erlang:element(2, State)) of - {ok, Child} -> - {ready, add_child_to_starter(State, Child_spec, Child)}; - - {error, Reason} -> - {failed, Reason} - end. - --spec add(children(GNT), child_spec(any(), GNT, GNW)) -> children(GNW). -add(Children, Child_spec) -> - case Children of - {failed, Fail} -> - {failed, Fail}; - - {ready, State} -> - start_and_add_child(State, Child_spec) - end. - --spec supervisor( - fun((GOB) -> {ok, gleam@erlang@process:subject(GOC)} | - {error, gleam@otp@actor:start_error()}) -) -> child_spec(GOC, GOB, GOB). -supervisor(Start) -> - {child_spec, Start, fun(Argument, _) -> Argument end}. - --spec worker( - fun((GOJ) -> {ok, gleam@erlang@process:subject(GOK)} | - {error, gleam@otp@actor:start_error()}) -) -> child_spec(GOK, GOJ, GOJ). -worker(Start) -> - {child_spec, Start, fun(Argument, _) -> Argument end}. - --spec returning( - child_spec(GOR, GOS, any()), - fun((GOS, gleam@erlang@process:subject(GOR)) -> GOY) -) -> child_spec(GOR, GOS, GOY). -returning(Child, Updater) -> - {child_spec, erlang:element(2, Child), Updater}. - --spec init(spec(any(), GPD)) -> gleam@otp@actor:init_result(state(GPD), message()). -init(Spec) -> - Retry = gleam@erlang@process:new_subject(), - gleam_erlang_ffi:trap_exits(true), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting( - _pipe, - Retry, - fun(Field@0) -> {retry_restart, Field@0} end - ), - gleam@erlang@process:selecting_trapped_exits( - _pipe@1, - fun(Field@0) -> {exit, Field@0} end - ) - end, - Result = begin - _pipe@2 = {starter, erlang:element(2, Spec), none}, - _pipe@3 = {ready, _pipe@2}, - (erlang:element(5, Spec))(_pipe@3) - end, - case Result of - {ready, Starter} -> - Restarts = gleam@otp@intensity_tracker:new( - erlang:element(3, Spec), - erlang:element(4, Spec) - ), - State = {state, Restarts, Starter, Retry}, - {ready, State, Selector}; - - {failed, Error} -> - {failed, case erlang:element(3, Error) of - init_timeout -> - <<"Child initialisation timed out"/utf8>>; - - {init_crashed, Reason} -> - gleam@string:append( - <<"Child crashed during initialisation: "/utf8>>, - gleam@string:inspect(Reason) - ); - - {init_failed, Reason@1} -> - gleam@string:append( - <<"Child failed to start during initialisation: "/utf8>>, - gleam@string:inspect(Reason@1) - ) - end} - end. - --spec handle_exit(gleam@erlang@process:pid_(), state(GPJ)) -> gleam@otp@actor:next(message(), state(GPJ)). -handle_exit(Pid, State) -> - Outcome = begin - _assert_subject = erlang:element(3, erlang:element(3, State)), - {some, Start} = case _assert_subject of - {some, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/supervisor"/utf8>>, - function => <<"handle_exit"/utf8>>, - line => 293}) - end, - gleam@result:then( - begin - _pipe = erlang:element(2, State), - _pipe@1 = gleam@otp@intensity_tracker:add_event(_pipe), - gleam@result:map_error(_pipe@1, fun(_) -> too_many_restarts end) - end, - fun(Restarts) -> - gleam@result:then( - begin - _pipe@2 = Start({start_from, Pid}), - gleam@result:map_error( - _pipe@2, - fun(E) -> - {restart_failed, - gleam@option:unwrap( - erlang:element(2, E), - Pid - ), - Restarts} - end - ) - end, - fun(_use0) -> - {Starter, _} = _use0, - {ok, - erlang:setelement( - 2, - erlang:setelement(3, State, Starter), - Restarts - )} - end - ) - end - ) - end, - case Outcome of - {ok, State@1} -> - gleam@otp@actor:continue(State@1); - - {error, {restart_failed, Failed_child, Restarts@1}} -> - gleam@erlang@process:send(erlang:element(4, State), Failed_child), - State@2 = erlang:setelement(2, State, Restarts@1), - gleam@otp@actor:continue(State@2); - - {error, too_many_restarts} -> - {stop, - {abnormal, - <<"Child processes restarted too many times within allowed period"/utf8>>}} - end. - --spec loop(message(), state(GPO)) -> gleam@otp@actor:next(message(), state(GPO)). -loop(Message, State) -> - case Message of - {exit, Exit_message} -> - handle_exit(erlang:element(2, Exit_message), State); - - {retry_restart, Pid} -> - handle_exit(Pid, State) - end. - --spec start_spec(spec(any(), any())) -> {ok, - gleam@erlang@process:subject(message())} | - {error, gleam@otp@actor:start_error()}. -start_spec(Spec) -> - gleam@otp@actor:start_spec( - {spec, fun() -> init(Spec) end, 60000, fun loop/2} - ). - --spec start(fun((children(nil)) -> children(any()))) -> {ok, - gleam@erlang@process:subject(message())} | - {error, gleam@otp@actor:start_error()}. -start(Init) -> - start_spec({spec, nil, 1, 5, Init}). - --spec application_stopped() -> application_stop(). -application_stopped() -> - gleam_otp_external:application_stopped(). - --spec to_erlang_start_result( - {ok, gleam@erlang@process:subject(any())} | - {error, gleam@otp@actor:start_error()} -) -> {ok, gleam@erlang@process:pid_()} | {error, gleam@dynamic:dynamic_()}. -to_erlang_start_result(Res) -> - gleam@otp@actor:to_erlang_start_result(Res). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl deleted file mode 100644 index 622e5ea..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@system.erl +++ /dev/null @@ -1,43 +0,0 @@ --module(gleam@otp@system). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([debug_state/1, get_state/1, suspend/1, resume/1]). --export_type([mode/0, debug_option/0, debug_state/0, status_info/0, system_message/0, do_not_leak/0]). - --type mode() :: running | suspended. - --type debug_option() :: no_debug. - --type debug_state() :: any(). - --type status_info() :: {status_info, - gleam@erlang@atom:atom_(), - gleam@erlang@process:pid_(), - mode(), - debug_state(), - gleam@dynamic:dynamic_()}. - --type system_message() :: {resume, fun(() -> nil)} | - {suspend, fun(() -> nil)} | - {get_state, fun((gleam@dynamic:dynamic_()) -> nil)} | - {get_status, fun((status_info()) -> nil)}. - --type do_not_leak() :: any(). - --spec debug_state(list(debug_option())) -> debug_state(). -debug_state(A) -> - sys:debug_options(A). - --spec get_state(gleam@erlang@process:pid_()) -> gleam@dynamic:dynamic_(). -get_state(From) -> - sys:get_state(From). - --spec suspend(gleam@erlang@process:pid_()) -> nil. -suspend(Pid) -> - sys:suspend(Pid), - nil. - --spec resume(gleam@erlang@process:pid_()) -> nil. -resume(Pid) -> - sys:resume(Pid), - nil. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl b/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl deleted file mode 100644 index e004284..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam@otp@task.erl +++ /dev/null @@ -1,111 +0,0 @@ --module(gleam@otp@task). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([async/1, try_await/2, await/2, try_await_forever/1, await_forever/1]). --export_type([task/1, await_error/0, message/1]). - --opaque task(FWJ) :: {task, - gleam@erlang@process:pid_(), - gleam@erlang@process:pid_(), - gleam@erlang@process:process_monitor(), - gleam@erlang@process:selector(message(FWJ))}. - --type await_error() :: timeout | {exit, gleam@dynamic:dynamic_()}. - --type message(FWK) :: {from_monitor, gleam@erlang@process:process_down()} | - {from_subject, FWK}. - --spec async(fun(() -> FWL)) -> task(FWL). -async(Work) -> - Owner = erlang:self(), - Subject = gleam@erlang@process:new_subject(), - Pid = gleam@erlang@process:start( - fun() -> gleam@erlang@process:send(Subject, Work()) end, - true - ), - Monitor = gleam@erlang@process:monitor_process(Pid), - Selector = begin - _pipe = gleam_erlang_ffi:new_selector(), - _pipe@1 = gleam@erlang@process:selecting_process_down( - _pipe, - Monitor, - fun(Field@0) -> {from_monitor, Field@0} end - ), - gleam@erlang@process:selecting( - _pipe@1, - Subject, - fun(Field@0) -> {from_subject, Field@0} end - ) - end, - {task, Owner, Pid, Monitor, Selector}. - --spec assert_owner(task(any())) -> nil. -assert_owner(Task) -> - Self = erlang:self(), - case erlang:element(2, Task) =:= Self of - true -> - nil; - - false -> - gleam@erlang@process:send_abnormal_exit( - Self, - <<"awaited on a task that does not belong to this process"/utf8>> - ) - end. - --spec try_await(task(FWP), integer()) -> {ok, FWP} | {error, await_error()}. -try_await(Task, Timeout) -> - assert_owner(Task), - case gleam_erlang_ffi:select(erlang:element(5, Task), Timeout) of - {ok, {from_subject, X}} -> - gleam_erlang_ffi:demonitor(erlang:element(4, Task)), - {ok, X}; - - {ok, {from_monitor, {process_down, _, Reason}}} -> - {error, {exit, Reason}}; - - {error, nil} -> - {error, timeout} - end. - --spec await(task(FWT), integer()) -> FWT. -await(Task, Timeout) -> - _assert_subject = try_await(Task, Timeout), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/task"/utf8>>, - function => <<"await"/utf8>>, - line => 117}) - end, - Value. - --spec try_await_forever(task(FWV)) -> {ok, FWV} | {error, await_error()}. -try_await_forever(Task) -> - assert_owner(Task), - case gleam_erlang_ffi:select(erlang:element(5, Task)) of - {from_subject, X} -> - gleam_erlang_ffi:demonitor(erlang:element(4, Task)), - {ok, X}; - - {from_monitor, {process_down, _, Reason}} -> - {error, {exit, Reason}} - end. - --spec await_forever(task(FWZ)) -> FWZ. -await_forever(Task) -> - _assert_subject = try_await_forever(Task), - {ok, Value} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"gleam/otp/task"/utf8>>, - function => <<"await_forever"/utf8>>, - line => 149}) - end, - Value. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src b/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src deleted file mode 100644 index 5c52295..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam_otp.app.src +++ /dev/null @@ -1,15 +0,0 @@ -{application, gleam_otp, [ - {vsn, "0.8.0"}, - {applications, [gleam_erlang, - gleam_stdlib, - gleeunit]}, - {description, "Fault tolerant multicore Gleam programs with OTP"}, - {modules, [gleam@otp@actor, - gleam@otp@intensity_tracker, - gleam@otp@port, - gleam@otp@supervisor, - gleam@otp@system, - gleam@otp@task, - gleam_otp]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl b/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl deleted file mode 100644 index 9381ad2..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam_otp.erl +++ /dev/null @@ -1,28 +0,0 @@ --module(gleam_otp). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([main/0]). - --spec spawn_task(integer()) -> gleam@otp@task:task(nil). -spawn_task(I) -> - gleam@otp@task:async(fun() -> case (I rem 500) =:= 0 of - true -> - gleam@io:println( - <<"Hello from "/utf8, (gleam@int:to_string(I))/binary>> - ); - - false -> - nil - end end). - --spec main() -> integer(). -main() -> - gleam@io:debug( - gleam_otp_test_external:get_message_queue_length(erlang:self()) - ), - _pipe = gleam@list:range(0, 1000000), - _pipe@1 = gleam@list:map(_pipe, fun spawn_task/1), - gleam@list:each(_pipe@1, fun gleam@otp@task:await_forever/1), - gleam@io:debug( - gleam_otp_test_external:get_message_queue_length(erlang:self()) - ). diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam b/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam deleted file mode 100644 index 69cdd5b..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam_otp.gleam +++ /dev/null @@ -1,27 +0,0 @@ -import gleam/io -import gleam/int -import gleam/list -import gleam/otp/task -import gleam/erlang/process.{type Pid} - -@external(erlang, "gleam_otp_test_external", "get_message_queue_length") -fn get_message_queue_length(pid pid: Pid) -> Int - -fn spawn_task(i) { - task.async(fn() { - case i % 500 == 0 { - True -> io.println("Hello from " <> int.to_string(i)) - False -> Nil - } - }) -} - -pub fn main() { - io.debug(get_message_queue_length(process.self())) - - list.range(0, 1_000_000) - |> list.map(spawn_task) - |> list.each(task.await_forever) - - io.debug(get_message_queue_length(process.self())) -} diff --git a/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl b/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl deleted file mode 100644 index 8910a67..0000000 --- a/aoc2023/build/packages/gleam_otp/src/gleam_otp_external.erl +++ /dev/null @@ -1,43 +0,0 @@ --module(gleam_otp_external). - --export([application_stopped/0, convert_system_message/2]). - -% TODO: support other system messages -% {replace_state, StateFn} -% {change_code, Mod, Vsn, Extra} -% {terminate, Reason} -% {debug, {log, Flag}} -% {debug, {trace, Flag}} -% {debug, {log_to_file, FileName}} -% {debug, {statistics, Flag}} -% {debug, no_debug} -% {debug, {install, {Func, FuncState}}} -% {debug, {install, {FuncId, Func, FuncState}}} -% {debug, {remove, FuncOrId}} -% GetStatus(Subject(StatusInfo)) -convert_system_message({From, Ref}, Request) when is_pid(From) -> - Reply = fun(Msg) -> - erlang:send(From, {Ref, Msg}), - nil - end, - System = fun(Callback) -> - {system, {Request, Callback}} - end, - case Request of - get_status -> System(fun(Status) -> Reply(process_status(Status)) end); - get_state -> System(Reply); - suspend -> System(fun() -> Reply(ok) end); - resume -> System(fun() -> Reply(ok) end); - Other -> {unexpeceted, Other} - end. - -process_status({status_info, Module, Parent, Mode, DebugState, State}) -> - Data = [ - get(), Mode, Parent, DebugState, - [{header, "Status for Gleam process " ++ pid_to_list(self())}, - {data, [{'Status', Mode}, {'Parent', Parent}, {'State', State}]}] - ], - {status, self(), {module, Module}, Data}. - -application_stopped() -> - ok. diff --git a/aoc2023/build/packages/gleam_stdlib/LICENCE b/aoc2023/build/packages/gleam_stdlib/LICENCE deleted file mode 100644 index c1dabd0..0000000 --- a/aoc2023/build/packages/gleam_stdlib/LICENCE +++ /dev/null @@ -1,191 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2018, Louis Pilfold . - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/aoc2023/build/packages/gleam_stdlib/README.md b/aoc2023/build/packages/gleam_stdlib/README.md deleted file mode 100644 index 05c68ca..0000000 --- a/aoc2023/build/packages/gleam_stdlib/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# stdlib - -GitHub release -Discord chat -![CI](https://github.com/gleam-lang/stdlib/workflows/CI/badge.svg?branch=main) - -Gleam's standard library! -Documentation available on [HexDocs](https://hexdocs.pm/gleam_stdlib/). - -## Installation - -Add `gleam_stdlib` to your Gleam project. - -```sh -gleam add gleam_stdlib -``` - -## Usage - -Import the modules you want to use and write some code! - -```gleam -import gleam/string - -pub fn greet(name: String) -> String { - string.concat(["Hello ", name, "!"]) -} -``` - -## Targets - -Gleam's standard library supports both targets: Erlang and JavaScript. - -### Compatibility - -This library is compatible with all versions of Erlang/OTP, NodeJS, and -major browsers that are currently supported by their maintainers. If you -have a compatibility issue with any platform open an issue and we'll see -what we can do to help. diff --git a/aoc2023/build/packages/gleam_stdlib/gleam.toml b/aoc2023/build/packages/gleam_stdlib/gleam.toml deleted file mode 100644 index 0cb0531..0000000 --- a/aoc2023/build/packages/gleam_stdlib/gleam.toml +++ /dev/null @@ -1,16 +0,0 @@ -name = "gleam_stdlib" -version = "0.33.0" -gleam = ">= 0.32.0" -licences = ["Apache-2.0"] -description = "A standard library for the Gleam programming language" - -repository = { type = "github", user = "gleam-lang", repo = "stdlib" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] - -[javascript.deno] -allow_read = [ - "./", -] diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl deleted file mode 100644 index b1135f2..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@dynamic_DecodeError.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(decode_error, { - expected :: binary(), - found :: binary(), - path :: list(binary()) -}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl deleted file mode 100644 index b0d08dc..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Iterator.hrl +++ /dev/null @@ -1 +0,0 @@ --record(iterator, {continuation :: fun(() -> gleam@iterator:action(any()))}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl deleted file mode 100644 index 1f61922..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@iterator_Next.hrl +++ /dev/null @@ -1 +0,0 @@ --record(next, {element :: any(), accumulator :: any()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl deleted file mode 100644 index 88ac25e..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@queue_Queue.hrl +++ /dev/null @@ -1 +0,0 @@ --record(queue, {in :: list(any()), out :: list(any())}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl deleted file mode 100644 index ad5511e..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_CompileError.hrl +++ /dev/null @@ -1 +0,0 @@ --record(compile_error, {error :: binary(), byte_index :: integer()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl deleted file mode 100644 index 4216619..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Match.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(match, { - content :: binary(), - submatches :: list(gleam@option:option(binary())) -}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl deleted file mode 100644 index 0074603..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@regex_Options.hrl +++ /dev/null @@ -1 +0,0 @@ --record(options, {case_insensitive :: boolean(), multi_line :: boolean()}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl deleted file mode 100644 index 6e1e226..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@set_Set.hrl +++ /dev/null @@ -1 +0,0 @@ --record(set, {map :: gleam@dict:dict(any(), list(nil))}). diff --git a/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl b/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl deleted file mode 100644 index 50150f4..0000000 --- a/aoc2023/build/packages/gleam_stdlib/include/gleam@uri_Uri.hrl +++ /dev/null @@ -1,9 +0,0 @@ --record(uri, { - scheme :: gleam@option:option(binary()), - userinfo :: gleam@option:option(binary()), - host :: gleam@option:option(binary()), - port :: gleam@option:option(integer()), - path :: binary(), - 'query' :: gleam@option:option(binary()), - fragment :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/packages/gleam_stdlib/src/dict.mjs b/aoc2023/build/packages/gleam_stdlib/src/dict.mjs deleted file mode 100644 index a8309e0..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/dict.mjs +++ /dev/null @@ -1,957 +0,0 @@ -/** - * This file uses jsdoc to annotate types. - * These types can be checked using the typescript compiler with "checkjs" option. - */ - -import { isEqual } from "./gleam.mjs"; - -const referenceMap = new WeakMap(); -const tempDataView = new DataView(new ArrayBuffer(8)); -let referenceUID = 0; -/** - * hash the object by reference using a weak map and incrementing uid - * @param {any} o - * @returns {number} - */ -function hashByReference(o) { - const known = referenceMap.get(o); - if (known !== undefined) { - return known; - } - const hash = referenceUID++; - if (referenceUID === 0x7fffffff) { - referenceUID = 0; - } - referenceMap.set(o, hash); - return hash; -} -/** - * merge two hashes in an order sensitive way - * @param {number} a - * @param {number} b - * @returns {number} - */ -function hashMerge(a, b) { - return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; -} -/** - * standard string hash popularised by java - * @param {string} s - * @returns {number} - */ -function hashString(s) { - let hash = 0; - const len = s.length; - for (let i = 0; i < len; i++) { - hash = (Math.imul(31, hash) + s.charCodeAt(i)) | 0; - } - return hash; -} -/** - * hash a number by converting to two integers and do some jumbling - * @param {number} n - * @returns {number} - */ -function hashNumber(n) { - tempDataView.setFloat64(0, n); - const i = tempDataView.getInt32(0); - const j = tempDataView.getInt32(4); - return Math.imul(0x45d9f3b, (i >> 16) ^ i) ^ j; -} -/** - * hash a BigInt by converting it to a string and hashing that - * @param {BigInt} n - * @returns {number} - */ -function hashBigInt(n) { - return hashString(n.toString()); -} -/** - * hash any js object - * @param {any} o - * @returns {number} - */ -function hashObject(o) { - const proto = Object.getPrototypeOf(o); - if (proto !== null && typeof proto.hashCode === "function") { - try { - const code = o.hashCode(o); - if (typeof code === "number") { - return code; - } - } catch {} - } - if (o instanceof Promise || o instanceof WeakSet || o instanceof WeakMap) { - return hashByReference(o); - } - if (o instanceof Date) { - return hashNumber(o.getTime()); - } - let h = 0; - if (o instanceof ArrayBuffer) { - o = new Uint8Array(o); - } - if (Array.isArray(o) || o instanceof Uint8Array) { - for (let i = 0; i < o.length; i++) { - h = (Math.imul(31, h) + getHash(o[i])) | 0; - } - } else if (o instanceof Set) { - o.forEach((v) => { - h = (h + getHash(v)) | 0; - }); - } else if (o instanceof Map) { - o.forEach((v, k) => { - h = (h + hashMerge(getHash(v), getHash(k))) | 0; - }); - } else { - const keys = Object.keys(o); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - const v = o[k]; - h = (h + hashMerge(getHash(v), hashString(k))) | 0; - } - } - return h; -} -/** - * hash any js value - * @param {any} u - * @returns {number} - */ -export function getHash(u) { - if (u === null) return 0x42108422; - if (u === undefined) return 0x42108423; - if (u === true) return 0x42108421; - if (u === false) return 0x42108420; - switch (typeof u) { - case "number": - return hashNumber(u); - case "string": - return hashString(u); - case "bigint": - return hashBigInt(u); - case "object": - return hashObject(u); - case "symbol": - return hashByReference(u); - case "function": - return hashByReference(u); - default: - return 0; // should be unreachable - } -} -/** - * @template K,V - * @typedef {ArrayNode | IndexNode | CollisionNode} Node - */ -/** - * @template K,V - * @typedef {{ type: typeof ENTRY, k: K, v: V }} Entry - */ -/** - * @template K,V - * @typedef {{ type: typeof ARRAY_NODE, size: number, array: (undefined | Entry | Node)[] }} ArrayNode - */ -/** - * @template K,V - * @typedef {{ type: typeof INDEX_NODE, bitmap: number, array: (Entry | Node)[] }} IndexNode - */ -/** - * @template K,V - * @typedef {{ type: typeof COLLISION_NODE, hash: number, array: Entry[] }} CollisionNode - */ -/** - * @typedef {{ val: boolean }} Flag - */ -const SHIFT = 5; // number of bits you need to shift by to get the next bucket -const BUCKET_SIZE = Math.pow(2, SHIFT); -const MASK = BUCKET_SIZE - 1; // used to zero out all bits not in the bucket -const MAX_INDEX_NODE = BUCKET_SIZE / 2; // when does index node grow into array node -const MIN_ARRAY_NODE = BUCKET_SIZE / 4; // when does array node shrink to index node -const ENTRY = 0; -const ARRAY_NODE = 1; -const INDEX_NODE = 2; -const COLLISION_NODE = 3; -/** @type {IndexNode} */ -const EMPTY = { - type: INDEX_NODE, - bitmap: 0, - array: [], -}; -/** - * Mask the hash to get only the bucket corresponding to shift - * @param {number} hash - * @param {number} shift - * @returns {number} - */ -function mask(hash, shift) { - return (hash >>> shift) & MASK; -} -/** - * Set only the Nth bit where N is the masked hash - * @param {number} hash - * @param {number} shift - * @returns {number} - */ -function bitpos(hash, shift) { - return 1 << mask(hash, shift); -} -/** - * Count the number of 1 bits in a number - * @param {number} x - * @returns {number} - */ -function bitcount(x) { - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0f0f0f0f; - x += x >> 8; - x += x >> 16; - return x & 0x7f; -} -/** - * Calculate the array index of an item in a bitmap index node - * @param {number} bitmap - * @param {number} bit - * @returns {number} - */ -function index(bitmap, bit) { - return bitcount(bitmap & (bit - 1)); -} -/** - * Efficiently copy an array and set one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @param {T} val - * @returns {T[]} - */ -function cloneAndSet(arr, at, val) { - const len = arr.length; - const out = new Array(len); - for (let i = 0; i < len; ++i) { - out[i] = arr[i]; - } - out[at] = val; - return out; -} -/** - * Efficiently copy an array and insert one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @param {T} val - * @returns {T[]} - */ -function spliceIn(arr, at, val) { - const len = arr.length; - const out = new Array(len + 1); - let i = 0; - let g = 0; - while (i < at) { - out[g++] = arr[i++]; - } - out[g++] = val; - while (i < len) { - out[g++] = arr[i++]; - } - return out; -} -/** - * Efficiently copy an array and remove one value at an index - * @template T - * @param {T[]} arr - * @param {number} at - * @returns {T[]} - */ -function spliceOut(arr, at) { - const len = arr.length; - const out = new Array(len - 1); - let i = 0; - let g = 0; - while (i < at) { - out[g++] = arr[i++]; - } - ++i; - while (i < len) { - out[g++] = arr[i++]; - } - return out; -} -/** - * Create a new node containing two entries - * @template K,V - * @param {number} shift - * @param {K} key1 - * @param {V} val1 - * @param {number} key2hash - * @param {K} key2 - * @param {V} val2 - * @returns {Node} - */ -function createNode(shift, key1, val1, key2hash, key2, val2) { - const key1hash = getHash(key1); - if (key1hash === key2hash) { - return { - type: COLLISION_NODE, - hash: key1hash, - array: [ - { type: ENTRY, k: key1, v: val1 }, - { type: ENTRY, k: key2, v: val2 }, - ], - }; - } - const addedLeaf = { val: false }; - return assoc( - assocIndex(EMPTY, shift, key1hash, key1, val1, addedLeaf), - shift, - key2hash, - key2, - val2, - addedLeaf - ); -} -/** - * @template T,K,V - * @callback AssocFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @param {V} val - * @param {Flag} addedLeaf - * @returns {Node} - */ -/** - * Associate a node with a new entry, creating a new node - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assoc(root, shift, hash, key, val, addedLeaf) { - switch (root.type) { - case ARRAY_NODE: - return assocArray(root, shift, hash, key, val, addedLeaf); - case INDEX_NODE: - return assocIndex(root, shift, hash, key, val, addedLeaf); - case COLLISION_NODE: - return assocCollision(root, shift, hash, key, val, addedLeaf); - } -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocArray(root, shift, hash, key, val, addedLeaf) { - const idx = mask(hash, shift); - const node = root.array[idx]; - // if the corresponding index is empty set the index to a newly created node - if (node === undefined) { - addedLeaf.val = true; - return { - type: ARRAY_NODE, - size: root.size + 1, - array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), - }; - } - if (node.type === ENTRY) { - // if keys are equal replace the entry - if (isEqual(key, node.k)) { - if (val === node.v) { - return root; - } - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }), - }; - } - // otherwise upgrade the entry to a node and insert - addedLeaf.val = true; - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet( - root.array, - idx, - createNode(shift + SHIFT, node.k, node.v, hash, key, val) - ), - }; - } - // otherwise call assoc on the child node - const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); - // if the child node hasn't changed just return the old root - if (n === node) { - return root; - } - // otherwise set the index to the new node - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, n), - }; -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocIndex(root, shift, hash, key, val, addedLeaf) { - const bit = bitpos(hash, shift); - const idx = index(root.bitmap, bit); - // if there is already a item at this hash index.. - if ((root.bitmap & bit) !== 0) { - // if there is a node at the index (not an entry), call assoc on the child node - const node = root.array[idx]; - if (node.type !== ENTRY) { - const n = assoc(node, shift + SHIFT, hash, key, val, addedLeaf); - if (n === node) { - return root; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, n), - }; - } - // otherwise there is an entry at the index - // if the keys are equal replace the entry with the updated value - const nodeKey = node.k; - if (isEqual(key, nodeKey)) { - if (val === node.v) { - return root; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }), - }; - } - // if the keys are not equal, replace the entry with a new child node - addedLeaf.val = true; - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet( - root.array, - idx, - createNode(shift + SHIFT, nodeKey, node.v, hash, key, val) - ), - }; - } else { - // else there is currently no item at the hash index - const n = root.array.length; - // if the number of nodes is at the maximum, expand this node into an array node - if (n >= MAX_INDEX_NODE) { - // create a 32 length array for the new array node (one for each bit in the hash) - const nodes = new Array(32); - // create and insert a node for the new entry - const jdx = mask(hash, shift); - nodes[jdx] = assocIndex(EMPTY, shift + SHIFT, hash, key, val, addedLeaf); - let j = 0; - let bitmap = root.bitmap; - // place each item in the index node into the correct spot in the array node - // loop through all 32 bits / array positions - for (let i = 0; i < 32; i++) { - if ((bitmap & 1) !== 0) { - const node = root.array[j++]; - nodes[i] = node; - } - // shift the bitmap to process the next bit - bitmap = bitmap >>> 1; - } - return { - type: ARRAY_NODE, - size: n + 1, - array: nodes, - }; - } else { - // else there is still space in this index node - // simply insert a new entry at the hash index - const newArray = spliceIn(root.array, idx, { - type: ENTRY, - k: key, - v: val, - }); - addedLeaf.val = true; - return { - type: INDEX_NODE, - bitmap: root.bitmap | bit, - array: newArray, - }; - } - } -} -/** - * @template T,K,V - * @type {AssocFunction,K,V>} - */ -function assocCollision(root, shift, hash, key, val, addedLeaf) { - // if there is a hash collision - if (hash === root.hash) { - const idx = collisionIndexOf(root, key); - // if this key already exists replace the entry with the new value - if (idx !== -1) { - const entry = root.array[idx]; - if (entry.v === val) { - return root; - } - return { - type: COLLISION_NODE, - hash: hash, - array: cloneAndSet(root.array, idx, { type: ENTRY, k: key, v: val }), - }; - } - // otherwise insert the entry at the end of the array - const size = root.array.length; - addedLeaf.val = true; - return { - type: COLLISION_NODE, - hash: hash, - array: cloneAndSet(root.array, size, { type: ENTRY, k: key, v: val }), - }; - } - // if there is no hash collision, upgrade to an index node - return assoc( - { - type: INDEX_NODE, - bitmap: bitpos(root.hash, shift), - array: [root], - }, - shift, - hash, - key, - val, - addedLeaf - ); -} -/** - * Find the index of a key in the collision node's array - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {number} - */ -function collisionIndexOf(root, key) { - const size = root.array.length; - for (let i = 0; i < size; i++) { - if (isEqual(key, root.array[i].k)) { - return i; - } - } - return -1; -} -/** - * @template T,K,V - * @callback FindFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @returns {undefined | Entry} - */ -/** - * Return the found entry or undefined if not present in the root - * @template K,V - * @type {FindFunction,K,V>} - */ -function find(root, shift, hash, key) { - switch (root.type) { - case ARRAY_NODE: - return findArray(root, shift, hash, key); - case INDEX_NODE: - return findIndex(root, shift, hash, key); - case COLLISION_NODE: - return findCollision(root, key); - } -} -/** - * @template K,V - * @type {FindFunction,K,V>} - */ -function findArray(root, shift, hash, key) { - const idx = mask(hash, shift); - const node = root.array[idx]; - if (node === undefined) { - return undefined; - } - if (node.type !== ENTRY) { - return find(node, shift + SHIFT, hash, key); - } - if (isEqual(key, node.k)) { - return node; - } - return undefined; -} -/** - * @template K,V - * @type {FindFunction,K,V>} - */ -function findIndex(root, shift, hash, key) { - const bit = bitpos(hash, shift); - if ((root.bitmap & bit) === 0) { - return undefined; - } - const idx = index(root.bitmap, bit); - const node = root.array[idx]; - if (node.type !== ENTRY) { - return find(node, shift + SHIFT, hash, key); - } - if (isEqual(key, node.k)) { - return node; - } - return undefined; -} -/** - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {undefined | Entry} - */ -function findCollision(root, key) { - const idx = collisionIndexOf(root, key); - if (idx < 0) { - return undefined; - } - return root.array[idx]; -} -/** - * @template T,K,V - * @callback WithoutFunction - * @param {T} root - * @param {number} shift - * @param {number} hash - * @param {K} key - * @returns {undefined | Node} - */ -/** - * Remove an entry from the root, returning the updated root. - * Returns undefined if the node should be removed from the parent. - * @template K,V - * @type {WithoutFunction,K,V>} - * */ -function without(root, shift, hash, key) { - switch (root.type) { - case ARRAY_NODE: - return withoutArray(root, shift, hash, key); - case INDEX_NODE: - return withoutIndex(root, shift, hash, key); - case COLLISION_NODE: - return withoutCollision(root, key); - } -} -/** - * @template K,V - * @type {WithoutFunction,K,V>} - */ -function withoutArray(root, shift, hash, key) { - const idx = mask(hash, shift); - const node = root.array[idx]; - if (node === undefined) { - return root; // already empty - } - let n = undefined; - // if node is an entry and the keys are not equal there is nothing to remove - // if node is not an entry do a recursive call - if (node.type === ENTRY) { - if (!isEqual(node.k, key)) { - return root; // no changes - } - } else { - n = without(node, shift + SHIFT, hash, key); - if (n === node) { - return root; // no changes - } - } - // if the recursive call returned undefined the node should be removed - if (n === undefined) { - // if the number of child nodes is at the minimum, pack into an index node - if (root.size <= MIN_ARRAY_NODE) { - const arr = root.array; - const out = new Array(root.size - 1); - let i = 0; - let j = 0; - let bitmap = 0; - while (i < idx) { - const nv = arr[i]; - if (nv !== undefined) { - out[j] = nv; - bitmap |= 1 << i; - ++j; - } - ++i; - } - ++i; // skip copying the removed node - while (i < arr.length) { - const nv = arr[i]; - if (nv !== undefined) { - out[j] = nv; - bitmap |= 1 << i; - ++j; - } - ++i; - } - return { - type: INDEX_NODE, - bitmap: bitmap, - array: out, - }; - } - return { - type: ARRAY_NODE, - size: root.size - 1, - array: cloneAndSet(root.array, idx, n), - }; - } - return { - type: ARRAY_NODE, - size: root.size, - array: cloneAndSet(root.array, idx, n), - }; -} -/** - * @template K,V - * @type {WithoutFunction,K,V>} - */ -function withoutIndex(root, shift, hash, key) { - const bit = bitpos(hash, shift); - if ((root.bitmap & bit) === 0) { - return root; // already empty - } - const idx = index(root.bitmap, bit); - const node = root.array[idx]; - // if the item is not an entry - if (node.type !== ENTRY) { - const n = without(node, shift + SHIFT, hash, key); - if (n === node) { - return root; // no changes - } - // if not undefined, the child node still has items, so update it - if (n !== undefined) { - return { - type: INDEX_NODE, - bitmap: root.bitmap, - array: cloneAndSet(root.array, idx, n), - }; - } - // otherwise the child node should be removed - // if it was the only child node, remove this node from the parent - if (root.bitmap === bit) { - return undefined; - } - // otherwise just remove the child node - return { - type: INDEX_NODE, - bitmap: root.bitmap ^ bit, - array: spliceOut(root.array, idx), - }; - } - // otherwise the item is an entry, remove it if the key matches - if (isEqual(key, node.k)) { - if (root.bitmap === bit) { - return undefined; - } - return { - type: INDEX_NODE, - bitmap: root.bitmap ^ bit, - array: spliceOut(root.array, idx), - }; - } - return root; -} -/** - * @template K,V - * @param {CollisionNode} root - * @param {K} key - * @returns {undefined | Node} - */ -function withoutCollision(root, key) { - const idx = collisionIndexOf(root, key); - // if the key not found, no changes - if (idx < 0) { - return root; - } - // otherwise the entry was found, remove it - // if it was the only entry in this node, remove the whole node - if (root.array.length === 1) { - return undefined; - } - // otherwise just remove the entry - return { - type: COLLISION_NODE, - hash: root.hash, - array: spliceOut(root.array, idx), - }; -} -/** - * @template K,V - * @param {undefined | Node} root - * @param {(value:V,key:K)=>void} fn - * @returns {void} - */ -function forEach(root, fn) { - if (root === undefined) { - return; - } - const items = root.array; - const size = items.length; - for (let i = 0; i < size; i++) { - const item = items[i]; - if (item === undefined) { - continue; - } - if (item.type === ENTRY) { - fn(item.v, item.k); - continue; - } - forEach(item, fn); - } -} -/** - * Extra wrapper to keep track of Dict size and clean up the API - * @template K,V - */ -export default class Dict { - /** - * @template V - * @param {Record} o - * @returns {Dict} - */ - static fromObject(o) { - const keys = Object.keys(o); - /** @type Dict */ - let m = Dict.new(); - for (let i = 0; i < keys.length; i++) { - const k = keys[i]; - m = m.set(k, o[k]); - } - return m; - } - /** - * @template K,V - * @param {Map} o - * @returns {Dict} - */ - static fromMap(o) { - /** @type Dict */ - let m = Dict.new(); - o.forEach((v, k) => { - m = m.set(k, v); - }); - return m; - } - static new() { - return new Dict(undefined, 0); - } - /** - * @param {undefined | Node} root - * @param {number} size - */ - constructor(root, size) { - this.root = root; - this.size = size; - } - /** - * @template NotFound - * @param {K} key - * @param {NotFound} notFound - * @returns {NotFound | V} - */ - get(key, notFound) { - if (this.root === undefined) { - return notFound; - } - const found = find(this.root, 0, getHash(key), key); - if (found === undefined) { - return notFound; - } - return found.v; - } - /** - * @param {K} key - * @param {V} val - * @returns {Dict} - */ - set(key, val) { - const addedLeaf = { val: false }; - const root = this.root === undefined ? EMPTY : this.root; - const newRoot = assoc(root, 0, getHash(key), key, val, addedLeaf); - if (newRoot === this.root) { - return this; - } - return new Dict(newRoot, addedLeaf.val ? this.size + 1 : this.size); - } - /** - * @param {K} key - * @returns {Dict} - */ - delete(key) { - if (this.root === undefined) { - return this; - } - const newRoot = without(this.root, 0, getHash(key), key); - if (newRoot === this.root) { - return this; - } - if (newRoot === undefined) { - return Dict.new(); - } - return new Dict(newRoot, this.size - 1); - } - /** - * @param {K} key - * @returns {boolean} - */ - has(key) { - if (this.root === undefined) { - return false; - } - return find(this.root, 0, getHash(key), key) !== undefined; - } - /** - * @returns {[K,V][]} - */ - entries() { - if (this.root === undefined) { - return []; - } - /** @type [K,V][] */ - const result = []; - this.forEach((v, k) => result.push([k, v])); - return result; - } - /** - * - * @param {(val:V,key:K)=>void} fn - */ - forEach(fn) { - forEach(this.root, fn); - } - hashCode() { - let h = 0; - this.forEach((v, k) => { - h = (h + hashMerge(getHash(v), getHash(k))) | 0; - }); - return h; - } - /** - * @param {unknown} o - * @returns {boolean} - */ - equals(o) { - if (!(o instanceof Dict) || this.size !== o.size) { - return false; - } - let equal = true; - this.forEach((v, k) => { - equal = equal && isEqual(o.get(k, !v), v); - }); - return equal; - } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam deleted file mode 100644 index eab2f0b..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/base.gleam +++ /dev/null @@ -1,21 +0,0 @@ -import gleam/bit_array - -@deprecated("Please use `base64_encode` in the `gleam/bit_array` module instead.") -pub fn encode64(input: BitArray, padding: Bool) -> String { - bit_array.base64_encode(input, padding) -} - -@deprecated("Please use `base64_decode` in the `gleam/bit_array` module instead.") -pub fn decode64(encoded: String) -> Result(BitArray, Nil) { - bit_array.base64_decode(encoded) -} - -@deprecated("Please use `base64_url_encode` in the `gleam/bit_array` module instead.") -pub fn url_encode64(input: BitArray, padding: Bool) -> String { - bit_array.base64_url_encode(input, padding) -} - -@deprecated("Please use `base64_url_decode` in the `gleam/bit_array` module instead.") -pub fn url_decode64(encoded: String) -> Result(BitArray, Nil) { - bit_array.base64_url_decode(encoded) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam deleted file mode 100644 index 79860e9..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_array.gleam +++ /dev/null @@ -1,157 +0,0 @@ -//// BitArrays are a sequence of binary data of any length. - -import gleam/string - -/// Converts a UTF-8 `String` type into a `BitArray`. -/// -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "bit_array_from_string") -pub fn from_string(x: String) -> BitArray - -/// Returns an integer which is the number of bytes in the bit array. -/// -@external(erlang, "erlang", "byte_size") -@external(javascript, "../gleam_stdlib.mjs", "length") -pub fn byte_size(x: BitArray) -> Int - -/// Creates a new bit array by joining two bit arrays. -/// -/// ## Examples -/// -/// ```gleam -/// > append(to: from_string("butter"), suffix: from_string("fly")) -/// from_string("butterfly") -/// ``` -/// -pub fn append(to first: BitArray, suffix second: BitArray) -> BitArray { - concat([first, second]) -} - -/// Extracts a sub-section of a bit array. -/// -/// The slice will start at given position and continue up to specified -/// length. -/// A negative length can be used to extract bytes at the end of a bit array. -/// -/// This function runs in constant time. -/// -@external(erlang, "gleam_stdlib", "bit_array_slice") -@external(javascript, "../gleam_stdlib.mjs", "bit_array_slice") -pub fn slice( - from string: BitArray, - at position: Int, - take length: Int, -) -> Result(BitArray, Nil) - -/// Tests to see whether a bit array is valid UTF-8. -/// -pub fn is_utf8(bits: BitArray) -> Bool { - do_is_utf8(bits) -} - -@target(erlang) -fn do_is_utf8(bits: BitArray) -> Bool { - case bits { - <<>> -> True - <<_:utf8, rest:bytes>> -> do_is_utf8(rest) - _ -> False - } -} - -@target(javascript) -fn do_is_utf8(bits: BitArray) -> Bool { - case to_string(bits) { - Ok(_) -> True - _ -> False - } -} - -/// Converts a bit array to a string. -/// -/// Returns an error if the bit array is invalid UTF-8 data. -/// -pub fn to_string(bits: BitArray) -> Result(String, Nil) { - do_to_string(bits) -} - -@target(erlang) -@external(erlang, "gleam_stdlib", "identity") -fn unsafe_to_string(a: BitArray) -> String - -@target(erlang) -fn do_to_string(bits: BitArray) -> Result(String, Nil) { - case is_utf8(bits) { - True -> Ok(unsafe_to_string(bits)) - False -> Error(Nil) - } -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "bit_array_to_string") -fn do_to_string(a: BitArray) -> Result(String, Nil) - -/// Creates a new bit array by joining multiple binaries. -/// -/// ## Examples -/// -/// ```gleam -/// > concat([from_string("butter"), from_string("fly")]) -/// from_string("butterfly") -/// ``` -/// -@external(erlang, "gleam_stdlib", "bit_array_concat") -@external(javascript, "../gleam_stdlib.mjs", "bit_array_concat") -pub fn concat(bit_arrays: List(BitArray)) -> BitArray - -/// Encodes a BitArray into a base 64 encoded string. -/// -pub fn base64_encode(input: BitArray, padding: Bool) -> String { - let encoded = encode64(input) - case padding { - True -> encoded - False -> string.replace(encoded, "=", "") - } -} - -@external(erlang, "base64", "encode") -@external(javascript, "../gleam_stdlib.mjs", "encode64") -fn encode64(a: BitArray) -> String - -/// Decodes a base 64 encoded string into a `BitArray`. -/// -pub fn base64_decode(encoded: String) -> Result(BitArray, Nil) { - let padded = case byte_size(from_string(encoded)) % 4 { - 0 -> encoded - n -> string.append(encoded, string.repeat("=", 4 - n)) - } - decode64(padded) -} - -@external(erlang, "gleam_stdlib", "base_decode64") -@external(javascript, "../gleam_stdlib.mjs", "decode64") -fn decode64(a: String) -> Result(BitArray, Nil) - -/// Encodes a `BitArray` into a base 64 encoded string with URL and filename safe alphabet. -/// -pub fn base64_url_encode(input: BitArray, padding: Bool) -> String { - base64_encode(input, padding) - |> string.replace("+", "-") - |> string.replace("/", "_") -} - -/// Decodes a base 64 encoded string with URL and filename safe alphabet into a `BitArray`. -/// -pub fn base64_url_decode(encoded: String) -> Result(BitArray, Nil) { - encoded - |> string.replace("-", "+") - |> string.replace("_", "/") - |> base64_decode() -} - -@external(erlang, "binary", "encode_hex") -@external(javascript, "../gleam_stdlib.mjs", "base16_encode") -pub fn base16_encode(input: BitArray) -> String - -@external(erlang, "gleam_stdlib", "base16_decode") -@external(javascript, "../gleam_stdlib.mjs", "base16_decode") -pub fn base16_decode(input: String) -> Result(BitArray, Nil) diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam deleted file mode 100644 index ce6fe52..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_builder.gleam +++ /dev/null @@ -1,80 +0,0 @@ -//// This module has been deprecated in favour of `gleam/bytes_builder`. - -import gleam/bytes_builder -import gleam/string_builder.{type StringBuilder} - -pub type BitBuilder = - bytes_builder.BytesBuilder - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn new() -> BitBuilder { - bytes_builder.new() -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn prepend(to: BitBuilder, prefix: BitArray) -> BitBuilder { - bytes_builder.prepend(to, prefix) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn append(to: BitBuilder, suffix: BitArray) -> BitBuilder { - bytes_builder.append(to, suffix) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn prepend_builder(to: BitBuilder, prefix: BitBuilder) -> BitBuilder { - bytes_builder.prepend_builder(to, prefix) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn append_builder( - to first: BitBuilder, - suffix second: BitBuilder, -) -> BitBuilder { - bytes_builder.append_builder(first, second) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn prepend_string(to: BitBuilder, prefix: String) -> BitBuilder { - bytes_builder.prepend_string(to, prefix) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn append_string(to: BitBuilder, suffix: String) -> BitBuilder { - bytes_builder.append_string(to, suffix) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn concat(builders: List(BitBuilder)) -> BitBuilder { - bytes_builder.concat(builders) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn concat_bit_strings(bits: List(BitArray)) -> BitBuilder { - bytes_builder.concat_bit_arrays(bits) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn from_string(string: String) -> BitBuilder { - bytes_builder.from_string(string) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn from_string_builder(builder: StringBuilder) -> BitBuilder { - bytes_builder.from_string_builder(builder) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn from_bit_string(bits: BitArray) -> BitBuilder { - bytes_builder.from_bit_array(bits) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn to_bit_string(builder: BitBuilder) -> BitArray { - bytes_builder.to_bit_array(builder) -} - -@deprecated("Please use the `gleam/bytes_builder` module instead.") -pub fn byte_size(builder: BitBuilder) -> Int { - bytes_builder.byte_size(builder) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam deleted file mode 100644 index b703da0..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/bit_string.gleam +++ /dev/null @@ -1,43 +0,0 @@ -//// This module has been deprecated. Please use the `gleam/bit_array` module -//// instead. - -import gleam/bit_array - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn from_string(x: String) -> BitArray { - bit_array.from_string(x) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn byte_size(x: BitArray) -> Int { - bit_array.byte_size(x) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn append(to first: BitArray, suffix second: BitArray) -> BitArray { - bit_array.append(first, second) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn slice( - from string: BitArray, - at position: Int, - take length: Int, -) -> Result(BitArray, Nil) { - bit_array.slice(string, position, length) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn is_utf8(bits: BitArray) -> Bool { - bit_array.is_utf8(bits) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn to_string(bits: BitArray) -> Result(String, Nil) { - bit_array.to_string(bits) -} - -@deprecated("Please use the `gleam/bit_array` module instead.") -pub fn concat(bit_strings: List(BitArray)) -> BitArray { - bit_array.concat(bit_strings) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam deleted file mode 100644 index 91bd6b7..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/bool.gleam +++ /dev/null @@ -1,428 +0,0 @@ -//// A type with two possible values, `True` and `False`. Used to indicate whether -//// things are... true or false! -//// -//// Often is it clearer and offers more type safety to define a custom type -//// than to use `Bool`. For example, rather than having a `is_teacher: Bool` -//// field consider having a `role: SchoolRole` field where `SchoolRole` is a custom -//// type that can be either `Student` or `Teacher`. - -import gleam/order.{type Order} - -/// Returns the and of two bools, but it evaluates both arguments. -/// -/// It's the function equivalent of the `&&` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > and(True, True) -/// True -/// ``` -/// -/// ```gleam -/// > and(False, True) -/// False -/// ``` -/// -/// ```gleam -/// > False |> and(True) -/// False -/// ``` -/// -pub fn and(a: Bool, b: Bool) -> Bool { - a && b -} - -/// Returns the or of two bools, but it evaluates both arguments. -/// -/// It's the function equivalent of the `||` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > or(True, True) -/// True -/// ``` -/// -/// ```gleam -/// > or(False, True) -/// True -/// ``` -/// -/// ```gleam -/// > False |> or(True) -/// True -/// ``` -/// -pub fn or(a: Bool, b: Bool) -> Bool { - a || b -} - -/// Returns the opposite bool value. -/// -/// This is the same as the `!` or `not` operators in some other languages. -/// -/// ## Examples -/// -/// ```gleam -/// > negate(True) -/// False -/// ``` -/// -/// ```gleam -/// > negate(False) -/// True -/// ``` -/// -pub fn negate(bool: Bool) -> Bool { - case bool { - True -> False - False -> True - } -} - -/// Returns the nor of two bools. -/// -/// ## Examples -/// -/// ```gleam -/// > nor(False, False) -/// True -/// ``` -/// -/// ```gleam -/// > nor(False, True) -/// False -/// ``` -/// -/// ```gleam -/// > nor(True, False) -/// False -/// ``` -/// -/// ```gleam -/// > nor(True, True) -/// False -/// ``` -/// -pub fn nor(a: Bool, b: Bool) -> Bool { - case a, b { - False, False -> True - False, True -> False - True, False -> False - True, True -> False - } -} - -/// Returns the nand of two bools. -/// -/// ## Examples -/// -/// ```gleam -/// > nand(False, False) -/// True -/// ``` -/// -/// ```gleam -/// > nand(False, True) -/// True -/// ``` -/// -/// ```gleam -/// > nand(True, False) -/// True -/// ``` -/// -/// ```gleam -/// > nand(True, True) -/// False -/// ``` -/// -pub fn nand(a: Bool, b: Bool) -> Bool { - case a, b { - False, False -> True - False, True -> True - True, False -> True - True, True -> False - } -} - -/// Returns the exclusive or of two bools. -/// -/// ## Examples -/// -/// ```gleam -/// > exclusive_or(False, False) -/// False -/// ``` -/// -/// ```gleam -/// > exclusive_or(False, True) -/// True -/// ``` -/// -/// ```gleam -/// > exclusive_or(True, False) -/// True -/// ``` -/// -/// ```gleam -/// > exclusive_or(True, True) -/// False -/// ``` -/// -pub fn exclusive_or(a: Bool, b: Bool) -> Bool { - case a, b { - False, False -> False - False, True -> True - True, False -> True - True, True -> False - } -} - -/// Returns the exclusive nor of two bools. -/// -/// ## Examples -/// -/// ```gleam -/// > exclusive_nor(False, False) -/// True -/// ``` -/// -/// ```gleam -/// > exclusive_nor(False, True) -/// False -/// ``` -/// -/// ```gleam -/// > exclusive_nor(True, False) -/// False -/// ``` -/// -/// ```gleam -/// > exclusive_nor(True, True) -/// True -/// ``` -/// -pub fn exclusive_nor(a: Bool, b: Bool) -> Bool { - case a, b { - False, False -> True - False, True -> False - True, False -> False - True, True -> True - } -} - -/// Compares two bools and returns the first value's `Order` to the second. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/order -/// > compare(True, False) -/// order.Gt -/// ``` -/// -pub fn compare(a: Bool, with b: Bool) -> Order { - case a, b { - True, True -> order.Eq - True, False -> order.Gt - False, False -> order.Eq - False, True -> order.Lt - } -} - -/// Returns `True` if either argument's value is `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > max(True, False) -/// True -/// ``` -/// -/// ```gleam -/// > max(False, True) -/// True -/// ``` -/// -/// ```gleam -/// > max(False, False) -/// False -/// ``` -/// -pub fn max(a: Bool, b: Bool) -> Bool { - case a { - True -> True - False -> b - } -} - -/// Returns `False` if either bool value is `False`. -/// -/// ## Examples -/// -/// ```gleam -/// > min(True, False) -/// False -/// ``` -/// -/// ```gleam -/// > min(False, True) -/// False -/// -/// > min(False, False) -/// False -/// ``` -/// -pub fn min(a: Bool, b: Bool) -> Bool { - case a { - False -> False - True -> b - } -} - -/// Returns a numeric representation of the given bool. -/// -/// ## Examples -/// -/// ```gleam -/// > to_int(True) -/// 1 -/// -/// > to_int(False) -/// 0 -/// ``` -/// -pub fn to_int(bool: Bool) -> Int { - case bool { - False -> 0 - True -> 1 - } -} - -/// Returns a string representation of the given bool. -/// -/// ## Examples -/// -/// ```gleam -/// > to_string(True) -/// "True" -/// ``` -/// -/// ```gleam -/// > to_string(False) -/// "False" -/// ``` -/// -pub fn to_string(bool: Bool) -> String { - case bool { - False -> "False" - True -> "True" - } -} - -/// Run a callback function if the given bool is `False`, otherwise return a -/// default value. -/// -/// With a `use` expression this function can simulate the early-return pattern -/// found in some other programming languages. -/// -/// In a procedural language: -/// -/// ```js -/// if (predicate) return value; -/// // ... -/// ``` -/// -/// In Gleam with a `use` expression: -/// -/// ```gleam -/// use <- guard(when: predicate, return: value) -/// // ... -/// ``` -/// -/// Like everything in Gleam `use` is an expression, so it short circuits the -/// current block, not the entire function. As a result you can assign the value -/// to a variable: -/// -/// ```gleam -/// let x = { -/// use <- guard(when: predicate, return: value) -/// // ... -/// } -/// ``` -/// -/// Note that unlike in procedural languages the `return` value is evaluated -/// even when the predicate is `False`, so it is advisable not to perform -/// expensive computation there. -/// -/// -/// ## Examples -/// -/// ```gleam -/// > let name = "" -/// > use <- guard(when: name == "", return: "Welcome!") -/// > "Hello, " <> name -/// "Welcome!" -/// ``` -/// -/// ```gleam -/// > let name = "Kamaka" -/// > use <- guard(when: name == "", return: "Welcome!") -/// > "Hello, " <> name -/// "Hello, Kamaka" -/// ``` -/// -pub fn guard( - when requirement: Bool, - return consequence: t, - otherwise alternative: fn() -> t, -) -> t { - case requirement { - True -> consequence - False -> alternative() - } -} - -/// Runs a callback function if the given bool is `True`, otherwise runs an -/// alternative callback function. -/// -/// Useful when further computation should be delayed regardless of the given -/// bool's value. -/// -/// See [`guard`](#guard) for more info. -/// -/// ## Examples -/// -/// ```gleam -/// > let name = "Kamaka" -/// > let inquiry = fn() { "How may we address you?" } -/// > use <- lazy_guard(when: name == "", return: inquiry) -/// > "Hello, " <> name -/// "Hello, Kamaka" -/// ``` -/// -/// ```gleam -/// > import gleam/int -/// > let name = "" -/// > let greeting = fn() { "Hello, " <> name } -/// > use <- lazy_guard(when: name == "", otherwise: greeting) -/// > let number = int.random(1, 99) -/// > let name = "User " <> int.to_string(number) -/// > "Welcome, " <> name -/// "Welcome, User 54" -/// ``` -/// -pub fn lazy_guard( - when requirement: Bool, - return consequence: fn() -> a, - otherwise alternative: fn() -> a, -) -> a { - case requirement { - True -> consequence() - False -> alternative() - } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam deleted file mode 100644 index 20c145d..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/bytes_builder.gleam +++ /dev/null @@ -1,197 +0,0 @@ -//// BytesBuilder is a type used for efficiently concatenating bytes together -//// without copying. -//// -//// If we append one bit array to another the bit arrays must be copied to a -//// new location in memory so that they can sit together. This behaviour -//// enables efficient reading of the string but copying can be expensive, -//// especially if we want to join many bit arrays together. -//// -//// BytesBuilder is different in that it can be joined together in constant -//// time using minimal memory, and then can be efficiently converted to a -//// bit array using the `to_bit_array` function. -//// -//// Byte builders are always byte aligned, so that a number of bits that is not -//// divisible by 8 will be padded with 0s. -//// -//// On Erlang this type is compatible with Erlang's iolists. - -// TODO: pad bit arrays to byte boundaries when adding to a builder. -import gleam/string_builder.{type StringBuilder} -import gleam/list -import gleam/bit_array - -pub opaque type BytesBuilder { - Bytes(BitArray) - Text(StringBuilder) - Many(List(BytesBuilder)) -} - -/// Create an empty `BytesBuilder`. Useful as the start of a pipe chaining many -/// builders together. -/// -pub fn new() -> BytesBuilder { - concat([]) -} - -/// Prepends a bit array to the start of a builder. -/// -/// Runs in constant time. -/// -pub fn prepend(to second: BytesBuilder, prefix first: BitArray) -> BytesBuilder { - append_builder(from_bit_array(first), second) -} - -/// Appends a bit array to the end of a builder. -/// -/// Runs in constant time. -/// -pub fn append(to first: BytesBuilder, suffix second: BitArray) -> BytesBuilder { - append_builder(first, from_bit_array(second)) -} - -/// Prepends a builder onto the start of another. -/// -/// Runs in constant time. -/// -pub fn prepend_builder( - to second: BytesBuilder, - prefix first: BytesBuilder, -) -> BytesBuilder { - append_builder(first, second) -} - -/// Appends a builder onto the end of another. -/// -/// Runs in constant time. -/// -@external(erlang, "gleam_stdlib", "iodata_append") -pub fn append_builder( - to first: BytesBuilder, - suffix second: BytesBuilder, -) -> BytesBuilder { - case second { - Many(builders) -> Many([first, ..builders]) - _ -> Many([first, second]) - } -} - -/// Prepends a string onto the start of a builder. -/// -/// Runs in constant time when running on Erlang. -/// Runs in linear time with the length of the string otherwise. -/// -pub fn prepend_string( - to second: BytesBuilder, - prefix first: String, -) -> BytesBuilder { - append_builder(from_string(first), second) -} - -/// Appends a string onto the end of a builder. -/// -/// Runs in constant time when running on Erlang. -/// Runs in linear time with the length of the string otherwise. -/// -pub fn append_string( - to first: BytesBuilder, - suffix second: String, -) -> BytesBuilder { - append_builder(first, from_string(second)) -} - -/// Joins a list of builders into a single builder. -/// -/// Runs in constant time. -/// -@external(erlang, "gleam_stdlib", "identity") -pub fn concat(builders: List(BytesBuilder)) -> BytesBuilder { - Many(builders) -} - -/// Joins a list of bit arrays into a single builder. -/// -/// Runs in constant time. -/// -@external(erlang, "gleam_stdlib", "identity") -pub fn concat_bit_arrays(bits: List(BitArray)) -> BytesBuilder { - bits - |> list.map(fn(b) { from_bit_array(b) }) - |> concat() -} - -/// Creates a new builder from a string. -/// -/// Runs in constant time when running on Erlang. -/// Runs in linear time otherwise. -/// -@external(erlang, "gleam_stdlib", "wrap_list") -pub fn from_string(string: String) -> BytesBuilder { - Text(string_builder.from_string(string)) -} - -/// Creates a new builder from a string builder. -/// -/// Runs in constant time when running on Erlang. -/// Runs in linear time otherwise. -/// -@external(erlang, "gleam_stdlib", "wrap_list") -pub fn from_string_builder(builder: StringBuilder) -> BytesBuilder { - Text(builder) -} - -/// Creates a new builder from a bit array. -/// -/// Runs in constant time. -/// -@external(erlang, "gleam_stdlib", "wrap_list") -pub fn from_bit_array(bits: BitArray) -> BytesBuilder { - Bytes(bits) -} - -/// Turns an builder into a bit array. -/// -/// Runs in linear time. -/// -/// When running on Erlang this function is implemented natively by the -/// virtual machine and is highly optimised. -/// -@external(erlang, "erlang", "list_to_bitstring") -pub fn to_bit_array(builder: BytesBuilder) -> BitArray { - [[builder]] - |> to_list([]) - |> list.reverse - |> bit_array.concat -} - -fn to_list( - stack: List(List(BytesBuilder)), - acc: List(BitArray), -) -> List(BitArray) { - case stack { - [] -> acc - - [[], ..remaining_stack] -> to_list(remaining_stack, acc) - - [[Bytes(bits), ..rest], ..remaining_stack] -> - to_list([rest, ..remaining_stack], [bits, ..acc]) - - [[Text(builder), ..rest], ..remaining_stack] -> { - let bits = bit_array.from_string(string_builder.to_string(builder)) - to_list([rest, ..remaining_stack], [bits, ..acc]) - } - - [[Many(builders), ..rest], ..remaining_stack] -> - to_list([builders, rest, ..remaining_stack], acc) - } -} - -/// Returns the size of the builder's content in bytes. -/// -/// Runs in linear time. -/// -@external(erlang, "erlang", "iolist_size") -pub fn byte_size(builder: BytesBuilder) -> Int { - [[builder]] - |> to_list([]) - |> list.fold(0, fn(acc, builder) { bit_array.byte_size(builder) + acc }) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam deleted file mode 100644 index 280bf9d..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/dict.gleam +++ /dev/null @@ -1,544 +0,0 @@ -import gleam/option.{type Option} - -/// A dictionary of keys and values. -/// -/// Any type can be used for the keys and values of a dict, but all the keys -/// must be of the same type and all the values must be of the same type. -/// -/// Each key can only be present in a dict once. -/// -/// Dicts are not ordered in any way, and any unintentional ordering is not to -/// be relied upon in your code as it may change in future versions of Erlang -/// or Gleam. -/// -/// See [the Erlang map module](https://erlang.org/doc/man/maps.html) for more -/// information. -/// -pub type Dict(key, value) - -/// Determines the number of key-value pairs in the dict. -/// This function runs in constant time and does not need to iterate the dict. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> size() -/// 0 -/// ``` -/// -/// ```gleam -/// > new() |> insert("key", "value") |> size() -/// 1 -/// ``` -/// -pub fn size(dict: Dict(k, v)) -> Int { - do_size(dict) -} - -@external(erlang, "maps", "size") -@external(javascript, "../gleam_stdlib.mjs", "map_size") -fn do_size(a: Dict(k, v)) -> Int - -/// Converts the dict to a list of 2-element tuples `#(key, value)`, one for -/// each key-value pair in the dict. -/// -/// The tuples in the list have no specific order. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> to_list() -/// [] -/// ``` -/// -/// ```gleam -/// > new() |> insert("key", 0) |> to_list() -/// [#("key", 0)] -/// ``` -/// -pub fn to_list(dict: Dict(key, value)) -> List(#(key, value)) { - do_to_list(dict) -} - -@external(erlang, "maps", "to_list") -@external(javascript, "../gleam_stdlib.mjs", "map_to_list") -fn do_to_list(a: Dict(key, value)) -> List(#(key, value)) - -/// Converts a list of 2-element tuples `#(key, value)` to a dict. -/// -/// If two tuples have the same key the last one in the list will be the one -/// that is present in the dict. -/// -pub fn from_list(list: List(#(k, v))) -> Dict(k, v) { - do_from_list(list) -} - -@target(erlang) -@external(erlang, "maps", "from_list") -fn do_from_list(a: List(#(key, value))) -> Dict(key, value) - -@target(javascript) -fn fold_list_of_pair( - over list: List(#(k, v)), - from initial: Dict(k, v), -) -> Dict(k, v) { - case list { - [] -> initial - [x, ..rest] -> fold_list_of_pair(rest, insert(initial, x.0, x.1)) - } -} - -@target(javascript) -fn do_from_list(list: List(#(k, v))) -> Dict(k, v) { - fold_list_of_pair(list, new()) -} - -/// Determines whether or not a value present in the dict for a given key. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> insert("a", 0) |> has_key("a") -/// True -/// ``` -/// -/// ```gleam -/// > new() |> insert("a", 0) |> has_key("b") -/// False -/// ``` -/// -pub fn has_key(dict: Dict(k, v), key: k) -> Bool { - do_has_key(key, dict) -} - -@target(erlang) -@external(erlang, "maps", "is_key") -fn do_has_key(a: key, b: Dict(key, v)) -> Bool - -@target(javascript) -fn do_has_key(key: k, dict: Dict(k, v)) -> Bool { - get(dict, key) != Error(Nil) -} - -/// Creates a fresh dict that contains no values. -/// -pub fn new() -> Dict(key, value) { - do_new() -} - -@external(erlang, "maps", "new") -@external(javascript, "../gleam_stdlib.mjs", "new_map") -fn do_new() -> Dict(key, value) - -/// Fetches a value from a dict for a given key. -/// -/// The dict may not have a value for the key, so the value is wrapped in a -/// `Result`. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> insert("a", 0) |> get("a") -/// Ok(0) -/// ``` -/// -/// ```gleam -/// > new() |> insert("a", 0) |> get("b") -/// Error(Nil) -/// ``` -/// -pub fn get(from: Dict(key, value), get: key) -> Result(value, Nil) { - do_get(from, get) -} - -@external(erlang, "gleam_stdlib", "map_get") -@external(javascript, "../gleam_stdlib.mjs", "map_get") -fn do_get(a: Dict(key, value), b: key) -> Result(value, Nil) - -/// Inserts a value into the dict with the given key. -/// -/// If the dict already has a value for the given key then the value is -/// replaced with the new value. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> insert("a", 0) |> to_list -/// [#("a", 0)] -/// ``` -/// -/// ```gleam -/// > new() |> insert("a", 0) |> insert("a", 5) |> to_list -/// [#("a", 5)] -/// ``` -/// -pub fn insert(into dict: Dict(k, v), for key: k, insert value: v) -> Dict(k, v) { - do_insert(key, value, dict) -} - -@external(erlang, "maps", "put") -@external(javascript, "../gleam_stdlib.mjs", "map_insert") -fn do_insert(a: key, b: value, c: Dict(key, value)) -> Dict(key, value) - -/// Updates all values in a given dict by calling a given function on each key -/// and value. -/// -/// ## Examples -/// -/// ```gleam -/// > [#(3, 3), #(2, 4)] -/// > |> from_list -/// > |> map_values(fn(key, value) { key * value }) -/// [#(3, 9), #(2, 8)] -/// ``` -/// -pub fn map_values(in dict: Dict(k, v), with fun: fn(k, v) -> w) -> Dict(k, w) { - do_map_values(fun, dict) -} - -@target(erlang) -@external(erlang, "maps", "map") -fn do_map_values(a: fn(key, value) -> b, b: Dict(key, value)) -> Dict(key, b) - -@target(javascript) -fn do_map_values(f: fn(key, value) -> b, dict: Dict(key, value)) -> Dict(key, b) { - let f = fn(dict, k, v) { insert(dict, k, f(k, v)) } - dict - |> fold(from: new(), with: f) -} - -/// Gets a list of all keys in a given dict. -/// -/// Dicts are not ordered so the keys are not returned in any specific order. Do -/// not write code that relies on the order keys are returned by this function -/// as it may change in later versions of Gleam or Erlang. -/// -/// ## Examples -/// -/// ```gleam -/// > keys([#("a", 0), #("b", 1)]) -/// ["a", "b"] -/// ``` -/// -pub fn keys(dict: Dict(keys, v)) -> List(keys) { - do_keys(dict) -} - -@target(erlang) -@external(erlang, "maps", "keys") -fn do_keys(a: Dict(keys, v)) -> List(keys) - -@target(javascript) -fn reverse_and_concat(remaining, accumulator) { - case remaining { - [] -> accumulator - [item, ..rest] -> reverse_and_concat(rest, [item, ..accumulator]) - } -} - -@target(javascript) -fn do_keys_acc(list: List(#(k, v)), acc: List(k)) -> List(k) { - case list { - [] -> reverse_and_concat(acc, []) - [x, ..xs] -> do_keys_acc(xs, [x.0, ..acc]) - } -} - -@target(javascript) -fn do_keys(dict: Dict(k, v)) -> List(k) { - let list_of_pairs = to_list(dict) - do_keys_acc(list_of_pairs, []) -} - -/// Gets a list of all values in a given dict. -/// -/// Dicts are not ordered so the values are not returned in any specific order. Do -/// not write code that relies on the order values are returned by this function -/// as it may change in later versions of Gleam or Erlang. -/// -/// ## Examples -/// -/// ```gleam -/// > values(from_list([#("a", 0), #("b", 1)])) -/// [0, 1] -/// ``` -/// -pub fn values(dict: Dict(k, values)) -> List(values) { - do_values(dict) -} - -@target(erlang) -@external(erlang, "maps", "values") -fn do_values(a: Dict(k, values)) -> List(values) - -@target(javascript) -fn do_values_acc(list: List(#(k, v)), acc: List(v)) -> List(v) { - case list { - [] -> reverse_and_concat(acc, []) - [x, ..xs] -> do_values_acc(xs, [x.1, ..acc]) - } -} - -@target(javascript) -fn do_values(dict: Dict(k, v)) -> List(v) { - let list_of_pairs = to_list(dict) - do_values_acc(list_of_pairs, []) -} - -/// Creates a new dict from a given dict, minus any entries that a given function -/// returns `False` for. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([#("a", 0), #("b", 1)]) -/// > |> filter(fn(key, value) { value != 0 }) -/// from_list([#("b", 1)]) -/// ``` -/// -/// ```gleam -/// > from_list([#("a", 0), #("b", 1)]) -/// > |> filter(fn(key, value) { True }) -/// from_list([#("a", 0), #("b", 1)]) -/// ``` -/// -pub fn filter( - in dict: Dict(k, v), - keeping predicate: fn(k, v) -> Bool, -) -> Dict(k, v) { - do_filter(predicate, dict) -} - -@target(erlang) -@external(erlang, "maps", "filter") -fn do_filter(a: fn(key, value) -> Bool, b: Dict(key, value)) -> Dict(key, value) - -@target(javascript) -fn do_filter( - f: fn(key, value) -> Bool, - dict: Dict(key, value), -) -> Dict(key, value) { - let insert = fn(dict, k, v) { - case f(k, v) { - True -> insert(dict, k, v) - _ -> dict - } - } - dict - |> fold(from: new(), with: insert) -} - -/// Creates a new dict from a given dict, only including any entries for which the -/// keys are in a given list. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([#("a", 0), #("b", 1)]) -/// > |> take(["b"]) -/// from_list([#("b", 1)]) -/// ``` -/// -/// ```gleam -/// > from_list([#("a", 0), #("b", 1)]) -/// > |> take(["a", "b", "c"]) -/// from_list([#("a", 0), #("b", 1)]) -/// ``` -/// -pub fn take(from dict: Dict(k, v), keeping desired_keys: List(k)) -> Dict(k, v) { - do_take(desired_keys, dict) -} - -@target(erlang) -@external(erlang, "maps", "with") -fn do_take(a: List(k), b: Dict(k, v)) -> Dict(k, v) - -@target(javascript) -fn insert_taken( - dict: Dict(k, v), - desired_keys: List(k), - acc: Dict(k, v), -) -> Dict(k, v) { - let insert = fn(taken, key) { - case get(dict, key) { - Ok(value) -> insert(taken, key, value) - _ -> taken - } - } - case desired_keys { - [] -> acc - [x, ..xs] -> insert_taken(dict, xs, insert(acc, x)) - } -} - -@target(javascript) -fn do_take(desired_keys: List(k), dict: Dict(k, v)) -> Dict(k, v) { - insert_taken(dict, desired_keys, new()) -} - -/// Creates a new dict from a pair of given dicts by combining their entries. -/// -/// If there are entries with the same keys in both dicts the entry from the -/// second dict takes precedence. -/// -/// ## Examples -/// -/// ```gleam -/// > let a = from_list([#("a", 0), #("b", 1)]) -/// > let b = from_list([#("b", 2), #("c", 3)]) -/// > merge(a, b) -/// from_list([#("a", 0), #("b", 2), #("c", 3)]) -/// ``` -/// -pub fn merge(into dict: Dict(k, v), from new_entries: Dict(k, v)) -> Dict(k, v) { - do_merge(dict, new_entries) -} - -@target(erlang) -@external(erlang, "maps", "merge") -fn do_merge(a: Dict(k, v), b: Dict(k, v)) -> Dict(k, v) - -@target(javascript) -fn insert_pair(dict: Dict(k, v), pair: #(k, v)) -> Dict(k, v) { - insert(dict, pair.0, pair.1) -} - -@target(javascript) -fn fold_inserts(new_entries: List(#(k, v)), dict: Dict(k, v)) -> Dict(k, v) { - case new_entries { - [] -> dict - [x, ..xs] -> fold_inserts(xs, insert_pair(dict, x)) - } -} - -@target(javascript) -fn do_merge(dict: Dict(k, v), new_entries: Dict(k, v)) -> Dict(k, v) { - new_entries - |> to_list - |> fold_inserts(dict) -} - -/// Creates a new dict from a given dict with all the same entries except for the -/// one with a given key, if it exists. -/// -/// ## Examples -/// -/// ```gleam -/// > delete([#("a", 0), #("b", 1)], "a") -/// from_list([#("b", 1)]) -/// ``` -/// -/// ```gleam -/// > delete([#("a", 0), #("b", 1)], "c") -/// from_list([#("a", 0), #("b", 1)]) -/// ``` -/// -pub fn delete(from dict: Dict(k, v), delete key: k) -> Dict(k, v) { - do_delete(key, dict) -} - -@external(erlang, "maps", "remove") -@external(javascript, "../gleam_stdlib.mjs", "map_remove") -fn do_delete(a: k, b: Dict(k, v)) -> Dict(k, v) - -/// Creates a new dict from a given dict with all the same entries except any with -/// keys found in a given list. -/// -/// ## Examples -/// -/// ```gleam -/// > drop([#("a", 0), #("b", 1)], ["a"]) -/// from_list([#("b", 2)]) -/// ``` -/// -/// ```gleam -/// > delete([#("a", 0), #("b", 1)], ["c"]) -/// from_list([#("a", 0), #("b", 1)]) -/// ``` -/// -/// ```gleam -/// > drop([#("a", 0), #("b", 1)], ["a", "b", "c"]) -/// from_list([]) -/// ``` -/// -pub fn drop(from dict: Dict(k, v), drop disallowed_keys: List(k)) -> Dict(k, v) { - case disallowed_keys { - [] -> dict - [x, ..xs] -> drop(delete(dict, x), xs) - } -} - -/// Creates a new dict with one entry updated using a given function. -/// -/// If there was not an entry in the dict for the given key then the function -/// gets `None` as its argument, otherwise it gets `Some(value)`. -/// -/// ## Example -/// -/// ```gleam -/// > let increment = fn(x) { -/// > case x { -/// > Some(i) -> i + 1 -/// > None -> 0 -/// > } -/// > } -/// > let dict = from_list([#("a", 0)]) -/// > -/// > update(dict, "a", increment) -/// from_list([#("a", 1)]) -/// ``` -/// -/// ```gleam -/// > update(dict, "b", increment) -/// from_list([#("a", 0), #("b", 0)]) -/// ``` -/// -pub fn update( - in dict: Dict(k, v), - update key: k, - with fun: fn(Option(v)) -> v, -) -> Dict(k, v) { - dict - |> get(key) - |> option.from_result - |> fun - |> insert(dict, key, _) -} - -fn do_fold(list: List(#(k, v)), initial: acc, fun: fn(acc, k, v) -> acc) -> acc { - case list { - [] -> initial - [#(k, v), ..rest] -> do_fold(rest, fun(initial, k, v), fun) - } -} - -/// Combines all entries into a single value by calling a given function on each -/// one. -/// -/// Dicts are not ordered so the values are not returned in any specific order. Do -/// not write code that relies on the order entries are used by this function -/// as it may change in later versions of Gleam or Erlang. -/// -/// # Examples -/// -/// ```gleam -/// > let dict = from_list([#("a", 1), #("b", 3), #("c", 9)]) -/// > fold(dict, 0, fn(accumulator, key, value) { accumulator + value }) -/// 13 -/// ``` -/// -/// ```gleam -/// > import gleam/string.{append} -/// > fold(dict, "", fn(accumulator, key, value) { append(accumulator, key) }) -/// "abc" -/// ``` -/// -pub fn fold( - over dict: Dict(k, v), - from initial: acc, - with fun: fn(acc, k, v) -> acc, -) -> acc { - dict - |> to_list - |> do_fold(initial, fun) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam deleted file mode 100644 index c71c6f3..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/dynamic.gleam +++ /dev/null @@ -1,1508 +0,0 @@ -import gleam/int -import gleam/list -import gleam/dict.{type Dict} -import gleam/option.{type Option} -import gleam/result -import gleam/string_builder -@target(erlang) -import gleam/bit_array - -/// `Dynamic` data is data that we don't know the type of yet. -/// We likely get data like this from interop with Erlang, or from -/// IO with the outside world. -/// -pub type Dynamic - -/// Error returned when unexpected data is encountered -/// -pub type DecodeError { - DecodeError(expected: String, found: String, path: List(String)) -} - -pub type DecodeErrors = - List(DecodeError) - -pub type Decoder(t) = - fn(Dynamic) -> Result(t, DecodeErrors) - -/// Converts any Gleam data into `Dynamic` data. -/// -pub fn from(a) -> Dynamic { - do_from(a) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "identity") -fn do_from(a: anything) -> Dynamic - -/// Unsafely casts a Dynamic value into any other type. -/// -/// This is an escape hatch for the type system that may be useful when wrapping -/// native Erlang APIs. It is to be used as a last measure only! -/// -/// If you can avoid using this function, do! -/// -pub fn unsafe_coerce(a: Dynamic) -> anything { - do_unsafe_coerce(a) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "identity") -fn do_unsafe_coerce(a: Dynamic) -> a - -/// Decodes a `Dynamic` value from a `Dynamic` value. -/// -/// This function doesn't seem very useful at first, but it can be convenient -/// when you need to give a decoder function but you don't actually care what -/// the to-decode value is. -/// -pub fn dynamic(value: Dynamic) -> Result(Dynamic, List(DecodeError)) { - Ok(value) -} - -/// Checks to see whether a `Dynamic` value is a bit array, and returns that bit -/// array if it is. -/// -/// ## Examples -/// -/// ```gleam -/// > bit_array(from("Hello")) == bit_array.from_string("Hello") -/// True -/// ``` -/// -/// ```gleam -/// > bit_array(from(123)) -/// Error([DecodeError(expected: "BitArray", found: "Int", path: [])]) -/// ``` -/// -pub fn bit_array(from data: Dynamic) -> Result(BitArray, DecodeErrors) { - decode_bit_array(data) -} - -@deprecated("Please use `bit_array` instead") -pub fn bit_string(from data: Dynamic) -> Result(BitArray, DecodeErrors) { - bit_array(data) -} - -@external(erlang, "gleam_stdlib", "decode_bit_array") -@external(javascript, "../gleam_stdlib.mjs", "decode_bit_array") -fn decode_bit_array(a: Dynamic) -> Result(BitArray, DecodeErrors) - -/// Checks to see whether a `Dynamic` value is a string, and returns that string if -/// it is. -/// -/// ## Examples -/// -/// ```gleam -/// > string(from("Hello")) -/// Ok("Hello") -/// ``` -/// -/// ```gleam -/// > string(from(123)) -/// Error([DecodeError(expected: "String", found: "Int", path: [])]) -/// ``` -/// -pub fn string(from data: Dynamic) -> Result(String, DecodeErrors) { - decode_string(data) -} - -fn map_errors( - result: Result(t, DecodeErrors), - f: fn(DecodeError) -> DecodeError, -) -> Result(t, DecodeErrors) { - result.map_error(result, list.map(_, f)) -} - -@target(erlang) -fn decode_string(data: Dynamic) -> Result(String, DecodeErrors) { - bit_array(data) - |> map_errors(put_expected(_, "String")) - |> result.try(fn(raw) { - case bit_array.to_string(raw) { - Ok(string) -> Ok(string) - Error(Nil) -> - Error([DecodeError(expected: "String", found: "BitArray", path: [])]) - } - }) -} - -@target(erlang) -fn put_expected(error: DecodeError, expected: String) -> DecodeError { - DecodeError(..error, expected: expected) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "decode_string") -fn decode_string(a: Dynamic) -> Result(String, DecodeErrors) - -/// Return a string indicating the type of the dynamic value. -/// -/// ```gleam -/// > classify(from("Hello")) -/// "String" -/// ``` -/// -pub fn classify(data: Dynamic) -> String { - do_classify(data) -} - -@external(erlang, "gleam_stdlib", "classify_dynamic") -@external(javascript, "../gleam_stdlib.mjs", "classify_dynamic") -fn do_classify(a: Dynamic) -> String - -/// Checks to see whether a `Dynamic` value is an int, and returns that int if it -/// is. -/// -/// ## Examples -/// -/// ```gleam -/// > int(from(123)) -/// Ok(123) -/// ``` -/// -/// ```gleam -/// > int(from("Hello")) -/// Error([DecodeError(expected: "Int", found: "String", path: [])]) -/// ``` -/// -pub fn int(from data: Dynamic) -> Result(Int, DecodeErrors) { - decode_int(data) -} - -@external(erlang, "gleam_stdlib", "decode_int") -@external(javascript, "../gleam_stdlib.mjs", "decode_int") -fn decode_int(a: Dynamic) -> Result(Int, DecodeErrors) - -/// Checks to see whether a `Dynamic` value is a float, and returns that float if -/// it is. -/// -/// ## Examples -/// -/// ```gleam -/// > float(from(2.0)) -/// Ok(2.0) -/// ``` -/// -/// ```gleam -/// > float(from(123)) -/// Error([DecodeError(expected: "Float", found: "Int", path: [])]) -/// ``` -/// -pub fn float(from data: Dynamic) -> Result(Float, DecodeErrors) { - decode_float(data) -} - -@external(erlang, "gleam_stdlib", "decode_float") -@external(javascript, "../gleam_stdlib.mjs", "decode_float") -fn decode_float(a: Dynamic) -> Result(Float, DecodeErrors) - -/// Checks to see whether a `Dynamic` value is a bool, and returns that bool if -/// it is. -/// -/// ## Examples -/// -/// ```gleam -/// > bool(from(True)) -/// Ok(True) -/// ``` -/// -/// ```gleam -/// > bool(from(123)) -/// Error([DecodeError(expected: "Bool", found: "Int", path: [])]) -/// ``` -/// -pub fn bool(from data: Dynamic) -> Result(Bool, DecodeErrors) { - decode_bool(data) -} - -@external(erlang, "gleam_stdlib", "decode_bool") -@external(javascript, "../gleam_stdlib.mjs", "decode_bool") -fn decode_bool(a: Dynamic) -> Result(Bool, DecodeErrors) - -/// Checks to see whether a `Dynamic` value is a list, and returns that list if it -/// is. The types of the elements are not checked. -/// -/// If you wish to decode all the elements in the list use the `list` function -/// instead. -/// -/// ## Examples -/// -/// ```gleam -/// > shallow_list(from(["a", "b", "c"])) -/// Ok([from("a"), from("b"), from("c")]) -/// ``` -/// -/// ```gleam -/// > shallow_list(1) -/// Error([DecodeError(expected: "List", found: "Int", path: [])]) -/// ``` -/// -pub fn shallow_list(from value: Dynamic) -> Result(List(Dynamic), DecodeErrors) { - decode_list(value) -} - -@external(erlang, "gleam_stdlib", "decode_list") -@external(javascript, "../gleam_stdlib.mjs", "decode_list") -fn decode_list(a: Dynamic) -> Result(List(Dynamic), DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_result") -@external(javascript, "../gleam_stdlib.mjs", "decode_result") -fn decode_result(a: Dynamic) -> Result(Result(a, e), DecodeErrors) - -/// Checks to see whether a `Dynamic` value is a result of a particular type, and -/// returns that result if it is. -/// -/// The `ok` and `error` arguments are decoders for decoding the `Ok` and -/// `Error` values of the result. -/// -/// ## Examples -/// -/// ```gleam -/// > from(Ok(1)) -/// > |> result(ok: int, error: string) -/// Ok(Ok(1)) -/// ``` -/// -/// ```gleam -/// > from(Error("boom")) -/// > |> result(ok: int, error: string) -/// Ok(Error("boom")) -/// ``` -/// -/// ```gleam -/// > from(123) -/// > |> result(ok: int, error: string) -/// Error([DecodeError(expected: "Result", found: "Int", path: [])]) -/// ``` -/// -pub fn result( - ok decode_ok: Decoder(a), - error decode_error: Decoder(e), -) -> Decoder(Result(a, e)) { - fn(value) { - use inner_result <- result.try(decode_result(value)) - - case inner_result { - Ok(raw) -> { - use value <- result.try( - decode_ok(raw) - |> map_errors(push_path(_, "ok")), - ) - Ok(Ok(value)) - } - Error(raw) -> { - use value <- result.try( - decode_error(raw) - |> map_errors(push_path(_, "error")), - ) - Ok(Error(value)) - } - } - } -} - -/// Checks to see whether a `Dynamic` value is a list of a particular type, and -/// returns that list if it is. -/// -/// The second argument is a decoder function used to decode the elements of -/// the list. The list is only decoded if all elements in the list can be -/// successfully decoded using this function. -/// -/// If you do not wish to decode all the elements in the list use the `shallow_list` -/// function instead. -/// -/// ## Examples -/// -/// ```gleam -/// > from(["a", "b", "c"]) -/// > |> list(of: string) -/// Ok(["a", "b", "c"]) -/// ``` -/// -/// ```gleam -/// > from([1, 2, 3]) -/// > |> list(of: string) -/// Error([DecodeError(expected: "String", found: "Int", path: ["*"])]) -/// ``` -/// -/// ```gleam -/// > from("ok") -/// > |> list(of: string) -/// Error([DecodeError(expected: "List", found: "String", path: [])]) -/// ``` -/// -pub fn list( - of decoder_type: fn(Dynamic) -> Result(inner, DecodeErrors), -) -> Decoder(List(inner)) { - fn(dynamic) { - use list <- result.try(shallow_list(dynamic)) - list - |> list.try_map(decoder_type) - |> map_errors(push_path(_, "*")) - } -} - -/// Checks to see if a `Dynamic` value is a nullable version of a particular -/// type, and returns a corresponding `Option` if it is. -/// -/// ## Examples -/// -/// ```gleam -/// > from("Hello") -/// > |> optional(string) -/// Ok(Some("Hello")) -/// ``` -/// -/// ```gleam -/// > from("Hello") -/// > |> optional(string) -/// Ok(Some("Hello")) -/// ``` -/// -/// ```gleam -/// > from(atom.from_string("null")) -/// > |> optional(string) -/// Ok(None) -/// ``` -/// -/// ```gleam -/// > from(atom.from_string("nil")) -/// > |> optional(string) -/// Ok(None) -/// ``` -/// -/// ```gleam -/// > from(atom.from_string("undefined")) -/// > |> optional(string) -/// Ok(None) -/// ``` -/// -/// ```gleam -/// > from(123) -/// > |> optional(string) -/// Error([DecodeError(expected: "String", found: "Int", path: [])]) -/// ``` -/// -pub fn optional(of decode: Decoder(inner)) -> Decoder(Option(inner)) { - fn(value) { decode_optional(value, decode) } -} - -@external(erlang, "gleam_stdlib", "decode_option") -@external(javascript, "../gleam_stdlib.mjs", "decode_option") -fn decode_optional(a: Dynamic, b: Decoder(a)) -> Result(Option(a), DecodeErrors) - -/// Checks to see if a `Dynamic` value is a map with a specific field, and returns -/// the value of that field if it is. -/// -/// This will not succeed on a record. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/dict -/// > dict.new() -/// > |> dict.insert("Hello", "World") -/// > |> from -/// > |> field(named: "Hello", of: string) -/// Ok("World") -/// ``` -/// -/// ```gleam -/// > from(123) -/// > |> field("Hello", string) -/// Error([DecodeError(expected: "Map", found: "Int", path: [])]) -/// ``` -/// -pub fn field(named name: a, of inner_type: Decoder(t)) -> Decoder(t) { - fn(value) { - let missing_field_error = - DecodeError(expected: "field", found: "nothing", path: []) - - use maybe_inner <- result.try(decode_field(value, name)) - maybe_inner - |> option.to_result([missing_field_error]) - |> result.try(inner_type) - |> map_errors(push_path(_, name)) - } -} - -/// Checks to see if a `Dynamic` value is a map with a specific field. -/// If the map does not have the specified field, returns an `Ok(None)` instead of failing; otherwise, -/// returns the decoded field wrapped in `Some(_)`. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/dict -/// > dict.new() -/// > |> dict.insert("Hello", "World") -/// > |> from -/// > |> field(named: "Hello", of: string) -/// Ok(Some("World")) -/// ``` -/// -/// ```gleam -/// > import gleam/dict -/// > dict.new() -/// > |> from -/// > |> field(named: "Hello", of: string) -/// Ok(None) -/// ``` -/// -/// ```gleam -/// > from(123) -/// > |> field("Hello", string) -/// Error([DecodeError(expected: "Map", found: "Int", path: [])]) -/// ``` -/// -pub fn optional_field( - named name: a, - of inner_type: Decoder(t), -) -> Decoder(Option(t)) { - fn(value) { - use maybe_inner <- result.try(decode_field(value, name)) - case maybe_inner { - option.None -> Ok(option.None) - option.Some(dynamic_inner) -> - dynamic_inner - |> decode_optional(inner_type) - |> map_errors(push_path(_, name)) - } - } -} - -@external(erlang, "gleam_stdlib", "decode_field") -@external(javascript, "../gleam_stdlib.mjs", "decode_field") -fn decode_field(a: Dynamic, b: name) -> Result(Option(Dynamic), DecodeErrors) - -/// Checks to see if a `Dynamic` value is a tuple large enough to have a certain -/// index, and returns the value of that index if it is. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> element(0, int) -/// Ok(from(1)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> element(2, int) -/// Error([ -/// DecodeError( -/// expected: "Tuple of at least 3 elements", -/// found: "Tuple of 2 elements", -/// path: [], -/// ), -/// ]) -/// ``` -/// -pub fn element(at index: Int, of inner_type: Decoder(t)) -> Decoder(t) { - fn(data: Dynamic) { - use tuple <- result.try(decode_tuple(data)) - let size = tuple_size(tuple) - use data <- result.try(case index >= 0 { - True -> - case index < size { - True -> tuple_get(tuple, index) - False -> at_least_decode_tuple_error(index + 1, data) - } - False -> - case int.absolute_value(index) <= size { - True -> tuple_get(tuple, size + index) - False -> at_least_decode_tuple_error(int.absolute_value(index), data) - } - }) - inner_type(data) - |> map_errors(push_path(_, index)) - } -} - -fn at_least_decode_tuple_error( - size: Int, - data: Dynamic, -) -> Result(a, DecodeErrors) { - let s = case size { - 1 -> "" - _ -> "s" - } - let error = - ["Tuple of at least ", int.to_string(size), " element", s] - |> string_builder.from_strings - |> string_builder.to_string - |> DecodeError(found: classify(data), path: []) - Error([error]) -} - -// A tuple of unknown size -type UnknownTuple - -@external(erlang, "gleam_stdlib", "decode_tuple") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple") -fn decode_tuple(a: Dynamic) -> Result(UnknownTuple, DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_tuple2") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple2") -fn decode_tuple2(a: Dynamic) -> Result(#(Dynamic, Dynamic), DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_tuple3") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple3") -fn decode_tuple3( - a: Dynamic, -) -> Result(#(Dynamic, Dynamic, Dynamic), DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_tuple4") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple4") -fn decode_tuple4( - a: Dynamic, -) -> Result(#(Dynamic, Dynamic, Dynamic, Dynamic), DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_tuple5") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple5") -fn decode_tuple5( - a: Dynamic, -) -> Result(#(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), DecodeErrors) - -@external(erlang, "gleam_stdlib", "decode_tuple6") -@external(javascript, "../gleam_stdlib.mjs", "decode_tuple6") -fn decode_tuple6( - a: Dynamic, -) -> Result( - #(Dynamic, Dynamic, Dynamic, Dynamic, Dynamic, Dynamic), - DecodeErrors, -) - -@external(erlang, "gleam_stdlib", "tuple_get") -@external(javascript, "../gleam_stdlib.mjs", "tuple_get") -fn tuple_get(a: UnknownTuple, b: Int) -> Result(Dynamic, DecodeErrors) - -@external(erlang, "gleam_stdlib", "size_of_tuple") -@external(javascript, "../gleam_stdlib.mjs", "length") -fn tuple_size(a: UnknownTuple) -> Int - -fn tuple_errors( - result: Result(a, List(DecodeError)), - name: String, -) -> List(DecodeError) { - case result { - Ok(_) -> [] - Error(errors) -> list.map(errors, push_path(_, name)) - } -} - -fn push_path(error: DecodeError, name: t) -> DecodeError { - let name = from(name) - let decoder = any([string, fn(x) { result.map(int(x), int.to_string) }]) - let name = case decoder(name) { - Ok(name) -> name - Error(_) -> - ["<", classify(name), ">"] - |> string_builder.from_strings - |> string_builder.to_string - } - DecodeError(..error, path: [name, ..error.path]) -} - -/// Checks to see if a `Dynamic` value is a 2-element tuple, list or array containing -/// specifically typed elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> tuple2(int, int) -/// Ok(#(1, 2)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2.0)) -/// > |> tuple2(int, float) -/// Ok(#(1, 2.0)) -/// ``` -/// -/// ```gleam -/// > from([1, 2]) -/// > |> tuple2(int, int) -/// Ok(#(1, 2)) -/// ``` -/// -/// ```gleam -/// > from([from(1), from(2.0)]) -/// > |> tuple2(int, float) -/// Ok(#(1, 2.0)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2, 3)) -/// > |> tuple2(int, float) -/// Error([ -/// DecodeError(expected: "Tuple of 2 elements", found: "Tuple of 3 elements", path: []), -/// ]) -/// ``` -/// -/// ```gleam -/// > from("") -/// > |> tuple2(int, float) -/// Error([DecodeError(expected: "Tuple of 2 elements", found: "String", path: [])]) -/// ``` -/// -pub fn tuple2( - first decode1: Decoder(a), - second decode2: Decoder(b), -) -> Decoder(#(a, b)) { - fn(value) { - use #(a, b) <- result.try(decode_tuple2(value)) - case decode1(a), decode2(b) { - Ok(a), Ok(b) -> Ok(#(a, b)) - a, b -> - tuple_errors(a, "0") - |> list.append(tuple_errors(b, "1")) - |> Error - } - } -} - -/// Checks to see if a `Dynamic` value is a 3-element tuple, list or array containing -/// specifically typed elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2, 3)) -/// > |> tuple3(int, int, int) -/// Ok(#(1, 2, 3)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2.0, "3")) -/// > |> tuple3(int, float, string) -/// Ok(#(1, 2.0, "3")) -/// ``` -/// -/// ```gleam -/// > from([1, 2, 3]) -/// > |> tuple3(int, int, int) -/// Ok(#(1, 2, 3)) -/// ``` -/// -/// ```gleam -/// > from([from(1), from(2.0), from("3")]) -/// > |> tuple3(int, float, string) -/// Ok(#(1, 2.0, "3")) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> tuple3(int, float, string) -/// Error([ -/// DecodeError(expected: "Tuple of 3 elements", found: "Tuple of 2 elements", path: [])), -/// ]) -/// ``` -/// -/// ```gleam -/// > from("") -/// > |> tuple3(int, float, string) -/// Error([ -/// DecodeError(expected: "Tuple of 3 elements", found: "String", path: []), -/// ]) -/// ``` -/// -pub fn tuple3( - first decode1: Decoder(a), - second decode2: Decoder(b), - third decode3: Decoder(c), -) -> Decoder(#(a, b, c)) { - fn(value) { - use #(a, b, c) <- result.try(decode_tuple3(value)) - case decode1(a), decode2(b), decode3(c) { - Ok(a), Ok(b), Ok(c) -> Ok(#(a, b, c)) - a, b, c -> - tuple_errors(a, "0") - |> list.append(tuple_errors(b, "1")) - |> list.append(tuple_errors(c, "2")) - |> Error - } - } -} - -/// Checks to see if a `Dynamic` value is a 4-element tuple, list or array containing -/// specifically typed elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2, 3, 4)) -/// > |> tuple4(int, int, int, int) -/// Ok(#(1, 2, 3, 4)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2.0, "3", 4)) -/// > |> tuple4(int, float, string, int) -/// Ok(#(1, 2.0, "3", 4)) -/// ``` -/// -/// ```gleam -/// > from([1, 2, 3, 4]) -/// > |> tuple4(int, int, int, int) -/// Ok(#(1, 2, 3, 4)) -/// ``` -/// -/// ```gleam -/// > from([from(1), from(2.0), from("3"), from(4)]) -/// > |> tuple4(int, float, string, int) -/// Ok(#(1, 2.0, "3", 4)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> tuple4(int, float, string, int) -/// Error([ -/// DecodeError(expected: "Tuple of 4 elements", found: "Tuple of 2 elements", path: []), -/// ]) -/// ``` -/// -/// ```gleam -/// > from("") -/// > |> tuple4(int, float, string, int) -/// Error([ -/// DecodeError(expected: "Tuple of 4 elements", found: "String", path: []), -/// ]) -/// ``` -/// -pub fn tuple4( - first decode1: Decoder(a), - second decode2: Decoder(b), - third decode3: Decoder(c), - fourth decode4: Decoder(d), -) -> Decoder(#(a, b, c, d)) { - fn(value) { - use #(a, b, c, d) <- result.try(decode_tuple4(value)) - case decode1(a), decode2(b), decode3(c), decode4(d) { - Ok(a), Ok(b), Ok(c), Ok(d) -> Ok(#(a, b, c, d)) - a, b, c, d -> - tuple_errors(a, "0") - |> list.append(tuple_errors(b, "1")) - |> list.append(tuple_errors(c, "2")) - |> list.append(tuple_errors(d, "3")) - |> Error - } - } -} - -/// Checks to see if a `Dynamic` value is a 5-element tuple, list or array containing -/// specifically typed elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2, 3, 4, 5)) -/// > |> tuple5(int, int, int, int, int) -/// Ok(#(1, 2, 3, 4, 5)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2.0, "3", 4, 5)) -/// > |> tuple5(int, float, string, int, int) -/// Ok(#(1, 2.0, "3", 4, 5)) -/// ``` -/// -/// ```gleam -/// > from([1, 2, 3, 4, 5]) -/// > |> tuple5(int, int, int, int, int) -/// Ok(#(1, 2, 3, 4, 5)) -/// ``` -/// -/// ```gleam -/// > from([from(1), from(2.0), from("3"), from(4), from(True)]) -/// > |> tuple5(int, float, string, int, bool) -/// Ok(#(1, 2.0, "3", 4, True)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> tuple5(int, float, string, int, int) -/// Error([ -/// DecodeError(expected: "Tuple of 5 elements", found: "Tuple of 2 elements", path: [])), -/// ]) -/// ``` -/// -/// ```gleam -/// > from("") -/// > |> tuple5(int, float, string, int, int) -/// Error([DecodeError(expected: "Tuple of 5 elements", found: "String", path: [])]) -/// ``` -/// -pub fn tuple5( - first decode1: Decoder(a), - second decode2: Decoder(b), - third decode3: Decoder(c), - fourth decode4: Decoder(d), - fifth decode5: Decoder(e), -) -> Decoder(#(a, b, c, d, e)) { - fn(value) { - use #(a, b, c, d, e) <- result.try(decode_tuple5(value)) - case decode1(a), decode2(b), decode3(c), decode4(d), decode5(e) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e) -> Ok(#(a, b, c, d, e)) - a, b, c, d, e -> - tuple_errors(a, "0") - |> list.append(tuple_errors(b, "1")) - |> list.append(tuple_errors(c, "2")) - |> list.append(tuple_errors(d, "3")) - |> list.append(tuple_errors(e, "4")) - |> Error - } - } -} - -/// Checks to see if a `Dynamic` value is a 6-element tuple, list or array containing -/// specifically typed elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2, 3, 4, 5, 6)) -/// > |> tuple6(int, int, int, int, int, int) -/// Ok(#(1, 2, 3, 4, 5, 6)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2.0, "3", 4, 5, 6)) -/// > |> tuple6(int, float, string, int, int, int) -/// Ok(#(1, 2.0, "3", 4, 5, 6)) -/// ``` -/// -/// ```gleam -/// > from([1, 2, 3, 4, 5, 6]) -/// > |> tuple6(int, int, int, int, int, int) -/// Ok(#(1, 2, 3, 4, 5, 6)) -/// ``` -/// -/// ```gleam -/// > from([from(1), from(2.0), from("3"), from(4), from(True), from(False)]) -/// > |> tuple6(int, float, string, int, bool, bool) -/// Ok(#(1, 2.0, "3", 4, True, False)) -/// ``` -/// -/// ```gleam -/// > from(#(1, 2)) -/// > |> tuple6(int, float, string, int, int, int) -/// Error([ -/// DecodeError(expected: "Tuple of 6 elements", found: "Tuple of 2 elements", path: []), -/// ]) -/// ``` -/// -/// ```gleam -/// > from("") -/// > |> tuple6(int, float, string, int, int, int) -/// Error([DecodeError(expected: "Tuple of 6 elements", found: "String", path: [])]) -/// ``` -/// -pub fn tuple6( - first decode1: Decoder(a), - second decode2: Decoder(b), - third decode3: Decoder(c), - fourth decode4: Decoder(d), - fifth decode5: Decoder(e), - sixth decode6: Decoder(f), -) -> Decoder(#(a, b, c, d, e, f)) { - fn(value) { - use #(a, b, c, d, e, f) <- result.try(decode_tuple6(value)) - case - decode1(a), - decode2(b), - decode3(c), - decode4(d), - decode5(e), - decode6(f) - { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f) -> Ok(#(a, b, c, d, e, f)) - a, b, c, d, e, f -> - tuple_errors(a, "0") - |> list.append(tuple_errors(b, "1")) - |> list.append(tuple_errors(c, "2")) - |> list.append(tuple_errors(d, "3")) - |> list.append(tuple_errors(e, "4")) - |> list.append(tuple_errors(f, "5")) - |> Error - } - } -} - -/// Checks to see if a `Dynamic` value is a dict. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/dict -/// > dict.new() |> from |> map(string, int) -/// Ok(dict.new()) -/// ``` -/// -/// ```gleam -/// > from(1) |> map(string, int) -/// Error(DecodeError(expected: "Map", found: "Int", path: [])) -/// ``` -/// -/// ```gleam -/// > from("") |> map(string, int) -/// Error(DecodeError(expected: "Map", found: "String", path: [])) -/// ``` -/// -pub fn dict( - of key_type: Decoder(k), - to value_type: Decoder(v), -) -> Decoder(Dict(k, v)) { - fn(value) { - use map <- result.try(decode_map(value)) - use pairs <- result.try( - map - |> dict.to_list - |> list.try_map(fn(pair) { - let #(k, v) = pair - use k <- result.try( - key_type(k) - |> map_errors(push_path(_, "keys")), - ) - use v <- result.try( - value_type(v) - |> map_errors(push_path(_, "values")), - ) - Ok(#(k, v)) - }), - ) - Ok(dict.from_list(pairs)) - } -} - -@deprecated("Use `dict` instead") -pub fn map( - of key_type: Decoder(k), - to value_type: Decoder(v), -) -> Decoder(Dict(k, v)) { - dict(key_type, value_type) -} - -@external(erlang, "gleam_stdlib", "decode_map") -@external(javascript, "../gleam_stdlib.mjs", "decode_map") -fn decode_map(a: Dynamic) -> Result(Dict(Dynamic, Dynamic), DecodeErrors) - -/// Joins multiple decoders into one. When run they will each be tried in turn -/// until one succeeds, or they all fail. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/result -/// > let bool_or_string = any(of: [ -/// > string, -/// > fn(x) { result.map(bool(x), fn(_) { "a bool" }) } -/// > ]) -/// > bool_or_string(from("ok")) -/// Ok("ok") -/// ``` -/// -/// ```gleam -/// > bool_or_string(from(True)) -/// Ok("a bool") -/// ``` -/// -/// ```gleam -/// > bool_or_string(from(1)) -/// Error(DecodeError(expected: "another type", found: "Int", path: [])) -/// ``` -/// -pub fn any(of decoders: List(Decoder(t))) -> Decoder(t) { - fn(data) { - case decoders { - [] -> - Error([ - DecodeError(found: classify(data), expected: "another type", path: []), - ]) - - [decoder, ..decoders] -> - case decoder(data) { - Ok(decoded) -> Ok(decoded) - Error(_) -> any(decoders)(data) - } - } - } -} - -/// Decode 1 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.0, "3")) -/// > |> decode1(MyRecord, element(0, int)) -/// Ok(MyRecord(1)) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "")) -/// > |> decode1(MyRecord, element(0, int)) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// ]) -/// ``` -/// -pub fn decode1(constructor: fn(t1) -> t, t1: Decoder(t1)) -> Decoder(t) { - fn(value) { - case t1(value) { - Ok(a) -> Ok(constructor(a)) - a -> Error(all_errors(a)) - } - } -} - -/// Decode 2 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.0, "3")) -/// > |> decode2(MyRecord, element(0, int), element(1, float)) -/// Ok(MyRecord(1, 2.0)) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "")) -/// > |> decode2(MyRecord, element(0, int), element(1, float)) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode2( - constructor: fn(t1, t2) -> t, - t1: Decoder(t1), - t2: Decoder(t2), -) -> Decoder(t) { - fn(value) { - case t1(value), t2(value) { - Ok(a), Ok(b) -> Ok(constructor(a, b)) - a, b -> Error(list.concat([all_errors(a), all_errors(b)])) - } - } -} - -/// Decode 3 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.0, "3")) -/// > |> decode3(MyRecord, element(0, int), element(1, float), element(2, string)) -/// Ok(MyRecord(1, 2.0, "3")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "")) -/// > |> decode3(MyRecord, element(0, int), element(1, float), element(2, string)) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode3( - constructor: fn(t1, t2, t3) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), -) -> Decoder(t) { - fn(value) { - case t1(value), t2(value), t3(value) { - Ok(a), Ok(b), Ok(c) -> Ok(constructor(a, b, c)) - a, b, c -> - Error(list.concat([all_errors(a), all_errors(b), all_errors(c)])) - } - } -} - -/// Decode 4 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4")) -/// > |> decode4( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "")) -/// > |> decode4( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode4( - constructor: fn(t1, t2, t3, t4) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x) { - Ok(a), Ok(b), Ok(c), Ok(d) -> Ok(constructor(a, b, c, d)) - a, b, c, d -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - ])) - } - } -} - -/// Decode 5 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4", "5")) -/// > |> decode5( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4", "5")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "", "")) -/// > |> decode5( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode5( - constructor: fn(t1, t2, t3, t4, t5) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), - t5: Decoder(t5), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x), t5(x) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e) -> Ok(constructor(a, b, c, d, e)) - a, b, c, d, e -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - all_errors(e), - ])) - } - } -} - -/// Decode 6 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4", "5", "6")) -/// > |> decode6( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "", "", "")) -/// > |> decode6( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode6( - constructor: fn(t1, t2, t3, t4, t5, t6) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), - t5: Decoder(t5), - t6: Decoder(t6), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f) -> - Ok(constructor(a, b, c, d, e, f)) - a, b, c, d, e, f -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - all_errors(e), - all_errors(f), - ])) - } - } -} - -/// Decode 7 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4", "5", "6")) -/// > |> decode7( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "", "", "", "")) -/// > |> decode7( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode7( - constructor: fn(t1, t2, t3, t4, t5, t6, t7) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), - t5: Decoder(t5), - t6: Decoder(t6), - t7: Decoder(t7), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g) -> - Ok(constructor(a, b, c, d, e, f, g)) - a, b, c, d, e, f, g -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - all_errors(e), - all_errors(f), - all_errors(g), - ])) - } - } -} - -/// Decode 8 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4", "5", "6", "7", "8")) -/// > |> decode8( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > element(7, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7", "8")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "", "", "", "", "")) -/// > |> decode8( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > element(7, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode8( - constructor: fn(t1, t2, t3, t4, t5, t6, t7, t8) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), - t5: Decoder(t5), - t6: Decoder(t6), - t7: Decoder(t7), - t8: Decoder(t8), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x), t8(x) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g), Ok(h) -> - Ok(constructor(a, b, c, d, e, f, g, h)) - a, b, c, d, e, f, g, h -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - all_errors(e), - all_errors(f), - all_errors(g), - all_errors(h), - ])) - } - } -} - -/// Decode 9 values from a `Dynamic` value. -/// -/// ## Examples -/// -/// ```gleam -/// > from(#(1, 2.1, "3", "4", "5", "6", "7", "8", "9")) -/// > |> decode9( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > element(7, string), -/// > element(8, string), -/// > ) -/// Ok(MyRecord(1, 2.1, "3", "4", "5", "6", "7", "8", "9")) -/// ``` -/// -/// ```gleam -/// > from(#("", "", "", "", "", "", "", "", "")) -/// > |> decode9( -/// > MyRecord, -/// > element(0, int), -/// > element(1, float), -/// > element(2, string), -/// > element(3, string), -/// > element(4, string), -/// > element(5, string), -/// > element(6, string), -/// > element(7, string), -/// > element(8, string), -/// > ) -/// Error([ -/// DecodeError(expected: "Int", found: "String", path: ["0"]), -/// DecodeError(expected: "Float", found: "String", path: ["1"]), -/// ]) -/// ``` -/// -pub fn decode9( - constructor: fn(t1, t2, t3, t4, t5, t6, t7, t8, t9) -> t, - t1: Decoder(t1), - t2: Decoder(t2), - t3: Decoder(t3), - t4: Decoder(t4), - t5: Decoder(t5), - t6: Decoder(t6), - t7: Decoder(t7), - t8: Decoder(t8), - t9: Decoder(t9), -) -> Decoder(t) { - fn(x: Dynamic) { - case t1(x), t2(x), t3(x), t4(x), t5(x), t6(x), t7(x), t8(x), t9(x) { - Ok(a), Ok(b), Ok(c), Ok(d), Ok(e), Ok(f), Ok(g), Ok(h), Ok(i) -> - Ok(constructor(a, b, c, d, e, f, g, h, i)) - a, b, c, d, e, f, g, h, i -> - Error(list.concat([ - all_errors(a), - all_errors(b), - all_errors(c), - all_errors(d), - all_errors(e), - all_errors(f), - all_errors(g), - all_errors(h), - all_errors(i), - ])) - } - } -} - -fn all_errors(result: Result(a, List(DecodeError))) -> List(DecodeError) { - case result { - Ok(_) -> [] - Error(errors) -> errors - } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam deleted file mode 100644 index 5d62419..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/float.gleam +++ /dev/null @@ -1,546 +0,0 @@ -//// Functions for working with floats. -//// -//// ## Division by zero -//// -//// Gleam runs on the Erlang virtual machine, which does not follow the IEEE -//// 754 standard for floating point arithmetic and does not have an `Infinity` -//// value. In Erlang division by zero results in a crash, however Gleam does -//// not have partial functions and operators in core so instead division by zero -//// returns zero, a behaviour taken from Pony, Coq, and Lean. -//// -//// This may seem unexpected at first, but it is no less mathematically valid -//// than crashing or returning a special value. Division by zero is undefined -//// in mathematics. - -import gleam/order.{type Order} - -/// Attempts to parse a string as a `Float`, returning `Error(Nil)` if it was -/// not possible. -/// -/// ## Examples -/// -/// ```gleam -/// > parse("2.3") -/// Ok(2.3) -/// ``` -/// -/// ```gleam -/// > parse("ABC") -/// Error(Nil) -/// ``` -/// -pub fn parse(string: String) -> Result(Float, Nil) { - do_parse(string) -} - -@external(erlang, "gleam_stdlib", "parse_float") -@external(javascript, "../gleam_stdlib.mjs", "parse_float") -fn do_parse(a: String) -> Result(Float, Nil) - -/// Returns the string representation of the provided `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > to_string(2.3) -/// "2.3" -/// ``` -/// -pub fn to_string(x: Float) -> String { - do_to_string(x) -} - -@external(erlang, "gleam_stdlib", "float_to_string") -@external(javascript, "../gleam_stdlib.mjs", "float_to_string") -fn do_to_string(a: Float) -> String - -/// Restricts a `Float` between a lower and upper bound. -/// -/// ## Examples -/// -/// ```gleam -/// > clamp(1.2, min: 1.4, max: 1.6) -/// 1.4 -/// ``` -/// -pub fn clamp(x: Float, min min_bound: Float, max max_bound: Float) -> Float { - x - |> min(max_bound) - |> max(min_bound) -} - -/// Compares two `Float`s, returning an `Order`: -/// `Lt` for lower than, `Eq` for equals, or `Gt` for greater than. -/// -/// ## Examples -/// -/// ```gleam -/// > compare(2.0, 2.3) -/// Lt -/// ``` -/// -/// To handle -/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems) -/// you may use [`loosely_compare`](#loosely_compare) instead. -/// -pub fn compare(a: Float, with b: Float) -> Order { - case a == b { - True -> order.Eq - False -> - case a <. b { - True -> order.Lt - False -> order.Gt - } - } -} - -/// Compares two `Float`s within a tolerance, returning an `Order`: -/// `Lt` for lower than, `Eq` for equals, or `Gt` for greater than. -/// -/// This function allows Float comparison while handling -/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems). -/// -/// Notice: For `Float`s the tolerance won't be exact: -/// `5.3 - 5.0` is not exactly `0.3`. -/// -/// ## Examples -/// -/// ```gleam -/// > loosely_compare(5.0, with: 5.3, tolerating: 0.5) -/// Eq -/// ``` -/// -/// If you want to check only for equality you may use -/// [`loosely_equals`](#loosely_equals) instead. -/// -pub fn loosely_compare( - a: Float, - with b: Float, - tolerating tolerance: Float, -) -> Order { - let difference = absolute_value(a -. b) - case difference <=. tolerance { - True -> order.Eq - False -> compare(a, b) - } -} - -/// Checks for equality of two `Float`s within a tolerance, -/// returning an `Bool`. -/// -/// This function allows Float comparison while handling -/// [Floating Point Imprecision](https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems). -/// -/// Notice: For `Float`s the tolerance won't be exact: -/// `5.3 - 5.0` is not exactly `0.3`. -/// -/// ## Examples -/// -/// ```gleam -/// > loosely_equals(5.0, with: 5.3, tolerating: 0.5) -/// True -/// ``` -/// -/// ```gleam -/// > loosely_equals(5.0, with: 5.1, tolerating: 0.1) -/// False -/// ``` -/// -pub fn loosely_equals( - a: Float, - with b: Float, - tolerating tolerance: Float, -) -> Bool { - let difference = absolute_value(a -. b) - difference <=. tolerance -} - -/// Compares two `Float`s, returning the smaller of the two. -/// -/// ## Examples -/// -/// ```gleam -/// > min(2.0, 2.3) -/// 2.0 -/// ``` -/// -pub fn min(a: Float, b: Float) -> Float { - case a <. b { - True -> a - False -> b - } -} - -/// Compares two `Float`s, returning the larger of the two. -/// -/// ## Examples -/// -/// ```gleam -/// > max(2.0, 2.3) -/// 2.3 -/// ``` -/// -pub fn max(a: Float, b: Float) -> Float { - case a >. b { - True -> a - False -> b - } -} - -/// Rounds the value to the next highest whole number as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > ceiling(2.3) -/// 3.0 -/// ``` -/// -pub fn ceiling(x: Float) -> Float { - do_ceiling(x) -} - -@external(erlang, "math", "ceil") -@external(javascript, "../gleam_stdlib.mjs", "ceiling") -fn do_ceiling(a: Float) -> Float - -/// Rounds the value to the next lowest whole number as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > floor(2.3) -/// 2.0 -/// ``` -/// -pub fn floor(x: Float) -> Float { - do_floor(x) -} - -@external(erlang, "math", "floor") -@external(javascript, "../gleam_stdlib.mjs", "floor") -fn do_floor(a: Float) -> Float - -/// Rounds the value to the nearest whole number as an `Int`. -/// -/// ## Examples -/// -/// ```gleam -/// > round(2.3) -/// 2 -/// ``` -/// -/// ```gleam -/// > round(2.5) -/// 3 -/// ``` -/// -pub fn round(x: Float) -> Int { - do_round(x) -} - -@target(erlang) -@external(erlang, "erlang", "round") -fn do_round(a: Float) -> Int - -@target(javascript) -fn do_round(x: Float) -> Int { - case x >=. 0.0 { - True -> js_round(x) - _ -> 0 - js_round(negate(x)) - } -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "round") -fn js_round(a: Float) -> Int - -/// Returns the value as an `Int`, truncating all decimal digits. -/// -/// ## Examples -/// -/// ```gleam -/// > truncate(2.4343434847383438) -/// 2 -/// ``` -/// -pub fn truncate(x: Float) -> Int { - do_truncate(x) -} - -@external(erlang, "erlang", "trunc") -@external(javascript, "../gleam_stdlib.mjs", "truncate") -fn do_truncate(a: Float) -> Int - -/// Returns the absolute value of the input as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > absolute_value(-12.5) -/// 12.5 -/// ``` -/// -/// ```gleam -/// > absolute_value(10.2) -/// 10.2 -/// ``` -/// -pub fn absolute_value(x: Float) -> Float { - case x >=. 0.0 { - True -> x - _ -> 0.0 -. x - } -} - -/// Returns the results of the base being raised to the power of the -/// exponent, as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > power(2.0, -1.0) -/// Ok(0.5) -/// ``` -/// -/// ```gleam -/// > power(2.0, 2.0) -/// Ok(4.0) -/// ``` -/// -/// ```gleam -/// > power(8.0, 1.5) -/// Ok(22.627416997969522) -/// ``` -/// -/// ```gleam -/// > 4.0 |> power(of: 2.0) -/// Ok(16.0) -/// ``` -/// -/// ```gleam -/// > power(-1.0, 0.5) -/// Error(Nil) -/// ``` -/// -pub fn power(base: Float, of exponent: Float) -> Result(Float, Nil) { - let fractional: Bool = ceiling(exponent) -. exponent >. 0.0 - // In the following check: - // 1. If the base is negative and the exponent is fractional then - // return an error as it will otherwise be an imaginary number - // 2. If the base is 0 and the exponent is negative then the expression - // is equivalent to the exponent divided by 0 and an error should be - // returned - case base <. 0.0 && fractional || base == 0.0 && exponent <. 0.0 { - True -> Error(Nil) - False -> Ok(do_power(base, exponent)) - } -} - -@external(erlang, "math", "pow") -@external(javascript, "../gleam_stdlib.mjs", "power") -fn do_power(a: Float, b: Float) -> Float - -/// Returns the square root of the input as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > square_root(4.0) -/// Ok(2.0) -/// ``` -/// -/// ```gleam -/// > square_root(-16.0) -/// Error(Nil) -/// ``` -/// -pub fn square_root(x: Float) -> Result(Float, Nil) { - power(x, 0.5) -} - -/// Returns the negative of the value provided. -/// -/// ## Examples -/// -/// ```gleam -/// > negate(1.0) -/// -1.0 -/// ``` -/// -pub fn negate(x: Float) -> Float { - -1.0 *. x -} - -/// Sums a list of `Float`s. -/// -/// ## Example -/// -/// ```gleam -/// > sum([1.0, 2.2, 3.3]) -/// 6.5 -/// ``` -/// -pub fn sum(numbers: List(Float)) -> Float { - numbers - |> do_sum(0.0) -} - -fn do_sum(numbers: List(Float), initial: Float) -> Float { - case numbers { - [] -> initial - [x, ..rest] -> do_sum(rest, x +. initial) - } -} - -/// Multiplies a list of `Float`s and returns the product. -/// -/// ## Example -/// -/// ```gleam -/// > product([2.5, 3.2, 4.2]) -/// 33.6 -/// ``` -/// -pub fn product(numbers: List(Float)) -> Float { - case numbers { - [] -> 1.0 - _ -> do_product(numbers, 1.0) - } -} - -fn do_product(numbers: List(Float), initial: Float) -> Float { - case numbers { - [] -> initial - [x, ..rest] -> do_product(rest, x *. initial) - } -} - -/// Generates a random float between the given minimum and maximum values. -/// -/// -/// ## Examples -/// -/// ```gleam -/// > random(1.0, 5.0) -/// 2.646355926896028 -/// ``` -/// -pub fn random(min: Float, max: Float) -> Float { - do_random_uniform() *. { max -. min } +. min -} - -/// Returns a random float uniformly distributed in the value range -/// 0.0 =< X < 1.0 and updates the state in the process dictionary. -/// See: -/// -@external(erlang, "rand", "uniform") -@external(javascript, "../gleam_stdlib.mjs", "random_uniform") -fn do_random_uniform() -> Float - -/// Returns division of the inputs as a `Result`. -/// -/// ## Examples -/// -/// ```gleam -/// > divide(0.0, 1.0) -/// Ok(1.0) -/// ``` -/// -/// ```gleam -/// > divide(1.0, 0.0) -/// Error(Nil) -/// ``` -/// -pub fn divide(a: Float, by b: Float) -> Result(Float, Nil) { - case b { - 0.0 -> Error(Nil) - b -> Ok(a /. b) - } -} - -/// Adds two floats together. -/// -/// It's the function equivalent of the `+.` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > add(1.0, 2.0) -/// 3.0 -/// ``` -/// -/// ```gleam -/// > import gleam/list -/// > list.fold([1.0, 2.0, 3.0], 0.0, add) -/// 6.0 -/// ``` -/// -/// ```gleam -/// > 3.0 |> add(2.0) -/// 5.0 -/// ``` -/// -pub fn add(a: Float, b: Float) -> Float { - a +. b -} - -/// Multiplies two floats together. -/// -/// It's the function equivalent of the `*.` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > multiply(2.0, 4.0) -/// 8.0 -/// ``` -/// -/// ```gleam -/// import gleam/list -/// > list.fold([2.0, 3.0, 4.0], 1.0, multiply) -/// 24.0 -/// ``` -/// -/// ```gleam -/// > 3.0 |> multiply(2.0) -/// 6.0 -/// ``` -/// -pub fn multiply(a: Float, b: Float) -> Float { - a *. b -} - -/// Subtracts one float from another. -/// -/// It's the function equivalent of the `-.` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > subtract(3.0, 1.0) -/// 2.0 -/// ``` -/// -/// ```gleam -/// > import gleam/list -/// > list.fold([1.0, 2.0, 3.0], 10.0, subtract) -/// 4.0 -/// ``` -/// -/// ```gleam -/// > 3.0 |> subtract(_, 2.0) -/// 1.0 -/// ``` -/// -/// ```gleam -/// > 3.0 |> subtract(2.0, _) -/// -1.0 -/// ``` -/// -pub fn subtract(a: Float, b: Float) -> Float { - a -. b -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam deleted file mode 100644 index daa997d..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/function.gleam +++ /dev/null @@ -1,162 +0,0 @@ -/// Takes two functions and chains them together to form one function that -/// takes the input from the first and returns the output of the second. -/// -pub fn compose(fun1: fn(a) -> b, fun2: fn(b) -> c) -> fn(a) -> c { - fn(a) { fun2(fun1(a)) } -} - -/// Takes a function with `2` arguments (an arity of `2`), and returns the -/// curried equivalent. -/// -/// `fn(a, b) -> c` becomes `fn(a) -> fn(b) -> c`. -/// -/// ## Examples -/// -/// *Currying* creates a new function that is identical to the given function -/// except that arguments must now be supplied one by one over several function -/// calls. It thus is the process of taking a function with `n` arguments -/// and producing a sequence of `n` single-argument functions. Given: -/// -/// ```gleam -/// > fn my_fun(i: Int, s: String) -> String { ... } -/// ``` -/// -/// …calling `curry2(my_fun)` would return the curried equivalent, like so: -/// -/// ```gleam -/// > curry2(my_fun) -/// fn(Int) -> fn(String) -> String -/// ``` -/// -/// Currying is useful when you want to partially apply a function with -/// some arguments and then pass it somewhere else, for example: -/// -/// ```gleam -/// > import gleam/list -/// > let multiply = curry2(fn(x, y) { x * y }) -/// > let doubles = list.map([1, 2, 3], multiply(2)) -/// [2, 4, 6] -/// ``` -/// -pub fn curry2(fun: fn(a, b) -> value) { - fn(a) { fn(b) { fun(a, b) } } -} - -/// Takes a function with `3` arguments (an arity of `3`), and returns the -/// curried equivalent. -/// -/// `fn(a, b, c) -> d` becomes `fn(a) -> fn(b) -> fn(c) -> d`. -/// -/// See [`curry2`](#curry2) for a detailed explanation. -/// -pub fn curry3(fun: fn(a, b, c) -> value) { - fn(a) { fn(b) { fn(c) { fun(a, b, c) } } } -} - -/// Takes a function with `4` arguments (an arity of `4`), and returns the -/// curried equivalent. -/// -/// `fn(a, b, c, d) -> e` becomes `fn(a) -> fn(b) -> fn(c) -> fn(d) -> e`. -/// -/// See [`curry2`](#curry2) for a detailed explanation. -/// -pub fn curry4(fun: fn(a, b, c, d) -> value) { - fn(a) { fn(b) { fn(c) { fn(d) { fun(a, b, c, d) } } } } -} - -/// Takes a function with `5` arguments (an arity of `5`), and returns the -/// curried equivalent. -/// -/// `fn(a, b, c, d, e) -> f` becomes -/// `fn(a) -> fn(b) -> fn(c) -> fn(d) -> fn(e) -> f`. -/// -/// See [`curry2`](#curry2) for a detailed explanation. -/// -pub fn curry5(fun: fn(a, b, c, d, e) -> value) { - fn(a) { fn(b) { fn(c) { fn(d) { fn(e) { fun(a, b, c, d, e) } } } } } -} - -/// Takes a function with `6` arguments (an arity of `6`), and returns the -/// curried equivalent. -/// -/// `fn(a, b, c, d, e, f) -> g` becomes -/// `fn(a) -> fn(b) -> fn(c) -> fn(d) -> fn(e) -> fn(f) -> g`. -/// -/// See [`curry2`](#curry2) for a detailed explanation. -/// -pub fn curry6(fun: fn(a, b, c, d, e, f) -> value) { - fn(a) { - fn(b) { fn(c) { fn(d) { fn(e) { fn(f) { fun(a, b, c, d, e, f) } } } } } - } -} - -/// Takes a function that takes two arguments and returns a new function that -/// takes the same two arguments, but in reverse order. -/// -pub fn flip(fun: fn(a, b) -> c) -> fn(b, a) -> c { - fn(b, a) { fun(a, b) } -} - -/// Takes a single argument and always returns its input value. -/// -pub fn identity(x: a) -> a { - x -} - -/// Takes a single argument and returns a new function that -/// ignores its argument and always returns the input value. -/// -pub fn constant(value: a) -> fn(b) -> a { - fn(_) { value } -} - -/// Takes an argument and a single function, -/// calls that function with that argument -/// and returns that argument instead of the function return value. -/// Useful for running synchronous side effects in a pipeline. -/// -pub fn tap(arg: a, effect: fn(a) -> b) -> a { - effect(arg) - arg -} - -/// Takes a function with arity one and an argument, -/// calls that function with the argument and returns the function return value. -/// -/// Useful for concisely calling functions returned as a part of a pipeline. -/// -/// ## Example -/// -/// ```gleam -/// > let doubler = fn() { -/// > fn(x: Int) { x * 2 } -/// > } -/// > -/// > doubler() -/// > |> apply1(2) -/// 4 -/// ``` -/// -pub fn apply1(fun: fn(a) -> value, arg1: a) -> value { - fun(arg1) -} - -/// Takes a function with arity two and two arguments, -/// calls that function with the arguments -/// and returns the function return value. -/// -/// See [`apply1`](#apply1) for more details. -/// -pub fn apply2(fun: fn(a, b) -> value, arg1: a, arg2: b) -> value { - fun(arg1, arg2) -} - -/// Takes a function with arity three and three arguments, -/// calls that function with the arguments -/// and returns the function return value. -/// -/// See [`apply1`](#apply1) for more details. -/// -pub fn apply3(fun: fn(a, b, c) -> value, arg1: a, arg2: b, arg3: c) -> value { - fun(arg1, arg2, arg3) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam deleted file mode 100644 index d93c16a..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/int.gleam +++ /dev/null @@ -1,874 +0,0 @@ -//// Functions for working with integers. -//// -//// ## Division by zero -//// -//// In Erlang division by zero results in a crash, however Gleam does not have -//// partial functions and operators in core so instead division by zero returns -//// zero, a behaviour taken from Pony, Coq, and Lean. -//// -//// This may seem unexpected at first, but it is no less mathematically valid -//// than crashing or returning a special value. Division by zero is undefined -//// in mathematics. - -import gleam/float -import gleam/order.{type Order} - -/// Returns the absolute value of the input. -/// -/// ## Examples -/// -/// ```gleam -/// > absolute_value(-12) -/// 12 -/// ``` -/// -/// ```gleam -/// > absolute_value(10) -/// 10 -/// ``` -/// -pub fn absolute_value(x: Int) -> Int { - case x >= 0 { - True -> x - False -> x * -1 - } -} - -/// Returns the results of the base being raised to the power of the -/// exponent, as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > power(2, -1.0) -/// Ok(0.5) -/// ``` -/// -/// ```gleam -/// > power(2, 2.0) -/// Ok(4.0) -/// ``` -/// -/// ```gleam -/// > power(8, 1.5) -/// Ok(22.627416997969522) -/// ``` -/// -/// ```gleam -/// > 4 |> power(of: 2.0) -/// Ok(16.0) -/// ``` -/// -/// ```gleam -/// > power(-1, 0.5) -/// Error(Nil) -/// ``` -/// -pub fn power(base: Int, of exponent: Float) -> Result(Float, Nil) { - base - |> to_float() - |> float.power(exponent) -} - -/// Returns the square root of the input as a `Float`. -/// -/// ## Examples -/// -/// ```gleam -/// > square_root(4) -/// Ok(2.0) -/// ``` -/// -/// ```gleam -/// > square_root(-16) -/// Error(Nil) -/// ``` -/// -pub fn square_root(x: Int) -> Result(Float, Nil) { - x - |> to_float() - |> float.square_root() -} - -/// Parses a given string as an int if possible. -/// -/// ## Examples -/// -/// ```gleam -/// > parse("2") -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > parse("ABC") -/// Error(Nil) -/// ``` -/// -pub fn parse(string: String) -> Result(Int, Nil) { - do_parse(string) -} - -@external(erlang, "gleam_stdlib", "parse_int") -@external(javascript, "../gleam_stdlib.mjs", "parse_int") -fn do_parse(a: String) -> Result(Int, Nil) - -/// Parses a given string as an int in a given base if possible. -/// Supports only bases 2 to 36, for values outside of which this function returns an `Error(Nil)`. -/// -/// ## Examples -/// -/// ```gleam -/// > base_parse("10", 2) -/// Ok(2) -/// -/// > base_parse("30", 16) -/// Ok(48) -/// -/// > base_parse("1C", 36) -/// Ok(48) -/// -/// > base_parse("48", 1) -/// Error(Nil) -/// -/// > base_parse("48", 37) -/// Error(Nil) -/// ``` -/// -pub fn base_parse(string: String, base: Int) -> Result(Int, Nil) { - case base >= 2 && base <= 36 { - True -> do_base_parse(string, base) - False -> Error(Nil) - } -} - -@external(erlang, "gleam_stdlib", "int_from_base_string") -@external(javascript, "../gleam_stdlib.mjs", "int_from_base_string") -fn do_base_parse(a: String, b: Int) -> Result(Int, Nil) - -/// Prints a given int to a string. -/// -/// ## Examples -/// -/// ```gleam -/// > to_string(2) -/// "2" -/// ``` -/// -pub fn to_string(x: Int) { - do_to_string(x) -} - -@external(erlang, "erlang", "integer_to_binary") -@external(javascript, "../gleam_stdlib.mjs", "to_string") -fn do_to_string(a: Int) -> String - -/// Error value when trying to operate with a base out of the allowed range. -/// -pub type InvalidBase { - InvalidBase -} - -/// Prints a given int to a string using the base number provided. -/// Supports only bases 2 to 36, for values outside of which this function returns an `Error(InvalidBase)`. -/// For common bases (2, 8, 16, 36), use the `to_baseN` functions. -/// -/// ## Examples -/// -/// ```gleam -/// > to_base_string(2, 2) -/// Ok("10") -/// ``` -/// -/// ```gleam -/// > to_base_string(48, 16) -/// Ok("30") -/// ``` -/// -/// ```gleam -/// > to_base_string(48, 36) -/// Ok("1C") -/// ``` -/// -/// ```gleam -/// > to_base_string(48, 1) -/// Error(InvalidBase) -/// ``` -/// -/// ```gleam -/// > to_base_string(48, 37) -/// Error(InvalidBase) -/// ``` -/// -pub fn to_base_string(x: Int, base: Int) -> Result(String, InvalidBase) { - case base >= 2 && base <= 36 { - True -> Ok(do_to_base_string(x, base)) - False -> Error(InvalidBase) - } -} - -@external(erlang, "erlang", "integer_to_binary") -@external(javascript, "../gleam_stdlib.mjs", "int_to_base_string") -fn do_to_base_string(a: Int, b: Int) -> String - -/// Prints a given int to a string using base-2. -/// -/// ## Examples -/// -/// ```gleam -/// > to_base2(2) -/// "10" -/// ``` -/// -pub fn to_base2(x: Int) -> String { - do_to_base_string(x, 2) -} - -/// Prints a given int to a string using base-8. -/// -/// ## Examples -/// -/// ```gleam -/// > to_base8(15) -/// "17" -/// ``` -/// -pub fn to_base8(x: Int) -> String { - do_to_base_string(x, 8) -} - -/// Prints a given int to a string using base-16. -/// -/// ## Examples -/// -/// ```gleam -/// > to_base16(48) -/// "30" -/// ``` -/// -pub fn to_base16(x: Int) -> String { - do_to_base_string(x, 16) -} - -/// Prints a given int to a string using base-36. -/// -/// ## Examples -/// -/// ```gleam -/// > to_base36(48) -/// "1C" -/// ``` -/// -pub fn to_base36(x: Int) -> String { - do_to_base_string(x, 36) -} - -/// Takes an int and returns its value as a float. -/// -/// ## Examples -/// -/// ```gleam -/// > to_float(5) -/// 5.0 -/// ``` -/// -/// ```gleam -/// > to_float(0) -/// 0.0 -/// ``` -/// -/// ```gleam -/// > to_float(-3) -/// -3.0 -/// ``` -/// -pub fn to_float(x: Int) -> Float { - do_to_float(x) -} - -@external(erlang, "erlang", "float") -@external(javascript, "../gleam_stdlib.mjs", "identity") -fn do_to_float(a: Int) -> Float - -/// Restricts an int between a lower and upper bound. -/// -/// ## Examples -/// -/// ```gleam -/// > clamp(40, min: 50, max: 60) -/// 50 -/// ``` -/// -pub fn clamp(x: Int, min min_bound: Int, max max_bound: Int) -> Int { - x - |> min(max_bound) - |> max(min_bound) -} - -/// Compares two ints, returning an order. -/// -/// ## Examples -/// -/// ```gleam -/// > compare(2, 3) -/// Lt -/// ``` -/// -/// ```gleam -/// > compare(4, 3) -/// Gt -/// ``` -/// -/// ```gleam -/// > compare(3, 3) -/// Eq -/// ``` -/// -pub fn compare(a: Int, with b: Int) -> Order { - case a == b { - True -> order.Eq - False -> - case a < b { - True -> order.Lt - False -> order.Gt - } - } -} - -/// Compares two ints, returning the smaller of the two. -/// -/// ## Examples -/// -/// ```gleam -/// > min(2, 3) -/// 2 -/// ``` -/// -pub fn min(a: Int, b: Int) -> Int { - case a < b { - True -> a - False -> b - } -} - -/// Compares two ints, returning the larger of the two. -/// -/// ## Examples -/// -/// ```gleam -/// > max(2, 3) -/// 3 -/// ``` -/// -pub fn max(a: Int, b: Int) -> Int { - case a > b { - True -> a - False -> b - } -} - -/// Returns whether the value provided is even. -/// -/// ## Examples -/// -/// ```gleam -/// > is_even(2) -/// True -/// ``` -/// -/// ```gleam -/// > is_even(3) -/// False -/// ``` -/// -pub fn is_even(x: Int) -> Bool { - x % 2 == 0 -} - -/// Returns whether the value provided is odd. -/// -/// ## Examples -/// -/// ```gleam -/// > is_odd(3) -/// True -/// ``` -/// -/// ```gleam -/// > is_odd(2) -/// False -/// ``` -/// -pub fn is_odd(x: Int) -> Bool { - x % 2 != 0 -} - -/// Returns the negative of the value provided. -/// -/// ## Examples -/// -/// ```gleam -/// > negate(1) -/// -1 -/// ``` -/// -pub fn negate(x: Int) -> Int { - -1 * x -} - -/// Sums a list of ints. -/// -/// ## Example -/// -/// ```gleam -/// > sum([1, 2, 3]) -/// 6 -/// ``` -/// -pub fn sum(numbers: List(Int)) -> Int { - numbers - |> do_sum(0) -} - -fn do_sum(numbers: List(Int), initial: Int) -> Int { - case numbers { - [] -> initial - [x, ..rest] -> do_sum(rest, x + initial) - } -} - -/// Multiplies a list of ints and returns the product. -/// -/// ## Example -/// -/// ```gleam -/// > product([2, 3, 4]) -/// 24 -/// ``` -/// -pub fn product(numbers: List(Int)) -> Int { - case numbers { - [] -> 1 - _ -> do_product(numbers, 1) - } -} - -fn do_product(numbers: List(Int), initial: Int) -> Int { - case numbers { - [] -> initial - [x, ..rest] -> do_product(rest, x * initial) - } -} - -/// Splits an integer into its digit representation in the specified base -/// -/// ## Examples -/// -/// ```gleam -/// > digits(234, 10) -/// Ok([2,3,4]) -/// ``` -/// -/// ```gleam -/// > digits(234, 1) -/// Error(InvalidBase) -/// ``` -/// -pub fn digits(x: Int, base: Int) -> Result(List(Int), InvalidBase) { - case base < 2 { - True -> Error(InvalidBase) - False -> Ok(do_digits(x, base, [])) - } -} - -fn do_digits(x: Int, base: Int, acc: List(Int)) -> List(Int) { - case absolute_value(x) < base { - True -> [x, ..acc] - False -> do_digits(x / base, base, [x % base, ..acc]) - } -} - -/// Joins a list of digits into a single value. -/// Returns an error if the base is less than 2 or if the list contains a digit greater than or equal to the specified base. -/// -/// ## Examples -/// -/// ```gleam -/// > undigits([2,3,4], 10) -/// Ok(234) -/// ``` -/// -/// ```gleam -/// > undigits([2,3,4], 1) -/// Error(InvalidBase) -/// ``` -/// -/// ```gleam -/// > undigits([2,3,4], 2) -/// Error(InvalidBase) -/// ``` -/// -pub fn undigits(numbers: List(Int), base: Int) -> Result(Int, InvalidBase) { - case base < 2 { - True -> Error(InvalidBase) - False -> do_undigits(numbers, base, 0) - } -} - -fn do_undigits( - numbers: List(Int), - base: Int, - acc: Int, -) -> Result(Int, InvalidBase) { - case numbers { - [] -> Ok(acc) - [digit, ..] if digit >= base -> Error(InvalidBase) - [digit, ..rest] -> do_undigits(rest, base, acc * base + digit) - } -} - -/// Generates a random int between the given minimum and maximum values. -/// -/// ## Examples -/// -/// ```gleam -/// > random(1, 5) -/// 2 -/// ``` -/// -pub fn random(min: Int, max: Int) -> Int { - float.random(to_float(min), to_float(max)) - |> float.floor() - |> float.round() -} - -/// Performs a truncated integer division. -/// -/// Returns division of the inputs as a `Result`: If the given divisor equals -/// `0`, this function returns an `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > divide(0, 1) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > divide(1, 0) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > divide(5, 2) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > divide(-99, 2) -/// Ok(-49) -/// ``` -/// -pub fn divide(dividend: Int, by divisor: Int) -> Result(Int, Nil) { - case divisor { - 0 -> Error(Nil) - divisor -> Ok(dividend / divisor) - } -} - -/// Computes the remainder of an integer division of inputs as a `Result`. -/// -/// Returns division of the inputs as a `Result`: If the given divisor equals -/// `0`, this function returns an `Error`. -/// -/// Most the time you will want to use the `%` operator instead of this -/// function. -/// -/// ## Examples -/// -/// ```gleam -/// > remainder(3, 2) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > remainder(1, 0) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > remainder(10, -1) -/// Ok(0) -/// ``` -/// -/// ```gleam -/// > remainder(13, by: 3) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > remainder(-13, by: 3) -/// Ok(-1) -/// ``` -/// -/// ```gleam -/// > remainder(13, by: -3) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > remainder(-13, by: -3) -/// Ok(-1) -/// ``` -/// -pub fn remainder(dividend: Int, by divisor: Int) -> Result(Int, Nil) { - case divisor { - 0 -> Error(Nil) - divisor -> Ok(dividend % divisor) - } -} - -/// Computes the modulo of an integer division of inputs as a `Result`. -/// -/// Returns division of the inputs as a `Result`: If the given divisor equals -/// `0`, this function returns an `Error`. -/// -/// Most the time you will want to use the `%` operator instead of this -/// function. -/// -/// ## Examples -/// -/// ```gleam -/// > modulo(3, 2) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > modulo(1, 0) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > modulo(10, -1) -/// Ok(0) -/// ``` -/// -/// ```gleam -/// > modulo(13, by: 3) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > modulo(-13, by: 3) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > modulo(13, by: -3) -/// Ok(-2) -/// ``` -/// -/// ```gleam -/// > modulo(-13, by: -3) -/// Ok(-1) -/// ``` -/// -pub fn modulo(dividend: Int, by divisor: Int) -> Result(Int, Nil) { - case divisor { - 0 -> Error(Nil) - _ -> { - let remainder = dividend % divisor - case remainder * divisor < 0 { - True -> Ok(remainder + divisor) - False -> Ok(remainder) - } - } - } -} - -/// Performs a *floored* integer division, which means that the result will -/// always be rounded towards negative infinity. -/// -/// If you want to perform truncated integer division (rounding towards zero), -/// use `int.divide()` or the `/` operator instead. -/// -/// Returns division of the inputs as a `Result`: If the given divisor equals -/// `0`, this function returns an `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > floor_divide(1, 0) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > floor_divide(5, 2) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > floor_divide(6, -4) -/// Ok(-2) -/// ``` -/// -/// ```gleam -/// > floor_divide(-99, 2) -/// Ok(-50) -/// ``` -/// -pub fn floor_divide(dividend: Int, by divisor: Int) -> Result(Int, Nil) { - case divisor { - 0 -> Error(Nil) - divisor -> - case dividend * divisor < 0 && dividend % divisor != 0 { - True -> Ok(dividend / divisor - 1) - False -> Ok(dividend / divisor) - } - } -} - -/// Adds two integers together. -/// -/// It's the function equivalent of the `+` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > add(1, 2) -/// 3 -/// ``` -/// -/// ```gleam -/// import gleam/list -/// > list.fold([1, 2, 3], 0, add) -/// 6 -/// ``` -/// -/// ```gleam -/// > 3 |> add(2) -/// 5 -/// ``` -/// -pub fn add(a: Int, b: Int) -> Int { - a + b -} - -/// Multiplies two integers together. -/// -/// It's the function equivalent of the `*` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > multiply(2, 4) -/// 8 -/// ``` -/// -/// ```gleam -/// import gleam/list -/// > list.fold([2, 3, 4], 1, multiply) -/// 24 -/// ``` -/// -/// ```gleam -/// > 3 |> multiply(2) -/// 6 -/// ``` -/// -pub fn multiply(a: Int, b: Int) -> Int { - a * b -} - -/// Subtracts one int from another. -/// -/// It's the function equivalent of the `-` operator. -/// This function is useful in higher order functions or pipes. -/// -/// ## Examples -/// -/// ```gleam -/// > subtract(3, 1) -/// 2.0 -/// ``` -/// -/// ```gleam -/// import gleam/list -/// > list.fold([1, 2, 3], 10, subtract) -/// 4 -/// ``` -/// -/// ```gleam -/// > 3 |> subtract(2) -/// 1 -/// ``` -/// -/// ```gleam -/// > 3 |> subtract(2, _) -/// -1 -/// ``` -/// -pub fn subtract(a: Int, b: Int) -> Int { - a - b -} - -/// Calculates the bitwise AND of its arguments. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "band") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_and") -pub fn bitwise_and(x: Int, y: Int) -> Int - -/// Calculates the bitwise NOT of its argument. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "bnot") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_not") -pub fn bitwise_not(x: Int) -> Int - -/// Calculates the bitwise OR of its arguments. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "bor") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_or") -pub fn bitwise_or(x: Int, y: Int) -> Int - -/// Calculates the bitwise XOR of its arguments. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "bxor") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_exclusive_or") -pub fn bitwise_exclusive_or(x: Int, y: Int) -> Int - -/// Calculates the result of an arithmetic left bitshift. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "bsl") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_shift_left") -pub fn bitwise_shift_left(x: Int, y: Int) -> Int - -/// Calculates the result of an arithmetic right bitshift. -/// -/// The exact behaviour of this function depends on the target platform. -/// On Erlang it is equivalent to bitwise operations on ints, on JavaScript it -/// is equivalent to bitwise operations on big-ints. -/// -@external(erlang, "erlang", "bsr") -@external(javascript, "../gleam_stdlib.mjs", "bitwise_shift_right") -pub fn bitwise_shift_right(x: Int, y: Int) -> Int diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam deleted file mode 100644 index 0c0a3ee..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/io.gleam +++ /dev/null @@ -1,117 +0,0 @@ -import gleam/string - -/// Writes a string to standard output. -/// -/// If you want your output to be printed on its own line see `println`. -/// -/// ## Example -/// -/// ```gleam -/// > io.print("Hi mum") -/// // -> Hi mum -/// Nil -/// ``` -/// -pub fn print(string: String) -> Nil { - do_print(string) -} - -@external(erlang, "gleam_stdlib", "print") -@external(javascript, "../gleam_stdlib.mjs", "print") -fn do_print(string string: String) -> Nil - -/// Writes a string to standard error. -/// -/// If you want your output to be printed on its own line see `println_error`. -/// -/// ## Example -/// -/// ``` -/// > io.print_error("Hi pop") -/// // -> Hi pop -/// Nil -/// ``` -/// -pub fn print_error(string: String) -> Nil { - do_print_error(string) -} - -@external(erlang, "gleam_stdlib", "print_error") -@external(javascript, "../gleam_stdlib.mjs", "print_error") -fn do_print_error(string string: String) -> Nil - -/// Writes a string to standard output, appending a newline to the end. -/// -/// ## Example -/// -/// ```gleam -/// > io.println("Hi mum") -/// // -> Hi mum -/// Nil -/// ``` -/// -pub fn println(string: String) -> Nil { - do_println(string) -} - -@external(erlang, "gleam_stdlib", "println") -@external(javascript, "../gleam_stdlib.mjs", "console_log") -fn do_println(string string: String) -> Nil - -/// Writes a string to standard error, appending a newline to the end. -/// -/// ## Example -/// -/// ```gleam -/// > io.println_error("Hi pop") -/// // -> Hi mum -/// Nil -/// ``` -/// -pub fn println_error(string: String) -> Nil { - do_println_error(string) -} - -@external(erlang, "gleam_stdlib", "println_error") -@external(javascript, "../gleam_stdlib.mjs", "console_error") -fn do_println_error(string string: String) -> Nil - -/// Prints a value to standard error (stderr) yielding Gleam syntax. -/// -/// The value is returned after being printed so it can be used in pipelines. -/// -/// ## Example -/// -/// ```gleam -/// > debug("Hi mum") -/// // -> <<"Hi mum">> -/// "Hi mum" -/// ``` -/// -/// ```gleam -/// > debug(Ok(1)) -/// // -> {ok, 1} -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > import list -/// > [1, 2] -/// > |> list.map(fn(x) { x + 1 }) -/// > |> debug -/// > |> list.map(fn(x) { x * 2 }) -/// // -> [2, 3] -/// [4, 6] -/// ``` -/// -pub fn debug(term: anything) -> anything { - term - |> string.inspect - |> do_debug_println - - term -} - -@external(erlang, "gleam_stdlib", "println_error") -@external(javascript, "../gleam_stdlib.mjs", "print_debug") -fn do_debug_println(string string: String) -> Nil diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam deleted file mode 100644 index c57e7fd..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/iterator.gleam +++ /dev/null @@ -1,1530 +0,0 @@ -import gleam/result -import gleam/int -import gleam/list -import gleam/dict.{type Dict} -import gleam/option.{type Option, None, Some} -import gleam/order - -// Internal private representation of an Iterator -type Action(element) { - // Dedicated to Electric Six - // https://youtu.be/_30t2dzEgiw?t=162 - Stop - Continue(element, fn() -> Action(element)) -} - -/// An iterator is a lazily evaluated sequence of element. -/// -/// Iterators are useful when working with collections that are too large to -/// fit in memory (or those that are infinite in size) as they only require the -/// elements currently being processed to be in memory. -/// -/// As a lazy data structure no work is done when an iterator is filters, -/// mapped, etc, instead a new iterator is returned with these transformations -/// applied to the stream. Once the stream has all the required transformations -/// applied it can be evaluated using functions such as `fold` and `to_list`. -/// -pub opaque type Iterator(element) { - Iterator(continuation: fn() -> Action(element)) -} - -// Public API for iteration -pub type Step(element, accumulator) { - Next(element: element, accumulator: accumulator) - Done -} - -// Shortcut for an empty iterator. -fn stop() -> Action(element) { - Stop -} - -// Creating Iterators -fn do_unfold( - initial: acc, - f: fn(acc) -> Step(element, acc), -) -> fn() -> Action(element) { - fn() { - case f(initial) { - Next(x, acc) -> Continue(x, do_unfold(acc, f)) - Done -> Stop - } - } -} - -/// Creates an iterator from a given function and accumulator. -/// -/// The function is called on the accumulator and returns either `Done`, -/// indicating the iterator has no more elements, or `Next` which contains a -/// new element and accumulator. The element is yielded by the iterator and the -/// new accumulator is used with the function to compute the next element in -/// the sequence. -/// -/// ## Examples -/// -/// ```gleam -/// > unfold(from: 5, with: fn(n) { -/// > case n { -/// > 0 -> Done -/// > n -> Next(element: n, accumulator: n - 1) -/// > } -/// > }) -/// > |> to_list -/// [5, 4, 3, 2, 1] -/// ``` -/// -pub fn unfold( - from initial: acc, - with f: fn(acc) -> Step(element, acc), -) -> Iterator(element) { - initial - |> do_unfold(f) - |> Iterator -} - -// TODO: test -/// Creates an iterator that yields values created by calling a given function -/// repeatedly. -/// -pub fn repeatedly(f: fn() -> element) -> Iterator(element) { - unfold(Nil, fn(_) { Next(f(), Nil) }) -} - -/// Creates an iterator that returns the same value infinitely. -/// -/// ## Examples -/// -/// ```gleam -/// > repeat(10) -/// > |> take(4) -/// > |> to_list -/// [10, 10, 10, 10] -/// ``` -/// -pub fn repeat(x: element) -> Iterator(element) { - repeatedly(fn() { x }) -} - -/// Creates an iterator that yields each element from the given list. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) -/// > |> to_list -/// [1, 2, 3, 4] -/// ``` -/// -pub fn from_list(list: List(element)) -> Iterator(element) { - let yield = fn(acc) { - case acc { - [] -> Done - [head, ..tail] -> Next(head, tail) - } - } - unfold(list, yield) -} - -// Consuming Iterators -fn do_transform( - continuation: fn() -> Action(a), - state: acc, - f: fn(acc, a) -> Step(b, acc), -) -> fn() -> Action(b) { - fn() { - case continuation() { - Stop -> Stop - Continue(el, next) -> - case f(state, el) { - Done -> Stop - Next(yield, next_state) -> - Continue(yield, do_transform(next, next_state, f)) - } - } - } -} - -/// Creates an iterator from an existing iterator -/// and a stateful function that may short-circuit. -/// -/// `f` takes arguments `acc` for current state and `el` for current element from underlying iterator, -/// and returns either `Next` with yielded element and new state value, or `Done` to halt the iterator. -/// -/// ## Examples -/// -/// Approximate implementation of `index` in terms of `transform`: -/// -/// ```gleam -/// > from_list(["a", "b", "c"]) -/// > |> transform(0, fn(i, el) { Next(#(i, el), i + 1) }) -/// > |> to_list -/// [#(0, "a"), #(1, "b"), #(2, "c")] -/// ``` -pub fn transform( - over iterator: Iterator(a), - from initial: acc, - with f: fn(acc, a) -> Step(b, acc), -) -> Iterator(b) { - do_transform(iterator.continuation, initial, f) - |> Iterator -} - -fn do_fold( - continuation: fn() -> Action(e), - f: fn(acc, e) -> acc, - accumulator: acc, -) -> acc { - case continuation() { - Continue(elem, next) -> do_fold(next, f, f(accumulator, elem)) - Stop -> accumulator - } -} - -/// Reduces an iterator of elements into a single value by calling a given -/// function on each element in turn. -/// -/// If called on an iterator of infinite length then this function will never -/// return. -/// -/// If you do not care about the end value and only wish to evaluate the -/// iterator for side effects consider using the `run` function instead. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4] -/// > |> from_list -/// > |> fold(from: 0, with: fn(acc, element) { element + acc }) -/// 10 -/// ``` -/// -pub fn fold( - over iterator: Iterator(e), - from initial: acc, - with f: fn(acc, e) -> acc, -) -> acc { - iterator.continuation - |> do_fold(f, initial) -} - -// TODO: test -/// Evaluates all elements emitted by the given iterator. This function is useful for when -/// you wish to trigger any side effects that would occur when evaluating -/// the iterator. -/// -pub fn run(iterator: Iterator(e)) -> Nil { - fold(iterator, Nil, fn(_, _) { Nil }) -} - -/// Evaluates an iterator and returns all the elements as a list. -/// -/// If called on an iterator of infinite length then this function will never -/// return. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3] -/// > |> from_list -/// > |> map(fn(x) { x * 2 }) -/// > |> to_list -/// [2, 4, 6] -/// ``` -/// -pub fn to_list(iterator: Iterator(element)) -> List(element) { - iterator - |> fold([], fn(acc, e) { [e, ..acc] }) - |> list.reverse -} - -/// Eagerly accesses the first value of an iterator, returning a `Next` -/// that contains the first value and the rest of the iterator. -/// -/// If called on an empty iterator, `Done` is returned. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Next(first, rest) = [1, 2, 3, 4] -/// > |> from_list -/// > |> step -/// > first -/// 1 -/// ``` -/// -/// ```gleam -/// > rest |> to_list -/// [2, 3, 4] -/// ``` -/// -/// ```gleam -/// > empty() |> step -/// Done -/// ``` -/// -pub fn step(iterator: Iterator(e)) -> Step(e, Iterator(e)) { - case iterator.continuation() { - Stop -> Done - Continue(e, a) -> Next(e, Iterator(a)) - } -} - -fn do_take(continuation: fn() -> Action(e), desired: Int) -> fn() -> Action(e) { - fn() { - case desired > 0 { - False -> Stop - True -> - case continuation() { - Stop -> Stop - Continue(e, next) -> Continue(e, do_take(next, desired - 1)) - } - } - } -} - -/// Creates an iterator that only yields the first `desired` elements. -/// -/// If the iterator does not have enough elements all of them are yielded. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4, 5] -/// > |> from_list -/// > |> take(up_to: 3) -/// > |> to_list -/// [1, 2, 3] -/// ``` -/// -/// ```gleam -/// > [1, 2] -/// > |> from_list -/// > |> take(up_to: 3) -/// > |> to_list -/// [1, 2] -/// ``` -/// -pub fn take(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { - iterator.continuation - |> do_take(desired) - |> Iterator -} - -fn do_drop(continuation: fn() -> Action(e), desired: Int) -> Action(e) { - case continuation() { - Stop -> Stop - Continue(e, next) -> - case desired > 0 { - True -> do_drop(next, desired - 1) - False -> Continue(e, next) - } - } -} - -/// Evaluates and discards the first N elements in an iterator, returning a new -/// iterator. -/// -/// If the iterator does not have enough elements an empty iterator is -/// returned. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4, 5] -/// > |> from_list -/// > |> drop(up_to: 3) -/// > |> to_list -/// [4, 5] -/// ``` -/// -/// ```gleam -/// > [1, 2] -/// > |> from_list -/// > |> drop(up_to: 3) -/// > |> to_list -/// [] -/// ``` -/// -pub fn drop(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { - fn() { do_drop(iterator.continuation, desired) } - |> Iterator -} - -fn do_map(continuation: fn() -> Action(a), f: fn(a) -> b) -> fn() -> Action(b) { - fn() { - case continuation() { - Stop -> Stop - Continue(e, continuation) -> Continue(f(e), do_map(continuation, f)) - } - } -} - -/// Creates an iterator from an existing iterator and a transformation function. -/// -/// Each element in the new iterator will be the result of calling the given -/// function on the elements in the given iterator. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3] -/// > |> from_list -/// > |> map(fn(x) { x * 2 }) -/// > |> to_list -/// [2, 4, 6] -/// ``` -/// -pub fn map(over iterator: Iterator(a), with f: fn(a) -> b) -> Iterator(b) { - iterator.continuation - |> do_map(f) - |> Iterator -} - -fn do_map2( - continuation1: fn() -> Action(a), - continuation2: fn() -> Action(b), - with fun: fn(a, b) -> c, -) -> fn() -> Action(c) { - fn() { - case continuation1() { - Stop -> Stop - Continue(a, next_a) -> - case continuation2() { - Stop -> Stop - Continue(b, next_b) -> - Continue(fun(a, b), do_map2(next_a, next_b, fun)) - } - } - } -} - -/// Combines two interators into a single one using the given function. -/// -/// If an iterator is longer than the other the extra elements are dropped. -/// -/// This function does not evaluate the elements of the two iterators, the -/// computation is performed when the resulting iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// let first = from_list([1, 2, 3]) -/// let second = from_list([4, 5, 6]) -/// map2(first, second, fn(x, y) { x + y }) |> to_list -/// // -> [5, 7, 9] -/// ``` -/// -/// ```gleam -/// let first = from_list([1, 2]) -/// let second = from_list(["a", "b", "c"]) -/// map2(first, second, fn(i, x) { #(i, x) }) |> to_list -/// // -> [#(1, "a"), #(2, "b")] -/// ``` -/// -pub fn map2( - iterator1: Iterator(a), - iterator2: Iterator(b), - with fun: fn(a, b) -> c, -) -> Iterator(c) { - do_map2(iterator1.continuation, iterator2.continuation, fun) - |> Iterator -} - -fn do_append(first: fn() -> Action(a), second: fn() -> Action(a)) -> Action(a) { - case first() { - Continue(e, first) -> Continue(e, fn() { do_append(first, second) }) - Stop -> second() - } -} - -/// Appends two iterators, producing a new iterator. -/// -/// This function does not evaluate the elements of the iterators, the -/// computation is performed when the resulting iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2] -/// > |> from_list -/// > |> append([3, 4] |> from_list) -/// > |> to_list -/// [1, 2, 3, 4] -/// ``` -/// -pub fn append(to first: Iterator(a), suffix second: Iterator(a)) -> Iterator(a) { - fn() { do_append(first.continuation, second.continuation) } - |> Iterator -} - -fn do_flatten(flattened: fn() -> Action(Iterator(a))) -> Action(a) { - case flattened() { - Stop -> Stop - Continue(it, next_iterator) -> - do_append(it.continuation, fn() { do_flatten(next_iterator) }) - } -} - -/// Flattens an iterator of iterators, creating a new iterator. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([[1, 2], [3, 4]]) -/// > |> map(from_list) -/// > |> flatten -/// > |> to_list -/// [1, 2, 3, 4] -/// ``` -/// -pub fn flatten(iterator: Iterator(Iterator(a))) -> Iterator(a) { - fn() { do_flatten(iterator.continuation) } - |> Iterator -} - -/// Joins a list of iterators into a single iterator. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > [[1, 2], [3, 4]] -/// > |> map(from_list) -/// > |> concat -/// > |> to_list -/// [1, 2, 3, 4] -/// ``` -/// -pub fn concat(iterators: List(Iterator(a))) -> Iterator(a) { - flatten(from_list(iterators)) -} - -/// Creates an iterator from an existing iterator and a transformation function. -/// -/// Each element in the new iterator will be the result of calling the given -/// function on the elements in the given iterator and then flattening the -/// results. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2] -/// > |> from_list -/// > |> flat_map(fn(x) { from_list([x, x + 1]) }) -/// > |> to_list -/// [1, 2, 2, 3] -/// ``` -/// -pub fn flat_map( - over iterator: Iterator(a), - with f: fn(a) -> Iterator(b), -) -> Iterator(b) { - iterator - |> map(f) - |> flatten -} - -fn do_filter( - continuation: fn() -> Action(e), - predicate: fn(e) -> Bool, -) -> Action(e) { - case continuation() { - Stop -> Stop - Continue(e, iterator) -> - case predicate(e) { - True -> Continue(e, fn() { do_filter(iterator, predicate) }) - False -> do_filter(iterator, predicate) - } - } -} - -/// Creates an iterator from an existing iterator and a predicate function. -/// -/// The new iterator will contain elements from the first iterator for which -/// the given function returns `True`. -/// -/// This function does not evaluate the elements of the iterator, the -/// computation is performed when the iterator is later run. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/int -/// > [1, 2, 3, 4] -/// > |> from_list -/// > |> filter(int.is_even) -/// > |> to_list -/// [2, 4] -/// ``` -/// -pub fn filter( - iterator: Iterator(a), - keeping predicate: fn(a) -> Bool, -) -> Iterator(a) { - fn() { do_filter(iterator.continuation, predicate) } - |> Iterator -} - -/// Creates an iterator that repeats a given iterator infinitely. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2] -/// > |> from_list -/// > |> cycle -/// > |> take(6) -/// > |> to_list -/// [1, 2, 1, 2, 1, 2] -/// ``` -/// -pub fn cycle(iterator: Iterator(a)) -> Iterator(a) { - repeat(iterator) - |> flatten -} - -/// Creates an iterator of ints, starting at a given start int and stepping by -/// one to a given end int. -/// -/// ## Examples -/// -/// ```gleam -/// > range(from: 1, to: 5) |> to_list -/// [1, 2, 3, 4, 5] -/// ``` -/// -/// ```gleam -/// > range(from: 1, to: -2) |> to_list -/// [1, 0, -1, -2] -/// ``` -/// -/// ```gleam -/// > range(from: 0, to: 0) |> to_list -/// [0] -/// ``` -/// -pub fn range(from start: Int, to stop: Int) -> Iterator(Int) { - case int.compare(start, stop) { - order.Eq -> once(fn() { start }) - order.Gt -> - unfold( - from: start, - with: fn(current) { - case current < stop { - False -> Next(current, current - 1) - True -> Done - } - }, - ) - - order.Lt -> - unfold( - from: start, - with: fn(current) { - case current > stop { - False -> Next(current, current + 1) - True -> Done - } - }, - ) - } -} - -fn do_find(continuation: fn() -> Action(a), f: fn(a) -> Bool) -> Result(a, Nil) { - case continuation() { - Stop -> Error(Nil) - Continue(e, next) -> - case f(e) { - True -> Ok(e) - False -> do_find(next, f) - } - } -} - -/// Finds the first element in a given iterator for which the given function returns -/// `True`. -/// -/// Returns `Error(Nil)` if the function does not return `True` for any of the -/// elements. -/// -/// ## Examples -/// -/// ```gleam -/// > find(from_list([1, 2, 3]), fn(x) { x > 2 }) -/// Ok(3) -/// ``` -/// -/// ```gleam -/// > find(from_list([1, 2, 3]), fn(x) { x > 4 }) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > find(empty(), fn(_) { True }) -/// Error(Nil) -/// ``` -/// -pub fn find( - in haystack: Iterator(a), - one_that is_desired: fn(a) -> Bool, -) -> Result(a, Nil) { - haystack.continuation - |> do_find(is_desired) -} - -fn do_index( - continuation: fn() -> Action(element), - next: Int, -) -> fn() -> Action(#(Int, element)) { - fn() { - case continuation() { - Stop -> Stop - Continue(e, continuation) -> - Continue(#(next, e), do_index(continuation, next + 1)) - } - } -} - -/// Wraps values yielded from an iterator with indices, starting from 0. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list(["a", "b", "c"]) |> index |> to_list -/// [#(0, "a"), #(1, "b"), #(2, "c")] -/// ``` -/// -pub fn index(over iterator: Iterator(element)) -> Iterator(#(Int, element)) { - iterator.continuation - |> do_index(0) - |> Iterator -} - -/// Creates an iterator that inifinitely applies a function to a value. -/// -/// ## Examples -/// -/// ```gleam -/// > iterate(1, fn(n) { n * 3 }) |> take(5) |> to_list -/// [1, 3, 9, 27, 81] -/// ``` -/// -pub fn iterate( - from initial: element, - with f: fn(element) -> element, -) -> Iterator(element) { - unfold(initial, fn(element) { Next(element, f(element)) }) -} - -fn do_take_while( - continuation: fn() -> Action(element), - predicate: fn(element) -> Bool, -) -> fn() -> Action(element) { - fn() { - case continuation() { - Stop -> Stop - Continue(e, next) -> - case predicate(e) { - False -> Stop - True -> Continue(e, do_take_while(next, predicate)) - } - } - } -} - -/// Creates an iterator that yields elements while the predicate returns `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 2, 4]) -/// > |> take_while(satisfying: fn(x) { x < 3 }) -/// > |> to_list -/// [1, 2] -/// ``` -/// -pub fn take_while( - in iterator: Iterator(element), - satisfying predicate: fn(element) -> Bool, -) -> Iterator(element) { - iterator.continuation - |> do_take_while(predicate) - |> Iterator -} - -fn do_drop_while( - continuation: fn() -> Action(element), - predicate: fn(element) -> Bool, -) -> Action(element) { - case continuation() { - Stop -> Stop - Continue(e, next) -> - case predicate(e) { - False -> Continue(e, next) - True -> do_drop_while(next, predicate) - } - } -} - -/// Creates an iterator that drops elements while the predicate returns `True`, -/// and then yields the remaining elements. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4, 2, 5]) -/// > |> drop_while(satisfying: fn(x) { x < 4 }) -/// > |> to_list -/// [4, 2, 5] -/// ``` -/// -pub fn drop_while( - in iterator: Iterator(element), - satisfying predicate: fn(element) -> Bool, -) -> Iterator(element) { - fn() { do_drop_while(iterator.continuation, predicate) } - |> Iterator -} - -fn do_scan( - continuation: fn() -> Action(element), - f: fn(acc, element) -> acc, - accumulator: acc, -) -> fn() -> Action(acc) { - fn() { - case continuation() { - Stop -> Stop - Continue(el, next) -> { - let accumulated = f(accumulator, el) - Continue(accumulated, do_scan(next, f, accumulated)) - } - } - } -} - -/// Creates an iterator from an existing iterator and a stateful function. -/// -/// Specifically, this behaves like `fold`, but yields intermediate results. -/// -/// ## Examples -/// -/// ```gleam -/// // Generate a sequence of partial sums -/// > from_list([1, 2, 3, 4, 5]) -/// > |> scan(from: 0, with: fn(acc, el) { acc + el }) -/// > |> to_list -/// [1, 3, 6, 10, 15] -/// ``` -/// -pub fn scan( - over iterator: Iterator(element), - from initial: acc, - with f: fn(acc, element) -> acc, -) -> Iterator(acc) { - iterator.continuation - |> do_scan(f, initial) - |> Iterator -} - -fn do_zip( - left: fn() -> Action(a), - right: fn() -> Action(b), -) -> fn() -> Action(#(a, b)) { - fn() { - case left() { - Stop -> Stop - Continue(el_left, next_left) -> - case right() { - Stop -> Stop - Continue(el_right, next_right) -> - Continue(#(el_left, el_right), do_zip(next_left, next_right)) - } - } - } -} - -/// Zips two iterators together, emitting values from both -/// until the shorter one runs out. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list(["a", "b", "c"]) -/// > |> zip(range(20, 30)) -/// > |> to_list -/// [#("a", 20), #("b", 21), #("c", 22)] -/// ``` -/// -pub fn zip(left: Iterator(a), right: Iterator(b)) -> Iterator(#(a, b)) { - do_zip(left.continuation, right.continuation) - |> Iterator -} - -// Result of collecting a single chunk by key -type Chunk(element, key) { - AnotherBy(List(element), key, element, fn() -> Action(element)) - LastBy(List(element)) -} - -fn next_chunk( - continuation: fn() -> Action(element), - f: fn(element) -> key, - previous_key: key, - current_chunk: List(element), -) -> Chunk(element, key) { - case continuation() { - Stop -> LastBy(list.reverse(current_chunk)) - Continue(e, next) -> { - let key = f(e) - case key == previous_key { - True -> next_chunk(next, f, key, [e, ..current_chunk]) - False -> AnotherBy(list.reverse(current_chunk), key, e, next) - } - } - } -} - -fn do_chunk( - continuation: fn() -> Action(element), - f: fn(element) -> key, - previous_key: key, - previous_element: element, -) -> Action(List(element)) { - case next_chunk(continuation, f, previous_key, [previous_element]) { - LastBy(chunk) -> Continue(chunk, stop) - AnotherBy(chunk, key, el, next) -> - Continue(chunk, fn() { do_chunk(next, f, key, el) }) - } -} - -/// Creates an iterator that emits chunks of elements -/// for which `f` returns the same value. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 2, 3, 4, 4, 6, 7, 7]) -/// > |> chunk(by: fn(n) { n % 2 }) -/// > |> to_list -/// [[1], [2, 2], [3], [4, 4, 6], [7, 7]] -/// ``` -/// -pub fn chunk( - over iterator: Iterator(element), - by f: fn(element) -> key, -) -> Iterator(List(element)) { - fn() { - case iterator.continuation() { - Stop -> Stop - Continue(e, next) -> do_chunk(next, f, f(e), e) - } - } - |> Iterator -} - -// Result of collecting a single sized chunk -type SizedChunk(element) { - Another(List(element), fn() -> Action(element)) - Last(List(element)) - NoMore -} - -fn next_sized_chunk( - continuation: fn() -> Action(element), - left: Int, - current_chunk: List(element), -) -> SizedChunk(element) { - case continuation() { - Stop -> - case current_chunk { - [] -> NoMore - remaining -> Last(list.reverse(remaining)) - } - Continue(e, next) -> { - let chunk = [e, ..current_chunk] - case left > 1 { - False -> Another(list.reverse(chunk), next) - True -> next_sized_chunk(next, left - 1, chunk) - } - } - } -} - -fn do_sized_chunk( - continuation: fn() -> Action(element), - count: Int, -) -> fn() -> Action(List(element)) { - fn() { - case next_sized_chunk(continuation, count, []) { - NoMore -> Stop - Last(chunk) -> Continue(chunk, stop) - Another(chunk, next_element) -> - Continue(chunk, do_sized_chunk(next_element, count)) - } - } -} - -/// Creates an iterator that emits chunks of given size. -/// -/// If the last chunk does not have `count` elements, it is yielded -/// as a partial chunk, with less than `count` elements. -/// -/// For any `count` less than 1 this function behaves as if it was set to 1. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4, 5, 6]) -/// > |> sized_chunk(into: 2) -/// > |> to_list -/// [[1, 2], [3, 4], [5, 6]] -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 3, 4, 5, 6, 7, 8]) -/// > |> sized_chunk(into: 3) -/// > |> to_list -/// [[1, 2, 3], [4, 5, 6], [7, 8]] -/// ``` -/// -pub fn sized_chunk( - over iterator: Iterator(element), - into count: Int, -) -> Iterator(List(element)) { - iterator.continuation - |> do_sized_chunk(count) - |> Iterator -} - -fn do_intersperse( - continuation: fn() -> Action(element), - separator: element, -) -> Action(element) { - case continuation() { - Stop -> Stop - Continue(e, next) -> { - let next_interspersed = fn() { do_intersperse(next, separator) } - Continue(separator, fn() { Continue(e, next_interspersed) }) - } - } -} - -/// Creates an iterator that yields the given `elem` element -/// between elements emitted by the underlying iterator. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() -/// > |> intersperse(with: 0) -/// > |> to_list -/// [] -/// -/// > from_list([1]) -/// > |> intersperse(with: 0) -/// > |> to_list -/// [1] -/// -/// > from_list([1, 2, 3, 4, 5]) -/// > |> intersperse(with: 0) -/// > |> to_list -/// [1, 0, 2, 0, 3, 0, 4, 0, 5] -/// ``` -/// -pub fn intersperse( - over iterator: Iterator(element), - with elem: element, -) -> Iterator(element) { - fn() { - case iterator.continuation() { - Stop -> Stop - Continue(e, next) -> Continue(e, fn() { do_intersperse(next, elem) }) - } - } - |> Iterator -} - -fn do_any( - continuation: fn() -> Action(element), - predicate: fn(element) -> Bool, -) -> Bool { - case continuation() { - Stop -> False - Continue(e, next) -> - case predicate(e) { - True -> True - False -> do_any(next, predicate) - } - } -} - -/// Returns `True` if any element emitted by the iterator satisfies the given predicate, -/// `False` otherwise. -/// -/// This function short-circuits once it finds a satisfying element. -/// -/// An empty iterator results in `False`. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> any(fn(n) { n % 2 == 0 }) -/// False -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 5, 7, 9]) |> any(fn(n) { n % 2 == 0 }) -/// True -/// ``` -/// -/// ```gleam -/// > from_list([1, 3, 5, 7, 9]) |> any(fn(n) { n % 2 == 0 }) -/// False -/// ``` -/// -pub fn any( - in iterator: Iterator(element), - satisfying predicate: fn(element) -> Bool, -) -> Bool { - iterator.continuation - |> do_any(predicate) -} - -fn do_all( - continuation: fn() -> Action(element), - predicate: fn(element) -> Bool, -) -> Bool { - case continuation() { - Stop -> True - Continue(e, next) -> - case predicate(e) { - True -> do_all(next, predicate) - False -> False - } - } -} - -/// Returns `True` if all elements emitted by the iterator satisfy the given predicate, -/// `False` otherwise. -/// -/// This function short-circuits once it finds a non-satisfying element. -/// -/// An empty iterator results in `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> all(fn(n) { n % 2 == 0 }) -/// True -/// ``` -/// -/// ```gleam -/// > from_list([2, 4, 6, 8]) |> all(fn(n) { n % 2 == 0 }) -/// True -/// ``` -/// -/// ```gleam -/// > from_list([2, 4, 5, 8]) |> all(fn(n) { n % 2 == 0 }) -/// False -/// ``` -/// -pub fn all( - in iterator: Iterator(element), - satisfying predicate: fn(element) -> Bool, -) -> Bool { - iterator.continuation - |> do_all(predicate) -} - -fn update_group_with(el: element) -> fn(Option(List(element))) -> List(element) { - fn(maybe_group) { - case maybe_group { - Some(group) -> [el, ..group] - None -> [el] - } - } -} - -fn group_updater( - f: fn(element) -> key, -) -> fn(Dict(key, List(element)), element) -> Dict(key, List(element)) { - fn(groups, elem) { - groups - |> dict.update(f(elem), update_group_with(elem)) - } -} - -/// Returns a `Dict(k, List(element))` of elements from the given iterator -/// grouped with the given key function. -/// -/// The order within each group is preserved from the iterator. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4, 5, 6]) |> group(by: fn(n) { n % 3 }) -/// dict.from_list([#(0, [3, 6]), #(1, [1, 4]), #(2, [2, 5])]) -/// ``` -/// -pub fn group( - in iterator: Iterator(element), - by key: fn(element) -> key, -) -> Dict(key, List(element)) { - iterator - |> fold(dict.new(), group_updater(key)) - |> dict.map_values(fn(_, group) { list.reverse(group) }) -} - -/// This function acts similar to fold, but does not take an initial state. -/// Instead, it starts from the first yielded element -/// and combines it with each subsequent element in turn using the given function. -/// The function is called as `f(accumulator, current_element)`. -/// -/// Returns `Ok` to indicate a successful run, and `Error` if called on an empty iterator. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([]) |> reduce(fn(acc, x) { acc + x }) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 3, 4, 5]) |> reduce(fn(acc, x) { acc + x }) -/// Ok(15) -/// ``` -/// -pub fn reduce( - over iterator: Iterator(e), - with f: fn(e, e) -> e, -) -> Result(e, Nil) { - case iterator.continuation() { - Stop -> Error(Nil) - Continue(e, next) -> - do_fold(next, f, e) - |> Ok - } -} - -/// Returns the last element in the given iterator. -/// -/// Returns `Error(Nil)` if the iterator is empty. -/// -/// This function runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> last -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > range(1, 10) |> last -/// Ok(9) -/// ``` -/// -pub fn last(iterator: Iterator(element)) -> Result(element, Nil) { - iterator - |> reduce(fn(_, elem) { elem }) -} - -/// Creates an iterator that yields no elements. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> to_list -/// [] -/// ``` -/// -pub fn empty() -> Iterator(element) { - Iterator(stop) -} - -/// Creates an iterator that yields exactly one element provided by calling the given function. -/// -/// ## Examples -/// -/// ```gleam -/// > once(fn() { 1 }) |> to_list -/// [1] -/// ``` -/// -pub fn once(f: fn() -> element) -> Iterator(element) { - fn() { Continue(f(), stop) } - |> Iterator -} - -/// Creates an iterator that yields the given element exactly once. -/// -/// ## Examples -/// -/// ```gleam -/// > single(1) |> to_list -/// [1] -/// ``` -/// -pub fn single(elem: element) -> Iterator(element) { - once(fn() { elem }) -} - -fn do_interleave( - current: fn() -> Action(element), - next: fn() -> Action(element), -) -> Action(element) { - case current() { - Stop -> next() - Continue(e, next_other) -> - Continue(e, fn() { do_interleave(next, next_other) }) - } -} - -/// Creates an iterator that alternates between the two given iterators -/// until both have run out. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) |> interleave(from_list([11, 12, 13, 14])) |> to_list -/// [1, 11, 2, 12, 3, 13, 4, 14] -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) |> interleave(from_list([100])) |> to_list -/// [1, 100, 2, 3, 4] -/// ``` -/// -pub fn interleave( - left: Iterator(element), - with right: Iterator(element), -) -> Iterator(element) { - fn() { do_interleave(left.continuation, right.continuation) } - |> Iterator -} - -fn do_fold_until( - continuation: fn() -> Action(e), - f: fn(acc, e) -> list.ContinueOrStop(acc), - accumulator: acc, -) -> acc { - case continuation() { - Stop -> accumulator - Continue(elem, next) -> - case f(accumulator, elem) { - list.Continue(accumulator) -> do_fold_until(next, f, accumulator) - list.Stop(accumulator) -> accumulator - } - } -} - -/// Like `fold`, `fold_until` reduces an iterator of elements into a single value by calling a given -/// function on each element in turn, but uses `list.ContinueOrStop` to determine -/// whether or not to keep iterating. -/// -/// If called on an iterator of infinite length then this function will only ever -/// return if the function returns `list.Stop`. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/list -/// > let f = fn(acc, e) { -/// > case e { -/// > _ if e < 4 -> list.Continue(e + acc) -/// > _ -> list.Stop(acc) -/// > } -/// > } -/// > -/// > [1, 2, 3, 4] -/// > |> from_list -/// > |> fold_until(from: acc, with: f) -/// 6 -/// ``` -/// -pub fn fold_until( - over iterator: Iterator(e), - from initial: acc, - with f: fn(acc, e) -> list.ContinueOrStop(acc), -) -> acc { - iterator.continuation - |> do_fold_until(f, initial) -} - -fn do_try_fold( - over continuation: fn() -> Action(a), - with f: fn(acc, a) -> Result(acc, err), - from accumulator: acc, -) -> Result(acc, err) { - case continuation() { - Stop -> Ok(accumulator) - Continue(elem, next) -> { - use accumulator <- result.try(f(accumulator, elem)) - do_try_fold(next, f, accumulator) - } - } -} - -/// A variant of fold that might fail. -/// -/// The folding function should return `Result(accumulator, error)`. -/// If the returned value is `Ok(accumulator)` try_fold will try the next value in the iterator. -/// If the returned value is `Error(error)` try_fold will stop and return that error. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4] -/// > |> iterator.from_list() -/// > |> try_fold(0, fn(acc, i) { -/// > case i < 3 { -/// > True -> Ok(acc + i) -/// > False -> Error(Nil) -/// > } -/// > }) -/// Error(Nil) -/// ``` -/// -pub fn try_fold( - over iterator: Iterator(e), - from initial: acc, - with f: fn(acc, e) -> Result(acc, err), -) -> Result(acc, err) { - iterator.continuation - |> do_try_fold(f, initial) -} - -/// Returns the first element yielded by the given iterator, if it exists, -/// or `Error(Nil)` otherwise. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3]) |> first -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > empty() |> first -/// Error(Nil) -/// ``` -pub fn first(from iterator: Iterator(e)) -> Result(e, Nil) { - case iterator.continuation() { - Stop -> Error(Nil) - Continue(e, _) -> Ok(e) - } -} - -/// Returns nth element yielded by the given iterator, where `0` means the first element. -/// -/// If there are not enough elements in the iterator, `Error(Nil)` is returned. -/// -/// For any `index` less than `0` this function behaves as if it was set to `0`. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) |> at(2) -/// Ok(3) -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) |> at(4) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > empty() |> at(0) -/// Error(Nil) -/// ``` -/// -pub fn at(in iterator: Iterator(e), get index: Int) -> Result(e, Nil) { - iterator - |> drop(index) - |> first -} - -fn do_length(over continuation: fn() -> Action(e), with length: Int) -> Int { - case continuation() { - Stop -> length - Continue(_, next) -> do_length(next, length + 1) - } -} - -/// Counts the number of elements in the given iterator. -/// -/// This function has to traverse the entire iterator to count its elements, -/// so it runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> length -/// 0 -/// ``` -/// -/// ```gleam -/// > from_list([1, 2, 3, 4]) |> length -/// 4 -/// ``` -/// -pub fn length(over iterator: Iterator(e)) -> Int { - iterator.continuation - |> do_length(0) -} - -/// Traverse an iterator, calling a function on each element. -/// -/// ## Examples -/// -/// ```gleam -/// > empty() |> each(io.println) -/// Nil -/// ``` -/// -/// ```gleam -/// > from_list(["Tom", "Malory", "Louis"]) |> each(io.println) -/// // -> Tom -/// // -> Malory -/// // -> Louis -/// Nil -/// ``` -/// -pub fn each(over iterator: Iterator(a), with f: fn(a) -> b) -> Nil { - iterator - |> map(f) - |> run -} - -/// Add a new element to the start of an iterator. -/// -/// This function is for use with `use` expressions, to replicate the behaviour -/// of the `yield` keyword found in other languages. -/// -/// ## Examples -/// -/// ```gleam -/// > use <- iterator.yield(1) -/// > use <- iterator.yield(2) -/// > use <- iterator.yield(3) -/// > iterator.empty() -/// iterator.from_list([1, 2, 3]) -/// ``` -/// -pub fn yield(element: a, next: fn() -> Iterator(a)) -> Iterator(a) { - Iterator(fn() { Continue(element, next().continuation) }) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam deleted file mode 100644 index a5cffa9..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/list.gleam +++ /dev/null @@ -1,2154 +0,0 @@ -//// Lists are an ordered sequence of elements and are one of the most common -//// data types in Gleam. -//// -//// New elements can be added and removed from the front of a list in -//// constant time, while adding and removing from the end requires traversing -//// the copying the whole list, so keep this in mind when designing your -//// programs. -//// -//// There is a dedicated syntax for prefixing to a list: -//// -//// ```gleam -//// let new_list = [1, 2, ..existing_list] -//// ``` -//// -//// And a matching syntax for getting the first elements of a list: -//// -//// ```gleam -//// case list { -//// [first_element, ..rest] -> first_element -//// _ -> "this pattern matches when the list is empty" -//// } -//// ``` -//// - -import gleam/int -import gleam/float -import gleam/order.{type Order} -import gleam/pair -import gleam/dict.{type Dict} - -/// An error value returned by the `strict_zip` function. -/// -pub type LengthMismatch { - LengthMismatch -} - -/// Counts the number of elements in a given list. -/// -/// This function has to traverse the list to determine the number of elements, -/// so it runs in linear time. -/// -/// This function is natively implemented by the virtual machine and is highly -/// optimised. -/// -/// ## Examples -/// -/// ```gleam -/// > length([]) -/// 0 -/// ``` -/// -/// ```gleam -/// > length([1]) -/// 1 -/// ``` -/// -/// ```gleam -/// > length([1, 2]) -/// 2 -/// ``` -/// -pub fn length(of list: List(a)) -> Int { - do_length(list) -} - -@target(erlang) -@external(erlang, "erlang", "length") -fn do_length(a: List(a)) -> Int - -@target(javascript) -fn do_length(list: List(a)) -> Int { - do_length_acc(list, 0) -} - -@target(javascript) -fn do_length_acc(list: List(a), count: Int) -> Int { - case list { - [_, ..list] -> do_length_acc(list, count + 1) - _ -> count - } -} - -/// Creates a new list from a given list containing the same elements but in the -/// opposite order. -/// -/// This function has to traverse the list to create the new reversed list, so -/// it runs in linear time. -/// -/// This function is natively implemented by the virtual machine and is highly -/// optimised. -/// -/// ## Examples -/// -/// ```gleam -/// > reverse([]) -/// [] -/// ``` -/// -/// ```gleam -/// > reverse([1]) -/// [1] -/// ``` -/// -/// ```gleam -/// > reverse([1, 2]) -/// [2, 1] -/// ``` -/// -pub fn reverse(xs: List(a)) -> List(a) { - do_reverse(xs) -} - -@target(erlang) -@external(erlang, "lists", "reverse") -fn do_reverse(a: List(a)) -> List(a) - -@target(javascript) -fn do_reverse(list) { - do_reverse_acc(list, []) -} - -@target(javascript) -fn do_reverse_acc(remaining, accumulator) { - case remaining { - [] -> accumulator - [item, ..rest] -> do_reverse_acc(rest, [item, ..accumulator]) - } -} - -/// Determines whether or not the list is empty. -/// -/// This function runs in constant time. -/// -/// ## Examples -/// -/// ```gleam -/// > is_empty([]) -/// True -/// ``` -/// -/// ```gleam -/// > is_empty([1]) -/// False -/// ``` -/// -/// ```gleam -/// > is_empty([1, 1]) -/// False -/// ``` -/// -pub fn is_empty(list: List(a)) -> Bool { - list == [] -} - -/// Determines whether or not a given element exists within a given list. -/// -/// This function traverses the list to find the element, so it runs in linear -/// time. -/// -/// ## Examples -/// -/// ```gleam -/// > [] |> contains(any: 0) -/// False -/// ``` -/// -/// ```gleam -/// > [0] |> contains(any: 0) -/// True -/// ``` -/// -/// ```gleam -/// > [1] |> contains(any: 0) -/// False -/// ``` -/// -/// ```gleam -/// > [1, 1] |> contains(any: 0) -/// False -/// ``` -/// -/// ```gleam -/// > [1, 0] |> contains(any: 0) -/// True -/// ``` -/// -pub fn contains(list: List(a), any elem: a) -> Bool { - case list { - [] -> False - [first, ..] if first == elem -> True - [_, ..rest] -> contains(rest, elem) - } -} - -/// Gets the first element from the start of the list, if there is one. -/// -/// ## Examples -/// -/// ```gleam -/// > first([]) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > first([0]) -/// Ok(0) -/// ``` -/// -/// ```gleam -/// > first([1, 2]) -/// Ok(1) -/// ``` -/// -pub fn first(list: List(a)) -> Result(a, Nil) { - case list { - [] -> Error(Nil) - [x, ..] -> Ok(x) - } -} - -/// Returns the list minus the first element. If the list is empty, `Error(Nil)` is -/// returned. -/// -/// This function runs in constant time and does not make a copy of the list. -/// -/// ## Examples -/// -/// ```gleam -/// > rest([]) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > rest([0]) -/// Ok([]) -/// ``` -/// -/// ```gleam -/// > rest([1, 2]) -/// Ok([2]) -/// ``` -/// -pub fn rest(list: List(a)) -> Result(List(a), Nil) { - case list { - [] -> Error(Nil) - [_, ..xs] -> Ok(xs) - } -} - -fn update_group( - f: fn(element) -> key, -) -> fn(Dict(key, List(element)), element) -> Dict(key, List(element)) { - fn(groups, elem) { - case dict.get(groups, f(elem)) { - Ok(existing) -> dict.insert(groups, f(elem), [elem, ..existing]) - Error(_) -> dict.insert(groups, f(elem), [elem]) - } - } -} - -/// Takes a list and groups the values by a key -/// which is built from a key function. -/// -/// Does not preserve the initial value order. -/// -/// ## Examples -/// -/// ```gleam -/// > [Ok(3), Error("Wrong"), Ok(200), Ok(73)] -/// |> group(by: fn(i) { -/// case i { -/// Ok(_) -> "Successful" -/// Error(_) -> "Failed" -/// } -/// }) -/// |> dict.to_list -/// -/// [ -/// #("Failed", [Error("Wrong")]), -/// #("Successful", [Ok(73), Ok(200), Ok(3)]) -/// ] -/// -/// > group([1,2,3,4,5], by: fn(i) { i - i / 3 * 3 }) -/// |> dict.to_list -/// [#(0, [3]), #(1, [4, 1]), #(2, [5, 2])] -/// ``` -/// -pub fn group(list: List(v), by key: fn(v) -> k) -> Dict(k, List(v)) { - fold(list, dict.new(), update_group(key)) -} - -fn do_filter(list: List(a), fun: fn(a) -> Bool, acc: List(a)) -> List(a) { - case list { - [] -> reverse(acc) - [x, ..xs] -> { - let new_acc = case fun(x) { - True -> [x, ..acc] - False -> acc - } - do_filter(xs, fun, new_acc) - } - } -} - -/// Returns a new list containing only the elements from the first list for -/// which the given functions returns `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > filter([2, 4, 6, 1], fn(x) { x > 2 }) -/// [4, 6] -/// ``` -/// -/// ```gleam -/// > filter([2, 4, 6, 1], fn(x) { x > 6 }) -/// [] -/// ``` -/// -pub fn filter(list: List(a), keeping predicate: fn(a) -> Bool) -> List(a) { - do_filter(list, predicate, []) -} - -fn do_filter_map( - list: List(a), - fun: fn(a) -> Result(b, e), - acc: List(b), -) -> List(b) { - case list { - [] -> reverse(acc) - [x, ..xs] -> { - let new_acc = case fun(x) { - Ok(x) -> [x, ..acc] - Error(_) -> acc - } - do_filter_map(xs, fun, new_acc) - } - } -} - -/// Returns a new list containing only the elements from the first list for -/// which the given functions returns `Ok(_)`. -/// -/// ## Examples -/// -/// ```gleam -/// > filter_map([2, 4, 6, 1], Error) -/// [] -/// ``` -/// -/// ```gleam -/// > filter_map([2, 4, 6, 1], fn(x) { Ok(x + 1) }) -/// [3, 5, 7, 2] -/// ``` -/// -pub fn filter_map(list: List(a), with fun: fn(a) -> Result(b, e)) -> List(b) { - do_filter_map(list, fun, []) -} - -fn do_map(list: List(a), fun: fn(a) -> b, acc: List(b)) -> List(b) { - case list { - [] -> reverse(acc) - [x, ..xs] -> do_map(xs, fun, [fun(x), ..acc]) - } -} - -/// Returns a new list containing only the elements of the first list after the -/// function has been applied to each one. -/// -/// ## Examples -/// -/// ```gleam -/// > map([2, 4, 6], fn(x) { x * 2 }) -/// [4, 8, 12] -/// ``` -/// -pub fn map(list: List(a), with fun: fn(a) -> b) -> List(b) { - do_map(list, fun, []) -} - -/// Combines two lists into a single list using the given function. -/// -/// If a list is longer than the other the extra elements are dropped. -/// -/// ## Examples -/// -/// ```gleam -/// > map2([1, 2, 3], [4, 5, 6], fn(x, y) { x + y }) -/// [5, 7, 9] -/// ``` -/// -/// ```gleam -/// > map2([1, 2], ["a", "b", "c"], fn(i, x) { #(i, x) }) -/// [#(1, "a"), #(2, "b")] -/// ``` -/// -pub fn map2(list1: List(a), list2: List(b), with fun: fn(a, b) -> c) -> List(c) { - do_map2(list1, list2, fun, []) -} - -fn do_map2( - list1: List(a), - list2: List(b), - fun: fn(a, b) -> c, - acc: List(c), -) -> List(c) { - case list1, list2 { - [], _ | _, [] -> reverse(acc) - [a, ..as_], [b, ..bs] -> do_map2(as_, bs, fun, [fun(a, b), ..acc]) - } -} - -/// Similar to `map` but also lets you pass around an accumulated value. -/// -/// ## Examples -/// -/// ```gleam -/// > map_fold( -/// over: [1, 2, 3], -/// from: 100, -/// with: fn(memo, i) { #(memo + i, i * 2) } -/// ) -/// #(106, [2, 4, 6]) -/// ``` -/// -pub fn map_fold( - over list: List(a), - from acc: acc, - with fun: fn(acc, a) -> #(acc, b), -) -> #(acc, List(b)) { - fold( - over: list, - from: #(acc, []), - with: fn(acc, item) { - let #(current_acc, items) = acc - let #(next_acc, next_item) = fun(current_acc, item) - #(next_acc, [next_item, ..items]) - }, - ) - |> pair.map_second(reverse) -} - -fn do_index_map( - list: List(a), - fun: fn(Int, a) -> b, - index: Int, - acc: List(b), -) -> List(b) { - case list { - [] -> reverse(acc) - [x, ..xs] -> { - let acc = [fun(index, x), ..acc] - do_index_map(xs, fun, index + 1, acc) - } - } -} - -/// Returns a new list containing only the elements of the first list after the -/// function has been applied to each one and their index. -/// -/// The index starts at 0, so the first element is 0, the second is 1, and so -/// on. -/// -/// ## Examples -/// -/// ```gleam -/// > index_map(["a", "b"], fn(i, x) { #(i, x) }) -/// [#(0, "a"), #(1, "b")] -/// ``` -/// -pub fn index_map(list: List(a), with fun: fn(Int, a) -> b) -> List(b) { - do_index_map(list, fun, 0, []) -} - -fn do_try_map( - list: List(a), - fun: fn(a) -> Result(b, e), - acc: List(b), -) -> Result(List(b), e) { - case list { - [] -> Ok(reverse(acc)) - [x, ..xs] -> - case fun(x) { - Ok(y) -> do_try_map(xs, fun, [y, ..acc]) - Error(error) -> Error(error) - } - } -} - -/// Takes a function that returns a `Result` and applies it to each element in a -/// given list in turn. -/// -/// If the function returns `Ok(new_value)` for all elements in the list then a -/// list of the new values is returned. -/// -/// If the function returns `Error(reason)` for any of the elements then it is -/// returned immediately. None of the elements in the list are processed after -/// one returns an `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > try_map([1, 2, 3], fn(x) { Ok(x + 2) }) -/// Ok([3, 4, 5]) -/// ``` -/// -/// ```gleam -/// > try_map([1, 2, 3], fn(_) { Error(0) }) -/// Error(0) -/// ``` -/// -/// ```gleam -/// > try_map([[1], [2, 3]], first) -/// Ok([1, 2]) -/// ``` -/// -/// ```gleam -/// > try_map([[1], [], [2]], first) -/// Error(Nil) -/// ``` -/// -pub fn try_map( - over list: List(a), - with fun: fn(a) -> Result(b, e), -) -> Result(List(b), e) { - do_try_map(list, fun, []) -} - -/// Returns a list that is the given list with up to the given number of -/// elements removed from the front of the list. -/// -/// If the element has less than the number of elements an empty list is -/// returned. -/// -/// This function runs in linear time but does not copy the list. -/// -/// ## Examples -/// -/// ```gleam -/// > drop([1, 2, 3, 4], 2) -/// [3, 4] -/// ``` -/// -/// ```gleam -/// > drop([1, 2, 3, 4], 9) -/// [] -/// ``` -/// -pub fn drop(from list: List(a), up_to n: Int) -> List(a) { - case n <= 0 { - True -> list - False -> - case list { - [] -> [] - [_, ..xs] -> drop(xs, n - 1) - } - } -} - -fn do_take(list: List(a), n: Int, acc: List(a)) -> List(a) { - case n <= 0 { - True -> reverse(acc) - False -> - case list { - [] -> reverse(acc) - [x, ..xs] -> do_take(xs, n - 1, [x, ..acc]) - } - } -} - -/// Returns a list containing the first given number of elements from the given -/// list. -/// -/// If the element has less than the number of elements then the full list is -/// returned. -/// -/// This function runs in linear time but does not copy the list. -/// -/// ## Examples -/// -/// ```gleam -/// > take([1, 2, 3, 4], 2) -/// [1, 2] -/// ``` -/// -/// ```gleam -/// > take([1, 2, 3, 4], 9) -/// [1, 2, 3, 4] -/// ``` -/// -pub fn take(from list: List(a), up_to n: Int) -> List(a) { - do_take(list, n, []) -} - -/// Returns a new empty list. -/// -/// ## Examples -/// -/// ```gleam -/// > new() -/// [] -/// ``` -/// -pub fn new() -> List(a) { - [] -} - -/// Joins one list onto the end of another. -/// -/// This function runs in linear time, and it traverses and copies the first -/// list. -/// -/// ## Examples -/// -/// ```gleam -/// > append([1, 2], [3]) -/// [1, 2, 3] -/// ``` -/// -pub fn append(first: List(a), second: List(a)) -> List(a) { - do_append(first, second) -} - -@target(erlang) -@external(erlang, "lists", "append") -fn do_append(a: List(a), b: List(a)) -> List(a) - -@target(javascript) -fn do_append(first: List(a), second: List(a)) -> List(a) { - do_append_acc(reverse(first), second) -} - -@target(javascript) -fn do_append_acc(first: List(a), second: List(a)) -> List(a) { - case first { - [] -> second - [item, ..rest] -> do_append_acc(rest, [item, ..second]) - } -} - -/// Prefixes an item to a list. This can also be done using the dedicated -/// syntax instead -/// -/// ```gleam -/// let new_list = [1, ..existing_list] -/// ``` -/// -pub fn prepend(to list: List(a), this item: a) -> List(a) { - [item, ..list] -} - -// Reverses a list and prepends it to another list -fn reverse_and_prepend(list prefix: List(a), to suffix: List(a)) -> List(a) { - case prefix { - [] -> suffix - [first, ..rest] -> reverse_and_prepend(list: rest, to: [first, ..suffix]) - } -} - -fn do_concat(lists: List(List(a)), acc: List(a)) -> List(a) { - case lists { - [] -> reverse(acc) - [list, ..further_lists] -> - do_concat(further_lists, reverse_and_prepend(list: list, to: acc)) - } -} - -/// Joins a list of lists into a single list. -/// -/// This function traverses all elements twice. -/// -/// ## Examples -/// -/// ```gleam -/// > concat([[1], [2, 3], []]) -/// [1, 2, 3] -/// ``` -/// -pub fn concat(lists: List(List(a))) -> List(a) { - do_concat(lists, []) -} - -/// This is the same as `concat`: it joins a list of lists into a single -/// list. -/// -/// This function traverses all elements twice. -/// -/// ## Examples -/// -/// ```gleam -/// > flatten([[1], [2, 3], []]) -/// [1, 2, 3] -/// ``` -/// -pub fn flatten(lists: List(List(a))) -> List(a) { - do_concat(lists, []) -} - -/// Maps the list with the given function into a list of lists, and then flattens it. -/// -/// ## Examples -/// -/// ```gleam -/// > flat_map([2, 4, 6], fn(x) { [x, x + 1] }) -/// [2, 3, 4, 5, 6, 7] -/// ``` -/// -pub fn flat_map(over list: List(a), with fun: fn(a) -> List(b)) -> List(b) { - map(list, fun) - |> concat -} - -/// Reduces a list of elements into a single value by calling a given function -/// on each element, going from left to right. -/// -/// `fold([1, 2, 3], 0, add)` is the equivalent of -/// `add(add(add(0, 1), 2), 3)`. -/// -/// This function runs in linear time. -/// -pub fn fold( - over list: List(a), - from initial: acc, - with fun: fn(acc, a) -> acc, -) -> acc { - case list { - [] -> initial - [x, ..rest] -> fold(rest, fun(initial, x), fun) - } -} - -/// Reduces a list of elements into a single value by calling a given function -/// on each element, going from right to left. -/// -/// `fold_right([1, 2, 3], 0, add)` is the equivalent of -/// `add(add(add(0, 3), 2), 1)`. -/// -/// This function runs in linear time. -/// -/// Unlike `fold` this function is not tail recursive. Where possible use -/// `fold` instead as it will use less memory. -/// -pub fn fold_right( - over list: List(a), - from initial: acc, - with fun: fn(acc, a) -> acc, -) -> acc { - case list { - [] -> initial - [x, ..rest] -> fun(fold_right(rest, initial, fun), x) - } -} - -fn do_index_fold( - over: List(a), - acc: acc, - with: fn(acc, a, Int) -> acc, - index: Int, -) -> acc { - case over { - [] -> acc - [first, ..rest] -> - do_index_fold(rest, with(acc, first, index), with, index + 1) - } -} - -/// Like fold but the folding function also receives the index of the current element. -/// -/// ## Examples -/// -/// ```gleam -/// ["a", "b", "c"] -/// |> index_fold([], fn(acc, item, index) { ... }) -/// ``` -/// -pub fn index_fold( - over over: List(a), - from initial: acc, - with fun: fn(acc, a, Int) -> acc, -) -> acc { - do_index_fold(over, initial, fun, 0) -} - -/// A variant of fold that might fail. -/// -/// The folding function should return `Result(accumulator, error)`. -/// If the returned value is `Ok(accumulator)` try_fold will try the next value in the list. -/// If the returned value is `Error(error)` try_fold will stop and return that error. -/// -/// ## Examples -/// -/// ```gleam -/// [1, 2, 3, 4] -/// |> try_fold(0, fn(acc, i) { -/// case i < 3 { -/// True -> Ok(acc + i) -/// False -> Error(Nil) -/// } -/// }) -/// ``` -/// -pub fn try_fold( - over collection: List(a), - from accumulator: acc, - with fun: fn(acc, a) -> Result(acc, e), -) -> Result(acc, e) { - case collection { - [] -> Ok(accumulator) - [first, ..rest] -> - case fun(accumulator, first) { - Ok(result) -> try_fold(rest, result, fun) - Error(_) as error -> error - } - } -} - -pub type ContinueOrStop(a) { - Continue(a) - Stop(a) -} - -/// A variant of fold that allows to stop folding earlier. -/// -/// The folding function should return `ContinueOrStop(accumulator)`. -/// If the returned value is `Continue(accumulator)` fold_until will try the next value in the list. -/// If the returned value is `Stop(accumulator)` fold_until will stop and return that accumulator. -/// -/// ## Examples -/// -/// ```gleam -/// [1, 2, 3, 4] -/// |> fold_until(0, fn(acc, i) { -/// case i < 3 { -/// True -> Continue(acc + i) -/// False -> Stop(acc) -/// } -/// }) -/// ``` -/// -pub fn fold_until( - over collection: List(a), - from accumulator: acc, - with fun: fn(acc, a) -> ContinueOrStop(acc), -) -> acc { - case collection { - [] -> accumulator - [first, ..rest] -> - case fun(accumulator, first) { - Continue(next_accumulator) -> fold_until(rest, next_accumulator, fun) - Stop(b) -> b - } - } -} - -/// Finds the first element in a given list for which the given function returns -/// `True`. -/// -/// Returns `Error(Nil)` if no such element is found. -/// -/// ## Examples -/// -/// ```gleam -/// > find([1, 2, 3], fn(x) { x > 2 }) -/// Ok(3) -/// ``` -/// -/// ```gleam -/// > find([1, 2, 3], fn(x) { x > 4 }) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > find([], fn(_) { True }) -/// Error(Nil) -/// ``` -/// -pub fn find( - in haystack: List(a), - one_that is_desired: fn(a) -> Bool, -) -> Result(a, Nil) { - case haystack { - [] -> Error(Nil) - [x, ..rest] -> - case is_desired(x) { - True -> Ok(x) - _ -> find(in: rest, one_that: is_desired) - } - } -} - -/// Finds the first element in a given list for which the given function returns -/// `Ok(new_value)`, then returns the wrapped `new_value`. -/// -/// Returns `Error(Nil)` if no such element is found. -/// -/// ## Examples -/// -/// ```gleam -/// > find_map([[], [2], [3]], first) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > find_map([[], []], first) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > find_map([], first) -/// Error(Nil) -/// ``` -/// -pub fn find_map( - in haystack: List(a), - with fun: fn(a) -> Result(b, c), -) -> Result(b, Nil) { - case haystack { - [] -> Error(Nil) - [x, ..rest] -> - case fun(x) { - Ok(x) -> Ok(x) - _ -> find_map(in: rest, with: fun) - } - } -} - -/// Returns `True` if the given function returns `True` for all the elements in -/// the given list. If the function returns `False` for any of the elements it -/// immediately returns `False` without checking the rest of the list. -/// -/// ## Examples -/// -/// ```gleam -/// > all([], fn(x) { x > 3 }) -/// True -/// ``` -/// -/// ```gleam -/// > all([4, 5], fn(x) { x > 3 }) -/// True -/// ``` -/// -/// ```gleam -/// > all([4, 3], fn(x) { x > 3 }) -/// False -/// ``` -/// -pub fn all(in list: List(a), satisfying predicate: fn(a) -> Bool) -> Bool { - case list { - [] -> True - [first, ..rest] -> - case predicate(first) { - True -> all(rest, predicate) - False -> False - } - } -} - -/// Returns `True` if the given function returns `True` for any the elements in -/// the given list. If the function returns `True` for any of the elements it -/// immediately returns `True` without checking the rest of the list. -/// -/// ## Examples -/// -/// ```gleam -/// > any([], fn(x) { x > 3 }) -/// False -/// ``` -/// -/// ```gleam -/// > any([4, 5], fn(x) { x > 3 }) -/// True -/// ``` -/// -/// ```gleam -/// > any([4, 3], fn(x) { x > 4 }) -/// False -/// ``` -/// -/// ```gleam -/// > any([3, 4], fn(x) { x > 3 }) -/// True -/// ``` -/// -pub fn any(in list: List(a), satisfying predicate: fn(a) -> Bool) -> Bool { - case list { - [] -> False - [first, ..rest] -> - case predicate(first) { - True -> True - False -> any(rest, predicate) - } - } -} - -fn do_zip(xs: List(a), ys: List(b), acc: List(#(a, b))) -> List(#(a, b)) { - case xs, ys { - [x, ..xs], [y, ..ys] -> do_zip(xs, ys, [#(x, y), ..acc]) - _, _ -> reverse(acc) - } -} - -/// Takes two lists and returns a single list of 2-element tuples. -/// -/// If one of the lists is longer than the other, the remaining elements from -/// the longer list are not used. -/// -/// ## Examples -/// -/// ```gleam -/// > zip([], []) -/// [] -/// ``` -/// -/// ```gleam -/// > zip([1, 2], [3]) -/// [#(1, 3)] -/// ``` -/// -/// ```gleam -/// > zip([1], [3, 4]) -/// [#(1, 3)] -/// ``` -/// -/// ```gleam -/// > zip([1, 2], [3, 4]) -/// [#(1, 3), #(2, 4)] -/// ``` -/// -pub fn zip(list: List(a), with other: List(b)) -> List(#(a, b)) { - do_zip(list, other, []) -} - -/// Takes two lists and returns a single list of 2-element tuples. -/// -/// If one of the lists is longer than the other, an `Error` is returned. -/// -/// ## Examples -/// -/// ```gleam -/// > strict_zip([], []) -/// Ok([]) -/// ``` -/// -/// ```gleam -/// > strict_zip([1, 2], [3]) -/// Error(LengthMismatch) -/// ``` -/// -/// ```gleam -/// > strict_zip([1], [3, 4]) -/// Error(LengthMismatch) -/// ``` -/// -/// ```gleam -/// > strict_zip([1, 2], [3, 4]) -/// Ok([#(1, 3), #(2, 4)]) -/// ``` -/// -pub fn strict_zip( - list: List(a), - with other: List(b), -) -> Result(List(#(a, b)), LengthMismatch) { - case length(of: list) == length(of: other) { - True -> Ok(zip(list, other)) - False -> Error(LengthMismatch) - } -} - -fn do_unzip(input, xs, ys) { - case input { - [] -> #(reverse(xs), reverse(ys)) - [#(x, y), ..rest] -> do_unzip(rest, [x, ..xs], [y, ..ys]) - } -} - -/// Takes a single list of 2-element tuples and returns two lists. -/// -/// ## Examples -/// -/// ```gleam -/// > unzip([#(1, 2), #(3, 4)]) -/// #([1, 3], [2, 4]) -/// ``` -/// -/// ```gleam -/// > unzip([]) -/// #([], []) -/// ``` -/// -pub fn unzip(input: List(#(a, b))) -> #(List(a), List(b)) { - do_unzip(input, [], []) -} - -fn do_intersperse(list: List(a), separator: a, acc: List(a)) -> List(a) { - case list { - [] -> reverse(acc) - [x, ..rest] -> do_intersperse(rest, separator, [x, separator, ..acc]) - } -} - -/// Inserts a given value between each existing element in a given list. -/// -/// This function runs in linear time and copies the list. -/// -/// ## Examples -/// -/// ```gleam -/// > intersperse([1, 1, 1], 2) -/// [1, 2, 1, 2, 1] -/// ``` -/// -/// ```gleam -/// > intersperse([], 2) -/// [] -/// ``` -/// -pub fn intersperse(list: List(a), with elem: a) -> List(a) { - case list { - [] | [_] -> list - [x, ..rest] -> do_intersperse(rest, elem, [x]) - } -} - -/// Returns the element in the Nth position in the list, with 0 being the first -/// position. -/// -/// `Error(Nil)` is returned if the list is not long enough for the given index -/// or if the index is less than 0. -/// -/// ## Examples -/// -/// ```gleam -/// > at([1, 2, 3], 1) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > at([1, 2, 3], 5) -/// Error(Nil) -/// ``` -/// -pub fn at(in list: List(a), get index: Int) -> Result(a, Nil) { - case index >= 0 { - True -> - list - |> drop(index) - |> first - False -> Error(Nil) - } -} - -/// Removes any duplicate elements from a given list. -/// -/// This function returns in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > unique([1, 1, 1, 4, 7, 3, 3, 4]) -/// [1, 4, 7, 3] -/// ``` -/// -pub fn unique(list: List(a)) -> List(a) { - case list { - [] -> [] - [x, ..rest] -> [x, ..unique(filter(rest, fn(y) { y != x }))] - } -} - -/// Merge lists `a` and `b` in ascending order -/// but only up to `na` and `nb` number of items respectively. -/// -fn merge_up( - na: Int, - nb: Int, - a: List(a), - b: List(a), - acc: List(a), - compare: fn(a, a) -> Order, -) { - case na, nb, a, b { - 0, 0, _, _ -> acc - _, 0, [ax, ..ar], _ -> merge_up(na - 1, nb, ar, b, [ax, ..acc], compare) - 0, _, _, [bx, ..br] -> merge_up(na, nb - 1, a, br, [bx, ..acc], compare) - _, _, [ax, ..ar], [bx, ..br] -> - case compare(ax, bx) { - order.Gt -> merge_up(na, nb - 1, a, br, [bx, ..acc], compare) - _ -> merge_up(na - 1, nb, ar, b, [ax, ..acc], compare) - } - _, _, _, _ -> acc - } -} - -/// Merge lists `a` and `b` in descending order -/// but only up to `na` and `nb` number of items respectively. -/// -fn merge_down( - na: Int, - nb: Int, - a: List(a), - b: List(a), - acc: List(a), - compare: fn(a, a) -> Order, -) { - case na, nb, a, b { - 0, 0, _, _ -> acc - _, 0, [ax, ..ar], _ -> merge_down(na - 1, nb, ar, b, [ax, ..acc], compare) - 0, _, _, [bx, ..br] -> merge_down(na, nb - 1, a, br, [bx, ..acc], compare) - _, _, [ax, ..ar], [bx, ..br] -> - case compare(bx, ax) { - order.Lt -> merge_down(na - 1, nb, ar, b, [ax, ..acc], compare) - _ -> merge_down(na, nb - 1, a, br, [bx, ..acc], compare) - } - _, _, _, _ -> acc - } -} - -/// Merge sort that alternates merging in ascending and descending order -/// because the merge process also reverses the list. -/// -/// Some copying is avoided by merging only a subset of the lists -/// instead of creating and merging new smaller lists. -/// -fn merge_sort( - l: List(a), - ln: Int, - compare: fn(a, a) -> Order, - down: Bool, -) -> List(a) { - let n = ln / 2 - let a = l - let b = drop(l, n) - case ln < 3 { - True -> - case down { - True -> merge_down(n, ln - n, a, b, [], compare) - False -> merge_up(n, ln - n, a, b, [], compare) - } - False -> - case down { - True -> - merge_down( - n, - ln - n, - merge_sort(a, n, compare, False), - merge_sort(b, ln - n, compare, False), - [], - compare, - ) - False -> - merge_up( - n, - ln - n, - merge_sort(a, n, compare, True), - merge_sort(b, ln - n, compare, True), - [], - compare, - ) - } - } -} - -/// Sorts from smallest to largest based upon the ordering specified by a given -/// function. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/int -/// > list.sort([4, 3, 6, 5, 4, 1, 2], by: int.compare) -/// [1, 2, 3, 4, 4, 5, 6] -/// ``` -/// -pub fn sort(list: List(a), by compare: fn(a, a) -> Order) -> List(a) { - merge_sort(list, length(list), compare, True) -} - -/// Creates a list of ints ranging from a given start and finish. -/// -/// ## Examples -/// -/// ```gleam -/// > range(0, 0) -/// [0] -/// ``` -/// -/// ```gleam -/// > range(0, 5) -/// [0, 1, 2, 3, 4, 5] -/// ``` -/// -/// ```gleam -/// > range(1, -5) -/// [1, 0, -1, -2, -3, -4, -5] -/// ``` -/// -pub fn range(from start: Int, to stop: Int) -> List(Int) { - tail_recursive_range(start, stop, []) -} - -fn tail_recursive_range(start: Int, stop: Int, acc: List(Int)) -> List(Int) { - case int.compare(start, stop) { - order.Eq -> [stop, ..acc] - order.Gt -> tail_recursive_range(start, stop + 1, [stop, ..acc]) - order.Lt -> tail_recursive_range(start, stop - 1, [stop, ..acc]) - } -} - -fn do_repeat(a: a, times: Int, acc: List(a)) -> List(a) { - case times <= 0 { - True -> acc - False -> do_repeat(a, times - 1, [a, ..acc]) - } -} - -/// Builds a list of a given value a given number of times. -/// -/// ## Examples -/// -/// ```gleam -/// > repeat("a", times: 0) -/// [] -/// ``` -/// -/// ```gleam -/// > repeat("a", times: 5) -/// ["a", "a", "a", "a", "a"] -/// ``` -/// -pub fn repeat(item a: a, times times: Int) -> List(a) { - do_repeat(a, times, []) -} - -fn do_split(list: List(a), n: Int, taken: List(a)) -> #(List(a), List(a)) { - case n <= 0 { - True -> #(reverse(taken), list) - False -> - case list { - [] -> #(reverse(taken), []) - [x, ..xs] -> do_split(xs, n - 1, [x, ..taken]) - } - } -} - -/// Splits a list in two before the given index. -/// -/// If the list is not long enough to have the given index the before list will -/// be the input list, and the after list will be empty. -/// -/// ## Examples -/// -/// ```gleam -/// > split([6, 7, 8, 9], 0) -/// #([], [6, 7, 8, 9]) -/// ``` -/// -/// ```gleam -/// > split([6, 7, 8, 9], 2) -/// #([6, 7], [8, 9]) -/// ``` -/// -/// ```gleam -/// > split([6, 7, 8, 9], 4) -/// #([6, 7, 8, 9], []) -/// ``` -/// -pub fn split(list list: List(a), at index: Int) -> #(List(a), List(a)) { - do_split(list, index, []) -} - -fn do_split_while( - list: List(a), - f: fn(a) -> Bool, - acc: List(a), -) -> #(List(a), List(a)) { - case list { - [] -> #(reverse(acc), []) - [x, ..xs] -> - case f(x) { - False -> #(reverse(acc), list) - _ -> do_split_while(xs, f, [x, ..acc]) - } - } -} - -/// Splits a list in two before the first element that a given function returns -/// `False` for. -/// -/// If the function returns `True` for all elements the first list will be the -/// input list, and the second list will be empty. -/// -/// ## Examples -/// -/// ```gleam -/// > split_while([1, 2, 3, 4, 5], fn(x) { x <= 3 }) -/// #([1, 2, 3], [4, 5]) -/// ``` -/// -/// ```gleam -/// > split_while([1, 2, 3, 4, 5], fn(x) { x <= 5 }) -/// #([1, 2, 3, 4, 5], []) -/// ``` -/// -pub fn split_while( - list list: List(a), - satisfying predicate: fn(a) -> Bool, -) -> #(List(a), List(a)) { - do_split_while(list, predicate, []) -} - -/// Given a list of 2-element tuples, finds the first tuple that has a given -/// key as the first element and returns the second element. -/// -/// If no tuple is found with the given key then `Error(Nil)` is returned. -/// -/// This function may be useful for interacting with Erlang code where lists of -/// tuples are common. -/// -/// ## Examples -/// -/// ```gleam -/// > key_find([#("a", 0), #("b", 1)], "a") -/// Ok(0) -/// ``` -/// -/// ```gleam -/// > key_find([#("a", 0), #("b", 1)], "b") -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > key_find([#("a", 0), #("b", 1)], "c") -/// Error(Nil) -/// ``` -/// -pub fn key_find( - in keyword_list: List(#(k, v)), - find desired_key: k, -) -> Result(v, Nil) { - find_map( - keyword_list, - fn(keyword) { - let #(key, value) = keyword - case key == desired_key { - True -> Ok(value) - False -> Error(Nil) - } - }, - ) -} - -/// Given a list of 2-element tuples, finds all tuples that have a given -/// key as the first element and returns the second element. -/// -/// This function may be useful for interacting with Erlang code where lists of -/// tuples are common. -/// -/// ## Examples -/// -/// ```gleam -/// > key_filter([#("a", 0), #("b", 1), #("a", 2)], "a") -/// [0, 2] -/// ``` -/// -/// ```gleam -/// > key_filter([#("a", 0), #("b", 1)], "c") -/// [] -/// ``` -/// -pub fn key_filter( - in keyword_list: List(#(k, v)), - find desired_key: k, -) -> List(v) { - filter_map( - keyword_list, - fn(keyword) { - let #(key, value) = keyword - case key == desired_key { - True -> Ok(value) - False -> Error(Nil) - } - }, - ) -} - -fn do_pop(haystack, predicate, checked) { - case haystack { - [] -> Error(Nil) - [x, ..rest] -> - case predicate(x) { - True -> Ok(#(x, append(reverse(checked), rest))) - False -> do_pop(rest, predicate, [x, ..checked]) - } - } -} - -/// Removes the first element in a given list for which the predicate function returns `True`. -/// -/// Returns `Error(Nil)` if no such element is found. -/// -/// ## Examples -/// -/// ```gleam -/// > pop([1, 2, 3], fn(x) { x > 2 }) -/// Ok(#(3, [1, 2])) -/// ``` -/// -/// ```gleam -/// > pop([1, 2, 3], fn(x) { x > 4 }) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > pop([], fn(_) { True }) -/// Error(Nil) -/// ``` -/// -pub fn pop( - in haystack: List(a), - one_that is_desired: fn(a) -> Bool, -) -> Result(#(a, List(a)), Nil) { - do_pop(haystack, is_desired, []) -} - -fn do_pop_map(haystack, mapper, checked) { - case haystack { - [] -> Error(Nil) - [x, ..rest] -> - case mapper(x) { - Ok(y) -> Ok(#(y, append(reverse(checked), rest))) - Error(_) -> do_pop_map(rest, mapper, [x, ..checked]) - } - } -} - -/// Removes the first element in a given list for which the given function returns -/// `Ok(new_value)`, then returns the wrapped `new_value` as well as list with the value removed. -/// -/// Returns `Error(Nil)` if no such element is found. -/// -/// ## Examples -/// -/// ```gleam -/// > pop_map([[], [2], [3]], first) -/// Ok(#(2, [[], [3]])) -/// ``` -/// -/// ```gleam -/// > pop_map([[], []], first) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > pop_map([], first) -/// Error(Nil) -/// ``` -/// -pub fn pop_map( - in haystack: List(a), - one_that is_desired: fn(a) -> Result(b, c), -) -> Result(#(b, List(a)), Nil) { - do_pop_map(haystack, is_desired, []) -} - -/// Given a list of 2-element tuples, finds the first tuple that has a given -/// key as the first element. This function will return the second element -/// of the found tuple and list with tuple removed. -/// -/// If no tuple is found with the given key then `Error(Nil)` is returned. -/// -/// ## Examples -/// -/// ```gleam -/// > key_pop([#("a", 0), #("b", 1)], "a") -/// Ok(#(0, [#("b", 1)])) -/// ``` -/// -/// ```gleam -/// > key_pop([#("a", 0), #("b", 1)], "b") -/// Ok(#(1, [#("a", 0)])) -/// ``` -/// -/// ```gleam -/// > key_pop([#("a", 0), #("b", 1)], "c") -/// Error(Nil) -/// ``` -/// -pub fn key_pop( - haystack: List(#(k, v)), - key: k, -) -> Result(#(v, List(#(k, v))), Nil) { - pop_map( - haystack, - fn(entry) { - let #(k, v) = entry - case k { - k if k == key -> Ok(v) - _ -> Error(Nil) - } - }, - ) -} - -/// Given a list of 2-element tuples, inserts a key and value into the list. -/// -/// If there was already a tuple with the key then it is replaced, otherwise it -/// is added to the end of the list. -/// -/// ## Examples -/// -/// ```gleam -/// > key_set([#(5, 0), #(4, 1)], 4, 100) -/// [#(5, 0), #(4, 100)] -/// ``` -/// -/// ```gleam -/// > key_set([#(5, 0), #(4, 1)], 1, 100) -/// [#(5, 0), #(4, 1), #(1, 100)] -/// ``` -/// -pub fn key_set(list: List(#(a, b)), key: a, value: b) -> List(#(a, b)) { - case list { - [] -> [#(key, value)] - [#(k, _), ..rest] if k == key -> [#(key, value), ..rest] - [first, ..rest] -> [first, ..key_set(rest, key, value)] - } -} - -/// Calls a function for each element in a list, discarding the return value. -/// -/// Useful for calling a side effect for every item of a list. -/// -/// ```gleam -/// > list.each([1, 2, 3], io.println) -/// Nil -/// ``` -/// -pub fn each(list: List(a), f: fn(a) -> b) -> Nil { - case list { - [] -> Nil - [x, ..xs] -> { - f(x) - each(xs, f) - } - } -} - -/// Calls a `Result` returning function for each element in a list, discarding -/// the return value. If the function returns `Error` then the iteration is -/// stopped and the error is returned. -/// -/// Useful for calling a side effect for every item of a list. -/// -/// ## Examples -/// -/// ```gleam -/// > try_each( -/// > over: [1, 2, 3], -/// > with: function_that_might_fail, -/// > ) -/// Ok(Nil) -/// ``` -/// -pub fn try_each( - over list: List(a), - with fun: fn(a) -> Result(b, e), -) -> Result(Nil, e) { - case list { - [] -> Ok(Nil) - [x, ..xs] -> - case fun(x) { - Ok(_) -> try_each(over: xs, with: fun) - Error(e) -> Error(e) - } - } -} - -fn do_partition(list, categorise, trues, falses) { - case list { - [] -> #(reverse(trues), reverse(falses)) - [x, ..xs] -> - case categorise(x) { - True -> do_partition(xs, categorise, [x, ..trues], falses) - False -> do_partition(xs, categorise, trues, [x, ..falses]) - } - } -} - -/// Partitions a list into a tuple/pair of lists -/// by a given categorisation function. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4, 5] |> list.partition(int.is_odd) -/// #([1, 3, 5], [2, 4]) -/// ``` -/// -pub fn partition( - list: List(a), - with categorise: fn(a) -> Bool, -) -> #(List(a), List(a)) { - do_partition(list, categorise, [], []) -} - -/// Returns all the permutations of a list. -/// -/// ## Examples -/// -/// ```gleam -/// > permutations([1, 2]) -/// [[1, 2], [2, 1]] -/// ``` -/// -pub fn permutations(l: List(a)) -> List(List(a)) { - case l { - [] -> [[]] - _ -> - l - |> index_map(fn(i_idx, i) { - l - |> index_fold( - [], - fn(acc, j, j_idx) { - case i_idx == j_idx { - True -> acc - False -> [j, ..acc] - } - }, - ) - |> reverse - |> permutations - |> map(fn(permutation) { [i, ..permutation] }) - }) - |> concat - } -} - -fn do_window(acc: List(List(a)), l: List(a), n: Int) -> List(List(a)) { - let window = take(l, n) - - case length(window) == n { - True -> do_window([window, ..acc], drop(l, 1), n) - False -> acc - } -} - -/// Returns a list of sliding windows. -/// -/// ## Examples -/// -/// ```gleam -/// > window([1,2,3,4,5], 3) -/// [[1, 2, 3], [2, 3, 4], [3, 4, 5]] -/// ``` -/// -/// ```gleam -/// > window([1, 2], 4) -/// [] -/// ``` -/// -pub fn window(l: List(a), by n: Int) -> List(List(a)) { - do_window([], l, n) - |> reverse -} - -/// Returns a list of tuples containing two contiguous elements. -/// -/// ## Examples -/// -/// ```gleam -/// > window_by_2([1,2,3,4]) -/// [#(1, 2), #(2, 3), #(3, 4)] -/// ``` -/// -/// ```gleam -/// > window_by_2([1]) -/// [] -/// ``` -/// -pub fn window_by_2(l: List(a)) -> List(#(a, a)) { - zip(l, drop(l, 1)) -} - -/// Drops the first elements in a given list for which the predicate function returns `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > drop_while([1, 2, 3, 4], fn (x) { x < 3 }) -/// [3, 4] -/// ``` -/// -pub fn drop_while( - in list: List(a), - satisfying predicate: fn(a) -> Bool, -) -> List(a) { - case list { - [] -> [] - [x, ..xs] -> - case predicate(x) { - True -> drop_while(xs, predicate) - False -> [x, ..xs] - } - } -} - -fn do_take_while( - list: List(a), - predicate: fn(a) -> Bool, - acc: List(a), -) -> List(a) { - case list { - [] -> reverse(acc) - [first, ..rest] -> - case predicate(first) { - True -> do_take_while(rest, predicate, [first, ..acc]) - False -> reverse(acc) - } - } -} - -/// Takes the first elements in a given list for which the predicate function returns `True`. -/// -/// ## Examples -/// -/// ```gleam -/// > take_while([1, 2, 3, 2, 4], fn (x) { x < 3 }) -/// [1, 2] -/// ``` -/// -pub fn take_while( - in list: List(a), - satisfying predicate: fn(a) -> Bool, -) -> List(a) { - do_take_while(list, predicate, []) -} - -fn do_chunk( - list: List(a), - f: fn(a) -> key, - previous_key: key, - current_chunk: List(a), - acc: List(List(a)), -) -> List(List(a)) { - case list { - [first, ..rest] -> { - let key = f(first) - case key == previous_key { - False -> { - let new_acc = [reverse(current_chunk), ..acc] - do_chunk(rest, f, key, [first], new_acc) - } - _true -> do_chunk(rest, f, key, [first, ..current_chunk], acc) - } - } - _empty -> reverse([reverse(current_chunk), ..acc]) - } -} - -/// Returns a list of chunks in which -/// the return value of calling `f` on each element is the same. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 2, 3, 4, 4, 6, 7, 7] |> chunk(by: fn(n) { n % 2 }) -/// [[1], [2, 2], [3], [4, 4, 6], [7, 7]] -/// ``` -/// -pub fn chunk(in list: List(a), by f: fn(a) -> key) -> List(List(a)) { - case list { - [] -> [] - [first, ..rest] -> do_chunk(rest, f, f(first), [first], []) - } -} - -fn do_sized_chunk( - list: List(a), - count: Int, - left: Int, - current_chunk: List(a), - acc: List(List(a)), -) -> List(List(a)) { - case list { - [] -> - case current_chunk { - [] -> reverse(acc) - remaining -> reverse([reverse(remaining), ..acc]) - } - [first, ..rest] -> { - let chunk = [first, ..current_chunk] - case left > 1 { - False -> do_sized_chunk(rest, count, count, [], [reverse(chunk), ..acc]) - True -> do_sized_chunk(rest, count, left - 1, chunk, acc) - } - } - } -} - -/// Returns a list of chunks containing `count` elements each. -/// -/// If the last chunk does not have `count` elements, it is instead -/// a partial chunk, with less than `count` elements. -/// -/// For any `count` less than 1 this function behaves as if it was set to 1. -/// -/// ## Examples -/// -/// ```gleam -/// > [1, 2, 3, 4, 5, 6] |> sized_chunk(into: 2) -/// [[1, 2], [3, 4], [5, 6]] -/// ``` -/// -/// ```gleam -/// > [1, 2, 3, 4, 5, 6, 7, 8] |> sized_chunk(into: 3) -/// [[1, 2, 3], [4, 5, 6], [7, 8]] -/// ``` -/// -pub fn sized_chunk(in list: List(a), into count: Int) -> List(List(a)) { - do_sized_chunk(list, count, count, [], []) -} - -/// This function acts similar to fold, but does not take an initial state. -/// Instead, it starts from the first element in the list -/// and combines it with each subsequent element in turn using the given -/// function. The function is called as `fun(accumulator, current_element)`. -/// -/// Returns `Ok` to indicate a successful run, and `Error` if called on an -/// empty list. -/// -/// ## Examples -/// -/// ```gleam -/// > [] |> reduce(fn(acc, x) { acc + x }) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > [1, 2, 3, 4, 5] |> reduce(fn(acc, x) { acc + x }) -/// Ok(15) -/// ``` -/// -pub fn reduce(over list: List(a), with fun: fn(a, a) -> a) -> Result(a, Nil) { - case list { - [] -> Error(Nil) - [first, ..rest] -> Ok(fold(rest, first, fun)) - } -} - -fn do_scan( - list: List(a), - accumulator: acc, - accumulated: List(acc), - fun: fn(acc, a) -> acc, -) -> List(acc) { - case list { - [] -> reverse(accumulated) - [x, ..xs] -> { - let next = fun(accumulator, x) - do_scan(xs, next, [next, ..accumulated], fun) - } - } -} - -/// Similar to `fold`, but yields the state of the accumulator at each stage. -/// -/// ## Examples -/// -/// ```gleam -/// > scan(over: [1, 2, 3], from: 100, with: fn(acc, i) { acc + i }) -/// [101, 103, 106] -/// ``` -/// -pub fn scan( - over list: List(a), - from initial: acc, - with fun: fn(acc, a) -> acc, -) -> List(acc) { - do_scan(list, initial, [], fun) -} - -/// Returns the last element in the given list. -/// -/// Returns `Error(Nil)` if the list is empty. -/// -/// This function runs in linear time. -/// For a collection oriented around performant access at either end, -/// see `gleam/queue.Queue`. -/// -/// ## Examples -/// -/// ```gleam -/// > last([]) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > last([1, 2, 3, 4, 5]) -/// Ok(5) -/// ``` -/// -pub fn last(list: List(a)) -> Result(a, Nil) { - list - |> reduce(fn(_, elem) { elem }) -} - -/// Return unique combinations of elements in the list. -/// -/// ## Examples -/// -/// ```gleam -/// > combinations([1, 2, 3], 2) -/// [[1, 2], [1, 3], [2, 3]] -/// ``` -/// -/// ```gleam -/// > combinations([1, 2, 3, 4], 3) -/// [[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]] -/// ``` -/// -pub fn combinations(items: List(a), by n: Int) -> List(List(a)) { - case n { - 0 -> [[]] - _ -> - case items { - [] -> [] - [x, ..xs] -> { - let first_combinations = - map(combinations(xs, n - 1), with: fn(com) { [x, ..com] }) - |> reverse - fold( - first_combinations, - combinations(xs, n), - fn(acc, c) { [c, ..acc] }, - ) - } - } - } -} - -fn do_combination_pairs(items: List(a)) -> List(List(#(a, a))) { - case items { - [] -> [] - [x, ..xs] -> { - let first_combinations = map(xs, with: fn(other) { #(x, other) }) - [first_combinations, ..do_combination_pairs(xs)] - } - } -} - -/// Return unique pair combinations of elements in the list -/// -/// ## Examples -/// -/// ```gleam -/// > combination_pairs([1, 2, 3]) -/// [#(1, 2), #(1, 3), #(2, 3)] -/// ``` -/// -pub fn combination_pairs(items: List(a)) -> List(#(a, a)) { - do_combination_pairs(items) - |> concat -} - -/// Make a list alternating the elements from the given lists -/// -/// ## Examples -/// -/// ```gleam -/// > list.interleave([[1, 2], [101, 102], [201, 202]]) -/// [1, 101, 201, 2, 102, 202] -/// ``` -/// -pub fn interleave(list: List(List(a))) -> List(a) { - transpose(list) - |> concat -} - -/// Transpose rows and columns of the list of lists. -/// -/// Notice: This function is not tail recursive, -/// and thus may exceed stack size if called, -/// with large lists (on target JavaScript). -/// -/// ## Examples -/// -/// ```gleam -/// > transpose([[1, 2, 3], [101, 102, 103]]) -/// [[1, 101], [2, 102], [3, 103]] -/// ``` -/// -pub fn transpose(list_of_list: List(List(a))) -> List(List(a)) { - let take_first = fn(list) { - case list { - [] -> [] - [f] -> [f] - [f, ..] -> [f] - } - } - - case list_of_list { - [] -> [] - [[], ..xss] -> transpose(xss) - rows -> { - let firsts = - rows - |> map(take_first) - |> concat - let rest = transpose(map(rows, drop(_, 1))) - [firsts, ..rest] - } - } -} - -fn do_shuffle_pair_unwrap(list: List(#(Float, a)), acc: List(a)) -> List(a) { - case list { - [] -> acc - [elem_pair, ..enumerable] -> - do_shuffle_pair_unwrap(enumerable, [elem_pair.1, ..acc]) - } -} - -fn do_shuffle_by_pair_indexes( - list_of_pairs: List(#(Float, a)), -) -> List(#(Float, a)) { - sort( - list_of_pairs, - fn(a_pair: #(Float, a), b_pair: #(Float, a)) -> Order { - float.compare(a_pair.0, b_pair.0) - }, - ) -} - -/// Takes a list, randomly sorts all items and returns the shuffled list. -/// -/// This function uses Erlang's `:rand` module or Javascript's -/// `Math.random()` to calculate the index shuffling. -/// -/// ## Example -/// -/// ```gleam -/// > range(1, 10) -/// > |> shuffle() -/// [1, 6, 9, 10, 3, 8, 4, 2, 7, 5] -/// ``` -/// -pub fn shuffle(list: List(a)) -> List(a) { - list - |> fold(from: [], with: fn(acc, a) { [#(float.random(0.0, 1.0), a), ..acc] }) - |> do_shuffle_by_pair_indexes() - |> do_shuffle_pair_unwrap([]) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam deleted file mode 100644 index 1f8b228..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/map.gleam +++ /dev/null @@ -1,127 +0,0 @@ -import gleam/option.{type Option} -import gleam/dict - -@deprecated("Please use the `gleam/dict` module instead") -pub type Map(key, value) = - dict.Dict(key, value) - -@deprecated("Please use the `gleam/dict` module instead") -pub fn size(map) -> Int { - dict.size(map) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn to_list(map) -> List(#(key, value)) { - dict.to_list(map) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn from_list(list: List(#(k, v))) { - dict.from_list(list) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn has_key(map, key: k) -> Bool { - dict.has_key(map, key) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn new() { - dict.new() -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn get(from, get: key) -> Result(value, Nil) { - dict.get(from, get) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn insert(into map, for key: k, insert value: v) { - dict.insert(map, key, value) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn map_values(in map, with fun: fn(k, v) -> w) { - dict.map_values(map, fun) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn keys(map) -> List(keys) { - dict.keys(map) -} - -@target(javascript) -fn reverse_and_concat(remaining, accumulator) { - case remaining { - [] -> accumulator - [item, ..rest] -> reverse_and_concat(rest, [item, ..accumulator]) - } -} - -@target(javascript) -fn do_keys_acc(list: List(#(k, v)), acc: List(k)) -> List(k) { - case list { - [] -> reverse_and_concat(acc, []) - [x, ..xs] -> do_keys_acc(xs, [x.0, ..acc]) - } -} - -@target(javascript) -fn do_keys(map) -> List(k) { - let list_of_pairs = - map - |> to_list - do_keys_acc(list_of_pairs, []) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn values(map) -> List(values) { - dict.values(map) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn filter(in map, keeping predicate: fn(k, v) -> Bool) { - dict.filter(map, predicate) -} - -@target(javascript) -fn do_filter(f: fn(key, value) -> Bool, map) { - let insert = fn(map, k, v) { - case f(k, v) { - True -> insert(map, k, v) - _ -> map - } - } - map - |> fold(from: new(), with: insert) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn take(from map, keeping desired_keys: List(k)) { - dict.take(map, desired_keys) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn merge(into map, from new_entries) { - dict.merge(map, new_entries) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn delete(from map, delete key: k) { - dict.delete(map, key) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn drop(from map, drop disallowed_keys: List(k)) { - dict.drop(map, disallowed_keys) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn update(in map, update key: k, with fun: fn(Option(v)) -> v) { - dict.update(map, key, fun) -} - -@deprecated("Please use the `gleam/dict` module instead") -pub fn fold(over map, from initial: acc, with fun: fn(acc, k, v) -> acc) -> acc { - dict.fold(map, initial, fun) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam deleted file mode 100644 index 6015c0f..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/option.gleam +++ /dev/null @@ -1,346 +0,0 @@ -/// `Option` represents a value that may be present or not. `Some` means the value is -/// present, `None` means the value is not. -/// -/// This is Gleam's alternative to having a value that could be Null, as is -/// possible in some other languages. -/// -pub type Option(a) { - Some(a) - None -} - -fn do_all(list: List(Option(a)), acc: List(a)) -> Option(List(a)) { - case list { - [] -> Some(acc) - [x, ..rest] -> { - let accumulate = fn(acc, item) { - case acc, item { - Some(values), Some(value) -> Some([value, ..values]) - _, _ -> None - } - } - accumulate(do_all(rest, acc), x) - } - } -} - -/// Combines a list of `Option`s into a single `Option`. -/// If all elements in the list are `Some` then returns a `Some` holding the list of values. -/// If any element is `None` then returns`None`. -/// -/// ## Examples -/// -/// ```gleam -/// > all([Some(1), Some(2)]) -/// Some([1, 2]) -/// ``` -/// -/// ```gleam -/// > all([Some(1), None]) -/// None -/// ``` -/// -pub fn all(list: List(Option(a))) -> Option(List(a)) { - do_all(list, []) -} - -/// Checks whether the `Option` is a `Some` value. -/// -/// ## Examples -/// -/// ```gleam -/// > is_some(Some(1)) -/// True -/// ``` -/// -/// ```gleam -/// > is_some(None) -/// False -/// ``` -/// -pub fn is_some(option: Option(a)) -> Bool { - option != None -} - -/// Checks whether the `Option` is a `None` value. -/// -/// ## Examples -/// -/// ```gleam -/// > is_none(Some(1)) -/// False -/// ``` -/// -/// ```gleam -/// > is_none(None) -/// True -/// ``` -/// -pub fn is_none(option: Option(a)) -> Bool { - option == None -} - -/// Converts an `Option` type to a `Result` type. -/// -/// ## Examples -/// -/// ```gleam -/// > to_result(Some(1), "some_error") -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > to_result(None, "some_error") -/// Error("some_error") -/// ``` -/// -pub fn to_result(option: Option(a), e) -> Result(a, e) { - case option { - Some(a) -> Ok(a) - _ -> Error(e) - } -} - -/// Converts a `Result` type to an `Option` type. -/// -/// ## Examples -/// -/// ```gleam -/// > from_result(Ok(1)) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > from_result(Error("some_error")) -/// None -/// ``` -/// -pub fn from_result(result: Result(a, e)) -> Option(a) { - case result { - Ok(a) -> Some(a) - _ -> None - } -} - -/// Extracts the value from an `Option`, returning a default value if there is none. -/// -/// ## Examples -/// -/// ```gleam -/// > unwrap(Some(1), 0) -/// 1 -/// ``` -/// -/// ```gleam -/// > unwrap(None, 0) -/// 0 -/// ``` -/// -pub fn unwrap(option: Option(a), or default: a) -> a { - case option { - Some(x) -> x - None -> default - } -} - -/// Extracts the value from an `Option`, evaluating the default function if the option is `None`. -/// -/// ## Examples -/// -/// ```gleam -/// > lazy_unwrap(Some(1), fn() { 0 }) -/// 1 -/// ``` -/// -/// ```gleam -/// > lazy_unwrap(None, fn() { 0 }) -/// 0 -/// ``` -/// -pub fn lazy_unwrap(option: Option(a), or default: fn() -> a) -> a { - case option { - Some(x) -> x - None -> default() - } -} - -/// Updates a value held within the `Some` of an `Option` by calling a given function -/// on it. -/// -/// If the `Option` is a `None` rather than `Some`, the function is not called and the -/// `Option` stays the same. -/// -/// ## Examples -/// -/// ```gleam -/// > map(over: Some(1), with: fn(x) { x + 1 }) -/// Some(2) -/// ``` -/// -/// ```gleam -/// > map(over: None, with: fn(x) { x + 1 }) -/// None -/// ``` -/// -pub fn map(over option: Option(a), with fun: fn(a) -> b) -> Option(b) { - case option { - Some(x) -> Some(fun(x)) - None -> None - } -} - -/// Merges a nested `Option` into a single layer. -/// -/// ## Examples -/// -/// ```gleam -/// > flatten(Some(Some(1))) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > flatten(Some(None)) -/// None -/// ``` -/// -/// ```gleam -/// > flatten(None) -/// None -/// ``` -/// -pub fn flatten(option: Option(Option(a))) -> Option(a) { - case option { - Some(x) -> x - None -> None - } -} - -/// Updates a value held within the `Some` of an `Option` by calling a given function -/// on it, where the given function also returns an `Option`. The two options are -/// then merged together into one `Option`. -/// -/// If the `Option` is a `None` rather than `Some` the function is not called and the -/// option stays the same. -/// -/// This function is the equivalent of calling `map` followed by `flatten`, and -/// it is useful for chaining together multiple functions that return `Option`. -/// -/// ## Examples -/// -/// ```gleam -/// > then(Some(1), fn(x) { Some(x + 1) }) -/// Some(2) -/// ``` -/// -/// ```gleam -/// > then(Some(1), fn(x) { Some(#("a", x)) }) -/// Some(#("a", 1)) -/// ``` -/// -/// ```gleam -/// > then(Some(1), fn(_) { None }) -/// None -/// ``` -/// -/// ```gleam -/// > then(None, fn(x) { Some(x + 1) }) -/// None -/// ``` -/// -pub fn then(option: Option(a), apply fun: fn(a) -> Option(b)) -> Option(b) { - case option { - Some(x) -> fun(x) - None -> None - } -} - -/// Returns the first value if it is `Some`, otherwise returns the second value. -/// -/// ## Examples -/// -/// ```gleam -/// > or(Some(1), Some(2)) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > or(Some(1), None) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > or(None, Some(2)) -/// Some(2) -/// ``` -/// -/// ```gleam -/// > or(None, None) -/// None -/// ``` -/// -pub fn or(first: Option(a), second: Option(a)) -> Option(a) { - case first { - Some(_) -> first - None -> second - } -} - -/// Returns the first value if it is `Some`, otherwise evaluates the given function for a fallback value. -/// -/// ## Examples -/// -/// ```gleam -/// > lazy_or(Some(1), fn() { Some(2) }) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > lazy_or(Some(1), fn() { None }) -/// Some(1) -/// ``` -/// -/// ```gleam -/// > lazy_or(None, fn() { Some(2) }) -/// Some(2) -/// ``` -/// -/// ```gleam -/// > lazy_or(None, fn() { None }) -/// None -/// ``` -/// -pub fn lazy_or(first: Option(a), second: fn() -> Option(a)) -> Option(a) { - case first { - Some(_) -> first - None -> second() - } -} - -fn do_values(list: List(Option(a)), acc: List(a)) -> List(a) { - case list { - [] -> acc - [x, ..xs] -> { - let accumulate = fn(acc, item) { - case item { - Some(value) -> [value, ..acc] - None -> acc - } - } - accumulate(do_values(xs, acc), x) - } - } -} - -/// Given a list of `Option`s, -/// returns only the values inside `Some`. -/// -/// ## Examples -/// -/// ```gleam -/// > values([Some(1), None, Some(3)]) -/// [1, 3] -/// ``` -/// -pub fn values(options: List(Option(a))) -> List(a) { - do_values(options, []) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam deleted file mode 100644 index 12ce011..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/order.gleam +++ /dev/null @@ -1,133 +0,0 @@ -/// Represents the result of a single comparison to determine the precise -/// ordering of two values. -/// -pub type Order { - /// Less-than - Lt - - /// Equal - Eq - - /// Greater than - Gt -} - -/// Inverts an order, so less-than becomes greater-than and greater-than -/// becomes less-than. -/// -/// ## Examples -/// -/// ```gleam -/// > negate(Lt) -/// Gt -/// ``` -/// -/// ```gleam -/// > negate(Eq) -/// Eq -/// ``` -/// -/// ```gleam -/// > negate(Lt) -/// Gt -/// ``` -/// -pub fn negate(order: Order) -> Order { - case order { - Lt -> Gt - Eq -> Eq - Gt -> Lt - } -} - -/// Produces a numeric representation of the order. -/// -/// ## Examples -/// -/// ```gleam -/// > to_int(Lt) -/// -1 -/// ``` -/// -/// ```gleam -/// > to_int(Eq) -/// 0 -/// ``` -/// -/// ```gleam -/// > to_int(Gt) -/// 1 -/// ``` -/// -pub fn to_int(order: Order) -> Int { - case order { - Lt -> -1 - Eq -> 0 - Gt -> 1 - } -} - -/// Compares two `Order` values to one another, producing a new `Order`. -/// -/// ## Examples -/// -/// ```gleam -/// > compare(Eq, with: Lt) -/// Gt -/// ``` -/// -pub fn compare(a: Order, with b: Order) -> Order { - case a, b { - x, y if x == y -> Eq - Lt, _ | Eq, Gt -> Lt - _, _ -> Gt - } -} - -/// Returns the largest of two orders given that `Gt > Eq > Lt`. -/// -/// ## Examples -/// -/// ```gleam -/// > max(Eq, Lt) -/// Eq -/// ``` -/// -pub fn max(a: Order, b: Order) -> Order { - case a, b { - Gt, _ -> Gt - Eq, Lt -> Eq - _, _ -> b - } -} - -/// Returns the smallest of two orders given that `Gt > Eq > Lt`. -/// -/// ## Examples -/// -/// ```gleam -/// > min(Eq, Lt) -/// Lt -/// ``` -/// -pub fn min(a: Order, b: Order) -> Order { - case a, b { - Lt, _ -> Lt - Eq, Gt -> Eq - _, _ -> b - } -} - -/// Inverts an ordering function, so less-than becomes greater-than and greater-than -/// becomes less-than. -/// -/// ## Examples -/// -/// ```gleam -/// > list.sort([1, 5, 4], by: reverse(int.compare)) -/// [5, 4, 1] -/// ``` -/// -pub fn reverse(orderer: fn(a, a) -> Order) -> fn(a, a) -> Order { - fn(a, b) { orderer(b, a) } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam deleted file mode 100644 index 894e6a8..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/pair.gleam +++ /dev/null @@ -1,85 +0,0 @@ -/// Returns the first element in a pair. -/// -/// ## Examples -/// -/// ```gleam -/// > first(#(1, 2)) -/// 1 -/// ``` -/// -pub fn first(pair: #(a, b)) -> a { - let #(a, _) = pair - a -} - -/// Returns the second element in a pair. -/// -/// ## Examples -/// -/// ```gleam -/// > second(#(1, 2)) -/// 2 -/// ``` -/// -pub fn second(pair: #(a, b)) -> b { - let #(_, a) = pair - a -} - -/// Returns a new pair with the elements swapped. -/// -/// ## Examples -/// -/// ```gleam -/// > swap(#(1, 2)) -/// #(2, 1) -/// ``` -/// -pub fn swap(pair: #(a, b)) -> #(b, a) { - let #(a, b) = pair - #(b, a) -} - -/// Returns a new pair with the first element having had `with` applied to -/// it. -/// -/// ## Examples -/// -/// ```gleam -/// > #(1, 2) |> map_first(fn(n) { n * 2 }) -/// #(2, 2) -/// ``` -/// -pub fn map_first(of pair: #(a, b), with fun: fn(a) -> c) -> #(c, b) { - let #(a, b) = pair - #(fun(a), b) -} - -/// Returns a new pair with the second element having had `with` applied to -/// it. -/// -/// ## Examples -/// -/// ```gleam -/// > #(1, 2) |> map_second(fn(n) { n * 2 }) -/// #(1, 4) -/// ``` -/// -pub fn map_second(of pair: #(a, b), with fun: fn(b) -> c) -> #(a, c) { - let #(a, b) = pair - #(a, fun(b)) -} - -/// Returns a new pair with the given elements. This can also be done using the dedicated -/// syntax instead: `new(1, 2) == #(1, 2)`. -/// -/// ## Examples -/// -/// ```gleam -/// > new(1, 2) -/// #(1, 2) -/// ``` -/// -pub fn new(first: a, second: b) -> #(a, b) { - #(first, second) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam deleted file mode 100644 index 5bf60c8..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/queue.gleam +++ /dev/null @@ -1,292 +0,0 @@ -import gleam/list - -/// A queue is an ordered collection of elements. It is similar to a list, but -/// unlike a list elements can be added to or removed from either the front or -/// the back in a performant fashion. -/// -/// The internal representation may be different for two queues with the same -/// elements in the same order if the queues were constructed in different -/// ways. This is the price paid for a queue's fast access at both the front -/// and the back. -/// -/// Because of unpredictable internal representation the equality operator `==` -/// may return surprising results, and the `is_equal` and `is_logically_equal` -/// functions are the recommended way to test queues for equality. -/// -pub opaque type Queue(element) { - Queue(in: List(element), out: List(element)) -} - -/// Creates a fresh queue that contains no values. -/// -pub fn new() -> Queue(a) { - Queue(in: [], out: []) -} - -/// Converts a list of elements into a queue of the same elements in the same -/// order. The first element in the list becomes the front element in the queue. -/// -/// This function runs in constant time. -/// -/// # Examples -/// -/// ```gleam -/// > [1, 2, 3] |> from_list |> length -/// 3 -/// ``` -/// -pub fn from_list(list: List(a)) -> Queue(a) { - Queue(in: [], out: list) -} - -/// Converts a queue of elements into a list of the same elements in the same -/// order. The front element in the queue becomes the first element in the list. -/// -/// This function runs in linear time. -/// -/// # Examples -/// -/// ```gleam -/// > new() |> push_back(1) |> push_back(2) |> to_list -/// [1, 2] -/// ``` -/// -pub fn to_list(queue: Queue(a)) -> List(a) { - queue.out - |> list.append(list.reverse(queue.in)) -} - -/// Determines whether or not the queue is empty. -/// -/// This function runs in constant time. -/// -/// ## Examples -/// -/// ```gleam -/// > [] |> from_list |> is_empty -/// True -/// ``` -/// -/// ```gleam -/// > [1] |> from_list |> is_empty -/// False -/// ``` -/// -/// ```gleam -/// > [1, 2] |> from_list |> is_empty -/// False -/// ``` -/// -pub fn is_empty(queue: Queue(a)) -> Bool { - queue.in == [] && queue.out == [] -} - -/// Counts the number of elements in a given queue. -/// -/// This function has to traverse the queue to determine the number of elements, -/// so it runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > length(from_list([])) -/// 0 -/// ``` -/// -/// ```gleam -/// > length(from_list([1])) -/// 1 -/// ``` -/// -/// ```gleam -/// > length(from_list([1, 2])) -/// 2 -/// ``` -/// -pub fn length(queue: Queue(a)) -> Int { - list.length(queue.in) + list.length(queue.out) -} - -/// Pushes an element onto the back of the queue. -/// -/// # Examples -/// -/// ```gleam -/// > [1, 2] |> from_list |> push_back(3) |> to_list -/// [1, 2, 3] -/// ``` -/// -pub fn push_back(onto queue: Queue(a), this item: a) -> Queue(a) { - Queue(in: [item, ..queue.in], out: queue.out) -} - -/// Pushes an element onto the front of the queue. -/// -/// # Examples -/// -/// ```gleam -/// > [0, 0] |> from_list |> push_front(1) |> to_list -/// [1, 0, 0] -/// ``` -/// -pub fn push_front(onto queue: Queue(a), this item: a) -> Queue(a) { - Queue(in: queue.in, out: [item, ..queue.out]) -} - -/// Gets the last element from the queue, returning the -/// element and a new queue without that element. -/// -/// This function typically runs in constant time, but will occasionally run in -/// linear time. -/// -/// # Examples -/// -/// ```gleam -/// > new() -/// > |> push_back(0) -/// > |> push_back(1) -/// > |> pop_back() -/// Ok(#(1, push_front(new(), 0))) -/// ``` -/// -/// ```gleam -/// > new() -/// > |> push_front(0) -/// > |> pop_back() -/// Ok(#(0, new())) -/// ``` -/// -/// ```gleam -/// > new() -/// > |> pop_back() -/// Error(Nil) -/// ``` -/// -pub fn pop_back(from queue: Queue(a)) -> Result(#(a, Queue(a)), Nil) { - case queue { - Queue(in: [], out: []) -> Error(Nil) - Queue(in: [], out: out) -> pop_back(Queue(in: list.reverse(out), out: [])) - Queue(in: [first, ..rest], out: out) -> { - let queue = Queue(in: rest, out: out) - Ok(#(first, queue)) - } - } -} - -/// Gets the first element from the queue, returning the -/// element and a new queue without that element. -/// -/// This function typically runs in constant time, but will occasionally run in -/// linear time. -/// -/// # Examples -/// -/// ```gleam -/// > queue.new() -/// > |> queue.push_front(1) -/// > |> queue.push_front(0) -/// > |> queue.pop_front() -/// Ok(#(0, queue.push_back(queue.new(), 1))) -/// ``` -/// -/// ```gleam -/// > queue.new() -/// > |> queue.push_back(0) -/// > |> queue.pop_front() -/// Ok(#(0, queue.new())) -/// ``` -/// -/// ```gleam -/// > queue.new() -/// > |> queue.pop_back() -/// Error(Nil) -/// ``` -/// -pub fn pop_front(from queue: Queue(a)) -> Result(#(a, Queue(a)), Nil) { - case queue { - Queue(in: [], out: []) -> Error(Nil) - Queue(in: in, out: []) -> pop_front(Queue(in: [], out: list.reverse(in))) - Queue(in: in, out: [first, ..rest]) -> { - let queue = Queue(in: in, out: rest) - Ok(#(first, queue)) - } - } -} - -/// Creates a new queue from a given queue containing the same elements, but in -/// the opposite order. -/// -/// This function runs in constant time. -/// -/// ## Examples -/// -/// ```gleam -/// > [] |> from_list |> reverse |> to_list -/// [] -/// ``` -/// -/// ```gleam -/// > [1] |> from_list |> reverse |> to_list -/// [1] -/// ``` -/// -/// ```gleam -/// > [1, 2] |> from_list |> reverse |> to_list -/// [2, 1] -/// ``` -/// -pub fn reverse(queue: Queue(a)) -> Queue(a) { - Queue(in: queue.out, out: queue.in) -} - -fn check_equal( - xs: List(t), - x_tail: List(t), - ys: List(t), - y_tail: List(t), - eq: fn(t, t) -> Bool, -) -> Bool { - case xs, x_tail, ys, y_tail { - [], [], [], [] -> True - [x, ..xs], _, [y, ..ys], _ -> - case eq(x, y) { - False -> False - True -> check_equal(xs, x_tail, ys, y_tail, eq) - } - [], [_, ..], _, _ -> check_equal(list.reverse(x_tail), [], ys, y_tail, eq) - _, _, [], [_, ..] -> check_equal(xs, x_tail, list.reverse(y_tail), [], eq) - _, _, _, _ -> False - } -} - -/// Checks whether two queues have equal elements in the same order, where the -/// equality of elements is determined by a given equality checking function. -/// -/// This function is useful as the internal representation may be different for -/// two queues with the same elements in the same order depending on how they -/// were constructed, so the equality operator `==` may return surprising -/// results. -/// -/// This function runs in linear time multiplied by the time taken by the -/// element equality checking function. -/// -pub fn is_logically_equal( - a: Queue(t), - to b: Queue(t), - checking element_is_equal: fn(t, t) -> Bool, -) -> Bool { - check_equal(a.out, a.in, b.out, b.in, element_is_equal) -} - -/// Checks whether two queues have the same elements in the same order. -/// -/// This function is useful as the internal representation may be different for -/// two queues with the same elements in the same order depending on how they -/// were constructed, so the equality operator `==` may return surprising -/// results. -/// -/// This function runs in linear time. -/// -pub fn is_equal(a: Queue(t), to b: Queue(t)) -> Bool { - check_equal(a.out, a.in, b.out, b.in, fn(a, b) { a == b }) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam deleted file mode 100644 index 9ffda78..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/regex.gleam +++ /dev/null @@ -1,214 +0,0 @@ -//// This module contains regular expression matching functions for strings. -//// The matching algorithms of the library are based on the PCRE library, but not -//// all of the PCRE library is interfaced and some parts of the library go beyond -//// what PCRE offers. Currently PCRE version 8.40 (release date 2017-01-11) is used. - -import gleam/option.{type Option} - -pub type Regex - -/// The details about a particular match: -/// -pub type Match { - Match( - /// The full string of the match. - content: String, - /// A `Regex` can have subpatterns, sup-parts that are in parentheses. - submatches: List(Option(String)), - ) -} - -/// When a regular expression fails to compile: -/// -pub type CompileError { - CompileError( - /// The problem encountered that caused the compilation to fail - error: String, - /// The byte index into the string to where the problem was found - /// This value may not be correct in JavaScript environments. - byte_index: Int, - ) -} - -pub type Options { - Options(case_insensitive: Bool, multi_line: Bool) -} - -/// Creates a `Regex` with some additional options. -/// -/// ## Examples -/// -/// ```gleam -/// > let options = Options(case_insensitive: False, multi_line: True) -/// > let assert Ok(re) = compile("^[0-9]", with: options) -/// > check(re, "abc\n123") -/// True -/// ``` -/// -/// ```gleam -/// > let options = Options(case_insensitive: True, multi_line: False) -/// > let assert Ok(re) = compile("[A-Z]", with: options) -/// > check(re, "abc123") -/// True -/// ``` -/// -pub fn compile( - pattern: String, - with options: Options, -) -> Result(Regex, CompileError) { - do_compile(pattern, options) -} - -@external(erlang, "gleam_stdlib", "compile_regex") -@external(javascript, "../gleam_stdlib.mjs", "compile_regex") -fn do_compile(a: String, with with: Options) -> Result(Regex, CompileError) - -/// Creates a new `Regex`. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Ok(re) = from_string("[0-9]") -/// > check(re, "abc123") -/// True -/// ``` -/// -/// ```gleam -/// > check(re, "abcxyz") -/// False -/// ``` -/// -/// ```gleam -/// > from_string("[0-9") -/// Error( -/// CompileError( -/// error: "missing terminating ] for character class", -/// byte_index: 4 -/// ) -/// ) -/// ``` -/// -pub fn from_string(pattern: String) -> Result(Regex, CompileError) { - compile(pattern, Options(case_insensitive: False, multi_line: False)) -} - -/// Returns a boolean indicating whether there was a match or not. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Ok(re) = from_string("^f.o.?") -/// > check(with: re, content: "foo") -/// True -/// ``` -/// -/// ```gleam -/// > check(with: re, content: "boo") -/// False -/// ``` -/// -pub fn check(with regex: Regex, content content: String) -> Bool { - do_check(regex, content) -} - -@external(erlang, "gleam_stdlib", "regex_check") -@external(javascript, "../gleam_stdlib.mjs", "regex_check") -fn do_check(a: Regex, b: String) -> Bool - -/// Splits a string. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Ok(re) = from_string(" *, *") -/// > split(with: re, content: "foo,32, 4, 9 ,0") -/// ["foo", "32", "4", "9", "0"] -/// ``` -/// -pub fn split(with regex: Regex, content string: String) -> List(String) { - do_split(regex, string) -} - -@target(erlang) -@external(erlang, "gleam_stdlib", "regex_split") -fn do_split(a: Regex, b: String) -> List(String) - -@target(javascript) -fn do_split(regex, string) -> List(String) { - js_split(string, regex) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "split") -fn js_split(a: String, b: Regex) -> List(String) - -/// Collects all matches of the regular expression. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Ok(re) = from_string("[oi]n a (\\w+)") -/// > scan(with: re, content: "I am on a boat in a lake.") -/// [ -/// Match( -/// content: "on a boat", -/// submatches: [Some("boat")] -/// ), -/// Match( -/// content: "in a lake", -/// submatches: [Some("lake")] -/// ) -/// ] -/// ``` -/// -/// ```gleam -/// > let assert Ok(re) = regex.from_string("([+|\\-])?(\\d+)(\\w+)?") -/// > scan(with: re, content: "-36") -/// [ -/// Match( -/// content: "-36", -/// submatches: [Some("-"), Some("36")] -/// ) -/// ] -/// -/// > scan(with: re, content: "36") -/// [ -/// Match( -/// content: "36", -/// submatches: [None, Some("36")] -/// ) -/// ] -/// ``` -/// -/// ```gleam -/// > let assert Ok(re) = regex.from_string("var\\s*(\\w+)\\s*(int|string)?\\s*=\\s*(.*)") -/// > scan(with: re, content: "var age = 32") -/// [ -/// Match( -/// content: "var age = 32", -/// submatches: [Some("age"), None, Some("32")] -/// ) -/// ] -/// ``` -/// -/// ```gleam -/// > let assert Ok(re) = regex.from_string("let (\\w+) = (\\w+)") -/// > scan(with: re, content: "let age = 32") -/// [ -/// Match( -/// content: "let age = 32", -/// submatches: [Some("age"), Some("32")] -/// ) -/// ] -/// -/// > scan(with: re, content: "const age = 32") -/// [] -/// ``` -/// -pub fn scan(with regex: Regex, content string: String) -> List(Match) { - do_scan(regex, string) -} - -@external(erlang, "gleam_stdlib", "regex_scan") -@external(javascript, "../gleam_stdlib.mjs", "regex_scan") -fn do_scan(a: Regex, b: String) -> List(Match) diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam deleted file mode 100644 index fb6dddb..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/result.gleam +++ /dev/null @@ -1,482 +0,0 @@ -//// Result represents the result of something that may succeed or not. -//// `Ok` means it was successful, `Error` means it was not successful. - -import gleam/list - -/// Checks whether the result is an `Ok` value. -/// -/// ## Examples -/// -/// ```gleam -/// > is_ok(Ok(1)) -/// True -/// ``` -/// -/// ```gleam -/// > is_ok(Error(Nil)) -/// False -/// ``` -/// -pub fn is_ok(result: Result(a, e)) -> Bool { - case result { - Error(_) -> False - Ok(_) -> True - } -} - -/// Checks whether the result is an `Error` value. -/// -/// ## Examples -/// -/// ```gleam -/// > is_error(Ok(1)) -/// False -/// ``` -/// -/// ```gleam -/// > is_error(Error(Nil)) -/// True -/// ``` -/// -pub fn is_error(result: Result(a, e)) -> Bool { - case result { - Ok(_) -> False - Error(_) -> True - } -} - -/// Updates a value held within the `Ok` of a result by calling a given function -/// on it. -/// -/// If the result is an `Error` rather than `Ok` the function is not called and the -/// result stays the same. -/// -/// ## Examples -/// -/// ```gleam -/// > map(over: Ok(1), with: fn(x) { x + 1 }) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > map(over: Error(1), with: fn(x) { x + 1 }) -/// Error(1) -/// ``` -/// -pub fn map(over result: Result(a, e), with fun: fn(a) -> b) -> Result(b, e) { - case result { - Ok(x) -> Ok(fun(x)) - Error(e) -> Error(e) - } -} - -/// Updates a value held within the `Error` of a result by calling a given function -/// on it. -/// -/// If the result is `Ok` rather than `Error` the function is not called and the -/// result stays the same. -/// -/// ## Examples -/// -/// ```gleam -/// > map_error(over: Error(1), with: fn(x) { x + 1 }) -/// Error(2) -/// ``` -/// -/// ```gleam -/// > map_error(over: Ok(1), with: fn(x) { x + 1 }) -/// Ok(1) -/// ``` -/// -pub fn map_error( - over result: Result(a, e), - with fun: fn(e) -> f, -) -> Result(a, f) { - case result { - Ok(x) -> Ok(x) - Error(error) -> Error(fun(error)) - } -} - -/// Merges a nested `Result` into a single layer. -/// -/// ## Examples -/// -/// ```gleam -/// > flatten(Ok(Ok(1))) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > flatten(Ok(Error(""))) -/// Error("") -/// ``` -/// -/// ```gleam -/// > flatten(Error(Nil)) -/// Error(Nil) -/// ``` -/// -pub fn flatten(result: Result(Result(a, e), e)) -> Result(a, e) { - case result { - Ok(x) -> x - Error(error) -> Error(error) - } -} - -/// "Updates" an `Ok` result by passing its value to a function that yields a result, -/// and returning the yielded result. (This may "replace" the `Ok` with an `Error`.) -/// -/// If the input is an `Error` rather than an `Ok`, the function is not called and -/// the original `Error` is returned. -/// -/// This function is the equivalent of calling `map` followed by `flatten`, and -/// it is useful for chaining together multiple functions that may fail. -/// -/// ## Examples -/// -/// ```gleam -/// > try(Ok(1), fn(x) { Ok(x + 1) }) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > try(Ok(1), fn(x) { Ok(#("a", x)) }) -/// Ok(#("a", 1)) -/// ``` -/// -/// ```gleam -/// > try(Ok(1), fn(_) { Error("Oh no") }) -/// Error("Oh no") -/// ``` -/// -/// ```gleam -/// > try(Error(Nil), fn(x) { Ok(x + 1) }) -/// Error(Nil) -/// ``` -/// -pub fn try( - result: Result(a, e), - apply fun: fn(a) -> Result(b, e), -) -> Result(b, e) { - case result { - Ok(x) -> fun(x) - Error(e) -> Error(e) - } -} - -/// An alias for `try`. See the documentation for that function for more information. -/// -pub fn then( - result: Result(a, e), - apply fun: fn(a) -> Result(b, e), -) -> Result(b, e) { - try(result, fun) -} - -/// Extracts the `Ok` value from a result, returning a default value if the result -/// is an `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > unwrap(Ok(1), 0) -/// 1 -/// ``` -/// -/// ```gleam -/// > unwrap(Error(""), 0) -/// 0 -/// ``` -/// -pub fn unwrap(result: Result(a, e), or default: a) -> a { - case result { - Ok(v) -> v - Error(_) -> default - } -} - -/// Extracts the `Ok` value from a result, evaluating the default function if the result -/// is an `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > lazy_unwrap(Ok(1), fn() { 0 }) -/// 1 -/// ``` -/// -/// ```gleam -/// > lazy_unwrap(Error(""), fn() { 0 }) -/// 0 -/// ``` -/// -pub fn lazy_unwrap(result: Result(a, e), or default: fn() -> a) -> a { - case result { - Ok(v) -> v - Error(_) -> default() - } -} - -/// Extracts the `Error` value from a result, returning a default value if the result -/// is an `Ok`. -/// -/// ## Examples -/// -/// ```gleam -/// > unwrap_error(Error(1), 0) -/// 1 -/// ``` -/// -/// ```gleam -/// > unwrap_error(Ok(""), 0) -/// 0 -/// ``` -/// -pub fn unwrap_error(result: Result(a, e), or default: e) -> e { - case result { - Ok(_) -> default - Error(e) -> e - } -} - -/// Extracts the inner value from a result. Both the value and error must be of -/// the same type. -/// -/// ## Examples -/// -/// ```gleam -/// > unwrap_both(Error(1)) -/// 1 -/// ``` -/// -/// ```gleam -/// > unwrap_both(Ok(2)) -/// 2 -/// ``` -/// -pub fn unwrap_both(result: Result(a, a)) -> a { - case result { - Ok(a) -> a - Error(a) -> a - } -} - -/// Transforms any error into `Error(Nil)`. -/// -/// ## Examples -/// -/// ```gleam -/// > nil_error(Error(1)) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > nil_error(Ok(1)) -/// Ok(1) -/// ``` -/// -pub fn nil_error(result: Result(a, e)) -> Result(a, Nil) { - map_error(result, fn(_) { Nil }) -} - -/// Returns the first value if it is `Ok`, otherwise returns the second value. -/// -/// ## Examples -/// -/// ```gleam -/// > or(Ok(1), Ok(2)) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > or(Ok(1), Error("Error 2")) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > or(Error("Error 1"), Ok(2)) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > or(Error("Error 1"), Error("Error 2")) -/// Error("Error 2") -/// ``` -/// -pub fn or(first: Result(a, e), second: Result(a, e)) -> Result(a, e) { - case first { - Ok(_) -> first - Error(_) -> second - } -} - -/// Returns the first value if it is `Ok`, otherwise evaluates the given function for a fallback value. -/// -/// ## Examples -/// -/// ```gleam -/// > lazy_or(Ok(1), fn() { Ok(2) }) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > lazy_or(Ok(1), fn() { Error("Error 2") }) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > lazy_or(Error("Error 1"), fn() { Ok(2) }) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > lazy_or(Error("Error 1"), fn() { Error("Error 2") }) -/// Error("Error 2") -/// ``` -/// -pub fn lazy_or( - first: Result(a, e), - second: fn() -> Result(a, e), -) -> Result(a, e) { - case first { - Ok(_) -> first - Error(_) -> second() - } -} - -/// Combines a list of results into a single result. -/// If all elements in the list are `Ok` then returns an `Ok` holding the list of values. -/// If any element is `Error` then returns the first error. -/// -/// ## Examples -/// -/// ```gleam -/// > all([Ok(1), Ok(2)]) -/// Ok([1, 2]) -/// ``` -/// -/// ```gleam -/// > all([Ok(1), Error("e")]) -/// Error("e") -/// ``` -/// -pub fn all(results: List(Result(a, e))) -> Result(List(a), e) { - list.try_map(results, fn(x) { x }) -} - -/// Given a list of results, returns a pair where the first element is a list -/// of all the values inside `Ok` and the second element is a list with all the -/// values inside `Error`. The values in both lists appear in reverse order with -/// respect to their position in the original list of results. -/// -/// ## Examples -/// -/// ```gleam -/// > partition([Ok(1), Error("a"), Error("b"), Ok(2)]) -/// #([2, 1], ["b", "a"]) -/// ``` -/// -pub fn partition(results: List(Result(a, e))) -> #(List(a), List(e)) { - do_partition(results, [], []) -} - -fn do_partition(results: List(Result(a, e)), oks: List(a), errors: List(e)) { - case results { - [] -> #(oks, errors) - [Ok(a), ..rest] -> do_partition(rest, [a, ..oks], errors) - [Error(e), ..rest] -> do_partition(rest, oks, [e, ..errors]) - } -} - -/// Replace the value within a result -/// -/// ## Examples -/// -/// ```gleam -/// > replace(Ok(1), Nil) -/// Ok(Nil) -/// ``` -/// -/// ```gleam -/// > replace(Error(1), Nil) -/// Error(1) -/// ``` -/// -pub fn replace(result: Result(a, e), value: b) -> Result(b, e) { - case result { - Ok(_) -> Ok(value) - Error(error) -> Error(error) - } -} - -/// Replace the error within a result -/// -/// ## Examples -/// -/// ```gleam -/// > replace_error(Error(1), Nil) -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > replace_error(Ok(1), Nil) -/// Ok(1) -/// ``` -/// -pub fn replace_error(result: Result(a, e1), error: e2) -> Result(a, e2) { - case result { - Ok(x) -> Ok(x) - Error(_) -> Error(error) - } -} - -/// Given a list of results, returns only the values inside `Ok`. -/// -/// ## Examples -/// -/// ```gleam -/// > values([Ok(1), Error("a"), Ok(3)]) -/// [1, 3] -/// ``` -/// -pub fn values(results: List(Result(a, e))) -> List(a) { - list.filter_map(results, fn(r) { r }) -} - -/// Updates a value held within the `Error` of a result by calling a given function -/// on it, where the given function also returns a result. The two results are -/// then merged together into one result. -/// -/// If the result is an `Ok` rather than `Error` the function is not called and the -/// result stays the same. -/// -/// This function is useful for chaining together computations that may fail -/// and trying to recover from possible errors. -/// -/// ## Examples -/// -/// ```gleam -/// > Ok(1) |> try_recover(with: fn(_) { Error("failed to recover") }) -/// Ok(1) -/// ``` -/// -/// ```gleam -/// > Error(1) |> try_recover(with: fn(error) { Ok(error + 1) }) -/// Ok(2) -/// ``` -/// -/// ```gleam -/// > Error(1) |> try_recover(with: fn(error) { Error("failed to recover") }) -/// Error("failed to recover") -/// ``` -/// -pub fn try_recover( - result: Result(a, e), - with fun: fn(e) -> Result(a, f), -) -> Result(a, f) { - case result { - Ok(value) -> Ok(value) - Error(error) -> fun(error) - } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam deleted file mode 100644 index df8d500..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/set.gleam +++ /dev/null @@ -1,264 +0,0 @@ -import gleam/list -import gleam/dict.{type Dict} -import gleam/result - -// A list is used as the map value as an empty list has the smallest -// representation in Erlang's binary format -@target(erlang) -type Token = - List(Nil) - -@target(erlang) -const token = [] - -@target(javascript) -type Token = - Nil - -@target(javascript) -const token = Nil - -/// A set is a collection of unique members of the same type. -/// -/// It is implemented using the `gleam/map` module, so inserts and lookups have -/// logarithmic time complexity. -/// -pub opaque type Set(member) { - Set(map: Dict(member, Token)) -} - -/// Creates a new empty set. -/// -pub fn new() -> Set(member) { - Set(dict.new()) -} - -/// Gets the number of members in a set. -/// -/// This function runs in constant time. -/// -/// ## Examples -/// -/// ```gleam -/// > new() -/// > |> insert(1) -/// > |> insert(2) -/// > |> size -/// 2 -/// ``` -/// -pub fn size(set: Set(member)) -> Int { - dict.size(set.map) -} - -/// Inserts an member into the set. -/// -/// This function runs in logarithmic time. -/// -/// ## Examples -/// -/// ```gleam -/// > new() -/// > |> insert(1) -/// > |> insert(2) -/// > |> size -/// 2 -/// ``` -/// -pub fn insert(into set: Set(member), this member: member) -> Set(member) { - Set(map: dict.insert(set.map, member, token)) -} - -/// Checks whether a set contains a given member. -/// -/// This function runs in logarithmic time. -/// -/// ## Examples -/// -/// ```gleam -/// > new() -/// > |> insert(2) -/// > |> contains(2) -/// True -/// ``` -/// -/// ```gleam -/// > new() -/// > |> insert(2) -/// > |> contains(1) -/// False -/// ``` -/// -pub fn contains(in set: Set(member), this member: member) -> Bool { - set.map - |> dict.get(member) - |> result.is_ok -} - -/// Removes a member from a set. If the set does not contain the member then -/// the set is returned unchanged. -/// -/// This function runs in logarithmic time. -/// -/// ## Examples -/// -/// ```gleam -/// > new() -/// > |> insert(2) -/// > |> delete(2) -/// > |> contains(1) -/// False -/// ``` -/// -pub fn delete(from set: Set(member), this member: member) -> Set(member) { - Set(map: dict.delete(set.map, member)) -} - -/// Converts the set into a list of the contained members. -/// -/// The list has no specific ordering, any unintentional ordering may change in -/// future versions of Gleam or Erlang. -/// -/// This function runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > new() |> insert(2) |> to_list -/// [2] -/// ``` -/// -pub fn to_list(set: Set(member)) -> List(member) { - dict.keys(set.map) -} - -/// Creates a new set of the members in a given list. -/// -/// This function runs in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/list -/// > [1, 1, 2, 4, 3, 2] |> from_list |> to_list |> list.sort -/// [1, 3, 3, 4] -/// ``` -/// -pub fn from_list(members: List(member)) -> Set(member) { - let map = - list.fold( - over: members, - from: dict.new(), - with: fn(m, k) { dict.insert(m, k, token) }, - ) - Set(map) -} - -/// Combines all entries into a single value by calling a given function on each -/// one. -/// -/// Sets are not ordered so the values are not returned in any specific order. -/// Do not write code that relies on the order entries are used by this -/// function as it may change in later versions of Gleam or Erlang. -/// -/// # Examples -/// -/// ```gleam -/// > from_list([1, 3, 9]) -/// > |> fold(0, fn(member, accumulator) { accumulator + member }) -/// 13 -/// ``` -/// -pub fn fold( - over set: Set(member), - from initial: acc, - with reducer: fn(acc, member) -> acc, -) -> acc { - dict.fold(over: set.map, from: initial, with: fn(a, k, _) { reducer(a, k) }) -} - -/// Creates a new set from an existing set, minus any members that a given -/// function returns `False` for. -/// -/// This function runs in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > import gleam/int -/// > from_list([1, 4, 6, 3, 675, 44, 67]) -/// > |> filter(for: int.is_even) -/// > |> to_list -/// [4, 6, 44] -/// ``` -/// -pub fn filter( - in set: Set(member), - keeping predicate: fn(member) -> Bool, -) -> Set(member) { - Set(dict.filter(in: set.map, keeping: fn(m, _) { predicate(m) })) -} - -pub fn drop(from set: Set(member), drop disallowed: List(member)) -> Set(member) { - list.fold(over: disallowed, from: set, with: delete) -} - -/// Creates a new map from a given map, only including any members which are in -/// a given list. -/// -/// This function runs in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > from_list([1, 2, 3]) -/// > |> take([1, 3, 5]) -/// > |> to_list -/// [1, 3] -/// ``` -/// -pub fn take(from set: Set(member), keeping desired: List(member)) -> Set(member) { - Set(dict.take(from: set.map, keeping: desired)) -} - -fn order(first: Set(member), second: Set(member)) -> #(Set(member), Set(member)) { - case dict.size(first.map) > dict.size(second.map) { - True -> #(first, second) - False -> #(second, first) - } -} - -/// Creates a new set that contains all members of both given sets. -/// -/// This function runs in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > union(from_list([1, 2]), from_list([2, 3])) |> to_list -/// [1, 2, 3] -/// ``` -/// -pub fn union(of first: Set(member), and second: Set(member)) -> Set(member) { - let #(larger, smaller) = order(first, second) - fold(over: smaller, from: larger, with: insert) -} - -/// Creates a new set that contains members that are present in both given sets. -/// -/// This function runs in loglinear time. -/// -/// ## Examples -/// -/// ```gleam -/// > intersection(from_list([1, 2]), from_list([2, 3])) |> to_list -/// [2] -/// ``` -/// -pub fn intersection( - of first: Set(member), - and second: Set(member), -) -> Set(member) { - let #(larger, smaller) = order(first, second) - take(from: larger, keeping: to_list(smaller)) -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam deleted file mode 100644 index d4496f3..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/string.gleam +++ /dev/null @@ -1,906 +0,0 @@ -//// Strings in Gleam are UTF-8 binaries. They can be written in your code as -//// text surrounded by `"double quotes"`. - -import gleam/iterator.{type Iterator} -import gleam/list -import gleam/option.{type Option, None, Some} -import gleam/order -import gleam/string_builder.{type StringBuilder} - -/// Determines if a `String` is empty. -/// -/// ## Examples -/// -/// ```gleam -/// > is_empty("") -/// True -/// ``` -/// -/// ```gleam -/// > is_empty("the world") -/// False -/// ``` -/// -pub fn is_empty(str: String) -> Bool { - str == "" -} - -/// Gets the number of grapheme clusters in a given `String`. -/// -/// This function has to iterate across the whole string to count the number of -/// graphemes, so it runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > length("Gleam") -/// 5 -/// ``` -/// -/// ```gleam -/// > length("ß↑e̊") -/// 3 -/// ``` -/// -/// ```gleam -/// > length("") -/// 0 -/// ``` -/// -pub fn length(string: String) -> Int { - do_length(string) -} - -@external(erlang, "string", "length") -@external(javascript, "../gleam_stdlib.mjs", "string_length") -fn do_length(a: String) -> Int - -/// Reverses a `String`. -/// -/// This function has to iterate across the whole `String` so it runs in linear -/// time. -/// -/// ## Examples -/// -/// ```gleam -/// > reverse("stressed") -/// "desserts" -/// ``` -/// -pub fn reverse(string: String) -> String { - do_reverse(string) -} - -@target(erlang) -fn do_reverse(string: String) -> String { - string - |> string_builder.from_string - |> string_builder.reverse - |> string_builder.to_string -} - -@target(javascript) -fn do_reverse(string: String) -> String { - string - |> to_graphemes - |> list.reverse - |> concat -} - -/// Creates a new `String` by replacing all occurrences of a given substring. -/// -/// ## Examples -/// -/// ```gleam -/// > replace("www.example.com", each: ".", with: "-") -/// "www-example-com" -/// ``` -/// -/// ```gleam -/// > replace("a,b,c,d,e", each: ",", with: "/") -/// "a/b/c/d/e" -/// ``` -/// -pub fn replace( - in string: String, - each pattern: String, - with substitute: String, -) -> String { - string - |> string_builder.from_string - |> string_builder.replace(each: pattern, with: substitute) - |> string_builder.to_string -} - -/// Creates a new `String` with all the graphemes in the input `String` converted to -/// lowercase. -/// -/// Useful for case-insensitive comparisons. -/// -/// ## Examples -/// -/// ```gleam -/// > lowercase("X-FILES") -/// "x-files" -/// ``` -/// -pub fn lowercase(string: String) -> String { - do_lowercase(string) -} - -@external(erlang, "string", "lowercase") -@external(javascript, "../gleam_stdlib.mjs", "lowercase") -fn do_lowercase(a: String) -> String - -/// Creates a new `String` with all the graphemes in the input `String` converted to -/// uppercase. -/// -/// Useful for case-insensitive comparisons and VIRTUAL YELLING. -/// -/// ## Examples -/// -/// ```gleam -/// > uppercase("skinner") -/// "SKINNER" -/// ``` -/// -pub fn uppercase(string: String) -> String { - do_uppercase(string) -} - -@external(erlang, "string", "uppercase") -@external(javascript, "../gleam_stdlib.mjs", "uppercase") -fn do_uppercase(a: String) -> String - -/// Compares two `String`s to see which is "larger" by comparing their graphemes. -/// -/// This does not compare the size or length of the given `String`s. -/// -/// ## Examples -/// -/// ```gleam -/// > compare("Anthony", "Anthony") -/// order.Eq -/// ``` -/// -/// ```gleam -/// > compare("A", "B") -/// order.Lt -/// ``` -/// -pub fn compare(a: String, b: String) -> order.Order { - case a == b { - True -> order.Eq - _ -> - case less_than(a, b) { - True -> order.Lt - _ -> order.Gt - } - } -} - -@external(erlang, "gleam_stdlib", "less_than") -@external(javascript, "../gleam_stdlib.mjs", "less_than") -fn less_than(a: String, b: String) -> Bool - -/// Takes a substring given a start grapheme index and a length. Negative indexes -/// are taken starting from the *end* of the list. -/// -/// ## Examples -/// -/// ```gleam -/// > slice(from: "gleam", at_index: 1, length: 2) -/// "le" -/// ``` -/// -/// ```gleam -/// > slice(from: "gleam", at_index: 1, length: 10) -/// "leam" -/// ``` -/// -/// ```gleam -/// > slice(from: "gleam", at_index: 10, length: 3) -/// "" -/// ``` -/// -/// ```gleam -/// > slice(from: "gleam", at_index: -2, length: 2) -/// "am" -/// ``` -/// -/// ```gleam -/// > slice(from: "gleam", at_index: -12, length: 2) -/// "" -/// ``` -/// -pub fn slice(from string: String, at_index idx: Int, length len: Int) -> String { - case len < 0 { - True -> "" - False -> - case idx < 0 { - True -> { - let translated_idx = length(string) + idx - case translated_idx < 0 { - True -> "" - False -> do_slice(string, translated_idx, len) - } - } - False -> do_slice(string, idx, len) - } - } -} - -@target(erlang) -@external(erlang, "string", "slice") -fn do_slice(a: String, b: Int, c: Int) -> String - -@target(javascript) -fn do_slice(string: String, idx: Int, len: Int) -> String { - string - |> to_graphemes - |> list.drop(idx) - |> list.take(len) - |> concat -} - -/// Drops contents of the first `String` that occur before the second `String`. -/// If the `from` string does not contain the `before` string, `from` is returned unchanged. -/// -/// ## Examples -/// -/// ```gleam -/// > crop(from: "The Lone Gunmen", before: "Lone") -/// "Lone Gunmen" -/// ``` -/// -@external(erlang, "gleam_stdlib", "crop_string") -@external(javascript, "../gleam_stdlib.mjs", "crop_string") -pub fn crop(from string: String, before substring: String) -> String - -/// Drops *n* graphemes from the left side of a `String`. -/// -/// ## Examples -/// -/// ```gleam -/// > drop_left(from: "The Lone Gunmen", up_to: 2) -/// "e Lone Gunmen" -/// ``` -/// -pub fn drop_left(from string: String, up_to num_graphemes: Int) -> String { - case num_graphemes < 0 { - True -> string - False -> slice(string, num_graphemes, length(string) - num_graphemes) - } -} - -/// Drops *n* graphemes from the right side of a `String`. -/// -/// ## Examples -/// -/// ```gleam -/// > drop_right(from: "Cigarette Smoking Man", up_to: 2) -/// "Cigarette Smoking M" -/// ``` -/// -pub fn drop_right(from string: String, up_to num_graphemes: Int) -> String { - case num_graphemes < 0 { - True -> string - False -> slice(string, 0, length(string) - num_graphemes) - } -} - -/// Checks if the first `String` contains the second. -/// -/// ## Examples -/// -/// ```gleam -/// > contains(does: "theory", contain: "ory") -/// True -/// ``` -/// -/// ```gleam -/// > contains(does: "theory", contain: "the") -/// True -/// ``` -/// -/// ```gleam -/// > contains(does: "theory", contain: "THE") -/// False -/// ``` -/// -@external(erlang, "gleam_stdlib", "contains_string") -@external(javascript, "../gleam_stdlib.mjs", "contains_string") -pub fn contains(does haystack: String, contain needle: String) -> Bool - -/// Checks whether the first `String` starts with the second one. -/// -/// ## Examples -/// -/// ```gleam -/// > starts_with("theory", "ory") -/// False -/// ``` -/// -pub fn starts_with(string: String, prefix: String) -> Bool { - do_starts_with(string, prefix) -} - -@external(erlang, "gleam_stdlib", "string_starts_with") -@external(javascript, "../gleam_stdlib.mjs", "starts_with") -fn do_starts_with(a: String, b: String) -> Bool - -/// Checks whether the first `String` ends with the second one. -/// -/// ## Examples -/// -/// ```gleam -/// > ends_with("theory", "ory") -/// True -/// ``` -/// -pub fn ends_with(string: String, suffix: String) -> Bool { - do_ends_with(string, suffix) -} - -@external(erlang, "gleam_stdlib", "string_ends_with") -@external(javascript, "../gleam_stdlib.mjs", "ends_with") -fn do_ends_with(a: String, b: String) -> Bool - -/// Creates a list of `String`s by splitting a given string on a given substring. -/// -/// ## Examples -/// -/// ```gleam -/// > split("home/gleam/desktop/", on: "/") -/// ["home", "gleam", "desktop", ""] -/// ``` -/// -pub fn split(x: String, on substring: String) -> List(String) { - case substring { - "" -> to_graphemes(x) - _ -> - x - |> string_builder.from_string - |> string_builder.split(on: substring) - |> list.map(with: string_builder.to_string) - } -} - -/// Splits a `String` a single time on the given substring. -/// -/// Returns an `Error` if substring not present. -/// -/// ## Examples -/// -/// ```gleam -/// > split_once("home/gleam/desktop/", on: "/") -/// Ok(#("home", "gleam/desktop/")) -/// ``` -/// -/// ```gleam -/// > split_once("home/gleam/desktop/", on: "?") -/// Error(Nil) -/// ``` -/// -pub fn split_once( - x: String, - on substring: String, -) -> Result(#(String, String), Nil) { - do_split_once(x, substring) -} - -@target(erlang) -@external(erlang, "string", "split") -fn erl_split(a: String, b: String) -> List(String) - -@target(erlang) -fn do_split_once(x: String, substring: String) -> Result(#(String, String), Nil) { - case erl_split(x, substring) { - [first, rest] -> Ok(#(first, rest)) - _ -> Error(Nil) - } -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "split_once") -fn do_split_once( - x x: String, - substring substring: String, -) -> Result(#(String, String), Nil) - -/// Creates a new `String` by joining two `String`s together. -/// -/// This function copies both `String`s and runs in linear time. If you find -/// yourself joining `String`s frequently consider using the [`string_builder`](../gleam/string_builder.html) -/// module as it can append `String`s much faster! -/// -/// ## Examples -/// -/// ```gleam -/// > append(to: "butter", suffix: "fly") -/// "butterfly" -/// ``` -/// -pub fn append(to first: String, suffix second: String) -> String { - first - |> string_builder.from_string - |> string_builder.append(second) - |> string_builder.to_string -} - -/// Creates a new `String` by joining many `String`s together. -/// -/// This function copies both `String`s and runs in linear time. If you find -/// yourself joining `String`s frequently consider using the [`string_builder`](../gleam/string_builder.html) -/// module as it can append `String`s much faster! -/// -/// ## Examples -/// -/// ```gleam -/// > concat(["never", "the", "less"]) -/// "nevertheless" -/// ``` -/// -pub fn concat(strings: List(String)) -> String { - strings - |> string_builder.from_strings - |> string_builder.to_string -} - -/// Creates a new `String` by repeating a `String` a given number of times. -/// -/// This function runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > repeat("ha", times: 3) -/// "hahaha" -/// ``` -/// -pub fn repeat(string: String, times times: Int) -> String { - iterator.repeat(string) - |> iterator.take(times) - |> iterator.to_list - |> concat -} - -/// Joins many `String`s together with a given separator. -/// -/// This function runs in linear time. -/// -/// ## Examples -/// -/// ```gleam -/// > join(["home","evan","Desktop"], with: "/") -/// "home/evan/Desktop" -/// ``` -/// -pub fn join(strings: List(String), with separator: String) -> String { - do_join(strings, separator) -} - -@target(erlang) -fn do_join(strings: List(String), separator: String) -> String { - strings - |> list.intersperse(with: separator) - |> concat -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "join") -fn do_join(strings strings: List(String), string string: String) -> String - -/// Pads a `String` on the left until it has at least given number of graphemes. -/// -/// ## Examples -/// -/// ```gleam -/// > pad_left("121", to: 5, with: ".") -/// "..121" -/// ``` -/// -/// ```gleam -/// > pad_left("121", to: 3, with: ".") -/// "121" -/// ``` -/// -/// ```gleam -/// > pad_left("121", to: 2, with: ".") -/// "121" -/// ``` -/// -pub fn pad_left(string: String, to desired_length: Int, with pad_string: String) { - let current_length = length(string) - let to_pad_length = desired_length - current_length - padding(to_pad_length, pad_string) - |> iterator.append(iterator.single(string)) - |> iterator.to_list - |> concat -} - -/// Pads a `String` on the right until it has a given length. -/// -/// ## Examples -/// -/// ```gleam -/// > pad_right("123", to: 5, with: ".") -/// "123.." -/// ``` -/// -/// ```gleam -/// > pad_right("123", to: 3, with: ".") -/// "123" -/// ``` -/// -/// ```gleam -/// > pad_right("123", to: 2, with: ".") -/// "123" -/// ``` -/// -pub fn pad_right( - string: String, - to desired_length: Int, - with pad_string: String, -) { - let current_length = length(string) - let to_pad_length = desired_length - current_length - iterator.single(string) - |> iterator.append(padding(to_pad_length, pad_string)) - |> iterator.to_list - |> concat -} - -fn padding(size: Int, pad_string: String) -> Iterator(String) { - let pad_length = length(pad_string) - let num_pads = size / pad_length - let extra = size % pad_length - iterator.repeat(pad_string) - |> iterator.take(num_pads) - |> iterator.append(iterator.single(slice(pad_string, 0, extra))) -} - -/// Removes whitespace on both sides of a `String`. -/// -/// ## Examples -/// -/// ```gleam -/// > trim(" hats \n") -/// "hats" -/// ``` -/// -pub fn trim(string: String) -> String { - do_trim(string) -} - -@target(erlang) -fn do_trim(string: String) -> String { - erl_trim(string, Both) -} - -@target(erlang) -type Direction { - Leading - Trailing - Both -} - -@target(erlang) -@external(erlang, "string", "trim") -fn erl_trim(a: String, b: Direction) -> String - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "trim") -fn do_trim(string string: String) -> String - -/// Removes whitespace on the left of a `String`. -/// -/// ## Examples -/// -/// ```gleam -/// > trim_left(" hats \n") -/// "hats \n" -/// ``` -/// -pub fn trim_left(string: String) -> String { - do_trim_left(string) -} - -@target(erlang) -fn do_trim_left(string: String) -> String { - erl_trim(string, Leading) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "trim_left") -fn do_trim_left(string string: String) -> String - -/// Removes whitespace on the right of a `String`. -/// -/// ## Examples -/// -/// ```gleam -/// > trim_right(" hats \n") -/// " hats" -/// ``` -/// -pub fn trim_right(string: String) -> String { - do_trim_right(string) -} - -@target(erlang) -fn do_trim_right(string: String) -> String { - erl_trim(string, Trailing) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "trim_right") -fn do_trim_right(string string: String) -> String - -/// Splits a non-empty `String` into its first element (head) and rest (tail). -/// This lets you pattern match on `String`s exactly as you would with lists. -/// -/// Note on JavaScript using the function to iterate over a string will likely -/// be slower than using `to_graphemes` due to string slicing being more -/// expensive on JavaScript than Erlang. -/// -/// ## Examples -/// -/// ```gleam -/// > pop_grapheme("gleam") -/// Ok(#("g", "leam")) -/// ``` -/// -/// ```gleam -/// > pop_grapheme("") -/// Error(Nil) -/// ``` -/// -pub fn pop_grapheme(string: String) -> Result(#(String, String), Nil) { - do_pop_grapheme(string) -} - -@external(erlang, "gleam_stdlib", "string_pop_grapheme") -@external(javascript, "../gleam_stdlib.mjs", "pop_grapheme") -fn do_pop_grapheme(string string: String) -> Result(#(String, String), Nil) - -/// Converts a `String` to a list of -/// [graphemes](https://en.wikipedia.org/wiki/Grapheme). -/// -/// ```gleam -/// > to_graphemes("abc") -/// ["a", "b", "c"] -/// ``` -/// -@external(javascript, "../gleam_stdlib.mjs", "graphemes") -pub fn to_graphemes(string: String) -> List(String) { - do_to_graphemes(string, []) - |> list.reverse -} - -fn do_to_graphemes(string: String, acc: List(String)) -> List(String) { - case pop_grapheme(string) { - Ok(#(grapheme, rest)) -> do_to_graphemes(rest, [grapheme, ..acc]) - _ -> acc - } -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "codepoint") -fn unsafe_int_to_utf_codepoint(a: Int) -> UtfCodepoint - -/// Converts a `String` to a `List` of `UtfCodepoint`. -/// -/// See and -/// for an -/// explanation on code points. -/// -/// ## Examples -/// -/// ```gleam -/// > "a" |> to_utf_codepoints -/// [UtfCodepoint(97)] -/// ``` -/// -/// ```gleam -/// // Semantically the same as: -/// // ["🏳", "️", "‍", "🌈"] or: -/// // [waving_white_flag, variant_selector_16, zero_width_joiner, rainbow] -/// > "🏳️‍🌈" |> to_utf_codepoints -/// [UtfCodepoint(127987), UtfCodepoint(65039), UtfCodepoint(8205), UtfCodepoint(127752)] -/// ``` -/// -pub fn to_utf_codepoints(string: String) -> List(UtfCodepoint) { - do_to_utf_codepoints(string) -} - -@target(erlang) -fn do_to_utf_codepoints(string: String) -> List(UtfCodepoint) { - do_to_utf_codepoints_impl(<>, []) - |> list.reverse -} - -@target(erlang) -fn do_to_utf_codepoints_impl( - bit_array: BitArray, - acc: List(UtfCodepoint), -) -> List(UtfCodepoint) { - case bit_array { - <> -> - do_to_utf_codepoints_impl(rest, [first, ..acc]) - _ -> acc - } -} - -@target(javascript) -fn do_to_utf_codepoints(string: String) -> List(UtfCodepoint) { - string - |> string_to_codepoint_integer_list - |> list.map(unsafe_int_to_utf_codepoint) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "string_to_codepoint_integer_list") -fn string_to_codepoint_integer_list(a: String) -> List(Int) - -/// Converts a `List` of `UtfCodepoint`s to a `String`. -/// -/// See and -/// for an -/// explanation on code points. -/// -/// ## Examples -/// -/// ```gleam -/// > { -/// > let assert #(Ok(a), Ok(b), Ok(c)) = #( -/// > utf_codepoint(97), -/// > utf_codepoint(98), -/// > utf_codepoint(99), -/// > ) -/// > [a, b, c] -/// > } -/// > |> from_utf_codepoints -/// "abc" -/// ``` -/// -@external(erlang, "gleam_stdlib", "utf_codepoint_list_to_string") -@external(javascript, "../gleam_stdlib.mjs", "utf_codepoint_list_to_string") -pub fn from_utf_codepoints(utf_codepoints: List(UtfCodepoint)) -> String - -/// Converts an integer to a `UtfCodepoint`. -/// -/// Returns an `Error` if the integer does not represent a valid UTF codepoint. -/// -pub fn utf_codepoint(value: Int) -> Result(UtfCodepoint, Nil) { - case value { - i if i > 1_114_111 -> Error(Nil) - 65_534 | 65_535 -> Error(Nil) - i if i >= 55_296 && i <= 57_343 -> Error(Nil) - i -> Ok(unsafe_int_to_utf_codepoint(i)) - } -} - -/// Converts an UtfCodepoint to its ordinal code point value. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert [utf_codepoint, ..] = to_utf_codepoints("💜") -/// > utf_codepoint_to_int(utf_codepoint) -/// 128156 -/// ``` -/// -pub fn utf_codepoint_to_int(cp: UtfCodepoint) -> Int { - do_utf_codepoint_to_int(cp) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "utf_codepoint_to_int") -fn do_utf_codepoint_to_int(cp cp: UtfCodepoint) -> Int - -/// Converts a `String` into `Option(String)` where an empty `String` becomes -/// `None`. -/// -/// ## Examples -/// -/// ```gleam -/// > to_option("") -/// None -/// ``` -/// -/// ```gleam -/// > to_option("hats") -/// Some("hats") -/// ``` -/// -pub fn to_option(s: String) -> Option(String) { - case s { - "" -> None - _ -> Some(s) - } -} - -/// Returns the first grapheme cluster in a given `String` and wraps it in a -/// `Result(String, Nil)`. If the `String` is empty, it returns `Error(Nil)`. -/// Otherwise, it returns `Ok(String)`. -/// -/// ## Examples -/// -/// ```gleam -/// > first("") -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > first("icecream") -/// Ok("i") -/// ``` -/// -pub fn first(s: String) -> Result(String, Nil) { - case pop_grapheme(s) { - Ok(#(first, _)) -> Ok(first) - Error(e) -> Error(e) - } -} - -/// Returns the last grapheme cluster in a given `String` and wraps it in a -/// `Result(String, Nil)`. If the `String` is empty, it returns `Error(Nil)`. -/// Otherwise, it returns `Ok(String)`. -/// -/// ## Examples -/// -/// ```gleam -/// > last("") -/// Error(Nil) -/// ``` -/// -/// ```gleam -/// > last("icecream") -/// Ok("m") -/// ``` -/// -pub fn last(s: String) -> Result(String, Nil) { - case pop_grapheme(s) { - Ok(#(first, "")) -> Ok(first) - Ok(#(_, rest)) -> Ok(slice(rest, -1, 1)) - Error(e) -> Error(e) - } -} - -/// Creates a new `String` with the first grapheme in the input `String` -/// converted to uppercase and the remaining graphemes to lowercase. -/// -/// ## Examples -/// -/// ```gleam -/// > capitalise("mamouna") -/// "Mamouna" -/// ``` -/// -pub fn capitalise(s: String) -> String { - case pop_grapheme(s) { - Ok(#(first, rest)) -> append(to: uppercase(first), suffix: lowercase(rest)) - _ -> "" - } -} - -/// Returns a `String` representation of a term in Gleam syntax. -/// -pub fn inspect(term: anything) -> String { - do_inspect(term) - |> string_builder.to_string -} - -@external(erlang, "gleam_stdlib", "inspect") -@external(javascript, "../gleam_stdlib.mjs", "inspect") -fn do_inspect(term term: anything) -> StringBuilder - -/// Returns the number of bytes in a `String`. -/// -/// This function runs in constant time on Erlang and in linear time on -/// JavaScript. -/// -@external(erlang, "erlang", "byte_size") -@external(javascript, "../gleam_stdlib.mjs", "byte_size") -pub fn byte_size(string: String) -> Int diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam deleted file mode 100644 index 5792ca8..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/string_builder.gleam +++ /dev/null @@ -1,298 +0,0 @@ -import gleam/list - -/// `StringBuilder` is a type used for efficiently building strings. -/// -/// When we append one string to another the strings must be copied to a -/// new location in memory so that they can sit together. This behaviour -/// enables efficient reading of the string but copying can be expensive, -/// especially if we want to join many strings together. -/// -/// `StringBuilder` is different in that it can be joined together in constant time -/// using minimal memory, and then can be efficiently converted to a string -/// using the `to_string` function. -/// -/// On Erlang this type is compatible with Erlang's iodata. On JavaScript this -/// type is compatible with normal strings. -/// -pub type StringBuilder - -/// Create an empty `StringBuilder`. Useful as the start of a pipe chaining many -/// builders together. -/// -pub fn new() -> StringBuilder { - do_from_strings([]) -} - -/// Prepends a `String` onto the start of some `StringBuilder`. -/// -/// Runs in constant time. -/// -pub fn prepend( - to builder: StringBuilder, - prefix prefix: String, -) -> StringBuilder { - append_builder(from_string(prefix), builder) -} - -/// Appends a `String` onto the end of some `StringBuilder`. -/// -/// Runs in constant time. -/// -pub fn append(to builder: StringBuilder, suffix second: String) -> StringBuilder { - append_builder(builder, from_string(second)) -} - -/// Prepends some `StringBuilder` onto the start of another. -/// -/// Runs in constant time. -/// -pub fn prepend_builder( - to builder: StringBuilder, - prefix prefix: StringBuilder, -) -> StringBuilder { - do_append(prefix, builder) -} - -/// Appends some `StringBuilder` onto the end of another. -/// -/// Runs in constant time. -/// -pub fn append_builder( - to builder: StringBuilder, - suffix suffix: StringBuilder, -) -> StringBuilder { - do_append(builder, suffix) -} - -@external(erlang, "gleam_stdlib", "iodata_append") -@external(javascript, "../gleam_stdlib.mjs", "add") -fn do_append(a: StringBuilder, b: StringBuilder) -> StringBuilder - -/// Converts a list of strings into a builder. -/// -/// Runs in constant time. -/// -pub fn from_strings(strings: List(String)) -> StringBuilder { - do_from_strings(strings) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "concat") -fn do_from_strings(a: List(String)) -> StringBuilder - -/// Joins a list of builders into a single builder. -/// -/// Runs in constant time. -/// -pub fn concat(builders: List(StringBuilder)) -> StringBuilder { - do_concat(builders) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "concat") -fn do_concat(a: List(StringBuilder)) -> StringBuilder - -/// Converts a string into a builder. -/// -/// Runs in constant time. -/// -pub fn from_string(string: String) -> StringBuilder { - do_from_string(string) -} - -@external(erlang, "gleam_stdlib", "identity") -@external(javascript, "../gleam_stdlib.mjs", "identity") -fn do_from_string(a: String) -> StringBuilder - -/// Turns an `StringBuilder` into a `String` -/// -/// This function is implemented natively by the virtual machine and is highly -/// optimised. -/// -pub fn to_string(builder: StringBuilder) -> String { - do_to_string(builder) -} - -@external(erlang, "unicode", "characters_to_binary") -@external(javascript, "../gleam_stdlib.mjs", "identity") -fn do_to_string(a: StringBuilder) -> String - -/// Returns the size of the `StringBuilder` in bytes. -/// -pub fn byte_size(builder: StringBuilder) -> Int { - do_byte_size(builder) -} - -@external(erlang, "erlang", "iolist_size") -@external(javascript, "../gleam_stdlib.mjs", "length") -fn do_byte_size(a: StringBuilder) -> Int - -/// Joins the given builders into a new builder separated with the given string -/// -pub fn join(builders: List(StringBuilder), with sep: String) -> StringBuilder { - builders - |> list.intersperse(from_string(sep)) - |> concat -} - -/// Converts a builder to a new builder where the contents have been -/// lowercased. -/// -pub fn lowercase(builder: StringBuilder) -> StringBuilder { - do_lowercase(builder) -} - -@external(erlang, "string", "lowercase") -@external(javascript, "../gleam_stdlib.mjs", "lowercase") -fn do_lowercase(a: StringBuilder) -> StringBuilder - -/// Converts a builder to a new builder where the contents have been -/// uppercased. -/// -pub fn uppercase(builder: StringBuilder) -> StringBuilder { - do_uppercase(builder) -} - -@external(erlang, "string", "uppercase") -@external(javascript, "../gleam_stdlib.mjs", "uppercase") -fn do_uppercase(a: StringBuilder) -> StringBuilder - -/// Converts a builder to a new builder with the contents reversed. -/// -pub fn reverse(builder: StringBuilder) -> StringBuilder { - do_reverse(builder) -} - -@target(erlang) -@external(erlang, "string", "reverse") -fn do_reverse(a: StringBuilder) -> StringBuilder - -@target(javascript) -fn do_reverse(builder: StringBuilder) -> StringBuilder { - builder - |> to_string - |> do_to_graphemes - |> list.reverse - |> from_strings -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "graphemes") -fn do_to_graphemes(string string: String) -> List(String) - -/// Splits a builder on a given pattern into a list of builders. -/// -pub fn split(iodata: StringBuilder, on pattern: String) -> List(StringBuilder) { - do_split(iodata, pattern) -} - -@target(erlang) -type Direction { - All -} - -@target(erlang) -@external(erlang, "string", "split") -fn erl_split(a: StringBuilder, b: String, c: Direction) -> List(StringBuilder) - -@target(erlang) -fn do_split(iodata: StringBuilder, pattern: String) -> List(StringBuilder) { - erl_split(iodata, pattern, All) -} - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "split") -fn do_split( - builder builder: StringBuilder, - pattern pattern: String, -) -> List(StringBuilder) - -/// Replaces all instances of a pattern with a given string substitute. -/// -pub fn replace( - in builder: StringBuilder, - each pattern: String, - with substitute: String, -) -> StringBuilder { - do_replace(builder, pattern, substitute) -} - -@target(erlang) -fn do_replace( - iodata: StringBuilder, - pattern: String, - substitute: String, -) -> StringBuilder { - erl_replace(iodata, pattern, substitute, All) -} - -@target(erlang) -@external(erlang, "string", "replace") -fn erl_replace( - a: StringBuilder, - b: String, - c: String, - d: Direction, -) -> StringBuilder - -@target(javascript) -@external(javascript, "../gleam_stdlib.mjs", "string_replace") -fn do_replace(a: StringBuilder, b: String, c: String) -> StringBuilder - -/// Compares two builders to determine if they have the same textual content. -/// -/// Comparing two iodata using the `==` operator may return `False` even if they -/// have the same content as they may have been build in different ways, so -/// using this function is often preferred. -/// -/// ## Examples -/// -/// ```gleam -/// > from_strings(["a", "b"]) == from_string("ab") -/// False -/// ``` -/// -/// ```gleam -/// > is_equal(from_strings(["a", "b"]), from_string("ab")) -/// True -/// ``` -/// -pub fn is_equal(a: StringBuilder, b: StringBuilder) -> Bool { - do_is_equal(a, b) -} - -@external(erlang, "string", "equal") -@external(javascript, "../gleam_stdlib.mjs", "equal") -fn do_is_equal(a: StringBuilder, b: StringBuilder) -> Bool - -/// Inspects a builder to determine if it is equivalent to an empty string. -/// -/// ## Examples -/// -/// ```gleam -/// > from_string("ok") |> is_empty -/// False -/// ``` -/// -/// ```gleam -/// > from_string("") |> is_empty -/// True -/// ``` -/// -/// ```gleam -/// > from_strings([]) |> is_empty -/// True -/// ``` -/// -pub fn is_empty(builder: StringBuilder) -> Bool { - do_is_empty(builder) -} - -@target(erlang) -@external(erlang, "string", "is_empty") -fn do_is_empty(a: StringBuilder) -> Bool - -@target(javascript) -fn do_is_empty(builder: StringBuilder) -> Bool { - from_string("") == builder -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam b/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam deleted file mode 100644 index 11f6ea6..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam/uri.gleam +++ /dev/null @@ -1,462 +0,0 @@ -//// Utilities for working with URIs -//// -//// This module provides functions for working with URIs (for example, parsing -//// URIs or encoding query strings). The functions in this module are implemented -//// according to [RFC 3986](https://tools.ietf.org/html/rfc3986). -//// -//// Query encoding (Form encoding) is defined in the -//// [W3C specification](https://www.w3.org/TR/html52/sec-forms.html#urlencoded-form-data). - -import gleam/int -import gleam/list -import gleam/option.{type Option, None, Some} -import gleam/string -import gleam/string_builder.{type StringBuilder} -@target(javascript) -import gleam/pair -@target(javascript) -import gleam/regex -@target(javascript) -import gleam/result - -/// Type representing holding the parsed components of an URI. -/// All components of a URI are optional, except the path. -/// -pub type Uri { - Uri( - scheme: Option(String), - userinfo: Option(String), - host: Option(String), - port: Option(Int), - path: String, - query: Option(String), - fragment: Option(String), - ) -} - -/// Parses a compliant URI string into the `Uri` Type. -/// If the string is not a valid URI string then an error is returned. -/// -/// The opposite operation is `uri.to_string`. -/// -/// ## Examples -/// -/// ```gleam -/// > parse("https://example.com:1234/a/b?query=true#fragment") -/// Ok( -/// Uri( -/// scheme: Some("https"), -/// userinfo: None, -/// host: Some("example.com"), -/// port: Some(1234), -/// path: "/a/b", -/// query: Some("query=true"), -/// fragment: Some("fragment") -/// ) -/// ) -/// ``` -/// -pub fn parse(uri_string: String) -> Result(Uri, Nil) { - do_parse(uri_string) -} - -@target(erlang) -@external(erlang, "gleam_stdlib", "uri_parse") -fn do_parse(a: String) -> Result(Uri, Nil) - -@target(javascript) -fn do_parse(uri_string: String) -> Result(Uri, Nil) { - // From https://tools.ietf.org/html/rfc3986#appendix-B - let pattern = - // 12 3 4 5 6 7 8 - "^(([a-z][a-z0-9\\+\\-\\.]*):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#.*)?" - let matches = - pattern - |> regex_submatches(uri_string) - |> pad_list(8) - - let #(scheme, authority, path, query, fragment) = case matches { - [ - _scheme_with_colon, - scheme, - authority_with_slashes, - _authority, - path, - query_with_question_mark, - _query, - fragment, - ] -> #( - scheme, - authority_with_slashes, - path, - query_with_question_mark, - fragment, - ) - _ -> #(None, None, None, None, None) - } - - let scheme = noneify_empty_string(scheme) - let path = option.unwrap(path, "") - let query = noneify_query(query) - let #(userinfo, host, port) = split_authority(authority) - let fragment = - fragment - |> option.to_result(Nil) - |> result.try(string.pop_grapheme) - |> result.map(pair.second) - |> option.from_result - let scheme = - scheme - |> noneify_empty_string - |> option.map(string.lowercase) - Ok(Uri( - scheme: scheme, - userinfo: userinfo, - host: host, - port: port, - path: path, - query: query, - fragment: fragment, - )) -} - -@target(javascript) -fn regex_submatches(pattern: String, string: String) -> List(Option(String)) { - pattern - |> regex.compile(regex.Options(case_insensitive: True, multi_line: False)) - |> result.nil_error - |> result.map(regex.scan(_, string)) - |> result.try(list.first) - |> result.map(fn(m: regex.Match) { m.submatches }) - |> result.unwrap([]) -} - -@target(javascript) -fn noneify_query(x: Option(String)) -> Option(String) { - case x { - None -> None - Some(x) -> - case string.pop_grapheme(x) { - Ok(#("?", query)) -> Some(query) - _ -> None - } - } -} - -@target(javascript) -fn noneify_empty_string(x: Option(String)) -> Option(String) { - case x { - Some("") | None -> None - Some(_) -> x - } -} - -// Split an authority into its userinfo, host and port parts. -@target(javascript) -fn split_authority( - authority: Option(String), -) -> #(Option(String), Option(String), Option(Int)) { - case option.unwrap(authority, "") { - "" -> #(None, None, None) - "//" -> #(None, Some(""), None) - authority -> { - let matches = - "^(//)?((.*)@)?(\\[[a-zA-Z0-9:.]*\\]|[^:]*)(:(\\d*))?" - |> regex_submatches(authority) - |> pad_list(6) - case matches { - [_, _, userinfo, host, _, port] -> { - let userinfo = noneify_empty_string(userinfo) - let host = noneify_empty_string(host) - let port = - port - |> option.unwrap("") - |> int.parse - |> option.from_result - #(userinfo, host, port) - } - _ -> #(None, None, None) - } - } - } -} - -@target(javascript) -fn pad_list(list: List(Option(a)), size: Int) -> List(Option(a)) { - list - |> list.append(list.repeat(None, extra_required(list, size))) -} - -@target(javascript) -fn extra_required(list: List(a), remaining: Int) -> Int { - case list { - _ if remaining == 0 -> 0 - [] -> remaining - [_, ..xs] -> extra_required(xs, remaining - 1) - } -} - -/// Parses an urlencoded query string into a list of key value pairs. -/// Returns an error for invalid encoding. -/// -/// The opposite operation is `uri.query_to_string`. -/// -/// ## Examples -/// -/// ```gleam -/// > parse_query("a=1&b=2") -/// Ok([#("a", "1"), #("b", "2")]) -/// ``` -/// -pub fn parse_query(query: String) -> Result(List(#(String, String)), Nil) { - do_parse_query(query) -} - -@external(erlang, "gleam_stdlib", "parse_query") -@external(javascript, "../gleam_stdlib.mjs", "parse_query") -fn do_parse_query(a: String) -> Result(List(#(String, String)), Nil) - -/// Encodes a list of key value pairs as a URI query string. -/// -/// The opposite operation is `uri.parse_query`. -/// -/// ## Examples -/// -/// ```gleam -/// > query_to_string([#("a", "1"), #("b", "2")]) -/// "a=1&b=2" -/// ``` -/// -pub fn query_to_string(query: List(#(String, String))) -> String { - query - |> list.map(query_pair) - |> list.intersperse(string_builder.from_string("&")) - |> string_builder.concat - |> string_builder.to_string -} - -fn query_pair(pair: #(String, String)) -> StringBuilder { - string_builder.from_strings([ - percent_encode(pair.0), - "=", - percent_encode(pair.1), - ]) -} - -/// Encodes a string into a percent encoded representation. -/// -/// ## Examples -/// -/// ```gleam -/// > percent_encode("100% great") -/// "100%25%20great" -/// ``` -/// -pub fn percent_encode(value: String) -> String { - do_percent_encode(value) -} - -@external(erlang, "gleam_stdlib", "percent_encode") -@external(javascript, "../gleam_stdlib.mjs", "percent_encode") -fn do_percent_encode(a: String) -> String - -/// Decodes a percent encoded string. -/// -/// ## Examples -/// -/// ```gleam -/// > percent_decode("100%25+great") -/// Ok("100% great") -/// ``` -/// -pub fn percent_decode(value: String) -> Result(String, Nil) { - do_percent_decode(value) -} - -@external(erlang, "gleam_stdlib", "percent_decode") -@external(javascript, "../gleam_stdlib.mjs", "percent_decode") -fn do_percent_decode(a: String) -> Result(String, Nil) - -fn do_remove_dot_segments( - input: List(String), - accumulator: List(String), -) -> List(String) { - case input { - [] -> list.reverse(accumulator) - [segment, ..rest] -> { - let accumulator = case segment, accumulator { - "", accumulator -> accumulator - ".", accumulator -> accumulator - "..", [] -> [] - "..", [_, ..accumulator] -> accumulator - segment, accumulator -> [segment, ..accumulator] - } - do_remove_dot_segments(rest, accumulator) - } - } -} - -fn remove_dot_segments(input: List(String)) -> List(String) { - do_remove_dot_segments(input, []) -} - -/// Splits the path section of a URI into it's constituent segments. -/// -/// Removes empty segments and resolves dot-segments as specified in -/// [section 5.2](https://www.ietf.org/rfc/rfc3986.html#section-5.2) of the RFC. -/// -/// ## Examples -/// -/// ```gleam -/// > path_segments("/users/1") -/// ["users" ,"1"] -/// ``` -/// -pub fn path_segments(path: String) -> List(String) { - remove_dot_segments(string.split(path, "/")) -} - -/// Encodes a `Uri` value as a URI string. -/// -/// The opposite operation is `uri.parse`. -/// -/// ## Examples -/// -/// ```gleam -/// > let uri = Uri(Some("http"), None, Some("example.com"), ...) -/// > to_string(uri) -/// "http://example.com" -/// ``` -/// -pub fn to_string(uri: Uri) -> String { - let parts = case uri.fragment { - Some(fragment) -> ["#", fragment] - _ -> [] - } - let parts = case uri.query { - Some(query) -> ["?", query, ..parts] - _ -> parts - } - let parts = [uri.path, ..parts] - let parts = case uri.host, string.starts_with(uri.path, "/") { - Some(host), False if host != "" -> ["/", ..parts] - _, _ -> parts - } - let parts = case uri.host, uri.port { - Some(_), Some(port) -> [":", int.to_string(port), ..parts] - _, _ -> parts - } - let parts = case uri.scheme, uri.userinfo, uri.host { - Some(s), Some(u), Some(h) -> [s, "://", u, "@", h, ..parts] - Some(s), None, Some(h) -> [s, "://", h, ..parts] - Some(s), Some(_), None | Some(s), None, None -> [s, ":", ..parts] - None, None, Some(h) -> ["//", h, ..parts] - _, _, _ -> parts - } - string.concat(parts) -} - -/// Fetches the origin of a URI. -/// -/// Returns the origin of a uri as defined in -/// [RFC 6454](https://tools.ietf.org/html/rfc6454) -/// -/// The supported URI schemes are `http` and `https`. -/// URLs without a scheme will return `Error`. -/// -/// ## Examples -/// -/// ```gleam -/// > let assert Ok(uri) = parse("http://example.com/path?foo#bar") -/// > origin(uri) -/// Ok("http://example.com") -/// ``` -/// -pub fn origin(uri: Uri) -> Result(String, Nil) { - let Uri(scheme: scheme, host: host, port: port, ..) = uri - case scheme { - Some("https") if port == Some(443) -> { - let origin = Uri(scheme, None, host, None, "", None, None) - Ok(to_string(origin)) - } - Some("http") if port == Some(80) -> { - let origin = Uri(scheme, None, host, None, "", None, None) - Ok(to_string(origin)) - } - Some(s) if s == "http" || s == "https" -> { - let origin = Uri(scheme, None, host, port, "", None, None) - Ok(to_string(origin)) - } - _ -> Error(Nil) - } -} - -fn drop_last(elements: List(a)) -> List(a) { - list.take(from: elements, up_to: list.length(elements) - 1) -} - -fn join_segments(segments: List(String)) -> String { - string.join(["", ..segments], "/") -} - -/// Resolves a URI with respect to the given base URI. -/// -/// The base URI must be an absolute URI or this function will return an error. -/// The algorithm for merging uris is described in -/// [RFC 3986](https://tools.ietf.org/html/rfc3986#section-5.2). -/// -pub fn merge(base: Uri, relative: Uri) -> Result(Uri, Nil) { - case base { - Uri(scheme: Some(_), host: Some(_), ..) -> - case relative { - Uri(host: Some(_), ..) -> { - let path = - string.split(relative.path, "/") - |> remove_dot_segments() - |> join_segments() - let resolved = - Uri( - option.or(relative.scheme, base.scheme), - None, - relative.host, - option.or(relative.port, base.port), - path, - relative.query, - relative.fragment, - ) - Ok(resolved) - } - _ -> { - let #(new_path, new_query) = case relative.path { - "" -> #(base.path, option.or(relative.query, base.query)) - _ -> { - let path_segments = case string.starts_with(relative.path, "/") { - True -> string.split(relative.path, "/") - False -> - string.split(base.path, "/") - |> drop_last() - |> list.append(string.split(relative.path, "/")) - } - let path = - path_segments - |> remove_dot_segments() - |> join_segments() - #(path, relative.query) - } - } - let resolved = - Uri( - base.scheme, - None, - base.host, - base.port, - new_path, - new_query, - relative.fragment, - ) - Ok(resolved) - } - } - _ -> Error(Nil) - } -} diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl deleted file mode 100644 index 65bc3f6..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@base.erl +++ /dev/null @@ -1,20 +0,0 @@ --module(gleam@base). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([encode64/2, decode64/1, url_encode64/2, url_decode64/1]). - --spec encode64(bitstring(), boolean()) -> binary(). -encode64(Input, Padding) -> - gleam@bit_array:base64_encode(Input, Padding). - --spec decode64(binary()) -> {ok, bitstring()} | {error, nil}. -decode64(Encoded) -> - gleam@bit_array:base64_decode(Encoded). - --spec url_encode64(bitstring(), boolean()) -> binary(). -url_encode64(Input, Padding) -> - gleam@bit_array:base64_url_encode(Input, Padding). - --spec url_decode64(binary()) -> {ok, bitstring()} | {error, nil}. -url_decode64(Encoded) -> - gleam@bit_array:base64_url_decode(Encoded). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl deleted file mode 100644 index ba18dfa..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_array.erl +++ /dev/null @@ -1,102 +0,0 @@ --module(gleam@bit_array). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, byte_size/1, slice/3, is_utf8/1, to_string/1, concat/1, append/2, base64_encode/2, base64_decode/1, base64_url_encode/2, base64_url_decode/1, base16_encode/1, base16_decode/1]). - --spec from_string(binary()) -> bitstring(). -from_string(X) -> - gleam_stdlib:identity(X). - --spec byte_size(bitstring()) -> integer(). -byte_size(X) -> - erlang:byte_size(X). - --spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | - {error, nil}. -slice(String, Position, Length) -> - gleam_stdlib:bit_array_slice(String, Position, Length). - --spec do_is_utf8(bitstring()) -> boolean(). -do_is_utf8(Bits) -> - case Bits of - <<>> -> - true; - - <<_/utf8, Rest/binary>> -> - do_is_utf8(Rest); - - _ -> - false - end. - --spec is_utf8(bitstring()) -> boolean(). -is_utf8(Bits) -> - do_is_utf8(Bits). - --spec do_to_string(bitstring()) -> {ok, binary()} | {error, nil}. -do_to_string(Bits) -> - case is_utf8(Bits) of - true -> - {ok, gleam_stdlib:identity(Bits)}; - - false -> - {error, nil} - end. - --spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. -to_string(Bits) -> - do_to_string(Bits). - --spec concat(list(bitstring())) -> bitstring(). -concat(Bit_arrays) -> - gleam_stdlib:bit_array_concat(Bit_arrays). - --spec append(bitstring(), bitstring()) -> bitstring(). -append(First, Second) -> - gleam_stdlib:bit_array_concat([First, Second]). - --spec base64_encode(bitstring(), boolean()) -> binary(). -base64_encode(Input, Padding) -> - Encoded = base64:encode(Input), - case Padding of - true -> - Encoded; - - false -> - gleam@string:replace(Encoded, <<"="/utf8>>, <<""/utf8>>) - end. - --spec base64_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base64_decode(Encoded) -> - Padded = case erlang:byte_size(gleam_stdlib:identity(Encoded)) rem 4 of - 0 -> - Encoded; - - N -> - gleam@string:append( - Encoded, - gleam@string:repeat(<<"="/utf8>>, 4 - N) - ) - end, - gleam_stdlib:base_decode64(Padded). - --spec base64_url_encode(bitstring(), boolean()) -> binary(). -base64_url_encode(Input, Padding) -> - _pipe = base64_encode(Input, Padding), - _pipe@1 = gleam@string:replace(_pipe, <<"+"/utf8>>, <<"-"/utf8>>), - gleam@string:replace(_pipe@1, <<"/"/utf8>>, <<"_"/utf8>>). - --spec base64_url_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base64_url_decode(Encoded) -> - _pipe = Encoded, - _pipe@1 = gleam@string:replace(_pipe, <<"-"/utf8>>, <<"+"/utf8>>), - _pipe@2 = gleam@string:replace(_pipe@1, <<"_"/utf8>>, <<"/"/utf8>>), - base64_decode(_pipe@2). - --spec base16_encode(bitstring()) -> binary(). -base16_encode(Input) -> - binary:encode_hex(Input). - --spec base16_decode(binary()) -> {ok, bitstring()} | {error, nil}. -base16_decode(Input) -> - gleam_stdlib:base16_decode(Input). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl deleted file mode 100644 index 284c6d4..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_builder.erl +++ /dev/null @@ -1,66 +0,0 @@ --module(gleam@bit_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, prepend/2, append/2, prepend_builder/2, append_builder/2, prepend_string/2, append_string/2, concat/1, concat_bit_strings/1, from_string/1, from_string_builder/1, from_bit_string/1, to_bit_string/1, byte_size/1]). - --spec new() -> gleam@bytes_builder:bytes_builder(). -new() -> - gleam@bytes_builder:new(). - --spec prepend(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). -prepend(To, Prefix) -> - gleam@bytes_builder:prepend(To, Prefix). - --spec append(gleam@bytes_builder:bytes_builder(), bitstring()) -> gleam@bytes_builder:bytes_builder(). -append(To, Suffix) -> - gleam@bytes_builder:append(To, Suffix). - --spec prepend_builder( - gleam@bytes_builder:bytes_builder(), - gleam@bytes_builder:bytes_builder() -) -> gleam@bytes_builder:bytes_builder(). -prepend_builder(To, Prefix) -> - gleam@bytes_builder:prepend_builder(To, Prefix). - --spec append_builder( - gleam@bytes_builder:bytes_builder(), - gleam@bytes_builder:bytes_builder() -) -> gleam@bytes_builder:bytes_builder(). -append_builder(First, Second) -> - gleam_stdlib:iodata_append(First, Second). - --spec prepend_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). -prepend_string(To, Prefix) -> - gleam@bytes_builder:prepend_string(To, Prefix). - --spec append_string(gleam@bytes_builder:bytes_builder(), binary()) -> gleam@bytes_builder:bytes_builder(). -append_string(To, Suffix) -> - gleam@bytes_builder:append_string(To, Suffix). - --spec concat(list(gleam@bytes_builder:bytes_builder())) -> gleam@bytes_builder:bytes_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec concat_bit_strings(list(bitstring())) -> gleam@bytes_builder:bytes_builder(). -concat_bit_strings(Bits) -> - gleam_stdlib:identity(Bits). - --spec from_string(binary()) -> gleam@bytes_builder:bytes_builder(). -from_string(String) -> - gleam_stdlib:wrap_list(String). - --spec from_string_builder(gleam@string_builder:string_builder()) -> gleam@bytes_builder:bytes_builder(). -from_string_builder(Builder) -> - gleam_stdlib:wrap_list(Builder). - --spec from_bit_string(bitstring()) -> gleam@bytes_builder:bytes_builder(). -from_bit_string(Bits) -> - gleam_stdlib:wrap_list(Bits). - --spec to_bit_string(gleam@bytes_builder:bytes_builder()) -> bitstring(). -to_bit_string(Builder) -> - erlang:list_to_bitstring(Builder). - --spec byte_size(gleam@bytes_builder:bytes_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl deleted file mode 100644 index 7dabaa3..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@bit_string.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@bit_string). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from_string/1, byte_size/1, append/2, slice/3, is_utf8/1, to_string/1, concat/1]). - --spec from_string(binary()) -> bitstring(). -from_string(X) -> - gleam_stdlib:identity(X). - --spec byte_size(bitstring()) -> integer(). -byte_size(X) -> - erlang:byte_size(X). - --spec append(bitstring(), bitstring()) -> bitstring(). -append(First, Second) -> - gleam@bit_array:append(First, Second). - --spec slice(bitstring(), integer(), integer()) -> {ok, bitstring()} | - {error, nil}. -slice(String, Position, Length) -> - gleam_stdlib:bit_array_slice(String, Position, Length). - --spec is_utf8(bitstring()) -> boolean(). -is_utf8(Bits) -> - gleam@bit_array:is_utf8(Bits). - --spec to_string(bitstring()) -> {ok, binary()} | {error, nil}. -to_string(Bits) -> - gleam@bit_array:to_string(Bits). - --spec concat(list(bitstring())) -> bitstring(). -concat(Bit_strings) -> - gleam_stdlib:bit_array_concat(Bit_strings). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl deleted file mode 100644 index cd55358..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@bool.erl +++ /dev/null @@ -1,162 +0,0 @@ --module(gleam@bool). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export(['and'/2, 'or'/2, negate/1, nor/2, nand/2, exclusive_or/2, exclusive_nor/2, compare/2, max/2, min/2, to_int/1, to_string/1, guard/3, lazy_guard/3]). - --spec 'and'(boolean(), boolean()) -> boolean(). -'and'(A, B) -> - A andalso B. - --spec 'or'(boolean(), boolean()) -> boolean(). -'or'(A, B) -> - A orelse B. - --spec negate(boolean()) -> boolean(). -negate(Bool) -> - case Bool of - true -> - false; - - false -> - true - end. - --spec nor(boolean(), boolean()) -> boolean(). -nor(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - false; - - {true, false} -> - false; - - {true, true} -> - false - end. - --spec nand(boolean(), boolean()) -> boolean(). -nand(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - true; - - {true, false} -> - true; - - {true, true} -> - false - end. - --spec exclusive_or(boolean(), boolean()) -> boolean(). -exclusive_or(A, B) -> - case {A, B} of - {false, false} -> - false; - - {false, true} -> - true; - - {true, false} -> - true; - - {true, true} -> - false - end. - --spec exclusive_nor(boolean(), boolean()) -> boolean(). -exclusive_nor(A, B) -> - case {A, B} of - {false, false} -> - true; - - {false, true} -> - false; - - {true, false} -> - false; - - {true, true} -> - true - end. - --spec compare(boolean(), boolean()) -> gleam@order:order(). -compare(A, B) -> - case {A, B} of - {true, true} -> - eq; - - {true, false} -> - gt; - - {false, false} -> - eq; - - {false, true} -> - lt - end. - --spec max(boolean(), boolean()) -> boolean(). -max(A, B) -> - case A of - true -> - true; - - false -> - B - end. - --spec min(boolean(), boolean()) -> boolean(). -min(A, B) -> - case A of - false -> - false; - - true -> - B - end. - --spec to_int(boolean()) -> integer(). -to_int(Bool) -> - case Bool of - false -> - 0; - - true -> - 1 - end. - --spec to_string(boolean()) -> binary(). -to_string(Bool) -> - case Bool of - false -> - <<"False"/utf8>>; - - true -> - <<"True"/utf8>> - end. - --spec guard(boolean(), DDZ, fun(() -> DDZ)) -> DDZ. -guard(Requirement, Consequence, Alternative) -> - case Requirement of - true -> - Consequence; - - false -> - Alternative() - end. - --spec lazy_guard(boolean(), fun(() -> DEA), fun(() -> DEA)) -> DEA. -lazy_guard(Requirement, Consequence, Alternative) -> - case Requirement of - true -> - Consequence(); - - false -> - Alternative() - end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl deleted file mode 100644 index 2f6dd93..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@bytes_builder.erl +++ /dev/null @@ -1,87 +0,0 @@ --module(gleam@bytes_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([append_builder/2, prepend_builder/2, concat/1, new/0, from_string/1, prepend_string/2, append_string/2, from_string_builder/1, from_bit_array/1, prepend/2, append/2, concat_bit_arrays/1, to_bit_array/1, byte_size/1]). --export_type([bytes_builder/0]). - --opaque bytes_builder() :: {bytes, bitstring()} | - {text, gleam@string_builder:string_builder()} | - {many, list(bytes_builder())}. - --spec append_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). -append_builder(First, Second) -> - gleam_stdlib:iodata_append(First, Second). - --spec prepend_builder(bytes_builder(), bytes_builder()) -> bytes_builder(). -prepend_builder(Second, First) -> - gleam_stdlib:iodata_append(First, Second). - --spec concat(list(bytes_builder())) -> bytes_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec new() -> bytes_builder(). -new() -> - gleam_stdlib:identity([]). - --spec from_string(binary()) -> bytes_builder(). -from_string(String) -> - gleam_stdlib:wrap_list(String). - --spec prepend_string(bytes_builder(), binary()) -> bytes_builder(). -prepend_string(Second, First) -> - gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). - --spec append_string(bytes_builder(), binary()) -> bytes_builder(). -append_string(First, Second) -> - gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). - --spec from_string_builder(gleam@string_builder:string_builder()) -> bytes_builder(). -from_string_builder(Builder) -> - gleam_stdlib:wrap_list(Builder). - --spec from_bit_array(bitstring()) -> bytes_builder(). -from_bit_array(Bits) -> - gleam_stdlib:wrap_list(Bits). - --spec prepend(bytes_builder(), bitstring()) -> bytes_builder(). -prepend(Second, First) -> - gleam_stdlib:iodata_append(gleam_stdlib:wrap_list(First), Second). - --spec append(bytes_builder(), bitstring()) -> bytes_builder(). -append(First, Second) -> - gleam_stdlib:iodata_append(First, gleam_stdlib:wrap_list(Second)). - --spec concat_bit_arrays(list(bitstring())) -> bytes_builder(). -concat_bit_arrays(Bits) -> - gleam_stdlib:identity(Bits). - --spec to_list(list(list(bytes_builder())), list(bitstring())) -> list(bitstring()). -to_list(Stack, Acc) -> - case Stack of - [] -> - Acc; - - [[] | Remaining_stack] -> - to_list(Remaining_stack, Acc); - - [[{bytes, Bits} | Rest] | Remaining_stack@1] -> - to_list([Rest | Remaining_stack@1], [Bits | Acc]); - - [[{text, Builder} | Rest@1] | Remaining_stack@2] -> - Bits@1 = gleam_stdlib:identity( - gleam@string_builder:to_string(Builder) - ), - to_list([Rest@1 | Remaining_stack@2], [Bits@1 | Acc]); - - [[{many, Builders} | Rest@2] | Remaining_stack@3] -> - to_list([Builders, Rest@2 | Remaining_stack@3], Acc) - end. - --spec to_bit_array(bytes_builder()) -> bitstring(). -to_bit_array(Builder) -> - erlang:list_to_bitstring(Builder). - --spec byte_size(bytes_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl deleted file mode 100644 index 44b89ea..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@dict.erl +++ /dev/null @@ -1,97 +0,0 @@ --module(gleam@dict). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). --export_type([dict/2]). - --type dict(KS, KT) :: any() | {gleam_phantom, KS, KT}. - --spec size(dict(any(), any())) -> integer(). -size(Dict) -> - maps:size(Dict). - --spec to_list(dict(LC, LD)) -> list({LC, LD}). -to_list(Dict) -> - maps:to_list(Dict). - --spec from_list(list({LM, LN})) -> dict(LM, LN). -from_list(List) -> - maps:from_list(List). - --spec has_key(dict(LW, any()), LW) -> boolean(). -has_key(Dict, Key) -> - maps:is_key(Key, Dict). - --spec new() -> dict(any(), any()). -new() -> - maps:new(). - --spec get(dict(MM, MN), MM) -> {ok, MN} | {error, nil}. -get(From, Get) -> - gleam_stdlib:map_get(From, Get). - --spec insert(dict(MY, MZ), MY, MZ) -> dict(MY, MZ). -insert(Dict, Key, Value) -> - maps:put(Key, Value, Dict). - --spec map_values(dict(NK, NL), fun((NK, NL) -> NO)) -> dict(NK, NO). -map_values(Dict, Fun) -> - maps:map(Fun, Dict). - --spec keys(dict(NY, any())) -> list(NY). -keys(Dict) -> - maps:keys(Dict). - --spec values(dict(any(), OJ)) -> list(OJ). -values(Dict) -> - maps:values(Dict). - --spec filter(dict(OS, OT), fun((OS, OT) -> boolean())) -> dict(OS, OT). -filter(Dict, Predicate) -> - maps:filter(Predicate, Dict). - --spec take(dict(PE, PF), list(PE)) -> dict(PE, PF). -take(Dict, Desired_keys) -> - maps:with(Desired_keys, Dict). - --spec merge(dict(PS, PT), dict(PS, PT)) -> dict(PS, PT). -merge(Dict, New_entries) -> - maps:merge(Dict, New_entries). - --spec delete(dict(QI, QJ), QI) -> dict(QI, QJ). -delete(Dict, Key) -> - maps:remove(Key, Dict). - --spec drop(dict(QU, QV), list(QU)) -> dict(QU, QV). -drop(Dict, Disallowed_keys) -> - case Disallowed_keys of - [] -> - Dict; - - [X | Xs] -> - drop(delete(Dict, X), Xs) - end. - --spec update(dict(RB, RC), RB, fun((gleam@option:option(RC)) -> RC)) -> dict(RB, RC). -update(Dict, Key, Fun) -> - _pipe = Dict, - _pipe@1 = get(_pipe, Key), - _pipe@2 = gleam@option:from_result(_pipe@1), - _pipe@3 = Fun(_pipe@2), - insert(Dict, Key, _pipe@3). - --spec do_fold(list({RI, RJ}), RL, fun((RL, RI, RJ) -> RL)) -> RL. -do_fold(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [{K, V} | Rest] -> - do_fold(Rest, Fun(Initial, K, V), Fun) - end. - --spec fold(dict(RM, RN), RQ, fun((RQ, RM, RN) -> RQ)) -> RQ. -fold(Dict, Initial, Fun) -> - _pipe = Dict, - _pipe@1 = to_list(_pipe), - do_fold(_pipe@1, Initial, Fun). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl deleted file mode 100644 index 38f4b4e..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@dynamic.erl +++ /dev/null @@ -1,808 +0,0 @@ --module(gleam@dynamic). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([from/1, unsafe_coerce/1, dynamic/1, bit_array/1, bit_string/1, classify/1, int/1, float/1, bool/1, shallow_list/1, optional/1, any/1, decode1/2, result/2, list/1, string/1, field/2, optional_field/2, element/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, dict/2, map/2, decode2/3, decode3/4, decode4/5, decode5/6, decode6/7, decode7/8, decode8/9, decode9/10]). --export_type([dynamic_/0, decode_error/0, unknown_tuple/0]). - --type dynamic_() :: any(). - --type decode_error() :: {decode_error, binary(), binary(), list(binary())}. - --type unknown_tuple() :: any(). - --spec from(any()) -> dynamic_(). -from(A) -> - gleam_stdlib:identity(A). - --spec unsafe_coerce(dynamic_()) -> any(). -unsafe_coerce(A) -> - gleam_stdlib:identity(A). - --spec dynamic(dynamic_()) -> {ok, dynamic_()} | {error, list(decode_error())}. -dynamic(Value) -> - {ok, Value}. - --spec bit_array(dynamic_()) -> {ok, bitstring()} | {error, list(decode_error())}. -bit_array(Data) -> - gleam_stdlib:decode_bit_array(Data). - --spec bit_string(dynamic_()) -> {ok, bitstring()} | - {error, list(decode_error())}. -bit_string(Data) -> - bit_array(Data). - --spec put_expected(decode_error(), binary()) -> decode_error(). -put_expected(Error, Expected) -> - erlang:setelement(2, Error, Expected). - --spec classify(dynamic_()) -> binary(). -classify(Data) -> - gleam_stdlib:classify_dynamic(Data). - --spec int(dynamic_()) -> {ok, integer()} | {error, list(decode_error())}. -int(Data) -> - gleam_stdlib:decode_int(Data). - --spec float(dynamic_()) -> {ok, float()} | {error, list(decode_error())}. -float(Data) -> - gleam_stdlib:decode_float(Data). - --spec bool(dynamic_()) -> {ok, boolean()} | {error, list(decode_error())}. -bool(Data) -> - gleam_stdlib:decode_bool(Data). - --spec shallow_list(dynamic_()) -> {ok, list(dynamic_())} | - {error, list(decode_error())}. -shallow_list(Value) -> - gleam_stdlib:decode_list(Value). - --spec optional(fun((dynamic_()) -> {ok, DZX} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, - gleam@option:option(DZX)} | - {error, list(decode_error())}). -optional(Decode) -> - fun(Value) -> gleam_stdlib:decode_option(Value, Decode) end. - --spec at_least_decode_tuple_error(integer(), dynamic_()) -> {ok, any()} | - {error, list(decode_error())}. -at_least_decode_tuple_error(Size, Data) -> - S = case Size of - 1 -> - <<""/utf8>>; - - _ -> - <<"s"/utf8>> - end, - Error = begin - _pipe = [<<"Tuple of at least "/utf8>>, - gleam@int:to_string(Size), - <<" element"/utf8>>, - S], - _pipe@1 = gleam@string_builder:from_strings(_pipe), - _pipe@2 = gleam@string_builder:to_string(_pipe@1), - {decode_error, _pipe@2, classify(Data), []} - end, - {error, [Error]}. - --spec any(list(fun((dynamic_()) -> {ok, EEE} | {error, list(decode_error())}))) -> fun((dynamic_()) -> {ok, - EEE} | - {error, list(decode_error())}). -any(Decoders) -> - fun(Data) -> case Decoders of - [] -> - {error, - [{decode_error, <<"another type"/utf8>>, classify(Data), []}]}; - - [Decoder | Decoders@1] -> - case Decoder(Data) of - {ok, Decoded} -> - {ok, Decoded}; - - {error, _} -> - (any(Decoders@1))(Data) - end - end end. - --spec all_errors({ok, any()} | {error, list(decode_error())}) -> list(decode_error()). -all_errors(Result) -> - case Result of - {ok, _} -> - []; - - {error, Errors} -> - Errors - end. - --spec decode1( - fun((EEI) -> EEJ), - fun((dynamic_()) -> {ok, EEI} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EEJ} | {error, list(decode_error())}). -decode1(Constructor, T1) -> - fun(Value) -> case T1(Value) of - {ok, A} -> - {ok, Constructor(A)}; - - A@1 -> - {error, all_errors(A@1)} - end end. - --spec push_path(decode_error(), any()) -> decode_error(). -push_path(Error, Name) -> - Name@1 = from(Name), - Decoder = any( - [fun string/1, - fun(X) -> gleam@result:map(int(X), fun gleam@int:to_string/1) end] - ), - Name@3 = case Decoder(Name@1) of - {ok, Name@2} -> - Name@2; - - {error, _} -> - _pipe = [<<"<"/utf8>>, classify(Name@1), <<">"/utf8>>], - _pipe@1 = gleam@string_builder:from_strings(_pipe), - gleam@string_builder:to_string(_pipe@1) - end, - erlang:setelement(4, Error, [Name@3 | erlang:element(4, Error)]). - --spec result( - fun((dynamic_()) -> {ok, DZL} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, DZN} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {ok, DZL} | {error, DZN}} | - {error, list(decode_error())}). -result(Decode_ok, Decode_error) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_result(Value), - fun(Inner_result) -> case Inner_result of - {ok, Raw} -> - gleam@result:'try'( - begin - _pipe = Decode_ok(Raw), - map_errors( - _pipe, - fun(_capture) -> - push_path(_capture, <<"ok"/utf8>>) - end - ) - end, - fun(Value@1) -> {ok, {ok, Value@1}} end - ); - - {error, Raw@1} -> - gleam@result:'try'( - begin - _pipe@1 = Decode_error(Raw@1), - map_errors( - _pipe@1, - fun(_capture@1) -> - push_path(_capture@1, <<"error"/utf8>>) - end - ) - end, - fun(Value@2) -> {ok, {error, Value@2}} end - ) - end end - ) - end. - --spec list(fun((dynamic_()) -> {ok, DZS} | {error, list(decode_error())})) -> fun((dynamic_()) -> {ok, - list(DZS)} | - {error, list(decode_error())}). -list(Decoder_type) -> - fun(Dynamic) -> - gleam@result:'try'(shallow_list(Dynamic), fun(List) -> _pipe = List, - _pipe@1 = gleam@list:try_map(_pipe, Decoder_type), - map_errors( - _pipe@1, - fun(_capture) -> push_path(_capture, <<"*"/utf8>>) end - ) end) - end. - --spec map_errors( - {ok, DYG} | {error, list(decode_error())}, - fun((decode_error()) -> decode_error()) -) -> {ok, DYG} | {error, list(decode_error())}. -map_errors(Result, F) -> - gleam@result:map_error( - Result, - fun(_capture) -> gleam@list:map(_capture, F) end - ). - --spec decode_string(dynamic_()) -> {ok, binary()} | - {error, list(decode_error())}. -decode_string(Data) -> - _pipe = bit_array(Data), - _pipe@1 = map_errors( - _pipe, - fun(_capture) -> put_expected(_capture, <<"String"/utf8>>) end - ), - gleam@result:'try'( - _pipe@1, - fun(Raw) -> case gleam@bit_array:to_string(Raw) of - {ok, String} -> - {ok, String}; - - {error, nil} -> - {error, - [{decode_error, - <<"String"/utf8>>, - <<"BitArray"/utf8>>, - []}]} - end end - ). - --spec string(dynamic_()) -> {ok, binary()} | {error, list(decode_error())}. -string(Data) -> - decode_string(Data). - --spec field( - any(), - fun((dynamic_()) -> {ok, EAH} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EAH} | {error, list(decode_error())}). -field(Name, Inner_type) -> - fun(Value) -> - Missing_field_error = {decode_error, - <<"field"/utf8>>, - <<"nothing"/utf8>>, - []}, - gleam@result:'try'( - gleam_stdlib:decode_field(Value, Name), - fun(Maybe_inner) -> _pipe = Maybe_inner, - _pipe@1 = gleam@option:to_result(_pipe, [Missing_field_error]), - _pipe@2 = gleam@result:'try'(_pipe@1, Inner_type), - map_errors( - _pipe@2, - fun(_capture) -> push_path(_capture, Name) end - ) end - ) - end. - --spec optional_field( - any(), - fun((dynamic_()) -> {ok, EAL} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@option:option(EAL)} | - {error, list(decode_error())}). -optional_field(Name, Inner_type) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_field(Value, Name), - fun(Maybe_inner) -> case Maybe_inner of - none -> - {ok, none}; - - {some, Dynamic_inner} -> - _pipe = Dynamic_inner, - _pipe@1 = gleam_stdlib:decode_option(_pipe, Inner_type), - map_errors( - _pipe@1, - fun(_capture) -> push_path(_capture, Name) end - ) - end end - ) - end. - --spec element( - integer(), - fun((dynamic_()) -> {ok, EAT} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EAT} | {error, list(decode_error())}). -element(Index, Inner_type) -> - fun(Data) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple(Data), - fun(Tuple) -> - Size = gleam_stdlib:size_of_tuple(Tuple), - gleam@result:'try'(case Index >= 0 of - true -> - case Index < Size of - true -> - gleam_stdlib:tuple_get(Tuple, Index); - - false -> - at_least_decode_tuple_error(Index + 1, Data) - end; - - false -> - case gleam@int:absolute_value(Index) =< Size of - true -> - gleam_stdlib:tuple_get(Tuple, Size + Index); - - false -> - at_least_decode_tuple_error( - gleam@int:absolute_value(Index), - Data - ) - end - end, fun(Data@1) -> _pipe = Inner_type(Data@1), - map_errors( - _pipe, - fun(_capture) -> push_path(_capture, Index) end - ) end) - end - ) - end. - --spec tuple_errors({ok, any()} | {error, list(decode_error())}, binary()) -> list(decode_error()). -tuple_errors(Result, Name) -> - case Result of - {ok, _} -> - []; - - {error, Errors} -> - gleam@list:map( - Errors, - fun(_capture) -> push_path(_capture, Name) end - ) - end. - --spec tuple2( - fun((dynamic_()) -> {ok, EBT} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EBV} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {EBT, EBV}} | {error, list(decode_error())}). -tuple2(Decode1, Decode2) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple2(Value), - fun(_use0) -> - {A, B} = _use0, - case {Decode1(A), Decode2(B)} of - {{ok, A@1}, {ok, B@1}} -> - {ok, {A@1, B@1}}; - - {A@2, B@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - {error, _pipe@1} - end - end - ) - end. - --spec tuple3( - fun((dynamic_()) -> {ok, EBY} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECC} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {EBY, ECA, ECC}} | {error, list(decode_error())}). -tuple3(Decode1, Decode2, Decode3) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple3(Value), - fun(_use0) -> - {A, B, C} = _use0, - case {Decode1(A), Decode2(B), Decode3(C)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}} -> - {ok, {A@1, B@1, C@1}}; - - {A@2, B@2, C@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - {error, _pipe@2} - end - end - ) - end. - --spec tuple4( - fun((dynamic_()) -> {ok, ECF} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECH} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECJ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECL} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {ECF, ECH, ECJ, ECL}} | - {error, list(decode_error())}). -tuple4(Decode1, Decode2, Decode3, Decode4) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple4(Value), - fun(_use0) -> - {A, B, C, D} = _use0, - case {Decode1(A), Decode2(B), Decode3(C), Decode4(D)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}} -> - {ok, {A@1, B@1, C@1, D@1}}; - - {A@2, B@2, C@2, D@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - {error, _pipe@3} - end - end - ) - end. - --spec tuple5( - fun((dynamic_()) -> {ok, ECO} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECQ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECS} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECU} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, ECW} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {ECO, ECQ, ECS, ECU, ECW}} | - {error, list(decode_error())}). -tuple5(Decode1, Decode2, Decode3, Decode4, Decode5) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple5(Value), - fun(_use0) -> - {A, B, C, D, E} = _use0, - case {Decode1(A), - Decode2(B), - Decode3(C), - Decode4(D), - Decode5(E)} of - {{ok, A@1}, {ok, B@1}, {ok, C@1}, {ok, D@1}, {ok, E@1}} -> - {ok, {A@1, B@1, C@1, D@1, E@1}}; - - {A@2, B@2, C@2, D@2, E@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - _pipe@4 = gleam@list:append( - _pipe@3, - tuple_errors(E@2, <<"4"/utf8>>) - ), - {error, _pipe@4} - end - end - ) - end. - --spec tuple6( - fun((dynamic_()) -> {ok, ECZ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDD} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDF} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDH} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDJ} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, {ECZ, EDB, EDD, EDF, EDH, EDJ}} | - {error, list(decode_error())}). -tuple6(Decode1, Decode2, Decode3, Decode4, Decode5, Decode6) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_tuple6(Value), - fun(_use0) -> - {A, B, C, D, E, F} = _use0, - case {Decode1(A), - Decode2(B), - Decode3(C), - Decode4(D), - Decode5(E), - Decode6(F)} of - {{ok, A@1}, - {ok, B@1}, - {ok, C@1}, - {ok, D@1}, - {ok, E@1}, - {ok, F@1}} -> - {ok, {A@1, B@1, C@1, D@1, E@1, F@1}}; - - {A@2, B@2, C@2, D@2, E@2, F@2} -> - _pipe = tuple_errors(A@2, <<"0"/utf8>>), - _pipe@1 = gleam@list:append( - _pipe, - tuple_errors(B@2, <<"1"/utf8>>) - ), - _pipe@2 = gleam@list:append( - _pipe@1, - tuple_errors(C@2, <<"2"/utf8>>) - ), - _pipe@3 = gleam@list:append( - _pipe@2, - tuple_errors(D@2, <<"3"/utf8>>) - ), - _pipe@4 = gleam@list:append( - _pipe@3, - tuple_errors(E@2, <<"4"/utf8>>) - ), - _pipe@5 = gleam@list:append( - _pipe@4, - tuple_errors(F@2, <<"5"/utf8>>) - ), - {error, _pipe@5} - end - end - ) - end. - --spec dict( - fun((dynamic_()) -> {ok, EDM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDO} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@dict:dict(EDM, EDO)} | - {error, list(decode_error())}). -dict(Key_type, Value_type) -> - fun(Value) -> - gleam@result:'try'( - gleam_stdlib:decode_map(Value), - fun(Map) -> - gleam@result:'try'( - begin - _pipe = Map, - _pipe@1 = gleam@dict:to_list(_pipe), - gleam@list:try_map( - _pipe@1, - fun(Pair) -> - {K, V} = Pair, - gleam@result:'try'( - begin - _pipe@2 = Key_type(K), - map_errors( - _pipe@2, - fun(_capture) -> - push_path( - _capture, - <<"keys"/utf8>> - ) - end - ) - end, - fun(K@1) -> - gleam@result:'try'( - begin - _pipe@3 = Value_type(V), - map_errors( - _pipe@3, - fun(_capture@1) -> - push_path( - _capture@1, - <<"values"/utf8>> - ) - end - ) - end, - fun(V@1) -> {ok, {K@1, V@1}} end - ) - end - ) - end - ) - end, - fun(Pairs) -> {ok, gleam@dict:from_list(Pairs)} end - ) - end - ) - end. - --spec map( - fun((dynamic_()) -> {ok, EDT} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EDV} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, gleam@dict:dict(EDT, EDV)} | - {error, list(decode_error())}). -map(Key_type, Value_type) -> - dict(Key_type, Value_type). - --spec decode2( - fun((EEM, EEN) -> EEO), - fun((dynamic_()) -> {ok, EEM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EEN} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EEO} | {error, list(decode_error())}). -decode2(Constructor, T1, T2) -> - fun(Value) -> case {T1(Value), T2(Value)} of - {{ok, A}, {ok, B}} -> - {ok, Constructor(A, B)}; - - {A@1, B@1} -> - {error, gleam@list:concat([all_errors(A@1), all_errors(B@1)])} - end end. - --spec decode3( - fun((EES, EET, EEU) -> EEV), - fun((dynamic_()) -> {ok, EES} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EET} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EEU} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EEV} | {error, list(decode_error())}). -decode3(Constructor, T1, T2, T3) -> - fun(Value) -> case {T1(Value), T2(Value), T3(Value)} of - {{ok, A}, {ok, B}, {ok, C}} -> - {ok, Constructor(A, B, C)}; - - {A@1, B@1, C@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), all_errors(B@1), all_errors(C@1)] - )} - end end. - --spec decode4( - fun((EFA, EFB, EFC, EFD) -> EFE), - fun((dynamic_()) -> {ok, EFA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFC} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFD} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EFE} | {error, list(decode_error())}). -decode4(Constructor, T1, T2, T3, T4) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}} -> - {ok, Constructor(A, B, C, D)}; - - {A@1, B@1, C@1, D@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1)] - )} - end end. - --spec decode5( - fun((EFK, EFL, EFM, EFN, EFO) -> EFP), - fun((dynamic_()) -> {ok, EFK} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFL} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFN} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFO} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EFP} | {error, list(decode_error())}). -decode5(Constructor, T1, T2, T3, T4, T5) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}} -> - {ok, Constructor(A, B, C, D, E)}; - - {A@1, B@1, C@1, D@1, E@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1)] - )} - end end. - --spec decode6( - fun((EFW, EFX, EFY, EFZ, EGA, EGB) -> EGC), - fun((dynamic_()) -> {ok, EFW} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFX} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFY} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EFZ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGB} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EGC} | {error, list(decode_error())}). -decode6(Constructor, T1, T2, T3, T4, T5, T6) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}} -> - {ok, Constructor(A, B, C, D, E, F)}; - - {A@1, B@1, C@1, D@1, E@1, F@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1)] - )} - end end. - --spec decode7( - fun((EGK, EGL, EGM, EGN, EGO, EGP, EGQ) -> EGR), - fun((dynamic_()) -> {ok, EGK} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGL} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGM} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGN} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGO} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGP} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EGQ} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EGR} | {error, list(decode_error())}). -decode7(Constructor, T1, T2, T3, T4, T5, T6, T7) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X)} of - {{ok, A}, {ok, B}, {ok, C}, {ok, D}, {ok, E}, {ok, F}, {ok, G}} -> - {ok, Constructor(A, B, C, D, E, F, G)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1)] - )} - end end. - --spec decode8( - fun((EHA, EHB, EHC, EHD, EHE, EHF, EHG, EHH) -> EHI), - fun((dynamic_()) -> {ok, EHA} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHB} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHC} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHD} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHE} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHF} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHG} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHH} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EHI} | {error, list(decode_error())}). -decode8(Constructor, T1, T2, T3, T4, T5, T6, T7, T8) -> - fun(X) -> case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X)} of - {{ok, A}, - {ok, B}, - {ok, C}, - {ok, D}, - {ok, E}, - {ok, F}, - {ok, G}, - {ok, H}} -> - {ok, Constructor(A, B, C, D, E, F, G, H)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1), - all_errors(H@1)] - )} - end end. - --spec decode9( - fun((EHS, EHT, EHU, EHV, EHW, EHX, EHY, EHZ, EIA) -> EIB), - fun((dynamic_()) -> {ok, EHS} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHT} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHU} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHV} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHW} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHX} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHY} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EHZ} | {error, list(decode_error())}), - fun((dynamic_()) -> {ok, EIA} | {error, list(decode_error())}) -) -> fun((dynamic_()) -> {ok, EIB} | {error, list(decode_error())}). -decode9(Constructor, T1, T2, T3, T4, T5, T6, T7, T8, T9) -> - fun(X) -> - case {T1(X), T2(X), T3(X), T4(X), T5(X), T6(X), T7(X), T8(X), T9(X)} of - {{ok, A}, - {ok, B}, - {ok, C}, - {ok, D}, - {ok, E}, - {ok, F}, - {ok, G}, - {ok, H}, - {ok, I}} -> - {ok, Constructor(A, B, C, D, E, F, G, H, I)}; - - {A@1, B@1, C@1, D@1, E@1, F@1, G@1, H@1, I@1} -> - {error, - gleam@list:concat( - [all_errors(A@1), - all_errors(B@1), - all_errors(C@1), - all_errors(D@1), - all_errors(E@1), - all_errors(F@1), - all_errors(G@1), - all_errors(H@1), - all_errors(I@1)] - )} - end - end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl deleted file mode 100644 index 33b3d4a..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@float.erl +++ /dev/null @@ -1,181 +0,0 @@ --module(gleam@float). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse/1, to_string/1, compare/2, min/2, max/2, clamp/3, ceiling/1, floor/1, round/1, truncate/1, absolute_value/1, loosely_compare/3, loosely_equals/3, power/2, square_root/1, negate/1, sum/1, product/1, random/2, divide/2, add/2, multiply/2, subtract/2]). - --spec parse(binary()) -> {ok, float()} | {error, nil}. -parse(String) -> - gleam_stdlib:parse_float(String). - --spec to_string(float()) -> binary(). -to_string(X) -> - gleam_stdlib:float_to_string(X). - --spec compare(float(), float()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. - --spec min(float(), float()) -> float(). -min(A, B) -> - case A < B of - true -> - A; - - false -> - B - end. - --spec max(float(), float()) -> float(). -max(A, B) -> - case A > B of - true -> - A; - - false -> - B - end. - --spec clamp(float(), float(), float()) -> float(). -clamp(X, Min_bound, Max_bound) -> - _pipe = X, - _pipe@1 = min(_pipe, Max_bound), - max(_pipe@1, Min_bound). - --spec ceiling(float()) -> float(). -ceiling(X) -> - math:ceil(X). - --spec floor(float()) -> float(). -floor(X) -> - math:floor(X). - --spec round(float()) -> integer(). -round(X) -> - erlang:round(X). - --spec truncate(float()) -> integer(). -truncate(X) -> - erlang:trunc(X). - --spec absolute_value(float()) -> float(). -absolute_value(X) -> - case X >= +0.0 of - true -> - X; - - _ -> - +0.0 - X - end. - --spec loosely_compare(float(), float(), float()) -> gleam@order:order(). -loosely_compare(A, B, Tolerance) -> - Difference = absolute_value(A - B), - case Difference =< Tolerance of - true -> - eq; - - false -> - compare(A, B) - end. - --spec loosely_equals(float(), float(), float()) -> boolean(). -loosely_equals(A, B, Tolerance) -> - Difference = absolute_value(A - B), - Difference =< Tolerance. - --spec power(float(), float()) -> {ok, float()} | {error, nil}. -power(Base, Exponent) -> - Fractional = (ceiling(Exponent) - Exponent) > +0.0, - case ((Base < +0.0) andalso Fractional) orelse ((Base =:= +0.0) andalso (Exponent - < +0.0)) of - true -> - {error, nil}; - - false -> - {ok, math:pow(Base, Exponent)} - end. - --spec square_root(float()) -> {ok, float()} | {error, nil}. -square_root(X) -> - power(X, 0.5). - --spec negate(float()) -> float(). -negate(X) -> - -1.0 * X. - --spec do_sum(list(float()), float()) -> float(). -do_sum(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_sum(Rest, X + Initial) - end. - --spec sum(list(float())) -> float(). -sum(Numbers) -> - _pipe = Numbers, - do_sum(_pipe, +0.0). - --spec do_product(list(float()), float()) -> float(). -do_product(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_product(Rest, X * Initial) - end. - --spec product(list(float())) -> float(). -product(Numbers) -> - case Numbers of - [] -> - 1.0; - - _ -> - do_product(Numbers, 1.0) - end. - --spec random(float(), float()) -> float(). -random(Min, Max) -> - (rand:uniform() * (Max - Min)) + Min. - --spec divide(float(), float()) -> {ok, float()} | {error, nil}. -divide(A, B) -> - case B of - +0.0 -> - {error, nil}; - - B@1 -> - {ok, case B@1 of - +0.0 -> +0.0; - -0.0 -> -0.0; - Gleam@denominator -> A / Gleam@denominator - end} - end. - --spec add(float(), float()) -> float(). -add(A, B) -> - A + B. - --spec multiply(float(), float()) -> float(). -multiply(A, B) -> - A * B. - --spec subtract(float(), float()) -> float(). -subtract(A, B) -> - A - B. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl deleted file mode 100644 index 3496318..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@function.erl +++ /dev/null @@ -1,67 +0,0 @@ --module(gleam@function). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compose/2, curry2/1, curry3/1, curry4/1, curry5/1, curry6/1, flip/1, identity/1, constant/1, tap/2, apply1/2, apply2/3, apply3/4]). - --spec compose(fun((DOO) -> DOP), fun((DOP) -> DOQ)) -> fun((DOO) -> DOQ). -compose(Fun1, Fun2) -> - fun(A) -> Fun2(Fun1(A)) end. - --spec curry2(fun((DOR, DOS) -> DOT)) -> fun((DOR) -> fun((DOS) -> DOT)). -curry2(Fun) -> - fun(A) -> fun(B) -> Fun(A, B) end end. - --spec curry3(fun((DOV, DOW, DOX) -> DOY)) -> fun((DOV) -> fun((DOW) -> fun((DOX) -> DOY))). -curry3(Fun) -> - fun(A) -> fun(B) -> fun(C) -> Fun(A, B, C) end end end. - --spec curry4(fun((DPA, DPB, DPC, DPD) -> DPE)) -> fun((DPA) -> fun((DPB) -> fun((DPC) -> fun((DPD) -> DPE)))). -curry4(Fun) -> - fun(A) -> fun(B) -> fun(C) -> fun(D) -> Fun(A, B, C, D) end end end end. - --spec curry5(fun((DPG, DPH, DPI, DPJ, DPK) -> DPL)) -> fun((DPG) -> fun((DPH) -> fun((DPI) -> fun((DPJ) -> fun((DPK) -> DPL))))). -curry5(Fun) -> - fun(A) -> - fun(B) -> - fun(C) -> fun(D) -> fun(E) -> Fun(A, B, C, D, E) end end end - end - end. - --spec curry6(fun((DPN, DPO, DPP, DPQ, DPR, DPS) -> DPT)) -> fun((DPN) -> fun((DPO) -> fun((DPP) -> fun((DPQ) -> fun((DPR) -> fun((DPS) -> DPT)))))). -curry6(Fun) -> - fun(A) -> - fun(B) -> - fun(C) -> - fun(D) -> fun(E) -> fun(F) -> Fun(A, B, C, D, E, F) end end end - end - end - end. - --spec flip(fun((DPV, DPW) -> DPX)) -> fun((DPW, DPV) -> DPX). -flip(Fun) -> - fun(B, A) -> Fun(A, B) end. - --spec identity(DPY) -> DPY. -identity(X) -> - X. - --spec constant(DPZ) -> fun((any()) -> DPZ). -constant(Value) -> - fun(_) -> Value end. - --spec tap(DQB, fun((DQB) -> any())) -> DQB. -tap(Arg, Effect) -> - Effect(Arg), - Arg. - --spec apply1(fun((DQD) -> DQE), DQD) -> DQE. -apply1(Fun, Arg1) -> - Fun(Arg1). - --spec apply2(fun((DQF, DQG) -> DQH), DQF, DQG) -> DQH. -apply2(Fun, Arg1, Arg2) -> - Fun(Arg1, Arg2). - --spec apply3(fun((DQI, DQJ, DQK) -> DQL), DQI, DQJ, DQK) -> DQL. -apply3(Fun, Arg1, Arg2, Arg3) -> - Fun(Arg1, Arg2, Arg3). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl deleted file mode 100644 index 2a5dd2c..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@int.erl +++ /dev/null @@ -1,332 +0,0 @@ --module(gleam@int). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([absolute_value/1, parse/1, base_parse/2, to_string/1, to_base_string/2, to_base2/1, to_base8/1, to_base16/1, to_base36/1, to_float/1, power/2, square_root/1, compare/2, min/2, max/2, clamp/3, is_even/1, is_odd/1, negate/1, sum/1, product/1, digits/2, undigits/2, random/2, divide/2, remainder/2, modulo/2, floor_divide/2, add/2, multiply/2, subtract/2, bitwise_and/2, bitwise_not/1, bitwise_or/2, bitwise_exclusive_or/2, bitwise_shift_left/2, bitwise_shift_right/2]). --export_type([invalid_base/0]). - --type invalid_base() :: invalid_base. - --spec absolute_value(integer()) -> integer(). -absolute_value(X) -> - case X >= 0 of - true -> - X; - - false -> - X * -1 - end. - --spec parse(binary()) -> {ok, integer()} | {error, nil}. -parse(String) -> - gleam_stdlib:parse_int(String). - --spec base_parse(binary(), integer()) -> {ok, integer()} | {error, nil}. -base_parse(String, Base) -> - case (Base >= 2) andalso (Base =< 36) of - true -> - gleam_stdlib:int_from_base_string(String, Base); - - false -> - {error, nil} - end. - --spec to_string(integer()) -> binary(). -to_string(X) -> - erlang:integer_to_binary(X). - --spec to_base_string(integer(), integer()) -> {ok, binary()} | - {error, invalid_base()}. -to_base_string(X, Base) -> - case (Base >= 2) andalso (Base =< 36) of - true -> - {ok, erlang:integer_to_binary(X, Base)}; - - false -> - {error, invalid_base} - end. - --spec to_base2(integer()) -> binary(). -to_base2(X) -> - erlang:integer_to_binary(X, 2). - --spec to_base8(integer()) -> binary(). -to_base8(X) -> - erlang:integer_to_binary(X, 8). - --spec to_base16(integer()) -> binary(). -to_base16(X) -> - erlang:integer_to_binary(X, 16). - --spec to_base36(integer()) -> binary(). -to_base36(X) -> - erlang:integer_to_binary(X, 36). - --spec to_float(integer()) -> float(). -to_float(X) -> - erlang:float(X). - --spec power(integer(), float()) -> {ok, float()} | {error, nil}. -power(Base, Exponent) -> - _pipe = Base, - _pipe@1 = to_float(_pipe), - gleam@float:power(_pipe@1, Exponent). - --spec square_root(integer()) -> {ok, float()} | {error, nil}. -square_root(X) -> - _pipe = X, - _pipe@1 = to_float(_pipe), - gleam@float:square_root(_pipe@1). - --spec compare(integer(), integer()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - false -> - case A < B of - true -> - lt; - - false -> - gt - end - end. - --spec min(integer(), integer()) -> integer(). -min(A, B) -> - case A < B of - true -> - A; - - false -> - B - end. - --spec max(integer(), integer()) -> integer(). -max(A, B) -> - case A > B of - true -> - A; - - false -> - B - end. - --spec clamp(integer(), integer(), integer()) -> integer(). -clamp(X, Min_bound, Max_bound) -> - _pipe = X, - _pipe@1 = min(_pipe, Max_bound), - max(_pipe@1, Min_bound). - --spec is_even(integer()) -> boolean(). -is_even(X) -> - (X rem 2) =:= 0. - --spec is_odd(integer()) -> boolean(). -is_odd(X) -> - (X rem 2) /= 0. - --spec negate(integer()) -> integer(). -negate(X) -> - -1 * X. - --spec do_sum(list(integer()), integer()) -> integer(). -do_sum(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_sum(Rest, X + Initial) - end. - --spec sum(list(integer())) -> integer(). -sum(Numbers) -> - _pipe = Numbers, - do_sum(_pipe, 0). - --spec do_product(list(integer()), integer()) -> integer(). -do_product(Numbers, Initial) -> - case Numbers of - [] -> - Initial; - - [X | Rest] -> - do_product(Rest, X * Initial) - end. - --spec product(list(integer())) -> integer(). -product(Numbers) -> - case Numbers of - [] -> - 1; - - _ -> - do_product(Numbers, 1) - end. - --spec do_digits(integer(), integer(), list(integer())) -> list(integer()). -do_digits(X, Base, Acc) -> - case absolute_value(X) < Base of - true -> - [X | Acc]; - - false -> - do_digits(case Base of - 0 -> 0; - Gleam@denominator -> X div Gleam@denominator - end, Base, [case Base of - 0 -> 0; - Gleam@denominator@1 -> X rem Gleam@denominator@1 - end | Acc]) - end. - --spec digits(integer(), integer()) -> {ok, list(integer())} | - {error, invalid_base()}. -digits(X, Base) -> - case Base < 2 of - true -> - {error, invalid_base}; - - false -> - {ok, do_digits(X, Base, [])} - end. - --spec do_undigits(list(integer()), integer(), integer()) -> {ok, integer()} | - {error, invalid_base()}. -do_undigits(Numbers, Base, Acc) -> - case Numbers of - [] -> - {ok, Acc}; - - [Digit | _] when Digit >= Base -> - {error, invalid_base}; - - [Digit@1 | Rest] -> - do_undigits(Rest, Base, (Acc * Base) + Digit@1) - end. - --spec undigits(list(integer()), integer()) -> {ok, integer()} | - {error, invalid_base()}. -undigits(Numbers, Base) -> - case Base < 2 of - true -> - {error, invalid_base}; - - false -> - do_undigits(Numbers, Base, 0) - end. - --spec random(integer(), integer()) -> integer(). -random(Min, Max) -> - _pipe = gleam@float:random(to_float(Min), to_float(Max)), - _pipe@1 = gleam@float:floor(_pipe), - gleam@float:round(_pipe@1). - --spec divide(integer(), integer()) -> {ok, integer()} | {error, nil}. -divide(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend div Gleam@denominator - end} - end. - --spec remainder(integer(), integer()) -> {ok, integer()} | {error, nil}. -remainder(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end} - end. - --spec modulo(integer(), integer()) -> {ok, integer()} | {error, nil}. -modulo(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - _ -> - Remainder = case Divisor of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end, - case (Remainder * Divisor) < 0 of - true -> - {ok, Remainder + Divisor}; - - false -> - {ok, Remainder} - end - end. - --spec floor_divide(integer(), integer()) -> {ok, integer()} | {error, nil}. -floor_divide(Dividend, Divisor) -> - case Divisor of - 0 -> - {error, nil}; - - Divisor@1 -> - case ((Dividend * Divisor@1) < 0) andalso ((case Divisor@1 of - 0 -> 0; - Gleam@denominator -> Dividend rem Gleam@denominator - end) /= 0) of - true -> - {ok, (case Divisor@1 of - 0 -> 0; - Gleam@denominator@1 -> Dividend div Gleam@denominator@1 - end) - 1}; - - false -> - {ok, case Divisor@1 of - 0 -> 0; - Gleam@denominator@2 -> Dividend div Gleam@denominator@2 - end} - end - end. - --spec add(integer(), integer()) -> integer(). -add(A, B) -> - A + B. - --spec multiply(integer(), integer()) -> integer(). -multiply(A, B) -> - A * B. - --spec subtract(integer(), integer()) -> integer(). -subtract(A, B) -> - A - B. - --spec bitwise_and(integer(), integer()) -> integer(). -bitwise_and(X, Y) -> - erlang:'band'(X, Y). - --spec bitwise_not(integer()) -> integer(). -bitwise_not(X) -> - erlang:'bnot'(X). - --spec bitwise_or(integer(), integer()) -> integer(). -bitwise_or(X, Y) -> - erlang:'bor'(X, Y). - --spec bitwise_exclusive_or(integer(), integer()) -> integer(). -bitwise_exclusive_or(X, Y) -> - erlang:'bxor'(X, Y). - --spec bitwise_shift_left(integer(), integer()) -> integer(). -bitwise_shift_left(X, Y) -> - erlang:'bsl'(X, Y). - --spec bitwise_shift_right(integer(), integer()) -> integer(). -bitwise_shift_right(X, Y) -> - erlang:'bsr'(X, Y). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl deleted file mode 100644 index a46eae3..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@io.erl +++ /dev/null @@ -1,27 +0,0 @@ --module(gleam@io). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([print/1, print_error/1, println/1, println_error/1, debug/1]). - --spec print(binary()) -> nil. -print(String) -> - gleam_stdlib:print(String). - --spec print_error(binary()) -> nil. -print_error(String) -> - gleam_stdlib:print_error(String). - --spec println(binary()) -> nil. -println(String) -> - gleam_stdlib:println(String). - --spec println_error(binary()) -> nil. -println_error(String) -> - gleam_stdlib:println_error(String). - --spec debug(CZT) -> CZT. -debug(Term) -> - _pipe = Term, - _pipe@1 = gleam@string:inspect(_pipe), - gleam_stdlib:println_error(_pipe@1), - Term. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl deleted file mode 100644 index aa84139..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@iterator.erl +++ /dev/null @@ -1,744 +0,0 @@ --module(gleam@iterator). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([unfold/2, repeatedly/1, repeat/1, from_list/1, transform/3, fold/3, run/1, to_list/1, step/1, take/2, drop/2, map/2, map2/3, append/2, flatten/1, concat/1, flat_map/2, filter/2, cycle/1, find/2, index/1, iterate/2, take_while/2, drop_while/2, scan/3, zip/2, chunk/2, sized_chunk/2, intersperse/2, any/2, all/2, group/2, reduce/2, last/1, empty/0, once/1, range/2, single/1, interleave/2, fold_until/3, try_fold/3, first/1, at/2, length/1, each/2, yield/2]). --export_type([action/1, iterator/1, step/2, chunk/2, sized_chunk/1]). - --type action(BPF) :: stop | {continue, BPF, fun(() -> action(BPF))}. - --opaque iterator(BPG) :: {iterator, fun(() -> action(BPG))}. - --type step(BPH, BPI) :: {next, BPH, BPI} | done. - --type chunk(BPJ, BPK) :: {another_by, - list(BPJ), - BPK, - BPJ, - fun(() -> action(BPJ))} | - {last_by, list(BPJ)}. - --type sized_chunk(BPL) :: {another, list(BPL), fun(() -> action(BPL))} | - {last, list(BPL)} | - no_more. - --spec stop() -> action(any()). -stop() -> - stop. - --spec do_unfold(BPO, fun((BPO) -> step(BPP, BPO))) -> fun(() -> action(BPP)). -do_unfold(Initial, F) -> - fun() -> case F(Initial) of - {next, X, Acc} -> - {continue, X, do_unfold(Acc, F)}; - - done -> - stop - end end. - --spec unfold(BPT, fun((BPT) -> step(BPU, BPT))) -> iterator(BPU). -unfold(Initial, F) -> - _pipe = Initial, - _pipe@1 = do_unfold(_pipe, F), - {iterator, _pipe@1}. - --spec repeatedly(fun(() -> BPY)) -> iterator(BPY). -repeatedly(F) -> - unfold(nil, fun(_) -> {next, F(), nil} end). - --spec repeat(BQA) -> iterator(BQA). -repeat(X) -> - repeatedly(fun() -> X end). - --spec from_list(list(BQC)) -> iterator(BQC). -from_list(List) -> - Yield = fun(Acc) -> case Acc of - [] -> - done; - - [Head | Tail] -> - {next, Head, Tail} - end end, - unfold(List, Yield). - --spec do_transform( - fun(() -> action(BQF)), - BQH, - fun((BQH, BQF) -> step(BQI, BQH)) -) -> fun(() -> action(BQI)). -do_transform(Continuation, State, F) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, El, Next} -> - case F(State, El) of - done -> - stop; - - {next, Yield, Next_state} -> - {continue, Yield, do_transform(Next, Next_state, F)} - end - end end. - --spec transform(iterator(BQM), BQO, fun((BQO, BQM) -> step(BQP, BQO))) -> iterator(BQP). -transform(Iterator, Initial, F) -> - _pipe = do_transform(erlang:element(2, Iterator), Initial, F), - {iterator, _pipe}. - --spec do_fold(fun(() -> action(BQT)), fun((BQV, BQT) -> BQV), BQV) -> BQV. -do_fold(Continuation, F, Accumulator) -> - case Continuation() of - {continue, Elem, Next} -> - do_fold(Next, F, F(Accumulator, Elem)); - - stop -> - Accumulator - end. - --spec fold(iterator(BQW), BQY, fun((BQY, BQW) -> BQY)) -> BQY. -fold(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_fold(_pipe, F, Initial). - --spec run(iterator(any())) -> nil. -run(Iterator) -> - fold(Iterator, nil, fun(_, _) -> nil end). - --spec to_list(iterator(BRB)) -> list(BRB). -to_list(Iterator) -> - _pipe = Iterator, - _pipe@1 = fold(_pipe, [], fun(Acc, E) -> [E | Acc] end), - gleam@list:reverse(_pipe@1). - --spec step(iterator(BRE)) -> step(BRE, iterator(BRE)). -step(Iterator) -> - case (erlang:element(2, Iterator))() of - stop -> - done; - - {continue, E, A} -> - {next, E, {iterator, A}} - end. - --spec do_take(fun(() -> action(BRJ)), integer()) -> fun(() -> action(BRJ)). -do_take(Continuation, Desired) -> - fun() -> case Desired > 0 of - false -> - stop; - - true -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - {continue, E, do_take(Next, Desired - 1)} - end - end end. - --spec take(iterator(BRM), integer()) -> iterator(BRM). -take(Iterator, Desired) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_take(_pipe, Desired), - {iterator, _pipe@1}. - --spec do_drop(fun(() -> action(BRP)), integer()) -> action(BRP). -do_drop(Continuation, Desired) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Desired > 0 of - true -> - do_drop(Next, Desired - 1); - - false -> - {continue, E, Next} - end - end. - --spec drop(iterator(BRS), integer()) -> iterator(BRS). -drop(Iterator, Desired) -> - _pipe = fun() -> do_drop(erlang:element(2, Iterator), Desired) end, - {iterator, _pipe}. - --spec do_map(fun(() -> action(BRV)), fun((BRV) -> BRX)) -> fun(() -> action(BRX)). -do_map(Continuation, F) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Continuation@1} -> - {continue, F(E), do_map(Continuation@1, F)} - end end. - --spec map(iterator(BRZ), fun((BRZ) -> BSB)) -> iterator(BSB). -map(Iterator, F) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_map(_pipe, F), - {iterator, _pipe@1}. - --spec do_map2( - fun(() -> action(BSD)), - fun(() -> action(BSF)), - fun((BSD, BSF) -> BSH) -) -> fun(() -> action(BSH)). -do_map2(Continuation1, Continuation2, Fun) -> - fun() -> case Continuation1() of - stop -> - stop; - - {continue, A, Next_a} -> - case Continuation2() of - stop -> - stop; - - {continue, B, Next_b} -> - {continue, Fun(A, B), do_map2(Next_a, Next_b, Fun)} - end - end end. - --spec map2(iterator(BSJ), iterator(BSL), fun((BSJ, BSL) -> BSN)) -> iterator(BSN). -map2(Iterator1, Iterator2, Fun) -> - _pipe = do_map2( - erlang:element(2, Iterator1), - erlang:element(2, Iterator2), - Fun - ), - {iterator, _pipe}. - --spec do_append(fun(() -> action(BSP)), fun(() -> action(BSP))) -> action(BSP). -do_append(First, Second) -> - case First() of - {continue, E, First@1} -> - {continue, E, fun() -> do_append(First@1, Second) end}; - - stop -> - Second() - end. - --spec append(iterator(BST), iterator(BST)) -> iterator(BST). -append(First, Second) -> - _pipe = fun() -> - do_append(erlang:element(2, First), erlang:element(2, Second)) - end, - {iterator, _pipe}. - --spec do_flatten(fun(() -> action(iterator(BSX)))) -> action(BSX). -do_flatten(Flattened) -> - case Flattened() of - stop -> - stop; - - {continue, It, Next_iterator} -> - do_append( - erlang:element(2, It), - fun() -> do_flatten(Next_iterator) end - ) - end. - --spec flatten(iterator(iterator(BTB))) -> iterator(BTB). -flatten(Iterator) -> - _pipe = fun() -> do_flatten(erlang:element(2, Iterator)) end, - {iterator, _pipe}. - --spec concat(list(iterator(BTF))) -> iterator(BTF). -concat(Iterators) -> - flatten(from_list(Iterators)). - --spec flat_map(iterator(BTJ), fun((BTJ) -> iterator(BTL))) -> iterator(BTL). -flat_map(Iterator, F) -> - _pipe = Iterator, - _pipe@1 = map(_pipe, F), - flatten(_pipe@1). - --spec do_filter(fun(() -> action(BTO)), fun((BTO) -> boolean())) -> action(BTO). -do_filter(Continuation, Predicate) -> - case Continuation() of - stop -> - stop; - - {continue, E, Iterator} -> - case Predicate(E) of - true -> - {continue, E, fun() -> do_filter(Iterator, Predicate) end}; - - false -> - do_filter(Iterator, Predicate) - end - end. - --spec filter(iterator(BTR), fun((BTR) -> boolean())) -> iterator(BTR). -filter(Iterator, Predicate) -> - _pipe = fun() -> do_filter(erlang:element(2, Iterator), Predicate) end, - {iterator, _pipe}. - --spec cycle(iterator(BTU)) -> iterator(BTU). -cycle(Iterator) -> - _pipe = repeat(Iterator), - flatten(_pipe). - --spec do_find(fun(() -> action(BTY)), fun((BTY) -> boolean())) -> {ok, BTY} | - {error, nil}. -do_find(Continuation, F) -> - case Continuation() of - stop -> - {error, nil}; - - {continue, E, Next} -> - case F(E) of - true -> - {ok, E}; - - false -> - do_find(Next, F) - end - end. - --spec find(iterator(BUC), fun((BUC) -> boolean())) -> {ok, BUC} | {error, nil}. -find(Haystack, Is_desired) -> - _pipe = erlang:element(2, Haystack), - do_find(_pipe, Is_desired). - --spec do_index(fun(() -> action(BUG)), integer()) -> fun(() -> action({integer(), - BUG})). -do_index(Continuation, Next) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Continuation@1} -> - {continue, {Next, E}, do_index(Continuation@1, Next + 1)} - end end. - --spec index(iterator(BUJ)) -> iterator({integer(), BUJ}). -index(Iterator) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_index(_pipe, 0), - {iterator, _pipe@1}. - --spec iterate(BUM, fun((BUM) -> BUM)) -> iterator(BUM). -iterate(Initial, F) -> - unfold(Initial, fun(Element) -> {next, Element, F(Element)} end). - --spec do_take_while(fun(() -> action(BUO)), fun((BUO) -> boolean())) -> fun(() -> action(BUO)). -do_take_while(Continuation, Predicate) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Predicate(E) of - false -> - stop; - - true -> - {continue, E, do_take_while(Next, Predicate)} - end - end end. - --spec take_while(iterator(BUR), fun((BUR) -> boolean())) -> iterator(BUR). -take_while(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_take_while(_pipe, Predicate), - {iterator, _pipe@1}. - --spec do_drop_while(fun(() -> action(BUU)), fun((BUU) -> boolean())) -> action(BUU). -do_drop_while(Continuation, Predicate) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - case Predicate(E) of - false -> - {continue, E, Next}; - - true -> - do_drop_while(Next, Predicate) - end - end. - --spec drop_while(iterator(BUX), fun((BUX) -> boolean())) -> iterator(BUX). -drop_while(Iterator, Predicate) -> - _pipe = fun() -> do_drop_while(erlang:element(2, Iterator), Predicate) end, - {iterator, _pipe}. - --spec do_scan(fun(() -> action(BVA)), fun((BVC, BVA) -> BVC), BVC) -> fun(() -> action(BVC)). -do_scan(Continuation, F, Accumulator) -> - fun() -> case Continuation() of - stop -> - stop; - - {continue, El, Next} -> - Accumulated = F(Accumulator, El), - {continue, Accumulated, do_scan(Next, F, Accumulated)} - end end. - --spec scan(iterator(BVE), BVG, fun((BVG, BVE) -> BVG)) -> iterator(BVG). -scan(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_scan(_pipe, F, Initial), - {iterator, _pipe@1}. - --spec do_zip(fun(() -> action(BVI)), fun(() -> action(BVK))) -> fun(() -> action({BVI, - BVK})). -do_zip(Left, Right) -> - fun() -> case Left() of - stop -> - stop; - - {continue, El_left, Next_left} -> - case Right() of - stop -> - stop; - - {continue, El_right, Next_right} -> - {continue, - {El_left, El_right}, - do_zip(Next_left, Next_right)} - end - end end. - --spec zip(iterator(BVN), iterator(BVP)) -> iterator({BVN, BVP}). -zip(Left, Right) -> - _pipe = do_zip(erlang:element(2, Left), erlang:element(2, Right)), - {iterator, _pipe}. - --spec next_chunk(fun(() -> action(BVS)), fun((BVS) -> BVU), BVU, list(BVS)) -> chunk(BVS, BVU). -next_chunk(Continuation, F, Previous_key, Current_chunk) -> - case Continuation() of - stop -> - {last_by, gleam@list:reverse(Current_chunk)}; - - {continue, E, Next} -> - Key = F(E), - case Key =:= Previous_key of - true -> - next_chunk(Next, F, Key, [E | Current_chunk]); - - false -> - {another_by, - gleam@list:reverse(Current_chunk), - Key, - E, - Next} - end - end. - --spec do_chunk(fun(() -> action(BVY)), fun((BVY) -> BWA), BWA, BVY) -> action(list(BVY)). -do_chunk(Continuation, F, Previous_key, Previous_element) -> - case next_chunk(Continuation, F, Previous_key, [Previous_element]) of - {last_by, Chunk} -> - {continue, Chunk, fun stop/0}; - - {another_by, Chunk@1, Key, El, Next} -> - {continue, Chunk@1, fun() -> do_chunk(Next, F, Key, El) end} - end. - --spec chunk(iterator(BWD), fun((BWD) -> any())) -> iterator(list(BWD)). -chunk(Iterator, F) -> - _pipe = fun() -> case (erlang:element(2, Iterator))() of - stop -> - stop; - - {continue, E, Next} -> - do_chunk(Next, F, F(E), E) - end end, - {iterator, _pipe}. - --spec next_sized_chunk(fun(() -> action(BWI)), integer(), list(BWI)) -> sized_chunk(BWI). -next_sized_chunk(Continuation, Left, Current_chunk) -> - case Continuation() of - stop -> - case Current_chunk of - [] -> - no_more; - - Remaining -> - {last, gleam@list:reverse(Remaining)} - end; - - {continue, E, Next} -> - Chunk = [E | Current_chunk], - case Left > 1 of - false -> - {another, gleam@list:reverse(Chunk), Next}; - - true -> - next_sized_chunk(Next, Left - 1, Chunk) - end - end. - --spec do_sized_chunk(fun(() -> action(BWM)), integer()) -> fun(() -> action(list(BWM))). -do_sized_chunk(Continuation, Count) -> - fun() -> case next_sized_chunk(Continuation, Count, []) of - no_more -> - stop; - - {last, Chunk} -> - {continue, Chunk, fun stop/0}; - - {another, Chunk@1, Next_element} -> - {continue, Chunk@1, do_sized_chunk(Next_element, Count)} - end end. - --spec sized_chunk(iterator(BWQ), integer()) -> iterator(list(BWQ)). -sized_chunk(Iterator, Count) -> - _pipe = erlang:element(2, Iterator), - _pipe@1 = do_sized_chunk(_pipe, Count), - {iterator, _pipe@1}. - --spec do_intersperse(fun(() -> action(BWU)), BWU) -> action(BWU). -do_intersperse(Continuation, Separator) -> - case Continuation() of - stop -> - stop; - - {continue, E, Next} -> - Next_interspersed = fun() -> do_intersperse(Next, Separator) end, - {continue, Separator, fun() -> {continue, E, Next_interspersed} end} - end. - --spec intersperse(iterator(BWX), BWX) -> iterator(BWX). -intersperse(Iterator, Elem) -> - _pipe = fun() -> case (erlang:element(2, Iterator))() of - stop -> - stop; - - {continue, E, Next} -> - {continue, E, fun() -> do_intersperse(Next, Elem) end} - end end, - {iterator, _pipe}. - --spec do_any(fun(() -> action(BXA)), fun((BXA) -> boolean())) -> boolean(). -do_any(Continuation, Predicate) -> - case Continuation() of - stop -> - false; - - {continue, E, Next} -> - case Predicate(E) of - true -> - true; - - false -> - do_any(Next, Predicate) - end - end. - --spec any(iterator(BXC), fun((BXC) -> boolean())) -> boolean(). -any(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - do_any(_pipe, Predicate). - --spec do_all(fun(() -> action(BXE)), fun((BXE) -> boolean())) -> boolean(). -do_all(Continuation, Predicate) -> - case Continuation() of - stop -> - true; - - {continue, E, Next} -> - case Predicate(E) of - true -> - do_all(Next, Predicate); - - false -> - false - end - end. - --spec all(iterator(BXG), fun((BXG) -> boolean())) -> boolean(). -all(Iterator, Predicate) -> - _pipe = erlang:element(2, Iterator), - do_all(_pipe, Predicate). - --spec update_group_with(BXI) -> fun((gleam@option:option(list(BXI))) -> list(BXI)). -update_group_with(El) -> - fun(Maybe_group) -> case Maybe_group of - {some, Group} -> - [El | Group]; - - none -> - [El] - end end. - --spec group_updater(fun((BXM) -> BXN)) -> fun((gleam@dict:dict(BXN, list(BXM)), BXM) -> gleam@dict:dict(BXN, list(BXM))). -group_updater(F) -> - fun(Groups, Elem) -> _pipe = Groups, - gleam@dict:update(_pipe, F(Elem), update_group_with(Elem)) end. - --spec group(iterator(BXU), fun((BXU) -> BXW)) -> gleam@dict:dict(BXW, list(BXU)). -group(Iterator, Key) -> - _pipe = Iterator, - _pipe@1 = fold(_pipe, gleam@dict:new(), group_updater(Key)), - gleam@dict:map_values( - _pipe@1, - fun(_, Group) -> gleam@list:reverse(Group) end - ). - --spec reduce(iterator(BYA), fun((BYA, BYA) -> BYA)) -> {ok, BYA} | {error, nil}. -reduce(Iterator, F) -> - case (erlang:element(2, Iterator))() of - stop -> - {error, nil}; - - {continue, E, Next} -> - _pipe = do_fold(Next, F, E), - {ok, _pipe} - end. - --spec last(iterator(BYE)) -> {ok, BYE} | {error, nil}. -last(Iterator) -> - _pipe = Iterator, - reduce(_pipe, fun(_, Elem) -> Elem end). - --spec empty() -> iterator(any()). -empty() -> - {iterator, fun stop/0}. - --spec once(fun(() -> BYK)) -> iterator(BYK). -once(F) -> - _pipe = fun() -> {continue, F(), fun stop/0} end, - {iterator, _pipe}. - --spec range(integer(), integer()) -> iterator(integer()). -range(Start, Stop) -> - case gleam@int:compare(Start, Stop) of - eq -> - once(fun() -> Start end); - - gt -> - unfold(Start, fun(Current) -> case Current < Stop of - false -> - {next, Current, Current - 1}; - - true -> - done - end end); - - lt -> - unfold(Start, fun(Current@1) -> case Current@1 > Stop of - false -> - {next, Current@1, Current@1 + 1}; - - true -> - done - end end) - end. - --spec single(BYM) -> iterator(BYM). -single(Elem) -> - once(fun() -> Elem end). - --spec do_interleave(fun(() -> action(BYO)), fun(() -> action(BYO))) -> action(BYO). -do_interleave(Current, Next) -> - case Current() of - stop -> - Next(); - - {continue, E, Next_other} -> - {continue, E, fun() -> do_interleave(Next, Next_other) end} - end. - --spec interleave(iterator(BYS), iterator(BYS)) -> iterator(BYS). -interleave(Left, Right) -> - _pipe = fun() -> - do_interleave(erlang:element(2, Left), erlang:element(2, Right)) - end, - {iterator, _pipe}. - --spec do_fold_until( - fun(() -> action(BYW)), - fun((BYY, BYW) -> gleam@list:continue_or_stop(BYY)), - BYY -) -> BYY. -do_fold_until(Continuation, F, Accumulator) -> - case Continuation() of - stop -> - Accumulator; - - {continue, Elem, Next} -> - case F(Accumulator, Elem) of - {continue, Accumulator@1} -> - do_fold_until(Next, F, Accumulator@1); - - {stop, Accumulator@2} -> - Accumulator@2 - end - end. - --spec fold_until( - iterator(BZA), - BZC, - fun((BZC, BZA) -> gleam@list:continue_or_stop(BZC)) -) -> BZC. -fold_until(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_fold_until(_pipe, F, Initial). - --spec do_try_fold( - fun(() -> action(BZE)), - fun((BZG, BZE) -> {ok, BZG} | {error, BZH}), - BZG -) -> {ok, BZG} | {error, BZH}. -do_try_fold(Continuation, F, Accumulator) -> - case Continuation() of - stop -> - {ok, Accumulator}; - - {continue, Elem, Next} -> - gleam@result:'try'( - F(Accumulator, Elem), - fun(Accumulator@1) -> do_try_fold(Next, F, Accumulator@1) end - ) - end. - --spec try_fold(iterator(BZM), BZO, fun((BZO, BZM) -> {ok, BZO} | {error, BZP})) -> {ok, - BZO} | - {error, BZP}. -try_fold(Iterator, Initial, F) -> - _pipe = erlang:element(2, Iterator), - do_try_fold(_pipe, F, Initial). - --spec first(iterator(BZU)) -> {ok, BZU} | {error, nil}. -first(Iterator) -> - case (erlang:element(2, Iterator))() of - stop -> - {error, nil}; - - {continue, E, _} -> - {ok, E} - end. - --spec at(iterator(BZY), integer()) -> {ok, BZY} | {error, nil}. -at(Iterator, Index) -> - _pipe = Iterator, - _pipe@1 = drop(_pipe, Index), - first(_pipe@1). - --spec do_length(fun(() -> action(any())), integer()) -> integer(). -do_length(Continuation, Length) -> - case Continuation() of - stop -> - Length; - - {continue, _, Next} -> - do_length(Next, Length + 1) - end. - --spec length(iterator(any())) -> integer(). -length(Iterator) -> - _pipe = erlang:element(2, Iterator), - do_length(_pipe, 0). - --spec each(iterator(CAG), fun((CAG) -> any())) -> nil. -each(Iterator, F) -> - _pipe = Iterator, - _pipe@1 = map(_pipe, F), - run(_pipe@1). - --spec yield(CAJ, fun(() -> iterator(CAJ))) -> iterator(CAJ). -yield(Element, Next) -> - {iterator, fun() -> {continue, Element, erlang:element(2, Next())} end}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl deleted file mode 100644 index 6c2e684..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@list.erl +++ /dev/null @@ -1,1129 +0,0 @@ --module(gleam@list). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([length/1, reverse/1, is_empty/1, contains/2, first/1, rest/1, filter/2, filter_map/2, map/2, map2/3, index_map/2, try_map/2, drop/2, take/2, new/0, append/2, prepend/2, concat/1, flatten/1, flat_map/2, fold/3, group/2, map_fold/3, fold_right/3, index_fold/3, try_fold/3, fold_until/3, find/2, find_map/2, all/2, any/2, zip/2, strict_zip/2, unzip/1, intersperse/2, at/2, unique/1, sort/2, range/2, repeat/2, split/2, split_while/2, key_find/2, key_filter/2, pop/2, pop_map/2, key_pop/2, key_set/3, each/2, try_each/2, partition/2, permutations/1, window/2, window_by_2/1, drop_while/2, take_while/2, chunk/2, sized_chunk/2, reduce/2, scan/3, last/1, combinations/2, combination_pairs/1, transpose/1, interleave/1, shuffle/1]). --export_type([length_mismatch/0, continue_or_stop/1]). - --type length_mismatch() :: length_mismatch. - --type continue_or_stop(UD) :: {continue, UD} | {stop, UD}. - --spec length(list(any())) -> integer(). -length(List) -> - erlang:length(List). - --spec reverse(list(UI)) -> list(UI). -reverse(Xs) -> - lists:reverse(Xs). - --spec is_empty(list(any())) -> boolean(). -is_empty(List) -> - List =:= []. - --spec contains(list(UQ), UQ) -> boolean(). -contains(List, Elem) -> - case List of - [] -> - false; - - [First | _] when First =:= Elem -> - true; - - [_ | Rest] -> - contains(Rest, Elem) - end. - --spec first(list(US)) -> {ok, US} | {error, nil}. -first(List) -> - case List of - [] -> - {error, nil}; - - [X | _] -> - {ok, X} - end. - --spec rest(list(UW)) -> {ok, list(UW)} | {error, nil}. -rest(List) -> - case List of - [] -> - {error, nil}; - - [_ | Xs] -> - {ok, Xs} - end. - --spec update_group(fun((VB) -> VC)) -> fun((gleam@dict:dict(VC, list(VB)), VB) -> gleam@dict:dict(VC, list(VB))). -update_group(F) -> - fun(Groups, Elem) -> case gleam@dict:get(Groups, F(Elem)) of - {ok, Existing} -> - gleam@dict:insert(Groups, F(Elem), [Elem | Existing]); - - {error, _} -> - gleam@dict:insert(Groups, F(Elem), [Elem]) - end end. - --spec do_filter(list(VP), fun((VP) -> boolean()), list(VP)) -> list(VP). -do_filter(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - New_acc = case Fun(X) of - true -> - [X | Acc]; - - false -> - Acc - end, - do_filter(Xs, Fun, New_acc) - end. - --spec filter(list(VT), fun((VT) -> boolean())) -> list(VT). -filter(List, Predicate) -> - do_filter(List, Predicate, []). - --spec do_filter_map(list(VW), fun((VW) -> {ok, VY} | {error, any()}), list(VY)) -> list(VY). -do_filter_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - New_acc = case Fun(X) of - {ok, X@1} -> - [X@1 | Acc]; - - {error, _} -> - Acc - end, - do_filter_map(Xs, Fun, New_acc) - end. - --spec filter_map(list(WE), fun((WE) -> {ok, WG} | {error, any()})) -> list(WG). -filter_map(List, Fun) -> - do_filter_map(List, Fun, []). - --spec do_map(list(WL), fun((WL) -> WN), list(WN)) -> list(WN). -do_map(List, Fun, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_map(Xs, Fun, [Fun(X) | Acc]) - end. - --spec map(list(WQ), fun((WQ) -> WS)) -> list(WS). -map(List, Fun) -> - do_map(List, Fun, []). - --spec do_map2(list(XA), list(XC), fun((XA, XC) -> XE), list(XE)) -> list(XE). -do_map2(List1, List2, Fun, Acc) -> - case {List1, List2} of - {[], _} -> - reverse(Acc); - - {_, []} -> - reverse(Acc); - - {[A | As_], [B | Bs]} -> - do_map2(As_, Bs, Fun, [Fun(A, B) | Acc]) - end. - --spec map2(list(WU), list(WW), fun((WU, WW) -> WY)) -> list(WY). -map2(List1, List2, Fun) -> - do_map2(List1, List2, Fun, []). - --spec do_index_map(list(XM), fun((integer(), XM) -> XO), integer(), list(XO)) -> list(XO). -do_index_map(List, Fun, Index, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - Acc@1 = [Fun(Index, X) | Acc], - do_index_map(Xs, Fun, Index + 1, Acc@1) - end. - --spec index_map(list(XR), fun((integer(), XR) -> XT)) -> list(XT). -index_map(List, Fun) -> - do_index_map(List, Fun, 0, []). - --spec do_try_map(list(XV), fun((XV) -> {ok, XX} | {error, XY}), list(XX)) -> {ok, - list(XX)} | - {error, XY}. -do_try_map(List, Fun, Acc) -> - case List of - [] -> - {ok, reverse(Acc)}; - - [X | Xs] -> - case Fun(X) of - {ok, Y} -> - do_try_map(Xs, Fun, [Y | Acc]); - - {error, Error} -> - {error, Error} - end - end. - --spec try_map(list(YF), fun((YF) -> {ok, YH} | {error, YI})) -> {ok, list(YH)} | - {error, YI}. -try_map(List, Fun) -> - do_try_map(List, Fun, []). - --spec drop(list(YO), integer()) -> list(YO). -drop(List, N) -> - case N =< 0 of - true -> - List; - - false -> - case List of - [] -> - []; - - [_ | Xs] -> - drop(Xs, N - 1) - end - end. - --spec do_take(list(YR), integer(), list(YR)) -> list(YR). -do_take(List, N, Acc) -> - case N =< 0 of - true -> - reverse(Acc); - - false -> - case List of - [] -> - reverse(Acc); - - [X | Xs] -> - do_take(Xs, N - 1, [X | Acc]) - end - end. - --spec take(list(YV), integer()) -> list(YV). -take(List, N) -> - do_take(List, N, []). - --spec new() -> list(any()). -new() -> - []. - --spec append(list(AAA), list(AAA)) -> list(AAA). -append(First, Second) -> - lists:append(First, Second). - --spec prepend(list(AAI), AAI) -> list(AAI). -prepend(List, Item) -> - [Item | List]. - --spec reverse_and_prepend(list(AAL), list(AAL)) -> list(AAL). -reverse_and_prepend(Prefix, Suffix) -> - case Prefix of - [] -> - Suffix; - - [First | Rest] -> - reverse_and_prepend(Rest, [First | Suffix]) - end. - --spec do_concat(list(list(AAP)), list(AAP)) -> list(AAP). -do_concat(Lists, Acc) -> - case Lists of - [] -> - reverse(Acc); - - [List | Further_lists] -> - do_concat(Further_lists, reverse_and_prepend(List, Acc)) - end. - --spec concat(list(list(AAU))) -> list(AAU). -concat(Lists) -> - do_concat(Lists, []). - --spec flatten(list(list(AAY))) -> list(AAY). -flatten(Lists) -> - do_concat(Lists, []). - --spec flat_map(list(ABC), fun((ABC) -> list(ABE))) -> list(ABE). -flat_map(List, Fun) -> - _pipe = map(List, Fun), - concat(_pipe). - --spec fold(list(ABH), ABJ, fun((ABJ, ABH) -> ABJ)) -> ABJ. -fold(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [X | Rest] -> - fold(Rest, Fun(Initial, X), Fun) - end. - --spec group(list(VJ), fun((VJ) -> VL)) -> gleam@dict:dict(VL, list(VJ)). -group(List, Key) -> - fold(List, gleam@dict:new(), update_group(Key)). - --spec map_fold(list(XH), XJ, fun((XJ, XH) -> {XJ, XK})) -> {XJ, list(XK)}. -map_fold(List, Acc, Fun) -> - _pipe = fold( - List, - {Acc, []}, - fun(Acc@1, Item) -> - {Current_acc, Items} = Acc@1, - {Next_acc, Next_item} = Fun(Current_acc, Item), - {Next_acc, [Next_item | Items]} - end - ), - gleam@pair:map_second(_pipe, fun reverse/1). - --spec fold_right(list(ABK), ABM, fun((ABM, ABK) -> ABM)) -> ABM. -fold_right(List, Initial, Fun) -> - case List of - [] -> - Initial; - - [X | Rest] -> - Fun(fold_right(Rest, Initial, Fun), X) - end. - --spec do_index_fold( - list(ABN), - ABP, - fun((ABP, ABN, integer()) -> ABP), - integer() -) -> ABP. -do_index_fold(Over, Acc, With, Index) -> - case Over of - [] -> - Acc; - - [First | Rest] -> - do_index_fold(Rest, With(Acc, First, Index), With, Index + 1) - end. - --spec index_fold(list(ABQ), ABS, fun((ABS, ABQ, integer()) -> ABS)) -> ABS. -index_fold(Over, Initial, Fun) -> - do_index_fold(Over, Initial, Fun, 0). - --spec try_fold(list(ABT), ABV, fun((ABV, ABT) -> {ok, ABV} | {error, ABW})) -> {ok, - ABV} | - {error, ABW}. -try_fold(Collection, Accumulator, Fun) -> - case Collection of - [] -> - {ok, Accumulator}; - - [First | Rest] -> - case Fun(Accumulator, First) of - {ok, Result} -> - try_fold(Rest, Result, Fun); - - {error, _} = Error -> - Error - end - end. - --spec fold_until(list(ACB), ACD, fun((ACD, ACB) -> continue_or_stop(ACD))) -> ACD. -fold_until(Collection, Accumulator, Fun) -> - case Collection of - [] -> - Accumulator; - - [First | Rest] -> - case Fun(Accumulator, First) of - {continue, Next_accumulator} -> - fold_until(Rest, Next_accumulator, Fun); - - {stop, B} -> - B - end - end. - --spec find(list(ACF), fun((ACF) -> boolean())) -> {ok, ACF} | {error, nil}. -find(Haystack, Is_desired) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Is_desired(X) of - true -> - {ok, X}; - - _ -> - find(Rest, Is_desired) - end - end. - --spec find_map(list(ACJ), fun((ACJ) -> {ok, ACL} | {error, any()})) -> {ok, ACL} | - {error, nil}. -find_map(Haystack, Fun) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Fun(X) of - {ok, X@1} -> - {ok, X@1}; - - _ -> - find_map(Rest, Fun) - end - end. - --spec all(list(ACR), fun((ACR) -> boolean())) -> boolean(). -all(List, Predicate) -> - case List of - [] -> - true; - - [First | Rest] -> - case Predicate(First) of - true -> - all(Rest, Predicate); - - false -> - false - end - end. - --spec any(list(ACT), fun((ACT) -> boolean())) -> boolean(). -any(List, Predicate) -> - case List of - [] -> - false; - - [First | Rest] -> - case Predicate(First) of - true -> - true; - - false -> - any(Rest, Predicate) - end - end. - --spec do_zip(list(ACV), list(ACX), list({ACV, ACX})) -> list({ACV, ACX}). -do_zip(Xs, Ys, Acc) -> - case {Xs, Ys} of - {[X | Xs@1], [Y | Ys@1]} -> - do_zip(Xs@1, Ys@1, [{X, Y} | Acc]); - - {_, _} -> - reverse(Acc) - end. - --spec zip(list(ADB), list(ADD)) -> list({ADB, ADD}). -zip(List, Other) -> - do_zip(List, Other, []). - --spec strict_zip(list(ADG), list(ADI)) -> {ok, list({ADG, ADI})} | - {error, length_mismatch()}. -strict_zip(List, Other) -> - case length(List) =:= length(Other) of - true -> - {ok, zip(List, Other)}; - - false -> - {error, length_mismatch} - end. - --spec do_unzip(list({ATA, ATB}), list(ATA), list(ATB)) -> {list(ATA), list(ATB)}. -do_unzip(Input, Xs, Ys) -> - case Input of - [] -> - {reverse(Xs), reverse(Ys)}; - - [{X, Y} | Rest] -> - do_unzip(Rest, [X | Xs], [Y | Ys]) - end. - --spec unzip(list({ADR, ADS})) -> {list(ADR), list(ADS)}. -unzip(Input) -> - do_unzip(Input, [], []). - --spec do_intersperse(list(ADW), ADW, list(ADW)) -> list(ADW). -do_intersperse(List, Separator, Acc) -> - case List of - [] -> - reverse(Acc); - - [X | Rest] -> - do_intersperse(Rest, Separator, [X, Separator | Acc]) - end. - --spec intersperse(list(AEA), AEA) -> list(AEA). -intersperse(List, Elem) -> - case List of - [] -> - List; - - [_] -> - List; - - [X | Rest] -> - do_intersperse(Rest, Elem, [X]) - end. - --spec at(list(AED), integer()) -> {ok, AED} | {error, nil}. -at(List, Index) -> - case Index >= 0 of - true -> - _pipe = List, - _pipe@1 = drop(_pipe, Index), - first(_pipe@1); - - false -> - {error, nil} - end. - --spec unique(list(AEH)) -> list(AEH). -unique(List) -> - case List of - [] -> - []; - - [X | Rest] -> - [X | unique(filter(Rest, fun(Y) -> Y /= X end))] - end. - --spec merge_up( - integer(), - integer(), - list(AEK), - list(AEK), - list(AEK), - fun((AEK, AEK) -> gleam@order:order()) -) -> list(AEK). -merge_up(Na, Nb, A, B, Acc, Compare) -> - case {Na, Nb, A, B} of - {0, 0, _, _} -> - Acc; - - {_, 0, [Ax | Ar], _} -> - merge_up(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); - - {0, _, _, [Bx | Br]} -> - merge_up(Na, Nb - 1, A, Br, [Bx | Acc], Compare); - - {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> - case Compare(Ax@1, Bx@1) of - gt -> - merge_up(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare); - - _ -> - merge_up(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare) - end; - - {_, _, _, _} -> - Acc - end. - --spec merge_down( - integer(), - integer(), - list(AEP), - list(AEP), - list(AEP), - fun((AEP, AEP) -> gleam@order:order()) -) -> list(AEP). -merge_down(Na, Nb, A, B, Acc, Compare) -> - case {Na, Nb, A, B} of - {0, 0, _, _} -> - Acc; - - {_, 0, [Ax | Ar], _} -> - merge_down(Na - 1, Nb, Ar, B, [Ax | Acc], Compare); - - {0, _, _, [Bx | Br]} -> - merge_down(Na, Nb - 1, A, Br, [Bx | Acc], Compare); - - {_, _, [Ax@1 | Ar@1], [Bx@1 | Br@1]} -> - case Compare(Bx@1, Ax@1) of - lt -> - merge_down(Na - 1, Nb, Ar@1, B, [Ax@1 | Acc], Compare); - - _ -> - merge_down(Na, Nb - 1, A, Br@1, [Bx@1 | Acc], Compare) - end; - - {_, _, _, _} -> - Acc - end. - --spec merge_sort( - list(AEU), - integer(), - fun((AEU, AEU) -> gleam@order:order()), - boolean() -) -> list(AEU). -merge_sort(L, Ln, Compare, Down) -> - N = Ln div 2, - A = L, - B = drop(L, N), - case Ln < 3 of - true -> - case Down of - true -> - merge_down(N, Ln - N, A, B, [], Compare); - - false -> - merge_up(N, Ln - N, A, B, [], Compare) - end; - - false -> - case Down of - true -> - merge_down( - N, - Ln - N, - merge_sort(A, N, Compare, false), - merge_sort(B, Ln - N, Compare, false), - [], - Compare - ); - - false -> - merge_up( - N, - Ln - N, - merge_sort(A, N, Compare, true), - merge_sort(B, Ln - N, Compare, true), - [], - Compare - ) - end - end. - --spec sort(list(AEX), fun((AEX, AEX) -> gleam@order:order())) -> list(AEX). -sort(List, Compare) -> - merge_sort(List, length(List), Compare, true). - --spec tail_recursive_range(integer(), integer(), list(integer())) -> list(integer()). -tail_recursive_range(Start, Stop, Acc) -> - case gleam@int:compare(Start, Stop) of - eq -> - [Stop | Acc]; - - gt -> - tail_recursive_range(Start, Stop + 1, [Stop | Acc]); - - lt -> - tail_recursive_range(Start, Stop - 1, [Stop | Acc]) - end. - --spec range(integer(), integer()) -> list(integer()). -range(Start, Stop) -> - tail_recursive_range(Start, Stop, []). - --spec do_repeat(AFD, integer(), list(AFD)) -> list(AFD). -do_repeat(A, Times, Acc) -> - case Times =< 0 of - true -> - Acc; - - false -> - do_repeat(A, Times - 1, [A | Acc]) - end. - --spec repeat(AFG, integer()) -> list(AFG). -repeat(A, Times) -> - do_repeat(A, Times, []). - --spec do_split(list(AFI), integer(), list(AFI)) -> {list(AFI), list(AFI)}. -do_split(List, N, Taken) -> - case N =< 0 of - true -> - {reverse(Taken), List}; - - false -> - case List of - [] -> - {reverse(Taken), []}; - - [X | Xs] -> - do_split(Xs, N - 1, [X | Taken]) - end - end. - --spec split(list(AFN), integer()) -> {list(AFN), list(AFN)}. -split(List, Index) -> - do_split(List, Index, []). - --spec do_split_while(list(AFR), fun((AFR) -> boolean()), list(AFR)) -> {list(AFR), - list(AFR)}. -do_split_while(List, F, Acc) -> - case List of - [] -> - {reverse(Acc), []}; - - [X | Xs] -> - case F(X) of - false -> - {reverse(Acc), List}; - - _ -> - do_split_while(Xs, F, [X | Acc]) - end - end. - --spec split_while(list(AFW), fun((AFW) -> boolean())) -> {list(AFW), list(AFW)}. -split_while(List, Predicate) -> - do_split_while(List, Predicate, []). - --spec key_find(list({AGA, AGB}), AGA) -> {ok, AGB} | {error, nil}. -key_find(Keyword_list, Desired_key) -> - find_map( - Keyword_list, - fun(Keyword) -> - {Key, Value} = Keyword, - case Key =:= Desired_key of - true -> - {ok, Value}; - - false -> - {error, nil} - end - end - ). - --spec key_filter(list({AGF, AGG}), AGF) -> list(AGG). -key_filter(Keyword_list, Desired_key) -> - filter_map( - Keyword_list, - fun(Keyword) -> - {Key, Value} = Keyword, - case Key =:= Desired_key of - true -> - {ok, Value}; - - false -> - {error, nil} - end - end - ). - --spec do_pop(list(AWT), fun((AWT) -> boolean()), list(AWT)) -> {ok, - {AWT, list(AWT)}} | - {error, nil}. -do_pop(Haystack, Predicate, Checked) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Predicate(X) of - true -> - {ok, {X, append(reverse(Checked), Rest)}}; - - false -> - do_pop(Rest, Predicate, [X | Checked]) - end - end. - --spec pop(list(AGN), fun((AGN) -> boolean())) -> {ok, {AGN, list(AGN)}} | - {error, nil}. -pop(Haystack, Is_desired) -> - do_pop(Haystack, Is_desired, []). - --spec do_pop_map(list(AXH), fun((AXH) -> {ok, AXU} | {error, any()}), list(AXH)) -> {ok, - {AXU, list(AXH)}} | - {error, nil}. -do_pop_map(Haystack, Mapper, Checked) -> - case Haystack of - [] -> - {error, nil}; - - [X | Rest] -> - case Mapper(X) of - {ok, Y} -> - {ok, {Y, append(reverse(Checked), Rest)}}; - - {error, _} -> - do_pop_map(Rest, Mapper, [X | Checked]) - end - end. - --spec pop_map(list(AGW), fun((AGW) -> {ok, AGY} | {error, any()})) -> {ok, - {AGY, list(AGW)}} | - {error, nil}. -pop_map(Haystack, Is_desired) -> - do_pop_map(Haystack, Is_desired, []). - --spec key_pop(list({AHF, AHG}), AHF) -> {ok, {AHG, list({AHF, AHG})}} | - {error, nil}. -key_pop(Haystack, Key) -> - pop_map( - Haystack, - fun(Entry) -> - {K, V} = Entry, - case K of - K@1 when K@1 =:= Key -> - {ok, V}; - - _ -> - {error, nil} - end - end - ). - --spec key_set(list({AHL, AHM}), AHL, AHM) -> list({AHL, AHM}). -key_set(List, Key, Value) -> - case List of - [] -> - [{Key, Value}]; - - [{K, _} | Rest] when K =:= Key -> - [{Key, Value} | Rest]; - - [First | Rest@1] -> - [First | key_set(Rest@1, Key, Value)] - end. - --spec each(list(AHP), fun((AHP) -> any())) -> nil. -each(List, F) -> - case List of - [] -> - nil; - - [X | Xs] -> - F(X), - each(Xs, F) - end. - --spec try_each(list(AHS), fun((AHS) -> {ok, any()} | {error, AHV})) -> {ok, nil} | - {error, AHV}. -try_each(List, Fun) -> - case List of - [] -> - {ok, nil}; - - [X | Xs] -> - case Fun(X) of - {ok, _} -> - try_each(Xs, Fun); - - {error, E} -> - {error, E} - end - end. - --spec do_partition(list(AZB), fun((AZB) -> boolean()), list(AZB), list(AZB)) -> {list(AZB), - list(AZB)}. -do_partition(List, Categorise, Trues, Falses) -> - case List of - [] -> - {reverse(Trues), reverse(Falses)}; - - [X | Xs] -> - case Categorise(X) of - true -> - do_partition(Xs, Categorise, [X | Trues], Falses); - - false -> - do_partition(Xs, Categorise, Trues, [X | Falses]) - end - end. - --spec partition(list(AIF), fun((AIF) -> boolean())) -> {list(AIF), list(AIF)}. -partition(List, Categorise) -> - do_partition(List, Categorise, [], []). - --spec permutations(list(AIJ)) -> list(list(AIJ)). -permutations(L) -> - case L of - [] -> - [[]]; - - _ -> - _pipe = L, - _pipe@5 = index_map(_pipe, fun(I_idx, I) -> _pipe@1 = L, - _pipe@2 = index_fold( - _pipe@1, - [], - fun(Acc, J, J_idx) -> case I_idx =:= J_idx of - true -> - Acc; - - false -> - [J | Acc] - end end - ), - _pipe@3 = reverse(_pipe@2), - _pipe@4 = permutations(_pipe@3), - map(_pipe@4, fun(Permutation) -> [I | Permutation] end) end), - concat(_pipe@5) - end. - --spec do_window(list(list(AIN)), list(AIN), integer()) -> list(list(AIN)). -do_window(Acc, L, N) -> - Window = take(L, N), - case length(Window) =:= N of - true -> - do_window([Window | Acc], drop(L, 1), N); - - false -> - Acc - end. - --spec window(list(AIT), integer()) -> list(list(AIT)). -window(L, N) -> - _pipe = do_window([], L, N), - reverse(_pipe). - --spec window_by_2(list(AIX)) -> list({AIX, AIX}). -window_by_2(L) -> - zip(L, drop(L, 1)). - --spec drop_while(list(AJA), fun((AJA) -> boolean())) -> list(AJA). -drop_while(List, Predicate) -> - case List of - [] -> - []; - - [X | Xs] -> - case Predicate(X) of - true -> - drop_while(Xs, Predicate); - - false -> - [X | Xs] - end - end. - --spec do_take_while(list(AJD), fun((AJD) -> boolean()), list(AJD)) -> list(AJD). -do_take_while(List, Predicate, Acc) -> - case List of - [] -> - reverse(Acc); - - [First | Rest] -> - case Predicate(First) of - true -> - do_take_while(Rest, Predicate, [First | Acc]); - - false -> - reverse(Acc) - end - end. - --spec take_while(list(AJH), fun((AJH) -> boolean())) -> list(AJH). -take_while(List, Predicate) -> - do_take_while(List, Predicate, []). - --spec do_chunk(list(AJK), fun((AJK) -> AJM), AJM, list(AJK), list(list(AJK))) -> list(list(AJK)). -do_chunk(List, F, Previous_key, Current_chunk, Acc) -> - case List of - [First | Rest] -> - Key = F(First), - case Key =:= Previous_key of - false -> - New_acc = [reverse(Current_chunk) | Acc], - do_chunk(Rest, F, Key, [First], New_acc); - - _ -> - do_chunk(Rest, F, Key, [First | Current_chunk], Acc) - end; - - _ -> - reverse([reverse(Current_chunk) | Acc]) - end. - --spec chunk(list(AJS), fun((AJS) -> any())) -> list(list(AJS)). -chunk(List, F) -> - case List of - [] -> - []; - - [First | Rest] -> - do_chunk(Rest, F, F(First), [First], []) - end. - --spec do_sized_chunk( - list(AJX), - integer(), - integer(), - list(AJX), - list(list(AJX)) -) -> list(list(AJX)). -do_sized_chunk(List, Count, Left, Current_chunk, Acc) -> - case List of - [] -> - case Current_chunk of - [] -> - reverse(Acc); - - Remaining -> - reverse([reverse(Remaining) | Acc]) - end; - - [First | Rest] -> - Chunk = [First | Current_chunk], - case Left > 1 of - false -> - do_sized_chunk( - Rest, - Count, - Count, - [], - [reverse(Chunk) | Acc] - ); - - true -> - do_sized_chunk(Rest, Count, Left - 1, Chunk, Acc) - end - end. - --spec sized_chunk(list(AKE), integer()) -> list(list(AKE)). -sized_chunk(List, Count) -> - do_sized_chunk(List, Count, Count, [], []). - --spec reduce(list(AKI), fun((AKI, AKI) -> AKI)) -> {ok, AKI} | {error, nil}. -reduce(List, Fun) -> - case List of - [] -> - {error, nil}; - - [First | Rest] -> - {ok, fold(Rest, First, Fun)} - end. - --spec do_scan(list(AKM), AKO, list(AKO), fun((AKO, AKM) -> AKO)) -> list(AKO). -do_scan(List, Accumulator, Accumulated, Fun) -> - case List of - [] -> - reverse(Accumulated); - - [X | Xs] -> - Next = Fun(Accumulator, X), - do_scan(Xs, Next, [Next | Accumulated], Fun) - end. - --spec scan(list(AKR), AKT, fun((AKT, AKR) -> AKT)) -> list(AKT). -scan(List, Initial, Fun) -> - do_scan(List, Initial, [], Fun). - --spec last(list(AKV)) -> {ok, AKV} | {error, nil}. -last(List) -> - _pipe = List, - reduce(_pipe, fun(_, Elem) -> Elem end). - --spec combinations(list(AKZ), integer()) -> list(list(AKZ)). -combinations(Items, N) -> - case N of - 0 -> - [[]]; - - _ -> - case Items of - [] -> - []; - - [X | Xs] -> - First_combinations = begin - _pipe = map( - combinations(Xs, N - 1), - fun(Com) -> [X | Com] end - ), - reverse(_pipe) - end, - fold( - First_combinations, - combinations(Xs, N), - fun(Acc, C) -> [C | Acc] end - ) - end - end. - --spec do_combination_pairs(list(ALD)) -> list(list({ALD, ALD})). -do_combination_pairs(Items) -> - case Items of - [] -> - []; - - [X | Xs] -> - First_combinations = map(Xs, fun(Other) -> {X, Other} end), - [First_combinations | do_combination_pairs(Xs)] - end. - --spec combination_pairs(list(ALH)) -> list({ALH, ALH}). -combination_pairs(Items) -> - _pipe = do_combination_pairs(Items), - concat(_pipe). - --spec transpose(list(list(ALO))) -> list(list(ALO)). -transpose(List_of_list) -> - Take_first = fun(List) -> case List of - [] -> - []; - - [F] -> - [F]; - - [F@1 | _] -> - [F@1] - end end, - case List_of_list of - [] -> - []; - - [[] | Xss] -> - transpose(Xss); - - Rows -> - Firsts = begin - _pipe = Rows, - _pipe@1 = map(_pipe, Take_first), - concat(_pipe@1) - end, - Rest = transpose(map(Rows, fun(_capture) -> drop(_capture, 1) end)), - [Firsts | Rest] - end. - --spec interleave(list(list(ALK))) -> list(ALK). -interleave(List) -> - _pipe = transpose(List), - concat(_pipe). - --spec do_shuffle_pair_unwrap(list({float(), ALT}), list(ALT)) -> list(ALT). -do_shuffle_pair_unwrap(List, Acc) -> - case List of - [] -> - Acc; - - [Elem_pair | Enumerable] -> - do_shuffle_pair_unwrap( - Enumerable, - [erlang:element(2, Elem_pair) | Acc] - ) - end. - --spec do_shuffle_by_pair_indexes(list({float(), ALX})) -> list({float(), ALX}). -do_shuffle_by_pair_indexes(List_of_pairs) -> - sort( - List_of_pairs, - fun(A_pair, B_pair) -> - gleam@float:compare( - erlang:element(1, A_pair), - erlang:element(1, B_pair) - ) - end - ). - --spec shuffle(list(AMA)) -> list(AMA). -shuffle(List) -> - _pipe = List, - _pipe@1 = fold( - _pipe, - [], - fun(Acc, A) -> [{gleam@float:random(+0.0, 1.0), A} | Acc] end - ), - _pipe@2 = do_shuffle_by_pair_indexes(_pipe@1), - do_shuffle_pair_unwrap(_pipe@2, []). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl deleted file mode 100644 index 33e89a9..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@map.erl +++ /dev/null @@ -1,76 +0,0 @@ --module(gleam@map). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([size/1, to_list/1, from_list/1, has_key/2, new/0, get/2, insert/3, map_values/2, keys/1, values/1, filter/2, take/2, merge/2, delete/2, drop/2, update/3, fold/3]). - --spec size(gleam@dict:dict(any(), any())) -> integer(). -size(Map) -> - gleam@dict:size(Map). - --spec to_list(gleam@dict:dict(DAJ, DAK)) -> list({DAJ, DAK}). -to_list(Map) -> - gleam@dict:to_list(Map). - --spec from_list(list({DAM, DAN})) -> gleam@dict:dict(DAM, DAN). -from_list(List) -> - gleam@dict:from_list(List). - --spec has_key(gleam@dict:dict(DAR, any()), DAR) -> boolean(). -has_key(Map, Key) -> - gleam@dict:has_key(Map, Key). - --spec new() -> gleam@dict:dict(any(), any()). -new() -> - gleam@dict:new(). - --spec get(gleam@dict:dict(DAU, DAV), DAU) -> {ok, DAV} | {error, nil}. -get(From, Get) -> - gleam@dict:get(From, Get). - --spec insert(gleam@dict:dict(DAZ, DBA), DAZ, DBA) -> gleam@dict:dict(DAZ, DBA). -insert(Map, Key, Value) -> - gleam@dict:insert(Map, Key, Value). - --spec map_values(gleam@dict:dict(DBD, DBE), fun((DBD, DBE) -> DBF)) -> gleam@dict:dict(DBD, DBF). -map_values(Map, Fun) -> - gleam@dict:map_values(Map, Fun). - --spec keys(gleam@dict:dict(DBI, any())) -> list(DBI). -keys(Map) -> - gleam@dict:keys(Map). - --spec values(gleam@dict:dict(any(), DBL)) -> list(DBL). -values(Map) -> - gleam@dict:values(Map). - --spec filter(gleam@dict:dict(DBO, DBP), fun((DBO, DBP) -> boolean())) -> gleam@dict:dict(DBO, DBP). -filter(Map, Predicate) -> - gleam@dict:filter(Map, Predicate). - --spec take(gleam@dict:dict(DBS, DDM), list(DBS)) -> gleam@dict:dict(DBS, DDM). -take(Map, Desired_keys) -> - gleam@dict:take(Map, Desired_keys). - --spec merge(gleam@dict:dict(DDN, DDO), gleam@dict:dict(DDN, DDO)) -> gleam@dict:dict(DDN, DDO). -merge(Map, New_entries) -> - gleam@dict:merge(Map, New_entries). - --spec delete(gleam@dict:dict(DBZ, DDQ), DBZ) -> gleam@dict:dict(DBZ, DDQ). -delete(Map, Key) -> - gleam@dict:delete(Map, Key). - --spec drop(gleam@dict:dict(DCC, DDS), list(DCC)) -> gleam@dict:dict(DCC, DDS). -drop(Map, Disallowed_keys) -> - gleam@dict:drop(Map, Disallowed_keys). - --spec update( - gleam@dict:dict(DCG, DCH), - DCG, - fun((gleam@option:option(DCH)) -> DCH) -) -> gleam@dict:dict(DCG, DCH). -update(Map, Key, Fun) -> - gleam@dict:update(Map, Key, Fun). - --spec fold(gleam@dict:dict(DCM, DCN), DCL, fun((DCL, DCM, DCN) -> DCL)) -> DCL. -fold(Map, Initial, Fun) -> - gleam@dict:fold(Map, Initial, Fun). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl deleted file mode 100644 index 5c20713..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@option.erl +++ /dev/null @@ -1,147 +0,0 @@ --module(gleam@option). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([all/1, is_some/1, is_none/1, to_result/2, from_result/1, unwrap/2, lazy_unwrap/2, map/2, flatten/1, then/2, 'or'/2, lazy_or/2, values/1]). --export_type([option/1]). - --type option(GB) :: {some, GB} | none. - --spec do_all(list(option(GC)), list(GC)) -> option(list(GC)). -do_all(List, Acc) -> - case List of - [] -> - {some, Acc}; - - [X | Rest] -> - Accumulate = fun(Acc@1, Item) -> case {Acc@1, Item} of - {{some, Values}, {some, Value}} -> - {some, [Value | Values]}; - - {_, _} -> - none - end end, - Accumulate(do_all(Rest, Acc), X) - end. - --spec all(list(option(GI))) -> option(list(GI)). -all(List) -> - do_all(List, []). - --spec is_some(option(any())) -> boolean(). -is_some(Option) -> - Option /= none. - --spec is_none(option(any())) -> boolean(). -is_none(Option) -> - Option =:= none. - --spec to_result(option(GR), GU) -> {ok, GR} | {error, GU}. -to_result(Option, E) -> - case Option of - {some, A} -> - {ok, A}; - - _ -> - {error, E} - end. - --spec from_result({ok, GX} | {error, any()}) -> option(GX). -from_result(Result) -> - case Result of - {ok, A} -> - {some, A}; - - _ -> - none - end. - --spec unwrap(option(HC), HC) -> HC. -unwrap(Option, Default) -> - case Option of - {some, X} -> - X; - - none -> - Default - end. - --spec lazy_unwrap(option(HE), fun(() -> HE)) -> HE. -lazy_unwrap(Option, Default) -> - case Option of - {some, X} -> - X; - - none -> - Default() - end. - --spec map(option(HG), fun((HG) -> HI)) -> option(HI). -map(Option, Fun) -> - case Option of - {some, X} -> - {some, Fun(X)}; - - none -> - none - end. - --spec flatten(option(option(HK))) -> option(HK). -flatten(Option) -> - case Option of - {some, X} -> - X; - - none -> - none - end. - --spec then(option(HO), fun((HO) -> option(HQ))) -> option(HQ). -then(Option, Fun) -> - case Option of - {some, X} -> - Fun(X); - - none -> - none - end. - --spec 'or'(option(HT), option(HT)) -> option(HT). -'or'(First, Second) -> - case First of - {some, _} -> - First; - - none -> - Second - end. - --spec lazy_or(option(HX), fun(() -> option(HX))) -> option(HX). -lazy_or(First, Second) -> - case First of - {some, _} -> - First; - - none -> - Second() - end. - --spec do_values(list(option(IB)), list(IB)) -> list(IB). -do_values(List, Acc) -> - case List of - [] -> - Acc; - - [X | Xs] -> - Accumulate = fun(Acc@1, Item) -> case Item of - {some, Value} -> - [Value | Acc@1]; - - none -> - Acc@1 - end end, - Accumulate(do_values(Xs, Acc), X) - end. - --spec values(list(option(IG))) -> list(IG). -values(Options) -> - do_values(Options, []). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl deleted file mode 100644 index 61649b9..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@order.erl +++ /dev/null @@ -1,79 +0,0 @@ --module(gleam@order). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([negate/1, to_int/1, compare/2, max/2, min/2, reverse/1]). --export_type([order/0]). - --type order() :: lt | eq | gt. - --spec negate(order()) -> order(). -negate(Order) -> - case Order of - lt -> - gt; - - eq -> - eq; - - gt -> - lt - end. - --spec to_int(order()) -> integer(). -to_int(Order) -> - case Order of - lt -> - -1; - - eq -> - 0; - - gt -> - 1 - end. - --spec compare(order(), order()) -> order(). -compare(A, B) -> - case {A, B} of - {X, Y} when X =:= Y -> - eq; - - {lt, _} -> - lt; - - {eq, gt} -> - lt; - - {_, _} -> - gt - end. - --spec max(order(), order()) -> order(). -max(A, B) -> - case {A, B} of - {gt, _} -> - gt; - - {eq, lt} -> - eq; - - {_, _} -> - B - end. - --spec min(order(), order()) -> order(). -min(A, B) -> - case {A, B} of - {lt, _} -> - lt; - - {eq, gt} -> - eq; - - {_, _} -> - B - end. - --spec reverse(fun((I, I) -> order())) -> fun((I, I) -> order()). -reverse(Orderer) -> - fun(A, B) -> Orderer(B, A) end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl deleted file mode 100644 index f4eff52..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@pair.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@pair). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([first/1, second/1, swap/1, map_first/2, map_second/2, new/2]). - --spec first({FM, any()}) -> FM. -first(Pair) -> - {A, _} = Pair, - A. - --spec second({any(), FP}) -> FP. -second(Pair) -> - {_, A} = Pair, - A. - --spec swap({FQ, FR}) -> {FR, FQ}. -swap(Pair) -> - {A, B} = Pair, - {B, A}. - --spec map_first({FS, FT}, fun((FS) -> FU)) -> {FU, FT}. -map_first(Pair, Fun) -> - {A, B} = Pair, - {Fun(A), B}. - --spec map_second({FV, FW}, fun((FW) -> FX)) -> {FV, FX}. -map_second(Pair, Fun) -> - {A, B} = Pair, - {A, Fun(B)}. - --spec new(FY, FZ) -> {FY, FZ}. -new(First, Second) -> - {First, Second}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl deleted file mode 100644 index 6b587e7..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@queue.erl +++ /dev/null @@ -1,121 +0,0 @@ --module(gleam@queue). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, from_list/1, to_list/1, is_empty/1, length/1, push_back/2, push_front/2, pop_back/1, pop_front/1, reverse/1, is_logically_equal/3, is_equal/2]). --export_type([queue/1]). - --opaque queue(DRL) :: {queue, list(DRL), list(DRL)}. - --spec new() -> queue(any()). -new() -> - {queue, [], []}. - --spec from_list(list(DRO)) -> queue(DRO). -from_list(List) -> - {queue, [], List}. - --spec to_list(queue(DRR)) -> list(DRR). -to_list(Queue) -> - _pipe = erlang:element(3, Queue), - gleam@list:append(_pipe, gleam@list:reverse(erlang:element(2, Queue))). - --spec is_empty(queue(any())) -> boolean(). -is_empty(Queue) -> - (erlang:element(2, Queue) =:= []) andalso (erlang:element(3, Queue) =:= []). - --spec length(queue(any())) -> integer(). -length(Queue) -> - gleam@list:length(erlang:element(2, Queue)) + gleam@list:length( - erlang:element(3, Queue) - ). - --spec push_back(queue(DRY), DRY) -> queue(DRY). -push_back(Queue, Item) -> - {queue, [Item | erlang:element(2, Queue)], erlang:element(3, Queue)}. - --spec push_front(queue(DSB), DSB) -> queue(DSB). -push_front(Queue, Item) -> - {queue, erlang:element(2, Queue), [Item | erlang:element(3, Queue)]}. - --spec pop_back(queue(DSE)) -> {ok, {DSE, queue(DSE)}} | {error, nil}. -pop_back(Queue) -> - case Queue of - {queue, [], []} -> - {error, nil}; - - {queue, [], Out} -> - pop_back({queue, gleam@list:reverse(Out), []}); - - {queue, [First | Rest], Out@1} -> - Queue@1 = {queue, Rest, Out@1}, - {ok, {First, Queue@1}} - end. - --spec pop_front(queue(DSJ)) -> {ok, {DSJ, queue(DSJ)}} | {error, nil}. -pop_front(Queue) -> - case Queue of - {queue, [], []} -> - {error, nil}; - - {queue, In, []} -> - pop_front({queue, [], gleam@list:reverse(In)}); - - {queue, In@1, [First | Rest]} -> - Queue@1 = {queue, In@1, Rest}, - {ok, {First, Queue@1}} - end. - --spec reverse(queue(DSO)) -> queue(DSO). -reverse(Queue) -> - {queue, erlang:element(3, Queue), erlang:element(2, Queue)}. - --spec check_equal( - list(DSR), - list(DSR), - list(DSR), - list(DSR), - fun((DSR, DSR) -> boolean()) -) -> boolean(). -check_equal(Xs, X_tail, Ys, Y_tail, Eq) -> - case {Xs, X_tail, Ys, Y_tail} of - {[], [], [], []} -> - true; - - {[X | Xs@1], _, [Y | Ys@1], _} -> - case Eq(X, Y) of - false -> - false; - - true -> - check_equal(Xs@1, X_tail, Ys@1, Y_tail, Eq) - end; - - {[], [_ | _], _, _} -> - check_equal(gleam@list:reverse(X_tail), [], Ys, Y_tail, Eq); - - {_, _, [], [_ | _]} -> - check_equal(Xs, X_tail, gleam@list:reverse(Y_tail), [], Eq); - - {_, _, _, _} -> - false - end. - --spec is_logically_equal(queue(DSW), queue(DSW), fun((DSW, DSW) -> boolean())) -> boolean(). -is_logically_equal(A, B, Element_is_equal) -> - check_equal( - erlang:element(3, A), - erlang:element(2, A), - erlang:element(3, B), - erlang:element(2, B), - Element_is_equal - ). - --spec is_equal(queue(DSZ), queue(DSZ)) -> boolean(). -is_equal(A, B) -> - check_equal( - erlang:element(3, A), - erlang:element(2, A), - erlang:element(3, B), - erlang:element(2, B), - fun(A@1, B@1) -> A@1 =:= B@1 end - ). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl deleted file mode 100644 index 2d1c5fc..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@regex.erl +++ /dev/null @@ -1,33 +0,0 @@ --module(gleam@regex). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([compile/2, from_string/1, check/2, split/2, scan/2]). --export_type([regex/0, match/0, compile_error/0, options/0]). - --type regex() :: any(). - --type match() :: {match, binary(), list(gleam@option:option(binary()))}. - --type compile_error() :: {compile_error, binary(), integer()}. - --type options() :: {options, boolean(), boolean()}. - --spec compile(binary(), options()) -> {ok, regex()} | {error, compile_error()}. -compile(Pattern, Options) -> - gleam_stdlib:compile_regex(Pattern, Options). - --spec from_string(binary()) -> {ok, regex()} | {error, compile_error()}. -from_string(Pattern) -> - compile(Pattern, {options, false, false}). - --spec check(regex(), binary()) -> boolean(). -check(Regex, Content) -> - gleam_stdlib:regex_check(Regex, Content). - --spec split(regex(), binary()) -> list(binary()). -split(Regex, String) -> - gleam_stdlib:regex_split(Regex, String). - --spec scan(regex(), binary()) -> list(match()). -scan(Regex, String) -> - gleam_stdlib:regex_scan(Regex, String). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl deleted file mode 100644 index 7324e45..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@result.erl +++ /dev/null @@ -1,201 +0,0 @@ --module(gleam@result). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_ok/1, is_error/1, map/2, map_error/2, flatten/1, 'try'/2, then/2, unwrap/2, lazy_unwrap/2, unwrap_error/2, unwrap_both/1, nil_error/1, 'or'/2, lazy_or/2, all/1, partition/1, replace/2, replace_error/2, values/1, try_recover/2]). - --spec is_ok({ok, any()} | {error, any()}) -> boolean(). -is_ok(Result) -> - case Result of - {error, _} -> - false; - - {ok, _} -> - true - end. - --spec is_error({ok, any()} | {error, any()}) -> boolean(). -is_error(Result) -> - case Result of - {ok, _} -> - false; - - {error, _} -> - true - end. - --spec map({ok, BFM} | {error, BFN}, fun((BFM) -> BFQ)) -> {ok, BFQ} | - {error, BFN}. -map(Result, Fun) -> - case Result of - {ok, X} -> - {ok, Fun(X)}; - - {error, E} -> - {error, E} - end. - --spec map_error({ok, BFT} | {error, BFU}, fun((BFU) -> BFX)) -> {ok, BFT} | - {error, BFX}. -map_error(Result, Fun) -> - case Result of - {ok, X} -> - {ok, X}; - - {error, Error} -> - {error, Fun(Error)} - end. - --spec flatten({ok, {ok, BGA} | {error, BGB}} | {error, BGB}) -> {ok, BGA} | - {error, BGB}. -flatten(Result) -> - case Result of - {ok, X} -> - X; - - {error, Error} -> - {error, Error} - end. - --spec 'try'({ok, BGI} | {error, BGJ}, fun((BGI) -> {ok, BGM} | {error, BGJ})) -> {ok, - BGM} | - {error, BGJ}. -'try'(Result, Fun) -> - case Result of - {ok, X} -> - Fun(X); - - {error, E} -> - {error, E} - end. - --spec then({ok, BGR} | {error, BGS}, fun((BGR) -> {ok, BGV} | {error, BGS})) -> {ok, - BGV} | - {error, BGS}. -then(Result, Fun) -> - 'try'(Result, Fun). - --spec unwrap({ok, BHA} | {error, any()}, BHA) -> BHA. -unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default - end. - --spec lazy_unwrap({ok, BHE} | {error, any()}, fun(() -> BHE)) -> BHE. -lazy_unwrap(Result, Default) -> - case Result of - {ok, V} -> - V; - - {error, _} -> - Default() - end. - --spec unwrap_error({ok, any()} | {error, BHJ}, BHJ) -> BHJ. -unwrap_error(Result, Default) -> - case Result of - {ok, _} -> - Default; - - {error, E} -> - E - end. - --spec unwrap_both({ok, BHM} | {error, BHM}) -> BHM. -unwrap_both(Result) -> - case Result of - {ok, A} -> - A; - - {error, A@1} -> - A@1 - end. - --spec nil_error({ok, BHP} | {error, any()}) -> {ok, BHP} | {error, nil}. -nil_error(Result) -> - map_error(Result, fun(_) -> nil end). - --spec 'or'({ok, BHV} | {error, BHW}, {ok, BHV} | {error, BHW}) -> {ok, BHV} | - {error, BHW}. -'or'(First, Second) -> - case First of - {ok, _} -> - First; - - {error, _} -> - Second - end. - --spec lazy_or({ok, BID} | {error, BIE}, fun(() -> {ok, BID} | {error, BIE})) -> {ok, - BID} | - {error, BIE}. -lazy_or(First, Second) -> - case First of - {ok, _} -> - First; - - {error, _} -> - Second() - end. - --spec all(list({ok, BIL} | {error, BIM})) -> {ok, list(BIL)} | {error, BIM}. -all(Results) -> - gleam@list:try_map(Results, fun(X) -> X end). - --spec do_partition(list({ok, BJA} | {error, BJB}), list(BJA), list(BJB)) -> {list(BJA), - list(BJB)}. -do_partition(Results, Oks, Errors) -> - case Results of - [] -> - {Oks, Errors}; - - [{ok, A} | Rest] -> - do_partition(Rest, [A | Oks], Errors); - - [{error, E} | Rest@1] -> - do_partition(Rest@1, Oks, [E | Errors]) - end. - --spec partition(list({ok, BIT} | {error, BIU})) -> {list(BIT), list(BIU)}. -partition(Results) -> - do_partition(Results, [], []). - --spec replace({ok, any()} | {error, BJJ}, BJM) -> {ok, BJM} | {error, BJJ}. -replace(Result, Value) -> - case Result of - {ok, _} -> - {ok, Value}; - - {error, Error} -> - {error, Error} - end. - --spec replace_error({ok, BJP} | {error, any()}, BJT) -> {ok, BJP} | {error, BJT}. -replace_error(Result, Error) -> - case Result of - {ok, X} -> - {ok, X}; - - {error, _} -> - {error, Error} - end. - --spec values(list({ok, BJW} | {error, any()})) -> list(BJW). -values(Results) -> - gleam@list:filter_map(Results, fun(R) -> R end). - --spec try_recover( - {ok, BKC} | {error, BKD}, - fun((BKD) -> {ok, BKC} | {error, BKG}) -) -> {ok, BKC} | {error, BKG}. -try_recover(Result, Fun) -> - case Result of - {ok, Value} -> - {ok, Value}; - - {error, Error} -> - Fun(Error) - end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl deleted file mode 100644 index df87b13..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@set.erl +++ /dev/null @@ -1,85 +0,0 @@ --module(gleam@set). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([new/0, size/1, insert/2, contains/2, delete/2, to_list/1, from_list/1, fold/3, filter/2, drop/2, take/2, union/2, intersection/2]). --export_type([set/1]). - --opaque set(DJZ) :: {set, gleam@dict:dict(DJZ, list(nil))}. - --spec new() -> set(any()). -new() -> - {set, gleam@dict:new()}. - --spec size(set(any())) -> integer(). -size(Set) -> - gleam@dict:size(erlang:element(2, Set)). - --spec insert(set(DKF), DKF) -> set(DKF). -insert(Set, Member) -> - {set, gleam@dict:insert(erlang:element(2, Set), Member, [])}. - --spec contains(set(DKI), DKI) -> boolean(). -contains(Set, Member) -> - _pipe = erlang:element(2, Set), - _pipe@1 = gleam@dict:get(_pipe, Member), - gleam@result:is_ok(_pipe@1). - --spec delete(set(DKK), DKK) -> set(DKK). -delete(Set, Member) -> - {set, gleam@dict:delete(erlang:element(2, Set), Member)}. - --spec to_list(set(DKN)) -> list(DKN). -to_list(Set) -> - gleam@dict:keys(erlang:element(2, Set)). - --spec from_list(list(DKQ)) -> set(DKQ). -from_list(Members) -> - Map = gleam@list:fold( - Members, - gleam@dict:new(), - fun(M, K) -> gleam@dict:insert(M, K, []) end - ), - {set, Map}. - --spec fold(set(DKT), DKV, fun((DKV, DKT) -> DKV)) -> DKV. -fold(Set, Initial, Reducer) -> - gleam@dict:fold( - erlang:element(2, Set), - Initial, - fun(A, K, _) -> Reducer(A, K) end - ). - --spec filter(set(DKW), fun((DKW) -> boolean())) -> set(DKW). -filter(Set, Predicate) -> - {set, - gleam@dict:filter(erlang:element(2, Set), fun(M, _) -> Predicate(M) end)}. - --spec drop(set(DKZ), list(DKZ)) -> set(DKZ). -drop(Set, Disallowed) -> - gleam@list:fold(Disallowed, Set, fun delete/2). - --spec take(set(DLD), list(DLD)) -> set(DLD). -take(Set, Desired) -> - {set, gleam@dict:take(erlang:element(2, Set), Desired)}. - --spec order(set(DLH), set(DLH)) -> {set(DLH), set(DLH)}. -order(First, Second) -> - case gleam@dict:size(erlang:element(2, First)) > gleam@dict:size( - erlang:element(2, Second) - ) of - true -> - {First, Second}; - - false -> - {Second, First} - end. - --spec union(set(DLM), set(DLM)) -> set(DLM). -union(First, Second) -> - {Larger, Smaller} = order(First, Second), - fold(Smaller, Larger, fun insert/2). - --spec intersection(set(DLQ), set(DLQ)) -> set(DLQ). -intersection(First, Second) -> - {Larger, Smaller} = order(First, Second), - take(Larger, to_list(Smaller)). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl deleted file mode 100644 index 6cba31d..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@string.erl +++ /dev/null @@ -1,352 +0,0 @@ --module(gleam@string). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([is_empty/1, length/1, reverse/1, replace/3, lowercase/1, uppercase/1, compare/2, slice/3, crop/2, drop_left/2, drop_right/2, contains/2, starts_with/2, ends_with/2, split_once/2, append/2, concat/1, repeat/2, join/2, pad_left/3, pad_right/3, trim/1, trim_left/1, trim_right/1, pop_grapheme/1, to_graphemes/1, split/2, to_utf_codepoints/1, from_utf_codepoints/1, utf_codepoint/1, utf_codepoint_to_int/1, to_option/1, first/1, last/1, capitalise/1, inspect/1, byte_size/1]). --export_type([direction/0]). - --type direction() :: leading | trailing | both. - --spec is_empty(binary()) -> boolean(). -is_empty(Str) -> - Str =:= <<""/utf8>>. - --spec length(binary()) -> integer(). -length(String) -> - string:length(String). - --spec do_reverse(binary()) -> binary(). -do_reverse(String) -> - _pipe = String, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:reverse(_pipe@1), - gleam@string_builder:to_string(_pipe@2). - --spec reverse(binary()) -> binary(). -reverse(String) -> - do_reverse(String). - --spec replace(binary(), binary(), binary()) -> binary(). -replace(String, Pattern, Substitute) -> - _pipe = String, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:replace(_pipe@1, Pattern, Substitute), - gleam@string_builder:to_string(_pipe@2). - --spec lowercase(binary()) -> binary(). -lowercase(String) -> - string:lowercase(String). - --spec uppercase(binary()) -> binary(). -uppercase(String) -> - string:uppercase(String). - --spec compare(binary(), binary()) -> gleam@order:order(). -compare(A, B) -> - case A =:= B of - true -> - eq; - - _ -> - case gleam_stdlib:less_than(A, B) of - true -> - lt; - - _ -> - gt - end - end. - --spec slice(binary(), integer(), integer()) -> binary(). -slice(String, Idx, Len) -> - case Len < 0 of - true -> - <<""/utf8>>; - - false -> - case Idx < 0 of - true -> - Translated_idx = length(String) + Idx, - case Translated_idx < 0 of - true -> - <<""/utf8>>; - - false -> - string:slice(String, Translated_idx, Len) - end; - - false -> - string:slice(String, Idx, Len) - end - end. - --spec crop(binary(), binary()) -> binary(). -crop(String, Substring) -> - gleam_stdlib:crop_string(String, Substring). - --spec drop_left(binary(), integer()) -> binary(). -drop_left(String, Num_graphemes) -> - case Num_graphemes < 0 of - true -> - String; - - false -> - slice(String, Num_graphemes, length(String) - Num_graphemes) - end. - --spec drop_right(binary(), integer()) -> binary(). -drop_right(String, Num_graphemes) -> - case Num_graphemes < 0 of - true -> - String; - - false -> - slice(String, 0, length(String) - Num_graphemes) - end. - --spec contains(binary(), binary()) -> boolean(). -contains(Haystack, Needle) -> - gleam_stdlib:contains_string(Haystack, Needle). - --spec starts_with(binary(), binary()) -> boolean(). -starts_with(String, Prefix) -> - gleam_stdlib:string_starts_with(String, Prefix). - --spec ends_with(binary(), binary()) -> boolean(). -ends_with(String, Suffix) -> - gleam_stdlib:string_ends_with(String, Suffix). - --spec do_split_once(binary(), binary()) -> {ok, {binary(), binary()}} | - {error, nil}. -do_split_once(X, Substring) -> - case string:split(X, Substring) of - [First, Rest] -> - {ok, {First, Rest}}; - - _ -> - {error, nil} - end. - --spec split_once(binary(), binary()) -> {ok, {binary(), binary()}} | - {error, nil}. -split_once(X, Substring) -> - do_split_once(X, Substring). - --spec append(binary(), binary()) -> binary(). -append(First, Second) -> - _pipe = First, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:append(_pipe@1, Second), - gleam@string_builder:to_string(_pipe@2). - --spec concat(list(binary())) -> binary(). -concat(Strings) -> - _pipe = Strings, - _pipe@1 = gleam@string_builder:from_strings(_pipe), - gleam@string_builder:to_string(_pipe@1). - --spec repeat(binary(), integer()) -> binary(). -repeat(String, Times) -> - _pipe = gleam@iterator:repeat(String), - _pipe@1 = gleam@iterator:take(_pipe, Times), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec do_join(list(binary()), binary()) -> binary(). -do_join(Strings, Separator) -> - _pipe = Strings, - _pipe@1 = gleam@list:intersperse(_pipe, Separator), - concat(_pipe@1). - --spec join(list(binary()), binary()) -> binary(). -join(Strings, Separator) -> - do_join(Strings, Separator). - --spec padding(integer(), binary()) -> gleam@iterator:iterator(binary()). -padding(Size, Pad_string) -> - Pad_length = length(Pad_string), - Num_pads = case Pad_length of - 0 -> 0; - Gleam@denominator -> Size div Gleam@denominator - end, - Extra = case Pad_length of - 0 -> 0; - Gleam@denominator@1 -> Size rem Gleam@denominator@1 - end, - _pipe = gleam@iterator:repeat(Pad_string), - _pipe@1 = gleam@iterator:take(_pipe, Num_pads), - gleam@iterator:append( - _pipe@1, - gleam@iterator:single(slice(Pad_string, 0, Extra)) - ). - --spec pad_left(binary(), integer(), binary()) -> binary(). -pad_left(String, Desired_length, Pad_string) -> - Current_length = length(String), - To_pad_length = Desired_length - Current_length, - _pipe = padding(To_pad_length, Pad_string), - _pipe@1 = gleam@iterator:append(_pipe, gleam@iterator:single(String)), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec pad_right(binary(), integer(), binary()) -> binary(). -pad_right(String, Desired_length, Pad_string) -> - Current_length = length(String), - To_pad_length = Desired_length - Current_length, - _pipe = gleam@iterator:single(String), - _pipe@1 = gleam@iterator:append(_pipe, padding(To_pad_length, Pad_string)), - _pipe@2 = gleam@iterator:to_list(_pipe@1), - concat(_pipe@2). - --spec do_trim(binary()) -> binary(). -do_trim(String) -> - string:trim(String, both). - --spec trim(binary()) -> binary(). -trim(String) -> - do_trim(String). - --spec do_trim_left(binary()) -> binary(). -do_trim_left(String) -> - string:trim(String, leading). - --spec trim_left(binary()) -> binary(). -trim_left(String) -> - do_trim_left(String). - --spec do_trim_right(binary()) -> binary(). -do_trim_right(String) -> - string:trim(String, trailing). - --spec trim_right(binary()) -> binary(). -trim_right(String) -> - do_trim_right(String). - --spec pop_grapheme(binary()) -> {ok, {binary(), binary()}} | {error, nil}. -pop_grapheme(String) -> - gleam_stdlib:string_pop_grapheme(String). - --spec do_to_graphemes(binary(), list(binary())) -> list(binary()). -do_to_graphemes(String, Acc) -> - case pop_grapheme(String) of - {ok, {Grapheme, Rest}} -> - do_to_graphemes(Rest, [Grapheme | Acc]); - - _ -> - Acc - end. - --spec to_graphemes(binary()) -> list(binary()). -to_graphemes(String) -> - _pipe = do_to_graphemes(String, []), - gleam@list:reverse(_pipe). - --spec split(binary(), binary()) -> list(binary()). -split(X, Substring) -> - case Substring of - <<""/utf8>> -> - to_graphemes(X); - - _ -> - _pipe = X, - _pipe@1 = gleam@string_builder:from_string(_pipe), - _pipe@2 = gleam@string_builder:split(_pipe@1, Substring), - gleam@list:map(_pipe@2, fun gleam@string_builder:to_string/1) - end. - --spec do_to_utf_codepoints_impl(bitstring(), list(integer())) -> list(integer()). -do_to_utf_codepoints_impl(Bit_array, Acc) -> - case Bit_array of - <> -> - do_to_utf_codepoints_impl(Rest, [First | Acc]); - - _ -> - Acc - end. - --spec do_to_utf_codepoints(binary()) -> list(integer()). -do_to_utf_codepoints(String) -> - _pipe = do_to_utf_codepoints_impl(<>, []), - gleam@list:reverse(_pipe). - --spec to_utf_codepoints(binary()) -> list(integer()). -to_utf_codepoints(String) -> - do_to_utf_codepoints(String). - --spec from_utf_codepoints(list(integer())) -> binary(). -from_utf_codepoints(Utf_codepoints) -> - gleam_stdlib:utf_codepoint_list_to_string(Utf_codepoints). - --spec utf_codepoint(integer()) -> {ok, integer()} | {error, nil}. -utf_codepoint(Value) -> - case Value of - I when I > 1114111 -> - {error, nil}; - - 65534 -> - {error, nil}; - - 65535 -> - {error, nil}; - - I@1 when (I@1 >= 55296) andalso (I@1 =< 57343) -> - {error, nil}; - - I@2 -> - {ok, gleam_stdlib:identity(I@2)} - end. - --spec utf_codepoint_to_int(integer()) -> integer(). -utf_codepoint_to_int(Cp) -> - gleam_stdlib:identity(Cp). - --spec to_option(binary()) -> gleam@option:option(binary()). -to_option(S) -> - case S of - <<""/utf8>> -> - none; - - _ -> - {some, S} - end. - --spec first(binary()) -> {ok, binary()} | {error, nil}. -first(S) -> - case pop_grapheme(S) of - {ok, {First, _}} -> - {ok, First}; - - {error, E} -> - {error, E} - end. - --spec last(binary()) -> {ok, binary()} | {error, nil}. -last(S) -> - case pop_grapheme(S) of - {ok, {First, <<""/utf8>>}} -> - {ok, First}; - - {ok, {_, Rest}} -> - {ok, slice(Rest, -1, 1)}; - - {error, E} -> - {error, E} - end. - --spec capitalise(binary()) -> binary(). -capitalise(S) -> - case pop_grapheme(S) of - {ok, {First, Rest}} -> - append(uppercase(First), lowercase(Rest)); - - _ -> - <<""/utf8>> - end. - --spec inspect(any()) -> binary(). -inspect(Term) -> - _pipe = gleam_stdlib:inspect(Term), - gleam@string_builder:to_string(_pipe). - --spec byte_size(binary()) -> integer(). -byte_size(String) -> - erlang:byte_size(String). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl deleted file mode 100644 index 693e840..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@string_builder.erl +++ /dev/null @@ -1,91 +0,0 @@ --module(gleam@string_builder). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([prepend_builder/2, append_builder/2, new/0, from_strings/1, concat/1, from_string/1, prepend/2, append/2, to_string/1, byte_size/1, join/2, lowercase/1, uppercase/1, reverse/1, split/2, replace/3, is_equal/2, is_empty/1]). --export_type([string_builder/0, direction/0]). - --type string_builder() :: any(). - --type direction() :: all. - --spec prepend_builder(string_builder(), string_builder()) -> string_builder(). -prepend_builder(Builder, Prefix) -> - gleam_stdlib:iodata_append(Prefix, Builder). - --spec append_builder(string_builder(), string_builder()) -> string_builder(). -append_builder(Builder, Suffix) -> - gleam_stdlib:iodata_append(Builder, Suffix). - --spec new() -> string_builder(). -new() -> - gleam_stdlib:identity([]). - --spec from_strings(list(binary())) -> string_builder(). -from_strings(Strings) -> - gleam_stdlib:identity(Strings). - --spec concat(list(string_builder())) -> string_builder(). -concat(Builders) -> - gleam_stdlib:identity(Builders). - --spec from_string(binary()) -> string_builder(). -from_string(String) -> - gleam_stdlib:identity(String). - --spec prepend(string_builder(), binary()) -> string_builder(). -prepend(Builder, Prefix) -> - append_builder(from_string(Prefix), Builder). - --spec append(string_builder(), binary()) -> string_builder(). -append(Builder, Second) -> - append_builder(Builder, from_string(Second)). - --spec to_string(string_builder()) -> binary(). -to_string(Builder) -> - unicode:characters_to_binary(Builder). - --spec byte_size(string_builder()) -> integer(). -byte_size(Builder) -> - erlang:iolist_size(Builder). - --spec join(list(string_builder()), binary()) -> string_builder(). -join(Builders, Sep) -> - _pipe = Builders, - _pipe@1 = gleam@list:intersperse(_pipe, from_string(Sep)), - concat(_pipe@1). - --spec lowercase(string_builder()) -> string_builder(). -lowercase(Builder) -> - string:lowercase(Builder). - --spec uppercase(string_builder()) -> string_builder(). -uppercase(Builder) -> - string:uppercase(Builder). - --spec reverse(string_builder()) -> string_builder(). -reverse(Builder) -> - string:reverse(Builder). - --spec do_split(string_builder(), binary()) -> list(string_builder()). -do_split(Iodata, Pattern) -> - string:split(Iodata, Pattern, all). - --spec split(string_builder(), binary()) -> list(string_builder()). -split(Iodata, Pattern) -> - do_split(Iodata, Pattern). - --spec do_replace(string_builder(), binary(), binary()) -> string_builder(). -do_replace(Iodata, Pattern, Substitute) -> - string:replace(Iodata, Pattern, Substitute, all). - --spec replace(string_builder(), binary(), binary()) -> string_builder(). -replace(Builder, Pattern, Substitute) -> - do_replace(Builder, Pattern, Substitute). - --spec is_equal(string_builder(), string_builder()) -> boolean(). -is_equal(A, B) -> - string:equal(A, B). - --spec is_empty(string_builder()) -> boolean(). -is_empty(Builder) -> - string:is_empty(Builder). diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl deleted file mode 100644 index 7ec4fe7..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam@uri.erl +++ /dev/null @@ -1,252 +0,0 @@ --module(gleam@uri). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([parse/1, parse_query/1, percent_encode/1, query_to_string/1, percent_decode/1, path_segments/1, to_string/1, origin/1, merge/2]). --export_type([uri/0]). - --type uri() :: {uri, - gleam@option:option(binary()), - gleam@option:option(binary()), - gleam@option:option(binary()), - gleam@option:option(integer()), - binary(), - gleam@option:option(binary()), - gleam@option:option(binary())}. - --spec parse(binary()) -> {ok, uri()} | {error, nil}. -parse(Uri_string) -> - gleam_stdlib:uri_parse(Uri_string). - --spec parse_query(binary()) -> {ok, list({binary(), binary()})} | {error, nil}. -parse_query(Query) -> - gleam_stdlib:parse_query(Query). - --spec percent_encode(binary()) -> binary(). -percent_encode(Value) -> - gleam_stdlib:percent_encode(Value). - --spec query_pair({binary(), binary()}) -> gleam@string_builder:string_builder(). -query_pair(Pair) -> - gleam@string_builder:from_strings( - [percent_encode(erlang:element(1, Pair)), - <<"="/utf8>>, - percent_encode(erlang:element(2, Pair))] - ). - --spec query_to_string(list({binary(), binary()})) -> binary(). -query_to_string(Query) -> - _pipe = Query, - _pipe@1 = gleam@list:map(_pipe, fun query_pair/1), - _pipe@2 = gleam@list:intersperse( - _pipe@1, - gleam@string_builder:from_string(<<"&"/utf8>>) - ), - _pipe@3 = gleam@string_builder:concat(_pipe@2), - gleam@string_builder:to_string(_pipe@3). - --spec percent_decode(binary()) -> {ok, binary()} | {error, nil}. -percent_decode(Value) -> - gleam_stdlib:percent_decode(Value). - --spec do_remove_dot_segments(list(binary()), list(binary())) -> list(binary()). -do_remove_dot_segments(Input, Accumulator) -> - case Input of - [] -> - gleam@list:reverse(Accumulator); - - [Segment | Rest] -> - Accumulator@5 = case {Segment, Accumulator} of - {<<""/utf8>>, Accumulator@1} -> - Accumulator@1; - - {<<"."/utf8>>, Accumulator@2} -> - Accumulator@2; - - {<<".."/utf8>>, []} -> - []; - - {<<".."/utf8>>, [_ | Accumulator@3]} -> - Accumulator@3; - - {Segment@1, Accumulator@4} -> - [Segment@1 | Accumulator@4] - end, - do_remove_dot_segments(Rest, Accumulator@5) - end. - --spec remove_dot_segments(list(binary())) -> list(binary()). -remove_dot_segments(Input) -> - do_remove_dot_segments(Input, []). - --spec path_segments(binary()) -> list(binary()). -path_segments(Path) -> - remove_dot_segments(gleam@string:split(Path, <<"/"/utf8>>)). - --spec to_string(uri()) -> binary(). -to_string(Uri) -> - Parts = case erlang:element(8, Uri) of - {some, Fragment} -> - [<<"#"/utf8>>, Fragment]; - - _ -> - [] - end, - Parts@1 = case erlang:element(7, Uri) of - {some, Query} -> - [<<"?"/utf8>>, Query | Parts]; - - _ -> - Parts - end, - Parts@2 = [erlang:element(6, Uri) | Parts@1], - Parts@3 = case {erlang:element(4, Uri), - gleam@string:starts_with(erlang:element(6, Uri), <<"/"/utf8>>)} of - {{some, Host}, false} when Host =/= <<""/utf8>> -> - [<<"/"/utf8>> | Parts@2]; - - {_, _} -> - Parts@2 - end, - Parts@4 = case {erlang:element(4, Uri), erlang:element(5, Uri)} of - {{some, _}, {some, Port}} -> - [<<":"/utf8>>, gleam@int:to_string(Port) | Parts@3]; - - {_, _} -> - Parts@3 - end, - Parts@5 = case {erlang:element(2, Uri), - erlang:element(3, Uri), - erlang:element(4, Uri)} of - {{some, S}, {some, U}, {some, H}} -> - [S, <<"://"/utf8>>, U, <<"@"/utf8>>, H | Parts@4]; - - {{some, S@1}, none, {some, H@1}} -> - [S@1, <<"://"/utf8>>, H@1 | Parts@4]; - - {{some, S@2}, {some, _}, none} -> - [S@2, <<":"/utf8>> | Parts@4]; - - {{some, S@2}, none, none} -> - [S@2, <<":"/utf8>> | Parts@4]; - - {none, none, {some, H@2}} -> - [<<"//"/utf8>>, H@2 | Parts@4]; - - {_, _, _} -> - Parts@4 - end, - gleam@string:concat(Parts@5). - --spec origin(uri()) -> {ok, binary()} | {error, nil}. -origin(Uri) -> - {uri, Scheme, _, Host, Port, _, _, _} = Uri, - case Scheme of - {some, <<"https"/utf8>>} when Port =:= {some, 443} -> - Origin = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, - {ok, to_string(Origin)}; - - {some, <<"http"/utf8>>} when Port =:= {some, 80} -> - Origin@1 = {uri, Scheme, none, Host, none, <<""/utf8>>, none, none}, - {ok, to_string(Origin@1)}; - - {some, S} when (S =:= <<"http"/utf8>>) orelse (S =:= <<"https"/utf8>>) -> - Origin@2 = {uri, Scheme, none, Host, Port, <<""/utf8>>, none, none}, - {ok, to_string(Origin@2)}; - - _ -> - {error, nil} - end. - --spec drop_last(list(DFL)) -> list(DFL). -drop_last(Elements) -> - gleam@list:take(Elements, gleam@list:length(Elements) - 1). - --spec join_segments(list(binary())) -> binary(). -join_segments(Segments) -> - gleam@string:join([<<""/utf8>> | Segments], <<"/"/utf8>>). - --spec merge(uri(), uri()) -> {ok, uri()} | {error, nil}. -merge(Base, Relative) -> - case Base of - {uri, {some, _}, _, {some, _}, _, _, _, _} -> - case Relative of - {uri, _, _, {some, _}, _, _, _, _} -> - Path = begin - _pipe = gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ), - _pipe@1 = remove_dot_segments(_pipe), - join_segments(_pipe@1) - end, - Resolved = {uri, - gleam@option:'or'( - erlang:element(2, Relative), - erlang:element(2, Base) - ), - none, - erlang:element(4, Relative), - gleam@option:'or'( - erlang:element(5, Relative), - erlang:element(5, Base) - ), - Path, - erlang:element(7, Relative), - erlang:element(8, Relative)}, - {ok, Resolved}; - - _ -> - {New_path, New_query} = case erlang:element(6, Relative) of - <<""/utf8>> -> - {erlang:element(6, Base), - gleam@option:'or'( - erlang:element(7, Relative), - erlang:element(7, Base) - )}; - - _ -> - Path_segments = case gleam@string:starts_with( - erlang:element(6, Relative), - <<"/"/utf8>> - ) of - true -> - gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ); - - false -> - _pipe@2 = gleam@string:split( - erlang:element(6, Base), - <<"/"/utf8>> - ), - _pipe@3 = drop_last(_pipe@2), - gleam@list:append( - _pipe@3, - gleam@string:split( - erlang:element(6, Relative), - <<"/"/utf8>> - ) - ) - end, - Path@1 = begin - _pipe@4 = Path_segments, - _pipe@5 = remove_dot_segments(_pipe@4), - join_segments(_pipe@5) - end, - {Path@1, erlang:element(7, Relative)} - end, - Resolved@1 = {uri, - erlang:element(2, Base), - none, - erlang:element(4, Base), - erlang:element(5, Base), - New_path, - New_query, - erlang:element(8, Relative)}, - {ok, Resolved@1} - end; - - _ -> - {error, nil} - end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src deleted file mode 100644 index bcf08e2..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.app.src +++ /dev/null @@ -1,31 +0,0 @@ -{application, gleam_stdlib, [ - {vsn, "0.33.0"}, - {applications, []}, - {description, "A standard library for the Gleam programming language"}, - {modules, [gleam@base, - gleam@bit_array, - gleam@bit_builder, - gleam@bit_string, - gleam@bool, - gleam@bytes_builder, - gleam@dict, - gleam@dynamic, - gleam@float, - gleam@function, - gleam@int, - gleam@io, - gleam@iterator, - gleam@list, - gleam@map, - gleam@option, - gleam@order, - gleam@pair, - gleam@queue, - gleam@regex, - gleam@result, - gleam@set, - gleam@string, - gleam@string_builder, - gleam@uri]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl deleted file mode 100644 index c6ea125..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.erl +++ /dev/null @@ -1,529 +0,0 @@ --module(gleam_stdlib). - --export([ - map_get/2, iodata_append/2, identity/1, decode_int/1, decode_bool/1, - decode_float/1, decode_list/1, decode_option/2, decode_field/2, parse_int/1, - parse_float/1, less_than/2, string_pop_grapheme/1, string_starts_with/2, - wrap_list/1, string_ends_with/2, string_pad/4, decode_map/1, uri_parse/1, - bit_array_int_to_u32/1, bit_array_int_from_u32/1, decode_result/1, - bit_array_slice/3, decode_bit_array/1, compile_regex/2, regex_scan/2, - percent_encode/1, percent_decode/1, regex_check/2, regex_split/2, - base_decode64/1, parse_query/1, bit_array_concat/1, size_of_tuple/1, - decode_tuple/1, decode_tuple2/1, decode_tuple3/1, decode_tuple4/1, - decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1, - println/1, print_error/1, println_error/1, inspect/1, float_to_string/1, - int_from_base_string/2, utf_codepoint_list_to_string/1, contains_string/2, - crop_string/2, base16_decode/1 -]). - -%% Taken from OTP's uri_string module --define(DEC2HEX(X), - if ((X) >= 0) andalso ((X) =< 9) -> (X) + $0; - ((X) >= 10) andalso ((X) =< 15) -> (X) + $A - 10 - end). - -%% Taken from OTP's uri_string module --define(HEX2DEC(X), - if ((X) >= $0) andalso ((X) =< $9) -> (X) - $0; - ((X) >= $A) andalso ((X) =< $F) -> (X) - $A + 10; - ((X) >= $a) andalso ((X) =< $f) -> (X) - $a + 10 - end). - --define(is_lowercase_char(X), (X > 96 andalso X < 123)). --define(is_underscore_char(X), (X == 95)). --define(is_digit_char(X), (X > 47 andalso X < 58)). - -uppercase(X) -> X - 32. - -map_get(Map, Key) -> - case maps:find(Key, Map) of - error -> {error, nil}; - OkFound -> OkFound - end. - -iodata_append(Iodata, String) -> [Iodata, String]. - -identity(X) -> X. - -decode_error_msg(Expected, Data) when is_binary(Expected) -> - decode_error(Expected, classify_dynamic(Data)). -decode_error(Expected, Got) when is_binary(Expected) andalso is_binary(Got) -> - {error, [{decode_error, Expected, Got, []}]}. - -classify_dynamic(nil) -> <<"Nil">>; -classify_dynamic(X) when is_atom(X) -> <<"Atom">>; -classify_dynamic(X) when is_binary(X) -> <<"String">>; -classify_dynamic(X) when is_bitstring(X) -> <<"BitArray">>; -classify_dynamic(X) when is_integer(X) -> <<"Int">>; -classify_dynamic(X) when is_float(X) -> <<"Float">>; -classify_dynamic(X) when is_list(X) -> <<"List">>; -classify_dynamic(X) when is_boolean(X) -> <<"Bool">>; -classify_dynamic(X) when is_map(X) -> <<"Map">>; -classify_dynamic(X) when is_tuple(X) -> - iolist_to_binary(["Tuple of ", integer_to_list(tuple_size(X)), " elements"]); -classify_dynamic(X) when - is_function(X, 0) orelse is_function(X, 1) orelse is_function(X, 2) orelse - is_function(X, 3) orelse is_function(X, 4) orelse is_function(X, 5) orelse - is_function(X, 6) orelse is_function(X, 7) orelse is_function(X, 8) orelse - is_function(X, 9) orelse is_function(X, 10) orelse is_function(X, 11) orelse - is_function(X, 12) -> <<"Function">>; -classify_dynamic(_) -> <<"Some other type">>. - -decode_map(Data) when is_map(Data) -> {ok, Data}; -decode_map(Data) -> decode_error_msg(<<"Map">>, Data). - -decode_bit_array(Data) when is_bitstring(Data) -> {ok, Data}; -decode_bit_array(Data) -> decode_error_msg(<<"BitArray">>, Data). - -decode_int(Data) when is_integer(Data) -> {ok, Data}; -decode_int(Data) -> decode_error_msg(<<"Int">>, Data). - -decode_float(Data) when is_float(Data) -> {ok, Data}; -decode_float(Data) -> decode_error_msg(<<"Float">>, Data). - -decode_bool(Data) when is_boolean(Data) -> {ok, Data}; -decode_bool(Data) -> decode_error_msg(<<"Bool">>, Data). - -decode_list(Data) when is_list(Data) -> {ok, Data}; -decode_list(Data) -> decode_error_msg(<<"List">>, Data). - -decode_field(Data, Key) when is_map(Data) -> - case Data of - #{Key := Value} -> {ok, {some, Value}}; - _ -> - {ok, none} - end; -decode_field(Data, _) -> - decode_error_msg(<<"Map">>, Data). - -size_of_tuple(Data) -> tuple_size(Data). - -tuple_get(_tup, Index) when Index < 0 -> {error, nil}; -tuple_get(Data, Index) when Index >= tuple_size(Data) -> {error, nil}; -tuple_get(Data, Index) -> {ok, element(Index + 1, Data)}. - -decode_tuple(Data) when is_tuple(Data) -> {ok, Data}; -decode_tuple(Data) -> decode_error_msg(<<"Tuple">>, Data). - -decode_tuple2({_,_} = A) -> {ok, A}; -decode_tuple2([A,B]) -> {ok, {A,B}}; -decode_tuple2(Data) -> decode_error_msg(<<"Tuple of 2 elements">>, Data). - -decode_tuple3({_,_,_} = A) -> {ok, A}; -decode_tuple3([A,B,C]) -> {ok, {A,B,C}}; -decode_tuple3(Data) -> decode_error_msg(<<"Tuple of 3 elements">>, Data). - -decode_tuple4({_,_,_,_} = A) -> {ok, A}; -decode_tuple4([A,B,C,D]) -> {ok, {A,B,C,D}}; -decode_tuple4(Data) -> decode_error_msg(<<"Tuple of 4 elements">>, Data). - -decode_tuple5({_,_,_,_,_} = A) -> {ok, A}; -decode_tuple5([A,B,C,D,E]) -> {ok, {A,B,C,D,E}}; -decode_tuple5(Data) -> decode_error_msg(<<"Tuple of 5 elements">>, Data). - -decode_tuple6({_,_,_,_,_,_} = A) -> {ok, A}; -decode_tuple6([A,B,C,D,E,F]) -> {ok, {A,B,C,D,E,F}}; -decode_tuple6(Data) -> decode_error_msg(<<"Tuple of 6 elements">>, Data). - -decode_option(Term, F) -> - Decode = fun(Inner) -> - case F(Inner) of - {ok, Decoded} -> {ok, {some, Decoded}}; - Error -> Error - end - end, - case Term of - undefined -> {ok, none}; - error -> {ok, none}; - null -> {ok, none}; - none -> {ok, none}; - nil -> {ok, none}; - {some, Inner} -> Decode(Inner); - _ -> Decode(Term) - end. - -decode_result(Term) -> - case Term of - {ok, Inner} -> {ok, {ok, Inner}}; - ok -> {ok, {ok, nil}}; - {error, Inner} -> {ok, {error, Inner}}; - error -> {ok, {error, nil}}; - _ -> decode_error_msg(<<"Result">>, Term) - end. - -int_from_base_string(String, Base) -> - case catch binary_to_integer(String, Base) of - Int when is_integer(Int) -> {ok, Int}; - _ -> {error, nil} - end. - -parse_int(String) -> - case catch binary_to_integer(String) of - Int when is_integer(Int) -> {ok, Int}; - _ -> {error, nil} - end. - -parse_float(String) -> - case catch binary_to_float(String) of - Float when is_float(Float) -> {ok, Float}; - _ -> {error, nil} - end. - -less_than(Lhs, Rhs) -> - Lhs < Rhs. - -string_starts_with(_, <<>>) -> true; -string_starts_with(String, Prefix) when byte_size(Prefix) > byte_size(String) -> false; -string_starts_with(String, Prefix) -> - PrefixSize = byte_size(Prefix), - Prefix == binary_part(String, 0, PrefixSize). - -string_ends_with(_, <<>>) -> true; -string_ends_with(String, Suffix) when byte_size(Suffix) > byte_size(String) -> false; -string_ends_with(String, Suffix) -> - SuffixSize = byte_size(Suffix), - Suffix == binary_part(String, byte_size(String) - SuffixSize, SuffixSize). - -string_pad(String, Length, Dir, PadString) -> - Chars = string:pad(String, Length, Dir, binary_to_list(PadString)), - case unicode:characters_to_binary(Chars) of - Bin when is_binary(Bin) -> Bin; - Error -> erlang:error({gleam_error, {string_invalid_utf8, Error}}) - end. - -string_pop_grapheme(String) -> - case string:next_grapheme(String) of - [ Next | Rest ] -> - {ok, {unicode:characters_to_binary([Next]), unicode:characters_to_binary(Rest)}}; - _ -> {error, nil} - end. - -bit_array_concat(BitArrays) -> - list_to_bitstring(BitArrays). - -bit_array_slice(Bin, Pos, Len) -> - try {ok, binary:part(Bin, Pos, Len)} - catch error:badarg -> {error, nil} - end. - -bit_array_int_to_u32(I) when 0 =< I, I < 4294967296 -> - {ok, <>}; -bit_array_int_to_u32(_) -> - {error, nil}. - -bit_array_int_from_u32(<>) -> - {ok, I}; -bit_array_int_from_u32(_) -> - {error, nil}. - -compile_regex(String, Options) -> - {options, Caseless, Multiline} = Options, - OptionsList = [ - unicode, - ucp, - Caseless andalso caseless, - Multiline andalso multiline - ], - FilteredOptions = [Option || Option <- OptionsList, Option /= false], - case re:compile(String, FilteredOptions) of - {ok, MP} -> {ok, MP}; - {error, {Str, Pos}} -> - {error, {compile_error, unicode:characters_to_binary(Str), Pos}} - end. - -regex_check(Regex, String) -> - re:run(String, Regex) /= nomatch. - -regex_split(Regex, String) -> - re:split(String, Regex). - -regex_submatches(_, {-1, 0}) -> none; -regex_submatches(String, {Start, Length}) -> - BinarySlice = binary:part(String, {Start, Length}), - case string:is_empty(binary_to_list(BinarySlice)) of - true -> none; - false -> {some, BinarySlice} - end. - -regex_matches(String, [{Start, Length} | Submatches]) -> - Submatches1 = lists:map(fun(X) -> regex_submatches(String, X) end, Submatches), - {match, binary:part(String, Start, Length), Submatches1}. - -regex_scan(Regex, String) -> - case re:run(String, Regex, [global]) of - {match, Captured} -> lists:map(fun(X) -> regex_matches(String, X) end, Captured); - nomatch -> [] - end. - -base_decode64(S) -> - try {ok, base64:decode(S)} - catch error:_ -> {error, nil} - end. - -wrap_list(X) when is_list(X) -> X; -wrap_list(X) -> [X]. - -parse_query(Query) -> - case uri_string:dissect_query(Query) of - {error, _, _} -> {error, nil}; - Pairs -> - Pairs1 = lists:map(fun - ({K, true}) -> {K, <<"">>}; - (Pair) -> Pair - end, Pairs), - {ok, Pairs1} - end. - -percent_encode(B) -> percent_encode(B, <<>>). -percent_encode(<<>>, Acc) -> - Acc; -percent_encode(<>, Acc) -> - case percent_ok(H) of - true -> - percent_encode(T, <>); - false -> - <> = <>, - percent_encode(T, <>) - end. - -percent_decode(Cs) -> percent_decode(Cs, <<>>). -percent_decode(<<$%, C0, C1, Cs/binary>>, Acc) -> - case is_hex_digit(C0) andalso is_hex_digit(C1) of - true -> - B = ?HEX2DEC(C0)*16+?HEX2DEC(C1), - percent_decode(Cs, <>); - false -> - {error, nil} - end; -percent_decode(<>, Acc) -> - percent_decode(Cs, <>); -percent_decode(<<>>, Acc) -> - check_utf8(Acc). - -percent_ok($!) -> true; -percent_ok($$) -> true; -percent_ok($') -> true; -percent_ok($() -> true; -percent_ok($)) -> true; -percent_ok($*) -> true; -percent_ok($+) -> true; -percent_ok($-) -> true; -percent_ok($.) -> true; -percent_ok($_) -> true; -percent_ok($~) -> true; -percent_ok(C) when $0 =< C, C =< $9 -> true; -percent_ok(C) when $A =< C, C =< $Z -> true; -percent_ok(C) when $a =< C, C =< $z -> true; -percent_ok(_) -> false. - -is_hex_digit(C) -> - ($0 =< C andalso C =< $9) orelse ($a =< C andalso C =< $f) orelse ($A =< C andalso C =< $F). - -check_utf8(Cs) -> - case unicode:characters_to_list(Cs) of - {incomplete, _, _} -> {error, nil}; - {error, _, _} -> {error, nil}; - _ -> {ok, Cs} - end. - -uri_parse(String) -> - case uri_string:parse(String) of - {error, _, _} -> {error, nil}; - Uri -> - {ok, {uri, - maps_get_optional(Uri, scheme), - maps_get_optional(Uri, userinfo), - maps_get_optional(Uri, host), - maps_get_optional(Uri, port), - maps_get_or(Uri, path, <<>>), - maps_get_optional(Uri, query), - maps_get_optional(Uri, fragment) - }} - end. - -maps_get_optional(Map, Key) -> - try {some, maps:get(Key, Map)} - catch _:_ -> none - end. - -maps_get_or(Map, Key, Default) -> - try maps:get(Key, Map) - catch _:_ -> Default - end. - -print(String) -> - io:put_chars(String), - nil. - -println(String) -> - io:put_chars([String, $\n]), - nil. - -print_error(String) -> - io:put_chars(standard_error, String), - nil. - -println_error(String) -> - io:put_chars(standard_error, [String, $\n]), - nil. - -inspect(true) -> - "True"; -inspect(false) -> - "False"; -inspect(nil) -> - "Nil"; -inspect(Data) when is_map(Data) -> - Fields = [ - [<<"#(">>, inspect(Key), <<", ">>, inspect(Value), <<")">>] - || {Key, Value} <- maps:to_list(Data) - ], - ["dict.from_list([", lists:join(", ", Fields), "])"]; -inspect(Atom) when is_atom(Atom) -> - Binary = erlang:atom_to_binary(Atom), - case inspect_maybe_gleam_atom(Binary, none, <<>>) of - {ok, Inspected} -> Inspected; - {error, _} -> ["atom.create_from_string(\"", Binary, "\")"] - end; -inspect(Any) when is_integer(Any) -> - erlang:integer_to_list(Any); -inspect(Any) when is_float(Any) -> - io_lib_format:fwrite_g(Any); -inspect(Binary) when is_binary(Binary) -> - case inspect_maybe_utf8_string(Binary, <<>>) of - {ok, InspectedUtf8String} -> InspectedUtf8String; - {error, not_a_utf8_string} -> - Segments = [erlang:integer_to_list(X) || <> <= Binary], - ["<<", lists:join(", ", Segments), ">>"] - end; -inspect(Bits) when is_bitstring(Bits) -> - inspect_bit_array(Bits); -inspect(List) when is_list(List) -> - case inspect_list(List) of - {proper, Elements} -> ["[", Elements, "]"]; - {improper, Elements} -> ["//erl([", Elements, "])"] - end; -inspect(Any) when is_tuple(Any) % Record constructors - andalso is_atom(element(1, Any)) - andalso element(1, Any) =/= false - andalso element(1, Any) =/= true - andalso element(1, Any) =/= nil --> - [Atom | ArgsList] = erlang:tuple_to_list(Any), - Args = lists:join(<<", ">>, - lists:map(fun inspect/1, ArgsList) - ), - [inspect(Atom), "(", Args, ")"]; -inspect(Tuple) when is_tuple(Tuple) -> - Elements = lists:map(fun inspect/1, erlang:tuple_to_list(Tuple)), - ["#(", lists:join(", ", Elements), ")"]; -inspect(Any) when is_function(Any) -> - {arity, Arity} = erlang:fun_info(Any, arity), - ArgsAsciiCodes = lists:seq($a, $a + Arity - 1), - Args = lists:join(<<", ">>, - lists:map(fun(Arg) -> <> end, ArgsAsciiCodes) - ), - ["//fn(", Args, ") { ... }"]; -inspect(Any) -> - ["//erl(", io_lib:format("~p", [Any]), ")"]. - - -inspect_maybe_gleam_atom(<<>>, none, _) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, none, _) when ?is_digit_char(First) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, none, _) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_">>, _PrevChar, _Acc) -> - {error, nil}; -inspect_maybe_gleam_atom(<<"_", _Rest/binary>>, $_, _Acc) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, _PrevChar, _Acc) - when not (?is_lowercase_char(First) orelse ?is_underscore_char(First) orelse ?is_digit_char(First)) -> - {error, nil}; -inspect_maybe_gleam_atom(<>, none, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<<"_", Rest/binary>>, _PrevChar, Acc) -> - inspect_maybe_gleam_atom(Rest, $_, Acc); -inspect_maybe_gleam_atom(<>, $_, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<>, _PrevChar, Acc) -> - inspect_maybe_gleam_atom(Rest, First, <>); -inspect_maybe_gleam_atom(<<>>, _PrevChar, Acc) -> - {ok, Acc}; -inspect_maybe_gleam_atom(A, B, C) -> - erlang:display({A, B, C}), - throw({gleam_error, A, B, C}). - -inspect_list([]) -> - {proper, []}; -inspect_list([First]) -> - {proper, [inspect(First)]}; -inspect_list([First | Rest]) when is_list(Rest) -> - {Kind, Inspected} = inspect_list(Rest), - {Kind, [inspect(First), <<", ">> | Inspected]}; -inspect_list([First | ImproperTail]) -> - {improper, [inspect(First), <<" | ">>, inspect(ImproperTail)]}. - -inspect_bit_array(Bits) -> - Text = inspect_bit_array(Bits, <<"<<">>), - <>">>. - -inspect_bit_array(<<>>, Acc) -> - Acc; -inspect_bit_array(<>, Acc) -> - inspect_bit_array(Rest, append_segment(Acc, erlang:integer_to_binary(X))); -inspect_bit_array(Rest, Acc) -> - Size = bit_size(Rest), - <> = Rest, - X1 = erlang:integer_to_binary(X), - Size1 = erlang:integer_to_binary(Size), - Segment = <>, - inspect_bit_array(<<>>, append_segment(Acc, Segment)). - -append_segment(<<"<<">>, Segment) -> - <<"<<", Segment/binary>>; -append_segment(Acc, Segment) -> - <>. - - -inspect_maybe_utf8_string(Binary, Acc) -> - case Binary of - <<>> -> {ok, <<$", Acc/binary, $">>}; - <> -> - Escaped = case First of - $" -> <<$\\, $">>; - $\\ -> <<$\\, $\\>>; - $\r -> <<$\\, $r>>; - $\n -> <<$\\, $n>>; - $\t -> <<$\\, $t>>; - Other -> <> - end, - inspect_maybe_utf8_string(Rest, <>); - _ -> {error, not_a_utf8_string} - end. - -float_to_string(Float) when is_float(Float) -> - erlang:iolist_to_binary(io_lib_format:fwrite_g(Float)). - -utf_codepoint_list_to_string(List) -> - case unicode:characters_to_binary(List) of - {error, _} -> erlang:error({gleam_error, {string_invalid_utf8, List}}); - Binary -> Binary - end. - -crop_string(String, Prefix) -> - case string:find(String, Prefix) of - nomatch -> String; - New -> New - end. - -contains_string(String, Substring) -> - is_bitstring(string:find(String, Substring)). - -base16_decode(String) -> - try - {ok, binary:decode_hex(String)} - catch - _:_ -> {error, nil} - end. diff --git a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs b/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs deleted file mode 100644 index a908b23..0000000 --- a/aoc2023/build/packages/gleam_stdlib/src/gleam_stdlib.mjs +++ /dev/null @@ -1,875 +0,0 @@ -import { - BitArray, - Error, - List, - Ok, - Result, - UtfCodepoint, - stringBits, - toBitArray, - NonEmpty, - CustomType, -} from "./gleam.mjs"; -import { - CompileError as RegexCompileError, - Match as RegexMatch, -} from "./gleam/regex.mjs"; -import { DecodeError } from "./gleam/dynamic.mjs"; -import { Some, None } from "./gleam/option.mjs"; -import Dict from "./dict.mjs"; - -const Nil = undefined; -const NOT_FOUND = {}; - -export function identity(x) { - return x; -} - -export function parse_int(value) { - if (/^[-+]?(\d+)$/.test(value)) { - return new Ok(parseInt(value)); - } else { - return new Error(Nil); - } -} - -export function parse_float(value) { - if (/^[-+]?(\d+)\.(\d+)$/.test(value)) { - return new Ok(parseFloat(value)); - } else { - return new Error(Nil); - } -} - -export function to_string(term) { - return term.toString(); -} - -export function float_to_string(float) { - const string = float.toString(); - if (string.indexOf(".") >= 0) { - return string; - } else { - return string + ".0"; - } -} - -export function int_to_base_string(int, base) { - return int.toString(base).toUpperCase(); -} - -const int_base_patterns = { - 2: /[^0-1]/, - 3: /[^0-2]/, - 4: /[^0-3]/, - 5: /[^0-4]/, - 6: /[^0-5]/, - 7: /[^0-6]/, - 8: /[^0-7]/, - 9: /[^0-8]/, - 10: /[^0-9]/, - 11: /[^0-9a]/, - 12: /[^0-9a-b]/, - 13: /[^0-9a-c]/, - 14: /[^0-9a-d]/, - 15: /[^0-9a-e]/, - 16: /[^0-9a-f]/, - 17: /[^0-9a-g]/, - 18: /[^0-9a-h]/, - 19: /[^0-9a-i]/, - 20: /[^0-9a-j]/, - 21: /[^0-9a-k]/, - 22: /[^0-9a-l]/, - 23: /[^0-9a-m]/, - 24: /[^0-9a-n]/, - 25: /[^0-9a-o]/, - 26: /[^0-9a-p]/, - 27: /[^0-9a-q]/, - 28: /[^0-9a-r]/, - 29: /[^0-9a-s]/, - 30: /[^0-9a-t]/, - 31: /[^0-9a-u]/, - 32: /[^0-9a-v]/, - 33: /[^0-9a-w]/, - 34: /[^0-9a-x]/, - 35: /[^0-9a-y]/, - 36: /[^0-9a-z]/, -}; - -export function int_from_base_string(string, base) { - if (int_base_patterns[base].test(string.replace(/^-/, "").toLowerCase())) { - return new Error(Nil); - } - - const result = parseInt(string, base); - - if (isNaN(result)) { - return new Error(Nil); - } - - return new Ok(result); -} - -export function string_replace(string, target, substitute) { - if (typeof string.replaceAll !== "undefined") { - return string.replaceAll(target, substitute); - } - // Fallback for older Node.js versions: - // 1. - // 2. - // TODO: This fallback could be remove once Node.js 14 is EOL - // aka on or after 2024-04-30 - return string.replace( - // $& means the whole matched string - new RegExp(target.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g"), - substitute - ); -} - -export function string_reverse(string) { - return [...string].reverse().join(""); -} - -export function string_length(string) { - if (string === "") { - return 0; - } - const iterator = graphemes_iterator(string); - if (iterator) { - let i = 0; - for (const _ of iterator) { - i++; - } - return i; - } else { - return string.match(/./gsu).length; - } -} - -export function graphemes(string) { - return List.fromArray( - Array.from(graphemes_iterator(string)).map((item) => item.segment) - ); -} - -function graphemes_iterator(string) { - if (Intl && Intl.Segmenter) { - return new Intl.Segmenter().segment(string)[Symbol.iterator](); - } -} - -export function pop_grapheme(string) { - let first; - const iterator = graphemes_iterator(string); - if (iterator) { - first = iterator.next().value?.segment; - } else { - first = string.match(/./su)?.[0]; - } - if (first) { - return new Ok([first, string.slice(first.length)]); - } else { - return new Error(Nil); - } -} - -export function lowercase(string) { - return string.toLowerCase(); -} - -export function uppercase(string) { - return string.toUpperCase(); -} - -export function less_than(a, b) { - return a < b; -} - -export function add(a, b) { - return a + b; -} - -export function equal(a, b) { - return a === b; -} - -export function split(xs, pattern) { - return List.fromArray(xs.split(pattern)); -} - -export function join(xs, separator) { - const iterator = xs[Symbol.iterator](); - let result = iterator.next().value || ""; - let current = iterator.next(); - while (!current.done) { - result = result + separator + current.value; - current = iterator.next(); - } - return result; -} - -export function concat(xs) { - let result = ""; - for (const x of xs) { - result = result + x; - } - return result; -} - -export function length(data) { - return data.length; -} - -export function crop_string(string, substring) { - return string.substring(string.indexOf(substring)); -} - -export function contains_string(haystack, needle) { - return haystack.indexOf(needle) >= 0; -} - -export function starts_with(haystack, needle) { - return haystack.startsWith(needle); -} - -export function ends_with(haystack, needle) { - return haystack.endsWith(needle); -} - -export function split_once(haystack, needle) { - const index = haystack.indexOf(needle); - if (index >= 0) { - const before = haystack.slice(0, index); - const after = haystack.slice(index + needle.length); - return new Ok([before, after]); - } else { - return new Error(Nil); - } -} - -export function trim(string) { - return string.trim(); -} - -export function trim_left(string) { - return string.trimLeft(); -} - -export function trim_right(string) { - return string.trimRight(); -} - -export function bit_array_from_string(string) { - return toBitArray([stringBits(string)]); -} - -export function bit_array_concat(bit_arrays) { - return toBitArray(bit_arrays.toArray().map((b) => b.buffer)); -} - -export function console_log(term) { - console.log(term); -} - -export function console_error(term) { - console.error(term); -} - -export function crash(message) { - throw new globalThis.Error(message); -} - -export function bit_array_to_string(bit_array) { - try { - const decoder = new TextDecoder("utf-8", { fatal: true }); - return new Ok(decoder.decode(bit_array.buffer)); - } catch (_error) { - return new Error(Nil); - } -} - -export function print(string) { - if (typeof process === "object") { - process.stdout.write(string); // We can write without a trailing newline - } else if (typeof Deno === "object") { - Deno.stdout.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline - } else { - console.log(string); // We're in a browser. Newlines are mandated - } -} - -export function print_error(string) { - if (typeof process === "object" && process.stderr?.write) { - process.stderr.write(string); // We can write without a trailing newline - } else if (typeof Deno === "object") { - Deno.stderr.writeSync(new TextEncoder().encode(string)); // We can write without a trailing newline - } else { - console.error(string); // We're in a browser. Newlines are mandated - } -} - -export function print_debug(string) { - if (typeof process === "object" && process.stderr?.write) { - process.stderr.write(string + "\n"); // If we're in Node.js, use `stderr` - } else if (typeof Deno === "object") { - Deno.stderr.writeSync(new TextEncoder().encode(string + "\n")); // If we're in Deno, use `stderr` - } else { - console.log(string); // Otherwise, use `console.log` (so that it doesn't look like an error) - } -} - -export function ceiling(float) { - return Math.ceil(float); -} - -export function floor(float) { - return Math.floor(float); -} - -export function round(float) { - return Math.round(float); -} - -export function truncate(float) { - return Math.trunc(float); -} - -export function power(base, exponent) { - // It is checked in Gleam that: - // - The base is non-negative and that the exponent is not fractional. - // - The base is non-zero and the exponent is non-negative (otherwise - // the result will essentially be division by zero). - // It can thus be assumed that valid input is passed to the Math.pow - // function and a NaN or Infinity value will not be produced. - return Math.pow(base, exponent); -} - -export function random_uniform() { - const random_uniform_result = Math.random(); - // With round-to-nearest-even behavior, the ranges claimed for the functions below - // (excluding the one for Math.random() itself) aren't exact. - // If extremely large bounds are chosen (2^53 or higher), - // it's possible in extremely rare cases to calculate the usually-excluded upper bound. - // Note that as numbers in JavaScript are IEEE 754 floating point numbers - // See: - // Because of this, we just loop 'until' we get a valid result where 0.0 <= x < 1.0: - if (random_uniform_result === 1.0) { - return random_uniform(); - } - return random_uniform_result; -} - -export function bit_array_slice(bits, position, length) { - const start = Math.min(position, position + length); - const end = Math.max(position, position + length); - if (start < 0 || end > bits.length) return new Error(Nil); - const buffer = new Uint8Array(bits.buffer.buffer, start, Math.abs(length)); - return new Ok(new BitArray(buffer)); -} - -export function codepoint(int) { - return new UtfCodepoint(int); -} - -export function string_to_codepoint_integer_list(string) { - return List.fromArray(Array.from(string).map((item) => item.codePointAt(0))); -} - -export function utf_codepoint_list_to_string(utf_codepoint_integer_list) { - return utf_codepoint_integer_list - .toArray() - .map((x) => String.fromCodePoint(x.value)) - .join(""); -} - -export function utf_codepoint_to_int(utf_codepoint) { - return utf_codepoint.value; -} - -export function regex_check(regex, string) { - regex.lastIndex = 0; - return regex.test(string); -} - -export function compile_regex(pattern, options) { - try { - let flags = "gu"; - if (options.case_insensitive) flags += "i"; - if (options.multi_line) flags += "m"; - return new Ok(new RegExp(pattern, flags)); - } catch (error) { - const number = (error.columnNumber || 0) | 0; - return new Error(new RegexCompileError(error.message, number)); - } -} - -export function regex_scan(regex, string) { - const matches = Array.from(string.matchAll(regex)).map((match) => { - const content = match[0]; - const submatches = []; - for (let n = match.length - 1; n > 0; n--) { - if (match[n]) { - submatches[n - 1] = new Some(match[n]); - continue; - } - if (submatches.length > 0) { - submatches[n - 1] = new None(); - } - } - return new RegexMatch(content, List.fromArray(submatches)); - }); - return List.fromArray(matches); -} - -export function new_map() { - return Dict.new(); -} - -export function map_size(map) { - return map.size; -} - -export function map_to_list(map) { - return List.fromArray(map.entries()); -} - -export function map_remove(key, map) { - return map.delete(key); -} - -export function map_get(map, key) { - const value = map.get(key, NOT_FOUND); - if (value === NOT_FOUND) { - return new Error(Nil); - } - return new Ok(value); -} - -export function map_insert(key, value, map) { - return map.set(key, value); -} - -function unsafe_percent_decode(string) { - return decodeURIComponent((string || "").replace("+", " ")); -} - -export function percent_decode(string) { - try { - return new Ok(unsafe_percent_decode(string)); - } catch (_error) { - return new Error(Nil); - } -} - -export function percent_encode(string) { - return encodeURIComponent(string); -} - -export function parse_query(query) { - try { - const pairs = []; - for (const section of query.split("&")) { - const [key, value] = section.split("="); - if (!key) continue; - pairs.push([unsafe_percent_decode(key), unsafe_percent_decode(value)]); - } - return new Ok(List.fromArray(pairs)); - } catch (_error) { - return new Error(Nil); - } -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -export function encode64(bit_array) { - const aBytes = bit_array.buffer; - let nMod3 = 2; - let sB64Enc = ""; - - for (let nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) { - nMod3 = nIdx % 3; - if (nIdx > 0 && ((nIdx * 4) / 3) % 76 === 0) { - sB64Enc += "\r\n"; - } - nUint24 |= aBytes[nIdx] << ((16 >>> nMod3) & 24); - if (nMod3 === 2 || aBytes.length - nIdx === 1) { - sB64Enc += String.fromCharCode( - uint6ToB64((nUint24 >>> 18) & 63), - uint6ToB64((nUint24 >>> 12) & 63), - uint6ToB64((nUint24 >>> 6) & 63), - uint6ToB64(nUint24 & 63) - ); - nUint24 = 0; - } - } - - return ( - sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + - (nMod3 === 2 ? "" : nMod3 === 1 ? "=" : "==") - ); -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -function uint6ToB64(nUint6) { - return nUint6 < 26 - ? nUint6 + 65 - : nUint6 < 52 - ? nUint6 + 71 - : nUint6 < 62 - ? nUint6 - 4 - : nUint6 === 62 - ? 43 - : nUint6 === 63 - ? 47 - : 65; -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -function b64ToUint6(nChr) { - return nChr > 64 && nChr < 91 - ? nChr - 65 - : nChr > 96 && nChr < 123 - ? nChr - 71 - : nChr > 47 && nChr < 58 - ? nChr + 4 - : nChr === 43 - ? 62 - : nChr === 47 - ? 63 - : 0; -} - -// From https://developer.mozilla.org/en-US/docs/Glossary/Base64#Solution_2_%E2%80%93_rewrite_the_DOMs_atob()_and_btoa()_using_JavaScript's_TypedArrays_and_UTF-8 -export function decode64(sBase64) { - if (sBase64.match(/[^A-Za-z0-9\+\/=]/g)) return new Error(Nil); - const sB64Enc = sBase64.replace(/=/g, ""); - const nInLen = sB64Enc.length; - const nOutLen = (nInLen * 3 + 1) >> 2; - const taBytes = new Uint8Array(nOutLen); - - for ( - let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; - nInIdx < nInLen; - nInIdx++ - ) { - nMod4 = nInIdx & 3; - nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << (6 * (3 - nMod4)); - if (nMod4 === 3 || nInLen - nInIdx === 1) { - for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) { - taBytes[nOutIdx] = (nUint24 >>> ((16 >>> nMod3) & 24)) & 255; - } - nUint24 = 0; - } - } - - return new Ok(new BitArray(taBytes)); -} - -export function classify_dynamic(data) { - if (typeof data === "string") { - return "String"; - } else if (data instanceof Result) { - return "Result"; - } else if (data instanceof List) { - return "List"; - } else if (data instanceof BitArray) { - return "BitArray"; - } else if (data instanceof Dict) { - return "Map"; - } else if (Number.isInteger(data)) { - return "Int"; - } else if (Array.isArray(data)) { - return `Tuple of ${data.length} elements`; - } else if (typeof data === "number") { - return "Float"; - } else if (data === null) { - return "Null"; - } else if (data === undefined) { - return "Nil"; - } else { - const type = typeof data; - return type.charAt(0).toUpperCase() + type.slice(1); - } -} - -function decoder_error(expected, got) { - return decoder_error_no_classify(expected, classify_dynamic(got)); -} - -function decoder_error_no_classify(expected, got) { - return new Error( - List.fromArray([new DecodeError(expected, got, List.fromArray([]))]) - ); -} - -export function decode_string(data) { - return typeof data === "string" - ? new Ok(data) - : decoder_error("String", data); -} - -export function decode_int(data) { - return Number.isInteger(data) ? new Ok(data) : decoder_error("Int", data); -} - -export function decode_float(data) { - return typeof data === "number" ? new Ok(data) : decoder_error("Float", data); -} - -export function decode_bool(data) { - return typeof data === "boolean" ? new Ok(data) : decoder_error("Bool", data); -} - -export function decode_bit_array(data) { - if (data instanceof BitArray) { - return new Ok(data); - } - if (data instanceof Uint8Array) { - return new Ok(new BitArray(data)); - } - return decoder_error("BitArray", data); -} - -export function decode_tuple(data) { - return Array.isArray(data) ? new Ok(data) : decoder_error("Tuple", data); -} - -export function decode_tuple2(data) { - return decode_tupleN(data, 2); -} - -export function decode_tuple3(data) { - return decode_tupleN(data, 3); -} - -export function decode_tuple4(data) { - return decode_tupleN(data, 4); -} - -export function decode_tuple5(data) { - return decode_tupleN(data, 5); -} - -export function decode_tuple6(data) { - return decode_tupleN(data, 6); -} - -function decode_tupleN(data, n) { - if (Array.isArray(data) && data.length == n) { - return new Ok(data); - } - - const list = decode_exact_length_list(data, n); - if (list) return new Ok(list); - - return decoder_error(`Tuple of ${n} elements`, data); -} - -function decode_exact_length_list(data, n) { - if (!(data instanceof List)) return; - - const elements = []; - let current = data; - - for (let i = 0; i < n; i++) { - if (!(current instanceof NonEmpty)) break; - elements.push(current.head); - current = current.tail; - } - - if (elements.length === n && !(current instanceof NonEmpty)) return elements; -} - -export function tuple_get(data, index) { - return index >= 0 && data.length > index - ? new Ok(data[index]) - : new Error(Nil); -} - -export function decode_list(data) { - if (Array.isArray(data)) { - return new Ok(List.fromArray(data)); - } - return data instanceof List ? new Ok(data) : decoder_error("List", data); -} - -export function decode_result(data) { - return data instanceof Result ? new Ok(data) : decoder_error("Result", data); -} - -export function decode_map(data) { - if (data instanceof Dict) { - return new Ok(Dict.fromMap(data)); - } - if (data == null) { - return decoder_error("Map", data); - } - if (typeof data !== "object") { - return decoder_error("Map", data); - } - const proto = Object.getPrototypeOf(data); - if (proto === Object.prototype || proto === null) { - return new Ok(Dict.fromObject(data)); - } - return decoder_error("Map", data); -} - -export function decode_option(data, decoder) { - if (data === null || data === undefined || data instanceof None) - return new Ok(new None()); - if (data instanceof Some) data = data[0]; - const result = decoder(data); - if (result.isOk()) { - return new Ok(new Some(result[0])); - } else { - return result; - } -} - -export function decode_field(value, name) { - const not_a_map_error = () => decoder_error("Map", value); - - if ( - value instanceof Dict || - value instanceof WeakMap || - value instanceof Map - ) { - const entry = map_get(value, name); - return new Ok(entry.isOk() ? new Some(entry[0]) : new None()); - } else if (Object.getPrototypeOf(value) == Object.prototype) { - return try_get_field(value, name, () => new Ok(new None())); - } else { - return try_get_field(value, name, not_a_map_error); - } -} - -function try_get_field(value, field, or_else) { - try { - return field in value ? new Ok(new Some(value[field])) : or_else(); - } catch { - return or_else(); - } -} - -export function byte_size(string) { - return new TextEncoder().encode(string).length; -} - -// In Javascript bitwise operations convert numbers to a sequence of 32 bits -// while Erlang uses arbitrary precision. -// To get around this problem and get consistent results use BigInt and then -// downcast the value back to a Number value. - -export function bitwise_and(x, y) { - return Number(BigInt(x) & BigInt(y)); -} - -export function bitwise_not(x) { - return Number(~BigInt(x)); -} - -export function bitwise_or(x, y) { - return Number(BigInt(x) | BigInt(y)); -} - -export function bitwise_exclusive_or(x, y) { - return Number(BigInt(x) ^ BigInt(y)); -} - -export function bitwise_shift_left(x, y) { - return Number(BigInt(x) << BigInt(y)); -} - -export function bitwise_shift_right(x, y) { - return Number(BigInt(x) >> BigInt(y)); -} - -export function inspect(v) { - const t = typeof v; - if (v === true) return "True"; - if (v === false) return "False"; - if (v === null) return "//js(null)"; - if (v === undefined) return "Nil"; - if (t === "string") return JSON.stringify(v); - if (t === "bigint" || t === "number") return v.toString(); - if (Array.isArray(v)) return `#(${v.map(inspect).join(", ")})`; - if (v instanceof List) return inspectList(v); - if (v instanceof UtfCodepoint) return inspectUtfCodepoint(v); - if (v instanceof BitArray) return inspectBitArray(v); - if (v instanceof CustomType) return inspectCustomType(v); - if (v instanceof Dict) return inspectDict(v); - if (v instanceof Set) return `//js(Set(${[...v].map(inspect).join(", ")}))`; - if (v instanceof RegExp) return `//js(${v})`; - if (v instanceof Date) return `//js(Date("${v.toISOString()}"))`; - if (v instanceof Function) { - const args = []; - for (const i of Array(v.length).keys()) - args.push(String.fromCharCode(i + 97)); - return `//fn(${args.join(", ")}) { ... }`; - } - return inspectObject(v); -} - -function inspectDict(map) { - let body = "dict.from_list(["; - let first = true; - map.forEach((value, key) => { - if (!first) body = body + ", "; - body = body + "#(" + inspect(key) + ", " + inspect(value) + ")"; - first = false; - }); - return body + "])"; -} - -function inspectObject(v) { - const name = Object.getPrototypeOf(v)?.constructor?.name || "Object"; - const props = []; - for (const k of Object.keys(v)) { - props.push(`${inspect(k)}: ${inspect(v[k])}`); - } - const body = props.length ? " " + props.join(", ") + " " : ""; - const head = name === "Object" ? "" : name + " "; - return `//js(${head}{${body}})`; -} - -function inspectCustomType(record) { - const props = Object.keys(record) - .map((label) => { - const value = inspect(record[label]); - return isNaN(parseInt(label)) ? `${label}: ${value}` : value; - }) - .join(", "); - return props - ? `${record.constructor.name}(${props})` - : record.constructor.name; -} - -export function inspectList(list) { - return `[${list.toArray().map(inspect).join(", ")}]`; -} - -export function inspectBitArray(bits) { - return `<<${Array.from(bits.buffer).join(", ")}>>`; -} - -export function inspectUtfCodepoint(codepoint) { - return `//utfcodepoint(${String.fromCodePoint(codepoint.value)})`; -} - -export function base16_encode(bit_array) { - let result = ""; - for (const byte of bit_array.buffer) { - result += byte.toString(16).padStart(2, "0").toUpperCase(); - } - return result; -} - -export function base16_decode(string) { - const bytes = new Uint8Array(string.length / 2); - for (let i = 0; i < string.length; i += 2) { - const a = parseInt(string[i], 16); - const b = parseInt(string[i + 1], 16); - if (isNaN(a) || isNaN(b)) return new Error(Nil); - bytes[i / 2] = a * 16 + b; - } - return new Ok(new BitArray(bytes)); -} diff --git a/aoc2023/build/packages/glint/LICENSE b/aoc2023/build/packages/glint/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/aoc2023/build/packages/glint/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/aoc2023/build/packages/glint/README.md b/aoc2023/build/packages/glint/README.md deleted file mode 100644 index d6d5821..0000000 --- a/aoc2023/build/packages/glint/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# glint - -[![Hex Package](https://img.shields.io/hexpm/v/glint?color=ffaff3&label=%F0%9F%93%A6)](https://hex.pm/packages/glint) -[![Hex.pm](https://img.shields.io/hexpm/dt/glint?color=ffaff3)](https://hex.pm/packages/glint) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3?label=%F0%9F%93%9A)](https://hexdocs.pm/glint/) -[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/tanklesxl/glint/main)](https://github.com/tanklesxl/glint/actions) - -Gleam command line argument parsing with basic flag support. - -## Installation - -To install from hex: - -```sh -gleam add glint -``` - -## Usage - -### Glint's Core - -`glint` is conceptually quite small, your general flow will be: - -1. create a new glint instance with `glint.new` -1. configure it with `glint.with_pretty_help` and other configuration functions -1. add commands with `glint.add` - 1. create a new command with `glint.cmd` - 1. assign that command any flags required - 1. assign the command a custom description -1. run your cli with `glnt.run`, run with a function to handle command output with `glint.run_and_handle` - -### Mini Example - -You can import `glint` as a dependency and use it to build simple command-line applications like the following simplified version of the [the hello world example](https://github.com/TanklesXL/glint/tree/main/examples/hello/README.md) - -```gleam -// stdlib imports -import gleam/io -import gleam/list -import gleam/result -import gleam/string.{uppercase} -// external dep imports -import snag -// glint imports -import glint -import glint/flag -// erlang-specific imports - -@target(erlang) -import gleam/erlang.{start_arguments} - -/// the key for the caps flag -const caps = "caps" - -/// a boolean flag with default False to control message capitalization. -/// -fn caps_flag() -> flag.FlagBuilder(Bool) { - flag.bool() - |> flag.default(False) - |> flag.description("Capitalize the provided name") -} - -/// the command function that will be executed -/// -fn hello(input: glint.CommandInput) -> Nil { - let assert Ok(caps) = flag.get_bool(from: input.flags, for: caps) - - let name = - case input.args { - [] -> "Joe" - [name,..] -> name - } - - let msg = "Hello, " <> name <> "!" - - - case caps { - True -> uppercase(msg) - False -> msg - } - |> io.println -} - -pub fn main() { - // create a new glint instance - glint.new() - // with an app name of "hello", this is used when printing help text - |> glint.with_name("hello") - // with pretty help enabled, using the built-in colours - |> glint.with_pretty_help(glint.default_pretty_help()) - // with a root command that executes the `hello` function - |> glint.add( - // add the command to the root - at: [], - // create the command, add any flags - do: glint.command(hello) - // with flag `caps` - |> glint.flag(caps, caps_flag()) - // with a short description - |> glint.description("Prints Hello, !"), - ) - |> glint.run(start_arguments()) -} -``` diff --git a/aoc2023/build/packages/glint/gleam.toml b/aoc2023/build/packages/glint/gleam.toml deleted file mode 100644 index e8ac4ae..0000000 --- a/aoc2023/build/packages/glint/gleam.toml +++ /dev/null @@ -1,23 +0,0 @@ -name = "glint" -version = "0.13.0" - -# Fill out these fields if you intend to generate HTML documentation or publishname = "glint" -# your project to the Hex package manager. -# -licences = ["Apache-2.0"] -description = "Gleam command line argument parsing with basic flag support." -repository = { type = "github", user = "TanklesXL", repo = "glint" } -links = [ - { title = "Hex", href = "https://hex.pm/packages/glint" }, - { title = "Docs", href = "https://hexdocs.pm/glint/" }, -] -gleam = ">= 0.32.0" - -[dependencies] -gleam_stdlib = "~> 0.19" -snag = "~> 0.2" -gleam_community_ansi = "~> 1.0" -gleam_community_colour = "~> 1.0" - -[dev-dependencies] -gleeunit = "~> 0.5" diff --git a/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl b/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl deleted file mode 100644 index 645cb12..0000000 --- a/aoc2023/build/packages/glint/include/glint@flag_Flag.hrl +++ /dev/null @@ -1 +0,0 @@ --record(flag, {value :: glint@flag:value(), description :: binary()}). diff --git a/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl b/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl deleted file mode 100644 index b5e21a2..0000000 --- a/aoc2023/build/packages/glint/include/glint@flag_FlagBuilder.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(flag_builder, { - desc :: binary(), - parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}), - value :: fun((glint@flag:internal(any())) -> glint@flag:value()), - default :: gleam@option:option(any()) -}). diff --git a/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl b/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl deleted file mode 100644 index 281bbd0..0000000 --- a/aoc2023/build/packages/glint/include/glint@flag_Internal.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(internal, { - value :: gleam@option:option(any()), - parser :: fun((binary()) -> {ok, any()} | {error, snag:snag()}) -}). diff --git a/aoc2023/build/packages/glint/include/glint_Command.hrl b/aoc2023/build/packages/glint/include/glint_Command.hrl deleted file mode 100644 index 00a03e3..0000000 --- a/aoc2023/build/packages/glint/include/glint_Command.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(command, { - do :: fun((glint:command_input()) -> any()), - flags :: gleam@map:map_(binary(), glint@flag:flag()), - description :: binary() -}). diff --git a/aoc2023/build/packages/glint/include/glint_CommandInput.hrl b/aoc2023/build/packages/glint/include/glint_CommandInput.hrl deleted file mode 100644 index 72c9641..0000000 --- a/aoc2023/build/packages/glint/include/glint_CommandInput.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(command_input, { - args :: list(binary()), - flags :: gleam@map:map_(binary(), glint@flag:flag()) -}). diff --git a/aoc2023/build/packages/glint/include/glint_Config.hrl b/aoc2023/build/packages/glint/include/glint_Config.hrl deleted file mode 100644 index 70cf645..0000000 --- a/aoc2023/build/packages/glint/include/glint_Config.hrl +++ /dev/null @@ -1,4 +0,0 @@ --record(config, { - pretty_help :: gleam@option:option(glint:pretty_help()), - name :: gleam@option:option(binary()) -}). diff --git a/aoc2023/build/packages/glint/include/glint_Glint.hrl b/aoc2023/build/packages/glint/include/glint_Glint.hrl deleted file mode 100644 index 7ece11d..0000000 --- a/aoc2023/build/packages/glint/include/glint_Glint.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(glint, { - config :: glint:config(), - cmd :: glint:command_node(any()), - global_flags :: gleam@map:map_(binary(), glint@flag:flag()) -}). diff --git a/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl b/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl deleted file mode 100644 index 79bd887..0000000 --- a/aoc2023/build/packages/glint/include/glint_PrettyHelp.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(pretty_help, { - usage :: gleam_community@colour:colour(), - flags :: gleam_community@colour:colour(), - subcommands :: gleam_community@colour:colour() -}). diff --git a/aoc2023/build/packages/glint/include/glint_Stub.hrl b/aoc2023/build/packages/glint/include/glint_Stub.hrl deleted file mode 100644 index 5aa5d83..0000000 --- a/aoc2023/build/packages/glint/include/glint_Stub.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(stub, { - path :: list(binary()), - run :: fun((glint:command_input()) -> any()), - flags :: list({binary(), glint@flag:flag()}), - description :: binary() -}). diff --git a/aoc2023/build/packages/glint/src/glint.app.src b/aoc2023/build/packages/glint/src/glint.app.src deleted file mode 100644 index 7eb7649..0000000 --- a/aoc2023/build/packages/glint/src/glint.app.src +++ /dev/null @@ -1,13 +0,0 @@ -{application, glint, [ - {vsn, "0.13.0"}, - {applications, [gleam_community_ansi, - gleam_community_colour, - gleam_stdlib, - gleeunit, - snag]}, - {description, "Gleam command line argument parsing with basic flag support."}, - {modules, [glint, - glint@flag, - glint@flag@constraint]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/glint/src/glint.erl b/aoc2023/build/packages/glint/src/glint.erl deleted file mode 100644 index 0501cc6..0000000 --- a/aoc2023/build/packages/glint/src/glint.erl +++ /dev/null @@ -1,513 +0,0 @@ --module(glint). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([with_config/2, with_pretty_help/2, without_pretty_help/1, with_name/2, new/0, command/1, description/2, flag/3, flag_tuple/2, flags/2, global_flag/3, global_flag_tuple/2, global_flags/2, default_pretty_help/0, add/3, help_flag/0, execute/2, run_and_handle/3, run/2, add_command_from_stub/2]). --export_type([config/0, pretty_help/0, glint/1, command/1, command_input/0, command_node/1, out/1, stub/1]). - --type config() :: {config, - gleam@option:option(pretty_help()), - gleam@option:option(binary())}. - --type pretty_help() :: {pretty_help, - gleam_community@colour:colour(), - gleam_community@colour:colour(), - gleam_community@colour:colour()}. - --opaque glint(GHR) :: {glint, - config(), - command_node(GHR), - gleam@map:map_(binary(), glint@flag:flag())}. - --opaque command(GHS) :: {command, - fun((command_input()) -> GHS), - gleam@map:map_(binary(), glint@flag:flag()), - binary()}. - --type command_input() :: {command_input, - list(binary()), - gleam@map:map_(binary(), glint@flag:flag())}. - --type command_node(GHT) :: {command_node, - gleam@option:option(command(GHT)), - gleam@map:map_(binary(), command_node(GHT))}. - --type out(GHU) :: {out, GHU} | {help, binary()}. - --type stub(GHV) :: {stub, - list(binary()), - fun((command_input()) -> GHV), - list({binary(), glint@flag:flag()}), - binary()}. - --spec with_config(glint(GIA), config()) -> glint(GIA). -with_config(Glint, Config) -> - erlang:setelement(2, Glint, Config). - --spec with_pretty_help(glint(GID), pretty_help()) -> glint(GID). -with_pretty_help(Glint, Pretty) -> - _pipe = erlang:setelement(2, erlang:element(2, Glint), {some, Pretty}), - with_config(Glint, _pipe). - --spec without_pretty_help(glint(GIG)) -> glint(GIG). -without_pretty_help(Glint) -> - _pipe = erlang:setelement(2, erlang:element(2, Glint), none), - with_config(Glint, _pipe). - --spec with_name(glint(GIJ), binary()) -> glint(GIJ). -with_name(Glint, Name) -> - _pipe = erlang:setelement(3, erlang:element(2, Glint), {some, Name}), - with_config(Glint, _pipe). - --spec empty_command() -> command_node(any()). -empty_command() -> - {command_node, none, gleam@map:new()}. - --spec new() -> glint(any()). -new() -> - {glint, {config, none, none}, empty_command(), gleam@map:new()}. - --spec do_add(command_node(GIT), list(binary()), command(GIT)) -> command_node(GIT). -do_add(Root, Path, Contents) -> - case Path of - [] -> - erlang:setelement(2, Root, {some, Contents}); - - [X | Xs] -> - erlang:setelement( - 3, - Root, - (gleam@map:update( - erlang:element(3, Root), - X, - fun(Node) -> _pipe = Node, - _pipe@1 = gleam@option:lazy_unwrap( - _pipe, - fun empty_command/0 - ), - do_add(_pipe@1, Xs, Contents) end - )) - ) - end. - --spec command(fun((command_input()) -> GJC)) -> command(GJC). -command(Runner) -> - {command, Runner, gleam@map:new(), <<""/utf8>>}. - --spec description(command(GJF), binary()) -> command(GJF). -description(Cmd, Description) -> - erlang:setelement(4, Cmd, Description). - --spec flag(command(GJI), binary(), glint@flag:flag_builder(any())) -> command(GJI). -flag(Cmd, Key, Flag) -> - erlang:setelement( - 3, - Cmd, - gleam@map:insert(erlang:element(3, Cmd), Key, glint@flag:build(Flag)) - ). - --spec flag_tuple(command(GJN), {binary(), glint@flag:flag_builder(any())}) -> command(GJN). -flag_tuple(Cmd, Tup) -> - flag(Cmd, erlang:element(1, Tup), erlang:element(2, Tup)). - --spec flags(command(GJS), list({binary(), glint@flag:flag()})) -> command(GJS). -flags(Cmd, Flags) -> - gleam@list:fold( - Flags, - Cmd, - fun(Cmd@1, _use1) -> - {Key, Flag} = _use1, - erlang:setelement( - 3, - Cmd@1, - gleam@map:insert(erlang:element(3, Cmd@1), Key, Flag) - ) - end - ). - --spec global_flag(glint(GJW), binary(), glint@flag:flag_builder(any())) -> glint(GJW). -global_flag(Glint, Key, Flag) -> - erlang:setelement( - 4, - Glint, - gleam@map:insert(erlang:element(4, Glint), Key, glint@flag:build(Flag)) - ). - --spec global_flag_tuple(glint(GKB), {binary(), glint@flag:flag_builder(any())}) -> glint(GKB). -global_flag_tuple(Glint, Tup) -> - global_flag(Glint, erlang:element(1, Tup), erlang:element(2, Tup)). - --spec global_flags(glint(GKG), list({binary(), glint@flag:flag()})) -> glint(GKG). -global_flags(Glint, Flags) -> - erlang:setelement( - 4, - Glint, - (gleam@list:fold( - Flags, - erlang:element(4, Glint), - fun(Acc, Tup) -> - gleam@map:insert( - Acc, - erlang:element(1, Tup), - erlang:element(2, Tup) - ) - end - )) - ). - --spec execute_root( - command_node(GKU), - gleam@map:map_(binary(), glint@flag:flag()), - list(binary()), - list(binary()) -) -> {ok, out(GKU)} | {error, snag:snag()}. -execute_root(Cmd, Global_flags, Args, Flag_inputs) -> - _pipe@3 = case erlang:element(2, Cmd) of - {some, Contents} -> - gleam@result:'try'( - gleam@list:try_fold( - Flag_inputs, - gleam@map:merge(Global_flags, erlang:element(3, Contents)), - fun glint@flag:update_flags/2 - ), - fun(New_flags) -> _pipe = {command_input, Args, New_flags}, - _pipe@1 = (erlang:element(2, Contents))(_pipe), - _pipe@2 = {out, _pipe@1}, - {ok, _pipe@2} end - ); - - none -> - snag:error(<<"command not found"/utf8>>) - end, - snag:context(_pipe@3, <<"failed to run command"/utf8>>). - --spec default_pretty_help() -> pretty_help(). -default_pretty_help() -> - _assert_subject = gleam_community@colour:from_rgb255(182, 255, 234), - {ok, Usage_colour} = case _assert_subject of - {ok, _} -> _assert_subject; - _assert_fail -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 404}) - end, - _assert_subject@1 = gleam_community@colour:from_rgb255(255, 175, 243), - {ok, Flags_colour} = case _assert_subject@1 of - {ok, _} -> _assert_subject@1; - _assert_fail@1 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@1, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 405}) - end, - _assert_subject@2 = gleam_community@colour:from_rgb255(252, 226, 174), - {ok, Subcommands_colour} = case _assert_subject@2 of - {ok, _} -> _assert_subject@2; - _assert_fail@2 -> - erlang:error(#{gleam_error => let_assert, - message => <<"Assertion pattern match failed"/utf8>>, - value => _assert_fail@2, - module => <<"glint"/utf8>>, - function => <<"default_pretty_help"/utf8>>, - line => 406}) - end, - {pretty_help, Usage_colour, Flags_colour, Subcommands_colour}. - --spec is_not_empty(binary()) -> boolean(). -is_not_empty(S) -> - S /= <<""/utf8>>. - --spec sanitize_path(list(binary())) -> list(binary()). -sanitize_path(Path) -> - _pipe = Path, - _pipe@1 = gleam@list:map(_pipe, fun gleam@string:trim/1), - gleam@list:filter(_pipe@1, fun is_not_empty/1). - --spec add(glint(GIO), list(binary()), command(GIO)) -> glint(GIO). -add(Glint, Path, Contents) -> - erlang:setelement( - 3, - Glint, - begin - _pipe = Path, - _pipe@1 = sanitize_path(_pipe), - do_add(erlang:element(3, Glint), _pipe@1, Contents) - end - ). - --spec help_flag() -> binary(). -help_flag() -> - <<(<<"--"/utf8>>)/binary, "help"/utf8>>. - --spec wrap_with_space(binary()) -> binary(). -wrap_with_space(S) -> - case S of - <<""/utf8>> -> - <<" "/utf8>>; - - _ -> - <<<<" "/utf8, S/binary>>/binary, " "/utf8>> - end. - --spec subcommand_help(binary(), command_node(any())) -> binary(). -subcommand_help(Name, Cmd) -> - case erlang:element(2, Cmd) of - none -> - Name; - - {some, Contents} -> - <<<>/binary, - (erlang:element(4, Contents))/binary>> - end. - --spec subcommands_help(gleam@map:map_(binary(), command_node(any()))) -> binary(). -subcommands_help(Cmds) -> - _pipe = Cmds, - _pipe@1 = gleam@map:map_values(_pipe, fun subcommand_help/2), - _pipe@2 = gleam@map:values(_pipe@1), - _pipe@3 = gleam@list:sort(_pipe@2, fun gleam@string:compare/2), - gleam@string:join(_pipe@3, <<"\n\t"/utf8>>). - --spec heading_style(binary(), gleam_community@colour:colour()) -> binary(). -heading_style(Heading, Colour) -> - _pipe = Heading, - _pipe@1 = gleam_community@ansi:bold(_pipe), - _pipe@2 = gleam_community@ansi:underline(_pipe@1), - _pipe@3 = gleam_community@ansi:italic(_pipe@2), - _pipe@4 = gleam_community@ansi:hex( - _pipe@3, - gleam_community@colour:to_rgb_hex(Colour) - ), - gleam_community@ansi:reset(_pipe@4). - --spec usage_help( - binary(), - gleam@map:map_(binary(), glint@flag:flag()), - config() -) -> binary(). -usage_help(Cmd_name, Flags, Config) -> - App_name = gleam@option:unwrap( - erlang:element(3, Config), - <<"gleam run"/utf8>> - ), - Flags@1 = begin - _pipe = Flags, - _pipe@1 = gleam@map:to_list(_pipe), - _pipe@2 = gleam@list:map(_pipe@1, fun glint@flag:flag_type_help/1), - gleam@list:sort(_pipe@2, fun gleam@string:compare/2) - end, - Flag_sb = case Flags@1 of - [] -> - gleam@string_builder:new(); - - _ -> - _pipe@3 = Flags@1, - _pipe@4 = gleam@list:intersperse(_pipe@3, <<" "/utf8>>), - _pipe@5 = gleam@string_builder:from_strings(_pipe@4), - _pipe@6 = gleam@string_builder:prepend(_pipe@5, <<" [ "/utf8>>), - gleam@string_builder:append(_pipe@6, <<" ]"/utf8>>) - end, - _pipe@7 = [App_name, wrap_with_space(Cmd_name), <<"[ ARGS ]"/utf8>>], - _pipe@8 = gleam@string_builder:from_strings(_pipe@7), - _pipe@9 = gleam@string_builder:append_builder(_pipe@8, Flag_sb), - _pipe@12 = gleam@string_builder:prepend( - _pipe@9, - <<(begin - _pipe@10 = erlang:element(2, Config), - _pipe@11 = gleam@option:map( - _pipe@10, - fun(Styling) -> - heading_style( - <<"USAGE:"/utf8>>, - erlang:element(2, Styling) - ) - end - ), - gleam@option:unwrap(_pipe@11, <<"USAGE:"/utf8>>) - end)/binary, - "\n\t"/utf8>> - ), - gleam@string_builder:to_string(_pipe@12). - --spec cmd_help( - list(binary()), - command_node(any()), - config(), - gleam@map:map_(binary(), glint@flag:flag()) -) -> binary(). -cmd_help(Path, Cmd, Config, Global_flags) -> - Name = begin - _pipe = Path, - _pipe@1 = gleam@list:reverse(_pipe), - gleam@string:join(_pipe@1, <<" "/utf8>>) - end, - Flags = begin - _pipe@2 = gleam@option:map( - erlang:element(2, Cmd), - fun(Contents) -> erlang:element(3, Contents) end - ), - _pipe@3 = gleam@option:lazy_unwrap(_pipe@2, fun gleam@map:new/0), - gleam@map:merge(Global_flags, _pipe@3) - end, - Flags_help_body = <<<<(begin - _pipe@4 = erlang:element(2, Config), - _pipe@5 = gleam@option:map( - _pipe@4, - fun(P) -> - heading_style(<<"FLAGS:"/utf8>>, erlang:element(3, P)) - end - ), - gleam@option:unwrap(_pipe@5, <<"FLAGS:"/utf8>>) - end)/binary, - "\n\t"/utf8>>/binary, - (gleam@string:join( - gleam@list:sort( - [<<"--help\t\t\tPrint help information"/utf8>> | - glint@flag:flags_help(Flags)], - fun gleam@string:compare/2 - ), - <<"\n\t"/utf8>> - ))/binary>>, - Usage = usage_help(Name, Flags, Config), - Description = begin - _pipe@6 = erlang:element(2, Cmd), - _pipe@7 = gleam@option:map( - _pipe@6, - fun(Contents@1) -> erlang:element(4, Contents@1) end - ), - gleam@option:unwrap(_pipe@7, <<""/utf8>>) - end, - Header_items = begin - _pipe@8 = [Name, Description], - _pipe@9 = gleam@list:filter(_pipe@8, fun is_not_empty/1), - gleam@string:join(_pipe@9, <<"\n"/utf8>>) - end, - Subcommands = case subcommands_help(erlang:element(3, Cmd)) of - <<""/utf8>> -> - <<""/utf8>>; - - Subcommands_help_body -> - <<<<(begin - _pipe@10 = erlang:element(2, Config), - _pipe@11 = gleam@option:map( - _pipe@10, - fun(P@1) -> - heading_style( - <<"SUBCOMMANDS:"/utf8>>, - erlang:element(4, P@1) - ) - end - ), - gleam@option:unwrap(_pipe@11, <<"SUBCOMMANDS:"/utf8>>) - end)/binary, - "\n\t"/utf8>>/binary, - Subcommands_help_body/binary>> - end, - _pipe@12 = [Header_items, Usage, Flags_help_body, Subcommands], - _pipe@13 = gleam@list:filter(_pipe@12, fun is_not_empty/1), - gleam@string:join(_pipe@13, <<"\n\n"/utf8>>). - --spec do_execute( - command_node(GKO), - config(), - gleam@map:map_(binary(), glint@flag:flag()), - list(binary()), - list(binary()), - boolean(), - list(binary()) -) -> {ok, out(GKO)} | {error, snag:snag()}. -do_execute(Cmd, Config, Global_flags, Args, Flags, Help, Command_path) -> - case Args of - [] when Help -> - _pipe = Command_path, - _pipe@1 = cmd_help(_pipe, Cmd, Config, Global_flags), - _pipe@2 = {help, _pipe@1}, - {ok, _pipe@2}; - - [] -> - execute_root(Cmd, Global_flags, [], Flags); - - [Arg | Rest] -> - case gleam@map:get(erlang:element(3, Cmd), Arg) of - {ok, Cmd@1} -> - do_execute( - Cmd@1, - Config, - Global_flags, - Rest, - Flags, - Help, - [Arg | Command_path] - ); - - _ when Help -> - _pipe@3 = Command_path, - _pipe@4 = cmd_help(_pipe@3, Cmd, Config, Global_flags), - _pipe@5 = {help, _pipe@4}, - {ok, _pipe@5}; - - _ -> - execute_root(Cmd, Global_flags, Args, Flags) - end - end. - --spec execute(glint(GKK), list(binary())) -> {ok, out(GKK)} | - {error, snag:snag()}. -execute(Glint, Args) -> - Help_flag = help_flag(), - {Help, Args@2} = case gleam@list:pop(Args, fun(S) -> S =:= Help_flag end) of - {ok, {_, Args@1}} -> - {true, Args@1}; - - _ -> - {false, Args} - end, - {Flags, Args@3} = gleam@list:partition( - Args@2, - fun(_capture) -> gleam@string:starts_with(_capture, <<"--"/utf8>>) end - ), - do_execute( - erlang:element(3, Glint), - erlang:element(2, Glint), - erlang:element(4, Glint), - Args@3, - Flags, - Help, - [] - ). - --spec run_and_handle(glint(GLC), list(binary()), fun((GLC) -> any())) -> nil. -run_and_handle(Glint, Args, Handle) -> - case execute(Glint, Args) of - {error, Err} -> - _pipe = Err, - _pipe@1 = snag:pretty_print(_pipe), - gleam@io:println(_pipe@1); - - {ok, {help, Help}} -> - gleam@io:println(Help); - - {ok, {out, Out}} -> - Handle(Out), - nil - end. - --spec run(glint(any()), list(binary())) -> nil. -run(Glint, Args) -> - run_and_handle(Glint, Args, gleam@function:constant(nil)). - --spec add_command_from_stub(glint(GLP), stub(GLP)) -> glint(GLP). -add_command_from_stub(Glint, Stub) -> - add( - Glint, - erlang:element(2, Stub), - begin - _pipe = command(erlang:element(3, Stub)), - _pipe@1 = flags(_pipe, erlang:element(4, Stub)), - description(_pipe@1, erlang:element(5, Stub)) - end - ). diff --git a/aoc2023/build/packages/glint/src/glint.gleam b/aoc2023/build/packages/glint/src/glint.gleam deleted file mode 100644 index b159016..0000000 --- a/aoc2023/build/packages/glint/src/glint.gleam +++ /dev/null @@ -1,588 +0,0 @@ -import gleam/map.{type Map} -import gleam/option.{type Option, None, Some} -import gleam/list -import gleam/io -import gleam/string -import snag.{type Result} -import glint/flag.{type Flag, type Map as FlagMap} -import gleam/string_builder as sb -import gleam_community/ansi -import gleam_community/colour.{type Colour} -import gleam/result -import gleam/function - -// --- CONFIGURATION --- - -// -- CONFIGURATION: TYPES -- - -/// Config for glint -/// -pub type Config { - Config(pretty_help: Option(PrettyHelp), name: Option(String)) -} - -/// PrettyHelp defines the header colours to be used when styling help text -/// -pub type PrettyHelp { - PrettyHelp(usage: Colour, flags: Colour, subcommands: Colour) -} - -// -- CONFIGURATION: CONSTANTS -- - -/// Default config -/// -pub const default_config = Config(pretty_help: None, name: None) - -// -- CONFIGURATION: FUNCTIONS -- - -/// Add the provided config to the existing command tree -/// -pub fn with_config(glint: Glint(a), config: Config) -> Glint(a) { - Glint(..glint, config: config) -} - -/// Enable custom colours for help text headers -/// For a pre-made colouring use `default_pretty_help()` -/// -pub fn with_pretty_help(glint: Glint(a), pretty: PrettyHelp) -> Glint(a) { - Config(..glint.config, pretty_help: Some(pretty)) - |> with_config(glint, _) -} - -/// Disable custom colours for help text headers -/// -pub fn without_pretty_help(glint: Glint(a)) -> Glint(a) { - Config(..glint.config, pretty_help: None) - |> with_config(glint, _) -} - -pub fn with_name(glint: Glint(a), name: String) -> Glint(a) { - Config(..glint.config, name: Some(name)) - |> with_config(glint, _) -} - -// --- CORE --- - -// -- CORE: TYPES -- - -/// Glint container type for config and commands -/// -pub opaque type Glint(a) { - Glint(config: Config, cmd: CommandNode(a), global_flags: FlagMap) -} - -/// CommandNode contents -/// -pub opaque type Command(a) { - Command(do: Runner(a), flags: FlagMap, description: String) -} - -/// Input type for `Runner`. -/// -pub type CommandInput { - CommandInput(args: List(String), flags: FlagMap) -} - -/// Function type to be run by `glint`. -/// -pub type Runner(a) = - fn(CommandInput) -> a - -/// CommandNode tree representation. -/// -type CommandNode(a) { - CommandNode( - contents: Option(Command(a)), - subcommands: Map(String, CommandNode(a)), - ) -} - -/// Ok type for command execution -/// -pub type Out(a) { - /// Container for the command return value - Out(a) - /// Container for the generated help string - Help(String) -} - -/// Result type for command execution -/// -pub type CmdResult(a) = - Result(Out(a)) - -// -- CORE: BUILDER FUNCTIONS -- - -/// Creates a new command tree. -/// -pub fn new() -> Glint(a) { - Glint(config: default_config, cmd: empty_command(), global_flags: map.new()) -} - -/// Adds a new command to be run at the specified path. -/// -/// If the path is `[]`, the root command is set with the provided function and -/// flags. -/// -/// Note: all command paths are sanitized by stripping whitespace and removing any empty string elements. -/// -pub fn add( - to glint: Glint(a), - at path: List(String), - do contents: Command(a), -) -> Glint(a) { - Glint( - ..glint, - cmd: path - |> sanitize_path - |> do_add(to: glint.cmd, put: contents), - ) -} - -/// Recursive traversal of the command tree to find where to puth the provided command -/// -fn do_add( - to root: CommandNode(a), - at path: List(String), - put contents: Command(a), -) -> CommandNode(a) { - case path { - // update current command with provided contents - [] -> CommandNode(..root, contents: Some(contents)) - // continue down the path, creating empty command nodes along the way - [x, ..xs] -> - CommandNode( - ..root, - subcommands: { - use node <- map.update(root.subcommands, x) - node - |> option.lazy_unwrap(empty_command) - |> do_add(xs, contents) - }, - ) - } -} - -/// Helper for initializing empty commands -/// -fn empty_command() -> CommandNode(a) { - CommandNode(contents: None, subcommands: map.new()) -} - -/// Trim each path element and remove any resulting empty strings. -/// -fn sanitize_path(path: List(String)) -> List(String) { - path - |> list.map(string.trim) - |> list.filter(is_not_empty) -} - -/// Create a Command(a) from a Runner(a) -/// -pub fn command(do runner: Runner(a)) -> Command(a) { - Command(do: runner, flags: map.new(), description: "") -} - -/// Attach a description to a Command(a) -/// -pub fn description(cmd: Command(a), description: String) -> Command(a) { - Command(..cmd, description: description) -} - -/// add a `flag.Flag` to a `Command` -/// -pub fn flag( - cmd: Command(a), - at key: String, - of flag: flag.FlagBuilder(_), -) -> Command(a) { - Command(..cmd, flags: map.insert(cmd.flags, key, flag.build(flag))) -} - -/// Add a `flag.Flag to a `Command` when the flag name and builder are bundled as a #(String, flag.FlagBuilder(a)). -/// -/// This is merely a convenience function and calls `glint.flag` under the hood. -/// -pub fn flag_tuple( - cmd: Command(a), - with tup: #(String, flag.FlagBuilder(_)), -) -> Command(a) { - flag(cmd, tup.0, tup.1) -} - -/// Add multiple `Flag`s to a `Command`, note that this function uses `Flag` and not `FlagBuilder(_)`, so the user will need to call `flag.build` before providing the flags here. -/// -/// It is recommended to call `glint.flag` instead. -/// -pub fn flags(cmd: Command(a), with flags: List(#(String, Flag))) -> Command(a) { - use cmd, #(key, flag) <- list.fold(flags, cmd) - Command(..cmd, flags: map.insert(cmd.flags, key, flag)) -} - -/// Add global flags to the existing command tree -/// -pub fn global_flag( - glint: Glint(a), - at key: String, - of flag: flag.FlagBuilder(_), -) -> Glint(a) { - Glint( - ..glint, - global_flags: map.insert(glint.global_flags, key, flag.build(flag)), - ) -} - -/// Add global flags to the existing command tree. -/// -pub fn global_flag_tuple( - glint: Glint(a), - with tup: #(String, flag.FlagBuilder(_)), -) -> Glint(a) { - global_flag(glint, tup.0, tup.1) -} - -/// Add global flags to the existing command tree. -/// -/// Like `glint.flags`, this function requires `Flag`s insead of `FlagBuilder(_)`. -/// -/// It is recommended to use `glint.global_flag` instead. -/// -pub fn global_flags(glint: Glint(a), flags: List(#(String, Flag))) -> Glint(a) { - Glint( - ..glint, - global_flags: { - list.fold( - flags, - glint.global_flags, - fn(acc, tup) { map.insert(acc, tup.0, tup.1) }, - ) - }, - ) -} - -// -- CORE: EXECUTION FUNCTIONS -- - -/// Determines which command to run and executes it. -/// -/// Sets any provided flags if necessary. -/// -/// Each value prefixed with `--` is parsed as a flag. -/// -/// This function does not print its output and is mainly intended for use within `glint` itself. -/// If you would like to print or handle the output of a command please see the `run_and_handle` function. -/// -pub fn execute(glint: Glint(a), args: List(String)) -> CmdResult(a) { - // create help flag to check for - let help_flag = help_flag() - - // check if help flag is present - let #(help, args) = case list.pop(args, fn(s) { s == help_flag }) { - Ok(#(_, args)) -> #(True, args) - _ -> #(False, args) - } - - // split flags out from the args list - let #(flags, args) = list.partition(args, string.starts_with(_, flag.prefix)) - - // search for command and execute - do_execute(glint.cmd, glint.config, glint.global_flags, args, flags, help, []) -} - -/// Find which command to execute and run it with computed flags and args -/// -fn do_execute( - cmd: CommandNode(a), - config: Config, - global_flags: FlagMap, - args: List(String), - flags: List(String), - help: Bool, - command_path: List(String), -) -> CmdResult(a) { - case args { - // when there are no more available arguments - // and help flag has been passed, generate help message - [] if help -> - command_path - |> cmd_help(cmd, config, global_flags) - |> Help - |> Ok - - // when there are no more available arguments - // run the current command - [] -> execute_root(cmd, global_flags, [], flags) - - // when there are arguments remaining - // check if the next one is a subcommand of the current command - [arg, ..rest] -> - case map.get(cmd.subcommands, arg) { - // subcommand found, continue - Ok(cmd) -> - do_execute( - cmd, - config, - global_flags, - rest, - flags, - help, - [arg, ..command_path], - ) - // subcommand not found, but help flag has been passed - // generate and return help message - _ if help -> - command_path - |> cmd_help(cmd, config, global_flags) - |> Help - |> Ok - // subcommand not found, but help flag has not been passed - // execute the current command - _ -> execute_root(cmd, global_flags, args, flags) - } - } -} - -/// Executes the current root command. -/// -fn execute_root( - cmd: CommandNode(a), - global_flags: FlagMap, - args: List(String), - flag_inputs: List(String), -) -> CmdResult(a) { - case cmd.contents { - Some(contents) -> { - use new_flags <- result.try(list.try_fold( - over: flag_inputs, - from: map.merge(global_flags, contents.flags), - with: flag.update_flags, - )) - CommandInput(args, new_flags) - |> contents.do - |> Out - |> Ok - } - None -> snag.error("command not found") - } - |> snag.context("failed to run command") -} - -/// A wrapper for `execute` that prints any errors enountered or the help text if requested. -/// This function ignores any value returned by the command that was run. -/// If you would like to do something with the command output please see the run_and_handle function. -/// -pub fn run(from glint: Glint(a), for args: List(String)) -> Nil { - run_and_handle(from: glint, for: args, with: function.constant(Nil)) -} - -/// A wrapper for `execute` that prints any errors enountered or the help text if requested. -/// This function calls the provided handler with the value returned by the command that was run. -/// -pub fn run_and_handle( - from glint: Glint(a), - for args: List(String), - with handle: fn(a) -> _, -) -> Nil { - case execute(glint, args) { - Error(err) -> - err - |> snag.pretty_print - |> io.println - Ok(Help(help)) -> io.println(help) - Ok(Out(out)) -> { - handle(out) - Nil - } - } -} - -/// Default pretty help heading colouring -/// mint (r: 182, g: 255, b: 234) colour for usage -/// pink (r: 255, g: 175, b: 243) colour for flags -/// buttercup (r: 252, g: 226, b: 174) colour for subcommands -/// -pub fn default_pretty_help() -> PrettyHelp { - let assert Ok(usage_colour) = colour.from_rgb255(182, 255, 234) - let assert Ok(flags_colour) = colour.from_rgb255(255, 175, 243) - let assert Ok(subcommands_colour) = colour.from_rgb255(252, 226, 174) - - PrettyHelp( - usage: usage_colour, - flags: flags_colour, - subcommands: subcommands_colour, - ) -} - -// constants for setting up sections of the help message -const flags_heading = "FLAGS:" - -const subcommands_heading = "SUBCOMMANDS:" - -const usage_heading = "USAGE:" - -/// Helper for filtering out empty strings -/// -fn is_not_empty(s: String) -> Bool { - s != "" -} - -const help_flag_name = "help" - -const help_flag_message = "--help\t\t\tPrint help information" - -/// Function to create the help flag string -/// Exported for testing purposes only -/// -pub fn help_flag() -> String { - flag.prefix <> help_flag_name -} - -// -- HELP: FUNCTIONS -- - -fn wrap_with_space(s: String) -> String { - case s { - "" -> " " - _ -> " " <> s <> " " - } -} - -/// generate the usage help string for a command -fn usage_help(cmd_name: String, flags: FlagMap, config: Config) -> String { - let app_name = option.unwrap(config.name, "gleam run") - let flags = - flags - |> map.to_list - |> list.map(flag.flag_type_help) - |> list.sort(string.compare) - - let flag_sb = case flags { - [] -> sb.new() - _ -> - flags - |> list.intersperse(" ") - |> sb.from_strings() - |> sb.prepend(prefix: " [ ") - |> sb.append(suffix: " ]") - } - - [app_name, wrap_with_space(cmd_name), "[ ARGS ]"] - |> sb.from_strings - |> sb.append_builder(flag_sb) - |> sb.prepend( - config.pretty_help - |> option.map(fn(styling) { heading_style(usage_heading, styling.usage) }) - |> option.unwrap(usage_heading) <> "\n\t", - ) - |> sb.to_string -} - -/// generate the help text for a command -fn cmd_help( - path: List(String), - cmd: CommandNode(a), - config: Config, - global_flags: FlagMap, -) -> String { - // recreate the path of the current command - // reverse the path because it is created by prepending each section as do_execute walks down the tree - let name = - path - |> list.reverse - |> string.join(" ") - - let flags = - option.map(cmd.contents, fn(contents) { contents.flags }) - |> option.lazy_unwrap(map.new) - |> map.merge(global_flags, _) - - let flags_help_body = - config.pretty_help - |> option.map(fn(p) { heading_style(flags_heading, p.flags) }) - |> option.unwrap(flags_heading) <> "\n\t" <> string.join( - list.sort([help_flag_message, ..flag.flags_help(flags)], string.compare), - "\n\t", - ) - - let usage = usage_help(name, flags, config) - - let description = - cmd.contents - |> option.map(fn(contents) { contents.description }) - |> option.unwrap("") - - // create the header block from the name and description - let header_items = - [name, description] - |> list.filter(is_not_empty) - |> string.join("\n") - - // create the subcommands help block - let subcommands = case subcommands_help(cmd.subcommands) { - "" -> "" - subcommands_help_body -> - config.pretty_help - |> option.map(fn(p) { heading_style(subcommands_heading, p.subcommands) }) - |> option.unwrap(subcommands_heading) <> "\n\t" <> subcommands_help_body - } - - // join the resulting help blocks into the final help message - [header_items, usage, flags_help_body, subcommands] - |> list.filter(is_not_empty) - |> string.join("\n\n") -} - -// create the help text for subcommands -fn subcommands_help(cmds: Map(String, CommandNode(a))) -> String { - cmds - |> map.map_values(subcommand_help) - |> map.values - |> list.sort(string.compare) - |> string.join("\n\t") -} - -// generate the help text for a subcommand -fn subcommand_help(name: String, cmd: CommandNode(_)) -> String { - case cmd.contents { - None -> name - Some(contents) -> name <> "\t\t" <> contents.description - } -} - -/// Style heading text with the provided rgb colouring -/// this is only intended for use within glint itself. -/// -fn heading_style(heading: String, colour: Colour) -> String { - heading - |> ansi.bold - |> ansi.underline - |> ansi.italic - |> ansi.hex(colour.to_rgb_hex(colour)) - |> ansi.reset -} - -// -- DEPRECATED: STUBS -- - -/// DEPRECATED: use `glint.cmd` and related new functions instead to create a Command -/// -/// Create command stubs to be used in `add_command_from_stub` -/// -pub type Stub(a) { - Stub( - path: List(String), - run: Runner(a), - flags: List(#(String, Flag)), - description: String, - ) -} - -/// Add a command to the root given a stub -/// -@deprecated("use `glint.cmd` and related new functions instead to create a Command") -pub fn add_command_from_stub(to glint: Glint(a), with stub: Stub(a)) -> Glint(a) { - add( - to: glint, - at: stub.path, - do: command(stub.run) - |> flags(stub.flags) - |> description(stub.description), - ) -} diff --git a/aoc2023/build/packages/glint/src/glint/flag.gleam b/aoc2023/build/packages/glint/src/glint/flag.gleam deleted file mode 100644 index 0a6cae1..0000000 --- a/aoc2023/build/packages/glint/src/glint/flag.gleam +++ /dev/null @@ -1,478 +0,0 @@ -import gleam/map -import gleam/string -import gleam/result -import gleam/int -import gleam/list -import gleam/float -import snag.{type Result, type Snag} -import gleam/option.{type Option, None, Some} -import glint/flag/constraint.{type Constraint} -import gleam - -/// Flag inputs must start with this prefix -/// -pub const prefix = "--" - -/// The separation character for flag names and their values -const delimiter = "=" - -/// Supported flag types. -/// -pub type Value { - /// Boolean flags, to be passed in as `--flag=true` or `--flag=false`. - /// Can be toggled by omitting the desired value like `--flag`. - /// Toggling will negate the existing value. - /// - B(Internal(Bool)) - - /// Int flags, to be passed in as `--flag=1` - /// - I(Internal(Int)) - - /// List(Int) flags, to be passed in as `--flag=1,2,3` - /// - LI(Internal(List(Int))) - - /// Float flags, to be passed in as `--flag=1.0` - /// - F(Internal(Float)) - - /// List(Float) flags, to be passed in as `--flag=1.0,2.0` - /// - LF(Internal(List(Float))) - - /// String flags, to be passed in as `--flag=hello` - /// - S(Internal(String)) - - /// List(String) flags, to be passed in as `--flag=hello,world` - /// - LS(Internal(List(String))) -} - -/// A type that facilitates the creation of `Flag`s -/// -pub opaque type FlagBuilder(a) { - FlagBuilder( - desc: Description, - parser: Parser(a, Snag), - value: fn(Internal(a)) -> Value, - default: Option(a), - ) -} - -/// An internal representation of flag contents -/// -pub opaque type Internal(a) { - Internal(value: Option(a), parser: Parser(a, Snag)) -} - -// Builder initializers - -type Parser(a, b) = - fn(String) -> gleam.Result(a, b) - -/// initialise an int flag builder -/// -pub fn int() -> FlagBuilder(Int) { - use input <- new(I) - input - |> int.parse - |> result.replace_error(cannot_parse(input, "int")) -} - -/// initialise an int list flag builder -/// -pub fn int_list() -> FlagBuilder(List(Int)) { - use input <- new(LI) - input - |> string.split(",") - |> list.try_map(int.parse) - |> result.replace_error(cannot_parse(input, "int list")) -} - -/// initialise a float flag builder -/// -pub fn float() -> FlagBuilder(Float) { - use input <- new(F) - input - |> float.parse - |> result.replace_error(cannot_parse(input, "float")) -} - -/// initialise a float list flag builder -/// -pub fn float_list() -> FlagBuilder(List(Float)) { - use input <- new(LF) - input - |> string.split(",") - |> list.try_map(float.parse) - |> result.replace_error(cannot_parse(input, "float list")) -} - -/// initialise a string flag builder -/// -pub fn string() -> FlagBuilder(String) { - new(S, fn(s) { Ok(s) }) -} - -/// intitialise a string list flag builder -/// -pub fn string_list() -> FlagBuilder(List(String)) { - use input <- new(LS) - input - |> string.split(",") - |> Ok -} - -/// initialise a bool flag builder -/// -pub fn bool() -> FlagBuilder(Bool) { - use input <- new(B) - case string.lowercase(input) { - "true" | "t" -> Ok(True) - "false" | "f" -> Ok(False) - _ -> Error(cannot_parse(input, "bool")) - } -} - -/// initialize custom builders using a Value constructor and a parsing function -/// -fn new(valuer: fn(Internal(a)) -> Value, p: Parser(a, Snag)) -> FlagBuilder(a) { - FlagBuilder(desc: "", parser: p, value: valuer, default: None) -} - -/// convert a FlagBuilder(a) into its corresponding Flag representation -/// -pub fn build(fb: FlagBuilder(a)) -> Flag { - Flag( - value: fb.value(Internal(value: fb.default, parser: fb.parser)), - description: fb.desc, - ) -} - -/// attach a constraint to a `Flag` -/// -pub fn constraint( - builder: FlagBuilder(a), - constraint: Constraint(a), -) -> FlagBuilder(a) { - FlagBuilder( - ..builder, - parser: wrap_with_constraint(builder.parser, constraint), - ) -} - -/// attach a Constraint(a) to a Parser(a,Snag) -/// this function should not be used directly unless -fn wrap_with_constraint( - p: Parser(a, Snag), - constraint: Constraint(a), -) -> Parser(a, Snag) { - fn(input: String) -> Result(a) { attempt(p(input), constraint) } -} - -fn attempt( - val: gleam.Result(a, e), - f: fn(a) -> gleam.Result(_, e), -) -> gleam.Result(a, e) { - use a <- result.try(val) - result.replace(f(a), a) -} - -/// Flag descriptions -/// -pub type Description = - String - -/// Flag data and descriptions -/// -pub type Flag { - Flag(value: Value, description: Description) -} - -/// attach a description to a `Flag` -/// -pub fn description( - for builder: FlagBuilder(a), - of description: Description, -) -> FlagBuilder(a) { - FlagBuilder(..builder, desc: description) -} - -/// Set the default value for a flag `Value` -/// -pub fn default(for builder: FlagBuilder(a), of default: a) -> FlagBuilder(a) { - FlagBuilder(..builder, default: Some(default)) -} - -/// Associate flag names to their current values. -/// -pub type Map = - map.Map(String, Flag) - -/// Convert a list of flags to a Map. -/// -pub fn build_map(flags: List(#(String, Flag))) -> Map { - map.from_list(flags) -} - -/// Updates a flag value, ensuring that the new value can satisfy the required type. -/// Assumes that all flag inputs passed in start with -- -/// This function is only intended to be used from glint.execute_root -/// -pub fn update_flags(in flags: Map, with flag_input: String) -> Result(Map) { - let flag_input = string.drop_left(flag_input, string.length(prefix)) - - case string.split_once(flag_input, delimiter) { - Ok(data) -> update_flag_value(flags, data) - Error(_) -> attempt_toggle_flag(flags, flag_input) - } -} - -fn update_flag_value(in flags: Map, with data: #(String, String)) -> Result(Map) { - let #(key, input) = data - use contents <- result.try(access(flags, key)) - use value <- result.map( - compute_flag(with: input, given: contents.value) - |> result.map_error(layer_invalid_flag(_, key)), - ) - map.insert(flags, key, Flag(..contents, value: value)) -} - -fn attempt_toggle_flag(in flags: Map, at key: String) -> Result(Map) { - use contents <- result.try(access(flags, key)) - case contents.value { - B(Internal(None, ..) as internal) -> - Internal(..internal, value: Some(True)) - |> B - |> fn(val) { Flag(..contents, value: val) } - |> map.insert(into: flags, for: key) - |> Ok() - B(Internal(Some(val), ..) as internal) -> - Internal(..internal, value: Some(!val)) - |> B - |> fn(val) { Flag(..contents, value: val) } - |> map.insert(into: flags, for: key) - |> Ok() - _ -> Error(no_value_flag_err(key)) - } -} - -fn access_type_error(flag_type) { - snag.error("cannot access flag as " <> flag_type) -} - -fn flag_not_provided_error() { - snag.error("no value provided") -} - -fn construct_value( - input: String, - internal: Internal(a), - constructor: fn(Internal(a)) -> Value, -) -> Result(Value) { - use val <- result.map(internal.parser(input)) - constructor(Internal(..internal, value: Some(val))) -} - -/// Computes the new flag value given the input and the expected flag type -/// -fn compute_flag(with input: String, given current: Value) -> Result(Value) { - input - |> case current { - I(internal) -> construct_value(_, internal, I) - LI(internal) -> construct_value(_, internal, LI) - F(internal) -> construct_value(_, internal, F) - LF(internal) -> construct_value(_, internal, LF) - S(internal) -> construct_value(_, internal, S) - LS(internal) -> construct_value(_, internal, LS) - B(internal) -> construct_value(_, internal, B) - } - |> snag.context("failed to compute value for flag") -} - -// Error creation and manipulation functions -fn layer_invalid_flag(err: Snag, flag: String) -> Snag { - snag.layer(err, "invalid flag '" <> flag <> "'") -} - -fn no_value_flag_err(flag_input: String) -> Snag { - { "flag '" <> flag_input <> "' has no assigned value" } - |> snag.new() - |> layer_invalid_flag(flag_input) -} - -fn undefined_flag_err(key: String) -> Snag { - "flag provided but not defined" - |> snag.new() - |> layer_invalid_flag(key) -} - -fn cannot_parse(with value: String, is kind: String) -> Snag { - { "cannot parse value '" <> value <> "' as " <> kind } - |> snag.new() -} - -// Help Message Functions -/// Generate the help message contents for a single flag -/// -pub fn flag_type_help(flag: #(String, Flag)) { - let #(name, contents) = flag - let kind = case contents.value { - I(_) -> "INT" - B(_) -> "BOOL" - F(_) -> "FLOAT" - LF(_) -> "FLOAT_LIST" - LI(_) -> "INT_LIST" - LS(_) -> "STRING_LIST" - S(_) -> "STRING" - } - - prefix <> name <> delimiter <> "<" <> kind <> ">" -} - -/// Generate help message line for a single flag -/// -fn flag_help(flag: #(String, Flag)) -> String { - flag_type_help(flag) <> "\t\t" <> { flag.1 }.description -} - -/// Generate help messages for all flags -/// -pub fn flags_help(flags: Map) -> List(String) { - flags - |> map.to_list - |> list.map(flag_help) -} - -// -- FLAG ACCESS FUNCTIONS -- - -/// Access the contents for the associated flag -/// -fn access(flags: Map, name: String) -> Result(Flag) { - map.get(flags, name) - |> result.replace_error(undefined_flag_err(name)) -} - -fn get_value( - from flags: Map, - at key: String, - expecting kind: fn(Flag) -> Result(a), -) -> Result(a) { - access(flags, key) - |> result.try(kind) - |> snag.context("failed to retrieve value for flag '" <> key <> "'") -} - -/// Gets the current value for the provided int flag -/// -pub fn get_int_value(from flag: Flag) -> Result(Int) { - case flag.value { - I(Internal(value: Some(val), ..)) -> Ok(val) - I(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("int") - } -} - -/// Gets the current value for the associated int flag -/// -pub fn get_int(from flags: Map, for name: String) -> Result(Int) { - get_value(flags, name, get_int_value) -} - -/// Gets the current value for the provided ints flag -/// -pub fn get_ints_value(from flag: Flag) -> Result(List(Int)) { - case flag.value { - LI(Internal(value: Some(val), ..)) -> Ok(val) - LI(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("int list") - } -} - -/// Gets the current value for the associated ints flag -/// -pub fn get_ints(from flags: Map, for name: String) -> Result(List(Int)) { - get_value(flags, name, get_ints_value) -} - -/// Gets the current value for the provided bool flag -/// -pub fn get_bool_value(from flag: Flag) -> Result(Bool) { - case flag.value { - B(Internal(Some(val), ..)) -> Ok(val) - B(Internal(None, ..)) -> flag_not_provided_error() - _ -> access_type_error("bool") - } -} - -/// Gets the current value for the associated bool flag -/// -pub fn get_bool(from flags: Map, for name: String) -> Result(Bool) { - get_value(flags, name, get_bool_value) -} - -/// Gets the current value for the provided string flag -/// -pub fn get_string_value(from flag: Flag) -> Result(String) { - case flag.value { - S(Internal(value: Some(val), ..)) -> Ok(val) - S(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("string") - } -} - -/// Gets the current value for the associated string flag -/// -pub fn get_string(from flags: Map, for name: String) -> Result(String) { - get_value(flags, name, get_string_value) -} - -/// Gets the current value for the provided strings flag -/// -pub fn get_strings_value(from flag: Flag) -> Result(List(String)) { - case flag.value { - LS(Internal(value: Some(val), ..)) -> Ok(val) - LS(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("string list") - } -} - -/// Gets the current value for the associated strings flag -/// -pub fn get_strings(from flags: Map, for name: String) -> Result(List(String)) { - get_value(flags, name, get_strings_value) -} - -/// Gets the current value for the provided float flag -/// -pub fn get_float_value(from flag: Flag) -> Result(Float) { - case flag.value { - F(Internal(value: Some(val), ..)) -> Ok(val) - F(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("float") - } -} - -/// Gets the current value for the associated float flag -/// -pub fn get_float(from flags: Map, for name: String) -> Result(Float) { - get_value(flags, name, get_float_value) -} - -/// Gets the current value for the provided floats flag -/// -pub fn get_floats_value(from flag: Flag) -> Result(List(Float)) { - case flag.value { - LF(Internal(value: Some(val), ..)) -> Ok(val) - LF(Internal(value: None, ..)) -> flag_not_provided_error() - _ -> access_type_error("float list") - } -} - -/// Gets the current value for the associated floats flag -/// -pub fn get_floats(from flags: Map, for name: String) -> Result(List(Float)) { - get_value(flags, name, get_floats_value) -} diff --git a/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam b/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam deleted file mode 100644 index e474bc2..0000000 --- a/aoc2023/build/packages/glint/src/glint/flag/constraint.gleam +++ /dev/null @@ -1,66 +0,0 @@ -import gleam/list -import gleam/result -import gleam/string -import gleam/set -import snag.{type Result} - -/// Constraint type for verifying flag values -/// -pub type Constraint(a) = - fn(a) -> Result(Nil) - -/// one_of returns a Constraint that ensures the parsed flag value is -/// one of the allowed values. -/// -pub fn one_of(allowed: List(a)) -> Constraint(a) { - let allowed_set = set.from_list(allowed) - fn(val: a) -> Result(Nil) { - case set.contains(allowed_set, val) { - True -> Ok(Nil) - False -> - snag.error( - "invalid value '" <> string.inspect(val) <> "', must be one of: [" <> { - allowed - |> list.map(fn(a) { "'" <> string.inspect(a) <> "'" }) - |> string.join(", ") <> "]" - }, - ) - } - } -} - -/// none_of returns a Constraint that ensures the parsed flag value is not one of the disallowed values. -/// -pub fn none_of(disallowed: List(a)) -> Constraint(a) { - let disallowed_set = set.from_list(disallowed) - fn(val: a) -> Result(Nil) { - case set.contains(disallowed_set, val) { - False -> Ok(Nil) - True -> - snag.error( - "invalid value '" <> string.inspect(val) <> "', must not be one of: [" <> { - { - disallowed - |> list.map(fn(a) { "'" <> string.inspect(a) <> "'" }) - |> string.join(", ") <> "]" - } - }, - ) - } - } -} - -/// each is a convenience function for applying a Constraint(a) to a List(a). -/// This is useful because the default behaviour for constraints on lists is that they will apply to the list as a whole. -/// -/// For example, to apply one_of to all items in a `List(Int)`: -/// ```gleam -/// [1, 2, 3, 4] |> one_of |> each -/// ``` -pub fn each(constraint: Constraint(a)) -> Constraint(List(a)) { - fn(l: List(a)) -> Result(Nil) { - l - |> list.try_map(constraint) - |> result.replace(Nil) - } -} diff --git a/aoc2023/build/packages/glint/src/glint@flag.erl b/aoc2023/build/packages/glint/src/glint@flag.erl deleted file mode 100644 index bcce6db..0000000 --- a/aoc2023/build/packages/glint/src/glint@flag.erl +++ /dev/null @@ -1,523 +0,0 @@ --module(glint@flag). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([string/0, string_list/0, build/1, constraint/2, description/2, default/2, build_map/1, int/0, int_list/0, float/0, float_list/0, bool/0, flag_type_help/1, flags_help/1, update_flags/2, get_int_value/1, get_int/2, get_ints_value/1, get_ints/2, get_bool_value/1, get_bool/2, get_string_value/1, get_string/2, get_strings_value/1, get_strings/2, get_float_value/1, get_float/2, get_floats_value/1, get_floats/2]). --export_type([value/0, flag_builder/1, internal/1, flag/0]). - --type value() :: {b, internal(boolean())} | - {i, internal(integer())} | - {li, internal(list(integer()))} | - {f, internal(float())} | - {lf, internal(list(float()))} | - {s, internal(binary())} | - {ls, internal(list(binary()))}. - --opaque flag_builder(FTZ) :: {flag_builder, - binary(), - fun((binary()) -> {ok, FTZ} | {error, snag:snag()}), - fun((internal(FTZ)) -> value()), - gleam@option:option(FTZ)}. - --opaque internal(FUA) :: {internal, - gleam@option:option(FUA), - fun((binary()) -> {ok, FUA} | {error, snag:snag()})}. - --type flag() :: {flag, value(), binary()}. - --spec new( - fun((internal(FUR)) -> value()), - fun((binary()) -> {ok, FUR} | {error, snag:snag()}) -) -> flag_builder(FUR). -new(Valuer, P) -> - {flag_builder, <<""/utf8>>, P, Valuer, none}. - --spec string() -> flag_builder(binary()). -string() -> - new(fun(Field@0) -> {s, Field@0} end, fun(S) -> {ok, S} end). - --spec string_list() -> flag_builder(list(binary())). -string_list() -> - new(fun(Field@0) -> {ls, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - {ok, _pipe@1} end). - --spec build(flag_builder(any())) -> flag(). -build(Fb) -> - {flag, - (erlang:element(4, Fb))( - {internal, erlang:element(5, Fb), erlang:element(3, Fb)} - ), - erlang:element(2, Fb)}. - --spec attempt( - {ok, FVI} | {error, FVJ}, - fun((FVI) -> {ok, any()} | {error, FVJ}) -) -> {ok, FVI} | {error, FVJ}. -attempt(Val, F) -> - gleam@result:'try'(Val, fun(A) -> gleam@result:replace(F(A), A) end). - --spec wrap_with_constraint( - fun((binary()) -> {ok, FVC} | {error, snag:snag()}), - fun((FVC) -> {ok, nil} | {error, snag:snag()}) -) -> fun((binary()) -> {ok, FVC} | {error, snag:snag()}). -wrap_with_constraint(P, Constraint) -> - fun(Input) -> attempt(P(Input), Constraint) end. - --spec constraint( - flag_builder(FUY), - fun((FUY) -> {ok, nil} | {error, snag:snag()}) -) -> flag_builder(FUY). -constraint(Builder, Constraint) -> - erlang:setelement( - 3, - Builder, - wrap_with_constraint(erlang:element(3, Builder), Constraint) - ). - --spec description(flag_builder(FVR), binary()) -> flag_builder(FVR). -description(Builder, Description) -> - erlang:setelement(2, Builder, Description). - --spec default(flag_builder(FVU), FVU) -> flag_builder(FVU). -default(Builder, Default) -> - erlang:setelement(5, Builder, {some, Default}). - --spec build_map(list({binary(), flag()})) -> gleam@map:map_(binary(), flag()). -build_map(Flags) -> - gleam@map:from_list(Flags). - --spec access_type_error(binary()) -> {ok, any()} | {error, snag:snag()}. -access_type_error(Flag_type) -> - snag:error(<<"cannot access flag as "/utf8, Flag_type/binary>>). - --spec flag_not_provided_error() -> {ok, any()} | {error, snag:snag()}. -flag_not_provided_error() -> - snag:error(<<"no value provided"/utf8>>). - --spec construct_value(binary(), internal(FWE), fun((internal(FWE)) -> value())) -> {ok, - value()} | - {error, snag:snag()}. -construct_value(Input, Internal, Constructor) -> - gleam@result:map( - (erlang:element(3, Internal))(Input), - fun(Val) -> Constructor(erlang:setelement(2, Internal, {some, Val})) end - ). - --spec compute_flag(binary(), value()) -> {ok, value()} | {error, snag:snag()}. -compute_flag(Input, Current) -> - _pipe = Input, - _pipe@1 = case Current of - {i, Internal} -> - fun(_capture) -> - construct_value( - _capture, - Internal, - fun(Field@0) -> {i, Field@0} end - ) - end; - - {li, Internal@1} -> - fun(_capture@1) -> - construct_value( - _capture@1, - Internal@1, - fun(Field@0) -> {li, Field@0} end - ) - end; - - {f, Internal@2} -> - fun(_capture@2) -> - construct_value( - _capture@2, - Internal@2, - fun(Field@0) -> {f, Field@0} end - ) - end; - - {lf, Internal@3} -> - fun(_capture@3) -> - construct_value( - _capture@3, - Internal@3, - fun(Field@0) -> {lf, Field@0} end - ) - end; - - {s, Internal@4} -> - fun(_capture@4) -> - construct_value( - _capture@4, - Internal@4, - fun(Field@0) -> {s, Field@0} end - ) - end; - - {ls, Internal@5} -> - fun(_capture@5) -> - construct_value( - _capture@5, - Internal@5, - fun(Field@0) -> {ls, Field@0} end - ) - end; - - {b, Internal@6} -> - fun(_capture@6) -> - construct_value( - _capture@6, - Internal@6, - fun(Field@0) -> {b, Field@0} end - ) - end - end(_pipe), - snag:context(_pipe@1, <<"failed to compute value for flag"/utf8>>). - --spec layer_invalid_flag(snag:snag(), binary()) -> snag:snag(). -layer_invalid_flag(Err, Flag) -> - snag:layer(Err, <<<<"invalid flag '"/utf8, Flag/binary>>/binary, "'"/utf8>>). - --spec no_value_flag_err(binary()) -> snag:snag(). -no_value_flag_err(Flag_input) -> - _pipe = (<<<<"flag '"/utf8, Flag_input/binary>>/binary, - "' has no assigned value"/utf8>>), - _pipe@1 = snag:new(_pipe), - layer_invalid_flag(_pipe@1, Flag_input). - --spec undefined_flag_err(binary()) -> snag:snag(). -undefined_flag_err(Key) -> - _pipe = <<"flag provided but not defined"/utf8>>, - _pipe@1 = snag:new(_pipe), - layer_invalid_flag(_pipe@1, Key). - --spec cannot_parse(binary(), binary()) -> snag:snag(). -cannot_parse(Value, Kind) -> - _pipe = (<<<<<<"cannot parse value '"/utf8, Value/binary>>/binary, - "' as "/utf8>>/binary, - Kind/binary>>), - snag:new(_pipe). - --spec int() -> flag_builder(integer()). -int() -> - new(fun(Field@0) -> {i, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@int:parse(_pipe), - gleam@result:replace_error( - _pipe@1, - cannot_parse(Input, <<"int"/utf8>>) - ) end). - --spec int_list() -> flag_builder(list(integer())). -int_list() -> - new(fun(Field@0) -> {li, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@int:parse/1), - gleam@result:replace_error( - _pipe@2, - cannot_parse(Input, <<"int list"/utf8>>) - ) end). - --spec float() -> flag_builder(float()). -float() -> - new(fun(Field@0) -> {f, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@float:parse(_pipe), - gleam@result:replace_error( - _pipe@1, - cannot_parse(Input, <<"float"/utf8>>) - ) end). - --spec float_list() -> flag_builder(list(float())). -float_list() -> - new(fun(Field@0) -> {lf, Field@0} end, fun(Input) -> _pipe = Input, - _pipe@1 = gleam@string:split(_pipe, <<","/utf8>>), - _pipe@2 = gleam@list:try_map(_pipe@1, fun gleam@float:parse/1), - gleam@result:replace_error( - _pipe@2, - cannot_parse(Input, <<"float list"/utf8>>) - ) end). - --spec bool() -> flag_builder(boolean()). -bool() -> - new( - fun(Field@0) -> {b, Field@0} end, - fun(Input) -> case gleam@string:lowercase(Input) of - <<"true"/utf8>> -> - {ok, true}; - - <<"t"/utf8>> -> - {ok, true}; - - <<"false"/utf8>> -> - {ok, false}; - - <<"f"/utf8>> -> - {ok, false}; - - _ -> - {error, cannot_parse(Input, <<"bool"/utf8>>)} - end end - ). - --spec flag_type_help({binary(), flag()}) -> binary(). -flag_type_help(Flag) -> - {Name, Contents} = Flag, - Kind = case erlang:element(2, Contents) of - {i, _} -> - <<"INT"/utf8>>; - - {b, _} -> - <<"BOOL"/utf8>>; - - {f, _} -> - <<"FLOAT"/utf8>>; - - {lf, _} -> - <<"FLOAT_LIST"/utf8>>; - - {li, _} -> - <<"INT_LIST"/utf8>>; - - {ls, _} -> - <<"STRING_LIST"/utf8>>; - - {s, _} -> - <<"STRING"/utf8>> - end, - <<<<<<<<<<"--"/utf8, Name/binary>>/binary, "="/utf8>>/binary, "<"/utf8>>/binary, - Kind/binary>>/binary, - ">"/utf8>>. - --spec flag_help({binary(), flag()}) -> binary(). -flag_help(Flag) -> - <<<<(flag_type_help(Flag))/binary, "\t\t"/utf8>>/binary, - (erlang:element(3, (erlang:element(2, Flag))))/binary>>. - --spec flags_help(gleam@map:map_(binary(), flag())) -> list(binary()). -flags_help(Flags) -> - _pipe = Flags, - _pipe@1 = gleam@map:to_list(_pipe), - gleam@list:map(_pipe@1, fun flag_help/1). - --spec access(gleam@map:map_(binary(), flag()), binary()) -> {ok, flag()} | - {error, snag:snag()}. -access(Flags, Name) -> - _pipe = gleam@map:get(Flags, Name), - gleam@result:replace_error(_pipe, undefined_flag_err(Name)). - --spec update_flag_value(gleam@map:map_(binary(), flag()), {binary(), binary()}) -> {ok, - gleam@map:map_(binary(), flag())} | - {error, snag:snag()}. -update_flag_value(Flags, Data) -> - {Key, Input} = Data, - gleam@result:'try'( - access(Flags, Key), - fun(Contents) -> - gleam@result:map( - begin - _pipe = compute_flag(Input, erlang:element(2, Contents)), - gleam@result:map_error( - _pipe, - fun(_capture) -> layer_invalid_flag(_capture, Key) end - ) - end, - fun(Value) -> - gleam@map:insert( - Flags, - Key, - erlang:setelement(2, Contents, Value) - ) - end - ) - end - ). - --spec attempt_toggle_flag(gleam@map:map_(binary(), flag()), binary()) -> {ok, - gleam@map:map_(binary(), flag())} | - {error, snag:snag()}. -attempt_toggle_flag(Flags, Key) -> - gleam@result:'try'( - access(Flags, Key), - fun(Contents) -> case erlang:element(2, Contents) of - {b, {internal, none, _} = Internal} -> - _pipe = erlang:setelement(2, Internal, {some, true}), - _pipe@1 = {b, _pipe}, - _pipe@2 = (fun(Val) -> - erlang:setelement(2, Contents, Val) - end)(_pipe@1), - _pipe@3 = gleam@map:insert(Flags, Key, _pipe@2), - {ok, _pipe@3}; - - {b, {internal, {some, Val@1}, _} = Internal@1} -> - _pipe@4 = erlang:setelement( - 2, - Internal@1, - {some, not Val@1} - ), - _pipe@5 = {b, _pipe@4}, - _pipe@6 = (fun(Val@2) -> - erlang:setelement(2, Contents, Val@2) - end)(_pipe@5), - _pipe@7 = gleam@map:insert(Flags, Key, _pipe@6), - {ok, _pipe@7}; - - _ -> - {error, no_value_flag_err(Key)} - end end - ). - --spec update_flags(gleam@map:map_(binary(), flag()), binary()) -> {ok, - gleam@map:map_(binary(), flag())} | - {error, snag:snag()}. -update_flags(Flags, Flag_input) -> - Flag_input@1 = gleam@string:drop_left( - Flag_input, - gleam@string:length(<<"--"/utf8>>) - ), - case gleam@string:split_once(Flag_input@1, <<"="/utf8>>) of - {ok, Data} -> - update_flag_value(Flags, Data); - - {error, _} -> - attempt_toggle_flag(Flags, Flag_input@1) - end. - --spec get_value( - gleam@map:map_(binary(), flag()), - binary(), - fun((flag()) -> {ok, FWM} | {error, snag:snag()}) -) -> {ok, FWM} | {error, snag:snag()}. -get_value(Flags, Key, Kind) -> - _pipe = access(Flags, Key), - _pipe@1 = gleam@result:'try'(_pipe, Kind), - snag:context( - _pipe@1, - <<<<"failed to retrieve value for flag '"/utf8, Key/binary>>/binary, - "'"/utf8>> - ). - --spec get_int_value(flag()) -> {ok, integer()} | {error, snag:snag()}. -get_int_value(Flag) -> - case erlang:element(2, Flag) of - {i, {internal, {some, Val}, _}} -> - {ok, Val}; - - {i, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"int"/utf8>>) - end. - --spec get_int(gleam@map:map_(binary(), flag()), binary()) -> {ok, integer()} | - {error, snag:snag()}. -get_int(Flags, Name) -> - get_value(Flags, Name, fun get_int_value/1). - --spec get_ints_value(flag()) -> {ok, list(integer())} | {error, snag:snag()}. -get_ints_value(Flag) -> - case erlang:element(2, Flag) of - {li, {internal, {some, Val}, _}} -> - {ok, Val}; - - {li, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"int list"/utf8>>) - end. - --spec get_ints(gleam@map:map_(binary(), flag()), binary()) -> {ok, - list(integer())} | - {error, snag:snag()}. -get_ints(Flags, Name) -> - get_value(Flags, Name, fun get_ints_value/1). - --spec get_bool_value(flag()) -> {ok, boolean()} | {error, snag:snag()}. -get_bool_value(Flag) -> - case erlang:element(2, Flag) of - {b, {internal, {some, Val}, _}} -> - {ok, Val}; - - {b, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"bool"/utf8>>) - end. - --spec get_bool(gleam@map:map_(binary(), flag()), binary()) -> {ok, boolean()} | - {error, snag:snag()}. -get_bool(Flags, Name) -> - get_value(Flags, Name, fun get_bool_value/1). - --spec get_string_value(flag()) -> {ok, binary()} | {error, snag:snag()}. -get_string_value(Flag) -> - case erlang:element(2, Flag) of - {s, {internal, {some, Val}, _}} -> - {ok, Val}; - - {s, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"string"/utf8>>) - end. - --spec get_string(gleam@map:map_(binary(), flag()), binary()) -> {ok, binary()} | - {error, snag:snag()}. -get_string(Flags, Name) -> - get_value(Flags, Name, fun get_string_value/1). - --spec get_strings_value(flag()) -> {ok, list(binary())} | {error, snag:snag()}. -get_strings_value(Flag) -> - case erlang:element(2, Flag) of - {ls, {internal, {some, Val}, _}} -> - {ok, Val}; - - {ls, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"string list"/utf8>>) - end. - --spec get_strings(gleam@map:map_(binary(), flag()), binary()) -> {ok, - list(binary())} | - {error, snag:snag()}. -get_strings(Flags, Name) -> - get_value(Flags, Name, fun get_strings_value/1). - --spec get_float_value(flag()) -> {ok, float()} | {error, snag:snag()}. -get_float_value(Flag) -> - case erlang:element(2, Flag) of - {f, {internal, {some, Val}, _}} -> - {ok, Val}; - - {f, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"float"/utf8>>) - end. - --spec get_float(gleam@map:map_(binary(), flag()), binary()) -> {ok, float()} | - {error, snag:snag()}. -get_float(Flags, Name) -> - get_value(Flags, Name, fun get_float_value/1). - --spec get_floats_value(flag()) -> {ok, list(float())} | {error, snag:snag()}. -get_floats_value(Flag) -> - case erlang:element(2, Flag) of - {lf, {internal, {some, Val}, _}} -> - {ok, Val}; - - {lf, {internal, none, _}} -> - flag_not_provided_error(); - - _ -> - access_type_error(<<"float list"/utf8>>) - end. - --spec get_floats(gleam@map:map_(binary(), flag()), binary()) -> {ok, - list(float())} | - {error, snag:snag()}. -get_floats(Flags, Name) -> - get_value(Flags, Name, fun get_floats_value/1). diff --git a/aoc2023/build/packages/glint/src/glint@flag@constraint.erl b/aoc2023/build/packages/glint/src/glint@flag@constraint.erl deleted file mode 100644 index 2978be0..0000000 --- a/aoc2023/build/packages/glint/src/glint@flag@constraint.erl +++ /dev/null @@ -1,68 +0,0 @@ --module(glint@flag@constraint). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([one_of/1, none_of/1, each/1]). - --spec one_of(list(FSI)) -> fun((FSI) -> {ok, nil} | {error, snag:snag()}). -one_of(Allowed) -> - Allowed_set = gleam@set:from_list(Allowed), - fun(Val) -> case gleam@set:contains(Allowed_set, Val) of - true -> - {ok, nil}; - - false -> - snag:error( - <<<<<<"invalid value '"/utf8, - (gleam@string:inspect(Val))/binary>>/binary, - "', must be one of: ["/utf8>>/binary, - ((<<(begin - _pipe = Allowed, - _pipe@1 = gleam@list:map( - _pipe, - fun(A) -> - <<<<"'"/utf8, - (gleam@string:inspect(A))/binary>>/binary, - "'"/utf8>> - end - ), - gleam@string:join(_pipe@1, <<", "/utf8>>) - end)/binary, - "]"/utf8>>))/binary>> - ) - end end. - --spec none_of(list(FSL)) -> fun((FSL) -> {ok, nil} | {error, snag:snag()}). -none_of(Disallowed) -> - Disallowed_set = gleam@set:from_list(Disallowed), - fun(Val) -> case gleam@set:contains(Disallowed_set, Val) of - false -> - {ok, nil}; - - true -> - snag:error( - <<<<<<"invalid value '"/utf8, - (gleam@string:inspect(Val))/binary>>/binary, - "', must not be one of: ["/utf8>>/binary, - (((<<(begin - _pipe = Disallowed, - _pipe@1 = gleam@list:map( - _pipe, - fun(A) -> - <<<<"'"/utf8, - (gleam@string:inspect(A))/binary>>/binary, - "'"/utf8>> - end - ), - gleam@string:join(_pipe@1, <<", "/utf8>>) - end)/binary, - "]"/utf8>>)))/binary>> - ) - end end. - --spec each(fun((FSO) -> {ok, nil} | {error, snag:snag()})) -> fun((list(FSO)) -> {ok, - nil} | - {error, snag:snag()}). -each(Constraint) -> - fun(L) -> _pipe = L, - _pipe@1 = gleam@list:try_map(_pipe, Constraint), - gleam@result:replace(_pipe@1, nil) end. diff --git a/aoc2023/build/packages/packages.toml b/aoc2023/build/packages/packages.toml deleted file mode 100644 index d4c7b69..0000000 --- a/aoc2023/build/packages/packages.toml +++ /dev/null @@ -1,16 +0,0 @@ -[packages] -simplifile = "1.0.0" -gleam_community_ansi = "1.2.0" -glint = "0.13.0" -gleam_community_colour = "1.2.0" -gleam_erlang = "0.23.1" -tom = "0.2.1" -gleam_httpc = "2.1.1" -adglent = "1.2.0" -gap = "1.0.1" -gleam_community_maths = "1.0.1" -gleam_otp = "0.8.0" -gleam_stdlib = "0.33.0" -pqueue = "2.0.7" -snag = "0.2.1" -gleam_http = "3.5.2" diff --git a/aoc2023/build/packages/pqueue/LICENSE b/aoc2023/build/packages/pqueue/LICENSE deleted file mode 100644 index 5697803..0000000 --- a/aoc2023/build/packages/pqueue/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2011-2023 Michael Truog - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff --git a/aoc2023/build/packages/pqueue/README.markdown b/aoc2023/build/packages/pqueue/README.markdown deleted file mode 100644 index 77aaf1c..0000000 --- a/aoc2023/build/packages/pqueue/README.markdown +++ /dev/null @@ -1,31 +0,0 @@ -Erlang Priority Queue Implementation -==================================== - -The priority queue implementations implement a subset of the stdlib Erlang queue interface as seen in the implementation used by both [Riak and RabbitMQ](https://github.com/basho/riak_core/blob/master/src/riak_core_priority_queue.erl). - -The implementations: - -* `priority_queue` (fastest for any priorities when only using a single priority at a time) -* `pqueue` (fastest for 41 priorities, -20 (high) to 20 (low), when using 2 or more priorities at the same time) -* `pqueue2` (slower heap implementation) -* `pqueue3` (faster than `pqueue2` and `priority_queue` when using 64 or more priorities at the same time) -* `pqueue4` (slightly slower than `pqueue` but fastest for allowing 257 priorities, -128 (high) to 128 (low), i.e., fastest when using 42 or more priorities at the same time) - -[The latest results are here](http://okeuday.livejournal.com/19539.html), with [the benchmark here](http://github.com/okeuday/erlbench). - -Author ------- - -Michael Truog (mjtruog at protonmail dot com) - -Thanks ------- - -* Jesper Louis andersen (PropEr integration and testing) -* Ulf Wiger (suggestions and insight) - -License -------- - -MIT License - diff --git a/aoc2023/build/packages/pqueue/doc/edoc-info b/aoc2023/build/packages/pqueue/doc/edoc-info deleted file mode 100644 index 5e5a8d3..0000000 --- a/aoc2023/build/packages/pqueue/doc/edoc-info +++ /dev/null @@ -1,3 +0,0 @@ -%% encoding: UTF-8 -{application,pqueue}. -{modules,[pqueue,pqueue2,pqueue3,pqueue4]}. diff --git a/aoc2023/build/packages/pqueue/doc/erlang.png b/aoc2023/build/packages/pqueue/doc/erlang.png deleted file mode 100644 index 987a618..0000000 Binary files a/aoc2023/build/packages/pqueue/doc/erlang.png and /dev/null differ diff --git a/aoc2023/build/packages/pqueue/doc/index.html b/aoc2023/build/packages/pqueue/doc/index.html deleted file mode 100644 index d55b5e6..0000000 --- a/aoc2023/build/packages/pqueue/doc/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - -The pqueue application - - - - - - -<h2>This page uses frames</h2> -<p>Your browser does not accept frames. -<br>You should go to the <a href="overview-summary.html">non-frame version</a> instead. -</p> - - - \ No newline at end of file diff --git a/aoc2023/build/packages/pqueue/doc/modules-frame.html b/aoc2023/build/packages/pqueue/doc/modules-frame.html deleted file mode 100644 index 5a87cc4..0000000 --- a/aoc2023/build/packages/pqueue/doc/modules-frame.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -The pqueue application - - - -

Modules

- - - - -
pqueue
pqueue2
pqueue3
pqueue4
- - \ No newline at end of file diff --git a/aoc2023/build/packages/pqueue/doc/overview-summary.html b/aoc2023/build/packages/pqueue/doc/overview-summary.html deleted file mode 100644 index e2f8906..0000000 --- a/aoc2023/build/packages/pqueue/doc/overview-summary.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - -The pqueue application - - - - -

The pqueue application

- -
- -

Generated by EDoc

- - diff --git a/aoc2023/build/packages/pqueue/doc/pqueue.html b/aoc2023/build/packages/pqueue/doc/pqueue.html deleted file mode 100644 index 40b05ac..0000000 --- a/aoc2023/build/packages/pqueue/doc/pqueue.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - -Module pqueue - - - - -
- -

Module pqueue

- -

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-20 (high) to 20 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:34 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-20 (high) to 20 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. This implementation was created to - avoid the slowness within the priority queue used by both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue()

-

pqueue() = {integer(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}} | {empty, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, queue:queue(), {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}, {queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue(), queue:queue()}}

- - -

Function Index

- - - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
join/2 -

Join two priority queues.

- O(N).
len/1 -

Determine the length of a priority queue.

- O(N).
new/0 -

Create a new priority queue.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
test/0 -

Regression test.

.
to_list/1 -

Convert the priority queue to a list.

- O(N).
- -

Function Details

- -

in/2

-
-

in(X::term(), Q::pqueue()) -> pqueue()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(X::term(), P::integer(), Q::pqueue()) -> pqueue()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(X1::pqueue()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

join/2

-
-

join(X1::pqueue(), X2::pqueue()) -> pqueue()

-

-

Join two priority queues.

- O(N)

- -

len/1

-
-

len(X1::pqueue()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(N)

- -

new/0

-
-

new() -> pqueue()

-

-

Create a new priority queue.

- O(1)

- -

out/1

-
-

out(Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue()) -> {{value, term()}, pqueue()} | {empty, pqueue()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue()) -> {{value, term(), integer()}, pqueue()} | {empty, pqueue()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

test/0

-
-

test() -> any()

-

-

Regression test.

-

- -

to_list/1

-
-

to_list(X1::pqueue()) -> [term()]

-

-

Convert the priority queue to a list.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/packages/pqueue/doc/pqueue2.html b/aoc2023/build/packages/pqueue/doc/pqueue2.html deleted file mode 100644 index 2942b84..0000000 --- a/aoc2023/build/packages/pqueue/doc/pqueue2.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - -Module pqueue2 - - - - -
- -

Module pqueue2

- -

Skew Heap Priority Queue.

- Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority - queue implementation. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:32 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Skew Heap Priority Queue.

- Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority - queue implementation. Unfortunately, testing has shown this solution to - be more than 2 times slower than pqueue. -

Data Types

- -

pqueue2()

-

pqueue2() = empty | {integer(), pqueue2(), pqueue2(), element, term()} | {integer(), pqueue2(), pqueue2(), queue, queue:queue()}

- - -

Function Index

- - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

.
in/3 -

Append an item to the tail of a specific priority queue.

.
is_empty/1 -

Check if the priority queue is empty.

.
is_queue/1 -

Check if the priority queue type is as expected.

.
len/1 -

Determine the length of a priority queue.

.
new/0 -

Create a new priority queue.

.
out/1 -

Take an item from the head of the priority queue.

.
out/2 -

Take an item of a specific priority from the head of the queue.

.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
test/0 -

Regression test.

.
to_list/1 -

Convert the priority queue to a list.

.
- -

Function Details

- -

in/2

-
-

in(Value::term(), H::pqueue2()) -> pqueue2()

-

-

Append an item to the tail of the 0 priority queue.

-

- -

in/3

-
-

in(Value::term(), P::integer(), H::pqueue2()) -> pqueue2()

-

-

Append an item to the tail of a specific priority queue.

-

- -

is_empty/1

-
-

is_empty(X1::pqueue2()) -> true | false

-

-

Check if the priority queue is empty.

-

- -

is_queue/1

-
-

is_queue(X1::pqueue2()) -> true | false

-

-

Check if the priority queue type is as expected.

-

- -

len/1

-
-

len(H::pqueue2()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

-

- -

new/0

-
-

new() -> pqueue2()

-

-

Create a new priority queue.

-

- -

out/1

-
-

out(X1::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item from the head of the priority queue.

-

- -

out/2

-
-

out(P::integer(), H::pqueue2()) -> {{value, term()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item of a specific priority from the head of the queue.

-

- -

pout/1

-
-

pout(X1::pqueue2()) -> {{value, term(), integer()}, pqueue2()} | {empty, pqueue2()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value.

- -

test/0

-
-

test() -> any()

-

-

Regression test.

-

- -

to_list/1

-
-

to_list(H::pqueue2()) -> [term()]

-

-

Convert the priority queue to a list.

-

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/packages/pqueue/doc/pqueue3.html b/aoc2023/build/packages/pqueue/doc/pqueue3.html deleted file mode 100644 index 35f1a7b..0000000 --- a/aoc2023/build/packages/pqueue/doc/pqueue3.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -Module pqueue3 - - - - -
- -

Module pqueue3

- -

A Large Priority Queue.

- This priority queue implementation depends on layered tuples, so that tuple - access times can be exploited for quick in/out priority queue operations - when using 64 or more total priorities. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:32 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

A Large Priority Queue.

- This priority queue implementation depends on layered tuples, so that tuple - access times can be exploited for quick in/out priority queue operations - when using 64 or more total priorities. This implementation was created - to avoid the slowness within the priority queue used by - both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue3()

-

pqueue3() = {integer(), integer(), empty | integer(), tuple()}

- - -

pqueue3_empty()

-

pqueue3_empty() = {integer(), integer(), empty, tuple()}

- - -

Function Index

- - - - - - - - - - - -
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
len/1 -

Determine the length of a priority queue.

- O(N).
new/0 -

Create a new priority queue.

- O(1).
new/1 -

Create a new priority queue with customization options.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
to_list/1 -

Convert the priority queue to a list.

- O(N).
- -

Function Details

- -

in/2

-
-

in(Value::term(), Q::pqueue3()) -> pqueue3()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(Value::term(), P::integer(), X3::pqueue3()) -> pqueue3()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(Q::pqueue3()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue3()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

len/1

-
-

len(Q::pqueue3()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(N)

- -

new/0

-
-

new() -> pqueue3_empty()

-

-

Create a new priority queue.

- O(1)

- -

new/1

-
-

new(Options::[{atom(), term()}]) -> pqueue3()

-

-

Create a new priority queue with customization options.

- O(1)

- -

out/1

-
-

out(Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue3()) -> {{value, term()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue3()) -> {{value, term(), integer()}, pqueue3()} | {empty, pqueue3()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

to_list/1

-
-

to_list(Q::pqueue3()) -> [term()]

-

-

Convert the priority queue to a list.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/packages/pqueue/doc/pqueue4.html b/aoc2023/build/packages/pqueue/doc/pqueue4.html deleted file mode 100644 index edcdb6e..0000000 --- a/aoc2023/build/packages/pqueue/doc/pqueue4.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - -Module pqueue4 - - - - -
- -

Module pqueue4

- -

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-128 (high) to 128 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. -

Copyright © 2011-2020 Michael Truog

- -

Version: 2.0.1 Nov 26 2020 14:55:34 - ------------------------------------------------------------------------

-

Authors: Michael Truog (mjtruog at protonmail dot com).

- -

Description

-

Static Priority Queue.

- This priority queue implementation depends on a static number of priorities - (-128 (high) to 128 (low)) so that tuple access times can be exploited for - quick in/out priority queue operations. This implementation was created to - avoid the slowness within the priority queue used by both RabbitMQ and Riak - (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -

Data Types

- -

pqueue4()

-

pqueue4() = pqueue4(any())

- - -

pqueue4()

-

pqueue4(T) = {priority() | empty, non_neg_integer(), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, queue:queue(T), {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}

- - -

priority()

-

priority() = -128..128

- - -

Function Index

- - - - - - - - - - - - - - - -
filter/2 -

Filter the priority queue.

- O(N).
filter/3 -

Filter a specific priority within the priority queue.

- O(N).
in/2 -

Append an item to the tail of the 0 priority queue.

- O(1).
in/3 -

Append an item to the tail of a specific priority queue.

- O(1).
is_empty/1 -

Check if the priority queue is empty.

- O(1).
is_queue/1 -

Check if the priority queue type is as expected.

- O(1).
len/1 -

Determine the length of a priority queue.

- O(1).
new/0 -

Create a new priority queue.

- O(1).
out/1 -

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case.
out/2 -

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case.
pout/1 -

Take an item from the head of the priority queue.

- Includes the priority in the return value.
remove_unique/2 -

Remove a unique value from the priority queue with a binary predicate.

- O(N) but smaller constant than filter/2.
remove_unique/3 -

Remove a unique value in a specific priority within the priority queue with a binary predicate.

- O(N) but smaller constant than filter/3.
to_list/1 -

Convert the priority queue to a list.

- O(N).
to_plist/1 -

Convert the priority queue to a list with priorities.

- O(N).
- -

Function Details

- -

filter/2

-
-

filter(F::fun((any()) -> boolean()), Q::pqueue4()) -> pqueue4()

-

-

Filter the priority queue.

- O(N)

- -

filter/3

-
-

filter(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> pqueue4()

-

-

Filter a specific priority within the priority queue.

- O(N)

- -

in/2

-
-

in(X::any(), Q::pqueue4()) -> pqueue4()

-

-

Append an item to the tail of the 0 priority queue.

- O(1)

- -

in/3

-
-

in(X::any(), P::integer(), Q::pqueue4()) -> pqueue4()

-

-

Append an item to the tail of a specific priority queue.

- O(1)

- -

is_empty/1

-
-

is_empty(X1::pqueue4()) -> true | false

-

-

Check if the priority queue is empty.

- O(1)

- -

is_queue/1

-
-

is_queue(X1::pqueue4()) -> true | false

-

-

Check if the priority queue type is as expected.

- O(1)

- -

len/1

-
-

len(X1::pqueue4()) -> non_neg_integer()

-

-

Determine the length of a priority queue.

- O(1)

- -

new/0

-
-

new() -> pqueue4()

-

-

Create a new priority queue.

- O(1)

- -

out/1

-
-

out(Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item from the head of the priority queue.

- O(1) amortized, O(N) worst case

- -

out/2

-
-

out(P::integer(), Q::pqueue4()) -> {{value, any()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item of a specific priority from the head of the queue.

- O(1) amortized, O(N) worst case

- -

pout/1

-
-

pout(Q::pqueue4()) -> {{value, any(), integer()}, pqueue4()} | {empty, pqueue4()}

-

-

Take an item from the head of the priority queue.

- Includes the priority in the return value. - O(1) amortized, O(N) worst case

- -

remove_unique/2

-
-

remove_unique(F::fun((any()) -> boolean()), Q::pqueue4()) -> {boolean(), pqueue4()}

-

-

Remove a unique value from the priority queue with a binary predicate.

- O(N) but smaller constant than filter/2

- -

remove_unique/3

-
-

remove_unique(F::fun((any()) -> boolean()), P::integer(), Q::pqueue4()) -> {boolean(), pqueue4()}

-

-

Remove a unique value in a specific priority within the priority queue with a binary predicate.

- O(N) but smaller constant than filter/3

- -

to_list/1

-
-

to_list(Q::pqueue4()) -> list()

-

-

Convert the priority queue to a list.

- O(N)

- -

to_plist/1

-
-

to_plist(Q::pqueue4()) -> [{priority(), list()}]

-

-

Convert the priority queue to a list with priorities.

- O(N)

-
- - -

Generated by EDoc

- - diff --git a/aoc2023/build/packages/pqueue/doc/stylesheet.css b/aoc2023/build/packages/pqueue/doc/stylesheet.css deleted file mode 100644 index ab170c0..0000000 --- a/aoc2023/build/packages/pqueue/doc/stylesheet.css +++ /dev/null @@ -1,55 +0,0 @@ -/* standard EDoc style sheet */ -body { - font-family: Verdana, Arial, Helvetica, sans-serif; - margin-left: .25in; - margin-right: .2in; - margin-top: 0.2in; - margin-bottom: 0.2in; - color: #000000; - background-color: #ffffff; -} -h1,h2 { - margin-left: -0.2in; -} -div.navbar { - background-color: #add8e6; - padding: 0.2em; -} -h2.indextitle { - padding: 0.4em; - background-color: #add8e6; -} -h3.function,h3.typedecl { - background-color: #add8e6; - padding-left: 1em; -} -div.spec { - margin-left: 2em; - background-color: #eeeeee; -} -a.module { - text-decoration:none -} -a.module:hover { - background-color: #eeeeee; -} -ul.definitions { - list-style-type: none; -} -ul.index { - list-style-type: none; - background-color: #eeeeee; -} - -/* - * Minor style tweaks - */ -ul { - list-style-type: square; -} -table { - border-collapse: collapse; -} -td { - padding: 3 -} diff --git a/aoc2023/build/packages/pqueue/rebar.config b/aoc2023/build/packages/pqueue/rebar.config deleted file mode 100644 index f8022f0..0000000 --- a/aoc2023/build/packages/pqueue/rebar.config +++ /dev/null @@ -1,14 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: - -{erl_opts, - [{platform_define, "^R16", 'ERLANG_OTP_VERSION_16'}, - {platform_define, "^17\.", 'ERLANG_OTP_VERSION_17'}, - {platform_define, "^18\.", 'ERLANG_OTP_VERSION_18'}, - {platform_define, "^19\.", 'ERLANG_OTP_VERSION_19'}, - {platform_define, "^20\.", 'ERLANG_OTP_VERSION_20'}, - warn_export_vars, - warn_unused_import, - %warn_missing_spec, - warnings_as_errors]}. -{edoc_opts, [{preprocess, true}]}. diff --git a/aoc2023/build/packages/pqueue/src/pqueue.app.src b/aoc2023/build/packages/pqueue/src/pqueue.app.src deleted file mode 100644 index b153ad1..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue.app.src +++ /dev/null @@ -1,10 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: - -{application, pqueue, - [{description, "Priority Queue Data Structures"}, - {vsn, "2.0.7"}, - {modules, [pqueue, pqueue2, pqueue3, pqueue4]}, - {registered, []}, - {applications, [stdlib, kernel]}]}. - diff --git a/aoc2023/build/packages/pqueue/src/pqueue.erl b/aoc2023/build/packages/pqueue/src/pqueue.erl deleted file mode 100644 index 2c57fa2..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue.erl +++ /dev/null @@ -1,2246 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Static Priority Queue.== -%%% This priority queue implementation depends on a static number of priorities -%%% (-20 (high) to 20 (low)) so that tuple access times can be exploited for -%%% quick in/out priority queue operations. This implementation was created to -%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - join/2, % O(N) typically (?) - len/1, % O(N) - new/0, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - to_list/1, % O(N) - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --ifdef(ERLANG_OTP_VERSION_16). --type pqueue() :: - {integer(), - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}} | - {'empty', - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. --else. --type pqueue() :: - {integer(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - queue:queue(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}} | - {'empty', - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - queue:queue(), - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}, - {queue:queue(), queue:queue(), queue:queue(), queue:queue(), - queue:queue(), queue:queue(), queue:queue()}}. --endif. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue()) -> pqueue(). - -in(X, Q) -> - in(X, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue()) -> pqueue(). - -in(_, P, _) - when P < -20; P > 20 -> - erlang:exit(badarg); -in(X, P, {empty, _, _, _, _, _, _, _} = Q) -> - in_higher(P, Q, X); -in(X, P, {Pc, _, _, _, _, _, _, _} = Q) - when P < Pc -> - in_higher(P, Q, X); -in(X, P, Q) -> - in_lower(P, Q, X). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue()) -> 'true' | 'false'. - -is_empty({empty, _, _, _, _, _, _, _}) -> - true; -is_empty({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:is_empty(Qn20) and queue:is_empty(Qn19) and queue:is_empty(Qn18) and - queue:is_empty(Qn17) and queue:is_empty(Qn16) and queue:is_empty(Qn15) and - queue:is_empty(Qn14) and - queue:is_empty(Qn13) and queue:is_empty(Qn12) and queue:is_empty(Qn11) and - queue:is_empty(Qn10) and queue:is_empty(Qn9) and queue:is_empty(Qn8) and - queue:is_empty(Qn7) and - queue:is_empty(Qn6) and queue:is_empty(Qn5) and queue:is_empty(Qn4) and - queue:is_empty(Qn3) and queue:is_empty(Qn2) and queue:is_empty(Qn1) and - queue:is_empty(Q0) and - queue:is_empty(Qp1) and queue:is_empty(Qp2) and queue:is_empty(Qp3) and - queue:is_empty(Qp4) and queue:is_empty(Qp5) and queue:is_empty(Qp6) and - queue:is_empty(Qp7) and queue:is_empty(Qp8) and queue:is_empty(Qp9) and - queue:is_empty(Qp10) and queue:is_empty(Qp11) and queue:is_empty(Qp12) and - queue:is_empty(Qp13) and - queue:is_empty(Qp14) and queue:is_empty(Qp15) and queue:is_empty(Qp16) and - queue:is_empty(Qp17) and queue:is_empty(Qp18) and queue:is_empty(Qp19) and - queue:is_empty(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue()) -> 'true' | 'false'. - -is_queue({Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) - when tuple_size(Qsn14) == 7, tuple_size(Qsn7) == 7, tuple_size(Qsn1) == 6, - tuple_size(Qsp14) == 7, tuple_size(Qsp7) == 7, tuple_size(Qsp1) == 6 -> - (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Join two priority queues.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec join(pqueue(), pqueue()) -> pqueue(). - -join({P1c, - {Q1_n20, Q1_n19, Q1_n18, Q1_n17, Q1_n16, Q1_n15, Q1_n14}, - {Q1_n13, Q1_n12, Q1_n11, Q1_n10, Q1_n9, Q1_n8, Q1_n7}, - {Q1_n6, Q1_n5, Q1_n4, Q1_n3, Q1_n2, Q1_n1}, - Q1_0, - {Q1_p1, Q1_p2, Q1_p3, Q1_p4, Q1_p5, Q1_p6}, - {Q1_p7, Q1_p8, Q1_p9, Q1_p10, Q1_p11, Q1_p12, Q1_p13}, - {Q1_p14, Q1_p15, Q1_p16, Q1_p17, Q1_p18, Q1_p19, Q1_p20}}, - {P2c, - {Q2_n20, Q2_n19, Q2_n18, Q2_n17, Q2_n16, Q2_n15, Q2_n14}, - {Q2_n13, Q2_n12, Q2_n11, Q2_n10, Q2_n9, Q2_n8, Q2_n7}, - {Q2_n6, Q2_n5, Q2_n4, Q2_n3, Q2_n2, Q2_n1}, - Q2_0, - {Q2_p1, Q2_p2, Q2_p3, Q2_p4, Q2_p5, Q2_p6}, - {Q2_p7, Q2_p8, Q2_p9, Q2_p10, Q2_p11, Q2_p12, Q2_p13}, - {Q2_p14, Q2_p15, Q2_p16, Q2_p17, Q2_p18, Q2_p19, Q2_p20}}) -> - {erlang:min(P1c, P2c), - {queue:join(Q1_n20, Q2_n20), queue:join(Q1_n19, Q2_n19), - queue:join(Q1_n18, Q2_n18), queue:join(Q1_n17, Q2_n17), - queue:join(Q1_n16, Q2_n16), queue:join(Q1_n15, Q2_n15), - queue:join(Q1_n14, Q2_n14)}, - {queue:join(Q1_n13, Q2_n13), queue:join(Q1_n12, Q2_n12), - queue:join(Q1_n11, Q2_n11), queue:join(Q1_n10, Q2_n10), - queue:join(Q1_n9, Q2_n9), queue:join(Q1_n8, Q2_n8), - queue:join(Q1_n7, Q2_n7)}, - {queue:join(Q1_n6, Q2_n6), queue:join(Q1_n5, Q2_n5), - queue:join(Q1_n4, Q2_n4), queue:join(Q1_n3, Q2_n3), - queue:join(Q1_n2, Q2_n2), queue:join(Q1_n1, Q2_n1)}, - queue:join(Q1_0, Q2_0), - {queue:join(Q1_p1, Q2_p1), queue:join(Q1_p2, Q2_p2), - queue:join(Q1_p3, Q2_p3), queue:join(Q1_p4, Q2_p4), - queue:join(Q1_p5, Q2_p5), queue:join(Q1_p6, Q2_p6)}, - {queue:join(Q1_p7, Q2_p7), queue:join(Q1_p8, Q2_p8), - queue:join(Q1_p9, Q2_p9), queue:join(Q1_p10, Q2_p10), - queue:join(Q1_p11, Q2_p11), queue:join(Q1_p12, Q2_p12), - queue:join(Q1_p13, Q2_p13)}, - {queue:join(Q1_p14, Q2_p14), queue:join(Q1_p15, Q2_p15), - queue:join(Q1_p16, Q2_p16), queue:join(Q1_p17, Q2_p17), - queue:join(Q1_p18, Q2_p18), queue:join(Q1_p19, Q2_p19), - queue:join(Q1_p20, Q2_p20)}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue()) -> non_neg_integer(). - -len({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:len(Qn20) + queue:len(Qn19) + queue:len(Qn18) + queue:len(Qn17) + - queue:len(Qn16) + queue:len(Qn15) + queue:len(Qn14) + - queue:len(Qn13) + queue:len(Qn12) + queue:len(Qn11) + queue:len(Qn10) + - queue:len(Qn9) + queue:len(Qn8) + queue:len(Qn7) + - queue:len(Qn6) + queue:len(Qn5) + queue:len(Qn4) + queue:len(Qn3) + - queue:len(Qn2) + queue:len(Qn1) + - queue:len(Q0) + - queue:len(Qp1) + queue:len(Qp2) + queue:len(Qp3) + queue:len(Qp4) + - queue:len(Qp5) + queue:len(Qp6) + - queue:len(Qp7) + queue:len(Qp8) + queue:len(Qp9) + queue:len(Qp10) + - queue:len(Qp11) + queue:len(Qp12) + queue:len(Qp13) + - queue:len(Qp14) + queue:len(Qp15) + queue:len(Qp16) + queue:len(Qp17) + - queue:len(Qp18) + queue:len(Qp19) + queue:len(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue(). - -new() -> - {empty, % current priority - erlang:make_tuple(7, queue:new()), % priority [-20..-14] - erlang:make_tuple(7, queue:new()), % priority [-13.. -7] - erlang:make_tuple(6, queue:new()), % priority [ -6.. -1] - queue:new(), % priority 0 (default) - erlang:make_tuple(6, queue:new()), % priority [ 1.. 6] - erlang:make_tuple(7, queue:new()), % priority [ 7.. 13] - erlang:make_tuple(7, queue:new())}. % priority [ 14.. 20] - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue()) -> - {{'value', term()}, pqueue()} | {'empty', pqueue()}. - -out({empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out({Pc, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q, nopriority). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue()) -> - {{'value', term()}, pqueue()} | {'empty', pqueue()}. - -out(P, _) - when P < -20; P > 20 -> - erlang:exit(badarg); -out(_, {empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out(P, Q) -> - out_specific(P, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue()) -> - {{'value', term(), integer()}, pqueue()} | {'empty', pqueue()}. - -pout({empty, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -pout({Pc, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q, priority). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue()) -> list(term()). - -to_list({_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - queue:to_list(Qn20) ++ queue:to_list(Qn19) ++ queue:to_list(Qn18) ++ - queue:to_list(Qn17) ++ queue:to_list(Qn16) ++ queue:to_list(Qn15) ++ - queue:to_list(Qn14) ++ - queue:to_list(Qn13) ++ queue:to_list(Qn12) ++ queue:to_list(Qn11) ++ - queue:to_list(Qn10) ++ queue:to_list(Qn9) ++ queue:to_list(Qn8) ++ - queue:to_list(Qn7) ++ - queue:to_list(Qn6) ++ queue:to_list(Qn5) ++ queue:to_list(Qn4) ++ - queue:to_list(Qn3) ++ queue:to_list(Qn2) ++ queue:to_list(Qn1) ++ - queue:to_list(Q0) ++ - queue:to_list(Qp1) ++ queue:to_list(Qp2) ++ queue:to_list(Qp3) ++ - queue:to_list(Qp4) ++ queue:to_list(Qp5) ++ queue:to_list(Qp6) ++ - queue:to_list(Qp7) ++ queue:to_list(Qp8) ++ queue:to_list(Qp9) ++ - queue:to_list(Qp10) ++ queue:to_list(Qp11) ++ queue:to_list(Qp12) ++ - queue:to_list(Qp13) ++ - queue:to_list(Qp14) ++ queue:to_list(Qp15) ++ queue:to_list(Qp16) ++ - queue:to_list(Qp17) ++ queue:to_list(Qp18) ++ queue:to_list(Qp19) ++ - queue:to_list(Qp20). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue:new(), - true = pqueue:is_queue(Q0), - Q1 = pqueue:in(20, 20, Q0), - Q2 = pqueue:in(19, 19, Q1), - Q3 = pqueue:in(18, 18, Q2), - Q4 = pqueue:in(17, 17, Q3), - Q5 = pqueue:in(16, 16, Q4), - Q6 = pqueue:in(15, 15, Q5), - Q7 = pqueue:in(14, 14, Q6), - Q8 = pqueue:in(13, 13, Q7), - Q9 = pqueue:in(12, 12, Q8), - Q10 = pqueue:in(11, 11, Q9), - Q11 = pqueue:in(10, 10, Q10), - Q12 = pqueue:in(9, 9, Q11), - Q13 = pqueue:in(8, 8, Q12), - Q14 = pqueue:in(7, 7, Q13), - Q15 = pqueue:in(6, 6, Q14), - Q16 = pqueue:in(5, 5, Q15), - Q17 = pqueue:in(4, 4, Q16), - Q18 = pqueue:in(3, 3, Q17), - Q19 = pqueue:in(2, 2, Q18), - Q20 = pqueue:in(1, 1, Q19), - Q21 = pqueue:in(0, 0, Q20), - Q22 = pqueue:in(-1, -1, Q21), - Q23 = pqueue:in(-2, -2, Q22), - Q24 = pqueue:in(-3, -3, Q23), - Q25 = pqueue:in(-4, -4, Q24), - Q26 = pqueue:in(-5, -5, Q25), - Q27 = pqueue:in(-6, -6, Q26), - Q28 = pqueue:in(-7, -7, Q27), - Q29 = pqueue:in(-8, -8, Q28), - Q30 = pqueue:in(-9, -9, Q29), - Q31 = pqueue:in(-10, -10, Q30), - Q32 = pqueue:in(-11, -11, Q31), - Q33 = pqueue:in(-12, -12, Q32), - Q34 = pqueue:in(-13, -13, Q33), - Q35 = pqueue:in(-14, -14, Q34), - Q36 = pqueue:in(-15, -15, Q35), - Q37 = pqueue:in(-16, -16, Q36), - Q38 = pqueue:in(-17, -17, Q37), - Q39 = pqueue:in(-18, -18, Q38), - Q40 = pqueue:in(-19, -19, Q39), - Q41 = pqueue:in(-20, -20, Q40), - Q42 = pqueue:in(-20, -20, Q41), - Q43 = pqueue:in(-19, -19, Q42), - Q44 = pqueue:in(-18, -18, Q43), - Q45 = pqueue:in(-17, -17, Q44), - Q46 = pqueue:in(-16, -16, Q45), - Q47 = pqueue:in(-15, -15, Q46), - Q48 = pqueue:in(-14, -14, Q47), - Q49 = pqueue:in(-13, -13, Q48), - Q50 = pqueue:in(-12, -12, Q49), - Q51 = pqueue:in(-11, -11, Q50), - Q52 = pqueue:in(-10, -10, Q51), - Q53 = pqueue:in(-9, -9, Q52), - Q54 = pqueue:in(-8, -8, Q53), - Q55 = pqueue:in(-7, -7, Q54), - Q56 = pqueue:in(-6, -6, Q55), - Q57 = pqueue:in(-5, -5, Q56), - Q58 = pqueue:in(-4, -4, Q57), - Q59 = pqueue:in(-3, -3, Q58), - Q60 = pqueue:in(-2, -2, Q59), - Q61 = pqueue:in(-1, -1, Q60), - Q62 = pqueue:in(0, 0, Q61), - Q63 = pqueue:in(1, 1, Q62), - Q64 = pqueue:in(2, 2, Q63), - Q65 = pqueue:in(3, 3, Q64), - Q66 = pqueue:in(4, 4, Q65), - Q67 = pqueue:in(5, 5, Q66), - Q68 = pqueue:in(6, 6, Q67), - Q69 = pqueue:in(7, 7, Q68), - Q70 = pqueue:in(8, 8, Q69), - Q71 = pqueue:in(9, 9, Q70), - Q72 = pqueue:in(10, 10, Q71), - Q73 = pqueue:in(11, 11, Q72), - Q74 = pqueue:in(12, 12, Q73), - Q75 = pqueue:in(13, 13, Q74), - Q76 = pqueue:in(14, 14, Q75), - Q77 = pqueue:in(15, 15, Q76), - Q78 = pqueue:in(16, 16, Q77), - Q79 = pqueue:in(17, 17, Q78), - Q80 = pqueue:in(18, 18, Q79), - Q81 = pqueue:in(19, 19, Q80), - Q82 = pqueue:in(20, 20, Q81), - true = pqueue:is_queue(Q82), - 82 = pqueue:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue:to_list(Q82), - {{value, -20}, Q83} = pqueue:out(Q82), - {{value, -20}, Q84} = pqueue:out(Q83), - {{value, -19}, Q85} = pqueue:out(Q84), - {{value, -19}, Q86} = pqueue:out(Q85), - {{value, -18}, Q87} = pqueue:out(Q86), - {{value, -18}, Q88} = pqueue:out(Q87), - {{value, 0}, Q89} = pqueue:out(0, Q88), - {{value, 0}, Q90} = pqueue:out(0, Q89), - {empty, _} = pqueue:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue:pout(Q90), - {{value, -17, -17}, Q92} = pqueue:pout(Q91), - {{value, -16, -16}, Q93} = pqueue:pout(Q92), - {{value, -16, -16}, Q94} = pqueue:pout(Q93), - {{value, -15, -15}, Q95} = pqueue:pout(Q94), - {{value, -15, -15}, Q96} = pqueue:pout(Q95), - {{value, -14, -14}, Q97} = pqueue:pout(Q96), - {{value, -14, -14}, Q98} = pqueue:pout(Q97), - {{value, -13, -13}, Q99} = pqueue:pout(Q98), - {{value, -13, -13}, Q100} = pqueue:pout(Q99), - {{value, -12, -12}, Q101} = pqueue:pout(Q100), - {{value, -12, -12}, Q102} = pqueue:pout(Q101), - {{value, -11, -11}, Q103} = pqueue:pout(Q102), - {{value, -11, -11}, Q104} = pqueue:pout(Q103), - {{value, -10, -10}, Q105} = pqueue:pout(Q104), - {{value, -10, -10}, Q106} = pqueue:pout(Q105), - {{value, -9, -9}, Q107} = pqueue:pout(Q106), - {{value, -9, -9}, Q108} = pqueue:pout(Q107), - {{value, -8, -8}, Q109} = pqueue:pout(Q108), - {{value, -8, -8}, Q110} = pqueue:pout(Q109), - {{value, -7, -7}, Q111} = pqueue:pout(Q110), - {{value, -7, -7}, Q112} = pqueue:pout(Q111), - {{value, -6, -6}, Q113} = pqueue:pout(Q112), - {{value, -6, -6}, Q114} = pqueue:pout(Q113), - {{value, -5, -5}, Q115} = pqueue:pout(Q114), - {{value, -5, -5}, Q116} = pqueue:pout(Q115), - {{value, -4, -4}, Q117} = pqueue:pout(Q116), - {{value, -4, -4}, Q118} = pqueue:pout(Q117), - {{value, -3, -3}, Q119} = pqueue:pout(Q118), - {{value, -3, -3}, Q120} = pqueue:pout(Q119), - {{value, -2, -2}, Q121} = pqueue:pout(Q120), - {{value, -2, -2}, Q122} = pqueue:pout(Q121), - {{value, -1, -1}, Q123} = pqueue:pout(Q122), - {{value, -1, -1}, Q124} = pqueue:pout(Q123), - {{value, 1, 1}, Q125} = pqueue:pout(Q124), - {{value, 1, 1}, Q126} = pqueue:pout(Q125), - {{value, 2, 2}, Q127} = pqueue:pout(Q126), - {{value, 2, 2}, Q128} = pqueue:pout(Q127), - {{value, 3, 3}, Q129} = pqueue:pout(Q128), - {{value, 3, 3}, Q130} = pqueue:pout(Q129), - {{value, 4, 4}, Q131} = pqueue:pout(Q130), - {{value, 4, 4}, Q132} = pqueue:pout(Q131), - {{value, 5, 5}, Q133} = pqueue:pout(Q132), - {{value, 5, 5}, Q134} = pqueue:pout(Q133), - {{value, 6, 6}, Q135} = pqueue:pout(Q134), - {{value, 6, 6}, Q136} = pqueue:pout(Q135), - {{value, 7, 7}, Q137} = pqueue:pout(Q136), - {{value, 7, 7}, Q138} = pqueue:pout(Q137), - {{value, 8, 8}, Q139} = pqueue:pout(Q138), - {{value, 8, 8}, Q140} = pqueue:pout(Q139), - {{value, 9, 9}, Q141} = pqueue:pout(Q140), - {{value, 9, 9}, Q142} = pqueue:pout(Q141), - {{value, 10, 10}, Q143} = pqueue:pout(Q142), - {{value, 10, 10}, Q144} = pqueue:pout(Q143), - {{value, 11, 11}, Q145} = pqueue:pout(Q144), - {{value, 11, 11}, Q146} = pqueue:pout(Q145), - {{value, 12, 12}, Q147} = pqueue:pout(Q146), - {{value, 12, 12}, Q148} = pqueue:pout(Q147), - {{value, 13, 13}, Q149} = pqueue:pout(Q148), - {{value, 13, 13}, Q150} = pqueue:pout(Q149), - {{value, 14, 14}, Q151} = pqueue:pout(Q150), - {{value, 14, 14}, Q152} = pqueue:pout(Q151), - {{value, 15, 15}, Q153} = pqueue:pout(Q152), - {{value, 15, 15}, Q154} = pqueue:pout(Q153), - {{value, 16, 16}, Q155} = pqueue:pout(Q154), - {{value, 16, 16}, Q156} = pqueue:pout(Q155), - {{value, 17, 17}, Q157} = pqueue:pout(Q156), - {{value, 17, 17}, Q158} = pqueue:pout(Q157), - {{value, 18, 18}, Q159} = pqueue:pout(Q158), - {{value, 18, 18}, Q160} = pqueue:pout(Q159), - {{value, 19, 19}, Q161} = pqueue:pout(Q160), - {{value, 19, 19}, Q162} = pqueue:pout(Q161), - {{value, 20, 20}, Q163} = pqueue:pout(Q162), - {{value, 20, 20}, Q164} = pqueue:pout(Q163), - true = pqueue:is_empty(Q164), - {empty, Q165} = pqueue:pout(Q164), - true = pqueue:is_empty(Q165), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -in_higher(-20, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-20, - {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-19, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-19, - {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-18, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-18, - {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-17, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-17, - {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-16, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-16, - {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-15, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-15, - {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-14, {_, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-14, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-13, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-13, Qsn14, - {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-12, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-12, Qsn14, - {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-11, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-11, Qsn14, - {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-10, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-10, Qsn14, - {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-9, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-9, Qsn14, - {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-8, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-8, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-7, {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-7, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-6, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-6, Qsn14, Qsn7, - {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-5, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-5, Qsn14, Qsn7, - {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-4, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-4, Qsn14, Qsn7, - {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-3, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-3, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-2, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-2, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(-1, {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {-1, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, - Q0, Qsp1, Qsp7, Qsp14}; -in_higher(0, {_, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {0, Qsn14, Qsn7, Qsn1, - queue:in(X, Q0), - Qsp1, Qsp7, Qsp14}; -in_higher(1, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {1, Qsn14, Qsn7, Qsn1, Q0, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(2, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {2, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(3, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {3, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(4, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {4, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, - Qsp7, Qsp14}; -in_higher(5, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {5, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, - Qsp7, Qsp14}; -in_higher(6, {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {6, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, - Qsp7, Qsp14}; -in_higher(7, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(8, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(9, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(10, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, - Qsp14}; -in_higher(11, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, - Qsp14}; -in_higher(12, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, - Qsp14}; -in_higher(13, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, - Qsp14}; -in_higher(14, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_higher(15, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_higher(16, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; -in_higher(17, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; -in_higher(18, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; -in_higher(19, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; -in_higher(20, {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. - -in_lower(-20, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {queue:in(X, Qn20), Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-19, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, queue:in(X, Qn19), Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-18, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, queue:in(X, Qn18), Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-17, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, queue:in(X, Qn17), Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-16, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, queue:in(X, Qn16), Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-15, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, queue:in(X, Qn15), Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-14, {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, queue:in(X, Qn14)}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-13, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {queue:in(X, Qn13), Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-12, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, queue:in(X, Qn12), Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-11, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-10, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-9, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-8, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-7, {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7)}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-6, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {queue:in(X, Qn6), Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-5, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-4, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-3, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-2, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(-1, {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}, - Q0, Qsp1, Qsp7, Qsp14}; -in_lower(0, {Pc, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, - queue:in(X, Q0), - Qsp1, Qsp7, Qsp14}; -in_lower(1, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(2, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(3, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(4, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, Qp6}, - Qsp7, Qsp14}; -in_lower(5, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), Qp6}, - Qsp7, Qsp14}; -in_lower(6, {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, queue:in(X, Qp6)}, - Qsp7, Qsp14}; -in_lower(7, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(8, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(9, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(10, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, Qp12, Qp13}, - Qsp14}; -in_lower(11, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), Qp12, Qp13}, - Qsp14}; -in_lower(12, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, queue:in(X, Qp12), Qp13}, - Qsp14}; -in_lower(13, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, queue:in(X, Qp13)}, - Qsp14}; -in_lower(14, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {queue:in(X, Qp14), Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_lower(15, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, queue:in(X, Qp15), Qp16, Qp17, Qp18, Qp19, Qp20}}; -in_lower(16, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, queue:in(X, Qp16), Qp17, Qp18, Qp19, Qp20}}; -in_lower(17, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, queue:in(X, Qp17), Qp18, Qp19, Qp20}}; -in_lower(18, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, queue:in(X, Qp18), Qp19, Qp20}}; -in_lower(19, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, queue:in(X, Qp19), Qp20}}; -in_lower(20, {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}, X) -> - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, queue:in(X, Qp20)}}. - -out_current(-20, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn20} = queue:out(Qn20), - if - Value =:= empty -> - out_current(-19, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -20}; - true -> - Value - end, - {NewValue, - {-20, - {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-19, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn19} = queue:out(Qn19), - if - Value =:= empty -> - out_current(-18, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -19}; - true -> - Value - end, - {NewValue, - {-19, - {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-18, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn18} = queue:out(Qn18), - if - Value =:= empty -> - out_current(-17, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -18}; - true -> - Value - end, - {NewValue, - {-18, - {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-17, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn17} = queue:out(Qn17), - if - Value =:= empty -> - out_current(-16, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -17}; - true -> - Value - end, - {NewValue, - {-17, - {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-16, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn16} = queue:out(Qn16), - if - Value =:= empty -> - out_current(-15, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -16}; - true -> - Value - end, - {NewValue, - {-16, - {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-15, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn15} = queue:out(Qn15), - if - Value =:= empty -> - out_current(-14, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -15}; - true -> - Value - end, - {NewValue, - {-15, - {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-14, - {_, {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn14} = queue:out(Qn14), - if - Value =:= empty -> - out_current(-13, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -14}; - true -> - Value - end, - {NewValue, - {-14, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-13, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn13} = queue:out(Qn13), - if - Value =:= empty -> - out_current(-12, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -13}; - true -> - Value - end, - {NewValue, - {-13, Qsn14, - {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-12, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn12} = queue:out(Qn12), - if - Value =:= empty -> - out_current(-11, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -12}; - true -> - Value - end, - {NewValue, - {-12, Qsn14, - {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-11, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn11} = queue:out(Qn11), - if - Value =:= empty -> - out_current(-10, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -11}; - true -> - Value - end, - {NewValue, - {-11, Qsn14, - {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-10, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn10} = queue:out(Qn10), - if - Value =:= empty -> - out_current(-9, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -10}; - true -> - Value - end, - {NewValue, - {-10, Qsn14, - {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-9, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn9} = queue:out(Qn9), - if - Value =:= empty -> - out_current(-8, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -9}; - true -> - Value - end, - {NewValue, - {-9, Qsn14, - {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-8, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn8} = queue:out(Qn8), - if - Value =:= empty -> - out_current(-7, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -8}; - true -> - Value - end, - {NewValue, - {-8, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-7, - {_, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn7} = queue:out(Qn7), - if - Value =:= empty -> - out_current(-6, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -7}; - true -> - Value - end, - {NewValue, - {-7, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-6, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn6} = queue:out(Qn6), - if - Value =:= empty -> - out_current(-5, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -6}; - true -> - Value - end, - {NewValue, - {-6, Qsn14, Qsn7, - {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-5, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn5} = queue:out(Qn5), - if - Value =:= empty -> - out_current(-4, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -5}; - true -> - Value - end, - {NewValue, - {-5, Qsn14, Qsn7, - {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-4, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn4} = queue:out(Qn4), - if - Value =:= empty -> - out_current(-3, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -4}; - true -> - Value - end, - {NewValue, - {-4, Qsn14, Qsn7, - {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-3, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn3} = queue:out(Qn3), - if - Value =:= empty -> - out_current(-2, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -3}; - true -> - Value - end, - {NewValue, - {-3, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-2, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn2} = queue:out(Qn2), - if - Value =:= empty -> - out_current(-1, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -2}; - true -> - Value - end, - {NewValue, - {-2, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(-1, - {_, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQn1} = queue:out(Qn1), - if - Value =:= empty -> - out_current(0, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, -1}; - true -> - Value - end, - {NewValue, - {-1, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, - Q0, Qsp1, Qsp7, Qsp14}} - end; -out_current(0, - {_, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQ0} = queue:out(Q0), - if - Value =:= empty -> - out_current(1, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 0}; - true -> - Value - end, - {NewValue, - {0, Qsn14, Qsn7, Qsn1, - NewQ0, - Qsp1, Qsp7, Qsp14}} - end; -out_current(1, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp1} = queue:out(Qp1), - if - Value =:= empty -> - out_current(2, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 1}; - true -> - Value - end, - {NewValue, - {1, Qsn14, Qsn7, Qsn1, Q0, - {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(2, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp2} = queue:out(Qp2), - if - Value =:= empty -> - out_current(3, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 2}; - true -> - Value - end, - {NewValue, - {2, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(3, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp3} = queue:out(Qp3), - if - Value =:= empty -> - out_current(4, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 3}; - true -> - Value - end, - {NewValue, - {3, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(4, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp4} = queue:out(Qp4), - if - Value =:= empty -> - out_current(5, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 4}; - true -> - Value - end, - {NewValue, - {4, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(5, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp5} = queue:out(Qp5), - if - Value =:= empty -> - out_current(6, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 5}; - true -> - Value - end, - {NewValue, - {5, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, - Qsp7, Qsp14}} - end; -out_current(6, - {_, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14} = Q, ReturnType) -> - {Value, NewQp6} = queue:out(Qp6), - if - Value =:= empty -> - out_current(7, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 6}; - true -> - Value - end, - {NewValue, - {6, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, - Qsp7, Qsp14}} - end; -out_current(7, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp7} = queue:out(Qp7), - if - Value =:= empty -> - out_current(8, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 7}; - true -> - Value - end, - {NewValue, - {7, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(8, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp8} = queue:out(Qp8), - if - Value =:= empty -> - out_current(9, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 8}; - true -> - Value - end, - {NewValue, - {8, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(9, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp9} = queue:out(Qp9), - if - Value =:= empty -> - out_current(10, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 9}; - true -> - Value - end, - {NewValue, - {9, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(10, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp10} = queue:out(Qp10), - if - Value =:= empty -> - out_current(11, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 10}; - true -> - Value - end, - {NewValue, - {10, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(11, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp11} = queue:out(Qp11), - if - Value =:= empty -> - out_current(12, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 11}; - true -> - Value - end, - {NewValue, - {11, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, - Qsp14}} - end; -out_current(12, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp12} = queue:out(Qp12), - if - Value =:= empty -> - out_current(13, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 12}; - true -> - Value - end, - {NewValue, - {12, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, - Qsp14}} - end; -out_current(13, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14} = Q, ReturnType) -> - {Value, NewQp13} = queue:out(Qp13), - if - Value =:= empty -> - out_current(14, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 13}; - true -> - Value - end, - {NewValue, - {13, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, - Qsp14}} - end; -out_current(14, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp14} = queue:out(Qp14), - if - Value =:= empty -> - out_current(15, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 14}; - true -> - Value - end, - {NewValue, - {14, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(15, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp15} = queue:out(Qp15), - if - Value =:= empty -> - out_current(16, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 15}; - true -> - Value - end, - {NewValue, - {15, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(16, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp16} = queue:out(Qp16), - if - Value =:= empty -> - out_current(17, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 16}; - true -> - Value - end, - {NewValue, - {16, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}} - end; -out_current(17, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp17} = queue:out(Qp17), - if - Value =:= empty -> - out_current(18, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 17}; - true -> - Value - end, - {NewValue, - {17, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}} - end; -out_current(18, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp18} = queue:out(Qp18), - if - Value =:= empty -> - out_current(19, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 18}; - true -> - Value - end, - {NewValue, - {18, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}} - end; -out_current(19, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}} = Q, ReturnType) -> - {Value, NewQp19} = queue:out(Qp19), - if - Value =:= empty -> - out_current(20, Q, ReturnType); - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 19}; - true -> - Value - end, - {NewValue, - {19, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}} - end; -out_current(20, - {_, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20} = Qsp14}, ReturnType) -> - {Value, NewQp20} = queue:out(Qp20), - if - Value =:= empty -> - {empty, {empty, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; - true -> - NewValue = if - ReturnType =:= priority -> - {value, Contents} = Value, - {value, Contents, 20}; - true -> - Value - end, - {NewValue, - {20, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}} - end. - -out_specific(-20, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn20} = queue:out(Qn20), - {Value, - {Pc, - {NewQn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-19, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn19} = queue:out(Qn19), - {Value, - {Pc, - {Qn20, NewQn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-18, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn18} = queue:out(Qn18), - {Value, - {Pc, - {Qn20, Qn19, NewQn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-17, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn17} = queue:out(Qn17), - {Value, - {Pc, - {Qn20, Qn19, Qn18, NewQn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-16, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn16} = queue:out(Qn16), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, NewQn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-15, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn15} = queue:out(Qn15), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, NewQn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-14, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, Qn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn14} = queue:out(Qn14), - {Value, - {Pc, - {Qn20, Qn19, Qn18, Qn17, Qn16, Qn15, NewQn14}, - Qsn7, Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-13, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn13} = queue:out(Qn13), - {Value, - {Pc, Qsn14, - {NewQn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-12, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn12} = queue:out(Qn12), - {Value, - {Pc, Qsn14, - {Qn13, NewQn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-11, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn11} = queue:out(Qn11), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, NewQn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-10, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn10} = queue:out(Qn10), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, NewQn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-9, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn9} = queue:out(Qn9), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, NewQn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-8, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn8} = queue:out(Qn8), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, NewQn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-7, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, Qn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn7} = queue:out(Qn7), - {Value, - {Pc, Qsn14, - {Qn13, Qn12, Qn11, Qn10, Qn9, Qn8, NewQn7}, - Qsn1, Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-6, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn6} = queue:out(Qn6), - {Value, - {Pc, Qsn14, Qsn7, - {NewQn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-5, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn5} = queue:out(Qn5), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, NewQn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-4, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn4} = queue:out(Qn4), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, NewQn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-3, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn3} = queue:out(Qn3), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, NewQn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-2, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn2} = queue:out(Qn2), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, NewQn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(-1, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQn1} = queue:out(Qn1), - {Value, - {Pc, Qsn14, Qsn7, - {Qn6, Qn5, Qn4, Qn3, Qn2, NewQn1}, - Q0, Qsp1, Qsp7, Qsp14}}; -out_specific(0, - {Pc, Qsn14, Qsn7, Qsn1, - Q0, Qsp1, Qsp7, Qsp14}) -> - {Value, NewQ0} = queue:out(Q0), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, - NewQ0, - Qsp1, Qsp7, Qsp14}}; -out_specific(1, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp1} = queue:out(Qp1), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {NewQp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(2, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp2} = queue:out(Qp2), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, NewQp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(3, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp3} = queue:out(Qp3), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, NewQp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(4, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp4} = queue:out(Qp4), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, NewQp4, Qp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(5, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp5} = queue:out(Qp5), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, NewQp5, Qp6}, - Qsp7, Qsp14}}; -out_specific(6, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6}, - Qsp7, Qsp14}) -> - {Value, NewQp6} = queue:out(Qp6), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, NewQp6}, - Qsp7, Qsp14}}; -out_specific(7, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp7} = queue:out(Qp7), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {NewQp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(8, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp8} = queue:out(Qp8), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, NewQp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(9, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp9} = queue:out(Qp9), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, NewQp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(10, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp10} = queue:out(Qp10), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, NewQp10, Qp11, Qp12, Qp13}, - Qsp14}}; -out_specific(11, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp11} = queue:out(Qp11), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, NewQp11, Qp12, Qp13}, - Qsp14}}; -out_specific(12, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp12} = queue:out(Qp12), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, NewQp12, Qp13}, - Qsp14}}; -out_specific(13, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, Qp13}, - Qsp14}) -> - {Value, NewQp13} = queue:out(Qp13), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, - {Qp7, Qp8, Qp9, Qp10, Qp11, Qp12, NewQp13}, - Qsp14}}; -out_specific(14, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp14} = queue:out(Qp14), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {NewQp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(15, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp15} = queue:out(Qp15), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, NewQp15, Qp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(16, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp16} = queue:out(Qp16), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, NewQp16, Qp17, Qp18, Qp19, Qp20}}}; -out_specific(17, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp17} = queue:out(Qp17), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, NewQp17, Qp18, Qp19, Qp20}}}; -out_specific(18, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp18} = queue:out(Qp18), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, NewQp18, Qp19, Qp20}}}; -out_specific(19, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp19} = queue:out(Qp19), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, NewQp19, Qp20}}}; -out_specific(20, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, Qp20}}) -> - {Value, NewQp20} = queue:out(Qp20), - {Value, - {Pc, Qsn14, Qsn7, Qsn1, Q0, Qsp1, Qsp7, - {Qp14, Qp15, Qp16, Qp17, Qp18, Qp19, NewQp20}}}. - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - diff --git a/aoc2023/build/packages/pqueue/src/pqueue2.erl b/aoc2023/build/packages/pqueue/src/pqueue2.erl deleted file mode 100644 index bbdeaaf..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue2.erl +++ /dev/null @@ -1,483 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Skew Heap Priority Queue.== -%%% Ulf Wiger suggested pursuing a skew heap as an optimal Erlang priority -%%% queue implementation. Unfortunately, testing has shown this solution to -%%% be more than 2 times slower than pqueue. -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue2). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, - in/3, - is_empty/1, - is_queue/1, - len/1, - new/0, - out/1, - out/2, - pout/1, - to_list/1, - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --ifdef(ERLANG_OTP_VERSION_16). --type pqueue2() :: - empty | - {integer(), pqueue2(), pqueue2(), element, term()} | - {integer(), pqueue2(), pqueue2(), queue, queue()}. --else. --type pqueue2() :: - empty | - {integer(), pqueue2(), pqueue2(), element, term()} | - {integer(), pqueue2(), pqueue2(), queue, queue:queue()}. --endif. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue2()) -> pqueue2(). - -in(Value, H) -> - in(Value, 0, H). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue2()) -> pqueue2(). - -in(Value, P, H) -> - merge({P, empty, empty, element, Value}, H). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue2()) -> 'true' | 'false'. - -is_empty(empty) -> - true; -is_empty({_, HL, HR, queue, Queue}) -> - is_empty(HL) andalso is_empty(HR) andalso queue:is_empty(Queue); -is_empty(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue2()) -> 'true' | 'false'. - -is_queue(empty) -> - true; -is_queue({P, _, _, element, _}) - when is_integer(P) -> - true; -is_queue({P, _, _, queue, Queue}) - when is_integer(P) -> - queue:is_queue(Queue); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue2()) -> non_neg_integer(). - -len(H) -> - len(0, out(H)). -len(I, {empty, _}) -> - I; -len(I, {{value, _}, H}) -> - len(I + 1, out(H)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue2(). - -new() -> - empty. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue2()) -> - {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. - -out(empty) -> - {empty, empty}; -out({_, HL, HR, element, Value}) -> - {{value, Value}, merge(HL, HR)}; -out({P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, _} = Result, NewQueue} -> - {Result, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - out(merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue2()) -> - {{'value', term()}, pqueue2()} | {'empty', pqueue2()}. - -out(_, empty) -> - {empty, empty}; -out(P, {P1, _, _, _, _} = H) when P < P1 -> - {empty, H}; -out(P, {P1, HL1, HR1, T, D}) when P > P1 -> - case out(P, HL1) of - {{value, _} = Result, HL2} -> - {Result, {P1, HL2, HR1, T, D}}; - {empty, HL2} -> - case out(P, HR1) of - {{value, _} = Result, HR2} -> - {Result, {P1, HL2, HR2, T, D}}; - {empty, HR2} -> - {empty, {P1, HL2, HR2, T, D}} - end - end; -out(P, {P, HL, HR, element, Value}) -> - {{value, Value}, merge(HL, HR)}; -out(P, {P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, _} = Result, NewQueue} -> - {Result, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - out(P, merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue2()) -> - {{'value', term(), integer()}, pqueue2()} | {'empty', pqueue2()}. - -pout(empty) -> - {empty, empty}; -pout({P, HL, HR, element, Value}) -> - {{value, Value, P}, merge(HL, HR)}; -pout({P, HL, HR, queue, Queue}) -> - case queue:out(Queue) of - {{value, Value}, NewQueue} -> - {{value, Value, P}, {P, HL, HR, queue, NewQueue}}; - {empty, _} -> - pout(merge(HL, HR)) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue2()) -> list(term()). - -to_list(H) -> - to_list([], out(H)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, H}) -> - to_list([Value | L], out(H)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue2:new(), - true = pqueue2:is_queue(Q0), - Q1 = pqueue2:in(20, 20, Q0), - Q2 = pqueue2:in(19, 19, Q1), - Q3 = pqueue2:in(18, 18, Q2), - Q4 = pqueue2:in(17, 17, Q3), - Q5 = pqueue2:in(16, 16, Q4), - Q6 = pqueue2:in(15, 15, Q5), - Q7 = pqueue2:in(14, 14, Q6), - Q8 = pqueue2:in(13, 13, Q7), - Q9 = pqueue2:in(12, 12, Q8), - Q10 = pqueue2:in(11, 11, Q9), - Q11 = pqueue2:in(10, 10, Q10), - Q12 = pqueue2:in(9, 9, Q11), - Q13 = pqueue2:in(8, 8, Q12), - Q14 = pqueue2:in(7, 7, Q13), - Q15 = pqueue2:in(6, 6, Q14), - Q16 = pqueue2:in(5, 5, Q15), - Q17 = pqueue2:in(4, 4, Q16), - Q18 = pqueue2:in(3, 3, Q17), - Q19 = pqueue2:in(2, 2, Q18), - Q20 = pqueue2:in(1, 1, Q19), - Q21 = pqueue2:in(0, 0, Q20), - Q22 = pqueue2:in(-1, -1, Q21), - Q23 = pqueue2:in(-2, -2, Q22), - Q24 = pqueue2:in(-3, -3, Q23), - Q25 = pqueue2:in(-4, -4, Q24), - Q26 = pqueue2:in(-5, -5, Q25), - Q27 = pqueue2:in(-6, -6, Q26), - Q28 = pqueue2:in(-7, -7, Q27), - Q29 = pqueue2:in(-8, -8, Q28), - Q30 = pqueue2:in(-9, -9, Q29), - Q31 = pqueue2:in(-10, -10, Q30), - Q32 = pqueue2:in(-11, -11, Q31), - Q33 = pqueue2:in(-12, -12, Q32), - Q34 = pqueue2:in(-13, -13, Q33), - Q35 = pqueue2:in(-14, -14, Q34), - Q36 = pqueue2:in(-15, -15, Q35), - Q37 = pqueue2:in(-16, -16, Q36), - Q38 = pqueue2:in(-17, -17, Q37), - Q39 = pqueue2:in(-18, -18, Q38), - Q40 = pqueue2:in(-19, -19, Q39), - Q41 = pqueue2:in(-20, -20, Q40), - Q42 = pqueue2:in(-20, -20, Q41), - Q43 = pqueue2:in(-19, -19, Q42), - Q44 = pqueue2:in(-18, -18, Q43), - Q45 = pqueue2:in(-17, -17, Q44), - Q46 = pqueue2:in(-16, -16, Q45), - Q47 = pqueue2:in(-15, -15, Q46), - Q48 = pqueue2:in(-14, -14, Q47), - Q49 = pqueue2:in(-13, -13, Q48), - Q50 = pqueue2:in(-12, -12, Q49), - Q51 = pqueue2:in(-11, -11, Q50), - Q52 = pqueue2:in(-10, -10, Q51), - Q53 = pqueue2:in(-9, -9, Q52), - Q54 = pqueue2:in(-8, -8, Q53), - Q55 = pqueue2:in(-7, -7, Q54), - Q56 = pqueue2:in(-6, -6, Q55), - Q57 = pqueue2:in(-5, -5, Q56), - Q58 = pqueue2:in(-4, -4, Q57), - Q59 = pqueue2:in(-3, -3, Q58), - Q60 = pqueue2:in(-2, -2, Q59), - Q61 = pqueue2:in(-1, -1, Q60), - Q62 = pqueue2:in(0, 0, Q61), - Q63 = pqueue2:in(1, 1, Q62), - Q64 = pqueue2:in(2, 2, Q63), - Q65 = pqueue2:in(3, 3, Q64), - Q66 = pqueue2:in(4, 4, Q65), - Q67 = pqueue2:in(5, 5, Q66), - Q68 = pqueue2:in(6, 6, Q67), - Q69 = pqueue2:in(7, 7, Q68), - Q70 = pqueue2:in(8, 8, Q69), - Q71 = pqueue2:in(9, 9, Q70), - Q72 = pqueue2:in(10, 10, Q71), - Q73 = pqueue2:in(11, 11, Q72), - Q74 = pqueue2:in(12, 12, Q73), - Q75 = pqueue2:in(13, 13, Q74), - Q76 = pqueue2:in(14, 14, Q75), - Q77 = pqueue2:in(15, 15, Q76), - Q78 = pqueue2:in(16, 16, Q77), - Q79 = pqueue2:in(17, 17, Q78), - Q80 = pqueue2:in(18, 18, Q79), - Q81 = pqueue2:in(19, 19, Q80), - Q82 = pqueue2:in(20, 20, Q81), - true = pqueue2:is_queue(Q82), - 82 = pqueue2:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue2:to_list(Q82), - {{value, -20}, Q83} = pqueue2:out(Q82), - {{value, -20}, Q84} = pqueue2:out(Q83), - {{value, -19}, Q85} = pqueue2:out(Q84), - {{value, -19}, Q86} = pqueue2:out(Q85), - {{value, -18}, Q87} = pqueue2:out(Q86), - {{value, -18}, Q88} = pqueue2:out(Q87), - {{value, 0}, Q89} = pqueue2:out(0, Q88), - {{value, 0}, Q90} = pqueue2:out(0, Q89), - {empty, _} = pqueue2:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue2:pout(Q90), - {{value, -17, -17}, Q92} = pqueue2:pout(Q91), - {{value, -16, -16}, Q93} = pqueue2:pout(Q92), - {{value, -16, -16}, Q94} = pqueue2:pout(Q93), - {{value, -15, -15}, Q95} = pqueue2:pout(Q94), - {{value, -15, -15}, Q96} = pqueue2:pout(Q95), - {{value, -14, -14}, Q97} = pqueue2:pout(Q96), - {{value, -14, -14}, Q98} = pqueue2:pout(Q97), - {{value, -13, -13}, Q99} = pqueue2:pout(Q98), - {{value, -13, -13}, Q100} = pqueue2:pout(Q99), - {{value, -12, -12}, Q101} = pqueue2:pout(Q100), - {{value, -12, -12}, Q102} = pqueue2:pout(Q101), - {{value, -11, -11}, Q103} = pqueue2:pout(Q102), - {{value, -11, -11}, Q104} = pqueue2:pout(Q103), - {{value, -10, -10}, Q105} = pqueue2:pout(Q104), - {{value, -10, -10}, Q106} = pqueue2:pout(Q105), - {{value, -9, -9}, Q107} = pqueue2:pout(Q106), - {{value, -9, -9}, Q108} = pqueue2:pout(Q107), - {{value, -8, -8}, Q109} = pqueue2:pout(Q108), - {{value, -8, -8}, Q110} = pqueue2:pout(Q109), - {{value, -7, -7}, Q111} = pqueue2:pout(Q110), - {{value, -7, -7}, Q112} = pqueue2:pout(Q111), - {{value, -6, -6}, Q113} = pqueue2:pout(Q112), - {{value, -6, -6}, Q114} = pqueue2:pout(Q113), - {{value, -5, -5}, Q115} = pqueue2:pout(Q114), - {{value, -5, -5}, Q116} = pqueue2:pout(Q115), - {{value, -4, -4}, Q117} = pqueue2:pout(Q116), - {{value, -4, -4}, Q118} = pqueue2:pout(Q117), - {{value, -3, -3}, Q119} = pqueue2:pout(Q118), - {{value, -3, -3}, Q120} = pqueue2:pout(Q119), - {{value, -2, -2}, Q121} = pqueue2:pout(Q120), - {{value, -2, -2}, Q122} = pqueue2:pout(Q121), - {{value, -1, -1}, Q123} = pqueue2:pout(Q122), - {{value, -1, -1}, Q124} = pqueue2:pout(Q123), - {{value, 1, 1}, Q125} = pqueue2:pout(Q124), - {{value, 1, 1}, Q126} = pqueue2:pout(Q125), - {{value, 2, 2}, Q127} = pqueue2:pout(Q126), - {{value, 2, 2}, Q128} = pqueue2:pout(Q127), - {{value, 3, 3}, Q129} = pqueue2:pout(Q128), - {{value, 3, 3}, Q130} = pqueue2:pout(Q129), - {{value, 4, 4}, Q131} = pqueue2:pout(Q130), - {{value, 4, 4}, Q132} = pqueue2:pout(Q131), - {{value, 5, 5}, Q133} = pqueue2:pout(Q132), - {{value, 5, 5}, Q134} = pqueue2:pout(Q133), - {{value, 6, 6}, Q135} = pqueue2:pout(Q134), - {{value, 6, 6}, Q136} = pqueue2:pout(Q135), - {{value, 7, 7}, Q137} = pqueue2:pout(Q136), - {{value, 7, 7}, Q138} = pqueue2:pout(Q137), - {{value, 8, 8}, Q139} = pqueue2:pout(Q138), - {{value, 8, 8}, Q140} = pqueue2:pout(Q139), - {{value, 9, 9}, Q141} = pqueue2:pout(Q140), - {{value, 9, 9}, Q142} = pqueue2:pout(Q141), - {{value, 10, 10}, Q143} = pqueue2:pout(Q142), - {{value, 10, 10}, Q144} = pqueue2:pout(Q143), - {{value, 11, 11}, Q145} = pqueue2:pout(Q144), - {{value, 11, 11}, Q146} = pqueue2:pout(Q145), - {{value, 12, 12}, Q147} = pqueue2:pout(Q146), - {{value, 12, 12}, Q148} = pqueue2:pout(Q147), - {{value, 13, 13}, Q149} = pqueue2:pout(Q148), - {{value, 13, 13}, Q150} = pqueue2:pout(Q149), - {{value, 14, 14}, Q151} = pqueue2:pout(Q150), - {{value, 14, 14}, Q152} = pqueue2:pout(Q151), - {{value, 15, 15}, Q153} = pqueue2:pout(Q152), - {{value, 15, 15}, Q154} = pqueue2:pout(Q153), - {{value, 16, 16}, Q155} = pqueue2:pout(Q154), - {{value, 16, 16}, Q156} = pqueue2:pout(Q155), - {{value, 17, 17}, Q157} = pqueue2:pout(Q156), - {{value, 17, 17}, Q158} = pqueue2:pout(Q157), - {{value, 18, 18}, Q159} = pqueue2:pout(Q158), - {{value, 18, 18}, Q160} = pqueue2:pout(Q159), - {{value, 19, 19}, Q161} = pqueue2:pout(Q160), - {{value, 19, 19}, Q162} = pqueue2:pout(Q161), - {{value, 20, 20}, Q163} = pqueue2:pout(Q162), - {{value, 20, 20}, Q164} = pqueue2:pout(Q163), - true = pqueue2:is_empty(Q164), - {empty, Q165} = pqueue2:pout(Q164), - true = pqueue2:is_empty(Q165), - % test case 1, based on proper testing - C1V0 = pqueue2:in(-18, pqueue2:new()), - C1V1 = pqueue2:in(9, C1V0), - C1V2 = pqueue2:in(-10, -4, C1V1), - C1V3 = pqueue2:in(-29, C1V2), - C1V4 = pqueue2:in(11, C1V3), - 5 = pqueue2:len(C1V4), - [-10, -18, 9, -29, 11] = pqueue2:to_list(C1V4), - % test case 2, based on proper testing - C2V0 = pqueue2:in(-4, -15, pqueue2:new()), - C2V1 = pqueue2:in(13, C2V0), - C2V2 = pqueue2:in(2, C2V1), - [-4, 13, 2] = to_list(C2V2), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -merge(empty, empty) -> - empty; -merge(empty, {_, _, _, _, _} = H) -> - H; -merge({_, _, _, _, _} = H, empty) -> - H; -merge({P1, HL1, HR1, T, D}, {P2, _, _, _, _} = H2) when P1 < P2 -> - {P1, HL1, merge(HR1, H2), T, D}; -merge({P1, _, _, _, _} = H1, {P2, HL2, HR2, T, D}) when P1 > P2 -> - {P2, HL2, merge(H1, HR2), T, D}; -merge({P, HL1, HR1, element, Value1}, {P, HL2, HR2, element, Value2}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, - queue:from_list([Value2, Value1])}; -merge({P, HL1, HR1, queue, Queue}, {P, HL2, HR2, element, Value}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}; -merge({P, HL1, HR1, element, Value}, {P, HL2, HR2, queue, Queue}) -> - {P, merge(HL1, HR1), merge(HL2, HR2), queue, queue:in(Value, Queue)}. - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq2())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - diff --git a/aoc2023/build/packages/pqueue/src/pqueue3.erl b/aoc2023/build/packages/pqueue/src/pqueue3.erl deleted file mode 100644 index 03b370a..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue3.erl +++ /dev/null @@ -1,404 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==A Large Priority Queue.== -%%% This priority queue implementation depends on layered tuples, so that tuple -%%% access times can be exploited for quick in/out priority queue operations -%%% when using 64 or more total priorities. This implementation was created -%%% to avoid the slowness within the priority queue used by -%%% both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue3). --author('mjtruog at protonmail dot com'). - -%% external interface --export([in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - len/1, % O(N) - new/0, % O(1) - new/1, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - to_list/1]). % O(N) - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --type pqueue3() :: {integer(), integer(), empty | integer(), tuple()}. --type pqueue3_empty() :: {integer(), integer(), empty, tuple()}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), pqueue3()) -> pqueue3(). - -in(Value, Q) -> - in(Value, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(term(), integer(), pqueue3()) -> pqueue3(). - -in(_, P, {Size, Offset, _, _}) - when (P + Offset) < 0; (P + Offset) > Size -> - erlang:exit(badarg); -in(Value, P, {Size, Offset, empty, Bins}) -> - PriorityIndex = P + Offset, - {Size, Offset, PriorityIndex, - in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; -in(Value, P, {Size, Offset, I, Bins}) - when (P + Offset) < I -> - PriorityIndex = P + Offset, - {Size, Offset, PriorityIndex, - in_queue(layer_indexes(Size, PriorityIndex), Value, Bins)}; -in(Value, P, {Size, Offset, I, Bins}) -> - {Size, Offset, I, - in_queue(layer_indexes(Size, P + Offset), Value, Bins)}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue3()) -> 'true' | 'false'. - -is_empty({_, _, empty, _}) -> - true; -is_empty({_, _, _, _} = Q) -> - case out(Q) of - {empty, _} -> - true; - {{value, _}, _} -> - false - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue3()) -> 'true' | 'false'. - -is_queue({Size, Offset, I, Bins}) - when is_integer(Size), is_integer(Offset), is_tuple(Bins) -> - (I =:= empty) or is_integer(I); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue3()) -> non_neg_integer(). - -len(Q) -> - len(0, out(Q)). -len(I, {empty, _}) -> - I; -len(I, {{value, _}, Q}) -> - len(I + 1, out(Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue3_empty(). - -new() -> - new([]). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue with customization options.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new(list({atom(), term()})) -> pqueue3(). - -new(Options) -> - Size = proplists:get_value(priorities, Options, 256), - MiddleZero = proplists:get_value(middle_priority_zero, Options, true), - Offset = if - MiddleZero =:= true -> - erlang:round((Size / 2) + 0.5) - 1; - true -> - 0 - end, - {Size, Offset, empty, create(layer_sizes(Size))}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue3()) -> - {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. - -out({_, _, empty, _} = Q) -> - {empty, Q}; -out({Size, Offset, I, Bins}) -> - {Result, NewI, NewBins} = out_check( - I, Size, out_queue(layer_indexes(Size, I), Bins) - ), - {Result, {Size, Offset, NewI, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue3()) -> - {{'value', term()}, pqueue3()} | {'empty', pqueue3()}. - -out(P, {Size, Offset, _, _}) - when (P + Offset) < 0; (P + Offset) > Size -> - erlang:exit(badarg); -out(_, {_, _, empty, _} = Q) -> - {empty, Q}; -out(P, {Size, Offset, I, Bins}) -> - {Result, NewBins} = out_queue(layer_indexes(Size, P + Offset), Bins), - {Result, {Size, Offset, I, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue3()) -> - {{'value', term(), integer()}, pqueue3()} | {'empty', pqueue3()}. - -pout({_, _, empty, _} = Q) -> - {empty, Q}; -pout({Size, Offset, I, Bins}) -> - {Result, NewI, NewBins} = pout_check( - I, Size, Offset, out_queue(layer_indexes(Size, I), Bins) - ), - {Result, {Size, Offset, NewI, NewBins}}. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue3()) -> list(term()). - -to_list(Q) -> - to_list([], out(Q)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, Q}) -> - to_list([Value | L], out(Q)). - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -create([]) -> - queue:new(); - -create([I | Is]) -> - erlang:make_tuple(I + 1, create(Is)). - -in_queue({I1}, Value, Bins1) -> - erlang:setelement(I1, Bins1, queue:in(Value, erlang:element(I1, Bins1))); - -in_queue({I1, I2}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, queue:in(Value, erlang:element(I2, Bins2)))); - -in_queue({I1, I2, I3}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, queue:in(Value, erlang:element(I3, Bins3))))); - -in_queue({I1, I2, I3, I4}, Value, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - Bins4 = erlang:element(I3, Bins3), - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, - erlang:setelement(I4, Bins4, queue:in(Value, erlang:element(I4, Bins4)))))). - -pout_check(Size, Size, _, {empty, Bins}) -> - {empty, empty, Bins}; -pout_check(I, _, Offset, {{value, Value}, Bins}) -> - {{value, Value, I - Offset}, I, Bins}; -pout_check(I, Size, Offset, {empty, Bins}) -> - NewI = I + 1, - pout_check(NewI, Size, Offset, out_queue(layer_indexes(Size, NewI), Bins)). - -out_check(Size, Size, {empty, Bins}) -> - {empty, empty, Bins}; -out_check(I, _, {{value, _} = Result, Bins}) -> - {Result, I, Bins}; -out_check(I, Size, {empty, Bins}) -> - NewI = I + 1, - out_check(NewI, Size, out_queue(layer_indexes(Size, NewI), Bins)). - -out_queue({I1}, Bins1) -> - {Result, NewQueue} = queue:out(erlang:element(I1, Bins1)), - {Result, - erlang:setelement(I1, Bins1, NewQueue)}; - -out_queue({I1, I2}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - {Result, NewQueue} = queue:out(erlang:element(I2, Bins2)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, NewQueue))}; - -out_queue({I1, I2, I3}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - {Result, NewQueue} = queue:out(erlang:element(I3, Bins3)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, NewQueue)))}; - -out_queue({I1, I2, I3, I4}, Bins1) -> - Bins2 = erlang:element(I1, Bins1), - Bins3 = erlang:element(I2, Bins2), - Bins4 = erlang:element(I3, Bins3), - {Result, NewQueue} = queue:out(erlang:element(I4, Bins4)), - {Result, - erlang:setelement(I1, Bins1, - erlang:setelement(I2, Bins2, - erlang:setelement(I3, Bins3, - erlang:setelement(I4, Bins4, NewQueue))))}. - -layer_indexes(Size, PriorityIndex) -> - if - Size =< 127 -> - {PriorityIndex + 1}; - Size =< 255 -> - <> = <>, - {I1 + 1, I2 + 1}; - Size =< 511 -> - <> = <>, - {I1 + 1, I2 + 1}; - Size =< 1023 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 2047 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 4095 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 8191 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 16383 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1}; - Size =< 32767 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1, I4 + 1}; - Size =< 65535 -> - <> = <>, - {I1 + 1, I2 + 1, I3 + 1, I4 + 1} - end. - -layer_sizes(Size) -> - if - Size =< 127 -> - <> = <<127:7>>, - [I1]; - Size =< 255 -> - <> = <<255:8>>, - [I1, I2]; - Size =< 511 -> - <> = <<511:9>>, - [I1, I2]; - Size =< 1023 -> - <> = <<1023:10>>, - [I1, I2, I3]; - Size =< 2047 -> - <> = <<2047:11>>, - [I1, I2, I3]; - Size =< 4095 -> - <> = <<4095:12>>, - [I1, I2, I3]; - Size =< 8191 -> - <> = <<8191:13>>, - [I1, I2, I3]; - Size =< 16383 -> - <> = <<16383:14>>, - [I1, I2, I3]; - Size =< 32767 -> - <> = <<32767:15>>, - [I1, I2, I3, I4]; - Size =< 65535 -> - <> = <<65535:16>>, - [I1, I2, I3, I4] - end. - diff --git a/aoc2023/build/packages/pqueue/src/pqueue4.erl b/aoc2023/build/packages/pqueue/src/pqueue4.erl deleted file mode 100644 index 30b188d..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue4.erl +++ /dev/null @@ -1,11662 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% @doc -%%% ==Static Priority Queue.== -%%% This priority queue implementation depends on a static number of priorities -%%% (-128 (high) to 128 (low)) so that tuple access times can be exploited for -%%% quick in/out priority queue operations. This implementation was created to -%%% avoid the slowness within the priority queue used by both RabbitMQ and Riak -%%% (https://github.com/basho/riak_core/blob/master/src/priority_queue.erl). -%%% @end -%%% -%%% MIT License -%%% -%%% Copyright (c) 2011-2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%% -%%% queue_remove_unique/2 is based on queue:filter/2 -%%% which is under the Apache License 2.0: -%%% -%%% Copyright Ericsson AB 1996-2016. All Rights Reserved. -%%% -%%% Licensed under the Apache License, Version 2.0 (the "License"); -%%% you may not use this file except in compliance with the License. -%%% You may obtain a copy of the License at -%%% -%%% http://www.apache.org/licenses/LICENSE-2.0 -%%% -%%% Unless required by applicable law or agreed to in writing, software -%%% distributed under the License is distributed on an "AS IS" BASIS, -%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%%% See the License for the specific language governing permissions and -%%% limitations under the License. -%%% -%%% @author Michael Truog -%%% @copyright 2011-2020 Michael Truog -%%% @version 2.0.1 {@date} {@time} -%%%------------------------------------------------------------------------ - --module(pqueue4). --author('mjtruog at protonmail dot com'). - -%% external interface --export([filter/2, % O(N) - filter/3, % O(N) - in/2, % O(1) - in/3, % O(1) - is_empty/1, % O(1) - is_queue/1, % O(1) - len/1, % O(1) - new/0, % O(1) - out/1, % O(1) amortized, O(N) worst case - out/2, % O(1) amortized, O(N) worst case - pout/1, % O(1) amortized, O(N) worst case - remove_unique/2, % O(N) but smaller constant than filter/2 - remove_unique/3, % O(N) but smaller constant than filter/3 - to_list/1, % O(N) - to_plist/1, % O(N) - test/0]). - -%%%------------------------------------------------------------------------ -%%% External interface functions -%%%------------------------------------------------------------------------ - --type priority() :: -128..128. --ifdef(ERLANG_OTP_VERSION_16). --type pqueue4(_) :: - {priority() | 'empty', % current priority - non_neg_integer(), % total size - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - queue(), - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}, - {queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue(), - queue(), queue(), queue(), queue(), queue(), queue(), queue(), queue()}}. --else. --type pqueue4(T) :: - {priority() | 'empty', % current priority - non_neg_integer(), % total size - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - queue:queue(T), - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}, - {queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T), - queue:queue(T), queue:queue(T), queue:queue(T), queue:queue(T)}}. --endif. --type pqueue4() :: pqueue4(any()). --export_type([pqueue4/0, pqueue4/1]). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Filter the priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec filter(fun((any()) -> boolean()), pqueue4()) -> pqueue4(). - -filter(F, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - Q; -filter(F, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - filter_all(Pc, F, Q). - -filter_all(_, _, {_, 0, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) -> - Q; -filter_all(128, F, Q) -> - filter_priority(128, F, Q); -filter_all(P, F, Q) when is_integer(P) -> - filter_all(P + 1, F, filter_priority(P, F, Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Filter a specific priority within the priority queue.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec filter(fun((any()) -> boolean()), integer(), pqueue4()) -> pqueue4(). - -filter(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -filter(F, P, Q) when is_function(F, 1) -> - filter_priority(P, F, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of the 0 priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(any(), pqueue4()) -> pqueue4(). - -in(X, Q) -> - in(X, 0, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Append an item to the tail of a specific priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec in(any(), integer(), pqueue4()) -> pqueue4(). - -in(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -in(X, P, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - in_higher(P, Q, X); % (in a higher priority) -in(X, P, {Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) - when P < Pc -> - in_higher(P, Q, X); % (in a higher priority) -in(X, P, Q) -> - in_lower(P, Q, X). % (in a lower priority) - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue is empty.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_empty(pqueue4()) -> 'true' | 'false'. - -is_empty({_, 0, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - true; -is_empty({_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Check if the priority queue type is as expected.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec is_queue(pqueue4()) -> 'true' | 'false'. - -is_queue({Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) - when is_integer(Size), - tuple_size(Qn128) == 16, tuple_size(Qn112) == 16, - tuple_size(Qn96) == 16, tuple_size(Qn80) == 16, - tuple_size(Qn64) == 16, tuple_size(Qn48) == 16, - tuple_size(Qn32) == 16, tuple_size(Qn16) == 16, - tuple_size(Qp16) == 16, tuple_size(Qp32) == 16, - tuple_size(Qp48) == 16, tuple_size(Qp64) == 16, - tuple_size(Qp80) == 16, tuple_size(Qp96) == 16, - tuple_size(Qp112) == 16, tuple_size(Qp128) == 16 -> - (((Pc =:= empty) or is_integer(Pc)) and queue:is_queue(Q0)); -is_queue(_) -> - false. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Determine the length of a priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec len(pqueue4()) -> non_neg_integer(). - -len({_, Size, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _}) -> - Size. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Create a new priority queue.=== -%% O(1) -%% @end -%%------------------------------------------------------------------------- - --spec new() -> pqueue4(). - -new() -> - {empty, % current priority - 0, % current size - erlang:make_tuple(16, queue:new()), % priority [-128..-113] - erlang:make_tuple(16, queue:new()), % priority [-112.. -97] - erlang:make_tuple(16, queue:new()), % priority [ -96.. -81] - erlang:make_tuple(16, queue:new()), % priority [ -80.. -65] - erlang:make_tuple(16, queue:new()), % priority [ -64.. -49] - erlang:make_tuple(16, queue:new()), % priority [ -48.. -33] - erlang:make_tuple(16, queue:new()), % priority [ -32.. -17] - erlang:make_tuple(16, queue:new()), % priority [ -16.. -1] - queue:new(), % priority 0 (default) - erlang:make_tuple(16, queue:new()), % priority [ 1.. 16] - erlang:make_tuple(16, queue:new()), % priority [ 17.. 32] - erlang:make_tuple(16, queue:new()), % priority [ 33.. 48] - erlang:make_tuple(16, queue:new()), % priority [ 49.. 64] - erlang:make_tuple(16, queue:new()), % priority [ 65.. 80] - erlang:make_tuple(16, queue:new()), % priority [ 81.. 96] - erlang:make_tuple(16, queue:new()), % priority [ 97.. 112] - erlang:make_tuple(16, queue:new())}. % priority [ 113.. 128] - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(pqueue4()) -> - {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. - -out({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - out_current(Pc, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item of a specific priority from the head of the queue.=== -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec out(integer(), pqueue4()) -> - {{'value', any()}, pqueue4()} | {'empty', pqueue4()}. - -out(P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -out(_, {empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -out(P, Q) -> - out_specific(P, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Take an item from the head of the priority queue.=== -%% Includes the priority in the return value. -%% O(1) amortized, O(N) worst case -%% @end -%%------------------------------------------------------------------------- - --spec pout(pqueue4()) -> - {{'value', any(), integer()}, pqueue4()} | {'empty', pqueue4()}. - -pout({empty, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - {empty, Q}; -pout({Pc, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _} = Q) -> - out_current_p(Pc, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Remove a unique value from the priority queue with a binary predicate.=== -%% O(N) but smaller constant than filter/2 -%% @end -%%------------------------------------------------------------------------- - --spec remove_unique(fun((any()) -> boolean()), pqueue4()) -> - {boolean(), pqueue4()}. - -remove_unique(F, {_, 0, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - {false, Q}; -remove_unique(F, {Pc, _, _, _, _, _, _, _, _, _, - _, _, _, _, _, _, _, _, _} = Q) - when is_function(F, 1) -> - remove_unique_all(Pc, F, Q). - -remove_unique_all(128, F, Q) -> - remove_unique_p(128, F, Q); -remove_unique_all(P, F, Q) when is_integer(P) -> - case remove_unique_p(P, F, Q) of - {true, _} = Result -> - Result; - {false, Q} -> - remove_unique_all(P + 1, F, Q) - end. - -%%------------------------------------------------------------------------- -%% @doc -%% ===Remove a unique value in a specific priority within the priority queue with a binary predicate.=== -%% O(N) but smaller constant than filter/3 -%% @end -%%------------------------------------------------------------------------- - --spec remove_unique(fun((any()) -> boolean()), integer(), pqueue4()) -> - {boolean(), pqueue4()}. - -remove_unique(_, P, _) - when P < -128; P > 128 -> - erlang:exit(badarg); -remove_unique(F, P, Q) when is_function(F, 1) -> - remove_unique_p(P, F, Q). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_list(pqueue4()) -> list(). - -to_list(Q) -> - to_list([], out(Q)). -to_list(L, {empty, _}) -> - lists:reverse(L); -to_list(L, {{value, Value}, Q}) -> - to_list([Value | L], out(Q)). - -%%------------------------------------------------------------------------- -%% @doc -%% ===Convert the priority queue to a list with priorities.=== -%% O(N) -%% @end -%%------------------------------------------------------------------------- - --spec to_plist(pqueue4()) -> list({priority(), list()}). - -to_plist(Q) -> - to_plist([], [], undefined, pout(Q)). -to_plist(L, [], _, {empty, _}) -> - lists:reverse(L); -to_plist(L, Lp, Pc, {empty, _}) -> - lists:reverse([{Pc, lists:reverse(Lp)} | L]); -to_plist(L, Lp, Pc, {{value, Value, Pc}, Q}) -> - to_plist(L, [Value | Lp], Pc, pout(Q)); -to_plist(L, [], _, {{value, Value, Pc}, Q}) -> - to_plist(L, [Value], Pc, pout(Q)); -to_plist(L, Lp, P, {{value, Value, Pc}, Q}) -> - to_plist([{P, lists:reverse(Lp)} | L], [Value], Pc, pout(Q)). - -%%------------------------------------------------------------------------- -%% @private -%% @doc -%% ===Regression test.=== -%% @end -%%------------------------------------------------------------------------- - -test() -> - Q0 = pqueue4:new(), - true = pqueue4:is_queue(Q0), - Q1 = pqueue4:in(20, 20, Q0), - Q2 = pqueue4:in(19, 19, Q1), - Q3 = pqueue4:in(18, 18, Q2), - Q4 = pqueue4:in(17, 17, Q3), - Q5 = pqueue4:in(16, 16, Q4), - Q6 = pqueue4:in(15, 15, Q5), - Q7 = pqueue4:in(14, 14, Q6), - Q8 = pqueue4:in(13, 13, Q7), - Q9 = pqueue4:in(12, 12, Q8), - Q10 = pqueue4:in(11, 11, Q9), - Q11 = pqueue4:in(10, 10, Q10), - Q12 = pqueue4:in(9, 9, Q11), - Q13 = pqueue4:in(8, 8, Q12), - Q14 = pqueue4:in(7, 7, Q13), - Q15 = pqueue4:in(6, 6, Q14), - Q16 = pqueue4:in(5, 5, Q15), - Q17 = pqueue4:in(4, 4, Q16), - Q18 = pqueue4:in(3, 3, Q17), - Q19 = pqueue4:in(2, 2, Q18), - Q20 = pqueue4:in(1, 1, Q19), - Q21 = pqueue4:in(0, 0, Q20), - Q22 = pqueue4:in(-1, -1, Q21), - Q23 = pqueue4:in(-2, -2, Q22), - Q24 = pqueue4:in(-3, -3, Q23), - Q25 = pqueue4:in(-4, -4, Q24), - Q26 = pqueue4:in(-5, -5, Q25), - Q27 = pqueue4:in(-6, -6, Q26), - Q28 = pqueue4:in(-7, -7, Q27), - Q29 = pqueue4:in(-8, -8, Q28), - Q30 = pqueue4:in(-9, -9, Q29), - Q31 = pqueue4:in(-10, -10, Q30), - Q32 = pqueue4:in(-11, -11, Q31), - Q33 = pqueue4:in(-12, -12, Q32), - Q34 = pqueue4:in(-13, -13, Q33), - Q35 = pqueue4:in(-14, -14, Q34), - Q36 = pqueue4:in(-15, -15, Q35), - Q37 = pqueue4:in(-16, -16, Q36), - Q38 = pqueue4:in(-17, -17, Q37), - Q39 = pqueue4:in(-18, -18, Q38), - Q40 = pqueue4:in(-19, -19, Q39), - Q41 = pqueue4:in(-20, -20, Q40), - Q42 = pqueue4:in(-20, -20, Q41), - Q43 = pqueue4:in(-19, -19, Q42), - Q44 = pqueue4:in(-18, -18, Q43), - Q45 = pqueue4:in(-17, -17, Q44), - Q46 = pqueue4:in(-16, -16, Q45), - Q47 = pqueue4:in(-15, -15, Q46), - Q48 = pqueue4:in(-14, -14, Q47), - Q49 = pqueue4:in(-13, -13, Q48), - Q50 = pqueue4:in(-12, -12, Q49), - Q51 = pqueue4:in(-11, -11, Q50), - Q52 = pqueue4:in(-10, -10, Q51), - Q53 = pqueue4:in(-9, -9, Q52), - Q54 = pqueue4:in(-8, -8, Q53), - Q55 = pqueue4:in(-7, -7, Q54), - Q56 = pqueue4:in(-6, -6, Q55), - Q57 = pqueue4:in(-5, -5, Q56), - Q58 = pqueue4:in(-4, -4, Q57), - Q59 = pqueue4:in(-3, -3, Q58), - Q60 = pqueue4:in(-2, -2, Q59), - Q61 = pqueue4:in(-1, -1, Q60), - Q62 = pqueue4:in(0, 0, Q61), - Q63 = pqueue4:in(1, 1, Q62), - Q64 = pqueue4:in(2, 2, Q63), - Q65 = pqueue4:in(3, 3, Q64), - Q66 = pqueue4:in(4, 4, Q65), - Q67 = pqueue4:in(5, 5, Q66), - Q68 = pqueue4:in(6, 6, Q67), - Q69 = pqueue4:in(7, 7, Q68), - Q70 = pqueue4:in(8, 8, Q69), - Q71 = pqueue4:in(9, 9, Q70), - Q72 = pqueue4:in(10, 10, Q71), - Q73 = pqueue4:in(11, 11, Q72), - Q74 = pqueue4:in(12, 12, Q73), - Q75 = pqueue4:in(13, 13, Q74), - Q76 = pqueue4:in(14, 14, Q75), - Q77 = pqueue4:in(15, 15, Q76), - Q78 = pqueue4:in(16, 16, Q77), - Q79 = pqueue4:in(17, 17, Q78), - Q80 = pqueue4:in(18, 18, Q79), - Q81 = pqueue4:in(19, 19, Q80), - Q82 = pqueue4:in(20, 20, Q81), - true = pqueue4:is_queue(Q82), - 82 = pqueue4:len(Q82), - [-20, -20, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -14, - -13, -13, -12, -12, -11, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, - -5, -5, -4, -4, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, - 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20] = pqueue4:to_list(Q82), - [{-20, [-20, -20]}, {-19, [-19, -19]}, {-18, [-18, -18]}, - {-17, [-17, -17]}, {-16, [-16, -16]}, {-15, [-15, -15]}, - {-14, [-14, -14]}, {-13, [-13, -13]}, {-12, [-12, -12]}, - {-11, [-11, -11]}, {-10, [-10, -10]}, {-9, [-9, -9]}, - {-8, [-8, -8]}, {-7, [-7, -7]}, {-6, [-6, -6]}, - {-5, [-5, -5]}, {-4, [-4, -4]}, {-3, [-3, -3]}, - {-2, [-2, -2]}, {-1, [-1, -1]}, {0, [0, 0]}, - {1, [1, 1]}, {2, [2, 2]}, {3, [3, 3]}, - {4, [4, 4]}, {5, [5, 5]}, {6, [6, 6]}, - {7, [7, 7]}, {8, [8, 8]}, {9, [9, 9]}, - {10, [10, 10]}, {11, [11, 11]}, {12, [12, 12]}, - {13, [13, 13]}, {14, [14, 14]}, {15, [15, 15]}, - {16, [16, 16]}, {17, [17, 17]}, {18, [18, 18]}, - {19, [19, 19]}, {20, [20, 20]}] = pqueue4:to_plist(Q82), - {{value, -20}, Q83} = pqueue4:out(Q82), - {{value, -20}, Q84} = pqueue4:out(Q83), - {{value, -19}, Q85} = pqueue4:out(Q84), - {{value, -19}, Q86} = pqueue4:out(Q85), - {{value, -18}, Q87} = pqueue4:out(Q86), - {{value, -18}, Q88} = pqueue4:out(Q87), - {{value, 0}, Q89} = pqueue4:out(0, Q88), - {{value, 0}, Q90} = pqueue4:out(0, Q89), - {empty, _} = pqueue4:out(0, Q90), - {{value, -17, -17}, Q91} = pqueue4:pout(Q90), - {{value, -17, -17}, Q92} = pqueue4:pout(Q91), - {{value, -16, -16}, Q93} = pqueue4:pout(Q92), - {{value, -16, -16}, Q94} = pqueue4:pout(Q93), - {{value, -15, -15}, Q95} = pqueue4:pout(Q94), - {{value, -15, -15}, Q96} = pqueue4:pout(Q95), - {{value, -14, -14}, Q97} = pqueue4:pout(Q96), - {{value, -14, -14}, Q98} = pqueue4:pout(Q97), - {{value, -13, -13}, Q99} = pqueue4:pout(Q98), - {{value, -13, -13}, Q100} = pqueue4:pout(Q99), - {{value, -12, -12}, Q101} = pqueue4:pout(Q100), - {{value, -12, -12}, Q102} = pqueue4:pout(Q101), - {{value, -11, -11}, Q103} = pqueue4:pout(Q102), - {{value, -11, -11}, Q104} = pqueue4:pout(Q103), - {{value, -10, -10}, Q105} = pqueue4:pout(Q104), - {{value, -10, -10}, Q106} = pqueue4:pout(Q105), - {{value, -9, -9}, Q107} = pqueue4:pout(Q106), - {{value, -9, -9}, Q108} = pqueue4:pout(Q107), - {{value, -8, -8}, Q109} = pqueue4:pout(Q108), - {{value, -8, -8}, Q110} = pqueue4:pout(Q109), - {{value, -7, -7}, Q111} = pqueue4:pout(Q110), - {{value, -7, -7}, Q112} = pqueue4:pout(Q111), - {{value, -6, -6}, Q113} = pqueue4:pout(Q112), - {{value, -6, -6}, Q114} = pqueue4:pout(Q113), - {{value, -5, -5}, Q115} = pqueue4:pout(Q114), - {{value, -5, -5}, Q116} = pqueue4:pout(Q115), - {{value, -4, -4}, Q117} = pqueue4:pout(Q116), - {{value, -4, -4}, Q118} = pqueue4:pout(Q117), - {{value, -3, -3}, Q119} = pqueue4:pout(Q118), - {{value, -3, -3}, Q120} = pqueue4:pout(Q119), - {{value, -2, -2}, Q121} = pqueue4:pout(Q120), - {{value, -2, -2}, Q122} = pqueue4:pout(Q121), - {{value, -1, -1}, Q123} = pqueue4:pout(Q122), - {{value, -1, -1}, Q124} = pqueue4:pout(Q123), - {{value, 1, 1}, Q125} = pqueue4:pout(Q124), - {{value, 1, 1}, Q126} = pqueue4:pout(Q125), - {{value, 2, 2}, Q127} = pqueue4:pout(Q126), - {{value, 2, 2}, Q128} = pqueue4:pout(Q127), - {{value, 3, 3}, Q129} = pqueue4:pout(Q128), - {{value, 3, 3}, Q130} = pqueue4:pout(Q129), - {{value, 4, 4}, Q131} = pqueue4:pout(Q130), - {{value, 4, 4}, Q132} = pqueue4:pout(Q131), - {{value, 5, 5}, Q133} = pqueue4:pout(Q132), - {{value, 5, 5}, Q134} = pqueue4:pout(Q133), - {{value, 6, 6}, Q135} = pqueue4:pout(Q134), - {{value, 6, 6}, Q136} = pqueue4:pout(Q135), - {{value, 7, 7}, Q137} = pqueue4:pout(Q136), - {{value, 7, 7}, Q138} = pqueue4:pout(Q137), - {{value, 8, 8}, Q139} = pqueue4:pout(Q138), - {{value, 8, 8}, Q140} = pqueue4:pout(Q139), - {{value, 9, 9}, Q141} = pqueue4:pout(Q140), - {{value, 9, 9}, Q142} = pqueue4:pout(Q141), - {{value, 10, 10}, Q143} = pqueue4:pout(Q142), - {{value, 10, 10}, Q144} = pqueue4:pout(Q143), - {{value, 11, 11}, Q145} = pqueue4:pout(Q144), - {{value, 11, 11}, Q146} = pqueue4:pout(Q145), - {{value, 12, 12}, Q147} = pqueue4:pout(Q146), - {{value, 12, 12}, Q148} = pqueue4:pout(Q147), - {{value, 13, 13}, Q149} = pqueue4:pout(Q148), - {{value, 13, 13}, Q150} = pqueue4:pout(Q149), - {{value, 14, 14}, Q151} = pqueue4:pout(Q150), - {{value, 14, 14}, Q152} = pqueue4:pout(Q151), - {{value, 15, 15}, Q153} = pqueue4:pout(Q152), - {{value, 15, 15}, Q154} = pqueue4:pout(Q153), - {{value, 16, 16}, Q155} = pqueue4:pout(Q154), - {{value, 16, 16}, Q156} = pqueue4:pout(Q155), - {{value, 17, 17}, Q157} = pqueue4:pout(Q156), - {{value, 17, 17}, Q158} = pqueue4:pout(Q157), - {{value, 18, 18}, Q159} = pqueue4:pout(Q158), - {{value, 18, 18}, Q160} = pqueue4:pout(Q159), - {{value, 19, 19}, Q161} = pqueue4:pout(Q160), - {{value, 19, 19}, Q162} = pqueue4:pout(Q161), - {{value, 20, 20}, Q163} = pqueue4:pout(Q162), - {{value, 20, 20}, Q164} = pqueue4:pout(Q163), - {{value, 20}, Q164} = pqueue4:out(Q163), - {{value, 20}, Q164} = pqueue4:out(20, Q163), - true = pqueue4:is_empty(Q164), - empty = erlang:element(1, Q164), % current priority - 0 = erlang:element(2, Q164), % size - {empty, Q164} = pqueue4:pout(Q164), - {empty, Q164} = pqueue4:out(Q164), - {empty, Q164} = pqueue4:out(20, Q164), - - Queue0 = queue:new(), - "{[],[]}" = lists:flatten(io_lib:format("~p", [Queue0])), - Queue1 = queue:in(1, Queue0), - Queue2 = queue:in(2, Queue1), - Queue3 = queue:in(3, Queue2), - {{value, 1}, _} = queue:out(Queue2), - "{[3,2],[1]}" = lists:flatten(io_lib:format("~p", [Queue3])), - {true, {[3],[1]}} = queue_remove_unique(fun(I) -> I == 2 end, {[3,2],[1]}), - Queue4 = queue:filter(fun(I) -> not (I == 2) end, Queue3), - "{[3],[1]}" = lists:flatten(io_lib:format("~p", [Queue4])), - 2 = queue:len(Queue4), - {{value, 1}, _} = queue:out(Queue4), - [1, 3] = queue:to_list(Queue4), - - Q166 = pqueue4:new(), - true = pqueue4:is_queue(Q166), - Q167 = pqueue4:in(6, 1, Q166), - Q168 = pqueue4:in(7, 1, Q167), - Q169 = pqueue4:in(8, 1, Q168), - Q170 = pqueue4:in(3, 0, Q169), - Q171 = pqueue4:in(4, 0, Q170), - Q172 = pqueue4:in(5, 0, Q171), - Q173 = pqueue4:in(0, -1, Q172), - Q174 = pqueue4:in(1, -1, Q173), - Q175 = pqueue4:in(2, -1, Q174), - [{-1, [0, 1, 2]}, {0, [3, 4, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q175), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> I > 5 end, Q175)), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> I < 3 end, Q175)), - 3 = pqueue4:len(pqueue4:filter(fun(I) -> (I < 1) orelse (I > 6) end, Q175)), - {true, Q176} = pqueue4:remove_unique(fun(I) -> I == 4 end, Q175), - [{-1, [0, 1, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q176), - {true, Q177} = pqueue4:remove_unique(fun(I) -> I == 1 end, Q176), - [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 7, 8]}] = pqueue4:to_plist(Q177), - {true, Q178} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q177), - [{-1, [0, 2]}, {0, [3, 5]}, {1, [6, 8]}] = pqueue4:to_plist(Q178), - 6 = pqueue4:len(Q178), - {{value, 0, -1}, Q179} = pqueue4:pout(Q178), - {{value, 2}, Q180} = pqueue4:out(Q179), - {{value, 6}, Q181} = pqueue4:out(1, Q180), - {false, Q181} = pqueue4:remove_unique(fun(I) -> I == 7 end, Q181), - [{0, [3, 5]}, {1, [8]}] = pqueue4:to_plist(Q181), - {true, Q182} = pqueue4:remove_unique(fun(I) -> I == 5 end, Q181), - {true, Q183} = pqueue4:remove_unique(fun(I) -> I == 8 end, 1, Q182), - {true, Q184} = pqueue4:remove_unique(fun(I) -> I == 3 end, Q183), - {empty, Q184} = pqueue4:pout(Q184), - {empty, Q184} = pqueue4:out(Q184), - {empty, Q184} = pqueue4:out(0, Q184), - ok. - -%%%------------------------------------------------------------------------ -%%% Private functions -%%%------------------------------------------------------------------------ - -%% @hidden --define(FILTER_P_Qn128(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn112(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn96(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn80(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn64(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn48(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn32(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qn16(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp16(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp32(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp48(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp64(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}). --define(FILTER_P_Qp80(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}). --define(FILTER_P_Qp96(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}). --define(FILTER_P_Qp112(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}). --define(FILTER_P_Qp128(P, V1, V2, V3), -filter_priority(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - V2 = queue:filter(F, V1), - NewSize = Size - (queue:len(V1) - queue:len(V2)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}). - -?FILTER_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?FILTER_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?FILTER_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?FILTER_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?FILTER_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?FILTER_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?FILTER_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?FILTER_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?FILTER_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?FILTER_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?FILTER_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?FILTER_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?FILTER_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?FILTER_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?FILTER_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?FILTER_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?FILTER_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?FILTER_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?FILTER_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?FILTER_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?FILTER_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?FILTER_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?FILTER_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?FILTER_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?FILTER_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?FILTER_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?FILTER_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?FILTER_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?FILTER_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?FILTER_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?FILTER_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?FILTER_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -filter_priority(0, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - NewQ0 = queue:filter(F, Q0), - NewSize = Size - (queue:len(Q0) - queue:len(NewQ0)), - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?FILTER_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?FILTER_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?FILTER_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?FILTER_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?FILTER_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?FILTER_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?FILTER_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?FILTER_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?FILTER_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?FILTER_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?FILTER_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?FILTER_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?FILTER_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?FILTER_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?FILTER_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?FILTER_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?FILTER_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?FILTER_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?FILTER_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?FILTER_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?FILTER_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?FILTER_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?FILTER_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?FILTER_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?FILTER_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?FILTER_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?FILTER_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?FILTER_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?FILTER_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?FILTER_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?FILTER_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?FILTER_P_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - -%% @hidden --define(IN_HIGHER_Qn128(P, V), -in_higher(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - V, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn112(P, V), -in_higher(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, - V, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn96(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, - V, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn80(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, - V, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn64(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, - V, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn48(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, - V, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn32(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qn16(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp16(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp32(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp48(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp64(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V, - Qp80, Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp80(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V, - Qp96, Qp112, Qp128}). --define(IN_HIGHER_Qp96(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V, - Qp112, Qp128}). --define(IN_HIGHER_Qp112(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V, - Qp128}). --define(IN_HIGHER_Qp128(P, V), -in_higher(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> - {P, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V}). - -?IN_HIGHER_Qn128(-128, - {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-127, - {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-126, - {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-125, - {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-124, - {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); -?IN_HIGHER_Qn128(-115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); -?IN_HIGHER_Qn128(-114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); -?IN_HIGHER_Qn128(-113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); -?IN_HIGHER_Qn112(-112, - {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-111, - {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-110, - {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-109, - {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-108, - {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); -?IN_HIGHER_Qn112(-99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); -?IN_HIGHER_Qn112(-98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); -?IN_HIGHER_Qn112(-97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); -?IN_HIGHER_Qn96(-96, - {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-95, - {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-94, - {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-93, - {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-92, - {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); -?IN_HIGHER_Qn96(-83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); -?IN_HIGHER_Qn96(-82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); -?IN_HIGHER_Qn96(-81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); -?IN_HIGHER_Qn80(-80, - {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-79, - {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-78, - {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-77, - {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-76, - {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); -?IN_HIGHER_Qn80(-67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); -?IN_HIGHER_Qn80(-66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); -?IN_HIGHER_Qn80(-65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); -?IN_HIGHER_Qn64(-64, - {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-63, - {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-62, - {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-61, - {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-60, - {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); -?IN_HIGHER_Qn64(-51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); -?IN_HIGHER_Qn64(-50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); -?IN_HIGHER_Qn64(-49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); -?IN_HIGHER_Qn48(-48, - {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-47, - {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-46, - {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-45, - {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-44, - {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); -?IN_HIGHER_Qn48(-35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); -?IN_HIGHER_Qn48(-34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); -?IN_HIGHER_Qn48(-33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); -?IN_HIGHER_Qn32(-32, - {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-31, - {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-30, - {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-29, - {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-28, - {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); -?IN_HIGHER_Qn32(-19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); -?IN_HIGHER_Qn32(-18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); -?IN_HIGHER_Qn32(-17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); -?IN_HIGHER_Qn16(-16, - {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-15, - {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-14, - {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-13, - {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-12, - {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); -?IN_HIGHER_Qn16(-3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); -?IN_HIGHER_Qn16(-2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); -?IN_HIGHER_Qn16(-1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); -in_higher(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {0, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - queue:in(X, Q0), - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?IN_HIGHER_Qp16(1, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(2, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(3, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(4, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(5, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); -?IN_HIGHER_Qp16(14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); -?IN_HIGHER_Qp16(15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); -?IN_HIGHER_Qp16(16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); -?IN_HIGHER_Qp32(17, - {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(18, - {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(19, - {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(20, - {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(21, - {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); -?IN_HIGHER_Qp32(30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); -?IN_HIGHER_Qp32(31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); -?IN_HIGHER_Qp32(32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); -?IN_HIGHER_Qp48(33, - {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(34, - {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(35, - {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(36, - {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(37, - {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); -?IN_HIGHER_Qp48(46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); -?IN_HIGHER_Qp48(47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); -?IN_HIGHER_Qp48(48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); -?IN_HIGHER_Qp64(49, - {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(50, - {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(51, - {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(52, - {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(53, - {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); -?IN_HIGHER_Qp64(62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); -?IN_HIGHER_Qp64(63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); -?IN_HIGHER_Qp64(64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); -?IN_HIGHER_Qp80(65, - {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(66, - {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(67, - {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(68, - {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(69, - {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); -?IN_HIGHER_Qp80(78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); -?IN_HIGHER_Qp80(79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); -?IN_HIGHER_Qp80(80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); -?IN_HIGHER_Qp96(81, - {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(82, - {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(83, - {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(84, - {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(85, - {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); -?IN_HIGHER_Qp96(94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); -?IN_HIGHER_Qp96(95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); -?IN_HIGHER_Qp96(96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); -?IN_HIGHER_Qp112(97, - {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(98, - {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(99, - {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(100, - {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(101, - {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); -?IN_HIGHER_Qp112(110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); -?IN_HIGHER_Qp112(111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); -?IN_HIGHER_Qp112(112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); -?IN_HIGHER_Qp128(113, - {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(114, - {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(115, - {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(116, - {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(117, - {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); -?IN_HIGHER_Qp128(126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); -?IN_HIGHER_Qp128(127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); -?IN_HIGHER_Qp128(128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). - -%% @hidden --define(IN_LOWER_Qn128(P, V), -in_lower(P, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - V, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn112(P, V), -in_lower(P, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, - V, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn96(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, - V, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn80(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, - V, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn64(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, - V, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn48(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, - V, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn32(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qn16(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp16(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp32(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp48(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V, - Qp64, Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp64(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V, - Qp80, Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp80(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V, - Qp96, Qp112, Qp128}). --define(IN_LOWER_Qp96(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V, - Qp112, Qp128}). --define(IN_LOWER_Qp112(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V, - Qp128}). --define(IN_LOWER_Qp128(P, V), -in_lower(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V}). - -?IN_LOWER_Qn128(-128, - {queue:in(X, Qn128), Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-127, - {Qn128, queue:in(X, Qn127), Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-126, - {Qn128, Qn127, queue:in(X, Qn126), Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-125, - {Qn128, Qn127, Qn126, queue:in(X, Qn125), Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-124, - {Qn128, Qn127, Qn126, Qn125, queue:in(X, Qn124), - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - queue:in(X, Qn123), Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, queue:in(X, Qn122), Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, queue:in(X, Qn121), Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, queue:in(X, Qn120), Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, queue:in(X, Qn119), Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, queue:in(X, Qn118), - Qn117, Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - queue:in(X, Qn117), Qn116, Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, queue:in(X, Qn116), Qn115, Qn114, Qn113}); -?IN_LOWER_Qn128(-115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, queue:in(X, Qn115), Qn114, Qn113}); -?IN_LOWER_Qn128(-114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, queue:in(X, Qn114), Qn113}); -?IN_LOWER_Qn128(-113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, queue:in(X, Qn113)}); -?IN_LOWER_Qn112(-112, - {queue:in(X, Qn112), Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-111, - {Qn112, queue:in(X, Qn111), Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-110, - {Qn112, Qn111, queue:in(X, Qn110), Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-109, - {Qn112, Qn111, Qn110, queue:in(X, Qn109), Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-108, - {Qn112, Qn111, Qn110, Qn109, queue:in(X, Qn108), - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - queue:in(X, Qn107), Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, queue:in(X, Qn106), Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, queue:in(X, Qn105), Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, queue:in(X, Qn104), Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, queue:in(X, Qn103), Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, queue:in(X, Qn102), - Qn101, Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - queue:in(X, Qn101), Qn100, Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, queue:in(X, Qn100), Qn99, Qn98, Qn97}); -?IN_LOWER_Qn112(-99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, queue:in(X, Qn99), Qn98, Qn97}); -?IN_LOWER_Qn112(-98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, queue:in(X, Qn98), Qn97}); -?IN_LOWER_Qn112(-97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, queue:in(X, Qn97)}); -?IN_LOWER_Qn96(-96, - {queue:in(X, Qn96), Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-95, - {Qn96, queue:in(X, Qn95), Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-94, - {Qn96, Qn95, queue:in(X, Qn94), Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-93, - {Qn96, Qn95, Qn94, queue:in(X, Qn93), Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-92, - {Qn96, Qn95, Qn94, Qn93, queue:in(X, Qn92), - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - queue:in(X, Qn91), Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, queue:in(X, Qn90), Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, queue:in(X, Qn89), Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, queue:in(X, Qn88), Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, queue:in(X, Qn87), Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, queue:in(X, Qn86), - Qn85, Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - queue:in(X, Qn85), Qn84, Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, queue:in(X, Qn84), Qn83, Qn82, Qn81}); -?IN_LOWER_Qn96(-83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, queue:in(X, Qn83), Qn82, Qn81}); -?IN_LOWER_Qn96(-82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, queue:in(X, Qn82), Qn81}); -?IN_LOWER_Qn96(-81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, queue:in(X, Qn81)}); -?IN_LOWER_Qn80(-80, - {queue:in(X, Qn80), Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-79, - {Qn80, queue:in(X, Qn79), Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-78, - {Qn80, Qn79, queue:in(X, Qn78), Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-77, - {Qn80, Qn79, Qn78, queue:in(X, Qn77), Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-76, - {Qn80, Qn79, Qn78, Qn77, queue:in(X, Qn76), - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - queue:in(X, Qn75), Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, queue:in(X, Qn74), Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, queue:in(X, Qn73), Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, queue:in(X, Qn72), Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, queue:in(X, Qn71), Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, queue:in(X, Qn70), - Qn69, Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - queue:in(X, Qn69), Qn68, Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, queue:in(X, Qn68), Qn67, Qn66, Qn65}); -?IN_LOWER_Qn80(-67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, queue:in(X, Qn67), Qn66, Qn65}); -?IN_LOWER_Qn80(-66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, queue:in(X, Qn66), Qn65}); -?IN_LOWER_Qn80(-65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, queue:in(X, Qn65)}); -?IN_LOWER_Qn64(-64, - {queue:in(X, Qn64), Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-63, - {Qn64, queue:in(X, Qn63), Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-62, - {Qn64, Qn63, queue:in(X, Qn62), Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-61, - {Qn64, Qn63, Qn62, queue:in(X, Qn61), Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-60, - {Qn64, Qn63, Qn62, Qn61, queue:in(X, Qn60), - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - queue:in(X, Qn59), Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, queue:in(X, Qn58), Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, queue:in(X, Qn57), Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, queue:in(X, Qn56), Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, queue:in(X, Qn55), Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, queue:in(X, Qn54), - Qn53, Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - queue:in(X, Qn53), Qn52, Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, queue:in(X, Qn52), Qn51, Qn50, Qn49}); -?IN_LOWER_Qn64(-51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, queue:in(X, Qn51), Qn50, Qn49}); -?IN_LOWER_Qn64(-50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, queue:in(X, Qn50), Qn49}); -?IN_LOWER_Qn64(-49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, queue:in(X, Qn49)}); -?IN_LOWER_Qn48(-48, - {queue:in(X, Qn48), Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-47, - {Qn48, queue:in(X, Qn47), Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-46, - {Qn48, Qn47, queue:in(X, Qn46), Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-45, - {Qn48, Qn47, Qn46, queue:in(X, Qn45), Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-44, - {Qn48, Qn47, Qn46, Qn45, queue:in(X, Qn44), - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - queue:in(X, Qn43), Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, queue:in(X, Qn42), Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, queue:in(X, Qn41), Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, queue:in(X, Qn40), Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, queue:in(X, Qn39), Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, queue:in(X, Qn38), - Qn37, Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - queue:in(X, Qn37), Qn36, Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, queue:in(X, Qn36), Qn35, Qn34, Qn33}); -?IN_LOWER_Qn48(-35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, queue:in(X, Qn35), Qn34, Qn33}); -?IN_LOWER_Qn48(-34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, queue:in(X, Qn34), Qn33}); -?IN_LOWER_Qn48(-33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, queue:in(X, Qn33)}); -?IN_LOWER_Qn32(-32, - {queue:in(X, Qn32), Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-31, - {Qn32, queue:in(X, Qn31), Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-30, - {Qn32, Qn31, queue:in(X, Qn30), Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-29, - {Qn32, Qn31, Qn30, queue:in(X, Qn29), Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-28, - {Qn32, Qn31, Qn30, Qn29, queue:in(X, Qn28), - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - queue:in(X, Qn27), Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, queue:in(X, Qn26), Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, queue:in(X, Qn25), Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, queue:in(X, Qn24), Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, queue:in(X, Qn23), Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, queue:in(X, Qn22), - Qn21, Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - queue:in(X, Qn21), Qn20, Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, queue:in(X, Qn20), Qn19, Qn18, Qn17}); -?IN_LOWER_Qn32(-19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, queue:in(X, Qn19), Qn18, Qn17}); -?IN_LOWER_Qn32(-18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, queue:in(X, Qn18), Qn17}); -?IN_LOWER_Qn32(-17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, queue:in(X, Qn17)}); -?IN_LOWER_Qn16(-16, - {queue:in(X, Qn16), Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-15, - {Qn16, queue:in(X, Qn15), Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-14, - {Qn16, Qn15, queue:in(X, Qn14), Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-13, - {Qn16, Qn15, Qn14, queue:in(X, Qn13), Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-12, - {Qn16, Qn15, Qn14, Qn13, queue:in(X, Qn12), - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - queue:in(X, Qn11), Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, queue:in(X, Qn10), Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, queue:in(X, Qn9), Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, queue:in(X, Qn8), Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, queue:in(X, Qn7), Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, queue:in(X, Qn6), - Qn5, Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - queue:in(X, Qn5), Qn4, Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, queue:in(X, Qn4), Qn3, Qn2, Qn1}); -?IN_LOWER_Qn16(-3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, queue:in(X, Qn3), Qn2, Qn1}); -?IN_LOWER_Qn16(-2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, queue:in(X, Qn2), Qn1}); -?IN_LOWER_Qn16(-1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, queue:in(X, Qn1)}); -in_lower(0, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}, X) -> - {Pc, - Size + 1, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - queue:in(X, Q0), - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}; -?IN_LOWER_Qp16(1, - {queue:in(X, Qp1), Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(2, - {Qp1, queue:in(X, Qp2), Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(3, - {Qp1, Qp2, queue:in(X, Qp3), Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(4, - {Qp1, Qp2, Qp3, queue:in(X, Qp4), Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(5, - {Qp1, Qp2, Qp3, Qp4, queue:in(X, Qp5), - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - queue:in(X, Qp6), Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, queue:in(X, Qp7), Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, queue:in(X, Qp8), Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, queue:in(X, Qp9), Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, queue:in(X, Qp10), Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, queue:in(X, Qp11), - Qp12, Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - queue:in(X, Qp12), Qp13, Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, queue:in(X, Qp13), Qp14, Qp15, Qp16}); -?IN_LOWER_Qp16(14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, queue:in(X, Qp14), Qp15, Qp16}); -?IN_LOWER_Qp16(15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, queue:in(X, Qp15), Qp16}); -?IN_LOWER_Qp16(16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, queue:in(X, Qp16)}); -?IN_LOWER_Qp32(17, - {queue:in(X, Qp17), Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(18, - {Qp17, queue:in(X, Qp18), Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(19, - {Qp17, Qp18, queue:in(X, Qp19), Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(20, - {Qp17, Qp18, Qp19, queue:in(X, Qp20), Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(21, - {Qp17, Qp18, Qp19, Qp20, queue:in(X, Qp21), - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - queue:in(X, Qp22), Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, queue:in(X, Qp23), Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, queue:in(X, Qp24), Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, queue:in(X, Qp25), Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, queue:in(X, Qp26), Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, queue:in(X, Qp27), - Qp28, Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - queue:in(X, Qp28), Qp29, Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, queue:in(X, Qp29), Qp30, Qp31, Qp32}); -?IN_LOWER_Qp32(30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, queue:in(X, Qp30), Qp31, Qp32}); -?IN_LOWER_Qp32(31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, queue:in(X, Qp31), Qp32}); -?IN_LOWER_Qp32(32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, queue:in(X, Qp32)}); -?IN_LOWER_Qp48(33, - {queue:in(X, Qp33), Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(34, - {Qp33, queue:in(X, Qp34), Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(35, - {Qp33, Qp34, queue:in(X, Qp35), Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(36, - {Qp33, Qp34, Qp35, queue:in(X, Qp36), Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(37, - {Qp33, Qp34, Qp35, Qp36, queue:in(X, Qp37), - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - queue:in(X, Qp38), Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, queue:in(X, Qp39), Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, queue:in(X, Qp40), Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, queue:in(X, Qp41), Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, queue:in(X, Qp42), Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, queue:in(X, Qp43), - Qp44, Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - queue:in(X, Qp44), Qp45, Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, queue:in(X, Qp45), Qp46, Qp47, Qp48}); -?IN_LOWER_Qp48(46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, queue:in(X, Qp46), Qp47, Qp48}); -?IN_LOWER_Qp48(47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, queue:in(X, Qp47), Qp48}); -?IN_LOWER_Qp48(48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, queue:in(X, Qp48)}); -?IN_LOWER_Qp64(49, - {queue:in(X, Qp49), Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(50, - {Qp49, queue:in(X, Qp50), Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(51, - {Qp49, Qp50, queue:in(X, Qp51), Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(52, - {Qp49, Qp50, Qp51, queue:in(X, Qp52), Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(53, - {Qp49, Qp50, Qp51, Qp52, queue:in(X, Qp53), - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - queue:in(X, Qp54), Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, queue:in(X, Qp55), Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, queue:in(X, Qp56), Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, queue:in(X, Qp57), Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, queue:in(X, Qp58), Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, queue:in(X, Qp59), - Qp60, Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - queue:in(X, Qp60), Qp61, Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, queue:in(X, Qp61), Qp62, Qp63, Qp64}); -?IN_LOWER_Qp64(62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, queue:in(X, Qp62), Qp63, Qp64}); -?IN_LOWER_Qp64(63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, queue:in(X, Qp63), Qp64}); -?IN_LOWER_Qp64(64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, queue:in(X, Qp64)}); -?IN_LOWER_Qp80(65, - {queue:in(X, Qp65), Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(66, - {Qp65, queue:in(X, Qp66), Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(67, - {Qp65, Qp66, queue:in(X, Qp67), Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(68, - {Qp65, Qp66, Qp67, queue:in(X, Qp68), Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(69, - {Qp65, Qp66, Qp67, Qp68, queue:in(X, Qp69), - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - queue:in(X, Qp70), Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, queue:in(X, Qp71), Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, queue:in(X, Qp72), Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, queue:in(X, Qp73), Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, queue:in(X, Qp74), Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, queue:in(X, Qp75), - Qp76, Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - queue:in(X, Qp76), Qp77, Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, queue:in(X, Qp77), Qp78, Qp79, Qp80}); -?IN_LOWER_Qp80(78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, queue:in(X, Qp78), Qp79, Qp80}); -?IN_LOWER_Qp80(79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, queue:in(X, Qp79), Qp80}); -?IN_LOWER_Qp80(80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, queue:in(X, Qp80)}); -?IN_LOWER_Qp96(81, - {queue:in(X, Qp81), Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(82, - {Qp81, queue:in(X, Qp82), Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(83, - {Qp81, Qp82, queue:in(X, Qp83), Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(84, - {Qp81, Qp82, Qp83, queue:in(X, Qp84), Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(85, - {Qp81, Qp82, Qp83, Qp84, queue:in(X, Qp85), - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - queue:in(X, Qp86), Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, queue:in(X, Qp87), Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, queue:in(X, Qp88), Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, queue:in(X, Qp89), Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, queue:in(X, Qp90), Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, queue:in(X, Qp91), - Qp92, Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - queue:in(X, Qp92), Qp93, Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, queue:in(X, Qp93), Qp94, Qp95, Qp96}); -?IN_LOWER_Qp96(94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, queue:in(X, Qp94), Qp95, Qp96}); -?IN_LOWER_Qp96(95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, queue:in(X, Qp95), Qp96}); -?IN_LOWER_Qp96(96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, queue:in(X, Qp96)}); -?IN_LOWER_Qp112(97, - {queue:in(X, Qp97), Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(98, - {Qp97, queue:in(X, Qp98), Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(99, - {Qp97, Qp98, queue:in(X, Qp99), Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(100, - {Qp97, Qp98, Qp99, queue:in(X, Qp100), Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(101, - {Qp97, Qp98, Qp99, Qp100, queue:in(X, Qp101), - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - queue:in(X, Qp102), Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, queue:in(X, Qp103), Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, queue:in(X, Qp104), Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, queue:in(X, Qp105), Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, queue:in(X, Qp106), Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, queue:in(X, Qp107), - Qp108, Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - queue:in(X, Qp108), Qp109, Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, queue:in(X, Qp109), Qp110, Qp111, Qp112}); -?IN_LOWER_Qp112(110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, queue:in(X, Qp110), Qp111, Qp112}); -?IN_LOWER_Qp112(111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, queue:in(X, Qp111), Qp112}); -?IN_LOWER_Qp112(112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, queue:in(X, Qp112)}); -?IN_LOWER_Qp128(113, - {queue:in(X, Qp113), Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(114, - {Qp113, queue:in(X, Qp114), Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(115, - {Qp113, Qp114, queue:in(X, Qp115), Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(116, - {Qp113, Qp114, Qp115, queue:in(X, Qp116), Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(117, - {Qp113, Qp114, Qp115, Qp116, queue:in(X, Qp117), - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - queue:in(X, Qp118), Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, queue:in(X, Qp119), Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, queue:in(X, Qp120), Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, queue:in(X, Qp121), Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, queue:in(X, Qp122), Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, queue:in(X, Qp123), - Qp124, Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - queue:in(X, Qp124), Qp125, Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, queue:in(X, Qp125), Qp126, Qp127, Qp128}); -?IN_LOWER_Qp128(126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, queue:in(X, Qp126), Qp127, Qp128}); -?IN_LOWER_Qp128(127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, queue:in(X, Qp127), Qp128}); -?IN_LOWER_Qp128(128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, queue:in(X, Qp128)}). - -%% @hidden --define(OUT_CURRENT_Qn128(P, V1, V2, V3), -out_current(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn112(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn96(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn80(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn64(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn48(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn32(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qn16(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp16(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp32(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp48(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp64(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp80(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp96(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}} - end). --define(OUT_CURRENT_Qp112(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}} - end). --define(OUT_CURRENT_Qp128(P, V1, V2, V3), -out_current(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> - {Value, V2} = queue:out(V1), - if - Value =:= empty -> - out_current(P + 1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}} - end). - -?OUT_CURRENT_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_CURRENT_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_CURRENT_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_CURRENT_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_CURRENT_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_CURRENT_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_CURRENT_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_CURRENT_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_CURRENT_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_CURRENT_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_CURRENT_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_CURRENT_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_CURRENT_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_CURRENT_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_CURRENT_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_CURRENT_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_CURRENT_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_CURRENT_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_CURRENT_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_CURRENT_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_CURRENT_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_CURRENT_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_CURRENT_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_CURRENT_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_current(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - {Value, NewQ0} = queue:out(Q0), - if - Value =:= empty -> - out_current(1, Q); - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> 0 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end; -?OUT_CURRENT_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_CURRENT_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_CURRENT_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_CURRENT_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_CURRENT_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_CURRENT_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_CURRENT_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_CURRENT_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_CURRENT_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_CURRENT_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_CURRENT_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_CURRENT_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_CURRENT_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_CURRENT_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_CURRENT_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_CURRENT_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_CURRENT_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_CURRENT_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_CURRENT_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_CURRENT_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_CURRENT_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_CURRENT_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_CURRENT_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -out_current(128, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, NewQp128} = queue:out(Qp128), - if - Value =:= empty -> - {empty, - {empty, - 0, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}}; - true -> - NewSize = Size - 1, - {Value, - {if NewSize == 0 -> empty; true -> 128 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} - end. - -%% @hidden --define(OUT_CURRENT_P_Qn128(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn112(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn96(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn80(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn64(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn48(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn32(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qn16(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp16(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp32(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp48(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp64(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp80(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp96(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}} - end). --define(OUT_CURRENT_P_Qp112(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}} - end). --define(OUT_CURRENT_P_Qp128(P, V1, V2, V3), -out_current_p(P, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}} = Q) -> - case queue:out(V1) of - {empty, _} -> - out_current_p(P + 1, Q); - {{value, X}, V2} -> - NewSize = Size - 1, - {{value, X, P}, - {if NewSize == 0 -> empty; true -> P end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}} - end). - -?OUT_CURRENT_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_CURRENT_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_CURRENT_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_CURRENT_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_CURRENT_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_CURRENT_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_CURRENT_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_CURRENT_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_CURRENT_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_CURRENT_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_CURRENT_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_CURRENT_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_CURRENT_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_CURRENT_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_CURRENT_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_CURRENT_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_CURRENT_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_CURRENT_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_CURRENT_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_CURRENT_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_CURRENT_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_CURRENT_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_CURRENT_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_CURRENT_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_current_p(0, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128} = Q) -> - case queue:out(Q0) of - {empty, _} -> - out_current_p(1, Q); - {{value, X}, NewQ0} -> - NewSize = Size - 1, - {{value, X, 0}, - {if NewSize == 0 -> empty; true -> 0 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}} - end; -?OUT_CURRENT_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_CURRENT_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_CURRENT_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_CURRENT_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_CURRENT_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_CURRENT_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_CURRENT_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_CURRENT_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_CURRENT_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_CURRENT_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_CURRENT_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_CURRENT_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_CURRENT_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_CURRENT_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_CURRENT_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_CURRENT_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_CURRENT_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_CURRENT_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_CURRENT_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_CURRENT_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_CURRENT_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_CURRENT_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_CURRENT_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -out_current_p(128, - {_, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - case queue:out(Qp128) of - {empty, _} -> - {empty, - {empty, - 0, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}}; - {{value, X}, NewQp128} -> - NewSize = Size - 1, - {{value, X, 128}, - {if NewSize == 0 -> empty; true -> 128 end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, NewQp128}}} - end. - -%% @hidden --define(OUT_SPECIFIC_Qn128(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn112(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn96(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn80(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn64(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn48(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn32(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qn16(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp16(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp32(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp48(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp64(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp80(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp96(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}}). --define(OUT_SPECIFIC_Qp112(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}}). --define(OUT_SPECIFIC_Qp128(P, V1, V2, V3), -out_specific(P, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, V2} = queue:out(V1), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}}). - -?OUT_SPECIFIC_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?OUT_SPECIFIC_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?OUT_SPECIFIC_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?OUT_SPECIFIC_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?OUT_SPECIFIC_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?OUT_SPECIFIC_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?OUT_SPECIFIC_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?OUT_SPECIFIC_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?OUT_SPECIFIC_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?OUT_SPECIFIC_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?OUT_SPECIFIC_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?OUT_SPECIFIC_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?OUT_SPECIFIC_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?OUT_SPECIFIC_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?OUT_SPECIFIC_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?OUT_SPECIFIC_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?OUT_SPECIFIC_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?OUT_SPECIFIC_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?OUT_SPECIFIC_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?OUT_SPECIFIC_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?OUT_SPECIFIC_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?OUT_SPECIFIC_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?OUT_SPECIFIC_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?OUT_SPECIFIC_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -out_specific(0, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, NewQ0} = queue:out(Q0), - NewSize = if Value =/= empty -> Size - 1; true -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; -?OUT_SPECIFIC_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?OUT_SPECIFIC_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?OUT_SPECIFIC_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?OUT_SPECIFIC_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?OUT_SPECIFIC_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?OUT_SPECIFIC_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?OUT_SPECIFIC_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?OUT_SPECIFIC_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?OUT_SPECIFIC_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?OUT_SPECIFIC_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?OUT_SPECIFIC_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?OUT_SPECIFIC_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?OUT_SPECIFIC_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?OUT_SPECIFIC_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?OUT_SPECIFIC_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?OUT_SPECIFIC_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?OUT_SPECIFIC_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?OUT_SPECIFIC_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?OUT_SPECIFIC_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?OUT_SPECIFIC_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?OUT_SPECIFIC_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?OUT_SPECIFIC_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?OUT_SPECIFIC_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?OUT_SPECIFIC_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - -%% @hidden --define(REMOVE_UNIQ_P_Qn128(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - {Qn128, Qn127, Qn126, Qn125, Qn124, Qn123, Qn122, Qn121, - Qn120, Qn119, Qn118, Qn117, Qn116, Qn115, Qn114, Qn113}, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - V3, - Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn112(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, - {Qn112, Qn111, Qn110, Qn109, Qn108, Qn107, Qn106, Qn105, - Qn104, Qn103, Qn102, Qn101, Qn100, Qn99, Qn98, Qn97}, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, - V3, - Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn96(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, - {Qn96, Qn95, Qn94, Qn93, Qn92, Qn91, Qn90, Qn89, - Qn88, Qn87, Qn86, Qn85, Qn84, Qn83, Qn82, Qn81}, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, - V3, - Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn80(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, - {Qn80, Qn79, Qn78, Qn77, Qn76, Qn75, Qn74, Qn73, - Qn72, Qn71, Qn70, Qn69, Qn68, Qn67, Qn66, Qn65}, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, - V3, - Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn64(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, - {Qn64, Qn63, Qn62, Qn61, Qn60, Qn59, Qn58, Qn57, - Qn56, Qn55, Qn54, Qn53, Qn52, Qn51, Qn50, Qn49}, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, - V3, - Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn48(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, - {Qn48, Qn47, Qn46, Qn45, Qn44, Qn43, Qn42, Qn41, - Qn40, Qn39, Qn38, Qn37, Qn36, Qn35, Qn34, Qn33}, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, - V3, - Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn32(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - {Qn32, Qn31, Qn30, Qn29, Qn28, Qn27, Qn26, Qn25, - Qn24, Qn23, Qn22, Qn21, Qn20, Qn19, Qn18, Qn17}, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, - V3, - Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qn16(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - {Qn16, Qn15, Qn14, Qn13, Qn12, Qn11, Qn10, Qn9, - Qn8, Qn7, Qn6, Qn5, Qn4, Qn3, Qn2, Qn1}, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, - V3, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp16(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - {Qp1, Qp2, Qp3, Qp4, Qp5, Qp6, Qp7, Qp8, - Qp9, Qp10, Qp11, Qp12, Qp13, Qp14, Qp15, Qp16}, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - V3, - Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp32(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - {Qp17, Qp18, Qp19, Qp20, Qp21, Qp22, Qp23, Qp24, - Qp25, Qp26, Qp27, Qp28, Qp29, Qp30, Qp31, Qp32}, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, - V3, - Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp48(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - {Qp33, Qp34, Qp35, Qp36, Qp37, Qp38, Qp39, Qp40, - Qp41, Qp42, Qp43, Qp44, Qp45, Qp46, Qp47, Qp48}, - Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, - V3, - Qp64, Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp64(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - {Qp49, Qp50, Qp51, Qp52, Qp53, Qp54, Qp55, Qp56, - Qp57, Qp58, Qp59, Qp60, Qp61, Qp62, Qp63, Qp64}, - Qp80, Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, - V3, - Qp80, Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp80(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - {Qp65, Qp66, Qp67, Qp68, Qp69, Qp70, Qp71, Qp72, - Qp73, Qp74, Qp75, Qp76, Qp77, Qp78, Qp79, Qp80}, - Qp96, Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, - V3, - Qp96, Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp96(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - {Qp81, Qp82, Qp83, Qp84, Qp85, Qp86, Qp87, Qp88, - Qp89, Qp90, Qp91, Qp92, Qp93, Qp94, Qp95, Qp96}, - Qp112, Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, - V3, - Qp112, Qp128}}). --define(REMOVE_UNIQ_P_Qp112(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - {Qp97, Qp98, Qp99, Qp100, Qp101, Qp102, Qp103, Qp104, - Qp105, Qp106, Qp107, Qp108, Qp109, Qp110, Qp111, Qp112}, - Qp128}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, - V3, - Qp128}}). --define(REMOVE_UNIQ_P_Qp128(P, V1, V2, V3), -remove_unique_p(P, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - {Qp113, Qp114, Qp115, Qp116, Qp117, Qp118, Qp119, Qp120, - Qp121, Qp122, Qp123, Qp124, Qp125, Qp126, Qp127, Qp128}}) -> - {Value, V2} = queue_remove_unique(F, V1), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, - V3}}). - -?REMOVE_UNIQ_P_Qn128(-128, - Qn128, NewQn128, - {NewQn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-127, - Qn127, NewQn127, - {Qn128, NewQn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-126, - Qn126, NewQn126, - {Qn128, Qn127, NewQn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-125, - Qn125, NewQn125, - {Qn128, Qn127, Qn126, NewQn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-124, - Qn124, NewQn124, - {Qn128, Qn127, Qn126, Qn125, NewQn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-123, - Qn123, NewQn123, - {Qn128, Qn127, Qn126, Qn125, Qn124, - NewQn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-122, - Qn122, NewQn122, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, NewQn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-121, - Qn121, NewQn121, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, NewQn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-120, - Qn120, NewQn120, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, NewQn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-119, - Qn119, NewQn119, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, NewQn119, Qn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-118, - Qn118, NewQn118, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, NewQn118, - Qn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-117, - Qn117, NewQn117, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - NewQn117, Qn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-116, - Qn116, NewQn116, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, NewQn116, Qn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-115, - Qn115, NewQn115, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, NewQn115, Qn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-114, - Qn114, NewQn114, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, NewQn114, Qn113}); -?REMOVE_UNIQ_P_Qn128(-113, - Qn113, NewQn113, - {Qn128, Qn127, Qn126, Qn125, Qn124, - Qn123, Qn122, Qn121, Qn120, Qn119, Qn118, - Qn117, Qn116, Qn115, Qn114, NewQn113}); -?REMOVE_UNIQ_P_Qn112(-112, - Qn112, NewQn112, - {NewQn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-111, - Qn111, NewQn111, - {Qn112, NewQn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-110, - Qn110, NewQn110, - {Qn112, Qn111, NewQn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-109, - Qn109, NewQn109, - {Qn112, Qn111, Qn110, NewQn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-108, - Qn108, NewQn108, - {Qn112, Qn111, Qn110, Qn109, NewQn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-107, - Qn107, NewQn107, - {Qn112, Qn111, Qn110, Qn109, Qn108, - NewQn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-106, - Qn106, NewQn106, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, NewQn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-105, - Qn105, NewQn105, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, NewQn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-104, - Qn104, NewQn104, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, NewQn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-103, - Qn103, NewQn103, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, NewQn103, Qn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-102, - Qn102, NewQn102, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, NewQn102, - Qn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-101, - Qn101, NewQn101, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - NewQn101, Qn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-100, - Qn100, NewQn100, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, NewQn100, Qn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-99, - Qn99, NewQn99, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, NewQn99, Qn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-98, - Qn98, NewQn98, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, NewQn98, Qn97}); -?REMOVE_UNIQ_P_Qn112(-97, - Qn97, NewQn97, - {Qn112, Qn111, Qn110, Qn109, Qn108, - Qn107, Qn106, Qn105, Qn104, Qn103, Qn102, - Qn101, Qn100, Qn99, Qn98, NewQn97}); -?REMOVE_UNIQ_P_Qn96(-96, - Qn96, NewQn96, - {NewQn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-95, - Qn95, NewQn95, - {Qn96, NewQn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-94, - Qn94, NewQn94, - {Qn96, Qn95, NewQn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-93, - Qn93, NewQn93, - {Qn96, Qn95, Qn94, NewQn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-92, - Qn92, NewQn92, - {Qn96, Qn95, Qn94, Qn93, NewQn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-91, - Qn91, NewQn91, - {Qn96, Qn95, Qn94, Qn93, Qn92, - NewQn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-90, - Qn90, NewQn90, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, NewQn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-89, - Qn89, NewQn89, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, NewQn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-88, - Qn88, NewQn88, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, NewQn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-87, - Qn87, NewQn87, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, NewQn87, Qn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-86, - Qn86, NewQn86, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, NewQn86, - Qn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-85, - Qn85, NewQn85, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - NewQn85, Qn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-84, - Qn84, NewQn84, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, NewQn84, Qn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-83, - Qn83, NewQn83, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, NewQn83, Qn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-82, - Qn82, NewQn82, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, NewQn82, Qn81}); -?REMOVE_UNIQ_P_Qn96(-81, - Qn81, NewQn81, - {Qn96, Qn95, Qn94, Qn93, Qn92, - Qn91, Qn90, Qn89, Qn88, Qn87, Qn86, - Qn85, Qn84, Qn83, Qn82, NewQn81}); -?REMOVE_UNIQ_P_Qn80(-80, - Qn80, NewQn80, - {NewQn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-79, - Qn79, NewQn79, - {Qn80, NewQn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-78, - Qn78, NewQn78, - {Qn80, Qn79, NewQn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-77, - Qn77, NewQn77, - {Qn80, Qn79, Qn78, NewQn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-76, - Qn76, NewQn76, - {Qn80, Qn79, Qn78, Qn77, NewQn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-75, - Qn75, NewQn75, - {Qn80, Qn79, Qn78, Qn77, Qn76, - NewQn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-74, - Qn74, NewQn74, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, NewQn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-73, - Qn73, NewQn73, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, NewQn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-72, - Qn72, NewQn72, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, NewQn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-71, - Qn71, NewQn71, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, NewQn71, Qn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-70, - Qn70, NewQn70, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, NewQn70, - Qn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-69, - Qn69, NewQn69, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - NewQn69, Qn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-68, - Qn68, NewQn68, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, NewQn68, Qn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-67, - Qn67, NewQn67, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, NewQn67, Qn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-66, - Qn66, NewQn66, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, NewQn66, Qn65}); -?REMOVE_UNIQ_P_Qn80(-65, - Qn65, NewQn65, - {Qn80, Qn79, Qn78, Qn77, Qn76, - Qn75, Qn74, Qn73, Qn72, Qn71, Qn70, - Qn69, Qn68, Qn67, Qn66, NewQn65}); -?REMOVE_UNIQ_P_Qn64(-64, - Qn64, NewQn64, - {NewQn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-63, - Qn63, NewQn63, - {Qn64, NewQn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-62, - Qn62, NewQn62, - {Qn64, Qn63, NewQn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-61, - Qn61, NewQn61, - {Qn64, Qn63, Qn62, NewQn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-60, - Qn60, NewQn60, - {Qn64, Qn63, Qn62, Qn61, NewQn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-59, - Qn59, NewQn59, - {Qn64, Qn63, Qn62, Qn61, Qn60, - NewQn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-58, - Qn58, NewQn58, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, NewQn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-57, - Qn57, NewQn57, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, NewQn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-56, - Qn56, NewQn56, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, NewQn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-55, - Qn55, NewQn55, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, NewQn55, Qn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-54, - Qn54, NewQn54, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, NewQn54, - Qn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-53, - Qn53, NewQn53, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - NewQn53, Qn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-52, - Qn52, NewQn52, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, NewQn52, Qn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-51, - Qn51, NewQn51, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, NewQn51, Qn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-50, - Qn50, NewQn50, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, NewQn50, Qn49}); -?REMOVE_UNIQ_P_Qn64(-49, - Qn49, NewQn49, - {Qn64, Qn63, Qn62, Qn61, Qn60, - Qn59, Qn58, Qn57, Qn56, Qn55, Qn54, - Qn53, Qn52, Qn51, Qn50, NewQn49}); -?REMOVE_UNIQ_P_Qn48(-48, - Qn48, NewQn48, - {NewQn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-47, - Qn47, NewQn47, - {Qn48, NewQn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-46, - Qn46, NewQn46, - {Qn48, Qn47, NewQn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-45, - Qn45, NewQn45, - {Qn48, Qn47, Qn46, NewQn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-44, - Qn44, NewQn44, - {Qn48, Qn47, Qn46, Qn45, NewQn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-43, - Qn43, NewQn43, - {Qn48, Qn47, Qn46, Qn45, Qn44, - NewQn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-42, - Qn42, NewQn42, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, NewQn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-41, - Qn41, NewQn41, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, NewQn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-40, - Qn40, NewQn40, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, NewQn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-39, - Qn39, NewQn39, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, NewQn39, Qn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-38, - Qn38, NewQn38, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, NewQn38, - Qn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-37, - Qn37, NewQn37, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - NewQn37, Qn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-36, - Qn36, NewQn36, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, NewQn36, Qn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-35, - Qn35, NewQn35, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, NewQn35, Qn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-34, - Qn34, NewQn34, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, NewQn34, Qn33}); -?REMOVE_UNIQ_P_Qn48(-33, - Qn33, NewQn33, - {Qn48, Qn47, Qn46, Qn45, Qn44, - Qn43, Qn42, Qn41, Qn40, Qn39, Qn38, - Qn37, Qn36, Qn35, Qn34, NewQn33}); -?REMOVE_UNIQ_P_Qn32(-32, - Qn32, NewQn32, - {NewQn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-31, - Qn31, NewQn31, - {Qn32, NewQn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-30, - Qn30, NewQn30, - {Qn32, Qn31, NewQn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-29, - Qn29, NewQn29, - {Qn32, Qn31, Qn30, NewQn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-28, - Qn28, NewQn28, - {Qn32, Qn31, Qn30, Qn29, NewQn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-27, - Qn27, NewQn27, - {Qn32, Qn31, Qn30, Qn29, Qn28, - NewQn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-26, - Qn26, NewQn26, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, NewQn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-25, - Qn25, NewQn25, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, NewQn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-24, - Qn24, NewQn24, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, NewQn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-23, - Qn23, NewQn23, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, NewQn23, Qn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-22, - Qn22, NewQn22, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, NewQn22, - Qn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-21, - Qn21, NewQn21, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - NewQn21, Qn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-20, - Qn20, NewQn20, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, NewQn20, Qn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-19, - Qn19, NewQn19, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, NewQn19, Qn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-18, - Qn18, NewQn18, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, NewQn18, Qn17}); -?REMOVE_UNIQ_P_Qn32(-17, - Qn17, NewQn17, - {Qn32, Qn31, Qn30, Qn29, Qn28, - Qn27, Qn26, Qn25, Qn24, Qn23, Qn22, - Qn21, Qn20, Qn19, Qn18, NewQn17}); -?REMOVE_UNIQ_P_Qn16(-16, - Qn16, NewQn16, - {NewQn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-15, - Qn15, NewQn15, - {Qn16, NewQn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-14, - Qn14, NewQn14, - {Qn16, Qn15, NewQn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-13, - Qn13, NewQn13, - {Qn16, Qn15, Qn14, NewQn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-12, - Qn12, NewQn12, - {Qn16, Qn15, Qn14, Qn13, NewQn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-11, - Qn11, NewQn11, - {Qn16, Qn15, Qn14, Qn13, Qn12, - NewQn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-10, - Qn10, NewQn10, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, NewQn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-9, - Qn9, NewQn9, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, NewQn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-8, - Qn8, NewQn8, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, NewQn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-7, - Qn7, NewQn7, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, NewQn7, Qn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-6, - Qn6, NewQn6, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, NewQn6, - Qn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-5, - Qn5, NewQn5, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - NewQn5, Qn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-4, - Qn4, NewQn4, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, NewQn4, Qn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-3, - Qn3, NewQn3, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, NewQn3, Qn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-2, - Qn2, NewQn2, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, NewQn2, Qn1}); -?REMOVE_UNIQ_P_Qn16(-1, - Qn1, NewQn1, - {Qn16, Qn15, Qn14, Qn13, Qn12, - Qn11, Qn10, Qn9, Qn8, Qn7, Qn6, - Qn5, Qn4, Qn3, Qn2, NewQn1}); -remove_unique_p(0, F, - {Pc, - Size, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - Q0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}) -> - {Value, NewQ0} = queue_remove_unique(F, Q0), - NewSize = if Value =:= true -> Size - 1; Value =:= false -> Size end, - {Value, - {if NewSize == 0 -> empty; true -> Pc end, - NewSize, - Qn128, Qn112, Qn96, Qn80, Qn64, Qn48, Qn32, Qn16, - NewQ0, - Qp16, Qp32, Qp48, Qp64, Qp80, Qp96, Qp112, Qp128}}; -?REMOVE_UNIQ_P_Qp16(1, - Qp1, NewQp1, - {NewQp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(2, - Qp2, NewQp2, - {Qp1, NewQp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(3, - Qp3, NewQp3, - {Qp1, Qp2, NewQp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(4, - Qp4, NewQp4, - {Qp1, Qp2, Qp3, NewQp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(5, - Qp5, NewQp5, - {Qp1, Qp2, Qp3, Qp4, NewQp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(6, - Qp6, NewQp6, - {Qp1, Qp2, Qp3, Qp4, Qp5, - NewQp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(7, - Qp7, NewQp7, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, NewQp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(8, - Qp8, NewQp8, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, NewQp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(9, - Qp9, NewQp9, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, NewQp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(10, - Qp10, NewQp10, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, NewQp10, Qp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(11, - Qp11, NewQp11, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, NewQp11, - Qp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(12, - Qp12, NewQp12, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - NewQp12, Qp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(13, - Qp13, NewQp13, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, NewQp13, Qp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(14, - Qp14, NewQp14, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, NewQp14, Qp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(15, - Qp15, NewQp15, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, NewQp15, Qp16}); -?REMOVE_UNIQ_P_Qp16(16, - Qp16, NewQp16, - {Qp1, Qp2, Qp3, Qp4, Qp5, - Qp6, Qp7, Qp8, Qp9, Qp10, Qp11, - Qp12, Qp13, Qp14, Qp15, NewQp16}); -?REMOVE_UNIQ_P_Qp32(17, - Qp17, NewQp17, - {NewQp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(18, - Qp18, NewQp18, - {Qp17, NewQp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(19, - Qp19, NewQp19, - {Qp17, Qp18, NewQp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(20, - Qp20, NewQp20, - {Qp17, Qp18, Qp19, NewQp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(21, - Qp21, NewQp21, - {Qp17, Qp18, Qp19, Qp20, NewQp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(22, - Qp22, NewQp22, - {Qp17, Qp18, Qp19, Qp20, Qp21, - NewQp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(23, - Qp23, NewQp23, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, NewQp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(24, - Qp24, NewQp24, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, NewQp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(25, - Qp25, NewQp25, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, NewQp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(26, - Qp26, NewQp26, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, NewQp26, Qp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(27, - Qp27, NewQp27, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, NewQp27, - Qp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(28, - Qp28, NewQp28, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - NewQp28, Qp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(29, - Qp29, NewQp29, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, NewQp29, Qp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(30, - Qp30, NewQp30, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, NewQp30, Qp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(31, - Qp31, NewQp31, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, NewQp31, Qp32}); -?REMOVE_UNIQ_P_Qp32(32, - Qp32, NewQp32, - {Qp17, Qp18, Qp19, Qp20, Qp21, - Qp22, Qp23, Qp24, Qp25, Qp26, Qp27, - Qp28, Qp29, Qp30, Qp31, NewQp32}); -?REMOVE_UNIQ_P_Qp48(33, - Qp33, NewQp33, - {NewQp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(34, - Qp34, NewQp34, - {Qp33, NewQp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(35, - Qp35, NewQp35, - {Qp33, Qp34, NewQp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(36, - Qp36, NewQp36, - {Qp33, Qp34, Qp35, NewQp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(37, - Qp37, NewQp37, - {Qp33, Qp34, Qp35, Qp36, NewQp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(38, - Qp38, NewQp38, - {Qp33, Qp34, Qp35, Qp36, Qp37, - NewQp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(39, - Qp39, NewQp39, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, NewQp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(40, - Qp40, NewQp40, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, NewQp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(41, - Qp41, NewQp41, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, NewQp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(42, - Qp42, NewQp42, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, NewQp42, Qp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(43, - Qp43, NewQp43, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, NewQp43, - Qp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(44, - Qp44, NewQp44, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - NewQp44, Qp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(45, - Qp45, NewQp45, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, NewQp45, Qp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(46, - Qp46, NewQp46, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, NewQp46, Qp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(47, - Qp47, NewQp47, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, NewQp47, Qp48}); -?REMOVE_UNIQ_P_Qp48(48, - Qp48, NewQp48, - {Qp33, Qp34, Qp35, Qp36, Qp37, - Qp38, Qp39, Qp40, Qp41, Qp42, Qp43, - Qp44, Qp45, Qp46, Qp47, NewQp48}); -?REMOVE_UNIQ_P_Qp64(49, - Qp49, NewQp49, - {NewQp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(50, - Qp50, NewQp50, - {Qp49, NewQp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(51, - Qp51, NewQp51, - {Qp49, Qp50, NewQp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(52, - Qp52, NewQp52, - {Qp49, Qp50, Qp51, NewQp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(53, - Qp53, NewQp53, - {Qp49, Qp50, Qp51, Qp52, NewQp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(54, - Qp54, NewQp54, - {Qp49, Qp50, Qp51, Qp52, Qp53, - NewQp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(55, - Qp55, NewQp55, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, NewQp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(56, - Qp56, NewQp56, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, NewQp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(57, - Qp57, NewQp57, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, NewQp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(58, - Qp58, NewQp58, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, NewQp58, Qp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(59, - Qp59, NewQp59, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, NewQp59, - Qp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(60, - Qp60, NewQp60, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - NewQp60, Qp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(61, - Qp61, NewQp61, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, NewQp61, Qp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(62, - Qp62, NewQp62, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, NewQp62, Qp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(63, - Qp63, NewQp63, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, NewQp63, Qp64}); -?REMOVE_UNIQ_P_Qp64(64, - Qp64, NewQp64, - {Qp49, Qp50, Qp51, Qp52, Qp53, - Qp54, Qp55, Qp56, Qp57, Qp58, Qp59, - Qp60, Qp61, Qp62, Qp63, NewQp64}); -?REMOVE_UNIQ_P_Qp80(65, - Qp65, NewQp65, - {NewQp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(66, - Qp66, NewQp66, - {Qp65, NewQp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(67, - Qp67, NewQp67, - {Qp65, Qp66, NewQp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(68, - Qp68, NewQp68, - {Qp65, Qp66, Qp67, NewQp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(69, - Qp69, NewQp69, - {Qp65, Qp66, Qp67, Qp68, NewQp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(70, - Qp70, NewQp70, - {Qp65, Qp66, Qp67, Qp68, Qp69, - NewQp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(71, - Qp71, NewQp71, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, NewQp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(72, - Qp72, NewQp72, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, NewQp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(73, - Qp73, NewQp73, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, NewQp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(74, - Qp74, NewQp74, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, NewQp74, Qp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(75, - Qp75, NewQp75, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, NewQp75, - Qp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(76, - Qp76, NewQp76, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - NewQp76, Qp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(77, - Qp77, NewQp77, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, NewQp77, Qp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(78, - Qp78, NewQp78, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, NewQp78, Qp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(79, - Qp79, NewQp79, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, NewQp79, Qp80}); -?REMOVE_UNIQ_P_Qp80(80, - Qp80, NewQp80, - {Qp65, Qp66, Qp67, Qp68, Qp69, - Qp70, Qp71, Qp72, Qp73, Qp74, Qp75, - Qp76, Qp77, Qp78, Qp79, NewQp80}); -?REMOVE_UNIQ_P_Qp96(81, - Qp81, NewQp81, - {NewQp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(82, - Qp82, NewQp82, - {Qp81, NewQp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(83, - Qp83, NewQp83, - {Qp81, Qp82, NewQp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(84, - Qp84, NewQp84, - {Qp81, Qp82, Qp83, NewQp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(85, - Qp85, NewQp85, - {Qp81, Qp82, Qp83, Qp84, NewQp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(86, - Qp86, NewQp86, - {Qp81, Qp82, Qp83, Qp84, Qp85, - NewQp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(87, - Qp87, NewQp87, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, NewQp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(88, - Qp88, NewQp88, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, NewQp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(89, - Qp89, NewQp89, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, NewQp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(90, - Qp90, NewQp90, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, NewQp90, Qp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(91, - Qp91, NewQp91, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, NewQp91, - Qp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(92, - Qp92, NewQp92, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - NewQp92, Qp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(93, - Qp93, NewQp93, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, NewQp93, Qp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(94, - Qp94, NewQp94, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, NewQp94, Qp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(95, - Qp95, NewQp95, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, NewQp95, Qp96}); -?REMOVE_UNIQ_P_Qp96(96, - Qp96, NewQp96, - {Qp81, Qp82, Qp83, Qp84, Qp85, - Qp86, Qp87, Qp88, Qp89, Qp90, Qp91, - Qp92, Qp93, Qp94, Qp95, NewQp96}); -?REMOVE_UNIQ_P_Qp112(97, - Qp97, NewQp97, - {NewQp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(98, - Qp98, NewQp98, - {Qp97, NewQp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(99, - Qp99, NewQp99, - {Qp97, Qp98, NewQp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(100, - Qp100, NewQp100, - {Qp97, Qp98, Qp99, NewQp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(101, - Qp101, NewQp101, - {Qp97, Qp98, Qp99, Qp100, NewQp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(102, - Qp102, NewQp102, - {Qp97, Qp98, Qp99, Qp100, Qp101, - NewQp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(103, - Qp103, NewQp103, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, NewQp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(104, - Qp104, NewQp104, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, NewQp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(105, - Qp105, NewQp105, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, NewQp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(106, - Qp106, NewQp106, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, NewQp106, Qp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(107, - Qp107, NewQp107, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, NewQp107, - Qp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(108, - Qp108, NewQp108, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - NewQp108, Qp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(109, - Qp109, NewQp109, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, NewQp109, Qp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(110, - Qp110, NewQp110, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, NewQp110, Qp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(111, - Qp111, NewQp111, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, NewQp111, Qp112}); -?REMOVE_UNIQ_P_Qp112(112, - Qp112, NewQp112, - {Qp97, Qp98, Qp99, Qp100, Qp101, - Qp102, Qp103, Qp104, Qp105, Qp106, Qp107, - Qp108, Qp109, Qp110, Qp111, NewQp112}); -?REMOVE_UNIQ_P_Qp128(113, - Qp113, NewQp113, - {NewQp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(114, - Qp114, NewQp114, - {Qp113, NewQp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(115, - Qp115, NewQp115, - {Qp113, Qp114, NewQp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(116, - Qp116, NewQp116, - {Qp113, Qp114, Qp115, NewQp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(117, - Qp117, NewQp117, - {Qp113, Qp114, Qp115, Qp116, NewQp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(118, - Qp118, NewQp118, - {Qp113, Qp114, Qp115, Qp116, Qp117, - NewQp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(119, - Qp119, NewQp119, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, NewQp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(120, - Qp120, NewQp120, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, NewQp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(121, - Qp121, NewQp121, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, NewQp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(122, - Qp122, NewQp122, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, NewQp122, Qp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(123, - Qp123, NewQp123, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, NewQp123, - Qp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(124, - Qp124, NewQp124, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - NewQp124, Qp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(125, - Qp125, NewQp125, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, NewQp125, Qp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(126, - Qp126, NewQp126, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, NewQp126, Qp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(127, - Qp127, NewQp127, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, NewQp127, Qp128}); -?REMOVE_UNIQ_P_Qp128(128, - Qp128, NewQp128, - {Qp113, Qp114, Qp115, Qp116, Qp117, - Qp118, Qp119, Qp120, Qp121, Qp122, Qp123, - Qp124, Qp125, Qp126, Qp127, NewQp128}). - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - --include("pqueue_test.hrl"). - -module_test_() -> - {timeout, ?TEST_TIMEOUT, [ - {"internal tests", ?_assertOk(test())} - ]}. - -long_test_() -> - test_condition([ - {"proper tests", ?_assert(pqueue_proper:qc_pq4())} - ], ?CLOUDI_LONG_TEST_TIMEOUT). - --endif. - -%%------------------------------------------------------------------------- -%% @hidden -%% remove a unique value from a queue based on a binary predicate, -%% traversal order is undefined to keep it efficient (i.e., shouldn't matter) -%% (based on the implementation of queue:filter/2 -%% which is under the Apache License 2.0) -%%------------------------------------------------------------------------- - --spec queue_remove_unique(F :: fun((any()) -> boolean()), - Q :: {list(), list()}) -> - {boolean(), {list(), list()}}. - -queue_remove_unique(Fun, {R0, F0} = Q) - when is_function(Fun, 1), is_list(R0), is_list(F0) -> - case queue_remove_unique_f(Fun, F0) of - {true, []} -> - {true, queue_r2f(R0)}; - {true, F1} -> - {true, {R0, F1}}; - {false, F1} -> - %true = F1 == F0, - case queue_remove_unique_f(Fun, R0) of % backwards - {true, []} -> - {true, queue_f2r(F1)}; - {true, R1} -> - {true, {R1, F1}}; - {false, _} -> - {false, Q} - end - end; -queue_remove_unique(Fun, Q) -> - erlang:error(badarg, [Fun,Q]). - -% Call Fun in front to back order -queue_remove_unique_f(_, [] = F) -> - {false, F}; -queue_remove_unique_f(Fun, F) -> - queue_remove_unique_f(F, [], F, Fun). - -queue_remove_unique_f([], _, F, _) -> - {false, F}; -queue_remove_unique_f([X | F0], F1, F, Fun) -> - case Fun(X) of - true -> - {true, lists:reverse(F1, F0)}; - false -> - queue_remove_unique_f(F0, [X | F1], F, Fun) - end. - --compile({inline, [{queue_r2f,1},{queue_f2r,1}]}). - -% Move half of elements from R to F, if there are at least three -queue_r2f([]) -> - {[],[]}; -queue_r2f([_]=R) -> - {[],R}; -queue_r2f([X,Y]) -> - {[X],[Y]}; -queue_r2f(List) -> - {FF,RR} = lists:split(length(List) div 2 + 1, List), - {FF,lists:reverse(RR, [])}. - -% Move half of elements from F to R, if there are enough -queue_f2r([]) -> - {[],[]}; -queue_f2r([_]=F) -> - {F,[]}; -queue_f2r([X,Y]) -> - {[Y],[X]}; -queue_f2r(List) -> - {FF,RR} = lists:split(length(List) div 2 + 1, List), - {lists:reverse(RR, []),FF}. - diff --git a/aoc2023/build/packages/pqueue/src/pqueue_test.hrl b/aoc2023/build/packages/pqueue/src/pqueue_test.hrl deleted file mode 100644 index cedffe0..0000000 --- a/aoc2023/build/packages/pqueue/src/pqueue_test.hrl +++ /dev/null @@ -1,49 +0,0 @@ -%-*-Mode:erlang;coding:utf-8;tab-width:4;c-basic-offset:4;indent-tabs-mode:()-*- -% ex: set ft=erlang fenc=utf-8 sts=4 ts=4 sw=4 et nomod: -%%% -%%%------------------------------------------------------------------------ -%%% pqueue eunit common functionality -%%% -%%% MIT License -%%% -%%% Copyright (c) 2020 Michael Truog -%%% -%%% Permission is hereby granted, free of charge, to any person obtaining a -%%% copy of this software and associated documentation files (the "Software"), -%%% to deal in the Software without restriction, including without limitation -%%% the rights to use, copy, modify, merge, publish, distribute, sublicense, -%%% and/or sell copies of the Software, and to permit persons to whom the -%%% Software is furnished to do so, subject to the following conditions: -%%% -%%% The above copyright notice and this permission notice shall be included in -%%% all copies or substantial portions of the Software. -%%% -%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -%%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -%%% DEALINGS IN THE SOFTWARE. -%%% -%%%------------------------------------------------------------------------ - --ifndef(_assertOk). --define(_assertOk(Expr), ?_assertEqual(ok, Expr)). --endif. - --ifdef(CLOUDI_TEST_TIMEOUT). --define(TEST_TIMEOUT, ?CLOUDI_TEST_TIMEOUT). % seconds --else. --define(TEST_TIMEOUT, 10). % seconds --endif. --ifndef(CLOUDI_LONG_TEST_TIMEOUT). --define(CLOUDI_LONG_TEST_TIMEOUT, 60). % minutes --endif. - -test_condition(_, 0) -> - []; -test_condition(L, LongTestTimeout) - when LongTestTimeout > 0 -> - {timeout, LongTestTimeout * 60, L}. - diff --git a/aoc2023/build/packages/pqueue/test/pqueue_proper.erl b/aoc2023/build/packages/pqueue/test/pqueue_proper.erl deleted file mode 100644 index 6702960..0000000 --- a/aoc2023/build/packages/pqueue/test/pqueue_proper.erl +++ /dev/null @@ -1,156 +0,0 @@ --module(pqueue_proper). --ifdef(TEST). --include_lib("proper/include/proper.hrl"). - --behaviour(proper_statem). - --export([qc_pq/0, qc_pq2/0, qc_pq3/0, qc_pq4/0, correct/1]). - --export([command/1, initial_state/0, next_state/3, postcondition/3, - precondition/2]). - --type value() :: integer(). --record(state, { in_queue :: [{value(), term()}] }). --define(SERVER, queue_srv). - -priority() -> - integer(-20, 20). - -%% Selects priorities we have added -priority(InQ) -> - elements([P || {P, _} <- InQ]). - -value() -> - integer(). - -initial_state() -> - #state { in_queue = [] }. - -command(#state { in_queue = InQ }) -> - oneof([{call, ?SERVER, in, [value()]}, - {call, ?SERVER, in, [value(), priority()]}, - {call, ?SERVER, is_empty, []}, - {call, ?SERVER, is_queue, []}, - {call, ?SERVER, len, []}, - {call, ?SERVER, out, []}] ++ - [{call, ?SERVER, out, [priority(InQ)]} || InQ =/= []] ++ - [{call, ?SERVER, pout, []}, - {call, ?SERVER, to_list, []}]). - -next_state(#state { in_queue = InQ } = S, _V, {call, _, out, []}) -> - S#state { in_queue = listq_rem(InQ) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, out, [Prio]}) -> - S#state { in_queue = listq_rem(InQ, Prio) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, pout, _}) -> - S#state { in_queue = listq_rem(InQ) }; -next_state(S, _V, {call, _, to_list, _}) -> S; -next_state(S, _V, {call, _, is_queue, _}) -> S; -next_state(S, _V, {call, _, is_empty, _}) -> S; -next_state(S, _V, {call, _, len, _}) -> S; -next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value, Prio]}) -> - S#state { in_queue = listq_insert({Prio, Value}, InQ) }; -next_state(#state { in_queue = InQ } = S, _V, {call, _, in, [Value]}) -> - S#state { in_queue = listq_insert({0, Value}, InQ) }. - -precondition(_S, _Call) -> - true. % No limitation on the things we can call at all. - -postcondition(#state { in_queue = InQ }, {call, _, out, [Prio]}, R) -> - R == listq_prio_peek(InQ, Prio); -postcondition(#state { in_queue = InQ }, {call, _, pout, _}, R) -> - R == listq_ppeek(InQ); -postcondition(#state { in_queue = InQ }, {call, _, out, _}, R) -> - R == listq_peek(InQ); -postcondition(S, {call, _, to_list, _}, R) -> - R == listq_to_list(S#state.in_queue); -postcondition(S, {call, _, len, _}, L) -> - L == listq_length(S#state.in_queue); -postcondition(_S, {call, _, is_queue, _}, true) -> true; -postcondition(S, {call, _, is_empty, _}, Res) -> - Res == (S#state.in_queue == []); -postcondition(_S, {call, _, in, _}, _) -> - true; -postcondition(_, _, _) -> - false. - -correct(M) -> - ?FORALL(Cmds, commands(?MODULE), - ?TRAPEXIT( - begin - ?SERVER:start_link(M), - {History,State,Result} = run_commands(?MODULE, Cmds), - ?SERVER:stop(), - ?WHENFAIL(io:format("History: ~w\nState: ~w\nResult: ~w\n", - [History,State,Result]), - aggregate(command_names(Cmds), Result =:= ok)) - end)). - -qc_opts() -> - [{numtests, 10000}]. - -qc_pq() -> - proper:quickcheck(pqueue_proper:correct(pqueue), qc_opts()). - -qc_pq2() -> - proper:quickcheck(pqueue_proper:correct(pqueue2), qc_opts()). - -qc_pq3() -> - proper:quickcheck(pqueue_proper:correct(pqueue3), qc_opts()). - -qc_pq4() -> - proper:quickcheck(pqueue_proper:correct(pqueue4), qc_opts()). - -%% ---------------------------------------------------------------------- - -%% A listq is a sorted list of priorities -listq_insert({P, V}, []) -> - [{P, [V]}]; -listq_insert({P, V}, [{P1, _} | _] = LQ) when P < P1 -> - [{P, [V]} | LQ]; -listq_insert({P, V}, [{P1, Vs} | Next]) when P == P1 -> - [{P, Vs ++ [V]} | Next]; -listq_insert({P, V}, [{P1, Vs} | Next]) when P > P1 -> - [{P1, Vs} | listq_insert({P, V}, Next)]. - -listq_to_list(L) -> - lists:concat( - [ Vals || {_Prio, Vals} <- L]). - -listq_length(L) -> - lists:sum( - [ length(Vs) || {_Prio, Vs} <- L]). - -listq_rem([]) -> - []; -listq_rem([{_P, [_V]} | Next]) -> - Next; -listq_rem([{P, [_V1 | Vs]} | Next]) -> - [{P, Vs} | Next]. - -listq_rem([], _P) -> - []; -listq_rem([{P, [_]} | Next], P) -> - Next; -listq_rem([{P, [_ | Vs]} | Next], P) -> - [{P, Vs} | Next]; -listq_rem([{P1, Vs} | Next], P) -> - [{P1, Vs} | listq_rem(Next, P)]. - -listq_peek([]) -> - empty; -listq_peek([{_P, [V | _]} | _]) -> - {value, V}. - -listq_prio_peek([{P, [V | _]} | _], P) -> - {value, V}; -listq_prio_peek([{_P1, _} | Next], P) -> - listq_prio_peek(Next, P); -listq_prio_peek([], _P) -> - empty. - -listq_ppeek([]) -> - empty; -listq_ppeek([{P, [V | _]} | _]) -> - {value, V, P}. - --endif. diff --git a/aoc2023/build/packages/pqueue/test/queue_srv.erl b/aoc2023/build/packages/pqueue/test/queue_srv.erl deleted file mode 100644 index 7fcb0a1..0000000 --- a/aoc2023/build/packages/pqueue/test/queue_srv.erl +++ /dev/null @@ -1,183 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author Jesper Louis andersen <> -%%% @copyright (C) 2011, Jesper Louis andersen -%%% @doc -%%% -%%% @end -%%% Created : 11 Nov 2011 by Jesper Louis andersen <> -%%%------------------------------------------------------------------- --module(queue_srv). - --behaviour(gen_server). - -%% API --export([start_link/1, stop/0, len/0, in/1, in/2, is_empty/0, - out/0, out/1, pout/0, - is_queue/0, to_list/0]). - -%% gen_server callbacks --export([init/1, handle_call/3, handle_cast/2, handle_info/2, - terminate/2, code_change/3]). - --define(SERVER, ?MODULE). - --record(state, { mod, q }). - -%%%=================================================================== -%%% API -%%%=================================================================== - -%%-------------------------------------------------------------------- -%% @doc -%% Starts the server -%% -%% @spec start_link(Mod) -> {ok, Pid} | ignore | {error, Error} -%% @end -%%-------------------------------------------------------------------- -start_link(Mod) -> - gen_server:start_link({local, ?SERVER}, ?MODULE, [Mod], []). - -stop() -> - gen_server:stop(?SERVER). - -call(M) -> - gen_server:call(?SERVER, M, infinity). - -in(I) -> - call({in, I}). - -in(I, P) -> - call({in, I, P}). - -len() -> - call(len). - -is_empty() -> - call(is_empty). - -is_queue() -> - call(is_queue). - -to_list() -> - call(to_list). - -out() -> - call(out). - -out(P) -> - call({out, P}). - -pout() -> - call(pout). - -%%%=================================================================== -%%% gen_server callbacks -%%%=================================================================== - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Initializes the server -%% -%% @spec init(Args) -> {ok, State} | -%% {ok, State, Timeout} | -%% ignore | -%% {stop, Reason} -%% @end -%%-------------------------------------------------------------------- -init([Mod]) -> - {ok, #state{ mod = Mod, - q = Mod:new() }}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling call messages -%% -%% @spec handle_call(Request, From, State) -> -%% {reply, Reply, State} | -%% {reply, Reply, State, Timeout} | -%% {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, Reply, State} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_call({in, Item}, _F, #state { q = Q, mod = M } = S) -> - NQ = M:in(Item, Q), - {reply, ok, S#state { q = NQ }}; -handle_call({in, Item, Prio}, _F, #state { q = Q, mod = M } = S) -> - NQ = M:in(Item, Prio, Q), - {reply, ok, S#state { q = NQ }}; -handle_call({out, P}, _F, #state { q = Q, mod = M } = S) -> - {R, NQ} = M:out(P, Q), - {reply, R, S#state { q = NQ }}; -handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == out; - Ty == pout -> - {R, NQ} = M:Ty(Q), - {reply, R, S#state { q = NQ }}; -handle_call(Ty, _F, #state { q = Q, mod = M } = S) when Ty == is_queue; - Ty == is_empty; - Ty == len; - Ty == to_list -> - R = M:Ty(Q), - {reply, R, S}; -handle_call(Req, From, State) -> - error_logger:info_report([{handle_call, Req, From, State}]), - Reply = ok, - {reply, Reply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling cast messages -%% -%% @spec handle_cast(Msg, State) -> {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_cast(_Msg, State) -> - {noreply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Handling all non call/cast messages -%% -%% @spec handle_info(Info, State) -> {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} -%% @end -%%-------------------------------------------------------------------- -handle_info(_Info, State) -> - {noreply, State}. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% This function is called by a gen_server when it is about to -%% terminate. It should be the opposite of Module:init/1 and do any -%% necessary cleaning up. When it returns, the gen_server terminates -%% with Reason. The return value is ignored. -%% -%% @spec terminate(Reason, State) -> void() -%% @end -%%-------------------------------------------------------------------- -terminate(_Reason, _State) -> - ok. - -%%-------------------------------------------------------------------- -%% @private -%% @doc -%% Convert process state when code is changed -%% -%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState} -%% @end -%%-------------------------------------------------------------------- -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - -%%%=================================================================== -%%% Internal functions -%%%=================================================================== diff --git a/aoc2023/build/packages/simplifile/README.md b/aoc2023/build/packages/simplifile/README.md deleted file mode 100644 index 5e49113..0000000 --- a/aoc2023/build/packages/simplifile/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# simplifile - -[![Package Version](https://img.shields.io/hexpm/v/simplifile)](https://hex.pm/packages/simplifile) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/simplifile/) - -Simplifile provides basic file operations (read, write, append, and delete) that work -for all targets (Erlang, Node, and Deno). It also provides functions for working with directories. - -Note: When upgrading versions, be sure to check the changelog. - -## Example -```gleam -let filepath = "./test/hello.txt" -let assert Ok(_) = "Hello, World" |> write(to: filepath) -let assert Ok(_) = "Goodbye, Mars" |> append(to: filepath) -let assert Ok("Hello, WorldGoodbye, Mars") = read(from: filepath) -let assert Ok(_) = delete(filepath) -let assert Error(_) = read(from: filepath) -``` - -## Installation - -If available on Hex this package can be added to your Gleam project: - -```sh -gleam add simplifile -``` - -and its documentation can be found at . diff --git a/aoc2023/build/packages/simplifile/gleam.toml b/aoc2023/build/packages/simplifile/gleam.toml deleted file mode 100644 index 8e7523d..0000000 --- a/aoc2023/build/packages/simplifile/gleam.toml +++ /dev/null @@ -1,17 +0,0 @@ -name = "simplifile" -version = "1.0.0" -description = "Basic file operations that work on all targets" - -licences = ["Apache-2.0"] -repository = { type = "github", user = "bcpeinhardt", repo = "simplifile" } -gleam = ">= 0.32.0" -# links = [{ title = "Website", href = "https://gleam.run" }] - -[javascript.deno] -allow_all = true - -[dependencies] -gleam_stdlib = "~> 0.29" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/simplifile/src/simplifile.app.src b/aoc2023/build/packages/simplifile/src/simplifile.app.src deleted file mode 100644 index 5b9d6ef..0000000 --- a/aoc2023/build/packages/simplifile/src/simplifile.app.src +++ /dev/null @@ -1,8 +0,0 @@ -{application, simplifile, [ - {vsn, "1.0.0"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "Basic file operations that work on all targets"}, - {modules, [simplifile]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/simplifile/src/simplifile.erl b/aoc2023/build/packages/simplifile/src/simplifile.erl deleted file mode 100644 index 0d3818c..0000000 --- a/aoc2023/build/packages/simplifile/src/simplifile.erl +++ /dev/null @@ -1,287 +0,0 @@ --module(simplifile). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([read/1, write/2, delete/1, delete_all/1, append/2, read_bits/1, write_bits/2, append_bits/2, is_directory/1, create_directory/1, read_directory/1, is_file/1, create_file/1, get_files/1, create_directory_all/1, copy_directory/2, rename_directory/2, copy_file/2, rename_file/2]). --export_type([file_error/0]). - --type file_error() :: eacces | - eagain | - ebadf | - ebadmsg | - ebusy | - edeadlk | - edeadlock | - edquot | - eexist | - efault | - efbig | - eftype | - eintr | - einval | - eio | - eisdir | - eloop | - emfile | - emlink | - emultihop | - enametoolong | - enfile | - enobufs | - enodev | - enolck | - enolink | - enoent | - enomem | - enospc | - enosr | - enostr | - enosys | - enotblk | - enotdir | - enotsup | - enxio | - eopnotsupp | - eoverflow | - eperm | - epipe | - erange | - erofs | - espipe | - esrch | - estale | - etxtbsy | - exdev | - not_utf8 | - unknown. - --spec do_append(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_append(Content, Filepath) -> - _pipe = Content, - _pipe@1 = gleam_stdlib:identity(_pipe), - simplifile_erl:append_file(_pipe@1, Filepath). - --spec do_write(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_write(Content, Filepath) -> - _pipe = Content, - _pipe@1 = gleam_stdlib:identity(_pipe), - simplifile_erl:write_file(_pipe@1, Filepath). - --spec do_read(binary()) -> {ok, binary()} | {error, file_error()}. -do_read(Filepath) -> - case simplifile_erl:read_file(Filepath) of - {ok, Bits} -> - case gleam@bit_array:to_string(Bits) of - {ok, Str} -> - {ok, Str}; - - _ -> - {error, not_utf8} - end; - - {error, E} -> - {error, E} - end. - --spec cast_error({ok, FIL} | {error, file_error()}) -> {ok, FIL} | - {error, file_error()}. -cast_error(Input) -> - Input. - --spec read(binary()) -> {ok, binary()} | {error, file_error()}. -read(Filepath) -> - _pipe = do_read(Filepath), - cast_error(_pipe). - --spec write(binary(), binary()) -> {ok, nil} | {error, file_error()}. -write(Filepath, Contents) -> - _pipe = do_write(Contents, Filepath), - cast_error(_pipe). - --spec delete(binary()) -> {ok, nil} | {error, file_error()}. -delete(Path) -> - _pipe = simplifile_erl:recursive_delete(Path), - cast_error(_pipe). - --spec delete_all(list(binary())) -> {ok, nil} | {error, file_error()}. -delete_all(Paths) -> - case Paths of - [] -> - {ok, nil}; - - [Path | Rest] -> - case delete(Path) of - {ok, nil} -> - delete_all(Rest); - - {error, enoent} -> - delete_all(Rest); - - E -> - E - end - end. - --spec append(binary(), binary()) -> {ok, nil} | {error, file_error()}. -append(Filepath, Contents) -> - _pipe = do_append(Contents, Filepath), - cast_error(_pipe). - --spec read_bits(binary()) -> {ok, bitstring()} | {error, file_error()}. -read_bits(Filepath) -> - _pipe = simplifile_erl:read_file(Filepath), - cast_error(_pipe). - --spec write_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. -write_bits(Filepath, Bits) -> - _pipe = simplifile_erl:write_file(Bits, Filepath), - cast_error(_pipe). - --spec append_bits(binary(), bitstring()) -> {ok, nil} | {error, file_error()}. -append_bits(Filepath, Bits) -> - _pipe = simplifile_erl:append_file(Bits, Filepath), - cast_error(_pipe). - --spec is_directory(binary()) -> boolean(). -is_directory(Filepath) -> - filelib:is_dir(Filepath). - --spec create_directory(binary()) -> {ok, nil} | {error, file_error()}. -create_directory(Filepath) -> - _pipe = simplifile_erl:make_directory(Filepath), - cast_error(_pipe). - --spec read_directory(binary()) -> {ok, list(binary())} | {error, file_error()}. -read_directory(Path) -> - _pipe = simplifile_erl:list_directory(Path), - cast_error(_pipe). - --spec is_file(binary()) -> boolean(). -is_file(Filepath) -> - simplifile_erl:is_file(Filepath). - --spec create_file(binary()) -> {ok, nil} | {error, file_error()}. -create_file(Filepath) -> - case begin - _pipe = Filepath, - is_file(_pipe) - end - orelse begin - _pipe@1 = Filepath, - is_directory(_pipe@1) - end of - true -> - {error, eexist}; - - false -> - write_bits(Filepath, <<>>) - end. - --spec do_copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -do_copy_directory(Src, Dest) -> - gleam@result:'try'( - read_directory(Src), - fun(Segments) -> - _pipe = Segments, - gleam@list:each( - _pipe, - fun(Segment) -> - Src_path = <<<>/binary, - Segment/binary>>, - Dest_path = <<<>/binary, - Segment/binary>>, - case {is_file(Src_path), is_directory(Src_path)} of - {true, false} -> - gleam@result:'try'( - read_bits(Src_path), - fun(Content) -> _pipe@1 = Content, - write_bits(Dest_path, _pipe@1) end - ); - - {false, true} -> - gleam@result:'try'( - create_directory(Dest_path), - fun(_) -> - do_copy_directory(Src_path, Dest_path) - end - ); - - {_, _} -> - erlang:error(#{gleam_error => panic, - message => <<"unreachable"/utf8>>, - module => <<"simplifile"/utf8>>, - function => <<"do_copy_directory"/utf8>>, - line => 341}) - end - end - ), - {ok, nil} - end - ). - --spec get_files(binary()) -> {ok, list(binary())} | {error, file_error()}. -get_files(Directory) -> - gleam@result:'try'( - read_directory(Directory), - fun(Contents) -> - Paths = gleam@list:map( - Contents, - fun(Segment) -> - <<<>/binary, Segment/binary>> - end - ), - Files = gleam@list:filter(Paths, fun is_file/1), - case gleam@list:filter(Paths, fun is_directory/1) of - [] -> - {ok, Files}; - - Directories -> - gleam@result:'try'( - gleam@list:try_map(Directories, fun get_files/1), - fun(Nested_files) -> - {ok, - gleam@list:append( - Files, - gleam@list:flatten(Nested_files) - )} - end - ) - end - end - ). - --spec create_directory_all(binary()) -> {ok, nil} | {error, file_error()}. -create_directory_all(Dirpath) -> - Path = case begin - _pipe = Dirpath, - gleam@string:ends_with(_pipe, <<"/"/utf8>>) - end of - true -> - Dirpath; - - false -> - <> - end, - _pipe@1 = simplifile_erl:create_dir_all(Path), - cast_error(_pipe@1). - --spec copy_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -copy_directory(Src, Dest) -> - gleam@result:'try'( - create_directory_all(Dest), - fun(_) -> do_copy_directory(Src, Dest) end - ). - --spec rename_directory(binary(), binary()) -> {ok, nil} | {error, file_error()}. -rename_directory(Src, Dest) -> - gleam@result:'try'(copy_directory(Src, Dest), fun(_) -> delete(Src) end). - --spec copy_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. -copy_file(Src, Dest) -> - _pipe = file:copy(Src, Dest), - _pipe@1 = gleam@result:replace(_pipe, nil), - cast_error(_pipe@1). - --spec rename_file(binary(), binary()) -> {ok, nil} | {error, file_error()}. -rename_file(Src, Dest) -> - _pipe = simplifile_erl:rename_file(Src, Dest), - cast_error(_pipe). diff --git a/aoc2023/build/packages/simplifile/src/simplifile.gleam b/aoc2023/build/packages/simplifile/src/simplifile.gleam deleted file mode 100644 index eff0306..0000000 --- a/aoc2023/build/packages/simplifile/src/simplifile.gleam +++ /dev/null @@ -1,580 +0,0 @@ -import gleam/bit_array -import gleam/string -import gleam/result -import gleam/list - -/// This type represents all of the reasons for why a file system operation could fail. -/// -/// Most of these reasons are POSIX errors, which come from the operating system -/// and start with E. Others have been added to represent other issues that may -/// arise specific to this library. -/// -pub type FileError { - /// Permission denied. - Eacces - /// Resource temporarily unavailable. - Eagain - /// Bad file number - Ebadf - /// Bad message. - Ebadmsg - /// File busy. - Ebusy - /// Resource deadlock avoided. - Edeadlk - /// On most architectures, same as `Edeadlk`. On some architectures, it - /// means "File locking deadlock error." - Edeadlock - /// Disk quota exceeded. - Edquot - /// File already exists. - Eexist - /// Bad address in system call argument. - Efault - /// File too large. - Efbig - /// Inappropriate file type or format. Usually caused by trying to set the - /// "sticky bit" on a regular file (not a directory). - Eftype - /// Interrupted system call. - Eintr - /// Invalid argument. - Einval - /// I/O error. - Eio - /// Illegal operation on a directory. - Eisdir - /// Too many levels of symbolic links. - Eloop - /// Too many open files. - Emfile - /// Too many links. - Emlink - /// Multihop attempted. - Emultihop - /// Filename too long - Enametoolong - /// File table overflow - Enfile - /// No buffer space available. - Enobufs - /// No such device. - Enodev - /// No locks available. - Enolck - /// Link has been severed. - Enolink - /// No such file or directory. - Enoent - /// Not enough memory. - Enomem - /// No space left on device. - Enospc - /// No STREAM resources. - Enosr - /// Not a STREAM. - Enostr - /// Function not implemented. - Enosys - /// Block device required. - Enotblk - /// Not a directory. - Enotdir - /// Operation not supported. - Enotsup - /// No such device or address. - Enxio - /// Operation not supported on socket. - Eopnotsupp - /// Value too large to be stored in data type. - Eoverflow - /// Not owner. - Eperm - /// Broken pipe. - Epipe - /// Result too large. - Erange - /// Read-only file system. - Erofs - /// Invalid seek. - Espipe - /// No such process. - Esrch - /// Stale remote file handle. - Estale - /// Text file busy. - Etxtbsy - /// Cross-domain link. - Exdev - /// File was requested to be read as UTF-8, but is not UTF-8 encoded. - NotUtf8 - /// Any error not accounted for by this type - Unknown -} - -/// Read a files contents as a string -/// ## Example -/// ```gleam -/// let assert Ok(records) = read(from: "./users.csv") -/// ``` -/// -pub fn read(from filepath: String) -> Result(String, FileError) { - do_read(filepath) - |> cast_error -} - -/// Write a string to a file at the given path -/// ## Example -/// ```gleam -/// let assert Ok(Nil) = write("Hello, World!", to: "./hello_world.txt") -/// ``` -/// -pub fn write( - to filepath: String, - contents contents: String, -) -> Result(Nil, FileError) { - do_write(contents, to: filepath) - |> cast_error -} - -/// Delete a file or directory at a given path. Performs a recursive -/// delete on a directory. -/// Throws an error if the path does not exist. -/// ## Example -/// ```gleam -/// let assert Ok(Nil) = delete(file_at: "./delete_me.txt") -/// ``` -/// -pub fn delete(file_or_dir_at path: String) -> Result(Nil, FileError) { - do_delete(path) - |> cast_error -} - -/// Delete all files/directories specified in a list of paths. -/// Recursively deletes provided directories. -/// Does not return an error if one or more of the provided paths -/// do not exist. -/// -pub fn delete_all(paths paths: List(String)) -> Result(Nil, FileError) { - case paths { - [] -> Ok(Nil) - [path, ..rest] -> { - case delete(path) { - Ok(Nil) | Error(Enoent) -> delete_all(rest) - e -> e - } - } - } -} - -/// Append a string to the contents of a file at the given path -/// ## Example -/// ```gleam -/// let assert Ok(Nil) = append("more text", to: "./needs_more_text.txt") -/// ``` -/// -pub fn append( - to filepath: String, - contents contents: String, -) -> Result(Nil, FileError) { - do_append(contents, to: filepath) - |> cast_error -} - -/// Read a files contents as a bitstring -/// ## Example -/// ```gleam -/// let assert Ok(records) = read_bits(from: "./users.csv") -/// ``` -/// -pub fn read_bits(from filepath: String) -> Result(BitArray, FileError) { - do_read_bits(filepath) - |> cast_error -} - -/// Write a bitstring to a file at the given path -/// ## Example -/// ```gleam -/// let assert Ok(Nil) = write_bits(<<"Hello, World!":utf8>>, to: "./hello_world.txt") -/// ``` -/// -pub fn write_bits( - to filepath: String, - bits bits: BitArray, -) -> Result(Nil, FileError) { - do_write_bits(bits, filepath) - |> cast_error -} - -/// Append a bitstring to the contents of a file at the given path -/// ## Example -/// ```gleam -/// let assert Ok(Nil) = append_bits(<<"more text":utf8>>, to: "./needs_more_text.txt") -/// ``` -/// -pub fn append_bits( - to filepath: String, - bits bits: BitArray, -) -> Result(Nil, FileError) { - do_append_bits(bits, filepath) - |> cast_error -} - -/// Checks if the provided filepath is a directory -/// ## Example -/// ```gleam -/// let assert True = is_directory("./test") -/// ``` -pub fn is_directory(filepath: String) -> Bool { - do_is_directory(filepath) -} - -/// Create a directory at the provided filepath. Returns an error if -/// the directory already exists. -/// -/// ## Example -/// ```gleam -/// create_directory("./test") -/// ``` -pub fn create_directory(filepath: String) -> Result(Nil, FileError) { - do_make_directory(filepath) - |> cast_error -} - -/// Lists the contents of a directory. -/// The list contains directory and file names, and is not recursive. -/// -/// ## Example -/// ```gleam -/// let assert Ok(files_and_folders) = read_directory(at: "./Folder1") -/// ``` -/// -pub fn read_directory(at path: String) -> Result(List(String), FileError) { - do_read_directory(path) - |> cast_error -} - -/// Returns `True` if there is a file at the given path, false otherwise. -/// -pub fn is_file(filepath: String) -> Bool { - do_is_file(filepath) -} - -/// Creates an empty file at the given filepath. Returns an `Error(Eexist)` -/// if the file already exists. -/// -pub fn create_file(at filepath: String) -> Result(Nil, FileError) { - case - filepath - |> is_file || filepath - |> is_directory - { - True -> Error(Eexist) - False -> write_bits(<<>>, to: filepath) - } -} - -/// Recursively creates necessary directories for a given directory -/// path. Note that if you pass a path that "looks like" a file, i.e. -/// `./a/b.txt`, a folder named `b.txt` will be created, so be sure -/// to pass only the path to the required directory. -pub fn create_directory_all(dirpath: String) -> Result(Nil, FileError) { - let path = case - dirpath - |> string.ends_with("/") - { - True -> dirpath - False -> dirpath <> "/" - } - do_create_dir_all(path) - |> cast_error -} - -/// Copy a file at a given path to another path. -/// Note: destination should include the filename, not just the directory -pub fn copy_file(at src: String, to dest: String) -> Result(Nil, FileError) { - do_copy_file(src, dest) - |> result.replace(Nil) - |> cast_error -} - -/// Rename a file at a given path to another path. -/// Note: destination should include the filename, not just the directory -pub fn rename_file(at src: String, to dest: String) -> Result(Nil, FileError) { - do_rename_file(src, dest) - |> cast_error -} - -/// Copy a directory recursively -pub fn copy_directory(at src: String, to dest: String) -> Result(Nil, FileError) { - // Erlang does not provide a built in `copy_dir` function, - // and Deno doesn't support Node's `fs.cpSync`, so we'll just roll - // our own for now. - use _ <- result.try(create_directory_all(dest)) - do_copy_directory(src, dest) -} - -fn do_copy_directory(src: String, dest: String) -> Result(Nil, FileError) { - // Iterate over the segments of the file - use segments <- result.try(read_directory(src)) - segments - |> list.each(fn(segment) { - let src_path = src <> "/" <> segment - let dest_path = dest <> "/" <> segment - - case is_file(src_path), is_directory(src_path) { - True, False -> { - // For a file, create the file in the new directory - use content <- result.try(read_bits(src_path)) - content - |> write_bits(to: dest_path) - } - False, True -> { - // Create the target directory and recurs - use _ <- result.try(create_directory(dest_path)) - do_copy_directory(src_path, dest_path) - } - _, _ -> { - // This should be unreachable. The src_path can't be both a file - // and a directory, and it's definitely one of the two because it's - // coming from list_contents - panic as "unreachable" - } - } - }) - Ok(Nil) -} - -/// Copy a directory recursively and then delete the old one. -pub fn rename_directory( - at src: String, - to dest: String, -) -> Result(Nil, FileError) { - use _ <- result.try(copy_directory(src, dest)) - delete(src) -} - -/// Returns a list of filepaths for every file in the directory, including nested -/// files. -/// -pub fn get_files(in directory: String) -> Result(List(String), FileError) { - use contents <- result.try(read_directory(directory)) - let paths = list.map(contents, fn(segment) { directory <> "/" <> segment }) - let files = list.filter(paths, is_file) - case list.filter(paths, is_directory) { - [] -> Ok(files) - directories -> { - use nested_files <- result.try(list.try_map(directories, get_files)) - Ok(list.append(files, list.flatten(nested_files))) - } - } -} - -@target(javascript) -fn do_read(from filepath: String) -> Result(String, String) { - case do_read_bits(filepath) { - Ok(bits) -> { - case bit_array.to_string(bits) { - Ok(str) -> Ok(str) - _ -> Error("NOTUTF8") - } - } - Error(e) -> Error(e) - } -} - -@target(javascript) -fn do_write(content: String, to filepath: String) -> Result(Nil, String) { - content - |> bit_array.from_string - |> do_write_bits(to: filepath) -} - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "deleteFileOrDirRecursive") -fn do_delete(file_or_dir_at: String) -> Result(Nil, String) - -@target(javascript) -fn do_append(content: String, to filepath: String) -> Result(Nil, String) { - content - |> bit_array.from_string - |> do_append_bits(to: filepath) -} - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "readBits") -fn do_read_bits(from: String) -> Result(BitArray, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "writeBits") -fn do_write_bits(content: BitArray, to filepath: String) -> Result(Nil, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "appendBits") -fn do_append_bits(content: BitArray, to filepath: String) -> Result(Nil, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "isDirectory") -fn do_is_directory(filepath: String) -> Bool - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "makeDirectory") -fn do_make_directory(filepath: String) -> Result(Nil, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "createDirAll") -fn do_create_dir_all(dirpath: String) -> Result(Nil, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "listContents") -fn do_read_directory(directory_path: String) -> Result(List(String), String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "copyFile") -fn do_copy_file(at: String, to: String) -> Result(Nil, String) - -@target(javascript) -@external(javascript, "./simplifile_js.mjs", "renameFile") -fn do_rename_file(at: String, to: String) -> Result(Nil, String) - -@target(javascript) -fn cast_error(input: Result(a, String)) -> Result(a, FileError) { - result.map_error( - input, - fn(e) { - case e { - "EACCES" -> Eacces - "EAGAIN" -> Eagain - "EBADF" -> Ebadf - "EBADMSG" -> Ebadmsg - "EBUSY" -> Ebusy - "EDEADLK" -> Edeadlk - "EDEADLOCK" -> Edeadlock - "EDQUOT" -> Edquot - "EEXIST" -> Eexist - "EFAULT" -> Efault - "EFBIG" -> Efbig - "EFTYPE" -> Eftype - "EINTR" -> Eintr - "EINVAL" -> Einval - "EIO" -> Eio - "EISDIR" -> Eisdir - "ELOOP" -> Eloop - "EMFILE" -> Emfile - "EMLINK" -> Emlink - "EMULTIHOP" -> Emultihop - "ENAMETOOLONG" -> Enametoolong - "ENFILE" -> Enfile - "ENOBUFS" -> Enobufs - "ENODEV" -> Enodev - "ENOLCK" -> Enolck - "ENOLINK" -> Enolink - "ENOENT" -> Enoent - "ENOMEM" -> Enomem - "ENOSPC" -> Enospc - "ENOSR" -> Enosr - "ENOSTR" -> Enostr - "ENOSYS" -> Enosys - "ENOBLK" -> Enotblk - "ENODIR" -> Enotdir - "ENOTSUP" -> Enotsup - "ENXIO" -> Enxio - "EOPNOTSUPP" -> Eopnotsupp - "EOVERFLOW" -> Eoverflow - "EPERM" -> Eperm - "EPIPE" -> Epipe - "ERANGE" -> Erange - "EROFS" -> Erofs - "ESPIPE" -> Espipe - "ESRCH" -> Esrch - "ESTALE" -> Estale - "ETXTBSY" -> Etxtbsy - "EXDEV" -> Exdev - "NOTUTF8" -> NotUtf8 - _ -> Unknown - } - }, - ) -} - -@target(erlang) -@external(erlang, "simplifile_erl", "append_file") -fn do_append_bits( - content: BitArray, - to filepath: String, -) -> Result(Nil, FileError) - -@target(erlang) -@external(erlang, "simplifile_erl", "write_file") -fn do_write_bits( - content: BitArray, - to filepath: String, -) -> Result(Nil, FileError) - -@target(erlang) -@external(erlang, "simplifile_erl", "read_file") -fn do_read_bits(from: String) -> Result(BitArray, FileError) - -@target(erlang) -@external(erlang, "simplifile_erl", "recursive_delete") -fn do_delete(file_or_dir_at: String) -> Result(Nil, FileError) - -@target(erlang) -fn do_append(content: String, to filepath: String) -> Result(Nil, FileError) { - content - |> bit_array.from_string - |> do_append_bits(filepath) -} - -@target(erlang) -fn do_write(content: String, to filepath: String) -> Result(Nil, FileError) { - content - |> bit_array.from_string - |> do_write_bits(filepath) -} - -@target(erlang) -fn do_read(from filepath: String) -> Result(String, FileError) { - case do_read_bits(filepath) { - Ok(bits) -> { - case bit_array.to_string(bits) { - Ok(str) -> Ok(str) - _ -> Error(NotUtf8) - } - } - Error(e) -> Error(e) - } -} - -@target(erlang) -fn cast_error(input: Result(a, FileError)) -> Result(a, FileError) { - input -} - -@target(erlang) -@external(erlang, "filelib", "is_dir") -fn do_is_directory(path: String) -> Bool - -@target(erlang) -@external(erlang, "simplifile_erl", "make_directory") -fn do_make_directory(directory: String) -> Result(Nil, FileError) - -@target(erlang) -@external(erlang, "simplifile_erl", "list_directory") -fn do_read_directory(directory: String) -> Result(List(String), FileError) - -@external(erlang, "simplifile_erl", "is_file") -@external(javascript, "./simplifile_js.mjs", "isFile") -fn do_is_file(filepath: String) -> Bool - -@target(erlang) -@external(erlang, "simplifile_erl", "create_dir_all") -fn do_create_dir_all(dirpath: String) -> Result(Nil, FileError) - -@target(erlang) -@external(erlang, "file", "copy") -fn do_copy_file(src: String, dest: String) -> Result(Int, FileError) - -@target(erlang) -@external(erlang, "simplifile_erl", "rename_file") -fn do_rename_file(src: String, dest: String) -> Result(Nil, FileError) diff --git a/aoc2023/build/packages/simplifile/src/simplifile_erl.erl b/aoc2023/build/packages/simplifile/src/simplifile_erl.erl deleted file mode 100644 index dac135a..0000000 --- a/aoc2023/build/packages/simplifile/src/simplifile_erl.erl +++ /dev/null @@ -1,70 +0,0 @@ --module(simplifile_erl). --export([ - read_file/1, - append_file/2, write_file/2, delete_file/1, delete_directory/1, recursive_delete/1, - list_directory/1, make_directory/1, is_file/1, create_dir_all/1, rename_file/2 -]). - --define(is_posix_error(Error), - Error =:= eacces orelse Error =:= eagain orelse Error =:= ebadf orelse - Error =:= ebadmsg orelse Error =:= ebusy orelse Error =:= edeadlk orelse - Error =:= edeadlock orelse Error =:= edquot orelse Error =:= eexist orelse - Error =:= efault orelse Error =:= efbig orelse Error =:= eftype orelse - Error =:= eintr orelse Error =:= einval orelse Error =:= eio orelse - Error =:= eisdir orelse Error =:= eloop orelse Error =:= emfile orelse - Error =:= emlink orelse Error =:= emultihop orelse Error =:= enametoolong orelse - Error =:= enfile orelse Error =:= enobufs orelse Error =:= enodev orelse - Error =:= enolck orelse Error =:= enolink orelse Error =:= enoent orelse - Error =:= enomem orelse Error =:= enospc orelse Error =:= enosr orelse - Error =:= enostr orelse Error =:= enosys orelse Error =:= enotblk orelse - Error =:= enotdir orelse Error =:= enotsup orelse Error =:= enxio orelse - Error =:= eopnotsupp orelse Error =:= eoverflow orelse Error =:= eperm orelse - Error =:= epipe orelse Error =:= erange orelse Error =:= erofs orelse - Error =:= espipe orelse Error =:= esrch orelse Error =:= estale orelse - Error =:= etxtbsy orelse Error =:= exdev -). - -posix_result(Result) -> - case Result of - ok -> {ok, nil}; - {ok, Value} -> {ok, Value}; - {error, Reason} when ?is_posix_error(Reason) -> {error, Reason} - end. - -read_file(Filename) -> - posix_result(file:read_file(Filename)). - -write_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents)). - -append_file(Contents, Filename) -> - posix_result(file:write_file(Filename, Contents, [append])). - -delete_file(Filename) -> - posix_result(file:delete(Filename)). - -make_directory(Dir) -> - posix_result(file:make_dir(Dir)). - -list_directory(Dir) -> - case file:list_dir(Dir) of - {ok, Filenames} -> - {ok, [list_to_binary(Filename) || Filename <- Filenames]}; - {error, Reason} when ?is_posix_error(Reason) -> - {error, Reason} - end. - -delete_directory(Dir) -> - posix_result(file:del_dir(Dir)). - -recursive_delete(Dir) -> - posix_result(file:del_dir_r(Dir)). - -is_file(Filename) -> - not (file:read_file_info(Filename) == {error, enoent}) and not filelib: is_dir(Filename). - -create_dir_all(Filename) -> - posix_result(filelib:ensure_dir(Filename)). - -rename_file(Source, Destination) -> - posix_result(file:rename(Source, Destination)). diff --git a/aoc2023/build/packages/simplifile/src/simplifile_js.mjs b/aoc2023/build/packages/simplifile/src/simplifile_js.mjs deleted file mode 100644 index faf4109..0000000 --- a/aoc2023/build/packages/simplifile/src/simplifile_js.mjs +++ /dev/null @@ -1,102 +0,0 @@ -import fs from "node:fs" -import path from "node:path" -import { BitArray, Ok, Error as GError, toList} from "./gleam.mjs"; - -export function readBits(filepath) { - try { - const contents = fs.readFileSync(path.normalize(filepath)) - return new Ok(new BitArray(new Uint8Array(contents))) - } catch(e) { - return new GError(stringifyError(e)) - } -} - -export function writeBits(contents, filepath) { - try { - fs.writeFileSync(path.normalize(filepath), contents.buffer) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function appendBits(contents, filepath) { - try { - fs.appendFileSync(path.normalize(filepath), contents.buffer) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -function stringifyError(e) { - return e.code -} - -export function isFile(filepath) { - let fp = path.normalize(filepath) - return fs.existsSync(fp) && fs.lstatSync(fp).isFile(); -} - -export function isDirectory(filepath) { - let fp = path.normalize(filepath) - return fs.existsSync(fp) && fs.lstatSync(fp).isDirectory(); -} - -export function makeDirectory(filepath) { - try { - fs.mkdirSync(path.normalize(filepath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function createDirAll(filepath) { - try { - fs.mkdirSync(filepath, { recursive: true }) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function deleteFileOrDirRecursive(fileOrDirPath) { - try { - if (isDirectory(fileOrDirPath)) { - fs.rmSync(path.normalize(fileOrDirPath), { recursive: true }) - } else { - fs.unlinkSync(path.normalize(fileOrDirPath)) - } - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function listContents(filepath) { - try { - const stuff = toList(fs.readdirSync(path.normalize(filepath))) - return new Ok(stuff) - } catch(e) { - return new GError(stringifyError(e)) - } -} - -export function copyFile(srcpath, destpath) { - try { - fs.copyFileSync(path.normalize(srcpath), path.normalize(destpath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} - -export function renameFile(srcpath, destpath) { - try { - fs.renameSync(path.normalize(srcpath), path.normalize(destpath)) - return new Ok(undefined) - } catch (e) { - return new GError(stringifyError(e)) - } -} \ No newline at end of file diff --git a/aoc2023/build/packages/snag/LICENCE b/aoc2023/build/packages/snag/LICENCE deleted file mode 100644 index b8c2e9e..0000000 --- a/aoc2023/build/packages/snag/LICENCE +++ /dev/null @@ -1,211 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2021 - present Louis Pilfold - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -## Runtime Library Exception to the Apache 2.0 License: ## - - - As an exception, if you use this Software to compile your source code and - portions of this Software are embedded into the binary product as a result, - you may redistribute such product without providing attribution as would - otherwise be required by Sections 4(a), 4(b) and 4(d) of the License. diff --git a/aoc2023/build/packages/snag/README.md b/aoc2023/build/packages/snag/README.md deleted file mode 100644 index aaedcf5..0000000 --- a/aoc2023/build/packages/snag/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# Snag - -A Snag is a boilerplate-free ad-hoc error type. - -Use `Result(value, Snag)` (or the `snag.Result(value)` alias) in functions -that may fail. - -A low level message like "Unexpected status 401" or "No such file or -directory" can be confusing or difficult to debug, so use the `snag.context` -function to add extra contextual information. - -```gleam -import gleam/io -import my_app.{User} -import snag.{Result} - -pub fn log_in(user_id: Int) -> Result(User) { - try api_key = - my_app.read_file("api_key.txt") - |> snag.context("Could not load API key") - - try session_token = - user_id - |> my_app.create_session(api_key) - |> snag.context("Session creation failed") - - Ok(session_token) -} - -pub fn main() { - case log_in(42) { - Ok(session) -> io.println("Logged in!") - Error(snag) -> { - io.print(snag.pretty_print(snag)) - my_app.exit(1) - } - } -} -``` - -In this code when an error occurs within the `create_session` function an -error message like this is printed using the added contextual information: - -```text -error: Session creation failed - -cause: - 0: Unable to exchange token with authentication service - 1: Service authentication failed - 2: Unexpected HTTP status 401 -``` - -## When should I use Snag? - -Snag is useful in code where it must either pass or fail, and when it fails we -want good debugging information to print to the user. i.e. Command line -tools, data processing pipelines, etc. Here Snag provides a convenient way to -create errors with a reasonable amount of debugging information, without the -boilerplate of a custom error type. - -It is not suited to code where the application needs to make a decision about -what to do in the event of an error, such as whether to give up or to try -again. i.e. Libraries, web application backends, API clients, etc. In these -situations it is recommended to create a custom type for your errors as it -can be pattern matched on and have any additional detail added as fields. - -## Installation - -Add `snag` to your Gleam project - -``` -gleam add snag -``` - -## Prior art - -This library is inspired by the following projects: - -- Rust's [`anyhow`](https://github.com/dtolnay/anyhow) and - [`std::error::Error`](https://doc.rust-lang.org/std/error/trait.Error.html) -- Go's [`error`](https://golang.org/pkg/errors/). diff --git a/aoc2023/build/packages/snag/gleam.toml b/aoc2023/build/packages/snag/gleam.toml deleted file mode 100644 index 4f2d670..0000000 --- a/aoc2023/build/packages/snag/gleam.toml +++ /dev/null @@ -1,16 +0,0 @@ -name = "snag" -version = "0.2.1" -licences = ["Apache-2.0"] -description = "A boilerplate-free ad-hoc error type" - -repository = { type = "github", user = "gleam-experiments", repo = "snag" } -links = [ - { title = "Website", href = "https://gleam.run" }, - { title = "Sponsor", href = "https://github.com/sponsors/lpil" }, -] - -[dependencies] -gleam_stdlib = "~> 0.18" - -[dev-dependencies] -gleeunit = "~> 0.5" diff --git a/aoc2023/build/packages/snag/include/snag_Snag.hrl b/aoc2023/build/packages/snag/include/snag_Snag.hrl deleted file mode 100644 index 5d6614e..0000000 --- a/aoc2023/build/packages/snag/include/snag_Snag.hrl +++ /dev/null @@ -1 +0,0 @@ --record(snag, {issue :: binary(), cause :: list(binary())}). diff --git a/aoc2023/build/packages/snag/src/snag.app.src b/aoc2023/build/packages/snag/src/snag.app.src deleted file mode 100644 index 175e326..0000000 --- a/aoc2023/build/packages/snag/src/snag.app.src +++ /dev/null @@ -1,8 +0,0 @@ -{application, snag, [ - {vsn, "0.2.1"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "A boilerplate-free ad-hoc error type"}, - {modules, [snag]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/snag/src/snag.erl b/aoc2023/build/packages/snag/src/snag.erl deleted file mode 100644 index a07f242..0000000 --- a/aoc2023/build/packages/snag/src/snag.erl +++ /dev/null @@ -1,74 +0,0 @@ --module(snag). --compile([no_auto_import, nowarn_unused_vars]). - --export([new/1, error/1, layer/2, context/2, pretty_print/1, line_print/1]). --export_type([snag/0]). - --type snag() :: {snag, binary(), list(binary())}. - --spec new(binary()) -> snag(). -new(Issue) -> - {snag, Issue, []}. - --spec error(binary()) -> {ok, any()} | {error, snag()}. -error(Issue) -> - {error, new(Issue)}. - --spec layer(snag(), binary()) -> snag(). -layer(Snag, Issue) -> - {snag, Issue, [erlang:element(2, Snag) | erlang:element(3, Snag)]}. - --spec context({ok, EXX} | {error, snag()}, binary()) -> {ok, EXX} | - {error, snag()}. -context(Result, Issue) -> - case Result of - {ok, _} -> - Result; - - {error, Snag} -> - {error, layer(Snag, Issue)} - end. - --spec pretty_print_cause(list(binary())) -> gleam@string_builder:string_builder(). -pretty_print_cause(Cause) -> - _pipe = Cause, - _pipe@1 = gleam@list:index_map( - _pipe, - fun(Index, Line) -> - gleam@string:concat( - [<<" "/utf8>>, - gleam@int:to_string(Index), - <<": "/utf8>>, - Line, - <<"\n"/utf8>>] - ) - end - ), - gleam@string_builder:from_strings(_pipe@1). - --spec pretty_print(snag()) -> binary(). -pretty_print(Snag) -> - Builder = gleam@string_builder:from_strings( - [<<"error: "/utf8>>, erlang:element(2, Snag), <<"\n"/utf8>>] - ), - gleam@string_builder:to_string(case erlang:element(3, Snag) of - [] -> - Builder; - - Cause -> - _pipe = Builder, - _pipe@1 = gleam@string_builder:append( - _pipe, - <<"\ncause:\n"/utf8>> - ), - gleam@string_builder:append_builder( - _pipe@1, - pretty_print_cause(Cause) - ) - end). - --spec line_print(snag()) -> binary(). -line_print(Snag) -> - _pipe = [gleam@string:append(<<"error: "/utf8>>, erlang:element(2, Snag)) | - erlang:element(3, Snag)], - gleam@string:join(_pipe, <<" <- "/utf8>>). diff --git a/aoc2023/build/packages/snag/src/snag.gleam b/aoc2023/build/packages/snag/src/snag.gleam deleted file mode 100644 index 8d39537..0000000 --- a/aoc2023/build/packages/snag/src/snag.gleam +++ /dev/null @@ -1,141 +0,0 @@ -import gleam -import gleam/string_builder -import gleam/string -import gleam/list -import gleam/int - -/// A Snag is a boilerplate-free error type that can be used to track why an -/// error happened, though does not store as much detail on specific errors as a -/// custom error type would. -/// -/// It is useful in code where it must either pass or fail, and when it fails we -/// want good debugging information to print to the user. i.e. Command line -/// tools, data processing pipelines, etc. -/// -/// If it not suited to code where the application needs to make a decision about -/// what to do in the event of an error, such as whether to give up or to try -/// again. i.e. Libraries, web application backends, API clients, etc. -/// In these situations it is recommended to create a custom type for your errors -/// as it can be pattern matched on and have any additional detail added as -/// fields. -pub type Snag { - Snag(issue: String, cause: List(String)) -} - -/// A concise alias for a `Result` that uses a `Snag` as the error value. -pub type Result(t) = - gleam.Result(t, Snag) - -/// Create a new `Snag` with the given issue text. -/// -/// See also the `error` function for creating a `Snag` wrapped in a `Result`. -/// -/// # Example -/// -/// ```gleam -/// > new("Not enough credit") -/// > |> line_print -/// "error: Not enough credit" -/// ``` -pub fn new(issue: String) -> Snag { - Snag(issue: issue, cause: []) -} - -/// Create a new `Snag` wrapped in a `Result` with the given issue text. -/// -/// # Example -/// -/// ```gleam -/// > error("Not enough credit") -/// Error(new("Not enough credit")) -/// ``` -pub fn error(issue: String) -> Result(success) { - Error(new(issue)) -} - -/// Add additional contextual information to a `Snag`. -/// -/// See also the `context` function for adding contextual information to a `Snag` -/// wrapped in a `Result`. -/// -/// # Example -/// -/// ```gleam -/// > new("Not enough credit") -/// > |> layer("Unable to make purchase") -/// > |> line_print -/// "error: Unable to make purchase <- Not enough credit" -/// ``` -pub fn layer(snag: Snag, issue: String) -> Snag { - Snag(issue: issue, cause: [snag.issue, ..snag.cause]) -} - -/// Add additional contextual information to a `Snag` wrapped in a `Result`. -/// -/// # Example -/// -/// ```gleam -/// > error("Not enough credit") -/// > |> context("Unable to make purchase") -/// > |> result.map_error(line_print) -/// Error("error: Unable to make purchase <- Not enough credit") -/// ``` -pub fn context(result: Result(success), issue: String) -> Result(success) { - case result { - Ok(_) -> result - Error(snag) -> Error(layer(snag, issue)) - } -} - -/// Turn a snag into a multi-line string, optimised for readability. -/// -/// # Example -/// -/// ```gleam -/// > new("Not enough credit") -/// > |> layer("Unable to make purchase") -/// > |> layer("Character creation failed") -/// > |> pretty_print -/// "error: Character creation failed -/// -/// cause: -/// 0: Unable to make purchase -/// 1: Not enough credit -/// " -/// ``` -pub fn pretty_print(snag: Snag) -> String { - let builder = string_builder.from_strings(["error: ", snag.issue, "\n"]) - - string_builder.to_string(case snag.cause { - [] -> builder - cause -> - builder - |> string_builder.append("\ncause:\n") - |> string_builder.append_builder(pretty_print_cause(cause)) - }) -} - -fn pretty_print_cause(cause) { - cause - |> list.index_map(fn(index, line) { - string.concat([" ", int.to_string(index), ": ", line, "\n"]) - }) - |> string_builder.from_strings -} - -/// Turn a snag into a single-line string, optimised for compactness. This may be -/// useful for logging snags. -/// -/// # Example -/// -/// ```gleam -/// > new("Not enough credit") -/// > |> layer("Unable to make purchase") -/// > |> layer("Character creation failed") -/// > |> pretty_print -/// "error: Character creation failed <- Unable to make purchase <- Not enough credit" -/// ``` -pub fn line_print(snag: Snag) -> String { - [string.append("error: ", snag.issue), ..snag.cause] - |> string.join(" <- ") -} diff --git a/aoc2023/build/packages/tom/README.md b/aoc2023/build/packages/tom/README.md deleted file mode 100644 index e6adcbe..0000000 --- a/aoc2023/build/packages/tom/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# tom - -A Gleam TOML parser! - -[![Package Version](https://img.shields.io/hexpm/v/tom)](https://hex.pm/packages/tom) -[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/tom/) - - -```sh -gleam add tom -``` -```gleam -import tom - -const config = " - [person] - name = \"Lucy\" - is_cool = true -" - -pub fn main() { - // Parse a string of TOML - let assert Ok(parsed) = tom.parse(config) - - // Now you can work with the data directly, or you can use the `get_*` - // functions to retrieve values. - - tom.get_string(parsed, ["person", "name"]) - // -> Ok("Lucy") - - let is_cool = tom.get_bool(parsed, ["person", "is_cool"]) - // -> Ok(True) -} -``` - -Further documentation can be found at . - -## Status - -The following string escape sequences are not supported yet: - -- `\b` -- `\f` -- `\e` -- `\xHH` -- `\uHHHH` -- `\UHHHHHHHH` diff --git a/aoc2023/build/packages/tom/gleam.toml b/aoc2023/build/packages/tom/gleam.toml deleted file mode 100644 index f131d09..0000000 --- a/aoc2023/build/packages/tom/gleam.toml +++ /dev/null @@ -1,13 +0,0 @@ -name = "tom" -version = "0.2.1" - -description = "A pure Gleam TOML parser!" -licences = ["Apache-2.0"] -repository = { type = "github", user = "lpil", repo = "tom" } -links = [{ title = "TOML website", href = "https://toml.io/en/" }] - -[dependencies] -gleam_stdlib = "~> 0.32" - -[dev-dependencies] -gleeunit = "~> 1.0" diff --git a/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl b/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl deleted file mode 100644 index 3b1e660..0000000 --- a/aoc2023/build/packages/tom/include/tom_DateTimeValue.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(date_time_value, { - date :: tom:date(), - time :: tom:time(), - offset :: tom:offset() -}). diff --git a/aoc2023/build/packages/tom/include/tom_DateValue.hrl b/aoc2023/build/packages/tom/include/tom_DateValue.hrl deleted file mode 100644 index c41f901..0000000 --- a/aoc2023/build/packages/tom/include/tom_DateValue.hrl +++ /dev/null @@ -1 +0,0 @@ --record(date_value, {year :: integer(), month :: integer(), day :: integer()}). diff --git a/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl b/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl deleted file mode 100644 index 930df26..0000000 --- a/aoc2023/build/packages/tom/include/tom_KeyAlreadyInUse.hrl +++ /dev/null @@ -1 +0,0 @@ --record(key_already_in_use, {key :: list(binary())}). diff --git a/aoc2023/build/packages/tom/include/tom_NotFound.hrl b/aoc2023/build/packages/tom/include/tom_NotFound.hrl deleted file mode 100644 index 19c9a17..0000000 --- a/aoc2023/build/packages/tom/include/tom_NotFound.hrl +++ /dev/null @@ -1 +0,0 @@ --record(not_found, {key :: list(binary())}). diff --git a/aoc2023/build/packages/tom/include/tom_Offset.hrl b/aoc2023/build/packages/tom/include/tom_Offset.hrl deleted file mode 100644 index a58a8e1..0000000 --- a/aoc2023/build/packages/tom/include/tom_Offset.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(offset, { - direction :: tom:sign(), - hours :: integer(), - minutes :: integer() -}). diff --git a/aoc2023/build/packages/tom/include/tom_TimeValue.hrl b/aoc2023/build/packages/tom/include/tom_TimeValue.hrl deleted file mode 100644 index e1275de..0000000 --- a/aoc2023/build/packages/tom/include/tom_TimeValue.hrl +++ /dev/null @@ -1,6 +0,0 @@ --record(time_value, { - hour :: integer(), - minute :: integer(), - second :: integer(), - millisecond :: integer() -}). diff --git a/aoc2023/build/packages/tom/include/tom_Unexpected.hrl b/aoc2023/build/packages/tom/include/tom_Unexpected.hrl deleted file mode 100644 index ab1091c..0000000 --- a/aoc2023/build/packages/tom/include/tom_Unexpected.hrl +++ /dev/null @@ -1 +0,0 @@ --record(unexpected, {got :: binary(), expected :: binary()}). diff --git a/aoc2023/build/packages/tom/include/tom_WrongType.hrl b/aoc2023/build/packages/tom/include/tom_WrongType.hrl deleted file mode 100644 index ae57352..0000000 --- a/aoc2023/build/packages/tom/include/tom_WrongType.hrl +++ /dev/null @@ -1,5 +0,0 @@ --record(wrong_type, { - key :: list(binary()), - expected :: binary(), - got :: binary() -}). diff --git a/aoc2023/build/packages/tom/src/tom.app.src b/aoc2023/build/packages/tom/src/tom.app.src deleted file mode 100644 index 051649c..0000000 --- a/aoc2023/build/packages/tom/src/tom.app.src +++ /dev/null @@ -1,8 +0,0 @@ -{application, tom, [ - {vsn, "0.2.1"}, - {applications, [gleam_stdlib, - gleeunit]}, - {description, "A pure Gleam TOML parser!"}, - {modules, [tom]}, - {registered, []} -]}. diff --git a/aoc2023/build/packages/tom/src/tom.erl b/aoc2023/build/packages/tom/src/tom.erl deleted file mode 100644 index 4f5c071..0000000 --- a/aoc2023/build/packages/tom/src/tom.erl +++ /dev/null @@ -1,2140 +0,0 @@ --module(tom). --compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function]). - --export([get/2, get_int/2, get_float/2, get_bool/2, get_string/2, get_date/2, get_time/2, get_date_time/2, get_array/2, get_table/2, get_number/2, parse/1]). --export_type([toml/0, date_time/0, date/0, time/0, offset/0, sign/0, parse_error/0, number_/0, get_error/0]). - --type toml() :: {int, integer()} | - {float, float()} | - {infinity, sign()} | - {nan, sign()} | - {bool, boolean()} | - {string, binary()} | - {date, date()} | - {time, time()} | - {date_time, date_time()} | - {array, list(toml())} | - {array_of_tables, list(gleam@map:map_(binary(), toml()))} | - {table, gleam@map:map_(binary(), toml())} | - {inline_table, gleam@map:map_(binary(), toml())}. - --type date_time() :: {date_time_value, date(), time(), offset()}. - --type date() :: {date_value, integer(), integer(), integer()}. - --type time() :: {time_value, integer(), integer(), integer(), integer()}. - --type offset() :: local | {offset, sign(), integer(), integer()}. - --type sign() :: positive | negative. - --type parse_error() :: {unexpected, binary(), binary()} | - {key_already_in_use, list(binary())}. - --type number_() :: {number_int, integer()} | - {number_float, float()} | - {number_infinity, sign()} | - {number_nan, sign()}. - --type get_error() :: {not_found, list(binary())} | - {wrong_type, list(binary()), binary(), binary()}. - --spec classify(toml()) -> binary(). -classify(Toml) -> - case Toml of - {int, _} -> - <<"Int"/utf8>>; - - {float, _} -> - <<"Float"/utf8>>; - - {nan, positive} -> - <<"NaN"/utf8>>; - - {nan, negative} -> - <<"Negative NaN"/utf8>>; - - {infinity, positive} -> - <<"Infinity"/utf8>>; - - {infinity, negative} -> - <<"Negative Infinity"/utf8>>; - - {bool, _} -> - <<"Bool"/utf8>>; - - {string, _} -> - <<"String"/utf8>>; - - {date, _} -> - <<"Date"/utf8>>; - - {time, _} -> - <<"Time"/utf8>>; - - {date_time, _} -> - <<"DateTime"/utf8>>; - - {array, _} -> - <<"Array"/utf8>>; - - {array_of_tables, _} -> - <<"Array"/utf8>>; - - {table, _} -> - <<"Table"/utf8>>; - - {inline_table, _} -> - <<"Table"/utf8>> - end. - --spec push_key({ok, FIU} | {error, get_error()}, binary()) -> {ok, FIU} | - {error, get_error()}. -push_key(Result, Key) -> - case Result of - {ok, T} -> - {ok, T}; - - {error, {not_found, Path}} -> - {error, {not_found, [Key | Path]}}; - - {error, {wrong_type, Path@1, Expected, Got}} -> - {error, {wrong_type, [Key | Path@1], Expected, Got}} - end. - --spec get(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, toml()} | - {error, get_error()}. -get(Toml, Key) -> - case Key of - [] -> - {error, {not_found, []}}; - - [K] -> - gleam@result:replace_error(gleam@map:get(Toml, K), {not_found, [K]}); - - [K@1 | Key@1] -> - case gleam@map:get(Toml, K@1) of - {ok, {table, T}} -> - push_key(get(T, Key@1), K@1); - - {ok, Other} -> - {error, - {wrong_type, [K@1], <<"Table"/utf8>>, classify(Other)}}; - - {error, _} -> - {error, {not_found, [K@1]}} - end - end. - --spec get_int(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - integer()} | - {error, get_error()}. -get_int(Toml, Key) -> - case get(Toml, Key) of - {ok, {int, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Int"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_float(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - float()} | - {error, get_error()}. -get_float(Toml, Key) -> - case get(Toml, Key) of - {ok, {float, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Float"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_bool(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - boolean()} | - {error, get_error()}. -get_bool(Toml, Key) -> - case get(Toml, Key) of - {ok, {bool, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Bool"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_string(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - binary()} | - {error, get_error()}. -get_string(Toml, Key) -> - case get(Toml, Key) of - {ok, {string, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"String"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_date(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, date()} | - {error, get_error()}. -get_date(Toml, Key) -> - case get(Toml, Key) of - {ok, {date, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Date"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_time(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, time()} | - {error, get_error()}. -get_time(Toml, Key) -> - case get(Toml, Key) of - {ok, {time, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Time"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_date_time(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - date_time()} | - {error, get_error()}. -get_date_time(Toml, Key) -> - case get(Toml, Key) of - {ok, {date_time, I}} -> - {ok, I}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"DateTime"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_array(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - list(toml())} | - {error, get_error()}. -get_array(Toml, Key) -> - case get(Toml, Key) of - {ok, {array, I}} -> - {ok, I}; - - {ok, {array_of_tables, I@1}} -> - {ok, gleam@list:map(I@1, fun(Field@0) -> {table, Field@0} end)}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Array"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_table(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - gleam@map:map_(binary(), toml())} | - {error, get_error()}. -get_table(Toml, Key) -> - case get(Toml, Key) of - {ok, {table, I}} -> - {ok, I}; - - {ok, {inline_table, I@1}} -> - {ok, I@1}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Table"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec get_number(gleam@map:map_(binary(), toml()), list(binary())) -> {ok, - number_()} | - {error, get_error()}. -get_number(Toml, Key) -> - case get(Toml, Key) of - {ok, {int, X}} -> - {ok, {number_int, X}}; - - {ok, {float, X@1}} -> - {ok, {number_float, X@1}}; - - {ok, {nan, X@2}} -> - {ok, {number_nan, X@2}}; - - {ok, {infinity, X@3}} -> - {ok, {number_infinity, X@3}}; - - {ok, Other} -> - {error, {wrong_type, Key, <<"Number"/utf8>>, classify(Other)}}; - - {error, E} -> - {error, E} - end. - --spec merge(gleam@map:map_(binary(), toml()), binary(), toml(), toml()) -> {ok, - gleam@map:map_(binary(), toml())} | - {error, list(binary())}. -merge(Table, Key, Old, New) -> - case {Old, New} of - {{array_of_tables, Tables}, {array_of_tables, New@1}} -> - {ok, - gleam@map:insert( - Table, - Key, - {array_of_tables, gleam@list:append(New@1, Tables)} - )}; - - {_, _} -> - {error, [Key]} - end. - --spec insert_loop(gleam@map:map_(binary(), toml()), list(binary()), toml()) -> {ok, - gleam@map:map_(binary(), toml())} | - {error, list(binary())}. -insert_loop(Table, Key, Value) -> - case Key of - [] -> - erlang:error(#{gleam_error => panic, - message => <<"unreachable"/utf8>>, - module => <<"tom"/utf8>>, - function => <<"insert_loop"/utf8>>, - line => 511}); - - [K] -> - case gleam@map:get(Table, K) of - {error, nil} -> - {ok, gleam@map:insert(Table, K, Value)}; - - {ok, Old} -> - merge(Table, K, Old, Value) - end; - - [K@1 | Key@1] -> - case gleam@map:get(Table, K@1) of - {error, nil} -> - case insert_loop(gleam@map:new(), Key@1, Value) of - {ok, Inner} -> - {ok, gleam@map:insert(Table, K@1, {table, Inner})}; - - {error, Path} -> - {error, [K@1 | Path]} - end; - - {ok, {array_of_tables, [Inner@1 | Rest]}} -> - case insert_loop(Inner@1, Key@1, Value) of - {ok, Inner@2} -> - {ok, - gleam@map:insert( - Table, - K@1, - {array_of_tables, [Inner@2 | Rest]} - )}; - - {error, Path@1} -> - {error, [K@1 | Path@1]} - end; - - {ok, {table, Inner@3}} -> - case insert_loop(Inner@3, Key@1, Value) of - {ok, Inner@4} -> - {ok, gleam@map:insert(Table, K@1, {table, Inner@4})}; - - {error, Path@2} -> - {error, [K@1 | Path@2]} - end; - - {ok, _} -> - {error, [K@1]} - end - end. - --spec insert(gleam@map:map_(binary(), toml()), list(binary()), toml()) -> {ok, - gleam@map:map_(binary(), toml())} | - {error, parse_error()}. -insert(Table, Key, Value) -> - case insert_loop(Table, Key, Value) of - {ok, Table@1} -> - {ok, Table@1}; - - {error, Path} -> - {error, {key_already_in_use, Path}} - end. - --spec expect_end_of_line( - list(binary()), - fun((list(binary())) -> {ok, {FKZ, list(binary())}} | {error, parse_error()}) -) -> {ok, {FKZ, list(binary())}} | {error, parse_error()}. -expect_end_of_line(Input, Next) -> - case Input of - [<<"\n"/utf8>> | Input@1] -> - Next(Input@1); - - [<<"\r\n"/utf8>> | Input@2] -> - Next(Input@2); - - [G | _] -> - {error, {unexpected, G, <<"\n"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\n"/utf8>>}} - end. - --spec parse_key_quoted(list(binary()), binary(), binary()) -> {ok, - {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_quoted(Input, Close, Name) -> - case Input of - [G | Input@1] when G =:= Close -> - {ok, {Name, Input@1}}; - - [G@1 | Input@2] -> - parse_key_quoted(Input@2, Close, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Close}} - end. - --spec parse_key_bare(list(binary()), binary()) -> {ok, - {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_bare(Input, Name) -> - case Input of - [<<" "/utf8>> | Input@1] when Name =/= <<""/utf8>> -> - {ok, {Name, Input@1}}; - - [<<"="/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<"."/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<"]"/utf8>> | _] when Name =/= <<""/utf8>> -> - {ok, {Name, Input}}; - - [<<","/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<","/utf8>>, <<"="/utf8>>}}; - - [<<"\n"/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<"\n"/utf8>>, <<"="/utf8>>}}; - - [<<"\r\n"/utf8>> | _] when Name =/= <<""/utf8>> -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"="/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"key"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"key"/utf8>>}}; - - [<<"]"/utf8>> | _] -> - {error, {unexpected, <<"]"/utf8>>, <<"key"/utf8>>}}; - - [<<","/utf8>> | _] -> - {error, {unexpected, <<","/utf8>>, <<"key"/utf8>>}}; - - [G | Input@2] -> - parse_key_bare(Input@2, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"key"/utf8>>}} - end. - --spec skip_line_whitespace(list(binary())) -> list(binary()). -skip_line_whitespace(Input) -> - gleam@list:drop_while( - Input, - fun(G) -> (G =:= <<" "/utf8>>) orelse (G =:= <<"\t"/utf8>>) end - ). - --spec parse_key_segment(list(binary())) -> {ok, {binary(), list(binary())}} | - {error, parse_error()}. -parse_key_segment(Input) -> - Input@1 = skip_line_whitespace(Input), - case Input@1 of - [<<"="/utf8>> | _] -> - {error, {unexpected, <<"="/utf8>>, <<"Key"/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"Key"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"Key"/utf8>>}}; - - [<<"["/utf8>> | _] -> - {error, {unexpected, <<"["/utf8>>, <<"Key"/utf8>>}}; - - [<<"\""/utf8>> | Input@2] -> - parse_key_quoted(Input@2, <<"\""/utf8>>, <<""/utf8>>); - - [<<"'"/utf8>> | Input@3] -> - parse_key_quoted(Input@3, <<"'"/utf8>>, <<""/utf8>>); - - _ -> - parse_key_bare(Input@1, <<""/utf8>>) - end. - --spec skip_whitespace(list(binary())) -> list(binary()). -skip_whitespace(Input) -> - case Input of - [<<" "/utf8>> | Input@1] -> - skip_whitespace(Input@1); - - [<<"\t"/utf8>> | Input@2] -> - skip_whitespace(Input@2); - - [<<"\n"/utf8>> | Input@3] -> - skip_whitespace(Input@3); - - [<<"\r\n"/utf8>> | Input@4] -> - skip_whitespace(Input@4); - - Input@5 -> - Input@5 - end. - --spec drop_comments(list(binary()), list(binary())) -> list(binary()). -drop_comments(Input, Acc) -> - case Input of - [<<"#"/utf8>> | Input@1] -> - _pipe = Input@1, - _pipe@1 = gleam@list:drop_while( - _pipe, - fun(G) -> G /= <<"\n"/utf8>> end - ), - drop_comments(_pipe@1, Acc); - - [G@1 | Input@2] -> - drop_comments(Input@2, [G@1 | Acc]); - - [] -> - gleam@list:reverse(Acc) - end. - --spec do( - {ok, {FLK, list(binary())}} | {error, parse_error()}, - fun((FLK, list(binary())) -> {ok, FLN} | {error, parse_error()}) -) -> {ok, FLN} | {error, parse_error()}. -do(Result, Next) -> - case Result of - {ok, {A, Input}} -> - Next(A, Input); - - {error, E} -> - {error, E} - end. - --spec parse_key(list(binary()), list(binary())) -> {ok, - {list(binary()), list(binary())}} | - {error, parse_error()}. -parse_key(Input, Segments) -> - do( - parse_key_segment(Input), - fun(Segment, Input@1) -> - Segments@1 = [Segment | Segments], - Input@2 = skip_line_whitespace(Input@1), - case Input@2 of - [<<"."/utf8>> | Input@3] -> - parse_key(Input@3, Segments@1); - - _ -> - {ok, {gleam@list:reverse(Segments@1), Input@2}} - end - end - ). - --spec expect( - list(binary()), - binary(), - fun((list(binary())) -> {ok, {FLS, list(binary())}} | {error, parse_error()}) -) -> {ok, {FLS, list(binary())}} | {error, parse_error()}. -expect(Input, Expected, Next) -> - case Input of - [G | Input@1] when G =:= Expected -> - Next(Input@1); - - [G@1 | _] -> - {error, {unexpected, G@1, Expected}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Expected}} - end. - --spec parse_table_header(list(binary())) -> {ok, - {list(binary()), list(binary())}} | - {error, parse_error()}. -parse_table_header(Input) -> - Input@1 = skip_line_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - expect( - Input@2, - <<"]"/utf8>>, - fun(Input@3) -> - Input@4 = skip_line_whitespace(Input@3), - expect_end_of_line( - Input@4, - fun(Input@5) -> {ok, {Key, Input@5}} end - ) - end - ) - end - ). - --spec parse_hex(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_hex(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_hex(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_hex(Input@2, (Number * 16) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_hex(Input@3, (Number * 16) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_hex(Input@4, (Number * 16) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_hex(Input@5, (Number * 16) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_hex(Input@6, (Number * 16) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_hex(Input@7, (Number * 16) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_hex(Input@8, (Number * 16) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_hex(Input@9, (Number * 16) + 7, Sign); - - [<<"8"/utf8>> | Input@10] -> - parse_hex(Input@10, (Number * 16) + 8, Sign); - - [<<"9"/utf8>> | Input@11] -> - parse_hex(Input@11, (Number * 16) + 9, Sign); - - [<<"a"/utf8>> | Input@12] -> - parse_hex(Input@12, (Number * 16) + 10, Sign); - - [<<"b"/utf8>> | Input@13] -> - parse_hex(Input@13, (Number * 16) + 11, Sign); - - [<<"c"/utf8>> | Input@14] -> - parse_hex(Input@14, (Number * 16) + 12, Sign); - - [<<"d"/utf8>> | Input@15] -> - parse_hex(Input@15, (Number * 16) + 13, Sign); - - [<<"e"/utf8>> | Input@16] -> - parse_hex(Input@16, (Number * 16) + 14, Sign); - - [<<"f"/utf8>> | Input@17] -> - parse_hex(Input@17, (Number * 16) + 15, Sign); - - [<<"A"/utf8>> | Input@18] -> - parse_hex(Input@18, (Number * 16) + 10, Sign); - - [<<"B"/utf8>> | Input@19] -> - parse_hex(Input@19, (Number * 16) + 11, Sign); - - [<<"C"/utf8>> | Input@20] -> - parse_hex(Input@20, (Number * 16) + 12, Sign); - - [<<"D"/utf8>> | Input@21] -> - parse_hex(Input@21, (Number * 16) + 13, Sign); - - [<<"E"/utf8>> | Input@22] -> - parse_hex(Input@22, (Number * 16) + 14, Sign); - - [<<"F"/utf8>> | Input@23] -> - parse_hex(Input@23, (Number * 16) + 15, Sign); - - Input@24 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@24}} - end. - --spec parse_octal(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_octal(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_octal(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_octal(Input@2, (Number * 8) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_octal(Input@3, (Number * 8) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_octal(Input@4, (Number * 8) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_octal(Input@5, (Number * 8) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_octal(Input@6, (Number * 8) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_octal(Input@7, (Number * 8) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_octal(Input@8, (Number * 8) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_octal(Input@9, (Number * 8) + 7, Sign); - - Input@10 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@10}} - end. - --spec parse_binary(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_binary(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_binary(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_binary(Input@2, (Number * 2) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_binary(Input@3, (Number * 2) + 1, Sign); - - Input@4 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@4}} - end. - --spec parse_exponent(list(binary()), float(), sign(), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_exponent(Input, N, N_sign, Ex, Ex_sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_exponent(Input@1, N, N_sign, Ex, Ex_sign); - - [<<"0"/utf8>> | Input@2] -> - parse_exponent(Input@2, N, N_sign, Ex * 10, Ex_sign); - - [<<"1"/utf8>> | Input@3] -> - parse_exponent(Input@3, N, N_sign, (Ex * 10) + 1, Ex_sign); - - [<<"2"/utf8>> | Input@4] -> - parse_exponent(Input@4, N, N_sign, (Ex * 10) + 2, Ex_sign); - - [<<"3"/utf8>> | Input@5] -> - parse_exponent(Input@5, N, N_sign, (Ex * 10) + 3, Ex_sign); - - [<<"4"/utf8>> | Input@6] -> - parse_exponent(Input@6, N, N_sign, (Ex * 10) + 4, Ex_sign); - - [<<"5"/utf8>> | Input@7] -> - parse_exponent(Input@7, N, N_sign, (Ex * 10) + 5, Ex_sign); - - [<<"6"/utf8>> | Input@8] -> - parse_exponent(Input@8, N, N_sign, (Ex * 10) + 6, Ex_sign); - - [<<"7"/utf8>> | Input@9] -> - parse_exponent(Input@9, N, N_sign, (Ex * 10) + 7, Ex_sign); - - [<<"8"/utf8>> | Input@10] -> - parse_exponent(Input@10, N, N_sign, (Ex * 10) + 8, Ex_sign); - - [<<"9"/utf8>> | Input@11] -> - parse_exponent(Input@11, N, N_sign, (Ex * 10) + 9, Ex_sign); - - Input@12 -> - Number = case N_sign of - positive -> - N; - - negative -> - N * -1.0 - end, - Exponent = gleam@int:to_float(case Ex_sign of - positive -> - Ex; - - negative -> - - Ex - end), - Multiplier@1 = case gleam@float:power(10.0, Exponent) of - {ok, Multiplier} -> - Multiplier; - - {error, _} -> - 1.0 - end, - {ok, {{float, Number * Multiplier@1}, Input@12}} - end. - --spec parse_float(list(binary()), float(), sign(), float()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_float(Input, Number, Sign, Unit) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_float(Input@1, Number, Sign, Unit); - - [<<"0"/utf8>> | Input@2] -> - parse_float(Input@2, Number, Sign, Unit * 0.1); - - [<<"1"/utf8>> | Input@3] -> - parse_float(Input@3, Number + (1.0 * Unit), Sign, Unit * 0.1); - - [<<"2"/utf8>> | Input@4] -> - parse_float(Input@4, Number + (2.0 * Unit), Sign, Unit * 0.1); - - [<<"3"/utf8>> | Input@5] -> - parse_float(Input@5, Number + (3.0 * Unit), Sign, Unit * 0.1); - - [<<"4"/utf8>> | Input@6] -> - parse_float(Input@6, Number + (4.0 * Unit), Sign, Unit * 0.1); - - [<<"5"/utf8>> | Input@7] -> - parse_float(Input@7, Number + (5.0 * Unit), Sign, Unit * 0.1); - - [<<"6"/utf8>> | Input@8] -> - parse_float(Input@8, Number + (6.0 * Unit), Sign, Unit * 0.1); - - [<<"7"/utf8>> | Input@9] -> - parse_float(Input@9, Number + (7.0 * Unit), Sign, Unit * 0.1); - - [<<"8"/utf8>> | Input@10] -> - parse_float(Input@10, Number + (8.0 * Unit), Sign, Unit * 0.1); - - [<<"9"/utf8>> | Input@11] -> - parse_float(Input@11, Number + (9.0 * Unit), Sign, Unit * 0.1); - - [<<"e"/utf8>>, <<"+"/utf8>> | Input@12] -> - parse_exponent(Input@12, Number, Sign, 0, positive); - - [<<"e"/utf8>>, <<"-"/utf8>> | Input@13] -> - parse_exponent(Input@13, Number, Sign, 0, negative); - - [<<"e"/utf8>> | Input@14] -> - parse_exponent(Input@14, Number, Sign, 0, positive); - - [<<"E"/utf8>>, <<"+"/utf8>> | Input@15] -> - parse_exponent(Input@15, Number, Sign, 0, positive); - - [<<"E"/utf8>>, <<"-"/utf8>> | Input@16] -> - parse_exponent(Input@16, Number, Sign, 0, negative); - - [<<"E"/utf8>> | Input@17] -> - parse_exponent(Input@17, Number, Sign, 0, positive); - - Input@18 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - Number * -1.0 - end, - {ok, {{float, Number@1}, Input@18}} - end. - --spec parse_string(list(binary()), binary()) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_string(Input, String) -> - case Input of - [<<"\""/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\\"/utf8>>, <<"t"/utf8>> | Input@2] -> - parse_string(Input@2, <>); - - [<<"\\"/utf8>>, <<"n"/utf8>> | Input@3] -> - parse_string(Input@3, <>); - - [<<"\\"/utf8>>, <<"r"/utf8>> | Input@4] -> - parse_string(Input@4, <>); - - [<<"\\"/utf8>>, <<"\""/utf8>> | Input@5] -> - parse_string(Input@5, <>); - - [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@6] -> - parse_string(Input@6, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"\""/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"\""/utf8>>}}; - - [G | Input@7] -> - parse_string(Input@7, <>) - end. - --spec parse_multi_line_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_multi_line_string(Input, String) -> - case Input of - [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\\"/utf8>>, <<"\n"/utf8>> | Input@2] -> - parse_multi_line_string(skip_whitespace(Input@2), String); - - [<<"\\"/utf8>>, <<"\r\n"/utf8>> | Input@3] -> - parse_multi_line_string(skip_whitespace(Input@3), String); - - [<<"\r\n"/utf8>> | Input@4] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@4, String); - - [<<"\n"/utf8>> | Input@5] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@5, String); - - [<<"\r\n"/utf8>> | Input@6] when String =:= <<""/utf8>> -> - parse_multi_line_string(Input@6, String); - - [<<"\\"/utf8>>, <<"t"/utf8>> | Input@7] -> - parse_multi_line_string(Input@7, <>); - - [<<"\\"/utf8>>, <<"n"/utf8>> | Input@8] -> - parse_multi_line_string(Input@8, <>); - - [<<"\\"/utf8>>, <<"r"/utf8>> | Input@9] -> - parse_multi_line_string(Input@9, <>); - - [<<"\\"/utf8>>, <<"\""/utf8>> | Input@10] -> - parse_multi_line_string(Input@10, <>); - - [<<"\\"/utf8>>, <<"\\"/utf8>> | Input@11] -> - parse_multi_line_string(Input@11, <>); - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [G | Input@12] -> - parse_multi_line_string(Input@12, <>) - end. - --spec parse_multi_line_literal_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_multi_line_literal_string(Input, String) -> - case Input of - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | _] -> - {error, {unexpected, <<"''''"/utf8>>, <<"'''"/utf8>>}}; - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [<<"\n"/utf8>> | Input@2] when String =:= <<""/utf8>> -> - parse_multi_line_literal_string(Input@2, String); - - [<<"\r\n"/utf8>> | Input@3] when String =:= <<""/utf8>> -> - parse_multi_line_literal_string(Input@3, String); - - [G | Input@4] -> - parse_multi_line_literal_string( - Input@4, - <> - ) - end. - --spec parse_literal_string(list(binary()), binary()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_literal_string(Input, String) -> - case Input of - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"\""/utf8>>}}; - - [<<"\n"/utf8>> | _] -> - {error, {unexpected, <<"\n"/utf8>>, <<"'"/utf8>>}}; - - [<<"\r\n"/utf8>> | _] -> - {error, {unexpected, <<"\r\n"/utf8>>, <<"'"/utf8>>}}; - - [<<"'"/utf8>> | Input@1] -> - {ok, {{string, String}, Input@1}}; - - [G | Input@2] -> - parse_literal_string(Input@2, <>) - end. - --spec parse_time_ms(list(binary()), integer(), integer()) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_time_ms(Input, Seconds, Ms) -> - case Input of - [<<"0"/utf8>> | Input@1] when Ms < 100000 -> - parse_time_ms(Input@1, Seconds, (Ms * 10) + 0); - - [<<"1"/utf8>> | Input@2] when Ms < 100000 -> - parse_time_ms(Input@2, Seconds, (Ms * 10) + 1); - - [<<"2"/utf8>> | Input@3] when Ms < 100000 -> - parse_time_ms(Input@3, Seconds, (Ms * 10) + 2); - - [<<"3"/utf8>> | Input@4] when Ms < 100000 -> - parse_time_ms(Input@4, Seconds, (Ms * 10) + 3); - - [<<"4"/utf8>> | Input@5] when Ms < 100000 -> - parse_time_ms(Input@5, Seconds, (Ms * 10) + 4); - - [<<"5"/utf8>> | Input@6] when Ms < 100000 -> - parse_time_ms(Input@6, Seconds, (Ms * 10) + 5); - - [<<"6"/utf8>> | Input@7] when Ms < 100000 -> - parse_time_ms(Input@7, Seconds, (Ms * 10) + 6); - - [<<"7"/utf8>> | Input@8] when Ms < 100000 -> - parse_time_ms(Input@8, Seconds, (Ms * 10) + 7); - - [<<"8"/utf8>> | Input@9] when Ms < 100000 -> - parse_time_ms(Input@9, Seconds, (Ms * 10) + 8); - - [<<"9"/utf8>> | Input@10] when Ms < 100000 -> - parse_time_ms(Input@10, Seconds, (Ms * 10) + 9); - - _ -> - {ok, {{Seconds, Ms}, Input}} - end. - --spec parse_number_under_60(list(binary()), binary()) -> {ok, - {integer(), list(binary())}} | - {error, parse_error()}. -parse_number_under_60(Input, Expected) -> - case Input of - [<<"0"/utf8>>, <<"0"/utf8>> | Input@1] -> - {ok, {0, Input@1}}; - - [<<"0"/utf8>>, <<"1"/utf8>> | Input@2] -> - {ok, {1, Input@2}}; - - [<<"0"/utf8>>, <<"2"/utf8>> | Input@3] -> - {ok, {2, Input@3}}; - - [<<"0"/utf8>>, <<"3"/utf8>> | Input@4] -> - {ok, {3, Input@4}}; - - [<<"0"/utf8>>, <<"4"/utf8>> | Input@5] -> - {ok, {4, Input@5}}; - - [<<"0"/utf8>>, <<"5"/utf8>> | Input@6] -> - {ok, {5, Input@6}}; - - [<<"0"/utf8>>, <<"6"/utf8>> | Input@7] -> - {ok, {6, Input@7}}; - - [<<"0"/utf8>>, <<"7"/utf8>> | Input@8] -> - {ok, {7, Input@8}}; - - [<<"0"/utf8>>, <<"8"/utf8>> | Input@9] -> - {ok, {8, Input@9}}; - - [<<"0"/utf8>>, <<"9"/utf8>> | Input@10] -> - {ok, {9, Input@10}}; - - [<<"1"/utf8>>, <<"0"/utf8>> | Input@11] -> - {ok, {10, Input@11}}; - - [<<"1"/utf8>>, <<"1"/utf8>> | Input@12] -> - {ok, {11, Input@12}}; - - [<<"1"/utf8>>, <<"2"/utf8>> | Input@13] -> - {ok, {12, Input@13}}; - - [<<"1"/utf8>>, <<"3"/utf8>> | Input@14] -> - {ok, {13, Input@14}}; - - [<<"1"/utf8>>, <<"4"/utf8>> | Input@15] -> - {ok, {14, Input@15}}; - - [<<"1"/utf8>>, <<"5"/utf8>> | Input@16] -> - {ok, {15, Input@16}}; - - [<<"1"/utf8>>, <<"6"/utf8>> | Input@17] -> - {ok, {16, Input@17}}; - - [<<"1"/utf8>>, <<"7"/utf8>> | Input@18] -> - {ok, {17, Input@18}}; - - [<<"1"/utf8>>, <<"8"/utf8>> | Input@19] -> - {ok, {18, Input@19}}; - - [<<"1"/utf8>>, <<"9"/utf8>> | Input@20] -> - {ok, {19, Input@20}}; - - [<<"2"/utf8>>, <<"0"/utf8>> | Input@21] -> - {ok, {20, Input@21}}; - - [<<"2"/utf8>>, <<"1"/utf8>> | Input@22] -> - {ok, {21, Input@22}}; - - [<<"2"/utf8>>, <<"2"/utf8>> | Input@23] -> - {ok, {22, Input@23}}; - - [<<"2"/utf8>>, <<"3"/utf8>> | Input@24] -> - {ok, {23, Input@24}}; - - [<<"2"/utf8>>, <<"4"/utf8>> | Input@25] -> - {ok, {24, Input@25}}; - - [<<"2"/utf8>>, <<"5"/utf8>> | Input@26] -> - {ok, {25, Input@26}}; - - [<<"2"/utf8>>, <<"6"/utf8>> | Input@27] -> - {ok, {26, Input@27}}; - - [<<"2"/utf8>>, <<"7"/utf8>> | Input@28] -> - {ok, {27, Input@28}}; - - [<<"2"/utf8>>, <<"8"/utf8>> | Input@29] -> - {ok, {28, Input@29}}; - - [<<"2"/utf8>>, <<"9"/utf8>> | Input@30] -> - {ok, {29, Input@30}}; - - [<<"3"/utf8>>, <<"0"/utf8>> | Input@31] -> - {ok, {30, Input@31}}; - - [<<"3"/utf8>>, <<"1"/utf8>> | Input@32] -> - {ok, {31, Input@32}}; - - [<<"3"/utf8>>, <<"2"/utf8>> | Input@33] -> - {ok, {32, Input@33}}; - - [<<"3"/utf8>>, <<"3"/utf8>> | Input@34] -> - {ok, {33, Input@34}}; - - [<<"3"/utf8>>, <<"4"/utf8>> | Input@35] -> - {ok, {34, Input@35}}; - - [<<"3"/utf8>>, <<"5"/utf8>> | Input@36] -> - {ok, {35, Input@36}}; - - [<<"3"/utf8>>, <<"6"/utf8>> | Input@37] -> - {ok, {36, Input@37}}; - - [<<"3"/utf8>>, <<"7"/utf8>> | Input@38] -> - {ok, {37, Input@38}}; - - [<<"3"/utf8>>, <<"8"/utf8>> | Input@39] -> - {ok, {38, Input@39}}; - - [<<"3"/utf8>>, <<"9"/utf8>> | Input@40] -> - {ok, {39, Input@40}}; - - [<<"4"/utf8>>, <<"0"/utf8>> | Input@41] -> - {ok, {40, Input@41}}; - - [<<"4"/utf8>>, <<"1"/utf8>> | Input@42] -> - {ok, {41, Input@42}}; - - [<<"4"/utf8>>, <<"2"/utf8>> | Input@43] -> - {ok, {42, Input@43}}; - - [<<"4"/utf8>>, <<"3"/utf8>> | Input@44] -> - {ok, {43, Input@44}}; - - [<<"4"/utf8>>, <<"4"/utf8>> | Input@45] -> - {ok, {44, Input@45}}; - - [<<"4"/utf8>>, <<"5"/utf8>> | Input@46] -> - {ok, {45, Input@46}}; - - [<<"4"/utf8>>, <<"6"/utf8>> | Input@47] -> - {ok, {46, Input@47}}; - - [<<"4"/utf8>>, <<"7"/utf8>> | Input@48] -> - {ok, {47, Input@48}}; - - [<<"4"/utf8>>, <<"8"/utf8>> | Input@49] -> - {ok, {48, Input@49}}; - - [<<"4"/utf8>>, <<"9"/utf8>> | Input@50] -> - {ok, {49, Input@50}}; - - [<<"5"/utf8>>, <<"0"/utf8>> | Input@51] -> - {ok, {50, Input@51}}; - - [<<"5"/utf8>>, <<"1"/utf8>> | Input@52] -> - {ok, {51, Input@52}}; - - [<<"5"/utf8>>, <<"2"/utf8>> | Input@53] -> - {ok, {52, Input@53}}; - - [<<"5"/utf8>>, <<"3"/utf8>> | Input@54] -> - {ok, {53, Input@54}}; - - [<<"5"/utf8>>, <<"4"/utf8>> | Input@55] -> - {ok, {54, Input@55}}; - - [<<"5"/utf8>>, <<"5"/utf8>> | Input@56] -> - {ok, {55, Input@56}}; - - [<<"5"/utf8>>, <<"6"/utf8>> | Input@57] -> - {ok, {56, Input@57}}; - - [<<"5"/utf8>>, <<"7"/utf8>> | Input@58] -> - {ok, {57, Input@58}}; - - [<<"5"/utf8>>, <<"8"/utf8>> | Input@59] -> - {ok, {58, Input@59}}; - - [<<"5"/utf8>>, <<"9"/utf8>> | Input@60] -> - {ok, {59, Input@60}}; - - [G | _] -> - {error, {unexpected, G, Expected}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, Expected}} - end. - --spec parse_hour_minute(list(binary())) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_hour_minute(Input) -> - do(case Input of - [<<"0"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@1] -> - {ok, {0, Input@1}}; - - [<<"0"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@2] -> - {ok, {1, Input@2}}; - - [<<"0"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@3] -> - {ok, {2, Input@3}}; - - [<<"0"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@4] -> - {ok, {3, Input@4}}; - - [<<"0"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@5] -> - {ok, {4, Input@5}}; - - [<<"0"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@6] -> - {ok, {5, Input@6}}; - - [<<"0"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@7] -> - {ok, {6, Input@7}}; - - [<<"0"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@8] -> - {ok, {7, Input@8}}; - - [<<"0"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@9] -> - {ok, {8, Input@9}}; - - [<<"0"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@10] -> - {ok, {9, Input@10}}; - - [<<"1"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@11] -> - {ok, {10, Input@11}}; - - [<<"1"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@12] -> - {ok, {11, Input@12}}; - - [<<"1"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@13] -> - {ok, {12, Input@13}}; - - [<<"1"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@14] -> - {ok, {13, Input@14}}; - - [<<"1"/utf8>>, <<"4"/utf8>>, <<":"/utf8>> | Input@15] -> - {ok, {14, Input@15}}; - - [<<"1"/utf8>>, <<"5"/utf8>>, <<":"/utf8>> | Input@16] -> - {ok, {15, Input@16}}; - - [<<"1"/utf8>>, <<"6"/utf8>>, <<":"/utf8>> | Input@17] -> - {ok, {16, Input@17}}; - - [<<"1"/utf8>>, <<"7"/utf8>>, <<":"/utf8>> | Input@18] -> - {ok, {17, Input@18}}; - - [<<"1"/utf8>>, <<"8"/utf8>>, <<":"/utf8>> | Input@19] -> - {ok, {18, Input@19}}; - - [<<"1"/utf8>>, <<"9"/utf8>>, <<":"/utf8>> | Input@20] -> - {ok, {19, Input@20}}; - - [<<"2"/utf8>>, <<"0"/utf8>>, <<":"/utf8>> | Input@21] -> - {ok, {20, Input@21}}; - - [<<"2"/utf8>>, <<"1"/utf8>>, <<":"/utf8>> | Input@22] -> - {ok, {21, Input@22}}; - - [<<"2"/utf8>>, <<"2"/utf8>>, <<":"/utf8>> | Input@23] -> - {ok, {22, Input@23}}; - - [<<"2"/utf8>>, <<"3"/utf8>>, <<":"/utf8>> | Input@24] -> - {ok, {23, Input@24}}; - - [G | _] -> - {error, {unexpected, G, <<"time"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"time"/utf8>>}} - end, fun(Hours, Input@25) -> - do( - parse_number_under_60(Input@25, <<"minutes"/utf8>>), - fun(Minutes, Input@26) -> {ok, {{Hours, Minutes}, Input@26}} end - ) - end). - --spec parse_time_s_ms(list(binary())) -> {ok, - {{integer(), integer()}, list(binary())}} | - {error, parse_error()}. -parse_time_s_ms(Input) -> - case Input of - [<<":"/utf8>> | Input@1] -> - do( - parse_number_under_60(Input@1, <<"seconds"/utf8>>), - fun(Seconds, Input@2) -> case Input@2 of - [<<"."/utf8>> | Input@3] -> - parse_time_ms(Input@3, Seconds, 0); - - _ -> - {ok, {{Seconds, 0}, Input@2}} - end end - ); - - _ -> - {ok, {{0, 0}, Input}} - end. - --spec parse_time_minute(list(binary()), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_time_minute(Input, Hours) -> - do( - parse_number_under_60(Input, <<"minutes"/utf8>>), - fun(Minutes, Input@1) -> - do( - parse_time_s_ms(Input@1), - fun(_use0, Input@2) -> - {Seconds, Ms} = _use0, - Time = {time_value, Hours, Minutes, Seconds, Ms}, - {ok, {{time, Time}, Input@2}} - end - ) - end - ). - --spec parse_time_value(list(binary())) -> {ok, {time(), list(binary())}} | - {error, parse_error()}. -parse_time_value(Input) -> - do( - parse_hour_minute(Input), - fun(_use0, Input@1) -> - {Hours, Minutes} = _use0, - do( - parse_time_s_ms(Input@1), - fun(_use0@1, Input@2) -> - {Seconds, Ms} = _use0@1, - Time = {time_value, Hours, Minutes, Seconds, Ms}, - {ok, {Time, Input@2}} - end - ) - end - ). - --spec parse_offset_hours(list(binary()), sign()) -> {ok, - {offset(), list(binary())}} | - {error, parse_error()}. -parse_offset_hours(Input, Sign) -> - do( - parse_hour_minute(Input), - fun(_use0, Input@1) -> - {Hours, Minutes} = _use0, - {ok, {{offset, Sign, Hours, Minutes}, Input@1}} - end - ). - --spec parse_offset(list(binary())) -> {ok, {offset(), list(binary())}} | - {error, parse_error()}. -parse_offset(Input) -> - case Input of - [<<"Z"/utf8>> | Input@1] -> - {ok, {{offset, positive, 0, 0}, Input@1}}; - - [<<"+"/utf8>> | Input@2] -> - parse_offset_hours(Input@2, positive); - - [<<"-"/utf8>> | Input@3] -> - parse_offset_hours(Input@3, negative); - - _ -> - {ok, {local, Input}} - end. - --spec parse_date_end(list(binary()), integer(), integer(), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_date_end(Input, Year, Month, Day) -> - Date = {date_value, Year, Month, Day}, - case Input of - [<<" "/utf8>> | Input@1] -> - do( - parse_time_value(Input@1), - fun(Time, Input@2) -> - do( - parse_offset(Input@2), - fun(Offset, Input@3) -> - {ok, - {{date_time, - {date_time_value, Date, Time, Offset}}, - Input@3}} - end - ) - end - ); - - [<<"T"/utf8>> | Input@1] -> - do( - parse_time_value(Input@1), - fun(Time, Input@2) -> - do( - parse_offset(Input@2), - fun(Offset, Input@3) -> - {ok, - {{date_time, - {date_time_value, Date, Time, Offset}}, - Input@3}} - end - ) - end - ); - - _ -> - {ok, {{date, Date}, Input}} - end. - --spec parse_date_day(list(binary()), integer(), integer()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_date_day(Input, Year, Month) -> - case Input of - [<<"0"/utf8>>, <<"1"/utf8>> | Input@1] -> - parse_date_end(Input@1, Year, Month, 1); - - [<<"0"/utf8>>, <<"2"/utf8>> | Input@2] -> - parse_date_end(Input@2, Year, Month, 2); - - [<<"0"/utf8>>, <<"3"/utf8>> | Input@3] -> - parse_date_end(Input@3, Year, Month, 3); - - [<<"0"/utf8>>, <<"4"/utf8>> | Input@4] -> - parse_date_end(Input@4, Year, Month, 4); - - [<<"0"/utf8>>, <<"5"/utf8>> | Input@5] -> - parse_date_end(Input@5, Year, Month, 5); - - [<<"0"/utf8>>, <<"6"/utf8>> | Input@6] -> - parse_date_end(Input@6, Year, Month, 6); - - [<<"0"/utf8>>, <<"7"/utf8>> | Input@7] -> - parse_date_end(Input@7, Year, Month, 7); - - [<<"0"/utf8>>, <<"8"/utf8>> | Input@8] -> - parse_date_end(Input@8, Year, Month, 8); - - [<<"0"/utf8>>, <<"9"/utf8>> | Input@9] -> - parse_date_end(Input@9, Year, Month, 9); - - [<<"1"/utf8>>, <<"0"/utf8>> | Input@10] -> - parse_date_end(Input@10, Year, Month, 10); - - [<<"1"/utf8>>, <<"1"/utf8>> | Input@11] -> - parse_date_end(Input@11, Year, Month, 11); - - [<<"1"/utf8>>, <<"2"/utf8>> | Input@12] -> - parse_date_end(Input@12, Year, Month, 12); - - [<<"1"/utf8>>, <<"3"/utf8>> | Input@13] -> - parse_date_end(Input@13, Year, Month, 13); - - [<<"1"/utf8>>, <<"4"/utf8>> | Input@14] -> - parse_date_end(Input@14, Year, Month, 14); - - [<<"1"/utf8>>, <<"5"/utf8>> | Input@15] -> - parse_date_end(Input@15, Year, Month, 15); - - [<<"1"/utf8>>, <<"6"/utf8>> | Input@16] -> - parse_date_end(Input@16, Year, Month, 16); - - [<<"1"/utf8>>, <<"7"/utf8>> | Input@17] -> - parse_date_end(Input@17, Year, Month, 17); - - [<<"1"/utf8>>, <<"8"/utf8>> | Input@18] -> - parse_date_end(Input@18, Year, Month, 18); - - [<<"1"/utf8>>, <<"9"/utf8>> | Input@19] -> - parse_date_end(Input@19, Year, Month, 19); - - [<<"2"/utf8>>, <<"0"/utf8>> | Input@20] -> - parse_date_end(Input@20, Year, Month, 20); - - [<<"2"/utf8>>, <<"1"/utf8>> | Input@21] -> - parse_date_end(Input@21, Year, Month, 21); - - [<<"2"/utf8>>, <<"2"/utf8>> | Input@22] -> - parse_date_end(Input@22, Year, Month, 22); - - [<<"2"/utf8>>, <<"3"/utf8>> | Input@23] -> - parse_date_end(Input@23, Year, Month, 23); - - [<<"2"/utf8>>, <<"4"/utf8>> | Input@24] -> - parse_date_end(Input@24, Year, Month, 24); - - [<<"2"/utf8>>, <<"5"/utf8>> | Input@25] -> - parse_date_end(Input@25, Year, Month, 25); - - [<<"2"/utf8>>, <<"6"/utf8>> | Input@26] -> - parse_date_end(Input@26, Year, Month, 26); - - [<<"2"/utf8>>, <<"7"/utf8>> | Input@27] -> - parse_date_end(Input@27, Year, Month, 27); - - [<<"2"/utf8>>, <<"8"/utf8>> | Input@28] -> - parse_date_end(Input@28, Year, Month, 28); - - [<<"2"/utf8>>, <<"9"/utf8>> | Input@29] -> - parse_date_end(Input@29, Year, Month, 29); - - [<<"3"/utf8>>, <<"0"/utf8>> | Input@30] -> - parse_date_end(Input@30, Year, Month, 30); - - [<<"3"/utf8>>, <<"1"/utf8>> | Input@31] -> - parse_date_end(Input@31, Year, Month, 31); - - [G | _] -> - {error, {unexpected, G, <<"date day"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"date day"/utf8>>}} - end. - --spec parse_date(list(binary()), integer()) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_date(Input, Year) -> - case Input of - [<<"0"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@1] -> - parse_date_day(Input@1, Year, 1); - - [<<"0"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@2] -> - parse_date_day(Input@2, Year, 2); - - [<<"0"/utf8>>, <<"3"/utf8>>, <<"-"/utf8>> | Input@3] -> - parse_date_day(Input@3, Year, 3); - - [<<"0"/utf8>>, <<"4"/utf8>>, <<"-"/utf8>> | Input@4] -> - parse_date_day(Input@4, Year, 4); - - [<<"0"/utf8>>, <<"5"/utf8>>, <<"-"/utf8>> | Input@5] -> - parse_date_day(Input@5, Year, 5); - - [<<"0"/utf8>>, <<"6"/utf8>>, <<"-"/utf8>> | Input@6] -> - parse_date_day(Input@6, Year, 6); - - [<<"0"/utf8>>, <<"7"/utf8>>, <<"-"/utf8>> | Input@7] -> - parse_date_day(Input@7, Year, 7); - - [<<"0"/utf8>>, <<"8"/utf8>>, <<"-"/utf8>> | Input@8] -> - parse_date_day(Input@8, Year, 8); - - [<<"0"/utf8>>, <<"9"/utf8>>, <<"-"/utf8>> | Input@9] -> - parse_date_day(Input@9, Year, 9); - - [<<"1"/utf8>>, <<"0"/utf8>>, <<"-"/utf8>> | Input@10] -> - parse_date_day(Input@10, Year, 10); - - [<<"1"/utf8>>, <<"1"/utf8>>, <<"-"/utf8>> | Input@11] -> - parse_date_day(Input@11, Year, 11); - - [<<"1"/utf8>>, <<"2"/utf8>>, <<"-"/utf8>> | Input@12] -> - parse_date_day(Input@12, Year, 12); - - [G | _] -> - {error, {unexpected, G, <<"date month"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"date month"/utf8>>}} - end. - --spec parse_number(list(binary()), integer(), sign()) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_number(Input, Number, Sign) -> - case Input of - [<<"_"/utf8>> | Input@1] -> - parse_number(Input@1, Number, Sign); - - [<<"0"/utf8>> | Input@2] -> - parse_number(Input@2, (Number * 10) + 0, Sign); - - [<<"1"/utf8>> | Input@3] -> - parse_number(Input@3, (Number * 10) + 1, Sign); - - [<<"2"/utf8>> | Input@4] -> - parse_number(Input@4, (Number * 10) + 2, Sign); - - [<<"3"/utf8>> | Input@5] -> - parse_number(Input@5, (Number * 10) + 3, Sign); - - [<<"4"/utf8>> | Input@6] -> - parse_number(Input@6, (Number * 10) + 4, Sign); - - [<<"5"/utf8>> | Input@7] -> - parse_number(Input@7, (Number * 10) + 5, Sign); - - [<<"6"/utf8>> | Input@8] -> - parse_number(Input@8, (Number * 10) + 6, Sign); - - [<<"7"/utf8>> | Input@9] -> - parse_number(Input@9, (Number * 10) + 7, Sign); - - [<<"8"/utf8>> | Input@10] -> - parse_number(Input@10, (Number * 10) + 8, Sign); - - [<<"9"/utf8>> | Input@11] -> - parse_number(Input@11, (Number * 10) + 9, Sign); - - [<<"-"/utf8>> | Input@12] -> - parse_date(Input@12, Number); - - [<<":"/utf8>> | Input@13] when Number < 24 -> - parse_time_minute(Input@13, Number); - - [<<"."/utf8>> | Input@14] -> - parse_float(Input@14, gleam@int:to_float(Number), Sign, 0.1); - - [<<"e"/utf8>>, <<"+"/utf8>> | Input@15] -> - parse_exponent( - Input@15, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"e"/utf8>>, <<"-"/utf8>> | Input@16] -> - parse_exponent( - Input@16, - gleam@int:to_float(Number), - Sign, - 0, - negative - ); - - [<<"e"/utf8>> | Input@17] -> - parse_exponent( - Input@17, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"E"/utf8>>, <<"+"/utf8>> | Input@18] -> - parse_exponent( - Input@18, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - [<<"E"/utf8>>, <<"-"/utf8>> | Input@19] -> - parse_exponent( - Input@19, - gleam@int:to_float(Number), - Sign, - 0, - negative - ); - - [<<"E"/utf8>> | Input@20] -> - parse_exponent( - Input@20, - gleam@int:to_float(Number), - Sign, - 0, - positive - ); - - Input@21 -> - Number@1 = case Sign of - positive -> - Number; - - negative -> - - Number - end, - {ok, {{int, Number@1}, Input@21}} - end. - --spec reverse_arrays_of_tables(toml()) -> toml(). -reverse_arrays_of_tables(Toml) -> - case Toml of - {array_of_tables, Tables} -> - {array_of_tables, reverse_arrays_of_tables_array(Tables, [])}; - - {table, Table} -> - {table, reverse_arrays_of_tables_table(Table)}; - - _ -> - Toml - end. - --spec reverse_arrays_of_tables_table(gleam@map:map_(binary(), toml())) -> gleam@map:map_(binary(), toml()). -reverse_arrays_of_tables_table(Table) -> - gleam@map:map_values(Table, fun(_, V) -> reverse_arrays_of_tables(V) end). - --spec reverse_arrays_of_tables_array( - list(gleam@map:map_(binary(), toml())), - list(gleam@map:map_(binary(), toml())) -) -> list(gleam@map:map_(binary(), toml())). -reverse_arrays_of_tables_array(Array, Acc) -> - case Array of - [] -> - Acc; - - [First | Rest] -> - First@1 = reverse_arrays_of_tables_table(First), - reverse_arrays_of_tables_array(Rest, [First@1 | Acc]) - end. - --spec parse_inline_table_property( - list(binary()), - gleam@map:map_(binary(), toml()) -) -> {ok, {gleam@map:map_(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_inline_table_property(Input, Properties) -> - Input@1 = skip_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - Input@3 = skip_line_whitespace(Input@2), - expect( - Input@3, - <<"="/utf8>>, - fun(Input@4) -> - Input@5 = skip_line_whitespace(Input@4), - do( - parse_value(Input@5), - fun(Value, Input@6) -> - case insert(Properties, Key, Value) of - {ok, Properties@1} -> - {ok, {Properties@1, Input@6}}; - - {error, E} -> - {error, E} - end - end - ) - end - ) - end - ). - --spec parse_value(list(binary())) -> {ok, {toml(), list(binary())}} | - {error, parse_error()}. -parse_value(Input) -> - case Input of - [<<"t"/utf8>>, <<"r"/utf8>>, <<"u"/utf8>>, <<"e"/utf8>> | Input@1] -> - {ok, {{bool, true}, Input@1}}; - - [<<"f"/utf8>>, - <<"a"/utf8>>, - <<"l"/utf8>>, - <<"s"/utf8>>, - <<"e"/utf8>> | - Input@2] -> - {ok, {{bool, false}, Input@2}}; - - [<<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@3] -> - {ok, {{nan, positive}, Input@3}}; - - [<<"+"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@4] -> - {ok, {{nan, positive}, Input@4}}; - - [<<"-"/utf8>>, <<"n"/utf8>>, <<"a"/utf8>>, <<"n"/utf8>> | Input@5] -> - {ok, {{nan, negative}, Input@5}}; - - [<<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@6] -> - {ok, {{infinity, positive}, Input@6}}; - - [<<"+"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@7] -> - {ok, {{infinity, positive}, Input@7}}; - - [<<"-"/utf8>>, <<"i"/utf8>>, <<"n"/utf8>>, <<"f"/utf8>> | Input@8] -> - {ok, {{infinity, negative}, Input@8}}; - - [<<"["/utf8>> | Input@9] -> - parse_array(Input@9, []); - - [<<"{"/utf8>> | Input@10] -> - parse_inline_table(Input@10, gleam@map:new()); - - [<<"0"/utf8>>, <<"x"/utf8>> | Input@11] -> - parse_hex(Input@11, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@12] -> - parse_hex(Input@12, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"x"/utf8>> | Input@13] -> - parse_hex(Input@13, 0, negative); - - [<<"0"/utf8>>, <<"o"/utf8>> | Input@14] -> - parse_octal(Input@14, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@15] -> - parse_octal(Input@15, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"o"/utf8>> | Input@16] -> - parse_octal(Input@16, 0, negative); - - [<<"0"/utf8>>, <<"b"/utf8>> | Input@17] -> - parse_binary(Input@17, 0, positive); - - [<<"+"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@18] -> - parse_binary(Input@18, 0, positive); - - [<<"-"/utf8>>, <<"0"/utf8>>, <<"b"/utf8>> | Input@19] -> - parse_binary(Input@19, 0, negative); - - [<<"+"/utf8>> | Input@20] -> - parse_number(Input@20, 0, positive); - - [<<"-"/utf8>> | Input@21] -> - parse_number(Input@21, 0, negative); - - [<<"0"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"1"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"2"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"3"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"4"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"5"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"6"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"7"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"8"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"9"/utf8>> | _] -> - parse_number(Input, 0, positive); - - [<<"\""/utf8>>, <<"\""/utf8>>, <<"\""/utf8>> | Input@22] -> - parse_multi_line_string(Input@22, <<""/utf8>>); - - [<<"\""/utf8>> | Input@23] -> - parse_string(Input@23, <<""/utf8>>); - - [<<"'"/utf8>>, <<"'"/utf8>>, <<"'"/utf8>> | Input@24] -> - parse_multi_line_literal_string(Input@24, <<""/utf8>>); - - [<<"'"/utf8>> | Input@25] -> - parse_literal_string(Input@25, <<""/utf8>>); - - [G | _] -> - {error, {unexpected, G, <<"value"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"value"/utf8>>}} - end. - --spec parse_inline_table(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_inline_table(Input, Properties) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"}"/utf8>> | Input@2] -> - {ok, {{inline_table, Properties}, Input@2}}; - - _ -> - case parse_inline_table_property(Input@1, Properties) of - {ok, {Properties@1, Input@3}} -> - Input@4 = skip_whitespace(Input@3), - case Input@4 of - [<<"}"/utf8>> | Input@5] -> - {ok, {{inline_table, Properties@1}, Input@5}}; - - [<<","/utf8>> | Input@6] -> - Input@7 = skip_whitespace(Input@6), - parse_inline_table(Input@7, Properties@1); - - [G | _] -> - {error, {unexpected, G, <<"}"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"}"/utf8>>}} - end; - - {error, E} -> - {error, E} - end - end. - --spec parse_key_value(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, - {gleam@map:map_(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_key_value(Input, Toml) -> - do( - parse_key(Input, []), - fun(Key, Input@1) -> - Input@2 = skip_line_whitespace(Input@1), - expect( - Input@2, - <<"="/utf8>>, - fun(Input@3) -> - Input@4 = skip_line_whitespace(Input@3), - do( - parse_value(Input@4), - fun(Value, Input@5) -> case insert(Toml, Key, Value) of - {ok, Toml@1} -> - {ok, {Toml@1, Input@5}}; - - {error, E} -> - {error, E} - end end - ) - end - ) - end - ). - --spec parse_table(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, - {gleam@map:map_(binary(), toml()), list(binary())}} | - {error, parse_error()}. -parse_table(Input, Toml) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"["/utf8>> | _] -> - {ok, {Toml, Input@1}}; - - [] -> - {ok, {Toml, Input@1}}; - - _ -> - case parse_key_value(Input@1, Toml) of - {ok, {Toml@1, Input@2}} -> - case skip_line_whitespace(Input@2) of - [] -> - {ok, {Toml@1, []}}; - - [<<"\n"/utf8>> | In] -> - parse_table(In, Toml@1); - - [<<"\r\n"/utf8>> | In] -> - parse_table(In, Toml@1); - - [G | _] -> - {error, {unexpected, G, <<"\n"/utf8>>}} - end; - - E -> - E - end - end. - --spec parse_array_of_tables(list(binary())) -> {ok, - {{list(binary()), gleam@map:map_(binary(), toml())}, list(binary())}} | - {error, parse_error()}. -parse_array_of_tables(Input) -> - Input@1 = skip_line_whitespace(Input), - do( - parse_key(Input@1, []), - fun(Key, Input@2) -> - expect( - Input@2, - <<"]"/utf8>>, - fun(Input@3) -> - expect( - Input@3, - <<"]"/utf8>>, - fun(Input@4) -> - do( - parse_table(Input@4, gleam@map:new()), - fun(Table, Input@5) -> - {ok, {{Key, Table}, Input@5}} - end - ) - end - ) - end - ) - end - ). - --spec parse_table_and_header(list(binary())) -> {ok, - {{list(binary()), gleam@map:map_(binary(), toml())}, list(binary())}} | - {error, parse_error()}. -parse_table_and_header(Input) -> - do( - parse_table_header(Input), - fun(Key, Input@1) -> - do( - parse_table(Input@1, gleam@map:new()), - fun(Table, Input@2) -> {ok, {{Key, Table}, Input@2}} end - ) - end - ). - --spec parse_tables(list(binary()), gleam@map:map_(binary(), toml())) -> {ok, - gleam@map:map_(binary(), toml())} | - {error, parse_error()}. -parse_tables(Input, Toml) -> - case Input of - [<<"["/utf8>>, <<"["/utf8>> | Input@1] -> - case parse_array_of_tables(Input@1) of - {error, E} -> - {error, E}; - - {ok, {{Key, Table}, Input@2}} -> - case insert(Toml, Key, {array_of_tables, [Table]}) of - {ok, Toml@1} -> - parse_tables(Input@2, Toml@1); - - {error, E@1} -> - {error, E@1} - end - end; - - [<<"["/utf8>> | Input@3] -> - case parse_table_and_header(Input@3) of - {error, E@2} -> - {error, E@2}; - - {ok, {{Key@1, Table@1}, Input@4}} -> - case insert(Toml, Key@1, {table, Table@1}) of - {ok, Toml@2} -> - parse_tables(Input@4, Toml@2); - - {error, E@3} -> - {error, E@3} - end - end; - - [G | _] -> - {error, {unexpected, G, <<"["/utf8>>}}; - - [] -> - {ok, Toml} - end. - --spec parse(binary()) -> {ok, gleam@map:map_(binary(), toml())} | - {error, parse_error()}. -parse(Input) -> - Input@1 = gleam@string:to_graphemes(Input), - Input@2 = drop_comments(Input@1, []), - Input@3 = skip_whitespace(Input@2), - do( - parse_table(Input@3, gleam@map:new()), - fun(Toml, Input@4) -> case parse_tables(Input@4, Toml) of - {ok, Toml@1} -> - {ok, reverse_arrays_of_tables_table(Toml@1)}; - - {error, E} -> - {error, E} - end end - ). - --spec parse_array(list(binary()), list(toml())) -> {ok, - {toml(), list(binary())}} | - {error, parse_error()}. -parse_array(Input, Elements) -> - Input@1 = skip_whitespace(Input), - case Input@1 of - [<<"]"/utf8>> | Input@2] -> - {ok, {{array, gleam@list:reverse(Elements)}, Input@2}}; - - _ -> - do( - parse_value(Input@1), - fun(Element, Input@3) -> - Elements@1 = [Element | Elements], - Input@4 = skip_whitespace(Input@3), - case Input@4 of - [<<"]"/utf8>> | Input@5] -> - {ok, - {{array, gleam@list:reverse(Elements@1)}, - Input@5}}; - - [<<","/utf8>> | Input@6] -> - Input@7 = skip_whitespace(Input@6), - parse_array(Input@7, Elements@1); - - [G | _] -> - {error, {unexpected, G, <<"]"/utf8>>}}; - - [] -> - {error, {unexpected, <<"EOF"/utf8>>, <<"]"/utf8>>}} - end - end - ) - end. diff --git a/aoc2023/build/packages/tom/src/tom.gleam b/aoc2023/build/packages/tom/src/tom.gleam deleted file mode 100644 index e19ce3e..0000000 --- a/aoc2023/build/packages/tom/src/tom.gleam +++ /dev/null @@ -1,1317 +0,0 @@ -//// A pure Gleam TOML parser! -//// -//// ```gleam -//// import tom -//// -//// const config = " -//// [person] -//// name = \"Lucy\" -//// is_cool = true -//// " -//// -//// pub fn main() { -//// // Parse a string of TOML -//// let assert Ok(parsed) = tom.parse(config) -//// -//// // Now you can work with the data directly, or you can use the `get_*` -//// // functions to retrieve values. -//// -//// tom.get_string(parsed, ["person", "name"]) -//// // -> Ok("Lucy") -//// -//// let is_cool = tom.get_bool(parsed, ["person", "is_cool"]) -//// // -> Ok(True) -//// } -//// ``` - -import gleam/int -import gleam/list -import gleam/float -import gleam/string -import gleam/result -import gleam/map.{type Map} - -/// A TOML document. -pub type Toml { - Int(Int) - Float(Float) - /// Infinity is a valid number in TOML but Gleam does not support it, so this - /// variant represents the infinity values. - Infinity(Sign) - /// NaN is a valid number in TOML but Gleam does not support it, so this - /// variant represents the NaN values. - Nan(Sign) - Bool(Bool) - String(String) - Date(Date) - Time(Time) - DateTime(DateTime) - Array(List(Toml)) - ArrayOfTables(List(Map(String, Toml))) - Table(Map(String, Toml)) - InlineTable(Map(String, Toml)) -} - -pub type DateTime { - DateTimeValue(date: Date, time: Time, offset: Offset) -} - -pub type Date { - DateValue(year: Int, month: Int, day: Int) -} - -pub type Time { - TimeValue(hour: Int, minute: Int, second: Int, millisecond: Int) -} - -pub type Offset { - Local - Offset(direction: Sign, hours: Int, minutes: Int) -} - -pub type Sign { - Positive - Negative -} - -/// An error that can occur when parsing a TOML document. -pub type ParseError { - /// An unexpected character was encountered when parsing the document. - Unexpected(got: String, expected: String) - /// More than one items have the same key in the document. - KeyAlreadyInUse(key: List(String)) -} - -type Tokens = - List(String) - -type Parsed(a) = - Result(#(a, Tokens), ParseError) - -/// A number of any kind, returned by the `get_number` function. -pub type Number { - NumberInt(Int) - NumberFloat(Float) - NumberInfinity(Sign) - NumberNan(Sign) -} - -/// An error that can occur when retrieving a value from a TOML document with -/// one of the `get_*` functions. -pub type GetError { - /// There was no value at the given key. - NotFound(key: List(String)) - /// The value at the given key was not of the expected type. - WrongType(key: List(String), expected: String, got: String) -} - -// TODO: test -/// Get a value of any type from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 1") -/// get(parsed, ["a", "b", "c"]) -/// // -> Ok(Int(1)) -/// ``` -/// -pub fn get(toml: Map(String, Toml), key: List(String)) -> Result(Toml, GetError) { - case key { - [] -> Error(NotFound([])) - [k] -> result.replace_error(map.get(toml, k), NotFound([k])) - [k, ..key] -> { - case map.get(toml, k) { - Ok(Table(t)) -> push_key(get(t, key), k) - Ok(other) -> Error(WrongType([k], "Table", classify(other))) - Error(_) -> Error(NotFound([k])) - } - } - } -} - -// TODO: test -/// Get an int from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 1") -/// get_int(parsed, ["a", "b", "c"]) -/// // -> Ok(1) -/// ``` -/// -pub fn get_int( - toml: Map(String, Toml), - key: List(String), -) -> Result(Int, GetError) { - case get(toml, key) { - Ok(Int(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Int", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a float from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 1.1") -/// get_float(parsed, ["a", "b", "c"]) -/// // -> Ok(1.1) -/// ``` -/// -pub fn get_float( - toml: Map(String, Toml), - key: List(String), -) -> Result(Float, GetError) { - case get(toml, key) { - Ok(Float(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Float", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a bool from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = true") -/// get_bool(parsed, ["a", "b", "c"]) -/// // -> Ok(True) -/// ``` -/// -pub fn get_bool( - toml: Map(String, Toml), - key: List(String), -) -> Result(Bool, GetError) { - case get(toml, key) { - Ok(Bool(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Bool", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a string from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = \"ok\"") -/// get_string(parsed, ["a", "b", "c"]) -/// // -> Ok("ok") -/// ``` -/// -pub fn get_string( - toml: Map(String, Toml), - key: List(String), -) -> Result(String, GetError) { - case get(toml, key) { - Ok(String(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "String", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a date from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 1979-05-27") -/// get_date(parsed, ["a", "b", "c"]) -/// // -> Ok("1979-05-27") -/// ``` -/// -pub fn get_date( - toml: Map(String, Toml), - key: List(String), -) -> Result(Date, GetError) { - case get(toml, key) { - Ok(Date(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Date", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a time from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 07:32:00") -/// get_time(parsed, ["a", "b", "c"]) -/// // -> Ok("07:32:00") -/// ``` -/// -pub fn get_time( - toml: Map(String, Toml), - key: List(String), -) -> Result(Time, GetError) { - case get(toml, key) { - Ok(Time(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Time", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a date-time from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = 1979-05-27T07:32:00") -/// get_date_time(parsed, ["a", "b", "c"]) -/// // -> Ok("1979-05-27T07:32:00") -/// ``` -/// -pub fn get_date_time( - toml: Map(String, Toml), - key: List(String), -) -> Result(DateTime, GetError) { - case get(toml, key) { - Ok(DateTime(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "DateTime", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get an array from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = [1, 2]") -/// get_array(parsed, ["a", "b", "c"]) -/// // -> Ok([Int(1), Int(2)]) -/// ``` -/// -pub fn get_array( - toml: Map(String, Toml), - key: List(String), -) -> Result(List(Toml), GetError) { - case get(toml, key) { - Ok(Array(i)) -> Ok(i) - Ok(ArrayOfTables(i)) -> Ok(list.map(i, Table)) - Ok(other) -> Error(WrongType(key, "Array", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a table from a TOML document. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = { d = 1 }") -/// get_table(parsed, ["a", "b", "c"]) -/// // -> Ok(map.from_list([#("d", Int(1))])) -/// ``` -/// -pub fn get_table( - toml: Map(String, Toml), - key: List(String), -) -> Result(Map(String, Toml), GetError) { - case get(toml, key) { - Ok(Table(i)) -> Ok(i) - Ok(InlineTable(i)) -> Ok(i) - Ok(other) -> Error(WrongType(key, "Table", classify(other))) - Error(e) -> Error(e) - } -} - -// TODO: test -/// Get a number of any kind from a TOML document. -/// This could be an int, a float, a NaN, or an infinity. -/// -/// ## Examples -/// -/// ```gleam -/// let assert Ok(parsed) = parse("a.b.c = { d = inf }") -/// get_number(parsed, ["a", "b", "c"]) -/// // -> Ok(NumberInfinity(Positive))) -/// ``` -/// -pub fn get_number( - toml: Map(String, Toml), - key: List(String), -) -> Result(Number, GetError) { - case get(toml, key) { - Ok(Int(x)) -> Ok(NumberInt(x)) - Ok(Float(x)) -> Ok(NumberFloat(x)) - Ok(Nan(x)) -> Ok(NumberNan(x)) - Ok(Infinity(x)) -> Ok(NumberInfinity(x)) - Ok(other) -> Error(WrongType(key, "Number", classify(other))) - Error(e) -> Error(e) - } -} - -fn classify(toml: Toml) -> String { - case toml { - Int(_) -> "Int" - Float(_) -> "Float" - Nan(Positive) -> "NaN" - Nan(Negative) -> "Negative NaN" - Infinity(Positive) -> "Infinity" - Infinity(Negative) -> "Negative Infinity" - Bool(_) -> "Bool" - String(_) -> "String" - Date(_) -> "Date" - Time(_) -> "Time" - DateTime(_) -> "DateTime" - Array(_) -> "Array" - ArrayOfTables(_) -> "Array" - Table(_) -> "Table" - InlineTable(_) -> "Table" - } -} - -fn push_key(result: Result(t, GetError), key: String) -> Result(t, GetError) { - case result { - Ok(t) -> Ok(t) - Error(NotFound(path)) -> Error(NotFound([key, ..path])) - Error(WrongType(path, expected, got)) -> - Error(WrongType([key, ..path], expected, got)) - } -} - -pub fn parse(input: String) -> Result(Map(String, Toml), ParseError) { - let input = string.to_graphemes(input) - let input = drop_comments(input, []) - let input = skip_whitespace(input) - use toml, input <- do(parse_table(input, map.new())) - case parse_tables(input, toml) { - Ok(toml) -> Ok(reverse_arrays_of_tables_table(toml)) - Error(e) -> Error(e) - } -} - -fn parse_tables( - input: Tokens, - toml: Map(String, Toml), -) -> Result(Map(String, Toml), ParseError) { - case input { - ["[", "[", ..input] -> { - case parse_array_of_tables(input) { - Error(e) -> Error(e) - Ok(#(#(key, table), input)) -> { - case insert(toml, key, ArrayOfTables([table])) { - Ok(toml) -> parse_tables(input, toml) - Error(e) -> Error(e) - } - } - } - } - ["[", ..input] -> { - case parse_table_and_header(input) { - Error(e) -> Error(e) - Ok(#(#(key, table), input)) -> { - case insert(toml, key, Table(table)) { - Ok(toml) -> parse_tables(input, toml) - Error(e) -> Error(e) - } - } - } - } - [g, ..] -> Error(Unexpected(g, "[")) - [] -> Ok(toml) - } -} - -fn parse_array_of_tables( - input: Tokens, -) -> Parsed(#(List(String), Map(String, Toml))) { - let input = skip_line_whitespace(input) - use key, input <- do(parse_key(input, [])) - use input <- expect(input, "]") - use input <- expect(input, "]") - use table, input <- do(parse_table(input, map.new())) - Ok(#(#(key, table), input)) -} - -fn parse_table_header(input: Tokens) -> Parsed(List(String)) { - let input = skip_line_whitespace(input) - use key, input <- do(parse_key(input, [])) - use input <- expect(input, "]") - let input = skip_line_whitespace(input) - use input <- expect_end_of_line(input) - Ok(#(key, input)) -} - -fn parse_table_and_header( - input: Tokens, -) -> Parsed(#(List(String), Map(String, Toml))) { - use key, input <- do(parse_table_header(input)) - use table, input <- do(parse_table(input, map.new())) - Ok(#(#(key, table), input)) -} - -fn parse_table( - input: Tokens, - toml: Map(String, Toml), -) -> Parsed(Map(String, Toml)) { - let input = skip_whitespace(input) - case input { - ["[", ..] | [] -> Ok(#(toml, input)) - _ -> - case parse_key_value(input, toml) { - Ok(#(toml, input)) -> - case skip_line_whitespace(input) { - [] -> Ok(#(toml, [])) - ["\n", ..in] | ["\r\n", ..in] -> parse_table(in, toml) - [g, ..] -> Error(Unexpected(g, "\n")) - } - e -> e - } - } -} - -fn parse_key_value( - input: Tokens, - toml: Map(String, Toml), -) -> Parsed(Map(String, Toml)) { - use key, input <- do(parse_key(input, [])) - let input = skip_line_whitespace(input) - use input <- expect(input, "=") - let input = skip_line_whitespace(input) - use value, input <- do(parse_value(input)) - case insert(toml, key, value) { - Ok(toml) -> Ok(#(toml, input)) - Error(e) -> Error(e) - } -} - -fn insert( - table: Map(String, Toml), - key: List(String), - value: Toml, -) -> Result(Map(String, Toml), ParseError) { - case insert_loop(table, key, value) { - Ok(table) -> Ok(table) - Error(path) -> Error(KeyAlreadyInUse(path)) - } -} - -fn insert_loop( - table: Map(String, Toml), - key: List(String), - value: Toml, -) -> Result(Map(String, Toml), List(String)) { - case key { - [] -> panic as "unreachable" - [k] -> { - case map.get(table, k) { - Error(Nil) -> Ok(map.insert(table, k, value)) - Ok(old) -> merge(table, k, old, value) - } - } - [k, ..key] -> { - case map.get(table, k) { - Error(Nil) -> { - case insert_loop(map.new(), key, value) { - Ok(inner) -> Ok(map.insert(table, k, Table(inner))) - Error(path) -> Error([k, ..path]) - } - } - Ok(ArrayOfTables([inner, ..rest])) -> { - case insert_loop(inner, key, value) { - Ok(inner) -> - Ok(map.insert(table, k, ArrayOfTables([inner, ..rest]))) - Error(path) -> Error([k, ..path]) - } - } - Ok(Table(inner)) -> { - case insert_loop(inner, key, value) { - Ok(inner) -> Ok(map.insert(table, k, Table(inner))) - Error(path) -> Error([k, ..path]) - } - } - Ok(_) -> Error([k]) - } - } - } -} - -fn merge( - table: Map(String, Toml), - key: String, - old: Toml, - new: Toml, -) -> Result(Map(String, Toml), List(String)) { - case old, new { - // When both are arrays of tables then they are merged together - ArrayOfTables(tables), ArrayOfTables(new) -> - Ok(map.insert(table, key, ArrayOfTables(list.append(new, tables)))) - - _, _ -> Error([key]) - } -} - -fn expect_end_of_line(input: Tokens, next: fn(Tokens) -> Parsed(a)) -> Parsed(a) { - case input { - ["\n", ..input] -> next(input) - ["\r\n", ..input] -> next(input) - [g, ..] -> Error(Unexpected(g, "\n")) - [] -> Error(Unexpected("EOF", "\n")) - } -} - -fn parse_value(input) -> Parsed(Toml) { - case input { - ["t", "r", "u", "e", ..input] -> Ok(#(Bool(True), input)) - ["f", "a", "l", "s", "e", ..input] -> Ok(#(Bool(False), input)) - - ["n", "a", "n", ..input] -> Ok(#(Nan(Positive), input)) - ["+", "n", "a", "n", ..input] -> Ok(#(Nan(Positive), input)) - ["-", "n", "a", "n", ..input] -> Ok(#(Nan(Negative), input)) - - ["i", "n", "f", ..input] -> Ok(#(Infinity(Positive), input)) - ["+", "i", "n", "f", ..input] -> Ok(#(Infinity(Positive), input)) - ["-", "i", "n", "f", ..input] -> Ok(#(Infinity(Negative), input)) - - ["[", ..input] -> parse_array(input, []) - ["{", ..input] -> parse_inline_table(input, map.new()) - - ["0", "x", ..input] -> parse_hex(input, 0, Positive) - ["+", "0", "x", ..input] -> parse_hex(input, 0, Positive) - ["-", "0", "x", ..input] -> parse_hex(input, 0, Negative) - - ["0", "o", ..input] -> parse_octal(input, 0, Positive) - ["+", "0", "o", ..input] -> parse_octal(input, 0, Positive) - ["-", "0", "o", ..input] -> parse_octal(input, 0, Negative) - - ["0", "b", ..input] -> parse_binary(input, 0, Positive) - ["+", "0", "b", ..input] -> parse_binary(input, 0, Positive) - ["-", "0", "b", ..input] -> parse_binary(input, 0, Negative) - - ["+", ..input] -> parse_number(input, 0, Positive) - ["-", ..input] -> parse_number(input, 0, Negative) - ["0", ..] - | ["1", ..] - | ["2", ..] - | ["3", ..] - | ["4", ..] - | ["5", ..] - | ["6", ..] - | ["7", ..] - | ["8", ..] - | ["9", ..] -> parse_number(input, 0, Positive) - - ["\"", "\"", "\"", ..input] -> parse_multi_line_string(input, "") - ["\"", ..input] -> parse_string(input, "") - - ["'", "'", "'", ..input] -> parse_multi_line_literal_string(input, "") - ["'", ..input] -> parse_literal_string(input, "") - - [g, ..] -> Error(Unexpected(g, "value")) - [] -> Error(Unexpected("EOF", "value")) - } -} - -fn parse_key(input: Tokens, segments: List(String)) -> Parsed(List(String)) { - use segment, input <- do(parse_key_segment(input)) - let segments = [segment, ..segments] - let input = skip_line_whitespace(input) - - case input { - [".", ..input] -> parse_key(input, segments) - _ -> Ok(#(list.reverse(segments), input)) - } -} - -fn parse_key_segment(input: Tokens) -> Parsed(String) { - let input = skip_line_whitespace(input) - case input { - ["=", ..] -> Error(Unexpected("=", "Key")) - ["\n", ..] -> Error(Unexpected("\n", "Key")) - ["\r\n", ..] -> Error(Unexpected("\r\n", "Key")) - ["[", ..] -> Error(Unexpected("[", "Key")) - ["\"", ..input] -> parse_key_quoted(input, "\"", "") - ["'", ..input] -> parse_key_quoted(input, "'", "") - _ -> parse_key_bare(input, "") - } -} - -fn parse_key_quoted( - input: Tokens, - close: String, - name: String, -) -> Parsed(String) { - case input { - [g, ..input] if g == close -> Ok(#(name, input)) - [g, ..input] -> parse_key_quoted(input, close, name <> g) - [] -> Error(Unexpected("EOF", close)) - } -} - -fn parse_key_bare(input: Tokens, name: String) -> Parsed(String) { - case input { - [" ", ..input] if name != "" -> Ok(#(name, input)) - ["=", ..] if name != "" -> Ok(#(name, input)) - [".", ..] if name != "" -> Ok(#(name, input)) - ["]", ..] if name != "" -> Ok(#(name, input)) - [",", ..] if name != "" -> Error(Unexpected(",", "=")) - ["\n", ..] if name != "" -> Error(Unexpected("\n", "=")) - ["\r\n", ..] if name != "" -> Error(Unexpected("\r\n", "=")) - ["\n", ..] -> Error(Unexpected("\n", "key")) - ["\r\n", ..] -> Error(Unexpected("\r\n", "key")) - ["]", ..] -> Error(Unexpected("]", "key")) - [",", ..] -> Error(Unexpected(",", "key")) - [g, ..input] -> parse_key_bare(input, name <> g) - [] -> Error(Unexpected("EOF", "key")) - } -} - -fn skip_line_whitespace(input: Tokens) -> Tokens { - list.drop_while(input, fn(g) { g == " " || g == "\t" }) -} - -fn skip_whitespace(input: Tokens) -> Tokens { - case input { - [" ", ..input] -> skip_whitespace(input) - ["\t", ..input] -> skip_whitespace(input) - ["\n", ..input] -> skip_whitespace(input) - ["\r\n", ..input] -> skip_whitespace(input) - input -> input - } -} - -fn drop_comments(input: Tokens, acc: Tokens) -> Tokens { - case input { - ["#", ..input] -> - input - |> list.drop_while(fn(g) { g != "\n" }) - |> drop_comments(acc) - [g, ..input] -> drop_comments(input, [g, ..acc]) - [] -> list.reverse(acc) - } -} - -fn do( - result: Result(#(a, Tokens), ParseError), - next: fn(a, Tokens) -> Result(b, ParseError), -) -> Result(b, ParseError) { - case result { - Ok(#(a, input)) -> next(a, input) - Error(e) -> Error(e) - } -} - -fn expect( - input: Tokens, - expected: String, - next: fn(Tokens) -> Parsed(a), -) -> Parsed(a) { - case input { - [g, ..input] if g == expected -> next(input) - [g, ..] -> Error(Unexpected(g, expected)) - [] -> Error(Unexpected("EOF", expected)) - } -} - -fn parse_inline_table( - input: Tokens, - properties: Map(String, Toml), -) -> Parsed(Toml) { - let input = skip_whitespace(input) - case input { - ["}", ..input] -> Ok(#(InlineTable(properties), input)) - _ -> - case parse_inline_table_property(input, properties) { - Ok(#(properties, input)) -> { - let input = skip_whitespace(input) - case input { - ["}", ..input] -> Ok(#(InlineTable(properties), input)) - [",", ..input] -> { - let input = skip_whitespace(input) - parse_inline_table(input, properties) - } - [g, ..] -> Error(Unexpected(g, "}")) - [] -> Error(Unexpected("EOF", "}")) - } - } - Error(e) -> Error(e) - } - } -} - -fn parse_inline_table_property( - input: Tokens, - properties: Map(String, Toml), -) -> Parsed(Map(String, Toml)) { - let input = skip_whitespace(input) - use key, input <- do(parse_key(input, [])) - let input = skip_line_whitespace(input) - use input <- expect(input, "=") - let input = skip_line_whitespace(input) - use value, input <- do(parse_value(input)) - case insert(properties, key, value) { - Ok(properties) -> Ok(#(properties, input)) - Error(e) -> Error(e) - } -} - -fn parse_array(input: Tokens, elements: List(Toml)) -> Parsed(Toml) { - let input = skip_whitespace(input) - case input { - ["]", ..input] -> Ok(#(Array(list.reverse(elements)), input)) - _ -> { - use element, input <- do(parse_value(input)) - let elements = [element, ..elements] - let input = skip_whitespace(input) - case input { - ["]", ..input] -> Ok(#(Array(list.reverse(elements)), input)) - [",", ..input] -> { - let input = skip_whitespace(input) - parse_array(input, elements) - } - [g, ..] -> Error(Unexpected(g, "]")) - [] -> Error(Unexpected("EOF", "]")) - } - } - } -} - -fn parse_hex(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_hex(input, number, sign) - ["0", ..input] -> parse_hex(input, number * 16 + 0, sign) - ["1", ..input] -> parse_hex(input, number * 16 + 1, sign) - ["2", ..input] -> parse_hex(input, number * 16 + 2, sign) - ["3", ..input] -> parse_hex(input, number * 16 + 3, sign) - ["4", ..input] -> parse_hex(input, number * 16 + 4, sign) - ["5", ..input] -> parse_hex(input, number * 16 + 5, sign) - ["6", ..input] -> parse_hex(input, number * 16 + 6, sign) - ["7", ..input] -> parse_hex(input, number * 16 + 7, sign) - ["8", ..input] -> parse_hex(input, number * 16 + 8, sign) - ["9", ..input] -> parse_hex(input, number * 16 + 9, sign) - ["a", ..input] -> parse_hex(input, number * 16 + 10, sign) - ["b", ..input] -> parse_hex(input, number * 16 + 11, sign) - ["c", ..input] -> parse_hex(input, number * 16 + 12, sign) - ["d", ..input] -> parse_hex(input, number * 16 + 13, sign) - ["e", ..input] -> parse_hex(input, number * 16 + 14, sign) - ["f", ..input] -> parse_hex(input, number * 16 + 15, sign) - ["A", ..input] -> parse_hex(input, number * 16 + 10, sign) - ["B", ..input] -> parse_hex(input, number * 16 + 11, sign) - ["C", ..input] -> parse_hex(input, number * 16 + 12, sign) - ["D", ..input] -> parse_hex(input, number * 16 + 13, sign) - ["E", ..input] -> parse_hex(input, number * 16 + 14, sign) - ["F", ..input] -> parse_hex(input, number * 16 + 15, sign) - - // Anything else and the number is terminated - input -> { - let number = case sign { - Positive -> number - Negative -> -number - } - Ok(#(Int(number), input)) - } - } -} - -fn parse_octal(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_octal(input, number, sign) - ["0", ..input] -> parse_octal(input, number * 8 + 0, sign) - ["1", ..input] -> parse_octal(input, number * 8 + 1, sign) - ["2", ..input] -> parse_octal(input, number * 8 + 2, sign) - ["3", ..input] -> parse_octal(input, number * 8 + 3, sign) - ["4", ..input] -> parse_octal(input, number * 8 + 4, sign) - ["5", ..input] -> parse_octal(input, number * 8 + 5, sign) - ["6", ..input] -> parse_octal(input, number * 8 + 6, sign) - ["7", ..input] -> parse_octal(input, number * 8 + 7, sign) - - // Anything else and the number is terminated - input -> { - let number = case sign { - Positive -> number - Negative -> -number - } - Ok(#(Int(number), input)) - } - } -} - -fn parse_binary(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_binary(input, number, sign) - ["0", ..input] -> parse_binary(input, number * 2 + 0, sign) - ["1", ..input] -> parse_binary(input, number * 2 + 1, sign) - - // Anything else and the number is terminated - input -> { - let number = case sign { - Positive -> number - Negative -> -number - } - Ok(#(Int(number), input)) - } - } -} - -fn parse_number(input: Tokens, number: Int, sign: Sign) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_number(input, number, sign) - ["0", ..input] -> parse_number(input, number * 10 + 0, sign) - ["1", ..input] -> parse_number(input, number * 10 + 1, sign) - ["2", ..input] -> parse_number(input, number * 10 + 2, sign) - ["3", ..input] -> parse_number(input, number * 10 + 3, sign) - ["4", ..input] -> parse_number(input, number * 10 + 4, sign) - ["5", ..input] -> parse_number(input, number * 10 + 5, sign) - ["6", ..input] -> parse_number(input, number * 10 + 6, sign) - ["7", ..input] -> parse_number(input, number * 10 + 7, sign) - ["8", ..input] -> parse_number(input, number * 10 + 8, sign) - ["9", ..input] -> parse_number(input, number * 10 + 9, sign) - - ["-", ..input] -> parse_date(input, number) - [":", ..input] if number < 24 -> parse_time_minute(input, number) - - [".", ..input] -> parse_float(input, int.to_float(number), sign, 0.1) - - ["e", "+", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Positive) - ["e", "-", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Negative) - ["e", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Positive) - ["E", "+", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Positive) - ["E", "-", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Negative) - ["E", ..input] -> - parse_exponent(input, int.to_float(number), sign, 0, Positive) - - // Anything else and the number is terminated - input -> { - let number = case sign { - Positive -> number - Negative -> -number - } - Ok(#(Int(number), input)) - } - } -} - -fn parse_exponent( - input: Tokens, - n: Float, - n_sign: Sign, - ex: Int, - ex_sign: Sign, -) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_exponent(input, n, n_sign, ex, ex_sign) - ["0", ..input] -> parse_exponent(input, n, n_sign, ex * 10, ex_sign) - ["1", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 1, ex_sign) - ["2", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 2, ex_sign) - ["3", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 3, ex_sign) - ["4", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 4, ex_sign) - ["5", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 5, ex_sign) - ["6", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 6, ex_sign) - ["7", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 7, ex_sign) - ["8", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 8, ex_sign) - ["9", ..input] -> parse_exponent(input, n, n_sign, ex * 10 + 9, ex_sign) - - // Anything else and the number is terminated - input -> { - let number = case n_sign { - Positive -> n - Negative -> n *. -1.0 - } - let exponent = - int.to_float(case ex_sign { - Positive -> ex - Negative -> -ex - }) - let multiplier = case float.power(10.0, exponent) { - Ok(multiplier) -> multiplier - Error(_) -> 1.0 - } - Ok(#(Float(number *. multiplier), input)) - } - } -} - -fn parse_float( - input: Tokens, - number: Float, - sign: Sign, - unit: Float, -) -> Parsed(Toml) { - case input { - ["_", ..input] -> parse_float(input, number, sign, unit) - ["0", ..input] -> parse_float(input, number, sign, unit *. 0.1) - ["1", ..input] -> - parse_float(input, number +. 1.0 *. unit, sign, unit *. 0.1) - ["2", ..input] -> - parse_float(input, number +. 2.0 *. unit, sign, unit *. 0.1) - ["3", ..input] -> - parse_float(input, number +. 3.0 *. unit, sign, unit *. 0.1) - ["4", ..input] -> - parse_float(input, number +. 4.0 *. unit, sign, unit *. 0.1) - ["5", ..input] -> - parse_float(input, number +. 5.0 *. unit, sign, unit *. 0.1) - ["6", ..input] -> - parse_float(input, number +. 6.0 *. unit, sign, unit *. 0.1) - ["7", ..input] -> - parse_float(input, number +. 7.0 *. unit, sign, unit *. 0.1) - ["8", ..input] -> - parse_float(input, number +. 8.0 *. unit, sign, unit *. 0.1) - ["9", ..input] -> - parse_float(input, number +. 9.0 *. unit, sign, unit *. 0.1) - - ["e", "+", ..input] -> parse_exponent(input, number, sign, 0, Positive) - ["e", "-", ..input] -> parse_exponent(input, number, sign, 0, Negative) - ["e", ..input] -> parse_exponent(input, number, sign, 0, Positive) - ["E", "+", ..input] -> parse_exponent(input, number, sign, 0, Positive) - ["E", "-", ..input] -> parse_exponent(input, number, sign, 0, Negative) - ["E", ..input] -> parse_exponent(input, number, sign, 0, Positive) - - // Anything else and the number is terminated - input -> { - let number = case sign { - Positive -> number - Negative -> number *. -1.0 - } - Ok(#(Float(number), input)) - } - } -} - -fn parse_string(input: Tokens, string: String) -> Parsed(Toml) { - case input { - ["\"", ..input] -> Ok(#(String(string), input)) - ["\\", "t", ..input] -> parse_string(input, string <> "\t") - ["\\", "n", ..input] -> parse_string(input, string <> "\n") - ["\\", "r", ..input] -> parse_string(input, string <> "\r") - ["\\", "\"", ..input] -> parse_string(input, string <> "\"") - ["\\", "\\", ..input] -> parse_string(input, string <> "\\") - [] -> Error(Unexpected("EOF", "\"")) - ["\n", ..] -> Error(Unexpected("\n", "\"")) - ["\r\n", ..] -> Error(Unexpected("\r\n", "\"")) - [g, ..input] -> parse_string(input, string <> g) - } -} - -fn parse_multi_line_string(input: Tokens, string: String) -> Parsed(Toml) { - case input { - ["\"", "\"", "\"", ..input] -> Ok(#(String(string), input)) - ["\\", "\n", ..input] -> - parse_multi_line_string(skip_whitespace(input), string) - ["\\", "\r\n", ..input] -> - parse_multi_line_string(skip_whitespace(input), string) - ["\r\n", ..input] if string == "" -> parse_multi_line_string(input, string) - ["\n", ..input] if string == "" -> parse_multi_line_string(input, string) - ["\r\n", ..input] if string == "" -> parse_multi_line_string(input, string) - ["\\", "t", ..input] -> parse_multi_line_string(input, string <> "\t") - ["\\", "n", ..input] -> parse_multi_line_string(input, string <> "\n") - ["\\", "r", ..input] -> parse_multi_line_string(input, string <> "\r") - ["\\", "\"", ..input] -> parse_multi_line_string(input, string <> "\"") - ["\\", "\\", ..input] -> parse_multi_line_string(input, string <> "\\") - [] -> Error(Unexpected("EOF", "\"")) - [g, ..input] -> parse_multi_line_string(input, string <> g) - } -} - -fn parse_multi_line_literal_string( - input: Tokens, - string: String, -) -> Parsed(Toml) { - case input { - [] -> Error(Unexpected("EOF", "\"")) - ["'", "'", "'", "'", ..] -> Error(Unexpected("''''", "'''")) - ["'", "'", "'", ..input] -> Ok(#(String(string), input)) - ["\n", ..input] if string == "" -> - parse_multi_line_literal_string(input, string) - ["\r\n", ..input] if string == "" -> - parse_multi_line_literal_string(input, string) - [g, ..input] -> parse_multi_line_literal_string(input, string <> g) - } -} - -fn parse_literal_string(input: Tokens, string: String) -> Parsed(Toml) { - case input { - [] -> Error(Unexpected("EOF", "\"")) - ["\n", ..] -> Error(Unexpected("\n", "'")) - ["\r\n", ..] -> Error(Unexpected("\r\n", "'")) - ["'", ..input] -> Ok(#(String(string), input)) - [g, ..input] -> parse_literal_string(input, string <> g) - } -} - -fn reverse_arrays_of_tables(toml: Toml) -> Toml { - case toml { - ArrayOfTables(tables) -> - ArrayOfTables(reverse_arrays_of_tables_array(tables, [])) - - Table(table) -> Table(reverse_arrays_of_tables_table(table)) - - _ -> toml - } -} - -fn reverse_arrays_of_tables_table(table: Map(String, Toml)) -> Map(String, Toml) { - map.map_values(table, fn(_, v) { reverse_arrays_of_tables(v) }) -} - -fn reverse_arrays_of_tables_array( - array: List(Map(String, Toml)), - acc: List(Map(String, Toml)), -) -> List(Map(String, Toml)) { - case array { - [] -> acc - [first, ..rest] -> { - let first = reverse_arrays_of_tables_table(first) - reverse_arrays_of_tables_array(rest, [first, ..acc]) - } - } -} - -fn parse_time_minute(input: Tokens, hours: Int) -> Parsed(Toml) { - use minutes, input <- do(parse_number_under_60(input, "minutes")) - use #(seconds, ms), input <- do(parse_time_s_ms(input)) - let time = TimeValue(hours, minutes, seconds, ms) - Ok(#(Time(time), input)) -} - -fn parse_hour_minute(input: Tokens) -> Parsed(#(Int, Int)) { - use hours, input <- do(case input { - ["0", "0", ":", ..input] -> Ok(#(0, input)) - ["0", "1", ":", ..input] -> Ok(#(1, input)) - ["0", "2", ":", ..input] -> Ok(#(2, input)) - ["0", "3", ":", ..input] -> Ok(#(3, input)) - ["0", "4", ":", ..input] -> Ok(#(4, input)) - ["0", "5", ":", ..input] -> Ok(#(5, input)) - ["0", "6", ":", ..input] -> Ok(#(6, input)) - ["0", "7", ":", ..input] -> Ok(#(7, input)) - ["0", "8", ":", ..input] -> Ok(#(8, input)) - ["0", "9", ":", ..input] -> Ok(#(9, input)) - ["1", "0", ":", ..input] -> Ok(#(10, input)) - ["1", "1", ":", ..input] -> Ok(#(11, input)) - ["1", "2", ":", ..input] -> Ok(#(12, input)) - ["1", "3", ":", ..input] -> Ok(#(13, input)) - ["1", "4", ":", ..input] -> Ok(#(14, input)) - ["1", "5", ":", ..input] -> Ok(#(15, input)) - ["1", "6", ":", ..input] -> Ok(#(16, input)) - ["1", "7", ":", ..input] -> Ok(#(17, input)) - ["1", "8", ":", ..input] -> Ok(#(18, input)) - ["1", "9", ":", ..input] -> Ok(#(19, input)) - ["2", "0", ":", ..input] -> Ok(#(20, input)) - ["2", "1", ":", ..input] -> Ok(#(21, input)) - ["2", "2", ":", ..input] -> Ok(#(22, input)) - ["2", "3", ":", ..input] -> Ok(#(23, input)) - [g, ..] -> Error(Unexpected(g, "time")) - [] -> Error(Unexpected("EOF", "time")) - }) - - use minutes, input <- do(parse_number_under_60(input, "minutes")) - Ok(#(#(hours, minutes), input)) -} - -fn parse_time_value(input: Tokens) -> Parsed(Time) { - use #(hours, minutes), input <- do(parse_hour_minute(input)) - use #(seconds, ms), input <- do(parse_time_s_ms(input)) - let time = TimeValue(hours, minutes, seconds, ms) - Ok(#(time, input)) -} - -fn parse_time_s_ms(input: Tokens) -> Parsed(#(Int, Int)) { - case input { - [":", ..input] -> { - use seconds, input <- do(parse_number_under_60(input, "seconds")) - case input { - [".", ..input] -> parse_time_ms(input, seconds, 0) - _ -> Ok(#(#(seconds, 0), input)) - } - } - - _ -> Ok(#(#(0, 0), input)) - } -} - -fn parse_time_ms(input: Tokens, seconds: Int, ms: Int) -> Parsed(#(Int, Int)) { - case input { - ["0", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 0) - ["1", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 1) - ["2", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 2) - ["3", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 3) - ["4", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 4) - ["5", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 5) - ["6", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 6) - ["7", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 7) - ["8", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 8) - ["9", ..input] if ms < 100_000 -> parse_time_ms(input, seconds, ms * 10 + 9) - - // Anything else and the number is terminated - _ -> Ok(#(#(seconds, ms), input)) - } -} - -fn parse_number_under_60(input: Tokens, expected: String) -> Parsed(Int) { - case input { - ["0", "0", ..input] -> Ok(#(0, input)) - ["0", "1", ..input] -> Ok(#(1, input)) - ["0", "2", ..input] -> Ok(#(2, input)) - ["0", "3", ..input] -> Ok(#(3, input)) - ["0", "4", ..input] -> Ok(#(4, input)) - ["0", "5", ..input] -> Ok(#(5, input)) - ["0", "6", ..input] -> Ok(#(6, input)) - ["0", "7", ..input] -> Ok(#(7, input)) - ["0", "8", ..input] -> Ok(#(8, input)) - ["0", "9", ..input] -> Ok(#(9, input)) - ["1", "0", ..input] -> Ok(#(10, input)) - ["1", "1", ..input] -> Ok(#(11, input)) - ["1", "2", ..input] -> Ok(#(12, input)) - ["1", "3", ..input] -> Ok(#(13, input)) - ["1", "4", ..input] -> Ok(#(14, input)) - ["1", "5", ..input] -> Ok(#(15, input)) - ["1", "6", ..input] -> Ok(#(16, input)) - ["1", "7", ..input] -> Ok(#(17, input)) - ["1", "8", ..input] -> Ok(#(18, input)) - ["1", "9", ..input] -> Ok(#(19, input)) - ["2", "0", ..input] -> Ok(#(20, input)) - ["2", "1", ..input] -> Ok(#(21, input)) - ["2", "2", ..input] -> Ok(#(22, input)) - ["2", "3", ..input] -> Ok(#(23, input)) - ["2", "4", ..input] -> Ok(#(24, input)) - ["2", "5", ..input] -> Ok(#(25, input)) - ["2", "6", ..input] -> Ok(#(26, input)) - ["2", "7", ..input] -> Ok(#(27, input)) - ["2", "8", ..input] -> Ok(#(28, input)) - ["2", "9", ..input] -> Ok(#(29, input)) - ["3", "0", ..input] -> Ok(#(30, input)) - ["3", "1", ..input] -> Ok(#(31, input)) - ["3", "2", ..input] -> Ok(#(32, input)) - ["3", "3", ..input] -> Ok(#(33, input)) - ["3", "4", ..input] -> Ok(#(34, input)) - ["3", "5", ..input] -> Ok(#(35, input)) - ["3", "6", ..input] -> Ok(#(36, input)) - ["3", "7", ..input] -> Ok(#(37, input)) - ["3", "8", ..input] -> Ok(#(38, input)) - ["3", "9", ..input] -> Ok(#(39, input)) - ["4", "0", ..input] -> Ok(#(40, input)) - ["4", "1", ..input] -> Ok(#(41, input)) - ["4", "2", ..input] -> Ok(#(42, input)) - ["4", "3", ..input] -> Ok(#(43, input)) - ["4", "4", ..input] -> Ok(#(44, input)) - ["4", "5", ..input] -> Ok(#(45, input)) - ["4", "6", ..input] -> Ok(#(46, input)) - ["4", "7", ..input] -> Ok(#(47, input)) - ["4", "8", ..input] -> Ok(#(48, input)) - ["4", "9", ..input] -> Ok(#(49, input)) - ["5", "0", ..input] -> Ok(#(50, input)) - ["5", "1", ..input] -> Ok(#(51, input)) - ["5", "2", ..input] -> Ok(#(52, input)) - ["5", "3", ..input] -> Ok(#(53, input)) - ["5", "4", ..input] -> Ok(#(54, input)) - ["5", "5", ..input] -> Ok(#(55, input)) - ["5", "6", ..input] -> Ok(#(56, input)) - ["5", "7", ..input] -> Ok(#(57, input)) - ["5", "8", ..input] -> Ok(#(58, input)) - ["5", "9", ..input] -> Ok(#(59, input)) - - [g, ..] -> Error(Unexpected(g, expected)) - [] -> Error(Unexpected("EOF", expected)) - } -} - -fn parse_date(input: Tokens, year: Int) -> Parsed(Toml) { - case input { - ["0", "1", "-", ..input] -> parse_date_day(input, year, 1) - ["0", "2", "-", ..input] -> parse_date_day(input, year, 2) - ["0", "3", "-", ..input] -> parse_date_day(input, year, 3) - ["0", "4", "-", ..input] -> parse_date_day(input, year, 4) - ["0", "5", "-", ..input] -> parse_date_day(input, year, 5) - ["0", "6", "-", ..input] -> parse_date_day(input, year, 6) - ["0", "7", "-", ..input] -> parse_date_day(input, year, 7) - ["0", "8", "-", ..input] -> parse_date_day(input, year, 8) - ["0", "9", "-", ..input] -> parse_date_day(input, year, 9) - ["1", "0", "-", ..input] -> parse_date_day(input, year, 10) - ["1", "1", "-", ..input] -> parse_date_day(input, year, 11) - ["1", "2", "-", ..input] -> parse_date_day(input, year, 12) - - [g, ..] -> Error(Unexpected(g, "date month")) - [] -> Error(Unexpected("EOF", "date month")) - } -} - -fn parse_date_day(input: Tokens, year: Int, month: Int) -> Parsed(Toml) { - case input { - ["0", "1", ..input] -> parse_date_end(input, year, month, 1) - ["0", "2", ..input] -> parse_date_end(input, year, month, 2) - ["0", "3", ..input] -> parse_date_end(input, year, month, 3) - ["0", "4", ..input] -> parse_date_end(input, year, month, 4) - ["0", "5", ..input] -> parse_date_end(input, year, month, 5) - ["0", "6", ..input] -> parse_date_end(input, year, month, 6) - ["0", "7", ..input] -> parse_date_end(input, year, month, 7) - ["0", "8", ..input] -> parse_date_end(input, year, month, 8) - ["0", "9", ..input] -> parse_date_end(input, year, month, 9) - ["1", "0", ..input] -> parse_date_end(input, year, month, 10) - ["1", "1", ..input] -> parse_date_end(input, year, month, 11) - ["1", "2", ..input] -> parse_date_end(input, year, month, 12) - ["1", "3", ..input] -> parse_date_end(input, year, month, 13) - ["1", "4", ..input] -> parse_date_end(input, year, month, 14) - ["1", "5", ..input] -> parse_date_end(input, year, month, 15) - ["1", "6", ..input] -> parse_date_end(input, year, month, 16) - ["1", "7", ..input] -> parse_date_end(input, year, month, 17) - ["1", "8", ..input] -> parse_date_end(input, year, month, 18) - ["1", "9", ..input] -> parse_date_end(input, year, month, 19) - ["2", "0", ..input] -> parse_date_end(input, year, month, 20) - ["2", "1", ..input] -> parse_date_end(input, year, month, 21) - ["2", "2", ..input] -> parse_date_end(input, year, month, 22) - ["2", "3", ..input] -> parse_date_end(input, year, month, 23) - ["2", "4", ..input] -> parse_date_end(input, year, month, 24) - ["2", "5", ..input] -> parse_date_end(input, year, month, 25) - ["2", "6", ..input] -> parse_date_end(input, year, month, 26) - ["2", "7", ..input] -> parse_date_end(input, year, month, 27) - ["2", "8", ..input] -> parse_date_end(input, year, month, 28) - ["2", "9", ..input] -> parse_date_end(input, year, month, 29) - ["3", "0", ..input] -> parse_date_end(input, year, month, 30) - ["3", "1", ..input] -> parse_date_end(input, year, month, 31) - - [g, ..] -> Error(Unexpected(g, "date day")) - [] -> Error(Unexpected("EOF", "date day")) - } -} - -fn parse_date_end( - input: Tokens, - year: Int, - month: Int, - day: Int, -) -> Parsed(Toml) { - let date = DateValue(year, month, day) - case input { - [" ", ..input] | ["T", ..input] -> { - use time, input <- do(parse_time_value(input)) - use offset, input <- do(parse_offset(input)) - Ok(#(DateTime(DateTimeValue(date, time, offset)), input)) - } - - _ -> Ok(#(Date(date), input)) - } -} - -fn parse_offset(input: Tokens) -> Parsed(Offset) { - case input { - ["Z", ..input] -> Ok(#(Offset(Positive, 0, 0), input)) - ["+", ..input] -> parse_offset_hours(input, Positive) - ["-", ..input] -> parse_offset_hours(input, Negative) - _ -> Ok(#(Local, input)) - } -} - -fn parse_offset_hours(input: Tokens, sign: Sign) -> Parsed(Offset) { - use #(hours, minutes), input <- do(parse_hour_minute(input)) - Ok(#(Offset(sign, hours, minutes), input)) -} diff --git a/aoc2023/build/prod/erlang/gleam.lock b/aoc2023/build/prod/erlang/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/build/prod/javascript/gleam.lock b/aoc2023/build/prod/javascript/gleam.lock deleted file mode 100644 index e69de29..0000000 diff --git a/aoc2023/erl_crash.dump b/aoc2023/erl_crash.dump deleted file mode 100644 index ef1d35a..0000000 --- a/aoc2023/erl_crash.dump +++ /dev/null @@ -1,67195 +0,0 @@ -=erl_crash_dump:0.5 -Thu Dec 7 01:00:23 2023 -Slogan: Runtime terminating during boot ({,[{showtime@internal@reports@formatter,-create_test_report/1-fun-4-,1,[{_},{_}]},{gleam@list,do_filter_map,3,[{_},{_}]},{showtime@internal@reports@formatter,create_test_report,1,[{_},{_}]},{showtime@internal@erlang@event_handler,-start/0-fun-1-,2,[{_},{_}]},{gleam@otp@actor,loop,1,[{_},{_}]}]}) -System version: Erlang/OTP 26 [erts-14.0.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit] [dtrace] -Taints: -Atoms: 11705 -Calling Thread: scheduler:1 -=scheduler:1 -Scheduler Sleep Info Flags: -Scheduler Sleep Info Aux Work: THR_PRGR_LATER_OP -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 2 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: NONEMPTY_NORMAL | OUT_OF_WORK | HALFTIME_OUT_OF_WORK | NONEMPTY | EXEC -Current Process: <0.0.0> -Current Process State: Running -Current Process Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | ACTIVE | RUNNING | ACTIVE_SYS -Current Process Program counter: 0x0000000103d889fc (init:boot_loop/2 + 84) -Current Process Limited Stack Trace: -0x0000000105dda900:SReturn addr 0x3D82348 () -=scheduler:2 -Scheduler Sleep Info Flags: SLEEPING | POLL_SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:3 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:4 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:5 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:6 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:7 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=scheduler:8 -Scheduler Sleep Info Flags: SLEEPING | TSE_SLEEPING | WAITING -Scheduler Sleep Info Aux Work: -Current Port: -Run Queue Max Length: 0 -Run Queue High Length: 0 -Run Queue Normal Length: 0 -Run Queue Low Length: 0 -Run Queue Port Length: 0 -Run Queue Flags: OUT_OF_WORK | HALFTIME_OUT_OF_WORK -Current Process: -=memory -total: 24121588 -processes: 7426424 -processes_used: 7419720 -system: 16695164 -atom: 327857 -atom_used: 307203 -binary: 475240 -code: 6109634 -ets: 600608 -=hash_table:atom_tab -size: 8192 -used: 6198 -objs: 11705 -depth: 8 -=index_table:atom_tab -size: 12288 -limit: 1048576 -entries: 11705 -=hash_table:module_code -size: 128 -used: 106 -objs: 180 -depth: 4 -=index_table:module_code -size: 1024 -limit: 65536 -entries: 180 -=hash_table:export_list -size: 4096 -used: 2753 -objs: 4462 -depth: 7 -=index_table:export_list -size: 5120 -limit: 524288 -entries: 4462 -=hash_table:export_list -size: 4096 -used: 2746 -objs: 4441 -depth: 7 -=hash_table:process_reg -size: 64 -used: 39 -objs: 52 -depth: 5 -=hash_table:fun_table -size: 1024 -used: 641 -objs: 987 -depth: 5 -=hash_table:node_table -size: 16 -used: 1 -objs: 1 -depth: 1 -=hash_table:dist_table -size: 16 -used: 1 -objs: 1 -depth: 1 -=allocated_areas -sys_misc: 57656 -static: 2107456 -atom_space: 163880 143226 -atom_table: 163977 -module_table: 107736 -export_table: 221604 -export_list: 892400 -register_table: 628 -fun_table: 8306 -module_refs: 8592 -loaded_code: 4870996 -dist_table: 691 -node_table: 291 -bits_bufs_size: 0 -bif_timer: 0 -process_table: 3145728 -port_table: 786432 -ets_misc: 131072 -external_alloc: 4870996 -=allocator:sys_alloc -option e: true -option m: libc -=allocator:temp_alloc[0] -versions: 2.1 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option mbsd: 3 -option as: gf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 5 5 -mbcs blocks[temp_alloc] size: 0 11288 11288 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1067 -temp_free calls: 1067 -temp_realloc calls: 1 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 1 5 5 -mbcs blocks[temp_alloc] size: 65544 655448 655448 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 1179648 1179648 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 9479 -temp_free calls: 9478 -temp_realloc calls: 134 -mseg_alloc calls: 4 -mseg_dealloc calls: 4 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 1 1 -mbcs blocks[temp_alloc] size: 0 56 56 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1 -temp_free calls: 1 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 1 1 -mbcs blocks[temp_alloc] size: 0 56 56 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1 -temp_free calls: 1 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 1 1 -mbcs blocks[temp_alloc] size: 0 56 56 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1 -temp_free calls: 1 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 1 1 -mbcs blocks[temp_alloc] size: 0 56 56 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1 -temp_free calls: 1 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 4 4 -mbcs blocks[temp_alloc] size: 0 6296 6296 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 616 -temp_free calls: 616 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 5 5 -mbcs blocks[temp_alloc] size: 0 11576 11576 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1049 -temp_free calls: 1049 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:temp_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 90 -option rsbcmt: 80 -option rmbcmt: 100 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: af -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 5 5 -mbcs blocks[temp_alloc] size: 0 6488 6488 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -temp_alloc calls: 1002 -temp_free calls: 1002 -temp_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 6 81 81 -mbcs blocks[sl_alloc] size: 576 41440 41440 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 294912 294912 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 665 -sl_free calls: 659 -sl_realloc calls: 0 -mseg_alloc calls: 2 -mseg_dealloc calls: 2 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 1 6337 6337 -mbcs blocks[sl_alloc] size: 112 1263320 1263320 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 3 3 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 1343488 1343488 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 11588 -sl_free calls: 11587 -sl_realloc calls: 1 -mseg_alloc calls: 19 -mseg_dealloc calls: 19 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 1 1 -mbcs blocks[sl_alloc] size: 0 64 64 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 1 -sl_free calls: 1 -sl_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 0 -sl_free calls: 0 -sl_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 0 -sl_free calls: 0 -sl_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 0 -sl_free calls: 0 -sl_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 156 156 -mbcs blocks[sl_alloc] size: 0 137448 137448 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 294912 294912 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 279 -sl_free calls: 279 -sl_realloc calls: 0 -mseg_alloc calls: 1 -mseg_dealloc calls: 1 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 261 261 -mbcs blocks[sl_alloc] size: 0 214552 214552 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 294912 294912 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 619 -sl_free calls: 619 -sl_realloc calls: 1 -mseg_alloc calls: 1 -mseg_dealloc calls: 1 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:sl_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 80 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: S -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 166 166 -mbcs blocks[sl_alloc] size: 0 139368 139368 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 294912 294912 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -sl_alloc calls: 411 -sl_free calls: 411 -sl_realloc calls: 0 -mseg_alloc calls: 1 -mseg_dealloc calls: 1 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 41 45 45 -mbcs blocks[std_alloc] size: 399040 406936 406936 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 2 2 2 -mbcs mseg carriers: 1 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 557056 557056 557056 -mbcs mseg carriers size: 524288 -mbcs sys_alloc carriers size: 32768 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 65 -std_free calls: 24 -std_realloc calls: 1 -mseg_alloc calls: 1 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 199 201 201 -mbcs blocks[std_alloc] size: 72664 79840 79840 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 2 2 2 -mbcs mseg carriers: 1 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 294912 294912 294912 -mbcs mseg carriers size: 262144 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 799 -std_free calls: 600 -std_realloc calls: 1 -mseg_alloc calls: 1 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 1 1 -mbcs blocks[std_alloc] size: 64 64 64 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 1 -std_free calls: 0 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 1 1 -mbcs blocks[std_alloc] size: 64 64 64 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 1 -std_free calls: 0 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 1 1 -mbcs blocks[std_alloc] size: 64 64 64 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 1 -std_free calls: 0 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 1 1 -mbcs blocks[std_alloc] size: 64 64 64 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 1 -std_free calls: 0 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 2 2 -mbcs blocks[std_alloc] size: 64 7232 7232 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 6 -std_free calls: 5 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 2 2 -mbcs blocks[std_alloc] size: 64 7232 7232 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 9 -std_free calls: 8 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:std_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: D -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 1 2 2 -mbcs blocks[std_alloc] size: 64 7232 7232 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -std_alloc calls: 11 -std_free calls: 10 -std_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 3909 3914 3914 -mbcs blocks[ll_alloc] size: 10112144 10146648 10146648 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 4 4 4 -mbcs mseg carriers: 3 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 12058624 12058624 12058624 -mbcs mseg carriers size: 11534336 -mbcs sys_alloc carriers size: 524288 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 3916 -ll_free calls: 7 -ll_realloc calls: 0 -mseg_alloc calls: 3 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 11782 11782 11782 -mbcs blocks[ll_alloc] size: 1693840 1693840 1693840 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 3 3 3 -mbcs mseg carriers: 2 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 1835008 1835008 1835008 -mbcs mseg carriers size: 1310720 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 11784 -ll_free calls: 2 -ll_realloc calls: 0 -mseg_alloc calls: 2 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 0 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 0 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 0 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 0 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 668 668 668 -mbcs blocks[ll_alloc] size: 108808 108808 108808 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 668 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 1126 1126 1126 -mbcs blocks[ll_alloc] size: 113352 113352 113352 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 1126 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ll_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 524288 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 85 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: L -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 620 620 620 -mbcs blocks[ll_alloc] size: 56672 56672 56672 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 524288 524288 524288 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 524288 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ll_alloc calls: 620 -ll_free calls: 0 -ll_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 23 69 69 -mbcs blocks[eheap_alloc] size: 309312 314576 314576 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 2 2 2 -mbcs mseg carriers: 1 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 393216 393216 393216 -mbcs mseg carriers size: 262144 -mbcs sys_alloc carriers size: 131072 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 101 -eheap_free calls: 78 -eheap_realloc calls: 0 -mseg_alloc calls: 1 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 95 104 104 -mbcs blocks[eheap_alloc] size: 1355616 2466824 2466824 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 4 4 4 -mbcs mseg carriers: 3 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 3538944 3538944 3538944 -mbcs mseg carriers size: 3407872 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 1 3 3 -sbcs blocks[eheap_alloc] size: 2545504 5091008 5091008 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 1 3 3 -sbcs mseg carriers: 1 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 2555904 5128192 5128192 -sbcs mseg carriers size: 2555904 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 1377 -eheap_free calls: 1281 -eheap_realloc calls: 139 -mseg_alloc calls: 8 -mseg_dealloc calls: 4 -mseg_realloc calls: 2 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 0 -eheap_free calls: 0 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 0 -eheap_free calls: 0 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 0 -eheap_free calls: 0 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 0 -eheap_free calls: 0 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 2 2 -mbcs blocks[eheap_alloc] size: 0 55336 55336 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 2 -eheap_free calls: 2 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 1 2 2 -mbcs blocks[eheap_alloc] size: 72 2800 2800 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 131072 131072 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 3 -eheap_free calls: 2 -eheap_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:eheap_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 50 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 131072 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 45 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: H -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 13 13 -mbcs blocks[eheap_alloc] size: 0 651688 651688 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 3 3 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 131072 1441792 1441792 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 131072 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -eheap_alloc calls: 30 -eheap_free calls: 30 -eheap_realloc calls: 1 -mseg_alloc calls: 2 -mseg_dealloc calls: 2 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 0 0 0 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 0 -mbcs carriers size: 0 0 0 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 0 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 633 633 633 -mbcs blocks[ets_alloc] size: 469536 469536 469536 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 3 3 3 -mbcs mseg carriers: 2 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 1343488 1343488 1343488 -mbcs mseg carriers size: 1310720 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 634 -ets_free calls: 1 -ets_realloc calls: 9 -mseg_alloc calls: 2 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:ets_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: E -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -ets_alloc calls: 0 -ets_free calls: 0 -ets_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -fix type: enif_select_data_state 0 0 -fix type: driver_select_data_state 0 0 -fix type: link 0 0 -fix type: monitor 0 0 -fix type: sl_thr_q_element 448 0 -fix type: process_signal_queue_buffers 0 0 -fix type: magic_indirection 0 0 -fix type: nsched_pid_ref_entry 0 0 -fix type: nsched_magic_ref_entry 0 0 -fix type: bif_timer 0 0 -fix type: hl_ptimer 0 0 -fix type: ll_ptimer 0 0 -fix type: msg_ref 48 48 -fix type: receive_marker_block 0 0 -fix type: proc 4704 4704 -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 35 35 35 -mbcs blocks[fix_alloc] size: 6608 6608 6608 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 189 -fix_free calls: 182 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 267 267 267 -mbcs blocks[fix_alloc] size: 71072 71072 71072 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 2 2 2 -mbcs mseg carriers: 1 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 294912 294912 294912 -mbcs mseg carriers size: 262144 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 629 -fix_free calls: 399 -fix_realloc calls: 0 -mseg_alloc calls: 1 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:fix_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: false -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: F -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -fix_alloc calls: 0 -fix_free calls: 0 -fix_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:literal_alloc -versions: 0.9 3.0 -option e: true -option t: false -option ramv: false -option atags: false -option sbct: 18446744073709551615 -option asbcst: 0 -option rsbcst: 0 -option rsbcmt: 0 -option rmbcmt: 0 -option mmbcs: 1048576 -option mmsbc: 0 -option mmmbc: 18446744073709551615 -option lmbcs: 10485760 -option smbcs: 1048576 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aobf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 209 209 209 -mbcs blocks[literal_alloc] size: 1447384 1447384 1447384 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 2 2 2 -mbcs mseg carriers: 2 -mbcs sys_alloc carriers: 0 -mbcs carriers size: 2097152 2097152 2097152 -mbcs mseg carriers size: 2097152 -mbcs sys_alloc carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -literal_alloc calls: 212 -literal_free calls: 3 -literal_realloc calls: 0 -mseg_alloc calls: 2 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 0 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 40 76 76 -mbcs blocks[binary_alloc] size: 459064 1258696 1258696 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 3 3 3 -mbcs mseg carriers: 2 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 1343488 1343488 1343488 -mbcs mseg carriers size: 1310720 -mbcs sys_alloc carriers size: 32768 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 1 1 -sbcs blocks[binary_alloc] size: 0 823888 823888 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 1 1 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 835584 835584 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 409 -binary_free calls: 369 -binary_realloc calls: 4 -mseg_alloc calls: 9 -mseg_dealloc calls: 7 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 30 143 143 -mbcs blocks[binary_alloc] size: 13056 47272 47272 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 2 2 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 294912 294912 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 15 -mbcs_pool blocks[binary_alloc] size: 3120 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 1 -mbcs_pool carriers size: 262144 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 3105 -binary_free calls: 3060 -binary_realloc calls: 23 -mseg_alloc calls: 1 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 0 -binary_free calls: 0 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 0 -binary_free calls: 0 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 0 -binary_free calls: 0 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 0 -binary_free calls: 0 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 78 78 -mbcs blocks[binary_alloc] size: 0 12416 12416 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 82 -binary_free calls: 82 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 26 26 -mbcs blocks[binary_alloc] size: 0 6568 6568 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 32 -binary_free calls: 32 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:binary_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: B -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 143 143 -mbcs blocks[binary_alloc] size: 0 21808 21808 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -binary_alloc calls: 204 -binary_free calls: 204 -binary_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[0] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 0 -option acful: 0 -option acnl: 0 -option acfml: 0 -option cp: undefined -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 37 37 37 -mbcs blocks[driver_alloc] size: 8096 8096 8096 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 38 -driver_free calls: 1 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[1] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 17 18 18 -mbcs blocks[driver_alloc] size: 4496 15456 15456 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 26 -driver_free calls: 9 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[2] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[3] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[4] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[5] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[6] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[7] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:driver_alloc[8] -versions: 0.9 3.0 -option e: true -option t: 9 -option ramv: false -option atags: true -option sbct: 524288 -option asbcst: 4145152 -option rsbcst: 20 -option rsbcmt: 80 -option rmbcmt: 50 -option mmbcs: 32768 -option mmsbc: 256 -option mmmbc: 18446744073709551615 -option lmbcs: 5242880 -option smbcs: 262144 -option mbcgs: 10 -option acul: 60 -option acful: 0 -option acnl: 1000 -option acfml: 0 -option cp: R -option as: aoffcbf -mbcs blocks[sys_alloc] count: 0 0 0 -mbcs blocks[sys_alloc] size: 0 0 0 -mbcs blocks[temp_alloc] count: 0 0 0 -mbcs blocks[temp_alloc] size: 0 0 0 -mbcs blocks[sl_alloc] count: 0 0 0 -mbcs blocks[sl_alloc] size: 0 0 0 -mbcs blocks[std_alloc] count: 0 0 0 -mbcs blocks[std_alloc] size: 0 0 0 -mbcs blocks[ll_alloc] count: 0 0 0 -mbcs blocks[ll_alloc] size: 0 0 0 -mbcs blocks[eheap_alloc] count: 0 0 0 -mbcs blocks[eheap_alloc] size: 0 0 0 -mbcs blocks[ets_alloc] count: 0 0 0 -mbcs blocks[ets_alloc] size: 0 0 0 -mbcs blocks[fix_alloc] count: 0 0 0 -mbcs blocks[fix_alloc] size: 0 0 0 -mbcs blocks[literal_alloc] count: 0 0 0 -mbcs blocks[literal_alloc] size: 0 0 0 -mbcs blocks[binary_alloc] count: 0 0 0 -mbcs blocks[binary_alloc] size: 0 0 0 -mbcs blocks[driver_alloc] count: 0 0 0 -mbcs blocks[driver_alloc] size: 0 0 0 -mbcs blocks[test_alloc] count: 0 0 0 -mbcs blocks[test_alloc] size: 0 0 0 -mbcs carriers: 1 1 1 -mbcs mseg carriers: 0 -mbcs sys_alloc carriers: 1 -mbcs carriers size: 32768 32768 32768 -mbcs mseg carriers size: 0 -mbcs sys_alloc carriers size: 32768 -mbcs_pool blocks[sys_alloc] count: 0 -mbcs_pool blocks[sys_alloc] size: 0 -mbcs_pool blocks[temp_alloc] count: 0 -mbcs_pool blocks[temp_alloc] size: 0 -mbcs_pool blocks[sl_alloc] count: 0 -mbcs_pool blocks[sl_alloc] size: 0 -mbcs_pool blocks[std_alloc] count: 0 -mbcs_pool blocks[std_alloc] size: 0 -mbcs_pool blocks[ll_alloc] count: 0 -mbcs_pool blocks[ll_alloc] size: 0 -mbcs_pool blocks[eheap_alloc] count: 0 -mbcs_pool blocks[eheap_alloc] size: 0 -mbcs_pool blocks[ets_alloc] count: 0 -mbcs_pool blocks[ets_alloc] size: 0 -mbcs_pool blocks[fix_alloc] count: 0 -mbcs_pool blocks[fix_alloc] size: 0 -mbcs_pool blocks[literal_alloc] count: 0 -mbcs_pool blocks[literal_alloc] size: 0 -mbcs_pool blocks[binary_alloc] count: 0 -mbcs_pool blocks[binary_alloc] size: 0 -mbcs_pool blocks[driver_alloc] count: 0 -mbcs_pool blocks[driver_alloc] size: 0 -mbcs_pool blocks[test_alloc] count: 0 -mbcs_pool blocks[test_alloc] size: 0 -mbcs_pool carriers: 0 -mbcs_pool carriers size: 0 -sbcs blocks[sys_alloc] count: 0 0 0 -sbcs blocks[sys_alloc] size: 0 0 0 -sbcs blocks[temp_alloc] count: 0 0 0 -sbcs blocks[temp_alloc] size: 0 0 0 -sbcs blocks[sl_alloc] count: 0 0 0 -sbcs blocks[sl_alloc] size: 0 0 0 -sbcs blocks[std_alloc] count: 0 0 0 -sbcs blocks[std_alloc] size: 0 0 0 -sbcs blocks[ll_alloc] count: 0 0 0 -sbcs blocks[ll_alloc] size: 0 0 0 -sbcs blocks[eheap_alloc] count: 0 0 0 -sbcs blocks[eheap_alloc] size: 0 0 0 -sbcs blocks[ets_alloc] count: 0 0 0 -sbcs blocks[ets_alloc] size: 0 0 0 -sbcs blocks[fix_alloc] count: 0 0 0 -sbcs blocks[fix_alloc] size: 0 0 0 -sbcs blocks[literal_alloc] count: 0 0 0 -sbcs blocks[literal_alloc] size: 0 0 0 -sbcs blocks[binary_alloc] count: 0 0 0 -sbcs blocks[binary_alloc] size: 0 0 0 -sbcs blocks[driver_alloc] count: 0 0 0 -sbcs blocks[driver_alloc] size: 0 0 0 -sbcs blocks[test_alloc] count: 0 0 0 -sbcs blocks[test_alloc] size: 0 0 0 -sbcs carriers: 0 0 0 -sbcs mseg carriers: 0 -sbcs sys_alloc carriers: 0 -sbcs carriers size: 0 0 0 -sbcs mseg carriers size: 0 -sbcs sys_alloc carriers size: 0 -driver_alloc calls: 0 -driver_free calls: 0 -driver_realloc calls: 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -sys_alloc calls: 1 -sys_free calls: 0 -sys_realloc calls: 0 -=allocator:test_alloc -option e: false -=allocator:mseg_alloc[0] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 2 -cache_hits: 7 -segments: 7 8 8 -segments_watermark: 8 -segments_size: 13631488 14467072 14467072 -mseg_alloc calls: 16 -mseg_dealloc calls: 9 -mseg_realloc calls: 0 -mseg_create calls: 9 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[1] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 5 -cache_hits: 23 -segments: 11 13 13 -segments_watermark: 13 -segments_size: 9371648 11681792 11681792 -mseg_alloc calls: 38 -mseg_dealloc calls: 27 -mseg_realloc calls: 2 -mseg_create calls: 15 -mseg_create_resize calls: 0 -mseg_destroy calls: 1 -mseg_recreate calls: 1 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[2] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 0 -cache_hits: 0 -segments: 0 0 0 -segments_watermark: 0 -segments_size: 0 0 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -mseg_create calls: 0 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[3] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 0 -cache_hits: 0 -segments: 0 0 0 -segments_watermark: 0 -segments_size: 0 0 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -mseg_create calls: 0 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[4] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 0 -cache_hits: 0 -segments: 0 0 0 -segments_watermark: 0 -segments_size: 0 0 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -mseg_create calls: 0 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[5] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 0 -cache_hits: 0 -segments: 0 0 0 -segments_watermark: 0 -segments_size: 0 0 0 -mseg_alloc calls: 0 -mseg_dealloc calls: 0 -mseg_realloc calls: 0 -mseg_create calls: 0 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[6] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 1 -cache_hits: 0 -segments: 0 1 1 -segments_watermark: 1 -segments_size: 0 262144 262144 -mseg_alloc calls: 1 -mseg_dealloc calls: 1 -mseg_realloc calls: 0 -mseg_create calls: 1 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[7] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 1 -cache_hits: 0 -segments: 0 1 1 -segments_watermark: 1 -segments_size: 0 262144 262144 -mseg_alloc calls: 1 -mseg_dealloc calls: 1 -mseg_realloc calls: 0 -mseg_create calls: 1 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:mseg_alloc[8] -version: 0.9 -option amcbf: 4194304 -option rmcbf: 20 -option mcs: 10 -memory kind: all memory -cached_segments: 3 -cache_hits: 0 -segments: 0 3 3 -segments_watermark: 3 -segments_size: 0 1572864 1572864 -mseg_alloc calls: 3 -mseg_dealloc calls: 3 -mseg_realloc calls: 0 -mseg_create calls: 3 -mseg_create_resize calls: 0 -mseg_destroy calls: 0 -mseg_recreate calls: 0 -mseg_clear_cache calls: 0 -mseg_check_cache calls: 0 -=allocator:erts_mmap.default_mmap -option scs: 0 -os mmap size used: 29966336 -=allocator:erts_mmap.literal_mmap -option scs: 1073676288 -option sco: true -option scrpm: false -option scrfsd: 1024 -supercarrier total size: 1073741824 -supercarrier total sa size: 2097152 -supercarrier total sua size: 0 -supercarrier used size: 2162688 -supercarrier used sa size: 2097152 -supercarrier used sua size: 0 -supercarrier used free segs: 0 -supercarrier max free segs: 0 -supercarrier allocated free segs: 0 -supercarrier reserved free segs: 1024 -supercarrier sa free segs: 0 -supercarrier sua free segs: 0 -=allocator:alloc_util -option mmc: 18446744073709551615 -option ycs: 1048576 -option sac: true -=allocator:instr -=proc:<0.0.0> -State: Running -Name: init -Spawned as: erl_init:start/2 -Spawned by: [] -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.10.0>, <0.44.0>, <0.42.0>] -Reductions: 10269 -Stack+heap: 2586 -OldHeap: 4185 -Heap unused: 1928 -OldHeap unused: 2458 -BinVHeap: 0 -OldBinVHeap: 169 -BinVHeap unused: 46422 -OldBinVHeap unused: 46253 -Memory: 55072 -Program counter: 0x0000000103d889fc (init:boot_loop/2 + 84) -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | ACTIVE | RUNNING | ACTIVE_SYS -=proc:<0.1.0> -State: Waiting -Name: erts_code_purger -Spawned as: erts_code_purger:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 11 -Reductions: 23 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 228 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2736 -Program counter: 0x0000000103d82874 (erts_code_purger:wait_for_request/0 + 68) -arity = 0 -Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ -=proc:<0.2.0> -State: Waiting -Spawned as: erts_literal_area_collector:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 7 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103e01368 (erts_literal_area_collector:msg_loop/4 + 136) -arity = 0 -Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ -=proc:<0.3.0> -State: Waiting -Spawned as: erts_dirty_process_signal_handler:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 7 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ -=proc:<0.4.0> -State: Waiting -Spawned as: erts_dirty_process_signal_handler:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 7 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) -arity = 0 -Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | OFF_HEAP_MSGQ -=proc:<0.5.0> -State: Waiting -Spawned as: erts_dirty_process_signal_handler:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 7 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103e025f8 (erts_dirty_process_signal_handler:msg_loop/0 + 80) -arity = 0 -Internal State: ACT_PRIO_MAX | USR_PRIO_MAX | PRQ_PRIO_MAX | OFF_HEAP_MSGQ -=proc:<0.6.0> -State: Waiting -Spawned as: prim_file:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 6 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103daf94c (prim_file:helper_loop/0 + 68) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.7.0> -State: Waiting -Name: socket_registry -Spawned as: socket_registry:start/0 -Spawned by: <0.0.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Reductions: 8 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 233 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2648 -Program counter: 0x0000000103dbe314 (socket_registry:loop/1 + 84) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.10.0> -State: Waiting -Name: erl_prim_loader -Spawned as: erlang:apply/2 -Spawned by: <0.9.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.0.0>] -Reductions: 468281 -Stack+heap: 6772 -OldHeap: 10958 -Heap unused: 3381 -OldHeap unused: 5568 -BinVHeap: 313 -OldBinVHeap: 0 -BinVHeap unused: 46109 -OldBinVHeap unused: 46422 -Memory: 142752 -Program counter: 0x0000000103dd7c4c (erl_prim_loader:loop/3 + 100) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.42.0> -State: Waiting -Name: logger -Spawned as: proc_lib:init_p/5 -Spawned by: <0.9.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.0.0>] -Reductions: 883 -Stack+heap: 1598 -OldHeap: 376 -Heap unused: 1120 -OldHeap unused: 331 -BinVHeap: 100 -OldBinVHeap: 4 -BinVHeap unused: 46322 -OldBinVHeap unused: 46418 -Memory: 16792 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.44.0> -State: Waiting -Name: application_controller -Spawned as: erlang:apply/2 -Spawned by: <0.9.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 8 -Link list: [<0.0.0>, <0.90.0>, <0.102.0>, <0.46.0>] -Reductions: 92245 -Stack+heap: 28690 -OldHeap: 46422 -Heap unused: 12854 -OldHeap unused: 17270 -BinVHeap: 24 -OldBinVHeap: 0 -BinVHeap unused: 46398 -OldBinVHeap unused: 46422 -Memory: 602080 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.46.0> -State: Waiting -Spawned as: proc_lib:init_p/5 -Spawned by: <0.45.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.44.0>, <0.47.0>] -Reductions: 40 -Stack+heap: 376 -OldHeap: 0 -Heap unused: 29 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 3960 -Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.47.0> -State: Waiting -Spawned as: application_master:start_it/4 -Spawned by: <0.46.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>, <0.46.0>] -Reductions: 545 -Stack+heap: 376 -OldHeap: 376 -Heap unused: 336 -OldHeap unused: 370 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 6880 -Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.49.0> -State: Waiting -Name: kernel_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.47.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 4 -Link list: [<0.47.0>, <0.51.0>, <0.50.0>, <0.55.0>, <0.58.0>, <0.56.0>, <0.63.0>, <0.70.0>, <0.75.0>, <0.74.0>, <0.73.0>, <0.64.0>, <0.61.0>, <0.53.0>] -Reductions: 3772 -Stack+heap: 2586 -OldHeap: 2586 -Heap unused: 618 -OldHeap unused: 2304 -BinVHeap: 8812 -OldBinVHeap: 0 -BinVHeap unused: 37610 -OldBinVHeap unused: 46422 -Memory: 42840 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.50.0> -State: Waiting -Name: code_server -Spawned as: erlang:apply/2 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 221248 -Stack+heap: 28690 -OldHeap: 318187 -Heap unused: 24392 -OldHeap unused: 271366 -BinVHeap: 3930 -OldBinVHeap: 0 -BinVHeap unused: 42492 -OldBinVHeap unused: 46422 -Memory: 2775928 -Program counter: 0x0000000103ee8404 (code_server:loop/1 + 132) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.51.0> -State: Waiting -Name: standard_error_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.52.0>, <0.49.0>] -Reductions: 57 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 128 -OldHeap unused: 0 -BinVHeap: 20 -OldBinVHeap: 0 -BinVHeap unused: 46402 -OldBinVHeap unused: 46422 -Memory: 2816 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.52.0> -State: Waiting -Name: standard_error -Spawned as: erlang:apply/2 -Spawned by: <0.51.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [#Port<0.1>, <0.51.0>] -Reductions: 134 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 118 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2816 -Program counter: 0x0000000103fbbafc (standard_error:server_loop/1 + 76) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.53.0> -State: Waiting -Name: file_server_2 -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 1025 -Stack+heap: 987 -OldHeap: 610 -Heap unused: 685 -OldHeap unused: 575 -BinVHeap: 7 -OldBinVHeap: 0 -BinVHeap unused: 46415 -OldBinVHeap unused: 46422 -Memory: 13776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.55.0> -State: Waiting -Name: inet_db -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 420 -Stack+heap: 376 -OldHeap: 610 -Heap unused: 108 -OldHeap unused: 562 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 8888 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.56.0> -State: Waiting -Name: rex -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>, {to,<0.57.0>,#Ref<0.3756053351.4210294785.45059>}] -Reductions: 41 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 149 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2840 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ -=proc:<0.57.0> -State: Waiting -Spawned as: erlang:apply/2 -Spawned by: <0.56.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 6 -Link list: [{from,<0.56.0>,#Ref<0.3756053351.4210294785.45059>}] -Reductions: 69 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 12 -OldHeap unused: 0 -BinVHeap: 11010 -OldBinVHeap: 0 -BinVHeap unused: 35412 -OldBinVHeap unused: 46422 -Memory: 2908 -Program counter: 0x0000000103ff2290 (rpc:nodes_observer_loop/1 + 88) -arity = 0 -Internal State: ACT_PRIO_HIGH | USR_PRIO_HIGH | PRQ_PRIO_HIGH | MAYBE_SELF_SIGS -=proc:<0.58.0> -State: Waiting -Name: global_name_server -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 1 -Heap fragment data: 4 -Link list: [<0.49.0>, <0.60.0>, <0.59.0>] -Reductions: 318 -Stack+heap: 610 -OldHeap: 610 -Heap unused: 345 -OldHeap unused: 559 -BinVHeap: 3003 -OldBinVHeap: 0 -BinVHeap unused: 43419 -OldBinVHeap unused: 46422 -Memory: 10932 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.59.0> -State: Waiting -Spawned as: erlang:apply/2 -Spawned by: <0.58.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.58.0>] -Reductions: 39 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 177 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2688 -Program counter: 0x0000000104002e4c (global:loop_the_locker/1 + 484) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.60.0> -State: Waiting -Spawned as: erlang:apply/2 -Spawned by: <0.58.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.58.0>] -Reductions: 7 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 231 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2688 -Program counter: 0x0000000104009898 (global:loop_the_registrar/0 + 80) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.61.0> -State: Waiting -Name: global_group -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.62.0>, <0.49.0>] -Reductions: 112 -Stack+heap: 376 -OldHeap: 0 -Heap unused: 94 -OldHeap unused: 0 -BinVHeap: 4276 -OldBinVHeap: 0 -BinVHeap unused: 42146 -OldBinVHeap unused: 46422 -Memory: 4020 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_MAX | USR_PRIO_MAX | PRQ_PRIO_MAX -=proc:<0.62.0> -State: Waiting -Name: global_group_check -Spawned as: erlang:apply/2 -Spawned by: <0.61.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.61.0>] -Reductions: 6 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 231 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2688 -Program counter: 0x0000000104040eec (global_group:global_group_check_dispatcher/0 + 68) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.63.0> -State: Waiting -Name: erl_signal_server -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 48 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 157 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103edb214 (gen_event:fetch_msg/6 + 84) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.64.0> -State: Waiting -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.69.0>, <0.49.0>] -Reductions: 213 -Stack+heap: 4185 -OldHeap: 0 -Heap unused: 387 -OldHeap unused: 0 -BinVHeap: 15452 -OldBinVHeap: 0 -BinVHeap unused: 30970 -OldBinVHeap unused: 46422 -Memory: 34432 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.65.0> -State: Waiting -Name: user_drv -Spawned as: proc_lib:init_p/5 -Spawned by: <0.64.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.67.0>, <0.69.0>, <0.68.0>] -Reductions: 655 -Stack+heap: 610 -OldHeap: 610 -Heap unused: 208 -OldHeap unused: 487 -BinVHeap: 0 -OldBinVHeap: 82 -BinVHeap unused: 46422 -OldBinVHeap unused: 46340 -Memory: 10752 -Program counter: 0x000000010405efc0 (gen_statem:loop_receive/3 + 136) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.67.0> -State: Waiting -Name: user_drv_writer -Spawned as: proc_lib:init_p/5 -Spawned by: <0.65.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.65.0>] -Reductions: 36 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 164 -OldHeap unused: 0 -BinVHeap: 2 -OldBinVHeap: 0 -BinVHeap unused: 46420 -OldBinVHeap unused: 46422 -Memory: 2864 -Program counter: 0x000000010406d4b4 (prim_tty:writer_loop/2 + 84) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.68.0> -State: Waiting -Name: user_drv_reader -Spawned as: proc_lib:init_p/5 -Spawned by: <0.65.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.65.0>, {from,{prim_tty,tty},#Ref<0.3756053351.4210294785.45124>}] -Reductions: 33 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 165 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2848 -Program counter: 0x000000010406c5f4 (prim_tty:reader_loop/6 + 92) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.69.0> -State: Waiting -Name: user -Spawned as: group:server/4 -Spawned by: <0.65.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.64.0>, <0.65.0>] -Reductions: 287 -Stack+heap: 376 -OldHeap: 376 -Heap unused: 35 -OldHeap unused: 365 -BinVHeap: 2703 -OldBinVHeap: 0 -BinVHeap unused: 43719 -OldBinVHeap unused: 46422 -Memory: 6984 -Program counter: 0x0000000104081600 (group:server_loop/3 + 80) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.70.0> -State: Waiting -Name: logger_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>, <0.72.0>, <0.105.0>, <0.77.0>, <0.71.0>] -Reductions: 556 -Stack+heap: 376 -OldHeap: 376 -Heap unused: 144 -OldHeap unused: 279 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 7088 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.71.0> -State: Waiting -Name: logger_handler_watcher -Spawned as: proc_lib:init_p/5 -Spawned by: <0.70.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.70.0>, {to,<0.105.0>,#Ref<0.3756053351.4210294785.45416>}, {to,<0.77.0>,#Ref<0.3756053351.4210294785.45193>}] -Reductions: 81 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 84 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2904 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.72.0> -State: Scheduled -Name: logger_proxy -Spawned as: proc_lib:init_p/5 -Current call: logger_olp:handle_info/2 -Spawned by: <0.70.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 1494 -Link list: [<0.70.0>] -Reductions: 104 -Stack+heap: 376 -OldHeap: 0 -Heap unused: 211 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 15872 -Program counter: 0x0000000103f753c0 (logger_olp:handle_info/2 + 48) -arity = 2 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | IN_PRQ_NORMAL | ACTIVE | IN_RUNQ | OFF_HEAP_MSGQ -=proc:<0.73.0> -State: Waiting -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 59 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 143 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.74.0> -State: Waiting -Name: kernel_refc -Spawned as: proc_lib:init_p/5 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 3 -Link list: [<0.49.0>] -Reductions: 72 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 140 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2800 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.75.0> -State: Waiting -Name: kernel_safe_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.49.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.49.0>] -Reductions: 90 -Stack+heap: 52 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1328 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.77.0> -State: Waiting -Name: logger_std_h_default -Spawned as: proc_lib:init_p/5 -Spawned by: <0.70.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.78.0>, <0.70.0>, {from,<0.71.0>,#Ref<0.3756053351.4210294785.45193>}] -Reductions: 181 -Stack+heap: 610 -OldHeap: 610 -Heap unused: 546 -OldHeap unused: 516 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 10776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ -=proc:<0.78.0> -State: Waiting -Spawned as: erlang:apply/2 -Spawned by: <0.77.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.77.0>] -Reductions: 9 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 209 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2688 -Program counter: 0x00000001040ba3ac (logger_std_h:file_ctrl_loop/1 + 84) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.90.0> -State: Waiting -Spawned as: proc_lib:init_p/5 -Spawned by: <0.89.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.44.0>, <0.91.0>] -Reductions: 41 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 12 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2816 -Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.91.0> -State: Waiting -Spawned as: application_master:start_it/4 -Spawned by: <0.90.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.92.0>, <0.90.0>] -Reductions: 141 -Stack+heap: 610 -OldHeap: 987 -Heap unused: 358 -OldHeap unused: 984 -BinVHeap: 504 -OldBinVHeap: 0 -BinVHeap unused: 45918 -OldBinVHeap unused: 46422 -Memory: 13640 -Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.92.0> -State: Waiting -Name: inets_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.91.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.91.0>, <0.97.0>, <0.93.0>] -Reductions: 347 -Stack+heap: 96 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1760 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.93.0> -State: Waiting -Name: httpc_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.92.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.92.0>, <0.96.0>, <0.94.0>] -Reductions: 336 -Stack+heap: 94 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1744 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.94.0> -State: Waiting -Name: httpc_profile_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.93.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.95.0>, <0.93.0>] -Reductions: 260 -Stack+heap: 84 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1624 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.95.0> -State: Waiting -Name: httpc_manager -Spawned as: proc_lib:init_p/5 -Spawned by: <0.94.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.94.0>] -Reductions: 174 -Stack+heap: 610 -OldHeap: 610 -Heap unused: 217 -OldHeap unused: 568 -BinVHeap: 2781 -OldBinVHeap: 0 -BinVHeap unused: 43641 -OldBinVHeap unused: 46422 -Memory: 10760 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.96.0> -State: Waiting -Name: httpc_handler_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.93.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.93.0>] -Reductions: 94 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 37 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.97.0> -State: Waiting -Name: httpd_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.92.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.92.0>] -Reductions: 71 -Stack+heap: 54 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1344 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.102.0> -State: Waiting -Spawned as: proc_lib:init_p/5 -Spawned by: <0.101.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.44.0>, <0.103.0>] -Reductions: 59 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 26 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2816 -Program counter: 0x0000000103eb6264 (application_master:main_loop/2 + 76) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.103.0> -State: Waiting -Spawned as: application_master:start_it/4 -Spawned by: <0.102.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.107.0>, <0.102.0>] -Reductions: 325 -Stack+heap: 987 -OldHeap: 987 -Heap unused: 741 -OldHeap unused: 984 -BinVHeap: 317 -OldBinVHeap: 0 -BinVHeap unused: 46105 -OldBinVHeap unused: 46422 -Memory: 16656 -Program counter: 0x0000000103eb7b08 (application_master:loop_it/4 + 88) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.105.0> -State: Waiting -Name: logger_std_h_ssl_handler -Spawned as: proc_lib:init_p/5 -Spawned by: <0.70.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.106.0>, <0.70.0>, {from,<0.71.0>,#Ref<0.3756053351.4210294785.45416>}] -Reductions: 183 -Stack+heap: 610 -OldHeap: 610 -Heap unused: 496 -OldHeap unused: 516 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 10776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | OFF_HEAP_MSGQ -=proc:<0.106.0> -State: Waiting -Spawned as: erlang:apply/2 -Spawned by: <0.105.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.105.0>] -Reductions: 9 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 209 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2688 -Program counter: 0x00000001040ba3ac (logger_std_h:file_ctrl_loop/1 + 84) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.107.0> -State: Waiting -Name: ssl_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.103.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.103.0>, <0.112.0>, <0.108.0>] -Reductions: 342 -Stack+heap: 82 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1648 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.108.0> -State: Waiting -Name: ssl_admin_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.107.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.107.0>, <0.111.0>, <0.110.0>, <0.109.0>] -Reductions: 487 -Stack+heap: 112 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1928 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.109.0> -State: Waiting -Name: ssl_pem_cache -Spawned as: proc_lib:init_p/5 -Spawned by: <0.108.0> -Message queue length: 0 -Number of heap fragments: 1 -Heap fragment data: 0 -Link list: [<0.108.0>] -Reductions: 99 -Stack+heap: 376 -OldHeap: 0 -Heap unused: 101 -OldHeap unused: 0 -BinVHeap: 3373 -OldBinVHeap: 0 -BinVHeap unused: 43049 -OldBinVHeap unused: 46422 -Memory: 4008 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.110.0> -State: Waiting -Name: ssl_manager -Spawned as: proc_lib:init_p/5 -Spawned by: <0.108.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.108.0>] -Reductions: 179 -Stack+heap: 610 -OldHeap: 987 -Heap unused: 288 -OldHeap unused: 944 -BinVHeap: 1821 -OldBinVHeap: 0 -BinVHeap unused: 44601 -OldBinVHeap unused: 46422 -Memory: 13776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.111.0> -State: Waiting -Name: tls_client_ticket_store -Spawned as: proc_lib:init_p/5 -Spawned by: <0.108.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.108.0>] -Reductions: 42 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 147 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.112.0> -State: Waiting -Name: ssl_connection_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.107.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.107.0>, <0.120.0>, <0.113.0>] -Reductions: 321 -Stack+heap: 84 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1664 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.113.0> -State: Waiting -Name: tls_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.112.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.112.0>, <0.115.0>, <0.114.0>] -Reductions: 330 -Stack+heap: 86 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1680 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.114.0> -State: Waiting -Name: tls_connection_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.113.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.113.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.115.0> -State: Waiting -Name: tls_server_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.113.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.113.0>, <0.117.0>, <0.119.0>, <0.118.0>, <0.116.0>] -Reductions: 653 -Stack+heap: 116 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2000 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.116.0> -State: Waiting -Name: ssl_listen_tracker_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.115.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.115.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.117.0> -State: Waiting -Name: tls_server_session_ticket_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.115.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.115.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.118.0> -State: Waiting -Name: ssl_server_session_cache_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.115.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.115.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.119.0> -State: Waiting -Name: ssl_upgrade_server_session_cache_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.115.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.115.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.120.0> -State: Waiting -Name: dtls_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.112.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.112.0>, <0.122.0>, <0.121.0>] -Reductions: 330 -Stack+heap: 86 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1680 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.121.0> -State: Waiting -Name: dtls_connection_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.120.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.120.0>] -Reductions: 95 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 64 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.122.0> -State: Waiting -Name: dtls_server_sup -Spawned as: proc_lib:init_p/5 -Current call: erlang:hibernate/3 -Spawned by: <0.120.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.120.0>, <0.124.0>, <0.123.0>] -Reductions: 331 -Stack+heap: 88 -OldHeap: 0 -Heap unused: 4 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 1696 -Program counter: 0x0000000103d822c8 (unknown function) -arity = 3 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.123.0> -State: Waiting -Name: dtls_listener_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.122.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.122.0>] -Reductions: 93 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2864 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.124.0> -State: Waiting -Name: dtls_server_session_cache_sup -Spawned as: proc_lib:init_p/5 -Spawned by: <0.122.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.122.0>] -Reductions: 92 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 62 -OldHeap unused: 0 -BinVHeap: 0 -OldBinVHeap: 0 -BinVHeap unused: 46422 -OldBinVHeap unused: 46422 -Memory: 2776 -Program counter: 0x0000000103f1c0d8 (gen_server:loop/7 + 384) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL -=proc:<0.135.0> -State: Scheduled -Spawned as: erlang:apply/2 -Spawned by: <0.9.0> -Message queue length: 0 -Number of heap fragments: 0 -Heap fragment data: 0 -Link list: [<0.9.0>] -Reductions: 111 -Stack+heap: 233 -OldHeap: 0 -Heap unused: 55 -OldHeap unused: 0 -BinVHeap: 1 -OldBinVHeap: 0 -BinVHeap unused: 46421 -OldBinVHeap unused: 46422 -Memory: 13976 -Program counter: 0x00000001041ff698 (gleam_erlang_ffi:select/2 + 192) -arity = 0 -Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | IN_PRQ_NORMAL | IN_RUNQ | SIG_IN_Q | ACTIVE_SYS -=port:#Port<0.0> -State: CONNECTED -Slot: 0 -Connected: <0.0.0> -Port controls forker process: forker -Input: 0 -Output: 0 -Queue: 0 -=port:#Port<0.1> -State: CONNECTED|BINARY_IO -Slot: 8 -Connected: <0.52.0> -Links: <0.52.0> -Port is UNIX fd not opened by emulator: 2/2 -Input: 0 -Output: 0 -Queue: 0 -=ets:<0.42.0> -Slot: 5110497728 -Table: logger -Name: logger -Buckets: 256 -Chain Length Avg: 0.015625 -Chain Length Max: 1 -Chain Length Min: 0 -Chain Length Std Dev: 0.124020 -Chain Length Expected Std Dev: 0.124756 -Fixed: false -Objects: 4 -Words: 6813 -Type: set -Protection: protected -Compressed: false -Write Concurrency: true -Read Concurrency: true -=ets:<0.44.0> -Slot: 5110509560 -Table: ac_tab -Name: ac_tab -Buckets: 256 -Chain Length Avg: 0.136719 -Chain Length Max: 3 -Chain Length Min: 0 -Chain Length Std Dev: 0.386363 -Chain Length Expected Std Dev: 0.369032 -Fixed: false -Objects: 35 -Words: 4094 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: true -=ets:<0.50.0> -Slot: 5110518176 -Table: code_server -Name: code_server -Buckets: 448 -Chain Length Avg: 1.000000 -Chain Length Max: 8 -Chain Length Min: 0 -Chain Length Std Dev: 1.198958 -Chain Length Expected Std Dev: 0.998883 -Fixed: false -Objects: 448 -Words: 34781 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.50.0> -Slot: 4396206480 -Table: code_names -Name: code_names -Buckets: 256 -Chain Length Avg: 0.203125 -Chain Length Max: 3 -Chain Length Min: 0 -Chain Length Std Dev: 0.456881 -Chain Length Expected Std Dev: 0.449813 -Fixed: false -Objects: 52 -Words: 9409 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396326720 -Table: inet_db -Name: inet_db -Buckets: 256 -Chain Length Avg: 0.121094 -Chain Length Max: 3 -Chain Length Min: 0 -Chain Length Std Dev: 0.360371 -Chain Length Expected Std Dev: 0.347305 -Fixed: false -Objects: 31 -Words: 622 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396330840 -Table: inet_cache -Name: inet_cache -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: bag -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396333344 -Table: inet_hosts_byname -Name: inet_hosts_byname -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396335848 -Table: inet_hosts_byaddr -Name: inet_hosts_byaddr -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396338352 -Table: inet_hosts_file_byname -Name: inet_hosts_file_byname -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396340856 -Table: inet_hosts_file_byaddr -Name: inet_hosts_file_byaddr -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.55.0> -Slot: 4396343360 -Table: inet_sockets -Name: inet_sockets -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.57.0> -Slot: 4396353768 -Table: #Ref<0.3756053351.4210425857.45060> -Name: rex_nodes_observer -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 391 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: true -=ets:<0.58.0> -Slot: 4396358992 -Table: global_locks -Name: global_locks -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.58.0> -Slot: 4396361496 -Table: global_names -Name: global_names -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 391 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: true -=ets:<0.58.0> -Slot: 4396364000 -Table: global_names_ext -Name: global_names_ext -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.58.0> -Slot: 4396366504 -Table: global_pid_names -Name: global_pid_names -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: bag -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.58.0> -Slot: 4396369008 -Table: global_pid_ids -Name: global_pid_ids -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: bag -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.58.0> -Slot: 4396371512 -Table: global_lost_connections -Name: global_lost_connections -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.58.0> -Slot: 4396374016 -Table: global_node_resources -Name: global_node_resources -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.95.0> -Slot: 4412439352 -Table: httpc_manager__session_db -Name: httpc_manager__session_db -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.95.0> -Slot: 4412441856 -Table: httpc_manager__handler_db -Name: httpc_manager__handler_db -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.95.0> -Slot: 4412445768 -Table: #Ref<0.3756053351.4210425857.45356> -Name: httpc_manager__session_cookie_db -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: bag -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.109.0> -Slot: 4412458184 -Table: ssl_pem_cache -Name: ssl_pem_cache -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412471664 -Table: #Ref<0.3756053351.4210425857.45462> -Name: client_ssl_otp_session_cache -Ordered set (AVL tree), Elements: 0 -Objects: 0 -Words: 145 -Type: ordered_set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412472840 -Table: #Ref<0.3756053351.4210425857.45463> -Name: ssl_otp_cacertificate_db -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412475344 -Table: #Ref<0.3756053351.4210425857.45464> -Name: ssl_otp_ca_file_ref -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412477848 -Table: #Ref<0.3756053351.4210425857.45465> -Name: ssl_otp_ca_ref_file_mapping -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412480352 -Table: #Ref<0.3756053351.4210425857.45466> -Name: ssl_otp_crl_cache -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.110.0> -Slot: 4412482856 -Table: #Ref<0.3756053351.4210425857.45467> -Name: ssl_otp_crl_issuer_mapping -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: bag -Protection: protected -Compressed: false -Write Concurrency: false -Read Concurrency: false -=ets:<0.123.0> -Slot: 4412505024 -Table: dtls_listener_sup -Name: dtls_listener_sup -Buckets: 256 -Chain Length Avg: 0.000000 -Chain Length Max: 0 -Chain Length Min: 0 -Chain Length Std Dev: 0.000000 -Chain Length Expected Std Dev: 0.000000 -Fixed: false -Objects: 0 -Words: 311 -Type: set -Protection: public -Compressed: false -Write Concurrency: false -Read Concurrency: false -=timer:<0.55.0> -Message: refresh_timeout -Time left: 3599689 -=timer:<0.111.0> -Message: remove_invalid_tickets -Time left: 7199821 -=timer:<0.110.0> -Message: validate_sessions -Time left: 86404820 -=timer:<0.109.0> -Message: clear_pem_cache -Time left: 119817 -=node:'nonode@nohost' -=no_distribution -=loaded_modules -Current code: 6279844 -Old code: 0 -=mod:erts_code_purger -Current size: 13296 -=mod:erl_init -Current size: 2480 -=mod:init -Current size: 65275 -=mod:prim_buffer -Current size: 4936 -=mod:prim_eval -Current size: 1336 -=mod:prim_inet -Current size: 108445 -=mod:prim_file -Current size: 40897 -=mod:zlib -Current size: 19904 -=mod:socket_registry -Current size: 22176 -=mod:prim_socket -Current size: 50952 -=mod:prim_net -Current size: 10816 -=mod:prim_zip -Current size: 24400 -=mod:erl_prim_loader -Current size: 55760 -=mod:erlang -Current size: 102432 -=mod:erts_internal -Current size: 23968 -=mod:erl_tracer -Current size: 1664 -=mod:erts_literal_area_collector -Current size: 4856 -=mod:erts_dirty_process_signal_handler -Current size: 2296 -=mod:atomics -Current size: 3424 -=mod:counters -Current size: 4112 -=mod:persistent_term -Current size: 1456 -=mod:erl_parse -Current size: 324787 -Current attributes: g2wAAAQxaAJ3A3ZzbmwAAAABbhAAWZz93qXsCLw4KSJjM+fEbWpoAncHcmVtb3ZlZGwAAAADaAN3CHNldF9saW5lYQJrABd1c2UgZXJsX2Fubm86c2V0X2xpbmUvMmgDdw5nZXRfYXR0cmlidXRlc2EBawAuZXJsX2Fubm86e2NvbHVtbixsaW5lLGxvY2F0aW9uLHRleHR9LzEgaW5zdGVhZGgDdw1nZXRfYXR0cmlidXRlYQJrAC5lcmxfYW5ubzp7Y29sdW1uLGxpbmUsbG9jYXRpb24sdGV4dH0vMSBpbnN0ZWFkamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwl5ZWNjcGFyczJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncLeWVjY3BhcnMyXzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzEwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzEzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMjZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8yOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzMxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzM0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8zOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl80OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzU0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzU3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl81OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl83MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzc0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl83OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfNzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzgwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl84MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzkyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzk1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTAyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEwOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTA5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzExOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTIxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEyM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTM1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQ0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTQ3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE0OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTUwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTUzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE2OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTcwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xNzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTgyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTg1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xODZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTk2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjAyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIwN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjA4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjE2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxOGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIyMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIyN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjI4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMjlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIzMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjM3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQ0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI0NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI1OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjYwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNjdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjY5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjgyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI4NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjg2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yODdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjk0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yOTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjk3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yOThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI5OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzAxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzA2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzEyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzE1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzE5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyMWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzMyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzM3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzQ4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNDlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzUxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzU1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM1N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzU4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzYxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzY0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM2NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzY3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNjlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzcyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNzVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM3NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzc3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNzhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzgxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zODNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zOTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM5M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzk1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zOTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDAwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDA2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQwOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDEwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDEzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDIyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDI2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MjdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDMwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDMzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDM2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ0M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQ1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ0N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDQ5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDUyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDU2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ2NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDY2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDcxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NzJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDc0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ3N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDgzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDg2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80ODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDk2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80OTdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ5OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDk5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUwM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTA0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUwNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTA3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MDhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTExYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MTJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTE2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUxOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTIwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTIzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTI3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTMwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUzM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTM0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MzZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUzN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTM4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTQyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTQ2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU0OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTUwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTUzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTU3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTYxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2M2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTY0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTY3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NjhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU2OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTcwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU3MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTczYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU3NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTc3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NzlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4MGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTg0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81ODVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4NmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTg3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81ODhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4OWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTkwYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTFhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU5MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTkzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU5NWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTk3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81OTlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwMGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjAxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwNGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjA1YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MDZhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYwN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjA5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjE0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MTVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxNmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjE3YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MThhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYxOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjIxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MjJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYyM2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjI0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MjVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYyN2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjI4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzMmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjMzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzNWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjM2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82MzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzYzOWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQxYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NDJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY0NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQ2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NDdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY0OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjQ5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NTBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY1MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjUyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NTRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY1OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjU5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NjBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY2MmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjYzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NjRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY2N2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjY4YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3MWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjcyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3NGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjc2YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82NzdhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzY3OGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNjc5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl82ODBhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY2dvdG9fYWRkX29wYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX2FyZ3VtZW50X2xpc3RhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fYXRvbV9vcl92YXJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY2dvdG9fYXRvbWljYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX2F0dHJfdmFsYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX2F0dHJpYnV0ZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaW5fYmFzZV90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2Jpbl9lbGVtZW50YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX2Jpbl9lbGVtZW50c2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaW5fdW5pdF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2Nnb3RvX2JpbmFyeWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx15ZWNjZ290b19iaW5hcnlfY29tcHJlaGVuc2lvbmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b19iaW5hcnlfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19iaXRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxZ5ZWNjZ290b19iaXRfc2l6ZV9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX2JpdF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX2JpdF90eXBlX2xpc3RhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fY2FzZV9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2NsYXVzZV9hcmdzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX2NsYXVzZV9ib2R5YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GnllY2Nnb3RvX2NsYXVzZV9ib2R5X2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX2NsYXVzZV9ndWFyZGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjZ290b19jb21wX29wYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX2NyX2NsYXVzZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b19jcl9jbGF1c2VzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2Nnb3RvX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZXhwcl9tYXhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fZXhwcl9yZW1vdGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncOeWVjY2dvdG9fZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fZmllbGRfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b19maWVsZF90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjZ290b19mb3JtYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3E3llY2Nnb3RvX2Z1bl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fZnVuX2NsYXVzZXNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuX3R5cGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fZnVuY3Rpb25hB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncWeWVjY2dvdG9fZnVuY3Rpb25fY2FsbGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxh5ZWNjZ290b19mdW5jdGlvbl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncZeWVjY2dvdG9fZnVuY3Rpb25fY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjZ290b19ndWFyZGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b19pZl9jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9faWZfY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjZ290b19pZl9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3F3llY2Nnb3RvX2ludGVnZXJfb3JfdmFyYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2Nnb3RvX2xjX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY2dvdG9fbGNfZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY2dvdG9fbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxt5ZWNjZ290b19saXN0X2NvbXByZWhlbnNpb25hB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fbGlzdF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19tYXBfY29tcHJlaGVuc2lvbmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19tYXBfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b19tYXBfZmllbGRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fbWFwX2ZpZWxkX2Fzc29jYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GHllY2Nnb3RvX21hcF9maWVsZF9leGFjdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b19tYXBfZmllbGRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2Nnb3RvX21hcF9rZXlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncWeWVjY2dvdG9fbWFwX3BhaXJfdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19tYXBfcGFpcl90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19tYXBfcGF0X2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fbWFwX3R1cGxlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3E3llY2Nnb3RvX21heWJlX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fbWF5YmVfbWF0Y2hhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncaeWVjY2dvdG9fbWF5YmVfbWF0Y2hfZXhwcnNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fbXVsdF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19vcHRfYml0X3NpemVfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19vcHRfYml0X3R5cGVfbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxp5ZWNjZ290b19wYXRfYXJndW1lbnRfbGlzdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19wYXRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19wYXRfZXhwcl9tYXhhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncSeWVjY2dvdG9fcGF0X2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3ByZWZpeF9vcGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjZ290b19yZWNlaXZlX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncUeWVjY2dvdG9fcmVjb3JkX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncVeWVjY2dvdG9fcmVjb3JkX2ZpZWxkYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX3JlY29yZF9maWVsZHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fcmVjb3JkX3BhdF9leHByYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FXllY2Nnb3RvX3JlY29yZF90dXBsZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b19zcGVjX2Z1bmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19zc2FfY2hlY2tfYW5ub2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx55ZWNjZ290b19zc2FfY2hlY2tfYW5ub19jbGF1c2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncfeWVjY2dvdG9fc3NhX2NoZWNrX2Fubm9fY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxd5ZWNjZ290b19zc2FfY2hlY2tfYXJnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx15ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyZ5ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdF9ieXRlc19sc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyJ5ZWNjZ290b19zc2FfY2hlY2tfYmluYXJ5X2xpdF9yZXN0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3HnllY2Nnb3RvX3NzYV9jaGVja19jbGF1c2VfYXJnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyF5ZWNjZ290b19zc2FfY2hlY2tfY2xhdXNlX2FyZ3NfbHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fc3NhX2NoZWNrX2V4cHJhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncYeWVjY2dvdG9fc3NhX2NoZWNrX2V4cHJzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3GnllY2Nnb3RvX3NzYV9jaGVja19mdW5fcmVmYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3G3llY2Nnb3RvX3NzYV9jaGVja19saXN0X2xpdGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx55ZWNjZ290b19zc2FfY2hlY2tfbGlzdF9saXRfbHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncaeWVjY2dvdG9fc3NhX2NoZWNrX21hcF9rZXlhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncieWVjY2dvdG9fc3NhX2NoZWNrX21hcF9rZXlfZWxlbWVudGEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdyN5ZWNjZ290b19zc2FfY2hlY2tfbWFwX2tleV9lbGVtZW50c2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdx95ZWNjZ290b19zc2FfY2hlY2tfbWFwX2tleV9saXN0YQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3KXllY2Nnb3RvX3NzYV9jaGVja19tYXBfa2V5X3R1cGxlX2VsZW1lbnRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FnllY2Nnb3RvX3NzYV9jaGVja19wYXRhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fc3NhX2NoZWNrX3BhdHNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAnceeWVjY2dvdG9fc3NhX2NoZWNrX3doZW5fY2xhdXNlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3H3llY2Nnb3RvX3NzYV9jaGVja193aGVuX2NsYXVzZXNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY2dvdG9fc3RyaW5nc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjZ290b190YWlsYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX3RvcF90eXBlYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3RvcF90eXBlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b190cnlfY2F0Y2hhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fdHJ5X2NsYXVzZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b190cnlfY2xhdXNlc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjZ290b190cnlfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxt5ZWNjZ290b190cnlfb3B0X3N0YWNrdHJhY2VhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncOeWVjY2dvdG9fdHVwbGVhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY2dvdG9fdHlwZWEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxN5ZWNjZ290b190eXBlX2d1YXJkYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3FHllY2Nnb3RvX3R5cGVfZ3VhcmRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EXllY2Nnb3RvX3R5cGVfc2lnYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2Nnb3RvX3R5cGVfc2lnc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjZ290b190eXBlX3NwZWNhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncXeWVjY2dvdG9fdHlwZWRfYXR0cl92YWxhB2poAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY2dvdG9fdHlwZWRfZXhwcmEHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjZ290b190eXBlZF9leHByc2EHamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxx5ZWNjZ290b190eXBlZF9yZWNvcmRfZmllbGRzYQdqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl8xX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdwx5ZWNjcGFyczJfMl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncMeWVjY3BhcnMyXzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DHllY2NwYXJzMl85X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xMl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzEzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8xN19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzE4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yMF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8yNV9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzI2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zMF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzMxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zM19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl8zNl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzM4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfMzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80NF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl80N19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzQ4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81NF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl81N19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzU4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl83Ml9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzc0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl84MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzgyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85MF9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzkxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85M19hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzk0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DXllY2NwYXJzMl85Nl9hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncNeWVjY3BhcnMyXzk3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw15ZWNjcGFyczJfOTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xNzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xODlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8xOTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yMzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfIWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjc3XylhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N18sYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdfLT5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N186OmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3Xzo9YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfO2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3XzwtYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yNzdfPWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfMjc3Xz0+YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdfPj5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N18/PWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjc3X11hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY3BhcnMyXzI3N19hZnRlcmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxV5ZWNjcGFyczJfMjc3X2FuZGFsc29hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncTeWVjY3BhcnMyXzI3N19jYXRjaGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjcGFyczJfMjc3X2RvdGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfMjc3X2Vsc2VhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncReWVjY3BhcnMyXzI3N19lbmRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI3N19vZmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxR5ZWNjcGFyczJfMjc3X29yZWxzZWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfMjc3X3doZW5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N198YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHllY2NwYXJzMl8yNzdffHxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI3N199YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yNzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yODdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8yOTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl8yOTdfKWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjk3XyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzI5N18tPmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMjk3XzphAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzI5N189YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EnllY2NwYXJzMl8yOTdfd2hlbmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMjk4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMjk5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzAxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzAzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzA4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzEwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzEyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzE0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzE2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzIzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzI5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzMyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzMzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzM5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzQ5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzUzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzU1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzU3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzYzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzY5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzcxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzcyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzc2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzc4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzgzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfMzg5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMzkwXyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzM5MF8+PmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfMzkwX11hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzM5MF99YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl8zOThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MDlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80MzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80NzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODVfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80ODlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl80OTlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTJfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MThfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MjlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MzFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81MzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NDhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NTRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjFfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjRfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NjhfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzNfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzZfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzdfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81NzlfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DnllY2NwYXJzMl81ODBfYQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRfKWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfNTg0XyxhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzU4NF86PWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw95ZWNjcGFyczJfNTg0XzthAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncQeWVjY3BhcnMyXzU4NF89PmEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxB5ZWNjcGFyczJfNTg0Xz4+YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRfXWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxF5ZWNjcGFyczJfNTg0X2RvdGEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxJ5ZWNjcGFyczJfNTg0X3doZW5hAWpoAncIZGlhbHl6ZXJsAAAAAWgCdw9ub3dhcm5fZnVuY3Rpb25oAncPeWVjY3BhcnMyXzU4NF98YQFqaAJ3CGRpYWx5emVybAAAAAFoAncPbm93YXJuX2Z1bmN0aW9uaAJ3D3llY2NwYXJzMl81ODRffWEBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTg4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTkzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNTk5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjAxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjA5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjEwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjEzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjE5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjIxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjIzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjI3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjMwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjMyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM1X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjM5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjQ5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjUyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjU4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjU5X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjYzX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjY4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcwX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcxX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjcyX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjczX2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc0X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc2X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc3X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjc4X2EBamgCdwhkaWFseXplcmwAAAABaAJ3D25vd2Fybl9mdW5jdGlvbmgCdw55ZWNjcGFyczJfNjgwX2EBamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfcGFyc2UuZXJsag== -=mod:gen_server -Current size: 63325 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAn6RHe9GB6oWz+pkuBfW8K2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwdtY19zZW5kYQZqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fc2VydmVyLmVybGo= -=mod:lists -Current size: 99909 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAOC+znQeEHQ4VS7RSlxghx2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwp1a2V5bWVyZ2VsYQNqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9saXN0cy5lcmxq -=mod:logger_config -Current size: 10240 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAb9Y3k+aGr3hN5q3KdYRHtWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9jb25maWcuZXJsag== -=mod:logger_simple_h -Current size: 14726 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZpGbBxoDz/i1DSNMxmWqyWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zaW1wbGVfaC5lcmxq -=mod:logger_filters -Current size: 4971 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAzwk48RcCYOF3ih2/kJrSm2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9maWx0ZXJzLmVybGo= -=mod:error_logger -Current size: 18021 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA9gWmGAB8sC+HfxKvyFw6Impq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2Vycm9yX2xvZ2dlci5lcmxq -=mod:code_server -Current size: 63936 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAALWQXUe7tZIQ9G/1/MX9D1Gpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2NvZGVfc2VydmVyLmVybGo= -=mod:heart -Current size: 15601 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAyNN9gP1SxPnm7mbH8bBrLmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdw5zZW5kX2hlYXJ0X2NtZGECamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2hlYXJ0LmVybGo= -=mod:gen_event -Current size: 54224 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbZDZYq2ZehgrVmXuTdC9R2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fZXZlbnQuZXJsag== -=mod:logger -Current size: 53655 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAhEpn4LkeE+Ww1jrqwO/DAmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlci5lcmxq -=mod:application_controller -Current size: 112719 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8aNg4vAvqQ7+MnTc6uXOCWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAOC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIuZXJsag== -=mod:application_master -Current size: 17949 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAFPdt+BWDgI08/IO4pGy/Lmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsANC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uX21hc3Rlci5lcmxq -=mod:erl_eval -Current size: 90511 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAK4B/QUWPpeHDqFA51B7m72pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfZXZhbC5lcmxq -=mod:kernel -Current size: 16434 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAG5SBkG5rwhqTCCPgosVpj2poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbC5lcmxq -=mod:proc_lib -Current size: 44783 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHPr2dE+lcIfVFaldy2suaGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wcm9jX2xpYi5lcmxq -=mod:file_io_server -Current size: 45573 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA37XXQKgVyzgAhQMymk22nGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGVfaW9fc2VydmVyLmVybGo= -=mod:logger_server -Current size: 31925 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA6Q4YfPDTeP55K3VJGDToJGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zZXJ2ZXIuZXJsag== -=mod:erl_lint -Current size: 310700 -Current attributes: g2wAAAAFaAJ3A3ZzbmwAAAABbhAAZov2Nvzfuz6qcuUHe4NKempoAncHcmVtb3ZlZGwAAAABaAN3C21vZGlmeV9saW5lYQJrACB1c2UgZXJsX3BhcnNlOm1hcF9hbm5vLzIgaW5zdGVhZGpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdwh0eXBlX2RlZmEGamgCdwhkaWFseXplcmwAAAABaAJ3CG5vX21hdGNoaAJ3E2RlcHJlY2F0ZWRfZnVuY3Rpb25hBWpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdw9kZXByZWNhdGVkX3R5cGVhBWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfbGludC5lcmxq -=mod:supervisor -Current size: 78800 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAvy8OsDDanMrThS86JgsLempoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdXBlcnZpc29yLmVybGo= -=mod:ets -Current size: 58700 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAegV/9YrrRq9A7VQccwP0Ompq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9ldHMuZXJsag== -=mod:filename -Current size: 42212 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAxfgNPRE4P/8E8mNjf3nXyGpoAncHcmVtb3ZlZGwAAAABaAN3CGZpbmRfc3JjdwFfawAjdXNlIGZpbGVsaWI6ZmluZF9zb3VyY2UvMSwzIGluc3RlYWRqaAJ3B3JlbW92ZWRsAAAAAWgDdxJzYWZlX3JlbGF0aXZlX3BhdGhhAWsAKHVzZSBmaWxlbGliOnNhZmVfcmVsYXRpdmVfcGF0aC8yIGluc3RlYWRqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9maWxlbmFtZS5lcmxq -=mod:application -Current size: 15002 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAO3mC1yO32EqVKdQkgma7DGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2FwcGxpY2F0aW9uLmVybGo= -=mod:code -Current size: 45920 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA1rkrrsCyRltM8IqivNv2SWpoAncHcmVtb3ZlZGwAAAABaAN3BnJlaGFzaGEAawAsdGhlIGNvZGUgcGF0aCBjYWNoZSBmZWF0dXJlIGhhcyBiZWVuIHJlbW92ZWRqaAJ3B3JlbW92ZWRsAAAAAWgDdxBpc19tb2R1bGVfbmF0aXZlYQFrABVIaVBFIGhhcyBiZWVuIHJlbW92ZWRqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2NvZGUuZXJsag== -=mod:file -Current size: 44191 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAphblwlDFWwErKfvQJHHIAmpoAncKZGVwcmVjYXRlZGwAAAABaAN3CHBpZDJuYW1lYQFrACl0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGUuZXJsag== -=mod:gen -Current size: 30362 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAKKwsTHEn6t3sqSA1qygYyWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwdkb19jYWxsYQRqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncPZG9fc2VuZF9yZXF1ZXN0YQNqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW4uZXJsag== -=mod:error_handler -Current size: 5146 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA4HX9MacsLFi2Dumg+HZ9nWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2Vycm9yX2hhbmRsZXIuZXJsag== -=mod:logger_backend -Current size: 7115 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAoZ+yGJmvZZw2G+8fUAejtmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9iYWNrZW5kLmVybGo= -=mod:file_server -Current size: 13379 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAS7N4uM27g+5Rn3kNnsFYOWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2ZpbGVfc2VydmVyLmVybGo= -=mod:logger_proxy -Current size: 8857 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZduPYGozFFaJ/GMceJxnQWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9wcm94eS5lcmxq -=mod:logger_olp -Current size: 24420 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAhELBVPfG1AFHg6Hw3ACHYmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9vbHAuZXJsag== -=mod:queue -Current size: 26237 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA+pdK0iaAqDWnRiWIegfYd2poAncKZGVwcmVjYXRlZGwAAAABaAN3BGxhaXRhAWsAGHVzZSBxdWV1ZTpsaWF0LzEgaW5zdGVhZGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9xdWV1ZS5lcmxq -=mod:proplists -Current size: 13618 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3DEXDWFyP/1Am4oxQYybO2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACsvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wcm9wbGlzdHMuZXJsag== -=mod:peer -Current size: 56511 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA2E9Rc/B6+K6No16io4F+QWpoAncGYXV0aG9yawASbWF4aW1mY2FAZ21haWwuY29taAJ3CWJlaGF2aW91cmwAAAABdwpnZW5fc2VydmVyamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9wZWVyLmVybGo= -=mod:beam_lib -Current size: 65994 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAGAqMJUP/V7MaDY2WDvcZVmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9iZWFtX2xpYi5lcmxq -=mod:binary -Current size: 21293 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjusm/cmFBBM4V7Pu9tlybmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9iaW5hcnkuZXJsag== -=mod:gb_sets -Current size: 22658 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjJKuKbdSxi4KHdHBwvnc2mpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nYl9zZXRzLmVybGo= -=mod:gb_trees -Current size: 15903 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA/9kxl1ANy9kH79Yem0U5aGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nYl90cmVlcy5lcmxq -=mod:os -Current size: 17693 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAe2HUBCvqya+anjsKRMYUTGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL29zLmVybGo= -=mod:unicode -Current size: 41929 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAq+fzNG8vRL24dz9E5ZlDaGpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxkb19vX2JpbmFyeTJhAmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy91bmljb2RlLmVybGo= -=mod:erl_features -Current size: 41135 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAYXEynt+8kTRkG8V/OHR0VGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfZmVhdHVyZXMuZXJsag== -=mod:standard_error -Current size: 10663 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAkMo760coteTN1xzpRgHT6mpoAncJYmVoYXZpb3VybAAAAAF3EXN1cGVydmlzb3JfYnJpZGdlamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3N0YW5kYXJkX2Vycm9yLmVybGo= -=mod:supervisor_bridge -Current size: 19251 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA+ZJzPQgBcV7sQuq/XPk182poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrADMvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdXBlcnZpc29yX2JyaWRnZS5lcmxq -=mod:inet_db -Current size: 68294 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAvdtm5APLt4opHuq1WdBdWGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfZGIuZXJsag== -=mod:inet_config -Current size: 25206 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAlZNV6TqRS7nNxz74j7FCe2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfY29uZmlnLmVybGo= -=mod:inet_udp -Current size: 6941 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAhrzZ8+DOe1LKVcGE3RxIN2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfdWRwLmVybGo= -=mod:inet -Current size: 81321 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAATt4eXjFDEUu+qumuN+EMfWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXQuZXJsag== -=mod:inet_parse -Current size: 38147 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAEf7OexUeePpkEPPFZJPf+mpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2luZXRfcGFyc2UuZXJsag== -=mod:rpc -Current size: 29484 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA6VB2VShMOzVQaYOrBGnThmpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqaAJ3B3JlbW92ZWRsAAAAAmgDdxZzYWZlX211bHRpX3NlcnZlcl9jYWxsYQJrACN1c2UgcnBjOm11bHRpX3NlcnZlcl9jYWxsLzIgaW5zdGVhZGgDdxZzYWZlX211bHRpX3NlcnZlcl9jYWxsYQNrACN1c2UgcnBjOm11bHRpX3NlcnZlcl9jYWxsLzMgaW5zdGVhZGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3JwYy5lcmxq -=mod:global -Current size: 117570 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA3Un4q7IE1kKFWWXOqg1fv2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dsb2JhbC5lcmxq -=mod:net_kernel -Current size: 95518 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARVYlffpB+M9gMCitj2vQyGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL25ldF9rZXJuZWwuZXJsag== -=mod:rand -Current size: 82048 -Current attributes: g2wAAAAMaAJ3A3ZzbmwAAAABbhAASiW5LD/Qej4GU+MSRZDXfWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxleHNwbHVzX3NlZWRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpleHNzc19zZWVkYQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncJZXhzcF9uZXh0YQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncKZXhzc3NfbmV4dGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3DGV4c3BsdXNfanVtcGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3CWV4c3BfanVtcGEBamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3DGV4c3BsdXNfanVtcGEEamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzaAJ3CmV4cm9wX3NlZWRhAWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwxleHJvcF9uZXh0X3NhAmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpleHJvcF9uZXh0YQFqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncKZXhyb3BfanVtcGEFamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9yYW5kLmVybGo= -=mod:maps -Current size: 22152 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA74KFUusq6FvLJdXoy86SW2poAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2wAAAACaAJ3CGl0ZXJhdG9yYQFoAncIaXRlcmF0b3JhAmpqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACYvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9tYXBzLmVybGo= -=mod:erl_distribution -Current size: 6886 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAADU5yO8e4eK+9kI484ejKXGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VybF9kaXN0cmlidXRpb24uZXJsag== -=mod:global_group -Current size: 54044 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAh7yoy6UVXzAVQ4pFGW90/2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dsb2JhbF9ncm91cC5lcmxq -=mod:erpc -Current size: 42486 -Current attributes: g2wAAAALaAJ3A3ZzbmwAAAABbhAAE8Ii4JDYcOGscJTGZx5vtmpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncEY2FsbGEFdwlub19yZXR1cm5qaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncMc2VuZF9yZXF1ZXN0YQRqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncMc2VuZF9yZXF1ZXN0YQZqaAJ3CGRpYWx5emVybAAAAAJoAncPbm93YXJuX2Z1bmN0aW9uaAJ3EHJlY2VpdmVfcmVzcG9uc2VhAncJbm9fcmV0dXJuamgCdwhkaWFseXplcmwAAAACaAJ3D25vd2Fybl9mdW5jdGlvbmgCdxByZWNlaXZlX3Jlc3BvbnNlYQN3CW5vX3JldHVybmpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncNd2FpdF9yZXNwb25zZWECdwlub19yZXR1cm5qaAJ3CGRpYWx5emVybAAAAAJoAncPbm93YXJuX2Z1bmN0aW9uaAJ3DmNoZWNrX3Jlc3BvbnNlYQJ3CW5vX3JldHVybmpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2gCdwpyZXFpZHNfYWRkYQNqaAJ3CGRpYWx5emVybAAAAAFoAncRbm9faW1wcm9wZXJfbGlzdHNoAncOcmVxaWRzX3RvX2xpc3RhAWpoAncIZGlhbHl6ZXJsAAAAAmgCdw9ub3dhcm5fZnVuY3Rpb25oAncGcmVzdWx0YQR3CW5vX3JldHVybmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VycGMuZXJsag== -=mod:user_sup -Current size: 5411 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAZjtvFsHpi2oYJNyK+BJegmpoAncJYmVoYXZpb3VybAAAAAF3EXN1cGVydmlzb3JfYnJpZGdlamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3VzZXJfc3VwLmVybGo= -=mod:user_drv -Current size: 50600 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAV06qfcXDHq1HAw73vMm622poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zdGF0ZW1qag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3VzZXJfZHJ2LmVybGo= -=mod:gen_statem -Current size: 78929 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA0LgXEqMkSoYlnYjTV7wab2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACwvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9nZW5fc3RhdGVtLmVybGo= -=mod:prim_tty -Current size: 71017 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAqFwI4sYbIil9FhV3gj2j2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAKi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3ByaW1fdHR5LmVybGo= -=mod:io -Current size: 24369 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAApRaglMWA2VsOdFJPVz133Gpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACQvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pby5lcmxq -=mod:group -Current size: 43672 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA851sQvKFjbfq7qcvrtJnqGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAJy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dyb3VwLmVybGo= -=mod:edlin -Current size: 38096 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHOkgEIAXEUgr+NtGF+NeWmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lZGxpbi5lcmxq -=mod:io_lib -Current size: 37231 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAFFeN9kWE1DsEb/D+MxWXDGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pb19saWIuZXJsag== -=mod:logger_sup -Current size: 1730 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAviM55aoW6hCnDVjE2ajfCGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zdXAuZXJsag== -=mod:group_history -Current size: 40520 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAArNDTXjp3PaP6UETyYRPOCWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2dyb3VwX2hpc3RvcnkuZXJsag== -=mod:io_lib_format -Current size: 36306 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAzwUVMCw5gpCCMKijxfMqt2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC8vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9pb19saWJfZm9ybWF0LmVybGo= -=mod:logger_handler_watcher -Current size: 3686 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAUSb4uQDBVYdufFjEDGNpDWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAOC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9oYW5kbGVyX3dhdGNoZXIuZXJsag== -=mod:timer -Current size: 19608 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8aNh9jNZ5oP9N/HqUh4WWWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACcvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy90aW1lci5lcmxq -=mod:kernel_config -Current size: 7013 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAKNVWveNYHE/lG53RxdAyrWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALy9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbF9jb25maWcuZXJsag== -=mod:kernel_refc -Current size: 6107 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAP51mX3wVLHv5Wt44rH/VNWpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2tlcm5lbF9yZWZjLmVybGo= -=mod:erl_signal_handler -Current size: 3791 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA49r9WmTF+h6BuvDW6CLhI2poAncJYmVoYXZpb3VybAAAAAF3CWdlbl9ldmVudGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsANC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2VybF9zaWduYWxfaGFuZGxlci5lcmxq -=mod:logger_formatter -Current size: 27269 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3DgK6nIfXOBrGY11b3Ebc2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9mb3JtYXR0ZXIuZXJsag== -=mod:logger_std_h -Current size: 29691 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAHZBnbQf+yJ3LNQvEEyzqCGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALi9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9zdGRfaC5lcmxq -=mod:logger_h_common -Current size: 27015 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA8gXXQTDseI2RwAfchg+PjGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsAMS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL2xvZ2dlcl9oX2NvbW1vbi5lcmxq -=mod:c -Current size: 55738 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAx9sEY92lk5eCgdpeFRvl7Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACMvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9jLmVybGo= -=mod:orddict -Current size: 9632 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAjVNEV8MyenfougmvyJOIn2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vcmRkaWN0LmVybGo= -=mod:raw_file_io -Current size: 3544 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAfByFOutd4XmaTTyQZS+wGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAJ3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjLy4uL2luY2x1ZGVqaAJ3BnNvdXJjZWsALS9idWlsZHJvb3Qvb3RwL2xpYi9rZXJuZWwvc3JjL3Jhd19maWxlX2lvLmVybGo= -=mod:erl_scan -Current size: 80286 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAcWizQoku/ar098CvlBYw3GpoAncHcmVtb3ZlZGwAAAADaAN3DXNldF9hdHRyaWJ1dGVhA2sAH3VzZSBlcmxfYW5ubzpzZXRfbGluZS8yIGluc3RlYWRoA3cPYXR0cmlidXRlc19pbmZvdwFfawAydXNlIGVybF9hbm5vOntjb2x1bW4sbGluZSxsb2NhdGlvbix0ZXh0fS8xIGluc3RlYWRoA3cKdG9rZW5faW5mb3cBX2sAQnVzZSBlcmxfc2Nhbjp7Y2F0ZWdvcnksY29sdW1uLGxpbmUsbG9jYXRpb24sc3ltYm9sLHRleHR9LzEgaW5zdGVhZGpoAncMcmVtb3ZlZF90eXBlbAAAAANoA3cGY29sdW1uYQBrAB11c2UgZXJsX2Fubm86Y29sdW1uKCkgaW5zdGVhZGgDdwRsaW5lYQBrABt1c2UgZXJsX2Fubm86bGluZSgpIGluc3RlYWRoA3cIbG9jYXRpb25hAGsAH3VzZSBlcmxfYW5ubzpsb2NhdGlvbigpIGluc3RlYWRqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfc2Nhbi5lcmxq -=mod:erl_anno -Current size: 10627 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAkayPNmhEhCtPmVnzA+f9ompq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACovYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfYW5uby5lcmxq -=mod:ordsets -Current size: 5786 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAe8kg2+9uOF1cs2tFmVktbGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vcmRzZXRzLmVybGo= -=mod:otp_internal -Current size: 74930 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAgb4GzSRirByHf+zgWa/J7mpoAncIZGlhbHl6ZXJsAAAAAWgCdwhub19tYXRjaGgCdwhvYnNvbGV0ZWEDamgCdwhkaWFseXplcmwAAAABaAJ3CG5vX21hdGNoaAJ3DW9ic29sZXRlX3R5cGVhA2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9vdHBfaW50ZXJuYWwuZXJsag== -=mod:erl_internal -Current size: 12465 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAH3E66VDgOMxAJ3swqD+T7Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcmxfaW50ZXJuYWwuZXJsag== -=mod:'aoc2023@@main' -Current size: 4742 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAPugzxohB3mrGKcTr3YDYhmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9hb2MyMDIzQEBtYWluLmVybGo= -=mod:epp -Current size: 96168 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAB23d4tmH4coUKKRIT0Ew7Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9lcHAuZXJsag== -=mod:inets_app -Current size: 1391 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAA4PrNF10KpcErAmiRnvRGo2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwthcHBsaWNhdGlvbmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA0L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfYXBwLmVybGo= -=mod:inets_sup -Current size: 4174 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAZYq0pFoYUy98UilKMAgr/2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA0L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfc3VwLmVybGo= -=mod:httpc_sup -Current size: 2503 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAgy7v3K4IkDuZDOu8Nwe8CGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19zdXAuZXJsag== -=mod:httpc_profile_sup -Current size: 3949 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAARi0bgARtwsiompJMTfZqgGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA+L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19wcm9maWxlX3N1cC5lcmxq -=mod:httpc -Current size: 51321 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAQJGijj06WciIsf9zWi9RRWpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdw1pbmV0c19zZXJ2aWNlamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawAyL2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwYy5lcmxq -=mod:httpc_manager -Current size: 45805 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAzA6/cmiSsI/VuMRE+DH5q2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpnZW5fc2VydmVyamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA6L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19tYW5hZ2VyLmVybGo= -=mod:inets_trace -Current size: 16599 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA13W3kiQ3DajF6u1MEp8wcGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9pbmV0c19hcHAvaW5ldHNfdHJhY2UuZXJsag== -=mod:httpc_cookie -Current size: 26127 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAj0Py8LgBp/5GCHesApuGKmpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA5L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19jb29raWUuZXJsag== -=mod:httpc_handler_sup -Current size: 2111 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAATMTRW8HC2a2GvzQjWwLttGpoAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oAncBaWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vLi4vaW5jbHVkZWgCdwFpawA1L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC8uLi9pbmV0c19hcHBoAncBaWsANC9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9jbGllbnQvLi4vaHR0cF9saWJoAncPcGFyc2VfdHJhbnNmb3JtdxJzeXNfcHJlX2F0dHJpYnV0ZXNoBHcJYXR0cmlidXRldwZpbnNlcnR3B2FwcF92c25rAAtpbmV0cy05LjAuMWpoAncGc291cmNlawA+L2J1aWxkcm9vdC9vdHAvbGliL2luZXRzL3NyYy9odHRwX2NsaWVudC9odHRwY19oYW5kbGVyX3N1cC5lcmxq -=mod:httpd_sup -Current size: 10999 -Current attributes: g2wAAAADaAJ3A3ZzbmwAAAABbhAAtKUXEBjK/e98uHvMb3rrF2poAncHYXBwX3ZzbmsAC2luZXRzLTkuMC4xaAJ3CWJlaGF2aW91cmwAAAABdwpzdXBlcnZpc29yamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAZ3CmRlYnVnX2luZm9oA3cBZHcPU0VSVkVSX1NPRlRXQVJFawALaW5ldHMvOS4wLjFoAncBaWsANS9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9zZXJ2ZXIvLi4vaW5ldHNfYXBwaAJ3AWlrADQvYnVpbGRyb290L290cC9saWIvaW5ldHMvc3JjL2h0dHBfc2VydmVyLy4uL2h0dHBfbGliaAJ3D3BhcnNlX3RyYW5zZm9ybXcSc3lzX3ByZV9hdHRyaWJ1dGVzaAR3CWF0dHJpYnV0ZXcGaW5zZXJ0dwdhcHBfdnNuawALaW5ldHMtOS4wLjFqaAJ3BnNvdXJjZWsANi9idWlsZHJvb3Qvb3RwL2xpYi9pbmV0cy9zcmMvaHR0cF9zZXJ2ZXIvaHR0cGRfc3VwLmVybGo= -=mod:ssl_app -Current size: 2100 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbg8A0DC0t7URrYxQKjqz0ymfamgCdwliZWhhdmlvdXJsAAAAAXcLYXBwbGljYXRpb25qag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2FwcC5lcmxq -=mod:ssl_logger -Current size: 40894 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA9nZNLNkysVW+ZQmCjJHduWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawApL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2xvZ2dlci5lcmxq -=mod:ssl_sup -Current size: 2196 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAo3LCwydF/2W9pRiIxy3DjmpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3N1cC5lcmxq -=mod:ssl_admin_sup -Current size: 4152 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA9wr0ynjnPAnTVBgUTNkR0mpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAsL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2FkbWluX3N1cC5lcmxq -=mod:ssl_pem_cache -Current size: 6752 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAinKSIwX0SCBgGNnR5VuBb2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAsL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3BlbV9jYWNoZS5lcmxq -=mod:ssl_pkix_db -Current size: 19921 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAUN9wTKLXhUyfxv7o/6pFYmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAqL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3BraXhfZGIuZXJsag== -=mod:ssl_manager -Current size: 20578 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAXyE921kAFR6srVwQYOzMTGpoAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAqL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX21hbmFnZXIuZXJsag== -=mod:ssl_config -Current size: 19916 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA6GmieDGRPQVKnnM+8AnHe2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawApL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2NvbmZpZy5lcmxq -=mod:ssl_client_session_cache_db -Current size: 4099 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAADmgKYfPII/p5bEqiJ5mcpWpoAncJYmVoYXZpb3VybAAAAAF3FXNzbF9zZXNzaW9uX2NhY2hlX2FwaWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA6L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2NsaWVudF9zZXNzaW9uX2NhY2hlX2RiLmVybGo= -=mod:tls_client_ticket_store -Current size: 13052 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAxBJUXnCWGs2oPQjBp6L9A2poAncJYmVoYXZpb3VybAAAAAF3Cmdlbl9zZXJ2ZXJqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA2L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX2NsaWVudF90aWNrZXRfc3RvcmUuZXJsag== -=mod:ssl_connection_sup -Current size: 2373 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA5ryHccs+ohUp1ydgfH9YvWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAxL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2Nvbm5lY3Rpb25fc3VwLmVybGo= -=mod:tls_sup -Current size: 2186 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAALTAE2+O6t5PW4UO1HK8EwWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAmL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3N1cC5lcmxq -=mod:tls_connection_sup -Current size: 2221 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAJvmM1aYsddPoTZrW98XRumpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAxL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX2Nvbm5lY3Rpb25fc3VwLmVybGo= -=mod:tls_server_sup -Current size: 2971 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAz0U8v3nIm1ZY5f3kum4r5WpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAtL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3NlcnZlcl9zdXAuZXJsag== -=mod:ssl_listen_tracker_sup -Current size: 2635 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAOGJZxWhtwUTvf1bKcQvuyGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA1L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX2xpc3Rlbl90cmFja2VyX3N1cC5lcmxq -=mod:tls_server_session_ticket_sup -Current size: 2770 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARMHYqHUw2NS1m1UIvB3reGpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA8L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvdGxzX3NlcnZlcl9zZXNzaW9uX3RpY2tldF9zdXAuZXJsag== -=mod:ssl_server_session_cache_sup -Current size: 2269 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAByPBY6olcmybwiutwebctWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA7L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3NlcnZlcl9zZXNzaW9uX2NhY2hlX3N1cC5lcmxq -=mod:ssl_upgrade_server_session_cache_sup -Current size: 3355 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAMxn80z9MoSuZx9BdUpz512poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawBDL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvc3NsX3VwZ3JhZGVfc2VydmVyX3Nlc3Npb25fY2FjaGVfc3VwLmVybGo= -=mod:dtls_sup -Current size: 2203 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAzEhJZ7CGB/FJN8cXbhi9UWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAnL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zdXAuZXJsag== -=mod:dtls_connection_sup -Current size: 2302 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAARTy7MXOOcU51LrywTcn5CWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAyL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19jb25uZWN0aW9uX3N1cC5lcmxq -=mod:dtls_server_sup -Current size: 2332 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAA1ajQs9tDRTHhujDcDcscHmpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAuL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zZXJ2ZXJfc3VwLmVybGo= -=mod:dtls_listener_sup -Current size: 3390 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAMsV5mY/deSztKjjCFxfzBWpoAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawAwL2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19saXN0ZW5lcl9zdXAuZXJsag== -=mod:dtls_server_session_cache_sup -Current size: 2286 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAYQzAm4CTe8XSrf2cwuhLS2poAncJYmVoYXZpb3VybAAAAAF3CnN1cGVydmlzb3Jqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAR3CmRlYnVnX2luZm9oA3cBZHcDVlNOawAGMTEuMC4yaAJ3AWlrAB0vYnVpbGRyb290L290cC9saWIva2VybmVsL3NyY3cQd2Fybl91bnVzZWRfdmFyc2poAncGc291cmNlawA8L2J1aWxkcm9vdC9vdHAvbGliL3NzbC9zcmMvZHRsc19zZXJ2ZXJfc2Vzc2lvbl9jYWNoZV9zdXAuZXJsag== -=mod:aoc2023_test -Current size: 3021 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAIDzQyy7+ohaS/lZYEnHV6mpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbi9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9hb2MyMDIzX3Rlc3QuZXJsag== -=mod:showtime -Current size: 7589 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAASs9ziZ84gk8YQPJee7zfKmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAai9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZS5lcmxq -=mod:'gleam@erlang' -Current size: 5630 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAtN0gkiNwSV+DDvuhn5+jrGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGVybGFuZy5lcmxq -=mod:'gleam@list' -Current size: 33260 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAnSllczgawr65cI3tzxLzUGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGxpc3QuZXJsag== -=mod:'glint@flag' -Current size: 25019 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAWH/YkAkx0LbtUA424nvbMGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAai9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnRAZmxhZy5lcmxq -=mod:'glint@flag@constraint' -Current size: 7000 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAqroPg4gdgq3ImnzPTggyoGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnRAZmxhZ0Bjb25zdHJhaW50LmVybGo= -=mod:'gleam@set' -Current size: 6639 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZnB2CU+bKlUidhVR0LnxHWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHNldC5lcmxq -=mod:'gleam@dict' -Current size: 6120 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAAUASYtitXRdExDDzR4vPOGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGRpY3QuZXJsag== -=mod:glint -Current size: 18505 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA8af8T+Jw5viRaaFGJe+TImpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAZS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsaW50L19nbGVhbV9hcnRlZmFjdHMvZ2xpbnQuZXJsag== -=mod:'gleam@map' -Current size: 5055 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbOLYAgbwbyWo2C1h7jpfH2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG1hcC5lcmxq -=mod:'gleam_community@colour' -Current size: 24404 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAljaAlIiPJ6KY0wAzgFEHsGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAhy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2NvbW11bml0eV9jb2xvdXIvX2dsZWFtX2FydGVmYWN0cy9nbGVhbV9jb21tdW5pdHlAY29sb3VyLmVybGo= -=mod:'gleam@int' -Current size: 11239 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAvfyk3FUpUDfPJUBGvGzaM2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGludC5lcmxq -=mod:'gleam@float' -Current size: 8605 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAwvf3WDPwF8eL3tZjwLdPvGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAci9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGZsb2F0LmVybGo= -=mod:'gleam@result' -Current size: 8298 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAdINyuhBKzZsZG3pV5EZaVWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHJlc3VsdC5lcmxq -=mod:'gleam@function' -Current size: 10100 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAABwPVPBZqz4aY1ziaTMPL82pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGZ1bmN0aW9uLmVybGo= -=mod:'gleam@string' -Current size: 12638 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbnTY1/YcMIh38pIxTgLMm2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHN0cmluZy5lcmxq -=mod:gleam_stdlib -Current size: 35605 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAfiGJYP8AkzvoXZ0YMrXSlmpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtX3N0ZGxpYi5lcmxq -=mod:string -Current size: 113669 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAWQd6Le8JB4/gRSVlV2lBNWpoAncIZGlhbHl6ZXJsAAAAAWgCdxFub19pbXByb3Blcl9saXN0c2wAAAACaAJ3BXN0YWNrYQJoAncIbGVuZ3RoX2JhA2pqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACgvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zdHJpbmcuZXJsag== -=mod:unicode_util -Current size: 1073461 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbg8AXORlGYYDsuY+eHtBuoYFamgCdwhkaWFseXplcmwAAAABaAJ3EW5vX2ltcHJvcGVyX2xpc3RzbAAAAANoAncCY3BhAWgCdwJnY2EBaAJ3CmdjX3ByZXBlbmRhAmpqag== -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrAC4vYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy91bmljb2RlX3V0aWwuZXJsag== -=mod:snag -Current size: 4922 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAG5uviABLq1rTj5x/VJZ0uGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAYy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NuYWcvX2dsZWFtX2FydGVmYWN0cy9zbmFnLmVybGo= -=mod:'gleam@string_builder' -Current size: 5894 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA60rqd/vw/4Yk1Xn9mUIvUGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAey9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQHN0cmluZ19idWlsZGVyLmVybGo= -=mod:'showtime@internal@erlang@event_handler' -Current size: 6427 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAesteT6kF6RvqO2kV/0gQ7Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAiC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAZXZlbnRfaGFuZGxlci5lcmxq -=mod:'gleam@otp@actor' -Current size: 10710 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAiu2xMkLOQbtFaM3BzoGdrGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX290cC9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG90cEBhY3Rvci5lcmxq -=mod:'gleam@erlang@process' -Current size: 15774 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAtSkhind80R8EMukoR6vkNWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAey9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGVybGFuZ0Bwcm9jZXNzLmVybGo= -=mod:gleam_erlang_ffi -Current size: 18854 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAMiyJ/P+Ak/snrkTct7KA+Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX2VybGFuZy9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtX2VybGFuZ19mZmkuZXJsag== -=mod:sys -Current size: 25414 -Current attributes: g2wAAAACaAJ3A3ZzbmwAAAABbhAAqJumm2a32a1+cgYA+0oFeGpoAncKZGVwcmVjYXRlZGwAAAABaAN3CWdldF9kZWJ1Z2EDawBaaW5jb3JyZWN0bHkgZG9jdW1lbnRlZCBhbmQgb25seSBmb3IgaW50ZXJuYWwgdXNlLiBDYW4gb2Z0ZW4gYmUgcmVwbGFjZWQgd2l0aCBzeXM6Z2V0X2xvZy8xamo= -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACUvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9zeXMuZXJsag== -=mod:'showtime@internal@erlang@module_handler' -Current size: 5600 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA266xv4+Y/ZBeOm9hxQclbWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAiS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAbW9kdWxlX2hhbmRsZXIuZXJsag== -=mod:'showtime@internal@erlang@discover' -Current size: 10957 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAACiFC4pbvgv+igrT/QELa0Wpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAgy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAZGlzY292ZXIuZXJsag== -=mod:'showtime@internal@common@common_event_handler' -Current size: 6222 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAATc4tRrLUrjDY13p3a0mfM2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAjy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBjb21tb25AY29tbW9uX2V2ZW50X2hhbmRsZXIuZXJsag== -=mod:simplifile -Current size: 11471 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAg7QYQ/6hEp7KUPQeePbxIGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NpbXBsaWZpbGUvX2dsZWFtX2FydGVmYWN0cy9zaW1wbGlmaWxlLmVybGo= -=mod:'gleam@option' -Current size: 6842 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA7ba+EZRfQIRK4LJH6y8VQGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQG9wdGlvbi5lcmxq -=mod:simplifile_erl -Current size: 6790 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAALrwXLSXXrQUhBuYY6MoxsWpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL3NpbXBsaWZpbGUvX2dsZWFtX2FydGVmYWN0cy9zaW1wbGlmaWxlX2VybC5lcmxq -=mod:filelib -Current size: 31796 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAA3TrIJYJQZ31EtFlP1T81tGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjIuNGgCdwdvcHRpb25zbAAAAAN3CmRlYnVnX2luZm9oAncBaWsAKC9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uL2luY2x1ZGVoAncBaWsAMi9idWlsZHJvb3Qvb3RwL2xpYi9zdGRsaWIvc3JjLy4uLy4uL2tlcm5lbC9pbmNsdWRlamgCdwZzb3VyY2VrACkvYnVpbGRyb290L290cC9saWIvc3RkbGliL3NyYy9maWxlbGliLmVybGo= -=mod:'gleam@dynamic' -Current size: 38851 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAl/t9vhYnIwY0q12jzqtah2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGR5bmFtaWMuZXJsag== -=mod:'day7@day7_test' -Current size: 4223 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAJPCDfy0Jji3eOEeobotB3Gpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAcC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9kYXk3QGRheTdfdGVzdC5lcmxq -=mod:'showtime@internal@erlang@runner' -Current size: 4500 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAADg32TsjXMXKsJRgK3TDrDGpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAgS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEBlcmxhbmdAcnVubmVyLmVybGo= -=mod:showtime_ffi -Current size: 10209 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAkt2yuDpHeMFcxuk1dvnE6Gpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbi9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZV9mZmkuZXJsag== -=mod:'showtime@tests@should' -Current size: 6938 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAARbeuMDVpt+ZmkAn+XaYh8mpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAdy9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUB0ZXN0c0BzaG91bGQuZXJsag== -=mod:'day7@solve' -Current size: 10243 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAArXGXSdtYEewD099OEybQ4mpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAbC9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FvYzIwMjMvX2dsZWFtX2FydGVmYWN0cy9kYXk3QHNvbHZlLmVybGo= -=mod:'showtime@internal@reports@formatter' -Current size: 23921 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAbZh74abXA6ppaWvDUqdhA2pq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAhS9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2FkZ2xlbnQvX2dsZWFtX2FydGVmYWN0cy9zaG93dGltZUBpbnRlcm5hbEByZXBvcnRzQGZvcm1hdHRlci5lcmxq -=mod:'gleam@io' -Current size: 3562 -Current attributes: g2wAAAABaAJ3A3ZzbmwAAAABbhAAZbMfKh/MIOHz0dIn+IIj+Gpq -Current compilation info: g2wAAAADaAJ3B3ZlcnNpb25rAAU4LjMuMmgCdwdvcHRpb25zbAAAAAF3CmRlYnVnX2luZm9qaAJ3BnNvdXJjZWsAby9Vc2Vycy9uaWNob2xhc2Nhcmxzb24vVlMgQ29kZS9BZHZlbnRPZkNvZGUvYW9jMjAyMy9idWlsZC9kZXYvZXJsYW5nL2dsZWFtX3N0ZGxpYi9fZ2xlYW1fYXJ0ZWZhY3RzL2dsZWFtQGlvLmVybGo= -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 39 -Address: 0x000000010421c3a4 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 30 -Address: 0x0000000103e76f50 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 22 -Address: 0x0000000103fb4fe8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 3 -Address: 0x000000010400c9a0 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 34 -Address: 0x000000010414b9c8 -Refc: 1 -=fun -Module: socket_registry -Uniq: 8180509 -Index: 0 -Address: 0x0000000103dc1758 -Refc: 1 -=fun -Module: logger_formatter -Uniq: 60349323 -Index: 1 -Address: 0x00000001040b64c0 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 0 -Address: 0x00000001040d26b0 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 5 -Address: 0x0000000103e3c140 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 1 -Address: 0x0000000103eb2d08 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 5 -Address: 0x00000001041524d0 -Refc: 2 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 4 -Address: 0x00000001040d0540 -Refc: 2 -=fun -Module: 'glint@flag@constraint' -Uniq: 83988546 -Index: 3 -Address: 0x000000010414e3d8 -Refc: 2 -=fun -Module: 'gleam@set' -Uniq: 15699406 -Index: 2 -Address: 0x000000010414fa68 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 56 -Address: 0x0000000103e759e8 -Refc: 1 -=fun -Module: maps -Uniq: 48010870 -Index: 2 -Address: 0x0000000104036d98 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 29 -Address: 0x000000010414abf0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 5 -Address: 0x0000000104029d10 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@event_handler' -Uniq: 124289607 -Index: 2 -Address: 0x00000001041f7afc -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 33 -Address: 0x0000000104009d20 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 48 -Address: 0x000000010421d078 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 10 -Address: 0x0000000104160d88 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 6 -Address: 0x0000000104158cb8 -Refc: 1 -=fun -Module: gen_event -Uniq: 37613186 -Index: 6 -Address: 0x0000000103ee1738 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 7 -Address: 0x00000001041fc1d4 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 4 -Address: 0x0000000103fb9ee0 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 17 -Address: 0x0000000104146dc4 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 13 -Address: 0x0000000103d93480 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 11 -Address: 0x0000000103feda78 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 90 -Address: 0x0000000103e71d70 -Refc: 1 -=fun -Module: gen -Uniq: 105431365 -Index: 0 -Address: 0x0000000103e0ff18 -Refc: 3 -=fun -Module: supervisor -Uniq: 63985753 -Index: 5 -Address: 0x0000000103e4cad8 -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 1 -Address: 0x0000000103f5a008 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 62 -Address: 0x0000000103eaf540 -Refc: 2 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 5 -Address: 0x0000000104129d98 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 13 -Address: 0x0000000103e79bc0 -Refc: 2 -=fun -Module: httpc -Uniq: 36342138 -Index: 10 -Address: 0x0000000104109c18 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@module_handler' -Uniq: 57223230 -Index: 0 -Address: 0x0000000104207ad4 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 3 -Address: 0x0000000103dcd620 -Refc: 1 -=fun -Module: code -Uniq: 38778589 -Index: 2 -Address: 0x0000000103e22d70 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 16 -Address: 0x000000010402d478 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 100 -Address: 0x0000000103e710f4 -Refc: 1 -=fun -Module: inet_db -Uniq: 46329474 -Index: 2 -Address: 0x0000000103fc4e40 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 14 -Address: 0x000000010400bb80 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 29 -Address: 0x000000010421a968 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 5 -Address: 0x000000010420b330 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 21 -Address: 0x00000001040dd8c0 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 8 -Address: 0x0000000103ecbb40 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 28 -Address: 0x0000000103eb0d18 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 3 -Address: 0x0000000103e87d70 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 4 -Address: 0x0000000104147168 -Refc: 1 -=fun -Module: beam_lib -Uniq: 45141944 -Index: 1 -Address: 0x0000000103f99ba0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 47 -Address: 0x0000000103e76020 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 8 -Address: 0x000000010414c680 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 0 -Address: 0x0000000103ef3d3c -Refc: 1 -=fun -Module: logger -Uniq: 1449854 -Index: 0 -Address: 0x0000000103ed6110 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 43 -Address: 0x0000000103eb0110 -Refc: 1 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 1 -Address: 0x0000000104227bd0 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 3 -Address: 0x0000000103fe5680 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 1 -Address: 0x0000000104209460 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 22 -Address: 0x0000000103e77d2c -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 17 -Address: 0x0000000104159158 -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 8 -Address: 0x00000001041fc094 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 73 -Address: 0x0000000103e73e08 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 4 -Address: 0x00000001040fc6a4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 42 -Address: 0x000000010414c798 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 8 -Address: 0x00000001040d58b8 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 13 -Address: 0x0000000103e3b694 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 9 -Address: 0x0000000103eb2130 -Refc: 1 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 5 -Address: 0x00000001041f9860 -Refc: 2 -=fun -Module: c -Uniq: 124725464 -Index: 11 -Address: 0x00000001040cb508 -Refc: 2 -=fun -Module: httpc -Uniq: 36342138 -Index: 7 -Address: 0x0000000104109e38 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 48 -Address: 0x0000000103e75fc8 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 16 -Address: 0x0000000103dcce18 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 12 -Address: 0x0000000103fb5258 -Refc: 2 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 6 -Address: 0x0000000103dd5abc -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 29 -Address: 0x000000010402c4c8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 107 -Address: 0x0000000103e74414 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 25 -Address: 0x000000010400a4c0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 8 -Address: 0x000000010421ce60 -Refc: 2 -=fun -Module: file -Uniq: 1459081 -Index: 2 -Address: 0x0000000103e19554 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 2 -Address: 0x0000000104161598 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 5 -Address: 0x0000000103d9445c -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 3 -Address: 0x0000000103feec90 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 82 -Address: 0x0000000103e7253c -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 7 -Address: 0x000000010414c598 -Refc: 1 -=fun -Module: showtime -Uniq: 22478307 -Index: 2 -Address: 0x000000010413fa10 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 38 -Address: 0x0000000103eb03ac -Refc: 1 -=fun -Module: sys -Uniq: 62925399 -Index: 1 -Address: 0x00000001042065c8 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 42 -Address: 0x000000010421c860 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 5 -Address: 0x0000000103e7b940 -Refc: 2 -=fun -Module: rpc -Uniq: 70687560 -Index: 4 -Address: 0x0000000103ff5e84 -Refc: 1 -=fun -Module: inet_config -Uniq: 64624012 -Index: 3 -Address: 0x0000000103fd3b08 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 6 -Address: 0x0000000104224028 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 17 -Address: 0x0000000103fb4f78 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 7 -Address: 0x0000000104020c40 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 6 -Address: 0x000000010400c558 -Refc: 2 -=fun -Module: gen_statem -Uniq: 58250722 -Index: 2 -Address: 0x0000000104068118 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 21 -Address: 0x000000010421a340 -Refc: 1 -=fun -Module: ets -Uniq: 30908443 -Index: 0 -Address: 0x0000000103e3c5e8 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 0 -Address: 0x0000000103ecc63c -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 4 -Address: 0x0000000103eb2810 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 8 -Address: 0x0000000104153980 -Refc: 2 -=fun -Module: showtime_ffi -Uniq: 122038219 -Index: 2 -Address: 0x0000000104221120 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 12 -Address: 0x0000000104146a10 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 39 -Address: 0x0000000103e76350 -Refc: 2 -=fun -Module: maps -Uniq: 48010870 -Index: 5 -Address: 0x0000000104036b58 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 16 -Address: 0x000000010414c028 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 9 -Address: 0x0000000104226a80 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 14 -Address: 0x000000010402cfa0 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 3 -Address: 0x0000000103f8cfbc -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 36 -Address: 0x000000010400bd1c -Refc: 1 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 9 -Address: 0x0000000104209508 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 11 -Address: 0x0000000103fe5150 -Refc: 2 -=fun -Module: prim_tty -Uniq: 75477062 -Index: 2 -Address: 0x00000001040782a0 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 9 -Address: 0x0000000104158850 -Refc: 2 -=fun -Module: ssl_config -Uniq: 64895055 -Index: 3 -Address: 0x0000000104134118 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 0 -Address: 0x00000001041fc8ec -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 9 -Address: 0x0000000103fb9d10 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 65 -Address: 0x0000000103e74fa4 -Refc: 1 -=fun -Module: logger_simple_h -Uniq: 105730862 -Index: 2 -Address: 0x0000000103efcd88 -Refc: 1 -=fun -Module: supervisor -Uniq: 63985753 -Index: 10 -Address: 0x0000000103e4c31c -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 10 -Address: 0x0000000103f59190 -Refc: 5 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 49 -Address: 0x0000000103eafcc0 -Refc: 1 -=fun -Module: gleam_stdlib -Uniq: 79074729 -Index: 0 -Address: 0x000000010416a914 -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 1 -Address: 0x0000000103ddb680 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 3 -Address: 0x00000001040c5c88 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 8 -Address: 0x0000000103e7b18c -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 8 -Address: 0x0000000103dcd328 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 7 -Address: 0x00000001040437d0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 21 -Address: 0x000000010402c8b0 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 4 -Address: 0x0000000103fb4000 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 99 -Address: 0x0000000103e71188 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 17 -Address: 0x000000010400b6e4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 0 -Address: 0x000000010421d9c8 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 8 -Address: 0x000000010420bda8 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 21 -Address: 0x0000000103ecb0cc -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 23 -Address: 0x0000000103eb1430 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 18 -Address: 0x00000001040dcf28 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 1 -Address: 0x0000000104147318 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 42 -Address: 0x0000000103e761b0 -Refc: 1 -=fun -Module: user_drv -Uniq: 115201613 -Index: 1 -Address: 0x0000000104059384 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 15 -Address: 0x000000010414c0a8 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 13 -Address: 0x0000000103ef2658 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 46 -Address: 0x0000000103eafed0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 34 -Address: 0x000000010421ab28 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 4 -Address: 0x0000000103fe55e8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 29 -Address: 0x0000000103e771f8 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 20 -Address: 0x0000000104159980 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 33 -Address: 0x000000010414b230 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 5 -Address: 0x00000001040d3c90 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 8 -Address: 0x0000000103e3bf04 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 12 -Address: 0x0000000103eb1dc0 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 0 -Address: 0x0000000104153d7c -Refc: 1 -=fun -Module: logger_h_common -Uniq: 73693308 -Index: 0 -Address: 0x00000001040c2750 -Refc: 1 -=fun -Module: 'glint@flag@constraint' -Uniq: 83988546 -Index: 0 -Address: 0x000000010414e7f0 -Refc: 1 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 0 -Address: 0x00000001041f9a98 -Refc: 2 -=fun -Module: zlib -Uniq: 85031762 -Index: 0 -Address: 0x0000000103db9dc8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 63 -Address: 0x0000000103e75178 -Refc: 1 -=fun -Module: group -Uniq: 88293013 -Index: 0 -Address: 0x00000001040897e8 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 24 -Address: 0x000000010414a200 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 16 -Address: 0x0000000103ef1a64 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 10 -Address: 0x0000000104042da4 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 6 -Address: 0x00000001040297f0 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 28 -Address: 0x000000010400a1c0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 15 -Address: 0x000000010421bd5c -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 9 -Address: 0x0000000104160cdc -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 1 -Address: 0x0000000104159538 -Refc: 2 -=fun -Module: gen_event -Uniq: 37613186 -Index: 3 -Address: 0x0000000103ee1f10 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 10 -Address: 0x0000000103d921e8 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 1 -Address: 0x0000000103fba0a0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 89 -Address: 0x0000000103e71e70 -Refc: 1 -=fun -Module: supervisor -Uniq: 63985753 -Index: 2 -Address: 0x0000000103e4cbd8 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 2 -Address: 0x0000000103f59a88 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 57 -Address: 0x0000000103eaf984 -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 9 -Address: 0x0000000103de1a30 -Refc: 1 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 0 -Address: 0x000000010412acf0 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 64 -Address: 0x0000000103eaf3d8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 0 -Address: 0x0000000103e7c3ac -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 0 -Address: 0x0000000103dcd720 -Refc: 1 -=fun -Module: code -Uniq: 38778589 -Index: 5 -Address: 0x0000000103e22b18 -Refc: 1 -=fun -Module: inet_db -Uniq: 46329474 -Index: 7 -Address: 0x0000000103fce5f0 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 9 -Address: 0x000000010400c1b4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 24 -Address: 0x0000000104219808 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 0 -Address: 0x000000010420bfc0 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 13 -Address: 0x0000000103ecb610 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 31 -Address: 0x0000000103eb0988 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 18 -Address: 0x000000010416143c -Refc: 1 -=fun -Module: beam_lib -Uniq: 45141944 -Index: 2 -Address: 0x0000000103f998f8 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 0 -Address: 0x0000000103e87ec0 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 9 -Address: 0x0000000104146bf4 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 34 -Address: 0x0000000103e768a0 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 23 -Address: 0x000000010414b9f8 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 5 -Address: 0x0000000103ef2d4c -Refc: 1 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 4 -Address: 0x0000000104227980 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 2 -Address: 0x00000001042090a0 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 12 -Address: 0x0000000103fe4ee8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 21 -Address: 0x0000000103e77fc8 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 12 -Address: 0x0000000104158bdc -Refc: 1 -=fun -Module: io_lib -Uniq: 6600873 -Index: 2 -Address: 0x0000000104096d28 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 76 -Address: 0x0000000103e7355c -Refc: 1 -=fun -Module: epp -Uniq: 124355082 -Index: 7 -Address: 0x00000001040fbf48 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 41 -Address: 0x000000010414c6b0 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 52 -Address: 0x0000000103eafc48 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 13 -Address: 0x00000001040d8740 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 4 -Address: 0x0000000103de2530 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 55 -Address: 0x0000000103e75b8c -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 4 -Address: 0x000000010410a0d0 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 13 -Address: 0x0000000103dcd0e8 -Refc: 1 -=fun -Module: standard_error -Uniq: 123115530 -Index: 0 -Address: 0x0000000103fbd440 -Refc: 3 -=fun -Module: global_group -Uniq: 133931896 -Index: 2 -Address: 0x0000000104043a78 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@runner' -Uniq: 6773126 -Index: 0 -Address: 0x000000010421fad4 -Refc: 1 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 3 -Address: 0x0000000103dd2aa8 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 15 -Address: 0x0000000103fb4dd8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 110 -Address: 0x0000000103e78be0 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 20 -Address: 0x000000010400b098 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 7 -Address: 0x000000010421ced8 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 18 -Address: 0x0000000103ecb2a8 -Refc: 2 -=fun -Module: 'gleam@erlang' -Uniq: 90512636 -Index: 0 -Address: 0x0000000104140c68 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 1 -Address: 0x0000000104161788 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 2 -Address: 0x0000000103d87ad8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 81 -Address: 0x0000000103e725a4 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 6 -Address: 0x0000000103feea70 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 2 -Address: 0x000000010414cae0 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 10 -Address: 0x0000000103ef2908 -Refc: 4 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 33 -Address: 0x0000000103eb0788 -Refc: 1 -=fun -Module: gleam_erlang_ffi -Uniq: 130811285 -Index: 0 -Address: 0x0000000104200600 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 41 -Address: 0x000000010421c80c -Refc: 1 -=fun -Module: rpc -Uniq: 70687560 -Index: 7 -Address: 0x0000000103ff6040 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 24 -Address: 0x0000000103e77798 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 3 -Address: 0x00000001042242c8 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 20 -Address: 0x0000000103fb4c40 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 4 -Address: 0x0000000104020d10 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 1 -Address: 0x000000010400cca4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 36 -Address: 0x000000010414c228 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 16 -Address: 0x000000010421b89c -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 5 -Address: 0x0000000103ecc038 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 7 -Address: 0x0000000103eb23c0 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 2 -Address: 0x00000001040dff84 -Refc: 2 -=fun -Module: glint -Uniq: 18128761 -Index: 7 -Address: 0x00000001041539e0 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 7 -Address: 0x0000000103e3c024 -Refc: 1 -=fun -Module: 'gleam@set' -Uniq: 15699406 -Index: 0 -Address: 0x000000010414fb38 -Refc: 2 -=fun -Module: logger_server -Uniq: 19349920 -Index: 8 -Address: 0x0000000103e87cd8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 58 -Address: 0x0000000103e62720 -Refc: 2 -=fun -Module: maps -Uniq: 48010870 -Index: 0 -Address: 0x0000000104032b40 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 31 -Address: 0x000000010414af10 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 12 -Address: 0x00000001042275b0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 11 -Address: 0x000000010402b4c8 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 6 -Address: 0x0000000103f8cb00 -Refc: 1 -=fun -Module: 'showtime@internal@erlang@event_handler' -Uniq: 124289607 -Index: 0 -Address: 0x00000001041f7b88 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 50 -Address: 0x000000010421d448 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 12 -Address: 0x0000000104160f04 -Refc: 1 -=fun -Module: prim_tty -Uniq: 75477062 -Index: 1 -Address: 0x0000000104078348 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 4 -Address: 0x0000000104159260 -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 5 -Address: 0x00000001041fc3ec -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 10 -Address: 0x0000000103fb9b58 -Refc: 2 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 9 -Address: 0x0000000103fee730 -Refc: 2 -=fun -Module: 'day7@day7_test' -Uniq: 115477595 -Index: 1 -Address: 0x000000010421f230 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 68 -Address: 0x0000000103e744c0 -Refc: 2 -=fun -Module: logger_simple_h -Uniq: 105730862 -Index: 1 -Address: 0x0000000103efcdb8 -Refc: 2 -=fun -Module: gen -Uniq: 105431365 -Index: 2 -Address: 0x0000000103e0fdd8 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 7 -Address: 0x0000000103e4c6cc -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 7 -Address: 0x0000000103f59580 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 60 -Address: 0x0000000103eaf6f4 -Refc: 1 -=fun -Module: gleam_stdlib -Uniq: 79074729 -Index: 3 -Address: 0x0000000104168768 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 12 -Address: 0x0000000103de1748 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 6 -Address: 0x00000001040cba20 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 15 -Address: 0x0000000103e798c0 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 12 -Address: 0x0000000104109a58 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@module_handler' -Uniq: 57223230 -Index: 2 -Address: 0x0000000104207cbc -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 5 -Address: 0x0000000103dcd260 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 22 -Address: 0x000000010402cb28 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 7 -Address: 0x0000000103fb2e48 -Refc: 2 -=fun -Module: code -Uniq: 38778589 -Index: 0 -Address: 0x0000000103e22fd0 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 9 -Address: 0x0000000104020c0c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 102 -Address: 0x0000000103e6cfb8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 12 -Address: 0x000000010400bed4 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 11 -Address: 0x000000010420c44c -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 31 -Address: 0x000000010421aba8 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 10 -Address: 0x0000000103ecba6c -Refc: 3 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 18 -Address: 0x0000000103eb1868 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 6 -Address: 0x0000000104146f78 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 41 -Address: 0x0000000103e762a8 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 10 -Address: 0x000000010414c4b0 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 2 -Address: 0x0000000103ef3684 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 41 -Address: 0x0000000103eb01fc -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 33 -Address: 0x000000010421ab58 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 1 -Address: 0x0000000103fe5720 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 7 -Address: 0x0000000104208948 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 16 -Address: 0x0000000103e79598 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 75 -Address: 0x0000000103e736a0 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 2 -Address: 0x00000001040fca1c -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 15 -Address: 0x0000000103eb1ad8 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 10 -Address: 0x00000001040d6ab8 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 15 -Address: 0x0000000103e3b54c -Refc: 1 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 7 -Address: 0x00000001041f97b0 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 9 -Address: 0x00000001040cb7a8 -Refc: 2 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 2 -Address: 0x00000001040d0480 -Refc: 2 -=fun -Module: 'aoc2023@@main' -Uniq: 70697990 -Index: 0 -Address: 0x00000001040ea8a8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 50 -Address: 0x0000000103e75dd0 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 18 -Address: 0x0000000103dccb70 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 9 -Address: 0x000000010404301c -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 10 -Address: 0x0000000103fb29c8 -Refc: 2 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 4 -Address: 0x0000000103dd5b84 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 3 -Address: 0x000000010402a9d8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 31 -Address: 0x0000000104009e40 -Refc: 1 -=fun -Module: file -Uniq: 1459081 -Index: 0 -Address: 0x0000000103e1963c -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 10 -Address: 0x000000010421cbb8 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 4 -Address: 0x0000000104160fb0 -Refc: 1 -=fun -Module: gen_event -Uniq: 37613186 -Index: 0 -Address: 0x0000000103edc348 -Refc: 2 -=fun -Module: erl_features -Uniq: 44278689 -Index: 2 -Address: 0x0000000103fb9ff8 -Refc: 2 -=fun -Module: init -Uniq: 72673429 -Index: 7 -Address: 0x0000000103d943f8 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 1 -Address: 0x0000000103fef0d8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 92 -Address: 0x0000000103e71a78 -Refc: 2 -=fun -Module: file_io_server -Uniq: 82162284 -Index: 1 -Address: 0x0000000103e92898 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 36 -Address: 0x0000000103eb0500 -Refc: 1 -=fun -Module: showtime -Uniq: 22478307 -Index: 0 -Address: 0x000000010413fce0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 44 -Address: 0x000000010421cae0 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 67 -Address: 0x0000000103eaec10 -Refc: 2 -=fun -Module: rpc -Uniq: 70687560 -Index: 2 -Address: 0x0000000103ff60e0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 7 -Address: 0x0000000103e54ed8 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 4 -Address: 0x0000000104224220 -Refc: 1 -=fun -Module: code -Uniq: 38778589 -Index: 8 -Address: 0x0000000103e22568 -Refc: 1 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 1 -Address: 0x0000000104020fd8 -Refc: 2 -=fun -Module: gen_server -Uniq: 22931368 -Index: 0 -Address: 0x0000000103f1edb0 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 4 -Address: 0x0000000103fcec9c -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 4 -Address: 0x000000010400c8e0 -Refc: 1 -=fun -Module: gen_statem -Uniq: 58250722 -Index: 0 -Address: 0x000000010405e830 -Refc: 2 -=fun -Module: simplifile -Uniq: 17272755 -Index: 3 -Address: 0x000000010420bac4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 23 -Address: 0x0000000104219c6c -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 2 -Address: 0x0000000103ecc36c -Refc: 1 -=fun -Module: httpc_manager -Uniq: 90163599 -Index: 0 -Address: 0x0000000104112eb0 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 17 -Address: 0x000000010416139c -Refc: 1 -=fun -Module: ets -Uniq: 30908443 -Index: 2 -Address: 0x0000000103e3c300 -Refc: 1 -=fun -Module: erl_init -Uniq: 96508615 -Index: 0 -Address: 0x0000000103d860a8 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 26 -Address: 0x0000000103eb0fc0 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 10 -Address: 0x00000001041538c0 -Refc: 2 -=fun -Module: showtime_ffi -Uniq: 122038219 -Index: 0 -Address: 0x0000000104221598 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 5 -Address: 0x0000000103e87ab8 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 14 -Address: 0x0000000104146950 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 33 -Address: 0x0000000103e768d8 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 18 -Address: 0x000000010414bf00 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 7 -Address: 0x00000001042275e0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 12 -Address: 0x000000010402b830 -Refc: 2 -=fun -Module: inets_trace -Uniq: 58819832 -Index: 0 -Address: 0x00000001041156c8 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 1 -Address: 0x0000000103f8cd98 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 9 -Address: 0x0000000103fe53f8 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 15 -Address: 0x0000000104158f14 -Refc: 1 -=fun -Module: ssl_config -Uniq: 64895055 -Index: 1 -Address: 0x00000001041346a8 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 15 -Address: 0x0000000103fb92a8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 67 -Address: 0x0000000103e74538 -Refc: 2 -=fun -Module: logger_simple_h -Uniq: 105730862 -Index: 4 -Address: 0x0000000103efca28 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 12 -Address: 0x0000000103e4c178 -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 8 -Address: 0x0000000103f594f8 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 55 -Address: 0x0000000103eafa10 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 7 -Address: 0x0000000103de1ee4 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 1 -Address: 0x00000001040cbe68 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 10 -Address: 0x0000000103e7a4b8 -Refc: 2 -=fun -Module: httpc -Uniq: 36342138 -Index: 1 -Address: 0x000000010410a4b0 -Refc: 2 -=fun -Module: httpc_cookie -Uniq: 22295768 -Index: 0 -Address: 0x000000010411a790 -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 10 -Address: 0x0000000103dcd230 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 1 -Address: 0x0000000104043b68 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 2 -Address: 0x0000000103fb3be0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 27 -Address: 0x000000010402e088 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 109 -Address: 0x0000000103e77eb8 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 9 -Address: 0x0000000103fcdf74 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 23 -Address: 0x000000010400a8f0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 2 -Address: 0x000000010421d758 -Refc: 1 -=fun -Module: ets -Uniq: 30908443 -Index: 17 -Address: 0x0000000103e3bd88 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 23 -Address: 0x0000000103eca998 -Refc: 3 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 21 -Address: 0x0000000103eb1560 -Refc: 2 -=fun -Module: 'gleam@result' -Uniq: 44749367 -Index: 2 -Address: 0x000000010415f9b8 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 3 -Address: 0x00000001041471d0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 84 -Address: 0x0000000103e723f0 -Refc: 2 -=fun -Module: user_drv -Uniq: 115201613 -Index: 3 -Address: 0x00000001040592e4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 1 -Address: 0x000000010414cb60 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 15 -Address: 0x0000000103ef1c90 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 44 -Address: 0x0000000103eb1528 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 36 -Address: 0x000000010421b7b8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 31 -Address: 0x0000000103e76b60 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 23 -Address: 0x0000000103fb5138 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 35 -Address: 0x000000010414b970 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 7 -Address: 0x00000001040d56d0 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 10 -Address: 0x0000000103e3bde4 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 2 -Address: 0x0000000103eb2b58 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 2 -Address: 0x0000000104153bb8 -Refc: 2 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 2 -Address: 0x00000001041f9998 -Refc: 2 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 5 -Address: 0x00000001040d05d8 -Refc: 2 -=fun -Module: 'glint@flag@constraint' -Uniq: 83988546 -Index: 2 -Address: 0x000000010414e0bc -Refc: 1 -=fun -Module: maps -Uniq: 48010870 -Index: 3 -Address: 0x0000000104036d10 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 57 -Address: 0x0000000103e75a64 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 26 -Address: 0x000000010414b78c -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 4 -Address: 0x0000000104029ad8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 34 -Address: 0x0000000104009cd8 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 49 -Address: 0x000000010421d33c -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 11 -Address: 0x0000000104160e30 -Refc: 1 -=fun -Module: erpc -Uniq: 95647987 -Index: 1 -Address: 0x000000010404df68 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 7 -Address: 0x0000000104158980 -Refc: 1 -=fun -Module: gen_event -Uniq: 37613186 -Index: 5 -Address: 0x0000000103ee1788 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 6 -Address: 0x00000001041fc2f0 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 7 -Address: 0x0000000103fb6db8 -Refc: 2 -=fun -Module: init -Uniq: 72673429 -Index: 12 -Address: 0x0000000103d93630 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 16 -Address: 0x0000000104146e7c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 91 -Address: 0x0000000103e71be8 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 4 -Address: 0x0000000103e4cb28 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 0 -Address: 0x0000000103f5a090 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 63 -Address: 0x0000000103eaf504 -Refc: 1 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 2 -Address: 0x000000010412a870 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 2 -Address: 0x0000000103e7c1f8 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 9 -Address: 0x0000000104109cb8 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 2 -Address: 0x0000000103dcd680 -Refc: 1 -=fun -Module: code -Uniq: 38778589 -Index: 3 -Address: 0x0000000103e22c68 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 19 -Address: 0x000000010402bf98 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 101 -Address: 0x0000000103e70dac -Refc: 1 -=fun -Module: inet_db -Uniq: 46329474 -Index: 1 -Address: 0x0000000103fc5178 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 15 -Address: 0x000000010400babc -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 26 -Address: 0x0000000104218d3c -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 6 -Address: 0x000000010420b210 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 20 -Address: 0x00000001040dd5c0 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 20 -Address: 0x0000000104161634 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 15 -Address: 0x0000000103ecb4a8 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 29 -Address: 0x0000000103eb0bc8 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 11 -Address: 0x0000000104146b10 -Refc: 1 -=fun -Module: beam_lib -Uniq: 45141944 -Index: 0 -Address: 0x0000000103f9a288 -Refc: 2 -=fun -Module: logger_server -Uniq: 19349920 -Index: 2 -Address: 0x0000000103e87e28 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 44 -Address: 0x0000000103e5ecd8 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 9 -Address: 0x000000010414c2e0 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 7 -Address: 0x0000000103ef2cd0 -Refc: 1 -=fun -Module: logger -Uniq: 1449854 -Index: 1 -Address: 0x0000000103ed5f00 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 2 -Address: 0x0000000104227ad0 -Refc: 2 -=fun -Module: prim_inet -Uniq: 37477703 -Index: 0 -Address: 0x0000000103dae580 -Refc: 1 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 0 -Address: 0x0000000104209538 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 2 -Address: 0x0000000103fe56d0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 23 -Address: 0x0000000103e77810 -Refc: 2 -=fun -Module: io_lib -Uniq: 6600873 -Index: 0 -Address: 0x000000010409b660 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 18 -Address: 0x0000000104159368 -Refc: 1 -=fun -Module: ssl_config -Uniq: 64895055 -Index: 4 -Address: 0x0000000104133f60 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 11 -Address: 0x00000001041fbc98 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 78 -Address: 0x0000000103e728a0 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 5 -Address: 0x00000001040fc2c0 -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 13 -Address: 0x0000000103f58ee8 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 15 -Address: 0x00000001040dbbb0 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 10 -Address: 0x0000000103eb2000 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 6 -Address: 0x0000000104109ee0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 49 -Address: 0x0000000103e75ed8 -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 15 -Address: 0x0000000103dccfd0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 28 -Address: 0x00000001040304f0 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 13 -Address: 0x0000000103fb4bd0 -Refc: 2 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 1 -Address: 0x0000000103dd5be4 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 104 -Address: 0x0000000103e70bf4 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 26 -Address: 0x000000010400a490 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 9 -Address: 0x000000010421cd80 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 3 -Address: 0x0000000104161300 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 4 -Address: 0x0000000103d944c8 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 4 -Address: 0x0000000103feeba8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 83 -Address: 0x0000000103e724d0 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 4 -Address: 0x000000010414ca0c -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 39 -Address: 0x0000000103eb0314 -Refc: 1 -=fun -Module: showtime -Uniq: 22478307 -Index: 3 -Address: 0x000000010413f9dc -Refc: 1 -=fun -Module: ssl_manager -Uniq: 40265571 -Index: 0 -Address: 0x000000010412e528 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 43 -Address: 0x000000010421ca70 -Refc: 1 -=fun -Module: sys -Uniq: 62925399 -Index: 0 -Address: 0x0000000104205128 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 26 -Address: 0x0000000103e774f8 -Refc: 1 -=fun -Module: rpc -Uniq: 70687560 -Index: 5 -Address: 0x0000000103ff5d60 -Refc: 1 -=fun -Module: inet_config -Uniq: 64624012 -Index: 0 -Address: 0x0000000103fd3dd0 -Refc: 1 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 1 -Address: 0x0000000104223388 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 18 -Address: 0x0000000103fb4d58 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 6 -Address: 0x0000000104020cc8 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 7 -Address: 0x000000010400c340 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 8 -Address: 0x00000001040fbef4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 38 -Address: 0x000000010414c3f8 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 18 -Address: 0x000000010421acac -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 7 -Address: 0x0000000103ecbfe0 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 5 -Address: 0x0000000103eb2690 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 9 -Address: 0x0000000104153920 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 1 -Address: 0x0000000103e3c6d0 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 10 -Address: 0x0000000103e8764c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 36 -Address: 0x0000000103e5b808 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 17 -Address: 0x000000010414bf80 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 10 -Address: 0x0000000104226a30 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 9 -Address: 0x0000000104029660 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 4 -Address: 0x0000000103f8b3e0 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 37 -Address: 0x000000010400be2c -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 52 -Address: 0x000000010421d538 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 8 -Address: 0x00000001042088c8 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 10 -Address: 0x0000000103fe53a4 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 14 -Address: 0x00000001041610ec -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 10 -Address: 0x0000000104158a58 -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 3 -Address: 0x00000001041fc574 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 8 -Address: 0x0000000103fb9db8 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 70 -Address: 0x0000000103e74448 -Refc: 2 -=fun -Module: logger_simple_h -Uniq: 105730862 -Index: 3 -Address: 0x0000000103efcb50 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 9 -Address: 0x0000000103e4c41c -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 5 -Address: 0x0000000103f597f0 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 50 -Address: 0x0000000103eafd50 -Refc: 1 -=fun -Module: gleam_stdlib -Uniq: 79074729 -Index: 1 -Address: 0x000000010416a8b4 -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 2 -Address: 0x0000000103dd9180 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 4 -Address: 0x00000001040c5bf8 -Refc: 2 -=fun -Module: file_server -Uniq: 30066188 -Index: 0 -Address: 0x0000000103e07538 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 9 -Address: 0x0000000103e7a9d0 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 7 -Address: 0x0000000103dcd4b0 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 4 -Address: 0x00000001040431a4 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 20 -Address: 0x000000010402c790 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 5 -Address: 0x0000000103fb3798 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 11 -Address: 0x00000001040209b0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 96 -Address: 0x0000000103e71560 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 18 -Address: 0x000000010400b33c -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 1 -Address: 0x000000010421d950 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 9 -Address: 0x000000010420c390 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 20 -Address: 0x0000000103ecb100 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 16 -Address: 0x0000000103eb19fc -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 17 -Address: 0x00000001040dcbb8 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 0 -Address: 0x00000001041474f8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 43 -Address: 0x0000000103e7622c -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 12 -Address: 0x000000010414c3c8 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 12 -Address: 0x0000000103ef26a8 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 47 -Address: 0x0000000103eafea0 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 35 -Address: 0x000000010421b220 -Refc: 1 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 5 -Address: 0x0000000104208d28 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 7 -Address: 0x0000000103fe54b0 -Refc: 1 -=fun -Module: error_logger -Uniq: 17945318 -Index: 1 -Address: 0x0000000103ef8a30 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 18 -Address: 0x0000000103e78da8 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 21 -Address: 0x0000000104159a88 -Refc: 1 -=fun -Module: epp -Uniq: 124355082 -Index: 0 -Address: 0x00000001040fcb94 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 13 -Address: 0x0000000103eb1cc0 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 4 -Address: 0x00000001040d3908 -Refc: 2 -=fun -Module: glint -Uniq: 18128761 -Index: 1 -Address: 0x0000000104153c40 -Refc: 2 -=fun -Module: snag -Uniq: 96707762 -Index: 0 -Address: 0x00000001041f6298 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 9 -Address: 0x0000000103e3be68 -Refc: 1 -=fun -Module: logger_h_common -Uniq: 73693308 -Index: 1 -Address: 0x00000001040c26f0 -Refc: 1 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 0 -Address: 0x00000001040d0390 -Refc: 2 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 1 -Address: 0x00000001041f9a18 -Refc: 2 -=fun -Module: zlib -Uniq: 85031762 -Index: 1 -Address: 0x0000000103dba870 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 60 -Address: 0x0000000103e75970 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 25 -Address: 0x000000010414b8c4 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 11 -Address: 0x0000000104042be0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 1 -Address: 0x000000010402a178 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 8 -Address: 0x0000000103fb2560 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 29 -Address: 0x0000000104009ed8 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 12 -Address: 0x000000010421c4cc -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 6 -Address: 0x0000000104160b08 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 2 -Address: 0x0000000104159450 -Refc: 2 -=fun -Module: gen_event -Uniq: 37613186 -Index: 2 -Address: 0x0000000103ee2098 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 9 -Address: 0x0000000103d936e0 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 0 -Address: 0x0000000103fba268 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 94 -Address: 0x0000000103e71898 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 1 -Address: 0x0000000103e4cdc0 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 58 -Address: 0x0000000103eaf914 -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 10 -Address: 0x0000000103de19a8 -Refc: 1 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 1 -Address: 0x000000010412aae4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 46 -Address: 0x000000010421cd28 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 65 -Address: 0x0000000103eaed88 -Refc: 2 -=fun -Module: rpc -Uniq: 70687560 -Index: 0 -Address: 0x0000000103ff63cc -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 1 -Address: 0x0000000103e7c2c4 -Refc: 1 -=fun -Module: timer -Uniq: 46706930 -Index: 0 -Address: 0x00000001040ad688 -Refc: 2 -=fun -Module: code -Uniq: 38778589 -Index: 6 -Address: 0x0000000103e22a3c -Refc: 1 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 3 -Address: 0x0000000104020ea0 -Refc: 1 -=fun -Module: inet_db -Uniq: 46329474 -Index: 6 -Address: 0x0000000103fce7a8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 10 -Address: 0x000000010400c24c -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 1 -Address: 0x000000010420bce4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 25 -Address: 0x00000001042192f8 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 12 -Address: 0x0000000103ecb760 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 24 -Address: 0x0000000103eb12a8 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 12 -Address: 0x0000000104153800 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 19 -Address: 0x00000001041614f8 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 7 -Address: 0x0000000103e87988 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 8 -Address: 0x0000000104146c28 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 35 -Address: 0x0000000103e76810 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 20 -Address: 0x000000010414bde8 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 4 -Address: 0x0000000103ef3178 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 5 -Address: 0x0000000104227878 -Refc: 2 -=fun -Module: lists -Uniq: 104401092 -Index: 0 -Address: 0x0000000103f04578 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 13 -Address: 0x0000000104158d90 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 13 -Address: 0x0000000103fb9958 -Refc: 1 -=fun -Module: proc_lib -Uniq: 54621022 -Index: 1 -Address: 0x0000000103e9c360 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 77 -Address: 0x0000000103e72ef0 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 53 -Address: 0x0000000103eafaa0 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 12 -Address: 0x00000001040d6f90 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 5 -Address: 0x0000000103de24b4 -Refc: 1 -=fun -Module: logger_std_h -Uniq: 4673888 -Index: 0 -Address: 0x00000001040bcb10 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 52 -Address: 0x0000000103e75c80 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 3 -Address: 0x000000010410a278 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 12 -Address: 0x0000000103dcd0b4 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 3 -Address: 0x0000000104043968 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 25 -Address: 0x000000010402dfb0 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 0 -Address: 0x0000000103fb5938 -Refc: 1 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 2 -Address: 0x0000000103dd3288 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 111 -Address: 0x0000000103e7b8d8 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 11 -Address: 0x0000000103fceb98 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 21 -Address: 0x000000010400ad48 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 4 -Address: 0x000000010421d590 -Refc: 2 -=fun -Module: proplists -Uniq: 31251554 -Index: 0 -Address: 0x0000000103f81c80 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 17 -Address: 0x0000000103ecb320 -Refc: 2 -=fun -Module: 'gleam@result' -Uniq: 44749367 -Index: 0 -Address: 0x000000010415fa58 -Refc: 2 -=fun -Module: init -Uniq: 72673429 -Index: 1 -Address: 0x0000000103d87dd0 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 7 -Address: 0x0000000103fee9a0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 86 -Address: 0x0000000103e72310 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 3 -Address: 0x000000010414ca40 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 9 -Address: 0x0000000103ef2b3c -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 34 -Address: 0x0000000103eb06a0 -Refc: 1 -=fun -Module: gleam_erlang_ffi -Uniq: 130811285 -Index: 1 -Address: 0x00000001042004e0 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 38 -Address: 0x000000010421c07c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 25 -Address: 0x0000000103e77528 -Refc: 2 -=fun -Module: ssl_pem_cache -Uniq: 58460895 -Index: 0 -Address: 0x0000000104126cb0 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 2 -Address: 0x0000000104223980 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 21 -Address: 0x0000000103fb4e48 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 2 -Address: 0x000000010400ca50 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 37 -Address: 0x000000010414c310 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 17 -Address: 0x000000010421b310 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 4 -Address: 0x0000000103ecc138 -Refc: 2 -=fun -Module: logger_formatter -Uniq: 60349323 -Index: 0 -Address: 0x00000001040b6520 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 1 -Address: 0x00000001040d1f00 -Refc: 2 -=fun -Module: glint -Uniq: 18128761 -Index: 4 -Address: 0x0000000104152148 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 4 -Address: 0x0000000103e3bf88 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 0 -Address: 0x0000000103eb2ec8 -Refc: 1 -=fun -Module: 'gleam@set' -Uniq: 15699406 -Index: 3 -Address: 0x000000010414f218 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 59 -Address: 0x0000000103e60180 -Refc: 2 -=fun -Module: maps -Uniq: 48010870 -Index: 1 -Address: 0x0000000104032ae8 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 28 -Address: 0x000000010414aa60 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 13 -Address: 0x00000001042277f0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 10 -Address: 0x00000001040290b8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 32 -Address: 0x0000000104009d98 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@event_handler' -Uniq: 124289607 -Index: 3 -Address: 0x00000001041f7648 -Refc: 2 -=fun -Module: edlin -Uniq: 47380248 -Index: 0 -Address: 0x0000000104092d50 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 51 -Address: 0x000000010421d3a8 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 13 -Address: 0x000000010416104c -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 5 -Address: 0x0000000104158fe4 -Refc: 1 -=fun -Module: gen_event -Uniq: 37613186 -Index: 7 -Address: 0x0000000103ee1450 -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 4 -Address: 0x00000001041fc4c8 -Refc: 2 -=fun -Module: erl_features -Uniq: 44278689 -Index: 5 -Address: 0x0000000103fb7ea0 -Refc: 2 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 10 -Address: 0x0000000103fee650 -Refc: 2 -=fun -Module: 'day7@day7_test' -Uniq: 115477595 -Index: 0 -Address: 0x000000010421f2e0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 69 -Address: 0x0000000103e74238 -Refc: 1 -=fun -Module: gen -Uniq: 105431365 -Index: 1 -Address: 0x0000000103e0fec0 -Refc: 1 -=fun -Module: supervisor -Uniq: 63985753 -Index: 6 -Address: 0x0000000103e4c92c -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 6 -Address: 0x0000000103f596b8 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 61 -Address: 0x0000000103eaf688 -Refc: 1 -=fun -Module: gleam_stdlib -Uniq: 79074729 -Index: 4 -Address: 0x000000010416a708 -Refc: 2 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 4 -Address: 0x000000010412a3d0 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 7 -Address: 0x00000001040cb9c0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 12 -Address: 0x0000000103e79d04 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 11 -Address: 0x0000000104109ae0 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@module_handler' -Uniq: 57223230 -Index: 1 -Address: 0x00000001042079e0 -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 4 -Address: 0x0000000103dcd5d0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 17 -Address: 0x000000010402d8b8 -Refc: 2 -=fun -Module: code -Uniq: 38778589 -Index: 1 -Address: 0x0000000103e22f08 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 8 -Address: 0x000000010401ec90 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 103 -Address: 0x0000000103e70c28 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 3 -Address: 0x0000000103fcbd60 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 13 -Address: 0x000000010400bd68 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 28 -Address: 0x000000010421a77c -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 4 -Address: 0x000000010420bf18 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 9 -Address: 0x0000000103ecbab0 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 22 -Address: 0x00000001040ddba0 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 22 -Address: 0x0000000104161834 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 19 -Address: 0x0000000103eb17a0 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 16 -Address: 0x0000000103fb9a90 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 5 -Address: 0x0000000104147070 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 46 -Address: 0x0000000103e76148 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 11 -Address: 0x000000010414c1f8 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 1 -Address: 0x0000000103ef3cdc -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 42 -Address: 0x0000000103eb0180 -Refc: 1 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 0 -Address: 0x0000000104228478 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 0 -Address: 0x0000000103fe5770 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 6 -Address: 0x00000001042089a0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 17 -Address: 0x0000000103e79568 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 16 -Address: 0x00000001041590ac -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 9 -Address: 0x00000001041fbf24 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 72 -Address: 0x0000000103e74008 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 3 -Address: 0x00000001040fc6d8 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 9 -Address: 0x00000001040d68d8 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 12 -Address: 0x0000000103e3b9c8 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 8 -Address: 0x0000000103eb2270 -Refc: 1 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 4 -Address: 0x00000001041f9900 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 10 -Address: 0x00000001040cb5a0 -Refc: 2 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 3 -Address: 0x00000001040d078c -Refc: 1 -=fun -Module: 'glint@flag@constraint' -Uniq: 83988546 -Index: 4 -Address: 0x000000010414e828 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 51 -Address: 0x0000000103e75da0 -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 17 -Address: 0x0000000103dccca4 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 11 -Address: 0x0000000103fb20f8 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 2 -Address: 0x000000010402a688 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 106 -Address: 0x0000000103e71bb4 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 24 -Address: 0x000000010400a70c -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 11 -Address: 0x000000010421c938 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 5 -Address: 0x0000000104160ba0 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 6 -Address: 0x0000000103d94344 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 2 -Address: 0x0000000103feef48 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 93 -Address: 0x0000000103e719a8 -Refc: 2 -=fun -Module: file_io_server -Uniq: 82162284 -Index: 0 -Address: 0x0000000103e92c3c -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 6 -Address: 0x000000010414c8a0 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 37 -Address: 0x0000000103eb044c -Refc: 1 -=fun -Module: showtime -Uniq: 22478307 -Index: 1 -Address: 0x000000010413fc90 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 45 -Address: 0x000000010421ccac -Refc: 1 -=fun -Module: rpc -Uniq: 70687560 -Index: 3 -Address: 0x0000000103ff5ec0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 4 -Address: 0x0000000103e7bd08 -Refc: 2 -=fun -Module: inet_config -Uniq: 64624012 -Index: 2 -Address: 0x0000000103fd3bd8 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 7 -Address: 0x0000000104224294 -Refc: 1 -=fun -Module: code -Uniq: 38778589 -Index: 9 -Address: 0x0000000103e224e8 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 16 -Address: 0x0000000103fb50c8 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 0 -Address: 0x0000000104021170 -Refc: 2 -=fun -Module: gen_server -Uniq: 22931368 -Index: 1 -Address: 0x0000000103f22dc0 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 5 -Address: 0x000000010400c698 -Refc: 2 -=fun -Module: gen_statem -Uniq: 58250722 -Index: 1 -Address: 0x0000000104068198 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 20 -Address: 0x000000010421a5b4 -Refc: 1 -=fun -Module: ets -Uniq: 30908443 -Index: 3 -Address: 0x0000000103e3c4b4 -Refc: 1 -=fun -Module: erl_init -Uniq: 96508615 -Index: 1 -Address: 0x0000000103d86030 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 1 -Address: 0x0000000103ecc578 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 27 -Address: 0x0000000103eb0e60 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 11 -Address: 0x0000000104153890 -Refc: 1 -=fun -Module: 'gleam@set' -Uniq: 15699406 -Index: 4 -Address: 0x000000010414f0e8 -Refc: 2 -=fun -Module: showtime_ffi -Uniq: 122038219 -Index: 3 -Address: 0x0000000104221048 -Refc: 2 -=fun -Module: logger_server -Uniq: 19349920 -Index: 4 -Address: 0x0000000103e87b6c -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 13 -Address: 0x00000001041469c0 -Refc: 2 -=fun -Module: maps -Uniq: 48010870 -Index: 4 -Address: 0x0000000104036c00 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 38 -Address: 0x0000000103e76410 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 19 -Address: 0x000000010414be68 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 8 -Address: 0x00000001042272b0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 15 -Address: 0x000000010402d1b8 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 2 -Address: 0x0000000103f8d1bc -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 8 -Address: 0x0000000103fe5440 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 8 -Address: 0x0000000104158898 -Refc: 2 -=fun -Module: ssl_config -Uniq: 64895055 -Index: 2 -Address: 0x00000001041342d0 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 1 -Address: 0x00000001041fc674 -Refc: 3 -=fun -Module: proc_lib -Uniq: 54621022 -Index: 2 -Address: 0x0000000103e9c318 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 14 -Address: 0x0000000103fb9744 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 64 -Address: 0x0000000103e7502c -Refc: 1 -=fun -Module: supervisor -Uniq: 63985753 -Index: 11 -Address: 0x0000000103e4c1a8 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 11 -Address: 0x0000000103f59038 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 48 -Address: 0x0000000103eafe0c -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 0 -Address: 0x0000000103de2638 -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 2 -Address: 0x00000001040cbd30 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 11 -Address: 0x0000000103e79e60 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 0 -Address: 0x000000010410a6ac -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 9 -Address: 0x0000000103dcd540 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 6 -Address: 0x00000001040436c4 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 3 -Address: 0x0000000103fb3328 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 26 -Address: 0x000000010402de38 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 98 -Address: 0x0000000103e711b8 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 8 -Address: 0x0000000103fce290 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 16 -Address: 0x000000010400ba50 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 3 -Address: 0x0000000104217380 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 22 -Address: 0x0000000103ecae38 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 22 -Address: 0x0000000103eb0038 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 19 -Address: 0x00000001040dd0d8 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 2 -Address: 0x00000001041415b0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 85 -Address: 0x0000000103e723b0 -Refc: 1 -=fun -Module: user_drv -Uniq: 115201613 -Index: 0 -Address: 0x0000000104059448 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 14 -Address: 0x000000010414c140 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 14 -Address: 0x0000000103ef2608 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 45 -Address: 0x0000000103eb14b8 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 37 -Address: 0x000000010421bc80 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 5 -Address: 0x0000000103fe55b0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 28 -Address: 0x0000000103e773b4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 32 -Address: 0x000000010414b0a0 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 6 -Address: 0x00000001040d54e8 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 11 -Address: 0x0000000103e3bce8 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 3 -Address: 0x0000000103eb29a8 -Refc: 1 -=fun -Module: glint -Uniq: 18128761 -Index: 3 -Address: 0x0000000104153b80 -Refc: 1 -=fun -Module: 'glint@flag@constraint' -Uniq: 83988546 -Index: 1 -Address: 0x000000010414e3a0 -Refc: 1 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 3 -Address: 0x00000001041f9964 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 62 -Address: 0x0000000103e751d8 -Refc: 2 -=fun -Module: group -Uniq: 88293013 -Index: 1 -Address: 0x00000001040889e8 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 27 -Address: 0x000000010414a8d0 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 7 -Address: 0x0000000104029fb8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 35 -Address: 0x000000010400b0f4 -Refc: 1 -=fun -Module: kernel_refc -Uniq: 28224509 -Index: 0 -Address: 0x00000001040b0eb8 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 14 -Address: 0x000000010421c150 -Refc: 1 -=fun -Module: filelib -Uniq: 94480894 -Index: 0 -Address: 0x0000000104214c18 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 8 -Address: 0x0000000104160c3c -Refc: 1 -=fun -Module: erpc -Uniq: 95647987 -Index: 0 -Address: 0x000000010404e068 -Refc: 2 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 0 -Address: 0x0000000104159620 -Refc: 2 -=fun -Module: gen_event -Uniq: 37613186 -Index: 4 -Address: 0x0000000103ee1870 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 11 -Address: 0x0000000103d9368c -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 6 -Address: 0x0000000103fb7f58 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 88 -Address: 0x0000000103e7205c -Refc: 1 -=fun -Module: supervisor -Uniq: 63985753 -Index: 3 -Address: 0x0000000103e4cdf8 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 3 -Address: 0x0000000103f599d0 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 56 -Address: 0x0000000103eaf9dc -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 8 -Address: 0x0000000103de1c68 -Refc: 1 -=fun -Module: ssl_pkix_db -Uniq: 51522903 -Index: 3 -Address: 0x000000010412a708 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 8 -Address: 0x0000000104109d90 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 3 -Address: 0x0000000103e7bde0 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 1 -Address: 0x0000000103dcd6f0 -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 18 -Address: 0x000000010402ccb8 -Refc: 2 -=fun -Module: code -Uniq: 38778589 -Index: 4 -Address: 0x0000000103e22bf0 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 0 -Address: 0x0000000103fcf1a0 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 8 -Address: 0x000000010400c2f4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 27 -Address: 0x00000001042186d4 -Refc: 1 -=fun -Module: simplifile -Uniq: 17272755 -Index: 7 -Address: 0x000000010420b558 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 21 -Address: 0x00000001041616e8 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 14 -Address: 0x0000000103ecb5dc -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 30 -Address: 0x0000000103eb0aa0 -Refc: 1 -=fun -Module: beam_lib -Uniq: 45141944 -Index: 3 -Address: 0x0000000103f99718 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 1 -Address: 0x0000000103e87e60 -Refc: 2 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 10 -Address: 0x0000000104146b40 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 45 -Address: 0x0000000103e5db08 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 22 -Address: 0x000000010414bcc0 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 3 -Address: 0x0000000104227a80 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 6 -Address: 0x0000000103ef2c18 -Refc: 1 -=fun -Module: prim_inet -Uniq: 37477703 -Index: 1 -Address: 0x0000000103dae5d8 -Refc: 1 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 3 -Address: 0x0000000104208f10 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 13 -Address: 0x0000000103fe4d74 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 20 -Address: 0x0000000103e78078 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 19 -Address: 0x0000000104159418 -Refc: 1 -=fun -Module: io_lib -Uniq: 6600873 -Index: 1 -Address: 0x0000000104096af8 -Refc: 2 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 10 -Address: 0x00000001041fbd40 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 79 -Address: 0x0000000103e727e8 -Refc: 2 -=fun -Module: epp -Uniq: 124355082 -Index: 6 -Address: 0x00000001040fc194 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 40 -Address: 0x000000010414c5c8 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 12 -Address: 0x0000000103f58f90 -Refc: 2 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 14 -Address: 0x00000001040d8d20 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 11 -Address: 0x0000000103eb1ee0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 54 -Address: 0x0000000103e75b08 -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 5 -Address: 0x0000000104109fe8 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 14 -Address: 0x0000000103dccf78 -Refc: 1 -=fun -Module: standard_error -Uniq: 123115530 -Index: 1 -Address: 0x0000000103fbd320 -Refc: 2 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 0 -Address: 0x0000000103dd5c18 -Refc: 1 -=fun -Module: unicode -Uniq: 54664399 -Index: 14 -Address: 0x0000000103fb4a80 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 105 -Address: 0x0000000103e70d50 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 27 -Address: 0x000000010400a268 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 6 -Address: 0x000000010421cf98 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 19 -Address: 0x0000000103ec7778 -Refc: 2 -=fun -Module: 'gleam@erlang' -Uniq: 90512636 -Index: 1 -Address: 0x0000000104140be8 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 0 -Address: 0x0000000104161920 -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 3 -Address: 0x0000000103d94690 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 80 -Address: 0x0000000103e727a8 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 5 -Address: 0x0000000103feeb18 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 5 -Address: 0x000000010414c954 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 11 -Address: 0x0000000103ef26f8 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 32 -Address: 0x0000000103eb0880 -Refc: 1 -=fun -Module: showtime -Uniq: 22478307 -Index: 4 -Address: 0x000000010413f850 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 40 -Address: 0x000000010421c70c -Refc: 1 -=fun -Module: rpc -Uniq: 70687560 -Index: 6 -Address: 0x0000000103ff5c50 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 27 -Address: 0x0000000103e773e8 -Refc: 2 -=fun -Module: inet_config -Uniq: 64624012 -Index: 1 -Address: 0x0000000103fd3c68 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 0 -Address: 0x00000001042230d8 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 19 -Address: 0x0000000103fb4af0 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 5 -Address: 0x0000000104020da8 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 0 -Address: 0x0000000104006d40 -Refc: 2 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 39 -Address: 0x000000010414c4e0 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 19 -Address: 0x000000010421a688 -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 6 -Address: 0x0000000103ecc408 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 6 -Address: 0x0000000103eb2520 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 3 -Address: 0x00000001040dfb40 -Refc: 2 -=fun -Module: glint -Uniq: 18128761 -Index: 6 -Address: 0x0000000104153a40 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 6 -Address: 0x0000000103e3c0b4 -Refc: 1 -=fun -Module: showtime_ffi -Uniq: 122038219 -Index: 4 -Address: 0x0000000104221600 -Refc: 1 -=fun -Module: 'gleam@set' -Uniq: 15699406 -Index: 1 -Address: 0x000000010414fb08 -Refc: 1 -=fun -Module: logger_server -Uniq: 19349920 -Index: 9 -Address: 0x0000000103e87c4c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 37 -Address: 0x0000000103e766d4 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 30 -Address: 0x000000010414ad80 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 8 -Address: 0x000000010402a380 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 11 -Address: 0x00000001042267c0 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 5 -Address: 0x0000000103f8cbb8 -Refc: 1 -=fun -Module: 'showtime@internal@erlang@event_handler' -Uniq: 124289607 -Index: 1 -Address: 0x00000001041f7b38 -Refc: 2 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 53 -Address: 0x000000010421d498 -Refc: 2 -=fun -Module: prim_tty -Uniq: 75477062 -Index: 0 -Address: 0x0000000104078e08 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 15 -Address: 0x0000000104161198 -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 11 -Address: 0x0000000104158b30 -Refc: 1 -=fun -Module: 'gleam@erlang@process' -Uniq: 28255578 -Index: 2 -Address: 0x00000001041fc5a8 -Refc: 2 -=fun -Module: erl_features -Uniq: 44278689 -Index: 11 -Address: 0x0000000103fb9ac0 -Refc: 2 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 8 -Address: 0x0000000103fee890 -Refc: 2 -=fun -Module: gen -Uniq: 105431365 -Index: 3 -Address: 0x0000000103e0fda0 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 71 -Address: 0x0000000103e740a8 -Refc: 2 -=fun -Module: logger_simple_h -Uniq: 105730862 -Index: 0 -Address: 0x0000000103efcfa8 -Refc: 1 -=fun -Module: application_master -Uniq: 24509285 -Index: 0 -Address: 0x0000000103eb8b40 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 8 -Address: 0x0000000103e4c450 -Refc: 2 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 4 -Address: 0x0000000103f5999c -Refc: 1 -=fun -Module: logger_olp -Uniq: 51656710 -Index: 0 -Address: 0x0000000103f785c4 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 51 -Address: 0x0000000103eafbb8 -Refc: 1 -=fun -Module: gleam_stdlib -Uniq: 79074729 -Index: 2 -Address: 0x000000010416a7d0 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 3 -Address: 0x0000000103de25dc -Refc: 1 -=fun -Module: c -Uniq: 124725464 -Index: 5 -Address: 0x00000001040cbd00 -Refc: 1 -=fun -Module: file_server -Uniq: 30066188 -Index: 1 -Address: 0x0000000103e075a8 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 14 -Address: 0x0000000103e798f0 -Refc: 2 -=fun -Module: httpc -Uniq: 36342138 -Index: 13 -Address: 0x00000001041099c0 -Refc: 2 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 6 -Address: 0x0000000103dcd3f0 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 5 -Address: 0x000000010404343c -Refc: 1 -=fun -Module: rand -Uniq: 65977474 -Index: 23 -Address: 0x000000010402bd10 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 6 -Address: 0x0000000103fb52d0 -Refc: 2 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 10 -Address: 0x0000000104020afc -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 97 -Address: 0x0000000103e71348 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 19 -Address: 0x000000010400b128 -Refc: 2 -=fun -Module: simplifile -Uniq: 17272755 -Index: 10 -Address: 0x000000010420c3f4 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 30 -Address: 0x000000010421a7b0 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 11 -Address: 0x0000000103ecb8ec -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 16 -Address: 0x00000001040dc390 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 17 -Address: 0x0000000103eb193c -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 7 -Address: 0x0000000104146d4c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 40 -Address: 0x0000000103e7630c -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 13 -Address: 0x000000010414c768 -Refc: 1 -=fun -Module: code_server -Uniq: 111287289 -Index: 3 -Address: 0x0000000103eea438 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 40 -Address: 0x0000000103eb0284 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 32 -Address: 0x000000010421aa88 -Refc: 1 -=fun -Module: inet -Uniq: 65562377 -Index: 6 -Address: 0x0000000103fe54e8 -Refc: 2 -=fun -Module: 'showtime@internal@erlang@discover' -Uniq: 110023186 -Index: 4 -Address: 0x0000000104208edc -Refc: 1 -=fun -Module: error_logger -Uniq: 17945318 -Index: 0 -Address: 0x0000000103ef7a38 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 19 -Address: 0x0000000103e78a98 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 74 -Address: 0x0000000103e73c34 -Refc: 1 -=fun -Module: epp -Uniq: 124355082 -Index: 1 -Address: 0x00000001040fcb34 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 14 -Address: 0x0000000103eb1bc4 -Refc: 1 -=fun -Module: erl_scan -Uniq: 115441844 -Index: 11 -Address: 0x00000001040d6c98 -Refc: 2 -=fun -Module: ets -Uniq: 30908443 -Index: 14 -Address: 0x0000000103e3b5e4 -Refc: 1 -=fun -Module: raw_file_io -Uniq: 101053602 -Index: 1 -Address: 0x00000001040d03f8 -Refc: 2 -=fun -Module: 'gleam@otp@actor' -Uniq: 90500110 -Index: 6 -Address: 0x00000001041f97e0 -Refc: 2 -=fun -Module: c -Uniq: 124725464 -Index: 8 -Address: 0x00000001040cb948 -Refc: 2 -=fun -Module: 'aoc2023@@main' -Uniq: 70697990 -Index: 1 -Address: 0x00000001040ea940 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 61 -Address: 0x0000000103e75758 -Refc: 1 -=fun -Module: group -Uniq: 88293013 -Index: 2 -Address: 0x00000001040888b8 -Refc: 2 -=fun -Module: global_group -Uniq: 133931896 -Index: 8 -Address: 0x0000000104043710 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 0 -Address: 0x0000000104029e40 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 9 -Address: 0x0000000103fb1c48 -Refc: 2 -=fun -Module: prim_zip -Uniq: 66112146 -Index: 5 -Address: 0x0000000103dd5b24 -Refc: 1 -=fun -Module: global -Uniq: 100333677 -Index: 30 -Address: 0x0000000104009ea4 -Refc: 1 -=fun -Module: file -Uniq: 1459081 -Index: 1 -Address: 0x0000000103e195bc -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 13 -Address: 0x000000010421c3f8 -Refc: 1 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 7 -Address: 0x0000000104160a5c -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 3 -Address: 0x0000000104155ac0 -Refc: 2 -=fun -Module: gen_event -Uniq: 37613186 -Index: 1 -Address: 0x0000000103ee21ac -Refc: 1 -=fun -Module: init -Uniq: 72673429 -Index: 8 -Address: 0x0000000103d939d8 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 3 -Address: 0x0000000103fb9fc4 -Refc: 1 -=fun -Module: inet_parse -Uniq: 131529883 -Index: 0 -Address: 0x0000000103fef1a0 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 95 -Address: 0x0000000103e715a8 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 0 -Address: 0x0000000103e4d260 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 59 -Address: 0x0000000103eaf728 -Refc: 2 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 11 -Address: 0x0000000103de1958 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 47 -Address: 0x000000010421d030 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 66 -Address: 0x0000000103eaeca8 -Refc: 2 -=fun -Module: rpc -Uniq: 70687560 -Index: 1 -Address: 0x0000000103ff617c -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 6 -Address: 0x0000000103e7b800 -Refc: 2 -=fun -Module: timer -Uniq: 46706930 -Index: 1 -Address: 0x00000001040ad644 -Refc: 1 -=fun -Module: inet_config -Uniq: 64624012 -Index: 4 -Address: 0x0000000103fd3ab8 -Refc: 2 -=fun -Module: kernel_config -Uniq: 90805894 -Index: 0 -Address: 0x00000001040af678 -Refc: 2 -=fun -Module: 'day7@solve' -Uniq: 118915376 -Index: 5 -Address: 0x00000001042240b8 -Refc: 2 -=fun -Module: code -Uniq: 38778589 -Index: 7 -Address: 0x0000000103e225d8 -Refc: 1 -=fun -Module: net_kernel -Uniq: 105284444 -Index: 2 -Address: 0x0000000104020ed0 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 5 -Address: 0x0000000103fce8b0 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 11 -Address: 0x000000010400c078 -Refc: 2 -=fun -Module: simplifile -Uniq: 17272755 -Index: 2 -Address: 0x000000010420bb20 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 22 -Address: 0x000000010421a02c -Refc: 1 -=fun -Module: application_controller -Uniq: 5142319 -Index: 3 -Address: 0x0000000103ecc3d4 -Refc: 1 -=fun -Module: httpc_manager -Uniq: 90163599 -Index: 1 -Address: 0x0000000104112fb0 -Refc: 2 -=fun -Module: glint -Uniq: 18128761 -Index: 13 -Address: 0x00000001041514f0 -Refc: 2 -=fun -Module: 'gleam@function' -Uniq: 127819290 -Index: 16 -Address: 0x000000010416125c -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 25 -Address: 0x0000000103eb1130 -Refc: 1 -=fun -Module: showtime_ffi -Uniq: 122038219 -Index: 1 -Address: 0x0000000104221320 -Refc: 2 -=fun -Module: logger_server -Uniq: 19349920 -Index: 6 -Address: 0x0000000103e87a20 -Refc: 1 -=fun -Module: 'gleam@list' -Uniq: 42440854 -Index: 15 -Address: 0x0000000104146890 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 32 -Address: 0x0000000103e7697c -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 21 -Address: 0x000000010414bd40 -Refc: 2 -=fun -Module: 'showtime@internal@reports@formatter' -Uniq: 1772858 -Index: 6 -Address: 0x0000000104227820 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 13 -Address: 0x000000010402ae18 -Refc: 2 -=fun -Module: peer -Uniq: 34337805 -Index: 0 -Address: 0x0000000103f8df08 -Refc: 2 -=fun -Module: inet -Uniq: 65562377 -Index: 14 -Address: 0x0000000103fe494c -Refc: 1 -=fun -Module: 'gleam_community@colour' -Uniq: 92289676 -Index: 14 -Address: 0x0000000104158e68 -Refc: 1 -=fun -Module: ssl_config -Uniq: 64895055 -Index: 0 -Address: 0x0000000104134808 -Refc: 1 -=fun -Module: erl_features -Uniq: 44278689 -Index: 12 -Address: 0x0000000103fb9988 -Refc: 2 -=fun -Module: proc_lib -Uniq: 54621022 -Index: 0 -Address: 0x0000000103e9c590 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 66 -Address: 0x0000000103e745b0 -Refc: 2 -=fun -Module: supervisor -Uniq: 63985753 -Index: 13 -Address: 0x0000000103e4c0e8 -Refc: 1 -=fun -Module: erl_parse -Uniq: 57550649 -Index: 9 -Address: 0x0000000103f59274 -Refc: 1 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 54 -Address: 0x0000000103eafb40 -Refc: 1 -=fun -Module: erl_prim_loader -Uniq: 11574866 -Index: 6 -Address: 0x0000000103de2310 -Refc: 1 -=fun -Module: logger_std_h -Uniq: 4673888 -Index: 1 -Address: 0x00000001040bcad8 -Refc: 3 -=fun -Module: c -Uniq: 124725464 -Index: 0 -Address: 0x00000001040cbe98 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 53 -Address: 0x0000000103e75c2c -Refc: 1 -=fun -Module: httpc -Uniq: 36342138 -Index: 2 -Address: 0x000000010410a368 -Refc: 2 -=fun -Module: httpc_cookie -Uniq: 22295768 -Index: 1 -Address: 0x000000010411a368 -Refc: 1 -=fun -Module: prim_socket -Uniq: 51104894 -Index: 11 -Address: 0x0000000103dcd030 -Refc: 1 -=fun -Module: global_group -Uniq: 133931896 -Index: 0 -Address: 0x0000000104040ec0 -Refc: 2 -=fun -Module: unicode -Uniq: 54664399 -Index: 1 -Address: 0x0000000103fb4488 -Refc: 2 -=fun -Module: rand -Uniq: 65977474 -Index: 24 -Address: 0x000000010402df10 -Refc: 2 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 108 -Address: 0x0000000103e75f08 -Refc: 2 -=fun -Module: inet_db -Uniq: 46329474 -Index: 10 -Address: 0x0000000103fcd590 -Refc: 2 -=fun -Module: global -Uniq: 100333677 -Index: 22 -Address: 0x000000010400aa90 -Refc: 1 -=fun -Module: 'gleam@dynamic' -Uniq: 70964574 -Index: 5 -Address: 0x000000010421d170 -Refc: 1 -=fun -Module: ets -Uniq: 30908443 -Index: 16 -Address: 0x0000000103e39768 -Refc: 2 -=fun -Module: application_controller -Uniq: 5142319 -Index: 16 -Address: 0x0000000103ecb478 -Refc: 2 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 20 -Address: 0x0000000103eb16e8 -Refc: 1 -=fun -Module: 'gleam@result' -Uniq: 44749367 -Index: 1 -Address: 0x000000010415fa08 -Refc: 2 -=fun -Module: init -Uniq: 72673429 -Index: 0 -Address: 0x0000000103d87d10 -Refc: 1 -=fun -Module: user_drv -Uniq: 115201613 -Index: 2 -Address: 0x0000000104059414 -Refc: 1 -=fun -Module: erl_lint -Uniq: 64115739 -Index: 87 -Address: 0x0000000103e72264 -Refc: 1 -=fun -Module: 'glint@flag' -Uniq: 25615327 -Index: 0 -Address: 0x000000010414cbe0 -Refc: 2 -=fun -Module: code_server -Uniq: 111287289 -Index: 8 -Address: 0x0000000103ef2aa8 -Refc: 4 -=fun -Module: erl_eval -Uniq: 125776118 -Index: 35 -Address: 0x0000000103eb05c8 -Refc: 1 -=fun -Module: gleam_erlang_ffi -Uniq: 130811285 -Index: 2 -Address: 0x00000001042005cc -Refc: 1 -=proc_stack:<0.0.0> -y0:H105DD6AD8 -y1:SCatch 0x3DE8204 (erlang:halt/1 + 156) -0x0000000105dda900:SReturn addr 0x3D82348 () -=proc_heap:<0.0.0> -105DD6AD8:lI82|H105DD6AE8 -105DD6AE8:lI117|H105DD6AF8 -105DD6AF8:lI110|H105DD6B08 -105DD6B08:lI116|H105DD6B18 -105DD6B18:lI105|H105DD6B28 -105DD6B28:lI109|H105DD6B38 -105DD6B38:lI101|H105DD6B48 -105DD6B48:lI32|H105DD6B58 -105DD6B58:lI116|H105DD6B68 -105DD6B68:lI101|H105DD6B78 -105DD6B78:lI114|H105DD6B88 -105DD6B88:lI109|H105DD6B98 -105DD6B98:lI105|H105DD6BA8 -105DD6BA8:lI110|H105DD6BB8 -105DD6BB8:lI97|H105DD6BC8 -105DD6BC8:lI116|H105DD6BD8 -105DD6BD8:lI105|H105DD6BE8 -105DD6BE8:lI110|H105DD6BF8 -105DD6BF8:lI103|H105DD6C08 -105DD6C08:lI32|H105DD6C18 -105DD6C18:lI100|H105DD6C28 -105DD6C28:lI117|H105DD6C38 -105DD6C38:lI114|H105DD6C48 -105DD6C48:lI105|H105DD6C58 -105DD6C58:lI110|H105DD6C68 -105DD6C68:lI103|H105DD6C78 -105DD6C78:lI32|H105DD6C88 -105DD6C88:lI98|H105DD6C98 -105DD6C98:lI111|H105DD6CA8 -105DD6CA8:lI111|H105DD6CB8 -105DD6CB8:lI116|H105DD6AC8 -105DD6AC8:lI32|H105DD6AB8 -105DD6AB8:lI40|H105DD5838 -105DD5838:lI123|H105DD5848 -105DD5848:lI44|H105DD5858 -105DD5858:lI91|H105DD5868 -105DD5868:lI123|H105DD5878 -105DD5878:lI115|H105DD5888 -105DD5888:lI104|H105DD5898 -105DD5898:lI111|H105DD58A8 -105DD58A8:lI119|H105DD58B8 -105DD58B8:lI116|H105DD58C8 -105DD58C8:lI105|H105DD58D8 -105DD58D8:lI109|H105DD58E8 -105DD58E8:lI101|H105DD58F8 -105DD58F8:lI64|H105DD5908 -105DD5908:lI105|H105DD5918 -105DD5918:lI110|H105DD5928 -105DD5928:lI116|H105DD5938 -105DD5938:lI101|H105DD5948 -105DD5948:lI114|H105DD5958 -105DD5958:lI110|H105DD5968 -105DD5968:lI97|H105DD5978 -105DD5978:lI108|H105DD5988 -105DD5988:lI64|H105DD5998 -105DD5998:lI114|H105DD59A8 -105DD59A8:lI101|H105DD59B8 -105DD59B8:lI112|H105DD59C8 -105DD59C8:lI111|H105DD59D8 -105DD59D8:lI114|H105DD59E8 -105DD59E8:lI116|H105DD59F8 -105DD59F8:lI115|H105DD5A08 -105DD5A08:lI64|H105DD5A18 -105DD5A18:lI102|H105DD5A28 -105DD5A28:lI111|H105DD5A38 -105DD5A38:lI114|H105DD5A48 -105DD5A48:lI109|H105DD5A58 -105DD5A58:lI97|H105DD5A68 -105DD5A68:lI116|H105DD5A78 -105DD5A78:lI116|H105DD5A88 -105DD5A88:lI101|H105DD5A98 -105DD5A98:lI114|H105DD5AA8 -105DD5AA8:lI44|H105DD5AB8 -105DD5AB8:lI45|H105DD5AC8 -105DD5AC8:lI99|H105DD5AD8 -105DD5AD8:lI114|H105DD5AE8 -105DD5AE8:lI101|H105DD5AF8 -105DD5AF8:lI97|H105DD5B08 -105DD5B08:lI116|H105DD5B18 -105DD5B18:lI101|H105DD5B28 -105DD5B28:lI95|H105DD5B38 -105DD5B38:lI116|H105DD5B48 -105DD5B48:lI101|H105DD5B58 -105DD5B58:lI115|H105DD5B68 -105DD5B68:lI116|H105DD5B78 -105DD5B78:lI95|H105DD5B88 -105DD5B88:lI114|H105DD5B98 -105DD5B98:lI101|H105DD5BA8 -105DD5BA8:lI112|H105DD5BB8 -105DD5BB8:lI111|H105DD5BC8 -105DD5BC8:lI114|H105DD5BD8 -105DD5BD8:lI116|H105DD5BE8 -105DD5BE8:lI47|H105DD5BF8 -105DD5BF8:lI49|H105DD5C08 -105DD5C08:lI45|H105DD5C18 -105DD5C18:lI102|H105DD5C28 -105DD5C28:lI117|H105DD5C38 -105DD5C38:lI110|H105DD5C48 -105DD5C48:lI45|H105DD5C58 -105DD5C58:lI52|H105DD5C68 -105DD5C68:lI45|H105DD5C78 -105DD5C78:lI44|H105DD5C88 -105DD5C88:lI49|H105DD5C98 -105DD5C98:lI44|H105DD5CA8 -105DD5CA8:lI91|H105DD5CB8 -105DD5CB8:lI123|H105DD5CC8 -105DD5CC8:lI95|H105DD5CD8 -105DD5CD8:lI125|H105DD5CE8 -105DD5CE8:lI44|H105DD5CF8 -105DD5CF8:lI123|H105DD5D08 -105DD5D08:lI95|H105DD5D18 -105DD5D18:lI125|H105DD5D28 -105DD5D28:lI93|H105DD5D38 -105DD5D38:lI125|H105DD5D48 -105DD5D48:lI44|H105DD5D58 -105DD5D58:lI123|H105DD5D68 -105DD5D68:lI103|H105DD5D78 -105DD5D78:lI108|H105DD5D88 -105DD5D88:lI101|H105DD5D98 -105DD5D98:lI97|H105DD5DA8 -105DD5DA8:lI109|H105DD5DB8 -105DD5DB8:lI64|H105DD5DC8 -105DD5DC8:lI108|H105DD5DD8 -105DD5DD8:lI105|H105DD5DE8 -105DD5DE8:lI115|H105DD5DF8 -105DD5DF8:lI116|H105DD5E08 -105DD5E08:lI44|H105DD5E18 -105DD5E18:lI100|H105DD5E28 -105DD5E28:lI111|H105DD5E38 -105DD5E38:lI95|H105DD5E48 -105DD5E48:lI102|H105DD5E58 -105DD5E58:lI105|H105DD5E68 -105DD5E68:lI108|H105DD5E78 -105DD5E78:lI116|H105DD5E88 -105DD5E88:lI101|H105DD5E98 -105DD5E98:lI114|H105DD5EA8 -105DD5EA8:lI95|H105DD5EB8 -105DD5EB8:lI109|H105DD5EC8 -105DD5EC8:lI97|H105DD5ED8 -105DD5ED8:lI112|H105DD5EE8 -105DD5EE8:lI44|H105DD5EF8 -105DD5EF8:lI51|H105DD5F08 -105DD5F08:lI44|H105DD5F18 -105DD5F18:lI91|H105DD5F28 -105DD5F28:lI123|H105DD5F38 -105DD5F38:lI95|H105DD5F48 -105DD5F48:lI125|H105DD5F58 -105DD5F58:lI44|H105DD5F68 -105DD5F68:lI123|H105DD5F78 -105DD5F78:lI95|H105DD5F88 -105DD5F88:lI125|H105DD5F98 -105DD5F98:lI93|H105DD5FA8 -105DD5FA8:lI125|H105DD5FB8 -105DD5FB8:lI44|H105DD5FC8 -105DD5FC8:lI123|H105DD5FD8 -105DD5FD8:lI115|H105DD5FE8 -105DD5FE8:lI104|H105DD5FF8 -105DD5FF8:lI111|H105DD6008 -105DD6008:lI119|H105DD6018 -105DD6018:lI116|H105DD6028 -105DD6028:lI105|H105DD6038 -105DD6038:lI109|H105DD6048 -105DD6048:lI101|H105DD6058 -105DD6058:lI64|H105DD6068 -105DD6068:lI105|H105DD6078 -105DD6078:lI110|H105DD6088 -105DD6088:lI116|H105DD6098 -105DD6098:lI101|H105DD60A8 -105DD60A8:lI114|H105DD60B8 -105DD60B8:lI110|H105DD60C8 -105DD60C8:lI97|H105DD60D8 -105DD60D8:lI108|H105DD60E8 -105DD60E8:lI64|H105DD60F8 -105DD60F8:lI114|H105DD6108 -105DD6108:lI101|H105DD6118 -105DD6118:lI112|H105DD6128 -105DD6128:lI111|H105DD6138 -105DD6138:lI114|H105DD6148 -105DD6148:lI116|H105DD6158 -105DD6158:lI115|H105DD6168 -105DD6168:lI64|H105DD6178 -105DD6178:lI102|H105DD6188 -105DD6188:lI111|H105DD6198 -105DD6198:lI114|H105DD61A8 -105DD61A8:lI109|H105DD61B8 -105DD61B8:lI97|H105DD61C8 -105DD61C8:lI116|H105DD61D8 -105DD61D8:lI116|H105DD61E8 -105DD61E8:lI101|H105DD61F8 -105DD61F8:lI114|H105DD6208 -105DD6208:lI44|H105DD6218 -105DD6218:lI99|H105DD6228 -105DD6228:lI114|H105DD6238 -105DD6238:lI101|H105DD6248 -105DD6248:lI97|H105DD6258 -105DD6258:lI116|H105DD6268 -105DD6268:lI101|H105DD6278 -105DD6278:lI95|H105DD6288 -105DD6288:lI116|H105DD6298 -105DD6298:lI101|H105DD62A8 -105DD62A8:lI115|H105DD62B8 -105DD62B8:lI116|H105DD62C8 -105DD62C8:lI95|H105DD62D8 -105DD62D8:lI114|H105DD62E8 -105DD62E8:lI101|H105DD62F8 -105DD62F8:lI112|H105DD6308 -105DD6308:lI111|H105DD6318 -105DD6318:lI114|H105DD6328 -105DD6328:lI116|H105DD6338 -105DD6338:lI44|H105DD6348 -105DD6348:lI49|H105DD6358 -105DD6358:lI44|H105DD6368 -105DD6368:lI91|H105DD6378 -105DD6378:lI123|H105DD6388 -105DD6388:lI95|H105DD6398 -105DD6398:lI125|H105DD63A8 -105DD63A8:lI44|H105DD63B8 -105DD63B8:lI123|H105DD63C8 -105DD63C8:lI95|H105DD63D8 -105DD63D8:lI125|H105DD63E8 -105DD63E8:lI93|H105DD63F8 -105DD63F8:lI125|H105DD6408 -105DD6408:lI44|H105DD6418 -105DD6418:lI123|H105DD6428 -105DD6428:lI115|H105DD6438 -105DD6438:lI104|H105DD6448 -105DD6448:lI111|H105DD6458 -105DD6458:lI119|H105DD6468 -105DD6468:lI116|H105DD6478 -105DD6478:lI105|H105DD6488 -105DD6488:lI109|H105DD6498 -105DD6498:lI101|H105DD64A8 -105DD64A8:lI64|H105DD64B8 -105DD64B8:lI105|H105DD64C8 -105DD64C8:lI110|H105DD64D8 -105DD64D8:lI116|H105DD64E8 -105DD64E8:lI101|H105DD64F8 -105DD64F8:lI114|H105DD6508 -105DD6508:lI110|H105DD6518 -105DD6518:lI97|H105DD6528 -105DD6528:lI108|H105DD6538 -105DD6538:lI64|H105DD6548 -105DD6548:lI101|H105DD6558 -105DD6558:lI114|H105DD6568 -105DD6568:lI108|H105DD6578 -105DD6578:lI97|H105DD6588 -105DD6588:lI110|H105DD6598 -105DD6598:lI103|H105DD65A8 -105DD65A8:lI64|H105DD65B8 -105DD65B8:lI101|H105DD65C8 -105DD65C8:lI118|H105DD65D8 -105DD65D8:lI101|H105DD65E8 -105DD65E8:lI110|H105DD65F8 -105DD65F8:lI116|H105DD6608 -105DD6608:lI95|H105DD6618 -105DD6618:lI104|H105DD6628 -105DD6628:lI97|H105DD6638 -105DD6638:lI110|H105DD6648 -105DD6648:lI100|H105DD6658 -105DD6658:lI108|H105DD6668 -105DD6668:lI101|H105DD6678 -105DD6678:lI114|H105DD6688 -105DD6688:lI44|H105DD6698 -105DD6698:lI45|H105DD66A8 -105DD66A8:lI115|H105DD66B8 -105DD66B8:lI116|H105DD66C8 -105DD66C8:lI97|H105DD66D8 -105DD66D8:lI114|H105DD66E8 -105DD66E8:lI116|H105DD66F8 -105DD66F8:lI47|H105DD6708 -105DD6708:lI48|H105DD6718 -105DD6718:lI45|H105DD6728 -105DD6728:lI102|H105DD6738 -105DD6738:lI117|H105DD6748 -105DD6748:lI110|H105DD6758 -105DD6758:lI45|H105DD6768 -105DD6768:lI49|H105DD6778 -105DD6778:lI45|H105DD6788 -105DD6788:lI44|H105DD6798 -105DD6798:lI50|H105DD67A8 -105DD67A8:lI44|H105DD67B8 -105DD67B8:lI91|H105DD67C8 -105DD67C8:lI123|H105DD67D8 -105DD67D8:lI95|H105DD67E8 -105DD67E8:lI125|H105DD67F8 -105DD67F8:lI44|H105DD6808 -105DD6808:lI123|H105DD6818 -105DD6818:lI95|H105DD6828 -105DD6828:lI125|H105DD6838 -105DD6838:lI93|H105DD6848 -105DD6848:lI125|H105DD6858 -105DD6858:lI44|H105DD6868 -105DD6868:lI123|H105DD6878 -105DD6878:lI103|H105DD6888 -105DD6888:lI108|H105DD6898 -105DD6898:lI101|H105DD68A8 -105DD68A8:lI97|H105DD68B8 -105DD68B8:lI109|H105DD68C8 -105DD68C8:lI64|H105DD68D8 -105DD68D8:lI111|H105DD68E8 -105DD68E8:lI116|H105DD68F8 -105DD68F8:lI112|H105DD6908 -105DD6908:lI64|H105DD6918 -105DD6918:lI97|H105DD6928 -105DD6928:lI99|H105DD6938 -105DD6938:lI116|H105DD6948 -105DD6948:lI111|H105DD6958 -105DD6958:lI114|H105DD6968 -105DD6968:lI44|H105DD6978 -105DD6978:lI108|H105DD6988 -105DD6988:lI111|H105DD6998 -105DD6998:lI111|H105DD69A8 -105DD69A8:lI112|H105DD69B8 -105DD69B8:lI44|H105DD69C8 -105DD69C8:lI49|H105DD69D8 -105DD69D8:lI44|H105DD69E8 -105DD69E8:lI91|H105DD69F8 -105DD69F8:lI123|H105DD6A08 -105DD6A08:lI95|H105DD6A18 -105DD6A18:lI125|H105DD6A28 -105DD6A28:lI44|H105DD6A38 -105DD6A38:lI123|H105DD6A48 -105DD6A48:lI95|H105DD6A58 -105DD6A58:lI125|H105DD6A68 -105DD6A68:lI93|H105DD6A78 -105DD6A78:lI125|H105DD6A88 -105DD6A88:lI93|H105DD6A98 -105DD6A98:lI125|H105DD6AA8 -105DD6AA8:lI41|N -=proc_stack:<0.1.0> -0x0000000103149508:SReturn addr 0x3D82348 () -=proc_heap:<0.1.0> -=proc_stack:<0.2.0> -y0:N -y1:I0 -y2:I60000 -y3:N -y4:I0 -y5:H280017B40 -y6:A9:undefined -0x0000000103149c58:SReturn addr 0x3D82348 () -=proc_heap:<0.2.0> -=proc_stack:<0.3.0> -y0:N -0x000000010314b430:SReturn addr 0x3D82348 () -=proc_heap:<0.3.0> -=proc_stack:<0.4.0> -y0:N -0x000000010314bb80:SReturn addr 0x3D82348 () -=proc_heap:<0.4.0> -=proc_stack:<0.5.0> -y0:N -0x000000010314c2d0:SReturn addr 0x3D82348 () -=proc_heap:<0.5.0> -=proc_stack:<0.6.0> -0x00000001307d0900:SReturn addr 0x3D82348 () -=proc_heap:<0.6.0> -=proc_stack:<0.7.0> -y0:N -y1:N -y2:H280013CD0 -0x00000001307d1c18:SReturn addr 0x3D82348 () -=proc_heap:<0.7.0> -=proc_stack:<0.10.0> -y0:N -y1:I360000 -y2:H105E9B3B8 -y3:P<0.9.0> -y4:H105E9B368 -0x0000000105ebdd58:SReturn addr 0x3D82348 () -=proc_heap:<0.10.0> -105E9B3B8:lH105E9B3D8|H105E9B3E8 -105E9B3D8:lI47|H105E9B408 -105E9B408:lI85|H105E9B448 -105E9B448:lI115|H105E9B498 -105E9B498:lI101|H105E9B4F8 -105E9B4F8:lI114|H105E9B568 -105E9B568:lI115|H105E9B5E8 -105E9B5E8:lI47|H105E9B678 -105E9B678:lI110|H105E9B718 -105E9B718:lI105|H105E9B7C8 -105E9B7C8:lI99|H105E9B888 -105E9B888:lI104|H105E9B958 -105E9B958:lI111|H105E9BA38 -105E9BA38:lI108|H105E9BB28 -105E9BB28:lI97|H105E9BC28 -105E9BC28:lI115|H105E9BD38 -105E9BD38:lI99|H105E9BE58 -105E9BE58:lI97|H105E9BF88 -105E9BF88:lI114|H105E9C0C8 -105E9C0C8:lI108|H105E9C208 -105E9C208:lI115|H105E9C348 -105E9C348:lI111|H105E9C488 -105E9C488:lI110|H105E9C5C8 -105E9C5C8:lI47|H105E9C708 -105E9C708:lI86|H105E9C848 -105E9C848:lI83|H105E9C988 -105E9C988:lI32|H105E9CAC8 -105E9CAC8:lI67|H105E9CC08 -105E9CC08:lI111|H105E9CD48 -105E9CD48:lI100|H105E9CE88 -105E9CE88:lI101|H105E9CFC8 -105E9CFC8:lI47|H105E9D108 -105E9D108:lI65|H105E9D248 -105E9D248:lI100|H105E9D388 -105E9D388:lI118|H105E9D4C8 -105E9D4C8:lI101|H105E9D608 -105E9D608:lI110|H105E9D748 -105E9D748:lI116|H105E9D888 -105E9D888:lI79|H105E9D9C8 -105E9D9C8:lI102|H105E9DB08 -105E9DB08:lI67|H105E9DC48 -105E9DC48:lI111|H105E9DD88 -105E9DD88:lI100|H105E9DEC8 -105E9DEC8:lI101|H105E9E008 -105E9E008:lI47|H105E9E148 -105E9E148:lI97|H105E9E288 -105E9E288:lI111|H105E9E3C8 -105E9E3C8:lI99|H105E9E508 -105E9E508:lI50|H105E9E648 -105E9E648:lI48|H105E9E788 -105E9E788:lI50|H105E9E8C8 -105E9E8C8:lI51|H105E9EA08 -105E9EA08:lI47|H105E9EB48 -105E9EB48:lI98|H105E9EC88 -105E9EC88:lI117|H105E9EDC8 -105E9EDC8:lI105|H105E9EF08 -105E9EF08:lI108|H105E9F048 -105E9F048:lI100|H105E9F188 -105E9F188:lI47|H105E9F2C8 -105E9F2C8:lI100|H105E9F408 -105E9F408:lI101|H105E9F548 -105E9F548:lI118|H105E9F678 -105E9F678:lI47|H105E9F7A8 -105E9F7A8:lI101|H105E9F8D8 -105E9F8D8:lI114|H105E9FA08 -105E9FA08:lI108|H105E9FB38 -105E9FB38:lI97|H105E9FC68 -105E9FC68:lI110|H105E9FD98 -105E9FD98:lI103|H105E9FEC8 -105E9FEC8:lI47|H105E9FFF8 -105E9FFF8:lI103|H105EA0128 -105EA0128:lI108|H105EA0258 -105EA0258:lI101|H105EA0388 -105EA0388:lI97|H105EA04B8 -105EA04B8:lI109|H105EA05E8 -105EA05E8:lI95|H105EA0718 -105EA0718:lI99|H105EA0848 -105EA0848:lI111|H105EA0978 -105EA0978:lI109|H105EA0AA8 -105EA0AA8:lI109|H105EA0BD8 -105EA0BD8:lI117|H105EA0D08 -105EA0D08:lI110|H105EA0E38 -105EA0E38:lI105|H105EA0F68 -105EA0F68:lI116|H105EA1098 -105EA1098:lI121|H105EA1198 -105EA1198:lI95|H105EA1288 -105EA1288:lI97|H105EA1368 -105EA1368:lI110|H105EA1448 -105EA1448:lI115|H105EA1528 -105EA1528:lI105|H105EA15F8 -105EA15F8:lI47|H105EA16A8 -105EA16A8:lI101|H105EA1748 -105EA1748:lI98|H105EA17C8 -105EA17C8:lI105|H105EA1848 -105EA1848:lI110|N -105E9B3E8:lH105E9B418|H105E9B428 -105E9B418:lI47|H105E9B458 -105E9B458:lI85|H105E9B4A8 -105E9B4A8:lI115|H105E9B508 -105E9B508:lI101|H105E9B578 -105E9B578:lI114|H105E9B5F8 -105E9B5F8:lI115|H105E9B688 -105E9B688:lI47|H105E9B728 -105E9B728:lI110|H105E9B7D8 -105E9B7D8:lI105|H105E9B898 -105E9B898:lI99|H105E9B968 -105E9B968:lI104|H105E9BA48 -105E9BA48:lI111|H105E9BB38 -105E9BB38:lI108|H105E9BC38 -105E9BC38:lI97|H105E9BD48 -105E9BD48:lI115|H105E9BE68 -105E9BE68:lI99|H105E9BF98 -105E9BF98:lI97|H105E9C0D8 -105E9C0D8:lI114|H105E9C218 -105E9C218:lI108|H105E9C358 -105E9C358:lI115|H105E9C498 -105E9C498:lI111|H105E9C5D8 -105E9C5D8:lI110|H105E9C718 -105E9C718:lI47|H105E9C858 -105E9C858:lI86|H105E9C998 -105E9C998:lI83|H105E9CAD8 -105E9CAD8:lI32|H105E9CC18 -105E9CC18:lI67|H105E9CD58 -105E9CD58:lI111|H105E9CE98 -105E9CE98:lI100|H105E9CFD8 -105E9CFD8:lI101|H105E9D118 -105E9D118:lI47|H105E9D258 -105E9D258:lI65|H105E9D398 -105E9D398:lI100|H105E9D4D8 -105E9D4D8:lI118|H105E9D618 -105E9D618:lI101|H105E9D758 -105E9D758:lI110|H105E9D898 -105E9D898:lI116|H105E9D9D8 -105E9D9D8:lI79|H105E9DB18 -105E9DB18:lI102|H105E9DC58 -105E9DC58:lI67|H105E9DD98 -105E9DD98:lI111|H105E9DED8 -105E9DED8:lI100|H105E9E018 -105E9E018:lI101|H105E9E158 -105E9E158:lI47|H105E9E298 -105E9E298:lI97|H105E9E3D8 -105E9E3D8:lI111|H105E9E518 -105E9E518:lI99|H105E9E658 -105E9E658:lI50|H105E9E798 -105E9E798:lI48|H105E9E8D8 -105E9E8D8:lI50|H105E9EA18 -105E9EA18:lI51|H105E9EB58 -105E9EB58:lI47|H105E9EC98 -105E9EC98:lI98|H105E9EDD8 -105E9EDD8:lI117|H105E9EF18 -105E9EF18:lI105|H105E9F058 -105E9F058:lI108|H105E9F198 -105E9F198:lI100|H105E9F2D8 -105E9F2D8:lI47|H105E9F418 -105E9F418:lI100|H105E9F558 -105E9F558:lI101|H105E9F688 -105E9F688:lI118|H105E9F7B8 -105E9F7B8:lI47|H105E9F8E8 -105E9F8E8:lI101|H105E9FA18 -105E9FA18:lI114|H105E9FB48 -105E9FB48:lI108|H105E9FC78 -105E9FC78:lI97|H105E9FDA8 -105E9FDA8:lI110|H105E9FED8 -105E9FED8:lI103|H105EA0008 -105EA0008:lI47|H105EA0138 -105EA0138:lI103|H105EA0268 -105EA0268:lI108|H105EA0398 -105EA0398:lI101|H105EA04C8 -105EA04C8:lI97|H105EA05F8 -105EA05F8:lI109|H105EA0728 -105EA0728:lI95|H105EA0858 -105EA0858:lI118|H105EA0988 -105EA0988:lI101|H105EA0AB8 -105EA0AB8:lI114|H105EA0BE8 -105EA0BE8:lI115|H105EA0D18 -105EA0D18:lI105|H105EA0E48 -105EA0E48:lI111|H105EA0F78 -105EA0F78:lI110|H105EA10A8 -105EA10A8:lI47|H105EA11A8 -105EA11A8:lI101|H105EA1298 -105EA1298:lI98|H105EA1378 -105EA1378:lI105|H105EA1458 -105EA1458:lI110|N -105E9B428:lH105E9B468|H105E9B478 -105E9B468:lI47|H105E9B4B8 -105E9B4B8:lI85|H105E9B518 -105E9B518:lI115|H105E9B588 -105E9B588:lI101|H105E9B608 -105E9B608:lI114|H105E9B698 -105E9B698:lI115|H105E9B738 -105E9B738:lI47|H105E9B7E8 -105E9B7E8:lI110|H105E9B8A8 -105E9B8A8:lI105|H105E9B978 -105E9B978:lI99|H105E9BA58 -105E9BA58:lI104|H105E9BB48 -105E9BB48:lI111|H105E9BC48 -105E9BC48:lI108|H105E9BD58 -105E9BD58:lI97|H105E9BE78 -105E9BE78:lI115|H105E9BFA8 -105E9BFA8:lI99|H105E9C0E8 -105E9C0E8:lI97|H105E9C228 -105E9C228:lI114|H105E9C368 -105E9C368:lI108|H105E9C4A8 -105E9C4A8:lI115|H105E9C5E8 -105E9C5E8:lI111|H105E9C728 -105E9C728:lI110|H105E9C868 -105E9C868:lI47|H105E9C9A8 -105E9C9A8:lI86|H105E9CAE8 -105E9CAE8:lI83|H105E9CC28 -105E9CC28:lI32|H105E9CD68 -105E9CD68:lI67|H105E9CEA8 -105E9CEA8:lI111|H105E9CFE8 -105E9CFE8:lI100|H105E9D128 -105E9D128:lI101|H105E9D268 -105E9D268:lI47|H105E9D3A8 -105E9D3A8:lI65|H105E9D4E8 -105E9D4E8:lI100|H105E9D628 -105E9D628:lI118|H105E9D768 -105E9D768:lI101|H105E9D8A8 -105E9D8A8:lI110|H105E9D9E8 -105E9D9E8:lI116|H105E9DB28 -105E9DB28:lI79|H105E9DC68 -105E9DC68:lI102|H105E9DDA8 -105E9DDA8:lI67|H105E9DEE8 -105E9DEE8:lI111|H105E9E028 -105E9E028:lI100|H105E9E168 -105E9E168:lI101|H105E9E2A8 -105E9E2A8:lI47|H105E9E3E8 -105E9E3E8:lI97|H105E9E528 -105E9E528:lI111|H105E9E668 -105E9E668:lI99|H105E9E7A8 -105E9E7A8:lI50|H105E9E8E8 -105E9E8E8:lI48|H105E9EA28 -105E9EA28:lI50|H105E9EB68 -105E9EB68:lI51|H105E9ECA8 -105E9ECA8:lI47|H105E9EDE8 -105E9EDE8:lI98|H105E9EF28 -105E9EF28:lI117|H105E9F068 -105E9F068:lI105|H105E9F1A8 -105E9F1A8:lI108|H105E9F2E8 -105E9F2E8:lI100|H105E9F428 -105E9F428:lI47|H105E9F568 -105E9F568:lI100|H105E9F698 -105E9F698:lI101|H105E9F7C8 -105E9F7C8:lI118|H105E9F8F8 -105E9F8F8:lI47|H105E9FA28 -105E9FA28:lI101|H105E9FB58 -105E9FB58:lI114|H105E9FC88 -105E9FC88:lI108|H105E9FDB8 -105E9FDB8:lI97|H105E9FEE8 -105E9FEE8:lI110|H105EA0018 -105EA0018:lI103|H105EA0148 -105EA0148:lI47|H105EA0278 -105EA0278:lI97|H105EA03A8 -105EA03A8:lI100|H105EA04D8 -105EA04D8:lI103|H105EA0608 -105EA0608:lI108|H105EA0738 -105EA0738:lI101|H105EA0868 -105EA0868:lI110|H105EA0998 -105EA0998:lI116|H105EA0AC8 -105EA0AC8:lI47|H105EA0BF8 -105EA0BF8:lI101|H105EA0D28 -105EA0D28:lI98|H105EA0E58 -105EA0E58:lI105|H105EA0F88 -105EA0F88:lI110|N -105E9B478:lH105E9B4C8|H105E9B4D8 -105E9B4C8:lI47|H105E9B528 -105E9B528:lI85|H105E9B598 -105E9B598:lI115|H105E9B618 -105E9B618:lI101|H105E9B6A8 -105E9B6A8:lI114|H105E9B748 -105E9B748:lI115|H105E9B7F8 -105E9B7F8:lI47|H105E9B8B8 -105E9B8B8:lI110|H105E9B988 -105E9B988:lI105|H105E9BA68 -105E9BA68:lI99|H105E9BB58 -105E9BB58:lI104|H105E9BC58 -105E9BC58:lI111|H105E9BD68 -105E9BD68:lI108|H105E9BE88 -105E9BE88:lI97|H105E9BFB8 -105E9BFB8:lI115|H105E9C0F8 -105E9C0F8:lI99|H105E9C238 -105E9C238:lI97|H105E9C378 -105E9C378:lI114|H105E9C4B8 -105E9C4B8:lI108|H105E9C5F8 -105E9C5F8:lI115|H105E9C738 -105E9C738:lI111|H105E9C878 -105E9C878:lI110|H105E9C9B8 -105E9C9B8:lI47|H105E9CAF8 -105E9CAF8:lI86|H105E9CC38 -105E9CC38:lI83|H105E9CD78 -105E9CD78:lI32|H105E9CEB8 -105E9CEB8:lI67|H105E9CFF8 -105E9CFF8:lI111|H105E9D138 -105E9D138:lI100|H105E9D278 -105E9D278:lI101|H105E9D3B8 -105E9D3B8:lI47|H105E9D4F8 -105E9D4F8:lI65|H105E9D638 -105E9D638:lI100|H105E9D778 -105E9D778:lI118|H105E9D8B8 -105E9D8B8:lI101|H105E9D9F8 -105E9D9F8:lI110|H105E9DB38 -105E9DB38:lI116|H105E9DC78 -105E9DC78:lI79|H105E9DDB8 -105E9DDB8:lI102|H105E9DEF8 -105E9DEF8:lI67|H105E9E038 -105E9E038:lI111|H105E9E178 -105E9E178:lI100|H105E9E2B8 -105E9E2B8:lI101|H105E9E3F8 -105E9E3F8:lI47|H105E9E538 -105E9E538:lI97|H105E9E678 -105E9E678:lI111|H105E9E7B8 -105E9E7B8:lI99|H105E9E8F8 -105E9E8F8:lI50|H105E9EA38 -105E9EA38:lI48|H105E9EB78 -105E9EB78:lI50|H105E9ECB8 -105E9ECB8:lI51|H105E9EDF8 -105E9EDF8:lI47|H105E9EF38 -105E9EF38:lI98|H105E9F078 -105E9F078:lI117|H105E9F1B8 -105E9F1B8:lI105|H105E9F2F8 -105E9F2F8:lI108|H105E9F438 -105E9F438:lI100|H105E9F578 -105E9F578:lI47|H105E9F6A8 -105E9F6A8:lI100|H105E9F7D8 -105E9F7D8:lI101|H105E9F908 -105E9F908:lI118|H105E9FA38 -105E9FA38:lI47|H105E9FB68 -105E9FB68:lI101|H105E9FC98 -105E9FC98:lI114|H105E9FDC8 -105E9FDC8:lI108|H105E9FEF8 -105E9FEF8:lI97|H105EA0028 -105EA0028:lI110|H105EA0158 -105EA0158:lI103|H105EA0288 -105EA0288:lI47|H105EA03B8 -105EA03B8:lI103|H105EA04E8 -105EA04E8:lI108|H105EA0618 -105EA0618:lI101|H105EA0748 -105EA0748:lI97|H105EA0878 -105EA0878:lI109|H105EA09A8 -105EA09A8:lI95|H105EA0AD8 -105EA0AD8:lI101|H105EA0C08 -105EA0C08:lI114|H105EA0D38 -105EA0D38:lI108|H105EA0E68 -105EA0E68:lI97|H105EA0F98 -105EA0F98:lI110|H105EA10B8 -105EA10B8:lI103|H105EA11B8 -105EA11B8:lI47|H105EA12A8 -105EA12A8:lI101|H105EA1388 -105EA1388:lI98|H105EA1468 -105EA1468:lI105|H105EA1538 -105EA1538:lI110|N -105E9B4D8:lH105E9B538|H105E9B548 -105E9B538:lI47|H105E9B5A8 -105E9B5A8:lI85|H105E9B628 -105E9B628:lI115|H105E9B6B8 -105E9B6B8:lI101|H105E9B758 -105E9B758:lI114|H105E9B808 -105E9B808:lI115|H105E9B8C8 -105E9B8C8:lI47|H105E9B998 -105E9B998:lI110|H105E9BA78 -105E9BA78:lI105|H105E9BB68 -105E9BB68:lI99|H105E9BC68 -105E9BC68:lI104|H105E9BD78 -105E9BD78:lI111|H105E9BE98 -105E9BE98:lI108|H105E9BFC8 -105E9BFC8:lI97|H105E9C108 -105E9C108:lI115|H105E9C248 -105E9C248:lI99|H105E9C388 -105E9C388:lI97|H105E9C4C8 -105E9C4C8:lI114|H105E9C608 -105E9C608:lI108|H105E9C748 -105E9C748:lI115|H105E9C888 -105E9C888:lI111|H105E9C9C8 -105E9C9C8:lI110|H105E9CB08 -105E9CB08:lI47|H105E9CC48 -105E9CC48:lI86|H105E9CD88 -105E9CD88:lI83|H105E9CEC8 -105E9CEC8:lI32|H105E9D008 -105E9D008:lI67|H105E9D148 -105E9D148:lI111|H105E9D288 -105E9D288:lI100|H105E9D3C8 -105E9D3C8:lI101|H105E9D508 -105E9D508:lI47|H105E9D648 -105E9D648:lI65|H105E9D788 -105E9D788:lI100|H105E9D8C8 -105E9D8C8:lI118|H105E9DA08 -105E9DA08:lI101|H105E9DB48 -105E9DB48:lI110|H105E9DC88 -105E9DC88:lI116|H105E9DDC8 -105E9DDC8:lI79|H105E9DF08 -105E9DF08:lI102|H105E9E048 -105E9E048:lI67|H105E9E188 -105E9E188:lI111|H105E9E2C8 -105E9E2C8:lI100|H105E9E408 -105E9E408:lI101|H105E9E548 -105E9E548:lI47|H105E9E688 -105E9E688:lI97|H105E9E7C8 -105E9E7C8:lI111|H105E9E908 -105E9E908:lI99|H105E9EA48 -105E9EA48:lI50|H105E9EB88 -105E9EB88:lI48|H105E9ECC8 -105E9ECC8:lI50|H105E9EE08 -105E9EE08:lI51|H105E9EF48 -105E9EF48:lI47|H105E9F088 -105E9F088:lI98|H105E9F1C8 -105E9F1C8:lI117|H105E9F308 -105E9F308:lI105|H105E9F448 -105E9F448:lI108|H105E9F588 -105E9F588:lI100|H105E9F6B8 -105E9F6B8:lI47|H105E9F7E8 -105E9F7E8:lI100|H105E9F918 -105E9F918:lI101|H105E9FA48 -105E9FA48:lI118|H105E9FB78 -105E9FB78:lI47|H105E9FCA8 -105E9FCA8:lI101|H105E9FDD8 -105E9FDD8:lI114|H105E9FF08 -105E9FF08:lI108|H105EA0038 -105EA0038:lI97|H105EA0168 -105EA0168:lI110|H105EA0298 -105EA0298:lI103|H105EA03C8 -105EA03C8:lI47|H105EA04F8 -105EA04F8:lI103|H105EA0628 -105EA0628:lI108|H105EA0758 -105EA0758:lI105|H105EA0888 -105EA0888:lI110|H105EA09B8 -105EA09B8:lI116|H105EA0AE8 -105EA0AE8:lI47|H105EA0C18 -105EA0C18:lI101|H105EA0D48 -105EA0D48:lI98|H105EA0E78 -105EA0E78:lI105|H105EA0FA8 -105EA0FA8:lI110|N -105E9B548:lH105E9B5B8|H105E9B5C8 -105E9B5B8:lI47|H105E9B638 -105E9B638:lI85|H105E9B6C8 -105E9B6C8:lI115|H105E9B768 -105E9B768:lI101|H105E9B818 -105E9B818:lI114|H105E9B8D8 -105E9B8D8:lI115|H105E9B9A8 -105E9B9A8:lI47|H105E9BA88 -105E9BA88:lI110|H105E9BB78 -105E9BB78:lI105|H105E9BC78 -105E9BC78:lI99|H105E9BD88 -105E9BD88:lI104|H105E9BEA8 -105E9BEA8:lI111|H105E9BFD8 -105E9BFD8:lI108|H105E9C118 -105E9C118:lI97|H105E9C258 -105E9C258:lI115|H105E9C398 -105E9C398:lI99|H105E9C4D8 -105E9C4D8:lI97|H105E9C618 -105E9C618:lI114|H105E9C758 -105E9C758:lI108|H105E9C898 -105E9C898:lI115|H105E9C9D8 -105E9C9D8:lI111|H105E9CB18 -105E9CB18:lI110|H105E9CC58 -105E9CC58:lI47|H105E9CD98 -105E9CD98:lI86|H105E9CED8 -105E9CED8:lI83|H105E9D018 -105E9D018:lI32|H105E9D158 -105E9D158:lI67|H105E9D298 -105E9D298:lI111|H105E9D3D8 -105E9D3D8:lI100|H105E9D518 -105E9D518:lI101|H105E9D658 -105E9D658:lI47|H105E9D798 -105E9D798:lI65|H105E9D8D8 -105E9D8D8:lI100|H105E9DA18 -105E9DA18:lI118|H105E9DB58 -105E9DB58:lI101|H105E9DC98 -105E9DC98:lI110|H105E9DDD8 -105E9DDD8:lI116|H105E9DF18 -105E9DF18:lI79|H105E9E058 -105E9E058:lI102|H105E9E198 -105E9E198:lI67|H105E9E2D8 -105E9E2D8:lI111|H105E9E418 -105E9E418:lI100|H105E9E558 -105E9E558:lI101|H105E9E698 -105E9E698:lI47|H105E9E7D8 -105E9E7D8:lI97|H105E9E918 -105E9E918:lI111|H105E9EA58 -105E9EA58:lI99|H105E9EB98 -105E9EB98:lI50|H105E9ECD8 -105E9ECD8:lI48|H105E9EE18 -105E9EE18:lI50|H105E9EF58 -105E9EF58:lI51|H105E9F098 -105E9F098:lI47|H105E9F1D8 -105E9F1D8:lI98|H105E9F318 -105E9F318:lI117|H105E9F458 -105E9F458:lI105|H105E9F598 -105E9F598:lI108|H105E9F6C8 -105E9F6C8:lI100|H105E9F7F8 -105E9F7F8:lI47|H105E9F928 -105E9F928:lI100|H105E9FA58 -105E9FA58:lI101|H105E9FB88 -105E9FB88:lI118|H105E9FCB8 -105E9FCB8:lI47|H105E9FDE8 -105E9FDE8:lI101|H105E9FF18 -105E9FF18:lI114|H105EA0048 -105EA0048:lI108|H105EA0178 -105EA0178:lI97|H105EA02A8 -105EA02A8:lI110|H105EA03D8 -105EA03D8:lI103|H105EA0508 -105EA0508:lI47|H105EA0638 -105EA0638:lI103|H105EA0768 -105EA0768:lI108|H105EA0898 -105EA0898:lI101|H105EA09C8 -105EA09C8:lI97|H105EA0AF8 -105EA0AF8:lI109|H105EA0C28 -105EA0C28:lI95|H105EA0D58 -105EA0D58:lI104|H105EA0E88 -105EA0E88:lI116|H105EA0FB8 -105EA0FB8:lI116|H105EA10C8 -105EA10C8:lI112|H105EA11C8 -105EA11C8:lI47|H105EA12B8 -105EA12B8:lI101|H105EA1398 -105EA1398:lI98|H105EA1478 -105EA1478:lI105|H105EA1548 -105EA1548:lI110|N -105E9B5C8:lH105E9B648|H105E9B658 -105E9B648:lI47|H105E9B6D8 -105E9B6D8:lI85|H105E9B778 -105E9B778:lI115|H105E9B828 -105E9B828:lI101|H105E9B8E8 -105E9B8E8:lI114|H105E9B9B8 -105E9B9B8:lI115|H105E9BA98 -105E9BA98:lI47|H105E9BB88 -105E9BB88:lI110|H105E9BC88 -105E9BC88:lI105|H105E9BD98 -105E9BD98:lI99|H105E9BEB8 -105E9BEB8:lI104|H105E9BFE8 -105E9BFE8:lI111|H105E9C128 -105E9C128:lI108|H105E9C268 -105E9C268:lI97|H105E9C3A8 -105E9C3A8:lI115|H105E9C4E8 -105E9C4E8:lI99|H105E9C628 -105E9C628:lI97|H105E9C768 -105E9C768:lI114|H105E9C8A8 -105E9C8A8:lI108|H105E9C9E8 -105E9C9E8:lI115|H105E9CB28 -105E9CB28:lI111|H105E9CC68 -105E9CC68:lI110|H105E9CDA8 -105E9CDA8:lI47|H105E9CEE8 -105E9CEE8:lI86|H105E9D028 -105E9D028:lI83|H105E9D168 -105E9D168:lI32|H105E9D2A8 -105E9D2A8:lI67|H105E9D3E8 -105E9D3E8:lI111|H105E9D528 -105E9D528:lI100|H105E9D668 -105E9D668:lI101|H105E9D7A8 -105E9D7A8:lI47|H105E9D8E8 -105E9D8E8:lI65|H105E9DA28 -105E9DA28:lI100|H105E9DB68 -105E9DB68:lI118|H105E9DCA8 -105E9DCA8:lI101|H105E9DDE8 -105E9DDE8:lI110|H105E9DF28 -105E9DF28:lI116|H105E9E068 -105E9E068:lI79|H105E9E1A8 -105E9E1A8:lI102|H105E9E2E8 -105E9E2E8:lI67|H105E9E428 -105E9E428:lI111|H105E9E568 -105E9E568:lI100|H105E9E6A8 -105E9E6A8:lI101|H105E9E7E8 -105E9E7E8:lI47|H105E9E928 -105E9E928:lI97|H105E9EA68 -105E9EA68:lI111|H105E9EBA8 -105E9EBA8:lI99|H105E9ECE8 -105E9ECE8:lI50|H105E9EE28 -105E9EE28:lI48|H105E9EF68 -105E9EF68:lI50|H105E9F0A8 -105E9F0A8:lI51|H105E9F1E8 -105E9F1E8:lI47|H105E9F328 -105E9F328:lI98|H105E9F468 -105E9F468:lI117|H105E9F5A8 -105E9F5A8:lI105|H105E9F6D8 -105E9F6D8:lI108|H105E9F808 -105E9F808:lI100|H105E9F938 -105E9F938:lI47|H105E9FA68 -105E9FA68:lI100|H105E9FB98 -105E9FB98:lI101|H105E9FCC8 -105E9FCC8:lI118|H105E9FDF8 -105E9FDF8:lI47|H105E9FF28 -105E9FF28:lI101|H105EA0058 -105EA0058:lI114|H105EA0188 -105EA0188:lI108|H105EA02B8 -105EA02B8:lI97|H105EA03E8 -105EA03E8:lI110|H105EA0518 -105EA0518:lI103|H105EA0648 -105EA0648:lI47|H105EA0778 -105EA0778:lI103|H105EA08A8 -105EA08A8:lI97|H105EA09D8 -105EA09D8:lI112|H105EA0B08 -105EA0B08:lI47|H105EA0C38 -105EA0C38:lI101|H105EA0D68 -105EA0D68:lI98|H105EA0E98 -105EA0E98:lI105|H105EA0FC8 -105EA0FC8:lI110|N -105E9B658:lH105E9B6E8|H105E9B6F8 -105E9B6E8:lI47|H105E9B788 -105E9B788:lI85|H105E9B838 -105E9B838:lI115|H105E9B8F8 -105E9B8F8:lI101|H105E9B9C8 -105E9B9C8:lI114|H105E9BAA8 -105E9BAA8:lI115|H105E9BB98 -105E9BB98:lI47|H105E9BC98 -105E9BC98:lI110|H105E9BDA8 -105E9BDA8:lI105|H105E9BEC8 -105E9BEC8:lI99|H105E9BFF8 -105E9BFF8:lI104|H105E9C138 -105E9C138:lI111|H105E9C278 -105E9C278:lI108|H105E9C3B8 -105E9C3B8:lI97|H105E9C4F8 -105E9C4F8:lI115|H105E9C638 -105E9C638:lI99|H105E9C778 -105E9C778:lI97|H105E9C8B8 -105E9C8B8:lI114|H105E9C9F8 -105E9C9F8:lI108|H105E9CB38 -105E9CB38:lI115|H105E9CC78 -105E9CC78:lI111|H105E9CDB8 -105E9CDB8:lI110|H105E9CEF8 -105E9CEF8:lI47|H105E9D038 -105E9D038:lI86|H105E9D178 -105E9D178:lI83|H105E9D2B8 -105E9D2B8:lI32|H105E9D3F8 -105E9D3F8:lI67|H105E9D538 -105E9D538:lI111|H105E9D678 -105E9D678:lI100|H105E9D7B8 -105E9D7B8:lI101|H105E9D8F8 -105E9D8F8:lI47|H105E9DA38 -105E9DA38:lI65|H105E9DB78 -105E9DB78:lI100|H105E9DCB8 -105E9DCB8:lI118|H105E9DDF8 -105E9DDF8:lI101|H105E9DF38 -105E9DF38:lI110|H105E9E078 -105E9E078:lI116|H105E9E1B8 -105E9E1B8:lI79|H105E9E2F8 -105E9E2F8:lI102|H105E9E438 -105E9E438:lI67|H105E9E578 -105E9E578:lI111|H105E9E6B8 -105E9E6B8:lI100|H105E9E7F8 -105E9E7F8:lI101|H105E9E938 -105E9E938:lI47|H105E9EA78 -105E9EA78:lI97|H105E9EBB8 -105E9EBB8:lI111|H105E9ECF8 -105E9ECF8:lI99|H105E9EE38 -105E9EE38:lI50|H105E9EF78 -105E9EF78:lI48|H105E9F0B8 -105E9F0B8:lI50|H105E9F1F8 -105E9F1F8:lI51|H105E9F338 -105E9F338:lI47|H105E9F478 -105E9F478:lI98|H105E9F5B8 -105E9F5B8:lI117|H105E9F6E8 -105E9F6E8:lI105|H105E9F818 -105E9F818:lI108|H105E9F948 -105E9F948:lI100|H105E9FA78 -105E9FA78:lI47|H105E9FBA8 -105E9FBA8:lI100|H105E9FCD8 -105E9FCD8:lI101|H105E9FE08 -105E9FE08:lI118|H105E9FF38 -105E9FF38:lI47|H105EA0068 -105EA0068:lI101|H105EA0198 -105EA0198:lI114|H105EA02C8 -105EA02C8:lI108|H105EA03F8 -105EA03F8:lI97|H105EA0528 -105EA0528:lI110|H105EA0658 -105EA0658:lI103|H105EA0788 -105EA0788:lI47|H105EA08B8 -105EA08B8:lI103|H105EA09E8 -105EA09E8:lI108|H105EA0B18 -105EA0B18:lI101|H105EA0C48 -105EA0C48:lI97|H105EA0D78 -105EA0D78:lI109|H105EA0EA8 -105EA0EA8:lI95|H105EA0FD8 -105EA0FD8:lI111|H105EA10D8 -105EA10D8:lI116|H105EA11D8 -105EA11D8:lI112|H105EA12C8 -105EA12C8:lI47|H105EA13A8 -105EA13A8:lI101|H105EA1488 -105EA1488:lI98|H105EA1558 -105EA1558:lI105|H105EA1608 -105EA1608:lI110|N -105E9B6F8:lH105E9B798|H105E9B7A8 -105E9B798:lI47|H105E9B848 -105E9B848:lI85|H105E9B908 -105E9B908:lI115|H105E9B9D8 -105E9B9D8:lI101|H105E9BAB8 -105E9BAB8:lI114|H105E9BBA8 -105E9BBA8:lI115|H105E9BCA8 -105E9BCA8:lI47|H105E9BDB8 -105E9BDB8:lI110|H105E9BED8 -105E9BED8:lI105|H105E9C008 -105E9C008:lI99|H105E9C148 -105E9C148:lI104|H105E9C288 -105E9C288:lI111|H105E9C3C8 -105E9C3C8:lI108|H105E9C508 -105E9C508:lI97|H105E9C648 -105E9C648:lI115|H105E9C788 -105E9C788:lI99|H105E9C8C8 -105E9C8C8:lI97|H105E9CA08 -105E9CA08:lI114|H105E9CB48 -105E9CB48:lI108|H105E9CC88 -105E9CC88:lI115|H105E9CDC8 -105E9CDC8:lI111|H105E9CF08 -105E9CF08:lI110|H105E9D048 -105E9D048:lI47|H105E9D188 -105E9D188:lI86|H105E9D2C8 -105E9D2C8:lI83|H105E9D408 -105E9D408:lI32|H105E9D548 -105E9D548:lI67|H105E9D688 -105E9D688:lI111|H105E9D7C8 -105E9D7C8:lI100|H105E9D908 -105E9D908:lI101|H105E9DA48 -105E9DA48:lI47|H105E9DB88 -105E9DB88:lI65|H105E9DCC8 -105E9DCC8:lI100|H105E9DE08 -105E9DE08:lI118|H105E9DF48 -105E9DF48:lI101|H105E9E088 -105E9E088:lI110|H105E9E1C8 -105E9E1C8:lI116|H105E9E308 -105E9E308:lI79|H105E9E448 -105E9E448:lI102|H105E9E588 -105E9E588:lI67|H105E9E6C8 -105E9E6C8:lI111|H105E9E808 -105E9E808:lI100|H105E9E948 -105E9E948:lI101|H105E9EA88 -105E9EA88:lI47|H105E9EBC8 -105E9EBC8:lI97|H105E9ED08 -105E9ED08:lI111|H105E9EE48 -105E9EE48:lI99|H105E9EF88 -105E9EF88:lI50|H105E9F0C8 -105E9F0C8:lI48|H105E9F208 -105E9F208:lI50|H105E9F348 -105E9F348:lI51|H105E9F488 -105E9F488:lI47|H105E9F5C8 -105E9F5C8:lI98|H105E9F6F8 -105E9F6F8:lI117|H105E9F828 -105E9F828:lI105|H105E9F958 -105E9F958:lI108|H105E9FA88 -105E9FA88:lI100|H105E9FBB8 -105E9FBB8:lI47|H105E9FCE8 -105E9FCE8:lI100|H105E9FE18 -105E9FE18:lI101|H105E9FF48 -105E9FF48:lI118|H105EA0078 -105EA0078:lI47|H105EA01A8 -105EA01A8:lI101|H105EA02D8 -105EA02D8:lI114|H105EA0408 -105EA0408:lI108|H105EA0538 -105EA0538:lI97|H105EA0668 -105EA0668:lI110|H105EA0798 -105EA0798:lI103|H105EA08C8 -105EA08C8:lI47|H105EA09F8 -105EA09F8:lI103|H105EA0B28 -105EA0B28:lI108|H105EA0C58 -105EA0C58:lI101|H105EA0D88 -105EA0D88:lI97|H105EA0EB8 -105EA0EB8:lI109|H105EA0FE8 -105EA0FE8:lI95|H105EA10E8 -105EA10E8:lI99|H105EA11E8 -105EA11E8:lI111|H105EA12D8 -105EA12D8:lI109|H105EA13B8 -105EA13B8:lI109|H105EA1498 -105EA1498:lI117|H105EA1568 -105EA1568:lI110|H105EA1618 -105EA1618:lI105|H105EA16B8 -105EA16B8:lI116|H105EA1758 -105EA1758:lI121|H105EA17D8 -105EA17D8:lI95|H105EA1858 -105EA1858:lI99|H105EA18B8 -105EA18B8:lI111|H105EA1908 -105EA1908:lI108|H105EA1958 -105EA1958:lI111|H105EA1978 -105EA1978:lI117|H105EA1998 -105EA1998:lI114|H105EA19B8 -105EA19B8:lI47|H105EA19D8 -105EA19D8:lI101|H105EA19E8 -105EA19E8:lI98|H105EA19F8 -105EA19F8:lI105|H105EA1A08 -105EA1A08:lI110|N -105E9B7A8:lH105E9B858|H105E9B868 -105E9B858:lI47|H105E9B918 -105E9B918:lI85|H105E9B9E8 -105E9B9E8:lI115|H105E9BAC8 -105E9BAC8:lI101|H105E9BBB8 -105E9BBB8:lI114|H105E9BCB8 -105E9BCB8:lI115|H105E9BDC8 -105E9BDC8:lI47|H105E9BEE8 -105E9BEE8:lI110|H105E9C018 -105E9C018:lI105|H105E9C158 -105E9C158:lI99|H105E9C298 -105E9C298:lI104|H105E9C3D8 -105E9C3D8:lI111|H105E9C518 -105E9C518:lI108|H105E9C658 -105E9C658:lI97|H105E9C798 -105E9C798:lI115|H105E9C8D8 -105E9C8D8:lI99|H105E9CA18 -105E9CA18:lI97|H105E9CB58 -105E9CB58:lI114|H105E9CC98 -105E9CC98:lI108|H105E9CDD8 -105E9CDD8:lI115|H105E9CF18 -105E9CF18:lI111|H105E9D058 -105E9D058:lI110|H105E9D198 -105E9D198:lI47|H105E9D2D8 -105E9D2D8:lI86|H105E9D418 -105E9D418:lI83|H105E9D558 -105E9D558:lI32|H105E9D698 -105E9D698:lI67|H105E9D7D8 -105E9D7D8:lI111|H105E9D918 -105E9D918:lI100|H105E9DA58 -105E9DA58:lI101|H105E9DB98 -105E9DB98:lI47|H105E9DCD8 -105E9DCD8:lI65|H105E9DE18 -105E9DE18:lI100|H105E9DF58 -105E9DF58:lI118|H105E9E098 -105E9E098:lI101|H105E9E1D8 -105E9E1D8:lI110|H105E9E318 -105E9E318:lI116|H105E9E458 -105E9E458:lI79|H105E9E598 -105E9E598:lI102|H105E9E6D8 -105E9E6D8:lI67|H105E9E818 -105E9E818:lI111|H105E9E958 -105E9E958:lI100|H105E9EA98 -105E9EA98:lI101|H105E9EBD8 -105E9EBD8:lI47|H105E9ED18 -105E9ED18:lI97|H105E9EE58 -105E9EE58:lI111|H105E9EF98 -105E9EF98:lI99|H105E9F0D8 -105E9F0D8:lI50|H105E9F218 -105E9F218:lI48|H105E9F358 -105E9F358:lI50|H105E9F498 -105E9F498:lI51|H105E9F5D8 -105E9F5D8:lI47|H105E9F708 -105E9F708:lI98|H105E9F838 -105E9F838:lI117|H105E9F968 -105E9F968:lI105|H105E9FA98 -105E9FA98:lI108|H105E9FBC8 -105E9FBC8:lI100|H105E9FCF8 -105E9FCF8:lI47|H105E9FE28 -105E9FE28:lI100|H105E9FF58 -105E9FF58:lI101|H105EA0088 -105EA0088:lI118|H105EA01B8 -105EA01B8:lI47|H105EA02E8 -105EA02E8:lI101|H105EA0418 -105EA0418:lI114|H105EA0548 -105EA0548:lI108|H105EA0678 -105EA0678:lI97|H105EA07A8 -105EA07A8:lI110|H105EA08D8 -105EA08D8:lI103|H105EA0A08 -105EA0A08:lI47|H105EA0B38 -105EA0B38:lI103|H105EA0C68 -105EA0C68:lI108|H105EA0D98 -105EA0D98:lI101|H105EA0EC8 -105EA0EC8:lI97|H105EA0FF8 -105EA0FF8:lI109|H105EA10F8 -105EA10F8:lI95|H105EA11F8 -105EA11F8:lI104|H105EA12E8 -105EA12E8:lI116|H105EA13C8 -105EA13C8:lI116|H105EA14A8 -105EA14A8:lI112|H105EA1578 -105EA1578:lI99|H105EA1628 -105EA1628:lI47|H105EA16C8 -105EA16C8:lI101|H105EA1768 -105EA1768:lI98|H105EA17E8 -105EA17E8:lI105|H105EA1868 -105EA1868:lI110|N -105E9B868:lH105E9B928|H105E9B938 -105E9B928:lI47|H105E9B9F8 -105E9B9F8:lI85|H105E9BAD8 -105E9BAD8:lI115|H105E9BBC8 -105E9BBC8:lI101|H105E9BCC8 -105E9BCC8:lI114|H105E9BDD8 -105E9BDD8:lI115|H105E9BEF8 -105E9BEF8:lI47|H105E9C028 -105E9C028:lI110|H105E9C168 -105E9C168:lI105|H105E9C2A8 -105E9C2A8:lI99|H105E9C3E8 -105E9C3E8:lI104|H105E9C528 -105E9C528:lI111|H105E9C668 -105E9C668:lI108|H105E9C7A8 -105E9C7A8:lI97|H105E9C8E8 -105E9C8E8:lI115|H105E9CA28 -105E9CA28:lI99|H105E9CB68 -105E9CB68:lI97|H105E9CCA8 -105E9CCA8:lI114|H105E9CDE8 -105E9CDE8:lI108|H105E9CF28 -105E9CF28:lI115|H105E9D068 -105E9D068:lI111|H105E9D1A8 -105E9D1A8:lI110|H105E9D2E8 -105E9D2E8:lI47|H105E9D428 -105E9D428:lI86|H105E9D568 -105E9D568:lI83|H105E9D6A8 -105E9D6A8:lI32|H105E9D7E8 -105E9D7E8:lI67|H105E9D928 -105E9D928:lI111|H105E9DA68 -105E9DA68:lI100|H105E9DBA8 -105E9DBA8:lI101|H105E9DCE8 -105E9DCE8:lI47|H105E9DE28 -105E9DE28:lI65|H105E9DF68 -105E9DF68:lI100|H105E9E0A8 -105E9E0A8:lI118|H105E9E1E8 -105E9E1E8:lI101|H105E9E328 -105E9E328:lI110|H105E9E468 -105E9E468:lI116|H105E9E5A8 -105E9E5A8:lI79|H105E9E6E8 -105E9E6E8:lI102|H105E9E828 -105E9E828:lI67|H105E9E968 -105E9E968:lI111|H105E9EAA8 -105E9EAA8:lI100|H105E9EBE8 -105E9EBE8:lI101|H105E9ED28 -105E9ED28:lI47|H105E9EE68 -105E9EE68:lI97|H105E9EFA8 -105E9EFA8:lI111|H105E9F0E8 -105E9F0E8:lI99|H105E9F228 -105E9F228:lI50|H105E9F368 -105E9F368:lI48|H105E9F4A8 -105E9F4A8:lI50|H105E9F5E8 -105E9F5E8:lI51|H105E9F718 -105E9F718:lI47|H105E9F848 -105E9F848:lI98|H105E9F978 -105E9F978:lI117|H105E9FAA8 -105E9FAA8:lI105|H105E9FBD8 -105E9FBD8:lI108|H105E9FD08 -105E9FD08:lI100|H105E9FE38 -105E9FE38:lI47|H105E9FF68 -105E9FF68:lI100|H105EA0098 -105EA0098:lI101|H105EA01C8 -105EA01C8:lI118|H105EA02F8 -105EA02F8:lI47|H105EA0428 -105EA0428:lI101|H105EA0558 -105EA0558:lI114|H105EA0688 -105EA0688:lI108|H105EA07B8 -105EA07B8:lI97|H105EA08E8 -105EA08E8:lI110|H105EA0A18 -105EA0A18:lI103|H105EA0B48 -105EA0B48:lI47|H105EA0C78 -105EA0C78:lI103|H105EA0DA8 -105EA0DA8:lI108|H105EA0ED8 -105EA0ED8:lI101|H105EA1008 -105EA1008:lI97|H105EA1108 -105EA1108:lI109|H105EA1208 -105EA1208:lI95|H105EA12F8 -105EA12F8:lI115|H105EA13D8 -105EA13D8:lI116|H105EA14B8 -105EA14B8:lI100|H105EA1588 -105EA1588:lI108|H105EA1638 -105EA1638:lI105|H105EA16D8 -105EA16D8:lI98|H105EA1778 -105EA1778:lI47|H105EA17F8 -105EA17F8:lI101|H105EA1878 -105EA1878:lI98|H105EA18C8 -105EA18C8:lI105|H105EA1918 -105EA1918:lI110|N -105E9B938:lH105E9BA08|H105E9BA18 -105E9BA08:lI47|H105E9BAE8 -105E9BAE8:lI85|H105E9BBD8 -105E9BBD8:lI115|H105E9BCD8 -105E9BCD8:lI101|H105E9BDE8 -105E9BDE8:lI114|H105E9BF08 -105E9BF08:lI115|H105E9C038 -105E9C038:lI47|H105E9C178 -105E9C178:lI110|H105E9C2B8 -105E9C2B8:lI105|H105E9C3F8 -105E9C3F8:lI99|H105E9C538 -105E9C538:lI104|H105E9C678 -105E9C678:lI111|H105E9C7B8 -105E9C7B8:lI108|H105E9C8F8 -105E9C8F8:lI97|H105E9CA38 -105E9CA38:lI115|H105E9CB78 -105E9CB78:lI99|H105E9CCB8 -105E9CCB8:lI97|H105E9CDF8 -105E9CDF8:lI114|H105E9CF38 -105E9CF38:lI108|H105E9D078 -105E9D078:lI115|H105E9D1B8 -105E9D1B8:lI111|H105E9D2F8 -105E9D2F8:lI110|H105E9D438 -105E9D438:lI47|H105E9D578 -105E9D578:lI86|H105E9D6B8 -105E9D6B8:lI83|H105E9D7F8 -105E9D7F8:lI32|H105E9D938 -105E9D938:lI67|H105E9DA78 -105E9DA78:lI111|H105E9DBB8 -105E9DBB8:lI100|H105E9DCF8 -105E9DCF8:lI101|H105E9DE38 -105E9DE38:lI47|H105E9DF78 -105E9DF78:lI65|H105E9E0B8 -105E9E0B8:lI100|H105E9E1F8 -105E9E1F8:lI118|H105E9E338 -105E9E338:lI101|H105E9E478 -105E9E478:lI110|H105E9E5B8 -105E9E5B8:lI116|H105E9E6F8 -105E9E6F8:lI79|H105E9E838 -105E9E838:lI102|H105E9E978 -105E9E978:lI67|H105E9EAB8 -105E9EAB8:lI111|H105E9EBF8 -105E9EBF8:lI100|H105E9ED38 -105E9ED38:lI101|H105E9EE78 -105E9EE78:lI47|H105E9EFB8 -105E9EFB8:lI97|H105E9F0F8 -105E9F0F8:lI111|H105E9F238 -105E9F238:lI99|H105E9F378 -105E9F378:lI50|H105E9F4B8 -105E9F4B8:lI48|H105E9F5F8 -105E9F5F8:lI50|H105E9F728 -105E9F728:lI51|H105E9F858 -105E9F858:lI47|H105E9F988 -105E9F988:lI98|H105E9FAB8 -105E9FAB8:lI117|H105E9FBE8 -105E9FBE8:lI105|H105E9FD18 -105E9FD18:lI108|H105E9FE48 -105E9FE48:lI100|H105E9FF78 -105E9FF78:lI47|H105EA00A8 -105EA00A8:lI100|H105EA01D8 -105EA01D8:lI101|H105EA0308 -105EA0308:lI118|H105EA0438 -105EA0438:lI47|H105EA0568 -105EA0568:lI101|H105EA0698 -105EA0698:lI114|H105EA07C8 -105EA07C8:lI108|H105EA08F8 -105EA08F8:lI97|H105EA0A28 -105EA0A28:lI110|H105EA0B58 -105EA0B58:lI103|H105EA0C88 -105EA0C88:lI47|H105EA0DB8 -105EA0DB8:lI103|H105EA0EE8 -105EA0EE8:lI108|H105EA1018 -105EA1018:lI101|H105EA1118 -105EA1118:lI101|H105EA1218 -105EA1218:lI117|H105EA1308 -105EA1308:lI110|H105EA13E8 -105EA13E8:lI105|H105EA14C8 -105EA14C8:lI116|H105EA1598 -105EA1598:lI47|H105EA1648 -105EA1648:lI101|H105EA16E8 -105EA16E8:lI98|H105EA1788 -105EA1788:lI105|H105EA1808 -105EA1808:lI110|N -105E9BA18:lH105E9BAF8|H105E9BB08 -105E9BAF8:lI47|H105E9BBE8 -105E9BBE8:lI85|H105E9BCE8 -105E9BCE8:lI115|H105E9BDF8 -105E9BDF8:lI101|H105E9BF18 -105E9BF18:lI114|H105E9C048 -105E9C048:lI115|H105E9C188 -105E9C188:lI47|H105E9C2C8 -105E9C2C8:lI110|H105E9C408 -105E9C408:lI105|H105E9C548 -105E9C548:lI99|H105E9C688 -105E9C688:lI104|H105E9C7C8 -105E9C7C8:lI111|H105E9C908 -105E9C908:lI108|H105E9CA48 -105E9CA48:lI97|H105E9CB88 -105E9CB88:lI115|H105E9CCC8 -105E9CCC8:lI99|H105E9CE08 -105E9CE08:lI97|H105E9CF48 -105E9CF48:lI114|H105E9D088 -105E9D088:lI108|H105E9D1C8 -105E9D1C8:lI115|H105E9D308 -105E9D308:lI111|H105E9D448 -105E9D448:lI110|H105E9D588 -105E9D588:lI47|H105E9D6C8 -105E9D6C8:lI86|H105E9D808 -105E9D808:lI83|H105E9D948 -105E9D948:lI32|H105E9DA88 -105E9DA88:lI67|H105E9DBC8 -105E9DBC8:lI111|H105E9DD08 -105E9DD08:lI100|H105E9DE48 -105E9DE48:lI101|H105E9DF88 -105E9DF88:lI47|H105E9E0C8 -105E9E0C8:lI65|H105E9E208 -105E9E208:lI100|H105E9E348 -105E9E348:lI118|H105E9E488 -105E9E488:lI101|H105E9E5C8 -105E9E5C8:lI110|H105E9E708 -105E9E708:lI116|H105E9E848 -105E9E848:lI79|H105E9E988 -105E9E988:lI102|H105E9EAC8 -105E9EAC8:lI67|H105E9EC08 -105E9EC08:lI111|H105E9ED48 -105E9ED48:lI100|H105E9EE88 -105E9EE88:lI101|H105E9EFC8 -105E9EFC8:lI47|H105E9F108 -105E9F108:lI97|H105E9F248 -105E9F248:lI111|H105E9F388 -105E9F388:lI99|H105E9F4C8 -105E9F4C8:lI50|H105E9F608 -105E9F608:lI48|H105E9F738 -105E9F738:lI50|H105E9F868 -105E9F868:lI51|H105E9F998 -105E9F998:lI47|H105E9FAC8 -105E9FAC8:lI98|H105E9FBF8 -105E9FBF8:lI117|H105E9FD28 -105E9FD28:lI105|H105E9FE58 -105E9FE58:lI108|H105E9FF88 -105E9FF88:lI100|H105EA00B8 -105EA00B8:lI47|H105EA01E8 -105EA01E8:lI100|H105EA0318 -105EA0318:lI101|H105EA0448 -105EA0448:lI118|H105EA0578 -105EA0578:lI47|H105EA06A8 -105EA06A8:lI101|H105EA07D8 -105EA07D8:lI114|H105EA0908 -105EA0908:lI108|H105EA0A38 -105EA0A38:lI97|H105EA0B68 -105EA0B68:lI110|H105EA0C98 -105EA0C98:lI103|H105EA0DC8 -105EA0DC8:lI47|H105EA0EF8 -105EA0EF8:lI103|H105EA1028 -105EA1028:lI108|H105EA1128 -105EA1128:lI101|H105EA1228 -105EA1228:lI97|H105EA1318 -105EA1318:lI109|H105EA13F8 -105EA13F8:lI46|H105EA14D8 -105EA14D8:lI108|H105EA15A8 -105EA15A8:lI111|H105EA1658 -105EA1658:lI99|H105EA16F8 -105EA16F8:lI107|H105EA1798 -105EA1798:lI47|H105EA1818 -105EA1818:lI101|H105EA1888 -105EA1888:lI98|H105EA18D8 -105EA18D8:lI105|H105EA1928 -105EA1928:lI110|N -105E9BB08:lH105E9BBF8|H105E9BC08 -105E9BBF8:lI47|H105E9BCF8 -105E9BCF8:lI85|H105E9BE08 -105E9BE08:lI115|H105E9BF28 -105E9BF28:lI101|H105E9C058 -105E9C058:lI114|H105E9C198 -105E9C198:lI115|H105E9C2D8 -105E9C2D8:lI47|H105E9C418 -105E9C418:lI110|H105E9C558 -105E9C558:lI105|H105E9C698 -105E9C698:lI99|H105E9C7D8 -105E9C7D8:lI104|H105E9C918 -105E9C918:lI111|H105E9CA58 -105E9CA58:lI108|H105E9CB98 -105E9CB98:lI97|H105E9CCD8 -105E9CCD8:lI115|H105E9CE18 -105E9CE18:lI99|H105E9CF58 -105E9CF58:lI97|H105E9D098 -105E9D098:lI114|H105E9D1D8 -105E9D1D8:lI108|H105E9D318 -105E9D318:lI115|H105E9D458 -105E9D458:lI111|H105E9D598 -105E9D598:lI110|H105E9D6D8 -105E9D6D8:lI47|H105E9D818 -105E9D818:lI86|H105E9D958 -105E9D958:lI83|H105E9DA98 -105E9DA98:lI32|H105E9DBD8 -105E9DBD8:lI67|H105E9DD18 -105E9DD18:lI111|H105E9DE58 -105E9DE58:lI100|H105E9DF98 -105E9DF98:lI101|H105E9E0D8 -105E9E0D8:lI47|H105E9E218 -105E9E218:lI65|H105E9E358 -105E9E358:lI100|H105E9E498 -105E9E498:lI118|H105E9E5D8 -105E9E5D8:lI101|H105E9E718 -105E9E718:lI110|H105E9E858 -105E9E858:lI116|H105E9E998 -105E9E998:lI79|H105E9EAD8 -105E9EAD8:lI102|H105E9EC18 -105E9EC18:lI67|H105E9ED58 -105E9ED58:lI111|H105E9EE98 -105E9EE98:lI100|H105E9EFD8 -105E9EFD8:lI101|H105E9F118 -105E9F118:lI47|H105E9F258 -105E9F258:lI97|H105E9F398 -105E9F398:lI111|H105E9F4D8 -105E9F4D8:lI99|H105E9F618 -105E9F618:lI50|H105E9F748 -105E9F748:lI48|H105E9F878 -105E9F878:lI50|H105E9F9A8 -105E9F9A8:lI51|H105E9FAD8 -105E9FAD8:lI47|H105E9FC08 -105E9FC08:lI98|H105E9FD38 -105E9FD38:lI117|H105E9FE68 -105E9FE68:lI105|H105E9FF98 -105E9FF98:lI108|H105EA00C8 -105EA00C8:lI100|H105EA01F8 -105EA01F8:lI47|H105EA0328 -105EA0328:lI100|H105EA0458 -105EA0458:lI101|H105EA0588 -105EA0588:lI118|H105EA06B8 -105EA06B8:lI47|H105EA07E8 -105EA07E8:lI101|H105EA0918 -105EA0918:lI114|H105EA0A48 -105EA0A48:lI108|H105EA0B78 -105EA0B78:lI97|H105EA0CA8 -105EA0CA8:lI110|H105EA0DD8 -105EA0DD8:lI103|H105EA0F08 -105EA0F08:lI47|H105EA1038 -105EA1038:lI115|H105EA1138 -105EA1138:lI110|H105EA1238 -105EA1238:lI97|H105EA1328 -105EA1328:lI103|H105EA1408 -105EA1408:lI47|H105EA14E8 -105EA14E8:lI101|H105EA15B8 -105EA15B8:lI98|H105EA1668 -105EA1668:lI105|H105EA1708 -105EA1708:lI110|N -105E9BC08:lH105E9BD08|H105E9BD18 -105E9BD08:lI47|H105E9BE18 -105E9BE18:lI85|H105E9BF38 -105E9BF38:lI115|H105E9C068 -105E9C068:lI101|H105E9C1A8 -105E9C1A8:lI114|H105E9C2E8 -105E9C2E8:lI115|H105E9C428 -105E9C428:lI47|H105E9C568 -105E9C568:lI110|H105E9C6A8 -105E9C6A8:lI105|H105E9C7E8 -105E9C7E8:lI99|H105E9C928 -105E9C928:lI104|H105E9CA68 -105E9CA68:lI111|H105E9CBA8 -105E9CBA8:lI108|H105E9CCE8 -105E9CCE8:lI97|H105E9CE28 -105E9CE28:lI115|H105E9CF68 -105E9CF68:lI99|H105E9D0A8 -105E9D0A8:lI97|H105E9D1E8 -105E9D1E8:lI114|H105E9D328 -105E9D328:lI108|H105E9D468 -105E9D468:lI115|H105E9D5A8 -105E9D5A8:lI111|H105E9D6E8 -105E9D6E8:lI110|H105E9D828 -105E9D828:lI47|H105E9D968 -105E9D968:lI86|H105E9DAA8 -105E9DAA8:lI83|H105E9DBE8 -105E9DBE8:lI32|H105E9DD28 -105E9DD28:lI67|H105E9DE68 -105E9DE68:lI111|H105E9DFA8 -105E9DFA8:lI100|H105E9E0E8 -105E9E0E8:lI101|H105E9E228 -105E9E228:lI47|H105E9E368 -105E9E368:lI65|H105E9E4A8 -105E9E4A8:lI100|H105E9E5E8 -105E9E5E8:lI118|H105E9E728 -105E9E728:lI101|H105E9E868 -105E9E868:lI110|H105E9E9A8 -105E9E9A8:lI116|H105E9EAE8 -105E9EAE8:lI79|H105E9EC28 -105E9EC28:lI102|H105E9ED68 -105E9ED68:lI67|H105E9EEA8 -105E9EEA8:lI111|H105E9EFE8 -105E9EFE8:lI100|H105E9F128 -105E9F128:lI101|H105E9F268 -105E9F268:lI47|H105E9F3A8 -105E9F3A8:lI97|H105E9F4E8 -105E9F4E8:lI111|H105E9F628 -105E9F628:lI99|H105E9F758 -105E9F758:lI50|H105E9F888 -105E9F888:lI48|H105E9F9B8 -105E9F9B8:lI50|H105E9FAE8 -105E9FAE8:lI51|H105E9FC18 -105E9FC18:lI47|H105E9FD48 -105E9FD48:lI98|H105E9FE78 -105E9FE78:lI117|H105E9FFA8 -105E9FFA8:lI105|H105EA00D8 -105EA00D8:lI108|H105EA0208 -105EA0208:lI100|H105EA0338 -105EA0338:lI47|H105EA0468 -105EA0468:lI100|H105EA0598 -105EA0598:lI101|H105EA06C8 -105EA06C8:lI118|H105EA07F8 -105EA07F8:lI47|H105EA0928 -105EA0928:lI101|H105EA0A58 -105EA0A58:lI114|H105EA0B88 -105EA0B88:lI108|H105EA0CB8 -105EA0CB8:lI97|H105EA0DE8 -105EA0DE8:lI110|H105EA0F18 -105EA0F18:lI103|H105EA1048 -105EA1048:lI47|H105EA1148 -105EA1148:lI116|H105EA1248 -105EA1248:lI111|H105EA1338 -105EA1338:lI109|H105EA1418 -105EA1418:lI47|H105EA14F8 -105EA14F8:lI101|H105EA15C8 -105EA15C8:lI98|H105EA1678 -105EA1678:lI105|H105EA1718 -105EA1718:lI110|N -105E9BD18:lH105E9BE28|H105E9BE38 -105E9BE28:lI47|H105E9BF48 -105E9BF48:lI85|H105E9C078 -105E9C078:lI115|H105E9C1B8 -105E9C1B8:lI101|H105E9C2F8 -105E9C2F8:lI114|H105E9C438 -105E9C438:lI115|H105E9C578 -105E9C578:lI47|H105E9C6B8 -105E9C6B8:lI110|H105E9C7F8 -105E9C7F8:lI105|H105E9C938 -105E9C938:lI99|H105E9CA78 -105E9CA78:lI104|H105E9CBB8 -105E9CBB8:lI111|H105E9CCF8 -105E9CCF8:lI108|H105E9CE38 -105E9CE38:lI97|H105E9CF78 -105E9CF78:lI115|H105E9D0B8 -105E9D0B8:lI99|H105E9D1F8 -105E9D1F8:lI97|H105E9D338 -105E9D338:lI114|H105E9D478 -105E9D478:lI108|H105E9D5B8 -105E9D5B8:lI115|H105E9D6F8 -105E9D6F8:lI111|H105E9D838 -105E9D838:lI110|H105E9D978 -105E9D978:lI47|H105E9DAB8 -105E9DAB8:lI86|H105E9DBF8 -105E9DBF8:lI83|H105E9DD38 -105E9DD38:lI32|H105E9DE78 -105E9DE78:lI67|H105E9DFB8 -105E9DFB8:lI111|H105E9E0F8 -105E9E0F8:lI100|H105E9E238 -105E9E238:lI101|H105E9E378 -105E9E378:lI47|H105E9E4B8 -105E9E4B8:lI65|H105E9E5F8 -105E9E5F8:lI100|H105E9E738 -105E9E738:lI118|H105E9E878 -105E9E878:lI101|H105E9E9B8 -105E9E9B8:lI110|H105E9EAF8 -105E9EAF8:lI116|H105E9EC38 -105E9EC38:lI79|H105E9ED78 -105E9ED78:lI102|H105E9EEB8 -105E9EEB8:lI67|H105E9EFF8 -105E9EFF8:lI111|H105E9F138 -105E9F138:lI100|H105E9F278 -105E9F278:lI101|H105E9F3B8 -105E9F3B8:lI47|H105E9F4F8 -105E9F4F8:lI97|H105E9F638 -105E9F638:lI111|H105E9F768 -105E9F768:lI99|H105E9F898 -105E9F898:lI50|H105E9F9C8 -105E9F9C8:lI48|H105E9FAF8 -105E9FAF8:lI50|H105E9FC28 -105E9FC28:lI51|H105E9FD58 -105E9FD58:lI47|H105E9FE88 -105E9FE88:lI98|H105E9FFB8 -105E9FFB8:lI117|H105EA00E8 -105EA00E8:lI105|H105EA0218 -105EA0218:lI108|H105EA0348 -105EA0348:lI100|H105EA0478 -105EA0478:lI47|H105EA05A8 -105EA05A8:lI100|H105EA06D8 -105EA06D8:lI101|H105EA0808 -105EA0808:lI118|H105EA0938 -105EA0938:lI47|H105EA0A68 -105EA0A68:lI101|H105EA0B98 -105EA0B98:lI114|H105EA0CC8 -105EA0CC8:lI108|H105EA0DF8 -105EA0DF8:lI97|H105EA0F28 -105EA0F28:lI110|H105EA1058 -105EA1058:lI103|H105EA1158 -105EA1158:lI47|H105EA1258 -105EA1258:lI97|H105EA1348 -105EA1348:lI111|H105EA1428 -105EA1428:lI99|H105EA1508 -105EA1508:lI50|H105EA15D8 -105EA15D8:lI48|H105EA1688 -105EA1688:lI50|H105EA1728 -105EA1728:lI51|H105EA17A8 -105EA17A8:lI47|H105EA1828 -105EA1828:lI101|H105EA1898 -105EA1898:lI98|H105EA18E8 -105EA18E8:lI105|H105EA1938 -105EA1938:lI110|N -105E9BE38:lH105E9BF58|H105E9BF68 -105E9BF58:lI47|H105E9C088 -105E9C088:lI85|H105E9C1C8 -105E9C1C8:lI115|H105E9C308 -105E9C308:lI101|H105E9C448 -105E9C448:lI114|H105E9C588 -105E9C588:lI115|H105E9C6C8 -105E9C6C8:lI47|H105E9C808 -105E9C808:lI110|H105E9C948 -105E9C948:lI105|H105E9CA88 -105E9CA88:lI99|H105E9CBC8 -105E9CBC8:lI104|H105E9CD08 -105E9CD08:lI111|H105E9CE48 -105E9CE48:lI108|H105E9CF88 -105E9CF88:lI97|H105E9D0C8 -105E9D0C8:lI115|H105E9D208 -105E9D208:lI99|H105E9D348 -105E9D348:lI97|H105E9D488 -105E9D488:lI114|H105E9D5C8 -105E9D5C8:lI108|H105E9D708 -105E9D708:lI115|H105E9D848 -105E9D848:lI111|H105E9D988 -105E9D988:lI110|H105E9DAC8 -105E9DAC8:lI47|H105E9DC08 -105E9DC08:lI86|H105E9DD48 -105E9DD48:lI83|H105E9DE88 -105E9DE88:lI32|H105E9DFC8 -105E9DFC8:lI67|H105E9E108 -105E9E108:lI111|H105E9E248 -105E9E248:lI100|H105E9E388 -105E9E388:lI101|H105E9E4C8 -105E9E4C8:lI47|H105E9E608 -105E9E608:lI65|H105E9E748 -105E9E748:lI100|H105E9E888 -105E9E888:lI118|H105E9E9C8 -105E9E9C8:lI101|H105E9EB08 -105E9EB08:lI110|H105E9EC48 -105E9EC48:lI116|H105E9ED88 -105E9ED88:lI79|H105E9EEC8 -105E9EEC8:lI102|H105E9F008 -105E9F008:lI67|H105E9F148 -105E9F148:lI111|H105E9F288 -105E9F288:lI100|H105E9F3C8 -105E9F3C8:lI101|H105E9F508 -105E9F508:lI47|H105E9F648 -105E9F648:lI97|H105E9F778 -105E9F778:lI111|H105E9F8A8 -105E9F8A8:lI99|H105E9F9D8 -105E9F9D8:lI50|H105E9FB08 -105E9FB08:lI48|H105E9FC38 -105E9FC38:lI50|H105E9FD68 -105E9FD68:lI51|H105E9FE98 -105E9FE98:lI47|H105E9FFC8 -105E9FFC8:lI98|H105EA00F8 -105EA00F8:lI117|H105EA0228 -105EA0228:lI105|H105EA0358 -105EA0358:lI108|H105EA0488 -105EA0488:lI100|H105EA05B8 -105EA05B8:lI47|H105EA06E8 -105EA06E8:lI100|H105EA0818 -105EA0818:lI101|H105EA0948 -105EA0948:lI118|H105EA0A78 -105EA0A78:lI47|H105EA0BA8 -105EA0BA8:lI101|H105EA0CD8 -105EA0CD8:lI114|H105EA0E08 -105EA0E08:lI108|H105EA0F38 -105EA0F38:lI97|H105EA1068 -105EA1068:lI110|H105EA1168 -105EA1168:lI103|H105EA1268 -105EA1268:lI47|H105EA1358 -105EA1358:lI115|H105EA1438 -105EA1438:lI105|H105EA1518 -105EA1518:lI109|H105EA15E8 -105EA15E8:lI112|H105EA1698 -105EA1698:lI108|H105EA1738 -105EA1738:lI105|H105EA17B8 -105EA17B8:lI102|H105EA1838 -105EA1838:lI105|H105EA18A8 -105EA18A8:lI108|H105EA18F8 -105EA18F8:lI101|H105EA1948 -105EA1948:lI47|H105EA1968 -105EA1968:lI101|H105EA1988 -105EA1988:lI98|H105EA19A8 -105EA19A8:lI105|H105EA19C8 -105EA19C8:lI110|N -105E9BF68:lH105E9C098|H105E9C0A8 -105E9C098:lI47|H105E9C1D8 -105E9C1D8:lI111|H105E9C318 -105E9C318:lI112|H105E9C458 -105E9C458:lI116|H105E9C598 -105E9C598:lI47|H105E9C6D8 -105E9C6D8:lI104|H105E9C818 -105E9C818:lI111|H105E9C958 -105E9C958:lI109|H105E9CA98 -105E9CA98:lI101|H105E9CBD8 -105E9CBD8:lI98|H105E9CD18 -105E9CD18:lI114|H105E9CE58 -105E9CE58:lI101|H105E9CF98 -105E9CF98:lI119|H105E9D0D8 -105E9D0D8:lI47|H105E9D218 -105E9D218:lI67|H105E9D358 -105E9D358:lI101|H105E9D498 -105E9D498:lI108|H105E9D5D8 -105E9D5D8:lI108|H105E9D718 -105E9D718:lI97|H105E9D858 -105E9D858:lI114|H105E9D998 -105E9D998:lI47|H105E9DAD8 -105E9DAD8:lI101|H105E9DC18 -105E9DC18:lI114|H105E9DD58 -105E9DD58:lI108|H105E9DE98 -105E9DE98:lI97|H105E9DFD8 -105E9DFD8:lI110|H105E9E118 -105E9E118:lI103|H105E9E258 -105E9E258:lI47|H105E9E398 -105E9E398:lI50|H105E9E4D8 -105E9E4D8:lI54|H105E9E618 -105E9E618:lI46|H105E9E758 -105E9E758:lI48|H105E9E898 -105E9E898:lI46|H105E9E9D8 -105E9E9D8:lI50|H105E9EB18 -105E9EB18:lI47|H105E9EC58 -105E9EC58:lI108|H105E9ED98 -105E9ED98:lI105|H105E9EED8 -105E9EED8:lI98|H105E9F018 -105E9F018:lI47|H105E9F158 -105E9F158:lI101|H105E9F298 -105E9F298:lI114|H105E9F3D8 -105E9F3D8:lI108|H105E9F518 -105E9F518:lI97|H105E9F658 -105E9F658:lI110|H105E9F788 -105E9F788:lI103|H105E9F8B8 -105E9F8B8:lI47|H105E9F9E8 -105E9F9E8:lI108|H105E9FB18 -105E9FB18:lI105|H105E9FC48 -105E9FC48:lI98|H105E9FD78 -105E9FD78:lI47|H105E9FEA8 -105E9FEA8:lI107|H105E9FFD8 -105E9FFD8:lI101|H105EA0108 -105EA0108:lI114|H105EA0238 -105EA0238:lI110|H105EA0368 -105EA0368:lI101|H105EA0498 -105EA0498:lI108|H105EA05C8 -105EA05C8:lI45|H105EA06F8 -105EA06F8:lI57|H105EA0828 -105EA0828:lI46|H105EA0958 -105EA0958:lI48|H105EA0A88 -105EA0A88:lI46|H105EA0BB8 -105EA0BB8:lI50|H105EA0CE8 -105EA0CE8:lI47|H105EA0E18 -105EA0E18:lI101|H105EA0F48 -105EA0F48:lI98|H105EA1078 -105EA1078:lI105|H105EA1178 -105EA1178:lI110|N -105E9C0A8:lH105E9C1E8|N -105E9C1E8:lI47|H105E9C328 -105E9C328:lI111|H105E9C468 -105E9C468:lI112|H105E9C5A8 -105E9C5A8:lI116|H105E9C6E8 -105E9C6E8:lI47|H105E9C828 -105E9C828:lI104|H105E9C968 -105E9C968:lI111|H105E9CAA8 -105E9CAA8:lI109|H105E9CBE8 -105E9CBE8:lI101|H105E9CD28 -105E9CD28:lI98|H105E9CE68 -105E9CE68:lI114|H105E9CFA8 -105E9CFA8:lI101|H105E9D0E8 -105E9D0E8:lI119|H105E9D228 -105E9D228:lI47|H105E9D368 -105E9D368:lI67|H105E9D4A8 -105E9D4A8:lI101|H105E9D5E8 -105E9D5E8:lI108|H105E9D728 -105E9D728:lI108|H105E9D868 -105E9D868:lI97|H105E9D9A8 -105E9D9A8:lI114|H105E9DAE8 -105E9DAE8:lI47|H105E9DC28 -105E9DC28:lI101|H105E9DD68 -105E9DD68:lI114|H105E9DEA8 -105E9DEA8:lI108|H105E9DFE8 -105E9DFE8:lI97|H105E9E128 -105E9E128:lI110|H105E9E268 -105E9E268:lI103|H105E9E3A8 -105E9E3A8:lI47|H105E9E4E8 -105E9E4E8:lI50|H105E9E628 -105E9E628:lI54|H105E9E768 -105E9E768:lI46|H105E9E8A8 -105E9E8A8:lI48|H105E9E9E8 -105E9E9E8:lI46|H105E9EB28 -105E9EB28:lI50|H105E9EC68 -105E9EC68:lI47|H105E9EDA8 -105E9EDA8:lI108|H105E9EEE8 -105E9EEE8:lI105|H105E9F028 -105E9F028:lI98|H105E9F168 -105E9F168:lI47|H105E9F2A8 -105E9F2A8:lI101|H105E9F3E8 -105E9F3E8:lI114|H105E9F528 -105E9F528:lI108|H105E9F668 -105E9F668:lI97|H105E9F798 -105E9F798:lI110|H105E9F8C8 -105E9F8C8:lI103|H105E9F9F8 -105E9F9F8:lI47|H105E9FB28 -105E9FB28:lI108|H105E9FC58 -105E9FC58:lI105|H105E9FD88 -105E9FD88:lI98|H105E9FEB8 -105E9FEB8:lI47|H105E9FFE8 -105E9FFE8:lI115|H105EA0118 -105EA0118:lI116|H105EA0248 -105EA0248:lI100|H105EA0378 -105EA0378:lI108|H105EA04A8 -105EA04A8:lI105|H105EA05D8 -105EA05D8:lI98|H105EA0708 -105EA0708:lI45|H105EA0838 -105EA0838:lI53|H105EA0968 -105EA0968:lI46|H105EA0A98 -105EA0A98:lI48|H105EA0BC8 -105EA0BC8:lI46|H105EA0CF8 -105EA0CF8:lI50|H105EA0E28 -105EA0E28:lI47|H105EA0F58 -105EA0F58:lI101|H105EA1088 -105EA1088:lI98|H105EA1188 -105EA1188:lI105|H105EA1278 -105EA1278:lI110|N -105E9B368:t6:A5:state,A5:efile,N,A6:noport,I360000,H105E9B348 -105E9B348:t3:AA:prim_state,A5:false,A9:undefined -=proc_dictionary:<0.42.0> -H105DBEDE0 -H105DBEDF8 -H105DBEE10 -=proc_stack:<0.42.0> -y0:N -y1:A8:infinity -y2:H105DBEDB0 -y3:H105DB3618 -y4:A6:logger -y5:P<0.9.0> -0x0000000105db5e48:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db5e68:SReturn addr 0x3D82348 () -=proc_heap:<0.42.0> -105DBEDB0:t5:AE:callback_cache,AD:logger_server,H105DBEE28,H105DBEE50,H105DBEE78 -105DBEE78:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9pbmZvYQI= -105DBEE50:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9jYXN0YQI= -105DBEE28:E20:g3F3DWxvZ2dlcl9zZXJ2ZXJ3C2hhbmRsZV9jYWxsYQM= -105DB3618:t5:A5:state,H105DBED98,A9:undefined,H28005B328,A9:undefined -105DBED98:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAAK+R+vYAAd/g02c= -105DBEDE0:t2:AA:$ancestors,H105DBEEA0 -105DBEEA0:lP<0.9.0>|N -105DBEDF8:t2:A12:$logger_cb_process,A4:true -105DBEE10:t2:AD:$initial_call,H105DBEEB0 -105DBEEB0:t3:AD:logger_server,A4:init,I1 -=proc_dictionary:<0.44.0> -H10665ACF8 -H10665AD10 -=proc_stack:<0.44.0> -y0:N -y1:A8:infinity -y2:H10665ACC8 -y3:H105E81EB0 -y4:A16:application_controller -y5:P<0.9.0> -0x0000000105e9b338:SReturn addr 0x3D82348 () -=proc_heap:<0.44.0> -10665ACC8:t5:AE:callback_cache,A16:application_controller,H10665AD48,H10665AD70,H10665AD98 -10665AD98:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9pbmZvYQI= -10665AD70:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9jYXN0YQI= -10665AD48:E29:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3C2hhbmRsZV9jYWxsYQM= -105E81EB0:t9:A5:state,N,N,N,H105E81E78,N,H105E81EA0,N,N -105E81EA0:lH105E81E88|H105E81608 -105E81E88:t2:A7:aoc2023,A9:temporary -105E81608:lH105E815F0|H105E633A0 -105E815F0:t2:A8:gleeunit,A9:temporary -105E633A0:lH105E63420|H105E63438 -105E63420:t2:A7:adglent,A9:temporary -105E63438:lH105E634A0|H106693B38 -105E634A0:t2:A3:tom,A9:temporary -106693B38:lH106693B60|H106688C50 -106693B60:t2:AA:simplifile,A9:temporary -106688C50:lH106688CF0|H106688D08 -106688CF0:t2:A5:glint,A9:temporary -106688D08:lH106688D90|H106688B10 -106688D90:t2:A4:snag,A9:temporary -106688B10:lH106688B38|H106688980 -106688B38:t2:A9:gleam_otp,A9:temporary -106688980:lH1066889B8|H1066889D0 -1066889B8:t2:AB:gleam_httpc,A9:temporary -1066889D0:lH106688A08|H106688A20 -106688A08:t2:A3:ssl,A9:temporary -106688A20:lH106688A58|H106688A70 -106688A58:t2:AA:public_key,A9:temporary -106688A70:lH106688A98|H106677B00 -106688A98:t2:A4:asn1,A9:temporary -106677B00:lH106677B90|H106664070 -106677B90:t2:A6:crypto,A9:temporary -106664070:lH106664100|H10665B320 -106664100:t2:A5:inets,A9:temporary -10665B320:lH10665B370|H10665B198 -10665B370:t2:AA:gleam_http,A9:temporary -10665B198:lH10665B1E8|H10665AF00 -10665B1E8:t2:AC:gleam_erlang,A9:temporary -10665AF00:lH10665AF60|H10665AF78 -10665AF60:t2:A3:gap,A9:temporary -10665AF78:lH10665AFC0|H10665AFD8 -10665AFC0:t2:A14:gleam_community_ansi,A9:temporary -10665AFD8:lH10665B020|H10665B038 -10665B020:t2:A16:gleam_community_colour,A9:temporary -10665B038:lH10665B070|H10665AD38 -10665B070:t2:AC:gleam_stdlib,A9:temporary -10665AD38:lH10665ADF8|H10665AE10 -10665ADF8:t2:A6:stdlib,A9:permanent -10665AE10:lH10665AE38|N -10665AE38:t2:A6:kernel,A9:permanent -105E81E78:lH105E81E60|H105E815E0 -105E81E60:t2:A7:aoc2023,A9:undefined -105E815E0:lH105E815C8|H105E63390 -105E815C8:t2:A8:gleeunit,A9:undefined -105E63390:lH105E633F8|H105E63410 -105E633F8:t2:A7:adglent,A9:undefined -105E63410:lH105E63488|H106693B28 -105E63488:t2:A3:tom,A9:undefined -106693B28:lH106693B48|H106688C40 -106693B48:t2:AA:simplifile,A9:undefined -106688C40:lH106688CC8|H106688CE0 -106688CC8:t2:A5:glint,A9:undefined -106688CE0:lH106688D78|H106688B00 -106688D78:t2:A4:snag,A9:undefined -106688B00:lH106688B20|H106688970 -106688B20:t2:A9:gleam_otp,A9:undefined -106688970:lH106688990|H1066889A8 -106688990:t2:AB:gleam_httpc,A9:undefined -1066889A8:lH1066889E0|H1066889F8 -1066889E0:t2:A3:ssl,P<0.102.0> -1066889F8:lH106688A30|H106688A48 -106688A30:t2:AA:public_key,A9:undefined -106688A48:lH106688A80|H106677AF0 -106688A80:t2:A4:asn1,A9:undefined -106677AF0:lH106677B78|H106664060 -106677B78:t2:A6:crypto,A9:undefined -106664060:lH1066640E8|H10665B310 -1066640E8:t2:A5:inets,P<0.90.0> -10665B310:lH10665B358|H10665B188 -10665B358:t2:AA:gleam_http,A9:undefined -10665B188:lH10665B1D0|H10665AEF0 -10665B1D0:t2:AC:gleam_erlang,A9:undefined -10665AEF0:lH10665AF38|H10665AF50 -10665AF38:t2:A3:gap,A9:undefined -10665AF50:lH10665AF98|H10665AFB0 -10665AF98:t2:A14:gleam_community_ansi,A9:undefined -10665AFB0:lH10665AFF8|H10665B010 -10665AFF8:t2:A16:gleam_community_colour,A9:undefined -10665B010:lH10665B058|H10665AD28 -10665B058:t2:AC:gleam_stdlib,A9:undefined -10665AD28:lH10665ADD0|H10665ADE8 -10665ADD0:t2:A6:stdlib,A9:undefined -10665ADE8:lH10665AE20|N -10665AE20:t2:A6:kernel,P<0.46.0> -10665ACF8:t2:AA:$ancestors,H10665ADC0 -10665ADC0:lP<0.9.0>|N -10665AD10:t2:AD:$initial_call,H280046B58 -=proc_dictionary:<0.46.0> -H105D9A980 -H105D9A9B8 -=proc_stack:<0.46.0> -y0:H105D9AB18 -y1:P<0.44.0> -0x0000000105d9ac18:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d9ac38:SReturn addr 0x3D82348 () -=proc_heap:<0.46.0> -105D9AB18:t7:A5:state,P<0.47.0>,H105D9A0A0,N,I0,A4:init,N -105D9A0A0:t8:A9:appl_data,A6:kernel,H105D9A8F0,A9:undefined,H105D9A0E8,H105D9A710,A8:infinity,A8:infinity -105D9A710:lAB:application|H105D9A700 -105D9A700:lA16:application_controller|H105D9A6F0 -105D9A6F0:lA12:application_master|H105D9A6E0 -105D9A6E0:lA13:application_starter|H105D9A6D0 -105D9A6D0:lA4:auth|H105D9A6C0 -105D9A6C0:lA4:code|H105D9A6B0 -105D9A6B0:lAB:code_server|H105D9A6A0 -105D9A6A0:lA9:dist_util|H105D9A690 -105D9A690:lAF:erl_boot_server|H105D9A680 -105D9A680:lA12:erl_compile_server|H105D9A670 -105D9A670:lA10:erl_distribution|H105D9A660 -105D9A660:lAF:erl_erts_errors|H105D9A650 -105D9A650:lA9:erl_reply|H105D9A640 -105D9A640:lA11:erl_kernel_errors|H105D9A630 -105D9A630:lA12:erl_signal_handler|H105D9A620 -105D9A620:lA4:erpc|H105D9A610 -105D9A610:lAD:error_handler|H105D9A600 -105D9A600:lAC:error_logger|H105D9A5F0 -105D9A5F0:lA4:file|H105D9A5E0 -105D9A5E0:lAB:file_server|H105D9A5D0 -105D9A5D0:lAE:file_io_server|H105D9A5C0 -105D9A5C0:lA6:global|H105D9A5B0 -105D9A5B0:lAC:global_group|H105D9A5A0 -105D9A5A0:lAD:global_search|H105D9A590 -105D9A590:lA5:group|H105D9A580 -105D9A580:lAD:group_history|H105D9A570 -105D9A570:lA5:heart|H105D9A560 -105D9A560:lA9:inet6_tcp|H105D9A550 -105D9A550:lAE:inet6_tcp_dist|H105D9A540 -105D9A540:lA9:inet6_udp|H105D9A530 -105D9A530:lAA:inet6_sctp|H105D9A520 -105D9A520:lAB:inet_config|H105D9A510 -105D9A510:lAE:inet_epmd_dist|H105D9A500 -105D9A500:lA10:inet_epmd_socket|H105D9A4F0 -105D9A4F0:lAA:inet_hosts|H105D9A4E0 -105D9A4E0:lA13:inet_gethost_native|H105D9A4D0 -105D9A4D0:lAD:inet_tcp_dist|H105D9A4C0 -105D9A4C0:lA6:kernel|H105D9A4B0 -105D9A4B0:lAD:kernel_config|H105D9A4A0 -105D9A4A0:lAB:kernel_refc|H105D9A490 -105D9A490:lA9:local_tcp|H105D9A480 -105D9A480:lA9:local_udp|H105D9A470 -105D9A470:lA6:logger|H105D9A460 -105D9A460:lAE:logger_backend|H105D9A450 -105D9A450:lAD:logger_config|H105D9A440 -105D9A440:lA11:logger_disk_log_h|H105D9A430 -105D9A430:lAE:logger_filters|H105D9A420 -105D9A420:lA10:logger_formatter|H105D9A410 -105D9A410:lAF:logger_h_common|H105D9A400 -105D9A400:lA16:logger_handler_watcher|H105D9A3F0 -105D9A3F0:lAA:logger_olp|H105D9A3E0 -105D9A3E0:lAC:logger_proxy|H105D9A3D0 -105D9A3D0:lAD:logger_server|H105D9A3C0 -105D9A3C0:lAF:logger_simple_h|H105D9A3B0 -105D9A3B0:lAC:logger_std_h|H105D9A3A0 -105D9A3A0:lAA:logger_sup|H105D9A390 -105D9A390:lA3:net|H105D9A380 -105D9A380:lA7:net_adm|H105D9A370 -105D9A370:lAA:net_kernel|H105D9A360 -105D9A360:lA2:os|H105D9A350 -105D9A350:lA8:ram_file|H105D9A340 -105D9A340:lA3:rpc|H105D9A330 -105D9A330:lA8:user_drv|H105D9A320 -105D9A320:lA8:user_sup|H105D9A310 -105D9A310:lA8:prim_tty|H105D9A300 -105D9A300:lA8:disk_log|H105D9A2F0 -105D9A2F0:lAA:disk_log_1|H105D9A2E0 -105D9A2E0:lAF:disk_log_server|H105D9A2D0 -105D9A2D0:lAC:disk_log_sup|H105D9A2C0 -105D9A2C0:lA7:dist_ac|H105D9A2B0 -105D9A2B0:lA8:erl_ddll|H105D9A2A0 -105D9A2A0:lA8:erl_epmd|H105D9A290 -105D9A290:lAA:erts_debug|H105D9A280 -105D9A280:lA7:gen_tcp|H105D9A270 -105D9A270:lAE:gen_tcp_socket|H105D9A260 -105D9A260:lA7:gen_udp|H105D9A250 -105D9A250:lAE:gen_udp_socket|H105D9A240 -105D9A240:lA8:gen_sctp|H105D9A230 -105D9A230:lA4:inet|H105D9A220 -105D9A220:lA7:inet_db|H105D9A210 -105D9A210:lA8:inet_dns|H105D9A200 -105D9A200:lAA:inet_parse|H105D9A1F0 -105D9A1F0:lA8:inet_res|H105D9A1E0 -105D9A1E0:lA8:inet_tcp|H105D9A1D0 -105D9A1D0:lA8:inet_udp|H105D9A1C0 -105D9A1C0:lA9:inet_sctp|H105D9A1B0 -105D9A1B0:lA2:pg|H105D9A1A0 -105D9A1A0:lA3:pg2|H105D9A190 -105D9A190:lAB:raw_file_io|H105D9A180 -105D9A180:lA16:raw_file_io_compressed|H105D9A170 -105D9A170:lA13:raw_file_io_deflate|H105D9A160 -105D9A160:lA13:raw_file_io_delayed|H105D9A150 -105D9A150:lA13:raw_file_io_inflate|H105D9A140 -105D9A140:lA10:raw_file_io_list|H105D9A130 -105D9A130:lA9:seq_trace|H105D9A120 -105D9A120:lA6:socket|H105D9A110 -105D9A110:lAE:standard_error|H105D9A100 -105D9A100:lAF:wrap_log_reader|N -105D9A0E8:t2:A6:kernel,N -105D9A8F0:lA16:application_controller|H105D9A8E0 -105D9A8E0:lA9:erl_reply|H105D9A8D0 -105D9A8D0:lA4:auth|H105D9A8C0 -105D9A8C0:lAB:boot_server|H105D9A8B0 -105D9A8B0:lAB:code_server|H105D9A8A0 -105D9A8A0:lAF:disk_log_server|H105D9A890 -105D9A890:lAC:disk_log_sup|H105D9A880 -105D9A880:lAF:erl_prim_loader|H105D9A870 -105D9A870:lAC:error_logger|H105D9A860 -105D9A860:lAD:file_server_2|H105D9A850 -105D9A850:lAF:fixtable_server|H105D9A840 -105D9A840:lAC:global_group|H105D9A830 -105D9A830:lA12:global_name_server|H105D9A820 -105D9A820:lA5:heart|H105D9A810 -105D9A810:lA4:init|H105D9A800 -105D9A800:lAD:kernel_config|H105D9A7F0 -105D9A7F0:lAB:kernel_refc|H105D9A7E0 -105D9A7E0:lAA:kernel_sup|H105D9A7D0 -105D9A7D0:lA6:logger|H105D9A7C0 -105D9A7C0:lA16:logger_handler_watcher|H105D9A7B0 -105D9A7B0:lAA:logger_sup|H105D9A7A0 -105D9A7A0:lAA:net_kernel|H105D9A790 -105D9A790:lA7:net_sup|H105D9A780 -105D9A780:lA3:rex|H105D9A770 -105D9A770:lA4:user|H105D9A760 -105D9A760:lA9:os_server|H105D9A750 -105D9A750:lAB:ddll_server|H105D9A740 -105D9A740:lA8:erl_epmd|H105D9A730 -105D9A730:lA7:inet_db|H105D9A720 -105D9A720:lA2:pg|N -105D9A980:t2:AA:$ancestors,H105D9A970 -105D9A970:lP<0.45.0>|N -105D9A9B8:t2:AD:$initial_call,H105D9A998 -105D9A998:t3:A12:application_master,A4:init,I4 -=proc_stack:<0.47.0> -y0:N -y1:N -y2:A6:kernel -y3:P<0.49.0> -y4:P<0.46.0> -0x0000000105d8fb88:SReturn addr 0x3D82348 () -=proc_heap:<0.47.0> -=proc_dictionary:<0.49.0> -H105D922F0 -H105D92308 -=proc_stack:<0.49.0> -y0:N -y1:A8:infinity -y2:H105D9E530 -y3:H105D9E918 -y4:AA:kernel_sup -y5:P<0.47.0> -0x0000000105d9fcf0:SReturn addr 0x3E951BC (proc_lib:wake_up/3 + 220) -y0:N -y1:N -y2:SCatch 0x3E951E4 (proc_lib:wake_up/3 + 260) -0x0000000105d9fd10:SReturn addr 0x3D82348 () -=proc_heap:<0.49.0> -105D9E530:t5:AE:callback_cache,AA:supervisor,H105D9E4B8,H105D9E4E0,H105D9E508 -105D9E508:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105D9E4E0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105D9E4B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105D9E918:tC:A5:state,H280043650,AB:one_for_all,H105D9E900,A9:undefined,I0,I1,N,I0,A5:never,A6:kernel,N -105D9E900:t2:H105D9E310,H105D9E870 -105D9E870:MfF:H105D92320:H105D9B928,H105D9E820,H105D9C288,H105D9AD48,H105D929C8,H105D9DF28,H105D92918,H105D9B658,H105D9AD98,H105D9D5A8,H105D9CC18,H105D92A18,H105D926C0,H105D9ADE8,H105D9E218 -105D92320:tF:A11:erl_signal_server,A7:on_load,A4:user,A12:global_name_server,AE:standard_error,AB:kernel_refc,AB:code_server,AC:global_group,A7:inet_db,AD:kernel_config,AA:logger_sup,AD:file_server_2,A7:net_sup,A3:rex,AF:kernel_safe_sup -105D9E218:t9:A5:child,P<0.75.0>,AF:kernel_safe_sup,H280043BC8,A9:permanent,A5:false,A8:infinity,AA:supervisor,H280043BB8 -105D9ADE8:t9:A5:child,P<0.56.0>,A3:rex,H280044320,A9:permanent,A5:false,I2000,A6:worker,H280044310 -105D926C0:t9:A5:child,A9:undefined,A7:net_sup,H280044110,A9:permanent,A5:false,A8:infinity,AA:supervisor,H280044100 -105D92A18:t9:A5:child,P<0.53.0>,AD:file_server_2,H280043788,A9:permanent,A5:false,I2000,A6:worker,H280043748 -105D9CC18:t9:A5:child,P<0.70.0>,AA:logger_sup,H2800439B8,A9:permanent,A5:false,A8:infinity,AA:supervisor,H2800439A8 -105D9D5A8:t9:A5:child,P<0.73.0>,AD:kernel_config,H280043A68,A9:permanent,A5:false,I2000,A6:worker,H280043A58 -105D9AD98:t9:A5:child,P<0.55.0>,A7:inet_db,H280044040,A9:permanent,A5:false,I2000,A6:worker,H280044030 -105D9B658:t9:A5:child,P<0.61.0>,AC:global_group,H2800441C0,A9:permanent,A5:false,I2000,A6:worker,H2800441B0 -105D92918:t9:A5:child,P<0.50.0>,AB:code_server,H280043E60,A9:permanent,A5:false,I2000,A6:worker,H280043E50 -105D9DF28:t9:A5:child,P<0.74.0>,AB:kernel_refc,H280043B18,A9:permanent,A5:false,I2000,A6:worker,H280043B08 -105D929C8:t9:A5:child,P<0.51.0>,AE:standard_error,H280043DB0,A9:temporary,A5:false,I2000,AA:supervisor,H280043DA0 -105D9AD48:t9:A5:child,P<0.58.0>,A12:global_name_server,H280044270,A9:permanent,A5:false,I2000,A6:worker,H280044260 -105D9C288:t9:A5:child,P<0.64.0>,A4:user,H280043908,A9:temporary,A5:false,I2000,AA:supervisor,H2800438F8 -105D9E820:t9:A5:child,A9:undefined,A7:on_load,H280043CC0,A9:transient,A5:false,I2000,A6:worker,H280043CB0 -105D9B928:t9:A5:child,P<0.63.0>,A11:erl_signal_server,H280043F68,A9:permanent,A5:false,I2000,A6:worker,A7:dynamic -105D9E310:lAF:kernel_safe_sup|H105D9E020 -105D9E020:lAB:kernel_refc|H105D9D6A0 -105D9D6A0:lAD:kernel_config|H105D9CD10 -105D9CD10:lAA:logger_sup|H105D9C380 -105D9C380:lA4:user|H105D9BA20 -105D9BA20:lA11:erl_signal_server|H105D9B750 -105D9B750:lAC:global_group|H105D9AC78 -105D9AC78:lA7:net_sup|H105D9AD38 -105D9AD38:lA12:global_name_server|H105D9AE78 -105D9AE78:lA3:rex|H105D9AE98 -105D9AE98:lA7:inet_db|H105D92A68 -105D92A68:lA7:on_load|H105D92A78 -105D92A78:lAD:file_server_2|H105D92A88 -105D92A88:lAE:standard_error|H105D92968 -105D92968:lAB:code_server|N -105D922F0:t2:AA:$ancestors,H105D92838 -105D92838:lP<0.47.0>|N -105D92308:t2:AD:$initial_call,H105D92848 -105D92848:t3:AA:supervisor,A6:kernel,I1 -=proc_stack:<0.50.0> -y0:N -y1:P<0.49.0> -y2:H106607FF8 -0x0000000106638248:SReturn addr 0x3D82348 () -=proc_heap:<0.50.0> -106607FF8:t8:A5:state,P<0.49.0>,H1071F0038,H106607FC8,AB:code_server,AA:code_names,AB:interactive,N -106607FC8:lH106604450|H106607FB8 -106604450:t2:H1071F0078,A7:nocache -1071F0078:lI47|H1071F0638 -1071F0638:lI85|H1071F18C0 -1071F18C0:lI115|H1071F3B38 -1071F3B38:lI101|H1071F6350 -1071F6350:lI114|H1071F8FA0 -1071F8FA0:lI115|H1071FBEE0 -1071FBEE0:lI47|H1071FEF98 -1071FEF98:lI110|H107202140 -107202140:lI105|H107205380 -107205380:lI99|H107208678 -107208678:lI104|H10720B948 -10720B948:lI111|H10720EC08 -10720EC08:lI108|H107211F68 -107211F68:lI97|H107215440 -107215440:lI115|H107218AD0 -107218AD0:lI99|H10721C300 -10721C300:lI97|H10721FA00 -10721FA00:lI114|H107222EF8 -107222EF8:lI108|H107226060 -107226060:lI115|H107228E48 -107228E48:lI111|H10722B880 -10722B880:lI110|H10722DF58 -10722DF58:lI47|H107230380 -107230380:lI86|H1072324F8 -1072324F8:lI83|H107234360 -107234360:lI32|H107235EC8 -107235EC8:lI67|H1072377C0 -1072377C0:lI111|H107238E48 -107238E48:lI100|H10723A320 -10723A320:lI101|H10723B680 -10723B680:lI47|H10723C760 -10723C760:lI65|H10723D620 -10723D620:lI100|H10723E3A0 -10723E3A0:lI118|H10723EFB0 -10723EFB0:lI101|H10723FA80 -10723FA80:lI110|H1072403D0 -1072403D0:lI116|H107240C50 -107240C50:lI79|H1072413E0 -1072413E0:lI102|H107241B10 -107241B10:lI67|H1072421E0 -1072421E0:lI111|H107242850 -107242850:lI100|H107242E50 -107242E50:lI101|H1072433C0 -1072433C0:lI47|H107243900 -107243900:lI97|H107243DF0 -107243DF0:lI111|H1072442E0 -1072442E0:lI99|H107244790 -107244790:lI50|H107244C00 -107244C00:lI48|H107245060 -107245060:lI50|H1072454B0 -1072454B0:lI51|H1072458B0 -1072458B0:lI47|H107245C70 -107245C70:lI98|H107246000 -107246000:lI117|H107246390 -107246390:lI105|H107246720 -107246720:lI108|H107246AB0 -107246AB0:lI100|H107246DF0 -107246DF0:lI47|H107247110 -107247110:lI100|H107247430 -107247430:lI101|H107247740 -107247740:lI118|H107247A40 -107247A40:lI47|H107247D30 -107247D30:lI101|H107248010 -107248010:lI114|H1072482D0 -1072482D0:lI108|H107248590 -107248590:lI97|H107248840 -107248840:lI110|H107248AF0 -107248AF0:lI103|H107248D70 -107248D70:lI47|H107248FE0 -107248FE0:lI103|H107249250 -107249250:lI108|H1072494B0 -1072494B0:lI101|H107249710 -107249710:lI97|H107249960 -107249960:lI109|H107249B70 -107249B70:lI95|H107249D60 -107249D60:lI99|H107249F40 -107249F40:lI111|H10724A0F0 -10724A0F0:lI109|H10724A280 -10724A280:lI109|H10724A400 -10724A400:lI117|H10724A570 -10724A570:lI110|H10724A6C0 -10724A6C0:lI105|H10724A7F0 -10724A7F0:lI116|H10724A910 -10724A910:lI121|H10724AA10 -10724AA10:lI95|H10724AAF0 -10724AAF0:lI97|H10724ABB0 -10724ABB0:lI110|H10724AC40 -10724AC40:lI115|H10724ACA0 -10724ACA0:lI105|H10724ACF0 -10724ACF0:lI47|H10724AD40 -10724AD40:lI101|H10724AD80 -10724AD80:lI98|H10724ADC0 -10724ADC0:lI105|H10724ADF0 -10724ADF0:lI110|N -106607FB8:lH1066049F8|H106607FA8 -1066049F8:t2:H1071F0130,A7:nocache -1071F0130:lI47|H1071F0988 -1071F0988:lI85|H1071F1EB0 -1071F1EB0:lI115|H1071F4198 -1071F4198:lI101|H1071F69B8 -1071F69B8:lI114|H1071F9610 -1071F9610:lI115|H1071FC550 -1071FC550:lI47|H1071FF608 -1071FF608:lI110|H1072027B0 -1072027B0:lI105|H1072059F0 -1072059F0:lI99|H107208CC8 -107208CC8:lI104|H10720BF78 -10720BF78:lI111|H10720F1F8 -10720F1F8:lI108|H107212518 -107212518:lI97|H1072159A0 -1072159A0:lI115|H107219010 -107219010:lI99|H10721C770 -10721C770:lI97|H10721FDF0 -10721FDF0:lI114|H107223278 -107223278:lI108|H107226360 -107226360:lI115|H1072290F8 -1072290F8:lI111|H10722BAC0 -10722BAC0:lI110|H10722E128 -10722E128:lI47|H1072304E0 -1072304E0:lI86|H107232608 -107232608:lI83|H107234440 -107234440:lI32|H107235F88 -107235F88:lI67|H107237820 -107237820:lI111|H107238EA8 -107238EA8:lI100|H10723A380 -10723A380:lI101|H10723B6C0 -10723B6C0:lI47|H10723C790 -10723C790:lI65|H10723D650 -10723D650:lI100|H10723E3D0 -10723E3D0:lI118|H10723EFE0 -10723EFE0:lI101|H10723FAB0 -10723FAB0:lI110|H107240400 -107240400:lI116|H107240C80 -107240C80:lI79|H107241410 -107241410:lI102|H107241B40 -107241B40:lI67|H107242210 -107242210:lI111|H107242880 -107242880:lI100|H107242E80 -107242E80:lI101|H1072433F0 -1072433F0:lI47|H107243930 -107243930:lI97|H107243E20 -107243E20:lI111|H107244310 -107244310:lI99|H1072447C0 -1072447C0:lI50|H107244C30 -107244C30:lI48|H107245090 -107245090:lI50|H1072454E0 -1072454E0:lI51|H1072458E0 -1072458E0:lI47|H107245CA0 -107245CA0:lI98|H107246030 -107246030:lI117|H1072463C0 -1072463C0:lI105|H107246750 -107246750:lI108|H107246AE0 -107246AE0:lI100|H107246E20 -107246E20:lI47|H107247140 -107247140:lI100|H107247460 -107247460:lI101|H107247770 -107247770:lI118|H107247A70 -107247A70:lI47|H107247D60 -107247D60:lI101|H107248040 -107248040:lI114|H107248300 -107248300:lI108|H1072485C0 -1072485C0:lI97|H107248870 -107248870:lI110|H107248B10 -107248B10:lI103|H107248D90 -107248D90:lI47|H107249000 -107249000:lI97|H107249270 -107249270:lI100|H1072494D0 -1072494D0:lI103|H107249730 -107249730:lI108|H107249980 -107249980:lI101|H107249B90 -107249B90:lI110|H107249D80 -107249D80:lI116|H107249F60 -107249F60:lI47|H10724A110 -10724A110:lI101|H10724A2A0 -10724A2A0:lI98|H10724A420 -10724A420:lI105|H10724A590 -10724A590:lI110|N -106607FA8:lH106604FF0|H106607F98 -106604FF0:t2:H1071F01F0,A7:nocache -1071F01F0:lI47|H1071F0CB8 -1071F0CB8:lI85|H1071F2438 -1071F2438:lI115|H1071F4780 -1071F4780:lI101|H1071F6FA8 -1071F6FA8:lI114|H1071F9C00 -1071F9C00:lI115|H1071FCB40 -1071FCB40:lI47|H1071FFBF8 -1071FFBF8:lI110|H107202DA0 -107202DA0:lI105|H107205FD0 -107205FD0:lI99|H107209288 -107209288:lI104|H10720C4E8 -10720C4E8:lI111|H10720F708 -10720F708:lI108|H1072129B8 -1072129B8:lI97|H107215D80 -107215D80:lI115|H107219360 -107219360:lI99|H10721C9F0 -10721C9F0:lI97|H107220030 -107220030:lI114|H107223428 -107223428:lI108|H1072264E0 -1072264E0:lI115|H107229208 -107229208:lI111|H10722BB70 -10722BB70:lI110|H10722E1C8 -10722E1C8:lI47|H107230580 -107230580:lI86|H1072326A8 -1072326A8:lI83|H1072344C0 -1072344C0:lI32|H107235FE8 -107235FE8:lI67|H107237860 -107237860:lI111|H107238EE8 -107238EE8:lI100|H10723A3B0 -10723A3B0:lI101|H10723B6F0 -10723B6F0:lI47|H10723C7C0 -10723C7C0:lI65|H10723D680 -10723D680:lI100|H10723E400 -10723E400:lI118|H10723F010 -10723F010:lI101|H10723FAE0 -10723FAE0:lI110|H107240430 -107240430:lI116|H107240CB0 -107240CB0:lI79|H107241440 -107241440:lI102|H107241B70 -107241B70:lI67|H107242240 -107242240:lI111|H1072428B0 -1072428B0:lI100|H107242EB0 -107242EB0:lI101|H107243420 -107243420:lI47|H107243960 -107243960:lI97|H107243E50 -107243E50:lI111|H107244340 -107244340:lI99|H1072447F0 -1072447F0:lI50|H107244C60 -107244C60:lI48|H1072450C0 -1072450C0:lI50|H107245510 -107245510:lI51|H107245910 -107245910:lI47|H107245CD0 -107245CD0:lI98|H107246060 -107246060:lI117|H1072463F0 -1072463F0:lI105|H107246780 -107246780:lI108|H107246B10 -107246B10:lI100|H107246E50 -107246E50:lI47|H107247170 -107247170:lI100|H107247490 -107247490:lI101|H1072477A0 -1072477A0:lI118|H107247AA0 -107247AA0:lI47|H107247D90 -107247D90:lI101|H107248070 -107248070:lI114|H107248330 -107248330:lI108|H1072485F0 -1072485F0:lI97|H1072488A0 -1072488A0:lI110|H107248B30 -107248B30:lI103|H107248DB0 -107248DB0:lI47|H107249020 -107249020:lI103|H107249290 -107249290:lI108|H1072494F0 -1072494F0:lI101|H107249750 -107249750:lI97|H1072499A0 -1072499A0:lI109|H107249BB0 -107249BB0:lI95|H107249DA0 -107249DA0:lI101|H107249F80 -107249F80:lI114|H10724A130 -10724A130:lI108|H10724A2C0 -10724A2C0:lI97|H10724A440 -10724A440:lI110|H10724A5B0 -10724A5B0:lI103|H10724A6F0 -10724A6F0:lI47|H10724A810 -10724A810:lI101|H10724A930 -10724A930:lI98|H10724AA30 -10724AA30:lI105|H10724AB10 -10724AB10:lI110|N -106607F98:lH106605578|H106607F88 -106605578:t2:H1071F02A8,A7:nocache -1071F02A8:lI47|H1071F0E68 -1071F0E68:lI85|H1071F2688 -1071F2688:lI115|H1071F49E0 -1071F49E0:lI101|H1071F7208 -1071F7208:lI114|H1071F9E60 -1071F9E60:lI115|H1071FCDA0 -1071FCDA0:lI47|H1071FFE58 -1071FFE58:lI110|H107203000 -107203000:lI105|H107206230 -107206230:lI99|H1072094E8 -1072094E8:lI104|H10720C748 -10720C748:lI111|H10720F958 -10720F958:lI108|H107212BE8 -107212BE8:lI97|H107215FB0 -107215FB0:lI115|H107219590 -107219590:lI99|H10721CC00 -10721CC00:lI97|H107220210 -107220210:lI114|H1072235B8 -1072235B8:lI108|H107226650 -107226650:lI115|H107229348 -107229348:lI111|H10722BC90 -10722BC90:lI110|H10722E2D8 -10722E2D8:lI47|H107230660 -107230660:lI86|H107232758 -107232758:lI83|H107234550 -107234550:lI32|H107236078 -107236078:lI67|H1072378F0 -1072378F0:lI111|H107238F68 -107238F68:lI100|H10723A420 -10723A420:lI101|H10723B750 -10723B750:lI47|H10723C810 -10723C810:lI65|H10723D6B0 -10723D6B0:lI100|H10723E430 -10723E430:lI118|H10723F040 -10723F040:lI101|H10723FB10 -10723FB10:lI110|H107240460 -107240460:lI116|H107240CE0 -107240CE0:lI79|H107241470 -107241470:lI102|H107241BA0 -107241BA0:lI67|H107242270 -107242270:lI111|H1072428E0 -1072428E0:lI100|H107242EE0 -107242EE0:lI101|H107243450 -107243450:lI47|H107243990 -107243990:lI97|H107243E80 -107243E80:lI111|H107244370 -107244370:lI99|H107244820 -107244820:lI50|H107244C90 -107244C90:lI48|H1072450F0 -1072450F0:lI50|H107245540 -107245540:lI51|H107245940 -107245940:lI47|H107245D00 -107245D00:lI98|H107246090 -107246090:lI117|H107246420 -107246420:lI105|H1072467B0 -1072467B0:lI108|H107246B40 -107246B40:lI100|H107246E80 -107246E80:lI47|H1072471A0 -1072471A0:lI100|H1072474C0 -1072474C0:lI101|H1072477D0 -1072477D0:lI118|H107247AD0 -107247AD0:lI47|H107247DC0 -107247DC0:lI101|H107248090 -107248090:lI114|H107248350 -107248350:lI108|H107248610 -107248610:lI97|H1072488C0 -1072488C0:lI110|H107248B50 -107248B50:lI103|H107248DD0 -107248DD0:lI47|H107249040 -107249040:lI103|H1072492B0 -1072492B0:lI108|H107249510 -107249510:lI105|H107249770 -107249770:lI110|H1072499C0 -1072499C0:lI116|H107249BD0 -107249BD0:lI47|H107249DC0 -107249DC0:lI101|H107249FA0 -107249FA0:lI98|H10724A150 -10724A150:lI105|H10724A2E0 -10724A2E0:lI110|N -106607F88:lH106605B50|H106607F78 -106605B50:t2:H1071F0368,A7:nocache -1071F0368:lI47|H1071F1420 -1071F1420:lI85|H1071F3318 -1071F3318:lI115|H1071F5900 -1071F5900:lI101|H1071F8168 -1071F8168:lI114|H1071FADC0 -1071FADC0:lI115|H1071FDD00 -1071FDD00:lI47|H107200DB8 -107200DB8:lI110|H107203F60 -107203F60:lI105|H107207190 -107207190:lI99|H10720A418 -10720A418:lI104|H10720D678 -10720D678:lI111|H107210868 -107210868:lI108|H107213AD8 -107213AD8:lI97|H107216E90 -107216E90:lI115|H10721A400 -10721A400:lI99|H10721D9C0 -10721D9C0:lI97|H107220F10 -107220F10:lI114|H107224178 -107224178:lI108|H1072270C0 -1072270C0:lI115|H107229C28 -107229C28:lI111|H10722C450 -10722C450:lI110|H10722E998 -10722E998:lI47|H107230C10 -107230C10:lI86|H107232C08 -107232C08:lI83|H1072348E0 -1072348E0:lI32|H107236318 -107236318:lI67|H107237AE0 -107237AE0:lI111|H1072390F8 -1072390F8:lI100|H10723A590 -10723A590:lI101|H10723B850 -10723B850:lI47|H10723C8A0 -10723C8A0:lI65|H10723D710 -10723D710:lI100|H10723E470 -10723E470:lI118|H10723F080 -10723F080:lI101|H10723FB40 -10723FB40:lI110|H107240490 -107240490:lI116|H107240D10 -107240D10:lI79|H1072414A0 -1072414A0:lI102|H107241BD0 -107241BD0:lI67|H1072422A0 -1072422A0:lI111|H107242910 -107242910:lI100|H107242F10 -107242F10:lI101|H107243480 -107243480:lI47|H1072439C0 -1072439C0:lI97|H107243EB0 -107243EB0:lI111|H1072443A0 -1072443A0:lI99|H107244850 -107244850:lI50|H107244CC0 -107244CC0:lI48|H107245120 -107245120:lI50|H107245570 -107245570:lI51|H107245970 -107245970:lI47|H107245D30 -107245D30:lI98|H1072460C0 -1072460C0:lI117|H107246450 -107246450:lI105|H1072467E0 -1072467E0:lI108|H107246B70 -107246B70:lI100|H107246EA0 -107246EA0:lI47|H1072471C0 -1072471C0:lI100|H1072474E0 -1072474E0:lI101|H1072477F0 -1072477F0:lI118|H107247AF0 -107247AF0:lI47|H107247DE0 -107247DE0:lI101|H1072480B0 -1072480B0:lI114|H107248370 -107248370:lI108|H107248630 -107248630:lI97|H1072488E0 -1072488E0:lI110|H107248B70 -107248B70:lI103|H107248DF0 -107248DF0:lI47|H107249060 -107249060:lI103|H1072492D0 -1072492D0:lI108|H107249530 -107249530:lI101|H107249790 -107249790:lI97|H1072499E0 -1072499E0:lI109|H107249BF0 -107249BF0:lI95|H107249DE0 -107249DE0:lI104|H107249FC0 -107249FC0:lI116|H10724A170 -10724A170:lI116|H10724A300 -10724A300:lI112|H10724A470 -10724A470:lI47|H10724A5E0 -10724A5E0:lI101|H10724A720 -10724A720:lI98|H10724A840 -10724A840:lI105|H10724A960 -10724A960:lI110|N -106607F78:lH1066060B8|H106607F68 -1066060B8:t2:H1071F0430,A7:nocache -1071F0430:lI47|H1071F14D8 -1071F14D8:lI85|H1071F3448 -1071F3448:lI115|H1071F5A30 -1071F5A30:lI101|H1071F8298 -1071F8298:lI114|H1071FAEF0 -1071FAEF0:lI115|H1071FDE30 -1071FDE30:lI47|H107200EE8 -107200EE8:lI110|H107204090 -107204090:lI105|H1072072C0 -1072072C0:lI99|H10720A548 -10720A548:lI104|H10720D758 -10720D758:lI111|H107210908 -107210908:lI108|H107213B68 -107213B68:lI97|H107216F20 -107216F20:lI115|H10721A490 -10721A490:lI99|H10721DA40 -10721DA40:lI97|H107220F80 -107220F80:lI114|H1072241C8 -1072241C8:lI108|H107227100 -107227100:lI115|H107229C58 -107229C58:lI111|H10722C480 -10722C480:lI110|H10722E9C8 -10722E9C8:lI47|H107230C40 -107230C40:lI86|H107232C38 -107232C38:lI83|H107234910 -107234910:lI32|H107236348 -107236348:lI67|H107237B10 -107237B10:lI111|H107239128 -107239128:lI100|H10723A5C0 -10723A5C0:lI101|H10723B880 -10723B880:lI47|H10723C8D0 -10723C8D0:lI65|H10723D740 -10723D740:lI100|H10723E4A0 -10723E4A0:lI118|H10723F0B0 -10723F0B0:lI101|H10723FB70 -10723FB70:lI110|H1072404C0 -1072404C0:lI116|H107240D40 -107240D40:lI79|H1072414D0 -1072414D0:lI102|H107241C00 -107241C00:lI67|H1072422D0 -1072422D0:lI111|H107242940 -107242940:lI100|H107242F40 -107242F40:lI101|H1072434B0 -1072434B0:lI47|H1072439F0 -1072439F0:lI97|H107243EE0 -107243EE0:lI111|H1072443D0 -1072443D0:lI99|H107244880 -107244880:lI50|H107244CF0 -107244CF0:lI48|H107245150 -107245150:lI50|H1072455A0 -1072455A0:lI51|H1072459A0 -1072459A0:lI47|H107245D60 -107245D60:lI98|H1072460F0 -1072460F0:lI117|H107246480 -107246480:lI105|H107246810 -107246810:lI108|H107246BA0 -107246BA0:lI100|H107246ED0 -107246ED0:lI47|H1072471F0 -1072471F0:lI100|H107247510 -107247510:lI101|H107247810 -107247810:lI118|H107247B10 -107247B10:lI47|H107247E00 -107247E00:lI101|H1072480D0 -1072480D0:lI114|H107248390 -107248390:lI108|H107248650 -107248650:lI97|H107248900 -107248900:lI110|H107248B90 -107248B90:lI103|H107248E10 -107248E10:lI47|H107249080 -107249080:lI103|H1072492F0 -1072492F0:lI97|H107249550 -107249550:lI112|H1072497B0 -1072497B0:lI47|H107249A00 -107249A00:lI101|H107249C10 -107249C10:lI98|H107249E00 -107249E00:lI105|H107249FE0 -107249FE0:lI110|N -106607F68:lH106606680|H106607F58 -106606680:t2:H1071F0420,A7:nocache -1071F0420:lI47|H1071F14C8 -1071F14C8:lI85|H1071F3438 -1071F3438:lI115|H1071F5A20 -1071F5A20:lI101|H1071F8288 -1071F8288:lI114|H1071FAEE0 -1071FAEE0:lI115|H1071FDE20 -1071FDE20:lI47|H107200ED8 -107200ED8:lI110|H107204080 -107204080:lI105|H1072072B0 -1072072B0:lI99|H10720A538 -10720A538:lI104|H10720D748 -10720D748:lI111|H1072108F8 -1072108F8:lI108|H107213B58 -107213B58:lI97|H107216F10 -107216F10:lI115|H10721A480 -10721A480:lI99|H10721DA30 -10721DA30:lI97|H107220F70 -107220F70:lI114|H1072241B8 -1072241B8:lI108|H1072270F0 -1072270F0:lI115|H107229C48 -107229C48:lI111|H10722C470 -10722C470:lI110|H10722E9B8 -10722E9B8:lI47|H107230C30 -107230C30:lI86|H107232C28 -107232C28:lI83|H107234900 -107234900:lI32|H107236338 -107236338:lI67|H107237B00 -107237B00:lI111|H107239118 -107239118:lI100|H10723A5B0 -10723A5B0:lI101|H10723B870 -10723B870:lI47|H10723C8C0 -10723C8C0:lI65|H10723D730 -10723D730:lI100|H10723E490 -10723E490:lI118|H10723F0A0 -10723F0A0:lI101|H10723FB60 -10723FB60:lI110|H1072404B0 -1072404B0:lI116|H107240D30 -107240D30:lI79|H1072414C0 -1072414C0:lI102|H107241BF0 -107241BF0:lI67|H1072422C0 -1072422C0:lI111|H107242930 -107242930:lI100|H107242F30 -107242F30:lI101|H1072434A0 -1072434A0:lI47|H1072439E0 -1072439E0:lI97|H107243ED0 -107243ED0:lI111|H1072443C0 -1072443C0:lI99|H107244870 -107244870:lI50|H107244CE0 -107244CE0:lI48|H107245140 -107245140:lI50|H107245590 -107245590:lI51|H107245990 -107245990:lI47|H107245D50 -107245D50:lI98|H1072460E0 -1072460E0:lI117|H107246470 -107246470:lI105|H107246800 -107246800:lI108|H107246B90 -107246B90:lI100|H107246EC0 -107246EC0:lI47|H1072471E0 -1072471E0:lI100|H107247500 -107247500:lI101|H107247800 -107247800:lI118|H107247B00 -107247B00:lI47|H107247DF0 -107247DF0:lI101|H1072480C0 -1072480C0:lI114|H107248380 -107248380:lI108|H107248640 -107248640:lI97|H1072488F0 -1072488F0:lI110|H107248B80 -107248B80:lI103|H107248E00 -107248E00:lI47|H107249070 -107249070:lI103|H1072492E0 -1072492E0:lI108|H107249540 -107249540:lI101|H1072497A0 -1072497A0:lI97|H1072499F0 -1072499F0:lI109|H107249C00 -107249C00:lI95|H107249DF0 -107249DF0:lI111|H107249FD0 -107249FD0:lI116|H10724A180 -10724A180:lI112|H10724A310 -10724A310:lI47|H10724A480 -10724A480:lI101|H10724A5F0 -10724A5F0:lI98|H10724A730 -10724A730:lI105|H10724A850 -10724A850:lI110|N -106607F58:lH106606D18|H106607F48 -106606D18:t2:H1071F0358,A7:nocache -1071F0358:lI47|H1071F1410 -1071F1410:lI85|H1071F3308 -1071F3308:lI115|H1071F58F0 -1071F58F0:lI101|H1071F8158 -1071F8158:lI114|H1071FADB0 -1071FADB0:lI115|H1071FDCF0 -1071FDCF0:lI47|H107200DA8 -107200DA8:lI110|H107203F50 -107203F50:lI105|H107207180 -107207180:lI99|H10720A408 -10720A408:lI104|H10720D668 -10720D668:lI111|H107210858 -107210858:lI108|H107213AC8 -107213AC8:lI97|H107216E80 -107216E80:lI115|H10721A3F0 -10721A3F0:lI99|H10721D9B0 -10721D9B0:lI97|H107220F00 -107220F00:lI114|H107224168 -107224168:lI108|H1072270B0 -1072270B0:lI115|H107229C18 -107229C18:lI111|H10722C440 -10722C440:lI110|H10722E988 -10722E988:lI47|H107230C00 -107230C00:lI86|H107232BF8 -107232BF8:lI83|H1072348D0 -1072348D0:lI32|H107236308 -107236308:lI67|H107237AD0 -107237AD0:lI111|H1072390E8 -1072390E8:lI100|H10723A580 -10723A580:lI101|H10723B840 -10723B840:lI47|H10723C890 -10723C890:lI65|H10723D700 -10723D700:lI100|H10723E460 -10723E460:lI118|H10723F070 -10723F070:lI101|H10723FB30 -10723FB30:lI110|H107240480 -107240480:lI116|H107240D00 -107240D00:lI79|H107241490 -107241490:lI102|H107241BC0 -107241BC0:lI67|H107242290 -107242290:lI111|H107242900 -107242900:lI100|H107242F00 -107242F00:lI101|H107243470 -107243470:lI47|H1072439B0 -1072439B0:lI97|H107243EA0 -107243EA0:lI111|H107244390 -107244390:lI99|H107244840 -107244840:lI50|H107244CB0 -107244CB0:lI48|H107245110 -107245110:lI50|H107245560 -107245560:lI51|H107245960 -107245960:lI47|H107245D20 -107245D20:lI98|H1072460B0 -1072460B0:lI117|H107246440 -107246440:lI105|H1072467D0 -1072467D0:lI108|H107246B60 -107246B60:lI100|H107246E90 -107246E90:lI47|H1072471B0 -1072471B0:lI100|H1072474D0 -1072474D0:lI101|H1072477E0 -1072477E0:lI118|H107247AE0 -107247AE0:lI47|H107247DD0 -107247DD0:lI101|H1072480A0 -1072480A0:lI114|H107248360 -107248360:lI108|H107248620 -107248620:lI97|H1072488D0 -1072488D0:lI110|H107248B60 -107248B60:lI103|H107248DE0 -107248DE0:lI47|H107249050 -107249050:lI103|H1072492C0 -1072492C0:lI108|H107249520 -107249520:lI101|H107249780 -107249780:lI97|H1072499D0 -1072499D0:lI109|H107249BE0 -107249BE0:lI95|H107249DD0 -107249DD0:lI99|H107249FB0 -107249FB0:lI111|H10724A160 -10724A160:lI109|H10724A2F0 -10724A2F0:lI109|H10724A460 -10724A460:lI117|H10724A5D0 -10724A5D0:lI110|H10724A710 -10724A710:lI105|H10724A830 -10724A830:lI116|H10724A950 -10724A950:lI121|H10724AA50 -10724AA50:lI95|H10724AB20 -10724AB20:lI99|H10724ABC0 -10724ABC0:lI111|H10724AC50 -10724AC50:lI108|H10724ACB0 -10724ACB0:lI111|H10724AD00 -10724AD00:lI117|H10724AD50 -10724AD50:lI114|H10724AD90 -10724AD90:lI47|H10724ADD0 -10724ADD0:lI101|H10724AE00 -10724AE00:lI98|H10724AE20 -10724AE20:lI105|H10724AE40 -10724AE40:lI110|N -106607F48:lH106607300|H106607F38 -106607300:t2:H1071F0298,A7:nocache -1071F0298:lI47|H1071F0E58 -1071F0E58:lI85|H1071F2678 -1071F2678:lI115|H1071F49D0 -1071F49D0:lI101|H1071F71F8 -1071F71F8:lI114|H1071F9E50 -1071F9E50:lI115|H1071FCD90 -1071FCD90:lI47|H1071FFE48 -1071FFE48:lI110|H107202FF0 -107202FF0:lI105|H107206220 -107206220:lI99|H1072094D8 -1072094D8:lI104|H10720C738 -10720C738:lI111|H10720F948 -10720F948:lI108|H107212BD8 -107212BD8:lI97|H107215FA0 -107215FA0:lI115|H107219580 -107219580:lI99|H10721CBF0 -10721CBF0:lI97|H107220200 -107220200:lI114|H1072235A8 -1072235A8:lI108|H107226640 -107226640:lI115|H107229338 -107229338:lI111|H10722BC80 -10722BC80:lI110|H10722E2C8 -10722E2C8:lI47|H107230650 -107230650:lI86|H107232748 -107232748:lI83|H107234540 -107234540:lI32|H107236068 -107236068:lI67|H1072378E0 -1072378E0:lI111|H107238F58 -107238F58:lI100|H10723A410 -10723A410:lI101|H10723B740 -10723B740:lI47|H10723C800 -10723C800:lI65|H10723D6A0 -10723D6A0:lI100|H10723E420 -10723E420:lI118|H10723F030 -10723F030:lI101|H10723FB00 -10723FB00:lI110|H107240450 -107240450:lI116|H107240CD0 -107240CD0:lI79|H107241460 -107241460:lI102|H107241B90 -107241B90:lI67|H107242260 -107242260:lI111|H1072428D0 -1072428D0:lI100|H107242ED0 -107242ED0:lI101|H107243440 -107243440:lI47|H107243980 -107243980:lI97|H107243E70 -107243E70:lI111|H107244360 -107244360:lI99|H107244810 -107244810:lI50|H107244C80 -107244C80:lI48|H1072450E0 -1072450E0:lI50|H107245530 -107245530:lI51|H107245930 -107245930:lI47|H107245CF0 -107245CF0:lI98|H107246080 -107246080:lI117|H107246410 -107246410:lI105|H1072467A0 -1072467A0:lI108|H107246B30 -107246B30:lI100|H107246E70 -107246E70:lI47|H107247190 -107247190:lI100|H1072474B0 -1072474B0:lI101|H1072477C0 -1072477C0:lI118|H107247AC0 -107247AC0:lI47|H107247DB0 -107247DB0:lI101|H107248080 -107248080:lI114|H107248340 -107248340:lI108|H107248600 -107248600:lI97|H1072488B0 -1072488B0:lI110|H107248B40 -107248B40:lI103|H107248DC0 -107248DC0:lI47|H107249030 -107249030:lI103|H1072492A0 -1072492A0:lI108|H107249500 -107249500:lI101|H107249760 -107249760:lI97|H1072499B0 -1072499B0:lI109|H107249BC0 -107249BC0:lI95|H107249DB0 -107249DB0:lI104|H107249F90 -107249F90:lI116|H10724A140 -10724A140:lI116|H10724A2D0 -10724A2D0:lI112|H10724A450 -10724A450:lI99|H10724A5C0 -10724A5C0:lI47|H10724A700 -10724A700:lI101|H10724A820 -10724A820:lI98|H10724A940 -10724A940:lI105|H10724AA40 -10724AA40:lI110|N -106607F38:lH106607F20|H1066006B0 -106607F20:t2:H1071F01E0,A7:nocache -1071F01E0:lI47|H1071F0CA8 -1071F0CA8:lI85|H1071F2428 -1071F2428:lI115|H1071F4770 -1071F4770:lI101|H1071F6F98 -1071F6F98:lI114|H1071F9BF0 -1071F9BF0:lI115|H1071FCB30 -1071FCB30:lI47|H1071FFBE8 -1071FFBE8:lI110|H107202D90 -107202D90:lI105|H107205FC0 -107205FC0:lI99|H107209278 -107209278:lI104|H10720C4D8 -10720C4D8:lI111|H10720F6F8 -10720F6F8:lI108|H1072129A8 -1072129A8:lI97|H107215D70 -107215D70:lI115|H107219350 -107219350:lI99|H10721C9E0 -10721C9E0:lI97|H107220020 -107220020:lI114|H107223418 -107223418:lI108|H1072264D0 -1072264D0:lI115|H1072291F8 -1072291F8:lI111|H10722BB60 -10722BB60:lI110|H10722E1B8 -10722E1B8:lI47|H107230570 -107230570:lI86|H107232698 -107232698:lI83|H1072344B0 -1072344B0:lI32|H107235FD8 -107235FD8:lI67|H107237850 -107237850:lI111|H107238ED8 -107238ED8:lI100|H10723A3A0 -10723A3A0:lI101|H10723B6E0 -10723B6E0:lI47|H10723C7B0 -10723C7B0:lI65|H10723D670 -10723D670:lI100|H10723E3F0 -10723E3F0:lI118|H10723F000 -10723F000:lI101|H10723FAD0 -10723FAD0:lI110|H107240420 -107240420:lI116|H107240CA0 -107240CA0:lI79|H107241430 -107241430:lI102|H107241B60 -107241B60:lI67|H107242230 -107242230:lI111|H1072428A0 -1072428A0:lI100|H107242EA0 -107242EA0:lI101|H107243410 -107243410:lI47|H107243950 -107243950:lI97|H107243E40 -107243E40:lI111|H107244330 -107244330:lI99|H1072447E0 -1072447E0:lI50|H107244C50 -107244C50:lI48|H1072450B0 -1072450B0:lI50|H107245500 -107245500:lI51|H107245900 -107245900:lI47|H107245CC0 -107245CC0:lI98|H107246050 -107246050:lI117|H1072463E0 -1072463E0:lI105|H107246770 -107246770:lI108|H107246B00 -107246B00:lI100|H107246E40 -107246E40:lI47|H107247160 -107247160:lI100|H107247480 -107247480:lI101|H107247790 -107247790:lI118|H107247A90 -107247A90:lI47|H107247D80 -107247D80:lI101|H107248060 -107248060:lI114|H107248320 -107248320:lI108|H1072485E0 -1072485E0:lI97|H107248890 -107248890:lI110|H107248B20 -107248B20:lI103|H107248DA0 -107248DA0:lI47|H107249010 -107249010:lI103|H107249280 -107249280:lI108|H1072494E0 -1072494E0:lI101|H107249740 -107249740:lI97|H107249990 -107249990:lI109|H107249BA0 -107249BA0:lI95|H107249D90 -107249D90:lI115|H107249F70 -107249F70:lI116|H10724A120 -10724A120:lI100|H10724A2B0 -10724A2B0:lI108|H10724A430 -10724A430:lI105|H10724A5A0 -10724A5A0:lI98|H10724A6E0 -10724A6E0:lI47|H10724A800 -10724A800:lI101|H10724A920 -10724A920:lI98|H10724AA20 -10724AA20:lI105|H10724AB00 -10724AB00:lI110|N -1066006B0:lH106600708|H106600720 -106600708:t2:H1071F0120,A7:nocache -1071F0120:lI47|H1071F0978 -1071F0978:lI85|H1071F1EA0 -1071F1EA0:lI115|H1071F4188 -1071F4188:lI101|H1071F69A8 -1071F69A8:lI114|H1071F9600 -1071F9600:lI115|H1071FC540 -1071FC540:lI47|H1071FF5F8 -1071FF5F8:lI110|H1072027A0 -1072027A0:lI105|H1072059E0 -1072059E0:lI99|H107208CB8 -107208CB8:lI104|H10720BF68 -10720BF68:lI111|H10720F1E8 -10720F1E8:lI108|H107212508 -107212508:lI97|H107215990 -107215990:lI115|H107219000 -107219000:lI99|H10721C760 -10721C760:lI97|H10721FDE0 -10721FDE0:lI114|H107223268 -107223268:lI108|H107226350 -107226350:lI115|H1072290E8 -1072290E8:lI111|H10722BAB0 -10722BAB0:lI110|H10722E118 -10722E118:lI47|H1072304D0 -1072304D0:lI86|H1072325F8 -1072325F8:lI83|H107234430 -107234430:lI32|H107235F78 -107235F78:lI67|H107237810 -107237810:lI111|H107238E98 -107238E98:lI100|H10723A370 -10723A370:lI101|H10723B6B0 -10723B6B0:lI47|H10723C780 -10723C780:lI65|H10723D640 -10723D640:lI100|H10723E3C0 -10723E3C0:lI118|H10723EFD0 -10723EFD0:lI101|H10723FAA0 -10723FAA0:lI110|H1072403F0 -1072403F0:lI116|H107240C70 -107240C70:lI79|H107241400 -107241400:lI102|H107241B30 -107241B30:lI67|H107242200 -107242200:lI111|H107242870 -107242870:lI100|H107242E70 -107242E70:lI101|H1072433E0 -1072433E0:lI47|H107243920 -107243920:lI97|H107243E10 -107243E10:lI111|H107244300 -107244300:lI99|H1072447B0 -1072447B0:lI50|H107244C20 -107244C20:lI48|H107245080 -107245080:lI50|H1072454D0 -1072454D0:lI51|H1072458D0 -1072458D0:lI47|H107245C90 -107245C90:lI98|H107246020 -107246020:lI117|H1072463B0 -1072463B0:lI105|H107246740 -107246740:lI108|H107246AD0 -107246AD0:lI100|H107246E10 -107246E10:lI47|H107247130 -107247130:lI100|H107247450 -107247450:lI101|H107247760 -107247760:lI118|H107247A60 -107247A60:lI47|H107247D50 -107247D50:lI101|H107248030 -107248030:lI114|H1072482F0 -1072482F0:lI108|H1072485B0 -1072485B0:lI97|H107248860 -107248860:lI110|H107248B00 -107248B00:lI103|H107248D80 -107248D80:lI47|H107248FF0 -107248FF0:lI103|H107249260 -107249260:lI108|H1072494C0 -1072494C0:lI101|H107249720 -107249720:lI101|H107249970 -107249970:lI117|H107249B80 -107249B80:lI110|H107249D70 -107249D70:lI105|H107249F50 -107249F50:lI116|H10724A100 -10724A100:lI47|H10724A290 -10724A290:lI101|H10724A410 -10724A410:lI98|H10724A580 -10724A580:lI105|H10724A6D0 -10724A6D0:lI110|N -106600720:lH106600778|H106600790 -106600778:t2:H1071F0068,A7:nocache -1071F0068:lI47|H1071F0628 -1071F0628:lI85|H1071F18B0 -1071F18B0:lI115|H1071F3B28 -1071F3B28:lI101|H1071F6340 -1071F6340:lI114|H1071F8F90 -1071F8F90:lI115|H1071FBED0 -1071FBED0:lI47|H1071FEF88 -1071FEF88:lI110|H107202130 -107202130:lI105|H107205370 -107205370:lI99|H107208668 -107208668:lI104|H10720B938 -10720B938:lI111|H10720EBF8 -10720EBF8:lI108|H107211F58 -107211F58:lI97|H107215430 -107215430:lI115|H107218AC0 -107218AC0:lI99|H10721C2F0 -10721C2F0:lI97|H10721F9F0 -10721F9F0:lI114|H107222EE8 -107222EE8:lI108|H107226050 -107226050:lI115|H107228E38 -107228E38:lI111|H10722B870 -10722B870:lI110|H10722DF48 -10722DF48:lI47|H107230370 -107230370:lI86|H1072324E8 -1072324E8:lI83|H107234350 -107234350:lI32|H107235EB8 -107235EB8:lI67|H1072377B0 -1072377B0:lI111|H107238E38 -107238E38:lI100|H10723A310 -10723A310:lI101|H10723B670 -10723B670:lI47|H10723C750 -10723C750:lI65|H10723D610 -10723D610:lI100|H10723E390 -10723E390:lI118|H10723EFA0 -10723EFA0:lI101|H10723FA70 -10723FA70:lI110|H1072403C0 -1072403C0:lI116|H107240C40 -107240C40:lI79|H1072413D0 -1072413D0:lI102|H107241B00 -107241B00:lI67|H1072421D0 -1072421D0:lI111|H107242840 -107242840:lI100|H107242E40 -107242E40:lI101|H1072433B0 -1072433B0:lI47|H1072438F0 -1072438F0:lI97|H107243DE0 -107243DE0:lI111|H1072442D0 -1072442D0:lI99|H107244780 -107244780:lI50|H107244BF0 -107244BF0:lI48|H107245050 -107245050:lI50|H1072454A0 -1072454A0:lI51|H1072458A0 -1072458A0:lI47|H107245C60 -107245C60:lI98|H107245FF0 -107245FF0:lI117|H107246380 -107246380:lI105|H107246710 -107246710:lI108|H107246AA0 -107246AA0:lI100|H107246DE0 -107246DE0:lI47|H107247100 -107247100:lI100|H107247420 -107247420:lI101|H107247730 -107247730:lI118|H107247A30 -107247A30:lI47|H107247D20 -107247D20:lI101|H107248000 -107248000:lI114|H1072482C0 -1072482C0:lI108|H107248580 -107248580:lI97|H107248830 -107248830:lI110|H107248AE0 -107248AE0:lI103|H107248D60 -107248D60:lI47|H107248FD0 -107248FD0:lI115|H107249240 -107249240:lI110|H1072494A0 -1072494A0:lI97|H107249700 -107249700:lI103|H107249950 -107249950:lI47|H107249B60 -107249B60:lI101|H107249D50 -107249D50:lI98|H107249F30 -107249F30:lI105|H10724A0E0 -10724A0E0:lI110|N -106600790:lH1066007E8|H106600800 -1066007E8:t2:H1071F0058,A7:nocache -1071F0058:lI47|H1071F0618 -1071F0618:lI85|H1071F18A0 -1071F18A0:lI115|H1071F3B18 -1071F3B18:lI101|H1071F6330 -1071F6330:lI114|H1071F8F80 -1071F8F80:lI115|H1071FBEC0 -1071FBEC0:lI47|H1071FEF78 -1071FEF78:lI110|H107202120 -107202120:lI105|H107205360 -107205360:lI99|H107208658 -107208658:lI104|H10720B928 -10720B928:lI111|H10720EBE8 -10720EBE8:lI108|H107211F48 -107211F48:lI97|H107215420 -107215420:lI115|H107218AB0 -107218AB0:lI99|H10721C2E0 -10721C2E0:lI97|H10721F9E0 -10721F9E0:lI114|H107222ED8 -107222ED8:lI108|H107226040 -107226040:lI115|H107228E28 -107228E28:lI111|H10722B860 -10722B860:lI110|H10722DF38 -10722DF38:lI47|H107230360 -107230360:lI86|H1072324D8 -1072324D8:lI83|H107234340 -107234340:lI32|H107235EA8 -107235EA8:lI67|H1072377A0 -1072377A0:lI111|H107238E28 -107238E28:lI100|H10723A300 -10723A300:lI101|H10723B660 -10723B660:lI47|H10723C740 -10723C740:lI65|H10723D600 -10723D600:lI100|H10723E380 -10723E380:lI118|H10723EF90 -10723EF90:lI101|H10723FA60 -10723FA60:lI110|H1072403B0 -1072403B0:lI116|H107240C30 -107240C30:lI79|H1072413C0 -1072413C0:lI102|H107241AF0 -107241AF0:lI67|H1072421C0 -1072421C0:lI111|H107242830 -107242830:lI100|H107242E30 -107242E30:lI101|H1072433A0 -1072433A0:lI47|H1072438E0 -1072438E0:lI97|H107243DD0 -107243DD0:lI111|H1072442C0 -1072442C0:lI99|H107244770 -107244770:lI50|H107244BE0 -107244BE0:lI48|H107245040 -107245040:lI50|H107245490 -107245490:lI51|H107245890 -107245890:lI47|H107245C50 -107245C50:lI98|H107245FE0 -107245FE0:lI117|H107246370 -107246370:lI105|H107246700 -107246700:lI108|H107246A90 -107246A90:lI100|H107246DD0 -107246DD0:lI47|H1072470F0 -1072470F0:lI100|H107247410 -107247410:lI101|H107247720 -107247720:lI118|H107247A20 -107247A20:lI47|H107247D10 -107247D10:lI101|H107247FF0 -107247FF0:lI114|H1072482B0 -1072482B0:lI108|H107248570 -107248570:lI97|H107248820 -107248820:lI110|H107248AD0 -107248AD0:lI103|H107248D50 -107248D50:lI47|H107248FC0 -107248FC0:lI116|H107249230 -107249230:lI111|H107249490 -107249490:lI109|H1072496F0 -1072496F0:lI47|H107249940 -107249940:lI101|H107249B50 -107249B50:lI98|H107249D40 -107249D40:lI105|H107249F20 -107249F20:lI110|N -106600800:lH106600858|H106600870 -106600858:t2:H1071F0028,A7:nocache -1071F0028:lI47|H1071F05E8 -1071F05E8:lI85|H1071F1870 -1071F1870:lI115|H1071F3AE8 -1071F3AE8:lI101|H1071F6300 -1071F6300:lI114|H1071F8F50 -1071F8F50:lI115|H1071FBE90 -1071FBE90:lI47|H1071FEF48 -1071FEF48:lI110|H1072020F0 -1072020F0:lI105|H107205330 -107205330:lI99|H107208628 -107208628:lI104|H10720B8F8 -10720B8F8:lI111|H10720EBB8 -10720EBB8:lI108|H107211F18 -107211F18:lI97|H1072153F0 -1072153F0:lI115|H107218A80 -107218A80:lI99|H10721C2B0 -10721C2B0:lI97|H10721F9B0 -10721F9B0:lI114|H107222EA8 -107222EA8:lI108|H107226010 -107226010:lI115|H107228DF8 -107228DF8:lI111|H10722B830 -10722B830:lI110|H10722DF08 -10722DF08:lI47|H107230330 -107230330:lI86|H1072324A8 -1072324A8:lI83|H107234310 -107234310:lI32|H107235E78 -107235E78:lI67|H107237770 -107237770:lI111|H107238DF8 -107238DF8:lI100|H10723A2D0 -10723A2D0:lI101|H10723B630 -10723B630:lI47|H10723C710 -10723C710:lI65|H10723D5D0 -10723D5D0:lI100|H10723E350 -10723E350:lI118|H10723EF60 -10723EF60:lI101|H10723FA30 -10723FA30:lI110|H107240380 -107240380:lI116|H107240C00 -107240C00:lI79|H107241390 -107241390:lI102|H107241AC0 -107241AC0:lI67|H107242190 -107242190:lI111|H107242800 -107242800:lI100|H107242E00 -107242E00:lI101|H107243370 -107243370:lI47|H1072438B0 -1072438B0:lI97|H107243DB0 -107243DB0:lI111|H1072442A0 -1072442A0:lI99|H107244750 -107244750:lI50|H107244BC0 -107244BC0:lI48|H107245020 -107245020:lI50|H107245470 -107245470:lI51|H107245870 -107245870:lI47|H107245C30 -107245C30:lI98|H107245FC0 -107245FC0:lI117|H107246350 -107246350:lI105|H1072466E0 -1072466E0:lI108|H107246A70 -107246A70:lI100|H107246DB0 -107246DB0:lI47|H1072470D0 -1072470D0:lI100|H1072473F0 -1072473F0:lI101|H107247700 -107247700:lI118|H107247A00 -107247A00:lI47|H107247CF0 -107247CF0:lI101|H107247FD0 -107247FD0:lI114|H107248290 -107248290:lI108|H107248550 -107248550:lI97|H107248800 -107248800:lI110|H107248AB0 -107248AB0:lI103|H107248D30 -107248D30:lI47|H107248FA0 -107248FA0:lI97|H107249210 -107249210:lI111|H107249470 -107249470:lI99|H1072496D0 -1072496D0:lI50|H107249920 -107249920:lI48|H107249B30 -107249B30:lI50|H107249D20 -107249D20:lI51|H107249F00 -107249F00:lI47|H10724A0C0 -10724A0C0:lI101|H10724A260 -10724A260:lI98|H10724A3E0 -10724A3E0:lI105|H10724A550 -10724A550:lI110|N -106600870:lH1066008B8|H1066008D0 -1066008B8:t2:H1071F0048,A7:nocache -1071F0048:lI47|H1071F0608 -1071F0608:lI85|H1071F1890 -1071F1890:lI115|H1071F3B08 -1071F3B08:lI101|H1071F6320 -1071F6320:lI114|H1071F8F70 -1071F8F70:lI115|H1071FBEB0 -1071FBEB0:lI47|H1071FEF68 -1071FEF68:lI110|H107202110 -107202110:lI105|H107205350 -107205350:lI99|H107208648 -107208648:lI104|H10720B918 -10720B918:lI111|H10720EBD8 -10720EBD8:lI108|H107211F38 -107211F38:lI97|H107215410 -107215410:lI115|H107218AA0 -107218AA0:lI99|H10721C2D0 -10721C2D0:lI97|H10721F9D0 -10721F9D0:lI114|H107222EC8 -107222EC8:lI108|H107226030 -107226030:lI115|H107228E18 -107228E18:lI111|H10722B850 -10722B850:lI110|H10722DF28 -10722DF28:lI47|H107230350 -107230350:lI86|H1072324C8 -1072324C8:lI83|H107234330 -107234330:lI32|H107235E98 -107235E98:lI67|H107237790 -107237790:lI111|H107238E18 -107238E18:lI100|H10723A2F0 -10723A2F0:lI101|H10723B650 -10723B650:lI47|H10723C730 -10723C730:lI65|H10723D5F0 -10723D5F0:lI100|H10723E370 -10723E370:lI118|H10723EF80 -10723EF80:lI101|H10723FA50 -10723FA50:lI110|H1072403A0 -1072403A0:lI116|H107240C20 -107240C20:lI79|H1072413B0 -1072413B0:lI102|H107241AE0 -107241AE0:lI67|H1072421B0 -1072421B0:lI111|H107242820 -107242820:lI100|H107242E20 -107242E20:lI101|H107243390 -107243390:lI47|H1072438D0 -1072438D0:lI97|H107243DC0 -107243DC0:lI111|H1072442B0 -1072442B0:lI99|H107244760 -107244760:lI50|H107244BD0 -107244BD0:lI48|H107245030 -107245030:lI50|H107245480 -107245480:lI51|H107245880 -107245880:lI47|H107245C40 -107245C40:lI98|H107245FD0 -107245FD0:lI117|H107246360 -107246360:lI105|H1072466F0 -1072466F0:lI108|H107246A80 -107246A80:lI100|H107246DC0 -107246DC0:lI47|H1072470E0 -1072470E0:lI100|H107247400 -107247400:lI101|H107247710 -107247710:lI118|H107247A10 -107247A10:lI47|H107247D00 -107247D00:lI101|H107247FE0 -107247FE0:lI114|H1072482A0 -1072482A0:lI108|H107248560 -107248560:lI97|H107248810 -107248810:lI110|H107248AC0 -107248AC0:lI103|H107248D40 -107248D40:lI47|H107248FB0 -107248FB0:lI115|H107249220 -107249220:lI105|H107249480 -107249480:lI109|H1072496E0 -1072496E0:lI112|H107249930 -107249930:lI108|H107249B40 -107249B40:lI105|H107249D30 -107249D30:lI102|H107249F10 -107249F10:lI105|H10724A0D0 -10724A0D0:lI108|H10724A270 -10724A270:lI101|H10724A3F0 -10724A3F0:lI47|H10724A560 -10724A560:lI101|H10724A6B0 -10724A6B0:lI98|H10724A7E0 -10724A7E0:lI105|H10724A900 -10724A900:lI110|N -1066008D0:lH106600900|H106600918 -106600900:t2:H280052958,A7:nocache -106600918:lH106600948|H106600960 -106600948:t2:H1071F0088,H1071F0098 -1071F0098:Mh64:F:H1071F0658,H1071F0698,H1071F06C8,H1071F0718,H1071F0740,H1071F0778,H1071F07B0,H1071F07E0,H1071F0808,H1071F0830,H1071F0878,H1071F08A8,H1071F08D0,H1071F0908,H1071F0938 -1071F0658:Mn7:H1071F18E0,H1071F18F0,H1071F1900,H1071F1910,H1071F1920,H1071F1930,H1071F1940 -1071F18E0:lH1071F3B58|N -1071F3B58:lI103|H1071F6370 -1071F6370:lI101|H1071F8FC0 -1071F8FC0:lI110|H1071FBF00 -1071FBF00:lI95|H1071FEFB8 -1071FEFB8:lI116|H107202160 -107202160:lI99|H1072053A0 -1072053A0:lI112|H107208698 -107208698:lI46|H10720B968 -10720B968:lI98|H10720EC28 -10720EC28:lI101|H107211F88 -107211F88:lI97|H107215460 -107215460:lI109|N -1071F1940:lH1071F3BB8|N -1071F3BB8:lI105|H1071F63D0 -1071F63D0:lI110|H1071F9020 -1071F9020:lI101|H1071FBF60 -1071FBF60:lI116|H1071FF018 -1071FF018:lI95|H1072021C0 -1072021C0:lI114|H107205400 -107205400:lI101|H1072086F8 -1072086F8:lI115|H10720B9C8 -10720B9C8:lI46|H10720EC88 -10720EC88:lI98|H107211FD8 -107211FD8:lI101|H1072154A0 -1072154A0:lI97|H107218B20 -107218B20:lI109|N -1071F1930:lH1071F3BA8|N -1071F3BA8:lI114|H1071F63C0 -1071F63C0:lI97|H1071F9010 -1071F9010:lI119|H1071FBF50 -1071FBF50:lI95|H1071FF008 -1071FF008:lI102|H1072021B0 -1072021B0:lI105|H1072053F0 -1072053F0:lI108|H1072086E8 -1072086E8:lI101|H10720B9B8 -10720B9B8:lI95|H10720EC78 -10720EC78:lI105|H107211FC8 -107211FC8:lI111|H107215490 -107215490:lI46|H107218B10 -107218B10:lI98|H10721C340 -10721C340:lI101|H10721FA40 -10721FA40:lI97|H107222F38 -107222F38:lI109|N -1071F1920:lH1071F3B98|N -1071F3B98:lI103|H1071F63B0 -1071F63B0:lI114|H1071F9000 -1071F9000:lI111|H1071FBF40 -1071FBF40:lI117|H1071FEFF8 -1071FEFF8:lI112|H1072021A0 -1072021A0:lI46|H1072053E0 -1072053E0:lI98|H1072086D8 -1072086D8:lI101|H10720B9A8 -10720B9A8:lI97|H10720EC68 -10720EC68:lI109|N -1071F1910:lH1071F3B88|N -1071F3B88:lI107|H1071F63A0 -1071F63A0:lI101|H1071F8FF0 -1071F8FF0:lI114|H1071FBF30 -1071FBF30:lI110|H1071FEFE8 -1071FEFE8:lI101|H107202190 -107202190:lI108|H1072053D0 -1072053D0:lI95|H1072086C8 -1072086C8:lI114|H10720B998 -10720B998:lI101|H10720EC58 -10720EC58:lI102|H107211FB8 -107211FB8:lI99|H107215480 -107215480:lI46|H107218B00 -107218B00:lI98|H10721C330 -10721C330:lI101|H10721FA30 -10721FA30:lI97|H107222F28 -107222F28:lI109|N -1071F1900:lH1071F3B78|N -1071F3B78:lI115|H1071F6390 -1071F6390:lI111|H1071F8FE0 -1071F8FE0:lI99|H1071FBF20 -1071FBF20:lI107|H1071FEFD8 -1071FEFD8:lI101|H107202180 -107202180:lI116|H1072053C0 -1072053C0:lI46|H1072086B8 -1072086B8:lI98|H10720B988 -10720B988:lI101|H10720EC48 -10720EC48:lI97|H107211FA8 -107211FA8:lI109|N -1071F18F0:lH1071F3B68|N -1071F3B68:lI100|H1071F6380 -1071F6380:lI105|H1071F8FD0 -1071F8FD0:lI115|H1071FBF10 -1071FBF10:lI107|H1071FEFC8 -1071FEFC8:lI95|H107202170 -107202170:lI108|H1072053B0 -1072053B0:lI111|H1072086A8 -1072086A8:lI103|H10720B978 -10720B978:lI95|H10720EC38 -10720EC38:lI115|H107211F98 -107211F98:lI117|H107215470 -107215470:lI112|H107218AF0 -107218AF0:lI46|H10721C320 -10721C320:lI98|H10721FA20 -10721FA20:lI101|H107222F18 -107222F18:lI97|H107226080 -107226080:lI109|N -1071F0938:Mn7:H1071F1E28,H1071F1E38,H1071F1E48,H1071F1E58,H1071F1E70,H1071F1E80,H1071F1E90 -1071F1E28:lH1071F4108|N -1071F4108:lI105|H1071F6928 -1071F6928:lI110|H1071F9580 -1071F9580:lI101|H1071FC4C0 -1071FC4C0:lI116|H1071FF578 -1071FF578:lI54|H107202720 -107202720:lI95|H107205960 -107205960:lI116|H107208C48 -107208C48:lI99|H10720BEF8 -10720BEF8:lI112|H10720F178 -10720F178:lI46|H107212498 -107212498:lI98|H107215930 -107215930:lI101|H107218FA0 -107218FA0:lI97|H10721C720 -10721C720:lI109|N -1071F1E90:lH1071F4178|N -1071F4178:lI105|H1071F6998 -1071F6998:lI110|H1071F95F0 -1071F95F0:lI101|H1071FC530 -1071FC530:lI116|H1071FF5E8 -1071FF5E8:lI95|H107202790 -107202790:lI101|H1072059D0 -1072059D0:lI112|H107208CA8 -107208CA8:lI109|H10720BF58 -10720BF58:lI100|H10720F1D8 -10720F1D8:lI95|H1072124F8 -1072124F8:lI115|H107215980 -107215980:lI111|H107218FF0 -107218FF0:lI99|H10721C750 -10721C750:lI107|H10721FDD0 -10721FDD0:lI101|H107223258 -107223258:lI116|H107226340 -107226340:lI46|H1072290D8 -1072290D8:lI98|H10722BAA0 -10722BAA0:lI101|H10722E108 -10722E108:lI97|H1072304C0 -1072304C0:lI109|N -1071F1E80:lH1071F4168|N -1071F4168:lI112|H1071F6988 -1071F6988:lI103|H1071F95E0 -1071F95E0:lI46|H1071FC520 -1071FC520:lI98|H1071FF5D8 -1071FF5D8:lI101|H107202780 -107202780:lI97|H1072059C0 -1072059C0:lI109|N -1071F1E70:lH1071F4158|N -1071F4158:lI108|H1071F6978 -1071F6978:lI111|H1071F95D0 -1071F95D0:lI99|H1071FC510 -1071FC510:lI97|H1071FF5C8 -1071FF5C8:lI108|H107202770 -107202770:lI95|H1072059B0 -1072059B0:lI117|H107208C98 -107208C98:lI100|H10720BF48 -10720BF48:lI112|H10720F1C8 -10720F1C8:lI46|H1072124E8 -1072124E8:lI98|H107215970 -107215970:lI101|H107218FE0 -107218FE0:lI97|H10721C740 -10721C740:lI109|N -1071F1E58:Mn2:H1071F4138,H1071F4148 -1071F4138:lH1071F6958|N -1071F6958:lI107|H1071F95B0 -1071F95B0:lI101|H1071FC4F0 -1071FC4F0:lI114|H1071FF5A8 -1071FF5A8:lI110|H107202750 -107202750:lI101|H107205990 -107205990:lI108|H107208C78 -107208C78:lI46|H10720BF28 -10720BF28:lI97|H10720F1A8 -10720F1A8:lI112|H1072124C8 -1072124C8:lI112|H107215950 -107215950:lI117|H107218FC0 -107218FC0:lI112|N -1071F4148:lH1071F6968|N -1071F6968:lI103|H1071F95C0 -1071F95C0:lI101|H1071FC500 -1071FC500:lI110|H1071FF5B8 -1071FF5B8:lI95|H107202760 -107202760:lI117|H1072059A0 -1072059A0:lI100|H107208C88 -107208C88:lI112|H10720BF38 -10720BF38:lI46|H10720F1B8 -10720F1B8:lI98|H1072124D8 -1072124D8:lI101|H107215960 -107215960:lI97|H107218FD0 -107218FD0:lI109|N -1071F1E48:lH1071F4128|N -1071F4128:lI108|H1071F6948 -1071F6948:lI111|H1071F95A0 -1071F95A0:lI103|H1071FC4E0 -1071FC4E0:lI103|H1071FF598 -1071FF598:lI101|H107202740 -107202740:lI114|H107205980 -107205980:lI95|H107208C68 -107208C68:lI104|H10720BF18 -10720BF18:lI95|H10720F198 -10720F198:lI99|H1072124B8 -1072124B8:lI111|H107215940 -107215940:lI109|H107218FB0 -107218FB0:lI109|H10721C730 -10721C730:lI111|H10721FDC0 -10721FDC0:lI110|H107223248 -107223248:lI46|H107226330 -107226330:lI98|H1072290C8 -1072290C8:lI101|H10722BA90 -10722BA90:lI97|H10722E0F8 -10722E0F8:lI109|N -1071F1E38:lH1071F4118|N -1071F4118:lI108|H1071F6938 -1071F6938:lI111|H1071F9590 -1071F9590:lI103|H1071FC4D0 -1071FC4D0:lI103|H1071FF588 -1071FF588:lI101|H107202730 -107202730:lI114|H107205970 -107205970:lI46|H107208C58 -107208C58:lI98|H10720BF08 -10720BF08:lI101|H10720F188 -10720F188:lI97|H1072124A8 -1072124A8:lI109|N -1071F0908:Mn5:H1071F1DD0,H1071F1DE8,H1071F1DF8,H1071F1E08,H1071F1E18 -1071F1DD0:Mn2:H1071F40A8,H1071F40B8 -1071F40A8:lH1071F68C8|N -1071F68C8:lI115|H1071F9520 -1071F9520:lI101|H1071FC460 -1071FC460:lI113|H1071FF518 -1071FF518:lI95|H1072026C0 -1072026C0:lI116|H107205900 -107205900:lI114|H107208BE8 -107208BE8:lI97|H10720BE98 -10720BE98:lI99|H10720F118 -10720F118:lI101|H107212438 -107212438:lI46|H1072158D0 -1072158D0:lI98|H107218F40 -107218F40:lI101|H10721C6D0 -10721C6D0:lI97|H10721FD80 -10721FD80:lI109|N -1071F40B8:lH1071F68D8|N -1071F68D8:lI101|H1071F9530 -1071F9530:lI114|H1071FC470 -1071FC470:lI108|H1071FF528 -1071FF528:lI95|H1072026D0 -1072026D0:lI100|H107205910 -107205910:lI100|H107208BF8 -107208BF8:lI108|H10720BEA8 -10720BEA8:lI108|H10720F128 -10720F128:lI46|H107212448 -107212448:lI98|H1072158E0 -1072158E0:lI101|H107218F50 -107218F50:lI97|H10721C6E0 -10721C6E0:lI109|N -1071F1E18:lH1071F40F8|N -1071F40F8:lI97|H1071F6918 -1071F6918:lI112|H1071F9570 -1071F9570:lI112|H1071FC4B0 -1071FC4B0:lI108|H1071FF568 -1071FF568:lI105|H107202710 -107202710:lI99|H107205950 -107205950:lI97|H107208C38 -107208C38:lI116|H10720BEE8 -10720BEE8:lI105|H10720F168 -10720F168:lI111|H107212488 -107212488:lI110|H107215920 -107215920:lI46|H107218F90 -107218F90:lI98|H10721C710 -10721C710:lI101|H10721FDB0 -10721FDB0:lI97|H107223238 -107223238:lI109|N -1071F1E08:lH1071F40E8|N -1071F40E8:lI105|H1071F6908 -1071F6908:lI110|H1071F9560 -1071F9560:lI101|H1071FC4A0 -1071FC4A0:lI116|H1071FF558 -1071FF558:lI95|H107202700 -107202700:lI101|H107205940 -107205940:lI112|H107208C28 -107208C28:lI109|H10720BED8 -10720BED8:lI100|H10720F158 -10720F158:lI95|H107212478 -107212478:lI100|H107215910 -107215910:lI105|H107218F80 -107218F80:lI115|H10721C700 -10721C700:lI116|H10721FDA0 -10721FDA0:lI46|H107223228 -107223228:lI98|H107226320 -107226320:lI101|H1072290B8 -1072290B8:lI97|H10722BA80 -10722BA80:lI109|N -1071F1DF8:lH1071F40D8|N -1071F40D8:lI114|H1071F68F8 -1071F68F8:lI97|H1071F9550 -1071F9550:lI109|H1071FC490 -1071FC490:lI95|H1071FF548 -1071FF548:lI102|H1072026F0 -1072026F0:lI105|H107205930 -107205930:lI108|H107208C18 -107208C18:lI101|H10720BEC8 -10720BEC8:lI46|H10720F148 -10720F148:lI98|H107212468 -107212468:lI101|H107215900 -107215900:lI97|H107218F70 -107218F70:lI109|N -1071F1DE8:lH1071F40C8|N -1071F40C8:lI105|H1071F68E8 -1071F68E8:lI110|H1071F9540 -1071F9540:lI101|H1071FC480 -1071FC480:lI116|H1071FF538 -1071FF538:lI54|H1072026E0 -1072026E0:lI95|H107205920 -107205920:lI115|H107208C08 -107208C08:lI99|H10720BEB8 -10720BEB8:lI116|H10720F138 -10720F138:lI112|H107212458 -107212458:lI46|H1072158F0 -1072158F0:lI98|H107218F60 -107218F60:lI101|H10721C6F0 -10721C6F0:lI97|H10721FD90 -10721FD90:lI109|N -1071F08D0:Mn6:H1071F1D68,H1071F1D80,H1071F1D90,H1071F1DA0,H1071F1DB0,H1071F1DC0 -1071F1D68:Mn2:H1071F4038,H1071F4048 -1071F4038:lH1071F6858|N -1071F6858:lI100|H1071F94B0 -1071F94B0:lI105|H1071FC3F0 -1071FC3F0:lI115|H1071FF4A8 -1071FF4A8:lI107|H107202650 -107202650:lI95|H107205890 -107205890:lI108|H107208B78 -107208B78:lI111|H10720BE28 -10720BE28:lI103|H10720F0A8 -10720F0A8:lI46|H1072123C8 -1072123C8:lI98|H107215860 -107215860:lI101|H107218ED0 -107218ED0:lI97|H10721C670 -10721C670:lI109|N -1071F4048:lH1071F6868|N -1071F6868:lI103|H1071F94C0 -1071F94C0:lI101|H1071FC400 -1071FC400:lI110|H1071FF4B8 -1071FF4B8:lI95|H107202660 -107202660:lI117|H1072058A0 -1072058A0:lI100|H107208B88 -107208B88:lI112|H10720BE38 -10720BE38:lI95|H10720F0B8 -10720F0B8:lI115|H1072123D8 -1072123D8:lI111|H107215870 -107215870:lI99|H107218EE0 -107218EE0:lI107|H10721C680 -10721C680:lI101|H10721FD30 -10721FD30:lI116|H1072231D8 -1072231D8:lI46|H1072262E0 -1072262E0:lI98|H107229078 -107229078:lI101|H10722BA40 -10722BA40:lI97|H10722E0B8 -10722E0B8:lI109|N -1071F1DC0:lH1071F4098|N -1071F4098:lI101|H1071F68B8 -1071F68B8:lI114|H1071F9510 -1071F9510:lI108|H1071FC450 -1071FC450:lI95|H1071FF508 -1071FF508:lI115|H1072026B0 -1072026B0:lI105|H1072058F0 -1072058F0:lI103|H107208BD8 -107208BD8:lI110|H10720BE88 -10720BE88:lI97|H10720F108 -10720F108:lI108|H107212428 -107212428:lI95|H1072158C0 -1072158C0:lI104|H107218F30 -107218F30:lI97|H10721C6C0 -10721C6C0:lI110|H10721FD70 -10721FD70:lI100|H107223218 -107223218:lI108|H107226310 -107226310:lI101|H1072290A8 -1072290A8:lI114|H10722BA70 -10722BA70:lI46|H10722E0E8 -10722E0E8:lI98|H1072304B0 -1072304B0:lI101|H1072325E8 -1072325E8:lI97|H107234420 -107234420:lI109|N -1071F1DB0:lH1071F4088|N -1071F4088:lI114|H1071F68A8 -1071F68A8:lI97|H1071F9500 -1071F9500:lI119|H1071FC440 -1071FC440:lI95|H1071FF4F8 -1071FF4F8:lI102|H1072026A0 -1072026A0:lI105|H1072058E0 -1072058E0:lI108|H107208BC8 -107208BC8:lI101|H10720BE78 -10720BE78:lI95|H10720F0F8 -10720F0F8:lI105|H107212418 -107212418:lI111|H1072158B0 -1072158B0:lI95|H107218F20 -107218F20:lI105|H10721C6B0 -10721C6B0:lI110|H10721FD60 -10721FD60:lI102|H107223208 -107223208:lI108|H107226300 -107226300:lI97|H107229098 -107229098:lI116|H10722BA60 -10722BA60:lI101|H10722E0D8 -10722E0D8:lI46|H1072304A0 -1072304A0:lI98|H1072325D8 -1072325D8:lI101|H107234410 -107234410:lI97|H107235F68 -107235F68:lI109|N -1071F1DA0:lH1071F4078|N -1071F4078:lI102|H1071F6898 -1071F6898:lI105|H1071F94F0 -1071F94F0:lI108|H1071FC430 -1071FC430:lI101|H1071FF4E8 -1071FF4E8:lI95|H107202690 -107202690:lI115|H1072058D0 -1072058D0:lI101|H107208BB8 -107208BB8:lI114|H10720BE68 -10720BE68:lI118|H10720F0E8 -10720F0E8:lI101|H107212408 -107212408:lI114|H1072158A0 -1072158A0:lI46|H107218F10 -107218F10:lI98|H10721C6A0 -10721C6A0:lI101|H10721FD50 -10721FD50:lI97|H1072231F8 -1072231F8:lI109|N -1071F1D90:lH1071F4068|N -1071F4068:lI112|H1071F6888 -1071F6888:lI114|H1071F94E0 -1071F94E0:lI105|H1071FC420 -1071FC420:lI109|H1071FF4D8 -1071FF4D8:lI95|H107202680 -107202680:lI116|H1072058C0 -1072058C0:lI116|H107208BA8 -107208BA8:lI121|H10720BE58 -10720BE58:lI46|H10720F0D8 -10720F0D8:lI98|H1072123F8 -1072123F8:lI101|H107215890 -107215890:lI97|H107218F00 -107218F00:lI109|N -1071F1D80:lH1071F4058|N -1071F4058:lI101|H1071F6878 -1071F6878:lI114|H1071F94D0 -1071F94D0:lI108|H1071FC410 -1071FC410:lI95|H1071FF4C8 -1071FF4C8:lI98|H107202670 -107202670:lI111|H1072058B0 -1072058B0:lI111|H107208B98 -107208B98:lI116|H10720BE48 -10720BE48:lI95|H10720F0C8 -10720F0C8:lI115|H1072123E8 -1072123E8:lI101|H107215880 -107215880:lI114|H107218EF0 -107218EF0:lI118|H10721C690 -10721C690:lI101|H10721FD40 -10721FD40:lI114|H1072231E8 -1072231E8:lI46|H1072262F0 -1072262F0:lI98|H107229088 -107229088:lI101|H10722BA50 -10722BA50:lI97|H10722E0C8 -10722E0C8:lI109|N -1071F08A8:Mn4:H1071F1D18,H1071F1D28,H1071F1D40,H1071F1D50 -1071F1D18:lH1071F3FD8|N -1071F3FD8:lI104|H1071F67F8 -1071F67F8:lI101|H1071F9450 -1071F9450:lI97|H1071FC390 -1071FC390:lI114|H1071FF448 -1071FF448:lI116|H1072025F0 -1072025F0:lI46|H107205830 -107205830:lI98|H107208B18 -107208B18:lI101|H10720BDC8 -10720BDC8:lI97|H10720F048 -10720F048:lI109|N -1071F1D50:Mn2:H1071F4018,H1071F4028 -1071F4018:lH1071F6838|N -1071F6838:lI103|H1071F9490 -1071F9490:lI108|H1071FC3D0 -1071FC3D0:lI111|H1071FF488 -1071FF488:lI98|H107202630 -107202630:lI97|H107205870 -107205870:lI108|H107208B58 -107208B58:lI95|H10720BE08 -10720BE08:lI115|H10720F088 -10720F088:lI101|H1072123A8 -1072123A8:lI97|H107215840 -107215840:lI114|H107218EB0 -107218EB0:lI99|H10721C650 -10721C650:lI104|H10721FD10 -10721FD10:lI46|H1072231C8 -1072231C8:lI98|H1072262D0 -1072262D0:lI101|H107229068 -107229068:lI97|H10722BA30 -10722BA30:lI109|N -1071F4028:lH1071F6848|N -1071F6848:lI101|H1071F94A0 -1071F94A0:lI114|H1071FC3E0 -1071FC3E0:lI108|H1071FF498 -1071FF498:lI95|H107202640 -107202640:lI114|H107205880 -107205880:lI101|H107208B68 -107208B68:lI112|H10720BE18 -10720BE18:lI108|H10720F098 -10720F098:lI121|H1072123B8 -1072123B8:lI46|H107215850 -107215850:lI98|H107218EC0 -107218EC0:lI101|H10721C660 -10721C660:lI97|H10721FD20 -10721FD20:lI109|N -1071F1D40:lH1071F4008|N -1071F4008:lI100|H1071F6828 -1071F6828:lI105|H1071F9480 -1071F9480:lI115|H1071FC3C0 -1071FC3C0:lI107|H1071FF478 -1071FF478:lI95|H107202620 -107202620:lI108|H107205860 -107205860:lI111|H107208B48 -107208B48:lI103|H10720BDF8 -10720BDF8:lI95|H10720F078 -10720F078:lI49|H107212398 -107212398:lI46|H107215830 -107215830:lI98|H107218EA0 -107218EA0:lI101|H10721C640 -10721C640:lI97|H10721FD00 -10721FD00:lI109|N -1071F1D28:Mn2:H1071F3FE8,H1071F3FF8 -1071F3FE8:lH1071F6808|N -1071F6808:lI97|H1071F9460 -1071F9460:lI117|H1071FC3A0 -1071FC3A0:lI116|H1071FF458 -1071FF458:lI104|H107202600 -107202600:lI46|H107205840 -107205840:lI98|H107208B28 -107208B28:lI101|H10720BDD8 -10720BDD8:lI97|H10720F058 -10720F058:lI109|N -1071F3FF8:lH1071F6818|N -1071F6818:lI105|H1071F9470 -1071F9470:lI110|H1071FC3B0 -1071FC3B0:lI101|H1071FF468 -1071FF468:lI116|H107202610 -107202610:lI95|H107205850 -107205850:lI112|H107208B38 -107208B38:lI97|H10720BDE8 -10720BDE8:lI114|H10720F068 -10720F068:lI115|H107212388 -107212388:lI101|H107215820 -107215820:lI46|H107218E90 -107218E90:lI98|H10721C630 -10721C630:lI101|H10721FCF0 -10721FCF0:lI97|H1072231B8 -1072231B8:lI109|N -1071F0878:Mn5:H1071F1CC0,H1071F1CD0,H1071F1CE8,H1071F1CF8,H1071F1D08 -1071F1CC0:lH1071F3F78|N -1071F3F78:lI103|H1071F6798 -1071F6798:lI101|H1071F93F0 -1071F93F0:lI110|H1071FC330 -1071FC330:lI95|H1071FF3E8 -1071FF3E8:lI115|H107202590 -107202590:lI99|H1072057D0 -1072057D0:lI116|H107208AB8 -107208AB8:lI112|H10720BD68 -10720BD68:lI46|H10720EFE8 -10720EFE8:lI98|H107212328 -107212328:lI101|H1072157C0 -1072157C0:lI97|H107218E40 -107218E40:lI109|N -1071F1D08:lH1071F3FC8|N -1071F3FC8:lI101|H1071F67E8 -1071F67E8:lI114|H1071F9440 -1071F9440:lI108|H1071FC380 -1071FC380:lI95|H1071FF438 -1071FF438:lI101|H1072025E0 -1072025E0:lI112|H107205820 -107205820:lI109|H107208B08 -107208B08:lI100|H10720BDB8 -10720BDB8:lI46|H10720F038 -10720F038:lI98|H107212378 -107212378:lI101|H107215810 -107215810:lI97|H107218E80 -107218E80:lI109|N -1071F1CF8:lH1071F3FB8|N -1071F3FB8:lI108|H1071F67D8 -1071F67D8:lI111|H1071F9430 -1071F9430:lI103|H1071FC370 -1071FC370:lI103|H1071FF428 -1071FF428:lI101|H1072025D0 -1072025D0:lI114|H107205810 -107205810:lI95|H107208AF8 -107208AF8:lI115|H10720BDA8 -10720BDA8:lI101|H10720F028 -10720F028:lI114|H107212368 -107212368:lI118|H107215800 -107215800:lI101|H107218E70 -107218E70:lI114|H10721C620 -10721C620:lI46|H10721FCE0 -10721FCE0:lI98|H1072231A8 -1072231A8:lI101|H1072262C0 -1072262C0:lI97|H107229058 -107229058:lI109|N -1071F1CE8:lH1071F3FA8|N -1071F3FA8:lI105|H1071F67C8 -1071F67C8:lI110|H1071F9420 -1071F9420:lI101|H1071FC360 -1071FC360:lI116|H1071FF418 -1071FF418:lI95|H1072025C0 -1072025C0:lI100|H107205800 -107205800:lI98|H107208AE8 -107208AE8:lI46|H10720BD98 -10720BD98:lI98|H10720F018 -10720F018:lI101|H107212358 -107212358:lI97|H1072157F0 -1072157F0:lI109|N -1071F1CD0:Mn2:H1071F3F88,H1071F3F98 -1071F3F88:lH1071F67A8|N -1071F67A8:lI108|H1071F9400 -1071F9400:lI111|H1071FC340 -1071FC340:lI103|H1071FF3F8 -1071FF3F8:lI103|H1072025A0 -1072025A0:lI101|H1072057E0 -1072057E0:lI114|H107208AC8 -107208AC8:lI95|H10720BD78 -10720BD78:lI102|H10720EFF8 -10720EFF8:lI105|H107212338 -107212338:lI108|H1072157D0 -1072157D0:lI116|H107218E50 -107218E50:lI101|H10721C600 -10721C600:lI114|H10721FCC0 -10721FCC0:lI115|H107223188 -107223188:lI46|H1072262A0 -1072262A0:lI98|H107229038 -107229038:lI101|H10722BA10 -10722BA10:lI97|H10722E098 -10722E098:lI109|N -1071F3F98:lH1071F67B8|N -1071F67B8:lI101|H1071F9410 -1071F9410:lI114|H1071FC350 -1071FC350:lI108|H1071FF408 -1071FF408:lI95|H1072025B0 -1072025B0:lI99|H1072057F0 -1072057F0:lI111|H107208AD8 -107208AD8:lI109|H10720BD88 -10720BD88:lI112|H10720F008 -10720F008:lI105|H107212348 -107212348:lI108|H1072157E0 -1072157E0:lI101|H107218E60 -107218E60:lI95|H10721C610 -10721C610:lI115|H10721FCD0 -10721FCD0:lI101|H107223198 -107223198:lI114|H1072262B0 -1072262B0:lI118|H107229048 -107229048:lI101|H10722BA20 -10722BA20:lI114|H10722E0A8 -10722E0A8:lI46|H107230490 -107230490:lI98|H1072325C8 -1072325C8:lI101|H107234400 -107234400:lI97|H107235F58 -107235F58:lI109|N -1071F0830:Mn8:H1071F1C28,H1071F1C38,H1071F1C48,H1071F1C58,H1071F1C68,H1071F1C78,H1071F1C88,H1071F1CA0 -1071F1C28:lH1071F3EC8|N -1071F3EC8:lI110|H1071F66E8 -1071F66E8:lI101|H1071F9340 -1071F9340:lI116|H1071FC280 -1071FC280:lI46|H1071FF338 -1071FF338:lI98|H1072024E0 -1072024E0:lI101|H107205720 -107205720:lI97|H107208A08 -107208A08:lI109|N -1071F1CA0:Mn3:H1071F3F48,H1071F3F58,H1071F3F68 -1071F3F48:lH1071F6768|N -1071F6768:lI100|H1071F93C0 -1071F93C0:lI105|H1071FC300 -1071FC300:lI115|H1071FF3B8 -1071FF3B8:lI116|H107202560 -107202560:lI95|H1072057A0 -1072057A0:lI97|H107208A88 -107208A88:lI99|H10720BD38 -10720BD38:lI46|H10720EFB8 -10720EFB8:lI98|H1072122F8 -1072122F8:lI101|H107215790 -107215790:lI97|H107218E10 -107218E10:lI109|N -1071F3F68:lH1071F6788|N -1071F6788:lI101|H1071F93E0 -1071F93E0:lI114|H1071FC320 -1071FC320:lI108|H1071FF3D8 -1071FF3D8:lI95|H107202580 -107202580:lI101|H1072057C0 -1072057C0:lI114|H107208AA8 -107208AA8:lI116|H10720BD58 -10720BD58:lI115|H10720EFD8 -10720EFD8:lI95|H107212318 -107212318:lI101|H1072157B0 -1072157B0:lI114|H107218E30 -107218E30:lI114|H10721C5F0 -10721C5F0:lI111|H10721FCB0 -10721FCB0:lI114|H107223178 -107223178:lI115|H107226290 -107226290:lI46|H107229028 -107229028:lI98|H10722BA00 -10722BA00:lI101|H10722E088 -10722E088:lI97|H107230480 -107230480:lI109|N -1071F3F58:lH1071F6778|N -1071F6778:lI114|H1071F93D0 -1071F93D0:lI97|H1071FC310 -1071FC310:lI119|H1071FF3C8 -1071FF3C8:lI95|H107202570 -107202570:lI102|H1072057B0 -1072057B0:lI105|H107208A98 -107208A98:lI108|H10720BD48 -10720BD48:lI101|H10720EFC8 -10720EFC8:lI95|H107212308 -107212308:lI105|H1072157A0 -1072157A0:lI111|H107218E20 -107218E20:lI95|H10721C5E0 -10721C5E0:lI108|H10721FCA0 -10721FCA0:lI105|H107223168 -107223168:lI115|H107226280 -107226280:lI116|H107229018 -107229018:lI46|H10722B9F0 -10722B9F0:lI98|H10722E078 -10722E078:lI101|H107230470 -107230470:lI97|H1072325B8 -1072325B8:lI109|N -1071F1C88:Mn2:H1071F3F28,H1071F3F38 -1071F3F28:lH1071F6748|N -1071F6748:lI103|H1071F93A0 -1071F93A0:lI101|H1071FC2E0 -1071FC2E0:lI110|H1071FF398 -1071FF398:lI95|H107202540 -107202540:lI116|H107205780 -107205780:lI99|H107208A68 -107208A68:lI112|H10720BD18 -10720BD18:lI95|H10720EF98 -10720EF98:lI115|H1072122D8 -1072122D8:lI111|H107215770 -107215770:lI99|H107218DF0 -107218DF0:lI107|H10721C5C0 -10721C5C0:lI101|H10721FC80 -10721FC80:lI116|H107223148 -107223148:lI46|H107226260 -107226260:lI98|H107228FF8 -107228FF8:lI101|H10722B9D0 -10722B9D0:lI97|H10722E058 -10722E058:lI109|N -1071F3F38:lH1071F6758|N -1071F6758:lI100|H1071F93B0 -1071F93B0:lI105|H1071FC2F0 -1071FC2F0:lI115|H1071FF3A8 -1071FF3A8:lI107|H107202550 -107202550:lI95|H107205790 -107205790:lI108|H107208A78 -107208A78:lI111|H10720BD28 -10720BD28:lI103|H10720EFA8 -10720EFA8:lI95|H1072122E8 -1072122E8:lI115|H107215780 -107215780:lI101|H107218E00 -107218E00:lI114|H10721C5D0 -10721C5D0:lI118|H10721FC90 -10721FC90:lI101|H107223158 -107223158:lI114|H107226270 -107226270:lI46|H107229008 -107229008:lI98|H10722B9E0 -10722B9E0:lI101|H10722E068 -10722E068:lI97|H107230460 -107230460:lI109|N -1071F1C78:lH1071F3F18|N -1071F3F18:lI105|H1071F6738 -1071F6738:lI110|H1071F9390 -1071F9390:lI101|H1071FC2D0 -1071FC2D0:lI116|H1071FF388 -1071FF388:lI95|H107202530 -107202530:lI117|H107205770 -107205770:lI100|H107208A58 -107208A58:lI112|H10720BD08 -10720BD08:lI46|H10720EF88 -10720EF88:lI98|H1072122C8 -1072122C8:lI101|H107215760 -107215760:lI97|H107218DE0 -107218DE0:lI109|N -1071F1C68:lH1071F3F08|N -1071F3F08:lI97|H1071F6728 -1071F6728:lI112|H1071F9380 -1071F9380:lI112|H1071FC2C0 -1071FC2C0:lI108|H1071FF378 -1071FF378:lI105|H107202520 -107202520:lI99|H107205760 -107205760:lI97|H107208A48 -107208A48:lI116|H10720BCF8 -10720BCF8:lI105|H10720EF78 -10720EF78:lI111|H1072122B8 -1072122B8:lI110|H107215750 -107215750:lI95|H107218DD0 -107218DD0:lI115|H10721C5B0 -10721C5B0:lI116|H10721FC70 -10721FC70:lI97|H107223138 -107223138:lI114|H107226250 -107226250:lI116|H107228FE8 -107228FE8:lI101|H10722B9C0 -10722B9C0:lI114|H10722E048 -10722E048:lI46|H107230450 -107230450:lI98|H1072325A8 -1072325A8:lI101|H1072343F0 -1072343F0:lI97|H107235F48 -107235F48:lI109|N -1071F1C58:lH1071F3EF8|N -1071F3EF8:lI117|H1071F6718 -1071F6718:lI115|H1071F9370 -1071F9370:lI101|H1071FC2B0 -1071FC2B0:lI114|H1071FF368 -1071FF368:lI95|H107202510 -107202510:lI115|H107205750 -107205750:lI117|H107208A38 -107208A38:lI112|H10720BCE8 -10720BCE8:lI46|H10720EF68 -10720EF68:lI98|H1072122A8 -1072122A8:lI101|H107215740 -107215740:lI97|H107218DC0 -107218DC0:lI109|N -1071F1C48:lH1071F3EE8|N -1071F3EE8:lI100|H1071F6708 -1071F6708:lI105|H1071F9360 -1071F9360:lI115|H1071FC2A0 -1071FC2A0:lI116|H1071FF358 -1071FF358:lI95|H107202500 -107202500:lI117|H107205740 -107205740:lI116|H107208A28 -107208A28:lI105|H10720BCD8 -10720BCD8:lI108|H10720EF58 -10720EF58:lI46|H107212298 -107212298:lI98|H107215730 -107215730:lI101|H107218DB0 -107218DB0:lI97|H10721C5A0 -10721C5A0:lI109|N -1071F1C38:lH1071F3ED8|N -1071F3ED8:lI108|H1071F66F8 -1071F66F8:lI111|H1071F9350 -1071F9350:lI103|H1071FC290 -1071FC290:lI103|H1071FF348 -1071FF348:lI101|H1072024F0 -1072024F0:lI114|H107205730 -107205730:lI95|H107208A18 -107208A18:lI115|H10720BCC8 -10720BCC8:lI116|H10720EF48 -10720EF48:lI100|H107212288 -107212288:lI95|H107215720 -107215720:lI104|H107218DA0 -107218DA0:lI46|H10721C590 -10721C590:lI98|H10721FC60 -10721FC60:lI101|H107223128 -107223128:lI97|H107226240 -107226240:lI109|N -1071F0808:Mn4:H1071F1BE8,H1071F1BF8,H1071F1C08,H1071F1C18 -1071F1BE8:lH1071F3E88|N -1071F3E88:lI97|H1071F66A8 -1071F66A8:lI112|H1071F9300 -1071F9300:lI112|H1071FC240 -1071FC240:lI108|H1071FF2F8 -1071FF2F8:lI105|H1072024A0 -1072024A0:lI99|H1072056E0 -1072056E0:lI97|H1072089C8 -1072089C8:lI116|H10720BC88 -10720BC88:lI105|H10720EF08 -10720EF08:lI111|H107212248 -107212248:lI110|H1072156E0 -1072156E0:lI95|H107218D60 -107218D60:lI109|H10721C550 -10721C550:lI97|H10721FC20 -10721FC20:lI115|H1072230E8 -1072230E8:lI116|H107226200 -107226200:lI101|H107228FA8 -107228FA8:lI114|H10722B990 -10722B990:lI46|H10722E018 -10722E018:lI98|H107230440 -107230440:lI101|H107232598 -107232598:lI97|H1072343E0 -1072343E0:lI109|N -1071F1C18:lH1071F3EB8|N -1071F3EB8:lI108|H1071F66D8 -1071F66D8:lI111|H1071F9330 -1071F9330:lI103|H1071FC270 -1071FC270:lI103|H1071FF328 -1071FF328:lI101|H1072024D0 -1072024D0:lI114|H107205710 -107205710:lI95|H1072089F8 -1072089F8:lI99|H10720BCB8 -10720BCB8:lI111|H10720EF38 -10720EF38:lI110|H107212278 -107212278:lI102|H107215710 -107215710:lI105|H107218D90 -107218D90:lI103|H10721C580 -10721C580:lI46|H10721FC50 -10721FC50:lI98|H107223118 -107223118:lI101|H107226230 -107226230:lI97|H107228FD8 -107228FD8:lI109|N -1071F1C08:lH1071F3EA8|N -1071F3EA8:lI108|H1071F66C8 -1071F66C8:lI111|H1071F9320 -1071F9320:lI103|H1071FC260 -1071FC260:lI103|H1071FF318 -1071FF318:lI101|H1072024C0 -1072024C0:lI114|H107205700 -107205700:lI95|H1072089E8 -1072089E8:lI115|H10720BCA8 -10720BCA8:lI105|H10720EF28 -10720EF28:lI109|H107212268 -107212268:lI112|H107215700 -107215700:lI108|H107218D80 -107218D80:lI101|H10721C570 -10721C570:lI95|H10721FC40 -10721FC40:lI104|H107223108 -107223108:lI46|H107226220 -107226220:lI98|H107228FC8 -107228FC8:lI101|H10722B9B0 -10722B9B0:lI97|H10722E038 -10722E038:lI109|N -1071F1BF8:lH1071F3E98|N -1071F3E98:lI119|H1071F66B8 -1071F66B8:lI114|H1071F9310 -1071F9310:lI97|H1071FC250 -1071FC250:lI112|H1071FF308 -1071FF308:lI95|H1072024B0 -1072024B0:lI108|H1072056F0 -1072056F0:lI111|H1072089D8 -1072089D8:lI103|H10720BC98 -10720BC98:lI95|H10720EF18 -10720EF18:lI114|H107212258 -107212258:lI101|H1072156F0 -1072156F0:lI97|H107218D70 -107218D70:lI100|H10721C560 -10721C560:lI101|H10721FC30 -10721FC30:lI114|H1072230F8 -1072230F8:lI46|H107226210 -107226210:lI98|H107228FB8 -107228FB8:lI101|H10722B9A0 -10722B9A0:lI97|H10722E028 -10722E028:lI109|N -1071F07E0:Mn4:H1071F1BA0,H1071F1BB8,H1071F1BC8,H1071F1BD8 -1071F1BA0:Mn2:H1071F3E38,H1071F3E48 -1071F3E38:lH1071F6658|N -1071F6658:lI105|H1071F92B0 -1071F92B0:lI110|H1071FC1F0 -1071FC1F0:lI101|H1071FF2A8 -1071FF2A8:lI116|H107202450 -107202450:lI95|H107205690 -107205690:lI104|H107208978 -107208978:lI111|H10720BC38 -10720BC38:lI115|H10720EEB8 -10720EEB8:lI116|H1072121F8 -1072121F8:lI115|H107215690 -107215690:lI46|H107218D10 -107218D10:lI98|H10721C510 -10721C510:lI101|H10721FBE0 -10721FBE0:lI97|H1072230A8 -1072230A8:lI109|N -1071F3E48:lH1071F6668|N -1071F6668:lI101|H1071F92C0 -1071F92C0:lI114|H1071FC200 -1071FC200:lI116|H1071FF2B8 -1071FF2B8:lI115|H107202460 -107202460:lI95|H1072056A0 -1072056A0:lI100|H107208988 -107208988:lI101|H10720BC48 -10720BC48:lI98|H10720EEC8 -10720EEC8:lI117|H107212208 -107212208:lI103|H1072156A0 -1072156A0:lI46|H107218D20 -107218D20:lI98|H10721C520 -10721C520:lI101|H10721FBF0 -10721FBF0:lI97|H1072230B8 -1072230B8:lI109|N -1071F1BD8:lH1071F3E78|N -1071F3E78:lI108|H1071F6698 -1071F6698:lI111|H1071F92F0 -1071F92F0:lI103|H1071FC230 -1071FC230:lI103|H1071FF2E8 -1071FF2E8:lI101|H107202490 -107202490:lI114|H1072056D0 -1072056D0:lI95|H1072089B8 -1072089B8:lI102|H10720BC78 -10720BC78:lI111|H10720EEF8 -10720EEF8:lI114|H107212238 -107212238:lI109|H1072156D0 -1072156D0:lI97|H107218D50 -107218D50:lI116|H10721C540 -10721C540:lI116|H10721FC10 -10721FC10:lI101|H1072230D8 -1072230D8:lI114|H1072261F0 -1072261F0:lI46|H107228F98 -107228F98:lI98|H10722B980 -10722B980:lI101|H10722E008 -10722E008:lI97|H107230430 -107230430:lI109|N -1071F1BC8:lH1071F3E68|N -1071F3E68:lI105|H1071F6688 -1071F6688:lI110|H1071F92E0 -1071F92E0:lI101|H1071FC220 -1071FC220:lI116|H1071FF2D8 -1071FF2D8:lI95|H107202480 -107202480:lI103|H1072056C0 -1072056C0:lI101|H1072089A8 -1072089A8:lI116|H10720BC68 -10720BC68:lI104|H10720EEE8 -10720EEE8:lI111|H107212228 -107212228:lI115|H1072156C0 -1072156C0:lI116|H107218D40 -107218D40:lI95|H10721C530 -10721C530:lI110|H10721FC00 -10721FC00:lI97|H1072230C8 -1072230C8:lI116|H1072261E0 -1072261E0:lI105|H107228F88 -107228F88:lI118|H10722B970 -10722B970:lI101|H10722DFF8 -10722DFF8:lI46|H107230420 -107230420:lI98|H107232588 -107232588:lI101|H1072343D0 -1072343D0:lI97|H107235F38 -107235F38:lI109|N -1071F1BB8:lH1071F3E58|N -1071F3E58:lI105|H1071F6678 -1071F6678:lI110|H1071F92D0 -1071F92D0:lI101|H1071FC210 -1071FC210:lI116|H1071FF2C8 -1071FF2C8:lI95|H107202470 -107202470:lI116|H1072056B0 -1072056B0:lI99|H107208998 -107208998:lI112|H10720BC58 -10720BC58:lI46|H10720EED8 -10720EED8:lI98|H107212218 -107212218:lI101|H1072156B0 -1072156B0:lI97|H107218D30 -107218D30:lI109|N -1071F07B0:Mn5:H1071F1B50,H1071F1B60,H1071F1B70,H1071F1B80,H1071F1B90 -1071F1B50:lH1071F3DE8|N -1071F3DE8:lI114|H1071F6608 -1071F6608:lI97|H1071F9260 -1071F9260:lI119|H1071FC1A0 -1071FC1A0:lI95|H1071FF258 -1071FF258:lI102|H107202400 -107202400:lI105|H107205640 -107205640:lI108|H107208928 -107208928:lI101|H10720BBE8 -10720BBE8:lI95|H10720EE78 -10720EE78:lI105|H1072121B8 -1072121B8:lI111|H107215650 -107215650:lI95|H107218CD0 -107218CD0:lI100|H10721C4E0 -10721C4E0:lI101|H10721FBB0 -10721FBB0:lI108|H107223078 -107223078:lI97|H1072261C0 -1072261C0:lI121|H107228F68 -107228F68:lI101|H10722B960 -10722B960:lI100|H10722DFE8 -10722DFE8:lI46|H107230410 -107230410:lI98|H107232578 -107232578:lI101|H1072343C0 -1072343C0:lI97|H107235F28 -107235F28:lI109|N -1071F1B90:lH1071F3E28|N -1071F3E28:lI103|H1071F6648 -1071F6648:lI114|H1071F92A0 -1071F92A0:lI111|H1071FC1E0 -1071FC1E0:lI117|H1071FF298 -1071FF298:lI112|H107202440 -107202440:lI95|H107205680 -107205680:lI104|H107208968 -107208968:lI105|H10720BC28 -10720BC28:lI115|H10720EEA8 -10720EEA8:lI116|H1072121E8 -1072121E8:lI111|H107215680 -107215680:lI114|H107218D00 -107218D00:lI121|H10721C500 -10721C500:lI46|H10721FBD0 -10721FBD0:lI98|H107223098 -107223098:lI101|H1072261D0 -1072261D0:lI97|H107228F78 -107228F78:lI109|N -1071F1B80:lH1071F3E18|N -1071F3E18:lI117|H1071F6638 -1071F6638:lI115|H1071F9290 -1071F9290:lI101|H1071FC1D0 -1071FC1D0:lI114|H1071FF288 -1071FF288:lI95|H107202430 -107202430:lI100|H107205670 -107205670:lI114|H107208958 -107208958:lI118|H10720BC18 -10720BC18:lI46|H10720EE98 -10720EE98:lI98|H1072121D8 -1072121D8:lI101|H107215670 -107215670:lI97|H107218CF0 -107218CF0:lI109|N -1071F1B70:lH1071F3E08|N -1071F3E08:lI105|H1071F6628 -1071F6628:lI110|H1071F9280 -1071F9280:lI101|H1071FC1C0 -1071FC1C0:lI116|H1071FF278 -1071FF278:lI95|H107202420 -107202420:lI99|H107205660 -107205660:lI111|H107208948 -107208948:lI110|H10720BC08 -10720BC08:lI102|H10720EE88 -10720EE88:lI105|H1072121C8 -1072121C8:lI103|H107215660 -107215660:lI46|H107218CE0 -107218CE0:lI98|H10721C4F0 -10721C4F0:lI101|H10721FBC0 -10721FBC0:lI97|H107223088 -107223088:lI109|N -1071F1B60:lH1071F3DF8|N -1071F3DF8:lI102|H1071F6618 -1071F6618:lI105|H1071F9270 -1071F9270:lI108|H1071FC1B0 -1071FC1B0:lI101|H1071FF268 -1071FF268:lI46|H107202410 -107202410:lI98|H107205650 -107205650:lI101|H107208938 -107208938:lI97|H10720BBF8 -10720BBF8:lI109|N -1071F0778:Mn6:H1071F1AF0,H1071F1B00,H1071F1B10,H1071F1B20,H1071F1B30,H1071F1B40 -1071F1AF0:lH1071F3D88|N -1071F3D88:lI101|H1071F65A8 -1071F65A8:lI114|H1071F9200 -1071F9200:lI112|H1071FC140 -1071FC140:lI99|H1071FF1F8 -1071FF1F8:lI46|H1072023A0 -1072023A0:lI98|H1072055E0 -1072055E0:lI101|H1072088C8 -1072088C8:lI97|H10720BB88 -10720BB88:lI109|N -1071F1B40:lH1071F3DD8|N -1071F3DD8:lI102|H1071F65F8 -1071F65F8:lI105|H1071F9250 -1071F9250:lI108|H1071FC190 -1071FC190:lI101|H1071FF248 -1071FF248:lI95|H1072023F0 -1072023F0:lI105|H107205630 -107205630:lI111|H107208918 -107208918:lI95|H10720BBD8 -10720BBD8:lI115|H10720EE68 -10720EE68:lI101|H1072121A8 -1072121A8:lI114|H107215640 -107215640:lI118|H107218CC0 -107218CC0:lI101|H10721C4D0 -10721C4D0:lI114|H10721FBA0 -10721FBA0:lI46|H107223068 -107223068:lI98|H1072261B0 -1072261B0:lI101|H107228F58 -107228F58:lI97|H10722B950 -10722B950:lI109|N -1071F1B30:lH1071F3DC8|N -1071F3DC8:lI105|H1071F65E8 -1071F65E8:lI110|H1071F9240 -1071F9240:lI101|H1071FC180 -1071FC180:lI116|H1071FF238 -1071FF238:lI54|H1072023E0 -1072023E0:lI95|H107205620 -107205620:lI117|H107208908 -107208908:lI100|H10720BBC8 -10720BBC8:lI112|H10720EE58 -10720EE58:lI46|H107212198 -107212198:lI98|H107215630 -107215630:lI101|H107218CB0 -107218CB0:lI97|H10721C4C0 -10721C4C0:lI109|N -1071F1B20:lH1071F3DB8|N -1071F3DB8:lI103|H1071F65D8 -1071F65D8:lI108|H1071F9230 -1071F9230:lI111|H1071FC170 -1071FC170:lI98|H1071FF228 -1071FF228:lI97|H1072023D0 -1072023D0:lI108|H107205610 -107205610:lI46|H1072088F8 -1072088F8:lI98|H10720BBB8 -10720BBB8:lI101|H10720EE48 -10720EE48:lI97|H107212188 -107212188:lI109|N -1071F1B10:lH1071F3DA8|N -1071F3DA8:lI114|H1071F65C8 -1071F65C8:lI97|H1071F9220 -1071F9220:lI119|H1071FC160 -1071FC160:lI95|H1071FF218 -1071FF218:lI102|H1072023C0 -1072023C0:lI105|H107205600 -107205600:lI108|H1072088E8 -1072088E8:lI101|H10720BBA8 -10720BBA8:lI95|H10720EE38 -10720EE38:lI105|H107212178 -107212178:lI111|H107215620 -107215620:lI95|H107218CA0 -107218CA0:lI100|H10721C4B0 -10721C4B0:lI101|H10721FB90 -10721FB90:lI102|H107223058 -107223058:lI108|H1072261A0 -1072261A0:lI97|H107228F48 -107228F48:lI116|H10722B940 -10722B940:lI101|H10722DFD8 -10722DFD8:lI46|H107230400 -107230400:lI98|H107232568 -107232568:lI101|H1072343B0 -1072343B0:lI97|H107235F18 -107235F18:lI109|N -1071F1B00:lH1071F3D98|N -1071F3D98:lI103|H1071F65B8 -1071F65B8:lI108|H1071F9210 -1071F9210:lI111|H1071FC150 -1071FC150:lI98|H1071FF208 -1071FF208:lI97|H1072023B0 -1072023B0:lI108|H1072055F0 -1072055F0:lI95|H1072088D8 -1072088D8:lI103|H10720BB98 -10720BB98:lI114|H10720EE28 -10720EE28:lI111|H107212168 -107212168:lI117|H107215610 -107215610:lI112|H107218C90 -107218C90:lI46|H10721C4A0 -10721C4A0:lI98|H10721FB80 -10721FB80:lI101|H107223048 -107223048:lI97|H107226190 -107226190:lI109|N -1071F0740:Mn6:H1071F1A88,H1071F1A98,H1071F1AB0,H1071F1AC0,H1071F1AD0,H1071F1AE0 -1071F1A88:lH1071F3D18|N -1071F3D18:lI110|H1071F6530 -1071F6530:lI101|H1071F9180 -1071F9180:lI116|H1071FC0C0 -1071FC0C0:lI95|H1071FF178 -1071FF178:lI107|H107202320 -107202320:lI101|H107205560 -107205560:lI114|H107208858 -107208858:lI110|H10720BB18 -10720BB18:lI101|H10720EDB8 -10720EDB8:lI108|H1072120F8 -1072120F8:lI46|H1072155B0 -1072155B0:lI98|H107218C30 -107218C30:lI101|H10721C440 -10721C440:lI97|H10721FB20 -10721FB20:lI109|N -1071F1AE0:lH1071F3D78|N -1071F3D78:lI101|H1071F6598 -1071F6598:lI114|H1071F91F0 -1071F91F0:lI114|H1071FC130 -1071FC130:lI111|H1071FF1E8 -1071FF1E8:lI114|H107202390 -107202390:lI95|H1072055D0 -1072055D0:lI104|H1072088B8 -1072088B8:lI97|H10720BB78 -10720BB78:lI110|H10720EE18 -10720EE18:lI100|H107212158 -107212158:lI108|H107215600 -107215600:lI101|H107218C80 -107218C80:lI114|H10721C490 -10721C490:lI46|H10721FB70 -10721FB70:lI98|H107223038 -107223038:lI101|H107226180 -107226180:lI97|H107228F38 -107228F38:lI109|N -1071F1AD0:lH1071F3D68|N -1071F3D68:lI111|H1071F6588 -1071F6588:lI115|H1071F91E0 -1071F91E0:lI46|H1071FC120 -1071FC120:lI98|H1071FF1D8 -1071FF1D8:lI101|H107202380 -107202380:lI97|H1072055C0 -1072055C0:lI109|N -1071F1AC0:lH1071F3D58|N -1071F3D58:lI114|H1071F6578 -1071F6578:lI97|H1071F91D0 -1071F91D0:lI119|H1071FC110 -1071FC110:lI95|H1071FF1C8 -1071FF1C8:lI102|H107202370 -107202370:lI105|H1072055B0 -1072055B0:lI108|H1072088A8 -1072088A8:lI101|H10720BB68 -10720BB68:lI95|H10720EE08 -10720EE08:lI105|H107212148 -107212148:lI111|H1072155F0 -1072155F0:lI95|H107218C70 -107218C70:lI99|H10721C480 -10721C480:lI111|H10721FB60 -10721FB60:lI109|H107223028 -107223028:lI112|H107226170 -107226170:lI114|H107228F28 -107228F28:lI101|H10722B930 -10722B930:lI115|H10722DFC8 -10722DFC8:lI115|H1072303F0 -1072303F0:lI101|H107232558 -107232558:lI100|H1072343A0 -1072343A0:lI46|H107235F08 -107235F08:lI98|H107237800 -107237800:lI101|H107238E88 -107238E88:lI97|H10723A360 -10723A360:lI109|N -1071F1AB0:lH1071F3D48|N -1071F3D48:lI108|H1071F6568 -1071F6568:lI111|H1071F91C0 -1071F91C0:lI103|H1071FC100 -1071FC100:lI103|H1071FF1B8 -1071FF1B8:lI101|H107202360 -107202360:lI114|H1072055A0 -1072055A0:lI95|H107208898 -107208898:lI100|H10720BB58 -10720BB58:lI105|H10720EDF8 -10720EDF8:lI115|H107212138 -107212138:lI107|H1072155E0 -1072155E0:lI95|H107218C60 -107218C60:lI108|H10721C470 -10721C470:lI111|H10721FB50 -10721FB50:lI103|H107223018 -107223018:lI95|H107226160 -107226160:lI104|H107228F18 -107228F18:lI46|H10722B920 -10722B920:lI98|H10722DFB8 -10722DFB8:lI101|H1072303E0 -1072303E0:lI97|H107232548 -107232548:lI109|N -1071F1A98:Mn2:H1071F3D28,H1071F3D38 -1071F3D28:Mn1:H1071F6540 -1071F6540:Mn2:H1071F9190,H1071F91A0 -1071F9190:lH1071FC0D0|N -1071FC0D0:lI108|H1071FF188 -1071FF188:lI111|H107202330 -107202330:lI103|H107205570 -107205570:lI103|H107208868 -107208868:lI101|H10720BB28 -10720BB28:lI114|H10720EDC8 -10720EDC8:lI95|H107212108 -107212108:lI115|H1072155C0 -1072155C0:lI117|H107218C40 -107218C40:lI112|H10721C450 -10721C450:lI46|H10721FB30 -10721FB30:lI98|H107222FF8 -107222FF8:lI101|H107226140 -107226140:lI97|H107228EF8 -107228EF8:lI109|N -1071F91A0:lH1071FC0E0|N -1071FC0E0:lI112|H1071FF198 -1071FF198:lI103|H107202340 -107202340:lI50|H107205580 -107205580:lI46|H107208878 -107208878:lI98|H10720BB38 -10720BB38:lI101|H10720EDD8 -10720EDD8:lI97|H107212118 -107212118:lI109|N -1071F3D38:lH1071F6558|N -1071F6558:lI97|H1071F91B0 -1071F91B0:lI112|H1071FC0F0 -1071FC0F0:lI112|H1071FF1A8 -1071FF1A8:lI108|H107202350 -107202350:lI105|H107205590 -107205590:lI99|H107208888 -107208888:lI97|H10720BB48 -10720BB48:lI116|H10720EDE8 -10720EDE8:lI105|H107212128 -107212128:lI111|H1072155D0 -1072155D0:lI110|H107218C50 -107218C50:lI95|H10721C460 -10721C460:lI99|H10721FB40 -10721FB40:lI111|H107223008 -107223008:lI110|H107226150 -107226150:lI116|H107228F08 -107228F08:lI114|H10722B910 -10722B910:lI111|H10722DFA8 -10722DFA8:lI108|H1072303D0 -1072303D0:lI108|H107232538 -107232538:lI101|H107234390 -107234390:lI114|H107235EF8 -107235EF8:lI46|H1072377F0 -1072377F0:lI98|H107238E78 -107238E78:lI101|H10723A350 -10723A350:lI97|H10723B6A0 -10723B6A0:lI109|N -1071F0718:Mn4:H1071F1A48,H1071F1A58,H1071F1A68,H1071F1A78 -1071F1A48:lH1071F3CD8|N -1071F3CD8:lI108|H1071F64F0 -1071F64F0:lI111|H1071F9140 -1071F9140:lI103|H1071FC080 -1071FC080:lI103|H1071FF138 -1071FF138:lI101|H1072022E0 -1072022E0:lI114|H107205520 -107205520:lI95|H107208818 -107208818:lI98|H10720BAD8 -10720BAD8:lI97|H10720ED88 -10720ED88:lI99|H1072120D8 -1072120D8:lI107|H107215590 -107215590:lI101|H107218C10 -107218C10:lI110|H10721C420 -10721C420:lI100|H10721FB00 -10721FB00:lI46|H107222FD8 -107222FD8:lI98|H107226120 -107226120:lI101|H107228ED8 -107228ED8:lI97|H10722B8F0 -10722B8F0:lI109|N -1071F1A78:lH1071F3D08|N -1071F3D08:lI101|H1071F6520 -1071F6520:lI114|H1071F9170 -1071F9170:lI108|H1071FC0B0 -1071FC0B0:lI95|H1071FF168 -1071FF168:lI107|H107202310 -107202310:lI101|H107205550 -107205550:lI114|H107208848 -107208848:lI110|H10720BB08 -10720BB08:lI101|H10720EDA8 -10720EDA8:lI108|H1072120E8 -1072120E8:lI95|H1072155A0 -1072155A0:lI101|H107218C20 -107218C20:lI114|H10721C430 -10721C430:lI114|H10721FB10 -10721FB10:lI111|H107222FE8 -107222FE8:lI114|H107226130 -107226130:lI115|H107228EE8 -107228EE8:lI46|H10722B900 -10722B900:lI98|H10722DF98 -10722DF98:lI101|H1072303C0 -1072303C0:lI97|H107232528 -107232528:lI109|N -1071F1A68:lH1071F3CF8|N -1071F3CF8:lI107|H1071F6510 -1071F6510:lI101|H1071F9160 -1071F9160:lI114|H1071FC0A0 -1071FC0A0:lI110|H1071FF158 -1071FF158:lI101|H107202300 -107202300:lI108|H107205540 -107205540:lI46|H107208838 -107208838:lI97|H10720BAF8 -10720BAF8:lI112|H10720ED98 -10720ED98:lI112|N -1071F1A58:lH1071F3CE8|N -1071F3CE8:lI105|H1071F6500 -1071F6500:lI110|H1071F9150 -1071F9150:lI101|H1071FC090 -1071FC090:lI116|H1071FF148 -1071FF148:lI46|H1072022F0 -1072022F0:lI98|H107205530 -107205530:lI101|H107208828 -107208828:lI97|H10720BAE8 -10720BAE8:lI109|N -1071F06C8:Mn9:H1071F19A8,H1071F19B8,H1071F19C8,H1071F19D8,H1071F19E8,H1071F1A00,H1071F1A10,H1071F1A28,H1071F1A38 -1071F19A8:lH1071F3C28|N -1071F3C28:lI114|H1071F6440 -1071F6440:lI112|H1071F9090 -1071F9090:lI99|H1071FBFD0 -1071FBFD0:lI46|H1071FF088 -1071FF088:lI98|H107202230 -107202230:lI101|H107205470 -107205470:lI97|H107208768 -107208768:lI109|N -1071F1A38:lH1071F3CC8|N -1071F3CC8:lI105|H1071F64E0 -1071F64E0:lI110|H1071F9130 -1071F9130:lI101|H1071FC070 -1071FC070:lI116|H1071FF128 -1071FF128:lI95|H1072022D0 -1072022D0:lI115|H107205510 -107205510:lI99|H107208808 -107208808:lI116|H10720BAC8 -10720BAC8:lI112|H10720ED78 -10720ED78:lI46|H1072120C8 -1072120C8:lI98|H107215580 -107215580:lI101|H107218C00 -107218C00:lI97|H10721C410 -10721C410:lI109|N -1071F1A28:lH1071F3CB8|N -1071F3CB8:lI115|H1071F64D0 -1071F64D0:lI116|H1071F9120 -1071F9120:lI97|H1071FC060 -1071FC060:lI110|H1071FF118 -1071FF118:lI100|H1072022C0 -1072022C0:lI97|H107205500 -107205500:lI114|H1072087F8 -1072087F8:lI100|H10720BAB8 -10720BAB8:lI95|H10720ED68 -10720ED68:lI101|H1072120B8 -1072120B8:lI114|H107215570 -107215570:lI114|H107218BF0 -107218BF0:lI111|H10721C400 -10721C400:lI114|H10721FAF0 -10721FAF0:lI46|H107222FC8 -107222FC8:lI98|H107226110 -107226110:lI101|H107228EC8 -107228EC8:lI97|H10722B8E0 -10722B8E0:lI109|N -1071F1A10:Mn2:H1071F3C98,H1071F3CA8 -1071F3C98:lH1071F64B0|N -1071F64B0:lI108|H1071F9100 -1071F9100:lI111|H1071FC040 -1071FC040:lI99|H1071FF0F8 -1071FF0F8:lI97|H1072022A0 -1072022A0:lI108|H1072054E0 -1072054E0:lI95|H1072087D8 -1072087D8:lI116|H10720BA98 -10720BA98:lI99|H10720ED48 -10720ED48:lI112|H107212098 -107212098:lI46|H107215550 -107215550:lI98|H107218BD0 -107218BD0:lI101|H10721C3E0 -10721C3E0:lI97|H10721FAD0 -10721FAD0:lI109|N -1071F3CA8:lH1071F64C0|N -1071F64C0:lI107|H1071F9110 -1071F9110:lI101|H1071FC050 -1071FC050:lI114|H1071FF108 -1071FF108:lI110|H1072022B0 -1072022B0:lI101|H1072054F0 -1072054F0:lI108|H1072087E8 -1072087E8:lI95|H10720BAA8 -10720BAA8:lI99|H10720ED58 -10720ED58:lI111|H1072120A8 -1072120A8:lI110|H107215560 -107215560:lI102|H107218BE0 -107218BE0:lI105|H10721C3F0 -10721C3F0:lI103|H10721FAE0 -10721FAE0:lI46|H107222FB8 -107222FB8:lI98|H107226100 -107226100:lI101|H107228EB8 -107228EB8:lI97|H10722B8D0 -10722B8D0:lI109|N -1071F1A00:lH1071F3C88|N -1071F3C88:lI99|H1071F64A0 -1071F64A0:lI111|H1071F90F0 -1071F90F0:lI100|H1071FC030 -1071FC030:lI101|H1071FF0E8 -1071FF0E8:lI46|H107202290 -107202290:lI98|H1072054D0 -1072054D0:lI101|H1072087C8 -1072087C8:lI97|H10720BA88 -10720BA88:lI109|N -1071F19E8:Mn2:H1071F3C68,H1071F3C78 -1071F3C68:lH1071F6480|N -1071F6480:lI105|H1071F90D0 -1071F90D0:lI110|H1071FC010 -1071FC010:lI101|H1071FF0C8 -1071FF0C8:lI116|H107202270 -107202270:lI95|H1072054B0 -1072054B0:lI100|H1072087A8 -1072087A8:lI110|H10720BA68 -10720BA68:lI115|H10720ED28 -10720ED28:lI46|H107212078 -107212078:lI98|H107215530 -107215530:lI101|H107218BB0 -107218BB0:lI97|H10721C3C0 -10721C3C0:lI109|N -1071F3C78:lH1071F6490|N -1071F6490:lI99|H1071F90E0 -1071F90E0:lI111|H1071FC020 -1071FC020:lI100|H1071FF0D8 -1071FF0D8:lI101|H107202280 -107202280:lI95|H1072054C0 -1072054C0:lI115|H1072087B8 -1072087B8:lI101|H10720BA78 -10720BA78:lI114|H10720ED38 -10720ED38:lI118|H107212088 -107212088:lI101|H107215540 -107215540:lI114|H107218BC0 -107218BC0:lI46|H10721C3D0 -10721C3D0:lI98|H10721FAC0 -10721FAC0:lI101|H107222FA8 -107222FA8:lI97|H1072260F0 -1072260F0:lI109|N -1071F19D8:lH1071F3C58|N -1071F3C58:lI108|H1071F6470 -1071F6470:lI111|H1071F90C0 -1071F90C0:lI103|H1071FC000 -1071FC000:lI103|H1071FF0B8 -1071FF0B8:lI101|H107202260 -107202260:lI114|H1072054A0 -1072054A0:lI95|H107208798 -107208798:lI104|H10720BA58 -10720BA58:lI97|H10720ED18 -10720ED18:lI110|H107212068 -107212068:lI100|H107215520 -107215520:lI108|H107218BA0 -107218BA0:lI101|H10721C3B0 -10721C3B0:lI114|H10721FAB0 -10721FAB0:lI95|H107222F98 -107222F98:lI119|H1072260E0 -1072260E0:lI97|H107228EA8 -107228EA8:lI116|H10722B8C0 -10722B8C0:lI99|H10722DF88 -10722DF88:lI104|H1072303B0 -1072303B0:lI101|H107232518 -107232518:lI114|H107234380 -107234380:lI46|H107235EE8 -107235EE8:lI98|H1072377E0 -1072377E0:lI101|H107238E68 -107238E68:lI97|H10723A340 -10723A340:lI109|N -1071F19C8:lH1071F3C48|N -1071F3C48:lI105|H1071F6460 -1071F6460:lI110|H1071F90B0 -1071F90B0:lI101|H1071FBFF0 -1071FBFF0:lI116|H1071FF0A8 -1071FF0A8:lI95|H107202250 -107202250:lI116|H107205490 -107205490:lI99|H107208788 -107208788:lI112|H10720BA48 -10720BA48:lI95|H10720ED08 -10720ED08:lI100|H107212058 -107212058:lI105|H107215510 -107215510:lI115|H107218B90 -107218B90:lI116|H10721C3A0 -10721C3A0:lI46|H10721FAA0 -10721FAA0:lI98|H107222F88 -107222F88:lI101|H1072260D0 -1072260D0:lI97|H107228E98 -107228E98:lI109|N -1071F19B8:lH1071F3C38|N -1071F3C38:lI105|H1071F6450 -1071F6450:lI110|H1071F90A0 -1071F90A0:lI101|H1071FBFE0 -1071FBFE0:lI116|H1071FF098 -1071FF098:lI54|H107202240 -107202240:lI95|H107205480 -107205480:lI116|H107208778 -107208778:lI99|H10720BA38 -10720BA38:lI112|H10720ECF8 -10720ECF8:lI95|H107212048 -107212048:lI100|H107215500 -107215500:lI105|H107218B80 -107218B80:lI115|H10721C390 -10721C390:lI116|H10721FA90 -10721FA90:lI46|H107222F78 -107222F78:lI98|H1072260C0 -1072260C0:lI101|H107228E88 -107228E88:lI97|H10722B8B0 -10722B8B0:lI109|N -1071F0698:Mn5:H1071F1950,H1071F1968,H1071F1978,H1071F1988,H1071F1998 -1071F1950:Mn2:H1071F3BC8,H1071F3BD8 -1071F3BC8:lH1071F63E0|N -1071F63E0:lI110|H1071F9030 -1071F9030:lI101|H1071FBF70 -1071FBF70:lI116|H1071FF028 -1071FF028:lI95|H1072021D0 -1072021D0:lI97|H107205410 -107205410:lI100|H107208708 -107208708:lI109|H10720B9D8 -10720B9D8:lI46|H10720EC98 -10720EC98:lI98|H107211FE8 -107211FE8:lI101|H1072154B0 -1072154B0:lI97|H107218B30 -107218B30:lI109|N -1071F3BD8:lH1071F63F0|N -1071F63F0:lI108|H1071F9040 -1071F9040:lI111|H1071FBF80 -1071FBF80:lI103|H1071FF038 -1071FF038:lI103|H1072021E0 -1072021E0:lI101|H107205420 -107205420:lI114|H107208718 -107208718:lI95|H10720B9E8 -10720B9E8:lI112|H10720ECA8 -10720ECA8:lI114|H107211FF8 -107211FF8:lI111|H1072154C0 -1072154C0:lI120|H107218B40 -107218B40:lI121|H10721C350 -10721C350:lI46|H10721FA50 -10721FA50:lI98|H107222F48 -107222F48:lI101|H107226090 -107226090:lI97|H107228E68 -107228E68:lI109|N -1071F1998:lH1071F3C18|N -1071F3C18:lI108|H1071F6430 -1071F6430:lI111|H1071F9080 -1071F9080:lI103|H1071FBFC0 -1071FBFC0:lI103|H1071FF078 -1071FF078:lI101|H107202220 -107202220:lI114|H107205460 -107205460:lI95|H107208758 -107208758:lI111|H10720BA28 -10720BA28:lI108|H10720ECE8 -10720ECE8:lI112|H107212038 -107212038:lI46|H1072154F0 -1072154F0:lI98|H107218B70 -107218B70:lI101|H10721C380 -10721C380:lI97|H10721FA80 -10721FA80:lI109|N -1071F1988:lH1071F3C08|N -1071F3C08:lI101|H1071F6420 -1071F6420:lI114|H1071F9070 -1071F9070:lI108|H1071FBFB0 -1071FBFB0:lI95|H1071FF068 -1071FF068:lI100|H107202210 -107202210:lI105|H107205450 -107205450:lI115|H107208748 -107208748:lI116|H10720BA18 -10720BA18:lI114|H10720ECD8 -10720ECD8:lI105|H107212028 -107212028:lI98|H1072154E0 -1072154E0:lI117|H107218B60 -107218B60:lI116|H10721C370 -10721C370:lI105|H10721FA70 -10721FA70:lI111|H107222F68 -107222F68:lI110|H1072260B0 -1072260B0:lI46|H107228E78 -107228E78:lI98|H10722B8A0 -10722B8A0:lI101|H10722DF78 -10722DF78:lI97|H1072303A0 -1072303A0:lI109|N -1071F1978:lH1071F3BF8|N -1071F3BF8:lI107|H1071F6410 -1071F6410:lI101|H1071F9060 -1071F9060:lI114|H1071FBFA0 -1071FBFA0:lI110|H1071FF058 -1071FF058:lI101|H107202200 -107202200:lI108|H107205440 -107205440:lI46|H107208738 -107208738:lI98|H10720BA08 -10720BA08:lI101|H10720ECC8 -10720ECC8:lI97|H107212018 -107212018:lI109|N -1071F1968:lH1071F3BE8|N -1071F3BE8:lI101|H1071F6400 -1071F6400:lI114|H1071F9050 -1071F9050:lI114|H1071FBF90 -1071FBF90:lI111|H1071FF048 -1071FF048:lI114|H1072021F0 -1072021F0:lI95|H107205430 -107205430:lI108|H107208728 -107208728:lI111|H10720B9F8 -10720B9F8:lI103|H10720ECB8 -10720ECB8:lI103|H107212008 -107212008:lI101|H1072154D0 -1072154D0:lI114|H107218B50 -107218B50:lI46|H10721C360 -10721C360:lI98|H10721FA60 -10721FA60:lI101|H107222F58 -107222F58:lI97|H1072260A0 -1072260A0:lI109|N -1071F0088:lI47|H1071F0648 -1071F0648:lI111|H1071F18D0 -1071F18D0:lI112|H1071F3B48 -1071F3B48:lI116|H1071F6360 -1071F6360:lI47|H1071F8FB0 -1071F8FB0:lI104|H1071FBEF0 -1071FBEF0:lI111|H1071FEFA8 -1071FEFA8:lI109|H107202150 -107202150:lI101|H107205390 -107205390:lI98|H107208688 -107208688:lI114|H10720B958 -10720B958:lI101|H10720EC18 -10720EC18:lI119|H107211F78 -107211F78:lI47|H107215450 -107215450:lI67|H107218AE0 -107218AE0:lI101|H10721C310 -10721C310:lI108|H10721FA10 -10721FA10:lI108|H107222F08 -107222F08:lI97|H107226070 -107226070:lI114|H107228E58 -107228E58:lI47|H10722B890 -10722B890:lI101|H10722DF68 -10722DF68:lI114|H107230390 -107230390:lI108|H107232508 -107232508:lI97|H107234370 -107234370:lI110|H107235ED8 -107235ED8:lI103|H1072377D0 -1072377D0:lI47|H107238E58 -107238E58:lI50|H10723A330 -10723A330:lI54|H10723B690 -10723B690:lI46|H10723C770 -10723C770:lI48|H10723D630 -10723D630:lI46|H10723E3B0 -10723E3B0:lI50|H10723EFC0 -10723EFC0:lI47|H10723FA90 -10723FA90:lI108|H1072403E0 -1072403E0:lI105|H107240C60 -107240C60:lI98|H1072413F0 -1072413F0:lI47|H107241B20 -107241B20:lI101|H1072421F0 -1072421F0:lI114|H107242860 -107242860:lI108|H107242E60 -107242E60:lI97|H1072433D0 -1072433D0:lI110|H107243910 -107243910:lI103|H107243E00 -107243E00:lI47|H1072442F0 -1072442F0:lI108|H1072447A0 -1072447A0:lI105|H107244C10 -107244C10:lI98|H107245070 -107245070:lI47|H1072454C0 -1072454C0:lI107|H1072458C0 -1072458C0:lI101|H107245C80 -107245C80:lI114|H107246010 -107246010:lI110|H1072463A0 -1072463A0:lI101|H107246730 -107246730:lI108|H107246AC0 -107246AC0:lI45|H107246E00 -107246E00:lI57|H107247120 -107247120:lI46|H107247440 -107247440:lI48|H107247750 -107247750:lI46|H107247A50 -107247A50:lI50|H107247D40 -107247D40:lI47|H107248020 -107248020:lI101|H1072482E0 -1072482E0:lI98|H1072485A0 -1072485A0:lI105|H107248850 -107248850:lI110|N -106600960:lH106600990|H10724AE50 -106600990:t2:H1071F0140,H1071F0150 -1071F0150:Mh5C:10:H1071F09A8,H1071F09C8,H1071F0A08,H1071F0A28,H1071F0A38,H1071F0A68,H1071F0A98,H1071F0AC8,H1071F0AF0,H1071F0B30,H1071F0B58,H1071F0B88,H1071F0BF0,H1071F0C28,H1071F0C40,H1071F0C70 -1071F09A8:Mn3:H1071F1ED0,H1071F1EE0,H1071F1EF0 -1071F1ED0:lH1071F41B8|N -1071F41B8:lI103|H1071F69D8 -1071F69D8:lI101|H1071F9630 -1071F9630:lI110|H1071FC570 -1071FC570:lI95|H1071FF628 -1071FF628:lI101|H1072027D0 -1072027D0:lI118|H107205A10 -107205A10:lI101|H107208CE8 -107208CE8:lI110|H10720BF98 -10720BF98:lI116|H10720F218 -10720F218:lI46|H107212538 -107212538:lI98|H1072159C0 -1072159C0:lI101|H107219030 -107219030:lI97|H10721C790 -10721C790:lI109|N -1071F1EF0:lH1071F41D8|N -1071F41D8:lI101|H1071F69F8 -1071F69F8:lI100|H1071F9650 -1071F9650:lI108|H1071FC590 -1071FC590:lI105|H1071FF648 -1071FF648:lI110|H1072027F0 -1072027F0:lI95|H107205A30 -107205A30:lI116|H107208D08 -107208D08:lI121|H10720BFB8 -10720BFB8:lI112|H10720F238 -10720F238:lI101|H107212558 -107212558:lI95|H1072159E0 -1072159E0:lI115|H107219040 -107219040:lI117|H10721C7A0 -10721C7A0:lI103|H10721FE10 -10721FE10:lI103|H107223298 -107223298:lI101|H107226380 -107226380:lI115|H107229118 -107229118:lI116|H10722BAE0 -10722BAE0:lI105|H10722E148 -10722E148:lI111|H107230500 -107230500:lI110|H107232628 -107232628:lI46|H107234460 -107234460:lI98|H107235FA8 -107235FA8:lI101|H107237840 -107237840:lI97|H107238EC8 -107238EC8:lI109|N -1071F1EE0:lH1071F41C8|N -1071F41C8:lI100|H1071F69E8 -1071F69E8:lI105|H1071F9640 -1071F9640:lI103|H1071FC580 -1071FC580:lI114|H1071FF638 -1071FF638:lI97|H1072027E0 -1072027E0:lI112|H107205A20 -107205A20:lI104|H107208CF8 -107208CF8:lI46|H10720BFA8 -10720BFA8:lI98|H10720F228 -10720F228:lI101|H107212548 -107212548:lI97|H1072159D0 -1072159D0:lI109|N -1071F0C70:Mn6:H1071F23C8,H1071F23D8,H1071F23E8,H1071F23F8,H1071F2408,H1071F2418 -1071F23C8:lH1071F4710|N -1071F4710:lI117|H1071F6F38 -1071F6F38:lI110|H1071F9B90 -1071F9B90:lI105|H1071FCAD0 -1071FCAD0:lI99|H1071FFB88 -1071FFB88:lI111|H107202D30 -107202D30:lI100|H107205F60 -107205F60:lI101|H107209218 -107209218:lI46|H10720C478 -10720C478:lI98|H10720F698 -10720F698:lI101|H107212948 -107212948:lI97|H107215D20 -107215D20:lI109|N -1071F2418:lH1071F4760|N -1071F4760:lI98|H1071F6F88 -1071F6F88:lI105|H1071F9BE0 -1071F9BE0:lI110|H1071FCB20 -1071FCB20:lI97|H1071FFBD8 -1071FFBD8:lI114|H107202D80 -107202D80:lI121|H107205FB0 -107205FB0:lI46|H107209268 -107209268:lI98|H10720C4C8 -10720C4C8:lI101|H10720F6E8 -10720F6E8:lI97|H107212998 -107212998:lI109|N -1071F2408:lH1071F4750|N -1071F4750:lI101|H1071F6F78 -1071F6F78:lI118|H1071F9BD0 -1071F9BD0:lI97|H1071FCB10 -1071FCB10:lI108|H1071FFBC8 -1071FFBC8:lI95|H107202D70 -107202D70:lI98|H107205FA0 -107205FA0:lI105|H107209258 -107209258:lI116|H10720C4B8 -10720C4B8:lI115|H10720F6D8 -10720F6D8:lI46|H107212988 -107212988:lI98|H107215D60 -107215D60:lI101|H107219340 -107219340:lI97|H10721C9D0 -10721C9D0:lI109|N -1071F23F8:lH1071F4740|N -1071F4740:lI101|H1071F6F68 -1071F6F68:lI100|H1071F9BC0 -1071F9BC0:lI108|H1071FCB00 -1071FCB00:lI105|H1071FFBB8 -1071FFBB8:lI110|H107202D60 -107202D60:lI95|H107205F90 -107205F90:lI99|H107209248 -107209248:lI111|H10720C4A8 -10720C4A8:lI110|H10720F6C8 -10720F6C8:lI116|H107212978 -107212978:lI101|H107215D50 -107215D50:lI120|H107219330 -107219330:lI116|H10721C9C0 -10721C9C0:lI46|H107220010 -107220010:lI98|H107223408 -107223408:lI101|H1072264C0 -1072264C0:lI97|H1072291E8 -1072291E8:lI109|N -1071F23E8:lH1071F4730|N -1071F4730:lI109|H1071F6F58 -1071F6F58:lI115|H1071F9BB0 -1071F9BB0:lI95|H1071FCAF0 -1071FCAF0:lI116|H1071FFBA8 -1071FFBA8:lI114|H107202D50 -107202D50:lI97|H107205F80 -107205F80:lI110|H107209238 -107209238:lI115|H10720C498 -10720C498:lI102|H10720F6B8 -10720F6B8:lI111|H107212968 -107212968:lI114|H107215D40 -107215D40:lI109|H107219320 -107219320:lI46|H10721C9B0 -10721C9B0:lI98|H107220000 -107220000:lI101|H1072233F8 -1072233F8:lI97|H1072264B0 -1072264B0:lI109|N -1071F23D8:lH1071F4720|N -1071F4720:lI103|H1071F6F48 -1071F6F48:lI101|H1071F9BA0 -1071F9BA0:lI110|H1071FCAE0 -1071FCAE0:lI95|H1071FFB98 -1071FFB98:lI115|H107202D40 -107202D40:lI116|H107205F70 -107205F70:lI97|H107209228 -107209228:lI116|H10720C488 -10720C488:lI101|H10720F6A8 -10720F6A8:lI109|H107212958 -107212958:lI46|H107215D30 -107215D30:lI98|H107219310 -107219310:lI101|H10721C9A0 -10721C9A0:lI97|H10721FFF0 -10721FFF0:lI109|N -1071F0C40:Mn5:H1071F2370,H1071F2380,H1071F2390,H1071F23A0,H1071F23B0 -1071F2370:lH1071F46B0|N -1071F46B0:lI102|H1071F6ED8 -1071F6ED8:lI105|H1071F9B30 -1071F9B30:lI108|H1071FCA70 -1071FCA70:lI101|H1071FFB28 -1071FFB28:lI95|H107202CD0 -107202CD0:lI115|H107205F00 -107205F00:lI111|H1072091B8 -1072091B8:lI114|H10720C418 -10720C418:lI116|H10720F648 -10720F648:lI101|H1072128F8 -1072128F8:lI114|H107215CD0 -107215CD0:lI46|H1072192D0 -1072192D0:lI98|H10721C990 -10721C990:lI101|H10721FFE0 -10721FFE0:lI97|H1072233E8 -1072233E8:lI109|N -1071F23B0:Mn2:H1071F46F0,H1071F4700 -1071F46F0:lH1071F6F18|N -1071F6F18:lI101|H1071F9B70 -1071F9B70:lI112|H1071FCAB0 -1071FCAB0:lI112|H1071FFB68 -1071FFB68:lI46|H107202D10 -107202D10:lI98|H107205F40 -107205F40:lI101|H1072091F8 -1072091F8:lI97|H10720C458 -10720C458:lI109|N -1071F4700:lH1071F6F28|N -1071F6F28:lI111|H1071F9B80 -1071F9B80:lI114|H1071FCAC0 -1071FCAC0:lI100|H1071FFB78 -1071FFB78:lI115|H107202D20 -107202D20:lI101|H107205F50 -107205F50:lI116|H107209208 -107209208:lI115|H10720C468 -10720C468:lI46|H10720F688 -10720F688:lI98|H107212938 -107212938:lI101|H107215D10 -107215D10:lI97|H107219300 -107219300:lI109|N -1071F23A0:lH1071F46E0|N -1071F46E0:lI101|H1071F6F08 -1071F6F08:lI114|H1071F9B60 -1071F9B60:lI108|H1071FCAA0 -1071FCAA0:lI95|H1071FFB58 -1071FFB58:lI98|H107202D00 -107202D00:lI105|H107205F30 -107205F30:lI116|H1072091E8 -1072091E8:lI115|H10720C448 -10720C448:lI46|H10720F678 -10720F678:lI98|H107212928 -107212928:lI101|H107215D00 -107215D00:lI97|H1072192F0 -1072192F0:lI109|N -1071F2390:lH1071F46D0|N -1071F46D0:lI103|H1071F6EF8 -1071F6EF8:lI98|H1071F9B50 -1071F9B50:lI95|H1071FCA90 -1071FCA90:lI115|H1071FFB48 -1071FFB48:lI101|H107202CF0 -107202CF0:lI116|H107205F20 -107205F20:lI115|H1072091D8 -1072091D8:lI46|H10720C438 -10720C438:lI98|H10720F668 -10720F668:lI101|H107212918 -107212918:lI97|H107215CF0 -107215CF0:lI109|N -1071F2380:lH1071F46C0|N -1071F46C0:lI101|H1071F6EE8 -1071F6EE8:lI114|H1071F9B40 -1071F9B40:lI108|H1071FCA80 -1071FCA80:lI95|H1071FFB38 -1071FFB38:lI101|H107202CE0 -107202CE0:lI118|H107205F10 -107205F10:lI97|H1072091C8 -1072091C8:lI108|H10720C428 -10720C428:lI46|H10720F658 -10720F658:lI98|H107212908 -107212908:lI101|H107215CE0 -107215CE0:lI97|H1072192E0 -1072192E0:lI109|N -1071F0C28:Mn2:H1071F2348,H1071F2358 -1071F2348:lH1071F4680|N -1071F4680:lI101|H1071F6EA8 -1071F6EA8:lI100|H1071F9B00 -1071F9B00:lI108|H1071FCA40 -1071FCA40:lI105|H1071FFAF8 -1071FFAF8:lI110|H107202CA0 -107202CA0:lI95|H107205ED0 -107205ED0:lI101|H107209188 -107209188:lI120|H10720C3E8 -10720C3E8:lI112|H10720F618 -10720F618:lI97|H1072128D8 -1072128D8:lI110|H107215CC0 -107215CC0:lI100|H1072192C0 -1072192C0:lI46|H10721C980 -10721C980:lI98|H10721FFD0 -10721FFD0:lI101|H1072233D8 -1072233D8:lI97|H1072264A0 -1072264A0:lI109|N -1071F2358:Mn2:H1071F4690,H1071F46A0 -1071F4690:lH1071F6EB8|N -1071F6EB8:lI115|H1071F9B10 -1071F9B10:lI108|H1071FCA50 -1071FCA50:lI97|H1071FFB08 -1071FFB08:lI118|H107202CB0 -107202CB0:lI101|H107205EE0 -107205EE0:lI46|H107209198 -107209198:lI98|H10720C3F8 -10720C3F8:lI101|H10720F628 -10720F628:lI97|H1072128E8 -1072128E8:lI109|N -1071F46A0:lH1071F6EC8|N -1071F6EC8:lI115|H1071F9B20 -1071F9B20:lI111|H1071FCA60 -1071FCA60:lI102|H1071FFB18 -1071FFB18:lI115|H107202CC0 -107202CC0:lI46|H107205EF0 -107205EF0:lI98|H1072091A8 -1072091A8:lI101|H10720C408 -10720C408:lI97|H10720F638 -10720F638:lI109|N -1071F0BF0:Mn6:H1071F22E8,H1071F22F8,H1071F2308,H1071F2318,H1071F2328,H1071F2338 -1071F22E8:lH1071F4620|N -1071F4620:lI112|H1071F6E48 -1071F6E48:lI114|H1071F9AA0 -1071F9AA0:lI111|H1071FC9E0 -1071FC9E0:lI99|H1071FFA98 -1071FFA98:lI95|H107202C40 -107202C40:lI108|H107205E70 -107205E70:lI105|H107209128 -107209128:lI98|H10720C388 -10720C388:lI46|H10720F5B8 -10720F5B8:lI98|H107212898 -107212898:lI101|H107215C80 -107215C80:lI97|H107219280 -107219280:lI109|N -1071F2338:lH1071F4670|N -1071F4670:lI101|H1071F6E98 -1071F6E98:lI100|H1071F9AF0 -1071F9AF0:lI108|H1071FCA30 -1071FCA30:lI105|H1071FFAE8 -1071FFAE8:lI110|H107202C90 -107202C90:lI46|H107205EC0 -107205EC0:lI98|H107209178 -107209178:lI101|H10720C3D8 -10720C3D8:lI97|H10720F608 -10720F608:lI109|N -1071F2328:lH1071F4660|N -1071F4660:lI100|H1071F6E88 -1071F6E88:lI101|H1071F9AE0 -1071F9AE0:lI116|H1071FCA20 -1071FCA20:lI115|H1071FFAD8 -1071FFAD8:lI95|H107202C80 -107202C80:lI115|H107205EB0 -107205EB0:lI117|H107209168 -107209168:lI112|H10720C3C8 -10720C3C8:lI46|H10720F5F8 -10720F5F8:lI98|H1072128C8 -1072128C8:lI101|H107215CB0 -107215CB0:lI97|H1072192B0 -1072192B0:lI109|N -1071F2318:lH1071F4650|N -1071F4650:lI115|H1071F6E78 -1071F6E78:lI117|H1071F9AD0 -1071F9AD0:lI112|H1071FCA10 -1071FCA10:lI101|H1071FFAC8 -1071FFAC8:lI114|H107202C70 -107202C70:lI118|H107205EA0 -107205EA0:lI105|H107209158 -107209158:lI115|H10720C3B8 -10720C3B8:lI111|H10720F5E8 -10720F5E8:lI114|H1072128B8 -1072128B8:lI46|H107215CA0 -107215CA0:lI98|H1072192A0 -1072192A0:lI101|H10721C970 -10721C970:lI97|H10721FFC0 -10721FFC0:lI109|N -1071F2308:lH1071F4640|N -1071F4640:lI99|H1071F6E68 -1071F6E68:lI97|H1071F9AC0 -1071F9AC0:lI108|H1071FCA00 -1071FCA00:lI101|H1071FFAB8 -1071FFAB8:lI110|H107202C60 -107202C60:lI100|H107205E90 -107205E90:lI97|H107209148 -107209148:lI114|H10720C3A8 -10720C3A8:lI46|H10720F5D8 -10720F5D8:lI98|H1072128A8 -1072128A8:lI101|H107215C90 -107215C90:lI97|H107219290 -107219290:lI109|N -1071F22F8:lH1071F4630|N -1071F4630:lI116|H1071F6E58 -1071F6E58:lI105|H1071F9AB0 -1071F9AB0:lI109|H1071FC9F0 -1071FC9F0:lI101|H1071FFAA8 -1071FFAA8:lI114|H107202C50 -107202C50:lI46|H107205E80 -107205E80:lI98|H107209138 -107209138:lI101|H10720C398 -10720C398:lI97|H10720F5C8 -10720F5C8:lI109|N -1071F0B88:MnC:H1071F2218,H1071F2228,H1071F2238,H1071F2248,H1071F2258,H1071F2268,H1071F2278,H1071F2288,H1071F2298,H1071F22A8,H1071F22C0,H1071F22D0 -1071F2218:lH1071F4540|N -1071F4540:lI117|H1071F6D68 -1071F6D68:lI114|H1071F99C0 -1071F99C0:lI105|H1071FC900 -1071FC900:lI95|H1071FF9B8 -1071FF9B8:lI115|H107202B60 -107202B60:lI116|H107205DA0 -107205DA0:lI114|H107209058 -107209058:lI105|H10720C2C8 -10720C2C8:lI110|H10720F4F8 -10720F4F8:lI103|H1072127F8 -1072127F8:lI46|H107215BF0 -107215BF0:lI98|H107219200 -107219200:lI101|H10721C900 -10721C900:lI97|H10721FF50 -10721FF50:lI109|N -1071F22D0:Mn2:H1071F4600,H1071F4610 -1071F4600:lH1071F6E28|N -1071F6E28:lI101|H1071F9A80 -1071F9A80:lI114|H1071FC9C0 -1071FC9C0:lI108|H1071FFA78 -1071FFA78:lI95|H107202C20 -107202C20:lI112|H107205E50 -107205E50:lI97|H107209108 -107209108:lI114|H10720C368 -10720C368:lI115|H10720F598 -10720F598:lI101|H107212878 -107212878:lI46|H107215C60 -107215C60:lI98|H107219260 -107219260:lI101|H10721C950 -10721C950:lI97|H10721FFA0 -10721FFA0:lI109|N -1071F4610:lH1071F6E38|N -1071F6E38:lI117|H1071F9A90 -1071F9A90:lI110|H1071FC9D0 -1071FC9D0:lI105|H1071FFA88 -1071FFA88:lI99|H107202C30 -107202C30:lI111|H107205E60 -107205E60:lI100|H107209118 -107209118:lI101|H10720C378 -10720C378:lI95|H10720F5A8 -10720F5A8:lI117|H107212888 -107212888:lI116|H107215C70 -107215C70:lI105|H107219270 -107219270:lI108|H10721C960 -10721C960:lI46|H10721FFB0 -10721FFB0:lI98|H1072233C8 -1072233C8:lI101|H107226490 -107226490:lI97|H1072291D8 -1072291D8:lI109|N -1071F22C0:lH1071F45F0|N -1071F45F0:lI101|H1071F6E18 -1071F6E18:lI114|H1071F9A70 -1071F9A70:lI108|H1071FC9B0 -1071FC9B0:lI95|H1071FFA68 -1071FFA68:lI101|H107202C10 -107202C10:lI120|H107205E40 -107205E40:lI112|H1072090F8 -1072090F8:lI97|H10720C358 -10720C358:lI110|H10720F588 -10720F588:lI100|H107212868 -107212868:lI95|H107215C50 -107215C50:lI114|H107219250 -107219250:lI101|H10721C940 -10721C940:lI99|H10721FF90 -10721FF90:lI111|H1072233B8 -1072233B8:lI114|H107226480 -107226480:lI100|H1072291C8 -1072291C8:lI115|H10722BB50 -10722BB50:lI46|H10722E1A8 -10722E1A8:lI98|H107230560 -107230560:lI101|H107232688 -107232688:lI97|H1072344A0 -1072344A0:lI109|N -1071F22A8:Mn2:H1071F45D0,H1071F45E0 -1071F45D0:lH1071F6DF8|N -1071F6DF8:lI114|H1071F9A50 -1071F9A50:lI97|H1071FC990 -1071FC990:lI110|H1071FFA48 -1071FFA48:lI100|H107202BF0 -107202BF0:lI46|H107205E20 -107205E20:lI98|H1072090D8 -1072090D8:lI101|H10720C338 -10720C338:lI97|H10720F568 -10720F568:lI109|N -1071F45E0:lH1071F6E08|N -1071F6E08:lI101|H1071F9A60 -1071F9A60:lI114|H1071FC9A0 -1071FC9A0:lI114|H1071FFA58 -1071FFA58:lI111|H107202C00 -107202C00:lI114|H107205E30 -107205E30:lI95|H1072090E8 -1072090E8:lI108|H10720C348 -10720C348:lI111|H10720F578 -10720F578:lI103|H107212858 -107212858:lI103|H107215C40 -107215C40:lI101|H107219240 -107219240:lI114|H10721C930 -10721C930:lI95|H10721FF80 -10721FF80:lI116|H1072233A8 -1072233A8:lI116|H107226470 -107226470:lI121|H1072291B8 -1072291B8:lI95|H10722BB40 -10722BB40:lI104|H10722E198 -10722E198:lI46|H107230550 -107230550:lI98|H107232678 -107232678:lI101|H107234490 -107234490:lI97|H107235FC8 -107235FC8:lI109|N -1071F2298:lH1071F45C0|N -1071F45C0:lI101|H1071F6DE8 -1071F6DE8:lI114|H1071F9A40 -1071F9A40:lI108|H1071FC980 -1071FC980:lI95|H1071FFA38 -1071FFA38:lI116|H107202BE0 -107202BE0:lI97|H107205E10 -107205E10:lI114|H1072090C8 -1072090C8:lI46|H10720C328 -10720C328:lI98|H10720F558 -10720F558:lI101|H107212848 -107212848:lI97|H107215C30 -107215C30:lI109|N -1071F2288:lH1071F45B0|N -1071F45B0:lI97|H1071F6DD8 -1071F6DD8:lI114|H1071F9A30 -1071F9A30:lI103|H1071FC970 -1071FC970:lI112|H1071FFA28 -1071FFA28:lI97|H107202BD0 -107202BD0:lI114|H107205E00 -107205E00:lI115|H1072090B8 -1072090B8:lI101|H10720C318 -10720C318:lI46|H10720F548 -10720F548:lI98|H107212838 -107212838:lI101|H107215C20 -107215C20:lI97|H107219230 -107219230:lI109|N -1071F2278:lH1071F45A0|N -1071F45A0:lI115|H1071F6DC8 -1071F6DC8:lI121|H1071F9A20 -1071F9A20:lI115|H1071FC960 -1071FC960:lI46|H1071FFA18 -1071FFA18:lI98|H107202BC0 -107202BC0:lI101|H107205DF0 -107205DF0:lI97|H1072090A8 -1072090A8:lI109|N -1071F2268:lH1071F4590|N -1071F4590:lI105|H1071F6DB8 -1071F6DB8:lI111|H1071F9A10 -1071F9A10:lI95|H1071FC950 -1071FC950:lI108|H1071FFA08 -1071FFA08:lI105|H107202BB0 -107202BB0:lI98|H107205DE0 -107205DE0:lI95|H107209098 -107209098:lI102|H10720C308 -10720C308:lI114|H10720F538 -10720F538:lI101|H107212828 -107212828:lI97|H107215C10 -107215C10:lI100|H107219220 -107219220:lI46|H10721C920 -10721C920:lI98|H10721FF70 -10721FF70:lI101|H107223398 -107223398:lI97|H107226460 -107226460:lI109|N -1071F2258:lH1071F4580|N -1071F4580:lI115|H1071F6DA8 -1071F6DA8:lI116|H1071F9A00 -1071F9A00:lI100|H1071FC940 -1071FC940:lI108|H1071FF9F8 -1071FF9F8:lI105|H107202BA0 -107202BA0:lI98|H107205DD0 -107205DD0:lI46|H107209088 -107209088:lI97|H10720C2F8 -10720C2F8:lI112|H10720F528 -10720F528:lI112|N -1071F2248:lH1071F4570|N -1071F4570:lI101|H1071F6D98 -1071F6D98:lI114|H1071F99F0 -1071F99F0:lI108|H1071FC930 -1071FC930:lI95|H1071FF9E8 -1071FF9E8:lI97|H107202B90 -107202B90:lI98|H107205DC0 -107205DC0:lI115|H107209078 -107209078:lI116|H10720C2E8 -10720C2E8:lI114|H10720F518 -10720F518:lI97|H107212818 -107212818:lI99|H107215C00 -107215C00:lI116|H107219210 -107219210:lI95|H10721C910 -10721C910:lI99|H10721FF60 -10721FF60:lI111|H107223388 -107223388:lI100|H107226450 -107226450:lI101|H1072291A8 -1072291A8:lI46|H10722BB30 -10722BB30:lI98|H10722E188 -10722E188:lI101|H107230540 -107230540:lI97|H107232668 -107232668:lI109|N -1071F2238:lH1071F4560|N -1071F4560:lI99|H1071F6D88 -1071F6D88:lI46|H1071F99E0 -1071F99E0:lI98|H1071FC920 -1071FC920:lI101|H1071FF9D8 -1071FF9D8:lI97|H107202B80 -107202B80:lI109|N -1071F2228:lH1071F4550|N -1071F4550:lI113|H1071F6D78 -1071F6D78:lI108|H1071F99D0 -1071F99D0:lI99|H1071FC910 -1071FC910:lI95|H1071FF9C8 -1071FF9C8:lI112|H107202B70 -107202B70:lI116|H107205DB0 -107205DB0:lI46|H107209068 -107209068:lI98|H10720C2D8 -10720C2D8:lI101|H10720F508 -10720F508:lI97|H107212808 -107212808:lI109|N -1071F0B58:Mn5:H1071F21C8,H1071F21D8,H1071F21E8,H1071F21F8,H1071F2208 -1071F21C8:lH1071F44F0|N -1071F44F0:lI105|H1071F6D18 -1071F6D18:lI111|H1071F9970 -1071F9970:lI95|H1071FC8B0 -1071FC8B0:lI108|H1071FF968 -1071FF968:lI105|H107202B10 -107202B10:lI98|H107205D50 -107205D50:lI95|H107209008 -107209008:lI102|H10720C278 -10720C278:lI111|H10720F4B8 -10720F4B8:lI114|H1072127B8 -1072127B8:lI109|H107215BB0 -107215BB0:lI97|H1072191C0 -1072191C0:lI116|H10721C8D0 -10721C8D0:lI46|H10721FF20 -10721FF20:lI98|H107223368 -107223368:lI101|H107226430 -107226430:lI97|H107229198 -107229198:lI109|N -1071F2208:lH1071F4530|N -1071F4530:lI103|H1071F6D58 -1071F6D58:lI101|H1071F99B0 -1071F99B0:lI110|H1071FC8F0 -1071FC8F0:lI95|H1071FF9A8 -1071FF9A8:lI115|H107202B50 -107202B50:lI101|H107205D90 -107205D90:lI114|H107209048 -107209048:lI118|H10720C2B8 -10720C2B8:lI101|H10720F4E8 -10720F4E8:lI114|H1072127E8 -1072127E8:lI46|H107215BE0 -107215BE0:lI98|H1072191F0 -1072191F0:lI101|H10721C8F0 -10721C8F0:lI97|H10721FF40 -10721FF40:lI109|N -1071F21F8:lH1071F4520|N -1071F4520:lI119|H1071F6D48 -1071F6D48:lI105|H1071F99A0 -1071F99A0:lI110|H1071FC8E0 -1071FC8E0:lI51|H1071FF998 -1071FF998:lI50|H107202B40 -107202B40:lI114|H107205D80 -107205D80:lI101|H107209038 -107209038:lI103|H10720C2A8 -10720C2A8:lI46|H10720F4D8 -10720F4D8:lI98|H1072127D8 -1072127D8:lI101|H107215BD0 -107215BD0:lI97|H1072191E0 -1072191E0:lI109|N -1071F21E8:lH1071F4510|N -1071F4510:lI111|H1071F6D38 -1071F6D38:lI116|H1071F9990 -1071F9990:lI112|H1071FC8D0 -1071FC8D0:lI95|H1071FF988 -1071FF988:lI105|H107202B30 -107202B30:lI110|H107205D70 -107205D70:lI116|H107209028 -107209028:lI101|H10720C298 -10720C298:lI114|H10720F4C8 -10720F4C8:lI110|H1072127C8 -1072127C8:lI97|H107215BC0 -107215BC0:lI108|H1072191D0 -1072191D0:lI46|H10721C8E0 -10721C8E0:lI98|H10721FF30 -10721FF30:lI101|H107223378 -107223378:lI97|H107226440 -107226440:lI109|N -1071F21D8:lH1071F4500|N -1071F4500:lI100|H1071F6D28 -1071F6D28:lI101|H1071F9980 -1071F9980:lI116|H1071FC8C0 -1071FC8C0:lI115|H1071FF978 -1071FF978:lI46|H107202B20 -107202B20:lI98|H107205D60 -107205D60:lI101|H107209018 -107209018:lI97|H10720C288 -10720C288:lI109|N -1071F0B30:Mn4:H1071F2188,H1071F2198,H1071F21A8,H1071F21B8 -1071F2188:lH1071F44B0|N -1071F44B0:lI101|H1071F6CD8 -1071F6CD8:lI114|H1071F9930 -1071F9930:lI108|H1071FC870 -1071FC870:lI95|H1071FF928 -1071FF928:lI112|H107202AD0 -107202AD0:lI112|H107205D10 -107205D10:lI46|H107208FC8 -107208FC8:lI98|H10720C238 -10720C238:lI101|H10720F478 -10720F478:lI97|H107212778 -107212778:lI109|N -1071F21B8:lH1071F44E0|N -1071F44E0:lI100|H1071F6D08 -1071F6D08:lI101|H1071F9960 -1071F9960:lI116|H1071FC8A0 -1071FC8A0:lI115|H1071FF958 -1071FF958:lI95|H107202B00 -107202B00:lI117|H107205D40 -107205D40:lI116|H107208FF8 -107208FF8:lI105|H10720C268 -10720C268:lI108|H10720F4A8 -10720F4A8:lI115|H1072127A8 -1072127A8:lI46|H107215BA0 -107215BA0:lI98|H1072191B0 -1072191B0:lI101|H10721C8C0 -10721C8C0:lI97|H10721FF10 -10721FF10:lI109|N -1071F21A8:lH1071F44D0|N -1071F44D0:lI105|H1071F6CF8 -1071F6CF8:lI111|H1071F9950 -1071F9950:lI95|H1071FC890 -1071FC890:lI108|H1071FF948 -1071FF948:lI105|H107202AF0 -107202AF0:lI98|H107205D30 -107205D30:lI95|H107208FE8 -107208FE8:lI112|H10720C258 -10720C258:lI114|H10720F498 -10720F498:lI101|H107212798 -107212798:lI116|H107215B90 -107215B90:lI116|H1072191A0 -1072191A0:lI121|H10721C8B0 -10721C8B0:lI46|H10721FF00 -10721FF00:lI98|H107223358 -107223358:lI101|H107226420 -107226420:lI97|H107229188 -107229188:lI109|N -1071F2198:lH1071F44C0|N -1071F44C0:lI101|H1071F6CE8 -1071F6CE8:lI114|H1071F9940 -1071F9940:lI108|H1071FC880 -1071FC880:lI95|H1071FF938 -1071FF938:lI102|H107202AE0 -107202AE0:lI101|H107205D20 -107205D20:lI97|H107208FD8 -107208FD8:lI116|H10720C248 -10720C248:lI117|H10720F488 -10720F488:lI114|H107212788 -107212788:lI101|H107215B80 -107215B80:lI115|H107219190 -107219190:lI46|H10721C8A0 -10721C8A0:lI98|H10721FEF0 -10721FEF0:lI101|H107223348 -107223348:lI97|H107226410 -107226410:lI109|N -1071F0AF0:Mn7:H1071F2108,H1071F2118,H1071F2128,H1071F2140,H1071F2150,H1071F2168,H1071F2178 -1071F2108:lH1071F4418|N -1071F4418:lI101|H1071F6C38 -1071F6C38:lI114|H1071F9890 -1071F9890:lI108|H1071FC7D0 -1071FC7D0:lI95|H1071FF888 -1071FF888:lI105|H107202A30 -107202A30:lI110|H107205C70 -107205C70:lI116|H107208F38 -107208F38:lI101|H10720C1A8 -10720C1A8:lI114|H10720F3F8 -10720F3F8:lI110|H1072126F8 -1072126F8:lI97|H107215B20 -107215B20:lI108|H107219150 -107219150:lI46|H10721C860 -10721C860:lI98|H10721FEB0 -10721FEB0:lI101|H107223328 -107223328:lI97|H1072263F0 -1072263F0:lI109|N -1071F2178:lH1071F44A0|N -1071F44A0:lI102|H1071F6CC8 -1071F6CC8:lI105|H1071F9920 -1071F9920:lI108|H1071FC860 -1071FC860:lI101|H1071FF918 -1071FF918:lI108|H107202AC0 -107202AC0:lI105|H107205D00 -107205D00:lI98|H107208FB8 -107208FB8:lI46|H10720C228 -10720C228:lI98|H10720F468 -10720F468:lI101|H107212768 -107212768:lI97|H107215B70 -107215B70:lI109|N -1071F2168:lH1071F4490|N -1071F4490:lI109|H1071F6CB8 -1071F6CB8:lI97|H1071F9910 -1071F9910:lI112|H1071FC850 -1071FC850:lI115|H1071FF908 -1071FF908:lI46|H107202AB0 -107202AB0:lI98|H107205CF0 -107205CF0:lI101|H107208FA8 -107208FA8:lI97|H10720C218 -10720C218:lI109|N -1071F2150:Mn2:H1071F4470,H1071F4480 -1071F4470:lH1071F6C98|N -1071F6C98:lI112|H1071F98F0 -1071F98F0:lI114|H1071FC830 -1071FC830:lI111|H1071FF8E8 -1071FF8E8:lI112|H107202A90 -107202A90:lI108|H107205CD0 -107205CD0:lI105|H107208F88 -107208F88:lI115|H10720C1F8 -10720C1F8:lI116|H10720F448 -10720F448:lI115|H107212748 -107212748:lI46|H107215B60 -107215B60:lI98|H107219180 -107219180:lI101|H10721C890 -10721C890:lI97|H10721FEE0 -10721FEE0:lI109|N -1071F4480:lH1071F6CA8|N -1071F6CA8:lI113|H1071F9900 -1071F9900:lI117|H1071FC840 -1071FC840:lI101|H1071FF8F8 -1071FF8F8:lI117|H107202AA0 -107202AA0:lI101|H107205CE0 -107205CE0:lI46|H107208F98 -107208F98:lI98|H10720C208 -10720C208:lI101|H10720F458 -10720F458:lI97|H107212758 -107212758:lI109|N -1071F2140:lH1071F4460|N -1071F4460:lI114|H1071F6C88 -1071F6C88:lI101|H1071F98E0 -1071F98E0:lI46|H1071FC820 -1071FC820:lI98|H1071FF8D8 -1071FF8D8:lI101|H107202A80 -107202A80:lI97|H107205CC0 -107205CC0:lI109|N -1071F2128:Mn2:H1071F4440,H1071F4450 -1071F4440:lH1071F6C68|N -1071F6C68:lI114|H1071F98C0 -1071F98C0:lI97|H1071FC800 -1071FC800:lI110|H1071FF8B8 -1071FF8B8:lI100|H107202A60 -107202A60:lI111|H107205CA0 -107205CA0:lI109|H107208F68 -107208F68:lI46|H10720C1D8 -10720C1D8:lI98|H10720F428 -10720F428:lI101|H107212728 -107212728:lI97|H107215B40 -107215B40:lI109|N -1071F4450:lH1071F6C78|N -1071F6C78:lI101|H1071F98D0 -1071F98D0:lI114|H1071FC810 -1071FC810:lI108|H1071FF8C8 -1071FF8C8:lI95|H107202A70 -107202A70:lI99|H107205CB0 -107205CB0:lI111|H107208F78 -107208F78:lI109|H10720C1E8 -10720C1E8:lI112|H10720F438 -10720F438:lI105|H107212738 -107212738:lI108|H107215B50 -107215B50:lI101|H107219170 -107219170:lI46|H10721C880 -10721C880:lI98|H10721FED0 -10721FED0:lI101|H107223338 -107223338:lI97|H107226400 -107226400:lI109|N -1071F2118:Mn1:H1071F4428 -1071F4428:Mn2:H1071F6C48,H1071F6C58 -1071F6C48:lH1071F98A0|N -1071F98A0:lI103|H1071FC7E0 -1071FC7E0:lI98|H1071FF898 -1071FF898:lI95|H107202A40 -107202A40:lI116|H107205C80 -107205C80:lI114|H107208F48 -107208F48:lI101|H10720C1B8 -10720C1B8:lI101|H10720F408 -10720F408:lI115|H107212708 -107212708:lI46|H107215B30 -107215B30:lI98|H107219160 -107219160:lI101|H10721C870 -10721C870:lI97|H10721FEC0 -10721FEC0:lI109|N -1071F6C58:lH1071F98B0|N -1071F98B0:lI112|H1071FC7F0 -1071FC7F0:lI101|H1071FF8A8 -1071FF8A8:lI101|H107202A50 -107202A50:lI114|H107205C90 -107205C90:lI46|H107208F58 -107208F58:lI98|H10720C1C8 -10720C1C8:lI101|H10720F418 -10720F418:lI97|H107212718 -107212718:lI109|N -1071F0AC8:Mn4:H1071F20B8,H1071F20C8,H1071F20E0,H1071F20F0 -1071F20B8:lH1071F43B8|N -1071F43B8:lI115|H1071F6BD8 -1071F6BD8:lI101|H1071F9830 -1071F9830:lI116|H1071FC770 -1071FC770:lI115|H1071FF828 -1071FF828:lI46|H1072029D0 -1072029D0:lI98|H107205C10 -107205C10:lI101|H107208ED8 -107208ED8:lI97|H10720C148 -10720C148:lI109|N -1071F20F0:Mn2:H1071F43F8,H1071F4408 -1071F43F8:lH1071F6C18|N -1071F6C18:lI108|H1071F9870 -1071F9870:lI111|H1071FC7B0 -1071FC7B0:lI103|H1071FF868 -1071FF868:lI95|H107202A10 -107202A10:lI109|H107205C50 -107205C50:lI102|H107208F18 -107208F18:lI95|H10720C188 -10720C188:lI104|H10720F3D8 -10720F3D8:lI46|H1072126D8 -1072126D8:lI98|H107215B10 -107215B10:lI101|H107219140 -107219140:lI97|H10721C850 -10721C850:lI109|N -1071F4408:lH1071F6C28|N -1071F6C28:lI108|H1071F9880 -1071F9880:lI105|H1071FC7C0 -1071FC7C0:lI115|H1071FF878 -1071FF878:lI116|H107202A20 -107202A20:lI115|H107205C60 -107205C60:lI46|H107208F28 -107208F28:lI98|H10720C198 -10720C198:lI101|H10720F3E8 -10720F3E8:lI97|H1072126E8 -1072126E8:lI109|N -1071F20E0:lH1071F43E8|N -1071F43E8:lI105|H1071F6C08 -1071F6C08:lI111|H1071F9860 -1071F9860:lI95|H1071FC7A0 -1071FC7A0:lI108|H1071FF858 -1071FF858:lI105|H107202A00 -107202A00:lI98|H107205C40 -107205C40:lI46|H107208F08 -107208F08:lI98|H10720C178 -10720C178:lI101|H10720F3C8 -10720F3C8:lI97|H1072126C8 -1072126C8:lI109|N -1071F20C8:Mn2:H1071F43C8,H1071F43D8 -1071F43C8:lH1071F6BE8|N -1071F6BE8:lI101|H1071F9840 -1071F9840:lI114|H1071FC780 -1071FC780:lI108|H1071FF838 -1071FF838:lI95|H1072029E0 -1072029E0:lI115|H107205C20 -107205C20:lI116|H107208EE8 -107208EE8:lI100|H10720C158 -10720C158:lI108|H10720F3A8 -10720F3A8:lI105|H1072126A8 -1072126A8:lI98|H107215AF0 -107215AF0:lI95|H107219120 -107219120:lI101|H10721C840 -10721C840:lI114|H10721FEA0 -10721FEA0:lI114|H107223318 -107223318:lI111|H1072263E0 -1072263E0:lI114|H107229178 -107229178:lI115|H10722BB20 -10722BB20:lI46|H10722E178 -10722E178:lI98|H107230530 -107230530:lI101|H107232658 -107232658:lI97|H107234480 -107234480:lI109|N -1071F43D8:lH1071F6BF8|N -1071F6BF8:lI111|H1071F9850 -1071F9850:lI114|H1071FC790 -1071FC790:lI100|H1071FF848 -1071FF848:lI100|H1072029F0 -1072029F0:lI105|H107205C30 -107205C30:lI99|H107208EF8 -107208EF8:lI116|H10720C168 -10720C168:lI46|H10720F3B8 -10720F3B8:lI98|H1072126B8 -1072126B8:lI101|H107215B00 -107215B00:lI97|H107219130 -107219130:lI109|N -1071F0A98:Mn5:H1071F2060,H1071F2070,H1071F2080,H1071F2098,H1071F20A8 -1071F2060:lH1071F4358|N -1071F4358:lI113|H1071F6B78 -1071F6B78:lI108|H1071F97D0 -1071F97D0:lI99|H1071FC710 -1071FC710:lI46|H1071FF7C8 -1071FF7C8:lI98|H107202970 -107202970:lI101|H107205BB0 -107205BB0:lI97|H107208E78 -107208E78:lI109|N -1071F20A8:lH1071F43A8|N -1071F43A8:lI115|H1071F6BC8 -1071F6BC8:lI117|H1071F9820 -1071F9820:lI112|H1071FC760 -1071FC760:lI101|H1071FF818 -1071FF818:lI114|H1072029C0 -1072029C0:lI118|H107205C00 -107205C00:lI105|H107208EC8 -107208EC8:lI115|H10720C138 -10720C138:lI111|H10720F398 -10720F398:lI114|H107212698 -107212698:lI95|H107215AE0 -107215AE0:lI98|H107219110 -107219110:lI114|H10721C830 -10721C830:lI105|H10721FE90 -10721FE90:lI100|H107223308 -107223308:lI103|H1072263D0 -1072263D0:lI101|H107229168 -107229168:lI46|H10722BB10 -10722BB10:lI98|H10722E168 -10722E168:lI101|H107230520 -107230520:lI97|H107232648 -107232648:lI109|N -1071F2098:lH1071F4398|N -1071F4398:lI101|H1071F6BB8 -1071F6BB8:lI114|H1071F9810 -1071F9810:lI108|H1071FC750 -1071FC750:lI95|H1071FF808 -1071FF808:lI108|H1072029B0 -1072029B0:lI105|H107205BF0 -107205BF0:lI110|H107208EB8 -107208EB8:lI116|H10720C128 -10720C128:lI46|H10720F388 -10720F388:lI98|H107212688 -107212688:lI101|H107215AD0 -107215AD0:lI97|H107219100 -107219100:lI109|N -1071F2080:Mn2:H1071F4378,H1071F4388 -1071F4378:lH1071F6B98|N -1071F6B98:lI101|H1071F97F0 -1071F97F0:lI114|H1071FC730 -1071FC730:lI108|H1071FF7E8 -1071FF7E8:lI95|H107202990 -107202990:lI115|H107205BD0 -107205BD0:lI99|H107208E98 -107208E98:lI97|H10720C108 -10720C108:lI110|H10720F368 -10720F368:lI46|H107212668 -107212668:lI98|H107215AC0 -107215AC0:lI101|H1072190F0 -1072190F0:lI97|H10721C820 -10721C820:lI109|N -1071F4388:lH1071F6BA8|N -1071F6BA8:lI115|H1071F9800 -1071F9800:lI104|H1071FC740 -1071FC740:lI101|H1071FF7F8 -1071FF7F8:lI108|H1072029A0 -1072029A0:lI108|H107205BE0 -107205BE0:lI46|H107208EA8 -107208EA8:lI98|H10720C118 -10720C118:lI101|H10720F378 -10720F378:lI97|H107212678 -107212678:lI109|N -1071F2070:lH1071F4368|N -1071F4368:lI101|H1071F6B88 -1071F6B88:lI114|H1071F97E0 -1071F97E0:lI108|H1071FC720 -1071FC720:lI95|H1071FF7D8 -1071FF7D8:lI112|H107202980 -107202980:lI111|H107205BC0 -107205BC0:lI115|H107208E88 -107208E88:lI105|H10720C0F8 -10720C0F8:lI120|H10720F358 -10720F358:lI95|H107212658 -107212658:lI109|H107215AB0 -107215AB0:lI115|H1072190E0 -1072190E0:lI103|H10721C810 -10721C810:lI46|H10721FE80 -10721FE80:lI98|H1072232F8 -1072232F8:lI101|H1072263C0 -1072263C0:lI97|H107229158 -107229158:lI109|N -1071F0A68:Mn5:H1071F2008,H1071F2018,H1071F2030,H1071F2040,H1071F2050 -1071F2008:lH1071F42F8|N -1071F42F8:lI98|H1071F6B18 -1071F6B18:lI101|H1071F9770 -1071F9770:lI97|H1071FC6B0 -1071FC6B0:lI109|H1071FF768 -1071FF768:lI95|H107202910 -107202910:lI108|H107205B50 -107205B50:lI105|H107208E18 -107208E18:lI98|H10720C0A8 -10720C0A8:lI46|H10720F318 -10720F318:lI98|H107212628 -107212628:lI101|H107215A90 -107215A90:lI97|H1072190C0 -1072190C0:lI109|N -1071F2050:lH1071F4348|N -1071F4348:lI112|H1071F6B68 -1071F6B68:lI111|H1071F97C0 -1071F97C0:lI111|H1071FC700 -1071FC700:lI108|H1071FF7B8 -1071FF7B8:lI46|H107202960 -107202960:lI98|H107205BA0 -107205BA0:lI101|H107208E68 -107208E68:lI97|H10720C0E8 -10720C0E8:lI109|N -1071F2040:lH1071F4338|N -1071F4338:lI98|H1071F6B58 -1071F6B58:lI97|H1071F97B0 -1071F97B0:lI115|H1071FC6F0 -1071FC6F0:lI101|H1071FF7A8 -1071FF7A8:lI54|H107202950 -107202950:lI52|H107205B90 -107205B90:lI46|H107208E58 -107208E58:lI98|H10720C0D8 -10720C0D8:lI101|H10720F348 -10720F348:lI97|H107212648 -107212648:lI109|N -1071F2030:lH1071F4328|N -1071F4328:lI103|H1071F6B48 -1071F6B48:lI101|H1071F97A0 -1071F97A0:lI110|H1071FC6E0 -1071FC6E0:lI46|H1071FF798 -1071FF798:lI98|H107202940 -107202940:lI101|H107205B80 -107205B80:lI97|H107208E48 -107208E48:lI109|N -1071F2018:Mn2:H1071F4308,H1071F4318 -1071F4308:lH1071F6B28|N -1071F6B28:lI101|H1071F9780 -1071F9780:lI114|H1071FC6C0 -1071FC6C0:lI108|H1071FF778 -1071FF778:lI95|H107202920 -107202920:lI101|H107205B60 -107205B60:lI114|H107208E28 -107208E28:lI114|H10720C0B8 -10720C0B8:lI111|H10720F328 -10720F328:lI114|H107212638 -107212638:lI46|H107215AA0 -107215AA0:lI98|H1072190D0 -1072190D0:lI101|H10721C800 -10721C800:lI97|H10721FE70 -10721FE70:lI109|N -1071F4318:lH1071F6B38|N -1071F6B38:lI109|H1071F9790 -1071F9790:lI97|H1071FC6D0 -1071FC6D0:lI116|H1071FF788 -1071FF788:lI104|H107202930 -107202930:lI46|H107205B70 -107205B70:lI98|H107208E38 -107208E38:lI101|H10720C0C8 -10720C0C8:lI97|H10720F338 -10720F338:lI109|N -1071F0A38:Mn5:H1071F1FB0,H1071F1FC8,H1071F1FD8,H1071F1FE8,H1071F1FF8 -1071F1FB0:Mn2:H1071F4298,H1071F42A8 -1071F4298:lH1071F6AB8|N -1071F6AB8:lI115|H1071F9710 -1071F9710:lI104|H1071FC650 -1071FC650:lI101|H1071FF708 -1071FF708:lI108|H1072028B0 -1072028B0:lI108|H107205AF0 -107205AF0:lI95|H107208DB8 -107208DB8:lI100|H10720C048 -10720C048:lI101|H10720F2C8 -10720F2C8:lI102|H1072125D8 -1072125D8:lI97|H107215A40 -107215A40:lI117|H107219080 -107219080:lI108|H10721C7D0 -10721C7D0:lI116|H10721FE40 -10721FE40:lI46|H1072232C8 -1072232C8:lI98|H1072263A0 -1072263A0:lI101|H107229138 -107229138:lI97|H10722BB00 -10722BB00:lI109|N -1071F42A8:lH1071F6AC8|N -1071F6AC8:lI115|H1071F9720 -1071F9720:lI104|H1071FC660 -1071FC660:lI101|H1071FF718 -1071FF718:lI108|H1072028C0 -1072028C0:lI108|H107205B00 -107205B00:lI95|H107208DC8 -107208DC8:lI100|H10720C058 -10720C058:lI111|H10720F2D8 -10720F2D8:lI99|H1072125E8 -1072125E8:lI115|H107215A50 -107215A50:lI46|H107219090 -107219090:lI98|H10721C7E0 -10721C7E0:lI101|H10721FE50 -10721FE50:lI97|H1072232D8 -1072232D8:lI109|N -1071F1FF8:lH1071F42E8|N -1071F42E8:lI100|H1071F6B08 -1071F6B08:lI105|H1071F9760 -1071F9760:lI103|H1071FC6A0 -1071FC6A0:lI114|H1071FF758 -1071FF758:lI97|H107202900 -107202900:lI112|H107205B40 -107205B40:lI104|H107208E08 -107208E08:lI95|H10720C098 -10720C098:lI117|H10720F308 -10720F308:lI116|H107212618 -107212618:lI105|H107215A80 -107215A80:lI108|H1072190B0 -1072190B0:lI115|H10721C7F0 -10721C7F0:lI46|H10721FE60 -10721FE60:lI98|H1072232E8 -1072232E8:lI101|H1072263B0 -1072263B0:lI97|H107229148 -107229148:lI109|N -1071F1FE8:lH1071F42D8|N -1071F42D8:lI101|H1071F6AF8 -1071F6AF8:lI115|H1071F9750 -1071F9750:lI99|H1071FC690 -1071FC690:lI114|H1071FF748 -1071FF748:lI105|H1072028F0 -1072028F0:lI112|H107205B30 -107205B30:lI116|H107208DF8 -107208DF8:lI46|H10720C088 -10720C088:lI98|H10720F2F8 -10720F2F8:lI101|H107212608 -107212608:lI97|H107215A70 -107215A70:lI109|N -1071F1FD8:lH1071F42C8|N -1071F42C8:lI100|H1071F6AE8 -1071F6AE8:lI105|H1071F9740 -1071F9740:lI99|H1071FC680 -1071FC680:lI116|H1071FF738 -1071FF738:lI46|H1072028E0 -1072028E0:lI98|H107205B20 -107205B20:lI101|H107208DE8 -107208DE8:lI97|H10720C078 -10720C078:lI109|N -1071F1FC8:lH1071F42B8|N -1071F42B8:lI101|H1071F6AD8 -1071F6AD8:lI114|H1071F9730 -1071F9730:lI108|H1071FC670 -1071FC670:lI95|H1071FF728 -1071FF728:lI97|H1072028D0 -1072028D0:lI110|H107205B10 -107205B10:lI110|H107208DD8 -107208DD8:lI111|H10720C068 -10720C068:lI46|H10720F2E8 -10720F2E8:lI98|H1072125F8 -1072125F8:lI101|H107215A60 -107215A60:lI97|H1072190A0 -1072190A0:lI109|N -1071F0A28:lH1071F1FA0|N -1071F1FA0:lI103|H1071F4288 -1071F4288:lI101|H1071F6AA8 -1071F6AA8:lI110|H1071F9700 -1071F9700:lI95|H1071FC640 -1071FC640:lI102|H1071FF6F8 -1071FF6F8:lI115|H1072028A0 -1072028A0:lI109|H107205AE0 -107205AE0:lI46|H107208DA8 -107208DA8:lI98|H10720C038 -10720C038:lI101|H10720F2B8 -10720F2B8:lI97|H1072125C8 -1072125C8:lI109|N -1071F0A08:Mn3:H1071F1F70,H1071F1F80,H1071F1F90 -1071F1F70:lH1071F4258|N -1071F4258:lI100|H1071F6A78 -1071F6A78:lI101|H1071F96D0 -1071F96D0:lI116|H1071FC610 -1071FC610:lI115|H1071FF6C8 -1071FF6C8:lI95|H107202870 -107202870:lI118|H107205AB0 -107205AB0:lI57|H107208D78 -107208D78:lI46|H10720C018 -10720C018:lI98|H10720F298 -10720F298:lI101|H1072125A8 -1072125A8:lI97|H107215A20 -107215A20:lI109|N -1071F1F90:lH1071F4278|N -1071F4278:lI102|H1071F6A98 -1071F6A98:lI105|H1071F96F0 -1071F96F0:lI108|H1071FC630 -1071FC630:lI101|H1071FF6E8 -1071FF6E8:lI110|H107202890 -107202890:lI97|H107205AD0 -107205AD0:lI109|H107208D98 -107208D98:lI101|H10720C028 -10720C028:lI46|H10720F2A8 -10720F2A8:lI98|H1072125B8 -1072125B8:lI101|H107215A30 -107215A30:lI97|H107219070 -107219070:lI109|N -1071F1F80:lH1071F4268|N -1071F4268:lI101|H1071F6A88 -1071F6A88:lI116|H1071F96E0 -1071F96E0:lI115|H1071FC620 -1071FC620:lI46|H1071FF6D8 -1071FF6D8:lI98|H107202880 -107202880:lI101|H107205AC0 -107205AC0:lI97|H107208D88 -107208D88:lI109|N -1071F09C8:Mn7:H1071F1F00,H1071F1F10,H1071F1F20,H1071F1F30,H1071F1F40,H1071F1F50,H1071F1F60 -1071F1F00:lH1071F41E8|N -1071F41E8:lI101|H1071F6A08 -1071F6A08:lI114|H1071F9660 -1071F9660:lI114|H1071FC5A0 -1071FC5A0:lI111|H1071FF658 -1071FF658:lI114|H107202800 -107202800:lI95|H107205A40 -107205A40:lI108|H107208D18 -107208D18:lI111|H10720BFC8 -10720BFC8:lI103|H10720F248 -10720F248:lI103|H107212568 -107212568:lI101|H1072159F0 -1072159F0:lI114|H107219050 -107219050:lI95|H10721C7B0 -10721C7B0:lI102|H10721FE20 -10721FE20:lI105|H1072232A8 -1072232A8:lI108|H107226390 -107226390:lI101|H107229128 -107229128:lI95|H10722BAF0 -10722BAF0:lI104|H10722E158 -10722E158:lI46|H107230510 -107230510:lI98|H107232638 -107232638:lI101|H107234470 -107234470:lI97|H107235FB8 -107235FB8:lI109|N -1071F1F60:lH1071F4248|N -1071F4248:lI115|H1071F6A68 -1071F6A68:lI116|H1071F96C0 -1071F96C0:lI114|H1071FC600 -1071FC600:lI105|H1071FF6B8 -1071FF6B8:lI110|H107202860 -107202860:lI103|H107205AA0 -107205AA0:lI46|H107208D68 -107208D68:lI98|H10720C008 -10720C008:lI101|H10720F288 -10720F288:lI97|H107212598 -107212598:lI109|N -1071F1F50:lH1071F4238|N -1071F4238:lI122|H1071F6A58 -1071F6A58:lI105|H1071F96B0 -1071F96B0:lI112|H1071FC5F0 -1071FC5F0:lI46|H1071FF6A8 -1071FF6A8:lI98|H107202850 -107202850:lI101|H107205A90 -107205A90:lI97|H107208D58 -107208D58:lI109|N -1071F1F40:lH1071F4228|N -1071F4228:lI97|H1071F6A48 -1071F6A48:lI114|H1071F96A0 -1071F96A0:lI114|H1071FC5E0 -1071FC5E0:lI97|H1071FF698 -1071FF698:lI121|H107202840 -107202840:lI46|H107205A80 -107205A80:lI98|H107208D48 -107208D48:lI101|H10720BFF8 -10720BFF8:lI97|H10720F278 -10720F278:lI109|N -1071F1F30:lH1071F4218|N -1071F4218:lI105|H1071F6A38 -1071F6A38:lI111|H1071F9690 -1071F9690:lI46|H1071FC5D0 -1071FC5D0:lI98|H1071FF688 -1071FF688:lI101|H107202830 -107202830:lI97|H107205A70 -107205A70:lI109|N -1071F1F20:lH1071F4208|N -1071F4208:lI100|H1071F6A28 -1071F6A28:lI101|H1071F9680 -1071F9680:lI116|H1071FC5C0 -1071FC5C0:lI115|H1071FF678 -1071FF678:lI95|H107202820 -107202820:lI115|H107205A60 -107205A60:lI101|H107208D38 -107208D38:lI114|H10720BFE8 -10720BFE8:lI118|H10720F268 -10720F268:lI101|H107212588 -107212588:lI114|H107215A10 -107215A10:lI46|H107219060 -107219060:lI98|H10721C7C0 -10721C7C0:lI101|H10721FE30 -10721FE30:lI97|H1072232B8 -1072232B8:lI109|N -1071F1F10:lH1071F41F8|N -1071F41F8:lI115|H1071F6A18 -1071F6A18:lI116|H1071F9670 -1071F9670:lI100|H1071FC5B0 -1071FC5B0:lI108|H1071FF668 -1071FF668:lI105|H107202810 -107202810:lI98|H107205A50 -107205A50:lI46|H107208D28 -107208D28:lI97|H10720BFD8 -10720BFD8:lI112|H10720F258 -10720F258:lI112|H107212578 -107212578:lI117|H107215A00 -107215A00:lI112|N -1071F0140:lI47|H1071F0998 -1071F0998:lI111|H1071F1EC0 -1071F1EC0:lI112|H1071F41A8 -1071F41A8:lI116|H1071F69C8 -1071F69C8:lI47|H1071F9620 -1071F9620:lI104|H1071FC560 -1071FC560:lI111|H1071FF618 -1071FF618:lI109|H1072027C0 -1072027C0:lI101|H107205A00 -107205A00:lI98|H107208CD8 -107208CD8:lI114|H10720BF88 -10720BF88:lI101|H10720F208 -10720F208:lI119|H107212528 -107212528:lI47|H1072159B0 -1072159B0:lI67|H107219020 -107219020:lI101|H10721C780 -10721C780:lI108|H10721FE00 -10721FE00:lI108|H107223288 -107223288:lI97|H107226370 -107226370:lI114|H107229108 -107229108:lI47|H10722BAD0 -10722BAD0:lI101|H10722E138 -10722E138:lI114|H1072304F0 -1072304F0:lI108|H107232618 -107232618:lI97|H107234450 -107234450:lI110|H107235F98 -107235F98:lI103|H107237830 -107237830:lI47|H107238EB8 -107238EB8:lI50|H10723A390 -10723A390:lI54|H10723B6D0 -10723B6D0:lI46|H10723C7A0 -10723C7A0:lI48|H10723D660 -10723D660:lI46|H10723E3E0 -10723E3E0:lI50|H10723EFF0 -10723EFF0:lI47|H10723FAC0 -10723FAC0:lI108|H107240410 -107240410:lI105|H107240C90 -107240C90:lI98|H107241420 -107241420:lI47|H107241B50 -107241B50:lI101|H107242220 -107242220:lI114|H107242890 -107242890:lI108|H107242E90 -107242E90:lI97|H107243400 -107243400:lI110|H107243940 -107243940:lI103|H107243E30 -107243E30:lI47|H107244320 -107244320:lI108|H1072447D0 -1072447D0:lI105|H107244C40 -107244C40:lI98|H1072450A0 -1072450A0:lI47|H1072454F0 -1072454F0:lI115|H1072458F0 -1072458F0:lI116|H107245CB0 -107245CB0:lI100|H107246040 -107246040:lI108|H1072463D0 -1072463D0:lI105|H107246760 -107246760:lI98|H107246AF0 -107246AF0:lI45|H107246E30 -107246E30:lI53|H107247150 -107247150:lI46|H107247470 -107247470:lI48|H107247780 -107247780:lI46|H107247A80 -107247A80:lI50|H107247D70 -107247D70:lI47|H107248050 -107248050:lI101|H107248310 -107248310:lI98|H1072485D0 -1072485D0:lI105|H107248880 -107248880:lI110|N -10724AE50:lH10724AEC8|H10724AEE0 -10724AEC8:t2:H1071F0200,H1071F0210 -1071F0210:Mh23:F:H1071F0CD8,H1071F0CE8,H1071F0D00,H1071F0D18,H1071F0D28,H1071F0D38,H1071F0D58,H1071F0D70,H1071F0D88,H1071F0DA8,H1071F0DC0,H1071F0DE0,H1071F0E00,H1071F0E10,H1071F0E30 -1071F0CD8:lH1071F2458|N -1071F2458:lI120|H1071F47A0 -1071F47A0:lI109|H1071F6FC8 -1071F6FC8:lI101|H1071F9C20 -1071F9C20:lI114|H1071FCB60 -1071FCB60:lI108|H1071FFC18 -1071FFC18:lI95|H107202DC0 -107202DC0:lI120|H107205FF0 -107205FF0:lI112|H1072092A8 -1072092A8:lI97|H10720C508 -10720C508:lI116|H10720F728 -10720F728:lI104|H1072129D8 -1072129D8:lI95|H107215DA0 -107215DA0:lI112|H107219380 -107219380:lI114|H10721CA10 -10721CA10:lI101|H107220050 -107220050:lI100|H107223448 -107223448:lI46|H107226500 -107226500:lI98|H107229228 -107229228:lI101|H10722BB90 -10722BB90:lI97|H10722E1E8 -10722E1E8:lI109|N -1071F0E30:Mn4:H1071F2638,H1071F2648,H1071F2658,H1071F2668 -1071F2638:lH1071F4990|N -1071F4990:lI120|H1071F71B8 -1071F71B8:lI109|H1071F9E10 -1071F9E10:lI101|H1071FCD50 -1071FCD50:lI114|H1071FFE08 -1071FFE08:lI108|H107202FB0 -107202FB0:lI95|H1072061E0 -1072061E0:lI101|H107209498 -107209498:lI118|H10720C6F8 -10720C6F8:lI101|H10720F908 -10720F908:lI110|H107212BA8 -107212BA8:lI116|H107215F70 -107215F70:lI112|H107219550 -107219550:lI46|H10721CBC0 -10721CBC0:lI98|H1072201D0 -1072201D0:lI101|H107223588 -107223588:lI97|H107226620 -107226620:lI109|N -1071F2668:lH1071F49C0|N -1071F49C0:lI120|H1071F71E8 -1071F71E8:lI109|H1071F9E40 -1071F9E40:lI101|H1071FCD80 -1071FCD80:lI114|H1071FFE38 -1071FFE38:lI108|H107202FE0 -107202FE0:lI46|H107206210 -107206210:lI98|H1072094C8 -1072094C8:lI101|H10720C728 -10720C728:lI97|H10720F938 -10720F938:lI109|N -1071F2658:lH1071F49B0|N -1071F49B0:lI120|H1071F71D8 -1071F71D8:lI109|H1071F9E30 -1071F9E30:lI101|H1071FCD70 -1071FCD70:lI114|H1071FFE28 -1071FFE28:lI108|H107202FD0 -107202FD0:lI95|H107206200 -107206200:lI115|H1072094B8 -1072094B8:lI97|H10720C718 -10720C718:lI120|H10720F928 -10720F928:lI95|H107212BC8 -107212BC8:lI115|H107215F90 -107215F90:lI105|H107219570 -107219570:lI109|H10721CBE0 -10721CBE0:lI112|H1072201F0 -1072201F0:lI108|H107223598 -107223598:lI101|H107226630 -107226630:lI95|H107229328 -107229328:lI100|H10722BC70 -10722BC70:lI111|H10722E2B8 -10722E2B8:lI109|H107230640 -107230640:lI46|H107232738 -107232738:lI98|H107234530 -107234530:lI101|H107236058 -107236058:lI97|H1072378D0 -1072378D0:lI109|N -1071F2648:lH1071F49A0|N -1071F49A0:lI120|H1071F71C8 -1071F71C8:lI109|H1071F9E20 -1071F9E20:lI101|H1071FCD60 -1071FCD60:lI114|H1071FFE18 -1071FFE18:lI108|H107202FC0 -107202FC0:lI95|H1072061F0 -1072061F0:lI104|H1072094A8 -1072094A8:lI116|H10720C708 -10720C708:lI109|H10720F918 -10720F918:lI108|H107212BB8 -107212BB8:lI46|H107215F80 -107215F80:lI98|H107219560 -107219560:lI101|H10721CBD0 -10721CBD0:lI97|H1072201E0 -1072201E0:lI109|N -1071F0E10:Mn3:H1071F2608,H1071F2618,H1071F2628 -1071F2608:lH1071F4960|N -1071F4960:lI120|H1071F7188 -1071F7188:lI109|H1071F9DE0 -1071F9DE0:lI101|H1071FCD20 -1071FCD20:lI114|H1071FFDD8 -1071FFDD8:lI108|H107202F80 -107202F80:lI95|H1072061B0 -1072061B0:lI117|H107209468 -107209468:lI114|H10720C6C8 -10720C6C8:lI105|H10720F8D8 -10720F8D8:lI46|H107212B78 -107212B78:lI98|H107215F40 -107215F40:lI101|H107219520 -107219520:lI97|H10721CB90 -10721CB90:lI109|N -1071F2628:lH1071F4980|N -1071F4980:lI120|H1071F71A8 -1071F71A8:lI109|H1071F9E00 -1071F9E00:lI101|H1071FCD40 -1071FCD40:lI114|H1071FFDF8 -1071FFDF8:lI108|H107202FA0 -107202FA0:lI95|H1072061D0 -1072061D0:lI120|H107209488 -107209488:lI112|H10720C6E8 -10720C6E8:lI97|H10720F8F8 -10720F8F8:lI116|H107212B98 -107212B98:lI104|H107215F60 -107215F60:lI95|H107219540 -107219540:lI115|H10721CBB0 -10721CBB0:lI99|H1072201C0 -1072201C0:lI97|H107223578 -107223578:lI110|H107226610 -107226610:lI46|H107229318 -107229318:lI98|H10722BC60 -10722BC60:lI101|H10722E2A8 -10722E2A8:lI97|H107230630 -107230630:lI109|N -1071F2618:lH1071F4970|N -1071F4970:lI120|H1071F7198 -1071F7198:lI109|H1071F9DF0 -1071F9DF0:lI101|H1071FCD30 -1071FCD30:lI114|H1071FFDE8 -1071FFDE8:lI108|H107202F90 -107202F90:lI95|H1072061C0 -1072061C0:lI115|H107209478 -107209478:lI103|H10720C6D8 -10720C6D8:lI109|H10720F8E8 -10720F8E8:lI108|H107212B88 -107212B88:lI46|H107215F50 -107215F50:lI98|H107219530 -107219530:lI101|H10721CBA0 -10721CBA0:lI97|H1072201B0 -1072201B0:lI109|N -1071F0E00:lH1071F25F8|N -1071F25F8:lI120|H1071F4950 -1071F4950:lI109|H1071F7178 -1071F7178:lI101|H1071F9DD0 -1071F9DD0:lI114|H1071FCD10 -1071FCD10:lI108|H1071FFDC8 -1071FFDC8:lI46|H107202F70 -107202F70:lI97|H1072061A0 -1072061A0:lI112|H107209458 -107209458:lI112|H10720C6B8 -10720C6B8:lI117|H10720F8C8 -10720F8C8:lI112|N -1071F0DE0:Mn3:H1071F25C0,H1071F25D8,H1071F25E8 -1071F25C0:Mn2:H1071F4910,H1071F4920 -1071F4910:lH1071F7138|N -1071F7138:lI120|H1071F9D90 -1071F9D90:lI109|H1071FCCD0 -1071FCCD0:lI101|H1071FFD88 -1071FFD88:lI114|H107202F30 -107202F30:lI108|H107206160 -107206160:lI95|H107209418 -107209418:lI118|H10720C678 -10720C678:lI97|H10720F888 -10720F888:lI108|H107212B38 -107212B38:lI105|H107215F00 -107215F00:lI100|H1072194E0 -1072194E0:lI97|H10721CB60 -10721CB60:lI116|H107220180 -107220180:lI101|H107223548 -107223548:lI46|H1072265E0 -1072265E0:lI98|H1072292F8 -1072292F8:lI101|H10722BC50 -10722BC50:lI97|H10722E298 -10722E298:lI109|N -1071F4920:lH1071F7148|N -1071F7148:lI120|H1071F9DA0 -1071F9DA0:lI109|H1071FCCE0 -1071FCCE0:lI101|H1071FFD98 -1071FFD98:lI114|H107202F40 -107202F40:lI108|H107206170 -107206170:lI95|H107209428 -107209428:lI114|H10720C688 -10720C688:lI101|H10720F898 -10720F898:lI103|H107212B48 -107212B48:lI101|H107215F10 -107215F10:lI120|H1072194F0 -1072194F0:lI112|H10721CB70 -10721CB70:lI46|H107220190 -107220190:lI98|H107223558 -107223558:lI101|H1072265F0 -1072265F0:lI97|H107229308 -107229308:lI109|N -1071F25E8:lH1071F4940|N -1071F4940:lI120|H1071F7168 -1071F7168:lI109|H1071F9DC0 -1071F9DC0:lI101|H1071FCD00 -1071FCD00:lI114|H1071FFDB8 -1071FFDB8:lI108|H107202F60 -107202F60:lI95|H107206190 -107206190:lI98|H107209448 -107209448:lI54|H10720C6A8 -10720C6A8:lI52|H10720F8B8 -10720F8B8:lI66|H107212B68 -107212B68:lI105|H107215F30 -107215F30:lI110|H107219510 -107219510:lI46|H10721CB80 -10721CB80:lI98|H1072201A0 -1072201A0:lI101|H107223568 -107223568:lI97|H107226600 -107226600:lI109|N -1071F25D8:lH1071F4930|N -1071F4930:lI120|H1071F7158 -1071F7158:lI109|H1071F9DB0 -1071F9DB0:lI101|H1071FCCF0 -1071FCCF0:lI114|H1071FFDA8 -1071FFDA8:lI108|H107202F50 -107202F50:lI95|H107206180 -107206180:lI120|H107209438 -107209438:lI115|H10720C698 -10720C698:lI46|H10720F8A8 -10720F8A8:lI98|H107212B58 -107212B58:lI101|H107215F20 -107215F20:lI97|H107219500 -107219500:lI109|N -1071F0DC0:Mn3:H1071F2590,H1071F25A0,H1071F25B0 -1071F2590:lH1071F48E0|N -1071F48E0:lI120|H1071F7108 -1071F7108:lI109|H1071F9D60 -1071F9D60:lI101|H1071FCCA0 -1071FCCA0:lI114|H1071FFD58 -1071FFD58:lI108|H107202F00 -107202F00:lI95|H107206130 -107206130:lI115|H1072093E8 -1072093E8:lI97|H10720C648 -10720C648:lI120|H10720F858 -10720F858:lI95|H107212B08 -107212B08:lI112|H107215ED0 -107215ED0:lI97|H1072194B0 -1072194B0:lI114|H10721CB30 -10721CB30:lI115|H107220150 -107220150:lI101|H107223518 -107223518:lI114|H1072265B0 -1072265B0:lI95|H1072292C8 -1072292C8:lI108|H10722BC20 -10722BC20:lI105|H10722E268 -10722E268:lI115|H107230610 -107230610:lI116|H107232728 -107232728:lI46|H107234520 -107234520:lI98|H107236048 -107236048:lI101|H1072378C0 -1072378C0:lI97|H107238F48 -107238F48:lI109|N -1071F25B0:lH1071F4900|N -1071F4900:lI120|H1071F7128 -1071F7128:lI109|H1071F9D80 -1071F9D80:lI101|H1071FCCC0 -1071FCCC0:lI114|H1071FFD78 -1071FFD78:lI108|H107202F20 -107202F20:lI95|H107206150 -107206150:lI120|H107209408 -107209408:lI112|H10720C668 -10720C668:lI97|H10720F878 -10720F878:lI116|H107212B28 -107212B28:lI104|H107215EF0 -107215EF0:lI95|H1072194D0 -1072194D0:lI108|H10721CB50 -10721CB50:lI105|H107220170 -107220170:lI98|H107223538 -107223538:lI46|H1072265D0 -1072265D0:lI98|H1072292E8 -1072292E8:lI101|H10722BC40 -10722BC40:lI97|H10722E288 -10722E288:lI109|N -1071F25A0:lH1071F48F0|N -1071F48F0:lI120|H1071F7118 -1071F7118:lI109|H1071F9D70 -1071F9D70:lI101|H1071FCCB0 -1071FCCB0:lI114|H1071FFD68 -1071FFD68:lI108|H107202F10 -107202F10:lI95|H107206140 -107206140:lI115|H1072093F8 -1072093F8:lI97|H10720C658 -10720C658:lI120|H10720F868 -10720F868:lI95|H107212B18 -107212B18:lI112|H107215EE0 -107215EE0:lI97|H1072194C0 -1072194C0:lI114|H10721CB40 -10721CB40:lI115|H107220160 -107220160:lI101|H107223528 -107223528:lI114|H1072265C0 -1072265C0:lI46|H1072292D8 -1072292D8:lI98|H10722BC30 -10722BC30:lI101|H10722E278 -10722E278:lI97|H107230620 -107230620:lI109|N -1071F0DA8:Mn2:H1071F2568,H1071F2578 -1071F2568:lH1071F48B0|N -1071F48B0:lI120|H1071F70D8 -1071F70D8:lI109|H1071F9D30 -1071F9D30:lI101|H1071FCC70 -1071FCC70:lI114|H1071FFD28 -1071FFD28:lI108|H107202ED0 -107202ED0:lI95|H107206100 -107206100:lI120|H1072093B8 -1072093B8:lI115|H10720C618 -10720C618:lI100|H10720F828 -10720F828:lI95|H107212AD8 -107212AD8:lI116|H107215EA0 -107215EA0:lI121|H107219480 -107219480:lI112|H10721CB00 -10721CB00:lI101|H107220120 -107220120:lI46|H1072234F8 -1072234F8:lI98|H107226590 -107226590:lI101|H1072292A8 -1072292A8:lI97|H10722BC00 -10722BC00:lI109|N -1071F2578:Mn2:H1071F48C0,H1071F48D0 -1071F48C0:lH1071F70E8|N -1071F70E8:lI120|H1071F9D40 -1071F9D40:lI109|H1071FCC80 -1071FCC80:lI101|H1071FFD38 -1071FFD38:lI114|H107202EE0 -107202EE0:lI108|H107206110 -107206110:lI95|H1072093C8 -1072093C8:lI108|H10720C628 -10720C628:lI105|H10720F838 -10720F838:lI98|H107212AE8 -107212AE8:lI46|H107215EB0 -107215EB0:lI98|H107219490 -107219490:lI101|H10721CB10 -10721CB10:lI97|H107220130 -107220130:lI109|N -1071F48D0:lH1071F70F8|N -1071F70F8:lI120|H1071F9D50 -1071F9D50:lI109|H1071FCC90 -1071FCC90:lI101|H1071FFD48 -1071FFD48:lI114|H107202EF0 -107202EF0:lI108|H107206120 -107206120:lI95|H1072093D8 -1072093D8:lI115|H10720C638 -10720C638:lI97|H10720F848 -10720F848:lI120|H107212AF8 -107212AF8:lI95|H107215EC0 -107215EC0:lI112|H1072194A0 -1072194A0:lI97|H10721CB20 -10721CB20:lI114|H107220140 -107220140:lI115|H107223508 -107223508:lI101|H1072265A0 -1072265A0:lI114|H1072292B8 -1072292B8:lI95|H10722BC10 -10722BC10:lI117|H10722E258 -10722E258:lI116|H107230600 -107230600:lI102|H107232718 -107232718:lI56|H107234510 -107234510:lI46|H107236038 -107236038:lI98|H1072378B0 -1072378B0:lI101|H107238F38 -107238F38:lI97|H10723A400 -10723A400:lI109|N -1071F0D88:Mn3:H1071F2538,H1071F2548,H1071F2558 -1071F2538:lH1071F4880|N -1071F4880:lI120|H1071F70A8 -1071F70A8:lI109|H1071F9D00 -1071F9D00:lI101|H1071FCC40 -1071FCC40:lI114|H1071FFCF8 -1071FFCF8:lI108|H107202EA0 -107202EA0:lI46|H1072060D0 -1072060D0:lI97|H107209388 -107209388:lI112|H10720C5E8 -10720C5E8:lI112|N -1071F2558:lH1071F48A0|N -1071F48A0:lI120|H1071F70C8 -1071F70C8:lI109|H1071F9D20 -1071F9D20:lI101|H1071FCC60 -1071FCC60:lI114|H1071FFD18 -1071FFD18:lI108|H107202EC0 -107202EC0:lI95|H1072060F0 -1072060F0:lI117|H1072093A8 -1072093A8:lI99|H10720C608 -10720C608:lI115|H10720F818 -10720F818:lI46|H107212AC8 -107212AC8:lI98|H107215E90 -107215E90:lI101|H107219470 -107219470:lI97|H10721CAF0 -10721CAF0:lI109|N -1071F2548:lH1071F4890|N -1071F4890:lI120|H1071F70B8 -1071F70B8:lI109|H1071F9D10 -1071F9D10:lI101|H1071FCC50 -1071FCC50:lI114|H1071FFD08 -1071FFD08:lI108|H107202EB0 -107202EB0:lI95|H1072060E0 -1072060E0:lI115|H107209398 -107209398:lI97|H10720C5F8 -10720C5F8:lI120|H10720F808 -10720F808:lI95|H107212AB8 -107212AB8:lI112|H107215E80 -107215E80:lI97|H107219460 -107219460:lI114|H10721CAE0 -10721CAE0:lI115|H107220110 -107220110:lI101|H1072234E8 -1072234E8:lI114|H107226580 -107226580:lI95|H107229298 -107229298:lI117|H10722BBF0 -10722BBF0:lI116|H10722E248 -10722E248:lI102|H1072305F0 -1072305F0:lI49|H107232708 -107232708:lI54|H107234500 -107234500:lI98|H107236028 -107236028:lI101|H1072378A0 -1072378A0:lI46|H107238F28 -107238F28:lI98|H10723A3F0 -10723A3F0:lI101|H10723B730 -10723B730:lI97|H10723C7F0 -10723C7F0:lI109|N -1071F0D70:Mn2:H1071F2518,H1071F2528 -1071F2518:lH1071F4860|N -1071F4860:lI120|H1071F7088 -1071F7088:lI109|H1071F9CE0 -1071F9CE0:lI101|H1071FCC20 -1071FCC20:lI114|H1071FFCD8 -1071FFCD8:lI108|H107202E80 -107202E80:lI95|H1072060B0 -1072060B0:lI120|H107209368 -107209368:lI112|H10720C5C8 -10720C5C8:lI97|H10720F7E8 -10720F7E8:lI116|H107212A98 -107212A98:lI104|H107215E60 -107215E60:lI46|H107219440 -107219440:lI98|H10721CAC0 -10721CAC0:lI101|H1072200F0 -1072200F0:lI97|H1072234C8 -1072234C8:lI109|N -1071F2528:lH1071F4870|N -1071F4870:lI120|H1071F7098 -1071F7098:lI109|H1071F9CF0 -1071F9CF0:lI101|H1071FCC30 -1071FCC30:lI114|H1071FFCE8 -1071FFCE8:lI108|H107202E90 -107202E90:lI95|H1072060C0 -1072060C0:lI120|H107209378 -107209378:lI112|H10720C5D8 -10720C5D8:lI97|H10720F7F8 -10720F7F8:lI116|H107212AA8 -107212AA8:lI104|H107215E70 -107215E70:lI95|H107219450 -107219450:lI112|H10721CAD0 -10721CAD0:lI97|H107220100 -107220100:lI114|H1072234D8 -1072234D8:lI115|H107226570 -107226570:lI101|H107229288 -107229288:lI46|H10722BBE0 -10722BBE0:lI98|H10722E238 -10722E238:lI101|H1072305E0 -1072305E0:lI97|H1072326F8 -1072326F8:lI109|N -1071F0D58:Mn2:H1071F24F8,H1071F2508 -1071F24F8:lH1071F4840|N -1071F4840:lI120|H1071F7068 -1071F7068:lI109|H1071F9CC0 -1071F9CC0:lI101|H1071FCC00 -1071FCC00:lI114|H1071FFCB8 -1071FFCB8:lI108|H107202E60 -107202E60:lI95|H107206090 -107206090:lI120|H107209348 -107209348:lI109|H10720C5A8 -10720C5A8:lI108|H10720F7C8 -10720F7C8:lI46|H107212A78 -107212A78:lI98|H107215E40 -107215E40:lI101|H107219420 -107219420:lI97|H10721CAA0 -10721CAA0:lI109|N -1071F2508:lH1071F4850|N -1071F4850:lI120|H1071F7078 -1071F7078:lI109|H1071F9CD0 -1071F9CD0:lI101|H1071FCC10 -1071FCC10:lI114|H1071FFCC8 -1071FFCC8:lI108|H107202E70 -107202E70:lI95|H1072060A0 -1072060A0:lI116|H107209358 -107209358:lI101|H10720C5B8 -10720C5B8:lI120|H10720F7D8 -10720F7D8:lI116|H107212A88 -107212A88:lI46|H107215E50 -107215E50:lI98|H107219430 -107219430:lI101|H10721CAB0 -10721CAB0:lI97|H1072200E0 -1072200E0:lI109|N -1071F0D38:Mn3:H1071F24C8,H1071F24D8,H1071F24E8 -1071F24C8:lH1071F4810|N -1071F4810:lI120|H1071F7038 -1071F7038:lI109|H1071F9C90 -1071F9C90:lI101|H1071FCBD0 -1071FCBD0:lI114|H1071FFC88 -1071FFC88:lI108|H107202E30 -107202E30:lI95|H107206060 -107206060:lI115|H107209318 -107209318:lI97|H10720C578 -10720C578:lI120|H10720F798 -10720F798:lI95|H107212A48 -107212A48:lI112|H107215E10 -107215E10:lI97|H1072193F0 -1072193F0:lI114|H10721CA70 -10721CA70:lI115|H1072200B0 -1072200B0:lI101|H107223498 -107223498:lI114|H107226540 -107226540:lI95|H107229258 -107229258:lI108|H10722BBC0 -10722BBC0:lI97|H10722E218 -10722E218:lI116|H1072305C0 -1072305C0:lI105|H1072326D8 -1072326D8:lI110|H1072344E0 -1072344E0:lI49|H107236008 -107236008:lI46|H107237880 -107237880:lI98|H107238F08 -107238F08:lI101|H10723A3D0 -10723A3D0:lI97|H10723B710 -10723B710:lI109|N -1071F24E8:lH1071F4830|N -1071F4830:lI120|H1071F7058 -1071F7058:lI109|H1071F9CB0 -1071F9CB0:lI101|H1071FCBF0 -1071FCBF0:lI114|H1071FFCA8 -1071FFCA8:lI108|H107202E50 -107202E50:lI95|H107206080 -107206080:lI111|H107209338 -107209338:lI116|H10720C598 -10720C598:lI112|H10720F7B8 -10720F7B8:lI115|H107212A68 -107212A68:lI103|H107215E30 -107215E30:lI109|H107219410 -107219410:lI108|H10721CA90 -10721CA90:lI46|H1072200D0 -1072200D0:lI98|H1072234B8 -1072234B8:lI101|H107226560 -107226560:lI97|H107229278 -107229278:lI109|N -1071F24D8:lH1071F4820|N -1071F4820:lI120|H1071F7048 -1071F7048:lI109|H1071F9CA0 -1071F9CA0:lI101|H1071FCBE0 -1071FCBE0:lI114|H1071FFC98 -1071FFC98:lI108|H107202E40 -107202E40:lI95|H107206070 -107206070:lI115|H107209328 -107209328:lI97|H10720C588 -10720C588:lI120|H10720F7A8 -10720F7A8:lI95|H107212A58 -107212A58:lI112|H107215E20 -107215E20:lI97|H107219400 -107219400:lI114|H10721CA80 -10721CA80:lI115|H1072200C0 -1072200C0:lI101|H1072234A8 -1072234A8:lI114|H107226550 -107226550:lI95|H107229268 -107229268:lI117|H10722BBD0 -10722BBD0:lI116|H10722E228 -10722E228:lI102|H1072305D0 -1072305D0:lI49|H1072326E8 -1072326E8:lI54|H1072344F0 -1072344F0:lI108|H107236018 -107236018:lI101|H107237890 -107237890:lI46|H107238F18 -107238F18:lI98|H10723A3E0 -10723A3E0:lI101|H10723B720 -10723B720:lI97|H10723C7E0 -10723C7E0:lI109|N -1071F0D28:lH1071F24B8|N -1071F24B8:lI120|H1071F4800 -1071F4800:lI109|H1071F7028 -1071F7028:lI101|H1071F9C80 -1071F9C80:lI114|H1071FCBC0 -1071FCBC0:lI108|H1071FFC78 -1071FFC78:lI95|H107202E20 -107202E20:lI115|H107206050 -107206050:lI97|H107209308 -107209308:lI120|H10720C568 -10720C568:lI95|H10720F788 -10720F788:lI111|H107212A38 -107212A38:lI108|H107215E00 -107215E00:lI100|H1072193E0 -1072193E0:lI95|H10721CA60 -10721CA60:lI100|H1072200A0 -1072200A0:lI111|H107223488 -107223488:lI109|H107226530 -107226530:lI46|H107229248 -107229248:lI98|H10722BBB0 -10722BBB0:lI101|H10722E208 -10722E208:lI97|H1072305B0 -1072305B0:lI109|N -1071F0D18:lH1071F24A8|N -1071F24A8:lI120|H1071F47F0 -1071F47F0:lI109|H1071F7018 -1071F7018:lI101|H1071F9C70 -1071F9C70:lI114|H1071FCBB0 -1071FCBB0:lI108|H1071FFC68 -1071FFC68:lI95|H107202E10 -107202E10:lI120|H107206040 -107206040:lI115|H1072092F8 -1072092F8:lI100|H10720C558 -10720C558:lI46|H10720F778 -10720F778:lI98|H107212A28 -107212A28:lI101|H107215DF0 -107215DF0:lI97|H1072193D0 -1072193D0:lI109|N -1071F0D00:Mn2:H1071F2488,H1071F2498 -1071F2488:lH1071F47D0|N -1071F47D0:lI120|H1071F6FF8 -1071F6FF8:lI109|H1071F9C50 -1071F9C50:lI101|H1071FCB90 -1071FCB90:lI114|H1071FFC48 -1071FFC48:lI108|H107202DF0 -107202DF0:lI95|H107206020 -107206020:lI115|H1072092D8 -1072092D8:lI105|H10720C538 -10720C538:lI109|H10720F758 -10720F758:lI112|H107212A08 -107212A08:lI108|H107215DD0 -107215DD0:lI101|H1072193B0 -1072193B0:lI46|H10721CA40 -10721CA40:lI98|H107220080 -107220080:lI101|H107223468 -107223468:lI97|H107226510 -107226510:lI109|N -1071F2498:lH1071F47E0|N -1071F47E0:lI120|H1071F7008 -1071F7008:lI109|H1071F9C60 -1071F9C60:lI101|H1071FCBA0 -1071FCBA0:lI114|H1071FFC58 -1071FFC58:lI108|H107202E00 -107202E00:lI95|H107206030 -107206030:lI98|H1072092E8 -1072092E8:lI54|H10720C548 -10720C548:lI52|H10720F768 -10720F768:lI66|H107212A18 -107212A18:lI105|H107215DE0 -107215DE0:lI110|H1072193C0 -1072193C0:lI95|H10721CA50 -10721CA50:lI115|H107220090 -107220090:lI99|H107223478 -107223478:lI97|H107226520 -107226520:lI110|H107229238 -107229238:lI46|H10722BBA0 -10722BBA0:lI98|H10722E1F8 -10722E1F8:lI101|H1072305A0 -1072305A0:lI97|H1072326C8 -1072326C8:lI109|N -1071F0CE8:Mn2:H1071F2468,H1071F2478 -1071F2468:lH1071F47B0|N -1071F47B0:lI120|H1071F6FD8 -1071F6FD8:lI109|H1071F9C30 -1071F9C30:lI101|H1071FCB70 -1071FCB70:lI114|H1071FFC28 -1071FFC28:lI108|H107202DD0 -107202DD0:lI95|H107206000 -107206000:lI120|H1072092B8 -1072092B8:lI108|H10720C518 -10720C518:lI97|H10720F738 -10720F738:lI116|H1072129E8 -1072129E8:lI101|H107215DB0 -107215DB0:lI46|H107219390 -107219390:lI98|H10721CA20 -10721CA20:lI101|H107220060 -107220060:lI97|H107223458 -107223458:lI109|N -1071F2478:lH1071F47C0|N -1071F47C0:lI120|H1071F6FE8 -1071F6FE8:lI109|H1071F9C40 -1071F9C40:lI101|H1071FCB80 -1071FCB80:lI114|H1071FFC38 -1071FFC38:lI108|H107202DE0 -107202DE0:lI95|H107206010 -107206010:lI115|H1072092C8 -1072092C8:lI99|H10720C528 -10720C528:lI97|H10720F748 -10720F748:lI110|H1072129F8 -1072129F8:lI46|H107215DC0 -107215DC0:lI98|H1072193A0 -1072193A0:lI101|H10721CA30 -10721CA30:lI97|H107220070 -107220070:lI109|N -1071F0200:lI47|H1071F0CC8 -1071F0CC8:lI111|H1071F2448 -1071F2448:lI112|H1071F4790 -1071F4790:lI116|H1071F6FB8 -1071F6FB8:lI47|H1071F9C10 -1071F9C10:lI104|H1071FCB50 -1071FCB50:lI111|H1071FFC08 -1071FFC08:lI109|H107202DB0 -107202DB0:lI101|H107205FE0 -107205FE0:lI98|H107209298 -107209298:lI114|H10720C4F8 -10720C4F8:lI101|H10720F718 -10720F718:lI119|H1072129C8 -1072129C8:lI47|H107215D90 -107215D90:lI67|H107219370 -107219370:lI101|H10721CA00 -10721CA00:lI108|H107220040 -107220040:lI108|H107223438 -107223438:lI97|H1072264F0 -1072264F0:lI114|H107229218 -107229218:lI47|H10722BB80 -10722BB80:lI101|H10722E1D8 -10722E1D8:lI114|H107230590 -107230590:lI108|H1072326B8 -1072326B8:lI97|H1072344D0 -1072344D0:lI110|H107235FF8 -107235FF8:lI103|H107237870 -107237870:lI47|H107238EF8 -107238EF8:lI50|H10723A3C0 -10723A3C0:lI54|H10723B700 -10723B700:lI46|H10723C7D0 -10723C7D0:lI48|H10723D690 -10723D690:lI46|H10723E410 -10723E410:lI50|H10723F020 -10723F020:lI47|H10723FAF0 -10723FAF0:lI108|H107240440 -107240440:lI105|H107240CC0 -107240CC0:lI98|H107241450 -107241450:lI47|H107241B80 -107241B80:lI101|H107242250 -107242250:lI114|H1072428C0 -1072428C0:lI108|H107242EC0 -107242EC0:lI97|H107243430 -107243430:lI110|H107243970 -107243970:lI103|H107243E60 -107243E60:lI47|H107244350 -107244350:lI108|H107244800 -107244800:lI105|H107244C70 -107244C70:lI98|H1072450D0 -1072450D0:lI47|H107245520 -107245520:lI120|H107245920 -107245920:lI109|H107245CE0 -107245CE0:lI101|H107246070 -107246070:lI114|H107246400 -107246400:lI108|H107246790 -107246790:lI45|H107246B20 -107246B20:lI49|H107246E60 -107246E60:lI46|H107247180 -107247180:lI51|H1072474A0 -1072474A0:lI46|H1072477B0 -1072477B0:lI51|H107247AB0 -107247AB0:lI50|H107247DA0 -107247DA0:lI47|H280052C20 -10724AEE0:lH10724AF38|H10724AF50 -10724AF38:t2:H1071F02B8,H1071F02C8 -1071F02C8:MhF3:10:H1071F0E88,H1071F0EF8,H1071F0F50,H1071F0FA0,H1071F1000,H1071F1050,H1071F10B0,H1071F1130,H1071F1190,H1071F11E8,H1071F1238,H1071F12A0,H1071F12E8,H1071F1328,H1071F1370,H1071F13C8 -1071F0E88:MnD:H1071F26A8,H1071F26B8,H1071F26C8,H1071F26D8,H1071F26E8,H1071F2700,H1071F2710,H1071F2720,H1071F2738,H1071F2748,H1071F2760,H1071F2780,H1071F2790 -1071F26A8:lH1071F4A00|N -1071F4A00:lI119|H1071F7228 -1071F7228:lI120|H1071F9E80 -1071F9E80:lI65|H1071FCDC0 -1071FCDC0:lI117|H1071FFE78 -1071FFE78:lI105|H107203020 -107203020:lI68|H107206250 -107206250:lI111|H107209508 -107209508:lI99|H10720C768 -10720C768:lI107|H10720F978 -10720F978:lI65|H107212C08 -107212C08:lI114|H107215FD0 -107215FD0:lI116|H1072195B0 -1072195B0:lI46|H10721CC20 -10721CC20:lI98|H107220230 -107220230:lI101|H1072235D8 -1072235D8:lI97|H107226670 -107226670:lI109|N -1071F2790:Mn2:H1071F4B10,H1071F4B20 -1071F4B10:lH1071F7338|N -1071F7338:lI119|H1071F9F90 -1071F9F90:lI120|H1071FCED0 -1071FCED0:lI70|H1071FFF88 -1071FFF88:lI105|H107203130 -107203130:lI108|H107206360 -107206360:lI101|H107209618 -107209618:lI68|H10720C878 -10720C878:lI105|H10720FA88 -10720FA88:lI97|H107212D18 -107212D18:lI108|H1072160D0 -1072160D0:lI111|H1072196A0 -1072196A0:lI103|H10721CD10 -10721CD10:lI46|H107220310 -107220310:lI98|H1072236B8 -1072236B8:lI101|H107226730 -107226730:lI97|H1072293F8 -1072293F8:lI109|N -1071F4B20:lH1071F7348|N -1071F7348:lI119|H1071F9FA0 -1071F9FA0:lI120|H1071FCEE0 -1071FCEE0:lI81|H1071FFF98 -1071FFF98:lI117|H107203140 -107203140:lI101|H107206370 -107206370:lI114|H107209628 -107209628:lI121|H10720C888 -10720C888:lI78|H10720FA98 -10720FA98:lI101|H107212D28 -107212D28:lI119|H1072160E0 -1072160E0:lI80|H1072196B0 -1072196B0:lI97|H10721CD20 -10721CD20:lI108|H107220320 -107220320:lI101|H1072236C8 -1072236C8:lI116|H107226740 -107226740:lI116|H107229408 -107229408:lI101|H10722BD30 -10722BD30:lI69|H10722E368 -10722E368:lI118|H1072306D0 -1072306D0:lI101|H1072327C8 -1072327C8:lI110|H107234590 -107234590:lI116|H1072360B8 -1072360B8:lI46|H107237930 -107237930:lI98|H107238F98 -107238F98:lI101|H10723A440 -10723A440:lI97|H10723B770 -10723B770:lI109|N -1071F2780:lH1071F4B00|N -1071F4B00:lI119|H1071F7328 -1071F7328:lI120|H1071F9F80 -1071F9F80:lI83|H1071FCEC0 -1071FCEC0:lI97|H1071FFF78 -1071FFF78:lI115|H107203120 -107203120:lI104|H107206350 -107206350:lI87|H107209608 -107209608:lI105|H10720C868 -10720C868:lI110|H10720FA78 -10720FA78:lI100|H107212D08 -107212D08:lI111|H1072160C0 -1072160C0:lI119|H107219690 -107219690:lI46|H10721CD00 -10721CD00:lI98|H107220300 -107220300:lI101|H1072236A8 -1072236A8:lI97|H107226720 -107226720:lI109|N -1071F2760:Mn3:H1071F4AD0,H1071F4AE0,H1071F4AF0 -1071F4AD0:lH1071F72F8|N -1071F72F8:lI119|H1071F9F50 -1071F9F50:lI120|H1071FCE90 -1071FCE90:lI80|H1071FFF48 -1071FFF48:lI111|H1072030F0 -1072030F0:lI115|H107206320 -107206320:lI116|H1072095D8 -1072095D8:lI83|H10720C838 -10720C838:lI99|H10720FA48 -10720FA48:lI114|H107212CD8 -107212CD8:lI105|H107216090 -107216090:lI112|H107219660 -107219660:lI116|H10721CCD0 -10721CCD0:lI68|H1072202E0 -1072202E0:lI67|H107223688 -107223688:lI46|H107226700 -107226700:lI98|H1072293D8 -1072293D8:lI101|H10722BD10 -10722BD10:lI97|H10722E348 -10722E348:lI109|N -1071F4AF0:lH1071F7318|N -1071F7318:lI119|H1071F9F70 -1071F9F70:lI120|H1071FCEB0 -1071FCEB0:lI87|H1071FFF68 -1071FFF68:lI105|H107203110 -107203110:lI110|H107206340 -107206340:lI100|H1072095F8 -1072095F8:lI111|H10720C858 -10720C858:lI119|H10720FA68 -10720FA68:lI67|H107212CF8 -107212CF8:lI114|H1072160B0 -1072160B0:lI101|H107219680 -107219680:lI97|H10721CCF0 -10721CCF0:lI116|H1072202F0 -1072202F0:lI101|H107223698 -107223698:lI69|H107226710 -107226710:lI118|H1072293E8 -1072293E8:lI101|H10722BD20 -10722BD20:lI110|H10722E358 -10722E358:lI116|H1072306C0 -1072306C0:lI46|H1072327B8 -1072327B8:lI98|H107234580 -107234580:lI101|H1072360A8 -1072360A8:lI97|H107237920 -107237920:lI109|N -1071F4AE0:lH1071F7308|N -1071F7308:lI119|H1071F9F60 -1071F9F60:lI120|H1071FCEA0 -1071FCEA0:lI67|H1071FFF58 -1071FFF58:lI117|H107203100 -107203100:lI114|H107206330 -107206330:lI115|H1072095E8 -1072095E8:lI111|H10720C848 -10720C848:lI114|H10720FA58 -10720FA58:lI46|H107212CE8 -107212CE8:lI98|H1072160A0 -1072160A0:lI101|H107219670 -107219670:lI97|H10721CCE0 -10721CCE0:lI109|N -1071F2748:Mn2:H1071F4AB0,H1071F4AC0 -1071F4AB0:lH1071F72D8|N -1071F72D8:lI119|H1071F9F30 -1071F9F30:lI120|H1071FCE70 -1071FCE70:lI71|H1071FFF28 -1071FFF28:lI114|H1072030D0 -1072030D0:lI97|H107206300 -107206300:lI112|H1072095B8 -1072095B8:lI104|H10720C818 -10720C818:lI105|H10720FA28 -10720FA28:lI99|H107212CB8 -107212CB8:lI115|H107216070 -107216070:lI80|H107219640 -107219640:lI101|H10721CCB0 -10721CCB0:lI110|H1072202C0 -1072202C0:lI46|H107223668 -107223668:lI98|H1072266F0 -1072266F0:lI101|H1072293C8 -1072293C8:lI97|H10722BD00 -10722BD00:lI109|N -1071F4AC0:lH1071F72E8|N -1071F72E8:lI119|H1071F9F40 -1071F9F40:lI120|H1071FCE80 -1071FCE80:lI70|H1071FFF38 -1071FFF38:lI111|H1072030E0 -1072030E0:lI110|H107206310 -107206310:lI116|H1072095C8 -1072095C8:lI68|H10720C828 -10720C828:lI97|H10720FA38 -10720FA38:lI116|H107212CC8 -107212CC8:lI97|H107216080 -107216080:lI46|H107219650 -107219650:lI98|H10721CCC0 -10721CCC0:lI101|H1072202D0 -1072202D0:lI97|H107223678 -107223678:lI109|N -1071F2738:lH1071F4AA0|N -1071F4AA0:lI119|H1071F72C8 -1071F72C8:lI120|H1071F9F20 -1071F9F20:lI80|H1071FCE60 -1071FCE60:lI114|H1071FFF18 -1071FFF18:lI105|H1072030C0 -1072030C0:lI110|H1072062F0 -1072062F0:lI116|H1072095A8 -1072095A8:lI68|H10720C808 -10720C808:lI105|H10720FA18 -10720FA18:lI97|H107212CA8 -107212CA8:lI108|H107216060 -107216060:lI111|H107219630 -107219630:lI103|H10721CCA0 -10721CCA0:lI68|H1072202B0 -1072202B0:lI97|H107223658 -107223658:lI116|H1072266E0 -1072266E0:lI97|H1072293B8 -1072293B8:lI46|H10722BCF0 -10722BCF0:lI98|H10722E338 -10722E338:lI101|H1072306B0 -1072306B0:lI97|H1072327A8 -1072327A8:lI109|N -1071F2720:Mn2:H1071F4A80,H1071F4A90 -1071F4A80:lH1071F72A8|N -1071F72A8:lI119|H1071F9F00 -1071F9F00:lI120|H1071FCE40 -1071FCE40:lI83|H1071FFEF8 -1071FFEF8:lI116|H1072030A0 -1072030A0:lI97|H1072062D0 -1072062D0:lI116|H107209588 -107209588:lI105|H10720C7E8 -10720C7E8:lI99|H10720F9F8 -10720F9F8:lI66|H107212C88 -107212C88:lI111|H107216040 -107216040:lI120|H107219610 -107219610:lI83|H10721CC80 -10721CC80:lI105|H107220290 -107220290:lI122|H107223638 -107223638:lI101|H1072266C0 -1072266C0:lI114|H107229398 -107229398:lI46|H10722BCD0 -10722BCD0:lI98|H10722E318 -10722E318:lI101|H107230690 -107230690:lI97|H107232788 -107232788:lI109|N -1071F4A90:lH1071F72B8|N -1071F72B8:lI119|H1071F9F10 -1071F9F10:lI120|H1071FCE50 -1071FCE50:lI83|H1071FFF08 -1071FFF08:lI101|H1072030B0 -1072030B0:lI116|H1072062E0 -1072062E0:lI67|H107209598 -107209598:lI117|H10720C7F8 -10720C7F8:lI114|H10720FA08 -10720FA08:lI115|H107212C98 -107212C98:lI111|H107216050 -107216050:lI114|H107219620 -107219620:lI69|H10721CC90 -10721CC90:lI118|H1072202A0 -1072202A0:lI101|H107223648 -107223648:lI110|H1072266D0 -1072266D0:lI116|H1072293A8 -1072293A8:lI46|H10722BCE0 -10722BCE0:lI98|H10722E328 -10722E328:lI101|H1072306A0 -1072306A0:lI97|H107232798 -107232798:lI109|N -1071F2710:lH1071F4A70|N -1071F4A70:lI119|H1071F7298 -1071F7298:lI120|H1071F9EF0 -1071F9EF0:lI80|H1071FCE30 -1071FCE30:lI97|H1071FFEE8 -1071FFEE8:lI103|H107203090 -107203090:lI101|H1072062C0 -1072062C0:lI83|H107209578 -107209578:lI101|H10720C7D8 -10720C7D8:lI116|H10720F9E8 -10720F9E8:lI117|H107212C78 -107212C78:lI112|H107216030 -107216030:lI68|H107219600 -107219600:lI105|H10721CC70 -10721CC70:lI97|H107220280 -107220280:lI108|H107223628 -107223628:lI111|H1072266B0 -1072266B0:lI103|H107229388 -107229388:lI68|H10722BCC0 -10722BCC0:lI97|H10722E308 -10722E308:lI116|H107230680 -107230680:lI97|H107232778 -107232778:lI46|H107234570 -107234570:lI98|H107236098 -107236098:lI101|H107237910 -107237910:lI97|H107238F88 -107238F88:lI109|N -1071F2700:lH1071F4A60|N -1071F4A60:lI119|H1071F7288 -1071F7288:lI120|H1071F9EE0 -1071F9EE0:lI71|H1071FCE20 -1071FCE20:lI66|H1071FFED8 -1071FFED8:lI83|H107203080 -107203080:lI105|H1072062B0 -1072062B0:lI122|H107209568 -107209568:lI101|H10720C7C8 -10720C7C8:lI114|H10720F9D8 -10720F9D8:lI73|H107212C68 -107212C68:lI116|H107216020 -107216020:lI101|H1072195F0 -1072195F0:lI109|H10721CC60 -10721CC60:lI46|H107220270 -107220270:lI98|H107223618 -107223618:lI101|H1072266A0 -1072266A0:lI97|H107229378 -107229378:lI109|N -1071F26E8:Mn2:H1071F4A40,H1071F4A50 -1071F4A40:lH1071F7268|N -1071F7268:lI119|H1071F9EC0 -1071F9EC0:lI120|H1071FCE00 -1071FCE00:lI71|H1071FFEB8 -1071FFEB8:lI114|H107203060 -107203060:lI105|H107206290 -107206290:lI100|H107209548 -107209548:lI46|H10720C7A8 -10720C7A8:lI98|H10720F9B8 -10720F9B8:lI101|H107212C48 -107212C48:lI97|H107216000 -107216000:lI109|N -1071F4A50:lH1071F7278|N -1071F7278:lI119|H1071F9ED0 -1071F9ED0:lI120|H1071FCE10 -1071FCE10:lI68|H1071FFEC8 -1071FFEC8:lI105|H107203070 -107203070:lI114|H1072062A0 -1072062A0:lI68|H107209558 -107209558:lI105|H10720C7B8 -10720C7B8:lI97|H10720F9C8 -10720F9C8:lI108|H107212C58 -107212C58:lI111|H107216010 -107216010:lI103|H1072195E0 -1072195E0:lI46|H10721CC50 -10721CC50:lI98|H107220260 -107220260:lI101|H107223608 -107223608:lI97|H107226690 -107226690:lI109|N -1071F26D8:lH1071F4A30|N -1071F4A30:lI119|H1071F7258 -1071F7258:lI120|H1071F9EB0 -1071F9EB0:lI83|H1071FCDF0 -1071FCDF0:lI116|H1071FFEA8 -1071FFEA8:lI97|H107203050 -107203050:lI116|H107206280 -107206280:lI117|H107209538 -107209538:lI115|H10720C798 -10720C798:lI66|H10720F9A8 -10720F9A8:lI97|H107212C38 -107212C38:lI114|H107215FF0 -107215FF0:lI46|H1072195D0 -1072195D0:lI98|H10721CC40 -10721CC40:lI101|H107220250 -107220250:lI97|H1072235F8 -1072235F8:lI109|N -1071F26C8:lH1071F4A20|N -1071F4A20:lI119|H1071F7248 -1071F7248:lI120|H1071F9EA0 -1071F9EA0:lI83|H1071FCDE0 -1071FCDE0:lI121|H1071FFE98 -1071FFE98:lI115|H107203040 -107203040:lI116|H107206270 -107206270:lI101|H107209528 -107209528:lI109|H10720C788 -10720C788:lI79|H10720F998 -10720F998:lI112|H107212C28 -107212C28:lI116|H107215FE0 -107215FE0:lI105|H1072195C0 -1072195C0:lI111|H10721CC30 -10721CC30:lI110|H107220240 -107220240:lI115|H1072235E8 -1072235E8:lI46|H107226680 -107226680:lI98|H107229368 -107229368:lI101|H10722BCB0 -10722BCB0:lI97|H10722E2F8 -10722E2F8:lI109|N -1071F26B8:lH1071F4A10|N -1071F4A10:lI119|H1071F7238 -1071F7238:lI120|H1071F9E90 -1071F9E90:lI77|H1071FCDD0 -1071FCDD0:lI101|H1071FFE88 -1071FFE88:lI110|H107203030 -107203030:lI117|H107206260 -107206260:lI46|H107209518 -107209518:lI98|H10720C778 -10720C778:lI101|H10720F988 -10720F988:lI97|H107212C18 -107212C18:lI109|N -1071F13C8:Mn8:H1071F3270,H1071F3288,H1071F3298,H1071F32A8,H1071F32B8,H1071F32C8,H1071F32D8,H1071F32E8 -1071F3270:Mn2:H1071F5838,H1071F5848 -1071F5838:lH1071F8098|N -1071F8098:lI119|H1071FACF0 -1071FACF0:lI120|H1071FDC30 -1071FDC30:lI80|H107200CE8 -107200CE8:lI97|H107203E90 -107203E90:lI108|H1072070C0 -1072070C0:lI101|H10720A348 -10720A348:lI116|H10720D5A8 -10720D5A8:lI116|H107210798 -107210798:lI101|H107213A08 -107213A08:lI67|H107216DC0 -107216DC0:lI104|H10721A330 -10721A330:lI97|H10721D900 -10721D900:lI110|H107220E50 -107220E50:lI103|H1072240E8 -1072240E8:lI101|H107227030 -107227030:lI100|H107229BB8 -107229BB8:lI69|H10722C3F0 -10722C3F0:lI118|H10722E938 -10722E938:lI101|H107230BC0 -107230BC0:lI110|H107232BC8 -107232BC8:lI116|H1072348B0 -1072348B0:lI46|H1072362E8 -1072362E8:lI98|H107237AB0 -107237AB0:lI101|H1072390D8 -1072390D8:lI97|H10723A570 -10723A570:lI109|N -1071F5848:lH1071F80A8|N -1071F80A8:lI119|H1071FAD00 -1071FAD00:lI120|H1071FDC40 -1071FDC40:lI77|H107200CF8 -107200CF8:lI111|H107203EA0 -107203EA0:lI117|H1072070D0 -1072070D0:lI115|H10720A358 -10720A358:lI101|H10720D5B8 -10720D5B8:lI69|H1072107A8 -1072107A8:lI118|H107213A18 -107213A18:lI101|H107216DD0 -107216DD0:lI110|H10721A340 -10721A340:lI116|H10721D910 -10721D910:lI46|H107220E60 -107220E60:lI98|H1072240F8 -1072240F8:lI101|H107227040 -107227040:lI97|H107229BC8 -107229BC8:lI109|N -1071F32E8:Mn3:H1071F58C0,H1071F58D0,H1071F58E0 -1071F58C0:lH1071F8128|N -1071F8128:lI119|H1071FAD80 -1071FAD80:lI120|H1071FDCC0 -1071FDCC0:lI80|H107200D78 -107200D78:lI114|H107203F20 -107203F20:lI111|H107207150 -107207150:lI103|H10720A3D8 -10720A3D8:lI114|H10720D638 -10720D638:lI101|H107210828 -107210828:lI115|H107213A98 -107213A98:lI115|H107216E50 -107216E50:lI68|H10721A3C0 -10721A3C0:lI105|H10721D990 -10721D990:lI97|H107220EE0 -107220EE0:lI108|H107224148 -107224148:lI111|H107227090 -107227090:lI103|H107229BF8 -107229BF8:lI46|H10722C420 -10722C420:lI98|H10722E968 -10722E968:lI101|H107230BF0 -107230BF0:lI97|H107232BE8 -107232BE8:lI109|N -1071F58E0:lH1071F8148|N -1071F8148:lI119|H1071FADA0 -1071FADA0:lI120|H1071FDCE0 -1071FDCE0:lI66|H107200D98 -107200D98:lI114|H107203F40 -107203F40:lI117|H107207170 -107207170:lI115|H10720A3F8 -10720A3F8:lI104|H10720D658 -10720D658:lI46|H107210848 -107210848:lI98|H107213AB8 -107213AB8:lI101|H107216E70 -107216E70:lI97|H10721A3E0 -10721A3E0:lI109|N -1071F58D0:lH1071F8138|N -1071F8138:lI119|H1071FAD90 -1071FAD90:lI120|H1071FDCD0 -1071FDCD0:lI76|H107200D88 -107200D88:lI105|H107203F30 -107203F30:lI115|H107207160 -107207160:lI116|H10720A3E8 -10720A3E8:lI73|H10720D648 -10720D648:lI116|H107210838 -107210838:lI101|H107213AA8 -107213AA8:lI109|H107216E60 -107216E60:lI65|H10721A3D0 -10721A3D0:lI116|H10721D9A0 -10721D9A0:lI116|H107220EF0 -107220EF0:lI114|H107224158 -107224158:lI46|H1072270A0 -1072270A0:lI98|H107229C08 -107229C08:lI101|H10722C430 -10722C430:lI97|H10722E978 -10722E978:lI109|N -1071F32D8:Mn1:H1071F58A8 -1071F58A8:Mn2:H1071F8108,H1071F8118 -1071F8108:lH1071FAD60|N -1071FAD60:lI119|H1071FDCA0 -1071FDCA0:lI120|H107200D58 -107200D58:lI87|H107203F00 -107203F00:lI105|H107207130 -107207130:lI110|H10720A3B8 -10720A3B8:lI100|H10720D618 -10720D618:lI111|H107210808 -107210808:lI119|H107213A78 -107213A78:lI68|H107216E30 -107216E30:lI67|H10721A3A0 -10721A3A0:lI46|H10721D970 -10721D970:lI98|H107220EC0 -107220EC0:lI101|H107224138 -107224138:lI97|H107227080 -107227080:lI109|N -1071F8118:lH1071FAD70|N -1071FAD70:lI119|H1071FDCB0 -1071FDCB0:lI120|H107200D68 -107200D68:lI83|H107203F10 -107203F10:lI108|H107207140 -107207140:lI105|H10720A3C8 -10720A3C8:lI100|H10720D628 -10720D628:lI101|H107210818 -107210818:lI114|H107213A88 -107213A88:lI46|H107216E40 -107216E40:lI98|H10721A3B0 -10721A3B0:lI101|H10721D980 -10721D980:lI97|H107220ED0 -107220ED0:lI109|N -1071F32C8:lH1071F5898|N -1071F5898:lI119|H1071F80F8 -1071F80F8:lI120|H1071FAD50 -1071FAD50:lI70|H1071FDC90 -1071FDC90:lI105|H107200D48 -107200D48:lI108|H107203EF0 -107203EF0:lI101|H107207120 -107207120:lI68|H10720A3A8 -10720A3A8:lI105|H10720D608 -10720D608:lI114|H1072107F8 -1072107F8:lI80|H107213A68 -107213A68:lI105|H107216E20 -107216E20:lI99|H10721A390 -10721A390:lI107|H10721D960 -10721D960:lI101|H107220EB0 -107220EB0:lI114|H107224128 -107224128:lI69|H107227070 -107227070:lI118|H107229BE8 -107229BE8:lI101|H10722C410 -10722C410:lI110|H10722E958 -10722E958:lI116|H107230BE0 -107230BE0:lI46|H107232BD8 -107232BD8:lI98|H1072348C0 -1072348C0:lI101|H1072362F8 -1072362F8:lI97|H107237AC0 -107237AC0:lI109|N -1071F32B8:lH1071F5888|N -1071F5888:lI119|H1071F80E8 -1071F80E8:lI120|H1071FAD40 -1071FAD40:lI84|H1071FDC80 -1071FDC80:lI101|H107200D38 -107200D38:lI120|H107203EE0 -107203EE0:lI116|H107207110 -107207110:lI67|H10720A398 -10720A398:lI116|H10720D5F8 -10720D5F8:lI114|H1072107E8 -1072107E8:lI108|H107213A58 -107213A58:lI46|H107216E10 -107216E10:lI98|H10721A380 -10721A380:lI101|H10721D950 -10721D950:lI97|H107220EA0 -107220EA0:lI109|N -1071F32A8:lH1071F5878|N -1071F5878:lI119|H1071F80D8 -1071F80D8:lI120|H1071FAD30 -1071FAD30:lI83|H1071FDC70 -1071FDC70:lI99|H107200D28 -107200D28:lI114|H107203ED0 -107203ED0:lI111|H107207100 -107207100:lI108|H10720A388 -10720A388:lI108|H10720D5E8 -10720D5E8:lI87|H1072107D8 -1072107D8:lI105|H107213A48 -107213A48:lI110|H107216E00 -107216E00:lI69|H10721A370 -10721A370:lI118|H10721D940 -10721D940:lI101|H107220E90 -107220E90:lI110|H107224118 -107224118:lI116|H107227060 -107227060:lI46|H107229BD8 -107229BD8:lI98|H10722C400 -10722C400:lI101|H10722E948 -10722E948:lI97|H107230BD0 -107230BD0:lI109|N -1071F3298:lH1071F5868|N -1071F5868:lI119|H1071F80C8 -1071F80C8:lI120|H1071FAD20 -1071FAD20:lI83|H1071FDC60 -1071FDC60:lI116|H107200D18 -107200D18:lI97|H107203EC0 -107203EC0:lI116|H1072070F0 -1072070F0:lI105|H10720A378 -10720A378:lI99|H10720D5D8 -10720D5D8:lI84|H1072107C8 -1072107C8:lI101|H107213A38 -107213A38:lI120|H107216DF0 -107216DF0:lI116|H10721A360 -10721A360:lI46|H10721D930 -10721D930:lI98|H107220E80 -107220E80:lI101|H107224108 -107224108:lI97|H107227050 -107227050:lI109|N -1071F3288:lH1071F5858|N -1071F5858:lI119|H1071F80B8 -1071F80B8:lI120|H1071FAD10 -1071FAD10:lI83|H1071FDC50 -1071FDC50:lI112|H107200D08 -107200D08:lI105|H107203EB0 -107203EB0:lI110|H1072070E0 -1072070E0:lI67|H10720A368 -10720A368:lI116|H10720D5C8 -10720D5C8:lI114|H1072107B8 -1072107B8:lI108|H107213A28 -107213A28:lI46|H107216DE0 -107216DE0:lI98|H10721A350 -10721A350:lI101|H10721D920 -10721D920:lI97|H107220E70 -107220E70:lI109|N -1071F1370:MnA:H1071F31C0,H1071F31D0,H1071F31E0,H1071F31F8,H1071F3210,H1071F3220,H1071F3230,H1071F3240,H1071F3250,H1071F3260 -1071F31C0:lH1071F5770|N -1071F5770:lI119|H1071F7FC8 -1071F7FC8:lI120|H1071FAC20 -1071FAC20:lI65|H1071FDB60 -1071FDB60:lI117|H107200C18 -107200C18:lI105|H107203DC0 -107203DC0:lI77|H107206FF0 -107206FF0:lI97|H10720A278 -10720A278:lI110|H10720D4D8 -10720D4D8:lI97|H1072106C8 -1072106C8:lI103|H107213938 -107213938:lI101|H107216CF0 -107216CF0:lI114|H10721A260 -10721A260:lI69|H10721D830 -10721D830:lI118|H107220DA0 -107220DA0:lI101|H107224048 -107224048:lI110|H107226FB0 -107226FB0:lI116|H107229B48 -107229B48:lI46|H10722C380 -10722C380:lI98|H10722E8C8 -10722E8C8:lI101|H107230B60 -107230B60:lI97|H107232B78 -107232B78:lI109|N -1071F3260:lH1071F5828|N -1071F5828:lI119|H1071F8088 -1071F8088:lI120|H1071FACE0 -1071FACE0:lI67|H1071FDC20 -1071FDC20:lI111|H107200CD8 -107200CD8:lI110|H107203E80 -107203E80:lI116|H1072070B0 -1072070B0:lI114|H10720A338 -10720A338:lI111|H10720D598 -10720D598:lI108|H107210788 -107210788:lI87|H1072139F8 -1072139F8:lI105|H107216DB0 -107216DB0:lI116|H10721A320 -10721A320:lI104|H10721D8F0 -10721D8F0:lI73|H107220E40 -107220E40:lI116|H1072240D8 -1072240D8:lI101|H107227020 -107227020:lI109|H107229BA8 -107229BA8:lI115|H10722C3E0 -10722C3E0:lI46|H10722E928 -10722E928:lI98|H107230BB0 -107230BB0:lI101|H107232BB8 -107232BB8:lI97|H1072348A0 -1072348A0:lI109|N -1071F3250:lH1071F5818|N -1071F5818:lI119|H1071F8078 -1071F8078:lI120|H1071FACD0 -1071FACD0:lI76|H1071FDC10 -1071FDC10:lI105|H107200CC8 -107200CC8:lI115|H107203E70 -107203E70:lI116|H1072070A0 -1072070A0:lI67|H10720A328 -10720A328:lI116|H10720D588 -10720D588:lI114|H107210778 -107210778:lI108|H1072139E8 -1072139E8:lI46|H107216DA0 -107216DA0:lI98|H10721A310 -10721A310:lI101|H10721D8E0 -10721D8E0:lI97|H107220E30 -107220E30:lI109|N -1071F3240:lH1071F5808|N -1071F5808:lI119|H1071F8068 -1071F8068:lI120|H1071FACC0 -1071FACC0:lI84|H1071FDC00 -1071FDC00:lI111|H107200CB8 -107200CB8:lI111|H107203E60 -107203E60:lI108|H107207090 -107207090:lI66|H10720A318 -10720A318:lI97|H10720D578 -10720D578:lI114|H107210768 -107210768:lI46|H1072139D8 -1072139D8:lI98|H107216D90 -107216D90:lI101|H10721A300 -10721A300:lI97|H10721D8D0 -10721D8D0:lI109|N -1071F3230:Mn1:H1071F57F0 -1071F57F0:Mn2:H1071F8048,H1071F8058 -1071F8048:lH1071FACA0|N -1071FACA0:lI119|H1071FDBE0 -1071FDBE0:lI120|H107200C98 -107200C98:lI82|H107203E40 -107203E40:lI97|H107207070 -107207070:lI100|H10720A2F8 -10720A2F8:lI105|H10720D558 -10720D558:lI111|H107210748 -107210748:lI66|H1072139B8 -1072139B8:lI117|H107216D70 -107216D70:lI116|H10721A2E0 -10721A2E0:lI116|H10721D8B0 -10721D8B0:lI111|H107220E20 -107220E20:lI110|H1072240C8 -1072240C8:lI46|H107227010 -107227010:lI98|H107229B98 -107229B98:lI101|H10722C3D0 -10722C3D0:lI97|H10722E918 -10722E918:lI109|N -1071F8058:lH1071FACB0|N -1071FACB0:lI119|H1071FDBF0 -1071FDBF0:lI120|H107200CA8 -107200CA8:lI69|H107203E50 -107203E50:lI118|H107207080 -107207080:lI101|H10720A308 -10720A308:lI110|H10720D568 -10720D568:lI116|H107210758 -107210758:lI46|H1072139C8 -1072139C8:lI98|H107216D80 -107216D80:lI101|H10721A2F0 -10721A2F0:lI97|H10721D8C0 -10721D8C0:lI109|N -1071F3220:lH1071F57E0|N -1071F57E0:lI119|H1071F8038 -1071F8038:lI120|H1071FAC90 -1071FAC90:lI71|H1071FDBD0 -1071FDBD0:lI114|H107200C88 -107200C88:lI105|H107203E30 -107203E30:lI100|H107207060 -107207060:lI67|H10720A2E8 -10720A2E8:lI101|H10720D548 -10720D548:lI108|H107210738 -107210738:lI108|H1072139A8 -1072139A8:lI67|H107216D60 -107216D60:lI104|H10721A2D0 -10721A2D0:lI111|H10721D8A0 -10721D8A0:lI105|H107220E10 -107220E10:lI99|H1072240B8 -1072240B8:lI101|H107227000 -107227000:lI69|H107229B88 -107229B88:lI100|H10722C3C0 -10722C3C0:lI105|H10722E908 -10722E908:lI116|H107230BA0 -107230BA0:lI111|H107232BA8 -107232BA8:lI114|H107234890 -107234890:lI46|H1072362D8 -1072362D8:lI98|H107237AA0 -107237AA0:lI101|H1072390C8 -1072390C8:lI97|H10723A560 -10723A560:lI109|N -1071F3210:lH1071F57D0|N -1071F57D0:lI119|H1071F8028 -1071F8028:lI120|H1071FAC80 -1071FAC80:lI87|H1071FDBC0 -1071FDBC0:lI105|H107200C78 -107200C78:lI110|H107203E20 -107203E20:lI100|H107207050 -107207050:lI111|H10720A2D8 -10720A2D8:lI119|H10720D538 -10720D538:lI68|H107210728 -107210728:lI101|H107213998 -107213998:lI115|H107216D50 -107216D50:lI116|H10721A2C0 -10721A2C0:lI114|H10721D890 -10721D890:lI111|H107220E00 -107220E00:lI121|H1072240A8 -1072240A8:lI69|H107226FF0 -107226FF0:lI118|H107229B78 -107229B78:lI101|H10722C3B0 -10722C3B0:lI110|H10722E8F8 -10722E8F8:lI116|H107230B90 -107230B90:lI46|H107232B98 -107232B98:lI98|H107234880 -107234880:lI101|H1072362C8 -1072362C8:lI97|H107237A90 -107237A90:lI109|N -1071F31F8:Mn2:H1071F57B0,H1071F57C0 -1071F57B0:lH1071F8008|N -1071F8008:lI119|H1071FAC60 -1071FAC60:lI120|H1071FDBA0 -1071FDBA0:lI83|H107200C58 -107200C58:lI105|H107203E00 -107203E00:lI122|H107207030 -107207030:lI101|H10720A2B8 -10720A2B8:lI114|H10720D518 -10720D518:lI73|H107210708 -107210708:lI116|H107213978 -107213978:lI101|H107216D30 -107216D30:lI109|H10721A2A0 -10721A2A0:lI46|H10721D870 -10721D870:lI98|H107220DE0 -107220DE0:lI101|H107224088 -107224088:lI97|H107226FE0 -107226FE0:lI109|N -1071F57C0:lH1071F8018|N -1071F8018:lI119|H1071FAC70 -1071FAC70:lI120|H1071FDBB0 -1071FDBB0:lI75|H107200C68 -107200C68:lI101|H107203E10 -107203E10:lI121|H107207040 -107207040:lI69|H10720A2C8 -10720A2C8:lI118|H10720D528 -10720D528:lI101|H107210718 -107210718:lI110|H107213988 -107213988:lI116|H107216D40 -107216D40:lI46|H10721A2B0 -10721A2B0:lI98|H10721D880 -10721D880:lI101|H107220DF0 -107220DF0:lI97|H107224098 -107224098:lI109|N -1071F31E0:Mn2:H1071F5790,H1071F57A0 -1071F5790:lH1071F7FE8|N -1071F7FE8:lI119|H1071FAC40 -1071FAC40:lI120|H1071FDB80 -1071FDB80:lI71|H107200C38 -107200C38:lI114|H107203DE0 -107203DE0:lI105|H107207010 -107207010:lI100|H10720A298 -10720A298:lI67|H10720D4F8 -10720D4F8:lI101|H1072106E8 -1072106E8:lI108|H107213958 -107213958:lI108|H107216D10 -107216D10:lI70|H10721A280 -10721A280:lI108|H10721D850 -10721D850:lI111|H107220DC0 -107220DC0:lI97|H107224068 -107224068:lI116|H107226FC0 -107226FC0:lI69|H107229B58 -107229B58:lI100|H10722C390 -10722C390:lI105|H10722E8D8 -10722E8D8:lI116|H107230B70 -107230B70:lI111|H107232B88 -107232B88:lI114|H107234870 -107234870:lI46|H1072362B8 -1072362B8:lI98|H107237A80 -107237A80:lI101|H1072390B8 -1072390B8:lI97|H10723A550 -10723A550:lI109|N -1071F57A0:lH1071F7FF8|N -1071F7FF8:lI119|H1071FAC50 -1071FAC50:lI120|H1071FDB90 -1071FDB90:lI65|H107200C48 -107200C48:lI99|H107203DF0 -107203DF0:lI116|H107207020 -107207020:lI105|H10720A2A8 -10720A2A8:lI118|H10720D508 -10720D508:lI97|H1072106F8 -1072106F8:lI116|H107213968 -107213968:lI101|H107216D20 -107216D20:lI69|H10721A290 -10721A290:lI118|H10721D860 -10721D860:lI101|H107220DD0 -107220DD0:lI110|H107224078 -107224078:lI116|H107226FD0 -107226FD0:lI46|H107229B68 -107229B68:lI98|H10722C3A0 -10722C3A0:lI101|H10722E8E8 -10722E8E8:lI97|H107230B80 -107230B80:lI109|N -1071F31D0:lH1071F5780|N -1071F5780:lI119|H1071F7FD8 -1071F7FD8:lI120|H1071FAC30 -1071FAC30:lI68|H1071FDB70 -1071FDB70:lI97|H107200C28 -107200C28:lI116|H107203DD0 -107203DD0:lI101|H107207000 -107207000:lI69|H10720A288 -10720A288:lI118|H10720D4E8 -10720D4E8:lI101|H1072106D8 -1072106D8:lI110|H107213948 -107213948:lI116|H107216D00 -107216D00:lI46|H10721A270 -10721A270:lI98|H10721D840 -10721D840:lI101|H107220DB0 -107220DB0:lI97|H107224058 -107224058:lI109|N -1071F1328:Mn8:H1071F3118,H1071F3130,H1071F3150,H1071F3168,H1071F3178,H1071F3188,H1071F3198,H1071F31A8 -1071F3118:Mn2:H1071F56A0,H1071F56B0 -1071F56A0:lH1071F7EF8|N -1071F7EF8:lI119|H1071FAB50 -1071FAB50:lI120|H1071FDA90 -1071FDA90:lI83|H107200B48 -107200B48:lI112|H107203CF0 -107203CF0:lI105|H107206F20 -107206F20:lI110|H10720A1A8 -10720A1A8:lI66|H10720D408 -10720D408:lI117|H1072105F8 -1072105F8:lI116|H107213878 -107213878:lI116|H107216C30 -107216C30:lI111|H10721A1B0 -10721A1B0:lI110|H10721D780 -10721D780:lI46|H107220CF0 -107220CF0:lI98|H107223FA8 -107223FA8:lI101|H107226F10 -107226F10:lI97|H107229AA8 -107229AA8:lI109|N -1071F56B0:lH1071F7F08|N -1071F7F08:lI119|H1071FAB60 -1071FAB60:lI120|H1071FDAA0 -1071FDAA0:lI67|H107200B58 -107200B58:lI111|H107203D00 -107203D00:lI110|H107206F30 -107206F30:lI116|H10720A1B8 -10720A1B8:lI114|H10720D418 -10720D418:lI111|H107210608 -107210608:lI108|H107213888 -107213888:lI46|H107216C40 -107216C40:lI98|H10721A1C0 -10721A1C0:lI101|H10721D790 -10721D790:lI97|H107220D00 -107220D00:lI109|N -1071F31A8:Mn2:H1071F5750,H1071F5760 -1071F5750:lH1071F7FA8|N -1071F7FA8:lI119|H1071FAC00 -1071FAC00:lI120|H1071FDB40 -1071FDB40:lI66|H107200BF8 -107200BF8:lI105|H107203DA0 -107203DA0:lI116|H107206FD0 -107206FD0:lI109|H10720A258 -10720A258:lI97|H10720D4B8 -10720D4B8:lI112|H1072106A8 -1072106A8:lI66|H107213918 -107213918:lI117|H107216CD0 -107216CD0:lI116|H10721A240 -10721A240:lI116|H10721D810 -10721D810:lI111|H107220D80 -107220D80:lI110|H107224028 -107224028:lI46|H107226F90 -107226F90:lI98|H107229B28 -107229B28:lI101|H10722C360 -10722C360:lI97|H10722E8A8 -10722E8A8:lI109|N -1071F5760:lH1071F7FB8|N -1071F7FB8:lI119|H1071FAC10 -1071FAC10:lI120|H1071FDB50 -1071FDB50:lI66|H107200C08 -107200C08:lI111|H107203DB0 -107203DB0:lI111|H107206FE0 -107206FE0:lI107|H10720A268 -10720A268:lI67|H10720D4C8 -10720D4C8:lI116|H1072106B8 -1072106B8:lI114|H107213928 -107213928:lI108|H107216CE0 -107216CE0:lI66|H10721A250 -10721A250:lI97|H10721D820 -10721D820:lI115|H107220D90 -107220D90:lI101|H107224038 -107224038:lI46|H107226FA0 -107226FA0:lI98|H107229B38 -107229B38:lI101|H10722C370 -10722C370:lI97|H10722E8B8 -10722E8B8:lI109|N -1071F3198:lH1071F5740|N -1071F5740:lI119|H1071F7F98 -1071F7F98:lI120|H1071FABF0 -1071FABF0:lI73|H1071FDB30 -1071FDB30:lI99|H107200BE8 -107200BE8:lI111|H107203D90 -107203D90:lI110|H107206FC0 -107206FC0:lI105|H10720A248 -10720A248:lI122|H10720D4A8 -10720D4A8:lI101|H107210698 -107210698:lI69|H107213908 -107213908:lI118|H107216CC0 -107216CC0:lI101|H10721A230 -10721A230:lI110|H10721D800 -10721D800:lI116|H107220D70 -107220D70:lI46|H107224018 -107224018:lI98|H107226F80 -107226F80:lI101|H107229B18 -107229B18:lI97|H10722C350 -10722C350:lI109|N -1071F3188:lH1071F5730|N -1071F5730:lI119|H1071F7F88 -1071F7F88:lI120|H1071FABE0 -1071FABE0:lI77|H1071FDB20 -1071FDB20:lI111|H107200BD8 -107200BD8:lI117|H107203D80 -107203D80:lI115|H107206FB0 -107206FB0:lI101|H10720A238 -10720A238:lI67|H10720D498 -10720D498:lI97|H107210688 -107210688:lI112|H1072138F8 -1072138F8:lI116|H107216CB0 -107216CB0:lI117|H10721A220 -10721A220:lI114|H10721D7F0 -10721D7F0:lI101|H107220D60 -107220D60:lI76|H107224008 -107224008:lI111|H107226F70 -107226F70:lI115|H107229B08 -107229B08:lI116|H10722C340 -10722C340:lI69|H10722E898 -10722E898:lI118|H107230B50 -107230B50:lI101|H107232B68 -107232B68:lI110|H107234860 -107234860:lI116|H1072362A8 -1072362A8:lI46|H107237A70 -107237A70:lI98|H1072390A8 -1072390A8:lI101|H10723A540 -10723A540:lI97|H10723B830 -10723B830:lI109|N -1071F3178:lH1071F5720|N -1071F5720:lI119|H1071F7F78 -1071F7F78:lI120|H1071FABD0 -1071FABD0:lI73|H1071FDB10 -1071FDB10:lI109|H107200BC8 -107200BC8:lI97|H107203D70 -107203D70:lI103|H107206FA0 -107206FA0:lI101|H10720A228 -10720A228:lI46|H10720D488 -10720D488:lI98|H107210678 -107210678:lI101|H1072138E8 -1072138E8:lI97|H107216CA0 -107216CA0:lI109|N -1071F3168:lH1071F5710|N -1071F5710:lI119|H1071F7F68 -1071F7F68:lI120|H1071FABC0 -1071FABC0:lI80|H1071FDB00 -1071FDB00:lI97|H107200BB8 -107200BB8:lI103|H107203D60 -107203D60:lI101|H107206F90 -107206F90:lI83|H10720A218 -10720A218:lI101|H10720D478 -10720D478:lI116|H107210668 -107210668:lI117|H1072138D8 -1072138D8:lI112|H107216C90 -107216C90:lI68|H10721A210 -10721A210:lI105|H10721D7E0 -10721D7E0:lI97|H107220D50 -107220D50:lI108|H107223FF8 -107223FF8:lI111|H107226F60 -107226F60:lI103|H107229AF8 -107229AF8:lI46|H10722C330 -10722C330:lI98|H10722E888 -10722E888:lI101|H107230B40 -107230B40:lI97|H107232B58 -107232B58:lI109|N -1071F3150:Mn2:H1071F56F0,H1071F5700 -1071F56F0:lH1071F7F48|N -1071F7F48:lI119|H1071FABA0 -1071FABA0:lI120|H1071FDAE0 -1071FDAE0:lI68|H107200B98 -107200B98:lI97|H107203D40 -107203D40:lI116|H107206F70 -107206F70:lI97|H10720A1F8 -10720A1F8:lI79|H10720D458 -10720D458:lI98|H107210648 -107210648:lI106|H1072138B8 -1072138B8:lI101|H107216C70 -107216C70:lI99|H10721A1F0 -10721A1F0:lI116|H10721D7C0 -10721D7C0:lI46|H107220D30 -107220D30:lI98|H107223FD8 -107223FD8:lI101|H107226F40 -107226F40:lI97|H107229AD8 -107229AD8:lI109|N -1071F5700:lH1071F7F58|N -1071F7F58:lI119|H1071FABB0 -1071FABB0:lI120|H1071FDAF0 -1071FDAF0:lI71|H107200BA8 -107200BA8:lI114|H107203D50 -107203D50:lI105|H107206F80 -107206F80:lI100|H10720A208 -10720A208:lI67|H10720D468 -10720D468:lI101|H107210658 -107210658:lI108|H1072138C8 -1072138C8:lI108|H107216C80 -107216C80:lI82|H10721A200 -10721A200:lI101|H10721D7D0 -10721D7D0:lI110|H107220D40 -107220D40:lI100|H107223FE8 -107223FE8:lI101|H107226F50 -107226F50:lI114|H107229AE8 -107229AE8:lI101|H10722C320 -10722C320:lI114|H10722E878 -10722E878:lI46|H107230B30 -107230B30:lI98|H107232B48 -107232B48:lI101|H107234850 -107234850:lI97|H107236298 -107236298:lI109|N -1071F3130:Mn3:H1071F56C0,H1071F56D0,H1071F56E0 -1071F56C0:lH1071F7F18|N -1071F7F18:lI119|H1071FAB70 -1071FAB70:lI120|H1071FDAB0 -1071FDAB0:lI67|H107200B68 -107200B68:lI111|H107203D10 -107203D10:lI110|H107206F40 -107206F40:lI116|H10720A1C8 -10720A1C8:lI101|H10720D428 -10720D428:lI120|H107210618 -107210618:lI116|H107213898 -107213898:lI77|H107216C50 -107216C50:lI101|H10721A1D0 -10721A1D0:lI110|H10721D7A0 -10721D7A0:lI117|H107220D10 -107220D10:lI69|H107223FB8 -107223FB8:lI118|H107226F20 -107226F20:lI101|H107229AB8 -107229AB8:lI110|H10722C300 -10722C300:lI116|H10722E858 -10722E858:lI46|H107230B10 -107230B10:lI98|H107232B28 -107232B28:lI101|H107234830 -107234830:lI97|H107236278 -107236278:lI109|N -1071F56E0:lH1071F7F38|N -1071F7F38:lI119|H1071FAB90 -1071FAB90:lI120|H1071FDAD0 -1071FDAD0:lI68|H107200B88 -107200B88:lI67|H107203D30 -107203D30:lI46|H107206F60 -107206F60:lI98|H10720A1E8 -10720A1E8:lI101|H10720D448 -10720D448:lI97|H107210638 -107210638:lI109|N -1071F56D0:lH1071F7F28|N -1071F7F28:lI119|H1071FAB80 -1071FAB80:lI120|H1071FDAC0 -1071FDAC0:lI71|H107200B78 -107200B78:lI114|H107203D20 -107203D20:lI97|H107206F50 -107206F50:lI112|H10720A1D8 -10720A1D8:lI104|H10720D438 -10720D438:lI105|H107210628 -107210628:lI99|H1072138A8 -1072138A8:lI115|H107216C60 -107216C60:lI71|H10721A1E0 -10721A1E0:lI114|H10721D7B0 -10721D7B0:lI97|H107220D20 -107220D20:lI100|H107223FC8 -107223FC8:lI105|H107226F30 -107226F30:lI101|H107229AC8 -107229AC8:lI110|H10722C310 -10722C310:lI116|H10722E868 -10722E868:lI83|H107230B20 -107230B20:lI116|H107232B38 -107232B38:lI111|H107234840 -107234840:lI112|H107236288 -107236288:lI115|H107237A60 -107237A60:lI46|H107239098 -107239098:lI98|H10723A530 -10723A530:lI101|H10723B820 -10723B820:lI97|H10723C880 -10723C880:lI109|N -1071F12E8:Mn7:H1071F3088,H1071F30A0,H1071F30B0,H1071F30C0,H1071F30D8,H1071F30E8,H1071F3100 -1071F3088:Mn2:H1071F55F0,H1071F5600 -1071F55F0:lH1071F7E48|N -1071F7E48:lI119|H1071FAAA0 -1071FAAA0:lI120|H1071FD9E0 -1071FD9E0:lI80|H107200A98 -107200A98:lI111|H107203C40 -107203C40:lI112|H107206E70 -107206E70:lI117|H10720A0F8 -10720A0F8:lI112|H10720D358 -10720D358:lI87|H107210548 -107210548:lI105|H1072137C8 -1072137C8:lI110|H107216B80 -107216B80:lI100|H10721A100 -10721A100:lI111|H10721D6E0 -10721D6E0:lI119|H107220C50 -107220C50:lI46|H107223F18 -107223F18:lI98|H107226EA0 -107226EA0:lI101|H107229A38 -107229A38:lI97|H10722C2A0 -10722C2A0:lI109|N -1071F5600:lH1071F7E58|N -1071F7E58:lI119|H1071FAAB0 -1071FAAB0:lI120|H1071FD9F0 -1071FD9F0:lI67|H107200AA8 -107200AA8:lI104|H107203C50 -107203C50:lI111|H107206E80 -107206E80:lI105|H10720A108 -10720A108:lI99|H10720D368 -10720D368:lI101|H107210558 -107210558:lI98|H1072137D8 -1072137D8:lI111|H107216B90 -107216B90:lI111|H10721A110 -10721A110:lI107|H10721D6F0 -10721D6F0:lI46|H107220C60 -107220C60:lI98|H107223F28 -107223F28:lI101|H107226EB0 -107226EB0:lI97|H107229A48 -107229A48:lI109|N -1071F3100:Mn2:H1071F5680,H1071F5690 -1071F5680:lH1071F7ED8|N -1071F7ED8:lI119|H1071FAB30 -1071FAB30:lI120|H1071FDA70 -1071FDA70:lI66|H107200B28 -107200B28:lI117|H107203CD0 -107203CD0:lI102|H107206F00 -107206F00:lI102|H10720A188 -10720A188:lI101|H10720D3E8 -10720D3E8:lI114|H1072105D8 -1072105D8:lI101|H107213858 -107213858:lI100|H107216C10 -107216C10:lI80|H10721A190 -10721A190:lI97|H10721D760 -10721D760:lI105|H107220CD0 -107220CD0:lI110|H107223F88 -107223F88:lI116|H107226EF0 -107226EF0:lI68|H107229A88 -107229A88:lI67|H10722C2E0 -10722C2E0:lI46|H10722E838 -10722E838:lI98|H107230AF0 -107230AF0:lI101|H107232B18 -107232B18:lI97|H107234820 -107234820:lI109|N -1071F5690:lH1071F7EE8|N -1071F7EE8:lI119|H1071FAB40 -1071FAB40:lI120|H1071FDA80 -1071FDA80:lI72|H107200B38 -107200B38:lI116|H107203CE0 -107203CE0:lI109|H107206F10 -107206F10:lI108|H10720A198 -10720A198:lI76|H10720D3F8 -10720D3F8:lI105|H1072105E8 -1072105E8:lI110|H107213868 -107213868:lI107|H107216C20 -107216C20:lI69|H10721A1A0 -10721A1A0:lI118|H10721D770 -10721D770:lI101|H107220CE0 -107220CE0:lI110|H107223F98 -107223F98:lI116|H107226F00 -107226F00:lI46|H107229A98 -107229A98:lI98|H10722C2F0 -10722C2F0:lI101|H10722E848 -10722E848:lI97|H107230B00 -107230B00:lI109|N -1071F30E8:Mn2:H1071F5660,H1071F5670 -1071F5660:lH1071F7EB8|N -1071F7EB8:lI119|H1071FAB10 -1071FAB10:lI120|H1071FDA50 -1071FDA50:lI67|H107200B08 -107200B08:lI104|H107203CB0 -107203CB0:lI101|H107206EE0 -107206EE0:lI99|H10720A168 -10720A168:lI107|H10720D3C8 -10720D3C8:lI66|H1072105B8 -1072105B8:lI111|H107213838 -107213838:lI120|H107216BF0 -107216BF0:lI46|H10721A170 -10721A170:lI98|H10721D750 -10721D750:lI101|H107220CC0 -107220CC0:lI97|H107223F78 -107223F78:lI109|N -1071F5670:lH1071F7EC8|N -1071F7EC8:lI119|H1071FAB20 -1071FAB20:lI120|H1071FDA60 -1071FDA60:lI95|H107200B18 -107200B18:lI109|H107203CC0 -107203CC0:lI105|H107206EF0 -107206EF0:lI115|H10720A178 -10720A178:lI99|H10720D3D8 -10720D3D8:lI46|H1072105C8 -1072105C8:lI98|H107213848 -107213848:lI101|H107216C00 -107216C00:lI97|H10721A180 -10721A180:lI109|N -1071F30D8:lH1071F5650|N -1071F5650:lI119|H1071F7EA8 -1071F7EA8:lI120|H1071FAB00 -1071FAB00:lI84|H1071FDA40 -1071FDA40:lI101|H107200AF8 -107200AF8:lI120|H107203CA0 -107203CA0:lI116|H107206ED0 -107206ED0:lI65|H10720A158 -10720A158:lI116|H10720D3B8 -10720D3B8:lI116|H1072105A8 -1072105A8:lI114|H107213828 -107213828:lI46|H107216BE0 -107216BE0:lI98|H10721A160 -10721A160:lI101|H10721D740 -10721D740:lI97|H107220CB0 -107220CB0:lI109|N -1071F30C0:Mn2:H1071F5630,H1071F5640 -1071F5630:lH1071F7E88|N -1071F7E88:lI119|H1071FAAE0 -1071FAAE0:lI120|H1071FDA20 -1071FDA20:lI84|H107200AD8 -107200AD8:lI111|H107203C80 -107203C80:lI111|H107206EB0 -107206EB0:lI108|H10720A138 -10720A138:lI98|H10720D398 -10720D398:lI111|H107210588 -107210588:lI111|H107213808 -107213808:lI107|H107216BC0 -107216BC0:lI46|H10721A140 -10721A140:lI98|H10721D720 -10721D720:lI101|H107220C90 -107220C90:lI97|H107223F58 -107223F58:lI109|N -1071F5640:lH1071F7E98|N -1071F7E98:lI119|H1071FAAF0 -1071FAAF0:lI120|H1071FDA30 -1071FDA30:lI66|H107200AE8 -107200AE8:lI105|H107203C90 -107203C90:lI116|H107206EC0 -107206EC0:lI109|H10720A148 -10720A148:lI97|H10720D3A8 -10720D3A8:lI112|H107210598 -107210598:lI68|H107213818 -107213818:lI97|H107216BD0 -107216BD0:lI116|H10721A150 -10721A150:lI97|H10721D730 -10721D730:lI79|H107220CA0 -107220CA0:lI98|H107223F68 -107223F68:lI106|H107226EE0 -107226EE0:lI101|H107229A78 -107229A78:lI99|H10722C2D0 -10722C2D0:lI116|H10722E828 -10722E828:lI46|H107230AE0 -107230AE0:lI98|H107232B08 -107232B08:lI101|H107234810 -107234810:lI97|H107236268 -107236268:lI109|N -1071F30B0:lH1071F5620|N -1071F5620:lI119|H1071F7E78 -1071F7E78:lI120|H1071FAAD0 -1071FAAD0:lI70|H1071FDA10 -1071FDA10:lI105|H107200AC8 -107200AC8:lI108|H107203C70 -107203C70:lI101|H107206EA0 -107206EA0:lI68|H10720A128 -10720A128:lI97|H10720D388 -10720D388:lI116|H107210578 -107210578:lI97|H1072137F8 -1072137F8:lI79|H107216BB0 -107216BB0:lI98|H10721A130 -10721A130:lI106|H10721D710 -10721D710:lI101|H107220C80 -107220C80:lI99|H107223F48 -107223F48:lI116|H107226ED0 -107226ED0:lI46|H107229A68 -107229A68:lI98|H10722C2C0 -10722C2C0:lI101|H10722E818 -10722E818:lI97|H107230AD0 -107230AD0:lI109|N -1071F30A0:lH1071F5610|N -1071F5610:lI119|H1071F7E68 -1071F7E68:lI120|H1071FAAC0 -1071FAAC0:lI80|H1071FDA00 -1071FDA00:lI114|H107200AB8 -107200AB8:lI105|H107203C60 -107203C60:lI110|H107206E90 -107206E90:lI116|H10720A118 -10720A118:lI80|H10720D378 -10720D378:lI114|H107210568 -107210568:lI101|H1072137E8 -1072137E8:lI118|H107216BA0 -107216BA0:lI105|H10721A120 -10721A120:lI101|H10721D700 -10721D700:lI119|H107220C70 -107220C70:lI46|H107223F38 -107223F38:lI98|H107226EC0 -107226EC0:lI101|H107229A58 -107229A58:lI97|H10722C2B0 -10722C2B0:lI109|N -1071F12A0:Mn8:H1071F2FF0,H1071F3008,H1071F3018,H1071F3030,H1071F3040,H1071F3050,H1071F3060,H1071F3070 -1071F2FF0:Mn2:H1071F5530,H1071F5540 -1071F5530:lH1071F7D78|N -1071F7D78:lI119|H1071FA9D0 -1071FA9D0:lI120|H1071FD910 -1071FD910:lI83|H1072009C8 -1072009C8:lI97|H107203B70 -107203B70:lI115|H107206DA0 -107206DA0:lI104|H10720A038 -10720A038:lI69|H10720D298 -10720D298:lI118|H107210488 -107210488:lI101|H107213708 -107213708:lI110|H107216AC0 -107216AC0:lI116|H10721A040 -10721A040:lI46|H10721D620 -10721D620:lI98|H107220BB0 -107220BB0:lI101|H107223E78 -107223E78:lI97|H107226E10 -107226E10:lI109|N -1071F5540:lH1071F7D88|N -1071F7D88:lI119|H1071FA9E0 -1071FA9E0:lI120|H1071FD920 -1071FD920:lI71|H1072009D8 -1072009D8:lI114|H107203B80 -107203B80:lI97|H107206DB0 -107206DB0:lI112|H10720A048 -10720A048:lI104|H10720D2A8 -10720D2A8:lI105|H107210498 -107210498:lI99|H107213718 -107213718:lI115|H107216AD0 -107216AD0:lI82|H10721A050 -10721A050:lI101|H10721D630 -10721D630:lI110|H107220BC0 -107220BC0:lI100|H107223E88 -107223E88:lI101|H107226E20 -107226E20:lI114|H1072299B8 -1072299B8:lI101|H10722C230 -10722C230:lI114|H10722E7A8 -10722E7A8:lI46|H107230A60 -107230A60:lI98|H107232AA8 -107232AA8:lI101|H1072347D0 -1072347D0:lI97|H107236248 -107236248:lI109|N -1071F3070:Mn2:H1071F55D0,H1071F55E0 -1071F55D0:lH1071F7E28|N -1071F7E28:lI119|H1071FAA80 -1071FAA80:lI120|H1071FD9C0 -1071FD9C0:lI69|H107200A78 -107200A78:lI114|H107203C20 -107203C20:lI97|H107206E50 -107206E50:lI115|H10720A0D8 -10720A0D8:lI101|H10720D338 -10720D338:lI69|H107210528 -107210528:lI118|H1072137A8 -1072137A8:lI101|H107216B60 -107216B60:lI110|H10721A0E0 -10721A0E0:lI116|H10721D6C0 -10721D6C0:lI46|H107220C40 -107220C40:lI98|H107223F08 -107223F08:lI101|H107226E90 -107226E90:lI97|H107229A28 -107229A28:lI109|N -1071F55E0:lH1071F7E38|N -1071F7E38:lI119|H1071FAA90 -1071FAA90:lI120|H1071FD9D0 -1071FD9D0:lI68|H107200A88 -107200A88:lI105|H107203C30 -107203C30:lI97|H107206E60 -107206E60:lI108|H10720A0E8 -10720A0E8:lI111|H10720D348 -10720D348:lI103|H107210538 -107210538:lI46|H1072137B8 -1072137B8:lI98|H107216B70 -107216B70:lI101|H10721A0F0 -10721A0F0:lI97|H10721D6D0 -10721D6D0:lI109|N -1071F3060:lH1071F55C0|N -1071F55C0:lI119|H1071F7E18 -1071F7E18:lI120|H1071FAA70 -1071FAA70:lI68|H1071FD9B0 -1071FD9B0:lI114|H107200A68 -107200A68:lI111|H107203C10 -107203C10:lI112|H107206E40 -107206E40:lI70|H10720A0C8 -10720A0C8:lI105|H10720D328 -10720D328:lI108|H107210518 -107210518:lI101|H107213798 -107213798:lI115|H107216B50 -107216B50:lI69|H10721A0D0 -10721A0D0:lI118|H10721D6B0 -10721D6B0:lI101|H107220C30 -107220C30:lI110|H107223EF8 -107223EF8:lI116|H107226E80 -107226E80:lI46|H107229A18 -107229A18:lI98|H10722C290 -10722C290:lI101|H10722E808 -10722E808:lI97|H107230AC0 -107230AC0:lI109|N -1071F3050:lH1071F55B0|N -1071F55B0:lI119|H1071F7E08 -1071F7E08:lI120|H1071FAA60 -1071FAA60:lI46|H1071FD9A0 -1071FD9A0:lI98|H107200A58 -107200A58:lI101|H107203C00 -107203C00:lI97|H107206E30 -107206E30:lI109|N -1071F3040:lH1071F55A0|N -1071F55A0:lI119|H1071F7DF8 -1071F7DF8:lI120|H1071FAA50 -1071FAA50:lI73|H1071FD990 -1071FD990:lI110|H107200A48 -107200A48:lI105|H107203BF0 -107203BF0:lI116|H107206E20 -107206E20:lI68|H10720A0B8 -10720A0B8:lI105|H10720D318 -10720D318:lI97|H107210508 -107210508:lI108|H107213788 -107213788:lI111|H107216B40 -107216B40:lI103|H10721A0C0 -10721A0C0:lI69|H10721D6A0 -10721D6A0:lI118|H107220C20 -107220C20:lI101|H107223EE8 -107223EE8:lI110|H107226E70 -107226E70:lI116|H107229A08 -107229A08:lI46|H10722C280 -10722C280:lI98|H10722E7F8 -10722E7F8:lI101|H107230AB0 -107230AB0:lI97|H107232AF8 -107232AF8:lI109|N -1071F3030:lH1071F5590|N -1071F5590:lI119|H1071F7DE8 -1071F7DE8:lI120|H1071FAA40 -1071FAA40:lI73|H1071FD980 -1071FD980:lI109|H107200A38 -107200A38:lI97|H107203BE0 -107203BE0:lI103|H107206E10 -107206E10:lI101|H10720A0A8 -10720A0A8:lI76|H10720D308 -10720D308:lI105|H1072104F8 -1072104F8:lI115|H107213778 -107213778:lI116|H107216B30 -107216B30:lI46|H10721A0B0 -10721A0B0:lI98|H10721D690 -10721D690:lI101|H107220C10 -107220C10:lI97|H107223ED8 -107223ED8:lI109|N -1071F3018:Mn2:H1071F5560,H1071F5578 -1071F5560:Mn2:H1071F7DA8,H1071F7DB8 -1071F7DA8:lH1071FAA00|N -1071FAA00:lI119|H1071FD940 -1071FD940:lI120|H1072009F8 -1072009F8:lI68|H107203BA0 -107203BA0:lI97|H107206DD0 -107206DD0:lI116|H10720A068 -10720A068:lI101|H10720D2C8 -10720D2C8:lI80|H1072104B8 -1072104B8:lI105|H107213738 -107213738:lI99|H107216AF0 -107216AF0:lI107|H10721A070 -10721A070:lI101|H10721D650 -10721D650:lI114|H107220BD0 -107220BD0:lI67|H107223E98 -107223E98:lI116|H107226E30 -107226E30:lI114|H1072299C8 -1072299C8:lI108|H10722C240 -10722C240:lI46|H10722E7B8 -10722E7B8:lI98|H107230A70 -107230A70:lI101|H107232AB8 -107232AB8:lI97|H1072347E0 -1072347E0:lI109|N -1071F7DB8:lH1071FAA10|N -1071FAA10:lI119|H1071FD950 -1071FD950:lI120|H107200A08 -107200A08:lI80|H107203BB0 -107203BB0:lI114|H107206DE0 -107206DE0:lI101|H10720A078 -10720A078:lI118|H10720D2D8 -10720D2D8:lI105|H1072104C8 -1072104C8:lI101|H107213748 -107213748:lI119|H107216B00 -107216B00:lI67|H10721A080 -10721A080:lI97|H10721D660 -10721D660:lI110|H107220BE0 -107220BE0:lI118|H107223EA8 -107223EA8:lI97|H107226E40 -107226E40:lI115|H1072299D8 -1072299D8:lI46|H10722C250 -10722C250:lI98|H10722E7C8 -10722E7C8:lI101|H107230A80 -107230A80:lI97|H107232AC8 -107232AC8:lI109|N -1071F5578:Mn2:H1071F7DC8,H1071F7DD8 -1071F7DC8:lH1071FAA20|N -1071FAA20:lI119|H1071FD960 -1071FD960:lI120|H107200A18 -107200A18:lI71|H107203BC0 -107203BC0:lI114|H107206DF0 -107206DF0:lI105|H10720A088 -10720A088:lI100|H10720D2E8 -10720D2E8:lI67|H1072104D8 -1072104D8:lI101|H107213758 -107213758:lI108|H107216B10 -107216B10:lI108|H10721A090 -10721A090:lI84|H10721D670 -10721D670:lI101|H107220BF0 -107220BF0:lI120|H107223EB8 -107223EB8:lI116|H107226E50 -107226E50:lI69|H1072299E8 -1072299E8:lI100|H10722C260 -10722C260:lI105|H10722E7D8 -10722E7D8:lI116|H107230A90 -107230A90:lI111|H107232AD8 -107232AD8:lI114|H1072347F0 -1072347F0:lI46|H107236258 -107236258:lI98|H107237A50 -107237A50:lI101|H107239088 -107239088:lI97|H10723A520 -10723A520:lI109|N -1071F7DD8:lH1071FAA30|N -1071FAA30:lI119|H1071FD970 -1071FD970:lI120|H107200A28 -107200A28:lI83|H107203BD0 -107203BD0:lI112|H107206E00 -107206E00:lI108|H10720A098 -10720A098:lI105|H10720D2F8 -10720D2F8:lI116|H1072104E8 -1072104E8:lI116|H107213768 -107213768:lI101|H107216B20 -107216B20:lI114|H10721A0A0 -10721A0A0:lI87|H10721D680 -10721D680:lI105|H107220C00 -107220C00:lI110|H107223EC8 -107223EC8:lI100|H107226E60 -107226E60:lI111|H1072299F8 -1072299F8:lI119|H10722C270 -10722C270:lI46|H10722E7E8 -10722E7E8:lI98|H107230AA0 -107230AA0:lI101|H107232AE8 -107232AE8:lI97|H107234800 -107234800:lI109|N -1071F3008:lH1071F5550|N -1071F5550:lI119|H1071F7D98 -1071F7D98:lI120|H1071FA9F0 -1071FA9F0:lI79|H1071FD930 -1071FD930:lI118|H1072009E8 -1072009E8:lI101|H107203B90 -107203B90:lI114|H107206DC0 -107206DC0:lI108|H10720A058 -10720A058:lI97|H10720D2B8 -10720D2B8:lI121|H1072104A8 -1072104A8:lI46|H107213728 -107213728:lI98|H107216AE0 -107216AE0:lI101|H10721A060 -10721A060:lI97|H10721D640 -10721D640:lI109|N -1071F1238:MnC:H1071F2F00,H1071F2F10,H1071F2F20,H1071F2F30,H1071F2F50,H1071F2F60,H1071F2F78,H1071F2F90,H1071F2FA8,H1071F2FB8,H1071F2FD0,H1071F2FE0 -1071F2F00:lH1071F5408|N -1071F5408:lI119|H1071F7C48 -1071F7C48:lI120|H1071FA8A0 -1071FA8A0:lI71|H1071FD7E0 -1071FD7E0:lI114|H107200898 -107200898:lI105|H107203A40 -107203A40:lI100|H107206C70 -107206C70:lI67|H107209F08 -107209F08:lI101|H10720D168 -10720D168:lI108|H107210358 -107210358:lI108|H1072135D8 -1072135D8:lI65|H107216990 -107216990:lI116|H107219F10 -107219F10:lI116|H10721D500 -10721D500:lI114|H107220A90 -107220A90:lI46|H107223D68 -107223D68:lI98|H107226D20 -107226D20:lI101|H107229918 -107229918:lI97|H10722C1A0 -10722C1A0:lI109|N -1071F2FE0:lH1071F5520|N -1071F5520:lI119|H1071F7D68 -1071F7D68:lI120|H1071FA9C0 -1071FA9C0:lI67|H1071FD900 -1071FD900:lI97|H1072009B8 -1072009B8:lI108|H107203B60 -107203B60:lI101|H107206D90 -107206D90:lI110|H10720A028 -10720A028:lI100|H10720D288 -10720D288:lI97|H107210478 -107210478:lI114|H1072136F8 -1072136F8:lI69|H107216AB0 -107216AB0:lI118|H10721A030 -10721A030:lI101|H10721D610 -10721D610:lI110|H107220BA0 -107220BA0:lI116|H107223E68 -107223E68:lI46|H107226E00 -107226E00:lI98|H1072299A8 -1072299A8:lI101|H10722C220 -10722C220:lI97|H10722E798 -10722E798:lI109|N -1071F2FD0:lH1071F5510|N -1071F5510:lI119|H1071F7D58 -1071F7D58:lI120|H1071FA9B0 -1071FA9B0:lI83|H1071FD8F0 -1071FD8F0:lI99|H1072009A8 -1072009A8:lI114|H107203B50 -107203B50:lI111|H107206D80 -107206D80:lI108|H10720A018 -10720A018:lI108|H10720D278 -10720D278:lI66|H107210468 -107210468:lI97|H1072136E8 -1072136E8:lI114|H107216AA0 -107216AA0:lI46|H10721A020 -10721A020:lI98|H10721D600 -10721D600:lI101|H107220B90 -107220B90:lI97|H107223E58 -107223E58:lI109|N -1071F2FB8:Mn2:H1071F54F0,H1071F5500 -1071F54F0:lH1071F7D38|N -1071F7D38:lI119|H1071FA990 -1071FA990:lI120|H1071FD8D0 -1071FD8D0:lI71|H107200988 -107200988:lI114|H107203B30 -107203B30:lI97|H107206D60 -107206D60:lI112|H107209FF8 -107209FF8:lI104|H10720D258 -10720D258:lI105|H107210448 -107210448:lI99|H1072136C8 -1072136C8:lI115|H107216A80 -107216A80:lI79|H10721A000 -10721A000:lI98|H10721D5E0 -10721D5E0:lI106|H107220B70 -107220B70:lI101|H107223E38 -107223E38:lI99|H107226DE0 -107226DE0:lI116|H107229988 -107229988:lI46|H10722C200 -10722C200:lI98|H10722E778 -10722E778:lI101|H107230A50 -107230A50:lI97|H107232A98 -107232A98:lI109|N -1071F5500:lH1071F7D48|N -1071F7D48:lI119|H1071FA9A0 -1071FA9A0:lI120|H1071FD8E0 -1071FD8E0:lI84|H107200998 -107200998:lI111|H107203B40 -107203B40:lI103|H107206D70 -107206D70:lI103|H10720A008 -10720A008:lI108|H10720D268 -10720D268:lI101|H107210458 -107210458:lI66|H1072136D8 -1072136D8:lI117|H107216A90 -107216A90:lI116|H10721A010 -10721A010:lI116|H10721D5F0 -10721D5F0:lI111|H107220B80 -107220B80:lI110|H107223E48 -107223E48:lI46|H107226DF0 -107226DF0:lI98|H107229998 -107229998:lI101|H10722C210 -10722C210:lI97|H10722E788 -10722E788:lI109|N -1071F2FA8:lH1071F54E0|N -1071F54E0:lI119|H1071F7D28 -1071F7D28:lI120|H1071FA980 -1071FA980:lI76|H1071FD8C0 -1071FD8C0:lI105|H107200978 -107200978:lI115|H107203B20 -107203B20:lI116|H107206D50 -107206D50:lI86|H107209FE8 -107209FE8:lI105|H10720D248 -10720D248:lI101|H107210438 -107210438:lI119|H1072136B8 -1072136B8:lI46|H107216A70 -107216A70:lI98|H107219FF0 -107219FF0:lI101|H10721D5D0 -10721D5D0:lI97|H107220B60 -107220B60:lI109|N -1071F2F90:Mn2:H1071F54C0,H1071F54D0 -1071F54C0:lH1071F7D08|N -1071F7D08:lI119|H1071FA960 -1071FA960:lI120|H1071FD8A0 -1071FD8A0:lI88|H107200958 -107200958:lI109|H107203B00 -107203B00:lI108|H107206D30 -107206D30:lI82|H107209FC8 -107209FC8:lI101|H10720D228 -10720D228:lI115|H107210418 -107210418:lI111|H107213698 -107213698:lI117|H107216A50 -107216A50:lI114|H107219FD0 -107219FD0:lI99|H10721D5B0 -10721D5B0:lI101|H107220B40 -107220B40:lI46|H107223E18 -107223E18:lI98|H107226DD0 -107226DD0:lI101|H107229978 -107229978:lI97|H10722C1F0 -10722C1F0:lI109|N -1071F54D0:lH1071F7D18|N -1071F7D18:lI119|H1071FA970 -1071FA970:lI120|H1071FD8B0 -1071FD8B0:lI76|H107200968 -107200968:lI105|H107203B10 -107203B10:lI115|H107206D40 -107206D40:lI116|H107209FD8 -107209FD8:lI98|H10720D238 -10720D238:lI111|H107210428 -107210428:lI111|H1072136A8 -1072136A8:lI107|H107216A60 -107216A60:lI46|H107219FE0 -107219FE0:lI98|H10721D5C0 -10721D5C0:lI101|H107220B50 -107220B50:lI97|H107223E28 -107223E28:lI109|N -1071F2F78:Mn2:H1071F54A0,H1071F54B0 -1071F54A0:lH1071F7CE8|N -1071F7CE8:lI119|H1071FA940 -1071FA940:lI120|H1071FD880 -1071FD880:lI73|H107200938 -107200938:lI100|H107203AE0 -107203AE0:lI108|H107206D10 -107206D10:lI101|H107209FA8 -107209FA8:lI69|H10720D208 -10720D208:lI118|H1072103F8 -1072103F8:lI101|H107213678 -107213678:lI110|H107216A30 -107216A30:lI116|H107219FB0 -107219FB0:lI46|H10721D590 -10721D590:lI98|H107220B20 -107220B20:lI101|H107223DF8 -107223DF8:lI97|H107226DB0 -107226DB0:lI109|N -1071F54B0:lH1071F7CF8|N -1071F7CF8:lI119|H1071FA950 -1071FA950:lI120|H1071FD890 -1071FD890:lI70|H107200948 -107200948:lI111|H107203AF0 -107203AF0:lI110|H107206D20 -107206D20:lI116|H107209FB8 -107209FB8:lI80|H10720D218 -10720D218:lI105|H107210408 -107210408:lI99|H107213688 -107213688:lI107|H107216A40 -107216A40:lI101|H107219FC0 -107219FC0:lI114|H10721D5A0 -10721D5A0:lI69|H107220B30 -107220B30:lI118|H107223E08 -107223E08:lI101|H107226DC0 -107226DC0:lI110|H107229968 -107229968:lI116|H10722C1E0 -10722C1E0:lI46|H10722E768 -10722E768:lI98|H107230A40 -107230A40:lI101|H107232A88 -107232A88:lI97|H1072347C0 -1072347C0:lI109|N -1071F2F60:Mn2:H1071F5480,H1071F5490 -1071F5480:lH1071F7CC8|N -1071F7CC8:lI119|H1071FA920 -1071FA920:lI120|H1071FD860 -1071FD860:lI84|H107200918 -107200918:lI114|H107203AC0 -107203AC0:lI101|H107206CF0 -107206CF0:lI101|H107209F88 -107209F88:lI69|H10720D1E8 -10720D1E8:lI118|H1072103D8 -1072103D8:lI101|H107213658 -107213658:lI110|H107216A10 -107216A10:lI116|H107219F90 -107219F90:lI46|H10721D570 -10721D570:lI98|H107220B00 -107220B00:lI101|H107223DD8 -107223DD8:lI97|H107226D90 -107226D90:lI109|N -1071F5490:lH1071F7CD8|N -1071F7CD8:lI119|H1071FA930 -1071FA930:lI120|H1071FD870 -1071FD870:lI83|H107200928 -107200928:lI105|H107203AD0 -107203AD0:lI122|H107206D00 -107206D00:lI101|H107209F98 -107209F98:lI69|H10720D1F8 -10720D1F8:lI118|H1072103E8 -1072103E8:lI101|H107213668 -107213668:lI110|H107216A20 -107216A20:lI116|H107219FA0 -107219FA0:lI46|H10721D580 -10721D580:lI98|H107220B10 -107220B10:lI101|H107223DE8 -107223DE8:lI97|H107226DA0 -107226DA0:lI109|N -1071F2F50:lH1071F5470|N -1071F5470:lI119|H1071F7CB8 -1071F7CB8:lI120|H1071FA910 -1071FA910:lI70|H1071FD850 -1071FD850:lI105|H107200908 -107200908:lI110|H107203AB0 -107203AB0:lI100|H107206CE0 -107206CE0:lI82|H107209F78 -107209F78:lI101|H10720D1D8 -10720D1D8:lI112|H1072103C8 -1072103C8:lI108|H107213648 -107213648:lI97|H107216A00 -107216A00:lI99|H107219F80 -107219F80:lI101|H10721D560 -10721D560:lI68|H107220AF0 -107220AF0:lI105|H107223DC8 -107223DC8:lI97|H107226D80 -107226D80:lI108|H107229958 -107229958:lI111|H10722C1D0 -10722C1D0:lI103|H10722E758 -10722E758:lI46|H107230A30 -107230A30:lI98|H107232A78 -107232A78:lI101|H1072347B0 -1072347B0:lI97|H107236238 -107236238:lI109|N -1071F2F30:Mn3:H1071F5440,H1071F5450,H1071F5460 -1071F5440:lH1071F7C88|N -1071F7C88:lI119|H1071FA8E0 -1071FA8E0:lI120|H1071FD820 -1071FD820:lI80|H1072008D8 -1072008D8:lI114|H107203A80 -107203A80:lI105|H107206CB0 -107206CB0:lI110|H107209F48 -107209F48:lI116|H10720D1A8 -10720D1A8:lI68|H107210398 -107210398:lI97|H107213618 -107213618:lI116|H1072169D0 -1072169D0:lI97|H107219F50 -107219F50:lI46|H10721D530 -10721D530:lI98|H107220AC0 -107220AC0:lI101|H107223D98 -107223D98:lI97|H107226D50 -107226D50:lI109|N -1071F5460:lH1071F7CA8|N -1071F7CA8:lI119|H1071FA900 -1071FA900:lI120|H1071FD840 -1071FD840:lI84|H1072008F8 -1072008F8:lI97|H107203AA0 -107203AA0:lI115|H107206CD0 -107206CD0:lI107|H107209F68 -107209F68:lI66|H10720D1C8 -10720D1C8:lI97|H1072103B8 -1072103B8:lI114|H107213638 -107213638:lI73|H1072169F0 -1072169F0:lI99|H107219F70 -107219F70:lI111|H10721D550 -10721D550:lI110|H107220AE0 -107220AE0:lI46|H107223DB8 -107223DB8:lI98|H107226D70 -107226D70:lI101|H107229948 -107229948:lI97|H10722C1C0 -10722C1C0:lI109|N -1071F5450:lH1071F7C98|N -1071F7C98:lI119|H1071FA8F0 -1071FA8F0:lI120|H1071FD830 -1071FD830:lI70|H1072008E8 -1072008E8:lI111|H107203A90 -107203A90:lI99|H107206CC0 -107206CC0:lI117|H107209F58 -107209F58:lI115|H10720D1B8 -10720D1B8:lI69|H1072103A8 -1072103A8:lI118|H107213628 -107213628:lI101|H1072169E0 -1072169E0:lI110|H107219F60 -107219F60:lI116|H10721D540 -10721D540:lI46|H107220AD0 -107220AD0:lI98|H107223DA8 -107223DA8:lI101|H107226D60 -107226D60:lI97|H107229938 -107229938:lI109|N -1071F2F20:Mn1:H1071F5428 -1071F5428:Mn2:H1071F7C68,H1071F7C78 -1071F7C68:lH1071FA8C0|N -1071FA8C0:lI119|H1071FD800 -1071FD800:lI120|H1072008B8 -1072008B8:lI67|H107203A60 -107203A60:lI108|H107206C90 -107206C90:lI105|H107209F28 -107209F28:lI112|H10720D188 -10720D188:lI98|H107210378 -107210378:lI111|H1072135F8 -1072135F8:lI97|H1072169B0 -1072169B0:lI114|H107219F30 -107219F30:lI100|H10721D510 -10721D510:lI84|H107220AA0 -107220AA0:lI101|H107223D78 -107223D78:lI120|H107226D30 -107226D30:lI116|H107229928 -107229928:lI69|H10722C1B0 -10722C1B0:lI118|H10722E748 -10722E748:lI101|H107230A20 -107230A20:lI110|H107232A68 -107232A68:lI116|H1072347A0 -1072347A0:lI46|H107236228 -107236228:lI98|H107237A40 -107237A40:lI101|H107239078 -107239078:lI97|H10723A510 -10723A510:lI109|N -1071F7C78:lH1071FA8D0|N -1071FA8D0:lI119|H1071FD810 -1071FD810:lI120|H1072008C8 -1072008C8:lI76|H107203A70 -107203A70:lI105|H107206CA0 -107206CA0:lI115|H107209F38 -107209F38:lI116|H10720D198 -10720D198:lI73|H107210388 -107210388:lI116|H107213608 -107213608:lI101|H1072169C0 -1072169C0:lI109|H107219F40 -107219F40:lI46|H10721D520 -10721D520:lI98|H107220AB0 -107220AB0:lI101|H107223D88 -107223D88:lI97|H107226D40 -107226D40:lI109|N -1071F2F10:lH1071F5418|N -1071F5418:lI119|H1071F7C58 -1071F7C58:lI120|H1071FA8B0 -1071FA8B0:lI66|H1071FD7F0 -1071FD7F0:lI117|H1072008A8 -1072008A8:lI116|H107203A50 -107203A50:lI116|H107206C80 -107206C80:lI111|H107209F18 -107209F18:lI110|H10720D178 -10720D178:lI46|H107210368 -107210368:lI98|H1072135E8 -1072135E8:lI101|H1072169A0 -1072169A0:lI97|H107219F20 -107219F20:lI109|N -1071F11E8:Mn9:H1071F2E40,H1071F2E50,H1071F2E60,H1071F2E78,H1071F2EA0,H1071F2EB0,H1071F2EC0,H1071F2ED8,H1071F2EF0 -1071F2E40:lH1071F5318|N -1071F5318:lI119|H1071F7B58 -1071F7B58:lI120|H1071FA7B0 -1071FA7B0:lI83|H1071FD6F0 -1071FD6F0:lI121|H1072007A8 -1072007A8:lI115|H107203950 -107203950:lI67|H107206B80 -107206B80:lI111|H107209E28 -107209E28:lI108|H10720D088 -10720D088:lI111|H107210288 -107210288:lI117|H107213508 -107213508:lI114|H1072168C0 -1072168C0:lI67|H107219E40 -107219E40:lI104|H10721D430 -10721D430:lI97|H1072209D0 -1072209D0:lI110|H107223CB8 -107223CB8:lI103|H107226C80 -107226C80:lI101|H107229878 -107229878:lI100|H10722C100 -10722C100:lI69|H10722E6C8 -10722E6C8:lI118|H1072309B0 -1072309B0:lI101|H107232A18 -107232A18:lI110|H107234760 -107234760:lI116|H1072361E8 -1072361E8:lI46|H107237A10 -107237A10:lI98|H107239048 -107239048:lI101|H10723A4E0 -10723A4E0:lI97|H10723B800 -10723B800:lI109|N -1071F2EF0:lH1071F53F8|N -1071F53F8:lI119|H1071F7C38 -1071F7C38:lI120|H1071FA890 -1071FA890:lI71|H1071FD7D0 -1071FD7D0:lI114|H107200888 -107200888:lI97|H107203A30 -107203A30:lI112|H107206C60 -107206C60:lI104|H107209EF8 -107209EF8:lI105|H10720D158 -10720D158:lI99|H107210348 -107210348:lI115|H1072135C8 -1072135C8:lI70|H107216980 -107216980:lI111|H107219F00 -107219F00:lI110|H10721D4F0 -10721D4F0:lI116|H107220A80 -107220A80:lI46|H107223D58 -107223D58:lI98|H107226D10 -107226D10:lI101|H107229908 -107229908:lI97|H10722C190 -10722C190:lI109|N -1071F2ED8:Mn2:H1071F53D8,H1071F53E8 -1071F53D8:lH1071F7C18|N -1071F7C18:lI119|H1071FA870 -1071FA870:lI120|H1071FD7B0 -1071FD7B0:lI46|H107200868 -107200868:lI97|H107203A10 -107203A10:lI112|H107206C40 -107206C40:lI112|N -1071F53E8:lH1071F7C28|N -1071F7C28:lI119|H1071FA880 -1071FA880:lI120|H1071FD7C0 -1071FD7C0:lI78|H107200878 -107200878:lI111|H107203A20 -107203A20:lI116|H107206C50 -107206C50:lI105|H107209EE8 -107209EE8:lI102|H10720D148 -10720D148:lI105|H107210338 -107210338:lI99|H1072135B8 -1072135B8:lI97|H107216970 -107216970:lI116|H107219EF0 -107219EF0:lI105|H10721D4E0 -10721D4E0:lI111|H107220A70 -107220A70:lI110|H107223D48 -107223D48:lI77|H107226D00 -107226D00:lI101|H1072298F8 -1072298F8:lI115|H10722C180 -10722C180:lI115|H10722E738 -10722E738:lI97|H107230A10 -107230A10:lI103|H107232A58 -107232A58:lI101|H107234790 -107234790:lI46|H107236218 -107236218:lI98|H107237A30 -107237A30:lI101|H107239068 -107239068:lI97|H10723A500 -10723A500:lI109|N -1071F2EC0:Mn2:H1071F53B8,H1071F53C8 -1071F53B8:lH1071F7BF8|N -1071F7BF8:lI119|H1071FA850 -1071FA850:lI120|H1071FD790 -1071FD790:lI82|H107200848 -107200848:lI101|H1072039F0 -1072039F0:lI103|H107206C20 -107206C20:lI105|H107209EC8 -107209EC8:lI111|H10720D128 -10720D128:lI110|H107210318 -107210318:lI46|H107213598 -107213598:lI98|H107216950 -107216950:lI101|H107219ED0 -107219ED0:lI97|H10721D4C0 -10721D4C0:lI109|N -1071F53C8:lH1071F7C08|N -1071F7C08:lI119|H1071FA860 -1071FA860:lI120|H1071FD7A0 -1071FD7A0:lI67|H107200858 -107200858:lI111|H107203A00 -107203A00:lI108|H107206C30 -107206C30:lI111|H107209ED8 -107209ED8:lI117|H10720D138 -10720D138:lI114|H107210328 -107210328:lI68|H1072135A8 -1072135A8:lI105|H107216960 -107216960:lI97|H107219EE0 -107219EE0:lI108|H10721D4D0 -10721D4D0:lI111|H107220A60 -107220A60:lI103|H107223D38 -107223D38:lI46|H107226CF0 -107226CF0:lI98|H1072298E8 -1072298E8:lI101|H10722C170 -10722C170:lI97|H10722E728 -10722E728:lI109|N -1071F2EB0:lH1071F53A8|N -1071F53A8:lI119|H1071F7BE8 -1071F7BE8:lI120|H1071FA840 -1071FA840:lI68|H1071FD780 -1071FD780:lI67|H107200838 -107200838:lI79|H1072039E0 -1072039E0:lI118|H107206C10 -107206C10:lI101|H107209EB8 -107209EB8:lI114|H10720D118 -10720D118:lI108|H107210308 -107210308:lI97|H107213588 -107213588:lI121|H107216940 -107216940:lI46|H107219EC0 -107219EC0:lI98|H10721D4B0 -10721D4B0:lI101|H107220A50 -107220A50:lI97|H107223D28 -107223D28:lI109|N -1071F2EA0:lH1071F5398|N -1071F5398:lI119|H1071F7BD8 -1071F7BD8:lI120|H1071FA830 -1071FA830:lI77|H1071FD770 -1071FD770:lI101|H107200828 -107200828:lI110|H1072039D0 -1072039D0:lI117|H107206C00 -107206C00:lI73|H107209EA8 -107209EA8:lI116|H10720D108 -10720D108:lI101|H1072102F8 -1072102F8:lI109|H107213578 -107213578:lI46|H107216930 -107216930:lI98|H107219EB0 -107219EB0:lI101|H10721D4A0 -10721D4A0:lI97|H107220A40 -107220A40:lI109|N -1071F2E78:Mn4:H1071F5358,H1071F5368,H1071F5378,H1071F5388 -1071F5358:lH1071F7B98|N -1071F7B98:lI119|H1071FA7F0 -1071FA7F0:lI120|H1071FD730 -1071FD730:lI77|H1072007E8 -1072007E8:lI68|H107203990 -107203990:lI73|H107206BC0 -107206BC0:lI67|H107209E68 -107209E68:lI104|H10720D0C8 -10720D0C8:lI105|H1072102C8 -1072102C8:lI108|H107213548 -107213548:lI100|H107216900 -107216900:lI70|H107219E80 -107219E80:lI114|H10721D470 -10721D470:lI97|H107220A10 -107220A10:lI109|H107223CF8 -107223CF8:lI101|H107226CC0 -107226CC0:lI46|H1072298B8 -1072298B8:lI98|H10722C140 -10722C140:lI101|H10722E6F8 -10722E6F8:lI97|H1072309E0 -1072309E0:lI109|N -1071F5388:lH1071F7BC8|N -1071F7BC8:lI103|H1071FA820 -1071FA820:lI108|H1071FD760 -1071FD760:lI117|H107200818 -107200818:lI46|H1072039C0 -1072039C0:lI98|H107206BF0 -107206BF0:lI101|H107209E98 -107209E98:lI97|H10720D0F8 -10720D0F8:lI109|N -1071F5378:lH1071F7BB8|N -1071F7BB8:lI119|H1071FA810 -1071FA810:lI120|H1071FD750 -1071FD750:lI65|H107200808 -107200808:lI117|H1072039B0 -1072039B0:lI105|H107206BE0 -107206BE0:lI78|H107209E88 -107209E88:lI111|H10720D0E8 -10720D0E8:lI116|H1072102E8 -1072102E8:lI101|H107213568 -107213568:lI98|H107216920 -107216920:lI111|H107219EA0 -107219EA0:lI111|H10721D490 -10721D490:lI107|H107220A30 -107220A30:lI69|H107223D18 -107223D18:lI118|H107226CE0 -107226CE0:lI101|H1072298D8 -1072298D8:lI110|H10722C160 -10722C160:lI116|H10722E718 -10722E718:lI46|H107230A00 -107230A00:lI98|H107232A48 -107232A48:lI101|H107234780 -107234780:lI97|H107236208 -107236208:lI109|N -1071F5368:lH1071F7BA8|N -1071F7BA8:lI119|H1071FA800 -1071FA800:lI120|H1071FD740 -1071FD740:lI71|H1072007F8 -1072007F8:lI114|H1072039A0 -1072039A0:lI97|H107206BD0 -107206BD0:lI112|H107209E78 -107209E78:lI104|H10720D0D8 -10720D0D8:lI105|H1072102D8 -1072102D8:lI99|H107213558 -107213558:lI115|H107216910 -107216910:lI77|H107219E90 -107219E90:lI97|H10721D480 -10721D480:lI116|H107220A20 -107220A20:lI114|H107223D08 -107223D08:lI105|H107226CD0 -107226CD0:lI120|H1072298C8 -1072298C8:lI46|H10722C150 -10722C150:lI98|H10722E708 -10722E708:lI101|H1072309F0 -1072309F0:lI97|H107232A38 -107232A38:lI109|N -1071F2E60:Mn2:H1071F5338,H1071F5348 -1071F5338:lH1071F7B78|N -1071F7B78:lI119|H1071FA7D0 -1071FA7D0:lI120|H1071FD710 -1071FD710:lI74|H1072007C8 -1072007C8:lI111|H107203970 -107203970:lI121|H107206BA0 -107206BA0:lI115|H107209E48 -107209E48:lI116|H10720D0A8 -10720D0A8:lI105|H1072102A8 -1072102A8:lI99|H107213528 -107213528:lI107|H1072168E0 -1072168E0:lI69|H107219E60 -107219E60:lI118|H10721D450 -10721D450:lI101|H1072209F0 -1072209F0:lI110|H107223CD8 -107223CD8:lI116|H107226CA0 -107226CA0:lI46|H107229898 -107229898:lI98|H10722C120 -10722C120:lI101|H10722E6D8 -10722E6D8:lI97|H1072309C0 -1072309C0:lI109|N -1071F5348:lH1071F7B88|N -1071F7B88:lI119|H1071FA7E0 -1071FA7E0:lI120|H1071FD720 -1071FD720:lI71|H1072007D8 -1072007D8:lI114|H107203980 -107203980:lI105|H107206BB0 -107206BB0:lI100|H107209E58 -107209E58:lI67|H10720D0B8 -10720D0B8:lI101|H1072102B8 -1072102B8:lI108|H107213538 -107213538:lI108|H1072168F0 -1072168F0:lI70|H107219E70 -107219E70:lI108|H10721D460 -10721D460:lI111|H107220A00 -107220A00:lI97|H107223CE8 -107223CE8:lI116|H107226CB0 -107226CB0:lI82|H1072298A8 -1072298A8:lI101|H10722C130 -10722C130:lI110|H10722E6E8 -10722E6E8:lI100|H1072309D0 -1072309D0:lI101|H107232A28 -107232A28:lI114|H107234770 -107234770:lI101|H1072361F8 -1072361F8:lI114|H107237A20 -107237A20:lI46|H107239058 -107239058:lI98|H10723A4F0 -10723A4F0:lI101|H10723B810 -10723B810:lI97|H10723C870 -10723C870:lI109|N -1071F2E50:lH1071F5328|N -1071F5328:lI119|H1071F7B68 -1071F7B68:lI120|H1071FA7C0 -1071FA7C0:lI80|H1071FD700 -1071FD700:lI114|H1072007B8 -1072007B8:lI101|H107203960 -107203960:lI118|H107206B90 -107206B90:lI105|H107209E38 -107209E38:lI101|H10720D098 -10720D098:lI119|H107210298 -107210298:lI70|H107213518 -107213518:lI114|H1072168D0 -1072168D0:lI97|H107219E50 -107219E50:lI109|H10721D440 -10721D440:lI101|H1072209E0 -1072209E0:lI46|H107223CC8 -107223CC8:lI98|H107226C90 -107226C90:lI101|H107229888 -107229888:lI97|H10722C110 -10722C110:lI109|N -1071F1190:MnA:H1071F2D88,H1071F2DA0,H1071F2DB0,H1071F2DC8,H1071F2DD8,H1071F2DE8,H1071F2DF8,H1071F2E08,H1071F2E18,H1071F2E28 -1071F2D88:Mn2:H1071F5240,H1071F5250 -1071F5240:lH1071F7A78|N -1071F7A78:lI119|H1071FA6D0 -1071FA6D0:lI120|H1071FD610 -1071FD610:lI71|H1072006C8 -1072006C8:lI114|H107203870 -107203870:lI105|H107206AA0 -107206AA0:lI100|H107209D48 -107209D48:lI83|H10720CFA8 -10720CFA8:lI105|H1072101B8 -1072101B8:lI122|H107213438 -107213438:lI101|H1072167F0 -1072167F0:lI114|H107219D80 -107219D80:lI46|H10721D380 -10721D380:lI98|H107220930 -107220930:lI101|H107223C28 -107223C28:lI97|H107226C00 -107226C00:lI109|N -1071F5250:lH1071F7A88|N -1071F7A88:lI119|H1071FA6E0 -1071FA6E0:lI120|H1071FD620 -1071FD620:lI70|H1072006D8 -1072006D8:lI111|H107203880 -107203880:lI110|H107206AB0 -107206AB0:lI116|H107209D58 -107209D58:lI46|H10720CFB8 -10720CFB8:lI98|H1072101C8 -1072101C8:lI101|H107213448 -107213448:lI97|H107216800 -107216800:lI109|N -1071F2E28:Mn2:H1071F52F8,H1071F5308 -1071F52F8:lH1071F7B38|N -1071F7B38:lI119|H1071FA790 -1071FA790:lI120|H1071FD6D0 -1071FD6D0:lI71|H107200788 -107200788:lI114|H107203930 -107203930:lI97|H107206B60 -107206B60:lI112|H107209E08 -107209E08:lI104|H10720D068 -10720D068:lI105|H107210268 -107210268:lI99|H1072134E8 -1072134E8:lI115|H1072168A0 -1072168A0:lI80|H107219E20 -107219E20:lI97|H10721D410 -10721D410:lI116|H1072209B0 -1072209B0:lI104|H107223C98 -107223C98:lI46|H107226C60 -107226C60:lI98|H107229858 -107229858:lI101|H10722C0E0 -10722C0E0:lI97|H10722E6A8 -10722E6A8:lI109|N -1071F5308:lH1071F7B48|N -1071F7B48:lI119|H1071FA7A0 -1071FA7A0:lI120|H1071FD6E0 -1071FD6E0:lI77|H107200798 -107200798:lI111|H107203940 -107203940:lI117|H107206B70 -107206B70:lI115|H107209E18 -107209E18:lI101|H10720D078 -10720D078:lI67|H107210278 -107210278:lI97|H1072134F8 -1072134F8:lI112|H1072168B0 -1072168B0:lI116|H107219E30 -107219E30:lI117|H10721D420 -10721D420:lI114|H1072209C0 -1072209C0:lI101|H107223CA8 -107223CA8:lI67|H107226C70 -107226C70:lI104|H107229868 -107229868:lI97|H10722C0F0 -10722C0F0:lI110|H10722E6B8 -10722E6B8:lI103|H1072309A0 -1072309A0:lI101|H107232A08 -107232A08:lI100|H107234750 -107234750:lI69|H1072361D8 -1072361D8:lI118|H107237A00 -107237A00:lI101|H107239038 -107239038:lI110|H10723A4D0 -10723A4D0:lI116|H10723B7F0 -10723B7F0:lI46|H10723C860 -10723C860:lI98|H10723D6F0 -10723D6F0:lI101|H10723E450 -10723E450:lI97|H10723F060 -10723F060:lI109|N -1071F2E18:Mn1:H1071F52E0 -1071F52E0:Mn2:H1071F7B18,H1071F7B28 -1071F7B18:lH1071FA770|N -1071FA770:lI119|H1071FD6B0 -1071FD6B0:lI120|H107200768 -107200768:lI80|H107203910 -107203910:lI114|H107206B40 -107206B40:lI105|H107209DE8 -107209DE8:lI110|H10720D048 -10720D048:lI116|H107210248 -107210248:lI101|H1072134C8 -1072134C8:lI114|H107216880 -107216880:lI46|H107219E00 -107219E00:lI98|H10721D3F0 -10721D3F0:lI101|H107220990 -107220990:lI97|H107223C78 -107223C78:lI109|N -1071F7B28:lH1071FA780|N -1071FA780:lI119|H1071FD6C0 -1071FD6C0:lI120|H107200778 -107200778:lI68|H107203920 -107203920:lI105|H107206B50 -107206B50:lI115|H107209DF8 -107209DF8:lI112|H10720D058 -10720D058:lI108|H107210258 -107210258:lI97|H1072134D8 -1072134D8:lI121|H107216890 -107216890:lI67|H107219E10 -107219E10:lI104|H10721D400 -10721D400:lI97|H1072209A0 -1072209A0:lI110|H107223C88 -107223C88:lI103|H107226C50 -107226C50:lI101|H107229848 -107229848:lI100|H10722C0D0 -10722C0D0:lI69|H10722E698 -10722E698:lI118|H107230990 -107230990:lI101|H1072329F8 -1072329F8:lI110|H107234740 -107234740:lI116|H1072361C8 -1072361C8:lI46|H1072379F0 -1072379F0:lI98|H107239028 -107239028:lI101|H10723A4C0 -10723A4C0:lI97|H10723B7E0 -10723B7E0:lI109|N -1071F2E08:lH1071F52D0|N -1071F52D0:lI119|H1071F7B08 -1071F7B08:lI120|H1071FA760 -1071FA760:lI66|H1071FD6A0 -1071FD6A0:lI117|H107200758 -107200758:lI102|H107203900 -107203900:lI102|H107206B30 -107206B30:lI101|H107209DD8 -107209DD8:lI114|H10720D038 -10720D038:lI101|H107210238 -107210238:lI100|H1072134B8 -1072134B8:lI68|H107216870 -107216870:lI67|H107219DF0 -107219DF0:lI46|H10721D3E0 -10721D3E0:lI98|H107220980 -107220980:lI101|H107223C68 -107223C68:lI97|H107226C40 -107226C40:lI109|N -1071F2DF8:lH1071F52C0|N -1071F52C0:lI119|H1071F7AF8 -1071F7AF8:lI120|H1071FA750 -1071FA750:lI67|H1071FD690 -1071FD690:lI111|H107200748 -107200748:lI108|H1072038F0 -1072038F0:lI111|H107206B20 -107206B20:lI117|H107209DC8 -107209DC8:lI114|H10720D028 -10720D028:lI80|H107210228 -107210228:lI105|H1072134A8 -1072134A8:lI99|H107216860 -107216860:lI107|H107219DE0 -107219DE0:lI101|H10721D3D0 -10721D3D0:lI114|H107220970 -107220970:lI69|H107223C58 -107223C58:lI118|H107226C30 -107226C30:lI101|H107229838 -107229838:lI110|H10722C0C0 -10722C0C0:lI116|H10722E688 -10722E688:lI46|H107230980 -107230980:lI98|H1072329E8 -1072329E8:lI101|H107234730 -107234730:lI97|H1072361B8 -1072361B8:lI109|N -1071F2DE8:lH1071F52B0|N -1071F52B0:lI119|H1071F7AE8 -1071F7AE8:lI120|H1071FA740 -1071FA740:lI101|H1071FD680 -1071FD680:lI95|H107200738 -107200738:lI117|H1072038E0 -1072038E0:lI116|H107206B10 -107206B10:lI105|H107209DB8 -107209DB8:lI108|H10720D018 -10720D018:lI46|H107210218 -107210218:lI98|H107213498 -107213498:lI101|H107216850 -107216850:lI97|H107219DD0 -107219DD0:lI109|N -1071F2DD8:lH1071F52A0|N -1071F52A0:lI119|H1071F7AD8 -1071F7AD8:lI120|H1071FA730 -1071FA730:lI70|H1071FD670 -1071FD670:lI108|H107200728 -107200728:lI101|H1072038D0 -1072038D0:lI120|H107206B00 -107206B00:lI71|H107209DA8 -107209DA8:lI114|H10720D008 -10720D008:lI105|H107210208 -107210208:lI100|H107213488 -107213488:lI83|H107216840 -107216840:lI105|H107219DC0 -107219DC0:lI122|H10721D3C0 -10721D3C0:lI101|H107220960 -107220960:lI114|H107223C48 -107223C48:lI46|H107226C20 -107226C20:lI98|H107229828 -107229828:lI101|H10722C0B0 -10722C0B0:lI97|H10722E678 -10722E678:lI109|N -1071F2DC8:lH1071F5290|N -1071F5290:lI119|H1071F7AC8 -1071F7AC8:lI120|H1071FA720 -1071FA720:lI87|H1071FD660 -1071FD660:lI101|H107200718 -107200718:lI98|H1072038C0 -1072038C0:lI86|H107206AF0 -107206AF0:lI105|H107209D98 -107209D98:lI101|H10720CFF8 -10720CFF8:lI119|H1072101F8 -1072101F8:lI46|H107213478 -107213478:lI98|H107216830 -107216830:lI101|H107219DB0 -107219DB0:lI97|H10721D3B0 -10721D3B0:lI109|N -1071F2DB0:Mn2:H1071F5270,H1071F5280 -1071F5270:lH1071F7AA8|N -1071F7AA8:lI119|H1071FA700 -1071FA700:lI120|H1071FD640 -1071FD640:lI46|H1072006F8 -1072006F8:lI97|H1072038A0 -1072038A0:lI112|H107206AD0 -107206AD0:lI112|H107209D78 -107209D78:lI117|H10720CFD8 -10720CFD8:lI112|N -1071F5280:lH1071F7AB8|N -1071F7AB8:lI119|H1071FA710 -1071FA710:lI120|H1071FD650 -1071FD650:lI83|H107200708 -107200708:lI116|H1072038B0 -1072038B0:lI121|H107206AE0 -107206AE0:lI108|H107209D88 -107209D88:lI101|H10720CFE8 -10720CFE8:lI100|H1072101E8 -1072101E8:lI84|H107213468 -107213468:lI101|H107216820 -107216820:lI120|H107219DA0 -107219DA0:lI116|H10721D3A0 -10721D3A0:lI67|H107220950 -107220950:lI116|H107223C38 -107223C38:lI114|H107226C10 -107226C10:lI108|H107229818 -107229818:lI46|H10722C0A0 -10722C0A0:lI98|H10722E668 -10722E668:lI101|H107230970 -107230970:lI97|H1072329D8 -1072329D8:lI109|N -1071F2DA0:lH1071F5260|N -1071F5260:lI119|H1071F7A98 -1071F7A98:lI120|H1071FA6F0 -1071FA6F0:lI77|H1071FD630 -1071FD630:lI101|H1072006E8 -1072006E8:lI109|H107203890 -107203890:lI111|H107206AC0 -107206AC0:lI114|H107209D68 -107209D68:lI121|H10720CFC8 -10720CFC8:lI68|H1072101D8 -1072101D8:lI67|H107213458 -107213458:lI46|H107216810 -107216810:lI98|H107219D90 -107219D90:lI101|H10721D390 -10721D390:lI97|H107220940 -107220940:lI109|N -1071F1130:MnB:H1071F2CB8,H1071F2CC8,H1071F2CD8,H1071F2CF0,H1071F2D00,H1071F2D18,H1071F2D28,H1071F2D38,H1071F2D48,H1071F2D58,H1071F2D68 -1071F2CB8:lH1071F5150|N -1071F5150:lI119|H1071F7988 -1071F7988:lI120|H1071FA5E0 -1071FA5E0:lI83|H1071FD520 -1071FD520:lI99|H1072005D8 -1072005D8:lI114|H107203780 -107203780:lI111|H1072069B0 -1072069B0:lI108|H107209C58 -107209C58:lI108|H10720CEB8 -10720CEB8:lI101|H1072100C8 -1072100C8:lI100|H107213348 -107213348:lI87|H107216700 -107216700:lI105|H107219C90 -107219C90:lI110|H10721D290 -10721D290:lI100|H107220850 -107220850:lI111|H107223B48 -107223B48:lI119|H107226B30 -107226B30:lI46|H107229758 -107229758:lI98|H10722BFE0 -10722BFE0:lI101|H10722E5C8 -10722E5C8:lI97|H1072308D0 -1072308D0:lI109|N -1071F2D68:Mn3:H1071F5210,H1071F5220,H1071F5230 -1071F5210:lH1071F7A48|N -1071F7A48:lI119|H1071FA6A0 -1071FA6A0:lI120|H1071FD5E0 -1071FD5E0:lI80|H107200698 -107200698:lI111|H107203840 -107203840:lI112|H107206A70 -107206A70:lI117|H107209D18 -107209D18:lI112|H10720CF78 -10720CF78:lI84|H107210188 -107210188:lI114|H107213408 -107213408:lI97|H1072167C0 -1072167C0:lI110|H107219D50 -107219D50:lI115|H10721D350 -10721D350:lI105|H107220900 -107220900:lI101|H107223BF8 -107223BF8:lI110|H107226BE0 -107226BE0:lI116|H1072297F8 -1072297F8:lI87|H10722C080 -10722C080:lI105|H10722E648 -10722E648:lI110|H107230950 -107230950:lI100|H1072329C8 -1072329C8:lI111|H107234720 -107234720:lI119|H1072361A8 -1072361A8:lI46|H1072379E0 -1072379E0:lI98|H107239018 -107239018:lI101|H10723A4B0 -10723A4B0:lI97|H10723B7D0 -10723B7D0:lI109|N -1071F5230:lH1071F7A68|N -1071F7A68:lI119|H1071FA6C0 -1071FA6C0:lI120|H1071FD600 -1071FD600:lI67|H1072006B8 -1072006B8:lI108|H107203860 -107203860:lI105|H107206A90 -107206A90:lI101|H107209D38 -107209D38:lI110|H10720CF98 -10720CF98:lI116|H1072101A8 -1072101A8:lI68|H107213428 -107213428:lI67|H1072167E0 -1072167E0:lI46|H107219D70 -107219D70:lI98|H10721D370 -10721D370:lI101|H107220920 -107220920:lI97|H107223C18 -107223C18:lI109|N -1071F5220:lH1071F7A58|N -1071F7A58:lI119|H1071FA6B0 -1071FA6B0:lI120|H1071FD5F0 -1071FD5F0:lI66|H1072006A8 -1072006A8:lI111|H107203850 -107203850:lI111|H107206A80 -107206A80:lI107|H107209D28 -107209D28:lI67|H10720CF88 -10720CF88:lI116|H107210198 -107210198:lI114|H107213418 -107213418:lI108|H1072167D0 -1072167D0:lI69|H107219D60 -107219D60:lI118|H10721D360 -10721D360:lI101|H107220910 -107220910:lI110|H107223C08 -107223C08:lI116|H107226BF0 -107226BF0:lI46|H107229808 -107229808:lI98|H10722C090 -10722C090:lI101|H10722E658 -10722E658:lI97|H107230960 -107230960:lI109|N -1071F2D58:lH1071F5200|N -1071F5200:lI119|H1071F7A38 -1071F7A38:lI120|H1071FA690 -1071FA690:lI77|H1071FD5D0 -1071FD5D0:lI101|H107200688 -107200688:lI110|H107203830 -107203830:lI117|H107206A60 -107206A60:lI66|H107209D08 -107209D08:lI97|H10720CF68 -10720CF68:lI114|H107210178 -107210178:lI46|H1072133F8 -1072133F8:lI98|H1072167B0 -1072167B0:lI101|H107219D40 -107219D40:lI97|H10721D340 -10721D340:lI109|N -1071F2D48:lH1071F51F0|N -1071F51F0:lI119|H1071F7A28 -1071F7A28:lI120|H1071FA680 -1071FA680:lI78|H1071FD5C0 -1071FD5C0:lI97|H107200678 -107200678:lI118|H107203820 -107203820:lI105|H107206A50 -107206A50:lI103|H107209CF8 -107209CF8:lI97|H10720CF58 -10720CF58:lI116|H107210168 -107210168:lI105|H1072133E8 -1072133E8:lI111|H1072167A0 -1072167A0:lI110|H107219D30 -107219D30:lI75|H10721D330 -10721D330:lI101|H1072208F0 -1072208F0:lI121|H107223BE8 -107223BE8:lI69|H107226BD0 -107226BD0:lI118|H1072297E8 -1072297E8:lI101|H10722C070 -10722C070:lI110|H10722E638 -10722E638:lI116|H107230940 -107230940:lI46|H1072329B8 -1072329B8:lI98|H107234710 -107234710:lI101|H107236198 -107236198:lI97|H1072379D0 -1072379D0:lI109|N -1071F2D38:lH1071F51E0|N -1071F51E0:lI119|H1071F7A18 -1071F7A18:lI120|H1071FA670 -1071FA670:lI84|H1071FD5B0 -1071FD5B0:lI111|H107200668 -107200668:lI112|H107203810 -107203810:lI76|H107206A40 -107206A40:lI101|H107209CE8 -107209CE8:lI118|H10720CF48 -10720CF48:lI101|H107210158 -107210158:lI108|H1072133D8 -1072133D8:lI87|H107216790 -107216790:lI105|H107219D20 -107219D20:lI110|H10721D320 -10721D320:lI100|H1072208E0 -1072208E0:lI111|H107223BD8 -107223BD8:lI119|H107226BC0 -107226BC0:lI46|H1072297D8 -1072297D8:lI98|H10722C060 -10722C060:lI101|H10722E628 -10722E628:lI97|H107230930 -107230930:lI109|N -1071F2D28:lH1071F51D0|N -1071F51D0:lI119|H1071F7A08 -1071F7A08:lI120|H1071FA660 -1071FA660:lI83|H1071FD5A0 -1071FD5A0:lI116|H107200658 -107200658:lI97|H107203800 -107203800:lI116|H107206A30 -107206A30:lI105|H107209CD8 -107209CD8:lI99|H10720CF38 -10720CF38:lI66|H107210148 -107210148:lI105|H1072133C8 -1072133C8:lI116|H107216780 -107216780:lI109|H107219D10 -107219D10:lI97|H10721D310 -10721D310:lI112|H1072208D0 -1072208D0:lI46|H107223BC8 -107223BC8:lI98|H107226BB0 -107226BB0:lI101|H1072297C8 -1072297C8:lI97|H10722C050 -10722C050:lI109|N -1071F2D18:lH1071F51C0|N -1071F51C0:lI119|H1071F79F8 -1071F79F8:lI120|H1071FA650 -1071FA650:lI83|H1071FD590 -1071FD590:lI121|H107200648 -107200648:lI115|H1072037F0 -1072037F0:lI116|H107206A20 -107206A20:lI101|H107209CC8 -107209CC8:lI109|H10720CF28 -10720CF28:lI83|H107210138 -107210138:lI101|H1072133B8 -1072133B8:lI116|H107216770 -107216770:lI116|H107219D00 -107219D00:lI105|H10721D300 -10721D300:lI110|H1072208C0 -1072208C0:lI103|H107223BB8 -107223BB8:lI115|H107226BA0 -107226BA0:lI46|H1072297B8 -1072297B8:lI98|H10722C040 -10722C040:lI101|H10722E618 -10722E618:lI97|H107230920 -107230920:lI109|N -1071F2D00:Mn2:H1071F51A0,H1071F51B0 -1071F51A0:lH1071F79D8|N -1071F79D8:lI119|H1071FA630 -1071FA630:lI120|H1071FD570 -1071FD570:lI80|H107200628 -107200628:lI114|H1072037D0 -1072037D0:lI101|H107206A00 -107206A00:lI118|H107209CA8 -107209CA8:lI105|H10720CF08 -10720CF08:lI101|H107210118 -107210118:lI119|H107213398 -107213398:lI67|H107216750 -107216750:lI111|H107219CE0 -107219CE0:lI110|H10721D2E0 -10721D2E0:lI116|H1072208A0 -1072208A0:lI114|H107223B98 -107223B98:lI111|H107226B80 -107226B80:lI108|H107229798 -107229798:lI66|H10722C020 -10722C020:lI97|H10722E608 -10722E608:lI114|H107230910 -107230910:lI46|H1072329A8 -1072329A8:lI98|H107234700 -107234700:lI101|H107236188 -107236188:lI97|H1072379C0 -1072379C0:lI109|N -1071F51B0:lH1071F79E8|N -1071F79E8:lI119|H1071FA640 -1071FA640:lI120|H1071FD580 -1071FD580:lI65|H107200638 -107200638:lI117|H1072037E0 -1072037E0:lI105|H107206A10 -107206A10:lI80|H107209CB8 -107209CB8:lI97|H10720CF18 -10720CF18:lI110|H107210128 -107210128:lI101|H1072133A8 -1072133A8:lI73|H107216760 -107216760:lI110|H107219CF0 -107219CF0:lI102|H10721D2F0 -10721D2F0:lI111|H1072208B0 -1072208B0:lI46|H107223BA8 -107223BA8:lI98|H107226B90 -107226B90:lI101|H1072297A8 -1072297A8:lI97|H10722C030 -10722C030:lI109|N -1071F2CF0:lH1071F5190|N -1071F5190:lI119|H1071F79C8 -1071F79C8:lI120|H1071FA620 -1071FA620:lI70|H1071FD560 -1071FD560:lI105|H107200618 -107200618:lI110|H1072037C0 -1072037C0:lI100|H1072069F0 -1072069F0:lI82|H107209C98 -107209C98:lI101|H10720CEF8 -10720CEF8:lI112|H107210108 -107210108:lI108|H107213388 -107213388:lI97|H107216740 -107216740:lI99|H107219CD0 -107219CD0:lI101|H10721D2D0 -10721D2D0:lI68|H107220890 -107220890:lI97|H107223B88 -107223B88:lI116|H107226B70 -107226B70:lI97|H107229788 -107229788:lI46|H10722C010 -10722C010:lI98|H10722E5F8 -10722E5F8:lI101|H107230900 -107230900:lI97|H107232998 -107232998:lI109|N -1071F2CD8:Mn2:H1071F5170,H1071F5180 -1071F5170:lH1071F79A8|N -1071F79A8:lI119|H1071FA600 -1071FA600:lI120|H1071FD540 -1071FD540:lI77|H1072005F8 -1072005F8:lI111|H1072037A0 -1072037A0:lI118|H1072069D0 -1072069D0:lI101|H107209C78 -107209C78:lI69|H10720CED8 -10720CED8:lI118|H1072100E8 -1072100E8:lI101|H107213368 -107213368:lI110|H107216720 -107216720:lI116|H107219CB0 -107219CB0:lI46|H10721D2B0 -10721D2B0:lI98|H107220870 -107220870:lI101|H107223B68 -107223B68:lI97|H107226B50 -107226B50:lI109|N -1071F5180:lH1071F79B8|N -1071F79B8:lI119|H1071FA610 -1071FA610:lI120|H1071FD550 -1071FD550:lI72|H107200608 -107200608:lI116|H1072037B0 -1072037B0:lI109|H1072069E0 -1072069E0:lI108|H107209C88 -107209C88:lI69|H10720CEE8 -10720CEE8:lI97|H1072100F8 -1072100F8:lI115|H107213378 -107213378:lI121|H107216730 -107216730:lI80|H107219CC0 -107219CC0:lI114|H10721D2C0 -10721D2C0:lI105|H107220880 -107220880:lI110|H107223B78 -107223B78:lI116|H107226B60 -107226B60:lI105|H107229778 -107229778:lI110|H10722C000 -10722C000:lI103|H10722E5E8 -10722E5E8:lI46|H1072308F0 -1072308F0:lI98|H107232988 -107232988:lI101|H1072346F0 -1072346F0:lI97|H107236178 -107236178:lI109|N -1071F2CC8:lH1071F5160|N -1071F5160:lI119|H1071F7998 -1071F7998:lI120|H1071FA5F0 -1071FA5F0:lI65|H1071FD530 -1071FD530:lI99|H1072005E8 -1072005E8:lI99|H107203790 -107203790:lI101|H1072069C0 -1072069C0:lI108|H107209C68 -107209C68:lI101|H10720CEC8 -10720CEC8:lI114|H1072100D8 -1072100D8:lI97|H107213358 -107213358:lI116|H107216710 -107216710:lI111|H107219CA0 -107219CA0:lI114|H10721D2A0 -10721D2A0:lI84|H107220860 -107220860:lI97|H107223B58 -107223B58:lI98|H107226B40 -107226B40:lI108|H107229768 -107229768:lI101|H10722BFF0 -10722BFF0:lI46|H10722E5D8 -10722E5D8:lI98|H1072308E0 -1072308E0:lI101|H107232978 -107232978:lI97|H1072346E0 -1072346E0:lI109|N -1071F10B0:MnF:H1071F2B88,H1071F2B98,H1071F2BB0,H1071F2BC8,H1071F2BD8,H1071F2BE8,H1071F2BF8,H1071F2C10,H1071F2C20,H1071F2C40,H1071F2C50,H1071F2C60,H1071F2C78,H1071F2C88,H1071F2CA0 -1071F2B88:lH1071F4FE0|N -1071F4FE0:lI119|H1071F7818 -1071F7818:lI120|H1071FA470 -1071FA470:lI76|H1071FD3B0 -1071FD3B0:lI97|H107200468 -107200468:lI121|H107203610 -107203610:lI111|H107206840 -107206840:lI117|H107209AE8 -107209AE8:lI116|H10720CD48 -10720CD48:lI65|H10720FF58 -10720FF58:lI108|H1072131D8 -1072131D8:lI103|H107216590 -107216590:lI111|H107219B30 -107219B30:lI114|H10721D150 -10721D150:lI105|H107220710 -107220710:lI116|H107223A48 -107223A48:lI104|H107226A60 -107226A60:lI109|H107229698 -107229698:lI46|H10722BF50 -10722BF50:lI98|H10722E538 -10722E538:lI101|H107230860 -107230860:lI97|H107232928 -107232928:lI109|N -1071F2CA0:Mn2:H1071F5130,H1071F5140 -1071F5130:lH1071F7968|N -1071F7968:lI119|H1071FA5C0 -1071FA5C0:lI120|H1071FD500 -1071FD500:lI76|H1072005B8 -1072005B8:lI111|H107203760 -107203760:lI103|H107206990 -107206990:lI78|H107209C38 -107209C38:lI117|H10720CE98 -10720CE98:lI108|H1072100A8 -1072100A8:lI108|H107213328 -107213328:lI46|H1072166E0 -1072166E0:lI98|H107219C70 -107219C70:lI101|H10721D270 -10721D270:lI97|H107220830 -107220830:lI109|N -1071F5140:lH1071F7978|N -1071F7978:lI119|H1071FA5D0 -1071FA5D0:lI120|H1071FD510 -1071FD510:lI71|H1072005C8 -1072005C8:lI114|H107203770 -107203770:lI105|H1072069A0 -1072069A0:lI100|H107209C48 -107209C48:lI67|H10720CEA8 -10720CEA8:lI101|H1072100B8 -1072100B8:lI108|H107213338 -107213338:lI108|H1072166F0 -1072166F0:lI78|H107219C80 -107219C80:lI117|H10721D280 -10721D280:lI109|H107220840 -107220840:lI98|H107223B38 -107223B38:lI101|H107226B20 -107226B20:lI114|H107229748 -107229748:lI82|H10722BFD0 -10722BFD0:lI101|H10722E5B8 -10722E5B8:lI110|H1072308C0 -1072308C0:lI100|H107232968 -107232968:lI101|H1072346D0 -1072346D0:lI114|H107236168 -107236168:lI101|H1072379B0 -1072379B0:lI114|H107239008 -107239008:lI46|H10723A4A0 -10723A4A0:lI98|H10723B7C0 -10723B7C0:lI101|H10723C850 -10723C850:lI97|H10723D6E0 -10723D6E0:lI109|N -1071F2C88:Mn2:H1071F5110,H1071F5120 -1071F5110:lH1071F7948|N -1071F7948:lI119|H1071FA5A0 -1071FA5A0:lI120|H1071FD4E0 -1071FD4E0:lI67|H107200598 -107200598:lI111|H107203740 -107203740:lI108|H107206970 -107206970:lI111|H107209C18 -107209C18:lI117|H10720CE78 -10720CE78:lI114|H107210088 -107210088:lI68|H107213308 -107213308:lI97|H1072166C0 -1072166C0:lI116|H107219C60 -107219C60:lI97|H10721D260 -10721D260:lI46|H107220820 -107220820:lI98|H107223B28 -107223B28:lI101|H107226B10 -107226B10:lI97|H107229738 -107229738:lI109|N -1071F5120:lH1071F7958|N -1071F7958:lI119|H1071FA5B0 -1071FA5B0:lI120|H1071FD4F0 -1071FD4F0:lI73|H1072005A8 -1072005A8:lI99|H107203750 -107203750:lI111|H107206980 -107206980:lI110|H107209C28 -107209C28:lI46|H10720CE88 -10720CE88:lI98|H107210098 -107210098:lI101|H107213318 -107213318:lI97|H1072166D0 -1072166D0:lI109|N -1071F2C78:lH1071F5100|N -1071F5100:lI119|H1071F7938 -1071F7938:lI120|H1071FA590 -1071FA590:lI77|H1071FD4D0 -1071FD4D0:lI105|H107200588 -107200588:lI114|H107203730 -107203730:lI114|H107206960 -107206960:lI111|H107209C08 -107209C08:lI114|H10720CE68 -10720CE68:lI68|H107210078 -107210078:lI67|H1072132F8 -1072132F8:lI46|H1072166B0 -1072166B0:lI98|H107219C50 -107219C50:lI101|H10721D250 -10721D250:lI97|H107220810 -107220810:lI109|N -1071F2C60:Mn2:H1071F50E0,H1071F50F0 -1071F50E0:lH1071F7918|N -1071F7918:lI119|H1071FA570 -1071FA570:lI120|H1071FD4B0 -1071FD4B0:lI65|H107200568 -107200568:lI117|H107203710 -107203710:lI105|H107206940 -107206940:lI83|H107209BE8 -107209BE8:lI105|H10720CE48 -10720CE48:lI109|H107210058 -107210058:lI112|H1072132D8 -1072132D8:lI108|H107216690 -107216690:lI101|H107219C30 -107219C30:lI84|H10721D230 -10721D230:lI97|H1072207F0 -1072207F0:lI98|H107223B08 -107223B08:lI65|H107226AF0 -107226AF0:lI114|H107229718 -107229718:lI116|H10722BFB0 -10722BFB0:lI46|H10722E598 -10722E598:lI98|H1072308B0 -1072308B0:lI101|H107232958 -107232958:lI97|H1072346C0 -1072346C0:lI109|N -1071F50F0:lH1071F7928|N -1071F7928:lI119|H1071FA580 -1071FA580:lI120|H1071FD4C0 -1071FD4C0:lI87|H107200578 -107200578:lI101|H107203720 -107203720:lI98|H107206950 -107206950:lI86|H107209BF8 -107209BF8:lI105|H10720CE58 -10720CE58:lI101|H107210068 -107210068:lI119|H1072132E8 -1072132E8:lI69|H1072166A0 -1072166A0:lI118|H107219C40 -107219C40:lI101|H10721D240 -10721D240:lI110|H107220800 -107220800:lI116|H107223B18 -107223B18:lI46|H107226B00 -107226B00:lI98|H107229728 -107229728:lI101|H10722BFC0 -10722BFC0:lI97|H10722E5A8 -10722E5A8:lI109|N -1071F2C50:lH1071F50D0|N -1071F50D0:lI119|H1071F7908 -1071F7908:lI120|H1071FA560 -1071FA560:lI78|H1071FD4A0 -1071FD4A0:lI111|H107200558 -107200558:lI116|H107203700 -107203700:lI105|H107206930 -107206930:lI102|H107209BD8 -107209BD8:lI121|H10720CE38 -10720CE38:lI69|H107210048 -107210048:lI118|H1072132C8 -1072132C8:lI101|H107216680 -107216680:lI110|H107219C20 -107219C20:lI116|H10721D220 -10721D220:lI46|H1072207E0 -1072207E0:lI98|H107223AF8 -107223AF8:lI101|H107226AE0 -107226AE0:lI97|H107229708 -107229708:lI109|N -1071F2C40:lH1071F50C0|N -1071F50C0:lI119|H1071F78F8 -1071F78F8:lI120|H1071FA550 -1071FA550:lI65|H1071FD490 -1071FD490:lI117|H107200548 -107200548:lI105|H1072036F0 -1072036F0:lI84|H107206920 -107206920:lI97|H107209BC8 -107209BC8:lI98|H10720CE28 -10720CE28:lI65|H107210038 -107210038:lI114|H1072132B8 -1072132B8:lI116|H107216670 -107216670:lI46|H107219C10 -107219C10:lI98|H10721D210 -10721D210:lI101|H1072207D0 -1072207D0:lI97|H107223AE8 -107223AE8:lI109|N -1071F2C20:Mn3:H1071F5090,H1071F50A0,H1071F50B0 -1071F5090:lH1071F78C8|N -1071F78C8:lI119|H1071FA520 -1071FA520:lI120|H1071FD460 -1071FD460:lI77|H107200518 -107200518:lI68|H1072036C0 -1072036C0:lI73|H1072068F0 -1072068F0:lI80|H107209B98 -107209B98:lI97|H10720CDF8 -10720CDF8:lI114|H107210008 -107210008:lI101|H107213288 -107213288:lI110|H107216640 -107216640:lI116|H107219BE0 -107219BE0:lI70|H10721D1E0 -10721D1E0:lI114|H1072207A0 -1072207A0:lI97|H107223AB8 -107223AB8:lI109|H107226AC0 -107226AC0:lI101|H1072296F8 -1072296F8:lI46|H10722BFA0 -10722BFA0:lI98|H10722E588 -10722E588:lI101|H1072308A0 -1072308A0:lI97|H107232948 -107232948:lI109|N -1071F50B0:lH1071F78E8|N -1071F78E8:lI119|H1071FA540 -1071FA540:lI120|H1071FD480 -1071FD480:lI71|H107200538 -107200538:lI114|H1072036E0 -1072036E0:lI105|H107206910 -107206910:lI100|H107209BB8 -107209BB8:lI69|H10720CE18 -10720CE18:lI118|H107210028 -107210028:lI101|H1072132A8 -1072132A8:lI110|H107216660 -107216660:lI116|H107219C00 -107219C00:lI46|H10721D200 -10721D200:lI98|H1072207C0 -1072207C0:lI101|H107223AD8 -107223AD8:lI97|H107226AD0 -107226AD0:lI109|N -1071F50A0:lH1071F78D8|N -1071F78D8:lI119|H1071FA530 -1071FA530:lI120|H1071FD470 -1071FD470:lI83|H107200528 -107200528:lI99|H1072036D0 -1072036D0:lI114|H107206900 -107206900:lI101|H107209BA8 -107209BA8:lI101|H10720CE08 -10720CE08:lI110|H107210018 -107210018:lI68|H107213298 -107213298:lI67|H107216650 -107216650:lI46|H107219BF0 -107219BF0:lI98|H10721D1F0 -10721D1F0:lI101|H1072207B0 -1072207B0:lI97|H107223AC8 -107223AC8:lI109|N -1071F2C10:lH1071F5080|N -1071F5080:lI119|H1071F78B8 -1071F78B8:lI120|H1071FA510 -1071FA510:lI80|H1071FD450 -1071FD450:lI114|H107200508 -107200508:lI105|H1072036B0 -1072036B0:lI110|H1072068E0 -1072068E0:lI116|H107209B88 -107209B88:lI111|H10720CDE8 -10720CDE8:lI117|H10720FFF8 -10720FFF8:lI116|H107213278 -107213278:lI46|H107216630 -107216630:lI98|H107219BD0 -107219BD0:lI101|H10721D1D0 -10721D1D0:lI97|H107220790 -107220790:lI109|N -1071F2BF8:Mn2:H1071F5060,H1071F5070 -1071F5060:lH1071F7898|N -1071F7898:lI119|H1071FA4F0 -1071FA4F0:lI120|H1071FD430 -1071FD430:lI69|H1072004E8 -1072004E8:lI118|H107203690 -107203690:lI116|H1072068C0 -1072068C0:lI72|H107209B68 -107209B68:lI97|H10720CDC8 -10720CDC8:lI110|H10720FFD8 -10720FFD8:lI100|H107213258 -107213258:lI108|H107216610 -107216610:lI101|H107219BB0 -107219BB0:lI114|H10721D1B0 -10721D1B0:lI46|H107220770 -107220770:lI98|H107223A98 -107223A98:lI101|H107226AA0 -107226AA0:lI97|H1072296D8 -1072296D8:lI109|N -1071F5070:lH1071F78A8|N -1071F78A8:lI119|H1071FA500 -1071FA500:lI120|H1071FD440 -1071FD440:lI68|H1072004F8 -1072004F8:lI105|H1072036A0 -1072036A0:lI114|H1072068D0 -1072068D0:lI80|H107209B78 -107209B78:lI105|H10720CDD8 -10720CDD8:lI99|H10720FFE8 -10720FFE8:lI107|H107213268 -107213268:lI101|H107216620 -107216620:lI114|H107219BC0 -107219BC0:lI67|H10721D1C0 -10721D1C0:lI116|H107220780 -107220780:lI114|H107223AA8 -107223AA8:lI108|H107226AB0 -107226AB0:lI46|H1072296E8 -1072296E8:lI98|H10722BF90 -10722BF90:lI101|H10722E578 -10722E578:lI97|H107230890 -107230890:lI109|N -1071F2BE8:lH1071F5050|N -1071F5050:lI119|H1071F7888 -1071F7888:lI120|H1071FA4E0 -1071FA4E0:lI84|H1071FD420 -1071FD420:lI114|H1072004D8 -1072004D8:lI101|H107203680 -107203680:lI101|H1072068B0 -1072068B0:lI98|H107209B58 -107209B58:lI111|H10720CDB8 -10720CDB8:lI111|H10720FFC8 -10720FFC8:lI107|H107213248 -107213248:lI46|H107216600 -107216600:lI98|H107219BA0 -107219BA0:lI101|H10721D1A0 -10721D1A0:lI97|H107220760 -107220760:lI109|N -1071F2BD8:lH1071F5040|N -1071F5040:lI119|H1071F7878 -1071F7878:lI120|H1071FA4D0 -1071FA4D0:lI76|H1071FD410 -1071FD410:lI111|H1072004C8 -1072004C8:lI99|H107203670 -107203670:lI97|H1072068A0 -1072068A0:lI108|H107209B48 -107209B48:lI101|H10720CDA8 -10720CDA8:lI46|H10720FFB8 -10720FFB8:lI98|H107213238 -107213238:lI101|H1072165F0 -1072165F0:lI97|H107219B90 -107219B90:lI109|N -1071F2BC8:lH1071F5030|N -1071F5030:lI119|H1071F7868 -1071F7868:lI120|H1071FA4C0 -1071FA4C0:lI77|H1071FD400 -1071FD400:lI97|H1072004B8 -1072004B8:lI120|H107203660 -107203660:lI105|H107206890 -107206890:lI109|H107209B38 -107209B38:lI105|H10720CD98 -10720CD98:lI122|H10720FFA8 -10720FFA8:lI101|H107213228 -107213228:lI69|H1072165E0 -1072165E0:lI118|H107219B80 -107219B80:lI101|H10721D190 -10721D190:lI110|H107220750 -107220750:lI116|H107223A88 -107223A88:lI46|H107226A90 -107226A90:lI98|H1072296C8 -1072296C8:lI101|H10722BF80 -10722BF80:lI97|H10722E568 -10722E568:lI109|N -1071F2BB0:Mn2:H1071F5010,H1071F5020 -1071F5010:lH1071F7848|N -1071F7848:lI119|H1071FA4A0 -1071FA4A0:lI120|H1071FD3E0 -1071FD3E0:lI77|H107200498 -107200498:lI101|H107203640 -107203640:lI115|H107206870 -107206870:lI115|H107209B18 -107209B18:lI97|H10720CD78 -10720CD78:lI103|H10720FF88 -10720FF88:lI101|H107213208 -107213208:lI68|H1072165C0 -1072165C0:lI105|H107219B60 -107219B60:lI97|H10721D170 -10721D170:lI108|H107220730 -107220730:lI111|H107223A68 -107223A68:lI103|H107226A70 -107226A70:lI46|H1072296A8 -1072296A8:lI98|H10722BF60 -10722BF60:lI101|H10722E548 -10722E548:lI97|H107230870 -107230870:lI109|N -1071F5020:lH1071F7858|N -1071F7858:lI119|H1071FA4B0 -1071FA4B0:lI120|H1071FD3F0 -1071FD3F0:lI71|H1072004A8 -1072004A8:lI101|H107203650 -107203650:lI110|H107206880 -107206880:lI101|H107209B28 -107209B28:lI114|H10720CD88 -10720CD88:lI105|H10720FF98 -10720FF98:lI99|H107213218 -107213218:lI68|H1072165D0 -1072165D0:lI105|H107219B70 -107219B70:lI114|H10721D180 -10721D180:lI67|H107220740 -107220740:lI116|H107223A78 -107223A78:lI114|H107226A80 -107226A80:lI108|H1072296B8 -1072296B8:lI46|H10722BF70 -10722BF70:lI98|H10722E558 -10722E558:lI101|H107230880 -107230880:lI97|H107232938 -107232938:lI109|N -1071F2B98:Mn2:H1071F4FF0,H1071F5000 -1071F4FF0:lH1071F7828|N -1071F7828:lI119|H1071FA480 -1071FA480:lI120|H1071FD3C0 -1071FD3C0:lI71|H107200478 -107200478:lI76|H107203620 -107203620:lI67|H107206850 -107206850:lI97|H107209AF8 -107209AF8:lI110|H10720CD58 -10720CD58:lI118|H10720FF68 -10720FF68:lI97|H1072131E8 -1072131E8:lI115|H1072165A0 -1072165A0:lI46|H107219B40 -107219B40:lI98|H10721D160 -10721D160:lI101|H107220720 -107220720:lI97|H107223A58 -107223A58:lI109|N -1071F5000:lH1071F7838|N -1071F7838:lI119|H1071FA490 -1071FA490:lI120|H1071FD3D0 -1071FD3D0:lI83|H107200488 -107200488:lI105|H107203630 -107203630:lI122|H107206860 -107206860:lI101|H107209B08 -107209B08:lI114|H10720CD68 -10720CD68:lI46|H10720FF78 -10720FF78:lI98|H1072131F8 -1072131F8:lI101|H1072165B0 -1072165B0:lI97|H107219B50 -107219B50:lI109|N -1071F1050:MnB:H1071F2A98,H1071F2AB0,H1071F2AC8,H1071F2AE0,H1071F2AF8,H1071F2B18,H1071F2B28,H1071F2B38,H1071F2B50,H1071F2B60,H1071F2B70 -1071F2A98:Mn2:H1071F4EB0,H1071F4EC0 -1071F4EB0:lH1071F76E8|N -1071F76E8:lI119|H1071FA340 -1071FA340:lI120|H1071FD280 -1071FD280:lI80|H107200338 -107200338:lI97|H1072034E0 -1072034E0:lI110|H107206710 -107206710:lI101|H1072099B8 -1072099B8:lI108|H10720CC18 -10720CC18:lI46|H10720FE28 -10720FE28:lI98|H1072130A8 -1072130A8:lI101|H107216460 -107216460:lI97|H107219A10 -107219A10:lI109|N -1071F4EC0:lH1071F76F8|N -1071F76F8:lI119|H1071FA350 -1071FA350:lI120|H1071FD290 -1071FD290:lI83|H107200348 -107200348:lI116|H1072034F0 -1072034F0:lI97|H107206720 -107206720:lI116|H1072099C8 -1072099C8:lI105|H10720CC28 -10720CC28:lI99|H10720FE38 -10720FE38:lI76|H1072130B8 -1072130B8:lI105|H107216470 -107216470:lI110|H107219A20 -107219A20:lI101|H10721D040 -10721D040:lI46|H107220610 -107220610:lI98|H107223948 -107223948:lI101|H107226980 -107226980:lI97|H1072295F8 -1072295F8:lI109|N -1071F2B70:Mn2:H1071F4FC0,H1071F4FD0 -1071F4FC0:lH1071F77F8|N -1071F77F8:lI119|H1071FA450 -1071FA450:lI120|H1071FD390 -1071FD390:lI67|H107200448 -107200448:lI111|H1072035F0 -1072035F0:lI108|H107206820 -107206820:lI111|H107209AC8 -107209AC8:lI117|H10720CD28 -10720CD28:lI114|H10720FF38 -10720FF38:lI80|H1072131B8 -1072131B8:lI105|H107216570 -107216570:lI99|H107219B10 -107219B10:lI107|H10721D130 -10721D130:lI101|H1072206F0 -1072206F0:lI114|H107223A28 -107223A28:lI67|H107226A40 -107226A40:lI116|H107229678 -107229678:lI114|H10722BF30 -10722BF30:lI108|H10722E518 -10722E518:lI46|H107230840 -107230840:lI98|H107232908 -107232908:lI101|H1072346A0 -1072346A0:lI97|H107236148 -107236148:lI109|N -1071F4FD0:lH1071F7808|N -1071F7808:lI119|H1071FA460 -1071FA460:lI120|H1071FD3A0 -1071FD3A0:lI71|H107200458 -107200458:lI114|H107203600 -107203600:lI105|H107206830 -107206830:lI100|H107209AD8 -107209AD8:lI67|H10720CD38 -10720CD38:lI101|H10720FF48 -10720FF48:lI108|H1072131C8 -1072131C8:lI108|H107216580 -107216580:lI66|H107219B20 -107219B20:lI111|H10721D140 -10721D140:lI111|H107220700 -107220700:lI108|H107223A38 -107223A38:lI82|H107226A50 -107226A50:lI101|H107229688 -107229688:lI110|H10722BF40 -10722BF40:lI100|H10722E528 -10722E528:lI101|H107230850 -107230850:lI114|H107232918 -107232918:lI101|H1072346B0 -1072346B0:lI114|H107236158 -107236158:lI46|H1072379A0 -1072379A0:lI98|H107238FF8 -107238FF8:lI101|H10723A490 -10723A490:lI97|H10723B7B0 -10723B7B0:lI109|N -1071F2B60:lH1071F4FB0|N -1071F4FB0:lI119|H1071F77E8 -1071F77E8:lI120|H1071FA440 -1071FA440:lI70|H1071FD380 -1071FD380:lI111|H107200438 -107200438:lI110|H1072035E0 -1072035E0:lI116|H107206810 -107206810:lI68|H107209AB8 -107209AB8:lI105|H10720CD18 -10720CD18:lI97|H10720FF28 -10720FF28:lI108|H1072131A8 -1072131A8:lI111|H107216560 -107216560:lI103|H107219B00 -107219B00:lI46|H10721D120 -10721D120:lI98|H1072206E0 -1072206E0:lI101|H107223A18 -107223A18:lI97|H107226A30 -107226A30:lI109|N -1071F2B50:lH1071F4FA0|N -1071F4FA0:lI119|H1071F77D8 -1071F77D8:lI120|H1071FA430 -1071FA430:lI77|H1071FD370 -1071FD370:lI105|H107200428 -107200428:lI110|H1072035D0 -1072035D0:lI105|H107206800 -107206800:lI70|H107209AA8 -107209AA8:lI114|H10720CD08 -10720CD08:lI97|H10720FF18 -10720FF18:lI109|H107213198 -107213198:lI101|H107216550 -107216550:lI46|H107219AF0 -107219AF0:lI98|H10721D110 -10721D110:lI101|H1072206D0 -1072206D0:lI97|H107223A08 -107223A08:lI109|N -1071F2B38:Mn2:H1071F4F80,H1071F4F90 -1071F4F80:lH1071F77B8|N -1071F77B8:lI119|H1071FA410 -1071FA410:lI120|H1071FD350 -1071FD350:lI71|H107200408 -107200408:lI114|H1072035B0 -1072035B0:lI105|H1072067E0 -1072067E0:lI100|H107209A88 -107209A88:lI67|H10720CCE8 -10720CCE8:lI101|H10720FEF8 -10720FEF8:lI108|H107213178 -107213178:lI108|H107216530 -107216530:lI78|H107219AD0 -107219AD0:lI117|H10721D0F0 -10721D0F0:lI109|H1072206B0 -1072206B0:lI98|H1072239E8 -1072239E8:lI101|H107226A10 -107226A10:lI114|H107229658 -107229658:lI69|H10722BF10 -10722BF10:lI100|H10722E508 -10722E508:lI105|H107230830 -107230830:lI116|H1072328F8 -1072328F8:lI111|H107234690 -107234690:lI114|H107236138 -107236138:lI46|H107237990 -107237990:lI98|H107238FE8 -107238FE8:lI101|H10723A480 -10723A480:lI97|H10723B7A0 -10723B7A0:lI109|N -1071F4F90:lH1071F77C8|N -1071F77C8:lI119|H1071FA420 -1071FA420:lI120|H1071FD360 -1071FD360:lI83|H107200418 -107200418:lI99|H1072035C0 -1072035C0:lI114|H1072067F0 -1072067F0:lI111|H107209A98 -107209A98:lI108|H10720CCF8 -10720CCF8:lI108|H10720FF08 -10720FF08:lI69|H107213188 -107213188:lI118|H107216540 -107216540:lI101|H107219AE0 -107219AE0:lI110|H10721D100 -10721D100:lI116|H1072206C0 -1072206C0:lI46|H1072239F8 -1072239F8:lI98|H107226A20 -107226A20:lI101|H107229668 -107229668:lI97|H10722BF20 -10722BF20:lI109|N -1071F2B28:lH1071F4F70|N -1071F4F70:lI119|H1071F77A8 -1071F77A8:lI120|H1071FA400 -1071FA400:lI83|H1071FD340 -1071FD340:lI112|H1072003F8 -1072003F8:lI108|H1072035A0 -1072035A0:lI97|H1072067D0 -1072067D0:lI115|H107209A78 -107209A78:lI104|H10720CCD8 -10720CCD8:lI83|H10720FEE8 -10720FEE8:lI99|H107213168 -107213168:lI114|H107216520 -107216520:lI101|H107219AC0 -107219AC0:lI101|H10721D0E0 -10721D0E0:lI110|H1072206A0 -1072206A0:lI46|H1072239D8 -1072239D8:lI98|H107226A00 -107226A00:lI101|H107229648 -107229648:lI97|H10722BF00 -10722BF00:lI109|N -1071F2B18:lH1071F4F60|N -1071F4F60:lI119|H1071F7798 -1071F7798:lI120|H1071FA3F0 -1071FA3F0:lI80|H1071FD330 -1071FD330:lI97|H1072003E8 -1072003E8:lI105|H107203590 -107203590:lI110|H1072067C0 -1072067C0:lI116|H107209A68 -107209A68:lI68|H10720CCC8 -10720CCC8:lI67|H10720FED8 -10720FED8:lI46|H107213158 -107213158:lI98|H107216510 -107216510:lI101|H107219AB0 -107219AB0:lI97|H10721D0D0 -10721D0D0:lI109|N -1071F2AF8:Mn3:H1071F4F30,H1071F4F40,H1071F4F50 -1071F4F30:lH1071F7768|N -1071F7768:lI119|H1071FA3C0 -1071FA3C0:lI120|H1071FD300 -1071FD300:lI71|H1072003B8 -1072003B8:lI67|H107203560 -107203560:lI68|H107206790 -107206790:lI67|H107209A38 -107209A38:lI46|H10720CC98 -10720CC98:lI98|H10720FEA8 -10720FEA8:lI101|H107213128 -107213128:lI97|H1072164E0 -1072164E0:lI109|N -1071F4F50:lH1071F7788|N -1071F7788:lI119|H1071FA3E0 -1071FA3E0:lI120|H1071FD320 -1071FD320:lI84|H1072003D8 -1072003D8:lI101|H107203580 -107203580:lI120|H1072067B0 -1072067B0:lI116|H107209A58 -107209A58:lI68|H10720CCB8 -10720CCB8:lI97|H10720FEC8 -10720FEC8:lI116|H107213148 -107213148:lI97|H107216500 -107216500:lI79|H107219AA0 -107219AA0:lI98|H10721D0C0 -10721D0C0:lI106|H107220690 -107220690:lI101|H1072239C8 -1072239C8:lI99|H1072269F0 -1072269F0:lI116|H107229638 -107229638:lI46|H10722BEF0 -10722BEF0:lI98|H10722E4F8 -10722E4F8:lI101|H107230820 -107230820:lI97|H1072328E8 -1072328E8:lI109|N -1071F4F40:lH1071F7778|N -1071F7778:lI119|H1071FA3D0 -1071FA3D0:lI120|H1071FD310 -1071FD310:lI71|H1072003C8 -1072003C8:lI114|H107203570 -107203570:lI97|H1072067A0 -1072067A0:lI112|H107209A48 -107209A48:lI104|H10720CCA8 -10720CCA8:lI105|H10720FEB8 -10720FEB8:lI99|H107213138 -107213138:lI115|H1072164F0 -1072164F0:lI66|H107219A90 -107219A90:lI114|H10721D0B0 -10721D0B0:lI117|H107220680 -107220680:lI115|H1072239B8 -1072239B8:lI104|H1072269E0 -1072269E0:lI46|H107229628 -107229628:lI98|H10722BEE0 -10722BEE0:lI101|H10722E4E8 -10722E4E8:lI97|H107230810 -107230810:lI109|N -1071F2AE0:Mn2:H1071F4F10,H1071F4F20 -1071F4F10:lH1071F7748|N -1071F7748:lI119|H1071FA3A0 -1071FA3A0:lI120|H1071FD2E0 -1071FD2E0:lI67|H107200398 -107200398:lI108|H107203540 -107203540:lI105|H107206770 -107206770:lI112|H107209A18 -107209A18:lI98|H10720CC78 -10720CC78:lI111|H10720FE88 -10720FE88:lI97|H107213108 -107213108:lI114|H1072164C0 -1072164C0:lI100|H107219A70 -107219A70:lI46|H10721D090 -10721D090:lI98|H107220660 -107220660:lI101|H107223998 -107223998:lI97|H1072269C0 -1072269C0:lI109|N -1071F4F20:lH1071F7758|N -1071F7758:lI119|H1071FA3B0 -1071FA3B0:lI120|H1071FD2F0 -1071FD2F0:lI77|H1072003A8 -1072003A8:lI101|H107203550 -107203550:lI110|H107206780 -107206780:lI117|H107209A28 -107209A28:lI69|H10720CC88 -10720CC88:lI118|H10720FE98 -10720FE98:lI101|H107213118 -107213118:lI110|H1072164D0 -1072164D0:lI116|H107219A80 -107219A80:lI46|H10721D0A0 -10721D0A0:lI98|H107220670 -107220670:lI101|H1072239A8 -1072239A8:lI97|H1072269D0 -1072269D0:lI109|N -1071F2AC8:Mn2:H1071F4EF0,H1071F4F00 -1071F4EF0:lH1071F7728|N -1071F7728:lI119|H1071FA380 -1071FA380:lI120|H1071FD2C0 -1071FD2C0:lI67|H107200378 -107200378:lI108|H107203520 -107203520:lI111|H107206750 -107206750:lI115|H1072099F8 -1072099F8:lI101|H10720CC58 -10720CC58:lI69|H10720FE68 -10720FE68:lI118|H1072130E8 -1072130E8:lI101|H1072164A0 -1072164A0:lI110|H107219A50 -107219A50:lI116|H10721D070 -10721D070:lI46|H107220640 -107220640:lI98|H107223978 -107223978:lI101|H1072269A0 -1072269A0:lI97|H107229618 -107229618:lI109|N -1071F4F00:lH1071F7738|N -1071F7738:lI119|H1071FA390 -1071FA390:lI120|H1071FD2D0 -1071FD2D0:lI83|H107200388 -107200388:lI112|H107203530 -107203530:lI105|H107206760 -107206760:lI110|H107209A08 -107209A08:lI69|H10720CC68 -10720CC68:lI118|H10720FE78 -10720FE78:lI101|H1072130F8 -1072130F8:lI110|H1072164B0 -1072164B0:lI116|H107219A60 -107219A60:lI46|H10721D080 -10721D080:lI98|H107220650 -107220650:lI101|H107223988 -107223988:lI97|H1072269B0 -1072269B0:lI109|N -1071F2AB0:Mn2:H1071F4ED0,H1071F4EE0 -1071F4ED0:lH1071F7708|N -1071F7708:lI119|H1071FA360 -1071FA360:lI120|H1071FD2A0 -1071FD2A0:lI83|H107200358 -107200358:lI97|H107203500 -107203500:lI115|H107206730 -107206730:lI104|H1072099D8 -1072099D8:lI76|H10720CC38 -10720CC38:lI97|H10720FE48 -10720FE48:lI121|H1072130C8 -1072130C8:lI111|H107216480 -107216480:lI117|H107219A30 -107219A30:lI116|H10721D050 -10721D050:lI87|H107220620 -107220620:lI105|H107223958 -107223958:lI110|H107226990 -107226990:lI100|H107229608 -107229608:lI111|H10722BED0 -10722BED0:lI119|H10722E4D8 -10722E4D8:lI46|H107230800 -107230800:lI98|H1072328D8 -1072328D8:lI101|H107234680 -107234680:lI97|H107236128 -107236128:lI109|N -1071F4EE0:lH1071F7718|N -1071F7718:lI119|H1071FA370 -1071FA370:lI120|H1071FD2B0 -1071FD2B0:lI66|H107200368 -107200368:lI111|H107203510 -107203510:lI120|H107206740 -107206740:lI83|H1072099E8 -1072099E8:lI105|H10720CC48 -10720CC48:lI122|H10720FE58 -10720FE58:lI101|H1072130D8 -1072130D8:lI114|H107216490 -107216490:lI46|H107219A40 -107219A40:lI98|H10721D060 -10721D060:lI101|H107220630 -107220630:lI97|H107223968 -107223968:lI109|N -1071F1000:Mn9:H1071F29E0,H1071F29F0,H1071F2A08,H1071F2A18,H1071F2A28,H1071F2A48,H1071F2A58,H1071F2A68,H1071F2A78 -1071F29E0:lH1071F4DD0|N -1071F4DD0:lI119|H1071F7608 -1071F7608:lI120|H1071FA260 -1071FA260:lI80|H1071FD1A0 -1071FD1A0:lI105|H107200258 -107200258:lI99|H107203400 -107203400:lI107|H107206630 -107206630:lI101|H1072098D8 -1072098D8:lI114|H10720CB38 -10720CB38:lI66|H10720FD48 -10720FD48:lI97|H107212FC8 -107212FC8:lI115|H107216380 -107216380:lI101|H107219930 -107219930:lI46|H10721CF70 -10721CF70:lI98|H107220550 -107220550:lI101|H107223898 -107223898:lI97|H1072268D0 -1072268D0:lI109|N -1071F2A78:Mn3:H1071F4E80,H1071F4E90,H1071F4EA0 -1071F4E80:lH1071F76B8|N -1071F76B8:lI119|H1071FA310 -1071FA310:lI120|H1071FD250 -1071FD250:lI71|H107200308 -107200308:lI114|H1072034B0 -1072034B0:lI105|H1072066E0 -1072066E0:lI100|H107209988 -107209988:lI67|H10720CBE8 -10720CBE8:lI101|H10720FDF8 -10720FDF8:lI108|H107213078 -107213078:lI108|H107216430 -107216430:lI69|H1072199E0 -1072199E0:lI100|H10721D010 -10721D010:lI105|H1072205E0 -1072205E0:lI116|H107223918 -107223918:lI111|H107226950 -107226950:lI114|H1072295C8 -1072295C8:lI46|H10722BEA0 -10722BEA0:lI98|H10722E4A8 -10722E4A8:lI101|H1072307D0 -1072307D0:lI97|H1072328A8 -1072328A8:lI109|N -1071F4EA0:lH1071F76D8|N -1071F76D8:lI119|H1071FA330 -1071FA330:lI120|H1071FD270 -1071FD270:lI71|H107200328 -107200328:lI114|H1072034D0 -1072034D0:lI105|H107206700 -107206700:lI100|H1072099A8 -1072099A8:lI67|H10720CC08 -10720CC08:lI101|H10720FE18 -10720FE18:lI108|H107213098 -107213098:lI108|H107216450 -107216450:lI83|H107219A00 -107219A00:lI116|H10721D030 -10721D030:lI114|H107220600 -107220600:lI105|H107223938 -107223938:lI110|H107226970 -107226970:lI103|H1072295E8 -1072295E8:lI82|H10722BEC0 -10722BEC0:lI101|H10722E4C8 -10722E4C8:lI110|H1072307F0 -1072307F0:lI100|H1072328C8 -1072328C8:lI101|H107234670 -107234670:lI114|H107236118 -107236118:lI101|H107237980 -107237980:lI114|H107238FD8 -107238FD8:lI46|H10723A470 -10723A470:lI98|H10723B790 -10723B790:lI101|H10723C840 -10723C840:lI97|H10723D6D0 -10723D6D0:lI109|N -1071F4E90:lH1071F76C8|N -1071F76C8:lI119|H1071FA320 -1071FA320:lI120|H1071FD260 -1071FD260:lI83|H107200318 -107200318:lI116|H1072034C0 -1072034C0:lI121|H1072066F0 -1072066F0:lI108|H107209998 -107209998:lI101|H10720CBF8 -10720CBF8:lI100|H10720FE08 -10720FE08:lI84|H107213088 -107213088:lI101|H107216440 -107216440:lI120|H1072199F0 -1072199F0:lI116|H10721D020 -10721D020:lI69|H1072205F0 -1072205F0:lI118|H107223928 -107223928:lI101|H107226960 -107226960:lI110|H1072295D8 -1072295D8:lI116|H10722BEB0 -10722BEB0:lI46|H10722E4B8 -10722E4B8:lI98|H1072307E0 -1072307E0:lI101|H1072328B8 -1072328B8:lI97|H107234660 -107234660:lI109|N -1071F2A68:lH1071F4E70|N -1071F4E70:lI119|H1071F76A8 -1071F76A8:lI120|H1071FA300 -1071FA300:lI83|H1071FD240 -1071FD240:lI105|H1072002F8 -1072002F8:lI122|H1072034A0 -1072034A0:lI101|H1072066D0 -1072066D0:lI114|H107209978 -107209978:lI70|H10720CBD8 -10720CBD8:lI108|H10720FDE8 -10720FDE8:lI97|H107213068 -107213068:lI103|H107216420 -107216420:lI115|H1072199D0 -1072199D0:lI46|H10721D000 -10721D000:lI98|H1072205D0 -1072205D0:lI101|H107223908 -107223908:lI97|H107226940 -107226940:lI109|N -1071F2A58:lH1071F4E60|N -1071F4E60:lI119|H1071F7698 -1071F7698:lI120|H1071FA2F0 -1071FA2F0:lI77|H1071FD230 -1071FD230:lI117|H1072002E8 -1072002E8:lI108|H107203490 -107203490:lI116|H1072066C0 -1072066C0:lI105|H107209968 -107209968:lI67|H10720CBC8 -10720CBC8:lI104|H10720FDD8 -10720FDD8:lI111|H107213058 -107213058:lI105|H107216410 -107216410:lI99|H1072199C0 -1072199C0:lI101|H10721CFF0 -10721CFF0:lI68|H1072205C0 -1072205C0:lI105|H1072238F8 -1072238F8:lI97|H107226930 -107226930:lI108|H1072295B8 -1072295B8:lI111|H10722BE90 -10722BE90:lI103|H10722E498 -10722E498:lI46|H1072307C0 -1072307C0:lI98|H107232898 -107232898:lI101|H107234650 -107234650:lI97|H107236108 -107236108:lI109|N -1071F2A48:lH1071F4E50|N -1071F4E50:lI119|H1071F7688 -1071F7688:lI120|H1071FA2E0 -1071FA2E0:lI67|H1071FD220 -1071FD220:lI111|H1072002D8 -1072002D8:lI109|H107203480 -107203480:lI98|H1072066B0 -1072066B0:lI111|H107209958 -107209958:lI66|H10720CBB8 -10720CBB8:lI111|H10720FDC8 -10720FDC8:lI120|H107213048 -107213048:lI46|H107216400 -107216400:lI98|H1072199B0 -1072199B0:lI101|H10721CFE0 -10721CFE0:lI97|H1072205B0 -1072205B0:lI109|N -1071F2A28:Mn3:H1071F4E20,H1071F4E30,H1071F4E40 -1071F4E20:lH1071F7658|N -1071F7658:lI119|H1071FA2B0 -1071FA2B0:lI120|H1071FD1F0 -1071FD1F0:lI80|H1072002A8 -1072002A8:lI97|H107203450 -107203450:lI115|H107206680 -107206680:lI115|H107209928 -107209928:lI119|H10720CB88 -10720CB88:lI111|H10720FD98 -10720FD98:lI114|H107213018 -107213018:lI100|H1072163D0 -1072163D0:lI69|H107219980 -107219980:lI110|H10721CFB0 -10721CFB0:lI116|H107220580 -107220580:lI114|H1072238C8 -1072238C8:lI121|H107226900 -107226900:lI68|H107229588 -107229588:lI105|H10722BE60 -10722BE60:lI97|H10722E478 -10722E478:lI108|H1072307A0 -1072307A0:lI111|H107232878 -107232878:lI103|H107234630 -107234630:lI46|H1072360E8 -1072360E8:lI98|H107237960 -107237960:lI101|H107238FB8 -107238FB8:lI97|H10723A460 -10723A460:lI109|N -1071F4E40:lH1071F7678|N -1071F7678:lI119|H1071FA2D0 -1071FA2D0:lI120|H1071FD210 -1071FD210:lI65|H1072002C8 -1072002C8:lI114|H107203470 -107203470:lI116|H1072066A0 -1072066A0:lI80|H107209948 -107209948:lI114|H10720CBA8 -10720CBA8:lI111|H10720FDB8 -10720FDB8:lI118|H107213038 -107213038:lI105|H1072163F0 -1072163F0:lI100|H1072199A0 -1072199A0:lI101|H10721CFD0 -10721CFD0:lI114|H1072205A0 -1072205A0:lI46|H1072238E8 -1072238E8:lI98|H107226920 -107226920:lI101|H1072295A8 -1072295A8:lI97|H10722BE80 -10722BE80:lI109|N -1071F4E30:lH1071F7668|N -1071F7668:lI119|H1071FA2C0 -1071FA2C0:lI120|H1071FD200 -1071FD200:lI83|H1072002B8 -1072002B8:lI105|H107203460 -107203460:lI110|H107206690 -107206690:lI103|H107209938 -107209938:lI108|H10720CB98 -10720CB98:lI101|H10720FDA8 -10720FDA8:lI67|H107213028 -107213028:lI104|H1072163E0 -1072163E0:lI111|H107219990 -107219990:lI105|H10721CFC0 -10721CFC0:lI99|H107220590 -107220590:lI101|H1072238D8 -1072238D8:lI68|H107226910 -107226910:lI105|H107229598 -107229598:lI97|H10722BE70 -10722BE70:lI108|H10722E488 -10722E488:lI111|H1072307B0 -1072307B0:lI103|H107232888 -107232888:lI46|H107234640 -107234640:lI98|H1072360F8 -1072360F8:lI101|H107237970 -107237970:lI97|H107238FC8 -107238FC8:lI109|N -1071F2A18:lH1071F4E10|N -1071F4E10:lI119|H1071F7648 -1071F7648:lI120|H1071FA2A0 -1071FA2A0:lI95|H1071FD1E0 -1071FD1E0:lI111|H107200298 -107200298:lI98|H107203440 -107203440:lI106|H107206670 -107206670:lI101|H107209918 -107209918:lI99|H10720CB78 -10720CB78:lI116|H10720FD88 -10720FD88:lI46|H107213008 -107213008:lI98|H1072163C0 -1072163C0:lI101|H107219970 -107219970:lI97|H10721CFA0 -10721CFA0:lI109|N -1071F2A08:lH1071F4E00|N -1071F4E00:lI119|H1071F7638 -1071F7638:lI120|H1071FA290 -1071FA290:lI65|H1071FD1D0 -1071FD1D0:lI99|H107200288 -107200288:lI99|H107203430 -107203430:lI101|H107206660 -107206660:lI108|H107209908 -107209908:lI101|H10720CB68 -10720CB68:lI114|H10720FD78 -10720FD78:lI97|H107212FF8 -107212FF8:lI116|H1072163B0 -1072163B0:lI111|H107219960 -107219960:lI114|H10721CF90 -10721CF90:lI69|H107220570 -107220570:lI110|H1072238B8 -1072238B8:lI116|H1072268F0 -1072268F0:lI114|H107229578 -107229578:lI121|H10722BE50 -10722BE50:lI46|H10722E468 -10722E468:lI98|H107230790 -107230790:lI101|H107232868 -107232868:lI97|H107234620 -107234620:lI109|N -1071F29F0:Mn2:H1071F4DE0,H1071F4DF0 -1071F4DE0:lH1071F7618|N -1071F7618:lI119|H1071FA270 -1071FA270:lI120|H1071FD1B0 -1071FD1B0:lI70|H107200268 -107200268:lI114|H107203410 -107203410:lI97|H107206640 -107206640:lI109|H1072098E8 -1072098E8:lI101|H10720CB48 -10720CB48:lI46|H10720FD58 -10720FD58:lI98|H107212FD8 -107212FD8:lI101|H107216390 -107216390:lI97|H107219940 -107219940:lI109|N -1071F4DF0:lH1071F7628|N -1071F7628:lI119|H1071FA280 -1071FA280:lI120|H1071FD1C0 -1071FD1C0:lI67|H107200278 -107200278:lI104|H107203420 -107203420:lI105|H107206650 -107206650:lI108|H1072098F8 -1072098F8:lI100|H10720CB58 -10720CB58:lI70|H10720FD68 -10720FD68:lI111|H107212FE8 -107212FE8:lI99|H1072163A0 -1072163A0:lI117|H107219950 -107219950:lI115|H10721CF80 -10721CF80:lI69|H107220560 -107220560:lI118|H1072238A8 -1072238A8:lI101|H1072268E0 -1072268E0:lI110|H107229568 -107229568:lI116|H10722BE40 -10722BE40:lI46|H10722E458 -10722E458:lI98|H107230780 -107230780:lI101|H107232858 -107232858:lI97|H107234610 -107234610:lI109|N -1071F0FA0:MnB:H1071F28F8,H1071F2908,H1071F2918,H1071F2928,H1071F2938,H1071F2948,H1071F2978,H1071F2990,H1071F29A0,H1071F29B8,H1071F29D0 -1071F28F8:lH1071F4CA8|N -1071F4CA8:lI119|H1071F74D8 -1071F74D8:lI120|H1071FA130 -1071FA130:lI71|H1071FD070 -1071FD070:lI76|H107200128 -107200128:lI67|H1072032D0 -1072032D0:lI111|H107206500 -107206500:lI110|H1072097B8 -1072097B8:lI116|H10720CA18 -10720CA18:lI101|H10720FC28 -10720FC28:lI120|H107212EA8 -107212EA8:lI116|H107216260 -107216260:lI46|H107219810 -107219810:lI98|H10721CE50 -10721CE50:lI101|H107220440 -107220440:lI97|H1072237B8 -1072237B8:lI109|N -1071F29D0:lH1071F4DC0|N -1071F4DC0:lI119|H1071F75F8 -1071F75F8:lI120|H1071FA250 -1071FA250:lI78|H1071FD190 -1071FD190:lI111|H107200248 -107200248:lI116|H1072033F0 -1072033F0:lI101|H107206620 -107206620:lI98|H1072098C8 -1072098C8:lI111|H10720CB28 -10720CB28:lI111|H10720FD38 -10720FD38:lI107|H107212FB8 -107212FB8:lI46|H107216370 -107216370:lI98|H107219920 -107219920:lI101|H10721CF60 -10721CF60:lI97|H107220540 -107220540:lI109|N -1071F29B8:Mn2:H1071F4DA0,H1071F4DB0 -1071F4DA0:lH1071F75D8|N -1071F75D8:lI119|H1071FA230 -1071FA230:lI120|H1071FD170 -1071FD170:lI76|H107200228 -107200228:lI105|H1072033D0 -1072033D0:lI115|H107206600 -107206600:lI116|H1072098A8 -1072098A8:lI69|H10720CB08 -10720CB08:lI118|H10720FD18 -10720FD18:lI101|H107212F98 -107212F98:lI110|H107216350 -107216350:lI116|H107219900 -107219900:lI46|H10721CF40 -10721CF40:lI98|H107220520 -107220520:lI101|H107223878 -107223878:lI97|H1072268B0 -1072268B0:lI109|N -1071F4DB0:lH1071F75E8|N -1071F75E8:lI119|H1071FA240 -1071FA240:lI120|H1071FD180 -1071FD180:lI65|H107200238 -107200238:lI117|H1072033E0 -1072033E0:lI105|H107206610 -107206610:lI77|H1072098B8 -1072098B8:lI97|H10720CB18 -10720CB18:lI110|H10720FD28 -10720FD28:lI97|H107212FA8 -107212FA8:lI103|H107216360 -107216360:lI101|H107219910 -107219910:lI114|H10721CF50 -10721CF50:lI46|H107220530 -107220530:lI98|H107223888 -107223888:lI101|H1072268C0 -1072268C0:lI97|H107229558 -107229558:lI109|N -1071F29A0:Mn2:H1071F4D80,H1071F4D90 -1071F4D80:lH1071F75B8|N -1071F75B8:lI119|H1071FA210 -1071FA210:lI120|H1071FD150 -1071FD150:lI87|H107200208 -107200208:lI105|H1072033B0 -1072033B0:lI110|H1072065E0 -1072065E0:lI100|H107209888 -107209888:lI111|H10720CAE8 -10720CAE8:lI119|H10720FCF8 -10720FCF8:lI46|H107212F78 -107212F78:lI98|H107216330 -107216330:lI101|H1072198E0 -1072198E0:lI97|H10721CF20 -10721CF20:lI109|N -1071F4D90:lH1071F75C8|N -1071F75C8:lI119|H1071FA220 -1071FA220:lI120|H1071FD160 -1071FD160:lI80|H107200218 -107200218:lI97|H1072033C0 -1072033C0:lI108|H1072065F0 -1072065F0:lI101|H107209898 -107209898:lI116|H10720CAF8 -10720CAF8:lI116|H10720FD08 -10720FD08:lI101|H107212F88 -107212F88:lI46|H107216340 -107216340:lI98|H1072198F0 -1072198F0:lI101|H10721CF30 -10721CF30:lI97|H107220510 -107220510:lI109|N -1071F2990:lH1071F4D70|N -1071F4D70:lI119|H1071F75A8 -1071F75A8:lI120|H1071FA200 -1071FA200:lI67|H1071FD140 -1071FD140:lI97|H1072001F8 -1072001F8:lI108|H1072033A0 -1072033A0:lI101|H1072065D0 -1072065D0:lI110|H107209878 -107209878:lI100|H10720CAD8 -10720CAD8:lI97|H10720FCE8 -10720FCE8:lI114|H107212F68 -107212F68:lI68|H107216320 -107216320:lI97|H1072198D0 -1072198D0:lI116|H10721CF10 -10721CF10:lI101|H107220500 -107220500:lI65|H107223868 -107223868:lI116|H1072268A0 -1072268A0:lI116|H107229548 -107229548:lI114|H10722BE30 -10722BE30:lI46|H10722E448 -10722E448:lI98|H107230770 -107230770:lI101|H107232848 -107232848:lI97|H107234600 -107234600:lI109|N -1071F2978:Mn2:H1071F4D50,H1071F4D60 -1071F4D50:lH1071F7588|N -1071F7588:lI119|H1071FA1E0 -1071FA1E0:lI120|H1071FD120 -1071FD120:lI84|H1072001D8 -1072001D8:lI101|H107203380 -107203380:lI120|H1072065B0 -1072065B0:lI116|H107209858 -107209858:lI69|H10720CAB8 -10720CAB8:lI110|H10720FCC8 -10720FCC8:lI116|H107212F48 -107212F48:lI114|H107216300 -107216300:lI121|H1072198B0 -1072198B0:lI68|H10721CEF0 -10721CEF0:lI105|H1072204E0 -1072204E0:lI97|H107223858 -107223858:lI108|H107226890 -107226890:lI111|H107229538 -107229538:lI103|H10722BE20 -10722BE20:lI46|H10722E438 -10722E438:lI98|H107230760 -107230760:lI101|H107232838 -107232838:lI97|H1072345F0 -1072345F0:lI109|N -1071F4D60:lH1071F7598|N -1071F7598:lI119|H1071FA1F0 -1071FA1F0:lI120|H1071FD130 -1071FD130:lI84|H1072001E8 -1072001E8:lI111|H107203390 -107203390:lI111|H1072065C0 -1072065C0:lI108|H107209868 -107209868:lI84|H10720CAC8 -10720CAC8:lI105|H10720FCD8 -10720FCD8:lI112|H107212F58 -107212F58:lI46|H107216310 -107216310:lI98|H1072198C0 -1072198C0:lI101|H10721CF00 -10721CF00:lI97|H1072204F0 -1072204F0:lI109|N -1071F2948:Mn5:H1071F4CF8,H1071F4D10,H1071F4D20,H1071F4D30,H1071F4D40 -1071F4CF8:Mn2:H1071F7528,H1071F7538 -1071F7528:lH1071FA180|N -1071FA180:lI119|H1071FD0C0 -1071FD0C0:lI120|H107200178 -107200178:lI83|H107203320 -107203320:lI116|H107206550 -107206550:lI100|H1072097F8 -1072097F8:lI68|H10720CA58 -10720CA58:lI105|H10720FC68 -10720FC68:lI97|H107212EE8 -107212EE8:lI108|H1072162A0 -1072162A0:lI111|H107219850 -107219850:lI103|H10721CE90 -10721CE90:lI66|H107220480 -107220480:lI117|H1072237F8 -1072237F8:lI116|H107226850 -107226850:lI116|H1072294F8 -1072294F8:lI111|H10722BE00 -10722BE00:lI110|H10722E418 -10722E418:lI83|H107230750 -107230750:lI105|H107232828 -107232828:lI122|H1072345E0 -1072345E0:lI101|H1072360D8 -1072360D8:lI114|H107237950 -107237950:lI46|H107238FA8 -107238FA8:lI98|H10723A450 -10723A450:lI101|H10723B780 -10723B780:lI97|H10723C830 -10723C830:lI109|N -1071F7538:lH1071FA190|N -1071FA190:lI119|H1071FD0D0 -1071FD0D0:lI120|H107200188 -107200188:lI83|H107203330 -107203330:lI116|H107206560 -107206560:lI97|H107209808 -107209808:lI116|H10720CA68 -10720CA68:lI105|H10720FC78 -10720FC78:lI99|H107212EF8 -107212EF8:lI66|H1072162B0 -1072162B0:lI111|H107219860 -107219860:lI120|H10721CEA0 -10721CEA0:lI46|H107220490 -107220490:lI98|H107223808 -107223808:lI101|H107226860 -107226860:lI97|H107229508 -107229508:lI109|N -1071F4D40:lH1071F7578|N -1071F7578:lI119|H1071FA1D0 -1071FA1D0:lI120|H1071FD110 -1071FD110:lI73|H1072001C8 -1072001C8:lI99|H107203370 -107203370:lI111|H1072065A0 -1072065A0:lI110|H107209848 -107209848:lI66|H10720CAA8 -10720CAA8:lI117|H10720FCB8 -10720FCB8:lI110|H107212F38 -107212F38:lI100|H1072162F0 -1072162F0:lI108|H1072198A0 -1072198A0:lI101|H10721CEE0 -10721CEE0:lI46|H1072204D0 -1072204D0:lI98|H107223848 -107223848:lI101|H107226880 -107226880:lI97|H107229528 -107229528:lI109|N -1071F4D30:lH1071F7568|N -1071F7568:lI119|H1071FA1C0 -1071FA1C0:lI120|H1071FD100 -1071FD100:lI84|H1072001B8 -1072001B8:lI114|H107203360 -107203360:lI101|H107206590 -107206590:lI101|H107209838 -107209838:lI67|H10720CA98 -10720CA98:lI116|H10720FCA8 -10720FCA8:lI114|H107212F28 -107212F28:lI108|H1072162E0 -1072162E0:lI46|H107219890 -107219890:lI98|H10721CED0 -10721CED0:lI101|H1072204C0 -1072204C0:lI97|H107223838 -107223838:lI109|N -1071F4D20:lH1071F7558|N -1071F7558:lI119|H1071FA1B0 -1071FA1B0:lI120|H1071FD0F0 -1071FD0F0:lI67|H1072001A8 -1072001A8:lI97|H107203350 -107203350:lI108|H107206580 -107206580:lI101|H107209828 -107209828:lI110|H10720CA88 -10720CA88:lI100|H10720FC98 -10720FC98:lI97|H107212F18 -107212F18:lI114|H1072162D0 -1072162D0:lI67|H107219880 -107219880:lI116|H10721CEC0 -10721CEC0:lI114|H1072204B0 -1072204B0:lI108|H107223828 -107223828:lI46|H107226870 -107226870:lI98|H107229518 -107229518:lI101|H10722BE10 -10722BE10:lI97|H10722E428 -10722E428:lI109|N -1071F4D10:lH1071F7548|N -1071F7548:lI119|H1071FA1A0 -1071FA1A0:lI120|H1071FD0E0 -1071FD0E0:lI82|H107200198 -107200198:lI97|H107203340 -107203340:lI100|H107206570 -107206570:lI105|H107209818 -107209818:lI111|H10720CA78 -10720CA78:lI66|H10720FC88 -10720FC88:lI111|H107212F08 -107212F08:lI120|H1072162C0 -1072162C0:lI46|H107219870 -107219870:lI98|H10721CEB0 -10721CEB0:lI101|H1072204A0 -1072204A0:lI97|H107223818 -107223818:lI109|N -1071F2938:lH1071F4CE8|N -1071F4CE8:lI119|H1071F7518 -1071F7518:lI120|H1071FA170 -1071FA170:lI84|H1071FD0B0 -1071FD0B0:lI97|H107200168 -107200168:lI115|H107203310 -107203310:lI107|H107206540 -107206540:lI66|H1072097E8 -1072097E8:lI97|H10720CA48 -10720CA48:lI114|H10720FC58 -10720FC58:lI73|H107212ED8 -107212ED8:lI99|H107216290 -107216290:lI111|H107219840 -107219840:lI110|H10721CE80 -10721CE80:lI69|H107220470 -107220470:lI118|H1072237E8 -1072237E8:lI101|H107226840 -107226840:lI110|H1072294E8 -1072294E8:lI116|H10722BDF0 -10722BDF0:lI46|H10722E408 -10722E408:lI98|H107230740 -107230740:lI101|H107232818 -107232818:lI97|H1072345D0 -1072345D0:lI109|N -1071F2928:lH1071F4CD8|N -1071F4CD8:lI119|H1071F7508 -1071F7508:lI120|H1071FA160 -1071FA160:lI70|H1071FD0A0 -1071FD0A0:lI105|H107200158 -107200158:lI108|H107203300 -107203300:lI101|H107206530 -107206530:lI80|H1072097D8 -1072097D8:lI105|H10720CA38 -10720CA38:lI99|H10720FC48 -10720FC48:lI107|H107212EC8 -107212EC8:lI101|H107216280 -107216280:lI114|H107219830 -107219830:lI67|H10721CE70 -10721CE70:lI116|H107220460 -107220460:lI114|H1072237D8 -1072237D8:lI108|H107226830 -107226830:lI46|H1072294D8 -1072294D8:lI98|H10722BDE0 -10722BDE0:lI101|H10722E3F8 -10722E3F8:lI97|H107230730 -107230730:lI109|N -1071F2918:lH1071F4CC8|N -1071F4CC8:lI119|H1071F74F8 -1071F74F8:lI120|H1071FA150 -1071FA150:lI80|H1071FD090 -1071FD090:lI97|H107200148 -107200148:lI105|H1072032F0 -1072032F0:lI110|H107206520 -107206520:lI116|H1072097C8 -1072097C8:lI69|H10720CA28 -10720CA28:lI118|H10720FC38 -10720FC38:lI101|H107212EB8 -107212EB8:lI110|H107216270 -107216270:lI116|H107219820 -107219820:lI46|H10721CE60 -10721CE60:lI98|H107220450 -107220450:lI101|H1072237C8 -1072237C8:lI97|H107226820 -107226820:lI109|N -1071F2908:lH1071F4CB8|N -1071F4CB8:lI103|H1071F74E8 -1071F74E8:lI108|H1071FA140 -1071FA140:lI46|H1071FD080 -1071FD080:lI98|H107200138 -107200138:lI101|H1072032E0 -1072032E0:lI97|H107206510 -107206510:lI109|N -1071F0F50:Mn9:H1071F2858,H1071F2868,H1071F2878,H1071F2890,H1071F28A0,H1071F28B0,H1071F28C8,H1071F28D8,H1071F28E8 -1071F2858:lH1071F4BF8|N -1071F4BF8:lI119|H1071F7428 -1071F7428:lI120|H1071FA080 -1071FA080:lI70|H1071FCFC0 -1071FCFC0:lI111|H107200078 -107200078:lI110|H107203220 -107203220:lI116|H107206450 -107206450:lI80|H107209708 -107209708:lI105|H10720C968 -10720C968:lI99|H10720FB78 -10720FB78:lI107|H107212E08 -107212E08:lI101|H1072161C0 -1072161C0:lI114|H107219780 -107219780:lI67|H10721CDD0 -10721CDD0:lI116|H1072203D0 -1072203D0:lI114|H107223758 -107223758:lI108|H1072267D0 -1072267D0:lI46|H107229488 -107229488:lI98|H10722BD90 -10722BD90:lI101|H10722E3A8 -10722E3A8:lI97|H1072306F0 -1072306F0:lI109|N -1071F28E8:lH1071F4C98|N -1071F4C98:lI119|H1071F74C8 -1071F74C8:lI120|H1071FA120 -1071FA120:lI76|H1071FD060 -1071FD060:lI105|H107200118 -107200118:lI115|H1072032C0 -1072032C0:lI116|H1072064F0 -1072064F0:lI66|H1072097A8 -1072097A8:lI111|H10720CA08 -10720CA08:lI120|H10720FC18 -10720FC18:lI46|H107212E98 -107212E98:lI98|H107216250 -107216250:lI101|H107219800 -107219800:lI97|H10721CE40 -10721CE40:lI109|N -1071F28D8:lH1071F4C88|N -1071F4C88:lI119|H1071F74B8 -1071F74B8:lI120|H1071FA110 -1071FA110:lI83|H1071FD050 -1071FD050:lI104|H107200108 -107200108:lI111|H1072032B0 -1072032B0:lI119|H1072064E0 -1072064E0:lI69|H107209798 -107209798:lI118|H10720C9F8 -10720C9F8:lI101|H10720FC08 -10720FC08:lI110|H107212E88 -107212E88:lI116|H107216240 -107216240:lI46|H1072197F0 -1072197F0:lI98|H10721CE30 -10721CE30:lI101|H107220430 -107220430:lI97|H1072237A8 -1072237A8:lI109|N -1071F28C8:lH1071F4C78|N -1071F4C78:lI119|H1071F74A8 -1071F74A8:lI120|H1071FA100 -1071FA100:lI71|H1071FD040 -1071FD040:lI114|H1072000F8 -1072000F8:lI105|H1072032A0 -1072032A0:lI100|H1072064D0 -1072064D0:lI67|H107209788 -107209788:lI101|H10720C9E8 -10720C9E8:lI108|H10720FBF8 -10720FBF8:lI108|H107212E78 -107212E78:lI66|H107216230 -107216230:lI111|H1072197E0 -1072197E0:lI111|H10721CE20 -10721CE20:lI108|H107220420 -107220420:lI69|H107223798 -107223798:lI100|H107226810 -107226810:lI105|H1072294C8 -1072294C8:lI116|H10722BDD0 -10722BDD0:lI111|H10722E3E8 -10722E3E8:lI114|H107230720 -107230720:lI46|H107232808 -107232808:lI98|H1072345C0 -1072345C0:lI101|H1072360C8 -1072360C8:lI97|H107237940 -107237940:lI109|N -1071F28B0:Mn2:H1071F4C58,H1071F4C68 -1071F4C58:lH1071F7488|N -1071F7488:lI119|H1071FA0E0 -1071FA0E0:lI120|H1071FD020 -1071FD020:lI77|H1072000D8 -1072000D8:lI68|H107203280 -107203280:lI73|H1072064B0 -1072064B0:lI67|H107209768 -107209768:lI108|H10720C9C8 -10720C9C8:lI105|H10720FBD8 -10720FBD8:lI101|H107212E58 -107212E58:lI110|H107216210 -107216210:lI116|H1072197C0 -1072197C0:lI87|H10721CE00 -10721CE00:lI105|H107220400 -107220400:lI110|H107223788 -107223788:lI100|H107226800 -107226800:lI111|H1072294B8 -1072294B8:lI119|H10722BDC0 -10722BDC0:lI46|H10722E3D8 -10722E3D8:lI98|H107230710 -107230710:lI101|H1072327F8 -1072327F8:lI97|H1072345B0 -1072345B0:lI109|N -1071F4C68:lH1071F7498|N -1071F7498:lI119|H1071FA0F0 -1071FA0F0:lI120|H1071FD030 -1071FD030:lI68|H1072000E8 -1072000E8:lI105|H107203290 -107203290:lI115|H1072064C0 -1072064C0:lI112|H107209778 -107209778:lI108|H10720C9D8 -10720C9D8:lI97|H10720FBE8 -10720FBE8:lI121|H107212E68 -107212E68:lI46|H107216220 -107216220:lI98|H1072197D0 -1072197D0:lI101|H10721CE10 -10721CE10:lI97|H107220410 -107220410:lI109|N -1071F28A0:lH1071F4C48|N -1071F4C48:lI119|H1071F7478 -1071F7478:lI120|H1071FA0D0 -1071FA0D0:lI66|H1071FD010 -1071FD010:lI105|H1072000C8 -1072000C8:lI116|H107203270 -107203270:lI109|H1072064A0 -1072064A0:lI97|H107209758 -107209758:lI112|H10720C9B8 -10720C9B8:lI46|H10720FBC8 -10720FBC8:lI98|H107212E48 -107212E48:lI101|H107216200 -107216200:lI97|H1072197B0 -1072197B0:lI109|N -1071F2890:lH1071F4C38|N -1071F4C38:lI119|H1071F7468 -1071F7468:lI120|H1071FA0C0 -1071FA0C0:lI80|H1071FD000 -1071FD000:lI101|H1072000B8 -1072000B8:lI110|H107203260 -107203260:lI46|H107206490 -107206490:lI98|H107209748 -107209748:lI101|H10720C9A8 -10720C9A8:lI97|H10720FBB8 -10720FBB8:lI109|N -1071F2878:Mn2:H1071F4C18,H1071F4C28 -1071F4C18:lH1071F7448|N -1071F7448:lI119|H1071FA0A0 -1071FA0A0:lI120|H1071FCFE0 -1071FCFE0:lI71|H107200098 -107200098:lI114|H107203240 -107203240:lI97|H107206470 -107206470:lI112|H107209728 -107209728:lI104|H10720C988 -10720C988:lI105|H10720FB98 -10720FB98:lI99|H107212E28 -107212E28:lI115|H1072161E0 -1072161E0:lI67|H1072197A0 -1072197A0:lI111|H10721CDF0 -10721CDF0:lI110|H1072203F0 -1072203F0:lI116|H107223778 -107223778:lI101|H1072267F0 -1072267F0:lI120|H1072294A8 -1072294A8:lI116|H10722BDB0 -10722BDB0:lI46|H10722E3C8 -10722E3C8:lI98|H107230700 -107230700:lI101|H1072327E8 -1072327E8:lI97|H1072345A0 -1072345A0:lI109|N -1071F4C28:lH1071F7458|N -1071F7458:lI119|H1071FA0B0 -1071FA0B0:lI120|H1071FCFF0 -1071FCFF0:lI77|H1072000A8 -1072000A8:lI97|H107203250 -107203250:lI115|H107206480 -107206480:lI107|H107209738 -107209738:lI46|H10720C998 -10720C998:lI98|H10720FBA8 -10720FBA8:lI101|H107212E38 -107212E38:lI97|H1072161F0 -1072161F0:lI109|N -1071F2868:lH1071F4C08|N -1071F4C08:lI119|H1071F7438 -1071F7438:lI120|H1071FA090 -1071FA090:lI83|H1071FCFD0 -1071FCFD0:lI112|H107200088 -107200088:lI108|H107203230 -107203230:lI105|H107206460 -107206460:lI116|H107209718 -107209718:lI116|H10720C978 -10720C978:lI101|H10720FB88 -10720FB88:lI114|H107212E18 -107212E18:lI69|H1072161D0 -1072161D0:lI118|H107219790 -107219790:lI101|H10721CDE0 -10721CDE0:lI110|H1072203E0 -1072203E0:lI116|H107223768 -107223768:lI46|H1072267E0 -1072267E0:lI98|H107229498 -107229498:lI101|H10722BDA0 -10722BDA0:lI97|H10722E3B8 -10722E3B8:lI109|N -1071F0EF8:MnA:H1071F27A8,H1071F27C0,H1071F27D0,H1071F27E8,H1071F27F8,H1071F2808,H1071F2818,H1071F2828,H1071F2838,H1071F2848 -1071F27A8:Mn2:H1071F4B30,H1071F4B40 -1071F4B30:lH1071F7358|N -1071F7358:lI119|H1071F9FB0 -1071F9FB0:lI120|H1071FCEF0 -1071FCEF0:lI72|H1071FFFA8 -1071FFFA8:lI116|H107203150 -107203150:lI109|H107206380 -107206380:lI108|H107209638 -107209638:lI87|H10720C898 -10720C898:lI105|H10720FAA8 -10720FAA8:lI110|H107212D38 -107212D38:lI100|H1072160F0 -1072160F0:lI111|H1072196C0 -1072196C0:lI119|H10721CD30 -10721CD30:lI46|H107220330 -107220330:lI98|H1072236D8 -1072236D8:lI101|H107226750 -107226750:lI97|H107229418 -107229418:lI109|N -1071F4B40:lH1071F7368|N -1071F7368:lI119|H1071F9FC0 -1071F9FC0:lI120|H1071FCF00 -1071FCF00:lI67|H1071FFFB8 -1071FFFB8:lI97|H107203160 -107203160:lI114|H107206390 -107206390:lI101|H107209648 -107209648:lI116|H10720C8A8 -10720C8A8:lI46|H10720FAB8 -10720FAB8:lI98|H107212D48 -107212D48:lI101|H107216100 -107216100:lI97|H1072196D0 -1072196D0:lI109|N -1071F2848:lH1071F4BE8|N -1071F4BE8:lI119|H1071F7418 -1071F7418:lI120|H1071FA070 -1071FA070:lI101|H1071FCFB0 -1071FCFB0:lI95|H107200068 -107200068:lI109|H107203210 -107203210:lI97|H107206440 -107206440:lI115|H1072096F8 -1072096F8:lI116|H10720C958 -10720C958:lI101|H10720FB68 -10720FB68:lI114|H107212DF8 -107212DF8:lI46|H1072161B0 -1072161B0:lI98|H107219770 -107219770:lI101|H10721CDC0 -10721CDC0:lI97|H1072203C0 -1072203C0:lI109|N -1071F2838:Mn1:H1071F4BD0 -1071F4BD0:Mn2:H1071F73F8,H1071F7408 -1071F73F8:lH1071FA050|N -1071FA050:lI119|H1071FCF90 -1071FCF90:lI120|H107200048 -107200048:lI65|H1072031F0 -1072031F0:lI117|H107206420 -107206420:lI105|H1072096D8 -1072096D8:lI78|H10720C938 -10720C938:lI111|H10720FB48 -10720FB48:lI116|H107212DD8 -107212DD8:lI101|H107216190 -107216190:lI98|H107219750 -107219750:lI111|H10721CDA0 -10721CDA0:lI111|H1072203A0 -1072203A0:lI107|H107223738 -107223738:lI46|H1072267B0 -1072267B0:lI98|H107229468 -107229468:lI101|H10722BD70 -10722BD70:lI97|H10722E388 -10722E388:lI109|N -1071F7408:lH1071FA060|N -1071FA060:lI119|H1071FCFA0 -1071FCFA0:lI120|H107200058 -107200058:lI85|H107203200 -107203200:lI112|H107206430 -107206430:lI100|H1072096E8 -1072096E8:lI97|H10720C948 -10720C948:lI116|H10720FB58 -10720FB58:lI101|H107212DE8 -107212DE8:lI85|H1072161A0 -1072161A0:lI73|H107219760 -107219760:lI69|H10721CDB0 -10721CDB0:lI118|H1072203B0 -1072203B0:lI101|H107223748 -107223748:lI110|H1072267C0 -1072267C0:lI116|H107229478 -107229478:lI46|H10722BD80 -10722BD80:lI98|H10722E398 -10722E398:lI101|H1072306E0 -1072306E0:lI97|H1072327D8 -1072327D8:lI109|N -1071F2828:lH1071F4BC0|N -1071F4BC0:lI119|H1071F73E8 -1071F73E8:lI120|H1071FA040 -1071FA040:lI101|H1071FCF80 -1071FCF80:lI95|H107200038 -107200038:lI115|H1072031E0 -1072031E0:lI101|H107206410 -107206410:lI114|H1072096C8 -1072096C8:lI118|H10720C928 -10720C928:lI101|H10720FB38 -10720FB38:lI114|H107212DC8 -107212DC8:lI46|H107216180 -107216180:lI98|H107219740 -107219740:lI101|H10721CD90 -10721CD90:lI97|H107220390 -107220390:lI109|N -1071F2818:lH1071F4BB0|N -1071F4BB0:lI119|H1071F73D8 -1071F73D8:lI120|H1071FA030 -1071FA030:lI67|H1071FCF70 -1071FCF70:lI111|H107200028 -107200028:lI109|H1072031D0 -1072031D0:lI109|H107206400 -107206400:lI97|H1072096B8 -1072096B8:lI110|H10720C918 -10720C918:lI100|H10720FB28 -10720FB28:lI69|H107212DB8 -107212DB8:lI118|H107216170 -107216170:lI101|H107219730 -107219730:lI110|H10721CD80 -10721CD80:lI116|H107220380 -107220380:lI46|H107223728 -107223728:lI98|H1072267A0 -1072267A0:lI101|H107229458 -107229458:lI97|H10722BD60 -10722BD60:lI109|N -1071F2808:lH1071F4BA0|N -1071F4BA0:lI119|H1071F73C8 -1071F73C8:lI120|H1071FA020 -1071FA020:lI67|H1071FCF60 -1071FCF60:lI104|H107200018 -107200018:lI111|H1072031C0 -1072031C0:lI105|H1072063F0 -1072063F0:lI99|H1072096A8 -1072096A8:lI101|H10720C908 -10720C908:lI46|H10720FB18 -10720FB18:lI98|H107212DA8 -107212DA8:lI101|H107216160 -107216160:lI97|H107219720 -107219720:lI109|N -1071F27F8:lH1071F4B90|N -1071F4B90:lI119|H1071F73B8 -1071F73B8:lI120|H1071FA010 -1071FA010:lI71|H1071FCF50 -1071FCF50:lI114|H107200008 -107200008:lI105|H1072031B0 -1072031B0:lI100|H1072063E0 -1072063E0:lI66|H107209698 -107209698:lI97|H10720C8F8 -10720C8F8:lI103|H10720FB08 -10720FB08:lI83|H107212D98 -107212D98:lI105|H107216150 -107216150:lI122|H107219710 -107219710:lI101|H10721CD70 -10721CD70:lI114|H107220370 -107220370:lI46|H107223718 -107223718:lI98|H107226790 -107226790:lI101|H107229448 -107229448:lI97|H10722BD50 -10722BD50:lI109|N -1071F27E8:lH1071F4B80|N -1071F4B80:lI119|H1071F73A8 -1071F73A8:lI120|H1071FA000 -1071FA000:lI71|H1071FCF40 -1071FCF40:lI97|H1071FFFF8 -1071FFFF8:lI117|H1072031A0 -1072031A0:lI103|H1072063D0 -1072063D0:lI101|H107209688 -107209688:lI46|H10720C8E8 -10720C8E8:lI98|H10720FAF8 -10720FAF8:lI101|H107212D88 -107212D88:lI97|H107216140 -107216140:lI109|N -1071F27D0:Mn2:H1071F4B60,H1071F4B70 -1071F4B60:lH1071F7388|N -1071F7388:lI119|H1071F9FE0 -1071F9FE0:lI120|H1071FCF20 -1071FCF20:lI72|H1071FFFD8 -1071FFFD8:lI101|H107203180 -107203180:lI108|H1072063B0 -1072063B0:lI112|H107209668 -107209668:lI69|H10720C8C8 -10720C8C8:lI118|H10720FAD8 -10720FAD8:lI101|H107212D68 -107212D68:lI110|H107216120 -107216120:lI116|H1072196F0 -1072196F0:lI46|H10721CD50 -10721CD50:lI98|H107220350 -107220350:lI101|H1072236F8 -1072236F8:lI97|H107226770 -107226770:lI109|N -1071F4B70:lH1071F7398|N -1071F7398:lI119|H1071F9FF0 -1071F9FF0:lI120|H1071FCF30 -1071FCF30:lI67|H1071FFFE8 -1071FFFE8:lI104|H107203190 -107203190:lI101|H1072063C0 -1072063C0:lI99|H107209678 -107209678:lI107|H10720C8D8 -10720C8D8:lI76|H10720FAE8 -10720FAE8:lI105|H107212D78 -107212D78:lI115|H107216130 -107216130:lI116|H107219700 -107219700:lI66|H10721CD60 -10721CD60:lI111|H107220360 -107220360:lI120|H107223708 -107223708:lI46|H107226780 -107226780:lI98|H107229438 -107229438:lI101|H10722BD40 -10722BD40:lI97|H10722E378 -10722E378:lI109|N -1071F27C0:lH1071F4B50|N -1071F4B50:lI119|H1071F7378 -1071F7378:lI120|H1071F9FD0 -1071F9FD0:lI80|H1071FCF10 -1071FCF10:lI114|H1071FFFC8 -1071FFFC8:lI105|H107203170 -107203170:lI110|H1072063A0 -1072063A0:lI116|H107209658 -107209658:lI68|H10720C8B8 -10720C8B8:lI105|H10720FAC8 -10720FAC8:lI97|H107212D58 -107212D58:lI108|H107216110 -107216110:lI111|H1072196E0 -1072196E0:lI103|H10721CD40 -10721CD40:lI46|H107220340 -107220340:lI98|H1072236E8 -1072236E8:lI101|H107226760 -107226760:lI97|H107229428 -107229428:lI109|N -1071F02B8:lI47|H1071F0E78 -1071F0E78:lI111|H1071F2698 -1071F2698:lI112|H1071F49F0 -1071F49F0:lI116|H1071F7218 -1071F7218:lI47|H1071F9E70 -1071F9E70:lI104|H1071FCDB0 -1071FCDB0:lI111|H1071FFE68 -1071FFE68:lI109|H107203010 -107203010:lI101|H107206240 -107206240:lI98|H1072094F8 -1072094F8:lI114|H10720C758 -10720C758:lI101|H10720F968 -10720F968:lI119|H107212BF8 -107212BF8:lI47|H107215FC0 -107215FC0:lI67|H1072195A0 -1072195A0:lI101|H10721CC10 -10721CC10:lI108|H107220220 -107220220:lI108|H1072235C8 -1072235C8:lI97|H107226660 -107226660:lI114|H107229358 -107229358:lI47|H10722BCA0 -10722BCA0:lI101|H10722E2E8 -10722E2E8:lI114|H107230670 -107230670:lI108|H107232768 -107232768:lI97|H107234560 -107234560:lI110|H107236088 -107236088:lI103|H107237900 -107237900:lI47|H107238F78 -107238F78:lI50|H10723A430 -10723A430:lI54|H10723B760 -10723B760:lI46|H10723C820 -10723C820:lI48|H10723D6C0 -10723D6C0:lI46|H10723E440 -10723E440:lI50|H10723F050 -10723F050:lI47|H10723FB20 -10723FB20:lI108|H107240470 -107240470:lI105|H107240CF0 -107240CF0:lI98|H107241480 -107241480:lI47|H107241BB0 -107241BB0:lI101|H107242280 -107242280:lI114|H1072428F0 -1072428F0:lI108|H107242EF0 -107242EF0:lI97|H107243460 -107243460:lI110|H1072439A0 -1072439A0:lI103|H107243E90 -107243E90:lI47|H107244380 -107244380:lI108|H107244830 -107244830:lI105|H107244CA0 -107244CA0:lI98|H107245100 -107245100:lI47|H107245550 -107245550:lI119|H107245950 -107245950:lI120|H107245D10 -107245D10:lI45|H1072460A0 -1072460A0:lI50|H107246430 -107246430:lI46|H1072467C0 -1072467C0:lI51|H107246B50 -107246B50:lI47|H280052C20 -10724AF50:lH10724AFC0|H10724AFD8 -10724AFC0:t2:H1071F0378,H1071F0388 -1071F0388:Mf10:H1071F1440:N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N -1071F1440:t10:H1071F3338,H1071F3348,H1071F3358,H1071F3368,H1071F3378,H1071F3388,H1071F3398,H1071F33A8,H1071F33B8,H1071F33C8,H1071F33D8,H1071F33E8,H1071F33F8,H1071F3408,H1071F3418,H1071F3428 -1071F3428:lI120|H1071F5A10 -1071F5A10:lI114|H1071F8278 -1071F8278:lI101|H1071FAED0 -1071FAED0:lI102|H1071FDE10 -1071FDE10:lI95|H107200EC8 -107200EC8:lI117|H107204070 -107204070:lI116|H1072072A0 -1072072A0:lI105|H10720A528 -10720A528:lI108|H10720D738 -10720D738:lI115|H1072108E8 -1072108E8:lI46|H107213B48 -107213B48:lI98|H107216F00 -107216F00:lI101|H10721A470 -10721A470:lI97|H10721DA20 -10721DA20:lI109|N -1071F3418:lI120|H1071F5A00 -1071F5A00:lI114|H1071F8268 -1071F8268:lI101|H1071FAEC0 -1071FAEC0:lI102|H1071FDE00 -1071FDE00:lI95|H107200EB8 -107200EB8:lI115|H107204060 -107204060:lI99|H107207290 -107207290:lI97|H10720A518 -10720A518:lI110|H10720D728 -10720D728:lI110|H1072108D8 -1072108D8:lI101|H107213B38 -107213B38:lI114|H107216EF0 -107216EF0:lI46|H10721A460 -10721A460:lI98|H10721DA10 -10721DA10:lI101|H107220F60 -107220F60:lI97|H1072241A8 -1072241A8:lI109|N -1071F3408:lI120|H1071F59F0 -1071F59F0:lI114|H1071F8258 -1071F8258:lI101|H1071FAEB0 -1071FAEB0:lI102|H1071FDDF0 -1071FDDF0:lI95|H107200EA8 -107200EA8:lI114|H107204050 -107204050:lI101|H107207280 -107207280:lI97|H10720A508 -10720A508:lI100|H10720D718 -10720D718:lI101|H1072108C8 -1072108C8:lI114|H107213B28 -107213B28:lI46|H107216EE0 -107216EE0:lI98|H10721A450 -10721A450:lI101|H10721DA00 -10721DA00:lI97|H107220F50 -107220F50:lI109|N -1071F33F8:lI120|H1071F59E0 -1071F59E0:lI114|H1071F8248 -1071F8248:lI101|H1071FAEA0 -1071FAEA0:lI102|H1071FDDE0 -1071FDDE0:lI95|H107200E98 -107200E98:lI112|H107204040 -107204040:lI97|H107207270 -107207270:lI114|H10720A4F8 -10720A4F8:lI115|H10720D708 -10720D708:lI101|H1072108B8 -1072108B8:lI114|H107213B18 -107213B18:lI46|H107216ED0 -107216ED0:lI98|H10721A440 -10721A440:lI101|H10721D9F0 -10721D9F0:lI97|H107220F40 -107220F40:lI109|N -1071F33E8:lI120|H1071F59D0 -1071F59D0:lI114|H1071F8238 -1071F8238:lI101|H1071FAE90 -1071FAE90:lI102|H1071FDDD0 -1071FDDD0:lI95|H107200E88 -107200E88:lI99|H107204030 -107204030:lI111|H107207260 -107207260:lI109|H10720A4E8 -10720A4E8:lI112|H10720D6F8 -10720D6F8:lI105|H1072108A8 -1072108A8:lI108|H107213B08 -107213B08:lI101|H107216EC0 -107216EC0:lI114|H10721A430 -10721A430:lI46|H10721D9E0 -10721D9E0:lI98|H107220F30 -107220F30:lI101|H107224198 -107224198:lI97|H1072270E0 -1072270E0:lI109|N -1071F33D8:lI120|H1071F59C0 -1071F59C0:lI114|H1071F8228 -1071F8228:lI101|H1071FAE80 -1071FAE80:lI102|H1071FDDC0 -1071FDDC0:lI95|H107200E78 -107200E78:lI98|H107204020 -107204020:lI97|H107207250 -107207250:lI115|H10720A4D8 -10720A4D8:lI101|H10720D6E8 -10720D6E8:lI46|H107210898 -107210898:lI98|H107213AF8 -107213AF8:lI101|H107216EB0 -107216EB0:lI97|H10721A420 -10721A420:lI109|N -1071F33C8:lI120|H1071F59B0 -1071F59B0:lI114|H1071F8218 -1071F8218:lI101|H1071FAE70 -1071FAE70:lI102|H1071FDDB0 -1071FDDB0:lI46|H107200E68 -107200E68:lI98|H107204010 -107204010:lI101|H107207240 -107207240:lI97|H10720A4C8 -10720A4C8:lI109|N -1071F33B8:lI116|H1071F59A0 -1071F59A0:lI111|H1071F8208 -1071F8208:lI111|H1071FAE60 -1071FAE60:lI108|H1071FDDA0 -1071FDDA0:lI115|H107200E58 -107200E58:lI46|H107204000 -107204000:lI97|H107207230 -107207230:lI112|H10720A4B8 -10720A4B8:lI112|H10720D6D8 -10720D6D8:lI117|H107210888 -107210888:lI112|N -1071F33A8:lI116|H1071F5990 -1071F5990:lI111|H1071F81F8 -1071F81F8:lI111|H1071FAE50 -1071FAE50:lI108|H1071FDD90 -1071FDD90:lI115|H107200E48 -107200E48:lI46|H107203FF0 -107203FF0:lI97|H107207220 -107207220:lI112|H10720A4A8 -10720A4A8:lI112|N -1071F3398:lI116|H1071F5980 -1071F5980:lI97|H1071F81E8 -1071F81E8:lI103|H1071FAE40 -1071FAE40:lI115|H1071FDD80 -1071FDD80:lI46|H107200E38 -107200E38:lI98|H107203FE0 -107203FE0:lI101|H107207210 -107207210:lI97|H10720A498 -10720A498:lI109|N -1071F3388:lI109|H1071F5970 -1071F5970:lI97|H1071F81D8 -1071F81D8:lI107|H1071FAE30 -1071FAE30:lI101|H1071FDD70 -1071FDD70:lI46|H107200E28 -107200E28:lI98|H107203FD0 -107203FD0:lI101|H107207200 -107207200:lI97|H10720A488 -10720A488:lI109|N -1071F3378:lI108|H1071F5960 -1071F5960:lI99|H1071F81C8 -1071F81C8:lI110|H1071FAE20 -1071FAE20:lI116|H1071FDD60 -1071FDD60:lI46|H107200E18 -107200E18:lI98|H107203FC0 -107203FC0:lI101|H1072071F0 -1072071F0:lI97|H10720A478 -10720A478:lI109|N -1071F3368:lI102|H1071F5950 -1071F5950:lI112|H1071F81B8 -1071F81B8:lI114|H1071FAE10 -1071FAE10:lI111|H1071FDD50 -1071FDD50:lI102|H107200E08 -107200E08:lI46|H107203FB0 -107203FB0:lI98|H1072071E0 -1072071E0:lI101|H10720A468 -10720A468:lI97|H10720D6C8 -10720D6C8:lI109|N -1071F3358:lI101|H1071F5940 -1071F5940:lI112|H1071F81A8 -1071F81A8:lI114|H1071FAE00 -1071FAE00:lI111|H1071FDD40 -1071FDD40:lI102|H107200DF8 -107200DF8:lI46|H107203FA0 -107203FA0:lI98|H1072071D0 -1072071D0:lI101|H10720A458 -10720A458:lI97|H10720D6B8 -10720D6B8:lI109|N -1071F3348:lI99|H1071F5930 -1071F5930:lI112|H1071F8198 -1071F8198:lI114|H1071FADF0 -1071FADF0:lI111|H1071FDD30 -1071FDD30:lI102|H107200DE8 -107200DE8:lI46|H107203F90 -107203F90:lI98|H1072071C0 -1072071C0:lI101|H10720A448 -10720A448:lI97|H10720D6A8 -10720D6A8:lI109|N -1071F3338:lI99|H1071F5920 -1071F5920:lI111|H1071F8188 -1071F8188:lI118|H1071FADE0 -1071FADE0:lI101|H1071FDD20 -1071FDD20:lI114|H107200DD8 -107200DD8:lI46|H107203F80 -107203F80:lI98|H1072071B0 -1072071B0:lI101|H10720A438 -10720A438:lI97|H10720D698 -10720D698:lI109|N -1071F0378:lI47|H1071F1430 -1071F1430:lI111|H1071F3328 -1071F3328:lI112|H1071F5910 -1071F5910:lI116|H1071F8178 -1071F8178:lI47|H1071FADD0 -1071FADD0:lI104|H1071FDD10 -1071FDD10:lI111|H107200DC8 -107200DC8:lI109|H107203F70 -107203F70:lI101|H1072071A0 -1072071A0:lI98|H10720A428 -10720A428:lI114|H10720D688 -10720D688:lI101|H107210878 -107210878:lI119|H107213AE8 -107213AE8:lI47|H107216EA0 -107216EA0:lI67|H10721A410 -10721A410:lI101|H10721D9D0 -10721D9D0:lI108|H107220F20 -107220F20:lI108|H107224188 -107224188:lI97|H1072270D0 -1072270D0:lI114|H107229C38 -107229C38:lI47|H10722C460 -10722C460:lI101|H10722E9A8 -10722E9A8:lI114|H107230C20 -107230C20:lI108|H107232C18 -107232C18:lI97|H1072348F0 -1072348F0:lI110|H107236328 -107236328:lI103|H107237AF0 -107237AF0:lI47|H107239108 -107239108:lI50|H10723A5A0 -10723A5A0:lI54|H10723B860 -10723B860:lI46|H10723C8B0 -10723C8B0:lI48|H10723D720 -10723D720:lI46|H10723E480 -10723E480:lI50|H10723F090 -10723F090:lI47|H10723FB50 -10723FB50:lI108|H1072404A0 -1072404A0:lI105|H107240D20 -107240D20:lI98|H1072414B0 -1072414B0:lI47|H107241BE0 -107241BE0:lI101|H1072422B0 -1072422B0:lI114|H107242920 -107242920:lI108|H107242F20 -107242F20:lI97|H107243490 -107243490:lI110|H1072439D0 -1072439D0:lI103|H107243EC0 -107243EC0:lI47|H1072443B0 -1072443B0:lI108|H107244860 -107244860:lI105|H107244CD0 -107244CD0:lI98|H107245130 -107245130:lI47|H107245580 -107245580:lI116|H107245980 -107245980:lI111|H107245D40 -107245D40:lI111|H1072460D0 -1072460D0:lI108|H107246460 -107246460:lI115|H1072467F0 -1072467F0:lI45|H107246B80 -107246B80:lI51|H107246EB0 -107246EB0:lI46|H1072471D0 -1072471D0:lI54|H1072474F0 -1072474F0:lI47|H280052C20 -10724AFD8:lH10724B048|H10724B060 -10724B048:t2:H1071F0440,H1071F0450 -1071F0450:MfA:H1071F14F8:N,N,N,N,N,N,N,N,N,N -1071F14F8:tA:H1071F3468,H1071F3478,H1071F3488,H1071F3498,H1071F34A8,H1071F34B8,H1071F34C8,H1071F34D8,H1071F34E8,H1071F34F8 -1071F34F8:lI116|H1071F5AE0 -1071F5AE0:lI102|H1071F8348 -1071F8348:lI116|H1071FAFA0 -1071FAFA0:lI112|H1071FDEE0 -1071FDEE0:lI95|H107200F98 -107200F98:lI115|H107204140 -107204140:lI117|H107207370 -107207370:lI112|H10720A5E8 -10720A5E8:lI46|H10720D7E8 -10720D7E8:lI98|H107210988 -107210988:lI101|H107213BE8 -107213BE8:lI97|H107216FA0 -107216FA0:lI109|N -1071F34E8:lI116|H1071F5AD0 -1071F5AD0:lI102|H1071F8338 -1071F8338:lI116|H1071FAF90 -1071FAF90:lI112|H1071FDED0 -1071FDED0:lI95|H107200F88 -107200F88:lI108|H107204130 -107204130:lI111|H107207360 -107207360:lI103|H10720A5D8 -10720A5D8:lI103|H10720D7D8 -10720D7D8:lI101|H107210978 -107210978:lI114|H107213BD8 -107213BD8:lI46|H107216F90 -107216F90:lI98|H10721A4E0 -10721A4E0:lI101|H10721DA80 -10721DA80:lI97|H107220FC0 -107220FC0:lI109|N -1071F34D8:lI116|H1071F5AC0 -1071F5AC0:lI102|H1071F8328 -1071F8328:lI116|H1071FAF80 -1071FAF80:lI112|H1071FDEC0 -1071FDEC0:lI95|H107200F78 -107200F78:lI108|H107204120 -107204120:lI105|H107207350 -107207350:lI98|H10720A5C8 -10720A5C8:lI46|H10720D7C8 -10720D7C8:lI98|H107210968 -107210968:lI101|H107213BC8 -107213BC8:lI97|H107216F80 -107216F80:lI109|N -1071F34C8:lI116|H1071F5AB0 -1071F5AB0:lI102|H1071F8318 -1071F8318:lI116|H1071FAF70 -1071FAF70:lI112|H1071FDEB0 -1071FDEB0:lI95|H107200F68 -107200F68:lI102|H107204110 -107204110:lI105|H107207340 -107207340:lI108|H10720A5B8 -10720A5B8:lI101|H10720D7B8 -10720D7B8:lI46|H107210958 -107210958:lI98|H107213BB8 -107213BB8:lI101|H107216F70 -107216F70:lI97|H10721A4D0 -10721A4D0:lI109|N -1071F34B8:lI116|H1071F5AA0 -1071F5AA0:lI102|H1071F8308 -1071F8308:lI116|H1071FAF60 -1071FAF60:lI112|H1071FDEA0 -1071FDEA0:lI95|H107200F58 -107200F58:lI101|H107204100 -107204100:lI110|H107207330 -107207330:lI103|H10720A5A8 -10720A5A8:lI105|H10720D7A8 -10720D7A8:lI110|H107210948 -107210948:lI101|H107213BA8 -107213BA8:lI46|H107216F60 -107216F60:lI98|H10721A4C0 -10721A4C0:lI101|H10721DA70 -10721DA70:lI97|H107220FB0 -107220FB0:lI109|N -1071F34A8:lI116|H1071F5A90 -1071F5A90:lI102|H1071F82F8 -1071F82F8:lI116|H1071FAF50 -1071FAF50:lI112|H1071FDE90 -1071FDE90:lI95|H107200F48 -107200F48:lI98|H1072040F0 -1072040F0:lI105|H107207320 -107207320:lI110|H10720A598 -10720A598:lI97|H10720D798 -10720D798:lI114|H107210938 -107210938:lI121|H107213B98 -107213B98:lI46|H107216F50 -107216F50:lI98|H10721A4B0 -10721A4B0:lI101|H10721DA60 -10721DA60:lI97|H107220FA0 -107220FA0:lI109|N -1071F3498:lI116|H1071F5A80 -1071F5A80:lI102|H1071F82E8 -1071F82E8:lI116|H1071FAF40 -1071FAF40:lI112|H1071FDE80 -1071FDE80:lI95|H107200F38 -107200F38:lI97|H1072040E0 -1072040E0:lI112|H107207310 -107207310:lI112|H10720A588 -10720A588:lI46|H10720D788 -10720D788:lI98|H107210928 -107210928:lI101|H107213B88 -107213B88:lI97|H107216F40 -107216F40:lI109|N -1071F3488:lI116|H1071F5A70 -1071F5A70:lI102|H1071F82D8 -1071F82D8:lI116|H1071FAF30 -1071FAF30:lI112|H1071FDE70 -1071FDE70:lI46|H107200F28 -107200F28:lI98|H1072040D0 -1072040D0:lI101|H107207300 -107207300:lI97|H10720A578 -10720A578:lI109|N -1071F3478:lI116|H1071F5A60 -1071F5A60:lI102|H1071F82C8 -1071F82C8:lI116|H1071FAF20 -1071FAF20:lI112|H1071FDE60 -1071FDE60:lI46|H107200F18 -107200F18:lI97|H1072040C0 -1072040C0:lI112|H1072072F0 -1072072F0:lI112|H10720A568 -10720A568:lI117|H10720D778 -10720D778:lI112|N -1071F3468:lI116|H1071F5A50 -1071F5A50:lI102|H1071F82B8 -1071F82B8:lI116|H1071FAF10 -1071FAF10:lI112|H1071FDE50 -1071FDE50:lI46|H107200F08 -107200F08:lI97|H1072040B0 -1072040B0:lI112|H1072072E0 -1072072E0:lI112|N -1071F0440:lI47|H1071F14E8 -1071F14E8:lI111|H1071F3458 -1071F3458:lI112|H1071F5A40 -1071F5A40:lI116|H1071F82A8 -1071F82A8:lI47|H1071FAF00 -1071FAF00:lI104|H1071FDE40 -1071FDE40:lI111|H107200EF8 -107200EF8:lI109|H1072040A0 -1072040A0:lI101|H1072072D0 -1072072D0:lI98|H10720A558 -10720A558:lI114|H10720D768 -10720D768:lI101|H107210918 -107210918:lI119|H107213B78 -107213B78:lI47|H107216F30 -107216F30:lI67|H10721A4A0 -10721A4A0:lI101|H10721DA50 -10721DA50:lI108|H107220F90 -107220F90:lI108|H1072241D8 -1072241D8:lI97|H107227110 -107227110:lI114|H107229C68 -107229C68:lI47|H10722C490 -10722C490:lI101|H10722E9D8 -10722E9D8:lI114|H107230C50 -107230C50:lI108|H107232C48 -107232C48:lI97|H107234920 -107234920:lI110|H107236358 -107236358:lI103|H107237B20 -107237B20:lI47|H107239138 -107239138:lI50|H10723A5D0 -10723A5D0:lI54|H10723B890 -10723B890:lI46|H10723C8E0 -10723C8E0:lI48|H10723D750 -10723D750:lI46|H10723E4B0 -10723E4B0:lI50|H10723F0C0 -10723F0C0:lI47|H10723FB80 -10723FB80:lI108|H1072404D0 -1072404D0:lI105|H107240D50 -107240D50:lI98|H1072414E0 -1072414E0:lI47|H107241C10 -107241C10:lI101|H1072422E0 -1072422E0:lI114|H107242950 -107242950:lI108|H107242F50 -107242F50:lI97|H1072434C0 -1072434C0:lI110|H107243A00 -107243A00:lI103|H107243EF0 -107243EF0:lI47|H1072443E0 -1072443E0:lI108|H107244890 -107244890:lI105|H107244D00 -107244D00:lI98|H107245160 -107245160:lI47|H1072455B0 -1072455B0:lI116|H1072459B0 -1072459B0:lI102|H107245D70 -107245D70:lI116|H107246100 -107246100:lI112|H107246490 -107246490:lI45|H107246820 -107246820:lI49|H107246BB0 -107246BB0:lI46|H107246EE0 -107246EE0:lI49|H107247200 -107247200:lI47|H280052C20 -10724B060:lH10724B0D0|H10724B0E8 -10724B0D0:t2:H1071F04B8,H1071F04C8 -1071F04C8:MfB:H1071F1560:N,N,N,N,N,N,N,N,N,N,N -1071F1560:tB:H1071F3518,H1071F3528,H1071F3538,H1071F3548,H1071F3558,H1071F3568,H1071F3578,H1071F3588,H1071F3598,H1071F35A8,H1071F35B8 -1071F35B8:lI115|H1071F5BA0 -1071F5BA0:lI121|H1071F8408 -1071F8408:lI110|H1071FB060 -1071FB060:lI116|H1071FDFA0 -1071FDFA0:lI97|H107201058 -107201058:lI120|H107204200 -107204200:lI95|H107207430 -107207430:lI116|H10720A6A8 -10720A6A8:lI111|H10720D898 -10720D898:lI111|H107210A38 -107210A38:lI108|H107213C98 -107213C98:lI115|H107217050 -107217050:lI46|H10721A580 -10721A580:lI97|H10721DB20 -10721DB20:lI112|H107221040 -107221040:lI112|H107224248 -107224248:lI117|H107227170 -107227170:lI112|N -1071F35A8:lI115|H1071F5B90 -1071F5B90:lI121|H1071F83F8 -1071F83F8:lI110|H1071FB050 -1071FB050:lI116|H1071FDF90 -1071FDF90:lI97|H107201048 -107201048:lI120|H1072041F0 -1072041F0:lI95|H107207420 -107207420:lI116|H10720A698 -10720A698:lI111|H10720D888 -10720D888:lI111|H107210A28 -107210A28:lI108|H107213C88 -107213C88:lI115|H107217040 -107217040:lI46|H10721A570 -10721A570:lI97|H10721DB10 -10721DB10:lI112|H107221030 -107221030:lI112|N -1071F3598:lI112|H1071F5B80 -1071F5B80:lI114|H1071F83E8 -1071F83E8:lI101|H1071FB040 -1071FB040:lI116|H1071FDF80 -1071FDF80:lI116|H107201038 -107201038:lI121|H1072041E0 -1072041E0:lI112|H107207410 -107207410:lI114|H10720A688 -10720A688:lI46|H10720D878 -10720D878:lI98|H107210A18 -107210A18:lI101|H107213C78 -107213C78:lI97|H107217030 -107217030:lI109|N -1071F3588:lI109|H1071F5B70 -1071F5B70:lI101|H1071F83D8 -1071F83D8:lI114|H1071FB030 -1071FB030:lI108|H1071FDF70 -1071FDF70:lI95|H107201028 -107201028:lI116|H1072041D0 -1072041D0:lI114|H107207400 -107207400:lI97|H10720A678 -10720A678:lI110|H10720D868 -10720D868:lI115|H107210A08 -107210A08:lI102|H107213C68 -107213C68:lI111|H107217020 -107217020:lI114|H10721A560 -10721A560:lI109|H10721DB00 -10721DB00:lI46|H107221020 -107221020:lI98|H107224238 -107224238:lI101|H107227160 -107227160:lI97|H107229CA8 -107229CA8:lI109|N -1071F3578:lI109|H1071F5B60 -1071F5B60:lI101|H1071F83C8 -1071F83C8:lI114|H1071FB020 -1071FB020:lI108|H1071FDF60 -1071FDF60:lI46|H107201018 -107201018:lI98|H1072041C0 -1072041C0:lI101|H1072073F0 -1072073F0:lI97|H10720A668 -10720A668:lI109|N -1071F3568:lI101|H1071F5B50 -1071F5B50:lI114|H1071F83B8 -1071F83B8:lI108|H1071FB010 -1071FB010:lI95|H1071FDF50 -1071FDF50:lI115|H107201008 -107201008:lI121|H1072041B0 -1072041B0:lI110|H1072073E0 -1072073E0:lI116|H10720A658 -10720A658:lI97|H10720D858 -10720D858:lI120|H1072109F8 -1072109F8:lI95|H107213C58 -107213C58:lI108|H107217010 -107217010:lI105|H10721A550 -10721A550:lI98|H10721DAF0 -10721DAF0:lI46|H107221010 -107221010:lI98|H107224228 -107224228:lI101|H107227150 -107227150:lI97|H107229C98 -107229C98:lI109|N -1071F3558:lI101|H1071F5B40 -1071F5B40:lI114|H1071F83A8 -1071F83A8:lI108|H1071FB000 -1071FB000:lI95|H1071FDF40 -1071FDF40:lI115|H107200FF8 -107200FF8:lI121|H1072041A0 -1072041A0:lI110|H1072073D0 -1072073D0:lI116|H10720A648 -10720A648:lI97|H10720D848 -10720D848:lI120|H1072109E8 -1072109E8:lI46|H107213C48 -107213C48:lI98|H107217000 -107217000:lI101|H10721A540 -10721A540:lI97|H10721DAE0 -10721DAE0:lI109|N -1071F3548:lI101|H1071F5B30 -1071F5B30:lI114|H1071F8398 -1071F8398:lI108|H1071FAFF0 -1071FAFF0:lI95|H1071FDF30 -1071FDF30:lI114|H107200FE8 -107200FE8:lI101|H107204190 -107204190:lI99|H1072073C0 -1072073C0:lI111|H10720A638 -10720A638:lI109|H10720D838 -10720D838:lI109|H1072109D8 -1072109D8:lI101|H107213C38 -107213C38:lI110|H107216FF0 -107216FF0:lI116|H10721A530 -10721A530:lI46|H10721DAD0 -10721DAD0:lI98|H107221000 -107221000:lI101|H107224218 -107224218:lI97|H107227140 -107227140:lI109|N -1071F3538:lI101|H1071F5B20 -1071F5B20:lI114|H1071F8388 -1071F8388:lI108|H1071FAFE0 -1071FAFE0:lI95|H1071FDF20 -1071FDF20:lI112|H107200FD8 -107200FD8:lI114|H107204180 -107204180:lI101|H1072073B0 -1072073B0:lI116|H10720A628 -10720A628:lI116|H10720D828 -10720D828:lI121|H1072109C8 -1072109C8:lI112|H107213C28 -107213C28:lI114|H107216FE0 -107216FE0:lI46|H10721A520 -10721A520:lI98|H10721DAC0 -10721DAC0:lI101|H107220FF0 -107220FF0:lI97|H107224208 -107224208:lI109|N -1071F3528:lI101|H1071F5B10 -1071F5B10:lI114|H1071F8378 -1071F8378:lI108|H1071FAFD0 -1071FAFD0:lI95|H1071FDF10 -1071FDF10:lI99|H107200FC8 -107200FC8:lI111|H107204170 -107204170:lI109|H1072073A0 -1072073A0:lI109|H10720A618 -10720A618:lI101|H10720D818 -10720D818:lI110|H1072109B8 -1072109B8:lI116|H107213C18 -107213C18:lI95|H107216FD0 -107216FD0:lI115|H10721A510 -10721A510:lI99|H10721DAB0 -10721DAB0:lI97|H107220FE0 -107220FE0:lI110|H1072241F8 -1072241F8:lI46|H107227130 -107227130:lI98|H107229C88 -107229C88:lI101|H10722C4B0 -10722C4B0:lI97|H10722E9F8 -10722E9F8:lI109|N -1071F3518:lI101|H1071F5B00 -1071F5B00:lI112|H1071F8368 -1071F8368:lI112|H1071FAFC0 -1071FAFC0:lI95|H1071FDF00 -1071FDF00:lI100|H107200FB8 -107200FB8:lI111|H107204160 -107204160:lI100|H107207390 -107207390:lI103|H10720A608 -10720A608:lI101|H10720D808 -10720D808:lI114|H1072109A8 -1072109A8:lI46|H107213C08 -107213C08:lI98|H107216FC0 -107216FC0:lI101|H10721A500 -10721A500:lI97|H10721DAA0 -10721DAA0:lI109|N -1071F04B8:lI47|H1071F1550 -1071F1550:lI111|H1071F3508 -1071F3508:lI112|H1071F5AF0 -1071F5AF0:lI116|H1071F8358 -1071F8358:lI47|H1071FAFB0 -1071FAFB0:lI104|H1071FDEF0 -1071FDEF0:lI111|H107200FA8 -107200FA8:lI109|H107204150 -107204150:lI101|H107207380 -107207380:lI98|H10720A5F8 -10720A5F8:lI114|H10720D7F8 -10720D7F8:lI101|H107210998 -107210998:lI119|H107213BF8 -107213BF8:lI47|H107216FB0 -107216FB0:lI67|H10721A4F0 -10721A4F0:lI101|H10721DA90 -10721DA90:lI108|H107220FD0 -107220FD0:lI108|H1072241E8 -1072241E8:lI97|H107227120 -107227120:lI114|H107229C78 -107229C78:lI47|H10722C4A0 -10722C4A0:lI101|H10722E9E8 -10722E9E8:lI114|H107230C60 -107230C60:lI108|H107232C58 -107232C58:lI97|H107234930 -107234930:lI110|H107236368 -107236368:lI103|H107237B30 -107237B30:lI47|H107239148 -107239148:lI50|H10723A5E0 -10723A5E0:lI54|H10723B8A0 -10723B8A0:lI46|H10723C8F0 -10723C8F0:lI48|H10723D760 -10723D760:lI46|H10723E4C0 -10723E4C0:lI50|H10723F0D0 -10723F0D0:lI47|H10723FB90 -10723FB90:lI108|H1072404E0 -1072404E0:lI105|H107240D60 -107240D60:lI98|H1072414F0 -1072414F0:lI47|H107241C20 -107241C20:lI101|H1072422F0 -1072422F0:lI114|H107242960 -107242960:lI108|H107242F60 -107242F60:lI97|H1072434D0 -1072434D0:lI110|H107243A10 -107243A10:lI103|H107243F00 -107243F00:lI47|H1072443F0 -1072443F0:lI108|H1072448A0 -1072448A0:lI105|H107244D10 -107244D10:lI98|H107245170 -107245170:lI47|H1072455C0 -1072455C0:lI115|H1072459C0 -1072459C0:lI121|H107245D80 -107245D80:lI110|H107246110 -107246110:lI116|H1072464A0 -1072464A0:lI97|H107246830 -107246830:lI120|H107246BC0 -107246BC0:lI95|H107246EF0 -107246EF0:lI116|H107247210 -107247210:lI111|H107247520 -107247520:lI111|H107247820 -107247820:lI108|H107247B20 -107247B20:lI115|H107247E10 -107247E10:lI45|H1072480E0 -1072480E0:lI51|H1072483A0 -1072483A0:lI46|H107248660 -107248660:lI49|H107248910 -107248910:lI47|H280052C20 -10724B0E8:lH10724B158|H1071F0538 -10724B158:t2:H1071F0548,H1071F0558 -1071F0558:Mh4A:10:H1071F15F8,H1071F1610,H1071F1640,H1071F1678,H1071F16A8,H1071F16D8,H1071F16F8,H1071F1728,H1071F1748,H1071F1770,H1071F1790,H1071F17B8,H1071F17F0,H1071F1810,H1071F1838,H1071F1850 -1071F15F8:Mn2:H1071F36A0,H1071F36B0 -1071F36A0:lH1071F5E60|N -1071F5E60:lI115|H1071F8AB0 -1071F8AB0:lI115|H1071FB9F0 -1071FB9F0:lI108|H1071FEAA8 -1071FEAA8:lI46|H107201C50 -107201C50:lI97|H107204E90 -107204E90:lI112|H107208188 -107208188:lI112|N -1071F36B0:lH1071F5E70|N -1071F5E70:lI116|H1071F8AC0 -1071F8AC0:lI108|H1071FBA00 -1071FBA00:lI115|H1071FEAB8 -1071FEAB8:lI95|H107201C60 -107201C60:lI114|H107204EA0 -107204EA0:lI101|H107208198 -107208198:lI99|H10720B468 -10720B468:lI111|H10720E728 -10720E728:lI114|H107211AA8 -107211AA8:lI100|H107214F80 -107214F80:lI46|H107218620 -107218620:lI98|H10721BE80 -10721BE80:lI101|H10721F5B0 -10721F5B0:lI97|H107222AB8 -107222AB8:lI109|N -1071F1850:Mn3:H1071F3AB8,H1071F3AC8,H1071F3AD8 -1071F3AB8:lH1071F62D0|N -1071F62D0:lI116|H1071F8F20 -1071F8F20:lI108|H1071FBE60 -1071FBE60:lI115|H1071FEF18 -1071FEF18:lI95|H1072020C0 -1072020C0:lI99|H107205300 -107205300:lI108|H1072085F8 -1072085F8:lI105|H10720B8C8 -10720B8C8:lI101|H10720EB88 -10720EB88:lI110|H107211EE8 -107211EE8:lI116|H1072153C0 -1072153C0:lI95|H107218A50 -107218A50:lI99|H10721C280 -10721C280:lI111|H10721F980 -10721F980:lI110|H107222E78 -107222E78:lI110|H107225FE0 -107225FE0:lI101|H107228DC8 -107228DC8:lI99|H10722B800 -10722B800:lI116|H10722DED8 -10722DED8:lI105|H107230300 -107230300:lI111|H107232478 -107232478:lI110|H1072342F0 -1072342F0:lI95|H107235E58 -107235E58:lI49|H107237750 -107237750:lI95|H107238DD8 -107238DD8:lI51|H10723A2B0 -10723A2B0:lI46|H10723B610 -10723B610:lI98|H10723C700 -10723C700:lI101|H10723D5C0 -10723D5C0:lI97|H10723E340 -10723E340:lI109|N -1071F3AD8:lH1071F62F0|N -1071F62F0:lI116|H1071F8F40 -1071F8F40:lI108|H1071FBE80 -1071FBE80:lI115|H1071FEF38 -1071FEF38:lI95|H1072020E0 -1072020E0:lI98|H107205320 -107205320:lI108|H107208618 -107208618:lI111|H10720B8E8 -10720B8E8:lI111|H10720EBA8 -10720EBA8:lI109|H107211F08 -107211F08:lI95|H1072153E0 -1072153E0:lI102|H107218A70 -107218A70:lI105|H10721C2A0 -10721C2A0:lI108|H10721F9A0 -10721F9A0:lI116|H107222E98 -107222E98:lI101|H107226000 -107226000:lI114|H107228DE8 -107228DE8:lI46|H10722B820 -10722B820:lI98|H10722DEF8 -10722DEF8:lI101|H107230320 -107230320:lI97|H107232498 -107232498:lI109|N -1071F3AC8:lH1071F62E0|N -1071F62E0:lI115|H1071F8F30 -1071F8F30:lI115|H1071FBE70 -1071FBE70:lI108|H1071FEF28 -1071FEF28:lI95|H1072020D0 -1072020D0:lI108|H107205310 -107205310:lI105|H107208608 -107208608:lI115|H10720B8D8 -10720B8D8:lI116|H10720EB98 -10720EB98:lI101|H107211EF8 -107211EF8:lI110|H1072153D0 -1072153D0:lI95|H107218A60 -107218A60:lI116|H10721C290 -10721C290:lI114|H10721F990 -10721F990:lI97|H107222E88 -107222E88:lI99|H107225FF0 -107225FF0:lI107|H107228DD8 -107228DD8:lI101|H10722B810 -10722B810:lI114|H10722DEE8 -10722DEE8:lI95|H107230310 -107230310:lI115|H107232488 -107232488:lI117|H107234300 -107234300:lI112|H107235E68 -107235E68:lI46|H107237760 -107237760:lI98|H107238DE8 -107238DE8:lI101|H10723A2C0 -10723A2C0:lI97|H10723B620 -10723B620:lI109|N -1071F1838:Mn2:H1071F3A98,H1071F3AA8 -1071F3A98:lH1071F62B0|N -1071F62B0:lI100|H1071F8F00 -1071F8F00:lI116|H1071FBE40 -1071FBE40:lI108|H1071FEEF8 -1071FEEF8:lI115|H1072020A0 -1072020A0:lI95|H1072052E0 -1072052E0:lI104|H1072085D8 -1072085D8:lI97|H10720B8A8 -10720B8A8:lI110|H10720EB68 -10720EB68:lI100|H107211EC8 -107211EC8:lI115|H1072153A0 -1072153A0:lI104|H107218A30 -107218A30:lI97|H10721C260 -10721C260:lI107|H10721F960 -10721F960:lI101|H107222E58 -107222E58:lI46|H107225FC0 -107225FC0:lI98|H107228DA8 -107228DA8:lI101|H10722B7E0 -10722B7E0:lI97|H10722DEC8 -10722DEC8:lI109|N -1071F3AA8:lH1071F62C0|N -1071F62C0:lI115|H1071F8F10 -1071F8F10:lI115|H1071FBE50 -1071FBE50:lI108|H1071FEF08 -1071FEF08:lI95|H1072020B0 -1072020B0:lI104|H1072052F0 -1072052F0:lI97|H1072085E8 -1072085E8:lI110|H10720B8B8 -10720B8B8:lI100|H10720EB78 -10720EB78:lI115|H107211ED8 -107211ED8:lI104|H1072153B0 -1072153B0:lI97|H107218A40 -107218A40:lI107|H10721C270 -10721C270:lI101|H10721F970 -10721F970:lI46|H107222E68 -107222E68:lI98|H107225FD0 -107225FD0:lI101|H107228DB8 -107228DB8:lI97|H10722B7F0 -10722B7F0:lI109|N -1071F1810:Mn4:H1071F3A58,H1071F3A68,H1071F3A78,H1071F3A88 -1071F3A58:lH1071F6270|N -1071F6270:lI116|H1071F8EC0 -1071F8EC0:lI108|H1071FBE00 -1071FBE00:lI115|H1071FEEB8 -1071FEEB8:lI95|H107202060 -107202060:lI115|H1072052A0 -1072052A0:lI101|H107208598 -107208598:lI114|H10720B868 -10720B868:lI118|H10720EB28 -10720EB28:lI101|H107211E88 -107211E88:lI114|H107215360 -107215360:lI95|H107218A00 -107218A00:lI115|H10721C230 -10721C230:lI101|H10721F930 -10721F930:lI115|H107222E28 -107222E28:lI115|H107225F90 -107225F90:lI105|H107228D88 -107228D88:lI111|H10722B7D0 -10722B7D0:lI110|H10722DEB8 -10722DEB8:lI95|H1072302F0 -1072302F0:lI116|H107232468 -107232468:lI105|H1072342E0 -1072342E0:lI99|H107235E48 -107235E48:lI107|H107237740 -107237740:lI101|H107238DC8 -107238DC8:lI116|H10723A2A0 -10723A2A0:lI95|H10723B600 -10723B600:lI115|H10723C6F0 -10723C6F0:lI117|H10723D5B0 -10723D5B0:lI112|H10723E330 -10723E330:lI46|H10723EF50 -10723EF50:lI98|H10723FA20 -10723FA20:lI101|H107240370 -107240370:lI97|H107240BF0 -107240BF0:lI109|N -1071F3A88:lH1071F62A0|N -1071F62A0:lI116|H1071F8EF0 -1071F8EF0:lI108|H1071FBE30 -1071FBE30:lI115|H1071FEEE8 -1071FEEE8:lI95|H107202090 -107202090:lI118|H1072052D0 -1072052D0:lI49|H1072085C8 -1072085C8:lI46|H10720B898 -10720B898:lI98|H10720EB58 -10720EB58:lI101|H107211EB8 -107211EB8:lI97|H107215390 -107215390:lI109|N -1071F3A78:lH1071F6290|N -1071F6290:lI116|H1071F8EE0 -1071F8EE0:lI108|H1071FBE20 -1071FBE20:lI115|H1071FEED8 -1071FEED8:lI95|H107202080 -107202080:lI100|H1072052C0 -1072052C0:lI105|H1072085B8 -1072085B8:lI115|H10720B888 -10720B888:lI116|H10720EB48 -10720EB48:lI95|H107211EA8 -107211EA8:lI115|H107215380 -107215380:lI117|H107218A20 -107218A20:lI112|H10721C250 -10721C250:lI46|H10721F950 -10721F950:lI98|H107222E48 -107222E48:lI101|H107225FB0 -107225FB0:lI97|H107228D98 -107228D98:lI109|N -1071F3A68:lH1071F6280|N -1071F6280:lI115|H1071F8ED0 -1071F8ED0:lI115|H1071FBE10 -1071FBE10:lI108|H1071FEEC8 -1071FEEC8:lI95|H107202070 -107202070:lI112|H1072052B0 -1072052B0:lI107|H1072085A8 -1072085A8:lI105|H10720B878 -10720B878:lI120|H10720EB38 -10720EB38:lI95|H107211E98 -107211E98:lI100|H107215370 -107215370:lI98|H107218A10 -107218A10:lI46|H10721C240 -10721C240:lI98|H10721F940 -10721F940:lI101|H107222E38 -107222E38:lI97|H107225FA0 -107225FA0:lI109|N -1071F17F0:Mn3:H1071F3A20,H1071F3A30,H1071F3A40 -1071F3A20:lH1071F6230|N -1071F6230:lI100|H1071F8E80 -1071F8E80:lI116|H1071FBDC0 -1071FBDC0:lI108|H1071FEE78 -1071FEE78:lI115|H107202020 -107202020:lI95|H107205260 -107205260:lI115|H107208558 -107208558:lI111|H10720B828 -10720B828:lI99|H10720EAE8 -10720EAE8:lI107|H107211E48 -107211E48:lI101|H107215320 -107215320:lI116|H1072189C0 -1072189C0:lI46|H10721C1F0 -10721C1F0:lI98|H10721F8F0 -10721F8F0:lI101|H107222DE8 -107222DE8:lI97|H107225F50 -107225F50:lI109|N -1071F3A40:Mn2:H1071F6250,H1071F6260 -1071F6250:lH1071F8EA0|N -1071F8EA0:lI115|H1071FBDE0 -1071FBDE0:lI115|H1071FEE98 -1071FEE98:lI108|H107202040 -107202040:lI95|H107205280 -107205280:lI108|H107208578 -107208578:lI111|H10720B848 -10720B848:lI103|H10720EB08 -10720EB08:lI103|H107211E68 -107211E68:lI101|H107215340 -107215340:lI114|H1072189E0 -1072189E0:lI46|H10721C210 -10721C210:lI98|H10721F910 -10721F910:lI101|H107222E08 -107222E08:lI97|H107225F70 -107225F70:lI109|N -1071F6260:lH1071F8EB0|N -1071F8EB0:lI116|H1071FBDF0 -1071FBDF0:lI108|H1071FEEA8 -1071FEEA8:lI115|H107202050 -107202050:lI95|H107205290 -107205290:lI99|H107208588 -107208588:lI111|H10720B858 -10720B858:lI110|H10720EB18 -10720EB18:lI110|H107211E78 -107211E78:lI101|H107215350 -107215350:lI99|H1072189F0 -1072189F0:lI116|H10721C220 -10721C220:lI105|H10721F920 -10721F920:lI111|H107222E18 -107222E18:lI110|H107225F80 -107225F80:lI95|H107228D78 -107228D78:lI115|H10722B7C0 -10722B7C0:lI117|H10722DEA8 -10722DEA8:lI112|H1072302E0 -1072302E0:lI46|H107232458 -107232458:lI98|H1072342D0 -1072342D0:lI101|H107235E38 -107235E38:lI97|H107237730 -107237730:lI109|N -1071F3A30:lH1071F6240|N -1071F6240:lI115|H1071F8E90 -1071F8E90:lI115|H1071FBDD0 -1071FBDD0:lI108|H1071FEE88 -1071FEE88:lI95|H107202030 -107202030:lI112|H107205270 -107205270:lI101|H107208568 -107208568:lI109|H10720B838 -10720B838:lI95|H10720EAF8 -10720EAF8:lI99|H107211E58 -107211E58:lI97|H107215330 -107215330:lI99|H1072189D0 -1072189D0:lI104|H10721C200 -10721C200:lI101|H10721F900 -10721F900:lI46|H107222DF8 -107222DF8:lI98|H107225F60 -107225F60:lI101|H107228D68 -107228D68:lI97|H10722B7B0 -10722B7B0:lI109|N -1071F17B8:Mn6:H1071F39C0,H1071F39D0,H1071F39E0,H1071F39F0,H1071F3A00,H1071F3A10 -1071F39C0:lH1071F61D0|N -1071F61D0:lI115|H1071F8E20 -1071F8E20:lI115|H1071FBD60 -1071FBD60:lI108|H1071FEE18 -1071FEE18:lI95|H107201FC0 -107201FC0:lI100|H107205200 -107205200:lI104|H1072084F8 -1072084F8:lI95|H10720B7C8 -10720B7C8:lI103|H10720EA88 -10720EA88:lI114|H107211DE8 -107211DE8:lI111|H1072152C0 -1072152C0:lI117|H107218960 -107218960:lI112|H10721C190 -10721C190:lI115|H10721F890 -10721F890:lI46|H107222D88 -107222D88:lI98|H107225EF0 -107225EF0:lI101|H107228D08 -107228D08:lI97|H10722B750 -10722B750:lI109|N -1071F3A10:lH1071F6220|N -1071F6220:lI115|H1071F8E70 -1071F8E70:lI115|H1071FBDB0 -1071FBDB0:lI108|H1071FEE68 -1071FEE68:lI95|H107202010 -107202010:lI99|H107205250 -107205250:lI105|H107208548 -107208548:lI112|H10720B818 -10720B818:lI104|H10720EAD8 -10720EAD8:lI101|H107211E38 -107211E38:lI114|H107215310 -107215310:lI95|H1072189B0 -1072189B0:lI102|H10721C1E0 -10721C1E0:lI111|H10721F8E0 -10721F8E0:lI114|H107222DD8 -107222DD8:lI109|H107225F40 -107225F40:lI97|H107228D58 -107228D58:lI116|H10722B7A0 -10722B7A0:lI46|H10722DE98 -10722DE98:lI98|H1072302D0 -1072302D0:lI101|H107232448 -107232448:lI97|H1072342C0 -1072342C0:lI109|N -1071F3A00:lH1071F6210|N -1071F6210:lI116|H1071F8E60 -1071F8E60:lI108|H1071FBDA0 -1071FBDA0:lI115|H1071FEE58 -1071FEE58:lI95|H107202000 -107202000:lI103|H107205240 -107205240:lI101|H107208538 -107208538:lI110|H10720B808 -10720B808:lI95|H10720EAC8 -10720EAC8:lI99|H107211E28 -107211E28:lI111|H107215300 -107215300:lI110|H1072189A0 -1072189A0:lI110|H10721C1D0 -10721C1D0:lI101|H10721F8D0 -10721F8D0:lI99|H107222DC8 -107222DC8:lI116|H107225F30 -107225F30:lI105|H107228D48 -107228D48:lI111|H10722B790 -10722B790:lI110|H10722DE88 -10722DE88:lI95|H1072302C0 -1072302C0:lI49|H107232438 -107232438:lI95|H1072342B0 -1072342B0:lI51|H107235E28 -107235E28:lI46|H107237720 -107237720:lI98|H107238DB8 -107238DB8:lI101|H10723A290 -10723A290:lI97|H10723B5F0 -10723B5F0:lI109|N -1071F39F0:lH1071F6200|N -1071F6200:lI115|H1071F8E50 -1071F8E50:lI115|H1071FBD90 -1071FBD90:lI108|H1071FEE48 -1071FEE48:lI95|H107201FF0 -107201FF0:lI115|H107205230 -107205230:lI114|H107208528 -107208528:lI112|H10720B7F8 -10720B7F8:lI95|H10720EAB8 -10720EAB8:lI112|H107211E18 -107211E18:lI114|H1072152F0 -1072152F0:lI105|H107218990 -107218990:lI109|H10721C1C0 -10721C1C0:lI101|H10721F8C0 -10721F8C0:lI115|H107222DB8 -107222DB8:lI46|H107225F20 -107225F20:lI98|H107228D38 -107228D38:lI101|H10722B780 -10722B780:lI97|H10722DE78 -10722DE78:lI109|N -1071F39E0:lH1071F61F0|N -1071F61F0:lI105|H1071F8E40 -1071F8E40:lI110|H1071FBD80 -1071FBD80:lI101|H1071FEE38 -1071FEE38:lI116|H107201FE0 -107201FE0:lI54|H107205220 -107205220:lI95|H107208518 -107208518:lI116|H10720B7E8 -10720B7E8:lI108|H10720EAA8 -10720EAA8:lI115|H107211E08 -107211E08:lI95|H1072152E0 -1072152E0:lI100|H107218980 -107218980:lI105|H10721C1B0 -10721C1B0:lI115|H10721F8B0 -10721F8B0:lI116|H107222DA8 -107222DA8:lI46|H107225F10 -107225F10:lI98|H107228D28 -107228D28:lI101|H10722B770 -10722B770:lI97|H10722DE68 -10722DE68:lI109|N -1071F39D0:lH1071F61E0|N -1071F61E0:lI115|H1071F8E30 -1071F8E30:lI115|H1071FBD70 -1071FBD70:lI108|H1071FEE28 -1071FEE28:lI95|H107201FD0 -107201FD0:lI115|H107205210 -107205210:lI101|H107208508 -107208508:lI114|H10720B7D8 -10720B7D8:lI118|H10720EA98 -10720EA98:lI101|H107211DF8 -107211DF8:lI114|H1072152D0 -1072152D0:lI95|H107218970 -107218970:lI115|H10721C1A0 -10721C1A0:lI101|H10721F8A0 -10721F8A0:lI115|H107222D98 -107222D98:lI115|H107225F00 -107225F00:lI105|H107228D18 -107228D18:lI111|H10722B760 -10722B760:lI110|H10722DE58 -10722DE58:lI95|H1072302B0 -1072302B0:lI99|H107232428 -107232428:lI97|H1072342A0 -1072342A0:lI99|H107235E18 -107235E18:lI104|H107237710 -107237710:lI101|H107238DA8 -107238DA8:lI95|H10723A280 -10723A280:lI115|H10723B5E0 -10723B5E0:lI117|H10723C6E0 -10723C6E0:lI112|H10723D5A0 -10723D5A0:lI46|H10723E320 -10723E320:lI98|H10723EF40 -10723EF40:lI101|H10723FA10 -10723FA10:lI97|H107240360 -107240360:lI109|N -1071F1790:Mn4:H1071F3980,H1071F3990,H1071F39A0,H1071F39B0 -1071F3980:lH1071F6190|N -1071F6190:lI116|H1071F8DE0 -1071F8DE0:lI108|H1071FBD20 -1071FBD20:lI115|H1071FEDD8 -1071FEDD8:lI95|H107201F80 -107201F80:lI115|H1072051C0 -1072051C0:lI101|H1072084B8 -1072084B8:lI114|H10720B788 -10720B788:lI118|H10720EA48 -10720EA48:lI101|H107211DA8 -107211DA8:lI114|H107215280 -107215280:lI95|H107218920 -107218920:lI115|H10721C150 -10721C150:lI101|H10721F850 -10721F850:lI115|H107222D48 -107222D48:lI115|H107225EC0 -107225EC0:lI105|H107228CD8 -107228CD8:lI111|H10722B720 -10722B720:lI110|H10722DE28 -10722DE28:lI95|H1072302A0 -1072302A0:lI116|H107232418 -107232418:lI105|H107234290 -107234290:lI99|H107235E08 -107235E08:lI107|H107237700 -107237700:lI101|H107238D98 -107238D98:lI116|H10723A270 -10723A270:lI46|H10723B5D0 -10723B5D0:lI98|H10723C6D0 -10723C6D0:lI101|H10723D590 -10723D590:lI97|H10723E310 -10723E310:lI109|N -1071F39B0:lH1071F61C0|N -1071F61C0:lI115|H1071F8E10 -1071F8E10:lI115|H1071FBD50 -1071FBD50:lI108|H1071FEE08 -1071FEE08:lI95|H107201FB0 -107201FB0:lI103|H1072051F0 -1072051F0:lI101|H1072084E8 -1072084E8:lI110|H10720B7B8 -10720B7B8:lI95|H10720EA78 -10720EA78:lI115|H107211DD8 -107211DD8:lI116|H1072152B0 -1072152B0:lI97|H107218950 -107218950:lI116|H10721C180 -10721C180:lI101|H10721F880 -10721F880:lI109|H107222D78 -107222D78:lI46|H107225EE0 -107225EE0:lI98|H107228CF8 -107228CF8:lI101|H10722B740 -10722B740:lI97|H10722DE48 -10722DE48:lI109|N -1071F39A0:lH1071F61B0|N -1071F61B0:lI116|H1071F8E00 -1071F8E00:lI108|H1071FBD40 -1071FBD40:lI115|H1071FEDF8 -1071FEDF8:lI95|H107201FA0 -107201FA0:lI99|H1072051E0 -1072051E0:lI111|H1072084D8 -1072084D8:lI110|H10720B7A8 -10720B7A8:lI110|H10720EA68 -10720EA68:lI101|H107211DC8 -107211DC8:lI99|H1072152A0 -1072152A0:lI116|H107218940 -107218940:lI105|H10721C170 -10721C170:lI111|H10721F870 -10721F870:lI110|H107222D68 -107222D68:lI46|H107225ED0 -107225ED0:lI98|H107228CE8 -107228CE8:lI101|H10722B730 -10722B730:lI97|H10722DE38 -10722DE38:lI109|N -1071F3990:lH1071F61A0|N -1071F61A0:lI115|H1071F8DF0 -1071F8DF0:lI115|H1071FBD30 -1071FBD30:lI108|H1071FEDE8 -1071FEDE8:lI95|H107201F90 -107201F90:lI99|H1072051D0 -1072051D0:lI105|H1072084C8 -1072084C8:lI112|H10720B798 -10720B798:lI104|H10720EA58 -10720EA58:lI101|H107211DB8 -107211DB8:lI114|H107215290 -107215290:lI46|H107218930 -107218930:lI98|H10721C160 -10721C160:lI101|H10721F860 -10721F860:lI97|H107222D58 -107222D58:lI109|N -1071F1770:Mn3:H1071F3940,H1071F3958,H1071F3968 -1071F3940:Mn2:H1071F6140,H1071F6150 -1071F6140:lH1071F8D90|N -1071F8D90:lI115|H1071FBCD0 -1071FBCD0:lI115|H1071FED88 -1071FED88:lI108|H107201F30 -107201F30:lI95|H107205170 -107205170:lI114|H107208468 -107208468:lI101|H10720B738 -10720B738:lI99|H10720E9F8 -10720E9F8:lI111|H107211D58 -107211D58:lI114|H107215230 -107215230:lI100|H1072188D0 -1072188D0:lI46|H10721C100 -10721C100:lI98|H10721F800 -10721F800:lI101|H107222CF8 -107222CF8:lI97|H107225E70 -107225E70:lI109|N -1071F6150:lH1071F8DA0|N -1071F8DA0:lI116|H1071FBCE0 -1071FBCE0:lI108|H1071FED98 -1071FED98:lI115|H107201F40 -107201F40:lI95|H107205180 -107205180:lI99|H107208478 -107208478:lI108|H10720B748 -10720B748:lI105|H10720EA08 -10720EA08:lI101|H107211D68 -107211D68:lI110|H107215240 -107215240:lI116|H1072188E0 -1072188E0:lI95|H10721C110 -10721C110:lI116|H10721F810 -10721F810:lI105|H107222D08 -107222D08:lI99|H107225E80 -107225E80:lI107|H107228C98 -107228C98:lI101|H10722B6E0 -10722B6E0:lI116|H10722DDE8 -10722DDE8:lI95|H107230260 -107230260:lI115|H1072323D8 -1072323D8:lI116|H107234250 -107234250:lI111|H107235DD8 -107235DD8:lI114|H1072376D0 -1072376D0:lI101|H107238D68 -107238D68:lI46|H10723A250 -10723A250:lI98|H10723B5B0 -10723B5B0:lI101|H10723C6B0 -10723C6B0:lI97|H10723D570 -10723D570:lI109|N -1071F3968:Mn2:H1071F6170,H1071F6180 -1071F6170:lH1071F8DC0|N -1071F8DC0:lI115|H1071FBD00 -1071FBD00:lI115|H1071FEDB8 -1071FEDB8:lI108|H107201F60 -107201F60:lI95|H1072051A0 -1072051A0:lI100|H107208498 -107208498:lI105|H10720B768 -10720B768:lI115|H10720EA28 -10720EA28:lI116|H107211D88 -107211D88:lI95|H107215260 -107215260:lI99|H107218900 -107218900:lI111|H10721C130 -10721C130:lI110|H10721F830 -10721F830:lI110|H107222D28 -107222D28:lI101|H107225EA0 -107225EA0:lI99|H107228CB8 -107228CB8:lI116|H10722B700 -10722B700:lI105|H10722DE08 -10722DE08:lI111|H107230280 -107230280:lI110|H1072323F8 -1072323F8:lI95|H107234270 -107234270:lI115|H107235DE8 -107235DE8:lI117|H1072376E0 -1072376E0:lI112|H107238D78 -107238D78:lI46|H10723A260 -10723A260:lI98|H10723B5C0 -10723B5C0:lI101|H10723C6C0 -10723C6C0:lI97|H10723D580 -10723D580:lI109|N -1071F6180:lH1071F8DD0|N -1071F8DD0:lI100|H1071FBD10 -1071FBD10:lI116|H1071FEDC8 -1071FEDC8:lI108|H107201F70 -107201F70:lI115|H1072051B0 -1072051B0:lI95|H1072084A8 -1072084A8:lI99|H10720B778 -10720B778:lI111|H10720EA38 -10720EA38:lI110|H107211D98 -107211D98:lI110|H107215270 -107215270:lI101|H107218910 -107218910:lI99|H10721C140 -10721C140:lI116|H10721F840 -10721F840:lI105|H107222D38 -107222D38:lI111|H107225EB0 -107225EB0:lI110|H107228CC8 -107228CC8:lI95|H10722B710 -10722B710:lI115|H10722DE18 -10722DE18:lI117|H107230290 -107230290:lI112|H107232408 -107232408:lI46|H107234280 -107234280:lI98|H107235DF8 -107235DF8:lI101|H1072376F0 -1072376F0:lI97|H107238D88 -107238D88:lI109|N -1071F3958:lH1071F6160|N -1071F6160:lI115|H1071F8DB0 -1071F8DB0:lI115|H1071FBCF0 -1071FBCF0:lI108|H1071FEDA8 -1071FEDA8:lI95|H107201F50 -107201F50:lI99|H107205190 -107205190:lI114|H107208488 -107208488:lI108|H10720B758 -10720B758:lI95|H10720EA18 -10720EA18:lI99|H107211D78 -107211D78:lI97|H107215250 -107215250:lI99|H1072188F0 -1072188F0:lI104|H10721C120 -10721C120:lI101|H10721F820 -10721F820:lI95|H107222D18 -107222D18:lI97|H107225E90 -107225E90:lI112|H107228CA8 -107228CA8:lI105|H10722B6F0 -10722B6F0:lI46|H10722DDF8 -10722DDF8:lI98|H107230270 -107230270:lI101|H1072323E8 -1072323E8:lI97|H107234260 -107234260:lI109|N -1071F1748:Mn4:H1071F3900,H1071F3910,H1071F3920,H1071F3930 -1071F3900:lH1071F6100|N -1071F6100:lI115|H1071F8D50 -1071F8D50:lI115|H1071FBC90 -1071FBC90:lI108|H1071FED48 -1071FED48:lI95|H107201EF0 -107201EF0:lI117|H107205130 -107205130:lI112|H107208428 -107208428:lI103|H10720B6F8 -10720B6F8:lI114|H10720E9B8 -10720E9B8:lI97|H107211D18 -107211D18:lI100|H1072151F0 -1072151F0:lI101|H107218890 -107218890:lI95|H10721C0C0 -10721C0C0:lI115|H10721F7C0 -10721F7C0:lI101|H107222CB8 -107222CB8:lI114|H107225E30 -107225E30:lI118|H107228C68 -107228C68:lI101|H10722B6B0 -10722B6B0:lI114|H10722DDB8 -10722DDB8:lI95|H107230230 -107230230:lI115|H1072323A8 -1072323A8:lI101|H107234230 -107234230:lI115|H107235DB8 -107235DB8:lI115|H1072376B0 -1072376B0:lI105|H107238D58 -107238D58:lI111|H10723A240 -10723A240:lI110|H10723B5A0 -10723B5A0:lI95|H10723C6A0 -10723C6A0:lI99|H10723D560 -10723D560:lI97|H10723E300 -10723E300:lI99|H10723EF30 -10723EF30:lI104|H10723FA00 -10723FA00:lI101|H107240350 -107240350:lI95|H107240BE0 -107240BE0:lI115|H107241380 -107241380:lI117|H107241AB0 -107241AB0:lI112|H107242180 -107242180:lI46|H1072427F0 -1072427F0:lI98|H107242DF0 -107242DF0:lI101|H107243360 -107243360:lI97|H1072438A0 -1072438A0:lI109|N -1071F3930:lH1071F6130|N -1071F6130:lI115|H1071F8D80 -1071F8D80:lI115|H1071FBCC0 -1071FBCC0:lI108|H1071FED78 -1071FED78:lI95|H107201F20 -107201F20:lI99|H107205160 -107205160:lI114|H107208458 -107208458:lI108|H10720B728 -10720B728:lI95|H10720E9E8 -10720E9E8:lI104|H107211D48 -107211D48:lI97|H107215220 -107215220:lI115|H1072188C0 -1072188C0:lI104|H10721C0F0 -10721C0F0:lI95|H10721F7F0 -10721F7F0:lI100|H107222CE8 -107222CE8:lI105|H107225E60 -107225E60:lI114|H107228C88 -107228C88:lI46|H10722B6D0 -10722B6D0:lI98|H10722DDD8 -10722DDD8:lI101|H107230250 -107230250:lI97|H1072323C8 -1072323C8:lI109|N -1071F3920:lH1071F6120|N -1071F6120:lI115|H1071F8D70 -1071F8D70:lI115|H1071FBCB0 -1071FBCB0:lI108|H1071FED68 -1071FED68:lI95|H107201F10 -107201F10:lI109|H107205150 -107205150:lI97|H107208448 -107208448:lI110|H10720B718 -10720B718:lI97|H10720E9D8 -10720E9D8:lI103|H107211D38 -107211D38:lI101|H107215210 -107215210:lI114|H1072188B0 -1072188B0:lI46|H10721C0E0 -10721C0E0:lI98|H10721F7E0 -10721F7E0:lI101|H107222CD8 -107222CD8:lI97|H107225E50 -107225E50:lI109|N -1071F3910:lH1071F6110|N -1071F6110:lI100|H1071F8D60 -1071F8D60:lI116|H1071FBCA0 -1071FBCA0:lI108|H1071FED58 -1071FED58:lI115|H107201F00 -107201F00:lI95|H107205140 -107205140:lI103|H107208438 -107208438:lI101|H10720B708 -10720B708:lI110|H10720E9C8 -10720E9C8:lI95|H107211D28 -107211D28:lI99|H107215200 -107215200:lI111|H1072188A0 -1072188A0:lI110|H10721C0D0 -10721C0D0:lI110|H10721F7D0 -10721F7D0:lI101|H107222CC8 -107222CC8:lI99|H107225E40 -107225E40:lI116|H107228C78 -107228C78:lI105|H10722B6C0 -10722B6C0:lI111|H10722DDC8 -10722DDC8:lI110|H107230240 -107230240:lI46|H1072323B8 -1072323B8:lI98|H107234240 -107234240:lI101|H107235DC8 -107235DC8:lI97|H1072376C0 -1072376C0:lI109|N -1071F1728:Mn3:H1071F38D0,H1071F38E0,H1071F38F0 -1071F38D0:lH1071F60D0|N -1071F60D0:lI116|H1071F8D20 -1071F8D20:lI108|H1071FBC60 -1071FBC60:lI115|H1071FED18 -1071FED18:lI95|H107201EC0 -107201EC0:lI100|H107205100 -107205100:lI105|H1072083F8 -1072083F8:lI115|H10720B6C8 -10720B6C8:lI116|H10720E988 -10720E988:lI95|H107211CF8 -107211CF8:lI115|H1072151D0 -1072151D0:lI101|H107218870 -107218870:lI114|H10721C0A0 -10721C0A0:lI118|H10721F7A0 -10721F7A0:lI101|H107222C98 -107222C98:lI114|H107225E10 -107225E10:lI95|H107228C48 -107228C48:lI115|H10722B6A0 -10722B6A0:lI117|H10722DDA8 -10722DDA8:lI112|H107230220 -107230220:lI46|H107232398 -107232398:lI98|H107234220 -107234220:lI101|H107235DA8 -107235DA8:lI97|H1072376A0 -1072376A0:lI109|N -1071F38F0:lH1071F60F0|N -1071F60F0:lI115|H1071F8D40 -1071F8D40:lI115|H1071FBC80 -1071FBC80:lI108|H1071FED38 -1071FED38:lI95|H107201EE0 -107201EE0:lI100|H107205120 -107205120:lI105|H107208418 -107208418:lI115|H10720B6E8 -10720B6E8:lI116|H10720E9A8 -10720E9A8:lI95|H107211D08 -107211D08:lI115|H1072151E0 -1072151E0:lI117|H107218880 -107218880:lI112|H10721C0B0 -10721C0B0:lI46|H10721F7B0 -10721F7B0:lI98|H107222CA8 -107222CA8:lI101|H107225E20 -107225E20:lI97|H107228C58 -107228C58:lI109|N -1071F38E0:lH1071F60E0|N -1071F60E0:lI115|H1071F8D30 -1071F8D30:lI115|H1071FBC70 -1071FBC70:lI108|H1071FED28 -1071FED28:lI46|H107201ED0 -107201ED0:lI97|H107205110 -107205110:lI112|H107208408 -107208408:lI112|H10720B6D8 -10720B6D8:lI117|H10720E998 -10720E998:lI112|N -1071F16F8:Mn5:H1071F3878,H1071F3888,H1071F38A0,H1071F38B0,H1071F38C0 -1071F3878:lH1071F6070|N -1071F6070:lI100|H1071F8CC0 -1071F8CC0:lI116|H1071FBC00 -1071FBC00:lI108|H1071FECB8 -1071FECB8:lI115|H107201E60 -107201E60:lI95|H1072050A0 -1072050A0:lI115|H107208398 -107208398:lI117|H10720B668 -10720B668:lI112|H10720E928 -10720E928:lI46|H107211CA8 -107211CA8:lI98|H107215180 -107215180:lI101|H107218820 -107218820:lI97|H10721C060 -10721C060:lI109|N -1071F38C0:lH1071F60C0|N -1071F60C0:lI116|H1071F8D10 -1071F8D10:lI108|H1071FBC50 -1071FBC50:lI115|H1071FED08 -1071FED08:lI95|H107201EB0 -107201EB0:lI115|H1072050F0 -1072050F0:lI101|H1072083E8 -1072083E8:lI110|H10720B6B8 -10720B6B8:lI100|H10720E978 -10720E978:lI101|H107211CE8 -107211CE8:lI114|H1072151C0 -1072151C0:lI46|H107218860 -107218860:lI98|H10721C090 -10721C090:lI101|H10721F790 -10721F790:lI97|H107222C88 -107222C88:lI109|N -1071F38B0:lH1071F60B0|N -1071F60B0:lI100|H1071F8D00 -1071F8D00:lI116|H1071FBC40 -1071FBC40:lI108|H1071FECF8 -1071FECF8:lI115|H107201EA0 -107201EA0:lI95|H1072050E0 -1072050E0:lI118|H1072083D8 -1072083D8:lI49|H10720B6A8 -10720B6A8:lI46|H10720E968 -10720E968:lI98|H107211CD8 -107211CD8:lI101|H1072151B0 -1072151B0:lI97|H107218850 -107218850:lI109|N -1071F38A0:lH1071F60A0|N -1071F60A0:lI115|H1071F8CF0 -1071F8CF0:lI115|H1071FBC30 -1071FBC30:lI108|H1071FECE8 -1071FECE8:lI95|H107201E90 -107201E90:lI99|H1072050D0 -1072050D0:lI101|H1072083C8 -1072083C8:lI114|H10720B698 -10720B698:lI116|H10720E958 -10720E958:lI105|H107211CC8 -107211CC8:lI102|H1072151A0 -1072151A0:lI105|H107218840 -107218840:lI99|H10721C080 -10721C080:lI97|H10721F780 -10721F780:lI116|H107222C78 -107222C78:lI101|H107225E00 -107225E00:lI46|H107228C38 -107228C38:lI98|H10722B690 -10722B690:lI101|H10722DD98 -10722DD98:lI97|H107230210 -107230210:lI109|N -1071F3888:Mn2:H1071F6080,H1071F6090 -1071F6080:lH1071F8CD0|N -1071F8CD0:lI115|H1071FBC10 -1071FBC10:lI115|H1071FECC8 -1071FECC8:lI108|H107201E70 -107201E70:lI46|H1072050B0 -1072050B0:lI98|H1072083A8 -1072083A8:lI101|H10720B678 -10720B678:lI97|H10720E938 -10720E938:lI109|N -1071F6090:lH1071F8CE0|N -1071F8CE0:lI115|H1071FBC20 -1071FBC20:lI115|H1071FECD8 -1071FECD8:lI108|H107201E80 -107201E80:lI95|H1072050C0 -1072050C0:lI115|H1072083B8 -1072083B8:lI101|H10720B688 -10720B688:lI115|H10720E948 -10720E948:lI115|H107211CB8 -107211CB8:lI105|H107215190 -107215190:lI111|H107218830 -107218830:lI110|H10721C070 -10721C070:lI95|H10721F770 -10721F770:lI99|H107222C68 -107222C68:lI97|H107225DF0 -107225DF0:lI99|H107228C28 -107228C28:lI104|H10722B680 -10722B680:lI101|H10722DD88 -10722DD88:lI95|H107230200 -107230200:lI97|H107232388 -107232388:lI112|H107234210 -107234210:lI105|H107235D98 -107235D98:lI46|H107237690 -107237690:lI98|H107238D48 -107238D48:lI101|H10723A230 -10723A230:lI97|H10723B590 -10723B590:lI109|N -1071F16D8:Mn3:H1071F3840,H1071F3858,H1071F3868 -1071F3840:Mn2:H1071F6030,H1071F6040 -1071F6030:lH1071F8C80|N -1071F8C80:lI115|H1071FBBC0 -1071FBBC0:lI115|H1071FEC78 -1071FEC78:lI108|H107201E20 -107201E20:lI95|H107205060 -107205060:lI99|H107208358 -107208358:lI111|H10720B628 -10720B628:lI110|H10720E8E8 -10720E8E8:lI102|H107211C68 -107211C68:lI105|H107215140 -107215140:lI103|H1072187E0 -1072187E0:lI46|H10721C020 -10721C020:lI98|H10721F730 -10721F730:lI101|H107222C28 -107222C28:lI97|H107225DB0 -107225DB0:lI109|N -1071F6040:lH1071F8C90|N -1071F8C90:lI116|H1071FBBD0 -1071FBBD0:lI108|H1071FEC88 -1071FEC88:lI115|H107201E30 -107201E30:lI95|H107205070 -107205070:lI114|H107208368 -107208368:lI101|H10720B638 -10720B638:lI99|H10720E8F8 -10720E8F8:lI111|H107211C78 -107211C78:lI114|H107215150 -107215150:lI100|H1072187F0 -1072187F0:lI95|H10721C030 -10721C030:lI49|H10721F740 -10721F740:lI95|H107222C38 -107222C38:lI51|H107225DC0 -107225DC0:lI46|H107228C08 -107228C08:lI98|H10722B660 -10722B660:lI101|H10722DD68 -10722DD68:lI97|H1072301E0 -1072301E0:lI109|N -1071F3868:lH1071F6060|N -1071F6060:lI115|H1071F8CB0 -1071F8CB0:lI115|H1071FBBF0 -1071FBBF0:lI108|H1071FECA8 -1071FECA8:lI95|H107201E50 -107201E50:lI115|H107205090 -107205090:lI101|H107208388 -107208388:lI115|H10720B658 -10720B658:lI115|H10720E918 -10720E918:lI105|H107211C98 -107211C98:lI111|H107215170 -107215170:lI110|H107218810 -107218810:lI46|H10721C050 -10721C050:lI98|H10721F760 -10721F760:lI101|H107222C58 -107222C58:lI97|H107225DE0 -107225DE0:lI109|N -1071F3858:lH1071F6050|N -1071F6050:lI115|H1071F8CA0 -1071F8CA0:lI115|H1071FBBE0 -1071FBBE0:lI108|H1071FEC98 -1071FEC98:lI95|H107201E40 -107201E40:lI115|H107205080 -107205080:lI101|H107208378 -107208378:lI114|H10720B648 -10720B648:lI118|H10720E908 -10720E908:lI101|H107211C88 -107211C88:lI114|H107215160 -107215160:lI95|H107218800 -107218800:lI115|H10721C040 -10721C040:lI101|H10721F750 -10721F750:lI115|H107222C48 -107222C48:lI115|H107225DD0 -107225DD0:lI105|H107228C18 -107228C18:lI111|H10722B670 -10722B670:lI110|H10722DD78 -10722DD78:lI95|H1072301F0 -1072301F0:lI99|H107232378 -107232378:lI97|H107234200 -107234200:lI99|H107235D88 -107235D88:lI104|H107237680 -107237680:lI101|H107238D38 -107238D38:lI95|H10723A220 -10723A220:lI100|H10723B580 -10723B580:lI98|H10723C690 -10723C690:lI46|H10723D550 -10723D550:lI98|H10723E2F0 -10723E2F0:lI101|H10723EF20 -10723EF20:lI97|H10723F9F0 -10723F9F0:lI109|N -1071F16A8:Mn5:H1071F37F0,H1071F3800,H1071F3810,H1071F3820,H1071F3830 -1071F37F0:lH1071F5FE0|N -1071F5FE0:lI100|H1071F8C30 -1071F8C30:lI116|H1071FBB70 -1071FBB70:lI108|H1071FEC28 -1071FEC28:lI115|H107201DD0 -107201DD0:lI95|H107205010 -107205010:lI115|H107208308 -107208308:lI101|H10720B5D8 -10720B5D8:lI114|H10720E898 -10720E898:lI118|H107211C18 -107211C18:lI101|H1072150F0 -1072150F0:lI114|H107218790 -107218790:lI95|H10721BFD0 -10721BFD0:lI115|H10721F6E0 -10721F6E0:lI117|H107222BD8 -107222BD8:lI112|H107225D60 -107225D60:lI46|H107228BB8 -107228BB8:lI98|H10722B610 -10722B610:lI101|H10722DD28 -10722DD28:lI97|H1072301A0 -1072301A0:lI109|N -1071F3830:lH1071F6020|N -1071F6020:lI116|H1071F8C70 -1071F8C70:lI108|H1071FBBB0 -1071FBBB0:lI115|H1071FEC68 -1071FEC68:lI95|H107201E10 -107201E10:lI103|H107205050 -107205050:lI101|H107208348 -107208348:lI110|H10720B618 -10720B618:lI95|H10720E8D8 -10720E8D8:lI99|H107211C58 -107211C58:lI111|H107215130 -107215130:lI110|H1072187D0 -1072187D0:lI110|H10721C010 -10721C010:lI101|H10721F720 -10721F720:lI99|H107222C18 -107222C18:lI116|H107225DA0 -107225DA0:lI105|H107228BF8 -107228BF8:lI111|H10722B650 -10722B650:lI110|H10722DD58 -10722DD58:lI46|H1072301D0 -1072301D0:lI98|H107232368 -107232368:lI101|H1072341F0 -1072341F0:lI97|H107235D78 -107235D78:lI109|N -1071F3820:lH1071F6010|N -1071F6010:lI105|H1071F8C60 -1071F8C60:lI110|H1071FBBA0 -1071FBBA0:lI101|H1071FEC58 -1071FEC58:lI116|H107201E00 -107201E00:lI95|H107205040 -107205040:lI116|H107208338 -107208338:lI108|H10720B608 -10720B608:lI115|H10720E8C8 -10720E8C8:lI95|H107211C48 -107211C48:lI100|H107215120 -107215120:lI105|H1072187C0 -1072187C0:lI115|H10721C000 -10721C000:lI116|H10721F710 -10721F710:lI46|H107222C08 -107222C08:lI98|H107225D90 -107225D90:lI101|H107228BE8 -107228BE8:lI97|H10722B640 -10722B640:lI109|N -1071F3810:lH1071F6000|N -1071F6000:lI115|H1071F8C50 -1071F8C50:lI115|H1071FBB90 -1071FBB90:lI108|H1071FEC48 -1071FEC48:lI95|H107201DF0 -107201DF0:lI99|H107205030 -107205030:lI111|H107208328 -107208328:lI110|H10720B5F8 -10720B5F8:lI110|H10720E8B8 -10720E8B8:lI101|H107211C38 -107211C38:lI99|H107215110 -107215110:lI116|H1072187B0 -1072187B0:lI105|H10721BFF0 -10721BFF0:lI111|H10721F700 -10721F700:lI110|H107222BF8 -107222BF8:lI95|H107225D80 -107225D80:lI115|H107228BD8 -107228BD8:lI117|H10722B630 -10722B630:lI112|H10722DD48 -10722DD48:lI46|H1072301C0 -1072301C0:lI98|H107232358 -107232358:lI101|H1072341E0 -1072341E0:lI97|H107235D68 -107235D68:lI109|N -1071F3800:lH1071F5FF0|N -1071F5FF0:lI115|H1071F8C40 -1071F8C40:lI115|H1071FBB80 -1071FBB80:lI108|H1071FEC38 -1071FEC38:lI95|H107201DE0 -107201DE0:lI100|H107205020 -107205020:lI105|H107208318 -107208318:lI115|H10720B5E8 -10720B5E8:lI116|H10720E8A8 -10720E8A8:lI95|H107211C28 -107211C28:lI97|H107215100 -107215100:lI100|H1072187A0 -1072187A0:lI109|H10721BFE0 -10721BFE0:lI105|H10721F6F0 -10721F6F0:lI110|H107222BE8 -107222BE8:lI95|H107225D70 -107225D70:lI115|H107228BC8 -107228BC8:lI117|H10722B620 -10722B620:lI112|H10722DD38 -10722DD38:lI46|H1072301B0 -1072301B0:lI98|H107232348 -107232348:lI101|H1072341D0 -1072341D0:lI97|H107235D58 -107235D58:lI109|N -1071F1678:Mn5:H1071F37A0,H1071F37B0,H1071F37C0,H1071F37D0,H1071F37E0 -1071F37A0:lH1071F5F90|N -1071F5F90:lI116|H1071F8BE0 -1071F8BE0:lI108|H1071FBB20 -1071FBB20:lI115|H1071FEBD8 -1071FEBD8:lI95|H107201D80 -107201D80:lI115|H107204FC0 -107204FC0:lI111|H1072082B8 -1072082B8:lI99|H10720B588 -10720B588:lI107|H10720E848 -10720E848:lI101|H107211BC8 -107211BC8:lI116|H1072150A0 -1072150A0:lI46|H107218740 -107218740:lI98|H10721BF90 -10721BF90:lI101|H10721F6A0 -10721F6A0:lI97|H107222BA8 -107222BA8:lI109|N -1071F37E0:lH1071F5FD0|N -1071F5FD0:lI115|H1071F8C20 -1071F8C20:lI115|H1071FBB60 -1071FBB60:lI108|H1071FEC18 -1071FEC18:lI95|H107201DC0 -107201DC0:lI99|H107205000 -107205000:lI114|H1072082F8 -1072082F8:lI108|H10720B5C8 -10720B5C8:lI46|H10720E888 -10720E888:lI98|H107211C08 -107211C08:lI101|H1072150E0 -1072150E0:lI97|H107218780 -107218780:lI109|N -1071F37D0:lH1071F5FC0|N -1071F5FC0:lI115|H1071F8C10 -1071F8C10:lI115|H1071FBB50 -1071FBB50:lI108|H1071FEC08 -1071FEC08:lI95|H107201DB0 -107201DB0:lI116|H107204FF0 -107204FF0:lI114|H1072082E8 -1072082E8:lI97|H10720B5B8 -10720B5B8:lI99|H10720E878 -10720E878:lI101|H107211BF8 -107211BF8:lI46|H1072150D0 -1072150D0:lI98|H107218770 -107218770:lI101|H10721BFC0 -10721BFC0:lI97|H10721F6D0 -10721F6D0:lI109|N -1071F37C0:lH1071F5FB0|N -1071F5FB0:lI100|H1071F8C00 -1071F8C00:lI116|H1071FBB40 -1071FBB40:lI108|H1071FEBF8 -1071FEBF8:lI115|H107201DA0 -107201DA0:lI95|H107204FE0 -107204FE0:lI114|H1072082D8 -1072082D8:lI101|H10720B5A8 -10720B5A8:lI99|H10720E868 -10720E868:lI111|H107211BE8 -107211BE8:lI114|H1072150C0 -1072150C0:lI100|H107218760 -107218760:lI46|H10721BFB0 -10721BFB0:lI98|H10721F6C0 -10721F6C0:lI101|H107222BC8 -107222BC8:lI97|H107225D50 -107225D50:lI109|N -1071F37B0:lH1071F5FA0|N -1071F5FA0:lI100|H1071F8BF0 -1071F8BF0:lI116|H1071FBB30 -1071FBB30:lI108|H1071FEBE8 -1071FEBE8:lI115|H107201D90 -107201D90:lI95|H107204FD0 -107204FD0:lI108|H1072082C8 -1072082C8:lI105|H10720B598 -10720B598:lI115|H10720E858 -10720E858:lI116|H107211BD8 -107211BD8:lI101|H1072150B0 -1072150B0:lI110|H107218750 -107218750:lI101|H10721BFA0 -10721BFA0:lI114|H10721F6B0 -10721F6B0:lI95|H107222BB8 -107222BB8:lI115|H107225D40 -107225D40:lI117|H107228BA8 -107228BA8:lI112|H10722B600 -10722B600:lI46|H10722DD18 -10722DD18:lI98|H107230190 -107230190:lI101|H107232338 -107232338:lI97|H1072341C0 -1072341C0:lI109|N -1071F1640:Mn6:H1071F3720,H1071F3740,H1071F3750,H1071F3760,H1071F3780,H1071F3790 -1071F3720:Mn3:H1071F5EF0,H1071F5F00,H1071F5F10 -1071F5EF0:lH1071F8B40|N -1071F8B40:lI115|H1071FBA80 -1071FBA80:lI115|H1071FEB38 -1071FEB38:lI108|H107201CE0 -107201CE0:lI95|H107204F20 -107204F20:lI115|H107208218 -107208218:lI101|H10720B4E8 -10720B4E8:lI114|H10720E7A8 -10720E7A8:lI118|H107211B28 -107211B28:lI101|H107215000 -107215000:lI114|H1072186A0 -1072186A0:lI95|H10721BF00 -10721BF00:lI115|H10721F620 -10721F620:lI101|H107222B28 -107222B28:lI115|H107225CD0 -107225CD0:lI115|H107228B38 -107228B38:lI105|H10722B590 -10722B590:lI111|H10722DCA8 -10722DCA8:lI110|H107230140 -107230140:lI95|H1072322E8 -1072322E8:lI99|H107234170 -107234170:lI97|H107235D08 -107235D08:lI99|H107237630 -107237630:lI104|H107238CE8 -107238CE8:lI101|H10723A1D0 -10723A1D0:lI46|H10723B530 -10723B530:lI98|H10723C640 -10723C640:lI101|H10723D510 -10723D510:lI97|H10723E2B0 -10723E2B0:lI109|N -1071F5F10:lH1071F8B60|N -1071F8B60:lI116|H1071FBAA0 -1071FBAA0:lI108|H1071FEB58 -1071FEB58:lI115|H107201D00 -107201D00:lI95|H107204F40 -107204F40:lI100|H107208238 -107208238:lI121|H10720B508 -10720B508:lI110|H10720E7C8 -10720E7C8:lI95|H107211B48 -107211B48:lI99|H107215020 -107215020:lI111|H1072186C0 -1072186C0:lI110|H10721BF20 -10721BF20:lI110|H10721F640 -10721F640:lI101|H107222B48 -107222B48:lI99|H107225CF0 -107225CF0:lI116|H107228B58 -107228B58:lI105|H10722B5B0 -10722B5B0:lI111|H10722DCC8 -10722DCC8:lI110|H107230150 -107230150:lI95|H1072322F8 -1072322F8:lI115|H107234180 -107234180:lI117|H107235D18 -107235D18:lI112|H107237640 -107237640:lI46|H107238CF8 -107238CF8:lI98|H10723A1E0 -10723A1E0:lI101|H10723B540 -10723B540:lI97|H10723C650 -10723C650:lI109|N -1071F5F00:lH1071F8B50|N -1071F8B50:lI116|H1071FBA90 -1071FBA90:lI108|H1071FEB48 -1071FEB48:lI115|H107201CF0 -107201CF0:lI95|H107204F30 -107204F30:lI104|H107208228 -107208228:lI97|H10720B4F8 -10720B4F8:lI110|H10720E7B8 -10720E7B8:lI100|H107211B38 -107211B38:lI115|H107215010 -107215010:lI104|H1072186B0 -1072186B0:lI97|H10721BF10 -10721BF10:lI107|H10721F630 -10721F630:lI101|H107222B38 -107222B38:lI46|H107225CE0 -107225CE0:lI98|H107228B48 -107228B48:lI101|H10722B5A0 -10722B5A0:lI97|H10722DCB8 -10722DCB8:lI109|N -1071F3790:lH1071F5F80|N -1071F5F80:lI115|H1071F8BD0 -1071F8BD0:lI115|H1071FBB10 -1071FBB10:lI108|H1071FEBC8 -1071FEBC8:lI95|H107201D70 -107201D70:lI99|H107204FB0 -107204FB0:lI108|H1072082A8 -1072082A8:lI105|H10720B578 -10720B578:lI101|H10720E838 -10720E838:lI110|H107211BB8 -107211BB8:lI116|H107215090 -107215090:lI95|H107218730 -107218730:lI115|H10721BF80 -10721BF80:lI101|H10721F690 -10721F690:lI115|H107222B98 -107222B98:lI115|H107225D30 -107225D30:lI105|H107228B98 -107228B98:lI111|H10722B5F0 -10722B5F0:lI110|H10722DD08 -10722DD08:lI95|H107230180 -107230180:lI99|H107232328 -107232328:lI97|H1072341B0 -1072341B0:lI99|H107235D48 -107235D48:lI104|H107237670 -107237670:lI101|H107238D28 -107238D28:lI95|H10723A210 -10723A210:lI100|H10723B570 -10723B570:lI98|H10723C680 -10723C680:lI46|H10723D540 -10723D540:lI98|H10723E2E0 -10723E2E0:lI101|H10723EF10 -10723EF10:lI97|H10723F9E0 -10723F9E0:lI109|N -1071F3780:lH1071F5F70|N -1071F5F70:lI115|H1071F8BC0 -1071F8BC0:lI115|H1071FBB00 -1071FBB00:lI108|H1071FEBB8 -1071FEBB8:lI95|H107201D60 -107201D60:lI97|H107204FA0 -107204FA0:lI112|H107208298 -107208298:lI112|H10720B568 -10720B568:lI46|H10720E828 -10720E828:lI98|H107211BA8 -107211BA8:lI101|H107215080 -107215080:lI97|H107218720 -107218720:lI109|N -1071F3760:Mn3:H1071F5F40,H1071F5F50,H1071F5F60 -1071F5F40:lH1071F8B90|N -1071F8B90:lI115|H1071FBAD0 -1071FBAD0:lI115|H1071FEB88 -1071FEB88:lI108|H107201D30 -107201D30:lI95|H107204F70 -107204F70:lI115|H107208268 -107208268:lI117|H10720B538 -10720B538:lI112|H10720E7F8 -10720E7F8:lI46|H107211B78 -107211B78:lI98|H107215050 -107215050:lI101|H1072186F0 -1072186F0:lI97|H10721BF50 -10721BF50:lI109|N -1071F5F60:lH1071F8BB0|N -1071F8BB0:lI116|H1071FBAF0 -1071FBAF0:lI108|H1071FEBA8 -1071FEBA8:lI115|H107201D50 -107201D50:lI95|H107204F90 -107204F90:lI115|H107208288 -107208288:lI101|H10720B558 -10720B558:lI114|H10720E818 -10720E818:lI118|H107211B98 -107211B98:lI101|H107215070 -107215070:lI114|H107218710 -107218710:lI95|H10721BF70 -10721BF70:lI99|H10721F680 -10721F680:lI111|H107222B88 -107222B88:lI110|H107225D20 -107225D20:lI110|H107228B88 -107228B88:lI101|H10722B5E0 -10722B5E0:lI99|H10722DCF8 -10722DCF8:lI116|H107230170 -107230170:lI105|H107232318 -107232318:lI111|H1072341A0 -1072341A0:lI110|H107235D38 -107235D38:lI95|H107237660 -107237660:lI49|H107238D18 -107238D18:lI95|H10723A200 -10723A200:lI51|H10723B560 -10723B560:lI46|H10723C670 -10723C670:lI98|H10723D530 -10723D530:lI101|H10723E2D0 -10723E2D0:lI97|H10723EF00 -10723EF00:lI109|N -1071F5F50:lH1071F8BA0|N -1071F8BA0:lI115|H1071FBAE0 -1071FBAE0:lI115|H1071FEB98 -1071FEB98:lI108|H107201D40 -107201D40:lI95|H107204F80 -107204F80:lI97|H107208278 -107208278:lI108|H10720B548 -10720B548:lI101|H10720E808 -10720E808:lI114|H107211B88 -107211B88:lI116|H107215060 -107215060:lI46|H107218700 -107218700:lI98|H10721BF60 -10721BF60:lI101|H10721F670 -10721F670:lI97|H107222B78 -107222B78:lI109|N -1071F3750:lH1071F5F30|N -1071F5F30:lI100|H1071F8B80 -1071F8B80:lI116|H1071FBAC0 -1071FBAC0:lI108|H1071FEB78 -1071FEB78:lI115|H107201D20 -107201D20:lI95|H107204F60 -107204F60:lI115|H107208258 -107208258:lI101|H10720B528 -10720B528:lI114|H10720E7E8 -10720E7E8:lI118|H107211B68 -107211B68:lI101|H107215040 -107215040:lI114|H1072186E0 -1072186E0:lI95|H10721BF40 -10721BF40:lI115|H10721F660 -10721F660:lI101|H107222B68 -107222B68:lI115|H107225D10 -107225D10:lI115|H107228B78 -107228B78:lI105|H10722B5D0 -10722B5D0:lI111|H10722DCE8 -10722DCE8:lI110|H107230160 -107230160:lI95|H107232308 -107232308:lI99|H107234190 -107234190:lI97|H107235D28 -107235D28:lI99|H107237650 -107237650:lI104|H107238D08 -107238D08:lI101|H10723A1F0 -10723A1F0:lI95|H10723B550 -10723B550:lI115|H10723C660 -10723C660:lI117|H10723D520 -10723D520:lI112|H10723E2C0 -10723E2C0:lI46|H10723EEF0 -10723EEF0:lI98|H10723F9D0 -10723F9D0:lI101|H107240340 -107240340:lI97|H107240BD0 -107240BD0:lI109|N -1071F3740:lH1071F5F20|N -1071F5F20:lI116|H1071F8B70 -1071F8B70:lI108|H1071FBAB0 -1071FBAB0:lI115|H1071FEB68 -1071FEB68:lI95|H107201D10 -107201D10:lI115|H107204F50 -107204F50:lI101|H107208248 -107208248:lI114|H10720B518 -10720B518:lI118|H10720E7D8 -10720E7D8:lI101|H107211B58 -107211B58:lI114|H107215030 -107215030:lI95|H1072186D0 -1072186D0:lI115|H10721BF30 -10721BF30:lI117|H10721F650 -10721F650:lI112|H107222B58 -107222B58:lI46|H107225D00 -107225D00:lI98|H107228B68 -107228B68:lI101|H10722B5C0 -10722B5C0:lI97|H10722DCD8 -10722DCD8:lI109|N -1071F1610:Mn5:H1071F36C0,H1071F36D8,H1071F36E8,H1071F36F8,H1071F3708 -1071F36C0:Mn2:H1071F5E80,H1071F5E90 -1071F5E80:lH1071F8AD0|N -1071F8AD0:lI116|H1071FBA10 -1071FBA10:lI108|H1071FEAC8 -1071FEAC8:lI115|H107201C70 -107201C70:lI95|H107204EB0 -107204EB0:lI104|H1072081A8 -1072081A8:lI97|H10720B478 -10720B478:lI110|H10720E738 -10720E738:lI100|H107211AB8 -107211AB8:lI115|H107214F90 -107214F90:lI104|H107218630 -107218630:lI97|H10721BE90 -10721BE90:lI107|H10721F5C0 -10721F5C0:lI101|H107222AC8 -107222AC8:lI95|H107225C70 -107225C70:lI49|H107228AD8 -107228AD8:lI95|H10722B530 -10722B530:lI51|H10722DC58 -10722DC58:lI46|H107230100 -107230100:lI98|H1072322A8 -1072322A8:lI101|H107234140 -107234140:lI97|H107235CE8 -107235CE8:lI109|N -1071F5E90:lH1071F8AE0|N -1071F8AE0:lI115|H1071FBA20 -1071FBA20:lI115|H1071FEAD8 -1071FEAD8:lI108|H107201C80 -107201C80:lI95|H107204EC0 -107204EC0:lI97|H1072081B8 -1072081B8:lI100|H10720B488 -10720B488:lI109|H10720E748 -10720E748:lI105|H107211AC8 -107211AC8:lI110|H107214FA0 -107214FA0:lI95|H107218640 -107218640:lI115|H10721BEA0 -10721BEA0:lI117|H10721F5D0 -10721F5D0:lI112|H107222AD8 -107222AD8:lI46|H107225C80 -107225C80:lI98|H107228AE8 -107228AE8:lI101|H10722B540 -10722B540:lI97|H10722DC68 -10722DC68:lI109|N -1071F3708:Mn2:H1071F5ED0,H1071F5EE0 -1071F5ED0:lH1071F8B20|N -1071F8B20:lI116|H1071FBA60 -1071FBA60:lI108|H1071FEB18 -1071FEB18:lI115|H107201CC0 -107201CC0:lI95|H107204F00 -107204F00:lI115|H1072081F8 -1072081F8:lI117|H10720B4C8 -10720B4C8:lI112|H10720E788 -10720E788:lI46|H107211B08 -107211B08:lI98|H107214FE0 -107214FE0:lI101|H107218680 -107218680:lI97|H10721BEE0 -10721BEE0:lI109|N -1071F5EE0:lH1071F8B30|N -1071F8B30:lI100|H1071FBA70 -1071FBA70:lI116|H1071FEB28 -1071FEB28:lI108|H107201CD0 -107201CD0:lI115|H107204F10 -107204F10:lI95|H107208208 -107208208:lI99|H10720B4D8 -10720B4D8:lI111|H10720E798 -10720E798:lI110|H107211B18 -107211B18:lI110|H107214FF0 -107214FF0:lI101|H107218690 -107218690:lI99|H10721BEF0 -10721BEF0:lI116|H10721F610 -10721F610:lI105|H107222B18 -107222B18:lI111|H107225CC0 -107225CC0:lI110|H107228B28 -107228B28:lI46|H10722B580 -10722B580:lI98|H10722DC98 -10722DC98:lI101|H107230130 -107230130:lI97|H1072322D8 -1072322D8:lI109|N -1071F36F8:lH1071F5EC0|N -1071F5EC0:lI115|H1071F8B10 -1071F8B10:lI115|H1071FBA50 -1071FBA50:lI108|H1071FEB08 -1071FEB08:lI95|H107201CB0 -107201CB0:lI99|H107204EF0 -107204EF0:lI114|H1072081E8 -1072081E8:lI108|H10720B4B8 -10720B4B8:lI95|H10720E778 -10720E778:lI99|H107211AF8 -107211AF8:lI97|H107214FD0 -107214FD0:lI99|H107218670 -107218670:lI104|H10721BED0 -10721BED0:lI101|H10721F600 -10721F600:lI46|H107222B08 -107222B08:lI98|H107225CB0 -107225CB0:lI101|H107228B18 -107228B18:lI97|H10722B570 -10722B570:lI109|N -1071F36E8:lH1071F5EB0|N -1071F5EB0:lI100|H1071F8B00 -1071F8B00:lI116|H1071FBA40 -1071FBA40:lI108|H1071FEAF8 -1071FEAF8:lI115|H107201CA0 -107201CA0:lI95|H107204EE0 -107204EE0:lI112|H1072081D8 -1072081D8:lI97|H10720B4A8 -10720B4A8:lI99|H10720E768 -10720E768:lI107|H107211AE8 -107211AE8:lI101|H107214FC0 -107214FC0:lI116|H107218660 -107218660:lI95|H10721BEC0 -10721BEC0:lI100|H10721F5F0 -10721F5F0:lI101|H107222AF8 -107222AF8:lI109|H107225CA0 -107225CA0:lI117|H107228B08 -107228B08:lI120|H10722B560 -10722B560:lI46|H10722DC88 -10722DC88:lI98|H107230120 -107230120:lI101|H1072322C8 -1072322C8:lI97|H107234160 -107234160:lI109|N -1071F36D8:lH1071F5EA0|N -1071F5EA0:lI116|H1071F8AF0 -1071F8AF0:lI108|H1071FBA30 -1071FBA30:lI115|H1071FEAE8 -1071FEAE8:lI95|H107201C90 -107201C90:lI100|H107204ED0 -107204ED0:lI116|H1072081C8 -1072081C8:lI108|H10720B498 -10720B498:lI115|H10720E758 -10720E758:lI95|H107211AD8 -107211AD8:lI99|H107214FB0 -107214FB0:lI111|H107218650 -107218650:lI110|H10721BEB0 -10721BEB0:lI110|H10721F5E0 -10721F5E0:lI101|H107222AE8 -107222AE8:lI99|H107225C90 -107225C90:lI116|H107228AF8 -107228AF8:lI105|H10722B550 -10722B550:lI111|H10722DC78 -10722DC78:lI110|H107230110 -107230110:lI46|H1072322B8 -1072322B8:lI98|H107234150 -107234150:lI101|H107235CF8 -107235CF8:lI97|H107237620 -107237620:lI109|N -1071F0548:lI47|H1071F15E8 -1071F15E8:lI111|H1071F3690 -1071F3690:lI112|H1071F5E50 -1071F5E50:lI116|H1071F8AA0 -1071F8AA0:lI47|H1071FB9E0 -1071FB9E0:lI104|H1071FEA98 -1071FEA98:lI111|H107201C40 -107201C40:lI109|H107204E80 -107204E80:lI101|H107208178 -107208178:lI98|H10720B458 -10720B458:lI114|H10720E718 -10720E718:lI101|H107211A98 -107211A98:lI119|H107214F70 -107214F70:lI47|H107218610 -107218610:lI67|H10721BE70 -10721BE70:lI101|H10721F5A0 -10721F5A0:lI108|H107222AA8 -107222AA8:lI108|H107225C60 -107225C60:lI97|H107228AC8 -107228AC8:lI114|H10722B520 -10722B520:lI47|H10722DC48 -10722DC48:lI101|H1072300F0 -1072300F0:lI114|H107232298 -107232298:lI108|H107234130 -107234130:lI97|H107235CD8 -107235CD8:lI110|H107237610 -107237610:lI103|H107238CD8 -107238CD8:lI47|H10723A1C0 -10723A1C0:lI50|H10723B520 -10723B520:lI54|H10723C630 -10723C630:lI46|H10723D500 -10723D500:lI48|H10723E2A0 -10723E2A0:lI46|H10723EEE0 -10723EEE0:lI50|H10723F9C0 -10723F9C0:lI47|H107240330 -107240330:lI108|H107240BC0 -107240BC0:lI105|H107241370 -107241370:lI98|H107241AA0 -107241AA0:lI47|H107242170 -107242170:lI101|H1072427E0 -1072427E0:lI114|H107242DE0 -107242DE0:lI108|H107243350 -107243350:lI97|H107243890 -107243890:lI110|H107243DA0 -107243DA0:lI103|H107244290 -107244290:lI47|H107244740 -107244740:lI108|H107244BB0 -107244BB0:lI105|H107245010 -107245010:lI98|H107245460 -107245460:lI47|H107245860 -107245860:lI115|H107245C20 -107245C20:lI115|H107245FB0 -107245FB0:lI108|H107246340 -107246340:lI45|H1072466D0 -1072466D0:lI49|H107246A60 -107246A60:lI49|H107246DA0 -107246DA0:lI46|H1072470C0 -1072470C0:lI48|H1072473E0 -1072473E0:lI46|H1072476F0 -1072476F0:lI50|H1072479F0 -1072479F0:lI47|H280052C20 -1071F0538:lH1071F15C0|H1071F15D8 -1071F15C0:t2:H1071F35C8,H1071F35D8 -1071F35D8:Mh2B:10:H1071F5BC0,H1071F5BF8,H1071F5C10,H1071F5C30,H1071F5C48,H1071F5C58,H1071F5C70,H1071F5C90,H1071F5CA8,H1071F5CD0,H1071F5CE8,H1071F5D10,H1071F5D20,H1071F5D40,H1071F5D58,H1071F5D70 -1071F5BC0:Mn6:H1071F8428,H1071F8438,H1071F8450,H1071F8460,H1071F8470,H1071F8480 -1071F8428:lH1071FB080|N -1071FB080:lI115|H1071FDFC0 -1071FDFC0:lI115|H107201078 -107201078:lI104|H107204220 -107204220:lI95|H107207450 -107207450:lI99|H10720A6C8 -10720A6C8:lI108|H10720D8B8 -10720D8B8:lI105|H107210A58 -107210A58:lI101|H107213CB8 -107213CB8:lI110|H107217070 -107217070:lI116|H10721A5A0 -10721A5A0:lI95|H10721DB40 -10721DB40:lI99|H107221060 -107221060:lI104|H107224268 -107224268:lI97|H107227190 -107227190:lI110|H107229CC8 -107229CC8:lI110|H10722C4D0 -10722C4D0:lI101|H10722EA18 -10722EA18:lI108|H107230C80 -107230C80:lI46|H107232C78 -107232C78:lI98|H107234950 -107234950:lI101|H107236388 -107236388:lI97|H107237B50 -107237B50:lI109|N -1071F8480:lH1071FB0E0|N -1071FB0E0:lI115|H1071FE020 -1071FE020:lI115|H1072010D8 -1072010D8:lI104|H107204280 -107204280:lI95|H1072074B0 -1072074B0:lI115|H10720A728 -10720A728:lI101|H10720D918 -10720D918:lI114|H107210AA8 -107210AA8:lI118|H107213D08 -107213D08:lI101|H1072170C0 -1072170C0:lI114|H10721A5F0 -10721A5F0:lI95|H10721DB90 -10721DB90:lI99|H1072210B0 -1072210B0:lI104|H1072242B8 -1072242B8:lI97|H1072271D0 -1072271D0:lI110|H107229D08 -107229D08:lI110|H10722C500 -10722C500:lI101|H10722EA48 -10722EA48:lI108|H107230CB0 -107230CB0:lI46|H107232CA8 -107232CA8:lI98|H107234980 -107234980:lI101|H1072363A8 -1072363A8:lI97|H107237B70 -107237B70:lI109|N -1071F8470:lH1071FB0D0|N -1071FB0D0:lI115|H1071FE010 -1071FE010:lI115|H1072010C8 -1072010C8:lI104|H107204270 -107204270:lI95|H1072074A0 -1072074A0:lI115|H10720A718 -10720A718:lI101|H10720D908 -10720D908:lI114|H107210A98 -107210A98:lI118|H107213CF8 -107213CF8:lI101|H1072170B0 -1072170B0:lI114|H10721A5E0 -10721A5E0:lI95|H10721DB80 -10721DB80:lI107|H1072210A0 -1072210A0:lI101|H1072242A8 -1072242A8:lI121|H1072271C0 -1072271C0:lI95|H107229CF8 -107229CF8:lI97|H10722C4F0 -10722C4F0:lI112|H10722EA38 -10722EA38:lI105|H107230CA0 -107230CA0:lI46|H107232C98 -107232C98:lI98|H107234970 -107234970:lI101|H107236398 -107236398:lI97|H107237B60 -107237B60:lI109|N -1071F8460:lH1071FB0C0|N -1071FB0C0:lI115|H1071FE000 -1071FE000:lI115|H1072010B8 -1072010B8:lI104|H107204260 -107204260:lI95|H107207490 -107207490:lI109|H10720A708 -10720A708:lI101|H10720D8F8 -10720D8F8:lI115|H107210A88 -107210A88:lI115|H107213CE8 -107213CE8:lI97|H1072170A0 -1072170A0:lI103|H10721A5D0 -10721A5D0:lI101|H10721DB70 -10721DB70:lI46|H107221090 -107221090:lI98|H107224298 -107224298:lI101|H1072271B0 -1072271B0:lI97|H107229CE8 -107229CE8:lI109|N -1071F8450:lH1071FB0B0|N -1071FB0B0:lI115|H1071FDFF0 -1071FDFF0:lI115|H1072010A8 -1072010A8:lI104|H107204250 -107204250:lI46|H107207480 -107207480:lI97|H10720A6F8 -10720A6F8:lI112|H10720D8E8 -10720D8E8:lI112|N -1071F8438:Mn2:H1071FB090,H1071FB0A0 -1071FB090:lH1071FDFD0|N -1071FDFD0:lI115|H107201088 -107201088:lI115|H107204230 -107204230:lI104|H107207460 -107207460:lI95|H10720A6D8 -10720A6D8:lI99|H10720D8C8 -10720D8C8:lI104|H107210A68 -107210A68:lI97|H107213CC8 -107213CC8:lI110|H107217080 -107217080:lI110|H10721A5B0 -10721A5B0:lI101|H10721DB50 -10721DB50:lI108|H107221070 -107221070:lI95|H107224278 -107224278:lI115|H1072271A0 -1072271A0:lI117|H107229CD8 -107229CD8:lI112|H10722C4E0 -10722C4E0:lI46|H10722EA28 -10722EA28:lI98|H107230C90 -107230C90:lI101|H107232C88 -107232C88:lI97|H107234960 -107234960:lI109|N -1071FB0A0:lH1071FDFE0|N -1071FDFE0:lI115|H107201098 -107201098:lI115|H107204240 -107204240:lI104|H107207470 -107207470:lI95|H10720A6E8 -10720A6E8:lI115|H10720D8D8 -10720D8D8:lI102|H107210A78 -107210A78:lI116|H107213CD8 -107213CD8:lI112|H107217090 -107217090:lI46|H10721A5C0 -10721A5C0:lI98|H10721DB60 -10721DB60:lI101|H107221080 -107221080:lI97|H107224288 -107224288:lI109|N -1071F5D70:Mn2:H1071F86A8,H1071F86B8 -1071F86A8:lH1071FB310|N -1071FB310:lI115|H1071FE250 -1071FE250:lI115|H107201308 -107201308:lI104|H1072044B0 -1072044B0:lI95|H1072076E0 -1072076E0:lI115|H10720A958 -10720A958:lI102|H10720DB48 -10720DB48:lI116|H107210CD8 -107210CD8:lI112|H107213F38 -107213F38:lI100|H1072172D0 -1072172D0:lI95|H10721A800 -10721A800:lI102|H10721DD80 -10721DD80:lI105|H107221280 -107221280:lI108|H107224428 -107224428:lI101|H107227300 -107227300:lI46|H107229E38 -107229E38:lI98|H10722C620 -10722C620:lI101|H10722EB58 -10722EB58:lI97|H107230DB0 -107230DB0:lI109|N -1071F86B8:lH1071FB320|N -1071FB320:lI115|H1071FE260 -1071FE260:lI115|H107201318 -107201318:lI104|H1072044C0 -1072044C0:lI95|H1072076F0 -1072076F0:lI99|H10720A968 -10720A968:lI104|H10720DB58 -10720DB58:lI97|H107210CE8 -107210CE8:lI110|H107213F48 -107213F48:lI110|H1072172E0 -1072172E0:lI101|H10721A810 -10721A810:lI108|H10721DD90 -10721DD90:lI46|H107221290 -107221290:lI98|H107224438 -107224438:lI101|H107227310 -107227310:lI97|H107229E48 -107229E48:lI109|N -1071F5D58:Mn2:H1071F8688,H1071F8698 -1071F8688:lH1071FB2F0|N -1071FB2F0:lI115|H1071FE230 -1071FE230:lI115|H1072012E8 -1072012E8:lI104|H107204490 -107204490:lI95|H1072076C0 -1072076C0:lI97|H10720A938 -10720A938:lI99|H10720DB28 -10720DB28:lI99|H107210CB8 -107210CB8:lI101|H107213F18 -107213F18:lI112|H1072172B0 -1072172B0:lI116|H10721A7E0 -10721A7E0:lI111|H10721DD60 -10721DD60:lI114|H107221260 -107221260:lI46|H107224418 -107224418:lI98|H1072272F0 -1072272F0:lI101|H107229E28 -107229E28:lI97|H10722C610 -10722C610:lI109|N -1071F8698:lH1071FB300|N -1071FB300:lI115|H1071FE240 -1071FE240:lI115|H1072012F8 -1072012F8:lI104|H1072044A0 -1072044A0:lI95|H1072076D0 -1072076D0:lI102|H10720A948 -10720A948:lI105|H10720DB38 -10720DB38:lI108|H107210CC8 -107210CC8:lI101|H107213F28 -107213F28:lI46|H1072172C0 -1072172C0:lI98|H10721A7F0 -10721A7F0:lI101|H10721DD70 -10721DD70:lI97|H107221270 -107221270:lI109|N -1071F5D40:Mn2:H1071F8668,H1071F8678 -1071F8668:lH1071FB2D0|N -1071FB2D0:lI115|H1071FE210 -1071FE210:lI115|H1072012C8 -1072012C8:lI104|H107204470 -107204470:lI95|H1072076A0 -1072076A0:lI115|H10720A918 -10720A918:lI117|H10720DB08 -10720DB08:lI98|H107210C98 -107210C98:lI115|H107213EF8 -107213EF8:lI121|H107217290 -107217290:lI115|H10721A7C0 -10721A7C0:lI116|H10721DD40 -10721DD40:lI101|H107221240 -107221240:lI109|H1072243F8 -1072243F8:lI95|H1072272D0 -1072272D0:lI115|H107229E08 -107229E08:lI117|H10722C5F0 -10722C5F0:lI112|H10722EB38 -10722EB38:lI46|H107230D90 -107230D90:lI98|H107232D68 -107232D68:lI101|H107234A30 -107234A30:lI97|H107236448 -107236448:lI109|N -1071F8678:lH1071FB2E0|N -1071FB2E0:lI115|H1071FE220 -1071FE220:lI115|H1072012D8 -1072012D8:lI104|H107204480 -107204480:lI95|H1072076B0 -1072076B0:lI102|H10720A928 -10720A928:lI115|H10720DB18 -10720DB18:lI109|H107210CA8 -107210CA8:lI95|H107213F08 -107213F08:lI117|H1072172A0 -1072172A0:lI115|H10721A7D0 -10721A7D0:lI101|H10721DD50 -10721DD50:lI114|H107221250 -107221250:lI97|H107224408 -107224408:lI117|H1072272E0 -1072272E0:lI116|H107229E18 -107229E18:lI104|H10722C600 -10722C600:lI95|H10722EB48 -10722EB48:lI99|H107230DA0 -107230DA0:lI108|H107232D78 -107232D78:lI105|H107234A40 -107234A40:lI101|H107236458 -107236458:lI110|H107237C10 -107237C10:lI116|H1072391C8 -1072391C8:lI46|H10723A660 -10723A660:lI98|H10723B920 -10723B920:lI101|H10723C950 -10723C950:lI97|H10723D7C0 -10723D7C0:lI109|N -1071F5D20:Mn3:H1071F8638,H1071F8648,H1071F8658 -1071F8638:lH1071FB2A0|N -1071FB2A0:lI115|H1071FE1E0 -1071FE1E0:lI115|H107201298 -107201298:lI104|H107204440 -107204440:lI95|H107207670 -107207670:lI97|H10720A8E8 -10720A8E8:lI103|H10720DAD8 -10720DAD8:lI101|H107210C68 -107210C68:lI110|H107213EC8 -107213EC8:lI116|H107217260 -107217260:lI46|H10721A790 -10721A790:lI98|H10721DD10 -10721DD10:lI101|H107221210 -107221210:lI97|H1072243C8 -1072243C8:lI109|N -1071F8658:lH1071FB2C0|N -1071FB2C0:lI115|H1071FE200 -1071FE200:lI115|H1072012B8 -1072012B8:lI104|H107204460 -107204460:lI95|H107207690 -107207690:lI100|H10720A908 -10720A908:lI97|H10720DAF8 -10720DAF8:lI101|H107210C88 -107210C88:lI109|H107213EE8 -107213EE8:lI111|H107217280 -107217280:lI110|H10721A7B0 -10721A7B0:lI95|H10721DD30 -10721DD30:lI99|H107221230 -107221230:lI104|H1072243E8 -1072243E8:lI97|H1072272C0 -1072272C0:lI110|H107229DF8 -107229DF8:lI110|H10722C5E0 -10722C5E0:lI101|H10722EB28 -10722EB28:lI108|H107230D80 -107230D80:lI46|H107232D58 -107232D58:lI98|H107234A20 -107234A20:lI101|H107236438 -107236438:lI97|H107237C00 -107237C00:lI109|N -1071F8648:lH1071FB2B0|N -1071FB2B0:lI115|H1071FE1F0 -1071FE1F0:lI115|H1072012A8 -1072012A8:lI104|H107204450 -107204450:lI95|H107207680 -107207680:lI116|H10720A8F8 -10720A8F8:lI99|H10720DAE8 -10720DAE8:lI112|H107210C78 -107210C78:lI105|H107213ED8 -107213ED8:lI112|H107217270 -107217270:lI95|H10721A7A0 -10721A7A0:lI102|H10721DD20 -10721DD20:lI111|H107221220 -107221220:lI114|H1072243D8 -1072243D8:lI119|H1072272B0 -1072272B0:lI97|H107229DE8 -107229DE8:lI114|H10722C5D0 -10722C5D0:lI100|H10722EB18 -10722EB18:lI95|H107230D70 -107230D70:lI99|H107232D48 -107232D48:lI108|H107234A10 -107234A10:lI105|H107236428 -107236428:lI101|H107237BF0 -107237BF0:lI110|H1072391B8 -1072391B8:lI116|H10723A650 -10723A650:lI46|H10723B910 -10723B910:lI98|H10723C940 -10723C940:lI101|H10723D7B0 -10723D7B0:lI97|H10723E500 -10723E500:lI109|N -1071F5D10:lH1071F8628|N -1071F8628:lI115|H1071FB290 -1071FB290:lI115|H1071FE1D0 -1071FE1D0:lI104|H107201288 -107201288:lI95|H107204430 -107204430:lI97|H107207660 -107207660:lI112|H10720A8D8 -10720A8D8:lI112|H10720DAC8 -10720DAC8:lI46|H107210C58 -107210C58:lI98|H107213EB8 -107213EB8:lI101|H107217250 -107217250:lI97|H10721A780 -10721A780:lI109|N -1071F5CE8:Mn4:H1071F85E8,H1071F85F8,H1071F8608,H1071F8618 -1071F85E8:lH1071FB250|N -1071FB250:lI115|H1071FE190 -1071FE190:lI115|H107201248 -107201248:lI104|H1072043F0 -1072043F0:lI95|H107207620 -107207620:lI120|H10720A898 -10720A898:lI102|H10720DA88 -10720DA88:lI101|H107210C18 -107210C18:lI114|H107213E78 -107213E78:lI46|H107217210 -107217210:lI98|H10721A740 -10721A740:lI101|H10721DCD0 -10721DCD0:lI97|H1072211D0 -1072211D0:lI109|N -1071F8618:lH1071FB280|N -1071FB280:lI115|H1071FE1C0 -1071FE1C0:lI115|H107201278 -107201278:lI104|H107204420 -107204420:lI95|H107207650 -107207650:lI98|H10720A8C8 -10720A8C8:lI105|H10720DAB8 -10720DAB8:lI116|H107210C48 -107210C48:lI115|H107213EA8 -107213EA8:lI46|H107217240 -107217240:lI98|H10721A770 -10721A770:lI101|H10721DD00 -10721DD00:lI97|H107221200 -107221200:lI109|N -1071F8608:lH1071FB270|N -1071FB270:lI115|H1071FE1B0 -1071FE1B0:lI115|H107201268 -107201268:lI104|H107204410 -107204410:lI95|H107207640 -107207640:lI102|H10720A8B8 -10720A8B8:lI115|H10720DAA8 -10720DAA8:lI109|H107210C38 -107210C38:lI95|H107213E98 -107213E98:lI107|H107217230 -107217230:lI101|H10721A760 -10721A760:lI120|H10721DCF0 -10721DCF0:lI105|H1072211F0 -1072211F0:lI110|H1072243B8 -1072243B8:lI105|H1072272A0 -1072272A0:lI116|H107229DD8 -107229DD8:lI46|H10722C5C0 -10722C5C0:lI98|H10722EB08 -10722EB08:lI101|H107230D60 -107230D60:lI97|H107232D38 -107232D38:lI109|N -1071F85F8:lH1071FB260|N -1071FB260:lI115|H1071FE1A0 -1071FE1A0:lI115|H107201258 -107201258:lI104|H107204400 -107204400:lI95|H107207630 -107207630:lI111|H10720A8A8 -10720A8A8:lI112|H10720DA98 -10720DA98:lI116|H107210C28 -107210C28:lI105|H107213E88 -107213E88:lI111|H107217220 -107217220:lI110|H10721A750 -10721A750:lI115|H10721DCE0 -10721DCE0:lI46|H1072211E0 -1072211E0:lI98|H1072243A8 -1072243A8:lI101|H107227290 -107227290:lI97|H107229DC8 -107229DC8:lI109|N -1071F5CD0:Mn2:H1071F85C8,H1071F85D8 -1071F85C8:lH1071FB230|N -1071FB230:lI115|H1071FE170 -1071FE170:lI115|H107201228 -107201228:lI104|H1072043D0 -1072043D0:lI95|H107207600 -107207600:lI116|H10720A878 -10720A878:lI99|H10720DA68 -10720DA68:lI112|H107210BF8 -107210BF8:lI105|H107213E58 -107213E58:lI112|H1072171F0 -1072171F0:lI95|H10721A720 -10721A720:lI102|H10721DCB0 -10721DCB0:lI111|H1072211B0 -1072211B0:lI114|H107224388 -107224388:lI119|H107227270 -107227270:lI97|H107229DA8 -107229DA8:lI114|H10722C5A0 -10722C5A0:lI100|H10722EAE8 -10722EAE8:lI95|H107230D40 -107230D40:lI97|H107232D28 -107232D28:lI99|H107234A00 -107234A00:lI99|H107236418 -107236418:lI101|H107237BE0 -107237BE0:lI112|H1072391A8 -1072391A8:lI116|H10723A640 -10723A640:lI111|H10723B900 -10723B900:lI114|H10723C930 -10723C930:lI95|H10723D7A0 -10723D7A0:lI115|H10723E4F0 -10723E4F0:lI117|H10723F100 -10723F100:lI112|H10723FBC0 -10723FBC0:lI46|H107240500 -107240500:lI98|H107240D80 -107240D80:lI101|H107241510 -107241510:lI97|H107241C40 -107241C40:lI109|N -1071F85D8:lH1071FB240|N -1071FB240:lI115|H1071FE180 -1071FE180:lI115|H107201238 -107201238:lI104|H1072043E0 -1072043E0:lI95|H107207610 -107207610:lI115|H10720A888 -10720A888:lI121|H10720DA78 -10720DA78:lI115|H107210C08 -107210C08:lI116|H107213E68 -107213E68:lI101|H107217200 -107217200:lI109|H10721A730 -10721A730:lI95|H10721DCC0 -10721DCC0:lI115|H1072211C0 -1072211C0:lI117|H107224398 -107224398:lI112|H107227280 -107227280:lI46|H107229DB8 -107229DB8:lI98|H10722C5B0 -10722C5B0:lI101|H10722EAF8 -10722EAF8:lI97|H107230D50 -107230D50:lI109|N -1071F5CA8:Mn4:H1071F8588,H1071F8598,H1071F85A8,H1071F85B8 -1071F8588:lH1071FB1F0|N -1071FB1F0:lI115|H1071FE130 -1071FE130:lI115|H1072011E8 -1072011E8:lI104|H107204390 -107204390:lI95|H1072075C0 -1072075C0:lI116|H10720A838 -10720A838:lI99|H10720DA28 -10720DA28:lI112|H107210BB8 -107210BB8:lI105|H107213E18 -107213E18:lI112|H1072171B0 -1072171B0:lI95|H10721A6E0 -10721A6E0:lI102|H10721DC70 -10721DC70:lI111|H107221170 -107221170:lI114|H107224358 -107224358:lI119|H107227250 -107227250:lI97|H107229D88 -107229D88:lI114|H10722C580 -10722C580:lI100|H10722EAC8 -10722EAC8:lI95|H107230D30 -107230D30:lI115|H107232D18 -107232D18:lI114|H1072349F0 -1072349F0:lI118|H107236408 -107236408:lI46|H107237BD0 -107237BD0:lI98|H107239198 -107239198:lI101|H10723A630 -10723A630:lI97|H10723B8F0 -10723B8F0:lI109|N -1071F85B8:lH1071FB220|N -1071FB220:lI115|H1071FE160 -1071FE160:lI115|H107201218 -107201218:lI104|H1072043C0 -1072043C0:lI95|H1072075F0 -1072075F0:lI97|H10720A868 -10720A868:lI117|H10720DA58 -10720DA58:lI116|H107210BE8 -107210BE8:lI104|H107213E48 -107213E48:lI46|H1072171E0 -1072171E0:lI98|H10721A710 -10721A710:lI101|H10721DCA0 -10721DCA0:lI97|H1072211A0 -1072211A0:lI109|N -1071F85A8:lH1071FB210|N -1071FB210:lI115|H1071FE150 -1071FE150:lI115|H107201208 -107201208:lI104|H1072043B0 -1072043B0:lI95|H1072075E0 -1072075E0:lI116|H10720A858 -10720A858:lI114|H10720DA48 -10720DA48:lI97|H107210BD8 -107210BD8:lI110|H107213E38 -107213E38:lI115|H1072171D0 -1072171D0:lI112|H10721A700 -10721A700:lI111|H10721DC90 -10721DC90:lI114|H107221190 -107221190:lI116|H107224378 -107224378:lI46|H107227260 -107227260:lI98|H107229D98 -107229D98:lI101|H10722C590 -10722C590:lI97|H10722EAD8 -10722EAD8:lI109|N -1071F8598:lH1071FB200|N -1071FB200:lI115|H1071FE140 -1071FE140:lI115|H1072011F8 -1072011F8:lI104|H1072043A0 -1072043A0:lI95|H1072075D0 -1072075D0:lI115|H10720A848 -10720A848:lI104|H10720DA38 -10720DA38:lI101|H107210BC8 -107210BC8:lI108|H107213E28 -107213E28:lI108|H1072171C0 -1072171C0:lI46|H10721A6F0 -10721A6F0:lI98|H10721DC80 -10721DC80:lI101|H107221180 -107221180:lI97|H107224368 -107224368:lI109|N -1071F5C90:Mn2:H1071F8568,H1071F8578 -1071F8568:lH1071FB1D0|N -1071FB1D0:lI115|H1071FE110 -1071FE110:lI115|H1072011C8 -1072011C8:lI104|H107204370 -107204370:lI95|H1072075A0 -1072075A0:lI102|H10720A818 -10720A818:lI115|H10720DA08 -10720DA08:lI109|H107210B98 -107210B98:lI95|H107213DF8 -107213DF8:lI117|H107217190 -107217190:lI115|H10721A6C0 -10721A6C0:lI101|H10721DC50 -10721DC50:lI114|H107221150 -107221150:lI97|H107224338 -107224338:lI117|H107227230 -107227230:lI116|H107229D68 -107229D68:lI104|H10722C560 -10722C560:lI95|H10722EAA8 -10722EAA8:lI115|H107230D10 -107230D10:lI101|H107232CF8 -107232CF8:lI114|H1072349D0 -1072349D0:lI118|H1072363E8 -1072363E8:lI101|H107237BB0 -107237BB0:lI114|H107239188 -107239188:lI46|H10723A620 -10723A620:lI98|H10723B8E0 -10723B8E0:lI101|H10723C920 -10723C920:lI97|H10723D790 -10723D790:lI109|N -1071F8578:lH1071FB1E0|N -1071FB1E0:lI115|H1071FE120 -1071FE120:lI115|H1072011D8 -1072011D8:lI104|H107204380 -107204380:lI95|H1072075B0 -1072075B0:lI99|H10720A828 -10720A828:lI108|H10720DA18 -10720DA18:lI105|H107210BA8 -107210BA8:lI101|H107213E08 -107213E08:lI110|H1072171A0 -1072171A0:lI116|H10721A6D0 -10721A6D0:lI95|H10721DC60 -10721DC60:lI107|H107221160 -107221160:lI101|H107224348 -107224348:lI121|H107227240 -107227240:lI95|H107229D78 -107229D78:lI97|H10722C570 -10722C570:lI112|H10722EAB8 -10722EAB8:lI105|H107230D20 -107230D20:lI46|H107232D08 -107232D08:lI98|H1072349E0 -1072349E0:lI101|H1072363F8 -1072363F8:lI97|H107237BC0 -107237BC0:lI109|N -1071F5C70:Mn3:H1071F8538,H1071F8548,H1071F8558 -1071F8538:lH1071FB1A0|N -1071FB1A0:lI115|H1071FE0E0 -1071FE0E0:lI115|H107201198 -107201198:lI104|H107204340 -107204340:lI46|H107207570 -107207570:lI97|H10720A7E8 -10720A7E8:lI112|H10720D9D8 -10720D9D8:lI112|H107210B68 -107210B68:lI117|H107213DC8 -107213DC8:lI112|N -1071F8558:lH1071FB1C0|N -1071FB1C0:lI115|H1071FE100 -1071FE100:lI115|H1072011B8 -1072011B8:lI104|H107204360 -107204360:lI95|H107207590 -107207590:lI105|H10720A808 -10720A808:lI111|H10720D9F8 -10720D9F8:lI46|H107210B88 -107210B88:lI98|H107213DE8 -107213DE8:lI101|H107217180 -107217180:lI97|H10721A6B0 -10721A6B0:lI109|N -1071F8548:lH1071FB1B0|N -1071FB1B0:lI115|H1071FE0F0 -1071FE0F0:lI115|H1072011A8 -1072011A8:lI104|H107204350 -107204350:lI95|H107207580 -107207580:lI99|H10720A7F8 -10720A7F8:lI111|H10720D9E8 -10720D9E8:lI110|H107210B78 -107210B78:lI110|H107213DD8 -107213DD8:lI101|H107217170 -107217170:lI99|H10721A6A0 -10721A6A0:lI116|H10721DC40 -10721DC40:lI105|H107221140 -107221140:lI111|H107224328 -107224328:lI110|H107227220 -107227220:lI46|H107229D58 -107229D58:lI98|H10722C550 -10722C550:lI101|H10722EA98 -10722EA98:lI97|H107230D00 -107230D00:lI109|N -1071F5C58:Mn2:H1071F8518,H1071F8528 -1071F8518:lH1071FB180|N -1071FB180:lI115|H1071FE0C0 -1071FE0C0:lI115|H107201178 -107201178:lI104|H107204320 -107204320:lI95|H107207550 -107207550:lI115|H10720A7C8 -10720A7C8:lI102|H10720D9B8 -10720D9B8:lI116|H107210B48 -107210B48:lI112|H107213DA8 -107213DA8:lI100|H107217150 -107217150:lI95|H10721A680 -10721A680:lI102|H10721DC20 -10721DC20:lI105|H107221120 -107221120:lI108|H107224318 -107224318:lI101|H107227210 -107227210:lI95|H107229D48 -107229D48:lI97|H10722C540 -10722C540:lI112|H10722EA88 -10722EA88:lI105|H107230CF0 -107230CF0:lI46|H107232CE8 -107232CE8:lI98|H1072349C0 -1072349C0:lI101|H1072363D8 -1072363D8:lI97|H107237BA0 -107237BA0:lI109|N -1071F8528:lH1071FB190|N -1071FB190:lI115|H1071FE0D0 -1071FE0D0:lI115|H107201188 -107201188:lI104|H107204330 -107204330:lI95|H107207560 -107207560:lI105|H10720A7D8 -10720A7D8:lI110|H10720D9C8 -10720D9C8:lI102|H107210B58 -107210B58:lI111|H107213DB8 -107213DB8:lI46|H107217160 -107217160:lI98|H10721A690 -10721A690:lI101|H10721DC30 -10721DC30:lI97|H107221130 -107221130:lI109|N -1071F5C48:lH1071F8508|N -1071F8508:lI115|H1071FB170 -1071FB170:lI115|H1071FE0B0 -1071FE0B0:lI104|H107201168 -107201168:lI95|H107204310 -107204310:lI99|H107207540 -107207540:lI111|H10720A7B8 -10720A7B8:lI110|H10720D9A8 -10720D9A8:lI110|H107210B38 -107210B38:lI101|H107213D98 -107213D98:lI99|H107217140 -107217140:lI116|H10721A670 -10721A670:lI105|H10721DC10 -10721DC10:lI111|H107221110 -107221110:lI110|H107224308 -107224308:lI95|H107227200 -107227200:lI104|H107229D38 -107229D38:lI97|H10722C530 -10722C530:lI110|H10722EA78 -10722EA78:lI100|H107230CE0 -107230CE0:lI108|H107232CD8 -107232CD8:lI101|H1072349B0 -1072349B0:lI114|H1072363C8 -1072363C8:lI46|H107237B90 -107237B90:lI98|H107239178 -107239178:lI101|H10723A610 -10723A610:lI97|H10723B8D0 -10723B8D0:lI109|N -1071F5C30:Mn2:H1071F84E0,H1071F84F8 -1071F84E0:Mn2:H1071FB140,H1071FB150 -1071FB140:lH1071FE080|N -1071FE080:lI115|H107201138 -107201138:lI115|H1072042E0 -1072042E0:lI104|H107207510 -107207510:lI95|H10720A788 -10720A788:lI100|H10720D978 -10720D978:lI98|H107210B08 -107210B08:lI103|H107213D68 -107213D68:lI46|H107217120 -107217120:lI98|H10721A650 -10721A650:lI101|H10721DBF0 -10721DBF0:lI97|H1072210F0 -1072210F0:lI109|N -1071FB150:lH1071FE090|N -1071FE090:lI115|H107201148 -107201148:lI115|H1072042F0 -1072042F0:lI104|H107207520 -107207520:lI46|H10720A798 -10720A798:lI98|H10720D988 -10720D988:lI101|H107210B18 -107210B18:lI97|H107213D78 -107213D78:lI109|N -1071F84F8:lH1071FB160|N -1071FB160:lI115|H1071FE0A0 -1071FE0A0:lI115|H107201158 -107201158:lI104|H107204300 -107204300:lI95|H107207530 -107207530:lI115|H10720A7A8 -10720A7A8:lI102|H10720D998 -10720D998:lI116|H107210B28 -107210B28:lI112|H107213D88 -107213D88:lI100|H107217130 -107217130:lI46|H10721A660 -10721A660:lI98|H10721DC00 -10721DC00:lI101|H107221100 -107221100:lI97|H1072242F8 -1072242F8:lI109|N -1071F5C10:Mn3:H1071F84B0,H1071F84C0,H1071F84D0 -1071F84B0:lH1071FB110|N -1071FB110:lI115|H1071FE050 -1071FE050:lI115|H107201108 -107201108:lI104|H1072042B0 -1072042B0:lI95|H1072074E0 -1072074E0:lI110|H10720A758 -10720A758:lI111|H10720D948 -10720D948:lI95|H107210AD8 -107210AD8:lI105|H107213D38 -107213D38:lI111|H1072170F0 -1072170F0:lI46|H10721A620 -10721A620:lI98|H10721DBC0 -10721DBC0:lI101|H1072210D0 -1072210D0:lI97|H1072242D8 -1072242D8:lI109|N -1071F84D0:lH1071FB130|N -1071FB130:lI115|H1071FE070 -1071FE070:lI115|H107201128 -107201128:lI104|H1072042D0 -1072042D0:lI95|H107207500 -107207500:lI99|H10720A778 -10720A778:lI108|H10720D968 -10720D968:lI105|H107210AF8 -107210AF8:lI46|H107213D58 -107213D58:lI98|H107217110 -107217110:lI101|H10721A640 -10721A640:lI97|H10721DBE0 -10721DBE0:lI109|N -1071F84C0:lH1071FB120|N -1071FB120:lI115|H1071FE060 -1071FE060:lI115|H107201118 -107201118:lI104|H1072042C0 -1072042C0:lI95|H1072074F0 -1072074F0:lI116|H10720A768 -10720A768:lI99|H10720D958 -10720D958:lI112|H107210AE8 -107210AE8:lI105|H107213D48 -107213D48:lI112|H107217100 -107217100:lI95|H10721A630 -10721A630:lI102|H10721DBD0 -10721DBD0:lI111|H1072210E0 -1072210E0:lI114|H1072242E8 -1072242E8:lI119|H1072271F0 -1072271F0:lI97|H107229D28 -107229D28:lI114|H10722C520 -10722C520:lI100|H10722EA68 -10722EA68:lI95|H107230CD0 -107230CD0:lI97|H107232CC8 -107232CC8:lI99|H1072349A0 -1072349A0:lI99|H1072363B8 -1072363B8:lI101|H107237B80 -107237B80:lI112|H107239168 -107239168:lI116|H10723A600 -10723A600:lI111|H10723B8C0 -10723B8C0:lI114|H10723C910 -10723C910:lI46|H10723D780 -10723D780:lI98|H10723E4E0 -10723E4E0:lI101|H10723F0F0 -10723F0F0:lI97|H10723FBB0 -10723FBB0:lI109|N -1071F5BF8:Mn2:H1071F8490,H1071F84A0 -1071F8490:lH1071FB0F0|N -1071FB0F0:lI115|H1071FE030 -1071FE030:lI115|H1072010E8 -1072010E8:lI104|H107204290 -107204290:lI95|H1072074C0 -1072074C0:lI97|H10720A738 -10720A738:lI99|H10720D928 -10720D928:lI99|H107210AB8 -107210AB8:lI101|H107213D18 -107213D18:lI112|H1072170D0 -1072170D0:lI116|H10721A600 -10721A600:lI111|H10721DBA0 -10721DBA0:lI114|H1072210C0 -1072210C0:lI95|H1072242C8 -1072242C8:lI115|H1072271E0 -1072271E0:lI117|H107229D18 -107229D18:lI112|H10722C510 -10722C510:lI46|H10722EA58 -10722EA58:lI98|H107230CC0 -107230CC0:lI101|H107232CB8 -107232CB8:lI97|H107234990 -107234990:lI109|N -1071F84A0:lH1071FB100|N -1071FB100:lI115|H1071FE040 -1071FE040:lI115|H1072010F8 -1072010F8:lI104|H1072042A0 -1072042A0:lI95|H1072074D0 -1072074D0:lI108|H10720A748 -10720A748:lI105|H10720D938 -10720D938:lI98|H107210AC8 -107210AC8:lI46|H107213D28 -107213D28:lI98|H1072170E0 -1072170E0:lI101|H10721A610 -10721A610:lI97|H10721DBB0 -10721DBB0:lI109|N -1071F35C8:lI47|H1071F5BB0 -1071F5BB0:lI111|H1071F8418 -1071F8418:lI112|H1071FB070 -1071FB070:lI116|H1071FDFB0 -1071FDFB0:lI47|H107201068 -107201068:lI104|H107204210 -107204210:lI111|H107207440 -107207440:lI109|H10720A6B8 -10720A6B8:lI101|H10720D8A8 -10720D8A8:lI98|H107210A48 -107210A48:lI114|H107213CA8 -107213CA8:lI101|H107217060 -107217060:lI119|H10721A590 -10721A590:lI47|H10721DB30 -10721DB30:lI67|H107221050 -107221050:lI101|H107224258 -107224258:lI108|H107227180 -107227180:lI108|H107229CB8 -107229CB8:lI97|H10722C4C0 -10722C4C0:lI114|H10722EA08 -10722EA08:lI47|H107230C70 -107230C70:lI101|H107232C68 -107232C68:lI114|H107234940 -107234940:lI108|H107236378 -107236378:lI97|H107237B40 -107237B40:lI110|H107239158 -107239158:lI103|H10723A5F0 -10723A5F0:lI47|H10723B8B0 -10723B8B0:lI50|H10723C900 -10723C900:lI54|H10723D770 -10723D770:lI46|H10723E4D0 -10723E4D0:lI48|H10723F0E0 -10723F0E0:lI46|H10723FBA0 -10723FBA0:lI50|H1072404F0 -1072404F0:lI47|H107240D70 -107240D70:lI108|H107241500 -107241500:lI105|H107241C30 -107241C30:lI98|H107242300 -107242300:lI47|H107242970 -107242970:lI101|H107242F70 -107242F70:lI114|H1072434E0 -1072434E0:lI108|H107243A20 -107243A20:lI97|H107243F10 -107243F10:lI110|H107244400 -107244400:lI103|H1072448B0 -1072448B0:lI47|H107244D20 -107244D20:lI108|H107245180 -107245180:lI105|H1072455D0 -1072455D0:lI98|H1072459D0 -1072459D0:lI47|H107245D90 -107245D90:lI115|H107246120 -107246120:lI115|H1072464B0 -1072464B0:lI104|H107246840 -107246840:lI45|H107246BD0 -107246BD0:lI53|H107246F00 -107246F00:lI46|H107247220 -107247220:lI48|H107247530 -107247530:lI46|H107247830 -107247830:lI49|H107247B30 -107247B30:lI47|H280052C20 -1071F15D8:lH1071F3668|H1071F3680 -1071F3668:t2:H1071F5D88,H1071F5D98 -1071F5D98:Mh5B:10:H1071F86D8,H1071F8700,H1071F8720,H1071F8740,H1071F8778,H1071F8788,H1071F87B8,H1071F87D8,H1071F87F8,H1071F8840,H1071F8878,H1071F8898,H1071F88E0,H1071F8920,H1071F8950,H1071F8988 -1071F86D8:Mn4:H1071FB340,H1071FB350,H1071FB370,H1071FB380 -1071FB340:lH1071FE280|N -1071FE280:lI115|H107201338 -107201338:lI110|H1072044E0 -1072044E0:lI109|H107207710 -107207710:lI112|H10720A988 -10720A988:lI95|H10720DB78 -10720DB78:lI118|H107210D08 -107210D08:lI105|H107213F68 -107213F68:lI101|H107217300 -107217300:lI119|H10721A830 -10721A830:lI95|H10721DDB0 -10721DDB0:lI98|H1072212B0 -1072212B0:lI97|H107224458 -107224458:lI115|H107227330 -107227330:lI101|H107229E68 -107229E68:lI100|H10722C640 -10722C640:lI95|H10722EB78 -10722EB78:lI97|H107230DD0 -107230DD0:lI99|H107232D98 -107232D98:lI109|H107234A60 -107234A60:lI95|H107236478 -107236478:lI109|H107237C30 -107237C30:lI105|H1072391E8 -1072391E8:lI98|H10723A680 -10723A680:lI46|H10723B940 -10723B940:lI98|H10723C970 -10723C970:lI101|H10723D7E0 -10723D7E0:lI97|H10723E520 -10723E520:lI109|N -1071FB380:lH1071FE2D0|N -1071FE2D0:lI115|H107201388 -107201388:lI110|H107204530 -107204530:lI109|H107207760 -107207760:lI112|H10720A9D8 -10720A9D8:lI97|H10720DBC8 -10720DBC8:lI95|H107210D58 -107210D58:lI97|H107213FB8 -107213FB8:lI103|H107217350 -107217350:lI101|H10721A880 -10721A880:lI110|H10721DE00 -10721DE00:lI116|H107221300 -107221300:lI95|H1072244A8 -1072244A8:lI115|H107227380 -107227380:lI117|H107229EB8 -107229EB8:lI112|H10722C670 -10722C670:lI46|H10722EBA8 -10722EBA8:lI98|H107230E00 -107230E00:lI101|H107232DC8 -107232DC8:lI97|H107234A90 -107234A90:lI109|N -1071FB370:lH1071FE2C0|N -1071FE2C0:lI115|H107201378 -107201378:lI110|H107204520 -107204520:lI109|H107207750 -107207750:lI112|H10720A9C8 -10720A9C8:lI97|H10720DBB8 -10720DBB8:lI95|H107210D48 -107210D48:lI115|H107213FA8 -107213FA8:lI118|H107217340 -107217340:lI98|H10721A870 -10721A870:lI108|H10721DDF0 -10721DDF0:lI46|H1072212F0 -1072212F0:lI98|H107224498 -107224498:lI101|H107227370 -107227370:lI97|H107229EA8 -107229EA8:lI109|N -1071FB350:Mn3:H1071FE290,H1071FE2A0,H1071FE2B0 -1071FE290:lH107201348|N -107201348:lI115|H1072044F0 -1072044F0:lI110|H107207720 -107207720:lI109|H10720A998 -10720A998:lI112|H10720DB88 -10720DB88:lI95|H107210D18 -107210D18:lI102|H107213F78 -107213F78:lI114|H107217310 -107217310:lI97|H10721A840 -10721A840:lI109|H10721DDC0 -10721DDC0:lI101|H1072212C0 -1072212C0:lI119|H107224468 -107224468:lI111|H107227340 -107227340:lI114|H107229E78 -107229E78:lI107|H10722C650 -10722C650:lI95|H10722EB88 -10722EB88:lI109|H107230DE0 -107230DE0:lI105|H107232DA8 -107232DA8:lI98|H107234A70 -107234A70:lI46|H107236488 -107236488:lI98|H107237C40 -107237C40:lI101|H1072391F8 -1072391F8:lI97|H10723A690 -10723A690:lI109|N -1071FE2B0:lH107201368|N -107201368:lI115|H107204510 -107204510:lI110|H107207740 -107207740:lI109|H10720A9B8 -10720A9B8:lI112|H10720DBA8 -10720DBA8:lI97|H107210D38 -107210D38:lI95|H107213F98 -107213F98:lI97|H107217330 -107217330:lI99|H10721A860 -10721A860:lI109|H10721DDE0 -10721DDE0:lI46|H1072212E0 -1072212E0:lI98|H107224488 -107224488:lI101|H107227360 -107227360:lI97|H107229E98 -107229E98:lI109|N -1071FE2A0:lH107201358|N -107201358:lI115|H107204500 -107204500:lI110|H107207730 -107207730:lI109|H10720A9A8 -10720A9A8:lI112|H10720DB98 -10720DB98:lI109|H107210D28 -107210D28:lI95|H107213F88 -107213F88:lI117|H107217320 -107217320:lI115|H10721A850 -10721A850:lI101|H10721DDD0 -10721DDD0:lI114|H1072212D0 -1072212D0:lI95|H107224478 -107224478:lI100|H107227350 -107227350:lI101|H107229E88 -107229E88:lI102|H10722C660 -10722C660:lI97|H10722EB98 -10722EB98:lI117|H107230DF0 -107230DF0:lI108|H107232DB8 -107232DB8:lI116|H107234A80 -107234A80:lI46|H107236498 -107236498:lI98|H107237C50 -107237C50:lI101|H107239208 -107239208:lI97|H10723A6A0 -10723A6A0:lI109|N -1071F8988:Mn5:H1071FB820,H1071FB830,H1071FB840,H1071FB850,H1071FB860 -1071FB820:lH1071FE7D0|N -1071FE7D0:lI115|H107201888 -107201888:lI110|H107204A30 -107204A30:lI109|H107207C60 -107207C60:lI112|H10720AED8 -10720AED8:lI97|H10720E0C8 -10720E0C8:lI95|H107211258 -107211258:lI116|H1072144B8 -1072144B8:lI97|H107217850 -107217850:lI114|H10721AD60 -10721AD60:lI103|H10721E2C0 -10721E2C0:lI101|H1072217A0 -1072217A0:lI116|H107224948 -107224948:lI95|H1072277E0 -1072277E0:lI99|H10722A268 -10722A268:lI97|H10722C9C0 -10722C9C0:lI99|H10722EED8 -10722EED8:lI104|H107231100 -107231100:lI101|H107233058 -107233058:lI46|H107234CC0 -107234CC0:lI98|H107236688 -107236688:lI101|H107237DF0 -107237DF0:lI97|H107239388 -107239388:lI109|N -1071FB860:lH1071FE818|N -1071FE818:lI115|H1072018D8 -1072018D8:lI110|H107204A80 -107204A80:lI109|H107207CB0 -107207CB0:lI112|H10720AF28 -10720AF28:lI97|H10720E118 -10720E118:lI95|H1072112A8 -1072112A8:lI109|H107214508 -107214508:lI105|H1072178A0 -1072178A0:lI98|H10721ADB0 -10721ADB0:lI95|H10721E310 -10721E310:lI100|H1072217F0 -1072217F0:lI97|H107224998 -107224998:lI116|H107227830 -107227830:lI97|H10722A2B8 -10722A2B8:lI95|H10722CA10 -10722CA10:lI116|H10722EF28 -10722EF28:lI116|H107231140 -107231140:lI116|H107233078 -107233078:lI110|H107234CE0 -107234CE0:lI46|H1072366A8 -1072366A8:lI98|H107237E10 -107237E10:lI101|H1072393A8 -1072393A8:lI97|H10723A800 -10723A800:lI109|N -1071FB850:Mn1:H1071FE800 -1071FE800:Mn2:H1072018B8,H1072018C8 -1072018B8:lH107204A60|N -107204A60:lI115|H107207C90 -107207C90:lI110|H10720AF08 -10720AF08:lI109|H10720E0F8 -10720E0F8:lI112|H107211288 -107211288:lI95|H1072144E8 -1072144E8:lI105|H107217880 -107217880:lI110|H10721AD90 -10721AD90:lI100|H10721E2F0 -10721E2F0:lI101|H1072217D0 -1072217D0:lI120|H107224978 -107224978:lI46|H107227810 -107227810:lI98|H10722A298 -10722A298:lI101|H10722C9F0 -10722C9F0:lI97|H10722EF08 -10722EF08:lI109|N -1072018C8:lH107204A70|N -107204A70:lI115|H107207CA0 -107207CA0:lI110|H10720AF18 -10720AF18:lI109|H10720E108 -10720E108:lI112|H107211298 -107211298:lI97|H1072144F8 -1072144F8:lI95|H107217890 -107217890:lI97|H10721ADA0 -10721ADA0:lI103|H10721E300 -10721E300:lI101|H1072217E0 -1072217E0:lI110|H107224988 -107224988:lI116|H107227820 -107227820:lI46|H10722A2A8 -10722A2A8:lI98|H10722CA00 -10722CA00:lI101|H10722EF18 -10722EF18:lI97|H107231130 -107231130:lI109|N -1071FB840:lH1071FE7F0|N -1071FE7F0:lI115|H1072018A8 -1072018A8:lI110|H107204A50 -107204A50:lI109|H107207C80 -107207C80:lI112|H10720AEF8 -10720AEF8:lI97|H10720E0E8 -10720E0E8:lI95|H107211278 -107211278:lI103|H1072144D8 -1072144D8:lI101|H107217870 -107217870:lI116|H10721AD80 -10721AD80:lI95|H10721E2E0 -10721E2E0:lI108|H1072217C0 -1072217C0:lI105|H107224968 -107224968:lI98|H107227800 -107227800:lI46|H10722A288 -10722A288:lI98|H10722C9E0 -10722C9E0:lI101|H10722EEF8 -10722EEF8:lI97|H107231120 -107231120:lI109|N -1071FB830:lH1071FE7E0|N -1071FE7E0:lI115|H107201898 -107201898:lI110|H107204A40 -107204A40:lI109|H107207C70 -107207C70:lI112|H10720AEE8 -10720AEE8:lI97|H10720E0D8 -10720E0D8:lI95|H107211268 -107211268:lI109|H1072144C8 -1072144C8:lI105|H107217860 -107217860:lI98|H10721AD70 -10721AD70:lI95|H10721E2D0 -10721E2D0:lI115|H1072217B0 -1072217B0:lI116|H107224958 -107224958:lI111|H1072277F0 -1072277F0:lI114|H10722A278 -10722A278:lI97|H10722C9D0 -10722C9D0:lI103|H10722EEE8 -10722EEE8:lI101|H107231110 -107231110:lI95|H107233068 -107233068:lI109|H107234CD0 -107234CD0:lI110|H107236698 -107236698:lI101|H107237E00 -107237E00:lI115|H107239398 -107239398:lI105|H10723A7F0 -10723A7F0:lI97|H10723BA30 -10723BA30:lI46|H10723CA60 -10723CA60:lI98|H10723D8C0 -10723D8C0:lI101|H10723E5C0 -10723E5C0:lI97|H10723F1A0 -10723F1A0:lI109|N -1071F8950:Mn6:H1071FB7B8,H1071FB7C8,H1071FB7D8,H1071FB7E8,H1071FB7F8,H1071FB808 -1071FB7B8:lH1071FE760|N -1071FE760:lI115|H107201818 -107201818:lI110|H1072049C0 -1072049C0:lI109|H107207BF0 -107207BF0:lI112|H10720AE68 -10720AE68:lI97|H10720E058 -10720E058:lI95|H1072111E8 -1072111E8:lI108|H107214448 -107214448:lI111|H1072177E0 -1072177E0:lI99|H10721AD00 -10721AD00:lI97|H10721E270 -10721E270:lI108|H107221750 -107221750:lI95|H1072248F8 -1072248F8:lI100|H107227790 -107227790:lI98|H10722A218 -10722A218:lI46|H10722C970 -10722C970:lI98|H10722EE88 -10722EE88:lI101|H1072310B0 -1072310B0:lI97|H107233008 -107233008:lI109|N -1071FB808:Mn2:H1071FE7B0,H1071FE7C0 -1071FE7B0:lH107201868|N -107201868:lI115|H107204A10 -107204A10:lI110|H107207C40 -107207C40:lI109|H10720AEB8 -10720AEB8:lI112|H10720E0A8 -10720E0A8:lI46|H107211238 -107211238:lI97|H107214498 -107214498:lI112|H107217830 -107217830:lI112|N -1071FE7C0:lH107201878|N -107201878:lI115|H107204A20 -107204A20:lI110|H107207C50 -107207C50:lI109|H10720AEC8 -10720AEC8:lI112|H10720E0B8 -10720E0B8:lI97|H107211248 -107211248:lI95|H1072144A8 -1072144A8:lI109|H107217840 -107217840:lI105|H10721AD50 -10721AD50:lI98|H10721E2B0 -10721E2B0:lI95|H107221790 -107221790:lI115|H107224938 -107224938:lI116|H1072277D0 -1072277D0:lI111|H10722A258 -10722A258:lI114|H10722C9B0 -10722C9B0:lI97|H10722EEC8 -10722EEC8:lI103|H1072310F0 -1072310F0:lI101|H107233048 -107233048:lI95|H107234CB0 -107234CB0:lI101|H107236678 -107236678:lI116|H107237DE0 -107237DE0:lI115|H107239378 -107239378:lI46|H10723A7E0 -10723A7E0:lI98|H10723BA20 -10723BA20:lI101|H10723CA50 -10723CA50:lI97|H10723D8B0 -10723D8B0:lI109|N -1071FB7F8:lH1071FE7A0|N -1071FE7A0:lI115|H107201858 -107201858:lI110|H107204A00 -107204A00:lI109|H107207C30 -107207C30:lI112|H10720AEA8 -10720AEA8:lI97|H10720E098 -10720E098:lI46|H107211228 -107211228:lI98|H107214488 -107214488:lI101|H107217820 -107217820:lI97|H10721AD40 -10721AD40:lI109|N -1071FB7E8:lH1071FE790|N -1071FE790:lI115|H107201848 -107201848:lI110|H1072049F0 -1072049F0:lI109|H107207C20 -107207C20:lI112|H10720AE98 -10720AE98:lI109|H10720E088 -10720E088:lI95|H107211218 -107211218:lI115|H107214478 -107214478:lI117|H107217810 -107217810:lI112|H10721AD30 -10721AD30:lI101|H10721E2A0 -10721E2A0:lI114|H107221780 -107221780:lI118|H107224928 -107224928:lI105|H1072277C0 -1072277C0:lI115|H10722A248 -10722A248:lI111|H10722C9A0 -10722C9A0:lI114|H10722EEB8 -10722EEB8:lI46|H1072310E0 -1072310E0:lI98|H107233038 -107233038:lI101|H107234CA0 -107234CA0:lI97|H107236668 -107236668:lI109|N -1071FB7D8:lH1071FE780|N -1071FE780:lI115|H107201838 -107201838:lI110|H1072049E0 -1072049E0:lI109|H107207C10 -107207C10:lI112|H10720AE88 -10720AE88:lI97|H10720E078 -10720E078:lI95|H107211208 -107211208:lI103|H107214468 -107214468:lI101|H107217800 -107217800:lI116|H10721AD20 -10721AD20:lI95|H10721E290 -10721E290:lI109|H107221770 -107221770:lI101|H107224918 -107224918:lI99|H1072277B0 -1072277B0:lI104|H10722A238 -10722A238:lI97|H10722C990 -10722C990:lI110|H10722EEA8 -10722EEA8:lI105|H1072310D0 -1072310D0:lI115|H107233028 -107233028:lI109|H107234C90 -107234C90:lI46|H107236658 -107236658:lI98|H107237DD0 -107237DD0:lI101|H107239368 -107239368:lI97|H10723A7D0 -10723A7D0:lI109|N -1071FB7C8:lH1071FE770|N -1071FE770:lI115|H107201828 -107201828:lI110|H1072049D0 -1072049D0:lI109|H107207C00 -107207C00:lI112|H10720AE78 -10720AE78:lI97|H10720E068 -10720E068:lI95|H1072111F8 -1072111F8:lI110|H107214458 -107214458:lI101|H1072177F0 -1072177F0:lI116|H10721AD10 -10721AD10:lI95|H10721E280 -10721E280:lI105|H107221760 -107221760:lI102|H107224908 -107224908:lI95|H1072277A0 -1072277A0:lI102|H10722A228 -10722A228:lI105|H10722C980 -10722C980:lI108|H10722EE98 -10722EE98:lI116|H1072310C0 -1072310C0:lI101|H107233018 -107233018:lI114|H107234C80 -107234C80:lI46|H107236648 -107236648:lI98|H107237DC0 -107237DC0:lI101|H107239358 -107239358:lI97|H10723A7C0 -10723A7C0:lI109|N -1071F8920:Mn5:H1071FB760,H1071FB778,H1071FB788,H1071FB798,H1071FB7A8 -1071FB760:Mn2:H1071FE700,H1071FE710 -1071FE700:lH1072017B8|N -1072017B8:lI115|H107204960 -107204960:lI110|H107207B90 -107207B90:lI109|H10720AE08 -10720AE08:lI112|H10720DFF8 -10720DFF8:lI97|H107211188 -107211188:lI95|H1072143E8 -1072143E8:lI101|H107217780 -107217780:lI114|H10721ACA0 -10721ACA0:lI114|H10721E210 -10721E210:lI111|H1072216F0 -1072216F0:lI114|H107224898 -107224898:lI46|H107227740 -107227740:lI98|H10722A1C8 -10722A1C8:lI101|H10722C920 -10722C920:lI97|H10722EE38 -10722EE38:lI109|N -1071FE710:lH1072017C8|N -1072017C8:lI115|H107204970 -107204970:lI110|H107207BA0 -107207BA0:lI109|H10720AE18 -10720AE18:lI112|H10720E008 -10720E008:lI109|H107211198 -107211198:lI95|H1072143F8 -1072143F8:lI110|H107217790 -107217790:lI101|H10721ACB0 -10721ACB0:lI116|H10721E220 -10721E220:lI95|H107221700 -107221700:lI105|H1072248A8 -1072248A8:lI102|H107227750 -107227750:lI46|H10722A1D8 -10722A1D8:lI98|H10722C930 -10722C930:lI101|H10722EE48 -10722EE48:lI97|H107231080 -107231080:lI109|N -1071FB7A8:lH1071FE750|N -1071FE750:lI115|H107201808 -107201808:lI110|H1072049B0 -1072049B0:lI109|H107207BE0 -107207BE0:lI112|H10720AE58 -10720AE58:lI109|H10720E048 -10720E048:lI95|H1072111D8 -1072111D8:lI109|H107214438 -107214438:lI105|H1072177D0 -1072177D0:lI115|H10721ACF0 -10721ACF0:lI99|H10721E260 -10721E260:lI95|H107221740 -107221740:lI115|H1072248E8 -1072248E8:lI117|H107227780 -107227780:lI112|H10722A208 -10722A208:lI46|H10722C960 -10722C960:lI98|H10722EE78 -10722EE78:lI101|H1072310A0 -1072310A0:lI97|H107232FF8 -107232FF8:lI109|N -1071FB798:lH1071FE740|N -1071FE740:lI115|H1072017F8 -1072017F8:lI110|H1072049A0 -1072049A0:lI109|H107207BD0 -107207BD0:lI112|H10720AE48 -10720AE48:lI95|H10720E038 -10720E038:lI117|H1072111C8 -1072111C8:lI115|H107214428 -107214428:lI109|H1072177C0 -1072177C0:lI46|H10721ACE0 -10721ACE0:lI98|H10721E250 -10721E250:lI101|H107221730 -107221730:lI97|H1072248D8 -1072248D8:lI109|N -1071FB788:lH1071FE730|N -1071FE730:lI115|H1072017E8 -1072017E8:lI110|H107204990 -107204990:lI109|H107207BC0 -107207BC0:lI112|H10720AE38 -10720AE38:lI109|H10720E028 -10720E028:lI95|H1072111B8 -1072111B8:lI117|H107214418 -107214418:lI115|H1072177B0 -1072177B0:lI101|H10721ACD0 -10721ACD0:lI114|H10721E240 -10721E240:lI95|H107221720 -107221720:lI111|H1072248C8 -1072248C8:lI108|H107227770 -107227770:lI100|H10722A1F8 -10722A1F8:lI46|H10722C950 -10722C950:lI98|H10722EE68 -10722EE68:lI101|H107231090 -107231090:lI97|H107232FE8 -107232FE8:lI109|N -1071FB778:lH1071FE720|N -1071FE720:lI115|H1072017D8 -1072017D8:lI110|H107204980 -107204980:lI109|H107207BB0 -107207BB0:lI112|H10720AE28 -10720AE28:lI95|H10720E018 -10720E018:lI103|H1072111A8 -1072111A8:lI101|H107214408 -107214408:lI110|H1072177A0 -1072177A0:lI101|H10721ACC0 -10721ACC0:lI114|H10721E230 -10721E230:lI105|H107221710 -107221710:lI99|H1072248B8 -1072248B8:lI46|H107227760 -107227760:lI98|H10722A1E8 -10722A1E8:lI101|H10722C940 -10722C940:lI97|H10722EE58 -10722EE58:lI109|N -1071F88E0:Mn7:H1071FB6E8,H1071FB6F8,H1071FB708,H1071FB718,H1071FB728,H1071FB740,H1071FB750 -1071FB6E8:lH1071FE680|N -1071FE680:lI115|H107201738 -107201738:lI110|H1072048E0 -1072048E0:lI109|H107207B10 -107207B10:lI112|H10720AD88 -10720AD88:lI99|H10720DF78 -10720DF78:lI95|H107211108 -107211108:lI109|H107214368 -107214368:lI105|H107217700 -107217700:lI98|H10721AC30 -10721AC30:lI95|H10721E1A0 -10721E1A0:lI116|H107221680 -107221680:lI111|H107224828 -107224828:lI95|H1072276D0 -1072276D0:lI104|H10722A158 -10722A158:lI114|H10722C8C0 -10722C8C0:lI108|H10722EDD8 -10722EDD8:lI46|H107231020 -107231020:lI98|H107232F88 -107232F88:lI101|H107234C30 -107234C30:lI97|H1072365F8 -1072365F8:lI109|N -1071FB750:lH1071FE6F0|N -1071FE6F0:lI115|H1072017A8 -1072017A8:lI110|H107204950 -107204950:lI109|H107207B80 -107207B80:lI112|H10720ADF8 -10720ADF8:lI97|H10720DFE8 -10720DFE8:lI95|H107211178 -107211178:lI109|H1072143D8 -1072143D8:lI105|H107217770 -107217770:lI115|H10721AC90 -10721AC90:lI99|H10721E200 -10721E200:lI95|H1072216E0 -1072216E0:lI115|H107224888 -107224888:lI117|H107227730 -107227730:lI112|H10722A1B8 -10722A1B8:lI46|H10722C910 -10722C910:lI98|H10722EE28 -10722EE28:lI101|H107231070 -107231070:lI97|H107232FD8 -107232FD8:lI109|N -1071FB740:lH1071FE6E0|N -1071FE6E0:lI115|H107201798 -107201798:lI110|H107204940 -107204940:lI109|H107207B70 -107207B70:lI112|H10720ADE8 -10720ADE8:lI97|H10720DFD8 -10720DFD8:lI95|H107211168 -107211168:lI99|H1072143C8 -1072143C8:lI111|H107217760 -107217760:lI110|H10721AC80 -10721AC80:lI102|H10721E1F0 -10721E1F0:lI46|H1072216D0 -1072216D0:lI98|H107224878 -107224878:lI101|H107227720 -107227720:lI97|H10722A1A8 -10722A1A8:lI109|N -1071FB728:Mn2:H1071FE6C0,H1071FE6D0 -1071FE6C0:lH107201778|N -107201778:lI115|H107204920 -107204920:lI110|H107207B50 -107207B50:lI109|H10720ADC8 -10720ADC8:lI112|H10720DFB8 -10720DFB8:lI95|H107211148 -107211148:lI110|H1072143A8 -1072143A8:lI111|H107217740 -107217740:lI116|H10721AC60 -10721AC60:lI101|H10721E1D0 -10721E1D0:lI95|H1072216B0 -1072216B0:lI115|H107224858 -107224858:lI116|H107227700 -107227700:lI111|H10722A188 -10722A188:lI114|H10722C8F0 -10722C8F0:lI101|H10722EE08 -10722EE08:lI46|H107231050 -107231050:lI98|H107232FB8 -107232FB8:lI101|H107234C60 -107234C60:lI97|H107236628 -107236628:lI109|N -1071FE6D0:lH107201788|N -107201788:lI115|H107204930 -107204930:lI110|H107207B60 -107207B60:lI109|H10720ADD8 -10720ADD8:lI112|H10720DFC8 -10720DFC8:lI97|H107211158 -107211158:lI95|H1072143B8 -1072143B8:lI100|H107217750 -107217750:lI105|H10721AC70 -10721AC70:lI115|H10721E1E0 -10721E1E0:lI99|H1072216C0 -1072216C0:lI111|H107224868 -107224868:lI118|H107227710 -107227710:lI101|H10722A198 -10722A198:lI114|H10722C900 -10722C900:lI121|H10722EE18 -10722EE18:lI95|H107231060 -107231060:lI104|H107232FC8 -107232FC8:lI97|H107234C70 -107234C70:lI110|H107236638 -107236638:lI100|H107237DB0 -107237DB0:lI108|H107239348 -107239348:lI101|H10723A7B0 -10723A7B0:lI114|H10723BA10 -10723BA10:lI46|H10723CA40 -10723CA40:lI98|H10723D8A0 -10723D8A0:lI101|H10723E5B0 -10723E5B0:lI97|H10723F190 -10723F190:lI109|N -1071FB718:lH1071FE6B0|N -1071FE6B0:lI115|H107201768 -107201768:lI110|H107204910 -107204910:lI109|H107207B40 -107207B40:lI112|H10720ADB8 -10720ADB8:lI109|H10720DFA8 -10720DFA8:lI95|H107211138 -107211138:lI115|H107214398 -107214398:lI101|H107217730 -107217730:lI114|H10721AC50 -10721AC50:lI118|H10721E1C0 -10721E1C0:lI101|H1072216A0 -1072216A0:lI114|H107224848 -107224848:lI95|H1072276F0 -1072276F0:lI115|H10722A178 -10722A178:lI117|H10722C8E0 -10722C8E0:lI112|H10722EDF8 -10722EDF8:lI46|H107231040 -107231040:lI98|H107232FA8 -107232FA8:lI101|H107234C50 -107234C50:lI97|H107236618 -107236618:lI109|N -1071FB708:lH1071FE6A0|N -1071FE6A0:lI115|H107201758 -107201758:lI110|H107204900 -107204900:lI109|H107207B30 -107207B30:lI112|H10720ADA8 -10720ADA8:lI46|H10720DF98 -10720DF98:lI98|H107211128 -107211128:lI101|H107214388 -107214388:lI97|H107217720 -107217720:lI109|N -1071FB6F8:lH1071FE690|N -1071FE690:lI115|H107201748 -107201748:lI110|H1072048F0 -1072048F0:lI109|H107207B20 -107207B20:lI112|H10720AD98 -10720AD98:lI97|H10720DF88 -10720DF88:lI95|H107211118 -107211118:lI100|H107214378 -107214378:lI105|H107217710 -107217710:lI115|H10721AC40 -10721AC40:lI99|H10721E1B0 -10721E1B0:lI111|H107221690 -107221690:lI118|H107224838 -107224838:lI101|H1072276E0 -1072276E0:lI114|H10722A168 -10722A168:lI121|H10722C8D0 -10722C8D0:lI95|H10722EDE8 -10722EDE8:lI104|H107231030 -107231030:lI97|H107232F98 -107232F98:lI110|H107234C40 -107234C40:lI100|H107236608 -107236608:lI108|H107237DA0 -107237DA0:lI101|H107239338 -107239338:lI114|H10723A7A0 -10723A7A0:lI95|H10723BA00 -10723BA00:lI100|H10723CA30 -10723CA30:lI101|H10723D890 -10723D890:lI102|H10723E5A0 -10723E5A0:lI97|H10723F180 -10723F180:lI117|H10723FC30 -10723FC30:lI108|H107240570 -107240570:lI116|H107240DE0 -107240DE0:lI46|H107241570 -107241570:lI98|H107241C90 -107241C90:lI101|H107242350 -107242350:lI97|H1072429B0 -1072429B0:lI109|N -1071F8898:Mn8:H1071FB650,H1071FB660,H1071FB680,H1071FB690,H1071FB6A0,H1071FB6B0,H1071FB6C0,H1071FB6D0 -1071FB650:lH1071FE5D0|N -1071FE5D0:lI115|H107201688 -107201688:lI110|H107204830 -107204830:lI109|H107207A60 -107207A60:lI112|H10720ACD8 -10720ACD8:lI95|H10720DEC8 -10720DEC8:lI115|H107211058 -107211058:lI104|H1072142B8 -1072142B8:lI97|H107217650 -107217650:lI100|H10721AB80 -10721AB80:lI111|H10721E0F0 -10721E0F0:lI119|H1072215E0 -1072215E0:lI95|H107224788 -107224788:lI116|H107227640 -107227640:lI97|H10722A0E8 -10722A0E8:lI98|H10722C860 -10722C860:lI108|H10722ED88 -10722ED88:lI101|H107230FD0 -107230FD0:lI46|H107232F48 -107232F48:lI98|H107234BF0 -107234BF0:lI101|H1072365B8 -1072365B8:lI97|H107237D60 -107237D60:lI109|N -1071FB6D0:Mn2:H1071FE660,H1071FE670 -1071FE660:lH107201718|N -107201718:lI115|H1072048C0 -1072048C0:lI110|H107207AF0 -107207AF0:lI109|H10720AD68 -10720AD68:lI112|H10720DF58 -10720DF58:lI97|H1072110E8 -1072110E8:lI95|H107214348 -107214348:lI118|H1072176E0 -1072176E0:lI97|H10721AC10 -10721AC10:lI99|H10721E180 -10721E180:lI109|H107221670 -107221670:lI46|H107224818 -107224818:lI98|H1072276C0 -1072276C0:lI101|H10722A148 -10722A148:lI97|H10722C8B0 -10722C8B0:lI109|N -1071FE670:lH107201728|N -107201728:lI115|H1072048D0 -1072048D0:lI110|H107207B00 -107207B00:lI109|H10720AD78 -10720AD78:lI112|H10720DF68 -10720DF68:lI109|H1072110F8 -1072110F8:lI46|H107214358 -107214358:lI98|H1072176F0 -1072176F0:lI101|H10721AC20 -10721AC20:lI97|H10721E190 -10721E190:lI109|N -1071FB6C0:lH1071FE650|N -1071FE650:lI115|H107201708 -107201708:lI110|H1072048B0 -1072048B0:lI109|H107207AE0 -107207AE0:lI112|H10720AD58 -10720AD58:lI95|H10720DF48 -10720DF48:lI112|H1072110D8 -1072110D8:lI100|H107214338 -107214338:lI117|H1072176D0 -1072176D0:lI115|H10721AC00 -10721AC00:lI46|H10721E170 -10721E170:lI98|H107221660 -107221660:lI101|H107224808 -107224808:lI97|H1072276B0 -1072276B0:lI109|N -1071FB6B0:lH1071FE640|N -1071FE640:lI115|H1072016F8 -1072016F8:lI110|H1072048A0 -1072048A0:lI109|H107207AD0 -107207AD0:lI112|H10720AD48 -10720AD48:lI97|H10720DF38 -10720DF38:lI95|H1072110C8 -1072110C8:lI116|H107214328 -107214328:lI114|H1072176C0 -1072176C0:lI97|H10721ABF0 -10721ABF0:lI112|H10721E160 -10721E160:lI46|H107221650 -107221650:lI98|H1072247F8 -1072247F8:lI101|H1072276A0 -1072276A0:lI97|H10722A138 -10722A138:lI109|N -1071FB6A0:lH1071FE630|N -1071FE630:lI115|H1072016E8 -1072016E8:lI110|H107204890 -107204890:lI109|H107207AC0 -107207AC0:lI112|H10720AD38 -10720AD38:lI97|H10720DF28 -10720DF28:lI95|H1072110B8 -1072110B8:lI109|H107214318 -107214318:lI112|H1072176B0 -1072176B0:lI100|H10721ABE0 -10721ABE0:lI46|H10721E150 -10721E150:lI98|H107221640 -107221640:lI101|H1072247E8 -1072247E8:lI97|H107227690 -107227690:lI109|N -1071FB690:lH1071FE620|N -1071FE620:lI115|H1072016D8 -1072016D8:lI110|H107204880 -107204880:lI109|H107207AB0 -107207AB0:lI112|H10720AD28 -10720AD28:lI97|H10720DF18 -10720DF18:lI95|H1072110A8 -1072110A8:lI110|H107214308 -107214308:lI111|H1072176A0 -1072176A0:lI116|H10721ABD0 -10721ABD0:lI105|H10721E140 -10721E140:lI102|H107221630 -107221630:lI105|H1072247D8 -1072247D8:lI99|H107227680 -107227680:lI97|H10722A128 -10722A128:lI116|H10722C8A0 -10722C8A0:lI105|H10722EDC8 -10722EDC8:lI111|H107231010 -107231010:lI110|H107232F78 -107232F78:lI95|H107234C20 -107234C20:lI100|H1072365E8 -1072365E8:lI101|H107237D90 -107237D90:lI108|H107239328 -107239328:lI105|H10723A790 -10723A790:lI118|H10723B9F0 -10723B9F0:lI101|H10723CA20 -10723CA20:lI114|H10723D880 -10723D880:lI121|H10723E590 -10723E590:lI95|H10723F170 -10723F170:lI105|H10723FC20 -10723FC20:lI110|H107240560 -107240560:lI102|H107240DD0 -107240DD0:lI111|H107241560 -107241560:lI95|H107241C80 -107241C80:lI114|H107242340 -107242340:lI101|H1072429A0 -1072429A0:lI99|H107242F90 -107242F90:lI101|H107243500 -107243500:lI105|H107243A40 -107243A40:lI118|H107243F30 -107243F30:lI101|H107244420 -107244420:lI114|H1072448D0 -1072448D0:lI46|H107244D40 -107244D40:lI98|H1072451A0 -1072451A0:lI101|H1072455F0 -1072455F0:lI97|H1072459F0 -1072459F0:lI109|N -1071FB680:lH1071FE610|N -1071FE610:lI115|H1072016C8 -1072016C8:lI110|H107204870 -107204870:lI109|H107207AA0 -107207AA0:lI112|H10720AD18 -10720AD18:lI95|H10720DF08 -10720DF08:lI108|H107211098 -107211098:lI111|H1072142F8 -1072142F8:lI103|H107217690 -107217690:lI46|H10721ABC0 -10721ABC0:lI98|H10721E130 -10721E130:lI101|H107221620 -107221620:lI97|H1072247C8 -1072247C8:lI109|N -1071FB660:Mn3:H1071FE5E0,H1071FE5F0,H1071FE600 -1071FE5E0:lH107201698|N -107201698:lI115|H107204840 -107204840:lI110|H107207A70 -107207A70:lI109|H10720ACE8 -10720ACE8:lI112|H10720DED8 -10720DED8:lI95|H107211068 -107211068:lI99|H1072142C8 -1072142C8:lI111|H107217660 -107217660:lI109|H10721AB90 -10721AB90:lI109|H10721E100 -10721E100:lI117|H1072215F0 -1072215F0:lI110|H107224798 -107224798:lI105|H107227650 -107227650:lI116|H10722A0F8 -10722A0F8:lI121|H10722C870 -10722C870:lI95|H10722ED98 -10722ED98:lI109|H107230FE0 -107230FE0:lI105|H107232F58 -107232F58:lI98|H107234C00 -107234C00:lI46|H1072365C8 -1072365C8:lI98|H107237D70 -107237D70:lI101|H107239308 -107239308:lI97|H10723A770 -10723A770:lI109|N -1071FE600:lH1072016B8|N -1072016B8:lI115|H107204860 -107204860:lI110|H107207A90 -107207A90:lI109|H10720AD08 -10720AD08:lI112|H10720DEF8 -10720DEF8:lI109|H107211088 -107211088:lI95|H1072142E8 -1072142E8:lI115|H107217680 -107217680:lI101|H10721ABB0 -10721ABB0:lI114|H10721E120 -10721E120:lI118|H107221610 -107221610:lI101|H1072247B8 -1072247B8:lI114|H107227670 -107227670:lI46|H10722A118 -10722A118:lI98|H10722C890 -10722C890:lI101|H10722EDB8 -10722EDB8:lI97|H107231000 -107231000:lI109|N -1071FE5F0:lH1072016A8|N -1072016A8:lI115|H107204850 -107204850:lI110|H107207A80 -107207A80:lI109|H10720ACF8 -10720ACF8:lI112|H10720DEE8 -10720DEE8:lI97|H107211078 -107211078:lI95|H1072142D8 -1072142D8:lI110|H107217670 -107217670:lI101|H10721ABA0 -10721ABA0:lI116|H10721E110 -10721E110:lI119|H107221600 -107221600:lI111|H1072247A8 -1072247A8:lI114|H107227660 -107227660:lI107|H10722A108 -10722A108:lI95|H10722C880 -10722C880:lI105|H10722EDA8 -10722EDA8:lI110|H107230FF0 -107230FF0:lI116|H107232F68 -107232F68:lI101|H107234C10 -107234C10:lI114|H1072365D8 -1072365D8:lI102|H107237D80 -107237D80:lI97|H107239318 -107239318:lI99|H10723A780 -10723A780:lI101|H10723B9E0 -10723B9E0:lI46|H10723CA10 -10723CA10:lI98|H10723D870 -10723D870:lI101|H10723E580 -10723E580:lI97|H10723F160 -10723F160:lI109|N -1071F8878:Mn3:H1071FB620,H1071FB630,H1071FB640 -1071FB620:lH1071FE5A0|N -1071FE5A0:lI115|H107201658 -107201658:lI110|H107204800 -107204800:lI109|H107207A30 -107207A30:lI112|H10720ACA8 -10720ACA8:lI95|H10720DE98 -10720DE98:lI116|H107211028 -107211028:lI97|H107214288 -107214288:lI114|H107217620 -107217620:lI103|H10721AB50 -10721AB50:lI101|H10721E0C0 -10721E0C0:lI116|H1072215B0 -1072215B0:lI95|H107224758 -107224758:lI109|H107227610 -107227610:lI105|H10722A0C8 -10722A0C8:lI98|H10722C850 -10722C850:lI46|H10722ED78 -10722ED78:lI98|H107230FC0 -107230FC0:lI101|H107232F38 -107232F38:lI97|H107234BE0 -107234BE0:lI109|N -1071FB640:lH1071FE5C0|N -1071FE5C0:lI115|H107201678 -107201678:lI110|H107204820 -107204820:lI109|H107207A50 -107207A50:lI112|H10720ACC8 -10720ACC8:lI95|H10720DEB8 -10720DEB8:lI109|H107211048 -107211048:lI105|H1072142A8 -1072142A8:lI115|H107217640 -107217640:lI99|H10721AB70 -10721AB70:lI46|H10721E0E0 -10721E0E0:lI98|H1072215D0 -1072215D0:lI101|H107224778 -107224778:lI97|H107227630 -107227630:lI109|N -1071FB630:lH1071FE5B0|N -1071FE5B0:lI115|H107201668 -107201668:lI110|H107204810 -107204810:lI109|H107207A40 -107207A40:lI112|H10720ACB8 -10720ACB8:lI99|H10720DEA8 -10720DEA8:lI95|H107211038 -107211038:lI109|H107214298 -107214298:lI105|H107217630 -107217630:lI115|H10721AB60 -10721AB60:lI99|H10721E0D0 -10721E0D0:lI46|H1072215C0 -1072215C0:lI98|H107224768 -107224768:lI101|H107227620 -107227620:lI97|H10722A0D8 -10722A0D8:lI109|N -1071F8840:Mn6:H1071FB5B8,H1071FB5C8,H1071FB5D8,H1071FB5E8,H1071FB5F8,H1071FB610 -1071FB5B8:lH1071FE530|N -1071FE530:lI115|H1072015E8 -1072015E8:lI110|H107204790 -107204790:lI109|H1072079C0 -1072079C0:lI112|H10720AC38 -10720AC38:lI97|H10720DE28 -10720DE28:lI95|H107210FB8 -107210FB8:lI115|H107214218 -107214218:lI101|H1072175B0 -1072175B0:lI116|H10721AAE0 -10721AAE0:lI46|H10721E050 -10721E050:lI98|H107221540 -107221540:lI101|H1072246E8 -1072246E8:lI97|H1072275A0 -1072275A0:lI109|N -1071FB610:lH1071FE590|N -1071FE590:lI115|H107201648 -107201648:lI110|H1072047F0 -1072047F0:lI109|H107207A20 -107207A20:lI112|H10720AC98 -10720AC98:lI109|H10720DE88 -10720DE88:lI95|H107211018 -107211018:lI110|H107214278 -107214278:lI101|H107217610 -107217610:lI116|H10721AB40 -10721AB40:lI119|H10721E0B0 -10721E0B0:lI111|H1072215A0 -1072215A0:lI114|H107224748 -107224748:lI107|H107227600 -107227600:lI95|H10722A0B8 -10722A0B8:lI105|H10722C840 -10722C840:lI110|H10722ED68 -10722ED68:lI116|H107230FB0 -107230FB0:lI101|H107232F28 -107232F28:lI114|H107234BD0 -107234BD0:lI102|H1072365A8 -1072365A8:lI97|H107237D50 -107237D50:lI99|H1072392F8 -1072392F8:lI101|H10723A760 -10723A760:lI95|H10723B9D0 -10723B9D0:lI102|H10723CA00 -10723CA00:lI105|H10723D860 -10723D860:lI108|H10723E570 -10723E570:lI116|H10723F150 -10723F150:lI101|H10723FC10 -10723FC10:lI114|H107240550 -107240550:lI46|H107240DC0 -107240DC0:lI98|H107241550 -107241550:lI101|H107241C70 -107241C70:lI97|H107242330 -107242330:lI109|N -1071FB5F8:Mn2:H1071FE570,H1071FE580 -1071FE570:lH107201628|N -107201628:lI115|H1072047D0 -1072047D0:lI110|H107207A00 -107207A00:lI109|H10720AC78 -10720AC78:lI112|H10720DE68 -10720DE68:lI97|H107210FF8 -107210FF8:lI95|H107214258 -107214258:lI110|H1072175F0 -1072175F0:lI111|H10721AB20 -10721AB20:lI116|H10721E090 -10721E090:lI105|H107221580 -107221580:lI102|H107224728 -107224728:lI105|H1072275E0 -1072275E0:lI99|H10722A098 -10722A098:lI97|H10722C820 -10722C820:lI116|H10722ED48 -10722ED48:lI105|H107230F90 -107230F90:lI111|H107232F08 -107232F08:lI110|H107234BB0 -107234BB0:lI95|H107236588 -107236588:lI102|H107237D30 -107237D30:lI105|H1072392D8 -1072392D8:lI108|H10723A740 -10723A740:lI116|H10723B9B0 -10723B9B0:lI101|H10723C9E0 -10723C9E0:lI114|H10723D850 -10723D850:lI46|H10723E560 -10723E560:lI98|H10723F140 -10723F140:lI101|H10723FC00 -10723FC00:lI97|H107240540 -107240540:lI109|N -1071FE580:lH107201638|N -107201638:lI115|H1072047E0 -1072047E0:lI110|H107207A10 -107207A10:lI109|H10720AC88 -10720AC88:lI112|H10720DE78 -10720DE78:lI97|H107211008 -107211008:lI95|H107214268 -107214268:lI115|H107217600 -107217600:lI121|H10721AB30 -10721AB30:lI109|H10721E0A0 -10721E0A0:lI98|H107221590 -107221590:lI111|H107224738 -107224738:lI108|H1072275F0 -1072275F0:lI105|H10722A0A8 -10722A0A8:lI99|H10722C830 -10722C830:lI95|H10722ED58 -10722ED58:lI115|H107230FA0 -107230FA0:lI116|H107232F18 -107232F18:lI111|H107234BC0 -107234BC0:lI114|H107236598 -107236598:lI101|H107237D40 -107237D40:lI46|H1072392E8 -1072392E8:lI98|H10723A750 -10723A750:lI101|H10723B9C0 -10723B9C0:lI97|H10723C9F0 -10723C9F0:lI109|N -1071FB5E8:lH1071FE560|N -1071FE560:lI115|H107201618 -107201618:lI110|H1072047C0 -1072047C0:lI109|H1072079F0 -1072079F0:lI112|H10720AC68 -10720AC68:lI109|H10720DE58 -10720DE58:lI95|H107210FE8 -107210FE8:lI110|H107214248 -107214248:lI101|H1072175E0 -1072175E0:lI116|H10721AB10 -10721AB10:lI119|H10721E080 -10721E080:lI111|H107221570 -107221570:lI114|H107224718 -107224718:lI107|H1072275D0 -1072275D0:lI95|H10722A088 -10722A088:lI105|H10722C810 -10722C810:lI110|H10722ED38 -10722ED38:lI116|H107230F80 -107230F80:lI101|H107232EF8 -107232EF8:lI114|H107234BA0 -107234BA0:lI102|H107236578 -107236578:lI97|H107237D20 -107237D20:lI99|H1072392C8 -1072392C8:lI101|H10723A730 -10723A730:lI46|H10723B9A0 -10723B9A0:lI98|H10723C9D0 -10723C9D0:lI101|H10723D840 -10723D840:lI97|H10723E550 -10723E550:lI109|N -1071FB5D8:lH1071FE550|N -1071FE550:lI115|H107201608 -107201608:lI110|H1072047B0 -1072047B0:lI109|H1072079E0 -1072079E0:lI112|H10720AC58 -10720AC58:lI109|H10720DE48 -10720DE48:lI95|H107210FD8 -107210FD8:lI117|H107214238 -107214238:lI115|H1072175D0 -1072175D0:lI101|H10721AB00 -10721AB00:lI114|H10721E070 -10721E070:lI46|H107221560 -107221560:lI98|H107224708 -107224708:lI101|H1072275C0 -1072275C0:lI97|H10722A078 -10722A078:lI109|N -1071FB5C8:lH1071FE540|N -1071FE540:lI115|H1072015F8 -1072015F8:lI110|H1072047A0 -1072047A0:lI109|H1072079D0 -1072079D0:lI112|H10720AC48 -10720AC48:lI95|H10720DE38 -10720DE38:lI99|H107210FC8 -107210FC8:lI111|H107214228 -107214228:lI110|H1072175C0 -1072175C0:lI102|H10721AAF0 -10721AAF0:lI105|H10721E060 -10721E060:lI103|H107221550 -107221550:lI46|H1072246F8 -1072246F8:lI98|H1072275B0 -1072275B0:lI101|H10722A068 -10722A068:lI97|H10722C800 -10722C800:lI109|N -1071F87F8:Mn8:H1071FB538,H1071FB548,H1071FB558,H1071FB568,H1071FB578,H1071FB588,H1071FB598,H1071FB5A8 -1071FB538:lH1071FE4B0|N -1071FE4B0:lI115|H107201568 -107201568:lI110|H107204710 -107204710:lI109|H107207940 -107207940:lI112|H10720ABB8 -10720ABB8:lI97|H10720DDA8 -10720DDA8:lI95|H107210F38 -107210F38:lI117|H107214198 -107214198:lI115|H107217530 -107217530:lI109|H10721AA60 -10721AA60:lI46|H10721DFD0 -10721DFD0:lI98|H1072214C0 -1072214C0:lI101|H107224668 -107224668:lI97|H107227520 -107227520:lI109|N -1071FB5A8:lH1071FE520|N -1071FE520:lI115|H1072015D8 -1072015D8:lI110|H107204780 -107204780:lI109|H1072079B0 -1072079B0:lI112|H10720AC28 -10720AC28:lI97|H10720DE18 -10720DE18:lI95|H107210FA8 -107210FA8:lI101|H107214208 -107214208:lI114|H1072175A0 -1072175A0:lI114|H10721AAD0 -10721AAD0:lI111|H10721E040 -10721E040:lI114|H107221530 -107221530:lI95|H1072246D8 -1072246D8:lI108|H107227590 -107227590:lI111|H10722A058 -10722A058:lI103|H10722C7F0 -10722C7F0:lI103|H10722ED28 -10722ED28:lI101|H107230F70 -107230F70:lI114|H107232EE8 -107232EE8:lI46|H107234B90 -107234B90:lI98|H107236568 -107236568:lI101|H107237D10 -107237D10:lI97|H1072392B8 -1072392B8:lI109|N -1071FB598:lH1071FE510|N -1071FE510:lI115|H1072015C8 -1072015C8:lI110|H107204770 -107204770:lI109|H1072079A0 -1072079A0:lI112|H10720AC18 -10720AC18:lI97|H10720DE08 -10720DE08:lI95|H107210F98 -107210F98:lI101|H1072141F8 -1072141F8:lI114|H107217590 -107217590:lI114|H10721AAC0 -10721AAC0:lI111|H10721E030 -10721E030:lI114|H107221520 -107221520:lI95|H1072246C8 -1072246C8:lI105|H107227580 -107227580:lI111|H10722A048 -10722A048:lI46|H10722C7E0 -10722C7E0:lI98|H10722ED18 -10722ED18:lI101|H107230F60 -107230F60:lI97|H107232ED8 -107232ED8:lI109|N -1071FB588:lH1071FE500|N -1071FE500:lI115|H1072015B8 -1072015B8:lI110|H107204760 -107204760:lI109|H107207990 -107207990:lI112|H10720AC08 -10720AC08:lI95|H10720DDF8 -10720DDF8:lI99|H107210F88 -107210F88:lI111|H1072141E8 -1072141E8:lI110|H107217580 -107217580:lI102|H10721AAB0 -10721AAB0:lI46|H10721E020 -10721E020:lI98|H107221510 -107221510:lI101|H1072246B8 -1072246B8:lI97|H107227570 -107227570:lI109|N -1071FB578:lH1071FE4F0|N -1071FE4F0:lI115|H1072015A8 -1072015A8:lI110|H107204750 -107204750:lI109|H107207980 -107207980:lI112|H10720ABF8 -10720ABF8:lI97|H10720DDE8 -10720DDE8:lI95|H107210F78 -107210F78:lI109|H1072141D8 -1072141D8:lI105|H107217570 -107217570:lI98|H10721AAA0 -10721AAA0:lI95|H10721E010 -10721E010:lI115|H107221500 -107221500:lI116|H1072246A8 -1072246A8:lI111|H107227560 -107227560:lI114|H10722A038 -10722A038:lI97|H10722C7D0 -10722C7D0:lI103|H10722ED08 -10722ED08:lI101|H107230F50 -107230F50:lI95|H107232EC8 -107232EC8:lI100|H107234B80 -107234B80:lI101|H107236558 -107236558:lI116|H107237D00 -107237D00:lI115|H1072392A8 -1072392A8:lI46|H10723A720 -10723A720:lI98|H10723B990 -10723B990:lI101|H10723C9C0 -10723C9C0:lI97|H10723D830 -10723D830:lI109|N -1071FB568:lH1071FE4E0|N -1071FE4E0:lI115|H107201598 -107201598:lI110|H107204740 -107204740:lI109|H107207970 -107207970:lI112|H10720ABE8 -10720ABE8:lI97|H10720DDD8 -10720DDD8:lI95|H107210F68 -107210F68:lI109|H1072141C8 -1072141C8:lI105|H107217560 -107217560:lI98|H10721AA90 -10721AA90:lI95|H10721E000 -10721E000:lI108|H1072214F0 -1072214F0:lI105|H107224698 -107224698:lI98|H107227550 -107227550:lI46|H10722A028 -10722A028:lI98|H10722C7C0 -10722C7C0:lI101|H10722ECF8 -10722ECF8:lI97|H107230F40 -107230F40:lI109|N -1071FB558:lH1071FE4D0|N -1071FE4D0:lI115|H107201588 -107201588:lI110|H107204730 -107204730:lI109|H107207960 -107207960:lI112|H10720ABD8 -10720ABD8:lI95|H10720DDC8 -10720DDC8:lI109|H107210F58 -107210F58:lI105|H1072141B8 -1072141B8:lI110|H107217550 -107217550:lI105|H10721AA80 -10721AA80:lI95|H10721DFF0 -10721DFF0:lI109|H1072214E0 -1072214E0:lI105|H107224688 -107224688:lI98|H107227540 -107227540:lI46|H10722A018 -10722A018:lI98|H10722C7B0 -10722C7B0:lI101|H10722ECE8 -10722ECE8:lI97|H107230F30 -107230F30:lI109|N -1071FB548:lH1071FE4C0|N -1071FE4C0:lI115|H107201578 -107201578:lI110|H107204720 -107204720:lI109|H107207950 -107207950:lI112|H10720ABC8 -10720ABC8:lI97|H10720DDB8 -10720DDB8:lI95|H107210F48 -107210F48:lI97|H1072141A8 -1072141A8:lI117|H107217540 -107217540:lI116|H10721AA70 -10721AA70:lI104|H10721DFE0 -10721DFE0:lI101|H1072214D0 -1072214D0:lI110|H107224678 -107224678:lI116|H107227530 -107227530:lI105|H10722A008 -10722A008:lI99|H10722C7A0 -10722C7A0:lI97|H10722ECD8 -10722ECD8:lI116|H107230F20 -107230F20:lI105|H107232EB8 -107232EB8:lI111|H107234B70 -107234B70:lI110|H107236548 -107236548:lI95|H107237CF0 -107237CF0:lI115|H107239298 -107239298:lI101|H10723A710 -10723A710:lI114|H10723B980 -10723B980:lI118|H10723C9B0 -10723C9B0:lI105|H10723D820 -10723D820:lI99|H10723E540 -10723E540:lI101|H10723F130 -10723F130:lI46|H10723FBF0 -10723FBF0:lI98|H107240530 -107240530:lI101|H107240DB0 -107240DB0:lI97|H107241540 -107241540:lI109|N -1071F87D8:Mn3:H1071FB500,H1071FB518,H1071FB528 -1071FB500:Mn2:H1071FE470,H1071FE480 -1071FE470:lH107201528|N -107201528:lI115|H1072046D0 -1072046D0:lI110|H107207900 -107207900:lI109|H10720AB78 -10720AB78:lI112|H10720DD68 -10720DD68:lI99|H107210EF8 -107210EF8:lI95|H107214158 -107214158:lI109|H1072174F0 -1072174F0:lI105|H10721AA20 -10721AA20:lI98|H10721DF90 -10721DF90:lI95|H107221480 -107221480:lI103|H107224628 -107224628:lI114|H1072274E0 -1072274E0:lI97|H107229FD8 -107229FD8:lI109|H10722C770 -10722C770:lI46|H10722ECA8 -10722ECA8:lI98|H107230EF0 -107230EF0:lI101|H107232E88 -107232E88:lI97|H107234B50 -107234B50:lI109|N -1071FE480:lH107201538|N -107201538:lI115|H1072046E0 -1072046E0:lI110|H107207910 -107207910:lI109|H10720AB88 -10720AB88:lI112|H10720DD78 -10720DD78:lI97|H107210F08 -107210F08:lI95|H107214168 -107214168:lI110|H107217500 -107217500:lI101|H10721AA30 -10721AA30:lI116|H10721DFA0 -10721DFA0:lI119|H107221490 -107221490:lI111|H107224638 -107224638:lI114|H1072274F0 -1072274F0:lI107|H107229FE8 -107229FE8:lI95|H10722C780 -10722C780:lI105|H10722ECB8 -10722ECB8:lI110|H107230F00 -107230F00:lI116|H107232E98 -107232E98:lI101|H107234B60 -107234B60:lI114|H107236538 -107236538:lI102|H107237CE0 -107237CE0:lI97|H107239288 -107239288:lI99|H10723A700 -10723A700:lI101|H10723B970 -10723B970:lI95|H10723C9A0 -10723C9A0:lI102|H10723D810 -10723D810:lI105|H10723E530 -10723E530:lI108|H10723F120 -10723F120:lI116|H10723FBE0 -10723FBE0:lI101|H107240520 -107240520:lI114|H107240DA0 -107240DA0:lI46|H107241530 -107241530:lI98|H107241C60 -107241C60:lI101|H107242320 -107242320:lI97|H107242990 -107242990:lI109|N -1071FB528:lH1071FE4A0|N -1071FE4A0:lI115|H107201558 -107201558:lI110|H107204700 -107204700:lI109|H107207930 -107207930:lI112|H10720ABA8 -10720ABA8:lI109|H10720DD98 -10720DD98:lI95|H107210F28 -107210F28:lI117|H107214188 -107214188:lI115|H107217520 -107217520:lI109|H10721AA50 -10721AA50:lI46|H10721DFC0 -10721DFC0:lI98|H1072214B0 -1072214B0:lI101|H107224658 -107224658:lI97|H107227510 -107227510:lI109|N -1071FB518:lH1071FE490|N -1071FE490:lI115|H107201548 -107201548:lI110|H1072046F0 -1072046F0:lI109|H107207920 -107207920:lI112|H10720AB98 -10720AB98:lI97|H10720DD88 -10720DD88:lI95|H107210F18 -107210F18:lI109|H107214178 -107214178:lI105|H107217510 -107217510:lI98|H10721AA40 -10721AA40:lI95|H10721DFB0 -10721DFB0:lI100|H1072214A0 -1072214A0:lI97|H107224648 -107224648:lI116|H107227500 -107227500:lI97|H107229FF8 -107229FF8:lI46|H10722C790 -10722C790:lI98|H10722ECC8 -10722ECC8:lI101|H107230F10 -107230F10:lI97|H107232EA8 -107232EA8:lI109|N -1071F87B8:Mn3:H1071FB4D0,H1071FB4E0,H1071FB4F0 -1071FB4D0:lH1071FE440|N -1071FE440:lI115|H1072014F8 -1072014F8:lI110|H1072046A0 -1072046A0:lI109|H1072078D0 -1072078D0:lI112|H10720AB48 -10720AB48:lI97|H10720DD38 -10720DD38:lI95|H107210EC8 -107210EC8:lI109|H107214128 -107214128:lI105|H1072174C0 -1072174C0:lI98|H10721A9F0 -10721A9F0:lI46|H10721DF70 -10721DF70:lI98|H107221460 -107221460:lI101|H107224608 -107224608:lI97|H1072274C0 -1072274C0:lI109|N -1071FB4F0:lH1071FE460|N -1071FE460:lI115|H107201518 -107201518:lI110|H1072046C0 -1072046C0:lI109|H1072078F0 -1072078F0:lI112|H10720AB68 -10720AB68:lI46|H10720DD58 -10720DD58:lI97|H107210EE8 -107210EE8:lI112|H107214148 -107214148:lI112|H1072174E0 -1072174E0:lI117|H10721AA10 -10721AA10:lI112|N -1071FB4E0:lH1071FE450|N -1071FE450:lI115|H107201508 -107201508:lI110|H1072046B0 -1072046B0:lI109|H1072078E0 -1072078E0:lI112|H10720AB58 -10720AB58:lI109|H10720DD48 -10720DD48:lI95|H107210ED8 -107210ED8:lI99|H107214138 -107214138:lI111|H1072174D0 -1072174D0:lI110|H10721AA00 -10721AA00:lI102|H10721DF80 -10721DF80:lI105|H107221470 -107221470:lI103|H107224618 -107224618:lI46|H1072274D0 -1072274D0:lI98|H107229FC8 -107229FC8:lI101|H10722C760 -10722C760:lI97|H10722EC98 -10722EC98:lI109|N -1071F8788:Mn5:H1071FB480,H1071FB490,H1071FB4A0,H1071FB4B0,H1071FB4C0 -1071FB480:lH1071FE3F0|N -1071FE3F0:lI115|H1072014A8 -1072014A8:lI110|H107204650 -107204650:lI109|H107207880 -107207880:lI112|H10720AAF8 -10720AAF8:lI97|H10720DCE8 -10720DCE8:lI95|H107210E78 -107210E78:lI115|H1072140D8 -1072140D8:lI101|H107217470 -107217470:lI116|H10721A9A0 -10721A9A0:lI95|H10721DF20 -10721DF20:lI109|H107221410 -107221410:lI101|H1072245B8 -1072245B8:lI99|H107227470 -107227470:lI104|H107229F98 -107229F98:lI97|H10722C730 -10722C730:lI110|H10722EC68 -10722EC68:lI105|H107230EC0 -107230EC0:lI115|H107232E58 -107232E58:lI109|H107234B20 -107234B20:lI46|H107236508 -107236508:lI98|H107237CB0 -107237CB0:lI101|H107239258 -107239258:lI97|H10723A6D0 -10723A6D0:lI109|N -1071FB4C0:lH1071FE430|N -1071FE430:lI115|H1072014E8 -1072014E8:lI110|H107204690 -107204690:lI109|H1072078C0 -1072078C0:lI112|H10720AB38 -10720AB38:lI95|H10720DD28 -10720DD28:lI103|H107210EB8 -107210EB8:lI101|H107214118 -107214118:lI110|H1072174B0 -1072174B0:lI101|H10721A9E0 -10721A9E0:lI114|H10721DF60 -10721DF60:lI105|H107221450 -107221450:lI99|H1072245F8 -1072245F8:lI95|H1072274B0 -1072274B0:lI109|H107229FB8 -107229FB8:lI110|H10722C750 -10722C750:lI101|H10722EC88 -10722EC88:lI115|H107230EE0 -107230EE0:lI105|H107232E78 -107232E78:lI97|H107234B40 -107234B40:lI46|H107236528 -107236528:lI98|H107237CD0 -107237CD0:lI101|H107239278 -107239278:lI97|H10723A6F0 -10723A6F0:lI109|N -1071FB4B0:lH1071FE420|N -1071FE420:lI115|H1072014D8 -1072014D8:lI110|H107204680 -107204680:lI109|H1072078B0 -1072078B0:lI112|H10720AB28 -10720AB28:lI97|H10720DD18 -10720DD18:lI95|H107210EA8 -107210EA8:lI97|H107214108 -107214108:lI112|H1072174A0 -1072174A0:lI112|H10721A9D0 -10721A9D0:lI46|H10721DF50 -10721DF50:lI98|H107221440 -107221440:lI101|H1072245E8 -1072245E8:lI97|H1072274A0 -1072274A0:lI109|N -1071FB4A0:lH1071FE410|N -1071FE410:lI115|H1072014C8 -1072014C8:lI110|H107204670 -107204670:lI109|H1072078A0 -1072078A0:lI112|H10720AB18 -10720AB18:lI109|H10720DD08 -10720DD08:lI95|H107210E98 -107210E98:lI110|H1072140F8 -1072140F8:lI101|H107217490 -107217490:lI116|H10721A9C0 -10721A9C0:lI95|H10721DF40 -10721DF40:lI105|H107221430 -107221430:lI102|H1072245D8 -1072245D8:lI95|H107227490 -107227490:lI102|H107229FA8 -107229FA8:lI105|H10722C740 -10722C740:lI108|H10722EC78 -10722EC78:lI116|H107230ED0 -107230ED0:lI101|H107232E68 -107232E68:lI114|H107234B30 -107234B30:lI46|H107236518 -107236518:lI98|H107237CC0 -107237CC0:lI101|H107239268 -107239268:lI97|H10723A6E0 -10723A6E0:lI109|N -1071FB490:lH1071FE400|N -1071FE400:lI115|H1072014B8 -1072014B8:lI110|H107204660 -107204660:lI109|H107207890 -107207890:lI112|H10720AB08 -10720AB08:lI99|H10720DCF8 -10720DCF8:lI95|H107210E88 -107210E88:lI116|H1072140E8 -1072140E8:lI111|H107217480 -107217480:lI107|H10721A9B0 -10721A9B0:lI46|H10721DF30 -10721DF30:lI98|H107221420 -107221420:lI101|H1072245C8 -1072245C8:lI97|H107227480 -107227480:lI109|N -1071F8778:lH1071FB470|N -1071FB470:lI115|H1071FE3E0 -1071FE3E0:lI110|H107201498 -107201498:lI109|H107204640 -107204640:lI112|H107207870 -107207870:lI97|H10720AAE8 -10720AAE8:lI95|H10720DCD8 -10720DCD8:lI103|H107210E68 -107210E68:lI101|H1072140C8 -1072140C8:lI116|H107217460 -107217460:lI46|H10721A990 -10721A990:lI98|H10721DF10 -10721DF10:lI101|H107221400 -107221400:lI97|H1072245A8 -1072245A8:lI109|N -1071F8740:Mn6:H1071FB408,H1071FB418,H1071FB428,H1071FB438,H1071FB450,H1071FB460 -1071FB408:lH1071FE370|N -1071FE370:lI115|H107201428 -107201428:lI110|H1072045D0 -1072045D0:lI109|H107207800 -107207800:lI112|H10720AA78 -10720AA78:lI95|H10720DC68 -10720DC68:lI117|H107210DF8 -107210DF8:lI115|H107214058 -107214058:lI101|H1072173F0 -1072173F0:lI114|H10721A920 -10721A920:lI95|H10721DEA0 -10721DEA0:lI98|H107221390 -107221390:lI97|H107224538 -107224538:lI115|H107227410 -107227410:lI101|H107229F48 -107229F48:lI100|H10722C6E0 -10722C6E0:lI95|H10722EC18 -10722EC18:lI115|H107230E70 -107230E70:lI109|H107232E18 -107232E18:lI95|H107234AE0 -107234AE0:lI109|H1072364D8 -1072364D8:lI105|H107237C80 -107237C80:lI98|H107239238 -107239238:lI46|H10723A6C0 -10723A6C0:lI98|H10723B960 -10723B960:lI101|H10723C990 -10723C990:lI97|H10723D800 -10723D800:lI109|N -1071FB460:lH1071FE3D0|N -1071FE3D0:lI115|H107201488 -107201488:lI110|H107204630 -107204630:lI109|H107207860 -107207860:lI112|H10720AAD8 -10720AAD8:lI99|H10720DCC8 -10720DCC8:lI95|H107210E58 -107210E58:lI108|H1072140B8 -1072140B8:lI105|H107217450 -107217450:lI98|H10721A980 -10721A980:lI46|H10721DF00 -10721DF00:lI98|H1072213F0 -1072213F0:lI101|H107224598 -107224598:lI97|H107227460 -107227460:lI109|N -1071FB450:lH1071FE3C0|N -1071FE3C0:lI115|H107201478 -107201478:lI110|H107204620 -107204620:lI109|H107207850 -107207850:lI112|H10720AAC8 -10720AAC8:lI95|H10720DCB8 -10720DCB8:lI115|H107210E48 -107210E48:lI116|H1072140A8 -1072140A8:lI97|H107217440 -107217440:lI110|H10721A970 -10721A970:lI100|H10721DEF0 -10721DEF0:lI97|H1072213E0 -1072213E0:lI114|H107224588 -107224588:lI100|H107227450 -107227450:lI95|H107229F88 -107229F88:lI109|H10722C720 -10722C720:lI105|H10722EC58 -10722EC58:lI98|H107230EB0 -107230EB0:lI46|H107232E48 -107232E48:lI98|H107234B10 -107234B10:lI101|H1072364F8 -1072364F8:lI97|H107237CA0 -107237CA0:lI109|N -1071FB438:Mn2:H1071FE3A0,H1071FE3B0 -1071FE3A0:lH107201458|N -107201458:lI115|H107204600 -107204600:lI110|H107207830 -107207830:lI109|H10720AAA8 -10720AAA8:lI112|H10720DC98 -10720DC98:lI95|H107210E28 -107210E28:lI118|H107214088 -107214088:lI101|H107217420 -107217420:lI114|H10721A950 -10721A950:lI98|H10721DED0 -10721DED0:lI111|H1072213C0 -1072213C0:lI115|H107224568 -107224568:lI105|H107227430 -107227430:lI116|H107229F68 -107229F68:lI121|H10722C700 -10722C700:lI46|H10722EC38 -10722EC38:lI98|H107230E90 -107230E90:lI101|H107232E38 -107232E38:lI97|H107234B00 -107234B00:lI109|N -1071FE3B0:lH107201468|N -107201468:lI115|H107204610 -107204610:lI110|H107207840 -107207840:lI109|H10720AAB8 -10720AAB8:lI112|H10720DCA8 -10720DCA8:lI97|H107210E38 -107210E38:lI95|H107214098 -107214098:lI110|H107217430 -107217430:lI101|H10721A960 -10721A960:lI116|H10721DEE0 -10721DEE0:lI95|H1072213D0 -1072213D0:lI105|H107224578 -107224578:lI102|H107227440 -107227440:lI46|H107229F78 -107229F78:lI98|H10722C710 -10722C710:lI101|H10722EC48 -10722EC48:lI97|H107230EA0 -107230EA0:lI109|N -1071FB428:lH1071FE390|N -1071FE390:lI115|H107201448 -107201448:lI110|H1072045F0 -1072045F0:lI109|H107207820 -107207820:lI112|H10720AA98 -10720AA98:lI95|H10720DC88 -10720DC88:lI97|H107210E18 -107210E18:lI112|H107214078 -107214078:lI112|H107217410 -107217410:lI46|H10721A940 -10721A940:lI98|H10721DEC0 -10721DEC0:lI101|H1072213B0 -1072213B0:lI97|H107224558 -107224558:lI109|N -1071FB418:lH1071FE380|N -1071FE380:lI115|H107201438 -107201438:lI110|H1072045E0 -1072045E0:lI109|H107207810 -107207810:lI112|H10720AA88 -10720AA88:lI97|H10720DC78 -10720DC78:lI95|H107210E08 -107210E08:lI101|H107214068 -107214068:lI114|H107217400 -107217400:lI114|H10721A930 -10721A930:lI111|H10721DEB0 -10721DEB0:lI114|H1072213A0 -1072213A0:lI95|H107224548 -107224548:lI114|H107227420 -107227420:lI101|H107229F58 -107229F58:lI112|H10722C6F0 -10722C6F0:lI111|H10722EC28 -10722EC28:lI114|H107230E80 -107230E80:lI116|H107232E28 -107232E28:lI46|H107234AF0 -107234AF0:lI98|H1072364E8 -1072364E8:lI101|H107237C90 -107237C90:lI97|H107239248 -107239248:lI109|N -1071F8720:Mn3:H1071FB3C8,H1071FB3D8,H1071FB3E8 -1071FB3C8:lH1071FE320|N -1071FE320:lI115|H1072013D8 -1072013D8:lI110|H107204580 -107204580:lI109|H1072077B0 -1072077B0:lI112|H10720AA28 -10720AA28:lI109|H10720DC18 -10720DC18:lI95|H107210DA8 -107210DA8:lI110|H107214008 -107214008:lI101|H1072173A0 -1072173A0:lI116|H10721A8D0 -10721A8D0:lI95|H10721DE50 -10721DE50:lI105|H107221350 -107221350:lI102|H1072244F8 -1072244F8:lI95|H1072273D0 -1072273D0:lI109|H107229F08 -107229F08:lI116|H10722C6A0 -10722C6A0:lI46|H10722EBD8 -10722EBD8:lI98|H107230E30 -107230E30:lI101|H107232DF8 -107232DF8:lI97|H107234AC0 -107234AC0:lI109|N -1071FB3E8:Mn3:H1071FE340,H1071FE350,H1071FE360 -1071FE340:lH1072013F8|N -1072013F8:lI115|H1072045A0 -1072045A0:lI110|H1072077D0 -1072077D0:lI109|H10720AA48 -10720AA48:lI112|H10720DC38 -10720DC38:lI97|H107210DC8 -107210DC8:lI95|H107214028 -107214028:lI109|H1072173C0 -1072173C0:lI105|H10721A8F0 -10721A8F0:lI98|H10721DE70 -10721DE70:lI95|H107221370 -107221370:lI115|H107224518 -107224518:lI116|H1072273F0 -1072273F0:lI111|H107229F28 -107229F28:lI114|H10722C6C0 -10722C6C0:lI97|H10722EBF8 -10722EBF8:lI103|H107230E50 -107230E50:lI101|H107232E08 -107232E08:lI46|H107234AD0 -107234AD0:lI98|H1072364C8 -1072364C8:lI101|H107237C70 -107237C70:lI97|H107239228 -107239228:lI109|N -1071FE360:lH107201418|N -107201418:lI115|H1072045C0 -1072045C0:lI110|H1072077F0 -1072077F0:lI109|H10720AA68 -10720AA68:lI112|H10720DC58 -10720DC58:lI95|H107210DE8 -107210DE8:lI97|H107214048 -107214048:lI112|H1072173E0 -1072173E0:lI112|H10721A910 -10721A910:lI95|H10721DE90 -10721DE90:lI115|H107221380 -107221380:lI117|H107224528 -107224528:lI112|H107227400 -107227400:lI46|H107229F38 -107229F38:lI98|H10722C6D0 -10722C6D0:lI101|H10722EC08 -10722EC08:lI97|H107230E60 -107230E60:lI109|N -1071FE350:lH107201408|N -107201408:lI115|H1072045B0 -1072045B0:lI110|H1072077E0 -1072077E0:lI109|H10720AA58 -10720AA58:lI112|H10720DC48 -10720DC48:lI99|H107210DD8 -107210DD8:lI46|H107214038 -107214038:lI98|H1072173D0 -1072173D0:lI101|H10721A900 -10721A900:lI97|H10721DE80 -10721DE80:lI109|N -1071FB3D8:lH1071FE330|N -1071FE330:lI115|H1072013E8 -1072013E8:lI110|H107204590 -107204590:lI109|H1072077C0 -1072077C0:lI112|H10720AA38 -10720AA38:lI97|H10720DC28 -10720DC28:lI95|H107210DB8 -107210DB8:lI115|H107214018 -107214018:lI101|H1072173B0 -1072173B0:lI116|H10721A8E0 -10721A8E0:lI95|H10721DE60 -10721DE60:lI108|H107221360 -107221360:lI105|H107224508 -107224508:lI98|H1072273E0 -1072273E0:lI46|H107229F18 -107229F18:lI98|H10722C6B0 -10722C6B0:lI101|H10722EBE8 -10722EBE8:lI97|H107230E40 -107230E40:lI109|N -1071F8700:Mn3:H1071FB390,H1071FB3A0,H1071FB3B0 -1071FB390:lH1071FE2E0|N -1071FE2E0:lI115|H107201398 -107201398:lI110|H107204540 -107204540:lI109|H107207770 -107207770:lI112|H10720A9E8 -10720A9E8:lI97|H10720DBD8 -10720DBD8:lI95|H107210D68 -107210D68:lI115|H107213FC8 -107213FC8:lI117|H107217360 -107217360:lI112|H10721A890 -10721A890:lI101|H10721DE10 -10721DE10:lI114|H107221310 -107221310:lI118|H1072244B8 -1072244B8:lI105|H107227390 -107227390:lI115|H107229EC8 -107229EC8:lI111|H10722C680 -10722C680:lI114|H10722EBB8 -10722EBB8:lI46|H107230E10 -107230E10:lI98|H107232DD8 -107232DD8:lI101|H107234AA0 -107234AA0:lI97|H1072364A8 -1072364A8:lI109|N -1071FB3B0:Mn2:H1071FE300,H1071FE310 -1071FE300:lH1072013B8|N -1072013B8:lI115|H107204560 -107204560:lI110|H107207790 -107207790:lI109|H10720AA08 -10720AA08:lI112|H10720DBF8 -10720DBF8:lI95|H107210D88 -107210D88:lI110|H107213FE8 -107213FE8:lI111|H107217380 -107217380:lI116|H10721A8B0 -10721A8B0:lI105|H10721DE30 -10721DE30:lI102|H107221330 -107221330:lI105|H1072244D8 -1072244D8:lI99|H1072273B0 -1072273B0:lI97|H107229EE8 -107229EE8:lI116|H10722C690 -10722C690:lI105|H10722EBC8 -10722EBC8:lI111|H107230E20 -107230E20:lI110|H107232DE8 -107232DE8:lI95|H107234AB0 -107234AB0:lI109|H1072364B8 -1072364B8:lI105|H107237C60 -107237C60:lI98|H107239218 -107239218:lI46|H10723A6B0 -10723A6B0:lI98|H10723B950 -10723B950:lI101|H10723C980 -10723C980:lI97|H10723D7F0 -10723D7F0:lI109|N -1071FE310:lH1072013C8|N -1072013C8:lI115|H107204570 -107204570:lI110|H1072077A0 -1072077A0:lI109|H10720AA18 -10720AA18:lI112|H10720DC08 -10720DC08:lI109|H107210D98 -107210D98:lI95|H107213FF8 -107213FF8:lI109|H107217390 -107217390:lI112|H10721A8C0 -10721A8C0:lI100|H10721DE40 -10721DE40:lI46|H107221340 -107221340:lI98|H1072244E8 -1072244E8:lI101|H1072273C0 -1072273C0:lI97|H107229EF8 -107229EF8:lI109|N -1071FB3A0:lH1071FE2F0|N -1071FE2F0:lI115|H1072013A8 -1072013A8:lI110|H107204550 -107204550:lI109|H107207780 -107207780:lI112|H10720A9F8 -10720A9F8:lI109|H10720DBE8 -10720DBE8:lI95|H107210D78 -107210D78:lI99|H107213FD8 -107213FD8:lI111|H107217370 -107217370:lI110|H10721A8A0 -10721A8A0:lI102|H10721DE20 -10721DE20:lI46|H107221320 -107221320:lI98|H1072244C8 -1072244C8:lI101|H1072273A0 -1072273A0:lI97|H107229ED8 -107229ED8:lI109|N -1071F5D88:lI47|H1071F86C8 -1071F86C8:lI111|H1071FB330 -1071FB330:lI112|H1071FE270 -1071FE270:lI116|H107201328 -107201328:lI47|H1072044D0 -1072044D0:lI104|H107207700 -107207700:lI111|H10720A978 -10720A978:lI109|H10720DB68 -10720DB68:lI101|H107210CF8 -107210CF8:lI98|H107213F58 -107213F58:lI114|H1072172F0 -1072172F0:lI101|H10721A820 -10721A820:lI119|H10721DDA0 -10721DDA0:lI47|H1072212A0 -1072212A0:lI67|H107224448 -107224448:lI101|H107227320 -107227320:lI108|H107229E58 -107229E58:lI108|H10722C630 -10722C630:lI97|H10722EB68 -10722EB68:lI114|H107230DC0 -107230DC0:lI47|H107232D88 -107232D88:lI101|H107234A50 -107234A50:lI114|H107236468 -107236468:lI108|H107237C20 -107237C20:lI97|H1072391D8 -1072391D8:lI110|H10723A670 -10723A670:lI103|H10723B930 -10723B930:lI47|H10723C960 -10723C960:lI50|H10723D7D0 -10723D7D0:lI54|H10723E510 -10723E510:lI46|H10723F110 -10723F110:lI48|H10723FBD0 -10723FBD0:lI46|H107240510 -107240510:lI50|H107240D90 -107240D90:lI47|H107241520 -107241520:lI108|H107241C50 -107241C50:lI105|H107242310 -107242310:lI98|H107242980 -107242980:lI47|H107242F80 -107242F80:lI101|H1072434F0 -1072434F0:lI114|H107243A30 -107243A30:lI108|H107243F20 -107243F20:lI97|H107244410 -107244410:lI110|H1072448C0 -1072448C0:lI103|H107244D30 -107244D30:lI47|H107245190 -107245190:lI108|H1072455E0 -1072455E0:lI105|H1072459E0 -1072459E0:lI98|H107245DA0 -107245DA0:lI47|H107246130 -107246130:lI115|H1072464C0 -1072464C0:lI110|H107246850 -107246850:lI109|H107246BE0 -107246BE0:lI112|H107246F10 -107246F10:lI45|H107247230 -107247230:lI53|H107247540 -107247540:lI46|H107247840 -107247840:lI49|H107247B40 -107247B40:lI52|H107247E20 -107247E20:lI47|H280052C20 -1071F3680:lH1071F5E28|H1071F5E40 -1071F5E28:t2:H1071F89B8,H1071F89C8 -1071F89C8:Mf13:H1071FB880:N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N -1071FB880:t13:H1071FE838,H1071FE848,H1071FE858,H1071FE868,H1071FE878,H1071FE888,H1071FE898,H1071FE8A8,H1071FE8B8,H1071FE8C8,H1071FE8D8,H1071FE8E8,H1071FE8F8,H1071FE908,H1071FE918,H1071FE928,H1071FE938,H1071FE948,H1071FE958 -1071FE958:lI115|H107201A18 -107201A18:lI121|H107204BC0 -107204BC0:lI115|H107207DF0 -107207DF0:lI116|H10720B068 -10720B068:lI111|H10720E258 -10720E258:lI111|H1072113E8 -1072113E8:lI108|H107214638 -107214638:lI115|H1072179C0 -1072179C0:lI95|H10721AEC0 -10721AEC0:lI114|H10721E410 -10721E410:lI101|H1072218E0 -1072218E0:lI108|H107224A88 -107224A88:lI117|H107227910 -107227910:lI112|H10722A388 -10722A388:lI46|H10722CAE0 -10722CAE0:lI98|H10722EFD8 -10722EFD8:lI101|H1072311E0 -1072311E0:lI97|H1072330F8 -1072330F8:lI109|N -1071FE948:lI115|H107201A08 -107201A08:lI121|H107204BB0 -107204BB0:lI115|H107207DE0 -107207DE0:lI116|H10720B058 -10720B058:lI111|H10720E248 -10720E248:lI111|H1072113D8 -1072113D8:lI108|H107214628 -107214628:lI115|H1072179B0 -1072179B0:lI95|H10721AEB0 -10721AEB0:lI114|H10721E400 -10721E400:lI99|H1072218D0 -1072218D0:lI46|H107224A78 -107224A78:lI98|H107227900 -107227900:lI101|H10722A378 -10722A378:lI97|H10722CAD0 -10722CAD0:lI109|N -1071FE938:lI115|H1072019F8 -1072019F8:lI121|H107204BA0 -107204BA0:lI115|H107207DD0 -107207DD0:lI116|H10720B048 -10720B048:lI111|H10720E238 -10720E238:lI111|H1072113C8 -1072113C8:lI108|H107214618 -107214618:lI115|H1072179A0 -1072179A0:lI95|H10721AEA0 -10721AEA0:lI109|H10721E3F0 -10721E3F0:lI97|H1072218C0 -1072218C0:lI107|H107224A68 -107224A68:lI101|H1072278F0 -1072278F0:lI46|H10722A368 -10722A368:lI98|H10722CAC0 -10722CAC0:lI101|H10722EFC8 -10722EFC8:lI97|H1072311D0 -1072311D0:lI109|N -1071FE928:lI115|H1072019E8 -1072019E8:lI121|H107204B90 -107204B90:lI115|H107207DC0 -107207DC0:lI116|H10720B038 -10720B038:lI111|H10720E228 -10720E228:lI111|H1072113B8 -1072113B8:lI108|H107214608 -107214608:lI115|H107217990 -107217990:lI95|H10721AE90 -10721AE90:lI108|H10721E3E0 -10721E3E0:lI105|H1072218B0 -1072218B0:lI98|H107224A58 -107224A58:lI46|H1072278E0 -1072278E0:lI98|H10722A358 -10722A358:lI101|H10722CAB0 -10722CAB0:lI97|H10722EFB8 -10722EFB8:lI109|N -1071FE918:lI115|H1072019D8 -1072019D8:lI121|H107204B80 -107204B80:lI115|H107207DB0 -107207DB0:lI116|H10720B028 -10720B028:lI111|H10720E218 -10720E218:lI111|H1072113A8 -1072113A8:lI108|H1072145F8 -1072145F8:lI115|H107217980 -107217980:lI46|H10721AE80 -10721AE80:lI98|H10721E3D0 -10721E3D0:lI101|H1072218A0 -1072218A0:lI97|H107224A48 -107224A48:lI109|N -1071FE908:lI115|H1072019C8 -1072019C8:lI97|H107204B70 -107204B70:lI115|H107207DA0 -107207DA0:lI108|H10720B018 -10720B018:lI95|H10720E208 -10720E208:lI114|H107211398 -107211398:lI101|H1072145E8 -1072145E8:lI112|H107217970 -107217970:lI111|H10721AE70 -10721AE70:lI114|H10721E3C0 -10721E3C0:lI116|H107221890 -107221890:lI95|H107224A38 -107224A38:lI116|H1072278D0 -1072278D0:lI116|H10722A348 -10722A348:lI121|H10722CAA0 -10722CAA0:lI95|H10722EFA8 -10722EFA8:lI104|H1072311C0 -1072311C0:lI46|H1072330E8 -1072330E8:lI98|H107234D40 -107234D40:lI101|H1072366E8 -1072366E8:lI97|H107237E50 -107237E50:lI109|N -1071FE8F8:lI115|H1072019B8 -1072019B8:lI97|H107204B60 -107204B60:lI115|H107207D90 -107207D90:lI108|H10720B008 -10720B008:lI95|H10720E1F8 -10720E1F8:lI114|H107211388 -107211388:lI101|H1072145D8 -1072145D8:lI112|H107217960 -107217960:lI111|H10721AE60 -10721AE60:lI114|H10721E3B0 -10721E3B0:lI116|H107221880 -107221880:lI95|H107224A28 -107224A28:lI102|H1072278C0 -1072278C0:lI105|H10722A338 -10722A338:lI108|H10722CA90 -10722CA90:lI101|H10722EF98 -10722EF98:lI95|H1072311B0 -1072311B0:lI104|H1072330D8 -1072330D8:lI46|H107234D30 -107234D30:lI98|H1072366D8 -1072366D8:lI101|H107237E40 -107237E40:lI97|H1072393C8 -1072393C8:lI109|N -1071FE8E8:lI115|H1072019A8 -1072019A8:lI97|H107204B50 -107204B50:lI115|H107207D80 -107207D80:lI108|H10720AFF8 -10720AFF8:lI95|H10720E1E8 -10720E1E8:lI114|H107211378 -107211378:lI101|H1072145C8 -1072145C8:lI112|H107217950 -107217950:lI111|H10721AE50 -10721AE50:lI114|H10721E3A0 -10721E3A0:lI116|H107221870 -107221870:lI46|H107224A18 -107224A18:lI98|H1072278B0 -1072278B0:lI101|H10722A328 -10722A328:lI97|H10722CA80 -10722CA80:lI109|N -1071FE8D8:lI115|H107201998 -107201998:lI97|H107204B40 -107204B40:lI115|H107207D70 -107207D70:lI108|H10720AFE8 -10720AFE8:lI46|H10720E1D8 -10720E1D8:lI98|H107211368 -107211368:lI101|H1072145B8 -1072145B8:lI97|H107217940 -107217940:lI109|N -1071FE8C8:lI115|H107201988 -107201988:lI97|H107204B30 -107204B30:lI115|H107207D60 -107207D60:lI108|H10720AFD8 -10720AFD8:lI46|H10720E1C8 -10720E1C8:lI97|H107211358 -107211358:lI112|H1072145A8 -1072145A8:lI112|H107217930 -107217930:lI117|H10721AE40 -10721AE40:lI112|N -1071FE8B8:lI115|H107201978 -107201978:lI97|H107204B20 -107204B20:lI115|H107207D50 -107207D50:lI108|H10720AFC8 -10720AFC8:lI46|H10720E1B8 -10720E1B8:lI97|H107211348 -107211348:lI112|H107214598 -107214598:lI112|N -1071FE8A8:lI114|H107201968 -107201968:lI101|H107204B10 -107204B10:lI108|H107207D40 -107207D40:lI101|H10720AFB8 -10720AFB8:lI97|H10720E1A8 -10720E1A8:lI115|H107211338 -107211338:lI101|H107214588 -107214588:lI95|H107217920 -107217920:lI104|H10721AE30 -10721AE30:lI97|H10721E390 -10721E390:lI110|H107221860 -107221860:lI100|H107224A08 -107224A08:lI108|H1072278A0 -1072278A0:lI101|H10722A318 -10722A318:lI114|H10722CA70 -10722CA70:lI95|H10722EF88 -10722EF88:lI49|H1072311A0 -1072311A0:lI46|H1072330C8 -1072330C8:lI98|H107234D20 -107234D20:lI101|H1072366C8 -1072366C8:lI97|H107237E30 -107237E30:lI109|N -1071FE898:lI114|H107201958 -107201958:lI101|H107204B00 -107204B00:lI108|H107207D30 -107207D30:lI101|H10720AFA8 -10720AFA8:lI97|H10720E198 -10720E198:lI115|H107211328 -107211328:lI101|H107214578 -107214578:lI95|H107217910 -107217910:lI104|H10721AE20 -10721AE20:lI97|H10721E380 -10721E380:lI110|H107221850 -107221850:lI100|H1072249F8 -1072249F8:lI108|H107227890 -107227890:lI101|H10722A308 -10722A308:lI114|H10722CA60 -10722CA60:lI46|H10722EF78 -10722EF78:lI98|H107231190 -107231190:lI101|H1072330B8 -1072330B8:lI97|H107234D10 -107234D10:lI109|N -1071FE888:lI114|H107201948 -107201948:lI98|H107204AF0 -107204AF0:lI95|H107207D20 -107207D20:lI102|H10720AF98 -10720AF98:lI111|H10720E188 -10720E188:lI114|H107211318 -107211318:lI109|H107214568 -107214568:lI97|H107217900 -107217900:lI116|H10721AE10 -10721AE10:lI95|H10721E370 -10721E370:lI115|H107221840 -107221840:lI117|H1072249E8 -1072249E8:lI112|H107227880 -107227880:lI112|H10722A2F8 -10722A2F8:lI46|H10722CA50 -10722CA50:lI98|H10722EF68 -10722EF68:lI101|H107231180 -107231180:lI97|H1072330A8 -1072330A8:lI109|N -1071FE878:lI114|H107201938 -107201938:lI98|H107204AE0 -107204AE0:lI46|H107207D10 -107207D10:lI98|H10720AF88 -10720AF88:lI101|H10720E178 -10720E178:lI97|H107211308 -107211308:lI109|N -1071FE868:lI109|H107201928 -107201928:lI105|H107204AD0 -107204AD0:lI115|H107207D00 -107207D00:lI99|H10720AF78 -10720AF78:lI95|H10720E168 -10720E168:lI115|H1072112F8 -1072112F8:lI117|H107214558 -107214558:lI112|H1072178F0 -1072178F0:lI112|H10721AE00 -10721AE00:lI46|H10721E360 -10721E360:lI98|H107221830 -107221830:lI101|H1072249D8 -1072249D8:lI97|H107227870 -107227870:lI109|N -1071FE858:lI102|H107201918 -107201918:lI111|H107204AC0 -107204AC0:lI114|H107207CF0 -107207CF0:lI109|H10720AF68 -10720AF68:lI97|H10720E158 -10720E158:lI116|H1072112E8 -1072112E8:lI95|H107214548 -107214548:lI108|H1072178E0 -1072178E0:lI105|H10721ADF0 -10721ADF0:lI98|H10721E350 -10721E350:lI95|H107221820 -107221820:lI115|H1072249C8 -1072249C8:lI117|H107227860 -107227860:lI112|H10722A2E8 -10722A2E8:lI112|H10722CA40 -10722CA40:lI46|H10722EF58 -10722EF58:lI98|H107231170 -107231170:lI101|H107233098 -107233098:lI97|H107234D00 -107234D00:lI109|N -1071FE848:lI101|H107201908 -107201908:lI114|H107204AB0 -107204AB0:lI108|H107207CE0 -107207CE0:lI115|H10720AF58 -10720AF58:lI114|H10720E148 -10720E148:lI118|H1072112D8 -1072112D8:lI46|H107214538 -107214538:lI98|H1072178D0 -1072178D0:lI101|H10721ADE0 -10721ADE0:lI97|H10721E340 -10721E340:lI109|N -1071FE838:lI97|H1072018F8 -1072018F8:lI108|H107204AA0 -107204AA0:lI97|H107207CD0 -107207CD0:lI114|H10720AF48 -10720AF48:lI109|H10720E138 -10720E138:lI95|H1072112C8 -1072112C8:lI104|H107214528 -107214528:lI97|H1072178C0 -1072178C0:lI110|H10721ADD0 -10721ADD0:lI100|H10721E330 -10721E330:lI108|H107221810 -107221810:lI101|H1072249B8 -1072249B8:lI114|H107227850 -107227850:lI46|H10722A2D8 -10722A2D8:lI98|H10722CA30 -10722CA30:lI101|H10722EF48 -10722EF48:lI97|H107231160 -107231160:lI109|N -1071F89B8:lI47|H1071FB870 -1071FB870:lI111|H1071FE828 -1071FE828:lI112|H1072018E8 -1072018E8:lI116|H107204A90 -107204A90:lI47|H107207CC0 -107207CC0:lI104|H10720AF38 -10720AF38:lI111|H10720E128 -10720E128:lI109|H1072112B8 -1072112B8:lI101|H107214518 -107214518:lI98|H1072178B0 -1072178B0:lI114|H10721ADC0 -10721ADC0:lI101|H10721E320 -10721E320:lI119|H107221800 -107221800:lI47|H1072249A8 -1072249A8:lI67|H107227840 -107227840:lI101|H10722A2C8 -10722A2C8:lI108|H10722CA20 -10722CA20:lI108|H10722EF38 -10722EF38:lI97|H107231150 -107231150:lI114|H107233088 -107233088:lI47|H107234CF0 -107234CF0:lI101|H1072366B8 -1072366B8:lI114|H107237E20 -107237E20:lI108|H1072393B8 -1072393B8:lI97|H10723A810 -10723A810:lI110|H10723BA40 -10723BA40:lI103|H10723CA70 -10723CA70:lI47|H10723D8D0 -10723D8D0:lI50|H10723E5D0 -10723E5D0:lI54|H10723F1B0 -10723F1B0:lI46|H10723FC40 -10723FC40:lI48|H107240580 -107240580:lI46|H107240DF0 -107240DF0:lI50|H107241580 -107241580:lI47|H107241CA0 -107241CA0:lI108|H107242360 -107242360:lI105|H1072429C0 -1072429C0:lI98|H107242FA0 -107242FA0:lI47|H107243510 -107243510:lI101|H107243A50 -107243A50:lI114|H107243F40 -107243F40:lI108|H107244430 -107244430:lI97|H1072448E0 -1072448E0:lI110|H107244D50 -107244D50:lI103|H1072451B0 -1072451B0:lI47|H107245600 -107245600:lI108|H107245A00 -107245A00:lI105|H107245DB0 -107245DB0:lI98|H107246140 -107246140:lI47|H1072464D0 -1072464D0:lI115|H107246860 -107246860:lI97|H107246BF0 -107246BF0:lI115|H107246F20 -107246F20:lI108|H107247240 -107247240:lI45|H107247550 -107247550:lI52|H107247850 -107247850:lI46|H107247B50 -107247B50:lI50|H107247E30 -107247E30:lI46|H1072480F0 -1072480F0:lI49|H1072483B0 -1072483B0:lI47|H280052C20 -1071F5E40:lH1071F8A78|H1071F8A90 -1071F8A78:t2:H1071FB920,H1071FB930 -1071FB930:MfE:H1071FE978:N,N,N,N,N,N,N,N,N,N,N,N,N,N -1071FE978:tE:H107201A38,H107201A48,H107201A58,H107201A68,H107201A78,H107201A88,H107201A98,H107201AA8,H107201AB8,H107201AC8,H107201AD8,H107201AE8,H107201AF8,H107201B08 -107201B08:lI116|H107204CB0 -107204CB0:lI116|H107207EE0 -107207EE0:lI98|H10720B158 -10720B158:lI95|H10720E348 -10720E348:lI97|H1072114D8 -1072114D8:lI117|H107214728 -107214728:lI116|H107217AB0 -107217AB0:lI111|H10721AFA0 -10721AFA0:lI115|H10721E4F0 -10721E4F0:lI116|H1072219B0 -1072219B0:lI97|H107224B58 -107224B58:lI114|H1072279E0 -1072279E0:lI116|H10722A448 -10722A448:lI46|H10722CB90 -10722CB90:lI98|H10722F078 -10722F078:lI101|H107231270 -107231270:lI97|H107233178 -107233178:lI109|N -107201AF8:lI115|H107204CA0 -107204CA0:lI121|H107207ED0 -107207ED0:lI115|H10720B148 -10720B148:lI116|H10720E338 -10720E338:lI101|H1072114C8 -1072114C8:lI109|H107214718 -107214718:lI95|H107217AA0 -107217AA0:lI105|H10721AF90 -10721AF90:lI110|H10721E4E0 -10721E4E0:lI102|H1072219A0 -1072219A0:lI111|H107224B48 -107224B48:lI114|H1072279D0 -1072279D0:lI109|H10722A438 -10722A438:lI97|H10722CB80 -10722CB80:lI116|H10722F068 -10722F068:lI105|H107231260 -107231260:lI111|H107233168 -107233168:lI110|H107234DA0 -107234DA0:lI46|H107236738 -107236738:lI98|H107237EA0 -107237EA0:lI101|H107239408 -107239408:lI97|H10723A830 -10723A830:lI109|N -107201AE8:lI115|H107204C90 -107204C90:lI99|H107207EC0 -107207EC0:lI104|H10720B138 -10720B138:lI101|H10720E328 -10720E328:lI100|H1072114B8 -1072114B8:lI117|H107214708 -107214708:lI108|H107217A90 -107217A90:lI101|H10721AF80 -10721AF80:lI114|H10721E4D0 -10721E4D0:lI46|H107221990 -107221990:lI98|H107224B38 -107224B38:lI101|H1072279C0 -1072279C0:lI97|H10722A428 -10722A428:lI109|N -107201AD8:lI114|H107204C80 -107204C80:lI117|H107207EB0 -107207EB0:lI110|H10720B128 -10720B128:lI116|H10720E318 -10720E318:lI105|H1072114A8 -1072114A8:lI109|H1072146F8 -1072146F8:lI101|H107217A80 -107217A80:lI95|H10721AF70 -10721AF70:lI116|H10721E4C0 -10721E4C0:lI111|H107221980 -107221980:lI111|H107224B28 -107224B28:lI108|H1072279B0 -1072279B0:lI115|H10722A418 -10722A418:lI95|H10722CB70 -10722CB70:lI115|H10722F058 -10722F058:lI117|H107231250 -107231250:lI112|H107233158 -107233158:lI46|H107234D90 -107234D90:lI98|H107236728 -107236728:lI101|H107237E90 -107237E90:lI97|H1072393F8 -1072393F8:lI109|N -107201AC8:lI114|H107204C70 -107204C70:lI117|H107207EA0 -107207EA0:lI110|H10720B118 -10720B118:lI116|H10720E308 -10720E308:lI105|H107211498 -107211498:lI109|H1072146E8 -1072146E8:lI101|H107217A70 -107217A70:lI95|H10721AF60 -10721AF60:lI116|H10721E4B0 -10721E4B0:lI111|H107221970 -107221970:lI111|H107224B18 -107224B18:lI108|H1072279A0 -1072279A0:lI115|H10722A408 -10722A408:lI46|H10722CB60 -10722CB60:lI98|H10722F048 -10722F048:lI101|H107231240 -107231240:lI97|H107233148 -107233148:lI109|N -107201AB8:lI114|H107204C60 -107204C60:lI117|H107207E90 -107207E90:lI110|H10720B108 -10720B108:lI116|H10720E2F8 -10720E2F8:lI105|H107211488 -107211488:lI109|H1072146D8 -1072146D8:lI101|H107217A60 -107217A60:lI95|H10721AF50 -10721AF50:lI116|H10721E4A0 -10721E4A0:lI111|H107221960 -107221960:lI111|H107224B08 -107224B08:lI108|H107227990 -107227990:lI115|H10722A3F8 -10722A3F8:lI46|H10722CB50 -10722CB50:lI97|H10722F038 -10722F038:lI112|H107231230 -107231230:lI112|H107233138 -107233138:lI117|H107234D80 -107234D80:lI112|N -107201AA8:lI114|H107204C50 -107204C50:lI117|H107207E80 -107207E80:lI110|H10720B0F8 -10720B0F8:lI116|H10720E2E8 -10720E2E8:lI105|H107211478 -107211478:lI109|H1072146C8 -1072146C8:lI101|H107217A50 -107217A50:lI95|H10721AF40 -10721AF40:lI116|H10721E490 -10721E490:lI111|H107221950 -107221950:lI111|H107224AF8 -107224AF8:lI108|H107227980 -107227980:lI115|H10722A3E8 -10722A3E8:lI46|H10722CB40 -10722CB40:lI97|H10722F028 -10722F028:lI112|H107231220 -107231220:lI112|N -107201A98:lI111|H107204C40 -107204C40:lI98|H107207E70 -107207E70:lI115|H10720B0E8 -10720B0E8:lI101|H10720E2D8 -10720E2D8:lI114|H107211468 -107211468:lI118|H1072146B8 -1072146B8:lI101|H107217A40 -107217A40:lI114|H10721AF30 -10721AF30:lI95|H10721E480 -10721E480:lI98|H107221940 -107221940:lI97|H107224AE8 -107224AE8:lI99|H107227970 -107227970:lI107|H10722A3D8 -10722A3D8:lI101|H10722CB30 -10722CB30:lI110|H10722F018 -10722F018:lI100|H107231210 -107231210:lI46|H107233128 -107233128:lI98|H107234D70 -107234D70:lI101|H107236718 -107236718:lI97|H107237E80 -107237E80:lI109|N -107201A88:lI109|H107204C30 -107204C30:lI115|H107207E60 -107207E60:lI97|H10720B0D8 -10720B0D8:lI99|H10720E2C8 -10720E2C8:lI99|H107211458 -107211458:lI46|H1072146A8 -1072146A8:lI98|H107217A30 -107217A30:lI101|H10721AF20 -10721AF20:lI97|H10721E470 -10721E470:lI109|N -107201A78:lI105|H107204C20 -107204C20:lI110|H107207E50 -107207E50:lI115|H10720B0C8 -10720B0C8:lI116|H10720E2B8 -10720E2B8:lI114|H107211448 -107211448:lI117|H107214698 -107214698:lI109|H107217A20 -107217A20:lI101|H10721AF10 -10721AF10:lI110|H10721E460 -10721E460:lI116|H107221930 -107221930:lI46|H107224AD8 -107224AD8:lI98|H107227960 -107227960:lI101|H10722A3C8 -10722A3C8:lI97|H10722CB20 -10722CB20:lI109|N -107201A68:lI101|H107204C10 -107204C10:lI114|H107207E40 -107207E40:lI116|H10720B0B8 -10720B0B8:lI115|H10720E2A8 -10720E2A8:lI95|H107211438 -107211438:lI97|H107214688 -107214688:lI108|H107217A10 -107217A10:lI108|H10721AF00 -10721AF00:lI111|H10721E450 -10721E450:lI99|H107221920 -107221920:lI95|H107224AC8 -107224AC8:lI99|H107227950 -107227950:lI111|H10722A3B8 -10722A3B8:lI110|H10722CB10 -10722CB10:lI102|H10722F008 -10722F008:lI105|H107231200 -107231200:lI103|H107233118 -107233118:lI46|H107234D60 -107234D60:lI98|H107236708 -107236708:lI101|H107237E70 -107237E70:lI97|H1072393E8 -1072393E8:lI109|N -107201A58:lI100|H107204C00 -107204C00:lI121|H107207E30 -107207E30:lI110|H10720B0A8 -10720B0A8:lI116|H10720E298 -10720E298:lI114|H107211428 -107211428:lI97|H107214678 -107214678:lI99|H107217A00 -107217A00:lI101|H10721AEF0 -10721AEF0:lI46|H10721E440 -10721E440:lI98|H107221910 -107221910:lI101|H107224AB8 -107224AB8:lI97|H107227940 -107227940:lI109|N -107201A48:lI100|H107204BF0 -107204BF0:lI98|H107207E20 -107207E20:lI103|H10720B098 -10720B098:lI46|H10720E288 -10720E288:lI98|H107211418 -107211418:lI101|H107214668 -107214668:lI97|H1072179F0 -1072179F0:lI109|N -107201A38:lI97|H107204BE0 -107204BE0:lI112|H107207E10 -107207E10:lI112|H10720B088 -10720B088:lI109|H10720E278 -10720E278:lI111|H107211408 -107211408:lI110|H107214658 -107214658:lI95|H1072179E0 -1072179E0:lI105|H10721AEE0 -10721AEE0:lI110|H10721E430 -10721E430:lI102|H107221900 -107221900:lI111|H107224AA8 -107224AA8:lI46|H107227930 -107227930:lI98|H10722A3A8 -10722A3A8:lI101|H10722CB00 -10722CB00:lI97|H10722EFF8 -10722EFF8:lI109|N -1071FB920:lI47|H1071FE968 -1071FE968:lI111|H107201A28 -107201A28:lI112|H107204BD0 -107204BD0:lI116|H107207E00 -107207E00:lI47|H10720B078 -10720B078:lI104|H10720E268 -10720E268:lI111|H1072113F8 -1072113F8:lI109|H107214648 -107214648:lI101|H1072179D0 -1072179D0:lI98|H10721AED0 -10721AED0:lI114|H10721E420 -10721E420:lI101|H1072218F0 -1072218F0:lI119|H107224A98 -107224A98:lI47|H107227920 -107227920:lI67|H10722A398 -10722A398:lI101|H10722CAF0 -10722CAF0:lI108|H10722EFE8 -10722EFE8:lI108|H1072311F0 -1072311F0:lI97|H107233108 -107233108:lI114|H107234D50 -107234D50:lI47|H1072366F8 -1072366F8:lI101|H107237E60 -107237E60:lI114|H1072393D8 -1072393D8:lI108|H10723A820 -10723A820:lI97|H10723BA50 -10723BA50:lI110|H10723CA80 -10723CA80:lI103|H10723D8E0 -10723D8E0:lI47|H10723E5E0 -10723E5E0:lI50|H10723F1C0 -10723F1C0:lI54|H10723FC50 -10723FC50:lI46|H107240590 -107240590:lI48|H107240E00 -107240E00:lI46|H107241590 -107241590:lI50|H107241CB0 -107241CB0:lI47|H107242370 -107242370:lI108|H1072429D0 -1072429D0:lI105|H107242FB0 -107242FB0:lI98|H107243520 -107243520:lI47|H107243A60 -107243A60:lI101|H107243F50 -107243F50:lI114|H107244440 -107244440:lI108|H1072448F0 -1072448F0:lI97|H107244D60 -107244D60:lI110|H1072451C0 -1072451C0:lI103|H107245610 -107245610:lI47|H107245A10 -107245A10:lI108|H107245DC0 -107245DC0:lI105|H107246150 -107246150:lI98|H1072464E0 -1072464E0:lI47|H107246870 -107246870:lI114|H107246C00 -107246C00:lI117|H107246F30 -107246F30:lI110|H107247250 -107247250:lI116|H107247560 -107247560:lI105|H107247860 -107247860:lI109|H107247B60 -107247B60:lI101|H107247E40 -107247E40:lI95|H107248100 -107248100:lI116|H1072483C0 -1072483C0:lI111|H107248670 -107248670:lI111|H107248920 -107248920:lI108|H107248BA0 -107248BA0:lI115|H107248E20 -107248E20:lI45|H107249090 -107249090:lI50|H107249300 -107249300:lI46|H107249560 -107249560:lI48|H1072497C0 -1072497C0:lI47|H280052C20 -1071F8A90:lH1071FB9B8|H1071FB9D0 -1071FB9B8:t2:H1071FE9F0,H1071FEA00 -1071FEA00:MfB:H107201B28:N,N,N,N,N,N,N,N,N,N,N -107201B28:tB:H107204CD0,H107204CE0,H107204CF0,H107204D00,H107204D10,H107204D20,H107204D30,H107204D40,H107204D50,H107204D60,H107204D70 -107204D70:lI114|H107207FA0 -107207FA0:lI101|H10720B218 -10720B218:lI108|H10720E408 -10720E408:lI116|H107211598 -107211598:lI111|H1072147E8 -1072147E8:lI111|H107217B70 -107217B70:lI108|H10721B060 -10721B060:lI95|H10721E5B0 -10721E5B0:lI117|H107221A70 -107221A70:lI116|H107224C18 -107224C18:lI105|H107227A90 -107227A90:lI108|H10722A4E8 -10722A4E8:lI115|H10722CC20 -10722CC20:lI46|H10722F108 -10722F108:lI98|H107231300 -107231300:lI101|H107233208 -107233208:lI97|H107234E30 -107234E30:lI109|N -107204D60:lI114|H107207F90 -107207F90:lI101|H10720B208 -10720B208:lI108|H10720E3F8 -10720E3F8:lI116|H107211588 -107211588:lI111|H1072147D8 -1072147D8:lI111|H107217B60 -107217B60:lI108|H10721B050 -10721B050:lI95|H10721E5A0 -10721E5A0:lI116|H107221A60 -107221A60:lI97|H107224C08 -107224C08:lI114|H107227A80 -107227A80:lI103|H10722A4D8 -10722A4D8:lI101|H10722CC10 -10722CC10:lI116|H10722F0F8 -10722F0F8:lI46|H1072312F0 -1072312F0:lI98|H1072331F8 -1072331F8:lI101|H107234E20 -107234E20:lI97|H1072367B8 -1072367B8:lI109|N -107204D50:lI114|H107207F80 -107207F80:lI101|H10720B1F8 -10720B1F8:lI108|H10720E3E8 -10720E3E8:lI116|H107211578 -107211578:lI111|H1072147C8 -1072147C8:lI111|H107217B50 -107217B50:lI108|H10721B040 -10721B040:lI95|H10721E590 -10721E590:lI115|H107221A50 -107221A50:lI121|H107224BF8 -107224BF8:lI115|H107227A70 -107227A70:lI95|H10722A4C8 -10722A4C8:lI119|H10722CC00 -10722CC00:lI105|H10722F0E8 -10722F0E8:lI110|H1072312E0 -1072312E0:lI46|H1072331E8 -1072331E8:lI98|H107234E10 -107234E10:lI101|H1072367A8 -1072367A8:lI97|H107237EF0 -107237EF0:lI109|N -107204D40:lI114|H107207F70 -107207F70:lI101|H10720B1E8 -10720B1E8:lI108|H10720E3D8 -10720E3D8:lI116|H107211568 -107211568:lI111|H1072147B8 -1072147B8:lI111|H107217B40 -107217B40:lI108|H10721B030 -10721B030:lI95|H10721E580 -10721E580:lI115|H107221A40 -107221A40:lI101|H107224BE8 -107224BE8:lI114|H107227A60 -107227A60:lI118|H10722A4B8 -10722A4B8:lI101|H10722CBF0 -10722CBF0:lI114|H10722F0D8 -10722F0D8:lI46|H1072312D0 -1072312D0:lI98|H1072331D8 -1072331D8:lI101|H107234E00 -107234E00:lI97|H107236798 -107236798:lI109|N -107204D30:lI114|H107207F60 -107207F60:lI101|H10720B1D8 -10720B1D8:lI108|H10720E3C8 -10720E3C8:lI116|H107211558 -107211558:lI111|H1072147A8 -1072147A8:lI111|H107217B30 -107217B30:lI108|H10721B020 -10721B020:lI95|H10721E570 -10721E570:lI109|H107221A30 -107221A30:lI111|H107224BD8 -107224BD8:lI100|H107227A50 -107227A50:lI95|H10722A4A8 -10722A4A8:lI119|H10722CBE0 -10722CBE0:lI105|H10722F0C8 -10722F0C8:lI110|H1072312C0 -1072312C0:lI46|H1072331C8 -1072331C8:lI98|H107234DF0 -107234DF0:lI101|H107236788 -107236788:lI97|H107237EE0 -107237EE0:lI109|N -107204D20:lI114|H107207F50 -107207F50:lI101|H10720B1C8 -10720B1C8:lI108|H10720E3B8 -10720E3B8:lI116|H107211548 -107211548:lI111|H107214798 -107214798:lI111|H107217B20 -107217B20:lI108|H10721B010 -10721B010:lI95|H10721E560 -10721E560:lI102|H107221A20 -107221A20:lI103|H107224BC8 -107224BC8:lI114|H107227A40 -107227A40:lI97|H10722A498 -10722A498:lI112|H10722CBD0 -10722CBD0:lI104|H10722F0B8 -10722F0B8:lI95|H1072312B0 -1072312B0:lI119|H1072331B8 -1072331B8:lI105|H107234DE0 -107234DE0:lI110|H107236778 -107236778:lI46|H107237ED0 -107237ED0:lI98|H107239428 -107239428:lI101|H10723A850 -10723A850:lI97|H10723BA70 -10723BA70:lI109|N -107204D10:lI114|H107207F40 -107207F40:lI101|H10720B1B8 -10720B1B8:lI108|H10720E3A8 -10720E3A8:lI116|H107211538 -107211538:lI111|H107214788 -107214788:lI111|H107217B10 -107217B10:lI108|H10721B000 -10721B000:lI95|H10721E550 -10721E550:lI102|H107221A10 -107221A10:lI103|H107224BB8 -107224BB8:lI114|H107227A30 -107227A30:lI97|H10722A488 -10722A488:lI112|H10722CBC0 -10722CBC0:lI104|H10722F0A8 -10722F0A8:lI46|H1072312A0 -1072312A0:lI98|H1072331A8 -1072331A8:lI101|H107234DD0 -107234DD0:lI97|H107236768 -107236768:lI109|N -107204D00:lI114|H107207F30 -107207F30:lI101|H10720B1A8 -10720B1A8:lI108|H10720E398 -10720E398:lI116|H107211528 -107211528:lI111|H107214778 -107214778:lI111|H107217B00 -107217B00:lI108|H10721AFF0 -10721AFF0:lI95|H10721E540 -10721E540:lI97|H107221A00 -107221A00:lI112|H107224BA8 -107224BA8:lI112|H107227A20 -107227A20:lI95|H10722A478 -10722A478:lI119|H10722CBB0 -10722CBB0:lI105|H10722F098 -10722F098:lI110|H107231290 -107231290:lI46|H107233198 -107233198:lI98|H107234DC0 -107234DC0:lI101|H107236758 -107236758:lI97|H107237EC0 -107237EC0:lI109|N -107204CF0:lI114|H107207F20 -107207F20:lI101|H10720B198 -10720B198:lI108|H10720E388 -10720E388:lI116|H107211518 -107211518:lI111|H107214768 -107214768:lI111|H107217AF0 -107217AF0:lI108|H10721AFE0 -10721AFE0:lI46|H10721E530 -10721E530:lI98|H1072219F0 -1072219F0:lI101|H107224B98 -107224B98:lI97|H107227A10 -107227A10:lI109|N -107204CE0:lI114|H107207F10 -107207F10:lI101|H10720B188 -10720B188:lI108|H10720E378 -10720E378:lI116|H107211508 -107211508:lI111|H107214758 -107214758:lI111|H107217AE0 -107217AE0:lI108|H10721AFD0 -10721AFD0:lI46|H10721E520 -10721E520:lI97|H1072219E0 -1072219E0:lI112|H107224B88 -107224B88:lI112|H107227A00 -107227A00:lI117|H10722A468 -10722A468:lI112|N -107204CD0:lI114|H107207F00 -107207F00:lI101|H10720B178 -10720B178:lI108|H10720E368 -10720E368:lI116|H1072114F8 -1072114F8:lI111|H107214748 -107214748:lI111|H107217AD0 -107217AD0:lI108|H10721AFC0 -10721AFC0:lI46|H10721E510 -10721E510:lI97|H1072219D0 -1072219D0:lI112|H107224B78 -107224B78:lI112|N -1071FE9F0:lI47|H107201B18 -107201B18:lI111|H107204CC0 -107204CC0:lI112|H107207EF0 -107207EF0:lI116|H10720B168 -10720B168:lI47|H10720E358 -10720E358:lI104|H1072114E8 -1072114E8:lI111|H107214738 -107214738:lI109|H107217AC0 -107217AC0:lI101|H10721AFB0 -10721AFB0:lI98|H10721E500 -10721E500:lI114|H1072219C0 -1072219C0:lI101|H107224B68 -107224B68:lI119|H1072279F0 -1072279F0:lI47|H10722A458 -10722A458:lI67|H10722CBA0 -10722CBA0:lI101|H10722F088 -10722F088:lI108|H107231280 -107231280:lI108|H107233188 -107233188:lI97|H107234DB0 -107234DB0:lI114|H107236748 -107236748:lI47|H107237EB0 -107237EB0:lI101|H107239418 -107239418:lI114|H10723A840 -10723A840:lI108|H10723BA60 -10723BA60:lI97|H10723CA90 -10723CA90:lI110|H10723D8F0 -10723D8F0:lI103|H10723E5F0 -10723E5F0:lI47|H10723F1D0 -10723F1D0:lI50|H10723FC60 -10723FC60:lI54|H1072405A0 -1072405A0:lI46|H107240E10 -107240E10:lI48|H1072415A0 -1072415A0:lI46|H107241CC0 -107241CC0:lI50|H107242380 -107242380:lI47|H1072429E0 -1072429E0:lI108|H107242FC0 -107242FC0:lI105|H107243530 -107243530:lI98|H107243A70 -107243A70:lI47|H107243F60 -107243F60:lI101|H107244450 -107244450:lI114|H107244900 -107244900:lI108|H107244D70 -107244D70:lI97|H1072451D0 -1072451D0:lI110|H107245620 -107245620:lI103|H107245A20 -107245A20:lI47|H107245DD0 -107245DD0:lI108|H107246160 -107246160:lI105|H1072464F0 -1072464F0:lI98|H107246880 -107246880:lI47|H107246C10 -107246C10:lI114|H107246F40 -107246F40:lI101|H107247260 -107247260:lI108|H107247570 -107247570:lI116|H107247870 -107247870:lI111|H107247B70 -107247B70:lI111|H107247E50 -107247E50:lI108|H107248110 -107248110:lI45|H1072483D0 -1072483D0:lI49|H107248680 -107248680:lI46|H107248930 -107248930:lI48|H107248BB0 -107248BB0:lI47|H280052C20 -1071FB9D0:lH1071FEA70|H1071FEA88 -1071FEA70:t2:H107201B88,H107201B98 -107201B98:MfD:H107204D90:N,N,N,N,N,N,N,N,N,N,N,N,N -107204D90:tD:H107207FC0,H107207FD0,H107207FE0,H107207FF0,H107208000,H107208010,H107208020,H107208030,H107208040,H107208050,H107208060,H107208070,H107208080 -107208080:lI112|H10720B2F8 -10720B2F8:lI117|H10720E4E8 -10720E4E8:lI98|H107211678 -107211678:lI108|H1072148C8 -1072148C8:lI105|H107217C50 -107217C50:lI99|H10721B140 -10721B140:lI95|H10721E690 -10721E690:lI107|H107221B50 -107221B50:lI101|H107224CF8 -107224CF8:lI121|H107227B70 -107227B70:lI46|H10722A5C8 -10722A5C8:lI98|H10722CD00 -10722CD00:lI101|H10722F1E8 -10722F1E8:lI97|H1072313D0 -1072313D0:lI109|N -107208070:lI112|H10720B2E8 -10720B2E8:lI117|H10720E4D8 -10720E4D8:lI98|H107211668 -107211668:lI108|H1072148B8 -1072148B8:lI105|H107217C40 -107217C40:lI99|H10721B130 -10721B130:lI95|H10721E680 -10721E680:lI107|H107221B40 -107221B40:lI101|H107224CE8 -107224CE8:lI121|H107227B60 -107227B60:lI46|H10722A5B8 -10722A5B8:lI97|H10722CCF0 -10722CCF0:lI112|H10722F1D8 -10722F1D8:lI112|H1072313C0 -1072313C0:lI117|H107233278 -107233278:lI112|N -107208060:lI112|H10720B2D8 -10720B2D8:lI117|H10720E4C8 -10720E4C8:lI98|H107211658 -107211658:lI108|H1072148A8 -1072148A8:lI105|H107217C30 -107217C30:lI99|H10721B120 -10721B120:lI95|H10721E670 -10721E670:lI107|H107221B30 -107221B30:lI101|H107224CD8 -107224CD8:lI121|H107227B50 -107227B50:lI46|H10722A5A8 -10722A5A8:lI97|H10722CCE0 -10722CCE0:lI112|H10722F1C8 -10722F1C8:lI112|N -107208050:lI112|H10720B2C8 -10720B2C8:lI117|H10720E4B8 -10720E4B8:lI98|H107211648 -107211648:lI107|H107214898 -107214898:lI101|H107217C20 -107217C20:lI121|H10721B110 -10721B110:lI95|H10721E660 -10721E660:lI115|H107221B20 -107221B20:lI115|H107224CC8 -107224CC8:lI104|H107227B40 -107227B40:lI46|H10722A598 -10722A598:lI98|H10722CCD0 -10722CCD0:lI101|H10722F1B8 -10722F1B8:lI97|H1072313B0 -1072313B0:lI109|N -107208040:lI112|H10720B2B8 -10720B2B8:lI117|H10720E4A8 -10720E4A8:lI98|H107211638 -107211638:lI107|H107214888 -107214888:lI101|H107217C10 -107217C10:lI121|H10721B100 -10721B100:lI95|H10721E650 -10721E650:lI112|H107221B10 -107221B10:lI101|H107224CB8 -107224CB8:lI109|H107227B30 -107227B30:lI46|H10722A588 -10722A588:lI98|H10722CCC0 -10722CCC0:lI101|H10722F1A8 -10722F1A8:lI97|H1072313A0 -1072313A0:lI109|N -107208030:lI112|H10720B2A8 -10720B2A8:lI117|H10720E498 -10720E498:lI98|H107211628 -107211628:lI107|H107214878 -107214878:lI101|H107217C00 -107217C00:lI121|H10721B0F0 -10721B0F0:lI95|H10721E640 -10721E640:lI112|H107221B00 -107221B00:lI98|H107224CA8 -107224CA8:lI101|H107227B20 -107227B20:lI46|H10722A578 -10722A578:lI98|H10722CCB0 -10722CCB0:lI101|H10722F198 -10722F198:lI97|H107231390 -107231390:lI109|N -107208020:lI112|H10720B298 -10720B298:lI117|H10720E488 -10720E488:lI98|H107211618 -107211618:lI107|H107214868 -107214868:lI101|H107217BF0 -107217BF0:lI121|H10721B0E0 -10721B0E0:lI95|H10721E630 -10721E630:lI111|H107221AF0 -107221AF0:lI115|H107224C98 -107224C98:lI95|H107227B10 -107227B10:lI99|H10722A568 -10722A568:lI97|H10722CCA0 -10722CCA0:lI99|H10722F188 -10722F188:lI101|H107231380 -107231380:lI114|H107233268 -107233268:lI116|H107234E60 -107234E60:lI115|H1072367E8 -1072367E8:lI46|H107237F20 -107237F20:lI98|H107239458 -107239458:lI101|H10723A880 -10723A880:lI97|H10723BAA0 -10723BAA0:lI109|N -107208010:lI112|H10720B288 -10720B288:lI117|H10720E478 -10720E478:lI98|H107211608 -107211608:lI107|H107214858 -107214858:lI101|H107217BE0 -107217BE0:lI121|H10721B0D0 -10721B0D0:lI95|H10721E620 -10721E620:lI111|H107221AE0 -107221AE0:lI99|H107224C88 -107224C88:lI115|H107227B00 -107227B00:lI112|H10722A558 -10722A558:lI46|H10722CC90 -10722CC90:lI98|H10722F178 -10722F178:lI101|H107231370 -107231370:lI97|H107233258 -107233258:lI109|N -107208000:lI112|H10720B278 -10720B278:lI117|H10720E468 -10720E468:lI98|H1072115F8 -1072115F8:lI107|H107214848 -107214848:lI101|H107217BD0 -107217BD0:lI121|H10721B0C0 -10721B0C0:lI95|H10721E610 -10721E610:lI99|H107221AD0 -107221AD0:lI114|H107224C78 -107224C78:lI108|H107227AF0 -107227AF0:lI46|H10722A548 -10722A548:lI98|H10722CC80 -10722CC80:lI101|H10722F168 -10722F168:lI97|H107231360 -107231360:lI109|N -107207FF0:lI112|H10720B268 -10720B268:lI117|H10720E458 -10720E458:lI98|H1072115E8 -1072115E8:lI107|H107214838 -107214838:lI101|H107217BC0 -107217BC0:lI121|H10721B0B0 -10721B0B0:lI95|H10721E600 -10721E600:lI99|H107221AC0 -107221AC0:lI101|H107224C68 -107224C68:lI114|H107227AE0 -107227AE0:lI116|H10722A538 -10722A538:lI95|H10722CC70 -10722CC70:lI114|H10722F158 -10722F158:lI101|H107231350 -107231350:lI99|H107233248 -107233248:lI111|H107234E50 -107234E50:lI114|H1072367D8 -1072367D8:lI100|H107237F10 -107237F10:lI115|H107239448 -107239448:lI46|H10723A870 -10723A870:lI98|H10723BA90 -10723BA90:lI101|H10723CAB0 -10723CAB0:lI97|H10723D910 -10723D910:lI109|N -107207FE0:lI112|H10720B258 -10720B258:lI117|H10720E448 -10720E448:lI98|H1072115D8 -1072115D8:lI107|H107214828 -107214828:lI101|H107217BB0 -107217BB0:lI121|H10721B0A0 -10721B0A0:lI95|H10721E5F0 -10721E5F0:lI99|H107221AB0 -107221AB0:lI101|H107224C58 -107224C58:lI114|H107227AD0 -107227AD0:lI116|H10722A528 -10722A528:lI46|H10722CC60 -10722CC60:lI98|H10722F148 -10722F148:lI101|H107231340 -107231340:lI97|H107233238 -107233238:lI109|N -107207FD0:lI80|H10720B248 -10720B248:lI75|H10720E438 -10720E438:lI67|H1072115C8 -1072115C8:lI83|H107214818 -107214818:lI45|H107217BA0 -107217BA0:lI70|H10721B090 -10721B090:lI82|H10721E5E0 -10721E5E0:lI65|H107221AA0 -107221AA0:lI77|H107224C48 -107224C48:lI69|H107227AC0 -107227AC0:lI46|H10722A518 -10722A518:lI98|H10722CC50 -10722CC50:lI101|H10722F138 -10722F138:lI97|H107231330 -107231330:lI109|N -107207FC0:lI79|H10720B238 -10720B238:lI84|H10720E428 -10720E428:lI80|H1072115B8 -1072115B8:lI45|H107214808 -107214808:lI80|H107217B90 -107217B90:lI85|H10721B080 -10721B080:lI66|H10721E5D0 -10721E5D0:lI45|H107221A90 -107221A90:lI75|H107224C38 -107224C38:lI69|H107227AB0 -107227AB0:lI89|H10722A508 -10722A508:lI46|H10722CC40 -10722CC40:lI98|H10722F128 -10722F128:lI101|H107231320 -107231320:lI97|H107233228 -107233228:lI109|N -107201B88:lI47|H107204D80 -107204D80:lI111|H107207FB0 -107207FB0:lI112|H10720B228 -10720B228:lI116|H10720E418 -10720E418:lI47|H1072115A8 -1072115A8:lI104|H1072147F8 -1072147F8:lI111|H107217B80 -107217B80:lI109|H10721B070 -10721B070:lI101|H10721E5C0 -10721E5C0:lI98|H107221A80 -107221A80:lI114|H107224C28 -107224C28:lI101|H107227AA0 -107227AA0:lI119|H10722A4F8 -10722A4F8:lI47|H10722CC30 -10722CC30:lI67|H10722F118 -10722F118:lI101|H107231310 -107231310:lI108|H107233218 -107233218:lI108|H107234E40 -107234E40:lI97|H1072367C8 -1072367C8:lI114|H107237F00 -107237F00:lI47|H107239438 -107239438:lI101|H10723A860 -10723A860:lI114|H10723BA80 -10723BA80:lI108|H10723CAA0 -10723CAA0:lI97|H10723D900 -10723D900:lI110|H10723E600 -10723E600:lI103|H10723F1E0 -10723F1E0:lI47|H10723FC70 -10723FC70:lI50|H1072405B0 -1072405B0:lI54|H107240E20 -107240E20:lI46|H1072415B0 -1072415B0:lI48|H107241CD0 -107241CD0:lI46|H107242390 -107242390:lI50|H1072429F0 -1072429F0:lI47|H107242FD0 -107242FD0:lI108|H107243540 -107243540:lI105|H107243A80 -107243A80:lI98|H107243F70 -107243F70:lI47|H107244460 -107244460:lI101|H107244910 -107244910:lI114|H107244D80 -107244D80:lI108|H1072451E0 -1072451E0:lI97|H107245630 -107245630:lI110|H107245A30 -107245A30:lI103|H107245DE0 -107245DE0:lI47|H107246170 -107246170:lI108|H107246500 -107246500:lI105|H107246890 -107246890:lI98|H107246C20 -107246C20:lI47|H107246F50 -107246F50:lI112|H107247270 -107247270:lI117|H107247580 -107247580:lI98|H107247880 -107247880:lI108|H107247B80 -107247B80:lI105|H107247E60 -107247E60:lI99|H107248120 -107248120:lI95|H1072483E0 -1072483E0:lI107|H107248690 -107248690:lI101|H107248940 -107248940:lI121|H107248BC0 -107248BC0:lI45|H107248E30 -107248E30:lI49|H1072490A0 -1072490A0:lI46|H107249310 -107249310:lI49|H107249570 -107249570:lI52|H1072497D0 -1072497D0:lI47|H280052C20 -1071FEA88:lH107201C18|H107201C30 -107201C18:t2:H107204E00,H107204E10 -107204E10:Mf6:H1072080A0:N,N,N,N,N,N -1072080A0:t6:H10720B318,H10720B328,H10720B338,H10720B348,H10720B358,H10720B368 -10720B368:lI121|H10720E558 -10720E558:lI101|H1072116E8 -1072116E8:lI99|H107214938 -107214938:lI99|H107217CC0 -107217CC0:lI115|H10721B1B0 -10721B1B0:lI99|H10721E700 -10721E700:lI97|H107221BC0 -107221BC0:lI110|H107224D68 -107224D68:lI46|H107227BC0 -107227BC0:lI98|H10722A618 -10722A618:lI101|H10722CD50 -10722CD50:lI97|H10722F238 -10722F238:lI109|N -10720B358:lI121|H10720E548 -10720E548:lI101|H1072116D8 -1072116D8:lI99|H107214928 -107214928:lI99|H107217CB0 -107217CB0:lI112|H10721B1A0 -10721B1A0:lI97|H10721E6F0 -10721E6F0:lI114|H107221BB0 -107221BB0:lI115|H107224D58 -107224D58:lI101|H107227BB0 -107227BB0:lI114|H10722A608 -10722A608:lI46|H10722CD40 -10722CD40:lI98|H10722F228 -10722F228:lI101|H107231410 -107231410:lI97|H1072332A8 -1072332A8:lI109|N -10720B348:lI121|H10720E538 -10720E538:lI101|H1072116C8 -1072116C8:lI99|H107214918 -107214918:lI99|H107217CA0 -107217CA0:lI46|H10721B190 -10721B190:lI98|H10721E6E0 -10721E6E0:lI101|H107221BA0 -107221BA0:lI97|H107224D48 -107224D48:lI109|N -10720B338:lI112|H10720E528 -10720E528:lI97|H1072116B8 -1072116B8:lI114|H107214908 -107214908:lI115|H107217C90 -107217C90:lI101|H10721B180 -10721B180:lI116|H10721E6D0 -10721E6D0:lI111|H107221B90 -107221B90:lI111|H107224D38 -107224D38:lI108|H107227BA0 -107227BA0:lI115|H10722A5F8 -10722A5F8:lI46|H10722CD30 -10722CD30:lI97|H10722F218 -10722F218:lI112|H107231400 -107231400:lI112|H107233298 -107233298:lI117|H107234E80 -107234E80:lI112|N -10720B328:lI112|H10720E518 -10720E518:lI97|H1072116A8 -1072116A8:lI114|H1072148F8 -1072148F8:lI115|H107217C80 -107217C80:lI101|H10721B170 -10721B170:lI116|H10721E6C0 -10721E6C0:lI111|H107221B80 -107221B80:lI111|H107224D28 -107224D28:lI108|H107227B90 -107227B90:lI115|H10722A5E8 -10722A5E8:lI46|H10722CD20 -10722CD20:lI97|H10722F208 -10722F208:lI112|H1072313F0 -1072313F0:lI112|N -10720B318:lI108|H10720E508 -10720E508:lI101|H107211698 -107211698:lI101|H1072148E8 -1072148E8:lI120|H107217C70 -107217C70:lI46|H10721B160 -10721B160:lI98|H10721E6B0 -10721E6B0:lI101|H107221B70 -107221B70:lI97|H107224D18 -107224D18:lI109|N -107204E00:lI47|H107208090 -107208090:lI111|H10720B308 -10720B308:lI112|H10720E4F8 -10720E4F8:lI116|H107211688 -107211688:lI47|H1072148D8 -1072148D8:lI104|H107217C60 -107217C60:lI111|H10721B150 -10721B150:lI109|H10721E6A0 -10721E6A0:lI101|H107221B60 -107221B60:lI98|H107224D08 -107224D08:lI114|H107227B80 -107227B80:lI101|H10722A5D8 -10722A5D8:lI119|H10722CD10 -10722CD10:lI47|H10722F1F8 -10722F1F8:lI67|H1072313E0 -1072313E0:lI101|H107233288 -107233288:lI108|H107234E70 -107234E70:lI108|H1072367F8 -1072367F8:lI97|H107237F30 -107237F30:lI114|H107239468 -107239468:lI47|H10723A890 -10723A890:lI101|H10723BAB0 -10723BAB0:lI114|H10723CAC0 -10723CAC0:lI108|H10723D920 -10723D920:lI97|H10723E610 -10723E610:lI110|H10723F1F0 -10723F1F0:lI103|H10723FC80 -10723FC80:lI47|H1072405C0 -1072405C0:lI50|H107240E30 -107240E30:lI54|H1072415C0 -1072415C0:lI46|H107241CE0 -107241CE0:lI48|H1072423A0 -1072423A0:lI46|H107242A00 -107242A00:lI50|H107242FE0 -107242FE0:lI47|H107243550 -107243550:lI108|H107243A90 -107243A90:lI105|H107243F80 -107243F80:lI98|H107244470 -107244470:lI47|H107244920 -107244920:lI101|H107244D90 -107244D90:lI114|H1072451F0 -1072451F0:lI108|H107245640 -107245640:lI97|H107245A40 -107245A40:lI110|H107245DF0 -107245DF0:lI103|H107246180 -107246180:lI47|H107246510 -107246510:lI108|H1072468A0 -1072468A0:lI105|H107246C30 -107246C30:lI98|H107246F60 -107246F60:lI47|H107247280 -107247280:lI112|H107247590 -107247590:lI97|H107247890 -107247890:lI114|H107247B90 -107247B90:lI115|H107247E70 -107247E70:lI101|H107248130 -107248130:lI116|H1072483F0 -1072483F0:lI111|H1072486A0 -1072486A0:lI111|H107248950 -107248950:lI108|H107248BD0 -107248BD0:lI115|H107248E40 -107248E40:lI45|H1072490B0 -1072490B0:lI50|H107249320 -107249320:lI46|H107249580 -107249580:lI53|H1072497E0 -1072497E0:lI47|H280052C20 -107201C30:lH107204E58|H107204E70 -107204E58:t2:H1072080D8,H1072080E8 -1072080E8:MfA:H10720B388:N,N,N,N,N,N,N,N,N,N -10720B388:tA:H10720E578,H10720E588,H10720E598,H10720E5A8,H10720E5B8,H10720E5C8,H10720E5D8,H10720E5E8,H10720E5F8,H10720E608 -10720E608:lI111|H107211798 -107211798:lI115|H1072149E8 -1072149E8:lI95|H107217D70 -107217D70:lI115|H10721B260 -10721B260:lI117|H10721E7B0 -10721E7B0:lI112|H107221C70 -107221C70:lI46|H107224E18 -107224E18:lI98|H107227C70 -107227C70:lI101|H10722A6C8 -10722A6C8:lI97|H10722CDF0 -10722CDF0:lI109|N -10720E5F8:lI111|H107211788 -107211788:lI115|H1072149D8 -1072149D8:lI95|H107217D60 -107217D60:lI109|H10721B250 -10721B250:lI111|H10721E7A0 -10721E7A0:lI110|H107221C60 -107221C60:lI95|H107224E08 -107224E08:lI115|H107227C60 -107227C60:lI121|H10722A6B8 -10722A6B8:lI115|H10722CDE0 -10722CDE0:lI105|H10722F2A8 -10722F2A8:lI110|H107231450 -107231450:lI102|H1072332E8 -1072332E8:lI111|H107234EC0 -107234EC0:lI46|H107236818 -107236818:lI98|H107237F50 -107237F50:lI101|H107239488 -107239488:lI97|H10723A8B0 -10723A8B0:lI109|N -10720E5E8:lI111|H107211778 -107211778:lI115|H1072149C8 -1072149C8:lI95|H107217D50 -107217D50:lI109|H10721B240 -10721B240:lI111|H10721E790 -10721E790:lI110|H107221C50 -107221C50:lI95|H107224DF8 -107224DF8:lI109|H107227C50 -107227C50:lI105|H10722A6A8 -10722A6A8:lI98|H10722CDD0 -10722CDD0:lI46|H10722F298 -10722F298:lI98|H107231440 -107231440:lI101|H1072332D8 -1072332D8:lI97|H107234EB0 -107234EB0:lI109|N -10720E5D8:lI111|H107211768 -107211768:lI115|H1072149B8 -1072149B8:lI95|H107217D40 -107217D40:lI109|H10721B230 -10721B230:lI111|H10721E780 -10721E780:lI110|H107221C40 -107221C40:lI46|H107224DE8 -107224DE8:lI98|H107227C40 -107227C40:lI101|H10722A698 -10722A698:lI97|H10722CDC0 -10722CDC0:lI109|N -10720E5C8:lI111|H107211758 -107211758:lI115|H1072149A8 -1072149A8:lI95|H107217D30 -107217D30:lI109|H10721B220 -10721B220:lI111|H10721E770 -10721E770:lI110|H107221C30 -107221C30:lI46|H107224DD8 -107224DD8:lI97|H107227C30 -107227C30:lI112|H10722A688 -10722A688:lI112|H10722CDB0 -10722CDB0:lI117|H10722F288 -10722F288:lI112|N -10720E5B8:lI111|H107211748 -107211748:lI115|H107214998 -107214998:lI95|H107217D20 -107217D20:lI109|H10721B210 -10721B210:lI111|H10721E760 -10721E760:lI110|H107221C20 -107221C20:lI46|H107224DC8 -107224DC8:lI97|H107227C20 -107227C20:lI112|H10722A678 -10722A678:lI112|N -10720E5A8:lI110|H107211738 -107211738:lI116|H107214988 -107214988:lI101|H107217D10 -107217D10:lI118|H10721B200 -10721B200:lI101|H10721E750 -10721E750:lI110|H107221C10 -107221C10:lI116|H107224DB8 -107224DB8:lI108|H107227C10 -107227C10:lI111|H10722A668 -10722A668:lI103|H10722CDA0 -10722CDA0:lI46|H10722F278 -10722F278:lI98|H107231430 -107231430:lI101|H1072332C8 -1072332C8:lI97|H107234EA0 -107234EA0:lI109|N -10720E598:lI109|H107211728 -107211728:lI101|H107214978 -107214978:lI109|H107217D00 -107217D00:lI115|H10721B1F0 -10721B1F0:lI117|H10721E740 -10721E740:lI112|H107221C00 -107221C00:lI46|H107224DA8 -107224DA8:lI98|H107227C00 -107227C00:lI101|H10722A658 -10722A658:lI97|H10722CD90 -10722CD90:lI109|N -10720E588:lI100|H107211718 -107211718:lI105|H107214968 -107214968:lI115|H107217CF0 -107217CF0:lI107|H10721B1E0 -10721B1E0:lI115|H10721E730 -10721E730:lI117|H107221BF0 -107221BF0:lI112|H107224D98 -107224D98:lI46|H107227BF0 -107227BF0:lI98|H10722A648 -10722A648:lI101|H10722CD80 -10722CD80:lI97|H10722F268 -10722F268:lI109|N -10720E578:lI99|H107211708 -107211708:lI112|H107214958 -107214958:lI117|H107217CE0 -107217CE0:lI95|H10721B1D0 -10721B1D0:lI115|H10721E720 -10721E720:lI117|H107221BE0 -107221BE0:lI112|H107224D88 -107224D88:lI46|H107227BE0 -107227BE0:lI98|H10722A638 -10722A638:lI101|H10722CD70 -10722CD70:lI97|H10722F258 -10722F258:lI109|N -1072080D8:lI47|H10720B378 -10720B378:lI111|H10720E568 -10720E568:lI112|H1072116F8 -1072116F8:lI116|H107214948 -107214948:lI47|H107217CD0 -107217CD0:lI104|H10721B1C0 -10721B1C0:lI111|H10721E710 -10721E710:lI109|H107221BD0 -107221BD0:lI101|H107224D78 -107224D78:lI98|H107227BD0 -107227BD0:lI114|H10722A628 -10722A628:lI101|H10722CD60 -10722CD60:lI119|H10722F248 -10722F248:lI47|H107231420 -107231420:lI67|H1072332B8 -1072332B8:lI101|H107234E90 -107234E90:lI108|H107236808 -107236808:lI108|H107237F40 -107237F40:lI97|H107239478 -107239478:lI114|H10723A8A0 -10723A8A0:lI47|H10723BAC0 -10723BAC0:lI101|H10723CAD0 -10723CAD0:lI114|H10723D930 -10723D930:lI108|H10723E620 -10723E620:lI97|H10723F200 -10723F200:lI110|H10723FC90 -10723FC90:lI103|H1072405D0 -1072405D0:lI47|H107240E40 -107240E40:lI50|H1072415D0 -1072415D0:lI54|H107241CF0 -107241CF0:lI46|H1072423B0 -1072423B0:lI48|H107242A10 -107242A10:lI46|H107242FF0 -107242FF0:lI50|H107243560 -107243560:lI47|H107243AA0 -107243AA0:lI108|H107243F90 -107243F90:lI105|H107244480 -107244480:lI98|H107244930 -107244930:lI47|H107244DA0 -107244DA0:lI101|H107245200 -107245200:lI114|H107245650 -107245650:lI108|H107245A50 -107245A50:lI97|H107245E00 -107245E00:lI110|H107246190 -107246190:lI103|H107246520 -107246520:lI47|H1072468B0 -1072468B0:lI108|H107246C40 -107246C40:lI105|H107246F70 -107246F70:lI98|H107247290 -107247290:lI47|H1072475A0 -1072475A0:lI111|H1072478A0 -1072478A0:lI115|H107247BA0 -107247BA0:lI95|H107247E80 -107247E80:lI109|H107248140 -107248140:lI111|H107248400 -107248400:lI110|H1072486B0 -1072486B0:lI45|H107248960 -107248960:lI50|H107248BE0 -107248BE0:lI46|H107248E50 -107248E50:lI57|H1072490C0 -1072490C0:lI47|H280052C20 -107204E70:lH107208150|H107208168 -107208150:t2:H10720B3E0,H10720B3F0 -10720B3F0:Mf5:H10720E628:N,N,N,N,N -10720E628:t5:H1072117B8,H1072117C8,H1072117D8,H1072117E8,H1072117F8 -1072117F8:lI111|H107214A48 -107214A48:lI100|H107217DD0 -107217DD0:lI98|H10721B2C0 -10721B2C0:lI99|H10721E810 -10721E810:lI95|H107221CD0 -107221CD0:lI115|H107224E78 -107224E78:lI117|H107227CD0 -107227CD0:lI112|H10722A718 -10722A718:lI46|H10722CE30 -10722CE30:lI98|H10722F2D8 -10722F2D8:lI101|H107231480 -107231480:lI97|H107233318 -107233318:lI109|N -1072117E8:lI111|H107214A38 -107214A38:lI100|H107217DC0 -107217DC0:lI98|H10721B2B0 -10721B2B0:lI99|H10721E800 -10721E800:lI95|H107221CC0 -107221CC0:lI97|H107224E68 -107224E68:lI112|H107227CC0 -107227CC0:lI112|H10722A708 -10722A708:lI46|H10722CE20 -10722CE20:lI98|H10722F2C8 -10722F2C8:lI101|H107231470 -107231470:lI97|H107233308 -107233308:lI109|N -1072117D8:lI111|H107214A28 -107214A28:lI100|H107217DB0 -107217DB0:lI98|H10721B2A0 -10721B2A0:lI99|H10721E7F0 -10721E7F0:lI46|H107221CB0 -107221CB0:lI98|H107224E58 -107224E58:lI101|H107227CB0 -107227CB0:lI97|H10722A6F8 -10722A6F8:lI109|N -1072117C8:lI111|H107214A18 -107214A18:lI100|H107217DA0 -107217DA0:lI98|H10721B290 -10721B290:lI99|H10721E7E0 -10721E7E0:lI46|H107221CA0 -107221CA0:lI97|H107224E48 -107224E48:lI112|H107227CA0 -107227CA0:lI112|H10722A6E8 -10722A6E8:lI117|H10722CE10 -10722CE10:lI112|N -1072117B8:lI111|H107214A08 -107214A08:lI100|H107217D90 -107217D90:lI98|H10721B280 -10721B280:lI99|H10721E7D0 -10721E7D0:lI46|H107221C90 -107221C90:lI97|H107224E38 -107224E38:lI112|H107227C90 -107227C90:lI112|N -10720B3E0:lI47|H10720E618 -10720E618:lI111|H1072117A8 -1072117A8:lI112|H1072149F8 -1072149F8:lI116|H107217D80 -107217D80:lI47|H10721B270 -10721B270:lI104|H10721E7C0 -10721E7C0:lI111|H107221C80 -107221C80:lI109|H107224E28 -107224E28:lI101|H107227C80 -107227C80:lI98|H10722A6D8 -10722A6D8:lI114|H10722CE00 -10722CE00:lI101|H10722F2B8 -10722F2B8:lI119|H107231460 -107231460:lI47|H1072332F8 -1072332F8:lI67|H107234ED0 -107234ED0:lI101|H107236828 -107236828:lI108|H107237F60 -107237F60:lI108|H107239498 -107239498:lI97|H10723A8C0 -10723A8C0:lI114|H10723BAD0 -10723BAD0:lI47|H10723CAE0 -10723CAE0:lI101|H10723D940 -10723D940:lI114|H10723E630 -10723E630:lI108|H10723F210 -10723F210:lI97|H10723FCA0 -10723FCA0:lI110|H1072405E0 -1072405E0:lI103|H107240E50 -107240E50:lI47|H1072415E0 -1072415E0:lI50|H107241D00 -107241D00:lI54|H1072423C0 -1072423C0:lI46|H107242A20 -107242A20:lI48|H107243000 -107243000:lI46|H107243570 -107243570:lI50|H107243AB0 -107243AB0:lI47|H107243FA0 -107243FA0:lI108|H107244490 -107244490:lI105|H107244940 -107244940:lI98|H107244DB0 -107244DB0:lI47|H107245210 -107245210:lI101|H107245660 -107245660:lI114|H107245A60 -107245A60:lI108|H107245E10 -107245E10:lI97|H1072461A0 -1072461A0:lI110|H107246530 -107246530:lI103|H1072468C0 -1072468C0:lI47|H107246C50 -107246C50:lI108|H107246F80 -107246F80:lI105|H1072472A0 -1072472A0:lI98|H1072475B0 -1072475B0:lI47|H1072478B0 -1072478B0:lI111|H107247BB0 -107247BB0:lI100|H107247E90 -107247E90:lI98|H107248150 -107248150:lI99|H107248410 -107248410:lI45|H1072486C0 -1072486C0:lI50|H107248970 -107248970:lI46|H107248BF0 -107248BF0:lI49|H107248E60 -107248E60:lI52|H1072490D0 -1072490D0:lI46|H107249330 -107249330:lI49|H107249590 -107249590:lI47|H280052C20 -107208168:lH10720B430|H10720B448 -10720B430:t2:H10720E658,H10720E668 -10720E668:Mh2E:F:H107211818,H107211830,H107211848,H107211878,H107211890,H1072118B0,H1072118C0,H107211900,H107211918,H107211930,H107211940,H107211958,H107211988,H1072119A8,H1072119C0 -107211818:Mn2:H107214A68,H107214A78 -107214A68:lH107217DF0|N -107217DF0:lI99|H10721B2E0 -10721B2E0:lI100|H10721E830 -10721E830:lI118|H107221CF0 -107221CF0:lI95|H107224E98 -107224E98:lI112|H107227CF0 -107227CF0:lI111|H10722A738 -10722A738:lI114|H10722CE50 -10722CE50:lI116|H10722F2F8 -10722F2F8:lI95|H1072314A0 -1072314A0:lI99|H107233338 -107233338:lI98|H107234EF0 -107234EF0:lI46|H107236848 -107236848:lI98|H107237F80 -107237F80:lI101|H1072394B8 -1072394B8:lI97|H10723A8E0 -10723A8E0:lI109|N -107214A78:lH107217E00|N -107217E00:lI99|H10721B2F0 -10721B2F0:lI100|H10721E840 -10721E840:lI118|H107221D00 -107221D00:lI95|H107224EA8 -107224EA8:lI109|H107227D00 -107227D00:lI111|H10722A748 -10722A748:lI100|H10722CE60 -10722CE60:lI95|H10722F308 -10722F308:lI99|H1072314B0 -1072314B0:lI98|H107233348 -107233348:lI46|H107234F00 -107234F00:lI98|H107236858 -107236858:lI101|H107237F90 -107237F90:lI97|H1072394C8 -1072394C8:lI109|N -1072119C0:Mn2:H107214CF0,H107214D10 -107214CF0:Mn3:H107218090,H1072180A0,H1072180B0 -107218090:lH10721B580|N -10721B580:lI99|H10721EAD0 -10721EAD0:lI100|H107221F90 -107221F90:lI118|H107225138 -107225138:lI95|H107227F90 -107227F90:lI112|H10722A9D8 -10722A9D8:lI101|H10722D0F0 -10722D0F0:lI114|H10722F588 -10722F588:lI115|H107231720 -107231720:lI105|H1072335B8 -1072335B8:lI115|H107235150 -107235150:lI116|H107236A98 -107236A98:lI101|H1072381A0 -1072381A0:lI110|H1072396B8 -1072396B8:lI116|H10723AA90 -10723AA90:lI95|H10723BC30 -10723BC30:lI99|H10723CC00 -10723CC00:lI98|H10723DA40 -10723DA40:lI46|H10723E720 -10723E720:lI98|H10723F2D0 -10723F2D0:lI101|H10723FD30 -10723FD30:lI97|H107240630 -107240630:lI109|N -1072180B0:lH10721B5A0|N -10721B5A0:lI111|H10721EAF0 -10721EAF0:lI98|H107221FB0 -107221FB0:lI115|H107225158 -107225158:lI101|H107227FB0 -107227FB0:lI114|H10722A9F8 -10722A9F8:lI118|H10722D110 -10722D110:lI101|H10722F5A8 -10722F5A8:lI114|H107231740 -107231740:lI95|H1072335D8 -1072335D8:lI97|H107235170 -107235170:lI108|H107236AB8 -107236AB8:lI108|H1072381C0 -1072381C0:lI111|H1072396D8 -1072396D8:lI99|H10723AAB0 -10723AAB0:lI95|H10723BC50 -10723BC50:lI119|H10723CC20 -10723CC20:lI120|H10723DA50 -10723DA50:lI46|H10723E730 -10723E730:lI98|H10723F2E0 -10723F2E0:lI101|H10723FD40 -10723FD40:lI97|H107240640 -107240640:lI109|N -1072180A0:lH10721B590|N -10721B590:lI99|H10721EAE0 -10721EAE0:lI100|H107221FA0 -107221FA0:lI118|H107225148 -107225148:lI95|H107227FA0 -107227FA0:lI109|H10722A9E8 -10722A9E8:lI117|H10722D100 -10722D100:lI108|H10722F598 -10722F598:lI116|H107231730 -107231730:lI105|H1072335C8 -1072335C8:lI95|H107235160 -107235160:lI119|H107236AA8 -107236AA8:lI120|H1072381B0 -1072381B0:lI46|H1072396C8 -1072396C8:lI98|H10723AAA0 -10723AAA0:lI101|H10723BC40 -10723BC40:lI97|H10723CC10 -10723CC10:lI109|N -107214D10:lH1072180C0|N -1072180C0:lI111|H10721B5B0 -10721B5B0:lI98|H10721EB00 -10721EB00:lI115|H107221FC0 -107221FC0:lI101|H107225168 -107225168:lI114|H107227FC0 -107227FC0:lI118|H10722AA08 -10722AA08:lI101|H10722D120 -10722D120:lI114|H10722F5B8 -10722F5B8:lI95|H107231750 -107231750:lI116|H1072335E8 -1072335E8:lI118|H107235180 -107235180:lI95|H107236AC8 -107236AC8:lI119|H1072381D0 -1072381D0:lI120|H1072396E8 -1072396E8:lI46|H10723AAC0 -10723AAC0:lI98|H10723BC60 -10723BC60:lI101|H10723CC30 -10723CC30:lI97|H10723DA60 -10723DA60:lI109|N -1072119A8:Mn2:H107214CD0,H107214CE0 -107214CD0:lH107218070|N -107218070:lI111|H10721B560 -10721B560:lI98|H10721EAB0 -10721EAB0:lI115|H107221F70 -107221F70:lI101|H107225118 -107225118:lI114|H107227F70 -107227F70:lI118|H10722A9B8 -10722A9B8:lI101|H10722D0D0 -10722D0D0:lI114|H10722F568 -10722F568:lI95|H107231700 -107231700:lI104|H107233598 -107233598:lI116|H107235130 -107235130:lI109|H107236A78 -107236A78:lI108|H107238180 -107238180:lI95|H107239698 -107239698:lI108|H10723AA80 -10723AA80:lI105|H10723BC20 -10723BC20:lI98|H10723CBF0 -10723CBF0:lI46|H10723DA30 -10723DA30:lI98|H10723E710 -10723E710:lI101|H10723F2C0 -10723F2C0:lI97|H10723FD20 -10723FD20:lI109|N -107214CE0:lH107218080|N -107218080:lI99|H10721B570 -10721B570:lI100|H10721EAC0 -10721EAC0:lI118|H107221F80 -107221F80:lI95|H107225128 -107225128:lI103|H107227F80 -107227F80:lI101|H10722A9C8 -10722A9C8:lI110|H10722D0E0 -10722D0E0:lI95|H10722F578 -10722F578:lI99|H107231710 -107231710:lI98|H1072335A8 -1072335A8:lI46|H107235140 -107235140:lI98|H107236A88 -107236A88:lI101|H107238190 -107238190:lI97|H1072396A8 -1072396A8:lI109|N -107211988:Mn3:H107214C98,H107214CA8,H107214CB8 -107214C98:lH107218030|N -107218030:lI111|H10721B520 -10721B520:lI98|H10721EA70 -10721EA70:lI115|H107221F30 -107221F30:lI101|H1072250D8 -1072250D8:lI114|H107227F30 -107227F30:lI118|H10722A978 -10722A978:lI101|H10722D090 -10722D090:lI114|H10722F528 -10722F528:lI46|H1072316C0 -1072316C0:lI98|H107233558 -107233558:lI101|H1072350F0 -1072350F0:lI97|H107236A38 -107236A38:lI109|N -107214CB8:Mn2:H107218050,H107218060 -107218050:lH10721B540|N -10721B540:lI111|H10721EA90 -10721EA90:lI98|H107221F50 -107221F50:lI115|H1072250F8 -1072250F8:lI101|H107227F50 -107227F50:lI114|H10722A998 -10722A998:lI118|H10722D0B0 -10722D0B0:lI101|H10722F548 -10722F548:lI114|H1072316E0 -1072316E0:lI95|H107233578 -107233578:lI116|H107235110 -107235110:lI114|H107236A58 -107236A58:lI97|H107238170 -107238170:lI99|H107239688 -107239688:lI101|H10723AA70 -10723AA70:lI111|H10723BC10 -10723BC10:lI112|H10723CBE0 -10723CBE0:lI116|H10723DA20 -10723DA20:lI105|H10723E700 -10723E700:lI111|H10723F2B0 -10723F2B0:lI110|H10723FD10 -10723FD10:lI115|H107240620 -107240620:lI95|H107240E80 -107240E80:lI119|H107241600 -107241600:lI120|H107241D20 -107241D20:lI46|H1072423E0 -1072423E0:lI98|H107242A40 -107242A40:lI101|H107243020 -107243020:lI97|H107243590 -107243590:lI109|N -107218060:lH10721B550|N -10721B550:lI111|H10721EAA0 -10721EAA0:lI98|H107221F60 -107221F60:lI115|H107225108 -107225108:lI101|H107227F60 -107227F60:lI114|H10722A9A8 -10722A9A8:lI118|H10722D0C0 -10722D0C0:lI101|H10722F558 -10722F558:lI114|H1072316F0 -1072316F0:lI46|H107233588 -107233588:lI97|H107235120 -107235120:lI112|H107236A68 -107236A68:lI112|N -107214CA8:lH107218040|N -107218040:lI101|H10721B530 -10721B530:lI116|H10721EA80 -10721EA80:lI111|H107221F40 -107221F40:lI112|H1072250E8 -1072250E8:lI95|H107227F40 -107227F40:lI116|H10722A988 -10722A988:lI120|H10722D0A0 -10722D0A0:lI116|H10722F538 -10722F538:lI46|H1072316D0 -1072316D0:lI98|H107233568 -107233568:lI101|H107235100 -107235100:lI97|H107236A48 -107236A48:lI109|N -107211958:Mn5:H107214C48,H107214C58,H107214C68,H107214C78,H107214C88 -107214C48:lH107217FE0|N -107217FE0:lI99|H10721B4D0 -10721B4D0:lI100|H10721EA20 -10721EA20:lI118|H107221EE0 -107221EE0:lI95|H107225088 -107225088:lI112|H107227EE0 -107227EE0:lI114|H10722A928 -10722A928:lI111|H10722D040 -10722D040:lI99|H10722F4D8 -10722F4D8:lI95|H107231680 -107231680:lI99|H107233518 -107233518:lI98|H1072350B0 -1072350B0:lI46|H1072369F8 -1072369F8:lI98|H107238130 -107238130:lI101|H107239648 -107239648:lI97|H10723AA30 -10723AA30:lI109|N -107214C88:lH107218020|N -107218020:lI111|H10721B510 -10721B510:lI98|H10721EA60 -10721EA60:lI115|H107221F20 -107221F20:lI101|H1072250C8 -1072250C8:lI114|H107227F20 -107227F20:lI118|H10722A968 -10722A968:lI101|H10722D080 -10722D080:lI114|H10722F518 -10722F518:lI95|H1072316B0 -1072316B0:lI116|H107233548 -107233548:lI118|H1072350E0 -1072350E0:lI95|H107236A28 -107236A28:lI116|H107238160 -107238160:lI97|H107239678 -107239678:lI98|H10723AA60 -10723AA60:lI108|H10723BC00 -10723BC00:lI101|H10723CBD0 -10723CBD0:lI46|H10723DA10 -10723DA10:lI98|H10723E6F0 -10723E6F0:lI101|H10723F2A0 -10723F2A0:lI97|H10723FD00 -10723FD00:lI109|N -107214C78:lH107218010|N -107218010:lI111|H10721B500 -10721B500:lI98|H10721EA50 -10721EA50:lI115|H107221F10 -107221F10:lI101|H1072250B8 -1072250B8:lI114|H107227F10 -107227F10:lI118|H10722A958 -10722A958:lI101|H10722D070 -10722D070:lI114|H10722F508 -10722F508:lI95|H1072316A0 -1072316A0:lI115|H107233538 -107233538:lI121|H1072350D0 -1072350D0:lI115|H107236A18 -107236A18:lI95|H107238150 -107238150:lI119|H107239668 -107239668:lI120|H10723AA50 -10723AA50:lI46|H10723BBF0 -10723BBF0:lI98|H10723CBC0 -10723CBC0:lI101|H10723DA00 -10723DA00:lI97|H10723E6E0 -10723E6E0:lI109|N -107214C68:lH107218000|N -107218000:lI99|H10721B4F0 -10721B4F0:lI100|H10721EA40 -10721EA40:lI118|H107221F00 -107221F00:lI95|H1072250A8 -1072250A8:lI118|H107227F00 -107227F00:lI105|H10722A948 -10722A948:lI114|H10722D060 -10722D060:lI116|H10722F4F8 -10722F4F8:lI117|H107231690 -107231690:lI97|H107233528 -107233528:lI108|H1072350C0 -1072350C0:lI95|H107236A08 -107236A08:lI108|H107238140 -107238140:lI105|H107239658 -107239658:lI115|H10723AA40 -10723AA40:lI116|H10723BBE0 -10723BBE0:lI95|H10723CBB0 -10723CBB0:lI119|H10723D9F0 -10723D9F0:lI120|H10723E6D0 -10723E6D0:lI46|H10723F290 -10723F290:lI98|H10723FCF0 -10723FCF0:lI101|H107240610 -107240610:lI97|H107240E70 -107240E70:lI109|N -107214C58:lH107217FF0|N -107217FF0:lI101|H10721B4E0 -10721B4E0:lI116|H10721EA30 -10721EA30:lI111|H107221EF0 -107221EF0:lI112|H107225098 -107225098:lI46|H107227EF0 -107227EF0:lI98|H10722A938 -10722A938:lI101|H10722D050 -10722D050:lI97|H10722F4E8 -10722F4E8:lI109|N -107211940:Mn2:H107214C20,H107214C38 -107214C20:Mn2:H107217FB0,H107217FC0 -107217FB0:lH10721B4A0|N -10721B4A0:lI111|H10721E9F0 -10721E9F0:lI98|H107221EB0 -107221EB0:lI115|H107225058 -107225058:lI101|H107227EB0 -107227EB0:lI114|H10722A8F8 -10722A8F8:lI118|H10722D010 -10722D010:lI101|H10722F4A8 -10722F4A8:lI114|H107231650 -107231650:lI95|H1072334E8 -1072334E8:lI119|H107235080 -107235080:lI120|H1072369C8 -1072369C8:lI46|H107238100 -107238100:lI98|H107239618 -107239618:lI101|H10723AA00 -10723AA00:lI97|H10723BBB0 -10723BBB0:lI109|N -107217FC0:lH10721B4B0|N -10721B4B0:lI99|H10721EA00 -10721EA00:lI100|H107221EC0 -107221EC0:lI118|H107225068 -107225068:lI95|H107227EC0 -107227EC0:lI116|H10722A908 -10722A908:lI97|H10722D020 -10722D020:lI98|H10722F4B8 -10722F4B8:lI108|H107231660 -107231660:lI101|H1072334F8 -1072334F8:lI95|H107235090 -107235090:lI119|H1072369D8 -1072369D8:lI120|H107238110 -107238110:lI46|H107239628 -107239628:lI98|H10723AA10 -10723AA10:lI101|H10723BBC0 -10723BBC0:lI97|H10723CB90 -10723CB90:lI109|N -107214C38:lH107217FD0|N -107217FD0:lI111|H10721B4C0 -10721B4C0:lI98|H10721EA10 -10721EA10:lI115|H107221ED0 -107221ED0:lI101|H107225078 -107225078:lI114|H107227ED0 -107227ED0:lI118|H10722A918 -10722A918:lI101|H10722D030 -10722D030:lI114|H10722F4C8 -10722F4C8:lI95|H107231670 -107231670:lI116|H107233508 -107233508:lI114|H1072350A0 -1072350A0:lI97|H1072369E8 -1072369E8:lI99|H107238120 -107238120:lI101|H107239638 -107239638:lI95|H10723AA20 -10723AA20:lI119|H10723BBD0 -10723BBD0:lI120|H10723CBA0 -10723CBA0:lI46|H10723D9E0 -10723D9E0:lI98|H10723E6C0 -10723E6C0:lI101|H10723F280 -10723F280:lI97|H10723FCE0 -10723FCE0:lI109|N -107211930:Mn1:H107214C08 -107214C08:Mn2:H107217F90,H107217FA0 -107217F90:lH10721B480|N -10721B480:lI111|H10721E9D0 -10721E9D0:lI98|H107221E90 -107221E90:lI115|H107225038 -107225038:lI101|H107227E90 -107227E90:lI114|H10722A8D8 -10722A8D8:lI118|H10722CFF0 -10722CFF0:lI101|H10722F488 -10722F488:lI114|H107231630 -107231630:lI95|H1072334C8 -1072334C8:lI112|H107235060 -107235060:lI114|H1072369A8 -1072369A8:lI111|H1072380E0 -1072380E0:lI99|H1072395F8 -1072395F8:lI105|H10723A9E0 -10723A9E0:lI110|H10723BB90 -10723BB90:lI102|H10723CB70 -10723CB70:lI111|H10723D9C0 -10723D9C0:lI46|H10723E6A0 -10723E6A0:lI98|H10723F260 -10723F260:lI101|H10723FCC0 -10723FCC0:lI97|H107240600 -107240600:lI109|N -107217FA0:lH10721B490|N -10721B490:lI111|H10721E9E0 -10721E9E0:lI98|H107221EA0 -107221EA0:lI115|H107225048 -107225048:lI101|H107227EA0 -107227EA0:lI114|H10722A8E8 -10722A8E8:lI118|H10722D000 -10722D000:lI101|H10722F498 -10722F498:lI114|H107231640 -107231640:lI95|H1072334D8 -1072334D8:lI112|H107235070 -107235070:lI101|H1072369B8 -1072369B8:lI114|H1072380F0 -1072380F0:lI102|H107239608 -107239608:lI95|H10723A9F0 -10723A9F0:lI119|H10723BBA0 -10723BBA0:lI120|H10723CB80 -10723CB80:lI46|H10723D9D0 -10723D9D0:lI98|H10723E6B0 -10723E6B0:lI101|H10723F270 -10723F270:lI97|H10723FCD0 -10723FCD0:lI109|N -107211918:Mn2:H107214BE8,H107214BF8 -107214BE8:lH107217F70|N -107217F70:lI111|H10721B460 -10721B460:lI98|H10721E9B0 -10721E9B0:lI115|H107221E70 -107221E70:lI101|H107225018 -107225018:lI114|H107227E70 -107227E70:lI118|H10722A8B8 -10722A8B8:lI101|H10722CFD0 -10722CFD0:lI114|H10722F468 -10722F468:lI95|H107231610 -107231610:lI112|H1072334A8 -1072334A8:lI114|H107235040 -107235040:lI111|H107236988 -107236988:lI95|H1072380C0 -1072380C0:lI119|H1072395D8 -1072395D8:lI120|H10723A9C0 -10723A9C0:lI46|H10723BB80 -10723BB80:lI98|H10723CB60 -10723CB60:lI101|H10723D9B0 -10723D9B0:lI97|H10723E690 -10723E690:lI109|N -107214BF8:lH107217F80|N -107217F80:lI99|H10721B470 -10721B470:lI100|H10721E9C0 -10721E9C0:lI118|H107221E80 -107221E80:lI95|H107225028 -107225028:lI100|H107227E80 -107227E80:lI105|H10722A8C8 -10722A8C8:lI115|H10722CFE0 -10722CFE0:lI116|H10722F478 -10722F478:lI95|H107231620 -107231620:lI99|H1072334B8 -1072334B8:lI98|H107235050 -107235050:lI46|H107236998 -107236998:lI98|H1072380D0 -1072380D0:lI101|H1072395E8 -1072395E8:lI97|H10723A9D0 -10723A9D0:lI109|N -107211900:Mn2:H107214BC8,H107214BD8 -107214BC8:lH107217F50|N -107217F50:lI116|H10721B440 -10721B440:lI116|H10721E990 -10721E990:lI98|H107221E50 -107221E50:lI46|H107224FF8 -107224FF8:lI98|H107227E50 -107227E50:lI101|H10722A898 -10722A898:lI97|H10722CFB0 -10722CFB0:lI109|N -107214BD8:lH107217F60|N -107217F60:lI111|H10721B450 -10721B450:lI98|H10721E9A0 -10721E9A0:lI115|H107221E60 -107221E60:lI101|H107225008 -107225008:lI114|H107227E60 -107227E60:lI118|H10722A8A8 -10722A8A8:lI101|H10722CFC0 -10722CFC0:lI114|H10722F458 -10722F458:lI95|H107231600 -107231600:lI115|H107233498 -107233498:lI111|H107235030 -107235030:lI99|H107236978 -107236978:lI107|H1072380B0 -1072380B0:lI95|H1072395C8 -1072395C8:lI119|H10723A9B0 -10723A9B0:lI120|H10723BB70 -10723BB70:lI46|H10723CB50 -10723CB50:lI98|H10723D9A0 -10723D9A0:lI101|H10723E680 -10723E680:lI97|H10723F250 -10723F250:lI109|N -1072118C0:Mn7:H107214B58,H107214B68,H107214B78,H107214B88,H107214B98,H107214BA8,H107214BB8 -107214B58:lH107217EE0|N -107217EE0:lI99|H10721B3D0 -10721B3D0:lI100|H10721E920 -10721E920:lI118|H107221DE0 -107221DE0:lI95|H107224F88 -107224F88:lI119|H107227DE0 -107227DE0:lI120|H10722A828 -10722A828:lI46|H10722CF40 -10722CF40:lI98|H10722F3E8 -10722F3E8:lI101|H107231590 -107231590:lI97|H107233428 -107233428:lI109|N -107214BB8:lH107217F40|N -107217F40:lI99|H10721B430 -10721B430:lI100|H10721E980 -10721E980:lI118|H107221E40 -107221E40:lI95|H107224FE8 -107224FE8:lI105|H107227E40 -107227E40:lI110|H10722A888 -10722A888:lI102|H10722CFA0 -10722CFA0:lI111|H10722F448 -10722F448:lI95|H1072315F0 -1072315F0:lI119|H107233488 -107233488:lI120|H107235020 -107235020:lI46|H107236968 -107236968:lI98|H1072380A0 -1072380A0:lI101|H1072395B8 -1072395B8:lI97|H10723A9A0 -10723A9A0:lI109|N -107214BA8:lH107217F30|N -107217F30:lI111|H10721B420 -10721B420:lI98|H10721E970 -10721E970:lI115|H107221E30 -107221E30:lI101|H107224FD8 -107224FD8:lI114|H107227E30 -107227E30:lI118|H10722A878 -10722A878:lI101|H10722CF90 -10722CF90:lI114|H10722F438 -10722F438:lI46|H1072315E0 -1072315E0:lI97|H107233478 -107233478:lI112|H107235010 -107235010:lI112|H107236958 -107236958:lI117|H107238090 -107238090:lI112|N -107214B98:lH107217F20|N -107217F20:lI99|H10721B410 -10721B410:lI100|H10721E960 -10721E960:lI118|H107221E20 -107221E20:lI95|H107224FC8 -107224FC8:lI105|H107227E20 -107227E20:lI110|H10722A868 -10722A868:lI116|H10722CF80 -10722CF80:lI95|H10722F428 -10722F428:lI116|H1072315D0 -1072315D0:lI97|H107233468 -107233468:lI98|H107235000 -107235000:lI95|H107236948 -107236948:lI99|H107238080 -107238080:lI98|H1072395A8 -1072395A8:lI46|H10723A990 -10723A990:lI98|H10723BB60 -10723BB60:lI101|H10723CB40 -10723CB40:lI97|H10723D990 -10723D990:lI109|N -107214B88:lH107217F10|N -107217F10:lI99|H10721B400 -10721B400:lI100|H10721E950 -10721E950:lI118|H107221E10 -107221E10:lI95|H107224FB8 -107224FB8:lI116|H107227E10 -107227E10:lI105|H10722A858 -10722A858:lI109|H10722CF70 -10722CF70:lI101|H10722F418 -10722F418:lI114|H1072315C0 -1072315C0:lI95|H107233458 -107233458:lI99|H107234FF0 -107234FF0:lI98|H107236938 -107236938:lI46|H107238070 -107238070:lI98|H107239598 -107239598:lI101|H10723A980 -10723A980:lI97|H10723BB50 -10723BB50:lI109|N -107214B78:lH107217F00|N -107217F00:lI99|H10721B3F0 -10721B3F0:lI114|H10721E940 -10721E940:lI97|H107221E00 -107221E00:lI115|H107224FA8 -107224FA8:lI104|H107227E00 -107227E00:lI100|H10722A848 -10722A848:lI117|H10722CF60 -10722CF60:lI109|H10722F408 -10722F408:lI112|H1072315B0 -1072315B0:lI95|H107233448 -107233448:lI118|H107234FE0 -107234FE0:lI105|H107236928 -107236928:lI101|H107238060 -107238060:lI119|H107239588 -107239588:lI101|H10723A970 -10723A970:lI114|H10723BB40 -10723BB40:lI46|H10723CB30 -10723CB30:lI98|H10723D980 -10723D980:lI101|H10723E670 -10723E670:lI97|H10723F240 -10723F240:lI109|N -107214B68:lH107217EF0|N -107217EF0:lI99|H10721B3E0 -10721B3E0:lI100|H10721E930 -10721E930:lI118|H107221DF0 -107221DF0:lI95|H107224F98 -107224F98:lI115|H107227DF0 -107227DF0:lI99|H10722A838 -10722A838:lI104|H10722CF50 -10722CF50:lI101|H10722F3F8 -10722F3F8:lI100|H1072315A0 -1072315A0:lI95|H107233438 -107233438:lI99|H107234FD0 -107234FD0:lI98|H107236918 -107236918:lI46|H107238050 -107238050:lI98|H107239578 -107239578:lI101|H10723A960 -10723A960:lI97|H10723BB30 -10723BB30:lI109|N -1072118B0:lH107214B48|N -107214B48:lI99|H107217ED0 -107217ED0:lI100|H10721B3C0 -10721B3C0:lI118|H10721E910 -10721E910:lI95|H107221DD0 -107221DD0:lI109|H107224F78 -107224F78:lI101|H107227DD0 -107227DD0:lI109|H10722A818 -10722A818:lI95|H10722CF30 -10722CF30:lI99|H10722F3D8 -10722F3D8:lI98|H107231580 -107231580:lI46|H107233418 -107233418:lI98|H107234FC0 -107234FC0:lI101|H107236908 -107236908:lI97|H107238040 -107238040:lI109|N -107211890:Mn3:H107214B18,H107214B28,H107214B38 -107214B18:lH107217EA0|N -107217EA0:lI111|H10721B390 -10721B390:lI98|H10721E8E0 -10721E8E0:lI115|H107221DA0 -107221DA0:lI101|H107224F48 -107224F48:lI114|H107227DA0 -107227DA0:lI118|H10722A7E8 -10722A7E8:lI101|H10722CF00 -10722CF00:lI114|H10722F3A8 -10722F3A8:lI95|H107231550 -107231550:lI112|H1072333E8 -1072333E8:lI111|H107234FA0 -107234FA0:lI114|H1072368E8 -1072368E8:lI116|H107238020 -107238020:lI95|H107239558 -107239558:lI119|H10723A940 -10723A940:lI120|H10723BB20 -10723BB20:lI46|H10723CB20 -10723CB20:lI98|H10723D970 -10723D970:lI101|H10723E660 -10723E660:lI97|H10723F230 -10723F230:lI109|N -107214B38:lH107217EC0|N -107217EC0:lI116|H10721B3B0 -10721B3B0:lI116|H10721E900 -10721E900:lI98|H107221DC0 -107221DC0:lI95|H107224F68 -107224F68:lI101|H107227DC0 -107227DC0:lI116|H10722A808 -10722A808:lI46|H10722CF20 -10722CF20:lI98|H10722F3C8 -10722F3C8:lI101|H107231570 -107231570:lI97|H107233408 -107233408:lI109|N -107214B28:lH107217EB0|N -107217EB0:lI99|H10721B3A0 -10721B3A0:lI100|H10721E8F0 -10721E8F0:lI118|H107221DB0 -107221DB0:lI95|H107224F58 -107224F58:lI97|H107227DB0 -107227DB0:lI116|H10722A7F8 -10722A7F8:lI111|H10722CF10 -10722CF10:lI109|H10722F3B8 -10722F3B8:lI95|H107231560 -107231560:lI99|H1072333F8 -1072333F8:lI98|H107234FB0 -107234FB0:lI46|H1072368F8 -1072368F8:lI98|H107238030 -107238030:lI101|H107239568 -107239568:lI97|H10723A950 -10723A950:lI109|N -107211878:Mn2:H107214AF8,H107214B08 -107214AF8:lH107217E80|N -107217E80:lI99|H10721B370 -10721B370:lI100|H10721E8C0 -10721E8C0:lI118|H107221D80 -107221D80:lI95|H107224F28 -107224F28:lI100|H107227D80 -107227D80:lI101|H10722A7C8 -10722A7C8:lI116|H10722CEE0 -10722CEE0:lI97|H10722F388 -10722F388:lI105|H107231530 -107231530:lI108|H1072333C8 -1072333C8:lI95|H107234F80 -107234F80:lI119|H1072368C8 -1072368C8:lI120|H107238000 -107238000:lI46|H107239538 -107239538:lI98|H10723A930 -10723A930:lI101|H10723BB10 -10723BB10:lI97|H10723CB10 -10723CB10:lI109|N -107214B08:lH107217E90|N -107217E90:lI99|H10721B380 -10721B380:lI100|H10721E8D0 -10721E8D0:lI118|H107221D90 -107221D90:lI95|H107224F38 -107224F38:lI102|H107227D90 -107227D90:lI117|H10722A7D8 -10722A7D8:lI110|H10722CEF0 -10722CEF0:lI95|H10722F398 -10722F398:lI99|H107231540 -107231540:lI98|H1072333D8 -1072333D8:lI46|H107234F90 -107234F90:lI98|H1072368D8 -1072368D8:lI101|H107238010 -107238010:lI97|H107239548 -107239548:lI109|N -107211848:Mn5:H107214AA8,H107214AB8,H107214AC8,H107214AD8,H107214AE8 -107214AA8:lH107217E30|N -107217E30:lI99|H10721B320 -10721B320:lI100|H10721E870 -10721E870:lI118|H107221D30 -107221D30:lI95|H107224ED8 -107224ED8:lI104|H107227D30 -107227D30:lI116|H10722A778 -10722A778:lI109|H10722CE90 -10722CE90:lI108|H10722F338 -10722F338:lI95|H1072314E0 -1072314E0:lI119|H107233378 -107233378:lI120|H107234F30 -107234F30:lI46|H107236888 -107236888:lI98|H107237FC0 -107237FC0:lI101|H1072394F8 -1072394F8:lI97|H10723A910 -10723A910:lI109|N -107214AE8:lH107217E70|N -107217E70:lI101|H10721B360 -10721B360:lI116|H10721E8B0 -10721E8B0:lI111|H107221D70 -107221D70:lI112|H107224F18 -107224F18:lI95|H107227D70 -107227D70:lI116|H10722A7B8 -10722A7B8:lI114|H10722CED0 -10722CED0:lI46|H10722F378 -10722F378:lI98|H107231520 -107231520:lI101|H1072333B8 -1072333B8:lI97|H107234F70 -107234F70:lI109|N -107214AD8:lH107217E60|N -107217E60:lI99|H10721B350 -10721B350:lI100|H10721E8A0 -10721E8A0:lI118|H107221D60 -107221D60:lI95|H107224F08 -107224F08:lI98|H107227D60 -107227D60:lI105|H10722A7A8 -10722A7A8:lI110|H10722CEC0 -10722CEC0:lI95|H10722F368 -10722F368:lI99|H107231510 -107231510:lI98|H1072333A8 -1072333A8:lI46|H107234F60 -107234F60:lI98|H1072368B8 -1072368B8:lI101|H107237FF0 -107237FF0:lI97|H107239528 -107239528:lI109|N -107214AC8:lH107217E50|N -107217E50:lI99|H10721B340 -10721B340:lI100|H10721E890 -10721E890:lI118|H107221D50 -107221D50:lI95|H107224EF8 -107224EF8:lI101|H107227D50 -107227D50:lI116|H10722A798 -10722A798:lI115|H10722CEB0 -10722CEB0:lI95|H10722F358 -10722F358:lI99|H107231500 -107231500:lI98|H107233398 -107233398:lI46|H107234F50 -107234F50:lI98|H1072368A8 -1072368A8:lI101|H107237FE0 -107237FE0:lI97|H107239518 -107239518:lI109|N -107214AB8:lH107217E40|N -107217E40:lI99|H10721B330 -10721B330:lI100|H10721E880 -10721E880:lI118|H107221D40 -107221D40:lI95|H107224EE8 -107224EE8:lI116|H107227D40 -107227D40:lI101|H10722A788 -10722A788:lI114|H10722CEA0 -10722CEA0:lI109|H10722F348 -10722F348:lI95|H1072314F0 -1072314F0:lI99|H107233388 -107233388:lI98|H107234F40 -107234F40:lI46|H107236898 -107236898:lI98|H107237FD0 -107237FD0:lI101|H107239508 -107239508:lI97|H10723A920 -10723A920:lI109|N -107211830:Mn2:H107214A88,H107214A98 -107214A88:lH107217E10|N -107217E10:lI111|H10721B300 -10721B300:lI98|H10721E850 -10721E850:lI115|H107221D10 -107221D10:lI101|H107224EB8 -107224EB8:lI114|H107227D10 -107227D10:lI118|H10722A758 -10722A758:lI101|H10722CE70 -10722CE70:lI114|H10722F318 -10722F318:lI95|H1072314C0 -1072314C0:lI108|H107233358 -107233358:lI105|H107234F10 -107234F10:lI98|H107236868 -107236868:lI46|H107237FA0 -107237FA0:lI98|H1072394D8 -1072394D8:lI101|H10723A8F0 -10723A8F0:lI97|H10723BAF0 -10723BAF0:lI109|N -107214A98:lH107217E20|N -107217E20:lI111|H10721B310 -10721B310:lI98|H10721E860 -10721E860:lI115|H107221D20 -107221D20:lI101|H107224EC8 -107224EC8:lI114|H107227D20 -107227D20:lI118|H10722A768 -10722A768:lI101|H10722CE80 -10722CE80:lI114|H10722F328 -10722F328:lI95|H1072314D0 -1072314D0:lI97|H107233368 -107233368:lI112|H107234F20 -107234F20:lI112|H107236878 -107236878:lI95|H107237FB0 -107237FB0:lI119|H1072394E8 -1072394E8:lI120|H10723A900 -10723A900:lI46|H10723BB00 -10723BB00:lI98|H10723CB00 -10723CB00:lI101|H10723D960 -10723D960:lI97|H10723E650 -10723E650:lI109|N -10720E658:lI47|H107211808 -107211808:lI111|H107214A58 -107214A58:lI112|H107217DE0 -107217DE0:lI116|H10721B2D0 -10721B2D0:lI47|H10721E820 -10721E820:lI104|H107221CE0 -107221CE0:lI111|H107224E88 -107224E88:lI109|H107227CE0 -107227CE0:lI101|H10722A728 -10722A728:lI98|H10722CE40 -10722CE40:lI114|H10722F2E8 -10722F2E8:lI101|H107231490 -107231490:lI119|H107233328 -107233328:lI47|H107234EE0 -107234EE0:lI67|H107236838 -107236838:lI101|H107237F70 -107237F70:lI108|H1072394A8 -1072394A8:lI108|H10723A8D0 -10723A8D0:lI97|H10723BAE0 -10723BAE0:lI114|H10723CAF0 -10723CAF0:lI47|H10723D950 -10723D950:lI101|H10723E640 -10723E640:lI114|H10723F220 -10723F220:lI108|H10723FCB0 -10723FCB0:lI97|H1072405F0 -1072405F0:lI110|H107240E60 -107240E60:lI103|H1072415F0 -1072415F0:lI47|H107241D10 -107241D10:lI50|H1072423D0 -1072423D0:lI54|H107242A30 -107242A30:lI46|H107243010 -107243010:lI48|H107243580 -107243580:lI46|H107243AC0 -107243AC0:lI50|H107243FB0 -107243FB0:lI47|H1072444A0 -1072444A0:lI108|H107244950 -107244950:lI105|H107244DC0 -107244DC0:lI98|H107245220 -107245220:lI47|H107245670 -107245670:lI101|H107245A70 -107245A70:lI114|H107245E20 -107245E20:lI108|H1072461B0 -1072461B0:lI97|H107246540 -107246540:lI110|H1072468D0 -1072468D0:lI103|H107246C60 -107246C60:lI47|H107246F90 -107246F90:lI108|H1072472B0 -1072472B0:lI105|H1072475C0 -1072475C0:lI98|H1072478C0 -1072478C0:lI47|H107247BC0 -107247BC0:lI111|H107247EA0 -107247EA0:lI98|H107248160 -107248160:lI115|H107248420 -107248420:lI101|H1072486D0 -1072486D0:lI114|H107248980 -107248980:lI118|H107248C00 -107248C00:lI101|H107248E70 -107248E70:lI114|H1072490E0 -1072490E0:lI45|H107249340 -107249340:lI50|H1072495A0 -1072495A0:lI46|H1072497F0 -1072497F0:lI49|H107249A10 -107249A10:lI53|H107249C20 -107249C20:lI47|H280052C20 -10720B448:lH10720E6F0|H10720E708 -10720E6F0:t2:H1072119D8,H1072119E8 -1072119E8:Mh21:F:H107214D30,H107214D50,H107214D88,H107214DA0,H107214DB8,H107214DD8,H107214DE8,H107214DF8,H107214E20,H107214E30,H107214E48,H107214E58,H107214E68,H107214E78,H107214E98 -107214D30:Mn3:H1072180E0,H1072180F0,H107218100 -1072180E0:lH10721B5D0|N -10721B5D0:lI109|H10721EB20 -10721EB20:lI110|H107221FE0 -107221FE0:lI101|H107225188 -107225188:lI115|H107227FE0 -107227FE0:lI105|H10722AA28 -10722AA28:lI97|H10722D140 -10722D140:lI95|H10722F5D8 -10722F5D8:lI114|H107231770 -107231770:lI101|H107233608 -107233608:lI103|H1072351A0 -1072351A0:lI105|H107236AE8 -107236AE8:lI115|H1072381F0 -1072381F0:lI116|H107239708 -107239708:lI114|H10723AAE0 -10723AAE0:lI121|H10723BC80 -10723BC80:lI46|H10723CC50 -10723CC50:lI98|H10723DA80 -10723DA80:lI101|H10723E750 -10723E750:lI97|H10723F300 -10723F300:lI109|N -107218100:lH10721B5F0|N -10721B5F0:lI109|H10721EB40 -10721EB40:lI110|H107222000 -107222000:lI101|H1072251A8 -1072251A8:lI115|H107228000 -107228000:lI105|H10722AA48 -10722AA48:lI97|H10722D160 -10722D160:lI95|H10722F5F8 -10722F5F8:lI98|H107231790 -107231790:lI117|H107233628 -107233628:lI112|H1072351C0 -1072351C0:lI46|H107236B08 -107236B08:lI98|H107238210 -107238210:lI101|H107239728 -107239728:lI97|H10723AB00 -10723AB00:lI109|N -1072180F0:lH10721B5E0|N -10721B5E0:lI109|H10721EB30 -10721EB30:lI110|H107221FF0 -107221FF0:lI101|H107225198 -107225198:lI115|H107227FF0 -107227FF0:lI105|H10722AA38 -10722AA38:lI97|H10722D150 -10722D150:lI95|H10722F5E8 -10722F5E8:lI99|H107231780 -107231780:lI104|H107233618 -107233618:lI101|H1072351B0 -1072351B0:lI99|H107236AF8 -107236AF8:lI107|H107238200 -107238200:lI112|H107239718 -107239718:lI111|H10723AAF0 -10723AAF0:lI105|H10723BC90 -10723BC90:lI110|H10723CC60 -10723CC60:lI116|H10723DA90 -10723DA90:lI46|H10723E760 -10723E760:lI98|H10723F310 -10723F310:lI101|H10723FD60 -10723FD60:lI97|H107240660 -107240660:lI109|N -107214E98:Mn2:H1072182D0,H1072182E0 -1072182D0:lH10721B7C0|N -10721B7C0:lI109|H10721ED10 -10721ED10:lI110|H1072221D0 -1072221D0:lI101|H107225378 -107225378:lI115|H1072281D0 -1072281D0:lI105|H10722AC18 -10722AC18:lI97|H10722D330 -10722D330:lI95|H10722F7C8 -10722F7C8:lI108|H107231960 -107231960:lI97|H1072337E8 -1072337E8:lI116|H107235380 -107235380:lI101|H107236CB8 -107236CB8:lI95|H1072383B0 -1072383B0:lI108|H1072398C8 -1072398C8:lI111|H10723AC80 -10723AC80:lI97|H10723BDB0 -10723BDB0:lI100|H10723CD70 -10723CD70:lI101|H10723DB70 -10723DB70:lI114|H10723E7F0 -10723E7F0:lI46|H10723F370 -10723F370:lI98|H10723FDA0 -10723FDA0:lI101|H107240690 -107240690:lI97|H107240EB0 -107240EB0:lI109|N -1072182E0:lH10721B7D0|N -10721B7D0:lI109|H10721ED20 -10721ED20:lI110|H1072221E0 -1072221E0:lI101|H107225388 -107225388:lI115|H1072281E0 -1072281E0:lI105|H10722AC28 -10722AC28:lI97|H10722D340 -10722D340:lI95|H10722F7D8 -10722F7D8:lI98|H107231970 -107231970:lI97|H1072337F8 -1072337F8:lI99|H107235390 -107235390:lI107|H107236CC8 -107236CC8:lI101|H1072383C0 -1072383C0:lI110|H1072398D8 -1072398D8:lI100|H10723AC90 -10723AC90:lI95|H10723BDC0 -10723BDC0:lI116|H10723CD80 -10723CD80:lI121|H10723DB80 -10723DB80:lI112|H10723E800 -10723E800:lI101|H10723F380 -10723F380:lI46|H10723FDB0 -10723FDB0:lI98|H1072406A0 -1072406A0:lI101|H107240EC0 -107240EC0:lI97|H107241630 -107241630:lI109|N -107214E78:Mn3:H1072182A0,H1072182B0,H1072182C0 -1072182A0:lH10721B790|N -10721B790:lI109|H10721ECE0 -10721ECE0:lI110|H1072221A0 -1072221A0:lI101|H107225348 -107225348:lI115|H1072281A0 -1072281A0:lI105|H10722ABE8 -10722ABE8:lI97|H10722D300 -10722D300:lI95|H10722F798 -10722F798:lI99|H107231930 -107231930:lI104|H1072337B8 -1072337B8:lI101|H107235350 -107235350:lI99|H107236C88 -107236C88:lI107|H107238380 -107238380:lI112|H107239898 -107239898:lI111|H10723AC60 -10723AC60:lI105|H10723BD90 -10723BD90:lI110|H10723CD50 -10723CD50:lI116|H10723DB50 -10723DB50:lI95|H10723E7E0 -10723E7E0:lI115|H10723F360 -10723F360:lI117|H10723FD90 -10723FD90:lI112|H107240680 -107240680:lI46|H107240EA0 -107240EA0:lI98|H107241620 -107241620:lI101|H107241D40 -107241D40:lI97|H107242400 -107242400:lI109|N -1072182C0:lH10721B7B0|N -10721B7B0:lI109|H10721ED00 -10721ED00:lI110|H1072221C0 -1072221C0:lI101|H107225368 -107225368:lI115|H1072281C0 -1072281C0:lI105|H10722AC08 -10722AC08:lI97|H10722D320 -10722D320:lI95|H10722F7B8 -10722F7B8:lI115|H107231950 -107231950:lI112|H1072337D8 -1072337D8:lI46|H107235370 -107235370:lI98|H107236CA8 -107236CA8:lI101|H1072383A0 -1072383A0:lI97|H1072398B8 -1072398B8:lI109|N -1072182B0:lH10721B7A0|N -10721B7A0:lI109|H10721ECF0 -10721ECF0:lI110|H1072221B0 -1072221B0:lI101|H107225358 -107225358:lI115|H1072281B0 -1072281B0:lI105|H10722ABF8 -10722ABF8:lI97|H10722D310 -10722D310:lI95|H10722F7A8 -10722F7A8:lI115|H107231940 -107231940:lI99|H1072337C8 -1072337C8:lI104|H107235360 -107235360:lI101|H107236C98 -107236C98:lI109|H107238390 -107238390:lI97|H1072398A8 -1072398A8:lI46|H10723AC70 -10723AC70:lI98|H10723BDA0 -10723BDA0:lI101|H10723CD60 -10723CD60:lI97|H10723DB60 -10723DB60:lI109|N -107214E68:lH107218290|N -107218290:lI109|H10721B780 -10721B780:lI110|H10721ECD0 -10721ECD0:lI101|H107222190 -107222190:lI115|H107225338 -107225338:lI105|H107228190 -107228190:lI97|H10722ABD8 -10722ABD8:lI95|H10722D2F0 -10722D2F0:lI116|H10722F788 -10722F788:lI101|H107231920 -107231920:lI120|H1072337A8 -1072337A8:lI116|H107235340 -107235340:lI46|H107236C78 -107236C78:lI98|H107238370 -107238370:lI101|H107239888 -107239888:lI97|H10723AC50 -10723AC50:lI109|N -107214E58:lH107218280|N -107218280:lI109|H10721B770 -10721B770:lI110|H10721ECC0 -10721ECC0:lI101|H107222180 -107222180:lI115|H107225328 -107225328:lI105|H107228180 -107228180:lI97|H10722ABC8 -10722ABC8:lI95|H10722D2E0 -10722D2E0:lI99|H10722F778 -10722F778:lI111|H107231910 -107231910:lI110|H107233798 -107233798:lI116|H107235330 -107235330:lI114|H107236C68 -107236C68:lI111|H107238360 -107238360:lI108|H107239878 -107239878:lI108|H10723AC40 -10723AC40:lI101|H10723BD80 -10723BD80:lI114|H10723CD40 -10723CD40:lI46|H10723DB40 -10723DB40:lI98|H10723E7D0 -10723E7D0:lI101|H10723F350 -10723F350:lI97|H10723FD80 -10723FD80:lI109|N -107214E48:lH107218270|N -107218270:lI109|H10721B760 -10721B760:lI110|H10721ECB0 -10721ECB0:lI101|H107222170 -107222170:lI115|H107225318 -107225318:lI105|H107228170 -107228170:lI97|H10722ABB8 -10722ABB8:lI95|H10722D2D0 -10722D2D0:lI108|H10722F768 -10722F768:lI111|H107231900 -107231900:lI99|H107233788 -107233788:lI107|H107235320 -107235320:lI101|H107236C58 -107236C58:lI114|H107238350 -107238350:lI46|H107239868 -107239868:lI98|H10723AC30 -10723AC30:lI101|H10723BD70 -10723BD70:lI97|H10723CD30 -10723CD30:lI109|N -107214E30:Mn2:H107218250,H107218260 -107218250:lH10721B740|N -10721B740:lI109|H10721EC90 -10721EC90:lI110|H107222150 -107222150:lI101|H1072252F8 -1072252F8:lI115|H107228150 -107228150:lI105|H10722AB98 -10722AB98:lI97|H10722D2B0 -10722D2B0:lI95|H10722F748 -10722F748:lI107|H1072318E0 -1072318E0:lI101|H107233768 -107233768:lI114|H107235300 -107235300:lI110|H107236C38 -107236C38:lI101|H107238330 -107238330:lI108|H107239848 -107239848:lI95|H10723AC10 -10723AC10:lI115|H10723BD50 -10723BD50:lI117|H10723CD20 -10723CD20:lI112|H10723DB30 -10723DB30:lI46|H10723E7C0 -10723E7C0:lI98|H10723F340 -10723F340:lI101|H10723FD70 -10723FD70:lI97|H107240670 -107240670:lI109|N -107218260:lH10721B750|N -10721B750:lI109|H10721ECA0 -10721ECA0:lI110|H107222160 -107222160:lI101|H107225308 -107225308:lI115|H107228160 -107228160:lI105|H10722ABA8 -10722ABA8:lI97|H10722D2C0 -10722D2C0:lI95|H10722F758 -10722F758:lI102|H1072318F0 -1072318F0:lI114|H107233778 -107233778:lI97|H107235310 -107235310:lI103|H107236C48 -107236C48:lI46|H107238340 -107238340:lI98|H107239858 -107239858:lI101|H10723AC20 -10723AC20:lI97|H10723BD60 -10723BD60:lI109|N -107214E20:lH107218240|N -107218240:lI109|H10721B730 -10721B730:lI110|H10721EC80 -10721EC80:lI101|H107222140 -107222140:lI115|H1072252E8 -1072252E8:lI105|H107228140 -107228140:lI97|H10722AB88 -10722AB88:lI95|H10722D2A0 -10722D2A0:lI102|H10722F738 -10722F738:lI114|H1072318D0 -1072318D0:lI97|H107233758 -107233758:lI103|H1072352F0 -1072352F0:lI95|H107236C28 -107236C28:lI104|H107238320 -107238320:lI97|H107239838 -107239838:lI115|H10723AC00 -10723AC00:lI104|H10723BD40 -10723BD40:lI46|H10723CD10 -10723CD10:lI98|H10723DB20 -10723DB20:lI101|H10723E7B0 -10723E7B0:lI97|H10723F330 -10723F330:lI109|N -107214DF8:Mn4:H107218200,H107218210,H107218220,H107218230 -107218200:lH10721B6F0|N -10721B6F0:lI109|H10721EC40 -10721EC40:lI110|H107222100 -107222100:lI101|H1072252A8 -1072252A8:lI115|H107228100 -107228100:lI105|H10722AB48 -10722AB48:lI97|H10722D260 -10722D260:lI95|H10722F6F8 -10722F6F8:lI116|H107231890 -107231890:lI109|H107233718 -107233718:lI46|H1072352B0 -1072352B0:lI98|H107236BE8 -107236BE8:lI101|H1072382E0 -1072382E0:lI97|H1072397F8 -1072397F8:lI109|N -107218230:lH10721B720|N -10721B720:lI109|H10721EC70 -10721EC70:lI110|H107222130 -107222130:lI101|H1072252D8 -1072252D8:lI115|H107228130 -107228130:lI105|H10722AB78 -10722AB78:lI97|H10722D290 -10722D290:lI95|H10722F728 -10722F728:lI100|H1072318C0 -1072318C0:lI117|H107233748 -107233748:lI109|H1072352E0 -1072352E0:lI112|H107236C18 -107236C18:lI101|H107238310 -107238310:lI114|H107239828 -107239828:lI46|H10723ABF0 -10723ABF0:lI98|H10723BD30 -10723BD30:lI101|H10723CD00 -10723CD00:lI97|H10723DB10 -10723DB10:lI109|N -107218220:lH10721B710|N -10721B710:lI109|H10721EC60 -10721EC60:lI110|H107222120 -107222120:lI101|H1072252C8 -1072252C8:lI115|H107228120 -107228120:lI105|H10722AB68 -10722AB68:lI97|H10722D280 -10722D280:lI95|H10722F718 -10722F718:lI101|H1072318B0 -1072318B0:lI118|H107233738 -107233738:lI101|H1072352D0 -1072352D0:lI110|H107236C08 -107236C08:lI116|H107238300 -107238300:lI46|H107239818 -107239818:lI98|H10723ABE0 -10723ABE0:lI101|H10723BD20 -10723BD20:lI97|H10723CCF0 -10723CCF0:lI109|N -107218210:lH10721B700|N -10721B700:lI109|H10721EC50 -10721EC50:lI110|H107222110 -107222110:lI101|H1072252B8 -1072252B8:lI115|H107228110 -107228110:lI105|H10722AB58 -10722AB58:lI97|H10722D270 -10722D270:lI95|H10722F708 -10722F708:lI98|H1072318A0 -1072318A0:lI97|H107233728 -107233728:lI99|H1072352C0 -1072352C0:lI107|H107236BF8 -107236BF8:lI117|H1072382F0 -1072382F0:lI112|H107239808 -107239808:lI46|H10723ABD0 -10723ABD0:lI98|H10723BD10 -10723BD10:lI101|H10723CCE0 -10723CCE0:lI97|H10723DB00 -10723DB00:lI109|N -107214DE8:lH1072181F0|N -1072181F0:lI109|H10721B6E0 -10721B6E0:lI110|H10721EC30 -10721EC30:lI101|H1072220F0 -1072220F0:lI115|H107225298 -107225298:lI105|H1072280F0 -1072280F0:lI97|H10722AB38 -10722AB38:lI46|H10722D250 -10722D250:lI97|H10722F6E8 -10722F6E8:lI112|H107231880 -107231880:lI112|N -107214DD8:lH1072181E0|N -1072181E0:lI109|H10721B6D0 -10721B6D0:lI110|H10721EC20 -10721EC20:lI101|H1072220E0 -1072220E0:lI115|H107225288 -107225288:lI105|H1072280E0 -1072280E0:lI97|H10722AB28 -10722AB28:lI95|H10722D240 -10722D240:lI115|H10722F6D8 -10722F6D8:lI110|H107231870 -107231870:lI109|H107233708 -107233708:lI112|H1072352A0 -1072352A0:lI95|H107236BD8 -107236BD8:lI104|H1072382D0 -1072382D0:lI111|H1072397E8 -1072397E8:lI111|H10723ABC0 -10723ABC0:lI107|H10723BD00 -10723BD00:lI46|H10723CCD0 -10723CCD0:lI98|H10723DAF0 -10723DAF0:lI101|H10723E7A0 -10723E7A0:lI97|H10723F320 -10723F320:lI109|N -107214DB8:Mn3:H1072181B0,H1072181C0,H1072181D0 -1072181B0:lH10721B6A0|N -10721B6A0:lI109|H10721EBF0 -10721EBF0:lI110|H1072220B0 -1072220B0:lI101|H107225258 -107225258:lI115|H1072280B0 -1072280B0:lI105|H10722AAF8 -10722AAF8:lI97|H10722D210 -10722D210:lI95|H10722F6A8 -10722F6A8:lI115|H107231840 -107231840:lI117|H1072336D8 -1072336D8:lI112|H107235270 -107235270:lI46|H107236BA8 -107236BA8:lI98|H1072382B0 -1072382B0:lI101|H1072397C8 -1072397C8:lI97|H10723ABA0 -10723ABA0:lI109|N -1072181D0:lH10721B6C0|N -10721B6C0:lI109|H10721EC10 -10721EC10:lI110|H1072220D0 -1072220D0:lI101|H107225278 -107225278:lI115|H1072280D0 -1072280D0:lI105|H10722AB18 -10722AB18:lI97|H10722D230 -10722D230:lI95|H10722F6C8 -10722F6C8:lI108|H107231860 -107231860:lI105|H1072336F8 -1072336F8:lI98|H107235290 -107235290:lI46|H107236BC8 -107236BC8:lI98|H1072382C0 -1072382C0:lI101|H1072397D8 -1072397D8:lI97|H10723ABB0 -10723ABB0:lI109|N -1072181C0:lH10721B6B0|N -10721B6B0:lI109|H10721EC00 -10721EC00:lI110|H1072220C0 -1072220C0:lI101|H107225268 -107225268:lI115|H1072280C0 -1072280C0:lI105|H10722AB08 -10722AB08:lI97|H10722D220 -10722D220:lI46|H10722F6B8 -10722F6B8:lI97|H107231850 -107231850:lI112|H1072336E8 -1072336E8:lI112|H107235280 -107235280:lI117|H107236BB8 -107236BB8:lI112|N -107214DA0:Mn2:H107218190,H1072181A0 -107218190:lH10721B680|N -10721B680:lI109|H10721EBD0 -10721EBD0:lI110|H107222090 -107222090:lI101|H107225238 -107225238:lI115|H107228090 -107228090:lI105|H10722AAD8 -10722AAD8:lI97|H10722D1F0 -10722D1F0:lI95|H10722F688 -10722F688:lI97|H107231820 -107231820:lI112|H1072336B8 -1072336B8:lI112|H107235250 -107235250:lI46|H107236B88 -107236B88:lI98|H107238290 -107238290:lI101|H1072397A8 -1072397A8:lI97|H10723AB80 -10723AB80:lI109|N -1072181A0:lH10721B690|N -10721B690:lI109|H10721EBE0 -10721EBE0:lI110|H1072220A0 -1072220A0:lI101|H107225248 -107225248:lI115|H1072280A0 -1072280A0:lI105|H10722AAE8 -10722AAE8:lI97|H10722D200 -10722D200:lI95|H10722F698 -10722F698:lI108|H107231830 -107231830:lI111|H1072336C8 -1072336C8:lI103|H107235260 -107235260:lI46|H107236B98 -107236B98:lI98|H1072382A0 -1072382A0:lI101|H1072397B8 -1072397B8:lI97|H10723AB90 -10723AB90:lI109|N -107214D88:Mn2:H107218170,H107218180 -107218170:lH10721B660|N -10721B660:lI109|H10721EBB0 -10721EBB0:lI110|H107222070 -107222070:lI101|H107225218 -107225218:lI115|H107228070 -107228070:lI105|H10722AAB8 -10722AAB8:lI97|H10722D1D0 -10722D1D0:lI95|H10722F668 -10722F668:lI115|H107231800 -107231800:lI117|H107233698 -107233698:lI98|H107235230 -107235230:lI115|H107236B68 -107236B68:lI99|H107238270 -107238270:lI114|H107239788 -107239788:lI46|H10723AB60 -10723AB60:lI98|H10723BCF0 -10723BCF0:lI101|H10723CCC0 -10723CCC0:lI97|H10723DAE0 -10723DAE0:lI109|N -107218180:lH10721B670|N -10721B670:lI109|H10721EBC0 -10721EBC0:lI110|H107222080 -107222080:lI101|H107225228 -107225228:lI115|H107228080 -107228080:lI105|H10722AAC8 -10722AAC8:lI97|H10722D1E0 -10722D1E0:lI95|H10722F678 -10722F678:lI114|H107231810 -107231810:lI112|H1072336A8 -1072336A8:lI99|H107235240 -107235240:lI46|H107236B78 -107236B78:lI98|H107238280 -107238280:lI101|H107239798 -107239798:lI97|H10723AB70 -10723AB70:lI109|N -107214D50:Mn6:H107218110,H107218120,H107218130,H107218140,H107218150,H107218160 -107218110:lH10721B600|N -10721B600:lI109|H10721EB50 -10721EB50:lI110|H107222010 -107222010:lI101|H1072251B8 -1072251B8:lI115|H107228010 -107228010:lI105|H10722AA58 -10722AA58:lI97|H10722D170 -10722D170:lI46|H10722F608 -10722F608:lI98|H1072317A0 -1072317A0:lI101|H107233638 -107233638:lI97|H1072351D0 -1072351D0:lI109|N -107218160:lH10721B650|N -10721B650:lI109|H10721EBA0 -10721EBA0:lI110|H107222060 -107222060:lI101|H107225208 -107225208:lI115|H107228060 -107228060:lI105|H10722AAA8 -10722AAA8:lI97|H10722D1C0 -10722D1C0:lI95|H10722F658 -10722F658:lI109|H1072317F0 -1072317F0:lI111|H107233688 -107233688:lI110|H107235220 -107235220:lI105|H107236B58 -107236B58:lI116|H107238260 -107238260:lI111|H107239778 -107239778:lI114|H10723AB50 -10723AB50:lI46|H10723BCE0 -10723BCE0:lI98|H10723CCB0 -10723CCB0:lI101|H10723DAD0 -10723DAD0:lI97|H10723E790 -10723E790:lI109|N -107218150:lH10721B640|N -10721B640:lI109|H10721EB90 -10721EB90:lI110|H107222050 -107222050:lI101|H1072251F8 -1072251F8:lI115|H107228050 -107228050:lI105|H10722AA98 -10722AA98:lI97|H10722D1B0 -10722D1B0:lI95|H10722F648 -10722F648:lI105|H1072317E0 -1072317E0:lI110|H107233678 -107233678:lI100|H107235210 -107235210:lI101|H107236B48 -107236B48:lI120|H107238250 -107238250:lI46|H107239768 -107239768:lI98|H10723AB40 -10723AB40:lI101|H10723BCD0 -10723BCD0:lI97|H10723CCA0 -10723CCA0:lI109|N -107218140:lH10721B630|N -10721B630:lI109|H10721EB80 -10721EB80:lI110|H107222040 -107222040:lI101|H1072251E8 -1072251E8:lI115|H107228040 -107228040:lI105|H10722AA88 -10722AA88:lI97|H10722D1A0 -10722D1A0:lI95|H10722F638 -10722F638:lI114|H1072317D0 -1072317D0:lI101|H107233668 -107233668:lI99|H107235200 -107235200:lI111|H107236B38 -107236B38:lI118|H107238240 -107238240:lI101|H107239758 -107239758:lI114|H10723AB30 -10723AB30:lI46|H10723BCC0 -10723BCC0:lI98|H10723CC90 -10723CC90:lI101|H10723DAC0 -10723DAC0:lI97|H10723E780 -10723E780:lI109|N -107218130:lH10721B620|N -10721B620:lI109|H10721EB70 -10721EB70:lI110|H107222030 -107222030:lI101|H1072251D8 -1072251D8:lI115|H107228030 -107228030:lI105|H10722AA78 -10722AA78:lI97|H10722D190 -10722D190:lI95|H10722F628 -10722F628:lI108|H1072317C0 -1072317C0:lI111|H107233658 -107233658:lI97|H1072351F0 -1072351F0:lI100|H107236B28 -107236B28:lI101|H107238230 -107238230:lI114|H107239748 -107239748:lI46|H10723AB20 -10723AB20:lI98|H10723BCB0 -10723BCB0:lI101|H10723CC80 -10723CC80:lI97|H10723DAB0 -10723DAB0:lI109|N -107218120:lH10721B610|N -10721B610:lI109|H10721EB60 -10721EB60:lI110|H107222020 -107222020:lI101|H1072251C8 -1072251C8:lI115|H107228020 -107228020:lI105|H10722AA68 -10722AA68:lI97|H10722D180 -10722D180:lI95|H10722F618 -10722F618:lI101|H1072317B0 -1072317B0:lI120|H107233648 -107233648:lI116|H1072351E0 -1072351E0:lI95|H107236B18 -107236B18:lI115|H107238220 -107238220:lI117|H107239738 -107239738:lI112|H10723AB10 -10723AB10:lI46|H10723BCA0 -10723BCA0:lI98|H10723CC70 -10723CC70:lI101|H10723DAA0 -10723DAA0:lI97|H10723E770 -10723E770:lI109|N -1072119D8:lI47|H107214D20 -107214D20:lI111|H1072180D0 -1072180D0:lI112|H10721B5C0 -10721B5C0:lI116|H10721EB10 -10721EB10:lI47|H107221FD0 -107221FD0:lI104|H107225178 -107225178:lI111|H107227FD0 -107227FD0:lI109|H10722AA18 -10722AA18:lI101|H10722D130 -10722D130:lI98|H10722F5C8 -10722F5C8:lI114|H107231760 -107231760:lI101|H1072335F8 -1072335F8:lI119|H107235190 -107235190:lI47|H107236AD8 -107236AD8:lI67|H1072381E0 -1072381E0:lI101|H1072396F8 -1072396F8:lI108|H10723AAD0 -10723AAD0:lI108|H10723BC70 -10723BC70:lI97|H10723CC40 -10723CC40:lI114|H10723DA70 -10723DA70:lI47|H10723E740 -10723E740:lI101|H10723F2F0 -10723F2F0:lI114|H10723FD50 -10723FD50:lI108|H107240650 -107240650:lI97|H107240E90 -107240E90:lI110|H107241610 -107241610:lI103|H107241D30 -107241D30:lI47|H1072423F0 -1072423F0:lI50|H107242A50 -107242A50:lI54|H107243030 -107243030:lI46|H1072435A0 -1072435A0:lI48|H107243AD0 -107243AD0:lI46|H107243FC0 -107243FC0:lI50|H1072444B0 -1072444B0:lI47|H107244960 -107244960:lI108|H107244DD0 -107244DD0:lI105|H107245230 -107245230:lI98|H107245680 -107245680:lI47|H107245A80 -107245A80:lI101|H107245E30 -107245E30:lI114|H1072461C0 -1072461C0:lI108|H107246550 -107246550:lI97|H1072468E0 -1072468E0:lI110|H107246C70 -107246C70:lI103|H107246FA0 -107246FA0:lI47|H1072472C0 -1072472C0:lI108|H1072475D0 -1072475D0:lI105|H1072478D0 -1072478D0:lI98|H107247BD0 -107247BD0:lI47|H107247EB0 -107247EB0:lI109|H107248170 -107248170:lI110|H107248430 -107248430:lI101|H1072486E0 -1072486E0:lI115|H107248990 -107248990:lI105|H107248C10 -107248C10:lI97|H107248E80 -107248E80:lI45|H1072490F0 -1072490F0:lI52|H107249350 -107249350:lI46|H1072495B0 -1072495B0:lI50|H107249800 -107249800:lI50|H107249A20 -107249A20:lI47|H280052C20 -10720E708:lH107211A70|H107211A88 -107211A70:t2:H107214EB0,H107214EC0 -107214EC0:Mh43:F:H107218300,H107218320,H107218350,H107218378,H107218398,H1072183D0,H1072183E8,H107218420,H107218450,H107218470,H107218490,H1072184B8,H1072184C8,H1072184E8,H107218518 -107218300:Mn3:H10721B7F0,H10721B800,H10721B810 -10721B7F0:lH10721ED40|N -10721ED40:lI109|H107222200 -107222200:lI101|H1072253A8 -1072253A8:lI103|H107228200 -107228200:lI97|H10722AC48 -10722AC48:lI99|H10722D360 -10722D360:lI111|H10722F7F8 -10722F7F8:lI95|H107231990 -107231990:lI116|H107233818 -107233818:lI101|H1072353B0 -1072353B0:lI120|H107236CE8 -107236CE8:lI116|H1072383E0 -1072383E0:lI95|H1072398F8 -1072398F8:lI112|H10723ACB0 -10723ACB0:lI97|H10723BDE0 -10723BDE0:lI114|H10723CDA0 -10723CDA0:lI115|H10723DBA0 -10723DBA0:lI101|H10723E820 -10723E820:lI114|H10723F3A0 -10723F3A0:lI95|H10723FDD0 -10723FDD0:lI118|H1072406C0 -1072406C0:lI51|H107240EE0 -107240EE0:lI46|H107241650 -107241650:lI98|H107241D60 -107241D60:lI101|H107242420 -107242420:lI97|H107242A70 -107242A70:lI109|N -10721B810:lH10721ED60|N -10721ED60:lI109|H107222220 -107222220:lI101|H1072253C8 -1072253C8:lI103|H107228220 -107228220:lI97|H10722AC68 -10722AC68:lI99|H10722D380 -10722D380:lI111|H10722F818 -10722F818:lI95|H1072319B0 -1072319B0:lI112|H107233838 -107233838:lI101|H1072353D0 -1072353D0:lI114|H107236D08 -107236D08:lI95|H107238400 -107238400:lI109|H107239918 -107239918:lI101|H10723ACD0 -10723ACD0:lI100|H10723BE00 -10723BE00:lI105|H10723CDC0 -10723CDC0:lI97|H10723DBC0 -10723DBC0:lI95|H10723E830 -10723E830:lI103|H10723F3B0 -10723F3B0:lI97|H10723FDE0 -10723FDE0:lI116|H1072406D0 -1072406D0:lI101|H107240EF0 -107240EF0:lI119|H107241660 -107241660:lI97|H107241D70 -107241D70:lI121|H107242430 -107242430:lI95|H107242A80 -107242A80:lI99|H107243050 -107243050:lI111|H1072435C0 -1072435C0:lI110|H107243AF0 -107243AF0:lI116|H107243FE0 -107243FE0:lI114|H1072444D0 -1072444D0:lI111|H107244980 -107244980:lI108|H107244DF0 -107244DF0:lI95|H107245250 -107245250:lI118|H1072456A0 -1072456A0:lI49|H107245AA0 -107245AA0:lI46|H107245E50 -107245E50:lI98|H1072461E0 -1072461E0:lI101|H107246570 -107246570:lI97|H107246900 -107246900:lI109|N -10721B800:lH10721ED50|N -10721ED50:lI109|H107222210 -107222210:lI101|H1072253B8 -1072253B8:lI103|H107228210 -107228210:lI97|H10722AC58 -10722AC58:lI99|H10722D370 -10722D370:lI111|H10722F808 -10722F808:lI95|H1072319A0 -1072319A0:lI116|H107233828 -107233828:lI105|H1072353C0 -1072353C0:lI109|H107236CF8 -107236CF8:lI101|H1072383F0 -1072383F0:lI114|H107239908 -107239908:lI46|H10723ACC0 -10723ACC0:lI98|H10723BDF0 -10723BDF0:lI101|H10723CDB0 -10723CDB0:lI97|H10723DBB0 -10723DBB0:lI109|N -107218518:Mn5:H10721BB78,H10721BB88,H10721BB98,H10721BBA8,H10721BBB8 -10721BB78:lH10721F110|N -10721F110:lI109|H1072225E0 -1072225E0:lI101|H107225788 -107225788:lI103|H1072285E0 -1072285E0:lI97|H10722B028 -10722B028:lI99|H10722D740 -10722D740:lI111|H10722FBD8 -10722FBD8:lI95|H107231D70 -107231D70:lI98|H107233BF8 -107233BF8:lI105|H107235790 -107235790:lI110|H1072370B8 -1072370B8:lI97|H1072387B0 -1072387B0:lI114|H107239CA8 -107239CA8:lI121|H10723B060 -10723B060:lI95|H10723C190 -10723C190:lI110|H10723D110 -10723D110:lI97|H10723DF10 -10723DF10:lI109|H10723EB70 -10723EB70:lI101|H10723F6D0 -10723F6D0:lI95|H1072400D0 -1072400D0:lI114|H1072409B0 -1072409B0:lI101|H107241190 -107241190:lI115|H1072418E0 -1072418E0:lI111|H107241FD0 -107241FD0:lI108|H107242640 -107242640:lI118|H107242C80 -107242C80:lI101|H107243210 -107243210:lI114|H107243760 -107243760:lI95|H107243C80 -107243C80:lI118|H107244170 -107244170:lI50|H107244620 -107244620:lI46|H107244A90 -107244A90:lI98|H107244F00 -107244F00:lI101|H107245350 -107245350:lI97|H107245750 -107245750:lI109|N -10721BBB8:lH10721F150|N -10721F150:lI109|H107222620 -107222620:lI101|H1072257C8 -1072257C8:lI103|H107228620 -107228620:lI97|H10722B068 -10722B068:lI99|H10722D780 -10722D780:lI111|H10722FC18 -10722FC18:lI95|H107231DB0 -107231DB0:lI101|H107233C38 -107233C38:lI114|H1072357D0 -1072357D0:lI108|H1072370F8 -1072370F8:lI95|H1072387F0 -1072387F0:lI100|H107239CE8 -107239CE8:lI105|H10723B0A0 -10723B0A0:lI115|H10723C1D0 -10723C1D0:lI116|H10723D150 -10723D150:lI95|H10723DF40 -10723DF40:lI101|H10723EBA0 -10723EBA0:lI110|H10723F700 -10723F700:lI99|H107240100 -107240100:lI111|H1072409E0 -1072409E0:lI100|H1072411C0 -1072411C0:lI101|H107241910 -107241910:lI114|H107242000 -107242000:lI46|H107242670 -107242670:lI98|H107242CB0 -107242CB0:lI101|H107243230 -107243230:lI97|H107243780 -107243780:lI109|N -10721BBA8:lH10721F140|N -10721F140:lI109|H107222610 -107222610:lI101|H1072257B8 -1072257B8:lI103|H107228610 -107228610:lI97|H10722B058 -10722B058:lI99|H10722D770 -10722D770:lI111|H10722FC08 -10722FC08:lI95|H107231DA0 -107231DA0:lI99|H107233C28 -107233C28:lI111|H1072357C0 -1072357C0:lI109|H1072370E8 -1072370E8:lI112|H1072387E0 -1072387E0:lI97|H107239CD8 -107239CD8:lI99|H10723B090 -10723B090:lI116|H10723C1C0 -10723C1C0:lI95|H10723D140 -10723D140:lI116|H10723DF30 -10723DF30:lI101|H10723EB90 -10723EB90:lI120|H10723F6F0 -10723F6F0:lI116|H1072400F0 -1072400F0:lI95|H1072409D0 -1072409D0:lI101|H1072411B0 -1072411B0:lI110|H107241900 -107241900:lI99|H107241FF0 -107241FF0:lI111|H107242660 -107242660:lI100|H107242CA0 -107242CA0:lI101|H107243220 -107243220:lI114|H107243770 -107243770:lI46|H107243C90 -107243C90:lI98|H107244180 -107244180:lI101|H107244630 -107244630:lI97|H107244AA0 -107244AA0:lI109|N -10721BB98:lH10721F130|N -10721F130:lI109|H107222600 -107222600:lI101|H1072257A8 -1072257A8:lI103|H107228600 -107228600:lI97|H10722B048 -10722B048:lI99|H10722D760 -10722D760:lI111|H10722FBF8 -10722FBF8:lI95|H107231D90 -107231D90:lI117|H107233C18 -107233C18:lI115|H1072357B0 -1072357B0:lI101|H1072370D8 -1072370D8:lI114|H1072387D0 -1072387D0:lI46|H107239CC8 -107239CC8:lI98|H10723B080 -10723B080:lI101|H10723C1B0 -10723C1B0:lI97|H10723D130 -10723D130:lI109|N -10721BB88:lH10721F120|N -10721F120:lI109|H1072225F0 -1072225F0:lI101|H107225798 -107225798:lI103|H1072285F0 -1072285F0:lI97|H10722B038 -10722B038:lI99|H10722D750 -10722D750:lI111|H10722FBE8 -10722FBE8:lI95|H107231D80 -107231D80:lI101|H107233C08 -107233C08:lI100|H1072357A0 -1072357A0:lI105|H1072370C8 -1072370C8:lI115|H1072387C0 -1072387C0:lI116|H107239CB8 -107239CB8:lI95|H10723B070 -10723B070:lI99|H10723C1A0 -10723C1A0:lI111|H10723D120 -10723D120:lI109|H10723DF20 -10723DF20:lI112|H10723EB80 -10723EB80:lI114|H10723F6E0 -10723F6E0:lI101|H1072400E0 -1072400E0:lI115|H1072409C0 -1072409C0:lI115|H1072411A0 -1072411A0:lI46|H1072418F0 -1072418F0:lI98|H107241FE0 -107241FE0:lI101|H107242650 -107242650:lI97|H107242C90 -107242C90:lI109|N -1072184E8:Mn5:H10721BB20,H10721BB30,H10721BB40,H10721BB58,H10721BB68 -10721BB20:lH10721F0B0|N -10721F0B0:lI109|H107222580 -107222580:lI101|H107225728 -107225728:lI103|H107228580 -107228580:lI97|H10722AFC8 -10722AFC8:lI99|H10722D6E0 -10722D6E0:lI111|H10722FB78 -10722FB78:lI95|H107231D10 -107231D10:lI116|H107233B98 -107233B98:lI99|H107235730 -107235730:lI112|H107237068 -107237068:lI46|H107238760 -107238760:lI98|H107239C58 -107239C58:lI101|H10723B010 -10723B010:lI97|H10723C140 -10723C140:lI109|N -10721BB68:lH10721F100|N -10721F100:lI109|H1072225D0 -1072225D0:lI101|H107225778 -107225778:lI103|H1072285D0 -1072285D0:lI97|H10722B018 -10722B018:lI99|H10722D730 -10722D730:lI111|H10722FBC8 -10722FBC8:lI95|H107231D60 -107231D60:lI102|H107233BE8 -107233BE8:lI105|H107235780 -107235780:lI108|H1072370A8 -1072370A8:lI116|H1072387A0 -1072387A0:lI101|H107239C98 -107239C98:lI114|H10723B050 -10723B050:lI46|H10723C180 -10723C180:lI98|H10723D100 -10723D100:lI101|H10723DF00 -10723DF00:lI97|H10723EB60 -10723EB60:lI109|N -10721BB58:lH10721F0F0|N -10721F0F0:lI109|H1072225C0 -1072225C0:lI101|H107225768 -107225768:lI103|H1072285C0 -1072285C0:lI97|H10722B008 -10722B008:lI99|H10722D720 -10722D720:lI111|H10722FBB8 -10722FBB8:lI95|H107231D50 -107231D50:lI116|H107233BD8 -107233BD8:lI114|H107235770 -107235770:lI97|H107237098 -107237098:lI110|H107238790 -107238790:lI115|H107239C88 -107239C88:lI95|H10723B040 -10723B040:lI115|H10723C170 -10723C170:lI101|H10723D0F0 -10723D0F0:lI110|H10723DEF0 -10723DEF0:lI100|H10723EB50 -10723EB50:lI101|H10723F6C0 -10723F6C0:lI114|H1072400C0 -1072400C0:lI46|H1072409A0 -1072409A0:lI98|H107241180 -107241180:lI101|H1072418D0 -1072418D0:lI97|H107241FC0 -107241FC0:lI109|N -10721BB40:Mn2:H10721F0D0,H10721F0E0 -10721F0D0:lH1072225A0|N -1072225A0:lI109|H107225748 -107225748:lI101|H1072285A0 -1072285A0:lI103|H10722AFE8 -10722AFE8:lI97|H10722D700 -10722D700:lI99|H10722FB98 -10722FB98:lI111|H107231D30 -107231D30:lI95|H107233BB8 -107233BB8:lI98|H107235750 -107235750:lI105|H107237078 -107237078:lI110|H107238770 -107238770:lI97|H107239C68 -107239C68:lI114|H10723B020 -10723B020:lI121|H10723C150 -10723C150:lI95|H10723D0D0 -10723D0D0:lI116|H10723DED0 -10723DED0:lI114|H10723EB30 -10723EB30:lI97|H10723F6A0 -10723F6A0:lI110|H1072400A0 -1072400A0:lI115|H107240980 -107240980:lI102|H107241160 -107241160:lI111|H1072418B0 -1072418B0:lI114|H107241FA0 -107241FA0:lI109|H107242620 -107242620:lI101|H107242C60 -107242C60:lI114|H1072431F0 -1072431F0:lI95|H107243740 -107243740:lI118|H107243C60 -107243C60:lI51|H107244150 -107244150:lI46|H107244600 -107244600:lI98|H107244A70 -107244A70:lI101|H107244EE0 -107244EE0:lI97|H107245330 -107245330:lI109|N -10721F0E0:lH1072225B0|N -1072225B0:lI109|H107225758 -107225758:lI101|H1072285B0 -1072285B0:lI103|H10722AFF8 -10722AFF8:lI97|H10722D710 -10722D710:lI99|H10722FBA8 -10722FBA8:lI111|H107231D40 -107231D40:lI95|H107233BC8 -107233BC8:lI99|H107235760 -107235760:lI111|H107237088 -107237088:lI109|H107238780 -107238780:lI112|H107239C78 -107239C78:lI97|H10723B030 -10723B030:lI99|H10723C160 -10723C160:lI116|H10723D0E0 -10723D0E0:lI95|H10723DEE0 -10723DEE0:lI116|H10723EB40 -10723EB40:lI101|H10723F6B0 -10723F6B0:lI120|H1072400B0 -1072400B0:lI116|H107240990 -107240990:lI95|H107241170 -107241170:lI101|H1072418C0 -1072418C0:lI110|H107241FB0 -107241FB0:lI99|H107242630 -107242630:lI111|H107242C70 -107242C70:lI100|H107243200 -107243200:lI101|H107243750 -107243750:lI114|H107243C70 -107243C70:lI95|H107244160 -107244160:lI118|H107244610 -107244610:lI49|H107244A80 -107244A80:lI46|H107244EF0 -107244EF0:lI98|H107245340 -107245340:lI101|H107245740 -107245740:lI97|H107245B10 -107245B10:lI109|N -10721BB30:lH10721F0C0|N -10721F0C0:lI109|H107222590 -107222590:lI101|H107225738 -107225738:lI103|H107228590 -107228590:lI97|H10722AFD8 -10722AFD8:lI99|H10722D6F0 -10722D6F0:lI111|H10722FB88 -10722FB88:lI46|H107231D20 -107231D20:lI97|H107233BA8 -107233BA8:lI112|H107235740 -107235740:lI112|N -1072184C8:Mn3:H10721BAF0,H10721BB00,H10721BB10 -10721BAF0:lH10721F080|N -10721F080:lI109|H107222550 -107222550:lI101|H1072256F8 -1072256F8:lI103|H107228550 -107228550:lI97|H10722AF98 -10722AF98:lI99|H10722D6B0 -10722D6B0:lI111|H10722FB48 -10722FB48:lI95|H107231CE0 -107231CE0:lI109|H107233B68 -107233B68:lI105|H107235700 -107235700:lI115|H107237038 -107237038:lI99|H107238730 -107238730:lI95|H107239C28 -107239C28:lI115|H10723AFE0 -10723AFE0:lI117|H10723C110 -10723C110:lI112|H10723D0A0 -10723D0A0:lI46|H10723DEA0 -10723DEA0:lI98|H10723EB00 -10723EB00:lI101|H10723F670 -10723F670:lI97|H107240070 -107240070:lI109|N -10721BB10:lH10721F0A0|N -10721F0A0:lI109|H107222570 -107222570:lI101|H107225718 -107225718:lI103|H107228570 -107228570:lI97|H10722AFB8 -10722AFB8:lI99|H10722D6D0 -10722D6D0:lI111|H10722FB68 -10722FB68:lI95|H107231D00 -107231D00:lI109|H107233B88 -107233B88:lI101|H107235720 -107235720:lI115|H107237058 -107237058:lI115|H107238750 -107238750:lI101|H107239C48 -107239C48:lI110|H10723B000 -10723B000:lI103|H10723C130 -10723C130:lI101|H10723D0C0 -10723D0C0:lI114|H10723DEC0 -10723DEC0:lI95|H10723EB20 -10723EB20:lI109|H10723F690 -10723F690:lI105|H107240090 -107240090:lI115|H107240970 -107240970:lI99|H107241150 -107241150:lI46|H1072418A0 -1072418A0:lI98|H107241F90 -107241F90:lI101|H107242610 -107242610:lI97|H107242C50 -107242C50:lI109|N -10721BB00:lH10721F090|N -10721F090:lI109|H107222560 -107222560:lI101|H107225708 -107225708:lI103|H107228560 -107228560:lI97|H10722AFA8 -10722AFA8:lI99|H10722D6C0 -10722D6C0:lI111|H10722FB58 -10722FB58:lI95|H107231CF0 -107231CF0:lI112|H107233B78 -107233B78:lI114|H107235710 -107235710:lI101|H107237048 -107237048:lI116|H107238740 -107238740:lI116|H107239C38 -107239C38:lI121|H10723AFF0 -10723AFF0:lI95|H10723C120 -10723C120:lI116|H10723D0B0 -10723D0B0:lI101|H10723DEB0 -10723DEB0:lI120|H10723EB10 -10723EB10:lI116|H10723F680 -10723F680:lI95|H107240080 -107240080:lI101|H107240960 -107240960:lI110|H107241140 -107241140:lI99|H107241890 -107241890:lI111|H107241F80 -107241F80:lI100|H107242600 -107242600:lI101|H107242C40 -107242C40:lI114|H1072431E0 -1072431E0:lI95|H107243730 -107243730:lI118|H107243C50 -107243C50:lI50|H107244140 -107244140:lI46|H1072445F0 -1072445F0:lI98|H107244A60 -107244A60:lI101|H107244ED0 -107244ED0:lI97|H107245320 -107245320:lI109|N -1072184B8:lH10721BAE0|N -10721BAE0:lI109|H10721F070 -10721F070:lI101|H107222540 -107222540:lI103|H1072256E8 -1072256E8:lI97|H107228540 -107228540:lI99|H10722AF88 -10722AF88:lI111|H10722D6A0 -10722D6A0:lI95|H10722FB38 -10722FB38:lI102|H107231CD0 -107231CD0:lI108|H107233B58 -107233B58:lI101|H1072356F0 -1072356F0:lI120|H107237028 -107237028:lI95|H107238720 -107238720:lI115|H107239C18 -107239C18:lI99|H10723AFD0 -10723AFD0:lI97|H10723C100 -10723C100:lI110|H10723D090 -10723D090:lI110|H10723DE90 -10723DE90:lI101|H10723EAF0 -10723EAF0:lI114|H10723F660 -10723F660:lI95|H107240060 -107240060:lI104|H107240950 -107240950:lI97|H107241130 -107241130:lI110|H107241880 -107241880:lI100|H107241F70 -107241F70:lI108|H1072425F0 -1072425F0:lI101|H107242C30 -107242C30:lI114|H1072431D0 -1072431D0:lI46|H107243720 -107243720:lI98|H107243C40 -107243C40:lI101|H107244130 -107244130:lI97|H1072445E0 -1072445E0:lI109|N -107218490:Mn4:H10721BAA0,H10721BAB0,H10721BAC0,H10721BAD0 -10721BAA0:lH10721F030|N -10721F030:lI109|H107222500 -107222500:lI101|H1072256A8 -1072256A8:lI103|H107228500 -107228500:lI97|H10722AF48 -10722AF48:lI99|H10722D660 -10722D660:lI111|H10722FAF8 -10722FAF8:lI95|H107231C90 -107231C90:lI116|H107233B18 -107233B18:lI99|H1072356B0 -1072356B0:lI112|H107236FE8 -107236FE8:lI95|H1072386E0 -1072386E0:lI99|H107239BD8 -107239BD8:lI111|H10723AF90 -10723AF90:lI110|H10723C0C0 -10723C0C0:lI110|H10723D050 -10723D050:lI101|H10723DE50 -10723DE50:lI99|H10723EAB0 -10723EAB0:lI116|H10723F620 -10723F620:lI105|H107240040 -107240040:lI111|H107240930 -107240930:lI110|H107241110 -107241110:lI95|H107241860 -107241860:lI115|H107241F50 -107241F50:lI117|H1072425D0 -1072425D0:lI112|H107242C10 -107242C10:lI46|H1072431B0 -1072431B0:lI98|H107243700 -107243700:lI101|H107243C20 -107243C20:lI97|H107244110 -107244110:lI109|N -10721BAD0:lH10721F060|N -10721F060:lI109|H107222530 -107222530:lI101|H1072256D8 -1072256D8:lI103|H107228530 -107228530:lI97|H10722AF78 -10722AF78:lI99|H10722D690 -10722D690:lI111|H10722FB28 -10722FB28:lI95|H107231CC0 -107231CC0:lI98|H107233B48 -107233B48:lI105|H1072356E0 -1072356E0:lI110|H107237018 -107237018:lI97|H107238710 -107238710:lI114|H107239C08 -107239C08:lI121|H10723AFC0 -10723AFC0:lI95|H10723C0F0 -10723C0F0:lI101|H10723D080 -10723D080:lI110|H10723DE80 -10723DE80:lI99|H10723EAE0 -10723EAE0:lI111|H10723F650 -10723F650:lI100|H107240050 -107240050:lI101|H107240940 -107240940:lI114|H107241120 -107241120:lI95|H107241870 -107241870:lI108|H107241F60 -107241F60:lI105|H1072425E0 -1072425E0:lI98|H107242C20 -107242C20:lI46|H1072431C0 -1072431C0:lI98|H107243710 -107243710:lI101|H107243C30 -107243C30:lI97|H107244120 -107244120:lI109|N -10721BAC0:lH10721F050|N -10721F050:lI109|H107222520 -107222520:lI101|H1072256C8 -1072256C8:lI103|H107228520 -107228520:lI97|H10722AF68 -10722AF68:lI99|H10722D680 -10722D680:lI111|H10722FB18 -10722FB18:lI95|H107231CB0 -107231CB0:lI117|H107233B38 -107233B38:lI100|H1072356D0 -1072356D0:lI112|H107237008 -107237008:lI95|H107238700 -107238700:lI115|H107239BF8 -107239BF8:lI117|H10723AFB0 -10723AFB0:lI112|H10723C0E0 -10723C0E0:lI46|H10723D070 -10723D070:lI98|H10723DE70 -10723DE70:lI101|H10723EAD0 -10723EAD0:lI97|H10723F640 -10723F640:lI109|N -10721BAB0:lH10721F040|N -10721F040:lI109|H107222510 -107222510:lI101|H1072256B8 -1072256B8:lI103|H107228510 -107228510:lI97|H10722AF58 -10722AF58:lI99|H10722D670 -10722D670:lI111|H10722FB08 -10722FB08:lI95|H107231CA0 -107231CA0:lI109|H107233B28 -107233B28:lI111|H1072356C0 -1072356C0:lI110|H107236FF8 -107236FF8:lI105|H1072386F0 -1072386F0:lI116|H107239BE8 -107239BE8:lI111|H10723AFA0 -10723AFA0:lI114|H10723C0D0 -10723C0D0:lI46|H10723D060 -10723D060:lI98|H10723DE60 -10723DE60:lI101|H10723EAC0 -10723EAC0:lI97|H10723F630 -10723F630:lI109|N -107218470:Mn3:H10721BA70,H10721BA80,H10721BA90 -10721BA70:lH10721F000|N -10721F000:lI109|H1072224D0 -1072224D0:lI101|H107225678 -107225678:lI103|H1072284D0 -1072284D0:lI97|H10722AF18 -10722AF18:lI99|H10722D630 -10722D630:lI111|H10722FAC8 -10722FAC8:lI95|H107231C60 -107231C60:lI116|H107233AE8 -107233AE8:lI114|H107235680 -107235680:lI97|H107236FB8 -107236FB8:lI110|H1072386B0 -1072386B0:lI115|H107239BA8 -107239BA8:lI112|H10723AF60 -10723AF60:lI111|H10723C090 -10723C090:lI114|H10723D020 -10723D020:lI116|H10723DE20 -10723DE20:lI46|H10723EA80 -10723EA80:lI98|H10723F5F0 -10723F5F0:lI101|H107240010 -107240010:lI97|H107240900 -107240900:lI109|N -10721BA90:lH10721F020|N -10721F020:lI109|H1072224F0 -1072224F0:lI101|H107225698 -107225698:lI103|H1072284F0 -1072284F0:lI97|H10722AF38 -10722AF38:lI99|H10722D650 -10722D650:lI111|H10722FAE8 -10722FAE8:lI95|H107231C80 -107231C80:lI98|H107233B08 -107233B08:lI101|H1072356A0 -1072356A0:lI114|H107236FD8 -107236FD8:lI95|H1072386D0 -1072386D0:lI109|H107239BC8 -107239BC8:lI101|H10723AF80 -10723AF80:lI100|H10723C0B0 -10723C0B0:lI105|H10723D040 -10723D040:lI97|H10723DE40 -10723DE40:lI95|H10723EAA0 -10723EAA0:lI103|H10723F610 -10723F610:lI97|H107240030 -107240030:lI116|H107240920 -107240920:lI101|H107241100 -107241100:lI119|H107241850 -107241850:lI97|H107241F40 -107241F40:lI121|H1072425C0 -1072425C0:lI95|H107242C00 -107242C00:lI99|H1072431A0 -1072431A0:lI111|H1072436F0 -1072436F0:lI110|H107243C10 -107243C10:lI116|H107244100 -107244100:lI114|H1072445D0 -1072445D0:lI111|H107244A50 -107244A50:lI108|H107244EC0 -107244EC0:lI95|H107245310 -107245310:lI118|H107245730 -107245730:lI50|H107245B00 -107245B00:lI46|H107245EA0 -107245EA0:lI98|H107246230 -107246230:lI101|H1072465C0 -1072465C0:lI97|H107246950 -107246950:lI109|N -10721BA80:lH10721F010|N -10721F010:lI109|H1072224E0 -1072224E0:lI101|H107225688 -107225688:lI103|H1072284E0 -1072284E0:lI97|H10722AF28 -10722AF28:lI99|H10722D640 -10722D640:lI111|H10722FAD8 -10722FAD8:lI95|H107231C70 -107231C70:lI116|H107233AF8 -107233AF8:lI101|H107235690 -107235690:lI120|H107236FC8 -107236FC8:lI116|H1072386C0 -1072386C0:lI95|H107239BB8 -107239BB8:lI112|H10723AF70 -10723AF70:lI97|H10723C0A0 -10723C0A0:lI114|H10723D030 -10723D030:lI115|H10723DE30 -10723DE30:lI101|H10723EA90 -10723EA90:lI114|H10723F600 -10723F600:lI95|H107240020 -107240020:lI118|H107240910 -107240910:lI49|H1072410F0 -1072410F0:lI46|H107241840 -107241840:lI98|H107241F30 -107241F30:lI101|H1072425B0 -1072425B0:lI97|H107242BF0 -107242BF0:lI109|N -107218450:Mn3:H10721BA40,H10721BA50,H10721BA60 -10721BA40:lH10721EFD0|N -10721EFD0:lI109|H1072224A0 -1072224A0:lI101|H107225648 -107225648:lI103|H1072284A0 -1072284A0:lI97|H10722AEE8 -10722AEE8:lI99|H10722D600 -10722D600:lI111|H10722FA98 -10722FA98:lI95|H107231C30 -107231C30:lI115|H107233AB8 -107233AB8:lI117|H107235650 -107235650:lI112|H107236F88 -107236F88:lI46|H107238680 -107238680:lI98|H107239B78 -107239B78:lI101|H10723AF30 -10723AF30:lI97|H10723C060 -10723C060:lI109|N -10721BA60:lH10721EFF0|N -10721EFF0:lI109|H1072224C0 -1072224C0:lI101|H107225668 -107225668:lI103|H1072284C0 -1072284C0:lI97|H10722AF08 -10722AF08:lI99|H10722D620 -10722D620:lI111|H10722FAB8 -10722FAB8:lI95|H107231C50 -107231C50:lI98|H107233AD8 -107233AD8:lI101|H107235670 -107235670:lI114|H107236FA8 -107236FA8:lI95|H1072386A0 -1072386A0:lI101|H107239B98 -107239B98:lI110|H10723AF50 -10723AF50:lI99|H10723C080 -10723C080:lI111|H10723D010 -10723D010:lI100|H10723DE10 -10723DE10:lI101|H10723EA70 -10723EA70:lI114|H10723F5E0 -10723F5E0:lI46|H107240000 -107240000:lI98|H1072408F0 -1072408F0:lI101|H1072410E0 -1072410E0:lI97|H107241830 -107241830:lI109|N -10721BA50:lH10721EFE0|N -10721EFE0:lI109|H1072224B0 -1072224B0:lI101|H107225658 -107225658:lI103|H1072284B0 -1072284B0:lI97|H10722AEF8 -10722AEF8:lI99|H10722D610 -10722D610:lI111|H10722FAA8 -10722FAA8:lI95|H107231C40 -107231C40:lI100|H107233AC8 -107233AC8:lI105|H107235660 -107235660:lI103|H107236F98 -107236F98:lI105|H107238690 -107238690:lI116|H107239B88 -107239B88:lI95|H10723AF40 -10723AF40:lI109|H10723C070 -10723C070:lI97|H10723D000 -10723D000:lI112|H10723DE00 -10723DE00:lI46|H10723EA60 -10723EA60:lI98|H10723F5D0 -10723F5D0:lI101|H10723FFF0 -10723FFF0:lI97|H1072408E0 -1072408E0:lI109|N -107218420:Mn5:H10721B9F0,H10721BA00,H10721BA10,H10721BA20,H10721BA30 -10721B9F0:lH10721EF80|N -10721EF80:lI109|H107222450 -107222450:lI101|H1072255F8 -1072255F8:lI103|H107228450 -107228450:lI97|H10722AE98 -10722AE98:lI99|H10722D5B0 -10722D5B0:lI111|H10722FA48 -10722FA48:lI95|H107231BE0 -107231BE0:lI112|H107233A68 -107233A68:lI101|H107235600 -107235600:lI114|H107236F38 -107236F38:lI95|H107238630 -107238630:lI109|H107239B38 -107239B38:lI101|H10723AEF0 -10723AEF0:lI100|H10723C020 -10723C020:lI105|H10723CFC0 -10723CFC0:lI97|H10723DDC0 -10723DDC0:lI95|H10723EA20 -10723EA20:lI103|H10723F590 -10723F590:lI97|H10723FFB0 -10723FFB0:lI116|H1072408A0 -1072408A0:lI101|H1072410A0 -1072410A0:lI119|H1072417F0 -1072417F0:lI97|H107241EF0 -107241EF0:lI121|H107242570 -107242570:lI95|H107242BB0 -107242BB0:lI99|H107243160 -107243160:lI111|H1072436B0 -1072436B0:lI110|H107243BD0 -107243BD0:lI116|H1072440C0 -1072440C0:lI114|H107244590 -107244590:lI111|H107244A10 -107244A10:lI108|H107244E80 -107244E80:lI95|H1072452D0 -1072452D0:lI118|H107245700 -107245700:lI50|H107245AE0 -107245AE0:lI46|H107245E80 -107245E80:lI98|H107246210 -107246210:lI101|H1072465A0 -1072465A0:lI97|H107246930 -107246930:lI109|N -10721BA30:lH10721EFC0|N -10721EFC0:lI109|H107222490 -107222490:lI101|H107225638 -107225638:lI103|H107228490 -107228490:lI97|H10722AED8 -10722AED8:lI99|H10722D5F0 -10722D5F0:lI111|H10722FA88 -10722FA88:lI46|H107231C20 -107231C20:lI97|H107233AA8 -107233AA8:lI112|H107235640 -107235640:lI112|H107236F78 -107236F78:lI117|H107238670 -107238670:lI112|N -10721BA20:lH10721EFB0|N -10721EFB0:lI109|H107222480 -107222480:lI101|H107225628 -107225628:lI103|H107228480 -107228480:lI97|H10722AEC8 -10722AEC8:lI99|H10722D5E0 -10722D5E0:lI111|H10722FA78 -10722FA78:lI95|H107231C10 -107231C10:lI112|H107233A98 -107233A98:lI101|H107235630 -107235630:lI114|H107236F68 -107236F68:lI95|H107238660 -107238660:lI109|H107239B68 -107239B68:lI101|H10723AF20 -10723AF20:lI100|H10723C050 -10723C050:lI105|H10723CFF0 -10723CFF0:lI97|H10723DDF0 -10723DDF0:lI95|H10723EA50 -10723EA50:lI103|H10723F5C0 -10723F5C0:lI97|H10723FFE0 -10723FFE0:lI116|H1072408D0 -1072408D0:lI101|H1072410D0 -1072410D0:lI119|H107241820 -107241820:lI97|H107241F20 -107241F20:lI121|H1072425A0 -1072425A0:lI95|H107242BE0 -107242BE0:lI99|H107243190 -107243190:lI111|H1072436E0 -1072436E0:lI110|H107243C00 -107243C00:lI116|H1072440F0 -1072440F0:lI114|H1072445C0 -1072445C0:lI111|H107244A40 -107244A40:lI108|H107244EB0 -107244EB0:lI95|H107245300 -107245300:lI118|H107245720 -107245720:lI51|H107245AF0 -107245AF0:lI46|H107245E90 -107245E90:lI98|H107246220 -107246220:lI101|H1072465B0 -1072465B0:lI97|H107246940 -107246940:lI109|N -10721BA10:lH10721EFA0|N -10721EFA0:lI109|H107222470 -107222470:lI101|H107225618 -107225618:lI103|H107228470 -107228470:lI97|H10722AEB8 -10722AEB8:lI99|H10722D5D0 -10722D5D0:lI111|H10722FA68 -10722FA68:lI95|H107231C00 -107231C00:lI112|H107233A88 -107233A88:lI114|H107235620 -107235620:lI101|H107236F58 -107236F58:lI116|H107238650 -107238650:lI116|H107239B58 -107239B58:lI121|H10723AF10 -10723AF10:lI95|H10723C040 -10723C040:lI116|H10723CFE0 -10723CFE0:lI101|H10723DDE0 -10723DDE0:lI120|H10723EA40 -10723EA40:lI116|H10723F5B0 -10723F5B0:lI95|H10723FFD0 -10723FFD0:lI101|H1072408C0 -1072408C0:lI110|H1072410C0 -1072410C0:lI99|H107241810 -107241810:lI111|H107241F10 -107241F10:lI100|H107242590 -107242590:lI101|H107242BD0 -107242BD0:lI114|H107243180 -107243180:lI95|H1072436D0 -1072436D0:lI118|H107243BF0 -107243BF0:lI51|H1072440E0 -1072440E0:lI46|H1072445B0 -1072445B0:lI98|H107244A30 -107244A30:lI101|H107244EA0 -107244EA0:lI97|H1072452F0 -1072452F0:lI109|N -10721BA00:lH10721EF90|N -10721EF90:lI109|H107222460 -107222460:lI101|H107225608 -107225608:lI103|H107228460 -107228460:lI97|H10722AEA8 -10722AEA8:lI99|H10722D5C0 -10722D5C0:lI111|H10722FA58 -10722FA58:lI95|H107231BF0 -107231BF0:lI98|H107233A78 -107233A78:lI105|H107235610 -107235610:lI110|H107236F48 -107236F48:lI97|H107238640 -107238640:lI114|H107239B48 -107239B48:lI121|H10723AF00 -10723AF00:lI95|H10723C030 -10723C030:lI110|H10723CFD0 -10723CFD0:lI97|H10723DDD0 -10723DDD0:lI109|H10723EA30 -10723EA30:lI101|H10723F5A0 -10723F5A0:lI95|H10723FFC0 -10723FFC0:lI114|H1072408B0 -1072408B0:lI101|H1072410B0 -1072410B0:lI115|H107241800 -107241800:lI111|H107241F00 -107241F00:lI108|H107242580 -107242580:lI118|H107242BC0 -107242BC0:lI101|H107243170 -107243170:lI114|H1072436C0 -1072436C0:lI95|H107243BE0 -107243BE0:lI118|H1072440D0 -1072440D0:lI49|H1072445A0 -1072445A0:lI46|H107244A20 -107244A20:lI98|H107244E90 -107244E90:lI101|H1072452E0 -1072452E0:lI97|H107245710 -107245710:lI109|N -1072183E8:Mn6:H10721B980,H10721B990,H10721B9A0,H10721B9B0,H10721B9D0,H10721B9E0 -10721B980:lH10721EF00|N -10721EF00:lI109|H1072223D0 -1072223D0:lI101|H107225578 -107225578:lI103|H1072283D0 -1072283D0:lI97|H10722AE18 -10722AE18:lI99|H10722D530 -10722D530:lI111|H10722F9C8 -10722F9C8:lI95|H107231B60 -107231B60:lI98|H1072339E8 -1072339E8:lI105|H107235580 -107235580:lI110|H107236EB8 -107236EB8:lI97|H1072385B0 -1072385B0:lI114|H107239AC8 -107239AC8:lI121|H10723AE80 -10723AE80:lI95|H10723BFB0 -10723BFB0:lI116|H10723CF60 -10723CF60:lI114|H10723DD60 -10723DD60:lI97|H10723E9C0 -10723E9C0:lI110|H10723F530 -10723F530:lI115|H10723FF50 -10723FF50:lI102|H107240840 -107240840:lI111|H107241040 -107241040:lI114|H107241790 -107241790:lI109|H107241E90 -107241E90:lI101|H107242520 -107242520:lI114|H107242B60 -107242B60:lI95|H107243110 -107243110:lI118|H107243670 -107243670:lI49|H107243B90 -107243B90:lI46|H107244080 -107244080:lI98|H107244560 -107244560:lI101|H1072449F0 -1072449F0:lI97|H107244E60 -107244E60:lI109|N -10721B9E0:lH10721EF70|N -10721EF70:lI109|H107222440 -107222440:lI101|H1072255E8 -1072255E8:lI103|H107228440 -107228440:lI97|H10722AE88 -10722AE88:lI99|H10722D5A0 -10722D5A0:lI111|H10722FA38 -10722FA38:lI95|H107231BD0 -107231BD0:lI102|H107233A58 -107233A58:lI108|H1072355F0 -1072355F0:lI101|H107236F28 -107236F28:lI120|H107238620 -107238620:lI95|H107239B28 -107239B28:lI115|H10723AEE0 -10723AEE0:lI99|H10723C010 -10723C010:lI97|H10723CFB0 -10723CFB0:lI110|H10723DDB0 -10723DDB0:lI110|H10723EA10 -10723EA10:lI101|H10723F580 -10723F580:lI114|H10723FFA0 -10723FFA0:lI46|H107240890 -107240890:lI98|H107241090 -107241090:lI101|H1072417E0 -1072417E0:lI97|H107241EE0 -107241EE0:lI109|N -10721B9D0:lH10721EF60|N -10721EF60:lI109|H107222430 -107222430:lI101|H1072255D8 -1072255D8:lI103|H107228430 -107228430:lI97|H10722AE78 -10722AE78:lI99|H10722D590 -10722D590:lI111|H10722FA28 -10722FA28:lI95|H107231BC0 -107231BC0:lI115|H107233A48 -107233A48:lI100|H1072355E0 -1072355E0:lI112|H107236F18 -107236F18:lI46|H107238610 -107238610:lI98|H107239B18 -107239B18:lI101|H10723AED0 -10723AED0:lI97|H10723C000 -10723C000:lI109|N -10721B9B0:Mn3:H10721EF30,H10721EF40,H10721EF50 -10721EF30:lH107222400|N -107222400:lI109|H1072255A8 -1072255A8:lI101|H107228400 -107228400:lI103|H10722AE48 -10722AE48:lI97|H10722D560 -10722D560:lI99|H10722F9F8 -10722F9F8:lI111|H107231B90 -107231B90:lI46|H107233A18 -107233A18:lI98|H1072355B0 -1072355B0:lI101|H107236EE8 -107236EE8:lI97|H1072385E0 -1072385E0:lI109|N -10721EF50:lH107222420|N -107222420:lI109|H1072255C8 -1072255C8:lI101|H107228420 -107228420:lI103|H10722AE68 -10722AE68:lI97|H10722D580 -10722D580:lI99|H10722FA18 -10722FA18:lI111|H107231BB0 -107231BB0:lI95|H107233A38 -107233A38:lI116|H1072355D0 -1072355D0:lI101|H107236F08 -107236F08:lI120|H107238600 -107238600:lI116|H107239B08 -107239B08:lI95|H10723AEC0 -10723AEC0:lI109|H10723BFF0 -10723BFF0:lI105|H10723CFA0 -10723CFA0:lI110|H10723DDA0 -10723DDA0:lI105|H10723EA00 -10723EA00:lI95|H10723F570 -10723F570:lI100|H10723FF90 -10723FF90:lI101|H107240880 -107240880:lI99|H107241080 -107241080:lI111|H1072417D0 -1072417D0:lI100|H107241ED0 -107241ED0:lI101|H107242560 -107242560:lI114|H107242BA0 -107242BA0:lI46|H107243150 -107243150:lI98|H1072436A0 -1072436A0:lI101|H107243BC0 -107243BC0:lI97|H1072440B0 -1072440B0:lI109|N -10721EF40:lH107222410|N -107222410:lI109|H1072255B8 -1072255B8:lI101|H107228410 -107228410:lI103|H10722AE58 -10722AE58:lI97|H10722D570 -10722D570:lI99|H10722FA08 -10722FA08:lI111|H107231BA0 -107231BA0:lI95|H107233A28 -107233A28:lI116|H1072355C0 -1072355C0:lI99|H107236EF8 -107236EF8:lI112|H1072385F0 -1072385F0:lI95|H107239AF8 -107239AF8:lI97|H10723AEB0 -10723AEB0:lI99|H10723BFE0 -10723BFE0:lI99|H10723CF90 -10723CF90:lI101|H10723DD90 -10723DD90:lI112|H10723E9F0 -10723E9F0:lI116|H10723F560 -10723F560:lI95|H10723FF80 -10723FF80:lI115|H107240870 -107240870:lI117|H107241070 -107241070:lI112|H1072417C0 -1072417C0:lI46|H107241EC0 -107241EC0:lI98|H107242550 -107242550:lI101|H107242B90 -107242B90:lI97|H107243140 -107243140:lI109|N -10721B9A0:lH10721EF20|N -10721EF20:lI109|H1072223F0 -1072223F0:lI101|H107225598 -107225598:lI103|H1072283F0 -1072283F0:lI97|H10722AE38 -10722AE38:lI99|H10722D550 -10722D550:lI111|H10722F9E8 -10722F9E8:lI95|H107231B80 -107231B80:lI98|H107233A08 -107233A08:lI105|H1072355A0 -1072355A0:lI110|H107236ED8 -107236ED8:lI97|H1072385D0 -1072385D0:lI114|H107239AE8 -107239AE8:lI121|H10723AEA0 -10723AEA0:lI95|H10723BFD0 -10723BFD0:lI110|H10723CF80 -10723CF80:lI97|H10723DD80 -10723DD80:lI109|H10723E9E0 -10723E9E0:lI101|H10723F550 -10723F550:lI95|H10723FF70 -10723FF70:lI114|H107240860 -107240860:lI101|H107241060 -107241060:lI115|H1072417B0 -1072417B0:lI111|H107241EB0 -107241EB0:lI108|H107242540 -107242540:lI118|H107242B80 -107242B80:lI101|H107243130 -107243130:lI114|H107243690 -107243690:lI95|H107243BB0 -107243BB0:lI118|H1072440A0 -1072440A0:lI51|H107244580 -107244580:lI46|H107244A00 -107244A00:lI98|H107244E70 -107244E70:lI101|H1072452C0 -1072452C0:lI97|H1072456F0 -1072456F0:lI109|N -10721B990:lH10721EF10|N -10721EF10:lI109|H1072223E0 -1072223E0:lI101|H107225588 -107225588:lI103|H1072283E0 -1072283E0:lI97|H10722AE28 -10722AE28:lI99|H10722D540 -10722D540:lI111|H10722F9D8 -10722F9D8:lI95|H107231B70 -107231B70:lI101|H1072339F8 -1072339F8:lI114|H107235590 -107235590:lI108|H107236EC8 -107236EC8:lI95|H1072385C0 -1072385C0:lI100|H107239AD8 -107239AD8:lI105|H10723AE90 -10723AE90:lI115|H10723BFC0 -10723BFC0:lI116|H10723CF70 -10723CF70:lI95|H10723DD70 -10723DD70:lI101|H10723E9D0 -10723E9D0:lI110|H10723F540 -10723F540:lI99|H10723FF60 -10723FF60:lI111|H107240850 -107240850:lI100|H107241050 -107241050:lI101|H1072417A0 -1072417A0:lI114|H107241EA0 -107241EA0:lI95|H107242530 -107242530:lI109|H107242B70 -107242B70:lI99|H107243120 -107243120:lI46|H107243680 -107243680:lI98|H107243BA0 -107243BA0:lI101|H107244090 -107244090:lI97|H107244570 -107244570:lI109|N -1072183D0:Mn2:H10721B958,H10721B970 -10721B958:Mn2:H10721EED0,H10721EEE0 -10721EED0:lH1072223A0|N -1072223A0:lI109|H107225548 -107225548:lI101|H1072283A0 -1072283A0:lI103|H10722ADE8 -10722ADE8:lI97|H10722D500 -10722D500:lI99|H10722F998 -10722F998:lI111|H107231B30 -107231B30:lI95|H1072339B8 -1072339B8:lI99|H107235550 -107235550:lI111|H107236E88 -107236E88:lI109|H107238580 -107238580:lI112|H107239A98 -107239A98:lI97|H10723AE50 -10723AE50:lI99|H10723BF80 -10723BF80:lI116|H10723CF30 -10723CF30:lI95|H10723DD30 -10723DD30:lI116|H10723E990 -10723E990:lI101|H10723F500 -10723F500:lI120|H10723FF20 -10723FF20:lI116|H107240810 -107240810:lI95|H107241010 -107241010:lI101|H107241760 -107241760:lI110|H107241E60 -107241E60:lI99|H107242510 -107242510:lI111|H107242B50 -107242B50:lI100|H107243100 -107243100:lI101|H107243660 -107243660:lI114|H107243B80 -107243B80:lI95|H107244070 -107244070:lI118|H107244550 -107244550:lI50|H1072449E0 -1072449E0:lI46|H107244E50 -107244E50:lI98|H1072452B0 -1072452B0:lI101|H1072456E0 -1072456E0:lI97|H107245AD0 -107245AD0:lI109|N -10721EEE0:lH1072223B0|N -1072223B0:lI109|H107225558 -107225558:lI101|H1072283B0 -1072283B0:lI103|H10722ADF8 -10722ADF8:lI97|H10722D510 -10722D510:lI99|H10722F9A8 -10722F9A8:lI111|H107231B40 -107231B40:lI95|H1072339C8 -1072339C8:lI112|H107235560 -107235560:lI101|H107236E98 -107236E98:lI114|H107238590 -107238590:lI95|H107239AA8 -107239AA8:lI101|H10723AE60 -10723AE60:lI110|H10723BF90 -10723BF90:lI99|H10723CF40 -10723CF40:lI111|H10723DD40 -10723DD40:lI100|H10723E9A0 -10723E9A0:lI101|H10723F510 -10723F510:lI114|H10723FF30 -10723FF30:lI46|H107240820 -107240820:lI98|H107241020 -107241020:lI101|H107241770 -107241770:lI97|H107241E70 -107241E70:lI109|N -10721B970:lH10721EEF0|N -10721EEF0:lI109|H1072223C0 -1072223C0:lI101|H107225568 -107225568:lI103|H1072283C0 -1072283C0:lI97|H10722AE08 -10722AE08:lI99|H10722D520 -10722D520:lI111|H10722F9B8 -10722F9B8:lI95|H107231B50 -107231B50:lI117|H1072339D8 -1072339D8:lI115|H107235570 -107235570:lI101|H107236EA8 -107236EA8:lI114|H1072385A0 -1072385A0:lI95|H107239AB8 -107239AB8:lI100|H10723AE70 -10723AE70:lI101|H10723BFA0 -10723BFA0:lI102|H10723CF50 -10723CF50:lI97|H10723DD50 -10723DD50:lI117|H10723E9B0 -10723E9B0:lI108|H10723F520 -10723F520:lI116|H10723FF40 -10723FF40:lI46|H107240830 -107240830:lI98|H107241030 -107241030:lI101|H107241780 -107241780:lI97|H107241E80 -107241E80:lI109|N -107218398:Mn6:H10721B8E8,H10721B8F8,H10721B910,H10721B928,H10721B938,H10721B948 -10721B8E8:lH10721EE50|N -10721EE50:lI109|H107222320 -107222320:lI101|H1072254C8 -1072254C8:lI103|H107228320 -107228320:lI97|H10722AD68 -10722AD68:lI99|H10722D480 -10722D480:lI111|H10722F918 -10722F918:lI95|H107231AB0 -107231AB0:lI112|H107233938 -107233938:lI114|H1072354D0 -1072354D0:lI101|H107236E08 -107236E08:lI116|H107238500 -107238500:lI116|H107239A18 -107239A18:lI121|H10723ADD0 -10723ADD0:lI95|H10723BF00 -10723BF00:lI116|H10723CEB0 -10723CEB0:lI101|H10723DCB0 -10723DCB0:lI120|H10723E920 -10723E920:lI116|H10723F490 -10723F490:lI95|H10723FEB0 -10723FEB0:lI101|H1072407A0 -1072407A0:lI110|H107240FA0 -107240FA0:lI99|H1072416F0 -1072416F0:lI111|H107241E00 -107241E00:lI100|H1072424B0 -1072424B0:lI101|H107242AF0 -107242AF0:lI114|H1072430B0 -1072430B0:lI95|H107243620 -107243620:lI118|H107243B40 -107243B40:lI49|H107244030 -107244030:lI46|H107244510 -107244510:lI98|H1072449B0 -1072449B0:lI101|H107244E20 -107244E20:lI97|H107245280 -107245280:lI109|N -10721B948:lH10721EEC0|N -10721EEC0:lI109|H107222390 -107222390:lI101|H107225538 -107225538:lI103|H107228390 -107228390:lI97|H10722ADD8 -10722ADD8:lI99|H10722D4F0 -10722D4F0:lI111|H10722F988 -10722F988:lI95|H107231B20 -107231B20:lI98|H1072339A8 -1072339A8:lI105|H107235540 -107235540:lI110|H107236E78 -107236E78:lI97|H107238570 -107238570:lI114|H107239A88 -107239A88:lI121|H10723AE40 -10723AE40:lI95|H10723BF70 -10723BF70:lI116|H10723CF20 -10723CF20:lI101|H10723DD20 -10723DD20:lI114|H10723E980 -10723E980:lI109|H10723F4F0 -10723F4F0:lI95|H10723FF10 -10723FF10:lI105|H107240800 -107240800:lI100|H107241000 -107241000:lI46|H107241750 -107241750:lI98|H107241E50 -107241E50:lI101|H107242500 -107242500:lI97|H107242B40 -107242B40:lI109|N -10721B938:lH10721EEB0|N -10721EEB0:lI109|H107222380 -107222380:lI101|H107225528 -107225528:lI103|H107228380 -107228380:lI97|H10722ADC8 -10722ADC8:lI99|H10722D4E0 -10722D4E0:lI111|H10722F978 -10722F978:lI95|H107231B10 -107231B10:lI115|H107233998 -107233998:lI116|H107235530 -107235530:lI97|H107236E68 -107236E68:lI116|H107238560 -107238560:lI115|H107239A78 -107239A78:lI46|H10723AE30 -10723AE30:lI98|H10723BF60 -10723BF60:lI101|H10723CF10 -10723CF10:lI97|H10723DD10 -10723DD10:lI109|N -10721B928:lH10721EEA0|N -10721EEA0:lI109|H107222370 -107222370:lI101|H107225518 -107225518:lI103|H107228370 -107228370:lI97|H10722ADB8 -10722ADB8:lI99|H10722D4D0 -10722D4D0:lI111|H10722F968 -10722F968:lI95|H107231B00 -107231B00:lI99|H107233988 -107233988:lI111|H107235520 -107235520:lI109|H107236E58 -107236E58:lI112|H107238550 -107238550:lI97|H107239A68 -107239A68:lI99|H10723AE20 -10723AE20:lI116|H10723BF50 -10723BF50:lI95|H10723CF00 -10723CF00:lI116|H10723DD00 -10723DD00:lI101|H10723E970 -10723E970:lI120|H10723F4E0 -10723F4E0:lI116|H10723FF00 -10723FF00:lI95|H1072407F0 -1072407F0:lI101|H107240FF0 -107240FF0:lI110|H107241740 -107241740:lI99|H107241E40 -107241E40:lI111|H1072424F0 -1072424F0:lI100|H107242B30 -107242B30:lI101|H1072430F0 -1072430F0:lI114|H107243650 -107243650:lI95|H107243B70 -107243B70:lI118|H107244060 -107244060:lI51|H107244540 -107244540:lI46|H1072449D0 -1072449D0:lI98|H107244E40 -107244E40:lI101|H1072452A0 -1072452A0:lI97|H1072456D0 -1072456D0:lI109|N -10721B910:Mn2:H10721EE80,H10721EE90 -10721EE80:lH107222350|N -107222350:lI109|H1072254F8 -1072254F8:lI101|H107228350 -107228350:lI103|H10722AD98 -10722AD98:lI97|H10722D4B0 -10722D4B0:lI99|H10722F948 -10722F948:lI111|H107231AE0 -107231AE0:lI95|H107233968 -107233968:lI98|H107235500 -107235500:lI101|H107236E38 -107236E38:lI114|H107238530 -107238530:lI95|H107239A48 -107239A48:lI109|H10723AE00 -10723AE00:lI101|H10723BF30 -10723BF30:lI100|H10723CEE0 -10723CEE0:lI105|H10723DCE0 -10723DCE0:lI97|H10723E950 -10723E950:lI95|H10723F4C0 -10723F4C0:lI103|H10723FEE0 -10723FEE0:lI97|H1072407D0 -1072407D0:lI116|H107240FD0 -107240FD0:lI101|H107241720 -107241720:lI119|H107241E30 -107241E30:lI97|H1072424E0 -1072424E0:lI121|H107242B20 -107242B20:lI95|H1072430E0 -1072430E0:lI99|H107243640 -107243640:lI111|H107243B60 -107243B60:lI110|H107244050 -107244050:lI116|H107244530 -107244530:lI114|H1072449C0 -1072449C0:lI111|H107244E30 -107244E30:lI108|H107245290 -107245290:lI95|H1072456C0 -1072456C0:lI118|H107245AC0 -107245AC0:lI51|H107245E70 -107245E70:lI46|H107246200 -107246200:lI98|H107246590 -107246590:lI101|H107246920 -107246920:lI97|H107246C90 -107246C90:lI109|N -10721EE90:lH107222360|N -107222360:lI109|H107225508 -107225508:lI101|H107228360 -107228360:lI103|H10722ADA8 -10722ADA8:lI97|H10722D4C0 -10722D4C0:lI99|H10722F958 -10722F958:lI111|H107231AF0 -107231AF0:lI95|H107233978 -107233978:lI116|H107235510 -107235510:lI99|H107236E48 -107236E48:lI112|H107238540 -107238540:lI95|H107239A58 -107239A58:lI97|H10723AE10 -10723AE10:lI99|H10723BF40 -10723BF40:lI99|H10723CEF0 -10723CEF0:lI101|H10723DCF0 -10723DCF0:lI112|H10723E960 -10723E960:lI116|H10723F4D0 -10723F4D0:lI46|H10723FEF0 -10723FEF0:lI98|H1072407E0 -1072407E0:lI101|H107240FE0 -107240FE0:lI97|H107241730 -107241730:lI109|N -10721B8F8:Mn2:H10721EE60,H10721EE70 -10721EE60:lH107222330|N -107222330:lI109|H1072254D8 -1072254D8:lI101|H107228330 -107228330:lI103|H10722AD78 -10722AD78:lI97|H10722D490 -10722D490:lI99|H10722F928 -10722F928:lI111|H107231AC0 -107231AC0:lI95|H107233948 -107233948:lI116|H1072354E0 -1072354E0:lI101|H107236E18 -107236E18:lI120|H107238510 -107238510:lI116|H107239A28 -107239A28:lI95|H10723ADE0 -10723ADE0:lI112|H10723BF10 -10723BF10:lI97|H10723CEC0 -10723CEC0:lI114|H10723DCC0 -10723DCC0:lI115|H10723E930 -10723E930:lI101|H10723F4A0 -10723F4A0:lI114|H10723FEC0 -10723FEC0:lI95|H1072407B0 -1072407B0:lI118|H107240FB0 -107240FB0:lI50|H107241700 -107241700:lI46|H107241E10 -107241E10:lI98|H1072424C0 -1072424C0:lI101|H107242B00 -107242B00:lI97|H1072430C0 -1072430C0:lI109|N -10721EE70:lH107222340|N -107222340:lI109|H1072254E8 -1072254E8:lI101|H107228340 -107228340:lI103|H10722AD88 -10722AD88:lI97|H10722D4A0 -10722D4A0:lI99|H10722F938 -10722F938:lI111|H107231AD0 -107231AD0:lI95|H107233958 -107233958:lI98|H1072354F0 -1072354F0:lI105|H107236E28 -107236E28:lI110|H107238520 -107238520:lI97|H107239A38 -107239A38:lI114|H10723ADF0 -10723ADF0:lI121|H10723BF20 -10723BF20:lI95|H10723CED0 -10723CED0:lI116|H10723DCD0 -10723DCD0:lI101|H10723E940 -10723E940:lI114|H10723F4B0 -10723F4B0:lI109|H10723FED0 -10723FED0:lI95|H1072407C0 -1072407C0:lI105|H107240FC0 -107240FC0:lI100|H107241710 -107241710:lI95|H107241E20 -107241E20:lI103|H1072424D0 -1072424D0:lI101|H107242B10 -107242B10:lI110|H1072430D0 -1072430D0:lI46|H107243630 -107243630:lI98|H107243B50 -107243B50:lI101|H107244040 -107244040:lI97|H107244520 -107244520:lI109|N -107218378:Mn3:H10721B8B8,H10721B8C8,H10721B8D8 -10721B8B8:lH10721EE18|N -10721EE18:lI109|H1072222E0 -1072222E0:lI101|H107225488 -107225488:lI103|H1072282E0 -1072282E0:lI97|H10722AD28 -10722AD28:lI99|H10722D440 -10722D440:lI111|H10722F8D8 -10722F8D8:lI95|H107231A70 -107231A70:lI101|H1072338F8 -1072338F8:lI110|H107235490 -107235490:lI99|H107236DC8 -107236DC8:lI111|H1072384C0 -1072384C0:lI100|H1072399D8 -1072399D8:lI101|H10723AD90 -10723AD90:lI114|H10723BEC0 -10723BEC0:lI46|H10723CE70 -10723CE70:lI98|H10723DC70 -10723DC70:lI101|H10723E8E0 -10723E8E0:lI97|H10723F460 -10723F460:lI109|N -10721B8D8:Mn1:H10721EE38 -10721EE38:Mn2:H107222300,H107222310 -107222300:lH1072254A8|N -1072254A8:lI109|H107228300 -107228300:lI101|H10722AD48 -10722AD48:lI103|H10722D460 -10722D460:lI97|H10722F8F8 -10722F8F8:lI99|H107231A90 -107231A90:lI111|H107233918 -107233918:lI95|H1072354B0 -1072354B0:lI116|H107236DE8 -107236DE8:lI99|H1072384E0 -1072384E0:lI112|H1072399F8 -1072399F8:lI95|H10723ADB0 -10723ADB0:lI115|H10723BEE0 -10723BEE0:lI117|H10723CE90 -10723CE90:lI112|H10723DC90 -10723DC90:lI46|H10723E900 -10723E900:lI98|H10723F470 -10723F470:lI101|H10723FE90 -10723FE90:lI97|H107240780 -107240780:lI109|N -107222310:lH1072254B8|N -1072254B8:lI109|H107228310 -107228310:lI101|H10722AD58 -10722AD58:lI103|H10722D470 -10722D470:lI97|H10722F908 -10722F908:lI99|H107231AA0 -107231AA0:lI111|H107233928 -107233928:lI95|H1072354C0 -1072354C0:lI116|H107236DF8 -107236DF8:lI101|H1072384F0 -1072384F0:lI120|H107239A08 -107239A08:lI116|H10723ADC0 -10723ADC0:lI95|H10723BEF0 -10723BEF0:lI109|H10723CEA0 -10723CEA0:lI105|H10723DCA0 -10723DCA0:lI110|H10723E910 -10723E910:lI105|H10723F480 -10723F480:lI95|H10723FEA0 -10723FEA0:lI112|H107240790 -107240790:lI97|H107240F90 -107240F90:lI114|H1072416E0 -1072416E0:lI115|H107241DF0 -107241DF0:lI101|H1072424A0 -1072424A0:lI114|H107242AE0 -107242AE0:lI46|H1072430A0 -1072430A0:lI98|H107243610 -107243610:lI101|H107243B30 -107243B30:lI97|H107244020 -107244020:lI109|N -10721B8C8:lH10721EE28|N -10721EE28:lI109|H1072222F0 -1072222F0:lI101|H107225498 -107225498:lI103|H1072282F0 -1072282F0:lI97|H10722AD38 -10722AD38:lI99|H10722D450 -10722D450:lI111|H10722F8E8 -10722F8E8:lI95|H107231A80 -107231A80:lI99|H107233908 -107233908:lI111|H1072354A0 -1072354A0:lI110|H107236DD8 -107236DD8:lI102|H1072384D0 -1072384D0:lI105|H1072399E8 -1072399E8:lI103|H10723ADA0 -10723ADA0:lI46|H10723BED0 -10723BED0:lI98|H10723CE80 -10723CE80:lI101|H10723DC80 -10723DC80:lI97|H10723E8F0 -10723E8F0:lI109|N -107218350:Mn4:H10721B870,H10721B888,H10721B898,H10721B8A8 -10721B870:Mn2:H10721EDC0,H10721EDD0 -10721EDC0:lH107222280|N -107222280:lI109|H107225428 -107225428:lI101|H107228280 -107228280:lI103|H10722ACC8 -10722ACC8:lI97|H10722D3E0 -10722D3E0:lI99|H10722F878 -10722F878:lI111|H107231A10 -107231A10:lI95|H107233898 -107233898:lI109|H107235430 -107235430:lI101|H107236D68 -107236D68:lI115|H107238460 -107238460:lI115|H107239978 -107239978:lI101|H10723AD30 -10723AD30:lI110|H10723BE60 -10723BE60:lI103|H10723CE10 -10723CE10:lI101|H10723DC10 -10723DC10:lI114|H10723E880 -10723E880:lI46|H10723F400 -10723F400:lI98|H10723FE30 -10723FE30:lI101|H107240720 -107240720:lI97|H107240F40 -107240F40:lI109|N -10721EDD0:lH107222290|N -107222290:lI109|H107225438 -107225438:lI101|H107228290 -107228290:lI103|H10722ACD8 -10722ACD8:lI97|H10722D3F0 -10722D3F0:lI99|H10722F888 -10722F888:lI111|H107231A20 -107231A20:lI95|H1072338A8 -1072338A8:lI98|H107235440 -107235440:lI105|H107236D78 -107236D78:lI110|H107238470 -107238470:lI97|H107239988 -107239988:lI114|H10723AD40 -10723AD40:lI121|H10723BE70 -10723BE70:lI95|H10723CE20 -10723CE20:lI116|H10723DC20 -10723DC20:lI114|H10723E890 -10723E890:lI97|H10723F410 -10723F410:lI110|H10723FE40 -10723FE40:lI115|H107240730 -107240730:lI102|H107240F50 -107240F50:lI111|H1072416A0 -1072416A0:lI114|H107241DB0 -107241DB0:lI109|H107242460 -107242460:lI101|H107242AB0 -107242AB0:lI114|H107243070 -107243070:lI95|H1072435E0 -1072435E0:lI118|H107243B10 -107243B10:lI50|H107244000 -107244000:lI46|H1072444F0 -1072444F0:lI98|H1072449A0 -1072449A0:lI101|H107244E10 -107244E10:lI97|H107245270 -107245270:lI109|N -10721B8A8:Mn1:H10721EE00 -10721EE00:Mn2:H1072222C0,H1072222D0 -1072222C0:lH107225468|N -107225468:lI109|H1072282C0 -1072282C0:lI101|H10722AD08 -10722AD08:lI103|H10722D420 -10722D420:lI97|H10722F8B8 -10722F8B8:lI99|H107231A50 -107231A50:lI111|H1072338D8 -1072338D8:lI95|H107235470 -107235470:lI98|H107236DA8 -107236DA8:lI105|H1072384A0 -1072384A0:lI110|H1072399B8 -1072399B8:lI97|H10723AD70 -10723AD70:lI114|H10723BEA0 -10723BEA0:lI121|H10723CE50 -10723CE50:lI95|H10723DC50 -10723DC50:lI101|H10723E8C0 -10723E8C0:lI110|H10723F440 -10723F440:lI99|H10723FE70 -10723FE70:lI111|H107240760 -107240760:lI100|H107240F70 -107240F70:lI101|H1072416C0 -1072416C0:lI114|H107241DD0 -107241DD0:lI46|H107242480 -107242480:lI98|H107242AD0 -107242AD0:lI101|H107243090 -107243090:lI97|H107243600 -107243600:lI109|N -1072222D0:lH107225478|N -107225478:lI109|H1072282D0 -1072282D0:lI101|H10722AD18 -10722AD18:lI103|H10722D430 -10722D430:lI97|H10722F8C8 -10722F8C8:lI99|H107231A60 -107231A60:lI111|H1072338E8 -1072338E8:lI95|H107235480 -107235480:lI99|H107236DB8 -107236DB8:lI111|H1072384B0 -1072384B0:lI110|H1072399C8 -1072399C8:lI102|H10723AD80 -10723AD80:lI105|H10723BEB0 -10723BEB0:lI103|H10723CE60 -10723CE60:lI95|H10723DC60 -10723DC60:lI109|H10723E8D0 -10723E8D0:lI105|H10723F450 -10723F450:lI115|H10723FE80 -10723FE80:lI99|H107240770 -107240770:lI46|H107240F80 -107240F80:lI98|H1072416D0 -1072416D0:lI101|H107241DE0 -107241DE0:lI97|H107242490 -107242490:lI109|N -10721B898:lH10721EDF0|N -10721EDF0:lI109|H1072222B0 -1072222B0:lI101|H107225458 -107225458:lI103|H1072282B0 -1072282B0:lI97|H10722ACF8 -10722ACF8:lI99|H10722D410 -10722D410:lI111|H10722F8A8 -10722F8A8:lI95|H107231A40 -107231A40:lI112|H1072338C8 -1072338C8:lI114|H107235460 -107235460:lI101|H107236D98 -107236D98:lI116|H107238490 -107238490:lI116|H1072399A8 -1072399A8:lI121|H10723AD60 -10723AD60:lI95|H10723BE90 -10723BE90:lI116|H10723CE40 -10723CE40:lI101|H10723DC40 -10723DC40:lI120|H10723E8B0 -10723E8B0:lI116|H10723F430 -10723F430:lI95|H10723FE60 -10723FE60:lI101|H107240750 -107240750:lI110|H107240F60 -107240F60:lI99|H1072416B0 -1072416B0:lI111|H107241DC0 -107241DC0:lI100|H107242470 -107242470:lI101|H107242AC0 -107242AC0:lI114|H107243080 -107243080:lI46|H1072435F0 -1072435F0:lI98|H107243B20 -107243B20:lI101|H107244010 -107244010:lI97|H107244500 -107244500:lI109|N -10721B888:lH10721EDE0|N -10721EDE0:lI109|H1072222A0 -1072222A0:lI101|H107225448 -107225448:lI103|H1072282A0 -1072282A0:lI97|H10722ACE8 -10722ACE8:lI99|H10722D400 -10722D400:lI111|H10722F898 -10722F898:lI95|H107231A30 -107231A30:lI116|H1072338B8 -1072338B8:lI114|H107235450 -107235450:lI97|H107236D88 -107236D88:lI110|H107238480 -107238480:lI115|H107239998 -107239998:lI95|H10723AD50 -10723AD50:lI115|H10723BE80 -10723BE80:lI117|H10723CE30 -10723CE30:lI112|H10723DC30 -10723DC30:lI46|H10723E8A0 -10723E8A0:lI98|H10723F420 -10723F420:lI101|H10723FE50 -10723FE50:lI97|H107240740 -107240740:lI109|N -107218320:Mn5:H10721B820,H10721B830,H10721B840,H10721B850,H10721B860 -10721B820:lH10721ED70|N -10721ED70:lI109|H107222230 -107222230:lI101|H1072253D8 -1072253D8:lI103|H107228230 -107228230:lI97|H10722AC78 -10722AC78:lI99|H10722D390 -10722D390:lI111|H10722F828 -10722F828:lI95|H1072319C0 -1072319C0:lI117|H107233848 -107233848:lI100|H1072353E0 -1072353E0:lI112|H107236D18 -107236D18:lI46|H107238410 -107238410:lI98|H107239928 -107239928:lI101|H10723ACE0 -10723ACE0:lI97|H10723BE10 -10723BE10:lI109|N -10721B860:lH10721EDB0|N -10721EDB0:lI109|H107222270 -107222270:lI101|H107225418 -107225418:lI103|H107228270 -107228270:lI97|H10722ACB8 -10722ACB8:lI99|H10722D3D0 -10722D3D0:lI111|H10722F868 -10722F868:lI95|H107231A00 -107231A00:lI98|H107233888 -107233888:lI101|H107235420 -107235420:lI114|H107236D58 -107236D58:lI95|H107238450 -107238450:lI109|H107239968 -107239968:lI101|H10723AD20 -10723AD20:lI100|H10723BE50 -10723BE50:lI105|H10723CE00 -10723CE00:lI97|H10723DC00 -10723DC00:lI95|H10723E870 -10723E870:lI103|H10723F3F0 -10723F3F0:lI97|H10723FE20 -10723FE20:lI116|H107240710 -107240710:lI101|H107240F30 -107240F30:lI119|H107241690 -107241690:lI97|H107241DA0 -107241DA0:lI121|H107242450 -107242450:lI95|H107242AA0 -107242AA0:lI99|H107243060 -107243060:lI111|H1072435D0 -1072435D0:lI110|H107243B00 -107243B00:lI116|H107243FF0 -107243FF0:lI114|H1072444E0 -1072444E0:lI111|H107244990 -107244990:lI108|H107244E00 -107244E00:lI95|H107245260 -107245260:lI118|H1072456B0 -1072456B0:lI49|H107245AB0 -107245AB0:lI46|H107245E60 -107245E60:lI98|H1072461F0 -1072461F0:lI101|H107246580 -107246580:lI97|H107246910 -107246910:lI109|N -10721B850:lH10721EDA0|N -10721EDA0:lI109|H107222260 -107222260:lI101|H107225408 -107225408:lI103|H107228260 -107228260:lI97|H10722ACA8 -10722ACA8:lI99|H10722D3C0 -10722D3C0:lI111|H10722F858 -10722F858:lI95|H1072319F0 -1072319F0:lI116|H107233878 -107233878:lI99|H107235410 -107235410:lI112|H107236D48 -107236D48:lI95|H107238440 -107238440:lI99|H107239958 -107239958:lI111|H10723AD10 -10723AD10:lI110|H10723BE40 -10723BE40:lI110|H10723CDF0 -10723CDF0:lI101|H10723DBF0 -10723DBF0:lI99|H10723E860 -10723E860:lI116|H10723F3E0 -10723F3E0:lI105|H10723FE10 -10723FE10:lI111|H107240700 -107240700:lI110|H107240F20 -107240F20:lI46|H107241680 -107241680:lI98|H107241D90 -107241D90:lI101|H107242440 -107242440:lI97|H107242A90 -107242A90:lI109|N -10721B840:lH10721ED90|N -10721ED90:lI109|H107222250 -107222250:lI101|H1072253F8 -1072253F8:lI103|H107228250 -107228250:lI97|H10722AC98 -10722AC98:lI99|H10722D3B0 -10722D3B0:lI111|H10722F848 -10722F848:lI95|H1072319E0 -1072319E0:lI116|H107233868 -107233868:lI101|H107235400 -107235400:lI120|H107236D38 -107236D38:lI116|H107238430 -107238430:lI95|H107239948 -107239948:lI115|H10723AD00 -10723AD00:lI99|H10723BE30 -10723BE30:lI97|H10723CDE0 -10723CDE0:lI110|H10723DBE0 -10723DBE0:lI110|H10723E850 -10723E850:lI101|H10723F3D0 -10723F3D0:lI114|H10723FE00 -10723FE00:lI46|H1072406F0 -1072406F0:lI98|H107240F10 -107240F10:lI101|H107241670 -107241670:lI97|H107241D80 -107241D80:lI109|N -10721B830:lH10721ED80|N -10721ED80:lI109|H107222240 -107222240:lI101|H1072253E8 -1072253E8:lI103|H107228240 -107228240:lI97|H10722AC88 -10722AC88:lI99|H10722D3A0 -10722D3A0:lI111|H10722F838 -10722F838:lI95|H1072319D0 -1072319D0:lI117|H107233858 -107233858:lI100|H1072353F0 -1072353F0:lI112|H107236D28 -107236D28:lI95|H107238420 -107238420:lI115|H107239938 -107239938:lI101|H10723ACF0 -10723ACF0:lI114|H10723BE20 -10723BE20:lI118|H10723CDD0 -10723CDD0:lI101|H10723DBD0 -10723DBD0:lI114|H10723E840 -10723E840:lI46|H10723F3C0 -10723F3C0:lI98|H10723FDF0 -10723FDF0:lI101|H1072406E0 -1072406E0:lI97|H107240F00 -107240F00:lI109|N -107214EB0:lI47|H1072182F0 -1072182F0:lI111|H10721B7E0 -10721B7E0:lI112|H10721ED30 -10721ED30:lI116|H1072221F0 -1072221F0:lI47|H107225398 -107225398:lI104|H1072281F0 -1072281F0:lI111|H10722AC38 -10722AC38:lI109|H10722D350 -10722D350:lI101|H10722F7E8 -10722F7E8:lI98|H107231980 -107231980:lI114|H107233808 -107233808:lI101|H1072353A0 -1072353A0:lI119|H107236CD8 -107236CD8:lI47|H1072383D0 -1072383D0:lI67|H1072398E8 -1072398E8:lI101|H10723ACA0 -10723ACA0:lI108|H10723BDD0 -10723BDD0:lI108|H10723CD90 -10723CD90:lI97|H10723DB90 -10723DB90:lI114|H10723E810 -10723E810:lI47|H10723F390 -10723F390:lI101|H10723FDC0 -10723FDC0:lI114|H1072406B0 -1072406B0:lI108|H107240ED0 -107240ED0:lI97|H107241640 -107241640:lI110|H107241D50 -107241D50:lI103|H107242410 -107242410:lI47|H107242A60 -107242A60:lI50|H107243040 -107243040:lI54|H1072435B0 -1072435B0:lI46|H107243AE0 -107243AE0:lI48|H107243FD0 -107243FD0:lI46|H1072444C0 -1072444C0:lI50|H107244970 -107244970:lI47|H107244DE0 -107244DE0:lI108|H107245240 -107245240:lI105|H107245690 -107245690:lI98|H107245A90 -107245A90:lI47|H107245E40 -107245E40:lI101|H1072461D0 -1072461D0:lI114|H107246560 -107246560:lI108|H1072468F0 -1072468F0:lI97|H107246C80 -107246C80:lI110|H107246FB0 -107246FB0:lI103|H1072472D0 -1072472D0:lI47|H1072475E0 -1072475E0:lI108|H1072478E0 -1072478E0:lI105|H107247BE0 -107247BE0:lI98|H107247EC0 -107247EC0:lI47|H107248180 -107248180:lI109|H107248440 -107248440:lI101|H1072486F0 -1072486F0:lI103|H1072489A0 -1072489A0:lI97|H107248C20 -107248C20:lI99|H107248E90 -107248E90:lI111|H107249100 -107249100:lI45|H107249360 -107249360:lI52|H1072495C0 -1072495C0:lI46|H107249810 -107249810:lI52|H107249A30 -107249A30:lI46|H107249C30 -107249C30:lI52|H107249E10 -107249E10:lI47|H280052C20 -107211A88:lH107214F48|H107214F60 -107214F48:t2:H107218548,H107218558 -107218558:Mh41:10:H10721BBD8,H10721BBF8,H10721BC20,H10721BC50,H10721BC68,H10721BC78,H10721BCA8,H10721BCD8,H10721BCF8,H10721BD18,H10721BD48,H10721BD88,H10721BDA0,H10721BDC8,H10721BDF8,H10721BE10 -10721BBD8:Mn3:H10721F170,H10721F188,H10721F198 -10721F170:Mn2:H107222640,H107222650 -107222640:lH1072257E8|N -1072257E8:lI105|H107228640 -107228640:lI110|H10722B088 -10722B088:lI101|H10722D7A0 -10722D7A0:lI116|H10722FC38 -10722FC38:lI115|H107231DD0 -107231DD0:lI95|H107233C58 -107233C58:lI115|H1072357F0 -1072357F0:lI101|H107237118 -107237118:lI114|H107238810 -107238810:lI118|H107239D08 -107239D08:lI105|H10723B0C0 -10723B0C0:lI99|H10723C1F0 -10723C1F0:lI101|H10723D170 -10723D170:lI46|H10723DF60 -10723DF60:lI98|H10723EBC0 -10723EBC0:lI101|H10723F720 -10723F720:lI97|H107240120 -107240120:lI109|N -107222650:lH1072257F8|N -1072257F8:lI104|H107228650 -107228650:lI116|H10722B098 -10722B098:lI116|H10722D7B0 -10722D7B0:lI112|H10722FC48 -10722FC48:lI99|H107231DE0 -107231DE0:lI95|H107233C68 -107233C68:lI114|H107235800 -107235800:lI101|H107237128 -107237128:lI115|H107238820 -107238820:lI112|H107239D18 -107239D18:lI111|H10723B0D0 -10723B0D0:lI110|H10723C200 -10723C200:lI115|H10723D180 -10723D180:lI101|H10723DF70 -10723DF70:lI46|H10723EBD0 -10723EBD0:lI98|H10723F730 -10723F730:lI101|H107240130 -107240130:lI97|H107240A00 -107240A00:lI109|N -10721F198:lH107222670|N -107222670:lI104|H107225818 -107225818:lI116|H107228670 -107228670:lI116|H10722B0B8 -10722B0B8:lI112|H10722D7D0 -10722D7D0:lI100|H10722FC68 -10722FC68:lI95|H107231E00 -107231E00:lI114|H107233C88 -107233C88:lI101|H107235820 -107235820:lI115|H107237148 -107237148:lI112|H107238840 -107238840:lI111|H107239D38 -107239D38:lI110|H10723B0F0 -10723B0F0:lI115|H10723C220 -10723C220:lI101|H10723D1A0 -10723D1A0:lI46|H10723DF90 -10723DF90:lI98|H10723EBF0 -10723EBF0:lI101|H10723F750 -10723F750:lI97|H107240150 -107240150:lI109|N -10721F188:lH107222660|N -107222660:lI109|H107225808 -107225808:lI111|H107228660 -107228660:lI100|H10722B0A8 -10722B0A8:lI95|H10722D7C0 -10722D7C0:lI97|H10722FC58 -10722FC58:lI117|H107231DF0 -107231DF0:lI116|H107233C78 -107233C78:lI104|H107235810 -107235810:lI95|H107237138 -107237138:lI115|H107238830 -107238830:lI101|H107239D28 -107239D28:lI114|H10723B0E0 -10723B0E0:lI118|H10723C210 -10723C210:lI101|H10723D190 -10723D190:lI114|H10723DF80 -10723DF80:lI46|H10723EBE0 -10723EBE0:lI98|H10723F740 -10723F740:lI101|H107240140 -107240140:lI97|H107240A10 -107240A10:lI109|N -10721BE10:Mn4:H10721F518,H10721F528,H10721F538,H10721F548 -10721F518:lH107222A10|N -107222A10:lI109|H107225BB8 -107225BB8:lI111|H107228A10 -107228A10:lI100|H10722B458 -10722B458:lI95|H10722DB70 -10722DB70:lI115|H107230008 -107230008:lI101|H1072321A0 -1072321A0:lI99|H107234028 -107234028:lI117|H107235BC0 -107235BC0:lI114|H1072374E8 -1072374E8:lI105|H107238BA0 -107238BA0:lI116|H10723A088 -10723A088:lI121|H10723B400 -10723B400:lI95|H10723C520 -10723C520:lI115|H10723D3F0 -10723D3F0:lI101|H10723E190 -10723E190:lI114|H10723EDD0 -10723EDD0:lI118|H10723F8B0 -10723F8B0:lI101|H107240220 -107240220:lI114|H107240AB0 -107240AB0:lI46|H107241270 -107241270:lI98|H1072419A0 -1072419A0:lI101|H107242070 -107242070:lI97|H1072426E0 -1072426E0:lI109|N -10721F548:lH107222A40|N -107222A40:lI109|H107225BE8 -107225BE8:lI111|H107228A40 -107228A40:lI100|H10722B488 -10722B488:lI95|H10722DBA0 -10722DBA0:lI104|H107230038 -107230038:lI101|H1072321D0 -1072321D0:lI97|H107234058 -107234058:lI100|H107235BF0 -107235BF0:lI46|H107237518 -107237518:lI98|H107238BD0 -107238BD0:lI101|H10723A0B8 -10723A0B8:lI97|H10723B420 -10723B420:lI109|N -10721F538:lH107222A30|N -107222A30:lI109|H107225BD8 -107225BD8:lI111|H107228A30 -107228A30:lI100|H10722B478 -10722B478:lI95|H10722DB90 -10722DB90:lI108|H107230028 -107230028:lI111|H1072321C0 -1072321C0:lI103|H107234048 -107234048:lI46|H107235BE0 -107235BE0:lI98|H107237508 -107237508:lI101|H107238BC0 -107238BC0:lI97|H10723A0A8 -10723A0A8:lI109|N -10721F528:lH107222A20|N -107222A20:lI109|H107225BC8 -107225BC8:lI111|H107228A20 -107228A20:lI100|H10722B468 -10722B468:lI95|H10722DB80 -10722DB80:lI97|H107230018 -107230018:lI117|H1072321B0 -1072321B0:lI116|H107234038 -107234038:lI104|H107235BD0 -107235BD0:lI95|H1072374F8 -1072374F8:lI109|H107238BB0 -107238BB0:lI110|H10723A098 -10723A098:lI101|H10723B410 -10723B410:lI115|H10723C530 -10723C530:lI105|H10723D400 -10723D400:lI97|H10723E1A0 -10723E1A0:lI46|H10723EDE0 -10723EDE0:lI98|H10723F8C0 -10723F8C0:lI101|H107240230 -107240230:lI97|H107240AC0 -107240AC0:lI109|N -10721BDF8:Mn2:H10721F4F0,H10721F508 -10721F4F0:Mn2:H1072229E0,H1072229F0 -1072229E0:lH107225B88|N -107225B88:lI109|H1072289E0 -1072289E0:lI111|H10722B428 -10722B428:lI100|H10722DB40 -10722DB40:lI95|H10722FFD8 -10722FFD8:lI97|H107232170 -107232170:lI99|H107233FF8 -107233FF8:lI116|H107235B90 -107235B90:lI105|H1072374B8 -1072374B8:lI111|H107238B80 -107238B80:lI110|H10723A068 -10723A068:lI115|H10723B3E0 -10723B3E0:lI46|H10723C500 -10723C500:lI98|H10723D3E0 -10723D3E0:lI101|H10723E180 -10723E180:lI97|H10723EDC0 -10723EDC0:lI109|N -1072229F0:lH107225B98|N -107225B98:lI109|H1072289F0 -1072289F0:lI111|H10722B438 -10722B438:lI100|H10722DB50 -10722DB50:lI95|H10722FFE8 -10722FFE8:lI97|H107232180 -107232180:lI117|H107234008 -107234008:lI116|H107235BA0 -107235BA0:lI104|H1072374C8 -1072374C8:lI46|H107238B90 -107238B90:lI98|H10723A078 -10723A078:lI101|H10723B3F0 -10723B3F0:lI97|H10723C510 -10723C510:lI109|N -10721F508:lH107222A00|N -107222A00:lI104|H107225BA8 -107225BA8:lI116|H107228A00 -107228A00:lI116|H10722B448 -10722B448:lI112|H10722DB60 -10722DB60:lI99|H10722FFF8 -10722FFF8:lI46|H107232190 -107232190:lI98|H107234018 -107234018:lI101|H107235BB0 -107235BB0:lI97|H1072374D8 -1072374D8:lI109|N -10721BDC8:Mn5:H10721F4A0,H10721F4B0,H10721F4C0,H10721F4D0,H10721F4E0 -10721F4A0:lH107222990|N -107222990:lI104|H107225B38 -107225B38:lI116|H107228990 -107228990:lI116|H10722B3D8 -10722B3D8:lI112|H10722DAF0 -10722DAF0:lI99|H10722FF88 -10722FF88:lI95|H107232120 -107232120:lI104|H107233FA8 -107233FA8:lI97|H107235B40 -107235B40:lI110|H107237468 -107237468:lI100|H107238B50 -107238B50:lI108|H10723A038 -10723A038:lI101|H10723B3B0 -10723B3B0:lI114|H10723C4D0 -10723C4D0:lI95|H10723D3B0 -10723D3B0:lI115|H10723E150 -10723E150:lI117|H10723ED90 -10723ED90:lI112|H10723F880 -10723F880:lI46|H107240200 -107240200:lI98|H107240AA0 -107240AA0:lI101|H107241260 -107241260:lI97|H107241990 -107241990:lI109|N -10721F4E0:lH1072229D0|N -1072229D0:lI105|H107225B78 -107225B78:lI110|H1072289D0 -1072289D0:lI101|H10722B418 -10722B418:lI116|H10722DB30 -10722DB30:lI115|H10722FFC8 -10722FFC8:lI46|H107232160 -107232160:lI98|H107233FE8 -107233FE8:lI101|H107235B80 -107235B80:lI97|H1072374A8 -1072374A8:lI109|N -10721F4D0:lH1072229C0|N -1072229C0:lI104|H107225B68 -107225B68:lI116|H1072289C0 -1072289C0:lI116|H10722B408 -10722B408:lI112|H10722DB20 -10722DB20:lI100|H10722FFB8 -10722FFB8:lI95|H107232150 -107232150:lI109|H107233FD8 -107233FD8:lI105|H107235B70 -107235B70:lI115|H107237498 -107237498:lI99|H107238B70 -107238B70:lI95|H10723A058 -10723A058:lI115|H10723B3D0 -10723B3D0:lI117|H10723C4F0 -10723C4F0:lI112|H10723D3D0 -10723D3D0:lI46|H10723E170 -10723E170:lI98|H10723EDB0 -10723EDB0:lI101|H10723F8A0 -10723F8A0:lI97|H107240210 -107240210:lI109|N -10721F4C0:lH1072229B0|N -1072229B0:lI104|H107225B58 -107225B58:lI116|H1072289B0 -1072289B0:lI116|H10722B3F8 -10722B3F8:lI112|H10722DB10 -10722DB10:lI100|H10722FFA8 -10722FFA8:lI46|H107232140 -107232140:lI98|H107233FC8 -107233FC8:lI101|H107235B60 -107235B60:lI97|H107237488 -107237488:lI109|N -10721F4B0:lH1072229A0|N -1072229A0:lI104|H107225B48 -107225B48:lI116|H1072289A0 -1072289A0:lI116|H10722B3E8 -10722B3E8:lI112|H10722DB00 -10722DB00:lI100|H10722FF98 -10722FF98:lI95|H107232130 -107232130:lI109|H107233FB8 -107233FB8:lI97|H107235B50 -107235B50:lI110|H107237478 -107237478:lI97|H107238B60 -107238B60:lI103|H10723A048 -10723A048:lI101|H10723B3C0 -10723B3C0:lI114|H10723C4E0 -10723C4E0:lI46|H10723D3C0 -10723D3C0:lI98|H10723E160 -10723E160:lI101|H10723EDA0 -10723EDA0:lI97|H10723F890 -10723F890:lI109|N -10721BDA0:Mn4:H10721F460,H10721F470,H10721F480,H10721F490 -10721F460:lH107222950|N -107222950:lI104|H107225AF8 -107225AF8:lI116|H107228950 -107228950:lI116|H10722B398 -10722B398:lI112|H10722DAB0 -10722DAB0:lI100|H10722FF48 -10722FF48:lI95|H1072320E0 -1072320E0:lI115|H107233F68 -107233F68:lI117|H107235B00 -107235B00:lI112|H107237428 -107237428:lI46|H107238B10 -107238B10:lI98|H107239FF8 -107239FF8:lI101|H10723B380 -10723B380:lI97|H10723C4A0 -10723C4A0:lI109|N -10721F490:lH107222980|N -107222980:lI109|H107225B28 -107225B28:lI111|H107228980 -107228980:lI100|H10722B3C8 -10722B3C8:lI95|H10722DAE0 -10722DAE0:lI103|H10722FF78 -10722FF78:lI101|H107232110 -107232110:lI116|H107233F98 -107233F98:lI46|H107235B30 -107235B30:lI98|H107237458 -107237458:lI101|H107238B40 -107238B40:lI97|H10723A028 -10723A028:lI109|N -10721F480:lH107222970|N -107222970:lI104|H107225B18 -107225B18:lI116|H107228970 -107228970:lI116|H10722B3B8 -10722B3B8:lI112|H10722DAD0 -10722DAD0:lI95|H10722FF68 -10722FF68:lI114|H107232100 -107232100:lI101|H107233F88 -107233F88:lI115|H107235B20 -107235B20:lI112|H107237448 -107237448:lI111|H107238B30 -107238B30:lI110|H10723A018 -10723A018:lI115|H10723B3A0 -10723B3A0:lI101|H10723C4C0 -10723C4C0:lI46|H10723D3A0 -10723D3A0:lI98|H10723E140 -10723E140:lI101|H10723ED80 -10723ED80:lI97|H10723F870 -10723F870:lI109|N -10721F470:lH107222960|N -107222960:lI104|H107225B08 -107225B08:lI116|H107228960 -107228960:lI116|H10722B3A8 -10722B3A8:lI112|H10722DAC0 -10722DAC0:lI100|H10722FF58 -10722FF58:lI95|H1072320F0 -1072320F0:lI108|H107233F78 -107233F78:lI111|H107235B10 -107235B10:lI103|H107237438 -107237438:lI103|H107238B20 -107238B20:lI101|H10723A008 -10723A008:lI114|H10723B390 -10723B390:lI46|H10723C4B0 -10723C4B0:lI98|H10723D390 -10723D390:lI101|H10723E130 -10723E130:lI97|H10723ED70 -10723ED70:lI109|N -10721BD88:Mn2:H10721F440,H10721F450 -10721F440:lH107222930|N -107222930:lI109|H107225AD8 -107225AD8:lI111|H107228930 -107228930:lI100|H10722B378 -10722B378:lI95|H10722DA90 -10722DA90:lI100|H10722FF28 -10722FF28:lI105|H1072320C0 -1072320C0:lI114|H107233F48 -107233F48:lI46|H107235AE0 -107235AE0:lI98|H107237408 -107237408:lI101|H107238AF0 -107238AF0:lI97|H107239FD8 -107239FD8:lI109|N -10721F450:lH107222940|N -107222940:lI104|H107225AE8 -107225AE8:lI116|H107228940 -107228940:lI116|H10722B388 -10722B388:lI112|H10722DAA0 -10722DAA0:lI95|H10722FF38 -10722FF38:lI117|H1072320D0 -1072320D0:lI116|H107233F58 -107233F58:lI105|H107235AF0 -107235AF0:lI108|H107237418 -107237418:lI46|H107238B00 -107238B00:lI98|H107239FE8 -107239FE8:lI101|H10723B370 -10723B370:lI97|H10723C490 -10723C490:lI109|N -10721BD48:Mn7:H10721F3C8,H10721F3D8,H10721F3E8,H10721F3F8,H10721F410,H10721F420,H10721F430 -10721F3C8:lH1072228B0|N -1072228B0:lI104|H107225A58 -107225A58:lI116|H1072288B0 -1072288B0:lI116|H10722B2F8 -10722B2F8:lI112|H10722DA10 -10722DA10:lI100|H10722FEA8 -10722FEA8:lI95|H107232040 -107232040:lI101|H107233EC8 -107233EC8:lI120|H107235A60 -107235A60:lI97|H107237388 -107237388:lI109|H107238A70 -107238A70:lI112|H107239F58 -107239F58:lI108|H10723B2F0 -10723B2F0:lI101|H10723C410 -10723C410:lI46|H10723D330 -10723D330:lI98|H10723E100 -10723E100:lI101|H10723ED40 -10723ED40:lI97|H10723F850 -10723F850:lI109|N -10721F430:lH107222920|N -107222920:lI104|H107225AC8 -107225AC8:lI116|H107228920 -107228920:lI116|H10722B368 -10722B368:lI112|H10722DA80 -10722DA80:lI100|H10722FF18 -10722FF18:lI95|H1072320B0 -1072320B0:lI102|H107233F38 -107233F38:lI105|H107235AD0 -107235AD0:lI108|H1072373F8 -1072373F8:lI101|H107238AE0 -107238AE0:lI46|H107239FC8 -107239FC8:lI98|H10723B360 -10723B360:lI101|H10723C480 -10723C480:lI97|H10723D380 -10723D380:lI109|N -10721F420:lH107222910|N -107222910:lI104|H107225AB8 -107225AB8:lI116|H107228910 -107228910:lI116|H10722B358 -10722B358:lI112|H10722DA70 -10722DA70:lI99|H10722FF08 -10722FF08:lI95|H1072320A0 -1072320A0:lI99|H107233F28 -107233F28:lI111|H107235AC0 -107235AC0:lI111|H1072373E8 -1072373E8:lI107|H107238AD0 -107238AD0:lI105|H107239FB8 -107239FB8:lI101|H10723B350 -10723B350:lI46|H10723C470 -10723C470:lI98|H10723D370 -10723D370:lI101|H10723E120 -10723E120:lI97|H10723ED60 -10723ED60:lI109|N -10721F410:lH107222900|N -107222900:lI104|H107225AA8 -107225AA8:lI116|H107228900 -107228900:lI116|H10722B348 -10722B348:lI112|H10722DA60 -10722DA60:lI99|H10722FEF8 -10722FEF8:lI95|H107232090 -107232090:lI114|H107233F18 -107233F18:lI101|H107235AB0 -107235AB0:lI113|H1072373D8 -1072373D8:lI117|H107238AC0 -107238AC0:lI101|H107239FA8 -107239FA8:lI115|H10723B340 -10723B340:lI116|H10723C460 -10723C460:lI46|H10723D360 -10723D360:lI98|H10723E110 -10723E110:lI101|H10723ED50 -10723ED50:lI97|H10723F860 -10723F860:lI109|N -10721F3F8:Mn2:H1072228E0,H1072228F0 -1072228E0:lH107225A88|N -107225A88:lI104|H1072288E0 -1072288E0:lI116|H10722B328 -10722B328:lI116|H10722DA40 -10722DA40:lI112|H10722FED8 -10722FED8:lI100|H107232070 -107232070:lI95|H107233EF8 -107233EF8:lI99|H107235A90 -107235A90:lI103|H1072373B8 -1072373B8:lI105|H107238AA0 -107238AA0:lI46|H107239F88 -107239F88:lI98|H10723B320 -10723B320:lI101|H10723C440 -10723C440:lI97|H10723D340 -10723D340:lI109|N -1072228F0:lH107225A98|N -107225A98:lI109|H1072288F0 -1072288F0:lI111|H10722B338 -10722B338:lI100|H10722DA50 -10722DA50:lI95|H10722FEE8 -10722FEE8:lI97|H107232080 -107232080:lI108|H107233F08 -107233F08:lI105|H107235AA0 -107235AA0:lI97|H1072373C8 -1072373C8:lI115|H107238AB0 -107238AB0:lI46|H107239F98 -107239F98:lI98|H10723B330 -10723B330:lI101|H10723C450 -10723C450:lI97|H10723D350 -10723D350:lI109|N -10721F3E8:lH1072228D0|N -1072228D0:lI105|H107225A78 -107225A78:lI110|H1072288D0 -1072288D0:lI101|H10722B318 -10722B318:lI116|H10722DA30 -10722DA30:lI115|H10722FEC8 -10722FEC8:lI95|H107232060 -107232060:lI97|H107233EE8 -107233EE8:lI112|H107235A80 -107235A80:lI112|H1072373A8 -1072373A8:lI46|H107238A90 -107238A90:lI98|H107239F78 -107239F78:lI101|H10723B310 -10723B310:lI97|H10723C430 -10723C430:lI109|N -10721F3D8:lH1072228C0|N -1072228C0:lI109|H107225A68 -107225A68:lI111|H1072288C0 -1072288C0:lI100|H10722B308 -10722B308:lI95|H10722DA20 -10722DA20:lI114|H10722FEB8 -10722FEB8:lI97|H107232050 -107232050:lI110|H107233ED8 -107233ED8:lI103|H107235A70 -107235A70:lI101|H107237398 -107237398:lI46|H107238A80 -107238A80:lI98|H107239F68 -107239F68:lI101|H10723B300 -10723B300:lI97|H10723C420 -10723C420:lI109|N -10721BD18:Mn5:H10721F378,H10721F388,H10721F398,H10721F3A8,H10721F3B8 -10721F378:lH107222860|N -107222860:lI104|H107225A08 -107225A08:lI116|H107228860 -107228860:lI116|H10722B2A8 -10722B2A8:lI112|H10722D9C0 -10722D9C0:lI99|H10722FE58 -10722FE58:lI95|H107231FF0 -107231FF0:lI109|H107233E78 -107233E78:lI97|H107235A10 -107235A10:lI110|H107237338 -107237338:lI97|H107238A20 -107238A20:lI103|H107239F08 -107239F08:lI101|H10723B2A0 -10723B2A0:lI114|H10723C3C0 -10723C3C0:lI46|H10723D2E0 -10723D2E0:lI98|H10723E0C0 -10723E0C0:lI101|H10723ED00 -10723ED00:lI97|H10723F820 -10723F820:lI109|N -10721F3B8:lH1072228A0|N -1072228A0:lI109|H107225A48 -107225A48:lI111|H1072288A0 -1072288A0:lI100|H10722B2E8 -10722B2E8:lI95|H10722DA00 -10722DA00:lI115|H10722FE98 -10722FE98:lI101|H107232030 -107232030:lI99|H107233EB8 -107233EB8:lI117|H107235A50 -107235A50:lI114|H107237378 -107237378:lI105|H107238A60 -107238A60:lI116|H107239F48 -107239F48:lI121|H10723B2E0 -10723B2E0:lI46|H10723C400 -10723C400:lI98|H10723D320 -10723D320:lI101|H10723E0F0 -10723E0F0:lI97|H10723ED30 -10723ED30:lI109|N -10721F3A8:lH107222890|N -107222890:lI104|H107225A38 -107225A38:lI116|H107228890 -107228890:lI116|H10722B2D8 -10722B2D8:lI112|H10722D9F0 -10722D9F0:lI100|H10722FE88 -10722FE88:lI95|H107232020 -107232020:lI99|H107233EA8 -107233EA8:lI111|H107235A40 -107235A40:lI110|H107237368 -107237368:lI102|H107238A50 -107238A50:lI46|H107239F38 -107239F38:lI98|H10723B2D0 -10723B2D0:lI101|H10723C3F0 -10723C3F0:lI97|H10723D310 -10723D310:lI109|N -10721F398:lH107222880|N -107222880:lI104|H107225A28 -107225A28:lI116|H107228880 -107228880:lI116|H10722B2C8 -10722B2C8:lI112|H10722D9E0 -10722D9E0:lI95|H10722FE78 -10722FE78:lI116|H107232010 -107232010:lI114|H107233E98 -107233E98:lI97|H107235A30 -107235A30:lI110|H107237358 -107237358:lI115|H107238A40 -107238A40:lI112|H107239F28 -107239F28:lI111|H10723B2C0 -10723B2C0:lI114|H10723C3E0 -10723C3E0:lI116|H10723D300 -10723D300:lI46|H10723E0E0 -10723E0E0:lI98|H10723ED20 -10723ED20:lI101|H10723F840 -10723F840:lI97|H1072401F0 -1072401F0:lI109|N -10721F388:lH107222870|N -107222870:lI104|H107225A18 -107225A18:lI116|H107228870 -107228870:lI116|H10722B2B8 -10722B2B8:lI112|H10722D9D0 -10722D9D0:lI100|H10722FE68 -10722FE68:lI95|H107232000 -107232000:lI114|H107233E88 -107233E88:lI101|H107235A20 -107235A20:lI113|H107237348 -107237348:lI117|H107238A30 -107238A30:lI101|H107239F18 -107239F18:lI115|H10723B2B0 -10723B2B0:lI116|H10723C3D0 -10723C3D0:lI95|H10723D2F0 -10723D2F0:lI104|H10723E0D0 -10723E0D0:lI97|H10723ED10 -10723ED10:lI110|H10723F830 -10723F830:lI100|H1072401E0 -1072401E0:lI108|H107240A90 -107240A90:lI101|H107241250 -107241250:lI114|H107241980 -107241980:lI46|H107242060 -107242060:lI98|H1072426D0 -1072426D0:lI101|H107242CE0 -107242CE0:lI97|H107243250 -107243250:lI109|N -10721BCF8:Mn3:H10721F348,H10721F358,H10721F368 -10721F348:lH107222830|N -107222830:lI104|H1072259D8 -1072259D8:lI116|H107228830 -107228830:lI116|H10722B278 -10722B278:lI112|H10722D990 -10722D990:lI95|H10722FE28 -10722FE28:lI117|H107231FC0 -107231FC0:lI114|H107233E48 -107233E48:lI105|H1072359E0 -1072359E0:lI46|H107237308 -107237308:lI98|H1072389F0 -1072389F0:lI101|H107239ED8 -107239ED8:lI97|H10723B270 -10723B270:lI109|N -10721F368:lH107222850|N -107222850:lI104|H1072259F8 -1072259F8:lI116|H107228850 -107228850:lI116|H10722B298 -10722B298:lI112|H10722D9B0 -10722D9B0:lI99|H10722FE48 -10722FE48:lI95|H107231FE0 -107231FE0:lI112|H107233E68 -107233E68:lI114|H107235A00 -107235A00:lI111|H107237328 -107237328:lI102|H107238A10 -107238A10:lI105|H107239EF8 -107239EF8:lI108|H10723B290 -10723B290:lI101|H10723C3B0 -10723C3B0:lI95|H10723D2D0 -10723D2D0:lI115|H10723E0B0 -10723E0B0:lI117|H10723ECF0 -10723ECF0:lI112|H10723F810 -10723F810:lI46|H1072401D0 -1072401D0:lI98|H107240A80 -107240A80:lI101|H107241240 -107241240:lI97|H107241970 -107241970:lI109|N -10721F358:lH107222840|N -107222840:lI104|H1072259E8 -1072259E8:lI116|H107228840 -107228840:lI116|H10722B288 -10722B288:lI112|H10722D9A0 -10722D9A0:lI100|H10722FE38 -10722FE38:lI95|H107231FD0 -107231FD0:lI115|H107233E58 -107233E58:lI99|H1072359F0 -1072359F0:lI114|H107237318 -107237318:lI105|H107238A00 -107238A00:lI112|H107239EE8 -107239EE8:lI116|H10723B280 -10723B280:lI95|H10723C3A0 -10723C3A0:lI101|H10723D2C0 -10723D2C0:lI110|H10723E0A0 -10723E0A0:lI118|H10723ECE0 -10723ECE0:lI46|H10723F800 -10723F800:lI98|H1072401C0 -1072401C0:lI101|H107240A70 -107240A70:lI97|H107241230 -107241230:lI109|N -10721BCD8:Mn3:H10721F318,H10721F328,H10721F338 -10721F318:lH107222800|N -107222800:lI105|H1072259A8 -1072259A8:lI110|H107228800 -107228800:lI101|H10722B248 -10722B248:lI116|H10722D960 -10722D960:lI115|H10722FDF8 -10722FDF8:lI46|H107231F90 -107231F90:lI97|H107233E18 -107233E18:lI112|H1072359B0 -1072359B0:lI112|H1072372D8 -1072372D8:lI117|H1072389C0 -1072389C0:lI112|N -10721F338:lH107222820|N -107222820:lI104|H1072259C8 -1072259C8:lI116|H107228820 -107228820:lI116|H10722B268 -10722B268:lI112|H10722D980 -10722D980:lI100|H10722FE18 -10722FE18:lI95|H107231FB0 -107231FB0:lI117|H107233E38 -107233E38:lI116|H1072359D0 -1072359D0:lI105|H1072372F8 -1072372F8:lI108|H1072389E0 -1072389E0:lI46|H107239EC8 -107239EC8:lI98|H10723B260 -10723B260:lI101|H10723C390 -10723C390:lI97|H10723D2B0 -10723D2B0:lI109|N -10721F328:lH107222810|N -107222810:lI104|H1072259B8 -1072259B8:lI116|H107228810 -107228810:lI116|H10722B258 -10722B258:lI112|H10722D970 -10722D970:lI99|H10722FE08 -10722FE08:lI95|H107231FA0 -107231FA0:lI104|H107233E28 -107233E28:lI97|H1072359C0 -1072359C0:lI110|H1072372E8 -1072372E8:lI100|H1072389D0 -1072389D0:lI108|H107239EB8 -107239EB8:lI101|H10723B250 -10723B250:lI114|H10723C380 -10723C380:lI46|H10723D2A0 -10723D2A0:lI98|H10723E090 -10723E090:lI101|H10723ECD0 -10723ECD0:lI97|H10723F7F0 -10723F7F0:lI109|N -10721BCA8:Mn5:H10721F2C0,H10721F2D0,H10721F2E8,H10721F2F8,H10721F308 -10721F2C0:lH1072227A0|N -1072227A0:lI104|H107225948 -107225948:lI116|H1072287A0 -1072287A0:lI116|H10722B1E8 -10722B1E8:lI112|H10722D900 -10722D900:lI100|H10722FD98 -10722FD98:lI95|H107231F30 -107231F30:lI108|H107233DB8 -107233DB8:lI111|H107235950 -107235950:lI103|H107237278 -107237278:lI46|H107238970 -107238970:lI98|H107239E68 -107239E68:lI101|H10723B220 -10723B220:lI97|H10723C350 -10723C350:lI109|N -10721F308:lH1072227F0|N -1072227F0:lI109|H107225998 -107225998:lI111|H1072287F0 -1072287F0:lI100|H10722B238 -10722B238:lI95|H10722D950 -10722D950:lI99|H10722FDE8 -10722FDE8:lI103|H107231F80 -107231F80:lI105|H107233E08 -107233E08:lI46|H1072359A0 -1072359A0:lI98|H1072372C8 -1072372C8:lI101|H1072389B0 -1072389B0:lI97|H107239EA8 -107239EA8:lI109|N -10721F2F8:lH1072227E0|N -1072227E0:lI109|H107225988 -107225988:lI111|H1072287E0 -1072287E0:lI100|H10722B228 -10722B228:lI95|H10722D940 -10722D940:lI101|H10722FDD8 -10722FDD8:lI115|H107231F70 -107231F70:lI105|H107233DF8 -107233DF8:lI46|H107235990 -107235990:lI98|H1072372B8 -1072372B8:lI101|H1072389A0 -1072389A0:lI97|H107239E98 -107239E98:lI109|N -10721F2E8:lH1072227D0|N -1072227D0:lI105|H107225978 -107225978:lI110|H1072287D0 -1072287D0:lI101|H10722B218 -10722B218:lI116|H10722D930 -10722D930:lI115|H10722FDC8 -10722FDC8:lI95|H107231F60 -107231F60:lI116|H107233DE8 -107233DE8:lI114|H107235980 -107235980:lI97|H1072372A8 -1072372A8:lI99|H107238990 -107238990:lI101|H107239E88 -107239E88:lI46|H10723B240 -10723B240:lI98|H10723C370 -10723C370:lI101|H10723D290 -10723D290:lI97|H10723E080 -10723E080:lI109|N -10721F2D0:Mn2:H1072227B0,H1072227C0 -1072227B0:lH107225958|N -107225958:lI105|H1072287B0 -1072287B0:lI110|H10722B1F8 -10722B1F8:lI101|H10722D910 -10722D910:lI116|H10722FDA8 -10722FDA8:lI115|H107231F40 -107231F40:lI46|H107233DC8 -107233DC8:lI97|H107235960 -107235960:lI112|H107237288 -107237288:lI112|N -1072227C0:lH107225968|N -107225968:lI104|H1072287C0 -1072287C0:lI116|H10722B208 -10722B208:lI116|H10722D920 -10722D920:lI112|H10722FDB8 -10722FDB8:lI100|H107231F50 -107231F50:lI95|H107233DD8 -107233DD8:lI97|H107235970 -107235970:lI99|H107237298 -107237298:lI99|H107238980 -107238980:lI101|H107239E78 -107239E78:lI112|H10723B230 -10723B230:lI116|H10723C360 -10723C360:lI111|H10723D280 -10723D280:lI114|H10723E070 -10723E070:lI95|H10723ECC0 -10723ECC0:lI115|H10723F7E0 -10723F7E0:lI117|H1072401B0 -1072401B0:lI112|H107240A60 -107240A60:lI46|H107241220 -107241220:lI98|H107241960 -107241960:lI101|H107242050 -107242050:lI97|H1072426C0 -1072426C0:lI109|N -10721BC78:Mn5:H10721F270,H10721F280,H10721F290,H10721F2A0,H10721F2B0 -10721F270:lH107222750|N -107222750:lI109|H1072258F8 -1072258F8:lI111|H107228750 -107228750:lI100|H10722B198 -10722B198:lI95|H10722D8B0 -10722D8B0:lI114|H10722FD48 -10722FD48:lI101|H107231EE0 -107231EE0:lI115|H107233D68 -107233D68:lI112|H107235900 -107235900:lI111|H107237228 -107237228:lI110|H107238920 -107238920:lI115|H107239E18 -107239E18:lI101|H10723B1D0 -10723B1D0:lI99|H10723C300 -10723C300:lI111|H10723D240 -10723D240:lI110|H10723E030 -10723E030:lI116|H10723EC80 -10723EC80:lI114|H10723F7C0 -10723F7C0:lI111|H1072401A0 -1072401A0:lI108|H107240A50 -107240A50:lI46|H107241210 -107241210:lI98|H107241950 -107241950:lI101|H107242040 -107242040:lI97|H1072426B0 -1072426B0:lI109|N -10721F2B0:lH107222790|N -107222790:lI104|H107225938 -107225938:lI116|H107228790 -107228790:lI116|H10722B1D8 -10722B1D8:lI112|H10722D8F0 -10722D8F0:lI100|H10722FD88 -10722FD88:lI95|H107231F20 -107231F20:lI99|H107233DA8 -107233DA8:lI117|H107235940 -107235940:lI115|H107237268 -107237268:lI116|H107238960 -107238960:lI111|H107239E58 -107239E58:lI109|H10723B210 -10723B210:lI46|H10723C340 -10723C340:lI98|H10723D270 -10723D270:lI101|H10723E060 -10723E060:lI97|H10723ECB0 -10723ECB0:lI109|N -10721F2A0:lH107222780|N -107222780:lI104|H107225928 -107225928:lI116|H107228780 -107228780:lI116|H10722B1C8 -10722B1C8:lI112|H10722D8E0 -10722D8E0:lI100|H10722FD78 -10722FD78:lI95|H107231F10 -107231F10:lI114|H107233D98 -107233D98:lI101|H107235930 -107235930:lI113|H107237258 -107237258:lI117|H107238950 -107238950:lI101|H107239E48 -107239E48:lI115|H10723B200 -10723B200:lI116|H10723C330 -10723C330:lI46|H10723D260 -10723D260:lI98|H10723E050 -10723E050:lI101|H10723ECA0 -10723ECA0:lI97|H10723F7D0 -10723F7D0:lI109|N -10721F290:lH107222770|N -107222770:lI104|H107225918 -107225918:lI116|H107228770 -107228770:lI116|H10722B1B8 -10722B1B8:lI112|H10722D8D0 -10722D8D0:lI100|H10722FD68 -10722FD68:lI95|H107231F00 -107231F00:lI101|H107233D88 -107233D88:lI115|H107235920 -107235920:lI105|H107237248 -107237248:lI46|H107238940 -107238940:lI98|H107239E38 -107239E38:lI101|H10723B1F0 -10723B1F0:lI97|H10723C320 -10723C320:lI109|N -10721F280:lH107222760|N -107222760:lI109|H107225908 -107225908:lI111|H107228760 -107228760:lI100|H10722B1A8 -10722B1A8:lI95|H10722D8C0 -10722D8C0:lI100|H10722FD58 -10722FD58:lI105|H107231EF0 -107231EF0:lI115|H107233D78 -107233D78:lI107|H107235910 -107235910:lI95|H107237238 -107237238:lI108|H107238930 -107238930:lI111|H107239E28 -107239E28:lI103|H10723B1E0 -10723B1E0:lI46|H10723C310 -10723C310:lI98|H10723D250 -10723D250:lI101|H10723E040 -10723E040:lI97|H10723EC90 -10723EC90:lI109|N -10721BC68:lH10721F260|N -10721F260:lI109|H107222740 -107222740:lI111|H1072258E8 -1072258E8:lI100|H107228740 -107228740:lI95|H10722B188 -10722B188:lI97|H10722D8A0 -10722D8A0:lI117|H10722FD38 -10722FD38:lI116|H107231ED0 -107231ED0:lI104|H107233D58 -107233D58:lI95|H1072358F0 -1072358F0:lI112|H107237218 -107237218:lI108|H107238910 -107238910:lI97|H107239E08 -107239E08:lI105|H10723B1C0 -10723B1C0:lI110|H10723C2F0 -10723C2F0:lI46|H10723D230 -10723D230:lI98|H10723E020 -10723E020:lI101|H10723EC70 -10723EC70:lI97|H10723F7B0 -10723F7B0:lI109|N -10721BC50:Mn2:H10721F240,H10721F250 -10721F240:lH107222720|N -107222720:lI109|H1072258C8 -1072258C8:lI111|H107228720 -107228720:lI100|H10722B168 -10722B168:lI95|H10722D880 -10722D880:lI97|H10722FD18 -10722FD18:lI117|H107231EB0 -107231EB0:lI116|H107233D38 -107233D38:lI104|H1072358D0 -1072358D0:lI95|H1072371F8 -1072371F8:lI100|H1072388F0 -1072388F0:lI101|H107239DE8 -107239DE8:lI116|H10723B1A0 -10723B1A0:lI115|H10723C2D0 -10723C2D0:lI46|H10723D220 -10723D220:lI98|H10723E010 -10723E010:lI101|H10723EC60 -10723EC60:lI97|H10723F7A0 -10723F7A0:lI109|N -10721F250:lH107222730|N -107222730:lI109|H1072258D8 -1072258D8:lI111|H107228730 -107228730:lI100|H10722B178 -10722B178:lI95|H10722D890 -10722D890:lI116|H10722FD28 -10722FD28:lI114|H107231EC0 -107231EC0:lI97|H107233D48 -107233D48:lI99|H1072358E0 -1072358E0:lI101|H107237208 -107237208:lI46|H107238900 -107238900:lI98|H107239DF8 -107239DF8:lI101|H10723B1B0 -10723B1B0:lI97|H10723C2E0 -10723C2E0:lI109|N -10721BC20:Mn5:H10721F1E8,H10721F1F8,H10721F208,H10721F218,H10721F230 -10721F1E8:lH1072226C0|N -1072226C0:lI104|H107225868 -107225868:lI116|H1072286C0 -1072286C0:lI116|H10722B108 -10722B108:lI112|H10722D820 -10722D820:lI100|H10722FCB8 -10722FCB8:lI95|H107231E50 -107231E50:lI99|H107233CD8 -107233CD8:lI117|H107235870 -107235870:lI115|H107237198 -107237198:lI116|H107238890 -107238890:lI111|H107239D88 -107239D88:lI109|H10723B140 -10723B140:lI95|H10723C270 -10723C270:lI97|H10723D1D0 -10723D1D0:lI112|H10723DFC0 -10723DFC0:lI105|H10723EC20 -10723EC20:lI46|H10723F770 -10723F770:lI98|H107240170 -107240170:lI101|H107240A20 -107240A20:lI97|H1072411E0 -1072411E0:lI109|N -10721F230:lH107222710|N -107222710:lI104|H1072258B8 -1072258B8:lI116|H107228710 -107228710:lI116|H10722B158 -10722B158:lI112|H10722D870 -10722D870:lI95|H10722FD08 -10722FD08:lI114|H107231EA0 -107231EA0:lI101|H107233D28 -107233D28:lI113|H1072358C0 -1072358C0:lI117|H1072371E8 -1072371E8:lI101|H1072388E0 -1072388E0:lI115|H107239DD8 -107239DD8:lI116|H10723B190 -10723B190:lI46|H10723C2C0 -10723C2C0:lI98|H10723D210 -10723D210:lI101|H10723E000 -10723E000:lI97|H10723EC50 -10723EC50:lI109|N -10721F218:Mn2:H1072226F0,H107222700 -1072226F0:lH107225898|N -107225898:lI104|H1072286F0 -1072286F0:lI116|H10722B138 -10722B138:lI116|H10722D850 -10722D850:lI112|H10722FCE8 -10722FCE8:lI100|H107231E80 -107231E80:lI95|H107233D08 -107233D08:lI105|H1072358A0 -1072358A0:lI110|H1072371C8 -1072371C8:lI115|H1072388C0 -1072388C0:lI116|H107239DB8 -107239DB8:lI97|H10723B170 -10723B170:lI110|H10723C2A0 -10723C2A0:lI99|H10723D1F0 -10723D1F0:lI101|H10723DFE0 -10723DFE0:lI95|H10723EC40 -10723EC40:lI115|H10723F790 -10723F790:lI117|H107240190 -107240190:lI112|H107240A40 -107240A40:lI46|H107241200 -107241200:lI98|H107241940 -107241940:lI101|H107242030 -107242030:lI97|H1072426A0 -1072426A0:lI109|N -107222700:lH1072258A8|N -1072258A8:lI104|H107228700 -107228700:lI116|H10722B148 -10722B148:lI116|H10722D860 -10722D860:lI112|H10722FCF8 -10722FCF8:lI95|H107231E90 -107231E90:lI99|H107233D18 -107233D18:lI104|H1072358B0 -1072358B0:lI117|H1072371D8 -1072371D8:lI110|H1072388D0 -1072388D0:lI107|H107239DC8 -107239DC8:lI46|H10723B180 -10723B180:lI98|H10723C2B0 -10723C2B0:lI101|H10723D200 -10723D200:lI97|H10723DFF0 -10723DFF0:lI109|N -10721F208:lH1072226E0|N -1072226E0:lI105|H107225888 -107225888:lI110|H1072286E0 -1072286E0:lI101|H10722B128 -10722B128:lI116|H10722D840 -10722D840:lI115|H10722FCD8 -10722FCD8:lI95|H107231E70 -107231E70:lI115|H107233CF8 -107233CF8:lI117|H107235890 -107235890:lI112|H1072371B8 -1072371B8:lI46|H1072388B0 -1072388B0:lI98|H107239DA8 -107239DA8:lI101|H10723B160 -10723B160:lI97|H10723C290 -10723C290:lI109|N -10721F1F8:lH1072226D0|N -1072226D0:lI104|H107225878 -107225878:lI116|H1072286D0 -1072286D0:lI116|H10722B118 -10722B118:lI112|H10722D830 -10722D830:lI100|H10722FCC8 -10722FCC8:lI95|H107231E60 -107231E60:lI99|H107233CE8 -107233CE8:lI111|H107235880 -107235880:lI110|H1072371A8 -1072371A8:lI110|H1072388A0 -1072388A0:lI101|H107239D98 -107239D98:lI99|H10723B150 -10723B150:lI116|H10723C280 -10723C280:lI105|H10723D1E0 -10723D1E0:lI111|H10723DFD0 -10723DFD0:lI110|H10723EC30 -10723EC30:lI95|H10723F780 -10723F780:lI115|H107240180 -107240180:lI117|H107240A30 -107240A30:lI112|H1072411F0 -1072411F0:lI46|H107241930 -107241930:lI98|H107242020 -107242020:lI101|H107242690 -107242690:lI97|H107242CD0 -107242CD0:lI109|N -10721BBF8:Mn4:H10721F1A8,H10721F1B8,H10721F1C8,H10721F1D8 -10721F1A8:lH107222680|N -107222680:lI104|H107225828 -107225828:lI116|H107228680 -107228680:lI116|H10722B0C8 -10722B0C8:lI112|H10722D7E0 -10722D7E0:lI100|H10722FC78 -10722FC78:lI95|H107231E10 -107231E10:lI97|H107233C98 -107233C98:lI99|H107235830 -107235830:lI99|H107237158 -107237158:lI101|H107238850 -107238850:lI112|H107239D48 -107239D48:lI116|H10723B100 -10723B100:lI111|H10723C230 -10723C230:lI114|H10723D1B0 -10723D1B0:lI46|H10723DFA0 -10723DFA0:lI98|H10723EC00 -10723EC00:lI101|H10723F760 -10723F760:lI97|H107240160 -107240160:lI109|N -10721F1D8:lH1072226B0|N -1072226B0:lI105|H107225858 -107225858:lI110|H1072286B0 -1072286B0:lI101|H10722B0F8 -10722B0F8:lI116|H10722D810 -10722D810:lI115|H10722FCA8 -10722FCA8:lI95|H107231E40 -107231E40:lI108|H107233CC8 -107233CC8:lI105|H107235860 -107235860:lI98|H107237188 -107237188:lI46|H107238880 -107238880:lI98|H107239D78 -107239D78:lI101|H10723B130 -10723B130:lI97|H10723C260 -10723C260:lI109|N -10721F1C8:lH1072226A0|N -1072226A0:lI104|H107225848 -107225848:lI116|H1072286A0 -1072286A0:lI116|H10722B0E8 -10722B0E8:lI112|H10722D800 -10722D800:lI100|H10722FC98 -10722FC98:lI95|H107231E30 -107231E30:lI115|H107233CB8 -107233CB8:lI111|H107235850 -107235850:lI99|H107237178 -107237178:lI107|H107238870 -107238870:lI101|H107239D68 -107239D68:lI116|H10723B120 -10723B120:lI46|H10723C250 -10723C250:lI98|H10723D1C0 -10723D1C0:lI101|H10723DFB0 -10723DFB0:lI97|H10723EC10 -10723EC10:lI109|N -10721F1B8:lH107222690|N -107222690:lI104|H107225838 -107225838:lI116|H107228690 -107228690:lI116|H10722B0D8 -10722B0D8:lI112|H10722D7F0 -10722D7F0:lI99|H10722FC88 -10722FC88:lI95|H107231E20 -107231E20:lI115|H107233CA8 -107233CA8:lI117|H107235840 -107235840:lI112|H107237168 -107237168:lI46|H107238860 -107238860:lI98|H107239D58 -107239D58:lI101|H10723B110 -10723B110:lI97|H10723C240 -10723C240:lI109|N -107218548:lI47|H10721BBC8 -10721BBC8:lI111|H10721F160 -10721F160:lI112|H107222630 -107222630:lI116|H1072257D8 -1072257D8:lI47|H107228630 -107228630:lI104|H10722B078 -10722B078:lI111|H10722D790 -10722D790:lI109|H10722FC28 -10722FC28:lI101|H107231DC0 -107231DC0:lI98|H107233C48 -107233C48:lI114|H1072357E0 -1072357E0:lI101|H107237108 -107237108:lI119|H107238800 -107238800:lI47|H107239CF8 -107239CF8:lI67|H10723B0B0 -10723B0B0:lI101|H10723C1E0 -10723C1E0:lI108|H10723D160 -10723D160:lI108|H10723DF50 -10723DF50:lI97|H10723EBB0 -10723EBB0:lI114|H10723F710 -10723F710:lI47|H107240110 -107240110:lI101|H1072409F0 -1072409F0:lI114|H1072411D0 -1072411D0:lI108|H107241920 -107241920:lI97|H107242010 -107242010:lI110|H107242680 -107242680:lI103|H107242CC0 -107242CC0:lI47|H107243240 -107243240:lI50|H107243790 -107243790:lI54|H107243CA0 -107243CA0:lI46|H107244190 -107244190:lI48|H107244640 -107244640:lI46|H107244AB0 -107244AB0:lI50|H107244F10 -107244F10:lI47|H107245360 -107245360:lI108|H107245760 -107245760:lI105|H107245B20 -107245B20:lI98|H107245EB0 -107245EB0:lI47|H107246240 -107246240:lI101|H1072465D0 -1072465D0:lI114|H107246960 -107246960:lI108|H107246CA0 -107246CA0:lI97|H107246FC0 -107246FC0:lI110|H1072472E0 -1072472E0:lI103|H1072475F0 -1072475F0:lI47|H1072478F0 -1072478F0:lI108|H107247BF0 -107247BF0:lI105|H107247ED0 -107247ED0:lI98|H107248190 -107248190:lI47|H107248450 -107248450:lI105|H107248700 -107248700:lI110|H1072489B0 -1072489B0:lI101|H107248C30 -107248C30:lI116|H107248EA0 -107248EA0:lI115|H107249110 -107249110:lI45|H107249370 -107249370:lI57|H1072495D0 -1072495D0:lI46|H107249820 -107249820:lI48|H107249A40 -107249A40:lI46|H107249C40 -107249C40:lI49|H107249E20 -107249E20:lI47|H280052C20 -107214F60:lH1072185E8|H107218600 -1072185E8:t2:H10721BE38,A5:cache -10721BE38:lI47|H10721F558 -10721F558:lI111|H107222A50 -107222A50:lI112|H107225BF8 -107225BF8:lI116|H107228A50 -107228A50:lI47|H10722B498 -10722B498:lI104|H10722DBB0 -10722DBB0:lI111|H107230048 -107230048:lI109|H1072321E0 -1072321E0:lI101|H107234068 -107234068:lI98|H107235C00 -107235C00:lI114|H107237528 -107237528:lI101|H107238BE0 -107238BE0:lI119|H10723A0C8 -10723A0C8:lI47|H10723B430 -10723B430:lI67|H10723C540 -10723C540:lI101|H10723D410 -10723D410:lI108|H10723E1B0 -10723E1B0:lI108|H10723EDF0 -10723EDF0:lI97|H10723F8D0 -10723F8D0:lI114|H107240240 -107240240:lI47|H107240AD0 -107240AD0:lI101|H107241280 -107241280:lI114|H1072419B0 -1072419B0:lI108|H107242080 -107242080:lI97|H1072426F0 -1072426F0:lI110|H107242CF0 -107242CF0:lI103|H107243260 -107243260:lI47|H1072437A0 -1072437A0:lI50|H107243CB0 -107243CB0:lI54|H1072441A0 -1072441A0:lI46|H107244650 -107244650:lI48|H107244AC0 -107244AC0:lI46|H107244F20 -107244F20:lI50|H107245370 -107245370:lI47|H107245770 -107245770:lI108|H107245B30 -107245B30:lI105|H107245EC0 -107245EC0:lI98|H107246250 -107246250:lI47|H1072465E0 -1072465E0:lI101|H107246970 -107246970:lI114|H107246CB0 -107246CB0:lI108|H107246FD0 -107246FD0:lI97|H1072472F0 -1072472F0:lI110|H107247600 -107247600:lI103|H107247900 -107247900:lI47|H107247C00 -107247C00:lI108|H107247EE0 -107247EE0:lI105|H1072481A0 -1072481A0:lI98|H107248460 -107248460:lI47|H107248710 -107248710:lI102|H1072489C0 -1072489C0:lI116|H107248C40 -107248C40:lI112|H107248EB0 -107248EB0:lI45|H107249120 -107249120:lI49|H107249380 -107249380:lI46|H1072495E0 -1072495E0:lI50|H107249830 -107249830:lI47|H280052C20 -107218600:lH10721BE48|H10721BE60 -10721BE48:t2:H10721F568,A5:cache -10721F568:lI47|H107222A60 -107222A60:lI111|H107225C08 -107225C08:lI112|H107228A60 -107228A60:lI116|H10722B4A8 -10722B4A8:lI47|H10722DBC0 -10722DBC0:lI104|H107230058 -107230058:lI111|H1072321F0 -1072321F0:lI109|H107234078 -107234078:lI101|H107235C10 -107235C10:lI98|H107237538 -107237538:lI114|H107238BF0 -107238BF0:lI101|H10723A0D8 -10723A0D8:lI119|H10723B440 -10723B440:lI47|H10723C550 -10723C550:lI67|H10723D420 -10723D420:lI101|H10723E1C0 -10723E1C0:lI108|H10723EE00 -10723EE00:lI108|H10723F8E0 -10723F8E0:lI97|H107240250 -107240250:lI114|H107240AE0 -107240AE0:lI47|H107241290 -107241290:lI101|H1072419C0 -1072419C0:lI114|H107242090 -107242090:lI108|H107242700 -107242700:lI97|H107242D00 -107242D00:lI110|H107243270 -107243270:lI103|H1072437B0 -1072437B0:lI47|H107243CC0 -107243CC0:lI50|H1072441B0 -1072441B0:lI54|H107244660 -107244660:lI46|H107244AD0 -107244AD0:lI48|H107244F30 -107244F30:lI46|H107245380 -107245380:lI50|H107245780 -107245780:lI47|H107245B40 -107245B40:lI108|H107245ED0 -107245ED0:lI105|H107246260 -107246260:lI98|H1072465F0 -1072465F0:lI47|H107246980 -107246980:lI101|H107246CC0 -107246CC0:lI114|H107246FE0 -107246FE0:lI108|H107247300 -107247300:lI97|H107247610 -107247610:lI110|H107247910 -107247910:lI103|H107247C10 -107247C10:lI47|H107247EF0 -107247EF0:lI108|H1072481B0 -1072481B0:lI105|H107248470 -107248470:lI98|H107248720 -107248720:lI47|H1072489D0 -1072489D0:lI101|H107248C50 -107248C50:lI117|H107248EC0 -107248EC0:lI110|H107249130 -107249130:lI105|H107249390 -107249390:lI116|H1072495F0 -1072495F0:lI45|H107249840 -107249840:lI50|H107249A50 -107249A50:lI46|H107249C50 -107249C50:lI56|H107249E30 -107249E30:lI46|H107249FF0 -107249FF0:lI50|H10724A190 -10724A190:lI47|H280052C20 -10721BE60:lH10721F578|H10721F590 -10721F578:t2:H107222A70,A5:cache -107222A70:lI47|H107225C18 -107225C18:lI111|H107228A70 -107228A70:lI112|H10722B4B8 -10722B4B8:lI116|H10722DBD0 -10722DBD0:lI47|H107230068 -107230068:lI104|H107232200 -107232200:lI111|H107234088 -107234088:lI109|H107235C20 -107235C20:lI101|H107237548 -107237548:lI98|H107238C00 -107238C00:lI114|H10723A0E8 -10723A0E8:lI101|H10723B450 -10723B450:lI119|H10723C560 -10723C560:lI47|H10723D430 -10723D430:lI67|H10723E1D0 -10723E1D0:lI101|H10723EE10 -10723EE10:lI108|H10723F8F0 -10723F8F0:lI108|H107240260 -107240260:lI97|H107240AF0 -107240AF0:lI114|H1072412A0 -1072412A0:lI47|H1072419D0 -1072419D0:lI101|H1072420A0 -1072420A0:lI114|H107242710 -107242710:lI108|H107242D10 -107242D10:lI97|H107243280 -107243280:lI110|H1072437C0 -1072437C0:lI103|H107243CD0 -107243CD0:lI47|H1072441C0 -1072441C0:lI50|H107244670 -107244670:lI54|H107244AE0 -107244AE0:lI46|H107244F40 -107244F40:lI48|H107245390 -107245390:lI46|H107245790 -107245790:lI50|H107245B50 -107245B50:lI47|H107245EE0 -107245EE0:lI108|H107246270 -107246270:lI105|H107246600 -107246600:lI98|H107246990 -107246990:lI47|H107246CD0 -107246CD0:lI101|H107246FF0 -107246FF0:lI114|H107247310 -107247310:lI108|H107247620 -107247620:lI97|H107247920 -107247920:lI110|H107247C20 -107247C20:lI103|H107247F00 -107247F00:lI47|H1072481C0 -1072481C0:lI108|H107248480 -107248480:lI105|H107248730 -107248730:lI98|H1072489E0 -1072489E0:lI47|H107248C60 -107248C60:lI101|H107248ED0 -107248ED0:lI116|H107249140 -107249140:lI45|H1072493A0 -1072493A0:lI49|H107249600 -107249600:lI46|H107249850 -107249850:lI55|H107249A60 -107249A60:lI47|H280052C20 -10721F590:lH107222A80|H107222A98 -107222A80:t2:H107225C28,A5:cache -107225C28:lI47|H107228A80 -107228A80:lI111|H10722B4C8 -10722B4C8:lI112|H10722DBE0 -10722DBE0:lI116|H107230078 -107230078:lI47|H107232210 -107232210:lI104|H107234098 -107234098:lI111|H107235C30 -107235C30:lI109|H107237558 -107237558:lI101|H107238C10 -107238C10:lI98|H10723A0F8 -10723A0F8:lI114|H10723B460 -10723B460:lI101|H10723C570 -10723C570:lI119|H10723D440 -10723D440:lI47|H10723E1E0 -10723E1E0:lI67|H10723EE20 -10723EE20:lI101|H10723F900 -10723F900:lI108|H107240270 -107240270:lI108|H107240B00 -107240B00:lI97|H1072412B0 -1072412B0:lI114|H1072419E0 -1072419E0:lI47|H1072420B0 -1072420B0:lI101|H107242720 -107242720:lI114|H107242D20 -107242D20:lI108|H107243290 -107243290:lI97|H1072437D0 -1072437D0:lI110|H107243CE0 -107243CE0:lI103|H1072441D0 -1072441D0:lI47|H107244680 -107244680:lI50|H107244AF0 -107244AF0:lI54|H107244F50 -107244F50:lI46|H1072453A0 -1072453A0:lI48|H1072457A0 -1072457A0:lI46|H107245B60 -107245B60:lI50|H107245EF0 -107245EF0:lI47|H107246280 -107246280:lI108|H107246610 -107246610:lI105|H1072469A0 -1072469A0:lI98|H107246CE0 -107246CE0:lI47|H107247000 -107247000:lI101|H107247320 -107247320:lI114|H107247630 -107247630:lI108|H107247930 -107247930:lI97|H107247C30 -107247C30:lI110|H107247F10 -107247F10:lI103|H1072481D0 -1072481D0:lI47|H107248490 -107248490:lI108|H107248740 -107248740:lI105|H1072489F0 -1072489F0:lI98|H107248C70 -107248C70:lI47|H107248EE0 -107248EE0:lI101|H107249150 -107249150:lI114|H1072493B0 -1072493B0:lI116|H107249610 -107249610:lI115|H107249860 -107249860:lI45|H107249A70 -107249A70:lI49|H107249C60 -107249C60:lI52|H107249E40 -107249E40:lI46|H10724A000 -10724A000:lI48|H10724A1A0 -10724A1A0:lI46|H10724A320 -10724A320:lI50|H10724A490 -10724A490:lI47|H280052C20 -107222A98:lH107225C38|H107225C50 -107225C38:t2:H107228A90,A5:cache -107228A90:lI47|H10722B4D8 -10722B4D8:lI111|H10722DBF0 -10722DBF0:lI112|H107230088 -107230088:lI116|H107232220 -107232220:lI47|H1072340A8 -1072340A8:lI104|H107235C40 -107235C40:lI111|H107237568 -107237568:lI109|H107238C20 -107238C20:lI101|H10723A108 -10723A108:lI98|H10723B470 -10723B470:lI114|H10723C580 -10723C580:lI101|H10723D450 -10723D450:lI119|H10723E1F0 -10723E1F0:lI47|H10723EE30 -10723EE30:lI67|H10723F910 -10723F910:lI101|H107240280 -107240280:lI108|H107240B10 -107240B10:lI108|H1072412C0 -1072412C0:lI97|H1072419F0 -1072419F0:lI114|H1072420C0 -1072420C0:lI47|H107242730 -107242730:lI101|H107242D30 -107242D30:lI114|H1072432A0 -1072432A0:lI108|H1072437E0 -1072437E0:lI97|H107243CF0 -107243CF0:lI110|H1072441E0 -1072441E0:lI103|H107244690 -107244690:lI47|H107244B00 -107244B00:lI50|H107244F60 -107244F60:lI54|H1072453B0 -1072453B0:lI46|H1072457B0 -1072457B0:lI48|H107245B70 -107245B70:lI46|H107245F00 -107245F00:lI50|H107246290 -107246290:lI47|H107246620 -107246620:lI108|H1072469B0 -1072469B0:lI105|H107246CF0 -107246CF0:lI98|H107247010 -107247010:lI47|H107247330 -107247330:lI101|H107247640 -107247640:lI114|H107247940 -107247940:lI108|H107247C40 -107247C40:lI97|H107247F20 -107247F20:lI110|H1072481E0 -1072481E0:lI103|H1072484A0 -1072484A0:lI47|H107248750 -107248750:lI108|H107248A00 -107248A00:lI105|H107248C80 -107248C80:lI98|H107248EF0 -107248EF0:lI47|H107249160 -107249160:lI101|H1072493C0 -1072493C0:lI114|H107249620 -107249620:lI108|H107249870 -107249870:lI95|H107249A80 -107249A80:lI105|H107249C70 -107249C70:lI110|H107249E50 -107249E50:lI116|H10724A010 -10724A010:lI101|H10724A1B0 -10724A1B0:lI114|H10724A330 -10724A330:lI102|H10724A4A0 -10724A4A0:lI97|H10724A600 -10724A600:lI99|H10724A740 -10724A740:lI101|H10724A860 -10724A860:lI45|H10724A970 -10724A970:lI53|H10724AA60 -10724AA60:lI46|H10724AB30 -10724AB30:lI52|H10724ABD0 -10724ABD0:lI47|H280052C20 -107225C50:lH107228AA0|H107228AB8 -107228AA0:t2:H10722B4E8,A5:cache -10722B4E8:lI47|H10722DC00 -10722DC00:lI111|H107230098 -107230098:lI112|H107232230 -107232230:lI116|H1072340B8 -1072340B8:lI47|H107235C50 -107235C50:lI104|H107237578 -107237578:lI111|H107238C30 -107238C30:lI109|H10723A118 -10723A118:lI101|H10723B480 -10723B480:lI98|H10723C590 -10723C590:lI114|H10723D460 -10723D460:lI101|H10723E200 -10723E200:lI119|H10723EE40 -10723EE40:lI47|H10723F920 -10723F920:lI67|H107240290 -107240290:lI101|H107240B20 -107240B20:lI108|H1072412D0 -1072412D0:lI108|H107241A00 -107241A00:lI97|H1072420D0 -1072420D0:lI114|H107242740 -107242740:lI47|H107242D40 -107242D40:lI101|H1072432B0 -1072432B0:lI114|H1072437F0 -1072437F0:lI108|H107243D00 -107243D00:lI97|H1072441F0 -1072441F0:lI110|H1072446A0 -1072446A0:lI103|H107244B10 -107244B10:lI47|H107244F70 -107244F70:lI50|H1072453C0 -1072453C0:lI54|H1072457C0 -1072457C0:lI46|H107245B80 -107245B80:lI48|H107245F10 -107245F10:lI46|H1072462A0 -1072462A0:lI50|H107246630 -107246630:lI47|H1072469C0 -1072469C0:lI108|H107246D00 -107246D00:lI105|H107247020 -107247020:lI98|H107247340 -107247340:lI47|H107247650 -107247650:lI101|H107247950 -107247950:lI114|H107247C50 -107247C50:lI108|H107247F30 -107247F30:lI97|H1072481F0 -1072481F0:lI110|H1072484B0 -1072484B0:lI103|H107248760 -107248760:lI47|H107248A10 -107248A10:lI108|H107248C90 -107248C90:lI105|H107248F00 -107248F00:lI98|H107249170 -107249170:lI47|H1072493D0 -1072493D0:lI101|H107249630 -107249630:lI114|H107249880 -107249880:lI108|H107249A90 -107249A90:lI95|H107249C80 -107249C80:lI100|H107249E60 -107249E60:lI111|H10724A020 -10724A020:lI99|H10724A1C0 -10724A1C0:lI103|H10724A340 -10724A340:lI101|H10724A4B0 -10724A4B0:lI110|H10724A610 -10724A610:lI45|H10724A750 -10724A750:lI49|H10724A870 -10724A870:lI46|H10724A980 -10724A980:lI53|H10724AA70 -10724AA70:lI47|H280052C20 -107228AB8:lH10722B4F8|H10722B510 -10722B4F8:t2:H10722DC10,A5:cache -10722DC10:lI47|H1072300A8 -1072300A8:lI111|H107232240 -107232240:lI112|H1072340C8 -1072340C8:lI116|H107235C60 -107235C60:lI47|H107237588 -107237588:lI104|H107238C40 -107238C40:lI111|H10723A128 -10723A128:lI109|H10723B490 -10723B490:lI101|H10723C5A0 -10723C5A0:lI98|H10723D470 -10723D470:lI114|H10723E210 -10723E210:lI101|H10723EE50 -10723EE50:lI119|H10723F930 -10723F930:lI47|H1072402A0 -1072402A0:lI67|H107240B30 -107240B30:lI101|H1072412E0 -1072412E0:lI108|H107241A10 -107241A10:lI108|H1072420E0 -1072420E0:lI97|H107242750 -107242750:lI114|H107242D50 -107242D50:lI47|H1072432C0 -1072432C0:lI101|H107243800 -107243800:lI114|H107243D10 -107243D10:lI108|H107244200 -107244200:lI97|H1072446B0 -1072446B0:lI110|H107244B20 -107244B20:lI103|H107244F80 -107244F80:lI47|H1072453D0 -1072453D0:lI50|H1072457D0 -1072457D0:lI54|H107245B90 -107245B90:lI46|H107245F20 -107245F20:lI48|H1072462B0 -1072462B0:lI46|H107246640 -107246640:lI50|H1072469D0 -1072469D0:lI47|H107246D10 -107246D10:lI108|H107247030 -107247030:lI105|H107247350 -107247350:lI98|H107247660 -107247660:lI47|H107247960 -107247960:lI101|H107247C60 -107247C60:lI114|H107247F40 -107247F40:lI108|H107248200 -107248200:lI97|H1072484C0 -1072484C0:lI110|H107248770 -107248770:lI103|H107248A20 -107248A20:lI47|H107248CA0 -107248CA0:lI108|H107248F10 -107248F10:lI105|H107249180 -107249180:lI98|H1072493E0 -1072493E0:lI47|H107249640 -107249640:lI101|H107249890 -107249890:lI108|H107249AA0 -107249AA0:lI100|H107249C90 -107249C90:lI97|H107249E70 -107249E70:lI112|H10724A030 -10724A030:lI45|H10724A1D0 -10724A1D0:lI49|H10724A350 -10724A350:lI46|H10724A4C0 -10724A4C0:lI50|H10724A620 -10724A620:lI46|H10724A760 -10724A760:lI49|H10724A880 -10724A880:lI49|H10724A990 -10724A990:lI47|H280052C20 -10722B510:lH10722DC20|H10722DC38 -10722DC20:t2:H1072300B8,A5:cache -1072300B8:lI47|H107232250 -107232250:lI111|H1072340D8 -1072340D8:lI112|H107235C70 -107235C70:lI116|H107237598 -107237598:lI47|H107238C50 -107238C50:lI104|H10723A138 -10723A138:lI111|H10723B4A0 -10723B4A0:lI109|H10723C5B0 -10723C5B0:lI101|H10723D480 -10723D480:lI98|H10723E220 -10723E220:lI114|H10723EE60 -10723EE60:lI101|H10723F940 -10723F940:lI119|H1072402B0 -1072402B0:lI47|H107240B40 -107240B40:lI67|H1072412F0 -1072412F0:lI101|H107241A20 -107241A20:lI108|H1072420F0 -1072420F0:lI108|H107242760 -107242760:lI97|H107242D60 -107242D60:lI114|H1072432D0 -1072432D0:lI47|H107243810 -107243810:lI101|H107243D20 -107243D20:lI114|H107244210 -107244210:lI108|H1072446C0 -1072446C0:lI97|H107244B30 -107244B30:lI110|H107244F90 -107244F90:lI103|H1072453E0 -1072453E0:lI47|H1072457E0 -1072457E0:lI50|H107245BA0 -107245BA0:lI54|H107245F30 -107245F30:lI46|H1072462C0 -1072462C0:lI48|H107246650 -107246650:lI46|H1072469E0 -1072469E0:lI50|H107246D20 -107246D20:lI47|H107247040 -107247040:lI108|H107247360 -107247360:lI105|H107247670 -107247670:lI98|H107247970 -107247970:lI47|H107247C70 -107247C70:lI101|H107247F50 -107247F50:lI114|H107248210 -107248210:lI108|H1072484D0 -1072484D0:lI97|H107248780 -107248780:lI110|H107248A30 -107248A30:lI103|H107248CB0 -107248CB0:lI47|H107248F20 -107248F20:lI108|H107249190 -107249190:lI105|H1072493F0 -1072493F0:lI98|H107249650 -107249650:lI47|H1072498A0 -1072498A0:lI101|H107249AB0 -107249AB0:lI100|H107249CA0 -107249CA0:lI111|H107249E80 -107249E80:lI99|H10724A040 -10724A040:lI45|H10724A1E0 -10724A1E0:lI49|H10724A360 -10724A360:lI46|H10724A4D0 -10724A4D0:lI50|H10724A630 -10724A630:lI47|H280052C20 -10722DC38:lH1072300C8|H1072300E0 -1072300C8:t2:H107232260,A5:cache -107232260:lI47|H1072340E8 -1072340E8:lI111|H107235C80 -107235C80:lI112|H1072375A8 -1072375A8:lI116|H107238C60 -107238C60:lI47|H10723A148 -10723A148:lI104|H10723B4B0 -10723B4B0:lI111|H10723C5C0 -10723C5C0:lI109|H10723D490 -10723D490:lI101|H10723E230 -10723E230:lI98|H10723EE70 -10723EE70:lI114|H10723F950 -10723F950:lI101|H1072402C0 -1072402C0:lI119|H107240B50 -107240B50:lI47|H107241300 -107241300:lI67|H107241A30 -107241A30:lI101|H107242100 -107242100:lI108|H107242770 -107242770:lI108|H107242D70 -107242D70:lI97|H1072432E0 -1072432E0:lI114|H107243820 -107243820:lI47|H107243D30 -107243D30:lI101|H107244220 -107244220:lI114|H1072446D0 -1072446D0:lI108|H107244B40 -107244B40:lI97|H107244FA0 -107244FA0:lI110|H1072453F0 -1072453F0:lI103|H1072457F0 -1072457F0:lI47|H107245BB0 -107245BB0:lI50|H107245F40 -107245F40:lI54|H1072462D0 -1072462D0:lI46|H107246660 -107246660:lI48|H1072469F0 -1072469F0:lI46|H107246D30 -107246D30:lI50|H107247050 -107247050:lI47|H107247370 -107247370:lI108|H107247680 -107247680:lI105|H107247980 -107247980:lI98|H107247C80 -107247C80:lI47|H107247F60 -107247F60:lI101|H107248220 -107248220:lI114|H1072484E0 -1072484E0:lI108|H107248790 -107248790:lI97|H107248A40 -107248A40:lI110|H107248CC0 -107248CC0:lI103|H107248F30 -107248F30:lI47|H1072491A0 -1072491A0:lI108|H107249400 -107249400:lI105|H107249660 -107249660:lI98|H1072498B0 -1072498B0:lI47|H107249AC0 -107249AC0:lI100|H107249CB0 -107249CB0:lI105|H107249E90 -107249E90:lI97|H10724A050 -10724A050:lI109|H10724A1F0 -10724A1F0:lI101|H10724A370 -10724A370:lI116|H10724A4E0 -10724A4E0:lI101|H10724A640 -10724A640:lI114|H10724A770 -10724A770:lI45|H10724A890 -10724A890:lI50|H10724A9A0 -10724A9A0:lI46|H10724AA80 -10724AA80:lI51|H10724AB40 -10724AB40:lI47|H280052C20 -1072300E0:lH107232270|H107232288 -107232270:t2:H1072340F8,A5:cache -1072340F8:lI47|H107235C90 -107235C90:lI111|H1072375B8 -1072375B8:lI112|H107238C70 -107238C70:lI116|H10723A158 -10723A158:lI47|H10723B4C0 -10723B4C0:lI104|H10723C5D0 -10723C5D0:lI111|H10723D4A0 -10723D4A0:lI109|H10723E240 -10723E240:lI101|H10723EE80 -10723EE80:lI98|H10723F960 -10723F960:lI114|H1072402D0 -1072402D0:lI101|H107240B60 -107240B60:lI119|H107241310 -107241310:lI47|H107241A40 -107241A40:lI67|H107242110 -107242110:lI101|H107242780 -107242780:lI108|H107242D80 -107242D80:lI108|H1072432F0 -1072432F0:lI97|H107243830 -107243830:lI114|H107243D40 -107243D40:lI47|H107244230 -107244230:lI101|H1072446E0 -1072446E0:lI114|H107244B50 -107244B50:lI108|H107244FB0 -107244FB0:lI97|H107245400 -107245400:lI110|H107245800 -107245800:lI103|H107245BC0 -107245BC0:lI47|H107245F50 -107245F50:lI50|H1072462E0 -1072462E0:lI54|H107246670 -107246670:lI46|H107246A00 -107246A00:lI48|H107246D40 -107246D40:lI46|H107247060 -107247060:lI50|H107247380 -107247380:lI47|H107247690 -107247690:lI108|H107247990 -107247990:lI105|H107247C90 -107247C90:lI98|H107247F70 -107247F70:lI47|H107248230 -107248230:lI101|H1072484F0 -1072484F0:lI114|H1072487A0 -1072487A0:lI108|H107248A50 -107248A50:lI97|H107248CD0 -107248CD0:lI110|H107248F40 -107248F40:lI103|H1072491B0 -1072491B0:lI47|H107249410 -107249410:lI108|H107249670 -107249670:lI105|H1072498C0 -1072498C0:lI98|H107249AD0 -107249AD0:lI47|H107249CC0 -107249CC0:lI100|H107249EA0 -107249EA0:lI105|H10724A060 -10724A060:lI97|H10724A200 -10724A200:lI108|H10724A380 -10724A380:lI121|H10724A4F0 -10724A4F0:lI122|H10724A650 -10724A650:lI101|H10724A780 -10724A780:lI114|H10724A8A0 -10724A8A0:lI45|H10724A9B0 -10724A9B0:lI53|H10724AA90 -10724AA90:lI46|H10724AB50 -10724AB50:lI49|H10724ABE0 -10724ABE0:lI47|H280052C20 -107232288:lH107234108|H107234120 -107234108:t2:H107235CA0,A5:cache -107235CA0:lI47|H1072375C8 -1072375C8:lI111|H107238C80 -107238C80:lI112|H10723A168 -10723A168:lI116|H10723B4D0 -10723B4D0:lI47|H10723C5E0 -10723C5E0:lI104|H10723D4B0 -10723D4B0:lI111|H10723E250 -10723E250:lI109|H10723EE90 -10723EE90:lI101|H10723F970 -10723F970:lI98|H1072402E0 -1072402E0:lI114|H107240B70 -107240B70:lI101|H107241320 -107241320:lI119|H107241A50 -107241A50:lI47|H107242120 -107242120:lI67|H107242790 -107242790:lI101|H107242D90 -107242D90:lI108|H107243300 -107243300:lI108|H107243840 -107243840:lI97|H107243D50 -107243D50:lI114|H107244240 -107244240:lI47|H1072446F0 -1072446F0:lI101|H107244B60 -107244B60:lI114|H107244FC0 -107244FC0:lI108|H107245410 -107245410:lI97|H107245810 -107245810:lI110|H107245BD0 -107245BD0:lI103|H107245F60 -107245F60:lI47|H1072462F0 -1072462F0:lI50|H107246680 -107246680:lI54|H107246A10 -107246A10:lI46|H107246D50 -107246D50:lI48|H107247070 -107247070:lI46|H107247390 -107247390:lI50|H1072476A0 -1072476A0:lI47|H1072479A0 -1072479A0:lI108|H107247CA0 -107247CA0:lI105|H107247F80 -107247F80:lI98|H107248240 -107248240:lI47|H107248500 -107248500:lI101|H1072487B0 -1072487B0:lI114|H107248A60 -107248A60:lI108|H107248CE0 -107248CE0:lI97|H107248F50 -107248F50:lI110|H1072491C0 -1072491C0:lI103|H107249420 -107249420:lI47|H107249680 -107249680:lI108|H1072498D0 -1072498D0:lI105|H107249AE0 -107249AE0:lI98|H107249CD0 -107249CD0:lI47|H107249EB0 -107249EB0:lI100|H10724A070 -10724A070:lI101|H10724A210 -10724A210:lI98|H10724A390 -10724A390:lI117|H10724A500 -10724A500:lI103|H10724A660 -10724A660:lI103|H10724A790 -10724A790:lI101|H10724A8B0 -10724A8B0:lI114|H10724A9C0 -10724A9C0:lI45|H10724AAA0 -10724AAA0:lI53|H10724AB60 -10724AB60:lI46|H10724ABF0 -10724ABF0:lI51|H10724AC60 -10724AC60:lI46|H10724ACC0 -10724ACC0:lI49|H10724AD10 -10724AD10:lI47|H280052C20 -107234120:lH107235CB0|H107235CC8 -107235CB0:t2:H1072375D8,A5:cache -1072375D8:lI47|H107238C90 -107238C90:lI111|H10723A178 -10723A178:lI112|H10723B4E0 -10723B4E0:lI116|H10723C5F0 -10723C5F0:lI47|H10723D4C0 -10723D4C0:lI104|H10723E260 -10723E260:lI111|H10723EEA0 -10723EEA0:lI109|H10723F980 -10723F980:lI101|H1072402F0 -1072402F0:lI98|H107240B80 -107240B80:lI114|H107241330 -107241330:lI101|H107241A60 -107241A60:lI119|H107242130 -107242130:lI47|H1072427A0 -1072427A0:lI67|H107242DA0 -107242DA0:lI101|H107243310 -107243310:lI108|H107243850 -107243850:lI108|H107243D60 -107243D60:lI97|H107244250 -107244250:lI114|H107244700 -107244700:lI47|H107244B70 -107244B70:lI101|H107244FD0 -107244FD0:lI114|H107245420 -107245420:lI108|H107245820 -107245820:lI97|H107245BE0 -107245BE0:lI110|H107245F70 -107245F70:lI103|H107246300 -107246300:lI47|H107246690 -107246690:lI50|H107246A20 -107246A20:lI54|H107246D60 -107246D60:lI46|H107247080 -107247080:lI48|H1072473A0 -1072473A0:lI46|H1072476B0 -1072476B0:lI50|H1072479B0 -1072479B0:lI47|H107247CB0 -107247CB0:lI108|H107247F90 -107247F90:lI105|H107248250 -107248250:lI98|H107248510 -107248510:lI47|H1072487C0 -1072487C0:lI101|H107248A70 -107248A70:lI114|H107248CF0 -107248CF0:lI108|H107248F60 -107248F60:lI97|H1072491D0 -1072491D0:lI110|H107249430 -107249430:lI103|H107249690 -107249690:lI47|H1072498E0 -1072498E0:lI108|H107249AF0 -107249AF0:lI105|H107249CE0 -107249CE0:lI98|H107249EC0 -107249EC0:lI47|H10724A080 -10724A080:lI99|H10724A220 -10724A220:lI114|H10724A3A0 -10724A3A0:lI121|H10724A510 -10724A510:lI112|H10724A670 -10724A670:lI116|H10724A7A0 -10724A7A0:lI111|H10724A8C0 -10724A8C0:lI45|H10724A9D0 -10724A9D0:lI53|H10724AAB0 -10724AAB0:lI46|H10724AB70 -10724AB70:lI50|H10724AC00 -10724AC00:lI47|H280052C20 -107235CC8:lH1072375E8|H107237600 -1072375E8:t2:H107238CA0,A5:cache -107238CA0:lI47|H10723A188 -10723A188:lI111|H10723B4F0 -10723B4F0:lI112|H10723C600 -10723C600:lI116|H10723D4D0 -10723D4D0:lI47|H10723E270 -10723E270:lI104|H10723EEB0 -10723EEB0:lI111|H10723F990 -10723F990:lI109|H107240300 -107240300:lI101|H107240B90 -107240B90:lI98|H107241340 -107241340:lI114|H107241A70 -107241A70:lI101|H107242140 -107242140:lI119|H1072427B0 -1072427B0:lI47|H107242DB0 -107242DB0:lI67|H107243320 -107243320:lI101|H107243860 -107243860:lI108|H107243D70 -107243D70:lI108|H107244260 -107244260:lI97|H107244710 -107244710:lI114|H107244B80 -107244B80:lI47|H107244FE0 -107244FE0:lI101|H107245430 -107245430:lI114|H107245830 -107245830:lI108|H107245BF0 -107245BF0:lI97|H107245F80 -107245F80:lI110|H107246310 -107246310:lI103|H1072466A0 -1072466A0:lI47|H107246A30 -107246A30:lI50|H107246D70 -107246D70:lI54|H107247090 -107247090:lI46|H1072473B0 -1072473B0:lI48|H1072476C0 -1072476C0:lI46|H1072479C0 -1072479C0:lI50|H107247CC0 -107247CC0:lI47|H107247FA0 -107247FA0:lI108|H107248260 -107248260:lI105|H107248520 -107248520:lI98|H1072487D0 -1072487D0:lI47|H107248A80 -107248A80:lI101|H107248D00 -107248D00:lI114|H107248F70 -107248F70:lI108|H1072491E0 -1072491E0:lI97|H107249440 -107249440:lI110|H1072496A0 -1072496A0:lI103|H1072498F0 -1072498F0:lI47|H107249B00 -107249B00:lI108|H107249CF0 -107249CF0:lI105|H107249ED0 -107249ED0:lI98|H10724A090 -10724A090:lI47|H10724A230 -10724A230:lI99|H10724A3B0 -10724A3B0:lI111|H10724A520 -10724A520:lI109|H10724A680 -10724A680:lI112|H10724A7B0 -10724A7B0:lI105|H10724A8D0 -10724A8D0:lI108|H10724A9E0 -10724A9E0:lI101|H10724AAC0 -10724AAC0:lI114|H10724AB80 -10724AB80:lI45|H10724AC10 -10724AC10:lI56|H10724AC70 -10724AC70:lI46|H10724ACD0 -10724ACD0:lI51|H10724AD20 -10724AD20:lI46|H10724AD60 -10724AD60:lI50|H10724ADA0 -10724ADA0:lI47|H280052C20 -107237600:lH107238CB0|H107238CC8 -107238CB0:t2:H10723A198,A5:cache -10723A198:lI47|H10723B500 -10723B500:lI111|H10723C610 -10723C610:lI112|H10723D4E0 -10723D4E0:lI116|H10723E280 -10723E280:lI47|H10723EEC0 -10723EEC0:lI104|H10723F9A0 -10723F9A0:lI111|H107240310 -107240310:lI109|H107240BA0 -107240BA0:lI101|H107241350 -107241350:lI98|H107241A80 -107241A80:lI114|H107242150 -107242150:lI101|H1072427C0 -1072427C0:lI119|H107242DC0 -107242DC0:lI47|H107243330 -107243330:lI67|H107243870 -107243870:lI101|H107243D80 -107243D80:lI108|H107244270 -107244270:lI108|H107244720 -107244720:lI97|H107244B90 -107244B90:lI114|H107244FF0 -107244FF0:lI47|H107245440 -107245440:lI101|H107245840 -107245840:lI114|H107245C00 -107245C00:lI108|H107245F90 -107245F90:lI97|H107246320 -107246320:lI110|H1072466B0 -1072466B0:lI103|H107246A40 -107246A40:lI47|H107246D80 -107246D80:lI50|H1072470A0 -1072470A0:lI54|H1072473C0 -1072473C0:lI46|H1072476D0 -1072476D0:lI48|H1072479D0 -1072479D0:lI46|H107247CD0 -107247CD0:lI50|H107247FB0 -107247FB0:lI47|H107248270 -107248270:lI108|H107248530 -107248530:lI105|H1072487E0 -1072487E0:lI98|H107248A90 -107248A90:lI47|H107248D10 -107248D10:lI101|H107248F80 -107248F80:lI114|H1072491F0 -1072491F0:lI108|H107249450 -107249450:lI97|H1072496B0 -1072496B0:lI110|H107249900 -107249900:lI103|H107249B10 -107249B10:lI47|H107249D00 -107249D00:lI108|H107249EE0 -107249EE0:lI105|H10724A0A0 -10724A0A0:lI98|H10724A240 -10724A240:lI47|H10724A3C0 -10724A3C0:lI99|H10724A530 -10724A530:lI111|H10724A690 -10724A690:lI109|H10724A7C0 -10724A7C0:lI109|H10724A8E0 -10724A8E0:lI111|H10724A9F0 -10724A9F0:lI110|H10724AAD0 -10724AAD0:lI95|H10724AB90 -10724AB90:lI116|H10724AC20 -10724AC20:lI101|H10724AC80 -10724AC80:lI115|H10724ACE0 -10724ACE0:lI116|H10724AD30 -10724AD30:lI45|H10724AD70 -10724AD70:lI49|H10724ADB0 -10724ADB0:lI46|H10724ADE0 -10724ADE0:lI50|H10724AE10 -10724AE10:lI53|H10724AE30 -10724AE30:lI47|H280052C20 -107238CC8:lH10723A1A8|N -10723A1A8:t2:H10723B510,A5:cache -10723B510:lI47|H10723C620 -10723C620:lI111|H10723D4F0 -10723D4F0:lI112|H10723E290 -10723E290:lI116|H10723EED0 -10723EED0:lI47|H10723F9B0 -10723F9B0:lI104|H107240320 -107240320:lI111|H107240BB0 -107240BB0:lI109|H107241360 -107241360:lI101|H107241A90 -107241A90:lI98|H107242160 -107242160:lI114|H1072427D0 -1072427D0:lI101|H107242DD0 -107242DD0:lI119|H107243340 -107243340:lI47|H107243880 -107243880:lI67|H107243D90 -107243D90:lI101|H107244280 -107244280:lI108|H107244730 -107244730:lI108|H107244BA0 -107244BA0:lI97|H107245000 -107245000:lI114|H107245450 -107245450:lI47|H107245850 -107245850:lI101|H107245C10 -107245C10:lI114|H107245FA0 -107245FA0:lI108|H107246330 -107246330:lI97|H1072466C0 -1072466C0:lI110|H107246A50 -107246A50:lI103|H107246D90 -107246D90:lI47|H1072470B0 -1072470B0:lI50|H1072473D0 -1072473D0:lI54|H1072476E0 -1072476E0:lI46|H1072479E0 -1072479E0:lI48|H107247CE0 -107247CE0:lI46|H107247FC0 -107247FC0:lI50|H107248280 -107248280:lI47|H107248540 -107248540:lI108|H1072487F0 -1072487F0:lI105|H107248AA0 -107248AA0:lI98|H107248D20 -107248D20:lI47|H107248F90 -107248F90:lI101|H107249200 -107249200:lI114|H107249460 -107249460:lI108|H1072496C0 -1072496C0:lI97|H107249910 -107249910:lI110|H107249B20 -107249B20:lI103|H107249D10 -107249D10:lI47|H107249EF0 -107249EF0:lI108|H10724A0B0 -10724A0B0:lI105|H10724A250 -10724A250:lI98|H10724A3D0 -10724A3D0:lI47|H10724A540 -10724A540:lI97|H10724A6A0 -10724A6A0:lI115|H10724A7D0 -10724A7D0:lI110|H10724A8F0 -10724A8F0:lI49|H10724AA00 -10724AA00:lI45|H10724AAE0 -10724AAE0:lI53|H10724ABA0 -10724ABA0:lI46|H10724AC30 -10724AC30:lI49|H10724AC90 -10724AC90:lI47|H280052C20 -1071F0038:lI47|H1071F05F8 -1071F05F8:lI111|H1071F1880 -1071F1880:lI112|H1071F3AF8 -1071F3AF8:lI116|H1071F6310 -1071F6310:lI47|H1071F8F60 -1071F8F60:lI104|H1071FBEA0 -1071FBEA0:lI111|H1071FEF58 -1071FEF58:lI109|H107202100 -107202100:lI101|H107205340 -107205340:lI98|H107208638 -107208638:lI114|H10720B908 -10720B908:lI101|H10720EBC8 -10720EBC8:lI119|H107211F28 -107211F28:lI47|H107215400 -107215400:lI67|H107218A90 -107218A90:lI101|H10721C2C0 -10721C2C0:lI108|H10721F9C0 -10721F9C0:lI108|H107222EB8 -107222EB8:lI97|H107226020 -107226020:lI114|H107228E08 -107228E08:lI47|H10722B840 -10722B840:lI101|H10722DF18 -10722DF18:lI114|H107230340 -107230340:lI108|H1072324B8 -1072324B8:lI97|H107234320 -107234320:lI110|H107235E88 -107235E88:lI103|H107237780 -107237780:lI47|H107238E08 -107238E08:lI50|H10723A2E0 -10723A2E0:lI54|H10723B640 -10723B640:lI46|H10723C720 -10723C720:lI48|H10723D5E0 -10723D5E0:lI46|H10723E360 -10723E360:lI50|H10723EF70 -10723EF70:lI47|H10723FA40 -10723FA40:lI108|H107240390 -107240390:lI105|H107240C10 -107240C10:lI98|H1072413A0 -1072413A0:lI47|H107241AD0 -107241AD0:lI101|H1072421A0 -1072421A0:lI114|H107242810 -107242810:lI108|H107242E10 -107242E10:lI97|H107243380 -107243380:lI110|H1072438C0 -1072438C0:lI103|N -=proc_dictionary:<0.51.0> -H105D8DDC8 -H105D8DE00 -=proc_stack:<0.51.0> -y0:N -y1:A8:infinity -y2:H105D8DE90 -y3:H105D8DF68 -y4:A12:standard_error_sup -y5:P<0.49.0> -0x0000000105d8e3d8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d8e3f8:SReturn addr 0x3D82348 () -=proc_heap:<0.51.0> -105D8DE90:t5:AE:callback_cache,A11:supervisor_bridge,H105D8DE18,H105D8DE40,H105D8DE68 -105D8DE68:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfaW5mb2EC -105D8DE40:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FzdGEC -105D8DE18:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FsbGED -105D8DF68:t5:A5:state,AE:standard_error,P<0.52.0>,P<0.52.0>,H280068C20 -105D8DDC8:t2:AA:$ancestors,H105D8DDB8 -105D8DDB8:lAA:kernel_sup|H105D8DD78 -105D8DD78:lP<0.47.0>|N -105D8DE00:t2:AD:$initial_call,H105D8DDE0 -105D8DDE0:t3:A11:supervisor_bridge,AE:standard_error,I1 -=proc_dictionary:<0.52.0> -H105D972F8 -H105D972E0 -=proc_stack:<0.52.0> -y0:p<0.1> -0x0000000105d979e0:SReturn addr 0x3D82348 () -=proc_heap:<0.52.0> -105D972F8:t2:A5:onlcr,A5:false -105D972E0:t2:A8:encoding,A7:unicode -=proc_dictionary:<0.53.0> -H105D801F0 -H105D80208 -=proc_stack:<0.53.0> -y0:N -y1:A8:infinity -y2:H105D801C0 -y3:A9:undefined -y4:AD:file_server_2 -y5:P<0.49.0> -0x0000000105ddf9b8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105ddf9d8:SReturn addr 0x3D82348 () -=proc_heap:<0.53.0> -105D801C0:t5:AE:callback_cache,AB:file_server,H105D80220,H105D80248,H105D80270 -105D80270:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfaW5mb2EC -105D80248:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfY2FzdGEC -105D80220:E1E:g3F3C2ZpbGVfc2VydmVydwtoYW5kbGVfY2FsbGED -105D801F0:t2:AA:$ancestors,H105D80298 -105D80298:lAA:kernel_sup|H105D802C8 -105D802C8:lP<0.47.0>|N -105D80208:t2:AD:$initial_call,H105D802A8 -105D802A8:t3:AB:file_server,A4:init,I1 -=proc_dictionary:<0.55.0> -H105D90368 -H105D90380 -=proc_stack:<0.55.0> -y0:N -y1:A8:infinity -y2:H105D902E8 -y3:H105D90318 -y4:A7:inet_db -y5:P<0.49.0> -0x0000000105d92198:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d921b8:SReturn addr 0x3D82348 () -=proc_heap:<0.55.0> -105D902E8:t5:AE:callback_cache,A7:inet_db,H105D90398,H105D903C0,H105D903E8 -105D903E8:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9pbmZvYQI= -105D903C0:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9jYXN0YQI= -105D90398:E1A:g3F3B2luZXRfZGJ3C2hhbmRsZV9jYWxsYQM= -105D90318:t9:A5:state,A7:inet_db,AA:inet_cache,A11:inet_hosts_byname,A11:inet_hosts_byaddr,A16:inet_hosts_file_byname,A16:inet_hosts_file_byaddr,AC:inet_sockets,H105D90410 -105D90410:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAAK/o+vQAAd/g02c= -105D90368:t2:AA:$ancestors,H105D90428 -105D90428:lAA:kernel_sup|H105D90458 -105D90458:lP<0.47.0>|N -105D90380:t2:AD:$initial_call,H105D90438 -105D90438:t3:A7:inet_db,A4:init,I1 -=proc_dictionary:<0.56.0> -H105D98DE8 -H105D98E20 -=proc_stack:<0.56.0> -y0:N -y1:A8:infinity -y2:H105D98EB0 -y3:H105D98F20 -y4:A3:rex -y5:P<0.49.0> -0x0000000105d99428:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d99448:SReturn addr 0x3D82348 () -=proc_heap:<0.56.0> -105D98EB0:t5:AE:callback_cache,A3:rpc,H105D98E38,H105D98E60,H105D98E88 -105D98E88:E16:g3F3A3JwY3cLaGFuZGxlX2luZm9hAg== -105D98E60:E16:g3F3A3JwY3cLaGFuZGxlX2Nhc3RhAg== -105D98E38:E16:g3F3A3JwY3cLaGFuZGxlX2NhbGxhAw== -105D98F20:Mf1:H280071110:H105D98F08 -105D98F08:t2:P<0.57.0>,H105D98EF0 -105D98EF0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAD+vQAAd/g02c= -105D98DE8:t2:AA:$ancestors,H105D98DD8 -105D98DD8:lAA:kernel_sup|H105D98D98 -105D98D98:lP<0.47.0>|N -105D98E20:t2:AD:$initial_call,H105D98E00 -105D98E00:t3:A3:rpc,A4:init,I1 -=proc_stack:<0.57.0> -y0:N -y1:H105D99468 -y2:N -0x0000000105d99b98:SReturn addr 0x3D82348 () -=proc_heap:<0.57.0> -105D99468:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAE+vYAAd/g02c= -=proc_dictionary:<0.58.0> -H105D84510 -H105DA9070 -H105DA9088 -H105D84428 -=proc_stack:<0.58.0> -y0:N -y1:A8:infinity -y2:H105DA9040 -y3:H105DA9158 -y4:A12:global_name_server -y5:P<0.49.0> -0x0000000105d856e8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d85708:SReturn addr 0x3D82348 () -=proc_heap:<0.58.0> -105DA9040:t5:AE:callback_cache,A6:global,H105DA90A0,H105DA90C8,H105DA90F0 -105DA90F0:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2luZm9hAg== -105DA90C8:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2Nhc3RhAg== -105DA90A0:E19:g3F3Bmdsb2JhbHcLaGFuZGxlX2NhbGxhAw== -105DA9158:tB:A5:state,H105DA91B8,H2800715B0,N,N,N,AD:nonode@nohost,P<0.59.0>,P<0.60.0>,A8:no_trace,A5:false -105DA91B8:t3:A4:conf,A4:true,A4:true -105D84510:t2:A12:creation_extension,H105D833F0 -105D833F0:B889410000978444288 -105DA9070:t2:AA:$ancestors,H105DA9118 -105DA9118:lAA:kernel_sup|H105DA9148 -105DA9148:lP<0.47.0>|N -105DA9088:t2:AD:$initial_call,H105DA9128 -105DA9128:t3:A6:global,A4:init,I1 -105D84428:t2:A9:rand_seed,H105D84400 -105D84400:t2:H105D84478,H105D844C0 -105D844C0:lI236283493786687394|I177509139475053309 -105D84478:Mf6:H28007DE10:A5:exsss,H28007DD70,I58,H28007DD98,H28007DDC0,H28007DDE8 -=proc_stack:<0.59.0> -y0:A8:infinity -y1:H105DAE560 -0x0000000105daeb20:SReturn addr 0x3D82348 () -=proc_heap:<0.59.0> -105DAE560:t7:A5:multi,N,N,N,AD:nonode@nohost,A5:false,A5:false -=proc_stack:<0.60.0> -y0:N -0x0000000105dafe38:SReturn addr 0x3D82348 () -=proc_heap:<0.60.0> -=proc_dictionary:<0.61.0> -H105DAA4F0 -H105DAA580 -H105DAA418 -H105DAA430 -H105DAA518 -H105DAA598 -=proc_stack:<0.61.0> -y0:N -y1:A8:infinity -y2:H105DAA3D8 -y3:H105DAAB68 -y4:AC:global_group -y5:P<0.49.0> -0x0000000105daaef0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105daaf10:SReturn addr 0x3D82348 () -=proc_heap:<0.61.0> -105DAA3D8:t5:AE:callback_cache,AC:global_group,H105DAA478,H105DAA4A0,H105DAA4C8 -105DAA4C8:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2luZm9hAg== -105DAA4A0:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2Nhc3RhAg== -105DAA478:E1F:g3F3DGdsb2JhbF9ncm91cHcLaGFuZGxlX2NhbGxhAw== -105DAAB68:tA:A5:state,A7:no_conf,N,H28007F1E8,N,N,A6:normal,H28007F1E8,H28007FCE8,A9:undefined -105DAA4F0:t2:A4:send,H28007F1D8 -105DAA580:t2:AA:$ancestors,H105DAA5C0 -105DAA5C0:lAA:kernel_sup|H105DAA600 -105DAA600:lP<0.47.0>|N -105DAA418:t2:A12:global_group_check,P<0.62.0> -105DAA430:t2:A10:registered_names,H28007F1D8 -105DAA518:t2:AC:whereis_name,H28007F1D8 -105DAA598:t2:AD:$initial_call,H105DAA5D0 -105DAA5D0:t3:AC:global_group,A4:init,I1 -=proc_stack:<0.62.0> -0x0000000105daf270:SReturn addr 0x3D82348 () -=proc_heap:<0.62.0> -=proc_dictionary:<0.63.0> -H105DAFF28 -H105DAFF40 -=proc_stack:<0.63.0> -y0:A5:false -y1:N -y2:A8:infinity -y3:H105DB0060 -y4:A11:erl_signal_server -y5:P<0.49.0> -0x0000000105db0568:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db0588:SReturn addr 0x3D82348 () -=proc_heap:<0.63.0> -105DB0060:lH105DB0030|N -105DB0030:t5:A7:handler,A12:erl_signal_handler,A5:false,H28008FBD0,A5:false -105DAFF28:t2:AA:$ancestors,H105DAFF18 -105DAFF18:lAA:kernel_sup|H105DAFED8 -105DAFED8:lP<0.47.0>|N -105DAFF40:t2:AD:$initial_call,H280042BE0 -=proc_dictionary:<0.64.0> -H105DF31D8 -H105DF31F0 -=proc_stack:<0.64.0> -y0:N -y1:A8:infinity -y2:H105DF31A8 -y3:H105DFA798 -y4:P<0.64.0> -y5:P<0.49.0> -0x0000000105dfb420:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dfb440:SReturn addr 0x3D82348 () -=proc_heap:<0.64.0> -105DF31A8:t5:AE:callback_cache,A11:supervisor_bridge,H105DF3230,H105DF3258,H105DF3280 -105DF3280:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfaW5mb2EC -105DF3258:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FzdGEC -105DF3230:E24:g3F3EXN1cGVydmlzb3JfYnJpZGdldwtoYW5kbGVfY2FsbGED -105DFA798:t5:A5:state,A8:user_sup,P<0.69.0>,P<0.69.0>,H105DF3190 -105DF3190:t2:P<0.64.0>,A8:user_sup -105DF31D8:t2:AA:$ancestors,H105DF32A8 -105DF32A8:lAA:kernel_sup|H105DF3310 -105DF3310:lP<0.47.0>|N -105DF31F0:t2:AD:$initial_call,H105DF32B8 -105DF32B8:t3:A11:supervisor_bridge,A8:user_sup,I1 -=proc_dictionary:<0.65.0> -H105DAC538 -H105D87E18 -H105DAC250 -=proc_stack:<0.65.0> -y0:N -y1:A8:infinity -y2:H105D889A8 -y3:N -y4:H105DAC4F8 -0x0000000105d89030:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d89050:SReturn addr 0x3D82348 () -=proc_heap:<0.65.0> -105D889A8:t5:A5:state,H105D88990,N,H280082770,A5:false -105D88990:t2:A6:server,H105D88920 -105D88920:tA:A5:state,H105DAC3B0,H105DAC350,H105DAC398,A5:false,A9:undefined,P<0.69.0>,P<0.69.0>,H105D87DE8,H105D888F0 -105D888F0:t2:A5:false,H28005B2F8 -105D87DE8:t5:A2:gr,I1,I0,P<0.69.0>,H105D87E40 -105D87E40:lH105D87E50|N -105D87E50:t4:A5:group,I0,P<0.69.0>,H280010188 -105DAC398:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBC+vQAAd/g02c= -105DAC350:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBA+vQAAd/g02c= -105DAC3B0:t1A:A5:state,H105DAC2B8,H105DAC488,H105DAC2D0,H105DAC2E8,A4:true,N,N,N,N,A9:undefined,I125,I12,A5:false,H280086838,H280086850,H280086868,H280086880,H280086898,H2800868B0,H2800868C8,A5:false,A5:false,H2800868E0,H2800868F8,H105DAC320 -105DAC320:t5:AA:re_pattern,I0,I1,I0,H105DAC368 -105DAC368:Yc130931BD0:0:15E -105DAC2E8:Mf4:H280086920:A4:true,A5:false,A5:false,A5:false -105DAC2D0:t2:P<0.67.0>,H105DAC350 -105DAC488:t2:P<0.68.0>,H105DAC398 -105DAC2B8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= -105DAC4F8:t7:A6:params,AF:state_functions,A5:false,P<0.65.0>,H105DAC598,A8:user_drv,A8:infinity -105DAC598:lA8:user_drv|N -105DAC538:t2:AA:$ancestors,H105DAC5A8 -105DAC5A8:lP<0.69.0>|H105DAC268 -105DAC268:lP<0.64.0>|H105DAC298 -105DAC298:lAA:kernel_sup|H105DAC2A8 -105DAC2A8:lP<0.47.0>|N -105D87E18:t2:AD:current_group,P<0.69.0> -105DAC250:t2:AD:$initial_call,H105DAC278 -105DAC278:t3:A8:user_drv,A4:init,I1 -=proc_dictionary:<0.67.0> -H105DAAFD8 -H105DAB010 -=proc_stack:<0.67.0> -y0:N -y1:H105DAB028 -y2:H105DAAF50 -0x0000000105dab640:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dab660:SReturn addr 0x3D82348 () -=proc_heap:<0.67.0> -105DAB028:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBA+vQAAd/g02c= -105DAAF50:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= -105DAAFD8:t2:AA:$ancestors,H105DAAFC8 -105DAAFC8:lA8:user_drv|H105DAAF88 -105DAAF88:lP<0.64.0>|H105DAAF78 -105DAAF78:lAA:kernel_sup|H105DAAF68 -105DAAF68:lP<0.47.0>|N -105DAB010:t2:AD:$initial_call,H105DAAFF0 -105DAAFF0:t3:A8:prim_tty,A6:writer,I1 -=proc_dictionary:<0.68.0> -H105DAB758 -H105DAB790 -=proc_stack:<0.68.0> -y0:N -y1:N -y2:H280086C10 -y3:A4:utf8 -y4:H105DAB7A8 -y5:H105DAB7C0 -y6:P<0.65.0> -y7:H105DAB6B0 -0x0000000105dabd90:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dabdb0:SReturn addr 0x3D82348 () -=proc_heap:<0.68.0> -105DAB7A8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBC+vQAAd/g02c= -105DAB7C0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALBD+vQAAd/g02c= -105DAB6B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALA++vYAAd/g02c= -105DAB758:t2:AA:$ancestors,H105DAB748 -105DAB748:lA8:user_drv|H105DAB708 -105DAB708:lP<0.64.0>|H105DAB6F8 -105DAB6F8:lAA:kernel_sup|H105DAB6E8 -105DAB6E8:lP<0.47.0>|N -105DAB790:t2:AD:$initial_call,H105DAB770 -105DAB770:t3:A8:prim_tty,A6:reader,I1 -=proc_dictionary:<0.69.0> -H105D89778 -H105D898F8 -H105D897E8 -H105D85E78 -H105D89810 -H105D89730 -H105D89748 -H105D89760 -=proc_stack:<0.69.0> -y0:N -y1:A2:ok -y2:P<0.65.0> -0x0000000105d89c18:SReturn addr 0x3D82348 () -=proc_heap:<0.69.0> -105D89778:t2:AD:unicode_state,A4:true -105D898F8:t2:AA:expand_fun,H2800870F0 -105D897E8:t2:A4:echo,A5:false -105D85E78:t2:AB:kill_buffer,N -105D89810:t2:AC:expand_below,A4:true -105D89730:t2:AB:line_buffer,N -105D89748:t2:A9:read_mode,A6:binary -105D89760:t2:A8:user_drv,P<0.65.0> -=proc_dictionary:<0.70.0> -H105D86A30 -H105D86A48 -=proc_stack:<0.70.0> -y0:N -y1:A8:infinity -y2:H105D86C90 -y3:H105D81B48 -y4:AA:logger_sup -y5:P<0.49.0> -0x0000000105d82070:SReturn addr 0x3E951BC (proc_lib:wake_up/3 + 220) -y0:N -y1:N -y2:SCatch 0x3E951E4 (proc_lib:wake_up/3 + 260) -0x0000000105d82090:SReturn addr 0x3D82348 () -=proc_heap:<0.70.0> -105D86C90:t5:AE:callback_cache,AA:supervisor,H105D86CC0,H105D86CE8,H105D86D10 -105D86D10:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105D86CE8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105D86CC0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105D81B48:tC:A5:state,H280088258,AB:one_for_one,H105D81B30,A9:undefined,I1,I5,N,I0,A5:never,AA:logger_sup,N -105D81B30:t2:H105D81B20,H105D81AC0 -105D81AC0:Mf4:H105D81AF8:H105D81718,H105D86BE0,H105D86C30,H105D81A70 -105D81AF8:t4:A7:default,A16:logger_handler_watcher,AC:logger_proxy,AB:ssl_handler -105D81A70:t9:A5:child,P<0.105.0>,AB:ssl_handler,H105D81A50,A9:temporary,A5:false,I2000,A6:worker,H280091F30 -105D81A50:t3:AA:logger_olp,AA:start_link,A9:undefined -105D86C30:t9:A5:child,P<0.72.0>,AC:logger_proxy,H28005A150,A9:temporary,A5:false,I2000,A6:worker,H28005A140 -105D86BE0:t9:A5:child,P<0.71.0>,A16:logger_handler_watcher,H2800882C0,A9:permanent,A5:false,AB:brutal_kill,A6:worker,H105D86C80 -105D86C80:lA16:logger_handler_watcher|N -105D81718:t9:A5:child,P<0.77.0>,A7:default,H105D817D8,A9:temporary,A5:false,I2000,A6:worker,H280091F30 -105D817D8:t3:AA:logger_olp,AA:start_link,A9:undefined -105D81B20:lAB:ssl_handler|H105D81698 -105D81698:lA7:default|H105D86B70 -105D86B70:lAC:logger_proxy|H105D86BB8 -105D86BB8:lA16:logger_handler_watcher|N -105D86A30:t2:AA:$ancestors,H105D86A70 -105D86A70:lAA:kernel_sup|H105D86AB0 -105D86AB0:lP<0.47.0>|N -105D86A48:t2:AD:$initial_call,H105D86A80 -105D86A80:t3:AA:supervisor,AA:logger_sup,I1 -=proc_dictionary:<0.71.0> -H105D85808 -H105D85840 -=proc_stack:<0.71.0> -y0:N -y1:A8:infinity -y2:H105D858D0 -y3:H105D85B58 -y4:A16:logger_handler_watcher -y5:P<0.70.0> -0x0000000105d85e38:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d85e58:SReturn addr 0x3D82348 () -=proc_heap:<0.71.0> -105D858D0:t5:AE:callback_cache,A16:logger_handler_watcher,H105D85858,H105D85880,H105D858A8 -105D858A8:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9pbmZvYQI= -105D85880:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9jYXN0YQI= -105D85858:E29:g3F3FmxvZ2dlcl9oYW5kbGVyX3dhdGNoZXJ3C2hhbmRsZV9jYWxsYQM= -105D85B58:t2:A5:state,H105D85B48 -105D85B48:lH105D859F0|H105D85B38 -105D859F0:t2:A7:default,H105D859D8 -105D859D8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALCJ+vQAAd/g02c= -105D85B38:lH105D85B20|N -105D85B20:t2:AB:ssl_handler,H105D85B08 -105D85B08:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALFo+vQAAd/g02c= -105D85808:t2:AA:$ancestors,H105D857F8 -105D857F8:lAA:logger_sup|H105D857B8 -105D857B8:lAA:kernel_sup|H105D857A8 -105D857A8:lP<0.47.0>|N -105D85840:t2:AD:$initial_call,H105D85820 -105D85820:t3:A16:logger_handler_watcher,A4:init,I1 -=proc_dictionary:<0.72.0> -H105D89DB0 -H105D89DC8 -H105D89DE0 -=proc_stack:<0.72.0> -0x0000000105d8a748:SReturn addr 0x3F1CC18 (gen_server:try_handle_info/3 + 240) -y0:N -y1:N -y2:N -y3:AA:logger_olp -y4:H105D89CF8 -y5:H105DE8808 -y6:SCatch 0x3F1CC6C (gen_server:try_handle_info/3 + 324) -0x0000000105d8a788:SReturn addr 0x3F1D994 (gen_server:handle_msg/6 + 1028) -y0:A8:infinity -y1:H105D8A120 -y2:H105D89CF8 -y3:P<0.72.0> -y4:P<0.70.0> -y5:H105DE8808 -0x0000000105d8a7c0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d8a7e0:SReturn addr 0x3D82348 () -=proc_heap:<0.72.0> -105D89CF8:Mf14:H105D89E18:AC:logger_proxy,AC:logger_proxy,A5:async,A4:true,A5:false,I1000,I5000,I500,I0,I-576460751881273,A8:no_state,I-576460751881273,I0,H105D89EC0,I5000,I500,I1000,A5:false,I3000000,I20000 -105D89E18:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen -105D89EC0:t2:AA:logger_olp,AC:logger_proxy -105DE8808:t5:A3:log,A5:error,H105DE5C18,H105DE8758,H105DE87D0 -105DE87D0:Mf4:H105DE87A8:H105DE8768,P<0.134.0>,I1701928823965135,P<0.69.0> -105DE87A8:t4:AC:error_logger,A3:pid,A4:time,A2:gl -105DE8768:Mf2:H105DE8790:A4:true,A5:error -105DE8790:t2:A8:emulator,A3:tag -105DE8758:lP<0.134.0>|H105DE5C28 -105DE5C28:lH105DE5C38|N -105DE5C38:t2:H105DE5C50,H105DE5C90 -105DE5C90:lH105DE5D10|H105DE5CA0 -105DE5D10:t4:A23:showtime@internal@reports@formatter,A1C:-create_test_report/1-fun-4-,I1,H105DE5DD8 -105DE5DD8:lH105DE5E78|H105DE5DE8 -105DE5E78:t2:A4:file,H105DE86B8 -105DE86B8:lI47|H105DE86A8 -105DE86A8:lI85|H105DE8698 -105DE8698:lI115|H105DE8688 -105DE8688:lI101|H105DE8678 -105DE8678:lI114|H105DE8668 -105DE8668:lI115|H105DE8658 -105DE8658:lI47|H105DE8648 -105DE8648:lI110|H105DE8638 -105DE8638:lI105|H105DE8628 -105DE8628:lI99|H105DE8618 -105DE8618:lI104|H105DE8608 -105DE8608:lI111|H105DE85F8 -105DE85F8:lI108|H105DE85E8 -105DE85E8:lI97|H105DE85D8 -105DE85D8:lI115|H105DE85C8 -105DE85C8:lI99|H105DE85B8 -105DE85B8:lI97|H105DE85A8 -105DE85A8:lI114|H105DE8598 -105DE8598:lI108|H105DE8588 -105DE8588:lI115|H105DE8578 -105DE8578:lI111|H105DE8568 -105DE8568:lI110|H105DE8558 -105DE8558:lI47|H105DE8548 -105DE8548:lI86|H105DE8538 -105DE8538:lI83|H105DE8528 -105DE8528:lI32|H105DE8518 -105DE8518:lI67|H105DE8508 -105DE8508:lI111|H105DE84F8 -105DE84F8:lI100|H105DE84E8 -105DE84E8:lI101|H105DE84D8 -105DE84D8:lI47|H105DE84C8 -105DE84C8:lI65|H105DE84B8 -105DE84B8:lI100|H105DE84A8 -105DE84A8:lI118|H105DE8498 -105DE8498:lI101|H105DE8488 -105DE8488:lI110|H105DE8478 -105DE8478:lI116|H105DE8468 -105DE8468:lI79|H105DE8458 -105DE8458:lI102|H105DE8448 -105DE8448:lI67|H105DE8438 -105DE8438:lI111|H105DE8428 -105DE8428:lI100|H105DE8418 -105DE8418:lI101|H105DE8408 -105DE8408:lI47|H105DE83F8 -105DE83F8:lI97|H105DE83E8 -105DE83E8:lI111|H105DE83D8 -105DE83D8:lI99|H105DE83C8 -105DE83C8:lI50|H105DE83B8 -105DE83B8:lI48|H105DE83A8 -105DE83A8:lI50|H105DE8398 -105DE8398:lI51|H105DE8388 -105DE8388:lI47|H105DE8378 -105DE8378:lI98|H105DE8368 -105DE8368:lI117|H105DE8358 -105DE8358:lI105|H105DE8348 -105DE8348:lI108|H105DE8338 -105DE8338:lI100|H105DE8328 -105DE8328:lI47|H105DE8318 -105DE8318:lI100|H105DE8308 -105DE8308:lI101|H105DE82F8 -105DE82F8:lI118|H105DE82E8 -105DE82E8:lI47|H105DE82D8 -105DE82D8:lI101|H105DE82C8 -105DE82C8:lI114|H105DE82B8 -105DE82B8:lI108|H105DE82A8 -105DE82A8:lI97|H105DE8298 -105DE8298:lI110|H105DE8288 -105DE8288:lI103|H105DE8278 -105DE8278:lI47|H105DE8268 -105DE8268:lI97|H105DE8258 -105DE8258:lI100|H105DE8248 -105DE8248:lI103|H105DE8238 -105DE8238:lI108|H105DE8228 -105DE8228:lI101|H105DE8218 -105DE8218:lI110|H105DE8208 -105DE8208:lI116|H105DE81F8 -105DE81F8:lI47|H105DE81E8 -105DE81E8:lI95|H105DE81D8 -105DE81D8:lI103|H105DE81C8 -105DE81C8:lI108|H105DE81B8 -105DE81B8:lI101|H105DE81A8 -105DE81A8:lI97|H105DE8198 -105DE8198:lI109|H105DE8188 -105DE8188:lI95|H105DE8178 -105DE8178:lI97|H105DE8168 -105DE8168:lI114|H105DE8158 -105DE8158:lI116|H105DE8148 -105DE8148:lI101|H105DE8138 -105DE8138:lI102|H105DE8128 -105DE8128:lI97|H105DE8118 -105DE8118:lI99|H105DE8108 -105DE8108:lI116|H105DE80F8 -105DE80F8:lI115|H105DE80E8 -105DE80E8:lI47|H105DE80D8 -105DE80D8:lI115|H105DE80C8 -105DE80C8:lI104|H105DE80B8 -105DE80B8:lI111|H105DE80A8 -105DE80A8:lI119|H105DE8098 -105DE8098:lI116|H105DE8088 -105DE8088:lI105|H105DE8078 -105DE8078:lI109|H105DE8068 -105DE8068:lI101|H105DE8058 -105DE8058:lI64|H105DE8048 -105DE8048:lI105|H105DE8038 -105DE8038:lI110|H105DE8028 -105DE8028:lI116|H105DE8018 -105DE8018:lI101|H105DE8008 -105DE8008:lI114|H105DE7FF8 -105DE7FF8:lI110|H105DE7FE8 -105DE7FE8:lI97|H105DE7FD8 -105DE7FD8:lI108|H105DE7FC8 -105DE7FC8:lI64|H105DE7FB8 -105DE7FB8:lI114|H105DE7FA8 -105DE7FA8:lI101|H105DE7F98 -105DE7F98:lI112|H105DE7F88 -105DE7F88:lI111|H105DE7F78 -105DE7F78:lI114|H105DE7F68 -105DE7F68:lI116|H105DE7F58 -105DE7F58:lI115|H105DE7F48 -105DE7F48:lI64|H105DE7F38 -105DE7F38:lI102|H105DE7F28 -105DE7F28:lI111|H105DE7F18 -105DE7F18:lI114|H105DE7F08 -105DE7F08:lI109|H105DE7EF8 -105DE7EF8:lI97|H105DE7EE8 -105DE7EE8:lI116|H105DE7ED8 -105DE7ED8:lI116|H105DE7EC8 -105DE7EC8:lI101|H105DE7EB8 -105DE7EB8:lI114|H105DE7EA8 -105DE7EA8:lI46|H105DE7E98 -105DE7E98:lI101|H105DE7E88 -105DE7E88:lI114|H105DE7E78 -105DE7E78:lI108|N -105DE5DE8:lH105DE5E90|N -105DE5E90:t2:A4:line,I665 -105DE5CA0:lH105DE5D38|H105DE5CB0 -105DE5D38:t4:AA:gleam@list,AD:do_filter_map,I3,H105DE5DF8 -105DE5DF8:lH105DE5EA8|H105DE5E08 -105DE5EA8:t2:A4:file,H105DE7E68 -105DE7E68:lI47|H105DE7E58 -105DE7E58:lI85|H105DE7E48 -105DE7E48:lI115|H105DE7E38 -105DE7E38:lI101|H105DE7E28 -105DE7E28:lI114|H105DE7E18 -105DE7E18:lI115|H105DE7E08 -105DE7E08:lI47|H105DE7DF8 -105DE7DF8:lI110|H105DE7DE8 -105DE7DE8:lI105|H105DE7DD8 -105DE7DD8:lI99|H105DE7DC8 -105DE7DC8:lI104|H105DE7DB8 -105DE7DB8:lI111|H105DE7DA8 -105DE7DA8:lI108|H105DE7D98 -105DE7D98:lI97|H105DE7D88 -105DE7D88:lI115|H105DE7D78 -105DE7D78:lI99|H105DE7D68 -105DE7D68:lI97|H105DE7D58 -105DE7D58:lI114|H105DE7D48 -105DE7D48:lI108|H105DE7D38 -105DE7D38:lI115|H105DE7D28 -105DE7D28:lI111|H105DE7D18 -105DE7D18:lI110|H105DE7D08 -105DE7D08:lI47|H105DE7CF8 -105DE7CF8:lI86|H105DE7CE8 -105DE7CE8:lI83|H105DE7CD8 -105DE7CD8:lI32|H105DE7CC8 -105DE7CC8:lI67|H105DE7CB8 -105DE7CB8:lI111|H105DE7CA8 -105DE7CA8:lI100|H105DE7C98 -105DE7C98:lI101|H105DE7C88 -105DE7C88:lI47|H105DE7C78 -105DE7C78:lI65|H105DE7C68 -105DE7C68:lI100|H105DE7C58 -105DE7C58:lI118|H105DE7C48 -105DE7C48:lI101|H105DE7C38 -105DE7C38:lI110|H105DE7C28 -105DE7C28:lI116|H105DE7C18 -105DE7C18:lI79|H105DE7C08 -105DE7C08:lI102|H105DE7BF8 -105DE7BF8:lI67|H105DE7BE8 -105DE7BE8:lI111|H105DE7BD8 -105DE7BD8:lI100|H105DE7BC8 -105DE7BC8:lI101|H105DE7BB8 -105DE7BB8:lI47|H105DE7BA8 -105DE7BA8:lI97|H105DE7B98 -105DE7B98:lI111|H105DE7B88 -105DE7B88:lI99|H105DE7B78 -105DE7B78:lI50|H105DE7B68 -105DE7B68:lI48|H105DE7B58 -105DE7B58:lI50|H105DE7B48 -105DE7B48:lI51|H105DE7B38 -105DE7B38:lI47|H105DE7B28 -105DE7B28:lI98|H105DE7B18 -105DE7B18:lI117|H105DE7B08 -105DE7B08:lI105|H105DE7AF8 -105DE7AF8:lI108|H105DE7AE8 -105DE7AE8:lI100|H105DE7AD8 -105DE7AD8:lI47|H105DE7AC8 -105DE7AC8:lI100|H105DE7AB8 -105DE7AB8:lI101|H105DE7AA8 -105DE7AA8:lI118|H105DE7A98 -105DE7A98:lI47|H105DE7A88 -105DE7A88:lI101|H105DE7A78 -105DE7A78:lI114|H105DE7A68 -105DE7A68:lI108|H105DE7A58 -105DE7A58:lI97|H105DE7A48 -105DE7A48:lI110|H105DE7A38 -105DE7A38:lI103|H105DE7A28 -105DE7A28:lI47|H105DE7A18 -105DE7A18:lI103|H105DE7A08 -105DE7A08:lI108|H105DE79F8 -105DE79F8:lI101|H105DE79E8 -105DE79E8:lI97|H105DE79D8 -105DE79D8:lI109|H105DE79C8 -105DE79C8:lI95|H105DE79B8 -105DE79B8:lI115|H105DE79A8 -105DE79A8:lI116|H105DE7998 -105DE7998:lI100|H105DE7988 -105DE7988:lI108|H105DE7978 -105DE7978:lI105|H105DE7968 -105DE7968:lI98|H105DE7958 -105DE7958:lI47|H105DE7948 -105DE7948:lI95|H105DE7938 -105DE7938:lI103|H105DE7928 -105DE7928:lI108|H105DE7918 -105DE7918:lI101|H105DE7908 -105DE7908:lI97|H105DE78F8 -105DE78F8:lI109|H105DE78E8 -105DE78E8:lI95|H105DE78D8 -105DE78D8:lI97|H105DE78C8 -105DE78C8:lI114|H105DE78B8 -105DE78B8:lI116|H105DE78A8 -105DE78A8:lI101|H105DE7898 -105DE7898:lI102|H105DE7888 -105DE7888:lI97|H105DE7878 -105DE7878:lI99|H105DE7868 -105DE7868:lI116|H105DE7858 -105DE7858:lI115|H105DE7848 -105DE7848:lI47|H105DE7838 -105DE7838:lI103|H105DE7828 -105DE7828:lI108|H105DE7818 -105DE7818:lI101|H105DE7808 -105DE7808:lI97|H105DE77F8 -105DE77F8:lI109|H105DE77E8 -105DE77E8:lI64|H105DE77D8 -105DE77D8:lI108|H105DE77C8 -105DE77C8:lI105|H105DE77B8 -105DE77B8:lI115|H105DE77A8 -105DE77A8:lI116|H105DE7798 -105DE7798:lI46|H105DE7788 -105DE7788:lI101|H105DE7778 -105DE7778:lI114|H105DE7768 -105DE7768:lI108|N -105DE5E08:lH105DE5EC0|N -105DE5EC0:t2:A4:line,I94 -105DE5CB0:lH105DE5D60|H105DE5CC0 -105DE5D60:t4:A23:showtime@internal@reports@formatter,A12:create_test_report,I1,H105DE5E18 -105DE5E18:lH105DE5ED8|H105DE5E28 -105DE5ED8:t2:A4:file,H105DE7758 -105DE7758:lI47|H105DE7748 -105DE7748:lI85|H105DE7738 -105DE7738:lI115|H105DE7728 -105DE7728:lI101|H105DE7718 -105DE7718:lI114|H105DE7708 -105DE7708:lI115|H105DE76F8 -105DE76F8:lI47|H105DE76E8 -105DE76E8:lI110|H105DE76D8 -105DE76D8:lI105|H105DE76C8 -105DE76C8:lI99|H105DE76B8 -105DE76B8:lI104|H105DE76A8 -105DE76A8:lI111|H105DE7698 -105DE7698:lI108|H105DE7688 -105DE7688:lI97|H105DE7678 -105DE7678:lI115|H105DE7668 -105DE7668:lI99|H105DE7658 -105DE7658:lI97|H105DE7648 -105DE7648:lI114|H105DE7638 -105DE7638:lI108|H105DE7628 -105DE7628:lI115|H105DE7618 -105DE7618:lI111|H105DE7608 -105DE7608:lI110|H105DE75F8 -105DE75F8:lI47|H105DE75E8 -105DE75E8:lI86|H105DE75D8 -105DE75D8:lI83|H105DE75C8 -105DE75C8:lI32|H105DE75B8 -105DE75B8:lI67|H105DE75A8 -105DE75A8:lI111|H105DE7598 -105DE7598:lI100|H105DE7588 -105DE7588:lI101|H105DE7578 -105DE7578:lI47|H105DE7568 -105DE7568:lI65|H105DE7558 -105DE7558:lI100|H105DE7548 -105DE7548:lI118|H105DE7538 -105DE7538:lI101|H105DE7528 -105DE7528:lI110|H105DE7518 -105DE7518:lI116|H105DE7508 -105DE7508:lI79|H105DE74F8 -105DE74F8:lI102|H105DE74E8 -105DE74E8:lI67|H105DE74D8 -105DE74D8:lI111|H105DE74C8 -105DE74C8:lI100|H105DE74B8 -105DE74B8:lI101|H105DE74A8 -105DE74A8:lI47|H105DE7498 -105DE7498:lI97|H105DE7488 -105DE7488:lI111|H105DE7478 -105DE7478:lI99|H105DE7468 -105DE7468:lI50|H105DE7458 -105DE7458:lI48|H105DE7448 -105DE7448:lI50|H105DE7438 -105DE7438:lI51|H105DE7428 -105DE7428:lI47|H105DE7418 -105DE7418:lI98|H105DE7408 -105DE7408:lI117|H105DE73F8 -105DE73F8:lI105|H105DE73E8 -105DE73E8:lI108|H105DE73D8 -105DE73D8:lI100|H105DE73C8 -105DE73C8:lI47|H105DE73B8 -105DE73B8:lI100|H105DE73A8 -105DE73A8:lI101|H105DE7398 -105DE7398:lI118|H105DE7388 -105DE7388:lI47|H105DE7378 -105DE7378:lI101|H105DE7368 -105DE7368:lI114|H105DE7358 -105DE7358:lI108|H105DE7348 -105DE7348:lI97|H105DE7338 -105DE7338:lI110|H105DE7328 -105DE7328:lI103|H105DE7318 -105DE7318:lI47|H105DE7308 -105DE7308:lI97|H105DE72F8 -105DE72F8:lI100|H105DE72E8 -105DE72E8:lI103|H105DE72D8 -105DE72D8:lI108|H105DE72C8 -105DE72C8:lI101|H105DE72B8 -105DE72B8:lI110|H105DE72A8 -105DE72A8:lI116|H105DE7298 -105DE7298:lI47|H105DE7288 -105DE7288:lI95|H105DE7278 -105DE7278:lI103|H105DE7268 -105DE7268:lI108|H105DE7258 -105DE7258:lI101|H105DE7248 -105DE7248:lI97|H105DE7238 -105DE7238:lI109|H105DE7228 -105DE7228:lI95|H105DE7218 -105DE7218:lI97|H105DE7208 -105DE7208:lI114|H105DE71F8 -105DE71F8:lI116|H105DE71E8 -105DE71E8:lI101|H105DE71D8 -105DE71D8:lI102|H105DE71C8 -105DE71C8:lI97|H105DE71B8 -105DE71B8:lI99|H105DE71A8 -105DE71A8:lI116|H105DE7198 -105DE7198:lI115|H105DE7188 -105DE7188:lI47|H105DE7178 -105DE7178:lI115|H105DE7168 -105DE7168:lI104|H105DE7158 -105DE7158:lI111|H105DE7148 -105DE7148:lI119|H105DE7138 -105DE7138:lI116|H105DE7128 -105DE7128:lI105|H105DE7118 -105DE7118:lI109|H105DE7108 -105DE7108:lI101|H105DE70F8 -105DE70F8:lI64|H105DE70E8 -105DE70E8:lI105|H105DE70D8 -105DE70D8:lI110|H105DE70C8 -105DE70C8:lI116|H105DE70B8 -105DE70B8:lI101|H105DE70A8 -105DE70A8:lI114|H105DE7098 -105DE7098:lI110|H105DE7088 -105DE7088:lI97|H105DE7078 -105DE7078:lI108|H105DE7068 -105DE7068:lI64|H105DE7058 -105DE7058:lI114|H105DE7048 -105DE7048:lI101|H105DE7038 -105DE7038:lI112|H105DE7028 -105DE7028:lI111|H105DE7018 -105DE7018:lI114|H105DE7008 -105DE7008:lI116|H105DE6FF8 -105DE6FF8:lI115|H105DE6FE8 -105DE6FE8:lI64|H105DE6FD8 -105DE6FD8:lI102|H105DE6FC8 -105DE6FC8:lI111|H105DE6FB8 -105DE6FB8:lI114|H105DE6FA8 -105DE6FA8:lI109|H105DE6F98 -105DE6F98:lI97|H105DE6F88 -105DE6F88:lI116|H105DE6F78 -105DE6F78:lI116|H105DE6F68 -105DE6F68:lI101|H105DE6F58 -105DE6F58:lI114|H105DE6F48 -105DE6F48:lI46|H105DE6F38 -105DE6F38:lI101|H105DE6F28 -105DE6F28:lI114|H105DE6F18 -105DE6F18:lI108|N -105DE5E28:lH105DE5EF0|N -105DE5EF0:t2:A4:line,I486 -105DE5CC0:lH105DE5D88|H105DE5CD0 -105DE5D88:t4:A26:showtime@internal@erlang@event_handler,AF:-start/0-fun-1-,I2,H105DE5E38 -105DE5E38:lH105DE5F08|H105DE5E48 -105DE5F08:t2:A4:file,H105DE6F08 -105DE6F08:lI47|H105DE6EF8 -105DE6EF8:lI85|H105DE6EE8 -105DE6EE8:lI115|H105DE6ED8 -105DE6ED8:lI101|H105DE6EC8 -105DE6EC8:lI114|H105DE6EB8 -105DE6EB8:lI115|H105DE6EA8 -105DE6EA8:lI47|H105DE6E98 -105DE6E98:lI110|H105DE6E88 -105DE6E88:lI105|H105DE6E78 -105DE6E78:lI99|H105DE6E68 -105DE6E68:lI104|H105DE6E58 -105DE6E58:lI111|H105DE6E48 -105DE6E48:lI108|H105DE6E38 -105DE6E38:lI97|H105DE6E28 -105DE6E28:lI115|H105DE6E18 -105DE6E18:lI99|H105DE6E08 -105DE6E08:lI97|H105DE6DF8 -105DE6DF8:lI114|H105DE6DE8 -105DE6DE8:lI108|H105DE6DD8 -105DE6DD8:lI115|H105DE6DC8 -105DE6DC8:lI111|H105DE6DB8 -105DE6DB8:lI110|H105DE6DA8 -105DE6DA8:lI47|H105DE6D98 -105DE6D98:lI86|H105DE6D88 -105DE6D88:lI83|H105DE6D78 -105DE6D78:lI32|H105DE6D68 -105DE6D68:lI67|H105DE6D58 -105DE6D58:lI111|H105DE6D48 -105DE6D48:lI100|H105DE6D38 -105DE6D38:lI101|H105DE6D28 -105DE6D28:lI47|H105DE6D18 -105DE6D18:lI65|H105DE6D08 -105DE6D08:lI100|H105DE6CF8 -105DE6CF8:lI118|H105DE6CE8 -105DE6CE8:lI101|H105DE6CD8 -105DE6CD8:lI110|H105DE6CC8 -105DE6CC8:lI116|H105DE6CB8 -105DE6CB8:lI79|H105DE6CA8 -105DE6CA8:lI102|H105DE6C98 -105DE6C98:lI67|H105DE6C88 -105DE6C88:lI111|H105DE6C78 -105DE6C78:lI100|H105DE6C68 -105DE6C68:lI101|H105DE6C58 -105DE6C58:lI47|H105DE6C48 -105DE6C48:lI97|H105DE6C38 -105DE6C38:lI111|H105DE6C28 -105DE6C28:lI99|H105DE6C18 -105DE6C18:lI50|H105DE6C08 -105DE6C08:lI48|H105DE6BF8 -105DE6BF8:lI50|H105DE6BE8 -105DE6BE8:lI51|H105DE6BD8 -105DE6BD8:lI47|H105DE6BC8 -105DE6BC8:lI98|H105DE6BB8 -105DE6BB8:lI117|H105DE6BA8 -105DE6BA8:lI105|H105DE6B98 -105DE6B98:lI108|H105DE6B88 -105DE6B88:lI100|H105DE6B78 -105DE6B78:lI47|H105DE6B68 -105DE6B68:lI100|H105DE6B58 -105DE6B58:lI101|H105DE6B48 -105DE6B48:lI118|H105DE6B38 -105DE6B38:lI47|H105DE6B28 -105DE6B28:lI101|H105DE6B18 -105DE6B18:lI114|H105DE6B08 -105DE6B08:lI108|H105DE6AF8 -105DE6AF8:lI97|H105DE6AE8 -105DE6AE8:lI110|H105DE6AD8 -105DE6AD8:lI103|H105DE6AC8 -105DE6AC8:lI47|H105DE6AB8 -105DE6AB8:lI97|H105DE6AA8 -105DE6AA8:lI100|H105DE6A98 -105DE6A98:lI103|H105DE6A88 -105DE6A88:lI108|H105DE6A78 -105DE6A78:lI101|H105DE6A68 -105DE6A68:lI110|H105DE6A58 -105DE6A58:lI116|H105DE6A48 -105DE6A48:lI47|H105DE6A38 -105DE6A38:lI95|H105DE6A28 -105DE6A28:lI103|H105DE6A18 -105DE6A18:lI108|H105DE6A08 -105DE6A08:lI101|H105DE69F8 -105DE69F8:lI97|H105DE69E8 -105DE69E8:lI109|H105DE69D8 -105DE69D8:lI95|H105DE69C8 -105DE69C8:lI97|H105DE69B8 -105DE69B8:lI114|H105DE69A8 -105DE69A8:lI116|H105DE6998 -105DE6998:lI101|H105DE6988 -105DE6988:lI102|H105DE6978 -105DE6978:lI97|H105DE6968 -105DE6968:lI99|H105DE6958 -105DE6958:lI116|H105DE6948 -105DE6948:lI115|H105DE6938 -105DE6938:lI47|H105DE6928 -105DE6928:lI115|H105DE6918 -105DE6918:lI104|H105DE6908 -105DE6908:lI111|H105DE68F8 -105DE68F8:lI119|H105DE68E8 -105DE68E8:lI116|H105DE68D8 -105DE68D8:lI105|H105DE68C8 -105DE68C8:lI109|H105DE68B8 -105DE68B8:lI101|H105DE68A8 -105DE68A8:lI64|H105DE6898 -105DE6898:lI105|H105DE6888 -105DE6888:lI110|H105DE6878 -105DE6878:lI116|H105DE6868 -105DE6868:lI101|H105DE6858 -105DE6858:lI114|H105DE6848 -105DE6848:lI110|H105DE6838 -105DE6838:lI97|H105DE6828 -105DE6828:lI108|H105DE6818 -105DE6818:lI64|H105DE6808 -105DE6808:lI101|H105DE67F8 -105DE67F8:lI114|H105DE67E8 -105DE67E8:lI108|H105DE67D8 -105DE67D8:lI97|H105DE67C8 -105DE67C8:lI110|H105DE67B8 -105DE67B8:lI103|H105DE67A8 -105DE67A8:lI64|H105DE6798 -105DE6798:lI101|H105DE6788 -105DE6788:lI118|H105DE6778 -105DE6778:lI101|H105DE6768 -105DE6768:lI110|H105DE6758 -105DE6758:lI116|H105DE6748 -105DE6748:lI95|H105DE6738 -105DE6738:lI104|H105DE6728 -105DE6728:lI97|H105DE6718 -105DE6718:lI110|H105DE6708 -105DE6708:lI100|H105DE66F8 -105DE66F8:lI108|H105DE66E8 -105DE66E8:lI101|H105DE66D8 -105DE66D8:lI114|H105DE66C8 -105DE66C8:lI46|H105DE66B8 -105DE66B8:lI101|H105DE66A8 -105DE66A8:lI114|H105DE6698 -105DE6698:lI108|N -105DE5E48:lH105DE5F20|N -105DE5F20:t2:A4:line,I29 -105DE5CD0:lH105DE5DB0|N -105DE5DB0:t4:AF:gleam@otp@actor,A4:loop,I1,H105DE5E58 -105DE5E58:lH105DE5F38|H105DE5E68 -105DE5F38:t2:A4:file,H105DE6688 -105DE6688:lI47|H105DE6678 -105DE6678:lI85|H105DE6668 -105DE6668:lI115|H105DE6658 -105DE6658:lI101|H105DE6648 -105DE6648:lI114|H105DE6638 -105DE6638:lI115|H105DE6628 -105DE6628:lI47|H105DE6618 -105DE6618:lI110|H105DE6608 -105DE6608:lI105|H105DE65F8 -105DE65F8:lI99|H105DE65E8 -105DE65E8:lI104|H105DE65D8 -105DE65D8:lI111|H105DE65C8 -105DE65C8:lI108|H105DE65B8 -105DE65B8:lI97|H105DE65A8 -105DE65A8:lI115|H105DE6598 -105DE6598:lI99|H105DE6588 -105DE6588:lI97|H105DE6578 -105DE6578:lI114|H105DE6568 -105DE6568:lI108|H105DE6558 -105DE6558:lI115|H105DE6548 -105DE6548:lI111|H105DE6538 -105DE6538:lI110|H105DE6528 -105DE6528:lI47|H105DE6518 -105DE6518:lI86|H105DE6508 -105DE6508:lI83|H105DE64F8 -105DE64F8:lI32|H105DE64E8 -105DE64E8:lI67|H105DE64D8 -105DE64D8:lI111|H105DE64C8 -105DE64C8:lI100|H105DE64B8 -105DE64B8:lI101|H105DE64A8 -105DE64A8:lI47|H105DE6498 -105DE6498:lI65|H105DE6488 -105DE6488:lI100|H105DE6478 -105DE6478:lI118|H105DE6468 -105DE6468:lI101|H105DE6458 -105DE6458:lI110|H105DE6448 -105DE6448:lI116|H105DE6438 -105DE6438:lI79|H105DE6428 -105DE6428:lI102|H105DE6418 -105DE6418:lI67|H105DE6408 -105DE6408:lI111|H105DE63F8 -105DE63F8:lI100|H105DE63E8 -105DE63E8:lI101|H105DE63D8 -105DE63D8:lI47|H105DE63C8 -105DE63C8:lI97|H105DE63B8 -105DE63B8:lI111|H105DE63A8 -105DE63A8:lI99|H105DE6398 -105DE6398:lI50|H105DE6388 -105DE6388:lI48|H105DE6378 -105DE6378:lI50|H105DE6368 -105DE6368:lI51|H105DE6358 -105DE6358:lI47|H105DE6348 -105DE6348:lI98|H105DE6338 -105DE6338:lI117|H105DE6328 -105DE6328:lI105|H105DE6318 -105DE6318:lI108|H105DE6308 -105DE6308:lI100|H105DE62F8 -105DE62F8:lI47|H105DE62E8 -105DE62E8:lI100|H105DE62D8 -105DE62D8:lI101|H105DE62C8 -105DE62C8:lI118|H105DE62B8 -105DE62B8:lI47|H105DE62A8 -105DE62A8:lI101|H105DE6298 -105DE6298:lI114|H105DE6288 -105DE6288:lI108|H105DE6278 -105DE6278:lI97|H105DE6268 -105DE6268:lI110|H105DE6258 -105DE6258:lI103|H105DE6248 -105DE6248:lI47|H105DE6238 -105DE6238:lI103|H105DE6228 -105DE6228:lI108|H105DE6218 -105DE6218:lI101|H105DE6208 -105DE6208:lI97|H105DE61F8 -105DE61F8:lI109|H105DE61E8 -105DE61E8:lI95|H105DE61D8 -105DE61D8:lI111|H105DE61C8 -105DE61C8:lI116|H105DE61B8 -105DE61B8:lI112|H105DE61A8 -105DE61A8:lI47|H105DE6198 -105DE6198:lI95|H105DE6188 -105DE6188:lI103|H105DE6178 -105DE6178:lI108|H105DE6168 -105DE6168:lI101|H105DE6158 -105DE6158:lI97|H105DE6148 -105DE6148:lI109|H105DE6138 -105DE6138:lI95|H105DE6128 -105DE6128:lI97|H105DE6118 -105DE6118:lI114|H105DE6108 -105DE6108:lI116|H105DE60F8 -105DE60F8:lI101|H105DE60E8 -105DE60E8:lI102|H105DE60D8 -105DE60D8:lI97|H105DE60C8 -105DE60C8:lI99|H105DE60B8 -105DE60B8:lI116|H105DE60A8 -105DE60A8:lI115|H105DE6098 -105DE6098:lI47|H105DE6088 -105DE6088:lI103|H105DE6078 -105DE6078:lI108|H105DE6068 -105DE6068:lI101|H105DE6058 -105DE6058:lI97|H105DE6048 -105DE6048:lI109|H105DE6038 -105DE6038:lI64|H105DE6028 -105DE6028:lI111|H105DE6018 -105DE6018:lI116|H105DE6008 -105DE6008:lI112|H105DE5FF8 -105DE5FF8:lI64|H105DE5FE8 -105DE5FE8:lI97|H105DE5FD8 -105DE5FD8:lI99|H105DE5FC8 -105DE5FC8:lI116|H105DE5FB8 -105DE5FB8:lI111|H105DE5FA8 -105DE5FA8:lI114|H105DE5F98 -105DE5F98:lI46|H105DE5F88 -105DE5F88:lI101|H105DE5F78 -105DE5F78:lI114|H105DE5F68 -105DE5F68:lI108|N -105DE5E68:lH105DE5F50|N -105DE5F50:t2:A4:line,I150 -105DE5C50:Mf5:H105DE5CE0:H105DE8730,I178,H105DE8700,H105DE86C8,A5:panic -105DE5CE0:t5:A8:function,A4:line,A7:message,A6:module,AB:gleam_error -105DE86C8:Yh23:c2hvd3RpbWUvaW50ZXJuYWwvcmVwb3J0cy9mb3JtYXR0ZXI= -105DE8700:Yh1A:cGFuaWMgZXhwcmVzc2lvbiBldmFsdWF0ZWQ= -105DE8730:Yh12:Y3JlYXRlX3Rlc3RfcmVwb3J0 -105DE5C18:lI69|H105DE5C08 -105DE5C08:lI114|H105DE5BF8 -105DE5BF8:lI114|H105DE5BE8 -105DE5BE8:lI111|H105DE5BD8 -105DE5BD8:lI114|H105DE5BC8 -105DE5BC8:lI32|H105DE5BB8 -105DE5BB8:lI105|H105DE5BA8 -105DE5BA8:lI110|H105DE5B98 -105DE5B98:lI32|H105DE5B88 -105DE5B88:lI112|H105DE5B78 -105DE5B78:lI114|H105DE5B68 -105DE5B68:lI111|H105DE5B58 -105DE5B58:lI99|H105DE5B48 -105DE5B48:lI101|H105DE5B38 -105DE5B38:lI115|H105DE5B28 -105DE5B28:lI115|H105DE5B18 -105DE5B18:lI32|H105DE5B08 -105DE5B08:lI126|H105DE5AF8 -105DE5AF8:lI112|H105DE5AE8 -105DE5AE8:lI32|H105DE5AD8 -105DE5AD8:lI119|H105DE5AC8 -105DE5AC8:lI105|H105DE5AB8 -105DE5AB8:lI116|H105DE5AA8 -105DE5AA8:lI104|H105DE5A98 -105DE5A98:lI32|H105DE5A88 -105DE5A88:lI101|H105DE5A78 -105DE5A78:lI120|H105DE5A68 -105DE5A68:lI105|H105DE5A58 -105DE5A58:lI116|H105DE5A48 -105DE5A48:lI32|H105DE5A38 -105DE5A38:lI118|H105DE5A28 -105DE5A28:lI97|H105DE5A18 -105DE5A18:lI108|H105DE5A08 -105DE5A08:lI117|H105DE59F8 -105DE59F8:lI101|H105DE59E8 -105DE59E8:lI58|H105DE59D8 -105DE59D8:lI126|H105DE59C8 -105DE59C8:lI110|H105DE59B8 -105DE59B8:lI126|H105DE59A8 -105DE59A8:lI112|H105DE5998 -105DE5998:lI126|H105DE5988 -105DE5988:lI110|N -105D8A120:t5:AE:callback_cache,AA:logger_olp,H105D8A0A8,H105D8A0D0,H105D8A0F8 -105D8A0F8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= -105D8A0D0:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= -105D8A0A8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= -105D89DB0:t2:A7:olp_ref,H105D89ED8 -105D89ED8:t3:AC:logger_proxy,P<0.72.0>,H105D89EC0 -105D89DC8:t2:AA:$ancestors,H105D89EF8 -105D89EF8:lAA:logger_sup|H105D89F48 -105D89F48:lAA:kernel_sup|H105D89F78 -105D89F78:lP<0.47.0>|N -105D89DE0:t2:AD:$initial_call,H105D89F08 -105D89F08:t3:AA:logger_olp,A4:init,I1 -=proc_dictionary:<0.73.0> -H105DAD620 -H105DAD658 -=proc_stack:<0.73.0> -y0:N -y1:A8:infinity -y2:H105DAD6E8 -y3:N -y4:P<0.73.0> -y5:P<0.49.0> -0x0000000105dadc70:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dadc90:SReturn addr 0x3D82348 () -=proc_heap:<0.73.0> -105DAD6E8:t5:AE:callback_cache,AD:kernel_config,H105DAD670,H105DAD698,H105DAD6C0 -105DAD6C0:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9pbmZvYQI= -105DAD698:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9jYXN0YQI= -105DAD670:E20:g3F3DWtlcm5lbF9jb25maWd3C2hhbmRsZV9jYWxsYQM= -105DAD620:t2:AA:$ancestors,H105DAD610 -105DAD610:lAA:kernel_sup|H105DAD5D0 -105DAD5D0:lP<0.47.0>|N -105DAD658:t2:AD:$initial_call,H105DAD638 -105DAD638:t3:AD:kernel_config,A4:init,I1 -=proc_dictionary:<0.74.0> -H105DA80D0 -H105DA8108 -=proc_stack:<0.74.0> -y0:N -y1:A8:infinity -y2:H105DA8198 -y3:H28008FA68 -y4:AB:kernel_refc -y5:P<0.49.0> -0x0000000105da8710:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105da8730:SReturn addr 0x3D82348 () -=proc_heap:<0.74.0> -105DA8198:t5:AE:callback_cache,AB:kernel_refc,H105DA8120,H105DA8148,H105DA8170 -105DA8170:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfaW5mb2EC -105DA8148:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfY2FzdGEC -105DA8120:E1E:g3F3C2tlcm5lbF9yZWZjdwtoYW5kbGVfY2FsbGED -105DA80D0:t2:AA:$ancestors,H105DA80C0 -105DA80C0:lAA:kernel_sup|H105DA8080 -105DA8080:lP<0.47.0>|N -105DA8108:t2:AD:$initial_call,H105DA80E8 -105DA80E8:t3:AB:kernel_refc,A4:init,I1 -=proc_dictionary:<0.75.0> -H105DAC078 -H105DAC090 -=proc_stack:<0.75.0> -0x0000000105dac210:SReturn addr 0x3D82348 () -=proc_heap:<0.75.0> -105DAC078:t2:AA:$ancestors,H105DAC0B8 -105DAC0B8:lAA:kernel_sup|H105DAC0F8 -105DAC0F8:lP<0.47.0>|N -105DAC090:t2:AD:$initial_call,H105DAC0C8 -105DAC0C8:t3:AA:supervisor,A6:kernel,I1 -=proc_dictionary:<0.77.0> -H105DA2880 -H105DA2898 -H105DA28B0 -=proc_stack:<0.77.0> -y0:N -y1:A8:infinity -y2:H105DA3BB8 -y3:H105DA27C8 -y4:P<0.77.0> -y5:P<0.70.0> -0x0000000105da4dc8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105da4de8:SReturn addr 0x3D82348 () -=proc_heap:<0.77.0> -105DA3BB8:t5:AE:callback_cache,AA:logger_olp,H105DA3BF8,H105DA3C20,H105DA3C48 -105DA3C48:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= -105DA3C20:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= -105DA3BF8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= -105DA27C8:Mf14:H105DA28C8:A14:logger_std_h_default,AF:logger_h_common,A5:async,A4:true,A4:true,I200,I1000,I10,I0,I-576460751874469,H105DA2970,I-576460751874469,I0,H105DA29B8,I5000,I500,I1000,A5:false,I3000000,I20000 -105DA28C8:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen -105DA29B8:t2:AA:logger_olp,A14:logger_std_h_default -105DA2970:Mf6:H105DA2A20:A7:default,AC:logger_std_h,A9:no_repeat,I20,H105DA2A58,A4:sync -105DA2A20:t6:A2:id,A6:module,A18:filesync_repeat_interval,AF:ctrl_sync_count,AD:handler_state,A7:last_op -105DA2A58:Mf2:H105DA2A90:AB:standard_io,P<0.78.0> -105DA2A90:t2:A4:type,AD:file_ctrl_pid -105DA2880:t2:A7:olp_ref,H105DA29D0 -105DA29D0:t3:A14:logger_std_h_default,P<0.77.0>,H105DA29B8 -105DA2898:t2:AA:$ancestors,H105DA29F0 -105DA29F0:lAA:logger_sup|H105DA2A80 -105DA2A80:lAA:kernel_sup|H105DA2AA8 -105DA2AA8:lP<0.47.0>|N -105DA28B0:t2:AD:$initial_call,H105DA2A00 -105DA2A00:t3:AA:logger_olp,A4:init,I1 -=proc_stack:<0.78.0> -y0:N -y1:N -y2:H105D98488 -0x0000000105d98b30:SReturn addr 0x3D82348 () -=proc_heap:<0.78.0> -105D98488:Mf2:H280091C80:A7:default,AB:standard_io -=proc_dictionary:<0.90.0> -H105D97F00 -H105D97F38 -=proc_stack:<0.90.0> -y0:H105D98098 -y1:P<0.44.0> -0x0000000105d98110:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d98130:SReturn addr 0x3D82348 () -=proc_heap:<0.90.0> -105D98098:t7:A5:state,P<0.91.0>,H105D97A10,N,I0,P<0.69.0>,N -105D97A10:t8:A9:appl_data,A5:inets,H105D97E70,A9:undefined,H105D97A58,H105D97E50,A8:infinity,A8:infinity -105D97E50:lA5:inets|H105D97E40 -105D97E40:lA9:inets_sup|H105D97E30 -105D97E30:lA9:inets_app|H105D97E20 -105D97E20:lAD:inets_service|H105D97E10 -105D97E10:lAB:inets_trace|H105D97E00 -105D97E00:lA9:inets_lib|H105D97DF0 -105D97DF0:lA5:httpc|H105D97DE0 -105D97DE0:lAD:httpc_handler|H105D97DD0 -105D97DD0:lA11:httpc_handler_sup|H105D97DC0 -105D97DC0:lAD:httpc_manager|H105D97DB0 -105D97DB0:lA11:httpc_profile_sup|H105D97DA0 -105D97DA0:lAD:httpc_request|H105D97D90 -105D97D90:lAE:httpc_response|H105D97D80 -105D97D80:lA9:httpc_sup|H105D97D70 -105D97D70:lAC:httpc_cookie|H105D97D60 -105D97D60:lAA:http_chunk|H105D97D50 -105D97D50:lAC:http_request|H105D97D40 -105D97D40:lAD:http_response|H105D97D30 -105D97D30:lAE:http_transport|H105D97D20 -105D97D20:lA9:http_util|H105D97D10 -105D97D10:lA8:http_uri|H105D97D00 -105D97D00:lA5:httpd|H105D97CF0 -105D97CF0:lAE:httpd_acceptor|H105D97CE0 -105D97CE0:lA12:httpd_acceptor_sup|H105D97CD0 -105D97CD0:lA9:httpd_cgi|H105D97CC0 -105D97CC0:lA14:httpd_connection_sup|H105D97CB0 -105D97CB0:lAA:httpd_conf|H105D97CA0 -105D97CA0:lAC:httpd_custom|H105D97C90 -105D97C90:lA10:httpd_custom_api|H105D97C80 -105D97C80:lA9:httpd_esi|H105D97C70 -105D97C70:lAD:httpd_example|H105D97C60 -105D97C60:lAA:httpd_file|H105D97C50 -105D97C50:lA12:httpd_instance_sup|H105D97C40 -105D97C40:lA9:httpd_log|H105D97C30 -105D97C30:lAC:httpd_logger|H105D97C20 -105D97C20:lAD:httpd_manager|H105D97C10 -105D97C10:lAE:httpd_misc_sup|H105D97C00 -105D97C00:lAD:httpd_request|H105D97BF0 -105D97BF0:lA15:httpd_request_handler|H105D97BE0 -105D97BE0:lAE:httpd_response|H105D97BD0 -105D97BD0:lA10:httpd_script_env|H105D97BC0 -105D97BC0:lAC:httpd_socket|H105D97BB0 -105D97BB0:lA9:httpd_sup|H105D97BA0 -105D97BA0:lAA:httpd_util|H105D97B90 -105D97B90:lAB:mod_actions|H105D97B80 -105D97B80:lA9:mod_alias|H105D97B70 -105D97B70:lA8:mod_auth|H105D97B60 -105D97B60:lAD:mod_auth_dets|H105D97B50 -105D97B50:lAF:mod_auth_mnesia|H105D97B40 -105D97B40:lAE:mod_auth_plain|H105D97B30 -105D97B30:lAF:mod_auth_server|H105D97B20 -105D97B20:lA7:mod_cgi|H105D97B10 -105D97B10:lA7:mod_dir|H105D97B00 -105D97B00:lAC:mod_disk_log|H105D97AF0 -105D97AF0:lA7:mod_esi|H105D97AE0 -105D97AE0:lA7:mod_get|H105D97AD0 -105D97AD0:lA8:mod_head|H105D97AC0 -105D97AC0:lA7:mod_log|H105D97AB0 -105D97AB0:lA9:mod_range|H105D97AA0 -105D97AA0:lA13:mod_responsecontrol|H105D97A90 -105D97A90:lAC:mod_security|H105D97A80 -105D97A80:lA13:mod_security_server|H105D97A70 -105D97A70:lA9:mod_trace|N -105D97A58:t2:A9:inets_app,N -105D97E70:lA9:inets_sup|H105D97E60 -105D97E60:lAD:httpc_manager|N -105D97F00:t2:AA:$ancestors,H105D97EF0 -105D97EF0:lP<0.89.0>|N -105D97F38:t2:AD:$initial_call,H105D97F18 -105D97F18:t3:A12:application_master,A4:init,I4 -=proc_stack:<0.91.0> -y0:N -y1:N -y2:A9:inets_app -y3:P<0.92.0> -y4:P<0.90.0> -0x0000000105da7fe0:SReturn addr 0x3D82348 () -=proc_heap:<0.91.0> -=proc_dictionary:<0.92.0> -H105DBF960 -H105DBF978 -=proc_stack:<0.92.0> -0x0000000105dbfc58:SReturn addr 0x3D82348 () -=proc_heap:<0.92.0> -105DBF960:t2:AA:$ancestors,H105DBF9A0 -105DBF9A0:lP<0.91.0>|N -105DBF978:t2:AD:$initial_call,H105DBF9B0 -105DBF9B0:t3:AA:supervisor,A9:inets_sup,I1 -=proc_dictionary:<0.93.0> -H105D99BA8 -H105D99BC0 -=proc_stack:<0.93.0> -0x0000000105d99e90:SReturn addr 0x3D82348 () -=proc_heap:<0.93.0> -105D99BA8:t2:AA:$ancestors,H105D99BE8 -105D99BE8:lA9:inets_sup|H105D99C28 -105D99C28:lP<0.91.0>|N -105D99BC0:t2:AD:$initial_call,H105D99BF8 -105D99BF8:t3:AA:supervisor,A9:httpc_sup,I1 -=proc_dictionary:<0.94.0> -H105DAF280 -H105DAF298 -=proc_stack:<0.94.0> -0x0000000105daf518:SReturn addr 0x3D82348 () -=proc_heap:<0.94.0> -105DAF280:t2:AA:$ancestors,H105DAF2C0 -105DAF2C0:lA9:httpc_sup|H105DAF300 -105DAF300:lA9:inets_sup|H105DAF320 -105DAF320:lP<0.91.0>|N -105DAF298:t2:AD:$initial_call,H105DAF2D0 -105DAF2D0:t3:AA:supervisor,A11:httpc_profile_sup,I1 -=proc_dictionary:<0.95.0> -H105E0BA38 -H105E0BA50 -=proc_stack:<0.95.0> -y0:N -y1:A8:infinity -y2:H105E0B9F0 -y3:H105E0D878 -y4:AD:httpc_manager -y5:P<0.94.0> -0x0000000105e0dff0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105e0e010:SReturn addr 0x3D82348 () -=proc_heap:<0.95.0> -105E0B9F0:t5:AE:callback_cache,AD:httpc_manager,H105E0BA68,H105E0BA90,H105E0BAB8 -105E0BAB8:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9pbmZvYQI= -105E0BA90:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9jYXN0YQI= -105E0BA68:E20:g3F3DWh0dHBjX21hbmFnZXJ3C2hhbmRsZV9jYWxsYQM= -105E0D878:t7:A5:state,N,A19:httpc_manager__handler_db,H105E0D858,A19:httpc_manager__session_db,AD:httpc_manager,H2800B17A0 -105E0D858:t3:A9:cookie_db,A9:undefined,H105E0D840 -105E0D840:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALEs+vYAAd/g02c= -105E0BA38:t2:AA:$ancestors,H105E0BAE0 -105E0BAE0:lA11:httpc_profile_sup|H105E0BB10 -105E0BB10:lA9:httpc_sup|H105E0BB20 -105E0BB20:lA9:inets_sup|H105E0BB30 -105E0BB30:lP<0.91.0>|N -105E0BA50:t2:AD:$initial_call,H105E0BAF0 -105E0BAF0:t3:AD:httpc_manager,A4:init,I1 -=proc_dictionary:<0.96.0> -H105D82D78 -H105D82DB0 -=proc_stack:<0.96.0> -y0:N -y1:A8:infinity -y2:H105D82E40 -y3:H105D831B8 -y4:A11:httpc_handler_sup -y5:P<0.93.0> -0x0000000105d83388:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d833a8:SReturn addr 0x3D82348 () -=proc_heap:<0.96.0> -105D82E40:t5:AE:callback_cache,AA:supervisor,H105D82DC8,H105D82DF0,H105D82E18 -105D82E18:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105D82DF0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105D82DC8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105D831B8:tC:A5:state,H2800B6F58,A12:simple_one_for_one,H105D83120,H280028328,I0,I3600,N,I0,A5:never,A11:httpc_handler_sup,N -105D83120:t2:H105D83110,H105D830F0 -105D830F0:Mf1:H105D830E0:H105D83078 -105D830E0:t1:A9:undefined -105D83078:t9:A5:child,A9:undefined,A9:undefined,H105D82E70,A9:temporary,A5:false,I4000,A6:worker,H2800B6F70 -105D82E70:t3:AD:httpc_handler,AA:start_link,N -105D83110:lA9:undefined|N -105D82D78:t2:AA:$ancestors,H105D82D68 -105D82D68:lA9:httpc_sup|H105D82D28 -105D82D28:lA9:inets_sup|H105D82D18 -105D82D18:lP<0.91.0>|N -105D82DB0:t2:AD:$initial_call,H105D82D90 -105D82D90:t3:AA:supervisor,A11:httpc_handler_sup,I1 -=proc_dictionary:<0.97.0> -H105D98B40 -H105D98B58 -=proc_stack:<0.97.0> -0x0000000105d98ce8:SReturn addr 0x3D82348 () -=proc_heap:<0.97.0> -105D98B40:t2:AA:$ancestors,H105D98B80 -105D98B80:lA9:inets_sup|H105D98BC0 -105D98BC0:lP<0.91.0>|N -105D98B58:t2:AD:$initial_call,H105D98B90 -105D98B90:t3:AA:supervisor,A9:httpd_sup,I1 -=proc_dictionary:<0.102.0> -H105DBE6D0 -H105DBE6E8 -=proc_stack:<0.102.0> -y0:H105DBEC80 -y1:P<0.44.0> -0x0000000105dbed68:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dbed88:SReturn addr 0x3D82348 () -=proc_heap:<0.102.0> -105DBEC80:t7:A5:state,P<0.103.0>,H105DBE688,N,I0,P<0.69.0>,N -105DBE688:t8:A9:appl_data,A3:ssl,H105DBE718,A9:undefined,H105DBE728,H105DBE740,A8:infinity,A8:infinity -105DBE740:lAE:tls_connection|H105DBE790 -105DBE790:lA19:tls_client_connection_1_3|H105DBE7A0 -105DBE7A0:lA19:tls_server_connection_1_3|H105DBE7B0 -105DBE7B0:lA16:tls_gen_connection_1_3|H105DBE7C0 -105DBE7C0:lAD:tls_handshake|H105DBE7D0 -105DBE7D0:lA11:tls_handshake_1_3|H105DBE7E0 -105DBE7E0:lAA:tls_record|H105DBE7F0 -105DBE7F0:lAE:tls_record_1_3|H105DBE800 -105DBE800:lAA:tls_socket|H105DBE810 -105DBE810:lA6:tls_v1|H105DBE820 -105DBE820:lA12:tls_connection_sup|H105DBE830 -105DBE830:lA12:tls_gen_connection|H105DBE840 -105DBE840:lAA:tls_sender|H105DBE850 -105DBE850:lAE:tls_server_sup|H105DBE860 -105DBE860:lA1D:tls_server_session_ticket_sup|H105DBE870 -105DBE870:lA19:tls_server_session_ticket|H105DBE880 -105DBE880:lA7:tls_sup|H105DBE890 -105DBE890:lA16:tls_dyn_connection_sup|H105DBE8A0 -105DBE8A0:lAD:ssl_dh_groups|H105DBE8B0 -105DBE8B0:lAF:dtls_connection|H105DBE8C0 -105DBE8C0:lAE:dtls_handshake|H105DBE8D0 -105DBE8D0:lAB:dtls_record|H105DBE8E0 -105DBE8E0:lAB:dtls_socket|H105DBE8F0 -105DBE8F0:lA7:dtls_v1|H105DBE900 -105DBE900:lA13:dtls_connection_sup|H105DBE910 -105DBE910:lA13:dtls_gen_connection|H105DBE920 -105DBE920:lA11:dtls_packet_demux|H105DBE930 -105DBE930:lA11:dtls_listener_sup|H105DBE940 -105DBE940:lA8:dtls_sup|H105DBE950 -105DBE950:lAF:dtls_server_sup|H105DBE960 -105DBE960:lA1D:dtls_server_session_cache_sup|H105DBE970 -105DBE970:lA3:ssl|H105DBE980 -105DBE980:lA15:ssl_session_cache_api|H105DBE990 -105DBE990:lA13:tls_dtls_connection|H105DBE9A0 -105DBE9A0:lAA:ssl_config|H105DBE9B0 -105DBE9B0:lAE:ssl_gen_statem|H105DBE9C0 -105DBE9C0:lAD:ssl_handshake|H105DBE9D0 -105DBE9D0:lAA:ssl_record|H105DBE9E0 -105DBE9E0:lAA:ssl_cipher|H105DBE9F0 -105DBE9F0:lA11:ssl_cipher_format|H105DBEA00 -105DBEA00:lAE:ssl_srp_primes|H105DBEA10 -105DBEA10:lA9:ssl_alert|H105DBEA20 -105DBEA20:lA16:ssl_listen_tracker_sup|H105DBEA30 -105DBEA30:lA10:tls_bloom_filter|H105DBEA40 -105DBEA40:lA17:tls_client_ticket_store|H105DBEA50 -105DBEA50:lAD:inet_tls_dist|H105DBEA60 -105DBEA60:lAE:inet6_tls_dist|H105DBEA70 -105DBEA70:lAC:ssl_dist_sup|H105DBEA80 -105DBEA80:lA17:ssl_dist_connection_sup|H105DBEA90 -105DBEA90:lA12:ssl_dist_admin_sup|H105DBEAA0 -105DBEAA0:lAC:tls_dist_sup|H105DBEAB0 -105DBEAB0:lA13:tls_dist_server_sup|H105DBEAC0 -105DBEAC0:lAB:ssl_session|H105DBEAD0 -105DBEAD0:lA1B:ssl_client_session_cache_db|H105DBEAE0 -105DBEAE0:lA18:ssl_server_session_cache|H105DBEAF0 -105DBEAF0:lA1B:ssl_server_session_cache_db|H105DBEB00 -105DBEB00:lA1C:ssl_server_session_cache_sup|H105DBEB10 -105DBEB10:lA24:ssl_upgrade_server_session_cache_sup|H105DBEB20 -105DBEB20:lAB:ssl_manager|H105DBEB30 -105DBEB30:lAD:ssl_pem_cache|H105DBEB40 -105DBEB40:lAB:ssl_pkix_db|H105DBEB50 -105DBEB50:lAF:ssl_certificate|H105DBEB60 -105DBEB60:lA7:ssl_crl|H105DBEB70 -105DBEB70:lAD:ssl_crl_cache|H105DBEB80 -105DBEB80:lA11:ssl_crl_cache_api|H105DBEB90 -105DBEB90:lA10:ssl_crl_hash_dir|H105DBEBA0 -105DBEBA0:lAA:ssl_logger|H105DBEBB0 -105DBEBB0:lA9:ssl_trace|H105DBEBC0 -105DBEBC0:lA7:ssl_app|H105DBEBD0 -105DBEBD0:lA7:ssl_sup|H105DBEBE0 -105DBEBE0:lAD:ssl_admin_sup|H105DBEBF0 -105DBEBF0:lA12:ssl_connection_sup|N -105DBE728:t2:A7:ssl_app,N -105DBE718:lA7:ssl_sup|H105DBE780 -105DBE780:lAB:ssl_manager|N -105DBE6D0:t2:AA:$ancestors,H105DBE750 -105DBE750:lP<0.101.0>|N -105DBE6E8:t2:AD:$initial_call,H105DBE760 -105DBE760:t3:A12:application_master,A4:init,I4 -=proc_stack:<0.103.0> -y0:N -y1:N -y2:A7:ssl_app -y3:P<0.107.0> -y4:P<0.102.0> -0x0000000105da1bf0:SReturn addr 0x3D82348 () -=proc_heap:<0.103.0> -=proc_dictionary:<0.105.0> -H105DB0708 -H105DB0720 -H105DB0738 -=proc_stack:<0.105.0> -y0:N -y1:A8:infinity -y2:H105DB1980 -y3:H105DB0650 -y4:P<0.105.0> -y5:P<0.70.0> -0x0000000105db2c50:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db2c70:SReturn addr 0x3D82348 () -=proc_heap:<0.105.0> -105DB1980:t5:AE:callback_cache,AA:logger_olp,H105DB19D0,H105DB19F8,H105DB1A20 -105DB1A20:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9pbmZvYQI= -105DB19F8:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYXN0YQI= -105DB19D0:E1D:g3F3CmxvZ2dlcl9vbHB3C2hhbmRsZV9jYWxsYQM= -105DB0650:Mf14:H105DB0750:A18:logger_std_h_ssl_handler,AF:logger_h_common,A5:async,A4:true,A4:true,I200,I1000,I10,I0,I-576460751796696,H105DB07F8,I-576460751796696,I0,H105DB0840,I5000,I500,I1000,A5:false,I3000000,I20000 -105DB0750:t14:A2:id,A6:module,A4:mode,A4:idle,A12:burst_limit_enable,AE:drop_mode_qlen,AA:flush_qlen,AE:sync_mode_qlen,AF:burst_msg_count,AC:burst_win_ts,A8:cb_state,AC:last_load_ts,A9:last_qlen,A8:mode_ref,A1B:overload_kill_restart_after,A15:burst_limit_max_count,A17:burst_limit_window_time,A14:overload_kill_enable,A16:overload_kill_mem_size,A12:overload_kill_qlen -105DB0840:t2:AA:logger_olp,A18:logger_std_h_ssl_handler -105DB07F8:Mf6:H105DB08A8:AB:ssl_handler,AC:logger_std_h,A9:no_repeat,I20,H105DB08E0,A4:sync -105DB08A8:t6:A2:id,A6:module,A18:filesync_repeat_interval,AF:ctrl_sync_count,AD:handler_state,A7:last_op -105DB08E0:Mf2:H105DB0918:AB:standard_io,P<0.106.0> -105DB0918:t2:A4:type,AD:file_ctrl_pid -105DB0708:t2:A7:olp_ref,H105DB0858 -105DB0858:t3:A18:logger_std_h_ssl_handler,P<0.105.0>,H105DB0840 -105DB0720:t2:AA:$ancestors,H105DB0878 -105DB0878:lAA:logger_sup|H105DB0908 -105DB0908:lAA:kernel_sup|H105DB0930 -105DB0930:lP<0.47.0>|N -105DB0738:t2:AD:$initial_call,H105DB0888 -105DB0888:t3:AA:logger_olp,A4:init,I1 -=proc_stack:<0.106.0> -y0:N -y1:N -y2:H105DA87D8 -0x0000000105da8e80:SReturn addr 0x3D82348 () -=proc_heap:<0.106.0> -105DA87D8:Mf2:H280091C80:AB:ssl_handler,AB:standard_io -=proc_dictionary:<0.107.0> -H105D8C6D0 -H105D8C6E8 -=proc_stack:<0.107.0> -0x0000000105d8c958:SReturn addr 0x3D82348 () -=proc_heap:<0.107.0> -105D8C6D0:t2:AA:$ancestors,H105D8C710 -105D8C710:lP<0.103.0>|N -105D8C6E8:t2:AD:$initial_call,H105D8C720 -105D8C720:t3:AA:supervisor,A7:ssl_sup,I1 -=proc_dictionary:<0.108.0> -H105DBFC68 -H105DBFC80 -=proc_stack:<0.108.0> -0x0000000105dbffe0:SReturn addr 0x3D82348 () -=proc_heap:<0.108.0> -105DBFC68:t2:AA:$ancestors,H105DBFCA8 -105DBFCA8:lA7:ssl_sup|H105DBFCE8 -105DBFCE8:lP<0.103.0>|N -105DBFC80:t2:AD:$initial_call,H105DBFCB8 -105DBFCB8:t3:AA:supervisor,AD:ssl_admin_sup,I1 -=proc_dictionary:<0.109.0> -H105D82110 -H105D82128 -H105D82140 -=proc_stack:<0.109.0> -y0:N -y1:A8:infinity -y2:H105D820E0 -y3:H105D828A8 -y4:AD:ssl_pem_cache -y5:P<0.108.0> -0x0000000105d82c38:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d82c58:SReturn addr 0x3D82348 () -=proc_heap:<0.109.0> -105D820E0:t5:AE:callback_cache,AD:ssl_pem_cache,H105D82178,H105D821A0,H105D821C8 -105D821C8:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9pbmZvYQI= -105D821A0:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9jYXN0YQI= -105D82178:E20:g3F3DXNzbF9wZW1fY2FjaGV3C2hhbmRsZV9jYWxsYQM= -105D828A8:t4:A5:state,AD:ssl_pem_cache,I1701928823,I120000 -105D82110:t2:AA:$ancestors,H105D821F0 -105D821F0:lAD:ssl_admin_sup|H105D82260 -105D82260:lA7:ssl_sup|H105D82280 -105D82280:lP<0.103.0>|N -105D82128:t2:AD:ssl_pem_cache,AD:ssl_pem_cache -105D82140:t2:AD:$initial_call,H105D82200 -105D82200:t3:AD:ssl_pem_cache,A4:init,I1 -=proc_dictionary:<0.110.0> -H105DB84D8 -H105DB84F0 -H105DB8508 -H105DB8520 -=proc_stack:<0.110.0> -y0:N -y1:A8:infinity -y2:H105DB84A8 -y3:H105DB67C8 -y4:AB:ssl_manager -y5:P<0.108.0> -0x0000000105db7160:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db7180:SReturn addr 0x3D82348 () -=proc_heap:<0.110.0> -105DB84A8:t5:AE:callback_cache,AB:ssl_manager,H105DB8538,H105DB8560,H105DB8588 -105DB8588:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfaW5mb2EC -105DB8560:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfY2FzdGEC -105DB8538:E1E:g3F3C3NzbF9tYW5hZ2VydwtoYW5kbGVfY2FsbGED -105DB67C8:tA:A5:state,H105DB66B0,A1B:ssl_client_session_cache_db,I86400,H105DB67A0,H105DB67B0,I1000,A9:undefined,N,H280061C80 -105DB67B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGc+vQAAd/g02c= -105DB67A0:lH105DB66C8|H105DB6790 -105DB66C8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGX+vYAAd/g02c= -105DB6790:lH105DB6778|H105DB6768 -105DB6778:t2:H105DB66E0,H105DB66F8 -105DB66F8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGZ+vYAAd/g02c= -105DB66E0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGY+vYAAd/g02c= -105DB6768:lAD:ssl_pem_cache|H105DB6758 -105DB6758:lH105DB6740|N -105DB6740:t2:H105DB6710,H105DB6728 -105DB6728:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGb+vYAAd/g02c= -105DB6710:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGa+vYAAd/g02c= -105DB66B0:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALGW+vYAAd/g02c= -105DB84D8:t2:AA:$ancestors,H105DB85B0 -105DB85B0:lAD:ssl_admin_sup|H105DB85E0 -105DB85E0:lA7:ssl_sup|H105DB85F0 -105DB85F0:lP<0.103.0>|N -105DB84F0:t2:AB:ssl_manager,AB:ssl_manager -105DB8508:t2:AD:ssl_pem_cache,AD:ssl_pem_cache -105DB8520:t2:AD:$initial_call,H105DB85C0 -105DB85C0:t3:AB:ssl_manager,A4:init,I1 -=proc_dictionary:<0.111.0> -H105D8FCA8 -H105D8FCE0 -=proc_stack:<0.111.0> -y0:N -y1:A8:infinity -y2:H105D8FD70 -y3:H105D8FDB8 -y4:A17:tls_client_ticket_store -y5:P<0.108.0> -0x0000000105d902b8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d902d8:SReturn addr 0x3D82348 () -=proc_heap:<0.111.0> -105D8FD70:t5:AE:callback_cache,A17:tls_client_ticket_store,H105D8FCF8,H105D8FD20,H105D8FD48 -105D8FD48:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfaW5mb2EC -105D8FD20:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfY2FzdGEC -105D8FCF8:E2A:g3F3F3Rsc19jbGllbnRfdGlja2V0X3N0b3JldwtoYW5kbGVfY2FsbGED -105D8FDB8:t4:A5:state,H280061C80,I7200,I1000 -105D8FCA8:t2:AA:$ancestors,H105D8FC98 -105D8FC98:lAD:ssl_admin_sup|H105D8FC58 -105D8FC58:lA7:ssl_sup|H105D8FC48 -105D8FC48:lP<0.103.0>|N -105D8FCE0:t2:AD:$initial_call,H105D8FCC0 -105D8FCC0:t3:A17:tls_client_ticket_store,A4:init,I1 -=proc_dictionary:<0.112.0> -H105DADF58 -H105DADF70 -=proc_stack:<0.112.0> -0x0000000105dae1f0:SReturn addr 0x3D82348 () -=proc_heap:<0.112.0> -105DADF58:t2:AA:$ancestors,H105DADF98 -105DADF98:lA7:ssl_sup|H105DADFD8 -105DADFD8:lP<0.103.0>|N -105DADF70:t2:AD:$initial_call,H105DADFA8 -105DADFA8:t3:AA:supervisor,A12:ssl_connection_sup,I1 -=proc_dictionary:<0.113.0> -H105DADCA0 -H105DADCB8 -=proc_stack:<0.113.0> -0x0000000105dadf48:SReturn addr 0x3D82348 () -=proc_heap:<0.113.0> -105DADCA0:t2:AA:$ancestors,H105DADCE0 -105DADCE0:lA12:ssl_connection_sup|H105DADD20 -105DADD20:lA7:ssl_sup|H105DADD40 -105DADD40:lP<0.103.0>|N -105DADCB8:t2:AD:$initial_call,H105DADCF0 -105DADCF0:t3:AA:supervisor,A7:tls_sup,I1 -=proc_dictionary:<0.114.0> -H105D87718 -H105D87750 -=proc_stack:<0.114.0> -y0:N -y1:A8:infinity -y2:H105D877E0 -y3:H105D87A80 -y4:A12:tls_connection_sup -y5:P<0.113.0> -0x0000000105d87d18:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105d87d38:SReturn addr 0x3D82348 () -=proc_heap:<0.114.0> -105D877E0:t5:AE:callback_cache,AA:supervisor,H105D87768,H105D87790,H105D877B8 -105D877B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105D87790:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105D87768:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105D87A80:tC:A5:state,H2800BDB80,A12:simple_one_for_one,H105D879E8,H280028328,I0,I3600,N,I0,A5:never,A12:tls_connection_sup,N -105D879E8:t2:H105D879D8,H105D879B8 -105D879B8:Mf1:H105D879A8:H105D87940 -105D879A8:t1:A9:undefined -105D87940:t9:A5:child,A9:undefined,A9:undefined,H2800BDCA0,A9:temporary,A5:false,A8:infinity,AA:supervisor,H105D87930 -105D87930:lA16:tls_dyn_connection_sup|N -105D879D8:lA9:undefined|N -105D87718:t2:AA:$ancestors,H105D87708 -105D87708:lA7:tls_sup|H105D876C8 -105D876C8:lA12:ssl_connection_sup|H105D876B8 -105D876B8:lA7:ssl_sup|H105D876A8 -105D876A8:lP<0.103.0>|N -105D87750:t2:AD:$initial_call,H105D87730 -105D87730:t3:AA:supervisor,A12:tls_connection_sup,I1 -=proc_dictionary:<0.115.0> -H105DA2350 -H105DA2368 -=proc_stack:<0.115.0> -0x0000000105da26e8:SReturn addr 0x3D82348 () -=proc_heap:<0.115.0> -105DA2350:t2:AA:$ancestors,H105DA2390 -105DA2390:lA7:tls_sup|H105DA23D0 -105DA23D0:lA12:ssl_connection_sup|H105DA23F0 -105DA23F0:lA7:ssl_sup|H105DA2410 -105DA2410:lP<0.103.0>|N -105DA2368:t2:AD:$initial_call,H105DA23A0 -105DA23A0:t3:AA:supervisor,AE:tls_server_sup,I1 -=proc_dictionary:<0.116.0> -H105DBD3E8 -H105DBD420 -=proc_stack:<0.116.0> -y0:N -y1:A8:infinity -y2:H105DBD4B0 -y3:H105DBD740 -y4:A16:ssl_listen_tracker_sup -y5:P<0.115.0> -0x0000000105dbd9d8:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105dbd9f8:SReturn addr 0x3D82348 () -=proc_heap:<0.116.0> -105DBD4B0:t5:AE:callback_cache,AA:supervisor,H105DBD438,H105DBD460,H105DBD488 -105DBD488:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105DBD460:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105DBD438:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105DBD740:tC:A5:state,H2800BE298,A12:simple_one_for_one,H105DBD6A8,H280028328,I0,I3600,N,I0,A5:never,A16:ssl_listen_tracker_sup,N -105DBD6A8:t2:H105DBD698,H105DBD678 -105DBD678:Mf1:H105DBD668:H105DBD600 -105DBD668:t1:A9:undefined -105DBD600:t9:A5:child,A9:undefined,A9:undefined,H2800BE3E8,A9:temporary,A5:false,I4000,A6:worker,H2800BE3D8 -105DBD698:lA9:undefined|N -105DBD3E8:t2:AA:$ancestors,H105DBD3D8 -105DBD3D8:lAE:tls_server_sup|H105DBD398 -105DBD398:lA7:tls_sup|H105DBD388 -105DBD388:lA12:ssl_connection_sup|H105DBD378 -105DBD378:lA7:ssl_sup|H105DBD368 -105DBD368:lP<0.103.0>|N -105DBD420:t2:AD:$initial_call,H105DBD400 -105DBD400:t3:AA:supervisor,A16:ssl_listen_tracker_sup,I1 -=proc_dictionary:<0.117.0> -H105DA1D30 -H105DA1D68 -=proc_stack:<0.117.0> -y0:N -y1:A8:infinity -y2:H105DA1DF8 -y3:H105DA2088 -y4:A1D:tls_server_session_ticket_sup -y5:P<0.115.0> -0x0000000105da2320:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105da2340:SReturn addr 0x3D82348 () -=proc_heap:<0.117.0> -105DA1DF8:t5:AE:callback_cache,AA:supervisor,H105DA1D80,H105DA1DA8,H105DA1DD0 -105DA1DD0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105DA1DA8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105DA1D80:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105DA2088:tC:A5:state,H2800BE5C0,A12:simple_one_for_one,H105DA1FF0,H280028358,I0,I3600,N,I0,A5:never,A1D:tls_server_session_ticket_sup,N -105DA1FF0:t2:H105DA1FE0,H105DA1FC0 -105DA1FC0:Mf1:H105DA1FB0:H105DA1F48 -105DA1FB0:t1:A9:undefined -105DA1F48:t9:A5:child,A9:undefined,A9:undefined,H2800BE710,A9:transient,A5:false,I4000,A6:worker,H2800BE700 -105DA1FE0:lA9:undefined|N -105DA1D30:t2:AA:$ancestors,H105DA1D20 -105DA1D20:lAE:tls_server_sup|H105DA1CE0 -105DA1CE0:lA7:tls_sup|H105DA1CD0 -105DA1CD0:lA12:ssl_connection_sup|H105DA1CC0 -105DA1CC0:lA7:ssl_sup|H105DA1CB0 -105DA1CB0:lP<0.103.0>|N -105DA1D68:t2:AD:$initial_call,H105DA1D48 -105DA1D48:t3:AA:supervisor,A1D:tls_server_session_ticket_sup,I1 -=proc_dictionary:<0.118.0> -H105EBF1B0 -H105EBF1E8 -=proc_stack:<0.118.0> -y0:N -y1:A8:infinity -y2:H105EBF278 -y3:H105EBF508 -y4:A1C:ssl_server_session_cache_sup -y5:P<0.115.0> -0x0000000105ebf7a0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105ebf7c0:SReturn addr 0x3D82348 () -=proc_heap:<0.118.0> -105EBF278:t5:AE:callback_cache,AA:supervisor,H105EBF200,H105EBF228,H105EBF250 -105EBF250:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105EBF228:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105EBF200:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105EBF508:tC:A5:state,H2800BE958,A12:simple_one_for_one,H105EBF470,H280028358,I3,I3600,N,I0,A5:never,A1C:ssl_server_session_cache_sup,N -105EBF470:t2:H105EBF460,H105EBF440 -105EBF440:Mf1:H105EBF430:H105EBF3C8 -105EBF430:t1:A9:undefined -105EBF3C8:t9:A5:child,A9:undefined,A9:undefined,H2800BEA90,A9:transient,A5:false,I4000,A6:worker,H2800BEA80 -105EBF460:lA9:undefined|N -105EBF1B0:t2:AA:$ancestors,H105EBF1A0 -105EBF1A0:lAE:tls_server_sup|H105EBF160 -105EBF160:lA7:tls_sup|H105EBF150 -105EBF150:lA12:ssl_connection_sup|H105EBF140 -105EBF140:lA7:ssl_sup|H105EBF130 -105EBF130:lP<0.103.0>|N -105EBF1E8:t2:AD:$initial_call,H105EBF1C8 -105EBF1C8:t3:AA:supervisor,A1C:ssl_server_session_cache_sup,I1 -=proc_dictionary:<0.119.0> -H105EBF900 -H105EBF938 -=proc_stack:<0.119.0> -y0:N -y1:A8:infinity -y2:H105EBF9C8 -y3:H105EBFC58 -y4:A24:ssl_upgrade_server_session_cache_sup -y5:P<0.115.0> -0x0000000105ebfef0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105ebff10:SReturn addr 0x3D82348 () -=proc_heap:<0.119.0> -105EBF9C8:t5:AE:callback_cache,AA:supervisor,H105EBF950,H105EBF978,H105EBF9A0 -105EBF9A0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105EBF978:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105EBF950:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105EBFC58:tC:A5:state,H2800BECC8,A12:simple_one_for_one,H105EBFBC0,H280028358,I3,I3600,N,I0,A5:never,A24:ssl_upgrade_server_session_cache_sup,N -105EBFBC0:t2:H105EBFBB0,H105EBFB90 -105EBFB90:Mf1:H105EBFB80:H105EBFB18 -105EBFB80:t1:A9:undefined -105EBFB18:t9:A5:child,A9:undefined,A9:undefined,H2800BEE18,A9:transient,A5:false,I4000,A6:worker,H2800BEE08 -105EBFBB0:lA9:undefined|N -105EBF900:t2:AA:$ancestors,H105EBF8F0 -105EBF8F0:lAE:tls_server_sup|H105EBF8B0 -105EBF8B0:lA7:tls_sup|H105EBF8A0 -105EBF8A0:lA12:ssl_connection_sup|H105EBF890 -105EBF890:lA7:ssl_sup|H105EBF880 -105EBF880:lP<0.103.0>|N -105EBF938:t2:AD:$initial_call,H105EBF918 -105EBF918:t3:AA:supervisor,A24:ssl_upgrade_server_session_cache_sup,I1 -=proc_dictionary:<0.120.0> -H105DB8030 -H105DB8048 -=proc_stack:<0.120.0> -0x0000000105db82d8:SReturn addr 0x3D82348 () -=proc_heap:<0.120.0> -105DB8030:t2:AA:$ancestors,H105DB8070 -105DB8070:lA12:ssl_connection_sup|H105DB80B0 -105DB80B0:lA7:ssl_sup|H105DB80D0 -105DB80D0:lP<0.103.0>|N -105DB8048:t2:AD:$initial_call,H105DB8080 -105DB8080:t3:AA:supervisor,A8:dtls_sup,I1 -=proc_dictionary:<0.121.0> -H105DB72B0 -H105DB72E8 -=proc_stack:<0.121.0> -y0:N -y1:A8:infinity -y2:H105DB7378 -y3:H105DB7608 -y4:A13:dtls_connection_sup -y5:P<0.120.0> -0x0000000105db78b0:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db78d0:SReturn addr 0x3D82348 () -=proc_heap:<0.121.0> -105DB7378:t5:AE:callback_cache,AA:supervisor,H105DB7300,H105DB7328,H105DB7350 -105DB7350:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105DB7328:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105DB7300:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105DB7608:tC:A5:state,H2800BF370,A12:simple_one_for_one,H105DB7570,H280028328,I0,I3600,N,I0,A5:never,A13:dtls_connection_sup,N -105DB7570:t2:H105DB7560,H105DB7540 -105DB7540:Mf1:H105DB7530:H105DB74C8 -105DB7530:t1:A9:undefined -105DB74C8:t9:A5:child,A9:undefined,A9:undefined,H2800BF4D0,A9:temporary,A5:false,I4000,A6:worker,H2800BF4B0 -105DB7560:lA9:undefined|N -105DB72B0:t2:AA:$ancestors,H105DB72A0 -105DB72A0:lA8:dtls_sup|H105DB7260 -105DB7260:lA12:ssl_connection_sup|H105DB7250 -105DB7250:lA7:ssl_sup|H105DB7240 -105DB7240:lP<0.103.0>|N -105DB72E8:t2:AD:$initial_call,H105DB72C8 -105DB72C8:t3:AA:supervisor,A13:dtls_connection_sup,I1 -=proc_dictionary:<0.122.0> -H105D8D9E8 -H105D8DA00 -=proc_stack:<0.122.0> -0x0000000105d8dca0:SReturn addr 0x3D82348 () -=proc_heap:<0.122.0> -105D8D9E8:t2:AA:$ancestors,H105D8DA28 -105D8DA28:lA8:dtls_sup|H105D8DA68 -105D8DA68:lA12:ssl_connection_sup|H105D8DA88 -105D8DA88:lA7:ssl_sup|H105D8DAA8 -105D8DAA8:lP<0.103.0>|N -105D8DA00:t2:AD:$initial_call,H105D8DA38 -105D8DA38:t3:AA:supervisor,AF:dtls_server_sup,I1 -=proc_dictionary:<0.123.0> -H105DB7A10 -H105DB7A48 -=proc_stack:<0.123.0> -y0:N -y1:A8:infinity -y2:H105DB7AD8 -y3:H105DB7D68 -y4:A11:dtls_listener_sup -y5:P<0.122.0> -0x0000000105db8000:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105db8020:SReturn addr 0x3D82348 () -=proc_heap:<0.123.0> -105DB7AD8:t5:AE:callback_cache,AA:supervisor,H105DB7A60,H105DB7A88,H105DB7AB0 -105DB7AB0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105DB7A88:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105DB7A60:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105DB7D68:tC:A5:state,H2800BF988,A12:simple_one_for_one,H105DB7CD0,H280028328,I0,I3600,N,I0,A5:never,A11:dtls_listener_sup,N -105DB7CD0:t2:H105DB7CC0,H105DB7CA0 -105DB7CA0:Mf1:H105DB7C90:H105DB7C28 -105DB7C90:t1:A9:undefined -105DB7C28:t9:A5:child,A9:undefined,A9:undefined,H2800BFB08,A9:temporary,A5:false,I4000,A6:worker,H2800BFAF8 -105DB7CC0:lA9:undefined|N -105DB7A10:t2:AA:$ancestors,H105DB7A00 -105DB7A00:lAF:dtls_server_sup|H105DB79C0 -105DB79C0:lA8:dtls_sup|H105DB79B0 -105DB79B0:lA12:ssl_connection_sup|H105DB79A0 -105DB79A0:lA7:ssl_sup|H105DB7990 -105DB7990:lP<0.103.0>|N -105DB7A48:t2:AD:$initial_call,H105DB7A28 -105DB7A28:t3:AA:supervisor,A11:dtls_listener_sup,I1 -=proc_dictionary:<0.124.0> -H105DE5340 -H105DE5378 -=proc_stack:<0.124.0> -y0:N -y1:A8:infinity -y2:H105DE5408 -y3:H105DE5698 -y4:A1D:dtls_server_session_cache_sup -y5:P<0.122.0> -0x0000000105de5930:SReturn addr 0x3E95064 (proc_lib:init_p_do_apply/3 + 180) -y0:N -y1:N -y2:SCatch 0x3E9508C (proc_lib:init_p_do_apply/3 + 220) -0x0000000105de5950:SReturn addr 0x3D82348 () -=proc_heap:<0.124.0> -105DE5408:t5:AE:callback_cache,AA:supervisor,H105DE5390,H105DE53B8,H105DE53E0 -105DE53E0:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9pbmZvYQI= -105DE53B8:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYXN0YQI= -105DE5390:E1D:g3F3CnN1cGVydmlzb3J3C2hhbmRsZV9jYWxsYQM= -105DE5698:tC:A5:state,H2800BFC90,A12:simple_one_for_one,H105DE5600,H280028328,I0,I3600,N,I0,A5:never,A1D:dtls_server_session_cache_sup,N -105DE5600:t2:H105DE55F0,H105DE55D0 -105DE55D0:Mf1:H105DE55C0:H105DE5558 -105DE55C0:t1:A9:undefined -105DE5558:t9:A5:child,A9:undefined,A9:undefined,H2800BFDC8,A9:temporary,A5:false,I4000,A6:worker,H2800BFDB8 -105DE55F0:lA9:undefined|N -105DE5340:t2:AA:$ancestors,H105DE5330 -105DE5330:lAF:dtls_server_sup|H105DE52F0 -105DE52F0:lA8:dtls_sup|H105DE52E0 -105DE52E0:lA12:ssl_connection_sup|H105DE52D0 -105DE52D0:lA7:ssl_sup|H105DE52C0 -105DE52C0:lP<0.103.0>|N -105DE5378:t2:AD:$initial_call,H105DE5358 -105DE5358:t3:AA:supervisor,A1D:dtls_server_session_cache_sup,I1 -=proc_messages:<0.135.0> -=proc_stack:<0.135.0> -y0:H2800CD8C8 -y1:H105D8D5E0 -y2:A8:infinity -0x0000000105d8d7d0:SReturn addr 0x41FF57C (gleam_erlang_ffi:select/1 + 76) -0x0000000105d8d7d8:SReturn addr 0x41F8888 ('gleam@otp@actor':loop/1 + 88) -y0:N -y1:N -y2:H105D8D4B0 -0x0000000105d8d7f8:SReturn addr 0x3D82348 () -=proc_heap:<0.135.0> -105D8D5E0:Mf3:H105D8D610:H2800CD8C8,H105D8D598,H105D8D340 -105D8D610:t3:A8:anything,H105D8D5C8,H105D8D3B0 -105D8D3B0:t2:H105D8D288,I2 -105D8D288:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALJ5+vQAAd/g02c= -105D8D5C8:t2:A6:system,I3 -105D8D340:E59:g3AAAABXATXkq0co6TIEH9F8d4ohKbUAAAABAAAAAXcUZ2xlYW1AZXJsYW5nQHByb2Nlc3NhAWIBryVaWHcNbm9ub2RlQG5vaG9zdAAAAIcAAAAAAAAAAGo= -105D8D598:E59:g3AAAABXATXkq0co6TIEH9F8d4ohKbUAAAAEAAAAAXcUZ2xlYW1AZXJsYW5nQHByb2Nlc3NhBGIBryVaWHcNbm9ub2RlQG5vaG9zdAAAAIcAAAAAAAAAAGo= -105D8D4B0:t8:A4:self,A7:running,P<0.9.0>,A3:nil,H105D8D160,H105D8D180,N,H105D8D198 -105D8D198:E70:g3AAAABuAm0lB8VhbzpekP2Yj7+xrtsAAAAAAAAABXcnc2hvd3RpbWVAaW50ZXJuYWxAZXJsYW5nQG1vZHVsZV9oYW5kbGVyYQBiA2koPlh3DW5vbm9kZUBub2hvc3QAAAAJAAAAAAAAAABqampqag== -105D8D180:t2:A8:selector,H105D8D2A0 -105D8D2A0:Mf1:H105D8D330:H105D8D340 -105D8D330:t1:H105D8D3B0 -105D8D160:t3:A7:subject,P<0.135.0>,H105D8D288 -=persistent_terms -H280093098|A5:async -AC:logger_proxy|H28008F560 -H2800930E0|I10 -H28001C210|H28001C228 -H280093140|A9:undefined -AC:global_group|H28007FBF0 -H280017DD8|H280017DF0 -H2800BB860|I23 -H28001F250|H28001F268 -H280068270|H280068288 -H280068B60|N -H28001EEC0|H28001EED8 -H2800BB800|I7 -H2800BB7B8|A5:async -A12:rex_nodes_observer|H2800711C8 -H28001EFE8|H28001F000 -H28005B268|I5 -H28006A4B8|I5 -H28008F5C8|A5:async -H280068BF0|I5 -H280068BA8|A4:true -H280068B18|N -H28005B2B0|I5 -=literals -2800101F8:t2:A4:unix,A6:darwin -280010230:t3:I23,I0,I0 -280010268:t6:AB:erts_dflags,I55966662588,I17230663572,I55966662588,I8396866,I8192 -280010188:t0: -280010190:t0: -2800102B8:lI108|N -2800102C8:lI114|H2800102B8 -2800102D8:lI101|H2800102C8 -2800102E8:lI46|H2800102D8 -280013CD0:t4:A5:state,H280013CF8,H280013D10,H280013D28 -280013CF8:Mf0:H280010188: -280013D10:Mf0:H280010188: -280013D28:Mf0:H280010188: -280013D40:Mf0:H280010188: -280013D58:lA5:flush|N -280013D68:lI115|H280013D78 -280013D78:lI111|H280013D88 -280013D88:lI99|H280013D98 -280013D98:lI107|H280013DA8 -280013DA8:lI101|H280013DB8 -280013DB8:lI116|H280013DC8 -280013DC8:lI45|H280013DD8 -280013DD8:lI114|H280013DE8 -280013DE8:lI101|H280013DF8 -280013DF8:lI103|H280013E08 -280013E08:lI105|H280013E18 -280013E18:lI115|H280013E28 -280013E28:lI116|H280013E38 -280013E38:lI114|H280013E48 -280013E48:lI121|H280013E58 -280013E58:lI32|H280013E68 -280013E68:lI114|H280013E78 -280013E78:lI101|H280013E88 -280013E88:lI99|H280013E98 -280013E98:lI101|H280013EA8 -280013EA8:lI105|H280013EB8 -280013EB8:lI118|H280013EC8 -280013EC8:lI101|H280013ED8 -280013ED8:lI100|H280013EE8 -280013EE8:lI32|H280013EF8 -280013EF8:lI117|H280013F08 -280013F08:lI110|H280013F18 -280013F18:lI101|H280013F28 -280013F28:lI120|H280013F38 -280013F38:lI112|H280013F48 -280013F48:lI101|H280013F58 -280013F58:lI99|H280013F68 -280013F68:lI116|H280013F78 -280013F78:lI101|H280013F88 -280013F88:lI100|H280013F98 -280013F98:lI32|H280013FA8 -280013FA8:lI101|H280013FB8 -280013FB8:lI120|H280013FC8 -280013FC8:lI105|H280013FD8 -280013FD8:lI116|H280013FE8 -280013FE8:lI32|H280013FF8 -280013FF8:lI102|H280014008 -280014008:lI114|H280014018 -280014018:lI111|H280014028 -280014028:lI109|H280014038 -280014038:lI32|H280014048 -280014048:lI126|H280014058 -280014058:lI112|H280014068 -280014068:lI58|H280014078 -280014078:lI126|H280014088 -280014088:lI110|H280014098 -280014098:lI32|H2800140A8 -2800140A8:lI32|H2800140B8 -2800140B8:lI32|H2800140C8 -2800140C8:lI126|H2800140D8 -2800140D8:lI112|N -2800140E8:lI115|H2800140F8 -2800140F8:lI111|H280014108 -280014108:lI99|H280014118 -280014118:lI107|H280014128 -280014128:lI101|H280014138 -280014138:lI116|H280014148 -280014148:lI45|H280014158 -280014158:lI114|H280014168 -280014168:lI101|H280014178 -280014178:lI103|H280014188 -280014188:lI105|H280014198 -280014198:lI115|H2800141A8 -2800141A8:lI116|H2800141B8 -2800141B8:lI114|H2800141C8 -2800141C8:lI121|H2800141D8 -2800141D8:lI32|H2800141E8 -2800141E8:lI114|H2800141F8 -2800141F8:lI101|H280014208 -280014208:lI99|H280014218 -280014218:lI101|H280014228 -280014228:lI105|H280014238 -280014238:lI118|H280014248 -280014248:lI101|H280014258 -280014258:lI100|H280014268 -280014268:lI32|H280014278 -280014278:lI117|H280014288 -280014288:lI110|H280014298 -280014298:lI101|H2800142A8 -2800142A8:lI120|H2800142B8 -2800142B8:lI112|H2800142C8 -2800142C8:lI101|H2800142D8 -2800142D8:lI99|H2800142E8 -2800142E8:lI116|H2800142F8 -2800142F8:lI101|H280014308 -280014308:lI100|H280014318 -280014318:lI58|H280014328 -280014328:lI126|H280014338 -280014338:lI110|H280014348 -280014348:lI32|H280014358 -280014358:lI32|H280014368 -280014368:lI32|H280014378 -280014378:lI126|H280014388 -280014388:lI112|N -280014398:lI115|H2800143A8 -2800143A8:lI111|H2800143B8 -2800143B8:lI99|H2800143C8 -2800143C8:lI107|H2800143D8 -2800143D8:lI101|H2800143E8 -2800143E8:lI116|H2800143F8 -2800143F8:lI45|H280014408 -280014408:lI114|H280014418 -280014418:lI101|H280014428 -280014428:lI103|H280014438 -280014438:lI105|H280014448 -280014448:lI115|H280014458 -280014458:lI116|H280014468 -280014468:lI114|H280014478 -280014478:lI121|H280014488 -280014488:lI32|H280014498 -280014498:lI101|H2800144A8 -2800144A8:lI114|H2800144B8 -2800144B8:lI114|H2800144C8 -2800144C8:lI111|H2800144D8 -2800144D8:lI114|H2800144E8 -2800144E8:lI32|H2800144F8 -2800144F8:lI119|H280014508 -280014508:lI104|H280014518 -280014518:lI105|H280014528 -280014528:lI108|H280014538 -280014538:lI101|H280014548 -280014548:lI32|H280014558 -280014558:lI112|H280014568 -280014568:lI114|H280014578 -280014578:lI111|H280014588 -280014588:lI99|H280014598 -280014598:lI101|H2800145A8 -2800145A8:lI115|H2800145B8 -2800145B8:lI115|H2800145C8 -2800145C8:lI105|H2800145D8 -2800145D8:lI110|H2800145E8 -2800145E8:lI103|H2800145F8 -2800145F8:lI32|H280014608 -280014608:lI115|H280014618 -280014618:lI111|H280014628 -280014628:lI99|H280014638 -280014638:lI107|H280014648 -280014648:lI101|H280014658 -280014658:lI116|H280014668 -280014668:lI58|H280014678 -280014678:lI32|H280014688 -280014688:lI126|H280014698 -280014698:lI110|H2800146A8 -2800146A8:lI32|H2800146B8 -2800146B8:lI32|H2800146C8 -2800146C8:lI32|H2800146D8 -2800146D8:lI67|H2800146E8 -2800146E8:lI108|H2800146F8 -2800146F8:lI97|H280014708 -280014708:lI115|H280014718 -280014718:lI115|H280014728 -280014728:lI58|H280014738 -280014738:lI32|H280014748 -280014748:lI126|H280014758 -280014758:lI112|H280014768 -280014768:lI126|H280014778 -280014778:lI110|H280014788 -280014788:lI32|H280014798 -280014798:lI32|H2800147A8 -2800147A8:lI32|H2800147B8 -2800147B8:lI69|H2800147C8 -2800147C8:lI114|H2800147D8 -2800147D8:lI114|H2800147E8 -2800147E8:lI111|H2800147F8 -2800147F8:lI114|H280014808 -280014808:lI58|H280014818 -280014818:lI32|H280014828 -280014828:lI126|H280014838 -280014838:lI112|H280014848 -280014848:lI126|H280014858 -280014858:lI110|H280014868 -280014868:lI32|H280014878 -280014878:lI32|H280014888 -280014888:lI32|H280014898 -280014898:lI83|H2800148A8 -2800148A8:lI116|H2800148B8 -2800148B8:lI97|H2800148C8 -2800148C8:lI99|H2800148D8 -2800148D8:lI107|H2800148E8 -2800148E8:lI58|H2800148F8 -2800148F8:lI32|H280014908 -280014908:lI126|H280014918 -280014918:lI112|N -280014928:t2:A5:error,AE:unknown_socket -280014940:t2:A5:error,A9:not_owner -280014958:t2:A5:error,AF:unknown_monitor -280014970:t2:AF:socket_registry,A9:not_found -280014988:lI115|H280014998 -280014998:lI111|H2800149A8 -2800149A8:lI99|H2800149B8 -2800149B8:lI107|H2800149C8 -2800149C8:lI101|H2800149D8 -2800149D8:lI116|H2800149E8 -2800149E8:lI45|H2800149F8 -2800149F8:lI114|H280014A08 -280014A08:lI101|H280014A18 -280014A18:lI103|H280014A28 -280014A28:lI105|H280014A38 -280014A38:lI115|H280014A48 -280014A48:lI116|H280014A58 -280014A58:lI114|H280014A68 -280014A68:lI121|H280014A78 -280014A78:lI32|H280014A88 -280014A88:lI115|H280014A98 -280014A98:lI101|H280014AA8 -280014AA8:lI110|H280014AB8 -280014AB8:lI100|H280014AC8 -280014AC8:lI102|H280014AD8 -280014AD8:lI105|H280014AE8 -280014AE8:lI108|H280014AF8 -280014AF8:lI101|H280014B08 -280014B08:lI95|H280014B18 -280014B18:lI100|H280014B28 -280014B28:lI101|H280014B38 -280014B38:lI102|H280014B48 -280014B48:lI101|H280014B58 -280014B58:lI114|H280014B68 -280014B68:lI114|H280014B78 -280014B78:lI101|H280014B88 -280014B88:lI100|H280014B98 -280014B98:lI95|H280014BA8 -280014BA8:lI99|H280014BB8 -280014BB8:lI108|H280014BC8 -280014BC8:lI111|H280014BD8 -280014BD8:lI115|H280014BE8 -280014BE8:lI101|H280014BF8 -280014BF8:lI58|H280014C08 -280014C08:lI126|H280014C18 -280014C18:lI110|H280014C28 -280014C28:lI32|H280014C38 -280014C38:lI32|H280014C48 -280014C48:lI32|H280014C58 -280014C58:lI91|H280014C68 -280014C68:lI126|H280014C78 -280014C78:lI112|H280014C88 -280014C88:lI93|H280014C98 -280014C98:lI32|H280014CA8 -280014CA8:lI126|H280014CB8 -280014CB8:lI112|N -280014CC8:lI115|H280014CD8 -280014CD8:lI111|H280014CE8 -280014CE8:lI99|H280014CF8 -280014CF8:lI107|H280014D08 -280014D08:lI101|H280014D18 -280014D18:lI116|H280014D28 -280014D28:lI45|H280014D38 -280014D38:lI114|H280014D48 -280014D48:lI101|H280014D58 -280014D58:lI103|H280014D68 -280014D68:lI105|H280014D78 -280014D78:lI115|H280014D88 -280014D88:lI116|H280014D98 -280014D98:lI114|H280014DA8 -280014DA8:lI121|H280014DB8 -280014DB8:lI32|H280014DC8 -280014DC8:lI115|H280014DD8 -280014DD8:lI101|H280014DE8 -280014DE8:lI110|H280014DF8 -280014DF8:lI100|H280014E08 -280014E08:lI102|H280014E18 -280014E18:lI105|H280014E28 -280014E28:lI108|H280014E38 -280014E38:lI101|H280014E48 -280014E48:lI95|H280014E58 -280014E58:lI100|H280014E68 -280014E68:lI101|H280014E78 -280014E78:lI102|H280014E88 -280014E88:lI101|H280014E98 -280014E98:lI114|H280014EA8 -280014EA8:lI114|H280014EB8 -280014EB8:lI101|H280014EC8 -280014EC8:lI100|H280014ED8 -280014ED8:lI95|H280014EE8 -280014EE8:lI99|H280014EF8 -280014EF8:lI108|H280014F08 -280014F08:lI111|H280014F18 -280014F18:lI115|H280014F28 -280014F28:lI101|H280014F38 -280014F38:lI58|H280014F48 -280014F48:lI126|H280014F58 -280014F58:lI110|H280014F68 -280014F68:lI32|H280014F78 -280014F78:lI32|H280014F88 -280014F88:lI32|H280014F98 -280014F98:lI91|H280014FA8 -280014FA8:lI126|H280014FB8 -280014FB8:lI112|H280014FC8 -280014FC8:lI93|H280014FD8 -280014FD8:lI32|H280014FE8 -280014FE8:lI40|H280014FF8 -280014FF8:lI126|H280015008 -280015008:lI112|H280015018 -280015018:lI58|H280015028 -280015028:lI126|H280015038 -280015038:lI112|H280015048 -280015048:lI41|H280015058 -280015058:lI126|H280015068 -280015068:lI110|H280015078 -280015078:lI32|H280015088 -280015088:lI32|H280015098 -280015098:lI32|H2800150A8 -2800150A8:lI32|H2800150B8 -2800150B8:lI32|H2800150C8 -2800150C8:lI32|H2800150D8 -2800150D8:lI126|H2800150E8 -2800150E8:lI112|N -2800150F8:t1:A3:tag -280015108:t4:AC:error_logger,A3:pid,A4:time,A2:gl -280017B40:t2:I0,N -280025F58:lI67|H280025F68 -280025F68:lI97|H280025F78 -280025F78:lI108|H280025F88 -280025F88:lI108|H280025F98 -280025F98:lI98|H280025FA8 -280025FA8:lI97|H280025FB8 -280025FB8:lI99|H280025FC8 -280025FC8:lI107|N -280025FD8:lI83|H280025FE8 -280025FE8:lI116|H280025FF8 -280025FF8:lI97|H280026008 -280026008:lI116|H280026018 -280026018:lI101|N -280026028:t2:A2:ok,A9:undefined -280026040:t2:A5:error,AA:restarting -280026058:t2:A5:error,A7:running -280026070:t2:A5:error,A9:not_found -280026088:t2:A5:error,A12:simple_one_for_one -2800260A0:t2:AB:supervisors,I0 -2800260B8:t2:A5:specs,I1 -2800260D0:lH2800260E0|N -2800260E0:t2:A7:workers,I0 -2800260F8:t4:I0,I0,I0,I0 -280026120:lI83|H280026130 -280026130:lI117|H280026140 -280026140:lI112|H280026150 -280026150:lI101|H280026160 -280026160:lI114|H280026170 -280026170:lI118|H280026180 -280026180:lI105|H280026190 -280026190:lI115|H2800261A0 -2800261A0:lI111|H2800261B0 -2800261B0:lI114|H2800261C0 -2800261C0:lI32|H2800261D0 -2800261D0:lI114|H2800261E0 -2800261E0:lI101|H2800261F0 -2800261F0:lI99|H280026200 -280026200:lI101|H280026210 -280026210:lI105|H280026220 -280026220:lI118|H280026230 -280026230:lI101|H280026240 -280026240:lI100|H280026250 -280026250:lI32|H280026260 -280026260:lI117|H280026270 -280026270:lI110|H280026280 -280026280:lI101|H280026290 -280026290:lI120|H2800262A0 -2800262A0:lI112|H2800262B0 -2800262B0:lI101|H2800262C0 -2800262C0:lI99|H2800262D0 -2800262D0:lI116|H2800262E0 -2800262E0:lI101|H2800262F0 -2800262F0:lI100|H280026300 -280026300:lI32|H280026310 -280026310:lI109|H280026320 -280026320:lI101|H280026330 -280026330:lI115|H280026340 -280026340:lI115|H280026350 -280026350:lI97|H280026360 -280026360:lI103|H280026370 -280026370:lI101|H280026380 -280026380:lI58|H280026390 -280026390:lI32|H2800263A0 -2800263A0:lI126|H2800263B0 -2800263B0:lI116|H2800263C0 -2800263C0:lI112|H2800263D0 -2800263D0:lI126|H2800263E0 -2800263E0:lI110|N -2800263F0:t2:AC:error_logger,A6:domain -280026408:Mf2:H2800263F0:H280026450,H280026430 -280026430:lA3:otp|N -280026440:t1:A3:tag -280026450:Mf1:H280026440:A5:error -280026470:t3:A4:line,A4:file,A3:mfa -280026490:Mf3:H280026470:I623,H2800264C0,H2800265A0 -2800264C0:lI115|H2800264D0 -2800264D0:lI117|H2800264E0 -2800264E0:lI112|H2800264F0 -2800264F0:lI101|H280026500 -280026500:lI114|H280026510 -280026510:lI118|H280026520 -280026520:lI105|H280026530 -280026530:lI115|H280026540 -280026540:lI111|H280026550 -280026550:lI114|H280026560 -280026560:lI46|H280026570 -280026570:lI101|H280026580 -280026580:lI114|H280026590 -280026590:lI108|N -2800265A0:t3:AA:supervisor,AB:handle_info,I2 -2800265C0:t2:A5:error,AF:already_present -2800265D8:t2:AC:errorContext,A10:child_terminated -2800265F0:Mf0:H280010188: -280026608:t2:AA:supervisor,A10:child_terminated -280026620:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb -280026648:Mf4:H280026620:H2800266C0,H280026680,H280026728,H280026858 -280026680:lA3:otp|H280026690 -280026690:lA4:sasl|N -2800266A0:t3:A3:tag,A4:type,A9:report_cb -2800266C0:Mf3:H2800266A0:AC:error_report,A11:supervisor_report,H2800266F0 -2800266F0:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAQ== -280026718:t1:A5:title -280026728:Mf1:H280026718:H280026748 -280026748:lI83|H280026758 -280026758:lI85|H280026768 -280026768:lI80|H280026778 -280026778:lI69|H280026788 -280026788:lI82|H280026798 -280026798:lI86|H2800267A8 -2800267A8:lI73|H2800267B8 -2800267B8:lI83|H2800267C8 -2800267C8:lI79|H2800267D8 -2800267D8:lI82|H2800267E8 -2800267E8:lI32|H2800267F8 -2800267F8:lI82|H280026808 -280026808:lI69|H280026818 -280026818:lI80|H280026828 -280026828:lI79|H280026838 -280026838:lI82|H280026848 -280026848:lI84|N -280026858:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAg== -280026880:t3:A4:line,A4:file,A3:mfa -2800268A0:Mf3:H280026880:I742,H2800268D0,H2800269B0 -2800268D0:lI115|H2800268E0 -2800268E0:lI117|H2800268F0 -2800268F0:lI112|H280026900 -280026900:lI101|H280026910 -280026910:lI114|H280026920 -280026920:lI118|H280026930 -280026930:lI105|H280026940 -280026940:lI115|H280026950 -280026950:lI111|H280026960 -280026960:lI114|H280026970 -280026970:lI46|H280026980 -280026980:lI101|H280026990 -280026990:lI114|H2800269A0 -2800269A0:lI108|N -2800269B0:t3:AA:supervisor,AA:do_restart,I3 -2800269D0:t3:A4:line,A4:file,A3:mfa -2800269F0:Mf3:H2800269D0:I754,H280026A20,H280026B00 -280026A20:lI115|H280026A30 -280026A30:lI117|H280026A40 -280026A40:lI112|H280026A50 -280026A50:lI101|H280026A60 -280026A60:lI114|H280026A70 -280026A70:lI118|H280026A80 -280026A80:lI105|H280026A90 -280026A90:lI115|H280026AA0 -280026AA0:lI111|H280026AB0 -280026AB0:lI114|H280026AC0 -280026AC0:lI46|H280026AD0 -280026AD0:lI101|H280026AE0 -280026AE0:lI114|H280026AF0 -280026AF0:lI108|N -280026B00:t3:AA:supervisor,AA:do_restart,I3 -280026B20:t3:A4:line,A4:file,A3:mfa -280026B40:Mf3:H280026B20:I757,H280026B70,H280026C50 -280026B70:lI115|H280026B80 -280026B80:lI117|H280026B90 -280026B90:lI112|H280026BA0 -280026BA0:lI101|H280026BB0 -280026BB0:lI114|H280026BC0 -280026BC0:lI118|H280026BD0 -280026BD0:lI105|H280026BE0 -280026BE0:lI115|H280026BF0 -280026BF0:lI111|H280026C00 -280026C00:lI114|H280026C10 -280026C10:lI46|H280026C20 -280026C20:lI101|H280026C30 -280026C30:lI114|H280026C40 -280026C40:lI108|N -280026C50:t3:AA:supervisor,AA:do_restart,I3 -280026C70:t2:A6:reason,A1D:reached_max_restart_intensity -280026C88:t2:AC:errorContext,A8:shutdown -280026CA0:t2:AA:supervisor,A8:shutdown -280026CB8:t3:A4:line,A4:file,A3:mfa -280026CD8:Mf3:H280026CB8:I811,H280026D08,H280026DE8 -280026D08:lI115|H280026D18 -280026D18:lI117|H280026D28 -280026D28:lI112|H280026D38 -280026D38:lI101|H280026D48 -280026D48:lI114|H280026D58 -280026D58:lI118|H280026D68 -280026D68:lI105|H280026D78 -280026D78:lI115|H280026D88 -280026D88:lI111|H280026D98 -280026D98:lI114|H280026DA8 -280026DA8:lI46|H280026DB8 -280026DB8:lI101|H280026DC8 -280026DC8:lI114|H280026DD8 -280026DD8:lI108|N -280026DE8:t3:AA:supervisor,A7:restart,I2 -280026E08:t2:AC:errorContext,AB:start_error -280026E20:t2:AA:supervisor,AB:start_error -280026E38:t3:A4:line,A4:file,A3:mfa -280026E58:Mf3:H280026E38:I838,H280026E88,H280026F68 -280026E88:lI115|H280026E98 -280026E98:lI117|H280026EA8 -280026EA8:lI112|H280026EB8 -280026EB8:lI101|H280026EC8 -280026EC8:lI114|H280026ED8 -280026ED8:lI118|H280026EE8 -280026EE8:lI105|H280026EF8 -280026EF8:lI115|H280026F08 -280026F08:lI111|H280026F18 -280026F18:lI114|H280026F28 -280026F28:lI46|H280026F38 -280026F38:lI101|H280026F48 -280026F48:lI114|H280026F58 -280026F58:lI108|N -280026F68:t3:AA:supervisor,A7:restart,I3 -280026F88:t3:A4:line,A4:file,A3:mfa -280026FA8:Mf3:H280026F88:I852,H280026FD8,H2800270B8 -280026FD8:lI115|H280026FE8 -280026FE8:lI117|H280026FF8 -280026FF8:lI112|H280027008 -280027008:lI101|H280027018 -280027018:lI114|H280027028 -280027028:lI118|H280027038 -280027038:lI105|H280027048 -280027048:lI115|H280027058 -280027058:lI111|H280027068 -280027068:lI114|H280027078 -280027078:lI46|H280027088 -280027088:lI101|H280027098 -280027098:lI114|H2800270A8 -2800270A8:lI108|N -2800270B8:t3:AA:supervisor,A7:restart,I3 -2800270D8:t2:AA:restarting,A9:undefined -2800270F0:t2:AC:errorContext,AE:shutdown_error -280027108:t2:AA:supervisor,AE:shutdown_error -280027120:t3:A4:line,A4:file,A3:mfa -280027140:Mf3:H280027120:I911,H280027170,H280027250 -280027170:lI115|H280027180 -280027180:lI117|H280027190 -280027190:lI112|H2800271A0 -2800271A0:lI101|H2800271B0 -2800271B0:lI114|H2800271C0 -2800271C0:lI118|H2800271D0 -2800271D0:lI105|H2800271E0 -2800271E0:lI115|H2800271F0 -2800271F0:lI111|H280027200 -280027200:lI114|H280027210 -280027210:lI46|H280027220 -280027220:lI101|H280027230 -280027230:lI114|H280027240 -280027240:lI108|N -280027250:t3:AA:supervisor,AC:do_terminate,I2 -280027270:t2:N,H280027288 -280027288:Mf0:H280010188: -2800272A0:t4:A8:strategy,A6:period,A9:intensity,AD:auto_shutdown -2800272C8:Mf4:H2800272A0:AB:one_for_one,I5,I1,A5:never -280027300:t2:A7:restart,A4:type -280027318:Mf2:H280027300:A9:permanent,A6:worker -280027340:t2:AF:bad_combination,H280027358 -280027358:lH280027378|H280027368 -280027368:lH280027390|N -280027378:t2:AD:auto_shutdown,A5:never -280027390:t2:AB:significant,A4:true -2800273A8:t2:AF:bad_combination,H2800273C0 -2800273C0:lH2800273E0|H2800273D0 -2800273D0:lH2800273F8|N -2800273E0:t2:A7:restart,A9:permanent -2800273F8:t2:AB:significant,A4:true -280027410:t2:AA:supervisor,A8:progress -280027428:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb -280027450:Mf4:H280027428:H2800274C8,H280027488,H280027530,H280027640 -280027488:lA3:otp|H280027498 -280027498:lA4:sasl|N -2800274A8:t3:A3:tag,A4:type,A9:report_cb -2800274C8:Mf3:H2800274A8:AB:info_report,A8:progress,H2800274F8 -2800274F8:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAQ== -280027520:t1:A5:title -280027530:Mf1:H280027520:H280027550 -280027550:lI80|H280027560 -280027560:lI82|H280027570 -280027570:lI79|H280027580 -280027580:lI71|H280027590 -280027590:lI82|H2800275A0 -2800275A0:lI69|H2800275B0 -2800275B0:lI83|H2800275C0 -2800275C0:lI83|H2800275D0 -2800275D0:lI32|H2800275E0 -2800275E0:lI82|H2800275F0 -2800275F0:lI69|H280027600 -280027600:lI80|H280027610 -280027610:lI79|H280027620 -280027620:lI82|H280027630 -280027630:lI84|N -280027640:E1C:g3F3CnN1cGVydmlzb3J3CmZvcm1hdF9sb2dhAg== -280027668:t3:A4:line,A4:file,A3:mfa -280027688:Mf3:H280027668:I1563,H2800276B8,H280027798 -2800276B8:lI115|H2800276C8 -2800276C8:lI117|H2800276D8 -2800276D8:lI112|H2800276E8 -2800276E8:lI101|H2800276F8 -2800276F8:lI114|H280027708 -280027708:lI118|H280027718 -280027718:lI105|H280027728 -280027728:lI115|H280027738 -280027738:lI111|H280027748 -280027748:lI114|H280027758 -280027758:lI46|H280027768 -280027768:lI101|H280027778 -280027778:lI114|H280027788 -280027788:lI108|N -280027798:t3:AA:supervisor,AF:report_progress,I2 -2800277B8:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -2800277E0:Mf4:H2800277B8:A9:unlimited,A9:unlimited,A4:utf8,A5:false -280027818:lI83|H280027828 -280027828:lI116|H280027838 -280027838:lI97|H280027848 -280027848:lI114|H280027858 -280027858:lI116|H280027868 -280027868:lI101|H280027878 -280027878:lI100|H280027888 -280027888:lI58|N -280027898:lI46|N -2800278A8:lI83|H2800278B8 -2800278B8:lI117|H2800278C8 -2800278C8:lI112|H2800278D8 -2800278D8:lI101|H2800278E8 -2800278E8:lI114|H2800278F8 -2800278F8:lI118|H280027908 -280027908:lI105|H280027918 -280027918:lI115|H280027928 -280027928:lI111|H280027938 -280027938:lI114|H280027948 -280027948:lI58|H280027958 -280027958:lI32|N -280027968:lH280027978|N -280027978:lI46|N -280027988:lI46|H280027998 -280027998:lI32|H2800279A8 -2800279A8:lI82|H2800279B8 -2800279B8:lI101|H2800279C8 -2800279C8:lI97|H2800279D8 -2800279D8:lI115|H2800279E8 -2800279E8:lI111|H2800279F8 -2800279F8:lI110|H280027A08 -280027A08:lI58|H280027A18 -280027A18:lI32|N -280027A28:lI46|H280027A38 -280027A38:lI32|H280027A48 -280027A48:lI67|H280027A58 -280027A58:lI111|H280027A68 -280027A68:lI110|H280027A78 -280027A78:lI116|H280027A88 -280027A88:lI101|H280027A98 -280027A98:lI120|H280027AA8 -280027AA8:lI116|H280027AB8 -280027AB8:lI58|H280027AC8 -280027AC8:lI32|N -280027AD8:lI79|H280027AE8 -280027AE8:lI102|H280027AF8 -280027AF8:lI102|H280027B08 -280027B08:lI101|H280027B18 -280027B18:lI110|H280027B28 -280027B28:lI100|H280027B38 -280027B38:lI101|H280027B48 -280027B48:lI114|H280027B58 -280027B58:lI58|N -280027B68:lH280027B78|N -280027B78:lI126|H280027B88 -280027B88:lI110|N -280027B98:lI32|H280027BA8 -280027BA8:lI32|H280027BB8 -280027BB8:lI32|H280027BC8 -280027BC8:lI32|H280027BD8 -280027BD8:lI115|H280027BE8 -280027BE8:lI116|H280027BF8 -280027BF8:lI97|H280027C08 -280027C08:lI114|H280027C18 -280027C18:lI116|H280027C28 -280027C28:lI101|H280027C38 -280027C38:lI100|H280027C48 -280027C48:lI58|H280027C58 -280027C58:lI32|N -280027C68:lI126|H280027C78 -280027C78:lI110|N -280027C88:lI32|H280027C98 -280027C98:lI32|H280027CA8 -280027CA8:lI32|H280027CB8 -280027CB8:lI32|H280027CC8 -280027CC8:lI115|H280027CD8 -280027CD8:lI117|H280027CE8 -280027CE8:lI112|H280027CF8 -280027CF8:lI101|H280027D08 -280027D08:lI114|H280027D18 -280027D18:lI118|H280027D28 -280027D28:lI105|H280027D38 -280027D38:lI115|H280027D48 -280027D48:lI111|H280027D58 -280027D58:lI114|H280027D68 -280027D68:lI58|H280027D78 -280027D78:lI32|N -280027D88:lI32|H280027D98 -280027D98:lI32|H280027DA8 -280027DA8:lI32|H280027DB8 -280027DB8:lI32|H280027DC8 -280027DC8:lI111|H280027DD8 -280027DD8:lI102|H280027DE8 -280027DE8:lI102|H280027DF8 -280027DF8:lI101|H280027E08 -280027E08:lI110|H280027E18 -280027E18:lI100|H280027E28 -280027E28:lI101|H280027E38 -280027E38:lI114|H280027E48 -280027E48:lI58|H280027E58 -280027E58:lI32|N -280027E68:lI32|H280027E78 -280027E78:lI32|H280027E88 -280027E88:lI32|H280027E98 -280027E98:lI32|H280027EA8 -280027EA8:lI114|H280027EB8 -280027EB8:lI101|H280027EC8 -280027EC8:lI97|H280027ED8 -280027ED8:lI115|H280027EE8 -280027EE8:lI111|H280027EF8 -280027EF8:lI110|H280027F08 -280027F08:lI58|H280027F18 -280027F18:lI32|N -280027F28:lI32|H280027F38 -280027F38:lI32|H280027F48 -280027F48:lI32|H280027F58 -280027F58:lI32|H280027F68 -280027F68:lI101|H280027F78 -280027F78:lI114|H280027F88 -280027F88:lI114|H280027F98 -280027F98:lI111|H280027FA8 -280027FA8:lI114|H280027FB8 -280027FB8:lI67|H280027FC8 -280027FC8:lI111|H280027FD8 -280027FD8:lI110|H280027FE8 -280027FE8:lI116|H280027FF8 -280027FF8:lI101|H280028008 -280028008:lI120|H280028018 -280028018:lI116|H280028028 -280028028:lI58|H280028038 -280028038:lI32|N -280028048:lI32|H280028058 -280028058:lI126|H280028068 -280028068:lI115|H280028078 -280028078:lI32|H280028088 -280028088:lI105|H280028098 -280028098:lI100|H2800280A8 -2800280A8:lI61|H2800280B8 -2800280B8:lI126|H2800280C8 -2800280C8:lI119|H2800280D8 -2800280D8:lI44|H2800280E8 -2800280E8:lI110|H2800280F8 -2800280F8:lI98|H280028108 -280028108:lI95|H280028118 -280028118:lI99|H280028128 -280028128:lI104|H280028138 -280028138:lI105|H280028148 -280028148:lI108|H280028158 -280028158:lI100|H280028168 -280028168:lI114|H280028178 -280028178:lI101|H280028188 -280028188:lI110|H280028198 -280028198:lI61|H2800281A8 -2800281A8:lI126|H2800281B8 -2800281B8:lI119|H2800281C8 -2800281C8:lI46|N -2800281D8:lI32|H2800281E8 -2800281E8:lI126|H2800281F8 -2800281F8:lI115|H280028208 -280028208:lI32|H280028218 -280028218:lI105|H280028228 -280028228:lI100|H280028238 -280028238:lI61|H280028248 -280028248:lI126|H280028258 -280028258:lI119|H280028268 -280028268:lI44|H280028278 -280028278:lI112|H280028288 -280028288:lI105|H280028298 -280028298:lI100|H2800282A8 -2800282A8:lI61|H2800282B8 -2800282B8:lI126|H2800282C8 -2800282C8:lI119|H2800282D8 -2800282D8:lI46|N -2800282E8:lI112|N -2800282F8:lI80|N -280028308:lI48|N -280028318:lI116|N -280028328:t2:A7:mapsets,H280028340 -280028340:Mf0:H280010188: -280028358:t2:A4:maps,H280028370 -280028370:Mf0:H280010188: -280028388:lH280028398|N -280028398:t2:A4:init,I1 -2800283B0:t3:A4:line,A4:file,A3:mfa -2800283D0:Mf3:H2800283B0:I1026,H280028400,H2800284E0 -280028400:lI115|H280028410 -280028410:lI117|H280028420 -280028420:lI112|H280028430 -280028430:lI101|H280028440 -280028440:lI114|H280028450 -280028450:lI118|H280028460 -280028460:lI105|H280028470 -280028470:lI115|H280028480 -280028480:lI111|H280028490 -280028490:lI114|H2800284A0 -2800284A0:lI46|H2800284B0 -2800284B0:lI101|H2800284C0 -2800284C0:lI114|H2800284D0 -2800284D0:lI108|N -2800284E0:t3:AA:supervisor,A1A:terminate_dynamic_children,I1 -280028500:t3:A4:line,A4:file,A3:mfa -280028520:Mf3:H280028500:I398,H280028550,H280028630 -280028550:lI115|H280028560 -280028560:lI117|H280028570 -280028570:lI112|H280028580 -280028580:lI101|H280028590 -280028590:lI114|H2800285A0 -2800285A0:lI118|H2800285B0 -2800285B0:lI105|H2800285C0 -2800285C0:lI115|H2800285D0 -2800285D0:lI111|H2800285E0 -2800285E0:lI114|H2800285F0 -2800285F0:lI46|H280028600 -280028600:lI101|H280028610 -280028610:lI114|H280028620 -280028620:lI108|N -280028630:t3:AA:supervisor,AE:start_children,I2 -280028650:lI108|N -280028660:lI114|H280028650 -280028670:lI101|H280028660 -280028680:lI46|H280028670 -280028690:lI114|H280028680 -2800286A0:lI111|H280028690 -2800286B0:lI115|H2800286A0 -2800286C0:lI105|H2800286B0 -2800286D0:lI118|H2800286C0 -2800286E0:lI114|H2800286D0 -2800286F0:lI101|H2800286E0 -280028700:lI112|H2800286F0 -280028710:lI117|H280028700 -280028720:lI115|H280028710 -280028730:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAACAAAAAHcKc3VwZXJ2aXNvcmECYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -280028758:E4E:g3AAAABMA3oLCyY6L4XTypzaMLAOL78AAAADAAAAAHcKc3VwZXJ2aXNvcmEDYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -280028780:t2:A5:label,A6:report -280028798:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAAEAAAAAHcKc3VwZXJ2aXNvcmEEYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -2800287C0:E4E:g3AAAABMAnoLCyY6L4XTypzaMLAOL78AAAAIAAAAAHcKc3VwZXJ2aXNvcmEIYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -2800287E8:t4:A8:strategy,A6:period,A9:intensity,AD:auto_shutdown -280028810:t7:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules,AB:significant -280028850:E4E:g3AAAABMAXoLCyY6L4XTypzaMLAOL78AAAALAAAAAHcKc3VwZXJ2aXNvcmELYgPQWFlYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -280028878:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -280042AD8:lA5:flush|N -280042AE8:t2:A5:error,A7:timeout -280042B00:lA4:link|H280042B10 -280042B10:lA7:monitor|N -280042B20:lI65|H280042B30 -280042B30:lI114|H280042B40 -280042B40:lI103|H280042B50 -280042B50:lI117|H280042B60 -280042B60:lI109|H280042B70 -280042B70:lI101|H280042B80 -280042B80:lI110|H280042B90 -280042B90:lI116|H280042BA0 -280042BA0:lI95|H280042BB0 -280042BB0:lI95|N -280042BC0:t3:A8:proc_lib,A6:init_p,I5 -280042BE0:t3:A9:gen_event,A7:init_it,I6 -280042C00:Mf0:H280010188: -280042C18:t2:A8:proc_lib,A5:crash -280042C30:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb -280042C58:Mf4:H280042C30:H280042CC8,H280042C90,H280042D00,H280042DE0 -280042C90:lA3:otp|H280042CA0 -280042CA0:lA4:sasl|N -280042CB0:t2:A3:tag,A4:type -280042CC8:Mf2:H280042CB0:AC:error_report,AC:crash_report -280042CF0:t1:A5:title -280042D00:Mf1:H280042CF0:H280042D20 -280042D20:lI67|H280042D30 -280042D30:lI82|H280042D40 -280042D40:lI65|H280042D50 -280042D50:lI83|H280042D60 -280042D60:lI72|H280042D70 -280042D70:lI32|H280042D80 -280042D80:lI82|H280042D90 -280042D90:lI69|H280042DA0 -280042DA0:lI80|H280042DB0 -280042DB0:lI79|H280042DC0 -280042DC0:lI82|H280042DD0 -280042DD0:lI84|N -280042DE0:E19:g3F3CHByb2NfbGlidwlyZXBvcnRfY2JhAg== -280042E08:t3:A4:line,A4:file,A3:mfa -280042E28:Mf3:H280042E08:I584,H280042E58,H280042F18 -280042E58:lI112|H280042E68 -280042E68:lI114|H280042E78 -280042E78:lI111|H280042E88 -280042E88:lI99|H280042E98 -280042E98:lI95|H280042EA8 -280042EA8:lI108|H280042EB8 -280042EB8:lI105|H280042EC8 -280042EC8:lI98|H280042ED8 -280042ED8:lI46|H280042EE8 -280042EE8:lI101|H280042EF8 -280042EF8:lI114|H280042F08 -280042F08:lI108|N -280042F18:t3:A8:proc_lib,AC:crash_report,I4 -280042F38:t2:A9:ancestors,N -280042F50:t2:AA:dictionary,N -280042F68:t2:A9:trap_exit,A5:false -280042F80:t2:AF:registered_name,N -280042F98:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -280042FC0:Mf4:H280042F98:A9:unlimited,A9:unlimited,A4:utf8,A5:false -280042FF8:lI32|H280043008 -280043008:lI32|N -280043018:lI32|N -280043028:lI126|H280043038 -280043038:lI116|H280043048 -280043048:lI115|N -280043058:lI126|H280043068 -280043068:lI115|H280043078 -280043078:lI99|H280043088 -280043088:lI114|H280043098 -280043098:lI97|H2800430A8 -2800430A8:lI115|H2800430B8 -2800430B8:lI104|H2800430C8 -2800430C8:lI101|H2800430D8 -2800430D8:lI114|H2800430E8 -2800430E8:lI58|N -2800430F8:lI48|N -280043108:lI110|H280043118 -280043118:lI101|H280043128 -280043128:lI105|H280043138 -280043138:lI103|H280043148 -280043148:lI104|H280043158 -280043158:lI98|H280043168 -280043168:lI111|H280043178 -280043178:lI117|H280043188 -280043188:lI114|H280043198 -280043198:lI115|H2800431A8 -2800431A8:lI58|H2800431B8 -2800431B8:lI32|H2800431C8 -2800431C8:lI126|N -2800431D8:lI110|H2800431E8 -2800431E8:lI101|H2800431F8 -2800431F8:lI105|H280043208 -280043208:lI103|H280043218 -280043218:lI104|H280043228 -280043228:lI98|H280043238 -280043238:lI111|H280043248 -280043248:lI117|H280043258 -280043258:lI114|H280043268 -280043268:lI115|H280043278 -280043278:lI58|N -280043288:lI110|H280043298 -280043298:lI101|H2800432A8 -2800432A8:lI105|H2800432B8 -2800432B8:lI103|H2800432C8 -2800432C8:lI104|H2800432D8 -2800432D8:lI98|H2800432E8 -2800432E8:lI111|H2800432F8 -2800432F8:lI117|H280043308 -280043308:lI114|H280043318 -280043318:lI58|N -280043328:lI58|H280043338 -280043338:lI32|N -280043348:lI32|H280043358 -280043358:lI32|H280043368 -280043368:lI32|H280043378 -280043378:lI32|N -280043388:lI105|H280043398 -280043398:lI110|H2800433A8 -2800433A8:lI105|H2800433B8 -2800433B8:lI116|H2800433C8 -2800433C8:lI105|H2800433D8 -2800433D8:lI97|H2800433E8 -2800433E8:lI108|H2800433F8 -2800433F8:lI32|H280043408 -280043408:lI99|H280043418 -280043418:lI97|H280043428 -280043428:lI108|H280043438 -280043438:lI108|H280043448 -280043448:lI58|H280043458 -280043458:lI32|N -280043468:lI112|N -280043478:lI80|N -280043488:lI59|H280043498 -280043498:lI32|N -2800434A8:lI44|H2800434B8 -2800434B8:lI32|N -2800434C8:lI116|N -2800434D8:lI10|N -2800434E8:lI108|N -2800434F8:lI114|H2800434E8 -280043508:lI101|H2800434F8 -280043518:lI46|H280043508 -280043528:lI98|H280043518 -280043538:lI105|H280043528 -280043548:lI108|H280043538 -280043558:lI95|H280043548 -280043568:lI99|H280043558 -280043578:lI111|H280043568 -280043588:lI114|H280043578 -280043598:lI112|H280043588 -2800435A8:t2:A5:label,A6:report -2800435C0:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -2800435E8:E4C:g3AAAABKAWgua8tdqRXVh3ClT3T2+hwAAAAAAAAAAHcIcHJvY19saWJhAGIDQXNeWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280043610:E4C:g3AAAABKA2gua8tdqRXVh3ClT3T2+hwAAAABAAAAAHcIcHJvY19saWJhAWIDQXNeWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280043650:t2:A5:local,AA:kernel_sup -280043668:t3:A8:strategy,A6:period,A9:intensity -280043688:Mf3:H280043668:AB:one_for_one,I3600,I4 -2800436B8:lH280043700|N -2800436C8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043700:Mf6:H2800436C8:AD:file_server_2,A9:permanent,I2000,H280043788,A6:worker,H280043748 -280043748:lA4:file|H280043758 -280043758:lAB:file_server|H280043768 -280043768:lAE:file_io_server|H280043778 -280043778:lA9:prim_file|N -280043788:t3:AB:file_server,AA:start_link,N -2800437A8:lH2800437B8|N -2800437B8:lI109|H2800437C8 -2800437C8:lI105|H2800437D8 -2800437D8:lI110|H2800437E8 -2800437E8:lI105|H2800437F8 -2800437F8:lI109|H280043808 -280043808:lI97|H280043818 -280043818:lI108|N -280043828:lH2800438B0|H280043838 -280043838:lH280043960|H280043848 -280043848:lH280043A10|H280043858 -280043858:lH280043AC0|H280043868 -280043868:lH280043B70|N -280043878:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800438B0:Mf6:H280043878:A4:user,A9:temporary,I2000,H280043908,AA:supervisor,H2800438F8 -2800438F8:lA8:user_sup|N -280043908:t3:A8:user_sup,A5:start,N -280043928:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043960:Mf6:H280043928:AA:logger_sup,A9:permanent,A8:infinity,H2800439B8,AA:supervisor,H2800439A8 -2800439A8:lAA:logger_sup|N -2800439B8:t3:AA:logger_sup,AA:start_link,N -2800439D8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043A10:Mf6:H2800439D8:AD:kernel_config,A9:permanent,I2000,H280043A68,A6:worker,H280043A58 -280043A58:lAD:kernel_config|N -280043A68:t3:AD:kernel_config,AA:start_link,N -280043A88:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043AC0:Mf6:H280043A88:AB:kernel_refc,A9:permanent,I2000,H280043B18,A6:worker,H280043B08 -280043B08:lAB:kernel_refc|N -280043B18:t3:AB:kernel_refc,AA:start_link,N -280043B38:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043B70:Mf6:H280043B38:AF:kernel_safe_sup,A9:permanent,A8:infinity,H280043BC8,AA:supervisor,H280043BB8 -280043BB8:lA6:kernel|N -280043BC8:t3:AA:supervisor,AA:start_link,H280043BE8 -280043BE8:lH280043C18|H280043BF8 -280043BF8:lA6:kernel|H280043C08 -280043C08:lA4:safe|N -280043C18:t2:A5:local,AF:kernel_safe_sup -280043C30:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043C68:Mf6:H280043C30:A7:on_load,A9:transient,I2000,H280043CC0,A6:worker,H280043CB0 -280043CB0:lA6:kernel|N -280043CC0:t3:A8:proc_lib,AA:start_link,H280043CE0 -280043CE0:lA6:kernel|H280043CF0 -280043CF0:lA4:init|H280043D00 -280043D00:lH280043D10|N -280043D10:lA7:on_load|N -280043D20:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043D58:Mf6:H280043D20:AE:standard_error,A9:temporary,I2000,H280043DB0,AA:supervisor,H280043DA0 -280043DA0:lAE:standard_error|N -280043DB0:t3:AE:standard_error,AA:start_link,N -280043DD0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043E08:Mf6:H280043DD0:AB:code_server,A9:permanent,I2000,H280043E60,A6:worker,H280043E50 -280043E50:lA4:code|N -280043E60:t3:A4:code,AA:start_link,N -280043E80:t3:A8:strategy,A6:period,A9:intensity -280043EA0:Mf3:H280043E80:AB:one_for_all,I1,I0 -280043ED0:t2:A2:ok,A5:false -280043EE8:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043F20:Mf6:H280043EE8:A11:erl_signal_server,A9:permanent,I2000,H280043F68,A6:worker,A7:dynamic -280043F68:t3:A9:gen_event,AA:start_link,H280043F88 -280043F88:lH280043F98|N -280043F98:t2:A5:local,A11:erl_signal_server -280043FB0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280043FE8:Mf6:H280043FB0:A7:inet_db,A9:permanent,I2000,H280044040,A6:worker,H280044030 -280044030:lA7:inet_db|N -280044040:t3:A7:inet_db,AA:start_link,N -280044060:lH2800440B8|H280044070 -280044070:lH280044168|N -280044080:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800440B8:Mf6:H280044080:A7:net_sup,A9:permanent,A8:infinity,H280044110,AA:supervisor,H280044100 -280044100:lA10:erl_distribution|N -280044110:t3:A10:erl_distribution,AA:start_link,N -280044130:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044168:Mf6:H280044130:AC:global_group,A9:permanent,I2000,H2800441C0,A6:worker,H2800441B0 -2800441B0:lAC:global_group|N -2800441C0:t3:AC:global_group,AA:start_link,N -2800441E0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044218:Mf6:H2800441E0:A12:global_name_server,A9:permanent,I2000,H280044270,A6:worker,H280044260 -280044260:lA6:global|N -280044270:t3:A6:global,AA:start_link,N -280044290:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800442C8:Mf6:H280044290:A3:rex,A9:permanent,I2000,H280044320,A6:worker,H280044310 -280044310:lA3:rpc|N -280044320:t3:A3:rpc,AA:start_link,N -280044340:lH280044388|N -280044350:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044388:Mf6:H280044350:A7:dist_ac,A9:permanent,I2000,H2800443E0,A6:worker,H2800443D0 -2800443D0:lA7:dist_ac|N -2800443E0:t3:A7:dist_ac,AA:start_link,N -280044400:t2:A2:ok,A4:true -280044418:Mf0:H280010188: -280044430:lAF:erl_boot_server|N -280044440:lH280044498|H280044450 -280044450:lH280044548|N -280044460:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044498:Mf6:H280044460:AF:disk_log_server,A9:permanent,I2000,H2800444F0,A6:worker,H2800444E0 -2800444E0:lAF:disk_log_server|N -2800444F0:t3:AF:disk_log_server,AA:start_link,N -280044510:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044548:Mf6:H280044510:AC:disk_log_sup,A9:permanent,I1000,H2800445A0,AA:supervisor,H280044590 -280044590:lAC:disk_log_sup|N -2800445A0:t3:AC:disk_log_sup,AA:start_link,N -2800445C0:lH280044608|N -2800445D0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044608:Mf6:H2800445D0:A2:pg,A9:permanent,I1000,H280044660,A6:worker,H280044650 -280044650:lA2:pg|N -280044660:t3:A2:pg,AA:start_link,N -280044680:lH2800446C8|N -280044690:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800446C8:Mf6:H280044690:AC:timer_server,A9:permanent,I1000,H280044720,A6:worker,H280044710 -280044710:lA5:timer|N -280044720:t3:A5:timer,AA:start_link,N -280044740:lH280044788|N -280044750:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280044788:Mf6:H280044750:A12:erl_compile_server,A9:permanent,I2000,H2800447E0,A6:worker,H2800447D0 -2800447D0:lA12:erl_compile_server|N -2800447E0:t3:A12:erl_compile_server,AA:start_link,N -280044800:lI68|H280044810 -280044810:lI105|H280044820 -280044820:lI115|H280044830 -280044830:lI116|H280044840 -280044840:lI114|H280044850 -280044850:lI105|H280044860 -280044860:lI98|H280044870 -280044870:lI117|H280044880 -280044880:lI116|H280044890 -280044890:lI105|H2800448A0 -2800448A0:lI111|H2800448B0 -2800448B0:lI110|H2800448C0 -2800448C0:lI32|H2800448D0 -2800448D0:lI110|H2800448E0 -2800448E0:lI111|H2800448F0 -2800448F0:lI116|H280044900 -280044900:lI32|H280044910 -280044910:lI99|H280044920 -280044920:lI104|H280044930 -280044930:lI97|H280044940 -280044940:lI110|H280044950 -280044950:lI103|H280044960 -280044960:lI101|H280044970 -280044970:lI100|H280044980 -280044980:lI58|H280044990 -280044990:lI32|H2800449A0 -2800449A0:lI78|H2800449B0 -2800449B0:lI111|H2800449C0 -2800449C0:lI116|H2800449D0 -2800449D0:lI32|H2800449E0 -2800449E0:lI97|H2800449F0 -2800449F0:lI108|H280044A00 -280044A00:lI108|H280044A10 -280044A10:lI111|H280044A20 -280044A20:lI119|H280044A30 -280044A30:lI101|H280044A40 -280044A40:lI100|H280044A50 -280044A50:lI32|H280044A60 -280044A60:lI116|H280044A70 -280044A70:lI111|H280044A80 -280044A80:lI32|H280044A90 -280044A90:lI114|H280044AA0 -280044AA0:lI101|H280044AB0 -280044AB0:lI109|H280044AC0 -280044AC0:lI111|H280044AD0 -280044AD0:lI118|H280044AE0 -280044AE0:lI101|H280044AF0 -280044AF0:lI32|H280044B00 -280044B00:lI116|H280044B10 -280044B10:lI104|H280044B20 -280044B20:lI101|H280044B30 -280044B30:lI32|H280044B40 -280044B40:lI100|H280044B50 -280044B50:lI105|H280044B60 -280044B60:lI115|H280044B70 -280044B70:lI116|H280044B80 -280044B80:lI114|H280044B90 -280044B90:lI105|H280044BA0 -280044BA0:lI98|H280044BB0 -280044BB0:lI117|H280044BC0 -280044BC0:lI116|H280044BD0 -280044BD0:lI105|H280044BE0 -280044BE0:lI111|H280044BF0 -280044BF0:lI110|H280044C00 -280044C00:lI32|H280044C10 -280044C10:lI112|H280044C20 -280044C20:lI97|H280044C30 -280044C30:lI114|H280044C40 -280044C40:lI97|H280044C50 -280044C50:lI109|H280044C60 -280044C60:lI101|H280044C70 -280044C70:lI116|H280044C80 -280044C80:lI101|H280044C90 -280044C90:lI114|H280044CA0 -280044CA0:lI46|N -280044CB0:t2:A5:error,H280044CC8 -280044CC8:t2:A18:distribution_not_changed,H280044CE0 -280044CE0:lI78|H280044CF0 -280044CF0:lI111|H280044D00 -280044D00:lI116|H280044D10 -280044D10:lI32|H280044D20 -280044D20:lI97|H280044D30 -280044D30:lI108|H280044D40 -280044D40:lI108|H280044D50 -280044D50:lI111|H280044D60 -280044D60:lI119|H280044D70 -280044D70:lI101|H280044D80 -280044D80:lI100|H280044D90 -280044D90:lI32|H280044DA0 -280044DA0:lI116|H280044DB0 -280044DB0:lI111|H280044DC0 -280044DC0:lI32|H280044DD0 -280044DD0:lI114|H280044DE0 -280044DE0:lI101|H280044DF0 -280044DF0:lI109|H280044E00 -280044E00:lI111|H280044E10 -280044E10:lI118|H280044E20 -280044E20:lI101|H280044E30 -280044E30:lI32|H280044E40 -280044E40:lI116|H280044E50 -280044E50:lI104|H280044E60 -280044E60:lI101|H280044E70 -280044E70:lI32|H280044E80 -280044E80:lI39|H280044E90 -280044E90:lI100|H280044EA0 -280044EA0:lI105|H280044EB0 -280044EB0:lI115|H280044EC0 -280044EC0:lI116|H280044ED0 -280044ED0:lI114|H280044EE0 -280044EE0:lI105|H280044EF0 -280044EF0:lI98|H280044F00 -280044F00:lI117|H280044F10 -280044F10:lI116|H280044F20 -280044F20:lI101|H280044F30 -280044F30:lI100|H280044F40 -280044F40:lI39|H280044F50 -280044F50:lI32|H280044F60 -280044F60:lI112|H280044F70 -280044F70:lI97|H280044F80 -280044F80:lI114|H280044F90 -280044F90:lI97|H280044FA0 -280044FA0:lI109|H280044FB0 -280044FB0:lI101|H280044FC0 -280044FC0:lI116|H280044FD0 -280044FD0:lI101|H280044FE0 -280044FE0:lI114|N -280044FF0:lI68|H280045000 -280045000:lI105|H280045010 -280045010:lI115|H280045020 -280045020:lI116|H280045030 -280045030:lI114|H280045040 -280045040:lI105|H280045050 -280045050:lI98|H280045060 -280045060:lI117|H280045070 -280045070:lI116|H280045080 -280045080:lI105|H280045090 -280045090:lI111|H2800450A0 -2800450A0:lI110|H2800450B0 -2800450B0:lI32|H2800450C0 -2800450C0:lI110|H2800450D0 -2800450D0:lI111|H2800450E0 -2800450E0:lI116|H2800450F0 -2800450F0:lI32|H280045100 -280045100:lI99|H280045110 -280045110:lI104|H280045120 -280045120:lI97|H280045130 -280045130:lI110|H280045140 -280045140:lI103|H280045150 -280045150:lI101|H280045160 -280045160:lI100|H280045170 -280045170:lI58|H280045180 -280045180:lI32|H280045190 -280045190:lI78|H2800451A0 -2800451A0:lI111|H2800451B0 -2800451B0:lI116|H2800451C0 -2800451C0:lI32|H2800451D0 -2800451D0:lI97|H2800451E0 -2800451E0:lI108|H2800451F0 -2800451F0:lI108|H280045200 -280045200:lI111|H280045210 -280045210:lI119|H280045220 -280045220:lI101|H280045230 -280045230:lI100|H280045240 -280045240:lI32|H280045250 -280045250:lI116|H280045260 -280045260:lI111|H280045270 -280045270:lI32|H280045280 -280045280:lI97|H280045290 -280045290:lI100|H2800452A0 -2800452A0:lI100|H2800452B0 -2800452B0:lI32|H2800452C0 -2800452C0:lI116|H2800452D0 -2800452D0:lI104|H2800452E0 -2800452E0:lI101|H2800452F0 -2800452F0:lI32|H280045300 -280045300:lI39|H280045310 -280045310:lI100|H280045320 -280045320:lI105|H280045330 -280045330:lI115|H280045340 -280045340:lI116|H280045350 -280045350:lI114|H280045360 -280045360:lI105|H280045370 -280045370:lI98|H280045380 -280045380:lI117|H280045390 -280045390:lI116|H2800453A0 -2800453A0:lI101|H2800453B0 -2800453B0:lI100|H2800453C0 -2800453C0:lI39|H2800453D0 -2800453D0:lI32|H2800453E0 -2800453E0:lI112|H2800453F0 -2800453F0:lI97|H280045400 -280045400:lI114|H280045410 -280045410:lI97|H280045420 -280045420:lI109|H280045430 -280045430:lI101|H280045440 -280045440:lI116|H280045450 -280045450:lI101|H280045460 -280045460:lI114|H280045470 -280045470:lI46|N -280045480:t2:A5:error,H280045498 -280045498:t2:A18:distribution_not_changed,H2800454B0 -2800454B0:lI78|H2800454C0 -2800454C0:lI111|H2800454D0 -2800454D0:lI116|H2800454E0 -2800454E0:lI32|H2800454F0 -2800454F0:lI97|H280045500 -280045500:lI108|H280045510 -280045510:lI108|H280045520 -280045520:lI111|H280045530 -280045530:lI119|H280045540 -280045540:lI101|H280045550 -280045550:lI100|H280045560 -280045560:lI32|H280045570 -280045570:lI116|H280045580 -280045580:lI111|H280045590 -280045590:lI32|H2800455A0 -2800455A0:lI97|H2800455B0 -2800455B0:lI100|H2800455C0 -2800455C0:lI100|H2800455D0 -2800455D0:lI32|H2800455E0 -2800455E0:lI116|H2800455F0 -2800455F0:lI104|H280045600 -280045600:lI101|H280045610 -280045610:lI32|H280045620 -280045620:lI39|H280045630 -280045630:lI100|H280045640 -280045640:lI105|H280045650 -280045650:lI115|H280045660 -280045660:lI116|H280045670 -280045670:lI114|H280045680 -280045680:lI105|H280045690 -280045690:lI98|H2800456A0 -2800456A0:lI117|H2800456B0 -2800456B0:lI116|H2800456C0 -2800456C0:lI101|H2800456D0 -2800456D0:lI100|H2800456E0 -2800456E0:lI39|H2800456F0 -2800456F0:lI32|H280045700 -280045700:lI112|H280045710 -280045710:lI97|H280045720 -280045720:lI114|H280045730 -280045730:lI97|H280045740 -280045740:lI109|H280045750 -280045750:lI101|H280045760 -280045760:lI116|H280045770 -280045770:lI101|H280045780 -280045780:lI114|N -280045790:lI108|N -2800457A0:lI114|H280045790 -2800457B0:lI101|H2800457A0 -2800457C0:lI46|H2800457B0 -2800457D0:lI108|H2800457C0 -2800457E0:lI101|H2800457D0 -2800457F0:lI110|H2800457E0 -280045800:lI114|H2800457F0 -280045810:lI101|H280045800 -280045820:lI107|H280045810 -280045830:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280046698:lI66|H2800466A8 -2800466A8:lI97|H2800466B8 -2800466B8:lI100|H2800466C8 -2800466C8:lI32|H2800466D8 -2800466D8:lI101|H2800466E8 -2800466E8:lI110|H2800466F8 -2800466F8:lI118|H280046708 -280046708:lI105|H280046718 -280046718:lI114|H280046728 -280046728:lI111|H280046738 -280046738:lI110|H280046748 -280046748:lI109|H280046758 -280046758:lI101|H280046768 -280046768:lI110|H280046778 -280046778:lI116|H280046788 -280046788:lI32|H280046798 -280046798:lI118|H2800467A8 -2800467A8:lI97|H2800467B8 -2800467B8:lI114|H2800467C8 -2800467C8:lI105|H2800467D8 -2800467D8:lI97|H2800467E8 -2800467E8:lI98|H2800467F8 -2800467F8:lI108|H280046808 -280046808:lI101|H280046818 -280046818:lI58|H280046828 -280046828:lI32|H280046838 -280046838:lI126|H280046848 -280046848:lI116|H280046858 -280046858:lI112|H280046868 -280046868:lI32|H280046878 -280046878:lI32|H280046888 -280046888:lI65|H280046898 -280046898:lI112|H2800468A8 -2800468A8:lI112|H2800468B8 -2800468B8:lI108|H2800468C8 -2800468C8:lI105|H2800468D8 -2800468D8:lI99|H2800468E8 -2800468E8:lI97|H2800468F8 -2800468F8:lI116|H280046908 -280046908:lI105|H280046918 -280046918:lI111|H280046928 -280046928:lI110|H280046938 -280046938:lI58|H280046948 -280046948:lI32|H280046958 -280046958:lI126|H280046968 -280046968:lI112|N -280046978:lH280046988|N -280046988:t3:H2800469A8,N,H280046A30 -2800469A8:t2:H2800469C0,H2800469D8 -2800469C0:t2:A6:loaded,A2:$1 -2800469D8:tA:A4:appl,A1:_,A1:_,A2:$2,A1:_,A2:$3,A1:_,A1:_,A1:_,A1:_ -280046A30:lH280046A40|N -280046A40:t1:H280046A50 -280046A50:t3:A2:$1,A2:$2,A2:$3 -280046A70:t2:A12:application_master,A2:$1 -280046A88:t2:H280046AA0,H280046AB8 -280046AA0:t2:A6:loaded,A2:$1 -280046AB8:tA:A4:appl,A1:_,H280046B10,A1:_,A1:_,A1:_,A1:_,A1:_,A1:_,A1:_ -280046B10:t8:A9:appl_data,A1:_,A1:_,A1:_,A1:_,A2:$2,A1:_,A1:_ -280046B58:t3:A16:application_controller,A5:start,I1 -280046B78:lI105|H280046B88 -280046B88:lI110|H280046B98 -280046B98:lI118|H280046BA8 -280046BA8:lI97|H280046BB8 -280046BB8:lI108|H280046BC8 -280046BC8:lI105|H280046BD8 -280046BD8:lI100|H280046BE8 -280046BE8:lI32|H280046BF8 -280046BF8:lI99|H280046C08 -280046C08:lI111|H280046C18 -280046C18:lI110|H280046C28 -280046C28:lI102|H280046C38 -280046C38:lI105|H280046C48 -280046C48:lI103|H280046C58 -280046C58:lI32|H280046C68 -280046C68:lI100|H280046C78 -280046C78:lI97|H280046C88 -280046C88:lI116|H280046C98 -280046C98:lI97|H280046CA8 -280046CA8:lI58|H280046CB8 -280046CB8:lI32|H280046CC8 -280046CC8:lI126|H280046CD8 -280046CD8:lI116|H280046CE8 -280046CE8:lI115|N -280046CF8:lA3:set|H280046D08 -280046D08:lA6:public|H280046D18 -280046D18:lAB:named_table|H280046D28 -280046D28:lH280046D38|N -280046D38:t2:A10:read_concurrency,A4:true -280046D50:t2:A5:local,A16:application_controller -280046D68:lI101|H280046D78 -280046D78:lI114|H280046D88 -280046D88:lI114|H280046D98 -280046D98:lI111|H280046DA8 -280046DA8:lI114|H280046DB8 -280046DB8:lI32|H280046DC8 -280046DC8:lI105|H280046DD8 -280046DD8:lI110|H280046DE8 -280046DE8:lI32|H280046DF8 -280046DF8:lI99|H280046E08 -280046E08:lI111|H280046E18 -280046E18:lI110|H280046E28 -280046E28:lI102|H280046E38 -280046E38:lI105|H280046E48 -280046E48:lI103|H280046E58 -280046E58:lI32|H280046E68 -280046E68:lI114|H280046E78 -280046E78:lI101|H280046E88 -280046E88:lI97|H280046E98 -280046E98:lI100|H280046EA8 -280046EA8:lI32|H280046EB8 -280046EB8:lI102|H280046EC8 -280046EC8:lI114|H280046ED8 -280046ED8:lI111|H280046EE8 -280046EE8:lI109|H280046EF8 -280046EF8:lI32|H280046F08 -280046F08:lI102|H280046F18 -280046F18:lI105|H280046F28 -280046F28:lI108|H280046F38 -280046F38:lI101|H280046F48 -280046F48:lI32|H280046F58 -280046F58:lI100|H280046F68 -280046F68:lI101|H280046F78 -280046F78:lI115|H280046F88 -280046F88:lI99|H280046F98 -280046F98:lI114|H280046FA8 -280046FA8:lI105|H280046FB8 -280046FB8:lI112|H280046FC8 -280046FC8:lI116|H280046FD8 -280046FD8:lI111|H280046FE8 -280046FE8:lI114|H280046FF8 -280046FF8:lI32|H280047008 -280047008:lI126|H280047018 -280047018:lI116|H280047028 -280047028:lI112|H280047038 -280047038:lI32|H280047048 -280047048:lI40|H280047058 -280047058:lI126|H280047068 -280047068:lI119|H280047078 -280047078:lI41|H280047088 -280047088:lI58|H280047098 -280047098:lI32|H2800470A8 -2800470A8:lI126|H2800470B8 -2800470B8:lI116|H2800470C8 -2800470C8:lI115|N -2800470D8:lI101|H2800470E8 -2800470E8:lI114|H2800470F8 -2800470F8:lI114|H280047108 -280047108:lI111|H280047118 -280047118:lI114|H280047128 -280047128:lI32|H280047138 -280047138:lI105|H280047148 -280047148:lI110|H280047158 -280047158:lI32|H280047168 -280047168:lI99|H280047178 -280047178:lI111|H280047188 -280047188:lI110|H280047198 -280047198:lI102|H2800471A8 -2800471A8:lI105|H2800471B8 -2800471B8:lI103|H2800471C8 -2800471C8:lI32|H2800471D8 -2800471D8:lI102|H2800471E8 -2800471E8:lI105|H2800471F8 -2800471F8:lI108|H280047208 -280047208:lI101|H280047218 -280047218:lI32|H280047228 -280047228:lI126|H280047238 -280047238:lI116|H280047248 -280047248:lI112|H280047258 -280047258:lI32|H280047268 -280047268:lI40|H280047278 -280047278:lI126|H280047288 -280047288:lI119|H280047298 -280047298:lI41|H2800472A8 -2800472A8:lI58|H2800472B8 -2800472B8:lI32|H2800472C8 -2800472C8:lI126|H2800472D8 -2800472D8:lI116|H2800472E8 -2800472E8:lI115|N -2800472F8:lI100|H280047308 -280047308:lI117|H280047318 -280047318:lI112|H280047328 -280047328:lI108|H280047338 -280047338:lI105|H280047348 -280047348:lI99|H280047358 -280047358:lI97|H280047368 -280047368:lI116|H280047378 -280047378:lI101|H280047388 -280047388:lI32|H280047398 -280047398:lI97|H2800473A8 -2800473A8:lI112|H2800473B8 -2800473B8:lI112|H2800473C8 -2800473C8:lI108|H2800473D8 -2800473D8:lI105|H2800473E8 -2800473E8:lI99|H2800473F8 -2800473F8:lI97|H280047408 -280047408:lI116|H280047418 -280047418:lI105|H280047428 -280047428:lI111|H280047438 -280047438:lI110|H280047448 -280047448:lI32|H280047458 -280047458:lI99|H280047468 -280047468:lI111|H280047478 -280047478:lI110|H280047488 -280047488:lI102|H280047498 -280047498:lI105|H2800474A8 -2800474A8:lI103|H2800474B8 -2800474B8:lI58|H2800474C8 -2800474C8:lI32|N -2800474D8:lI126|H2800474E8 -2800474E8:lI116|H2800474F8 -2800474F8:lI112|N -280047508:lI59|H280047518 -280047518:lI32|H280047528 -280047528:lI97|H280047538 -280047538:lI112|H280047548 -280047548:lI112|H280047558 -280047558:lI108|H280047568 -280047568:lI105|H280047578 -280047578:lI99|H280047588 -280047588:lI97|H280047598 -280047598:lI116|H2800475A8 -2800475A8:lI105|H2800475B8 -2800475B8:lI111|H2800475C8 -2800475C8:lI110|H2800475D8 -2800475D8:lI32|H2800475E8 -2800475E8:lI110|H2800475F8 -2800475F8:lI97|H280047608 -280047608:lI109|H280047618 -280047618:lI101|H280047628 -280047628:lI32|H280047638 -280047638:lI109|H280047648 -280047648:lI117|H280047658 -280047658:lI115|H280047668 -280047668:lI116|H280047678 -280047678:lI32|H280047688 -280047688:lI98|H280047698 -280047698:lI101|H2800476A8 -2800476A8:lI32|H2800476B8 -2800476B8:lI97|H2800476C8 -2800476C8:lI110|H2800476D8 -2800476D8:lI32|H2800476E8 -2800476E8:lI97|H2800476F8 -2800476F8:lI116|H280047708 -280047708:lI111|H280047718 -280047718:lI109|N -280047728:lI97|H280047738 -280047738:lI112|H280047748 -280047748:lI112|H280047758 -280047758:lI108|H280047768 -280047768:lI105|H280047778 -280047778:lI99|H280047788 -280047788:lI97|H280047798 -280047798:lI116|H2800477A8 -2800477A8:lI105|H2800477B8 -2800477B8:lI111|H2800477C8 -2800477C8:lI110|H2800477D8 -2800477D8:lI58|H2800477E8 -2800477E8:lI32|N -2800477F8:lI59|H280047808 -280047808:lI32|H280047818 -280047818:lI112|H280047828 -280047828:lI97|H280047838 -280047838:lI114|H280047848 -280047848:lI97|H280047858 -280047858:lI109|H280047868 -280047868:lI101|H280047878 -280047878:lI116|H280047888 -280047888:lI101|H280047898 -280047898:lI114|H2800478A8 -2800478A8:lI115|H2800478B8 -2800478B8:lI32|H2800478C8 -2800478C8:lI109|H2800478D8 -2800478D8:lI117|H2800478E8 -2800478E8:lI115|H2800478F8 -2800478F8:lI116|H280047908 -280047908:lI32|H280047918 -280047918:lI98|H280047928 -280047928:lI101|H280047938 -280047938:lI32|H280047948 -280047948:lI97|H280047958 -280047958:lI32|H280047968 -280047968:lI108|H280047978 -280047978:lI105|H280047988 -280047988:lI115|H280047998 -280047998:lI116|N -2800479A8:lI105|H2800479B8 -2800479B8:lI110|H2800479C8 -2800479C8:lI118|H2800479D8 -2800479D8:lI97|H2800479E8 -2800479E8:lI108|H2800479F8 -2800479F8:lI105|H280047A08 -280047A08:lI100|H280047A18 -280047A18:lI32|H280047A28 -280047A28:lI97|H280047A38 -280047A38:lI112|H280047A48 -280047A48:lI112|H280047A58 -280047A58:lI108|H280047A68 -280047A68:lI105|H280047A78 -280047A78:lI99|H280047A88 -280047A88:lI97|H280047A98 -280047A98:lI116|H280047AA8 -280047AA8:lI105|H280047AB8 -280047AB8:lI111|H280047AC8 -280047AC8:lI110|H280047AD8 -280047AD8:lI32|H280047AE8 -280047AE8:lI99|H280047AF8 -280047AF8:lI111|H280047B08 -280047B08:lI110|H280047B18 -280047B18:lI102|H280047B28 -280047B28:lI105|H280047B38 -280047B38:lI103|H280047B48 -280047B48:lI58|H280047B58 -280047B58:lI32|N -280047B68:t2:A5:error,H280047B80 -280047B80:lI99|H280047B90 -280047B90:lI111|H280047BA0 -280047BA0:lI110|H280047BB0 -280047BB0:lI102|H280047BC0 -280047BC0:lI105|H280047BD0 -280047BD0:lI103|H280047BE0 -280047BE0:lI117|H280047BF0 -280047BF0:lI114|H280047C00 -280047C00:lI97|H280047C10 -280047C10:lI116|H280047C20 -280047C20:lI105|H280047C30 -280047C30:lI111|H280047C40 -280047C40:lI110|H280047C50 -280047C50:lI32|H280047C60 -280047C60:lI109|H280047C70 -280047C70:lI117|H280047C80 -280047C80:lI115|H280047C90 -280047C90:lI116|H280047CA0 -280047CA0:lI32|H280047CB0 -280047CB0:lI98|H280047CC0 -280047CC0:lI101|H280047CD0 -280047CD0:lI32|H280047CE0 -280047CE0:lI97|H280047CF0 -280047CF0:lI32|H280047D00 -280047D00:lI108|H280047D10 -280047D10:lI105|H280047D20 -280047D20:lI115|H280047D30 -280047D30:lI116|H280047D40 -280047D40:lI32|H280047D50 -280047D50:lI101|H280047D60 -280047D60:lI110|H280047D70 -280047D70:lI100|H280047D80 -280047D80:lI101|H280047D90 -280047D90:lI100|H280047DA0 -280047DA0:lI32|H280047DB0 -280047DB0:lI98|H280047DC0 -280047DC0:lI121|H280047DD0 -280047DD0:lI32|H280047DE0 -280047DE0:lI60|H280047DF0 -280047DF0:lI100|H280047E00 -280047E00:lI111|H280047E10 -280047E10:lI116|H280047E20 -280047E20:lI62|H280047E30 -280047E30:lI60|H280047E40 -280047E40:lI119|H280047E50 -280047E50:lI104|H280047E60 -280047E60:lI105|H280047E70 -280047E70:lI116|H280047E80 -280047E80:lI101|H280047E90 -280047E90:lI115|H280047EA0 -280047EA0:lI112|H280047EB0 -280047EB0:lI97|H280047EC0 -280047EC0:lI99|H280047ED0 -280047ED0:lI101|H280047EE0 -280047EE0:lI62|N -280047EF0:lI59|H280047F00 -280047F00:lI32|H280047F10 -280047F10:lI100|H280047F20 -280047F20:lI117|H280047F30 -280047F30:lI112|H280047F40 -280047F40:lI108|H280047F50 -280047F50:lI105|H280047F60 -280047F60:lI99|H280047F70 -280047F70:lI97|H280047F80 -280047F80:lI116|H280047F90 -280047F90:lI101|H280047FA0 -280047FA0:lI32|H280047FB0 -280047FB0:lI112|H280047FC0 -280047FC0:lI97|H280047FD0 -280047FD0:lI114|H280047FE0 -280047FE0:lI97|H280047FF0 -280047FF0:lI109|H280048000 -280048000:lI101|H280048010 -280048010:lI116|H280048020 -280048020:lI101|H280048030 -280048030:lI114|H280048040 -280048040:lI58|H280048050 -280048050:lI32|N -280048060:lI59|H280048070 -280048070:lI32|H280048080 -280048080:lI105|H280048090 -280048090:lI110|H2800480A0 -2800480A0:lI118|H2800480B0 -2800480B0:lI97|H2800480C0 -2800480C0:lI108|H2800480D0 -2800480D0:lI105|H2800480E0 -2800480E0:lI100|H2800480F0 -2800480F0:lI32|H280048100 -280048100:lI112|H280048110 -280048110:lI97|H280048120 -280048120:lI114|H280048130 -280048130:lI97|H280048140 -280048140:lI109|H280048150 -280048150:lI101|H280048160 -280048160:lI116|H280048170 -280048170:lI101|H280048180 -280048180:lI114|H280048190 -280048190:lI32|H2800481A0 -2800481A0:lI110|H2800481B0 -2800481B0:lI97|H2800481C0 -2800481C0:lI109|H2800481D0 -2800481D0:lI101|H2800481E0 -2800481E0:lI58|H2800481F0 -2800481F0:lI32|N -280048200:lI59|H280048210 -280048210:lI32|H280048220 -280048220:lI105|H280048230 -280048230:lI110|H280048240 -280048240:lI118|H280048250 -280048250:lI97|H280048260 -280048260:lI108|H280048270 -280048270:lI105|H280048280 -280048280:lI100|H280048290 -280048290:lI32|H2800482A0 -2800482A0:lI112|H2800482B0 -2800482B0:lI97|H2800482C0 -2800482C0:lI114|H2800482D0 -2800482D0:lI97|H2800482E0 -2800482E0:lI109|H2800482F0 -2800482F0:lI101|H280048300 -280048300:lI116|H280048310 -280048310:lI101|H280048320 -280048320:lI114|H280048330 -280048330:lI58|H280048340 -280048340:lI32|N -280048350:t2:A5:error,H280048368 -280048368:lI97|H280048378 -280048378:lI112|H280048388 -280048388:lI112|H280048398 -280048398:lI108|H2800483A8 -2800483A8:lI105|H2800483B8 -2800483B8:lI99|H2800483C8 -2800483C8:lI97|H2800483D8 -2800483D8:lI116|H2800483E8 -2800483E8:lI105|H2800483F8 -2800483F8:lI111|H280048408 -280048408:lI110|H280048418 -280048418:lI58|H280048428 -280048428:lI32|H280048438 -280048438:lI107|H280048448 -280048448:lI101|H280048458 -280048458:lI114|H280048468 -280048468:lI110|H280048478 -280048478:lI101|H280048488 -280048488:lI108|H280048498 -280048498:lI59|H2800484A8 -2800484A8:lI32|H2800484B8 -2800484B8:lI101|H2800484C8 -2800484C8:lI114|H2800484D8 -2800484D8:lI114|H2800484E8 -2800484E8:lI111|H2800484F8 -2800484F8:lI110|H280048508 -280048508:lI101|H280048518 -280048518:lI111|H280048528 -280048528:lI117|H280048538 -280048538:lI115|H280048548 -280048548:lI32|H280048558 -280048558:lI112|H280048568 -280048568:lI97|H280048578 -280048578:lI114|H280048588 -280048588:lI97|H280048598 -280048598:lI109|H2800485A8 -2800485A8:lI101|H2800485B8 -2800485B8:lI116|H2800485C8 -2800485C8:lI101|H2800485D8 -2800485D8:lI114|H2800485E8 -2800485E8:lI58|H2800485F8 -2800485F8:lI32|H280048608 -280048608:lI100|H280048618 -280048618:lI105|H280048628 -280048628:lI115|H280048638 -280048638:lI116|H280048648 -280048648:lI114|H280048658 -280048658:lI105|H280048668 -280048668:lI98|H280048678 -280048678:lI117|H280048688 -280048688:lI116|H280048698 -280048698:lI101|H2800486A8 -2800486A8:lI100|N -2800486B8:t2:A17:distributed_application,AB:only_loaded -2800486D0:t2:A4:EXIT,A6:normal -2800486E8:t2:AB:distributed,N -280048700:t2:A12:application_master,A1:_ -280048718:t2:A2:ok,A9:undefined -280048730:lI46|H280048740 -280048740:lI97|H280048750 -280048750:lI112|H280048760 -280048760:lI112|N -280048770:t2:A5:error,H280048788 -280048788:lI98|H280048798 -280048798:lI97|H2800487A8 -2800487A8:lI100|H2800487B8 -2800487B8:lI32|H2800487C8 -2800487C8:lI101|H2800487D8 -2800487D8:lI110|H2800487E8 -2800487E8:lI99|H2800487F8 -2800487F8:lI111|H280048808 -280048808:lI100|H280048818 -280048818:lI105|H280048828 -280048828:lI110|H280048838 -280048838:lI103|N -280048848:t2:A5:error,A6:enoent -280048860:lI97|H280048870 -280048870:lI112|H280048880 -280048880:lI112|H280048890 -280048890:lI108|H2800488A0 -2800488A0:lI105|H2800488B0 -2800488B0:lI99|H2800488C0 -2800488C0:lI97|H2800488D0 -2800488D0:lI116|H2800488E0 -2800488E0:lI105|H2800488F0 -2800488F0:lI111|H280048900 -280048900:lI110|H280048910 -280048910:lI95|H280048920 -280048920:lI99|H280048930 -280048930:lI111|H280048940 -280048940:lI110|H280048950 -280048950:lI116|H280048960 -280048960:lI114|H280048970 -280048970:lI111|H280048980 -280048980:lI108|H280048990 -280048990:lI108|H2800489A0 -2800489A0:lI101|H2800489B0 -2800489B0:lI114|H2800489C0 -2800489C0:lI58|H2800489D0 -2800489D0:lI32|H2800489E0 -2800489E0:lI126|H2800489F0 -2800489F0:lI116|H280048A00 -280048A00:lI115|H280048A10 -280048A10:lI58|H280048A20 -280048A20:lI32|H280048A30 -280048A30:lI126|H280048A40 -280048A40:lI116|H280048A50 -280048A50:lI115|H280048A60 -280048A60:lI126|H280048A70 -280048A70:lI110|N -280048A80:t1:AC:error_logger -280048A90:Mf1:H280048A80:H280048AC0 -280048AB0:t1:A3:tag -280048AC0:Mf1:H280048AB0:A5:error -280048AE0:t3:A4:line,A4:file,A3:mfa -280048B00:Mf3:H280048AE0:I1669,H280048B30,H280048CD0 -280048B30:lI97|H280048B40 -280048B40:lI112|H280048B50 -280048B50:lI112|H280048B60 -280048B60:lI108|H280048B70 -280048B70:lI105|H280048B80 -280048B80:lI99|H280048B90 -280048B90:lI97|H280048BA0 -280048BA0:lI116|H280048BB0 -280048BB0:lI105|H280048BC0 -280048BC0:lI111|H280048BD0 -280048BD0:lI110|H280048BE0 -280048BE0:lI95|H280048BF0 -280048BF0:lI99|H280048C00 -280048C00:lI111|H280048C10 -280048C10:lI110|H280048C20 -280048C20:lI116|H280048C30 -280048C30:lI114|H280048C40 -280048C40:lI111|H280048C50 -280048C50:lI108|H280048C60 -280048C60:lI108|H280048C70 -280048C70:lI101|H280048C80 -280048C80:lI114|H280048C90 -280048C90:lI46|H280048CA0 -280048CA0:lI101|H280048CB0 -280048CB0:lI114|H280048CC0 -280048CC0:lI108|N -280048CD0:t3:A16:application_controller,A16:handle_make_term_error,I3 -280048CF0:t2:N,N -280048D08:lH280048D28|H280048D18 -280048D18:lN|N -280048D28:lI46|H280048D38 -280048D38:lI99|H280048D48 -280048D48:lI111|H280048D58 -280048D58:lI110|H280048D68 -280048D68:lI102|H280048D78 -280048D78:lI105|H280048D88 -280048D88:lI103|N -280048D98:lI67|H280048DA8 -280048DA8:lI97|H280048DB8 -280048DB8:lI110|H280048DC8 -280048DC8:lI110|H280048DD8 -280048DD8:lI111|H280048DE8 -280048DE8:lI116|H280048DF8 -280048DF8:lI32|H280048E08 -280048E08:lI112|H280048E18 -280048E18:lI97|H280048E28 -280048E28:lI114|H280048E38 -280048E38:lI115|H280048E48 -280048E48:lI101|H280048E58 -280048E58:lI32|H280048E68 -280048E68:lI102|H280048E78 -280048E78:lI105|H280048E88 -280048E88:lI108|H280048E98 -280048E98:lI101|H280048EA8 -280048EA8:lI32|H280048EB8 -280048EB8:lI100|H280048EC8 -280048EC8:lI101|H280048ED8 -280048ED8:lI115|H280048EE8 -280048EE8:lI99|H280048EF8 -280048EF8:lI114|H280048F08 -280048F08:lI105|H280048F18 -280048F18:lI112|H280048F28 -280048F28:lI116|H280048F38 -280048F38:lI111|H280048F48 -280048F48:lI114|H280048F58 -280048F58:lI32|H280048F68 -280048F68:lI111|H280048F78 -280048F78:lI102|H280048F88 -280048F88:lI32|H280048F98 -280048F98:lI116|H280048FA8 -280048FA8:lI121|H280048FB8 -280048FB8:lI112|H280048FC8 -280048FC8:lI101|H280048FD8 -280048FD8:lI58|H280048FE8 -280048FE8:lI32|H280048FF8 -280048FF8:lI126|H280049008 -280049008:lI116|H280049018 -280049018:lI115|N -280049028:lI84|H280049038 -280049038:lI104|H280049048 -280049048:lI101|H280049058 -280049058:lI32|H280049068 -280049068:lI103|H280049078 -280049078:lI105|H280049088 -280049088:lI118|H280049098 -280049098:lI101|H2800490A8 -2800490A8:lI110|H2800490B8 -2800490B8:lI32|H2800490C8 -2800490C8:lI102|H2800490D8 -2800490D8:lI105|H2800490E8 -2800490E8:lI108|H2800490F8 -2800490F8:lI101|H280049108 -280049108:lI32|H280049118 -280049118:lI100|H280049128 -280049128:lI101|H280049138 -280049138:lI115|H280049148 -280049148:lI99|H280049158 -280049158:lI114|H280049168 -280049168:lI105|H280049178 -280049178:lI112|H280049188 -280049188:lI116|H280049198 -280049198:lI111|H2800491A8 -2800491A8:lI114|H2800491B8 -2800491B8:lI32|H2800491C8 -2800491C8:lI104|H2800491D8 -2800491D8:lI97|H2800491E8 -2800491E8:lI115|H2800491F8 -2800491F8:lI32|H280049208 -280049208:lI105|H280049218 -280049218:lI110|H280049228 -280049228:lI99|H280049238 -280049238:lI111|H280049248 -280049248:lI114|H280049258 -280049258:lI114|H280049268 -280049268:lI101|H280049278 -280049278:lI99|H280049288 -280049288:lI116|H280049298 -280049298:lI32|H2800492A8 -2800492A8:lI102|H2800492B8 -2800492B8:lI111|H2800492C8 -2800492C8:lI114|H2800492D8 -2800492D8:lI109|H2800492E8 -2800492E8:lI97|H2800492F8 -2800492F8:lI116|H280049308 -280049308:lI46|H280049318 -280049318:lI32|H280049328 -280049328:lI84|H280049338 -280049338:lI104|H280049348 -280049348:lI101|H280049358 -280049358:lI32|H280049368 -280049368:lI102|H280049378 -280049378:lI111|H280049388 -280049388:lI114|H280049398 -280049398:lI109|H2800493A8 -2800493A8:lI97|H2800493B8 -2800493B8:lI116|H2800493C8 -2800493C8:lI32|H2800493D8 -2800493D8:lI115|H2800493E8 -2800493E8:lI104|H2800493F8 -2800493F8:lI111|H280049408 -280049408:lI117|H280049418 -280049418:lI108|H280049428 -280049428:lI100|H280049438 -280049438:lI32|H280049448 -280049448:lI98|H280049458 -280049458:lI101|H280049468 -280049468:lI32|H280049478 -280049478:lI34|H280049488 -280049488:lI70|H280049498 -280049498:lI105|H2800494A8 -2800494A8:lI108|H2800494B8 -2800494B8:lI101|H2800494C8 -2800494C8:lI68|H2800494D8 -2800494D8:lI101|H2800494E8 -2800494E8:lI115|H2800494F8 -2800494F8:lI99|H280049508 -280049508:lI73|H280049518 -280049518:lI100|H280049528 -280049528:lI91|H280049538 -280049538:lI46|H280049548 -280049548:lI70|H280049558 -280049558:lI105|H280049568 -280049568:lI108|H280049578 -280049578:lI101|H280049588 -280049588:lI84|H280049598 -280049598:lI121|H2800495A8 -2800495A8:lI112|H2800495B8 -2800495B8:lI101|H2800495C8 -2800495C8:lI93|H2800495D8 -2800495D8:lI34|H2800495E8 -2800495E8:lI46|H2800495F8 -2800495F8:lI32|H280049608 -280049608:lI69|H280049618 -280049618:lI120|H280049628 -280049628:lI97|H280049638 -280049638:lI109|H280049648 -280049648:lI112|H280049658 -280049658:lI108|H280049668 -280049668:lI101|H280049678 -280049678:lI115|H280049688 -280049688:lI58|H280049698 -280049698:lI32|H2800496A8 -2800496A8:lI51|H2800496B8 -2800496B8:lI32|H2800496C8 -2800496C8:lI111|H2800496D8 -2800496D8:lI114|H2800496E8 -2800496E8:lI32|H2800496F8 -2800496F8:lI51|H280049708 -280049708:lI46|H280049718 -280049718:lI99|H280049728 -280049728:lI111|H280049738 -280049738:lI110|H280049748 -280049748:lI102|H280049758 -280049758:lI105|H280049768 -280049768:lI103|N -280049778:lI46|H280049788 -280049788:lI99|H280049798 -280049798:lI111|H2800497A8 -2800497A8:lI110|H2800497B8 -2800497B8:lI102|H2800497C8 -2800497C8:lI105|H2800497D8 -2800497D8:lI103|N -2800497E8:lI115|H2800497F8 -2800497F8:lI121|H280049808 -280049808:lI115|N -280049818:lI32|N -280049828:t2:A5:error,H280049840 -280049840:t3:A4:none,A9:scan_file,H280049860 -280049860:lI98|H280049870 -280049870:lI97|H280049880 -280049880:lI100|H280049890 -280049890:lI32|H2800498A0 -2800498A0:lI101|H2800498B0 -2800498B0:lI110|H2800498C0 -2800498C0:lI99|H2800498D0 -2800498D0:lI111|H2800498E0 -2800498E0:lI100|H2800498F0 -2800498F0:lI105|H280049900 -280049900:lI110|H280049910 -280049910:lI103|N -280049920:t2:A5:error,H280049938 -280049938:t3:A4:none,A9:open_file,H280049958 -280049958:lI99|H280049968 -280049968:lI111|H280049978 -280049978:lI110|H280049988 -280049988:lI102|H280049998 -280049998:lI105|H2800499A8 -2800499A8:lI103|H2800499B8 -2800499B8:lI117|H2800499C8 -2800499C8:lI114|H2800499D8 -2800499D8:lI97|H2800499E8 -2800499E8:lI116|H2800499F8 -2800499F8:lI105|H280049A08 -280049A08:lI111|H280049A18 -280049A18:lI110|H280049A28 -280049A28:lI32|H280049A38 -280049A38:lI102|H280049A48 -280049A48:lI105|H280049A58 -280049A58:lI108|H280049A68 -280049A68:lI101|H280049A78 -280049A78:lI32|H280049A88 -280049A88:lI110|H280049A98 -280049A98:lI111|H280049AA8 -280049AA8:lI116|H280049AB8 -280049AB8:lI32|H280049AC8 -280049AC8:lI102|H280049AD8 -280049AD8:lI111|H280049AE8 -280049AE8:lI117|H280049AF8 -280049AF8:lI110|H280049B08 -280049B08:lI100|N -280049B18:lI67|H280049B28 -280049B28:lI111|H280049B38 -280049B38:lI117|H280049B48 -280049B48:lI108|H280049B58 -280049B58:lI100|H280049B68 -280049B68:lI32|H280049B78 -280049B78:lI110|H280049B88 -280049B88:lI111|H280049B98 -280049B98:lI116|H280049BA8 -280049BA8:lI32|H280049BB8 -280049BB8:lI114|H280049BC8 -280049BC8:lI101|H280049BD8 -280049BD8:lI97|H280049BE8 -280049BE8:lI100|H280049BF8 -280049BF8:lI32|H280049C08 -280049C08:lI102|H280049C18 -280049C18:lI114|H280049C28 -280049C28:lI111|H280049C38 -280049C38:lI109|H280049C48 -280049C48:lI32|H280049C58 -280049C58:lI102|H280049C68 -280049C68:lI105|H280049C78 -280049C78:lI108|H280049C88 -280049C88:lI101|H280049C98 -280049C98:lI32|H280049CA8 -280049CA8:lI100|H280049CB8 -280049CB8:lI101|H280049CC8 -280049CC8:lI115|H280049CD8 -280049CD8:lI99|H280049CE8 -280049CE8:lI114|H280049CF8 -280049CF8:lI105|H280049D08 -280049D08:lI112|H280049D18 -280049D18:lI116|H280049D28 -280049D28:lI111|H280049D38 -280049D38:lI114|H280049D48 -280049D48:lI58|H280049D58 -280049D58:lI32|H280049D68 -280049D68:lI126|H280049D78 -280049D78:lI115|N -280049D88:t2:A5:error,H280049DA0 -280049DA0:t3:A4:none,A9:load_file,H280049DC0 -280049DC0:lI110|H280049DD0 -280049DD0:lI111|H280049DE0 -280049DE0:lI32|H280049DF0 -280049DF0:lI101|H280049E00 -280049E00:lI110|H280049E10 -280049E10:lI100|H280049E20 -280049E20:lI105|H280049E30 -280049E30:lI110|H280049E40 -280049E40:lI103|H280049E50 -280049E50:lI32|H280049E60 -280049E60:lI60|H280049E70 -280049E70:lI100|H280049E80 -280049E80:lI111|H280049E90 -280049E90:lI116|H280049EA0 -280049EA0:lI62|H280049EB0 -280049EB0:lI32|H280049EC0 -280049EC0:lI102|H280049ED0 -280049ED0:lI111|H280049EE0 -280049EE0:lI117|H280049EF0 -280049EF0:lI110|H280049F00 -280049F00:lI100|N -280049F10:t2:A5:error,H280049F28 -280049F28:t3:A4:none,A9:load_file,H280049F48 -280049F48:lI99|H280049F58 -280049F58:lI111|H280049F68 -280049F68:lI110|H280049F78 -280049F78:lI102|H280049F88 -280049F88:lI105|H280049F98 -280049F98:lI103|H280049FA8 -280049FA8:lI117|H280049FB8 -280049FB8:lI114|H280049FC8 -280049FC8:lI97|H280049FD8 -280049FD8:lI116|H280049FE8 -280049FE8:lI105|H280049FF8 -280049FF8:lI111|H28004A008 -28004A008:lI110|H28004A018 -28004A018:lI32|H28004A028 -28004A028:lI102|H28004A038 -28004A038:lI105|H28004A048 -28004A048:lI108|H28004A058 -28004A058:lI101|H28004A068 -28004A068:lI32|H28004A078 -28004A078:lI109|H28004A088 -28004A088:lI117|H28004A098 -28004A098:lI115|H28004A0A8 -28004A0A8:lI116|H28004A0B8 -28004A0B8:lI32|H28004A0C8 -28004A0C8:lI99|H28004A0D8 -28004A0D8:lI111|H28004A0E8 -28004A0E8:lI110|H28004A0F8 -28004A0F8:lI116|H28004A108 -28004A108:lI97|H28004A118 -28004A118:lI105|H28004A128 -28004A128:lI110|H28004A138 -28004A138:lI32|H28004A148 -28004A148:lI79|H28004A158 -28004A158:lI78|H28004A168 -28004A168:lI69|H28004A178 -28004A178:lI32|H28004A188 -28004A188:lI108|H28004A198 -28004A198:lI105|H28004A1A8 -28004A1A8:lI115|H28004A1B8 -28004A1B8:lI116|H28004A1C8 -28004A1C8:lI32|H28004A1D8 -28004A1D8:lI101|H28004A1E8 -28004A1E8:lI110|H28004A1F8 -28004A1F8:lI100|H28004A208 -28004A208:lI101|H28004A218 -28004A218:lI100|H28004A228 -28004A228:lI32|H28004A238 -28004A238:lI98|H28004A248 -28004A248:lI121|H28004A258 -28004A258:lI32|H28004A268 -28004A268:lI60|H28004A278 -28004A278:lI100|H28004A288 -28004A288:lI111|H28004A298 -28004A298:lI116|H28004A2A8 -28004A2A8:lI62|N -28004A2B8:Mf0:H280010188: -28004A2D0:t2:A16:application_controller,A8:progress -28004A2E8:t4:AC:error_logger,A6:domain,A10:logger_formatter,A9:report_cb -28004A310:Mf4:H28004A2E8:H28004A388,H28004A348,H28004A3F0,H28004A500 -28004A348:lA3:otp|H28004A358 -28004A358:lA4:sasl|N -28004A368:t3:A3:tag,A4:type,A9:report_cb -28004A388:Mf3:H28004A368:AB:info_report,A8:progress,H28004A3B8 -28004A3B8:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAQ== -28004A3E0:t1:A5:title -28004A3F0:Mf1:H28004A3E0:H28004A410 -28004A410:lI80|H28004A420 -28004A420:lI82|H28004A430 -28004A430:lI79|H28004A440 -28004A440:lI71|H28004A450 -28004A450:lI82|H28004A460 -28004A460:lI69|H28004A470 -28004A470:lI83|H28004A480 -28004A480:lI83|H28004A490 -28004A490:lI32|H28004A4A0 -28004A4A0:lI82|H28004A4B0 -28004A4B0:lI69|H28004A4C0 -28004A4C0:lI80|H28004A4D0 -28004A4D0:lI79|H28004A4E0 -28004A4E0:lI82|H28004A4F0 -28004A4F0:lI84|N -28004A500:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAg== -28004A528:t3:A4:line,A4:file,A3:mfa -28004A548:Mf3:H28004A528:I2117,H28004A578,H28004A718 -28004A578:lI97|H28004A588 -28004A588:lI112|H28004A598 -28004A598:lI112|H28004A5A8 -28004A5A8:lI108|H28004A5B8 -28004A5B8:lI105|H28004A5C8 -28004A5C8:lI99|H28004A5D8 -28004A5D8:lI97|H28004A5E8 -28004A5E8:lI116|H28004A5F8 -28004A5F8:lI105|H28004A608 -28004A608:lI111|H28004A618 -28004A618:lI110|H28004A628 -28004A628:lI95|H28004A638 -28004A638:lI99|H28004A648 -28004A648:lI111|H28004A658 -28004A658:lI110|H28004A668 -28004A668:lI116|H28004A678 -28004A678:lI114|H28004A688 -28004A688:lI111|H28004A698 -28004A698:lI108|H28004A6A8 -28004A6A8:lI108|H28004A6B8 -28004A6B8:lI101|H28004A6C8 -28004A6C8:lI114|H28004A6D8 -28004A6D8:lI46|H28004A6E8 -28004A6E8:lI101|H28004A6F8 -28004A6F8:lI114|H28004A708 -28004A708:lI108|N -28004A718:t3:A16:application_controller,AC:info_started,I2 -28004A738:t2:A16:application_controller,A4:exit -28004A750:t3:AC:error_logger,A6:domain,A9:report_cb -28004A770:Mf3:H28004A750:H28004A7D0,H28004A7A0,H28004A828 -28004A7A0:lA3:otp|N -28004A7B0:t3:A3:tag,A4:type,A9:report_cb -28004A7D0:Mf3:H28004A7B0:AB:info_report,A8:std_info,H28004A800 -28004A800:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAQ== -28004A828:E28:g3F3FmFwcGxpY2F0aW9uX2NvbnRyb2xsZXJ3CmZvcm1hdF9sb2dhAg== -28004A850:t3:A4:line,A4:file,A3:mfa -28004A870:Mf3:H28004A850:I2129,H28004A8A0,H28004AA40 -28004A8A0:lI97|H28004A8B0 -28004A8B0:lI112|H28004A8C0 -28004A8C0:lI112|H28004A8D0 -28004A8D0:lI108|H28004A8E0 -28004A8E0:lI105|H28004A8F0 -28004A8F0:lI99|H28004A900 -28004A900:lI97|H28004A910 -28004A910:lI116|H28004A920 -28004A920:lI105|H28004A930 -28004A930:lI111|H28004A940 -28004A940:lI110|H28004A950 -28004A950:lI95|H28004A960 -28004A960:lI99|H28004A970 -28004A970:lI111|H28004A980 -28004A980:lI110|H28004A990 -28004A990:lI116|H28004A9A0 -28004A9A0:lI114|H28004A9B0 -28004A9B0:lI111|H28004A9C0 -28004A9C0:lI108|H28004A9D0 -28004A9D0:lI108|H28004A9E0 -28004A9E0:lI101|H28004A9F0 -28004A9F0:lI114|H28004AA00 -28004AA00:lI46|H28004AA10 -28004AA10:lI101|H28004AA20 -28004AA20:lI114|H28004AA30 -28004AA30:lI108|N -28004AA40:t3:A16:application_controller,AB:info_exited,I3 -28004AA60:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -28004AA88:Mf4:H28004AA60:A9:unlimited,A9:unlimited,A4:utf8,A5:false -28004AAC0:lI46|N -28004AAD0:lI46|H28004AAE0 -28004AAE0:lI32|H28004AAF0 -28004AAF0:lI83|H28004AB00 -28004AB00:lI116|H28004AB10 -28004AB10:lI97|H28004AB20 -28004AB20:lI114|H28004AB30 -28004AB30:lI116|H28004AB40 -28004AB40:lI101|H28004AB50 -28004AB50:lI100|H28004AB60 -28004AB60:lI32|H28004AB70 -28004AB70:lI97|H28004AB80 -28004AB80:lI116|H28004AB90 -28004AB90:lI58|H28004ABA0 -28004ABA0:lI32|N -28004ABB0:lI65|H28004ABC0 -28004ABC0:lI112|H28004ABD0 -28004ABD0:lI112|H28004ABE0 -28004ABE0:lI108|H28004ABF0 -28004ABF0:lI105|H28004AC00 -28004AC00:lI99|H28004AC10 -28004AC10:lI97|H28004AC20 -28004AC20:lI116|H28004AC30 -28004AC30:lI105|H28004AC40 -28004AC40:lI111|H28004AC50 -28004AC50:lI110|H28004AC60 -28004AC60:lI58|H28004AC70 -28004AC70:lI32|N -28004AC80:lH28004AC90|N -28004AC90:lI46|N -28004ACA0:lI46|H28004ACB0 -28004ACB0:lI32|H28004ACC0 -28004ACC0:lI84|H28004ACD0 -28004ACD0:lI121|H28004ACE0 -28004ACE0:lI112|H28004ACF0 -28004ACF0:lI101|H28004AD00 -28004AD00:lI58|H28004AD10 -28004AD10:lI32|N -28004AD20:lI46|H28004AD30 -28004AD30:lI32|H28004AD40 -28004AD40:lI69|H28004AD50 -28004AD50:lI120|H28004AD60 -28004AD60:lI105|H28004AD70 -28004AD70:lI116|H28004AD80 -28004AD80:lI101|H28004AD90 -28004AD90:lI100|H28004ADA0 -28004ADA0:lI58|H28004ADB0 -28004ADB0:lI32|N -28004ADC0:lH28004ADD0|N -28004ADD0:lI126|H28004ADE0 -28004ADE0:lI110|N -28004ADF0:lI32|H28004AE00 -28004AE00:lI32|H28004AE10 -28004AE10:lI32|H28004AE20 -28004AE20:lI32|H28004AE30 -28004AE30:lI115|H28004AE40 -28004AE40:lI116|H28004AE50 -28004AE50:lI97|H28004AE60 -28004AE60:lI114|H28004AE70 -28004AE70:lI116|H28004AE80 -28004AE80:lI101|H28004AE90 -28004AE90:lI100|H28004AEA0 -28004AEA0:lI95|H28004AEB0 -28004AEB0:lI97|H28004AEC0 -28004AEC0:lI116|H28004AED0 -28004AED0:lI58|H28004AEE0 -28004AEE0:lI32|N -28004AEF0:lI126|H28004AF00 -28004AF00:lI110|N -28004AF10:lI32|H28004AF20 -28004AF20:lI32|H28004AF30 -28004AF30:lI32|H28004AF40 -28004AF40:lI32|H28004AF50 -28004AF50:lI97|H28004AF60 -28004AF60:lI112|H28004AF70 -28004AF70:lI112|H28004AF80 -28004AF80:lI108|H28004AF90 -28004AF90:lI105|H28004AFA0 -28004AFA0:lI99|H28004AFB0 -28004AFB0:lI97|H28004AFC0 -28004AFC0:lI116|H28004AFD0 -28004AFD0:lI105|H28004AFE0 -28004AFE0:lI111|H28004AFF0 -28004AFF0:lI110|H28004B000 -28004B000:lI58|H28004B010 -28004B010:lI32|N -28004B020:lI32|H28004B030 -28004B030:lI32|H28004B040 -28004B040:lI32|H28004B050 -28004B050:lI32|H28004B060 -28004B060:lI116|H28004B070 -28004B070:lI121|H28004B080 -28004B080:lI112|H28004B090 -28004B090:lI101|H28004B0A0 -28004B0A0:lI58|H28004B0B0 -28004B0B0:lI32|N -28004B0C0:lI32|H28004B0D0 -28004B0D0:lI32|H28004B0E0 -28004B0E0:lI32|H28004B0F0 -28004B0F0:lI32|H28004B100 -28004B100:lI101|H28004B110 -28004B110:lI120|H28004B120 -28004B120:lI105|H28004B130 -28004B130:lI116|H28004B140 -28004B140:lI101|H28004B150 -28004B150:lI100|H28004B160 -28004B160:lI58|H28004B170 -28004B170:lI32|N -28004B180:lI112|N -28004B190:lI80|N -28004B1A0:lI48|N -28004B1B0:lI116|N -28004B1C0:t3:A3:env,A6:kernel,AB:permissions -28004B1E0:lI126|H28004B1F0 -28004B1F0:lI48|H28004B200 -28004B200:lI112|N -28004B210:lI83|H28004B220 -28004B220:lI108|H28004B230 -28004B230:lI111|H28004B240 -28004B240:lI119|H28004B250 -28004B250:lI32|H28004B260 -28004B260:lI45|H28004B270 -28004B270:lI99|H28004B280 -28004B280:lI111|H28004B290 -28004B290:lI110|H28004B2A0 -28004B2A0:lI102|H28004B2B0 -28004B2B0:lI105|H28004B2C0 -28004B2C0:lI103|H28004B2D0 -28004B2D0:lI102|H28004B2E0 -28004B2E0:lI100|H28004B2F0 -28004B2F0:lI32|H28004B300 -28004B300:lI102|H28004B310 -28004B310:lI105|H28004B320 -28004B320:lI108|H28004B330 -28004B330:lI101|H28004B340 -28004B340:lI32|H28004B350 -28004B350:lI100|H28004B360 -28004B360:lI101|H28004B370 -28004B370:lI115|H28004B380 -28004B380:lI99|H28004B390 -28004B390:lI114|H28004B3A0 -28004B3A0:lI105|H28004B3B0 -28004B3B0:lI112|H28004B3C0 -28004B3C0:lI116|H28004B3D0 -28004B3D0:lI111|H28004B3E0 -28004B3E0:lI114|H28004B3F0 -28004B3F0:lI32|H28004B400 -28004B400:lI126|H28004B410 -28004B410:lI112|H28004B420 -28004B420:lI46|H28004B430 -28004B430:lI32|H28004B440 -28004B440:lI84|H28004B450 -28004B450:lI104|H28004B460 -28004B460:lI101|H28004B470 -28004B470:lI32|H28004B480 -28004B480:lI115|H28004B490 -28004B490:lI121|H28004B4A0 -28004B4A0:lI115|H28004B4B0 -28004B4B0:lI116|H28004B4C0 -28004B4C0:lI101|H28004B4D0 -28004B4D0:lI109|H28004B4E0 -28004B4E0:lI32|H28004B4F0 -28004B4F0:lI119|H28004B500 -28004B500:lI105|H28004B510 -28004B510:lI108|H28004B520 -28004B520:lI108|H28004B530 -28004B530:lI32|H28004B540 -28004B540:lI99|H28004B550 -28004B550:lI111|H28004B560 -28004B560:lI110|H28004B570 -28004B570:lI116|H28004B580 -28004B580:lI105|H28004B590 -28004B590:lI110|H28004B5A0 -28004B5A0:lI117|H28004B5B0 -28004B5B0:lI101|H28004B5C0 -28004B5C0:lI32|H28004B5D0 -28004B5D0:lI116|H28004B5E0 -28004B5E0:lI111|H28004B5F0 -28004B5F0:lI32|H28004B600 -28004B600:lI114|H28004B610 -28004B610:lI101|H28004B620 -28004B620:lI97|H28004B630 -28004B630:lI100|H28004B640 -28004B640:lI32|H28004B650 -28004B650:lI102|H28004B660 -28004B660:lI114|H28004B670 -28004B670:lI111|H28004B680 -28004B680:lI109|H28004B690 -28004B690:lI32|H28004B6A0 -28004B6A0:lI116|H28004B6B0 -28004B6B0:lI104|H28004B6C0 -28004B6C0:lI101|H28004B6D0 -28004B6D0:lI32|H28004B6E0 -28004B6E0:lI102|H28004B6F0 -28004B6F0:lI105|H28004B700 -28004B700:lI108|H28004B710 -28004B710:lI101|H28004B720 -28004B720:lI32|H28004B730 -28004B730:lI100|H28004B740 -28004B740:lI101|H28004B750 -28004B750:lI115|H28004B760 -28004B760:lI99|H28004B770 -28004B770:lI114|H28004B780 -28004B780:lI105|H28004B790 -28004B790:lI112|H28004B7A0 -28004B7A0:lI116|H28004B7B0 -28004B7B0:lI111|H28004B7C0 -28004B7C0:lI114|H28004B7D0 -28004B7D0:lI32|H28004B7E0 -28004B7E0:lI97|H28004B7F0 -28004B7F0:lI110|H28004B800 -28004B800:lI100|H28004B810 -28004B810:lI32|H28004B820 -28004B820:lI119|H28004B830 -28004B830:lI105|H28004B840 -28004B840:lI108|H28004B850 -28004B850:lI108|H28004B860 -28004B860:lI32|H28004B870 -28004B870:lI98|H28004B880 -28004B880:lI101|H28004B890 -28004B890:lI32|H28004B8A0 -28004B8A0:lI98|H28004B8B0 -28004B8B0:lI108|H28004B8C0 -28004B8C0:lI111|H28004B8D0 -28004B8D0:lI99|H28004B8E0 -28004B8E0:lI107|H28004B8F0 -28004B8F0:lI101|H28004B900 -28004B900:lI100|H28004B910 -28004B910:lI32|H28004B920 -28004B920:lI117|H28004B930 -28004B930:lI110|H28004B940 -28004B940:lI116|H28004B950 -28004B950:lI105|H28004B960 -28004B960:lI108|H28004B970 -28004B970:lI32|H28004B980 -28004B980:lI101|H28004B990 -28004B990:lI110|H28004B9A0 -28004B9A0:lI100|H28004B9B0 -28004B9B0:lI32|H28004B9C0 -28004B9C0:lI111|H28004B9D0 -28004B9D0:lI102|H28004B9E0 -28004B9E0:lI32|H28004B9F0 -28004B9F0:lI102|H28004BA00 -28004BA00:lI105|H28004BA10 -28004BA10:lI108|H28004BA20 -28004BA20:lI101|H28004BA30 -28004BA30:lI32|H28004BA40 -28004BA40:lI105|H28004BA50 -28004BA50:lI115|H28004BA60 -28004BA60:lI32|H28004BA70 -28004BA70:lI114|H28004BA80 -28004BA80:lI101|H28004BA90 -28004BA90:lI99|H28004BAA0 -28004BAA0:lI101|H28004BAB0 -28004BAB0:lI105|H28004BAC0 -28004BAC0:lI118|H28004BAD0 -28004BAD0:lI101|H28004BAE0 -28004BAE0:lI100|H28004BAF0 -28004BAF0:lI46|N -28004BB00:t3:A4:line,A4:file,A3:mfa -28004BB20:Mf3:H28004BB00:I2094,H28004BB50,H28004BCF0 -28004BB50:lI97|H28004BB60 -28004BB60:lI112|H28004BB70 -28004BB70:lI112|H28004BB80 -28004BB80:lI108|H28004BB90 -28004BB90:lI105|H28004BBA0 -28004BBA0:lI99|H28004BBB0 -28004BBB0:lI97|H28004BBC0 -28004BBC0:lI116|H28004BBD0 -28004BBD0:lI105|H28004BBE0 -28004BBE0:lI111|H28004BBF0 -28004BBF0:lI110|H28004BC00 -28004BC00:lI95|H28004BC10 -28004BC10:lI99|H28004BC20 -28004BC20:lI111|H28004BC30 -28004BC30:lI110|H28004BC40 -28004BC40:lI116|H28004BC50 -28004BC50:lI114|H28004BC60 -28004BC60:lI111|H28004BC70 -28004BC70:lI108|H28004BC80 -28004BC80:lI108|H28004BC90 -28004BC90:lI101|H28004BCA0 -28004BCA0:lI114|H28004BCB0 -28004BCB0:lI46|H28004BCC0 -28004BCC0:lI101|H28004BCD0 -28004BCD0:lI114|H28004BCE0 -28004BCE0:lI108|N -28004BCF0:t3:A16:application_controller,A1B:read_fd_until_end_and_close,I3 -28004BD10:lA4:read|N -28004BD20:lI73|H28004BD30 -28004BD30:lI110|H28004BD40 -28004BD40:lI118|H28004BD50 -28004BD50:lI97|H28004BD60 -28004BD60:lI108|H28004BD70 -28004BD70:lI105|H28004BD80 -28004BD80:lI100|H28004BD90 -28004BD90:lI32|H28004BDA0 -28004BDA0:lI102|H28004BDB0 -28004BDB0:lI105|H28004BDC0 -28004BDC0:lI108|H28004BDD0 -28004BDD0:lI101|H28004BDE0 -28004BDE0:lI32|H28004BDF0 -28004BDF0:lI100|H28004BE00 -28004BE00:lI101|H28004BE10 -28004BE10:lI115|H28004BE20 -28004BE20:lI99|H28004BE30 -28004BE30:lI114|H28004BE40 -28004BE40:lI105|H28004BE50 -28004BE50:lI112|H28004BE60 -28004BE60:lI116|H28004BE70 -28004BE70:lI111|H28004BE80 -28004BE80:lI114|N -28004BE90:lI134217728|N -28004BEA0:lI77|H28004BEB0 -28004BEB0:lI97|H28004BEC0 -28004BEC0:lI120|H28004BED0 -28004BED0:lI32|H28004BEE0 -28004BEE0:lI115|H28004BEF0 -28004BEF0:lI105|H28004BF00 -28004BF00:lI122|H28004BF10 -28004BF10:lI101|H28004BF20 -28004BF20:lI32|H28004BF30 -28004BF30:lI126|H28004BF40 -28004BF40:lI119|H28004BF50 -28004BF50:lI32|H28004BF60 -28004BF60:lI98|H28004BF70 -28004BF70:lI121|H28004BF80 -28004BF80:lI116|H28004BF90 -28004BF90:lI101|H28004BFA0 -28004BFA0:lI115|H28004BFB0 -28004BFB0:lI32|H28004BFC0 -28004BFC0:lI101|H28004BFD0 -28004BFD0:lI120|H28004BFE0 -28004BFE0:lI99|H28004BFF0 -28004BFF0:lI101|H28004C000 -28004C000:lI101|H28004C010 -28004C010:lI100|H28004C020 -28004C020:lI101|H28004C030 -28004C030:lI100|N -28004C040:lI48|H28004C050 -28004C050:lI49|H28004C060 -28004C060:lI50|H28004C070 -28004C070:lI51|H28004C080 -28004C080:lI52|H28004C090 -28004C090:lI53|H28004C0A0 -28004C0A0:lI54|H28004C0B0 -28004C0B0:lI55|H28004C0C0 -28004C0C0:lI56|H28004C0D0 -28004C0D0:lI57|N -28004C0E0:lI126|H28004C0F0 -28004C0F0:lI116|H28004C100 -28004C100:lI112|H28004C110 -28004C110:lI58|H28004C120 -28004C120:lI32|H28004C130 -28004C130:lI126|H28004C140 -28004C140:lI119|H28004C150 -28004C150:lI58|H28004C160 -28004C160:lI32|H28004C170 -28004C170:lI126|H28004C180 -28004C180:lI116|H28004C190 -28004C190:lI115|H28004C1A0 -28004C1A0:lI126|H28004C1B0 -28004C1B0:lI110|N -28004C1C0:t3:A4:line,A4:file,A3:mfa -28004C1E0:Mf3:H28004C1C0:I1588,H28004C210,H28004C3B0 -28004C210:lI97|H28004C220 -28004C220:lI112|H28004C230 -28004C230:lI112|H28004C240 -28004C240:lI108|H28004C250 -28004C250:lI105|H28004C260 -28004C260:lI99|H28004C270 -28004C270:lI97|H28004C280 -28004C280:lI116|H28004C290 -28004C290:lI105|H28004C2A0 -28004C2A0:lI111|H28004C2B0 -28004C2B0:lI110|H28004C2C0 -28004C2C0:lI95|H28004C2D0 -28004C2D0:lI99|H28004C2E0 -28004C2E0:lI111|H28004C2F0 -28004C2F0:lI110|H28004C300 -28004C300:lI116|H28004C310 -28004C310:lI114|H28004C320 -28004C320:lI111|H28004C330 -28004C330:lI108|H28004C340 -28004C340:lI108|H28004C350 -28004C350:lI101|H28004C360 -28004C360:lI114|H28004C370 -28004C370:lI46|H28004C380 -28004C380:lI101|H28004C390 -28004C390:lI114|H28004C3A0 -28004C3A0:lI108|N -28004C3B0:t3:A16:application_controller,AE:do_change_apps,I3 -28004C3D0:lI108|N -28004C3E0:lI114|H28004C3D0 -28004C3F0:lI101|H28004C3E0 -28004C400:lI46|H28004C3F0 -28004C410:lI114|H28004C400 -28004C420:lI101|H28004C410 -28004C430:lI108|H28004C420 -28004C440:lI108|H28004C430 -28004C450:lI111|H28004C440 -28004C460:lI114|H28004C450 -28004C470:lI116|H28004C460 -28004C480:lI110|H28004C470 -28004C490:lI111|H28004C480 -28004C4A0:lI99|H28004C490 -28004C4B0:lI95|H28004C4A0 -28004C4C0:lI110|H28004C4B0 -28004C4D0:lI111|H28004C4C0 -28004C4E0:lI105|H28004C4D0 -28004C4F0:lI116|H28004C4E0 -28004C500:lI97|H28004C4F0 -28004C510:lI99|H28004C500 -28004C520:lI105|H28004C510 -28004C530:lI108|H28004C520 -28004C540:lI112|H28004C530 -28004C550:lI112|H28004C540 -28004C560:lI97|H28004C550 -28004C570:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAABAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEBYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C598:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAEAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEEYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C5C0:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAFAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEFYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C5E8:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAGAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEGYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C610:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAIAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEIYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C638:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAJAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEJYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C660:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAAMAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEMYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C688:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAANAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmENYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C6B0:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAPAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEPYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C6D8:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAARAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmERYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C700:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAASAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmESYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C728:E5A:g3AAAABYAQnO5ercdDL+Dqkv8OJgo/EAAAATAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmETYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C750:E5A:g3AAAABYAgnO5ercdDL+Dqkv8OJgo/EAAAAUAAAAAHcWYXBwbGljYXRpb25fY29udHJvbGxlcmEUYgBOdy9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28004C778:t2:A5:label,A6:report -28004C790:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -280052908:lAB:named_table|H280052918 -280052918:lA9:protected|N -280052928:lI108|H280052938 -280052938:lI105|H280052948 -280052948:lI98|N -280052958:lI46|N -280052968:lI69|H280052978 -280052978:lI82|H280052988 -280052988:lI76|H280052998 -280052998:lI95|H2800529A8 -2800529A8:lI76|H2800529B8 -2800529B8:lI73|H2800529C8 -2800529C8:lI66|H2800529D8 -2800529D8:lI83|N -2800529E8:lA5:flush|N -2800529F8:t2:A6:module,AB:code_server -280052A10:lI32|H280052A20 -280052A20:lI42|H280052A30 -280052A30:lI42|H280052A40 -280052A40:lI32|H280052A50 -280052A50:lI67|H280052A60 -280052A60:lI111|H280052A70 -280052A70:lI100|H280052A80 -280052A80:lI101|H280052A90 -280052A90:lI115|H280052AA0 -280052AA0:lI101|H280052AB0 -280052AB0:lI114|H280052AC0 -280052AC0:lI118|H280052AD0 -280052AD0:lI101|H280052AE0 -280052AE0:lI114|H280052AF0 -280052AF0:lI42|H280052B00 -280052B00:lI42|H280052B10 -280052B10:lI42|H280052B20 -280052B20:lI32|H280052B30 -280052B30:lI105|H280052B40 -280052B40:lI103|H280052B50 -280052B50:lI110|H280052B60 -280052B60:lI111|H280052B70 -280052B70:lI114|H280052B80 -280052B80:lI105|H280052B90 -280052B90:lI110|H280052BA0 -280052BA0:lI103|H280052BB0 -280052BB0:lI32|H280052BC0 -280052BC0:lI126|H280052BD0 -280052BD0:lI119|H280052BE0 -280052BE0:lI126|H280052BF0 -280052BF0:lI110|H280052C00 -280052C00:lI32|N -280052C10:lI0|N -280052C20:lI101|H280052C30 -280052C30:lI98|H280052C40 -280052C40:lI105|H280052C50 -280052C50:lI110|N -280052C60:lH280052C70|N -280052C70:lI101|H280052C80 -280052C80:lI98|H280052C90 -280052C90:lI105|H280052CA0 -280052CA0:lI110|N -280052CB0:t2:A2:ok,H280052CC8 -280052CC8:lH280052CD8|N -280052CD8:lH280052CE8|N -280052CE8:lI102|H280052CF8 -280052CF8:lI97|H280052D08 -280052D08:lI108|H280052D18 -280052D18:lI115|H280052D28 -280052D28:lI101|N -280052D38:lI45|N -280052D48:t2:A5:error,AD:bad_directory -280052D60:lAB:named_table|H280052D70 -280052D70:lA6:public|N -280052D80:lI101|H280052D90 -280052D90:lI114|H280052DA0 -280052DA0:lI116|H280052DB0 -280052DB0:lI115|N -280052DC0:t2:A5:error,A8:bad_name -280052DD8:lI99|H280052DE8 -280052DE8:lI111|H280052DF8 -280052DF8:lI109|H280052E08 -280052E08:lI112|H280052E18 -280052E18:lI105|H280052E28 -280052E28:lI108|H280052E38 -280052E38:lI101|H280052E48 -280052E48:lI114|N -280052E58:lI67|H280052E68 -280052E68:lI97|H280052E78 -280052E78:lI110|H280052E88 -280052E88:lI39|H280052E98 -280052E98:lI116|H280052EA8 -280052EA8:lI32|H280052EB8 -280052EB8:lI108|H280052EC8 -280052EC8:lI111|H280052ED8 -280052ED8:lI97|H280052EE8 -280052EE8:lI100|H280052EF8 -280052EF8:lI32|H280052F08 -280052F08:lI109|H280052F18 -280052F18:lI111|H280052F28 -280052F28:lI100|H280052F38 -280052F38:lI117|H280052F48 -280052F48:lI108|H280052F58 -280052F58:lI101|H280052F68 -280052F68:lI32|H280052F78 -280052F78:lI39|H280052F88 -280052F88:lI126|H280052F98 -280052F98:lI119|H280052FA8 -280052FA8:lI39|H280052FB8 -280052FB8:lI32|H280052FC8 -280052FC8:lI116|H280052FD8 -280052FD8:lI104|H280052FE8 -280052FE8:lI97|H280052FF8 -280052FF8:lI116|H280053008 -280053008:lI32|H280053018 -280053018:lI114|H280053028 -280053028:lI101|H280053038 -280053038:lI115|H280053048 -280053048:lI105|H280053058 -280053058:lI100|H280053068 -280053068:lI101|H280053078 -280053078:lI115|H280053088 -280053088:lI32|H280053098 -280053098:lI105|H2800530A8 -2800530A8:lI110|H2800530B8 -2800530B8:lI32|H2800530C8 -2800530C8:lI115|H2800530D8 -2800530D8:lI116|H2800530E8 -2800530E8:lI105|H2800530F8 -2800530F8:lI99|H280053108 -280053108:lI107|H280053118 -280053118:lI121|H280053128 -280053128:lI32|H280053138 -280053138:lI100|H280053148 -280053148:lI105|H280053158 -280053158:lI114|H280053168 -280053168:lI10|N -280053178:t2:A5:error,A10:sticky_directory -280053190:t2:A4:true,A7:nocache -2800531A8:t2:A5:false,A5:cache -2800531C0:lI58|H2800531D0 -2800531D0:lI47|N -2800531E0:t2:A5:error,A7:on_load -2800531F8:t2:A5:error,A8:deadlock -280053210:t2:A5:error,AF:on_load_failure -280053228:lH280053238|N -280053238:t3:H280053258,H280053270,H280053298 -280053258:t2:A2:$1,A1:_ -280053270:lH280053280|N -280053280:t2:A7:is_atom,A2:$1 -280053298:lA2:$_|N -2800532A8:Mf0:H280010188: -2800532C0:t1:A3:tag -2800532D0:Mf1:H2800532C0:A5:error -2800532F0:t2:AB:code_server,A5:error -280053308:t1:A3:tag -280053318:Mf1:H280053308:A8:info_msg -280053338:lI10|N -280053348:lI84|H280053358 -280053358:lI104|H280053368 -280053368:lI101|H280053378 -280053378:lI32|H280053388 -280053388:lI111|H280053398 -280053398:lI110|H2800533A8 -2800533A8:lI95|H2800533B8 -2800533B8:lI108|H2800533C8 -2800533C8:lI111|H2800533D8 -2800533D8:lI97|H2800533E8 -2800533E8:lI100|H2800533F8 -2800533F8:lI32|H280053408 -280053408:lI102|H280053418 -280053418:lI117|H280053428 -280053428:lI110|H280053438 -280053438:lI99|H280053448 -280053448:lI116|H280053458 -280053458:lI105|H280053468 -280053468:lI111|H280053478 -280053478:lI110|H280053488 -280053488:lI32|H280053498 -280053498:lI102|H2800534A8 -2800534A8:lI111|H2800534B8 -2800534B8:lI114|H2800534C8 -2800534C8:lI32|H2800534D8 -2800534D8:lI109|H2800534E8 -2800534E8:lI111|H2800534F8 -2800534F8:lI100|H280053508 -280053508:lI117|H280053518 -280053518:lI108|H280053528 -280053528:lI101|H280053538 -280053538:lI32|H280053548 -280053548:lI126|H280053558 -280053558:lI115|H280053568 -280053568:lI32|H280053578 -280053578:lI114|H280053588 -280053588:lI101|H280053598 -280053598:lI116|H2800535A8 -2800535A8:lI117|H2800535B8 -2800535B8:lI114|H2800535C8 -2800535C8:lI110|H2800535D8 -2800535D8:lI101|H2800535E8 -2800535E8:lI100|H2800535F8 -2800535F8:lI58|H280053608 -280053608:lI126|H280053618 -280053618:lI110|H280053628 -280053628:lI126|H280053638 -280053638:lI80|H280053648 -280053648:lI10|N -280053658:lI76|H280053668 -280053668:lI111|H280053678 -280053678:lI97|H280053688 -280053688:lI100|H280053698 -280053698:lI105|H2800536A8 -2800536A8:lI110|H2800536B8 -2800536B8:lI103|H2800536C8 -2800536C8:lI32|H2800536D8 -2800536D8:lI111|H2800536E8 -2800536E8:lI102|H2800536F8 -2800536F8:lI32|H280053708 -280053708:lI126|H280053718 -280053718:lI116|H280053728 -280053728:lI115|H280053738 -280053738:lI32|H280053748 -280053748:lI102|H280053758 -280053758:lI97|H280053768 -280053768:lI105|H280053778 -280053778:lI108|H280053788 -280053788:lI101|H280053798 -280053798:lI100|H2800537A8 -2800537A8:lI58|H2800537B8 -2800537B8:lI32|H2800537C8 -2800537C8:lI126|H2800537D8 -2800537D8:lI112|H2800537E8 -2800537E8:lI10|N -2800537F8:t2:A5:error,A8:embedded -280053810:t2:A5:error,A6:nofile -280053828:lI108|N -280053838:lI114|H280053828 -280053848:lI101|H280053838 -280053858:lI46|H280053848 -280053868:lI114|H280053858 -280053878:lI101|H280053868 -280053888:lI118|H280053878 -280053898:lI114|H280053888 -2800538A8:lI101|H280053898 -2800538B8:lI115|H2800538A8 -2800538C8:lI95|H2800538B8 -2800538D8:lI101|H2800538C8 -2800538E8:lI100|H2800538D8 -2800538F8:lI111|H2800538E8 -280053908:lI99|H2800538F8 -280053918:E4F:g3AAAABNAdRDfzF//Rs9hGTt7lEXZC0AAAADAAAAAHcLY29kZV9zZXJ2ZXJhA2IGohv5WHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280053940:E4F:g3AAAABNAdRDfzF//Rs9hGTt7lEXZC0AAAAEAAAAAHcLY29kZV9zZXJ2ZXJhBGIGohv5WHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280053968:t4:AC:error_logger,A3:pid,A4:time,A2:gl -28005A0C0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -28005A0F8:Mf6:H28005A0C0:AC:logger_proxy,A9:temporary,I2000,H28005A150,A6:worker,H28005A140 -28005A140:lAC:logger_proxy|N -28005A150:t3:AC:logger_proxy,AA:start_link,N -28005A170:t2:A2:ok,A8:no_state -28005A188:lA9:nosuspend|N -28005A198:t2:A2:ok,H28005A1B0 -28005A1B0:E1B:g3F3DGxvZ2dlcl9wcm94eXcHcmVzdGFydGEA -28005A1D8:lI126|H28005A1E8 -28005A1E8:lI119|H28005A1F8 -28005A1F8:lI32|H28005A208 -28005A208:lI115|H28005A218 -28005A218:lI119|H28005A228 -28005A228:lI105|H28005A238 -28005A238:lI116|H28005A248 -28005A248:lI99|H28005A258 -28005A258:lI104|H28005A268 -28005A268:lI101|H28005A278 -28005A278:lI100|H28005A288 -28005A288:lI32|H28005A298 -28005A298:lI102|H28005A2A8 -28005A2A8:lI114|H28005A2B8 -28005A2B8:lI111|H28005A2C8 -28005A2C8:lI109|H28005A2D8 -28005A2D8:lI32|H28005A2E8 -28005A2E8:lI126|H28005A2F8 -28005A2F8:lI119|H28005A308 -28005A308:lI32|H28005A318 -28005A318:lI116|H28005A328 -28005A328:lI111|H28005A338 -28005A338:lI32|H28005A348 -28005A348:lI126|H28005A358 -28005A358:lI119|H28005A368 -28005A368:lI32|H28005A378 -28005A378:lI109|H28005A388 -28005A388:lI111|H28005A398 -28005A398:lI100|H28005A3A8 -28005A3A8:lI101|N -28005A3B8:t3:A4:line,A4:file,A3:mfa -28005A3D8:Mf3:H28005A3B8:I158,H28005A408,H28005A508 -28005A408:lI108|H28005A418 -28005A418:lI111|H28005A428 -28005A428:lI103|H28005A438 -28005A438:lI103|H28005A448 -28005A448:lI101|H28005A458 -28005A458:lI114|H28005A468 -28005A468:lI95|H28005A478 -28005A478:lI112|H28005A488 -28005A488:lI114|H28005A498 -28005A498:lI111|H28005A4A8 -28005A4A8:lI120|H28005A4B8 -28005A4B8:lI121|H28005A4C8 -28005A4C8:lI46|H28005A4D8 -28005A4D8:lI101|H28005A4E8 -28005A4E8:lI114|H28005A4F8 -28005A4F8:lI108|N -28005A508:t3:AC:logger_proxy,A6:notify,I2 -28005A528:Mf0:H280010188: -28005A540:lI126|H28005A550 -28005A550:lI119|H28005A560 -28005A560:lI32|H28005A570 -28005A570:lI102|H28005A580 -28005A580:lI108|H28005A590 -28005A590:lI117|H28005A5A0 -28005A5A0:lI115|H28005A5B0 -28005A5B0:lI104|H28005A5C0 -28005A5C0:lI101|H28005A5D0 -28005A5D0:lI100|H28005A5E0 -28005A5E0:lI32|H28005A5F0 -28005A5F0:lI126|H28005A600 -28005A600:lI119|H28005A610 -28005A610:lI32|H28005A620 -28005A620:lI108|H28005A630 -28005A630:lI111|H28005A640 -28005A640:lI103|H28005A650 -28005A650:lI32|H28005A660 -28005A660:lI101|H28005A670 -28005A670:lI118|H28005A680 -28005A680:lI101|H28005A690 -28005A690:lI110|H28005A6A0 -28005A6A0:lI116|H28005A6B0 -28005A6B0:lI115|N -28005A6C0:t3:A4:line,A4:file,A3:mfa -28005A6E0:Mf3:H28005A6C0:I161,H28005A710,H28005A810 -28005A710:lI108|H28005A720 -28005A720:lI111|H28005A730 -28005A730:lI103|H28005A740 -28005A740:lI103|H28005A750 -28005A750:lI101|H28005A760 -28005A760:lI114|H28005A770 -28005A770:lI95|H28005A780 -28005A780:lI112|H28005A790 -28005A790:lI114|H28005A7A0 -28005A7A0:lI111|H28005A7B0 -28005A7B0:lI120|H28005A7C0 -28005A7C0:lI121|H28005A7D0 -28005A7D0:lI46|H28005A7E0 -28005A7E0:lI101|H28005A7F0 -28005A7F0:lI114|H28005A800 -28005A800:lI108|N -28005A810:t3:AC:logger_proxy,A6:notify,I2 -28005A830:t3:A4:line,A4:file,A3:mfa -28005A850:Mf3:H28005A830:I164,H28005A880,H28005A980 -28005A880:lI108|H28005A890 -28005A890:lI111|H28005A8A0 -28005A8A0:lI103|H28005A8B0 -28005A8B0:lI103|H28005A8C0 -28005A8C0:lI101|H28005A8D0 -28005A8D0:lI114|H28005A8E0 -28005A8E0:lI95|H28005A8F0 -28005A8F0:lI112|H28005A900 -28005A900:lI114|H28005A910 -28005A910:lI111|H28005A920 -28005A920:lI120|H28005A930 -28005A930:lI121|H28005A940 -28005A940:lI46|H28005A950 -28005A950:lI101|H28005A960 -28005A960:lI114|H28005A970 -28005A970:lI108|N -28005A980:t3:AC:logger_proxy,A6:notify,I2 -28005A9A0:lH28005A9C0|H28005A9B0 -28005A9B0:lH28005AA80|N -28005A9C0:lI126|H28005A9D0 -28005A9D0:lI119|H28005A9E0 -28005A9E0:lI32|H28005A9F0 -28005A9F0:lI114|H28005AA00 -28005AA00:lI101|H28005AA10 -28005AA10:lI115|H28005AA20 -28005AA20:lI116|H28005AA30 -28005AA30:lI97|H28005AA40 -28005AA40:lI114|H28005AA50 -28005AA50:lI116|H28005AA60 -28005AA60:lI101|H28005AA70 -28005AA70:lI100|N -28005AA80:lAC:logger_proxy|N -28005AA90:t2:AC:logger_proxy,AA:log_failed -28005AAA8:t3:A4:line,A4:file,A3:mfa -28005AAC8:Mf3:H28005AAA8:I174,H28005AAF8,H28005ABF8 -28005AAF8:lI108|H28005AB08 -28005AB08:lI111|H28005AB18 -28005AB18:lI103|H28005AB28 -28005AB28:lI103|H28005AB38 -28005AB38:lI101|H28005AB48 -28005AB48:lI114|H28005AB58 -28005AB58:lI95|H28005AB68 -28005AB68:lI112|H28005AB78 -28005AB78:lI114|H28005AB88 -28005AB88:lI111|H28005AB98 -28005AB98:lI120|H28005ABA8 -28005ABA8:lI121|H28005ABB8 -28005ABB8:lI46|H28005ABC8 -28005ABC8:lI101|H28005ABD8 -28005ABD8:lI114|H28005ABE8 -28005ABE8:lI108|N -28005ABF8:t3:AC:logger_proxy,A7:try_log,I1 -28005AC18:lI108|N -28005AC28:lI114|H28005AC18 -28005AC38:lI101|H28005AC28 -28005AC48:lI46|H28005AC38 -28005AC58:lI121|H28005AC48 -28005AC68:lI120|H28005AC58 -28005AC78:lI111|H28005AC68 -28005AC88:lI114|H28005AC78 -28005AC98:lI112|H28005AC88 -28005ACA8:lI95|H28005AC98 -28005ACB8:lI114|H28005ACA8 -28005ACC8:lI101|H28005ACB8 -28005ACD8:lI103|H28005ACC8 -28005ACE8:lI103|H28005ACD8 -28005ACF8:lI111|H28005ACE8 -28005AD08:lI108|H28005ACF8 -28005B2F8:t2:N,N -28005B310:t2:A5:empty,H28005B328 -28005B328:t2:N,N -28005B340:lH28005B350|N -28005B350:t2:N,N -28005B368:lI108|N -28005B378:lI114|H28005B368 -28005B388:lI101|H28005B378 -28005B398:lI46|H28005B388 -28005B3A8:lI101|H28005B398 -28005B3B8:lI117|H28005B3A8 -28005B3C8:lI101|H28005B3B8 -28005B3D8:lI117|H28005B3C8 -28005B3E8:lI113|H28005B3D8 -280061C80:t2:I0,A3:nil -280061C98:t2:I1,I1 -280061CB0:t2:I1,I0 -280061CC8:lI108|N -280061CD8:lI114|H280061CC8 -280061CE8:lI101|H280061CD8 -280061CF8:lI46|H280061CE8 -280061D08:lI115|H280061CF8 -280061D18:lI101|H280061D08 -280061D28:lI101|H280061D18 -280061D38:lI114|H280061D28 -280061D48:lI116|H280061D38 -280061D58:lI95|H280061D48 -280061D68:lI98|H280061D58 -280061D78:lI103|H280061D68 -280068C20:t2:A5:local,A12:standard_error_sup -280068C38:lA3:out|H280068C48 -280068C48:lA6:binary|N -280068C58:t2:A5:error,AB:no_stderror -280068C70:t3:A2:fd,I2,I2 -280068C90:lA6:native|N -280068CA0:t2:A5:error,H280068CB8 -280068CB8:t2:A5:error,A9:put_chars -280068CD0:t2:A2:ok,A2:ok -280068CE8:t2:A5:error,H280068D00 -280068D00:t2:A5:error,A7:enotsup -280068D18:t2:A8:encoding,A4:utf8 -280068D30:t2:A8:encoding,A7:unicode -280068D48:t2:A8:encoding,A6:latin1 -280068D60:lI13|H280068D70 -280068D70:lI10|N -280068D80:lI125|N -280068D90:lI92|H280068DA0 -280068DA0:lI120|H280068DB0 -280068DB0:lI123|N -280068DC0:lI108|N -280068DD0:lI114|H280068DC0 -280068DE0:lI101|H280068DD0 -280068DF0:lI46|H280068DE0 -280068E00:lI114|H280068DF0 -280068E10:lI111|H280068E00 -280068E20:lI114|H280068E10 -280068E30:lI114|H280068E20 -280068E40:lI101|H280068E30 -280068E50:lI95|H280068E40 -280068E60:lI100|H280068E50 -280068E70:lI114|H280068E60 -280068E80:lI97|H280068E70 -280068E90:lI100|H280068E80 -280068EA0:lI110|H280068E90 -280068EB0:lI97|H280068EA0 -280068EC0:lI116|H280068EB0 -280068ED0:lI115|H280068EC0 -280068EE0:E52:g3AAAABQAerTAUbpHNfN5LUoR+s7ypAAAAABAAAAAHcOc3RhbmRhcmRfZXJyb3JhAWIHVpgKWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280070EF0:lH280070F00|N -280070F00:t2:A9:spawn_opt,H280070F18 -280070F18:lH280070F28|N -280070F28:t2:A12:message_queue_data,A8:off_heap -280070F40:t2:A5:local,A3:rex -280070F58:Mf0:H280010188: -280070F70:t2:A6:badrpc,H280070F88 -280070F88:t2:A4:EXIT,AC:system_limit -280070FA0:lA4:erpc|N -280070FB0:t2:A6:badrpc,A7:timeout -280070FC8:t2:A6:badrpc,A6:notsup -280070FE0:t2:A6:badrpc,A8:nodedown -280070FF8:t2:A5:error,A8:nodedown -280071010:lA5:flush|N -280071020:t2:A4:erpc,A6:badarg -280071038:t2:A5:error,A7:enotsup -280071050:t2:A5:error,A7:request -280071068:lH280071088|H280071078 -280071078:lA9:protected|N -280071088:t2:A10:read_concurrency,A4:true -2800710A0:lI108|N -2800710B0:lI114|H2800710A0 -2800710C0:lI101|H2800710B0 -2800710D0:lI46|H2800710C0 -2800710E0:lI99|H2800710D0 -2800710F0:lI112|H2800710E0 -280071100:lI114|H2800710F0 -280071110:t1:AE:nodes_observer -280071120:E47:g3AAAABFAIbTaQSrg2lQNTtMKFV2UOkAAAACAAAAAHcDcnBjYQJiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280071148:E47:g3AAAABFAIbTaQSrg2lQNTtMKFV2UOkAAAADAAAAAHcDcnBjYQNiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280071170:E47:g3AAAABFAYbTaQSrg2lQNTtMKFV2UOkAAAAHAAAAAHcDcnBjYQdiBDabSFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800711F8:t2:A5:local,A12:global_name_server -280071210:t2:A2:ok,A5:allow -280071228:lI103|H280071238 -280071238:lI108|H280071248 -280071248:lI111|H280071258 -280071258:lI98|H280071268 -280071268:lI97|H280071278 -280071278:lI108|H280071288 -280071288:lI58|H280071298 -280071298:lI32|H2800712A8 -2800712A8:lI126|H2800712B8 -2800712B8:lI119|H2800712C8 -2800712C8:lI32|H2800712D8 -2800712D8:lI114|H2800712E8 -2800712E8:lI101|H2800712F8 -2800712F8:lI103|H280071308 -280071308:lI105|H280071318 -280071318:lI115|H280071328 -280071328:lI116|H280071338 -280071338:lI101|H280071348 -280071348:lI114|H280071358 -280071358:lI101|H280071368 -280071368:lI100|H280071378 -280071378:lI32|H280071388 -280071388:lI117|H280071398 -280071398:lI110|H2800713A8 -2800713A8:lI100|H2800713B8 -2800713B8:lI101|H2800713C8 -2800713C8:lI114|H2800713D8 -2800713D8:lI32|H2800713E8 -2800713E8:lI115|H2800713F8 -2800713F8:lI101|H280071408 -280071408:lI118|H280071418 -280071418:lI101|H280071428 -280071428:lI114|H280071438 -280071438:lI97|H280071448 -280071448:lI108|H280071458 -280071458:lI32|H280071468 -280071468:lI110|H280071478 -280071478:lI97|H280071488 -280071488:lI109|H280071498 -280071498:lI101|H2800714A8 -2800714A8:lI115|H2800714B8 -2800714B8:lI58|H2800714C8 -2800714C8:lI32|H2800714D8 -2800714D8:lI126|H2800714E8 -2800714E8:lI116|H2800714F8 -2800714F8:lI119|H280071508 -280071508:lI10|N -280071518:lH280071528|N -280071528:t3:H280071548,N,H280071570 -280071548:t4:A2:$1,A2:$2,A2:$3,A2:$4 -280071570:lA2:$1|N -280071580:t1:AD:connection_id -280071590:Mf1:H280071580:A4:true -2800715B0:Mf0:H280010188: -2800715C8:lA3:set|H2800715D8 -2800715D8:lAB:named_table|H2800715E8 -2800715E8:lA9:protected|N -2800715F8:lA3:set|H280071608 -280071608:lAB:named_table|H280071618 -280071618:lA9:protected|H280071628 -280071628:lH280071638|N -280071638:t2:A10:read_concurrency,A4:true -280071650:lA3:bag|H280071660 -280071660:lAB:named_table|H280071670 -280071670:lA9:protected|N -280071680:lI71|H280071690 -280071690:lI76|H2800716A0 -2800716A0:lI79|H2800716B0 -2800716B0:lI66|H2800716C0 -2800716C0:lI65|H2800716D0 -2800716D0:lI76|H2800716E0 -2800716E0:lI95|H2800716F0 -2800716F0:lI72|H280071700 -280071700:lI73|H280071710 -280071710:lI71|H280071720 -280071720:lI72|H280071730 -280071730:lI95|H280071740 -280071740:lI76|H280071750 -280071750:lI69|H280071760 -280071760:lI86|H280071770 -280071770:lI69|H280071780 -280071780:lI76|H280071790 -280071790:lI95|H2800717A0 -2800717A0:lI84|H2800717B0 -2800717B0:lI82|H2800717C0 -2800717C0:lI65|H2800717D0 -2800717D0:lI67|H2800717E0 -2800717E0:lI69|N -2800717F0:lI84|H280071800 -280071800:lI82|H280071810 -280071810:lI85|H280071820 -280071820:lI69|N -280071830:lI102|H280071840 -280071840:lI97|H280071850 -280071850:lI108|H280071860 -280071860:lI115|H280071870 -280071870:lI101|N -280071880:lH280071890|N -280071890:t2:A7:timeout,A8:infinity -2800718A8:t2:A8:do_trace,A5:false -2800718C0:t2:A8:do_trace,A4:true -2800718D8:lI84|H2800718E8 -2800718E8:lI104|H2800718F8 -2800718F8:lI101|H280071908 -280071908:lI32|H280071918 -280071918:lI103|H280071928 -280071928:lI108|H280071938 -280071938:lI111|H280071948 -280071948:lI98|H280071958 -280071958:lI97|H280071968 -280071968:lI108|H280071978 -280071978:lI95|H280071988 -280071988:lI110|H280071998 -280071998:lI97|H2800719A8 -2800719A8:lI109|H2800719B8 -2800719B8:lI101|H2800719C8 -2800719C8:lI95|H2800719D8 -2800719D8:lI115|H2800719E8 -2800719E8:lI101|H2800719F8 -2800719F8:lI114|H280071A08 -280071A08:lI118|H280071A18 -280071A18:lI101|H280071A28 -280071A28:lI114|H280071A38 -280071A38:lI32|H280071A48 -280071A48:lI114|H280071A58 -280071A58:lI101|H280071A68 -280071A68:lI99|H280071A78 -280071A78:lI101|H280071A88 -280071A88:lI105|H280071A98 -280071A98:lI118|H280071AA8 -280071AA8:lI101|H280071AB8 -280071AB8:lI100|H280071AC8 -280071AC8:lI32|H280071AD8 -280071AD8:lI97|H280071AE8 -280071AE8:lI110|H280071AF8 -280071AF8:lI32|H280071B08 -280071B08:lI117|H280071B18 -280071B18:lI110|H280071B28 -280071B28:lI101|H280071B38 -280071B38:lI120|H280071B48 -280071B48:lI112|H280071B58 -280071B58:lI101|H280071B68 -280071B68:lI99|H280071B78 -280071B78:lI116|H280071B88 -280071B88:lI101|H280071B98 -280071B98:lI100|H280071BA8 -280071BA8:lI32|H280071BB8 -280071BB8:lI109|H280071BC8 -280071BC8:lI101|H280071BD8 -280071BD8:lI115|H280071BE8 -280071BE8:lI115|H280071BF8 -280071BF8:lI97|H280071C08 -280071C08:lI103|H280071C18 -280071C18:lI101|H280071C28 -280071C28:lI58|H280071C38 -280071C38:lI10|H280071C48 -280071C48:lI104|H280071C58 -280071C58:lI97|H280071C68 -280071C68:lI110|H280071C78 -280071C78:lI100|H280071C88 -280071C88:lI108|H280071C98 -280071C98:lI101|H280071CA8 -280071CA8:lI95|H280071CB8 -280071CB8:lI99|H280071CC8 -280071CC8:lI97|H280071CD8 -280071CD8:lI108|H280071CE8 -280071CE8:lI108|H280071CF8 -280071CF8:lI40|H280071D08 -280071D08:lI126|H280071D18 -280071D18:lI116|H280071D28 -280071D28:lI112|H280071D38 -280071D38:lI44|H280071D48 -280071D48:lI32|H280071D58 -280071D58:lI126|H280071D68 -280071D68:lI116|H280071D78 -280071D78:lI112|H280071D88 -280071D88:lI44|H280071D98 -280071D98:lI32|H280071DA8 -280071DA8:lI95|H280071DB8 -280071DB8:lI41|H280071DC8 -280071DC8:lI10|N -280071DD8:lI73|H280071DE8 -280071DE8:lI108|H280071DF8 -280071DF8:lI108|H280071E08 -280071E08:lI101|H280071E18 -280071E18:lI103|H280071E28 -280071E28:lI97|H280071E38 -280071E38:lI108|H280071E48 -280071E48:lI32|H280071E58 -280071E58:lI103|H280071E68 -280071E68:lI108|H280071E78 -280071E78:lI111|H280071E88 -280071E88:lI98|H280071E98 -280071E98:lI97|H280071EA8 -280071EA8:lI108|H280071EB8 -280071EB8:lI32|H280071EC8 -280071EC8:lI112|H280071ED8 -280071ED8:lI114|H280071EE8 -280071EE8:lI111|H280071EF8 -280071EF8:lI116|H280071F08 -280071F08:lI111|H280071F18 -280071F18:lI99|H280071F28 -280071F28:lI111|H280071F38 -280071F38:lI108|H280071F48 -280071F48:lI32|H280071F58 -280071F58:lI118|H280071F68 -280071F68:lI101|H280071F78 -280071F78:lI114|H280071F88 -280071F88:lI115|H280071F98 -280071F98:lI105|H280071FA8 -280071FA8:lI111|H280071FB8 -280071FB8:lI110|H280071FC8 -280071FC8:lI32|H280071FD8 -280071FD8:lI126|H280071FE8 -280071FE8:lI112|H280071FF8 -280071FF8:lI32|H280072008 -280072008:lI78|H280072018 -280072018:lI111|H280072028 -280072028:lI100|H280072038 -280072038:lI101|H280072048 -280072048:lI58|H280072058 -280072058:lI32|H280072068 -280072068:lI126|H280072078 -280072078:lI112|H280072088 -280072088:lI10|N -280072098:lI84|H2800720A8 -2800720A8:lI104|H2800720B8 -2800720B8:lI101|H2800720C8 -2800720C8:lI32|H2800720D8 -2800720D8:lI103|H2800720E8 -2800720E8:lI108|H2800720F8 -2800720F8:lI111|H280072108 -280072108:lI98|H280072118 -280072118:lI97|H280072128 -280072128:lI108|H280072138 -280072138:lI95|H280072148 -280072148:lI110|H280072158 -280072158:lI97|H280072168 -280072168:lI109|H280072178 -280072178:lI101|H280072188 -280072188:lI95|H280072198 -280072198:lI115|H2800721A8 -2800721A8:lI101|H2800721B8 -2800721B8:lI114|H2800721C8 -2800721C8:lI118|H2800721D8 -2800721D8:lI101|H2800721E8 -2800721E8:lI114|H2800721F8 -2800721F8:lI32|H280072208 -280072208:lI114|H280072218 -280072218:lI101|H280072228 -280072228:lI99|H280072238 -280072238:lI101|H280072248 -280072248:lI105|H280072258 -280072258:lI118|H280072268 -280072268:lI101|H280072278 -280072278:lI100|H280072288 -280072288:lI32|H280072298 -280072298:lI97|H2800722A8 -2800722A8:lI110|H2800722B8 -2800722B8:lI32|H2800722C8 -2800722C8:lI117|H2800722D8 -2800722D8:lI110|H2800722E8 -2800722E8:lI101|H2800722F8 -2800722F8:lI120|H280072308 -280072308:lI112|H280072318 -280072318:lI101|H280072328 -280072328:lI99|H280072338 -280072338:lI116|H280072348 -280072348:lI101|H280072358 -280072358:lI100|H280072368 -280072368:lI32|H280072378 -280072378:lI109|H280072388 -280072388:lI101|H280072398 -280072398:lI115|H2800723A8 -2800723A8:lI115|H2800723B8 -2800723B8:lI97|H2800723C8 -2800723C8:lI103|H2800723D8 -2800723D8:lI101|H2800723E8 -2800723E8:lI58|H2800723F8 -2800723F8:lI10|H280072408 -280072408:lI104|H280072418 -280072418:lI97|H280072428 -280072428:lI110|H280072438 -280072438:lI100|H280072448 -280072448:lI108|H280072458 -280072458:lI101|H280072468 -280072468:lI95|H280072478 -280072478:lI99|H280072488 -280072488:lI97|H280072498 -280072498:lI115|H2800724A8 -2800724A8:lI116|H2800724B8 -2800724B8:lI40|H2800724C8 -2800724C8:lI126|H2800724D8 -2800724D8:lI116|H2800724E8 -2800724E8:lI112|H2800724F8 -2800724F8:lI44|H280072508 -280072508:lI32|H280072518 -280072518:lI95|H280072528 -280072528:lI41|H280072538 -280072538:lI10|N -280072548:t3:A4:conf,A4:true,A4:true -280072568:lI100|H280072578 -280072578:lI105|H280072588 -280072588:lI115|H280072598 -280072598:lI99|H2800725A8 -2800725A8:lI111|H2800725B8 -2800725B8:lI110|H2800725C8 -2800725C8:lI110|H2800725D8 -2800725D8:lI101|H2800725E8 -2800725E8:lI99|H2800725F8 -2800725F8:lI116|H280072608 -280072608:lI101|H280072618 -280072618:lI100|H280072628 -280072628:lI32|H280072638 -280072638:lI111|H280072648 -280072648:lI108|H280072658 -280072658:lI100|N -280072668:lI101|H280072678 -280072678:lI120|H280072688 -280072688:lI99|H280072698 -280072698:lI108|H2800726A8 -2800726A8:lI117|H2800726B8 -2800726B8:lI100|H2800726C8 -2800726C8:lI101|H2800726D8 -2800726D8:lI100|H2800726E8 -2800726E8:lI32|H2800726F8 -2800726F8:lI103|H280072708 -280072708:lI108|H280072718 -280072718:lI111|H280072728 -280072728:lI98|H280072738 -280072738:lI97|H280072748 -280072748:lI108|H280072758 -280072758:lI32|H280072768 -280072768:lI103|H280072778 -280072778:lI114|H280072788 -280072788:lI111|H280072798 -280072798:lI117|H2800727A8 -2800727A8:lI112|H2800727B8 -2800727B8:lI32|H2800727C8 -2800727C8:lI109|H2800727D8 -2800727D8:lI101|H2800727E8 -2800727E8:lI109|H2800727F8 -2800727F8:lI98|H280072808 -280072808:lI101|H280072818 -280072818:lI114|N -280072828:lI114|H280072838 -280072838:lI101|H280072848 -280072848:lI113|H280072858 -280072858:lI117|H280072868 -280072868:lI101|H280072878 -280072878:lI115|H280072888 -280072888:lI116|H280072898 -280072898:lI101|H2800728A8 -2800728A8:lI100|H2800728B8 -2800728B8:lI32|H2800728C8 -2800728C8:lI100|H2800728D8 -2800728D8:lI105|H2800728E8 -2800728E8:lI115|H2800728F8 -2800728F8:lI99|H280072908 -280072908:lI111|H280072918 -280072918:lI110|H280072928 -280072928:lI110|H280072938 -280072938:lI101|H280072948 -280072948:lI99|H280072958 -280072958:lI116|H280072968 -280072968:lI32|H280072978 -280072978:lI102|H280072988 -280072988:lI114|H280072998 -280072998:lI111|H2800729A8 -2800729A8:lI109|N -2800729B8:lI39|H2800729C8 -2800729C8:lI103|H2800729D8 -2800729D8:lI108|H2800729E8 -2800729E8:lI111|H2800729F8 -2800729F8:lI98|H280072A08 -280072A08:lI97|H280072A18 -280072A18:lI108|H280072A28 -280072A28:lI39|H280072A38 -280072A38:lI32|H280072A48 -280072A48:lI97|H280072A58 -280072A58:lI116|H280072A68 -280072A68:lI32|H280072A78 -280072A78:lI110|H280072A88 -280072A88:lI111|H280072A98 -280072A98:lI100|H280072AA8 -280072AA8:lI101|H280072AB8 -280072AB8:lI32|H280072AC8 -280072AC8:lI126|H280072AD8 -280072AD8:lI112|H280072AE8 -280072AE8:lI32|H280072AF8 -280072AF8:lI126|H280072B08 -280072B08:lI115|H280072B18 -280072B18:lI32|H280072B28 -280072B28:lI110|H280072B38 -280072B38:lI111|H280072B48 -280072B48:lI100|H280072B58 -280072B58:lI101|H280072B68 -280072B68:lI32|H280072B78 -280072B78:lI126|H280072B88 -280072B88:lI112|H280072B98 -280072B98:lI32|H280072BA8 -280072BA8:lI105|H280072BB8 -280072BB8:lI110|H280072BC8 -280072BC8:lI32|H280072BD8 -280072BD8:lI111|H280072BE8 -280072BE8:lI114|H280072BF8 -280072BF8:lI100|H280072C08 -280072C08:lI101|H280072C18 -280072C18:lI114|H280072C28 -280072C28:lI32|H280072C38 -280072C38:lI116|H280072C48 -280072C48:lI111|H280072C58 -280072C58:lI32|H280072C68 -280072C68:lI112|H280072C78 -280072C78:lI114|H280072C88 -280072C88:lI101|H280072C98 -280072C98:lI118|H280072CA8 -280072CA8:lI101|H280072CB8 -280072CB8:lI110|H280072CC8 -280072CC8:lI116|H280072CD8 -280072CD8:lI32|H280072CE8 -280072CE8:lI111|H280072CF8 -280072CF8:lI118|H280072D08 -280072D08:lI101|H280072D18 -280072D18:lI114|H280072D28 -280072D28:lI108|H280072D38 -280072D38:lI97|H280072D48 -280072D48:lI112|H280072D58 -280072D58:lI112|H280072D68 -280072D68:lI105|H280072D78 -280072D78:lI110|H280072D88 -280072D88:lI103|H280072D98 -280072D98:lI32|H280072DA8 -280072DA8:lI112|H280072DB8 -280072DB8:lI97|H280072DC8 -280072DC8:lI114|H280072DD8 -280072DD8:lI116|H280072DE8 -280072DE8:lI105|H280072DF8 -280072DF8:lI116|H280072E08 -280072E08:lI105|H280072E18 -280072E18:lI111|H280072E28 -280072E28:lI110|H280072E38 -280072E38:lI115|N -280072E48:t3:A4:conf,A5:false,A5:false -280072E68:lI100|H280072E78 -280072E78:lI105|H280072E88 -280072E88:lI115|H280072E98 -280072E98:lI99|H280072EA8 -280072EA8:lI111|H280072EB8 -280072EB8:lI110|H280072EC8 -280072EC8:lI110|H280072ED8 -280072ED8:lI101|H280072EE8 -280072EE8:lI99|H280072EF8 -280072EF8:lI116|H280072F08 -280072F08:lI101|H280072F18 -280072F18:lI100|N -280072F28:lI62|H280072F38 -280072F38:lI62|H280072F48 -280072F48:lI62|H280072F58 -280072F58:lI62|H280072F68 -280072F68:lI32|H280072F78 -280072F78:lI126|H280072F88 -280072F88:lI112|H280072F98 -280072F98:lI10|N -280072FA8:lI84|H280072FB8 -280072FB8:lI104|H280072FC8 -280072FC8:lI101|H280072FD8 -280072FD8:lI32|H280072FE8 -280072FE8:lI103|H280072FF8 -280072FF8:lI108|H280073008 -280073008:lI111|H280073018 -280073018:lI98|H280073028 -280073028:lI97|H280073038 -280073038:lI108|H280073048 -280073048:lI95|H280073058 -280073058:lI110|H280073068 -280073068:lI97|H280073078 -280073078:lI109|H280073088 -280073088:lI101|H280073098 -280073098:lI95|H2800730A8 -2800730A8:lI115|H2800730B8 -2800730B8:lI101|H2800730C8 -2800730C8:lI114|H2800730D8 -2800730D8:lI118|H2800730E8 -2800730E8:lI101|H2800730F8 -2800730F8:lI114|H280073108 -280073108:lI32|H280073118 -280073118:lI114|H280073128 -280073128:lI101|H280073138 -280073138:lI99|H280073148 -280073148:lI101|H280073158 -280073158:lI105|H280073168 -280073168:lI118|H280073178 -280073178:lI101|H280073188 -280073188:lI100|H280073198 -280073198:lI32|H2800731A8 -2800731A8:lI97|H2800731B8 -2800731B8:lI110|H2800731C8 -2800731C8:lI32|H2800731D8 -2800731D8:lI117|H2800731E8 -2800731E8:lI110|H2800731F8 -2800731F8:lI101|H280073208 -280073208:lI120|H280073218 -280073218:lI112|H280073228 -280073228:lI101|H280073238 -280073238:lI99|H280073248 -280073248:lI116|H280073258 -280073258:lI101|H280073268 -280073268:lI100|H280073278 -280073278:lI32|H280073288 -280073288:lI109|H280073298 -280073298:lI101|H2800732A8 -2800732A8:lI115|H2800732B8 -2800732B8:lI115|H2800732C8 -2800732C8:lI97|H2800732D8 -2800732D8:lI103|H2800732E8 -2800732E8:lI101|H2800732F8 -2800732F8:lI58|H280073308 -280073308:lI10|H280073318 -280073318:lI104|H280073328 -280073328:lI97|H280073338 -280073338:lI110|H280073348 -280073348:lI100|H280073358 -280073358:lI108|H280073368 -280073368:lI101|H280073378 -280073378:lI95|H280073388 -280073388:lI105|H280073398 -280073398:lI110|H2800733A8 -2800733A8:lI102|H2800733B8 -2800733B8:lI111|H2800733C8 -2800733C8:lI40|H2800733D8 -2800733D8:lI126|H2800733E8 -2800733E8:lI116|H2800733F8 -2800733F8:lI112|H280073408 -280073408:lI44|H280073418 -280073418:lI32|H280073428 -280073428:lI95|H280073438 -280073438:lI41|H280073448 -280073448:lI10|N -280073458:lI39|H280073468 -280073468:lI103|H280073478 -280073478:lI108|H280073488 -280073488:lI111|H280073498 -280073498:lI98|H2800734A8 -2800734A8:lI97|H2800734B8 -2800734B8:lI108|H2800734C8 -2800734C8:lI39|H2800734D8 -2800734D8:lI32|H2800734E8 -2800734E8:lI97|H2800734F8 -2800734F8:lI116|H280073508 -280073508:lI32|H280073518 -280073518:lI110|H280073528 -280073528:lI111|H280073538 -280073538:lI100|H280073548 -280073548:lI101|H280073558 -280073558:lI32|H280073568 -280073568:lI126|H280073578 -280073578:lI112|H280073588 -280073588:lI32|H280073598 -280073598:lI103|H2800735A8 -2800735A8:lI111|H2800735B8 -2800735B8:lI116|H2800735C8 -2800735C8:lI32|H2800735D8 -2800735D8:lI97|H2800735E8 -2800735E8:lI110|H2800735F8 -2800735F8:lI32|H280073608 -280073608:lI111|H280073618 -280073618:lI117|H280073628 -280073628:lI116|H280073638 -280073638:lI32|H280073648 -280073648:lI111|H280073658 -280073658:lI102|H280073668 -280073668:lI32|H280073678 -280073678:lI115|H280073688 -280073688:lI121|H280073698 -280073698:lI110|H2800736A8 -2800736A8:lI99|H2800736B8 -2800736B8:lI32|H2800736C8 -2800736C8:lI99|H2800736D8 -2800736D8:lI111|H2800736E8 -2800736E8:lI110|H2800736F8 -2800736F8:lI110|H280073708 -280073708:lI101|H280073718 -280073718:lI99|H280073728 -280073728:lI116|H280073738 -280073738:lI105|H280073748 -280073748:lI111|H280073758 -280073758:lI110|H280073768 -280073768:lI32|H280073778 -280073778:lI97|H280073788 -280073788:lI116|H280073798 -280073798:lI116|H2800737A8 -2800737A8:lI101|H2800737B8 -2800737B8:lI109|H2800737C8 -2800737C8:lI112|H2800737D8 -2800737D8:lI116|H2800737E8 -2800737E8:lI32|H2800737F8 -2800737F8:lI102|H280073808 -280073808:lI114|H280073818 -280073818:lI111|H280073828 -280073828:lI109|H280073838 -280073838:lI32|H280073848 -280073848:lI111|H280073858 -280073858:lI108|H280073868 -280073868:lI100|H280073878 -280073878:lI32|H280073888 -280073888:lI118|H280073898 -280073898:lI101|H2800738A8 -2800738A8:lI114|H2800738B8 -2800738B8:lI115|H2800738C8 -2800738C8:lI105|H2800738D8 -2800738D8:lI111|H2800738E8 -2800738E8:lI110|H2800738F8 -2800738F8:lI32|H280073908 -280073908:lI126|H280073918 -280073918:lI112|H280073928 -280073928:lI32|H280073938 -280073938:lI110|H280073948 -280073948:lI111|H280073958 -280073958:lI100|H280073968 -280073968:lI101|H280073978 -280073978:lI32|H280073988 -280073988:lI126|H280073998 -280073998:lI112|H2800739A8 -2800739A8:lI46|H2800739B8 -2800739B8:lI32|H2800739C8 -2800739C8:lI68|H2800739D8 -2800739D8:lI105|H2800739E8 -2800739E8:lI115|H2800739F8 -2800739F8:lI99|H280073A08 -280073A08:lI111|H280073A18 -280073A18:lI110|H280073A28 -280073A28:lI110|H280073A38 -280073A38:lI101|H280073A48 -280073A48:lI99|H280073A58 -280073A58:lI116|H280073A68 -280073A68:lI105|H280073A78 -280073A78:lI110|H280073A88 -280073A88:lI103|H280073A98 -280073A98:lI32|H280073AA8 -280073AA8:lI102|H280073AB8 -280073AB8:lI114|H280073AC8 -280073AC8:lI111|H280073AD8 -280073AD8:lI109|H280073AE8 -280073AE8:lI32|H280073AF8 -280073AF8:lI105|H280073B08 -280073B08:lI116|H280073B18 -280073B18:lI46|N -280073B28:t2:A4:true,N -280073B40:lA5:flush|N -280073B50:lA15:allow_passive_connect|N -280073B60:lI39|H280073B70 -280073B70:lI103|H280073B80 -280073B80:lI108|H280073B90 -280073B90:lI111|H280073BA0 -280073BA0:lI98|H280073BB0 -280073BB0:lI97|H280073BC0 -280073BC0:lI108|H280073BD0 -280073BD0:lI39|H280073BE0 -280073BE0:lI32|H280073BF0 -280073BF0:lI97|H280073C00 -280073C00:lI116|H280073C10 -280073C10:lI32|H280073C20 -280073C20:lI126|H280073C30 -280073C30:lI119|H280073C40 -280073C40:lI32|H280073C50 -280073C50:lI102|H280073C60 -280073C60:lI97|H280073C70 -280073C70:lI105|H280073C80 -280073C80:lI108|H280073C90 -280073C90:lI101|H280073CA0 -280073CA0:lI100|H280073CB0 -280073CB0:lI32|H280073CC0 -280073CC0:lI116|H280073CD0 -280073CD0:lI111|H280073CE0 -280073CE0:lI32|H280073CF0 -280073CF0:lI99|H280073D00 -280073D00:lI111|H280073D10 -280073D10:lI110|H280073D20 -280073D20:lI110|H280073D30 -280073D30:lI101|H280073D40 -280073D40:lI99|H280073D50 -280073D50:lI116|H280073D60 -280073D60:lI32|H280073D70 -280073D70:lI116|H280073D80 -280073D80:lI111|H280073D90 -280073D90:lI32|H280073DA0 -280073DA0:lI126|H280073DB0 -280073DB0:lI119|H280073DC0 -280073DC0:lI10|N -280073DD0:lA9:noconnect|N -280073DE0:lI103|H280073DF0 -280073DF0:lI108|H280073E00 -280073E00:lI111|H280073E10 -280073E10:lI98|H280073E20 -280073E20:lI97|H280073E30 -280073E30:lI108|H280073E40 -280073E40:lI58|H280073E50 -280073E50:lI32|H280073E60 -280073E60:lI98|H280073E70 -280073E70:lI97|H280073E80 -280073E80:lI100|H280073E90 -280073E90:lI114|H280073EA0 -280073EA0:lI112|H280073EB0 -280073EB0:lI99|H280073EC0 -280073EC0:lI32|H280073ED0 -280073ED0:lI126|H280073EE0 -280073EE0:lI119|H280073EF0 -280073EF0:lI32|H280073F00 -280073F00:lI114|H280073F10 -280073F10:lI101|H280073F20 -280073F20:lI99|H280073F30 -280073F30:lI101|H280073F40 -280073F40:lI105|H280073F50 -280073F50:lI118|H280073F60 -280073F60:lI101|H280073F70 -280073F70:lI100|H280073F80 -280073F80:lI32|H280073F90 -280073F90:lI119|H280073FA0 -280073FA0:lI104|H280073FB0 -280073FB0:lI101|H280073FC0 -280073FC0:lI110|H280073FD0 -280073FD0:lI32|H280073FE0 -280073FE0:lI99|H280073FF0 -280073FF0:lI111|H280074000 -280074000:lI110|H280074010 -280074010:lI102|H280074020 -280074020:lI108|H280074030 -280074030:lI105|H280074040 -280074040:lI99|H280074050 -280074050:lI116|H280074060 -280074060:lI105|H280074070 -280074070:lI110|H280074080 -280074080:lI103|H280074090 -280074090:lI32|H2800740A0 -2800740A0:lI110|H2800740B0 -2800740B0:lI97|H2800740C0 -2800740C0:lI109|H2800740D0 -2800740D0:lI101|H2800740E0 -2800740E0:lI32|H2800740F0 -2800740F0:lI126|H280074100 -280074100:lI116|H280074110 -280074110:lI119|H280074120 -280074120:lI32|H280074130 -280074130:lI119|H280074140 -280074140:lI97|H280074150 -280074150:lI115|H280074160 -280074160:lI32|H280074170 -280074170:lI102|H280074180 -280074180:lI111|H280074190 -280074190:lI117|H2800741A0 -2800741A0:lI110|H2800741B0 -2800741B0:lI100|H2800741C0 -2800741C0:lI10|N -2800741D0:lI103|H2800741E0 -2800741E0:lI108|H2800741F0 -2800741F0:lI111|H280074200 -280074200:lI98|H280074210 -280074210:lI97|H280074220 -280074220:lI108|H280074230 -280074230:lI58|H280074240 -280074240:lI32|H280074250 -280074250:lI82|H280074260 -280074260:lI101|H280074270 -280074270:lI115|H280074280 -280074280:lI111|H280074290 -280074290:lI108|H2800742A0 -2800742A0:lI118|H2800742B0 -2800742B0:lI101|H2800742C0 -2800742C0:lI32|H2800742D0 -2800742D0:lI109|H2800742E0 -2800742E0:lI101|H2800742F0 -2800742F0:lI116|H280074300 -280074300:lI104|H280074310 -280074310:lI111|H280074320 -280074320:lI100|H280074330 -280074330:lI32|H280074340 -280074340:lI126|H280074350 -280074350:lI119|H280074360 -280074360:lI32|H280074370 -280074370:lI102|H280074380 -280074380:lI111|H280074390 -280074390:lI114|H2800743A0 -2800743A0:lI32|H2800743B0 -2800743B0:lI99|H2800743C0 -2800743C0:lI111|H2800743D0 -2800743D0:lI110|H2800743E0 -2800743E0:lI102|H2800743F0 -2800743F0:lI108|H280074400 -280074400:lI105|H280074410 -280074410:lI99|H280074420 -280074420:lI116|H280074430 -280074430:lI105|H280074440 -280074440:lI110|H280074450 -280074450:lI103|H280074460 -280074460:lI32|H280074470 -280074470:lI110|H280074480 -280074480:lI97|H280074490 -280074490:lI109|H2800744A0 -2800744A0:lI101|H2800744B0 -2800744B0:lI32|H2800744C0 -2800744C0:lI126|H2800744D0 -2800744D0:lI116|H2800744E0 -2800744E0:lI119|H2800744F0 -2800744F0:lI32|H280074500 -280074500:lI114|H280074510 -280074510:lI101|H280074520 -280074520:lI116|H280074530 -280074530:lI117|H280074540 -280074540:lI114|H280074550 -280074550:lI110|H280074560 -280074560:lI101|H280074570 -280074570:lI100|H280074580 -280074580:lI32|H280074590 -280074590:lI126|H2800745A0 -2800745A0:lI116|H2800745B0 -2800745B0:lI119|H2800745C0 -2800745C0:lI10|N -2800745D0:lI103|H2800745E0 -2800745E0:lI108|H2800745F0 -2800745F0:lI111|H280074600 -280074600:lI98|H280074610 -280074610:lI97|H280074620 -280074620:lI108|H280074630 -280074630:lI58|H280074640 -280074640:lI32|H280074650 -280074650:lI78|H280074660 -280074660:lI97|H280074670 -280074670:lI109|H280074680 -280074680:lI101|H280074690 -280074690:lI32|H2800746A0 -2800746A0:lI99|H2800746B0 -2800746B0:lI111|H2800746C0 -2800746C0:lI110|H2800746D0 -2800746D0:lI102|H2800746E0 -2800746E0:lI108|H2800746F0 -2800746F0:lI105|H280074700 -280074700:lI99|H280074710 -280074710:lI116|H280074720 -280074720:lI32|H280074730 -280074730:lI116|H280074740 -280074740:lI101|H280074750 -280074750:lI114|H280074760 -280074760:lI109|H280074770 -280074770:lI105|H280074780 -280074780:lI110|H280074790 -280074790:lI97|H2800747A0 -2800747A0:lI116|H2800747B0 -2800747B0:lI105|H2800747C0 -2800747C0:lI110|H2800747D0 -2800747D0:lI103|H2800747E0 -2800747E0:lI32|H2800747F0 -2800747F0:lI126|H280074800 -280074800:lI116|H280074810 -280074810:lI119|H280074820 -280074820:lI10|N -280074830:lA9:monotonic|N -280074840:t3:A9:undefined,A9:undefined,A9:undefined -280074860:lH280074880|H280074870 -280074870:lH280074898|N -280074880:t2:A5:async,A4:true -280074898:t2:A4:info,A5:false -2800748B0:lH2800748C0|N -2800748C0:t3:H2800748E0,N,H280074908 -2800748E0:t4:A2:$1,A2:$2,A2:$3,A2:$4 -280074908:lH280074918|N -280074918:t1:H280074928 -280074928:t3:A2:$1,A2:$2,A2:$3 -280074948:lI84|H280074958 -280074958:lI114|H280074968 -280074968:lI121|H280074978 -280074978:lI105|H280074988 -280074988:lI110|H280074998 -280074998:lI103|H2800749A8 -2800749A8:lI32|H2800749B8 -2800749B8:lI116|H2800749C8 -2800749C8:lI111|H2800749D8 -2800749D8:lI32|H2800749E8 -2800749E8:lI115|H2800749F8 -2800749F8:lI121|H280074A08 -280074A08:lI110|H280074A18 -280074A18:lI99|H280074A28 -280074A28:lI32|H280074A38 -280074A38:lI110|H280074A48 -280074A48:lI111|H280074A58 -280074A58:lI100|H280074A68 -280074A68:lI101|H280074A78 -280074A78:lI115|H280074A88 -280074A88:lI32|H280074A98 -280074A98:lI110|H280074AA8 -280074AA8:lI111|H280074AB8 -280074AB8:lI116|H280074AC8 -280074AC8:lI32|H280074AD8 -280074AD8:lI100|H280074AE8 -280074AE8:lI101|H280074AF8 -280074AF8:lI102|H280074B08 -280074B08:lI105|H280074B18 -280074B18:lI110|H280074B28 -280074B28:lI101|H280074B38 -280074B38:lI100|H280074B48 -280074B48:lI32|H280074B58 -280074B58:lI105|H280074B68 -280074B68:lI110|H280074B78 -280074B78:lI32|H280074B88 -280074B88:lI116|H280074B98 -280074B98:lI104|H280074BA8 -280074BA8:lI101|H280074BB8 -280074BB8:lI32|H280074BC8 -280074BC8:lI111|H280074BD8 -280074BD8:lI119|H280074BE8 -280074BE8:lI110|H280074BF8 -280074BF8:lI32|H280074C08 -280074C08:lI103|H280074C18 -280074C18:lI108|H280074C28 -280074C28:lI111|H280074C38 -280074C38:lI98|H280074C48 -280074C48:lI97|H280074C58 -280074C58:lI108|H280074C68 -280074C68:lI32|H280074C78 -280074C78:lI103|H280074C88 -280074C88:lI114|H280074C98 -280074C98:lI111|H280074CA8 -280074CA8:lI117|H280074CB8 -280074CB8:lI112|N -280074CC8:lI103|H280074CD8 -280074CD8:lI108|H280074CE8 -280074CE8:lI111|H280074CF8 -280074CF8:lI98|H280074D08 -280074D08:lI97|H280074D18 -280074D18:lI108|H280074D28 -280074D28:lI95|H280074D38 -280074D38:lI103|H280074D48 -280074D48:lI114|H280074D58 -280074D58:lI111|H280074D68 -280074D68:lI117|H280074D78 -280074D78:lI112|H280074D88 -280074D88:lI115|H280074D98 -280074D98:lI32|H280074DA8 -280074DA8:lI100|H280074DB8 -280074DB8:lI101|H280074DC8 -280074DC8:lI102|H280074DD8 -280074DD8:lI105|H280074DE8 -280074DE8:lI110|H280074DF8 -280074DF8:lI105|H280074E08 -280074E08:lI116|H280074E18 -280074E18:lI105|H280074E28 -280074E28:lI111|H280074E38 -280074E38:lI110|H280074E48 -280074E48:lI32|H280074E58 -280074E58:lI101|H280074E68 -280074E68:lI114|H280074E78 -280074E78:lI114|H280074E88 -280074E88:lI111|H280074E98 -280074E98:lI114|N -280074EA8:lI84|H280074EB8 -280074EB8:lI104|H280074EC8 -280074EC8:lI101|H280074ED8 -280074ED8:lI32|H280074EE8 -280074EE8:lI103|H280074EF8 -280074EF8:lI108|H280074F08 -280074F08:lI111|H280074F18 -280074F18:lI98|H280074F28 -280074F28:lI97|H280074F38 -280074F38:lI108|H280074F48 -280074F48:lI95|H280074F58 -280074F58:lI110|H280074F68 -280074F68:lI97|H280074F78 -280074F78:lI109|H280074F88 -280074F88:lI101|H280074F98 -280074F98:lI95|H280074FA8 -280074FA8:lI115|H280074FB8 -280074FB8:lI101|H280074FC8 -280074FC8:lI114|H280074FD8 -280074FD8:lI118|H280074FE8 -280074FE8:lI101|H280074FF8 -280074FF8:lI114|H280075008 -280075008:lI32|H280075018 -280075018:lI126|H280075028 -280075028:lI119|H280075038 -280075038:lI32|H280075048 -280075048:lI112|H280075058 -280075058:lI114|H280075068 -280075068:lI111|H280075078 -280075078:lI99|H280075088 -280075088:lI101|H280075098 -280075098:lI115|H2800750A8 -2800750A8:lI115|H2800750B8 -2800750B8:lI32|H2800750C8 -2800750C8:lI114|H2800750D8 -2800750D8:lI101|H2800750E8 -2800750E8:lI99|H2800750F8 -2800750F8:lI101|H280075108 -280075108:lI105|H280075118 -280075118:lI118|H280075128 -280075128:lI101|H280075138 -280075138:lI100|H280075148 -280075148:lI32|H280075158 -280075158:lI97|H280075168 -280075168:lI110|H280075178 -280075178:lI32|H280075188 -280075188:lI117|H280075198 -280075198:lI110|H2800751A8 -2800751A8:lI101|H2800751B8 -2800751B8:lI120|H2800751C8 -2800751C8:lI112|H2800751D8 -2800751D8:lI101|H2800751E8 -2800751E8:lI99|H2800751F8 -2800751F8:lI116|H280075208 -280075208:lI101|H280075218 -280075218:lI100|H280075228 -280075228:lI32|H280075238 -280075238:lI109|H280075248 -280075248:lI101|H280075258 -280075258:lI115|H280075268 -280075268:lI115|H280075278 -280075278:lI97|H280075288 -280075288:lI103|H280075298 -280075298:lI101|H2800752A8 -2800752A8:lI58|H2800752B8 -2800752B8:lI10|H2800752C8 -2800752C8:lI126|H2800752D8 -2800752D8:lI116|H2800752E8 -2800752E8:lI112|H2800752F8 -2800752F8:lI10|N -280075308:lI108|N -280075318:lI114|H280075308 -280075328:lI101|H280075318 -280075338:lI46|H280075328 -280075348:lI108|H280075338 -280075358:lI97|H280075348 -280075368:lI98|H280075358 -280075378:lI111|H280075368 -280075388:lI108|H280075378 -280075398:lI103|H280075388 -2800753A8:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAAAAAAAAHcGZ2xvYmFsYQBiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800753D0:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAFAAAAAHcGZ2xvYmFsYQViBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800753F8:B1152921504606846975 -280075408:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAAGAAAAAHcGZ2xvYmFsYQZiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075430:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAHAAAAAHcGZ2xvYmFsYQdiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075458:E4A:g3AAAABIA79fDarOZVmFQtYEsqv4Sd0AAAALAAAAAHcGZ2xvYmFsYQtiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075480:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAANAAAAAHcGZ2xvYmFsYQ1iBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800754A8:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAATAAAAAHcGZ2xvYmFsYRNiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800754D0:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAXAAAAAHcGZ2xvYmFsYRdiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800754F8:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAZAAAAAHcGZ2xvYmFsYRliBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075520:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAbAAAAAHcGZ2xvYmFsYRtiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075548:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAcAAAAAHcGZ2xvYmFsYRxiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075570:E4A:g3AAAABIAr9fDarOZVmFQtYEsqv4Sd0AAAAdAAAAAHcGZ2xvYmFsYR1iBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280075598:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAgAAAAAHcGZ2xvYmFsYSBiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800755C0:E4A:g3AAAABIAb9fDarOZVmFQtYEsqv4Sd0AAAAhAAAAAHcGZ2xvYmFsYSFiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800755E8:E4A:g3AAAABIAL9fDarOZVmFQtYEsqv4Sd0AAAAiAAAAAHcGZ2xvYmFsYSJiBfr4bVh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280078CF0:F1A:1.11022302462515654042e-16 -280078D00:F1A:5.55111512312578270212e-17 -280078D10:F1A:2.77555756156289135106e-17 -280078D20:F1A:1.38777878078144567553e-17 -280078D30:F1A:2.00000000000000000000e+00 -280078D40:Yh0: -280078D50:t100:H280079558,H280079580,H2800795A8,H2800795D0,H2800795F8,H280079620,H280079648,H280079670,H280079698,H2800796C0,H2800796E8,H280079710,H280079738,H280079760,H280079788,H2800797B0,H2800797D8,H280079800,H280079828,H280079850,H280079878,H2800798A0,H2800798C8,H2800798F0,H280079918,H280079940,H280079968,H280079990,H2800799B8,H2800799E0,H280079A08,H280079A30,H280079A58,H280079A80,H280079AA8,H280079AD0,H280079AF8,H280079B20,H280079B48,H280079B70,H280079B98,H280079BC0,H280079BE8,H280079C10,H280079C38,H280079C60,H280079C88,H280079CB0,H280079CD8,H280079D00,H280079D28,H280079D50,H280079D78,H280079DA0,H280079DC8,H280079DF0,H280079E18,H280079E40,H280079E68,H280079E90,H280079EB8,H280079EE0,H280079F08,H280079F30,H280079F58,H280079F80,H280079FA8,H280079FD0,H280079FF8,H28007A020,H28007A048,H28007A070,H28007A098,H28007A0C0,H28007A0E8,H28007A110,H28007A138,H28007A160,H28007A188,H28007A1B0,H28007A1D8,H28007A200,H28007A228,H28007A250,H28007A278,H28007A2A0,H28007A2C8,H28007A2F0,H28007A318,H28007A340,H28007A368,H28007A390,H28007A3B8,H28007A3E0,H28007A408,H28007A430,H28007A458,H28007A480,H28007A4A8,H28007A4D0,H28007A4F8,H28007A520,H28007A548,H28007A570,H28007A598,H28007A5C0,H28007A5E8,H28007A610,H28007A638,H28007A660,H28007A688,H28007A6B0,H28007A6D8,H28007A700,H28007A728,H28007A750,H28007A778,H28007A7A0,H28007A7C8,H28007A7F0,H28007A818,H28007A840,H28007A868,H28007A890,H28007A8B8,H28007A8E0,H28007A908,H28007A930,H28007A958,H28007A980,H28007A9A8,H28007A9D0,H28007A9F8,H28007AA20,H28007AA48,H28007AA70,H28007AA98,H28007AAC0,H28007AAE8,H28007AB10,H28007AB38,H28007AB60,H28007AB88,H28007ABB0,H28007ABD8,H28007AC00,H28007AC28,H28007AC50,H28007AC78,H28007ACA0,H28007ACC8,H28007ACF0,H28007AD18,H28007AD40,H28007AD68,H28007AD90,H28007ADB8,H28007ADE0,H28007AE08,H28007AE30,H28007AE58,H28007AE80,H28007AEA8,H28007AED0,H28007AEF8,H28007AF20,H28007AF48,H28007AF70,H28007AF98,H28007AFC0,H28007AFE8,H28007B010,H28007B038,H28007B060,H28007B088,H28007B0B0,H28007B0D8,H28007B100,H28007B128,H28007B150,H28007B178,H28007B1A0,H28007B1C8,H28007B1F0,H28007B218,H28007B240,H28007B268,H28007B290,H28007B2B8,H28007B2E0,H28007B308,H28007B330,H28007B358,H28007B380,H28007B3A8,H28007B3D0,H28007B3F8,H28007B420,H28007B448,H28007B470,H28007B498,H28007B4C0,H28007B4E8,H28007B510,H28007B538,H28007B560,H28007B588,H28007B5B0,H28007B5D8,H28007B600,H28007B628,H28007B650,H28007B678,H28007B6A0,H28007B6C8,H28007B6F0,H28007B718,H28007B740,H28007B768,H28007B790,H28007B7B8,H28007B7E0,H28007B808,H28007B830,H28007B858,H28007B880,H28007B8A8,H28007B8D0,H28007B8F8,H28007B920,H28007B948,H28007B970,H28007B998,H28007B9C0,H28007B9E8,H28007BA10,H28007BA38,H28007BA60,H28007BA88,H28007BAB0,H28007BAD8,H28007BB00,H28007BB28,H28007BB50,H28007BB78,H28007BBA0,H28007BBC8,H28007BBF0,H28007BC18,H28007BC40,H28007BC68,H28007BC90,H28007BCB8,H28007BCE0,H28007BD08,H28007BD30 -280079558:t2:I2104047571236786,H280079570 -280079570:F1A:1.73672541216026300829e-15 -280079580:t2:I0,H280079598 -280079598:F1A:9.55866035145563388593e-17 -2800795A8:t2:I1693657211986787,H2800795C0 -2800795C0:F1A:1.27087048348106232125e-16 -2800795D0:t2:I1919380038271141,H2800795E8 -2800795E8:F1A:1.49097409624954739056e-16 -2800795F8:t2:I2015384402196343,H280079610 -280079610:F1A:1.66587336315862684825e-16 -280079620:t2:I2068365869448128,H280079638 -280079638:F1A:1.81361208101190286598e-16 -280079648:t2:I2101878624052573,H280079660 -280079660:F1A:1.94297201531355877741e-16 -280079670:t2:I2124958784102998,H280079688 -280079688:F1A:2.05895006284820926559e-16 -280079698:t2:I2141808670795147,H2800796B0 -2800796B0:F1A:2.16468605768954222017e-16 -2800796C0:t2:I2154644611568301,H2800796D8 -2800796D8:F1A:2.26229403922181158232e-16 -2800796E8:t2:I2164744887587275,H280079700 -280079700:F1A:2.35327189140458915861e-16 -280079710:t2:I2172897953696594,H280079728 -280079728:F1A:2.43872345574287710295e-16 -280079738:t2:I2179616279372365,H280079750 -280079750:F1A:2.51948798292742250158e-16 -280079760:t2:I2185247251868649,H280079778 -280079778:F1A:2.59621997725281025263e-16 -280079788:t2:I2190034623107822,H2800797A0 -2800797A0:F1A:2.66944074736482849525e-16 -2800797B0:t2:I2194154434521197,H2800797C8 -2800797C8:F1A:2.73957296851424460024e-16 -2800797D8:t2:I2197736978774660,H2800797F0 -2800797F0:F1A:2.80696460024848035749e-16 -280079800:t2:I2200880740891961,H280079818 -280079818:F1A:2.87190589041139304275e-16 -280079828:t2:I2203661538010620,H280079840 -280079840:F1A:2.93464174847288832596e-16 -280079850:t2:I2206138681109102,H280079868 -280079868:F1A:2.99538093367821129281e-16 -280079878:t2:I2208359231806599,H280079890 -280079890:F1A:3.05430300071924403235e-16 -2800798A0:t2:I2210361007258210,H2800798B8 -2800798B8:F1A:3.11156363389215722701e-16 -2800798C8:t2:I2212174742388539,H2800798E0 -2800798E0:F1A:3.16729880185818151712e-16 -2800798F0:t2:I2213825672704646,H280079908 -280079908:F1A:3.22162803505499051688e-16 -280079918:t2:I2215334711002614,H280079930 -280079930:F1A:3.27465704079397507757e-16 -280079940:t2:I2216719334487595,H280079958 -280079958:F1A:3.32647981168417099987e-16 -280079968:t2:I2217994262139172,H280079980 -280079980:F1A:3.37718034173532322460e-16 -280079990:t2:I2219171977965032,H2800799A8 -2800799A8:F1A:3.42683403531193559494e-16 -2800799B8:t2:I2220263139538712,H2800799D0 -2800799D0:F1A:3.47550887317297581051e-16 -2800799E0:t2:I2221276900117330,H2800799F8 -2800799F8:F1A:3.52326638460020314094e-16 -280079A08:t2:I2222221164932930,H280079A20 -280079A20:F1A:3.57016246339534940285e-16 -280079A30:t2:I2223102796829069,H280079A48 -280079A48:F1A:3.61624805715983390475e-16 -280079A58:t2:I2223927782546658,H280079A70 -280079A70:F1A:3.66156975296535397983e-16 -280079A80:t2:I2224701368170060,H280079A98 -280079A98:F1A:3.70617027772360773203e-16 -280079AA8:t2:I2225428170204312,H280079AC0 -280079AC0:F1A:3.75008892787477978824e-16 -280079AD0:t2:I2226112267248242,H280079AE8 -280079AE8:F1A:3.79336194015495537551e-16 -280079AF8:t2:I2226757276105256,H280079B10 -280079B10:F1A:3.83602281296772790489e-16 -280079B20:t2:I2227366415328399,H280079B38 -280079B38:F1A:3.87810258612502468569e-16 -280079B48:t2:I2227942558554684,H280079B60 -280079B60:F1A:3.91963008532576783898e-16 -280079B70:t2:I2228488279492521,H280079B88 -280079B88:F1A:3.96063213662563775295e-16 -280079B98:t2:I2229005890047222,H280079BB0 -280079BB0:F1A:4.00113375525466896220e-16 -280079BC0:t2:I2229497472775193,H280079BD8 -280079BD8:F1A:4.04115831241433324136e-16 -280079BE8:t2:I2229964908627060,H280079C00 -280079C00:F1A:4.08072768309604483145e-16 -280079C10:t2:I2230409900758597,H280079C28 -280079C28:F1A:4.11986237748074422111e-16 -280079C38:t2:I2230833995044585,H280079C50 -280079C50:F1A:4.15858165808280641140e-16 -280079C60:t2:I2231238597816133,H280079C78 -280079C78:F1A:4.19690364447407329203e-16 -280079C88:t2:I2231624991250191,H280079CA0 -280079CA0:F1A:4.23484540715207084057e-16 -280079CB0:t2:I2231994346765928,H280079CC8 -280079CC8:F1A:4.27242305188997608562e-16 -280079CD8:t2:I2232347736722750,H280079CF0 -280079CF0:F1A:4.30965179571629408372e-16 -280079D00:t2:I2232686144665934,H280079D18 -280079D18:F1A:4.34654603551287596498e-16 -280079D28:t2:I2233010474325959,H280079D40 -280079D40:F1A:4.38311941008545712860e-16 -280079D50:t2:I2233321557544881,H280079D68 -280079D68:F1A:4.41938485644706647812e-16 -280079D78:t2:I2233620161276071,H280079D90 -280079D90:F1A:4.45535466095791365718e-16 -280079DA0:t2:I2233906993781271,H280079DB8 -280079DB8:F1A:4.49104050588287499193e-16 -280079DC8:t2:I2234182710130335,H280079DE0 -280079DE0:F1A:4.52645351185713967562e-16 -280079DF0:t2:I2234447917093496,H280079E08 -280079E08:F1A:4.56160427669003807995e-16 -280079E18:t2:I2234703177503020,H280079E30 -280079E30:F1A:4.59650291088494072552e-16 -280079E40:t2:I2234949014150181,H280079E58 -280079E58:F1A:4.63115907020816468447e-16 -280079E68:t2:I2235185913274316,H280079E80 -280079E80:F1A:4.66558198560087516686e-16 -280079E90:t2:I2235414327692884,H280079EA8 -280079EA8:F1A:4.69978049069419496306e-16 -280079EB8:t2:I2235634679614920,H280079ED0 -280079ED0:F1A:4.73376304715832370759e-16 -280079EE0:t2:I2235847363174595,H280079EF8 -280079EF8:F1A:4.76753776809085264392e-16 -280079F08:t2:I2236052746716837,H280079F20 -280079F20:F1A:4.80111243962701550521e-16 -280079F30:t2:I2236251174862869,H280079F48 -280079F48:F1A:4.83449454093500800172e-16 -280079F58:t2:I2236442970379967,H280079F70 -280079F70:F1A:4.86769126274220868624e-16 -280079F80:t2:I2236628435876762,H280079F98 -280079F98:F1A:4.90070952452299375578e-16 -280079FA8:t2:I2236807855342765,H280079FC0 -280079FC0:F1A:4.93355599046541390746e-16 -280079FD0:t2:I2236981495548562,H280079FE8 -280079FE8:F1A:4.96623708432217831361e-16 -280079FF8:t2:I2237149607321147,H28007A010 -28007A010:F1A:4.99875900324090879179e-16 -28007A020:t2:I2237312426707209,H28007A038 -28007A038:F1A:5.03112773065931868701e-16 -28007A048:t2:I2237470176035652,H28007A060 -28007A060:F1A:5.06334904834271949789e-16 -28007A070:t2:I2237623064889403,H28007A088 -28007A088:F1A:5.09542854763389229036e-16 -28007A098:t2:I2237771290995388,H28007A0B0 -28007A0B0:F1A:5.12737163997879663320e-16 -28007A0C0:t2:I2237915041040597,H28007A0D8 -28007A0D8:F1A:5.15918356678573644216e-16 -28007A0E8:t2:I2238054491421305,H28007A100 -28007A100:F1A:5.19086940867034337507e-16 -28007A110:t2:I2238189808931712,H28007A128 -28007A128:F1A:5.22243409413404174016e-16 -28007A138:t2:I2238321151397660,H28007A150 -28007A150:F1A:5.25388240771945425068e-16 -28007A160:t2:I2238448668260432,H28007A178 -28007A178:F1A:5.28521899768238198395e-16 -28007A188:t2:I2238572501115169,H28007A1A0 -28007A1A0:F1A:5.31644838321661755014e-16 -28007A1B0:t2:I2238692784207942,H28007A1C8 -28007A1C8:F1A:5.34757496126472954545e-16 -28007A1D8:t2:I2238809644895133,H28007A1F0 -28007A1F0:F1A:5.37860301294523479377e-16 -28007A200:t2:I2238923204068402,H28007A218 -28007A218:F1A:5.40953670962399333412e-16 -28007A228:t2:I2239033576548190,H28007A240 -28007A240:F1A:5.44038011865546709133e-16 -28007A250:t2:I2239140871448443,H28007A268 -28007A268:F1A:5.47113720881736113194e-16 -28007A278:t2:I2239245192514958,H28007A290 -28007A290:F1A:5.50181185546033624966e-16 -28007A2A0:t2:I2239346638439541,H28007A2B8 -28007A2B8:F1A:5.53240784539278360189e-16 -28007A2C8:t2:I2239445303151952,H28007A2E0 -28007A2E0:F1A:5.56292888151909017422e-16 -28007A2F0:t2:I2239541276091442,H28007A308 -28007A308:F1A:5.59337858724846207834e-16 -28007A318:t2:I2239634642459498,H28007A330 -28007A330:F1A:5.62376051069004345873e-16 -28007A340:t2:I2239725483455293,H28007A358 -28007A358:F1A:5.65407812864896043333e-16 -28007A368:t2:I2239813876495186,H28007A380 -28007A380:F1A:5.68433485043681410254e-16 -28007A390:t2:I2239899895417494,H28007A3A8 -28007A3A8:F1A:5.71453402150920397185e-16 -28007A3B8:t2:I2239983610673676,H28007A3D0 -28007A3D0:F1A:5.74467892694196087369e-16 -28007A3E0:t2:I2240065089506935,H28007A3F8 -28007A3F8:F1A:5.77477279475696482238e-16 -28007A408:t2:I2240144396119183,H28007A420 -28007A420:F1A:5.80481879910768565067e-16 -28007A430:t2:I2240221591827230,H28007A448 -28007A448:F1A:5.83482006333389205125e-16 -28007A458:t2:I2240296735208969,H28007A470 -28007A470:F1A:5.86477966289436525146e-16 -28007A480:t2:I2240369882240293,H28007A498 -28007A498:F1A:5.89470062818587176437e-16 -28007A4A8:t2:I2240441086423386,H28007A4C0 -28007A4C0:F1A:5.92458594725613394191e-16 -28007A4D0:t2:I2240510398907004,H28007A4E8 -28007A4E8:F1A:5.95443856841805979446e-16 -28007A4F8:t2:I2240577868599305,H28007A510 -28007A510:F1A:5.98426140277202811378e-16 -28007A520:t2:I2240643542273726,H28007A538 -28007A538:F1A:6.01405732664266403201e-16 -28007A548:t2:I2240707464668391,H28007A560 -28007A560:F1A:6.04382918393612501158e-16 -28007A570:t2:I2240769678579486,H28007A588 -28007A588:F1A:6.07357978842360566070e-16 -28007A598:t2:I2240830224948980,H28007A5B0 -28007A5B0:F1A:6.10331192595643943370e-16 -28007A5C0:t2:I2240889142947082,H28007A5D8 -28007A5D8:F1A:6.13302835661791100703e-16 -28007A5E8:t2:I2240946470049769,H28007A600 -28007A600:F1A:6.16273181681659631279e-16 -28007A610:t2:I2241002242111691,H28007A628 -28007A628:F1A:6.19242502132584703827e-16 -28007A638:t2:I2241056493434746,H28007A650 -28007A650:F1A:6.22211066527378790876e-16 -28007A660:t2:I2241109256832602,H28007A678 -28007A678:F1A:6.25179142608799982782e-16 -28007A688:t2:I2241160563691400,H28007A6A0 -28007A6A0:F1A:6.28146996539889530228e-16 -28007A6B0:t2:I2241210444026879,H28007A6C8 -28007A6C8:F1A:6.31114893090560423885e-16 -28007A6D8:t2:I2241258926538122,H28007A6F0 -28007A6F0:F1A:6.34083095820806000914e-16 -28007A700:t2:I2241306038658137,H28007A718 -28007A718:F1A:6.37051867260881494958e-16 -28007A728:t2:I2241351806601435,H28007A740 -28007A740:F1A:6.40021469088802472988e-16 -28007A750:t2:I2241396255408788,H28007A768 -28007A768:F1A:6.42992162305489607018e-16 -28007A778:t2:I2241439408989313,H28007A790 -28007A790:F1A:6.45964207407883213683e-16 -28007A7A0:t2:I2241481290160038,H28007A7B8 -28007A7B8:F1A:6.48937864560339654762e-16 -28007A7C8:t2:I2241521920683062,H28007A7E0 -28007A7E0:F1A:6.51913393764615873896e-16 -28007A7F0:t2:I2241561321300462,H28007A808 -28007A808:F1A:6.54891055028741540820e-16 -28007A818:t2:I2241599511767028,H28007A830 -28007A830:F1A:6.57871108535074132917e-16 -28007A840:t2:I2241636510880960,H28007A858 -28007A858:F1A:6.60853814807825874393e-16 -28007A868:t2:I2241672336512612,H28007A880 -28007A880:F1A:6.63839434880350565911e-16 -28007A890:t2:I2241707005631362,H28007A8A8 -28007A8A8:F1A:6.66828230462474590443e-16 -28007A8B8:t2:I2241740534330713,H28007A8D0 -28007A8D0:F1A:6.69820464108155789432e-16 -28007A8E0:t2:I2241772937851689,H28007A8F8 -28007A8F8:F1A:6.72816399383753114503e-16 -28007A908:t2:I2241804230604585,H28007A920 -28007A920:F1A:6.75816301037190058595e-16 -28007A930:t2:I2241834426189161,H28007A948 -28007A948:F1A:6.78820435168298025779e-16 -28007A958:t2:I2241863537413311,H28007A970 -28007A970:F1A:6.81829069400625404640e-16 -28007A980:t2:I2241891576310281,H28007A998 -28007A998:F1A:6.84842473055003829332e-16 -28007A9A8:t2:I2241918554154466,H28007A9C0 -28007A9C0:F1A:6.87860917325166366447e-16 -28007A9D0:t2:I2241944481475843,H28007A9E8 -28007A9E8:F1A:6.90884675455716901816e-16 -28007A9F8:t2:I2241969368073071,H28007AA10 -28007AA10:F1A:6.93914022922756903880e-16 -28007AA20:t2:I2241993223025298,H28007AA38 -28007AA38:F1A:6.96949237617482938615e-16 -28007AA48:t2:I2242016054702685,H28007AA60 -28007AA60:F1A:6.99990600033076396841e-16 -28007AA70:t2:I2242037870775710,H28007AA88 -28007AA88:F1A:7.03038393455215079165e-16 -28007AA98:t2:I2242058678223225,H28007AAB0 -28007AAB0:F1A:7.06092904156548215323e-16 -28007AAC0:t2:I2242078483339331,H28007AAD8 -28007AAD8:F1A:7.09154421595487341536e-16 -28007AAE8:t2:I2242097291739040,H28007AB00 -28007AB00:F1A:7.12223238619677884046e-16 -28007AB10:t2:I2242115108362774,H28007AB28 -28007AB28:F1A:7.15299651674530299286e-16 -28007AB38:t2:I2242131937479672,H28007AB50 -28007AB50:F1A:7.18383961017206285811e-16 -28007AB60:t2:I2242147782689725,H28007AB78 -28007AB78:F1A:7.21476470936470670108e-16 -28007AB88:t2:I2242162646924736,H28007ABA0 -28007ABA0:F1A:7.24577489978838698238e-16 -28007ABB0:t2:I2242176532448092,H28007ABC8 -28007ABC8:F1A:7.27687331181469271523e-16 -28007ABD8:t2:I2242189440853337,H28007ABF0 -28007ABF0:F1A:7.30806312312274287356e-16 -28007AC00:t2:I2242201373061537,H28007AC18 -28007AC18:F1A:7.33934756117740475864e-16 -28007AC28:t2:I2242212329317416,H28007AC40 -28007AC40:F1A:7.37072990578983098735e-16 -28007AC50:t2:I2242222309184237,H28007AC68 -28007AC68:F1A:7.40221349176579965727e-16 -28007AC78:t2:I2242231311537397,H28007AC90 -28007AC90:F1A:7.43380171164764792799e-16 -28007ACA0:t2:I2242239334556717,H28007ACB8 -28007ACB8:F1A:7.46549801855588902443e-16 -28007ACC8:t2:I2242246375717369,H28007ACE0 -28007ACE0:F1A:7.49730592913697934980e-16 -28007ACF0:t2:I2242252431779415,H28007AD08 -28007AD08:F1A:7.52922902662405836870e-16 -28007AD18:t2:I2242257498775893,H28007AD30 -28007AD30:F1A:7.56127096401792173910e-16 -28007AD40:t2:I2242261571999416,H28007AD58 -28007AD58:F1A:7.59343546739588950455e-16 -28007AD68:t2:I2242264645987196,H28007AD80 -28007AD80:F1A:7.62572633935675575083e-16 -28007AD90:t2:I2242266714504453,H28007ADA8 -28007ADA8:F1A:7.65814746261048733621e-16 -28007ADB8:t2:I2242267770526109,H28007ADD0 -28007ADD0:F1A:7.69070280372191911716e-16 -28007ADE0:t2:I2242267806216711,H28007ADF8 -28007ADF8:F1A:7.72339641701829854238e-16 -28007AE08:t2:I2242266812908462,H28007AE20 -28007AE20:F1A:7.75623244867117442328e-16 -28007AE30:t2:I2242264781077289,H28007AE48 -28007AE48:F1A:7.78921514096385241347e-16 -28007AE58:t2:I2242261700316818,H28007AE70 -28007AE70:F1A:7.82234883675641084120e-16 -28007AE80:t2:I2242257559310145,H28007AE98 -28007AE98:F1A:7.85563798416108405147e-16 -28007AEA8:t2:I2242252345799276,H28007AEC0 -28007AEC0:F1A:7.88908714144175521500e-16 -28007AED0:t2:I2242246046552082,H28007AEE8 -28007AEE8:F1A:7.92270098215227085966e-16 -28007AEF8:t2:I2242238647326615,H28007AF10 -28007AF10:F1A:7.95648430052936617556e-16 -28007AF20:t2:I2242230132832625,H28007AF38 -28007AF38:F1A:7.99044201715713004887e-16 -28007AF48:t2:I2242220486690076,H28007AF60 -28007AF60:F1A:8.02457918492125913510e-16 -28007AF70:t2:I2242209691384458,H28007AF88 -28007AF88:F1A:8.05890099527265683393e-16 -28007AF98:t2:I2242197728218684,H28007AFB0 -28007AFB0:F1A:8.09341278482150088838e-16 -28007AFC0:t2:I2242184577261310,H28007AFD8 -28007AFD8:F1A:8.12812004228450077447e-16 -28007AFE8:t2:I2242170217290819,H28007B000 -28007B000:F1A:8.16302841580987746960e-16 -28007B010:t2:I2242154625735679,H28007B028 -28007B028:F1A:8.19814372070653286895e-16 -28007B038:t2:I2242137778609839,H28007B050 -28007B050:F1A:8.23347194760605041733e-16 -28007B060:t2:I2242119650443327,H28007B078 -28007B078:F1A:8.26901927108847002541e-16 -28007B088:t2:I2242100214207556,H28007B0A0 -28007B0A0:F1A:8.30479205880537371959e-16 -28007B0B0:t2:I2242079441234906,H28007B0C8 -28007B0C8:F1A:8.34079688113662879173e-16 -28007B0D8:t2:I2242057301132135,H28007B0F0 -28007B0F0:F1A:8.37704052142022163322e-16 -28007B100:t2:I2242033761687079,H28007B118 -28007B118:F1A:8.41352998679802824740e-16 -28007B128:t2:I2242008788768107,H28007B140 -28007B140:F1A:8.45027251972409677425e-16 -28007B150:t2:I2241982346215682,H28007B168 -28007B168:F1A:8.48727561018615493666e-16 -28007B178:t2:I2241954395725356,H28007B190 -28007B190:F1A:8.52454700869559619833e-16 -28007B1A0:t2:I2241924896721443,H28007B1B8 -28007B1B8:F1A:8.56209474010623332794e-16 -28007B1C8:t2:I2241893806220517,H28007B1E0 -28007B1E0:F1A:8.59992711832766460322e-16 -28007B1F0:t2:I2241861078683830,H28007B208 -28007B208:F1A:8.63805276200525889234e-16 -28007B218:t2:I2241826665857598,H28007B230 -28007B230:F1A:8.67648061124558160821e-16 -28007B240:t2:I2241790516600041,H28007B258 -28007B258:F1A:8.71521994547369801105e-16 -28007B268:t2:I2241752576693881,H28007B280 -28007B280:F1A:8.75428040251717494016e-16 -28007B290:t2:I2241712788642916,H28007B2A8 -28007B2A8:F1A:8.79367199902104274846e-16 -28007B2B8:t2:I2241671091451078,H28007B2D0 -28007B2D0:F1A:8.83340515230840795477e-16 -28007B2E0:t2:I2241627420382235,H28007B2F8 -28007B2F8:F1A:8.87349070381313453209e-16 -28007B308:t2:I2241581706698773,H28007B320 -28007B320:F1A:8.91393994422408613348e-16 -28007B330:t2:I2241533877376767,H28007B348 -28007B348:F1A:8.95476464049506774624e-16 -28007B358:t2:I2241483854795281,H28007B370 -28007B370:F1A:8.99597706489109936019e-16 -28007B380:t2:I2241431556397035,H28007B398 -28007B398:F1A:9.03759002626011752555e-16 -28007B3A8:t2:I2241376894317345,H28007B3C0 -28007B3C0:F1A:9.07961690374006801893e-16 -28007B3D0:t2:I2241319774977817,H28007B3E8 -28007B3E8:F1A:9.12207168313484609982e-16 -28007B3F8:t2:I2241260098640860,H28007B410 -28007B410:F1A:9.16496899621913531320e-16 -28007B420:t2:I2241197758920538,H28007B438 -28007B438:F1A:9.20832416326230760072e-16 -28007B448:t2:I2241132642244704,H28007B460 -28007B460:F1A:9.25215323909569332723e-16 -28007B470:t2:I2241064627262652,H28007B488 -28007B488:F1A:9.29647306308641672775e-16 -28007B498:t2:I2240993584191742,H28007B4B0 -28007B4B0:F1A:9.34130131342526512592e-16 -28007B4C0:t2:I2240919374095536,H28007B4D8 -28007B4D8:F1A:9.38665656618665978610e-16 -28007B4E8:t2:I2240841848084890,H28007B500 -28007B500:F1A:9.43255835967670653963e-16 -28007B510:t2:I2240760846432232,H28007B528 -28007B528:F1A:9.47902726465173824760e-16 -28007B538:t2:I2240676197587784,H28007B550 -28007B550:F1A:9.52608496106627869756e-16 -28007B560:t2:I2240587717084782,H28007B578 -28007B578:F1A:9.57375432209744962925e-16 -28007B588:t2:I2240495206318753,H28007B5A0 -28007B5A0:F1A:9.62205950629483835507e-16 -28007B5B0:t2:I2240398451183567,H28007B5C8 -28007B5C8:F1A:9.67102605882305424755e-16 -28007B5D8:t2:I2240297220544165,H28007B5F0 -28007B5F0:F1A:9.72068102290162588019e-16 -28007B600:t2:I2240191264522612,H28007B618 -28007B618:F1A:9.77105306270720883776e-16 -28007B628:t2:I2240080312570155,H28007B640 -28007B640:F1A:9.82217259919054108939e-16 -28007B650:t2:I2239964071293331,H28007B668 -28007B668:F1A:9.87407196048067106672e-16 -28007B678:t2:I2239842221996530,H28007B690 -28007B690:F1A:9.92678554880797648454e-16 -28007B6A0:t2:I2239714417896699,H28007B6B8 -28007B6B8:F1A:9.98035002618364491509e-16 -28007B6C8:t2:I2239580280957725,H28007B6E0 -28007B6E0:F1A:1.00348045214361808924e-15 -28007B6F0:t2:I2239439398282193,H28007B708 -28007B708:F1A:1.00901908616374569449e-15 -28007B718:t2:I2239291317986196,H28007B730 -28007B730:F1A:1.01465538314670861133e-15 -28007B740:t2:I2239135544468203,H28007B758 -28007B758:F1A:1.02039414646831236830e-15 -28007B768:t2:I2238971532964979,H28007B780 -28007B780:F1A:1.02624053726135674640e-15 -28007B790:t2:I2238798683265269,H28007B7A8 -28007B7A8:F1A:1.03220011154864564914e-15 -28007B7B8:t2:I2238616332424351,H28007B7D0 -28007B7D0:F1A:1.03827886235153991696e-15 -28007B7E0:t2:I2238423746288095,H28007B7F8 -28007B7F8:F1A:1.04448326760004705473e-15 -28007B808:t2:I2238220109591890,H28007B820 -28007B820:F1A:1.05082034483551946539e-15 -28007B830:t2:I2238004514345216,H28007B848 -28007B848:F1A:1.05729771390098902296e-15 -28007B858:t2:I2237775946143212,H28007B870 -28007B870:F1A:1.06392366906768007507e-15 -28007B880:t2:I2237533267957822,H28007B898 -28007B898:F1A:1.07070726236329937629e-15 -28007B8A8:t2:I2237275200846753,H28007B8C0 -28007B8C0:F1A:1.07765840026681064032e-15 -28007B8D0:t2:I2237000300869952,H28007B8E8 -28007B8E8:F1A:1.08478795644034246815e-15 -28007B8F8:t2:I2236706931309099,H28007B910 -28007B910:F1A:1.09210790381495627955e-15 -28007B920:t2:I2236393229029147,H28007B938 -28007B938:F1A:1.09963147017856282141e-15 -28007B948:t2:I2236057063479501,H28007B960 -28007B960:F1A:1.10737332249357520075e-15 -28007B970:t2:I2235695986373246,H28007B988 -28007B988:F1A:1.11534978658531549289e-15 -28007B998:t2:I2235307169458859,H28007B9B0 -28007B9B0:F1A:1.12357911071108333166e-15 -28007B9C0:t2:I2234887326941578,H28007B9D8 -28007B9D8:F1A:1.13208178401648463069e-15 -28007B9E8:t2:I2234432617919447,H28007BA00 -28007BA00:F1A:1.14088092425827801405e-15 -28007BA10:t2:I2233938522519765,H28007BA28 -28007BA28:F1A:1.15000275378397924458e-15 -28007BA38:t2:I2233399683022677,H28007BA50 -28007BA50:F1A:1.15947718914491892724e-15 -28007BA60:t2:I2232809697779198,H28007BA78 -28007BA78:F1A:1.16933857869109599762e-15 -28007BA88:t2:I2232160850599817,H28007BAA0 -28007BAA0:F1A:1.17962663529558008258e-15 -28007BAB0:t2:I2231443750584641,H28007BAC8 -28007BAC8:F1A:1.19038762992828902828e-15 -28007BAD8:t2:I2230646845562170,H28007BAF0 -28007BAF0:F1A:1.20167593925438186168e-15 -28007BB00:t2:I2229755753817986,H28007BB18 -28007BB18:F1A:1.21355608186668970279e-15 -28007BB28:t2:I2228752329126533,H28007BB40 -28007BB40:F1A:1.22610544174505612103e-15 -28007BB50:t2:I2227613325162504,H28007BB68 -28007BB68:F1A:1.23941797891632511077e-15 -28007BB78:t2:I2226308442121174,H28007BB90 -28007BB90:F1A:1.25360939266025668161e-15 -28007BBA0:t2:I2224797391720399,H28007BBB8 -28007BBB8:F1A:1.26882448142550100004e-15 -28007BBC8:t2:I2223025347823832,H28007BBE0 -28007BBE0:F1A:1.28524793190961088468e-15 -28007BBF0:t2:I2220915633329809,H28007BC08 -28007BC08:F1A:1.30312066346899851655e-15 -28007BC18:t2:I2218357446087030,H28007BC30 -28007BC30:F1A:1.32276557701953263307e-15 -28007BC40:t2:I2215184158448668,H28007BC58 -28007BC58:F1A:1.34463009250111712861e-15 -28007BC68:t2:I2211132412537369,H28007BC80 -28007BC80:F1A:1.36936068351285175171e-15 -28007BC90:t2:I2205758503851065,H28007BCA8 -28007BCA8:F1A:1.39794366727752399083e-15 -28007BCB8:t2:I2198248265654987,H28007BCD0 -28007BCD0:F1A:1.43199898696613284312e-15 -28007BCE0:t2:I2186916352102141,H28007BCF8 -28007BCF8:F1A:1.47448486035975958423e-15 -28007BD08:t2:I2167562552481814,H28007BD20 -28007BD20:F1A:1.53178727416111435375e-15 -28007BD30:t2:I2125549880839716,H28007BD48 -28007BD48:F1A:1.62276986753129683713e-15 -28007BD58:Mf0:H280010188: -28007BD70:lI0|I0 -28007BD80:lI0|H28007BD90 -28007BD90:lI0|H28007BDA0 -28007BDA0:lI0|H28007BDB0 -28007BDB0:lI0|H28007BDC0 -28007BDC0:lI0|H28007BDD0 -28007BDD0:lI0|H28007BDE0 -28007BDE0:lI0|H28007BDF0 -28007BDF0:lI0|H28007BE00 -28007BE00:lI0|H28007BE10 -28007BE10:lI0|H28007BE20 -28007BE20:lI0|H28007BE30 -28007BE30:lI0|H28007BE40 -28007BE40:lI0|H28007BE50 -28007BE50:lI0|H28007BE60 -28007BE60:lI0|H28007BE70 -28007BE70:lI0|N -28007BE80:lI114527183042123105|H28007BE90 -28007BE90:lI160423628620659260|H28007BEA0 -28007BEA0:lI284733707589872850|H28007BEB0 -28007BEB0:lI164435740288387503|H28007BEC0 -28007BEC0:lI259572741793888962|H28007BED0 -28007BED0:lI215793509705812255|H28007BEE0 -28007BEE0:lI228241955430903492|H28007BEF0 -28007BEF0:lI221708554683218499|H28007BF00 -28007BF00:lI212006596549813798|H28007BF10 -28007BF10:lI139215019150089363|H28007BF20 -28007BF20:lI23964000621384961|H28007BF30 -28007BF30:lI55201052708218217|H28007BF40 -28007BF40:lI112969240468397636|H28007BF50 -28007BF50:lI22130735059088892|H28007BF60 -28007BF60:lI244278597799509466|H28007BF70 -28007BF70:lI220175845070832114|H28007BF80 -28007BF80:lI43243288828|N -28007BF90:lI290573448171827402|H28007BFA0 -28007BFA0:lI382251779910418577|H28007BFB0 -28007BFB0:lI423857156240780192|H28007BFC0 -28007BFC0:lI317638803078791815|H28007BFD0 -28007BFD0:lI312577798172065765|H28007BFE0 -28007BFE0:lI305801842905235492|H28007BFF0 -28007BFF0:lI450887821400921554|H28007C000 -28007C000:lI490154825290594607|H28007C010 -28007C010:lI507224882549817556|H28007C020 -28007C020:lI305131922350994371|H28007C030 -28007C030:lI524004876356613068|H28007C040 -28007C040:lI399286492428034246|H28007C050 -28007C050:lI556129459533271918|H28007C060 -28007C060:lI302163523288674092|H28007C070 -28007C070:lI295571835370094372|H28007C080 -28007C080:lI487547435355635071|N -28007C090:lI412473694820566502|H28007C0A0 -28007C0A0:lI432883605991317039|H28007C0B0 -28007C0B0:lI525373508288112196|H28007C0C0 -28007C0C0:lI403915169708599875|H28007C0D0 -28007C0D0:lI319067783491633768|H28007C0E0 -28007C0E0:lI301226760020322060|H28007C0F0 -28007C0F0:lI311627678308842608|H28007C100 -28007C100:lI376040681981803602|H28007C110 -28007C110:lI339701046172540810|H28007C120 -28007C120:lI406476937554306621|H28007C130 -28007C130:lI319178240279900411|H28007C140 -28007C140:lI538961455727032748|H28007C150 -28007C150:lI343829982822907227|H28007C160 -28007C160:lI562090186051299616|H28007C170 -28007C170:lI294421712295949406|H28007C180 -28007C180:lI517056752316592047|N -28007C190:lI171572743241724754|N -28007C1A0:F1A:5.00000000000000000000e-01 -28007C1B0:lH28007C1E0|H28007C1C0 -28007C1C0:lH28007C1F8|H28007C1D0 -28007C1D0:lA6:global|N -28007C1E0:t2:A7:newline,A3:any -28007C1F8:t3:A7:capture,AD:all_but_first,A6:binary -28007C218:lI48|H28007C228 -28007C228:lI120|H28007C238 -28007C238:lI40|H28007C248 -28007C248:lI91|H28007C258 -28007C258:lI97|H28007C268 -28007C268:lI45|H28007C278 -28007C278:lI122|H28007C288 -28007C288:lI65|H28007C298 -28007C298:lI45|H28007C2A8 -28007C2A8:lI90|H28007C2B8 -28007C2B8:lI48|H28007C2C8 -28007C2C8:lI45|H28007C2D8 -28007C2D8:lI57|H28007C2E8 -28007C2E8:lI93|H28007C2F8 -28007C2F8:lI43|H28007C308 -28007C308:lI41|N -28007C318:lI49|H28007C328 -28007C328:lI54|H28007C338 -28007C338:lI35|H28007C348 -28007C348:lI126|H28007C358 -28007C358:lI115|H28007C368 -28007C368:lI44|H28007C378 -28007C378:lI126|H28007C388 -28007C388:lI110|N -28007C398:F1B:-2.73661237329758277870e-01 -28007C3A8:F1A:3.65415288536100879568e+00 -28007C3B8:F1B:-3.65415288536100879568e+00 -28007C3C8:F1B:-5.00000000000000000000e-01 -28007C3D8:t100:H28007CBE0,H28007CBF0,H28007CC00,H28007CC10,H28007CC20,H28007CC30,H28007CC40,H28007CC50,H28007CC60,H28007CC70,H28007CC80,H28007CC90,H28007CCA0,H28007CCB0,H28007CCC0,H28007CCD0,H28007CCE0,H28007CCF0,H28007CD00,H28007CD10,H28007CD20,H28007CD30,H28007CD40,H28007CD50,H28007CD60,H28007CD70,H28007CD80,H28007CD90,H28007CDA0,H28007CDB0,H28007CDC0,H28007CDD0,H28007CDE0,H28007CDF0,H28007CE00,H28007CE10,H28007CE20,H28007CE30,H28007CE40,H28007CE50,H28007CE60,H28007CE70,H28007CE80,H28007CE90,H28007CEA0,H28007CEB0,H28007CEC0,H28007CED0,H28007CEE0,H28007CEF0,H28007CF00,H28007CF10,H28007CF20,H28007CF30,H28007CF40,H28007CF50,H28007CF60,H28007CF70,H28007CF80,H28007CF90,H28007CFA0,H28007CFB0,H28007CFC0,H28007CFD0,H28007CFE0,H28007CFF0,H28007D000,H28007D010,H28007D020,H28007D030,H28007D040,H28007D050,H28007D060,H28007D070,H28007D080,H28007D090,H28007D0A0,H28007D0B0,H28007D0C0,H28007D0D0,H28007D0E0,H28007D0F0,H28007D100,H28007D110,H28007D120,H28007D130,H28007D140,H28007D150,H28007D160,H28007D170,H28007D180,H28007D190,H28007D1A0,H28007D1B0,H28007D1C0,H28007D1D0,H28007D1E0,H28007D1F0,H28007D200,H28007D210,H28007D220,H28007D230,H28007D240,H28007D250,H28007D260,H28007D270,H28007D280,H28007D290,H28007D2A0,H28007D2B0,H28007D2C0,H28007D2D0,H28007D2E0,H28007D2F0,H28007D300,H28007D310,H28007D320,H28007D330,H28007D340,H28007D350,H28007D360,H28007D370,H28007D380,H28007D390,H28007D3A0,H28007D3B0,H28007D3C0,H28007D3D0,H28007D3E0,H28007D3F0,H28007D400,H28007D410,H28007D420,H28007D430,H28007D440,H28007D450,H28007D460,H28007D470,H28007D480,H28007D490,H28007D4A0,H28007D4B0,H28007D4C0,H28007D4D0,H28007D4E0,H28007D4F0,H28007D500,H28007D510,H28007D520,H28007D530,H28007D540,H28007D550,H28007D560,H28007D570,H28007D580,H28007D590,H28007D5A0,H28007D5B0,H28007D5C0,H28007D5D0,H28007D5E0,H28007D5F0,H28007D600,H28007D610,H28007D620,H28007D630,H28007D640,H28007D650,H28007D660,H28007D670,H28007D680,H28007D690,H28007D6A0,H28007D6B0,H28007D6C0,H28007D6D0,H28007D6E0,H28007D6F0,H28007D700,H28007D710,H28007D720,H28007D730,H28007D740,H28007D750,H28007D760,H28007D770,H28007D780,H28007D790,H28007D7A0,H28007D7B0,H28007D7C0,H28007D7D0,H28007D7E0,H28007D7F0,H28007D800,H28007D810,H28007D820,H28007D830,H28007D840,H28007D850,H28007D860,H28007D870,H28007D880,H28007D890,H28007D8A0,H28007D8B0,H28007D8C0,H28007D8D0,H28007D8E0,H28007D8F0,H28007D900,H28007D910,H28007D920,H28007D930,H28007D940,H28007D950,H28007D960,H28007D970,H28007D980,H28007D990,H28007D9A0,H28007D9B0,H28007D9C0,H28007D9D0,H28007D9E0,H28007D9F0,H28007DA00,H28007DA10,H28007DA20,H28007DA30,H28007DA40,H28007DA50,H28007DA60,H28007DA70,H28007DA80,H28007DA90,H28007DAA0,H28007DAB0,H28007DAC0,H28007DAD0,H28007DAE0,H28007DAF0,H28007DB00,H28007DB10,H28007DB20,H28007DB30,H28007DB40,H28007DB50,H28007DB60,H28007DB70,H28007DB80,H28007DB90,H28007DBA0,H28007DBB0,H28007DBC0,H28007DBD0 -28007CBE0:F1A:1.00000000000000000000e+00 -28007CBF0:F1A:9.77101701267670819107e-01 -28007CC00:F1A:9.59879091800105999077e-01 -28007CC10:F1A:9.45198953442299094618e-01 -28007CC20:F1A:9.32060075959229905607e-01 -28007CC30:F1A:9.19991505039346457728e-01 -28007CC40:F1A:9.08726440052130324254e-01 -28007CC50:F1A:8.98095921898342974821e-01 -28007CC60:F1A:8.87984660755832821977e-01 -28007CC70:F1A:8.78309655808916844855e-01 -28007CC80:F1A:8.69008688036856491443e-01 -28007CC90:F1A:8.60033621196331088399e-01 -28007CCA0:F1A:8.51346258458677507264e-01 -28007CCB0:F1A:8.42915653112203733244e-01 -28007CCC0:F1A:8.34716292986882990590e-01 -28007CCD0:F1A:8.26726833946220929228e-01 -28007CCE0:F1A:8.18929191603701922553e-01 -28007CCF0:F1A:8.11307874312655719073e-01 -28007CD00:F1A:8.03849483170963829970e-01 -28007CD10:F1A:7.96542330422958411162e-01 -28007CD20:F1A:7.89376143566024035536e-01 -28007CD30:F1A:7.82341832654801949687e-01 -28007CD40:F1A:7.75431304981186619862e-01 -28007CD50:F1A:7.68637315798485709628e-01 -28007CD60:F1A:7.61953346836794831454e-01 -28007CD70:F1A:7.55373506507095671125e-01 -28007CD80:F1A:7.48892447219156376370e-01 -28007CD90:F1A:7.42505296340150611201e-01 -28007CDA0:F1A:7.36207598126862095000e-01 -28007CDB0:F1A:7.29995264561475676324e-01 -28007CDC0:F1A:7.23864533468629667290e-01 -28007CDD0:F1A:7.17811932630721516446e-01 -28007CDE0:F1A:7.11834248878247977110e-01 -28007CDF0:F1A:7.05928501332753755015e-01 -28007CE00:F1A:7.00091918136511170978e-01 -28007CE10:F1A:6.94321916126116267520e-01 -28007CE20:F1A:6.88616083004671364343e-01 -28007CE30:F1A:6.82972161644994302243e-01 -28007CE40:F1A:6.77388036218773081920e-01 -28007CE50:F1A:6.71861719897081655084e-01 -28007CE60:F1A:6.66391343908749766989e-01 -28007CE70:F1A:6.60975147776662774746e-01 -28007CE80:F1A:6.55611470579696931082e-01 -28007CE90:F1A:6.50298743110816368507e-01 -28007CEA0:F1A:6.45035480820821960357e-01 -28007CEB0:F1A:6.39820277453056140970e-01 -28007CEC0:F1A:6.34651799287623274992e-01 -28007CED0:F1A:6.29528779924836245918e-01 -28007CEE0:F1A:6.24450015547026060503e-01 -28007CEF0:F1A:6.19414360605833991258e-01 -28007CF00:F1A:6.14420723888913444810e-01 -28007CF10:F1A:6.09468064925773100882e-01 -28007CF20:F1A:6.04555390697467331940e-01 -28007CF30:F1A:5.99681752619124819326e-01 -28007CF40:F1A:5.94846243767986893047e-01 -28007CF50:F1A:5.90047996332825452903e-01 -28007CF60:F1A:5.85286179263370898163e-01 -28007CF70:F1A:5.80559996100790343121e-01 -28007CF80:F1A:5.75868682972353163052e-01 -28007CF90:F1A:5.71211506735252672051e-01 -28007CFA0:F1A:5.66587763256163889913e-01 -28007CFB0:F1A:5.61996775814523896742e-01 -28007CFC0:F1A:5.57437893618765500925e-01 -28007CFD0:F1A:5.52910490425831846473e-01 -28007CFE0:F1A:5.48413963255265368701e-01 -28007CFF0:F1A:5.43947731190025818293e-01 -28007D000:F1A:5.39511234256951577315e-01 -28007D010:F1A:5.35103932380457170126e-01 -28007D020:F1A:5.30725304403661501951e-01 -28007D030:F1A:5.26374847171684034919e-01 -28007D040:F1A:5.22052074672321397841e-01 -28007D050:F1A:5.17756517229755908183e-01 -28007D060:F1A:5.13487720747326514825e-01 -28007D070:F1A:5.09245245995747608525e-01 -28007D080:F1A:5.05028667943467901580e-01 -28007D090:F1A:5.00837575126148348836e-01 -28007D0A0:F1A:4.96671569052489325635e-01 -28007D0B0:F1A:4.92530263643868149170e-01 -28007D0C0:F1A:4.88413284705457584334e-01 -28007D0D0:F1A:4.84320269426682881164e-01 -28007D0E0:F1A:4.80250865909046420477e-01 -28007D0F0:F1A:4.76204732719505474670e-01 -28007D100:F1A:4.72181538467729755570e-01 -28007D110:F1A:4.68180961405693207844e-01 -28007D120:F1A:4.64202689048173910980e-01 -28007D130:F1A:4.60246417812842478767e-01 -28007D140:F1A:4.56311852678716101117e-01 -28007D150:F1A:4.52398706861848243221e-01 -28007D160:F1A:4.48506701507202731882e-01 -28007D170:F1A:4.44635565395739118522e-01 -28007D180:F1A:4.40785034665803765463e-01 -28007D190:F1A:4.36954852547985328481e-01 -28007D1A0:F1A:4.33144769112652094911e-01 -28007D1B0:F1A:4.29354541029441261202e-01 -28007D1C0:F1A:4.25583931338021803636e-01 -28007D1D0:F1A:4.21832709229495728120e-01 -28007D1E0:F1A:4.18100649837847948564e-01 -28007D1F0:F1A:4.14387534040890903597e-01 -28007D200:F1A:4.10693148270187990967e-01 -28007D210:F1A:4.07017284329473150173e-01 -28007D220:F1A:4.03359739221114288465e-01 -28007D230:F1A:3.99720314980197000132e-01 -28007D240:F1A:3.96098818515832229448e-01 -28007D250:F1A:3.92495061459315397467e-01 -28007D260:F1A:3.88908860018788549162e-01 -28007D270:F1A:3.85340034840077061418e-01 -28007D280:F1A:3.81788410873393435629e-01 -28007D290:F1A:3.78253817245618961795e-01 -28007D2A0:F1A:3.74736087137890860888e-01 -28007D2B0:F1A:3.71235057668239221140e-01 -28007D2C0:F1A:3.67750569779032254747e-01 -28007D2D0:F1A:3.64282468129003722535e-01 -28007D2E0:F1A:3.60830600989647753973e-01 -28007D2F0:F1A:3.57394820145780223175e-01 -28007D300:F1A:3.53974980800076555187e-01 -28007D310:F1A:3.50570941481405884410e-01 -28007D320:F1A:3.47182563956793477367e-01 -28007D330:F1A:3.43809713146850548515e-01 -28007D340:F1A:3.40452257044521644502e-01 -28007D350:F1A:3.37110066637005878487e-01 -28007D360:F1A:3.33783015830718232664e-01 -28007D370:F1A:3.30470981379163419867e-01 -28007D380:F1A:3.27173842813601289947e-01 -28007D390:F1A:3.23891482376391037779e-01 -28007D3A0:F1A:3.20623784956905300003e-01 -28007D3B0:F1A:3.17370638029913498812e-01 -28007D3C0:F1A:3.14131931596337066193e-01 -28007D3D0:F1A:3.10907558126286343025e-01 -28007D3E0:F1A:3.07697412504291889501e-01 -28007D3F0:F1A:3.04501391976649826709e-01 -28007D400:F1A:3.01319396100802883165e-01 -28007D410:F1A:2.98151326696685314843e-01 -28007D420:F1A:2.94997087799961643650e-01 -28007D430:F1A:2.91856585617094987928e-01 -28007D440:F1A:2.88729728482182701477e-01 -28007D450:F1A:2.85616426815501589509e-01 -28007D460:F1A:2.82516593083707412415e-01 -28007D470:F1A:2.79430141761637718112e-01 -28007D480:F1A:2.76356989295668098450e-01 -28007D490:F1A:2.73297054068576905639e-01 -28007D4A0:F1A:2.70250256365875185516e-01 -28007D4B0:F1A:2.67216518343561137971e-01 -28007D4C0:F1A:2.64195763997260801847e-01 -28007D4D0:F1A:2.61187919132720824944e-01 -28007D4E0:F1A:2.58192911337618902223e-01 -28007D4F0:F1A:2.55210669954661684145e-01 -28007D500:F1A:2.52241126055941899953e-01 -28007D510:F1A:2.49284212418528244859e-01 -28007D520:F1A:2.46339863501263633960e-01 -28007D530:F1A:2.43408015422750118040e-01 -28007D540:F1A:2.40488605940500393965e-01 -28007D550:F1A:2.37581574431237951828e-01 -28007D560:F1A:2.34686861872329899370e-01 -28007D570:F1A:2.31804410824338585906e-01 -28007D580:F1A:2.28934165414680229622e-01 -28007D590:F1A:2.26076071322380195427e-01 -28007D5A0:F1A:2.23230075763917457099e-01 -28007D5B0:F1A:2.20396127480151943212e-01 -28007D5C0:F1A:2.17574176724331130872e-01 -28007D5D0:F1A:2.14764175251173583536e-01 -28007D5E0:F1A:2.11966076307030154569e-01 -28007D5F0:F1A:2.09179834621124993710e-01 -28007D600:F1A:2.06405406397880714087e-01 -28007D610:F1A:2.03642749310334852941e-01 -28007D620:F1A:2.00891822494656563380e-01 -28007D630:F1A:1.98152586545775111215e-01 -28007D640:F1A:1.95425003514134276728e-01 -28007D650:F1A:1.92709036903589120415e-01 -28007D660:F1A:1.90004651670464957958e-01 -28007D670:F1A:1.87311814223800249257e-01 -28007D680:F1A:1.84630492426799269756e-01 -28007D690:F1A:1.81960655599522541648e-01 -28007D6A0:F1A:1.79302274522847665539e-01 -28007D6B0:F1A:1.76655321443734997233e-01 -28007D6C0:F1A:1.74019770081838748288e-01 -28007D6D0:F1A:1.71395595637505948616e-01 -28007D6E0:F1A:1.68782774801211510329e-01 -28007D6F0:F1A:1.66181285764482045142e-01 -28007D700:F1A:1.63591108232365695097e-01 -28007D710:F1A:1.61012223437511065027e-01 -28007D720:F1A:1.58444614155924312637e-01 -28007D730:F1A:1.55888264724479197465e-01 -28007D740:F1A:1.53343161060262828110e-01 -28007D750:F1A:1.50809290681845675763e-01 -28007D760:F1A:1.48286642732574525105e-01 -28007D770:F1A:1.45775208005994028060e-01 -28007D780:F1A:1.43274978973513406055e-01 -28007D790:F1A:1.40785949814444699690e-01 -28007D7A0:F1A:1.38308116448550705302e-01 -28007D7B0:F1A:1.35841476571253727545e-01 -28007D7C0:F1A:1.33386029691669127928e-01 -28007D7D0:F1A:1.30941777173644302579e-01 -28007D7E0:F1A:1.28508722279999515470e-01 -28007D7F0:F1A:1.26086870220185859326e-01 -28007D800:F1A:1.23676228201596544176e-01 -28007D810:F1A:1.21276805484790209388e-01 -28007D820:F1A:1.18888613442909976681e-01 -28007D830:F1A:1.16511665625610799646e-01 -28007D840:F1A:1.14145977827838349117e-01 -28007D850:F1A:1.11791568163838006544e-01 -28007D860:F1A:1.09448457146811631291e-01 -28007D870:F1A:1.07116667774683635428e-01 -28007D880:F1A:1.04796225622486902096e-01 -28007D890:F1A:1.02487158941935080358e-01 -28007D8A0:F1A:1.00189498768809809315e-01 -28007D8B0:F1A:9.79032790388622842226e-02 -28007D8C0:F1A:9.56285367130088187482e-02 -28007D8D0:F1A:9.33653119126908598302e-02 -28007D8E0:F1A:9.11136480663736342267e-02 -28007D8F0:F1A:8.88735920682757890576e-02 -28007D900:F1A:8.66451944505579607636e-02 -28007D910:F1A:8.44285095703533744471e-02 -28007D920:F1A:8.22235958132028627032e-02 -28007D930:F1A:8.00305158146630557514e-02 -28007D940:F1A:7.78493367020960391756e-02 -28007D950:F1A:7.56801303589270668581e-02 -28007D960:F1A:7.35229737139812683511e-02 -28007D970:F1A:7.13779490588903747783e-02 -28007D980:F1A:6.92451443970067692657e-02 -28007D990:F1A:6.71246538277884968737e-02 -28007D9A0:F1A:6.50165779712428421044e-02 -28007D9B0:F1A:6.29210244377581134900e-02 -28007D9C0:F1A:6.08381083495398641836e-02 -28007D9D0:F1A:5.87679529209337581097e-02 -28007D9E0:F1A:5.67106901062029017391e-02 -28007D9F0:F1A:5.46664613248889139085e-02 -28007DA00:F1A:5.26354182767921757735e-02 -28007DA10:F1A:5.06177238609477608833e-02 -28007DA20:F1A:4.86135532158685212956e-02 -28007DA30:F1A:4.66230949019303675396e-02 -28007DA40:F1A:4.46465522512944426592e-02 -28007DA50:F1A:4.26841449164744313194e-02 -28007DA60:F1A:4.07361106559409325012e-02 -28007DA70:F1A:3.88027074045261127777e-02 -28007DA80:F1A:3.68842156885672844968e-02 -28007DA90:F1A:3.49809414617160835403e-02 -28007DAA0:F1A:3.30932194585785224850e-02 -28007DAB0:F1A:3.12214171919202448935e-02 -28007DAC0:F1A:2.93659397581333136973e-02 -28007DAD0:F1A:2.75272356696030819079e-02 -28007DAE0:F1A:2.57058040085488964666e-02 -28007DAF0:F1A:2.39022033057958820101e-02 -28007DB00:F1A:2.21170627073088640890e-02 -28007DB10:F1A:2.03510962300445172324e-02 -28007DB20:F1A:1.86051212757246432761e-02 -28007DB30:F1A:1.68800831525431661861e-02 -28007DB40:F1A:1.51770883079353248457e-02 -28007DB50:F1A:1.34974506017398795249e-02 -28007DB60:F1A:1.18427578579078877224e-02 -28007DB70:F1A:1.02149714397014711870e-02 -28007DB80:F1A:8.61658276939873159217e-03 -28007DB90:F1A:7.05087547137322676050e-03 -28007DBA0:F1A:5.52240329925099675962e-03 -28007DBB0:F1A:4.03797259336303050042e-03 -28007DBC0:F1A:2.60907274610216273134e-03 -28007DBD0:F1A:1.26028593049859753868e-03 -28007DBE0:lI126|H28007DBF0 -28007DBF0:lI99|H28007DC00 -28007DC00:lI126|H28007DC10 -28007DC10:lI99|H28007DC20 -28007DC20:lI46|H28007DC30 -28007DC30:lI126|H28007DC40 -28007DC40:lI49|H28007DC50 -28007DC50:lI51|H28007DC60 -28007DC60:lI46|H28007DC70 -28007DC70:lI49|H28007DC80 -28007DC80:lI54|H28007DC90 -28007DC90:lI46|H28007DCA0 -28007DCA0:lI48|H28007DCB0 -28007DCB0:lI98|H28007DCC0 -28007DCC0:lI69|H28007DCD0 -28007DCD0:lI126|H28007DCE0 -28007DCE0:lI98|N -28007DCF0:lI108|N -28007DD00:lI114|H28007DCF0 -28007DD10:lI101|H28007DD00 -28007DD20:lI46|H28007DD10 -28007DD30:lI100|H28007DD20 -28007DD40:lI110|H28007DD30 -28007DD50:lI97|H28007DD40 -28007DD60:lI114|H28007DD50 -28007DD70:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAAAAAAAHcEcmFuZGEAYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DD98:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAABAAAAAHcEcmFuZGEBYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DDC0:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAACAAAAAHcEcmFuZGECYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DDE8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAADAAAAAHcEcmFuZGEDYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DE10:t6:A4:type,A4:next,A4:bits,A7:uniform,A9:uniform_n,A4:jump -28007DE48:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAEAAAAAHcEcmFuZGEEYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DE70:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAFAAAAAHcEcmFuZGEFYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DE98:t4:A3:max,A4:type,A4:next,A4:jump -28007DEC0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAGAAAAAHcEcmFuZGEGYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DEE8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAHAAAAAHcEcmFuZGEHYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DF10:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAIAAAAAHcEcmFuZGEIYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DF38:t7:A4:type,A4:next,A4:bits,A7:uniform,AD:weak_low_bits,A9:uniform_n,A4:jump -28007DF78:B18446744073709551615 -28007DF88:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAJAAAAAHcEcmFuZGEJYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DFB0:t3:A3:max,A4:type,A4:next -28007DFD0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAKAAAAAHcEcmFuZGEKYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007DFF8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAALAAAAAHcEcmFuZGELYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E020:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAMAAAAAHcEcmFuZGEMYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E048:t5:A4:type,A4:next,A4:bits,AD:weak_low_bits,A4:jump -28007E078:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAANAAAAAHcEcmFuZGENYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E0A0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAOAAAAAHcEcmFuZGEOYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E0C8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAPAAAAAHcEcmFuZGEPYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E0F0:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAQAAAAAHcEcmFuZGEQYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E118:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAARAAAAAHcEcmFuZGERYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E140:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAASAAAAAHcEcmFuZGESYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E168:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAATAAAAAHcEcmFuZGETYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E190:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAUAAAAAHcEcmFuZGEUYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E1B8:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAVAAAAAHcEcmFuZGEVYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E1E0:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAWAAAAAHcEcmFuZGEWYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E208:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAXAAAAAHcEcmFuZGEXYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E230:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAYAAAAAHcEcmFuZGEYYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E258:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAZAAAAAHcEcmFuZGEZYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E280:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAaAAAAAHcEcmFuZGEaYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E2A8:t5:A4:type,A4:next,A4:bits,A7:uniform,A9:uniform_n -28007E2D8:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAbAAAAAHcEcmFuZGEbYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E300:B2685821657736338717 -28007E310:B18446744073709551614 -28007E320:B1181783497276652981 -28007E330:E48:g3AAAABGAn3XkEUS41MGPnrQPyy5JUoAAAAcAAAAAHcEcmFuZGEcYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E358:E48:g3AAAABGAX3XkEUS41MGPnrQPyy5JUoAAAAdAAAAAHcEcmFuZGEdYgPuvIJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007E380:B11400714819323198485 -28007E390:B13787848793156543929 -28007E3A0:B10723151780598845931 -28007E3B0:B9223372036854775808 -28007F160:t2:A5:error,AB:not_boolean -28007F178:t2:A5:error,A17:global_group_not_runnig -28007F190:t2:A5:local,AC:global_group -28007F1A8:t1:AD:connection_id -28007F1B8:Mf1:H28007F1A8:A4:true -28007F1D8:lA9:undefined|N -28007F1E8:Mf0:H280010188: -28007F200:t2:A4:node,AB:test3844zty -28007F218:t2:A5:error,A15:illegal_function_call -28007F230:t2:A5:error,A1A:no global_groups definiton -28007F248:t2:H28007F260,H28007F278 -28007F260:Mf0:H280010188: -28007F278:Mf0:H280010188: -28007F290:t3:N,N,N -28007F2B0:lI103|H28007F2C0 -28007F2C0:lI108|H28007F2D0 -28007F2D0:lI111|H28007F2E0 -28007F2E0:lI98|H28007F2F0 -28007F2F0:lI97|H28007F300 -28007F300:lI108|H28007F310 -28007F310:lI95|H28007F320 -28007F320:lI103|H28007F330 -28007F330:lI114|H28007F340 -28007F340:lI111|H28007F350 -28007F350:lI117|H28007F360 -28007F360:lI112|H28007F370 -28007F370:lI58|H28007F380 -28007F380:lI32|H28007F390 -28007F390:lI67|H28007F3A0 -28007F3A0:lI111|H28007F3B0 -28007F3B0:lI117|H28007F3C0 -28007F3C0:lI108|H28007F3D0 -28007F3D0:lI100|H28007F3E0 -28007F3E0:lI32|H28007F3F0 -28007F3F0:lI110|H28007F400 -28007F400:lI111|H28007F410 -28007F410:lI116|H28007F420 -28007F420:lI32|H28007F430 -28007F430:lI115|H28007F440 -28007F440:lI121|H28007F450 -28007F450:lI110|H28007F460 -28007F460:lI99|H28007F470 -28007F470:lI104|H28007F480 -28007F480:lI114|H28007F490 -28007F490:lI111|H28007F4A0 -28007F4A0:lI110|H28007F4B0 -28007F4B0:lI105|H28007F4C0 -28007F4C0:lI122|H28007F4D0 -28007F4D0:lI101|H28007F4E0 -28007F4E0:lI32|H28007F4F0 -28007F4F0:lI119|H28007F500 -28007F500:lI105|H28007F510 -28007F510:lI116|H28007F520 -28007F520:lI104|H28007F530 -28007F530:lI32|H28007F540 -28007F540:lI110|H28007F550 -28007F550:lI111|H28007F560 -28007F560:lI100|H28007F570 -28007F570:lI101|H28007F580 -28007F580:lI32|H28007F590 -28007F590:lI126|H28007F5A0 -28007F5A0:lI112|H28007F5B0 -28007F5B0:lI126|H28007F5C0 -28007F5C0:lI110|H28007F5D0 -28007F5D0:lI98|H28007F5E0 -28007F5E0:lI101|H28007F5F0 -28007F5F0:lI99|H28007F600 -28007F600:lI97|H28007F610 -28007F610:lI117|H28007F620 -28007F620:lI115|H28007F630 -28007F630:lI101|H28007F640 -28007F640:lI32|H28007F650 -28007F650:lI103|H28007F660 -28007F660:lI108|H28007F670 -28007F670:lI111|H28007F680 -28007F680:lI98|H28007F690 -28007F690:lI97|H28007F6A0 -28007F6A0:lI108|H28007F6B0 -28007F6B0:lI95|H28007F6C0 -28007F6C0:lI103|H28007F6D0 -28007F6D0:lI114|H28007F6E0 -28007F6E0:lI111|H28007F6F0 -28007F6F0:lI117|H28007F700 -28007F700:lI112|H28007F710 -28007F710:lI115|H28007F720 -28007F720:lI32|H28007F730 -28007F730:lI112|H28007F740 -28007F740:lI97|H28007F750 -28007F750:lI114|H28007F760 -28007F760:lI97|H28007F770 -28007F770:lI109|H28007F780 -28007F780:lI101|H28007F790 -28007F790:lI116|H28007F7A0 -28007F7A0:lI101|H28007F7B0 -28007F7B0:lI114|H28007F7C0 -28007F7C0:lI32|H28007F7D0 -28007F7D0:lI119|H28007F7E0 -28007F7E0:lI101|H28007F7F0 -28007F7F0:lI114|H28007F800 -28007F800:lI101|H28007F810 -28007F810:lI32|H28007F820 -28007F820:lI110|H28007F830 -28007F830:lI111|H28007F840 -28007F840:lI116|H28007F850 -28007F850:lI32|H28007F860 -28007F860:lI105|H28007F870 -28007F870:lI110|H28007F880 -28007F880:lI32|H28007F890 -28007F890:lI97|H28007F8A0 -28007F8A0:lI103|H28007F8B0 -28007F8B0:lI114|H28007F8C0 -28007F8C0:lI101|H28007F8D0 -28007F8D0:lI101|H28007F8E0 -28007F8E0:lI109|H28007F8F0 -28007F8F0:lI101|H28007F900 -28007F900:lI110|H28007F910 -28007F910:lI116|H28007F920 -28007F920:lI46|H28007F930 -28007F930:lI126|H28007F940 -28007F940:lI110|N -28007F950:t2:A4:erpc,AC:noconnection -28007F968:t9:A5:gconf,A7:invalid,A9:undefined,N,A6:normal,N,A3:all,N,A7:no_conf -28007F9B8:t2:A2:ok,A3:all -28007F9D0:lI108|N -28007F9E0:lI114|H28007F9D0 -28007F9F0:lI101|H28007F9E0 -28007FA00:lI46|H28007F9F0 -28007FA10:lI112|H28007FA00 -28007FA20:lI117|H28007FA10 -28007FA30:lI111|H28007FA20 -28007FA40:lI114|H28007FA30 -28007FA50:lI103|H28007FA40 -28007FA60:lI95|H28007FA50 -28007FA70:lI108|H28007FA60 -28007FA80:lI97|H28007FA70 -28007FA90:lI98|H28007FA80 -28007FAA0:lI111|H28007FA90 -28007FAB0:lI108|H28007FAA0 -28007FAC0:lI103|H28007FAB0 -28007FAD0:E50:g3AAAABOAP90bxlFikMVMF8VpcuovIcAAAAAAAAAAHcMZ2xvYmFsX2dyb3VwYQBiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FAF8:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAABAAAAAHcMZ2xvYmFsX2dyb3VwYQFiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FB20:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAACAAAAAHcMZ2xvYmFsX2dyb3VwYQJiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FB48:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAADAAAAAHcMZ2xvYmFsX2dyb3VwYQNiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FB70:E50:g3AAAABOA/90bxlFikMVMF8VpcuovIcAAAAHAAAAAHcMZ2xvYmFsX2dyb3VwYQdiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FB98:E50:g3AAAABOAv90bxlFikMVMF8VpcuovIcAAAAIAAAAAHcMZ2xvYmFsX2dyb3VwYQhiB/ujeFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -28007FC58:lN|N -28007FC68:t2:A4:erpc,A6:badarg -28007FC80:lH28007FCA0|H28007FC90 -28007FC90:lA7:monitor|N -28007FCA0:t2:A5:reply,AA:error_only -28007FCB8:t2:A4:erpc,AC:noconnection -28007FCD0:t2:A4:erpc,A7:timeout -28007FCE8:Mf0:H280010188: -28007FD00:lH28007FD10|N -28007FD10:t2:A5:reply,A2:no -28007FD28:lA4:info|N -28007FD38:t2:A5:reply,AA:error_only -28007FD50:t2:A5:error,H28007FD68 -28007FD68:t2:A4:erpc,A7:timeout -28007FD80:lI108|N -28007FD90:lI114|H28007FD80 -28007FDA0:lI101|H28007FD90 -28007FDB0:lI46|H28007FDA0 -28007FDC0:lI99|H28007FDB0 -28007FDD0:lI112|H28007FDC0 -28007FDE0:lI114|H28007FDD0 -28007FDF0:lI101|H28007FDE0 -28007FE00:E48:g3AAAABGArZvHmfGlHCs4XDYkOAiwhMAAAAAAAAAAHcEZXJwY2EAYgWzePNYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007FE28:E48:g3AAAABGA7ZvHmfGlHCs4XDYkOAiwhMAAAABAAAAAHcEZXJwY2EBYgWzePNYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -28007FE50:t1:AA:local_call -280082718:lA8:infinity|N -280082728:lH280082738|N -280082738:t2:A8:postpone,A5:false -280082750:lAA:gen_statem|N -280082760:t1:A3:t0q -280082770:Mf1:H280082760:N -280082790:lH2800827A0|N -2800827A0:t2:A8:internal,AA:init_state -2800827B8:t5:A5:state,H2800827E8,N,H280082810,A5:false -2800827E8:t2:A9:undefined,A9:undefined -280082800:t1:A3:t0q -280082810:Mf1:H280082800:N -280082830:t2:A4:exit,A6:normal -280082848:lI83|H280082858 -280082858:lI116|H280082868 -280082868:lI97|H280082878 -280082878:lI116|H280082888 -280082888:lI117|H280082898 -280082898:lI115|H2800828A8 -2800828A8:lI32|H2800828B8 -2800828B8:lI102|H2800828C8 -2800828C8:lI111|H2800828D8 -2800828D8:lI114|H2800828E8 -2800828E8:lI32|H2800828F8 -2800828F8:lI115|H280082908 -280082908:lI116|H280082918 -280082918:lI97|H280082928 -280082928:lI116|H280082938 -280082938:lI101|H280082948 -280082948:lI32|H280082958 -280082958:lI109|H280082968 -280082968:lI97|H280082978 -280082978:lI99|H280082988 -280082988:lI104|H280082998 -280082998:lI105|H2800829A8 -2800829A8:lI110|H2800829B8 -2800829B8:lI101|N -2800829C8:Mf0:H280010188: -2800829E0:lI83|H2800829F0 -2800829F0:lI116|H280082A00 -280082A00:lI97|H280082A10 -280082A10:lI116|H280082A20 -280082A20:lI101|N -280082A30:lI80|H280082A40 -280082A40:lI111|H280082A50 -280082A50:lI115|H280082A60 -280082A60:lI116|H280082A70 -280082A70:lI112|H280082A80 -280082A80:lI111|H280082A90 -280082A90:lI110|H280082AA0 -280082AA0:lI101|H280082AB0 -280082AB0:lI100|N -280082AC0:lI76|H280082AD0 -280082AD0:lI111|H280082AE0 -280082AE0:lI103|H280082AF0 -280082AF0:lI103|H280082B00 -280082B00:lI101|H280082B10 -280082B10:lI100|H280082B20 -280082B20:lI32|H280082B30 -280082B30:lI69|H280082B40 -280082B40:lI118|H280082B50 -280082B50:lI101|H280082B60 -280082B60:lI110|H280082B70 -280082B70:lI116|H280082B80 -280082B80:lI115|N -280082B90:lI84|H280082BA0 -280082BA0:lI105|H280082BB0 -280082BB0:lI109|H280082BC0 -280082BC0:lI101|H280082BD0 -280082BD0:lI45|H280082BE0 -280082BE0:lI111|H280082BF0 -280082BF0:lI117|H280082C00 -280082C00:lI116|H280082C10 -280082C10:lI115|N -280082C20:lI77|H280082C30 -280082C30:lI111|H280082C40 -280082C40:lI100|H280082C50 -280082C50:lI117|H280082C60 -280082C60:lI108|H280082C70 -280082C70:lI101|H280082C80 -280082C80:lI115|N -280082C90:lI80|H280082CA0 -280082CA0:lI97|H280082CB0 -280082CB0:lI114|H280082CC0 -280082CC0:lI101|H280082CD0 -280082CD0:lI110|H280082CE0 -280082CE0:lI116|N -280082CF0:lI83|H280082D00 -280082D00:lI116|H280082D10 -280082D10:lI97|H280082D20 -280082D20:lI116|H280082D30 -280082D30:lI117|H280082D40 -280082D40:lI115|N -280082D50:lI126|H280082D60 -280082D60:lI116|H280082D70 -280082D70:lI112|N -280082D80:lI126|H280082D90 -280082D90:lI116|H280082DA0 -280082DA0:lI112|H280082DB0 -280082DB0:lI32|H280082DC0 -280082DC0:lI61|H280082DD0 -280082DD0:lI62|H280082DE0 -280082DE0:lI32|H280082DF0 -280082DF0:lI126|H280082E00 -280082E00:lI116|H280082E10 -280082E10:lI112|N -280082E20:lI42|H280082E30 -280082E30:lI68|H280082E40 -280082E40:lI66|H280082E50 -280082E50:lI71|H280082E60 -280082E60:lI42|H280082E70 -280082E70:lI32|H280082E80 -280082E80:lI126|H280082E90 -280082E90:lI116|H280082EA0 -280082EA0:lI112|H280082EB0 -280082EB0:lI32|H280082EC0 -280082EC0:lI126|H280082ED0 -280082ED0:lI116|H280082EE0 -280082EE0:lI119|H280082EF0 -280082EF0:lI32|H280082F00 -280082F00:lI126|H280082F10 -280082F10:lI116|H280082F20 -280082F20:lI115|H280082F30 -280082F30:lI32|H280082F40 -280082F40:lI105|H280082F50 -280082F50:lI110|H280082F60 -280082F60:lI32|H280082F70 -280082F70:lI115|H280082F80 -280082F80:lI116|H280082F90 -280082F90:lI97|H280082FA0 -280082FA0:lI116|H280082FB0 -280082FB0:lI101|H280082FC0 -280082FC0:lI32|H280082FD0 -280082FD0:lI126|H280082FE0 -280082FE0:lI116|H280082FF0 -280082FF0:lI115|H280083000 -280083000:lI126|H280083010 -280083010:lI110|N -280083020:lI42|H280083030 -280083030:lI68|H280083040 -280083040:lI66|H280083050 -280083050:lI71|H280083060 -280083060:lI42|H280083070 -280083070:lI32|H280083080 -280083080:lI126|H280083090 -280083090:lI116|H2800830A0 -2800830A0:lI112|H2800830B0 -2800830B0:lI32|H2800830C0 -2800830C0:lI116|H2800830D0 -2800830D0:lI101|H2800830E0 -2800830E0:lI114|H2800830F0 -2800830F0:lI109|H280083100 -280083100:lI105|H280083110 -280083110:lI110|H280083120 -280083120:lI97|H280083130 -280083130:lI116|H280083140 -280083140:lI101|H280083150 -280083150:lI32|H280083160 -280083160:lI126|H280083170 -280083170:lI116|H280083180 -280083180:lI112|H280083190 -280083190:lI32|H2800831A0 -2800831A0:lI105|H2800831B0 -2800831B0:lI110|H2800831C0 -2800831C0:lI32|H2800831D0 -2800831D0:lI115|H2800831E0 -2800831E0:lI116|H2800831F0 -2800831F0:lI97|H280083200 -280083200:lI116|H280083210 -280083210:lI101|H280083220 -280083220:lI32|H280083230 -280083230:lI126|H280083240 -280083240:lI116|H280083250 -280083250:lI112|H280083260 -280083260:lI126|H280083270 -280083270:lI110|N -280083280:lI42|H280083290 -280083290:lI68|H2800832A0 -2800832A0:lI66|H2800832B0 -2800832B0:lI71|H2800832C0 -2800832C0:lI42|H2800832D0 -2800832D0:lI32|H2800832E0 -2800832E0:lI126|H2800832F0 -2800832F0:lI116|H280083300 -280083300:lI112|H280083310 -280083310:lI32|H280083320 -280083320:lI115|H280083330 -280083330:lI116|H280083340 -280083340:lI97|H280083350 -280083350:lI114|H280083360 -280083360:lI116|H280083370 -280083370:lI95|H280083380 -280083380:lI116|H280083390 -280083390:lI105|H2800833A0 -2800833A0:lI109|H2800833B0 -2800833B0:lI101|H2800833C0 -2800833C0:lI114|H2800833D0 -2800833D0:lI32|H2800833E0 -2800833E0:lI126|H2800833F0 -2800833F0:lI116|H280083400 -280083400:lI112|H280083410 -280083410:lI32|H280083420 -280083420:lI105|H280083430 -280083430:lI110|H280083440 -280083440:lI32|H280083450 -280083450:lI115|H280083460 -280083460:lI116|H280083470 -280083470:lI97|H280083480 -280083480:lI116|H280083490 -280083490:lI101|H2800834A0 -2800834A0:lI32|H2800834B0 -2800834B0:lI126|H2800834C0 -2800834C0:lI116|H2800834D0 -2800834D0:lI112|H2800834E0 -2800834E0:lI126|H2800834F0 -2800834F0:lI110|N -280083500:lI42|H280083510 -280083510:lI68|H280083520 -280083520:lI66|H280083530 -280083530:lI71|H280083540 -280083540:lI42|H280083550 -280083550:lI32|H280083560 -280083560:lI126|H280083570 -280083570:lI116|H280083580 -280083580:lI112|H280083590 -280083590:lI32|H2800835A0 -2800835A0:lI115|H2800835B0 -2800835B0:lI101|H2800835C0 -2800835C0:lI110|H2800835D0 -2800835D0:lI100|H2800835E0 -2800835E0:lI32|H2800835F0 -2800835F0:lI126|H280083600 -280083600:lI116|H280083610 -280083610:lI112|H280083620 -280083620:lI32|H280083630 -280083630:lI116|H280083640 -280083640:lI111|H280083650 -280083650:lI32|H280083660 -280083660:lI126|H280083670 -280083670:lI116|H280083680 -280083680:lI119|H280083690 -280083690:lI126|H2800836A0 -2800836A0:lI110|N -2800836B0:lI42|H2800836C0 -2800836C0:lI68|H2800836D0 -2800836D0:lI66|H2800836E0 -2800836E0:lI71|H2800836F0 -2800836F0:lI42|H280083700 -280083700:lI32|H280083710 -280083710:lI126|H280083720 -280083720:lI116|H280083730 -280083730:lI112|H280083740 -280083740:lI32|H280083750 -280083750:lI109|H280083760 -280083760:lI111|H280083770 -280083770:lI100|H280083780 -280083780:lI117|H280083790 -280083790:lI108|H2800837A0 -2800837A0:lI101|H2800837B0 -2800837B0:lI32|H2800837C0 -2800837C0:lI126|H2800837D0 -2800837D0:lI116|H2800837E0 -2800837E0:lI112|H2800837F0 -2800837F0:lI32|H280083800 -280083800:lI105|H280083810 -280083810:lI110|H280083820 -280083820:lI32|H280083830 -280083830:lI115|H280083840 -280083840:lI116|H280083850 -280083850:lI97|H280083860 -280083860:lI116|H280083870 -280083870:lI101|H280083880 -280083880:lI32|H280083890 -280083890:lI126|H2800838A0 -2800838A0:lI116|H2800838B0 -2800838B0:lI112|H2800838C0 -2800838C0:lI126|H2800838D0 -2800838D0:lI110|N -2800838E0:lI42|H2800838F0 -2800838F0:lI68|H280083900 -280083900:lI66|H280083910 -280083910:lI71|H280083920 -280083920:lI42|H280083930 -280083930:lI32|H280083940 -280083940:lI126|H280083950 -280083950:lI116|H280083960 -280083960:lI112|H280083970 -280083970:lI32|H280083980 -280083980:lI105|H280083990 -280083990:lI110|H2800839A0 -2800839A0:lI115|H2800839B0 -2800839B0:lI101|H2800839C0 -2800839C0:lI114|H2800839D0 -2800839D0:lI116|H2800839E0 -2800839E0:lI95|H2800839F0 -2800839F0:lI116|H280083A00 -280083A00:lI105|H280083A10 -280083A10:lI109|H280083A20 -280083A20:lI101|H280083A30 -280083A30:lI111|H280083A40 -280083A40:lI117|H280083A50 -280083A50:lI116|H280083A60 -280083A60:lI32|H280083A70 -280083A70:lI126|H280083A80 -280083A80:lI116|H280083A90 -280083A90:lI112|H280083AA0 -280083AA0:lI32|H280083AB0 -280083AB0:lI105|H280083AC0 -280083AC0:lI110|H280083AD0 -280083AD0:lI32|H280083AE0 -280083AE0:lI115|H280083AF0 -280083AF0:lI116|H280083B00 -280083B00:lI97|H280083B10 -280083B10:lI116|H280083B20 -280083B20:lI101|H280083B30 -280083B30:lI32|H280083B40 -280083B40:lI126|H280083B50 -280083B50:lI116|H280083B60 -280083B60:lI112|H280083B70 -280083B70:lI126|H280083B80 -280083B80:lI110|N -280083B90:lI42|H280083BA0 -280083BA0:lI68|H280083BB0 -280083BB0:lI66|H280083BC0 -280083BC0:lI71|H280083BD0 -280083BD0:lI42|H280083BE0 -280083BE0:lI32|H280083BF0 -280083BF0:lI126|H280083C00 -280083C00:lI116|H280083C10 -280083C10:lI112|H280083C20 -280083C20:lI32|H280083C30 -280083C30:lI114|H280083C40 -280083C40:lI101|H280083C50 -280083C50:lI99|H280083C60 -280083C60:lI101|H280083C70 -280083C70:lI105|H280083C80 -280083C80:lI118|H280083C90 -280083C90:lI101|H280083CA0 -280083CA0:lI32|H280083CB0 -280083CB0:lI126|H280083CC0 -280083CC0:lI116|H280083CD0 -280083CD0:lI115|H280083CE0 -280083CE0:lI32|H280083CF0 -280083CF0:lI105|H280083D00 -280083D00:lI110|H280083D10 -280083D10:lI32|H280083D20 -280083D20:lI115|H280083D30 -280083D30:lI116|H280083D40 -280083D40:lI97|H280083D50 -280083D50:lI116|H280083D60 -280083D60:lI101|H280083D70 -280083D70:lI32|H280083D80 -280083D80:lI126|H280083D90 -280083D90:lI116|H280083DA0 -280083DA0:lI112|H280083DB0 -280083DB0:lI126|H280083DC0 -280083DC0:lI110|N -280083DD0:lI42|H280083DE0 -280083DE0:lI68|H280083DF0 -280083DF0:lI66|H280083E00 -280083E00:lI71|H280083E10 -280083E10:lI42|H280083E20 -280083E20:lI32|H280083E30 -280083E30:lI126|H280083E40 -280083E40:lI116|H280083E50 -280083E50:lI112|H280083E60 -280083E60:lI32|H280083E70 -280083E70:lI101|H280083E80 -280083E80:lI110|H280083E90 -280083E90:lI116|H280083EA0 -280083EA0:lI101|H280083EB0 -280083EB0:lI114|H280083EC0 -280083EC0:lI32|H280083ED0 -280083ED0:lI126|H280083EE0 -280083EE0:lI116|H280083EF0 -280083EF0:lI112|H280083F00 -280083F00:lI32|H280083F10 -280083F10:lI105|H280083F20 -280083F20:lI110|H280083F30 -280083F30:lI32|H280083F40 -280083F40:lI115|H280083F50 -280083F50:lI116|H280083F60 -280083F60:lI97|H280083F70 -280083F70:lI116|H280083F80 -280083F80:lI101|H280083F90 -280083F90:lI32|H280083FA0 -280083FA0:lI126|H280083FB0 -280083FB0:lI116|H280083FC0 -280083FC0:lI112|H280083FD0 -280083FD0:lI126|H280083FE0 -280083FE0:lI110|N -280083FF0:lI99|H280084000 -280084000:lI97|H280084010 -280084010:lI108|H280084020 -280084020:lI108|H280084030 -280084030:lI32|H280084040 -280084040:lI126|H280084050 -280084050:lI116|H280084060 -280084060:lI112|H280084070 -280084070:lI32|H280084080 -280084080:lI102|H280084090 -280084090:lI114|H2800840A0 -2800840A0:lI111|H2800840B0 -2800840B0:lI109|H2800840C0 -2800840C0:lI32|H2800840D0 -2800840D0:lI126|H2800840E0 -2800840E0:lI116|H2800840F0 -2800840F0:lI119|N -280084100:lI126|H280084110 -280084110:lI116|H280084120 -280084120:lI119|H280084130 -280084130:lI32|H280084140 -280084140:lI126|H280084150 -280084150:lI116|H280084160 -280084160:lI112|N -280084170:t2:A2B:should_not_have_arrived_here_but_instead_in,H280084188 -280084188:t3:AA:gen_statem,A15:wakeup_from_hibernate,I3 -2800841A8:t2:A2A:bad_state_enter_action_from_state_function,A8:postpone -2800841C0:t2:A2A:bad_state_enter_action_from_state_function,A13:pop_callback_module -2800841D8:t2:AA:gen_statem,A9:terminate -2800841F0:t3:AC:error_logger,A6:domain,A9:report_cb -280084210:Mf3:H2800841F0:H280084268,H280084240,H2800842B8 -280084240:lA3:otp|N -280084250:t2:A3:tag,A9:report_cb -280084268:Mf2:H280084250:A5:error,H280084290 -280084290:E1C:g3F3Cmdlbl9zdGF0ZW13CmZvcm1hdF9sb2dhAQ== -2800842B8:E1C:g3F3Cmdlbl9zdGF0ZW13CmZvcm1hdF9sb2dhAg== -2800842E0:t3:A4:line,A4:file,A3:mfa -280084300:Mf3:H2800842E0:I2617,H280084330,H280084410 -280084330:lI103|H280084340 -280084340:lI101|H280084350 -280084350:lI110|H280084360 -280084360:lI95|H280084370 -280084370:lI115|H280084380 -280084380:lI116|H280084390 -280084390:lI97|H2800843A0 -2800843A0:lI116|H2800843B0 -2800843B0:lI101|H2800843C0 -2800843C0:lI109|H2800843D0 -2800843D0:lI46|H2800843E0 -2800843E0:lI101|H2800843F0 -2800843F0:lI114|H280084400 -280084400:lI108|N -280084410:t3:AA:gen_statem,AA:error_info,I7 -280084430:lA12:current_stacktrace|H280084440 -280084440:lAF:registered_name|N -280084450:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -280084478:Mf4:H280084450:A9:unlimited,A9:unlimited,A4:utf8,A5:false -2800844B0:lI46|H2800844C0 -2800844C0:lI32|H2800844D0 -2800844D0:lI83|H2800844E0 -2800844E0:lI116|H2800844F0 -2800844F0:lI97|H280084500 -280084500:lI99|H280084510 -280084510:lI107|H280084520 -280084520:lI58|H280084530 -280084530:lI32|N -280084540:lI46|H280084550 -280084550:lI32|H280084560 -280084560:lI76|H280084570 -280084570:lI97|H280084580 -280084580:lI115|H280084590 -280084590:lI116|H2800845A0 -2800845A0:lI32|H2800845B0 -2800845B0:lI101|H2800845C0 -2800845C0:lI118|H2800845D0 -2800845D0:lI101|H2800845E0 -2800845E0:lI110|H2800845F0 -2800845F0:lI116|H280084600 -280084600:lI58|H280084610 -280084610:lI32|N -280084620:lI46|H280084630 -280084630:lI32|H280084640 -280084640:lI76|H280084650 -280084650:lI111|H280084660 -280084660:lI103|H280084670 -280084670:lI58|H280084680 -280084680:lI32|N -280084690:lH2800846A0|N -2800846A0:lI46|N -2800846B0:lI46|H2800846C0 -2800846C0:lI32|H2800846D0 -2800846D0:lI83|H2800846E0 -2800846E0:lI116|H2800846F0 -2800846F0:lI97|H280084700 -280084700:lI116|H280084710 -280084710:lI101|H280084720 -280084720:lI58|H280084730 -280084730:lI32|N -280084740:lI32|H280084750 -280084750:lI116|H280084760 -280084760:lI101|H280084770 -280084770:lI114|H280084780 -280084780:lI109|H280084790 -280084790:lI105|H2800847A0 -2800847A0:lI110|H2800847B0 -2800847B0:lI97|H2800847C0 -2800847C0:lI116|H2800847D0 -2800847D0:lI105|H2800847E0 -2800847E0:lI110|H2800847F0 -2800847F0:lI103|H280084800 -280084800:lI46|H280084810 -280084810:lI32|H280084820 -280084820:lI82|H280084830 -280084830:lI101|H280084840 -280084840:lI97|H280084850 -280084850:lI115|H280084860 -280084860:lI111|H280084870 -280084870:lI110|H280084880 -280084880:lI58|H280084890 -280084890:lI32|N -2800848A0:lI83|H2800848B0 -2800848B0:lI116|H2800848C0 -2800848C0:lI97|H2800848D0 -2800848D0:lI116|H2800848E0 -2800848E0:lI101|H2800848F0 -2800848F0:lI32|H280084900 -280084900:lI109|H280084910 -280084910:lI97|H280084920 -280084920:lI99|H280084930 -280084930:lI104|H280084940 -280084940:lI105|H280084950 -280084950:lI110|H280084960 -280084960:lI101|H280084970 -280084970:lI32|N -280084980:lAB:state_enter|N -280084990:lI126|H2800849A0 -2800849A0:lI110|N -2800849B0:lI42|H2800849C0 -2800849C0:lI42|H2800849D0 -2800849D0:lI32|H2800849E0 -2800849E0:lI76|H2800849F0 -2800849F0:lI97|H280084A00 -280084A00:lI115|H280084A10 -280084A10:lI116|H280084A20 -280084A20:lI32|H280084A30 -280084A30:lI101|H280084A40 -280084A40:lI118|H280084A50 -280084A50:lI101|H280084A60 -280084A60:lI110|H280084A70 -280084A70:lI116|H280084A80 -280084A80:lI32|H280084A90 -280084A90:lI61|H280084AA0 -280084AA0:lI32|N -280084AB0:lI42|H280084AC0 -280084AC0:lI42|H280084AD0 -280084AD0:lI32|H280084AE0 -280084AE0:lI81|H280084AF0 -280084AF0:lI117|H280084B00 -280084B00:lI101|H280084B10 -280084B10:lI117|H280084B20 -280084B20:lI101|H280084B30 -280084B30:lI100|H280084B40 -280084B40:lI32|H280084B50 -280084B50:lI61|H280084B60 -280084B60:lI32|N -280084B70:lI42|H280084B80 -280084B80:lI42|H280084B90 -280084B90:lI32|H280084BA0 -280084BA0:lI80|H280084BB0 -280084BB0:lI111|H280084BC0 -280084BC0:lI115|H280084BD0 -280084BD0:lI116|H280084BE0 -280084BE0:lI112|H280084BF0 -280084BF0:lI111|H280084C00 -280084C00:lI110|H280084C10 -280084C10:lI101|H280084C20 -280084C20:lI100|H280084C30 -280084C30:lI32|H280084C40 -280084C40:lI61|H280084C50 -280084C50:lI32|N -280084C60:lI42|H280084C70 -280084C70:lI42|H280084C80 -280084C80:lI32|H280084C90 -280084C90:lI83|H280084CA0 -280084CA0:lI116|H280084CB0 -280084CB0:lI97|H280084CC0 -280084CC0:lI99|H280084CD0 -280084CD0:lI107|H280084CE0 -280084CE0:lI116|H280084CF0 -280084CF0:lI114|H280084D00 -280084D00:lI97|H280084D10 -280084D10:lI99|H280084D20 -280084D20:lI101|H280084D30 -280084D30:lI32|H280084D40 -280084D40:lI61|H280084D50 -280084D50:lI126|H280084D60 -280084D60:lI110|H280084D70 -280084D70:lI42|H280084D80 -280084D80:lI42|H280084D90 -280084D90:lI32|H280084DA0 -280084DA0:lI32|N -280084DB0:lI42|H280084DC0 -280084DC0:lI42|H280084DD0 -280084DD0:lI32|H280084DE0 -280084DE0:lI84|H280084DF0 -280084DF0:lI105|H280084E00 -280084E00:lI109|H280084E10 -280084E10:lI101|H280084E20 -280084E20:lI45|H280084E30 -280084E30:lI111|H280084E40 -280084E40:lI117|H280084E50 -280084E50:lI116|H280084E60 -280084E60:lI115|H280084E70 -280084E70:lI58|H280084E80 -280084E80:lI32|N -280084E90:lI42|H280084EA0 -280084EA0:lI42|H280084EB0 -280084EB0:lI32|H280084EC0 -280084EC0:lI76|H280084ED0 -280084ED0:lI111|H280084EE0 -280084EE0:lI103|H280084EF0 -280084EF0:lI32|H280084F00 -280084F00:lI61|H280084F10 -280084F10:lI126|H280084F20 -280084F20:lI110|H280084F30 -280084F30:lI42|H280084F40 -280084F40:lI42|H280084F50 -280084F50:lI32|H280084F60 -280084F60:lI32|N -280084F70:lI42|H280084F80 -280084F80:lI42|H280084F90 -280084F90:lI32|H280084FA0 -280084FA0:lI67|H280084FB0 -280084FB0:lI97|H280084FC0 -280084FC0:lI108|H280084FD0 -280084FD0:lI108|H280084FE0 -280084FE0:lI98|H280084FF0 -280084FF0:lI97|H280085000 -280085000:lI99|H280085010 -280085010:lI107|H280085020 -280085020:lI32|H280085030 -280085030:lI109|H280085040 -280085040:lI111|H280085050 -280085050:lI100|H280085060 -280085060:lI101|H280085070 -280085070:lI32|H280085080 -280085080:lI61|H280085090 -280085090:lI32|N -2800850A0:lI42|H2800850B0 -2800850B0:lI42|H2800850C0 -2800850C0:lI32|H2800850D0 -2800850D0:lI67|H2800850E0 -2800850E0:lI97|H2800850F0 -2800850F0:lI108|H280085100 -280085100:lI108|H280085110 -280085110:lI98|H280085120 -280085120:lI97|H280085130 -280085130:lI99|H280085140 -280085140:lI107|H280085150 -280085150:lI32|H280085160 -280085160:lI109|H280085170 -280085170:lI111|H280085180 -280085180:lI100|H280085190 -280085190:lI117|H2800851A0 -2800851A0:lI108|H2800851B0 -2800851B0:lI101|H2800851C0 -2800851C0:lI115|H2800851D0 -2800851D0:lI32|H2800851E0 -2800851E0:lI61|H2800851F0 -2800851F0:lI32|N -280085200:lI58|N -280085210:lI42|H280085220 -280085220:lI42|H280085230 -280085230:lI32|H280085240 -280085240:lI82|H280085250 -280085250:lI101|H280085260 -280085260:lI97|H280085270 -280085270:lI115|H280085280 -280085280:lI111|H280085290 -280085290:lI110|H2800852A0 -2800852A0:lI32|H2800852B0 -2800852B0:lI102|H2800852C0 -2800852C0:lI111|H2800852D0 -2800852D0:lI114|H2800852E0 -2800852E0:lI32|H2800852F0 -2800852F0:lI116|H280085300 -280085300:lI101|H280085310 -280085310:lI114|H280085320 -280085320:lI109|H280085330 -280085330:lI105|H280085340 -280085340:lI110|H280085350 -280085350:lI97|H280085360 -280085360:lI116|H280085370 -280085370:lI105|H280085380 -280085380:lI111|H280085390 -280085390:lI110|H2800853A0 -2800853A0:lI32|H2800853B0 -2800853B0:lI61|H2800853C0 -2800853C0:lI32|N -2800853D0:lI42|H2800853E0 -2800853E0:lI42|H2800853F0 -2800853F0:lI32|H280085400 -280085400:lI87|H280085410 -280085410:lI104|H280085420 -280085420:lI101|H280085430 -280085430:lI110|H280085440 -280085440:lI32|H280085450 -280085450:lI115|H280085460 -280085460:lI101|H280085470 -280085470:lI114|H280085480 -280085480:lI118|H280085490 -280085490:lI101|H2800854A0 -2800854A0:lI114|H2800854B0 -2800854B0:lI32|H2800854C0 -2800854C0:lI115|H2800854D0 -2800854D0:lI116|H2800854E0 -2800854E0:lI97|H2800854F0 -2800854F0:lI116|H280085500 -280085500:lI101|H280085510 -280085510:lI32|H280085520 -280085520:lI32|H280085530 -280085530:lI61|H280085540 -280085540:lI32|N -280085550:lI32|H280085560 -280085560:lI116|H280085570 -280085570:lI101|H280085580 -280085580:lI114|H280085590 -280085590:lI109|H2800855A0 -2800855A0:lI105|H2800855B0 -2800855B0:lI110|H2800855C0 -2800855C0:lI97|H2800855D0 -2800855D0:lI116|H2800855E0 -2800855E0:lI105|H2800855F0 -2800855F0:lI110|H280085600 -280085600:lI103|H280085610 -280085610:lI126|H280085620 -280085620:lI110|N -280085630:lI42|H280085640 -280085640:lI42|H280085650 -280085650:lI32|H280085660 -280085660:lI83|H280085670 -280085670:lI116|H280085680 -280085680:lI97|H280085690 -280085690:lI116|H2800856A0 -2800856A0:lI101|H2800856B0 -2800856B0:lI32|H2800856C0 -2800856C0:lI109|H2800856D0 -2800856D0:lI97|H2800856E0 -2800856E0:lI99|H2800856F0 -2800856F0:lI104|H280085700 -280085700:lI105|H280085710 -280085710:lI110|H280085720 -280085720:lI101|H280085730 -280085730:lI32|N -280085740:lI32|H280085750 -280085750:lI115|H280085760 -280085760:lI116|H280085770 -280085770:lI97|H280085780 -280085780:lI99|H280085790 -280085790:lI107|H2800857A0 -2800857A0:lI116|H2800857B0 -2800857B0:lI114|H2800857C0 -2800857C0:lI97|H2800857D0 -2800857D0:lI99|H2800857E0 -2800857E0:lI101|H2800857F0 -2800857F0:lI58|H280085800 -280085800:lI32|N -280085810:lI32|H280085820 -280085820:lI67|H280085830 -280085830:lI108|H280085840 -280085840:lI105|H280085850 -280085850:lI101|H280085860 -280085860:lI110|H280085870 -280085870:lI116|H280085880 -280085880:lI32|N -280085890:lI32|H2800858A0 -2800858A0:lI67|H2800858B0 -2800858B0:lI108|H2800858C0 -2800858C0:lI105|H2800858D0 -2800858D0:lI101|H2800858E0 -2800858E0:lI110|H2800858F0 -2800858F0:lI116|H280085900 -280085900:lI32|H280085910 -280085910:lI126|H280085920 -280085920:lI48|H280085930 -280085930:lI112|H280085940 -280085940:lI32|H280085950 -280085950:lI105|H280085960 -280085960:lI115|H280085970 -280085970:lI32|H280085980 -280085980:lI114|H280085990 -280085990:lI101|H2800859A0 -2800859A0:lI109|H2800859B0 -2800859B0:lI111|H2800859C0 -2800859C0:lI116|H2800859D0 -2800859D0:lI101|H2800859E0 -2800859E0:lI32|H2800859F0 -2800859F0:lI111|H280085A00 -280085A00:lI110|H280085A10 -280085A10:lI32|H280085A20 -280085A20:lI110|H280085A30 -280085A30:lI111|H280085A40 -280085A40:lI100|H280085A50 -280085A50:lI101|H280085A60 -280085A60:lI32|H280085A70 -280085A70:lI126|H280085A80 -280085A80:lI48|H280085A90 -280085A90:lI112|H280085AA0 -280085AA0:lI46|N -280085AB0:lI32|H280085AC0 -280085AC0:lI67|H280085AD0 -280085AD0:lI108|H280085AE0 -280085AE0:lI105|H280085AF0 -280085AF0:lI101|H280085B00 -280085B00:lI110|H280085B10 -280085B10:lI116|H280085B20 -280085B20:lI32|H280085B30 -280085B30:lI126|H280085B40 -280085B40:lI48|H280085B50 -280085B50:lI112|H280085B60 -280085B60:lI32|H280085B70 -280085B70:lI105|H280085B80 -280085B80:lI115|H280085B90 -280085B90:lI32|H280085BA0 -280085BA0:lI100|H280085BB0 -280085BB0:lI101|H280085BC0 -280085BC0:lI97|H280085BD0 -280085BD0:lI100|H280085BE0 -280085BE0:lI46|N -280085BF0:t2:N,N -280085C08:lH280085C18|N -280085C18:lI126|H280085C28 -280085C28:lI110|N -280085C38:lI32|H280085C48 -280085C48:lI115|H280085C58 -280085C58:lI116|H280085C68 -280085C68:lI97|H280085C78 -280085C78:lI99|H280085C88 -280085C88:lI107|H280085C98 -280085C98:lI116|H280085CA8 -280085CA8:lI114|H280085CB8 -280085CB8:lI97|H280085CC8 -280085CC8:lI99|H280085CD8 -280085CD8:lI101|H280085CE8 -280085CE8:lI126|H280085CF8 -280085CF8:lI110|H280085D08 -280085D08:lI42|H280085D18 -280085D18:lI42|H280085D28 -280085D28:lI32|N -280085D38:lI42|H280085D48 -280085D48:lI42|H280085D58 -280085D58:lI32|H280085D68 -280085D68:lI67|H280085D78 -280085D78:lI108|H280085D88 -280085D88:lI105|H280085D98 -280085D98:lI101|H280085DA8 -280085DA8:lI110|H280085DB8 -280085DB8:lI116|H280085DC8 -280085DC8:lI32|N -280085DD8:lI42|H280085DE8 -280085DE8:lI42|H280085DF8 -280085DF8:lI32|H280085E08 -280085E08:lI67|H280085E18 -280085E18:lI108|H280085E28 -280085E28:lI105|H280085E38 -280085E38:lI101|H280085E48 -280085E48:lI110|H280085E58 -280085E58:lI116|H280085E68 -280085E68:lI32|H280085E78 -280085E78:lI126|H280085E88 -280085E88:lI112|H280085E98 -280085E98:lI32|H280085EA8 -280085EA8:lI105|H280085EB8 -280085EB8:lI115|H280085EC8 -280085EC8:lI32|H280085ED8 -280085ED8:lI114|H280085EE8 -280085EE8:lI101|H280085EF8 -280085EF8:lI109|H280085F08 -280085F08:lI111|H280085F18 -280085F18:lI116|H280085F28 -280085F28:lI101|H280085F38 -280085F38:lI32|H280085F48 -280085F48:lI111|H280085F58 -280085F58:lI110|H280085F68 -280085F68:lI32|H280085F78 -280085F78:lI110|H280085F88 -280085F88:lI111|H280085F98 -280085F98:lI100|H280085FA8 -280085FA8:lI101|H280085FB8 -280085FB8:lI32|H280085FC8 -280085FC8:lI126|H280085FD8 -280085FD8:lI112|H280085FE8 -280085FE8:lI126|H280085FF8 -280085FF8:lI110|N -280086008:lI42|H280086018 -280086018:lI42|H280086028 -280086028:lI32|H280086038 -280086038:lI67|H280086048 -280086048:lI108|H280086058 -280086058:lI105|H280086068 -280086068:lI101|H280086078 -280086078:lI110|H280086088 -280086088:lI116|H280086098 -280086098:lI32|H2800860A8 -2800860A8:lI126|H2800860B8 -2800860B8:lI112|H2800860C8 -2800860C8:lI32|H2800860D8 -2800860D8:lI105|H2800860E8 -2800860E8:lI115|H2800860F8 -2800860F8:lI32|H280086108 -280086108:lI100|H280086118 -280086118:lI101|H280086128 -280086128:lI97|H280086138 -280086138:lI100|H280086148 -280086148:lI126|H280086158 -280086158:lI110|N -280086168:lI112|N -280086178:lI80|N -280086188:lI48|N -280086198:lI116|N -2800861A8:lH280086208|H2800861B8 -2800861B8:lH280086220|H2800861C8 -2800861C8:lH280086238|H2800861D8 -2800861D8:lH280086250|H2800861E8 -2800861E8:lH280086268|H2800861F8 -2800861F8:lH280086280|N -280086208:t2:AD:format_status,I1 -280086220:t2:AD:format_status,I2 -280086238:t2:A9:terminate,I3 -280086250:t2:AB:code_change,I4 -280086268:t2:AA:state_name,I3 -280086280:t2:AC:handle_event,I4 -280086298:lH280086318|H2800862A8 -2800862A8:lH280086330|H2800862B8 -2800862B8:lH280086348|H2800862C8 -2800862C8:lH280086360|H2800862D8 -2800862D8:lH280086378|H2800862E8 -2800862E8:lH280086390|H2800862F8 -2800862F8:lH2800863A8|H280086308 -280086308:lH2800863C0|N -280086318:t2:A4:init,I1 -280086330:t2:AD:callback_mode,I0 -280086348:t2:AA:state_name,I3 -280086360:t2:AC:handle_event,I4 -280086378:t2:A9:terminate,I3 -280086390:t2:AB:code_change,I4 -2800863A8:t2:AD:format_status,I2 -2800863C0:t2:AD:format_status,I1 -2800863D8:lI108|N -2800863E8:lI114|H2800863D8 -2800863F8:lI101|H2800863E8 -280086408:lI46|H2800863F8 -280086418:lI109|H280086408 -280086428:lI101|H280086418 -280086438:lI116|H280086428 -280086448:lI97|H280086438 -280086458:lI116|H280086448 -280086468:lI115|H280086458 -280086478:lI95|H280086468 -280086488:lI110|H280086478 -280086498:lI101|H280086488 -2800864A8:lI103|H280086498 -2800864B8:t5:A4:data,A3:log,A5:state,A9:postponed,A8:timeouts -2800864E8:E4E:g3AAAABMA28avFfTiJ0lhkokoxIXuNAAAAAAAAAAAHcKZ2VuX3N0YXRlbWEAYgN41eJYdw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -280086510:t7:A4:data,A6:reason,A3:log,A5:state,A5:queue,A9:postponed,A8:timeouts -280086550:tC:A5:label,A4:name,A6:reason,A3:log,A5:state,A5:queue,A7:modules,AB:client_info,AD:callback_mode,A9:postponed,A8:timeouts,AB:state_enter -2800865B8:t4:AB:chars_limit,A5:depth,A8:encoding,AB:single_line -2800865F8:Mf0:H280010188: -280086610:lI112|H280086620 -280086620:lI114|H280086630 -280086630:lI105|H280086640 -280086640:lI109|H280086650 -280086650:lI95|H280086660 -280086660:lI116|H280086670 -280086670:lI116|H280086680 -280086680:lI121|N -280086690:t2:A5:error,A7:enotsup -2800866A8:lH2800866D8|H2800866B8 -2800866B8:lH280086738|H2800866C8 -2800866C8:lH2800867B8|N -2800866D8:lI76|H2800866E8 -2800866E8:lI67|H2800866F8 -2800866F8:lI95|H280086708 -280086708:lI65|H280086718 -280086718:lI76|H280086728 -280086728:lI76|N -280086738:lI76|H280086748 -280086748:lI67|H280086758 -280086758:lI95|H280086768 -280086768:lI67|H280086778 -280086778:lI84|H280086788 -280086788:lI89|H280086798 -280086798:lI80|H2800867A8 -2800867A8:lI69|N -2800867B8:lI76|H2800867C8 -2800867C8:lI65|H2800867D8 -2800867D8:lI78|H2800867E8 -2800867E8:lI71|N -2800867F8:lA7:unicode|N -280086808:Yc1309301C0:0:9C -280086838:Yh7:G1tIG1sySg== -280086850:Yh3:G1tB -280086868:Yh1:Cg== -280086880:Yh1:CA== -280086898:Yh3:G1tD -2800868B0:Yh4:G1sxSQ== -2800868C8:Yh3:G1tK -2800868E0:Yh4:G1s2bg== -2800868F8:Yh15:G1xbKFswLTldKyk7KFswLTldKylS -280086920:t4:A5:input,A4:echo,A3:tty,A5:canon -280086948:Mf4:H280086920:A4:true,A5:false,A4:true,A5:false -280086980:lI84|H280086990 -280086990:lI69|H2800869A0 -2800869A0:lI82|H2800869B0 -2800869B0:lI77|N -2800869C0:lI99|H2800869D0 -2800869D0:lI108|H2800869E0 -2800869E0:lI101|H2800869F0 -2800869F0:lI97|H280086A00 -280086A00:lI114|N -280086A10:lI99|H280086A20 -280086A20:lI111|N -280086A30:lI117|H280086A40 -280086A40:lI112|N -280086A50:lI100|H280086A60 -280086A60:lI111|N -280086A70:lI98|H280086A80 -280086A80:lI115|N -280086A90:lI98|H280086AA0 -280086AA0:lI99|N -280086AB0:lI110|H280086AC0 -280086AC0:lI100|N -280086AD0:lI73|H280086AE0 -280086AE0:lI67|N -280086AF0:lI116|H280086B00 -280086B00:lI97|N -280086B10:lI68|H280086B20 -280086B20:lI67|N -280086B30:lI117|H280086B40 -280086B40:lI55|N -280086B50:lI117|H280086B60 -280086B60:lI54|N -280086B70:t2:A2:ok,H280086B88 -280086B88:YhA:G1slaSVkOyVkUg== -280086BA8:lI99|H280086BB8 -280086BB8:lI100|N -280086BC8:lI120|H280086BD8 -280086BD8:lI110|N -280086BE8:lH280086BF8|N -280086BF8:t2:A5:alias,AF:reply_demonitor -280086C10:Yh0: -280086C20:t2:A11:set_unicode_state,A5:false -280086C38:t2:A5:utf16,A6:little -280086C50:lI13|H280086C60 -280086C60:lI10|N -280086C70:t2:A4:move,I0 -280086C88:lN|N -280086C98:Yh1:Bw== -280086CB0:t2:N,N -280086CC8:Yh1:IA== -280086CE0:Yh1:DQ== -280086CF8:Yh2:DQo= -280086D10:lI94|H280086D20 -280086D20:lI63|N -280086D30:lI0|N -280086D40:lI92|H280086D50 -280086D50:lI36|H280086D60 -280086D60:lI60|H280086D70 -280086D70:lI91|H280086D80 -280086D80:lI94|H280086D90 -280086D90:lI62|H280086DA0 -280086DA0:lI93|H280086DB0 -280086DB0:lI42|H280086DC0 -280086DC0:lI62|N -280086DD0:lI10|N -280086DE0:lI85|H280086DF0 -280086DF0:lI84|H280086E00 -280086E00:lI70|H280086E10 -280086E10:lI45|H280086E20 -280086E20:lI56|N -280086E30:lI108|N -280086E40:lI114|H280086E30 -280086E50:lI101|H280086E40 -280086E60:lI46|H280086E50 -280086E70:lI121|H280086E60 -280086E80:lI116|H280086E70 -280086E90:lI116|H280086E80 -280086EA0:lI95|H280086E90 -280086EB0:lI109|H280086EA0 -280086EC0:lI105|H280086EB0 -280086ED0:lI114|H280086EC0 -280086EE0:lI112|H280086ED0 -280086EF0:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAAAAAAAAHcIcHJpbV90dHlhAGIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280086F18:t2:A4:read,A5:write -280086F30:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAABAAAAAHcIcHJpbV90dHlhAWIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280086F58:E4C:g3AAAABKAY/2CN5VWPSliGwYiyNwoQIAAAACAAAAAHcIcHJpbV90dHlhAmIEf7BGWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -2800870F0:E1A:g3F3DGVkbGluX2V4cGFuZHcGZXhwYW5kYQI= -280087118:t2:A5:error,A7:timeout -280087130:t2:A5:error,A7:enotsup -280087148:t2:AC:get_password,A6:latin1 -280087160:t2:A5:error,A7:request -280087178:t2:A8:encoding,A7:unicode -280087190:t2:A8:encoding,A6:latin1 -2800871A8:lH2800871B8|N -2800871B8:t2:A4:list,A6:binary -2800871D0:t2:A4:exit,AA:terminated -2800871E8:t3:A5:error,H280087208,N -280087208:t2:A5:error,AB:interrupted -280087220:lAA:new_prompt|N -280087230:lI10|N -280087240:lI27|H280087250 -280087250:lI91|H280087260 -280087260:lI59|H280087270 -280087270:lI49|H280087280 -280087280:lI59|H280087290 -280087290:lI52|H2800872A0 -2800872A0:lI109|H2800872B0 -2800872B0:lI115|H2800872C0 -2800872C0:lI101|H2800872D0 -2800872D0:lI97|H2800872E0 -2800872E0:lI114|H2800872F0 -2800872F0:lI99|H280087300 -280087300:lI104|H280087310 -280087310:lI58|H280087320 -280087320:lI27|H280087330 -280087330:lI91|H280087340 -280087340:lI48|H280087350 -280087350:lI109|H280087360 -280087360:lI32|N -280087370:lI80|H280087380 -280087380:lI114|H280087390 -280087390:lI101|H2800873A0 -2800873A0:lI115|H2800873B0 -2800873B0:lI115|H2800873C0 -2800873C0:lI32|H2800873D0 -2800873D0:lI116|H2800873E0 -2800873E0:lI97|H2800873F0 -2800873F0:lI98|H280087400 -280087400:lI32|H280087410 -280087410:lI116|H280087420 -280087420:lI111|H280087430 -280087430:lI32|H280087440 -280087440:lI115|H280087450 -280087450:lI101|H280087460 -280087460:lI101|H280087470 -280087470:lI32|H280087480 -280087480:lI97|H280087490 -280087490:lI108|H2800874A0 -2800874A0:lI108|H2800874B0 -2800874B0:lI32|H2800874C0 -2800874C0:lI126|H2800874D0 -2800874D0:lI112|H2800874E0 -2800874E0:lI32|H2800874F0 -2800874F0:lI101|H280087500 -280087500:lI120|H280087510 -280087510:lI112|H280087520 -280087520:lI97|H280087530 -280087530:lI110|H280087540 -280087540:lI115|H280087550 -280087550:lI105|H280087560 -280087560:lI111|H280087570 -280087570:lI110|H280087580 -280087580:lI115|N -280087590:lI27|H2800875A0 -2800875A0:lI108|N -2800875B0:t3:N,H2800875D0,N -2800875D0:t2:N,N -2800875E8:lI126|H2800875F8 -2800875F8:lI110|H280087608 -280087608:lI32|H280087618 -280087618:lI32|H280087628 -280087628:lI46|H280087638 -280087638:lI46|H280087648 -280087648:lI46|H280087658 -280087658:lI32|H280087668 -280087668:lI40|H280087678 -280087678:lI126|H280087688 -280087688:lI119|H280087698 -280087698:lI32|H2800876A8 -2800876A8:lI108|H2800876B8 -2800876B8:lI105|H2800876C8 -2800876C8:lI110|H2800876D8 -2800876D8:lI101|H2800876E8 -2800876E8:lI115|H2800876F8 -2800876F8:lI32|H280087708 -280087708:lI111|H280087718 -280087718:lI109|H280087728 -280087728:lI105|H280087738 -280087738:lI116|H280087748 -280087748:lI116|H280087758 -280087758:lI101|H280087768 -280087768:lI100|H280087778 -280087778:lI41|N -280087788:t3:A4:done,A3:eof,A3:eof -2800877A8:lH2800877B8|N -2800877B8:lI10|N -2800877C8:lI36|H2800877D8 -2800877D8:lI10|N -2800877E8:lH2800877F8|N -2800877F8:t3:AC:insert_chars,A7:unicode,H280087818 -280087818:lI10|N -280087828:lI108|N -280087838:lI114|H280087828 -280087848:lI101|H280087838 -280087858:lI46|H280087848 -280087868:lI112|H280087858 -280087878:lI117|H280087868 -280087888:lI111|H280087878 -280087898:lI114|H280087888 -2800878A8:lI103|H280087898 -2800878B8:E49:g3AAAABHAqhn0q4vp+7qt42F8kJsnfMAAAABAAAAAHcFZ3JvdXBhAWIFQz6VWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -2800878E0:E49:g3AAAABHAqhn0q4vp+7qt42F8kJsnfMAAAACAAAAAHcFZ3JvdXBhAmIFQz6VWHcNbm9ub2RlQG5vaG9zdAAAAAAAAAAAAAAAAA== -280088258:t2:A5:local,AA:logger_sup -280088270:t3:A2:id,A8:shutdown,A5:start -280088290:Mf3:H280088270:A16:logger_handler_watcher,AB:brutal_kill,H2800882C0 -2800882C0:t3:A16:logger_handler_watcher,AA:start_link,N -2800882E0:t3:A8:strategy,A6:period,A9:intensity -280088300:Mf3:H2800882E0:AB:one_for_one,I5,I1 -280088330:lI108|N -280088340:lI114|H280088330 -280088350:lI101|H280088340 -280088360:lI46|H280088350 -280088370:lI112|H280088360 -280088380:lI117|H280088370 -280088390:lI115|H280088380 -2800883A0:lI95|H280088390 -2800883B0:lI114|H2800883A0 -2800883C0:lI101|H2800883B0 -2800883D0:lI103|H2800883C0 -2800883E0:lI103|H2800883D0 -2800883F0:lI111|H2800883E0 -280088400:lI108|H2800883F0 -28008FA28:t2:A5:local,AB:kernel_refc -28008FA40:t2:A2:ok,H28008FA68 -28008FA58:t1:A13:scheduler_wall_time -28008FA68:Mf1:H28008FA58:H28008FA88 -28008FA88:Mf0:H280010188: -28008FAA0:lA5:flush|N -28008FAB0:lI108|N -28008FAC0:lI114|H28008FAB0 -28008FAD0:lI101|H28008FAC0 -28008FAE0:lI46|H28008FAD0 -28008FAF0:lI99|H28008FAE0 -28008FB00:lI102|H28008FAF0 -28008FB10:lI101|H28008FB00 -28008FB20:lI114|H28008FB10 -28008FB30:lI95|H28008FB20 -28008FB40:lI108|H28008FB30 -28008FB50:lI101|H28008FB40 -28008FB60:lI110|H28008FB50 -28008FB70:lI114|H28008FB60 -28008FB80:lI101|H28008FB70 -28008FB90:lI107|H28008FB80 -28008FBB8:t2:A2:ok,H28008FBD0 -28008FBD0:t1:A5:state -28008FBE0:lI82|H28008FBF0 -28008FBF0:lI101|H28008FC00 -28008FC00:lI99|H28008FC10 -28008FC10:lI101|H28008FC20 -28008FC20:lI105|H28008FC30 -28008FC30:lI118|H28008FC40 -28008FC40:lI101|H28008FC50 -28008FC50:lI100|H28008FC60 -28008FC60:lI32|H28008FC70 -28008FC70:lI83|H28008FC80 -28008FC80:lI73|H28008FC90 -28008FC90:lI71|H28008FCA0 -28008FCA0:lI85|H28008FCB0 -28008FCB0:lI83|H28008FCC0 -28008FCC0:lI82|H28008FCD0 -28008FCD0:lI49|N -28008FCE0:lI83|H28008FCF0 -28008FCF0:lI73|H28008FD00 -28008FD00:lI71|H28008FD10 -28008FD10:lI84|H28008FD20 -28008FD20:lI69|H28008FD30 -28008FD30:lI82|H28008FD40 -28008FD40:lI77|H28008FD50 -28008FD50:lI32|H28008FD60 -28008FD60:lI114|H28008FD70 -28008FD70:lI101|H28008FD80 -28008FD80:lI99|H28008FD90 -28008FD90:lI101|H28008FDA0 -28008FDA0:lI105|H28008FDB0 -28008FDB0:lI118|H28008FDC0 -28008FDC0:lI101|H28008FDD0 -28008FDD0:lI100|H28008FDE0 -28008FDE0:lI32|H28008FDF0 -28008FDF0:lI45|H28008FE00 -28008FE00:lI32|H28008FE10 -28008FE10:lI115|H28008FE20 -28008FE20:lI104|H28008FE30 -28008FE30:lI117|H28008FE40 -28008FE40:lI116|H28008FE50 -28008FE50:lI116|H28008FE60 -28008FE60:lI105|H28008FE70 -28008FE70:lI110|H28008FE80 -28008FE80:lI103|H28008FE90 -28008FE90:lI32|H28008FEA0 -28008FEA0:lI100|H28008FEB0 -28008FEB0:lI111|H28008FEC0 -28008FEC0:lI119|H28008FED0 -28008FED0:lI110|H28008FEE0 -28008FEE0:lI126|H28008FEF0 -28008FEF0:lI110|N -28008FF00:lI108|N -28008FF10:lI114|H28008FF00 -28008FF20:lI101|H28008FF10 -28008FF30:lI46|H28008FF20 -28008FF40:lI114|H28008FF30 -28008FF50:lI101|H28008FF40 -28008FF60:lI108|H28008FF50 -28008FF70:lI100|H28008FF60 -28008FF80:lI110|H28008FF70 -28008FF90:lI97|H28008FF80 -28008FFA0:lI104|H28008FF90 -28008FFB0:lI95|H28008FFA0 -28008FFC0:lI108|H28008FFB0 -28008FFD0:lI97|H28008FFC0 -28008FFE0:lI110|H28008FFD0 -28008FFF0:lI103|H28008FFE0 -280090000:lI105|H28008FFF0 -280090010:lI115|H280090000 -280090020:lI95|H280090010 -280090030:lI108|H280090020 -280090040:lI114|H280090030 -280090050:lI101|H280090040 -280091550:lA4:type|H280091560 -280091560:lA4:file|H280091570 -280091570:lA5:modes|H280091580 -280091580:lAA:file_check|H280091590 -280091590:lAC:max_no_bytes|H2800915A0 -2800915A0:lAC:max_no_files|H2800915B0 -2800915B0:lA12:compress_on_rotate|N -2800915C0:lA4:type|H2800915D0 -2800915D0:lA4:file|H2800915E0 -2800915E0:lA5:modes|N -2800915F0:Mf0:H280010188: -280091608:lA3:raw|H280091618 -280091618:lA6:append|N -280091628:lA3:raw|N -280091638:lA5:write|H280091648 -280091648:lA6:append|H280091658 -280091658:lA9:exclusive|N -280091668:t2:A5:error,A1D:file_ctrl_process_not_started -280091680:lA5:flush|N -280091690:lI70|H2800916A0 -2800916A0:lI97|H2800916B0 -2800916B0:lI105|H2800916C0 -2800916C0:lI108|H2800916D0 -2800916D0:lI101|H2800916E0 -2800916E0:lI100|H2800916F0 -2800916F0:lI32|H280091700 -280091700:lI116|H280091710 -280091710:lI111|H280091720 -280091720:lI32|H280091730 -280091730:lI119|H280091740 -280091740:lI114|H280091750 -280091750:lI105|H280091760 -280091760:lI116|H280091770 -280091770:lI101|H280091780 -280091780:lI32|H280091790 -280091790:lI108|H2800917A0 -2800917A0:lI111|H2800917B0 -2800917B0:lI103|H2800917C0 -2800917C0:lI32|H2800917D0 -2800917D0:lI109|H2800917E0 -2800917E0:lI101|H2800917F0 -2800917F0:lI115|H280091800 -280091800:lI115|H280091810 -280091810:lI97|H280091820 -280091820:lI103|H280091830 -280091830:lI101|H280091840 -280091840:lI32|H280091850 -280091850:lI116|H280091860 -280091860:lI111|H280091870 -280091870:lI32|H280091880 -280091880:lI115|H280091890 -280091890:lI116|H2800918A0 -2800918A0:lI100|H2800918B0 -2800918B0:lI111|H2800918C0 -2800918C0:lI117|H2800918D0 -2800918D0:lI116|H2800918E0 -2800918E0:lI44|H2800918F0 -2800918F0:lI32|H280091900 -280091900:lI116|H280091910 -280091910:lI114|H280091920 -280091920:lI121|H280091930 -280091930:lI105|H280091940 -280091940:lI110|H280091950 -280091950:lI103|H280091960 -280091960:lI32|H280091970 -280091970:lI115|H280091980 -280091980:lI116|H280091990 -280091990:lI100|H2800919A0 -2800919A0:lI101|H2800919B0 -2800919B0:lI114|H2800919C0 -2800919C0:lI114|H2800919D0 -2800919D0:lI10|N -2800919E0:t2:A5:error,A6:enoent -2800919F8:lI46|H280091A08 -280091A08:lI48|N -280091A18:lI46|H280091A28 -280091A28:lI103|H280091A38 -280091A38:lI122|N -280091A48:lA4:read|H280091A58 -280091A58:lA6:binary|N -280091A68:lA5:write|N -280091A78:Yh0: -280091A88:lI108|N -280091A98:lI114|H280091A88 -280091AA8:lI101|H280091A98 -280091AB8:lI46|H280091AA8 -280091AC8:lI104|H280091AB8 -280091AD8:lI95|H280091AC8 -280091AE8:lI100|H280091AD8 -280091AF8:lI116|H280091AE8 -280091B08:lI115|H280091AF8 -280091B18:lI95|H280091B08 -280091B28:lI114|H280091B18 -280091B38:lI101|H280091B28 -280091B48:lI103|H280091B38 -280091B58:lI103|H280091B48 -280091B68:lI111|H280091B58 -280091B78:lI108|H280091B68 -280091B88:t7:A4:type,A4:file,A12:compress_on_rotate,AA:file_check,AC:max_no_bytes,AC:max_no_files,A5:modes -280091BC8:t1:A4:type -280091BD8:E50:g3AAAABOAQjqLBPECzXLncj+B21nkB0AAAAAAAAAAHcMbG9nZ2VyX3N0ZF9oYQBiAEdRYFh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280091C00:t4:A12:compress_on_rotate,AA:file_check,AC:max_no_bytes,AC:max_no_files -280091C28:tA:A2:fd,A9:file_name,A6:synced,AA:file_check,A5:modes,AC:handler_name,A5:inode,AA:last_check,A8:sync_res,A9:write_res -280091C80:t2:AC:handler_name,A3:dev -280091C98:t4:A5:count,A4:size,A8:compress,A9:curr_size -280091CD8:Mf0:H280010188: -280091CF0:lAE:sync_mode_qlen|H280091D00 -280091D00:lAE:drop_mode_qlen|H280091D10 -280091D10:lAA:flush_qlen|H280091D20 -280091D20:lA12:burst_limit_enable|H280091D30 -280091D30:lA15:burst_limit_max_count|H280091D40 -280091D40:lA17:burst_limit_window_time|H280091D50 -280091D50:lA14:overload_kill_enable|H280091D60 -280091D60:lA12:overload_kill_qlen|H280091D70 -280091D70:lA16:overload_kill_mem_size|H280091D80 -280091D80:lA1B:overload_kill_restart_after|H280091D90 -280091D90:lA18:filesync_repeat_interval|N -280091DA0:lA18:filesync_repeat_interval|N -280091DB0:lAE:sync_mode_qlen|H280091DC0 -280091DC0:lAE:drop_mode_qlen|H280091DD0 -280091DD0:lAA:flush_qlen|H280091DE0 -280091DE0:lA12:burst_limit_enable|H280091DF0 -280091DF0:lA15:burst_limit_max_count|H280091E00 -280091E00:lA17:burst_limit_window_time|H280091E10 -280091E10:lA14:overload_kill_enable|H280091E20 -280091E20:lA12:overload_kill_qlen|H280091E30 -280091E30:lA16:overload_kill_mem_size|H280091E40 -280091E40:lA1B:overload_kill_restart_after|N -280091E50:lI95|N -280091E60:lAE:sync_mode_qlen|H280091E70 -280091E70:lAE:drop_mode_qlen|H280091E80 -280091E80:lAA:flush_qlen|H280091E90 -280091E90:lA12:burst_limit_enable|H280091EA0 -280091EA0:lA15:burst_limit_max_count|H280091EB0 -280091EB0:lA17:burst_limit_window_time|H280091EC0 -280091EC0:lA14:overload_kill_enable|H280091ED0 -280091ED0:lA12:overload_kill_qlen|H280091EE0 -280091EE0:lA16:overload_kill_mem_size|H280091EF0 -280091EF0:lA1B:overload_kill_restart_after|H280091F00 -280091F00:lA18:filesync_repeat_interval|H280091F10 -280091F10:lA3:olp|N -280091F20:lA3:olp|N -280091F30:lAF:logger_h_common|N -280091F40:lI72|H280091F50 -280091F50:lI97|H280091F60 -280091F60:lI110|H280091F70 -280091F70:lI100|H280091F80 -280091F80:lI108|H280091F90 -280091F90:lI101|H280091FA0 -280091FA0:lI114|H280091FB0 -280091FB0:lI32|H280091FC0 -280091FC0:lI126|H280091FD0 -280091FD0:lI112|H280091FE0 -280091FE0:lI32|H280091FF0 -280091FF0:lI111|H280092000 -280092000:lI118|H280092010 -280092010:lI101|H280092020 -280092020:lI114|H280092030 -280092030:lI108|H280092040 -280092040:lI111|H280092050 -280092050:lI97|H280092060 -280092060:lI100|H280092070 -280092070:lI101|H280092080 -280092080:lI100|H280092090 -280092090:lI32|H2800920A0 -2800920A0:lI97|H2800920B0 -2800920B0:lI110|H2800920C0 -2800920C0:lI100|H2800920D0 -2800920D0:lI32|H2800920E0 -2800920E0:lI115|H2800920F0 -2800920F0:lI116|H280092100 -280092100:lI111|H280092110 -280092110:lI112|H280092120 -280092120:lI112|H280092130 -280092130:lI105|H280092140 -280092140:lI110|H280092150 -280092150:lI103|N -280092160:t2:A5:error,A4:busy -280092178:t2:A5:error,AC:handler_busy -280092190:lI72|H2800921A0 -2800921A0:lI97|H2800921B0 -2800921B0:lI110|H2800921C0 -2800921C0:lI100|H2800921D0 -2800921D0:lI108|H2800921E0 -2800921E0:lI101|H2800921F0 -2800921F0:lI114|H280092200 -280092200:lI32|H280092210 -280092210:lI126|H280092220 -280092220:lI112|H280092230 -280092230:lI32|H280092240 -280092240:lI115|H280092250 -280092250:lI119|H280092260 -280092260:lI105|H280092270 -280092270:lI116|H280092280 -280092280:lI99|H280092290 -280092290:lI104|H2800922A0 -2800922A0:lI101|H2800922B0 -2800922B0:lI100|H2800922C0 -2800922C0:lI32|H2800922D0 -2800922D0:lI102|H2800922E0 -2800922E0:lI114|H2800922F0 -2800922F0:lI111|H280092300 -280092300:lI109|H280092310 -280092310:lI32|H280092320 -280092320:lI126|H280092330 -280092330:lI112|H280092340 -280092340:lI32|H280092350 -280092350:lI116|H280092360 -280092360:lI111|H280092370 -280092370:lI32|H280092380 -280092380:lI126|H280092390 -280092390:lI112|H2800923A0 -2800923A0:lI32|H2800923B0 -2800923B0:lI109|H2800923C0 -2800923C0:lI111|H2800923D0 -2800923D0:lI100|H2800923E0 -2800923E0:lI101|N -2800923F0:lI72|H280092400 -280092400:lI97|H280092410 -280092410:lI110|H280092420 -280092420:lI100|H280092430 -280092430:lI108|H280092440 -280092440:lI101|H280092450 -280092450:lI114|H280092460 -280092460:lI32|H280092470 -280092470:lI126|H280092480 -280092480:lI112|H280092490 -280092490:lI32|H2800924A0 -2800924A0:lI102|H2800924B0 -2800924B0:lI108|H2800924C0 -2800924C0:lI117|H2800924D0 -2800924D0:lI115|H2800924E0 -2800924E0:lI104|H2800924F0 -2800924F0:lI101|H280092500 -280092500:lI100|H280092510 -280092510:lI32|H280092520 -280092520:lI126|H280092530 -280092530:lI119|H280092540 -280092540:lI32|H280092550 -280092550:lI108|H280092560 -280092560:lI111|H280092570 -280092570:lI103|H280092580 -280092580:lI32|H280092590 -280092590:lI101|H2800925A0 -2800925A0:lI118|H2800925B0 -2800925B0:lI101|H2800925C0 -2800925C0:lI110|H2800925D0 -2800925D0:lI116|H2800925E0 -2800925E0:lI115|N -2800925F0:lI72|H280092600 -280092600:lI97|H280092610 -280092610:lI110|H280092620 -280092620:lI100|H280092630 -280092630:lI108|H280092640 -280092640:lI101|H280092650 -280092650:lI114|H280092660 -280092660:lI32|H280092670 -280092670:lI126|H280092680 -280092680:lI112|H280092690 -280092690:lI32|H2800926A0 -2800926A0:lI114|H2800926B0 -2800926B0:lI101|H2800926C0 -2800926C0:lI115|H2800926D0 -2800926D0:lI116|H2800926E0 -2800926E0:lI97|H2800926F0 -2800926F0:lI114|H280092700 -280092700:lI116|H280092710 -280092710:lI101|H280092720 -280092720:lI100|N -280092730:t1:A9:formatter -280092740:Mf1:H280092730:H280092760 -280092760:t2:A10:logger_formatter,H280092790 -280092778:t2:AB:single_line,AD:legacy_header -280092790:Mf2:H280092778:A5:false,A4:true -2800927B8:E1F:g3F3BmxvZ2dlcncRZm9ybWF0X290cF9yZXBvcnRhAQ== -2800927E0:t2:A10:logger_formatter,H280092810 -2800927F8:t2:AB:single_line,AD:legacy_header -280092810:Mf2:H2800927F8:A5:false,A4:true -280092838:t3:A4:line,A4:file,A3:mfa -280092858:Mf3:H280092838:I398,H280092888,H2800929B8 -280092888:lI108|H280092898 -280092898:lI111|H2800928A8 -2800928A8:lI103|H2800928B8 -2800928B8:lI103|H2800928C8 -2800928C8:lI101|H2800928D8 -2800928D8:lI114|H2800928E8 -2800928E8:lI95|H2800928F8 -2800928F8:lI104|H280092908 -280092908:lI95|H280092918 -280092918:lI99|H280092928 -280092928:lI111|H280092938 -280092938:lI109|H280092948 -280092948:lI109|H280092958 -280092958:lI111|H280092968 -280092968:lI110|H280092978 -280092978:lI46|H280092988 -280092988:lI101|H280092998 -280092998:lI114|H2800929A8 -2800929A8:lI108|N -2800929B8:t3:AF:logger_h_common,A10:do_log_to_binary,I2 -2800929D8:Yh22:Rk9STUFUVEVSIEVSUk9SOiBiYWQgcmV0dXJuIHZhbHVlCg== -280092A10:t3:A4:line,A4:file,A3:mfa -280092A30:Mf3:H280092A10:I410,H280092A60,H280092B90 -280092A60:lI108|H280092A70 -280092A70:lI111|H280092A80 -280092A80:lI103|H280092A90 -280092A90:lI103|H280092AA0 -280092AA0:lI101|H280092AB0 -280092AB0:lI114|H280092AC0 -280092AC0:lI95|H280092AD0 -280092AD0:lI104|H280092AE0 -280092AE0:lI95|H280092AF0 -280092AF0:lI99|H280092B00 -280092B00:lI111|H280092B10 -280092B10:lI109|H280092B20 -280092B20:lI109|H280092B30 -280092B30:lI111|H280092B40 -280092B40:lI110|H280092B50 -280092B50:lI46|H280092B60 -280092B60:lI101|H280092B70 -280092B70:lI114|H280092B80 -280092B80:lI108|N -280092B90:t3:AF:logger_h_common,AA:try_format,I3 -280092BB0:lI68|H280092BC0 -280092BC0:lI69|H280092BD0 -280092BD0:lI70|H280092BE0 -280092BE0:lI65|H280092BF0 -280092BF0:lI85|H280092C00 -280092C00:lI76|H280092C10 -280092C10:lI84|H280092C20 -280092C20:lI32|H280092C30 -280092C30:lI70|H280092C40 -280092C40:lI79|H280092C50 -280092C50:lI82|H280092C60 -280092C60:lI77|H280092C70 -280092C70:lI65|H280092C80 -280092C80:lI84|H280092C90 -280092C90:lI84|H280092CA0 -280092CA0:lI69|H280092CB0 -280092CB0:lI82|H280092CC0 -280092CC0:lI32|H280092CD0 -280092CD0:lI67|H280092CE0 -280092CE0:lI82|H280092CF0 -280092CF0:lI65|H280092D00 -280092D00:lI83|H280092D10 -280092D10:lI72|H280092D20 -280092D20:lI69|H280092D30 -280092D30:lI68|H280092D40 -280092D40:lI10|N -280092D50:lI70|H280092D60 -280092D60:lI79|H280092D70 -280092D70:lI82|H280092D80 -280092D80:lI77|H280092D90 -280092D90:lI65|H280092DA0 -280092DA0:lI84|H280092DB0 -280092DB0:lI84|H280092DC0 -280092DC0:lI69|H280092DD0 -280092DD0:lI82|H280092DE0 -280092DE0:lI32|H280092DF0 -280092DF0:lI67|H280092E00 -280092E00:lI82|H280092E10 -280092E10:lI65|H280092E20 -280092E20:lI83|H280092E30 -280092E30:lI72|H280092E40 -280092E40:lI58|H280092E50 -280092E50:lI32|H280092E60 -280092E60:lI126|H280092E70 -280092E70:lI116|H280092E80 -280092E80:lI112|N -280092E90:t1:A18:filesync_repeat_interval -280092EA0:Mf1:H280092E90:I5000 -280092EC0:lI108|N -280092ED0:lI114|H280092EC0 -280092EE0:lI101|H280092ED0 -280092EF0:lI46|H280092EE0 -280092F00:lI110|H280092EF0 -280092F10:lI111|H280092F00 -280092F20:lI109|H280092F10 -280092F30:lI109|H280092F20 -280092F40:lI111|H280092F30 -280092F50:lI99|H280092F40 -280092F60:lI95|H280092F50 -280092F70:lI104|H280092F60 -280092F80:lI95|H280092F70 -280092F90:lI114|H280092F80 -280092FA0:lI101|H280092F90 -280092FB0:lI103|H280092FA0 -280092FC0:lI103|H280092FB0 -280092FD0:lI111|H280092FC0 -280092FE0:lI108|H280092FD0 -280092FF0:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -280093028:t1:A4:time -280093038:t3:A4:meta,A3:msg,A5:level -280093058:t1:A18:filesync_repeat_interval -2800B0A58:lI115|H2800B0A68 -2800B0A68:lI116|H2800B0A78 -2800B0A78:lI97|H2800B0A88 -2800B0A88:lI110|H2800B0A98 -2800B0A98:lI100|H2800B0AA8 -2800B0AA8:lI95|H2800B0AB8 -2800B0AB8:lI97|H2800B0AC8 -2800B0AC8:lI108|H2800B0AD8 -2800B0AD8:lI111|H2800B0AE8 -2800B0AE8:lI110|H2800B0AF8 -2800B0AF8:lI101|H2800B0B08 -2800B0B08:lI95|N -2800B0B18:t2:A4:line,I173 -2800B0B30:t2:A6:module,AD:httpc_manager -2800B0B48:lI105|H2800B0B58 -2800B0B58:lI110|H2800B0B68 -2800B0B68:lI115|H2800B0B78 -2800B0B78:lI101|H2800B0B88 -2800B0B88:lI114|H2800B0B98 -2800B0B98:lI116|H2800B0BA8 -2800B0BA8:lI32|H2800B0BB8 -2800B0BB8:lI115|H2800B0BC8 -2800B0BC8:lI101|H2800B0BD8 -2800B0BD8:lI115|H2800B0BE8 -2800B0BE8:lI115|H2800B0BF8 -2800B0BF8:lI105|H2800B0C08 -2800B0C08:lI111|H2800B0C18 -2800B0C18:lI110|N -2800B0C28:t2:A4:line,I188 -2800B0C40:lI108|H2800B0C50 -2800B0C50:lI111|H2800B0C60 -2800B0C60:lI111|H2800B0C70 -2800B0C70:lI107|H2800B0C80 -2800B0C80:lI117|H2800B0C90 -2800B0C90:lI112|H2800B0CA0 -2800B0CA0:lI32|H2800B0CB0 -2800B0CB0:lI115|H2800B0CC0 -2800B0CC0:lI101|H2800B0CD0 -2800B0CD0:lI115|H2800B0CE0 -2800B0CE0:lI115|H2800B0CF0 -2800B0CF0:lI105|H2800B0D00 -2800B0D00:lI111|H2800B0D10 -2800B0D10:lI110|N -2800B0D20:t2:A4:line,I205 -2800B0D38:lI117|H2800B0D48 -2800B0D48:lI112|H2800B0D58 -2800B0D58:lI100|H2800B0D68 -2800B0D68:lI97|H2800B0D78 -2800B0D78:lI116|H2800B0D88 -2800B0D88:lI101|H2800B0D98 -2800B0D98:lI32|H2800B0DA8 -2800B0DA8:lI115|H2800B0DB8 -2800B0DB8:lI101|H2800B0DC8 -2800B0DC8:lI115|H2800B0DD8 -2800B0DD8:lI115|H2800B0DE8 -2800B0DE8:lI105|H2800B0DF8 -2800B0DF8:lI111|H2800B0E08 -2800B0E08:lI110|N -2800B0E18:t2:A4:line,I225 -2800B0E30:lI100|H2800B0E40 -2800B0E40:lI101|H2800B0E50 -2800B0E50:lI108|H2800B0E60 -2800B0E60:lI101|H2800B0E70 -2800B0E70:lI116|H2800B0E80 -2800B0E80:lI101|H2800B0E90 -2800B0E90:lI32|H2800B0EA0 -2800B0EA0:lI115|H2800B0EB0 -2800B0EB0:lI101|H2800B0EC0 -2800B0EC0:lI115|H2800B0ED0 -2800B0ED0:lI115|H2800B0EE0 -2800B0EE0:lI105|H2800B0EF0 -2800B0EF0:lI111|H2800B0F00 -2800B0F00:lI110|N -2800B0F10:t2:A4:line,I243 -2800B0F28:lI119|H2800B0F38 -2800B0F38:lI104|H2800B0F48 -2800B0F48:lI105|H2800B0F58 -2800B0F58:lI99|H2800B0F68 -2800B0F68:lI104|H2800B0F78 -2800B0F78:lI95|H2800B0F88 -2800B0F88:lI115|H2800B0F98 -2800B0F98:lI101|H2800B0FA8 -2800B0FA8:lI115|H2800B0FB8 -2800B0FB8:lI115|H2800B0FC8 -2800B0FC8:lI105|H2800B0FD8 -2800B0FD8:lI111|H2800B0FE8 -2800B0FE8:lI110|H2800B0FF8 -2800B0FF8:lI115|N -2800B1008:t2:A4:line,I276 -2800B1020:lI119|H2800B1030 -2800B1030:lI104|H2800B1040 -2800B1040:lI105|H2800B1050 -2800B1050:lI99|H2800B1060 -2800B1060:lI104|H2800B1070 -2800B1070:lI95|H2800B1080 -2800B1080:lI115|H2800B1090 -2800B1090:lI101|H2800B10A0 -2800B10A0:lI115|H2800B10B0 -2800B10B0:lI115|H2800B10C0 -2800B10C0:lI105|H2800B10D0 -2800B10D0:lI111|H2800B10E0 -2800B10E0:lI110|H2800B10F0 -2800B10F0:lI95|H2800B1100 -2800B1100:lI105|H2800B1110 -2800B1110:lI110|H2800B1120 -2800B1120:lI102|H2800B1130 -2800B1130:lI111|N -2800B1140:t2:A4:line,I406 -2800B1158:lI115|H2800B1168 -2800B1168:lI116|H2800B1178 -2800B1178:lI97|H2800B1188 -2800B1188:lI114|H2800B1198 -2800B1198:lI116|H2800B11A8 -2800B11A8:lI105|H2800B11B8 -2800B11B8:lI110|H2800B11C8 -2800B11C8:lI103|N -2800B11D8:t2:A4:line,I409 -2800B11F0:lI115|H2800B1200 -2800B1200:lI116|H2800B1210 -2800B1210:lI97|H2800B1220 -2800B1220:lI114|H2800B1230 -2800B1230:lI116|H2800B1240 -2800B1240:lI101|H2800B1250 -2800B1250:lI100|N -2800B1260:lI99|H2800B1270 -2800B1270:lI114|H2800B1280 -2800B1280:lI101|H2800B1290 -2800B1290:lI97|H2800B12A0 -2800B12A0:lI116|H2800B12B0 -2800B12B0:lI101|H2800B12C0 -2800B12C0:lI32|H2800B12D0 -2800B12D0:lI115|H2800B12E0 -2800B12E0:lI101|H2800B12F0 -2800B12F0:lI115|H2800B1300 -2800B1300:lI115|H2800B1310 -2800B1310:lI105|H2800B1320 -2800B1320:lI111|H2800B1330 -2800B1330:lI110|H2800B1340 -2800B1340:lI32|H2800B1350 -2800B1350:lI100|H2800B1360 -2800B1360:lI98|N -2800B1370:lH2800B1390|H2800B1380 -2800B1380:lH2800B13A8|N -2800B1390:t2:A6:module,AD:httpc_manager -2800B13A8:t2:A4:line,I420 -2800B13C0:lA6:public|H2800B13D0 -2800B13D0:lA3:set|H2800B13E0 -2800B13E0:lAB:named_table|H2800B13F0 -2800B13F0:lH2800B1400|N -2800B1400:t2:A6:keypos,I2 -2800B1418:lI99|H2800B1428 -2800B1428:lI114|H2800B1438 -2800B1438:lI101|H2800B1448 -2800B1448:lI97|H2800B1458 -2800B1458:lI116|H2800B1468 -2800B1468:lI101|H2800B1478 -2800B1478:lI32|H2800B1488 -2800B1488:lI104|H2800B1498 -2800B1498:lI97|H2800B14A8 -2800B14A8:lI110|H2800B14B8 -2800B14B8:lI100|H2800B14C8 -2800B14C8:lI108|H2800B14D8 -2800B14D8:lI101|H2800B14E8 -2800B14E8:lI114|H2800B14F8 -2800B14F8:lI47|H2800B1508 -2800B1508:lI114|H2800B1518 -2800B1518:lI101|H2800B1528 -2800B1528:lI113|H2800B1538 -2800B1538:lI117|H2800B1548 -2800B1548:lI101|H2800B1558 -2800B1558:lI115|H2800B1568 -2800B1568:lI116|H2800B1578 -2800B1578:lI32|H2800B1588 -2800B1588:lI100|H2800B1598 -2800B1598:lI98|N -2800B15A8:lH2800B15C8|H2800B15B8 -2800B15B8:lH2800B15E0|N -2800B15C8:t2:A6:module,AD:httpc_manager -2800B15E0:t2:A4:line,I426 -2800B15F8:lA9:protected|H2800B1608 -2800B1608:lA3:set|H2800B1618 -2800B1618:lAB:named_table|H2800B1628 -2800B1628:lH2800B1638|N -2800B1638:t2:A6:keypos,I1 -2800B1650:lI99|H2800B1660 -2800B1660:lI114|H2800B1670 -2800B1670:lI101|H2800B1680 -2800B1680:lI97|H2800B1690 -2800B1690:lI116|H2800B16A0 -2800B16A0:lI101|H2800B16B0 -2800B16B0:lI32|H2800B16C0 -2800B16C0:lI99|H2800B16D0 -2800B16D0:lI111|H2800B16E0 -2800B16E0:lI111|H2800B16F0 -2800B16F0:lI107|H2800B1700 -2800B1700:lI105|H2800B1710 -2800B1710:lI101|H2800B1720 -2800B1720:lI32|H2800B1730 -2800B1730:lI100|H2800B1740 -2800B1740:lI98|N -2800B1750:lH2800B1770|H2800B1760 -2800B1760:lH2800B1788|N -2800B1770:t2:A6:module,AD:httpc_manager -2800B1788:t2:A4:line,I431 -2800B17A0:tF:A7:options,H2800B1820,H2800B1838,I0,I2,I5,I120000,I2,A8:disabled,A5:false,A4:inet,A7:default,A7:default,N,A9:undefined -2800B1820:t2:A9:undefined,N -2800B1838:t2:A9:undefined,N -2800B1850:t2:A4:line,I474 -2800B1868:lI119|H2800B1878 -2800B1878:lI104|H2800B1888 -2800B1888:lI105|H2800B1898 -2800B1898:lI99|H2800B18A8 -2800B18A8:lI104|H2800B18B8 -2800B18B8:lI32|H2800B18C8 -2800B18C8:lI99|H2800B18D8 -2800B18D8:lI111|H2800B18E8 -2800B18E8:lI111|H2800B18F8 -2800B18F8:lI107|H2800B1908 -2800B1908:lI105|H2800B1918 -2800B1918:lI101|H2800B1928 -2800B1928:lI115|N -2800B1938:t2:A4:line,I454 -2800B1950:lI114|H2800B1960 -2800B1960:lI101|H2800B1970 -2800B1970:lI113|H2800B1980 -2800B1980:lI117|H2800B1990 -2800B1990:lI101|H2800B19A0 -2800B19A0:lI115|H2800B19B0 -2800B19B0:lI116|N -2800B19C0:t2:A4:line,I485 -2800B19D8:lI103|H2800B19E8 -2800B19E8:lI101|H2800B19F8 -2800B19F8:lI116|H2800B1A08 -2800B1A08:lI32|H2800B1A18 -2800B1A18:lI111|H2800B1A28 -2800B1A28:lI112|H2800B1A38 -2800B1A38:lI116|H2800B1A48 -2800B1A48:lI105|H2800B1A58 -2800B1A58:lI111|H2800B1A68 -2800B1A68:lI110|H2800B1A78 -2800B1A78:lI115|N -2800B1A88:lH2800B1AA8|H2800B1A98 -2800B1A98:lH2800B1AC0|N -2800B1AA8:t2:A6:module,AD:httpc_manager -2800B1AC0:t2:A4:line,I468 -2800B1AD8:lI114|H2800B1AE8 -2800B1AE8:lI101|H2800B1AF8 -2800B1AF8:lI115|H2800B1B08 -2800B1B08:lI101|H2800B1B18 -2800B1B18:lI116|H2800B1B28 -2800B1B28:lI32|H2800B1B38 -2800B1B38:lI99|H2800B1B48 -2800B1B48:lI111|H2800B1B58 -2800B1B58:lI111|H2800B1B68 -2800B1B68:lI107|H2800B1B78 -2800B1B78:lI105|H2800B1B88 -2800B1B88:lI101|H2800B1B98 -2800B1B98:lI115|N -2800B1BA8:lH2800B1BC8|H2800B1BB8 -2800B1BB8:lH2800B1BE0|N -2800B1BC8:t2:A6:module,AD:httpc_manager -2800B1BE0:t2:A4:line,I463 -2800B1BF8:lI105|H2800B1C08 -2800B1C08:lI110|H2800B1C18 -2800B1C18:lI102|H2800B1C28 -2800B1C28:lI111|N -2800B1C38:lH2800B1C58|H2800B1C48 -2800B1C48:lH2800B1C70|N -2800B1C58:t2:A6:module,AD:httpc_manager -2800B1C70:t2:A4:line,I491 -2800B1C88:lI114|H2800B1C98 -2800B1C98:lI101|H2800B1CA8 -2800B1CA8:lI99|H2800B1CB8 -2800B1CB8:lI101|H2800B1CC8 -2800B1CC8:lI105|H2800B1CD8 -2800B1CD8:lI118|H2800B1CE8 -2800B1CE8:lI101|H2800B1CF8 -2800B1CF8:lI100|H2800B1D08 -2800B1D08:lI32|H2800B1D18 -2800B1D18:lI117|H2800B1D28 -2800B1D28:lI110|H2800B1D38 -2800B1D38:lI107|H2800B1D48 -2800B1D48:lI110|H2800B1D58 -2800B1D58:lI111|H2800B1D68 -2800B1D68:lI119|H2800B1D78 -2800B1D78:lI110|H2800B1D88 -2800B1D88:lI32|H2800B1D98 -2800B1D98:lI114|H2800B1DA8 -2800B1DA8:lI101|H2800B1DB8 -2800B1DB8:lI113|H2800B1DC8 -2800B1DC8:lI117|H2800B1DD8 -2800B1DD8:lI101|H2800B1DE8 -2800B1DE8:lI115|H2800B1DF8 -2800B1DF8:lI116|H2800B1E08 -2800B1E08:lI126|H2800B1E18 -2800B1E18:lI110|H2800B1E28 -2800B1E28:lI32|H2800B1E38 -2800B1E38:lI32|H2800B1E48 -2800B1E48:lI32|H2800B1E58 -2800B1E58:lI82|H2800B1E68 -2800B1E68:lI101|H2800B1E78 -2800B1E78:lI113|H2800B1E88 -2800B1E88:lI58|H2800B1E98 -2800B1E98:lI32|H2800B1EA8 -2800B1EA8:lI32|H2800B1EB8 -2800B1EB8:lI126|H2800B1EC8 -2800B1EC8:lI112|H2800B1ED8 -2800B1ED8:lI126|H2800B1EE8 -2800B1EE8:lI110|H2800B1EF8 -2800B1EF8:lI32|H2800B1F08 -2800B1F08:lI32|H2800B1F18 -2800B1F18:lI32|H2800B1F28 -2800B1F28:lI70|H2800B1F38 -2800B1F38:lI114|H2800B1F48 -2800B1F48:lI111|H2800B1F58 -2800B1F58:lI109|H2800B1F68 -2800B1F68:lI58|H2800B1F78 -2800B1F78:lI32|H2800B1F88 -2800B1F88:lI126|H2800B1F98 -2800B1F98:lI112|N -2800B1FA8:t2:A5:error,AD:API_violation -2800B1FC0:t2:A4:line,I542 -2800B1FD8:lI115|H2800B1FE8 -2800B1FE8:lI101|H2800B1FF8 -2800B1FF8:lI116|H2800B2008 -2800B2008:lI32|H2800B2018 -2800B2018:lI111|H2800B2028 -2800B2028:lI112|H2800B2038 -2800B2038:lI116|H2800B2048 -2800B2048:lI105|H2800B2058 -2800B2058:lI111|H2800B2068 -2800B2068:lI110|H2800B2078 -2800B2078:lI115|N -2800B2088:t2:A4:line,I537 -2800B20A0:lI114|H2800B20B0 -2800B20B0:lI101|H2800B20C0 -2800B20C0:lI113|H2800B20D0 -2800B20D0:lI117|H2800B20E0 -2800B20E0:lI101|H2800B20F0 -2800B20F0:lI115|H2800B2100 -2800B2100:lI116|H2800B2110 -2800B2110:lI32|H2800B2120 -2800B2120:lI100|H2800B2130 -2800B2130:lI111|H2800B2140 -2800B2140:lI110|H2800B2150 -2800B2150:lI101|N -2800B2160:lI114|H2800B2170 -2800B2170:lI101|H2800B2180 -2800B2180:lI99|H2800B2190 -2800B2190:lI101|H2800B21A0 -2800B21A0:lI105|H2800B21B0 -2800B21B0:lI118|H2800B21C0 -2800B21C0:lI101|H2800B21D0 -2800B21D0:lI100|H2800B21E0 -2800B21E0:lI32|H2800B21F0 -2800B21F0:lI117|H2800B2200 -2800B2200:lI110|H2800B2210 -2800B2210:lI107|H2800B2220 -2800B2220:lI110|H2800B2230 -2800B2230:lI111|H2800B2240 -2800B2240:lI119|H2800B2250 -2800B2250:lI110|H2800B2260 -2800B2260:lI32|H2800B2270 -2800B2270:lI109|H2800B2280 -2800B2280:lI101|H2800B2290 -2800B2290:lI115|H2800B22A0 -2800B22A0:lI115|H2800B22B0 -2800B22B0:lI97|H2800B22C0 -2800B22C0:lI103|H2800B22D0 -2800B22D0:lI101|H2800B22E0 -2800B22E0:lI126|H2800B22F0 -2800B22F0:lI110|H2800B2300 -2800B2300:lI32|H2800B2310 -2800B2310:lI32|H2800B2320 -2800B2320:lI32|H2800B2330 -2800B2330:lI77|H2800B2340 -2800B2340:lI115|H2800B2350 -2800B2350:lI103|H2800B2360 -2800B2360:lI58|H2800B2370 -2800B2370:lI32|H2800B2380 -2800B2380:lI126|H2800B2390 -2800B2390:lI112|N -2800B23A0:lI85|H2800B23B0 -2800B23B0:lI110|H2800B23C0 -2800B23C0:lI107|H2800B23D0 -2800B23D0:lI110|H2800B23E0 -2800B23E0:lI111|H2800B23F0 -2800B23F0:lI119|H2800B2400 -2800B2400:lI110|H2800B2410 -2800B2410:lI32|H2800B2420 -2800B2420:lI109|H2800B2430 -2800B2430:lI101|H2800B2440 -2800B2440:lI115|H2800B2450 -2800B2450:lI115|H2800B2460 -2800B2460:lI97|H2800B2470 -2800B2470:lI103|H2800B2480 -2800B2480:lI101|H2800B2490 -2800B2490:lI32|H2800B24A0 -2800B24A0:lI105|H2800B24B0 -2800B24B0:lI110|H2800B24C0 -2800B24C0:lI32|H2800B24D0 -2800B24D0:lI104|H2800B24E0 -2800B24E0:lI116|H2800B24F0 -2800B24F0:lI116|H2800B2500 -2800B2500:lI112|H2800B2510 -2800B2510:lI99|H2800B2520 -2800B2520:lI95|H2800B2530 -2800B2530:lI109|H2800B2540 -2800B2540:lI97|H2800B2550 -2800B2550:lI110|H2800B2560 -2800B2560:lI97|H2800B2570 -2800B2570:lI103|H2800B2580 -2800B2580:lI101|H2800B2590 -2800B2590:lI114|H2800B25A0 -2800B25A0:lI58|H2800B25B0 -2800B25B0:lI104|H2800B25C0 -2800B25C0:lI97|H2800B25D0 -2800B25D0:lI110|H2800B25E0 -2800B25E0:lI100|H2800B25F0 -2800B25F0:lI108|H2800B2600 -2800B2600:lI101|H2800B2610 -2800B2610:lI95|H2800B2620 -2800B2620:lI105|H2800B2630 -2800B2630:lI110|H2800B2640 -2800B2640:lI102|H2800B2650 -2800B2650:lI111|H2800B2660 -2800B2660:lI32|H2800B2670 -2800B2670:lI126|H2800B2680 -2800B2680:lI112|H2800B2690 -2800B2690:lI126|H2800B26A0 -2800B26A0:lI110|N -2800B26B0:lA5:proxy|H2800B26C0 -2800B26C0:lAB:https_proxy|H2800B26D0 -2800B26D0:lA10:pipeline_timeout|H2800B26E0 -2800B26E0:lA13:max_pipeline_length|H2800B26F0 -2800B26F0:lA15:max_keep_alive_length|H2800B2700 -2800B2700:lA12:keep_alive_timeout|H2800B2710 -2800B2710:lAC:max_sessions|H2800B2720 -2800B2720:lA7:cookies|H2800B2730 -2800B2730:lA7:verbose|H2800B2740 -2800B2740:lA8:ipfamily|H2800B2750 -2800B2750:lA2:ip|H2800B2760 -2800B2760:lA4:port|H2800B2770 -2800B2770:lAB:socket_opts|H2800B2780 -2800B2780:lAB:unix_socket|N -2800B2790:t3:A2:$2,A2:$1,A1:_ -2800B27B0:lI72|H2800B27C0 -2800B27C0:lI84|H2800B27D0 -2800B27D0:lI84|H2800B27E0 -2800B27E0:lI80|H2800B27F0 -2800B27F0:lI47|H2800B2800 -2800B2800:lI49|H2800B2810 -2800B2810:lI46|H2800B2820 -2800B2820:lI48|N -2800B2830:lI99|H2800B2840 -2800B2840:lI108|H2800B2850 -2800B2850:lI111|H2800B2860 -2800B2860:lI115|H2800B2870 -2800B2870:lI101|N -2800B2880:t2:A4:line,I817 -2800B2898:lI115|H2800B28A8 -2800B28A8:lI101|H2800B28B8 -2800B28B8:lI108|H2800B28C8 -2800B28C8:lI101|H2800B28D8 -2800B28D8:lI99|H2800B28E8 -2800B28E8:lI116|H2800B28F8 -2800B28F8:lI32|H2800B2908 -2800B2908:lI115|H2800B2918 -2800B2918:lI101|H2800B2928 -2800B2928:lI115|H2800B2938 -2800B2938:lI115|H2800B2948 -2800B2948:lI105|H2800B2958 -2800B2958:lI111|H2800B2968 -2800B2968:lI110|N -2800B2978:t2:A4:line,I838 -2800B2990:lI115|H2800B29A0 -2800B29A0:lI101|H2800B29B0 -2800B29B0:lI108|H2800B29C0 -2800B29C0:lI101|H2800B29D0 -2800B29D0:lI99|H2800B29E0 -2800B29E0:lI116|H2800B29F0 -2800B29F0:lI32|H2800B2A00 -2800B2A00:lI115|H2800B2A10 -2800B2A10:lI101|H2800B2A20 -2800B2A20:lI115|H2800B2A30 -2800B2A30:lI115|H2800B2A40 -2800B2A40:lI105|H2800B2A50 -2800B2A50:lI111|H2800B2A60 -2800B2A60:lI110|H2800B2A70 -2800B2A70:lI32|H2800B2A80 -2800B2A80:lI45|H2800B2A90 -2800B2A90:lI32|H2800B2AA0 -2800B2AA0:lI110|H2800B2AB0 -2800B2AB0:lI111|H2800B2AC0 -2800B2AC0:lI32|H2800B2AD0 -2800B2AD0:lI99|H2800B2AE0 -2800B2AE0:lI97|H2800B2AF0 -2800B2AF0:lI110|H2800B2B00 -2800B2B00:lI100|H2800B2B10 -2800B2B10:lI105|H2800B2B20 -2800B2B20:lI100|H2800B2B30 -2800B2B30:lI97|H2800B2B40 -2800B2B40:lI116|H2800B2B50 -2800B2B50:lI101|N -2800B2B60:lH2800B2B80|H2800B2B70 -2800B2B70:lH2800B2B98|N -2800B2B80:t2:A6:module,AD:httpc_manager -2800B2B98:t2:A4:line,I853 -2800B2BB0:t2:A4:line,I862 -2800B2BC8:lI115|H2800B2BD8 -2800B2BD8:lI101|H2800B2BE8 -2800B2BE8:lI108|H2800B2BF8 -2800B2BF8:lI101|H2800B2C08 -2800B2C08:lI99|H2800B2C18 -2800B2C18:lI116|H2800B2C28 -2800B2C28:lI32|H2800B2C38 -2800B2C38:lI115|H2800B2C48 -2800B2C48:lI101|H2800B2C58 -2800B2C58:lI115|H2800B2C68 -2800B2C68:lI115|H2800B2C78 -2800B2C78:lI105|H2800B2C88 -2800B2C88:lI111|H2800B2C98 -2800B2C98:lI110|H2800B2CA8 -2800B2CA8:lI32|H2800B2CB8 -2800B2CB8:lI45|H2800B2CC8 -2800B2CC8:lI32|H2800B2CD8 -2800B2CD8:lI102|H2800B2CE8 -2800B2CE8:lI111|H2800B2CF8 -2800B2CF8:lI117|H2800B2D08 -2800B2D08:lI110|H2800B2D18 -2800B2D18:lI100|H2800B2D28 -2800B2D28:lI32|H2800B2D38 -2800B2D38:lI111|H2800B2D48 -2800B2D48:lI110|H2800B2D58 -2800B2D58:lI101|N -2800B2D68:t2:A5:error,A6:closed -2800B2D80:t2:H2800B2D98,N -2800B2D98:lI99|H2800B2DA8 -2800B2DA8:lI111|H2800B2DB8 -2800B2DB8:lI111|H2800B2DC8 -2800B2DC8:lI107|H2800B2DD8 -2800B2DD8:lI105|H2800B2DE8 -2800B2DE8:lI101|N -2800B2DF8:lI95|H2800B2E08 -2800B2E08:lI95|H2800B2E18 -2800B2E18:lI115|H2800B2E28 -2800B2E28:lI101|H2800B2E38 -2800B2E38:lI115|H2800B2E48 -2800B2E48:lI115|H2800B2E58 -2800B2E58:lI105|H2800B2E68 -2800B2E68:lI111|H2800B2E78 -2800B2E78:lI110|H2800B2E88 -2800B2E88:lI95|H2800B2E98 -2800B2E98:lI100|H2800B2EA8 -2800B2EA8:lI98|N -2800B2EB8:lI95|H2800B2EC8 -2800B2EC8:lI95|H2800B2ED8 -2800B2ED8:lI99|H2800B2EE8 -2800B2EE8:lI111|H2800B2EF8 -2800B2EF8:lI111|H2800B2F08 -2800B2F08:lI107|H2800B2F18 -2800B2F18:lI105|H2800B2F28 -2800B2F28:lI101|H2800B2F38 -2800B2F38:lI95|H2800B2F48 -2800B2F48:lI100|H2800B2F58 -2800B2F58:lI98|N -2800B2F68:lI95|H2800B2F78 -2800B2F78:lI95|H2800B2F88 -2800B2F88:lI115|H2800B2F98 -2800B2F98:lI101|H2800B2FA8 -2800B2FA8:lI115|H2800B2FB8 -2800B2FB8:lI115|H2800B2FC8 -2800B2FC8:lI105|H2800B2FD8 -2800B2FD8:lI111|H2800B2FE8 -2800B2FE8:lI110|H2800B2FF8 -2800B2FF8:lI95|H2800B3008 -2800B3008:lI99|H2800B3018 -2800B3018:lI111|H2800B3028 -2800B3028:lI111|H2800B3038 -2800B3038:lI107|H2800B3048 -2800B3048:lI105|H2800B3058 -2800B3058:lI101|H2800B3068 -2800B3068:lI95|H2800B3078 -2800B3078:lI100|H2800B3088 -2800B3088:lI98|N -2800B3098:lI95|H2800B30A8 -2800B30A8:lI95|H2800B30B8 -2800B30B8:lI104|H2800B30C8 -2800B30C8:lI97|H2800B30D8 -2800B30D8:lI110|H2800B30E8 -2800B30E8:lI100|H2800B30F8 -2800B30F8:lI108|H2800B3108 -2800B3108:lI101|H2800B3118 -2800B3118:lI114|H2800B3128 -2800B3128:lI95|H2800B3138 -2800B3138:lI100|H2800B3148 -2800B3148:lI98|N -2800B3158:lI115|N -2800B3168:lA4:call|N -2800B3178:lH2800B3188|N -2800B3188:t3:A1:_,N,H2800B31A8 -2800B31A8:lH2800B31B8|N -2800B31B8:t1:AC:return_trace -2800B31C8:lI126|H2800B31D8 -2800B31D8:lI110|N -2800B31E8:lI72|H2800B31F8 -2800B31F8:lI84|H2800B3208 -2800B3208:lI84|H2800B3218 -2800B3218:lI80|H2800B3228 -2800B3228:lI67|H2800B3238 -2800B3238:lI45|H2800B3248 -2800B3248:lI77|H2800B3258 -2800B3258:lI65|H2800B3268 -2800B3268:lI78|H2800B3278 -2800B3278:lI65|H2800B3288 -2800B3288:lI71|H2800B3298 -2800B3298:lI69|H2800B32A8 -2800B32A8:lI82|H2800B32B8 -2800B32B8:lI60|H2800B32C8 -2800B32C8:lI126|H2800B32D8 -2800B32D8:lI112|H2800B32E8 -2800B32E8:lI62|H2800B32F8 -2800B32F8:lI32|N -2800B3308:lI108|N -2800B3318:lI114|H2800B3308 -2800B3328:lI101|H2800B3318 -2800B3338:lI46|H2800B3328 -2800B3348:lI114|H2800B3338 -2800B3358:lI101|H2800B3348 -2800B3368:lI103|H2800B3358 -2800B3378:lI97|H2800B3368 -2800B3388:lI110|H2800B3378 -2800B3398:lI97|H2800B3388 -2800B33A8:lI109|H2800B3398 -2800B33B8:lI95|H2800B33A8 -2800B33C8:lI99|H2800B33B8 -2800B33D8:lI112|H2800B33C8 -2800B33E8:lI116|H2800B33D8 -2800B33F8:lI116|H2800B33E8 -2800B3408:lI104|H2800B33F8 -2800B3418:E51:g3AAAABPAav5MfhExLjVj7CSaHK/DswAAAAAAAAAAHcNaHR0cGNfbWFuYWdlcmEAYgVfyY9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -2800B3440:E51:g3AAAABPAav5MfhExLjVj7CSaHK/DswAAAABAAAAAHcNaHR0cGNfbWFuYWdlcmEBYgVfyY9Ydw1ub25vZGVAbm9ob3N0AAAAAAAAAAAAAAAA -2800B6F58:t2:A5:local,A11:httpc_handler_sup -2800B6F70:lAD:httpc_handler|N -2800B6F80:t3:A12:simple_one_for_one,I0,I3600 -2800B6FA0:lI108|N -2800B6FB0:lI114|H2800B6FA0 -2800B6FC0:lI101|H2800B6FB0 -2800B6FD0:lI46|H2800B6FC0 -2800B6FE0:lI112|H2800B6FD0 -2800B6FF0:lI117|H2800B6FE0 -2800B7000:lI115|H2800B6FF0 -2800B7010:lI95|H2800B7000 -2800B7020:lI114|H2800B7010 -2800B7030:lI101|H2800B7020 -2800B7040:lI108|H2800B7030 -2800B7050:lI100|H2800B7040 -2800B7060:lI110|H2800B7050 -2800B7070:lI97|H2800B7060 -2800B7080:lI104|H2800B7070 -2800B7090:lI95|H2800B7080 -2800B70A0:lI99|H2800B7090 -2800B70B0:lI112|H2800B70A0 -2800B70C0:lI116|H2800B70B0 -2800B70D0:lI116|H2800B70C0 -2800B70E0:lI104|H2800B70D0 -2800BDB80:t2:A5:local,A12:tls_connection_sup -2800BDB98:t2:A5:local,A17:tls_dist_connection_sup -2800BDBB0:t2:A2:ok,H2800BDBC8 -2800BDBC8:t2:H2800BDC00,H2800BDC30 -2800BDBE0:t3:A8:strategy,A6:period,A9:intensity -2800BDC00:Mf3:H2800BDBE0:A12:simple_one_for_one,I3600,I0 -2800BDC30:lH2800BDC68|N -2800BDC40:t4:A2:id,A7:restart,A5:start,A4:type -2800BDC68:Mf4:H2800BDC40:A9:undefined,A9:temporary,H2800BDCA0,AA:supervisor -2800BDCA0:t3:A16:tls_dyn_connection_sup,AA:start_link,N -2800BDCC0:lI108|N -2800BDCD0:lI114|H2800BDCC0 -2800BDCE0:lI101|H2800BDCD0 -2800BDCF0:lI46|H2800BDCE0 -2800BDD00:lI112|H2800BDCF0 -2800BDD10:lI117|H2800BDD00 -2800BDD20:lI115|H2800BDD10 -2800BDD30:lI95|H2800BDD20 -2800BDD40:lI110|H2800BDD30 -2800BDD50:lI111|H2800BDD40 -2800BDD60:lI105|H2800BDD50 -2800BDD70:lI116|H2800BDD60 -2800BDD80:lI99|H2800BDD70 -2800BDD90:lI101|H2800BDD80 -2800BDDA0:lI110|H2800BDD90 -2800BDDB0:lI110|H2800BDDA0 -2800BDDC0:lI111|H2800BDDB0 -2800BDDD0:lI99|H2800BDDC0 -2800BDDE0:lI95|H2800BDDD0 -2800BDDF0:lI115|H2800BDDE0 -2800BDE00:lI108|H2800BDDF0 -2800BDE10:lI116|H2800BDE00 -2800BE298:t2:A5:local,A16:ssl_listen_tracker_sup -2800BE2B0:t2:A5:local,A1B:ssl_listen_tracker_sup_dist -2800BE2C8:t2:A2:ok,H2800BE2E0 -2800BE2E0:t2:H2800BE318,H2800BE348 -2800BE2F8:t3:A8:strategy,A6:period,A9:intensity -2800BE318:Mf3:H2800BE2F8:A12:simple_one_for_one,I3600,I0 -2800BE348:lH2800BE390|N -2800BE358:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BE390:Mf6:H2800BE358:A9:undefined,A9:temporary,I4000,H2800BE3E8,A6:worker,H2800BE3D8 -2800BE3D8:lAA:tls_socket|N -2800BE3E8:t3:AA:tls_socket,AA:start_link,N -2800BE408:lI108|N -2800BE418:lI114|H2800BE408 -2800BE428:lI101|H2800BE418 -2800BE438:lI46|H2800BE428 -2800BE448:lI112|H2800BE438 -2800BE458:lI117|H2800BE448 -2800BE468:lI115|H2800BE458 -2800BE478:lI95|H2800BE468 -2800BE488:lI114|H2800BE478 -2800BE498:lI101|H2800BE488 -2800BE4A8:lI107|H2800BE498 -2800BE4B8:lI99|H2800BE4A8 -2800BE4C8:lI97|H2800BE4B8 -2800BE4D8:lI114|H2800BE4C8 -2800BE4E8:lI116|H2800BE4D8 -2800BE4F8:lI95|H2800BE4E8 -2800BE508:lI110|H2800BE4F8 -2800BE518:lI101|H2800BE508 -2800BE528:lI116|H2800BE518 -2800BE538:lI115|H2800BE528 -2800BE548:lI105|H2800BE538 -2800BE558:lI108|H2800BE548 -2800BE568:lI95|H2800BE558 -2800BE578:lI108|H2800BE568 -2800BE588:lI115|H2800BE578 -2800BE598:lI115|H2800BE588 -2800BE5C0:t2:A5:local,A1D:tls_server_session_ticket_sup -2800BE5D8:t2:A5:local,A22:tls_server_session_ticket_sup_dist -2800BE5F0:t2:A2:ok,H2800BE608 -2800BE608:t2:H2800BE640,H2800BE670 -2800BE620:t3:A8:strategy,A6:period,A9:intensity -2800BE640:Mf3:H2800BE620:A12:simple_one_for_one,I3600,I0 -2800BE670:lH2800BE6B8|N -2800BE680:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BE6B8:Mf6:H2800BE680:A9:undefined,A9:transient,I4000,H2800BE710,A6:worker,H2800BE700 -2800BE700:lA19:tls_server_session_ticket|N -2800BE710:t3:A19:tls_server_session_ticket,AA:start_link,N -2800BE730:lI108|N -2800BE740:lI114|H2800BE730 -2800BE750:lI101|H2800BE740 -2800BE760:lI46|H2800BE750 -2800BE770:lI112|H2800BE760 -2800BE780:lI117|H2800BE770 -2800BE790:lI115|H2800BE780 -2800BE7A0:lI95|H2800BE790 -2800BE7B0:lI116|H2800BE7A0 -2800BE7C0:lI101|H2800BE7B0 -2800BE7D0:lI107|H2800BE7C0 -2800BE7E0:lI99|H2800BE7D0 -2800BE7F0:lI105|H2800BE7E0 -2800BE800:lI116|H2800BE7F0 -2800BE810:lI95|H2800BE800 -2800BE820:lI110|H2800BE810 -2800BE830:lI111|H2800BE820 -2800BE840:lI105|H2800BE830 -2800BE850:lI115|H2800BE840 -2800BE860:lI115|H2800BE850 -2800BE870:lI101|H2800BE860 -2800BE880:lI115|H2800BE870 -2800BE890:lI95|H2800BE880 -2800BE8A0:lI114|H2800BE890 -2800BE8B0:lI101|H2800BE8A0 -2800BE8C0:lI118|H2800BE8B0 -2800BE8D0:lI114|H2800BE8C0 -2800BE8E0:lI101|H2800BE8D0 -2800BE8F0:lI115|H2800BE8E0 -2800BE900:lI95|H2800BE8F0 -2800BE910:lI115|H2800BE900 -2800BE920:lI108|H2800BE910 -2800BE930:lI116|H2800BE920 -2800BE958:t2:A5:local,A1C:ssl_server_session_cache_sup -2800BE970:t2:A2:ok,H2800BE988 -2800BE988:t2:H2800BE9C0,H2800BE9F0 -2800BE9A0:t3:A8:strategy,A6:period,A9:intensity -2800BE9C0:Mf3:H2800BE9A0:A12:simple_one_for_one,I3600,I3 -2800BE9F0:lH2800BEA38|N -2800BEA00:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BEA38:Mf6:H2800BEA00:A9:undefined,A9:transient,I4000,H2800BEA90,A6:worker,H2800BEA80 -2800BEA80:lA18:ssl_server_session_cache|N -2800BEA90:t3:A18:ssl_server_session_cache,AA:start_link,N -2800BEAB0:lI108|N -2800BEAC0:lI114|H2800BEAB0 -2800BEAD0:lI101|H2800BEAC0 -2800BEAE0:lI46|H2800BEAD0 -2800BEAF0:lI112|H2800BEAE0 -2800BEB00:lI117|H2800BEAF0 -2800BEB10:lI115|H2800BEB00 -2800BEB20:lI95|H2800BEB10 -2800BEB30:lI101|H2800BEB20 -2800BEB40:lI104|H2800BEB30 -2800BEB50:lI99|H2800BEB40 -2800BEB60:lI97|H2800BEB50 -2800BEB70:lI99|H2800BEB60 -2800BEB80:lI95|H2800BEB70 -2800BEB90:lI110|H2800BEB80 -2800BEBA0:lI111|H2800BEB90 -2800BEBB0:lI105|H2800BEBA0 -2800BEBC0:lI115|H2800BEBB0 -2800BEBD0:lI115|H2800BEBC0 -2800BEBE0:lI101|H2800BEBD0 -2800BEBF0:lI115|H2800BEBE0 -2800BEC00:lI95|H2800BEBF0 -2800BEC10:lI114|H2800BEC00 -2800BEC20:lI101|H2800BEC10 -2800BEC30:lI118|H2800BEC20 -2800BEC40:lI114|H2800BEC30 -2800BEC50:lI101|H2800BEC40 -2800BEC60:lI115|H2800BEC50 -2800BEC70:lI95|H2800BEC60 -2800BEC80:lI108|H2800BEC70 -2800BEC90:lI115|H2800BEC80 -2800BECA0:lI115|H2800BEC90 -2800BECC8:t2:A5:local,A24:ssl_upgrade_server_session_cache_sup -2800BECE0:t2:A5:local,A29:ssl_upgrade_server_session_cache_sup_dist -2800BECF8:t2:A2:ok,H2800BED10 -2800BED10:t2:H2800BED48,H2800BED78 -2800BED28:t3:A8:strategy,A6:period,A9:intensity -2800BED48:Mf3:H2800BED28:A12:simple_one_for_one,I3600,I3 -2800BED78:lH2800BEDC0|N -2800BED88:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BEDC0:Mf6:H2800BED88:A9:undefined,A9:transient,I4000,H2800BEE18,A6:worker,H2800BEE08 -2800BEE08:lA18:ssl_server_session_cache|N -2800BEE18:t3:A18:ssl_server_session_cache,AA:start_link,N -2800BEE38:lI108|N -2800BEE48:lI114|H2800BEE38 -2800BEE58:lI101|H2800BEE48 -2800BEE68:lI46|H2800BEE58 -2800BEE78:lI112|H2800BEE68 -2800BEE88:lI117|H2800BEE78 -2800BEE98:lI115|H2800BEE88 -2800BEEA8:lI95|H2800BEE98 -2800BEEB8:lI101|H2800BEEA8 -2800BEEC8:lI104|H2800BEEB8 -2800BEED8:lI99|H2800BEEC8 -2800BEEE8:lI97|H2800BEED8 -2800BEEF8:lI99|H2800BEEE8 -2800BEF08:lI95|H2800BEEF8 -2800BEF18:lI110|H2800BEF08 -2800BEF28:lI111|H2800BEF18 -2800BEF38:lI105|H2800BEF28 -2800BEF48:lI115|H2800BEF38 -2800BEF58:lI115|H2800BEF48 -2800BEF68:lI101|H2800BEF58 -2800BEF78:lI115|H2800BEF68 -2800BEF88:lI95|H2800BEF78 -2800BEF98:lI114|H2800BEF88 -2800BEFA8:lI101|H2800BEF98 -2800BEFB8:lI118|H2800BEFA8 -2800BEFC8:lI114|H2800BEFB8 -2800BEFD8:lI101|H2800BEFC8 -2800BEFE8:lI115|H2800BEFD8 -2800BEFF8:lI95|H2800BEFE8 -2800BF008:lI101|H2800BEFF8 -2800BF018:lI100|H2800BF008 -2800BF028:lI97|H2800BF018 -2800BF038:lI114|H2800BF028 -2800BF048:lI103|H2800BF038 -2800BF058:lI112|H2800BF048 -2800BF068:lI117|H2800BF058 -2800BF078:lI95|H2800BF068 -2800BF088:lI108|H2800BF078 -2800BF098:lI115|H2800BF088 -2800BF0A8:lI115|H2800BF098 -2800BF370:t2:A5:local,A13:dtls_connection_sup -2800BF388:t2:A5:local,A18:dtls_connection_sup_dist -2800BF3A0:t2:A2:ok,H2800BF3B8 -2800BF3B8:t2:H2800BF3F0,H2800BF420 -2800BF3D0:t3:A8:strategy,A6:period,A9:intensity -2800BF3F0:Mf3:H2800BF3D0:A12:simple_one_for_one,I3600,I0 -2800BF420:lH2800BF468|N -2800BF430:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BF468:Mf6:H2800BF430:A9:undefined,A9:temporary,I4000,H2800BF4D0,A6:worker,H2800BF4B0 -2800BF4B0:lAE:ssl_gen_statem|H2800BF4C0 -2800BF4C0:lAF:dtls_connection|N -2800BF4D0:t3:AE:ssl_gen_statem,AA:start_link,N -2800BF4F0:lI108|N -2800BF500:lI114|H2800BF4F0 -2800BF510:lI101|H2800BF500 -2800BF520:lI46|H2800BF510 -2800BF530:lI112|H2800BF520 -2800BF540:lI117|H2800BF530 -2800BF550:lI115|H2800BF540 -2800BF560:lI95|H2800BF550 -2800BF570:lI110|H2800BF560 -2800BF580:lI111|H2800BF570 -2800BF590:lI105|H2800BF580 -2800BF5A0:lI116|H2800BF590 -2800BF5B0:lI99|H2800BF5A0 -2800BF5C0:lI101|H2800BF5B0 -2800BF5D0:lI110|H2800BF5C0 -2800BF5E0:lI110|H2800BF5D0 -2800BF5F0:lI111|H2800BF5E0 -2800BF600:lI99|H2800BF5F0 -2800BF610:lI95|H2800BF600 -2800BF620:lI115|H2800BF610 -2800BF630:lI108|H2800BF620 -2800BF640:lI116|H2800BF630 -2800BF650:lI100|H2800BF640 -2800BF988:t2:A5:local,A11:dtls_listener_sup -2800BF9A0:t2:A5:error,A11:already_listening -2800BF9B8:lAB:named_table|H2800BF9C8 -2800BF9C8:lA6:public|H2800BF9D8 -2800BF9D8:lA3:set|N -2800BF9E8:t2:A2:ok,H2800BFA00 -2800BFA00:t2:H2800BFA38,H2800BFA68 -2800BFA18:t3:A8:strategy,A6:period,A9:intensity -2800BFA38:Mf3:H2800BFA18:A12:simple_one_for_one,I3600,I0 -2800BFA68:lH2800BFAB0|N -2800BFA78:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BFAB0:Mf6:H2800BFA78:A9:undefined,A9:temporary,I4000,H2800BFB08,A6:worker,H2800BFAF8 -2800BFAF8:lA11:dtls_packet_demux|N -2800BFB08:t3:A11:dtls_packet_demux,AA:start_link,N -2800BFB28:lI108|N -2800BFB38:lI114|H2800BFB28 -2800BFB48:lI101|H2800BFB38 -2800BFB58:lI46|H2800BFB48 -2800BFB68:lI112|H2800BFB58 -2800BFB78:lI117|H2800BFB68 -2800BFB88:lI115|H2800BFB78 -2800BFB98:lI95|H2800BFB88 -2800BFBA8:lI114|H2800BFB98 -2800BFBB8:lI101|H2800BFBA8 -2800BFBC8:lI110|H2800BFBB8 -2800BFBD8:lI101|H2800BFBC8 -2800BFBE8:lI116|H2800BFBD8 -2800BFBF8:lI115|H2800BFBE8 -2800BFC08:lI105|H2800BFBF8 -2800BFC18:lI108|H2800BFC08 -2800BFC28:lI95|H2800BFC18 -2800BFC38:lI115|H2800BFC28 -2800BFC48:lI108|H2800BFC38 -2800BFC58:lI116|H2800BFC48 -2800BFC68:lI100|H2800BFC58 -2800BFC90:t2:A5:local,A1D:dtls_server_session_cache_sup -2800BFCA8:t2:A2:ok,H2800BFCC0 -2800BFCC0:t2:H2800BFCF8,H2800BFD28 -2800BFCD8:t3:A8:strategy,A6:period,A9:intensity -2800BFCF8:Mf3:H2800BFCD8:A12:simple_one_for_one,I3600,I0 -2800BFD28:lH2800BFD70|N -2800BFD38:t6:A2:id,A7:restart,A8:shutdown,A5:start,A4:type,A7:modules -2800BFD70:Mf6:H2800BFD38:A9:undefined,A9:temporary,I4000,H2800BFDC8,A6:worker,H2800BFDB8 -2800BFDB8:lA18:ssl_server_session_cache|N -2800BFDC8:t3:A18:ssl_server_session_cache,AA:start_link,N -2800BFDE8:lI108|N -2800BFDF8:lI114|H2800BFDE8 -2800BFE08:lI101|H2800BFDF8 -2800BFE18:lI46|H2800BFE08 -2800BFE28:lI112|H2800BFE18 -2800BFE38:lI117|H2800BFE28 -2800BFE48:lI115|H2800BFE38 -2800BFE58:lI95|H2800BFE48 -2800BFE68:lI101|H2800BFE58 -2800BFE78:lI104|H2800BFE68 -2800BFE88:lI99|H2800BFE78 -2800BFE98:lI97|H2800BFE88 -2800BFEA8:lI99|H2800BFE98 -2800BFEB8:lI95|H2800BFEA8 -2800BFEC8:lI110|H2800BFEB8 -2800BFED8:lI111|H2800BFEC8 -2800BFEE8:lI105|H2800BFED8 -2800BFEF8:lI115|H2800BFEE8 -2800BFF08:lI115|H2800BFEF8 -2800BFF18:lI101|H2800BFF08 -2800BFF28:lI115|H2800BFF18 -2800BFF38:lI95|H2800BFF28 -2800BFF48:lI114|H2800BFF38 -2800BFF58:lI101|H2800BFF48 -2800BFF68:lI118|H2800BFF58 -2800BFF78:lI114|H2800BFF68 -2800BFF88:lI101|H2800BFF78 -2800BFF98:lI115|H2800BFF88 -2800BFFA8:lI95|H2800BFF98 -2800BFFB8:lI115|H2800BFFA8 -2800BFFC8:lI108|H2800BFFB8 -2800BFFD8:lI116|H2800BFFC8 -2800BFFE8:lI100|H2800BFFD8 -2800CCFF0:E30:g3F3EmdsZWFtX290cF9leHRlcm5hbHcWY29udmVydF9zeXN0ZW1fbWVzc2FnZWEC -2800CD018:Yh27:QWN0b3IgZGlzY2FyZGluZyB1bmV4cGVjdGVkIG1lc3NhZ2U6IH5z -2800CD050:t2:A5:error,AC:init_timeout -2800CD068:lI108|N -2800CD078:lI114|H2800CD068 -2800CD088:lI101|H2800CD078 -2800CD098:lI46|H2800CD088 -2800CD0A8:lI114|H2800CD098 -2800CD0B8:lI111|H2800CD0A8 -2800CD0C8:lI116|H2800CD0B8 -2800CD0D8:lI99|H2800CD0C8 -2800CD0E8:lI97|H2800CD0D8 -2800CD0F8:lI64|H2800CD0E8 -2800CD108:lI112|H2800CD0F8 -2800CD118:lI116|H2800CD108 -2800CD128:lI111|H2800CD118 -2800CD138:lI64|H2800CD128 -2800CD148:lI109|H2800CD138 -2800CD158:lI97|H2800CD148 -2800CD168:lI101|H2800CD158 -2800CD178:lI108|H2800CD168 -2800CD188:lI103|H2800CD178 -2800CD198:lI108|N -2800CD1A8:lI114|H2800CD198 -2800CD1B8:lI101|H2800CD1A8 -2800CD1C8:lI46|H2800CD1B8 -2800CD1D8:lI114|H2800CD1C8 -2800CD1E8:lI111|H2800CD1D8 -2800CD1F8:lI116|H2800CD1E8 -2800CD208:lI99|H2800CD1F8 -2800CD218:lI97|H2800CD208 -2800CD228:lI64|H2800CD218 -2800CD238:lI112|H2800CD228 -2800CD248:lI116|H2800CD238 -2800CD258:lI111|H2800CD248 -2800CD268:lI64|H2800CD258 -2800CD278:lI109|H2800CD268 -2800CD288:lI97|H2800CD278 -2800CD298:lI101|H2800CD288 -2800CD2A8:lI108|H2800CD298 -2800CD2B8:lI103|H2800CD2A8 -2800CD2C8:lI47|H2800CD2B8 -2800CD2D8:lI115|H2800CD2C8 -2800CD2E8:lI116|H2800CD2D8 -2800CD2F8:lI99|H2800CD2E8 -2800CD308:lI97|H2800CD2F8 -2800CD318:lI102|H2800CD308 -2800CD328:lI101|H2800CD318 -2800CD338:lI116|H2800CD328 -2800CD348:lI114|H2800CD338 -2800CD358:lI97|H2800CD348 -2800CD368:lI95|H2800CD358 -2800CD378:lI109|H2800CD368 -2800CD388:lI97|H2800CD378 -2800CD398:lI101|H2800CD388 -2800CD3A8:lI108|H2800CD398 -2800CD3B8:lI103|H2800CD3A8 -2800CD3C8:lI95|H2800CD3B8 -2800CD3D8:lI47|H2800CD3C8 -2800CD3E8:lI112|H2800CD3D8 -2800CD3F8:lI116|H2800CD3E8 -2800CD408:lI111|H2800CD3F8 -2800CD418:lI95|H2800CD408 -2800CD428:lI109|H2800CD418 -2800CD438:lI97|H2800CD428 -2800CD448:lI101|H2800CD438 -2800CD458:lI108|H2800CD448 -2800CD468:lI103|H2800CD458 -2800CD478:lI47|H2800CD468 -2800CD488:lI103|H2800CD478 -2800CD498:lI110|H2800CD488 -2800CD4A8:lI97|H2800CD498 -2800CD4B8:lI108|H2800CD4A8 -2800CD4C8:lI114|H2800CD4B8 -2800CD4D8:lI101|H2800CD4C8 -2800CD4E8:lI47|H2800CD4D8 -2800CD4F8:lI118|H2800CD4E8 -2800CD508:lI101|H2800CD4F8 -2800CD518:lI100|H2800CD508 -2800CD528:lI47|H2800CD518 -2800CD538:lI100|H2800CD528 -2800CD548:lI108|H2800CD538 -2800CD558:lI105|H2800CD548 -2800CD568:lI117|H2800CD558 -2800CD578:lI98|H2800CD568 -2800CD588:lI47|H2800CD578 -2800CD598:lI51|H2800CD588 -2800CD5A8:lI50|H2800CD598 -2800CD5B8:lI48|H2800CD5A8 -2800CD5C8:lI50|H2800CD5B8 -2800CD5D8:lI99|H2800CD5C8 -2800CD5E8:lI111|H2800CD5D8 -2800CD5F8:lI97|H2800CD5E8 -2800CD608:lI47|H2800CD5F8 -2800CD618:lI101|H2800CD608 -2800CD628:lI100|H2800CD618 -2800CD638:lI111|H2800CD628 -2800CD648:lI67|H2800CD638 -2800CD658:lI102|H2800CD648 -2800CD668:lI79|H2800CD658 -2800CD678:lI116|H2800CD668 -2800CD688:lI110|H2800CD678 -2800CD698:lI101|H2800CD688 -2800CD6A8:lI118|H2800CD698 -2800CD6B8:lI100|H2800CD6A8 -2800CD6C8:lI65|H2800CD6B8 -2800CD6D8:lI47|H2800CD6C8 -2800CD6E8:lI101|H2800CD6D8 -2800CD6F8:lI100|H2800CD6E8 -2800CD708:lI111|H2800CD6F8 -2800CD718:lI67|H2800CD708 -2800CD728:lI32|H2800CD718 -2800CD738:lI83|H2800CD728 -2800CD748:lI86|H2800CD738 -2800CD758:lI47|H2800CD748 -2800CD768:lI110|H2800CD758 -2800CD778:lI111|H2800CD768 -2800CD788:lI115|H2800CD778 -2800CD798:lI108|H2800CD788 -2800CD7A8:lI114|H2800CD798 -2800CD7B8:lI97|H2800CD7A8 -2800CD7C8:lI99|H2800CD7B8 -2800CD7D8:lI115|H2800CD7C8 -2800CD7E8:lI97|H2800CD7D8 -2800CD7F8:lI108|H2800CD7E8 -2800CD808:lI111|H2800CD7F8 -2800CD818:lI104|H2800CD808 -2800CD828:lI99|H2800CD818 -2800CD838:lI105|H2800CD828 -2800CD848:lI110|H2800CD838 -2800CD858:lI47|H2800CD848 -2800CD868:lI115|H2800CD858 -2800CD878:lI114|H2800CD868 -2800CD888:lI101|H2800CD878 -2800CD898:lI115|H2800CD888 -2800CD8A8:lI85|H2800CD898 -2800CD8B8:lI47|H2800CD8A8 -2800CD8C8:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAAAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQBiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800CD8F0:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAABAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQFiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800CD918:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAACAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQJiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800CD940:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAFAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQViBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -2800CD968:E53:g3AAAABRAaydgc7BzWhFu0HOQjKx7YoAAAAGAAAAAHcPZ2xlYW1Ab3RwQGFjdG9yYQZiBWTsDlh3DW5vbm9kZUBub2hvc3QAAAAAAAAAAAAAAAA= -280093080:t2:H280093098,A5:async -280093098:t2:AA:logger_olp,A14:logger_std_h_default -28008F548:t2:AC:logger_proxy,H28008F560 -28008F560:t3:AC:logger_proxy,P<0.72.0>,H28008F580 -28008F580:t2:AA:logger_olp,AC:logger_proxy -2800930C8:t2:H2800930E0,I10 -2800930E0:t2:AD:logger_config,H2800930F8 -2800930F8:t2:A10:$handler_config$,A7:default -28001C1F8:t2:H28001C210,H28001C228 -28001C210:t2:AB:prim_socket,A7:options -28001C228:MhC2:10:H28001C2B8,H28001C2F8,H28001C338,H28001C380,H28001C3E0,H28001C410,H28001C460,H28001C4B0,H28001C4F8,H28001C550,H28001C598,H28001C5F0,H28001C658,H28001C6B8,H28001C710,H28001C740 -28001C2B8:Mn7:H28001C790,H28001C7A0,H28001C7B0,H28001C7C0,H28001C7D0,H28001C7E0,H28001C7F8 -28001C2F8:Mn7:H28001C808,H28001C830,H28001C840,H28001C850,H28001C860,H28001C878,H28001C888 -28001C338:Mn8:H28001C8A0,H28001C8B0,H28001C8D8,H28001C900,H28001C910,H28001C938,H28001C950,H28001C960 -28001C380:MnB:H28001C988,H28001C998,H28001C9A8,H28001C9C0,H28001C9E0,H28001CA08,H28001CA30,H28001CA48,H28001CA70,H28001CA80,H28001CA90 -28001C3E0:Mn5:H28001CAB8,H28001CAC8,H28001CAD8,H28001CB00,H28001CB20 -28001C410:Mn9:H28001CB38,H28001CB48,H28001CB58,H28001CB68,H28001CB90,H28001CBA8,H28001CBD0,H28001CBF8,H28001CC08 -28001C460:Mn9:H28001CC18,H28001CC30,H28001CC58,H28001CC70,H28001CC88,H28001CC98,H28001CCA8,H28001CCC0,H28001CCD0 -28001C4B0:Mn8:H28001CCF8,H28001CD08,H28001CD18,H28001CD28,H28001CD40,H28001CD50,H28001CD60,H28001CD78 -28001C4F8:MnA:H28001CD88,H28001CDA0,H28001CDC8,H28001CDD8,H28001CDE8,H28001CE00,H28001CE18,H28001CE28,H28001CE38,H28001CE60 -28001C550:Mn8:H28001CE88,H28001CEB0,H28001CED8,H28001CEF0,H28001CF18,H28001CF30,H28001CF40,H28001CF50 -28001C598:MnA:H28001CF60,H28001CF78,H28001CFA0,H28001CFB8,H28001CFD8,H28001D000,H28001D010,H28001D020,H28001D038,H28001D048 -28001C5F0:MnC:H28001D058,H28001D080,H28001D090,H28001D0A8,H28001D0C0,H28001D0E8,H28001D110,H28001D120,H28001D130,H28001D140,H28001D150,H28001D160 -28001C658:MnB:H28001D170,H28001D180,H28001D190,H28001D1A0,H28001D1B0,H28001D1C0,H28001D1E8,H28001D1F8,H28001D208,H28001D218,H28001D228 -28001C6B8:MnA:H28001D238,H28001D248,H28001D268,H28001D278,H28001D298,H28001D2A8,H28001D2B8,H28001D2D0,H28001D2E8,H28001D308 -28001C710:Mn5:H28001D318,H28001D330,H28001D348,H28001D370,H28001D388 -28001C740:Mn9:H28001D398,H28001D3A8,H28001D3B8,H28001D3E0,H28001D3F0,H28001D400,H28001D410,H28001D420,H28001D430 -28001C790:lH28001D440|A9:undefined -28001C7A0:lH28001D458|A9:undefined -28001C7B0:lH28001D470|A9:undefined -28001C7C0:lH28001D488|A9:undefined -28001C7D0:lH28001D4A0|A9:undefined -28001C7E0:Mn2:H28001D4B8,H28001D4C8 -28001C7F8:lH28001D4D8|A9:undefined -28001C808:lH28001D4F0|H28001C818 -28001C818:t2:A6:socket,I1024 -28001C830:lH28001D508|A9:undefined -28001C840:lH28001D520|A9:undefined -28001C850:lH28001D538|A9:undefined -28001C860:Mn2:H28001D550,H28001D560 -28001C878:lH28001D588|A9:undefined -28001C888:Mn2:H28001D5A0,H28001D5C8 -28001C8A0:lH28001D5F0|A9:undefined -28001C8B0:lH28001D608|H28001C8C0 -28001C8C0:t2:I0,I4 -28001C8D8:Mn4:H28001D620,H28001D648,H28001D658,H28001D668 -28001C900:lH28001D678|A9:undefined -28001C910:lH28001D690|H28001C920 -28001C920:t2:I0,I26 -28001C938:Mn2:H28001D6A8,H28001D6B8 -28001C950:lH28001D6C8|A9:undefined -28001C960:lH28001D6E0|H28001C970 -28001C970:t2:A6:socket,I4099 -28001C988:lH28001D6F8|A9:undefined -28001C998:lH28001D710|A9:undefined -28001C9A8:Mn2:H28001D728,H28001D738 -28001C9C0:Mn3:H28001D748,H28001D770,H28001D780 -28001C9E0:lH28001D790|H28001C9F0 -28001C9F0:t2:I0,I72 -28001CA08:lH28001D7A8|H28001CA18 -28001CA18:t2:I41,I36 -28001CA30:Mn2:H28001D7C0,H28001D7D0 -28001CA48:lH28001D7F8|H28001CA58 -28001CA58:t2:I41,I27 -28001CA70:lH28001D810|A9:undefined -28001CA80:lH28001D828|A9:undefined -28001CA90:lH28001D840|H28001CAA0 -28001CAA0:t2:I0,I70 -28001CAB8:lH28001D858|A9:undefined -28001CAC8:lH28001D870|A9:undefined -28001CAD8:lH28001D888|H28001CAE8 -28001CAE8:t2:I6,I2 -28001CB00:Mn3:H28001D8A0,H28001D8B0,H28001D8D8 -28001CB20:Mn2:H28001D8E8,H28001D8F8 -28001CB38:Mn1:H28001D908 -28001CB48:lH28001D920|A9:undefined -28001CB58:lH28001D938|A9:undefined -28001CB68:lH28001D950|H28001CB78 -28001CB78:t2:I0,I73 -28001CB90:Mn2:H28001D968,H28001D978 -28001CBA8:lH28001D9A0|H28001CBB8 -28001CBB8:t2:A6:socket,I256 -28001CBD0:lH28001D9B8|H28001CBE0 -28001CBE0:t2:I41,I10 -28001CBF8:lH28001D9D0|A9:undefined -28001CC08:lH28001D9E8|A9:undefined -28001CC18:Mn2:H28001DA00,H28001DA10 -28001CC30:lH28001DA20|H28001CC40 -28001CC40:t2:I0,I3 -28001CC58:Mn2:H28001DA38,H28001DA48 -28001CC70:Mn2:H28001DA58,H28001DA68 -28001CC88:lH28001DA78|A9:undefined -28001CC98:lH28001DA90|A9:undefined -28001CCA8:Mn2:H28001DAA8,H28001DAB8 -28001CCC0:lH28001DAC8|A9:undefined -28001CCD0:Mn4:H28001DAE0,H28001DAF0,H28001DB00,H28001DB10 -28001CCF8:lH28001DB20|A9:undefined -28001CD08:lH28001DB38|H28001CA58 -28001CD18:lH28001DB50|A9:undefined -28001CD28:Mn2:H28001DB68,H28001DB90 -28001CD40:lH28001DBA0|H28001CAA0 -28001CD50:lH28001DBB8|H28001CA18 -28001CD60:Mn2:H28001DBD0,H28001DBF8 -28001CD78:lH28001DC08|A9:undefined -28001CD88:Mn2:H28001DC20,H28001DC30 -28001CDA0:lH28001DC40|H28001CDB0 -28001CDB0:t2:A6:socket,I8 -28001CDC8:Mn1:H28001DC58 -28001CDD8:lH28001DC70|A9:undefined -28001CDE8:Mn2:H28001DC88,H28001DC98 -28001CE00:Mn2:H28001DCA8,H28001DCB8 -28001CE18:lH28001DCC8|A9:undefined -28001CE28:lH28001DCE0|A9:undefined -28001CE38:lH28001DCF8|H28001CE48 -28001CE48:t2:I0,I27 -28001CE60:lH28001DD10|H28001CE70 -28001CE70:t2:I0,I8 -28001CE88:Mn4:H28001DD28,H28001DD38,H28001DD48,H28001DD70 -28001CEB0:lH28001DD98|H28001CEC0 -28001CEC0:t2:I0,I9 -28001CED8:Mn2:H28001DDB0,H28001DDC0 -28001CEF0:lH28001DDE8|H28001CF00 -28001CF00:t2:I0,I24 -28001CF18:Mn2:H28001DE00,H28001DE10 -28001CF30:lH28001DE20|A9:undefined -28001CF40:lH28001DE38|H28001CB78 -28001CF50:lH28001DE50|A9:undefined -28001CF60:Mn2:H28001DE68,H28001DE78 -28001CF78:lH28001DE88|H28001CF88 -28001CF88:t2:A6:socket,I1 -28001CFA0:Mn2:H28001DEA0,H28001DEB0 -28001CFB8:Mn3:H28001DEC0,H28001DED8,H28001DEE8 -28001CFD8:lH28001DEF8|H28001CFE8 -28001CFE8:t2:I6,I1 -28001D000:lH28001DF10|A9:undefined -28001D010:lH28001DF28|A9:undefined -28001D020:Mn2:H28001DF40,H28001DF50 -28001D038:lH28001DF60|A9:undefined -28001D048:lH28001DF78|A9:undefined -28001D058:lH28001DF90|H28001D068 -28001D068:t2:I0,I13 -28001D080:lH28001DFA8|A9:undefined -28001D090:Mn2:H28001DFC0,H28001DFD0 -28001D0A8:Mn2:H28001DFF8,H28001E008 -28001D0C0:lH28001E018|H28001D0D0 -28001D0D0:t2:I0,I10 -28001D0E8:lH28001E030|H28001D0F8 -28001D0F8:t2:A6:socket,I16 -28001D110:lH28001E048|A9:undefined -28001D120:lH28001E060|A9:undefined -28001D130:lH28001E078|A9:undefined -28001D140:lH28001E090|A9:undefined -28001D150:lH28001E0A8|A9:undefined -28001D160:lH28001E0C0|A9:undefined -28001D170:lH28001E0D8|A9:undefined -28001D180:Mn1:H28001E0F0 -28001D190:lH28001E108|A9:undefined -28001D1A0:lH28001E120|A9:undefined -28001D1B0:lH28001E138|H28001D0D0 -28001D1C0:lH28001E150|H28001D1D0 -28001D1D0:t2:A6:socket,I2 -28001D1E8:lH28001E168|A9:undefined -28001D1F8:lH28001E180|A9:undefined -28001D208:lH28001E198|A9:undefined -28001D218:Mn1:H28001E1B0 -28001D228:lH28001E1C8|A9:undefined -28001D238:lH28001E1E0|A9:undefined -28001D248:Mn3:H28001E1F8,H28001E208,H28001E218 -28001D268:lH28001E228|A9:undefined -28001D278:Mn3:H28001E240,H28001E268,H28001E278 -28001D298:lH28001E288|A9:undefined -28001D2A8:lH28001E2A0|H28001CE70 -28001D2B8:Mn2:H28001E2B8,H28001E2C8 -28001D2D0:Mn2:H28001E2D8,H28001E2E8 -28001D2E8:Mn3:H28001E2F8,H28001E320,H28001E330 -28001D308:lH28001E340|A9:undefined -28001D318:Mn2:H28001E358,H28001E368 -28001D330:Mn2:H28001E378,H28001E388 -28001D348:lH28001E398|H28001D358 -28001D358:t2:A6:socket,I4104 -28001D370:Mn2:H28001E3B0,H28001E3C0 -28001D388:lH28001E3D0|A9:undefined -28001D398:lH28001E3E8|A9:undefined -28001D3A8:lH28001E400|A9:undefined -28001D3B8:lH28001E418|H28001D3C8 -28001D3C8:t2:A6:socket,I32 -28001D3E0:lH28001E430|A9:undefined -28001D3F0:lH28001E448|A9:undefined -28001D400:lH28001E460|A9:undefined -28001D410:lH28001E478|A9:undefined -28001D420:lH28001E490|A9:undefined -28001D430:lH28001E4A8|A9:undefined -28001D440:t2:A3:tcp,A8:keepidle -28001D458:t2:A3:TCP,A5:noopt -28001D470:t2:A4:ipv6,AA:pktoptions -28001D488:t2:A4:IPV6,AF:drop_membership -28001D4A0:t2:A3:tcp,AC:user_timeout -28001D4B8:lH28001E4C0|A9:undefined -28001D4C8:lH28001E4D8|A9:undefined -28001D4D8:t2:A4:IPV6,AB:use_min_mtu -28001D4F0:t2:A6:socket,A9:timestamp -28001D508:t2:A2:IP,AD:multicast_all -28001D520:t2:A3:TCP,A6:syncnt -28001D538:t2:A4:ipv6,AF:drop_membership -28001D550:lH28001E4F0|A9:undefined -28001D560:lH28001E508|H28001D570 -28001D570:t2:I0,I2 -28001D588:t2:A3:TCP,A7:keepcnt -28001D5A0:lH28001E520|H28001D5B0 -28001D5B0:t2:I0,I20 -28001D5C8:lH28001E538|H28001D5D8 -28001D5D8:t2:A6:socket,I512 -28001D5F0:t2:A2:IP,A8:dontfrag -28001D608:t2:A2:IP,A3:ttl -28001D620:lH28001E550|H28001D630 -28001D630:t2:I0,I12 -28001D648:lH28001E568|A9:undefined -28001D658:lH28001E580|H28001CBE0 -28001D668:lH28001E598|H28001C920 -28001D678:t2:A4:ipv6,AB:use_min_mtu -28001D690:t2:A2:IP,A7:pktinfo -28001D6A8:lH28001E5B0|A9:undefined -28001D6B8:lH28001E5C8|A9:undefined -28001D6C8:t2:A4:IPV6,A9:portrange -28001D6E0:t2:A6:socket,A8:sndlowat -28001D6F8:t2:A3:TCP,A8:keepidle -28001D710:t2:A2:ip,A3:mtu -28001D728:lH28001E5E0|A9:undefined -28001D738:lH28001E5F8|A9:undefined -28001D748:lH28001E610|H28001D758 -28001D758:t2:A6:socket,I4100 -28001D770:lH28001E628|A9:undefined -28001D780:lH28001E640|A9:undefined -28001D790:t2:A2:IP,AC:block_source -28001D7A8:t2:A4:IPV6,A6:tclass -28001D7C0:lH28001E658|A9:undefined -28001D7D0:lH28001E670|H28001D7E0 -28001D7E0:t2:A6:socket,I4098 -28001D7F8:t2:A4:ipv6,A6:v6only -28001D810:t2:A2:ip,A8:nodefrag -28001D828:t2:A3:tcp,A7:keepcnt -28001D840:t2:A2:ip,A15:add_source_membership -28001D858:t2:A4:ipv6,AB:leave_group -28001D870:t2:A2:ip,A6:minttl -28001D888:t2:A3:TCP,A6:maxseg -28001D8A0:lH28001E688|A9:undefined -28001D8B0:lH28001E6A0|H28001D8C0 -28001D8C0:t2:I41,I4 -28001D8D8:lH28001E6B8|A9:undefined -28001D8E8:lH28001E6D0|A9:undefined -28001D8F8:lH28001E6E8|H28001CE48 -28001D908:Mn2:H28001E700,H28001E710 -28001D920:t2:A6:socket,AB:sndbufforce -28001D938:t2:A4:IPV6,A5:faith -28001D950:t2:A2:ip,AE:unblock_source -28001D968:lH28001E720|A9:undefined -28001D978:lH28001E738|H28001D988 -28001D988:t2:I41,I35 -28001D9A0:t2:A6:socket,A9:oobinline -28001D9B8:t2:A4:ipv6,AE:multicast_hops -28001D9D0:t2:A6:socket,A8:passcred -28001D9E8:t2:A3:TCP,AA:congestion -28001DA00:lH28001E750|A9:undefined -28001DA10:lH28001E768|H28001C8C0 -28001DA20:t2:A2:ip,A3:tos -28001DA38:lH28001E780|A9:undefined -28001DA48:lH28001E798|A9:undefined -28001DA58:lH28001E7B0|A9:undefined -28001DA68:lH28001E7C8|A9:undefined -28001DA78:t2:A6:socket,A6:setfib -28001DA90:t2:A6:socket,A8:protocol -28001DAA8:lH28001E7E0|A9:undefined -28001DAB8:lH28001E7F8|H28001CFE8 -28001DAC8:t2:A6:socket,A8:rxq_ovfl -28001DAE0:lH28001E810|A9:undefined -28001DAF0:lH28001E828|A9:undefined -28001DB00:lH28001E840|A9:undefined -28001DB10:lH28001E858|A9:undefined -28001DB20:t2:A6:socket,AB:rcvbufforce -28001DB38:t2:A4:IPV6,A6:v6only -28001DB50:t2:A4:ipv6,AB:recvpktinfo -28001DB68:lH28001E870|H28001DB78 -28001DB78:t2:A6:socket,I4 -28001DB90:lH28001E888|H28001D630 -28001DBA0:t2:A2:IP,A15:add_source_membership -28001DBB8:t2:A4:ipv6,A6:tclass -28001DBD0:lH28001E8A0|H28001DBE0 -28001DBE0:t2:I0,I7 -28001DBF8:lH28001E8B8|A9:undefined -28001DC08:t2:A4:ipv6,A7:recverr -28001DC20:lH28001E8D0|H28001CC40 -28001DC30:lH28001E8E8|A9:undefined -28001DC40:t2:A6:socket,A9:keepalive -28001DC58:Mn2:H28001E900,H28001E910 -28001DC70:t2:A6:socket,AC:bindtodevice -28001DC88:lH28001E920|H28001DBE0 -28001DC98:lH28001E938|A9:undefined -28001DCA8:lH28001E950|A9:undefined -28001DCB8:lH28001E968|A9:undefined -28001DCC8:t2:A4:IPV6,A8:flowinfo -28001DCE0:t2:A4:IPV6,A8:hoplimit -28001DCF8:t2:A2:IP,A7:recvtos -28001DD10:t2:A2:IP,A7:retopts -28001DD28:lH28001E980|A9:undefined -28001DD38:lH28001E998|A9:undefined -28001DD48:lH28001E9B0|H28001DD58 -28001DD58:t2:I41,I11 -28001DD70:lH28001E9C8|H28001DD80 -28001DD80:t2:I0,I11 -28001DD98:t2:A2:IP,AC:multicast_if -28001DDB0:lH28001E9E0|H28001CAE8 -28001DDC0:lH28001E9F8|H28001DDD0 -28001DDD0:t2:I0,I71 -28001DDE8:t2:A2:ip,A7:recvttl -28001DE00:lH28001EA10|H28001D8C0 -28001DE10:lH28001EA28|H28001CF00 -28001DE20:t2:A4:ipv6,A8:checksum -28001DE38:t2:A2:IP,AE:unblock_source -28001DE50:t2:A4:IPV6,AC:mtu_discover -28001DE68:lH28001EA40|A9:undefined -28001DE78:lH28001EA58|A9:undefined -28001DE88:t2:A6:socket,A5:debug -28001DEA0:lH28001EA70|H28001D570 -28001DEB0:lH28001EA88|A9:undefined -28001DEC0:Mn2:H28001EAA0,H28001EAB0 -28001DED8:lH28001EAC0|A9:undefined -28001DEE8:lH28001EAD8|A9:undefined -28001DEF8:t2:A3:TCP,A7:nodelay -28001DF10:t2:A4:IPV6,AC:ipcomp_level -28001DF28:t2:A3:tcp,A4:cork -28001DF40:lH28001EAF0|A9:undefined -28001DF50:lH28001EB08|H28001DD80 -28001DF60:t2:A2:IP,A8:freebind -28001DF78:t2:A4:IPV6,AA:join_group -28001DF90:t2:A2:ip,AF:drop_membership -28001DFA8:t2:A3:tcp,A5:noopt -28001DFC0:lH28001EB20|H28001CEC0 -28001DFD0:lH28001EB38|H28001DFE0 -28001DFE0:t2:I41,I9 -28001DFF8:lH28001EB50|A9:undefined -28001E008:lH28001EB68|A9:undefined -28001E018:t2:A2:ip,AD:multicast_ttl -28001E030:t2:A6:socket,A9:dontroute -28001E048:t2:A4:ipv6,AC:ipcomp_level -28001E060:t2:A2:ip,AA:pktoptions -28001E078:t2:A4:IPV6,AC:recvhoplimit -28001E090:t2:A4:IPV6,AE:add_membership -28001E0A8:t2:A2:ip,AC:router_alert -28001E0C0:t2:A3:udp,A4:cork -28001E0D8:t2:A2:ip,A7:options -28001E0F0:Mn2:H28001EB80,H28001EBA8 -28001E108:t2:A4:IPV6,A7:authhdr -28001E120:t2:A2:IP,A8:msfilter -28001E138:t2:A2:IP,AD:multicast_ttl -28001E150:t2:A6:socket,AA:acceptconn -28001E168:t2:A4:ipv6,AA:join_group -28001E180:t2:A4:ipv6,AC:mtu_discover -28001E198:t2:A4:ipv6,AC:recvhoplimit -28001E1B0:Mn2:H28001EBB8,H28001EBC8 -28001E1C8:t2:A6:socket,A8:sndtimeo -28001E1E0:t2:A4:ipv6,A7:authhdr -28001E1F8:lH28001EBD8|A9:undefined -28001E208:lH28001EBF0|A9:undefined -28001E218:lH28001EC08|A9:undefined -28001E228:t2:A2:ip,A8:msfilter -28001E240:lH28001EC20|H28001E250 -28001E250:t2:I0,I5 -28001E268:lH28001EC38|A9:undefined -28001E278:lH28001EC50|H28001D988 -28001E288:t2:A3:tcp,A9:keepintvl -28001E2A0:t2:A2:ip,A7:retopts -28001E2B8:lH28001EC68|A9:undefined -28001E2C8:lH28001EC80|A9:undefined -28001E2D8:lH28001EC98|A9:undefined -28001E2E8:lH28001ECB0|A9:undefined -28001E2F8:lH28001ECC8|H28001E308 -28001E308:t2:A6:socket,I128 -28001E320:lH28001ECE0|H28001C9F0 -28001E330:lH28001ECF8|H28001D068 -28001E340:t2:A4:IPV6,AA:auth_level -28001E358:lH28001ED10|A9:undefined -28001E368:lH28001ED28|A9:undefined -28001E378:lH28001ED40|H28001DD58 -28001E388:lH28001ED58|A9:undefined -28001E398:t2:A6:socket,A4:type -28001E3B0:lH28001ED70|A9:undefined -28001E3C0:lH28001ED88|A9:undefined -28001E3D0:t2:A3:TCP,A9:keepintvl -28001E3E8:t2:A2:IP,AC:router_alert -28001E400:t2:A2:IP,A3:mtu -28001E418:t2:A6:socket,A9:broadcast -28001E430:t2:A6:socket,A4:mark -28001E448:t2:A4:ipv6,A5:rthdr -28001E460:t2:A2:IP,AB:sendsrcaddr -28001E478:t2:A4:ipv6,A9:portrange -28001E490:t2:A6:socket,A6:domain -28001E4A8:t2:A2:ip,AB:transparent -28001E4C0:t2:A4:ipv6,AE:add_membership -28001E4D8:t2:A3:TCP,A4:cork -28001E4F0:t2:A4:ipv6,A5:faith -28001E508:t2:A2:ip,A7:hdrincl -28001E520:t2:A2:IP,A6:recvif -28001E538:t2:A6:socket,A9:reuseport -28001E550:t2:A2:ip,AE:add_membership -28001E568:t2:A6:socket,A8:priority -28001E580:t2:A4:IPV6,AE:multicast_hops -28001E598:t2:A2:ip,A7:pktinfo -28001E5B0:t2:A2:ip,AB:sendsrcaddr -28001E5C8:t2:A4:IPV6,AC:router_alert -28001E5E0:t2:A2:IP,A6:minttl -28001E5F8:t2:A4:IPV6,A8:checksum -28001E610:t2:A6:socket,A8:rcvlowat -28001E628:t2:A3:tcp,A4:info -28001E640:t2:A3:tcp,A6:md5sig -28001E658:t2:A4:ipv6,A7:hopopts -28001E670:t2:A6:socket,A6:rcvbuf -28001E688:t2:A4:IPV6,A3:mtu -28001E6A0:t2:A4:IPV6,AC:unicast_hops -28001E6B8:t2:A4:ipv6,A8:hoplimit -28001E6D0:t2:A2:IP,AF:recvorigdstaddr -28001E6E8:t2:A2:ip,A7:recvtos -28001E700:lH28001EDA0|A9:undefined -28001E710:lH28001EDB8|A9:undefined -28001E720:t2:A2:ip,AD:multicast_all -28001E738:t2:A4:ipv6,AA:recvtclass -28001E750:t2:A2:ip,A8:freebind -28001E768:t2:A2:ip,A3:ttl -28001E780:t2:A2:IP,A7:options -28001E798:t2:A4:IPV6,A5:rthdr -28001E7B0:t2:A4:ipv6,A8:addrform -28001E7C8:t2:A6:socket,A8:rcvtimeo -28001E7E0:t2:A2:ip,AF:recvorigdstaddr -28001E7F8:t2:A3:tcp,A7:nodelay -28001E810:t2:A3:TCP,A6:nopush -28001E828:t2:A6:socket,A9:busy_poll -28001E840:t2:A2:IP,AA:pktoptions -28001E858:t2:A4:IPV6,AF:esp_trans_level -28001E870:t2:A6:socket,A9:reuseaddr -28001E888:t2:A2:IP,AE:add_membership -28001E8A0:t2:A2:ip,AB:recvdstaddr -28001E8B8:t2:A2:ip,A8:dontfrag -28001E8D0:t2:A2:IP,A3:tos -28001E8E8:t2:A4:ipv6,AF:esp_trans_level -28001E900:lH28001EDD0|H28001E250 -28001E910:lH28001EDE8|A9:undefined -28001E920:t2:A2:IP,AB:recvdstaddr -28001E938:t2:A2:IP,A7:recverr -28001E950:t2:A2:IP,A8:nodefrag -28001E968:t2:A3:UDP,A4:cork -28001E980:t2:A4:IPV6,A7:hopopts -28001E998:t2:A4:IPV6,AB:recvpktinfo -28001E9B0:t2:A4:IPV6,AE:multicast_loop -28001E9C8:t2:A2:IP,AE:multicast_loop -28001E9E0:t2:A3:tcp,A6:maxseg -28001E9F8:t2:A2:IP,A16:drop_source_membership -28001EA10:t2:A4:ipv6,AC:unicast_hops -28001EA28:t2:A2:IP,A7:recvttl -28001EA40:t2:A4:IPV6,A8:addrform -28001EA58:t2:A4:IPV6,A7:dstopts -28001EA70:t2:A2:IP,A7:hdrincl -28001EA88:t2:A3:tcp,A6:syncnt -28001EAA0:lH28001EE00|H28001DFE0 -28001EAB0:lH28001EE18|H28001DDD0 -28001EAC0:t2:A4:ipv6,A8:flowinfo -28001EAD8:t2:A2:ip,AC:mtu_discover -28001EAF0:t2:A6:socket,A8:peek_off -28001EB08:t2:A2:ip,AE:multicast_loop -28001EB20:t2:A2:ip,AC:multicast_if -28001EB38:t2:A4:ipv6,AC:multicast_if -28001EB50:t2:A4:ipv6,AA:auth_level -28001EB68:t2:A4:IPV6,A11:esp_network_level -28001EB80:lH28001EE30|H28001EB90 -28001EB90:t2:A6:socket,I4097 -28001EBA8:lH28001EE48|H28001D5B0 -28001EBB8:lH28001EE60|A9:undefined -28001EBC8:lH28001EE78|A9:undefined -28001EBD8:t2:A6:socket,A8:peercred -28001EBF0:t2:A3:TCP,AC:user_timeout -28001EC08:t2:A4:ipv6,A7:dstopts -28001EC20:t2:A2:IP,A8:recvopts -28001EC38:t2:A4:IPV6,A7:recverr -28001EC50:t2:A4:IPV6,AA:recvtclass -28001EC68:t2:A2:IP,AC:mtu_discover -28001EC80:t2:A3:tcp,A6:nopush -28001EC98:t2:A2:ip,A7:recverr -28001ECB0:t2:A3:TCP,A4:info -28001ECC8:t2:A6:socket,A6:linger -28001ECE0:t2:A2:ip,AC:block_source -28001ECF8:t2:A2:IP,AF:drop_membership -28001ED10:t2:A2:IP,AB:transparent -28001ED28:t2:A4:IPV6,AB:leave_group -28001ED40:t2:A4:ipv6,AE:multicast_loop -28001ED58:t2:A3:tcp,AA:congestion -28001ED70:t2:A4:IPV6,AA:pktoptions -28001ED88:t2:A4:ipv6,A11:esp_network_level -28001EDA0:t2:A4:ipv6,AC:router_alert -28001EDB8:t2:A3:TCP,A6:md5sig -28001EDD0:t2:A2:ip,A8:recvopts -28001EDE8:t2:A4:ipv6,A3:mtu -28001EE00:t2:A4:IPV6,AC:multicast_if -28001EE18:t2:A2:ip,A16:drop_source_membership -28001EE30:t2:A6:socket,A6:sndbuf -28001EE48:t2:A2:ip,A6:recvif -28001EE60:t2:A6:socket,A5:error -28001EE78:t2:A6:socket,AC:acceptfilter -280093128:t2:H280093140,A9:undefined -280093140:t2:AD:logger_config,H280093158 -280093158:t2:A10:$handler_config$,A6:simple -28007FBD8:t2:AC:global_group,H28007FBF0 -28007FBF0:t9:A5:gconf,A9:undefined,AD:nonode@nohost,N,A6:normal,N,A3:all,N,A7:no_conf -280017DC0:t2:H280017DD8,H280017DF0 -280017DD8:t2:AB:prim_socket,A9:protocols -280017DF0:Mh1A6:10:H280017E80,H280017EF0,H280017F68,H280017FD0,H280018040,H2800180A8,H280018120,H280018188,H2800181D8,H280018248,H2800182C0,H280018330,H2800183A0,H280018418,H280018480,H2800184F0 -280017E80:MnD:H280018568,H280018588,H2800185A0,H2800185D0,H2800185F0,H280018608,H280018620,H280018638,H280018648,H280018658,H280018668,H280018680,H2800186A0 -280017EF0:MnE:H2800186B8,H2800186D0,H2800186E8,H280018710,H280018720,H280018750,H280018760,H280018778,H280018798,H2800187A8,H2800187B8,H2800187D8,H2800187F0,H280018800 -280017F68:MnC:H280018810,H280018820,H280018840,H280018868,H280018880,H280018890,H2800188A8,H2800188C0,H2800188E0,H2800188F8,H280018920,H280018930 -280017FD0:MnD:H280018948,H280018958,H280018978,H280018998,H2800189B0,H2800189D0,H2800189E8,H2800189F8,H280018A10,H280018A30,H280018A40,H280018A50,H280018A70 -280018040:MnC:H280018A88,H280018AA0,H280018AB8,H280018AD8,H280018AE8,H280018AF8,H280018B18,H280018B30,H280018B40,H280018B70,H280018BA0,H280018BB8 -2800180A8:MnE:H280018BE0,H280018BF8,H280018C20,H280018C48,H280018C70,H280018C80,H280018C90,H280018CA8,H280018CB8,H280018CD0,H280018CE8,H280018D10,H280018D30,H280018D48 -280018120:MnC:H280018D68,H280018D88,H280018DA8,H280018DB8,H280018DD8,H280018DE8,H280018DF8,H280018E08,H280018E20,H280018E38,H280018E68,H280018E80 -280018188:Mn9:H280018EB0,H280018EC0,H280018ED8,H280018EF0,H280018F00,H280018F10,H280018F30,H280018F48,H280018F60 -2800181D8:MnD:H280018F88,H280018F98,H280018FA8,H280018FC0,H280018FE0,H280019008,H280019038,H280019048,H280019060,H280019078,H280019088,H280019098,H2800190A8 -280018248:MnE:H2800190B8,H2800190D8,H2800190E8,H2800190F8,H280019108,H280019128,H280019138,H280019150,H280019160,H280019178,H280019198,H2800191A8,H2800191B8,H2800191D0 -2800182C0:MnD:H2800191E0,H2800191F8,H280019220,H280019250,H280019268,H280019290,H2800192A8,H2800192C8,H2800192D8,H2800192E8,H2800192F8,H280019310,H280019328 -280018330:MnD:H280019338,H280019350,H280019380,H280019390,H2800193C0,H2800193E0,H2800193F8,H280019418,H280019428,H280019448,H280019468,H280019480,H280019498 -2800183A0:MnE:H2800194C8,H2800194E0,H280019500,H280019518,H280019530,H280019548,H280019558,H280019578,H2800195A8,H2800195E8,H280019600,H280019618,H280019630,H280019650 -280018418:MnC:H280019660,H280019678,H280019688,H2800196B8,H2800196D0,H2800196E0,H2800196F8,H280019710,H280019730,H280019750,H280019760,H280019770 -280018480:MnD:H280019780,H280019798,H2800197A8,H2800197C8,H2800197E8,H280019818,H280019830,H280019860,H280019870,H280019880,H2800198B0,H2800198E0,H280019910 -2800184F0:MnE:H280019930,H280019950,H280019968,H280019980,H280019990,H2800199A8,H2800199C0,H2800199D0,H2800199F8,H280019A10,H280019A30,H280019A50,H280019A60,H280019A80 -280018568:Mn3:H280019A90,H280019AA0,H280019AD0 -280018588:Mn2:H280019AE0,H280019AF0 -2800185A0:lI50|H2800185B0 -2800185B0:lA3:esp|H2800185C0 -2800185C0:lA3:ESP|N -2800185D0:Mn3:H280019B00,H280019B30,H280019B40 -2800185F0:Mn2:H280019B50,H280019B80 -280018608:Mn2:H280019BB0,H280019BC0 -280018620:Mn2:H280019BD0,H280019BE0 -280018638:lA3:mux|I18 -280018648:lA3:pvp|I75 -280018658:lA3:rvd|I66 -280018668:Mn2:H280019BF0,H280019C20 -280018680:Mn3:H280019C30,H280019C40,H280019C50 -2800186A0:Mn2:H280019C80,H280019C90 -2800186B8:Mn2:H280019CA0,H280019CB0 -2800186D0:Mn2:H280019CC0,H280019CF0 -2800186E8:Mn4:H280019D00,H280019D10,H280019D20,H280019D30 -280018710:lA5:manet|I138 -280018720:lI64|H280018730 -280018730:lA9:sat-expak|H280018740 -280018740:lA9:SAT-EXPAK|N -280018750:lA6:MOBILE|I55 -280018760:Mn2:H280019D60,H280019D70 -280018778:Mn3:H280019DA0,H280019DB0,H280019DC0 -280018798:lA4:IGMP|I2 -2800187A8:lAB:SECURE-VMTP|I82 -2800187B8:Mn3:H280019DD0,H280019E00,H280019E10 -2800187D8:Mn2:H280019E40,H280019E50 -2800187F0:lA2:ah|I51 -280018800:lAA:br-sat-mon|I76 -280018810:lA4:IDPR|I35 -280018820:Mn3:H280019E60,H280019E70,H280019EA0 -280018840:Mn4:H280019EB0,H280019EC0,H280019EF0,H280019F00 -280018868:Mn2:H280019F30,H280019F40 -280018880:Mn1:H280019F50 -280018890:Mn2:H280019F68,H280019F78 -2800188A8:Mn2:H280019FA8,H280019FB8 -2800188C0:Mn3:H280019FE8,H28001A018,H28001A028 -2800188E0:Mn2:H28001A058,H28001A088 -2800188F8:Mn4:H28001A098,H28001A0A8,H28001A0B8,H28001A0C8 -280018920:lA3:hmp|I20 -280018930:Mn2:H28001A0E0,H28001A110 -280018948:Mn1:H28001A140 -280018958:Mn3:H28001A150,H28001A180,H28001A190 -280018978:Mn3:H28001A1C0,H28001A1D0,H28001A200 -280018998:Mn2:H28001A230,H28001A240 -2800189B0:Mn3:H28001A250,H28001A280,H28001A290 -2800189D0:Mn2:H28001A2A0,H28001A2B8 -2800189E8:lA3:TCF|I87 -2800189F8:Mn2:H28001A2C8,H28001A2F8 -280018A10:Mn3:H28001A328,H28001A338,H28001A348 -280018A30:lA3:xtp|I36 -280018A40:lA5:ENCAP|I98 -280018A50:Mn3:H28001A360,H28001A370,H28001A388 -280018A70:Mn2:H28001A3B8,H28001A3C8 -280018A88:Mn2:H28001A3D8,H28001A408 -280018AA0:Mn2:H28001A438,H28001A468 -280018AB8:Mn3:H28001A498,H28001A4A8,H28001A4D8 -280018AD8:lA3:BNA|I49 -280018AE8:lA3:TCP|I6 -280018AF8:Mn3:H28001A4E8,H28001A518,H28001A528 -280018B18:Mn2:H28001A538,H28001A548 -280018B30:lA7:MFE-NSP|I31 -280018B40:lI106|H280018B50 -280018B50:lA3:qnx|H280018B60 -280018B60:lA3:QNX|N -280018B70:lI9|H280018B80 -280018B80:lA3:igp|H280018B90 -280018B90:lA3:IGP|N -280018BA0:Mn2:H28001A558,H28001A588 -280018BB8:Mn4:H28001A598,H28001A5A8,H28001A5D8,H28001A5E8 -280018BE0:Mn2:H28001A5F8,H28001A628 -280018BF8:Mn4:H28001A638,H28001A648,H28001A658,H28001A668 -280018C20:Mn4:H28001A678,H28001A688,H28001A6B8,H28001A6C8 -280018C48:Mn4:H28001A6D8,H28001A6E8,H28001A6F8,H28001A728 -280018C70:lA4:vmtp|I81 -280018C80:lA9:idpr-cmtp|I38 -280018C90:Mn2:H28001A738,H28001A768 -280018CA8:lA7:iso-tp4|I29 -280018CB8:Mn2:H28001A798,H28001A7A8 -280018CD0:Mn2:H28001A7B8,H28001A7C8 -280018CE8:Mn4:H28001A7F8,H28001A808,H28001A820,H28001A830 -280018D10:Mn3:H28001A860,H28001A870,H28001A8A0 -280018D30:Mn2:H28001A8D0,H28001A8E0 -280018D48:Mn3:H28001A910,H28001A920,H28001A930 -280018D68:Mn3:H28001A940,H28001A958,H28001A970 -280018D88:Mn3:H28001A980,H28001A990,H28001A9A0 -280018DA8:lA3:UTI|I120 -280018DB8:Mn3:H28001A9B8,H28001A9C8,H28001A9F8 -280018DD8:lAB:compaq-peer|I110 -280018DE8:lA9:IPV6-ICMP|I58 -280018DF8:lA5:chaos|I16 -280018E08:Mn2:H28001AA08,H28001AA38 -280018E20:Mn2:H28001AA48,H28001AA78 -280018E38:lI142|H280018E48 -280018E48:lA4:rohc|H280018E58 -280018E58:lA4:ROHC|N -280018E68:Mn2:H28001AAA8,H28001AAD8 -280018E80:lI56|H280018E90 -280018E90:lA4:tlsp|H280018EA0 -280018EA0:lA4:TLSP|N -280018EB0:lA3:tcp|I6 -280018EC0:Mn2:H28001AB08,H28001AB18 -280018ED8:Mn2:H28001AB28,H28001AB38 -280018EF0:lAB:Compaq-Peer|I110 -280018F00:lAF:Mobility-Header|I135 -280018F10:Mn3:H28001AB48,H28001AB58,H28001AB68 -280018F30:Mn2:H28001AB78,H28001AB88 -280018F48:Mn2:H28001AB98,H28001ABA8 -280018F60:Mn4:H28001ABB8,H28001ABE8,H28001AC00,H28001AC30 -280018F88:Mn1:H28001AC40 -280018F98:lA4:IRTP|I28 -280018FA8:Mn2:H28001AC58,H28001AC68 -280018FC0:Mn3:H28001AC78,H28001AC88,H28001AC98 -280018FE0:Mn4:H28001ACA8,H28001ACD8,H28001ACE8,H28001ACF8 -280019008:lI45|H280019018 -280019018:lA4:idrp|H280019028 -280019028:lA4:IDRP|N -280019038:lA4:ROHC|I142 -280019048:Mn2:H28001AD08,H28001AD18 -280019060:Mn2:H28001AD48,H28001AD58 -280019078:Mn1:H28001AD70 -280019088:lA3:RVD|I66 -280019098:lA7:mfe-nsp|I31 -2800190A8:lA4:PNNI|I102 -2800190B8:Mn3:H28001AD88,H28001AD98,H28001ADA8 -2800190D8:lA4:tlsp|I56 -2800190E8:lA3:CBT|I7 -2800190F8:Mn1:H28001ADB8 -280019108:Mn3:H28001ADD0,H28001ADE0,H28001AE10 -280019128:lA3:DGP|I86 -280019138:Mn2:H28001AE20,H28001AE30 -280019150:lA6:ipcomp|I108 -280019160:Mn2:H28001AE60,H28001AE70 -280019178:Mn3:H28001AE88,H28001AE98,H28001AEC8 -280019198:lA4:sdrp|I42 -2800191A8:Mn1:H28001AEF8 -2800191B8:Mn2:H28001AF10,H28001AF20 -2800191D0:lA3:mtp|I92 -2800191E0:Mn2:H28001AF50,H28001AF80 -2800191F8:Mn4:H28001AF90,H28001AFC0,H28001AFD8,H28001B008 -280019220:lI2|H280019230 -280019230:lA4:igmp|H280019240 -280019240:lA4:IGMP|N -280019250:Mn2:H28001B018,H28001B030 -280019268:Mn4:H28001B048,H28001B078,H28001B0A8,H28001B0B8 -280019290:Mn2:H28001B0E8,H28001B0F8 -2800192A8:Mn3:H28001B108,H28001B118,H28001B128 -2800192C8:lA6:I-NLSP|I52 -2800192D8:lA4:VISA|I70 -2800192E8:lA4:larp|I91 -2800192F8:Mn2:H28001B140,H28001B170 -280019310:Mn2:H28001B1A0,H28001B1B0 -280019328:lA4:IPV6|I41 -280019338:Mn2:H28001B1E0,H28001B210 -280019350:lI32|H280019360 -280019360:lA9:merit-inp|H280019370 -280019370:lA9:MERIT-INP|N -280019380:lA4:idrp|I45 -280019390:Mn5:H28001B220,H28001B230,H28001B240,H28001B250,H28001B260 -2800193C0:Mn3:H28001B270,H28001B280,H28001B2B0 -2800193E0:Mn2:H28001B2F0,H28001B320 -2800193F8:Mn3:H28001B330,H28001B340,H28001B370 -280019418:lA7:bbn-rcc|I10 -280019428:Mn3:H28001B380,H28001B390,H28001B3C0 -280019448:Mn3:H28001B3F0,H28001B400,H28001B430 -280019468:Mn2:H28001B440,H28001B450 -280019480:Mn2:H28001B460,H28001B490 -280019498:lI30|H2800194A8 -2800194A8:lA6:netblt|H2800194B8 -2800194B8:lA6:NETBLT|N -2800194C8:Mn2:H28001B4A0,H28001B4D0 -2800194E0:Mn3:H28001B500,H28001B510,H28001B540 -280019500:Mn2:H28001B550,H28001B560 -280019518:Mn2:H28001B570,H28001B580 -280019530:Mn2:H28001B5B0,H28001B5C0 -280019548:lA9:MERIT-INP|I32 -280019558:Mn3:H28001B5D0,H28001B5E0,H28001B610 -280019578:lI6|H280019588 -280019588:lA3:tcp|H280019598 -280019598:lA3:TCP|N -2800195A8:lI112|H2800195B8 -2800195B8:lA4:carp|H2800195C8 -2800195C8:lA4:vrrp|H2800195D8 -2800195D8:lA4:CARP|N -2800195E8:Mn2:H28001B620,H28001B650 -280019600:Mn2:H28001B680,H28001B6B0 -280019618:Mn2:H28001B6C0,H28001B6D0 -280019630:Mn3:H28001B6E0,H28001B710,H28001B720 -280019650:lA5:EMCON|I14 -280019660:Mn2:H28001B750,H28001B760 -280019678:lA6:leaf-1|I25 -280019688:lI116|H280019698 -280019698:lA3:ddx|H2800196A8 -2800196A8:lA3:DDX|N -2800196B8:Mn2:H28001B770,H28001B7A0 -2800196D0:lA3:QNX|I106 -2800196E0:Mn2:H28001B7B0,H28001B7E0 -2800196F8:Mn2:H28001B7F0,H28001B820 -280019710:Mn3:H28001B830,H28001B840,H28001B850 -280019730:Mn3:H28001B860,H28001B890,H28001B8C0 -280019750:lA7:OSPFIGP|I89 -280019760:lA4:skip|I57 -280019770:Mn1:H28001B8D0 -280019780:Mn2:H28001B8E8,H28001B8F8 -280019798:lA3:smp|I121 -2800197A8:Mn3:H28001B908,H28001B938,H28001B968 -2800197C8:Mn3:H28001B978,H28001B990,H28001B9A8 -2800197E8:lI52|H2800197F8 -2800197F8:lA6:i-nlsp|H280019808 -280019808:lA6:I-NLSP|N -280019818:Mn2:H28001B9B8,H28001B9E8 -280019830:lI49|H280019840 -280019840:lA3:bna|H280019850 -280019850:lA3:BNA|N -280019860:lA3:ddx|I116 -280019870:lAA:BR-SAT-MON|I76 -280019880:lI38|H280019890 -280019890:lA9:idpr-cmtp|H2800198A0 -2800198A0:lA9:IDPR-CMTP|N -2800198B0:lI134|H2800198C0 -2800198C0:lAF:rsvp-e2e-ignore|H2800198D0 -2800198D0:lAF:RSVP-E2E-IGNORE|N -2800198E0:lI118|H2800198F0 -2800198F0:lA3:stp|H280019900 -280019900:lA3:STP|N -280019910:Mn3:H28001B9F8,H28001BA08,H28001BA18 -280019930:Mn3:H28001BA48,H28001BA58,H28001BA88 -280019950:Mn2:H28001BAB8,H28001BAC8 -280019968:Mn2:H28001BAF8,H28001BB08 -280019980:lA5:VINES|I83 -280019990:Mn2:H28001BB18,H28001BB48 -2800199A8:Mn2:H28001BB58,H28001BB88 -2800199C0:lA5:swipe|I53 -2800199D0:Mn4:H28001BBB8,H28001BBE8,H28001BBF8,H28001BC28 -2800199F8:Mn2:H28001BC58,H28001BC68 -280019A10:Mn3:H28001BC78,H28001BC88,H28001BC98 -280019A30:Mn3:H28001BCA8,H28001BCB8,H28001BCC8 -280019A50:lA5:ax.25|I93 -280019A60:Mn3:H28001BCD8,H28001BCE8,H28001BCF8 -280019A80:lAA:ipv6-nonxt|I59 -280019A90:lA3:pup|I12 -280019AA0:lI65|H280019AB0 -280019AB0:lA9:kryptolan|H280019AC0 -280019AC0:lA9:KRYPTOLAN|N -280019AD0:lA5:crudp|I127 -280019AE0:lA3:MUX|I18 -280019AF0:lA4:GMTP|I100 -280019B00:lI36|H280019B10 -280019B10:lA3:xtp|H280019B20 -280019B20:lA3:XTP|N -280019B30:lA4:crtp|I126 -280019B40:lA3:gre|I47 -280019B50:lI137|H280019B60 -280019B60:lAA:mpls-in-ip|H280019B70 -280019B70:lAA:MPLS-IN-IP|N -280019B80:lI4|H280019B90 -280019B90:lA7:ipencap|H280019BA0 -280019BA0:lA8:IP-ENCAP|N -280019BB0:lA7:xns-idp|I22 -280019BC0:lA3:ddp|I37 -280019BD0:lA9:IPV6-OPTS|I60 -280019BE0:lA5:AX.25|I93 -280019BF0:lI126|H280019C00 -280019C00:lA4:crtp|H280019C10 -280019C10:lA4:CRTP|N -280019C20:lA4:pnni|I102 -280019C30:lA7:ipencap|I4 -280019C40:lA4:gmtp|I100 -280019C50:lI136|H280019C60 -280019C60:lA7:udplite|H280019C70 -280019C70:lA7:UDPLite|N -280019C80:lAA:nsfnet-igp|I85 -280019C90:lA3:egp|I8 -280019CA0:lA3:SPS|I130 -280019CB0:lA5:CRUDP|I127 -280019CC0:lI25|H280019CD0 -280019CD0:lA6:leaf-1|H280019CE0 -280019CE0:lA6:LEAF-1|N -280019CF0:lA3:udp|I17 -280019D00:lA2:IL|I40 -280019D10:lA4:RSVP|I46 -280019D20:lA4:MICP|I95 -280019D30:lI39|H280019D40 -280019D40:lA4:tp++|H280019D50 -280019D50:lA4:TP++|N -280019D60:lA3:PGM|I113 -280019D70:lI109|H280019D80 -280019D80:lA3:snp|H280019D90 -280019D90:lA3:SNP|N -280019DA0:lA4:cftp|I62 -280019DB0:lA7:trunk-1|I23 -280019DC0:lA3:stp|I118 -280019DD0:lI95|H280019DE0 -280019DE0:lA4:micp|H280019DF0 -280019DF0:lA4:MICP|N -280019E00:lA4:irtp|I28 -280019E10:lI101|H280019E20 -280019E20:lA4:ifmp|H280019E30 -280019E30:lA4:IFMP|N -280019E40:lA3:uti|I120 -280019E50:lA4:SCTP|I132 -280019E60:lA4:fire|I125 -280019E70:lI130|H280019E80 -280019E80:lA3:sps|H280019E90 -280019E90:lA3:SPS|N -280019EA0:lA4:IPLT|I129 -280019EB0:lA9:ipv6-frag|I44 -280019EC0:lI131|H280019ED0 -280019ED0:lA4:pipe|H280019EE0 -280019EE0:lA4:PIPE|N -280019EF0:lA6:LEAF-1|I25 -280019F00:lI62|H280019F10 -280019F10:lA4:cftp|H280019F20 -280019F20:lA4:CFTP|N -280019F30:lA4:rsvp|I46 -280019F40:lA4:IDRP|I45 -280019F50:Mn2:H28001BD08,H28001BD38 -280019F68:lA2:ip|I0 -280019F78:lI141|H280019F88 -280019F88:lA4:wesp|H280019F98 -280019F98:lA4:WESP|N -280019FA8:lA4:IPIP|I94 -280019FB8:lI132|H280019FC8 -280019FC8:lA4:sctp|H280019FD8 -280019FD8:lA4:SCTP|N -280019FE8:lI43|H280019FF8 -280019FF8:lAA:ipv6-route|H28001A008 -28001A008:lAA:IPV6-ROUTE|N -28001A018:lA6:mobile|I55 -28001A028:lI105|H28001A038 -28001A038:lA4:scps|H28001A048 -28001A048:lA4:SCPS|N -28001A058:lI59|H28001A068 -28001A068:lAA:ipv6-nonxt|H28001A078 -28001A078:lAA:IPV6-NONXT|N -28001A088:lA3:A/N|I107 -28001A098:lA3:igp|I9 -28001A0A8:lA4:CFTP|I62 -28001A0B8:lA7:trunk-2|I24 -28001A0C8:Mn2:H28001BD48,H28001BD78 -28001A0E0:lI87|H28001A0F0 -28001A0F0:lA3:tcf|H28001A100 -28001A100:lA3:TCF|N -28001A110:lI51|H28001A120 -28001A120:lA2:ah|H28001A130 -28001A130:lA2:AH|N -28001A140:Mn1:H28001BDA8 -28001A150:lI110|H28001A160 -28001A160:lAB:compaq-peer|H28001A170 -28001A170:lAB:Compaq-Peer|N -28001A180:lA4:CARP|I112 -28001A190:lI1|H28001A1A0 -28001A1A0:lA4:icmp|H28001A1B0 -28001A1B0:lA4:ICMP|N -28001A1C0:lA3:HMP|I20 -28001A1D0:lI107|H28001A1E0 -28001A1E0:lA3:a/n|H28001A1F0 -28001A1F0:lA3:A/N|N -28001A200:lI128|H28001A210 -28001A210:lA8:sscopmce|H28001A220 -28001A220:lA8:SSCOPMCE|N -28001A230:lA6:scc-sp|I96 -28001A240:lA8:SSCOPMCE|I128 -28001A250:lI70|H28001A260 -28001A260:lA4:visa|H28001A270 -28001A270:lA4:VISA|N -28001A280:lA4:icmp|I1 -28001A290:lA6:iso-ip|I80 -28001A2A0:Mn2:H28001BDC0,H28001BDF0 -28001A2B8:lA3:XTP|I36 -28001A2C8:lI46|H28001A2D8 -28001A2D8:lA4:rsvp|H28001A2E8 -28001A2E8:lA4:RSVP|N -28001A2F8:lI77|H28001A308 -28001A308:lA6:sun-nd|H28001A318 -28001A318:lA6:SUN-ND|N -28001A328:lA3:snp|I109 -28001A338:lA4:NARP|I54 -28001A348:Mn2:H28001BE00,H28001BE30 -28001A360:lA4:iplt|I129 -28001A370:Mn2:H28001BE60,H28001BE70 -28001A388:lI10|H28001A398 -28001A398:lA7:bbn-rcc|H28001A3A8 -28001A3A8:lAB:BBN-RCC-MON|N -28001A3B8:lA9:kryptolan|I65 -28001A3C8:lA6:leaf-2|I26 -28001A3D8:lI124|H28001A3E8 -28001A3E8:lA4:isis|H28001A3F8 -28001A3F8:lA4:ISIS|N -28001A408:lI48|H28001A418 -28001A418:lA3:dsr|H28001A428 -28001A428:lA3:DSR|N -28001A438:lI103|H28001A448 -28001A448:lA3:pim|H28001A458 -28001A458:lA3:PIM|N -28001A468:lI7|H28001A478 -28001A478:lA3:cbt|H28001A488 -28001A488:lA3:CBT|N -28001A498:lA4:VMTP|I81 -28001A4A8:lI138|H28001A4B8 -28001A4B8:lA5:manet|H28001A4C8 -28001A4C8:lA5:MANET|N -28001A4D8:lA4:WESP|I141 -28001A4E8:lI71|H28001A4F8 -28001A4F8:lA4:ipcv|H28001A508 -28001A508:lA4:IPCV|N -28001A518:lA3:ggp|I3 -28001A528:lA4:tp++|I39 -28001A538:lA3:rdp|I27 -28001A548:lA3:IGP|I9 -28001A558:lI258|H28001A568 -28001A568:lA6:divert|H28001A578 -28001A578:lA6:DIVERT|N -28001A588:lA3:PTP|I123 -28001A598:lA6:wb-mon|I78 -28001A5A8:lI11|H28001A5B8 -28001A5B8:lA3:nvp|H28001A5C8 -28001A5C8:lA6:NVP-II|N -28001A5D8:lA5:argus|I13 -28001A5E8:lA4:xnet|I15 -28001A5F8:lI12|H28001A608 -28001A608:lA3:pup|H28001A618 -28001A618:lA3:PUP|N -28001A628:lA4:ifmp|I101 -28001A638:lA3:3pc|I34 -28001A648:lA6:DIVERT|I258 -28001A658:lA3:PUP|I12 -28001A668:lAF:mobility-header|I135 -28001A678:lA4:idpr|I35 -28001A688:lI28|H28001A698 -28001A698:lA4:irtp|H28001A6A8 -28001A6A8:lA4:IRTP|N -28001A6B8:lAB:secure-vmtp|I82 -28001A6C8:lA3:prm|I21 -28001A6D8:lA3:EGP|I8 -28001A6E8:lA3:cbt|I7 -28001A6F8:lI47|H28001A708 -28001A708:lA3:gre|H28001A718 -28001A718:lA3:GRE|N -28001A728:lAA:sprite-rpc|I90 -28001A738:lI89|H28001A748 -28001A748:lA4:ospf|H28001A758 -28001A758:lA7:OSPFIGP|N -28001A768:lI24|H28001A778 -28001A778:lA7:trunk-2|H28001A788 -28001A788:lA7:TRUNK-2|N -28001A798:lA2:IP|I0 -28001A7A8:lA4:ICMP|I1 -28001A7B8:lA5:MANET|I138 -28001A7C8:lI13|H28001A7D8 -28001A7D8:lA5:argus|H28001A7E8 -28001A7E8:lA5:ARGUS|N -28001A7F8:lA6:pfsync|I240 -28001A808:Mn2:H28001BE80,H28001BE90 -28001A820:lA6:SUN-ND|I77 -28001A830:lI94|H28001A840 -28001A840:lA4:ipip|H28001A850 -28001A850:lA4:IPIP|N -28001A860:lA3:tcf|I87 -28001A870:lI3|H28001A880 -28001A880:lA3:ggp|H28001A890 -28001A890:lA3:GGP|N -28001A8A0:lI18|H28001A8B0 -28001A8B0:lA3:mux|H28001A8C0 -28001A8C0:lA3:MUX|N -28001A8D0:lA4:l2tp|I115 -28001A8E0:lI113|H28001A8F0 -28001A8F0:lA3:pgm|H28001A900 -28001A900:lA3:PGM|N -28001A910:lA3:SMP|I121 -28001A920:lA8:wb-expak|I79 -28001A930:lA7:SAT-MON|I69 -28001A940:Mn2:H28001BEA0,H28001BEB0 -28001A958:Mn2:H28001BEC0,H28001BED0 -28001A970:lA9:KRYPTOLAN|I65 -28001A980:lA7:udplite|I136 -28001A990:lA3:DDP|I37 -28001A9A0:Mn2:H28001BEE0,H28001BEF0 -28001A9B8:lA3:TTP|I84 -28001A9C8:lI29|H28001A9D8 -28001A9D8:lA7:iso-tp4|H28001A9E8 -28001A9E8:lA7:ISO-TP4|N -28001A9F8:lA2:AH|I51 -28001AA08:lI72|H28001AA18 -28001AA18:lA4:cpnx|H28001AA28 -28001AA28:lA4:CPNX|N -28001AA38:lA4:LARP|I91 -28001AA48:lI53|H28001AA58 -28001AA58:lA5:swipe|H28001AA68 -28001AA68:lA5:SWIPE|N -28001AA78:lI135|H28001AA88 -28001AA88:lAF:mobility-header|H28001AA98 -28001AA98:lAF:Mobility-Header|N -28001AAA8:lI69|H28001AAB8 -28001AAB8:lA7:sat-mon|H28001AAC8 -28001AAC8:lA7:SAT-MON|N -28001AAD8:lI120|H28001AAE8 -28001AAE8:lA3:uti|H28001AAF8 -28001AAF8:lA3:UTI|N -28001AB08:lAA:IPV6-ROUTE|I43 -28001AB18:lA4:carp|I112 -28001AB28:lA7:UDPLite|I136 -28001AB38:lA4:ARIS|I104 -28001AB48:lAA:MPLS-IN-IP|I137 -28001AB58:lA7:XNS-IDP|I22 -28001AB68:lA3:sps|I130 -28001AB78:lA7:TRUNK-1|I23 -28001AB88:lA4:IATP|I117 -28001AB98:lA4:igmp|I2 -28001ABA8:lA3:ptp|I123 -28001ABB8:lI42|H28001ABC8 -28001ABC8:lA4:sdrp|H28001ABD8 -28001ABD8:lA4:SDRP|N -28001ABE8:Mn2:H28001BF00,H28001BF10 -28001AC00:lI76|H28001AC10 -28001AC10:lAA:br-sat-mon|H28001AC20 -28001AC20:lAA:BR-SAT-MON|N -28001AC30:lAA:IPV6-NONXT|I59 -28001AC40:Mn2:H28001BF20,H28001BF30 -28001AC58:lA4:L2TP|I115 -28001AC68:lA3:WSN|I74 -28001AC78:lA3:GRE|I47 -28001AC88:lA4:vrrp|I112 -28001AC98:lA6:divert|I258 -28001ACA8:lI98|H28001ACB8 -28001ACB8:lA5:encap|H28001ACC8 -28001ACC8:lA5:ENCAP|N -28001ACD8:lA6:i-nlsp|I52 -28001ACE8:lA4:sctp|I132 -28001ACF8:lA5:encap|I98 -28001AD08:lA4:visa|I70 -28001AD18:lI26|H28001AD28 -28001AD28:lA6:leaf-2|H28001AD38 -28001AD38:lA6:LEAF-2|N -28001AD48:lA4:pipe|I131 -28001AD58:Mn2:H28001BF60,H28001BF70 -28001AD70:Mn2:H28001BF80,H28001BF90 -28001AD88:lA2:SM|I122 -28001AD98:lA5:eigrp|I88 -28001ADA8:lAF:rsvp-e2e-ignore|I134 -28001ADB8:Mn2:H28001BFA0,H28001BFB0 -28001ADD0:lA3:GGP|I3 -28001ADE0:lI108|H28001ADF0 -28001ADF0:lA6:ipcomp|H28001AE00 -28001AE00:lA6:IPComp|N -28001AE10:lA4:micp|I95 -28001AE20:lA4:FIRE|I125 -28001AE30:lI133|H28001AE40 -28001AE40:lA2:fc|H28001AE50 -28001AE50:lA2:FC|N -28001AE60:lA3:ST2|I5 -28001AE70:Mn2:H28001BFC0,H28001BFF0 -28001AE88:lA6:NVP-II|I11 -28001AE98:lI44|H28001AEA8 -28001AEA8:lA9:ipv6-frag|H28001AEB8 -28001AEB8:lA9:IPV6-FRAG|N -28001AEC8:lI19|H28001AED8 -28001AED8:lA3:dcn|H28001AEE8 -28001AEE8:lA8:DCN-MEAS|N -28001AEF8:Mn2:H28001C000,H28001C010 -28001AF10:lA3:3PC|I34 -28001AF20:lI79|H28001AF30 -28001AF30:lA8:wb-expak|H28001AF40 -28001AF40:lA8:WB-EXPAK|N -28001AF50:lI0|H28001AF60 -28001AF60:lA2:ip|H28001AF70 -28001AF70:lA2:IP|N -28001AF80:lA9:sat-expak|I64 -28001AF90:lI100|H28001AFA0 -28001AFA0:lA4:gmtp|H28001AFB0 -28001AFB0:lA4:GMTP|N -28001AFC0:Mn2:H28001C040,H28001C070 -28001AFD8:lI139|H28001AFE8 -28001AFE8:lA3:hip|H28001AFF8 -28001AFF8:lA3:HIP|N -28001B008:lA4:rohc|I142 -28001B018:Mn2:H28001C080,H28001C090 -28001B030:Mn2:H28001C0A0,H28001C0B0 -28001B048:lI104|H28001B058 -28001B058:lA4:aris|H28001B068 -28001B068:lA4:ARIS|N -28001B078:lI60|H28001B088 -28001B088:lA9:ipv6-opts|H28001B098 -28001B098:lA9:IPV6-OPTS|N -28001B0A8:lA3:pgm|I113 -28001B0B8:lI33|H28001B0C8 -28001B0C8:lA4:dccp|H28001B0D8 -28001B0D8:lA4:DCCP|N -28001B0E8:lA5:emcon|I14 -28001B0F8:lA3:MTP|I92 -28001B108:lA4:ipv6|I41 -28001B118:lA8:WB-EXPAK|I79 -28001B128:Mn2:H28001C0E0,H28001C0F0 -28001B140:lI88|H28001B150 -28001B150:lA5:eigrp|H28001B160 -28001B160:lA5:EIGRP|N -28001B170:lI96|H28001B180 -28001B180:lA6:scc-sp|H28001B190 -28001B190:lA6:SCC-SP|N -28001B1A0:lA4:iatp|I117 -28001B1B0:lI21|H28001B1C0 -28001B1C0:lA3:prm|H28001B1D0 -28001B1D0:lA3:PRM|N -28001B1E0:lI73|H28001B1F0 -28001B1F0:lA4:cphb|H28001B200 -28001B200:lA4:CPHB|N -28001B210:lA4:PIPE|I131 -28001B220:lA5:CHAOS|I16 -28001B230:lA9:ipv6-opts|I60 -28001B240:lA7:ETHERIP|I97 -28001B250:lA7:etherip|I97 -28001B260:lA3:ttp|I84 -28001B270:lA5:vines|I83 -28001B280:lI121|H28001B290 -28001B290:lA3:smp|H28001B2A0 -28001B2A0:lA3:SMP|N -28001B2B0:lI58|H28001B2C0 -28001B2C0:lA9:ipv6-icmp|H28001B2D0 -28001B2D0:lA5:icmp6|H28001B2E0 -28001B2E0:lA9:IPV6-ICMP|N -28001B2F0:lI117|H28001B300 -28001B300:lA4:iatp|H28001B310 -28001B310:lA4:IATP|N -28001B320:lA4:SCPS|I105 -28001B330:lAB:BBN-RCC-MON|I10 -28001B340:lI20|H28001B350 -28001B350:lA3:hmp|H28001B360 -28001B360:lA3:HMP|N -28001B370:lA4:ISIS|I124 -28001B380:lA3:HIP|I139 -28001B390:lI17|H28001B3A0 -28001B3A0:lA3:udp|H28001B3B0 -28001B3B0:lA3:UDP|N -28001B3C0:lI82|H28001B3D0 -28001B3D0:lAB:secure-vmtp|H28001B3E0 -28001B3E0:lAB:SECURE-VMTP|N -28001B3F0:lA5:SHIM6|I140 -28001B400:lI74|H28001B410 -28001B410:lA3:wsn|H28001B420 -28001B420:lA3:WSN|N -28001B430:lA4:IPCV|I71 -28001B440:lA9:IPX-in-IP|I111 -28001B450:lA4:scps|I105 -28001B460:lI119|H28001B470 -28001B470:lA3:srp|H28001B480 -28001B480:lA3:SRP|N -28001B490:lA6:SCC-SP|I96 -28001B4A0:lI140|H28001B4B0 -28001B4B0:lA5:shim6|H28001B4C0 -28001B4C0:lA5:SHIM6|N -28001B4D0:lI90|H28001B4E0 -28001B4E0:lAA:sprite-rpc|H28001B4F0 -28001B4F0:lAA:Sprite-RPC|N -28001B500:lA3:dsr|I48 -28001B510:lI14|H28001B520 -28001B520:lA5:emcon|H28001B530 -28001B530:lA5:EMCON|N -28001B540:lA4:wesp|I141 -28001B550:lA6:NETBLT|I30 -28001B560:lA7:ISO-TP4|I29 -28001B570:lA3:esp|I50 -28001B580:lI5|H28001B590 -28001B590:lA3:st2|H28001B5A0 -28001B5A0:lA3:ST2|N -28001B5B0:lA3:srp|I119 -28001B5C0:lA5:EIGRP|I88 -28001B5D0:lA4:TP++|I39 -28001B5E0:lI67|H28001B5F0 -28001B5F0:lA4:ippc|H28001B600 -28001B600:lA4:IPPC|N -28001B610:lA9:ipx-in-ip|I111 -28001B620:lI102|H28001B630 -28001B630:lA4:pnni|H28001B640 -28001B640:lA4:PNNI|N -28001B650:lI55|H28001B660 -28001B660:lA6:mobile|H28001B670 -28001B670:lA6:MOBILE|N -28001B680:lI97|H28001B690 -28001B690:lA7:etherip|H28001B6A0 -28001B6A0:lA7:ETHERIP|N -28001B6B0:lA3:dcn|I19 -28001B6C0:lA4:CPHB|I73 -28001B6D0:lA2:il|I40 -28001B6E0:lI123|H28001B6F0 -28001B6F0:lA3:ptp|H28001B700 -28001B700:lA3:PTP|N -28001B710:lAA:Sprite-RPC|I90 -28001B720:lI125|H28001B730 -28001B730:lA4:fire|H28001B740 -28001B740:lA4:FIRE|N -28001B750:lA8:DCN-MEAS|I19 -28001B760:lAA:mpls-in-ip|I137 -28001B770:lI66|H28001B780 -28001B780:lA3:rvd|H28001B790 -28001B790:lA3:RVD|N -28001B7A0:lA4:CRTP|I126 -28001B7B0:lI91|H28001B7C0 -28001B7C0:lA4:larp|H28001B7D0 -28001B7D0:lA4:LARP|N -28001B7E0:lA7:sat-mon|I69 -28001B7F0:lI129|H28001B800 -28001B800:lA4:iplt|H28001B810 -28001B810:lA4:IPLT|N -28001B820:lA3:UDP|I17 -28001B830:lA2:sm|I122 -28001B840:lA5:SWIPE|I53 -28001B850:lA4:IPPC|I67 -28001B860:lI80|H28001B870 -28001B870:lA6:iso-ip|H28001B880 -28001B880:lA6:ISO-IP|N -28001B890:lI75|H28001B8A0 -28001B8A0:lA3:pvp|H28001B8B0 -28001B8B0:lA3:PVP|N -28001B8C0:lA3:STP|I118 -28001B8D0:Mn2:H28001C100,H28001C130 -28001B8E8:lA6:IPComp|I108 -28001B8F8:lA3:nvp|I11 -28001B908:lI41|H28001B918 -28001B918:lA4:ipv6|H28001B928 -28001B928:lA4:IPV6|N -28001B938:lI37|H28001B948 -28001B948:lA3:ddp|H28001B958 -28001B958:lA3:DDP|N -28001B968:lA4:CPNX|I72 -28001B978:Mn2:H28001C140,H28001C150 -28001B990:Mn2:H28001C180,H28001C190 -28001B9A8:lA4:ipip|I94 -28001B9B8:lI27|H28001B9C8 -28001B9C8:lA3:rdp|H28001B9D8 -28001B9D8:lA3:RDP|N -28001B9E8:lA3:PIM|I103 -28001B9F8:lA4:isis|I124 -28001BA08:lA5:icmp6|I58 -28001BA18:lI240|H28001BA28 -28001BA28:lA6:pfsync|H28001BA38 -28001BA38:lA6:PFSYNC|N -28001BA48:lA3:DSR|I48 -28001BA58:lI83|H28001BA68 -28001BA68:lA5:vines|H28001BA78 -28001BA78:lA5:VINES|N -28001BA88:lI34|H28001BA98 -28001BA98:lA3:3pc|H28001BAA8 -28001BAA8:lA3:3PC|N -28001BAB8:lA2:FC|I133 -28001BAC8:lI86|H28001BAD8 -28001BAD8:lA3:dgp|H28001BAE8 -28001BAE8:lA3:DGP|N -28001BAF8:lA4:narp|I54 -28001BB08:lA6:netblt|I30 -28001BB18:lI16|H28001BB28 -28001BB28:lA5:chaos|H28001BB38 -28001BB38:lA5:CHAOS|N -28001BB48:lA4:SDRP|I42 -28001BB58:lI31|H28001BB68 -28001BB68:lA7:mfe-nsp|H28001BB78 -28001BB78:lA7:MFE-NSP|N -28001BB88:lI15|H28001BB98 -28001BB98:lA4:xnet|H28001BBA8 -28001BBA8:lA4:XNET|N -28001BBB8:lI78|H28001BBC8 -28001BBC8:lA6:wb-mon|H28001BBD8 -28001BBD8:lA6:WB-MON|N -28001BBE8:lA3:PVP|I75 -28001BBF8:lI93|H28001BC08 -28001BC08:lA5:ax.25|H28001BC18 -28001BC18:lA5:AX.25|N -28001BC28:lI122|H28001BC38 -28001BC38:lA2:sm|H28001BC48 -28001BC48:lA2:SM|N -28001BC58:lA4:ipcv|I71 -28001BC68:lAA:NSFNET-IGP|I85 -28001BC78:lA5:ARGUS|I13 -28001BC88:lA4:IFMP|I101 -28001BC98:lA3:wsn|I74 -28001BCA8:lA3:a/n|I107 -28001BCB8:lA9:IPV6-FRAG|I44 -28001BCC8:lA4:aris|I104 -28001BCD8:lA3:DDX|I116 -28001BCE8:lA3:RDP|I27 -28001BCF8:lA3:bna|I49 -28001BD08:lI54|H28001BD18 -28001BD18:lA4:narp|H28001BD28 -28001BD28:lA4:NARP|N -28001BD38:lA4:ospf|I89 -28001BD48:lI85|H28001BD58 -28001BD58:lAA:nsfnet-igp|H28001BD68 -28001BD68:lAA:NSFNET-IGP|N -28001BD78:lI40|H28001BD88 -28001BD88:lA2:il|H28001BD98 -28001BD98:lA2:IL|N -28001BDA8:Mn2:H28001C1A0,H28001C1B0 -28001BDC0:lI127|H28001BDD0 -28001BDD0:lA5:crudp|H28001BDE0 -28001BDE0:lA5:CRUDP|N -28001BDF0:lA3:pim|I103 -28001BE00:lI92|H28001BE10 -28001BE10:lA3:mtp|H28001BE20 -28001BE20:lA3:MTP|N -28001BE30:lI23|H28001BE40 -28001BE40:lA7:trunk-1|H28001BE50 -28001BE50:lA7:TRUNK-1|N -28001BE60:lAA:ipv6-route|I43 -28001BE70:lA7:TRUNK-2|I24 -28001BE80:lA6:sun-nd|I77 -28001BE90:lA4:dccp|I33 -28001BEA0:lA3:SNP|I109 -28001BEB0:lA3:ESP|I50 -28001BEC0:lA3:hip|I139 -28001BED0:lA9:SAT-EXPAK|I64 -28001BEE0:lA6:ISO-IP|I80 -28001BEF0:lA4:cphb|I73 -28001BF00:lA3:SRP|I119 -28001BF10:lAF:RSVP-E2E-IGNORE|I134 -28001BF20:lA6:WB-MON|I78 -28001BF30:lI111|H28001BF40 -28001BF40:lA9:ipx-in-ip|H28001BF50 -28001BF50:lA9:IPX-in-IP|N -28001BF60:lA8:IP-ENCAP|I4 -28001BF70:lA8:sscopmce|I128 -28001BF80:lA3:st2|I5 -28001BF90:lA4:ippc|I67 -28001BFA0:lA4:TLSP|I56 -28001BFB0:lA9:IDPR-CMTP|I38 -28001BFC0:lI22|H28001BFD0 -28001BFD0:lA7:xns-idp|H28001BFE0 -28001BFE0:lA7:XNS-IDP|N -28001BFF0:lA4:SKIP|I57 -28001C000:lA4:cpnx|I72 -28001C010:lI84|H28001C020 -28001C020:lA3:ttp|H28001C030 -28001C030:lA3:TTP|N -28001C040:lI35|H28001C050 -28001C050:lA4:idpr|H28001C060 -28001C060:lA4:IDPR|N -28001C070:lA5:shim6|I140 -28001C080:lA9:ipv6-icmp|I58 -28001C090:lA4:DCCP|I33 -28001C0A0:lA6:LEAF-2|I26 -28001C0B0:lI57|H28001C0C0 -28001C0C0:lA4:skip|H28001C0D0 -28001C0D0:lA4:SKIP|N -28001C0E0:lA6:PFSYNC|I240 -28001C0F0:lA3:PRM|I21 -28001C100:lI81|H28001C110 -28001C110:lA4:vmtp|H28001C120 -28001C120:lA4:VMTP|N -28001C130:lA3:qnx|I106 -28001C140:lA9:merit-inp|I32 -28001C150:lI115|H28001C160 -28001C160:lA4:l2tp|H28001C170 -28001C170:lA4:L2TP|N -28001C180:lA3:dgp|I86 -28001C190:lA4:XNET|I15 -28001C1A0:lA2:fc|I133 -28001C1B0:lI8|H28001C1C0 -28001C1C0:lA3:egp|H28001C1D0 -28001C1D0:lA3:EGP|N -2800BB848:t2:H2800BB860,I23 -2800BB860:t2:AD:logger_config,AA:ssl_logger -28001F238:t2:H28001F250,H28001F268 -28001F250:t2:AB:prim_socket,A9:msg_flags -28001F268:MfB:H28001F2D8:I0,I16,I4,I0,I0,I32,I8,I0,I524288,I1,I2 -28001F2D8:tB:A4:more,A5:trunc,A9:dontroute,AC:cmsg_cloexec,A7:confirm,A6:ctrunc,A3:eor,A8:errqueue,A8:nosignal,A3:oob,A4:peek -280068258:t2:H280068270,H280068288 -280068270:t2:AC:erl_features,AD:feature_specs -280068288:Mf1:H2800682A8:H2800682B8 -2800682A8:t1:AA:maybe_expr -2800682B8:Mf6:H280068300:H280068AD8,AC:experimental,A9:extension,H2800688B8,H280068348,I25 -280068300:t6:A5:short,A6:status,A4:type,AB:description,A8:keywords,AC:experimental -280068338:lA4:else|N -280068348:lA5:maybe|H280068338 -280068358:lI46|N -280068368:lI103|H280068358 -280068378:lI110|H280068368 -280068388:lI105|H280068378 -280068398:lI108|H280068388 -2800683A8:lI100|H280068398 -2800683B8:lI110|H2800683A8 -2800683C8:lI97|H2800683B8 -2800683D8:lI104|H2800683C8 -2800683E8:lI32|H2800683D8 -2800683F8:lI114|H2800683E8 -280068408:lI111|H2800683F8 -280068418:lI114|H280068408 -280068428:lI114|H280068418 -280068438:lI101|H280068428 -280068448:lI32|H280068438 -280068458:lI100|H280068448 -280068468:lI101|H280068458 -280068478:lI115|H280068468 -280068488:lI97|H280068478 -280068498:lI98|H280068488 -2800684A8:lI32|H280068498 -2800684B8:lI101|H2800684A8 -2800684C8:lI117|H2800684B8 -2800684D8:lI108|H2800684C8 -2800684E8:lI97|H2800684D8 -2800684F8:lI86|H2800684E8 -280068508:lI32|H2800684F8 -280068518:lI45|H280068508 -280068528:lI45|H280068518 -280068538:lI32|H280068528 -280068548:lI57|H280068538 -280068558:lI52|H280068548 -280068568:lI80|H280068558 -280068578:lI69|H280068568 -280068588:lI69|H280068578 -280068598:lI32|H280068588 -2800685A8:lI110|H280068598 -2800685B8:lI105|H2800685A8 -2800685C8:lI32|H2800685B8 -2800685D8:lI100|H2800685C8 -2800685E8:lI101|H2800685D8 -2800685F8:lI115|H2800685E8 -280068608:lI111|H2800685F8 -280068618:lI112|H280068608 -280068628:lI111|H280068618 -280068638:lI114|H280068628 -280068648:lI112|H280068638 -280068658:lI32|H280068648 -280068668:lI110|H280068658 -280068678:lI111|H280068668 -280068688:lI105|H280068678 -280068698:lI115|H280068688 -2800686A8:lI115|H280068698 -2800686B8:lI101|H2800686A8 -2800686C8:lI114|H2800686B8 -2800686D8:lI112|H2800686C8 -2800686E8:lI120|H2800686D8 -2800686F8:lI101|H2800686E8 -280068708:lI32|H2800686F8 -280068718:lI101|H280068708 -280068728:lI98|H280068718 -280068738:lI121|H280068728 -280068748:lI97|H280068738 -280068758:lI109|H280068748 -280068768:lI32|H280068758 -280068778:lI101|H280068768 -280068788:lI104|H280068778 -280068798:lI116|H280068788 -2800687A8:lI32|H280068798 -2800687B8:lI102|H2800687A8 -2800687C8:lI111|H2800687B8 -2800687D8:lI32|H2800687C8 -2800687E8:lI110|H2800687D8 -2800687F8:lI111|H2800687E8 -280068808:lI105|H2800687F8 -280068818:lI116|H280068808 -280068828:lI97|H280068818 -280068838:lI116|H280068828 -280068848:lI110|H280068838 -280068858:lI101|H280068848 -280068868:lI109|H280068858 -280068878:lI101|H280068868 -280068888:lI108|H280068878 -280068898:lI112|H280068888 -2800688A8:lI109|H280068898 -2800688B8:lI73|H2800688A8 -2800688C8:lI41|N -2800688D8:lI57|H2800688C8 -2800688E8:lI52|H2800688D8 -2800688F8:lI80|H2800688E8 -280068908:lI69|H2800688F8 -280068918:lI69|H280068908 -280068928:lI40|H280068918 -280068938:lI32|H280068928 -280068948:lI103|H280068938 -280068958:lI110|H280068948 -280068968:lI105|H280068958 -280068978:lI108|H280068968 -280068988:lI100|H280068978 -280068998:lI110|H280068988 -2800689A8:lI97|H280068998 -2800689B8:lI104|H2800689A8 -2800689C8:lI32|H2800689B8 -2800689D8:lI114|H2800689C8 -2800689E8:lI111|H2800689D8 -2800689F8:lI114|H2800689E8 -280068A08:lI114|H2800689F8 -280068A18:lI101|H280068A08 -280068A28:lI32|H280068A18 -280068A38:lI100|H280068A28 -280068A48:lI101|H280068A38 -280068A58:lI115|H280068A48 -280068A68:lI97|H280068A58 -280068A78:lI98|H280068A68 -280068A88:lI32|H280068A78 -280068A98:lI101|H280068A88 -280068AA8:lI117|H280068A98 -280068AB8:lI108|H280068AA8 -280068AC8:lI97|H280068AB8 -280068AD8:lI86|H280068AC8 -280068B48:t2:H280068B60,N -280068B60:t2:AC:erl_features,A8:keywords -28001EEA8:t2:H28001EEC0,H28001EED8 -28001EEC0:t2:AB:prim_socket,AE:ioctl_requests -28001EED8:MfC:H28001EF50:I2149607696,I3223349537,I3223349539,I3222038820,I3223349538,I3223349521,I3223349555,I3223349541,I2149607692,I2149607699,I2149607694,I2149607732 -28001EF50:tC:A8:sifflags,A7:gifaddr,AA:gifbrdaddr,A7:gifconf,AA:gifdstaddr,A8:gifflags,A6:gifmtu,AA:gifnetmask,A7:sifaddr,AA:sifbrdaddr,AA:sifdstaddr,A6:sifmtu -2800BB7E8:t2:H2800BB800,I7 -2800BB800:t2:AD:logger_config,H2800BB818 -2800BB818:t2:A10:$handler_config$,AB:ssl_handler -2800BB7A0:t2:H2800BB7B8,A5:async -2800BB7B8:t2:AA:logger_olp,A18:logger_std_h_ssl_handler -2800711B0:t2:A12:rex_nodes_observer,H2800711C8 -2800711C8:E23:g1oAA3cNbm9ub2RlQG5vaG9zdAAAAAAAALAE+vYAAd/g02c= -28001EFD0:t2:H28001EFE8,H28001F000 -28001EFE8:t2:AB:prim_socket,AB:ioctl_flags -28001F000:Mf20:H28001F118:I0,I64,I4,I2,I8,I1,I32768,I0,I512,I0,I0,I0,I0,I0,I0,I0,I4096,I8192,I16384,I0,I0,I128,I32,I1024,I16,I0,I0,I256,I0,I2048,I0,I0 -28001F118:t20:A7:monitor,A7:running,A5:debug,A9:broadcast,A8:loopback,A2:up,A9:multicast,A7:nogroup,A8:allmulti,A9:automedia,AA:cantconfig,A7:dormant,A5:dying,A7:dynamic,A4:echo,AA:knowsepoch,A5:link0,A5:link1,A5:link2,A8:lower_up,A6:master,A5:noarp,AA:notrailers,A7:oactive,AB:pointopoint,A7:portsel,A8:ppromisc,A7:promisc,A8:renaming,A7:simplex,A5:slave,A9:staticarp -28005B250:t2:H28005B268,I5 -28005B268:t2:AD:logger_config,A10:$primary_config$ -28006A4A0:t2:H28006A4B8,I5 -28006A4B8:t2:AD:logger_config,A11:supervisor_bridge -28008F5B0:t2:H28008F5C8,A5:async -28008F5C8:t2:AA:logger_olp,AC:logger_proxy -280068BD8:t2:H280068BF0,I5 -280068BF0:t2:AD:logger_config,AA:supervisor -280068B90:t2:H280068BA8,A4:true -280068BA8:t2:AC:erl_features,A9:init_done -280068B00:t2:H280068B18,N -280068B18:t2:AC:erl_features,A10:enabled_features -28005B298:t2:H28005B2B0,I5 -28005B2B0:t2:AD:logger_config,A16:application_controller -=binary:1309301C0 -9C:XlsbwptdW1tcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcZFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxkXSsoPzo7Wy1hLXpBLVpcZFwvIyYuOj0/JUB+X10qKSopPwcpfCg/Oig/OlxkezEsNH0oPzo7XGR7MCw0fSkqKT9bXGRBLVBSLVRaY2YtbnEtdXk9Pjx+XSkp -=binary:130931BD0 -15E:RVJDUF4BAAAQCAAAAQAAAP//////////AAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMBGhtuAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAABuAAAAAAgDAIgAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAABigwCNgwCHkoMALpKDACcdO24AAAAAaOD/p////4f+//9HAAAAAAAAAAAAAAAAAAAAAGR5ACd3AFBuAAAAAAAA/wP+//8H/v//BwAAAAAAAAAAAAAAAAAAAABrkoMAJx07bgAAAABo4P+n////h/7//0cAAAAAAAAAAAAAAAAAAAAAYnkAJ3gAfh0HeACHdwBDgwA9koMAFQdbAAMHkoMACR07WwAEB3kACXgAFW4AAAAAAAD/c/7/HQTIfz5CAAAAAAAAAAAAAAAAAAAAAHgAPXgA0HgBGgA= -=atoms -glee_unit_assert_match -glee_unit_assert_equal -glee_unit_assert_not_equal -expected -'-erlang_error_to_unified/3-fun-0-' -'-format_reason/4-fun-0-' -'-format_reason/4-fun-1-' -'-format_reason/4-fun-2-' -'-format_reason/4-fun-3-' -'-format_reason/4-fun-4-' -'-format_reason/4-fun-5-' -module_and_test_run -'-create_test_report/1-fun-0-' -'-create_test_report/1-fun-1-' -'-create_test_report/1-fun-2-' -'-create_test_report/1-fun-3-' -'-create_test_report/1-fun-4-' -'-create_test_report/1-fun-5-' -'-create_test_report/1-fun-6-' -align_table -'showtime@internal@reports@table' -ignored_style -failed_style -passed_style -function_style -error_style -align_left_overflow -stacktrace_style -align_right -align_left -content -styled_content -format_reason -got_highlight -expected_highlight -'showtime@internal@reports@compare' -not_style -'showtime@internal@reports@styles' -gleam_error_to_unified -unified_error -erlang_error_to_unified -'-part1/1-fun-2-' -'-find_best_joker_substitution/1-fun-0-' -'-find_best_joker_substitution/1-fun-1-' -'-part2/1-fun-0-' -'-part2/1-fun-2-' -get_input -get_part -find_best_joker_substitution -compare_hands -compare_top_card -classify_hand -card_counts -hand -parse_hand -card_rank -two_pair -three_of_a_kind -one_pair -high_card -full_house -four_of_a_kind -five_of_a_kind -hand_rank -be_false_meta -be_false -be_true_meta -be_true -fail_meta -be_error_meta -be_error -be_ok_meta -be_ok -not_equal_meta -equal_meta -evaluate -'-run_test/4-fun-0-' -'-run_test/4-fun-1-' -reason_line -expression -'-run_test/4-fun-2-' -trace_module -'-run_test/4-fun-3-' -'-map_extra_info_list/1-fun-0-' -num -arg_list -map_arity -map_extra_info_list -erlang_exception -trace_list -erlang_error -generic_exception -gleam_assert -not_eq -assert_equal -assert_match -assert_not_equal -assertNotEqual -assertMatch -assertEqual -test_function_return -test -capture_done -stop_output_capture -capture_output -start_output_capture -'-run_test_suite/4-fun-0-' -showtime_ffi -run_test -example -part1 -'-part1_test/0-fun-0-' -part2 -'-part2_test/0-fun-0-' -part2_test -'showtime@tests@should' -part1_test -'-optional/1-fun-0-' -'-any/1-fun-0-' -'-decode1/2-fun-0-' -'-push_path/2-fun-0-' -'-result/2-fun-3-' -'-result/2-fun-2-' -'-result/2-fun-1-' -'-result/2-fun-0-' -'-result/2-fun-4-' -'-result/2-fun-5-' -'-list/1-fun-0-' -'-list/1-fun-1-' -'-list/1-fun-2-' -'-map_errors/2-fun-0-' -'-decode_string/1-fun-0-' -'-decode_string/1-fun-1-' -'-field/2-fun-0-' -'-field/2-fun-1-' -'-field/2-fun-2-' -'-optional_field/2-fun-0-' -'-optional_field/2-fun-1-' -'-optional_field/2-fun-2-' -'-element/2-fun-0-' -'-element/2-fun-1-' -'-element/2-fun-2-' -'-element/2-fun-3-' -'-tuple_errors/2-fun-0-' -'-tuple2/2-fun-0-' -'-tuple2/2-fun-1-' -'-tuple3/3-fun-0-' -'-tuple3/3-fun-1-' -'-tuple4/4-fun-0-' -'-tuple4/4-fun-1-' -'-tuple5/5-fun-0-' -'-tuple5/5-fun-1-' -'-tuple6/6-fun-0-' -'-tuple6/6-fun-1-' -'-dict/2-fun-4-' -'-dict/2-fun-2-' -'-dict/2-fun-1-' -'-dict/2-fun-3-' -'-dict/2-fun-5-' -'-dict/2-fun-0-' -'-dict/2-fun-6-' -'-dict/2-fun-7-' -'-decode2/3-fun-0-' -'-decode3/4-fun-0-' -'-decode4/5-fun-0-' -'-decode5/6-fun-0-' -'-decode6/7-fun-0-' -'-decode7/8-fun-0-' -'-decode8/9-fun-0-' -'-decode9/10-fun-0-' -decode9 -decode8 -decode7 -decode6 -decode5 -decode4 -decode3 -decode2 -tuple6 -tuple5 -tuple4 -tuple3 -tuple2 -tuple_errors -optional_field -decode_string -map_errors -push_path -decode1 -all_errors -at_least_decode_tuple_error -optional -shallow_list -put_expected -bit_string -bit_array -'-do_wildcard/3-lc$^0/1-0-' -'-do_wildcard_4/3-lc$^1/1-1-' -'-do_wildcard_4/3-lc$^0/1-0-' -'-compile_alt/2-lc$^0/1-0-' -'-keep_dir_search_rules/1-lc$^0/1-0-' -'-keep_suffix_search_rules/1-lc$^0/1-0-' -'-add_local_search/1-fun-0-' -climb -safe_relative_path_1 -find_regular_file -try_dir_rule -try_dir_rules -add_local_search -try_suffix_rules -find_file -asn1_source_search_rules -c_source_search_rules -erl_source_search_rules -basic_source_search_rules -default_search_rules -source_search_rules -get_search_rules -keep_suffix_search_rules -keep_dir_search_rules -eval_list_dir -eval_read_link_info -eval_read_file_info -do_exists -wrap_escapes -convert_escapes -compile_alt -compile_range -compile_charset1 -compile_charset -missing_delimiter -escaped -compile_part_to_sep -compile_part -compile_join -compile_wildcard_3 -is_literal_pattern -compile_wildcard_2 -cwd -compiled_wildcard -compile_wildcard -do_list_dir -do_alt -do_star -do_double_star -prepare_base -will_always_match -star -question -alt -match_part -do_wildcard_4 -double_star -do_wildcard_3 -do_wildcard_2 -do_wildcard_1 -do_wildcard -do_file_size -do_last_modified -do_fold_files2 -do_fold_files1 -do_fold_files -do_is_regular -do_is_file -do_is_dir -file_size -last_modified -fold_files -is_regular -badpattern -'-do_all/2-fun-0-' -'-do_values/2-fun-0-' -do_values -to_result -is_none -is_some -do_all -panic -not_utf8 -'-do_copy_directory/2-fun-1-' -'-do_copy_directory/2-fun-0-' -'-do_copy_directory/2-fun-2-' -'-do_copy_directory/2-fun-3-' -'-get_files/1-fun-0-' -'-get_files/1-fun-3-' -'-get_files/1-fun-5-' -'-copy_directory/2-fun-0-' -'-rename_directory/2-fun-0-' -rename_file -copy_file -rename_directory -copy_directory -create_dir_all -create_directory_all -get_files -do_copy_directory -create_file -create_directory -append_bits -write_bits -read_bits -cast_error -'gleam@bit_array' -do_read -do_write -simplifile_erl -do_append -start_test -completed_test_run -ongoing_test_run -end_test -'-collect_modules_in_folder/3-fun-0-' -'-collect_modules_in_folder/3-fun-1-' -test_module -'-collect_modules_in_folder/3-fun-2-' -'-collect_modules_in_folder/3-fun-3-' -'-collect_modules_in_folder/3-fun-4-' -'-collect_modules_in_folder/3-fun-5-' -'-collect_test_functions/1-fun-0-' -'-collect_test_functions/1-fun-1-' -'-collect_test_functions/1-fun-2-' -test_function -'-collect_test_functions/1-fun-3-' -test_suite -unsafe_coerce -read_directory -collect_modules_in_folder -get_module_prefix -end_test_suite -start_test_suite -'-start/5-fun-0-' -'-start/5-fun-1-' -'-start/5-fun-2-' -'-debug_cmd/2-lc$^0/1-0-' -'-get_log/1-lc$^0/1-0-' -'-nlog_new/2-fun-0-' -nlog_get -nlog_put -nlog_new -print_log -get_debug2 -remove_debug -install_debug -stat -no_statistics -start_time -current_time -messages_in -messages_out -get_stat -init_stat -do_change_code -unknown_debug -debug_cmd -do_replace_state -callback_failed -do_get_state -suspend_loop_hib -terminating -send_system_msg -install -no_debug -log_to_file -replace_state -failed_to_connect -local_node_is_not_alive -atom_not_loaded -'-list_directory/1-lc$^0/1-0-' -'-get_all_env/0-fun-0-' -'-map_selector/2-fun-0-' -'-map_selector/2-fun-1-' -process_down -selector -free_bsd -windows_nt -os_family -recursive_delete -delete_directory -list_directory -make_directory -delete_file -append_file -posix_result -link_info -exdev -etxtbsy -estale -esrch -espipe -erofs -erange -epipe -eperm -eopnotsupp -enotblk -enosys -enostr -enosr -enospc -enomem -enolink -enolck -enodev -enobufs -enfile -emultihop -emlink -eloop -eisdir -eio -eintr -eftype -efbig -eexist -edquot -edeadlock -edeadlk -ebadmsg -eacces -no_access -file_info_result -unknown_application -errored -thrown -classify -atom_from_dynamic -atom_from_string -call_timeout -exit_message -'-selecting_trapped_exits/2-fun-0-' -'-selecting/3-fun-0-' -'-receive/2-fun-0-' -'-selecting_record2/3-fun-0-' -'-selecting_record3/3-fun-0-' -'-selecting_record4/3-fun-0-' -'-selecting_record5/3-fun-0-' -'-selecting_record6/3-fun-0-' -'-selecting_record7/3-fun-0-' -'-selecting_record8/3-fun-0-' -'-try_call/3-fun-0-' -callee_down -'-try_call/3-fun-1-' -process_named -named -unregister_process -register_process -trap_exits -send_abnormal_exit -send_exit -timer_not_found -try_call -demonitor_process -process_monitor -sleep_forever -anything -selecting_record8 -selecting_record7 -selecting_record6 -selecting_record5 -selecting_record4 -selecting_record2 -insert_selector_handler -selecting_trapped_exits -flush_messages -select_forever -subject -init_timeout -convert_system_message -gleam_otp_external -'-receive_message/1-fun-0-' -'-init_selector/2-fun-0-' -'-init_selector/2-fun-1-' -'-start_spec/1-fun-0-' -'-start_spec/1-fun-1-' -'-start_spec/1-fun-2-' -init_failed -init_crashed -selecting_process_down -monitor_process -to_erlang_start_result -abnormal -failed -subject_owner -ready -initialise_actor -map_selector -init_selector -status_info -from -'gleam@dynamic' -process_status_info -merge_selector -selecting_anything -receive_message -selecting_record3 -selecting_system_messages -exit_process -with_selector -create_test_report -'showtime@internal@reports@formatter' -'showtime@internal@common@common_event_handler' -'-start/0-fun-1-' -'-start/0-fun-2-' -event_handler_message -'-start/0-fun-3-' -selecting -new_selector -new_subject -'gleam@erlang@process' -'gleam@otp@actor' -is_equal -prepend_builder -'-pretty_print_cause/1-fun-0-' -line_print -pretty_print_cause -not_assigned -surrogate -spacing_combining -enclosing -non_spacing -decimal -letter -connector -dash -punctuation -currency -paragraph -space -separator -noBreak -fraction -vertical -small -medial -isolated -wide -narrow -font -square -circle -'-inlined-class/1-' -'-canonical_order_2/2-lc$^0/1-0-' -is_wide_cp -subcat_letter -zs -zp -zl -so -sk -sc -ps -po -pi -pf -pe -pd -pc -mn -me -lu -lo -ll -cs -co -cn -cf -cc -cat_translate -unicode_table -case_table -nolist -compose_pair -gc_h_lv_lvt -gc_h_T -gc_h_V -gc_h_L -gc_regional -is_ext_pict -gc_ext_pict_zwj -gc_ext_pict -zwj -is_extend -gc_extend2 -gc_extend -is_control -gc_prepend -gc_1 -cp_no_binl -binary_found -cp_no_bin -cpl_1_cont3 -cpl_1_cont2 -cpl_1_cont -cpl_cont3 -cpl_cont2 -cpl_cont -cpl -is_whitespace -compose_compat_many -compose_compat -compose_compat_0 -compose_many -decompose_compat_1 -decompose_compat -canonical_order_2 -canonical_order_1 -canonical_order -decompose_1 -decompose -lookup_category -spec_version -lower -get_case -compat -ccc -'-inlined-rev/1-' -'-inlined-append/2-' -'-titlecase/1-lbc$^0/2-0-' -'-to_lower/1-lc$^0/1-0-' -'-to_upper/1-lc$^0/1-0-' -'-join/2-lc$^0/1-0-' -to_upper_char -to_lower_char -sub_string -centre -r_pad -l_pad -strip_right -strip_left -s_word -sub_word -w_count -words -copies -tokens_multiple_2 -tokens_multiple_1 -tokens_single_2 -tokens_single_1 -substr2 -substr1 -cspan -span -l_prefix -rstr -str -rchr -bin_search_str_2 -bin_search_str_1 -bin_search_str -bin_search_inv_n -bin_search_inv_1 -bin_search_inv -bin_search_loop -bin_pattern -search_cp -search_pattern -bin_search -cp_prefix_1 -cp_prefix -add_non_empty -find_r -find_l -lexeme_skip -nth_lexeme_m -lexeme_pick -lexemes_m -prefix_1 -take_tc -take_t -take_lc -take_l -trim_t -trim_ts -trim_l -trim_ls -casefold_bin -casefold_list -lowercase_bin -lowercase_list -uppercase_bin -uppercase_list -slice_bin -slice_list -slice_trail -slice_lb -slice_l -slice_l0 -reverse_b -reverse_1 -equal_norm_nocase -equal_norm -equal_nocase -equal_1 -length_b -length_1 -cp -next_codepoint -nth_lexeme -to_number -to_integer -casefold -titlecase -whitespace -split_string -not_a_utf8_string -'-decode_option/2-fun-0-' -'-compile_regex/2-lc$^0/1-0-' -'-regex_matches/2-fun-0-' -'-regex_scan/2-fun-0-' -'-parse_query/1-fun-0-' -'-inspect/1-fun-4-' -'-inspect/1-lc$^1/1-1-' -'-inspect/1-lc$^0/1-0-' -base16_decode -inspect_maybe_utf8_string -append_segment -inspect_bit_array -improper -inspect_list -inspect_maybe_gleam_atom -proper -println_error -maps_get_or -maps_get_optional -check_utf8 -is_hex_digit -percent_ok -percent_decode -percent_encode -dissect_query -wrap_list -base_decode64 -regex_scan -regex_matches -regex_submatches -regex_split -regex_check -compile_error -compile_regex -bit_array_int_from_u32 -bit_array_int_to_u32 -bit_array_slice -bit_array_concat -string_invalid_utf8 -string_pad -decode_result -decode_option -decode_tuple6 -decode_tuple5 -decode_tuple4 -decode_tuple3 -decode_tuple2 -decode_tuple -tuple_get -size_of_tuple -decode_field -decode_list -decode_bool -decode_float -decode_int -decode_bit_array -decode_map -classify_dynamic -decode_error -decode_error_msg -iodata_append -capitalise -to_option -utf_codepoint_to_int -utf_codepoint -utf_codepoint_list_to_string -from_utf_codepoints -to_utf_codepoints -do_to_utf_codepoints -do_to_utf_codepoints_impl -do_to_graphemes -string_pop_grapheme -pop_grapheme -trim_right -do_trim_right -trim_left -do_trim_left -do_trim -pad_left -padding -do_join -'gleam@iterator' -do_split_once -string_ends_with -ends_with -string_starts_with -contains_string -drop_right -crop_string -crop -less_than -from_string -do_reverse -'-compose/2-fun-0-' -'-curry2/1-fun-0-' -'-curry2/1-fun-1-' -'-curry3/1-fun-0-' -'-curry3/1-fun-1-' -'-curry3/1-fun-2-' -'-curry4/1-fun-0-' -'-curry4/1-fun-1-' -'-curry4/1-fun-2-' -'-curry4/1-fun-3-' -'-curry5/1-fun-0-' -'-curry5/1-fun-1-' -'-curry5/1-fun-2-' -'-curry5/1-fun-3-' -'-curry5/1-fun-4-' -'-curry6/1-fun-0-' -'-curry6/1-fun-1-' -'-curry6/1-fun-2-' -'-curry6/1-fun-3-' -'-curry6/1-fun-4-' -'-curry6/1-fun-5-' -'-flip/1-fun-0-' -'-constant/1-fun-0-' -apply3 -apply2 -apply1 -tap -identity -flip -curry6 -curry5 -curry4 -curry3 -curry2 -compose -'-nil_error/1-fun-0-' -'-all/1-fun-0-' -'-values/1-fun-0-' -try_recover -lazy_or -nil_error -unwrap_both -unwrap_error -is_error -loosely_equals -loosely_compare -ceiling -float_to_string -parse_float -invalid_base -bitwise_shift_right -bitwise_shift_left -bitwise_exclusive_or -bitwise_or -bitwise_not -bitwise_and -floor_divide -modulo -remainder -undigits -do_undigits -digits -do_digits -do_product -do_sum -negate -is_odd -is_even -clamp -square_root -to_base36 -to_base8 -to_base2 -to_base_string -int_from_base_string -base_parse -parse_int -absolute_value -'-hex_string_to_int/1-fun-0-' -power -'-hex_string_to_int/1-fun-1-' -'-hex_string_to_int/1-fun-2-' -'-rgba_to_hsla/4-fun-0-' -'-rgba_to_hsla/4-fun-1-' -'-from_rgb255/3-fun-0-' -'-from_rgb255/3-fun-2-' -'-from_rgb255/3-fun-4-' -'-from_rgb/3-fun-0-' -'-from_rgb/3-fun-1-' -'-from_rgb/3-fun-2-' -'-from_rgba/4-fun-0-' -'-from_rgba/4-fun-1-' -'-from_rgba/4-fun-2-' -'-from_rgba/4-fun-3-' -'-from_hsla/4-fun-0-' -'-from_hsla/4-fun-1-' -'-from_hsla/4-fun-2-' -'-from_hsla/4-fun-3-' -'-from_rgb_hex_string/1-fun-0-' -'-from_rgba_hex_string/1-fun-0-' -'-to_css_rgba_string/1-fun-0-' -multiply -'-to_css_rgba_string/1-fun-1-' -to_rgb_hex_string -to_base16 -to_rgba_hex_string -to_rgba_hex -to_css_rgba_string -to_hsla -rgba -hsla -to_rgba -from_rgba_hex_string -from_rgba_hex -from_rgb_hex_string -from_rgb_hex -from_hsl -from_hsla -from_rgba -from_rgb -to_float -then -divide -rgba_to_hsla -hsla_to_rgba -hex_string_to_int -hue_to_rgb -valid_colour_value -'-do_add/3-fun-1-' -'-flags/2-fun-0-' -'-global_flags/2-fun-0-' -command_input -'-execute_root/4-fun-0-' -'-usage_help/3-fun-0-' -'-cmd_help/4-fun-0-' -'-cmd_help/4-fun-1-' -'-cmd_help/4-fun-2-' -'-cmd_help/4-fun-4-' -'-execute/2-fun-0-' -starts_with -'-execute/2-fun-1-' -add_command_from_stub -constant -'gleam@function' -pretty_print -println -'gleam@io' -run_and_handle -execute -do_execute -lazy_unwrap -cmd_help -append_builder -from_strings -'gleam@string_builder' -unwrap -usage_help -to_rgb_hex -italic -underline -bold -'gleam_community@ansi' -heading_style -subcommands_help -subcommand_help -wrap_with_space -help_flag -sanitize_path -is_not_empty -pretty_help -from_rgb255 -'gleam_community@colour' -execute_root -global_flags -global_flag_tuple -global_flag -flag_tuple -command_node -empty_command -with_name -without_pretty_help -with_config -do_fold -from_result -'gleam@option' -map_values -has_key -'-from_list/1-fun-0-' -'-fold/3-fun-0-' -'-filter/2-fun-0-' -order -is_ok -'-one_of/1-fun-0-' -'-one_of/1-fun-1-' -'-none_of/1-fun-0-' -'-none_of/1-fun-1-' -'-each/1-fun-0-' -none_of -'gleam@set' -'-string/0-fun-1-' -'-string/0-fun-0-' -'-string_list/0-fun-1-' -'-string_list/0-fun-0-' -'-attempt/2-fun-0-' -'-wrap_with_constraint/2-fun-0-' -'-construct_value/3-fun-0-' -'-compute_flag/2-fun-12-' -'-compute_flag/2-fun-13-' -'-compute_flag/2-fun-10-' -'-compute_flag/2-fun-11-' -'-compute_flag/2-fun-8-' -'-compute_flag/2-fun-9-' -'-compute_flag/2-fun-6-' -'-compute_flag/2-fun-7-' -'-compute_flag/2-fun-4-' -'-compute_flag/2-fun-5-' -'-compute_flag/2-fun-2-' -'-compute_flag/2-fun-3-' -'-compute_flag/2-fun-0-' -'-compute_flag/2-fun-1-' -'-int/0-fun-1-' -'-int/0-fun-0-' -'-int_list/0-fun-1-' -'-int_list/0-fun-0-' -'-float/0-fun-1-' -'-float/0-fun-0-' -'-float_list/0-fun-1-' -'-float_list/0-fun-0-' -'-bool/0-fun-1-' -'-bool/0-fun-0-' -'-update_flag_value/2-fun-1-' -'-update_flag_value/2-fun-0-' -map_error -'-update_flag_value/2-fun-2-' -'-attempt_toggle_flag/2-fun-2-' -get_floats -get_floats_value -get_float -get_float_value -get_strings_value -get_string_value -get_bool_value -get_ints -get_ints_value -get_int -get_int_value -split_once -drop_left -update_flags -attempt_toggle_flag -update_flag_value -replace_error -flags_help -flag_help -flag_type_help -float_list -undefined_flag_err -no_value_flag_err -layer -layer_invalid_flag -li -b -compute_flag -construct_value -flag_not_provided_error -access_type_error -'gleam@map' -build_map -wrap_with_constraint -attempt -flag_builder -length_mismatch -'-update_group/1-fun-0-' -'-map_fold/3-fun-0-' -'-unique/1-fun-0-' -'-key_find/2-fun-0-' -'-key_filter/2-fun-0-' -'-key_pop/2-fun-0-' -'-permutations/1-fun-0-' -'-permutations/1-fun-1-' -'-permutations/1-fun-2-' -'-last/1-fun-0-' -'-combinations/2-fun-0-' -'-combinations/2-fun-1-' -'-do_combination_pairs/1-fun-0-' -'-transpose/1-fun-0-' -'-transpose/1-fun-1-' -'-do_shuffle_by_pair_indexes/1-fun-0-' -'gleam@float' -'-shuffle/1-fun-0-' -shuffle -do_shuffle_by_pair_indexes -do_shuffle_pair_unwrap -interleave -transpose -combination_pairs -do_combination_pairs -combinations -do_scan -reduce -sized_chunk -do_sized_chunk -do_chunk -take_while -do_take_while -drop_while -window_by_2 -window -do_window -permutations -do_partition -try_each -each -key_set -key_pop -pop_map -do_pop_map -pop -do_pop -key_filter -key_find -split_while -do_split_while -do_split -repeat -do_repeat -compare -'gleam@int' -tail_recursive_range -merge_sort -merge_down -merge_up -intersperse -do_intersperse -do_unzip -strict_zip -do_zip -find_map -fold_until -try_fold -index_fold -do_index_fold -fold_right -map_second -'gleam@pair' -map_fold -'gleam@dict' -flat_map -do_concat -reverse_and_prepend -prepend -do_take -try_map -do_try_map -index_map -do_index_map -map2 -do_map2 -do_map -filter_map -do_filter_map -do_filter -update_group -rest -contains -'-binary_to_term/1-fun-0-' -'-unsafe_binary_to_term/1-fun-0-' -priv_directory -make_reference -unsafe_binary_to_term -rescue -erlang_timestamp -gleam_erlang_ffi -collect_test_functions -run_test_suite -'showtime@internal@erlang@runner' -some -'-mk_runner/2-fun-0-' -'gleam@string' -'-mk_runner/2-fun-1-' -mixed -'-mk_runner/2-fun-2-' -'-start_with_args/2-fun-0-' -end_test_run -'gleam@list' -collect_modules -'showtime@internal@erlang@discover' -start_test_run -'showtime@internal@erlang@module_handler' -'showtime@internal@erlang@event_handler' -'-main/0-fun-0-' -start_arguments -'gleam@erlang' -with_pretty_help -default_pretty_help -one_of -'glint@flag@constraint' -string_list -start_with_args -let_assert -gleam_error -get_string -'gleam@result' -get_strings -'glint@flag' -mk_runner -showtime -already_listening -register_listener -lookup_listener -dtls_listeners_spec -dtls_connection_sup_dist -dtls_connection_child_spec -ssl_upgrade_server_session_cache_sup_dist -ssl_unknown_listener -tls_server_session_ticket_sup_dist -sup_name -ssl_listen_tracker_sup_dist -tracker_name -ssl_upgrade_server_session_child_spec -ssl_server_session_child_spec -tls_server_session_child_spec -listen_options_tracker_child_spec -tls_dist_connection_sup -start_child_dist -server_instance_child_spec -tls_connection_child_spec -dtls_sup_child_spec -tls_sup_child_spec -update_data_lock -collect_invalid_tickets -remove_ticket -obfuscate_ticket_age -ticket_data -psk_identity -verify_ticket_sni -last_elem -get_max_early_data -iterate_tickets -do_find_ticket -inital_state -remove_invalid_tickets -update_ticket -unlock_tickets -store_ticket -remove_tickets -lock_tickets -get_tickets -find_ticket -client_ssl_otp_session_cache -cache_name -'-init_certs_keys/3-fun-0-' -'-prio_ecdsa/1-lc$^0/1-0-' -namedCurves -'-prio_ecdsa/1-fun-1-' -privat_key -'-prio_rsa_pss/1-fun-0-' -'-prio_rsa/1-fun-0-' -'-prio_dsa/1-fun-0-' -'-init_private_key/3-lc$^0/1-0-' -'-dh_file/2-lc$^0/1-0-' -session_cb_opts -session_cache_client_max -session_cache_server_max -max_session_cache_size -client_session_cb_init_args -server_session_cb_init_args -dhfile -dh_file -asn1_NOVALUE -modp2048_generator -modp2048_prime -'DHParameter' -dh -init_diffie_hellman -'EcpkParameters' -asn1_OPENTYPE -'PrivateKeyInfo_privateKeyAlgorithm' -'PrivateKeyInfo' -pem_entry_decode -password -keyfile -invalid_key_id -key_id -init_private_key -init_certificate_file -certfile -init_certificates -cacertfile -crl_cache -init_cacerts -init_manager_name -internal_active_n -get_internal_active_n -server_session_ticket_max_early_data -get_max_early_data_size -server_session_ticket_store_size -get_ticket_store_size -server_session_ticket_lifetime -get_ticket_lifetime -prio_dsa -prio_rsa -pkix_hash_type -'HashAlgorithm' -prio_params_1 -prio_rsa_pss -using_curve -ecc_curves -prio_ecdsa -prio_eddsa -prioritize_groups -dss -engine -rsa_pss_pss -'RSASSA-PSS-params' -ecdsa -eddsa -namedCurve -'ECPrivateKey' -dsa -'DSAPrivateKey' -rsa -'RSAPrivateKey' -group_pairs -private_key -certs -key -init_cert_key_pair -certs_keys -init_certs_keys -dh_params -cert_key_alts -erl_dist -load_mitigation -no_longer_defined -exists_equivalent -register_unique_session -do_register_session -client_register_session -client_register_unique_session -session_validation -init_session_validator -start_session_validator -valid_session -validate_session -session_cache -pem_cache -fileref_db_handle -crl_db_info -cert_db_ref -cert_db_handle -validate_sessions -lifetime -pre_1_3_session_opts -client -delete_crls -insert_crls -invalidate_session -unique -register_session -clean_cert_db -cache_pem_file -connection_init -ssl_manager_dist -'-remove_cert_entries/2-inlined-0-' -'-refresh_trusted_certs/2-inlined-0-' -'-remove/1-fun-0-' -'-lookup_trusted_cert/4-lc$^0/1-0-' -'-refresh_trusted_certs/2-fun-0-' -'-extract_trusted_certs/1-lc$^0/1-0-' -'-lookup/2-fun-0-' -'-lookup/2-lc$^1/1-1-' -'-add_certs_from_der/3-fun-0-' -'-add_certs_from_der/3-lc$^1/1-0-' -'-certs_from_der/1-lc$^1/1-1-' -'-certs_from_der/1-lc$^0/1-0-' -'-add_certs_from_pem/3-fun-0-' -not_encrypted -'Certificate' -'-add_certs_from_pem/3-lc$^1/1-0-' -'-add_crls/3-lc$^0/1-1-' -'-add_crls/3-lc$^1/1-0-' -'-remove_crls/2-lc$^0/1-1-' -'-remove_crls/2-lc$^1/1-0-' -'-remove_cert_entries/2-fun-0-' -remove_cert_entries -insert_cert_entries -insert_delete_lists -update_certs -'TBSCertList' -der_decode -'CertificateList' -crl_issuer -rm_crls -remove_crls -add_crls -new_trusted_cert_entry -pkix_decode_cert -decoded -pkix_normalize_name -'OTPTBSCertificate' -'OTPCertificate' -cert -decode_cert -add_cert -add_certs_from_pem -certs_from_der -add_certs_from_der -remove_certs -init_ref_db -db_size -not_cached -ref_count -select_certentries_by_ref -remove_trusted_certs -decode_pem_file -pem_decode -der_otp -extract_trusted_certs -refresh -file_to_certificats -refresh_trusted_certs -der -add_trusted_certs -extracted -lookup_trusted_cert -ssl_otp_crl_issuer_mapping -ssl_otp_crl_cache -ssl_otp_ca_ref_file_mapping -ssl_otp_ca_file_ref -ssl_otp_cacertificate_db -ssl_manager_type -bypass_pem_cache -bypass_cache -ssl_pem_cache_clean -pem_check_interval -pem_cache_validate -init_pem_cache_validator -start_pem_cache_validator -refresh_trusted_db -clear_pem_cache -create_pem_cache -invalidate_pem -unconditionally_clear_pem_cache -cache_pem -start_link_dist -ssl_pem_cache_dist -client_session_ticket_lifetime -client_session_ticket_store_size -ticket_store_spec -session_and_cert_manager_child_spec -pem_cache_child_spec -session_lifetime -session_cb_init_args -session_cb -manager_opts -ssl_admin_child_spec -logger_h_common_logger_std_h_ssl_handler_restarting -logger_std_h_ssl_handler -asn1_certificates -verify_data -request_update -exchange_keys -certificate_list -certificate_request_context -status_type -hashsign_algorithm -algorithm -protocol_version -certificate_authorities -hashsign_algorithms -certificate_types -hashsign -params_bin -ticket -ticket_nonce -ticket_age_add -ticket_lifetime -compression_method -cipher_suite -server_version -compression_methods -client_version -'-parse_cipher_suites/1-lc$^0/1-0-' -format_uknown_cipher_suite -number_to_hex -prepend_eighths_hex -prepend_hex -prepend_row -prepend_first_row -update_row -calculate_padding -end_row -row_prefix -leading -convert_to_hex -msg_type -tls_record_version -header_prefix_tls_record -format_tls_record -header_prefix -server_hello_selected_version -get_server_version -client_hello_versions -get_client_version -suite_map_to_str -suite_bin_to_map -format_cipher -parse_cipher_suites -server_hello_done -hello_request -end_of_early_data -server_key_exchange -key_update -encrypted_extensions -client_key_exchange -certificate -hello_verify_request -certificate_verify_1_3 -certificate_verify -certificate_status -certificate_request_1_3 -certificate_1_3 -certificate_request -server_key_params -new_session_ticket -server_hello -client_hello -parse_handshake -format_handshake -build_tls_record -own_alert_format -alert_format -role -statename -own -alerter -direction -handshake -outbound -inbound -stop_logger -filter_non_ssl -ssl_handler -start_logger -asn1db -asn1_ns -asn1rt_nif -'PKCS-FRAME' -'OTP-PUB-KEY' -pubkey_os_cacerts -pubkey_ocsp -pubkey_crl -pubkey_cert_records -pubkey_cert -pubkey_ssh -pubkey_pbe -pubkey_pem -rand_cache_size -fips_mode -crypto_ec_curves -ssl_connection_sup -ssl_admin_sup -ssl_sup -ssl_app -ssl_trace -ssl_logger -ssl_crl_hash_dir -ssl_crl_cache_api -ssl_crl_cache -ssl_crl -ssl_certificate -ssl_pkix_db -ssl_pem_cache -ssl_manager -ssl_upgrade_server_session_cache_sup -ssl_server_session_cache_sup -ssl_server_session_cache_db -ssl_server_session_cache -ssl_client_session_cache_db -ssl_session -tls_dist_server_sup -tls_dist_sup -ssl_dist_admin_sup -ssl_dist_connection_sup -ssl_dist_sup -inet6_tls_dist -inet_tls_dist -tls_client_ticket_store -tls_bloom_filter -ssl_listen_tracker_sup -ssl_alert -ssl_srp_primes -ssl_cipher_format -ssl_cipher -ssl_record -ssl_handshake -ssl_gen_statem -ssl_config -tls_dtls_connection -ssl_session_cache_api -dtls_server_session_cache_sup -dtls_server_sup -dtls_sup -dtls_listener_sup -dtls_packet_demux -dtls_gen_connection -dtls_connection_sup -dtls_v1 -dtls_socket -dtls_record -dtls_handshake -dtls_connection -ssl_dh_groups -tls_dyn_connection_sup -tls_sup -tls_server_session_ticket -tls_server_session_ticket_sup -tls_server_sup -tls_sender -tls_gen_connection -tls_connection_sup -tls_v1 -tls_socket -tls_record_1_3 -tls_record -tls_handshake_1_3 -tls_handshake -tls_gen_connection_1_3 -tls_server_connection_1_3 -tls_client_connection_1_3 -tls_connection -bad_descriptor -get_fd -ip_comm -socket_type -listen_loop -listen_init -listen_owner -start_listen -socket_start_failed -mk_tuple_list -httpd_child_spec_nolisten -httpd_child_spec_listen -bind_address -could_not_consult_proplist_file -validate_properties -proplist_file -httpd_config -valid_options -accept_timeout -'-lookup_cookies/3-fun-0-' -'-parse_set_cookies/2-lc$^0/1-0-' -'-parse_set_cookies/2-lc$^1/1-1-' -'-parse_set_cookie_attributes/1-lc$^0/1-0-' -'-accept_cookies/3-fun-0-' -image_of -path_sort -valid_cookies -is_cookie_expired -cookie_expires -accept_domain -accept_path -accept_cookie -accept_cookies -skip_right_most_slash -path_default -domain_default -datetime_to_gregorian_seconds -convert_netscapecookie_date -cookie_attributes -parse_set_cookie_attribute -parse_set_cookie_attributes -substr -parse_set_cookie -parse_set_cookies -chr -is_set_cookie_valid -add_domain -cookie_to_string -cookies_to_string -merge_domain_parts -lookup_domain_cookies -is_hostname -lookup_cookies -session_cookies -headers -request_path -request_host -http_cookie -maybe_dets_close -failed_open_file -cookie_db -httpc_manager__cookie_db -httpc_manager__session_cookie_db -httpc_manager__handler_db -httpc_manager__session_db -do_print_trace -print_trace -do_print_inets_trace -print_inets_trace -format_timestamp -closed_file -handle_trace -hopefully_traced -error_to_exit -ctp -change_pattern -bad_level -make_pattern -set_level -stop_trace -valid_trace_service -do_enable -trace_port -enable2 -invalid_service -'API_violation' -'-which_sessions2/1-lc$^0/1-0-' -'-which_sessions2/1-lc$^1/1-1-' -'-which_sessions2/1-lc$^2/1-2-' -'-code_change/3-fun-1-' -'-code_change/3-fun-0-' -'-get_manager_info/1-lc$^0/1-0-' -'-get_handler_info/1-lc$^0/1-0-' -'-get_handler_info/1-lc$^1/1-1-' -'-select_session/2-lc$^0/1-0-' -tp -tpl -handle_verbose -get_unix_socket_opts -get_socket_opts -get_verbose -get_port -get_ipfamily -get_cookies -get_max_sessions -get_keep_alive_timeout -get_max_keep_alive_length -get_max_pipeline_length -get_pipeline_timeout -get_https_proxy -get_proxy -scheme_default_port -unexpected -maybe_error -uri_parse -make_db_name -handler_db_name -session_cookie_db_name -cookie_db_name -session_db_name -do_store_cookies -handle_cookies -generate_request_id -is_inets_manager -pipeline_or_keep_alive -no_session -no_connection -host_port -candidates -is_idempotent -select_session -start_handler -convert_options -get_handler_info -sort_handlers2 -sort_handlers -sessions -get_manager_info -update_session_table -upgrade_from_pre_5_8_1 -downgrade_to_pre_5_8_1 -close_db -request_id -option_items -url -open_db -do_init -pipeline -keep_alive -session_type -which_session_info -non_session -bad_session -good_session -which_sessions_order -which_sessions2 -session_is -delete_session -pos -update_session -session_id -lookup_session -session -insert_session -request_done -redirect_request -retry_or_redirect_request -retry_request -no_such_service -invalid_field -invalid_value -headers_error -http_request_h -streaming_error -field -no_scheme -return_map -service_not_available -verify_peer -inets_not_started -invalid_method -invalid_request -patch -post -'-services/0-lc$^0/1-0-' -'-service_info/1-lc$^0/1-0-' -to_lower -'-handle_request/9-lc$^0/1-0-' -eof_body -'-mk_chunkify_fun/1-fun-0-' -'-http_options/3-fun-0-' -to_upper -'-http_options_default/0-fun-0-' -'-http_options_default/0-fun-1-' -essl -'-http_options_default/0-fun-2-' -'-http_options_default/0-fun-3-' -'-http_options_default/0-fun-4-' -'-http_options_default/0-fun-5-' -'-boolfun/0-fun-0-' -'-request_options_defaults/0-fun-0-' -'-request_options_defaults/0-fun-1-' -'-request_options_defaults/0-fun-2-' -'-request_options_defaults/0-fun-3-' -'-request_options/3-fun-0-' -bad_body_generator -check_body_gen -child_name -child_name2info -header_parse -validate_headers -header_record -validate_unix_socket -validate_verbose -validate_socket_opts -validate_port -validate_ip -validate_ipfamily -inet6fb4 -validate_ipv6 -validate_cookies -validate_max_pipeline_length -validate_pipeline_timeout -validate_max_keep_alive_length -validate_keep_alive_timeout -validate_max_sessions -validate_https_proxy -validate_proxy -not_an_option -pipeline_timeout -max_sessions -max_pipeline_length -max_keep_alive_length -keep_alive_timeout -https_proxy -ipfamily -validate_ipfamily_unix_socket -bad_options_combo -request_options_sanity_check -request_options -request_options_defaults -boolfun -autoredirect -proxy_auth -url_encode -connect_timeout -http_options_default -value_lazy -http_options -headers_as_is -body_format -maybe_format_body -full_result -return_answer -saved_to_file -handle_answer -mk_chunkify_fun -ensure_chunked_encoding -bad_scheme -scheme_to_atom -add_question_mark -bad_body -normalize_host -maybe_add_brackets -userinfo -ipv6_host_with_brackets -unix_socket -socket_opts -receiver -chunkify -normalize_and_parse_url -service_info -stand_alone -start_standalone -stream_next -reset_cookies -which_sessions -report_event -which_cookies -cookie_header -default_port -cookies -recompose -parse_failed -store_cookies -cacerts -cacerts_get -customize_hostname_check -pkix_verify_hostname_match_fun -ssl_verify_host_options -set_option -cancel_request -check_request -do_request -profile_name -no_profile -stop_child -data_dir -child_specs -only_session_cookies -'-children/0-lc$^0/1-0-' -'-children/0-lc$^1/1-1-' -default_profile -is_httpc -is_httpd -httpd_child_spec -httpc_child_spec -children -get_services -runtime_dependencies -mod_trace -mod_security_server -mod_security -mod_responsecontrol -mod_range -mod_log -mod_head -mod_get -mod_esi -mod_disk_log -mod_dir -mod_cgi -mod_auth_server -mod_auth_plain -mod_auth_mnesia -mod_auth_dets -mod_auth -mod_alias -mod_actions -httpd_sup -httpd_socket -httpd_script_env -httpd_response -httpd_request_handler -httpd_request -httpd_misc_sup -httpd_manager -httpd_logger -httpd_log -httpd_instance_sup -httpd_file -httpd_example -httpd_esi -httpd_custom_api -httpd_custom -httpd_connection_sup -httpd_cgi -httpd_acceptor_sup -httpd_acceptor -http_util -http_transport -http_chunk -httpc_cookie -httpc_sup -httpc_response -httpc_request -httpc_profile_sup -httpc_manager -httpc_handler_sup -httpc_handler -httpc -inets_lib -inets_trace -inets_service -inets_app -inets_sup -inets -gleam_community_colour -tom -snag -glint -gleam_otp -gleam_httpc -gleam_http -gleam_community_ansi -gap -'day7@solve' -'day7@day7_test' -simplifile -gleeunit -gleam_stdlib -gleam_erlang -adglent -'-open/1-fun-0-' -'-fake_reader/1-fun-0-' -'-reader/2-fun-0-' -'-com_enc_end/1-lc$^0/1-0-' -'-keep_ftr_keywords/0-fun-0-' -'-keep_ftr_keywords/0-fun-1-' -'-predef_macros/2-lc$^0/1-0-' -'-predef_macros/2-lc$^1/1-1-' -'-ftr_macro/1-fun-0-' -'-ftr_macro/1-fun-1-' -'-wait_request/1-lc$^0/1-0-' -'-eval_if/2-fun-0-' -'-interpret_file_attr/3-fun-0-' -interpret_file_attr -interpret_file_attribute -line1 -start_loc -add_line -expand_var1 -expand_var -wait_epp_reply -epp_reply -var_or_atom -find_mismatch -coalesce_strings -stringify -stringify1 -token_src -comma -classify_token_1 -classify_token -update_fun_name_1 -update_fun_name -expand_arg -expand_macro -macro_arg -count_args -store_arg -macro_args -bind_args -'FUNCTION_NAME' -'FUNCTION_ARITY' -get_macro_uses -check_uses -expand_macro1 -expand_macros -check_macro_arg -macro_expansion -macro_pars_end -macro_pars_cont -macro_pars -skip_elif -skip_else -skip_toks -scan_file1 -scan_endif -scan_elif -to_conses -defined -rewrite_expr -assert_guard_expr -eval_if -scan_if -scan_else -is_macro_defined -scan_ifndef -scan_ifdef -lib -scan_include_lib1 -scan_include_lib -expand_lib_dir -scan_include1 -scan_include -scan_undef -macro_ref -macro_uses -scan_define_cont -scan_define_2 -scan_define_1 -scan_define -update_features -scan_feature -scan_err_warn -'BASE_MODULE_STRING' -'BASE_MODULE' -scan_extends -'MODULE_STRING' -'MODULE' -scan_module_1 -extends -scan_module -leave_prefix -in_prefix -include_lib -ifndef -ifdef -endif -elif -define -scan_toks -leave_file -enter_file_reply -enter_file2 -enter_file -wait_req_skip -wait_req_scan -close_file -epp_request -wait_request -user_predef -ftr_macro -'FILE' -'LINE' -'MACHINE' -'OTP_RELEASE' -'FEATURE_AVAILABLE' -'FEATURE_ENABLED' -predef_macros -keep_ftr_keywords -source_name -init_server -not_typed -normalize_typed_record_fields -com_encoding -com_enc_end -com_enc -com_space -com_sep -com_oding -com_c -com -com_nl -read_encoding_from_file -fake_reader -in_comment_only -read_encoding -encoding_to_string -features -get_features -premature_end -missing_parenthesis -missing_comma -ftr_after_prefix -elif_after_else -cannot_parse -redefine_predef -redefine -mismatch -illegal_function_usage -illegal_function -duplicated_argument -arg_error -'NYI' -circular -macro_defs -includes -macros -print_stack_frame -stack_filter -print_error -main -aoc2023 -'X' -'-predefined_functions/1-lc$^0/1-0-' -'-predefined_functions/1-lc$^1/1-1-' -'-predefined_functions/1-lc$^2/1-2-' -'-predefined_functions/1-lc$^3/1-3-' -'-get_optional_callbacks/1-lc$^0/1-0-' -'-module_predef_func_beh_info/2-lc$^0/1-0-' -module_predef_funcs_mod_info -make_list -module_predef_func_beh_info -get_optional_callbacks -predefined_functions -add_predefined_functions -pos_integer -nonempty_string -nonempty_maybe_improper_list -nonempty_improper_list -nonempty_bitstring -nonempty_binary -non_neg_integer -neg_integer -maybe_improper_list -iolist -identifier -byte -bitsize -send_op -list_op -comp_op -bool_op -new_type_test -stream_state -retired_ecb_cipher_aliases -retired_ctr_cipher_aliases -retired_cfb_cipher_aliases -retired_cbc_cipher_aliases -hmac_state -user_info -uri -query -fragment -default_scheme_port_number -node_cookie -cookie -local_time_to_universal_time -rehash -is_module_native -literal_value -is_literal_list -is_literal -get_anno -stream_init -stream_encrypt -stream_decrypt -rand_uniform -poly1305 -next_iv -hmac_update -hmac_init -hmac_final_n -hmac_final -hmac -crypto_dyn_iv_update -crypto_dyn_iv_init -cmac -block_encrypt -block_decrypt -stop_clear -lclose -inc_wrap_file -accessible_logs -modify_line -get_attributes -get_attribute -token_info -set_attribute -attributes_info -hash -get_stacktrace -safe_relative_path -find_src -stop_service -start_service -scheme_defaults -parse_query -make_integer -is_directory -custom_clean -check_enum -integer_to_hexlist -hexlist_to_integer -ssh_hostkey_fingerprint -ssh_encode -ssh_decode -safe_multi_server_call -ssl_accept -negotiated_next_protocol -connection_info -cipher_suites -get_debug -enableYearChange -wxCalendarCtrl -public_key -os_mon_mib -httpd_util -httpd_conf -httpd -http_uri -ftp -erts_alloc_config -dbg -ct_slave -asn1ct -intersection1 -aoc2023_test -is_settable -anno_info -simplify -reset_simplify -set_anno -set_record -set_line -is_string -is_filename -is_anno2 -is_anno1 -new_location -'aoc2023@@main' -'-inlined-new_column/2-' -'-inlined-incr_column/2-' -'-options/1-fun-1-' -'-remove_digit_separators/2-lc$^0/1-0-' -let -cond -f_reserved_word -nl_tabs -spcs -nl_spcs -scan_error -tok3 -tok2 -scan_check1 -scan_check -comment -scan_comment -scan_comment_fun -skip_comment -skip_comment_fun -float_end -scan_exponent -scan_exponent_sign -scan_fraction -scan_based_int -remove_digit_separators -with_underscore -scan_number -caret_char_code -escape_char -scan_hex_end -scan_hex -scan_escape -scan_string1 -scan_string_col -scan_string_no_col -scan_string0 -scan_qatom -char_error -scan_string -scan_char -scan_white_space -scan_white_space_fun -skip_white_space -skip_white_space_fun -scan_tabs -scan_tabs_fun -scan_spcs -scan_spcs_fun -newline_end -scan_nl_white_space -scan_nl_white_space_fun -scan_nl_tabs -scan_nl_tabs_fun -scan_nl_spcs -scan_nl_spcs_fun -scan_newline -scan_dot -scan_name -scan_variable -scan_variable_fun -scan_atom -scan_atom_fun -not_character -'&' -'@' -'\\' -'^' -'`' -'~' -white_space -no_underscore -scan1 -string1 -tokens1 -expand_opt -reserved_word_fun -ssa_checks -compiler_internal -text_fun -return_white_spaces -return_comments -string_thing -category -erl_scan_continuation -no_col -illegal -'-open_1/3-fun-0-' -match_binary -match_writable -match_delayed -compressed_one -match_compressed -add_unless_matched -add_implicit_modes -open_layer -open_1 -reverse_pairs -append_list -fetch_keys -no_source -'-c/2-fun-0-' -'-c/5-fun-0-' -'-format_docs/1-fun-0-' -'-lc/1-fun-0-' -'-lc_batch/1-lc$^0/1-0-' -'-i/1-fun-0-' -'-all_procs/0-fun-0-' -'-m/0-fun-0-' -'-lm/0-lc$^0/1-0-' -'-nregs/0-fun-0-' -'-all_regs/0-lc$^0/1-0-' -'-print_node_regs/1-fun-0-' -'-print_node_regs/1-fun-1-' -appcall -parsetools -yecc -y -tools -xref -xm -seconds_to_daystime -get_uptime -uptime -max_length -ls_print -ls -pwd -portformat -portline -procformat -procline -portinfo -pwhereis -pids_and_ports -print_node_regs -all_regs -regs -nregs -split_print_exports -print_exports -get_compile_info -get_compile_options -print_md5 -print_object_file -bi -f_p_e -lm -mm -mformat -bt -all_procs -iformat -mfa_string -'more (y/n)? (y) ' -paged_output -less -ni -l -nc -d -split_def -'@o' -'@i' -'@d' -lc_batch -output_generated -purge_and_load -src_suffix -from_opt -from_core -from_asm -is_from_opt -is_outdir_opt -ensure_outdir -ensure_from -report_warnings -compile_and_load -safe_recompile -find_beam_1 -find_beam -source -find_source -old_options -format_docs -render_callback -hcb -render_type -ht -unknown_format -render -outdir -help -logger_h_common_logger_std_h_default_restarting -logger_std_h_default -handler_busy -cancel_repeated_filesync -set_repeated_filesync -check_common_config -string_to_binary -formatter_crashed -try_format -formatter_error -caught -do_log_to_binary -log_to_binary -log_handler_info -restart_impossible -rep_sync_tref -repeated_filesync -last_op -handler_state -ctrl_sync_count -olp -file_ctrl_process_not_started -'-fix_modes/1-lc$^0/1-0-' -'-fix_modes/1-fun-1-' -'-file_ctrl_start/2-fun-0-' -error_notify -maybe_notify_error -decompress_data -decompress_file -compress_data -compress_file -rot_file_name -rotate_files -rotate_file -maybe_rotate_file -maybe_update_compress -maybe_remove_archives -curr_size -rotation -update_rotation -sync_dev -write_to_dev -could_not_create_dir_for_file -could_not_reopen_file -ensure_open -ensure_file -maybe_ensure_file -file_ctrl_loop -open_failed -dev -file_ctrl_init -file_ctrl_call -file_ctrl_filesync -file_write -file_ctrl_stop -file_ctrl_start -delayed_write_close -close_log_file -write_res -sync_res -last_check -inode -handler_name -open_log_file -write_failed -config_changed -delayed_write -fix_modes -no_repeat -filesync_repeat_interval -fix_file_opts -merge_default_config -normalize_config -modes -max_no_files -max_no_bytes -file_check -compress_on_rotate -check_h_config -file_ctrl_pid -filesync -'-format/2-fun-0-' -'-check_template/1-fun-0-' -check_timezone -check_offset -check_template -check_limit -invalid_formatter_template -do_check_config -offset_to_utc -utc_log -get_utc_config -utc_to_offset -get_offset -get_depth -get_max_size -default_template -add_default_template -add_default_config -month -error_logger_notice_header -add_legacy_title -maybe_add_legacy_header -timestamp_to_datetimemicro -system_time_to_rfc3339 -time_designator -format_time -get_first -get_last -chardata_to_list -limit_depth -reformat -chars_limit_to_opts -format_msg -linearize_template -template -resource -cleanup -pong -ping -'-wait_nodes/2-fun-0-' -sync_nodes_optional -get_sync_optional_nodes -sync_nodes_mandatory -get_sync_mandatory_nodes -sync_nodes_timeout -get_sync_timeout -get_sync_data -check_up -mandatory_nodes_down -wait_nodes -sync_nodes -'__not_used' -dist_ac_took_control -go -'-start_interval_loop/5-fun-0-' -remove_timer -schedule_interval_timer -interval_loop -start_interval_loop -maybe_req -req -hms -hours -minutes -now_diff -tc -interval -send_interval -apply_repeatedly -apply_interval -kill_after -send_local -apply_once -instant -logger_proxy_logger_proxy_restarting -cond_lowercase -flat_trunc -prefixed_integer -unprefixed_integer -string_field -limit_field -limit_cdata_to_chars -cdata_to_chars -final -limit_iolist_to_chars -iolist_to_chars -float_data -signbit -abs_float_f -float_f -fwrite_f -float_exp -float_man -abs_float_e -float_e -fwrite_e -column -base -uniconv -control_limited -control_small -decr_pc -build_limited -not_small -build_small -w -count_small -collect_cc -field_value -field_width -modifiers -collect_cseq -collect -print_maps_order -print_strings -print_encoding -print_pad_char -print_precision -print_field_width -control_char -pad_char -precision -strings -width -wrap -quiet -'-to_drop/0-lc$^0/1-0-' -show -show_custom_provider_faulty_add_return -'$#erlang-history-custom-return' -show_custom_provider_faulty_load_return -'$#erlang-history-custom-crash' -show_custom_provider_crash -'$#erlang-history-size' -show_size_warning -'$#erlang-history-unexpected-close' -show_unexpected_close_warning -'$#erlang-history-unexpected-return' -show_unexpected_warning -'$#erlang-history-invalid-file' -show_invalid_file_warning -'$#erlang-history-invalid-chunk-warn' -show_invalid_chunk_warning -'$#erlang-history-rename-warn' -show_rename_warning -shell_history_drop -to_drop -shell_history_path -find_path -'$#erlang-history-disable' -disable_history -'$#erlang-history-upgrade' -upgrade_version -'$#erlang-history-resize-result' -new_size_too_small -change_size -'$#erlang-history-resize-attempt' -resize_log -'$#erlang-history-report-repairs' -report_repairs -shell_history_file_bytes -find_wrap_values -disk_log_info -'$#erlang-history-invalid-header' -not_a_log_file -invalid_index_file -'$#erlang-history-file-error' -'$#erlang-history-arg-mismatch' -handle_open_error -maybe_drop_header -maybe_resize_log -read_full_log -ensure_dir -ensure_path -log_options -open_log_no_size -open_log -init_running -is_user -shell_history -history_status -open_new_log -repair_log -wait_for_kernel_safe_sup -no_such_log -need_repair -name_already_open -invalid_header -repair -arg_mismatch -badbytes -recovered -'$#group_history' -'-write/2-fun-0-' -chars_length -test_limit_bitstring -test_limit_map_assoc -test_limit_map_body -test_limit_map -test_limit_tuple -test_limit_tail -test_limit -limit_bitstring -limit_map_assoc -limit_map_body -limit_map -limit_tuple -limit_tail -limit -binrev -collect_line_list -collect_line_bin -collect_chars_list -collect_chars1 -count_and_find_utf8 -printable_latin1_list -deep_unicode_char_list -deep_latin1_char_list -write_char_as_latin1 -write_latin1_char -write_unicode_char -string_char -write_string1 -unicode_as_latin1 -write_string_as_latin1 -write_latin1_string -write_unicode_string -unicode_as_unicode -name_char -name_chars -reserved_word -quote_atom -write_possibly_quoted_atom -tsub -write_binary_body -write_binary -write_map_assoc -write_map_body -write_map -write_ref -write_port -write_tuple -write_tail -fwrite_g -write1 -intermediate -maps_order -add_modifier -do_format_prompt -indentation -test_modules_loaded -build_text -unscan -unscan_format -scan -'-edit_line1/2-lc$^0/1-0-' -'-over_word/3-lc$^0/1-0-' -'-chars_before/1-lc$^0/1-0-' -'-current_line/1-fun-0-' -cp_len -gc_len -current_chars -length_after -length_before -chars_before -multi_line_prompt -erase_inp -over_paren_auto -over_paren -word_char -over_non_word -over_word2 -over_word1 -until_quote -over_word -skip_up -skip_down -do_op -insert_search -kill_line -transpose_char -backward_kill_word -yank -auto_blink -beginning_of_expression -backward_line -backward_word -forward_line -forward_word -forward_char -kill_word -backward_char -end_of_line -beginning_of_line -transpose_word -yank_pop -clear_line -forward_delete_char -backward_delete_char -key_map -ctlu -prefix_arg -redraw -end_of_expression -tab_expand_full -tab_expand -search_meta_left_sq_bracket -search_meta -new_line_finish -new_line -meta_o -meta_meta -meta_csi -ctlx -csi -edit -kill_buffer -'-normalize_expand_fun/2-fun-0-' -'-get_line1/5-lc$^3/1-0-' -'-get_line1/5-lc$^4/1-1-' -format_prompt -prompt_bytes -edit_password -get_password1 -get_password_line -search_down_stack -search_up_stack -save_line_buffer -pad_stack -get_all_lines -get_lines -save_line -down_stack -up_stack -stack -new_stack -get_line_timeout -remainder_after_nl -get_chars_echo_off1 -get_chars_echo_off -get_line_echo_off1 -get_line_echo_off -more_data -redraw_line -search_result -search_found -search_cancel -number_matches -format_matches -search_quit -expand_full -search_quit_prompt -edit_line1 -to_graphemes -meta_left_sq_bracket -prompt -erase_line -get_line1 -interrupted -get_chars_n_loop -current_line -get_chars_loop -get_chars_line -get_chars_n -get_password_chars -terminal -normalize_expand_fun -send_drv_reqs -send_drv -collect_chars -get_tty_geometry -exit_shell -driver_id -start_shell1 -whereis_shell -unicode_state -read_mode -line_buffer -convert_binaries -bc_req -default_output -default_input -execute_request -parse_erl_form -scan_erl_form -scan_erl_exprs -fread -conv_reason -get_password -sig -ebadf -canon -'-handle_request/2-lc$^0/1-0-' -'-handle_request/2-lc$^1/1-1-' -'-in_view/1-lc$^0/1-0-' -'-in_view/1-lc$^1/1-1-' -'-in_view/1-lc$^3/1-2-' -'-in_view/1-lc$^2/1-3-' -'-cols_multiline/4-lc$^0/1-0-' -'-npwcwidthstring/1-lc$^0/1-0-' -'-characters_to_output/1-fun-0-' -'-characters_to_buffer/1-fun-0-' -'-binary_to_latin1/1-lc$^0/1-0-' -tty_read_signal -tgoto_nif -tgetstr_nif -tgetflag_nif -tgetnum_nif -tgetent_nif -tgoto -tgetstr -tgetflag -tgetnum -tgetent -wcswidth -sizeof_wchar -wcwidth -isprint -tty_window_size -tty_encoding -tty_select -setlocale -tty_set -tty_init -tty_create -encode -char_to_latin1 -binary_to_latin1 -is_usascii -to_latin1 -ansi_sgr -ansi -insert_buf -characters_to_buffer -characters_to_output -xnfix -is_wide -not_printable -npwcwidth -next_grapheme -npwcwidthstring -update_geometry -cols -cols_multiline -split_cols_multiline -cols_after_cursor -in_view -right -left -move_cursor -split_cols -last_or_empty -unhandled_request -both -redraw_prompt_pre_deleted -writer_loop -user_drv_writer -reader_loop -user_drv_reader -winch -cont -reader_stop -reader -writer -init_term -standard_io_encoding -primitive -state_name -should_not_have_arrived_here_but_instead_in -'-inlined-loop_state_enter/9-' -'-format_log_single/2-fun-0-' -'-list_timeouts/1-lc$^0/1-0-' -list_timeouts -limit_client_info -terminate_sys_debug -bad_reply_action_from_state_function -do_reply_then_terminate -reply_then_terminate -bad_return_from_callback_mode -state_enter -callback_mode_result -get_callback_mode -parse_timeout_opts_abs -loop_done -loop_timeouts_update -loop_timeouts_cancel -loop_timeouts_register -loop_timeouts_start -loop_timeouts -loop_next_events -loop_state_change -loop_keep_state -loop_state_transition -loop_actions_next_event_bad -loop_actions_next_event -loop_actions_reply -bad_action_from_state_function -state_timeout -pop_callback_module -bad_state_enter_action_from_state_function -push_callback_module -change_callback_module -loop_actions_list -loop_actions -bad_return_from_state_function -repeat_state_and_data -repeat_state -bad_state_enter_return_from_state_function -stop_and_reply -loop_state_callback_result -handle_event_function -loop_state_callback -loop_event -loop_receive_result -t0q -loop_receive -loop_hibernate -wakeup_from_hibernate -event_string -insert_timeout -consume -sys_debug -timeouts -postponed -bad_return_from_init -init_result -params -replies -dirty_timeout -clean_timeout -postpone -'-gr_list/1-inlined-0-' -'-init_local_shell/2-fun-0-' -'-group_opts/1-fun-1-' -'-group_opts/1-fun-0-' -'-gr_list/1-fun-0-' -gr_list -gr_cur_index -gr_cur_pid -gr_del_pid -gr_set_num -gr_set_cur -gr_add_cur -gr_get_info -gr -gr_get_num -gr_new_group -gr_new -handle_req -mktemp -disable_reader -is_file -delete_line -delete_after_cursor -beep -move -move_rel -move_line -delete_chars -insert_over -expand_with_trim -put_expand_no_trim -put_expand -insert_chars_over -insert_chars -putc_raw -putc -redraw_prompt -move_combo -expand_below -below -shell_expand_location -expand_fun -group_opts -list_commands -unknown_group -j -r -h -'?' -switch_cmd -blink -edit_line -jcl -shell_esc -more_chars -activate -new_prompt -ctrl_c -contains_ctrl_g_or_ctrl_c -put_chars_sync -die -enable_reader -chomp -window_size -tty_geometry -get_unicode_state -get_terminal_state -interrupt -switch_loop -ctrl_g -editor_data -editor -handle_signal -open_editor -keep_state -set_unicode_state -keep_state_and_data -reinit -next_state -init_shell -init_local_shell -shell_slogan -init_remote_shell -init_noshell -exit_on_remote_shell_error -handles -init_standard_error -old -next_event -isatty -stdin -state_functions -callback_mode -'tty_sl -c -e' -current_group -whereis_group -start_shell -remsh -initial_shell -oldshell -nouser -noinput -get_user -wait_for_user_p -start_user -relay1 -start_relay -'-inlined-result/4-' -'-receive_response/3-anonymous-0-' -'-reqids_to_list/1-fun-0-' -mcall_map_replies -mcall_abandon -mcall_result -mcall_receive_replies -local_call -mcall_send_requests -mcall_send_request -mcall_local_call -expired -time_left -call_abandon -trim_stack_aux -use_all -nonexisting -call_result -multicast_send_requests -'no global_groups definiton' -illegal_function_call -global_group_not_runnig -not_boolean -'-handle_call/3-inlined-1-' -'-init/1-fun-1-' -'-initial_group_setup/3-fun-0-' -'-initial_group_setup/3-fun-1-' -'-schedule_conf_changed_checks/3-fun-0-' -'-make_group_conf/2-lc$^0/1-0-' -'-disconnect_nodes/2-fun-0-' -'-force_nodedown/2-fun-0-' -force_nodedown -disconnect_nodes -check_exit_ggc -check_exit_where -check_exit_send -not_found_ignored -check_exit_reg -check_exit -safesend_nc -not_own_group -safesend -send_monitor -delete_all -global_group_check_dispatcher -lookup_group_conf -alive_state_change_group_conf -make_group_conf -new_group_conf -fetch_new_group_conf -grp_tuple -'node defined twice' -no_name -config_scan -removing_node_state_of_member_node -node_state -conf_changed_check -handle_erpc_response -schedule_conf_changed_checks -log_sync_error -nodeup_conf_check -continue_handle_info -find_name -registered_names_res -find_name_res -send_res -config_ok -illegal_message -own_group_name -own_group_nodes -synced_nodes -no_contact -other_groups -monitoring -conf_check -gconf -names -names_test -whereis_test -test3844zty -not_agreed -sync_error -agreed -no_conf -'invalid global_groups definition' -initial_group_setup -global_group_check -whereis_name_test -send_test -registered_names_test -ng_add_check -own_nodes -do_start_link -no_epmd -net_sup_dynamic -'-intersect_with/3-fun-0-' -'-merge_with/3-fun-0-' -'-iterator/2-fun-1-' -'-iterator/2-fun-0-' -try_next -is_iterator_valid_1 -is_iterator_valid -error_type_merge_intersect -error_type_two_maps -groups_from_list_2 -groups_from_list_1 -groups_from_list -with_1 -reversed -ordered -filter_1 -to_list_internal -to_list_from_iterator -merge_with_1 -intersect_with_iterate -intersect_with_small_map_first -intersect_with -intersect_combiner_v2 -intersect_combiner_v1 -intersect -'-inlined-get_52/1-' -'-inlined-exsss_next/1-' -'-inlined-exsp_next/1-' -'-inlined-exs1024_next/1-' -'-inlined-exrop_next/1-' -'-exs1024_jump/6-fun-0-' -float2str -make_float -bc64 -normal_fi -format_jumpconst58_value -format_jumcons58_matches -format_jumpconst58 -xorzip_sr -polyjump -splitmix64_next -seed64 -seed58 -seed_nz -seed64_nz -seed58_nz -hash58 -mwc59_seed -mwc59_float -mwc59_value -mwc59_value32 -mwc59 -zero_seed -non_integer_seed -too_many_seed_integers -dummy_seed -dummy_next -dummy_uniform -exrop_jump -exrop_uniform -exrop_next -exrop_seed -exro928_jump_2pow20 -exro928_jump_2pow512 -exro928_jump -exro928ss_uniform -exro928_next_state -exro928_next -exro928ss_next -exro928_seed -exs1024_jump -exs1024_next -exs1024_calc -exs1024_gen1024 -exs1024_seed -exsp_jump -exsplus_jump -exsss_uniform -exsp_uniform -exsss_next -exsp_next -exsss_seed -exsplus_seed -exs64_next -exs64_seed -exsp -exs64 -exs1024s -exs1024 -exrop -exro928ss -dummy -mk_alg -seed_get -seed_put -normal_s -jump -bytes_r -bytes_s -uniform_real_s -uniform_real -uniform_n -uniform_s -exsss -default_seed -seed_s -export_seed_s -rand_seed -export_seed -weak_low_bits -uniform_range -invalid_key -bad_node -ok_pending -nok_pending -already_pending -publish_type -'-merge_opts/2-inlined-0-' -'-monitor_nodes/2-fun-0-' -invalid_option -'-terminate/2-fun-1-' -'-restart_distr/1-fun-0-' -'-split_node/1-fun-0-' -'-setopts_new_1/3-fun-0-' -'-setopts_new_1/3-fun-1-' -'-merge_opts/2-fun-0-' -opts_node -merge_opts -dist_nodelay -inet_dist_listen_options -inet_dist_connect_options -setopts_new_1 -setopts_on_listen -send_owner_request -setopts_new -handle_async_response -return_call -getnode -nformat -fetch -fmt_address -display_info -print_info -restart_ticker -all_atoms -reply_waiting1 -reply_waiting -multi_receive -multi_info -get_nodes_info -get_node_info -net_setuptime -connecttime -set_node -proto_error -register_error -duplicate_name -start_protos_listen -wrap_creation -next_creation -strong_rand_bytes -create_creation -sync_cookie -start_protos_no_listen -start_protos -hidden_argument -dist_listen_argument -epmd_module -childspecs -proto_dist -protocol_childspecs -valid_name_head -validate_hostname -create_hostpart -hostname_not_allowed -create_name -init_node -get_proto_mod -unsupported_address_type -select_mod -setup_check -net_address -setup -spawn_func -bye -aux_ticker1 -aux_ticker -start_aux_ticker -ticker_loop -get_nodes_up_normal -disconnect_ctrlr -do_disconnect -mk_monitor_nodes_error -unknown_options -bad_option_value -check_options -option_value_mismatch -check_opt -restart_distr_do -restart_distr -delete_connection -up_nodedown -up_pending_nodedown -pending_nodedown -delete_ctrlr -delete_owner -get_conn -restarter_exit -ticker_exit -pending_own_exit -dist_ctrlr_exit -conn_own_exit -accept_exit -listen_exit -do_handle_exit -generate_node_name -ensure_node_name -transition_period_end -aux_tick -wait_pending -is_pending -inconsistency -remarked -remark -accept_pending_nok -accept_pending -inserted -registered_send -badcookie -unsupported_protocol -controller -accept_connection -name_type -static -ongoing_change_to -is_auth -change_initiated -tick_change -shorter -longer -not_implemented -no_link -up_pending -do_explicit_connect -dist_auto_connect -do_auto_connect_2 -barred_connection -do_auto_connect_1 -tick -sys_dist -ticker -clean_halt -dist_listen -make_init_opts -nodistribution -name_domain -retry_request_maybe -passive_connect_monitor -hidden_connect_node -connect_node -publish -publish_on_node -ticktime_res -ticktime -get_net_ticktime -new_ticktime -set_net_ticktime -verbose -nodes_info -node_info -nodename -allowed -kernel_apply -'$4' -'-make_node_vsn_list/2-inlined-0-' -'-do_ops/5-inlined-5-' -'-do_ops/5-inlined-2-' -'-delete_lock/2-inlined-0-' -'-register_name/3-fun-0-' -'-check_dupname/2-lc$^0/1-0-' -'-unregister_name/1-fun-0-' -'-re_register_name/3-fun-0-' -'-register_name_external/3-fun-0-' -'-handle_info/2-fun-0-' -'-handle_info/2-fun-1-' -'-delete_node_resources/2-fun-0-' -'-check_replies/3-lc$^0/1-0-' -'-resolved/5-fun-0-' -'-resolved/5-fun-1-' -'-resolved/5-fun-2-' -'-resolved/5-fun-3-' -'-resolved/5-fun-4-' -'-resolved/5-fun-5-' -'-start_resolver/2-fun-0-' -'-do_ops/5-lc$^1/1-1-' -'-do_ops/5-lc$^0/1-0-' -'-do_ops/5-fun-2-' -'-do_ops/5-lc$^3/1-3-' -'-do_ops/5-lc$^4/1-4-' -'-do_ops/5-fun-5-' -'-do_ops/5-lc$^6/1-6-' -'-do_ops/5-fun-7-' -'-sync_others/1-fun-0-' -'-sync_others/1-fun-1-' -'-del_name/2-lc$^1/1-1-' -'-del_name/2-lc$^0/1-0-' -'-init_the_locker_fun/1-fun-0-' -'-exclude_known/2-lc$^0/1-0-' -'-delete_lock/2-fun-0-' -'-pid_locks/1-fun-0-' -'-pid_locks/1-lc$^1/1-1-' -'-gns_volatile_multicast/5-fun-0-' -'-node_list/1-fun-0-' -'-make_node_vsn_list/2-fun-0-' -'-mk_known_list/2-fun-0-' -'-mk_known_list/2-fun-1-' -'-add_to_known/2-fun-0-' -'-send_again/1-fun-0-' -'-start_sync/2-fun-0-' -'-sync_init/2-fun-0-' -'-sync_loop/2-fun-0-' -'-start_the_registrar/0-fun-0-' -allow_tuple_fun -unexpected_message -loop_the_registrar -start_the_registrar -get_own_nodes_with_errors -get_own_nodes -check_sync_nodes -synced -sync_loop -sync_init -start_sync -new_node_name -change_our_node_name -send_again -exsplus -random_sleep -get_names -remove_lost_connection_info -save_lost_connection_info -get_lost_connection_info -mk_known_list -make_node_vsn_list -node_list -node_vsn -is_node_potentially_known -gns_volatile_multicast -gns_volatile_send -inform_connection_loss -removing -handle_nodedown -new_resolver -no_longer_a_pid -handle_nodeup -ref_is_locking -pid_locks -delete_lock -pid_is_locking -unlink_pid -dounlink_ext -dolink_ext -notify_all_name -global_name_conflict -random_notify_name -random_exit_name -minmax -resolve_it -exchange_names -reset_node_state -send_cancel_connect_message -send_cancel_connect -kill_resolver -cancel_locker -split_node -is_node_local -add_node -remove_node2 -remove_node -find_node_tag2 -find_node_tag -the_boss -delete_global_lock -call_fun -wait_cancel_lock -lock_is_set_wait_cancel -lock_is_set_true_received -exclude_known -random_element -update_locker_known -locker_failed -locker_succeeded -lock_rejected -locker_trace -delete_nonode -lock_nodes_safely -locker_lock_id -send_lock_set -select_node -get_locker -get_state_reply -remove_from_known -do_trace -no_fun -him -the_locker_message_wait_cancel -the_locker_message -loop_the_locker -init_the_locker_fun -start_the_locker -delete_global_name -delete_global_name2 -delete_global_name_keep_pid -del_name -extra_info -lock_still_set -insert_global_name -sync_other -global_connect_retries -sync_others -do_ops -rem_lock -remove_lock -handle_del_lock -is_lock_set -is_global_lock_set -ins_lock -insert_lock -can_set_lock -handle_set_lock -ins_name_ext -ins_name -resend_pre_connect -resolver -start_resolver -do_whereis -cancel_resolved_locker -ops -added -add_to_known -lock -resolve -wait_lock -lock_id -restart_connect -pre_connect -his_the_locker -locker -prot_vsn -check_replies -local_lock_check -set_lock_on_nodes -lock_on_known_nodes -set_lock_known -send_high_level_trace -wait_high_level_trace -delete_node_resources -delete_node_resource_info -save_node_resource_info -nodes_changed -high_level_trace -extra_nodedown -registrar_died -locker_died -not_connected -group_configured -trace_message -group_nodeup -group_nodedown -cancel_connect -init_connect_ack -ignore_node -remove_connection -async_disconnect -participant -lost_connection -in_sync -async_del_name -async_del_lock -lock_is_set -init_connect -sync_tag_his -exit_resolver -lock_set -exchange_ops -new_nodes -save_ops -sync_tag_my -resolved -high_level_trace_stop -high_level_trace_start -high_level_trace_get -get_synced -get_protocol_version -get_names_ext -get_known -trans_all_known -register_ext -creation_extension -uniform -seed -conf -invalid_parameter_value -connect_all -no_trace -global_node_resources -global_lost_connections -global_pid_ids -global_names_ext -global_locks -aborted -trans -del_lock -set_lock -unregister_name_external -register_name_external -global_names -registered_names -re_register_name -global_multi_name_action -global_pid_names -check_dupname -registrar -execute_cast -'-handle_cast/2-fun-0-' -'-proxy_user/0-fun-0-' -'-start_nodes_observer/0-fun-0-' -rex_nodes_observer -'-start_nodes_observer/0-fun-1-' -'-do_srv_call/3-fun-0-' -'-eval_everywhere/4-fun-0-' -'-parallel_eval/1-lc$^0/1-0-' -'-cnode_call_group_leader_start/1-fun-0-' -cnode_call_group_leader_start -cnode_call_group_leader_state -cnode_call_group_leader_init -rex_stdout -cnode_call_group_leader_put_chars -cnode_call_group_leader_multi_request -cnode_call_group_leader_request -cnode_call_group_leader_loop -pinfo -build_args -pmap -map_nodes -parallel_eval -no_response -response -nb_yield -async_call -rec_nodes -multi_server_call -rpcmulticallify -multicall -send_nodes -eval_everywhere -rpc_check -rpc_check_t -do_srv_call -signal -exception -rpcify_exception -nodes_observer_loop -start_nodes_observer -proxy_user_flush -proxy_user_loop -rex_proxy_user -proxy_user -set_group_leader -trim_stack -is_arg_error -execute_call -features_reply -features_request -nonexisting_name -sbcast -send_stdout_to_caller -block_call -nodes_observer -'-services/2-fun-0-' -'-rpc/2-fun-0-' -'-hosts/2-fun-0-' -'-resolv/2-fun-0-' -'-host_conf_linux/2-fun-0-' -'-host_conf_freebsd/2-fun-0-' -'-host_conf_bsdos/2-fun-0-' -'-nsswitch_conf/2-fun-0-' -'-protocols/2-fun-0-' -'-netmasks/2-fun-0-' -'-networks/2-fun-0-' -split_mid_comma -split_comma -split_end -split_mid -dig_to_hex -dig_to_dec -separate -ntoa_done -hex_to_int -dec16 -hex -ipv6_addr_done -ipv6_addr_scope -ipv6_addr -ipv4_field -ipv4strict_addr -strip0 -is_dom2 -is_dom_ldh -is_dom1 -port_proto -parse_cs -parse_fd -networks -netmasks -delete_options -noname -services -eafnosupport -'-setopts/2-lc$^0/1-0-' -'-getopts/2-lc$^0/1-0-' -'-getifaddrs/1-fun-0-' -'-getifaddrs/0-fun-0-' -'-getiflist/1-fun-0-' -'-getiflist/0-fun-0-' -'-ifget/2-fun-0-' -'-ifget/2-fun-1-' -'-ifset/2-fun-0-' -'-ifset/2-fun-1-' -'-getif/0-fun-0-' -'-getif/1-fun-0-' -'-getif/1-fun-1-' -'-gethostname/0-fun-0-' -'-bindx/3-lc$^1/1-1-' -'-ii/3-fun-0-' -'-ii/3-lc$^1/1-0-' -'-ii/3-fun-2-' -'-info_lines/3-lc$^0/1-0-' -'-i_line/3-lc$^0/1-0-' -'-h_line/1-lc$^0/1-0-' -'-port_list/1-fun-0-' -ensure_sockaddr -lock_socket -udp_sync_input -tcp_sync_input -tcp_controlling_process -tcp_close -exbadseq -exbadport -port_list -sctp_sockets -udp_sockets -tcp_sockets -fmt_port -enotconn -fmt_addr -fmt_status3 -fmt_status2 -fmt_compat_status_merge -fmt_compat_status -fmt_status -which_packet_type -sent -local_address -foreign_address -upper -hh_field -h_field -h_line -i_line -info_lines -smax -ii -change_bindx_0_port -set_bindx_port -open_setopts -open_opts -open_fd -gethostbyaddr_tm_native -gethostbyaddr_self -gethostbyname_string -gethostbyname_self -gethostbyname_tm_native -formerr -wins -getaddrs_tm -binary2filename -filename2binary -add_opt -sctp_opt_ifaddr -sctp_opt -sctp_opts -sctp_options -gen_udp_module -udp_module_1 -udp_add -udp_opt -gen_tcp_module -tcp_module_1 -list_add -backlog -list_opt -listen_opts -inet_default_listen_options -listen_options -con_add -ifaddr -con_opt -connect_opts -inet_default_connect_options -connect_options -stats -ipv4_mapped_ipv6_address -strict_address -parse_strict_address -ipv6strict_address -parse_ipv6strict_address -ipv4strict_address -parse_ipv4strict_address -ipv6_address -parse_ipv6_address -parse_ipv4_address -getaddrs -getaddr_tm -getll -is_ip_address -is_ipv6_address -is_ipv4_address -pi_replace -states -socket_to_list -gethostbyaddr_tm -nostring -gethostbyname_tm -popf -pushf -withsocket -getif -udp_closed -optuniquify -udp_controlling_process -udp_close -open_bind -udp_opts -translate_ip -getaddr -getserv -bad_encoding -on -'-init/0-inlined-0-' -'-set_hostname/1-fun-0-' -'-load_hosts/2-fun-0-' -'-win32_load1/3-fun-0-' -'-win32_load1/3-fun-1-' -scan_inetrc -parse_inetrc_skip_line -parse_inetrc -inet_warnings -try_get_rc -inetrc -read_inetrc -valid_type -extract_cfg_files1 -extract_cfg_files -read_rc -win32_get_strings -split_line -win32_split_line -win32_load1 -change_key -nt -win32_load_from_registry -load_hosts -load_resolv -set_search_dom -inet_dns_when_nis -add_dns_lookup -host_conf_bsdos -host_conf_freebsd -host_conf_linux -nsswitch_conf -sunos -netbsd -freebsd -'bsd/os' -do_load_resolv -nonames -shortnames -sname -erl_dist_mode -gethostbyname -'-add_hosts/1-fun-0-' -'-res_cache_answer/1-lc$^0/1-0-' -'-res_filter_rrs/2-lc$^0/1-0-' -'-res_lookup_fun/1-lc$^0/1-0-' -'-res_lookup_fun/1-fun-1-' -'-handle_call/3-lc$^2/1-0-' -chars -'-do_add_host/5-lc$^0/1-0-' -'-do_add_host/5-fun-1-' -'-do_add_host/5-lc$^3/1-1-' -'-do_add_host/5-lc$^2/1-2-' -'-do_del_host/3-lc$^0/1-0-' -'-add_ip_bynms/5-fun-0-' -'-del_ip_bynms/4-fun-0-' -'-load_hosts_list/3-lc$^0/1-0-' -'-load_hosts_list/3-lc$^1/1-1-' -'-rc_opt_req/1-lc$^0/1-0-' -'-do_add_rrs/4-lc$^1/1-1-' -'-do_add_rrs/4-lc$^0/1-0-' -'-lookup_cache_data/2-lc$^0/1-0-' -'-match_rr/6-lc$^0/1-0-' -'-match_rr/6-lc$^1/1-1-' -'-lists_subtract/2-fun-0-' -handle_take_socket_type -handle_put_socket_type -lists_nth -lists_keydelete -lists_subtract -lists_delete -delete_oldest -alloc_entry -delete_expired -stop_timer -init_timer -stripdot_1 -stripdot -eq_domains -rfc_4343_lc -tolower -match_rr -lookup_cache_data -times -do_add_rrs -is_reqname -is_res_set -set_socks_methods -rc_reqname -clear_search -clear_ns -replace_search -replace_ns -rc_opt_req -handle_calls -handle_rc_list -ets_clean_map_keys -load_hosts_list_byname -load_hosts_list_byaddr -load_hosts_list -inet_family -del_ip_bynms -add_ip_bynms -do_del_host -do_add_host -handle_update_file -handle_set_file -refresh_timeout -set_resolv_conf_tm -set_hosts_file_tm -load_hosts_file -res_hosts_file_info -res_resolv_conf_info -listreplace -reset_db -inet_sockets -inet_hosts_file_byname -inet_hosts_byname -inet_cache -inet_backend -take_socket_type -put_socket_type -lookup_socket -unregister_socket -nxdomain -ent_gethostbyaddr -res_gethostbyaddr -ptr -gethostbyaddr -cname -resolve_cnames -res_lookup_fun -res_filter_rrs -hostent -aaaa -make_hostent -dns_rec -res_hostent_by_domain -hostent_by_domain -get_searchlist -getbysearch -dots -getbyname -add_rrs -res_cache_answer -del_rr -dns_rr -add_rr -db_get -res_update -res_hosts_file_tm -res_update_hosts -res_resolv_conf_tm -res_update_conf -hostname -noproxy -methods -socks_option -res_check_search -res_check_ns -res_check_list -res_check_option_absfile -visible_string -res_check_option -res_dnssec_ok -res_recurse -resolv_conf_name -nameserver -hosts_file_name -alt_nameserver -res_optname -res_set -res_id -next_id -res_option -get_rc_hosts -get_rc_ns -get_rc_noproxy -res_alt_ns -cache_refresh_interval -res_res_dnssec_ok -res_domain -res_edns -inet_hosts_byaddr -res_hosts_file -res_inet6 -res_lookup -res_ns -res_resolv_conf -res_retry -res_search -res_servfail_retry_timeout -res_timeout -res_udp_payload_size -res_usevc -socks5_server -socks5_port -socks5_noproxy -socks5_methods -cache_size -cache_refresh -get_rc -valid_lookup -dns -nis -nisplus -yp -translate_lookup -add_rc_list -add_rc_bin -add_rc -sctp_module -set_sctp_module -udp_module -set_udp_module -tcp_module -set_tcp_module -set_cache_refresh -set_cache_size -del_socks_noproxy -add_socks_noproxy -del_socks_methods -add_socks_methods -set_socks_port -set_socks_server -inet_hosts_file_byaddr -get_hosts_file -hosts_file -set_hosts_file -resolv_conf -set_resolv_conf -dnssec_ok -set_dnssec_ok -udp_payload_size -set_udp_payload_size -edns -set_edns -usevc -set_usevc -set_inet6 -servfail_retry_timeout -set_servfail_retry_timeout -retry -set_retry -set_timeout -recurse -set_recurse -set_lookup -set_domain -set_hostname -del_search -ins_search -add_search -del_alt_ns -ins_alt_ns -alt_nameservers -add_alt_ns -del_ns -ins -ins_ns -nameservers -listop -add_ns -clear_hosts -del_host -add_host -add_hosts -resolv -add_resolv -badcall -format_child_log_error_single -format_child_log_progress_single -terminate_pid -no_stderror -standard_error_sup -'-start_port/1-fun-0-' -'-do_setopts/1-fun-0-' -'-wrap_characters_to_binary/3-lc$^0/1-0-' -wrap_characters_to_binary -send_port -put_port -io_requests -rows -columns -get_geometry -do_io_request -get_fd_geometry -onlcr -server -start_port -beam_flatten -beam_ssa_recv -beam_types -beam_listing -v3_core -beam_ssa_lint -core_scan -sys_messages -beam_ssa_check -beam_ssa_codegen -beam_ssa_dead -beam_a -beam_call_types -sys_core_prepare -beam_validator -beam_bounds -beam_digraph -beam_ssa_type -beam_ssa_bc_size -core_lint -beam_block -core_pp -beam_ssa_bsm -beam_ssa_throw -beam_ssa_alias -beam_kernel_to_ssa -beam_dict -sys_pre_attributes -core_lib -cerl_trees -sys_core_fold -beam_ssa_opt -v3_kernel -sys_core_fold_lists -beam_ssa_private_append -erl_bifs -beam_ssa_pre_codegen -beam_ssa_share -beam_ssa_bool -rec_env -beam_clean -beam_ssa -sys_core_alias -cerl_clauses -cerl_inline -sys_core_bsm -sys_core_inline -cerl -beam_utils -beam_opcodes -beam_jump -v3_kernel_pp -beam_ssa_pp -beam_trim -core_parse -beam_disasm -beam_z -beam_asm -rejected_ftr -permanent_ftr -until -while -experimental_ftr_2 -ifn -experimental_ftr_1 -unless -approved_ftr_2 -approved_ftr_1 -init_done -maybe_expr -'-init_features/0-inlined-3-' -'-init_features/0-inlined-2-' -'-configurable/0-lc$^0/1-0-' -'-long/1-lc$^0/1-0-' -'-long/1-lc$^1/1-1-' -'-history/2-fun-0-' -'-history/2-fun-1-' -'-nqTeX/1-fun-0-' -'-keyword_fun/2-fun-0-' -'-add_feature_fun/2-fun-0-' -'-remove_feature_fun/2-fun-0-' -'-feature_error/1-fun-0-' -'-feature_error/1-fun-1-' -'-format_error/1-F/1-0-' -'-init_features/0-fun-0-' -'enable-feature' -'disable-feature' -'-init_features/0-fun-1-' -'-init_features/0-fun-2-' -'-init_features/0-fun-3-' -'-init_features/0-fun-4-' -'-init_features/0-fun-5-' -'-collect_features/1-lc$^0/1-0-' -test_features -add_ftr -feature -collect_features -features_in -set_keywords -enabled_features -ensure_init -init_specs -init_features -incorrect_features -feature_error -configurable_features -remove_features_fun -add_features_fun -remove_feature_fun -add_feature_fun -invalid_features -not_configurable -enable -disable -keyword_fun -invalid_feature -adjust -nqTeX -rejected -experimental -approved -history -long -is_configurable -is_valid -feature_specs -'-characters_to_binary_int/3-fun-0-' -'-i_trans/1-fun-0-' -'-i_trans_chk/1-fun-0-' -'-o_trans/1-fun-7-' -'-o_trans/1-fun-8-' -'-o_trans/1-fun-3-' -'-o_trans/1-fun-4-' -'-o_trans/1-fun-1-' -'-o_trans/1-fun-2-' -'-o_trans/1-fun-0-' -'-o_trans/1-fun-9-' -'-o_trans/1-fun-10-' -'-o_trans/1-fun-5-' -'-o_trans/1-fun-6-' -error_type -do_i_utf32_little -do_i_utf32_big -do_i_utf16_little -do_i_utf16_big -do_i_utf8 -do_i_utf32_little_chk -do_i_utf32_big_chk -do_i_utf16_little_chk -do_i_utf16_big_chk -do_i_utf8_chk -do_o_binary2 -do_o_binary -o_trans -i_trans_chk -i_trans -ml_map -fake_stacktrace -do_characters_to_list -prepend_row_to_acc -acc_to_binary -characters_to_nfkc_binary -nfkc -characters_to_nfkc_list -characters_to_nfc_binary -nfc -characters_to_nfkd_binary -nfkd -characters_to_nfkd_list -characters_to_nfd_binary -nfd -characters_to_nfd_list -encoding_to_bom -bom_to_encoding -no_conversion_needed -'-getenv/0-lc$^0/1-0-' -flush_exit -flush_until_down -validate3 -validate2 -validate1 -mk_cmd -get_option -max_size -do_cmd -cmd -extensions -reverse_element -split_path -can_be_full_name -verify_executable -find_executable1 -iterator_1_from -iterator_1 -take_1 -take_any -from_orddict -enter -update_1 -get_1 -is_defined_1 -lookup_1 -fold_1 -is_set -is_subset_2 -is_subset_1 -is_subset -difference_2 -difference_1 -difference -is_disjoint_1 -is_disjoint -intersection_list -intersection_2 -intersection_1 -union_list -balance_revlist_1 -balance_revlist -push -union_2 -union_1 -mk_set -iterator_from -to_list_1 -largest_1 -largest -take_largest1 -take_largest -smallest_1 -smallest -take_smallest1 -take_smallest -delete_1 -delete_any -del_element -from_ordset -balance_list_1 -balance_list -balance -key_exists -insert_1 -is_member_1 -singleton -nonono -'-encode_hex1/2-lbc$^0/2-0-' -'-decode_hex1/1-lbc$^0/2-0-' -decode_hex2 -decode_hex1 -decode_hex -encode_hex2 -encode_hex1 -lowercase -uppercase -encode_hex -insert_replaced -get_opts_replace -splitat -do_insert -do_replace -bin_to_list -no_debug_info -'-md5/1-lc$^0/1-0-' -'-diff_directories/2-fun-0-' -'-beam_files/1-lc$^0/1-0-' -'-strip_fils/2-lc$^0/1-0-' -'-read_all_but_useless_chunks/1-lc$^0/1-0-' -'-read_all_chunks/1-lc$^0/1-0-' -'-scan_beam/4-lc$^0/1-0-' -'-attributes/2-fun-0-' -'-attributes/2-lc$^1/1-0-' -'-anno_from_forms/1-lc$^0/1-0-' -'-try_load_crypto_fun/1-fun-0-' -'-try_load_crypto_fun/1-fun-1-' -alt_lookup_key -try_load_crypto_fun -f_p_s -crypto_key_fun_from_file_1 -crypto_key_fun_from_file -call_crypto_server_1 -beam_lib__crypto_key_server -call_crypto_server -get_crypto_key -start_crypto -restore_typed_record_fields -anno_from_forms -abstract_v2 -abstract_v1 -old_anno_from_term -crypto_one_time -crypto -des_ede3_cbc -decrypt_chunk -mandatory_chunks -md5_chunks -significant_chunks -assert_directory -maybe_uncompress -beam_filename -read_all -bb -extract_atom -extract_atoms -ensure_atoms -symbol -symbols1 -symbols -locals -labeled_locals -labeled_exports -indexed_imports -imports -chunk_name_to_id -compile_info -chunk_to_data -erlang_v1 -debug_info_v1 -atom_chunk -abst_chunk -chunks_to_data -del_chunk -get_data -get_atom_data -scan_beam2 -scan_beam1 -scan_beam -atoms -check_chunks -beam_symbols -allow_missing_chunks -read_chunk_data -read_all_chunks -filter_funtab_1 -filter_funtab -filter_significant_chunks -read_significant_chunks -is_useless_chunk -read_all_but_useless_chunks -build_chunks -strip_file -strip_fils -strip_rel -cmp_lists -cmp_files -wildcard -beam_files -compare_files -restriction -image -symmetric_partition -compare_dirs -diff_only -diff_directories -read_info -build_module -des3_cbc -make_crypto_key -clear_crypto_key_fun -crypto_key_fun -exists -different_chunks -not_a_directory -not_a_beam_file -chunks_different -unknown_chunk -modules_different -missing_backend -key_missing_or_invalid -invalid_chunk -invalid_beam_file -chunk_too_big -strip_release -strip_files -strip -diff_dirs -cmp_dirs -cmp -all_chunks -ignored -cannot_detach_with_standard_io -'-init/1-fun-0-' -'-verify_args/1-lc$^0/1-0-' -'-verify_args/1-lc$^1/1-1-' -'-encode_port_data/1-lbc$^0/2-0-' -'-maybe_listen/1-lc$^0/1-0-' -'-maybe_listen/1-lc$^1/1-1-' -ntoa -'-command_line/2-lc$^0/1-0-' -'-parse_args/1-lc$^0/1-0-' -'-start_peer_channel_handler/0-fun-3-' -'-start_peer_channel_handler/0-lc$^5/1-2-' -'-start_peer_channel_handler/0-fun-4-' -parse_address -'-start_peer_channel_handler/0-lc$^0/1-0-' -'-start_peer_channel_handler/0-fun-1-' -'-start_peer_channel_handler/0-lc$^2/1-1-' -'-handle_peer_alternative/3-fun-0-' -'-do_call/4-fun-0-' -handle_port_alternative -handle_peer_alternative -io_server_loop -loop_connect -tcp_init -io_server -origin_link -relay -peer_detached -start_peer_channel_handler -peer_channel_terminated -loop_supervision -peer_supervision_connect_timeout -peer_sup_connect_channel -peer_channel_connect_timeout -peer_sup_state -channel_connect -peer_supervision -start_orphan_supervision -init_supervision -start_supervision -notify_started -default_erts -unquote -parse_args -maybe_otp_test_suite -find_executable -encode_to_string -command_line -longnames -name_arg -prefer_localhost -maybe_listen -boot_complete -handle_port_binary -decode_port_data -encode_port_data -peer_to_origin -origin_to_peer -forward_request -handle_alternative_data -peer_down -maybe_stop -node_name -boot_failed -wait_boot -make_notify_ref -invalid_arg -not_alive -detached -char_list -exec -verify_args -force_disconnect_node -wait_disconnected -deadline -register_socket -get_node -cover -booting -peer_state -connection -post_process_args -get_state -random_name -'-compact/1-lc$^0/1-0-' -'-substitute_aliases/2-lc$^0/1-0-' -'-substitute_negations/2-lc$^0/1-0-' -'-expand/2-lc$^0/1-0-' -'-split/2-lc$^0/1-0-' -'-split/2-lc$^1/1-1-' -'-to_map/1-fun-0-' -from_map -to_map -negations -aliases -apply_stages -key_uniq_1 -key_uniq -expand_3 -expand_2 -expand_1 -expand_0 -expand -substitute_negations_1 -substitute_aliases_1 -substitute_aliases -get_bool -append_values -get_all_values -lookup_all -property -lait -liat -daeh -snoc -tail -delete_with_rear -delete_with_front -delete_with_r -delete_with -delete_rear -delete_front -delete_r -filtermap_r -filter_r -filter_f -split_r1_to_f2 -split_f1_to_r2 -drop_r -peek_r -get_r -out_r -in_r -is_empty -is_queue -'-set_restart_flag/1-fun-0-' -reply_return -noreply_return -'$no_default_return' -try_callback_call -maybe_notify_mode_change -set_mode -overload_levels_ok -flush_load -kill_if_choked -limit_burst -check_load -reset_restart_flag -set_restart_flag -overload_kill_qlen -overload_kill_mem_size -overload_kill_enable -burst_limit_window_time -burst_limit_max_count -do_check_opts -invalid_olp_levels -invalid_olp_config -check_opts -do_load -apply_after -overload_kill_restart_after -reset_state -mode_ref -last_qlen -last_load_ts -cb_state -burst_win_ts -burst_msg_count -olp_ref -result -restart_failed -get_opts -'$olp_load' -log_failed -try_log -flushed -drop -mode_change -overloaded -handle_load -get_ref -system_logger -sync_mode_qlen -flush_qlen -drop_mode_qlen -burst_limit_enable -get_default_opts -child_spec -no_state -get_pid -'-limit_report/2-lc$^0/1-0-' -'-format_log_multi/2-fun-0-' -'-format_log_state/2-lc$^0/1-0-' -format_log_state -format_client_log -format_client_log_single -format_server_log_single -limit_client_report -dead -client_stacktrace -client_info -catch_result -handle_common_reply -try_terminate -try_handle_call -try_handle_cast -try_handle_info -handle_continue -try_handle_continue -try_dispatch -do_send -create_callback_cache -callback_cache -mc_cancel_timer -mc_recv_tmo -mc_recv -mc_send -multi_call -do_abcast -abcast -'$gen_cast' -cast_msg -do_cast -'$gen_call' -'-inlined-level_to_int/1-' -'-set/3-lc$^0/1-0-' -'-set_module_level/2-lc$^0/1-0-' -'-unset_module_level/1-lc$^0/1-1-' -'-unset_module_level/1-lc$^1/1-0-' -'-get_module_level/0-lc$^0/1-0-' -'$handler_config$' -'$primary_config$' -'$proxy_config$' -table_key -int_to_level -less_or_equal_level -on_match -filter_remote_gl -filter_progress -filter_level -filter_domain -neq -lteq -gteq -not_equal -equal -simple_handler_process_dead -handler_process_name_already_exists -'-adding_handler/1-fun-0-' -'-replay_buffer/1-F/1-0-' -'-do_log/2-fun-0-' -'-display/1-lc$^0/1-0-' -'-display_report/1-fun-0-' -'-display_report/1-fun-1-' -display_report -display_date -display_log -drop_msg -replay_buffer -dropped -buffer_size -update_buffer -rich -no_log_file -allready_have_logfile -'-tty/1-fun-0-' -error_logger_format_depth -error_logger_tty_true -error_logger_tty_false -logfile -which_report_handlers -delete_report_handler -add_report_handler -scan_format -report_to_format -maybe_add_domain -get_report_cb -std_warning -fix_warning_type -fix_warning_tag -maybe_map_warnings -register_handler -stop_error -report_problem -send_shutdown -check_callback -check_system -get_heart_cmd -send_heart_cmd -send_heart_beat -do_cycle_port_program -check_schedulers -validate_options -no_reboot_shutdown -port_terminated -bad_cmd -bad_options -wait_ack -bad_heart_flag -check_start_heart -get_heart_timeouts -port_problem -start_portprogram -wait -cycle -get_options -set_options -clear_callback -get_callback -set_callback -clear_cmd -get_cmd -set_cmd -no_heart -wait_for_init_ack -bad_name -bad_directory -'-try_finish_module_2/5-inlined-0-' -'-start_link/1-fun-0-' -'-init/3-fun-0-' -'-init/3-lc$^1/1-0-' -'-get_user_lib_dirs_1/1-lc$^0/1-0-' -'-handle_call/3-lc$^1/1-1-' -'-handle_call/3-lc$^0/1-0-' -'-choose_bundles/1-lc$^0/1-0-' -'-choose_bundles/1-lc$^1/1-1-' -'-vsn_to_num/1-lc$^0/1-0-' -'-is_numstr/1-fun-0-' -'-cache_path/1-lc$^0/1-0-' -'-exclude/2-lc$^0/1-0-' -'-set_path/5-lc$^0/1-0-' -'-try_archive_subdirs/3-fun-0-' -'-stick_dir/3-fun-1-' -'-stick_dir/3-fun-0-' -'-try_finish_module/6-fun-1-' -'-try_finish_module/6-fun-0-' -on_load_failure -'-try_finish_module_2/5-fun-0-' -'-finish_loading/3-fun-3-' -'-finish_loading/3-fun-2-' -'-finish_loading/3-fun-1-' -'-finish_loading/3-fun-0-' -'-finish_loading_ensure/2-lc$^0/1-0-' -pending_on_load -'-abort_if_pending_on_load/2-lc$^0/1-0-' -sticky_directory -'-abort_if_sticky/2-lc$^0/1-0-' -'-do_finish_loading/2-lc$^0/1-0-' -'-do_finish_loading/2-lc$^1/1-2-' -'-do_finish_loading/2-lc$^2/1-1-' -'-handle_on_load/5-fun-0-' -'-finish_on_load/3-lc$^0/1-0-' -'-finish_on_load_report/2-fun-0-' -finish_on_load_report -finish_on_load_2 -finish_on_load_1 -finish_on_load -handle_pending_on_load_1 -handle_pending_on_load -handle_on_load -do_finish_loading -abort_if_sticky -abort_if_pending_on_load -finish_loading_ensure -with_cache -mod_to_bin -try_finish_module_2 -try_finish_module_1 -try_finish_module -get_mods -sticky -'bad request to code' -priv -do_dir -lookup_name -delete_name_dir -delete_name -replace_name -del_ebin_1 -del_ebin -check_pars -replace_path1 -insert_old_shadowed -del_path1 -try_archive_subdirs -archive_subdirs -do_insert_name -insert_name -insert_dir -init_namedb -code_names -create_namedb -maybe_update -do_add -do_check_path -check_path -split_base -discard_after_hyphen -get_name_from_splitted -get_name -get_arg -add_pa_pz -merge_path1 -merge_path -strip_path -exclude_pa_pz -cache_boot_paths -do_cache_path -cache_path -'-zip/3-lc$^0/1-1-' -'-zip/3-lc$^1/1-0-' -add_loader_path -try_ebin_dirs -'-zip3/4-lc$^0/1-2-' -'-zip3/4-lc$^1/1-1-' -'-zip3/4-lc$^2/1-0-' -choose -'-zipwith/4-lc$^0/1-1-' -'-zipwith/4-lc$^1/1-0-' -split2 -'-zipwith3/5-lc$^0/1-2-' -split1 -'-zipwith3/5-lc$^1/1-1-' -'-zipwith3/5-lc$^2/1-0-' -'-filter/2-lc$^0/1-0-' -is_numstr -is_vsn -vsn_to_num -create_bundle -uniq_2 -choose_bundles -uniq_1 -rufmerge2_2 -rufmerge2_1 -ufmerge2_2 -ufmerge2_1 -rufmergel -ufmergel -ufsplit_2 -ufsplit_1_1 -ufsplit_1 -rfmerge2_2 -rfmerge2_1 -fmerge2_2 -unknown_system_msg -fmerge2_1 -change_code -rfmergel -fmergel -fsplit_2_1 -fsplit_2 -fsplit_1_1 -do_sys_cmd -suspend_loop -fsplit_1 -gen_reply -rukeymerge2_2 -rukeymerge2_1 -ukeymerge2_2 -code_call -split_paths -get_user_lib_dirs_1 -get_user_lib_dirs -ukeymerge2_1 -rukeymerge3_21_3 -rukeymerge3_12_3 -rukeymerge3_2 -rukeymerge3_1 -ukeymerge3_21_3 -ukeymerge3_12_3 -ukeymerge3_2 -ukeymerge3_1 -rukeymergel -ukeymergel -ukeysplit_2 -ukeysplit_1_1 -ukeysplit_1 -rkeymerge2_2 -rkeymerge2_1 -keymerge2_2 -keymerge2_1 -rkeymerge3_21_3 -rkeymerge3_12_3 -rkeymerge3_2 -rkeymerge3_1 -keymerge3_21_3 -keymerge3_12_3 -keymerge3_2 -keymerge3_1 -rkeymergel -keymergel -keysplit_2_1 -keysplit_2 -keysplit_1_1 -keysplit_1 -rumerge2_2 -rumerge2_1 -umerge2_2 -umerge2_1 -rumerge3_21_3 -rumerge3_12_3 -rumerge3_2 -rumerge3_1 -umerge3_21_3 -umerge3_12_3 -umerge3_2 -umerge3_1 -rumergel -umergel -usplit_2_1 -desc -usplit_2 -usplit_1_1 -asc -usplit_1 -rmerge2_2 -rmerge2_1 -merge2_2 -merge2_1 -rmerge3_21_3 -rmerge3_12_3 -rmerge3_2 -rmerge3_1 -merge3_21_3 -merge3_12_3 -merge3_2 -merge3_1 -rmergel -mergel -split_2_1 -split_2 -split_1_1 -split_1 -join_prepend -splitwith_1 -search_1 -dropwhile_1 -takewhile_1 -mapfoldr_1 -mapfoldr -mapfoldl_1 -foreach_1 -filtermap_1 -filtermap -partition_1 -foldr_1 -foldl_1 -flatmap_1 -map_1 -any_1 -all_1 -rumerge3 -umerge3 -rumerge_1 -rumerge -umerge_1 -usort_1 -rmerge_1 -merge_1 -enumerate_1 -enumerate -keymap -rukeymerge_1 -rukeymerge -ukeymerge_1 -ukeymerge -ukeysort_1 -ukeysort -rkeymerge_1 -rkeymerge -keymerge_1 -keymerge -keysort_1 -keystore2 -keyreplace3 -keydelete3 -flatlength -thing_to_list -rmerge -rmerge3 -merge3 -sort_1 -zipwith3 -zipwith -unzip3 -zip3 -pad -sublist_2 -sublist -sum -seq_loop -seq -droplast -suffix -prefix -nthtail_1 -nth_1 -module_not_found -'-format_status/2-inlined-0-' -'-do_unlink/2-fun-0-' -parent_terminated -'-terminate_supervised/4-fun-0-' -'-system_code_change/4-fun-0-' -'-system_get_state/1-lc$^0/1-0-' -'-system_replace_state/2-lc$^0/1-0-' -'-report_error/5-fun-0-' -'-report_error/5-fun-1-' -'-report_error/5-fun-2-' -'-the_handlers/1-lc$^0/1-0-' -'-get_modules/1-lc$^0/1-0-' -'-format_status/2-fun-0-' -items -get_log -stop_handlers -the_handlers -'function not exported' -'module could not be loaded' -fix_reason -no_handle_info -last_message -report_error -gen_event_EXIT -report_terminate -server_call_update -server_call -new_handler -do_swap -server_update -server_notify -swapped -split_and_terminate -s_s_h -server_swap_handler -server_delete_handler -server_add_sup_handler -server_add_handler -print_event -system_replace_state -system_get_state -system_code_change -system_terminate -system_continue -terminate_supervised -do_unlink -terminate_server -handle_event -handle_debug -handle_system_msg -decode_msg -fetch_msg -wake_hib -call1 -which_handlers -swap_sup_handler -swap_handler -delete_handler -sync_notify -add_sup_handler -nolink -'no callback module' -'-terminate/2-lc$^0/1-0-' -'-kill_children/1-fun-0-' -exit_after -set_timer -kill_all_procs_1 -kill_all_procs -kill_children -terminate_child_i -get_child_i -prep_stop -loop_it -start_supervisor -start_the_app -start_it_new -start_it_old -bad_keys -relay_to_group_leader -terminate_loop -main_loop -init_loop -legacy_header -'-get_handler_config/0-lc$^0/1-0-' -'-get_module_level/1-lc$^0/1-0-' -'-print_filters/3-lc$^0/1-0-' -'-print_handlers/2-lc$^0/1-0-' -'-print_custom/3-lc$^0/1-0-' -'-print_module_levels/2-lc$^0/1-0-' -'-reconfigure/0-lc$^0/1-0-' -'-internal_init_logger/0-lc$^0/1-0-' -'-internal_init_logger/0-lc$^1/1-1-' -'-add_handlers/2-fun-0-' -'-get_primary_filters/1-lc$^0/1-0-' -'-get_primary_filters/1-fun-1-' -'-get_proxy_opts/1-lc$^0/1-0-' -proc_meta -log_remote -deatomize -tid -do_log_allowed -log_fun_allowed -do_log -get_logger_env -get_default_handler_filters -standard_io -init_default_config -multiple_proxies -get_proxy_opts -multiple_filters -get_primary_filters -get_primary_filter_default -logger_default_metadata -logger_metadata -get_primary_metadata -get_logger_level -tty -get_logger_type -module_level -check_logger_config -setup_handler -bad_proxy_config -init_kernel_handlers -bad_config -reconfigure -print_module_levels -print_custom -print_handlers -print_filters -i_modules -i_proxy -i_handlers -i_primary -module_levels -get_config -unset_process_metadata -get_process_metadata -update_process_metadata -'$logger_metadata$' -set_process_metadata -lt -gt -level_to_int -eq -compare_levels -get_module_level -unset_application_level -set_application_level -get_proxy_config -get_handler_ids -filter_config -get_handler_config -get_primary_config -update_proxy_config -update_handler_config -update_primary_config -set_proxy_config -set_handler_config -set_primary_config -remove_handler_filter -remove_primary_filter -add_handler_filter -add_primary_filter -printable_unicode_list -string_p1 -string_p -format_term_list -format_otp_report -distribution_not_changed -kernel_safe_sup -global_groups -is_gg_changed -global_groups_added -global_groups_removed -global_groups_changed -do_global_groups_change -is_dist_changed -distribution_changed -do_distribution_change -start_compile_server -start_pg -start_disk_log -boot_server_slaves -get_boot_args -start_boot_server -start_dist_ac -start_distribution -supervision_child_spec -add_handlers -internal_init_logger -'-build_typed_attribute/2-fun-0-' -'-build_typed_attribute/2-fun-1-' -'-attribute_farity_list/1-lc$^0/1-0-' -'-attribute_farity_map/1-lc$^0/1-0-' -'-check_clauses/3-lc$^0/1-0-' -'-first_anno/1-fun-0-' -'-last_anno/1-fun-0-' -'-enc_func/1-fun-2-' -'-enc_func/1-fun-1-' -'-enc_func/1-fun-0-' -'-abstract/3-lc$^0/1-0-' -'-abstract_map_fields/3-lc$^0/1-0-' -'-map_anno/2-fun-0-' -'-fold_anno/3-fun-0-' -'-new_anno/1-fun-0-' -'-anno_to_term/1-fun-0-' -from_term -'-anno_from_term/1-fun-0-' -yeccgoto_typed_record_fields -yeccgoto_typed_exprs -yeccgoto_typed_expr -yeccgoto_typed_attr_val -yeccgoto_type_spec -yeccgoto_type_sigs -yeccgoto_type_sig -yeccgoto_type_guards -yeccgoto_type_guard -yeccgoto_type -yeccgoto_tuple -yeccgoto_try_opt_stacktrace -yeccgoto_try_expr -yeccgoto_try_clauses -yeccgoto_try_clause -yeccgoto_try_catch -yeccgoto_top_types -yeccgoto_top_type -yeccgoto_tail -yeccgoto_strings -yeccgoto_ssa_check_when_clauses -yeccgoto_ssa_check_when_clause -yeccgoto_ssa_check_pats -yeccgoto_ssa_check_pat -yeccgoto_ssa_check_map_key_tuple_elements -yeccgoto_ssa_check_map_key_list -yeccgoto_ssa_check_map_key_elements -yeccgoto_ssa_check_map_key_element -yeccgoto_ssa_check_map_key -yeccgoto_ssa_check_list_lit_ls -yeccgoto_ssa_check_list_lit -yeccgoto_ssa_check_fun_ref -yeccgoto_ssa_check_exprs -yeccgoto_ssa_check_expr -yeccgoto_ssa_check_clause_args_ls -yeccgoto_ssa_check_clause_args -yeccgoto_ssa_check_binary_lit_rest -yeccgoto_ssa_check_binary_lit_bytes_ls -yeccgoto_ssa_check_binary_lit -yeccgoto_ssa_check_args -yeccgoto_ssa_check_anno_clauses -yeccgoto_ssa_check_anno_clause -yeccgoto_ssa_check_anno -yeccgoto_spec_fun -yeccgoto_record_tuple -yeccgoto_record_pat_expr -yeccgoto_record_fields -yeccgoto_record_field -yeccgoto_record_expr -yeccgoto_receive_expr -yeccgoto_prefix_op -yeccgoto_pat_exprs -yeccgoto_pat_expr_max -yeccgoto_pat_expr -yeccgoto_pat_argument_list -yeccgoto_opt_bit_type_list -yeccgoto_opt_bit_size_expr -yeccgoto_mult_op -yeccgoto_maybe_match_exprs -yeccgoto_maybe_match -yeccgoto_maybe_expr -yeccgoto_map_tuple -yeccgoto_map_pat_expr -yeccgoto_map_pair_types -yeccgoto_map_pair_type -yeccgoto_map_key -yeccgoto_map_fields -yeccgoto_map_field_exact -yeccgoto_map_field_assoc -yeccgoto_map_field -yeccgoto_map_expr -yeccgoto_map_comprehension -yeccgoto_list_op -yeccgoto_list_comprehension -yeccgoto_list -yeccgoto_lc_exprs -yeccgoto_lc_expr -yeccgoto_integer_or_var -yeccgoto_if_expr -yeccgoto_if_clauses -yeccgoto_if_clause -yeccgoto_guard -yeccgoto_function_clauses -yeccgoto_function_clause -yeccgoto_function_call -yeccgoto_function -yeccgoto_fun_type -yeccgoto_fun_expr -yeccgoto_fun_clauses -yeccgoto_fun_clause -yeccgoto_form -yeccgoto_field_types -yeccgoto_field_type -yeccgoto_exprs -yeccgoto_expr_remote -yeccgoto_expr_max -yeccgoto_expr -yeccgoto_cr_clauses -yeccgoto_cr_clause -yeccgoto_comp_op -yeccgoto_clause_guard -yeccgoto_clause_body_exprs -yeccgoto_clause_body -yeccgoto_clause_args -yeccgoto_case_expr -yeccgoto_bit_type_list -yeccgoto_bit_type -yeccgoto_bit_size_expr -yeccgoto_bit_expr -yeccgoto_binary_type -yeccgoto_binary_comprehension -yeccgoto_binary -yeccgoto_bin_unit_type -yeccgoto_bin_elements -yeccgoto_bin_element -yeccgoto_bin_base_type -yeccgoto_attribute -yeccgoto_attr_val -yeccgoto_atomic -yeccgoto_atom_or_var -yeccgoto_argument_list -yeccgoto_add_op -yeccpars2_680 -yeccpars2_679 -yeccpars2_678 -yeccpars2_677 -yeccpars2_676 -yeccpars2_674 -yeccpars2_673 -yeccpars2_672 -yeccpars2_671 -yeccpars2_670 -yeccpars2_668 -yeccpars2_667 -yeccpars2_664 -yeccpars2_663 -yeccpars2_662 -yeccpars2_660 -yeccpars2_659 -yeccpars2_658 -yeccpars2_656 -yeccpars2_655 -yeccpars2_654 -yeccpars2_652 -yeccpars2_651 -yeccpars2_650 -yeccpars2_649 -yeccpars2_648 -yeccpars2_647 -yeccpars2_646 -yeccpars2_644 -yeccpars2_642 -yeccpars2_641 -yeccpars2_639 -yeccpars2_637 -yeccpars2_636 -yeccpars2_635 -yeccpars2_634 -yeccpars2_633 -yeccpars2_632 -yeccpars2_630 -yeccpars2_628 -yeccpars2_627 -yeccpars2_625 -yeccpars2_624 -yeccpars2_623 -yeccpars2_622 -yeccpars2_621 -yeccpars2_619 -yeccpars2_618 -yeccpars2_617 -yeccpars2_616 -yeccpars2_615 -yeccpars2_614 -yeccpars2_613 -yeccpars2_610 -yeccpars2_609 -yeccpars2_607 -yeccpars2_606 -yeccpars2_605 -yeccpars2_604 -yeccpars2_603 -yeccpars2_602 -yeccpars2_601 -yeccpars2_600 -yeccpars2_599 -yeccpars2_597 -yeccpars2_595 -yeccpars2_594 -yeccpars2_593 -yeccpars2_592 -yeccpars2_591 -yeccpars2_590 -yeccpars2_589 -yeccpars2_588 -yeccpars2_587 -yeccpars2_586 -yeccpars2_585 -yeccpars2_584 -yeccpars2_580 -yeccpars2_579 -yeccpars2_577 -yeccpars2_576 -yeccpars2_575 -yeccpars2_574 -yeccpars2_573 -yeccpars2_572 -yeccpars2_571 -nonempty_list -yeccpars2_570 -yeccpars2_569 -yeccpars2_568 -yeccpars2_567 -yeccpars2_566 -yeccpars2_565 -yeccpars2_564 -yeccpars2_563 -yeccpars2_562 -yeccpars2_561 -yeccpars2_560 -yeccpars2_559 -yeccpars2_558 -yeccpars2_557 -yeccpars2_556 -yeccpars2_555 -yeccpars2_554 -yeccpars2_553 -yeccpars2_552 -yeccpars2_551 -yeccpars2_550 -yeccpars2_548 -yeccpars2_547 -yeccpars2_546 -yeccpars2_545 -yeccpars2_544 -yeccpars2_543 -yeccpars2_542 -yeccpars2_541 -yeccpars2_540 -yeccpars2_539 -yeccpars2_538 -yeccpars2_537 -yeccpars2_536 -yeccpars2_535 -yeccpars2_534 -yeccpars2_533 -yeccpars2_532 -yeccpars2_531 -yeccpars2_530 -yeccpars2_529 -yeccpars2_cont_528 -yeccpars2_528 -yeccpars2_527 -yeccpars2_526 -yeccpars2_525 -yeccpars2_523 -yeccpars2_522 -yeccpars2_521 -yeccpars2_520 -yeccpars2_519 -yeccpars2_518 -yeccpars2_516 -yeccpars2_515 -yeccpars2_514 -yeccpars2_512 -yeccpars2_511 -yeccpars2_510 -yeccpars2_508 -yeccpars2_507 -yeccpars2_506 -yeccpars2_505 -yeccpars2_504 -yeccpars2_503 -yeccpars2_502 -yeccpars2_500 -yeccpars2_499 -yeccpars2_498 -yeccpars2_497 -yeccpars2_496 -yeccpars2_495 -yeccpars2_494 -yeccpars2_493 -yeccpars2_492 -yeccpars2_491 -yeccpars2_490 -yeccpars2_489 -yeccpars2_488 -yeccpars2_487 -yeccpars2_486 -yeccpars2_485 -yeccpars2_484 -yeccpars2_483 -yeccpars2_481 -yeccpars2_480 -yeccpars2_479 -yeccpars2_477 -yeccpars2_476 -yeccpars2_474 -yeccpars2_473 -yeccpars2_472 -yeccpars2_471 -yeccpars2_470 -yeccpars2_468 -yeccpars2_466 -yeccpars2_465 -yeccpars2_464 -yeccpars2_463 -yeccpars2_462 -yeccpars2_461 -yeccpars2_460 -yeccpars2_459 -yeccpars2_458 -yeccpars2_457 -yeccpars2_456 -yeccpars2_454 -yeccpars2_453 -yeccpars2_452 -yeccpars2_451 -yeccpars2_450 -yeccpars2_449 -yeccpars2_448 -yeccpars2_447 -yeccpars2_446 -yeccpars2_445 -yeccpars2_444 -yeccpars2_443 -yeccpars2_442 -yeccpars2_441 -yeccpars2_439 -yeccpars2_437 -yeccpars2_436 -yeccpars2_435 -yeccpars2_434 -yeccpars2_433 -yeccpars2_432 -yeccpars2_431 -yeccpars2_430 -yeccpars2_429 -yeccpars2_427 -yeccpars2_426 -yeccpars2_425 -yeccpars2_424 -yeccpars2_423 -yeccpars2_422 -yeccpars2_420 -yeccpars2_419 -yeccpars2_417 -yeccpars2_416 -yeccpars2_415 -yeccpars2_413 -yeccpars2_412 -yeccpars2_411 -yeccpars2_410 -yeccpars2_409 -yeccpars2_408 -yeccpars2_407 -yeccpars2_406 -yeccpars2_405 -yeccpars2_404 -yeccpars2_403 -yeccpars2_402 -yeccpars2_400 -yeccpars2_398 -yeccpars2_397 -yeccpars2_395 -yeccpars2_393 -'<=' -yeccpars2_391 -yeccpars2_390 -yeccpars2_389 -yeccpars2_388 -yeccpars2_387 -yeccpars2_386 -yeccpars2_383 -yeccpars2_381 -yeccpars2_380 -yeccpars2_379 -yeccpars2_378 -yeccpars2_377 -yeccpars2_376 -yeccpars2_375 -yeccpars2_373 -yeccpars2_372 -yeccpars2_371 -yeccpars2_369 -yeccpars2_367 -yeccpars2_366 -yeccpars2_365 -yeccpars2_364 -yeccpars2_363 -yeccpars2_362 -yeccpars2_361 -yeccpars2_360 -yeccpars2_359 -yeccpars2_358 -yeccpars2_357 -yeccpars2_356 -yeccpars2_355 -yeccpars2_353 -yeccpars2_352 -yeccpars2_351 -yeccpars2_350 -yeccpars2_349 -yeccpars2_348 -yeccpars2_347 -yeccpars2_346 -yeccpars2_345 -yeccpars2_343 -yeccpars2_341 -yeccpars2_340 -yeccpars2_339 -yeccpars2_338 -yeccpars2_337 -yeccpars2_335 -yeccpars2_333 -yeccpars2_332 -yeccpars2_329 -yeccpars2_328 -yeccpars2_327 -yeccpars2_326 -yeccpars2_325 -yeccpars2_323 -yeccpars2_321 -yeccpars2_320 -yeccpars2_cont_319 -yeccpars2_319 -yeccpars2_317 -yeccpars2_316 -yeccpars2_315 -yeccpars2_314 -yeccpars2_313 -yeccpars2_312 -yeccpars2_310 -yeccpars2_308 -yeccpars2_306 -yeccpars2_304 -yeccpars2_303 -yeccpars2_301 -yeccpars2_299 -yeccpars2_298 -yeccpars2_297 -yeccpars2_296 -yeccpars2_295 -yeccpars2_294 -yeccpars2_292 -yeccpars2_287 -yeccpars2_286 -yeccpars2_284 -yeccpars2_283 -yeccpars2_282 -yeccpars2_281 -yeccpars2_280 -yeccpars2_279 -yeccpars2_278 -'||' -end -'?=' -'<-' -':=' -yeccpars2_277 -yeccpars2_276 -yeccpars2_275 -pass -yeccpars2_274 -yeccpars2_273 -yeccpars2_271 -yeccpars2_270 -yeccpars2_269 -yeccpars2_268 -yeccpars2_267 -yeccpars2_266 -yeccpars2_265 -yeccpars2_264 -yeccpars2_263 -yeccpars2_262 -yeccpars2_261 -yeccpars2_260 -yeccpars2_259 -yeccpars2_257 -yeccpars2_256 -yeccpars2_255 -yeccpars2_253 -yeccpars2_251 -yeccpars2_250 -yeccpars2_249 -yeccpars2_248 -yeccpars2_246 -yeccpars2_245 -yeccpars2_244 -yeccpars2_243 -yeccpars2_242 -yeccpars2_241 -yeccpars2_240 -yeccpars2_239 -yeccpars2_238 -yeccpars2_237 -yeccpars2_235 -yeccpars2_233 -yeccpars2_232 -yeccpars2_231 -yeccpars2_230 -yeccpars2_229 -yeccpars2_228 -yeccpars2_227 -yeccpars2_224 -yeccpars2_223 -yeccpars2_222 -yeccpars2_221 -yeccpars2_220 -yeccpars2_219 -yeccpars2_218 -yeccpars2_217 -yeccpars2_216 -yeccpars2_215 -yeccpars2_214 -yeccpars2_213 -yeccpars2_212 -yeccpars2_211 -yeccpars2_210 -yeccpars2_209 -yeccpars2_208 -yeccpars2_207 -yeccpars2_206 -yeccpars2_205 -yeccpars2_cont_204 -yeccpars2_204 -yeccpars2_203 -yeccpars2_202 -yeccpars2_201 -yeccpars2_200 -yeccpars2_199 -yeccpars2_198 -yeccpars2_197 -yeccpars2_196 -yeccpars2_195 -yeccpars2_194 -yeccpars2_193 -yeccpars2_192 -yeccpars2_191 -yeccpars2_190 -yeccpars2_189 -yeccpars2_188 -yeccpars2_187 -yeccpars2_186 -yeccpars2_185 -yeccpars2_184 -yeccpars2_183 -float_epsilon -yeccpars2_182 -yeccpars2_181 -yeccpars2_180 -local_fun -yeccpars2_179 -external_fun -yeccpars2_178 -yeccpars2_177 -yeccpars2_176 -yeccpars2_175 -yeccpars2_174 -yeccpars2_173 -yeccpars2_172 -yeccpars2_171 -yeccpars2_170 -yeccpars2_169 -yeccpars2_168 -yeccpars2_167 -yeccpars2_166 -yeccpars2_165 -yeccpars2_164 -yeccpars2_163 -yeccpars2_162 -yeccpars2_161 -yeccpars2_160 -yeccpars2_159 -yeccpars2_158 -yeccpars2_157 -yeccpars2_156 -yeccpars2_155 -yeccpars2_154 -yeccpars2_153 -yeccpars2_152 -yeccpars2_151 -yeccpars2_150 -yeccpars2_149 -yeccpars2_cont_148 -yeccpars2_148 -yeccpars2_147 -yeccpars2_146 -yeccpars2_145 -yeccpars2_144 -yeccpars2_143 -yeccpars2_142 -yeccpars2_141 -yeccpars2_140 -yeccpars2_139 -yeccpars2_138 -yeccpars2_137 -yeccpars2_136 -'...' -yeccpars2_135 -yeccpars2_134 -yeccpars2_133 -yeccpars2_132 -yeccpars2_131 -yeccpars2_130 -'%ssa%' -yeccpars2_128 -yeccpars2_127 -yeccpars2_126 -yeccpars2_125 -yeccpars2_124 -yeccpars2_123 -yeccpars2_122 -yeccpars2_121 -yeccpars2_119 -yeccpars2_118 -yeccpars2_117 -yeccpars2_115 -yeccpars2_113 -yeccpars2_112 -yeccpars2_111 -yeccpars2_110 -yeccpars2_109 -yeccpars2_108 -yeccpars2_107 -yeccpars2_105 -yeccpars2_104 -yeccpars2_103 -yeccpars2_102 -yeccpars2_101 -yeccpars2_100 -yeccpars2_99 -yeccpars2_97 -yeccpars2_96 -yeccpars2_95 -yeccpars2_94 -yeccpars2_93 -yeccpars2_92 -yeccpars2_91 -yeccpars2_90 -yeccpars2_87 -yeccpars2_83 -yeccpars2_82 -yeccpars2_80 -yeccpars2_79 -yeccpars2_78 -yeccpars2_76 -yeccpars2_74 -of -yeccpars2_73 -yeccpars2_72 -yeccpars2_71 -after -yeccpars2_69 -yeccpars2_66 -yeccpars2_59 -yeccpars2_58 -yeccpars2_57 -yeccpars2_56 -yeccpars2_55 -yeccpars2_54 -yeccpars2_53 -yeccpars2_52 -yeccpars2_51 -yeccpars2_50 -yeccpars2_49 -yeccpars2_48 -yeccpars2_47 -yeccpars2_46 -yeccpars2_45 -yeccpars2_44 -yeccpars2_43 -yeccpars2_42 -yeccpars2_41 -yeccpars2_40 -yeccpars2_39 -yeccpars2_38 -yeccpars2_37 -yeccpars2_36 -yeccpars2_35 -yeccpars2_34 -yeccpars2_33 -yeccpars2_32 -yeccpars2_31 -yeccpars2_30 -yeccpars2_29 -yeccpars2_28 -begin -yeccpars2_cont_27 -'>>' -yeccpars2_27 -yeccpars2_26 -yeccpars2_25 -yeccpars2_24 -yeccpars2_22 -yeccpars2_21 -yeccpars2_20 -yeccpars2_19 -yeccpars2_18 -yeccpars2_17 -yeccpars2_16 -yeccpars2_15 -yeccpars2_14 -yeccpars2_13 -yeccpars2_12 -yeccpars2_11 -yeccpars2_cont_10 -'<<' -yeccpars2_10 -when -yeccpars2_9 -yeccpars2_8 -yeccpars2_7 -yeccpars2_6 -yeccpars2_5 -yeccpars2_4 -yeccpars2_3 -';' -yeccpars2_2 -yeccpars2_1 -yeccpars2_0 -missing_state_in_action_table -yeccpars2 -write_char -write_string -reserved_symbol -yecctoken2string1 -yecctoken2string -yecctoken_location -yecctoken_to_string -yeccerror -yecctoken_end_location -yecc_end -'$end' -no_func -yeccpars1 -state_is_unknown -missing_in_goto_table -yecc_error_type -yecc_bug -yeccpars0 -return_error -deep_char_list -no_location -parse_and_scan -parse -check_expr -add_anno_check -build_ssa_check_label -modify_anno1 -anno_from_term -new_anno -mapfold_anno -fold_anno -type_preop_prec -'::' -'..' -type_inop_prec -max_prec -func_prec -preop_prec -'=' -inop_prec -tokens_tuple -'|' -',' -tokens_tail -']' -'}' -'{' -'[' -'=>' -abstract_byte -abstract_map_fields -abstract_tuple_list -not_string -abstract_list -enc_func -abstract -loc_lte -find_anno -set_location -end_location -last_anno -first_location -ret_abstr_err -ret_err -build_try -check_clauses -build_fun -build_function -typed -record_fields -record_tuple -farity_list -error_bad_decl -attribute_farity_map -attribute_farity_list -attribute_farity -var_list -build_attribute -abstract2 -type_tag -build_bin_type -build_gen_type -lift_unions -build_constraint -is_subtype -build_compat_constraint -find_arity_from_specs -build_type_spec -typed_record -build_typed_attribute -'(' -')' -'->' -parse_form -std_info -open_file -'$3' -'-add_env/2-inlined-0-' -'-start/1-fun-0-' -'-get_all_env/1-fun-0-' -keystore -'-handle_call/3-lc$^3/1-0-' -'-terminate/2-fun-0-' -'-load/2-fun-0-' -'-unload/2-fun-0-' -'-check_start_cond/4-fun-0-' -'-start_appl/3-fun-0-' -'-prim_parse/2-fun-0-' -'-do_change_apps/3-fun-0-' -'-do_change_apps/3-fun-1-' -'-get_cmd_env/1-fun-0-' -'-add_env/2-fun-0-' -'-do_config_diff/3-fun-0-' -'-conf_param_to_conf/1-fun-0-' -'-config_param_to_list/1-lc$^0/1-0-' -'-check_conf/0-fun-1-' -'-read_fd_until_end_and_close/3-Read/4-0-' -'-read_fd_until_end_and_close/3-fun-1-' -'-read_fd_until_end_and_close/3-GetResult/0-1-' -'-reply_to_requester/3-fun-0-' -default_encoding -read_encoding_from_binary -file_binary_to_list -test_make_apps -test_do_change_appl -test_change_apps -update_permissions -reply_to_requester -info_exited -started_at -info_started -config_error -strip_comment -only_ws -reader_ref -read_fd_until_end_and_close -parse_file -scan_file -read_from_file_descriptor -load_file_descriptor -check_conf_sys -check_conf -config_param_to_list -invalid_file_desc -characters_to_nfc_list -configfd -conf_param_to_conf -do_config_diff -application_not_found -module_not_defined -do_config_change -do_prep_config_change -check_user -del_env -add_env -get_env_key -merge_app_env -change_app_env -merge_env -get_env_i -handle_make_term_error -make_term -conv -get_cmd_env -get_opt -do_change_appl -is_loaded_app -do_change_apps -invalid_name -badstartspec -invalid_options -make_appl_i -parse_term -prim_parse -prim_consult -make_appl -bad_application -get_restart_type -nd -keyreplaceadd -ksd -keysearchdelete -stop_appl -start_appl -init_starter -spawn_starter -check_start_cond -do_load_application -maybe_load_application -'-separate_error_info/1-fun-0-' -'-format_link_reports/4-lc$^0/1-0-' -'-format_exception/5-fun-0-' -'-pp_fun/2-fun-0-' -nl -modifier -chars_limit_opt -part_separator -report_separator -format_tag -pp_fun -write_atom -write_atom_as_latin1 -format_exception -format_rep -format_report -format_link_report -format_link_reports -splitwith -separate_error_info -format_own_report -do_format -badrpc -proc_info -get_my_name -translate_process_info -get_process_info -no_trap -adjacents -visit -max_neighbours -neighbours -get_initial_call -make_neighbour_report -neighbour -make_neighbour_reports1 -linked_info -get_dictionary -clean_dict -cleaned_dict -get_cleaned_dictionary -receive_messages -get_process_messages -get_messages -ancestors -get_ancestors -my_info_1 -my_info -crash_report -trans_init -raw_init_call -raw_initial_call -translate_initial_call -make_dummy_args -await_DOWN -kill_flush_EXIT -flush_EXIT -sync_start_monitor -nack -sync_start -exit_reason -exit_p -init_p_do_apply -wake_up -spawn_mon -init_p -get_loaded -del_cntrl -ac_application_run -notify_cntrl_started -cntrl -shutdown_func -application_terminated -keyreplace -ac_application_not_run -stop_it -not_running -failover -ac_start_application_reply -ac_load_application_reply -ac_change_application_req -application_start_failure -handle_application_started -application_started -loading -start_p_false -zf -ac_load_application_req -not_started -ac_application_stopped -ac_application_unloaded -permissions -ac_start_application_req -persistent -check_distributed -distributed -check_para_value -check_para -check_conf_data -'load error' -enter_loop -'$initial_call' -appl_data -appl -start_phases -'$2' -'$1' -config_change -prep_config_change -change_application_data -control_application -ac_tab -bad_environment_value -ack -':' -badexpr -binary_comprehension -bitlevel_binaries -'-merge_bindings/4-inlined-0-' -'-match_fun/2-inlined-0-' -'-expr/6-RF/20-22-' -'-expr/6-RF/19-21-' -'-expr/6-RF/18-20-' -'-expr/6-RF/17-19-' -'-expr/6-RF/16-18-' -'-expr/6-RF/15-17-' -'-expr/6-RF/14-16-' -'-expr/6-RF/13-15-' -'-expr/6-RF/12-14-' -'-expr/6-RF/11-13-' -'-expr/6-RF/10-12-' -'-expr/6-RF/9-11-' -'-expr/6-RF/8-10-' -'-expr/6-RF/7-9-' -'-expr/6-RF/6-8-' -'-expr/6-RF/5-7-' -'-expr/6-RF/4-6-' -'-expr/6-RF/3-5-' -'-expr/6-RF/2-4-' -'-expr/6-RF/1-3-' -'-expr/6-RF/0-2-' -'-expr/6-fun-0-' -'-expr/6-fun-44-' -'-expr/6-fun-45-' -'-expr/6-fun-22-' -'-expr/6-fun-21-' -'-expr/6-fun-20-' -'-expr/6-fun-19-' -'-expr/6-fun-18-' -'-expr/6-fun-17-' -'-expr/6-fun-16-' -'-expr/6-fun-15-' -'-expr/6-fun-14-' -'-expr/6-fun-13-' -'-expr/6-fun-12-' -'-expr/6-fun-11-' -'-expr/6-fun-10-' -'-expr/6-fun-9-' -'-expr/6-fun-8-' -'-expr/6-fun-7-' -'-expr/6-fun-6-' -'-expr/6-fun-5-' -'-expr/6-fun-4-' -'-expr/6-fun-3-' -'-expr/6-fun-2-' -'-expr/6-fun-1-' -is_anno -'-find_maxline/1-fun-0-' -'-fun_used_bindings/4-fun-0-' -'-local_func/8-fun-0-' -'-eval_lc1/7-fun-1-' -'-eval_lc1/7-fun-0-' -'-eval_bc1/7-fun-1-' -'-eval_bc1/7-fun-0-' -'-eval_mc1/7-fun-1-' -'-eval_mc1/7-fun-0-' -'-eval_generator/7-fun-0-' -'-eval_b_generate/8-fun-0-' -'-eval_b_generate/8-fun-1-' -'-receive_clauses/8-fun-0-' -'-match1/5-fun-0-' -'-match1/5-fun-1-' -'-match_fun/2-fun-0-' -'-add_bindings/2-fun-0-' -'-merge_bindings/4-fun-0-' -'-merge_bindings/4-fun-1-' -'-to_terms/1-lc$^0/1-0-' -'-token_fixup/1-lc$^0/1-0-' -'-reset_token_anno/1-lc$^0/1-0-' -'-reset_expr_anno/1-lc$^0/1-0-' -'-reset_anno/0-fun-0-' -'-normalise/1-fun-1-' -'-normalise/1-fun-0-' -'-ev_expr/1-lc$^0/1-0-' -anno -all_white -eval_str -ev_expr -eval_expr -is_constant_expr -normalise_list -normalise -extended_parse_term -validate_tag -fixup_mfa -fixup_tag -fixup_text -fixup_ast -reset_anno -reset_expr_anno -reset_token_anno -string_fixup -expr_fixup -'Ref' -'Port' -'Fun' -'.' -'#' -unscannable -set_text -token_fixup -tokens_fixup -extended_parse_exprs -anno_to_term -to_term -to_terms -filter_bindings -merge_bindings -add_bindings -del_binding -add_binding -binding -bindings -match_list -match_map -match_tuple -match_fun -match_bits -match1 -string_to_conses -reference -number -expr_guard_test -guard_expr -guard0 -guard1 -match_clause -receive_clauses -case_clauses -illegal_stacktrace_variable -check_stacktrace_vars -if_clauses -eval_op -eval_named_fun -'-inside-an-interpreted-fun-' -eval_fun -ret_expr -map_assoc -map_exact -eval_map_fields -is_generator -eval_filter -eval_m_generate -bin_gen -eval_b_generate -eval_generate -eval_generator -eval_mc1 -eval_mc -eval_bc1 -eval_bc -eval_lc1 -eval_lc -no_env -do_apply -local_func2 -local_func -unhide_calls -f -m -hide_calls -fun_used_bindings -'$erl_eval_max_line' -find_maxline -apply_error -expr_grp -unbound -not_ok -transform_from_evaluator -k -v -else_clause -argument_limit -undef_record -named_fun_data -check_command -failure -success -maybe_match_exprs -empty_fun_used_vars -process_exited -critical -alert -emergency -got_unexpected_message -no_domain -super -remote_gl -'-handle_call/3-inlined-0-' -'-set_module_level/2-fun-0-' -'-unset_module_level/1-fun-0-' -'-handle_call/3-fun-7-' -'-handle_call/3-fun-6-' -removing_handler -'-handle_call/3-fun-3-' -'-handle_call/3-fun-5-' -'-handle_call/3-fun-4-' -handler_not_added -invalid_handler -function_not_exported -'-call_h_async/4-fun-0-' -internal_log_event -add_default_metadata -diffs -logger_process_exited -call_h_reply -call_h_async -changing_config -call_h -illegal_config_change -diff_maps -check_config_change -invalid_formatter -callback_crashed -check_formatter -invalid_filter_default -check_filter_default -invalid_filters -invalid_filter -check_filters -invalid_level -check_level -check_mod -invalid_id -check_id -invalid_primary_config -metadata -check_config -get_type -sanity_check_1 -invalid_config -sanity_check -default_config -keytake -do_remove_filter -do_add_filter -attempting_syncronous_call_to_self -async_req_reply -formatter -already_exist -exist -set_opts -adding_handler -simple -create -proxy -get_default_config -'$logger_cb_process' -invalid_formatter_config -update_formatter_config -update_config -change_config -set_config -unset_module_level -not_a_list_of_modules -set_module_level -add_filter -add_handler -'-do_start/4-fun-0-' -'-maybe_add_read_ahead/2-fun-0-' -cbv -cafu -count_and_find -read_size -cast_binary -cat -do_setopts -check_valid_opts -unfold -substitute_negations -err_func -continuation_location -tokens -invalid_unicode_error -get_chars_apply -get_chars_notempty -get_chars_empty -convert_enc -collect_line -io_request_loop -requests -get_until -std_reply -io_reply -server_loop -maybe_add_read_ahead -valid_enc -expand_encoding -parse_options -invalid_unicode -info_report -bad_combination -shutdown_error -start_error -reached_max_restart_intensity -title -supervisor_report -report_cb -sasl -child_terminated -already_present -n_objects -read_only -'-terminate_dynamic_children/1-inlined-0-' -'-find_child_by_pid/2-inlined-0-' -failed_to_start_child -'-start_children/2-fun-0-' -'-handle_call/3-fun-2-' -'-handle_call/3-fun-0-' -'-handle_call/3-fun-1-' -'-do_auto_shutdown/2-fun-0-' -'-terminate_children/2-fun-0-' -'-terminate_dynamic_children/1-fun-0-' -'-terminate_dynamic_children/1-fun-1-' -'-wait_dynamic_children/5-fun-0-' -'-find_child_by_pid/2-fun-0-' -the -'-set_pid/3-fun-0-' -invalid_module -a -'-validMods/1-fun-0-' -'-add_restart/3-fun-0-' -'-dyn_fold/3-fun-0-' -parse_transform -transformed -be -should -dyn_init -real -dyn_args -dyn_exists -called -dyn_map -transform_error -dyn_fold -mapsets -dyn_store -dyn_erase -dyn_size -single -p -format_child_log_single -format_log_multi -format_log_single -limit_child_report -limit_term -errorContext -limit_report -single_line -encoding -depth -unlimited -chars_limit -get_format_depth -format_log -report_progress -nb_children -mfargs -restart_type -child_type -extract_child -takewhile -add_restart -child_to_spec -invalid_modules -validMods -invalid_shutdown -validShutdown -invalid_significant -validSignificant -invalid_restart_type -validRestartType -invalid_mfa -validFunc -validId -invalid_child_type -validChildType -missing_id -missing_start -'-table/2-inlined-0-' -do_check_childspec -invalid_child_spec -'-file2tab/2-inlined-1-' -'-file2tab/2-inlined-0-' -significant -check_childspec -log_terms -'-tab2file/3-fun-1-' -duplicate_child_name -check_startspec -blog_terms -supname -invalid_auto_shutdown -'-tab2file/3-fun-0-' -'-file2tab/2-fun-1-' -validAutoShutdown -invalid_period -'-file2tab/2-fun-0-' -'-table/2-fun-2-' -validPeriod -invalid_intensity -'-table/2-fun-1-' -'-table/2-fun-0-' -validIntensity -'-table/2-fun-3-' -invalid_strategy -validStrategy -'-table/2-fun-4-' -'-table/2-fun-5-' -do_check_flags -check_flags -'-table/2-fun-6-' -'-table/2-fun-7-' -auto_shutdown -intensity -'-table/2-fun-8-' -'-table/2-lc$^10/1-2-' -period -'-table/2-lc$^9/1-1-' -strategy -'-table/2-fun-11-' -set_flags -init_state -'-qlc_next/2-fun-0-' -'-qlc_prev/2-fun-0-' -children_any1 -children_any -'-qlc_select/1-fun-0-' -'-hform/6-lc$^0/1-0-' -children_fold -children_to_list -re_match -print_re_num -children_map -re_display -remove_child -update_with -re_search -slice -set_pid -get_dynamic_child -do_display_item -find_child_by_pid -do_display_items -do_display -find_dynamic_child -print_number -find_child_and_args -find_child -split_ids -split_child -trailing -del_child -nonl -do_save_child -save_child -line_string -wait_dynamic_children -choice -terminate_dynamic_children -'(c)ontinue (q)uit (p)Digits (k)ill /Regexp -->' -'-basenameb/2-lc$^0/1-0-' -'-unix_splitb/1-lc$^0/1-0-' -'EOT (q)uit (p)Digits (k)ill /Regexp -->' -unlink_flush -'-win32_splitb/1-lc$^3/1-4-' -eot -display_items -'-win32_splitb/1-lc$^1/1-3-' -brutal_kill -'-win32_splitb/1-lc$^0/1-2-' -'-win32_splitb/1-lc$^2/1-1-' -pad_right -do_terminate -terminate_children -'-win32_splitb/1-lc$^4/1-0-' -hform -'-basedir/3-lc$^0/1-0-' -cast -restart_multiple_children -is_reg -try_again -rest_for_one -prinfo2 -prinfo -one_for_one -one_for_all -validate_bin -tabs -mem -i -fail -do_auto_shutdown -listify -validate_char -validate_list -default_option -keydelete -validate -traverse -basedir_os_type -qlc_select -qlc_prev -basedir_join_home -handle_start_child -qlc_next -noappdata -basedir_windows_appdata -basedir_windows -num_of_objects -update_chsp -basedir_darwin -lexemes -is_unique_objects -update_childspec1 -is_sorted_key -table_info -update_childspec -pre_fun -bad_flags -user_data -user_config -invalid_type -post_fun -info_fun -basedir_linux -basedir_from_os -format_fun -key_equality -lookup_fun -author -basedir_name_from_opts -try_again_restart -basedir_os_from_opts -last_prev -first_next -site_data -site_config -count_child -specs -windows -tabfile_info -supervisors -linux -user_log -cannot_create_table -create_tab -user_cache -basedir -load_table -workers -worker -filename_string_to_binary -scan_for_endinfo -md5_and_convert -do_flatten -restarting -major_version -filetab_options -major_os_type -separators -do_start_child_i -child -replace -do_start_child -win32_nativename -nativename -start_children -win32_split -get_header_data -chunk -wrap_chunk -unix_split -bad_start_spec -bchunk -wrap_bchunk -init_dynamic -win32_splitb -start_spec -fix_driveletter -verify_header_mandatory -unix_splitb -rootname2 -maybe_remove_dirsep -join1b -init_children -supervisor_data -simple_one_for_one -count_mandatory -join1 -verify -parse_f2t_opts -bad_size -invalid_object_count -checksum_error -dirjoin1 -dirjoin -fstrip -do_read_and_verify -get_callback_module -check_childspecs2 -read_error -unsupported_file_version -never -any_significant -all_significant -repaired -file2tab -check_childspecs1 -skip_prefix -object_count -md5sum -basename1 -parse_ft_info_options -check_childspecs -count_children -malformed_option -unknown_option -which_children -get_childspec -basenameb -parse_ft_options -terminate_child -delete_child -restart_child -win_basenameb -absname_join -start_child -md5terms -ft_options_to_list -dump_file -eaccess -extended_info -badtab -tab2file -tab2list -match_delete -init_table_sub -end_of_input -init_table_continue -init_table -test_ms -from_ets -to_dets -to_ets -from_dets -do_foldr -transform_from_shell -fun_data -fun2ms -repair_continuation -match_spec_run -select_delete -delete_all_objects -receive_all -only_loaded -'-inlined-behaviour_info/1-' -'-ensure_all_started/3-lc$^0/1-0-' -'-wait_all_enqueued/3-lc$^0/1-0-' -get_appl_name -start_type -get_child -get_master -get_supervisor -get_application_module -get_application -get_pid_all_key -get_all_key -get_pid_key -get_key -get_pid_all_env -get_all_env -get_pid_env -get_env -unset_env -set_env -loaded_applications -which_applications -stop_application -distributed_application -permit_only_loaded_application -permit_application -permit -takeover_application -takeover -start_boot_application -ensure_started -wait_all_enqueued -deadlock -wait_one_enqueued -start_application_request -enqueue_dag_leaves -concurrent_dag_start -start_application -enqueue_or_start_app -is_running -enqueue_or_start -concurrent -temporary -ensure_all_started -unload_application -load_application -load1 -fields -overlapping_contract -no_missing_return -missing_return -no_extra_return -extra_return -no_underspecs -underspecs -overspecs -specdiffs -no_missing_calls -race_conditions -error_handling -unmatched_returns -no_undefined_callbacks -no_behaviours -no_unknown -no_contracts -no_fail_call -no_opaque -no_fun_app -no_improper_lists -no_unused -no_return -func -item -'-removed_fa/4-inlined-0-' -'-pattern_map/4-inlined-0-' -'-pattern_list/4-inlined-0-' -'-pattern_fields/6-inlined-0-' -'-is_gexpr/2-inlined-0-' -'-import/3-inlined-0-' -'-icrt_export/5-inlined-3-' -'-icrt_export/5-inlined-2-' -'-icrt_export/5-inlined-1-' -'-icrt_export/5-inlined-0-' -'-gexpr_list/3-inlined-0-' -'-func_location_warning/3-inlined-0-' -'-func_location_error/3-inlined-0-' -'-fun_clauses1/3-inlined-0-' -'-expr_list/3-inlined-0-' -'-export_type/3-inlined-0-' -'-export/3-inlined-0-' -'-depr_fa/4-inlined-0-' -'-def_fields/3-inlined-0-' -'-check_unused_types_1/2-inlined-1-' -'-check_undefined_types/1-inlined-2-' -'-check_type_2/3-inlined-1-' -'-check_specs_without_function/1-inlined-0-' -'-check_local_opaque_types/1-inlined-0-' -'-check_fields/6-inlined-0-' -'-check_dialyzer_attribute/2-inlined-6-' -'-bool_option/4-fun-0-' -'-value_option/3-fun-0-' -'-value_option/7-fun-0-' -'-format_mfa/1-lc$^0/1-0-' -'-exprs_opt/3-fun-0-' -'-used_vars/2-fun-0-' -'-compiler_options/1-lc$^0/1-0-' -'-start/2-lc$^0/1-0-' -'-start/2-lc$^1/1-1-' -'-pack_errors/1-fun-0-' -'-pack_errors/1-fun-1-' -'-pack_errors/1-fun-2-' -'-pack_warnings/1-lc$^2/1-1-' -'-pack_warnings/1-lc$^1/1-0-' -'-pack_warnings/1-lc$^0/1-2-' -'-includes_qlc_hrl/2-lc$^0/1-0-' -'-set_file/2-lc$^0/1-0-' -'-anno_set_file/2-fun-0-' -'-bif_clashes/2-lc$^0/1-0-' -'-not_deprecated/2-lc$^2/1-2-' -'-not_deprecated/2-lc$^1/1-1-' -'-not_deprecated/2-lc$^0/1-0-' -'-not_deprecated/2-lc$^4/1-4-' -'-not_deprecated/2-lc$^3/1-3-' -'-not_deprecated/2-lc$^5/1-5-' -'-not_deprecated/2-fun-6-' -'-not_removed/2-lc$^2/1-2-' -'-not_removed/2-lc$^1/1-1-' -'-not_removed/2-lc$^0/1-0-' -'-not_removed/2-lc$^4/1-4-' -'-not_removed/2-lc$^3/1-3-' -'-not_removed/2-fun-5-' -'-disallowed_compile_flags/2-lc$^1/1-1-' -'-disallowed_compile_flags/2-lc$^0/1-0-' -'-disallowed_compile_flags/2-lc$^3/1-3-' -'-disallowed_compile_flags/2-lc$^2/1-2-' -bad_filter -'-behaviour_check/2-lc$^0/1-0-' -'-behaviour_check/2-fun-1-' -'-behaviour_check/2-lc$^2/1-1-' -'-behaviour_missing_callbacks/2-fun-0-' -no_elements -'-behaviour_conflicting/2-fun-0-' -'-check_deprecated/2-lc$^2/1-2-' -'-check_deprecated/2-lc$^1/1-1-' -'-check_deprecated/2-lc$^0/1-0-' -'-check_deprecated/2-fun-3-' -'-depr_fa/4-fun-0-' -'-check_removed/2-lc$^2/1-2-' -'-check_removed/2-lc$^1/1-1-' -'-check_removed/2-lc$^0/1-0-' -'-check_removed/2-fun-3-' -'-removed_fa/4-fun-0-' -'-check_imports/2-lc$^1/1-1-' -'-check_imports/2-lc$^0/1-0-' -'-check_imports/2-lc$^3/1-3-' -'-check_imports/2-lc$^2/1-2-' -'-check_unused_functions/2-lc$^0/1-0-' -'-check_unused_functions/2-lc$^2/1-2-' -'-check_unused_functions/2-lc$^1/1-1-' -'-check_undefined_functions/1-fun-0-' -'-check_undefined_types/1-lc$^0/1-0-' -'-check_undefined_types/1-fun-1-' -'-check_undefined_types/1-fun-2-' -'-check_option_functions/4-lc$^2/1-2-' -'-check_option_functions/4-lc$^1/1-1-' -'-check_option_functions/4-lc$^0/1-0-' -'-check_option_functions/4-lc$^3/1-3-' -'-check_option_functions/4-lc$^4/1-4-' -'-check_nifs/2-lc$^1/1-1-' -'-check_nifs/2-lc$^0/1-0-' -'-check_nifs/2-lc$^2/1-2-' -'-nowarn_function/2-lc$^1/1-1-' -'-nowarn_function/2-lc$^0/1-0-' -'-func_location_warning/3-fun-0-' -'-func_location_error/3-fun-0-' -'-check_untyped_records/2-fun-0-' -'-check_untyped_records/2-lc$^1/1-0-' -'-check_untyped_records/2-fun-2-' -'-check_unused_records/2-lc$^0/1-0-' -'-check_unused_records/2-lc$^3/1-3-' -'-check_unused_records/2-lc$^2/1-2-' -'-check_unused_records/2-lc$^1/1-1-' -'-check_unused_records/2-fun-4-' -'-check_unused_records/2-fun-5-' -'-check_unused_records/2-lc$^6/1-5-' -'-check_unused_records/2-fun-7-' -'-check_callback_information/1-fun-0-' -'-check_callback_information/1-fun-1-' -'-export/3-fun-0-' -'-export_type/3-fun-0-' -'-import/3-fun-0-' -'-check_imports/3-fun-0-' -store -'-add_imports/3-fun-0-' -'-clauses/2-fun-0-' -'-pattern/4-fun-0-' -'-pattern_list/4-fun-0-' -map_key -'-pattern_map/4-fun-0-' -'-pattern_bin/4-fun-0-' -'-good_string_size_type/2-fun-0-' -'-expr_bin/4-fun-0-' -'-gexpr/3-fun-3-' -'-gexpr/3-fun-4-' -'-gexpr/3-fun-2-' -'-gexpr_list/3-fun-0-' -'-is_guard_test/1-fun-0-' -'-is_guard_test/2-fun-0-' -'-is_guard_test/3-fun-0-' -'-is_guard_test/3-fun-1-' -'-is_guard_expr/1-fun-0-' -'-is_gexpr/2-fun-0-' -'-is_gexpr_list/2-fun-0-' -'-is_gexpr_fields/4-fun-0-' -'-expr/3-fun-5-' -'-expr/3-fun-4-' -'-expr/3-fun-3-' -'-expr/3-fun-2-' -'-expr_list/3-fun-0-' -'-record_def/4-lc$^0/1-0-' -'-def_fields/3-fun-0-' -'-normalise_fields/1-fun-0-' -'-check_fields/6-fun-0-' -'-pattern_fields/6-fun-0-' -'-pattern_fields/6-fun-1-' -'-init_fields/3-lc$^0/1-0-' -'-type_def/6-fun-0-' -'-warn_redefined_builtin_type/3-lc$^1/1-1-' -'-warn_redefined_builtin_type/3-lc$^0/1-0-' -'-check_type/2-fun-0-' -'-check_type_2/3-fun-5-' -'-check_type_2/3-fun-1-' -'-check_type_2/3-fun-2-' -'-check_type_2/3-fun-3-' -merge_with -'-check_type_2/3-fun-4-' -'-check_type_2/3-fun-0-' -'-check_record_types/5-fun-0-' -'-remove_non_visible/1-lc$^0/1-0-' -'-any_control_characters/1-fun-0-' -constraint -'-check_specs/4-lc$^0/1-0-' -'-check_specs_without_function/1-fun-0-' -'-add_missing_spec_warnings/3-lc$^0/1-0-' -'-add_missing_spec_warnings/3-lc$^2/1-2-' -'-add_missing_spec_warnings/3-lc$^1/1-1-' -'-add_missing_spec_warnings/3-fun-3-' -'-check_unused_types_1/2-lc$^0/1-0-' -'-check_unused_types_1/2-fun-1-' -'-reached_types/1-lc$^1/1-1-' -'-reached_types/1-lc$^0/1-0-' -'-reached_types/1-lc$^2/1-2-' -'-initially_reached_types/1-lc$^0/1-0-' -'-check_local_opaque_types/1-fun-0-' -'-check_dialyzer_attribute/2-lc$^4/1-2-' -'-check_dialyzer_attribute/2-lc$^1/1-4-' -'-check_dialyzer_attribute/2-lc$^0/1-3-' -'-check_dialyzer_attribute/2-lc$^3/1-1-' -'-check_dialyzer_attribute/2-lc$^2/1-0-' -'-check_dialyzer_attribute/2-fun-5-' -'-check_dialyzer_attribute/2-fun-6-' -'-check_dialyzer_attribute/2-fun-7-' -'-icrt_clauses/3-fun-0-' -'-catch_clauses/3-fun-0-' -'-icrt_export/5-fun-0-' -'-icrt_export/5-fun-1-' -'-icrt_export/5-fun-2-' -'-icrt_export/5-fun-3-' -'-icrt_export/5-fun-4-' -'-is_guard_test2_info/1-fun-0-' -'-fun_clauses/3-lc$^0/1-0-' -'-fun_clauses1/3-fun-0-' -'-shadow_vars/4-fun-0-' -'-unused_vars/3-fun-0-' -'-warn_unused_vars/3-fun-0-' -'-warn_unused_vars/3-fun-1-' -'-warn_unused_vars/3-fun-2-' -'-vtupdate/2-fun-0-' -'-vtunsafe/3-lc$^0/1-0-' -'-vtmerge/2-fun-0-' -'-vtmerge/1-fun-0-' -'-vtmerge_pat/3-fun-0-' -matched -'-vtmerge_pat/3-fun-1-' -'-vtnew/2-fun-0-' -'-vtold/2-fun-0-' -'-vt_no_unsafe/1-lc$^0/1-0-' -'-vt_no_unused/1-lc$^0/1-0-' -'-copy_expr/2-fun-0-' -'-feature_keywords/0-fun-0-' -keywords -'-feature_keywords/0-fun-1-' -'-canonicalize_string/1-fun-0-' -'-local_functions/1-lc$^0/1-0-' -'-auto_import_suppressed/1-lc$^0/1-0-' -'-auto_import_suppressed/1-lc$^1/1-1-' -maps_prepend -no_guard_bif_clash -bif_clash_specifically_disabled -is_autoimport_suppressed -no_auto_import -auto_import_suppressed -is_imported_from_erlang -is_imported_function -is_local_function -local_functions -control_type -is_modifier -intersection -check_modifiers_1 -check_modifiers -extract_modifiers -extract_sequence_digits -extract_sequence -extract_sequences -check_format_string -args_length -args_list -arguments -check_format_4 -check_format_3 -no_argument_list -check_format_2a -warn -check_format_2 -foldr -canonicalize_string -check_format_1 -fwrite -is_format_function -format_function -text -configurable -feature_keywords -test_overriden_by_local -old_type_test -obsolete_type -add_removed_warning -obsolete -q -check_qlc_hrl -is_inline_opt -check_nif_inline -check_load_nif -check_remote_function -has_wildcard_field -check_record_info_call -copy_expr -vt_no_unused -vt_no_unsafe -vtold -vtsubtract -vtnew -merge_used -merge_state -merge_annos -vtmerge_pat -vtmerge -vtunsafe -vtupdate -check_old_unused_vars -check_unused_vars -do_expr_var -expr_var -pat_binsize_var -warn_underscore_match_pat_1 -warn_underscore_match_pat -pat_var -fun_clause -fun_clauses1 -fun_clauses -bitstring -bits -bytes -handle_bitstring_gen_pat -comprehension_pattern -handle_generator -is_guard_test2_info -m_generate -generate -b_generate -lc_quals -comprehension_expr -handle_comprehension -dropwhile -icrt_export -stacktrace -taint_stack_var -catch_clause -catch_clauses -icrt_clause -icrt_clauses -try_clauses -is_module_dialyzer_option -is_function_dialyzer_option -check_dialyzer_attribute -check_local_opaque_types -initially_reached_types -reachable -family_to_digraph -rel2fam -reached_types -check_unused_types_1 -check_unused_types -add_missing_spec_warnings -exported -check_functions_without_spec -check_specs_without_function -set_generated -nowarn -bounded_fun -check_specs -any_control_characters -remove_non_visible -latin1_char_list -check_module_name -is_fa -is_fa_list -optional_cbs -callback_decl -spec_decl -obsolete_builtin_type -is_obsolete_builtin_type -is_type -is_default_type -used_type -field_type -check_record_types -seen_multiple -seen_once_union -seen_once -remote_type -ann_type -range -user_type -typed_record_field -check_type_2 -check_type_1 -check_type -no_auto_import_types -typeinfo -type_def -find_field -exist_field -update_fields -ginit_fields -init_fields -pattern_fields -pattern_field -check_field -check_fields -used_record -check_record -exist_record -normalise_fields -def_fields -product -record_def -is_valid_call -warn_invalid_call -is_valid_record -warn_invalid_record -map_fields -check_assoc_fields -record_expr -expr_list -if -fun -catch -old_bif -record_info -else -'named fun' -unused -first_anno -named_fun -mc -maybe_match -maybe -lc -case -bc -try -ssa_check_when -expr -is_gexpr_fields -map_field_exact -map_field_assoc -is_map_fields -is_gexpr_list -comp -arith -op_type -is_gexpr_op -is_gexpr -is_guard_expr -is_guard_test2 -is_guard_test -gexpr_list -bif -guard_bif -record_field -gexpr -type_test -guard_test2 -guard_test -guard_tests -elemtype_check -bittype -bit_size_check -set_bit_type -bit_type -expr_bin -is_bit_size_illegal -pat_bit_size -pat_bit_expr -good_string_size_type -pattern_element_1 -bin_element -pattern_element -pattern_bin -pattern_map -arith_op -is_pattern_expr_1 -partial_eval -is_pattern_expr -check_multi_field_init -pattern_list -var -tuple -bin -record_index -char -cons -op -pattern -head -clause -clauses -function_check_max_args -define_function -call_function -check_on_load -imported -add_imports -is_member -check_callback_information -check_unused_records -check_untyped_records -func_location_error -func_location_warning -nowarn_function -check_nifs -check_option_functions -check_bif_clashes -check_undefined_types -drestriction -from_external -check_undefined_functions -add_element -reached_functions -initially_reached -union -check_unused_functions -inline -check_inlines -check_imports -ignore_predefined_funcs -removed_desc -otp_doc_vsn -generated -removed_fa -removed_cat -check_removed -deprecated_desc -next_version -next_major_release -eventually -deprecated_flag -depr_fa -depr_cat -check_deprecated -behaviour_add_conflict -behaviour_add_conflicts -to_external -family_specification -relation_to_family -converse -family_to_relation -relation -behaviour_conflicting -behaviour_missing_callbacks -callbacks -behaviour_callbacks -all_behaviour_callbacks -behaviour_check -check_behaviour -post_traversal_check -disallowed_compile_flags -not_removed -not_deprecated -bif_clashes -dialyzer -function_state -optional_callbacks -opaque -import -export_type -export -callback -behaviour -behavior -attribute_state -start_state -form -map_anno -anno_set_file -set_file -set_form_file -eval_file_attr -eval_file_attribute -includes_qlc_hrl -pre_scan -forms -location -loc -add_lint_warning -add_warning -add_lint_error -bin_seg_size -add_error -pack_warnings -mapfoldl -pack_errors -return_status -is_warn_enabled -guard -usage -nowarn_format -warn_format -is_element -unused_vars -underscore_match -export_vars -shadow_vars -bif_clash -deprecated_function -'-all_available/2-lc$^0/1-0-' -missing_spec_all -keyword_warning -rootname -'-all_available/2-fun-1-' -redefined_builtin_type -'-all_available/2-F/2-1-' -warn_singleton_typevar -nowarn_singleton_typevar -on_load_not_allowed -'-prepare_loading_3/1-lc$^0/1-0-' -warn_redefined_builtin_type -nowarn_redefined_builtin_type -'-partition_on_load/1-fun-0-' -warn_keywords -nowarn_keywords -'-load_mods/1-fun-0-' -'-load_bins/1-fun-0-' -warn_nif_inline -nowarn_nif_inline -'-do_par_fun/2-lc$^0/1-0-' -'-do_par_fun/2-fun-1-' -warn_removed -nowarn_removed -warn_missing_spec_all -'-do_par_fun_each/3-fun-0-' -nowarn_missing_spec_all -warn_missing_spec -nowarn_missing_spec -warn_untyped_record -nowarn_untyped_record -warn_obsolete_guard -nowarn_obsolete_guard -'-load_code_server_prerequisites/0-lc$^0/1-0-' -warn_deprecated_type -nowarn_deprecated_type -eep48 -debug_info -warn_deprecated_function -nowarn_deprecated_function -'-get_doc/2-fun-0-' -warn_unused_record -'-get_type_docs_from_ast/1-fun-0-' -nowarn_unused_record -warn_bif_clash -'-get_function_docs_from_ast/1-fun-0-' -nowarn_bif_clash -warn_unused_type -spec -'-get_function_docs_from_ast/2-fun-0-' -nowarn_unused_type -warn_unused_function -'-set_primary_archive/4-lc$^0/1-0-' -'-module_status/0-lc$^0/1-0-' -nowarn_unused_function -'-module_status/1-lc$^0/1-0-' -warn_unused_import -nowarn_unused_import -'-modified_modules/0-lc$^0/1-0-' -warn_shadow_vars -nowarn_shadow_vars -warn_export_vars -path_files -modified_modules -do_beam_file_md5 -nowarn_export_vars -beam_file_md5 -warn_export_all -module_changed_on_disk -nowarn_export_all -modified -warn_underscore_match -nowarn_underscore_match -cover_compiled -module_status -warn_unused_vars -nowarn_unused_vars -warning_report -compiler_options -lint -cache_warning -used_vars -code_path_cache -maybe_warn_for_cache -exprs_opt -nthtail -has_ext -filter2 -pseudolocals -get_line -format_where -decorate -build -format_mna -format_mf -search -clash -format_mfa -gen_type_paren_1 -gen_type_paren -get_function_docs_from_ast -signature -utf_bittype_size_or_unit -unsized_binary_not_at_end -unsized_binary_in_bin_gen_pattern -undefined_module -flatmap -get_type_docs_from_ast -typed_literal_string -spec_wrong_arity -no_abstract_code -docs_v1 -redefine_module -raw_abstract_v1 -pmod_unsupported -abstract_code -get_doc_chunk_from_ast -'-del_dir_r/1-fun-0-' -old_abstract_code -'-socket_send/1-fun-0-' -dirname -non_latin1_module_unsupported -'-gen_tcp_send/1-fun-0-' -non_integer_bitsize -missing_chunk -file_reply -no_load_nif -nif_inline -chunks -get_doc_chunk -is_dir -multiple_on_loads -invalid_record -file_request -invalid_call -check_args -erts -illegal_record_info -check_and_call -sources -get_doc -illegal_pattern -illegal_map_key -illegal_map_construction -non_existing -where_is_file -illegal_guard_expr -illegal_expr -which -macro_log -character -illegal_bitsize -'-call/4-fun-0-' -'-send_request/3-fun-0-' -export_all -mode_list -'-receive_response/3-fun-0-' -make_binary -empty_module_name -disallowed_nowarn_bif_clash -'-stop/3-fun-0-' -start_get_mode -file_name_1 -ctrl_chars_in_module_name -do_s -compiler -callback_wrong_arity -'$status' -format_status -blank_module_name -file_name -format_status_header -bittype_unit -do_stick_dirs -fname_join -bad_multi_field_init -wildcard_in_update -nostick -debug_options -path_open_first -maybe_stick_dirs -variable_in_record_def -hibernate_after -spawn_opts -could_not_find_registered_name -load_code_server_prerequisites -unused_var -unused_type -name_to_pid -process_was_not_started_by_proc_lib -unused_record -eval_stream2 -parse_erl_exprs -unused_import -'$ancestors' -get_parent -process_not_registered_globally -eval_stream -good -unused_function -set_encoding -process_not_registered -untyped_record -bad -process_not_registered_via -undefined_type -do_par_recv -consult_stream -sendfile_send -get_proc_name -do_par_fun_each -undefined_record -sendfile_fallback_int -do_par_fun -undefined_on_load -undefined_nif -unregister_name -undefined_callback -sendfile_fallback -do_par -undefined_bittype -undefined_behaviour_callbacks -gen_tcp_send -load_bins -load_mods -register_name -socket_send -undefined_behaviour -verify_prepared -unbound_var -whereis_name -type_syntax -partition -partition_on_load -too_many_arguments -prepare_check_uniq_1 -where -stacktrace_guard -'$inet' -stacktrace_bound -prepare_check_uniq -via -get_value -spec_fun_undefined -singleton_typevar -prepare_loading_3 -chunk_size -redefine_type -prepare_loading_2 -do_for_proc -redefine_spec -change_time -change_group -redefine_record -do_prepare_loading -to_list -partition_load -reqids_to_list -change_owner -redefine_optional_callback -redefine_old_bif_import -change_mode -'$prepared$' -reqids_add -redefine_import -redefine_function -atomic_load -reqids_size -reqids_new -redefine_callback -prepare_ensure -path_open -redefine_builtin_type -ensure_modules_loaded_2 -path_script -redefine_bif_import -flush_responses -usort -obsolete_guard_overridden -path_eval -ensure_modules_loaded_1 -obsolete_guard -collection_result -not_exported_opaque -ensure_modules_loaded -replace_path -missing_spec -missing_qlc_hrl -no_reply -del_paths -del_path -path_consult -consult -add_pathsa -check_response -match_underscore_var_pat -match_underscore_var -add_pathsz -receive_response -no_request -add_paths -invalid_removed -ipread_s32bu_p32bu_2 -wait_response -invalid_deprecated -ipread_s32bu_p32bu_int -add_patha -illegal_guard_local_call -'@wait_response_recv_opt' -do_send_request -add_pathz -illegal_bitsize_local_call -ill_defined_optional_callbacks -ill_defined_behaviour_callbacks -add_path -send_request -copy_opened_int -duplicated_export_type -copy_int -duplicated_export -define_import -call_to_redefined_old_bif -call_to_redefined_bif -nocache -pwrite_int -behaviour_info -is_sticky -put_chars -bad_removed -unstick_mod -calling_self -bad_on_load_arity -stick_mod -pread_int -do_call -unstick_dir -bad_on_load -stick_dir -bad_nowarn_unused_function -init_it2 -init_fail -priv_dir -bad_nowarn_bif_clash -bad_module -compiler_dir -dir -get_chars -bad_inline -monitor_return -lib_dir -start_monitor -bad_export_type -bad_dialyzer_option -root_dir -init_it -bad_dialyzer_attribute -bad_deprecated -ram -extension -umerge -bad_callback -raw_write_file_info -raw_read_file_info -bad_bitsize -do_spawn -do_write_file -attribute -unsafe_var -undefined_field -undefined_behaviour_func -get_mode -all_available -shadowed_var -renamed_type -removed_type -get_object_code -del_dir_r -redefine_field -is_loaded -int_list -future_feature -modp -field_name_is_variable -exported_var -removed -load_binary -deprecated_type -'$handle_undefined_function' -call_undefined_function_handler -deprecated_builtin_type -bittype_mismatch -stub_function -concat -basename -load_abs -sync_ensure_on_load -conflicting_behaviours -value_option -pid2name -terminated -undefined_script -bool_option -load_file -try_decompress -module_md5_1 -module_md5 -get_chunk_1 -get_chunk -raise_undef_exception -mfa -remove_handler_failed -filter_stacktrace -filter -removed_failing_filter -remove_filter -handle_filter_failed -bad_return_value -do_apply_filters -filter_default -apply_filters -handler -log_event -internal_log -removed_failing_handler -do_internal_log -allow -remove_handler -without -call_handlers -handlers -filters -log_allowed -'-do_start_slave/3-fun-1-' -'-do_start_slave/3-fun-0-' -relay_loop -already_started -relay_start -do_start_slave -no_master -do_start -code_change -handle_info -handle_cast -noreply -stopped -handle_call -format_error -erlangrc -start_boot -applications_loaded -pool_master -take_over_monitor -rsh_starter -timer_server -stdlib -load -init_kernel_started -mod -maxP -maxT -shell_docs_ansi -prevent_overlapping_partitions -net_ticktime -net_tickintensity -logger_sasl_compatible -notice -logger_level -included_applications -optional_applications -applications -ddll_server -os_server -rex -net_sup -kernel_sup -fixtable_server -file_server_2 -boot_server -modules -vsn -start_link -modules_loaded -win32reg -uri_string -unicode_util -sys -supervisor_bridge -sofs -shell_docs -shell_default -shell -sets -rand -queue -qlc_pt -qlc -proplists -pool -peer -otp_internal -ordsets -orddict -ms_transform -log_mf_h -io_lib_pretty -io_lib_fread -io_lib_format -gen_statem -gen_fsm -gb_trees -gb_sets -filelib -file_sorter -eval_bits -escript -error_logger_tty_h -error_logger_file_h -erl_tar -erl_pp -erl_posix_msg -erl_internal -erl_features -erl_expand_records -erl_error -erl_compile -erl_bits -erl_abstract_code -epp -edlin_type_suggestion -edlin_expand -edlin_context -edlin -digraph_utils -digraph -dict -dets_v9 -dets_utils -dets_sup -dets_server -dets -calendar -c -beam_lib -base64 -array -argparse -wrap_log_reader -user_sup -user_drv -rpc -raw_file_io_list -raw_file_io_inflate -raw_file_io_delayed -raw_file_io_deflate -raw_file_io_compressed -raw_file_io -ram_file -pg2 -pg -net_adm -logger_sup -logger_std_h -logger_proxy -logger_olp -logger_handler_watcher -logger_h_common -logger_formatter -logger_disk_log_h -local_udp -local_tcp -kernel_config -inet_udp -inet_tcp_dist -inet_tcp -inet_sctp -inet_res -inet_parse -inet_hosts -inet_gethost_native -inet_epmd_socket -inet_epmd_dist -inet_dns -inet_db -inet_config -inet6_udp -inet6_tcp_dist -inet6_tcp -inet6_sctp -group_history -group -global_search -global_group -gen_udp_socket -gen_udp -gen_tcp_socket -gen_tcp -gen_sctp -erpc -erl_signal_handler -erl_reply -erl_epmd -erl_distribution -erl_compile_server -erl_boot_server -dist_util -dist_ac -disk_log_sup -disk_log_server -disk_log_1 -disk_log -application_starter -supervisor -proc_lib -logger_simple_h -logger_config -logger_backend -logger_filters -gen_server -gen_event -gen -file_io_server -file_server -erl_lint -code_server -application_master -application_controller -application -preloaded -noshell -home -progname -net -no_uniconde_traslation -no_function -no_data -not_enough_memory -invalid_parameter -invalid_flags -invalid_data -insufficient_buffer -esystem -esocktype -eservice -eoverflow -enxio -enoname -enodata -enametoolong -emem -efault -efamily -efail -ebadflags -eaddrfamily -can_not_complete -address_not_associated -zone_indices -wwanpp2 -wwanpp -well_known -valid_lifetime -unreachable -unicast_addrs -unchanged -transient -testing -tentative -suffix_origin -speed -software_loopback -service -router_advertisement -register_adapter_suffix -receive_only -reasm_size -prefix_origin -prefixes -preferred_lifetime -preferred -ppp -phys_addr -out_qlen -out_errors -out_discards -out_nucast_pkts -out_ucast_pkts -out_octets -oper_status -operational -on_link_prefix_length -numericserv -numerichost -no_multicast -not_present -non_operational -nofqdn -netbios_over_tcpip_enabled -name_info -namereqd -multicast_addrs -mask -manual -lower_layer_down -link_layer_address -lease_lifetime -last_change -iso88025_tokenring -ipv6_other_stateful_config -ipv6_managed_address_config_supported -ipv6_index -ipv6_enabled -ipv4_enabled -in_unknown_protos -in_errors -in_discards -in_nucast_pkts -in_ucast_pkts -in_octets -internal_oper_status -ieee80216_wman -ieee80211 -idn -friendly_name -fddi -ethernet_csmacd -duplicate -dns_suffix -dns_server_addrs -dns_eligible -disconnected -ddns_enabled -dhcp_v4_enabled -dhcp -description -deprecated -dad_state -bcast_addr -anycast_addrs -admin_status -address_info -divert -'DIVERT' -pfsync -'PFSYNC' -rohc -'ROHC' -wesp -'WESP' -shim6 -'SHIM6' -hip -'HIP' -manet -'MANET' -'mpls-in-ip' -'MPLS-IN-IP' -udplite -'UDPLite' -'mobility-header' -'Mobility-Header' -'rsvp-e2e-ignore' -'RSVP-E2E-IGNORE' -fc -'FC' -'SCTP' -pipe -'PIPE' -sps -'SPS' -iplt -'IPLT' -sscopmce -'SSCOPMCE' -crudp -'CRUDP' -crtp -'CRTP' -fire -'FIRE' -isis -'ISIS' -ptp -'PTP' -sm -'SM' -smp -'SMP' -uti -'UTI' -srp -'SRP' -stp -'STP' -iatp -'IATP' -ddx -'DDX' -l2tp -'L2TP' -pgm -'PGM' -carp -vrrp -'CARP' -'ipx-in-ip' -'IPX-in-IP' -'compaq-peer' -'Compaq-Peer' -snp -'SNP' -ipcomp -'IPComp' -'a/n' -'A/N' -qnx -'QNX' -scps -'SCPS' -aris -'ARIS' -pim -'PIM' -pnni -'PNNI' -ifmp -'IFMP' -gmtp -'GMTP' -encap -'ENCAP' -etherip -'ETHERIP' -'scc-sp' -'SCC-SP' -micp -'MICP' -'IPIP' -'ax.25' -'AX.25' -mtp -'MTP' -larp -'LARP' -'sprite-rpc' -'Sprite-RPC' -ospf -'OSPFIGP' -eigrp -'EIGRP' -tcf -'TCF' -dgp -'DGP' -'nsfnet-igp' -'NSFNET-IGP' -ttp -'TTP' -vines -'VINES' -'secure-vmtp' -'SECURE-VMTP' -vmtp -'VMTP' -'iso-ip' -'ISO-IP' -'wb-expak' -'WB-EXPAK' -'wb-mon' -'WB-MON' -'sun-nd' -'SUN-ND' -'br-sat-mon' -'BR-SAT-MON' -pvp -'PVP' -wsn -'WSN' -cphb -'CPHB' -cpnx -'CPNX' -ipcv -'IPCV' -visa -'VISA' -'sat-mon' -'SAT-MON' -ippc -'IPPC' -rvd -'RVD' -kryptolan -'KRYPTOLAN' -'sat-expak' -'SAT-EXPAK' -cftp -'CFTP' -'ipv6-opts' -'IPV6-OPTS' -'ipv6-nonxt' -'IPV6-NONXT' -'ipv6-icmp' -'IPV6-ICMP' -'SKIP' -tlsp -'TLSP' -mobile -'MOBILE' -narp -'NARP' -swipe -'SWIPE' -'i-nlsp' -'I-NLSP' -ah -'AH' -esp -'ESP' -bna -'BNA' -dsr -'DSR' -gre -'GRE' -rsvp -'RSVP' -idrp -'IDRP' -'ipv6-frag' -'IPV6-FRAG' -'ipv6-route' -'IPV6-ROUTE' -sdrp -'SDRP' -'IPV6' -il -'IL' -'tp++' -'TP++' -'idpr-cmtp' -'IDPR-CMTP' -ddp -'DDP' -xtp -'XTP' -idpr -'IDPR' -'3pc' -'3PC' -dccp -'DCCP' -'merit-inp' -'MERIT-INP' -'mfe-nsp' -'MFE-NSP' -netblt -'NETBLT' -'iso-tp4' -'ISO-TP4' -irtp -'IRTP' -rdp -'RDP' -'leaf-2' -'LEAF-2' -'leaf-1' -'LEAF-1' -'trunk-2' -'TRUNK-2' -'trunk-1' -'TRUNK-1' -'xns-idp' -'XNS-IDP' -prm -'PRM' -hmp -'HMP' -dcn -'DCN-MEAS' -mux -'MUX' -'UDP' -'CHAOS' -xnet -'XNET' -emcon -'EMCON' -argus -'ARGUS' -'PUP' -nvp -'NVP-II' -'bbn-rcc' -'BBN-RCC-MON' -igp -'IGP' -'EGP' -cbt -'CBT' -'TCP' -st2 -'ST2' -ipencap -'IP-ENCAP' -ggp -'GGP' -'IGMP' -'ICMP' -'IP' -sockets -select_write -select_read -eagain -create_accept_socket -zero -write_waits -write_tries -write_pkg -write_fails -write_byte -v6only -void -use_min_mtu -use_ext_recvinfo -user_timeout -usec -update_connect_context -update_accept_context -unknown -unicast_hops -unblock_source -txqlen -tunnel6 -tunnel -transparent -throughput -syncnt -staticarp -spec_dst -sndtimeo -sndlowat -sndbufforce -slen -slave -simplex -set_peer_primary_addr -setfib -sendsrcaddr -sendfile_waits -sendfile_tries -sendfile_pkg_max -sendfile_pkg -sendfile_max -sendfile_fails -sendfile_byte -select_sent -select_failed -sec -rxq_ovfl -rtoinfo -rthdr -router_alert -rights -retopts -reset_streams -renaming -reliability -recvpktinfo -recvorigdstaddr -recvopts -recvif -recvhoplimit -recverr -recvdstaddr -read_tries -read_pkg -read_fails -read_byte -rdm -rcvtimeo -rcvlowat -rcvbufforce -pup -pronet -promisc -primary_addr -ppromisc -portsel -portrange -pointopoint -pkttype -pktinfo -peercred -peer_auth_chunks -peer_addr_params -peek -passcred -partial_delivery_point -outgoing -otherhost -origdstaddr -oobinline -oob -oactive -num_unknown_cmds -num_unexpected_writes -num_unexpected_reads -num_unexpected_connects -num_unexpected_accepts -num_threads -num_general_errors -not_bound -notrailers -nosignal -noopt -nodefrag -noarp -nlen -netrom -multicast_hops -multicast_all -mtu_discover -msfilter -minttl -mincost -metricom -mem_start -mem_end -md5sig -maxseg -maxburst -master -mark -lower_up -lowdelay -local_auth_chunks -localtlk -link2 -link1 -link0 -leave_group -knowsepoch -kernel -keepintvl -keepidle -keepcnt -join_group -i_want_mapped_v4_addr -irq -ipv6 -ipip -ipcomp_level -ip -integer_range -initmsg -infiniband -implink -igmp -ifindex -ieee1394 -ieee802 -icmp6 -icmp -host -hopopts -hoplimit -hmac_ident -hdrincl -hatype -get_peer_addr_info -get_overlapped_result -frelay -freebind -fragment_interleave -fastroute -faith -explicit_eor -events -eui64 -esp_trans_level -esp_network_level -errqueue -eor -egp -eether -echo -dynamic -dying -dup -dstopts -drop_source_membership -dormant -dontfrag -dma -dlci -disable_fragments -delayed_ack_time -default_send_params -data_size -ctrunc -credentials -cork -context -congestion -confirm -completion_status -cmsg_cloexec -checksum -chaos -cantconfig -cancelled -busy_poll -block_source -bindtodevice -base_addr -bad_data -ax25 -automedia -autoclose -auth_level -auth_key -auth_delete_key -auth_chunk -auth_asconf -auth_active_key -authhdr -atm -associnfo -arcnet -appletlk -already -allmulti -alen -add_source_membership -add_socket -addrform -adaption_layer -acc_waits -acc_tries -acc_fails -acc_success -acceptfilter -acceptconn -zerocopy -wstates -write_pkg_max -want -txtime -txstatus -time_exceeded -sourceaddr -socket_level -slist -siftxqlen -sifnetmask -sifmtu -sifdstaddr -sifbrdaddr -sifaddr -send_failure -sender_dry -selected -rstates -remote -reject_route -read_waits -read_pkg_max -probe -port_unreach -policy_fail -pkt_toobig -peer_rwnd -peer_error -partial_delivery -otp_socket_option -origin -onoff -offender -num_writers -num_tstreams -num_tseqpkgs -num_tdgrams -num_sockets -num_readers -num_pudp -num_ptcp -num_psctp -num_pip -number_peer_destinations -num_outstreams -num_dlocal -num_dinet6 -num_dinet -num_cnt_bits -num_acceptors -null -not_neighbour -noroute -nogroup -net_unreach -net_unknown -multiaddr -missing -asocmaxrxt -max_instreams -max_init_timeo -max_attempts -local_rwnd -listening -io_num_threads -io_backend -iov_max -interface -initial -include -in6_sockaddr -in4_sockaddr -how -host_unreach -host_unknown -giftxqlen -gifnetmask -gifname -gifmtu -gifmap -gifindex -gifhwaddr -gifflags -gifdstaddr -gifconf -gifbrdaddr -gifaddr -frag_needed -exclude -eei -dtor -dont -do -dest_unreach -data_io -ctype -counter_wrap -cookie_life -closing -bufsz -boolean -authentication -assoc_id -association -adm_prohibited -address -addr_unreach -adaptation_layer -symlink -device -no_reuse -dont_need -will_need -random -skip_type_check -gc_buffer -out_of_memory -acquired -lock_order_violation -trace_ts -gc_zlib -unknown_error -version_error -buf_error -mem_error -stream_error -stream_end -already_initialized -not_initialized -sub_get -handle_sys_task -handle_incoming_signals -done -erts_dirty_process_signal_handler -send_copy_req -send_copy_reqs -check_send_copy_req -switch_area -not_handled_message -working -idle -msg_loop -nif_not_loaded -ets_info_binary_iter -ets_info_binary_error -sched_wall_time -kernel_refc -find_lac -code_purger -literal_area_collector -set_code_and_literal_cleaner_prio -'@flush_monitor_messages_refopt' -mc_refill -is_map_iter -mc_iterator -get_cpc_opts -mseg_alloc -gcopt -allow_gc -'-inlined-error_with_inherited_info/3-' -ensure_tracer_module_loaded -gc_info -schedulers -receive_allocator -insert_info -instance -insert_instance -mk_res_list -get_alloc_info -process_table -module_table -module_refs -loaded_code -fun_table -external_alloc -export_table -export_list -ets_misc -atom_table -atom_space -aa_mem_data -receive_emd -fix_alloc -au_mem_data -sbcs -mbcs_pool -mbcs -au_mem_current -au_mem_blocks_1 -blocks -au_mem_blocks -acc_blocks_size -ets_alloc -eheap_alloc -binary_alloc -au_mem_acc -au_mem_fix -fix_types -fix_proc -proc -msg_ref -ll_ptimer -hl_ptimer -bif_timer -accessor_bif_timer -get_fix_proc -get_memval -memory_1 -rvrs -processor_node -cput_i2e_tag -cput_i2e_tag_map -cput_i2e -cput_e2i -logical -thread -processor -core -cput_e2i_clvl -internal_cpu_topology -get_cookie -auth -set_cookie -passive_cnct -send_nosuspend -fun_info_1 -disconnect -disconnect_node -crasher -new_stacktrace -prepare_loading_1 -is_alive -garbage_collect_message_area -get_gc_opts -stderr -bad_option -radix -digits_per_small -trim_zeroes -get_sign -combine_pairs -combine -segmentize_1 -segmentize -big_binary_to_int -clean -'no server found' -ebusy -std_error -error_report -file_error -invalid_current_directory -'-prim_read_file_info/3-inlined-0-' -'-prim_list_dir/2-inlined-0-' -'-prim_get_file/2-inlined-0-' -'-open_archive/4-inlined-0-' -'-foldl_archive/3-inlined-0-' -'-start/0-fun-0-' -'-efile_get_mods_par/3-fun-0-' -'-efile_gm_spawn_1/5-fun-0-' -'-prim_get_file/2-fun-0-' -'-prim_list_dir/2-fun-0-' -'-prim_read_file_info/3-fun-0-' -'-open_archive/4-fun-0-' -'-ensure_virtual_dirs/6-fun-0-' -'-ensure_virtual_dirs/6-fun-1-' -'-foldl_archive/3-fun-0-' -'-load_prim_archive/3-fun-0-' -load_prim_archive -real_path -normalize -win32_pathtype -unix_pathtype -pathtype -absname_vr -volumerelative -relative -absolute -ipv4_addr -ipv4_address -ipv4_list -is_prefix -archive_split -no_match -string_match -archive -no_split -name_split -path_join -path_split -to_strs -keyins -keysort -deep_member -send_all -win32 -is_basename -clear_cache -cache_new -foldl_archive -ensure_virtual_dirs -open_archive -cache -apply_archive -prim_get_cwd -archive_read_file_info -prim_read_file_info -archive_list_dir -prim_list_dir -archive_get_file -prim_get_file -primary -prim_set_primary_archive -do_prim_purge_cache -prim_purge_cache -loader_debug -prim_init -port_error -ll_close -ll_open_set_bind -ll_udp_open -ll_tcp_connect -udp_options -tcp_timeout -tcp_options -inet_stop_port -inet_get_cwd -inet_read_link_info -inet_read_file_info -inet_list_dir -inet_send_and_rcv -inet_get_file_from_port1 -inet_get_file_from_port -inet_timeout_handler -inet_exit_port -find_collect -find_loop -connect_master -find_master -bad_return -gm_process -gm_arch_get -gm_get_mods -efile_gm_get_1 -efile_gm_get -efile_gm_spawn_1 -efile_gm_spawn -efile_gm_recv -efile_any_archives -efile_get_mods_par -handle_get_modules -efile_timeout_handler -efile_get_cwd -efile_read_file_info -efile_list_dir -efile_set_primary_archive -emfile -efile_get_file_from_port3 -'prim_load port died' -port_died -efile_get_file_from_port2 -efile_get_file_from_port -handle_timeout -handle_exit -handle_stop -handle_get_cwd -handle_read_link_info -handle_read_file_info -handle_list_dir -handle_purge_archive_cache -handle_set_primary_archive -handle_get_file -bad_state -report -enotdir -enoent -check_file_result -purge_archive_cache -set_primary_archive -get_path -init_ack -noport -efile -start_efile -hosts -start_inet -loader -prim_state -'-filter_fun/0-fun-0-' -'-include_acc/3-fun-0-' -'-get_cd_loop/11-fun-0-' -'-get_cd_loop/11-fun-1-' -'-get_cd_loop/11-fun-2-' -pwrite_binary -pwrite_iolist -skipper -skip_iolist -splitter -split_iolist -local_file_header -local_file_header_from_bin -bad_cd_file_header -cd_file_header -cd_file_header_from_bin -dos_date_time_to_datetime -add_extra_info -cd_file_header_to_file_info -eocd -eocd_and_comment_from_bin -regular -binary_io -set_file_info -prim_file_io -find_eocd_header -seek -bad_eocd -get_end_of_central_dir -get_filename_from_b2 -bad_central_directory -get_file_header -get_cd_loop -get_central_dir -offset_over_z_data_descriptor -unsupported_compression -get_z_all -bad_local_file_header -bad_local_file_offset -get_z_file -get_zip_input -lists_foldl -include_acc -illegal_filter -primzip_file -do_foldl -foldl -primzip -do_open -filter_fun_throw -filter_fun -prim_zip -skip_unicast -skip_multicast -skip_friendly_name -skip_dns_server -skip_anycast -include_wins_info -include_tunnel_bindingorder -include_prefix -include_gateways -include_all_interfaces -include_all_compartments -'-getaddrinfo/2-lc$^0/1-0-' -nif_if_names -nif_if_index2name -nif_if_name2index -nif_get_ip_address_table -nif_get_interface_info -nif_get_if_entry -nif_get_adapters_addresses -nif_getifaddrs -nif_getaddrinfo -nif_getnameinfo -nif_gethostname -if_names -if_index2name -if_name2index -get_ip_address_table -get_if_entry -get_interface_info -no_skips_no_includes -no_skips_all_includes -all_skips_no_includes -all_skips_all_includes -get_adapters_addresses -getaddrinfo -getnameinfo -peek_off -'-supports/2-inlined-0-' -'-init/0-fun-0-' -'-init/0-fun-1-' -'-init/0-fun-2-' -'-init/0-fun-3-' -'-init/0-fun-4-' -'-supports/1-fun-4-' -'-supports/1-fun-3-' -'-supports/1-fun-2-' -'-supports/1-fun-1-' -'-supports/1-fun-0-' -'-supports/2-fun-0-' -'-is_supported/2-fun-4-' -'-is_supported/2-fun-3-' -'-is_supported/2-fun-2-' -'-is_supported/2-fun-1-' -'-is_supported/2-fun-0-' -'-bind/3-lc$^0/1-0-' -'-enc_ioctl_flags/2-fun-0-' -'-merge_sockaddr/2-fun-0-' -'-enc_msg/1-fun-0-' -'-enc_cmsgs/2-lc$^0/1-0-' -level -'-dec_cmsgs/2-lc$^0/1-0-' -nif_cancel -nif_ioctl -nif_peername -nif_sockname -nif_getopt -nif_setopt -nif_shutdown -nif_finalize_close -nif_close -nif_recvmsg -nif_recvfrom -nif_recv -nif_sendfile -nif_sendmsg -nif_sendto -nif_send -nif_accept -nif_listen -nif_connect -nif_bind -nif_open -nif_supports -nif_command -nif_info -p_get -p_put -ioctl_flag -invalid_ioctl_flag -invalid_socket_option -sndctrlbuf -rcvctrlbuf -rcvbuf -iow -controlling_process -otp -enc_sockopt -dec_cmsgs -enc_cmsgs -enc_msg -msg_flag -enc_msg_flags -enc_path -merge_sockaddr -enc_sockaddr -enc_protocol -enc_ioctl_flags -enc_ioctl_request -cancel -sifflags -ioctl_request -ioctl -value_spec -getopt_native -getopt_result -socket_option -setopt_common -setopt_native -finalize_close -recvmsg -improper_list -element_not_binary -invalid_iov -rest_iov -msg -with -ctrl -sendmsg_invalid -iov -sendmsg_result -completion -nth -domain -get_is_supported -p_get_is_supported -is_supported -is_supported_option -fold -supports -protocol -options_table -protocols_table -put_supports_table -msg_flags -ioctl_flags -ioctl_requests -options -protocols -socket_debug -debug_filename -use_registry -registry -unknown_monitor -unknown_socket -'-loop/1-fun-0-' -'-do_which_sockets/2-lc$^0/1-0-' -whoami -user_size -user_which_monitors -user_update -user_take -user_lookup -user_delete -sock_which_monitors -sock_update -sock_take -sock_lookup -mon_size -mon_update -mon_take -mon_lookup -mon_delete -do_cancel_monitor_socket -nosock -mon -msocket -do_monitor_socket -do_which_sockets -sock_size -socket -mk_down_msg -error_msg -mk_log_msg -log_msg -handle_unexpected_msg -handle_monitored_by2 -handle_monitored_by -handle_user_down_cleanup -handle_user_down -bad_request -send_down -handle_send_down -user_sock_delete_update -handle_delete_socket -handle_add_socket -sendfile_deferred_close -'$socket' -which_monitors -number_of_monitors -cancel_monitor -which_sockets -number_of -socket_registry -enqueue_nif -enqueue_input_1 -enqueue_input -bad_memlevel -arg_mem -bad_windowbits -arg_bitsz -bad_eos_behavior -arg_eos_behavior -bad_compression_method -arg_method -bad_compression_strategy -rle -huffman_only -filtered -arg_strategy -bad_compression_level -best_speed -best_compression -arg_level -bad_flush_mode -full -arg_flush -getStash_nif -setStash_nif -clearStash_nif -empty -restore_progress -save_progress -append_iolist -dequeue_next_chunk -dequeue_all_chunks_1 -dequeue_all_chunks -gunzip -gzip -unzip -zip -data_error -uncompress -finish -compress -crc32_nif -getBufSize_nif -getBufSize -setBufSize_nif -setBufSize -inflateEnd_nif -inflateEnd -safeInflate -need_dictionary -finished -yield_inflateChunk -inflateChunk -inflate_opts -inflate_nif -exception_on_need_dict -inflate -inflateReset_nif -inflateReset -inflateGetDictionary_nif -not_supported -inflateGetDictionary -inflateSetDictionary_nif -inflateSetDictionary -inflateInit_nif -cut -inflateInit -deflateEnd_nif -deflateEnd -deflate_nif -zlib_opts -deflate_opts -deflateParams_nif -deflate -deflateParams -deflateReset_nif -deflateReset -deflateSetDictionary_nif -deflateSetDictionary -deflateInit_nif -deflated -deflateInit -set_controller_nif -set_controlling_process -to_posix_seconds -from_posix_seconds -is_path_translatable -decode_path -encode_path -proplist_get_value -reverse_list -altname_nif -get_cwd_nif -set_cwd_nif -get_device_cwd_nif -del_dir_nif -del_file_nif -make_dir_nif -rename_nif -make_soft_link_nif -make_hard_link_nif -read_info_nif -read_link_nif -list_dir_nif -altname -make_symlink -make_link -del_dir -make_dir -set_cwd -get_dcwd -file_info_convert_ctime -file_info_convert_mtime -universal -file_info_convert_atime -throw_on_error -set_time_nif -set_time -set_permissions_nif -set_permissions -set_owner_nif -set_owner -write_file_info_1 -write_file_info -posix -adjust_times -read_handle_info_1 -read_handle_info -read_info_1 -read_link_info -no_translation -gl -list_dir_convert -list_dir_1 -list_dir_all -list_dir -translate_raw_name -read_link_1 -read_link_all -read_link -write_file -read_file_nif -read_file -read_handle_info_nif -delayed_close_nif -get_handle_nif -truncate_nif -allocate_nif -advise_nif -sync_nif -seek_nif -pwrite_nif -pread_nif -write_nif -read_nif -close_nif -file_desc_to_ref_nif -open_nif -read_ahead -fill_fd_option_map -build_fd_data -not_on_controlling_process -get_fd_data -reset_write_position -get_handle -ipread_s32bu_p32bu_nif -ipread_s32bu_p32bu -internal_get_nif_resource -sequential -pwrite_list -pwrite_plain -pwrite -pread_list -pread -position_1 -bof -cur -datasync -sync -allocate -advise -truncate -write_1 -read_line_1 -read_line -read_1 -r_ahead_size -r_buffer -make_fd -file_desc_to_ref -copy_opened -file_descriptor -helper_loop -bound -connecting -accepting -multicast -no_pointtopoint -no_broadcast -down -up -term -ssl -sctp_setadaptation -sctp_assocparams -addr_over -unordered -sctp_assoc_value -sctp_event_subscribe -sackdelay_disable -sackdelay_enable -pmtud_disable -pmtud_enable -hb_demand -hb_disable -hb_enable -sctp_paddrparams -sctp_prim -sctp_setpeerprim -sctp_paddrinfo -eprotonosupport -'-bindx/3-lc$^0/1-0-' -'-type_value_2/2-fun-1-' -'-type_value_2/2-fun-0-' -'-enc_value_2/2-lc$^0/1-1-' -'-enc_value_2/2-lc$^1/1-0-' -ctl_cmd -get_ip6 -get_ip4 -get_ip -get_addr -get_addrs -ip6_loopback -ip6_any -ip6_to_bytes -ip4_loopback -ip4_any -ip4_to_bytes -utf8_to_characters -tree -ktree_keys -ktree_update -ktree_insert -ktree_get -is_defined -ktree_is_defined -ktree_empty -len -rev -build_iflist -build_ifaddrs_opts -build_ifaddrs -encode_ifname -enc_time -dec_status -dec_stats -decode_stats -send_oct -send_max -send_cnt -send_avg -recv_oct -recv_max -recv_dvi -recv_cnt -recv_avg -enc_stats -encode_stats -subs_empty_out_q -dec_subs -decode_subs -enc_subs -encode_subs -encode_ifopt_val -encode_ifopts -decode_ifopts -dec_ifopt -enc_ifopt -mtu -dstaddr -broadaddr -type_ifopt -merge_fields -merge_options -need_template -multi -dec -dec_opt_val -decode_opt_val -enc_opts -encode_opts -once -enc_opt_val -encode_opt_val -enum_name -enum_val -enum_names -enum_vals -borlist -dec_value_tuple -decode -dec_value -flowinfo -scope_id -enc_value_2 -enc_value_tuple -enc_value_1 -enc_value_default -enc_value -family -loopback -uint8 -uint24 -uint16 -sockaddr -sctp_assoc_id -linkaddr -ether -bool8 -binary_or_uint -enum -bitenumlist -type_value_2 -type_value_record -type_value_tuple -type_value_1 -type_value_default -record -type_value -membership -int -uint -mif -opts -type_opt_1 -type_opt -dec_opt -sndbuf -show_econnreset -send_timeout_close -send_timeout -sctp_status -sctp_set_peer_primary_addr -sctp_rtoinfo -sctp_primary_addr -sctp_peer_addr_params -sctp_nodelay -sctp_maxseg -sctp_initmsg -sctp_i_want_mapped_v4_addr -sctp_get_peer_addr_info -sctp_events -sctp_disable_fragments -sctp_delayed_ack_time -sctp_autoclose -sctp_associnfo -sctp_adaptation_layer -reuseport_lb -reuseport -reuseaddr -recvttl -recvtos -recvtclass -recbuf -read_packets -pktoptions -nopush -nodelay -netns -multicast_ttl -multicast_loop -multicast_if -low_watermark -low_msgq_watermark -keepalive -ipv6_v6only -high_watermark -high_msgq_watermark -header -exit_on_close -exclusiveaddruse -drop_membership -dontroute -deliver -delay_send -buffer -bind_to_device -add_membership -enc_opt -is_sockopt_val -attach -detach -unrecv -getservbyport1 -getservbyport -getservbyname1 -getservbyname -gethostname -getstatus -getprotocol -gettype -getindex -ignorefd -getfd -getstat -subscribe -ifset -ifget -getiflist -netmask -broadcast -pointtopoint -getifaddrs_ifget -hwaddr -hwaddr_last -comp_ifaddrs_3 -comp_ifaddrs_2 -comp_ifaddrs_flags -comp_ifaddrs -enotsup -getifaddrs -chgopts -chgopt -getopts -getopt -setopt -socknames -setsockname -sockname -sctp_assoc_change -peernames -setpeername -peername -recvfrom0 -recvfrom -async_recv -recv0 -recv -sendfile_1 -sendfile_maybe_uncork -sendfile_maybe_cork -sctp_default_send_param -sctp_sndrcvinfo -sendmsg -uint32 -do_sendto -sendto -peeloff -listen -async_accept -accept_opts -accept0 -accept -connectx0 -addr_list -connectx -async_connect0 -async_connect -connect0 -bindx_check_addrs -bindx -addr -do_bind -bind -send_pend -close_pend_loop -close_port -linger -shutdown_1 -read_write -drv2protocol -sctp -protocol2drv -seqpacket -dgram -enc_type -inet6 -enc_family -bool -fdopen -prim_inet -arg_reg_alloc -prim_eval -peek_head -copying_read -unlock -try_lock -find_byte_index -wipe -write -read_iovec -read -shutdown_timeout -not_allowed -starting -'-to_string/2-lc$^1/1-1-' -'-to_string/2-lc$^0/1-0-' -'-notify/1-fun-0-' -'-get_pids/2-lc$^0/1-0-' -'-do_boot/2-fun-0-' -'-eval_script/2-fun-1-' -'-eval_script/2-fun-2-' -'-eval_script/2-fun-0-' -'-load_modules/2-lc$^0/1-0-' -'-load_modules/2-lc$^1/1-2-' -'-load_modules/2-lc$^2/1-3-' -'-load_modules/2-lc$^3/1-4-' -'-load_modules/2-lc$^4/1-1-' -prepared -'-prepare_loading_fun/0-fun-0-' -'-patch_path/2-lc$^0/1-0-' -'-patch_dir/2-lc$^0/1-1-' -'-patch_dir/2-lc$^1/1-0-' -'-shutdown_timer/1-fun-0-' -'-run_on_load_handlers/2-fun-0-' -'-run_on_load_handler/2-fun-0-' -standard_error -format -io_lib -'-debug_profile_format_mfas/1-fun-0-' -'-collect_loaded_mfas/0-lc$^1/1-0-' -'-collect_loaded_mfas/0-lc$^0/1-1-' -bad_generator -'-collect_loaded_mfas/2-lc$^0/1-0-' -collect_mfa -collect_mfas -all_loaded -collect_loaded_mfas -sort -debug_profile_format_mfas -snifs -debug_profile_mfas -debug_profile_stop -debug_profile_start -on_load_function_failed -on_load_handler_returned_ok -spawn_monitor -run_on_load_handler -running_on_load_handler -on_load_loop -on_load_handler_init -start_on_load_handler_process -run_on_load -run_on_load_handlers -archive_extension -objfile_extension -set_argument -get_argument1 -to_strings -get_flag_args -get_flag_list -get_flag -update_flag -get_args -flag -check -start_extra_arg -start_arg2 -start_arg -eval_arg -end_args -arg -parse_boot_args -timer -flush_timout -shutdown_time -shutdown_timer -load_module -do_load_module -explain_add_head -otp_release -nofile -explain_ensure_loaded_error -exprs -new_bindings -erl_eval -parse_exprs -erl_parse -erl_anno -dot -erl_scan -start_it -start_em -start_in_kernel -funny_splitwith -funny_split -directory -file_info -read_file_info -patch_dir -patch_path -extract_var -add_var -fix_path -make_path -prepare_loading_fun -load_rest -load_failed -get_modules -load_modules -'unexpected command in bootfile' -kernel_load_completed -primLoad -preLoaded -kernelProcess -eval_script -get_cwd -script -'bootfile format error' -'cannot get bootfile' -not_found -get_boot -pz -pa -path_flags -bootfile -invalid_boot_var_argument -boot_var -get_boot_vars_1 -get_boot_vars -no_or_multiple_bindir_variables -bindir -check_bindir -no_or_multiple_root_variables -root -get_root -es -init__boot__on_load_handler -init_debug_flag -init_debug -path -do_boot -add_to_kernel -set_path -start_prim_loader -kernel_pid -terminate -del -sub -do_unload -logger_server -unload -kill_all_ports -kill_em -get_pids -kill_all_pids -resend -shutdown_loop -shutdown_kernel_pid -get_kernelpid -get_logger -heart -get_heart -prepare_shutdown -global_name_server -global_prepare_shutdown -shutdown_pids -stop_heart -clear_system -do_restart -do_stop -stopping -set_flag -config -stdout -io_request -user -do_handle_msg -new_state -handle_msg -loop -new_kernelpid -garb_boot_loop -foreach -get_file -erl_prim_loader -do_ensure_loaded -progress -boot_loop -crash -halt_string -things_to_string -flatten -join -printable_list -to_string -state -relaxed -strict -code_path_choice -map -b2s -b2a -s -eval -prepare_run_args -profile_boot -stop_1 -is_bytelist -reboot -interactive -embedded -mode -request -wait_until_started -notify_when_started -make_permanent -ensure_loaded -fetch_loaded -get_status -bs2ss -bs2as -set_script_name -absname -filename -get_script_name -script_name -script_id -get_argument -get_plain_arguments -get_arguments -set_configfd -get_configfd -done_in_microseconds -debug -'-start/2-fun-0-' -'-restart/0-fun-0-' -if_loaded -fatal -boot -continue -died -test_progress -do_test_hard_purge -continued -started -do_test_soft_purge -do_test_purge -cpc_make_requests -cpc_request -cpc_sched_kill -cpc_sched_kill_waiting -cpc_list_rm -cpc_handle_down -cpc_reverse -cpc_result -cpc_receive -cpc_kill -cpc_static -check_proc_code -do_finish_after_on_load -do_soft_purge -do_purge -check_requests -soft_purge -purge -change_prio -test_purge -handle_request -wait_for_request -sleep -other -gc -check_io -aux -prim_net -prim_socket -zlib -prim_buffer -prim_tty -'TRACE' -'DELETE' -'PUT' -'POST' -'HEAD' -'GET' -'OPTIONS' -'Proxy-Connection' -'Keep-Alive' -'Cookie' -'X-Forwarded-For' -'Set-Cookie2' -'Set-Cookie' -'Accept-Ranges' -'Last-Modified' -'Expires' -'Etag' -'Content-Type' -'Content-Range' -'Content-Md5' -'Content-Location' -'Content-Length' -'Content-Language' -'Content-Encoding' -'Content-Base' -'Allow' -'Www-Authenticate' -'Warning' -'Vary' -'Server' -'Retry-After' -'Public' -'Proxy-Authenticate' -'Location' -'Age' -'User-Agent' -'Referer' -'Range' -'Proxy-Authorization' -'Max-Forwards' -'If-Unmodified-Since' -'If-Range' -'If-None-Match' -'If-Match' -'If-Modified-Since' -'Host' -'From' -'Authorization' -'Accept-Language' -'Accept-Encoding' -'Accept-Charset' -'Accept' -'Via' -'Upgrade' -'Transfer-Encoding' -'Pragma' -'Date' -'Connection' -'Cache-Control' -process_low -process_normal -process_high -process_max -characters_to_list_trap_4 -characters_to_list_trap_3 -characters_to_list_trap_2 -characters_to_list_trap_1 -characters_to_utf8_trap -md5_trap -ram_file_drv -udp_inet -tcp_inet -sendfile -ttl -tclass -tos -empty_out_q -udp_error -udp_passive -tcp_error -tcp_closed -tcp_passive -inet_reply -inet_async -udp -tcp -unspec -inet -spawn_forker -vanilla -delete_trap -select_trap -replace_trap -count_trap -select_delete_trap -darwin -unix -erts_beamasm -list_to_integer -binary_to_integer -from_keys -unalias -beamfile_module_md5 -beamfile_chunk -prepare_loading -get_creation -abort_pending_connection -ets_raw_next -ets_raw_first -ets_lookup_binary_info -spawn_system_process -counters_info -counters_put -counters_add -counters_get -counters_new -compare_exchange -exchange -add_get -add -atomics -atomics_new -erase_persistent_terms -persistent_term -internal_select_delete -internal_delete_all -is_map_key -map_get -gather_carrier_info -gather_alloc_histograms -map_next -new_connection -get_dflags -iolist_to_iovec -set_signal -fmod -ceil -floor -has_prepared_code_on_load -copy_shared -size_shared -split -purge_module -check_dirty_process_code -is_process_executing_dirty -map_info -fun_info_mfa -take -cmp_term -values -update -remove -merge -keys -is_key -from_list -find -maps -map_size -is_map -inspect -printable_range -binary_to_float -float_to_binary -integer_to_binary -delete_element -insert_element -finish_loading -dt_append_vm_tag_data -dt_prepend_vm_tag_data -dt_restore_tag -dt_spread_tag -dt_get_tag_data -dt_get_tag -dt_put_tag -posixtime_to_universaltime -universaltime_to_posixtime -check_old_code -native_name_encoding -file -is_translatable -internal_normalize_utf8 -internal_native2name -internal_name2native -prim_file -nif_error -decode_unsigned -encode_unsigned -referenced_byte_size -list_to_bin -part -at -longest_common_suffix -longest_common_prefix -matches -compile_pattern -binary_part -finish_after_on_load -call_on_load_function -load_nif -setopts -give_away -dflag_unicode_io -binary_to_existing_atom -binary_to_atom -atom_to_binary -bin_is_7bit -characters_to_list -characters_to_binary -decode_packet -update_element -bitstring_to_list -list_to_bitstring -bit_size -byte_size -tuple_size -is_bitstring -list_to_existing_atom -iolist_to_binary -iolist_size -make_fun -string -is_boolean -get_module_info -warning_map -hibernate -lcnt_clear -lcnt_collect -lcnt_control -dirty -interpreter_size -instructions -dist_ext_to_term -set_internal_state -get_internal_state -flat_size -same -disassemble -keyfind -keysearch -keymember -reverse -lists -internal_run -run -format_error_int -loaded_drivers -try_unload -try_load -erl_ddll -perf_counter -getpid -unsetenv -putenv -getenv -os -match_spec_run_r -match_spec_compile -select_replace -select_reverse -select_count -select -update_counter -slot -safe_fixtable -rename -insert_new -insert -prev -next -member -match_object -last -lookup_element -lookup -is_compiled_ms -delete_object -delete -internal_request_all -match_spec_test -is_record -is_function -is_binary -is_reference -is_port -is_pid -is_number -is_integer -is_float -is_tuple -is_list -is_atom -subtract -append -'!' -is_builtin -raise -is_process_alive -fun_to_list -port_to_list -ref_to_list -system_profile -system_monitor -system_info -system_flag -append_element -make_tuple -read_timer -cancel_timer -send_after -start_timer -pow -atan2 -sqrt -log10 -log2 -log -exp -erfc -erf -atanh -atan -asinh -asin -acosh -acos -tanh -tan -sinh -sin -cosh -cos -math -bump_reductions -resume_process -suspend_process -seq_trace_print -seq_trace_info -seq_trace -trace_delivered -trace_info -trace_pattern -port_get_data -port_set_data -send_copy_request -release_area_switch -erts_literal_area_collector -spawn_request_abandon -no_aux_work_threads -dist_spawn_request -ets_super_user -create_dist_channel -dirty_process_handle_signals -system_check -is_system_process -perf_counter_unit -time_unit -map_hashmap_children -term_type -map_to_tuple_keys -check_process_code -request_system_task -port_connect -port_close -port_control -port_command -port_call -port_info -dist_ctrl_set_opt -dist_ctrl_get_opt -dist_ctrl_get_data_notification -dist_ctrl_get_data -dist_ctrl_input_handler -dist_get_stat -setnode -spawn_opt -whereis -unlink -universaltime_to_localtime -universaltime -tuple_to_list -trunc -tl -time -term_to_iovec -term_to_binary -statistics -split_binary -spawn_link -spawn -setelement -self -round -registered -put -process_info -process_flag -pre_loaded -pid_to_list -open_port -system_time -monotonic_time -now -nodes -monitor_node -function_exported -module_loaded -md5_final -md5_update -md5_init -unique_integer -make_ref -localtime_to_universaltime -localtime -list_to_tuple -list_to_ref -list_to_port -list_to_pid -list_to_float -list_to_binary -list_to_atom -link -length -integer_to_list -hd -phash2 -phash -halt -get_keys -get -fun_info -float_to_list -float -external_size -exit_signal -erase -element -display_string -display -delete_module -date -crc32_combine -crc32 -binary_to_term -binary_to_list -atom_to_list -adler32_combine -adler32 -abs -debug_hash_fixed_number_of_locks -auto -nifs -yield -yes -x86 -xor -write_concurrency -wordsize -warning_msg -warning -wall_clock -waiting -wait_release_literal_area_switch -visible -version -value -unsafe -unload_cancelled -unloaded_only -unloaded -unless_suspending -unit -uniq -unblock_normal -unblock -utf32 -utf16 -utf8 -used -use_stdio -urun -unregister -unicode -ungreedy -undef -explicit_unalias -ucp -ucompile -type -try_clause -trim_all -trim -trap_exit -tracer -trace_status -trace_control_word -traced -trace -tpkt -total_run_queue_lengths_all -total_run_queue_lengths -total_heap_size -total_active_tasks_all -total_active_tasks -total -timestamp -'*' -timeout_value -time_offset -threads -thread_pool_size -this -term_to_binary_trap -tag -table_type -table -system_architecture -system_version -system_limit -system_flag_scheduler_wall_time -system -suspending -suspended -suspend -sunrm -success_only -strict_monotonic_timestamp -strict_monotonic -stream -stop -stderr_to_stdout -status -start -stack_size -ssl_tls -spawned -spawn_service -spawn_request_yield -spawn_request -spawn_reply -spawn_init -spawn_driver -spawn_executable -skip -size -silent -sigquit -sigtstp -sigsegv -sigint -sigstop -sigalrm -sigabrt -sigchld -sigill -sigusr2 -sigusr1 -sigterm -signed -sighup -shutdown -short -set_tcw_fake -set_tcw -set_seq_token -set_on_spawn -set_on_link -set_on_first_spawn -set_on_first_link -set_cpu_topology -set -serial -sequential_trace_token -sequential_tracer -sensitive -send_to_non_existing_process -send -seconds -second -scope -scientific -scheme -schedulers_online -scheduler_wall_time_all -scheduler_wall_time -scheduler_id -scheduler -sbct -save_calls -safe -runtime -running_procs -running_ports -running -runnable_procs -runnable_ports -runnable -run_queue_lengths_all -run_queue_lengths -run_queue -run_process -reuse -return_trace -return_to_trace -return_to -return_from -resume -restart -reset_seq_trace -reset -report_errors -reply_tag -reply_demonitor -reply -rem -reload -registered_name -register -refc -reductions -recent_size -receive -reason -ready_output -ready_input -ready_error -read_concurrency -re_run_trap -re_pattern -re -raw -queue_size -public -ptab_list_continue -protection -protected -profile -proc_sig -procs -process_dump -process_limit -process_display -process_count -processes_used -processes -process -private_append -private -priority -print -prepare_on_load -prepare -position -positive -port_op -port_limit -port_count -ports -port -pid -permanent -pending_reload -pending_purge_lambda -pending_process -pending_driver -pending -pause -'++' -'+' -parent -parallelism -packet_size -packet -owner -overlapped_io -outstanding_system_requests_limit -output -out_exiting -out_exited -out -os_version -os_type -os_pid -orelse -ordered_set -or -opt -open_error -open -on_load -on_heap -old_heap_size -old_heap_block_size -ok -offset -off_heap -nouse_stdio -notsup -notify -notempty_atstart -notempty -noteol -notbol -notalive -not_purged -not_owner -not_pending -not_loaded_by_this_process -not_loaded -not_a_list -not -not_suspended -no_start_optimize -no_network -no_integer -no_float -no_fail -nosuspend -normal_exit -noproc -noeol -nodeup -nodedown_reason -nodedown -node_type -node -noconnection -noconnect -no_auto_capture -nomatch -newline -new_uniq -new_ports -new_processes -new_index -new -never_utf -net_kernel_terminated -net_kernel -'/=' -'=/=' -need_gc -native_addresses -native -namelist -named_table -name -nanosecond -nano_seconds -multiline -multi_scheduling -more -monotonic_timestamp -monotonic -monitors -monitor_nodes -monitor -monitored_by -module_info -module -'--' -'-' -minor_version -minor -min_bin_vheap_size -min_heap_size -min -millisecond -milli_seconds -microstate_accounting -microsecond -micro_seconds -meta_match_spec -meta -merge_trap -messages -message_queue_len -message_queue_data -message -memory_types -memory_internal -memory -md5 -mbuf_size -max_heap_size -maximum -max -match_spec_result -match_spec -match_limit_recursion -match_limit -match -major -magic_ref -machine -'<' -low -long_schedule -long_gc -logger -local -load_failure -load_cancelled -loaded -little -list_to_binary_continue -list -links -linked_in_driver -line_length -line_delimiter -line -lf -'=<' -ldflags -latin1 -last_calls -large_heap -label -known -kill_ports -killed -kill -keypos -iovec -iodata -io -iterator -is_seq_trace -is_constant -invalid -instruction_counts -internal_error -internal -integer -input -initial_call -init -inherit -info_trap -info_msg -info -index -inconsistent -incomplete -include_shared_binaries -inactive -in_exiting -in -ignore -if_clause -id -httph_bin -http_bin -http_error -http_eoh -http_header -http_request -http_response -https -httph -http -high -hide -hidden -heir -heart_port -heap_type -heap_sizes -heap_size -heap_block_size -have_dt_utag -handle -group_leader -grun -'>' -global -getting_unlinked -getting_linked -gather_system_check_result -gather_sched_wall_time_result -gather_microstate_accounting_result -gather_io_bytes -gather_gc_info_result -get_tcw -get_tail -get_size -get_seq_token -get_internal_state_blocked -get_all_trap -generational -'>=' -gc_minor_start -gc_minor_end -gc_max_heap_size -gc_major_start -gc_major_end -garbage_collection_info -garbage_collection -garbage_collecting -garbage_collect -function_clause -functions -function -fullsweep_after -free -format_cpu_topology -format_bs_fail -force -flush_monitor_messages -flush -flags -firstline -first -fd -fcgi -extra -external -extended -exports -exiting -existing_ports -existing_processes -existing -exited -exit_status -exclusive -exception_trace -exception_from -exact_reductions -'ETS-TRANSFER' -ets_info_binary -ets -erts_internal -erts_dflags -erts_debug -erts_code_purger -error_only -error_logger -error_info -error_handler -erl_signal_server -erlang -erl_tracer -erl_stdlib_errors -erl_kernel_errors -erl_init -erl_erts_errors -'==' -'=:=' -eol -eof -ensure_exactly -ensure_at_least -env -endian -enabled -enable_trace -emulator -emu_type -emu_flavor -einval -dynamic_node_name -dupnames -duplicated -duplicate_bag -dsend_continue_trap -driver_options -driver -dotall -dollar_endonly -'$_' -'$$' -dmonitor_node -div -'/' -dist_spawn_init -dist_data -dist_ctrlr -dist_ctrl_put_data -dist_cmd -dist -discard -disabled -disable_trace -dirty_nif_finalizer -dirty_nif_exception -dirty_io -dirty_execution -dirty_cpu_schedulers_online -dirty_cpu -dirty_bif_trap -dirty_bif_result -dirty_bif_exception -dictionary -deterministic -demonitor -delay_trap -default -decimals -decentralized_counters -debug_flags -data -current_stacktrace -current_location -current_function -creation -crlf -cr -cpu_timestamp -cpu -count -counters -copy_literals -copy -control -continue_exit -context_switches -const -connection_id -connection_closed -connected -connect -convert_time_unit -config_h -compressed -complete -compile -compat_rel -compact -commandv -command -code -closed -close -clock_service -clear -check_gc -characters_to_list_int -characters_to_binary_int -'CHANGE' -cflags -cdr -cd -cause -catchlevel -caseless -case_clause -capture -caller_line -caller -call_trace_return -call_time -call_memory -call_error_handler -call_count -busy_port -busy_limits_msgq -busy_limits_port -busy_dist_port -busy -build_type -build_flavor -bsr_unicode -bsr_anycrlf -bsr -bsl -breakpoint -break_ignored -bxor -bor -bnot -bm -blocked_normal -blocked -block_normal -block -binary_to_term_trap -binary_to_list_continue -binary_longest_suffix_trap -binary_longest_prefix_trap -binary_find_trap -binary_copy_trap -binary -bif_return_trap -bif_handle_signals_return -big -band -bag -bad_map_iterator -badtype -badopt -badsig -badrecord -badmatch -badmap -badkey -badfun -badfile -badarity -badarith -badarg -backtrace_depth -backtrace -awaiting_unload -awaiting_load -await_sched_wall_time_modifications -await_result -await_proc_exit -await_port_send_result -await_microstate_accounting_modifications -await_exit -auto_connect -attributes -atom_used -atom -asynchronous -async_dist -async -asn1 -arity -arg0 -args -apply -anycrlf -any -andthen -andalso -and -anchored -amd64 -already_loaded -already_exists -allow_passive_connect -alloc_util_allocators -allocator_sizes -allocator -allocated_areas -allocated -alloc_sizes -alloc_info -all_names -all_but_first -all -alive -alias -active_tasks_all -active_tasks -active -access -ac -absoluteURI -abs_path -abort -abandoned -'EXIT' -'UP' -'DOWN' -none -no -nil -undefined_lambda -undefined_function -nocatch -undefined -exit -error -throw -return -call -normal -timeout -infinity -'' -'$end_of_table' -'nonode@nohost' -'_' -true -false -=end diff --git a/aoc2023/src/day1/input.txt b/aoc2023/src/day1/input.txt deleted file mode 100644 index 6efe96c..0000000 --- a/aoc2023/src/day1/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -9dlvndqbddghpxc -rtkrbtthree8sixfoureight6 -fdxrqmfxdkstpmcj7lmphgsmqqnmjrtwo3tcbc -onetjcsmgk57nvmkvcvkdtqtsksgpchsfsjzkkmb -six8threepvlxttc85two -8five9ttqst2one2vz -hbrmhsnjeight64dgdnvdbspk7ninetzbvjczqrj -fourtwofivesix5 -3gksfourqf48 -7one1tnqxfvhmjvjzfive -sevenmcjs3lmlmxmcgptwobjggfive6four -seven8five3 -5sfknxsn5sevenfour446 -bxc5two67seven2 -jcsfivefive89seven85 -nine296 -seven5twoeight -1eighttwo8jfnhmfivefivezdsxqxqsjkone -foureight48sbkkvc17zbksgvcbb -lnzgspccsn4cxqqdbkj -qlxrxkpeight48xbgqnlkpkoneseven -z7onetwonec -7cns -pnpfninefive79twoone7 -2hrqpjjjbn -4gmlttgdzrhxbxnnine -4sixfiveone76jctmjsxdh5jrkv -3kvjmhpmglrdgmdnine -four63sevensevenone -jmz1eight4threej1 -four21zxksf9jxdvjmtn337 -msnronenine43three1threefrv -rjfhd6eight4 -78blgveightfiveone7bnsfnrmxsmtwonemrb -sixseven6four6 -mdjphcm9 -xsjmgdgqtwolg1nine45eight -five2six85npdqxgrshdjs4 -jbbnine2ttrktc2hxpxfdxgf -fngvqsgmjfmfslrmone2vtpsstpkhr2jmmxk -f683glvfsdvnsghvrzcdmxnx81 -lqblzgj322kqfsjrbxgcgsct -threeldfnrbstbxqdpxpkbztbp84eight -sevensevenmthprqg9six -qldknljthdjthreeklttd6six -7eightcdqxcftbgbfbnvqfive -gxjzhvkbcjhscdxhjdqxnhsevenxrdrjbcl5fvlvlxjjvb -9sixqnine9jk9six -zjtdbzr6njdgflrmpshxn -rktpknvmjknb7threefourhdxhcdtgtkvone -276lzxhone3two2 -82fivelppqzjq -lchslxtwohslsztgps5pdssctclhdkqtwo -2five8three9dnine8 -68jpnqldjgfnpcmvbxnszhz2252 -q32 -2sixtwo87 -hlmdvlrqlrjdshone3five -fivetwo7 -xsdcktrone29 -eightfour9eighttwoxvhdth9lndg4 -two8jgddjhcj67eight -8nrkrcrqhr21stqtvqn -tvbonepzrrklninexmpxrlkcpgg9qgrkcjt -6two5qjmoneclfhzhkxbntmvmdrc -prhmt4xvlg -3mghfgrhzkj5 -lq2lnrcj1pnlh -sixqhfqrmf8fivenkkcqpgf85lone -tlrlcbhdvd5 -three8seven -thfns325threefpvlntfvrf -twoblkldr2mmrsxpqxcms39seven6 -2mpcvttntg31mkznplfkbcgccsix -2sbs -828jnvjnbgrs1 -fhcglnxzss23bxfnpczvthree2 -7fhghprqvrbx1nxml2one32 -5fivethree7qrsixmcdveight6 -five4seven -1cfcfdzfjphsevenmdvnzh -qhmnleightbhbcntwojjfxpvlxt2spponenine -fivelskzvzsix5xtqkfl1 -2jfgpmdncvpjmqcgvnzpqlstzgfdvfxrlscjkzczsf -rzzplmzsfivetxbhcqnzdq4 -mvrvfour9eightseventhree -7smrdqkrh8qlzc -mpf2fivefivefivepgm -1sixpkrdjlszgdnccnllfsevenksdkvqbxbpbblthqpzqf -six91dxxdhrxcbmqpqm -sevenfour8nine7 -one2hnfvh -55jmqkqgvsgqcrzvmzqhone8twopsrtgmqrj -xnfjxqlrsjmgk68kvpptczxhkxcvrpgctddjklrmhzjgtcjh -seveng6two -1threexrzqcrknhc3 -58qtpqqz58888cmhs -pxvbhmczrvpnjnsrcdrnrjvzzpjnbgbxdseven6 -34two565 -four4six -sqtxsjsix54 -four3xrxmrkn4nrcsmljqrninethreeone -3six4bqddfivejnfrhnqqsgqhj -gtbtrtzp8seveneight3seven4xzdnfrvzgn -vggfdfvlrgvqqvjhkmxfsfbdpqfivexs16 -onegkvdhrfninerndk46nine -5fiveeighthnrlzln -threeqctjkpxjx39six89two2 -99ninecbzck -nxqlhpgnine6pvrrpfjpssix6seven -1dbrzjkckthm5sixsix -fivefmfqcsj19nhnzg -five91eightninecn -7ljnl71eight7mzhzfht -84sevenzrqvkxszdhg66 -jskktpm5mphd1 -boneightfournq6ndnqpdbm97five -5twonine -scqpkxrjtwo8foureight11 -3eight7brgqfivezpgclhfj -zkfrsdgbmczlrzchvfql78ftsdqk8vmqccbn -oneseven3kgdkjzkmq94 -sgtwo59kdmhbndzd -threeone37 -mqxvrhmrpqnltvt9lrpplmttkhdvtln9 -onecxqvr48six2 -pjnx2eight7five -two189one6gbqvllzb35 -psvxjhscstjfkbpxhbbb4zvdjbcdxqrqzqlzp -n18hmhzrqjrpcxztwo -6two46zblgrbmjcqbnxqcnbf -7kxsjdqcmxrvmdtscvxgrnhrmrfour -onedzeight8qfive2 -seven9bkjone2sixqnztq21 -fiveninesixfkzlsn8fivembfjnx4threetwonexb -5zmxtcmzqqdthreetczccnxhkxrbntmfoursixjhhrsdxthree -1four2xpkfgcn -88trnvjtqsmseight8 -pbbpbfgsrst5five -jvgvdseven2two -962sixoneonectfgpknl8nine -rkbnzz1l42eightflb4 -twoxfll2fourbjfjgxfbtk -35fourtwo -lq56ninefour1three -77ztlmqxcxrj745 -nnvqrthreedt2eight6hvrlnpbts -6five6225sixfnzzbh -nine1three -8xgdsdfgcfourlhn -2three3ninelckpddbmdrfournine -89zmvxnlrj7658kjdjchq -pfhbgpb66twogpn7twobpvrbmmrvp -8hgqmztnmhkcr6xrxrbhj -6fivemnfcvvx8 -3mxpvgzq9ninebmlktwo -thzhbsl49seventhree1bdxcrgjq -rlcfour3ffkxxrhb -rkj2eightfive -xqncfnhkcqxqjgbsjhnrgm6 -ninefour52ninefourtworhsix -lpzcmxt97mlkjhlcone -two4qkmqgrpltkrdsctpnsqmbtptklprx6ncfpseven -61shxgxdqqqzngnnzeightkhmgrxprb2sixjx -9eightfour3one6seven -eight4sixqjxdjnzmkfflpfmkf -3bfc71 -14sevenfivezzmt8cpptl -1sgrzdqdndsevenninembzvfive -lxftrbfcqfoneeightrsdxlnp1x2jsgn2 -vlfcjfourmtxbcngpjvkcctvbgkgpvvqpsg1 -116five132seven -eightpvfsfbfzjcdcvh8kbrcz357 -99two -four6six -fzzklmnxvfrhd62xmftbrhgsslrlqv -5six55zbdlgc -62nineone8qcglr1 -sddddseven55fourlpqzbgzfive5 -eighteight17 -nine98 -three9qqxgfpjfkeight81nine2 -twotwosevenvkzzhrpgninecqvf9 -lkhf5onexsrtwo -8hfzvnzrd -9threeninethreeseven -onedpgjzsixxs4cg5jlvzcsbd -fgmfive97 -4fivefourckthree -nine1fivefour -7qlchtvd -tmtmtnxdpsvfour4621four6 -5qfvzh7seven -fourfivebqnpzbg8three -34kd9four5seven8three -kcqcxzmnkdt5twojdggp -4lvbfdpzjsdthreeldvkcbqrspktwo -2nine93foursixnine5 -8tbpjgmxltwojlpbnsvqhsjfcjcfvcrjqppdb5seven -8twodcpglrxcq23sixfour -3sixvczzqsfive -1three45jh54tbdvkj -pdrzqxdtcnbrnine8zvffmrtwo11 -3eight54sksqfxhzcdfour -7hsllsjtxtwo9jhjlhthreekdfssninetcjjrm -9sgmnine1kjmhjthree -nineseven9five -ggdcphlstwoonethreeffgmrseven2xsbsf2 -75ssbccflrrf4lpmptcqjcmfbpklqc -5six2threedvvlxdxsixvxxghpddn8pbnr -tlbjnlxfxvnine4grhj71hnf6 -964eighteight4eight6t -5qbmnsone1fourseventwo -oneseven1five9two -5fdpl37vklxpth672 -4czvrnxtlfiveseven74 -qdgqbsd5fourfive -ddrqjnkbq87six2fourmtghdtvtl7 -zdldjnfxms692rbdfgvtsevenxzfjpnsf -nsqtkbbfhn8threesix3fivefoursix6 -sfxjzhpqqslfourmpph44threetwo -onefive3seven21 -9eight1sevenfive7nine -7twonrthgr73vzb -18onefourhxxm -3xvboneightlb -3ftqct9 -8five55 -4eightmzrlfjqqddffgmfl -74mhzvktwolgpvrvnphc -sixnine694ninetwo -bzpnktvcqleight2 -5oneeight1five2dszthreedncqzmhc -eightfrbmcblrghgmpkrdnh7fournzbvtrzvhchsix -threethreeoneone6kbghfst -4fiveonexfchmclqhqfive -1t3nine -57jclthreefourbtdgsggzh -qpc9fhddthreefive -9eightnine7cgpbbnine8 -88twoxbzjp6fmqlznzgpgdqmmnpmkvctm -threelb9four168qpchgnfn -4onekrlmslkd7five -4jfxtsseven -zsthvnxpf7 -656three -453seven -zxmr55hgnvtjbbqhfsxssjxzshcbkvsbzg1 -pbkffqzrbvxvqjfgkpmp5 -ninesix677lpqpgmc -sixgmb67fzdhnnfk7 -jlgjbltbtwotwoeight9sixninevlngvvj -xdxqdhps9sevenzmzdlnvsix3oneightj -ninetwokpzvvqlgtcfx2 -dqmjchlbj7sevenfive -61eight9kjmxclvdrdmvnthree -8nine6three -3ndpknone -seven4one -8dxljzpk8twoxfmhbqnmqeightdhxvpgxcnine5 -6five3seven -rzgfivenxhpr6gxqflrskhjhvoneonegzbclk -jrvjhkfv7sqnsz86five5skvvmspvjd3 -sevensix3c6llkmsmmssf3 -sevendf73eight74 -7bqbbvmq2krkbhlsh -3dqq55eightcptwo -2bjgfrgrtgnfour -44xznjjvlhzclsix -seven6rtzponeseven -6ghvvkhrzvjzpxlbkonejlmrhq -zgsxthree6 -3crzdvbnhtsgldjvbpsixbjmlxsv3vrzjtv -xcpnbsevengpffknsv84sixsixseven -four898xkqnhspbqmtcs -5twonine -six2ltwosix -cnine22sixeightwost -6lx63two -fbqoneight3five -rbtwone2eight8 -9fivezrsdfkdlqone1nthjvdlmxhqvj -pmmfp8seven -1qmttlsjpxjbsrzmbtlxqzfzvrs968 -fgdonexgvvnine5jsm -rbgmbtwo9fsntcthreesix76 -fbrsxxshseven3gtv -mkxfour66one9n -eightnine1fivecsixlqds2 -lhxnxhfnmlmhxkcxndmnine1kfpb5eight -6eight13rseven6 -hxcfone64ninesevenbgsnrqppqmnnineeightwof -threebjpbtpzgx5mnthreensixoneightz -bpdvfqlzthree2vvcmvzllqfbgjgp -two926sixeightdsvdmnxthreetnqvktdbn -bhntwonefourninejjcmlfphzpseven95 -prqoneightseven1nbcxnqjfourfivecmj2 -stwone1oneninevcrfzpfourfivetwo -ztkknhjr9six8 -twomlvrzm934seveneight -ntnn1bqgbxf13rqdqtcrbpeighttwo -seven58ninemdqonecrkbdblone -foursixthree1oneeightone62 -8385dhgcqjtrsixtwo8 -blpzxstwosevenqbdhkb8sfggkbdhx5rzftqsf -mqbeightwoninefourlgcj9 -njvpkpvjpmvmbsrdgdvx7frrgvnfrmmrfrhqdtwothree8 -rtwonesxxone8tnine -2xqgrqmone73five -5ggzdxvptwonineeightdj -svqhzhzbsmhljxeight7hljd -one81kmnmpmfkseven -9ninefourbvbpljb3nineqxnkgzgj -sixfour7nvdfhnd -24twoseven52 -425vqnhmrpxthreenine3bkjpvs -8fzqqspdp6 -427five9zhbxpbr -1qjnxxkgqhp -eightxzthreelrbgfbvmrpmtgvrfgqmjlshbqv5 -onetwo4 -three194bfivevknbqxv -1mjhplcvheightlnvn7two -rmptjk5seventhreeonesevenkdxfkvdz -threesix8kpmrvgkpsix -fjfbx6eight3fourninesp -six3nhonebtdzppnxkr -xgtltdtwoninesix62szphpcmtv6 -fiveeight9seventhreesevengndgdfv -ninetwosmcbfkvf5hvksvfbr3ssbntlk2 -qjrdlmone7tqrzlvfourvfbvtkjxfpkffdpjnine -sevenfqnsnqt89five5 -16sevenxtdrtmdzrxhneightwot -8ttreight4eight -three9nine3832four -fivesncggngss8qzfvj -twotwo7sgtcgrmdnr545 -6xk7threejmgnqnsevenmczscqxqxfour -twosix4eight -kxm15two844eight -twoeight5sevenfour -five56three -threekdjgcdd6one -clchjoneeightrqgk8bdsdmzm -twog546two6x -5nine4bmhbtbksxreightoneightkg -gjfkbsr1gvtvlnbzqrlfour -one48vpone -eightbcklnvtgvthreeninefivetmgtbjrqnn3 -nkclzcvbbq8nineznbtkntgndnine1xrg -lqpfhmrlmg32xtddcfffdbxbjckvlzghpldfgvhfhdhr -fourpkcppxtmqz5 -dvb6sixvhdrzzjk -btwokhl99nine -73rkgbsqgz7koneonemlhrbtxc -eighthlqqt4onenine -eight61oneightx -ninebbtcjjlqkthreenfvbcc4three946 -ninepqtlffxvclgn7fqdhqbpmkkseveneighttwo -bqzpfxntnkhhfkv98fhrqslfs9four -4ktprrljbthreethreethree3blmddptfour -5fourone -9zhvgleightseven5nbcmscqms2two -6czngsp895 -2threekrxmtfrr2ppfrzqkqgfoureightlf -six8eight6seventxgl -1one9 -3qpmrtzsvgkjxsevengzdkjkbbdltlrjkznbbkmpb -sclxoneeightfoursfbfm4rbxssmgngfxrvcv -fhctmnpxdrfivemndlr3sdp -twoseven9sixlp -962 -tsnsndjtrp27cbtsjdlkrqmtctxvxvnx -5mnine -7fgt6 -three1ninertghhbhbcnjdsknine -two8ninefxcqmxdhtnmcmjvtds6fivebnm -7phdp -2hnszbksg -4ninedcnjbcxnrmoneeight1 -hnsszlsx7414two4 -gmkrn9gcgmffrvbfivethreefive2seven -2bknqdqmrxpfftptwo2vmqffgmzr -dsvf3nv14zklptjnhv -54nchsnpknkx -oneone15 -onefvmxnzp575sixpxnpndqf -6vqrzsbbxg3735 -twojbldk2hfqqzgone5 -onesixlzznvc8nineseven359 -6vjbr7 -nineone32nmkszsthreefpscxcqtwofour -fv1zpqrxvdlzqmeighthhbbbzt -cskvllzszxzk9 -7ninebrlggdzqk7ninelvddrtt1 -2fpttpbq6b7ninefour3five -bsslmmmhfxc6 -lfjkdzdm9eightkbdhrkpcnzcftlggh -rnineninelmbhfour88onevfzhcmneightwofp -one59ktxrdrhc8six9 -86nxnfzzsixgmxxglvfivezmkdvmhjfzone -9threefourfourrbxqpqbtbzxstwo -3pvgtcxrfvthree39bjfivenxvbjone -sixkmngfour3bfive -6threehntsjhjpmqhl345 -fourjcnd49fivexqfbj -ksmszhfive7rrphsxxhgm -zqtdztkhveightninepnctbcgqsb6 -ninemlvzfcljfkeight1tppxrqtdzp2 -twotwoeightnine5frzk3 -lfvqtzbsix3 -four3bsgft28 -sixgksnkrmsix2rbjmfmnfzfiveeight -vrtffvbtcmszfdc2sevenhvpfour8 -twopvgzmthree3 -xqffprzsrjqkcbsevenczlbc5 -4ninefournmvninetwommnrctqjhg -27four -fheightwod4 -38zkgvdpgjzqfivenlr7mdxd -ninexxvninesevenfivedpzfgpbv5 -xjzgznvfsevensixthree3rgfqhkxbfp5vfrjcdncfkjk -2kcbprjfhns68 -bndqgcmnine4qbzfgxmlffive -ffctnxgtwobldqhsix8djfmdnpgmt -fourseven91ninesevenpksgt3 -rninesznvtbq5zqmthzrcntskdthree7 -8eight7 -1hnlnp79 -1three3 -414ninevqrccrf6lmzqmsjc6 -15mpeightxmhxlxjmn -ktdblrmqqxmktvqfour87 -1four121three56 -ldfdgfqkr22nxtsrsntlsevenxxrcclrhtl6five -eightfourthree8pvlkkbmbrfnfr6 -8sixninefiveqcmjhpx -2seveneight85lskjhn7 -31c3 -hpgmpmjmnk4twothree -cqsxgbj23six11 -threesxzmgtvhhheight99xsix -6jlpt6rnsprllqhgbvhtqtjvft217 -22onesevenfour4sevenseven -sbnjszzkdleight6three -3twofourdmrsqqtnzgng1two -ldcvxqbsfqpgql9ngsbhfrmszhgvznnnjhnm5 -1oneseven28seven -nsvhqtfivemjgcdqpbtwo1nine2 -six8dj -zdoneight67fivesevencqlr -xlzrkgjrhmszmkzlkkmrxjdnzrtlzssfpcxkbxvp6jghldhvr9 -8sevenbzbnnx -vzrmcfvc9shkxfblfkf -9twoshzmktntwo5nqp -3fourvpdfs3eightword -three24onesixgdzgkspgsjprjgn7eight -4tz2sixsixqbqfsr4twonine -twoq2eight -rccxnvtqnhdlgzqfzcnrmqtjqonesix732 -seightwo8ninekndqrdtbfp -cgnmrkcjvbgfmpbpjckhfrzrtnine2sevenfivesxhqk -fourxsncktrjtpnine6ccbgpl -1sixone5vkzxnhgdlbsevendtwo -9jbnineppf7 -5foursixlrn5vdgdbvnfhg -fivecrtwo8zbqrvjgpfivenine2 -ktvdhgvone6dbrvj5sqbr5 -bljtwonesixthree7dzdfrgqrkstwo4xvfmtsbpqjgxsgqcpc -sixgg5 -vmrbqdqdrqtwo2onez -onehlgrgndk9ninefsntwo1rnclttm -4tqzjbhdhkm1 -nine1kffxzcrn189 -sbrxr9ninemqb8 -six528mslnf -sdvthree7dfivenine918 -3kvzqqkonepmghblzvljnineone47twonesdf -four9sevenfourjhmjjslqgd8 -3fkfmgqf6fourbldjfvbhr -eighttxpddhsnzrkplzqc1ninezpvqgnhxzftwo -56lsxmkfpghsqptvhmmmzhcmfdeightsix -one72kdfdrtwothree8 -7kpgjhpnthree7 -37j2mtwo -seven4mjponefivesdgncqm2gkklsqvthfeight -mgckktt9six4eightwol -4grzfdm499ninetbt -tzmbtv84b -xvzltd75dhpjckmpdrkgglskqrhd5 -cgnbhmdlj24 -7fivetpbtmone -fivelpmbxvhktzkkonexsxktlzthgbgqkgcj94 -5sixhggcbrft -43five7122tqlkhssczsr -eight1seven3 -fourtwo134fourmzpxspr9 -snxjqnf8ctcnvjknghxpkpbrt2 -4qj2xtwoghknine -1zjfivegtwotqgndnineg -fjmmznxkrml7fiveninelfvkqtrg6 -8xjlqgqj395nineninefive -dx47sixtwothdphj -fivesevenxgsfb235cvgmspdgg6 -fivettfzvfg78dmzzdzcrt -fpnvxp1 -seven24 -1three8oneeight -7xglzsqrtb8fhgthmgdcdtwo -seven8gdtfgd4fivepdq -twosix1qtttvvstmqbrhh -ptwomnjhlzjjkztwo4kdkgxv -89zkvrhmrhdbmfourzdpss -bfdsvnxflgqxgpzkmrptlvmvlkchjxrt67 -9mmhxsevennvvdngznine17twofive -lszmqdmxz87mqbv51 -546sevenninencccndnr4 -nineeightsqgrpkrqlmzrlxm6hxchcjspnx -8twoccdnbfive -1ks98 -twothree6 -twoxsixtqdpp6dcclzgfvkv1 -16one7scvsgvmcdsixjtzszzrxdzzgv -bjxzdsixkvqgjfzbbjnrtn212jplvrj4 -zb2three5cngqfczc1 -5fnine99zxvfourjgmn -one634rteightfoureight1 -76gvcdfourgtbzdlltzsjnxqg -ltmdrkqqnfour9eightpckdvbhlkvxlpdtp -6two5kgncpnzkdsgnpspb -three8vjninekbbnnfrdstprcmklrgpkfpmbs -ckvvqjqzbpfhf52fivefivefour -7ngxpdqptksix -ftp2eight -8lnmpbqldqstwo -threetwo153644 -914 -plxjdxghsix17 -sevenonesevennine4three2seven -7bvdgpghzhpeight512vxbnfqjctb -xqptzkfive4xqbjzpqfkfspqv5kgqbdtfive -bmltkhjsckhrc7two8nzdpkjjpnfive -nnhppfvlhcmnmrjxhrbtzdflseventwojfprxmfn7 -fournfdtjtsbthree54fpzsq -ninenineone5two -8694twomgxxzfxr6 -sixeight75seventhreerpchfour8 -llv5 -skxcbfffgc6sixone -3lhjbzbsg4lsfgpkmcz7vjxzbrshbseven -4onecjlkpqdljd3five5 -eighttwo2mvdtvqpnonetvphxsk8 -15195one -kdx9nine6qrnqrjxq59 -twolhjmbh4fivetwo6pdzbnzt -pbvfour7 -tgxrsbk2 -hfournineone58sixthree9 -hmftwonesix5dhthkcnzqseventhreenineeightnine -9jmmjclsnsdhhj -hljjvctthreefourxsdlvsgtqj1335seven -172 -2gbfpjff -five5sevengvddnphnine -sixeightfourssptsqlhzxonetfg2hkmrcpfzcz -94csjjgl42three -4bkxxv6 -pgdgoneqmhxfpnfqkrbkjeightbmjjlrnsc5 -nineninetwo55fvsxspzt -32jqffghbqvfmjtjone78 -93eightfour6eight9eight1 -768jrdmfxgxpntx8nhpljjdx -eight33zpvpggklseven4lcqsixthree -fourgrmone4 -bcknine9qsevenrjhjeight -5onevqm -578mmqhhljtwo39mfnpmfqthree -fivecmts43eightfdphfivejsx -8vkqvl -8oneone27fourseventwo -jfsixfivethree3cmjtvkzhqkcksmljxxzbjd -three6sixpdvtrnrtffltrs -threeltvvfkcdqjtwo89two8j -5sixeightfivesixjjmknrgd1qpsbpjrffjl -eightrmgfkckxxxsvfclhtgcjthree3 -rnfbp8eightjv35eight -2rrssqrfkvmq -dcmghdmg6threetzsdx -qzhfivefivejvbtncm2 -gcspvjnsevenqhmkngfivesix15jtpk -bkmlmh5six1sixone2hgtlsix -8rmjshdhm681vc -sixtx32 -7fourtwo6 -xgrcxeightsevenzgmcllfjqn7 -553fivethreefour8nine -one4mxbmct -three6ninetwofour -1bbbxqhhlmj651eightkfdqdgvh9three -4414 -mnxsixone92 -61six8 -eight8mrcpfive1 -crsvmfivezbkzkqsix7mxjdgtsqbfvdbnlqtfiveoneightgj -4dmzznftdbqj -seven25 -fhlhpvphqvh8one1ffkq -mboneighteightonefive1ninenineninetwonine -82fiveonexc5 -97qbhvbqnmxtlpczsx -nhgzzjkx5 -hgxlrk9 -8twonine9fivetdxmjqppxr -onethree99sevenfourkzvd2 -sdqjfvbndzcthree1ftoneightkm -5rcllqcxt -threejdntvhsixsckfpndjzkeightsix3nlgpsvsfhk -94fctwoxmczbkz -4eight35tbqjxglldsevenxmthmmlhsix -three125 -3njtlmxtbr4541ninedz7 -9ptzpzqrjmxlrmbfbpn9ss4sqcprfmcqg -8dpmkdtvjxzjbddn7pvkxzskddrhcsjvthree7 -xxshbfcmf3cfdkeight -six9ninefour472 -fourrvxfmjzd4five -1fivesix -twonine3six9 -nine8onethreethree -foureighttwotwo7onethree -9prtlnjptoneninefiveninefive -cljqxpthqzdxpmmbvpjljjxhlhsql8kztpthreesevenoneights -9sixtwonetfh -kscmxpcqlthrmthcdhplpnqlq2 -fiveqjfvkmnineeightninefourtwo1 -one5sixeightfxkshmninethreeeight -4nine4 -27 -ggtz73sixkgsjrtcxkb1 -qvxsgvrpbxqcgpb2fzmcvknkr99seven -6eight8ksgdlxj638fivetcgb -mmvc3fourrvbztjchbmqtxtgfrrqphninefive1 -3qzbzxsevenfivegrvtbckqcj -eighttwokzpgl2hrvqlhkthreenine4 -8twoeighteightxtsbrseven -nine5mghp7vpnvtpx2c -hkxkmx5qnpjhtdfjfsix2xqqplvm5gmvjm -69cgvzhvgjvl8 -threeblzj6three -3bxpmnfbtpk5hcgqkbkqblznxgsdvklmtmqjxsxdcgqvmsprxrrnfchfbnd -1fbrrcjgzzllmcbdrgmrcfsevenh -58onezbp -1bqfkmkk46cctvmstvhvrtwoone -mmeightwo9sbjvleightdsevenseven -9gdsqgflkvonetwo -3lgpmxdgjtzx3two5foursixeightwomb -dbkbeightfive9eighthxngnrbmp -2cpkxggtrdsrh -zsgcdcrlhlqdpone9eight17sixbbtzpmdf -5rskkplgsbl9qqzfrzh67four4 -nine856threezgbhrzjcfour -kqnnine87lflxddvtfb9lfjdknvgl8 -fsgtwo8zxvnfour7xxfnmqpzhzone4 -ddd9sixnsrpqmvvjh2xghxhm -836 -nxglt36ljcbvgc16hxcbtqjz -nine19fourhnvh7fgqklf11 -jkvsphrpmhbnfl2nhcflhsbks4 -7nine2dsgkmrzlrzptfpk672 -6vtmztrjdrbk -4vgsshzzsrtwo -ninexfjcxdcnxs7seventhree2 -hsvvqcqp97twommjjlclbtdjbxkveightwos -threedlcvvseven3 -366xqfbhzfmqknine7 -jzrqqfouronehhrmkg4one5 -8xcbccrp141kmcsrdlgcdzpcb1nine -59rdrphcgk -fivetwoqmlk22eightfive -qnsphtvfourtwojljxnvgrkk3slv6four -13dfbnfnpsevennqtjthreethree6 -4dtncvsix34oneeighthpfouroneightv -xdhqninefive88nine -6hnnl8nineonehm7four -sevenfournine8five2six -vnczlzjqdtmdgsgxch94one3knlxjvqtrjlsx2 -twoeight14kkzrsqmgkhjb -jhqrzxrhskngj9ninenjcnbdtjhjtdh -2grrlxnlvthreernfghspmc -two8hjbsevenfive5threenpgtnkftp -d8sixfive1five7 -sixthree9 -sixspqf2gptcsrvlln9 -seven8nine -nqeightwo7svvjqs75qgp3hpvn -qrsixxffsdvvrf74five3 -5threeskqgcgprrjmcxksixtwo969 -bdbtlvlseven13fh -2two1eightfour7jqdd -three8ninefournffzbnbhkpjqh32 -sixqzmhnjttdnine41sevenpcxqkvr -fivenine2fourseven2 -sixjjhrjbmvvngqd3three7ninekpneight -11lttrkpcljbbrmponeightbb -frxgkvgrjtsix84 -76eightonesix8fivenlfhkfgp -fourpqlrklpnfljvpfkdklkgrjp1ninevfour -1six75tr1 -cjdvxhmjvstninejccxrqhb1qkpmnzx8xfpp -8sixfourone6pzlnczvlsmmp -eightrkl37jqlvjjsbrtqsix6 -onesmrjvmrtlppm69857seven -4rgsktnbone8sjxjzbrplnmfvkknpxqv -tfteightwonsdffone8sixxdpeightseven -639one2two -smk55 -6cjbckhbtmkcgrvmp3 -rdnf9 -1jjkdspeighthteight37 -1gh3dcmhx4sixnphphhbpninevbqhs -vpstbqtdmbvk9jstvtgzrdl -91seventwo -7sdpflkxfzfivethreenine -gvgcrpphhbzghtbcv6 -vvnine5ddgzroneone -5four6684one -dmspptjjtwocr2one -sixftzx6fdsfv -5six8twotccbsdnpxg32tsix -mfkdbdfournktdmgqnt4vqkzbzonekdqhbcmfgfiveone -nine2476 -8rxd2eightninefourmd -eight1hqfcqs4cpvpsqjfhptwo6six -5z -bqcj948nine6xmgnxmxnn -two1lzdv65bhllvrc -sevenvjkl3ninespltvdszvnfvzpcvrctphvp49 -4mzjxftf5eight -fivehbrxcbgjhhxpzfn5lllsknk7six -6n5ttwo166 -fqdfhc3 -6cph -lzqqvnlkjv3sevenbdssvckmdm -bbdpgpfsevenvzsix87 -754sznxkfb4npmjbv4one -twothree984dsxsninefour -kmpjgh71jhfrjgrpbd2d7 -27tgptfvcjnk2 -onefive497cdcktxcjfivezdrdhczbp -79176threeseven1 -csseven1rmlbcpct -1lzlz4tsngmgh -zvxshddzg2eightpxkzfnvdfzeightseven -ninesixnine93seven8 -1twofiveeightmfour -six3cmbbbxbqr74flchvgjbr45 -7nine31two9dvsghkrjj -five5four -seveneightthreefourseventrgxdqclq2 -5dfgddsevenldmzckmvxjmk92fourdcpfgcrpd -ninekbhrflzmgp3lqgxgszmzvndr47zcllcfg -sqsixonefivekfvbfh66p -bssrkdrrgsftlqjdz19 -bqcbhfive6 -jt3fivemdrnrvngsb1seven5 -svdninesbj11eight -2phltdc -1469sevenvksvlthqskfkx9 -7fcfivefourdbbvtnjbrc -6seven4 -lrmfqtjkzfive69eight8 -zmngmr9ninenineninesh -qrxvdxgtfour7one6 -eightmjpkgdtrp52shpcrtb -54k7fournine -7fdbshl6874 -jfjvrhccqrc1fourcrg96 -1sevenncqhkgtzmtncmxhflmfsxfsmsmqh -79fourjmxfdbqnrsr -sjthree6tcbp3x -qvrzmdzfnpkkdcvone2lttcbzhhddbnlnhxgsblhtlvdcpnzjvvqszrthree -ninedfxcz63two515 -48sevenvgznbsxzhfgzq19 -dxjbtzvtfn3five3 -five1gxfcfppffg74 -78ncrnhmv766nine -two7qmgeightjhddgnineone -jhttksbpbhzmgglfour7 -bloneight3ckvpkxtwozzxr1onethree -mhmppdtvfonecrjzlktlnkpzdbqtvtwo4 -179tjchxninethreesix -dpcfnsftnjbhlpcjrc8pbnnhtlrjzmmjk -ninebn16one2crfour -mfivesix8nine1zgpqpr -eight44fourfivegfive -2qhsltnzsfivervftmdm1hthcml -sjoneightvrxctb9sixhkhmfivejm -7threehdctsfqflggzkhpn -seightfourkhpkprrcl6six -fourkdff7 -57seven3four1r1gcjtckvn -gmfdzgv7fivesix4nvlq3 -thp7 -xd5plhtvtgxmgkmhlr5nine -7fourdf -pnkjgdctpm2221four8pvnhxdtrvs -hngtq27nineninesixeight -2fivejpfbsqtx1fourseven -19jpjsbljgz -ninethree5twoeighttwoqponefive -gklmbcj5mstwo8 -phbeightwo31jjzltcqzhklm26 -jtslpzsxh43 -drk7 -5dxcsvgqkmz -jnrgv9 -nsttntwo6 -6qbfrlcfmmnqpmbbtqgdsjqndqfive -2mgdjlpdsixfive6 -sevenfivesix6 -3nrfvb13onebsrclqnflppzchtp21 -dmpgdvfive7 -lpvqjzhvjoneghqxnvsixjxflzqj4 -onegqzxvnnfnlcffour2 -nsglbskbzd2drjzqhnq -nine8seven -rfspthhjbh92rseven1 -nine2ctjnb -gzkgvtxjt8twoonefour -tplxnlr8bfjklthree -jqrxrtdvmj8fournmj -6gxvglbcqkdsdcsl -pzjk9ccbmkzmtsf -qdzpknfhbsixczkrqbpfour76sevensbvltnjccjllng -six1zrhqxzfivetwo -xjhmfkvjgxtbgszmpd54jbsscgrninethree -cndbtlq22 -fouronesevenzrrv7mhsvjtwokqbfvvrs5 -twoonefive59phkxdbndgch5seven -8twoninethreeckdkd5 -9four6jfxnfgjvcrszrpsrkhh -993psn4qdldmfnqsix4 -42tzxknj -vvzpl8six -8vpchdjxczsvjjqljnmpdeightone2seven -fivenine51sixcdb -dfkkvsone5kjzvqqc -8seven8pxtrdrkqcqhdklgsixzxtjmtblzzcc -ddvzsqnxd9xscsix4rvpsix -75nsvxf9one88 -38ninetmmqx2 -sxjqgrdthree2vhpgrcdtqeight -63kthndjc -qgbdkfm56two6fourthree5 -five79 -jpb2seven7one7 -four5sbgbpzkjjkjhsvgksgjvfrsbpbdzgd2 -xlxpsixninextzlpbn6 -jzbvzlflf8twoeight -4vjtr6eightninenjtvt -3twonine3vmrgkjzkpfoursixtbcktpn -six1fourbfhxlntrqfxxztmj4 -jrbhfourfour6jspsxkn2eight5four -pcvjmdlnf15cfghpszt9 -4lxktgpvvq1sevenone9 -twosixhllhbxkbd2three -veightwo3eightvrhseven89onelxvhqxkhm -2sixfkdpcjcgcbgfzlbgblj -457jtmdfdjcnine -three64 -pqgjfseven4sevenoneslgeight -91vcptwo1twonineone -seven63fourzjpdmk1 -8fivetwofrbtm6f9five -sevenchrtbctkgpnine65fourbhpqnchhlz6 -rkdqrbtdbj9bt41hklvlrbrcpx -1three1gmdeighteightqbgsevenhljbpzbdtt -srkbbkfcznine6nine6 -8kmzbjzsxtgr9drtbdl -24six412smjfxscst -9cktpshfdr5djvrngchrh176 -2mjknvteightmvsdgt8seventhree3mzfk -vhldtk27two -6three2ninepqnine -2fourzbtqnclrtpsix2six94 -six6five -one2eightppzmczmgsixnine -15qljk7vchkfcfhkhmbjlkcfour -99four -dhrgkkbrnczkdt3n -89211sevenhnbjbrxtk -663rrbpnrknine911nine -2ntffsix9 -4mdpcrvqfoursixqeight -jbjjqkfive3jqnqhvkmtbddrdqxseven -2gvrgdsxptwovfkpgdlmlhz34 -rqfrx82 -tworzlxeight66eight1five -md1jgknfftttjbjz -tctqctkone37cmpbslgpzh3 -3sixsixfpxg -seven6bld42brzxr -6two4seven9zpgb5 -nine13 -d68 -3lxvsgksbbtwo52eight3three8 -bpltlnlzc8 -seven2five1threedmkg -hpkvhlkhknhjpq9tgpmnndgtlqjx1vkdkvtqhtwodrbr -fourfivesxgpxhdvts7four5 -7frgrjkkrb1 -2threettvptwobjhmxvpsvmljtvnpkpsvr -9fivelxtcbbn9xgtwohmmhnfhcknc -fourqztfvd6gkhxnstjjxnbl69hzkghsjrd -pspgqcjfcqdgq6xsgxrls -threesix6lrfkmvjdfivetwo9 -kdjgpj54 -oneeightsevenfive1 -one4onefournine64 -45hhcpntsthreezl9hjdnnine -17ninenineninegczplbj81 -31threetwosevencphdv -5eightvsrzjmdbtqhhqtjfjrhllhbgzgzjzvdhddstxpp4 -pgghlbtsevenqxxjbnd14onetwo -3ljgmcxnqgxcrfourfourtworjtwo -eightseventhree59 -3nhsccljtzszftnqtfour5 -threefourthreeone3five -3pzgzjv7tz -qxgntksdr45tvnxfcjdnn -5seven9threejdzrzdfcpgbnhrrmfkkskg2two -38bjnlcjbeightfivefourqvtbvjsb9nine -nmxqtzlpfngzlsnl9 -9eight8five3two1gsknxznbf9 -518jkqmprjlqcpdthreefive16 -6lzjznblrj3three -f7blbxznlvgk -37jtlrvlzhzronehn -kpckhlcsbeight6 -8dfptmfourtwoeightfoursixonefive -ninecdrxlgdkm7nineseventwotbbcgninekbxssd -rrhkgmnsbxbhb2ccnncrbstjfbmnlbxsxbkr -cflrvjtdsevenfivefive3sevensixeightseven -41ninenrznrcpdqhxfglb -gffivesixtqbbmzllvbnjnk2fivesix -eight311seven -52mpqbgktxhs359btkzqdfzvtrzmltxt -onegxnk2rvnmdcmqvqvgkml34 -gfzeightwoeightrbvknvpt7 -1ct2 -zctqtxtgseven66zhslvvdninetwo -54sixbfn8mxfkthf5 -9974seven9dclxbmfive -onefour6mjtssrxjjsleight2foureight -818sixsmmzsvbpl9two -rjqnpzlp83qxlj -sxqztv22 -8tsvhfszvj -one5mninefour68 -three7threeone -sevencnq2jdjvmlh5mqnnnrsqgppkfxjfjsevendrq -8zmxbvgschsqxbk5lltxpseventhreevrhsvdkk -seven2ngbqlxkjl27eighttjprz -ccfskxtnqpqninevczrltkg18hmgjmqt -npgtv4nine5lnqvglvdrxvqmc -kvg4zrtpxnknbone -threeeight1tsdcthree5zxrshttlsmseven9 -35448284 -6fiveqplkfftsj -pldmrjhzhfiverlgntcckbqzjgth4gfddcrz -6fivesix2 -eightksz6m6pneightnvpvvx -1fourbqxtmbvzsfnrxqmvlbfzvdthree -two43sixthree5one -cqf2 -twoltseven8three64 -6fourprlhcc -fgqoneightsevenqthreebksixgdqt93dm -xjczd3sixseven5 -kfzgshnxqnptrckbrt2 -fourrrdcl624 -kvhfqspcpsxndjqlonesixthree24kdmqvone -8eightfivetwo -onesevenseven5fourlrkkqtfkrmdlsmd -jffvtzkbjnkdtvfsfthree431lrpgmtv -bbvsptrzbone4tfnpgrfourvsix -4seventhreekmxsz335eight -eightbrcv5 -two2eightbppsplzgcfournine5seven -fourthree5kcdhqzeighteightkbzszgv8nine -rgxrddnnbv7rkt -8ffmvpcsvfoureightqpnzzjksgchnine9jlgjqb -two9tfvjqsgqsixnine -bzn4two -sqlfeighteight6hjddxzcone2 -3fivekmfnqlctddfivelcthnine -twodn8 -one5six913lbrcc -foureightmppchbgz8lqbzqbjztwo7cksqxns -zvhzgfpkhkone93nine \ No newline at end of file diff --git a/aoc2023/src/day10/input.txt b/aoc2023/src/day10/input.txt deleted file mode 100644 index 230e945..0000000 --- a/aoc2023/src/day10/input.txt +++ /dev/null @@ -1,140 +0,0 @@ -.F-7F-..|-F-|F---7J7FLF-7F|FJ-LJ.7--F7-|77.|7J.FFLF7-FJ7.J-7-|.J.7.F7L7..FF.|F--F--|J-FFJFL7F7-LJFF-.7F|7.FF|7FF7FL7L--F--77-7F7.7.-F-J.JFLF -FF-.F|-FLJJ.77F|F|-J77|---.7JLJLFJF-|7.F-7-F7.FFJLJ|.LF7-.|L7.J7LJ.L7FLFF7J|.F|.LJ-|.|.L7F.LFJ.||||FF|FLL--|L-J7--J|J7L||FJ-JLJL-JJ.L7J-L|7J -.|.FF7-LJ|.FJF-77|FJ|||-L|-L-FJ7F-|-LF-L7|FJL7J-F7FFF7FJ.J-.LJ.F|J7.LJ.|L.||L7JF|.7J7.7.|L-FJ7LL-JJ7FJ7.LL7J7LFJFLF--F|JF|-|.-JJJ7L7-||7F--- -FF-F7JF|FFF..L-|-|JF-JF7LJ7.F7--JLJ..LFFJ||F-J|F777L|-7J-7|7|7.FJ-77..LL--7|7F7F|-J|77.FL-7FL-JJ|7JL-L-|7F|7JJLF77L|-7|.FJ-L7|J.LL-FF7F-77|J -F|...FFJLLJFFLJ|JJJ|.LL77-L7LJJ.|L|-|-FL7LJL7JF7JL|.|7||.LF|-|FJJF|F7FJ.FJ|LF||F7.-FFJ-LJ|FJ.L---J.|L.L77-JJ|7|||--L7|J-.F7|.F7F7|FJ|F|J-F.. ---F-L|J..L.F77.L7--JL.L|L7F|J..FJFF-J7|FL-7FJF77JF7J..JJ-FJL-JF|.FFJLJLFF-F-F||||7L|LFFJF-7.7FL|.LL7|FFJL7JFF7F|L|-JJJ|.FL-L777L-.7L7FF7.|7| -F7J.|.L|7.J7|FL.|.|.L|7|J--7-7-L.F|J|F77|FJL-JL7-||L77LLF-J-|-F..FL7.F-LJ7FF7||||F77JLJLL.J7.L-JFF.LJL7-|L|FL-FJF77|.FF-LJ.||J.FF7|FLLJL7.FJ -FJ|F|FFLJ7L-L77L|-FF.|LJF7-L-77.7-|-FJL7FJF7F-7L7||7L|...|-LLL|7FF.LFFF.LF7|LJLJLJ|-7|.|7..J----F77.JF-JL--7JLFJFLJF-7J.L77FF.L-J|LJJ.F|JFJ| -J.L--77|.|7|L|7|J7|.FF|7||7-|||7|-J|L-7LJFJLJFL-J|L-7|-F-7.F7JFFF-7--7-F-J|L-7F7F-JFJL-FJ--J7FJ.J||J|F|7LFJ||-L--7-7JJ.F-7-7.FJ.L|J|||J.F7J7 -|F.F|.7-|JLF7|.J7-77JF7F777.LJ|7L..F|FL-7L7F7F7.FJF-J-7|J|-||J.FJFJ7F7JL-7L77||LJF-7..F|J.|.F.F7FFF.-F77.7F-F77-F77L|77..L-7-.L-7L-LLLJLLJL7 -F7FL77|FLFL|LF7|J-|FFJLJL---77LF7LF7F7F-JFJ|LJL7L7L7JJFJ-JFF--7L7|FFJ|7-LL7|FJL7FJFJ7-F7..F7F-J|F7J7J||J--7L|L7FJL77F-|F7|FF-7-|J|L|7|-JJ|FL -F-JJL--|7|.L7-J|LLF7L--7F---J-||F||LJ||F-JFJF--JFJFJ77F77F7L7FJFJL7L7|F7F7||L7FJL7L7F7||J7||L7FJ|L7F7||77||-L7|L-7L-7JLJL7JJJ.|J||||FJ7--FF7 -F7..7JLL7FL.|-JJJL|L77|||77||7F-7FJF7LJL-7|FJF7FJFJJF7LF-JL-J|FJF-JFJLJ||LJ|J||F7|FJ|LJ|.L|L-J|L|FJ|||L7LFF-7||F7|F-J77LF7JJL|7.|JJ-.F-.|.FJ -7---F7|.FJJF7777.|L7L7FJ|F7-F7|FJL-JL-7F-J||L||L7L--J|7L----7||FJ|FJF--JL-7L-JLJ|||7L-7L7.|F--JFJ|FJ||FJ-FL7||LJLJL-7L7L||JFFF77|JJ.LJ7FL-|J -|F-7F--7FF7|J|FL.F|L7|L7||L7|||L7F7F7FJL7L||FJL7|F7F7|F----7||||F-JFJF-7F7L--7F-J|L7F7L7|FJL7F7|FJL7LJL77LFJLJF7F7F-JF77||7F7||7LL.-LJFFJF7| -J7F-J7.F|J7JFJLJ7LF7||FJ||FJ||L7||||||F7|FJLJF-J||LJLJL---7LJLJ|L7FJJL7||L---JL-7L7||L-JLJF7||LJL7FJF--J77|F--JLJ|||FJL7||FJ||L7.FFJ.-J--L-7 -.L|JF77LJF-.JF-JLFJ|||L7|||FJ|FJ||LJ|||LJL7F-JF7|L7-FJ|F77|F7F-JFJL-7FJ|L-----7FJFJLJF7F-7|LJ|F--JL7L-7F7FJL---7|LJFJF7||||FJ|FJ.|7FL..|7|L| ---L-F.J|.--J-J7F7L7LJL-JLJ||FJL7|L-7LJL7F7||LFJ|L7|F7|FJL7|||L7||F--JL7L-7F7F-JL7L-7FJLJFJ|F-JL-7F-JF-J||L7F--7L--7L7||LJLJL-J|F--777F-7-FFJ -||L7-7JF7L-JF|F7F-JF7F-7F7LJL7||L7|L--7||LJ|FJFJJ|||L7L7FJLJ|FJFJL7JF7|F-J||L7F7L--J|F7|L-JL-7F-JL-7|FFJL-JL-7L---JFLJL7F-----J|F-J7--FLJLL7 -.LJL.LJL|-L-F7||L7FJLJF||L--7L7|FJF7F7|LJF-J|FJ|FJ|L7L7|L7F7||FJF-JFJLJL-7|L7LJL---7LJL--77F-JL7J.FJL7L--7F7FJ-F-7F7F7FJ|F7F7F-JL7L|-7J.--LL -7JFJ77FF|-JL|||L7LJF7F7||F--JFJ||F||||L-7L7FJ|F7L7|L|FJ|FJ|||LJFJ|FJF----JL7L7F-7F7|F----JFJF--JJFJF-JF7FJ|LJF7|FJ||||L7||LJ||F--J7L-.||.F-J -|LJ-L-J7JJJ.||L7L--JLJ|||L--7|FJ|FJ|||F7|FJL7||L7|L7|L7||FJ|L-7|F7L7|F-7F7FJFJL7LJLJL----7L7L7F7FJFJF7||L7L7L||||FJ||L7|LJF-J|L-7F-7|FFJLJ|| -|F-FLL7|...FJ|7L---7F-JLJF--J||FJL7LJ||LJ|F7|||FJL7||FJ|LJFJF7|LJL7|||FJ||L7L-7L7F7F7F---JL|FJ|||FJFJ|||JL7L7||||L7LJFJ|F-JF7|F-J|FJ----.F-- -7JFL77J.-F-L7|F7F7FJ|F-77L--7LJ|F-JF-JL-7||||LJ|F-J||L7L-7L-J|L-7FJ|LJL7||FJF7L7LJLJ||JF7F7|L7|LJL7|FJ||F-JFJ|||L7|F7L-JL--JLJL--J|JJ|7J.J|| -F-|F|F-7L|-FJLJLJLJFJ|FJF7F7|F-JL-7|JF77|||||F-JL-7||FJF7|F--JJFJL7L7F-J|||FJ|FJJF--JL-JLJ|L7|L-7FJ|L7||L-7L7|||FJLJL7F--7F7F7F---J77L-.--7J -|--J-J7LFF-L------7|7|L7||||||F7LFJL7||FJLJ||L-7F7||||J|||L7F--JF-JFJ|F-J|||FLJF7L7F--7F--JFJ|F-JL7|FJ||F7L7||LJL7LF7|L-7||LJ|L----777L7LFJ. -.FLJLLF-F-7F---7F7|L7L7||||||LJL7L-7|||L--7||F-J|LJLJ|FJ||FJL--7|F7|FJL7FJ|L-7L||7LJF-JL-7FJFJ|F7FJ|L-JLJ|FJLJF7FJFJLJF-JLJF-JF7F--J-|JF-L-J -|-J.-7.LL7|L--7LJ||FJ.|LJLJ|L--7L--JLJL7F7|LJL7FL---7||FJ|L-7F-JLJLJL7FJ|L|F-JFJ|F-7|F7F-JL7|.||LJFL--7F7|L7F7|LJJL-7FJ7F7FL--J|L---7JF|FJLJ -F7---F-F7||F7FJF7LJL-7L---7|FF7L----7F7LJLJF7FJF7LF-JLJ|7|F-JL-7F----JL7L-J|F7L7|L7|LJ|L-7FJL7||F-7F7J|||L-J|LJF7.F-JL--JL7F--7|F7F-J-JL-.L| -L7.|.|.|LJLJ|L-J|F7F7L---7||FJ|F-7F7LJL7F-7|||FJL7L-7F-JFJL-7F7||F7|F7FJF--J||FJ|FJ|F-JF-J|F-J||L7LJL7LJL7F7L-7|L7L-7F7F7FJ|F-JLJLJLL|7L7|F7 -LJ7L-7FL7F-7|F--J|LJ|F--7LJ|L7|L7||L7LFJL7LJLJL-7|F-JL7LL7F-J|LJLJL7|LJFJ.F7||L7|L7|L-7L-7||F7||FJF--J|F7LJ|F-J|FJF7||LJLJ.||F7F7F7-F-7-L-JJ ---77L-F-J|FJLJF7FJF-J|F-JF7L7||FJLJFJFJF7L7F7F-7||L-7FJF7||FFJF7F--J|F7L7FJ|||FJ|FJ|F7|F-J|||LJ|L7|F7F7||F7|L7FJ|FJ||L-7F-7|LJLJ|||.|FJF|FJ| -J|.F--|F7|L--7|LJFL--JL--JL7|||L7F7L7L7|L-J||L7|||F7||FJ|||FJFJLJF7-LJ|FJL7|||L7|L7||||L-7||L-7L7||||||||||L7||FJL7||F-J|FJ|F--7LJL-JL-77..F -LF-.LFLJ||F-7LJLF7JF7F7F---JLJL7LJ|FJFJL7F7||FJ||LJ|||L7|||L7|F7FJ|F7FJ|F7|LJL7|L7|||||F-J||F7|FJ|||LJ||LJL-J|||F7||||F7|L-JL7-|F-7F7F-JJ-FJ -.F-7-7.LLJL7|||FJL-JLJ|L------7|7FJL7L-7|||||L7||F-J||J||||-|||||FJ|||FJ||L--7||FJ||||||F7|||||||||L-7|L-7F-7LJLJLJLJLJLJF7F7L7|L7||||-J..77 -FLF|7LFJ-|F|L7FJF7F7F7|7F7F7JFJL7L-7L-7||||||FJLJ|F7|L7|||L-J|||||FJ|||FJL7F7|LJ|FJ|||||||||||||FJL7FJ|F-JL7L7F-7F--7F7F7|LJL-J|FJLJLJ.L77JF -F7FL|.||.LFJFJL-JLJLJ|L-JLJL7L-7L-7L-7||||LJ|L7F-J|LJFJ||L-7FJ||||L7|||L-7LJ||FFJ|7LJ|||||||||||L7J|L7LJF--JF||FJ|F7LJLJ||F7F7FJL-7.J.L.|L77 -LF.LJ-|-F-L7|F7F7JF7J|F7F-7FJF7L7FJF-JLJ||-FJFJ|F7|F-JFJ|F7|L7||||FJ|||F-JF-JL7L7|F7-||||||||LJ|FJFJFJF7L---7||L7LJL--7FJLJ|||L---JJ-JLFF|L- -FF7.F.|.F7J||||||FJL-J|LJFJL-JL-JL7L---7LJFJFJFLJ||L7FJFJ|||FJ||||L7|||L-7|F7FJFJLJL7||||LJ|L-7|L7L7L7|L----JLJJL-----JL7F7LJL7F-7JL-J.FJJ-J -FL|-JJ7F||FJLJLJ|L-7F7L7FJF----7F7L----JF-JFJF7F-J|L|L7L7|LJL7|LJL7||||F7|LJ|L7|F-7FJ||||F-JF-J|FJ||FJ|F---------------7|||F-7LJFJF-J|.F|FF| -FJLFJ|F-JLJF---7|F-J|L7|L7|F7F7LJL-----7|F7|FJ|L-7L7|FJ|||F--JL-7FJ|||||LJF-JFJ||F|L7||||L7FJF-J|F-JL7||F--------------JLJLJF|F7L77F-7JJ|-LF -L.L|F-L7F-7|F--JLJF-JLLJLLJ|LJL--7JF---JLJLJL7L--JFJ|L-7||L-7F7FJL7|||LJF-JF7L7|L7|FJLJ||F|L7L-7|L7F-JLJL--------------7F-7F-J||FJJL-J|7|7F| -.F--|LFLJ-||L-7F-7|F7F7FF--JF7F-7L-JF7LF7JF-7L---7|FJF7|||F-J|||JFJ||L-7L-7||FJ|FJLJF-7||FJFJF-JL7LJ7F7|FF7F7F-7F7F----J|FJL--JLJ|LJ7.7FLJ-7 -LLL-J7L7L-LJF-J|FJ||LJL7|F--JLJFJF--JL7|L7|FJF---J|L-JLJLJ|F7||L7L7|L7FJF-J|||7|L---JFJ||L7L7|F-7|F--JL7FJLJ|L7LJ|L-----JL7-|77F-7-JFF-7-F7- -|L|-JL|7|L|.L--JL7|L7F7|LJF---7L7L7F--J|FJ|L7L---7|F7F---7LJ||L7L7|L7|||L-7|||FJF---7|.LJ-|FJ|L7||L---7|L--7L-JF7L-------7L-7F7L7L7JLL-J--JJ -7|F7|FJ77-F------J|LLJ|L--JF-7|J|FJL---JL-JFJFF7FJLJLJF7FJLFJ|F|FJL7||L7F-J|||L7L--7LJF7F-JL7L-JLJF---JL--7L---JL-------7L--J|||L7L7FLL|7LFJ -7-FJLJ.F77L7F7F-7FJF--JF--7|FJL-J|F--7F---7L--J||F7F7FJ|L-7|FJFJL7FJ|L7|L7FJLJJL7F7L--J|L-7FJF7F7FJF--7F-7L---7F7F-7F-7FJF7F7||7FJFJ-.F-L7|7 -L|||.|-LL-|LJ||FJ|FL---JF-J||F7F7|L-7|L--7|F7F7|||||LJ-L7FJLJ-L7FJL7|FJ||||LF7F-J||F7F7|F-JL7|||LJFJFFJL7L-7F7LJ|L7||JLJFJLJLJL-JFJF|-L|FJJJ -77|7-J-|FFL7FJ|L7L7|F---JF7|LJ||||F-J|F-7|||LJLJ|||L7JF7||F----J|F7LJL7|FJL7|LJF7|||||||L---J||L-7|F7L7FJF-J||F7L-JLJF7FJF-7F7F--JLJ|FFF-L|J -LF7|F-7F-JFFL-JJ|FJFJF7F7|LJF-J|LJL-7|L7|||L---7||L7L7||LJL-7F-7LJL7F-J|L7FJ|F7|||||||||JF7LFJL7FLJ|L7LJFJF7|LJ|F7F7FJLJFJ.LJLJF77JL-7-F7.|. -.LL-JJ.FJ7LLL-|LLJ-L-JLJ||F7L-7|F---JL-JLJ|F7F7||L7L7LJL--7FJ|-L7F-JL-7L7LJ7||LJ||||||||FJL7|F-JF-7L7|F7L-JLJF-J|LJLJF--JF7F7F7|L7.||JLL7-L7 -JF|J.L7|.7-LLF-7F7FF7F--J||L-7LJL--7LF7F7JLJLJLJL-J-|F----JL7|F-JL---7L7L--7||F-J|||LJLJL-7|||F7L7|FJ||L--7F-JF-JF---JF7FJ||||||FJ7|JFF7-J.7 -.LJJFLLL---|-L7LJ|FJ|L--7||F7L-----JFJLJL------7F7F7LJF---7FJ||F7F7F7L7L7F7||||F7|LJF-----JLJLJL-J|L7|L--7LJF7L7FJF-7-|||FJ|||||L7F7-|--J-F- -|J.F|-JJJLF77FL-7|L7|F--J|LJL-7F7F-7|F--7F7F7F7LJLJL--JF--J|FJ|||||||FJF||LJ||||||F-JF----7F--7F-7L-JL7F7L--JL-JL7|FJFJLJL-JLJLJFJ||FL.|.-7L -|7FJLF7L|F.L|7F7|L7|||F--JF---J||L7LJL77LJLJLJL7F-7F---JF7FJ|FJ||||||L7FJL7FJ|||LJL7FJF--7||F-J|LL---7||L---7F7F7LJL7L7F7F---7F7L-JL7J7FF7|J -JJ-LF|-77.FF7FJ|L7LJ|LJF-7L-7F7|L-JF-7L-------7|L7||F7F7||L-JL7|||LJ|FJL7FJ|FJLJJF-J|FJF7LJ|L-7|F----JLJF--7LJLJ|F--JFJ|LJF7-LJL----J7L-FJ7J -|-L-J.L|LJF||L7L7L-7L7FJFJF7LJ||F--JLL--------JL-J|LJLJLJL-7|L|||L77||JFJL7LJF---JF-JL7|L7FJF-J||F-7F7F-JF7L---7|L-7FJFJFFJ|F------7|F.|JLJ7 -L.LL7J-JFFFJ|-L7|F7L7|L7|FJL-7LJL--7L|F7F7JF--7F7FL7F-7F--7L-7LJL7L7||7L7FJ|-L7F-7L7F-J|FJL7L-7|LJ-LJ||F-JL----JL-7LJFJ-FJFJ|F--7F7|-J7F--J- -|-F-||7F--JFJF-JLJL7||F||L--7L7F7F7L7FJ||L7|F-J||F7LJJLJF7L--JF7||FJ||7FJL-7.LLJJL7|L--J|F-JF-J|F7F7FJ|L-7F------7|F7L-7|FJFJL7J||LJ|7FJ|.LJ -.JJ7LFLL7F7|JL--7F7LJL-JL-7-L7LJLJL-J|FJ|FJ|L--JLJL7F7F-JL----J|FJL7LJ-L7F-J7.LL-JLJF---JL7.L--J|LJ|L-JF7||F7F---JLJL7FJ||||F7L7|L7LL-J.JF|J -|--7|.L.LJ|L-7F7LJL---7F7FJF7L-------JL-JL-JF------J||L7F------JL-7|J|LL|L-7-|F--FF-JF--7FJF---7L-7|F7FJLJ||LJF7F---7LJFJL-J||FJL7|||||F.FFF -F.||-|7.F7L-7LJL7F7F7|LJ||-|L---7F7F7F7F---7L7F7F7LFJL-JL-----7J|.||L|7L|F7|-JJJ.LL--JF7LJLL--7L-7|||||F--JL7FJLJF--JF-JF-7FJLJJFJ|J77-7FL7J -LJ-FFJJ.||F7L--7LJ|||F--JL7L7F-7LJLJ|||L-7LL-J|LJL7|F--7F-----J-L7LJ7-|JLJ||.LJ|F|LFF7||F77F-7L-7||LJLJ|F--7LJF-7L---JF7L7|L--7-L7|-FL---L-J -7F-J|7.FJLJL-7FJF7LJLJF7F7L7LJFJF7F7LJ|F7L----JF-7LJL-7|L------7LFJ|.-JJLLLJ7L-7-F--JLJLJL-JFJF7|LJF--7|L-7|F7L7L-----J|FJL7F7L7.LJ7-7J|F|.L -.|L|F-7L----7|L-JL7F7FJLJL7L7FL7|LJL-7|||F7F-7FJFJF-7FJL--7F---JFL7-7.F--|-JJFL.LL--7F-----7L-JLJF-JFFJ|F-JLJ|FJ|F-7F7-LJF7LJL7L77J|J7-77|.| -L.|J|FJFF---J|F--7LJ|L7LF7L7|F7LJF7F7||||||L7|L7L7L7|L---7LJF--7F7J7FFJ7F7|J.|.|JLF7LJ7F7F7L7F7F7|F-7L-JL---7LJF7L7LJL--7|L--7|FJ-.F-JJFJF-J -|.7|L7JFJF7F7LJF7L--JFJFJL-J|||F-JLJLJ||||L7||FJFJFJ|F7F-JF7L-7LJ|J7FF-J7|L--L77F-JL---JLJL-J|LJLJL7L7F-----JJFJL-JF-7F7LJF--JLJL|7|.FF--J-| -J.LLJF7L-JLJL-7|L7F7FJFJF--7LJLJF--7F7LJLJ7LJ|L7L-J.LJ|L-7|L7FJF-J-7LJ-JL|L--77FL7F7F---7F7F7|F-7F7L7|L-----7FJF7F7|7LJL-7L---77F7LL-F7J7.F7 -L.|L-|L7F7JF--J|FJ||L7L7|F-JF7F-JF7LJL77F77F7L-JF--7F7L--JL7LJFJ||-L-J7.F-.|--7FFJ||L7F-J|||||L7LJL-J||F----J|FJLJLJF---7L----JF-7JLJLJ.FFLJ -JF|FLL7|||FJF-7|L7||FJLLJ|F7|||F-JL---JFJL-JL7F-JF7|||F77JF|F7L-77-F7L-FF.FF7.--|FJL-JL7FJ||||FL--7F7L-JF7F7||L----7|F--JF--7-F7-L-.7--7J7JJ -LL|FF7||||L7|FJL7|||L7F7FLJ||||L7F---7.|F----JL7FJ|||LJL7FFJ|L--J7-|J7LL-.LJ--..LJF----J|F||||F---J|L--7|LJL-JF----J|L---JF-JFJL77LFJ-||J|J7 -|LLFJLJLJL-J|L7FJ||L7||L---J||L7||F--JFJL----7FJL7LJL7F7L7L7L7F7F7J.FFFJL-JJ|LJ-L|L-7F7FJFJ|LJL----J-F7LJF----JF--7||F----J.FJF7L-7J.FF|-L-J -|7.L-7F--7F-JFJL7LJ-LJL-7F--J|FJLJL---JF7F7F-J|F-JF-7||L-J-L7||LJ|J-FJ|7F|..F7JJLLF-J|LJ7L-JF----7F7FJL--JF----JF7L-JL---7-FJFJ|F-J|LJ7LJJ.L -.FLLL||F-JL-7L-7L-7F-7F7LJF--J|F7F-----JLJLJF-JL-7L7|||LF7F-JLJF-JFF7JLL7|F-7J|||LL--JF-7F7.L-7F7LJLJF-7F-JF--7FJ|F7F7F-7L-JFJJLJ.|7|||.F-7| -F-.L.LJL7F7FJF-JF7|L7LJL7FJF--J|||F------7F7|F--7L-JLJL7|LJF7F-J|7L||F7JL77.LLF--J|LFLL7|||F-7LJL----JLLJF-JF7LJFJ|LJLJ|L-7FJ7.F7FF-F7|F-F|J -L|.|7|FFJ|||JL7FJ||-L--7|L-J.F7||LJF7F7F-J|||L-7L7F7F-7LJF7||L--77J|LJ|-F7F-FFLJ|-F-7F-JLJLJFJF7F7F---7F-JF-J|F7L-JF7F---7|L-7FJ|FF7|L7-7FJ7 -.|.-7-F|FJ|L77LJJ||F---JL----JLJL--JLJLJF7|||F-J.LJLJ7|F-JLJ|F-7L77L-7|.LLJF-77JFFL7|L-7F7F7L-JLJ|L--7|L--JF-J|L-7.|LJF7FJL--JL7L-JLJFJF7.J7 -L7.|-F-J|FJFJJ-LLLJL7F7F7F---------7F-7FJLJLJL---7F7F7LJF--7||FJFJF--JL7L|7|FJF7FF-JL-7LJLJL----7|LF7||F---JF7|F-JFJF-JLJF7|F7||F----JF|JF7| -.J-.L|F7||FJJ|7-|.J|LJLJLJF-----7F-JL7||F7F7F7F-7LJLJL--JF-J||L7|7L-7F-J-FFJ|FJL7L---7|7F7F77F--JL-JLJLJF7F7||||F7L7|F7LFJL7|L7||F-----77LL| --J.JJLJLJLJ7.|FFJ7-F------JF---7|L---JLJ|LJLJ|L7|F-----7FJF7LJLLJ-LFJL7J-FL7LJF-JF---JL-JLJ|FJF7F-7F----JLJLJLJLJ|FJLJL7L7FJ|FJ|||F-7F-J7.JJ -LFL7L||JL|.FJJ7J.7.L-------JF--JL------7L---7L7||L----7LJFJL7F7-|LFJF7L7F7FJF7|F-JF-------7|L-JLJFJ|F-----7F-7F--J|F--7L-JL-JL-JLJL7LJ|L--|. -F-L7.LJ7LJL|JL7FFJ7LLF7LF---JF7F7F----7L----JJLJL7F7F7L--JF-J||F-7L-J|FJ|||FJLJL--JF------JL----7L-JL----7LJFJL--7|L-7|F7F7F7F7F--7L7L7-LFL- -|.||.FF7.F-L-F7F7F-F-J|FJF--7|LJLJF--7L---7F-7LF7LJ||L7F--JF-J||FJF7FJL7|||L---7F7LL7F-7F7F---7FJFF-7F7F7L-7L7F-7LJF-J|||||||||L-7L-J.L7J.|7 -FJF|JF|JFL-J-|||L7-L-7LJFJF7LJF7F7L-7L----J|FJFJL7F|L7|L--7|F7||L-JLJF7LJLJF7F-J||7LLJFJ|||F-7||F7L7||LJL--JFJL7L--JF7LJLJLJ||L7FJF7J7||FF.- -|L-||-J7JL7LL|LJFJF77L7FJFJL--JLJL--JF7F---JL-JF7L7|FJL7F7|LJ||L-----JL7F--JLJ|FJL7J.FJFJLJL7LJLJL-JLJF7F--7|F7L----JL7F7F7JLJFJ|F||-J|-7J-J -FFLJ77.77-JJJ|F7L7||F7||FJF7F--------JLJF------JL-JLJF7LJ|L7FJ|F7F7F7F7||F---7FJF-JF7L-JF--7L7F7F7F-7FJLJF7||||F---7F7LJ||L--7L-JFJL7.|.J||| -L-77L-7|-J..-LJL7|||||LJL-JLJF----7F7F7FJF----77F--7L|L-7|FJL7||||LJ||LJLJF7FJL7|FL|L--7L-7|FJ|||||LLJFF-JLJLJ|L7F7|||F7LJF--JF--JF-J.|..FL7 -|L---|J.L.77-FF7|||LJ|FF7F-7FL7F-7LJ|||L-JF--7L7|F7|FJF-J||F7|||LJF-JL-7F-JLJF-JL7-L--7L--JLJFJLJLJF7F7L---7F7L-J||LJ|||F7L---JF-7L7F7--7.L| -F-J--JJ-L|L|-FJLJ|L-7|FJ||FJF7LJFJF7LJL-7FJF-JFJ||LJL7|F7LJ||||L7FJFF--JL-7F7L7F-JF-7-L7F---7|F7F7FJLJL77F-J|L7F-JL-7LJ||L7F7F-J|L-J||JL-7.| -J|.FJJL.LJ-J.L--7L--J|L7|||FJL77L-JL---7LJ7|F7L-JL7LFJLJL-7||||FJ|F7L-7F--J||FJL-7L7|F7LJF7FJ||LJLJF7F7L-JF7L7||F---JF7||7LJ|L------J|77L|-- -LF7FF7-7FF7L-J.LL7F-7L7|||||F7L-------7L--7LJL-7F-JFJF7F--J||||L7LJ|F7|L7F7|||F--JFJLJL7FJ|L-JL7F-7|||L7F-JL-JLJL---7||LJF7|L7F------JJ-F--7 -.L-7L7-L-||7|F7F-J|7L7LJLJ|LJL-7F7F7F7L7F7L77F-JL7FJFJLJF7FJ||L-JF-J|||FJ|||||L--7L---7|L7|F7F7LJFJ|LJ7LJF--7F------J||F-JL-7|L----7F|J-JFF| -FFLJJ|L|-F-7-||L7FJF7L---7L7F7LLJLJLJL7LJL7L7L-7FJL7L7F7|LJFJL-7FJ7FJLJ|||||||F-7|LF7FJL7|||||L7|L-JF----JF7|L-------JLJF-7FJ|F-7F7L-777L-FJ -F--J-L-F-JFJ-|L7|L7|L----JFJ||F7.F7F-7L--7L-JF7||F-JFJ|||F-JF-7|L-7L--7L7|LJ||L7LJFJ|L7FJ||||L7|F7F7L-----J|L7F7F-7F-7F7L7|L7|L7LJL7FJ.L-L-F -|-L|||F|F7L7.L7|L-JL-7F7F7L-JLJL-JLJL|F--JF7L||LJL7FJJ|LJ|F7|FJ|F-JF7-L7|L7FJL7L7FJFJ-||FJLJ||||||||F7FF---J-LJLJF|L7||L7||FJL7L-7L||LJ7F7J| -|.|L-7FLJ|FJF-J|F7LF7LJLJL---7F7F---7LJF7FJ|FJL7F-J|F7L-7||||L7|L-7|L-7|L7||FFJFJL7||FJLJF--JFJLJ||||L-JF--------7L-JLJ7|||L-7|F-J.LJ--F||LL -|-FJLF---JL-JF-J||FJ||F7F---7LJLJ7F-JF7||L7|L7FJL-7LJL-7|LJLJFJ|F-J|F-JL7||L7L7L7FJL7L7F-JF77L7F-J||L---JF-------JF-7F-7LJL--JLJJ.FJ-F-JLF-J -|-L.FL-7F-7F7L7L||L7|FJ|L7F7||F7F7L-7|LJL-JL7|L7F7L7F7FJ|F---JF|L7J||F7FJ||FJ-L7|L7FJFJL-7|L7FJL7FJ|F----JF7F7F7F7L7LJFJFF7F7F7|F----7JJLLJ. -|7|FF-L||JLJL7|FJ|FJ||FJFJ||L-JLJL7FJ|F-----J|FJ||FJ|LJFJL7F7F-JFJFJ||||FJ||F7FJ|FJL-JF--J|FJL7FJL7|L-----JLJ||LJL-JF7L--JLJLJL-7JJ-F|...JLF -J-7-|JFLJF7F7||L7|L7||L7L-JL-----7|L-J|F---7FJL7|LJFJF7|F-J||L-7L-JFJ|||L7||||L7||F--7L-7FJL--J|F7||F-7F7F7F-J|F----JL----7F----J-|.J-|..||. -J.L-LJ-LFJLJLJL7||FJ||FJF7F7F-7F7|L-7FJ|F--JL-7|L-7|-|||L7FJL7||F--JFJLJFJ|LJ|FJ|LJF7|F-JL--7F7|||||L7LJLJLJF7|L-77F77F7F7LJ-F7-F77FL7J-LJ-- -LF.|LJ|LL-----7|||L7|||FJLJ|L7LJLJF7LJ-|L-7F--JL-7|L-JLJFJL-7L-JL7F7|F--JF|F-JL7|F7|||L--7F7|||||LJ|7L7F-77FJLJF7L-JL-JLJL---JL7||JFJ|-|-|.J -F|--.JJLLF----JLJL-JLJ|L--7|-L7F-7|L7F7L7FJL--7F7LJF----JF-7L--7FJ|||L-77FJL-77||||||L7F-J||LJ|LJF-JF7LJFJFJF7FJ|F7F----7F7F7F7||L7LF7F||F-| -LJFL-|L7.L--7F-7F7F7F7|F7FJ|F7LJ-LJFJ|L7|L7F--J|L--JF---7L7|F7FJL7|LJF-JFJF--JFJ||||L7|L7FJ|F7L-7|F7|L7FL-JFJLJLLJLJJF-7LJLJLJ|LJFJ-.J7LL7L- -|.|J-7-J-F--J|FJ|LJLJ||||L7LJL-7F7FJ7L7||FJL--7|F7F7|F--J-||||L7FJL7FJF7L7|JF7L7||||FJ|FJL7|||F7|||||FJF7F7L7F--7F7F7|FJFF---7L-7||L-FL--|7J -LFJ.||..FL---JL7|F---JLJ||L---7||LJF7FJ||L-7F7|LJ||||L7F7FJ||L7|L7FJL7|L7|L7|L7||||||FJ|F7||||||||||||FJ||L7LJF-J|||LJL--JF--J-LLJJ7FFJ-FF-7 -FJFFF-F77LF---7LJL----7FJF7F--JLJF-JLJ-|L-7|||L7FJ|LJFJ|||FJL7||FJ|F-JL7|L7|L7LJ||LJ||F||||||LJ|||||||L7LJFJF7L--J||F-----J.F77F7|LF7F-7LJ|| -LF|7-L|L-7L--7L7F7F---JL-JLJF-7F7L-7F--JF-J|||FJL7L7FJFJ|||F-J||L7|L7F-J|FJ|FJF7||F-JL7LJ|||L7FJ|||||L7L-7L7||S7F7LJL-------JL-J|FFF-JFJ|-7| -LJJ|J|L7FJ-F7L7||||F7F7F---7|FJ||F7|L7F7L-7|||L7||FJL-J-LJ|L-7||FJ|FJ|F-JL7|L-J|||L7F-J|FJ|L7|L7|||||.L7FJFJ||||||F7F-7F--------JF7L7FJJ||LL -F|L|LF-JL--J|7||||LJLJLJF--J||FJ|||L7||L7FJ|||FJFJL----7F-JF-JLJL7||FJL-7FJ|F7FJ|L7||JF-JFJFJL7|||||L7.|L7L7|||||LJ|L7|L---------JL-J|--.||| --|JJFJF--7F7L-JLJL------JF7FJ||FJ||FJ||||L7|||L7L-7F7F7|L-7L--7F7LJ|L7F7LJFJ||L7L7||L7L7FJ7|F7|||||L7L7L7L7|||||L7FJFJL----------7F7FJFF7J77 -LJ.LL-JF-J||F7F-7F------7|LJFJ|L7|||||L7|FJ|||FJF-J|LJ||F7|F-7LJ|F-JFJ||F7|FJ|FJFJ|L7L7|L-7LJ|||||L7L7|FJFJ|||||FJL7L-----------7LJ|L--7J.77 -FF|7LF7L7FJLJ||FJ|F-----JL77L7|FJ|||FJFJ|L7||||FJF7L-7LJ|LJL7|F7||F7L-JLJ||L7|L7L-JFL7||F7L-7|||||FJFJ|L7|FJ|||LJF-JF-------7F-7L-7|F--JL|L- -FL|JFJL7LJ-F-J|L-JL7F7F7F7|F-J|L-J|||FJF|FJLJ||L7||F7|F7L-7FJLJ||LJL7F7F-JL-JL7L7FF--J|LJL7FJ||||||FL7L7||L7|||F7L-7L------7|L7L-7|LJ7-J7|.| -LFL7L-7L---JF7|F7F-J|||||LJL-7|F--J||L-7||F--J|FJ|LJLJ|L--JL--7|L7F-J|||F--7F7|FJFJF7FJLF7||FJ|||||F-JFJLJ-|||LJ|F-JF7F----JL7L7-LJJ.F-J|JF- -FJ|L|LL7F7F7||||LJF7|||||F---J|L--7|L7FJ|||F-7|L7L-7F-JF7F7F7FJ|FJL7FJ|LJF7LJ|LJ7|FJ|L-7||||L7|LJ|||F7L-7F-J||F-J|F7||L-----7L-J-JJ|-7|J|J|J -J7|LFJFJ|LJLJ||L7FJLJ||LJL-7F7L--7|L7|L7||||-|L7L7FJL-7|||||LJFJ|-FJL7L7FJ|F7L--7LJFJF7LJ||L7||F-J|LJL7FJL-7|LJF-J|||L7F7F-7L---7J.L7||7|-77 -FJJF77L7|F---J|FJL7F7||F---J||F7FJ|FJ|FJLJLJFJFJFJL7FFJ||||L-7L7L7|F7|FJL7|||F--JF7|FJL7FJ|FJLJL-7L-7FJL-7FJL-7L-7|||FJ||L7L----J77-J7|L|J.7 -F-FJL|-||L7F-7|L--J|LJ||F7F7|LJLJ-||JLJF7FF7|FJ||F7L7L7|||L7FJFJFJ||||L7FJLJ|L-7FJLJL-7|L7|L7F---JF-J|F7FJ|F7FJ|FJ||||FJL7L--7F77J|FFFJ7|7.| -L7JL|L-LJ7||FJ|F---JF7||||||L--7F7|L--7|L-JLJL-7LJ|FJFJ|LJL|L7L7L7||||FJL--7|F-JL-7F7FJL-J|FJL-7F7L-7LJLJFJ||L7FJFJ||LJ|-L7F7LJL7-F|--LJJLF- --|||.LLL7F||L-JL--7FJ||LJLJL7F7LJ||F7FJL7F-7F-7L-7LJFJFJJF-JFJ|L-JLJ|||F-7FJ|L7FF-J||L---7||LF-J||F7L7F7-|FJL-JL7L7|L--7F-J|L7F-J-|LJ.LJ7.|| -LL7L-J|-7-LJ|-F---J|FJL--7F-J||F7||||L7FJ|.||FJF-JF-JFJF-JF7L----7F-J||L7|L7L7L7L7FJL7F7FJLJFJF7|||L7LJL7|L--7F-JFJL-7FJL-7|FJ|JJ.L-7|J.7-F| -.|LFL7JF-JL|7FL----JL7F--JL7FJLJ||LJ|FJL7|FJ||FJF-JF7L7L-7||F7F7FJL-7|L-J|FJFJFJFJ|F-J|||F7J|FJ|||L7L7F-JL7F7|L-7|F7L||J7FLJ|FJ--|7LFJ.J|FJJ -FF77-J7FJFL7-L.F-----J|F7F-JL7F7|L7FJ|7FJ|L7||L7L7FJL7|F-J|||||||F--J|-F7LJFJFJJ|FJ|F7||LJL7LJFJ|L7|FJL-7FJ||L7FJLJL7||FL|.LLJJ-J|F7L|FJ7JL7 -|JFJ-F7JFFF7.LLL--7F-7|||L7F7LJ||FJL7L7L7|FJ|L7|FJ|F-J||F7|||LJ||L7F7L7|L-7L7L-7||FJ||||F-7L-7|FJLLJ|F--JL7||FJ|F7F7|||JJL7|L-|-77L77|7-F7.| -7-L7.FFJL-|L-FLLJ|||-LJ|L-J|L7FJLJFLL7|LLJL7|FJ|L7||F7||||||L-7||FJ|L7LJF7L7|F7||||FJ||LJ7|F-JLJ-LF-JL777||||L7||||LJLJJ7-LLJF7LJL|J7LF-|7.7 -|.JJF|J.L-JJF-7..FLJ77FJF7FJL|L--777.|L7JL-LJL7L7LJLJ||LJ|||F-J||L7||L7FJ|FJ||||LJ||FJL7-FJL-7.L--L7F-JJ-FJ|L7|||LJJL|.LF7.F|J|7J.J7|JL-F-JJ -|7|F7J-F--7-JL|--|JJF-JFJ||F-JF--J||-|FJ.J7J.FL-JF-7FJL-7|||L-7||FLJF-JL7|||||||F7||L7FJFJF-7L7-7LL||LF|||FJ-LJ|L7JFF7J.LJ-|7-F-.7J7..F7LF77 -LJ|.LJF-7.J7.|||F|-FL-7L7||L-7L-7JFLFLJJ7F|7F|FF7L7LJF7FJLJ|F7|LJF--JF7FJLJFJ||LJ|||-||FJFJ-|FJ.|77LJ7-F-LJL-.LL-JFJ.|JL.|7LJ.JL-LJ|F.F7JL7J -L7|7.FL.F7LF-LJJJ|..L-L-J|L7FJF-JF77.L|JFJ.FF--J|FJF7||L--7LJ|L7LL-7FJ|L--7L7||F-JLJJLJL7||L||7.LF-JFLLF7.LLJ-7L7LJ-L7-7F-77|FJ.LJ7|.7||F-F. -F7J|-LLJF-7L-||7F7-7F-JFLL-JL7L--J|7|-|LFLJ-L--7LJFJ||L--7L-7|FJF--J|FJF7FJJ|||L77-LFL-LLJJ-LJJ77.FL|.F77F||LL7LJ7J|F|JL--J-F7--7FJ.L|F-7FJ7 -FL7|L|.F7JF-.LFL|LJFL|-FJJ|LLL7F-7L-7|LF77||LL-|F7|FJL7F7|F-J||F|F-7||FJ||JL||L7L7J7|L.L|7.L||LFFJ7-777||LJF7|LJF--7---F|7L7LJ7|LJ-F.LL7J7L| -L.F|-L--F-|JFF7F|--7.L--..J.LFJL7L-7|7FJJL|-7J.LJ||L7FJ|LJ|F-JL7LJFJ|||FJ|JFLJJ|FJ-J7FF---|F77.FJFL.LF-LJ-LFJL-7-7FF7J7|L-.LJLF--|.-.|JL7F7L -.-J|||FFJ-JFFJ.LJLL-JFL|LFJ7J|F7L7LLJFJJJ-|.7.-7FJ|FJ|-L7FJL7F7L-7|FJ|||FJ.7||LLJJJJ|L7LLJL-JJ.JFJ7J.L|7J.FL|.7J.F7LJ.JL777.|F.LFLJJF-7F|LLJ -7F-L|-7L|JLF|7JF|.F|.L7FJJ.FFLJ|FJFJ.LJ.7|F-J-JFL7|L7L7L||F-J|L7FJ||-||LJJ..77|-J-.-FLJ7F-7F|7||7-L.FJLJF7J.J.LJ|L|7J-|F.F-FLJ||.|J.7.F-L.|| -||7JL-JJL7.F.-.FLF-|-7L7J||-|J-LJ-L-F.|FJ-|-|LLJ.LJJL-J-LJ|F-JFJ|F|||LJ-LJ--JLF-FF7L|J|7|F|LFJL7|F|-|-F-JJ..|.|..FL-.L-.FF--7L|-F7.L|.-J7LL7 -7.77.FL-JJFFJ7.77JLL.F7L7FF7-7.LJ.FF77F-J||.||.F|J7F||JFJLLJ-LL7L7LJ-L.FJ77.|.JLLL-JJF--|F|-L-FF7LJ.|||LLF-77-L7--7LFF-7.|L7|-----7.J-FF7|-| -.LLLF|F77F-JLF7-J-|LF.F-F|J|L7-JJ-J-J-7-7-7|JJ-|7-J-LF7L|-J|7|FL-JLJJ|7FJF7LJ.L-7.L7-L|FJJJ-|7|L|-J-J-77LL.F-7-|7LF.7JL-F7|-|LJ..F|7-F7LF7FF -FJ|L7JLJ-L...L|J..J7L7|FJL7--7|..||||FL--7L7.L-||.JJFJJ|F-LJ7|JJ||LF7L7JJ|L|.|.LFJLL7.-|JJ|FF-|||FL-JFJ|F7-|-J--|7LFJ77F|JL7L7LF-|FJ7J|.|FJ- -J.FJ|LLJLL-|-.LL-L-|LJ-LL-L-JLL-.-JJL7-7J|LJJ7.-|JJ--L-J.FLJ-|L7--.-J-L--JLLFJL-FJ.|J.LJJLLLJ-J-L7-LL7JL-|JLJ-LLLJ-LJ|JFF7J..-7J-LJ..7.FFJJJ \ No newline at end of file diff --git a/aoc2023/src/day11/input.txt b/aoc2023/src/day11/input.txt deleted file mode 100644 index c86cc92..0000000 --- a/aoc2023/src/day11/input.txt +++ /dev/null @@ -1,140 +0,0 @@ -..............#..........................#.....................#.....#...................#..................................#............... -.............................#.........................................................................................#..........#......... -#......................#.................................................#.....................#...........#................................ -......#..............................#........................................#............................................................. -................................#...........#.........#.............................................................#.....#..........#...... -..................#...................................................#...................#................................................. -............................#............................................................................................................... -........#.....#...............................................................................#...............#............................. -#...................................#.....#.........................................#.....................................................#. -..........................................................................#........................#..............#........#........#....... -.....#.....#.............#.......................#.......................................................................................... -..............................#.............................#....................#......#................................................... -............................................................................................................................................ -.......................................#....................................#........................................#...................... -.......#................................................#..............#............................#....................................... -................#.................................................#.........................................#............................... -.....................#.........................#.....................................#...................................................... -...............................................................................................#..................................#......... -.#......................................................................................................................#................... -........#................................................................................................................................... -...............................#...........#.............#...............................#...........#...................................#.. -.............#.....#.............................................#.....#......................................#............................. -............................................................................................................................................ -.......................#...........#.................#..............................#....................................#.................. -...............................................................................#.....................................................#...... -..#......#.............................#............................#..................................#........................#........... -.............................#..........................#......#...........#................................................................ -....................#.........................#..................................................#.......................................... -......#............................................................................................................#........................ -...........................................................................................................#................#............... -#..............#...................#.............................................#........................................................#. -.........................................#.........................................................#........................................ -.....................#............................................#.....................#................................................... -.................................................#......#................................................................................... -.........................................................................................................#..............#.......#........... -...............................#..................................................................................#...................#..... -..........................#.........................#...........#..............#..........#..................#.............................. -..........................................#.............................#................................................................... -............#......#................................................................................#....................................... -................................................................................................................#.....#....................# -...#.........................#................#...............................................................................#............. -......................#..................................#.............................#...................#................................ -.......................................................................#.....#.................#............................................ -.......#..................#.........................#....................................................................................#.. -..........................................................................................#....................#............................ -........................................#........................#.....................................................#.................... -...................#.....................................................#.......#.............................................#............ -..............................#.................#........................................................................................... -..#..................................................#......#................#.............................................#.........#.....# -...........#..................................................................................#.....................#....................... -.....................................................................................................#...........................#.......... -................#......................#........................................................................#........................... -............................................................................................................................................ -.......#..............#............#............................#......#................#.....................................#............. -............................................#........#.........................................#............................................ -..............................#..............................................................................#.......................#...... -............................................................................................................................................ -....................#............................................................#..............................................#........... -......................................#..............................................................#...................................#.. -..........#.....................#.......................................#..............#.................................................... -............................................................................................................................................ -....#.....................#..................#......#.......#.................#...........................................#................. -....................................#.........................................................#....................#.............#.......... -....................................................................................................#....................................... -.................................................................#........................................#................................. -..................#...................................................................................................#..................... -.........................................................................#......................#........................................... -#......................................................#...........................#............................#.........#................. -...........................#............#..........................................................................................#........ -..................................................................#......................#.................................................. -................#................................#...........................#.............................................................. -........#.....................................................................................................................#............. -...................................#........................................................................................................ -.......................#.....#................................................................................#............................. -.#...........#...........................................#.................#....................#........................................... -..........................................................................................#............#................#................... -..........................#..........#...................................................................................................... -.....#...............................................................................#.....................#.....................#.......... -............................................................................................................................................ -..........#............#................................#.....................#..................................#.......................... -...............#...................#.........................#....................................#..................................#...... -............................................................................................................................................ -...........................................................................................................................................# -...#.....................................................................................................#.................................. -......................#.............................#..........................#..............................#............................. -..........................................#...................#..........#..........................#...............#....................... -..............................#.....................................................................................................#....... -.........................................................#................................#................................................. -...............................................#............................................................................................ -..........#...........................#..............#..........................#.........................#...................#............. -#.....................................................................................#..................................................... -.....#............................................................#..........................#.................#............................ -...........................#.......#..............#.................................................................#....................... -.......................................................................................................#.................................... -........#..........#.....................#..................#......................#......................................#...............#. -.............#.........................................................#.................................................................... -................................................................#........................................................................... -.....#.................#.................................................................#......................#.....#..........#.......... -................................#......#.............#.........................................#.....#...................................... -...........................................................................#.........................................................#...... -..........#................#................................................................................................................ -.................................................#..............................#..........................................#................ -.....................................................................................#.................#.........#.......................... -.......................................................................#....................................#............................#.. -...............#......#....................................#................................................................................ -.........#...............................#..........#..........................................................................#............ -...............................................................#.................#.........#.....#......................#................... -............................#.....#......................................................................................................... -......#..........................................#.......#...........................................................................#...... -..............#...................................................#........................................#......#......................... -.............................................................................#.............................................................. -.....................................#................................#................................................#.................... -..........#..................#..............................#.............................#................................................. -....#.....................................................................#......#............................................#............. -......................#.................................#..............................................#.................................... -.............#.............................................................................................................................. -..........................................#......#...............................................#..........#............................... -.........................#......#.......................................................#...............................................#... -...........................................................#.................................#...................#.......................... -...#...............#..................#..............#....................#...........................................#..................... -.....................................................................#...........#..........................................#......#........ -..............................#...............#.................................................#......#.................................... -........#.....#............................................................................................................................. -#........................................................#.............................#.......................................#.......#.... -....................#..................................................#.................................................................... -..........................................#......................#.......................................................................... -.........................#...........................#.............................................#............#.........#................. -.....................................................................................................................#..............#....... -..........#...................................#............................................................#..................#............. -.....#..........#...................#........................................#.............................................................. -.....................................................................#.........................#.......#.................................... -......................#......#.............................................................................................................. -.#......#................................................................................................................................... -.................................#....................................................#...........#......................#...............#.. -.................#..................................#.........#.........#...........................................................#....... -..............................................#..................................#.......................................................... -...........................#..........................................................................#.........#........................... -..........................................#................................................................................................. -.....................................#...........#..................#.........................................................#............. -..................#....................................#.............................#...........#........#.............#................... \ No newline at end of file diff --git a/aoc2023/src/day13/input.txt b/aoc2023/src/day13/input.txt deleted file mode 100644 index 3113249..0000000 --- a/aoc2023/src/day13/input.txt +++ /dev/null @@ -1,1379 +0,0 @@ -##..#..#......# -.........#..#.. -.####.#.######. -#....#.###..### -..##..#.#.##.#. -######...#..#.. -#.##.#.#.#..#.# -#....#..######. -.#..#...#.##.#. -#....#....##... -.#..#.#..####.. -......#.######. -##..##.#.####.# - -.#...##.. -..##.#.## -.#.###... -###..#.## -##.#.#### -..#.#..## -.###...## -.#...#.## -#####.#.. -...#..### -###.##.## -####...## -####..### -###.##.## -...#..### - -#####...####.#. -##..###..#..#.# -...#.###.....#. -...#.###.....#. -##..###..#..#.# -#####...####.#. -##....####..... -#..##.....#..#. -#..##.....#..#. -##....####..... -#####...######. -##..###..#..#.# -...#.###.....#. - -#..##...# -#..#..### -#..#..### -#..##...# -.##..#.#. -.....###. -#..#.##.# -...#..### -.##.#..## -.##.#.#.# -#####.#.. - -######.#.#.#... -.#..#.#.##...#. -...#....#.#.#.. -#.##.#.#.....#. -.......##.#.### -#######.##.#..# -......##...##.. -#.##.#....#.#.. -#.##.#....#.#.. - -#...#..##.. -.##..###### -....###..## -.#..#..##.. -.####.####. -###.##....# -.#..##...## -###.#..##.. -#.#.#...... -.####...... -....#.####. -..##..#..#. -..#.#.####. -..#.#.####. -..##..#..#. - -#...#.#.##.#.#... -###.#..#..#..#.## -#...##.####.##... -#.....#.##.#..... -...#####..#####.. -##..#.######.#..# -###.##.#..#.##.## -...#..#.##.#..#.. -....#........#... -#..##.#.##.#.##.. -#................ - -...##.###.# -...##.###.# -##..#....#. -##.....#.## -#.##..#.#.# -..##...#.#. -...#####..# - -.##.##.#.##.. -#..#.#.#..... -####.###..#.# -####.####.### -#..#.#####.## -#..#.#....### -#..#.#....### -#..#.#####.## -####.####.### -####..##..#.# -#..#.#.#..... -.##.##.#.##.. -.....##.#.#.. -####..#.#.##. -#####.#...### -#####.#...#.. -#..#...####.# - -#..#.#...#...##.. -...#...#..#..##.. -#..####.#.#.####. -..#####..#.##..## -..#...####.##...# -.#.#########....# -.#.#########....# - -#..#...#.#.#...#. -#.####...###.#.#. -#.....##...##.#.# -##.##....#....#.. -#.....##....#.... -..##.##.#...#..#. -..##.##.#...#..#. -#.....##....#.... -##.##....#....#.. -#.....##...##.#.# -#.####...###.#.#. -#..#...#.###...#. -......#.#..##.... -......#.#..##.... -#..#...#.###...#. -#.####...###.#.#. -#.....##...##.#.# - -....#.. -#.##... -#.###.. -#...##. -.##..## -.##..## -#...##. -#.###.. -#.##... - -##.##.#.. -..#..#..# -...#####. -..#....## -##.##.##. -##.##.##. -..#...### -...#####. -..#..#..# - -...####.....##### -.#......#.####..# -.#########.##.... -####..#####.##### -..######..#...##. -#.##..##.#....##. -....##....##..... -#........#.#..... -....##.....#..... -...#..#.......##. -#.######.##...... -.##....##.###.##. -...####...#..#..# - -.#...###..###...# -##..##.#....##..# -.#.#.########.#.# -.######.##.###### -.##.#...##...#.## -.#...########...# -.#.#...#..#...#.# -#..#....##....#.. -#..####.##.####.. -#.##..##..##..##. -..#...#.##.#...#. -#..#..........#.. -#..#..........#.. - -....#..###....# -#..#..#..#....# -#..##.....####. -.##..#..#..##.. -####.###..####. -###.#.##.#.##.# -.##..#..##....# -#####.###..##.. -####..#...#..#. -#..#....#..##.. -#..####..##..## -......#.##.##.# -.##...######### -.........#.##.# -.##..######..## -#..####..#....# -.##.####..#..#. - -#..#.##...#.##. -###.##.##.#...# -##.########.#.# -.#.#.##.#...### -.#.#....####... -.#.#....####... -.#.#.##.#...### -##.########.#.# -###.#..##.#...# -#..#.##...#.##. -#..#.##...#.##. - -.##..####..##.. -####..##..##### -.#.#.####.#.#.. -..##..##..##... -#....#####...## -####.#..#.##### -##..........### -#.#.#....#.#.## -#...##..##...## -.##.##..##.##.. -..##..##..##... -....#.##.#..... -###.######.#### - -########..#.##.#. -######..######.## -#.##.#.#.###.###. -#....#.#.####.### -#....##..#..###.. -......##.##..###. -..##..#..#.###..# -..##..#.#.##...#. -##..######..##..# -##..######...#..# -..##..#.#.##...#. -..##..#..#.###..# -......##.##..###. -#....##..#..###.. -#....#.#.####.### -#.##.#.#.###.###. -######..######.## - -#.####..##..# -#.#.#........ -.#.###...#..# -#...#..##.... -...#.#.###..# -#..####.#.... -#####.#..#..# -.##..####.... -.....#...#..# -##.#...#.#### -.....###..... -###..##.#.... -.#..##.#.#### -#...#..#..##. -##...#....... -.#...#....... -#...#..#..##. - -...#..##. -..#.#.#.# -######.## -#####.### -..####... -######..# -######..# -..####... -#####.### -######.## -..#.#.#.# -...#..##. -#..###.## -####..##. -...#.#..# -...###.#. -..##.##.# - -.####.....#.# -........#.### -##..##...##.# -..##...####.. -..##...####.. -##..##...##.# -........#.### -.####.....#.# -######.##.#.. -.#..#.####.#. -##..####.##.# -#.##.##..#... -##..########. -##..##.##.#.# -.####....#.#. -.....#.#.#.#. -.#..#....#.## - -#..########..## -#............## -#.##########.## -.#.#.####.#.#.. -##.#......#.### -.#.###..#.#.#.. -###.######.#### -#.##.####.##.## -##.##....##.### -#.#.#.##.#.#.## -#.##......##.## - -.#......#..####.# -#.#.#####.#.###.. -##..##.#..#...##. -.##.#..###...#..# -.##.#..###...#..# -##..##.#..#...##. -#.#.#####.#.###.. -.#......#..####.# -#..##.#.##..#.#.. -#..##.#.##..#.#.. -.#.....##..####.# -#.#.#####.#.###.. -##..##.#..#...##. - -.#....#......#. -..#.##.######.# -...#.#..#..#..# -##..#.###..#.#. -##............. -##..#.########. -..#.##..####..# -..#.##..####..# -##..#.########. -##............. -##..#.###..#.#. - -####.## -###..## -#.##### -##..#.. -#...... -####.## -#.#.... -..###.. -..##### -#.#.... -####.## -#...... -##..#.. -#.##### -###..## -####.## -#####.. - -###.##..... -##.##..#..# -##.##.....# -###.##..... -#####...#.. -..######### -########.## -##.###...## -..#..#..#.# -..##...##.. -...####.#.# - -#.##...#....# -##....##....# -##..##..#..#. -##..##..#..#. -##.....#....# -#.##...#....# -.##.....####. -#####..#.##.# -#.####.#.##.# -.#.##.#.#..#. -#...#.#..##.. -###..##.####. -.#####....... - -#..##.# -#.###.. -#.###.. -#..##.# -.##.##. -...#... -#..###. -#..##.. -#..#..# -#..#..# -#..##.. -#..###. -.#.#... - -.###.## -.##.### -##..... -##..#.. -.##.### -.###.## -#...### - -..##..#.##. -.#..#.....# -.#..#.##.#. -######.#### -..##....... -..##....... -######.#### -.#..#.##.#. -.#..#.....# -..##..#.##. -#........#. -########..# -##..##..##. - -..######.....#... -...........##.##. -.#.####.#....#### -.#..##..#.####..# -####..#####...... -###########.#.##. -.#..##..#..###..# -###.##.###...#### -#..####..##.##### - -###.#####..##.. -...........##.. -.#.##...#..##.. -.#...##.##....# -.....#.###.##.# -..#####..#....# -##..###..##..## -####.##...#..#. -.#.##..##.#..#. -.####...##.##.# -...#.##..###### -..#..##..###### -..#..###..####. -..#..###..####. -..#..##..###### -.#.#.##..###### -.####...##.##.# - -..##.##..#..... -..##.##..#..... -.##...##.##...# -.....##..##.##. -#####.####..##. -.#......#.##..# -....##..###.##. - -#..#### -##.##.. -..#.#.. -..#.#.# -..#...# -.....#. -.#.#... -.#.#... -.....#. -..#...# -..#.#.# - -#.###.# -#####.# -.##..#. -.##..#. -#####.# -#.###.# -...#### -.#.##.# -......# - -#.##..##.####.# -..######..##..# -###....###..### -...####...##... -#........####.. -###.######..### -##.####.##..##. -##..##..######. -.#......#.##.#. -#.#....#.####.# -##......######. -..#....#..##..# -###.##.######## -.#......#.##.#. -.#......#....#. - -.##........#. -...#.##.##..# -.#..###..#### -...#.....#### -.#....##..### -#..#...#.#... -#.#...#.##.#. -#.#...#.##.#. -#..#...#.#... -##....##..### -...#.....#### -.#..###..#### -...#.##.##..# -.##........#. -.##........#. -...#.##.##..# -.#..###..#### - -....##....### -.########.... -##.#..#..#### -#...##...##.. -#........#.## -###.##.####.. -..##..##..### -..#....#..... -#..####..#### -##.####.##.## -##..##..##.## - -########.#.#.##.# -###..####.##....# -##....##...##..## -#......#.######## -#.####.##.##.##.# -#......##.#.#.... -#......##....##.. -.######.##....... -##....####.#.##.# -#..##..#.###....# -...##...#....##.. -.######....###### -##.##.##.#...##.. -#..##..#.#.##..## -.#....#.##...##.. - -###.#...####...#. -#..#.##..##..##.# -.##...##....##... -#####......#...## -#####......#...## -.##...##....##... -#..#.##..##..##.# - -####..#.##.#. -.#..##.####.# -#..#.#.####.# -#..#.#.####.# -.#..##.####.# -####..#.##.#. -.###.#.####.# -##....#...... -####.#..##..# -##..#...##... -...##.#....#. -##.########## -###.####..### - -#..######..#... -.###....###..## -.#.####.#.#..## -.###.##.###..## -..###..###..### -.#...##...#..## -###.#..#.###... -#.#.#..#.#.##.. -#..######..##.. -...#.##.#...### -..#......#..... - -......##.#. -##.#..#.... -##.#..#.... -......##.#. -#.#.#.##.#. -..#.#.###.# -#####..##.. -##.###.#..# -..#.##...#. - -##......###.### -##......###.### -#.##..##.##..#. -.##....##.###.# -..........#.#.# -..######...#..# -##.####.##...#. -..#....#..##..# -.###..###..##.# -.#......#.##.#. -.#......#.##..# -.#.####.#..#..# -###.##.######.. -##..##..#.#.... -.##.##.##...##. - -.#....#.#..#. -...##....##.. -##.##.##....# -#.#..#.#.##.# -.######..##.. -###..####..## -##.##.###..## -..#..#..#..#. -.#.####.#..#. -.#....#...... -#..##..##..## -.#....#..##.. -###..###....# - -##.##.##.###....# -.######.####....# -#......##.##.#..# -..#..#..##.##..## -.#....#..#.#.##.# -#..##..#..####### -..#..#...##.#..#. -...##.....####### -#.####.#.#.##..## -##....#######..## -.######..##.#..#. -.##..##..#..#..#. -###..####...#..#. -.#.##.#..#.#....# -.######.#.###..## -.........####..## -##.##.##......... - -....##.##.#.#..## -####.##.###.####. -#..##..#.####..## -.##....##.#.##.## -#..#...#.#.##.... -.##......##..#.## -#..#.##...#.#.#.. - -....##.## -....##.## -....#.... -..###.#.. -##.#.#### -....#.#.. -..#...... -###....#. -#...#.#.# - -.....##...###.#.# -.##.#.##.....#... -.##.#.##.....#... -.....##...###.#.# -#.######...###... -..#.#....#.##.#.# -##########.#..#.# -..#..#....###..#. -...##.#.##..###.. -#####.#.......##. -..#..#.#.#...##.# -..#..#.#.#...##.# -#####.#...#...##. -...##.#.##..###.. -..#..#....###..#. - -.#.##.#.....#.... -#.#..#.#.#.##.#.# -###..####......## -#.####.#..#..#..# -..#..#..###..###. -..####.....##.... -##....####....### - -##..#.##......# -..#.##.#.##.### -#..#......#.### -.##.##.#.....#. -#.#..##.##.##.# -#.#..##.##.##.# -.##.##.#.....#. -#..#......#.### -#.#.##.#.##.### -##..#.##......# -#....###.##.#.. -#....###.##.#.. -##..#.##......# -#.#.##.#.##.### -#..#......#.### - -..##.#...#.## -.#.##.#..#... -#..##..##..## -#......###... -...........## -.#.##.#.###.. -#.#..#.###... -.#.##.#.##.## -##....##.#### -.#.##.#....## -##.##.##..#.. -#.####.#.#### -#.####.#.#.## -.#....#.##.## -..#..#..##.## -#..##..##.... -#......#.#.## - -..#..###..... -.##.#.#...#.# -..######.#.#. -...#####.#.#. -.##.#.#...#.# -..#..###..... -#..#######... -.#..#.#...... -..####.#..#.. -...#..##.#### -.####.......# -#...#.##..#.# -...####.##.## -...####.##.## -#...#.##..#.# - -...###. -.#..### -.#..### -...###. -..#.#.. -.###..# -..#.#.# -.#.#.#. -.###..# -.###..# -.#.#.#. -#.#.#.# -.###..# -..#.#.. -...###. - -..######..... -##########..# -...####...... -#.######.#..# -#..#..#..#..# -#.##.###.#..# -##..##..##..# -##.####.##..# -##.####.##### -#.#.##.#.#..# -.#..##..#.##. -#...##...#### -..######..... -##.####.##..# -..........##. - -##.##.###.#...... -#..##..#.#..####. -#......###.#....# -#########.##....# -...##.....####### -#..##..#..#...... -#......####.#..#. -#..##..#..#...... -.##..##.#..#.##.# -..#..#...#.##..## -...##....#####.## -##########.#....# -##.##.#####..##.. -#.####.######..## -###..#######.##.# -#......#..#.#..#. -..#..#......####. - -.#..##.##..###. -.#.###.##..###. -#...#...#####.. -...##.####...## -....#.#####.#.# -##.#..#.###.#.. -.#.##.####..##. -##.#...##.##.#. -....######.#### -....#.#.##..### -..##...#......# -#####...####.## -#####...####.## -..##...#......# -....#.#.##..### -....######.#### -##.#...##.##.#. - -#..##.### -.##.....# -.##.##..# -###..#### -#####.#.# -......#.# -#..##.#.. -#..##.#.. -......#.# -#####.#.# -###..#### -.##.##..# -.##.....# -#..##.### -#..###### - -..#.#.#..#.#. -..#.#.#..#.#. -#...#.#..#.#. -.###.#..#..#. -.#.#..#.#.#.. -#.....#...### -##.##.#####.. -##.##.#####.. -#.....#...### -.#.##.#.#.#.. -.###.#..#..#. - -####...#.#. -####...#.#. -#..#..#..## -.....#..### -#..#.#..### -.........#. -.....###.## -######.#... -#..##.###.# -.........#. -..#..#.#.#. -#######.##. -####.#..#.# - -#..###. -#..###. -.....## -##.#... -#.#.#.. -.###.#. -#.##.## -##..##. -..###.# -...###. -.#.###. - -############...## -##..####..##.#... -##..####..##.##.. -.####..####..#.## -..##....##..##.#. -.####..####.#..#. -..............##. -#..........#.##.# -##############.#. -.#..#..#..#.#.#.# -............#.#.# -..##....##..###.. -#....##....#.###. -##############.## -.#..#..#..#.#...# - -.##......#.#### -....###..###.## -.....######.... -....#..##.##... -######....#.### -#..###.##....#. -########.#.###. -#..#####.#..### -.##..#...####.. -.##....##..#### -#...##.##.###.. -.##...#..###### -#..#.#.#.#.#... -.##...#..#....# -.##...#..#....# - -##.#.##.#.### -.#.##..##.#.# -#.#..##..#.#. -###.#..#####. -#.#.#..#.#.#. -##.######.### -#.##....##.#. -#.##....##.#. -##.######.### - -###..#####.## -###..#####.## -.....###..### -...##..###... -##.#.##.##.## -..##.....#.## -#.###........ -#...##...##.# -#.####.##.#.. -#.#..###.#### -.#.#.#####... -#.##.##.##... -####...####.. -#####....#### -.#.##.##.#... -.##.##..##... -.#.#...##.#.. - -.###..### -.#.#....# -.#..##..# -.#......# -...#..#.. -##..##..# -####..### -##.#..#.# -#.##..##. -#.##..##. -##.#..#.# -####..### -##..##..# - -###...#.... -...##.#.#.# -..######### -..##....#.# -..#######.# -..#....##.. -..#....###. -..#######.# -..##....#.# - -####......#...### -#.#..#..##..#..#. -##.##..####..##.# -..###...##...###. -.######....###### -..#####....#####. -#.###...##...###. -.#......##......# -...#..######..#.. -...#..######..#.. -.#......##......# - -...#..#.### -##.####.... -...##..#### -###...#.... -..#..#...## -##..#.##... -...##...##. -.......#### -####..###.# -.....#.#..# -##....#.... -#######.### -##.####.### - -#.#..#... -..##..#.. -..##..#.. -#.#..#... -.####.... -##..#.### -...##.... -...#...## -..#..#### -.#.##...# -....#.... - -..#####.....##. -#.##..#....##.. -........####..# -......#.###..## -....###....##.# -....###....##.# -......#.###..## -........####..# -#.##..#....##.. -..#####.....##. -.##.#..#.#.#.## -.##.#....#.#.## -..#####.....##. - -.#.#.#.## -.#.###.## -.##...#.. -##.##.##. -##.#..#.. -..#..#.#. -##.#.#.## -##.#.#.## -..#..#.#. - -..#.##### -##...#..# -##.###..# -######..# -##...#..# -..#.##### -.#.#..... -#.....##. -...#.#### -####.#### -##....... -#..#.#..# -...##.##. -#.#.##..# -###...... -....##### -..##..##. - -...##...# -...###### -...##.... -###..#.## -##.#.#.## -.#...#.#. -..#.#.### -.....##.. -###.#.... -##.#.#.#. -##.#.#.#. - -....#.....#.. -#..##.#....#. -##........... -..##.##...##. -.###..#..###. -##.########.# -##..###....## -###.##..#.##. -###.##..#.##. -##..###....## -##.########.# -.###.....###. -..##.##...##. -##........... -#..##.#....#. -....#.....#.. -....#.....#.. - -..##.#.#. -#####.#.. -#...####. -##.###... -##....#.# -##.#.#... -...#####. -##..#...# -.....###. -###..##.# -###.#.### -###.#.### -###..##.# - -..#.### -.....#. -..#...# -..#..## -####.## -###.#.# -###.#.. -####.## -..#..## -..#...# -.....#. - -.###.#.#.##.#.. -#.####..##..#.# -#.####..##..#.# -.###.#.#.#..#.. -....#...#..##.# -..####.##.#...# -##..#.#..#..##. -###..#...#..... -###..#...#..... - -#...#.....##. -#.###.#..#### -..###.######. -.#..####..##. -.#..####..##. -..###.######. -#.###.#..#### -#.........##. -.##.##.###... -#.##..#####.. -##..######..# -###.#...#.... -.#.#.######## -###......###. -....######.#. -.###.##.##.#. -.###.##.##.#. - -#..#..#....#..# -..###.#.##.#.## -##.###......### -##...########.. -.....#......... -#...###....###. -#...###....###. - -.#..#....#..#.. -#....#..#####.. -.####.###..##.. -#....#####.##.. -..##.......#.## -.......#.##..## -##..###..###... -.###....#.#.#.. -.#..#...##..... -#....#..##.#### -##..###.####.## -..##..#...#.#.. -.........#..### - -.####.. -#...#.# -..##..# -#..###. -#..###. -#.##..# -#...#.# -.####.. -..##.## -..##... -#....#. -#.#..#. -#.#..#. - -#####...#..## -#.###...#..## -.#####.#.#... -.##.##..##### -....##.###... -..#.#.###.### -.##....##..## -##..#.###.### -##...###.#... -.#.##.#.#..## -.#.#...#.#### -#....#...#... -...##..##..## - -.....#.#..... -....##....... -#..#.#.##.... -#####.##..... -#....####.##. -#..####...##. -#..###.#..##. -....##..##### -#####.###.... -....#.###.... -####.#...#..# -#######...... -....#.##.#### -.##....#.#..# -....###.##..# - -##.####......##.# -....#.###.#...##. -....#.###.#...##. -##.####......##.# -.##..#.##...#.### -.#.#.#...#...#... -#.##.#..##.#.#.#. -#.##.#.###.#.#.#. -.#.#.#...#...#... - -#####..####..#### -...###..##..###.. -..##..........##. -##.#..##..##..#.# -##....#.##.#....# -##.#.#..###.#.#.# -..#.###....###.#. -..##..........##. -..###...##...###. -....#.##..##.#... -.....#......#.... - -.####..#..#..## -..##...#..#.... -......###...### -......##.##..#. -#....#.#.#.#... -######.###...## -.####.#.#..##.# -.......#.#..#.. -.......#.#..#.. -.####.#.#..##.# -######.###...## -#....#.#.#.#... -......##.##.##. - -#.#..##.#.#.. -.#..##..#..## -.#..##..#..## -#.#..##.#.#.. -..#..#...#.#. -.#...#.#.###. -#.#####.#.##. -#...#...#.#.. -#...#...#.#.. -#.#####.#.##. -.#...#.#.###. -..#..#...#.#. -#.#..##.#.##. - -#..##......##..#. -#..##......##..#. -.#.#.#.##.#.#.#.# -#..#.######.#..## -.#..##.##.##..#.# -#...#..##..#...#. -#.############.#. -#..##.#..#.##..## -#..###....###..## -##.#...##..##.### -.##.##....##.##.. - -..###.#.##.#.###. -.##.##..##..##.## -.##.##..##..##.## -..###.#.##.#.###. -.##..#.####.#..## -###.##..##..##.## -###.#.#.##.#.#.## -.#..............# -#...###.##.###.#. -###...#....#...## -.##..#..##..#..## -..#..##....##..#. -..#.#.######.#.#. -###..##.##.##..## -..#..#.#..#.#..#. - -###.##.## -##..##..# -#.######. -#.######. -##..##..# -###.##.## -.###..### -#.#....#. -..#.##.## - -....#.##..# -......#.##. -#.####.#..# -#.####.#..# -......#.##. -....#.##..# -.#.##.#..#. -.##..##.... -#....##.##. - -.##...##.#. -.#.##...##. -#..#####.## -#..#####.## -.#.##...##. -.##...##.#. -.#..###...# -###.##.##.# -#...##.#.## -#...##.#.## -.##.##.##.# -.#..###...# -.##...##.#. - -.##...##. -.##...##. -##..###.# -##.#.#..# -.....#... -#..#.##.# -........# -..##.###. -..##.###. -........# -#..#.##.# -.#...#... -##.#.#..# -##..###.# -.##...##. - -####..#..##.##.## -....#.##......... -....#...#.######. -.....##..##....## -.....####........ -####..#...##..##. -....###.##.#..#.# -#####.....##..##. -.##.....#...##... -.##.##.#..######. -#..#####..#.##.#. -#..######.##..##. -..#.#.#.#.######. -.##...#..##.##.## -####..####.####.# - -#...#.# -#..#.## -##..### -##..##. -#..#.## -#...#.# -.#....# -#..##.# -...#.#. -###...# -##..### -.#####. -.#####. -##..### -###...# - -##.##..##.##.#..# -.##..##..#..##..# -#############...# -....#..#........# -#..##..##..#.##.. -#..#....#..###### -#....##....###.## -###.####.#####..# -.#..####..#.#.### -##..#..#..###..#. -..##.##.##...##.# -.##..##..##.....# -...............#. -...............#. -.##..##..##.....# -..##.##.##...##.# -##..#..#..###..#. - -#.####### -##.#...## -#..##..## -#..#.##.. -##.##..## -###.##### -###.##### -##.##..## -#..#.##.. -#..##..## -##.#...## -#.####### -..#.#.#.. -#...#.##. -.#.#..#.. -.#.##..## -#.#..#### - -.......#.#...#### -....#..#....#.##. -..##...#...###### -##.#....#.##.#### -##..##...#####..# -.##...#####.##### -.####..##.#...##. -#..#..#####..#..# -#..#..#####..#..# -.####..##.#...##. -.##...#####.##### -##..###..#####..# -##.#....#.##.#### -..##...#...###### -....#..#....#.##. \ No newline at end of file diff --git a/aoc2023/src/day15/input.txt b/aoc2023/src/day15/input.txt deleted file mode 100644 index 86b345f..0000000 --- a/aoc2023/src/day15/input.txt +++ /dev/null @@ -1 +0,0 @@ -fnln-,bkxf-,spfc=9,ds-,trzx-,dtck-,xs-,bg=4,fgmpc=5,xmxf=1,cl=9,md-,ct=2,ftz=5,xhd-,vkqx-,hxd=6,mlcn=6,ctdbt=6,txpsv-,nkx=3,jfz-,fzm=3,rvcd=4,nfgp=3,jjd=7,nzq=6,zv=5,lh-,nfgp-,gcbtgm=7,zj=6,sxlh=3,vsj=8,cjb-,tslfp=5,vc-,kpn=7,qpm=5,jgmnxd-,xp-,kmm-,xb=4,tv-,bmnlf=7,cb-,vbmk=5,dvz-,ssd=6,sb-,mldgtn-,mtx-,kz-,nzq-,dnkf-,sn-,js-,bpq-,vc-,fzm=9,xqv-,gqsr=2,jzxp=5,bc-,lxg=5,sv-,gflrmd=9,ncjb-,fm=9,lln=1,ql=9,tj=2,pbmldc-,fkzq=7,vkh=3,tn=4,fdl-,frgf=1,vf-,fpg=4,xzt-,jf-,pjfk=5,rvcd-,rv=6,zrs-,qnd=1,vqzhc-,xrb=8,lvx-,dfz-,xstdx=6,sf=4,hsb=3,sqjgc-,xtl=7,zthrd=8,mldgtn-,rc-,kpz-,tpnmp=6,bzj=7,gmrrx-,bszd-,mjz-,bzj=8,ztk=9,dtv-,qgm=4,ssd=3,xc=8,hvglb-,xf-,qhvz-,vqc-,ktj=1,ppq-,zxt-,rnsbt-,qpx-,nj-,vhl-,rknz-,zngsp-,vhl-,fjh-,vrzjf=7,gkn=6,tfd=4,bgg=1,fgmpc=9,lpd-,pbmldc=4,jm=2,vlv=4,shn-,vps=8,ljsvc-,rfdrk=3,vkqx=7,gftx=9,nzq-,cq=1,ckb=6,zsx-,qpf-,cggz-,bzj=9,lfg=6,tfd-,xdfz=8,ghbr-,dsdm=8,nj=4,jf-,fnln=7,fzm=7,fkzq=7,xcq=8,fkzq-,dm-,bfz=2,lqf=4,sfp-,kpqvtc=2,fkzq-,vth-,zn-,xhs-,vsj-,psfnx=4,xbx=1,xgk=9,snpgsm-,psg=3,shn=6,qxkrd-,pxvxlh-,xbx-,gt-,ksn-,dzn=7,gp=7,mp=8,jtz=3,ph=2,jxj=8,pg=5,txkh=6,drls=6,zthrd=9,gqsr-,dtv-,mktlhp=9,bszd=5,snpgsm=5,qz=6,sh=6,lqt-,mktlhp-,mgt-,mvmqfm=5,bc-,lpd=6,zn=3,nhsvv=3,vdf-,znjg-,phsl=7,tnb=4,qlf=9,txpsv-,pxvxlh=6,lqfv=7,lffv=5,djmlb=7,pxn-,hdxvhr=8,vbz=1,vqc=1,xrb-,bj=1,bzpv=5,tdl-,xc=2,cnr-,ss=6,mf=2,sv=2,mp-,zpc-,rqg-,xtsd-,hlg=6,xdfz=9,nl-,kfp-,cr-,qxkrd-,vpxv=9,mtx=1,drls=9,jzxp-,xqfrg-,js=3,ql=8,xp-,kpz=8,zj=9,jxj-,gf-,gcbtgm-,cmpc=4,tr=4,px=6,pvv=9,tpnmp-,jhhqj=5,mmn=3,qpf=5,vnk=9,cnn-,xgr-,mmsz=4,lvs-,cv=3,cq-,bfz=8,ct=7,kr=6,gk-,zdtz=1,vqzhc=3,xzt-,vqt=4,dphx-,kmr-,fkzq-,lk=8,dvz=6,ghbr=6,hm=6,zm-,sn-,jgmnxd-,vkz-,ps-,vpxv-,gpg=4,bmnlf=9,pjfk=3,ndmt=7,zk-,zthrd=5,fgmpc=8,rgh=7,bx-,ctp=2,nl=7,rtj=6,grlkl=9,zf=8,lg=4,zngsp-,rsn=5,drls=9,lxmkfx=7,sbt-,bx-,lln-,dm=6,fnv-,qpf-,tq-,qv=9,cfnbp-,pxvxlh-,tr-,nh-,clg-,xjpbxm-,zs-,trzx=8,bgh-,cmbv=1,vq=6,lcr=9,scbjp-,sjb=2,gmrrx=6,mg=5,znjg=4,zn=9,grlkl=7,xmxf-,smtd-,vkh-,spsx=9,qpf-,bgg-,smtd-,ntg=6,qpf-,vtp-,nlcrm=8,cvc-,frgf=8,blfx-,vbz-,tcs-,bqpp-,fjh=5,rtj=5,vr=6,kjrc=1,nzq-,qpf-,vqc-,kmr-,hj=8,fnh-,scbpb-,gxg=9,kf=6,xhs-,zdl=9,sscn=9,dzt-,rl=9,gr=6,tv-,jmthd=9,gn-,bzj=4,pv=9,pcnzf-,jxj-,sxlh-,lxg=3,rpn-,vr=9,rl-,tslfp=5,pgd=2,xmxf-,mjz=9,drls-,hrbj=7,rr-,lxg-,grlkl=3,jsv=1,sr=6,dv-,scbjp=1,pkg-,mgt=9,hsb=3,ccs-,xdfz-,cqq-,nbtq=2,ljsvc-,rpn=8,msbfzl=5,kz=7,cnr=4,hz-,ctf-,tgqp=9,tfd-,sqd=7,rb-,qf-,srp-,fkzq-,pfjml=6,rnsbt-,dmp-,zngsp-,cfnbp-,kpqvtc-,gftx-,lvs-,zpc-,kpz=2,pxvxlh-,spm-,rt-,ftz-,lvs=2,zsx=2,sjb=4,lxmkfx=7,bqpp-,hb=7,xzl-,ckb=7,hsb-,cvc-,ksn=7,mktlhp=5,jhl=6,snpgsm-,mm-,xstdx=2,rm-,rqx-,ld=4,zv=6,fx-,sbx=2,blfx=8,fmkjj-,km-,cmbv=8,vz=9,lg=4,fpg=4,kpfr-,dmp=4,xxj-,jhl=2,km-,vx-,sh=8,xqv=3,kfp=3,zdm=3,tdl-,ddxn-,gzrz=9,xqv=8,kqh=2,rlrlql-,lpd=1,vr=1,ggm-,dkz=3,jx=2,trzx-,sjb-,rh=8,dbsf=4,jhhqj=8,jzxp-,bkxf-,thnmq=7,mktlhp-,jtz=7,sh-,plt-,rfdrk-,hj=4,dk-,zjvd=9,jsv-,vkn-,jc-,zk-,mmsz-,lcr-,dkz-,px-,pcnzf-,jtz-,pzd-,kqh-,ts-,znb-,dzn-,qgm-,drls=9,bmnlf=3,thnmq-,bpq-,zxt=9,lg=6,rknz=8,bzj-,vsh-,lq-,rm-,ql-,cs=1,dzt-,hfrdk=4,kmm=9,lhks=9,jsv=5,zxt=9,kc=4,rm=8,hvglb-,bzpv-,drs=1,tgqp-,trg=4,dp-,zmlr-,pvv-,lfg=2,rqg-,nh=5,mkj=5,cct=1,lxmkfx-,txpx=2,vps=5,dzn=3,dph-,kv=1,vth=6,gftx-,lztd=3,hb=8,qpx=2,fjg-,plp-,vnhfc=3,zv-,xt=1,bgkjq-,pbk=9,hj-,sv-,kpz=5,fnh-,zpc=3,zj=8,pxvxlh-,qgm=6,gct=5,tdl=5,xtl=2,lg=7,trzx=9,hvglb=3,ss=6,vpxv-,gh-,js=1,jf=1,rqx-,pg-,nqcj-,zzx-,mf-,zlcmgc=3,lxg=8,rpgj-,vhl=6,phsl=8,dtck-,rxv=2,qpf=7,nh-,ccs-,mf=3,xrm=4,pljg=1,rnsbt=5,nnn=2,snpgsm=5,qxkrd=5,xgk-,trg-,phsl-,bzj=5,ckb=4,cqbvs=5,xgk=8,ck=7,dbffb-,tj=2,dm-,fjg-,zdm=8,jc=9,rqg=3,qhvz-,cmpc-,dzn=4,xrb=2,kfp=2,vbz-,xhs-,dnkf=3,chpn-,sl-,kftx=5,rsn=5,ps=9,jm-,pbk-,vq-,qpf=4,rfdrk-,rsn=9,nqcj=7,vsh=7,npm=7,qxkrd-,hpl=1,rnsbt-,pxn-,zsx-,lpd=5,fgmpc-,vkqx-,vth-,pm-,mgt=5,cct=3,bb-,hzlzn=2,gkn-,mjz-,kx=8,qcnnzx-,kmr=7,lfl-,jhhqj-,lqfv-,gkn=5,pfjml-,lhks=4,bzj-,tnp-,nj=1,xhs-,rtj=9,rlrlql-,qcm=3,mph-,fx-,jm-,xtl-,xdfz-,msbfzl-,ckb=7,hj-,cqr=5,scbpb=2,tslfp=1,kmm-,cv=4,zpc-,qfb-,rlrlql-,trzx-,sf-,ccs-,fsz=2,dv=8,thncf=4,bmnlf-,qgm=8,plvd-,dm-,pjfk=4,gr=6,qv=7,khx=3,vs=7,dtck=9,xbx-,xstdx=8,km=6,hgp-,kf-,xf=1,vnhfc=6,xgr=1,pbk-,sl=2,jmthd=8,sbt=6,mkj=8,vnk=3,bgkjq=8,bg=2,xbx=6,mmsz-,rnxt=1,shn-,ss=3,kpqvtc-,dfz-,qxj=9,mktlhp=4,jzxp=1,hm-,vx-,bzj=1,vnhfc-,vrc=7,bgkjq=8,gp-,vq-,lh-,tnfx=4,ntg-,dd=5,znb-,vtp=4,vgln-,hz=1,lk=1,mktlhp-,vz=3,vpk-,bbsk=4,qlf=1,hgp=5,xjpbxm-,qcm=8,tz=4,lqf=2,bz=3,jfjbj=9,lfl=6,cqq=8,xzt=4,xb-,rlrlql=9,cqbvs=8,dzt-,blfx=9,rqx=5,xfn=6,px=3,chpn=7,js-,lg-,ctf=1,qcnnzx-,hsb-,xnmq=1,hpl=1,pg-,gr-,fkzq=2,rfdrk=7,tnp-,gbsp-,nq=4,vttk=1,lrpx=5,xrm=3,crb-,nglvx=5,md=2,px=6,pljg-,sjb=3,kpjqgm=9,xrm=6,slzd=6,xc-,sxlh=6,mtx-,xc-,nbtq-,plvd=2,hb-,znfd=7,ghbr=1,gkn=3,gct-,cqq-,znb=5,jsv-,txpsv=6,dk-,dbh=7,lmlx=6,lcr-,bfz=4,xhs-,cjb-,tkpb-,dkms=4,sh-,fkzq=3,kqh=8,dv=9,lrpx-,vnhfc-,bqpp-,pcnzf-,km=1,ssmflk-,pnp-,rsn-,cqbvs=5,fr-,kfp-,npm-,vbz-,jm=9,pgd-,trzx=6,hsb=6,qrn=3,lln=8,zl=6,qpf=8,djmlb=6,zj-,qhvz=1,kz-,bzpv-,bq=8,frgf=7,blfx-,tnp=9,lqf=3,zrs=5,lc=2,scb=6,dzfqlb=3,kmqjt=1,trg=1,fzm-,bgg-,gzrz-,sv-,qz-,zlcmgc=4,qcm=1,xhd=7,zmlr-,fnv-,xdfz=9,fx-,xfn=7,zdm-,fr=7,tfd=1,njvd=4,vnk=2,xbx=8,xp=3,zbgdxg-,lxmkfx-,pbmldc-,znfd-,znb-,xh=5,ccf-,lxmkfx-,tgqp=6,ng=6,kz=9,hlg=2,mmsz=9,vdf=1,vkh=9,cvc-,sfp=7,ckb=6,gxg=9,cggz=2,clg=8,zn=6,ctf=6,zdtz=1,ddxn=6,nhsvv-,plvd-,sbx-,ncjb-,lc-,pvv-,vpxv=3,mhh-,qgm=6,vbmk=8,rb-,gxx=7,pt-,qpx-,gcbtgm-,xf=4,xfn=1,tv-,mmn-,zrs=6,zm=7,pxvxlh=5,xc-,dbsf-,scbpb=3,smtd-,fsz-,znjg=3,rfdrk-,ccs=9,mgt=5,mjjk-,vsh-,sv=8,cgp-,gf=1,pg=5,mph-,ctp=3,vblpd=7,gbsp-,gf=3,nbtq-,vjsg-,jsv-,lqfv-,np=4,xh-,tq-,xs-,vk-,hb-,mmn-,vbz-,kpjqgm=5,dkz-,rzjkqp-,tvm=3,dz-,kftx-,khn-,nj=2,cnn=3,cl-,sf-,vc-,zmlr=3,lxmkfx=3,blfx=9,vbmk=6,tpnmp-,sqjgc=5,rz=2,bszd=6,kkc=9,dnkf-,lmlx=7,ddxn-,bhfh-,gflrmd-,xb-,mmn=2,jfjbj=1,zm-,sqd=4,kl-,dfz=4,ktj=5,lxmkfx=2,qxkrd-,dp=6,hl-,lqfv-,kx-,vbz=5,qf-,sv-,kpqvtc-,vhx-,ps=1,fr-,vbmk-,bnhz-,tj-,rlrlql=2,np=4,vs-,vbmk-,pmz=3,pbk-,zxt-,ck-,xf=2,jtsdd=7,ng=1,gn-,qfb=5,mf=4,xb-,rc=7,jjd-,xv=6,gzrz-,cqq=5,dzt-,scb-,plvd-,vqbp-,mvmqfm=3,pr=1,nj-,pvv=8,xtsd-,gbsp-,hnf-,fdfc=3,zzd-,kftx-,pbk=3,lrpx-,hbmt=4,mktlhp=2,ld=4,sf=4,rxv=1,kkcd=9,dph=7,ssmflk-,vnhfc=1,hrbj-,ljsvc=6,rt-,xf=5,tq-,npm=1,kkcd-,spm=7,ljsvc=4,lpd-,nh-,cnr-,xmxf-,cxq=6,mjz-,hpl-,lh-,grlkl=7,pv=9,pqf=1,zsx=7,vbz-,vgln-,dvz-,zl=6,js-,rqx=8,hdxvhr-,pkg-,tzjln=1,nhsvv=7,ggm=5,zz-,kmm-,zngsp=5,gqsr-,cnn=8,vrc=3,zxt-,txpx-,jmthd=9,gbsp-,gn-,zrq-,ss=5,xjpbxm-,ssmflk-,sr-,kl-,gp=9,mhh=7,bpqv-,mvmqfm=6,vr-,kmqjt=4,xnmq-,hvglb=5,qpf-,xb=5,jgmnxd-,sfp-,sscn=8,pcnzf=4,rr=7,gqsr=4,xs-,ql-,pxn=6,jf-,ckb=6,ps=7,bzpv-,qcm=5,gf-,vk=8,hlg-,kjrc=4,dnkf-,kjrc-,qgm=7,pt-,mmn-,dphx-,dsg=8,brp=5,lq=6,kpqvtc=8,xhs=1,tz=1,rm-,qht-,jhl=3,mr=1,tj=4,pnp-,zngsp-,lcr=5,fr=9,vgln-,bz=1,nfgp-,xzt=1,xzbz-,cqzt-,vblpd=9,mg=6,dd-,xtl-,mf=7,qln-,qxj-,mgpp=7,cb=7,zf-,pkbv=2,fgmpc=4,lc-,dmp-,zxt=1,db-,hrbj-,vnk-,smtd=1,cjb-,dtt-,zlcmgc=1,kkcd=9,xh=3,sqjgc-,td=9,npm-,cqbvs-,hj-,sf=2,zf-,mph=7,zcjvl=4,dkms-,rgh=6,zzx=4,hm=4,tz-,vr-,vf-,cqq-,bgh=1,sn-,vbz-,sxlh=3,xtl-,lqt-,kd-,mg-,vf-,lg=5,fnh-,gbsp-,ksn-,mlcn-,vqzhc=8,gzrz=6,lcr=3,qxj=1,hpl-,dphx=5,js-,fm=5,vgslz-,vf=5,ns=2,qcm-,ds-,pr-,vqfz-,hl-,mnphn-,ctp-,qht-,dv-,kd=1,lrpx=9,bpq=1,qgm=9,ckb=6,zf-,vps=5,gbkt=3,zk=4,lztd-,tpnmp=9,rr=9,rpgj=5,dbffb-,mvmqfm-,fzm=8,bpq=9,lxmkfx-,sf-,br-,jxj=1,snpgsm=2,bj-,fsz-,vjsg-,gxx=4,hbmt=1,gflrmd-,rtj-,zl-,snpgsm=7,ppq-,vrzjf-,dv-,njvd-,sxlh=1,xgr-,tv=8,kmqjt=2,cfnbp-,xxj=1,zngsp=5,cqr=1,jc=9,gr-,qxkrd-,xzbz=9,xnmq=1,zcjvl=1,vjsg=4,fx=2,srp=2,kpfr-,bbsk-,xqfrg-,tvm=1,pqf-,fdl-,ss=5,bnlpjk=6,dphx=6,vbz=4,grlkl=7,gxx=1,lrpx=3,drls-,dph=8,vs=4,sbt=3,jpc=5,pbmldc=8,ddxn-,br=3,qln-,rvcd-,dmp=5,dhh=5,fjh-,sn=6,txpx=2,ctdbt=1,rzjkqp=7,bzpv-,gt=6,sb=8,qht=9,kpz=2,hvglb=8,mr=3,fq=5,jm=5,rzjkqp-,ndmt=6,bzj-,lg-,ks=1,npm-,vqbp=4,lcr-,km=9,tv=6,thncf=6,bxx-,vq-,rpn=6,dz=2,tcs-,mr-,kd-,spfc=8,npm=7,hrbj=1,cggz-,jjd=7,drs=6,vr-,rfdrk=4,kc-,pkbv-,zmlr=1,lqt-,hsb=1,xb=5,pljg=5,bq-,gxx=5,vrzjf=9,xhs-,xk-,vdf-,lg=6,xrb-,vc-,pbmldc=5,js=5,ld=4,sbt=4,gftx-,kpz-,khx=1,mr=9,lztd=7,xqv=8,cb-,sbx=6,qpf-,vgln-,xcq=9,jf=4,zs=2,cv-,vqc-,vgln=3,bmnlf-,nsxz-,vttk-,jx=1,tnfx=9,zv-,fdfc-,rc-,lhks=4,zlcmgc-,grfxxs-,hrbj=4,vqt=8,ts=5,hd-,tq=8,bg-,mf-,pcnzf-,sh-,trzx-,xb=4,rc=8,bzj-,pkg=8,hlg=5,qcnnzx-,ck-,mjz-,vth-,mgt-,cct=1,bkxf=8,rpn=1,mg-,fjg=3,vlv-,zngsp=8,ksn-,hnf-,dbh=7,pxn=5,hsb=8,mq-,jsv=7,ccf=1,ts=8,kz-,xgr=5,xbx=5,sqd-,fpg=8,lvs=5,smtd-,zs=3,dsdm-,nrc-,jtz=8,jxj=3,sv=3,mlcn=9,psfnx-,kpqvtc=9,rsn=4,zdl-,lztd=4,vnk=2,dmp-,sscn-,zj-,dd-,zdl-,smtd-,tj=3,ggm=6,ff=2,zzd-,pfjml=7,chpn-,mjjk=4,spm=7,sfp=6,xbx-,dbffb-,sh=9,hnf-,pmz-,rzjkqp-,hb=8,bj-,hgp-,txkh-,znjg=2,vqfz-,vgln=2,zzd-,crb-,vqt=3,ssmflk-,bqpp=4,xt-,dbffb-,bhfh-,hsb-,rvcd-,sbt-,txpx-,jtz-,cb-,dp-,mvmqfm=3,ddxn-,msbfzl-,xgk-,jpc=5,phsl-,dbffb-,zcjvl=4,tvm-,pv=2,sfp-,nnn-,jmthd=2,qcnnzx=3,xnmq-,tgqp-,fzm=3,jpc=2,cnn-,jhhqj-,mvmqfm-,rtj-,km-,lk=6,slzd-,chpn-,xb-,tpnmp=9,vkz-,lqt-,vf-,gbsp-,cmpc-,xc-,pkg=5,tz-,dzt-,mvmqfm-,dvz-,lhks-,npd=6,lfg=7,bgh-,vqbp=5,grlkl-,lvx=4,mgpp=1,znb=6,zf=4,lfl-,cr=2,dbffb=3,jzxp=2,mhh=2,gftx=7,lfg-,gkn-,xb=5,djmlb-,qln=8,zmlr-,dkz=6,grlkl-,rt-,zcjvl-,vblpd-,lztd-,lfg=2,gxg=6,bj=8,zs=9,ssd-,lcr-,tqx-,ncjb-,kmr-,trg=4,kmm-,cjk-,tq=7,qqp-,scbpb=1,rc-,xzt=1,ftz-,sjb=2,rknz=4,gbsp=4,qrn=3,dhh-,mph=1,pjfk-,grfxxs-,xfn=3,bq=6,kd=3,vjzt-,vgln-,rv-,lcr-,blfx=4,gzrz-,kmm-,hj=8,pvv-,khn-,jfz-,gr-,gr-,dhh=9,ps=3,vblpd=9,sqd=3,hz=7,mp-,lxg=1,bnlpjk=3,jjd-,txpx=7,fx=9,nkx-,bg-,rvcd=4,sr=6,qz=3,vdf=9,ld-,nsxz=1,zdtz-,dzn-,hb-,vjzt-,nfgp-,cmbv=6,pljg-,sqd=1,ssd-,fzm-,qv=8,tn-,cct=8,cnn=2,vkh-,zl=8,xcq-,ppq-,scb=5,pbk=6,jmrz-,xgr-,kpjqgm-,nglvx=5,qht-,fnln-,cl-,kkc=9,kpfr-,xtl=9,dsg-,xrb-,zdm-,mmn=5,tz-,gh-,vkn-,vkqx-,gkn-,qxkrd=7,rt=7,rh=3,bc-,nzq-,mtx=8,jc-,kfp-,dkms-,thnmq-,jhhqj=6,vhx=2,lqfv-,kc-,vqzhc-,bzj-,fmkjj=5,ql-,fdfc-,kftx-,ktj-,bgh=2,cqzt-,rtj=2,vkh=2,dfz=6,xstdx=9,npd-,hf=8,jhhqj=1,snpgsm-,xrb-,hm=5,bx=1,ql=2,djmlb=7,xcq=6,xbx=4,kl=9,dk-,sh=7,ctf-,sqjgc-,thnmq=7,lhks=9,xdfz-,tk-,pt-,vgslz=7,dtv=5,sbt=9,kv=1,drs=3,db=8,lqf=6,xhd-,qln-,ckb=2,kpn-,qvlzn-,fb-,xcq=3,vqc=2,ct=4,dtck=5,vgslz=9,shn-,rv-,cr=3,tpnmp=1,cct-,zj=8,bnhz=4,psfnx-,nnn=8,kl=8,ps=5,ng=6,cnr-,snpgsm-,dnkf=9,znb-,bgkjq=1,pjfk-,pl=9,dtt-,sqd-,hgp=7,gs-,qrn=8,dvz=4,kftx=7,ggqq-,cl-,cr=9,jsv-,vjzt-,pxvxlh-,kqh=1,tqx-,lvx=9,mf-,rpn=2,bpq=4,km=4,vnk=6,cqzt=9,bxx=8,tn-,pgd=8,dp=7,thncf=8,zdtz-,vgslz=5,cnr=7,nkx-,hdxvhr=6,tj=6,xnmq-,qf=4,lq-,vnk=7,rpn=4,zd=8,rxv-,lln-,sbt=6,mhh-,rz=5,dtt=9,gxx=7,pnp=2,lqt-,xdfz=7,lhks-,gflrmd=8,kpqvtc=3,tj-,pvv-,xcq-,xfn-,kpjqgm-,kc=6,zngsp=1,vpxv-,xfn=1,qqp-,tj=2,xrb-,zsx=4,lfl-,vqc-,nq=9,lrpx=7,rpn-,phsl=7,chpn-,vq=6,dd-,ff=1,lztd-,lq-,vx-,lg=3,jmthd=7,vnhfc-,jgmnxd=6,fpg=3,xs-,ggqq-,msbfzl=7,znjg-,xt=8,xzt=9,ff=3,mmn-,dmp=7,hrbj-,vth-,dkz-,nsxz-,bnhz-,bq=2,hm-,dm=7,trzx-,xmxf=1,npm=7,qqp-,fnv-,bzpv-,hnf-,ztk=4,hz-,bx-,srp=4,sqd-,zk=5,gbsp-,fsz-,vlv=6,hpl=5,jgmnxd-,rtj=9,lh-,qhvz-,vkn-,blfx=6,sc-,rqx-,tslfp=6,zdm-,fsz-,mm=5,lc=5,ghm=6,ktj-,kl=6,dph=6,ztk-,cb=2,kz-,psfnx-,mq=4,vqc-,dph=9,zj-,js-,znb-,vqbp=9,dx=2,dtck-,gt-,br=6,zrq-,bqpp=5,ckb=6,ng=9,zdm-,jc-,lvs-,ql=9,zf-,sc=2,dph=9,bz-,vbz-,khn=6,kmr-,drs=7,kx-,vlv-,pljg=6,vpxv=6,fsz=5,vqbp-,tcs=5,qz=9,xp=2,xp=7,kx-,ssd-,bz-,vs=5,mgpp=8,rnsbt=1,hdxvhr=4,rz=9,nq-,ktj-,pv-,cmpc=5,psfnx-,pqf=9,tv=4,jpc-,jfjbj-,vps=6,bszd-,jx-,xhs=2,cfnbp-,cb=6,nfgp=8,mg-,fjh-,mtx-,vrc-,cr-,njvd-,lffv-,qqp=4,cr-,js-,jx-,pgd=9,qg-,vsj-,bnhz-,sjb=1,nglvx-,fkzq=9,qhvz-,nlcrm-,kmm=2,jzxp=2,zrs-,mtx=9,hnf-,lk=5,nq=2,rpgj=1,tkpb=7,zzx=7,pnp-,rgh=1,qhvz-,zpc=1,pmz-,nhsvv=5,zqr=6,cggz-,lhks=3,bpq-,tfd=7,jm=4,kpjqgm=9,qxj=8,pv=8,pmz=2,jf=2,gxx-,jf-,mktlhp=1,lrpx=2,lqf-,scbjp=3,fdl=7,khn-,ddxn=7,dzn=6,chpn=5,vpxv-,kl=8,sqd-,vnk=9,vbz-,cqzt=9,lc=4,nhsvv=7,ph-,bz-,xzt=7,cqr=8,spfc=3,vsh=9,bbsk-,khn=1,bl-,lffv=3,pl=8,zdl=7,qg=2,vkz-,qht=9,xhd-,blfx=5,vbmk=5,npd-,zv-,bpqv=2,tvm=6,xqv-,zv=8,dbffb-,trg-,cqbvs=2,vqbp=4,kpfr-,ql-,cggz-,kpfr-,sbt-,plp=2,fsz=3,ct=1,zcjvl=6,rpgj-,nfgp-,zqr=4,zn-,mq-,ps=8,rtj=4,kpqvtc-,ndmt=3,plvd-,xv-,rt-,fb-,psg=8,sxlh-,nhsvv=4,pkbv-,vrzjf=7,dzn=7,mmn-,jfjbj-,vnkmzj=6,dp-,rh-,cv-,dzn-,lg-,rpgj=1,dph-,ctdbt=3,cfnbp-,gxx=8,hj=3,xnmq=4,lc=5,bb=9,zdl-,zzd=9,hzlzn=9,dz=9,rz=9,bzj-,xb=4,lrpx-,vlv-,dph=1,cqbvs-,ghm-,pcnzf=2,vr-,cct-,mph=2,nsxz-,ssd=2,hfrdk-,psfnx=9,rc-,pbk-,znb-,zmlr=1,dk-,dkz=3,rqg=3,mv-,zv=9,sscn-,bszd=1,xhs-,dzt-,mgpp=3,dnkf=6,tnfx=9,drs-,spfc=3,dbsf-,sr-,lfg-,bg=2,gbkt=7,jxj-,tv-,fjh=9,fdfc=5,gs-,vbz=1,dbsf=9,zdtz=6,fgmpc=2,njvd-,hfrdk-,sh=8,scbjp-,zn-,msbfzl-,px-,spfc=6,vdf=2,vc-,vlv=2,cqq-,vhx=1,hl=3,vkqx-,fx=7,gct-,vrc-,hpl=8,zm=1,ktj-,xmxf-,rqg=7,zm=8,cqq-,zlcmgc-,kkcd-,dtt-,jmrz-,gf-,xzl-,pcnzf-,tslfp-,pxn=2,ccs=5,lmlx-,cct-,vgln=4,xt=3,gxg-,vq-,dz-,vqc-,bgh=6,zbgdxg-,ctdbt-,mg=6,fb=1,xbx=1,xv=2,lvs-,kd=9,slzd=2,xb=3,mvmqfm-,kv-,jfz-,jc=8,mgpp-,shn-,kpn-,scb=9,txpx=5,zf-,vhx-,rnxt-,pxn-,mg-,gftx=6,fsz-,xnmq-,bz=4,nfgp-,gkn=7,bnhz-,qpm=1,vhl=5,pm=1,spm-,xfn=8,xf=9,vqbp-,trg=1,pkg-,lrpx=4,mf=7,rpn=7,vqbp-,vdf=8,zz=5,tslfp-,dz=1,fjg-,cb-,zqr=3,clg-,js=2,xjpbxm-,fnln=4,pgd=7,hzlzn=6,qrn=4,khn-,psfnx=7,grfxxs=8,lvx=4,spm-,zl=6,grfxxs-,trg=1,lmlx=2,rsn-,rb-,cnn-,zdl=1,mmn=8,rr-,scbjp-,zk=2,xrm-,lc-,pkbv-,ss-,qhvz-,fq-,bnlpjk-,kkc=8,fpg=7,tgqp-,jzxp=8,rm=2,plvd-,lfg=5,jmrz=9,vk=7,spsx=2,spfc=5,plp-,cfnbp=6,jzxp-,fjh=3,xjpbxm=4,br-,nrc-,sn=3,rc-,lfl-,plt-,np=5,bgg-,xf=4,vlv-,vrc=5,cct=5,vps-,xzl=9,nnn-,pvv=9,dmp-,sf-,hm-,vtp=7,cqr=7,kv-,rnsbt-,qcm-,dvz=1,dbffb-,dbh=4,bzj=9,ctdbt-,tnp-,ksn-,dmp-,qz-,lxg=6,dtck=9,lvx-,bfz=6,xgk=7,qpm-,ggqq=2,grfxxs=3,msbfzl=1,xqfrg-,nlcrm=5,hzlzn-,rfdrk-,xhs=8,xnmq-,pbk=9,jsv=9,zk=8,dtck-,jtz=2,nhsvv=6,ddxn-,ks-,tcs=1,jsv-,xb=1,ff=1,scbjp-,mjz=7,pbmldc-,tcs-,xhs-,plt=8,zs-,xbx=6,bxx-,qcnnzx-,dkz-,dvz=2,rh=4,mhh=7,djmlb=7,bnlpjk=8,jgmnxd=9,pzd-,lffv=2,xqfrg-,cb-,tzjln-,bfz=1,fnh=8,xf-,cqbvs-,lqfv-,ld-,jtz-,nj=8,cjk-,dsdm=9,thnmq=2,ck=8,bpqv=4,rgh-,mf-,sqjgc=8,rzjkqp-,dvmm=8,zthrd=2,mtx-,cqzt=6,gct-,spfc=7,trzx-,hlg-,rqx-,lffv=5,vf-,bqpp-,nhsvv=8,kpfr=2,dfz-,cnn-,gkn-,hb=2,vnk-,px=2,hxd-,zthrd-,xv-,jzxp-,vkn=7,cxq-,ccf-,xfn-,lxmkfx=5,pljg-,lqfv=5,rfdrk=9,khn=5,cnr-,vr=9,kd-,ssd=5,mmsz=7,fnh-,mf=8,lvs=3,vgslz-,pfjml=7,dtck=8,dph-,gk=4,ntg-,lpd=2,fnv=1,mnphn-,xzbz=1,zd=8,gf=1,tr-,lpd=9,vjzt-,ss=7,qnd-,db=2,vz-,lxg-,khn=3,vkqx-,fjg-,zrs-,tnp-,rc=9,fdfc=4,tqx=1,scbjp-,nbtq=6,kmqjt-,jc=9,txpx-,pr-,vps-,zv-,vnhfc-,jmthd-,blfx=1,vqt=4,spfc-,tzjln-,cfnbp-,zf-,ndmt=4,xqfrg=2,cmbv=4,mtx-,ktj=5,nh=1,mm=6,xv=5,ng-,bfz=2,zj-,pt=6,njvd-,qcnnzx-,qgm=8,fjh-,zqr=9,tn-,zz-,mvmqfm=9,gt=3,vgslz=4,px-,fnh=7,njvd=8,jtsdd=2,rzjkqp-,np-,ph=5,zqr=6,cb=6,sxlh-,pfjml=2,dmp-,lxmkfx=2,kpqvtc=4,mvmqfm=1,rknz=8,zcjvl-,tq=1,nnn-,vc-,zdl-,ndmt-,dtt-,mf=4,qcnnzx-,zzx-,pkg=6,xfn-,rnsbt=8,rgh-,vp=2,vpk=1,zz=2,mkj-,mr-,lln-,dm-,cfnbp-,sbx=9,dsdm=1,kpqvtc-,zzx-,bqpp=9,lqf-,cqr-,mlcn-,spm=1,dhh=6,js=4,pg=1,vbmk=3,vqc-,ftz=4,zxt-,zz-,xtl=6,pr=9,cnr=8,rqx=4,bszd=3,rl=6,phl=4,dvmm=2,drs-,bnhz=4,cggz=7,nhsvv-,cnr-,bgg=4,tr=1,pjfk=8,fq-,kmm=2,jjd=9,dbsf-,sxlh-,xzt-,mjjk-,pfjml=8,lmlx-,xtsd-,ftz-,nq-,kd=3,tk=2,vth-,nrc=4,vqbp-,grfxxs=1,ssmflk-,mmsz=6,lh-,td=2,vc-,qht=1,ccs=3,fpg-,ff-,ppq=2,cl-,ff=9,gk=1,zzd-,mv-,pqf-,vq-,vtp=1,thncf-,gt=7,ksn-,bnhz=8,xmxf-,ktj-,cnr-,ctdbt-,cggz-,vps=8,ff=1,jhhqj-,hd-,dphx=3,zk-,bg-,pkg-,gh-,nl=4,dtv=1,ph=5,xk=4,sbt-,sjb=4,tslfp-,kftx-,gxg-,mjz=9,bzpv-,dvmm-,zlcmgc-,mvmqfm-,jmrz-,sf=3,zz=4,vsh-,kfp=9,cggz=4,pm=4,nlcrm-,pg=9,xhd-,spsx=9,xmxf=8,bbsk-,pr-,qhvz-,vqfz=7,dp=5,ndmt-,nlcrm-,mgt=8,gflrmd-,vkn-,jsv-,qrn=7,gk-,rc=9,qvlzn=2,xtsd-,xzl=8,vdf-,fb-,mr-,vrc=2,qpx-,bmnlf-,scbjp-,vpk=5,vjsg=3,rvcd=7,tk=2,xstdx=9,tcs-,zqr-,kpfr-,rz-,vgln-,dvmm-,lqfv=8,bszd=3,nglvx=9,lq=5,dnkf-,sfp=3,pxn-,blfx=6,zzd-,sbx-,dfz-,fq=2,qqp-,rtj-,sb-,nbtq=2,bb-,zpc=6,tfd-,zl-,scb=4,nfgp-,kftx-,zn=8,rh=3,fzm-,qvlzn=3,ctp-,qrn-,ztk-,pmz-,rh-,vpxv-,lvx-,cq-,jmrz=8,sqd=2,kftx-,ppq=7,dvz=3,vblpd-,jgmnxd-,gxx=6,vnk=5,ntg-,sjb=3,dkms=3,bgh-,zsx-,xrm=8,pkbv=7,vttk=7,lxg=5,jm=9,vqbp-,kfp-,hzlzn=5,hl=4,trg=9,lq=7,ksn-,mmsz=5,px=2,lcr=4,td-,hfrdk-,rnsbt-,qln=3,dvmm=6,gftx=6,ppq-,xbx=8,pvv=8,xcq-,tzjln-,tdl=8,vf=9,sxlh=9,bgh=5,bqpp-,zxt-,xs=5,kmm-,ps=5,ctdbt-,hd=4,md=7,xzl=5,jfz-,tzjln=9,gpg=5,lmlx=2,phsl=2,jx=3,lfl=4,kpfr-,db=9,fdl-,rm=3,bqpp=7,mp-,xv-,bpq-,pg=1,nlcrm-,xk-,mq-,lk=7,hrbj=1,hj=1,ss=8,hnf-,xqfrg-,tnfx=9,znb=8,kl-,lqf-,dsdm-,khn-,cct=4,bzj-,spsx-,lc=6,jfz=4,plp-,fb=1,bgkjq=2,pvv-,br-,cfnbp=5,sqjgc-,sv=5,mmsz-,dd-,lrpx=5,mgt-,hdxvhr=1,dsg=6,zz-,gkn-,fjg=7,px=4,lfg=7,jfjbj-,ghbr=4,ftz=1,lffv-,pjfk-,spfc-,mlcn-,vth-,qxkrd-,ctdbt-,qpx=5,gqsr-,sscn=7,ghbr-,vqbp=8,bgg-,zf=2,qxj=8,bpqv=6,hlg-,tn-,lfl-,bzj-,tk=4,ql-,gxx=6,gqsr-,mtx=1,rqg=7,zzx-,lcr-,bx=7,nl-,msbfzl-,bhfh-,sxlh=7,nsxz=8,bgg-,pfjml=4,pv-,qv-,kx=4,dp=5,gxg-,qpx=9,mjz=5,zxt-,tv=4,kx-,xtsd=7,txpx=4,hdxvhr=7,pzd=2,vqc=4,xjpbxm=3,dm-,rvcd-,ps-,hbmt=9,nsxz=5,cct-,xhs=3,cqr-,fm=3,pzd=5,qxkrd-,rz=8,pgd-,txpx-,xk-,hnf=7,hlg-,lcr-,nqcj=9,pgd-,spm=3,zk=5,jxj=9,vth-,srp-,sbx-,cs=1,vpk-,srp=7,sqjgc=7,ks=1,dvmm-,zqr=6,gbkt=5,rl=1,phl-,mg=9,rm=2,dsdm-,rz=2,pgd-,gf-,bxx-,nq=3,vtp=6,sbt=9,kpqvtc-,qcm-,td-,bnhz=3,rknz=6,mjjk=6,qf=9,thncf=5,bb-,vjsg-,cnn=6,jxj=6,vkn-,gbsp=3,kpfr=1,lqfv=6,kv-,gt=1,fq=4,kl=4,rtj-,vth-,pfjml-,hbmt-,vr=1,xmxf-,sc=1,cgp-,jx=1,chpn-,xcq-,vttk-,vpk=1,mnphn-,mtx-,gxx=1,cgp=2,qvlzn=4,sr-,ct-,rh=3,rzjkqp=2,ld=9,pljg=6,vlv-,rgh-,spfc-,jm=8,fkzq=4,xmxf-,gp-,chpn=8,xtl-,cggz-,xnmq=3,rnxt=1,znb-,nfgp-,ts-,bqpp-,fnln=3,pljg=5,hz-,kfp=4,cq-,bgkjq=9,vs-,zngsp=7,jsv=3,dbsf-,kx=4,ph-,xb-,dsg=6,sn-,jmrz=4,dzt=7,mnphn-,vk-,kkc-,kpn-,vblpd=6,vqbp-,dmp=6,hsb=1,zlcmgc-,vbmk-,dp-,tk=3,drs=8,pl=4,sbx-,jhl=9,rknz=5,qcm-,mp=8,vqfz=9,ctdbt-,qp=2,vsh=8,nkx=8,qxkrd=6,bpqv=9,cxq=3,nbtq=1,sxlh=4,fnv=5,vnkmzj-,gpg-,nh=8,zd=1,rzjkqp=6,qpx-,bzj=2,fkzq-,lxg-,bb-,lffv-,xs=3,rzjkqp-,bpqv-,bz=3,zn=5,br-,zthrd=5,kc=2,ss=2,kf-,bb-,bz=6,hb-,dtck=4,sxlh=9,mmsz-,znb-,mhh=3,nhsvv-,ntg=1,bqpp=2,thncf-,tnfx=8,nglvx=1,bzj=3,gcbtgm-,cmbv-,ctp-,pg-,zpc-,rpn=1,gn-,ncjb=8,kmr=3,tz-,bnhz-,dvz=2,mvmqfm=5,jc-,plt=6,cl=8,vc-,qgm=2,ss=5,jc-,cggz=4,chpn-,qln-,nh=8,pljg-,km-,pgd=7,tqx-,xhd=2,gmrrx=3,bhfh=6,bx=3,msbfzl=2,rm=6,qcnnzx=9,xgk=6,gct=4,kpjqgm-,jx-,tgqp=4,sv=2,xf-,ks=9,pzd=6,zrs=3,md-,thnmq-,zzd-,xnmq=3,rc=2,kmm=9,rz-,jc-,rsn-,dphx-,bqpp=7,vs=2,kkc-,sqd-,tdl=9,zbgdxg-,qgm-,gmrrx=7,cb=4,bx-,lvx=8,slzd=1,fzm=5,cs-,xs=5,xxj-,xhd-,qcm=2,xxj=6,vz=8,cqzt=2,fdfc-,vx=6,rpn-,gxx-,nhsvv=6,mktlhp-,vjzt=4,lztd=7,zs=7,mv=2,nlcrm-,tkpb=9,sxlh-,pv-,qxj-,xcq=8,xgk-,scbpb=3,dk=9,mjjk=3,lztd-,njvd=8,znjg=5,lxmkfx=5,snpgsm-,ph-,pr=1,rpgj=4,nzq=2,kc=2,rsn-,dzfqlb=6,gf-,qcm=1,tcs-,mm=2,fjh=6,vp=6,sl-,kfp=4,tslfp=9,hl=1,fzm-,lmlx=2,bnhz-,sfp-,pcnzf-,gct-,jc-,xk-,zpc=2,jxj=6,tzjln-,bqpp=5,pjfk-,cct=5,qgm=8,sxlh=7,lhks-,mmn-,rpn-,vp-,qnd=9,mjz=2,td-,gct=6,sfp-,cb-,tnb-,zf-,chpn-,pkg-,gs-,mmn=2,mnphn=9,pxvxlh-,fm-,vdf=2,vnhfc-,njvd=1,npd-,cl-,vhx-,kz-,hl=8,bpqv=7,ks-,pl=6,txkh-,mjz-,bl=1,cqzt-,bbsk=7,ghm=3,tpj=4,tv=2,qf=7,tpj=7,ztk-,mq=2,jtz-,vkn=4,cs-,xdfz-,ccf-,lxg=9,ctdbt=1,trzx-,bnhz=6,gf-,kjrc-,vr=1,msbfzl=2,vblpd=6,qxj=7,cjk-,nj=4,cjk-,sjb-,ng=4,rnsbt=4,rtj-,frgf-,tqx-,sbx=9,kmqjt=8,rfdrk=8,ctdbt=5,mldgtn=8,rfdrk=7,pnp-,phsl=3,vc-,hz-,rzjkqp=9,njvd-,qqp=7,pjfk=1,sscn=2,pkbv-,lfl-,vp=5,kr=4,ccf-,plp=8,lpd=5,mph-,rh=6,zl-,lc=2,jhhqj=5,xf=6,snpgsm-,lq-,sxlh=6,vsj-,trg=1,cl=1,vjsg-,gp-,tn-,mlcn=8,gmrrx=5,qfb-,fx-,tzjln-,tfd=2,bg-,bkxf-,qpm=3,npd-,ssmflk-,fpg-,rknz-,zngsp=1,nlcrm=4,pt-,vkz-,mq=7,mldgtn=2,gr=7,fr-,xzt-,mkj-,jmrz=5,lxmkfx-,pxvxlh=3,vbz-,nq-,sbt=8,rtj=8,ktj=3,bpq-,mq-,lqf=9,vp=7,vz=1,bb-,ndmt=4,vdf=7,mr-,fnh-,rzjkqp=7,sxlh-,bszd=1,vgslz=5,zd=2,tpnmp=6,fr=2,bgg-,lk=1,qpf-,bpq-,xt-,ps=7,pxvxlh=1,fkzq=7,mgpp-,cqzt=6,bbsk-,clg=7,ztk-,bl-,vjzt=4,tk-,plvd-,jsv-,zd=7,dm-,gxg=8,lxg=2,bgkjq-,np=4,frgf-,lh-,ssmflk-,bc-,vjsg=9,rfdrk-,jx-,pbk=7,npm=5,kjrc-,jfz=8,bz-,bfz=3,ld=6,hj=4,msbfzl=4,clg=2,vhx-,vq=1,hb=4,mmsz-,sbx-,xnmq-,cqbvs=8,hgp=5,qlf-,nfgp-,ztk=8,vnkmzj-,cmbv=9,jjd-,rz-,bl-,jfjbj=7,hxd-,tfd=6,sh-,frgf-,ctp-,sjb=7,vsh=6,br=7,vz=9,px-,lrpx-,fzm=3,tslfp=9,znfd=5,bpqv=2,mktlhp=2,hm=9,znfd-,xgk-,xdfz=7,gxx=8,vpxv=3,qfb-,qnd=1,gpg=1,txpx=4,zmlr=4,zk-,plt=5,dx-,qfb-,vqbp=2,hzlzn=3,bfz-,mgpp-,xf=1,fgmpc-,rl=9,fjg-,qpf-,tslfp-,qvlzn=3,gbsp-,scbjp=1,mktlhp-,jhl-,fdl-,jmrz=1,rc=8,dmp-,clg=2,xtl-,cqbvs-,qfb=9,lpd-,kmr=3,xh-,lh=4,spfc-,cnr=1,lqfv-,scb=7,kd-,rqx-,tpnmp=5,pjfk-,qz-,gf=7,tz=9,kjrc=5,td-,bl=3,dmp-,ccs=9,rzjkqp=5,npm-,kpn-,pljg=6,dsg-,bg-,mhh-,mvmqfm=4,xzl-,plp=7,tk=6,zn=7,njvd=6,lqfv=7,rzjkqp-,kmqjt=5,cv-,mf=7,gxx=3,pxvxlh=4,nbtq-,vqzhc=7,bpqv=2,sl=6,ccf=5,slzd-,ssmflk-,sf=3,vhx=8,mmsz-,chpn-,fzm=2,xtsd-,tvm=1,zk=9,hm=2,cv=1,lq=2,dzfqlb-,kmm-,rxv=5,txpsv-,nrc=7,ps-,gflrmd-,tv=6,gs=6,znfd-,kc=3,zzx=8,vc-,tvm-,rtj-,kqh-,dsg=9,fx=3,hm-,rsn-,lpd=1,zjvd-,nq=6,hgp=3,vqbp=5,jzxp=5,pxn-,js=4,zthrd=3,nj=3,znb-,ncjb-,kc-,kmr=6,lcr-,vs-,kpfr=3,jgmnxd=9,bhfh-,rv=4,ks=3,hf=9,bgg=4,fsz-,hf-,np-,zzd=8,pgd=6,kmqjt-,znb-,fb-,qlf-,zj=1,pvv-,nzq-,ng-,lmlx-,zdm=4,hvglb=9,nhsvv-,kjrc=4,hvglb=1,ctp-,qlf-,lfg-,jhhqj-,txpsv-,bxx=3,ppq=2,vhx=7,scb-,lq-,sscn=9,pljg-,gxg=2,cv=7,zm=6,hdxvhr=4,hpl-,mkj=5,zl=7,zcjvl-,xp=3,bszd-,lxmkfx=5,rgh=7,lztd-,xv=1,cjb-,rqx-,gflrmd=5,lqfv=1,fdfc=4,vblpd=6,tslfp=5,rnsbt-,tpnmp-,cmbv=6,cq=5,gk=2,zdtz=8,lhks=2,gr=2,cxq-,xzbz=7,bpqv-,cmbv=3,cqq-,bgg=2,znb=3,vkn=7,gxx-,pv-,vf=7,gbsp-,qp=6,grfxxs=2,vqc=6,lh-,msbfzl-,dfz-,fgmpc-,kmqjt=3,qrn-,pfjml-,pm-,qpf-,qg=8,vlv=4,cq=6,lq=1,tnfx=2,cgp-,lq-,vgln=7,bgh=3,ggm-,jtsdd=1,xk=2,rqx=5,zv-,mhh=2,bpq=6,fdfc=6,lmlx=7,hdxvhr=5,jgmnxd-,lvx-,vrzjf-,dtck=5,ph-,rqg=5,gf=9,nqcj-,vqzhc-,bj-,fjg-,qln-,jpc-,vnk=1,sbt-,qf=8,qrn=8,gpg-,nglvx-,dbsf-,hz=1,jfjbj-,hbmt=1,sqd=1,cl=7,bzj-,jtz-,vblpd=7,znfd=1,gpg-,drs=3,gn=7,mvmqfm-,cr=3,tpj-,ck=3,qp-,zrs-,tpj-,gcbtgm-,zv=8,lfg=8,jxj-,ftz-,zz-,fdfc-,plvd=9,spm-,fkzq-,xcq-,sqd=4,dph-,rsn=9,vjzt-,xt-,dsdm=4,qlf=3,qht=2,js-,sv-,slzd=9,spsx-,zk=1,rv-,jxj-,scb-,db-,ff=2,cq=9,nh-,fzm=1,cs-,rzjkqp=4,vx-,qp-,spm=9,tnb-,bgg-,phsl=2,lg=5,gmrrx=3,pfjml=1,psfnx-,dbsf=3,jmrz-,lztd-,vrzjf-,vkqx=8,mv-,sqd-,hrbj=8,tgqp-,sbt=6,lhks=2,vp-,mv=6,snpgsm=9,xf=3,tnb-,hl=5,vqbp=7,zd=1,fm-,hbmt=7,scb=1,txpsv=3,jf=6,rc=3,vs=7,qpx=1,sf=3,zbgdxg-,xv=7,xv-,hgp=3,nfgp-,qht=8,vblpd-,ql=9,kmr-,rtj=2,lpd-,rfdrk-,rxv=5,sbx-,rfdrk-,pgd=8,kpjqgm-,vjsg-,cgp-,fnln-,dvz=3,pbk-,mvmqfm-,lmlx-,ndmt=2,trzx=7,tnfx-,xgr-,zlcmgc=5,plvd=8,gs=5,sv=2,dk=9,vnkmzj-,vkn=3,xbx=9,kl-,psfnx=8,ppq-,vq=3,xzl-,mldgtn-,plvd=7,gcbtgm=1,sscn-,drs-,bnhz=2,lhks-,sf-,pbk-,sxlh=3,vkn=2,vqfz=9,gct=1,cmbv-,qgm=5,lg=6,tnp=6,jsv=7,mmn-,xnmq=3,vx-,fkzq=1,vqbp-,gbsp-,txpx=9,jtz-,hdxvhr=8,xk=4,xxj=3,vrc-,fjh-,pxn-,gbsp=8,hl=5,jm-,zn-,chpn-,nbtq=7,kqh-,chpn-,nnn-,hfrdk-,mp-,bgh-,ns-,vsj=3,fgmpc=1,kd-,dtck-,nh=4,frgf=3,cq-,pt-,vttk-,px-,smtd=7,ctf=8,zn=4,kl-,jjd=4,bzj=7,cnn-,mtx-,pzd=1,ssmflk=4,jgmnxd-,ccf=4,jmthd-,vnhfc=7,srp-,qxj=7,chpn-,nh=2,kkcd-,dm-,mmsz=4,fnln-,lq=6,kkc=1,bq-,nl=3,mmn-,jfz-,zf=4,sl=3,sqd=7,dtt=3,ql-,jmthd-,ndmt-,vqc=2,jjd=2,jpc=4,vrc=9,kpn-,gs-,mjz-,ftz=7,bq=5,cv-,xv=2,mktlhp=9,cmbv-,mtx=6,ggqq=7,fq-,rknz=3,xxj-,zngsp=3,rsn=5,xrb=3,vrc-,fb-,phsl-,plp-,pl=9,cr-,vpxv-,lk=4,khx-,rpgj=2,kd=7,md-,dvz-,rl-,dkz=9,fsz=8,vq-,pm-,xf=7,tv-,tk-,dz-,qqp-,bg=7,xb-,nfgp=9,ng=7,kfp=2,mp-,vbz-,lxg=5,xqv=1,npd-,pvv-,xzl-,slzd-,dmp-,jzxp-,dphx-,txpsv=7,mldgtn-,ql=2,xgk-,mv=7,rl=7,kjrc=6,rl-,jfz-,ctdbt-,tdl-,fq=6,lcr=6,hzlzn-,qpx-,nbtq-,td-,mr=8,zngsp=4,vps-,ssmflk-,djmlb=9,pxn=7,cqq-,nlcrm-,rt-,vgln=9,gn=2,nsxz-,cfnbp=2,xrb=8,ts-,bfz-,lh=1 \ No newline at end of file diff --git a/aoc2023/src/day16/input.txt b/aoc2023/src/day16/input.txt deleted file mode 100644 index 1778ec0..0000000 --- a/aoc2023/src/day16/input.txt +++ /dev/null @@ -1,110 +0,0 @@ -\..../.....-...|........\.|...........-..........-......|....././..........\..|............................... -.../..|.......-............\...........-\|...............\.....|......-...........................-./.......|. -......../.-.-....\...\-.......................................|..........-.......\.....-.........|......|..... -....\........./..............|.............-..|.|.\.|.-......\........./..................|..........\........ -...|/.|..........................-........................|............|-..|...../\................./.../..... -...|.|.......\...................|/..........\\....|....................-..................|.................. -..................\-|..........|.\......|........\.....\...........................-..............\.....\..... -........./.-./..............................-..........|......|................/.............-......./...|./.. -....-...\..........-......\...............-/.....................\.........-\.........|..........|.....|...... -./............\......./..-......................../.|.-.|........................./.|......|...\.......-.-.... -...........././.............|..........-....../..............-.....\.-......-.............................-..\ -......................\.|.\..................-./.....\....|......................|..\...|..................... -...|.-...|.............../..//....-\...-.-...........|......-....\.|-.............\....-.|.............\...... -......|.....\-....\.............|../..|......\....--................/....|..../|../.....-........../.......... -.............|.........-.../.|....................\........................................................... -....\...\.-..-.....|.|...........-........./..../..........-.-....|....-..............-....|........|....../.. -..........|..............\..|........../..........................|.....|\.-...........-......\....../........ -...../.......|..../........-........|./\..\..\.\././.\.............--.......-..................\./......-..... -....................//...-..........-.............|................/............./.\....../...........-....... -.\-...|-/.......-........-...-...............\../...........................\/.....\...........\........|..... -.............................\-......|......\../......-..........|...........|.........-.....\..|......-...... -./................/........-.......|..\..../|............................|...........|.-.|.................... -.\.....|...............-\............|.................|...././.-...\..........|...........-...|...-.....\.... -.......-..../.........\|.....................|....../..|/./|..........|.......|-.......\\./......-............ -.....................\|......../-.............\...|...........................\.....\.\....................... -...|\.././...................|..................-.../\.-............\.-.........../............../.....\...... -.......\..................\..|../...........................\....\....\..../...\..\\./.-....................|. -...............|./...\..........|...|....\........./......\...\.............\.\-......|......-...-........|..| -.........-...........................-...-............\...\.\.................................-....|./........ -.-.|............-.....................-.................\..../......\....\....\....................|.......-.. -.....\.|......|..../................|......|.....-...\|../................./...................//............. -.|.........\..../......-........-............--...................../........|.......\.....\..........-....... -../.....|.|............-.................|\.....|....||...-..-....|/......................|.|-..-..........||. -...-............|.-.............-.....................\.|.............\.\............\...|........|...../.\... -\...........................\.|................................................/.|......-.......\........../.. -...................|....|.......|.-.............-..-\...-...............................|..................../ -/...../.....\............../...........|..|./...-.../...............................\........../|.........\... -..-.......|.........../.......|......../.......\.............../..........-|.................................. -...\.\........\............|......................\........|...\.............................................. -../..........--........|....-..............\..\.............\...................-........./...../..-.......... -..................|.................../\..-..|..................\....././..|......-.................../....... --...\.............\..-..-.................../...|.|.........|../|./............/...../............../......... -.|\............................-....................|......./..............................|..-|...|.\........ --........../...-....-.......................|...\........|.......\................../......................... -........................................................././.|..|.........\................/|........\........ --.....\.........................|...........|..||..|......................................\...\....../.......| -....\...|........\.........................//...........|........-.........\..........\-.....\................ -....|........|.........../........../....\........|......-../..............|...............|.........../...... -......\................-...........|.................\...../........|................-........................ -...............|......|...\............\............/.../.......-.-../............................\......|.... -............-........-..../.......................\..-./.....\...................................-\.....|..... -...|...../......\...........\......\...\......./...........-../..|......................../...|............... -...........................-...../....-.....//................../..........-.......|.................|..-..... -................-...\.............\.../.../.\../...|.........-.\...../.................\.............../\...\. -.....-..................../......................................-...-............/...........|...-..........| -.........-..........\.\................-..\............................|...................-........./........ -...............-....../.....\...|.........\.../\.......-......|............\-.................|...-..........\ -.....\/......../../|......\......|.....--............|....../........-.../....-...-........................... -..../....\....|.............../..|........./............-.........................................../......... -.........../.................|....-..........................................................................\ -...-.....-./....................\..../.\\.................-.....-....|..\.....-....|.......................... -.....-..\..........|....|...........|.|....................................\.......-.../.../-.-........-.../.. -............../......./...-.......-..|.......-|..........\..............-.-....|..............\............... --........../.........|.......................\....-........../.........\.................../.............-.... -.......-....\.....\..................\..../-.//.....-\..........|........................../....|.....\....... -..-./............./|..|........|...\\.........\...|......|.....\.........../.\......................\........\ -...../|.......\............../....................|.............-...........|......|....../.........../....-.. -.............-...-...|..\-.........................................|.......-.........|.........\.............. -......|......|............/.........................|.............\.............../....................|..-... -../../|\......|..//....../......................................................./-...................../..... -.....-........-................-.............|.-./..............|...-...../......................../..../..... -...........\......|.............|....|.|.........../........|....................\.\......./..\.\..|.......... -.\................/....................-..............................|...........\....\.......-....../.../... -...............|................-.....................................-..................\...............\.... -..........|\..................../............................./...............-.....-....-..|................\ -.................\.\...........................................-../......\.....-...............|...\.......... -..|....\............................................./.........|...-\.........-...\..|..........\............. -..................................|...........-....-./-.\.-..................-............................./.. -....................................\-.....\\...../..................-............-........../........-....\.. -...........\......./...../|\..../-....|........|.|-.....-....|.....||.....|...........\..........\....|.-..... -...\..........\./..............-........................././..........\././...-...........-............-...../ -\........\.....-..............................\................../.............-........................\..\.. -.........../.\...............-.\...-.....\............\....\......--.....\...................................\ -............\...............\.........\\....\....|......\.......-.................|...|....\.....\...\........ -.....|.....-............../............-............../.............../...................-......\...........- -..........................-...|......\.....\.......\........-................./..........-......../.../...-/.. -../........|....\........|..../...........|...-..|..........\............\..../........-................|.\... -..........-............./........................................-.......\.|/......./.................\.../.-. -......................\.........................../.../...../../.......|...................|............|..... -..............\..........-/........|/................................\...........................-............ -........\....\....../.......|.-........\........-..\.................................|.....\-................. -........\......|.\.................-..-.../.............\..................|.../.-.............-/............. -.|/.............-.\.........................|...|./........-...........\../...............\./.......-......\.. -..................-....|.....................-........|/.................\.........../..-.............../..\.. -......-......-.........../......................-......./...../.../.|........\.../....../............\.....|.. -...|../..................-.................\.....................\............-...........|.....|.|.........-| -..............................-...........|..-/.................|................................../.......... -.../......../.............-./.............|...../......./...|...........\..............-..........-....|..-./. -/..\...|...........|...........................|/................../......./......................\.....\..... -..|.........-........|..|......-...................\.........|...........................-.................... -../...-.....-.............../...|\...\.......|.................|.\.........-...................-\.........-./. -../..............................|.......|..............\...\......................\..........|............... -............/....|../....../.............-............................./......./.................\............ -/.....\...../.........../.............../...-.../\.....|.....|............|....|..........\.....\..../........ -....\....-/.........................|............-...........\........\...\.....\\................\........-/. -.....................-..-\...............././...........................\....-./......|..............\..-..... -................./........|.......-.-....................\.-.||...-.......\./.|./.....|...-.../......./....... -........-..-...../.......\.........................\.....././.\.../..|...../.................................. -.............|...............--.........../.|\/.....\.........................|..|.....................-...... -..........-...|.......\/...................|....../.-...-...|....................\..../.-...../..../..-....... \ No newline at end of file diff --git a/aoc2023/src/day17/input.txt b/aoc2023/src/day17/input.txt deleted file mode 100644 index 04d0721..0000000 --- a/aoc2023/src/day17/input.txt +++ /dev/null @@ -1,141 +0,0 @@ -111143231245512453233532231135242346643223434366453543664553534426223663625563233556655232522464453223446255523366641115221525545241115541324 -431121345255453245532513346436354562424226665435625542452543534236556535432235356366222264336444256255334564563564226352335454152333342425531 -211555234333213145543413562433332533444634432342622623343343455746676435745474465524463464332524462636562533446346254251543254415111115352424 -341511535443122253134546264233423566232562433526456565542774357646735536654673474477533643232255236632236625425666662645545552141115242422515 -341111243411143233254353542425566625642433362644332467546476655667755374563574564666444577323426235362444224643634223545235541134121215423153 -531254335432123321511666236453536252626542365563233477476436375343677375447543535337476464737335222455333555262365434346341345121543421555545 -352535514521514111243342542545234362225656644366655563365373766737565463557476566764463743673533232534423432654354532444434614515232111523231 -534444213321253145553225546453244552566243427573456456543553566474735356663557433377547454546773337365265654362565366242546625513555231514252 -323313551435534512622225362562263434433225636635664736767633535463645434646666633445555455344676663776363645426625355443264235342154354541551 -313344353445542136265245463656643456254675743474744556363764667356336334435764645543447755363434777747562523535253545462232443334115422245343 -411545355323353632256366354543644422255357345374367446347554465766367637555443653555375756736537575763375343236242446526465226534224412555332 -533131433141412662643523326542423234474465776365555735754776645376734774677646654667473753373634447774446536352326333564334433362123135411531 -512414542555163643526524526245525623733466554345447435364657576457576376563367444354735757756765547755635545232536536433564236626315454145425 -222144425355524633235543562342566454344764575745367646565574575636547773457356646456657637437547666745757773472565443652346664466335313555551 -425225555322663532264234233335563664747574765576347743444637647676737567333767356736363333744734647436646746476523664454633653546545122514442 -433432345135556643645433433353363575647663645376464776466577573557373364773353335555374554433464633534445576673653325425446624523422432115313 -331554441535436542646663554246654555367643355653745635636355676647567487764456667645455574637564434547453345476356634245324255236624234322155 -412551332642256525656556644673435575337544534765547457535765745875846744677848864748453556456475334367766655534547433255523464263563352324545 -443534155643554356242335334673736746664536333346353556577644664845484655676855576588488476647745635435535753465654355645265546422335564424541 -325113645335432555665355233555675344354467477467666744857886746774544874557756677867665777554343734443655754353756656432453432656526442431243 -435351452355523445664565747636637443475667333666457866648755647865645478687666547687547448455776553463657435344656637472443446523245236631254 -412143553424345325232454645555356743366537373758877467577647678654487674848784877787468644447756553677573465574353736576542332442522366564144 -431363252452364445356544557475337767655336557686768756474568654665465464884556855744876886546758447344734334637754557774553226363256242242651 -554256445333463534225356746736736743336763377746888675584476754588545785578747858657577787754874858864355637365443444365474546636352256656323 -425454462356554263636434334444466455765534574648745458464655777887654744458644875776467657545757755464375636667554445537457232633344456335351 -322453463334656455234546433475533746373377467777858787845857478676767845586566768464584884875677444488543533447537536376643424666645653654426 -432326546526255522353556547373665657473456445577748547665675868677547547785865454645454554774845748574876563377757437467553465624365666252336 -553526552222562635473565556657553364657548886884887656456865855666787554686645654858555566768654648745854464677634735446546732553642463664265 -664326265443345443746744735336634755665574447844755544578487644586454874856778477455686458576478578547554484667445666574665353445232224622335 -236532234245355276756476464355554554458887564887776455877644448447886868476548867546888764476866776558545547574453545467364757744326636223642 -632462455662552665443463346747745775658756746854568758745668675885889865596789855788675844755468675857556885843566367733464537666322366344223 -266666434363243576375767356665666877464755765578746575486748669688797696588866786698768646566485868545858886667435664777734463342523665555235 -443556525665656734577633335664448556655454678484454777545656666779696855688567966656964658877444685858567566545447466467443774467266252546652 -624455255224344733376335533753476658646544876564465586875955788776686876776867985856986576866568765548476654745754674775433435367623356456444 -262555462622446474437456377453868684444668468464476655987967866795876695585957798678969855857886488747765845586764675544766563666356435634332 -665624325625734563547365736536784556858567746767459867695988595777767769865658796865788965789678867667866557578674565534645577447432435556524 -333523334637534573776476636576557488766777764446687995988678876956786678875775556987997957898658565656667557575548444354657655335367544525324 -456466363423657475573575435664578688587455448765669969578697785989658879886787878568857799889578874487556756544556443334633446546536443652664 -222244452574756367757776634686545577855644575756668896567598879867997957659885755779787658957586658876446588645487856454536434636745444545545 -232636356457556536556365668745444488466474574987976697975796699686796855588666956768955895958675868455454458767755755376733663633374544556332 -332332622576377345736534646747554866678866788995569677878555787567775875779596796566579977885676656586446765845854744577365444454343372523366 -555664262474645377674577674647867577478684688557896658796655557657577765775656667969779597586797679965585456677454664556665646757366673426233 -356255527734373436547644678865777848585857997655679875687575776559878678858588867877856678657789789868858554664844468646634734744447367636636 -552366365773455644547347758554786677468775568778877797978995878598699565857955898857969565997667878757554646688678786867367546447363537255433 -234653475644663446373734847876648467867886788586887579567587799999866977967976866766799575567556897979657666685654448547664746376435346465542 -252443375445565446367565867885578575654575966679888956889877897698678786876967769856955595897679599865976488848485865647735437666446344436434 -243525237374773653566366744564464668675869676798668978579668697966669789967787689668989669967785588576658588654658478886653675446657763525423 -562444777554463656777574486488654468576556956965987679867969676669986697889777667866868559769957958968686745774765777755575354754635335676536 -264352744565456657667484888447847467598998779789689696779679766996889786776689888878996777588978666887977978585445584446655336663435446574336 -463534645476375645554684778858555786676885996565697889699888899766678879678998899799887896956567777585869788585685647484757343657653773563665 -432465634665435774545666885858845649887698657968779889688769778768696698686869888977969768555995578977568967465456666555784577674443567347654 -242537757554573534676885677655767659695959757675998797988778888678799667799866896879686987675557878578887699478448447774787663353534367754553 -524667356567664767788788786864867869567798856688887886998887976986998886686668767699776989677585877675977659745685675557555653563563733554246 -532356647776353655754665854564646466686577777586598677698878676969777768866697689778788897669979897577868888984565784456765466355374543736764 -353546744764545745656756586777658658697565657989587766697669768667797768668968778798869989666758756995866965667844757477467833575363475573665 -442363475553366336665585574875754767958869656955766897687769989798869789778887686787686676968967586798766967684684745655757855634753733757752 -663437377653673574868444644474888676596699778559668686678686966786679878697997667998668668679678775566688577957447548475848855753337766577654 -245676667643445744476584585486889868856958677757876786686678679686978889886998888999768868796876597559998755655765588557465675655453656434644 -623664534334746636755767677464487956975558566697767697896988988986888777988897867888887969667768658555778858798767857588765444464637377577456 -524435763477353755875846887578787556979997766576796978767969777889977779899788987687978888689776897659786666856748548645756774746364367376634 -252436533765577358467857485675499965699779976868778779896779686779787987877779796678799678678799677596566778799678664684774444556767456547463 -425573537536465645667877564778768875796687778666777866678866888788777997889889889698977679979667875765578958585784474754466784455733343567735 -464333643643774675646874764777889966956967776676876886799688979878878778878789889986887997868689965998667998898957544586884784556635746634644 -467634766367575447675444786885857898689798675679979967666789787898898779879998789996988787997866879557586768558865648756677648655653544434374 -343746456733555668756758766647798687656987598967767769799669777877779899879877997887788976797777786786686766555655656558576555537543536634463 -263736676335556377774776475777798578965889979797877679967769989798889889987997789799998866789986877778878665966865757677884784553474773577764 -436645433455747776854766587748677575858967897999889678767678779989877889979988889997876876767987687678559995869785556756658784533445456534364 -457333367374443446568888867558968899899755558786887989669778779799789777789789877797786878778769899759866986568874778856465478635343345547556 -653357365735437544784775777648977566996787598779866797796688878798979898888979997778969666688778767767968675685577484857666844654735677553374 -454465553543537354546566487886759755777886869789896779676678877997997979878787978898769888779699678677788756997994554564684577435566665665735 -645535635654537444576458775888989557678676898899899898879778777789998888888977799999876678677779969957869757677687688584466575575557463464574 -633446673336665785786556488457569967799656676688968667697989989999998988788999877898996869789799978989768599766594875486774675764367566653437 -365763544374353687774557856867888579757898686969676796986689878797978997979877977999799987889766778769957988885866744454548487444537747767446 -333636755475457746774775664885768689998686877878978686686998999898899898989888977798768997778786769665986876885655876855777745646444453543776 -257347366566556755557468747484878859559855958778679799887889887788997889779777777788977698668899997569799999896694654866676457747663766657374 -554664657744433558785576687586858965859676988969678669886988889998798779998998788898786688897788767697957657558568566856664764845635356777743 -437633353637643445485457545565887558959759869766978967769977997997797798898879888977777798877668879696986885979575658888674584733534445447645 -336773576566535576644748576564988895569965579877899669988897888788798979797979977997979687769689677585858655985875545766888476856753753775643 -447375436754766447678756554674875656886886797769889788989967878998987877797878888989798769897678795698885689978868887845785867854575334643545 -533774774334356485744844667888778799675896759697877967979877898888989779897787899796896869887878898896679879895846474568577556875467653377434 -526636647656677568754477458676456866878885686668989676699978797889989979777797888789689887999898765668796877998956878884644777453766767665573 -345776437655574577556784475666467865969688769689967879888899898787979977987989787869968767788798958965676985977558887786764565334636477577473 -462757555367744435776477675765555899756777555889787899796876786789979777799889999696968778897788975596967795797586768684467474533464663474556 -345335634367663334474446748788558686895898855886668998998877799988977999887787778696789977998687999799569767555576845465465587544735477547753 -352747473367547538454567786546446657585759898569988897798777688798687998988998969877688876686969789765886558558776665847888845556554375745442 -525653575563555774887556547555749798556987599756797867867689696667867966889689666776786689697968958698665787755764558846666855575573747534345 -326455665753733645448778877747875897567979969887898786977796667699978788696867677769979676996787658598765877957588784457484655764635365737434 -532467433765464655746576865775654596585859789697688867896988996977778898788669689878989769996769668658678679877544854467444775477564333674625 -335554544454457654447885484444866987787685589987766897996999779767969767678887676699997786677685669976768778997556877487444743767346766557456 -266536345774333444487446686656585797768599588595599776878699669999678767879886989896988777767965756768698777544665754856565457554453756356643 -342464363736646775655856546787754867795697769679858888796987869768899868797687697688878796789895765557688688985446585777584467466735366644363 -523237467646754656468466848574555667758689797896579777988779889977689668778896667696797676667785685755986597446645664545687753465567453354335 -323327756536477335755748475656576547887995887876985968976869696887779786776968996997867687879755599699567657755468776866885345435457655334225 -465352366554666376467456666544455546795667757799755996999978667976979767898877678768888758985566989859967794845764466677657453363336553674426 -555533553546357444765675856588657557878975766698966577867797677999988677666767968786787775798789997676876774564485686564547464355336356456634 -653433475335664753473446858774765764677666859687678977599767969767797969796977878998788799568865956576659644565846455864883376645435553556424 -565624333374353367374378478655648748848595599966858998869589999997986786677787987969558898667876766679797576857877576788664777573454645755524 -243444333564746346366668646545674655784777777596558976769676598668789667999889879766877787867797657978894768877458688756477776644647454654652 -323463545665546577475645558786854468657757569879597766865559566996799678799877666898856695986577997898647684875678677855454775654547364424426 -444345546665673463753634768476874774848587769865579789687878579978877559996587865859858789976885557859466565567686888557474764574774566345235 -463425647566774574744333678886747686865457799567576858589676667856577976986668978996686799577977886677544648876855645547444577633464636553523 -525644666573444644576675468484675575784565795957567577578956797786787796869877557895769667588675596744747766568788564546563666667763666225253 -434232334334645346434743378448585848667846577675678568857556598869978967698795766555887989895656586784848574867846777433673543643643345636354 -536245546237555656364544635858554588856888685777969769765876857989857999778897756695765797865577585676877858667674464376646773636576723344236 -563432433237543453765335674454676568784657684785679757868567556875775895977656667977959855575979944776757767668868556665477773367647645655455 -345662256237647446335653655474847777777457855878575955988896666669879768598869889768857697696556455457585858777745474363376763373677455666452 -236454255236363665663365567376855855468585857577666775857999657659868999786755866568579898667756458558654648847578447446356744353365436332433 -236656544552467767567677567448876458465585754786588555756756796978557899579678886778787886777445766574578586476464377437556375345344545245426 -662325463226374566436333654547585676688868454444785599797776865969998677956976597586658865956686866776584577484553367473533563564746536336443 -645354345344537355546665737533754846786764888785557644675696956878965869566966978688779976776866567854756646786873676654337473445524622236626 -233264254235366666736346437575764477565768544667785545578799879958588586787879788669995878745846576785646778646655574347764645533625345535563 -432433242246235746473543477553563665775475774755874587665558965695658699586897695998868747444878848474546545784334377573356763473236426645266 -243532622522636755753437535657447776765475565645845684687588454765579856966696756574665577485786546848546585774336373636476643336442355233566 -424366665443243666567346434354557355888674468846456668847655454648844584447647747545884765768788475648857654773677576566637647654653266642645 -355566553355543667644766357475663334576684855756856557474768868686854785488845464657775755684775878866867574456477457355345767654443322524456 -252226355555353432774774553656764464764766745687577646548754448444648855656476668476765857676478568588685475446655746336375532535436262246655 -124465325536222534633336746764356663557877585584548488677874547445477547864878867577864565556567445544564676546443567455743324244266455364265 -444646453636346242245546654333667346776464746865665867844474866746647865554675844644775465548557754474556375345735665646364353323526625624235 -412366252635624522466346354375765373635554864778855885678875757885648677787758444554675487467557768856743453437365564667776246434655322223525 -155662534242554334526573346673376775437747347484686774778445745547688488858484846876546748684767564753677657367475756735363326425522532252354 -111522322233565252443476336555573575463347454766857665787786477486485455577564475876657687767758584655535533636353747434645522266562523335624 -542422536235454325532645676434563747567556555574458874646877684645545674855674568675844866465685676443356746355677555555666633655263646665442 -211224626424363426643222663657775566775366634363464577678645547647756688757557454788857466767766573445336567467663545634344363446256343542532 -524353365435226556556322567464746534674443466757337368478575456847447776487687768855745786663475737763753364433366577364223462546556234245115 -351231443465264363362336352643774674346454366777533445747664448478677857785488484766644654674764373357565474433475733244565424353322356533151 -554223355636366655362352555655373675564737667663367637476378475656775876558465484467733734736556746773634646373557532336625245362343245314352 -415315224565323443623244633253477545773643635677437734464354663476745457476448456747555563574755374344343366743744432254533234544233652442452 -155321252324634365262226535534446766435373535475553354733776334766573455373756333733573667436757467643766753335642442322554323423224452212311 -554231145244425252354633334356244765663464645674467736446536735636374435547767747353673645457676564473344375654424643234566252323463342424331 -145124531215355646265623243325355765435544464565637674665536435365374465373674364755336673456445565567547775765322264364462642335223541214445 -245544533254142563235523522653435334444477535443567574737475663654776577746444777346766467745333753447653577332363336365532325543231234334451 -251214311244114545554462446423624626676363375354453335776637374775465676343453547674544736356577777464764476336235452444566243644313151353524 -251353112524455635524245344436546325534376365643536356555677555675344355745373347466346575334347466467665642344265334364324562252124525455152 -454211332313421263343625436544345634543275377555633667545444553367537367674333374344744754673653556564665546434666555266442463652431455221541 -115242354251513424524244565345324542344352356476443353667354646467467637463545337377445445357757536673532523352342633456335464421222514545231 -234551552324343221533222663526446236435634463664377555475474346673535434445744753657775466665644563245222634266653436345463353354354144115325 -325412113545232114263462446356336532466543425623356673677337363765363633556375433575757664356773345344465345555625252465465324322523535532422 -533444522324551243515564322652262342524325235554667764445446656633535736363765574763563335776423624463325533625243355442245443123534323312511 -334123531454531311142443565534562563644542436563665634765457377675756443636777543663643633363324553544365344443234345365224343523341515544422 -425513541335541443232314324425223643632666545263242622235765443475754557635364446664563322663626426463256624543536634556155552222222255121512 -443141524454451431355221565364643463663664635262463364522342652467643777543675336434624463452333536354565653344664465611411152424331223125543 \ No newline at end of file diff --git a/aoc2023/src/day18/input.txt b/aoc2023/src/day18/input.txt deleted file mode 100644 index 0e3c331..0000000 --- a/aoc2023/src/day18/input.txt +++ /dev/null @@ -1,676 +0,0 @@ -L 7 (#1dc5f0) -U 6 (#4497e3) -L 3 (#3b21c0) -U 3 (#3d8523) -L 9 (#58e7b2) -U 8 (#35d213) -L 10 (#329390) -D 3 (#1302b3) -R 7 (#07f802) -D 8 (#38fbd3) -L 7 (#6d0e72) -D 6 (#2c2493) -L 5 (#38b7d0) -U 6 (#2ab7b3) -L 2 (#0ce560) -U 6 (#2ab7b1) -L 2 (#2f6940) -U 2 (#2a5a83) -L 3 (#477150) -D 11 (#0baea3) -L 4 (#3899c0) -D 3 (#34a803) -L 5 (#55c0d0) -U 9 (#328483) -L 2 (#460290) -U 5 (#48cfd3) -L 4 (#1e3150) -U 5 (#3b7ea3) -L 7 (#2c0a10) -U 11 (#51d803) -L 4 (#39fe80) -U 3 (#51d801) -R 10 (#2938e0) -U 2 (#1c17f3) -R 4 (#0df9a0) -U 3 (#579691) -L 8 (#354a50) -U 4 (#3d0131) -L 6 (#1029b0) -U 7 (#0c19b3) -L 3 (#5f48c0) -U 2 (#0c19b1) -L 4 (#15ff10) -D 9 (#0f08b1) -L 5 (#1c8160) -U 9 (#573b71) -L 6 (#2d58e0) -U 3 (#479121) -L 4 (#1c7bb0) -U 8 (#34d583) -L 10 (#416f10) -D 5 (#34d581) -L 7 (#59af90) -U 5 (#24a821) -L 9 (#196ca2) -U 6 (#1f89d3) -L 4 (#6b4812) -U 2 (#1f89d1) -L 6 (#32e5a2) -U 8 (#5eb4c1) -R 7 (#5bffe0) -U 10 (#3f8051) -R 8 (#29ac30) -U 4 (#495a21) -R 7 (#3b4e10) -U 2 (#52d3a1) -R 7 (#1e27d0) -U 4 (#09ad83) -R 8 (#385530) -U 4 (#218943) -R 3 (#0d8de0) -U 3 (#218941) -R 3 (#3ac220) -U 12 (#09ad81) -R 3 (#08aa80) -U 5 (#33c7b3) -R 2 (#37a350) -U 3 (#6808c3) -R 11 (#355310) -U 3 (#6808c1) -R 3 (#14fbe0) -U 6 (#47b293) -R 6 (#28ab80) -U 3 (#37d873) -R 4 (#607702) -U 2 (#3d77a3) -R 4 (#18a432) -U 3 (#26ee23) -R 10 (#0ba7e0) -U 3 (#0b2863) -R 7 (#604a60) -U 7 (#477053) -R 2 (#0a1210) -U 4 (#2f7e63) -R 9 (#0316e0) -D 5 (#1372d3) -R 10 (#382a30) -D 3 (#2da293) -R 3 (#100920) -D 7 (#5267e3) -R 2 (#66c240) -D 4 (#1c94a3) -L 5 (#2d7770) -U 5 (#2c0061) -L 7 (#4181c2) -D 5 (#1f97c1) -L 3 (#4181c0) -D 4 (#2b79b1) -R 9 (#1bcaf0) -D 4 (#04de93) -R 2 (#010a22) -D 4 (#599823) -R 3 (#010a20) -U 6 (#189b23) -R 4 (#38f770) -U 9 (#452e51) -R 3 (#2551f0) -U 6 (#333c81) -R 6 (#0554d0) -U 5 (#411e13) -L 4 (#487840) -U 10 (#411e11) -R 4 (#2c69e0) -U 7 (#13c311) -L 6 (#164330) -U 4 (#7449a1) -R 10 (#467570) -U 5 (#47fcc1) -R 2 (#13e090) -U 5 (#2e45a3) -R 4 (#0f97a0) -U 9 (#129b03) -R 3 (#46c520) -D 9 (#11dcf3) -R 4 (#0d0e42) -D 4 (#05ca31) -R 4 (#56d742) -D 2 (#05ca33) -R 6 (#1e5ae2) -D 3 (#56bbb3) -R 9 (#1ce6b2) -D 5 (#039d83) -R 2 (#3f1c90) -D 4 (#198063) -L 11 (#3cf8a0) -D 7 (#198061) -L 3 (#2311e0) -D 4 (#401ab3) -L 7 (#46c522) -D 5 (#2d4703) -R 6 (#0f97a2) -D 7 (#053643) -R 6 (#603110) -D 12 (#2ab333) -R 2 (#25d970) -D 3 (#1956d3) -R 5 (#528eb0) -D 2 (#3a55e3) -R 5 (#1aa8d0) -U 5 (#29e981) -L 5 (#133d80) -U 8 (#559581) -R 5 (#133d82) -U 4 (#298e61) -R 3 (#0ed762) -D 5 (#481221) -R 4 (#0ed760) -D 9 (#3a5a61) -R 4 (#265580) -D 3 (#241031) -R 3 (#2bacb0) -D 10 (#4e8481) -R 4 (#4f2bc0) -D 10 (#47fcc3) -L 3 (#15d6f0) -D 9 (#6a0e71) -L 5 (#3cc390) -D 4 (#2fa353) -L 4 (#272140) -U 5 (#029653) -L 3 (#428820) -U 8 (#23f923) -L 4 (#036c82) -D 4 (#3315f3) -L 7 (#663ce2) -D 2 (#09be53) -L 8 (#075c00) -D 5 (#552f63) -L 5 (#662630) -D 2 (#3e3fb1) -L 9 (#543310) -D 5 (#2b6db3) -R 8 (#06d960) -D 2 (#2b6db1) -R 3 (#570160) -D 6 (#441a91) -R 6 (#2f24e2) -D 11 (#2ca451) -R 7 (#5700c0) -D 5 (#36e6f1) -R 3 (#5700c2) -D 8 (#374141) -R 5 (#2b1072) -U 11 (#489e23) -R 5 (#456682) -D 4 (#522e63) -R 3 (#127202) -D 7 (#65dc21) -R 8 (#489d40) -D 3 (#686b21) -L 4 (#107ca2) -D 7 (#2271a3) -R 4 (#148da2) -D 3 (#34bf71) -R 2 (#70b522) -D 9 (#34bf73) -R 8 (#49a172) -D 6 (#2271a1) -R 3 (#138232) -U 4 (#3e4511) -R 4 (#0bb2b0) -U 8 (#2958d1) -R 5 (#1df330) -U 3 (#23af43) -L 5 (#4bbaa0) -U 7 (#23af41) -L 4 (#125270) -U 9 (#41ec91) -R 2 (#222ff0) -U 5 (#2936d1) -R 8 (#2e2310) -D 5 (#2e05a1) -R 3 (#0ae0c0) -D 11 (#074021) -R 7 (#52f6e0) -U 2 (#074023) -R 3 (#590720) -U 6 (#469f01) -R 3 (#34f792) -U 7 (#002dd1) -R 4 (#409522) -D 3 (#002dd3) -R 6 (#149f72) -D 5 (#1cc8f1) -R 5 (#095222) -D 7 (#3eab71) -R 3 (#236082) -D 11 (#3b3d71) -R 2 (#6e2530) -D 3 (#0887f1) -L 6 (#1795d0) -U 7 (#21f2d3) -L 6 (#194240) -D 7 (#2e0d03) -L 3 (#605a50) -D 4 (#257243) -L 8 (#0a5380) -D 7 (#2b70c3) -L 4 (#428fd0) -D 8 (#5b1513) -L 6 (#1bf3f0) -D 3 (#341241) -L 3 (#1f7ea0) -D 8 (#2eda01) -R 6 (#527980) -D 7 (#62ec43) -R 10 (#156e00) -D 5 (#53ce33) -R 4 (#3a5f20) -D 3 (#2f3bb3) -R 6 (#5dacd0) -U 4 (#47f0e1) -R 6 (#538c70) -U 4 (#32a283) -R 8 (#27c140) -D 9 (#198283) -R 6 (#1b5ba0) -U 9 (#15de53) -R 4 (#037d60) -U 7 (#373ac3) -R 7 (#282640) -U 7 (#33c993) -R 6 (#2f6bc0) -U 4 (#236a23) -R 5 (#4977b0) -D 4 (#076301) -R 6 (#56dc60) -U 3 (#30afb1) -R 2 (#720272) -U 8 (#2b0fc1) -R 7 (#19ac60) -U 7 (#07ff61) -R 3 (#585610) -U 2 (#4969b1) -R 7 (#56dc62) -U 5 (#029821) -R 9 (#60a4e0) -U 8 (#1688a3) -L 4 (#19a5b0) -U 3 (#20db03) -L 7 (#1a7950) -U 6 (#1ab903) -L 8 (#463660) -U 2 (#449963) -L 3 (#11ec80) -D 4 (#206da3) -L 8 (#1057b0) -D 6 (#17ffa1) -L 8 (#6cda70) -D 4 (#26df51) -L 3 (#001d70) -U 9 (#3e42f1) -L 5 (#55e962) -U 5 (#138341) -L 6 (#0c3e52) -U 9 (#4ae8f1) -R 8 (#0ad032) -U 7 (#14e3b1) -R 4 (#5a3b70) -D 7 (#1dad81) -R 11 (#3d8e92) -U 6 (#441b61) -L 6 (#20de92) -U 10 (#55efb1) -L 6 (#1d72c2) -U 10 (#1469a1) -L 6 (#21f4b0) -U 4 (#49b921) -L 2 (#560f10) -U 10 (#49b923) -L 3 (#03dc20) -D 6 (#249e01) -L 7 (#6859d0) -D 4 (#0947e1) -L 3 (#5d3fd2) -D 11 (#2c3801) -L 6 (#26cab2) -D 4 (#1f5b51) -R 13 (#0fcc92) -D 3 (#638131) -L 7 (#404362) -D 2 (#6cc863) -L 6 (#1d8d62) -D 4 (#161423) -L 6 (#595612) -U 7 (#09d071) -L 4 (#10a5d0) -U 4 (#633011) -L 8 (#3cddf0) -U 3 (#3a8471) -L 7 (#407050) -U 7 (#00b9a1) -L 3 (#2537e0) -U 2 (#00b9a3) -L 5 (#3a9220) -U 5 (#212a31) -L 7 (#572a62) -U 5 (#0b0ea3) -L 4 (#52f702) -U 6 (#0b0ea1) -R 6 (#077262) -U 9 (#116db1) -R 7 (#688352) -U 8 (#37c5e3) -R 7 (#23b522) -U 3 (#37c5e1) -R 6 (#4a4aa2) -U 9 (#57bf21) -R 4 (#60ae60) -U 3 (#06dc81) -R 3 (#47d900) -D 4 (#587561) -R 6 (#2940e0) -D 8 (#1268d1) -R 5 (#0ec482) -D 6 (#38b6c1) -R 6 (#59c532) -D 8 (#2e4421) -R 6 (#0b8022) -U 5 (#410a61) -R 2 (#7409d0) -U 6 (#28e351) -R 8 (#15d2e0) -D 4 (#12ab01) -R 5 (#100f80) -D 6 (#44c953) -R 4 (#33eef0) -U 6 (#23c7d3) -R 5 (#4696e0) -U 4 (#222123) -R 9 (#26d070) -U 9 (#4cec13) -R 2 (#560af2) -U 6 (#5099a3) -L 11 (#4b4b52) -U 4 (#10b4e3) -L 8 (#40e6b0) -U 6 (#1c6173) -L 5 (#2e31e0) -D 6 (#3d8c01) -L 7 (#1cc6f0) -U 9 (#083731) -L 4 (#463da0) -U 8 (#1cb711) -R 8 (#0b4110) -U 8 (#2252b3) -R 10 (#60b900) -U 7 (#2252b1) -R 8 (#0ce680) -U 5 (#467f81) -R 9 (#0ad0b2) -U 2 (#359203) -R 9 (#67bc02) -U 9 (#359201) -R 4 (#0653e2) -D 3 (#281ca1) -R 9 (#1b8ee0) -D 6 (#0b3861) -L 8 (#336f02) -D 3 (#3201f1) -L 4 (#4a85a2) -D 7 (#111eb1) -L 9 (#1c9c90) -D 7 (#145011) -L 11 (#083be0) -D 2 (#516321) -L 6 (#083be2) -D 9 (#20bb21) -R 5 (#3d8030) -D 6 (#404031) -R 8 (#642420) -U 4 (#56cf61) -R 7 (#55c610) -D 4 (#20d1e1) -R 9 (#1b5e10) -D 9 (#1e85d1) -R 9 (#361f10) -D 3 (#3d69f1) -R 9 (#16da12) -D 6 (#2d6471) -R 5 (#5d9642) -D 3 (#4656f1) -R 6 (#44b540) -D 8 (#2b6131) -R 7 (#2ce630) -D 7 (#2b6133) -R 3 (#61b2a0) -D 4 (#4c2661) -R 4 (#3b7372) -D 8 (#01ed73) -R 5 (#4c3962) -D 3 (#01ed71) -R 4 (#4ba142) -U 9 (#4377f1) -R 3 (#1deb32) -U 6 (#3f3323) -R 3 (#22b722) -U 7 (#37bc13) -R 3 (#1918d2) -U 4 (#13c8b3) -R 5 (#1918d0) -D 12 (#3e4d83) -R 3 (#22b720) -D 5 (#0cefe3) -R 5 (#2bf9f2) -D 9 (#3122d3) -R 8 (#41a3e2) -D 10 (#3122d1) -R 8 (#0b6e02) -U 7 (#266641) -L 4 (#5a1cc2) -U 5 (#060d11) -R 4 (#32ff32) -U 7 (#446c91) -R 5 (#319c82) -D 3 (#446c93) -R 7 (#1bf562) -D 2 (#44af13) -R 6 (#6f3132) -D 6 (#312433) -L 5 (#489da0) -D 5 (#53a343) -L 8 (#489da2) -D 3 (#5a6673) -R 7 (#0f0f92) -D 6 (#01b8b3) -L 3 (#3c6b12) -D 5 (#725613) -L 10 (#114b12) -D 4 (#14ace3) -L 8 (#30d292) -D 9 (#1ebac3) -L 6 (#3c4292) -D 7 (#39e2a3) -L 2 (#1f3882) -D 4 (#658381) -L 3 (#0b0252) -D 8 (#699e71) -L 10 (#2b4ae2) -D 2 (#1ac903) -L 5 (#60cef2) -D 4 (#515ea3) -L 5 (#4d3790) -D 6 (#354183) -L 4 (#398170) -U 3 (#7163a3) -L 10 (#398172) -U 7 (#0608f3) -L 8 (#4d3792) -D 4 (#06c7a3) -L 7 (#5819c2) -D 5 (#17c3f1) -L 3 (#0c8892) -D 5 (#67f951) -R 6 (#3ff470) -D 12 (#397601) -R 6 (#3ff472) -D 4 (#4f6451) -L 9 (#665a22) -D 2 (#1705c1) -L 3 (#14df92) -D 7 (#4b40a1) -L 4 (#1fa1f2) -D 5 (#3b7231) -L 10 (#063e12) -D 7 (#2a8fb1) -L 4 (#6b71e2) -U 4 (#218101) -L 4 (#2e2f52) -U 4 (#221411) -L 5 (#200732) -U 5 (#0ac7e1) -L 9 (#50af62) -D 9 (#4b7c81) -L 3 (#50af60) -D 4 (#2b9d31) -L 13 (#4766d2) -D 5 (#25ef21) -R 3 (#119862) -D 2 (#517a31) -R 4 (#3e6072) -D 10 (#21cfa1) -R 6 (#4437f2) -U 12 (#30f031) -R 4 (#036652) -D 7 (#453c91) -R 5 (#05ea22) -D 10 (#2da1e1) -R 2 (#4da5a2) -D 2 (#2da1e3) -R 6 (#2bffc2) -D 9 (#453c93) -R 9 (#4ed2d2) -D 3 (#141b71) -R 9 (#3ecad2) -D 5 (#234873) -L 11 (#3c4982) -D 3 (#2ed113) -L 7 (#3c4980) -D 7 (#4a6553) -L 8 (#49bf02) -D 8 (#337011) -L 9 (#2eb772) -D 3 (#690ec1) -L 2 (#25f0a2) -D 7 (#62eeb3) -L 6 (#1ae012) -D 7 (#34e643) -R 6 (#382a72) -D 7 (#281183) -L 11 (#271932) -D 4 (#470d23) -L 9 (#4ca812) -D 4 (#6f1ea1) -L 7 (#4702f2) -D 8 (#34e641) -L 4 (#155c42) -D 10 (#62eeb1) -L 7 (#3a2422) -D 4 (#3f7ca3) -L 9 (#39b860) -U 4 (#5cf1c3) -L 13 (#39b862) -U 4 (#4751f3) -L 4 (#322dd2) -U 4 (#539531) -L 5 (#4171a2) -U 5 (#539533) -R 9 (#075042) -D 5 (#1e57d3) -R 7 (#5cc952) -U 5 (#0ac0d3) -R 6 (#1af522) -U 9 (#374273) -L 4 (#2992f2) -U 2 (#299893) -L 4 (#267bc2) -U 10 (#47af63) -L 3 (#282402) -U 4 (#06a063) -L 5 (#5cce72) -U 9 (#47fba3) -L 3 (#1168e2) -U 10 (#3b1071) -L 4 (#178c22) -U 3 (#42b971) -L 5 (#178c20) -U 8 (#1dca41) -R 9 (#442912) -U 8 (#5b9241) -L 3 (#1da682) -U 7 (#31ff23) -L 10 (#3cd732) -U 5 (#33bab3) -L 5 (#159fb2) -U 4 (#2e5d93) -L 7 (#5f9702) -U 4 (#5566e3) -L 4 (#0ba292) -U 8 (#07f963) -L 3 (#410a02) -U 3 (#6ace93) -L 5 (#0913a2) -U 2 (#21a553) -L 10 (#3d71a2) -D 6 (#25ff63) -L 5 (#5285b2) -D 8 (#3cfc73) -L 3 (#13aba2) -D 7 (#24a793) -L 4 (#29e4c2) -D 12 (#1dc4b3) -L 5 (#3cb102) -D 8 (#5b8433) -L 5 (#3cb100) -D 7 (#22d9f3) -L 7 (#6db9c2) -D 6 (#4cd683) -L 6 (#083f42) -U 11 (#09bbc3) -L 5 (#609002) -D 7 (#12b603) -L 7 (#041be2) -D 8 (#4f3823) -L 5 (#5a3412) -U 7 (#14de13) -L 6 (#036ee2) -U 5 (#442823) -L 7 (#6c5502) -U 3 (#2edcc3) -L 9 (#3b6b72) -U 8 (#321e73) -R 7 (#48e5a2) -U 6 (#2fbec3) -L 12 (#44ed12) -U 6 (#0c1893) -R 12 (#61a8e0) -U 4 (#073043) -R 4 (#0d47c0) -D 6 (#469b63) -R 2 (#047ae0) -D 10 (#39b7d3) -R 3 (#2492d0) -U 8 (#2026f3) -R 3 (#73fb40) -U 2 (#201333) -R 3 (#372f72) -U 2 (#2c6143) -R 10 (#615ea2) -U 4 (#355653) -R 7 (#3876d2) -U 9 (#080463) -L 8 (#3af4b2) -U 10 (#6840e3) -L 3 (#5472d2) -U 9 (#005683) \ No newline at end of file diff --git a/aoc2023/src/day19/input.txt b/aoc2023/src/day19/input.txt deleted file mode 100644 index 8fb7e78..0000000 --- a/aoc2023/src/day19/input.txt +++ /dev/null @@ -1,766 +0,0 @@ -xhs{m>3771:A,a>2552:R,A} -smp{a<3732:R,m>1999:R,x<925:R,R} -zkk{m<2240:R,a>3345:R,R} -nqz{x<2056:R,a<3165:R,m>1748:A,vx} -mm{x>486:A,m>3523:R,A} -bg{s>3338:A,kgm} -qf{x>537:gqx,bqz} -lv{s<2341:sc,s>2505:rtm,xqj} -bv{a>2574:rvm,ncd} -ssz{a<729:A,m<3390:ld,m<3772:A,R} -gm{a>3900:A,m>2508:R,x>744:R,A} -ts{m<642:R,m<843:gmm,s<325:gf,A} -rtm{x<2920:A,m>3132:R,R} -qgz{x>2082:hvx,a<1490:A,s<3742:R,kks} -kpf{m<2390:cm,ft} -ghn{a>2066:A,s<3291:R,a>2028:A,R} -mkx{s<975:R,s<1112:A,m>756:A,R} -tg{x<3668:A,x<3835:A,ftz} -chj{x>733:R,a>3064:R,qs} -ndl{x>2773:R,x<2370:R,R} -dsq{s>838:A,s>496:A,m<2191:R,R} -jl{m>1219:A,R} -chh{x<973:R,A} -fxv{x<2543:R,m>3368:A,s<3567:R,R} -qvl{m>1648:A,R} -fpb{a>1367:R,x>2441:R,a<1220:A,R} -tph{a<2677:tss,R} -cnc{s>1274:A,a<3947:R,A} -cz{m>2865:R,a<3514:rm,s>687:xsr,A} -zzq{x>76:A,A} -vp{x<162:A,R} -bth{x<1859:zmq,a>2455:hq,mb} -rm{x<1253:A,R} -ndq{s<390:R,x<2982:A,m>3468:R,R} -vdh{x>2464:bx,m>3276:fj,ffs} -bjc{a>3069:R,R} -sqk{m>3029:R,s>130:R,sln} -xl{x<2157:A,R} -xrs{s>3440:qgz,a<1479:qsv,xt} -dnt{x<538:qc,m<1343:jqh,x>645:fm,jvb} -pms{a>2603:R,A} -lf{x>390:A,s>1617:A,A} -dvm{s>1052:R,R} -mnc{x>2703:R,A} -rxt{a<595:A,R} -pb{s<3737:ngp,x>3125:A,dbk} -zr{a<2605:R,x<422:R,A} -pd{s>1915:xhs,zpl} -vm{a>2377:R,R} -in{x<1629:dv,nfq} -xdt{s<1791:fpb,chl} -gg{s<393:fd,x<2091:dg,tz} -xsr{s>1167:R,m>2006:A,a<3531:A,R} -qs{x<719:R,x>726:R,s>2919:A,R} -kgm{m>2140:R,s<3253:R,m>1246:A,A} -gvv{s<3124:flg,m>3004:jxl,x>2411:vf,hfg} -nv{m<3088:A,a>1588:R,x>3499:A,R} -lx{s<3277:R,a>2880:R,A} -cls{m>3314:gt,kpv} -ct{a>3320:R,a>3189:A,s<2328:R,R} -bqz{m<1572:rjv,x<437:R,s>1572:mzn,td} -qm{a<1975:A,s>623:R,A} -zx{m<3520:R,s>1981:R,a<2633:A,R} -hbk{a<1441:A,x<2151:R,x>2450:A,A} -zp{a>2928:A,R} -njc{x>225:R,a>3543:A,a>3524:A,A} -dt{s<467:R,a>3868:R,x<1448:A,R} -qlj{a<1744:A,s>1375:A,R} -ln{x<546:dk,x<1088:jm,s>996:sdr,grf} -zxc{x>1220:R,a<1570:R,a<1721:R,A} -hqv{x<1168:A,a<3325:cs,zkk} -cfx{m<1777:R,A} -tb{a>3324:A,a<3310:R,R} -fx{a>2975:R,x>2219:R,A} -rnm{m<3699:A,a>1555:R,R} -zpl{a>2213:R,m<3703:A,R} -zvm{s<3648:R,x>2112:R,s>3879:A,A} -gkt{x>1247:A,m>2344:A,m<1950:R,R} -qfz{x<37:A,A} -dq{a<2482:A,A} -gpj{m>2417:A,m>1980:A,tq} -khx{s>3504:R,a>633:A,s<3211:R,A} -kh{m>629:A,A} -zg{a<2645:mg,s<259:sqk,x<2942:gg,md} -sxj{m<1304:xlx,lh} -lh{m<1742:bb,x<2813:rh,m>2090:qhd,bv} -jxg{a>3806:A,R} -sg{a<3432:nn,m<1550:pp,m<3113:ps,js} -pck{m<1755:dmv,s>3255:hb,s>2954:lfz,ns} -xqj{x>2860:A,A} -hm{a<3006:R,A} -bbv{a>3355:rf,s<1113:hqv,m>1976:qzk,zxk} -rpd{s<3371:R,A} -jzc{s>1320:A,s>1117:R,s>948:R,R} -mjp{m<3107:db,x<3329:lsq,x>3386:jgq,R} -chl{x>3157:A,m>2688:zq,tf} -ffq{x<2660:hbk,s<2231:cvs,A} -pv{x>662:bc,m>2737:fn,scz} -rf{x>1195:A,x<1012:R,hp} -mg{s<320:mnc,ndq} -md{s<368:ks,a<2900:A,a>2968:A,hxd} -rb{s<976:R,A} -cvv{s<1568:R,s>2041:A,a>2529:R,R} -hvx{s>3628:A,m>1706:R,m>1033:R,R} -fhg{m>3499:R,a>2802:nm,R} -cm{a>793:gnt,s<342:vg,dl} -mzt{m<1547:R,A} -cf{s>3282:A,R} -vr{m>1574:zzp,cfl} -vbd{x<446:R,m<2633:R,A} -mdz{a>2230:A,A} -dck{s<2674:R,m>1804:A,m>1642:A,A} -dk{x>356:A,R} -sxr{m>1197:vq,qzn} -sl{a>3532:R,A} -rhf{x<592:A,m<3490:A,A} -hp{a<3393:A,a<3436:R,x<1078:A,R} -sln{m>2771:A,R} -hq{m>3351:A,x>1966:A,m<2756:R,R} -bm{m<2254:R,hpt} -vt{m<3667:R,x<1031:A,A} -dv{a<2349:npz,a>3297:tck,x<703:gq,lm} -ddj{m<1813:mfd,A} -fln{s>2720:A,R} -xft{a<198:A,a<267:R,m>3094:A,A} -xdr{s<2440:R,m<1370:jcs,a<1346:rrl,R} -hxc{s>3518:A,a>1208:R,x>3051:R,R} -bc{a>3542:zb,s>1446:sr,a<3492:pjm,cz} -lfz{a>3921:A,m>2651:A,s>3077:qj,A} -qmk{m>2209:A,R} -bt{m>3699:R,x<2709:R,m>3441:A,A} -cfn{x<203:R,x<238:R,x>260:R,R} -hbb{m>3171:R,R} -xz{a<1217:A,m<3348:R,R} -tz{a<2930:A,A} -cvj{x>3663:A,R} -kb{x<812:A,x<882:R,m>1354:R,R} -fgc{a<3044:A,m<3797:A,a>3181:R,A} -gz{a>2501:R,x>662:R,A} -gs{m>2349:pbh,xc} -cxt{m<648:A,R} -qr{s>3439:A,s<3200:A,s>3359:R,R} -mvk{x<310:A,A} -rfx{a<3471:pb,jrp} -df{a>2425:R,a>2173:A,m<2169:A,A} -lkv{x<1956:R,m>2601:jvg,zvm} -fgv{a>3335:R,a>2798:hck,pqd} -tn{a>3644:R,m>3271:R,R} -vhl{m>3441:pd,lt} -lg{x>214:xjz,jmz} -dkl{m>979:R,x>271:R,a<2808:A,R} -pdp{s>2793:R,A} -jjf{a>3211:R,A} -tv{s<2116:sx,xsq} -gnt{m>1411:R,x<2631:A,x>3267:A,R} -lnj{a>2864:R,A} -jd{x<275:cfn,s>860:jzc,mvk} -zzd{x<1338:A,a<3957:R,A} -xlx{m<789:jqs,dpd} -hql{s<2258:cb,x>815:knq,x>758:vlq,chj} -qsv{m<2600:A,cg} -bb{a>2571:rth,m>1465:A,x<3017:R,cp} -dz{a>2559:gs,qf} -ps{s>3207:R,gkt} -mf{x<611:R,A} -gp{m>2489:zdd,x>227:R,gnc} -hv{a<3335:R,a<3515:A,R} -klr{x<295:A,m>520:R,m>218:A,A} -zq{x>2372:A,R} -zf{a>1674:R,cn} -lm{x<1313:hgj,txn} -npz{s>1686:rt,kt} -qdh{a<2898:R,x>2218:R,A} -pz{x<2285:A,A} -hdf{m<2720:A,A} -bmc{x>3617:rcl,hsb} -zh{s<1038:A,a>2811:R,R} -zfz{x>2711:R,A} -sgr{a>3615:R,m>1350:jjj,a<3585:A,A} -qvk{s>2967:R,m>3342:A,A} -pqd{s<99:A,s<208:A,x<2116:R,R} -tbd{x>3755:A,a>441:R,A} -nn{x>1301:fln,pdp} -hxd{m>3170:R,m<2811:R,x<3367:R,R} -fk{x>3114:nsg,dmq} -vzf{x>2720:ms,s>481:mhr,s<294:fgv,nqz} -lnn{s<2149:R,x>3515:tbd,a<342:xft,zcz} -tss{s>3258:A,A} -sh{a>1883:qm,m>3431:A,chx} -qj{a<3876:A,x>836:R,R} -vl{s<2783:R,m<1099:R,x<1473:A,A} -bkt{a>3162:A,s>3117:A,x>215:A,A} -jh{x>101:R,s<1379:A,s<1659:R,R} -zcp{s<611:ff,qkd} -cr{s>772:kr,m<1018:lxl,vzf} -ms{s>407:zt,x>3417:R,chq} -jm{s<1028:A,R} -bn{m<3021:vzz,m<3604:qvk,x<271:fgc,R} -ngl{s>3536:sbr,s>3350:qdh,A} -zsf{m>1545:A,x>1434:R,a<3918:R,A} -ggp{s>585:R,R} -kr{m<1070:vfc,zp} -kks{a>1629:R,a<1563:R,a<1592:A,R} -btt{a>801:A,R} -jsj{s>3393:A,x<3185:R,A} -zgx{m<855:xl,A} -gt{x<259:R,A} -gqx{x<621:A,a<2443:hx,gz} -gnk{a<2992:R,R} -vc{m>2396:xx,cl} -hhp{m>1027:sgr,ph} -chr{x<2230:R,x<2596:R,R} -qkd{x>797:A,x<297:A,s<793:R,A} -zsv{x>3189:A,s>3280:pz,x<2182:A,jxg} -bmz{x>286:A,R} -rcl{s<3551:R,a>1235:R,A} -sxl{a<1497:R,x>1555:A,R} -xmv{x<2697:shm,m<2582:bl,st} -fd{a<2818:R,R} -jgq{x<3411:R,R} -zj{a<2947:A,R} -mgb{x>2219:A,s>580:A,R} -jjs{m>2508:pj,smp} -mfd{s>3169:R,x>3872:R,R} -kpn{a<3544:R,a>3555:R,R} -lq{m>3447:A,A} -bfq{s>1868:A,qpt} -hlc{m>3423:rnm,a<1561:A,nv} -zn{x<915:A,m<570:A,a>3454:A,A} -zmq{a>2577:A,s<2162:R,a<2036:R,R} -sqz{s<1195:A,R} -jsd{m<1634:vs,R} -dmq{m<1655:A,A} -nhl{a<2744:A,A} -mkm{s<482:A,s>608:A,R} -rc{m>234:A,x>2208:R,m>97:R,A} -zz{a>3346:vlc,a<2753:qqc,s>276:fx,rc} -js{a>3452:R,m<3619:A,R} -tj{a>1494:R,m<658:R,R} -qhd{s<2443:mdz,znr} -shv{m<2846:A,x>2878:A,A} -ttn{a>3182:R,a>3140:R,x<475:R,R} -ngp{x>3141:A,A} -pcn{x<1006:R,s>520:A,A} -ngq{m<1256:R,s>1251:R,a>658:R,R} -fkd{a<3655:dd,a<3774:cfx,s>2066:qmk,fk} -qzk{a>3335:R,R} -dx{m<2588:zcp,a<2083:sh,x<601:rrd,fh} -qc{x<432:zh,s>956:R,A} -fm{s<642:R,m>2905:lq,dcp} -rr{s>2991:xmv,ths} -dcp{a>2785:A,s<1372:R,x>674:R,A} -bf{s<3336:A,a<1863:A,R} -glx{x>2156:R,nq} -rxv{s<984:A,R} -plp{s>2690:A,a>3040:R,x<1194:A,R} -zdd{x<411:A,s<2583:A,s<3374:R,R} -sbp{x>2442:R,m>802:A,a<1990:A,A} -rzc{m>1519:R,a>2789:A,R} -hgj{x>992:kbh,a>2782:hql,mdb} -gc{m>3015:A,a<3333:A,x<1181:R,A} -xh{a>3215:A,x<3863:qtm,lnj} -jdx{a>296:hz,s>2019:A,a<185:R,R} -ftz{a<2615:A,A} -sr{a>3503:A,m<3116:R,vt} -bz{m<1363:A,a<3918:R,x>347:A,A} -lxl{m>375:ts,x>2633:ssr,zz} -rpl{a<3086:zg,km} -rcc{a<3086:lx,x<186:A,x<206:jjf,bkt} -xjz{s>2664:dkl,m>1134:rzc,a<2824:klr,R} -kf{m>2364:jp,clb} -chs{s>2600:qd,R} -td{a>2469:A,a>2389:A,x>480:A,R} -st{m<3511:R,x<3456:R,s>3602:cvj,rpd} -hmq{a>2111:A,x>1851:R,A} -xc{x<505:zr,pl} -th{x<582:pm,lk} -sn{m<2549:R,s>2203:R,dlr} -chx{m>3054:A,a<1763:R,A} -kk{m>3497:A,a<1434:A,R} -xj{a>2832:lkb,s<3601:A,s>3811:rbp,rfg} -ncd{a<2175:R,R} -dmv{x>1035:A,m<796:R,x>598:jl,bz} -zdz{s>3645:R,x>2044:R,a<2560:R,xv} -bj{x>1208:R,x<1157:R,m>1150:A,R} -sbr{m<3368:R,R} -kx{x<3147:vdh,jvl} -kv{m>3555:bmz,x>265:sl,A} -qd{x>1553:A,a>2834:A,s<3385:A,R} -cxs{s>1563:cxt,x>2102:A,bs} -lt{s<1846:A,x<3520:R,x>3795:R,nkk} -sv{m>3685:R,a>2243:R,R} -ft{a<963:rxt,x>2779:A,x<2244:A,lzv} -rl{a<1094:rr,s>2736:bbb,s>1976:rhb,fr} -jn{x<583:ttn,s<1225:A,A} -jxl{a<2453:rxj,a>2766:ngl,zfp} -cvs{m>285:R,A} -jqh{a<2775:dvm,gbn} -dg{a<2815:A,R} -jvl{x>3689:xh,x<3456:mjp,znq} -gnc{x<140:R,x<171:A,R} -fkh{a<3335:R,A} -vrm{m>937:A,m<448:R,R} -scz{m<2202:qk,gp} -gvq{s<123:A,m<3059:A,a<3441:A,A} -mdb{m>1624:gpj,hf} -xsc{x<1257:bbn,x<1486:A,sxl} -dp{m<1786:A,a<3541:R,A} -sf{m>773:xdr,ffq} -dlr{x<2407:R,s>1899:R,x<2587:R,R} -rk{x>2534:A,A} -rn{s<2830:A,hbb} -jvg{s>3506:A,m>2651:A,m>2621:A,R} -hfg{m>2738:zdz,a>2232:lkv,fvs} -lzv{s<480:A,A} -tqf{m>2290:ssz,xb} -vmf{m<1433:qhx,m>2129:jcz,a<970:xk,dck} -gv{m>563:R,x>1087:bd,m<346:R,vz} -fvs{s>3483:A,a<1973:bf,x>1995:ghn,hmq} -tqk{m<963:R,a>2859:R,A} -rx{x<977:nnk,bqr} -rvm{x>3305:A,m<1917:R,R} -clb{x>1123:R,chh} -pm{s>967:A,vbd} -zcz{a<501:R,R} -fsz{a>2745:R,R} -nfq{s<1487:jbm,a>1745:jjb,rl} -hdh{m>3509:A,s<1411:R,m<3227:A,A} -dgv{m>2115:A,A} -ccf{x>582:sxr,s>2966:qr,s<2421:btt,vmf} -kbh{x<1100:hgk,m>2034:smc,bj} -dd{m<2080:ct,s>2201:rk,hv} -ff{s>381:R,x<841:R,R} -gtx{s<890:A,m<3503:A,x>2000:A,R} -bx{m<3245:R,m>3522:zfz,x<2768:tc,R} -cbz{s<800:kpf,vr} -hjj{a<1141:R,s<3290:R,A} -nnk{s<496:vls,a<1328:nt,m<2251:R,gtr} -mhr{m>1624:R,m<1228:R,m>1458:ggp,mgb} -grb{s>2354:A,s>824:R,s<393:R,A} -vzz{m>2291:R,m<1985:A,A} -dc{s<2446:A,s>2870:A,s>2640:A,R} -cb{s>956:kb,A} -bkv{s<917:bm,jn} -cmn{a<1575:A,s>2325:A,s<2132:pzh,A} -vq{x>1200:R,m<1709:A,A} -xx{s<2987:R,s>3641:A,m<3099:gnk,A} -skj{x<2732:pgx,x>2863:pqn,a>2109:R,A} -qk{x<433:R,x<540:grb,s>2612:dp,mf} -nb{a<3379:dgv,x>433:xqb,mzt} -skd{s>85:R,a>3825:R,s>57:bsr,vj} -bsr{a<3615:R,A} -bqr{m<2638:A,kk} -gmm{s<271:R,R} -ssr{m>170:mkm,A} -xr{x>1412:R,R} -dpd{s>2570:rz,a<2463:ndl,m<1077:tqk,fsz} -cg{x>2240:R,s>3092:A,s<2882:R,A} -zt{s>605:R,m<1978:R,x<3468:A,A} -gbn{a>2840:A,x>606:R,A} -sk{s>627:A,R} -xv{s<3310:A,x<1827:R,R} -jvb{m>2641:rhf,x<598:dsq,x>615:R,nr} -dbk{a<3270:R,s<3854:A,R} -ld{x>1033:A,s<1042:A,A} -hz{s>2156:A,R} -hgm{a>3479:zsv,a>3293:jsd,bg} -sd{s<1388:R,m<220:A,a<3336:A,R} -ks{x<3304:R,A} -cp{x<3510:A,s>2786:A,R} -mc{x<138:tx,m<1731:lg,nd} -grf{a<3910:dt,zzd} -tm{m>2653:A,R} -znm{x>3272:R,tj} -qtm{a<2683:A,m<3283:R,A} -cpj{x>523:A,m>2682:A,m<2527:R,A} -vx{x>2368:A,A} -kp{x>444:R,x<233:R,A} -vlq{a>3107:tm,s>3354:A,m<2037:R,R} -mzn{m>2863:R,A} -zb{s>1752:R,x>1070:zgf,sk} -pqn{m<2758:A,R} -lsq{m<3507:A,s<957:R,R} -krr{a<3740:R,R} -czn{a>3163:R,m<1999:R,a<3012:A,R} -nkk{s<2070:R,R} -nrt{s<1315:A,x<2219:R,A} -ds{a<1180:hjj,m<1480:hxc,pf} -xb{x<928:R,s<680:dpt,ngq} -mj{a<2118:R,R} -kpv{x>329:A,A} -dpt{x<1220:R,R} -vls{a<1332:A,a>1469:A,R} -cs{x>1439:R,s>709:A,R} -tl{a>1243:jsj,ds} -xbt{x>1513:A,fz} -hpt{m<2917:R,m<3336:R,R} -fr{m<1904:hdc,xdt} -dsl{x<891:R,a<3061:A,A} -ph{m>522:A,A} -tck{a>3652:zdg,a<3466:vvc,m<1552:gl,pv} -lk{x>628:A,x<605:R,x>614:R,A} -nj{s>2734:A,R} -khd{a>2723:hm,x<1375:lxg,a<2580:A,zx} -vvc{x<813:nb,s<1759:bbv,a<3401:kf,sg} -fh{m<3059:R,sv} -rt{m<2548:ccf,bqs} -dtv{s>2651:njc,kpn} -db{s>1037:R,s>793:A,x<3290:A,A} -rfg{x>2488:R,A} -rxj{a>2073:fxv,A} -zgf{a<3590:R,R} -lxg{a<2574:R,m>3113:A,a>2644:R,A} -pp{x<1117:zn,a<3445:A,R} -hk{a<3058:A,R} -cps{x>673:gv,a<3514:lf,dtv} -bl{m<1269:A,s>3432:A,s>3277:A,cml} -rhb{m<2194:sf,zjt} -rth{s<2408:R,m>1515:A,R} -vs{x>2539:A,A} -znq{m>3125:R,A} -hzc{m>1851:mv,x>716:qg,jx} -tzb{m>3238:tg,xxd} -jxd{a<2457:A,A} -cn{s<3324:A,A} -qqc{x<2085:R,m<164:A,m>259:A,R} -rbp{m>2847:A,m<2787:A,R} -jjj{x>876:A,a<3595:A,R} -smc{s<1533:R,a>2843:plp,x<1198:R,pms} -ckf{s>1717:A,s<1570:R,R} -kl{a<2275:A,A} -fl{s>2371:tzb,vhl} -rz{a<2450:R,s>3365:A,R} -rjv{s<1810:A,m>758:A,s>2893:R,R} -hx{x<671:A,a>2389:R,x>691:R,R} -jp{s<2734:gc,s>3506:A,R} -bnt{m>837:A,m>433:R,m>254:R,R} -hgk{a<2704:A,a>3062:A,nxg} -txn{m>2615:ktj,tv} -pgx{a>1994:R,x>2611:R,A} -xxd{m>2723:A,s<2919:zvg,m>2567:R,vm} -gtr{s>886:A,a<1457:R,R} -jcz{s>2754:R,a>1065:R,a<523:A,A} -chq{x<3072:A,x<3293:R,R} -clz{s<3150:fkd,s>3490:rfx,hgm} -hck{x>2194:R,s>122:A,A} -vd{m>1534:jjs,a>3770:kmt,cj} -qzn{x>1103:R,s<2513:A,A} -pj{m>3377:A,A} -tc{a>3418:R,R} -kt{a<1141:tqf,s>1093:hzc,a<1584:rx,dx} -gf{a<3431:A,A} -jx{s<1412:vrm,s>1565:A,dm} -vrl{x>386:xz,R} -mz{a<2492:A,A} -mkg{s>1805:vc,a>3085:bkv,a<2882:dnt,th} -ns{a>3913:R,bdr} -kq{s<2373:A,bt} -jcs{s>2567:R,s<2521:A,R} -jbm{a<2334:cbz,m<2533:cr,s<516:rpl,kx} -pjm{m<2956:A,pcn} -nt{a>1236:A,m<2027:A,R} -rbf{s<846:R,m>2754:hdh,x<73:qfz,jh} -hf{s<2598:cvv,A} -cl{s>3154:hk,a<2910:dc,m>1368:czn,ccj} -rh{s>2442:jxd,s<2047:ckf,s>2249:df,A} -vj{s<31:R,a<3675:R,a<3727:R,A} -qhx{a<1403:R,s<2780:A,R} -hsb{s<3410:R,a<1336:A,A} -vfc{x<2652:kh,s>1086:bjc,m>636:R,A} -cd{s<1248:R,a>2984:R,A} -nhf{a<3351:bk,gvq} -jmz{x>176:R,a>2694:bnt,a>2565:R,vp} -cfl{a>1330:sbp,s<1255:mkx,m<858:R,pqm} -lkb{a<2993:R,m<2845:R,A} -jjb{a>3094:clz,m<2393:sxj,x<3056:gvv,fl} -rrd{a<2231:A,m>3181:kl,x>325:R,dkj} -fj{m>3651:R,gtx} -hdc{x>2461:znm,s>1764:bfq,s>1606:zgx,cxs} -kmt{x<1020:xjj,s<2087:xr,A} -cj{m<730:txd,x>819:A,kp} -xqb{s<1587:rb,a<3436:R,vpg} -xq{a<3606:R,x<329:R,R} -tq{s<2112:A,s<3362:R,A} -zzp{x>2975:sqz,m<2520:R,R} -pqm{m<1122:A,s<1390:R,a>875:R,A} -jq{x<3451:R,cf} -xjj{s>2372:R,x<668:A,s>1023:R,R} -tfq{s>3172:R,m>1532:R,A} -bqs{x>919:xsc,vrl} -thp{a<2602:R,m<2928:R,x<247:A,A} -dkj{x>141:A,m<2971:R,A} -pzx{x>2642:A,a<3478:A,R} -ths{x<2809:sn,a>725:qvl,m<1362:jdx,lnn} -qg{a>1868:mj,m>836:A,zxc} -tx{s>1835:tph,m<2098:px,rbf} -vf{a<2428:skj,m<2736:pg,x>2633:shv,xj} -km{s>209:zqs,a>3504:skd,x<2757:glx,nhf} -kj{s<3287:nj,thp} -cml{m<1837:A,s<3096:R,a>494:A,R} -rlc{m>474:R,m>251:A,x>2484:A,A} -txd{s>2156:R,A} -gl{a>3563:hhp,cps} -ccj{m>569:A,s<2508:A,R} -pf{m>3126:A,x>3194:R,R} -pbh{m>3239:mm,cpj} -zjt{a>1394:cmn,lv} -drm{a>1592:A,R} -bdr{a<3869:R,m>2643:A,x>1082:A,A} -jqs{s>2614:rlc,dq} -mv{x<623:R,qlj} -nr{m<2107:R,R} -zdg{a<3847:vd,s>2594:pck,ln} -xk{s<2671:A,m>1780:R,A} -px{s<685:zzq,s<1444:A,a<2772:R,A} -znr{m>2244:R,a>2352:A,x<3509:A,R} -bk{s>79:R,x<3271:R,A} -ktj{x<1421:khd,m<3145:xbt,x>1493:chs,zj} -hb{s>3741:R,s>3440:A,gm} -ffs{s<1003:A,m>2845:cd,x>2032:nrt,hdf} -dl{x<3044:R,m>1590:A,m<588:A,A} -vg{m<1260:A,s<201:A,a>302:A,A} -zfp{s>3617:chr,R} -qpt{x<2038:R,s<1806:R,x>2275:R,R} -jrp{m<1617:krr,s<3809:A,A} -zqs{s>394:pzx,tn} -knq{x>908:R,x<872:R,dsl} -bbb{x<2800:xrs,a>1484:jpt,x>3526:vrp,tl} -fz{s<1941:R,R} -nm{a>2984:A,m>3291:A,A} -rrl{s>2543:A,a>1195:A,a>1143:R,R} -jpt{a>1614:zf,m<2537:jq,hlc} -mb{s>2480:A,a>2039:R,A} -flg{x<2119:bth,m<3180:mz,a>2238:fhg,kq} -qlg{a>3593:R,A} -nd{s<1985:jd,a<2754:kj,x<224:rcc,bn} -nsg{x>3601:R,R} -pg{a>2794:A,m>2531:A,tk} -vpg{a<3448:A,x>601:A,m>2200:A,R} -qq{a<3599:qlg,xq} -mjq{m>906:A,R} -tk{s<3534:R,A} -tf{x<2430:A,m<2307:A,x<2765:R,A} -bd{m>361:R,a>3529:A,R} -xsq{a>2809:vl,a<2624:tfq,m<1412:mjq,nhl} -bs{m<1209:R,x<1880:A,A} -fn{a<3588:kv,a<3614:qq,s<1821:cls,rn} -xt{m<2535:A,drm} -pzh{x>3042:R,x>2454:A,R} -sx{x<1429:bvs,rxv} -vz{x<933:R,A} -nq{m<3063:R,A} -dm{m>867:R,A} -sdr{s>1536:zsf,cnc} -bvs{x<1372:A,x<1409:R,m>1611:A,R} -zxk{m>1166:tb,m>571:fkh,sd} -nxg{x>1061:R,x<1037:R,x>1045:R,R} -gq{x<350:mc,a<2674:dz,mkg} -vrp{x<3760:bmc,ddj} -bbn{x>1096:A,m<3379:A,s>2981:R,A} -sc{s>2125:R,A} -vlc{s<330:R,x>2068:R,R} -pl{s>2521:R,x<590:R,R} -shm{m<1775:R,a<392:R,khx} -zvg{s>2600:A,R} - -{x=864,m=2222,a=195,s=384} -{x=901,m=448,a=737,s=1768} -{x=2926,m=108,a=66,s=710} -{x=447,m=2075,a=739,s=2} -{x=597,m=681,a=975,s=28} -{x=2159,m=1819,a=2019,s=618} -{x=384,m=15,a=1695,s=142} -{x=76,m=739,a=729,s=42} -{x=1070,m=3064,a=2917,s=2856} -{x=1584,m=1118,a=1134,s=1906} -{x=23,m=7,a=309,s=260} -{x=987,m=52,a=513,s=2353} -{x=2128,m=133,a=1707,s=2272} -{x=1721,m=9,a=10,s=2757} -{x=56,m=1928,a=2447,s=651} -{x=358,m=1514,a=208,s=2003} -{x=991,m=160,a=1850,s=29} -{x=135,m=900,a=257,s=1885} -{x=1594,m=1262,a=292,s=773} -{x=958,m=762,a=1835,s=129} -{x=204,m=851,a=781,s=51} -{x=393,m=77,a=65,s=1317} -{x=102,m=2858,a=694,s=133} -{x=1558,m=357,a=508,s=289} -{x=185,m=111,a=305,s=2389} -{x=877,m=2013,a=2980,s=2509} -{x=2494,m=1224,a=54,s=939} -{x=336,m=1421,a=2434,s=2183} -{x=375,m=713,a=2313,s=459} -{x=2899,m=54,a=334,s=1951} -{x=452,m=585,a=16,s=531} -{x=220,m=566,a=192,s=346} -{x=1556,m=1173,a=7,s=611} -{x=793,m=1179,a=549,s=16} -{x=2730,m=545,a=888,s=2861} -{x=8,m=136,a=1607,s=40} -{x=641,m=2099,a=2295,s=745} -{x=2342,m=100,a=1010,s=1306} -{x=3432,m=432,a=658,s=645} -{x=121,m=1563,a=1172,s=1807} -{x=60,m=1124,a=859,s=595} -{x=39,m=2653,a=1212,s=295} -{x=1810,m=2143,a=250,s=899} -{x=1049,m=1680,a=2472,s=66} -{x=1305,m=645,a=1311,s=18} -{x=32,m=1575,a=933,s=88} -{x=2066,m=2204,a=2147,s=48} -{x=806,m=263,a=862,s=406} -{x=1218,m=142,a=2380,s=2080} -{x=199,m=1608,a=815,s=504} -{x=1355,m=844,a=312,s=186} -{x=409,m=1271,a=2737,s=620} -{x=652,m=409,a=315,s=1051} -{x=2044,m=149,a=2045,s=3394} -{x=1787,m=496,a=142,s=313} -{x=70,m=78,a=953,s=872} -{x=1072,m=1733,a=541,s=115} -{x=254,m=302,a=1483,s=1537} -{x=239,m=1242,a=929,s=15} -{x=517,m=932,a=1899,s=844} -{x=2926,m=364,a=595,s=1294} -{x=1358,m=68,a=34,s=1728} -{x=2065,m=312,a=3623,s=181} -{x=414,m=451,a=876,s=80} -{x=1689,m=843,a=139,s=245} -{x=1136,m=289,a=2256,s=2537} -{x=99,m=1094,a=980,s=382} -{x=1610,m=751,a=456,s=143} -{x=717,m=113,a=530,s=502} -{x=2050,m=1025,a=431,s=48} -{x=3411,m=87,a=306,s=2865} -{x=1894,m=19,a=46,s=3399} -{x=574,m=1848,a=599,s=1924} -{x=3,m=1021,a=26,s=1166} -{x=776,m=1882,a=1946,s=453} -{x=1170,m=381,a=957,s=601} -{x=1703,m=200,a=298,s=1246} -{x=117,m=43,a=286,s=1131} -{x=2642,m=18,a=552,s=8} -{x=333,m=458,a=518,s=1260} -{x=2391,m=794,a=1032,s=1156} -{x=1439,m=629,a=1737,s=268} -{x=70,m=465,a=603,s=1399} -{x=312,m=648,a=875,s=785} -{x=3106,m=348,a=45,s=198} -{x=2991,m=18,a=1424,s=436} -{x=397,m=1490,a=520,s=53} -{x=553,m=232,a=2916,s=781} -{x=1404,m=738,a=925,s=513} -{x=757,m=619,a=442,s=43} -{x=1747,m=924,a=11,s=430} -{x=3644,m=201,a=693,s=33} -{x=336,m=141,a=1473,s=2008} -{x=1723,m=1595,a=91,s=282} -{x=768,m=426,a=895,s=573} -{x=312,m=604,a=12,s=361} -{x=2900,m=23,a=748,s=578} -{x=1100,m=116,a=2804,s=2407} -{x=121,m=94,a=937,s=514} -{x=61,m=2592,a=1518,s=855} -{x=356,m=64,a=1167,s=732} -{x=1538,m=702,a=444,s=524} -{x=1071,m=230,a=1273,s=954} -{x=1538,m=1389,a=963,s=681} -{x=3560,m=407,a=606,s=1015} -{x=276,m=534,a=14,s=2920} -{x=122,m=1529,a=3159,s=302} -{x=764,m=529,a=1535,s=1743} -{x=1015,m=491,a=1323,s=1241} -{x=831,m=1667,a=2553,s=146} -{x=841,m=203,a=2621,s=696} -{x=1586,m=403,a=1308,s=1892} -{x=2119,m=47,a=446,s=124} -{x=2321,m=2184,a=309,s=735} -{x=44,m=99,a=2037,s=1730} -{x=917,m=192,a=31,s=1104} -{x=1135,m=2330,a=2073,s=1651} -{x=1149,m=907,a=51,s=79} -{x=299,m=330,a=2588,s=1829} -{x=203,m=1847,a=205,s=696} -{x=418,m=498,a=1030,s=307} -{x=1560,m=1398,a=54,s=723} -{x=1232,m=39,a=216,s=648} -{x=1449,m=527,a=2553,s=39} -{x=2579,m=154,a=208,s=1099} -{x=213,m=1557,a=2636,s=202} -{x=1787,m=1475,a=1407,s=1761} -{x=1057,m=33,a=29,s=1488} -{x=46,m=2348,a=2573,s=1457} -{x=2080,m=352,a=247,s=97} -{x=166,m=10,a=938,s=1203} -{x=375,m=3545,a=21,s=2507} -{x=1525,m=1748,a=63,s=511} -{x=4,m=712,a=1182,s=2085} -{x=460,m=996,a=1,s=2354} -{x=538,m=1452,a=1066,s=2980} -{x=328,m=488,a=2291,s=1542} -{x=787,m=2124,a=649,s=281} -{x=890,m=17,a=1812,s=99} -{x=950,m=308,a=67,s=87} -{x=792,m=500,a=64,s=546} -{x=194,m=524,a=849,s=1060} -{x=24,m=492,a=1727,s=1628} -{x=3080,m=427,a=11,s=300} -{x=910,m=2320,a=2178,s=225} -{x=100,m=586,a=2247,s=1402} -{x=1277,m=400,a=1053,s=11} -{x=442,m=450,a=1063,s=1664} -{x=1360,m=658,a=1705,s=306} -{x=60,m=1215,a=1012,s=2971} -{x=37,m=973,a=1351,s=2900} -{x=755,m=1798,a=41,s=1999} -{x=456,m=565,a=13,s=18} -{x=1068,m=108,a=1261,s=216} -{x=179,m=559,a=1871,s=1357} -{x=760,m=1634,a=1753,s=502} -{x=33,m=466,a=1114,s=112} -{x=443,m=1297,a=280,s=1777} -{x=2608,m=1971,a=651,s=2930} -{x=244,m=1227,a=1578,s=15} -{x=1063,m=635,a=2276,s=331} -{x=321,m=1326,a=2474,s=359} -{x=1412,m=186,a=2378,s=750} -{x=1007,m=463,a=211,s=520} -{x=2193,m=158,a=1966,s=952} -{x=1047,m=348,a=37,s=88} -{x=3034,m=1692,a=248,s=1957} -{x=508,m=1601,a=213,s=712} -{x=640,m=386,a=1410,s=2062} -{x=683,m=855,a=503,s=3485} -{x=574,m=28,a=978,s=287} -{x=4,m=1189,a=20,s=330} -{x=1716,m=1734,a=166,s=547} -{x=903,m=1023,a=220,s=2002} -{x=2105,m=2151,a=753,s=216} -{x=357,m=1260,a=242,s=32} -{x=382,m=1261,a=3644,s=2198} -{x=451,m=1290,a=1901,s=446} -{x=510,m=391,a=1064,s=1313} -{x=1279,m=40,a=1825,s=946} -{x=21,m=1879,a=1728,s=429} -{x=50,m=183,a=1799,s=895} -{x=2200,m=2092,a=827,s=1450} -{x=230,m=1800,a=1178,s=1276} -{x=747,m=1987,a=838,s=1589} -{x=2113,m=613,a=727,s=26} -{x=34,m=305,a=1750,s=1402} -{x=394,m=3102,a=229,s=339} -{x=247,m=1734,a=102,s=847} -{x=819,m=1651,a=3293,s=1663} -{x=459,m=2156,a=175,s=296} -{x=1194,m=2195,a=324,s=297} -{x=510,m=47,a=9,s=1406} -{x=478,m=18,a=114,s=643} -{x=278,m=2041,a=185,s=237} -{x=2208,m=263,a=252,s=70} -{x=22,m=956,a=1030,s=240} -{x=164,m=466,a=3598,s=1158} -{x=2901,m=267,a=108,s=455} -{x=569,m=1421,a=1176,s=1237} \ No newline at end of file diff --git a/aoc2023/src/day2/input.txt b/aoc2023/src/day2/input.txt deleted file mode 100644 index 34a6672..0000000 --- a/aoc2023/src/day2/input.txt +++ /dev/null @@ -1,100 +0,0 @@ -Game 1: 1 green, 4 blue; 1 blue, 2 green, 1 red; 1 red, 1 green, 2 blue; 1 green, 1 red; 1 green; 1 green, 1 blue, 1 red -Game 2: 2 blue, 2 red, 6 green; 1 red, 6 green, 7 blue; 10 green, 8 blue, 1 red; 2 green, 18 blue, 2 red; 14 blue, 3 green, 1 red; 8 green, 1 red, 9 blue -Game 3: 6 green, 5 blue, 9 red; 4 blue, 1 green, 13 red; 9 green, 14 red, 1 blue -Game 4: 14 green, 3 blue, 16 red; 20 red; 4 green, 2 red, 1 blue; 10 blue, 11 green, 18 red; 3 red, 3 blue, 6 green; 2 green, 18 red, 9 blue -Game 5: 5 green, 4 blue; 1 red, 3 blue, 2 green; 4 green, 2 red, 15 blue; 11 blue, 8 green, 4 red; 4 red, 3 green; 4 red, 3 green, 7 blue -Game 6: 6 blue, 10 green; 2 red, 6 green, 2 blue; 4 red, 4 blue, 1 green; 2 blue, 7 green, 2 red -Game 7: 14 green, 3 red, 2 blue; 5 blue, 3 green, 2 red; 1 green, 3 blue -Game 8: 7 red; 3 blue, 9 red, 1 green; 5 green, 5 blue, 7 red; 1 red, 2 blue -Game 9: 3 green, 4 blue, 1 red; 3 blue, 12 green, 18 red; 7 green, 9 red, 8 blue; 2 blue, 10 red, 12 green; 4 blue, 1 red, 1 green; 4 blue, 6 green, 6 red -Game 10: 2 blue, 4 green, 2 red; 7 green, 4 red; 5 red, 8 green -Game 11: 1 blue, 10 green, 15 red; 1 blue, 2 green, 2 red; 5 green, 10 blue, 8 red; 13 red, 7 blue; 1 red, 9 green, 4 blue; 9 blue, 9 red, 8 green -Game 12: 1 green, 10 red, 3 blue; 14 red, 1 green, 4 blue; 6 red, 3 green, 12 blue; 13 blue, 1 green, 18 red; 4 green, 14 red, 7 blue -Game 13: 1 red, 3 green; 2 green, 1 red, 5 blue; 1 blue; 1 green, 7 blue, 1 red; 1 red, 2 green, 7 blue -Game 14: 7 blue, 9 red, 1 green; 8 red, 2 blue; 11 red, 18 blue, 4 green; 2 blue, 3 green, 1 red; 1 green, 8 red, 9 blue; 2 blue, 8 red, 1 green -Game 15: 8 blue, 3 green, 15 red; 13 red, 10 blue; 2 red -Game 16: 1 green, 1 red; 1 blue, 2 green, 2 red; 1 blue, 4 red, 1 green; 3 green; 2 blue, 3 green, 4 red -Game 17: 1 green, 3 red, 14 blue; 1 red, 2 blue, 2 green; 3 red -Game 18: 1 red, 2 green, 8 blue; 2 blue, 14 red; 4 blue, 2 red, 2 green; 6 red -Game 19: 2 red, 11 blue, 18 green; 3 red, 6 green, 3 blue; 7 green, 1 red, 10 blue -Game 20: 10 red, 1 blue, 4 green; 4 green, 3 blue; 10 green, 13 red, 4 blue; 2 red, 7 green; 4 red, 3 blue, 5 green; 13 red, 1 green, 4 blue -Game 21: 20 red, 4 green, 5 blue; 10 red, 11 green, 4 blue; 1 red, 8 blue, 14 green; 11 green, 8 blue, 15 red; 8 blue, 2 green, 13 red -Game 22: 2 red, 11 blue, 4 green; 1 blue, 3 red, 6 green; 6 green, 1 red, 1 blue; 4 green, 7 blue, 3 red; 11 blue, 6 green, 4 red -Game 23: 6 green, 3 red, 1 blue; 17 green, 11 red; 1 red, 2 blue, 13 green; 13 green, 19 red -Game 24: 1 blue; 12 red, 1 blue; 1 red; 12 red, 1 green, 1 blue; 11 red, 1 blue; 12 red, 1 green -Game 25: 12 blue, 6 red, 3 green; 8 green, 14 blue; 11 green, 5 blue, 6 red; 4 red, 12 blue, 8 green -Game 26: 15 red, 13 green, 9 blue; 9 blue, 8 green, 7 red; 2 green, 6 red, 3 blue; 1 blue, 7 red, 3 green; 13 blue, 4 green, 18 red -Game 27: 9 blue, 5 red; 15 red, 12 blue, 3 green; 12 red, 12 blue, 1 green -Game 28: 18 red, 4 green; 4 green, 6 red; 1 blue, 6 green, 19 red; 9 green, 17 red; 4 green, 5 blue, 18 red -Game 29: 7 green, 6 red, 6 blue; 6 blue, 19 red, 4 green; 4 green, 4 blue, 13 red; 5 blue, 15 red, 10 green; 2 green, 6 blue, 5 red; 8 red, 10 green, 6 blue -Game 30: 1 green, 13 red, 12 blue; 1 red, 2 blue; 11 blue, 1 red, 1 green -Game 31: 8 green, 18 blue, 17 red; 4 red, 8 green, 6 blue; 9 blue, 7 green; 3 green, 1 blue, 12 red; 5 red, 10 blue, 11 green -Game 32: 17 red, 17 green, 7 blue; 18 red, 16 green; 1 blue -Game 33: 16 blue, 3 red; 9 blue, 1 red, 2 green; 3 green, 7 blue; 1 green, 4 red; 3 green, 1 red, 8 blue; 5 blue -Game 34: 5 blue, 8 red, 1 green; 9 red, 10 blue, 7 green; 1 green, 14 blue; 8 blue, 4 red, 10 green; 15 blue, 8 green, 7 red; 2 red, 6 green, 3 blue -Game 35: 13 red, 9 blue; 7 blue, 16 red, 10 green; 4 red, 6 blue; 3 blue, 12 green, 7 red; 8 blue, 6 red; 10 blue, 3 green, 2 red -Game 36: 1 blue, 9 red, 2 green; 11 red, 3 blue, 2 green; 2 green, 6 red; 8 green, 11 red, 3 blue; 4 green, 7 blue, 11 red; 9 green, 8 red, 2 blue -Game 37: 8 green, 3 blue, 4 red; 14 blue, 10 green, 3 red; 19 green, 2 blue, 7 red -Game 38: 2 green, 3 red, 3 blue; 3 green, 9 red; 13 blue, 8 red; 6 red, 5 green, 13 blue -Game 39: 8 red, 5 blue; 4 green, 5 blue, 3 red; 18 red, 2 green, 6 blue; 2 green, 5 blue, 17 red; 1 green, 2 red; 5 green, 6 blue -Game 40: 12 red, 4 blue, 1 green; 11 green, 20 blue, 4 red; 10 blue, 4 red -Game 41: 2 green, 2 blue; 2 red, 2 green; 2 green, 2 blue, 10 red -Game 42: 6 green, 3 blue; 2 red, 2 green, 1 blue; 3 blue, 5 green, 6 red; 6 red; 1 blue, 6 green, 12 red -Game 43: 1 blue, 4 green; 1 blue; 2 blue, 8 red, 2 green; 2 blue, 1 red, 4 green; 1 blue, 4 red, 4 green; 4 green, 7 red -Game 44: 8 green, 9 red; 1 red, 2 blue, 13 green; 4 blue, 8 green, 17 red; 13 red, 13 green; 1 red, 9 green; 19 red, 3 green, 3 blue -Game 45: 10 blue, 2 red, 1 green; 6 green, 5 red, 8 blue; 3 blue, 1 red; 4 green, 10 blue, 4 red -Game 46: 3 red, 8 blue; 6 blue, 7 green, 6 red; 6 green, 1 blue, 7 red; 8 red, 1 green, 5 blue; 9 red, 12 blue, 10 green; 7 green, 5 red, 1 blue -Game 47: 5 red; 2 blue, 2 green, 5 red; 3 green, 7 red; 14 red, 3 green, 2 blue -Game 48: 7 blue, 12 green, 2 red; 11 green, 10 blue, 1 red; 1 red, 13 blue, 2 green; 14 green, 2 red, 9 blue; 2 red, 12 green, 3 blue; 2 red, 7 blue -Game 49: 4 green, 5 blue; 9 blue; 10 blue, 5 green, 2 red; 10 blue, 2 red, 2 green; 1 red, 1 green, 4 blue; 2 blue -Game 50: 2 red, 2 blue, 7 green; 7 red, 9 green, 3 blue; 5 red, 10 green -Game 51: 15 red, 9 blue, 4 green; 5 red, 2 blue, 15 green; 4 blue, 3 green, 20 red; 12 green, 1 red, 10 blue; 10 green, 5 blue, 13 red; 9 red, 10 green, 11 blue -Game 52: 3 blue, 12 green, 1 red; 6 green; 1 red, 8 green; 1 blue, 1 green, 1 red -Game 53: 10 green, 7 red, 12 blue; 9 blue, 6 green, 2 red; 8 green, 5 blue, 5 red; 7 blue, 16 green, 11 red; 6 red, 8 blue, 13 green -Game 54: 10 green, 6 blue, 3 red; 6 green, 2 red, 8 blue; 9 blue, 11 green, 2 red; 10 green, 1 blue, 3 red -Game 55: 4 blue, 1 red; 3 red, 7 blue; 12 red, 4 green, 8 blue; 3 green, 5 blue, 1 red; 13 blue, 12 red, 1 green -Game 56: 12 blue, 15 green; 1 green, 7 red, 11 blue; 5 green, 9 blue, 1 red; 8 red, 5 green, 6 blue -Game 57: 4 green, 11 blue, 18 red; 14 blue, 14 red, 16 green; 7 red, 15 green, 3 blue; 18 red, 20 green, 8 blue; 12 blue, 9 red, 16 green -Game 58: 10 blue, 9 green, 8 red; 13 green, 6 blue, 8 red; 8 green, 4 red; 4 blue, 1 red, 18 green; 7 red, 10 green, 10 blue; 15 blue, 10 green, 3 red -Game 59: 17 green, 2 blue, 2 red; 2 blue, 1 red, 8 green; 14 green, 1 red, 1 blue; 15 green, 3 blue, 2 red; 2 blue, 8 green, 1 red; 1 blue, 1 red, 8 green -Game 60: 1 green, 1 blue, 1 red; 4 blue, 3 red, 2 green; 13 green; 2 blue, 2 red, 8 green; 4 red, 12 green, 4 blue; 4 green, 4 blue, 4 red -Game 61: 3 blue, 7 red; 5 blue, 8 red, 1 green; 1 blue, 8 red; 10 blue, 2 red, 1 green; 1 green, 5 blue, 2 red -Game 62: 10 red, 2 green; 8 blue, 7 red, 2 green; 4 green, 2 blue, 10 red -Game 63: 1 green, 3 blue, 5 red; 6 green, 5 blue, 2 red; 3 blue, 7 red -Game 64: 6 red, 20 blue; 4 red, 3 blue, 2 green; 3 green, 19 blue, 6 red; 2 green, 6 blue, 3 red; 13 blue, 5 green, 5 red -Game 65: 6 red, 9 blue, 20 green; 6 red, 16 green, 4 blue; 12 red, 6 green, 5 blue -Game 66: 2 blue, 5 red, 4 green; 13 blue, 2 green; 1 green, 6 blue -Game 67: 4 green, 5 blue, 2 red; 1 red, 14 blue, 6 green; 1 green, 14 red, 5 blue; 18 red, 16 blue; 15 blue, 8 red, 18 green; 1 green, 18 red, 6 blue -Game 68: 1 blue, 9 red, 7 green; 7 red, 1 blue, 6 green; 5 green, 1 blue, 8 red -Game 69: 12 green, 3 blue, 4 red; 9 green, 8 red, 7 blue; 4 blue, 5 red, 10 green; 4 red, 5 green, 7 blue; 9 green, 4 red, 2 blue; 3 green, 13 blue, 1 red -Game 70: 9 red, 1 green, 8 blue; 11 green, 13 blue, 12 red; 3 blue, 5 green, 8 red; 1 red, 14 blue -Game 71: 10 blue; 2 green, 8 blue, 9 red; 5 red, 1 blue -Game 72: 3 green, 5 blue, 5 red; 1 blue, 1 red, 2 green; 4 red, 4 blue, 1 green; 5 blue, 4 red, 1 green; 6 blue, 3 green, 5 red; 5 blue, 1 red, 4 green -Game 73: 3 red, 1 green, 1 blue; 7 green, 2 red, 1 blue; 2 green, 1 blue, 3 red; 1 red, 4 green, 1 blue; 3 red, 5 green -Game 74: 5 blue, 1 red, 4 green; 3 red, 2 green; 4 red, 6 blue; 2 red, 2 blue; 1 green, 4 red, 8 blue; 5 blue, 4 red -Game 75: 3 red, 5 blue, 3 green; 9 green, 6 blue, 7 red; 2 green, 3 red, 12 blue; 14 green, 4 blue, 10 red -Game 76: 1 blue, 7 red, 1 green; 6 red, 1 blue, 2 green; 4 red, 2 green; 3 red, 1 blue; 16 red, 1 green -Game 77: 3 red, 10 blue, 1 green; 4 red, 7 blue, 3 green; 7 blue, 6 green, 7 red; 5 green, 15 blue, 7 red; 12 green, 5 red -Game 78: 6 red, 10 blue, 15 green; 6 green, 11 red, 4 blue; 6 blue, 8 red; 4 blue, 7 red, 2 green; 11 green, 7 red, 11 blue; 3 blue, 14 green, 6 red -Game 79: 14 red, 6 green, 4 blue; 13 red, 6 blue; 6 red, 13 green, 4 blue -Game 80: 8 red, 2 blue, 8 green; 6 red, 10 green, 4 blue; 3 red, 9 green; 2 green, 8 blue, 7 red; 7 blue, 3 red, 11 green; 1 red, 12 green, 8 blue -Game 81: 9 red, 4 blue, 11 green; 1 blue, 4 red, 2 green; 5 red; 3 blue, 2 red, 2 green; 14 red, 12 green -Game 82: 5 green; 2 blue; 2 red; 1 blue, 2 red, 11 green; 8 green, 2 red, 1 blue -Game 83: 3 green, 7 red, 6 blue; 7 red, 7 green, 11 blue; 7 blue, 13 green, 7 red; 12 blue, 10 red, 2 green; 1 green, 11 red, 7 blue; 12 blue, 9 red, 9 green -Game 84: 5 blue, 1 green; 16 green, 4 blue, 8 red; 7 red, 5 blue, 16 green -Game 85: 9 green, 20 blue, 7 red; 19 blue, 14 red, 2 green; 10 green, 2 red, 10 blue -Game 86: 1 green, 3 red, 5 blue; 9 red, 2 blue, 6 green; 8 green, 14 red, 3 blue; 18 green, 2 blue, 7 red; 2 blue, 10 red, 14 green; 17 green, 4 blue, 12 red -Game 87: 4 green, 8 red, 13 blue; 7 red, 13 blue, 4 green; 1 green, 8 blue -Game 88: 9 blue, 11 red; 5 green, 7 blue, 12 red; 10 red, 2 green, 1 blue; 2 blue, 5 red, 5 green; 7 red, 6 green, 9 blue; 1 green, 10 red, 5 blue -Game 89: 7 red, 2 green, 1 blue; 1 blue, 2 green; 6 red, 1 green; 7 red, 1 blue; 3 green, 3 red -Game 90: 8 blue, 2 red, 3 green; 9 green, 4 blue, 3 red; 7 green, 11 blue, 2 red; 13 green, 12 blue, 8 red; 10 blue, 2 green; 5 green, 1 red, 9 blue -Game 91: 2 red, 2 green, 4 blue; 5 blue, 2 red, 16 green; 11 green; 3 blue, 2 red, 8 green; 4 green, 3 blue -Game 92: 8 red, 12 blue, 3 green; 11 red, 10 blue, 6 green; 14 red, 8 green, 14 blue -Game 93: 3 green, 2 red, 3 blue; 3 green, 3 red, 1 blue; 2 blue, 16 red, 3 green; 2 green; 5 green, 2 blue, 2 red -Game 94: 5 red, 2 green; 9 red, 3 blue; 2 green, 2 blue, 5 red; 3 blue, 8 red, 2 green; 8 red, 1 blue, 1 green -Game 95: 3 blue, 4 green, 7 red; 7 red, 1 green, 15 blue; 6 blue, 2 green, 7 red -Game 96: 2 blue, 1 red, 6 green; 7 blue, 8 green; 1 red, 7 green; 2 green, 14 blue, 1 red; 3 blue, 1 red, 7 green; 4 blue, 11 green -Game 97: 2 red, 9 blue, 8 green; 3 green, 5 blue; 6 green, 1 red, 9 blue; 2 red, 13 green, 1 blue; 2 green, 2 red, 2 blue -Game 98: 2 blue, 1 green, 1 red; 4 blue, 5 red, 1 green; 4 blue, 3 red, 2 green -Game 99: 17 red, 2 blue, 4 green; 4 green, 8 red, 6 blue; 5 red -Game 100: 6 red, 4 green; 3 red, 2 blue, 9 green; 1 blue, 5 green, 14 red; 1 blue, 2 red, 2 green; 9 red, 1 blue, 14 green; 2 blue, 11 green, 8 red \ No newline at end of file diff --git a/aoc2023/src/day20/input.txt b/aoc2023/src/day20/input.txt deleted file mode 100644 index 6949a60..0000000 --- a/aoc2023/src/day20/input.txt +++ /dev/null @@ -1,58 +0,0 @@ -%hb -> mj -%mx -> mt, xz -%xh -> qc -%tg -> cq -%kp -> xz, nj -%mj -> jj, lv -%cq -> jm -%mt -> sj, xz -&jj -> hb, lz, rk, xv, vj, vh, lv -%rm -> bz, xq -%hx -> bz -%xv -> lz -%xx -> kp, xz -%pt -> vx -&xz -> bq, gr, sj, rv, zf -%vx -> gf, cv -%xb -> xz, bq -%xk -> gf, rd -%lv -> zk -&rk -> gh -%kn -> gf, tz -&gh -> rx -%sj -> vp -%jm -> vm, bz -%rr -> rv, xz -%tz -> rz -%gg -> kn -&cd -> gh -%qc -> kh, bz -%kb -> gf -%vp -> xz, xx -%fb -> bz, tg -%rd -> cp -%qn -> vh, jj -%xr -> jj -%tp -> rm, bz -%cp -> gg -&bz -> qx, cq, xh, fb, tg -%qq -> pt, gf -%xq -> bz, hx -%gx -> jj, qv -%bq -> rr -%cv -> gf, kb -%zk -> jj, xv -&zf -> gh -&qx -> gh -%vh -> gx -%qv -> xr, jj -%lz -> qn -broadcaster -> fb, xk, gr, vj -%nj -> xz -%gr -> xz, xb -%kh -> tp, bz -%vm -> bz, xh -%rz -> qq, gf -&gf -> tz, cd, rd, xk, pt, cp, gg -%rv -> mx -%vj -> hb, jj \ No newline at end of file diff --git a/aoc2023/src/day3/input.txt b/aoc2023/src/day3/input.txt deleted file mode 100644 index 1903642..0000000 --- a/aoc2023/src/day3/input.txt +++ /dev/null @@ -1,140 +0,0 @@ -............830..743.......59..955.......663..........................................367...........895....899...............826...220...... -.......284.....*............*.....$...+.....*...377..................*.......419.............488...*.......*...................*..-....939.. -....%.........976..679.461.7..........350..33.........$.380...$...151.897..........295..#......*....105.....418.............481........&.... -...992.....#......=...../........701................508...*..578........................259...331.................795..945........79........ -.........868........................*.............................17*..........348................441*852........*.....-...........@.....922 -....................*200............311..63................452.......323.#778.*....674....................680......696...372.....*.......... -.......266.......209......589.....=......*...365.........7.*...233.............755....*......644...272........697..*....*.....682..225...... -..836..........................949....607..........&....*..899...*....679.527.........331..........$....788../.....43....89................. -........367.....328.&......%...............680...69..717.......60.......*.*............................*..........................728...264. -........*.........*..119.253.......................................626....129...274............97...679.......752........*.......*....*.*... -........360......471........../.........573-.702.............866...@...........*......772....../........259....*.........430....136.742.543. -.........................../.852...............*...775...............643....455....../...........832....*.....41..535....................... -.............-..........340.................103....*..........$...51*..................74................438......%...776...+.23*..663...... -.15.......806...............990.....................427....924............530.........=..............................*....968.....=....480.. -......#..............@914...*..............*........................%......*................................/.....406.................*..... -....201.........79........592............70.894.....247..513+....367..$299.698......199................-.....223....../.........563....783.. -......................448........489................*.................................*....440...889...715..........351.....39.............. -.138....../766...........*.......................152.........................377....599.......*...*...........................@............. -....%.820.......10*43.670..$87....100*244..@706..........668..319#...........................831.736....@............./..693.....321%....... -......=...930#..................@...................493....*............152......569.................=.914....764.....9.-................... -378$...............&.....854..505.........%........&.....124......12........117.....*591..979..76..133..........+............/..........883. -...............602.141.....*...............770.....................*.........*................../.........874.@....../684....778............ -...........................954.....*397.........................394...........614..307*74..457..............+.514.......................327. -........335*25.....-....31..........................................$...719.................*........6..214................878.............. -...............86*.269....*...480........................*....140..947....*..&.......................*......972..............*..364*274..... -501-.......805..........285...*..................6....335.167...*........18...332.............741...127......+.............246.............. -......616.......752*276.....470.848..599.........*............779..=................539...961..$.........204.......-..201*.....%............ -.491.....*..521.........*94.......*.-.....&...163........285/......51..99*......474..*...-.......945.....&......839.......140...201.....$... -....$.795..*........539.........500.......662.............................421....*...459..../.......*407.............../................471. -...........110.......*...............252.............................%..........730......551..509.............824...230....569....48=....... -......150...................................+..70.565=.&320.........983....155................=.....54.......%............*....@......../... -...............972..146...........49.433..137..............................*....%..................@....................436.451..........328 -568-...@.552%....-.-................*.................957................93......74...........*........156.566../....#...........285........ -.....565..............693....443......................*....394.@58...362...................383.583.............542.38............./..890.... -...*.................*........*........&.223...........506.............=..................................300...............477........&.... -..612..459..........462....663......125....................720..............355.....253...............904......................*............ -........$................................622..............=................*...........*30.........#.$........................284........383 -............&.999....&.......................%........240....295*681.846....53.....806......793..646....626./76..737....479.........558.@... -.........892..#.......885.....804..587*....340.........*..............%............*.........*..........*................%............/..... -660..635...........-............./.....213........$....512.....551.............*....910........................@............................ -........*..........361..270*.....................328..............*.........853........................*.....985...965............232...948. -..501@......................213...412$.....375..................631..916.......................254...284.........#....*..252........*....... -...................695............................872*876..622..........-.........*..575...851*..................910.395..*....*717.248..... -.....91.........80....*..390...........497....496............*.......@.........297..*................&....873.............946.8.........647. -.......*.424.......108.....=.............*..................686....418.............131........600.96.327...=...561...321............343*.... -....731....*..............................938..........256..............909.......................................*......................... -.........811...=....................680...........167...*...601.....................892..#.......142*.......151..108............201......... -................653........879....@.*.........%...*...699..*..............726............695.870.....526.$................*8............234. -....54....311..............=...320..619.......495.375.......926....914.........654..............*........236...$.......444.....@613......... -...*........*......450*............................................*...786.625.......804.850.....674..........305........................... -..593.512....517.......155.....646*239....286......+...........96..264....*......471.*......*.........314*901..............879.............. -..........................................=.....419....820......&..................+.......163....148........................*....586....... -.....331.....................637....126.................*..147............650...............................................315....*........ -.......%......................$....../.................392....@...943..34...*......752.............................161..30.........970.521.. -.........984.412#.......-.569...@................464....................*.275..&.....#.126*506....................*.......=.168-............ -.724..................570....*.914.388.........%..$.........274.......263.......130..............102.....2....21+.268....................226 -..........776=...6........759.......*..283..309.....682......$..........................................%........................446........ -....%284.........-....#...........119....*......622...@....+............/.......929..178...........141/............../650...628.+........... -....................440........88.........335...*.......804............968..976*....+...................$.421..431..................*....... -.....880@.......871.....30......................249...........134....*................*...............95....-...*.....856...353...94.....963 -...............*....97..&.......989./.........*.....522+..$.....*.226.436.905......347.396.707...511..........342.....-.....*...........*... -........936*....299.........217.&...478....931.457........62.391............&...............*..../...884*....................370........483. -....965.....992.............*......................................371*771.............37..382...........990...391.......852................ -.......*........985.......753.&..........561.204.......................................*......................*...........@..........+935... -......677.....................164.883...............325........951.....847....%......433....*944.50...753..344.............................. -.829.......583........429............*34......243...*.........*.............329.%........421...........*..........803..746............675... -...*..................*....512............999.......102......398.................640................401....310.............164...452..*..... -269........9........705....*........782....%.......................615.734....-..............289...........*.....................=....661... -........37.#..............14.......*........../.......586.............*........623.......129........324.....601...%.....@................... -...165................#.........861............463.......*.......361*..............356........175.....*.........906.897..716....118..#...... -.....*.............728....417.........+...395#.........443...........829.....390-....................399...............*..........+..813.... -....176..253...846......$...........719..........132............897...............334......................20...........51.....%............ -..............*....*..278................958........*.......=.................183*.......427.......766.......*..914.282......674............ -....&......344...249.....................*.....445.770.....67.....301................295*.........*....715.390...*...../...............424.. -.....541......................160.580...........#................=...........*677..............394.......*........327....739...179.360..*... -..........=................%.....*................-954......%.............406......765..................930.....*.........../.....*.....370. -....%.....979.379..........415...............318..........284....440../............-....133.........157......579.550................747..... -.240..........*.....................@...........*642............*.....84.....%.331................2*...................582...=........*..... -......=.....246....167...............704.............763........999.......781...*.....-109............126..801............*.484....632..542. -....%..488.........@..........................$954....*../.....................779..........232................510.....149.................. -...27..........984.........*....485.....937........982..234..............225..................*..........122.............................16. -...........473.#..........558..*.............410-...........93............#..655....846....829.....760......=...................=....+...... -.....=390..*...................624........#.................+..473..............#......=...........+...577#......$...481.......651.869.806.. -747.......543.259.../717............&...346.......948..........$...........472.............230+......=.........206......*................... -................*........+.224/...798.........311...*..896*220...............&.+..................825....../............378...370........... -...............485.641.674.....................*......................618.......389........................565..&674...........*............ -..........475.................=.162............461.441...................*..........652......&....508..856...........364....464............. -...............154...452#...693....*................*.......391.........979....344..&.......814..............501.......=.................... -...............*................425....25#...........788............879...........*.....29....................&....................850...794 -393.............523...507*683..............174@..........-.............=...369....439....-.......*305.891..........952............*......... -..........+...............................................535..911.........................*....1.........441.....-.........88...906........ -..........997...17.............779..............960...................209........545......513................*...........98...........+608.. -.....................63.968...*.........340.......*...858..339...........%.-767...+...173........47.........906............*210............. -.............&..575..*....@.788.........*.........178.....*.......949.................+...........*.............-.....399.............@..... -..........571....%....984............414...............$.912.....*......302.............594.240..724....341..645.......*.......=..848.642... -....282@...........*......=......189.....138...227*.906.........70......*..................*.............=..........957...657.81../......... -..........*...$.813.179.901.592.....*....................................7....127.............$692...............$..........*.........*..... -.......207..91..............*.....784...872..756.........&..322..............*.........*19.........749.......548..624.694..858...512..598... -.................+.........352...........*.....*.934..126...*.....351..........40...616.......153.....*661............*...........*......... -...823........829...346...........821...826.304...%.......115.......*..........*...............*.............../...622...523.......606...... -...*...............*.............*...................186...........813....716@.372....16..300...489..108.....770.......................697.. -..........919...782.......912................@.........*.%485............................*..........*...............208.220....853.......... -...308......*............*......269.........539.......2.............853.......941.660.532........246.......980..357*....+.....*......./..... -..../......32.164.......15.479.=.............................=...............*....*......................#....*......+......-.855.....415... -.......305..../.....649....*......633...925...634............121............355....578.......14*....422..543.297....429..142................ -..960..+..............*.....536......*..@....-.......51..-.........592#..........+..............9..*........................................ -.....*......515......434............908..........189......430..................332...722..-.........450..#.........................139...... -..259......*.............................39..33.....$..................................*...159..443.....925.............743....414.&...=437. -......58..475...........227%.......217..../...*................../...............&....506..........................63..*.......*............ -.......=......-..............993....%.........166........605....293........977+..498......%.....834...455...........*.....%....981.991...... -...........636..728...*.......*.......494...............................................205........*.@...........528....226.........#....785 -664.9..............$..9...494.272...............725*....775...$....854..........226.243..........832....637*73................165........... -...*...340+.............@...*.......548.............405....*...768..*..............*.......81.........................10.787.$.......918.... -.......................145...265....+..........110........45.........90..299.....$........&.....696...475.-452..290....*...*..........@..... -......+....246.108.305...................894....=............121.588......*....69...................................236..97......348........ -.......709........*...........-...........-..........411...=...*.......135........................738..383.....634*..........429.@.......... -...........%........%217......119.....................@..47.........+.......923..............606...*.......960..............-............... -....835.....744...................546.......215.............512.....950.......%...444......&...$.833......./.........813.......400..%...48.. -........362.......898..#.......................*.732........*.............965....&.........584..................521..#...........-.995...... -....64.*.........*.....265........781..376...320.#........998...450.......%............................$...............................304.. -....-...966...875..981........742*.......*...........*276.........*...............541.....219.279..357..164...551..%717...............%..... -...................*...786.$..........*...163.....915...........960...%...509.135*...........*................-...........%.539............. -....666..699......179..+...612..=734..545...........................88.....&.......392...46..........483=..&.......548.135.....*.413.#620... -...$....*....948..........................530.656....%..484....*..................*......./...741..........444......*.......150...*......... -......................524...928..........=........858....=..562.571........117@.195..896......*......662.......148.388.............320...... -...166..48.../....-............#...159.......487.....................260...............#...713.........*.347................................ -......*.......657..837.....273.......%........*...155.................*........225..................228.....*370..../.......724.....764..... -......654.679.................@.........-....918...................681..461.............................776......737.................+...... -...........*....859......881#............625......$...........888.........+...57...............887.$.......*............................#911 -...46*....72...&...................................102.............651........*......*530.......-..667....850..829*.869%........298......... -......925..........892.352*........6.41....................+...160.$.....*.72..878..1.....................................738......*926..32. -...............279.........721......*..............694....799..&......878....*................219....+...482..368$...........*../........... -......604........*....................583*506........-...........740..........347............*....576......*................498..478.974.... -..486.-....................626..................320........&....../.................*979.=....863........497........111..............%...... -...................................538..78...*.....*......7...455.......223......939......673..........=......559-....*...834............58. -.......644....&.......#..669+.1.......*.....782.....865......*....779..#..............110...../....937..312...........489................... -.......*....571.....69........*.......169...................919....*.....808.................335...*.............................24*896..... -.......233................590.553..............198=..450.........661.......*.....................15...-....................-575............. -...........919*.....................................*.......234.........492..%...........300...........301........./866..........*.......... -...............470.....440.874...116....240........299......................27......409.......................................639.136....... \ No newline at end of file diff --git a/aoc2023/src/day4/input.txt b/aoc2023/src/day4/input.txt deleted file mode 100644 index 0391b6a..0000000 --- a/aoc2023/src/day4/input.txt +++ /dev/null @@ -1,203 +0,0 @@ -Card 1: 8 86 59 90 68 52 55 24 37 69 | 10 55 8 86 6 62 69 68 59 37 91 90 24 22 78 61 58 89 52 96 95 94 13 36 81 -Card 2: 6 42 98 5 17 31 13 36 63 61 | 99 88 14 20 63 5 56 33 6 21 92 13 17 7 31 93 30 74 98 15 11 36 61 42 47 -Card 3: 16 58 72 77 1 67 33 82 68 7 | 16 37 15 75 78 1 49 82 22 45 83 58 77 79 50 88 98 67 33 72 42 29 35 7 68 -Card 4: 75 35 37 6 29 54 64 57 82 4 | 8 33 27 85 84 54 75 37 4 57 70 29 64 94 17 6 38 41 82 81 71 35 47 51 19 -Card 5: 23 85 52 77 81 50 28 59 87 82 | 70 65 12 35 9 41 62 31 47 66 58 15 76 46 68 67 55 86 17 38 18 1 75 79 13 -Card 6: 77 64 13 36 68 88 16 75 25 95 | 25 64 55 58 75 66 23 16 27 68 69 88 13 9 39 42 29 65 83 97 32 89 53 96 94 -Card 7: 31 12 76 29 48 96 41 49 21 37 | 94 81 65 82 15 33 53 91 88 37 46 29 3 80 95 67 11 27 31 30 49 89 78 41 90 -Card 8: 20 5 52 31 46 25 88 95 39 83 | 36 62 48 39 69 3 81 11 61 95 43 85 34 46 5 8 13 45 10 17 2 88 70 52 89 -Card 9: 8 85 89 55 77 9 40 5 57 37 | 56 84 62 42 49 50 51 35 75 25 13 74 68 1 99 48 41 94 45 66 17 69 23 29 67 -Card 10: 74 1 7 89 97 82 75 9 11 42 | 94 71 41 30 50 58 23 81 35 6 97 57 67 85 98 10 87 43 96 77 31 8 54 72 65 -Card 11: 38 29 6 5 4 84 34 1 94 23 | 89 48 51 84 49 33 50 65 79 53 12 8 5 1 35 69 83 57 11 42 67 26 9 6 55 -Card 12: 35 83 44 75 36 65 85 87 60 72 | 8 3 91 33 59 29 56 26 21 60 80 88 25 5 51 47 46 44 41 31 62 79 76 89 55 -Card 13: 8 56 97 66 32 70 25 76 18 20 | 15 50 91 65 3 67 98 81 9 44 18 92 13 64 96 47 87 46 7 33 66 71 82 88 90 -Card 14: 37 52 63 28 19 89 44 76 98 24 | 70 13 59 31 17 84 90 6 62 19 74 36 94 1 15 12 29 95 47 92 23 67 60 58 53 -Card 15: 71 70 25 51 95 86 66 37 27 53 | 14 20 30 17 59 96 11 68 46 13 75 44 40 62 32 7 81 91 73 64 93 83 35 80 49 -Card 16: 97 4 63 22 75 73 5 52 34 26 | 33 98 64 47 90 94 28 35 43 30 73 51 7 27 10 40 97 37 34 32 22 71 63 21 80 -Card 17: 15 18 29 55 14 25 69 4 59 75 | 66 4 82 23 94 22 26 16 55 69 75 20 76 25 29 59 15 18 70 2 28 39 95 14 40 -Card 18: 26 40 70 42 37 68 25 76 56 97 | 33 97 28 13 24 50 66 53 67 84 26 68 42 56 92 40 65 76 25 32 70 93 85 37 94 -Card 19: 56 61 7 53 48 88 77 73 27 79 | 50 81 29 15 46 19 33 89 54 85 58 73 68 34 84 2 40 27 44 94 88 62 14 1 56 -Card 20: 34 89 62 72 6 30 16 53 78 2 | 2 78 73 89 85 40 47 30 34 8 60 23 72 26 62 96 6 91 29 16 57 46 59 53 94 -Card 21: 65 18 22 53 8 31 32 84 39 9 | 75 16 70 3 14 61 34 9 38 71 8 49 53 52 81 18 45 82 41 44 32 63 65 51 69 -Card 22: 44 80 76 71 36 1 50 87 23 27 | 1 76 83 67 87 68 25 80 8 23 57 29 52 4 50 64 24 44 77 45 27 32 36 73 71 -Card 23: 68 90 10 43 73 63 85 47 11 96 | 9 29 53 84 4 6 25 82 11 21 73 83 20 95 66 27 80 26 70 33 85 47 17 74 98 -Card 24: 51 68 2 69 39 86 55 70 6 54 | 72 17 14 26 91 52 96 86 66 64 51 2 92 53 36 39 89 42 40 68 55 37 6 54 7 -Card 25: 74 92 43 35 29 93 39 53 10 54 | 86 35 10 18 92 43 56 25 44 53 93 39 29 54 11 12 55 61 83 41 21 69 81 4 74 -Card 26: 80 19 99 93 76 67 70 60 39 9 | 98 2 26 95 21 49 44 9 31 58 83 46 14 99 4 78 12 56 89 71 66 29 47 64 96 -Card 27: 92 52 5 46 49 62 74 72 44 87 | 37 93 24 29 5 88 72 81 62 50 69 33 52 19 23 8 84 1 70 87 95 96 61 63 49 -Card 28: 79 80 98 59 54 45 91 16 11 4 | 80 10 98 45 78 91 1 65 12 11 4 82 88 79 54 55 8 99 59 67 68 16 25 3 70 -Card 29: 52 30 9 13 44 71 48 63 65 27 | 90 31 17 80 44 39 85 93 58 65 8 63 16 35 40 1 73 68 52 6 97 99 13 10 61 -Card 30: 12 19 35 9 82 20 72 61 50 67 | 11 84 77 14 46 29 62 28 81 98 43 12 15 72 35 99 19 97 75 1 20 7 82 60 52 -Card 31: 21 58 93 11 50 25 88 77 64 29 | 42 1 31 30 99 69 54 32 88 24 95 15 55 56 14 45 19 33 87 34 7 93 79 23 74 -Card 32: 39 87 70 22 46 95 69 3 58 80 | 85 95 24 45 84 22 37 12 33 43 93 96 27 56 70 67 91 58 10 68 69 40 97 82 13 -Card 33: 91 42 78 76 77 27 22 98 94 70 | 80 17 63 21 37 52 46 44 2 7 73 86 49 40 23 4 92 60 43 76 29 22 24 69 42 -Card 34: 11 50 70 95 32 81 26 57 7 76 | 83 64 65 46 87 56 28 98 90 11 96 40 99 3 16 12 61 19 97 76 51 92 93 34 15 -Card 35: 80 28 55 51 98 5 92 54 73 78 | 78 66 10 38 36 51 1 83 94 33 42 17 62 56 59 21 86 25 46 48 63 12 45 31 65 -Card 36: 63 76 16 74 10 14 50 73 81 35 | 3 68 1 76 62 53 67 97 13 85 28 65 32 72 34 98 57 20 71 17 64 48 8 56 44 -Card 37: 37 1 38 62 56 27 17 8 21 98 | 78 31 14 23 18 62 4 2 97 88 59 34 57 46 81 16 36 58 86 35 72 61 7 80 28 -Card 38: 56 30 92 44 33 11 16 45 72 60 | 74 86 59 87 22 81 46 32 52 21 78 10 57 1 13 85 49 75 95 29 8 38 77 54 50 -Card 39: 66 83 99 18 79 70 57 25 86 55 | 8 41 50 87 77 7 78 84 53 35 43 26 13 29 30 69 91 65 32 59 31 45 56 15 48 -Card 40: 64 46 22 83 33 38 95 75 69 89 | 82 65 45 68 75 33 69 49 22 95 89 74 53 46 38 25 83 64 8 59 81 16 94 27 60 -Card 41: 90 26 49 5 76 98 92 64 19 32 | 47 35 49 45 13 67 73 55 4 64 79 63 89 57 5 75 85 91 25 88 74 70 28 68 86 -Card 42: 45 52 92 43 76 96 4 86 53 62 | 96 53 55 18 95 44 25 45 47 66 62 2 52 60 10 3 1 37 87 92 98 70 9 86 23 -Card 43: 9 64 57 76 21 30 38 98 85 1 | 11 22 92 81 58 59 48 75 2 32 15 84 27 56 86 99 98 66 54 96 20 37 67 12 29 -Card 44: 11 41 84 1 76 6 64 8 31 44 | 11 1 33 58 55 6 84 44 70 20 64 41 90 98 72 42 8 38 4 39 76 17 18 69 31 -Card 45: 88 12 95 1 24 71 70 49 79 8 | 86 57 43 12 90 78 70 76 24 95 39 8 1 13 47 71 49 75 15 32 2 77 58 79 21 -Card 46: 84 91 96 41 17 76 9 36 81 1 | 82 5 99 19 43 20 86 69 37 44 95 41 55 65 96 70 24 47 77 15 31 36 2 79 22 -Card 47: 48 80 18 4 40 11 90 17 27 68 | 33 40 15 99 48 12 25 27 44 17 50 94 68 63 11 29 80 4 18 42 32 90 19 2 91 -Card 48: 44 30 51 97 22 57 87 17 53 11 | 35 17 81 22 11 30 75 80 74 54 79 16 78 97 89 87 51 37 43 72 53 57 27 94 23 -Card 49: 31 2 7 13 9 33 95 41 57 34 | 25 90 77 13 1 95 18 17 34 92 10 33 80 2 82 66 91 73 70 86 21 7 42 47 19 -Card 50: 16 44 77 76 23 81 47 29 62 22 | 35 27 83 47 88 76 98 64 31 86 48 42 95 67 25 44 17 51 18 26 12 1 90 99 62 -Card 51: 55 68 41 17 28 83 64 62 22 13 | 24 6 23 22 64 7 83 74 44 34 28 68 13 32 26 50 62 17 12 41 97 55 16 1 9 -Card 52: 96 79 43 83 37 25 86 24 66 34 | 79 18 6 2 64 62 86 48 65 34 29 68 9 87 76 71 3 69 61 41 40 35 37 55 32 -Card 53: 46 1 10 43 47 17 62 52 58 75 | 58 14 52 71 31 75 55 50 8 99 63 23 4 13 10 62 16 17 82 43 56 46 76 83 65 -Card 54: 75 33 27 30 87 32 68 89 44 17 | 73 28 31 97 27 9 57 14 15 20 39 82 38 36 43 58 75 4 44 30 33 80 16 48 17 -Card 55: 70 11 9 44 14 32 83 10 99 71 | 65 48 21 75 83 71 92 2 34 22 11 14 39 31 63 25 88 15 80 76 96 90 52 70 99 -Card 56: 17 38 6 13 3 67 87 64 37 68 | 41 7 53 11 5 62 93 28 65 8 56 32 1 69 47 18 82 40 20 12 80 37 89 43 2 -Card 57: 64 29 46 22 61 56 32 20 97 72 | 31 14 29 44 74 22 1 56 4 52 58 45 50 78 67 11 97 72 16 20 27 57 61 83 85 -Card 58: 62 85 13 46 79 37 99 81 91 8 | 98 17 85 23 33 94 35 2 47 20 3 11 36 96 43 46 25 60 59 10 22 55 87 58 28 -Card 59: 58 36 55 31 69 91 21 51 56 10 | 19 49 73 6 34 27 40 65 11 55 44 67 37 97 14 85 84 89 72 29 64 15 70 68 94 -Card 60: 46 40 95 45 75 74 7 38 10 81 | 32 38 4 61 78 5 39 99 86 33 2 98 83 42 11 75 27 73 81 9 54 37 40 12 80 -Card 61: 40 29 73 56 91 44 24 77 1 5 | 87 52 80 45 70 48 47 44 69 17 16 6 82 66 37 42 39 3 10 15 97 13 40 99 62 -Card 62: 54 55 29 80 70 50 97 89 33 68 | 21 3 76 73 6 42 2 91 19 18 72 92 94 11 77 32 52 8 81 48 35 16 27 12 84 -Card 63: 19 45 77 86 6 33 83 91 52 36 | 18 68 60 58 84 29 9 67 21 99 24 80 69 96 25 85 46 50 95 27 61 4 90 63 88 -Card 64: 88 23 57 8 93 17 20 42 54 51 | 12 78 82 80 85 43 73 44 84 89 15 36 30 10 25 29 7 99 61 60 86 14 26 28 83 -Card 65: 92 13 3 54 4 95 28 72 8 15 | 15 60 66 33 82 95 94 69 71 59 54 99 40 31 83 17 13 80 28 72 4 92 45 87 46 -Card 66: 1 42 10 66 94 21 46 95 73 32 | 64 99 3 86 69 71 95 78 60 28 5 19 35 85 67 7 32 16 39 66 89 42 31 43 58 -Card 67: 87 50 23 52 5 22 88 82 59 72 | 26 59 48 90 82 55 50 37 87 35 2 52 72 11 40 23 54 88 19 33 5 97 86 22 30 -Card 68: 21 89 80 14 73 61 9 7 68 48 | 18 89 38 26 32 21 79 15 14 86 44 55 95 41 80 7 9 29 73 1 13 48 68 28 61 -Card 69: 9 82 65 50 57 40 96 36 83 60 | 96 17 88 60 40 74 33 19 41 23 82 89 92 72 50 83 4 7 56 34 9 36 52 57 65 -Card 70: 40 63 61 64 3 21 52 11 66 53 | 82 42 13 30 44 72 74 83 45 70 38 33 80 8 64 48 49 73 19 51 85 47 90 84 92 -Card 71: 92 24 98 94 89 41 1 93 28 32 | 28 61 92 13 53 89 43 23 32 66 81 93 94 38 90 36 24 68 1 91 98 41 29 67 64 -Card 72: 29 61 68 1 78 69 33 45 39 18 | 81 12 36 28 73 75 18 35 42 33 95 68 3 79 39 8 24 82 87 45 11 91 23 51 1 -Card 73: 15 33 51 46 80 95 67 71 97 16 | 23 7 93 94 55 33 5 84 28 32 15 59 98 6 46 17 86 43 39 81 36 42 63 71 82 -Card 74: 95 9 16 72 30 20 41 97 45 90 | 30 72 49 66 36 9 82 98 95 16 48 57 46 86 47 90 20 85 54 74 73 4 22 60 32 -Card 75: 82 55 49 44 75 57 19 59 38 4 | 21 78 35 6 93 75 28 41 83 72 55 22 64 89 70 47 23 29 20 99 48 53 27 65 13 -Card 76: 19 31 41 50 27 43 74 21 51 44 | 24 79 71 16 49 37 60 14 8 33 52 40 98 6 34 62 56 4 10 30 39 48 99 67 22 -Card 77: 39 23 28 96 98 50 40 34 79 74 | 85 68 79 33 48 23 56 10 89 38 50 71 17 28 6 74 53 4 98 26 8 22 39 31 66 -Card 78: 80 31 82 32 70 17 68 44 22 97 | 72 6 95 57 13 94 37 44 70 46 32 69 22 56 40 15 77 88 17 82 31 47 71 18 68 -Card 79: 37 53 75 59 72 43 65 74 81 26 | 37 23 11 48 45 86 74 2 59 58 92 12 65 78 16 97 57 76 67 26 18 41 43 54 49 -Card 80: 63 41 23 39 40 10 26 93 24 73 | 30 19 74 40 49 90 22 65 78 10 24 93 73 41 51 7 61 15 29 39 63 16 64 23 37 -Card 81: 88 68 74 9 97 46 11 87 39 10 | 40 3 14 85 64 43 42 97 90 9 39 13 29 72 47 10 48 4 68 96 99 25 98 65 57 -Card 82: 81 48 21 57 65 39 12 66 95 33 | 16 33 79 85 92 52 50 34 15 22 9 45 74 17 24 63 28 72 84 62 58 77 41 64 83 -Card 83: 45 33 86 43 63 96 25 88 53 15 | 73 93 79 18 2 26 21 65 28 57 52 88 1 80 33 38 76 3 56 35 6 23 34 24 13 -Card 84: 31 74 96 40 36 99 91 92 63 10 | 78 38 59 27 84 34 31 72 19 91 12 45 57 92 32 44 70 50 10 24 87 33 49 65 61 -Card 85: 24 20 39 42 78 57 12 64 40 44 | 68 34 77 20 21 12 35 23 97 3 50 65 42 18 84 41 43 69 94 37 76 57 31 45 79 -Card 86: 51 48 14 80 3 72 92 15 35 43 | 50 69 18 76 63 30 58 19 65 16 70 55 54 12 87 62 60 68 93 83 1 44 26 98 27 -Card 87: 11 4 31 73 5 81 2 32 29 51 | 3 47 9 18 16 19 66 36 23 70 91 64 69 87 51 84 43 65 35 42 63 72 82 54 93 -Card 88: 94 10 52 17 78 45 99 66 8 81 | 11 31 71 59 41 88 67 30 47 98 33 21 37 15 53 20 36 58 57 91 39 28 49 70 86 -Card 89: 28 68 50 39 98 57 78 71 11 48 | 95 67 79 86 53 17 66 60 77 6 44 54 19 31 74 80 63 99 47 12 91 21 70 8 10 -Card 90: 36 90 94 26 59 84 63 38 48 39 | 69 56 39 88 89 97 26 38 83 55 87 13 33 68 95 94 18 48 36 44 59 84 63 90 66 -Card 91: 89 3 61 68 53 85 66 81 11 78 | 29 10 81 58 22 47 19 3 36 98 61 85 89 78 39 17 50 53 11 66 68 24 4 86 25 -Card 92: 57 5 56 91 64 38 89 47 55 74 | 73 51 48 19 57 98 64 9 74 65 53 47 54 72 69 38 56 1 21 6 91 40 55 5 89 -Card 93: 6 86 18 53 9 82 70 81 89 26 | 21 69 75 10 8 86 89 70 47 23 78 96 98 53 6 9 2 81 31 56 39 55 18 1 42 -Card 94: 86 78 79 57 3 2 5 69 30 53 | 80 2 53 90 3 30 48 79 5 78 19 35 62 59 97 56 13 12 70 86 10 69 51 55 57 -Card 95: 64 51 15 84 25 94 88 80 20 33 | 1 90 50 47 32 15 20 51 84 65 64 55 39 94 19 66 40 25 88 43 80 34 29 3 92 -Card 96: 83 88 94 87 79 45 49 91 99 33 | 91 53 72 37 87 40 26 88 33 49 89 99 24 59 94 52 75 83 79 71 62 50 92 28 6 -Card 97: 51 91 36 6 68 9 97 78 39 80 | 18 97 68 34 91 61 78 3 23 84 8 16 36 96 65 99 59 80 58 90 14 32 1 41 74 -Card 98: 92 41 9 7 52 86 83 40 8 63 | 47 17 14 35 34 22 19 52 79 7 81 92 1 82 93 73 25 58 60 39 59 27 3 16 41 -Card 99: 72 47 22 4 62 58 31 91 34 50 | 49 65 94 71 82 25 24 9 64 62 50 60 14 84 16 93 1 46 8 19 47 44 21 10 11 -Card 100: 96 18 53 37 54 98 30 84 58 45 | 30 59 89 23 8 35 85 6 36 54 37 17 92 79 27 39 4 61 11 80 19 58 72 51 47 -Card 101: 67 26 23 99 78 60 55 82 83 11 | 60 22 91 21 18 29 67 62 34 93 56 59 49 52 38 79 28 11 17 77 76 20 2 99 92 -Card 102: 28 94 4 54 77 42 17 44 59 48 | 24 13 61 6 5 83 50 77 76 37 90 71 79 47 8 98 41 75 59 70 89 16 30 17 45 -Card 103: 65 69 32 77 64 99 24 71 73 90 | 20 26 72 17 16 46 86 2 28 13 88 45 5 70 95 55 33 65 49 68 50 58 85 83 22 -Card 104: 78 17 88 26 65 79 8 18 47 25 | 31 86 76 30 84 44 62 97 81 42 14 72 25 32 82 5 54 69 98 52 68 13 92 3 58 -Card 105: 72 63 74 24 23 67 34 26 50 73 | 11 70 76 89 84 92 79 33 82 44 71 48 35 8 59 14 93 15 29 18 55 3 38 77 28 -Card 106: 36 40 51 81 60 96 34 49 85 89 | 72 15 7 40 60 97 68 52 36 55 87 96 85 89 49 61 78 34 37 27 76 5 51 81 12 -Card 107: 56 6 20 66 35 45 14 19 62 52 | 15 27 93 17 77 19 35 43 80 72 47 88 8 70 71 92 83 82 10 97 25 90 44 69 87 -Card 108: 33 44 49 78 10 26 20 65 77 13 | 33 54 2 24 17 20 26 7 93 5 3 77 81 46 92 78 49 65 32 51 44 95 13 29 10 -Card 109: 51 25 49 60 83 75 46 43 50 41 | 96 12 53 50 78 92 60 15 76 6 5 34 41 23 25 70 20 75 86 73 30 39 32 48 95 -Card 110: 13 22 99 91 47 53 35 34 37 77 | 79 35 1 13 88 57 76 89 81 15 53 56 99 34 6 68 77 32 91 47 87 37 4 24 16 -Card 111: 17 21 92 30 95 1 52 5 27 46 | 86 24 6 51 99 68 16 34 19 76 31 10 56 63 58 97 87 26 40 73 8 54 69 18 90 -Card 112: 52 83 38 39 95 12 57 14 46 85 | 12 95 85 14 89 50 52 17 92 18 38 34 55 83 16 66 19 88 4 20 46 57 77 39 11 -Card 113: 6 25 93 3 52 46 2 13 70 7 | 67 46 40 2 3 77 35 50 57 52 55 75 53 72 97 89 34 84 15 31 23 7 58 25 21 -Card 114: 24 53 25 12 17 82 14 50 3 74 | 91 83 57 50 96 68 52 11 56 44 89 95 15 13 54 20 76 48 30 88 53 55 93 65 47 -Card 115: 95 81 49 37 80 70 7 60 75 99 | 29 74 98 94 49 59 60 86 75 93 72 56 87 82 76 32 33 4 46 70 27 83 1 35 2 -Card 116: 80 67 54 68 98 47 12 56 77 60 | 45 81 47 78 29 39 56 42 80 54 68 90 37 2 16 96 5 38 14 59 7 30 6 67 20 -Card 117: 6 59 84 35 1 53 28 77 94 24 | 97 62 40 54 93 44 90 63 26 64 91 75 6 4 22 82 80 2 69 12 77 21 53 49 10 -Card 118: 86 30 39 49 32 29 27 68 97 50 | 2 48 36 99 83 4 38 5 47 77 66 1 20 10 14 15 63 78 89 91 85 80 41 28 54 -Card 119: 87 78 77 15 85 99 2 35 45 11 | 58 51 62 42 63 90 37 22 8 83 34 31 67 35 72 17 91 7 88 49 13 39 59 4 18 -Card 120: 80 21 33 94 26 68 73 35 83 3 | 67 9 94 49 27 50 40 30 60 90 86 91 98 69 6 15 36 71 38 31 17 33 41 70 84 -Card 121: 81 17 27 59 99 69 49 14 83 91 | 20 77 55 73 87 36 25 56 54 58 45 68 80 18 3 15 65 31 96 40 75 30 92 42 23 -Card 122: 22 44 29 27 77 20 86 34 5 99 | 63 19 97 74 4 39 7 52 87 31 81 45 23 18 53 47 50 73 80 2 70 94 26 66 14 -Card 123: 39 40 61 53 56 60 96 5 68 25 | 97 98 6 79 81 32 51 26 59 13 10 2 3 77 88 80 63 90 52 12 87 29 49 18 76 -Card 124: 78 19 92 75 56 95 2 16 43 44 | 95 2 56 4 92 66 53 88 21 16 43 78 17 44 85 48 12 19 52 40 69 75 59 82 26 -Card 125: 14 43 38 9 8 62 17 28 12 11 | 80 19 38 43 11 34 29 9 32 12 62 28 77 72 17 69 33 96 94 78 67 8 93 90 4 -Card 126: 60 95 93 99 11 49 20 75 37 54 | 54 42 19 49 92 95 11 34 74 93 60 52 99 5 7 75 20 12 68 98 43 50 36 37 56 -Card 127: 73 24 71 80 58 62 17 41 61 43 | 68 43 79 58 87 67 6 62 20 41 93 71 27 88 23 17 24 42 52 13 61 80 81 84 73 -Card 128: 99 10 91 58 70 47 80 30 96 57 | 46 57 3 72 4 87 70 10 59 7 96 48 28 97 91 58 47 76 36 80 8 23 19 30 99 -Card 129: 50 3 78 8 80 11 57 52 94 47 | 63 60 38 92 50 65 91 88 53 17 96 42 66 28 1 25 75 76 73 87 90 36 82 24 68 -Card 130: 38 42 33 70 61 58 73 88 74 29 | 83 92 77 58 56 74 55 93 38 46 29 28 37 68 33 73 91 61 12 64 25 88 42 31 70 -Card 131: 92 46 42 96 12 14 95 84 57 78 | 11 6 82 41 73 55 8 93 76 98 99 86 31 21 78 29 32 70 62 23 95 15 9 77 52 -Card 132: 40 97 45 2 19 99 29 98 37 20 | 5 56 36 21 33 83 32 98 66 20 16 37 97 93 40 78 43 77 99 29 87 96 2 30 39 -Card 133: 97 81 10 23 75 6 53 27 35 47 | 37 93 8 92 68 65 15 85 25 67 61 56 5 42 88 18 76 87 60 46 59 94 86 57 91 -Card 134: 96 66 54 61 10 85 98 40 13 41 | 90 58 9 38 28 24 57 52 5 81 80 62 34 54 79 49 2 95 1 18 41 65 82 32 42 -Card 135: 54 79 66 83 45 35 10 27 41 94 | 67 42 4 89 51 95 1 63 90 40 65 23 98 7 86 9 97 3 11 61 92 69 77 80 2 -Card 136: 37 86 74 45 70 95 33 28 82 32 | 67 13 62 8 63 41 78 40 24 91 11 48 7 85 59 81 44 37 45 90 66 70 35 33 94 -Card 137: 75 89 5 18 91 57 37 63 85 40 | 27 34 9 51 76 41 69 86 95 81 36 82 1 38 10 99 7 47 21 77 8 30 19 71 60 -Card 138: 9 67 82 54 5 98 7 6 40 96 | 13 83 90 88 44 17 82 24 47 84 23 85 62 45 72 91 58 46 38 32 25 79 70 59 33 -Card 139: 1 6 65 80 35 91 63 22 60 50 | 79 84 81 92 75 36 88 90 86 16 53 17 44 43 15 94 73 51 14 42 33 98 74 57 4 -Card 140: 24 43 8 76 91 79 42 68 81 70 | 65 36 56 57 16 69 38 86 85 37 22 9 98 33 45 25 95 28 52 2 27 6 14 46 55 -Card 141: 62 32 78 2 21 45 75 48 91 85 | 38 42 3 20 21 56 48 75 86 45 40 91 33 73 25 85 16 78 2 24 72 26 32 61 62 -Card 142: 90 10 32 43 65 91 24 22 34 62 | 91 26 72 81 7 11 32 10 90 33 34 87 35 24 29 3 59 62 2 65 22 43 57 74 79 -Card 143: 16 52 66 56 50 57 77 71 73 40 | 71 43 80 59 36 39 77 40 11 4 64 16 85 52 49 73 56 57 10 9 86 46 66 6 50 -Card 144: 61 56 14 66 2 73 39 8 33 97 | 26 8 47 67 16 18 37 39 14 9 61 33 97 2 66 56 73 4 75 11 62 68 49 44 34 -Card 145: 75 65 92 85 73 18 70 95 49 22 | 25 8 49 2 16 13 97 33 93 66 75 85 73 71 65 18 22 53 92 38 44 50 62 70 95 -Card 146: 78 62 86 83 26 23 80 2 77 87 | 23 96 38 63 83 22 20 86 77 21 67 66 75 5 36 47 26 61 80 87 82 16 78 46 2 -Card 147: 84 36 18 42 50 12 64 61 99 91 | 18 75 61 76 74 12 1 41 28 91 64 24 55 36 27 3 84 99 42 50 95 83 31 7 22 -Card 148: 61 91 60 18 68 50 73 29 23 87 | 18 76 33 5 27 97 31 37 21 38 56 91 60 87 23 55 58 61 50 45 14 29 72 68 73 -Card 149: 46 97 81 18 85 95 91 43 72 87 | 32 23 1 49 66 96 24 16 42 22 81 51 72 8 20 37 44 71 45 25 90 88 5 94 74 -Card 150: 17 99 20 36 33 78 9 87 81 84 | 37 8 79 65 31 99 45 36 81 90 73 11 49 46 87 84 3 33 19 12 57 9 20 48 17 -Card 151: 35 46 49 80 66 75 99 77 8 53 | 75 24 5 67 4 53 49 61 19 23 26 97 93 77 46 66 35 40 99 39 30 80 76 25 8 -Card 152: 11 80 39 1 30 36 16 85 33 66 | 26 66 60 2 94 16 81 48 80 43 85 96 51 68 33 63 88 54 6 36 37 59 5 1 47 -Card 153: 49 86 25 83 96 8 93 88 24 57 | 66 60 51 33 57 95 49 79 63 2 93 58 65 70 55 76 87 27 1 46 11 52 80 84 54 -Card 154: 38 41 75 30 91 6 14 66 47 57 | 34 56 11 70 71 60 22 81 41 74 39 67 79 98 87 42 62 3 32 57 55 46 33 16 51 -Card 155: 25 31 45 21 68 57 73 20 71 32 | 20 18 98 53 60 7 38 10 12 19 77 64 79 74 17 33 83 88 28 16 32 21 89 69 65 -Card 156: 19 35 39 37 84 50 62 95 96 56 | 89 24 92 67 4 47 54 59 72 84 3 5 76 96 23 1 58 86 32 21 78 88 68 44 48 -Card 157: 24 68 39 72 23 93 81 51 45 25 | 96 33 76 99 5 70 93 18 24 68 6 64 49 92 45 80 15 77 4 57 25 13 44 28 2 -Card 158: 51 18 46 75 2 80 20 72 17 29 | 97 55 47 23 20 4 39 24 64 11 31 16 90 29 93 72 18 45 27 46 61 70 80 68 67 -Card 159: 34 10 70 56 51 9 99 32 15 74 | 13 31 44 56 63 20 99 81 40 78 84 90 50 52 85 19 41 10 45 71 22 28 26 8 14 -Card 160: 69 49 13 23 36 64 24 18 57 7 | 54 62 96 36 7 10 28 64 1 85 3 63 73 21 27 37 49 47 75 34 97 30 77 32 9 -Card 161: 35 16 44 25 42 62 95 77 89 34 | 29 26 11 78 97 23 28 36 10 96 54 81 17 22 80 27 77 44 41 34 20 51 76 24 75 -Card 162: 60 17 28 76 67 12 41 15 53 70 | 41 19 35 64 65 15 37 22 80 66 55 40 45 81 17 98 85 74 57 4 16 91 49 5 68 -Card 163: 57 3 82 45 28 70 50 17 85 48 | 68 87 47 62 58 31 88 92 98 90 46 29 5 85 93 24 95 99 39 75 55 33 65 49 14 -Card 164: 33 81 13 87 53 48 79 70 17 91 | 92 57 21 4 36 27 62 1 46 80 31 72 5 94 58 99 75 67 83 25 51 9 26 52 63 -Card 165: 55 70 45 36 72 59 81 16 69 98 | 60 7 43 54 66 78 83 23 25 94 48 67 26 56 53 58 2 4 27 31 34 39 49 85 74 -Card 166: 94 64 48 15 36 35 79 23 77 33 | 78 80 25 5 18 34 92 69 84 86 26 13 89 65 29 3 7 39 71 31 42 21 51 48 55 -Card 167: 13 34 54 2 20 16 89 79 88 9 | 47 75 25 82 72 76 51 37 95 22 71 55 54 74 9 33 97 83 27 2 79 28 17 91 24 -Card 168: 33 82 70 88 7 46 96 67 26 89 | 73 8 22 1 59 45 92 24 43 41 15 64 3 58 83 63 57 82 20 18 91 13 77 60 19 -Card 169: 91 4 32 45 55 98 80 52 9 33 | 20 45 37 28 69 61 60 81 12 33 51 74 15 97 50 86 72 99 2 41 70 58 19 40 39 -Card 170: 45 72 63 87 70 33 89 41 4 18 | 25 9 19 49 26 63 11 73 54 64 70 37 45 82 30 1 90 24 87 42 4 40 91 71 18 -Card 171: 74 99 84 26 66 10 95 8 75 68 | 34 62 37 97 57 65 75 74 6 67 68 96 4 1 95 55 52 82 13 47 63 48 94 26 77 -Card 172: 62 99 47 83 94 8 51 70 9 76 | 94 99 83 26 57 76 18 67 22 80 61 34 8 39 65 78 13 81 70 51 62 93 9 3 33 -Card 173: 42 99 9 18 48 61 36 83 13 84 | 7 69 44 61 35 54 27 3 60 55 99 84 32 48 18 19 72 42 89 65 4 92 79 75 13 -Card 174: 48 34 46 43 53 51 72 35 19 3 | 72 43 57 51 14 34 2 36 53 25 94 81 87 61 19 35 23 4 99 26 48 46 7 90 86 -Card 175: 46 59 27 28 82 13 99 35 18 6 | 36 90 70 87 64 31 42 71 50 27 76 45 99 32 21 20 9 88 23 93 17 46 80 85 59 -Card 176: 92 44 3 29 10 7 66 4 57 21 | 36 68 61 87 65 1 53 95 60 2 34 47 75 42 82 8 83 79 54 74 93 26 69 22 32 -Card 177: 89 23 17 80 22 65 98 11 94 3 | 91 28 37 99 63 60 42 87 23 98 71 39 82 93 57 68 62 13 75 77 22 26 53 48 90 -Card 178: 11 75 56 47 64 88 91 66 59 12 | 41 97 40 26 42 67 23 28 31 99 85 30 11 94 81 55 74 89 52 64 65 69 3 38 43 -Card 179: 31 97 46 27 96 57 45 30 64 82 | 36 42 81 54 85 31 1 29 8 84 28 50 64 76 10 67 77 39 21 4 75 78 99 47 12 -Card 180: 10 32 84 45 87 16 82 14 95 8 | 21 8 41 66 56 42 77 83 90 9 55 61 19 38 23 50 28 62 99 58 33 11 84 39 98 -Card 181: 90 54 11 49 95 88 15 75 18 2 | 30 5 68 41 71 52 56 10 50 60 81 51 27 94 42 55 6 87 78 66 72 96 36 12 62 -Card 182: 73 1 91 2 99 75 30 29 48 89 | 46 51 34 7 18 57 64 9 23 68 16 19 85 70 66 72 5 87 12 4 25 97 10 89 60 -Card 183: 16 20 31 39 75 36 78 33 88 69 | 57 17 8 70 79 37 6 48 51 85 30 45 98 26 3 83 29 58 87 54 61 35 74 43 66 -Card 184: 69 50 38 49 9 96 75 82 80 14 | 23 99 30 83 78 9 50 40 14 74 75 8 37 69 82 42 26 49 96 1 38 58 80 84 7 -Card 185: 44 66 49 89 36 28 30 85 32 68 | 44 28 66 72 33 65 31 67 36 30 99 89 12 25 32 76 68 85 48 90 78 92 13 49 82 -Card 186: 46 48 6 52 24 19 51 76 11 47 | 93 63 78 33 31 86 68 10 74 70 3 83 36 4 54 79 8 77 38 57 97 27 22 29 53 -Card 187: 49 12 70 83 40 68 15 78 88 95 | 72 31 40 69 37 65 71 35 9 44 49 95 89 68 50 41 20 58 16 60 90 22 28 96 10 -Card 188: 86 47 96 63 55 29 91 31 59 23 | 55 77 30 23 91 75 86 47 29 31 78 67 4 92 96 26 63 37 80 54 1 11 32 15 98 -Card 189: 40 97 46 63 66 58 54 35 33 59 | 75 17 57 71 55 62 43 96 85 98 83 37 40 23 65 94 93 25 72 78 46 47 28 33 56 -Card 190: 94 41 57 47 6 24 65 59 44 20 | 95 86 26 77 87 47 18 27 16 85 57 61 66 37 35 38 23 42 50 60 98 71 62 8 25 -Card 191: 57 32 39 19 48 77 27 96 10 61 | 68 82 86 70 75 35 11 24 69 56 45 95 67 44 25 36 90 47 74 39 27 55 66 87 12 -Card 192: 50 94 12 32 88 76 95 23 46 49 | 60 9 6 37 42 50 96 15 95 66 34 94 91 4 33 29 14 92 16 80 98 64 12 57 36 -Card 193: 32 25 53 7 71 31 80 42 92 63 | 84 78 28 90 27 24 5 67 63 75 81 12 31 55 46 60 89 98 37 16 86 23 72 43 22 -Card 194: 79 47 88 9 97 76 62 23 72 84 | 77 78 67 65 91 79 64 38 41 26 89 16 10 71 86 82 47 75 61 11 34 66 7 3 70 -Card 195: 22 47 95 56 66 98 44 73 50 30 | 92 33 28 65 16 60 8 45 56 2 47 84 25 55 58 17 35 88 38 95 81 63 43 57 98 -Card 196: 76 23 10 43 9 32 46 62 84 79 | 22 4 49 42 23 55 13 35 90 9 24 52 65 26 95 94 18 37 47 79 56 59 54 86 48 -Card 197: 65 44 24 84 49 62 6 54 42 20 | 25 72 90 58 77 60 59 73 11 39 91 19 21 28 62 8 41 66 87 56 64 52 80 82 24 -Card 198: 63 44 64 86 78 25 92 90 99 70 | 62 29 51 81 21 6 75 58 54 90 18 10 59 98 97 41 4 52 53 64 80 28 92 11 9 -Card 199: 7 15 47 28 44 22 74 76 40 56 | 78 24 95 38 25 36 77 46 89 45 18 42 3 75 62 90 52 81 83 85 80 26 4 23 71 -Card 200: 85 88 3 44 54 19 9 71 29 53 | 72 42 56 55 33 68 65 86 58 3 57 83 12 31 96 9 13 62 70 80 17 29 41 27 6 -Card 201: 10 51 69 82 56 40 94 9 90 78 | 57 92 89 1 99 87 5 73 80 28 2 6 67 70 33 18 17 78 16 95 69 44 38 24 55 -Card 202: 44 47 79 75 24 50 86 80 62 87 | 66 91 36 15 28 81 57 69 30 14 10 20 27 18 77 46 95 72 39 23 38 34 60 37 26 -Card 203: 59 31 79 81 4 21 24 54 48 62 | 37 90 25 51 70 77 18 17 97 52 40 75 43 3 91 50 87 67 42 15 14 63 6 13 5 \ No newline at end of file diff --git a/aoc2023/src/day6/input.txt b/aoc2023/src/day6/input.txt deleted file mode 100644 index 1026e3a..0000000 --- a/aoc2023/src/day6/input.txt +++ /dev/null @@ -1,2 +0,0 @@ -Time: 41 66 72 66 -Distance: 244 1047 1228 1040 \ No newline at end of file diff --git a/aoc2023/src/day7/input.txt b/aoc2023/src/day7/input.txt deleted file mode 100644 index b1d1932..0000000 --- a/aoc2023/src/day7/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -3Q373 470 -K53JT 351 -A9JK9 856 -2T333 515 -867T4 541 -58K22 253 -5JA6J 994 -K4A4K 865 -94377 519 -92J2Q 901 -J7676 389 -2KK36 938 -JQ2KK 987 -Q7A82 509 -TTTA5 243 -72J27 502 -AKKKA 387 -23222 674 -55335 161 -AA655 73 -QKKQA 686 -5J2T5 680 -666AT 385 -ATA3A 761 -TTT8J 364 -98A2T 282 -59A44 260 -6T9QJ 130 -T7TKQ 721 -9274T 656 -T9AJ4 182 -A2222 259 -TQKJ7 67 -4J844 560 -AAATA 636 -9J36J 546 -QJQQQ 119 -249TT 295 -877J7 221 -4KA23 116 -929Q2 929 -99JQQ 445 -Q9QJ8 432 -4Q7TJ 963 -4J2J8 783 -5J657 257 -88788 183 -KKK7K 909 -KK396 637 -J45AT 117 -84448 806 -A2698 820 -A9AA5 320 -A3934 19 -Q45Q5 392 -78686 254 -A55A5 701 -98A4K 655 -5AJ88 95 -AK3KK 55 -773KK 33 -J9J9J 356 -2KAKK 563 -655K5 287 -55T56 475 -54444 308 -5J5QA 811 -QKA76 792 -2K288 42 -JTKA2 694 -88668 889 -8TQ64 212 -23QQ2 261 -8K8K5 365 -JKKAA 234 -3J894 880 -667Q2 817 -888T4 599 -T5Q83 315 -3QK29 670 -JK4KK 322 -75T8T 144 -AAA7K 291 -7T333 495 -A49K4 448 -JJ3J3 251 -5999J 278 -38438 890 -6K3Q9 122 -TTT99 93 -94775 240 -K8QJ3 369 -59674 107 -267J4 355 -QTQTQ 187 -46J44 961 -Q7AK2 580 -69969 609 -876A5 474 -A3866 642 -Q3QQA 526 -JAA88 425 -35Q9K 986 -QQTQJ 550 -54535 357 -2J222 639 -QK5J7 743 -222Q2 191 -T4T44 855 -QTQQ2 338 -JA7A2 300 -AAAJ2 508 -4J455 23 -A77AA 339 -5KK25 899 -252J2 737 -7QJ76 888 -K46QK 795 -A4T3J 640 -8A8K8 176 -AA5AA 41 -J2Q24 958 -58855 632 -333J3 610 -74474 807 -K3AAA 78 -JJ222 765 -44224 688 -76733 361 -5845K 181 -TT4T2 974 -23J33 102 -QQJ6Q 34 -Q9AQQ 150 -22747 717 -KAA5A 121 -7AA7J 286 -J786T 780 -3K8TT 32 -A6KAA 25 -9A362 166 -A29Q2 499 -6688K 57 -KKQKA 947 -999JJ 975 -6A666 927 -TTT3K 658 -JQQ7T 467 -8A247 934 -7JK8J 712 -KK39K 612 -6666Q 17 -77Q37 868 -A66AJ 169 -KKKKJ 535 -7Q7JJ 591 -K9848 646 -46888 931 -A86A8 326 -743TA 527 -QKK67 977 -KKJ6K 471 -AAJ7A 571 -55292 330 -3A222 390 -6453J 109 -JKKKA 403 -4J9T5 21 -K7A5K 486 -6TT34 793 -3479Q 60 -44624 443 -6KK3K 164 -4447J 112 -QQ27Q 452 -JAK65 522 -Q5Q5Q 354 -J5Q6A 540 -68999 711 -3QJ4Q 155 -A6AAA 314 -222KK 767 -55T9A 373 -T5T57 913 -TTTTA 794 -8J258 190 -3Q87J 489 -AAQAQ 950 -Q4JJ4 588 -6T64T 9 -636K5 228 -AA222 248 -7KJ35 616 -26646 507 -44A4J 829 -23323 904 -TA265 135 -JJQT9 136 -KATJ8 644 -J2862 713 -4JQ28 152 -Q3K2T 56 -6Q232 812 -9A622 885 -KJKKJ 773 -3859T 374 -99333 101 -TKTTK 205 -3333A 35 -5A4AQ 548 -T4944 967 -43353 813 -423JK 869 -T99T7 219 -3AAAA 394 -T65Q6 740 -J9243 352 -6656J 496 -444K4 574 -Q8T6K 98 -AQ55K 917 -7QQJ7 605 -TJ5TT 615 -68JQ5 852 -7A3J2 745 -369AK 217 -57755 343 -A8844 61 -Q76QQ 698 -36333 774 -237Q7 12 -KT694 283 -88286 154 -4T552 990 -Q9J54 759 -K6697 350 -A3A33 937 -AA9AA 246 -QQ7KK 748 -TT4A6 380 -4J992 845 -A66AA 573 -5QQ2Q 28 -86J37 214 -2A443 362 -Q9QKK 654 -44434 964 -77773 74 -44355 235 -9QK75 863 -3AJ33 766 -T2TJT 53 -44494 860 -883A9 309 -QQ59Q 360 -A88A8 584 -A83A4 395 -7J9TA 299 -55955 833 -QJK35 188 -4656A 514 -8KTQ4 554 -56J47 985 -J272J 184 -9J999 671 -72295 31 -53555 264 -4A537 750 -7A4JJ 875 -QK834 463 -88KKA 570 -QQ9JK 906 -6Q646 858 -53336 359 -QJ8QJ 587 -424TJ 607 -KTKK6 285 -Q5AQQ 84 -899A8 542 -K8TKK 250 -4JA4A 705 -6J75J 896 -888K8 312 -5583J 660 -6T335 614 -Q757T 945 -3AKKA 629 -KK946 825 -3393Q 406 -7J288 367 -49999 907 -99729 837 -66265 384 -K47JQ 263 -2AJ4K 566 -TTKKA 186 -8J877 418 -56844 666 -JTTTT 531 -6TJ94 26 -JQ5J5 344 -7J772 85 -33747 510 -KJA2A 729 -333TQ 578 -JQAT4 955 -75766 834 -QQ6QQ 980 -32K33 306 -TTTJ6 231 -2QTTT 213 -999AQ 608 -33353 202 -Q8Q8Q 756 -KK555 490 -746K8 691 -98A75 853 -JQ858 816 -KK9KK 536 -9T999 933 -TA8A8 39 -8558J 919 -J8KQK 15 -73Q2K 503 -2K2KJ 585 -JK9K5 903 -TJ7T7 545 -J723T 453 -KT895 583 -TTTKT 123 -39535 393 -K4K88 893 -43KK6 821 -6AA8J 504 -972TA 597 -7J736 592 -536A8 63 -J23Q3 402 -83K9Q 405 -28337 396 -9T558 776 -7AA78 946 -QTT24 441 -26QT3 401 -AJQAQ 953 -6T6AJ 304 -JK5KK 162 -2JJ2J 484 -73773 6 -8J864 630 -78782 557 -6TJ52 424 -487JQ 830 -8J698 82 -AJAAA 866 -228J8 204 -622J4 823 -6J2QJ 79 -22K22 232 -A86A6 444 -83K8Q 965 -JK586 944 -JA848 465 -8888A 45 -2T28T 803 -73J73 450 -27272 857 -7A777 544 -A998J 679 -46466 458 -KJ233 192 -4453J 378 -TQQJT 451 -A3K5J 512 -888Q6 968 -6AA66 841 -QQ222 883 -3K5A3 233 -JA4AA 379 -62288 778 -44456 51 -4A644 862 -55647 981 -A77A7 327 -KQ3A3 687 -QQ7Q7 976 -T4A2T 293 -46226 628 -Q59Q5 348 -36AJ2 984 -54433 532 -JJQ24 831 -7455J 381 -78845 218 -72AQ5 276 -52T22 618 -99399 68 -36AA3 118 -69669 839 -33Q5J 785 -TJ766 626 -T28J4 556 -T883Q 142 -73928 932 -TJ884 494 -AJ36Q 485 -9Q999 324 -T725Q 267 -22622 88 -92364 685 -97792 789 -J673K 620 -99943 625 -77JJ7 921 -8828Q 572 -7777J 353 -TAAJT 926 -99T29 787 -AQ4J4 520 -9J559 5 -J3T94 706 -K9KK9 918 -KK252 439 -79925 97 -TT47T 497 -848T4 126 -6TTT6 426 -K8825 925 -888J8 62 -K5K85 972 -AAKKA 449 -J5555 663 -89J99 27 -4Q444 922 -A9A99 397 -5A555 163 -8J3K8 662 -29989 645 -95222 751 -Q4Q4Q 193 -555K5 982 -74AJ8 735 -KKQ6K 668 -7676Q 916 -A28T7 784 -K57KK 388 -A4J4J 115 -2K442 229 -33TT3 956 -TT6TA 741 -TT782 131 -TJ5JQ 238 -TQ7T7 415 -29KQQ 598 -A8AAT 676 -46A28 650 -6698K 696 -6J969 158 -6694A 271 -QTQ5T 498 -Q2QQQ 613 -2A7QJ 210 -6T466 683 -QJ575 799 -Q63Q3 822 -Q9J28 848 -TTTT7 7 -KA9AA 854 -K2JJT 859 -28228 179 -K29KJ 429 -JJ8JJ 222 -A99A5 457 -QQTTT 983 -43KK2 134 -984JJ 1 -97J97 892 -2AAA8 689 -9Q77J 819 -98TJK 517 -56KA5 71 -7J66J 294 -55855 335 -TTT8T 596 -33663 407 -7J774 911 -3JQ55 564 -QQQ7Q 329 -85668 120 -KK333 301 -Q3553 867 -7K557 988 -Q8488 400 -96J99 643 -29224 714 -T8ATA 346 -99J93 462 -K83J3 697 -3KQJ4 653 -5KJQ2 824 -4JJ3A 897 -56248 727 -JJ666 702 -355T5 245 -45KAK 553 -88AAA 236 -K55J5 581 -AJJ49 65 -A8Q3J 197 -AAAKQ 529 -55976 707 -77776 930 -A9995 227 -K7J7K 912 -29K99 244 -4Q464 80 -22972 195 -666JQ 189 -26278 241 -79288 601 -5454A 427 -JTAKQ 138 -88833 549 -84J54 215 -AATAK 114 -58959 145 -8ATTJ 431 -QJ26K 265 -A3JA3 81 -T8T4J 242 -4T3A3 37 -44777 871 -JQ542 561 -A97Q9 693 -A76T4 412 -28T4A 481 -T485A 861 -78286 303 -K6776 52 -T8TKQ 754 -KJ938 957 -Q444Q 840 -25A89 455 -58588 673 -K8858 634 -K8KJ8 170 -K6KKK 851 -53353 140 -2T2K6 593 -QQAQA 48 -TT6J6 305 -922J2 920 -AA22K 22 -J555Q 725 -TTAAT 781 -2244J 171 -A95K7 436 -2J299 651 -78AAA 321 -2KKK2 690 -2J565 649 -77J5K 77 -T999T 762 -J4445 879 -J888Q 873 -J884J 1000 -98898 413 -29299 442 -QKQ3Q 678 -A652A 993 -55272 898 -KA5K5 664 -8KJAQ 147 -Q56QJ 734 -K77J3 739 -J7677 661 -T5569 206 -2AA2J 757 -TJTJT 342 -T2TTT 682 -88J82 363 -9KK78 700 -AT4T4 730 -86968 736 -99995 207 -7A3J4 172 -8KK87 991 -TKKJJ 16 -J7532 165 -J9888 996 -9AJTA 92 -43T78 310 -93J77 317 -J4424 805 -43J86 703 -952TJ 127 -54363 146 -8T2J7 435 -88848 832 -TAAAQ 791 -8228T 256 -699QT 815 -KQQQK 30 -T82J3 49 -36222 4 -AK288 86 -6792A 194 -2Q22T 667 -J3545 270 -9QJK4 280 -QQ22Q 371 -K9247 446 -A422A 943 -765K3 469 -9J5A6 874 -4A4QA 775 -8Q8Q8 124 -T8Q62 850 -8Q8Q5 747 -6KT88 738 -82888 722 -3TQQQ 349 -2J3TT 539 -7TQ59 72 -8998T 733 -JQJT3 414 -82428 589 -92856 423 -89833 54 -79T4A 523 -95839 979 -TJJT5 936 -33839 29 -37433 511 -TKJ2T 681 -JT973 633 -Q8Q8J 971 -Q5555 440 -K8886 24 -Q75A4 43 -3AQ33 298 -T446T 719 -577J5 753 -KJTKT 167 -52528 8 -25222 641 -QJ2T8 621 -A8JQJ 316 -7T7A7 772 -KQQTQ 141 -83734 758 -6Q66Q 434 -QJ6Q2 638 -AAA7A 196 -57555 203 -4QJQ4 216 -82J5Q 763 -A73A3 940 -46AJQ 559 -T4936 103 -89Q29 262 -7872T 466 -A5J58 274 -AAAQA 290 -37399 844 -A759Q 328 -TJ9TT 273 -77887 268 -64A2J 978 -6T76Q 110 -QQ467 742 -9J7Q5 422 -4K6Q3 91 -336K3 826 -6K63Q 382 -23552 105 -243AA 505 -Q887J 764 -2J92A 749 -68A3Q 416 -7T8T8 199 -225J5 404 -24774 153 -T7T77 870 -3J393 347 -Q5Q8J 128 -7Q777 796 -QKKKK 617 -86686 108 -44KT4 75 -56858 622 -5AJK4 960 -3245Q 311 -36536 370 -6644Q 11 -JKAAA 104 -T2426 579 -J3399 83 -33933 602 -A299J 777 -26J22 224 -8666J 594 -J3J38 669 -3AJ84 239 -52Q8T 877 -QJQQK 779 -QJ6T8 797 -43339 399 -9AJ74 476 -T499Q 13 -2TAKA 928 -T3K78 809 -2923K 201 -J8858 798 -T8888 818 -98399 168 -8T266 555 -23A57 652 -3KKK3 113 -22T22 460 -AJJAA 106 -7QKA8 464 -QQ8TQ 368 -99A99 341 -62Q5A 223 -J9T47 568 -Q7388 894 -69662 744 -96J2T 323 -2A779 89 -Q2874 269 -77797 948 -5359A 864 -AJ9K4 482 -Q3Q44 567 -JT958 665 -A38J3 438 -J4666 296 -428J5 501 -38K8K 410 -6T979 709 -3533T 284 -2285A 910 -933T6 882 -K6666 786 -56Q32 992 -5J752 198 -AJJQJ 600 -KK5KK 3 -38T94 180 -67QTJ 69 -J6636 200 -229J8 493 -QJTQ3 247 -5KQ5K 149 -654AT 528 -T84T4 878 -Q23QQ 905 -QQQ74 325 -4JTQQ 408 -T4T78 340 -3T5T5 551 -3J3J3 391 -88844 631 -TTT9T 810 -57775 935 -A777J 604 -4555T 2 -A5J8T 942 -22AJJ 506 -22323 997 -A3323 624 -84442 516 -2T992 76 -J7T76 828 -J8552 995 -KTKK3 886 -33853 782 -53233 129 -44J4J 372 -KQQT2 480 -K5649 576 -3J63K 760 -2J666 827 -6JT68 318 -45Q64 849 -49884 801 -9KTTK 902 -66737 952 -5Q8J4 708 -57Q92 724 -627J7 331 -K22J6 473 -4T444 923 -J4444 552 -78J8J 491 -4K328 477 -4AA3A 808 -7A34Q 437 -AQ888 428 -8TA99 768 -AA9A9 143 -9K5AT 211 -77722 40 -TQTTT 941 -Q2A4K 492 -236T9 677 -J8686 746 -J585K 64 -TJKQT 582 -T3TTJ 157 -22266 38 -KT5TK 692 -QJQQJ 908 -4K623 279 -7JJJ7 173 -64A66 524 -J7AJ8 417 -K43Q3 769 -T662T 148 -54J2J 488 -K6485 44 -J6666 970 -J26J9 209 -8337Q 334 -A27A4 319 -A7T78 132 -K777A 842 -KKK4K 249 -99K9K 430 -8745K 151 -Q2QTJ 433 -QKQ76 525 -25Q2Q 533 -5QK6J 800 -77T77 558 -5K323 939 -33KK4 590 -K8A52 111 -ATQJ6 569 -ATK89 50 -4433A 836 -3KKKQ 891 -46TK4 538 -5249Q 447 -2462K 675 -8JT6T 336 -466J7 459 -7K7KK 838 -544Q4 959 -58773 483 -823J5 999 -2TKA5 752 -AKJ58 386 -7T833 99 -KQ88Q 659 -KJ3A4 790 -K9595 307 -3K3J4 534 -3838T 220 -32522 720 -366Q3 500 -J8868 989 -T7KTK 376 -JQQQA 14 -42555 409 -5T5T5 648 -4KK4Q 383 -K7777 884 -736A3 543 -343Q3 366 -TJ856 237 -JJ555 46 -K5QQQ 275 -QAQQ7 672 -8KTJQ 731 -QQQ3Q 47 -J257Q 575 -6Q3QQ 87 -QKK43 924 -TTATJ 998 -K44K5 771 -37895 881 -48823 521 -KKK74 456 -99J79 139 -J4542 635 -AJ96K 954 -K8937 411 -5J355 895 -96967 185 -333T3 562 -TAJ77 755 -J38A8 487 -AAT79 313 -A6Q73 398 -386JA 10 -J35Q8 623 -27758 969 -3K3KJ 966 -7928Q 627 -AAA4A 59 -2AA52 478 -848J8 133 -55225 843 -TTQT9 619 -3Q79K 255 -27AK8 58 -TKTKK 272 -KTTAT 333 -55666 802 -47748 454 -Q3T56 699 -63T3T 302 -8754Q 723 -4J86T 358 -8TTQ9 226 -5523J 125 -88588 606 -58AAA 208 -TK273 137 -4Q7KQ 160 -29292 577 -Q333Q 611 -22TT2 716 -A55AA 258 -64822 468 -22228 847 -2242T 788 -JA26Q 472 -8JAAA 174 -K5Q8A 175 -Q5AT4 732 -J4434 530 -76666 337 -9998Q 547 -9T2J9 100 -3Q982 90 -7727Q 281 -92944 973 -K2597 814 -K444K 36 -26KJ6 292 -34K38 962 -5A378 225 -636J9 375 -TTTT4 420 -A66TA 461 -69QK5 345 -76293 479 -66966 804 -A3383 297 -T82TT 657 -2QJJQ 156 -K2JK3 94 -K6K66 252 -K58QJ 876 -6J979 513 -92647 718 -QQ9Q9 586 -862Q5 20 -5465K 915 -KQ44Q 595 -T66T6 288 -TJT7T 710 -5JT8K 159 -KJTK3 603 -KKJTQ 949 -67776 914 -J4323 177 -22229 704 -96999 178 -8AJKA 70 -69T69 419 -65556 770 -87738 537 -547J4 835 -44766 421 -3355J 684 -2K266 647 -5TTT5 266 -3T3TT 332 -88JJ8 96 -QQ5K3 887 -K7JKK 377 -J8Q2Q 66 -2KKJ6 230 -TTKQT 277 -22Q92 18 -JTTTK 695 -J993Q 846 -88898 728 -88T87 715 -Q74J4 872 -4T999 951 -T997Q 289 -92QA9 726 -AJ394 900 -TT2T2 518 -JJJJJ 565 \ No newline at end of file diff --git a/aoc2023/src/day8/input.txt b/aoc2023/src/day8/input.txt deleted file mode 100644 index e27fbc1..0000000 --- a/aoc2023/src/day8/input.txt +++ /dev/null @@ -1,740 +0,0 @@ -LRLRLLRLRLRRLRLRLRRLRLRLLRRLRRLRLRLRLLRRRLRRRLLRRLRLRLRRRLRRLRRRLRLRLRRLRLLRLRLRRLRRRLRLRRLRRRLLRLRLRRRLRRRLRLRRRLRLRRRLLRRLLLRRRLLRRRLRRRLRRRLRLRLRLLRLRRLRLRLLLRRLRRLRRLRLRRLRRLLRRLRLRRRLRLRLLRRRLRRRLRRRLLLRRRLRLRLRRLRRRLRRRLRLRRRLRRLRRRLRLRRLLRRRLRRRLLLRRLRLRLRRLRRRLRRLRRLRLRRRR - -GXT = (MQM, CHN) -MBK = (RCK, RCK) -HBS = (QHS, RXC) -SXK = (FDB, FKP) -NJB = (BSB, KJM) -SPD = (FNL, RSH) -FJF = (NFH, XJN) -GHV = (LSV, BTS) -QDT = (HXV, PDX) -MDH = (XDK, DKN) -AAA = (FKL, CFC) -GRB = (VDP, LMM) -CXK = (DVB, CRJ) -FDB = (FTD, CNK) -LQT = (BJV, SMQ) -TSK = (NQD, VSG) -VLF = (NDS, CTV) -PGP = (DKC, CKL) -PVJ = (FDB, FKP) -VSV = (NFP, QHX) -KXN = (XJN, NFH) -KMQ = (VBH, XXH) -QXR = (RMD, TLT) -DLN = (TPD, KBG) -BHK = (GRP, RXF) -TSX = (HQP, SHK) -PTV = (VSG, NQD) -QVN = (XBH, DHC) -DDM = (TCB, XRQ) -NKD = (CDR, BJM) -JNR = (FMC, SQN) -VPQ = (JGC, VCJ) -HPB = (STQ, DDM) -HRT = (JNR, BGH) -CNQ = (HQV, PJQ) -PMG = (LRB, XXP) -RKV = (XGN, VCG) -KVQ = (KHS, SLV) -MDM = (VDX, NSF) -VHT = (PGP, GJS) -BPD = (NBF, VNH) -JCQ = (JCB, XVR) -CFJ = (PQP, CBJ) -DSX = (BXN, VDS) -MGH = (PFV, NLQ) -MPK = (FND, BJX) -QFR = (HFC, CNG) -PHS = (VNH, NBF) -KTT = (MTG, SQM) -JBK = (CSR, VXV) -BKL = (DLB, SHQ) -GQH = (PCH, LDZ) -XVJ = (CQM, SLF) -VBN = (FFF, PDL) -KQH = (SLT, XLG) -SSN = (PQH, LFT) -MQM = (SBH, TTC) -SCR = (HGH, QGS) -XTZ = (XKM, JTJ) -ZZZ = (CFC, FKL) -PRA = (GRB, MDB) -VTV = (LXQ, HKP) -PPX = (SQM, MTG) -PVA = (MRJ, CVH) -BJH = (VTR, RKG) -KPH = (RFD, NJP) -HXG = (NVJ, HNG) -LRX = (DCX, MGH) -NFD = (PFR, FVQ) -TDG = (TDH, ZZZ) -XKM = (XDG, VHT) -CKT = (LDC, VPF) -QQR = (BFQ, FXC) -RGJ = (KTV, GFR) -XDK = (MVC, SPX) -TLT = (MBK, DGL) -CDR = (JBG, KPH) -LTH = (DFN, BHK) -PVV = (BFQ, FXC) -FCK = (FRJ, KVG) -FXB = (MDH, VSJ) -DHD = (LDJ, RNH) -HHR = (HSK, CJD) -LSV = (LNP, NMD) -JSX = (DPF, SNN) -SBH = (XKD, GTX) -BHJ = (JSX, TMN) -CQX = (XPG, RLB) -XRQ = (FJK, NCF) -GMF = (JBX, DRV) -KBD = (HCC, TND) -KGT = (NLK, FRX) -RKM = (RTM, FMQ) -GNM = (GML, NLB) -SXP = (RKG, VTR) -PMS = (XBH, DHC) -PQH = (PJD, CXK) -XXH = (BMB, JGJ) -RHL = (QHS, RXC) -DFS = (JVK, VBN) -QCS = (XGN, VCG) -MJJ = (DDM, STQ) -SPV = (PXX, RRT) -FRJ = (SNX, MPQ) -FKC = (CBF, RKM) -SRG = (QFH, LGP) -VVQ = (BJV, SMQ) -BQC = (DSP, TXQ) -SHQ = (NKR, RGJ) -KCS = (QGS, HGH) -MTV = (BXN, VDS) -CNC = (HPB, MJJ) -SNF = (XXP, LRB) -KTP = (QRX, KML) -GSC = (HSK, CJD) -QRX = (CRB, TXL) -MDB = (VDP, LMM) -PFV = (CLM, CTN) -RRB = (HHR, GSC) -DDQ = (PXX, RRT) -TJB = (LSX, XNR) -BSP = (TXC, LKB) -MMV = (DKK, NFD) -DCB = (XKP, TNJ) -QKV = (CTT, SFM) -XDG = (PGP, GJS) -JMJ = (JLK, NJB) -VBJ = (HJV, JFD) -QHM = (CLJ, QGP) -STR = (HXG, RFC) -DPF = (VNQ, DQQ) -RXF = (NHV, GBX) -FXC = (JLX, LBS) -XVR = (MVT, QHD) -KNM = (BJD, QCK) -GTX = (MSB, FNP) -XCS = (PTN, NRH) -CGS = (FRX, NLK) -RCK = (CQM, CQM) -CDS = (PRR, GCJ) -BXN = (KQC, MSV) -PTN = (VST, QHJ) -TPD = (HJF, TSS) -RNH = (TTK, DBN) -TSM = (TPD, KBG) -KTG = (GPT, BMD) -PJP = (XBR, TCM) -QPF = (KJF, NJX) -HKP = (PLS, PGK) -KBG = (HJF, TSS) -SQK = (LSD, KNM) -XKD = (MSB, FNP) -QQP = (LFB, LTK) -MDX = (KTJ, FXF) -JLK = (KJM, BSB) -FBR = (PMG, SNF) -GSJ = (TDH, TDH) -DQQ = (FKK, KRF) -CTV = (CQD, RQX) -MNT = (RLG, XXQ) -GFL = (FGJ, KMD) -BJK = (VQX, JCQ) -SPN = (NKS, CNQ) -LNL = (XLM, XLC) -HKF = (HKJ, NNC) -FTD = (CCX, MSS) -RPV = (MDQ, DGS) -DCX = (NLQ, PFV) -JGB = (DVT, DRH) -CGM = (CHN, MQM) -JNQ = (PPX, KTT) -BJM = (JBG, KPH) -NFP = (SPD, XCT) -TPL = (LSD, KNM) -XTV = (CTJ, HPX) -LKB = (PDF, SLK) -QVK = (KMQ, MGF) -QVP = (VCX, JNQ) -NSR = (TJB, NBB) -XLA = (DLB, SHQ) -QLP = (HBS, RHL) -BGH = (FMC, SQN) -BJX = (LRX, PNM) -MVC = (BPD, PHS) -DXQ = (TMN, JSX) -PBK = (QKV, CTH) -GBJ = (RNH, LDJ) -BMB = (HJS, TJT) -SHT = (MFQ, LCT) -HSK = (CGS, KGT) -DRH = (PKN, PBN) -PQF = (XKP, TNJ) -RPX = (HCT, HQT) -FPH = (VQL, NPJ) -GLC = (PMS, QVN) -VDP = (SXK, PVJ) -JFD = (QBD, DGT) -LQL = (NPT, GVS) -TPQ = (NHL, MTD) -KRF = (HVT, MPK) -JQG = (QDT, PCK) -PJQ = (KVH, LBV) -VBB = (XXQ, RLG) -PSH = (SQV, TLB) -VXH = (VCX, JNQ) -VQD = (NBB, TJB) -JVD = (GDJ, JGQ) -SDR = (FTF, NQL) -NQQ = (TFM, CMC) -FNL = (LTV, CSX) -FVS = (NSF, VDX) -VTJ = (VXH, QVP) -KQC = (LGG, LGG) -SCS = (MTV, DSX) -QPS = (HMV, QQP) -CQM = (JDD, JDD) -FJX = (VBB, MNT) -GBQ = (BXV, LFR) -HGH = (SQK, TPL) -SLT = (FXB, NGN) -PBD = (HDC, FCX) -CKL = (MQS, NND) -LSX = (MBF, SPN) -HNG = (JQG, GKD) -MFQ = (PSH, TGK) -SNX = (GCS, KSF) -FMQ = (DXT, DFS) -TXC = (SLK, PDF) -VST = (SSN, LSR) -BFB = (VSV, SVC) -VNX = (TMF, QFS) -VPK = (VBB, MNT) -NVR = (XPG, RLB) -FLS = (FSL, CKH) -FKP = (FTD, CNK) -MGF = (XXH, VBH) -LNM = (NFD, DKK) -FNP = (VTT, MVG) -HDC = (PXP, GVH) -KVL = (LCT, MFQ) -XGP = (RHG, RTK) -JCT = (NJB, JLK) -XSL = (SVC, VSV) -SRS = (HPD, XBL) -FSL = (JMG, TFD) -CXB = (KQV, QGK) -QRP = (CGF, CQF) -PRG = (MDX, KPL) -VLL = (MRB, MHN) -VNQ = (KRF, FKK) -NPJ = (VPK, FJX) -MHN = (SRG, TTL) -KFN = (DFN, BHK) -FVQ = (LJM, TJV) -GKD = (QDT, PCK) -GVS = (FCK, NGC) -MBF = (CNQ, NKS) -SMQ = (KSV, KMF) -CRJ = (GSJ, TDG) -LHT = (BTL, KMB) -KJM = (KJC, BGC) -TTC = (GTX, XKD) -QFT = (PRM, KXS) -SDS = (JMP, TSR) -BLX = (PQF, DCB) -PXX = (LJT, QFK) -SQV = (FCB, HXF) -RQX = (DBJ, VTV) -THV = (GJL, MND) -SLK = (XBP, CXB) -LVS = (CTJ, HPX) -TSS = (CGL, JST) -MTG = (RKT, GTJ) -FFF = (GBQ, VTM) -XMV = (KVL, SHT) -FDJ = (MLG, MLG) -HPD = (MQK, FLS) -TLB = (HXF, FCB) -BGC = (SCR, KCS) -FBM = (PBD, MFK) -TJP = (JSS, GHV) -TXL = (NQC, RXH) -TKM = (GLQ, TKP) -RNS = (BJK, PHJ) -RRT = (LJT, QFK) -DHC = (XVF, STR) -RXM = (KVL, SHT) -JBX = (GBJ, DHD) -TBR = (HJV, JFD) -MFK = (HDC, FCX) -TFD = (QXN, QSK) -HMV = (LFB, LTK) -RMD = (MBK, DGL) -RJP = (CTX, TPQ) -CBF = (FMQ, RTM) -XXG = (JDH, TJP) -PDX = (XGQ, BSP) -XBL = (MQK, FLS) -GMT = (PCB, GTK) -DGT = (GNH, KVQ) -CHN = (TTC, SBH) -NKS = (HQV, PJQ) -HJC = (DXQ, BHJ) -CSR = (TSX, HSM) -XTK = (BJM, CDR) -DRT = (MPB, PSV) -HQT = (CRM, XTZ) -HNM = (SXJ, GMF) -NLQ = (CLM, CTN) -LTK = (PGS, SCS) -DNR = (DRT, QLK) -QVR = (DLN, TSM) -VLD = (GSP, CKT) -LFT = (PJD, CXK) -KVG = (SNX, MPQ) -FBS = (JSN, KFT) -GTK = (XHH, LCL) -KJZ = (MDB, GRB) -QGK = (PKK, VFK) -VDS = (KQC, MSV) -KHS = (TRF, JVD) -BHH = (MLG, RPX) -JVL = (CQF, CGF) -RGQ = (CQJ, KTG) -VTM = (LFR, BXV) -GML = (VFF, VLD) -CTJ = (FKC, PDT) -BJV = (KSV, KSV) -SPX = (BPD, PHS) -CTX = (NHL, MTD) -LRB = (HHP, CDS) -XHH = (MKX, KQH) -FDL = (QFT, MNG) -CCX = (HKF, VPS) -GPT = (VHX, QPF) -VFK = (VJX, QPS) -QFH = (LHP, CKD) -KMD = (QFR, XVX) -MSB = (VTT, MVG) -TRF = (JGQ, GDJ) -PHJ = (VQX, JCQ) -DBN = (NRQ, GBN) -JPM = (PMG, SNF) -TND = (HQB, XXT) -FJK = (XHV, FBS) -PNM = (DCX, MGH) -QFK = (RKR, QVK) -VNV = (NRC, XXN) -QXN = (PSG, CFJ) -NND = (HJC, MPN) -DQM = (TJP, JDH) -PGK = (XQK, PRG) -HMK = (BJK, PHJ) -DLB = (RGJ, NKR) -PXP = (XTK, NKD) -LGG = (CNP, CNP) -HKJ = (VQD, NSR) -TMN = (SNN, DPF) -FRX = (FBR, JPM) -PTA = (JTJ, XKM) -NRH = (VST, QHJ) -BQD = (KTP, GFF) -VTT = (KFN, LTH) -GMV = (VCJ, JGC) -XLG = (FXB, NGN) -JDH = (GHV, JSS) -TJT = (JCT, JMJ) -HCT = (CRM, CRM) -BGR = (JMP, TSR) -CKH = (JMG, TFD) -DHX = (QGP, CLJ) -BQN = (TBN, BTQ) -RSH = (CSX, LTV) -SXJ = (DRV, JBX) -MRB = (SRG, TTL) -GTG = (SPV, DDQ) -VQL = (VPK, FJX) -RXC = (GXT, CGM) -MSV = (LGG, HLF) -PSV = (GBL, RRB) -LRV = (XTV, LVS) -MVR = (NQL, FTF) -JDD = (GRB, MDB) -TKG = (LHT, VLM) -NHL = (MMV, LNM) -XBR = (DHX, QHM) -DNK = (TXQ, DSP) -GBX = (SDS, BGR) -PDT = (CBF, RKM) -PGH = (FGJ, KMD) -GTR = (RPT, CXM) -GBP = (LNB, DNR) -DKC = (MQS, NND) -HSM = (SHK, HQP) -VVV = (GLQ, TKP) -TTJ = (DNK, BQC) -CJD = (CGS, KGT) -VSG = (RMJ, BQN) -XGQ = (TXC, LKB) -CNP = (PCH, PCH) -JPT = (NDS, CTV) -MVT = (GBP, RLR) -HJF = (CGL, JST) -KGB = (GML, NLB) -MPN = (DXQ, BHJ) -KFT = (DTS, DJP) -QCK = (RLF, QVR) -MJR = (MJD, RPS) -LBV = (FPH, RFH) -JMG = (QSK, QXN) -LDJ = (DBN, TTK) -XBP = (KQV, QGK) -RTM = (DFS, DXT) -VBH = (BMB, JGJ) -LHP = (MMH, BPV) -PMR = (MDQ, DGS) -NNR = (JDF, NVP) -GJL = (JDT, QLP) -JST = (SBL, LNL) -KML = (TXL, CRB) -FBA = (KQG, JSC) -KSF = (TLH, JBK) -VFF = (CKT, GSP) -PSG = (PQP, CBJ) -LDZ = (JSC, KQG) -DKN = (MVC, SPX) -DRV = (DHD, GBJ) -MJB = (HNM, LKH) -MNG = (KXS, PRM) -SNN = (VNQ, DQQ) -GNH = (KHS, SLV) -BJF = (HPD, XBL) -LGP = (LHP, CKD) -XVZ = (CVH, MRJ) -GRP = (NHV, GBX) -NGC = (FRJ, KVG) -BJD = (QVR, RLF) -FKL = (LRV, DSH) -KSV = (VHK, VHK) -XQK = (KPL, MDX) -NRC = (DMT, GLC) -VNH = (LQT, VVQ) -CGL = (SBL, SBL) -GVH = (NKD, XTK) -DBJ = (LXQ, HKP) -KVC = (PMX, XPR) -NJP = (VXG, TTJ) -VXG = (BQC, DNK) -CLJ = (JVL, QRP) -RFH = (VQL, NPJ) -GFR = (KGB, GNM) -KQV = (VFK, PKK) -SQM = (GTJ, RKT) -MQS = (MPN, HJC) -BXV = (RJP, CLN) -VSJ = (DKN, XDK) -SHK = (XMV, RXM) -GSP = (LDC, VPF) -MSS = (VPS, HKF) -SFM = (NVR, CQX) -FMC = (BJF, SRS) -DXS = (RMD, TLT) -QHS = (CGM, GXT) -DJP = (FDL, JHP) -MPT = (PQF, DCB) -LXQ = (PLS, PGK) -RFD = (TTJ, VXG) -JGJ = (HJS, TJT) -XGN = (KVT, LQL) -NBB = (LSX, XNR) -CKD = (MMH, BPV) -CTT = (CQX, NVR) -CBJ = (RRG, KBD) -CNG = (THV, QBK) -BMD = (QPF, VHX) -XLC = (BKL, SCZ) -KQG = (CPT, VLL) -KTJ = (KVC, VBM) -JBG = (NJP, RFD) -KVT = (NPT, GVS) -QGP = (JVL, QRP) -HFC = (THV, QBK) -JDT = (HBS, RHL) -MNF = (NRS, XVZ) -GKR = (GTK, PCB) -NVP = (NQQ, RRQ) -MPQ = (GCS, KSF) -PLS = (PRG, XQK) -JDF = (NQQ, RRQ) -CQD = (DBJ, VTV) -LNP = (TPK, SCP) -HQP = (XMV, RXM) -RJM = (MJD, RPS) -MQK = (FSL, CKH) -KXS = (HBJ, HMP) -CSX = (QCS, RKV) -VCG = (LQL, KVT) -NVJ = (JQG, GKD) -NLB = (VLD, VFF) -CQN = (NVP, JDF) -PDL = (VTM, GBQ) -SJM = (JNR, BGH) -VTR = (HMK, RNS) -QGS = (SQK, TPL) -NFH = (XRH, DKD) -TXQ = (GFL, PGH) -GCJ = (XSL, BFB) -RKT = (CQN, NNR) -BFQ = (LBS, JLX) -PKN = (FGD, TKG) -XKP = (FDJ, BHH) -QHX = (SPD, XCT) -NKR = (GFR, KTV) -GLQ = (FBM, KLD) -PRR = (XSL, BFB) -XLT = (HPB, MJJ) -HRD = (QVP, VXH) -SNL = (VSF, GTG) -TBN = (XCS, LJX) -RPS = (NFM, VNX) -MKX = (XLG, SLT) -NQC = (MPT, BLX) -DKK = (FVQ, PFR) -LCT = (TGK, PSH) -XHV = (JSN, KFT) -PRM = (HMP, HBJ) -NQL = (BQD, TTN) -HQV = (KVH, LBV) -RKG = (HMK, RNS) -LCL = (KQH, MKX) -LMM = (PVJ, SXK) -NCF = (XHV, FBS) -NRS = (MRJ, CVH) -RTK = (RJM, MJR) -RFC = (NVJ, HNG) -XXQ = (SXP, BJH) -RPT = (NMV, VNV) -QBR = (CTH, QKV) -FXF = (VBM, KVC) -CRB = (NQC, RXH) -NQD = (BQN, RMJ) -RKR = (KMQ, MGF) -DSP = (GFL, PGH) -DSH = (XTV, LVS) -DMT = (QVN, PMS) -VPS = (NNC, HKJ) -JSC = (CPT, VLL) -XKS = (DVT, DRH) -TTV = (LKH, HNM) -MJD = (VNX, NFM) -SCZ = (SHQ, DLB) -XVX = (CNG, HFC) -KTV = (KGB, GNM) -QHJ = (LSR, SSN) -CQJ = (GPT, BMD) -NMD = (TPK, SCP) -DVB = (GSJ, GSJ) -JMP = (MQP, RGQ) -BSB = (BGC, KJC) -CPT = (MRB, MHN) -PQP = (RRG, KBD) -RLG = (BJH, SXP) -VQX = (XVR, JCB) -XJN = (XRH, DKD) -JHP = (QFT, MNG) -KMB = (HRT, SJM) -QSK = (PSG, CFJ) -DKD = (VLF, JPT) -NHV = (BGR, SDS) -HXV = (XGQ, BSP) -XXN = (DMT, GLC) -VLM = (KMB, BTL) -RLR = (DNR, LNB) -PCH = (KQG, JSC) -XRH = (VLF, JPT) -SBL = (XLM, XLM) -CRM = (JTJ, XKM) -JSS = (BTS, LSV) -CXM = (NMV, VNV) -MLG = (HCT, HCT) -JXH = (MVR, SDR) -XBH = (XVF, STR) -DXT = (VBN, JVK) -JSN = (DTS, DJP) -KLD = (MFK, PBD) -KVH = (RFH, FPH) -NJX = (GMV, VPQ) -NRQ = (GKR, GMT) -HXF = (DXS, QXR) -DGS = (SNL, BVF) -LJT = (RKR, QVK) -JLX = (XGP, TKS) -FCX = (PXP, GVH) -VDX = (VBJ, TBR) -VSF = (SPV, DDQ) -VCX = (KTT, PPX) -MMH = (MDM, FVS) -MPB = (GBL, RRB) -RLF = (TSM, DLN) -RMJ = (BTQ, TBN) -VJX = (QQP, HMV) -XVF = (RFC, HXG) -CTN = (VVV, TKM) -QHD = (GBP, RLR) -JGC = (JXH, QCQ) -KPL = (FXF, KTJ) -NGN = (MDH, VSJ) -XPG = (MJB, TTV) -MQP = (KTG, CQJ) -JCB = (QHD, MVT) -MNM = (RPT, CXM) -RXH = (BLX, MPT) -HHP = (GCJ, PRR) -SLV = (JVD, TRF) -HVT = (BJX, FND) -MTD = (MMV, LNM) -TTL = (QFH, LGP) -LTV = (QCS, RKV) -VXV = (TSX, HSM) -TCM = (QHM, DHX) -NBF = (LQT, VVQ) -BTQ = (LJX, XCS) -TKP = (KLD, FBM) -LDC = (HSD, PJP) -VHK = (NRS, NRS) -NFM = (TMF, QFS) -GTJ = (NNR, CQN) -LSD = (QCK, BJD) -HJV = (QBD, DGT) -QBK = (MND, GJL) -XNR = (MBF, SPN) -HQB = (KXN, FJF) -TNJ = (FDJ, BHH) -TGK = (SQV, TLB) -KMF = (VHK, MNF) -JVK = (PDL, FFF) -NSF = (VBJ, TBR) -SCP = (QQR, PVV) -XXP = (HHP, CDS) -VHX = (NJX, KJF) -VCJ = (JXH, QCQ) -KJC = (KCS, SCR) -XXT = (FJF, KXN) -NNC = (VQD, NSR) -VBM = (XPR, PMX) -JTJ = (XDG, VHT) -CNK = (CCX, MSS) -FTF = (TTN, BQD) -LKH = (SXJ, GMF) -TLH = (CSR, VXV) -GFF = (KML, QRX) -LFR = (CLN, RJP) -DTS = (FDL, JHP) -TTN = (KTP, GFF) -BTL = (HRT, SJM) -HJS = (JCT, JMJ) -HBJ = (JVR, GSF) -SLF = (JDD, KJZ) -CVH = (CNC, XLT) -JGQ = (JGB, XKS) -FGJ = (QFR, XVX) -STQ = (XRQ, TCB) -GCS = (JBK, TLH) -FKK = (HVT, MPK) -LJM = (DQM, XXG) -BTS = (NMD, LNP) -SVC = (NFP, QHX) -VPF = (PJP, HSD) -NPT = (NGC, FCK) -TTK = (GBN, NRQ) -XCT = (FNL, RSH) -RRG = (TND, HCC) -HMP = (GSF, JVR) -TJV = (XXG, DQM) -CTH = (CTT, SFM) -TPK = (QQR, PVV) -LSR = (PQH, LFT) -XLM = (BKL, BKL) -FGD = (VLM, LHT) -GSF = (VTJ, HRD) -PBN = (FGD, TKG) -NMV = (NRC, XXN) -CLN = (TPQ, CTX) -TMF = (TSK, PTV) -HPX = (FKC, PDT) -GBN = (GMT, GKR) -PCK = (PDX, HXV) -TCB = (NCF, FJK) -LJX = (NRH, PTN) -QBD = (KVQ, GNH) -CMC = (QBR, PBK) -GBL = (HHR, GSC) -SQN = (BJF, SRS) -FCB = (QXR, DXS) -GDJ = (XKS, JGB) -PCB = (LCL, XHH) -BPV = (MDM, FVS) -PJD = (DVB, DVB) -RHG = (MJR, RJM) -DVT = (PKN, PBN) -TFM = (QBR, PBK) -HCC = (HQB, XXT) -PGS = (DSX, MTV) -TSR = (MQP, RGQ) -KJF = (GMV, VPQ) -GJS = (DKC, CKL) -LNB = (QLK, DRT) -PKK = (QPS, VJX) -TKS = (RHG, RTK) -QFS = (TSK, PTV) -DGL = (RCK, XVJ) -XPR = (MNM, GTR) -TDH = (FKL, CFC) -PDF = (XBP, CXB) -DFN = (RXF, GRP) -JVR = (HRD, VTJ) -LBS = (TKS, XGP) -QCQ = (MVR, SDR) -MND = (JDT, QLP) -PFR = (LJM, TJV) -QLK = (MPB, PSV) -CFC = (LRV, DSH) -PMX = (GTR, MNM) -CGF = (PMR, RPV) -MVG = (LTH, KFN) -NLK = (FBR, JPM) -LFB = (SCS, PGS) -BVF = (VSF, GTG) -MDQ = (BVF, SNL) -CQF = (PMR, RPV) -FND = (LRX, PNM) -MRJ = (CNC, XLT) -HSD = (XBR, TCM) -HLF = (CNP, GQH) -RRQ = (CMC, TFM) -CLM = (TKM, VVV) -RLB = (TTV, MJB) -NDS = (RQX, CQD) \ No newline at end of file diff --git a/aoc2023/src/day9/input.txt b/aoc2023/src/day9/input.txt deleted file mode 100644 index 6e0678f..0000000 --- a/aoc2023/src/day9/input.txt +++ /dev/null @@ -1,200 +0,0 @@ -16 22 27 23 4 -16 23 267 1025 2943 7407 17445 39670 88339 193607 417868 887273 1851158 3792224 7628687 15083115 -12 27 53 97 184 369 757 1550 3165 6502 13489 28103 58181 118520 236055 458342 867210 1600341 2884757 5087813 8793398 -3 9 23 45 75 113 159 213 275 345 423 509 603 705 815 933 1059 1193 1335 1485 1643 -14 21 42 87 173 334 631 1162 2072 3563 5904 9441 14607 21932 32053 45724 63826 87377 117542 155643 203169 -6 13 20 27 34 41 48 55 62 69 76 83 90 97 104 111 118 125 132 139 146 -18 28 38 48 58 68 78 88 98 108 118 128 138 148 158 168 178 188 198 208 218 -21 33 40 47 73 158 375 850 1793 3543 6630 11857 20405 33964 54893 86412 132829 199805 294660 426723 607729 -5 11 28 62 114 176 227 229 123 -175 -778 -1832 -3520 -6066 -9739 -14857 -21791 -30969 -42880 -58078 -77186 -24 40 75 158 329 650 1234 2297 4245 7835 14509 27104 51294 98315 189749 365429 696074 1303683 2396426 4333544 7754453 -18 23 29 46 96 212 448 922 1929 4181 9250 20305 43249 88396 172934 324721 588708 1038939 1802431 3107544 5380614 -23 48 93 172 303 512 850 1439 2577 4950 10022 20709 42513 85461 167621 322006 611043 1157808 2213227 4297234 8485467 --5 1 16 41 89 207 507 1216 2767 5970 12327 24602 47877 91653 174402 333999 651945 1308548 2704118 5713694 12198267 -6 29 72 158 337 698 1389 2653 4895 8818 15726 28221 51759 97922 190866 379323 758008 1504863 2945432 5665084 10707897 -9 12 14 16 18 23 61 248 912 2857 7918 20117 47998 109127 238298 501654 1019615 2002014 3798866 6969266 12368366 -17 22 22 7 -38 -133 -303 -578 -993 -1588 -2408 -3503 -4928 -6743 -9013 -11808 -15203 -19278 -24118 -29813 -36458 --2 4 18 55 139 307 619 1172 2109 3609 5862 9109 14010 22956 43541 96348 230584 553042 1278506 2813195 5887325 -8 15 28 69 174 408 898 1887 3825 7548 14661 28355 55092 107964 213209 422581 836414 1645965 3210142 6193077 11808762 -16 42 93 189 363 674 1225 2187 3843 6689 11662 20608 37156 68227 126480 234080 428266 769300 1351491 2318111 3881153 -22 28 29 28 44 131 412 1147 2869 6647 14589 30812 63325 127656 253684 498111 966448 1850438 3489669 6469940 11775962 -10 22 64 147 279 478 797 1361 2416 4390 7966 14167 24453 40830 65971 103349 157382 233590 338764 481147 670627 -26 44 80 147 257 416 626 905 1352 2314 4756 10993 26015 59722 130486 270571 534070 1008160 1828632 3200823 5427261 -10 13 25 59 130 257 465 787 1266 1957 2929 4267 6074 8473 11609 15651 20794 27261 35305 45211 57298 -22 34 53 80 110 130 129 142 361 1361 4516 12738 31795 72709 156208 321132 640567 1253344 2426426 4679304 9031095 --3 3 14 32 60 112 238 564 1347 3045 6402 12548 23114 40362 67330 107992 167433 252039 369702 530040 744632 -9 6 1 -6 -15 -26 -39 -54 -71 -90 -111 -134 -159 -186 -215 -246 -279 -314 -351 -390 -431 -8 19 30 41 52 63 74 85 96 107 118 129 140 151 162 173 184 195 206 217 228 -12 28 56 112 219 400 680 1122 1935 3705 7813 17117 36988 76803 152011 286901 518214 899754 1508166 2450062 3870689 -4 18 45 100 211 419 778 1355 2230 3496 5259 7638 10765 14785 19856 26149 33848 43150 54265 67416 82839 -14 27 62 122 200 276 326 367 589 1672 5468 16376 44007 108213 248366 540095 1124752 2259977 4404234 8354542 15465362 -10 22 40 63 103 210 507 1241 2865 6190 12701 25249 49587 97767 195548 398210 823495 1718635 3594121 7486884 15473014 -14 34 81 182 390 802 1584 3006 5499 9763 16982 29248 50393 87661 155200 281530 525422 1008672 1981041 3943806 7877282 -12 6 3 23 101 286 644 1284 2444 4698 9375 19317 40145 82250 163780 314954 584100 1045886 1812291 3046947 4983573 -13 21 32 52 86 138 211 307 427 571 738 926 1132 1352 1581 1813 2041 2257 2452 2616 2738 -17 35 58 79 89 86 96 217 705 2144 5802 14399 33741 76089 166928 358407 755996 1571412 3227213 6560698 13212768 -17 31 59 122 252 488 875 1475 2402 3896 6454 11039 19391 34467 61040 106490 181823 302957 492317 780784 1210046 -11 13 19 31 63 168 488 1351 3457 8223 18396 39097 79555 156016 296889 552619 1016132 1867206 3470206 6587672 12837496 -16 29 54 116 265 600 1300 2668 5219 9890 18523 34882 66641 129080 251748 490245 946750 1805263 3391104 6269484 11405501 -14 27 57 121 242 458 839 1513 2706 4807 8477 14831 25734 44266 75427 127171 211878 348395 564801 902077 1418890 -7 20 34 49 65 82 100 119 139 160 182 205 229 254 280 307 335 364 394 425 457 -1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 -11 27 54 101 191 376 755 1502 2915 5494 10051 17860 30889 52245 87140 144991 243747 418245 735396 1320359 2399651 -2 8 29 83 199 423 835 1581 2927 5359 9789 17981 33374 62532 117469 219074 401880 720802 1262037 2164843 3671777 -6 24 54 96 150 216 294 384 486 600 726 864 1014 1176 1350 1536 1734 1944 2166 2400 2646 -10 19 51 124 260 486 847 1434 2430 4183 7326 12972 22998 40360 69185 113940 176032 244249 271543 122978 -535002 --2 -4 -14 -20 14 157 520 1272 2677 5175 9538 17144 30453 53895 95688 171741 313968 587314 1122914 2179488 4251816 -10 2 -8 -10 16 111 367 983 2360 5278 11264 23369 47724 96431 192545 378084 726118 1357970 2466328 4344512 7421136 -9 22 62 142 278 503 886 1552 2699 4608 7642 12230 18832 27881 39698 54376 71629 90602 109638 125998 135530 --2 -1 13 46 97 157 212 250 272 307 431 790 1627 3313 6382 11570 19858 32519 51169 77822 114949 -18 43 87 167 324 645 1288 2508 4685 8358 14272 23448 37289 57738 87507 130399 191748 279005 402501 576421 820026 --8 -3 21 87 247 597 1292 2561 4722 8197 13527 21387 32601 48157 69222 97157 133532 180141 239017 312447 402987 -1 15 44 102 209 386 650 1009 1457 1969 2496 2960 3249 3212 2654 1331 -1055 -4861 -10508 -18486 -29359 -5 1 -2 6 59 235 682 1661 3639 7499 14980 29518 57729 111857 213604 399865 731009 1302477 2260610 3823774 6310015 -1 9 37 102 234 477 887 1529 2484 3904 6221 10771 21422 48445 117084 285457 680175 1564375 3463249 7388968 15233734 --3 -3 -1 11 59 207 588 1446 3189 6453 12177 21689 36803 59927 94182 143532 212925 308445 437475 608871 833147 -10 8 4 -1 1 26 99 259 588 1312 3062 7435 18059 42442 94973 201543 406366 781704 1441336 2558759 4391269 -10 15 18 27 59 146 351 801 1756 3756 7920 16506 33869 67961 132485 249722 453870 794437 1338782 2172261 3393567 -7 15 41 104 240 511 1006 1830 3083 4847 7237 10652 16512 29023 58918 130730 296023 656207 1400169 2864048 5623160 --8 -4 15 66 176 382 731 1280 2096 3256 4847 6966 9720 13226 17611 23012 29576 37460 46831 57866 70752 -11 15 15 11 3 -9 -25 -45 -69 -97 -129 -165 -205 -249 -297 -349 -405 -465 -529 -597 -669 --1 2 8 24 76 213 509 1071 2071 3838 7075 13309 25742 50751 100388 196360 376127 701946 1273914 2248326 3862968 -11 12 10 -4 -30 -41 52 467 1667 4541 10659 22594 44276 81300 141049 232411 364763 545762 777320 1048944 1327390 -9 11 12 20 63 215 648 1733 4223 9564 20404 41417 80649 151761 277849 498056 879093 1535245 2662704 4597458 7910851 -21 22 23 43 114 293 701 1602 3535 7522 15407 30447 58395 109537 202601 372448 685608 1272236 2392115 4569768 8866201 -17 27 37 47 57 67 77 87 97 107 117 127 137 147 157 167 177 187 197 207 217 -18 42 72 103 130 150 170 224 408 956 2402 5903 13836 30828 65432 132724 258166 483158 872788 1526383 2591566 -23 30 36 41 45 48 50 51 51 50 48 45 41 36 30 23 15 6 -4 -15 -27 -14 31 52 83 148 308 690 1526 3202 6317 11752 20749 35000 56746 88886 135096 199958 289099 409340 568855 777340 -4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 -14 26 44 76 143 283 574 1197 2563 5538 11840 24799 50942 103413 209274 424645 865170 1765883 3597017 7286172 14643193 -12 27 49 69 87 136 330 950 2594 6451 14824 32143 66919 135472 268945 526276 1017696 1946291 3679643 6870089 12651367 -11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 -10 35 74 146 282 527 958 1744 3300 6630 14020 30337 65320 137420 279964 550689 1046022 1921877 3423206 5925084 9988734 -20 29 40 59 108 247 607 1436 3177 6629 13289 26035 50387 96675 183550 343396 630338 1131693 1983878 3393971 5668318 -8 24 59 134 284 569 1103 2113 4045 7744 14750 27772 51427 93361 165904 288451 490806 817776 1335357 2138914 3363822 -11 25 55 105 179 281 415 585 795 1049 1351 1705 2115 2585 3119 3721 4395 5145 5975 6889 7891 -19 37 74 159 334 661 1245 2294 4257 8117 15987 32302 66195 136227 279739 571067 1156243 2317357 4588524 8958785 17217096 --2 9 41 103 219 443 870 1652 3057 5656 10790 21562 44740 94217 197246 406018 820326 1634301 3236137 6423499 12866391 -5 -1 -8 -9 10 70 199 432 811 1385 2210 3349 4872 6856 9385 12550 16449 21187 26876 33635 41590 -19 32 45 58 71 84 97 110 123 136 149 162 175 188 201 214 227 240 253 266 279 -22 37 55 71 94 167 396 1005 2447 5608 12151 25096 49895 96676 185249 356351 696284 1389007 2822275 5796409 11921644 -22 47 92 163 266 410 610 889 1282 1854 2764 4460 8230 17669 42342 106334 266942 653145 1540604 3491025 7600370 -23 38 73 146 277 488 805 1274 2012 3332 6035 12106 26379 60395 140880 327309 746281 1655398 3556625 7389446 14848405 -10 34 81 160 274 417 573 715 811 876 1179 2852 9421 30324 88549 236536 588096 1380274 3089189 6639788 13773628 -17 32 52 70 76 73 108 318 991 2642 6104 12634 24034 42787 72208 116610 181485 273700 401708 575774 808216 --4 7 32 78 155 279 498 962 2061 4658 10451 22528 46285 91178 174513 330071 627521 1214340 2401733 4831449 9782898 --1 1 -1 -2 13 71 214 503 1023 1889 3253 5312 8317 12583 18500 26545 37295 51441 69803 93346 123197 -14 25 55 119 234 420 706 1143 1844 3111 5790 12143 27772 65506 152698 344108 743534 1538777 3056905 5851463 10843458 --7 -7 2 25 72 160 317 595 1112 2172 4561 10190 23357 53033 116746 246846 500187 972563 1819588 3286119 5746790 -24 51 91 144 210 289 381 486 604 735 879 1036 1206 1389 1585 1794 2016 2251 2499 2760 3034 --6 -8 -7 -4 9 70 282 871 2293 5443 12063 25532 52395 105321 208785 409850 798384 1544682 2969297 5672672 10775633 -18 38 74 128 197 273 343 389 388 312 128 -202 -721 -1477 -2523 -3917 -5722 -8006 -10842 -14308 -18487 -14 14 6 -15 -54 -116 -206 -329 -490 -694 -946 -1251 -1614 -2040 -2534 -3101 -3746 -4474 -5290 -6199 -7206 -0 4 22 78 215 499 1023 1911 3322 5454 8548 12892 18825 26741 37093 50397 67236 88264 114210 145882 184171 -15 19 27 58 141 316 650 1285 2551 5196 10802 22466 45823 90469 171801 313223 548567 924441 1502037 2357706 3581329 -28 49 76 114 185 353 769 1757 3977 8715 18361 37142 72176 134903 242928 422277 710018 1157133 1831442 2820274 4232451 -2 -5 0 35 133 356 819 1728 3430 6476 11736 20729 36639 67155 131593 277209 613962 1384465 3098432 6781691 14423617 --2 7 41 121 269 517 931 1662 3062 5945 12131 25493 53858 112344 229132 455405 882418 1670639 3098937 5646285 10124879 -15 19 18 9 -6 -15 9 113 369 879 1780 3249 5508 8829 13539 20025 28739 40203 55014 73849 97470 -9 14 33 89 229 533 1128 2215 4117 7356 12767 21657 36017 58795 94238 148311 229201 347914 518973 761225 1098765 -8 23 51 104 202 386 739 1423 2763 5438 10883 22095 45241 92932 191019 392729 807586 1658885 3393971 6888230 13809204 -6 3 10 41 110 231 418 685 1046 1515 2106 2833 3710 4751 5970 7381 8998 10835 12906 15225 17806 -12 12 16 37 101 264 650 1525 3438 7497 15913 33051 67399 135147 266525 516779 984800 1844138 3393654 6138665 10918457 -9 30 68 138 276 551 1072 2001 3595 6307 10985 19236 34096 61304 111765 206261 384197 719228 1346090 2504950 4612204 -23 38 66 121 224 409 731 1285 2251 3984 7170 13069 23864 43131 76439 132081 221927 362378 575386 889489 1340792 -16 28 40 52 64 76 88 100 112 124 136 148 160 172 184 196 208 220 232 244 256 -17 30 61 119 219 397 747 1501 3179 6842 14487 29629 58121 109269 197305 343287 577501 942446 1496489 2318283 3512047 --1 5 14 37 100 253 588 1271 2598 5105 9816 18826 36619 72851 147828 302628 616809 1237973 2429186 4642459 8629254 -16 36 76 164 342 666 1206 2046 3284 5032 7416 10576 14666 19854 26322 34266 43896 55436 69124 85212 103966 --5 -3 12 63 182 411 809 1475 2612 4686 8786 17372 35707 74388 153464 308525 598601 1114243 1980956 3346921 5332708 -14 26 38 50 62 74 86 98 110 122 134 146 158 170 182 194 206 218 230 242 254 -2 -4 -19 -52 -115 -221 -369 -502 -417 401 3053 9640 23844 51688 102447 189584 331368 550394 870413 1307468 1850007 -21 43 82 139 220 346 563 952 1639 2805 4696 7633 12022 18364 27265 39446 55753 77167 104814 139975 184096 --8 -16 -17 2 54 155 326 590 966 1484 2301 4109 9224 24092 64560 166325 404748 930980 2035275 4253332 8536722 --2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 -12 33 69 137 269 529 1047 2087 4183 8402 16827 33411 65487 126554 241758 459276 874624 1682767 3288727 6538653 13194051 -5 11 36 85 167 311 593 1176 2363 4661 8852 16065 27841 46181 73565 112928 167577 241031 336764 457829 606339 -5 0 6 43 134 309 628 1231 2423 4814 9565 18848 36718 70725 134771 253948 472385 865492 1558424 2753105 4766758 -20 31 42 53 64 75 86 97 108 119 130 141 152 163 174 185 196 207 218 229 240 -17 34 57 94 167 331 710 1554 3321 6788 13195 24426 43231 73493 120544 191534 295857 445638 656285 947110 1342023 -19 22 16 1 -16 -13 61 313 960 2430 5532 11711 23385 44323 79959 137439 225057 350542 517400 718181 923118 -12 20 36 60 92 132 180 236 300 372 452 540 636 740 852 972 1100 1236 1380 1532 1692 -15 28 66 154 345 743 1533 3025 5728 10495 18847 33738 61349 115157 224805 454707 941713 1968938 4106276 8470690 17196453 -26 54 104 181 285 412 556 719 953 1484 3011 7356 18816 46948 112339 258637 577588 1260474 2701490 5699779 11842279 --5 0 13 48 130 307 671 1382 2697 5034 9163 16738 31609 62754 130392 278202 597329 1273687 2682530 5580428 11497888 -8 23 49 86 133 194 288 465 841 1695 3749 8922 22170 55570 136666 324373 737550 1603839 3339673 6676646 12854891 -7 18 29 40 51 62 73 84 95 106 117 128 139 150 161 172 183 194 205 216 227 -10 24 44 69 95 111 110 139 432 1714 5858 17254 45544 110822 253017 547981 1133786 2251864 4308844 7966159 14265585 --5 -2 6 18 42 106 277 693 1613 3490 7072 13536 24660 43038 72343 117643 185775 285782 429418 631726 911694 -25 49 82 120 164 225 336 574 1090 2143 4134 7640 13481 22991 39079 69707 137760 306259 738049 1829516 4498299 -28 39 59 115 256 569 1203 2401 4540 8179 14115 23447 37648 58645 88907 131541 190396 270175 376555 516315 697472 -11 22 42 82 162 312 578 1053 1983 4058 9103 21549 51304 118974 264819 563384 1146435 2237670 4203680 7626820 13407030 -13 32 67 140 285 548 987 1672 2685 4120 6083 8692 12077 16380 21755 28368 36397 46032 57475 70940 86653 -16 33 54 83 134 242 480 986 2021 4120 8486 17955 39204 87515 196569 437797 957362 2044827 4257394 8639335 17100774 -9 16 28 45 77 154 347 816 1911 4366 9654 20646 42906 87373 176023 353702 712286 1438821 2909549 5870876 11783816 -8 6 12 48 156 403 877 1669 2836 4346 6024 7554 8652 9615 12577 23971 58912 148486 351260 770724 1580844 -10 34 83 183 372 704 1257 2145 3534 5662 8863 13595 20472 30300 44117 63237 89298 124314 170731 231487 310076 -8 20 36 53 68 78 80 71 48 8 -52 -135 -244 -382 -552 -757 -1000 -1284 -1612 -1987 -2412 -8 24 64 148 311 624 1225 2369 4520 8531 15994 29900 55846 104185 193758 358183 656084 1187050 2115368 3703412 6355581 -5 15 30 49 71 95 120 145 169 191 210 225 235 239 236 225 205 175 134 81 15 -20 50 100 187 348 653 1224 2260 4071 7142 12288 21029 36419 64717 118496 222024 419946 790371 1463632 2649684 4685450 -19 31 52 89 164 327 670 1344 2599 4900 9234 17847 35889 74868 159497 340530 717567 1477557 2956756 5736005 10781030 -18 39 72 138 278 564 1112 2106 3859 6958 12565 22975 42565 79305 147043 268821 481528 842249 1436726 2390408 3882632 -4 10 15 19 22 24 25 25 24 22 19 15 10 4 -3 -11 -20 -30 -41 -53 -66 -17 26 56 136 308 628 1180 2113 3711 6506 11444 20114 35050 60116 100984 165715 265453 415242 634976 950492 1394816 -25 37 60 118 244 489 953 1860 3725 7710 16362 35110 75232 159574 333227 682794 1369993 2688371 5156120 9663710 17702660 -4 8 33 90 191 348 577 927 1566 2968 6257 13776 29961 62612 124665 236581 429480 749160 1261153 2056982 3261795 -13 25 58 131 276 546 1035 1922 3551 6559 12064 21925 39086 68016 115257 190092 305345 478325 731926 1095895 1608280 -8 7 17 55 139 281 476 687 826 731 139 -1345 -4283 -9443 -17842 -30793 -49956 -77393 -115627 -167705 -237265 -5 22 61 137 265 460 737 1111 1597 2210 2965 3877 4961 6232 7705 9395 11317 13486 15917 18625 21625 -15 14 17 28 53 111 267 709 1908 4922 11933 27153 58340 119414 235217 450591 848077 1582290 2945281 5487158 10231495 -2 9 28 68 137 258 498 1015 2135 4478 9159 18097 34472 63377 112719 194430 326056 532799 850094 1326810 2029171 -22 34 46 53 55 67 142 416 1181 3001 6930 15013 31533 66065 140600 305315 671836 1480416 3230374 6924401 14511151 -18 34 63 125 258 526 1027 1901 3338 5586 8959 13845 20714 30126 42739 59317 80738 108002 142239 184717 236850 -27 52 102 187 321 526 843 1369 2346 4335 8515 17154 34306 66795 125554 227394 397285 671238 1099884 1752853 2724063 -23 38 55 78 115 182 314 595 1239 2789 6549 15431 35510 78803 168285 347274 697739 1377040 2692175 5248108 10237257 -25 38 63 120 243 496 1004 2001 3903 7429 13817 25215 45369 80781 142570 249338 431421 736992 1240579 2054666 3345159 -28 41 54 67 80 93 106 119 132 145 158 171 184 197 210 223 236 249 262 275 288 --6 0 15 44 101 212 418 778 1372 2304 3705 5736 8591 12500 17732 24598 33454 44704 58803 76260 97641 -4 28 65 121 220 415 796 1496 2709 4761 8325 14968 28410 57238 120465 258450 553719 1170131 2426846 4940384 9902961 -6 7 15 36 76 141 237 370 546 771 1051 1392 1800 2281 2841 3486 4222 5055 5991 7036 8196 -24 33 45 62 77 83 95 191 590 1804 4931 12217 28162 61797 131542 275661 574402 1195504 2484736 5141196 10551151 -23 41 68 104 149 203 266 338 419 509 608 716 833 959 1094 1238 1391 1553 1724 1904 2093 -22 42 68 105 161 238 323 380 347 146 -277 -830 -906 1697 13721 53857 170028 477110 1234650 2999191 6910095 --9 -1 22 61 119 200 304 418 503 477 194 -581 -2201 -5170 -10180 -18152 -30281 -48085 -73458 -108727 -156713 -11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 -7 13 33 88 211 463 966 1970 3984 8020 16029 31654 61492 117150 218504 398730 711877 1243999 2129161 3571988 5878841 -26 54 107 191 316 512 855 1506 2775 5254 10135 19972 40418 83980 177798 379260 806629 1698071 3523848 7197074 14465457 -7 6 4 13 65 221 583 1306 2603 4745 8094 13284 21806 37503 69932 141398 301131 653436 1413420 3017283 6339755 -8 13 26 47 76 113 158 211 272 341 418 503 596 697 806 923 1048 1181 1322 1471 1628 -14 19 31 61 140 340 804 1785 3694 7157 13081 22729 37804 60542 93814 141237 207294 297463 418355 577861 785308 -18 25 41 74 132 223 355 536 774 1077 1453 1910 2456 3099 3847 4708 5690 6801 8049 9442 10988 -13 39 87 171 318 573 1009 1765 3152 5886 11539 23368 47825 97318 195247 385056 746111 1420737 2658839 4889321 8831144 -10 8 14 34 74 141 255 482 1006 2285 5397 12804 30003 69026 155797 345601 755687 1633870 3501675 7448656 15726061 -6 11 25 69 172 364 663 1064 1547 2130 3002 4780 8943 18505 38998 79845 156212 291437 520143 892151 1477318 -27 50 84 135 218 372 697 1431 3090 6700 14160 28802 56287 106157 194788 351446 631221 1142968 2109356 3994435 7771240 -9 31 66 114 175 249 336 436 549 675 814 966 1131 1309 1500 1704 1921 2151 2394 2650 2919 -8 7 7 8 10 22 98 426 1513 4538 11998 28875 64756 137733 281650 559617 1089152 2088679 3962843 7457584 13938920 --5 -7 -9 -11 -2 54 247 779 2078 5020 11348 24426 50527 100927 195162 365902 666005 1178435 2029861 3408899 5590116 -10 16 34 74 147 274 521 1081 2432 5608 12628 27136 55313 107130 198019 351047 599686 991280 1591318 2488630 3801631 -9 8 21 66 172 391 830 1721 3552 7290 14748 29193 56376 106318 196477 357514 644161 1156577 2084086 3797672 7049008 -14 40 88 183 380 785 1580 3064 5738 10495 19048 34867 65134 124613 242953 477946 938949 1827706 3509661 6640837 12400447 -15 25 39 64 129 294 653 1337 2538 4600 8260 15178 28989 57277 115164 231711 461221 903259 1738853 3298396 6194405 -9 6 6 11 31 107 353 1029 2669 6320 14014 29709 61115 123102 243845 475664 914050 1731530 3239870 6009120 11104366 -26 37 48 75 147 313 670 1432 3073 6602 14068 29452 60189 119691 231437 435496 798808 1431239 2510444 4320037 7307627 -3 -1 -10 -24 -43 -67 -96 -130 -169 -213 -262 -316 -375 -439 -508 -582 -661 -745 -834 -928 -1027 -18 43 89 169 300 508 853 1501 2897 6147 13824 31625 71718 159389 345977 733436 1519704 3080095 6109095 11860445 22542764 -17 38 63 88 109 122 123 108 73 14 -73 -192 -347 -542 -781 -1068 -1407 -1802 -2257 -2776 -3363 -3 2 10 40 110 248 497 920 1605 2670 4268 6592 9880 14420 20555 28688 39287 52890 70110 91640 118258 -21 37 57 85 131 212 354 601 1040 1854 3418 6456 12280 23135 42677 76614 133543 226019 371895 595975 932025 -14 28 56 121 265 567 1177 2386 4774 9508 18898 37365 73056 140538 265518 493797 909482 1673256 3102528 5835085 11151679 -13 31 73 156 302 533 869 1334 1975 2899 4333 6712 10800 17849 29801 49538 81185 130471 205153 315508 474898 --1 -10 -9 16 78 189 360 601 921 1328 1829 2430 3136 3951 4878 5919 7075 8346 9731 11228 12834 -1 10 33 77 148 252 400 620 988 1712 3344 7262 16674 38591 87590 192932 412066 856321 1739510 3468242 6804651 -2 19 60 137 265 461 749 1184 1908 3251 5909 11312 22519 46478 99470 219319 490975 1097216 2415107 5194716 10885594 -7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -13 24 44 89 197 451 1016 2204 4587 9194 17866 33915 63351 117117 215018 392358 710721 1274860 2258304 3941069 6763777 -1 -4 1 26 80 183 394 857 1858 3876 7615 14048 24625 42043 72406 130287 249223 501620 1034021 2126310 4286814 -7 20 36 46 41 20 1 35 223 736 1838 3912 7489 13280 22211 35461 54503 81148 117592 166466 230889 -16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 --1 3 12 46 137 336 738 1542 3172 6494 13173 26223 50812 95393 173241 304485 518733 858397 1382834 2173428 3339747 \ No newline at end of file -- cgit v1.2.3 From 89e359060388c44d87cd70dd8102c37db58b0384 Mon Sep 17 00:00:00 2001 From: HJ Date: Sat, 3 Feb 2024 15:42:02 -0500 Subject: 2018 day 2 complete --- aoc2018/day-02/day-02.rkt | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 aoc2018/day-02/day-02.rkt diff --git a/aoc2018/day-02/day-02.rkt b/aoc2018/day-02/day-02.rkt new file mode 100644 index 0000000..38155fb --- /dev/null +++ b/aoc2018/day-02/day-02.rkt @@ -0,0 +1,27 @@ +#lang racket + +(require advent-of-code + threading) + +(define ids (port->lines (open-aoc-input (find-session) 2018 2 #:cache #true))) + +;; part 1 +(define (make-baskets str) + (for/fold ([baskets (hash)]) ([ch (in-string str)]) + (hash-update baskets ch add1 0))) + +(define (has-count n ht) + (member n (hash-values ht))) + +(for/fold ([two 0] [three 0] #:result (* two three)) ([id (in-list ids)]) + (define baskets (make-baskets id)) + (values (if (has-count 2 baskets) (add1 two) two) (if (has-count 3 baskets) (add1 three) three))) + +;; part 2 +(define (string-difference str1 str2) + (for/sum ([ch1 (in-string str1)] [ch2 (in-string str2)]) (if (equal? ch1 ch2) 0 1))) + +(for*/first ([id1 (in-list ids)] [id2 (in-list ids)] #:when (= 1 (string-difference id1 id2))) + (~>> (for/list ([ch1 (in-string id1)] [ch2 (in-string id2)] #:when (equal? ch1 ch2)) + ch1) + (apply string))) -- cgit v1.2.3 From d80c00650f3621210f901023bc9a9dae71b20e46 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Wed, 7 Feb 2024 16:07:36 -0500 Subject: 2018 day 5 complete --- aoc2018/day-05/day-05.rkt | 31 +++++++++++++++++++++++++++++++ aoc2018/day-06/day-06.rkt | 1 + 2 files changed, 32 insertions(+) create mode 100644 aoc2018/day-05/day-05.rkt create mode 100644 aoc2018/day-06/day-06.rkt diff --git a/aoc2018/day-05/day-05.rkt b/aoc2018/day-05/day-05.rkt new file mode 100644 index 0000000..a78f5b5 --- /dev/null +++ b/aoc2018/day-05/day-05.rkt @@ -0,0 +1,31 @@ +#lang racket + +(require advent-of-code + threading) + +(define starting-chain + (~> (fetch-aoc-input (find-session) 2018 5 #:cache #true) string-trim string->list)) + +(define (reactive-pair? ch1 ch2) + (and (equal? (char-downcase ch1) (char-downcase ch2)) (not (equal? ch1 ch2)))) + +(define (remove-reactive-pairs chs [acc '()]) + (match chs + [(list* ch1 ch2 rest-chs) + #:when (reactive-pair? ch1 ch2) + (remove-reactive-pairs rest-chs acc)] + [(list* ch rest-chs) (remove-reactive-pairs rest-chs (cons ch acc))] + [(list) (reverse acc)])) + +(define (keep-removing-reactive-pairs chs) + (define chs* (remove-reactive-pairs chs)) + (if (equal? chs chs*) (length chs) (keep-removing-reactive-pairs chs*))) + +;; part 1 +(keep-removing-reactive-pairs starting-chain) + +;; part 2 +(~>> (for/list ([letter (in-string "abcdefghijklmnopqrstuvwxyz")]) + (define tweaked-chain (filter (λ (c) (not (equal? (char-downcase c) letter))) starting-chain)) + (keep-removing-reactive-pairs tweaked-chain)) + (apply min)) diff --git a/aoc2018/day-06/day-06.rkt b/aoc2018/day-06/day-06.rkt new file mode 100644 index 0000000..6f1f7b4 --- /dev/null +++ b/aoc2018/day-06/day-06.rkt @@ -0,0 +1 @@ +#lang racket -- cgit v1.2.3 From b9ff5065a9414a08116687b2287c7d581a4f52a8 Mon Sep 17 00:00:00 2001 From: HJ Date: Fri, 9 Feb 2024 01:36:12 -0500 Subject: 2018 day 3 complete --- aoc2018/day-03/day-03.rkt | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 aoc2018/day-03/day-03.rkt diff --git a/aoc2018/day-03/day-03.rkt b/aoc2018/day-03/day-03.rkt new file mode 100644 index 0000000..b486361 --- /dev/null +++ b/aoc2018/day-03/day-03.rkt @@ -0,0 +1,51 @@ +#lang racket + +(require advent-of-code + threading + data/applicative + data/monad + megaparsack + megaparsack/text) + +(struct claim (number start-x start-y size-x size-y) #:transparent) + +(define claim/p + (do (char/p #\#) + [number <- integer/p] + (string/p " @ ") + [start-x <- integer/p] + (char/p #\,) + [start-y <- integer/p] + (string/p ": ") + [size-x <- integer/p] + (char/p #\x) + [size-y <- integer/p] + (pure (claim number start-x start-y size-x size-y)))) + +(define (parse-claim str) + (parse-result! (parse-string claim/p str))) + +(define (make-claim ht cl) + (for*/fold ([fabric ht]) + ([x (in-range (claim-start-x cl) (+ (claim-start-x cl) (claim-size-x cl)))] + [y (in-range (claim-start-y cl) (+ (claim-start-y cl) (claim-size-y cl)))]) + (hash-update fabric (cons x y) add1 0))) + +(define claims + (~> (port->lines (open-aoc-input (find-session) 2018 3 #:cache #true)) (map parse-claim _))) + +(define claimed-fabric + (for/fold ([fabric (hash)]) ([cl (in-list claims)]) + (make-claim fabric cl))) + +;; part 1 +(for/sum ([claim-count (in-list (hash-values claimed-fabric))] #:when (< 1 claim-count)) 1) + +;; part 2 +(define (uncontested-claim? fabric cl) + (for*/and ([x (in-range (claim-start-x cl) (+ (claim-start-x cl) (claim-size-x cl)))] + [y (in-range (claim-start-y cl) (+ (claim-start-y cl) (claim-size-y cl)))]) + (= 1 (hash-ref fabric (cons x y))))) + +(for/first ([cl (in-list claims)] #:when (uncontested-claim? claimed-fabric cl)) + (claim-number cl)) -- cgit v1.2.3 From cb09372aa8abf9d651f4b903333281c0e8f4bbf8 Mon Sep 17 00:00:00 2001 From: HJ Date: Fri, 9 Feb 2024 01:36:52 -0500 Subject: 2018 day 4 in progress --- aoc2018/day-04/day-04.rkt | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 aoc2018/day-04/day-04.rkt diff --git a/aoc2018/day-04/day-04.rkt b/aoc2018/day-04/day-04.rkt new file mode 100644 index 0000000..3660099 --- /dev/null +++ b/aoc2018/day-04/day-04.rkt @@ -0,0 +1,43 @@ +#lang racket + +(require advent-of-code + data/applicative + data/monad + megaparsack + megaparsack/text + threading) + +(struct entry (month day hour minute message) #:transparent) + +(define (parse-message chrs) + (define str (apply string chrs)) + (match str + ["wakes up" 'awake] + ["falls asleep" 'asleep] + [shift (~> shift (string-trim "Guard #") (string-trim " begins shift") string->number)])) + +(define entry/p + (do (string/p "[1518-") + [month <- integer/p] + (char/p #\-) + [day <- integer/p] + space/p + [hour <- integer/p] + (char/p #\:) + [minute <- integer/p] + (string/p "] ") + [message <- (many/p any-char/p)] + (pure (entry month day hour minute (parse-message message))))) + +(define (parse-entry str) + (parse-result! (parse-string entry/p str))) + +(define entries + (~> (port->lines (open-aoc-input (find-session) 2018 4 #:cache #true)) (map parse-entry _))) + +(define sorted-entries + (~> entries + (sort < #:key entry-minute) + (sort < #:key entry-hour) + (sort < #:key entry-day) + (sort < #:key entry-month))) -- cgit v1.2.3 From cff195a4712e959f6ed6284e600486bc183f8184 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Tue, 5 Mar 2024 15:19:16 -0500 Subject: CodingQuest day 1 in Gleam --- codingquest2024/.github/workflows/test.yml | 23 + codingquest2024/.gitignore | 4 + codingquest2024/README.md | 25 + codingquest2024/gleam.toml | 20 + codingquest2024/manifest.toml | 13 + codingquest2024/src/codingquest2024.gleam | 5 + codingquest2024/src/day1/data.txt | 5047 +++++++++++++++++++++++ codingquest2024/src/day1/solution.gleam | 55 + codingquest2024/test/codingquest2024_test.gleam | 12 + 9 files changed, 5204 insertions(+) create mode 100644 codingquest2024/.github/workflows/test.yml create mode 100644 codingquest2024/.gitignore create mode 100644 codingquest2024/README.md create mode 100644 codingquest2024/gleam.toml create mode 100644 codingquest2024/manifest.toml create mode 100644 codingquest2024/src/codingquest2024.gleam create mode 100644 codingquest2024/src/day1/data.txt create mode 100644 codingquest2024/src/day1/solution.gleam create mode 100644 codingquest2024/test/codingquest2024_test.gleam diff --git a/codingquest2024/.github/workflows/test.yml b/codingquest2024/.github/workflows/test.yml new file mode 100644 index 0000000..916edea --- /dev/null +++ b/codingquest2024/.github/workflows/test.yml @@ -0,0 +1,23 @@ +name: test + +on: + push: + branches: + - master + - main + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: erlef/setup-beam@v1 + with: + otp-version: "26.0.2" + gleam-version: "1.0.0" + rebar3-version: "3" + # elixir-version: "1.15.4" + - run: gleam deps download + - run: gleam test + - run: gleam format --check src test diff --git a/codingquest2024/.gitignore b/codingquest2024/.gitignore new file mode 100644 index 0000000..599be4e --- /dev/null +++ b/codingquest2024/.gitignore @@ -0,0 +1,4 @@ +*.beam +*.ez +/build +erl_crash.dump diff --git a/codingquest2024/README.md b/codingquest2024/README.md new file mode 100644 index 0000000..8412b48 --- /dev/null +++ b/codingquest2024/README.md @@ -0,0 +1,25 @@ +# codingquest2024 + +[![Package Version](https://img.shields.io/hexpm/v/codingquest2024)](https://hex.pm/packages/codingquest2024) +[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/codingquest2024/) + +```sh +gleam add codingquest2024 +``` +```gleam +import codingquest2024 + +pub fn main() { + // TODO: An example of the project in use +} +``` + +Further documentation can be found at . + +## Development + +```sh +gleam run # Run the project +gleam test # Run the tests +gleam shell # Run an Erlang shell +``` diff --git a/codingquest2024/gleam.toml b/codingquest2024/gleam.toml new file mode 100644 index 0000000..8bee8d0 --- /dev/null +++ b/codingquest2024/gleam.toml @@ -0,0 +1,20 @@ +name = "codingquest2024" +version = "1.0.0" + +# Fill out these fields if you intend to generate HTML documentation or publish +# your project to the Hex package manager. +# +# description = "" +# licences = ["Apache-2.0"] +# repository = { type = "github", user = "username", repo = "project" } +# links = [{ title = "Website", href = "https://gleam.run" }] +# +# For a full reference of all the available options, you can have a look at +# https://gleam.run/writing-gleam/gleam-toml/. + +[dependencies] +gleam_stdlib = "~> 0.34 or ~> 1.0" +simplifile = "~> 1.5" + +[dev-dependencies] +gleeunit = "~> 1.0" diff --git a/codingquest2024/manifest.toml b/codingquest2024/manifest.toml new file mode 100644 index 0000000..39304c1 --- /dev/null +++ b/codingquest2024/manifest.toml @@ -0,0 +1,13 @@ +# This file was generated by Gleam +# You typically do not need to edit this file + +packages = [ + { name = "gleam_stdlib", version = "0.36.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "C0D14D807FEC6F8A08A7C9EF8DFDE6AE5C10E40E21325B2B29365965D82EB3D4" }, + { name = "gleeunit", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D364C87AFEB26BDB4FB8A5ABDE67D635DC9FA52D6AB68416044C35B096C6882D" }, + { name = "simplifile", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "EB9AA8E65E5C1E3E0FDCFC81BC363FD433CB122D7D062750FFDF24DE4AC40116" }, +] + +[requirements] +gleam_stdlib = { version = "~> 0.34 or ~> 1.0" } +gleeunit = { version = "~> 1.0" } +simplifile = { version = "~> 1.5"} diff --git a/codingquest2024/src/codingquest2024.gleam b/codingquest2024/src/codingquest2024.gleam new file mode 100644 index 0000000..5af4a2a --- /dev/null +++ b/codingquest2024/src/codingquest2024.gleam @@ -0,0 +1,5 @@ +import gleam/io + +pub fn main() { + io.println("Hello from codingquest2024!") +} diff --git a/codingquest2024/src/day1/data.txt b/codingquest2024/src/day1/data.txt new file mode 100644 index 0000000..931665e --- /dev/null +++ b/codingquest2024/src/day1/data.txt @@ -0,0 +1,5047 @@ +SolarSkies: Rebate 9997 +CelestialFlyer: Discount 2886 +RyanSpace: Luggage 3500 +NovaWings: Tax 156 +RyanSpace: Fee 9468 +NeptuneExpress: Fee 9378 +SpaceZ: Discount 3103 +CelestialFlyer: Rebate 9678 +AstroWings: Discount 7582 +SpaceZ: Tax 7474 +CathayGalactic: Tax 6941 +MartianSpacelines: Tax 3294 +RyanSpace: Tax 6910 +CosmoAir: Luggage 6750 +OrionAir: Discount 2154 +NeptuneExpress: Tax 9047 +AuroraSpace: Fee 9346 +StellarJet: Fee 5958 +NeptuneExpress: Rebate 7392 +CosmoAir: Tax 8149 +MartianSpacelines: Fee 1641 +CometAir: Discount 9606 +OrionAir: Fee 7859 +LunaLine: Fee 1892 +SolarSkies: Fee 7166 +QantasSpace: Discount 2150 +StarCruiser: Rebate 2339 +MartianSpacelines: Discount 2704 +NebulaAir: Tax 4507 +QantasSpace: Rebate 2671 +SolarSkies: Tax 9451 +NebulaAir: Tax 1153 +SolarSkies: Tax 9424 +CometAir: Tax 7617 +StellarJet: Tax 5874 +CathayGalactic: Fee 2666 +LunaLine: Rebate 6078 +LunaLine: Fee 8442 +CelestialFlyer: Tax 7141 +StarCruiser: Rebate 944 +GalaxyExpress: Tax 2480 +NeptuneExpress: Rebate 9776 +NebulaAir: Tax 8361 +SolarSkies: Tax 1666 +Voyager: Discount 3420 +CometAir: Rebate 4784 +NebulaAir: Discount 2337 +AstroWings: Rebate 5908 +CosmoAir: Rebate 1346 +Voyager: Fee 5789 +RyanSpace: Fee 6814 +SolarSkies: Discount 7387 +StarCruiser: Fee 5395 +AuroraSpace: Discount 3771 +NeptuneExpress: Tax 8119 +MartianSpacelines: Rebate 6878 +StellarJet: Rebate 3396 +CometAir: Discount 8390 +OrionAir: Discount 7496 +QantasSpace: Fee 415 +CometAir: Fee 7246 +OrionAir: Seat 330000 +CosmoAir: Rebate 8945 +NeptuneExpress: Tax 4425 +SolarSkies: Fee 4561 +NeptuneExpress: Fee 1034 +NeptuneExpress: Discount 2160 +StellarJet: Rebate 521 +StarCruiser: Tax 9389 +StellarJet: Discount 7730 +LunaLine: Fee 6105 +OrionAir: Discount 6706 +CosmoAir: Fee 918 +GalaxyExpress: Tax 3279 +StellarJet: Tax 9353 +Voyager: Discount 1764 +NeptuneExpress: Fee 552 +StellarJet: Fee 2183 +CometAir: Tax 6984 +NovaWings: Fee 7862 +StarCruiser: Discount 8809 +CathayGalactic: Fee 9149 +StarCruiser: Discount 3536 +NeptuneExpress: Rebate 8315 +StarCruiser: Fee 4390 +StarCruiser: Fee 9073 +LunaLine: Fee 5651 +OrionAir: Discount 8270 +OrionAir: Rebate 9083 +SpaceZ: Tax 5132 +CathayGalactic: Rebate 3976 +OrionAir: Rebate 3611 +NovaWings: Discount 446 +AstroWings: Fee 6568 +NebulaAir: Fee 8959 +StellarJet: Tax 4655 +NebulaAir: Discount 9260 +StellarJet: Rebate 5091 +AstroWings: Meals 1400 +OrionAir: Rebate 7354 +StellarJet: Fee 1608 +StellarJet: Discount 491 +StellarJet: Rebate 9075 +NeptuneExpress: Fee 5176 +AuroraSpace: Rebate 9343 +MartianSpacelines: Tax 1009 +QantasSpace: Rebate 5023 +NeptuneExpress: Discount 1107 +AuroraSpace: Rebate 326 +SpaceZ: Rebate 6305 +CosmoAir: Tax 9408 +StellarJet: Fee 2829 +OrionAir: Rebate 5076 +NovaWings: Discount 8287 +CelestialFlyer: Rebate 3844 +SolarSkies: Fee 7808 +RyanSpace: Fee 7246 +AuroraSpace: Fee 6287 +AuroraSpace: Rebate 8984 +CometAir: Tax 576 +GalaxyExpress: Tax 2692 +CometAir: Discount 8439 +RyanSpace: Fee 4534 +LunaLine: Rebate 6082 +StellarJet: Tax 5003 +AstroWings: Fee 7470 +StarCruiser: Discount 451 +CelestialFlyer: Fee 9048 +CosmoAir: Fee 9590 +RyanSpace: Tax 7007 +LunaLine: Fee 8844 +NovaWings: Fee 9008 +NebulaAir: Fee 6555 +OrionAir: Tax 8867 +CosmoAir: Discount 6056 +CosmoAir: Fee 1389 +AuroraSpace: Rebate 5374 +CelestialFlyer: Rebate 5044 +OrionAir: Rebate 7225 +CelestialFlyer: Discount 4238 +QantasSpace: Fee 6751 +MartianSpacelines: Discount 5026 +Voyager: Tax 9159 +CosmoAir: Discount 2938 +CelestialFlyer: Tax 7042 +OrionAir: Tax 9888 +CathayGalactic: Fee 3237 +GalaxyExpress: Rebate 3972 +AuroraSpace: Fee 8480 +NebulaAir: Discount 1317 +LunaLine: Discount 3822 +RyanSpace: Rebate 7604 +QantasSpace: Tax 1241 +MartianSpacelines: Fee 4292 +StellarJet: Rebate 728 +OrionAir: Discount 6960 +CosmoAir: Rebate 3314 +AuroraSpace: Discount 1742 +StellarJet: Discount 3889 +RyanSpace: Tax 7470 +Voyager: Rebate 9626 +NebulaAir: Tax 6978 +RyanSpace: Discount 184 +LunaLine: Tax 1309 +CelestialFlyer: Discount 425 +QantasSpace: Fee 5365 +SolarSkies: Tax 5557 +SpaceZ: Fee 7033 +SpaceZ: Rebate 3584 +GalaxyExpress: Fee 1702 +QantasSpace: Fee 8256 +CelestialFlyer: Rebate 7995 +AuroraSpace: Fee 3745 +CelestialFlyer: Tax 7220 +NeptuneExpress: Rebate 3170 +AstroWings: Fee 6303 +NeptuneExpress: Rebate 6724 +NovaWings: Fee 6283 +SpaceZ: Tax 9996 +OrionAir: Tax 4517 +LunaLine: Rebate 9269 +GalaxyExpress: Tax 7745 +SpaceZ: Tax 1323 +CometAir: Discount 2694 +CathayGalactic: Rebate 2090 +StarCruiser: Discount 6273 +AstroWings: Tax 2123 +CelestialFlyer: Rebate 6894 +CelestialFlyer: Tax 2195 +LunaLine: Tax 412 +LunaLine: Fee 4853 +AuroraSpace: Discount 1072 +NovaWings: Tax 2677 +QantasSpace: Rebate 7693 +QantasSpace: Discount 6364 +NebulaAir: Fee 7863 +CometAir: Discount 6407 +QantasSpace: Discount 1211 +CosmoAir: Tax 3729 +AstroWings: Fee 6036 +LunaLine: Discount 461 +RyanSpace: Fee 6973 +StarCruiser: Rebate 2176 +NeptuneExpress: Rebate 2543 +MartianSpacelines: Tax 2877 +MartianSpacelines: Discount 2346 +Voyager: Discount 7822 +CelestialFlyer: Tax 7194 +CosmoAir: Tax 5486 +OrionAir: Tax 5874 +QantasSpace: Discount 9892 +NovaWings: Tax 1576 +SpaceZ: Fee 5160 +CometAir: Rebate 1917 +StellarJet: Rebate 1695 +SolarSkies: Fee 3677 +RyanSpace: Discount 8734 +GalaxyExpress: Fee 6164 +NovaWings: Rebate 3736 +CelestialFlyer: Discount 7293 +NeptuneExpress: Fee 5721 +AuroraSpace: Rebate 4749 +NovaWings: Rebate 5803 +StarCruiser: Tax 8840 +NovaWings: Fee 1362 +LunaLine: Discount 1177 +SolarSkies: Rebate 4403 +AstroWings: Fee 6844 +SpaceZ: Rebate 5312 +AuroraSpace: Fee 6605 +GalaxyExpress: Luggage 11250 +Voyager: Discount 1167 +CathayGalactic: Tax 9415 +Voyager: Rebate 9547 +SolarSkies: Rebate 715 +CometAir: Discount 5327 +CathayGalactic: Discount 221 +CathayGalactic: Fee 5050 +GalaxyExpress: Fee 8320 +NebulaAir: Tax 617 +CosmoAir: Fee 5579 +GalaxyExpress: Fee 5136 +LunaLine: Tax 9075 +MartianSpacelines: Tax 6541 +MartianSpacelines: Discount 4736 +NebulaAir: Tax 7453 +MartianSpacelines: Fee 379 +SpaceZ: Luggage 7000 +Voyager: Fee 3670 +NebulaAir: Tax 6001 +StarCruiser: Tax 5245 +AstroWings: Discount 9935 +NovaWings: Rebate 7297 +AuroraSpace: Discount 7414 +CelestialFlyer: Discount 9341 +CometAir: Discount 4720 +CosmoAir: Discount 989 +GalaxyExpress: Fee 4345 +AuroraSpace: Rebate 3213 +AstroWings: Rebate 8814 +CathayGalactic: Rebate 404 +StarCruiser: Tax 3906 +MartianSpacelines: Discount 2106 +NebulaAir: Discount 6223 +CometAir: Fee 7064 +Voyager: Fee 412 +CosmoAir: Discount 9893 +LunaLine: Fee 4373 +CosmoAir: Fee 4753 +Voyager: Discount 4221 +StellarJet: Rebate 5357 +LunaLine: Discount 9374 +CelestialFlyer: Rebate 1151 +CosmoAir: Tax 9901 +OrionAir: Discount 5494 +CelestialFlyer: Discount 9143 +AstroWings: Rebate 4040 +AstroWings: Tax 3488 +CathayGalactic: Rebate 2672 +StarCruiser: Rebate 401 +NeptuneExpress: Tax 4511 +NovaWings: Fee 696 +CometAir: Rebate 8213 +StellarJet: Fee 2190 +NebulaAir: Tax 3023 +AuroraSpace: Discount 5246 +CelestialFlyer: Rebate 1978 +QantasSpace: Discount 6442 +NeptuneExpress: Tax 8306 +RyanSpace: Rebate 5831 +CathayGalactic: Fee 8456 +SolarSkies: Fee 8922 +CosmoAir: Tax 6210 +CathayGalactic: Tax 6631 +MartianSpacelines: Rebate 8507 +GalaxyExpress: Fee 8205 +SpaceZ: Discount 1617 +AstroWings: Tax 2546 +GalaxyExpress: Tax 6696 +StarCruiser: Tax 2797 +NovaWings: Rebate 1721 +LunaLine: Fee 1406 +AstroWings: Tax 8188 +StarCruiser: Tax 7808 +NebulaAir: Tax 506 +SpaceZ: Discount 6847 +CosmoAir: Rebate 6108 +SpaceZ: Fee 9364 +RyanSpace: Rebate 4010 +CathayGalactic: Discount 1646 +NebulaAir: Fee 7733 +OrionAir: Tax 476 +NebulaAir: Fee 6505 +NeptuneExpress: Fee 3635 +RyanSpace: Fee 8832 +GalaxyExpress: Rebate 6803 +OrionAir: Rebate 3084 +CathayGalactic: Discount 3362 +StellarJet: Fee 4043 +SolarSkies: Discount 2668 +AuroraSpace: Rebate 5602 +OrionAir: Rebate 3142 +Voyager: Rebate 8735 +Voyager: Rebate 8353 +StarCruiser: Fee 6675 +AuroraSpace: Rebate 8420 +MartianSpacelines: Seat 460000 +OrionAir: Tax 7581 +CelestialFlyer: Tax 6165 +AuroraSpace: Discount 561 +Voyager: Tax 842 +AstroWings: Tax 6995 +OrionAir: Rebate 2200 +NovaWings: Discount 5048 +Voyager: Tax 225 +NeptuneExpress: Tax 8818 +RyanSpace: Tax 1380 +StarCruiser: Discount 6778 +CathayGalactic: Tax 3738 +CometAir: Tax 547 +LunaLine: Discount 314 +OrionAir: Fee 2232 +LunaLine: Discount 3670 +OrionAir: Tax 2265 +QantasSpace: Discount 977 +AstroWings: Fee 3324 +NebulaAir: Rebate 4483 +AuroraSpace: Discount 3324 +CelestialFlyer: Discount 923 +SolarSkies: Discount 1507 +NebulaAir: Rebate 506 +StellarJet: Tax 2828 +GalaxyExpress: Rebate 7390 +RyanSpace: Tax 7988 +NeptuneExpress: Discount 7429 +NebulaAir: Rebate 2425 +CelestialFlyer: Rebate 2545 +Voyager: Discount 8067 +StarCruiser: Rebate 3382 +SpaceZ: Rebate 7671 +QantasSpace: Tax 1432 +NovaWings: Fee 657 +NeptuneExpress: Tax 339 +NeptuneExpress: Rebate 2387 +MartianSpacelines: Discount 8309 +QantasSpace: Fee 6465 +QantasSpace: Tax 2979 +NovaWings: Fee 5528 +GalaxyExpress: Discount 2378 +RyanSpace: Fee 8139 +StellarJet: Rebate 5027 +MartianSpacelines: Tax 3923 +AstroWings: Rebate 1953 +SpaceZ: Tax 9419 +GalaxyExpress: Tax 7828 +AstroWings: Fee 4026 +CelestialFlyer: Discount 1697 +StellarJet: Rebate 4689 +CelestialFlyer: Discount 1392 +AuroraSpace: Tax 3944 +RyanSpace: Tax 829 +SolarSkies: Discount 6347 +StarCruiser: Rebate 2197 +MartianSpacelines: Fee 7697 +LunaLine: Rebate 7996 +SolarSkies: Rebate 3431 +CelestialFlyer: Rebate 178 +OrionAir: Rebate 4879 +AuroraSpace: Fee 525 +OrionAir: Discount 499 +CathayGalactic: Fee 5602 +NebulaAir: Rebate 3487 +StellarJet: Fee 6369 +AstroWings: Discount 1084 +SolarSkies: Discount 3436 +MartianSpacelines: Tax 6758 +SpaceZ: Rebate 9712 +GalaxyExpress: Tax 2784 +SolarSkies: Tax 1223 +MartianSpacelines: Fee 9136 +LunaLine: Discount 5895 +StellarJet: Rebate 9972 +SpaceZ: Discount 8361 +SpaceZ: Rebate 7890 +CometAir: Tax 8465 +SolarSkies: Tax 4651 +StarCruiser: Tax 1450 +NovaWings: Discount 1266 +CathayGalactic: Tax 3845 +CometAir: Fee 4940 +CelestialFlyer: Rebate 6700 +Voyager: Fee 2173 +LunaLine: Fee 4016 +SpaceZ: Fee 5607 +OrionAir: Rebate 6620 +CometAir: Discount 756 +QantasSpace: Fee 5546 +NebulaAir: Tax 8013 +SolarSkies: Rebate 9510 +RyanSpace: Rebate 5996 +CometAir: Tax 3939 +GalaxyExpress: Discount 8917 +StarCruiser: Tax 2726 +CathayGalactic: Tax 363 +StarCruiser: Meals 2700 +GalaxyExpress: Fee 7342 +QantasSpace: Tax 543 +SpaceZ: Fee 6957 +AstroWings: Rebate 476 +NeptuneExpress: Fee 9632 +CelestialFlyer: Tax 4419 +NebulaAir: Tax 2030 +GalaxyExpress: Fee 4981 +GalaxyExpress: Tax 9313 +SolarSkies: Fee 9007 +MartianSpacelines: Tax 1487 +CathayGalactic: Fee 409 +CathayGalactic: Fee 4596 +GalaxyExpress: Rebate 3009 +StellarJet: Tax 6210 +AuroraSpace: Tax 8499 +MartianSpacelines: Fee 9581 +CosmoAir: Discount 9677 +SpaceZ: Fee 2612 +GalaxyExpress: Discount 1845 +LunaLine: Fee 3930 +StellarJet: Tax 4219 +NeptuneExpress: Fee 5445 +NebulaAir: Fee 2114 +CometAir: Fee 5477 +CometAir: Fee 5951 +CathayGalactic: Fee 1825 +Voyager: Fee 7466 +MartianSpacelines: Discount 9190 +RyanSpace: Discount 7595 +GalaxyExpress: Fee 4064 +NebulaAir: Rebate 2017 +StellarJet: Luggage 3000 +CometAir: Rebate 9518 +RyanSpace: Rebate 7985 +LunaLine: Fee 9729 +SpaceZ: Discount 7143 +OrionAir: Fee 8482 +AuroraSpace: Tax 1205 +LunaLine: Fee 3024 +CosmoAir: Rebate 8122 +OrionAir: Tax 9867 +CometAir: Discount 2768 +SolarSkies: Rebate 6267 +CathayGalactic: Discount 2283 +CometAir: Fee 7511 +SpaceZ: Rebate 1837 +GalaxyExpress: Fee 9677 +CosmoAir: Tax 2504 +AstroWings: Rebate 4289 +NebulaAir: Tax 656 +SpaceZ: Rebate 4738 +NovaWings: Tax 6368 +NebulaAir: Discount 5161 +CathayGalactic: Rebate 8932 +OrionAir: Tax 1218 +CometAir: Fee 8229 +LunaLine: Rebate 5234 +GalaxyExpress: Rebate 5385 +AuroraSpace: Discount 5944 +AstroWings: Fee 6697 +AuroraSpace: Tax 4268 +Voyager: Tax 2362 +CosmoAir: Rebate 9361 +CosmoAir: Tax 1635 +SpaceZ: Tax 9797 +AstroWings: Fee 8690 +NovaWings: Discount 1951 +AstroWings: Tax 5104 +LunaLine: Tax 8811 +QantasSpace: Tax 5669 +StarCruiser: Tax 6681 +QantasSpace: Tax 1946 +NebulaAir: Fee 4625 +NovaWings: Discount 5133 +AstroWings: Fee 9653 +CosmoAir: Fee 1016 +AuroraSpace: Fee 1109 +CosmoAir: Fee 7005 +GalaxyExpress: Fee 1059 +QantasSpace: Discount 6632 +CometAir: Rebate 6352 +CathayGalactic: Rebate 873 +SpaceZ: Discount 4625 +CelestialFlyer: Rebate 7259 +NovaWings: Rebate 6975 +RyanSpace: Discount 8198 +Voyager: Rebate 2424 +OrionAir: Fee 8112 +SpaceZ: Fee 8608 +NeptuneExpress: Rebate 7047 +NebulaAir: Discount 2970 +NeptuneExpress: Fee 2264 +CometAir: Rebate 4739 +RyanSpace: Discount 6173 +MartianSpacelines: Tax 9077 +GalaxyExpress: Tax 2292 +AuroraSpace: Discount 5972 +CelestialFlyer: Tax 6349 +AstroWings: Fee 2368 +RyanSpace: Fee 1329 +RyanSpace: Discount 4899 +AstroWings: Tax 3777 +GalaxyExpress: Tax 9497 +StarCruiser: Tax 4160 +NovaWings: Luggage 12250 +LunaLine: Rebate 9222 +RyanSpace: Discount 1986 +SpaceZ: Rebate 9828 +NovaWings: Fee 394 +CometAir: Tax 629 +CathayGalactic: Discount 2662 +StellarJet: Fee 9453 +QantasSpace: Tax 7735 +AuroraSpace: Fee 7734 +LunaLine: Discount 6193 +QantasSpace: Discount 2814 +NebulaAir: Tax 8764 +OrionAir: Tax 4775 +OrionAir: Rebate 5898 +NebulaAir: Tax 5658 +AstroWings: Tax 5978 +MartianSpacelines: Rebate 2306 +SolarSkies: Tax 331 +GalaxyExpress: Discount 797 +AstroWings: Rebate 4421 +NeptuneExpress: Discount 3611 +LunaLine: Fee 8268 +RyanSpace: Fee 8202 +NovaWings: Rebate 7775 +CometAir: Fee 269 +RyanSpace: Fee 4187 +StarCruiser: Fee 7406 +StarCruiser: Fee 1237 +Voyager: Rebate 3148 +AuroraSpace: Discount 6564 +AstroWings: Discount 7590 +AstroWings: Fee 3417 +CometAir: Fee 4970 +NebulaAir: Rebate 8154 +NovaWings: Rebate 9104 +QantasSpace: Discount 2313 +AuroraSpace: Rebate 2795 +SpaceZ: Tax 7275 +StellarJet: Discount 5055 +StarCruiser: Rebate 2339 +LunaLine: Tax 7330 +CosmoAir: Rebate 5681 +QantasSpace: Tax 1515 +AuroraSpace: Discount 783 +AstroWings: Fee 6778 +CelestialFlyer: Discount 6325 +StarCruiser: Fee 7741 +StellarJet: Fee 4933 +MartianSpacelines: Fee 5728 +QantasSpace: Fee 8695 +CelestialFlyer: Rebate 756 +StarCruiser: Discount 1511 +AuroraSpace: Fee 7474 +OrionAir: Discount 4672 +SolarSkies: Rebate 9242 +CathayGalactic: Fee 4209 +SpaceZ: Fee 1284 +OrionAir: Tax 8072 +SpaceZ: Rebate 4461 +Voyager: Fee 7489 +CometAir: Discount 4072 +CathayGalactic: Rebate 6811 +StarCruiser: Fee 3991 +RyanSpace: Discount 5210 +OrionAir: Tax 8547 +NeptuneExpress: Fee 9537 +QantasSpace: Rebate 6280 +CometAir: Fee 1122 +AstroWings: Tax 6485 +NeptuneExpress: Discount 6787 +AuroraSpace: Fee 7383 +CometAir: Rebate 1099 +StellarJet: Tax 9338 +LunaLine: Rebate 7173 +Voyager: Tax 7042 +RyanSpace: Fee 5578 +OrionAir: Tax 6324 +SolarSkies: Fee 5705 +NebulaAir: Discount 3473 +LunaLine: Rebate 5256 +StarCruiser: Fee 1686 +StarCruiser: Discount 6430 +LunaLine: Tax 2678 +SpaceZ: Discount 1321 +Voyager: Tax 9895 +NebulaAir: Tax 5803 +GalaxyExpress: Discount 5953 +NovaWings: Tax 6689 +OrionAir: Rebate 3955 +RyanSpace: Rebate 5909 +StellarJet: Discount 7168 +NeptuneExpress: Fee 8126 +AstroWings: Rebate 4839 +LunaLine: Rebate 5961 +Voyager: Fee 1351 +NeptuneExpress: Discount 3820 +CathayGalactic: Fee 2225 +CometAir: Rebate 851 +NovaWings: Tax 289 +SpaceZ: Fee 509 +GalaxyExpress: Fee 8985 +NeptuneExpress: Rebate 9160 +AuroraSpace: Fee 9174 +SolarSkies: Discount 239 +SolarSkies: Tax 7143 +NebulaAir: Rebate 2802 +CosmoAir: Fee 7304 +CathayGalactic: Discount 6856 +CometAir: Fee 2622 +MartianSpacelines: Fee 843 +StarCruiser: Rebate 4720 +CometAir: Rebate 9897 +CathayGalactic: Rebate 9078 +LunaLine: Tax 390 +CathayGalactic: Fee 1338 +NeptuneExpress: Fee 543 +OrionAir: Discount 9963 +LunaLine: Fee 3483 +SolarSkies: Fee 4492 +NovaWings: Rebate 2316 +OrionAir: Discount 219 +NovaWings: Tax 8716 +CelestialFlyer: Rebate 4370 +SolarSkies: Meals 1600 +CelestialFlyer: Rebate 2983 +MartianSpacelines: Rebate 3930 +MartianSpacelines: Fee 2841 +NovaWings: Rebate 7736 +CosmoAir: Rebate 2940 +CosmoAir: Discount 7602 +NebulaAir: Tax 7014 +SpaceZ: Tax 9815 +StellarJet: Fee 9867 +CometAir: Discount 6248 +SolarSkies: Discount 1386 +NovaWings: Fee 9062 +AuroraSpace: Rebate 6268 +Voyager: Tax 4590 +SolarSkies: Fee 1032 +RyanSpace: Tax 4263 +RyanSpace: Discount 8575 +AstroWings: Discount 9523 +SolarSkies: Fee 9345 +QantasSpace: Rebate 2734 +StarCruiser: Rebate 2854 +RyanSpace: Tax 2016 +GalaxyExpress: Discount 6375 +AuroraSpace: Rebate 1447 +CathayGalactic: Tax 501 +CosmoAir: Discount 2346 +SpaceZ: Fee 4505 +OrionAir: Tax 6392 +CathayGalactic: Fee 1380 +CosmoAir: Tax 5855 +NeptuneExpress: Discount 7994 +OrionAir: Fee 7158 +StarCruiser: Fee 602 +AstroWings: Discount 1107 +GalaxyExpress: Discount 5235 +NebulaAir: Fee 8574 +NovaWings: Fee 322 +CelestialFlyer: Tax 6193 +NeptuneExpress: Fee 1581 +SpaceZ: Tax 5048 +CometAir: Tax 7701 +RyanSpace: Fee 3833 +CometAir: Fee 3637 +LunaLine: Tax 6690 +CelestialFlyer: Fee 9397 +QantasSpace: Tax 1704 +QantasSpace: Rebate 6357 +MartianSpacelines: Discount 9550 +StellarJet: Tax 529 +CathayGalactic: Tax 1272 +OrionAir: Rebate 6109 +GalaxyExpress: Discount 4847 +NovaWings: Rebate 8990 +NeptuneExpress: Discount 2214 +CathayGalactic: Rebate 9732 +OrionAir: Fee 550 +CometAir: Tax 9762 +AuroraSpace: Discount 7322 +LunaLine: Fee 8901 +GalaxyExpress: Rebate 5256 +NebulaAir: Fee 7240 +Voyager: Tax 1434 +SolarSkies: Fee 7889 +NeptuneExpress: Rebate 9825 +StellarJet: Fee 3356 +OrionAir: Discount 4444 +StarCruiser: Discount 1966 +StellarJet: Rebate 4011 +MartianSpacelines: Rebate 2908 +SpaceZ: Discount 7617 +NeptuneExpress: Discount 7233 +CelestialFlyer: Discount 5098 +SpaceZ: Fee 3649 +CosmoAir: Fee 4610 +SolarSkies: Discount 7649 +NeptuneExpress: Fee 4945 +CosmoAir: Rebate 6879 +CelestialFlyer: Discount 8053 +QantasSpace: Tax 4133 +LunaLine: Fee 7111 +MartianSpacelines: Tax 9698 +StellarJet: Fee 2935 +CosmoAir: Tax 5472 +NovaWings: Fee 1873 +RyanSpace: Fee 1377 +NebulaAir: Rebate 7078 +StellarJet: Fee 7641 +MartianSpacelines: Tax 8862 +StarCruiser: Fee 9490 +StellarJet: Discount 1165 +AstroWings: Tax 5092 +QantasSpace: Fee 1423 +CelestialFlyer: Tax 5076 +SpaceZ: Tax 4744 +CosmoAir: Tax 9377 +SpaceZ: Tax 8330 +NebulaAir: Rebate 133 +OrionAir: Rebate 9496 +CathayGalactic: Rebate 9896 +NeptuneExpress: Fee 7701 +AstroWings: Discount 2921 +LunaLine: Rebate 8033 +AuroraSpace: Fee 530 +GalaxyExpress: Tax 1117 +StellarJet: Discount 1054 +MartianSpacelines: Discount 153 +LunaLine: Fee 1658 +CosmoAir: Tax 1929 +SolarSkies: Rebate 7556 +LunaLine: Rebate 509 +SolarSkies: Fee 9543 +SolarSkies: Discount 5080 +StarCruiser: Fee 6833 +GalaxyExpress: Discount 6836 +OrionAir: Discount 6377 +SpaceZ: Rebate 145 +MartianSpacelines: Fee 2899 +MartianSpacelines: Fee 7165 +StarCruiser: Rebate 3489 +OrionAir: Rebate 2819 +StarCruiser: Discount 3509 +StarCruiser: Discount 7742 +CosmoAir: Tax 3017 +LunaLine: Fee 5731 +Voyager: Rebate 6301 +NebulaAir: Rebate 3166 +NovaWings: Discount 6544 +MartianSpacelines: Rebate 3668 +NebulaAir: Rebate 2595 +OrionAir: Rebate 4119 +CosmoAir: Fee 4727 +SpaceZ: Rebate 193 +CosmoAir: Meals 1600 +CathayGalactic: Fee 6030 +AstroWings: Discount 8228 +OrionAir: Discount 1142 +StellarJet: Discount 507 +AuroraSpace: Discount 1042 +Voyager: Tax 8427 +SpaceZ: Tax 5002 +SpaceZ: Tax 3055 +NeptuneExpress: Fee 9213 +CelestialFlyer: Discount 3358 +GalaxyExpress: Tax 780 +CelestialFlyer: Rebate 526 +CathayGalactic: Tax 5880 +NebulaAir: Fee 463 +AstroWings: Fee 6759 +CometAir: Discount 9064 +CelestialFlyer: Rebate 7055 +AuroraSpace: Rebate 7208 +NovaWings: Tax 7758 +AstroWings: Tax 1967 +Voyager: Discount 7350 +CometAir: Rebate 9810 +CelestialFlyer: Discount 4568 +CathayGalactic: Tax 2297 +AuroraSpace: Fee 1356 +SolarSkies: Rebate 9660 +GalaxyExpress: Meals 1900 +QantasSpace: Fee 9970 +LunaLine: Fee 7166 +NebulaAir: Fee 6697 +SpaceZ: Discount 5265 +AuroraSpace: Tax 4500 +CometAir: Fee 7283 +AuroraSpace: Discount 2122 +CometAir: Discount 4223 +GalaxyExpress: Discount 9149 +SpaceZ: Discount 2098 +CometAir: Discount 5354 +Voyager: Rebate 4984 +CosmoAir: Rebate 8256 +StarCruiser: Fee 4653 +MartianSpacelines: Discount 2236 +CelestialFlyer: Tax 4756 +RyanSpace: Fee 8570 +LunaLine: Discount 2463 +MartianSpacelines: Rebate 1766 +NeptuneExpress: Rebate 6298 +NeptuneExpress: Discount 227 +SolarSkies: Rebate 183 +CometAir: Rebate 6898 +StarCruiser: Fee 2157 +AuroraSpace: Rebate 1929 +SpaceZ: Rebate 8958 +SpaceZ: Tax 5760 +OrionAir: Fee 4464 +CelestialFlyer: Discount 2351 +StellarJet: Tax 2726 +SpaceZ: Rebate 783 +CathayGalactic: Tax 3490 +NovaWings: Fee 8243 +LunaLine: Fee 3570 +CathayGalactic: Fee 8916 +NeptuneExpress: Discount 322 +AuroraSpace: Tax 1913 +AuroraSpace: Fee 8534 +AuroraSpace: Fee 7062 +CometAir: Discount 8878 +StarCruiser: Discount 5651 +StellarJet: Discount 1167 +StarCruiser: Tax 1158 +StellarJet: Discount 6327 +QantasSpace: Discount 289 +SpaceZ: Tax 4428 +Voyager: Rebate 9894 +CosmoAir: Rebate 6051 +StellarJet: Tax 7659 +NeptuneExpress: Discount 8630 +SpaceZ: Discount 5650 +NebulaAir: Discount 919 +AuroraSpace: Tax 6503 +CosmoAir: Discount 4088 +NebulaAir: Rebate 5728 +AstroWings: Rebate 3743 +CosmoAir: Tax 1543 +NovaWings: Tax 8620 +StellarJet: Rebate 9453 +NeptuneExpress: Rebate 2548 +CelestialFlyer: Tax 5373 +CosmoAir: Tax 8798 +CometAir: Rebate 4764 +NebulaAir: Rebate 942 +NovaWings: Discount 3986 +NebulaAir: Tax 5739 +MartianSpacelines: Discount 1187 +SolarSkies: Tax 7904 +MartianSpacelines: Fee 5757 +NovaWings: Rebate 4175 +SolarSkies: Rebate 2394 +AuroraSpace: Discount 5196 +MartianSpacelines: Tax 8918 +MartianSpacelines: Fee 937 +CathayGalactic: Discount 8455 +QantasSpace: Rebate 5252 +MartianSpacelines: Tax 824 +RyanSpace: Discount 3830 +CometAir: Rebate 6870 +SolarSkies: Tax 8513 +QantasSpace: Tax 7516 +SpaceZ: Rebate 9180 +CosmoAir: Fee 9507 +QantasSpace: Tax 8240 +CelestialFlyer: Discount 2113 +QantasSpace: Rebate 7291 +NebulaAir: Fee 491 +MartianSpacelines: Tax 171 +SolarSkies: Tax 4822 +QantasSpace: Discount 6685 +CathayGalactic: Rebate 9589 +AuroraSpace: Rebate 4954 +AstroWings: Tax 8815 +QantasSpace: Tax 1634 +OrionAir: Fee 8441 +StarCruiser: Fee 4843 +SolarSkies: Fee 3541 +CometAir: Discount 2475 +SpaceZ: Fee 6991 +GalaxyExpress: Tax 4273 +CosmoAir: Discount 730 +LunaLine: Fee 1310 +QantasSpace: Rebate 3970 +GalaxyExpress: Tax 6098 +CometAir: Tax 1466 +CosmoAir: Discount 9845 +GalaxyExpress: Fee 6997 +GalaxyExpress: Tax 8861 +NebulaAir: Discount 7680 +LunaLine: Rebate 1155 +QantasSpace: Rebate 2110 +MartianSpacelines: Fee 9519 +OrionAir: Fee 5941 +CosmoAir: Fee 4464 +Voyager: Discount 1564 +StellarJet: Rebate 1389 +SolarSkies: Discount 5713 +SolarSkies: Tax 7393 +CometAir: Tax 6942 +GalaxyExpress: Tax 9026 +SolarSkies: Tax 9984 +RyanSpace: Fee 8031 +CometAir: Fee 5941 +CathayGalactic: Tax 7681 +LunaLine: Tax 2967 +StellarJet: Fee 5737 +MartianSpacelines: Rebate 4299 +StellarJet: Fee 6009 +CelestialFlyer: Discount 6401 +NovaWings: Discount 2239 +LunaLine: Meals 4000 +LunaLine: Tax 1846 +NeptuneExpress: Tax 8830 +CelestialFlyer: Discount 3456 +MartianSpacelines: Discount 3507 +AstroWings: Fee 4263 +CelestialFlyer: Fee 406 +CometAir: Discount 946 +SolarSkies: Discount 1193 +NovaWings: Tax 7670 +NeptuneExpress: Tax 1217 +CometAir: Discount 9989 +QantasSpace: Fee 8612 +SpaceZ: Discount 135 +LunaLine: Fee 1227 +RyanSpace: Tax 6572 +AstroWings: Rebate 8149 +CelestialFlyer: Tax 4313 +OrionAir: Fee 7134 +SpaceZ: Rebate 3326 +CosmoAir: Discount 6715 +OrionAir: Rebate 1579 +NeptuneExpress: Discount 2153 +CosmoAir: Tax 6570 +AuroraSpace: Discount 5670 +AuroraSpace: Fee 1031 +MartianSpacelines: Discount 520 +StellarJet: Fee 5948 +NovaWings: Rebate 5723 +NovaWings: Discount 8161 +Voyager: Discount 6908 +AstroWings: Tax 8992 +AuroraSpace: Rebate 3951 +LunaLine: Discount 9160 +CelestialFlyer: Rebate 8603 +GalaxyExpress: Tax 6096 +LunaLine: Luggage 2000 +RyanSpace: Discount 6041 +SolarSkies: Rebate 1409 +CelestialFlyer: Fee 8308 +AuroraSpace: Fee 7852 +GalaxyExpress: Discount 6068 +StellarJet: Fee 1092 +CosmoAir: Fee 9620 +CosmoAir: Discount 5023 +Voyager: Rebate 2531 +SolarSkies: Tax 1533 +CometAir: Tax 598 +NebulaAir: Discount 1450 +GalaxyExpress: Rebate 8216 +NovaWings: Discount 6254 +OrionAir: Fee 1855 +GalaxyExpress: Fee 327 +OrionAir: Rebate 6619 +NovaWings: Fee 5674 +Voyager: Tax 7078 +StarCruiser: Discount 7907 +CometAir: Rebate 8805 +SpaceZ: Tax 3482 +SolarSkies: Fee 6603 +QantasSpace: Discount 2999 +LunaLine: Tax 4106 +SpaceZ: Rebate 814 +SpaceZ: Fee 2191 +AuroraSpace: Tax 3010 +CosmoAir: Discount 6359 +AstroWings: Discount 9532 +StarCruiser: Discount 1556 +OrionAir: Rebate 6703 +GalaxyExpress: Rebate 7659 +RyanSpace: Discount 1942 +NeptuneExpress: Fee 6996 +NebulaAir: Discount 8153 +NeptuneExpress: Rebate 8162 +CosmoAir: Rebate 7612 +NebulaAir: Rebate 9777 +AuroraSpace: Discount 5203 +CometAir: Discount 3352 +CometAir: Luggage 750 +MartianSpacelines: Rebate 6119 +CathayGalactic: Tax 2800 +NebulaAir: Tax 5183 +NebulaAir: Tax 6708 +OrionAir: Fee 1564 +GalaxyExpress: Discount 7273 +NebulaAir: Discount 7437 +QantasSpace: Rebate 4894 +CosmoAir: Rebate 2715 +Voyager: Discount 8922 +LunaLine: Rebate 1873 +CathayGalactic: Discount 7902 +SpaceZ: Discount 8569 +OrionAir: Fee 9280 +StellarJet: Rebate 2293 +MartianSpacelines: Rebate 8351 +CometAir: Discount 1645 +RyanSpace: Tax 5095 +GalaxyExpress: Rebate 1954 +AstroWings: Fee 7238 +CathayGalactic: Tax 5145 +StarCruiser: Rebate 3486 +NebulaAir: Discount 4504 +LunaLine: Rebate 5026 +NebulaAir: Fee 1111 +GalaxyExpress: Rebate 2749 +StellarJet: Fee 5264 +Voyager: Discount 8215 +CelestialFlyer: Tax 1364 +CathayGalactic: Discount 7406 +LunaLine: Rebate 7821 +NeptuneExpress: Fee 691 +RyanSpace: Tax 8973 +NovaWings: Tax 3752 +AuroraSpace: Fee 9361 +AstroWings: Discount 8189 +AuroraSpace: Rebate 9537 +GalaxyExpress: Rebate 7166 +Voyager: Discount 3755 +Voyager: Discount 8419 +QantasSpace: Fee 9375 +NebulaAir: Rebate 1701 +CosmoAir: Tax 8763 +CathayGalactic: Tax 2060 +Voyager: Discount 9335 +Voyager: Discount 8936 +SpaceZ: Discount 7182 +SolarSkies: Fee 3680 +GalaxyExpress: Rebate 9192 +NovaWings: Tax 493 +StellarJet: Discount 6936 +CelestialFlyer: Fee 5245 +NovaWings: Meals 1500 +AuroraSpace: Discount 7934 +Voyager: Tax 6117 +NovaWings: Tax 9846 +LunaLine: Discount 979 +OrionAir: Tax 876 +CathayGalactic: Tax 4409 +AstroWings: Rebate 4077 +CelestialFlyer: Fee 2540 +CelestialFlyer: Discount 9254 +CometAir: Discount 6645 +RyanSpace: Fee 4252 +StarCruiser: Discount 2073 +StarCruiser: Fee 3873 +StellarJet: Fee 1128 +NovaWings: Discount 3672 +MartianSpacelines: Discount 1931 +StellarJet: Rebate 3362 +Voyager: Rebate 5793 +NebulaAir: Discount 2409 +CathayGalactic: Fee 8363 +CelestialFlyer: Fee 6748 +GalaxyExpress: Rebate 4531 +SpaceZ: Fee 5937 +CometAir: Fee 1201 +MartianSpacelines: Rebate 5919 +AstroWings: Tax 7867 +GalaxyExpress: Rebate 8566 +SpaceZ: Fee 9788 +Voyager: Rebate 1572 +CelestialFlyer: Fee 8712 +NebulaAir: Fee 4425 +StellarJet: Rebate 331 +SolarSkies: Tax 8988 +CometAir: Fee 6297 +SolarSkies: Fee 2669 +AuroraSpace: Discount 226 +CelestialFlyer: Rebate 5217 +SolarSkies: Tax 5254 +StarCruiser: Fee 485 +OrionAir: Discount 8424 +StellarJet: Fee 6505 +RyanSpace: Discount 2013 +CometAir: Tax 9282 +SpaceZ: Rebate 8931 +SpaceZ: Fee 1735 +NebulaAir: Fee 1092 +LunaLine: Rebate 9346 +NebulaAir: Tax 2061 +SpaceZ: Rebate 5144 +SpaceZ: Tax 2934 +AuroraSpace: Fee 516 +SolarSkies: Discount 5029 +AstroWings: Rebate 2347 +AuroraSpace: Tax 802 +CometAir: Discount 7973 +StellarJet: Rebate 3012 +MartianSpacelines: Fee 6650 +AstroWings: Rebate 1383 +NeptuneExpress: Rebate 6514 +SolarSkies: Discount 8084 +CosmoAir: Discount 8082 +Voyager: Rebate 7717 +StarCruiser: Tax 667 +NebulaAir: Fee 1928 +CelestialFlyer: Tax 7100 +AstroWings: Discount 6135 +Voyager: Fee 4746 +CathayGalactic: Fee 4840 +GalaxyExpress: Discount 2138 +AstroWings: Fee 9082 +MartianSpacelines: Fee 1227 +GalaxyExpress: Discount 8821 +RyanSpace: Discount 4655 +QantasSpace: Discount 558 +StellarJet: Rebate 2941 +NovaWings: Fee 6028 +MartianSpacelines: Rebate 5489 +NeptuneExpress: Fee 4126 +RyanSpace: Discount 1746 +OrionAir: Tax 513 +StellarJet: Discount 7310 +CathayGalactic: Rebate 218 +NeptuneExpress: Rebate 9365 +MartianSpacelines: Fee 6888 +CosmoAir: Rebate 6734 +SpaceZ: Tax 963 +OrionAir: Tax 9184 +NebulaAir: Rebate 1443 +NovaWings: Discount 8002 +AstroWings: Fee 2204 +StarCruiser: Tax 5869 +StarCruiser: Rebate 683 +AstroWings: Discount 9934 +CometAir: Rebate 6852 +CathayGalactic: Tax 9767 +RyanSpace: Tax 6455 +AstroWings: Discount 9883 +RyanSpace: Fee 5548 +QantasSpace: Rebate 1175 +RyanSpace: Fee 2023 +Voyager: Tax 2880 +SolarSkies: Fee 6389 +NeptuneExpress: Rebate 7343 +AstroWings: Fee 1115 +MartianSpacelines: Fee 9357 +SolarSkies: Tax 6255 +AuroraSpace: Tax 5087 +Voyager: Fee 4346 +OrionAir: Fee 3882 +NeptuneExpress: Rebate 3280 +CathayGalactic: Rebate 9071 +RyanSpace: Rebate 3555 +CelestialFlyer: Tax 605 +RyanSpace: Rebate 2138 +AstroWings: Rebate 1367 +OrionAir: Discount 8651 +OrionAir: Rebate 6763 +CometAir: Tax 5710 +StellarJet: Rebate 3636 +AuroraSpace: Tax 6896 +Voyager: Discount 2207 +CathayGalactic: Rebate 5569 +MartianSpacelines: Tax 2778 +StarCruiser: Tax 3654 +LunaLine: Tax 9075 +StellarJet: Rebate 701 +StarCruiser: Discount 9690 +SpaceZ: Discount 9828 +OrionAir: Fee 6966 +OrionAir: Fee 4984 +AstroWings: Discount 5696 +AstroWings: Rebate 2721 +AstroWings: Rebate 170 +CometAir: Tax 8109 +NebulaAir: Tax 3474 +SolarSkies: Tax 2034 +QantasSpace: Rebate 3341 +NeptuneExpress: Meals 4400 +QantasSpace: Discount 7845 +CosmoAir: Rebate 8368 +AstroWings: Tax 2258 +CelestialFlyer: Fee 9388 +CathayGalactic: Fee 121 +AuroraSpace: Tax 1527 +CelestialFlyer: Discount 5223 +AstroWings: Fee 7785 +Voyager: Fee 8545 +NeptuneExpress: Rebate 7296 +CathayGalactic: Fee 7996 +CathayGalactic: Fee 5567 +NeptuneExpress: Tax 3701 +SolarSkies: Fee 4452 +CelestialFlyer: Tax 7549 +StarCruiser: Fee 1411 +NovaWings: Fee 4668 +MartianSpacelines: Tax 3285 +NeptuneExpress: Discount 2026 +MartianSpacelines: Tax 8336 +CosmoAir: Fee 5095 +RyanSpace: Fee 2119 +AstroWings: Tax 8271 +StellarJet: Fee 1222 +OrionAir: Fee 7123 +RyanSpace: Tax 2722 +NovaWings: Discount 8281 +AuroraSpace: Tax 5155 +SolarSkies: Rebate 5951 +CelestialFlyer: Discount 1713 +SpaceZ: Rebate 9203 +StellarJet: Tax 2674 +OrionAir: Discount 6256 +CosmoAir: Tax 8975 +StellarJet: Tax 2228 +AuroraSpace: Rebate 2342 +LunaLine: Tax 3472 +QantasSpace: Discount 4953 +AuroraSpace: Discount 668 +MartianSpacelines: Discount 5880 +SpaceZ: Discount 3460 +CathayGalactic: Fee 2971 +AstroWings: Fee 3125 +Voyager: Tax 2865 +StarCruiser: Tax 9366 +CathayGalactic: Rebate 1309 +Voyager: Tax 5176 +AuroraSpace: Rebate 7558 +QantasSpace: Fee 2073 +MartianSpacelines: Fee 8258 +AuroraSpace: Rebate 1471 +Voyager: Tax 251 +AstroWings: Rebate 2373 +NebulaAir: Discount 2506 +AstroWings: Tax 5844 +Voyager: Tax 9686 +OrionAir: Fee 5056 +GalaxyExpress: Discount 3456 +GalaxyExpress: Discount 4140 +RyanSpace: Fee 2808 +StellarJet: Fee 1845 +OrionAir: Rebate 1148 +CathayGalactic: Rebate 7136 +SolarSkies: Discount 5384 +NovaWings: Tax 4004 +StarCruiser: Tax 9246 +CelestialFlyer: Fee 1857 +CosmoAir: Tax 5984 +CosmoAir: Discount 946 +NebulaAir: Tax 6039 +QantasSpace: Discount 6245 +OrionAir: Tax 7830 +CometAir: Tax 8806 +AuroraSpace: Tax 9313 +CathayGalactic: Fee 3263 +RyanSpace: Tax 7500 +SpaceZ: Discount 3444 +CathayGalactic: Tax 4807 +CosmoAir: Rebate 7275 +StarCruiser: Fee 1947 +CelestialFlyer: Fee 7836 +CosmoAir: Discount 5026 +SpaceZ: Rebate 2510 +NovaWings: Fee 4126 +AuroraSpace: Discount 4461 +LunaLine: Fee 6139 +GalaxyExpress: Rebate 6061 +NeptuneExpress: Discount 1184 +StellarJet: Discount 4330 +LunaLine: Discount 111 +Voyager: Fee 2514 +CathayGalactic: Tax 6072 +AstroWings: Rebate 1822 +AstroWings: Fee 2827 +SolarSkies: Tax 9479 +RyanSpace: Discount 9718 +AstroWings: Tax 5303 +CelestialFlyer: Fee 6216 +GalaxyExpress: Discount 2712 +Voyager: Tax 3413 +SolarSkies: Tax 4490 +QantasSpace: Tax 6150 +OrionAir: Fee 4735 +CelestialFlyer: Tax 326 +OrionAir: Rebate 9076 +SolarSkies: Discount 4485 +SolarSkies: Discount 3475 +StellarJet: Discount 8749 +OrionAir: Tax 8269 +StarCruiser: Discount 5101 +MartianSpacelines: Fee 7687 +AstroWings: Rebate 297 +Voyager: Tax 7986 +QantasSpace: Discount 4358 +SpaceZ: Rebate 1215 +CathayGalactic: Discount 2259 +QantasSpace: Fee 940 +QantasSpace: Discount 6051 +QantasSpace: Rebate 7077 +RyanSpace: Tax 5218 +NeptuneExpress: Tax 4307 +CometAir: Discount 2033 +OrionAir: Tax 1090 +OrionAir: Tax 7953 +AuroraSpace: Tax 4484 +QantasSpace: Rebate 4819 +AuroraSpace: Tax 2465 +AstroWings: Tax 9692 +GalaxyExpress: Fee 8584 +SolarSkies: Discount 3994 +RyanSpace: Discount 8153 +LunaLine: Tax 5028 +CathayGalactic: Tax 4087 +GalaxyExpress: Rebate 4579 +CosmoAir: Tax 361 +AstroWings: Rebate 7536 +CometAir: Rebate 8425 +AstroWings: Tax 149 +StarCruiser: Fee 7162 +CosmoAir: Rebate 3422 +SolarSkies: Discount 1142 +CometAir: Tax 8655 +CathayGalactic: Discount 4066 +CosmoAir: Rebate 3906 +NeptuneExpress: Discount 3913 +QantasSpace: Rebate 8914 +CelestialFlyer: Tax 3073 +CathayGalactic: Fee 7580 +LunaLine: Tax 7853 +NovaWings: Discount 2065 +CathayGalactic: Tax 5751 +SolarSkies: Tax 851 +CometAir: Tax 6103 +OrionAir: Fee 8652 +CosmoAir: Tax 415 +CometAir: Discount 7199 +Voyager: Discount 9677 +NeptuneExpress: Fee 9362 +StellarJet: Tax 3730 +CelestialFlyer: Rebate 5226 +CathayGalactic: Rebate 1088 +LunaLine: Discount 3349 +GalaxyExpress: Fee 8802 +RyanSpace: Discount 3168 +Voyager: Fee 6874 +StarCruiser: Rebate 3720 +StarCruiser: Discount 2744 +CosmoAir: Fee 7532 +LunaLine: Discount 6779 +StellarJet: Discount 2419 +StellarJet: Rebate 2140 +QantasSpace: Fee 4828 +OrionAir: Fee 7237 +OrionAir: Discount 7828 +GalaxyExpress: Discount 958 +QantasSpace: Tax 592 +RyanSpace: Tax 3368 +AuroraSpace: Discount 2220 +StarCruiser: Rebate 1841 +OrionAir: Tax 9967 +CathayGalactic: Rebate 8966 +SolarSkies: Discount 4186 +NebulaAir: Tax 318 +NovaWings: Fee 8141 +MartianSpacelines: Fee 3385 +NeptuneExpress: Fee 7404 +SpaceZ: Rebate 6283 +CathayGalactic: Fee 1522 +RyanSpace: Tax 7478 +NovaWings: Fee 4131 +AuroraSpace: Fee 8349 +GalaxyExpress: Discount 6197 +SolarSkies: Tax 8410 +LunaLine: Rebate 3227 +QantasSpace: Tax 2175 +SolarSkies: Rebate 3622 +RyanSpace: Tax 7166 +MartianSpacelines: Rebate 7682 +LunaLine: Discount 8896 +NovaWings: Tax 4191 +QantasSpace: Fee 6762 +CometAir: Tax 6715 +NeptuneExpress: Fee 3648 +AstroWings: Fee 9888 +NebulaAir: Fee 8524 +NeptuneExpress: Tax 6152 +Voyager: Rebate 9579 +AstroWings: Discount 9635 +NeptuneExpress: Tax 7130 +LunaLine: Rebate 6284 +OrionAir: Tax 3803 +QantasSpace: Rebate 8136 +RyanSpace: Fee 8829 +LunaLine: Rebate 5451 +CelestialFlyer: Tax 5017 +Voyager: Fee 1594 +SolarSkies: Fee 8115 +SolarSkies: Tax 9102 +StarCruiser: Fee 7574 +OrionAir: Tax 1616 +NovaWings: Rebate 4124 +NovaWings: Fee 6210 +CelestialFlyer: Discount 597 +Voyager: Tax 5781 +SolarSkies: Tax 4227 +CometAir: Rebate 9507 +OrionAir: Fee 3695 +StellarJet: Tax 1906 +CosmoAir: Discount 144 +SolarSkies: Tax 7660 +NovaWings: Tax 5677 +NebulaAir: Rebate 4215 +SpaceZ: Rebate 9056 +RyanSpace: Discount 1981 +CathayGalactic: Discount 4621 +SpaceZ: Discount 3523 +LunaLine: Tax 8929 +StarCruiser: Rebate 9834 +CathayGalactic: Tax 1655 +AuroraSpace: Discount 6668 +StarCruiser: Fee 2209 +QantasSpace: Discount 378 +AuroraSpace: Rebate 8759 +OrionAir: Tax 6972 +AstroWings: Discount 6651 +StellarJet: Rebate 9689 +CometAir: Rebate 8639 +SpaceZ: Discount 2721 +NeptuneExpress: Discount 6097 +OrionAir: Tax 8722 +NeptuneExpress: Rebate 3973 +StellarJet: Discount 600 +AstroWings: Fee 9376 +CathayGalactic: Fee 3921 +CosmoAir: Tax 341 +QantasSpace: Discount 6872 +SolarSkies: Discount 5082 +GalaxyExpress: Rebate 5810 +NovaWings: Discount 4821 +NovaWings: Tax 1315 +CathayGalactic: Fee 9485 +OrionAir: Discount 3261 +AstroWings: Tax 6805 +AuroraSpace: Discount 7130 +SpaceZ: Discount 4936 +AstroWings: Discount 4740 +SpaceZ: Discount 5584 +AstroWings: Tax 6605 +CosmoAir: Tax 2483 +CosmoAir: Tax 3634 +StellarJet: Rebate 6234 +MartianSpacelines: Tax 7650 +NeptuneExpress: Rebate 6107 +OrionAir: Rebate 2962 +MartianSpacelines: Tax 5006 +MartianSpacelines: Rebate 2619 +Voyager: Fee 6666 +CometAir: Discount 4247 +StellarJet: Rebate 5919 +NeptuneExpress: Rebate 1500 +Voyager: Discount 246 +StarCruiser: Fee 9792 +StarCruiser: Rebate 8920 +AuroraSpace: Tax 7959 +GalaxyExpress: Fee 7195 +StarCruiser: Discount 1202 +StellarJet: Tax 2083 +CathayGalactic: Fee 909 +NeptuneExpress: Fee 292 +NeptuneExpress: Rebate 8479 +NeptuneExpress: Discount 243 +GalaxyExpress: Discount 9239 +LunaLine: Tax 8213 +CometAir: Discount 8723 +CometAir: Rebate 2337 +StarCruiser: Rebate 7427 +CometAir: Fee 1003 +OrionAir: Tax 4877 +StellarJet: Discount 7778 +LunaLine: Rebate 2397 +NebulaAir: Discount 3144 +NeptuneExpress: Tax 8706 +NovaWings: Fee 4323 +QantasSpace: Fee 451 +OrionAir: Tax 7230 +AstroWings: Tax 9309 +StellarJet: Rebate 6679 +RyanSpace: Tax 5384 +NebulaAir: Discount 6331 +AuroraSpace: Rebate 1301 +AstroWings: Seat 240000 +StellarJet: Tax 5271 +SolarSkies: Discount 9413 +SolarSkies: Fee 8812 +SolarSkies: Rebate 8665 +CosmoAir: Rebate 6245 +OrionAir: Discount 4575 +StellarJet: Tax 7490 +GalaxyExpress: Fee 6612 +GalaxyExpress: Fee 241 +NeptuneExpress: Discount 3924 +SpaceZ: Rebate 8678 +CathayGalactic: Fee 1410 +CathayGalactic: Rebate 1945 +SolarSkies: Tax 9771 +LunaLine: Rebate 3087 +AstroWings: Discount 4662 +LunaLine: Fee 4345 +RyanSpace: Tax 8789 +AstroWings: Discount 7374 +StarCruiser: Discount 8288 +NovaWings: Discount 8336 +SolarSkies: Fee 9835 +AstroWings: Rebate 3526 +NebulaAir: Discount 8488 +NebulaAir: Tax 4228 +StarCruiser: Discount 505 +CosmoAir: Fee 4610 +NovaWings: Fee 7292 +RyanSpace: Fee 9772 +SpaceZ: Discount 5786 +MartianSpacelines: Fee 3572 +CathayGalactic: Fee 1104 +SolarSkies: Rebate 561 +SpaceZ: Rebate 5001 +NovaWings: Fee 8719 +MartianSpacelines: Rebate 2468 +CathayGalactic: Fee 5558 +QantasSpace: Discount 253 +SolarSkies: Fee 3746 +AuroraSpace: Tax 9969 +StarCruiser: Discount 4362 +NebulaAir: Fee 8313 +CathayGalactic: Fee 7001 +CometAir: Fee 786 +AuroraSpace: Discount 5429 +QantasSpace: Fee 898 +SolarSkies: Rebate 6518 +CosmoAir: Rebate 6595 +LunaLine: Tax 6800 +CathayGalactic: Tax 1203 +MartianSpacelines: Tax 803 +Voyager: Tax 6286 +StarCruiser: Tax 1003 +RyanSpace: Discount 157 +StellarJet: Fee 5876 +CelestialFlyer: Fee 9667 +StellarJet: Rebate 9616 +GalaxyExpress: Discount 7648 +NebulaAir: Fee 1218 +NovaWings: Discount 3899 +MartianSpacelines: Discount 6378 +NeptuneExpress: Tax 7899 +CathayGalactic: Tax 7720 +CelestialFlyer: Fee 265 +RyanSpace: Rebate 3858 +NovaWings: Fee 2147 +CosmoAir: Fee 6283 +Voyager: Rebate 9417 +OrionAir: Tax 3710 +Voyager: Discount 6167 +LunaLine: Fee 6679 +LunaLine: Fee 9467 +Voyager: Discount 3551 +NebulaAir: Discount 8307 +CathayGalactic: Rebate 5839 +GalaxyExpress: Rebate 8545 +SolarSkies: Tax 2210 +CometAir: Rebate 1210 +MartianSpacelines: Fee 7913 +CelestialFlyer: Tax 4328 +CosmoAir: Tax 9548 +SpaceZ: Discount 3523 +NeptuneExpress: Rebate 9468 +AuroraSpace: Discount 1754 +CometAir: Discount 550 +CometAir: Fee 6102 +CometAir: Discount 3698 +SpaceZ: Tax 7023 +StarCruiser: Fee 8329 +SpaceZ: Rebate 9184 +Voyager: Discount 2962 +StarCruiser: Rebate 8022 +OrionAir: Rebate 5103 +CometAir: Fee 2530 +Voyager: Tax 9018 +QantasSpace: Fee 8525 +QantasSpace: Rebate 4628 +NeptuneExpress: Fee 2018 +OrionAir: Fee 4995 +NebulaAir: Fee 1197 +StarCruiser: Tax 9946 +LunaLine: Fee 9480 +CathayGalactic: Discount 6587 +StarCruiser: Fee 4270 +QantasSpace: Tax 2672 +AstroWings: Fee 4282 +RyanSpace: Discount 2098 +QantasSpace: Fee 5255 +NovaWings: Fee 9293 +Voyager: Tax 8962 +LunaLine: Rebate 2640 +NovaWings: Fee 6471 +LunaLine: Fee 9892 +SpaceZ: Fee 2816 +SolarSkies: Tax 7838 +NeptuneExpress: Rebate 4449 +NeptuneExpress: Fee 2809 +AstroWings: Rebate 9013 +CelestialFlyer: Tax 4122 +NovaWings: Tax 5560 +SpaceZ: Fee 9292 +NebulaAir: Rebate 7604 +GalaxyExpress: Fee 7495 +RyanSpace: Fee 9339 +SpaceZ: Fee 6637 +CelestialFlyer: Fee 7984 +CelestialFlyer: Fee 7100 +GalaxyExpress: Tax 527 +StellarJet: Tax 8457 +StellarJet: Tax 7343 +NeptuneExpress: Tax 5324 +CosmoAir: Discount 446 +StellarJet: Discount 6064 +MartianSpacelines: Fee 1270 +StarCruiser: Discount 7572 +RyanSpace: Fee 4282 +LunaLine: Discount 4199 +NeptuneExpress: Tax 7791 +CathayGalactic: Discount 2876 +SpaceZ: Discount 1094 +NovaWings: Fee 5664 +GalaxyExpress: Tax 9803 +AuroraSpace: Tax 4011 +QantasSpace: Discount 6151 +MartianSpacelines: Tax 7621 +CelestialFlyer: Rebate 6304 +CometAir: Rebate 672 +MartianSpacelines: Fee 3053 +StarCruiser: Discount 4170 +QantasSpace: Rebate 1615 +SolarSkies: Tax 8434 +RyanSpace: Rebate 3163 +AuroraSpace: Meals 1100 +CathayGalactic: Rebate 1880 +RyanSpace: Rebate 4611 +RyanSpace: Fee 9068 +SpaceZ: Meals 3400 +MartianSpacelines: Discount 1877 +CelestialFlyer: Tax 1848 +CosmoAir: Rebate 6214 +CathayGalactic: Discount 4246 +CometAir: Discount 1025 +RyanSpace: Discount 7845 +GalaxyExpress: Rebate 8020 +SpaceZ: Tax 8147 +MartianSpacelines: Tax 3603 +CathayGalactic: Discount 1787 +GalaxyExpress: Seat 300000 +StarCruiser: Tax 7061 +CathayGalactic: Tax 3295 +SpaceZ: Tax 6589 +CosmoAir: Rebate 4587 +StarCruiser: Fee 9829 +SpaceZ: Rebate 773 +RyanSpace: Tax 8785 +NeptuneExpress: Rebate 2279 +RyanSpace: Fee 3669 +NovaWings: Tax 4214 +AstroWings: Rebate 7570 +RyanSpace: Fee 7906 +QantasSpace: Fee 1163 +StarCruiser: Tax 347 +CosmoAir: Fee 194 +NebulaAir: Fee 7707 +NeptuneExpress: Rebate 7235 +MartianSpacelines: Tax 3180 +StarCruiser: Rebate 617 +GalaxyExpress: Rebate 490 +LunaLine: Discount 1515 +GalaxyExpress: Fee 6605 +CathayGalactic: Tax 2053 +CometAir: Discount 670 +SolarSkies: Fee 8656 +NovaWings: Fee 8952 +NebulaAir: Tax 3107 +AuroraSpace: Fee 6758 +NebulaAir: Tax 2702 +StellarJet: Fee 6871 +CometAir: Tax 7987 +CosmoAir: Tax 7648 +SolarSkies: Discount 3539 +MartianSpacelines: Tax 5319 +CathayGalactic: Fee 2178 +AstroWings: Fee 291 +AstroWings: Discount 3497 +MartianSpacelines: Fee 938 +OrionAir: Rebate 1818 +Voyager: Rebate 6287 +GalaxyExpress: Rebate 9395 +SpaceZ: Discount 7556 +SolarSkies: Tax 7217 +CathayGalactic: Discount 290 +GalaxyExpress: Fee 3209 +CometAir: Discount 7887 +StellarJet: Fee 348 +AstroWings: Rebate 3125 +NeptuneExpress: Fee 2692 +QantasSpace: Rebate 4275 +AuroraSpace: Rebate 6920 +StarCruiser: Rebate 908 +StellarJet: Discount 6789 +CelestialFlyer: Fee 5101 +NebulaAir: Rebate 2309 +GalaxyExpress: Fee 1671 +StellarJet: Tax 6291 +CathayGalactic: Discount 4444 +CathayGalactic: Fee 4299 +SpaceZ: Tax 1593 +MartianSpacelines: Fee 2376 +NeptuneExpress: Fee 8722 +OrionAir: Discount 432 +LunaLine: Fee 7407 +CathayGalactic: Tax 2808 +QantasSpace: Tax 9852 +NeptuneExpress: Tax 9214 +NovaWings: Discount 5313 +OrionAir: Tax 4975 +SolarSkies: Fee 1607 +QantasSpace: Fee 8122 +OrionAir: Tax 601 +SolarSkies: Fee 7521 +SpaceZ: Rebate 7360 +OrionAir: Rebate 5490 +GalaxyExpress: Fee 3490 +NebulaAir: Discount 268 +QantasSpace: Tax 8608 +NovaWings: Tax 7292 +AuroraSpace: Discount 8392 +AuroraSpace: Luggage 7750 +NeptuneExpress: Rebate 5672 +NeptuneExpress: Fee 4929 +StarCruiser: Fee 548 +SpaceZ: Tax 8527 +SpaceZ: Fee 7028 +GalaxyExpress: Discount 2161 +StellarJet: Rebate 8102 +SolarSkies: Discount 8404 +CelestialFlyer: Tax 3587 +NeptuneExpress: Discount 6358 +CosmoAir: Rebate 6289 +MartianSpacelines: Discount 1043 +GalaxyExpress: Rebate 906 +StarCruiser: Rebate 123 +Voyager: Tax 5045 +NovaWings: Rebate 1549 +AstroWings: Rebate 8398 +StellarJet: Fee 6777 +GalaxyExpress: Rebate 4417 +StellarJet: Rebate 9375 +SpaceZ: Fee 8606 +StarCruiser: Discount 9637 +AuroraSpace: Discount 5666 +MartianSpacelines: Rebate 8090 +CelestialFlyer: Fee 8123 +NeptuneExpress: Fee 252 +CelestialFlyer: Rebate 9293 +NeptuneExpress: Rebate 1026 +StellarJet: Fee 3058 +MartianSpacelines: Discount 3224 +CosmoAir: Fee 4421 +CosmoAir: Rebate 9511 +SpaceZ: Rebate 6572 +StellarJet: Discount 2525 +NeptuneExpress: Rebate 6284 +QantasSpace: Tax 2161 +RyanSpace: Discount 2943 +AstroWings: Tax 8302 +AuroraSpace: Tax 468 +QantasSpace: Discount 3039 +NebulaAir: Rebate 7430 +QantasSpace: Fee 105 +CathayGalactic: Meals 1600 +CathayGalactic: Fee 2225 +CometAir: Fee 3048 +SolarSkies: Fee 5309 +CometAir: Tax 5294 +RyanSpace: Tax 2782 +GalaxyExpress: Discount 2747 +CosmoAir: Discount 1686 +NovaWings: Rebate 6042 +StellarJet: Rebate 5019 +QantasSpace: Rebate 255 +MartianSpacelines: Rebate 520 +LunaLine: Fee 5270 +Voyager: Tax 8690 +StellarJet: Discount 8914 +CosmoAir: Discount 8190 +Voyager: Rebate 645 +SolarSkies: Tax 5980 +LunaLine: Tax 9452 +NovaWings: Rebate 4892 +RyanSpace: Discount 5519 +CosmoAir: Tax 3060 +Voyager: Discount 4456 +SolarSkies: Discount 8504 +NebulaAir: Tax 334 +CosmoAir: Discount 6155 +LunaLine: Discount 9685 +CosmoAir: Rebate 4221 +AuroraSpace: Rebate 3081 +StarCruiser: Tax 2104 +CelestialFlyer: Rebate 832 +AuroraSpace: Tax 7430 +QantasSpace: Tax 2617 +LunaLine: Tax 1568 +CathayGalactic: Fee 4521 +LunaLine: Fee 7606 +StellarJet: Discount 7637 +StellarJet: Discount 8643 +CosmoAir: Rebate 8196 +QantasSpace: Fee 7865 +NovaWings: Discount 9451 +StarCruiser: Tax 5263 +QantasSpace: Fee 1434 +SpaceZ: Fee 5117 +MartianSpacelines: Discount 6407 +AstroWings: Tax 9804 +OrionAir: Discount 1194 +AstroWings: Discount 6272 +MartianSpacelines: Tax 3469 +OrionAir: Rebate 5735 +SpaceZ: Tax 1238 +CathayGalactic: Fee 6707 +GalaxyExpress: Fee 2614 +MartianSpacelines: Discount 8672 +StarCruiser: Rebate 4792 +LunaLine: Tax 9582 +MartianSpacelines: Fee 3561 +CometAir: Fee 9850 +CelestialFlyer: Discount 9472 +AuroraSpace: Rebate 1221 +NebulaAir: Tax 3247 +RyanSpace: Fee 3216 +NovaWings: Discount 5991 +AuroraSpace: Tax 6601 +CosmoAir: Tax 1603 +GalaxyExpress: Discount 2910 +CometAir: Tax 8819 +StellarJet: Tax 2280 +Voyager: Tax 1101 +SolarSkies: Fee 2753 +NovaWings: Rebate 5802 +MartianSpacelines: Tax 7437 +QantasSpace: Tax 1904 +MartianSpacelines: Rebate 8399 +SpaceZ: Tax 4942 +GalaxyExpress: Discount 5286 +CathayGalactic: Rebate 1707 +Voyager: Discount 2475 +AuroraSpace: Tax 7525 +RyanSpace: Tax 4995 +SolarSkies: Discount 9556 +AstroWings: Tax 5939 +StarCruiser: Tax 5636 +LunaLine: Discount 3603 +StellarJet: Fee 6857 +CelestialFlyer: Tax 9386 +AuroraSpace: Tax 1743 +MartianSpacelines: Rebate 8825 +CathayGalactic: Tax 3348 +NovaWings: Rebate 3840 +CometAir: Fee 5997 +SolarSkies: Rebate 9179 +Voyager: Discount 9963 +StellarJet: Rebate 9565 +MartianSpacelines: Fee 8971 +CometAir: Discount 5369 +RyanSpace: Tax 776 +OrionAir: Discount 4816 +SpaceZ: Fee 3295 +StarCruiser: Rebate 6615 +OrionAir: Tax 3923 +QantasSpace: Discount 326 +RyanSpace: Discount 7325 +StellarJet: Discount 8474 +StellarJet: Fee 3027 +QantasSpace: Discount 4931 +CathayGalactic: Fee 4514 +MartianSpacelines: Discount 7615 +Voyager: Tax 3107 +MartianSpacelines: Fee 827 +GalaxyExpress: Rebate 1977 +GalaxyExpress: Discount 900 +SolarSkies: Rebate 4729 +CometAir: Fee 144 +NeptuneExpress: Discount 8925 +QantasSpace: Rebate 6456 +CathayGalactic: Fee 2342 +RyanSpace: Discount 9591 +OrionAir: Rebate 5762 +NovaWings: Rebate 4999 +NovaWings: Fee 1884 +AstroWings: Discount 4614 +LunaLine: Fee 857 +SolarSkies: Tax 1021 +RyanSpace: Tax 1244 +OrionAir: Fee 272 +GalaxyExpress: Tax 6478 +CosmoAir: Tax 8441 +Voyager: Tax 5602 +SpaceZ: Rebate 2706 +CometAir: Tax 6453 +Voyager: Fee 7072 +NebulaAir: Fee 2234 +AstroWings: Tax 1727 +GalaxyExpress: Rebate 8874 +MartianSpacelines: Tax 2170 +RyanSpace: Fee 481 +NebulaAir: Tax 5578 +RyanSpace: Tax 8667 +SolarSkies: Tax 4690 +GalaxyExpress: Tax 7881 +SolarSkies: Rebate 4724 +MartianSpacelines: Tax 2503 +Voyager: Fee 8598 +RyanSpace: Seat 310000 +CosmoAir: Rebate 4414 +LunaLine: Rebate 7440 +GalaxyExpress: Discount 1369 +CelestialFlyer: Discount 5578 +Voyager: Fee 399 +QantasSpace: Fee 9570 +RyanSpace: Tax 6346 +SpaceZ: Discount 1309 +CometAir: Fee 3018 +Voyager: Fee 7287 +NovaWings: Discount 7366 +RyanSpace: Tax 9545 +SolarSkies: Rebate 5469 +MartianSpacelines: Fee 3090 +SpaceZ: Tax 9087 +LunaLine: Discount 467 +NebulaAir: Discount 8199 +AstroWings: Discount 6337 +NovaWings: Discount 7333 +CometAir: Tax 6602 +OrionAir: Rebate 1770 +StellarJet: Rebate 2971 +GalaxyExpress: Rebate 7622 +OrionAir: Rebate 404 +NebulaAir: Tax 6408 +NovaWings: Fee 1197 +CometAir: Tax 5321 +NovaWings: Rebate 1642 +SolarSkies: Discount 1630 +AstroWings: Discount 7899 +CometAir: Rebate 3836 +SpaceZ: Fee 2323 +NebulaAir: Fee 2057 +QantasSpace: Rebate 4126 +QantasSpace: Discount 2164 +NeptuneExpress: Discount 2848 +NebulaAir: Tax 8239 +MartianSpacelines: Rebate 7347 +RyanSpace: Fee 7964 +SpaceZ: Fee 6536 +AstroWings: Fee 2227 +SpaceZ: Fee 7330 +NeptuneExpress: Rebate 4521 +NovaWings: Rebate 8870 +CometAir: Discount 3556 +OrionAir: Rebate 3959 +CosmoAir: Fee 7592 +OrionAir: Fee 6525 +StellarJet: Fee 7290 +NebulaAir: Discount 334 +MartianSpacelines: Tax 3818 +CelestialFlyer: Tax 3264 +QantasSpace: Tax 8600 +StellarJet: Tax 5605 +NeptuneExpress: Tax 8558 +NovaWings: Rebate 3688 +RyanSpace: Discount 793 +CometAir: Rebate 136 +GalaxyExpress: Rebate 5696 +NovaWings: Rebate 355 +QantasSpace: Fee 4704 +CometAir: Discount 3032 +NeptuneExpress: Discount 3030 +AstroWings: Fee 9439 +QantasSpace: Tax 7890 +AstroWings: Rebate 1115 +CometAir: Rebate 5635 +AuroraSpace: Discount 1077 +AuroraSpace: Tax 5153 +NebulaAir: Tax 5026 +CelestialFlyer: Tax 9239 +AuroraSpace: Rebate 2456 +Voyager: Fee 8384 +StarCruiser: Rebate 9492 +NebulaAir: Tax 9866 +StellarJet: Rebate 2340 +SpaceZ: Rebate 7852 +NeptuneExpress: Rebate 7531 +CosmoAir: Tax 3317 +SpaceZ: Tax 6795 +NeptuneExpress: Tax 9158 +AuroraSpace: Discount 1922 +LunaLine: Discount 729 +StellarJet: Tax 3892 +CometAir: Tax 2274 +CosmoAir: Fee 7221 +NovaWings: Tax 9343 +NebulaAir: Discount 9631 +SpaceZ: Fee 3537 +OrionAir: Rebate 5702 +AuroraSpace: Discount 9852 +CelestialFlyer: Rebate 9930 +Voyager: Rebate 3694 +SpaceZ: Rebate 1074 +CathayGalactic: Fee 5177 +GalaxyExpress: Fee 811 +CathayGalactic: Discount 4934 +NovaWings: Fee 6749 +Voyager: Fee 2172 +OrionAir: Fee 6432 +StarCruiser: Rebate 2707 +CometAir: Fee 2610 +QantasSpace: Discount 8181 +AuroraSpace: Discount 4554 +SpaceZ: Tax 9023 +CathayGalactic: Discount 6749 +QantasSpace: Rebate 779 +GalaxyExpress: Fee 8240 +SpaceZ: Discount 6310 +LunaLine: Fee 610 +MartianSpacelines: Rebate 1774 +AstroWings: Tax 589 +CathayGalactic: Rebate 1720 +MartianSpacelines: Fee 1544 +GalaxyExpress: Tax 376 +NebulaAir: Tax 5910 +CometAir: Discount 5707 +LunaLine: Rebate 9305 +SolarSkies: Fee 5493 +AstroWings: Rebate 524 +RyanSpace: Discount 8037 +CelestialFlyer: Discount 1110 +SolarSkies: Rebate 4710 +OrionAir: Rebate 7930 +NeptuneExpress: Rebate 2357 +OrionAir: Rebate 1714 +LunaLine: Discount 4057 +StarCruiser: Fee 4879 +CathayGalactic: Discount 5035 +NeptuneExpress: Discount 8633 +CelestialFlyer: Rebate 5559 +AstroWings: Discount 1435 +SolarSkies: Tax 1781 +AuroraSpace: Discount 4415 +NovaWings: Rebate 5265 +StarCruiser: Fee 8917 +GalaxyExpress: Discount 7721 +StellarJet: Rebate 9454 +Voyager: Rebate 4435 +SolarSkies: Discount 1802 +SolarSkies: Fee 2077 +AuroraSpace: Fee 5574 +SolarSkies: Rebate 6105 +CelestialFlyer: Rebate 7064 +GalaxyExpress: Tax 8288 +CosmoAir: Rebate 8363 +SolarSkies: Fee 6751 +StarCruiser: Tax 5066 +NeptuneExpress: Tax 8715 +QantasSpace: Fee 4906 +GalaxyExpress: Tax 6335 +AuroraSpace: Rebate 8068 +CelestialFlyer: Discount 7135 +NovaWings: Rebate 2061 +CosmoAir: Tax 967 +CosmoAir: Discount 2318 +NovaWings: Rebate 3326 +MartianSpacelines: Rebate 1984 +SolarSkies: Fee 6830 +SolarSkies: Fee 9451 +NebulaAir: Discount 2214 +QantasSpace: Fee 6946 +NovaWings: Tax 471 +StellarJet: Rebate 3926 +CathayGalactic: Rebate 319 +GalaxyExpress: Discount 6017 +SolarSkies: Discount 6954 +StarCruiser: Fee 7525 +StarCruiser: Rebate 9369 +GalaxyExpress: Rebate 6625 +OrionAir: Discount 8163 +OrionAir: Rebate 5775 +NebulaAir: Rebate 3443 +AstroWings: Fee 9466 +NeptuneExpress: Tax 8384 +CelestialFlyer: Rebate 7059 +NebulaAir: Rebate 2585 +NovaWings: Fee 416 +CometAir: Tax 498 +Voyager: Fee 1601 +SpaceZ: Rebate 9735 +CelestialFlyer: Meals 1800 +SpaceZ: Seat 230000 +GalaxyExpress: Discount 9452 +CelestialFlyer: Tax 1561 +Voyager: Discount 163 +SolarSkies: Tax 7525 +NovaWings: Tax 201 +CometAir: Tax 4443 +CathayGalactic: Fee 6032 +MartianSpacelines: Tax 8313 +CathayGalactic: Rebate 1134 +StarCruiser: Tax 7433 +AuroraSpace: Fee 5226 +CelestialFlyer: Discount 3573 +SpaceZ: Rebate 1075 +NebulaAir: Rebate 6013 +NovaWings: Fee 3039 +MartianSpacelines: Tax 5400 +LunaLine: Rebate 8695 +MartianSpacelines: Fee 9863 +AuroraSpace: Fee 5080 +GalaxyExpress: Discount 1314 +RyanSpace: Tax 3838 +StellarJet: Discount 2622 +SolarSkies: Rebate 3305 +GalaxyExpress: Fee 1215 +CathayGalactic: Discount 7182 +GalaxyExpress: Tax 1344 +CosmoAir: Tax 2293 +OrionAir: Luggage 6750 +NebulaAir: Fee 6057 +OrionAir: Fee 1585 +RyanSpace: Discount 1745 +StarCruiser: Discount 2257 +OrionAir: Rebate 3991 +CosmoAir: Discount 7365 +OrionAir: Rebate 4312 +LunaLine: Rebate 186 +NovaWings: Discount 741 +CelestialFlyer: Discount 330 +NebulaAir: Fee 4360 +SpaceZ: Discount 9629 +Voyager: Tax 9784 +NebulaAir: Tax 2919 +NeptuneExpress: Rebate 354 +QantasSpace: Rebate 7238 +AstroWings: Rebate 8140 +OrionAir: Fee 5159 +NebulaAir: Discount 3821 +NebulaAir: Luggage 9500 +RyanSpace: Discount 989 +OrionAir: Rebate 1658 +CathayGalactic: Tax 8964 +AstroWings: Tax 4922 +LunaLine: Discount 7071 +CelestialFlyer: Discount 139 +NeptuneExpress: Fee 5437 +NovaWings: Fee 5001 +GalaxyExpress: Rebate 6967 +CelestialFlyer: Tax 5368 +StellarJet: Discount 9100 +NebulaAir: Fee 1030 +CathayGalactic: Tax 6685 +StellarJet: Rebate 8716 +NebulaAir: Discount 9926 +RyanSpace: Discount 5366 +AstroWings: Tax 7203 +MartianSpacelines: Rebate 2016 +NebulaAir: Rebate 4078 +LunaLine: Fee 774 +CathayGalactic: Discount 9638 +CosmoAir: Fee 8819 +StellarJet: Tax 4589 +CathayGalactic: Tax 5025 +StellarJet: Fee 760 +CometAir: Discount 5527 +MartianSpacelines: Rebate 7149 +CosmoAir: Discount 9136 +MartianSpacelines: Tax 687 +GalaxyExpress: Fee 5370 +CathayGalactic: Tax 4861 +QantasSpace: Tax 8109 +LunaLine: Rebate 3114 +CathayGalactic: Tax 6859 +AuroraSpace: Tax 5720 +NebulaAir: Rebate 4127 +AuroraSpace: Tax 1426 +StellarJet: Tax 8605 +SpaceZ: Rebate 1129 +LunaLine: Fee 546 +NovaWings: Rebate 7129 +GalaxyExpress: Rebate 784 +CosmoAir: Discount 2028 +CometAir: Rebate 231 +SpaceZ: Rebate 3250 +NebulaAir: Rebate 7008 +CelestialFlyer: Fee 8345 +CathayGalactic: Tax 2549 +SpaceZ: Fee 1696 +CosmoAir: Discount 9073 +StellarJet: Fee 2590 +StellarJet: Rebate 8331 +LunaLine: Discount 1778 +NovaWings: Rebate 7557 +GalaxyExpress: Fee 1527 +OrionAir: Tax 450 +RyanSpace: Discount 2099 +NebulaAir: Rebate 6539 +MartianSpacelines: Fee 6238 +StarCruiser: Fee 5731 +AstroWings: Fee 4639 +CosmoAir: Discount 6118 +MartianSpacelines: Tax 5557 +CathayGalactic: Fee 9268 +MartianSpacelines: Rebate 4650 +AuroraSpace: Tax 2607 +Voyager: Discount 9720 +CometAir: Tax 3625 +RyanSpace: Fee 8852 +QantasSpace: Tax 4776 +Voyager: Tax 8983 +StellarJet: Fee 4303 +NovaWings: Tax 5351 +CathayGalactic: Rebate 4726 +NeptuneExpress: Tax 5624 +AuroraSpace: Rebate 922 +NovaWings: Fee 9369 +OrionAir: Rebate 4817 +AstroWings: Rebate 2929 +LunaLine: Rebate 2353 +SpaceZ: Tax 1951 +NeptuneExpress: Tax 6344 +CathayGalactic: Rebate 8648 +AuroraSpace: Discount 4142 +AuroraSpace: Rebate 8808 +StarCruiser: Tax 4929 +LunaLine: Tax 7873 +CathayGalactic: Discount 1949 +NeptuneExpress: Rebate 5582 +MartianSpacelines: Discount 2953 +QantasSpace: Rebate 4884 +SpaceZ: Fee 1083 +Voyager: Fee 4377 +NeptuneExpress: Discount 7383 +NovaWings: Fee 5197 +Voyager: Discount 7035 +CelestialFlyer: Rebate 995 +RyanSpace: Tax 4204 +CathayGalactic: Discount 9287 +AstroWings: Discount 589 +NeptuneExpress: Fee 4552 +GalaxyExpress: Fee 6877 +CelestialFlyer: Rebate 5012 +CelestialFlyer: Fee 3216 +CometAir: Rebate 7311 +AuroraSpace: Rebate 6096 +NeptuneExpress: Tax 9308 +CathayGalactic: Fee 719 +GalaxyExpress: Fee 6909 +MartianSpacelines: Discount 9477 +CelestialFlyer: Fee 302 +NovaWings: Discount 6576 +NovaWings: Rebate 6152 +NovaWings: Fee 4950 +SolarSkies: Rebate 9643 +CosmoAir: Discount 6061 +SolarSkies: Tax 3041 +SpaceZ: Discount 7782 +SolarSkies: Rebate 3032 +StarCruiser: Discount 9884 +SpaceZ: Discount 2862 +StarCruiser: Rebate 7722 +GalaxyExpress: Rebate 7157 +CometAir: Discount 8994 +NebulaAir: Fee 718 +StarCruiser: Rebate 8170 +StarCruiser: Tax 4011 +AuroraSpace: Rebate 8207 +Voyager: Tax 8990 +CelestialFlyer: Fee 3617 +NeptuneExpress: Fee 7974 +LunaLine: Discount 8008 +GalaxyExpress: Tax 5384 +CathayGalactic: Tax 9096 +AuroraSpace: Fee 1284 +Voyager: Tax 8558 +CosmoAir: Tax 5636 +CosmoAir: Discount 308 +MartianSpacelines: Tax 4635 +CometAir: Discount 6791 +StarCruiser: Tax 9069 +StarCruiser: Rebate 7324 +SolarSkies: Discount 399 +CosmoAir: Rebate 220 +NovaWings: Rebate 782 +MartianSpacelines: Tax 6324 +SpaceZ: Fee 7120 +CosmoAir: Discount 216 +MartianSpacelines: Rebate 7893 +StarCruiser: Rebate 7559 +Voyager: Discount 1856 +GalaxyExpress: Rebate 3395 +NovaWings: Tax 8969 +Voyager: Discount 3395 +OrionAir: Tax 1879 +AstroWings: Discount 2909 +AstroWings: Fee 7297 +CathayGalactic: Discount 1705 +CosmoAir: Tax 1049 +AstroWings: Discount 4712 +CometAir: Tax 2051 +StarCruiser: Tax 3946 +GalaxyExpress: Tax 8745 +Voyager: Tax 1677 +RyanSpace: Discount 2254 +CometAir: Discount 4909 +SolarSkies: Fee 4396 +SpaceZ: Rebate 4998 +StellarJet: Rebate 6611 +RyanSpace: Rebate 388 +SpaceZ: Tax 8946 +MartianSpacelines: Discount 1879 +CometAir: Fee 2120 +RyanSpace: Tax 2976 +SpaceZ: Rebate 5534 +QantasSpace: Fee 4644 +AuroraSpace: Rebate 567 +NeptuneExpress: Fee 7787 +CelestialFlyer: Discount 3044 +NeptuneExpress: Discount 4057 +MartianSpacelines: Discount 2736 +CometAir: Rebate 9076 +AuroraSpace: Discount 1165 +LunaLine: Tax 2068 +OrionAir: Fee 8728 +GalaxyExpress: Rebate 4094 +AstroWings: Discount 8662 +LunaLine: Fee 977 +QantasSpace: Rebate 9824 +QantasSpace: Fee 242 +QantasSpace: Rebate 4775 +AuroraSpace: Tax 6273 +AuroraSpace: Rebate 5433 +StellarJet: Tax 1850 +CosmoAir: Fee 591 +NovaWings: Discount 9311 +SolarSkies: Discount 1601 +SolarSkies: Fee 520 +NebulaAir: Tax 9079 +CometAir: Discount 6980 +StarCruiser: Discount 5670 +StarCruiser: Tax 9072 +RyanSpace: Rebate 877 +StarCruiser: Rebate 2722 +AuroraSpace: Tax 2259 +MartianSpacelines: Tax 2619 +LunaLine: Rebate 7262 +StellarJet: Rebate 441 +StellarJet: Fee 4245 +LunaLine: Fee 7013 +SolarSkies: Discount 6162 +GalaxyExpress: Rebate 4946 +AstroWings: Rebate 8656 +AstroWings: Fee 9202 +OrionAir: Rebate 2089 +CelestialFlyer: Fee 4918 +CelestialFlyer: Fee 392 +CelestialFlyer: Tax 7537 +LunaLine: Tax 5942 +SolarSkies: Tax 6025 +AuroraSpace: Discount 837 +CometAir: Fee 8086 +CathayGalactic: Rebate 6994 +AuroraSpace: Discount 8733 +CelestialFlyer: Tax 6652 +MartianSpacelines: Tax 6239 +StellarJet: Tax 3164 +SolarSkies: Fee 9828 +CelestialFlyer: Tax 7130 +LunaLine: Tax 8160 +GalaxyExpress: Fee 1790 +QantasSpace: Discount 5060 +LunaLine: Rebate 2527 +StellarJet: Discount 9781 +CelestialFlyer: Rebate 7519 +Voyager: Discount 9056 +NovaWings: Discount 241 +OrionAir: Tax 4548 +CosmoAir: Rebate 4961 +CelestialFlyer: Tax 135 +AuroraSpace: Tax 3965 +QantasSpace: Tax 1203 +CosmoAir: Tax 3577 +CathayGalactic: Fee 4751 +MartianSpacelines: Tax 2230 +AstroWings: Rebate 3109 +OrionAir: Discount 1243 +NeptuneExpress: Discount 5266 +NeptuneExpress: Fee 375 +CelestialFlyer: Fee 8572 +CosmoAir: Fee 2781 +NebulaAir: Tax 7665 +QantasSpace: Tax 4766 +StarCruiser: Rebate 4420 +SpaceZ: Fee 3151 +NeptuneExpress: Tax 761 +RyanSpace: Fee 6534 +NeptuneExpress: Fee 1970 +QantasSpace: Discount 2247 +NebulaAir: Discount 2013 +LunaLine: Tax 6365 +SolarSkies: Rebate 8653 +SolarSkies: Tax 245 +SpaceZ: Tax 6890 +GalaxyExpress: Discount 1072 +Voyager: Tax 2615 +StarCruiser: Rebate 6679 +QantasSpace: Tax 3022 +GalaxyExpress: Discount 6018 +SolarSkies: Fee 2340 +NeptuneExpress: Rebate 7290 +CometAir: Rebate 4999 +LunaLine: Rebate 5025 +NovaWings: Rebate 1359 +QantasSpace: Discount 5468 +QantasSpace: Discount 5091 +MartianSpacelines: Tax 4774 +CometAir: Discount 1310 +LunaLine: Tax 7292 +CosmoAir: Discount 9691 +CosmoAir: Discount 8158 +MartianSpacelines: Fee 4042 +MartianSpacelines: Rebate 5606 +AuroraSpace: Tax 7521 +CathayGalactic: Discount 6451 +NeptuneExpress: Rebate 5785 +QantasSpace: Rebate 897 +AuroraSpace: Rebate 2502 +OrionAir: Fee 3723 +QantasSpace: Fee 6891 +AuroraSpace: Fee 3285 +QantasSpace: Discount 2565 +RyanSpace: Rebate 5760 +StarCruiser: Tax 1800 +LunaLine: Tax 5640 +SolarSkies: Fee 5472 +StarCruiser: Rebate 6445 +StellarJet: Fee 3837 +CometAir: Rebate 874 +RyanSpace: Fee 8915 +OrionAir: Tax 1672 +StellarJet: Discount 2682 +GalaxyExpress: Discount 3940 +AstroWings: Fee 7943 +AuroraSpace: Fee 4672 +SolarSkies: Fee 3386 +CosmoAir: Fee 5268 +OrionAir: Tax 9194 +RyanSpace: Fee 9560 +NebulaAir: Tax 3770 +MartianSpacelines: Discount 6950 +CelestialFlyer: Rebate 610 +NovaWings: Discount 2604 +CosmoAir: Discount 8611 +CometAir: Discount 1600 +RyanSpace: Tax 1081 +Voyager: Rebate 4080 +CathayGalactic: Tax 2567 +OrionAir: Rebate 8489 +StarCruiser: Rebate 3589 +GalaxyExpress: Fee 1225 +LunaLine: Fee 7851 +MartianSpacelines: Discount 1077 +SpaceZ: Fee 9698 +GalaxyExpress: Discount 4463 +MartianSpacelines: Rebate 4308 +CelestialFlyer: Fee 3737 +CathayGalactic: Tax 4149 +CathayGalactic: Discount 7792 +OrionAir: Fee 5381 +CathayGalactic: Discount 6447 +CelestialFlyer: Fee 5399 +StellarJet: Fee 9523 +GalaxyExpress: Fee 3454 +LunaLine: Rebate 1622 +StarCruiser: Discount 9797 +CelestialFlyer: Rebate 9308 +NeptuneExpress: Fee 4492 +StarCruiser: Discount 5880 +NeptuneExpress: Tax 498 +CometAir: Rebate 8340 +CometAir: Tax 6088 +StarCruiser: Rebate 6219 +MartianSpacelines: Rebate 280 +AstroWings: Discount 783 +GalaxyExpress: Tax 6637 +SpaceZ: Fee 9964 +StellarJet: Tax 4533 +MartianSpacelines: Tax 5411 +NebulaAir: Discount 1769 +LunaLine: Fee 9507 +NovaWings: Rebate 7270 +MartianSpacelines: Fee 5095 +Voyager: Tax 4032 +SpaceZ: Tax 7434 +LunaLine: Discount 689 +StarCruiser: Luggage 4250 +AuroraSpace: Rebate 1116 +CosmoAir: Fee 2945 +CometAir: Rebate 8458 +SolarSkies: Fee 9974 +AuroraSpace: Fee 6216 +NebulaAir: Tax 3252 +MartianSpacelines: Tax 5332 +CathayGalactic: Fee 2517 +NeptuneExpress: Rebate 4032 +CathayGalactic: Fee 1435 +CosmoAir: Tax 3738 +StarCruiser: Fee 4936 +NebulaAir: Rebate 5371 +OrionAir: Tax 1886 +SpaceZ: Tax 9859 +NeptuneExpress: Tax 3030 +GalaxyExpress: Fee 3569 +LunaLine: Discount 3077 +NovaWings: Rebate 5418 +CelestialFlyer: Tax 3750 +Voyager: Rebate 1384 +RyanSpace: Fee 7580 +SpaceZ: Discount 3684 +AstroWings: Fee 4300 +QantasSpace: Tax 9779 +LunaLine: Discount 4463 +CelestialFlyer: Rebate 2059 +StarCruiser: Rebate 7609 +Voyager: Discount 856 +AuroraSpace: Fee 5402 +AuroraSpace: Fee 5067 +CathayGalactic: Fee 8255 +OrionAir: Discount 357 +StarCruiser: Discount 2236 +OrionAir: Rebate 3912 +NeptuneExpress: Discount 6015 +CometAir: Fee 7803 +StellarJet: Fee 8528 +CometAir: Tax 7213 +CometAir: Tax 9516 +StarCruiser: Discount 2533 +SpaceZ: Fee 3226 +Voyager: Fee 4263 +StarCruiser: Tax 7421 +Voyager: Rebate 7754 +LunaLine: Rebate 3411 +OrionAir: Discount 3253 +StellarJet: Tax 3964 +CosmoAir: Rebate 3938 +QantasSpace: Tax 5967 +CometAir: Fee 1377 +SpaceZ: Fee 6628 +Voyager: Tax 3759 +CathayGalactic: Luggage 1750 +MartianSpacelines: Discount 9839 +QantasSpace: Rebate 7062 +QantasSpace: Luggage 2500 +AstroWings: Discount 1017 +QantasSpace: Discount 8152 +AstroWings: Tax 8800 +StellarJet: Rebate 1744 +AstroWings: Discount 6651 +RyanSpace: Discount 2802 +QantasSpace: Fee 3314 +RyanSpace: Rebate 6239 +CosmoAir: Tax 1383 +Voyager: Discount 8757 +StarCruiser: Discount 7574 +OrionAir: Tax 6943 +NeptuneExpress: Tax 322 +AuroraSpace: Rebate 6279 +StarCruiser: Discount 4969 +StellarJet: Fee 5929 +SpaceZ: Rebate 4812 +CathayGalactic: Discount 4539 +StarCruiser: Fee 6802 +CosmoAir: Fee 1443 +CathayGalactic: Rebate 6008 +CelestialFlyer: Discount 3101 +GalaxyExpress: Tax 4893 +NebulaAir: Fee 5091 +SpaceZ: Tax 530 +CelestialFlyer: Fee 557 +QantasSpace: Rebate 9286 +NovaWings: Rebate 2822 +SolarSkies: Fee 5064 +NebulaAir: Fee 8898 +StellarJet: Fee 3866 +RyanSpace: Rebate 8687 +CometAir: Tax 7132 +CathayGalactic: Tax 9554 +CathayGalactic: Rebate 426 +QantasSpace: Tax 5577 +CelestialFlyer: Discount 3471 +SpaceZ: Rebate 6604 +NovaWings: Fee 3178 +OrionAir: Discount 3227 +CathayGalactic: Tax 3385 +CelestialFlyer: Fee 2164 +QantasSpace: Discount 541 +Voyager: Tax 5922 +AstroWings: Tax 851 +StellarJet: Rebate 5494 +AuroraSpace: Tax 3716 +StellarJet: Rebate 6858 +StellarJet: Discount 8041 +GalaxyExpress: Rebate 1905 +OrionAir: Discount 4653 +NeptuneExpress: Tax 8564 +LunaLine: Tax 8961 +CosmoAir: Discount 4538 +NebulaAir: Discount 2993 +CosmoAir: Fee 8707 +GalaxyExpress: Tax 1622 +AstroWings: Fee 9501 +GalaxyExpress: Rebate 9137 +AstroWings: Discount 7205 +MartianSpacelines: Tax 1906 +SpaceZ: Fee 5089 +CathayGalactic: Tax 4505 +StarCruiser: Rebate 2584 +QantasSpace: Fee 9052 +GalaxyExpress: Fee 8738 +SpaceZ: Fee 6562 +NeptuneExpress: Tax 9837 +CometAir: Rebate 3808 +StellarJet: Fee 2220 +AstroWings: Tax 2451 +SolarSkies: Discount 3204 +NeptuneExpress: Discount 6535 +RyanSpace: Discount 5573 +StellarJet: Discount 7842 +SpaceZ: Fee 5492 +NebulaAir: Fee 8363 +NebulaAir: Discount 6285 +StellarJet: Tax 8005 +StellarJet: Fee 2680 +Voyager: Fee 406 +StellarJet: Rebate 4460 +OrionAir: Rebate 7448 +NeptuneExpress: Fee 3253 +LunaLine: Discount 565 +NeptuneExpress: Rebate 6885 +Voyager: Fee 5887 +NovaWings: Fee 9557 +CelestialFlyer: Rebate 6695 +MartianSpacelines: Tax 8127 +AstroWings: Discount 7851 +GalaxyExpress: Tax 1832 +AstroWings: Tax 4749 +OrionAir: Rebate 7477 +CelestialFlyer: Rebate 6674 +StellarJet: Discount 5493 +NebulaAir: Tax 648 +GalaxyExpress: Fee 3672 +CelestialFlyer: Discount 6494 +NeptuneExpress: Discount 3092 +LunaLine: Rebate 3488 +SpaceZ: Discount 7734 +CelestialFlyer: Discount 5509 +NeptuneExpress: Rebate 6928 +Voyager: Discount 6548 +SpaceZ: Discount 1697 +StarCruiser: Fee 5631 +StarCruiser: Rebate 8966 +AuroraSpace: Rebate 824 +CelestialFlyer: Tax 1233 +CathayGalactic: Tax 611 +CosmoAir: Tax 4004 +CelestialFlyer: Tax 2702 +CelestialFlyer: Rebate 2580 +NebulaAir: Meals 3200 +QantasSpace: Rebate 1894 +StellarJet: Tax 6070 +LunaLine: Fee 1513 +SpaceZ: Fee 2973 +RyanSpace: Rebate 7674 +StarCruiser: Fee 8123 +AuroraSpace: Rebate 5664 +NovaWings: Tax 9827 +LunaLine: Fee 4033 +CometAir: Tax 241 +NebulaAir: Tax 9566 +GalaxyExpress: Discount 5505 +OrionAir: Discount 3471 +AuroraSpace: Tax 4258 +CelestialFlyer: Fee 1005 +SolarSkies: Rebate 1905 +CometAir: Rebate 9435 +MartianSpacelines: Rebate 7193 +AstroWings: Tax 7133 +LunaLine: Fee 9674 +MartianSpacelines: Discount 8092 +SolarSkies: Rebate 3862 +NovaWings: Rebate 8476 +AuroraSpace: Rebate 3801 +Voyager: Tax 9349 +CathayGalactic: Discount 1572 +CathayGalactic: Fee 5811 +RyanSpace: Tax 7840 +StarCruiser: Fee 3337 +RyanSpace: Discount 6737 +OrionAir: Fee 4274 +SpaceZ: Fee 8351 +MartianSpacelines: Fee 1120 +NovaWings: Fee 2515 +MartianSpacelines: Tax 6140 +NebulaAir: Tax 4531 +OrionAir: Discount 500 +CosmoAir: Discount 6128 +SolarSkies: Discount 5422 +AuroraSpace: Discount 7669 +CometAir: Meals 3400 +GalaxyExpress: Tax 3914 +RyanSpace: Fee 212 +SpaceZ: Tax 118 +LunaLine: Rebate 7549 +QantasSpace: Tax 8869 +GalaxyExpress: Discount 8729 +SolarSkies: Rebate 1680 +StellarJet: Rebate 5453 +SolarSkies: Discount 5103 +SpaceZ: Discount 678 +AuroraSpace: Discount 1734 +CathayGalactic: Discount 3766 +Voyager: Rebate 1234 +SpaceZ: Tax 5967 +AuroraSpace: Tax 3748 +NovaWings: Tax 8095 +NovaWings: Rebate 684 +StarCruiser: Discount 3325 +AuroraSpace: Tax 6049 +CelestialFlyer: Fee 2058 +SpaceZ: Discount 8816 +QantasSpace: Tax 5389 +GalaxyExpress: Rebate 9736 +SolarSkies: Fee 5957 +StarCruiser: Rebate 3351 +QantasSpace: Tax 608 +CometAir: Fee 3892 +RyanSpace: Fee 8340 +NebulaAir: Discount 608 +CosmoAir: Fee 9553 +SolarSkies: Rebate 8362 +RyanSpace: Rebate 5882 +CelestialFlyer: Rebate 8398 +QantasSpace: Tax 5193 +CometAir: Rebate 3957 +RyanSpace: Discount 7077 +SpaceZ: Fee 6562 +SpaceZ: Rebate 704 +NeptuneExpress: Discount 8671 +LunaLine: Fee 1964 +QantasSpace: Fee 951 +StarCruiser: Rebate 1718 +RyanSpace: Rebate 5745 +OrionAir: Tax 678 +OrionAir: Tax 4055 +OrionAir: Tax 4696 +NeptuneExpress: Discount 5374 +NovaWings: Tax 1699 +RyanSpace: Discount 4722 +LunaLine: Rebate 1699 +SolarSkies: Fee 1787 +OrionAir: Tax 7129 +LunaLine: Tax 1583 +NovaWings: Discount 874 +NeptuneExpress: Fee 7031 +AuroraSpace: Rebate 6522 +NeptuneExpress: Discount 127 +NebulaAir: Discount 1955 +CometAir: Rebate 4861 +GalaxyExpress: Rebate 175 +LunaLine: Discount 4198 +CometAir: Fee 1121 +CosmoAir: Discount 615 +CelestialFlyer: Discount 3825 +MartianSpacelines: Rebate 6722 +QantasSpace: Fee 3327 +NebulaAir: Discount 7386 +StarCruiser: Fee 8138 +AuroraSpace: Tax 1820 +RyanSpace: Tax 9573 +OrionAir: Fee 8876 +Voyager: Tax 7362 +CometAir: Tax 9787 +NovaWings: Rebate 9222 +CathayGalactic: Rebate 5725 +NebulaAir: Tax 2577 +StellarJet: Discount 4464 +MartianSpacelines: Discount 5828 +RyanSpace: Tax 739 +CosmoAir: Rebate 7071 +SpaceZ: Discount 7145 +SolarSkies: Rebate 6932 +MartianSpacelines: Rebate 4495 +MartianSpacelines: Discount 532 +NeptuneExpress: Fee 5626 +AstroWings: Discount 9655 +CosmoAir: Rebate 1224 +QantasSpace: Rebate 3575 +NeptuneExpress: Rebate 1388 +Voyager: Discount 2244 +AuroraSpace: Discount 5413 +StellarJet: Fee 5228 +CelestialFlyer: Discount 6745 +CelestialFlyer: Discount 7426 +NovaWings: Rebate 7292 +CometAir: Discount 5176 +AuroraSpace: Fee 9621 +StellarJet: Tax 4380 +NebulaAir: Fee 424 +RyanSpace: Fee 4024 +NeptuneExpress: Rebate 7784 +StellarJet: Fee 7260 +StellarJet: Discount 129 +NovaWings: Discount 6797 +NeptuneExpress: Discount 5777 +AuroraSpace: Discount 1919 +StarCruiser: Rebate 4250 +OrionAir: Rebate 4394 +CosmoAir: Fee 7618 +CelestialFlyer: Discount 4064 +RyanSpace: Fee 4378 +NovaWings: Tax 9640 +NebulaAir: Rebate 2090 +QantasSpace: Fee 6492 +NovaWings: Discount 1506 +StarCruiser: Rebate 9914 +NovaWings: Rebate 7609 +LunaLine: Fee 5210 +RyanSpace: Discount 3406 +QantasSpace: Tax 234 +NovaWings: Discount 2857 +CometAir: Fee 2788 +SpaceZ: Rebate 7330 +AuroraSpace: Fee 4292 +RyanSpace: Discount 408 +SpaceZ: Tax 1495 +AuroraSpace: Rebate 4019 +SolarSkies: Discount 2614 +StarCruiser: Rebate 978 +LunaLine: Discount 9706 +CosmoAir: Discount 4339 +RyanSpace: Fee 9514 +StellarJet: Discount 5219 +CathayGalactic: Discount 6662 +SolarSkies: Tax 4744 +NebulaAir: Discount 804 +AuroraSpace: Fee 1000 +GalaxyExpress: Tax 8049 +RyanSpace: Tax 4920 +LunaLine: Tax 8771 +StellarJet: Fee 9347 +LunaLine: Fee 8728 +SolarSkies: Discount 2884 +MartianSpacelines: Tax 5576 +AuroraSpace: Tax 7303 +CosmoAir: Rebate 9470 +CosmoAir: Fee 1518 +RyanSpace: Rebate 6364 +GalaxyExpress: Rebate 8109 +StellarJet: Discount 8893 +LunaLine: Fee 7947 +LunaLine: Rebate 590 +CathayGalactic: Tax 2724 +StellarJet: Discount 2920 +CosmoAir: Discount 2350 +AstroWings: Tax 681 +LunaLine: Rebate 1798 +LunaLine: Discount 6046 +NebulaAir: Discount 1062 +CelestialFlyer: Discount 2819 +SpaceZ: Discount 1840 +NeptuneExpress: Discount 6919 +CosmoAir: Tax 516 +OrionAir: Tax 4152 +AuroraSpace: Fee 6588 +NeptuneExpress: Rebate 6032 +Voyager: Tax 1119 +RyanSpace: Fee 2471 +QantasSpace: Discount 327 +NovaWings: Tax 7716 +CelestialFlyer: Tax 8808 +StellarJet: Tax 4366 +CathayGalactic: Discount 7709 +StarCruiser: Tax 8975 +Voyager: Fee 1545 +GalaxyExpress: Fee 9859 +CelestialFlyer: Tax 4508 +Voyager: Fee 8210 +SpaceZ: Tax 4427 +RyanSpace: Discount 7744 +NebulaAir: Discount 293 +NovaWings: Fee 8065 +NeptuneExpress: Fee 4688 +CosmoAir: Tax 1555 +NebulaAir: Fee 9395 +SpaceZ: Tax 3107 +AuroraSpace: Fee 7969 +CelestialFlyer: Rebate 3804 +Voyager: Discount 7649 +OrionAir: Discount 6981 +GalaxyExpress: Rebate 5902 +StarCruiser: Discount 4266 +OrionAir: Discount 4358 +AuroraSpace: Discount 1490 +AuroraSpace: Fee 4190 +RyanSpace: Meals 900 +MartianSpacelines: Rebate 7164 +AstroWings: Discount 2701 +CometAir: Discount 7416 +CathayGalactic: Tax 3198 +LunaLine: Fee 2395 +SolarSkies: Fee 8398 +AuroraSpace: Discount 2802 +StellarJet: Tax 523 +CathayGalactic: Discount 8696 +MartianSpacelines: Rebate 8163 +SolarSkies: Tax 7215 +StarCruiser: Rebate 1218 +CometAir: Rebate 9107 +NovaWings: Rebate 5775 +StarCruiser: Fee 6007 +SolarSkies: Luggage 2750 +NeptuneExpress: Tax 6210 +RyanSpace: Discount 6053 +OrionAir: Fee 5446 +NebulaAir: Tax 978 +StarCruiser: Discount 5209 +CelestialFlyer: Tax 8036 +CelestialFlyer: Discount 9725 +SolarSkies: Discount 1838 +StarCruiser: Fee 5465 +AstroWings: Discount 6397 +StellarJet: Discount 5449 +GalaxyExpress: Discount 8147 +OrionAir: Discount 4392 +StarCruiser: Discount 1318 +OrionAir: Fee 878 +NebulaAir: Tax 8948 +NebulaAir: Rebate 5420 +RyanSpace: Fee 2464 +AuroraSpace: Fee 3241 +AuroraSpace: Tax 8758 +CometAir: Fee 6407 +StarCruiser: Fee 4407 +RyanSpace: Rebate 1843 +CometAir: Rebate 1083 +NeptuneExpress: Discount 8689 +OrionAir: Rebate 9120 +OrionAir: Tax 3399 +QantasSpace: Fee 8461 +OrionAir: Fee 2220 +StarCruiser: Tax 3560 +LunaLine: Fee 4961 +MartianSpacelines: Fee 3029 +QantasSpace: Tax 7098 +CosmoAir: Fee 4733 +AuroraSpace: Rebate 8110 +StarCruiser: Rebate 774 +CathayGalactic: Rebate 4695 +NebulaAir: Rebate 8594 +CelestialFlyer: Tax 2218 +MartianSpacelines: Discount 4691 +SolarSkies: Rebate 2001 +StellarJet: Tax 4224 +GalaxyExpress: Tax 9292 +NeptuneExpress: Rebate 5100 +SolarSkies: Discount 7035 +LunaLine: Tax 6120 +NeptuneExpress: Fee 4688 +GalaxyExpress: Fee 9963 +CelestialFlyer: Discount 8918 +AstroWings: Tax 280 +SpaceZ: Discount 5488 +CometAir: Discount 5083 +GalaxyExpress: Fee 4564 +CosmoAir: Fee 8858 +LunaLine: Rebate 6983 +Voyager: Discount 1963 +MartianSpacelines: Discount 285 +CelestialFlyer: Rebate 9747 +NeptuneExpress: Discount 7848 +CosmoAir: Fee 283 +RyanSpace: Discount 8553 +MartianSpacelines: Discount 2856 +OrionAir: Discount 183 +CelestialFlyer: Fee 1130 +AuroraSpace: Discount 2581 +Voyager: Rebate 447 +NeptuneExpress: Fee 6186 +NovaWings: Rebate 8734 +QantasSpace: Tax 880 +Voyager: Fee 7161 +Voyager: Discount 188 +QantasSpace: Discount 2583 +NovaWings: Tax 377 +StarCruiser: Discount 575 +AuroraSpace: Fee 5143 +AuroraSpace: Rebate 7707 +CometAir: Rebate 5123 +QantasSpace: Discount 6073 +GalaxyExpress: Rebate 5403 +NebulaAir: Tax 1469 +CathayGalactic: Fee 3915 +StarCruiser: Rebate 1188 +SpaceZ: Rebate 9427 +StellarJet: Discount 7203 +StarCruiser: Rebate 1029 +CometAir: Discount 8137 +NeptuneExpress: Discount 8551 +LunaLine: Tax 9485 +MartianSpacelines: Rebate 3705 +OrionAir: Discount 4092 +LunaLine: Rebate 7629 +QantasSpace: Fee 9886 +MartianSpacelines: Rebate 8700 +AuroraSpace: Rebate 1549 +CosmoAir: Rebate 297 +CathayGalactic: Tax 2483 +AuroraSpace: Fee 2005 +MartianSpacelines: Tax 6554 +RyanSpace: Rebate 6672 +NebulaAir: Rebate 5095 +RyanSpace: Discount 3004 +OrionAir: Tax 4591 +NeptuneExpress: Discount 1739 +RyanSpace: Fee 8023 +LunaLine: Tax 5236 +MartianSpacelines: Fee 7611 +AuroraSpace: Rebate 7556 +NebulaAir: Tax 3580 +AuroraSpace: Fee 191 +MartianSpacelines: Discount 1987 +StellarJet: Tax 6363 +SpaceZ: Discount 7579 +RyanSpace: Rebate 2350 +AstroWings: Fee 3627 +StarCruiser: Discount 6877 +LunaLine: Discount 9593 +StellarJet: Rebate 1033 +CosmoAir: Discount 7881 +AstroWings: Fee 9128 +StarCruiser: Fee 6732 +CathayGalactic: Fee 522 +AstroWings: Discount 5835 +MartianSpacelines: Discount 7921 +QantasSpace: Rebate 6633 +CometAir: Discount 9065 +NovaWings: Discount 3110 +LunaLine: Rebate 3339 +OrionAir: Tax 1630 +AstroWings: Discount 2325 +StellarJet: Fee 8125 +StellarJet: Rebate 8112 +NeptuneExpress: Tax 6819 +LunaLine: Tax 1231 +NovaWings: Fee 1238 +CometAir: Rebate 7916 +LunaLine: Discount 6992 +StarCruiser: Tax 8578 +AstroWings: Rebate 9138 +QantasSpace: Fee 9129 +NeptuneExpress: Discount 724 +GalaxyExpress: Rebate 8889 +NeptuneExpress: Discount 6071 +StellarJet: Discount 5940 +StellarJet: Rebate 9104 +MartianSpacelines: Tax 6780 +NebulaAir: Discount 6194 +RyanSpace: Discount 3916 +AstroWings: Fee 2885 +GalaxyExpress: Tax 2257 +NebulaAir: Discount 2046 +StarCruiser: Discount 9033 +OrionAir: Discount 8991 +AuroraSpace: Fee 3109 +AstroWings: Discount 2610 +CelestialFlyer: Rebate 3130 +QantasSpace: Rebate 7207 +LunaLine: Tax 7617 +CathayGalactic: Fee 7266 +Voyager: Fee 8761 +StarCruiser: Tax 9175 +SolarSkies: Discount 4431 +NeptuneExpress: Discount 6136 +StarCruiser: Fee 6556 +AuroraSpace: Discount 824 +CathayGalactic: Fee 1850 +CosmoAir: Tax 7081 +NebulaAir: Discount 876 +OrionAir: Discount 3635 +AstroWings: Tax 1655 +MartianSpacelines: Rebate 5776 +AuroraSpace: Rebate 6010 +NeptuneExpress: Discount 1713 +Voyager: Tax 7637 +MartianSpacelines: Tax 2667 +NovaWings: Tax 5541 +AstroWings: Discount 7523 +SpaceZ: Discount 3483 +SolarSkies: Fee 9440 +Voyager: Discount 3625 +QantasSpace: Tax 5227 +NeptuneExpress: Fee 8663 +MartianSpacelines: Rebate 1704 +Voyager: Fee 9224 +Voyager: Fee 3386 +Voyager: Fee 4759 +NebulaAir: Rebate 3336 +MartianSpacelines: Fee 9365 +AstroWings: Discount 1892 +MartianSpacelines: Discount 6690 +NeptuneExpress: Tax 1651 +SpaceZ: Tax 6508 +AstroWings: Tax 940 +MartianSpacelines: Rebate 2782 +OrionAir: Tax 6939 +CathayGalactic: Discount 6492 +NeptuneExpress: Discount 9237 +OrionAir: Rebate 4581 +StellarJet: Discount 437 +StellarJet: Tax 1685 +NovaWings: Discount 5426 +RyanSpace: Tax 6567 +NebulaAir: Tax 6417 +GalaxyExpress: Fee 3879 +AuroraSpace: Rebate 6022 +Voyager: Tax 7454 +NeptuneExpress: Tax 5868 +NebulaAir: Rebate 6332 +CometAir: Fee 5247 +LunaLine: Discount 6639 +StarCruiser: Rebate 2799 +NebulaAir: Rebate 1088 +MartianSpacelines: Discount 4805 +CosmoAir: Rebate 6880 +OrionAir: Discount 2748 +CathayGalactic: Fee 1579 +StarCruiser: Discount 8707 +NeptuneExpress: Fee 8142 +GalaxyExpress: Tax 7546 +CometAir: Tax 3685 +CometAir: Fee 7956 +Voyager: Fee 698 +CelestialFlyer: Discount 5915 +QantasSpace: Fee 4544 +MartianSpacelines: Tax 9259 +CelestialFlyer: Discount 3310 +OrionAir: Fee 6514 +RyanSpace: Tax 1497 +NeptuneExpress: Tax 6764 +CometAir: Discount 8778 +GalaxyExpress: Tax 2128 +MartianSpacelines: Rebate 8574 +GalaxyExpress: Fee 2202 +CosmoAir: Tax 8974 +NeptuneExpress: Fee 9454 +NebulaAir: Tax 3779 +LunaLine: Discount 6627 +OrionAir: Rebate 5789 +NeptuneExpress: Tax 5517 +Voyager: Discount 1539 +CometAir: Tax 2421 +CelestialFlyer: Discount 9730 +SpaceZ: Discount 5300 +CosmoAir: Tax 9553 +NeptuneExpress: Tax 8188 +StarCruiser: Tax 5122 +GalaxyExpress: Rebate 6892 +AuroraSpace: Discount 5609 +CosmoAir: Rebate 331 +AuroraSpace: Discount 2672 +CosmoAir: Rebate 7335 +LunaLine: Fee 1796 +CelestialFlyer: Tax 8320 +NovaWings: Discount 8310 +SpaceZ: Tax 7543 +MartianSpacelines: Fee 6407 +NeptuneExpress: Rebate 8116 +LunaLine: Fee 6629 +LunaLine: Fee 8354 +RyanSpace: Rebate 9776 +NovaWings: Discount 4202 +CometAir: Fee 5504 +CosmoAir: Fee 1954 +RyanSpace: Discount 1814 +OrionAir: Rebate 850 +RyanSpace: Rebate 4840 +GalaxyExpress: Fee 1511 +StarCruiser: Discount 6519 +NeptuneExpress: Tax 5514 +RyanSpace: Fee 9712 +StellarJet: Rebate 3405 +SpaceZ: Discount 9285 +RyanSpace: Rebate 9125 +AuroraSpace: Rebate 2470 +OrionAir: Fee 751 +CometAir: Rebate 6008 +CometAir: Rebate 1325 +CosmoAir: Rebate 1225 +CosmoAir: Fee 1848 +LunaLine: Discount 2078 +NeptuneExpress: Rebate 7744 +LunaLine: Fee 4063 +NovaWings: Rebate 5885 +StarCruiser: Tax 4412 +CometAir: Discount 739 +OrionAir: Discount 8332 +NeptuneExpress: Tax 850 +QantasSpace: Fee 612 +GalaxyExpress: Discount 7782 +MartianSpacelines: Rebate 7036 +QantasSpace: Discount 3618 +LunaLine: Rebate 4587 +CathayGalactic: Rebate 3459 +NebulaAir: Discount 5969 +QantasSpace: Discount 7133 +NovaWings: Discount 4304 +Voyager: Discount 5912 +GalaxyExpress: Tax 9101 +OrionAir: Discount 5729 +NeptuneExpress: Rebate 7315 +NeptuneExpress: Fee 1001 +Voyager: Tax 4373 +RyanSpace: Rebate 975 +StellarJet: Fee 1031 +LunaLine: Rebate 1464 +CathayGalactic: Rebate 6820 +QantasSpace: Rebate 664 +LunaLine: Discount 4438 +SpaceZ: Fee 9663 +CosmoAir: Fee 5226 +LunaLine: Rebate 6038 +CathayGalactic: Tax 4709 +CosmoAir: Discount 7113 +GalaxyExpress: Discount 8243 +AstroWings: Fee 6682 +OrionAir: Discount 1419 +CometAir: Discount 967 +CometAir: Fee 665 +MartianSpacelines: Tax 8268 +SpaceZ: Fee 7172 +SolarSkies: Tax 5645 +OrionAir: Rebate 4284 +Voyager: Tax 1176 +Voyager: Fee 901 +CathayGalactic: Discount 9543 +NovaWings: Rebate 4090 +OrionAir: Tax 486 +QantasSpace: Rebate 4732 +AuroraSpace: Tax 8450 +StarCruiser: Tax 2879 +GalaxyExpress: Tax 4451 +NovaWings: Tax 4464 +SpaceZ: Discount 3108 +AuroraSpace: Discount 5159 +CathayGalactic: Fee 3901 +CathayGalactic: Tax 9377 +NebulaAir: Rebate 5204 +LunaLine: Discount 9750 +NovaWings: Fee 4183 +NebulaAir: Tax 2829 +AstroWings: Discount 4841 +CathayGalactic: Rebate 3283 +CelestialFlyer: Fee 4386 +NeptuneExpress: Fee 7738 +Voyager: Discount 5135 +GalaxyExpress: Tax 3937 +NovaWings: Discount 3142 +NovaWings: Tax 7995 +StellarJet: Fee 9355 +MartianSpacelines: Tax 4005 +LunaLine: Tax 5317 +StarCruiser: Tax 5559 +SolarSkies: Tax 8903 +SpaceZ: Rebate 3216 +AstroWings: Tax 7671 +NebulaAir: Tax 3789 +CosmoAir: Fee 9771 +NeptuneExpress: Fee 7843 +QantasSpace: Tax 2132 +CometAir: Discount 2039 +Voyager: Discount 7493 +OrionAir: Tax 4198 +Voyager: Fee 3747 +CometAir: Rebate 3696 +NovaWings: Tax 2675 +RyanSpace: Discount 7857 +StellarJet: Discount 2645 +CometAir: Tax 6923 +LunaLine: Rebate 9102 +LunaLine: Tax 4669 +Voyager: Discount 4884 +StarCruiser: Fee 7762 +OrionAir: Discount 928 +CelestialFlyer: Fee 5015 +StarCruiser: Discount 326 +OrionAir: Rebate 9919 +CelestialFlyer: Seat 490000 +RyanSpace: Rebate 5142 +LunaLine: Tax 9936 +CosmoAir: Tax 8242 +NebulaAir: Fee 4495 +RyanSpace: Discount 2168 +CometAir: Discount 9702 +NebulaAir: Rebate 5444 +Voyager: Discount 4911 +RyanSpace: Tax 5752 +MartianSpacelines: Tax 2114 +CelestialFlyer: Fee 361 +CosmoAir: Fee 3980 +AstroWings: Rebate 8288 +CelestialFlyer: Rebate 8429 +Voyager: Fee 4283 +QantasSpace: Fee 2801 +NeptuneExpress: Tax 9548 +LunaLine: Discount 6756 +LunaLine: Rebate 7549 +AuroraSpace: Fee 4889 +RyanSpace: Fee 577 +MartianSpacelines: Rebate 1783 +AuroraSpace: Seat 280000 +CathayGalactic: Tax 2153 +NeptuneExpress: Rebate 8559 +StellarJet: Fee 3043 +LunaLine: Discount 4947 +Voyager: Discount 6129 +NeptuneExpress: Luggage 9500 +StellarJet: Fee 3973 +QantasSpace: Fee 6274 +NovaWings: Fee 8788 +LunaLine: Rebate 5698 +StellarJet: Fee 2115 +CelestialFlyer: Rebate 213 +NeptuneExpress: Fee 8609 +CelestialFlyer: Rebate 4749 +QantasSpace: Rebate 8347 +NeptuneExpress: Fee 7043 +MartianSpacelines: Discount 847 +QantasSpace: Rebate 7620 +CosmoAir: Tax 1974 +NeptuneExpress: Tax 9865 +StarCruiser: Rebate 3576 +SolarSkies: Rebate 3877 +SpaceZ: Tax 2595 +QantasSpace: Fee 7259 +SpaceZ: Tax 2071 +GalaxyExpress: Rebate 2337 +RyanSpace: Discount 1099 +CometAir: Rebate 8642 +StarCruiser: Tax 6271 +CathayGalactic: Rebate 3202 +SolarSkies: Fee 183 +Voyager: Tax 242 +CometAir: Rebate 8368 +LunaLine: Rebate 574 +AuroraSpace: Rebate 8726 +AstroWings: Fee 4605 +LunaLine: Rebate 8837 +Voyager: Tax 4688 +CometAir: Rebate 1196 +NeptuneExpress: Rebate 8837 +CosmoAir: Rebate 2905 +CelestialFlyer: Fee 2532 +QantasSpace: Fee 9732 +SpaceZ: Discount 7674 +SolarSkies: Tax 8620 +MartianSpacelines: Tax 2360 +GalaxyExpress: Fee 3841 +OrionAir: Fee 1776 +GalaxyExpress: Discount 4156 +CometAir: Rebate 9875 +NovaWings: Tax 3340 +StellarJet: Rebate 5087 +AstroWings: Rebate 3074 +NebulaAir: Discount 3139 +SpaceZ: Tax 2946 +CathayGalactic: Fee 9295 +StarCruiser: Rebate 7566 +SpaceZ: Rebate 4537 +StellarJet: Fee 7306 +AuroraSpace: Tax 8776 +OrionAir: Fee 9800 +StellarJet: Tax 5489 +MartianSpacelines: Discount 9553 +SpaceZ: Rebate 9070 +NebulaAir: Discount 5093 +SpaceZ: Fee 5220 +GalaxyExpress: Discount 4436 +AuroraSpace: Fee 1526 +OrionAir: Rebate 487 +GalaxyExpress: Fee 7288 +CosmoAir: Rebate 2605 +StellarJet: Fee 2477 +CosmoAir: Tax 6657 +GalaxyExpress: Rebate 4966 +SolarSkies: Discount 7527 +OrionAir: Tax 1291 +StarCruiser: Discount 7754 +StellarJet: Tax 224 +CometAir: Discount 2961 +MartianSpacelines: Discount 2214 +CometAir: Rebate 7894 +SpaceZ: Fee 2329 +CosmoAir: Discount 4962 +LunaLine: Discount 9742 +CometAir: Tax 5592 +NovaWings: Tax 7413 +NeptuneExpress: Tax 140 +StellarJet: Discount 9888 +LunaLine: Discount 2678 +CelestialFlyer: Discount 1803 +SpaceZ: Fee 2314 +NovaWings: Fee 8622 +SolarSkies: Discount 8819 +MartianSpacelines: Discount 327 +CosmoAir: Rebate 3961 +QantasSpace: Fee 4975 +CathayGalactic: Discount 4473 +SolarSkies: Discount 5302 +LunaLine: Fee 6237 +CathayGalactic: Tax 9975 +MartianSpacelines: Meals 4500 +QantasSpace: Fee 9134 +QantasSpace: Tax 7496 +OrionAir: Tax 4219 +LunaLine: Discount 6084 +LunaLine: Discount 8283 +StarCruiser: Tax 7073 +MartianSpacelines: Fee 8267 +CelestialFlyer: Fee 7490 +SpaceZ: Tax 8184 +CometAir: Fee 7078 +StellarJet: Tax 425 +RyanSpace: Fee 9586 +AstroWings: Fee 4890 +AstroWings: Discount 1389 +NovaWings: Discount 1482 +NovaWings: Fee 4642 +RyanSpace: Fee 1416 +NovaWings: Fee 4185 +AuroraSpace: Rebate 1576 +CometAir: Rebate 330 +CosmoAir: Fee 4321 +AuroraSpace: Rebate 804 +StarCruiser: Tax 2408 +GalaxyExpress: Fee 9561 +GalaxyExpress: Fee 5158 +CelestialFlyer: Fee 5997 +AstroWings: Rebate 7231 +NeptuneExpress: Seat 390000 +SpaceZ: Tax 8664 +AstroWings: Fee 7003 +CometAir: Discount 9973 +OrionAir: Tax 6625 +CelestialFlyer: Luggage 7000 +NovaWings: Fee 7839 +NeptuneExpress: Fee 9015 +StarCruiser: Discount 7456 +OrionAir: Discount 1991 +OrionAir: Discount 8242 +AuroraSpace: Tax 3283 +MartianSpacelines: Tax 9638 +NovaWings: Rebate 564 +RyanSpace: Tax 4228 +LunaLine: Rebate 1657 +SolarSkies: Rebate 980 +StellarJet: Fee 118 +QantasSpace: Rebate 9363 +StarCruiser: Fee 7740 +RyanSpace: Tax 7771 +NovaWings: Tax 9289 +GalaxyExpress: Discount 2327 +Voyager: Discount 2857 +SpaceZ: Fee 3567 +CometAir: Fee 4796 +Voyager: Rebate 4743 +MartianSpacelines: Fee 8292 +AstroWings: Tax 1111 +MartianSpacelines: Fee 3653 +SolarSkies: Rebate 7483 +AuroraSpace: Tax 4915 +AstroWings: Rebate 5125 +StellarJet: Fee 2355 +QantasSpace: Discount 554 +NeptuneExpress: Discount 5780 +StellarJet: Fee 8341 +StellarJet: Fee 4361 +StellarJet: Fee 3363 +CathayGalactic: Discount 335 +CelestialFlyer: Rebate 1129 +CometAir: Fee 8266 +AuroraSpace: Rebate 7989 +RyanSpace: Tax 3778 +CelestialFlyer: Tax 5945 +MartianSpacelines: Discount 3777 +GalaxyExpress: Rebate 7252 +MartianSpacelines: Tax 6263 +MartianSpacelines: Rebate 6415 +StellarJet: Rebate 8875 +OrionAir: Fee 221 +QantasSpace: Tax 4382 +CelestialFlyer: Tax 5074 +NebulaAir: Tax 1151 +CometAir: Tax 158 +LunaLine: Rebate 4724 +CelestialFlyer: Discount 4866 +StarCruiser: Tax 4736 +Voyager: Rebate 8149 +StellarJet: Rebate 1159 +MartianSpacelines: Rebate 4989 +NeptuneExpress: Discount 9772 +AuroraSpace: Rebate 7615 +NovaWings: Rebate 3008 +SpaceZ: Tax 2966 +StellarJet: Rebate 7827 +RyanSpace: Rebate 3979 +SpaceZ: Discount 8311 +QantasSpace: Rebate 1631 +QantasSpace: Tax 9536 +NebulaAir: Fee 7354 +NebulaAir: Fee 4751 +SolarSkies: Discount 4669 +CathayGalactic: Discount 8327 +OrionAir: Rebate 8040 +SolarSkies: Fee 2349 +NeptuneExpress: Fee 3453 +CometAir: Tax 560 +MartianSpacelines: Fee 6349 +CosmoAir: Rebate 1999 +NebulaAir: Tax 3279 +AstroWings: Discount 8867 +CathayGalactic: Fee 2314 +StarCruiser: Fee 5330 +NebulaAir: Rebate 8639 +Voyager: Discount 2033 +CosmoAir: Tax 6222 +AstroWings: Fee 3940 +RyanSpace: Discount 3572 +StarCruiser: Fee 3633 +StarCruiser: Tax 2108 +SolarSkies: Rebate 4444 +SolarSkies: Discount 111 +CometAir: Discount 1326 +Voyager: Discount 3126 +NovaWings: Tax 5063 +AstroWings: Rebate 1702 +NebulaAir: Fee 7437 +NeptuneExpress: Fee 7166 +Voyager: Fee 3567 +SpaceZ: Tax 1395 +SolarSkies: Discount 8870 +SpaceZ: Tax 7970 +AstroWings: Tax 8128 +SolarSkies: Tax 901 +AuroraSpace: Discount 4703 +CelestialFlyer: Discount 1783 +GalaxyExpress: Discount 8214 +CometAir: Discount 7709 +NovaWings: Tax 8828 +StarCruiser: Discount 8051 +NeptuneExpress: Fee 5137 +MartianSpacelines: Luggage 9000 +StellarJet: Discount 9164 +NebulaAir: Fee 2587 +QantasSpace: Tax 765 +SpaceZ: Discount 6591 +StellarJet: Tax 8815 +StarCruiser: Fee 730 +StarCruiser: Tax 3888 +NebulaAir: Fee 7025 +NovaWings: Rebate 5633 +QantasSpace: Tax 1681 +QantasSpace: Fee 5828 +NeptuneExpress: Fee 9699 +SolarSkies: Fee 8555 +StarCruiser: Tax 457 +AstroWings: Discount 7265 +MartianSpacelines: Rebate 1811 +AuroraSpace: Tax 8698 +SolarSkies: Fee 7098 +LunaLine: Rebate 8769 +StarCruiser: Tax 4832 +AstroWings: Tax 8957 +OrionAir: Rebate 5560 +NovaWings: Tax 3308 +NeptuneExpress: Rebate 5322 +OrionAir: Discount 3866 +CometAir: Tax 7887 +RyanSpace: Tax 434 +Voyager: Tax 3091 +RyanSpace: Discount 899 +OrionAir: Rebate 3415 +RyanSpace: Fee 6812 +GalaxyExpress: Discount 8321 +SpaceZ: Tax 2101 +Voyager: Rebate 7295 +NeptuneExpress: Tax 4513 +StarCruiser: Fee 9002 +NovaWings: Tax 6462 +GalaxyExpress: Discount 9498 +QantasSpace: Rebate 3628 +LunaLine: Discount 9005 +CometAir: Rebate 6290 +CosmoAir: Seat 210000 +CathayGalactic: Tax 2595 +GalaxyExpress: Fee 7823 +OrionAir: Tax 3020 +MartianSpacelines: Tax 1522 +NeptuneExpress: Tax 9296 +NeptuneExpress: Discount 3396 +SpaceZ: Discount 3869 +AuroraSpace: Fee 794 +OrionAir: Tax 4753 +AuroraSpace: Tax 4139 +OrionAir: Fee 1386 +StellarJet: Fee 689 +StarCruiser: Discount 2007 +CathayGalactic: Discount 7537 +MartianSpacelines: Fee 5675 +NebulaAir: Rebate 7275 +SpaceZ: Tax 2797 +GalaxyExpress: Fee 700 +OrionAir: Tax 1394 +QantasSpace: Rebate 4965 +CathayGalactic: Tax 1093 +LunaLine: Rebate 679 +CosmoAir: Fee 4175 +SpaceZ: Fee 5911 +NeptuneExpress: Fee 7604 +OrionAir: Tax 8789 +GalaxyExpress: Fee 4524 +SpaceZ: Discount 1365 +StellarJet: Tax 6780 +GalaxyExpress: Fee 288 +CosmoAir: Discount 295 +StarCruiser: Rebate 4802 +SpaceZ: Rebate 8964 +SolarSkies: Discount 791 +CosmoAir: Rebate 7870 +QantasSpace: Rebate 6943 +Voyager: Rebate 612 +StellarJet: Rebate 5930 +StarCruiser: Rebate 5814 +SpaceZ: Fee 8663 +QantasSpace: Fee 7199 +NebulaAir: Tax 9689 +CosmoAir: Tax 3366 +RyanSpace: Tax 3138 +CosmoAir: Tax 6350 +RyanSpace: Rebate 4645 +Voyager: Discount 3127 +LunaLine: Fee 3540 +Voyager: Discount 5713 +LunaLine: Discount 6380 +Voyager: Discount 9064 +StarCruiser: Tax 4251 +NovaWings: Rebate 4083 +NeptuneExpress: Fee 307 +GalaxyExpress: Tax 767 +RyanSpace: Fee 9189 +QantasSpace: Rebate 2756 +NebulaAir: Discount 4848 +StarCruiser: Rebate 8660 +CathayGalactic: Rebate 2487 +SolarSkies: Tax 3770 +OrionAir: Fee 9732 +QantasSpace: Discount 5021 +CathayGalactic: Fee 9197 +MartianSpacelines: Rebate 2792 +OrionAir: Fee 8804 +NebulaAir: Fee 3662 +RyanSpace: Tax 3637 +RyanSpace: Rebate 4019 +AstroWings: Fee 331 +Voyager: Fee 7743 +StellarJet: Fee 8410 +QantasSpace: Rebate 5923 +SpaceZ: Fee 6175 +AstroWings: Rebate 3477 +NeptuneExpress: Discount 8054 +StellarJet: Discount 6486 +AuroraSpace: Tax 8618 +GalaxyExpress: Discount 9728 +RyanSpace: Fee 8283 +CosmoAir: Rebate 7200 +SolarSkies: Fee 6703 +SpaceZ: Fee 3408 +OrionAir: Discount 8243 +SolarSkies: Discount 5393 +NeptuneExpress: Rebate 3145 +CelestialFlyer: Tax 5988 +MartianSpacelines: Tax 636 +StellarJet: Seat 380000 +SolarSkies: Fee 7027 +Voyager: Fee 6317 +SpaceZ: Tax 7848 +StarCruiser: Fee 1694 +CosmoAir: Tax 6948 +CometAir: Tax 3522 +Voyager: Tax 708 +SolarSkies: Discount 6384 +StarCruiser: Tax 4605 +CathayGalactic: Tax 464 +StellarJet: Tax 8383 +SolarSkies: Rebate 6527 +CosmoAir: Fee 2192 +CelestialFlyer: Discount 5288 +LunaLine: Discount 6684 +CometAir: Rebate 4635 +CelestialFlyer: Fee 9670 +SolarSkies: Fee 8698 +SpaceZ: Rebate 8804 +SolarSkies: Rebate 7542 +AstroWings: Tax 808 +SpaceZ: Fee 6043 +NovaWings: Rebate 1135 +AuroraSpace: Tax 310 +NovaWings: Fee 2767 +MartianSpacelines: Fee 4504 +RyanSpace: Discount 4191 +CelestialFlyer: Rebate 3697 +CosmoAir: Discount 7584 +AuroraSpace: Rebate 9515 +OrionAir: Fee 4979 +RyanSpace: Fee 4851 +CosmoAir: Discount 535 +CelestialFlyer: Discount 9350 +NeptuneExpress: Rebate 9727 +NovaWings: Rebate 984 +AuroraSpace: Rebate 2609 +NebulaAir: Seat 300000 +RyanSpace: Tax 9143 +AuroraSpace: Discount 9075 +CathayGalactic: Discount 4100 +CelestialFlyer: Rebate 5337 +NebulaAir: Rebate 929 +OrionAir: Discount 2409 +StarCruiser: Tax 7820 +RyanSpace: Fee 608 +SolarSkies: Fee 247 +CosmoAir: Rebate 2338 +AuroraSpace: Discount 5573 +RyanSpace: Tax 7729 +CathayGalactic: Tax 1158 +RyanSpace: Tax 7624 +StellarJet: Discount 1287 +LunaLine: Rebate 2653 +LunaLine: Fee 4102 +GalaxyExpress: Rebate 5593 +RyanSpace: Rebate 5856 +AstroWings: Fee 4581 +AstroWings: Fee 2406 +CometAir: Rebate 5244 +NovaWings: Tax 6246 +NovaWings: Tax 4277 +Voyager: Rebate 7265 +CometAir: Rebate 8744 +CometAir: Tax 8900 +CometAir: Rebate 1944 +SolarSkies: Tax 3044 +CometAir: Discount 7263 +Voyager: Seat 400000 +SolarSkies: Rebate 8840 +RyanSpace: Tax 6527 +NeptuneExpress: Rebate 9282 +CelestialFlyer: Fee 1787 +AstroWings: Tax 1135 +OrionAir: Discount 4298 +CosmoAir: Tax 1914 +AstroWings: Fee 8220 +SpaceZ: Tax 9909 +CelestialFlyer: Rebate 1171 +AuroraSpace: Tax 6818 +CelestialFlyer: Discount 507 +NeptuneExpress: Discount 3923 +LunaLine: Discount 9288 +SpaceZ: Fee 5610 +CelestialFlyer: Tax 6291 +StellarJet: Rebate 9317 +NovaWings: Rebate 9636 +SpaceZ: Tax 5111 +NebulaAir: Tax 5523 +AuroraSpace: Tax 8656 +OrionAir: Fee 926 +LunaLine: Rebate 9195 +CosmoAir: Rebate 773 +NebulaAir: Rebate 1454 +LunaLine: Discount 2311 +GalaxyExpress: Fee 1640 +GalaxyExpress: Fee 5578 +NeptuneExpress: Discount 5372 +CosmoAir: Discount 5809 +QantasSpace: Rebate 2351 +RyanSpace: Rebate 5803 +CathayGalactic: Rebate 4069 +OrionAir: Rebate 9960 +NeptuneExpress: Rebate 2944 +StarCruiser: Fee 2287 +LunaLine: Tax 7877 +CathayGalactic: Tax 6536 +Voyager: Tax 1016 +SolarSkies: Rebate 1848 +AuroraSpace: Rebate 4273 +SpaceZ: Tax 6390 +OrionAir: Tax 9291 +Voyager: Discount 5621 +CometAir: Tax 3066 +LunaLine: Tax 9813 +SolarSkies: Fee 9617 +Voyager: Discount 426 +StellarJet: Fee 7791 +CathayGalactic: Tax 710 +GalaxyExpress: Rebate 5657 +NeptuneExpress: Discount 302 +CelestialFlyer: Tax 6928 +QantasSpace: Fee 8601 +QantasSpace: Rebate 3201 +NovaWings: Fee 9061 +CathayGalactic: Tax 9331 +StarCruiser: Rebate 8256 +StellarJet: Fee 9866 +AstroWings: Fee 895 +RyanSpace: Tax 2122 +NeptuneExpress: Fee 6468 +NovaWings: Rebate 6678 +QantasSpace: Discount 2271 +AuroraSpace: Rebate 2935 +CathayGalactic: Tax 1964 +NeptuneExpress: Discount 8283 +StellarJet: Discount 5416 +OrionAir: Tax 2034 +QantasSpace: Discount 3741 +NovaWings: Tax 1010 +SolarSkies: Fee 9663 +QantasSpace: Fee 6024 +QantasSpace: Fee 7279 +CathayGalactic: Rebate 1315 +MartianSpacelines: Fee 177 +CosmoAir: Rebate 3997 +QantasSpace: Discount 8543 +Voyager: Tax 1009 +SolarSkies: Rebate 1884 +SolarSkies: Tax 7725 +Voyager: Fee 9228 +NebulaAir: Rebate 2125 +NeptuneExpress: Rebate 3722 +LunaLine: Fee 9139 +MartianSpacelines: Rebate 5559 +Voyager: Discount 5198 +NeptuneExpress: Discount 3731 +NebulaAir: Discount 8291 +MartianSpacelines: Discount 9633 +SolarSkies: Fee 7778 +StellarJet: Discount 4929 +AuroraSpace: Tax 9239 +MartianSpacelines: Rebate 7419 +OrionAir: Tax 5985 +AuroraSpace: Tax 7888 +QantasSpace: Fee 9579 +MartianSpacelines: Fee 8117 +SpaceZ: Tax 1545 +StellarJet: Discount 5040 +AuroraSpace: Tax 9859 +CathayGalactic: Discount 9810 +SolarSkies: Fee 4496 +AstroWings: Tax 7278 +LunaLine: Discount 3524 +MartianSpacelines: Rebate 3616 +CelestialFlyer: Rebate 3163 +NeptuneExpress: Rebate 6183 +SolarSkies: Tax 8838 +Voyager: Tax 3530 +StellarJet: Tax 9650 +GalaxyExpress: Tax 1089 +SolarSkies: Discount 3502 +OrionAir: Discount 1197 +CathayGalactic: Fee 9386 +LunaLine: Rebate 3998 +Voyager: Rebate 8258 +StarCruiser: Fee 5011 +SolarSkies: Fee 2527 +StellarJet: Rebate 1466 +NeptuneExpress: Fee 1889 +CometAir: Discount 561 +SpaceZ: Fee 1256 +CelestialFlyer: Fee 4472 +CosmoAir: Fee 4979 +StellarJet: Discount 2060 +NeptuneExpress: Tax 189 +CometAir: Tax 4298 +StarCruiser: Tax 9612 +RyanSpace: Rebate 9337 +SolarSkies: Rebate 2262 +LunaLine: Fee 2337 +CometAir: Tax 1738 +StarCruiser: Fee 2402 +CometAir: Rebate 1265 +AuroraSpace: Tax 8222 +StarCruiser: Discount 2782 +SolarSkies: Tax 5170 +StellarJet: Tax 6783 +NovaWings: Discount 613 +NeptuneExpress: Rebate 9805 +SolarSkies: Rebate 420 +Voyager: Rebate 8920 +NeptuneExpress: Discount 2792 +NebulaAir: Tax 8982 +CometAir: Tax 8419 +CelestialFlyer: Fee 1370 +NovaWings: Rebate 3349 +GalaxyExpress: Discount 2593 +LunaLine: Rebate 6076 +NovaWings: Fee 2774 +AstroWings: Discount 4739 +NovaWings: Fee 8522 +SpaceZ: Discount 5403 +CathayGalactic: Tax 7115 +GalaxyExpress: Discount 4439 +SpaceZ: Rebate 904 +AstroWings: Rebate 1237 +CometAir: Rebate 100 +CometAir: Rebate 3952 +CosmoAir: Tax 3658 +Voyager: Fee 1918 +NovaWings: Rebate 830 +CelestialFlyer: Tax 4913 +LunaLine: Seat 360000 +SpaceZ: Rebate 5691 +CathayGalactic: Rebate 2257 +AstroWings: Tax 3644 +Voyager: Rebate 2688 +CometAir: Tax 1639 +StarCruiser: Rebate 3705 +CometAir: Rebate 3590 +Voyager: Discount 9450 +SolarSkies: Discount 9637 +RyanSpace: Fee 3370 +SolarSkies: Rebate 6827 +OrionAir: Meals 4600 +SolarSkies: Tax 813 +CometAir: Fee 6654 +QantasSpace: Fee 6097 +CathayGalactic: Discount 4200 +NebulaAir: Discount 620 +SolarSkies: Tax 7919 +StarCruiser: Discount 6834 +AuroraSpace: Fee 1325 +MartianSpacelines: Rebate 8371 +CosmoAir: Rebate 7744 +StellarJet: Rebate 441 +RyanSpace: Discount 7277 +StellarJet: Discount 3908 +StellarJet: Tax 407 +LunaLine: Fee 8969 +SpaceZ: Rebate 4329 +AuroraSpace: Rebate 5091 +StellarJet: Tax 9278 +Voyager: Rebate 100 +LunaLine: Tax 8853 +MartianSpacelines: Fee 8562 +AstroWings: Tax 9706 +CathayGalactic: Discount 1007 +CometAir: Discount 8236 +AuroraSpace: Rebate 3013 +SolarSkies: Rebate 5220 +LunaLine: Tax 2634 +CosmoAir: Fee 9677 +MartianSpacelines: Discount 1277 +Voyager: Discount 4707 +StellarJet: Rebate 3108 +SolarSkies: Fee 374 +CometAir: Discount 4232 +StellarJet: Fee 4428 +SpaceZ: Discount 1638 +OrionAir: Rebate 1726 +CometAir: Discount 1851 +GalaxyExpress: Discount 2036 +AstroWings: Rebate 877 +SpaceZ: Fee 347 +SpaceZ: Discount 5975 +SolarSkies: Rebate 7254 +LunaLine: Fee 6121 +AstroWings: Rebate 9777 +StellarJet: Tax 7886 +StellarJet: Discount 6633 +MartianSpacelines: Tax 9750 +CosmoAir: Tax 9796 +SpaceZ: Fee 6522 +NeptuneExpress: Discount 8275 +CosmoAir: Rebate 4012 +AuroraSpace: Tax 4923 +MartianSpacelines: Discount 3196 +NebulaAir: Rebate 118 +CathayGalactic: Rebate 9749 +Voyager: Discount 3635 +AstroWings: Tax 1390 +Voyager: Rebate 6620 +NebulaAir: Fee 6770 +CosmoAir: Discount 5007 +NeptuneExpress: Rebate 8281 +RyanSpace: Rebate 808 +NeptuneExpress: Tax 307 +CelestialFlyer: Tax 3694 +SolarSkies: Discount 9194 +MartianSpacelines: Rebate 335 +OrionAir: Rebate 5249 +CathayGalactic: Tax 8357 +StellarJet: Discount 537 +CelestialFlyer: Tax 8969 +OrionAir: Fee 374 +MartianSpacelines: Fee 6354 +AuroraSpace: Rebate 6955 +SolarSkies: Discount 6009 +CathayGalactic: Seat 480000 +SolarSkies: Fee 9977 +NebulaAir: Fee 2345 +CathayGalactic: Discount 9538 +CathayGalactic: Discount 1230 +StellarJet: Tax 1779 +CosmoAir: Fee 9050 +LunaLine: Tax 3734 +GalaxyExpress: Fee 217 +CathayGalactic: Tax 3306 +CelestialFlyer: Tax 2944 +SolarSkies: Tax 5107 +NeptuneExpress: Tax 248 +OrionAir: Tax 8983 +Voyager: Meals 3300 +NovaWings: Discount 5976 +CathayGalactic: Rebate 9513 +CathayGalactic: Fee 7506 +LunaLine: Fee 817 +NebulaAir: Rebate 2978 +MartianSpacelines: Tax 8703 +StarCruiser: Fee 751 +AuroraSpace: Tax 9627 +LunaLine: Rebate 5848 +CometAir: Tax 9266 +SolarSkies: Tax 7247 +MartianSpacelines: Fee 5175 +StellarJet: Rebate 6852 +CosmoAir: Tax 1361 +Voyager: Tax 4778 +NebulaAir: Tax 9842 +StarCruiser: Discount 7311 +StarCruiser: Discount 1380 +CelestialFlyer: Rebate 4296 +RyanSpace: Fee 3647 +StellarJet: Discount 5751 +NebulaAir: Rebate 136 +QantasSpace: Rebate 6105 +NebulaAir: Discount 5049 +CelestialFlyer: Discount 8024 +AuroraSpace: Fee 2611 +StellarJet: Rebate 8622 +MartianSpacelines: Rebate 7101 +AstroWings: Rebate 5630 +NeptuneExpress: Tax 1827 +NeptuneExpress: Tax 2223 +GalaxyExpress: Rebate 7392 +NebulaAir: Tax 2009 +SpaceZ: Discount 5354 +GalaxyExpress: Tax 3459 +RyanSpace: Discount 5757 +NebulaAir: Rebate 6149 +AstroWings: Rebate 3842 +AuroraSpace: Discount 9482 +LunaLine: Discount 6374 +NebulaAir: Tax 6408 +CosmoAir: Rebate 8709 +CathayGalactic: Fee 7596 +MartianSpacelines: Tax 5943 +QantasSpace: Rebate 9496 +SpaceZ: Discount 5432 +GalaxyExpress: Fee 8549 +NebulaAir: Fee 2466 +OrionAir: Tax 7873 +CosmoAir: Fee 5234 +AstroWings: Rebate 7027 +CathayGalactic: Discount 3197 +CelestialFlyer: Tax 4583 +AuroraSpace: Rebate 9724 +StellarJet: Fee 771 +AstroWings: Rebate 3100 +SpaceZ: Fee 2152 +SpaceZ: Rebate 804 +QantasSpace: Fee 4253 +NeptuneExpress: Rebate 197 +MartianSpacelines: Tax 299 +NebulaAir: Discount 2647 +NebulaAir: Fee 7025 +RyanSpace: Tax 6589 +GalaxyExpress: Discount 9381 +NeptuneExpress: Discount 8354 +AstroWings: Tax 3033 +CathayGalactic: Tax 2367 +LunaLine: Discount 5894 +CathayGalactic: Fee 9171 +NebulaAir: Rebate 3167 +AstroWings: Fee 8899 +LunaLine: Discount 7138 +AstroWings: Tax 1704 +Voyager: Rebate 648 +LunaLine: Fee 3753 +CometAir: Tax 6573 +NebulaAir: Fee 3032 +StarCruiser: Tax 8352 +StellarJet: Tax 232 +MartianSpacelines: Fee 5517 +LunaLine: Tax 6583 +CathayGalactic: Rebate 4631 +Voyager: Rebate 2776 +NovaWings: Fee 9142 +MartianSpacelines: Discount 8986 +AstroWings: Discount 1349 +CathayGalactic: Tax 6692 +SpaceZ: Rebate 3543 +CelestialFlyer: Discount 4762 +StarCruiser: Rebate 7064 +NovaWings: Discount 1698 +CelestialFlyer: Rebate 1032 +MartianSpacelines: Rebate 305 +GalaxyExpress: Fee 2569 +AstroWings: Rebate 8802 +AstroWings: Discount 9084 +CosmoAir: Fee 5749 +MartianSpacelines: Rebate 6253 +MartianSpacelines: Rebate 1567 +AstroWings: Discount 6381 +NebulaAir: Discount 9707 +SolarSkies: Tax 503 +NovaWings: Fee 1162 +QantasSpace: Discount 7553 +StarCruiser: Tax 3433 +SolarSkies: Seat 370000 +AuroraSpace: Discount 2932 +CometAir: Tax 5838 +QantasSpace: Tax 4879 +OrionAir: Fee 7776 +RyanSpace: Fee 6373 +LunaLine: Tax 5530 +AstroWings: Fee 2825 +LunaLine: Rebate 6279 +NebulaAir: Fee 5753 +CathayGalactic: Fee 9115 +CelestialFlyer: Discount 4260 +CosmoAir: Rebate 3974 +CometAir: Tax 8768 +SolarSkies: Discount 3249 +SpaceZ: Discount 4359 +GalaxyExpress: Fee 8214 +AstroWings: Tax 9552 +NovaWings: Rebate 5354 +AuroraSpace: Fee 882 +StarCruiser: Discount 7577 +NebulaAir: Tax 2597 +StarCruiser: Discount 6736 +NebulaAir: Fee 8199 +SolarSkies: Rebate 6279 +RyanSpace: Discount 6726 +QantasSpace: Discount 6964 +StarCruiser: Tax 465 +NovaWings: Fee 1833 +QantasSpace: Rebate 8124 +NebulaAir: Rebate 5606 +StellarJet: Meals 2100 +StarCruiser: Discount 7836 +GalaxyExpress: Tax 5626 +Voyager: Rebate 4937 +GalaxyExpress: Rebate 4122 +NeptuneExpress: Fee 9214 +StellarJet: Discount 7248 +RyanSpace: Tax 9639 +StellarJet: Discount 6956 +MartianSpacelines: Fee 6578 +AuroraSpace: Fee 1383 +CathayGalactic: Discount 3393 +NovaWings: Fee 9480 +Voyager: Tax 3615 +CometAir: Fee 8732 +StellarJet: Fee 2042 +AuroraSpace: Tax 8787 +CelestialFlyer: Fee 6264 +QantasSpace: Discount 4654 +NebulaAir: Tax 8797 +QantasSpace: Rebate 4276 +RyanSpace: Tax 1727 +RyanSpace: Fee 5883 +RyanSpace: Fee 8099 +StellarJet: Tax 6683 +StellarJet: Tax 9823 +CometAir: Tax 1215 +NebulaAir: Rebate 623 +LunaLine: Discount 8657 +Voyager: Rebate 3534 +AstroWings: Fee 8265 +QantasSpace: Discount 2763 +Voyager: Tax 394 +OrionAir: Rebate 5761 +QantasSpace: Tax 3569 +Voyager: Rebate 7987 +StellarJet: Rebate 2708 +RyanSpace: Fee 5165 +CelestialFlyer: Tax 7693 +CathayGalactic: Fee 6488 +StellarJet: Rebate 4032 +MartianSpacelines: Fee 7877 +StarCruiser: Rebate 5309 +CometAir: Tax 2747 +LunaLine: Tax 5448 +OrionAir: Fee 1220 +CosmoAir: Tax 6954 +SolarSkies: Discount 3575 +SpaceZ: Rebate 5725 +SolarSkies: Discount 3979 +NovaWings: Rebate 9039 +StarCruiser: Rebate 1186 +NebulaAir: Rebate 9684 +AstroWings: Discount 7740 +SpaceZ: Discount 4745 +CelestialFlyer: Rebate 2754 +CathayGalactic: Fee 7675 +NovaWings: Tax 6281 +StarCruiser: Fee 7997 +StellarJet: Fee 8493 +SolarSkies: Discount 2356 +StellarJet: Discount 8050 +Voyager: Rebate 1423 +OrionAir: Tax 5656 +RyanSpace: Fee 5027 +NeptuneExpress: Rebate 802 +MartianSpacelines: Fee 6342 +StarCruiser: Discount 5133 +Voyager: Fee 1949 +StellarJet: Rebate 3284 +StarCruiser: Rebate 546 +NovaWings: Tax 4585 +LunaLine: Fee 4045 +CathayGalactic: Rebate 8076 +OrionAir: Tax 5903 +NovaWings: Fee 1706 +NebulaAir: Tax 4636 +GalaxyExpress: Tax 5258 +AuroraSpace: Tax 8358 +StellarJet: Discount 1715 +CathayGalactic: Rebate 3641 +Voyager: Discount 2347 +AstroWings: Tax 3946 +AuroraSpace: Tax 3135 +NeptuneExpress: Rebate 5459 +SpaceZ: Discount 5438 +NovaWings: Rebate 4866 +CometAir: Discount 1204 +LunaLine: Discount 4157 +CometAir: Rebate 4384 +SolarSkies: Discount 8233 +NeptuneExpress: Rebate 3162 +GalaxyExpress: Rebate 8639 +CathayGalactic: Rebate 1294 +LunaLine: Discount 9079 +CosmoAir: Fee 2533 +RyanSpace: Discount 4345 +SpaceZ: Rebate 7036 +CathayGalactic: Discount 3218 +CometAir: Tax 631 +SolarSkies: Fee 8115 +StellarJet: Tax 4290 +AuroraSpace: Discount 3676 +RyanSpace: Discount 4149 +NebulaAir: Tax 7188 +QantasSpace: Tax 4036 +SolarSkies: Rebate 2968 +CosmoAir: Rebate 2816 +NebulaAir: Discount 2237 +CelestialFlyer: Discount 9207 +CelestialFlyer: Tax 5953 +CosmoAir: Rebate 516 +CometAir: Fee 7793 +OrionAir: Rebate 8776 +NebulaAir: Discount 4235 +CelestialFlyer: Tax 656 +Voyager: Discount 593 +CosmoAir: Rebate 8597 +MartianSpacelines: Fee 437 +NeptuneExpress: Fee 5161 +MartianSpacelines: Discount 5243 +SolarSkies: Rebate 7619 +AuroraSpace: Rebate 5921 +RyanSpace: Rebate 1938 +AuroraSpace: Rebate 4026 +SpaceZ: Tax 8997 +NebulaAir: Discount 9105 +OrionAir: Fee 3399 +Voyager: Fee 695 +GalaxyExpress: Fee 6105 +CelestialFlyer: Fee 7038 +StellarJet: Tax 2730 +Voyager: Luggage 5250 +QantasSpace: Tax 3421 +AstroWings: Fee 8351 +MartianSpacelines: Rebate 9799 +RyanSpace: Fee 5047 +OrionAir: Fee 4267 +CosmoAir: Tax 6315 +AuroraSpace: Tax 7340 +NebulaAir: Fee 4926 +AstroWings: Discount 7100 +NebulaAir: Tax 2384 +QantasSpace: Tax 8581 +StellarJet: Tax 2921 +NovaWings: Fee 875 +SpaceZ: Fee 6542 +RyanSpace: Tax 6685 +MartianSpacelines: Tax 3028 +SolarSkies: Fee 6792 +CometAir: Tax 7827 +NovaWings: Tax 5773 +StarCruiser: Discount 8980 +CosmoAir: Tax 4884 +NovaWings: Tax 8489 +CometAir: Seat 250000 +AuroraSpace: Fee 7199 +CometAir: Rebate 3424 +SpaceZ: Discount 7752 +GalaxyExpress: Discount 6149 +NeptuneExpress: Rebate 5822 +CathayGalactic: Rebate 9597 +SpaceZ: Discount 2470 +NovaWings: Discount 3873 +CathayGalactic: Tax 890 +NovaWings: Tax 8726 +NovaWings: Fee 9407 +StellarJet: Fee 6046 +SpaceZ: Tax 1462 +StellarJet: Tax 9474 +MartianSpacelines: Tax 7026 +CometAir: Tax 2349 +StarCruiser: Tax 6992 +MartianSpacelines: Discount 9344 +StellarJet: Discount 9073 +GalaxyExpress: Tax 694 +OrionAir: Discount 7721 +SpaceZ: Rebate 3003 +NebulaAir: Fee 5059 +CelestialFlyer: Fee 1122 +CathayGalactic: Fee 6757 +RyanSpace: Rebate 6164 +NovaWings: Discount 2194 +StarCruiser: Discount 7904 +AuroraSpace: Rebate 6591 +OrionAir: Rebate 6640 +CathayGalactic: Fee 164 +QantasSpace: Fee 6301 +NeptuneExpress: Rebate 238 +NebulaAir: Rebate 5490 +CathayGalactic: Fee 3525 +SolarSkies: Rebate 681 +NeptuneExpress: Tax 7016 +CosmoAir: Discount 1087 +QantasSpace: Rebate 6253 +CometAir: Discount 827 +CosmoAir: Discount 6119 +NovaWings: Seat 280000 +Voyager: Rebate 348 +GalaxyExpress: Discount 6276 +OrionAir: Rebate 4681 +SolarSkies: Rebate 4778 +CathayGalactic: Rebate 3580 +AstroWings: Rebate 9263 +NovaWings: Rebate 2645 +StarCruiser: Rebate 4716 +NebulaAir: Rebate 3498 +StellarJet: Rebate 2911 +GalaxyExpress: Rebate 1740 +QantasSpace: Rebate 8901 +RyanSpace: Tax 5282 +SolarSkies: Tax 3246 +StellarJet: Tax 4478 +NebulaAir: Tax 8580 +NeptuneExpress: Tax 1647 +CosmoAir: Discount 5540 +SpaceZ: Tax 8291 +CosmoAir: Discount 4026 +CelestialFlyer: Tax 5700 +Voyager: Tax 9822 +AuroraSpace: Discount 9643 +SpaceZ: Tax 850 +StarCruiser: Discount 8108 +QantasSpace: Fee 8764 +NeptuneExpress: Fee 8172 +CelestialFlyer: Fee 5732 +QantasSpace: Tax 303 +LunaLine: Tax 2922 +AstroWings: Fee 2360 +RyanSpace: Tax 9661 +RyanSpace: Tax 2767 +MartianSpacelines: Tax 3449 +StellarJet: Fee 4000 +AuroraSpace: Rebate 4397 +NeptuneExpress: Tax 5156 +NovaWings: Rebate 2051 +NovaWings: Fee 6629 +StarCruiser: Fee 3300 +GalaxyExpress: Fee 8405 +CathayGalactic: Rebate 8729 +GalaxyExpress: Discount 7651 +NovaWings: Fee 7674 +NovaWings: Discount 1947 +CometAir: Rebate 5507 +StarCruiser: Fee 5308 +StellarJet: Tax 4000 +CosmoAir: Tax 7325 +NovaWings: Tax 1418 +CathayGalactic: Rebate 8138 +OrionAir: Tax 4839 +StarCruiser: Discount 6943 +MartianSpacelines: Discount 7744 +LunaLine: Fee 5671 +LunaLine: Tax 7052 +RyanSpace: Discount 2685 +RyanSpace: Tax 9013 +GalaxyExpress: Discount 1753 +MartianSpacelines: Fee 9447 +MartianSpacelines: Rebate 2872 +LunaLine: Rebate 2079 +RyanSpace: Tax 2311 +AuroraSpace: Tax 5513 +SolarSkies: Discount 421 +NebulaAir: Tax 8301 +Voyager: Tax 6024 +CathayGalactic: Rebate 8058 +NovaWings: Rebate 8700 +NovaWings: Rebate 1234 +NeptuneExpress: Fee 9000 +CathayGalactic: Tax 1353 +NovaWings: Discount 2545 +AuroraSpace: Discount 9407 +StarCruiser: Tax 8204 +RyanSpace: Tax 8354 +QantasSpace: Fee 8070 +Voyager: Tax 8799 +LunaLine: Rebate 1966 +Voyager: Rebate 6045 +CosmoAir: Fee 4938 +CelestialFlyer: Rebate 9195 +OrionAir: Fee 9450 +StarCruiser: Rebate 3951 +Voyager: Fee 5483 +SpaceZ: Rebate 3163 +GalaxyExpress: Tax 4632 +CelestialFlyer: Tax 3928 +CometAir: Fee 9783 +GalaxyExpress: Discount 8839 +SolarSkies: Discount 4813 +NebulaAir: Rebate 638 +NovaWings: Discount 7977 +StellarJet: Fee 2752 +CosmoAir: Rebate 4341 +SpaceZ: Discount 6295 +AuroraSpace: Rebate 372 +StellarJet: Fee 2441 +CathayGalactic: Discount 6524 +StellarJet: Rebate 280 +SolarSkies: Rebate 9246 +StellarJet: Rebate 4649 +GalaxyExpress: Fee 101 +AuroraSpace: Rebate 742 +CelestialFlyer: Discount 6408 +CosmoAir: Tax 9020 +LunaLine: Rebate 7580 +SolarSkies: Rebate 2417 +CosmoAir: Tax 1372 +CathayGalactic: Discount 6354 +SolarSkies: Discount 5022 +NebulaAir: Discount 9390 +SolarSkies: Rebate 4827 +MartianSpacelines: Fee 7481 +Voyager: Fee 6562 +AuroraSpace: Discount 8229 +LunaLine: Rebate 572 +MartianSpacelines: Discount 3545 +CometAir: Fee 501 +OrionAir: Rebate 342 +CelestialFlyer: Rebate 5037 +AuroraSpace: Fee 8663 +Voyager: Discount 1576 +CosmoAir: Discount 9311 +Voyager: Fee 675 +StellarJet: Fee 5358 +StarCruiser: Discount 1792 +GalaxyExpress: Discount 6751 +MartianSpacelines: Rebate 9424 +StarCruiser: Tax 6920 +NovaWings: Tax 6951 +SpaceZ: Fee 388 +AuroraSpace: Fee 8543 +Voyager: Discount 6243 +SpaceZ: Tax 5562 +CathayGalactic: Discount 1111 +StarCruiser: Tax 2181 +OrionAir: Rebate 7511 +MartianSpacelines: Discount 8212 +CelestialFlyer: Discount 1437 +SpaceZ: Discount 8176 +CathayGalactic: Discount 470 +AstroWings: Fee 5933 +NeptuneExpress: Fee 8746 +LunaLine: Discount 9651 +NovaWings: Fee 9466 +StarCruiser: Seat 270000 +NovaWings: Tax 3696 +LunaLine: Discount 2887 +OrionAir: Rebate 3027 +AuroraSpace: Discount 3294 +MartianSpacelines: Discount 3402 +NovaWings: Tax 5067 +CometAir: Rebate 9278 +NovaWings: Discount 5067 +LunaLine: Discount 4309 +AstroWings: Discount 5904 +NeptuneExpress: Tax 804 +CosmoAir: Tax 2476 +AuroraSpace: Rebate 2572 +AstroWings: Rebate 9916 +SolarSkies: Fee 7689 +Voyager: Discount 5606 +MartianSpacelines: Fee 8593 +AuroraSpace: Fee 3040 +OrionAir: Discount 4350 +CosmoAir: Fee 3120 +NovaWings: Fee 2261 +QantasSpace: Discount 6308 +CelestialFlyer: Rebate 8905 +SpaceZ: Fee 1469 +OrionAir: Discount 9302 +AuroraSpace: Rebate 1042 +AstroWings: Tax 4900 +Voyager: Fee 1188 +CosmoAir: Fee 3814 +Voyager: Tax 9074 +SpaceZ: Fee 8755 +NebulaAir: Tax 2020 +NebulaAir: Discount 8633 +GalaxyExpress: Rebate 5121 +NebulaAir: Tax 9324 +GalaxyExpress: Tax 3327 +NovaWings: Fee 5091 +SpaceZ: Tax 1759 +MartianSpacelines: Fee 7045 +OrionAir: Discount 2381 +SolarSkies: Tax 5859 +QantasSpace: Fee 1188 +SpaceZ: Fee 4650 +CathayGalactic: Rebate 2455 +SpaceZ: Fee 9194 +NovaWings: Rebate 7928 +CosmoAir: Discount 4457 +LunaLine: Fee 6365 +Voyager: Tax 1957 +AstroWings: Fee 9288 +RyanSpace: Fee 3002 +OrionAir: Rebate 3368 +SolarSkies: Rebate 7528 +CathayGalactic: Discount 9652 +NovaWings: Rebate 7881 +StellarJet: Rebate 2714 +SolarSkies: Rebate 6304 +GalaxyExpress: Discount 7497 +GalaxyExpress: Discount 7388 +CathayGalactic: Tax 9121 +MartianSpacelines: Discount 8857 +MartianSpacelines: Tax 3779 +CometAir: Discount 2845 +CosmoAir: Tax 1252 +MartianSpacelines: Fee 9663 +GalaxyExpress: Fee 3095 +NeptuneExpress: Fee 2190 +AuroraSpace: Fee 538 +CometAir: Discount 7524 +StarCruiser: Fee 7591 +AstroWings: Rebate 5606 +CosmoAir: Discount 3158 +CathayGalactic: Tax 984 +CathayGalactic: Rebate 8209 +CelestialFlyer: Rebate 2770 +CathayGalactic: Discount 2934 +NebulaAir: Tax 1141 +CelestialFlyer: Discount 7685 +Voyager: Tax 6436 +AuroraSpace: Fee 1446 +NeptuneExpress: Fee 2917 +LunaLine: Rebate 7885 +CelestialFlyer: Discount 3157 +CometAir: Fee 7983 +CelestialFlyer: Fee 8007 +LunaLine: Fee 138 +GalaxyExpress: Tax 7304 +RyanSpace: Rebate 3851 +NeptuneExpress: Rebate 6082 +CometAir: Fee 9259 +OrionAir: Fee 7375 +OrionAir: Rebate 686 +Voyager: Fee 7824 +LunaLine: Discount 9898 +NebulaAir: Rebate 3460 +LunaLine: Rebate 5326 +Voyager: Tax 2037 +StarCruiser: Tax 5648 +GalaxyExpress: Fee 7040 +MartianSpacelines: Rebate 1350 +CathayGalactic: Discount 3799 +CathayGalactic: Tax 3818 +QantasSpace: Rebate 5668 +OrionAir: Rebate 697 +CelestialFlyer: Rebate 6301 +AuroraSpace: Rebate 8053 +GalaxyExpress: Discount 2164 +RyanSpace: Fee 4152 +LunaLine: Discount 5596 +OrionAir: Discount 4905 +CosmoAir: Tax 1418 +NebulaAir: Fee 5619 +CelestialFlyer: Tax 4563 +NeptuneExpress: Rebate 3293 +MartianSpacelines: Rebate 5758 +OrionAir: Discount 3480 +NeptuneExpress: Fee 8787 +LunaLine: Rebate 1915 +NebulaAir: Discount 9997 +OrionAir: Rebate 6665 +RyanSpace: Tax 1731 +CometAir: Fee 7454 +NeptuneExpress: Tax 4854 +StellarJet: Fee 6058 +AuroraSpace: Rebate 4426 +AuroraSpace: Discount 6220 +CathayGalactic: Rebate 6050 +StarCruiser: Rebate 4580 +QantasSpace: Tax 3219 +SolarSkies: Rebate 8878 +StellarJet: Tax 8661 +QantasSpace: Tax 1977 +CosmoAir: Rebate 7903 +AstroWings: Rebate 7992 +CathayGalactic: Rebate 9194 +StellarJet: Fee 3121 +StellarJet: Discount 4447 +SpaceZ: Rebate 1429 +AstroWings: Fee 6243 +MartianSpacelines: Discount 978 +MartianSpacelines: Discount 5662 +CathayGalactic: Fee 5494 +CometAir: Fee 7402 +RyanSpace: Tax 2278 +SpaceZ: Discount 2660 +CosmoAir: Discount 6671 +NebulaAir: Tax 7194 +GalaxyExpress: Discount 7323 +CathayGalactic: Rebate 7395 +NeptuneExpress: Fee 655 +NovaWings: Tax 9755 +StarCruiser: Discount 9533 +SpaceZ: Discount 1675 +CathayGalactic: Discount 1917 +AuroraSpace: Tax 2054 +LunaLine: Fee 5492 +NovaWings: Rebate 6933 +SolarSkies: Tax 6794 +SolarSkies: Rebate 2907 +StellarJet: Rebate 6717 +CathayGalactic: Rebate 5596 +CelestialFlyer: Tax 5840 +StarCruiser: Fee 995 +NovaWings: Rebate 344 +CosmoAir: Discount 6247 +AstroWings: Tax 3450 +SolarSkies: Fee 2081 +QantasSpace: Discount 6653 +SolarSkies: Tax 7650 +MartianSpacelines: Tax 7882 +CathayGalactic: Tax 6989 +NebulaAir: Rebate 9280 +Voyager: Tax 1277 +CelestialFlyer: Fee 5812 +NeptuneExpress: Fee 4660 +CelestialFlyer: Rebate 7563 +NebulaAir: Fee 4547 +CathayGalactic: Fee 2999 +NeptuneExpress: Tax 110 +QantasSpace: Discount 8952 +SpaceZ: Discount 6160 +Voyager: Tax 8049 +StarCruiser: Discount 1556 +NeptuneExpress: Fee 7863 +NebulaAir: Tax 4052 +CathayGalactic: Tax 1013 +GalaxyExpress: Tax 3427 +SpaceZ: Fee 3561 +StarCruiser: Fee 5470 +OrionAir: Rebate 3455 +CosmoAir: Discount 7599 +QantasSpace: Rebate 8510 +SolarSkies: Rebate 5822 +AuroraSpace: Rebate 4681 +SpaceZ: Rebate 6826 +NeptuneExpress: Rebate 6699 +NeptuneExpress: Discount 5244 +RyanSpace: Rebate 9947 +Voyager: Rebate 2176 +AuroraSpace: Tax 7784 +CathayGalactic: Discount 5124 +CathayGalactic: Rebate 5175 +StellarJet: Tax 6756 +StellarJet: Tax 5229 +RyanSpace: Fee 6727 +SolarSkies: Tax 707 +OrionAir: Discount 2812 +AuroraSpace: Rebate 9735 +RyanSpace: Discount 2912 +StarCruiser: Tax 1434 +MartianSpacelines: Fee 8199 +SpaceZ: Discount 6402 +CosmoAir: Fee 7002 +MartianSpacelines: Tax 4128 +OrionAir: Tax 8033 +CosmoAir: Discount 3078 +LunaLine: Rebate 5152 +CometAir: Fee 5689 +StellarJet: Rebate 9602 +CathayGalactic: Rebate 7099 +CosmoAir: Fee 5363 +AuroraSpace: Discount 4333 +CosmoAir: Fee 6297 +NebulaAir: Rebate 8806 +AstroWings: Rebate 5820 +NebulaAir: Fee 6876 +CosmoAir: Tax 1408 +NebulaAir: Rebate 760 +NeptuneExpress: Discount 6985 +NovaWings: Discount 5164 +MartianSpacelines: Fee 2289 +CometAir: Fee 4887 +LunaLine: Discount 1148 +CometAir: Fee 2051 +Voyager: Tax 6529 +CometAir: Tax 4285 +StellarJet: Rebate 7864 +NovaWings: Rebate 3099 +CosmoAir: Rebate 3365 +LunaLine: Rebate 6232 +MartianSpacelines: Rebate 1023 +OrionAir: Discount 604 +NebulaAir: Rebate 1188 +StarCruiser: Fee 1936 +SolarSkies: Discount 1820 +RyanSpace: Discount 2129 +NebulaAir: Rebate 4967 +NovaWings: Rebate 4116 +Voyager: Tax 7496 +AstroWings: Rebate 2541 +CosmoAir: Fee 1908 +QantasSpace: Fee 7467 +CometAir: Rebate 7099 +CelestialFlyer: Discount 4938 +CathayGalactic: Rebate 2590 +RyanSpace: Fee 422 +CelestialFlyer: Fee 9244 +RyanSpace: Tax 8574 +NovaWings: Discount 5619 +GalaxyExpress: Rebate 5714 +QantasSpace: Discount 4690 +MartianSpacelines: Discount 6915 +Voyager: Rebate 318 +NeptuneExpress: Rebate 1967 +OrionAir: Fee 7434 +NovaWings: Fee 990 +LunaLine: Fee 7026 +AuroraSpace: Tax 6912 +NebulaAir: Discount 3840 +StarCruiser: Rebate 8346 +OrionAir: Discount 6842 +CelestialFlyer: Rebate 5721 +LunaLine: Fee 9046 +RyanSpace: Rebate 7485 +AuroraSpace: Tax 5704 +RyanSpace: Fee 3091 +CometAir: Tax 9313 +StarCruiser: Fee 2401 +SpaceZ: Rebate 5866 +StarCruiser: Fee 4535 +NeptuneExpress: Discount 7510 +CometAir: Tax 8366 +LunaLine: Discount 6601 +StellarJet: Rebate 2910 +LunaLine: Rebate 1674 +NovaWings: Fee 8483 +AstroWings: Tax 7784 +AuroraSpace: Discount 8363 +Voyager: Discount 7039 +Voyager: Discount 2376 +NovaWings: Discount 920 +SolarSkies: Fee 5825 +CosmoAir: Fee 7268 +MartianSpacelines: Rebate 5786 +OrionAir: Rebate 1360 +LunaLine: Rebate 4487 +QantasSpace: Tax 524 +NeptuneExpress: Fee 5866 +NovaWings: Fee 5732 +SpaceZ: Discount 6187 +SpaceZ: Discount 7169 +GalaxyExpress: Tax 1490 +RyanSpace: Discount 9291 +CosmoAir: Fee 2039 +NebulaAir: Tax 456 +StellarJet: Tax 5279 +CometAir: Discount 1109 +OrionAir: Tax 5750 +CathayGalactic: Tax 5891 +OrionAir: Fee 2535 +GalaxyExpress: Rebate 2146 +GalaxyExpress: Rebate 4573 +SolarSkies: Discount 8926 +LunaLine: Tax 8703 +NebulaAir: Tax 3504 +NeptuneExpress: Discount 5921 +NebulaAir: Rebate 7027 +SolarSkies: Fee 8008 +SpaceZ: Tax 2330 +CometAir: Discount 387 +OrionAir: Fee 7157 +CathayGalactic: Tax 3586 +NeptuneExpress: Tax 1239 +NeptuneExpress: Rebate 1119 +StellarJet: Tax 4471 +RyanSpace: Tax 2385 +SpaceZ: Tax 5337 +CelestialFlyer: Tax 363 +StarCruiser: Discount 9999 +MartianSpacelines: Rebate 5270 +CathayGalactic: Tax 2459 +OrionAir: Tax 9297 +CometAir: Discount 3993 +SolarSkies: Fee 4126 +StarCruiser: Discount 6505 +AuroraSpace: Tax 4765 +RyanSpace: Discount 4773 +LunaLine: Fee 5374 +CelestialFlyer: Tax 5224 +StellarJet: Rebate 463 +StarCruiser: Discount 6418 +CometAir: Discount 3926 +StellarJet: Tax 6733 +NebulaAir: Discount 7054 +CometAir: Tax 2662 +NovaWings: Tax 2024 +MartianSpacelines: Discount 9897 +CathayGalactic: Discount 2550 +RyanSpace: Discount 6860 +CathayGalactic: Rebate 6905 +CosmoAir: Tax 5920 +CometAir: Fee 1471 +NeptuneExpress: Tax 1733 +CathayGalactic: Fee 1587 +MartianSpacelines: Discount 2511 +QantasSpace: Discount 4188 +SolarSkies: Discount 2692 +AuroraSpace: Discount 3300 +Voyager: Rebate 1048 +LunaLine: Fee 6787 +GalaxyExpress: Tax 1158 +QantasSpace: Meals 700 +StarCruiser: Tax 1976 +MartianSpacelines: Fee 777 +CosmoAir: Discount 4510 +RyanSpace: Rebate 5980 +QantasSpace: Seat 350000 +AstroWings: Discount 8487 +CelestialFlyer: Tax 8383 +StarCruiser: Discount 7717 +CathayGalactic: Fee 1231 +StarCruiser: Rebate 371 +CathayGalactic: Tax 5933 +AstroWings: Discount 3922 +RyanSpace: Rebate 3318 +GalaxyExpress: Fee 7701 +GalaxyExpress: Fee 3202 +RyanSpace: Tax 1778 +LunaLine: Tax 4823 +OrionAir: Rebate 2982 +CathayGalactic: Tax 5732 +LunaLine: Rebate 263 +LunaLine: Tax 2059 +MartianSpacelines: Tax 6674 +GalaxyExpress: Tax 1962 +NovaWings: Fee 6927 +CelestialFlyer: Discount 2000 +NeptuneExpress: Tax 5832 +SpaceZ: Discount 7104 +CosmoAir: Tax 9324 +OrionAir: Rebate 3564 +LunaLine: Fee 6557 +NebulaAir: Fee 8426 +CathayGalactic: Fee 317 +AstroWings: Rebate 9898 +StarCruiser: Fee 8453 +LunaLine: Discount 1979 +AuroraSpace: Discount 4661 +SolarSkies: Discount 9492 +OrionAir: Fee 1788 +NovaWings: Fee 4780 +OrionAir: Rebate 4208 +RyanSpace: Tax 5322 +StarCruiser: Rebate 4999 +QantasSpace: Tax 3215 +MartianSpacelines: Rebate 5066 +CathayGalactic: Tax 5053 +CosmoAir: Fee 6025 +CathayGalactic: Discount 9209 +CometAir: Discount 6802 +StarCruiser: Rebate 5146 +NovaWings: Rebate 2872 +CosmoAir: Rebate 6539 +AuroraSpace: Discount 9672 +MartianSpacelines: Fee 7898 +CosmoAir: Discount 6469 +Voyager: Fee 8640 +CathayGalactic: Rebate 3182 +StellarJet: Rebate 6595 +CometAir: Discount 7482 +NebulaAir: Discount 9432 +OrionAir: Rebate 3646 +CometAir: Tax 9563 +CathayGalactic: Tax 4747 +QantasSpace: Tax 3585 +GalaxyExpress: Tax 5011 +QantasSpace: Discount 5255 +CathayGalactic: Rebate 852 +AstroWings: Fee 8768 +LunaLine: Fee 7634 +SpaceZ: Fee 6793 +GalaxyExpress: Tax 5217 +StarCruiser: Rebate 8973 +CosmoAir: Fee 9587 +OrionAir: Fee 9217 +StellarJet: Discount 9239 +MartianSpacelines: Discount 3426 +StarCruiser: Fee 6762 +StellarJet: Rebate 6123 +CosmoAir: Fee 3414 +SolarSkies: Discount 1832 +CathayGalactic: Fee 7793 +AuroraSpace: Discount 7306 +CelestialFlyer: Rebate 5727 +CathayGalactic: Discount 5523 +AstroWings: Fee 5297 +Voyager: Tax 9210 +AstroWings: Luggage 10750 +LunaLine: Discount 6144 +NovaWings: Fee 5629 +AuroraSpace: Discount 2706 +CathayGalactic: Discount 9828 +NebulaAir: Tax 4301 +NebulaAir: Tax 3785 +NebulaAir: Discount 7969 +AstroWings: Tax 6893 +OrionAir: Fee 7359 +MartianSpacelines: Discount 539 +Voyager: Fee 1531 +CometAir: Fee 2599 +StarCruiser: Rebate 3602 +NovaWings: Fee 1585 +OrionAir: Rebate 550 +CosmoAir: Tax 3496 +Voyager: Rebate 5339 +QantasSpace: Fee 2537 +SpaceZ: Discount 8450 +NovaWings: Rebate 5978 +OrionAir: Fee 6087 +NovaWings: Discount 4322 +CelestialFlyer: Discount 4003 +SolarSkies: Tax 7377 +NovaWings: Discount 6710 +NebulaAir: Discount 6562 +AuroraSpace: Rebate 2204 +CosmoAir: Fee 9850 +NovaWings: Rebate 8296 +CelestialFlyer: Fee 2295 +CathayGalactic: Rebate 5605 +AstroWings: Rebate 2313 +Voyager: Discount 6143 +CometAir: Rebate 1303 +AstroWings: Discount 9279 +CometAir: Fee 4280 \ No newline at end of file diff --git a/codingquest2024/src/day1/solution.gleam b/codingquest2024/src/day1/solution.gleam new file mode 100644 index 0000000..abef2eb --- /dev/null +++ b/codingquest2024/src/day1/solution.gleam @@ -0,0 +1,55 @@ +import gleam/dict.{type Dict} +import gleam/int +import gleam/io +import gleam/list +import gleam/option.{None, Some} +import gleam/regex +import gleam/result +import gleam/string +import simplifile + +pub type Adjustment { + Adjustment(spaceliner: String, value: Int) +} + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day1/data.txt") + + let raw_adjustments = string.split(data, "\n") + + raw_adjustments + |> collate_adjustments + |> dict.values + |> list.reduce(with: int.min) + |> result.unwrap(0) + |> int.to_string() + |> io.println() +} + +fn parse_line(line: String) -> Adjustment { + let assert Ok(re) = regex.from_string("[\\s:]+") + + let assert [spaceliner, kind, raw_value] = + regex.split(with: re, content: line) + + let assert Ok(value) = int.parse(raw_value) + Adjustment(spaceliner, classify_adjustment(kind) * value) +} + +fn classify_adjustment(name: String) -> Int { + case name { + "Seat" | "Meals" | "Luggage" | "Fee" | "Tax" -> 1 + "Discount" | "Rebate" -> -1 + _ -> panic as "unknown adjustment kind" + } +} + +fn collate_adjustments(raw_adjustments: List(String)) -> Dict(String, Int) { + use acc, this <- list.fold(over: raw_adjustments, from: dict.new()) + let adjustment = parse_line(this) + use maybe_v <- dict.update(in: acc, update: adjustment.spaceliner) + case maybe_v { + None -> adjustment.value + Some(v) -> v + adjustment.value + } +} diff --git a/codingquest2024/test/codingquest2024_test.gleam b/codingquest2024/test/codingquest2024_test.gleam new file mode 100644 index 0000000..3831e7a --- /dev/null +++ b/codingquest2024/test/codingquest2024_test.gleam @@ -0,0 +1,12 @@ +import gleeunit +import gleeunit/should + +pub fn main() { + gleeunit.main() +} + +// gleeunit test functions end in `_test` +pub fn hello_world_test() { + 1 + |> should.equal(1) +} -- cgit v1.2.3 From 58269644808af2ce4eed40e546d82fee74db10c1 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Tue, 5 Mar 2024 15:53:03 -0500 Subject: Codingquest day 2 in Gleam --- codingquest2024/src/day2/data.txt | 1000 +++++++++++++++++++++++++++++++ codingquest2024/src/day2/solution.gleam | 66 ++ 2 files changed, 1066 insertions(+) create mode 100644 codingquest2024/src/day2/data.txt create mode 100644 codingquest2024/src/day2/solution.gleam diff --git a/codingquest2024/src/day2/data.txt b/codingquest2024/src/day2/data.txt new file mode 100644 index 0000000..b47f674 --- /dev/null +++ b/codingquest2024/src/day2/data.txt @@ -0,0 +1,1000 @@ +45000377000000008306f39f0A000bc1d7253441 +4500007f0000000005065de1c0a800b833c555ee +450002e50000000008061ef5c0a8796698721661 +4500017e00000000b206e54e88c7fd4f0A00244c +45000164000000009d06d73c0A0000b7e0b143b8 +4500029600000000440668bdc0a8a69dd0886379 +45000109000000001806e85ec0a8e73edcc1d0b8 +450002d900000000a4065193c0a8fa37abedc6eb +4500024f000000000806845dc0a86f870391bc03 +4500003100000000b106c9ffc0a807cfcb03366f +450002390000000075069ca6c0a8f1bdee9bb3af +4500015c00000000140611d292be1c520A0076dd +450002ea00000000c606d0780A005baa7bc3c568 +45000378000000004b068aec0A00895702965832 +45000172000000007d068172c0a878b140414164 +4500036e000000008f06709bc0a81969fd909cca +4500011f000000003a06a8d8a26e01640A00d4f2 +450000ea0000000063061fa95171306b0A0006a0 +4500026b000000009906fb8a0A00ccca2e885702 +4500001900000000580658491546bd480A004d30 +450003da000000003006005dc0a8104927517592 +450000b000000000ba0613870A00c1e81af12ab6 +4500033d00000000b3068243c0a870b3415a10c5 +450001b300000000770653c49eda092c0A00e4ae +4500029b00000000af06fb59c0a87b23a783917b +4500011d000000009d065904c0a8f473271fce7e +45000325000000002606ad850A0013cf9361cfe3 +45000182000000003806984b0A00fa7cd72bedcf +450002a5000000007d061b74d0a2249f0A00fa67 +4500030f000000007606627fc0a8c8e9a23d1520 +4500033100000000260674cac0a845487621d680 +4500011d0000000049064d33c0a8cfbc8f57529e +4500032d000000009a06f2fec0a8b264ef1976bb +4500010800000000b3062294c0a8afd5e09232e8 +450001a400000000a806aabbc0a85925f7950bbe +4500016400000000b406ea15c0a8a2e2551d7789 +4500020d00000000ad06039e782dfb7b0A000c51 +4500029f000000005c068004c0a84864f39f923f +45000298000000000b06c69ac0a87893c3a56cb1 +450002ae000000000d0641dcc0a807e7f5525fd3 +450003780000000008069d835b3bb47c0A005d1d +4500029f000000009406d1cdc0a85573a137fbb9 +4500021a000000000f066ea50A0041888e99f91a +4500011a000000002a069f75c0a81318b6d6dbdc +4500012200000000c40605fb0A00008d8f7beeb6 +450003d0000000008b0612776602e5760A0033cc +4500023900000000860673aac0a8ea62b39fd341 +450003ca000000006f06d660c0a8b2149f4dbe5c +450002bb000000002b067dbcc0a8738998eb9aa1 +450002e3000000005806d3690A0062a5351829c9 +4500002a0000000064063ee80A00ba2e657a5d4a +45000219000000003f06bdfe665f80c10A003ab1 +450003b0000000004d067a81c0a846f2c8eaa74e +45000150000000001006f7245f0bbc9d0A00f57f +4500014700000000b40667860A00e2268b35bb71 +450002e3000000004906de18c0a8488539e14780 +450003bc000000005206b25d0A00cbbfb6d5e661 +4500037300000000370600500A00afbd025bd06d +450000a4000000004b06bf87c0a831383c137d9a +450001160000000034064fccc0a87c1b780fb8c4 +4500001a000000003d068f13c0a8befc8d1b2e83 +4500035c00000000a306be13c0a8c84e38438d44 +450001ca000000005806e936c0a82f454eec47a6 +450003d5000000004f06288d947b8cc00A00b239 +45000373000000008706d1eec0a80752288a565e +45000252000000000306a804c0a863e1eb70a817 +4500001d000000000c06f65e0A00bf8e7e9ff868 +4500002c000000007f06784dc0a8d758aad2eabe +450002e000000000bd068a830A00ba6397a4b592 +4500017f000000002606da5cc0a80c3036ebabf8 +4500005b000000005806346ff358c6f70A00663b +450003c10000000069061bf10A00dae15f9256fd +45000365000000009706e733b4e45d830A00db20 +450000d3000000002406c1adc0a8bef95ff31461 +4500001b00000000c1065e40c0a82d19d69d6cef +45000107000000003006961c0A003c76a3eab6b3 +450003c7000000005006adf2c0a8b0fa0f0b0777 +450002ea00000000450690310A00de79d7840384 +45000019000000007c06851a0A00f561f376c368 +45000093000000005506427d0A0052fd2ae2cfb8 +450001150000000062069869c0a81a22f926a3a0 +450000b5000000007506adb0503ed6e70A00c053 +45000116000000002206bb62c0a876e372ed646c +450000ec000000000f06241e0A00be0f4719c88f +450000e700000000b00682b9c0a80a4e59167bf2 +450001de000000003a0699ccc0a89108855d5302 +45000376000000007d06646bc0a8466bdf148e0e +45000177000000003a061da6c0a820e888363fac +450000c00000000097060effc0a836cb6106dc4e +450003a500000000460657a0c0a80016321e18ac +450002bf000000003a0677c026a819370A00ed13 +450001c7000000006206abeed642fd810A00ace3 +45000196000000004006ae57c0a88048f98f490b +4500021800000000660695d3c0a81a89272fa19e +450003600000000036067bb00A007f67abe685cd +4500034b000000000306ad77dcfab9010A004d50 +450000fb000000005206604ac0a836478668d027 +45000130000000002706e41e34ad26340A008839 +450001af00000000ba066da2c0a81c2bbda77400 +450001ad000000003506d17fc0a82f91fa258182 +450003560000000087060e8ac0a827227d08f9ba +45000130000000001e066672c0a812bf0ab421ce +45000248000000000906cb0cd1f88b1f0A0058ab +4500013800000000ae068a89c0a815e2d3f069c3 +450002490000000046066691c0a892ebb3e777c1 +450001f3000000008f069ec6c0a8f819f1d29176 +450001dd000000007906de29c0a863f8ceb7fc6d +4500034c000000004106e7e3c0a882de31490afb +450003d900000000c5068d1408310b910A005969 +45000291000000009806b4ebd836e7ba0A0082e1 +45000347000000005006a07f0A0031ec08339535 +450000fc0000000070065eeec0a831c55299b838 +450002a2000000004b06b76780f52de10A008785 +450003c7000000000106bcd5d108537a0A00a508 +450002dd000000007f06d307c0a8d018f391944a +450003310000000071068ef6c0a893562eef238e +4500038e00000000a1065e65c0a861ea50cc550c +4500018300000000880665a4c0a84ab75e3d7ffd +450000cd000000001c064f7d51d0bb6b0A0092e9 +45000223000000000a06b74a88b7c2c70A003433 +4500004e000000006e0618ccc0a85a7e5c4ed845 +4500006400000000a606ec87c0a88c7df8cc99d9 +450001290000000005067fd0aa09b61b0A007e31 +4500016500000000a206ec28c0a8fb4446092f22 +4500017200000000b7063a24c0a8031866bac425 +4500029f00000000600667eb058896fd0A005963 +45000286000000000e068b350A002edc61e8eff7 +4500013d000000004d06af47c0a8b8799cda03a0 +450000aa000000005206465fc0a8ab8efc2274a6 +45000242000000007c069a4c0625d2300A00d02b +4500023d000000006f0611a202c40b400A002cce +450001f3000000005106da260A007dd1549e0fb1 +450003b40000000032063f2fc0a88f84f8c5b4da +450000500000000034065287dc1edfb30A005389 +450001990000000019067861c0a8ae0a880978ad +4500038a000000003706fa110A005793059b2ebc +45000311000000009d06a627c0a843768b263000 +4500015d00000000c306bdc8dfa1300a0A0007e1 +4500013e000000000d06b63f0A00d9bff86c1bbb +450003b9000000007e0611f8c0a858365488cdfe +45000059000000006606826ac0a8cf13ec0d0177 +450003a0000000004b060c820A00281b29503789 +45000064000000004a06a0a10A00de53169bf181 +450002180000000081066fe491db51600A007602 +45000086000000005b065485c0a8a7de49c26207 +4500021500000000b1066c8bc0a857aa49f942a6 +45000364000000005d06a63ac0a871d8d0d240f3 +4500010d000000004306be57c0a8e4110150d3c3 +450001cf000000007706cad30A0081cc31caf550 +450002a300000000a8068a14c0a8d1bd8eefb337 +450001f40000000028060b39c0a8330f72a3518b +45000364000000004206c3a9c0a86243fccb4ded +450000b2000000001306be5db6658f8b0A00589f +450000b4000000004606b0bec0a81feb0e1da2ce +4500013700000000a5067bb6c0a8b7869a6de02c +450001b5000000008d0666560A00afd9373b15d4 +45000189000000003e061d6047108f3b0A00ce84 +45000186000000000806d70c2f1a93c80A004666 +450003d7000000000a0675d279160e070A0028c6 +45000296000000007706b4f47ed0471a0A0044cd +4500031800000000a40616b2c0a8b7f3a5ee43d7 +4500014900000000070619b2c0a81442266383d6 +4500009600000000ba06db7bc0a8e938e5333a0b +450001a7000000007306295a5b60934e0A008945 +4500001b000000005d0678e799f746390A009e1b +450000f4000000003906e35ec0a80481accf97ba +4500022c00000000110626600A001c62075c64fa +4500001f000000004206136414c22cb30A0038a5 +450001ca000000008806738dc0a8443bd71d77d0 +45000128000000000b065dbb0A0053e9057bfd1e +4500037500000000bb0672850A008808476201a6 +450001ae000000006106149f3c0f8c760A00b6f0 +4500018300000000c4068612c0a8c3685a5faae2 +45000313000000005006c8420A00f0b0b46bae36 +4500032900000000a6064e02c0a8570cc9ab6b39 +450002fb000000000b06196ac0a8f3b320fd9f01 +45000337000000005906a9d6c0a82ce7543686f1 +4500027c000000006f06e49dc0a839bcf16f2973 +450002c900000000290624620A00c704ac26a314 +450000840000000082065183c0a857a0699d8e29 +45000209000000009f062451f9f33b3a0A00b962 +4500019f000000006d06337d0A000cee05bc0be0 +4500031e000000002906d2d70A006c619dbf4efc +45000211000000003d06b4c6457379f40A004cdf +450002d900000000af067b0545e53b140A0052b8 +450001d3000000000106bacc8b2b78bd0A008408 +450000140000000036068b85c0a8baf160c03d4f +450002dd00000000a2065456cedbf8bd0A00c831 +450000d60000000073060d050A008cd0b36fac91 +4500031d000000007b06bd08c0a85dfb982b2081 +450000db000000004f06b18d0A00cbb98b0fed43 +4500031b00000000be06704a0A006e6a63bd1abd +4500021e000000001b06b43ac0a810be2f8cd7f4 +450001e800000000ab062cfbc0a84c4d161f93f3 +45000171000000000506e955c0a8719202d258df +450003ba000000004006a41ac0a8a418c39d2d8a +450001af0000000040066f66b1dcb11c0A00580d +4500007d00000000c806c591aa456d930A00bea4 +4500003d00000000b806aa8f0A00f0080fe1680c +4500007c000000002906a1a3c0a872254eae7ca7 +450000be000000002d06c0a2c0a86beef38b5ef8 +450000ad000000009306dffdc0a8447a06e7020f +450002ff000000002e062c90c0a8a31fd753b8b4 +45000370000000008106b1dbc0a8ed9bede29566 +45000172000000001906625e08952e240A000ff3 +45000157000000001a062efc0A00fbcdcc227403 +450001c900000000b306bc920A00bb3773ed8dea +4500030c00000000150612e1c0a8def8257eb02f +4500021e000000003806995bc0a85c1b15b48a90 +450001d5000000005406e5bae8e611ae0A006cca +4500005b000000001b06a3f30A00f057b1540a99 +450003e100000000bb06ba29ee9c839c0A00bd5b +450003d70000000012063c0bda7bb5b50A00b27e +4500014f00000000080652a7c0a8a829cf6ab54b +4500005900000000500655fa0A008126d23192a4 +450000e100000000a0066d6c484f86810A0025d9 +4500015d000000008306928b2717a3970A000049 +45000091000000001406a0e8c0a8e238ac2d21dc +45000222000000009e0683cf85720c520A008a27 +45000169000000001a06c0c7c0a8a6dfbc84366e +450000a30000000045066a99c0a872ac76c596db +4500029c000000000306affc0A00ef9cfc9b14bf +450000a5000000002206de790A00872885323224 +45000351000000005306f08fc0a838832b1d3aab +45000278000000008f069affc0a88e8873d9fec7 +45000120000000003d0635530A00b2066830950e +450000a4000000005b065a58c0a89532a5e26e66 +450001cf00000000c706e28ac0a823ee8d94ea65 +4500033e000000006b0603b9305a41860A000742 +450000c3000000003306e59e4ad214210A008d23 +45000039000000002006f406701d9c390A000a07 +450002c10000000019066808c0a8cbb3f91769c4 +450001a900000000b90614abd570fc3c0A00ee8a +450002be000000001c060e5f0A00b361322dda3f +450000c400000000b40628b224f08e370A004f1e +4500019800000000a9064e0f0A00e0087a2fe1c6 +4500032f000000002106d94ec0a81bf35821a071 +450002c7000000008f06d24bc0a81ef77ea536b2 +45000150000000000606de91c0a8127a8b92c153 +450000f2000000005f06fd79c0a8a570a967b6b5 +4500008f000000007906fcc8c0a836bc8a820c9c +450001b60000000088063c550A00930f0abd61cb +4500027a00000000b106f6ccc0a8f8528624171b +45000074000000008406a9cfc0a869a294c421c0 +4500020c00000000520674b5c0a8792d71f477da +450000f900000000b6068d0f0A004c4a1dd02a80 +450001f40000000088069386827eb37a0A00e979 +4500004b00000000590619fa0A002aac92051c6c +450000da000000006e06e055c0a80e5612105ca2 +450001b400000000b006bfc30A00a4dc1a56a482 +450000c20000000059066539c0a83dd41f72bd4b +450002e4000000007906a199c0a8357bcc616675 +4500031f000000009f065a1726146f740A004f1f +4500025f00000000c206a7dd5cd57df40A00d063 +450002c2000000001506debe0bfbe3070A00e15d +45000052000000000806eb6ac0a854e007d27196 +4500015200000000ab06ab33c0a89c21fd91c596 +4500005b000000002c068637c0a8a3f37a79633a +450001f4000000007e063fad0A00b099e4d649d1 +45000335000000007906fd88c0a8c87eddef7721 +45000335000000009806ef1ec0a8b69194f478c1 +450000470000000065065e59c0a885a419fb70dc +45000014000000004d0691c90A0052afdbd28888 +450001be00000000bc06d1810A00931d4719984c +45000155000000002006723c0d82692d0A00be24 +45000058000000005e060b5a0A008948a888c74d +45000082000000001d0632060A00305906913b08 +4500006d00000000c606450cc0a8434633d46b47 +45000150000000001b06a5bd0A00bcd820e03bea +45000349000000001a06b3fe3b2d39b70A00afb6 +4500029b00000000710612bb5f14e0770A0053c3 +45000300000000008706ee562d11be9c0A0083d0 +4500018e000000004b06c9239cc4fa0a0A00aa98 +4500033600000000920662ddc0a8590f7e4a6899 +4500017a00000000bc060e89c0a8d2f57c3f1ac5 +4500028f000000001a069eec0A00e4606ac31aaa +45000204000000007306628316428bb50A00579d +4500014700000000020685bc0A00ad70772a8405 +4500036b0000000055061bf10A00bdf429fc8876 +450002d9000000002306ca1066e653730A00772d +450002b1000000004c0649a7b76bf6070A002bd9 +4500017500000000220679aa0A0088c7d7fe9432 +4500010e00000000b70647047e9a09c30A00b19c +4500025e000000001f065e44c0a81bb870d71e6f +45000106000000007906684468d9aa340A002e09 +4500036d000000007d062340c0a83ed10ae7d7b1 +4500029b000000004d064c4c8a878a920A0093ec +45000040000000006c0688b8c0a827ecab4f9caa +4500036b0000000084062cc8c0a826b51a9bdf37 +4500035a000000003e060f77d2a433640A0035e8 +450003ce00000000380643c7927754150A00e6b3 +4500026200000000650605aec0a88944a196c344 +450000770000000082061bf2c0a83fd45cf3dba0 +4500034400000000a50656afe6a876150A004501 +45000282000000006a06de7fc0a8ada64ef1c144 +450001b400000000a4066b1dc0a8a036f0aa0842 +450000a0000000009606b1acc0a803c757a66dcf +45000163000000009706c95cfe64be910A0099a1 +450003a500000000c506c3ebdf5a7c4c0A00b134 +450001a3000000004c0627d3c0a88191e7fcc24b +45000118000000008a0623440A008ab88abe8151 +4500009800000000220632ec85d6f2180A0072ce +4500024b000000001006f90c7255f2b50A00bc71 +450002ec000000001206abdcc0a820d270b9d82f +4500007b000000009906a809c0a81b9670865caf +45000061000000000206f602c0a884262a743d86 +4500012c000000007506940ec0a8275a2b9b887a +4500020e000000007506987f6d95d1ea0A00d90b +45000160000000008f06633a0A008ce834cc3a39 +450003c3000000004c06d7e46364b5c90A00dd1c +450003a8000000007a0630b30A0024fe98d5e6fe +4500039800000000a206a23952c1a80b0A00cac1 +45000278000000009406ee5188464ce80A00e8b6 +4500036b000000000a063095c0a8f802917d83a6 +450003de000000003b06b7bec0a8fee7b4e7c402 +4500018d0000000068061a270A0030ae1379067a +4500038a00000000820698ae6d2dc3de0A00d86c +4500018b00000000ae06f251b990f5890A0022d1 +4500012800000000b40694ff554673fd0A00fc76 +45000134000000009c063e8d0A00791b40a665d3 +4500031e00000000430648270A00caae266e61d6 +45000169000000005a06ec7d5f7dad170A00c593 +4500026800000000ad064d2fc0a8f71a637dc625 +450002e0000000009e06de48c0a854e92b97e5fd +45000065000000005806a1fcc0a834e9ce988a21 +450002d00000000061064761c21f49080A00c5f4 +4500034000000000bc065be1c0a87c070b692306 +4500007d000000002106db6306ec8abc0A00334d +450001ea00000000160643f4c0a88636d9fed74c +450001fb000000007706fbaac0a8152db64a2fb1 +4500008300000000b4069e4ec0a81ae6f31d4b8f +450001bd00000000c60612460A002c76f78cb37f +450001b60000000042066121c0a83f3f3ebcd5e5 +450000f9000000006506caa6c0a81799f487710d +4500003b000000008706b05bc0a8d61a6f7cac1a +45000372000000004c06a4d9c0d7094f0A00bc95 +4500003d0000000006062dbec0a89bb718beea6f +450003c9000000008006e02f0A00e9111cbf6dca +4500003600000000bd0681a7c0a801a8763c793e +4500003a00000000ba06fda591dc48980A00b9e7 +45000338000000004f06b37fc0a872d03de94175 +4500013e0000000012069f49c0a8e8b3f88f1e07 +4500004d00000000c4067d6e1dca08e70A007030 +45000367000000002c06f1e5c0a80e51876f8a15 +4500008c0000000004061e9a0A00769497a4209e +450002b500000000c30607890A008997593363c1 +4500039f0000000075066a16c0a8929d11b144d6 +4500003500000000ba06576a12005f670A0049d7 +450000de000000008e066bbbc0a8a4c17ec01a61 +450003e3000000009c06bec40A00d762cc9f841a +45000244000000008206e18bebbc73230A00e112 +450001ae000000003b0686e30A00943f2d3e62f2 +450000240000000007064976c0a80c6af2ee5c43 +45000352000000006d06acdac0a8cb63ca4fd0e0 +4500010a0000000039065e060A002ed3aa95f362 +45000370000000006706757ac0a8369e4b27a366 +45000177000000000b06874dc0a834f3fe2bf084 +45000089000000008406ded5b947d7510A007f87 +45000144000000008506174c0A00543a3dcdc8e8 +450002ff000000000406da6d0A00128df3e7c603 +450003700000000073062fd70A00eabf0bc829de +45000388000000006f069677e0f918bb0A009855 +45000155000000003f061e6e0A00986acf72c2f3 +4500033500000000a006178e0A004319fa19bc19 +4500020900000000c506920c4008dde90A0083b1 +450003970000000079067c0bc0a8e9a1327ed7c4 +4500039a0000000036061a50c0a8adb16b11b833 +45000023000000009b06eece5d6211df0A001ec2 +450001f0000000006c063ccc70a6718b0A009e38 +450000c9000000001606b7ee0d832c880A00bfa3 +450000af000000009206034f0A00d1af27d3531b +4500038f00000000020600fcea125ca20A0056d8 +450002c9000000004e06c319c0a87b7ada032a03 +4500027c0000000062063a8d636fc5ad0A0055d6 +45000281000000002a06befa0A000cdefd16c199 +45000066000000002e065399fcad061f0A0031d5 +450000dc0000000007067195c0a8d2dbf5ce6cf8 +450003e500000000ba0688dcc0a8d5cadfdb9ccf +4500006d000000006906fc7cc0a8afb2dc07a3c2 +450002e900000000610668e4bb35091c0A00e44b +45000334000000007306f272c0a8cacde4be85e2 +4500035f000000000606859f0A00913f57c99a5b +4500003c00000000c50602e7c0a8d9800c66188a +4500010b000000002a06fd7fc0a8d68becaaba38 +4500009b000000009a06b5b7be67677a0A000265 +45000182000000000d062bb2c0a8bc044368c3be +45000329000000002a06caaf23b4f2140A00d0e0 +450000c4000000008e060d5d4e7bc0d70A005da9 +450000f8000000007606f30e3893f8150A00589c +450002790000000023062b2d7541f90f0A0070c5 +450003c300000000a106354d6b5815650A00cb0f +45000068000000009d06fbf3c0a8e4c0416c3bdd +4500005a0000000050068568c0a815b6f25ccdcf +45000170000000006106f2d7c0a8df858a4984e3 +4500016c00000000af062e250A007a21e8516155 +45000217000000004106db68c0a8745eeff6266d +45000258000000003906a4000A00fbedc767dee3 +45000092000000000d06f23f94684f680A006b22 +450003b00000000045062127c0a810db51713f36 +450001da00000000b5065288c0a8b362ab3bfcca +45000267000000000906d336c0a86e5814b66d30 +450003c6000000001b06593e0A001ecc850e239a +45000207000000005906fa21230e114f0A005455 +45000167000000003606bfbdc0a82e662d4f9482 +45000194000000002a06ec4bc0a86e0059593401 +45000050000000009806c94ac0a8882ed1e3cfa0 +4500026d000000002e0625bec0a82ff10ea6340f +45000230000000006d066bb90A0017c7f735c748 +4500035900000000ba06204753df4ca50A009057 +4500016b000000007606842933ab3d6f0A0081b9 +450003b2000000001d067a7cf43cae900A00703d +45000292000000002c065b700A002ab1f276054a +4500029d000000005606b2effcaeb3860A00fae1 +45000173000000004506cf060A001482b8d7903c +450000ff000000008406a0db0A00b070f8f2e3ad +450003ce00000000a50641870A0010dc2195bf9d +450002410000000067064ca1c0a8551e2f06af0a +4500034e000000000b06ac26c0a84123b438bdee +4500012300000000aa0603d9c0a81cb848e6ee3d +45000293000000008906b2f3b6b6518a0A002a29 +4500021800000000c7064a4abeae982c0A000ea3 +450003850000000067063966c0a89b9622187a96 +4500013600000000ab067005c0a8048ce679988c +4500021600000000bc06d464c0a83d2de1d0e9b1 +450001d000000000840653930A00a3febe1e3cd0 +4500031a0000000084064bfd513d16d80A00d0af +450000b9000000001606af5fc0a88cfa2cbe66fb +450003ad000000005306d746796ed0c40A00bbbf +4500030b0000000090066692aca498d50A0027d1 +450002e7000000000306b29fc0a86bc27e449573 +4500020d0000000048062507c0a8e959933b6139 +45000327000000000a0624ccc0a8e99141799e74 +4500009800000000c7068e4dc0a86c3f3648f7df +4500021a0000000038064f8ac0a8b94fc57f7681 +4500009a000000002f06e4d0c0a881f47ec6235d +450002e70000000050064f4dc0a87d03e1339a21 +4500022c000000009706c779c0a829fc53482f45 +450000e60000000045061f05c0a81ff3495a3512 +4500025a000000004706b06dc0a87f2e058e413f +4500015100000000740677500A00d44a2e0bf9d6 +4500023200000000a2068a20c0a81b61ba376fcc +45000299000000001f067bcce605f80c0A002498 +4500029e000000007006e5620A009f0f0bdac3d5 +4500025c000000002806d5950A00aa877f0f0ff8 +450002ae000000006e0622fe0A003fe06f6ee6f4 +45000268000000004e06dafdc0a89c235ba1f256 +450003c900000000af06ff1ec0a8b7027aac50d6 +450003b6000000009f0639980A000f0867c5cf32 +4500031400000000a906582ec0a8da3c0b92dbb0 +450002340000000008065935c0a8fd423b575953 +450002b800000000c106048b9e5989bc0A006852 +45000389000000006006c2e0c0a8d8ef123dbacf +450001f400000000b7065a93c0a8f4827e8cb1b2 +4500002500000000b90626eac1560de90A00cc36 +4500039100000000b506dca2c0a888971a6e9c55 +450001be0000000097064a993860c70d0A001053 +4500020600000000430674520A00a726960e59db +45000359000000001b067ed5c0a830f687e8eb8e +4500019f00000000ac06dd4ece21ba2e0A007506 +4500010700000000bc06df460A007e3aa2b89fc6 +45000216000000000c063f16c0a8995cba3bd2f7 +4500023c000000006a06b884c0a803e0a32a90f6 +450003e5000000002706dea80A006b4feac24529 +45000260000000002406d1360b9ab4810A000ecd +4500020f0000000068066eb1c0a85623c60c8a90 +4500011200000000ac06bb90c0a8e5c0b39d6b24 +450003af00000000be060a9ee83aa0450A004d75 +4500020b0000000071061a4c0A00fe9fb27d2e47 +45000323000000008c06eef5c0a8267ab45814f3 +45000193000000006f066ca7c0a841c069e89ad6 +4500002f00000000bb06fe43136f60670A00a103 +45000088000000007a06f875c0a8f46fab665222 +450002fc000000000406520cc0a84d906634133b +4500033f00000000a706d0cfc0a848af9633f5e6 +45000161000000005206019dc0a87c0a4e6ce8e3 +450002b800000000710685adf4b536b70A0089df +450002f400000000aa066247c0a8b1666e32f92a +450002a7000000004f062b8ec0a86dd587a3cea8 +450001f30000000020066a490A0019bb2bd414cd +450000fc000000007d06b3ca470b6f950A00194d +4500029600000000b5063674c0a8e84803ade3e4 +450003e6000000009306e56831dd9ade0A00a392 +4500036a000000005606ea4ec0a8c5cd1285b0a2 +45000293000000008d061310c0a876e44dada065 +4500005b00000000c80618ae0A000dd54850cbc9 +450003b2000000001206f375c0a8cb0e5fc3e5a5 +45000278000000002f061a16c0a84e12ba491fdf +450002f600000000c4063a1ec0a8ac6edd060bda +4500021600000000c10616d10A000f8e040ed176 +450001d000000000a20613fc0A00d954cbe62904 +450003a7000000007a068caad05cf3be0A00bc10 +450003c4000000006c0666cac0a85dd14a138590 +450002d9000000009e06e13ec0a86f6cbe2bc7f8 +450002c6000000002f06e8750A0040d76b8f5f72 +450002890000000090066574c0a8b92dc7c70848 +45000098000000009806d61dc0a82e4c8bfb1cad +45000319000000003f06f3a8587ebbe10A00c8f5 +450002b1000000004806417d0A009c164f4c925c +450001bf000000008506377c5d29a7d40A005483 +45000041000000007e0632e460c394510A007519 +4500014700000000830691e2c0a8840e36d31fcc +450002950000000060062f9fc0a88d7de5b799a3 +4500031000000000b8067d37c0a8dda489b2a3c5 +45000222000000004e06c1d2c0a842dea62564c1 +450003c20000000016064a90c0a8fa75ef825a83 +45000317000000005a06cff70A00163f19de7789 +450003a1000000005606cf53c0a849e5f00c4670 +450001db0000000097066962d3f67e610A00397e +4500031e000000006306f0520A00844d3ac2dff8 +450001ee00000000340670bd4485baec0A005914 +4500014a00000000bb068f06c0a83848a31535fe +45000217000000005d063ae7518556d20A00c9ce +4500028700000000bd064eddc0a8c38a0303e848 +45000212000000007f06ad27c0a822856d2c690e +45000205000000008d065ad7c0a89af8593b350c +45000041000000003706afb296e4622a0A00713c +45000338000000005e06ebb80A00e7285bb3867c +4500018500000000b1063cc6d2632ae20A009ff0 +450002ca00000000c40613a6c0a81d7ba603c1a8 +45000015000000008a06c36b0A004942c9442364 +450001ae0000000005065bf30A009ccd6ff9bb12 +4500035e0000000087068e64c0a81dfdadee82cd +4500002e0000000051065a910A00f2750cdd1caf +4500028f000000007b06b6d931695db50A0028a1 +4500028400000000c80620dfc0a8c46952bf0a1b +450001010000000052062a8a115f23d30A001980 +450001c000000000860677b0c0a89c93d3a71d63 +450003aa000000000b0640930A00108691555a9b +450002e5000000003206aba0c0a8f5cc157ae3d3 +4500029e00000000c306538dc0a865eda8383a79 +450002aa00000000250699f1b31937cd0A00c0d4 +4500022a000000002b06c5e00A001da54861a9f8 +450003ac00000000a806e665c0a8d040a0c15748 +450002c900000000bf06e2d5c0a805a114bf0fe6 +450002dc00000000c306c3eec0a8cec661e46148 +450002fd000000002906ca9c0A00246f78e99f6f +45000080000000009106223496e786b30A007ff2 +450000c3000000007506959cc0a82547e7f588ac +450002150000000007065d07c0a88facf662c37b +450002680000000022064c970A00afa985c899c2 +450002ab000000008906f1420A0073309d84ca35 +450000c6000000001506c5540A009cd2f9d6420a +450001eb00000000bd0626f5c0a865833cc46e9a +450001e30000000045062c880A00c442ede78255 +450002aa00000000a906dd2fc0a8ae8bb48f8221 +4500009900000000400688ae04465ce30A0094c1 +4500004f000000009f06d0f1c0a84257ad8806f5 +450000d50000000008062ba50A00d4826f29b184 +4500010f000000006706221f0A001e2ec43911cf +4500039d00000000b406e3510A00dff009be4008 +450002ca00000000b2062701c0a8041f9a7fd9b5 +450002ed000000003a0664d50A004f6fb519c909 +45000081000000003f06d5010A008143b5292475 +4500037f00000000150687120A007ac34f0ea04c +450003a300000000c306fc22849471020A0086a4 +4500022300000000bf06632381c70d060A008922 +450001090000000028060808c0a8183e267d70c4 +450002950000000018066988c0a83f30afd5f63d +4500038600000000bd06b2a60A000650dc274097 +4500014400000000b006cfa20A0052d2a69fe691 +450000e900000000a10624430A00897bc7096a81 +45000399000000009e06945c7d1ec3930A00c0ea +450001fc0000000092066784c0a849a35d0774b9 +450000c50000000079064a682fdbb72a0A003f69 +450001750000000069068dc0bd517fe50A004218 +4500028600000000180642a4c0a8d572e0f286bd +45000244000000001f06f2a520faaafb0A00fbeb +450002a0000000005006a0ba0A00e9553d6dde03 +450001ee000000003206c946e12b607f0A005c5b +45000285000000002c061d46c0a80178a2d06c54 +4500032b00000000a3064819c0a82077eff5aa8f +4500009700000000b70618f40A0072b9f6f276b5 +4500032500000000c806aae4c0a8e6dbb8975c9d +450000fd00000000940679f2c0a804b5758ba620 +45000388000000000a0604e4c0a89b6e3c460c23 +4500013700000000840669e30A0096075489357a +4500004c000000003206281cc0a896a77660c8b4 +450000fc00000000c406ec5deea9d90b0A002f9d +450003cd000000000406f7d5c0a8085a29fdb214 +4500004c0000000085067c9853339d030A001bb5 +450003c3000000007106d3f10A003a100f8d381c +4500009500000000b3064b30c0a8b9b3619f0160 +4500027600000000aa0692431e84c6920A00b586 +45000362000000005206d3a2c0a812ee1ed57e29 +45000296000000001e06add00A0089fb06296288 +45000117000000009d06da630A00f7f8992b49e4 +450003df000000005d06aea00A00297aaf948147 +4500016300000000c6064b14c0a866f5c1d6400c +4500028e00000000230634950A0008a00bc05821 +4500037a000000008e06f9b40d6903320A002c82 +450003630000000040063a31c0a8533c7afee8ef +4500011f000000004f0625a7c0a8dc74db116724 +450002bd00000000a406ca75c0a8d624af077234 +45000050000000002106c7de0A007121601b6040 +4500012a000000006d06ad280A00e08edbe8be34 +4500026a00000000b7064148c0a85f2abd8c5fa0 +450000b20000000016065539c0a88e9caec8bf04 +450001f300000000ac064e7cc0a80ca43506b0f1 +4500031a00000000c7066f3a2e27fd770A0083f6 +45000288000000005b06d8f2c09112de0A0070d7 +450002a6000000003c06d0ebc0a800b8b413a93c +45000260000000008e0627470A00db37e1602730 +4500033a000000009a06363b0A009108618e5611 +4500022c000000001b06395a0A00d9d1a3f989f5 +450000ce000000000e06b3a6c0a8385f340ebf32 +4500009800000000ad06b3eda5b2662e0A00f297 +450001f6000000000f067612c0a836f43f91fbfe +4500024f0000000041063612cdacbc850A00843c +4500020c0000000004060eaec0a8e23f7846c2c8 +45000158000000004706979a0A001475889ac600 +45000073000000008d062f36a204443e0A00b966 +450001e3000000002a061395c0a8f7ca8a9b826d +450003cc000000008506b4d9c0a8878b376ef4d2 +4500008b000000006306e8c7c0a81b2b5cef5260 +4500009d000000000306b69dc0a86ab2704294dd +45000372000000005e063fa9c0a8c54f230353ac +4500019000000000a00616a70A002a504620d822 +4500022a000000001306f4f6c0a871b076ed3df3 +4500034e00000000ae06a0c55d44a4cf0A00c3b0 +4500010f000000001f06f13922f39b900A000df5 +450001f4000000005506d46dc0a88558b66b08ca +450000ec000000006a064f8da05dcde30A0031f3 +450001bb0000000021060b8fa2999c4a0A00efb9 +4500003d000000004006284004d74c170A000657 +45000234000000002f067309c0a873d25b23a1cf +45000067000000008306c2020A002d53625147d1 +450002df000000002b066e551a1273130A00ab8e +45000147000000004506a86e0A007c16f6ef4f2e +450001f400000000790692000A00318723c17c51 +450001f9000000003f065c18c0a84ddd8787cec4 +4500021a000000008406346a0A0009662483f6e1 +450002720000000008062066c0a8ee38f516a034 +45000230000000000b0676b994484d860A00e8ec +450000b4000000009d06c2fcc0a8701fb20fe8b8 +450000d3000000008c06cc6d3c27ea670A00770c +450002f8000000000306cea0f147e8b40A00fcb2 +45000226000000003a06c5f0c0a835b65bf38212 +4500014c000000001606b4390A0080111a0a6f3f +4500033c000000004e0613b9c0a87b31123dda01 +45000222000000004d069635c0a8bc4af39117a5 +45000332000000006a06ab5fc0a87a86baaf2668 +4500014e000000008f06ee2c0A00acf16e938f16 +450001d60000000043066dc5c0a85d2cc007a9b2 +4500027600000000c406f3f20A00ed99a61d1248 +450000b30000000063064525c0a8ce26b15b428a +4500011f000000004e06f2aac0a861cc8e5d1616 +4500020a000000001506c695a81803150A00d993 +450000a200000000bd0682ce0A0097b4cd15e1fe +450000970000000026069eefc0a8f0830b8d0425 +45000141000000006406e1dbc0a8edd12de4851f +450001fb000000001206fcf90A00d3bbb8fed588 +450003c00000000087060715c0a8ca9f65e15d60 +4500009d000000005606c877c0a8fe9dc1fb9bc7 +4500004000000000510629350A005acecd57e4df +4500006b0000000034062e870A004780667d1017 +4500016f00000000ac069637c0a85f4708161744 +450000a000000000c8066f7dc0a818e4f66a6842 +4500039f000000007306638c0A000f87ae12d08f +45000102000000002a06c5560A0093dfac78360c +450003dd00000000080694508ca49eb00A007b86 +450002fd000000002c064ae5c0a87ed23bd4c14a +450000d9000000009906fbd30A0072293d26b2dd +450002e0000000000d0635a11d77587c0A001cd5 +450001d2000000000706462ec0a804ee52c265f9 +450001e8000000006506c602c0a84db8b9303ede +450002bb000000000106b4bc0A00b61633a14c2f +450003ad000000000606cfe5c0a88706edf758b4 +45000354000000004b06a657c0a847e9a5627d00 +4500018700000000770681340A00d20fa472ee81 +45000301000000002b0636c10A008884a27bcd07 +4500011d00000000b40696e90A00572e33631788 +45000361000000005a06a3d9c0a8b11c0b5507d8 +450001e50000000091067e62c0a869944f1e3f0f +4500016e000000000806526dc0a861b2659dfc47 +450001520000000078061bcb3be19e490A00874e +450000fa0000000042066bc68b3fe8050A00239f +4500037400000000350650f60A00af3f03488243 +4500020c000000005706ec5fc0a8cb7b18cea93b +450000f9000000001b068b66c0a8ac51166d6673 +450003a0000000004706bb86c0a8a686ebed0ca2 +45000368000000007b06cd76c0a86635592b07cd +4500030d000000002c064ba20A00cba701667498 +450001df000000006b06f3d1c0a8a07ad103b83e +4500008e00000000b4067433bb6621140A00705f +450000a1000000000706c0ed0A007eec54bf7321 +4500019b00000000c40608620A00845511bf688c +450002aa000000002b06d5bac0a8f1cc38adc4d1 +45000285000000001c069c63c0a8a4c7751f5a15 +4500023200000000a7067ab3c0a81f94dfae75e1 +45000299000000007a06ecbe50e5ee470A006301 +4500035000000000860687e20A00ae075e7bfb58 +45000026000000000b06e1240A00c2620e780c35 +4500017b000000004b06bb1f0A00f8a61fa3ba90 +450002f1000000008c0697c84bb8a80e0A00ebdd +450001ad00000000a506a28fc0a85ccfb8331376 +450000af000000003706df76c0a863c3f57a3e5c +450000ec000000002d06ff5c0A007f45dd4c0d85 +45000282000000002106afcec0a8a2733a8c443c +450001da000000007b066d230A00c2b5acc70d91 +4500032b00000000a5063278c0a8081b1b5ed760 +450003b8000000004806632f0A00c5cd0b2a4630 +45000318000000008f063f380A00d08d53f418bf +45000301000000008406b449eb0ecf7c0A00af3e +4500008b00000000b806be89c0a83d625bb30568 +4500031f000000002706770dc0a8fcc8b7641b8e +45000265000000005206f35bc0a8c78ba720aa47 +4500008b0000000086063ccdc0a8fdb343ebf8eb +450002db00000000820636aac0a8e8bf302115c5 +45000180000000007d0697190A009863459d0cae +450002b0000000003306a0cec0a8bd5ad1e02590 +4500012a0000000097062e500A00f4f89d58fee0 +4500017600000000aa06fbd7c0a8b063a50a61e4 +450000db000000002a0619c1c0a855c80f3e1fc6 +450002a900000000a0067aafc0a8979436560517 +4500027f0000000004064b37e8ab21c30A00468e +450002e8000000007306867e08a9e0ac0A00ddd5 +4500029100000000570649170A008dc666798a1b +450001210000000061066d4ac0a817da0fefd2e5 +45000266000000004006bc6df41f68ac0A00527c +4500006a000000007206170bc0a8a9d816bd86d6 +450000a20000000088067bd1b3b561d50A0053f4 +4500023d00000000480675f4c0a8520b7ed4a77f +450000fe00000000c006cd83c0a8c46126e96731 +450000a50000000085060229c17a683b0A00ca25 +45000352000000001f0666940A00ee7a78f64317 +4500007200000000ab0636340A0054b933dc845d +450002a2000000003506bbb9c0a89fcac584264f +45000088000000008c06ff7bc0a826eaf139065b +4500018700000000af06fb98c0a86ad3e9c1a25e +4500025d0000000044060ca203916bb80A00fc35 +450002cd000000004506d3a3c0a8ad64651cf100 +45000277000000004006336c0791333f0A0011c6 +4500024800000000af061d7312cfb2d80A00394a +4500035f000000002a0607dfc0a852fc77533188 +450002c70000000056061dc9c0a8375c65740be8 +4500012b0000000068064d6cc0a8fc0102b7079f +45000390000000000b06707cc0a8ae78bca78bf9 +4500011d000000008706d1310ac3a1410A00c056 +450003c6000000008106642cc0a80391b5f0cd01 +450003e400000000b70674a23a878aa30A00008c +45000216000000009e060dde0A009f70d25f6cb9 +450002090000000043062459c0a863be40b0ecd9 +450003b30000000076064ecdc0a8ac2c57d04536 +4500022a000000009e0618da0A002ab1deb9d65c +4500032600000000460665cb0A00e322243528b8 +45000375000000008a06d3f08514140d0A0044f8 +45000225000000008c065ce8c0a8b6861899188e +4500007b0000000001062814d2e4e9780A00a716 +450002ae000000004706f57fc0a85a088538207f +4500004400000000a00645040A00f40c74aae127 +4500003900000000ab06d94dc0a887786e7eadcd +45000223000000007006a82e7fdfdacc0A00c553 +450001e0000000007c060750c0a8d75bde165cd0 +45000372000000002606c4b375d3f67b0A00d5da +45000100000000000406253d442daebf0A00e1af +450002e3000000004f06f7e70A000ec30f3b6253 +450002d90000000049062bb3c0a8c30947d87f5d +4500002b0000000091064031c0a88ea56f5c59c9 +4500029600000000300670ca32b944340A00d329 +450002f100000000a40605e1c0a8137987c5f967 +450002cf000000002406bb96c0a84806b5578f19 +450002eb0000000019066bea0A001d6c69a31545 +4500013800000000bb06415f0A00af88947f0d3c +4500025400000000270610340A008477b21bfc3e +450003b700000000500667cec0a8f8dd4be3058c +45000215000000008106ac2f0A004a6c48ee40f7 +45000262000000000a06ccd2c0a8dfddf8b50030 +4500010e00000000ab063195c0a8f4601462e822 +450001420000000029063750c8c7300b0A00288a +450002230000000067062dc8c0a836dcc1ceebb1 +4500006800000000960659f6c0a8290d015fa0cd +4500034b0000000001063c0cc0a88a98d83aee72 +450003e100000000310658af0A00fe8dc1e82e11 +45000236000000007d063b720A0056651c7aa9c6 +450000b6000000000306af58c0a89119493175c9 +450001a1000000000806a0bfc0a8b8e3fdcd55f9 +450001f80000000046063f4fc0a86ccde3b8c542 +45000070000000000d06060d0A0085490b7f221e +4500031100000000300632b544143e360A0016af +45000361000000005a061ef00c75d3530A006b3f +4500006b00000000400615b3c0a8637e92a7000b +450001f9000000007706183cc0a8270e5991019d +450003b7000000005206c482c0a80056ad409efd +4500021c00000000c8062d3d0A00b20868ec1126 +450001bc000000001a06f5fdc0a8ce51e953d946 +45000213000000003e06039dc0a87c6476fcf9af +4500028e000000009b0640aac0a815bdc7f3c57d +450002e5000000002806d9dac0a86df265894723 +4500022d000000001d0602d30A0076fbaf4a2145 +45000102000000009506186b0A002746621fe4da +450002540000000092062d8805d8b3040A00460a +4500022300000000790665f2057bae480A002b8d +4500038c00000000220600bbc0a8c259bb91d0de +450002c7000000007806089dc0a863e0629cd293 +4500023000000000500663560A005233707bb2c6 +450003c6000000009b06c958bb9e023d0A004fd9 +450002960000000027062296c0a82d2c5d534084 +450000a7000000001506c6bbc0a836279c10a714 +450001c8000000006b063b8bc0a8d16056244030 +450000bd000000001b06d9d9c0a8de059a38e604 +450002ea000000004506e424c0a89c0be94bf137 +4500005600000000480653870A000754792a1745 +450001f30000000036064180c0a844cb7de0fb7e +45000291000000002206545b39aa62f50A00ded5 +450000280000000005063ec9c0a8a3d10230d275 +450003420000000054069f25c0a824e638699eb4 +450001a3000000002606167cc0a822564970597b +450001e60000000097068ca50A001dda41df7749 +45000286000000003d0603380A00075ff69d6fdc +450003e6000000000306dd890A00d7344f12fefd +450003bf000000006806de43c0a8733371c3fc93 +450002c9000000000306f49bc0a8a4f50a301ad6 +4500007600000000b20609820A00dffed8b81e21 +450001990000000053065a36c0a8b987b66d512d +450001e3000000008d0631a4c0a8e9a1ecae0f25 +450003e100000000bf06fa3fc0a81f9088b4dd01 +450001ab000000001a065b0cea892c890A0016c5 +450001010000000041067566c0a858f0b08ea932 +45000316000000000f0600848edff3410A00b486 +45000193000000007506ac462a7822390A0075b3 +4500030900000000a8068f7f757d6af20A001500 +4500013800000000ad0659deadae7cdf0A00354d +45000268000000001606b9180A001926c48ccf85 +4500014300000000a0065ff813b397690A002238 +45000296000000006e069eb351b934420A007713 +4500031800000000ba0625fbc0a8ce728d6f0827 +450001100000000005067399c0a86c04c82ad3c4 +450003b8000000002c06568a892b36000A00fe24 +45000122000000006c06a0cc0A0032891fba7a59 +450001b400000000b0062ffb0A000533bb65d352 +450000da000000008406e8c8c0a8e91f75b16303 +450002c70000000078068d7fc0a83aa6a1b376ac +45000387000000008206d6320A00dc74e13981e1 +450002fd0000000056066735c0a8546cf195a4aa +45000109000000006306ca580A003b8a139e50f1 +450003ac000000001e062d2d0A00ac53c623befd +45000371000000003b06405bc0a881b46f4cb94a +45000350000000001d060ffcc0a87d23464d0c84 +450001770000000075067bce956340ae0A008767 +450000dd00000000250665adc0a8234c9eca0ac5 +450003c500000000a40655dd0A00b4f2641307f7 +45000203000000009006af7458ab3ded0A003b33 +45000043000000005c06b761c0a8ada61594f8da +4500025400000000990685ff0A006e6d08c12b27 +4500008f0000000086065dd284ccc5400A0010ca +4500028d000000006306c4b9c0a85fe3eb312f25 +4500007400000000320681cac0a8043f75b70147 +450000d9000000005b066ba99e183d2a0A00b5a5 +4500025b000000008306d3730A00449af12c1c96 +4500014000000000a8066189c0a83f9b905c6f45 +4500013d000000000806a428c0a84a7074c1c1f0 +45000355000000006b06e131c0a895173505d567 +45000122000000002306cbeec0a81186e3c3b7c0 +450001af000000004a06554cc0a8dbaa1cb33d78 +4500028900000000c206537ec0a8aed217eaf349 +450001f3000000009f0623f8c0a857483c879dca +450002a9000000002506e10352780b0b0A00a6e6 +4500020d00000000220678fdd2dd036e0A0019a5 +4500039b0000000006062d65c0a812201e8b70fb +4500027400000000c706ba1cc0a840f3d2dcf4e4 +450000b000000000b406a09ac0a85f6e73da050e +450001f8000000003e063f580A00d8fcebc361b8 +45000395000000005106ac570A0029f9469a8fc4 +450000a10000000082061f77c0a85fabefa9b787 +4500003d000000003b066646c0a8b8a9c3fb5f4a +4500012e000000004b0651f40A005759154ac55f +4500027d000000002b066889c0a889774e819a6e +4500007700000000c0063fc00A00b06e9e7509ac +45000194000000003006657cc260eff00A00332d +450000e6000000005c066ee2c78809df0A00e481 +450000ac000000003706b954c0a87448f55053fc +450001c8000000006e06effc0A00fe30f1555c0a +450001a500000000b9069a57c0a8696f641bfb6a +450002ee000000000806f2f20A00d0bfdb7beb75 +45000249000000000e06f170c0a8d1e13c40e663 +450000f30000000032063fefc0a8b21aa8e59495 +45000238000000004006e7758af47da50A001313 +4500013600000000110675bcc0a83790e8f1f9cf +45000200000000009606a4cec0a85f18af251da4 +4500025d000000008a0641284b48b1030A003c1c +450002090000000096069f79f42238d90A0049a0 +4500004e00000000a306e30e0A0059e0a6bfda0d +450000a6000000004a06e1bc7bbd34310A0059e1 +4500034b00000000ad06693d0A002e729610725f +450002e6000000004f06a303c0a8766f67644e7a +450000b7000000008d06c12a0A00c5e5c910a560 +450000610000000070061bc9c0a876fa4791b6ce +4500023d000000008506ebbcc0a84205037a0538 +4500019d000000004e06fbb6c0a89fc14b7dceda +4500013300000000020682760A00b63d6bef7e9e +450000db000000005a06a9485276d8490A00de31 +4500032e000000007c06667b074452440A0082fb +4500030c00000000b006cd6dc0a8096be4ba2f71 +450001900000000080062d26c0a87ed7ecb58bc0 +450000d3000000007b06256ad19d36ea0A00e1f7 +4500017b000000003706a971c0a866fd94cb70bc +4500032e000000003e065d13c0a89e30ddbb7ceb +450002ea0000000047066dc10A00bc750bcc46c4 +45000363000000002506d8f788442a740A008e99 +4500038f000000004106b608c0a85e94aa286064 +450000db0000000093066494853f0edb0A00b320 +4500011c00000000ac066fcec0a89c2d5a2800c8 +450001100000000005069ebec0a8c58469ba4f7e +450000f000000000ad064155c0a8d42b99a9f630 +450000c800000000790676130A000456fe43c5c0 +450002d90000000026061f68c0a80645ede96ac6 +450001ab000000002f060a800A000e31f15270a2 +450002b800000000bd069817c0a8b056928bb182 +4500035800000000c806b834c0a8d99c7c9f5c95 +45000229000000006b06cb99e7b46aee0A001658 +4500010700000000c70680dd6cb5e6880A008b17 +450001cb000000006406a2dbc0a87fa4d2e9311d +450001e400000000470602cdc0a8012254796d12 +4500001a000000003e06d9200A00284f69e07afd +450002f7000000001f069ba8c0a85537f04ba673 +450003d400000000070637260A00a4b82938d414 +450002d0000000007106795f0A00eaa8e33ce235 +450001a5000000001406b0bfc0a865488d858e00 +450000ff000000008f06c5b719df473a0A001de6 +45000057000000006a06cd74c0a8afc5016dd2a8 +4500004f00000000c606ccf7c0a8561f43bfd091 +450000b8000000003006cb5ec0a83223db7a8b25 +450000ef00000000c106cb57adde504f0A00dcad +450001e9000000008006c20072cc30120A004682 +450000e1000000005a06fbabc0a8815459b2e200 +4500019c000000007206e5fbc0a88906822cd71a +4500009a00000000780696dcc0a8859d1c00250a +45000370000000004b0690450A007d17581e5ecb +450001c4000000002b065d5553532c060A00047d +45000181000000006d06b0770A00f596683ca5f9 +4500031700000000a80665d7c0a837ac799d7126 +45000302000000001006b49ec0a8043b0537ee59 +4500020000000000bf06d346c0a88eb8334a9708 +45000393000000000206f84bc0a8074a729cb49f +45000162000000007f0657a20A00705d46187248 +4500025a00000000b606b72e0f5414820A0036d6 +4500009d000000006e063f78c0a8bcf8f54f4e37 +450003680000000045066b9cc22534300A00d1f9 +450001e2000000008a061066547d64820A00b9d1 +4500003e0000000045063310c0a8bda7369b840e +4500033c000000001a06dd23c0a852f05b2d6c8f +450001c9000000009506a93ec0a84cded5782c7f +450002fe000000007906cb35c0a85cf2d0191544 +450002070000000075064375c0a89676b48f6893 +450002b6000000003c06a3d4c0a8a8ca9d1a2e48 +45000089000000000206ef8cc0a84cbee35a7a83 +4500011300000000760627ae0A00893b065d92ed +450001d9000000009d0662b20A00f9c16e09bf35 +450000e4000000005c069ecec0a8cae067baf340 +45000312000000006306a67ec0a848dfe47063e6 +450001fc00000000ba06d1d9c0a874fe76c0b6f0 +4500024e0000000018062c18ad8bc3630A00b079 +4500020a000000006a068203753b01b70A00cab6 +450001bc000000003a06be714600185e0A00a81e +450002f6000000005e061a3fc0a84ff8d11eee3b +4500034000000000ba062dc4c0a8287af725a5c4 +4500034b000000001906fb61c0a80e6e9adc9385 +450001b500000000890616e6c0a821999954f66c +4500002800000000a006fe5ec0a89b9ac2c97f57 +450003ce000000007d068e767ca3111e0A009a11 +450000860000000071066541c0a832532655b0f9 +45000150000000009106242b0A001c4d98bae78f +45000361000000008b06a1c0cf681e420A006bbd +4500002d0000000067062776c0a80364044a282e +450001cf000000007606b08cc0a8b3407d89de21 +4500025700000000bb069d6274066e790A00f149 +450002c9000000000e06ae74c0a87cd90d737e16 +4500023f000000009f06ca28e89f1f3e0A002f62 +4500033c000000006f0679a4c0a8f767375fd6bb +450003c3000000004506313104877d110A00c3e6 +450002170000000026066c82c0a83783912fed8c +450001720000000053063a43c0a8e587b2a3454b +450002470000000097061d1f0A0065fc051a9e88 +450000d5000000007706e48ec0a8b1f655f4ab8b +450000ad000000007b06aacfc0a8cc1e345ec76b +45000300000000007f06b25c0A00545d63d431d3 +4500028600000000aa065bb0c0a8aa870e43076e +45000016000000000906d5ca0A003f17c0619c38 +450002a500000000aa069641c0a8bfa2edbbb6c4 +45000350000000006106f71b0A00e24b97657ca2 +4500005b000000006906da96c0a8650f9a0f109f +450003e500000000750652d30A007a950f3e7493 +450003b3000000005e06d86a5f0277930A0008e0 +450001a90000000039063cf90A00bde2b6fe84b5 +4500006a000000001706c87ac0a8519d18bd88a0 +45000066000000003d06597f0A007e653829a56d +45000077000000006d060594e07eee020A005902 +450000e800000000b906f7e3c0a802d45c35053e +4500013800000000710674d2c0a893440a203fe1 +450001e600000000a9063400c0a82d042595ae2a +4500031700000000bb06b7dec0a8ebfa44e35806 +4500014800000000ac061843c0a8e59bca080e49 +450000a50000000010069b3fc0a86b0a6257a2e9 +450000d1000000009106f727c0a8e8f719d24831 +45000310000000008706fa53c0a83afe86a8fa52 +45000350000000003a0699e30A00d4dde3cd0dfc +4500035c000000001006db14c0a83c1ed5048ed6 +4500031e000000005906d438876a68ce0A002144 +4500030b00000000b906ad46c0a8e0fdd4a96f17 +450002b3000000001e0659e2c0a8822a1c20bd5e \ No newline at end of file diff --git a/codingquest2024/src/day2/solution.gleam b/codingquest2024/src/day2/solution.gleam new file mode 100644 index 0000000..59f8d29 --- /dev/null +++ b/codingquest2024/src/day2/solution.gleam @@ -0,0 +1,66 @@ +import gleam/bit_array +import gleam/list +import gleam/int +import gleam/io +import gleam/string +import simplifile + +pub type Location { + Internal + Passenger + Other +} + +pub type Packet { + Packet(length: Int, endpoint: Location) +} + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day2/data.txt") + + let #(internal_packets, passenger_packets) = + data + |> string.split("\n") + |> list.map(parse_packet) + |> list.partition(fn(p) { p.endpoint == Internal }) + + { + int.to_string(sum_packet_lengths(internal_packets)) + <> "/" + <> int.to_string(sum_packet_lengths(passenger_packets)) + } + |> io.println() +} + +fn parse_packet(raw_packet: String) { + let assert Ok(<< + _:bytes-size(2), + length:int-size(16), + _:bytes-size(8), + source:bytes-size(4), + destination:bytes-size(4), + >>) = bit_array.base16_decode(raw_packet) + + Packet(length, set_endpoint(source, destination)) +} + +fn set_endpoint(source: BitArray, dest: BitArray) -> Location { + case identify_location(source), identify_location(dest) { + Other, Internal | Internal, Other -> Internal + Other, Passenger | Passenger, Other -> Passenger + _, _ -> Other + } +} + +fn identify_location(ip: BitArray) -> Location { + case ip { + <<192, 168, _, _>> -> Internal + <<10, 0, _, _>> -> Passenger + _ -> Other + } +} + +fn sum_packet_lengths(packets: List(Packet)) -> Int { + use acc, p <- list.fold(packets, 0) + acc + p.length +} -- cgit v1.2.3 From 2a5e033b2d8882f50f2bfe4da25906c57f2a41f0 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Thu, 7 Mar 2024 15:50:04 -0500 Subject: CodingQuest days 3 and 4 in Gleam --- codingquest2024/src/day3/data.txt | 1 + codingquest2024/src/day3/solution.gleam | 50 +++++++++ codingquest2024/src/day4/data.txt | 181 ++++++++++++++++++++++++++++++++ codingquest2024/src/day4/solution.gleam | 49 +++++++++ 4 files changed, 281 insertions(+) create mode 100644 codingquest2024/src/day3/data.txt create mode 100644 codingquest2024/src/day3/solution.gleam create mode 100644 codingquest2024/src/day4/data.txt create mode 100644 codingquest2024/src/day4/solution.gleam diff --git a/codingquest2024/src/day3/data.txt b/codingquest2024/src/day3/data.txt new file mode 100644 index 0000000..ac7d887 --- /dev/null +++ b/codingquest2024/src/day3/data.txt @@ -0,0 +1 @@ +301 3 96 5 5 1 1 1 1 1 1 1 8 1 74 4 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26 9 1 1 37 4 6 1 1 1 1 1 1 1 8 1 26 14 8 1 25 5 4 1 1 1 1 1 1 1 19 6 11 14 9 1 1 1 1 1 1 1 1 1 1 1 14 5 4 1 1 1 1 1 19 9 10 15 7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 8 4 4 1 1 1 1 1 20 3 1 1 1 4 9 7 1 8 7 19 6 5 3 1 1 1 1 1 7 1 1 1 9 3 6 3 8 5 5 6 8 7 1 1 1 1 1 1 1 1 1 2 6 5 3 1 1 2 7 1 1 1 1 1 8 3 6 3 8 5 6 5 8 6 11 2 5 5 4 1 1 1 6 1 1 1 1 3 7 3 6 3 8 5 5 6 9 4 12 1 6 5 3 1 1 1 8 1 1 1 2 2 6 3 6 3 8 5 6 5 8 6 19 4 4 1 1 1 6 1 1 2 2 2 6 3 6 3 6 1 1 5 6 5 8 6 6 1 1 1 10 4 3 1 1 1 8 1 1 1 1 1 1 1 6 3 6 3 8 5 5 6 1 1 7 6 1 1 1 1 1 2 11 5 2 1 1 2 6 1 1 1 1 1 1 1 1 1 5 3 6 3 6 1 1 5 1 1 1 7 2 1 6 8 1 5 11 4 2 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 5 3 6 3 8 15 1 1 8 13 17 1 1 1 1 1 8 1 1 1 10 3 4 3 9 13 2 1 9 5 6 1 19 1 1 1 1 1 20 10 9 11 3 4 6 6 7 1 1 1 15 1 1 1 1 1 1 1 19 9 8 1 1 2 1 2 1 2 1 1 1 1 1 2 10 5 8 1 17 1 1 1 1 1 1 1 20 6 9 1 3 1 1 1 1 1 1 6 1 2 7 5 15 1 11 1 1 1 1 1 1 1 1 1 32 1 1 1 7 1 2 1 1 1 1 1 1 1 7 6 13 2 10 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 36 1 1 1 1 1 1 1 9 6 1 1 1 1 1 1 1 1 1 1 1 3 10 1 1 2 1 1 1 1 1 2 1 2 1 2 1 1 49 9 1 11 12 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 49 12 1 3 1 4 80 1 1 1 2 1 1 2 1 7 1 1 92 1 1 5 1026 2 1 4 9 10 14 3 1 1 1 1 7 1 1 1 10 2 1 2 26 9 7 14 11 11 1 6 8 6 26 10 7 14 12 17 7 1 1 6 24 1 1 4 2 3 6 6 4 6 10 18 7 8 18 1 4 5 4 3 5 5 7 6 9 5 1 1 1 1 1 1 1 1 1 1 10 8 16 1 1 1 1 1 1 1 1 4 4 3 5 5 8 5 9 5 20 7 16 1 2 1 2 1 1 4 6 2 5 5 8 5 10 3 22 7 17 1 1 1 2 4 2 1 3 3 5 5 8 5 9 5 19 2 1 6 19 1 1 4 1 3 4 2 5 6 6 6 9 14 11 1 1 6 20 4 2 3 3 4 5 5 6 6 8 6 1 1 1 7 10 7 20 4 2 4 3 3 6 7 2 1 1 6 8 6 3 1 1 6 9 1 1 6 19 4 1 5 4 3 5 16 9 4 7 7 9 6 19 3 2 6 3 4 7 13 10 1 1 1 10 6 7 7 17 5 1 7 4 3 10 1 1 1 1 6 11 1 11 6 7 1 1 6 16 4 2 7 3 4 14 6 24 5 7 1 1 5 16 4 4 1 2 1 7 2 14 5 24 7 6 1 1 5 16 12 1 1 3 4 12 6 25 6 7 1 1 5 16 14 4 3 12 5 26 7 6 1 1 5 17 13 3 4 11 6 26 6 7 1 1 5 17 13 3 4 10 6 15 1 11 5 8 7 17 2 1 7 1 1 4 1 1 2 9 6 12 7 7 6 8 1 1 6 18 19 9 5 14 6 5 1 1 6 9 1 1 1 1 1 1 1 17 1 1 1 1 16 28 9 1 7 1 1 8 9 20 1 2 1 1 8 1 1 30 15 1 1 9 1 1 3 1 2 68 1 1 6 1 1 91 1 2 1 1 1 1 1 233 4 4 4 88 5 3 4 88 4 4 4 85 2 2 2 93 3 10 4 82 4 4 2 4 4 14 2 65 5 3 4 2 5 13 3 58 12 3 11 12 5 32 11 12 13 4 11 12 9 16 26 6 14 7 10 13 14 2 35 2 13 15 5 15 60 20 3 18 36 7 15 46 21 21 8 56 5 34 1 21 \ No newline at end of file diff --git a/codingquest2024/src/day3/solution.gleam b/codingquest2024/src/day3/solution.gleam new file mode 100644 index 0000000..6314060 --- /dev/null +++ b/codingquest2024/src/day3/solution.gleam @@ -0,0 +1,50 @@ +import gleam/bit_array +import gleam/int +import gleam/io +import gleam/string +import gleam/string_builder.{type StringBuilder} +import simplifile + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day3/data.txt") + + data + |> string.split(" ") + |> build_flat_image(" ", string_builder.new()) + |> bit_array.from_string() + |> print_next_slice() +} + +fn build_flat_image( + nums: List(String), + pixel: String, + acc: StringBuilder, +) -> String { + case nums { + [] -> string_builder.to_string(acc) + [h, ..t] -> { + let assert Ok(n) = int.parse(h) + let pixels = string.repeat(pixel, n) + build_flat_image(t, next_pixel(pixel), string_builder.append(acc, pixels)) + } + } +} + +fn print_next_slice(str: BitArray) -> Nil { + case str { + <> -> { + let assert Ok(out) = bit_array.to_string(slice) + io.println(out) + print_next_slice(rest) + } + _ -> Nil + } +} + +fn next_pixel(p: String) -> String { + case p { + " " -> "#" + "#" -> " " + _ -> panic + } +} diff --git a/codingquest2024/src/day4/data.txt b/codingquest2024/src/day4/data.txt new file mode 100644 index 0000000..4b9a60e --- /dev/null +++ b/codingquest2024/src/day4/data.txt @@ -0,0 +1,181 @@ +System Dist X Y Z +Proxima Centauri 4.247 2.945 -3.056 -0.143 +Barnard's star 5.963 4.958 2.980 1.449 +Luhman 16 A 6.503 1.697 -6.249 0.600 +WISE J085510.83-071442.5 7.532 -3.967 -5.664 2.985 +Wolf 359 7.856 -1.916 -3.938 6.522 +Lalande 21185 8.305 -3.439 -0.308 7.553 +Sirius A 8.659 -5.809 -6.280 -1.338 +Luyten 726-8 A 8.817 -2.171 0.171 -8.544 +Ross 154 9.706 9.365 1.873 -1.733 +Ross 248 10.306 -3.370 9.265 -3.003 +Epsilon Eridani 10.502 -6.753 -1.917 -7.811 +Lacaille 9352 10.724 4.352 0.388 -9.794 +Ross 128 11.008 0.014 -5.577 9.490 +EZ Aquarii A 11.109 4.123 4.432 -9.315 +61 Cygni A 11.404 1.516 11.244 -1.156 +Procyon A 11.437 -9.270 -6.183 2.577 +HD 173739 11.491 0.130 10.478 4.716 +Groombridge 34 A 11.619 -4.949 9.849 -3.677 +DX Cancri 11.680 -9.428 -2.885 6.262 +Epsilon Indi A 11.867 7.259 -3.203 -8.825 +Tau Ceti 11.906 -3.369 0.408 -11.412 +Luyten 372-58 11.984 -2.249 -6.869 -9.559 +YZ Ceti 12.122 -2.040 1.192 -11.890 +Luyten's star 12.349 -10.262 -6.499 2.224 +Teegarden's star 12.497 -9.391 3.369 -7.526 +Kapteyn's star 12.831 -3.460 -9.787 -7.542 +Lacaille 8760 12.947 9.252 0.631 -9.036 +DENIS J184504.9-635747 A 13.064 10.530 -5.713 -5.211 +Kruger 60 A 13.078 -3.316 12.651 -0.001 +DENIS J104814.7-395606 13.193 1.904 -12.468 3.872 +Ross 614 A 13.424 -11.202 -7.255 -1.447 +WISEP J072227.27-054029.9 13.433 -10.027 -8.883 1.000 +Wolf 1061 14.050 12.845 0.752 5.643 +van Maanen's Star 14.072 -3.996 6.424 -11.865 +Wolf 424 A 14.112 1.448 -4.264 13.375 +HD 225213 14.175 3.311 -0.977 -13.748 +2MASS J04292568+3806095 14.355 -13.630 4.128 -1.799 +TZ Arietis 14.578 -8.480 5.369 -10.573 +BD+68 946 14.840 -1.883 12.448 7.856 +CD-46 11540 14.849 14.102 -4.310 -1.752 +LHS 292 14.871 -1.749 -11.036 9.813 +Luyten 145-141 15.123 6.625 -13.574 -0.753 +V1581 Cygni A 15.203 2.905 14.752 2.250 +Ross 780 15.239 4.743 6.071 -13.148 +Luyten 143-23 15.759 4.928 -14.958 -0.555 +2MASS J23400761+4625080 15.794 -5.307 14.325 -4.008 +LHS 2 15.806 -0.258 5.986 -14.627 +DENIS J025503.3-470049 15.877 -1.350 -8.144 -13.563 +Groombridge 1618 15.886 -9.453 2.380 12.543 +Lalande 21258 A 15.997 -7.099 1.444 14.263 +WISE J163940.83-684738.6 16.123 12.167 -9.781 -4.032 +AD Leonis 16.194 -7.549 -5.577 13.197 +HD 204961 16.201 10.984 -2.101 -11.722 +CD-44 11909 16.333 15.741 -3.929 -1.887 +Omicron2 Eridani A 16.340 -12.033 -4.560 -10.071 +EV Lacertae 16.476 -2.954 15.775 -3.726 +70 Ophiuchi A 16.707 14.200 8.163 3.293 +Altair 16.731 11.115 12.234 -2.591 +EI Cancri A 16.800 -11.979 -6.249 9.985 +WISE J150649.97+702736.1 16.818 -3.879 11.755 11.385 +G 99-49 16.986 -15.208 -6.951 -2.991 +DENIS J081730.0-615520 17.002 1.737 -16.376 -4.228 +LHS 2459 17.137 -8.104 10.814 10.538 +WISEA J154045.67-510139.3 17.374 14.713 -9.182 1.032 +WISEA J093935.93-244838.9 17.414 -3.694 -15.891 6.089 +LHS 1723 17.531 -13.929 -6.923 -8.087 +Wolf 498 17.727 5.298 -0.785 16.898 +Stein 2051 A 17.992 -15.151 9.430 2.290 +WISEP J111448.80-261828.2 18.201 1.992 -15.352 9.573 +Wolf 294 18.215 -17.560 -0.901 4.756 +LP 816-60 18.331 13.106 7.617 -10.308 +2MASS J23402010+4631110 18.334 -6.182 16.629 -4.626 +2MASS J04163296+3100022 18.500 -17.453 4.188 -4.483 +WISE J174124.25+255319.6 18.532 10.672 12.769 8.154 +WISEA J183537.82+325945.4 18.554 8.406 15.577 5.562 +Wolf 1453 18.605 -15.640 -7.947 -6.194 +WISE J041521.21-093500.6 18.617 -13.334 -5.644 -11.701 +HD 42581 A 18.791 -11.786 -13.374 -5.944 +Sigma Draconis 18.800 -3.419 17.107 7.005 +Ross 47 18.889 -18.114 -4.418 -3.024 +Lalande 27173 A 19.199 15.009 -5.990 10.366 +Luyten 205-128 19.208 16.899 -7.771 -4.794 +Luyten 347-14 19.273 17.464 -2.343 -7.809 +Lalande 46650 19.275 -0.655 10.511 -16.143 +Wolf 1055 A 19.293 14.658 12.495 -1.105 +CD-40 9712 19.300 16.764 -8.662 4.055 +WISE J035000.32-565830.2 19.318 -0.230 -13.254 -14.052 +Eta Cassiopeiae A 19.328 -10.379 16.216 -1.703 +Luyten 722-22 A 19.374 0.490 4.595 -18.815 +36 Ophiuchi A 19.414 19.266 -0.579 2.325 +WISEP J154151.66-225025.2 19.525 17.174 -4.108 8.331 +Ross 882 19.533 -15.397 -11.128 4.546 +HD 191408 A 19.610 16.752 1.534 -10.078 +82 Eridani 19.705 -3.626 -10.382 -16.351 +Ross 986 A 19.742 -18.559 0.339 6.721 +Delta Pavonis 19.894 14.509 -8.456 -10.664 +WISEP J013657.45+093347.0 19.955 -9.644 7.749 -15.657 +WISEP J093735.61+293127.7 19.973 -12.825 -4.129 14.745 +HD 191849 20.107 16.798 -1.527 -10.943 +LHS 455 20.259 -3.453 17.077 10.339 +Wolf 1481 20.395 13.836 -5.472 13.950 +EQ Pegasi A 20.428 -2.363 15.667 -12.895 +Wolf 562 20.550 15.654 -1.624 13.214 +HD 79210 A 20.658 -14.668 3.948 14.001 +LHS 2090 20.739 -14.853 -7.021 12.657 +HD 155876 A 20.865 5.404 15.999 12.254 +WISEP J150319.70+252525.4 20.938 8.222 6.238 18.218 +LP 944-20 20.962 -6.865 -10.440 -16.831 +LHS 32 21.011 -17.584 -10.242 -5.230 +WISE J140518.39+553421.3 21.042 -2.438 10.695 17.957 +GL Virginis 21.084 0.658 -6.386 20.082 +WISE J220905.73+271143.9 21.123 2.051 19.317 -8.297 +G 202-48 21.131 1.833 15.400 14.354 +2MASS J00124716+5215456 21.138 -9.427 18.549 -3.728 +Wolf 630 A 21.184 19.392 3.785 7.640 +Luyten 100-115 21.213 6.159 -19.816 -4.399 +WISE J041022.71+150248.4 21.260 -19.109 0.684 -9.293 +WISE J031325.94+780744.3 21.318 -13.116 15.566 6.335 +HD 219134 21.337 -7.251 20.032 -1.191 +Luyten 471-42 21.733 9.959 -17.100 8.986 +DENIS J072003.2-084650 A 21.919 -15.752 -15.217 0.875 +Ksi Bootis A 22.006 9.704 4.136 19.313 +Ross 104 22.009 -7.637 -5.635 19.857 +Ross 619 22.080 -16.964 -11.497 8.219 +Ross 775 A 22.113 7.070 18.976 -8.885 +LHS 6158 A 22.192 -14.354 -12.127 11.807 +WISEP J192841.35+235604.9 22.278 11.675 18.936 1.188 +ULAS J025409.58+022358.7 22.325 -14.758 1.854 -16.648 +BD-17 588 A 22.387 -11.090 -4.143 -19.001 +CWISE J105512.11+544328.3 22.494 -11.366 5.941 18.480 +Ross 671 22.398 0.902 17.581 -13.848 +Wolf 358 22.723 -5.976 -11.615 18.594 +Ross 446 22.954 -6.760 -14.156 16.757 +HD 199305 22.960 -3.413 22.272 4.417 +2MASS J21462206+3813047 22.986 0.977 22.495 -4.627 +LHS 3003 23.003 18.392 -9.014 10.471 +WISE J052126.29+102528.4 23.099 -21.794 -4.961 -5.831 +WISEP J000517.48+373720.5 23.157 -8.216 19.432 -9.548 +Luyten 230-188 23.182 -1.988 -16.246 -16.418 +LHS 546 23.408 1.405 11.884 -20.118 +WISE J082507.35+280548.5 23.462 -19.247 -5.219 12.360 +HD 16160 A 23.555 -15.223 4.538 -17.392 +WISE J205628.91+145953.2 23.580 10.459 19.667 -7.737 +V488 Hydrae 23.581 -13.398 -17.868 7.569 +Luyten 788-34 23.596 10.387 8.907 -19.224 +HD 156384 A 23.632 23.386 -3.352 0.587 +WISEP J060738.65+242953.4 23.624 -23.467 -2.594 0.834 +WISE J173835.53+273259.0 23.937 13.208 16.691 10.951 +2MASS J04292844+3001563 24.088 -23.085 4.408 -5.278 +WISEP J004945.61+215120.0 24.136 -9.763 15.373 -15.839 +WISEA J150747.56-162749.3 24.170 18.976 -5.400 13.961 +Wolf 25 24.251 -6.795 11.083 -20.472 +Wolf 922 24.325 13.604 12.791 -15.590 +Beta Hydri 24.328 10.662 -15.357 -15.567 +WISE J200050.19+362950.1 24.505 7.274 23.358 1.418 +CWISE J061741.79+194512.8 A 24.524 -24.012 -4.925 0.766 +G 203-47 A 24.785 7.210 18.632 14.667 +WISEA J235402.79+024014.1 24.974 -1.366 13.480 -20.980 +Fomalhaut A 25.126 9.981 3.729 -22.755 +G 141-36 24.845 19.139 15.738 1.817 +Ross 490 24.879 7.252 -3.658 23.516 +LHS 3376 24.926 -2.321 21.906 11.664 +107 Piscium 24.932 -14.170 12.372 -16.362 +Luyten 499-56 25.009 14.891 1.681 -20.022 +Mu Cassiopeiae A 25.034 -14.355 20.221 -3.429 +Vega 25.045 9.069 21.839 8.252 +Ross 556 25.052 -19.129 9.879 -12.809 +AN Sextantis 25.137 -7.899 -17.330 16.406 +HD 157881 25.158 21.471 9.902 8.594 +SIPS J1259-4336 25.200 13.441 -19.632 8.305 +LP 881-64 A 25.222 2.230 1.356 -25.087 +G 192-13 25.225 -21.673 10.540 7.449 +HD 165222 25.241 22.625 10.491 3.894 +G 109-35 25.287 -23.858 -7.025 4.565 +G 227-22 25.421 -1.444 22.069 12.533 +WISEP J180026.60+013453.1 25.471 21.895 11.875 5.321 +G 202-45 A 25.586 4.699 17.781 17.787 +CD-68 47 A 25.702 8.366 -14.413 -19.568 +2MASS J07290002-3954043 25.824 -7.589 -24.237 -4.677 +G 154-44 25.999 25.236 6.179 0.974 \ No newline at end of file diff --git a/codingquest2024/src/day4/solution.gleam b/codingquest2024/src/day4/solution.gleam new file mode 100644 index 0000000..a03b2be --- /dev/null +++ b/codingquest2024/src/day4/solution.gleam @@ -0,0 +1,49 @@ +import gleam/float +import gleam/io +import gleam/list +import gleam/regex +import gleam/result +import gleam/string +import simplifile + +pub type Star { + Star(name: String, x: Float, y: Float, z: Float) +} + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day4/data.txt") + + let assert [_, ..stars] = string.split(data, "\n") + + stars + |> list.map(parse_star_record) + |> list.combination_pairs() + |> list.map(star_distance) + |> list.reduce(float.min) + |> io.debug +} + +fn parse_star_record(str: String) -> Star { + let assert Ok(re) = regex.from_string("\\s{2,}") + + let assert [name, ..coords] = regex.split(with: re, content: str) + let assert [_, x, y, z] = + coords + |> list.map(float.parse) + |> result.values + + Star(name, x, y, z) +} + +fn star_distance(stars: #(Star, Star)) -> Float { + let #(star1, star2) = stars + let assert Ok(dist) = + float.square_root( + sq(star1.x -. star2.x) +. sq(star1.y -. star2.y) +. sq(star1.z -. star2.z), + ) + dist +} + +fn sq(x: Float) -> Float { + x *. x +} -- cgit v1.2.3 From 0e5611f2ef28ff0725cdd726d4c0a10c2ca9fa3a Mon Sep 17 00:00:00 2001 From: "H.J" Date: Fri, 8 Mar 2024 12:13:34 -0500 Subject: Codingquest day 5 in Gleam --- codingquest2024/src/day5/data.txt | 37 ++++++++++++++++++ codingquest2024/src/day5/solution.gleam | 67 +++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 codingquest2024/src/day5/data.txt create mode 100644 codingquest2024/src/day5/solution.gleam diff --git a/codingquest2024/src/day5/data.txt b/codingquest2024/src/day5/data.txt new file mode 100644 index 0000000..9a954b1 --- /dev/null +++ b/codingquest2024/src/day5/data.txt @@ -0,0 +1,37 @@ + base cg96 hx27 ik04 qx43 dc94 ap98 ux20 li84 rt50 el82 rd48 sf80 mg52 rc82 eu85 hr27 bi41 sh80 af18 vp88 km46 em44 pd69 ts86 +base 0 30638 48992 35639 74968 48045 6341 90127 47393 71441 19111 80113 80629 56954 81776 30862 30878 21854 77873 34270 86306 42311 15532 71522 79586 +cg96 30638 0 72821 29603 89651 17412 36569 100420 36168 79354 25142 62592 66534 41290 63249 57094 48704 8784 66650 8582 86685 42076 27940 52718 85170 +hx27 48992 72821 0 54515 34839 88023 43405 53755 62684 44187 48043 90438 85542 72549 93258 18509 25262 65340 79206 79456 66739 47748 44881 86136 53441 +ik04 35639 29603 54515 0 62700 38191 37769 71535 11907 50269 16570 44931 44989 22141 46865 44622 29623 28109 42498 38186 57377 12646 20780 37109 55645 +qx43 74968 89651 34839 62700 0 100846 70926 19095 64882 19976 65515 81427 73635 71560 84552 49712 44223 84464 66126 97774 40896 50837 64609 81039 25903 +dc94 48045 17412 88023 38191 100846 0 53925 109266 39656 87944 40040 57202 63371 40295 57004 73374 63104 26191 65469 17136 91082 50527 43684 47297 92341 +ap98 6341 36569 43405 37769 70926 53925 0 86798 49674 68892 21378 82673 82483 59670 84517 25041 27490 27800 79193 40546 85080 42672 16989 74486 77382 +ux20 90127 100420 53755 71535 19095 109266 86798 0 70601 21322 77982 79293 70326 74908 82378 67504 59364 96475 62788 108879 31128 58919 78000 81261 19223 +li84 47393 36168 62684 11907 64882 39656 49674 70601 0 49450 28416 33031 33361 10569 35013 55008 38971 37093 31581 44413 51620 15309 32686 25491 52956 +rt50 71441 79354 44187 50269 19976 87944 68892 21322 49450 0 57683 61913 53835 54424 65044 53222 41615 75794 46283 87860 23000 37634 58207 62319 9390 +el82 19111 25142 48043 16570 65515 40040 21378 77982 28416 57683 0 61342 61543 38297 63150 33772 23565 18965 58787 32642 69545 24118 4711 53111 64814 +rd48 80113 62592 90438 44931 81427 57202 82673 79293 33031 61913 61342 0 9678 23176 3130 86267 69538 66544 16684 69212 50346 44242 65695 10005 60148 +sf80 80629 66534 85542 44989 73635 63371 82483 70326 33361 53835 61543 9678 0 25343 12471 83231 66388 69377 7597 73797 40862 41575 65571 16923 51317 +mg52 56954 41290 72549 22141 71560 40295 59670 74908 10569 54424 38297 23176 25343 0 24857 65525 49341 44089 25635 48803 52073 24802 42743 14978 56289 +rc82 81776 63249 93258 46865 84552 57004 84517 82378 35013 65044 63150 3130 12471 24857 0 88758 72080 67560 19692 69606 53292 46776 67570 10597 63246 +eu85 30862 57094 18509 44622 49712 73374 25041 67504 55008 53222 33772 86267 83231 65525 88758 0 16843 48998 78001 62939 73562 42033 29734 80190 62528 +hr27 30878 48704 25262 29623 44223 63104 27490 59364 38971 41615 23565 69538 66388 49341 72080 16843 0 42021 61213 56009 59502 25305 21319 63773 50379 +bi41 21854 8784 65340 28109 84464 26191 27800 96475 37093 75794 18965 66544 69377 44089 67560 48998 42021 0 68546 14120 85334 39674 20747 56964 82328 +sh80 77873 66650 79206 42498 66126 65469 79193 62788 31581 46283 58787 16684 7597 25635 19692 78001 61213 68546 0 74364 33695 37154 62514 21598 43742 +af18 34270 8582 79456 38186 97774 17136 40546 108879 44413 87860 32642 69212 73797 48803 69606 62939 56009 14120 74364 0 95209 50649 34816 59231 93742 +vp88 86306 86685 66739 57377 40896 91082 85080 31128 51620 23000 69545 50346 40862 52073 53292 73562 59502 85334 33695 95209 0 45829 71442 54312 15000 +km46 42311 42076 47748 12646 50837 50527 42672 58919 15309 37634 24118 44242 41575 24802 46776 42033 25305 39674 37154 50649 45829 0 26815 38684 43094 +em44 15532 27940 44881 20780 64609 43684 16989 78000 32686 58207 4711 65695 65571 42743 67570 29734 21319 20747 62514 34816 71442 26815 0 57619 65780 +pd69 71522 52718 86136 37109 81039 47297 74486 81261 25491 62319 53111 10005 16923 14978 10597 80190 63773 56964 21598 59231 54312 38684 57619 0 62060 +ts86 79586 85170 53441 55645 25903 92341 77382 19223 52956 9390 64814 60148 51317 56289 63246 62528 50379 82328 43742 93742 15000 43094 65780 62060 0 + +Rover 1 route: base -> km46 -> rd48 -> ts86 -> km46 -> base -> dc94 -> sh80 -> ux20 -> cg96 -> hr27 -> bi41 -> ap98 -> ux20 -> ik04 -> sf80 -> ik04 -> ik04 -> rd48 -> base +Rover 2 route: base -> em44 -> km46 -> pd69 -> rt50 -> vp88 -> sf80 -> vp88 -> base -> cg96 -> rc82 -> mg52 -> bi41 -> hr27 -> base +Rover 3 route: base -> base -> li84 -> km46 -> ts86 -> base -> sh80 -> pd69 -> em44 -> sh80 -> af18 -> base +Rover 4 route: base -> ts86 -> ts86 -> af18 -> base -> ap98 -> rc82 -> bi41 -> bi41 -> qx43 -> em44 -> em44 -> el82 -> base +Rover 5 route: base -> dc94 -> hx27 -> rt50 -> vp88 -> pd69 -> af18 -> sf80 -> base +Rover 6 route: base -> hx27 -> eu85 -> em44 -> dc94 -> ux20 -> vp88 -> ik04 -> ux20 -> li84 -> mg52 -> base +Rover 7 route: base -> ap98 -> ts86 -> ts86 -> em44 -> rt50 -> rt50 -> qx43 -> sh80 -> ap98 -> ux20 -> el82 -> rt50 -> km46 -> base +Rover 8 route: base -> pd69 -> ap98 -> ik04 -> el82 -> sf80 -> ux20 -> vp88 -> dc94 -> pd69 -> ik04 -> li84 -> ts86 -> base +Rover 9 route: base -> sh80 -> km46 -> ts86 -> base -> sf80 -> eu85 -> ap98 -> sh80 -> qx43 -> rt50 -> bi41 -> ux20 -> bi41 -> dc94 -> pd69 -> vp88 -> li84 -> ik04 -> base +Rover 10 route: base -> ts86 -> sh80 -> em44 -> em44 -> af18 -> base -> eu85 -> ik04 -> af18 -> sh80 -> sf80 -> dc94 -> ap98 -> cg96 -> dc94 -> qx43 -> sh80 -> rd48 -> rc82 -> base \ No newline at end of file diff --git a/codingquest2024/src/day5/solution.gleam b/codingquest2024/src/day5/solution.gleam new file mode 100644 index 0000000..6c10693 --- /dev/null +++ b/codingquest2024/src/day5/solution.gleam @@ -0,0 +1,67 @@ +import gleam/dict.{type Dict} +import gleam/io +import gleam/int +import gleam/list +import gleam/regex +import gleam/result +import gleam/string +import simplifile + +type Atlas = + Dict(String, Dict(String, Int)) + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day5/data.txt") + + let assert [table, routes] = string.split(data, "\n\n") + let assert [header, ..rows] = string.split(table, "\n") + + let dests = + header + |> string.trim() + |> split_on_many_spaces + + let atlas = build_atlas(rows, dests) + + routes + |> string.split("\n") + |> list.fold(0, fn(acc, route) { acc + find_total_distance(route, atlas) }) + |> io.debug +} + +fn split_on_many_spaces(str) { + let assert Ok(re_spaces) = regex.from_string("\\s+") + regex.split(re_spaces, str) +} + +fn build_atlas(rows, dests) { + rows + |> list.map(split_on_many_spaces) + |> list.fold(dict.new(), fn(acc, row) { + let assert [from, ..raw_dists] = row + let assert Ok(dists) = list.try_map(raw_dists, int.parse) + let to_dict = + dests + |> list.zip(dists) + |> dict.from_list() + + dict.insert(acc, from, to_dict) + }) +} + +fn dist_between(leg: #(String, String), dict: Atlas) -> Int { + let assert Ok(dist) = + dict + |> dict.get(leg.0) + |> result.try(dict.get(_, leg.1)) + + dist +} + +fn find_total_distance(row: String, atlas: Atlas) { + let assert [_, route] = string.split(row, ": ") + + string.split(route, " -> ") + |> list.window_by_2 + |> list.fold(0, fn(acc, leg) { acc + dist_between(leg, atlas) }) +} -- cgit v1.2.3 From 10a4ac23989f720d54c628771cf072eeb159da63 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Fri, 8 Mar 2024 12:14:35 -0500 Subject: removing data files --- codingquest2024/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/codingquest2024/.gitignore b/codingquest2024/.gitignore index 599be4e..6fdd6db 100644 --- a/codingquest2024/.gitignore +++ b/codingquest2024/.gitignore @@ -2,3 +2,4 @@ *.ez /build erl_crash.dump +data.txt -- cgit v1.2.3 From e1bf5bffe567324f66baef64d885afe11624ec17 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Fri, 8 Mar 2024 12:15:34 -0500 Subject: fixing gitignore --- codingquest2024/src/day1/data.txt | 5047 ------------------------------------- codingquest2024/src/day2/data.txt | 1000 -------- codingquest2024/src/day3/data.txt | 1 - codingquest2024/src/day4/data.txt | 181 -- codingquest2024/src/day5/data.txt | 37 - 5 files changed, 6266 deletions(-) delete mode 100644 codingquest2024/src/day1/data.txt delete mode 100644 codingquest2024/src/day2/data.txt delete mode 100644 codingquest2024/src/day3/data.txt delete mode 100644 codingquest2024/src/day4/data.txt delete mode 100644 codingquest2024/src/day5/data.txt diff --git a/codingquest2024/src/day1/data.txt b/codingquest2024/src/day1/data.txt deleted file mode 100644 index 931665e..0000000 --- a/codingquest2024/src/day1/data.txt +++ /dev/null @@ -1,5047 +0,0 @@ -SolarSkies: Rebate 9997 -CelestialFlyer: Discount 2886 -RyanSpace: Luggage 3500 -NovaWings: Tax 156 -RyanSpace: Fee 9468 -NeptuneExpress: Fee 9378 -SpaceZ: Discount 3103 -CelestialFlyer: Rebate 9678 -AstroWings: Discount 7582 -SpaceZ: Tax 7474 -CathayGalactic: Tax 6941 -MartianSpacelines: Tax 3294 -RyanSpace: Tax 6910 -CosmoAir: Luggage 6750 -OrionAir: Discount 2154 -NeptuneExpress: Tax 9047 -AuroraSpace: Fee 9346 -StellarJet: Fee 5958 -NeptuneExpress: Rebate 7392 -CosmoAir: Tax 8149 -MartianSpacelines: Fee 1641 -CometAir: Discount 9606 -OrionAir: Fee 7859 -LunaLine: Fee 1892 -SolarSkies: Fee 7166 -QantasSpace: Discount 2150 -StarCruiser: Rebate 2339 -MartianSpacelines: Discount 2704 -NebulaAir: Tax 4507 -QantasSpace: Rebate 2671 -SolarSkies: Tax 9451 -NebulaAir: Tax 1153 -SolarSkies: Tax 9424 -CometAir: Tax 7617 -StellarJet: Tax 5874 -CathayGalactic: Fee 2666 -LunaLine: Rebate 6078 -LunaLine: Fee 8442 -CelestialFlyer: Tax 7141 -StarCruiser: Rebate 944 -GalaxyExpress: Tax 2480 -NeptuneExpress: Rebate 9776 -NebulaAir: Tax 8361 -SolarSkies: Tax 1666 -Voyager: Discount 3420 -CometAir: Rebate 4784 -NebulaAir: Discount 2337 -AstroWings: Rebate 5908 -CosmoAir: Rebate 1346 -Voyager: Fee 5789 -RyanSpace: Fee 6814 -SolarSkies: Discount 7387 -StarCruiser: Fee 5395 -AuroraSpace: Discount 3771 -NeptuneExpress: Tax 8119 -MartianSpacelines: Rebate 6878 -StellarJet: Rebate 3396 -CometAir: Discount 8390 -OrionAir: Discount 7496 -QantasSpace: Fee 415 -CometAir: Fee 7246 -OrionAir: Seat 330000 -CosmoAir: Rebate 8945 -NeptuneExpress: Tax 4425 -SolarSkies: Fee 4561 -NeptuneExpress: Fee 1034 -NeptuneExpress: Discount 2160 -StellarJet: Rebate 521 -StarCruiser: Tax 9389 -StellarJet: Discount 7730 -LunaLine: Fee 6105 -OrionAir: Discount 6706 -CosmoAir: Fee 918 -GalaxyExpress: Tax 3279 -StellarJet: Tax 9353 -Voyager: Discount 1764 -NeptuneExpress: Fee 552 -StellarJet: Fee 2183 -CometAir: Tax 6984 -NovaWings: Fee 7862 -StarCruiser: Discount 8809 -CathayGalactic: Fee 9149 -StarCruiser: Discount 3536 -NeptuneExpress: Rebate 8315 -StarCruiser: Fee 4390 -StarCruiser: Fee 9073 -LunaLine: Fee 5651 -OrionAir: Discount 8270 -OrionAir: Rebate 9083 -SpaceZ: Tax 5132 -CathayGalactic: Rebate 3976 -OrionAir: Rebate 3611 -NovaWings: Discount 446 -AstroWings: Fee 6568 -NebulaAir: Fee 8959 -StellarJet: Tax 4655 -NebulaAir: Discount 9260 -StellarJet: Rebate 5091 -AstroWings: Meals 1400 -OrionAir: Rebate 7354 -StellarJet: Fee 1608 -StellarJet: Discount 491 -StellarJet: Rebate 9075 -NeptuneExpress: Fee 5176 -AuroraSpace: Rebate 9343 -MartianSpacelines: Tax 1009 -QantasSpace: Rebate 5023 -NeptuneExpress: Discount 1107 -AuroraSpace: Rebate 326 -SpaceZ: Rebate 6305 -CosmoAir: Tax 9408 -StellarJet: Fee 2829 -OrionAir: Rebate 5076 -NovaWings: Discount 8287 -CelestialFlyer: Rebate 3844 -SolarSkies: Fee 7808 -RyanSpace: Fee 7246 -AuroraSpace: Fee 6287 -AuroraSpace: Rebate 8984 -CometAir: Tax 576 -GalaxyExpress: Tax 2692 -CometAir: Discount 8439 -RyanSpace: Fee 4534 -LunaLine: Rebate 6082 -StellarJet: Tax 5003 -AstroWings: Fee 7470 -StarCruiser: Discount 451 -CelestialFlyer: Fee 9048 -CosmoAir: Fee 9590 -RyanSpace: Tax 7007 -LunaLine: Fee 8844 -NovaWings: Fee 9008 -NebulaAir: Fee 6555 -OrionAir: Tax 8867 -CosmoAir: Discount 6056 -CosmoAir: Fee 1389 -AuroraSpace: Rebate 5374 -CelestialFlyer: Rebate 5044 -OrionAir: Rebate 7225 -CelestialFlyer: Discount 4238 -QantasSpace: Fee 6751 -MartianSpacelines: Discount 5026 -Voyager: Tax 9159 -CosmoAir: Discount 2938 -CelestialFlyer: Tax 7042 -OrionAir: Tax 9888 -CathayGalactic: Fee 3237 -GalaxyExpress: Rebate 3972 -AuroraSpace: Fee 8480 -NebulaAir: Discount 1317 -LunaLine: Discount 3822 -RyanSpace: Rebate 7604 -QantasSpace: Tax 1241 -MartianSpacelines: Fee 4292 -StellarJet: Rebate 728 -OrionAir: Discount 6960 -CosmoAir: Rebate 3314 -AuroraSpace: Discount 1742 -StellarJet: Discount 3889 -RyanSpace: Tax 7470 -Voyager: Rebate 9626 -NebulaAir: Tax 6978 -RyanSpace: Discount 184 -LunaLine: Tax 1309 -CelestialFlyer: Discount 425 -QantasSpace: Fee 5365 -SolarSkies: Tax 5557 -SpaceZ: Fee 7033 -SpaceZ: Rebate 3584 -GalaxyExpress: Fee 1702 -QantasSpace: Fee 8256 -CelestialFlyer: Rebate 7995 -AuroraSpace: Fee 3745 -CelestialFlyer: Tax 7220 -NeptuneExpress: Rebate 3170 -AstroWings: Fee 6303 -NeptuneExpress: Rebate 6724 -NovaWings: Fee 6283 -SpaceZ: Tax 9996 -OrionAir: Tax 4517 -LunaLine: Rebate 9269 -GalaxyExpress: Tax 7745 -SpaceZ: Tax 1323 -CometAir: Discount 2694 -CathayGalactic: Rebate 2090 -StarCruiser: Discount 6273 -AstroWings: Tax 2123 -CelestialFlyer: Rebate 6894 -CelestialFlyer: Tax 2195 -LunaLine: Tax 412 -LunaLine: Fee 4853 -AuroraSpace: Discount 1072 -NovaWings: Tax 2677 -QantasSpace: Rebate 7693 -QantasSpace: Discount 6364 -NebulaAir: Fee 7863 -CometAir: Discount 6407 -QantasSpace: Discount 1211 -CosmoAir: Tax 3729 -AstroWings: Fee 6036 -LunaLine: Discount 461 -RyanSpace: Fee 6973 -StarCruiser: Rebate 2176 -NeptuneExpress: Rebate 2543 -MartianSpacelines: Tax 2877 -MartianSpacelines: Discount 2346 -Voyager: Discount 7822 -CelestialFlyer: Tax 7194 -CosmoAir: Tax 5486 -OrionAir: Tax 5874 -QantasSpace: Discount 9892 -NovaWings: Tax 1576 -SpaceZ: Fee 5160 -CometAir: Rebate 1917 -StellarJet: Rebate 1695 -SolarSkies: Fee 3677 -RyanSpace: Discount 8734 -GalaxyExpress: Fee 6164 -NovaWings: Rebate 3736 -CelestialFlyer: Discount 7293 -NeptuneExpress: Fee 5721 -AuroraSpace: Rebate 4749 -NovaWings: Rebate 5803 -StarCruiser: Tax 8840 -NovaWings: Fee 1362 -LunaLine: Discount 1177 -SolarSkies: Rebate 4403 -AstroWings: Fee 6844 -SpaceZ: Rebate 5312 -AuroraSpace: Fee 6605 -GalaxyExpress: Luggage 11250 -Voyager: Discount 1167 -CathayGalactic: Tax 9415 -Voyager: Rebate 9547 -SolarSkies: Rebate 715 -CometAir: Discount 5327 -CathayGalactic: Discount 221 -CathayGalactic: Fee 5050 -GalaxyExpress: Fee 8320 -NebulaAir: Tax 617 -CosmoAir: Fee 5579 -GalaxyExpress: Fee 5136 -LunaLine: Tax 9075 -MartianSpacelines: Tax 6541 -MartianSpacelines: Discount 4736 -NebulaAir: Tax 7453 -MartianSpacelines: Fee 379 -SpaceZ: Luggage 7000 -Voyager: Fee 3670 -NebulaAir: Tax 6001 -StarCruiser: Tax 5245 -AstroWings: Discount 9935 -NovaWings: Rebate 7297 -AuroraSpace: Discount 7414 -CelestialFlyer: Discount 9341 -CometAir: Discount 4720 -CosmoAir: Discount 989 -GalaxyExpress: Fee 4345 -AuroraSpace: Rebate 3213 -AstroWings: Rebate 8814 -CathayGalactic: Rebate 404 -StarCruiser: Tax 3906 -MartianSpacelines: Discount 2106 -NebulaAir: Discount 6223 -CometAir: Fee 7064 -Voyager: Fee 412 -CosmoAir: Discount 9893 -LunaLine: Fee 4373 -CosmoAir: Fee 4753 -Voyager: Discount 4221 -StellarJet: Rebate 5357 -LunaLine: Discount 9374 -CelestialFlyer: Rebate 1151 -CosmoAir: Tax 9901 -OrionAir: Discount 5494 -CelestialFlyer: Discount 9143 -AstroWings: Rebate 4040 -AstroWings: Tax 3488 -CathayGalactic: Rebate 2672 -StarCruiser: Rebate 401 -NeptuneExpress: Tax 4511 -NovaWings: Fee 696 -CometAir: Rebate 8213 -StellarJet: Fee 2190 -NebulaAir: Tax 3023 -AuroraSpace: Discount 5246 -CelestialFlyer: Rebate 1978 -QantasSpace: Discount 6442 -NeptuneExpress: Tax 8306 -RyanSpace: Rebate 5831 -CathayGalactic: Fee 8456 -SolarSkies: Fee 8922 -CosmoAir: Tax 6210 -CathayGalactic: Tax 6631 -MartianSpacelines: Rebate 8507 -GalaxyExpress: Fee 8205 -SpaceZ: Discount 1617 -AstroWings: Tax 2546 -GalaxyExpress: Tax 6696 -StarCruiser: Tax 2797 -NovaWings: Rebate 1721 -LunaLine: Fee 1406 -AstroWings: Tax 8188 -StarCruiser: Tax 7808 -NebulaAir: Tax 506 -SpaceZ: Discount 6847 -CosmoAir: Rebate 6108 -SpaceZ: Fee 9364 -RyanSpace: Rebate 4010 -CathayGalactic: Discount 1646 -NebulaAir: Fee 7733 -OrionAir: Tax 476 -NebulaAir: Fee 6505 -NeptuneExpress: Fee 3635 -RyanSpace: Fee 8832 -GalaxyExpress: Rebate 6803 -OrionAir: Rebate 3084 -CathayGalactic: Discount 3362 -StellarJet: Fee 4043 -SolarSkies: Discount 2668 -AuroraSpace: Rebate 5602 -OrionAir: Rebate 3142 -Voyager: Rebate 8735 -Voyager: Rebate 8353 -StarCruiser: Fee 6675 -AuroraSpace: Rebate 8420 -MartianSpacelines: Seat 460000 -OrionAir: Tax 7581 -CelestialFlyer: Tax 6165 -AuroraSpace: Discount 561 -Voyager: Tax 842 -AstroWings: Tax 6995 -OrionAir: Rebate 2200 -NovaWings: Discount 5048 -Voyager: Tax 225 -NeptuneExpress: Tax 8818 -RyanSpace: Tax 1380 -StarCruiser: Discount 6778 -CathayGalactic: Tax 3738 -CometAir: Tax 547 -LunaLine: Discount 314 -OrionAir: Fee 2232 -LunaLine: Discount 3670 -OrionAir: Tax 2265 -QantasSpace: Discount 977 -AstroWings: Fee 3324 -NebulaAir: Rebate 4483 -AuroraSpace: Discount 3324 -CelestialFlyer: Discount 923 -SolarSkies: Discount 1507 -NebulaAir: Rebate 506 -StellarJet: Tax 2828 -GalaxyExpress: Rebate 7390 -RyanSpace: Tax 7988 -NeptuneExpress: Discount 7429 -NebulaAir: Rebate 2425 -CelestialFlyer: Rebate 2545 -Voyager: Discount 8067 -StarCruiser: Rebate 3382 -SpaceZ: Rebate 7671 -QantasSpace: Tax 1432 -NovaWings: Fee 657 -NeptuneExpress: Tax 339 -NeptuneExpress: Rebate 2387 -MartianSpacelines: Discount 8309 -QantasSpace: Fee 6465 -QantasSpace: Tax 2979 -NovaWings: Fee 5528 -GalaxyExpress: Discount 2378 -RyanSpace: Fee 8139 -StellarJet: Rebate 5027 -MartianSpacelines: Tax 3923 -AstroWings: Rebate 1953 -SpaceZ: Tax 9419 -GalaxyExpress: Tax 7828 -AstroWings: Fee 4026 -CelestialFlyer: Discount 1697 -StellarJet: Rebate 4689 -CelestialFlyer: Discount 1392 -AuroraSpace: Tax 3944 -RyanSpace: Tax 829 -SolarSkies: Discount 6347 -StarCruiser: Rebate 2197 -MartianSpacelines: Fee 7697 -LunaLine: Rebate 7996 -SolarSkies: Rebate 3431 -CelestialFlyer: Rebate 178 -OrionAir: Rebate 4879 -AuroraSpace: Fee 525 -OrionAir: Discount 499 -CathayGalactic: Fee 5602 -NebulaAir: Rebate 3487 -StellarJet: Fee 6369 -AstroWings: Discount 1084 -SolarSkies: Discount 3436 -MartianSpacelines: Tax 6758 -SpaceZ: Rebate 9712 -GalaxyExpress: Tax 2784 -SolarSkies: Tax 1223 -MartianSpacelines: Fee 9136 -LunaLine: Discount 5895 -StellarJet: Rebate 9972 -SpaceZ: Discount 8361 -SpaceZ: Rebate 7890 -CometAir: Tax 8465 -SolarSkies: Tax 4651 -StarCruiser: Tax 1450 -NovaWings: Discount 1266 -CathayGalactic: Tax 3845 -CometAir: Fee 4940 -CelestialFlyer: Rebate 6700 -Voyager: Fee 2173 -LunaLine: Fee 4016 -SpaceZ: Fee 5607 -OrionAir: Rebate 6620 -CometAir: Discount 756 -QantasSpace: Fee 5546 -NebulaAir: Tax 8013 -SolarSkies: Rebate 9510 -RyanSpace: Rebate 5996 -CometAir: Tax 3939 -GalaxyExpress: Discount 8917 -StarCruiser: Tax 2726 -CathayGalactic: Tax 363 -StarCruiser: Meals 2700 -GalaxyExpress: Fee 7342 -QantasSpace: Tax 543 -SpaceZ: Fee 6957 -AstroWings: Rebate 476 -NeptuneExpress: Fee 9632 -CelestialFlyer: Tax 4419 -NebulaAir: Tax 2030 -GalaxyExpress: Fee 4981 -GalaxyExpress: Tax 9313 -SolarSkies: Fee 9007 -MartianSpacelines: Tax 1487 -CathayGalactic: Fee 409 -CathayGalactic: Fee 4596 -GalaxyExpress: Rebate 3009 -StellarJet: Tax 6210 -AuroraSpace: Tax 8499 -MartianSpacelines: Fee 9581 -CosmoAir: Discount 9677 -SpaceZ: Fee 2612 -GalaxyExpress: Discount 1845 -LunaLine: Fee 3930 -StellarJet: Tax 4219 -NeptuneExpress: Fee 5445 -NebulaAir: Fee 2114 -CometAir: Fee 5477 -CometAir: Fee 5951 -CathayGalactic: Fee 1825 -Voyager: Fee 7466 -MartianSpacelines: Discount 9190 -RyanSpace: Discount 7595 -GalaxyExpress: Fee 4064 -NebulaAir: Rebate 2017 -StellarJet: Luggage 3000 -CometAir: Rebate 9518 -RyanSpace: Rebate 7985 -LunaLine: Fee 9729 -SpaceZ: Discount 7143 -OrionAir: Fee 8482 -AuroraSpace: Tax 1205 -LunaLine: Fee 3024 -CosmoAir: Rebate 8122 -OrionAir: Tax 9867 -CometAir: Discount 2768 -SolarSkies: Rebate 6267 -CathayGalactic: Discount 2283 -CometAir: Fee 7511 -SpaceZ: Rebate 1837 -GalaxyExpress: Fee 9677 -CosmoAir: Tax 2504 -AstroWings: Rebate 4289 -NebulaAir: Tax 656 -SpaceZ: Rebate 4738 -NovaWings: Tax 6368 -NebulaAir: Discount 5161 -CathayGalactic: Rebate 8932 -OrionAir: Tax 1218 -CometAir: Fee 8229 -LunaLine: Rebate 5234 -GalaxyExpress: Rebate 5385 -AuroraSpace: Discount 5944 -AstroWings: Fee 6697 -AuroraSpace: Tax 4268 -Voyager: Tax 2362 -CosmoAir: Rebate 9361 -CosmoAir: Tax 1635 -SpaceZ: Tax 9797 -AstroWings: Fee 8690 -NovaWings: Discount 1951 -AstroWings: Tax 5104 -LunaLine: Tax 8811 -QantasSpace: Tax 5669 -StarCruiser: Tax 6681 -QantasSpace: Tax 1946 -NebulaAir: Fee 4625 -NovaWings: Discount 5133 -AstroWings: Fee 9653 -CosmoAir: Fee 1016 -AuroraSpace: Fee 1109 -CosmoAir: Fee 7005 -GalaxyExpress: Fee 1059 -QantasSpace: Discount 6632 -CometAir: Rebate 6352 -CathayGalactic: Rebate 873 -SpaceZ: Discount 4625 -CelestialFlyer: Rebate 7259 -NovaWings: Rebate 6975 -RyanSpace: Discount 8198 -Voyager: Rebate 2424 -OrionAir: Fee 8112 -SpaceZ: Fee 8608 -NeptuneExpress: Rebate 7047 -NebulaAir: Discount 2970 -NeptuneExpress: Fee 2264 -CometAir: Rebate 4739 -RyanSpace: Discount 6173 -MartianSpacelines: Tax 9077 -GalaxyExpress: Tax 2292 -AuroraSpace: Discount 5972 -CelestialFlyer: Tax 6349 -AstroWings: Fee 2368 -RyanSpace: Fee 1329 -RyanSpace: Discount 4899 -AstroWings: Tax 3777 -GalaxyExpress: Tax 9497 -StarCruiser: Tax 4160 -NovaWings: Luggage 12250 -LunaLine: Rebate 9222 -RyanSpace: Discount 1986 -SpaceZ: Rebate 9828 -NovaWings: Fee 394 -CometAir: Tax 629 -CathayGalactic: Discount 2662 -StellarJet: Fee 9453 -QantasSpace: Tax 7735 -AuroraSpace: Fee 7734 -LunaLine: Discount 6193 -QantasSpace: Discount 2814 -NebulaAir: Tax 8764 -OrionAir: Tax 4775 -OrionAir: Rebate 5898 -NebulaAir: Tax 5658 -AstroWings: Tax 5978 -MartianSpacelines: Rebate 2306 -SolarSkies: Tax 331 -GalaxyExpress: Discount 797 -AstroWings: Rebate 4421 -NeptuneExpress: Discount 3611 -LunaLine: Fee 8268 -RyanSpace: Fee 8202 -NovaWings: Rebate 7775 -CometAir: Fee 269 -RyanSpace: Fee 4187 -StarCruiser: Fee 7406 -StarCruiser: Fee 1237 -Voyager: Rebate 3148 -AuroraSpace: Discount 6564 -AstroWings: Discount 7590 -AstroWings: Fee 3417 -CometAir: Fee 4970 -NebulaAir: Rebate 8154 -NovaWings: Rebate 9104 -QantasSpace: Discount 2313 -AuroraSpace: Rebate 2795 -SpaceZ: Tax 7275 -StellarJet: Discount 5055 -StarCruiser: Rebate 2339 -LunaLine: Tax 7330 -CosmoAir: Rebate 5681 -QantasSpace: Tax 1515 -AuroraSpace: Discount 783 -AstroWings: Fee 6778 -CelestialFlyer: Discount 6325 -StarCruiser: Fee 7741 -StellarJet: Fee 4933 -MartianSpacelines: Fee 5728 -QantasSpace: Fee 8695 -CelestialFlyer: Rebate 756 -StarCruiser: Discount 1511 -AuroraSpace: Fee 7474 -OrionAir: Discount 4672 -SolarSkies: Rebate 9242 -CathayGalactic: Fee 4209 -SpaceZ: Fee 1284 -OrionAir: Tax 8072 -SpaceZ: Rebate 4461 -Voyager: Fee 7489 -CometAir: Discount 4072 -CathayGalactic: Rebate 6811 -StarCruiser: Fee 3991 -RyanSpace: Discount 5210 -OrionAir: Tax 8547 -NeptuneExpress: Fee 9537 -QantasSpace: Rebate 6280 -CometAir: Fee 1122 -AstroWings: Tax 6485 -NeptuneExpress: Discount 6787 -AuroraSpace: Fee 7383 -CometAir: Rebate 1099 -StellarJet: Tax 9338 -LunaLine: Rebate 7173 -Voyager: Tax 7042 -RyanSpace: Fee 5578 -OrionAir: Tax 6324 -SolarSkies: Fee 5705 -NebulaAir: Discount 3473 -LunaLine: Rebate 5256 -StarCruiser: Fee 1686 -StarCruiser: Discount 6430 -LunaLine: Tax 2678 -SpaceZ: Discount 1321 -Voyager: Tax 9895 -NebulaAir: Tax 5803 -GalaxyExpress: Discount 5953 -NovaWings: Tax 6689 -OrionAir: Rebate 3955 -RyanSpace: Rebate 5909 -StellarJet: Discount 7168 -NeptuneExpress: Fee 8126 -AstroWings: Rebate 4839 -LunaLine: Rebate 5961 -Voyager: Fee 1351 -NeptuneExpress: Discount 3820 -CathayGalactic: Fee 2225 -CometAir: Rebate 851 -NovaWings: Tax 289 -SpaceZ: Fee 509 -GalaxyExpress: Fee 8985 -NeptuneExpress: Rebate 9160 -AuroraSpace: Fee 9174 -SolarSkies: Discount 239 -SolarSkies: Tax 7143 -NebulaAir: Rebate 2802 -CosmoAir: Fee 7304 -CathayGalactic: Discount 6856 -CometAir: Fee 2622 -MartianSpacelines: Fee 843 -StarCruiser: Rebate 4720 -CometAir: Rebate 9897 -CathayGalactic: Rebate 9078 -LunaLine: Tax 390 -CathayGalactic: Fee 1338 -NeptuneExpress: Fee 543 -OrionAir: Discount 9963 -LunaLine: Fee 3483 -SolarSkies: Fee 4492 -NovaWings: Rebate 2316 -OrionAir: Discount 219 -NovaWings: Tax 8716 -CelestialFlyer: Rebate 4370 -SolarSkies: Meals 1600 -CelestialFlyer: Rebate 2983 -MartianSpacelines: Rebate 3930 -MartianSpacelines: Fee 2841 -NovaWings: Rebate 7736 -CosmoAir: Rebate 2940 -CosmoAir: Discount 7602 -NebulaAir: Tax 7014 -SpaceZ: Tax 9815 -StellarJet: Fee 9867 -CometAir: Discount 6248 -SolarSkies: Discount 1386 -NovaWings: Fee 9062 -AuroraSpace: Rebate 6268 -Voyager: Tax 4590 -SolarSkies: Fee 1032 -RyanSpace: Tax 4263 -RyanSpace: Discount 8575 -AstroWings: Discount 9523 -SolarSkies: Fee 9345 -QantasSpace: Rebate 2734 -StarCruiser: Rebate 2854 -RyanSpace: Tax 2016 -GalaxyExpress: Discount 6375 -AuroraSpace: Rebate 1447 -CathayGalactic: Tax 501 -CosmoAir: Discount 2346 -SpaceZ: Fee 4505 -OrionAir: Tax 6392 -CathayGalactic: Fee 1380 -CosmoAir: Tax 5855 -NeptuneExpress: Discount 7994 -OrionAir: Fee 7158 -StarCruiser: Fee 602 -AstroWings: Discount 1107 -GalaxyExpress: Discount 5235 -NebulaAir: Fee 8574 -NovaWings: Fee 322 -CelestialFlyer: Tax 6193 -NeptuneExpress: Fee 1581 -SpaceZ: Tax 5048 -CometAir: Tax 7701 -RyanSpace: Fee 3833 -CometAir: Fee 3637 -LunaLine: Tax 6690 -CelestialFlyer: Fee 9397 -QantasSpace: Tax 1704 -QantasSpace: Rebate 6357 -MartianSpacelines: Discount 9550 -StellarJet: Tax 529 -CathayGalactic: Tax 1272 -OrionAir: Rebate 6109 -GalaxyExpress: Discount 4847 -NovaWings: Rebate 8990 -NeptuneExpress: Discount 2214 -CathayGalactic: Rebate 9732 -OrionAir: Fee 550 -CometAir: Tax 9762 -AuroraSpace: Discount 7322 -LunaLine: Fee 8901 -GalaxyExpress: Rebate 5256 -NebulaAir: Fee 7240 -Voyager: Tax 1434 -SolarSkies: Fee 7889 -NeptuneExpress: Rebate 9825 -StellarJet: Fee 3356 -OrionAir: Discount 4444 -StarCruiser: Discount 1966 -StellarJet: Rebate 4011 -MartianSpacelines: Rebate 2908 -SpaceZ: Discount 7617 -NeptuneExpress: Discount 7233 -CelestialFlyer: Discount 5098 -SpaceZ: Fee 3649 -CosmoAir: Fee 4610 -SolarSkies: Discount 7649 -NeptuneExpress: Fee 4945 -CosmoAir: Rebate 6879 -CelestialFlyer: Discount 8053 -QantasSpace: Tax 4133 -LunaLine: Fee 7111 -MartianSpacelines: Tax 9698 -StellarJet: Fee 2935 -CosmoAir: Tax 5472 -NovaWings: Fee 1873 -RyanSpace: Fee 1377 -NebulaAir: Rebate 7078 -StellarJet: Fee 7641 -MartianSpacelines: Tax 8862 -StarCruiser: Fee 9490 -StellarJet: Discount 1165 -AstroWings: Tax 5092 -QantasSpace: Fee 1423 -CelestialFlyer: Tax 5076 -SpaceZ: Tax 4744 -CosmoAir: Tax 9377 -SpaceZ: Tax 8330 -NebulaAir: Rebate 133 -OrionAir: Rebate 9496 -CathayGalactic: Rebate 9896 -NeptuneExpress: Fee 7701 -AstroWings: Discount 2921 -LunaLine: Rebate 8033 -AuroraSpace: Fee 530 -GalaxyExpress: Tax 1117 -StellarJet: Discount 1054 -MartianSpacelines: Discount 153 -LunaLine: Fee 1658 -CosmoAir: Tax 1929 -SolarSkies: Rebate 7556 -LunaLine: Rebate 509 -SolarSkies: Fee 9543 -SolarSkies: Discount 5080 -StarCruiser: Fee 6833 -GalaxyExpress: Discount 6836 -OrionAir: Discount 6377 -SpaceZ: Rebate 145 -MartianSpacelines: Fee 2899 -MartianSpacelines: Fee 7165 -StarCruiser: Rebate 3489 -OrionAir: Rebate 2819 -StarCruiser: Discount 3509 -StarCruiser: Discount 7742 -CosmoAir: Tax 3017 -LunaLine: Fee 5731 -Voyager: Rebate 6301 -NebulaAir: Rebate 3166 -NovaWings: Discount 6544 -MartianSpacelines: Rebate 3668 -NebulaAir: Rebate 2595 -OrionAir: Rebate 4119 -CosmoAir: Fee 4727 -SpaceZ: Rebate 193 -CosmoAir: Meals 1600 -CathayGalactic: Fee 6030 -AstroWings: Discount 8228 -OrionAir: Discount 1142 -StellarJet: Discount 507 -AuroraSpace: Discount 1042 -Voyager: Tax 8427 -SpaceZ: Tax 5002 -SpaceZ: Tax 3055 -NeptuneExpress: Fee 9213 -CelestialFlyer: Discount 3358 -GalaxyExpress: Tax 780 -CelestialFlyer: Rebate 526 -CathayGalactic: Tax 5880 -NebulaAir: Fee 463 -AstroWings: Fee 6759 -CometAir: Discount 9064 -CelestialFlyer: Rebate 7055 -AuroraSpace: Rebate 7208 -NovaWings: Tax 7758 -AstroWings: Tax 1967 -Voyager: Discount 7350 -CometAir: Rebate 9810 -CelestialFlyer: Discount 4568 -CathayGalactic: Tax 2297 -AuroraSpace: Fee 1356 -SolarSkies: Rebate 9660 -GalaxyExpress: Meals 1900 -QantasSpace: Fee 9970 -LunaLine: Fee 7166 -NebulaAir: Fee 6697 -SpaceZ: Discount 5265 -AuroraSpace: Tax 4500 -CometAir: Fee 7283 -AuroraSpace: Discount 2122 -CometAir: Discount 4223 -GalaxyExpress: Discount 9149 -SpaceZ: Discount 2098 -CometAir: Discount 5354 -Voyager: Rebate 4984 -CosmoAir: Rebate 8256 -StarCruiser: Fee 4653 -MartianSpacelines: Discount 2236 -CelestialFlyer: Tax 4756 -RyanSpace: Fee 8570 -LunaLine: Discount 2463 -MartianSpacelines: Rebate 1766 -NeptuneExpress: Rebate 6298 -NeptuneExpress: Discount 227 -SolarSkies: Rebate 183 -CometAir: Rebate 6898 -StarCruiser: Fee 2157 -AuroraSpace: Rebate 1929 -SpaceZ: Rebate 8958 -SpaceZ: Tax 5760 -OrionAir: Fee 4464 -CelestialFlyer: Discount 2351 -StellarJet: Tax 2726 -SpaceZ: Rebate 783 -CathayGalactic: Tax 3490 -NovaWings: Fee 8243 -LunaLine: Fee 3570 -CathayGalactic: Fee 8916 -NeptuneExpress: Discount 322 -AuroraSpace: Tax 1913 -AuroraSpace: Fee 8534 -AuroraSpace: Fee 7062 -CometAir: Discount 8878 -StarCruiser: Discount 5651 -StellarJet: Discount 1167 -StarCruiser: Tax 1158 -StellarJet: Discount 6327 -QantasSpace: Discount 289 -SpaceZ: Tax 4428 -Voyager: Rebate 9894 -CosmoAir: Rebate 6051 -StellarJet: Tax 7659 -NeptuneExpress: Discount 8630 -SpaceZ: Discount 5650 -NebulaAir: Discount 919 -AuroraSpace: Tax 6503 -CosmoAir: Discount 4088 -NebulaAir: Rebate 5728 -AstroWings: Rebate 3743 -CosmoAir: Tax 1543 -NovaWings: Tax 8620 -StellarJet: Rebate 9453 -NeptuneExpress: Rebate 2548 -CelestialFlyer: Tax 5373 -CosmoAir: Tax 8798 -CometAir: Rebate 4764 -NebulaAir: Rebate 942 -NovaWings: Discount 3986 -NebulaAir: Tax 5739 -MartianSpacelines: Discount 1187 -SolarSkies: Tax 7904 -MartianSpacelines: Fee 5757 -NovaWings: Rebate 4175 -SolarSkies: Rebate 2394 -AuroraSpace: Discount 5196 -MartianSpacelines: Tax 8918 -MartianSpacelines: Fee 937 -CathayGalactic: Discount 8455 -QantasSpace: Rebate 5252 -MartianSpacelines: Tax 824 -RyanSpace: Discount 3830 -CometAir: Rebate 6870 -SolarSkies: Tax 8513 -QantasSpace: Tax 7516 -SpaceZ: Rebate 9180 -CosmoAir: Fee 9507 -QantasSpace: Tax 8240 -CelestialFlyer: Discount 2113 -QantasSpace: Rebate 7291 -NebulaAir: Fee 491 -MartianSpacelines: Tax 171 -SolarSkies: Tax 4822 -QantasSpace: Discount 6685 -CathayGalactic: Rebate 9589 -AuroraSpace: Rebate 4954 -AstroWings: Tax 8815 -QantasSpace: Tax 1634 -OrionAir: Fee 8441 -StarCruiser: Fee 4843 -SolarSkies: Fee 3541 -CometAir: Discount 2475 -SpaceZ: Fee 6991 -GalaxyExpress: Tax 4273 -CosmoAir: Discount 730 -LunaLine: Fee 1310 -QantasSpace: Rebate 3970 -GalaxyExpress: Tax 6098 -CometAir: Tax 1466 -CosmoAir: Discount 9845 -GalaxyExpress: Fee 6997 -GalaxyExpress: Tax 8861 -NebulaAir: Discount 7680 -LunaLine: Rebate 1155 -QantasSpace: Rebate 2110 -MartianSpacelines: Fee 9519 -OrionAir: Fee 5941 -CosmoAir: Fee 4464 -Voyager: Discount 1564 -StellarJet: Rebate 1389 -SolarSkies: Discount 5713 -SolarSkies: Tax 7393 -CometAir: Tax 6942 -GalaxyExpress: Tax 9026 -SolarSkies: Tax 9984 -RyanSpace: Fee 8031 -CometAir: Fee 5941 -CathayGalactic: Tax 7681 -LunaLine: Tax 2967 -StellarJet: Fee 5737 -MartianSpacelines: Rebate 4299 -StellarJet: Fee 6009 -CelestialFlyer: Discount 6401 -NovaWings: Discount 2239 -LunaLine: Meals 4000 -LunaLine: Tax 1846 -NeptuneExpress: Tax 8830 -CelestialFlyer: Discount 3456 -MartianSpacelines: Discount 3507 -AstroWings: Fee 4263 -CelestialFlyer: Fee 406 -CometAir: Discount 946 -SolarSkies: Discount 1193 -NovaWings: Tax 7670 -NeptuneExpress: Tax 1217 -CometAir: Discount 9989 -QantasSpace: Fee 8612 -SpaceZ: Discount 135 -LunaLine: Fee 1227 -RyanSpace: Tax 6572 -AstroWings: Rebate 8149 -CelestialFlyer: Tax 4313 -OrionAir: Fee 7134 -SpaceZ: Rebate 3326 -CosmoAir: Discount 6715 -OrionAir: Rebate 1579 -NeptuneExpress: Discount 2153 -CosmoAir: Tax 6570 -AuroraSpace: Discount 5670 -AuroraSpace: Fee 1031 -MartianSpacelines: Discount 520 -StellarJet: Fee 5948 -NovaWings: Rebate 5723 -NovaWings: Discount 8161 -Voyager: Discount 6908 -AstroWings: Tax 8992 -AuroraSpace: Rebate 3951 -LunaLine: Discount 9160 -CelestialFlyer: Rebate 8603 -GalaxyExpress: Tax 6096 -LunaLine: Luggage 2000 -RyanSpace: Discount 6041 -SolarSkies: Rebate 1409 -CelestialFlyer: Fee 8308 -AuroraSpace: Fee 7852 -GalaxyExpress: Discount 6068 -StellarJet: Fee 1092 -CosmoAir: Fee 9620 -CosmoAir: Discount 5023 -Voyager: Rebate 2531 -SolarSkies: Tax 1533 -CometAir: Tax 598 -NebulaAir: Discount 1450 -GalaxyExpress: Rebate 8216 -NovaWings: Discount 6254 -OrionAir: Fee 1855 -GalaxyExpress: Fee 327 -OrionAir: Rebate 6619 -NovaWings: Fee 5674 -Voyager: Tax 7078 -StarCruiser: Discount 7907 -CometAir: Rebate 8805 -SpaceZ: Tax 3482 -SolarSkies: Fee 6603 -QantasSpace: Discount 2999 -LunaLine: Tax 4106 -SpaceZ: Rebate 814 -SpaceZ: Fee 2191 -AuroraSpace: Tax 3010 -CosmoAir: Discount 6359 -AstroWings: Discount 9532 -StarCruiser: Discount 1556 -OrionAir: Rebate 6703 -GalaxyExpress: Rebate 7659 -RyanSpace: Discount 1942 -NeptuneExpress: Fee 6996 -NebulaAir: Discount 8153 -NeptuneExpress: Rebate 8162 -CosmoAir: Rebate 7612 -NebulaAir: Rebate 9777 -AuroraSpace: Discount 5203 -CometAir: Discount 3352 -CometAir: Luggage 750 -MartianSpacelines: Rebate 6119 -CathayGalactic: Tax 2800 -NebulaAir: Tax 5183 -NebulaAir: Tax 6708 -OrionAir: Fee 1564 -GalaxyExpress: Discount 7273 -NebulaAir: Discount 7437 -QantasSpace: Rebate 4894 -CosmoAir: Rebate 2715 -Voyager: Discount 8922 -LunaLine: Rebate 1873 -CathayGalactic: Discount 7902 -SpaceZ: Discount 8569 -OrionAir: Fee 9280 -StellarJet: Rebate 2293 -MartianSpacelines: Rebate 8351 -CometAir: Discount 1645 -RyanSpace: Tax 5095 -GalaxyExpress: Rebate 1954 -AstroWings: Fee 7238 -CathayGalactic: Tax 5145 -StarCruiser: Rebate 3486 -NebulaAir: Discount 4504 -LunaLine: Rebate 5026 -NebulaAir: Fee 1111 -GalaxyExpress: Rebate 2749 -StellarJet: Fee 5264 -Voyager: Discount 8215 -CelestialFlyer: Tax 1364 -CathayGalactic: Discount 7406 -LunaLine: Rebate 7821 -NeptuneExpress: Fee 691 -RyanSpace: Tax 8973 -NovaWings: Tax 3752 -AuroraSpace: Fee 9361 -AstroWings: Discount 8189 -AuroraSpace: Rebate 9537 -GalaxyExpress: Rebate 7166 -Voyager: Discount 3755 -Voyager: Discount 8419 -QantasSpace: Fee 9375 -NebulaAir: Rebate 1701 -CosmoAir: Tax 8763 -CathayGalactic: Tax 2060 -Voyager: Discount 9335 -Voyager: Discount 8936 -SpaceZ: Discount 7182 -SolarSkies: Fee 3680 -GalaxyExpress: Rebate 9192 -NovaWings: Tax 493 -StellarJet: Discount 6936 -CelestialFlyer: Fee 5245 -NovaWings: Meals 1500 -AuroraSpace: Discount 7934 -Voyager: Tax 6117 -NovaWings: Tax 9846 -LunaLine: Discount 979 -OrionAir: Tax 876 -CathayGalactic: Tax 4409 -AstroWings: Rebate 4077 -CelestialFlyer: Fee 2540 -CelestialFlyer: Discount 9254 -CometAir: Discount 6645 -RyanSpace: Fee 4252 -StarCruiser: Discount 2073 -StarCruiser: Fee 3873 -StellarJet: Fee 1128 -NovaWings: Discount 3672 -MartianSpacelines: Discount 1931 -StellarJet: Rebate 3362 -Voyager: Rebate 5793 -NebulaAir: Discount 2409 -CathayGalactic: Fee 8363 -CelestialFlyer: Fee 6748 -GalaxyExpress: Rebate 4531 -SpaceZ: Fee 5937 -CometAir: Fee 1201 -MartianSpacelines: Rebate 5919 -AstroWings: Tax 7867 -GalaxyExpress: Rebate 8566 -SpaceZ: Fee 9788 -Voyager: Rebate 1572 -CelestialFlyer: Fee 8712 -NebulaAir: Fee 4425 -StellarJet: Rebate 331 -SolarSkies: Tax 8988 -CometAir: Fee 6297 -SolarSkies: Fee 2669 -AuroraSpace: Discount 226 -CelestialFlyer: Rebate 5217 -SolarSkies: Tax 5254 -StarCruiser: Fee 485 -OrionAir: Discount 8424 -StellarJet: Fee 6505 -RyanSpace: Discount 2013 -CometAir: Tax 9282 -SpaceZ: Rebate 8931 -SpaceZ: Fee 1735 -NebulaAir: Fee 1092 -LunaLine: Rebate 9346 -NebulaAir: Tax 2061 -SpaceZ: Rebate 5144 -SpaceZ: Tax 2934 -AuroraSpace: Fee 516 -SolarSkies: Discount 5029 -AstroWings: Rebate 2347 -AuroraSpace: Tax 802 -CometAir: Discount 7973 -StellarJet: Rebate 3012 -MartianSpacelines: Fee 6650 -AstroWings: Rebate 1383 -NeptuneExpress: Rebate 6514 -SolarSkies: Discount 8084 -CosmoAir: Discount 8082 -Voyager: Rebate 7717 -StarCruiser: Tax 667 -NebulaAir: Fee 1928 -CelestialFlyer: Tax 7100 -AstroWings: Discount 6135 -Voyager: Fee 4746 -CathayGalactic: Fee 4840 -GalaxyExpress: Discount 2138 -AstroWings: Fee 9082 -MartianSpacelines: Fee 1227 -GalaxyExpress: Discount 8821 -RyanSpace: Discount 4655 -QantasSpace: Discount 558 -StellarJet: Rebate 2941 -NovaWings: Fee 6028 -MartianSpacelines: Rebate 5489 -NeptuneExpress: Fee 4126 -RyanSpace: Discount 1746 -OrionAir: Tax 513 -StellarJet: Discount 7310 -CathayGalactic: Rebate 218 -NeptuneExpress: Rebate 9365 -MartianSpacelines: Fee 6888 -CosmoAir: Rebate 6734 -SpaceZ: Tax 963 -OrionAir: Tax 9184 -NebulaAir: Rebate 1443 -NovaWings: Discount 8002 -AstroWings: Fee 2204 -StarCruiser: Tax 5869 -StarCruiser: Rebate 683 -AstroWings: Discount 9934 -CometAir: Rebate 6852 -CathayGalactic: Tax 9767 -RyanSpace: Tax 6455 -AstroWings: Discount 9883 -RyanSpace: Fee 5548 -QantasSpace: Rebate 1175 -RyanSpace: Fee 2023 -Voyager: Tax 2880 -SolarSkies: Fee 6389 -NeptuneExpress: Rebate 7343 -AstroWings: Fee 1115 -MartianSpacelines: Fee 9357 -SolarSkies: Tax 6255 -AuroraSpace: Tax 5087 -Voyager: Fee 4346 -OrionAir: Fee 3882 -NeptuneExpress: Rebate 3280 -CathayGalactic: Rebate 9071 -RyanSpace: Rebate 3555 -CelestialFlyer: Tax 605 -RyanSpace: Rebate 2138 -AstroWings: Rebate 1367 -OrionAir: Discount 8651 -OrionAir: Rebate 6763 -CometAir: Tax 5710 -StellarJet: Rebate 3636 -AuroraSpace: Tax 6896 -Voyager: Discount 2207 -CathayGalactic: Rebate 5569 -MartianSpacelines: Tax 2778 -StarCruiser: Tax 3654 -LunaLine: Tax 9075 -StellarJet: Rebate 701 -StarCruiser: Discount 9690 -SpaceZ: Discount 9828 -OrionAir: Fee 6966 -OrionAir: Fee 4984 -AstroWings: Discount 5696 -AstroWings: Rebate 2721 -AstroWings: Rebate 170 -CometAir: Tax 8109 -NebulaAir: Tax 3474 -SolarSkies: Tax 2034 -QantasSpace: Rebate 3341 -NeptuneExpress: Meals 4400 -QantasSpace: Discount 7845 -CosmoAir: Rebate 8368 -AstroWings: Tax 2258 -CelestialFlyer: Fee 9388 -CathayGalactic: Fee 121 -AuroraSpace: Tax 1527 -CelestialFlyer: Discount 5223 -AstroWings: Fee 7785 -Voyager: Fee 8545 -NeptuneExpress: Rebate 7296 -CathayGalactic: Fee 7996 -CathayGalactic: Fee 5567 -NeptuneExpress: Tax 3701 -SolarSkies: Fee 4452 -CelestialFlyer: Tax 7549 -StarCruiser: Fee 1411 -NovaWings: Fee 4668 -MartianSpacelines: Tax 3285 -NeptuneExpress: Discount 2026 -MartianSpacelines: Tax 8336 -CosmoAir: Fee 5095 -RyanSpace: Fee 2119 -AstroWings: Tax 8271 -StellarJet: Fee 1222 -OrionAir: Fee 7123 -RyanSpace: Tax 2722 -NovaWings: Discount 8281 -AuroraSpace: Tax 5155 -SolarSkies: Rebate 5951 -CelestialFlyer: Discount 1713 -SpaceZ: Rebate 9203 -StellarJet: Tax 2674 -OrionAir: Discount 6256 -CosmoAir: Tax 8975 -StellarJet: Tax 2228 -AuroraSpace: Rebate 2342 -LunaLine: Tax 3472 -QantasSpace: Discount 4953 -AuroraSpace: Discount 668 -MartianSpacelines: Discount 5880 -SpaceZ: Discount 3460 -CathayGalactic: Fee 2971 -AstroWings: Fee 3125 -Voyager: Tax 2865 -StarCruiser: Tax 9366 -CathayGalactic: Rebate 1309 -Voyager: Tax 5176 -AuroraSpace: Rebate 7558 -QantasSpace: Fee 2073 -MartianSpacelines: Fee 8258 -AuroraSpace: Rebate 1471 -Voyager: Tax 251 -AstroWings: Rebate 2373 -NebulaAir: Discount 2506 -AstroWings: Tax 5844 -Voyager: Tax 9686 -OrionAir: Fee 5056 -GalaxyExpress: Discount 3456 -GalaxyExpress: Discount 4140 -RyanSpace: Fee 2808 -StellarJet: Fee 1845 -OrionAir: Rebate 1148 -CathayGalactic: Rebate 7136 -SolarSkies: Discount 5384 -NovaWings: Tax 4004 -StarCruiser: Tax 9246 -CelestialFlyer: Fee 1857 -CosmoAir: Tax 5984 -CosmoAir: Discount 946 -NebulaAir: Tax 6039 -QantasSpace: Discount 6245 -OrionAir: Tax 7830 -CometAir: Tax 8806 -AuroraSpace: Tax 9313 -CathayGalactic: Fee 3263 -RyanSpace: Tax 7500 -SpaceZ: Discount 3444 -CathayGalactic: Tax 4807 -CosmoAir: Rebate 7275 -StarCruiser: Fee 1947 -CelestialFlyer: Fee 7836 -CosmoAir: Discount 5026 -SpaceZ: Rebate 2510 -NovaWings: Fee 4126 -AuroraSpace: Discount 4461 -LunaLine: Fee 6139 -GalaxyExpress: Rebate 6061 -NeptuneExpress: Discount 1184 -StellarJet: Discount 4330 -LunaLine: Discount 111 -Voyager: Fee 2514 -CathayGalactic: Tax 6072 -AstroWings: Rebate 1822 -AstroWings: Fee 2827 -SolarSkies: Tax 9479 -RyanSpace: Discount 9718 -AstroWings: Tax 5303 -CelestialFlyer: Fee 6216 -GalaxyExpress: Discount 2712 -Voyager: Tax 3413 -SolarSkies: Tax 4490 -QantasSpace: Tax 6150 -OrionAir: Fee 4735 -CelestialFlyer: Tax 326 -OrionAir: Rebate 9076 -SolarSkies: Discount 4485 -SolarSkies: Discount 3475 -StellarJet: Discount 8749 -OrionAir: Tax 8269 -StarCruiser: Discount 5101 -MartianSpacelines: Fee 7687 -AstroWings: Rebate 297 -Voyager: Tax 7986 -QantasSpace: Discount 4358 -SpaceZ: Rebate 1215 -CathayGalactic: Discount 2259 -QantasSpace: Fee 940 -QantasSpace: Discount 6051 -QantasSpace: Rebate 7077 -RyanSpace: Tax 5218 -NeptuneExpress: Tax 4307 -CometAir: Discount 2033 -OrionAir: Tax 1090 -OrionAir: Tax 7953 -AuroraSpace: Tax 4484 -QantasSpace: Rebate 4819 -AuroraSpace: Tax 2465 -AstroWings: Tax 9692 -GalaxyExpress: Fee 8584 -SolarSkies: Discount 3994 -RyanSpace: Discount 8153 -LunaLine: Tax 5028 -CathayGalactic: Tax 4087 -GalaxyExpress: Rebate 4579 -CosmoAir: Tax 361 -AstroWings: Rebate 7536 -CometAir: Rebate 8425 -AstroWings: Tax 149 -StarCruiser: Fee 7162 -CosmoAir: Rebate 3422 -SolarSkies: Discount 1142 -CometAir: Tax 8655 -CathayGalactic: Discount 4066 -CosmoAir: Rebate 3906 -NeptuneExpress: Discount 3913 -QantasSpace: Rebate 8914 -CelestialFlyer: Tax 3073 -CathayGalactic: Fee 7580 -LunaLine: Tax 7853 -NovaWings: Discount 2065 -CathayGalactic: Tax 5751 -SolarSkies: Tax 851 -CometAir: Tax 6103 -OrionAir: Fee 8652 -CosmoAir: Tax 415 -CometAir: Discount 7199 -Voyager: Discount 9677 -NeptuneExpress: Fee 9362 -StellarJet: Tax 3730 -CelestialFlyer: Rebate 5226 -CathayGalactic: Rebate 1088 -LunaLine: Discount 3349 -GalaxyExpress: Fee 8802 -RyanSpace: Discount 3168 -Voyager: Fee 6874 -StarCruiser: Rebate 3720 -StarCruiser: Discount 2744 -CosmoAir: Fee 7532 -LunaLine: Discount 6779 -StellarJet: Discount 2419 -StellarJet: Rebate 2140 -QantasSpace: Fee 4828 -OrionAir: Fee 7237 -OrionAir: Discount 7828 -GalaxyExpress: Discount 958 -QantasSpace: Tax 592 -RyanSpace: Tax 3368 -AuroraSpace: Discount 2220 -StarCruiser: Rebate 1841 -OrionAir: Tax 9967 -CathayGalactic: Rebate 8966 -SolarSkies: Discount 4186 -NebulaAir: Tax 318 -NovaWings: Fee 8141 -MartianSpacelines: Fee 3385 -NeptuneExpress: Fee 7404 -SpaceZ: Rebate 6283 -CathayGalactic: Fee 1522 -RyanSpace: Tax 7478 -NovaWings: Fee 4131 -AuroraSpace: Fee 8349 -GalaxyExpress: Discount 6197 -SolarSkies: Tax 8410 -LunaLine: Rebate 3227 -QantasSpace: Tax 2175 -SolarSkies: Rebate 3622 -RyanSpace: Tax 7166 -MartianSpacelines: Rebate 7682 -LunaLine: Discount 8896 -NovaWings: Tax 4191 -QantasSpace: Fee 6762 -CometAir: Tax 6715 -NeptuneExpress: Fee 3648 -AstroWings: Fee 9888 -NebulaAir: Fee 8524 -NeptuneExpress: Tax 6152 -Voyager: Rebate 9579 -AstroWings: Discount 9635 -NeptuneExpress: Tax 7130 -LunaLine: Rebate 6284 -OrionAir: Tax 3803 -QantasSpace: Rebate 8136 -RyanSpace: Fee 8829 -LunaLine: Rebate 5451 -CelestialFlyer: Tax 5017 -Voyager: Fee 1594 -SolarSkies: Fee 8115 -SolarSkies: Tax 9102 -StarCruiser: Fee 7574 -OrionAir: Tax 1616 -NovaWings: Rebate 4124 -NovaWings: Fee 6210 -CelestialFlyer: Discount 597 -Voyager: Tax 5781 -SolarSkies: Tax 4227 -CometAir: Rebate 9507 -OrionAir: Fee 3695 -StellarJet: Tax 1906 -CosmoAir: Discount 144 -SolarSkies: Tax 7660 -NovaWings: Tax 5677 -NebulaAir: Rebate 4215 -SpaceZ: Rebate 9056 -RyanSpace: Discount 1981 -CathayGalactic: Discount 4621 -SpaceZ: Discount 3523 -LunaLine: Tax 8929 -StarCruiser: Rebate 9834 -CathayGalactic: Tax 1655 -AuroraSpace: Discount 6668 -StarCruiser: Fee 2209 -QantasSpace: Discount 378 -AuroraSpace: Rebate 8759 -OrionAir: Tax 6972 -AstroWings: Discount 6651 -StellarJet: Rebate 9689 -CometAir: Rebate 8639 -SpaceZ: Discount 2721 -NeptuneExpress: Discount 6097 -OrionAir: Tax 8722 -NeptuneExpress: Rebate 3973 -StellarJet: Discount 600 -AstroWings: Fee 9376 -CathayGalactic: Fee 3921 -CosmoAir: Tax 341 -QantasSpace: Discount 6872 -SolarSkies: Discount 5082 -GalaxyExpress: Rebate 5810 -NovaWings: Discount 4821 -NovaWings: Tax 1315 -CathayGalactic: Fee 9485 -OrionAir: Discount 3261 -AstroWings: Tax 6805 -AuroraSpace: Discount 7130 -SpaceZ: Discount 4936 -AstroWings: Discount 4740 -SpaceZ: Discount 5584 -AstroWings: Tax 6605 -CosmoAir: Tax 2483 -CosmoAir: Tax 3634 -StellarJet: Rebate 6234 -MartianSpacelines: Tax 7650 -NeptuneExpress: Rebate 6107 -OrionAir: Rebate 2962 -MartianSpacelines: Tax 5006 -MartianSpacelines: Rebate 2619 -Voyager: Fee 6666 -CometAir: Discount 4247 -StellarJet: Rebate 5919 -NeptuneExpress: Rebate 1500 -Voyager: Discount 246 -StarCruiser: Fee 9792 -StarCruiser: Rebate 8920 -AuroraSpace: Tax 7959 -GalaxyExpress: Fee 7195 -StarCruiser: Discount 1202 -StellarJet: Tax 2083 -CathayGalactic: Fee 909 -NeptuneExpress: Fee 292 -NeptuneExpress: Rebate 8479 -NeptuneExpress: Discount 243 -GalaxyExpress: Discount 9239 -LunaLine: Tax 8213 -CometAir: Discount 8723 -CometAir: Rebate 2337 -StarCruiser: Rebate 7427 -CometAir: Fee 1003 -OrionAir: Tax 4877 -StellarJet: Discount 7778 -LunaLine: Rebate 2397 -NebulaAir: Discount 3144 -NeptuneExpress: Tax 8706 -NovaWings: Fee 4323 -QantasSpace: Fee 451 -OrionAir: Tax 7230 -AstroWings: Tax 9309 -StellarJet: Rebate 6679 -RyanSpace: Tax 5384 -NebulaAir: Discount 6331 -AuroraSpace: Rebate 1301 -AstroWings: Seat 240000 -StellarJet: Tax 5271 -SolarSkies: Discount 9413 -SolarSkies: Fee 8812 -SolarSkies: Rebate 8665 -CosmoAir: Rebate 6245 -OrionAir: Discount 4575 -StellarJet: Tax 7490 -GalaxyExpress: Fee 6612 -GalaxyExpress: Fee 241 -NeptuneExpress: Discount 3924 -SpaceZ: Rebate 8678 -CathayGalactic: Fee 1410 -CathayGalactic: Rebate 1945 -SolarSkies: Tax 9771 -LunaLine: Rebate 3087 -AstroWings: Discount 4662 -LunaLine: Fee 4345 -RyanSpace: Tax 8789 -AstroWings: Discount 7374 -StarCruiser: Discount 8288 -NovaWings: Discount 8336 -SolarSkies: Fee 9835 -AstroWings: Rebate 3526 -NebulaAir: Discount 8488 -NebulaAir: Tax 4228 -StarCruiser: Discount 505 -CosmoAir: Fee 4610 -NovaWings: Fee 7292 -RyanSpace: Fee 9772 -SpaceZ: Discount 5786 -MartianSpacelines: Fee 3572 -CathayGalactic: Fee 1104 -SolarSkies: Rebate 561 -SpaceZ: Rebate 5001 -NovaWings: Fee 8719 -MartianSpacelines: Rebate 2468 -CathayGalactic: Fee 5558 -QantasSpace: Discount 253 -SolarSkies: Fee 3746 -AuroraSpace: Tax 9969 -StarCruiser: Discount 4362 -NebulaAir: Fee 8313 -CathayGalactic: Fee 7001 -CometAir: Fee 786 -AuroraSpace: Discount 5429 -QantasSpace: Fee 898 -SolarSkies: Rebate 6518 -CosmoAir: Rebate 6595 -LunaLine: Tax 6800 -CathayGalactic: Tax 1203 -MartianSpacelines: Tax 803 -Voyager: Tax 6286 -StarCruiser: Tax 1003 -RyanSpace: Discount 157 -StellarJet: Fee 5876 -CelestialFlyer: Fee 9667 -StellarJet: Rebate 9616 -GalaxyExpress: Discount 7648 -NebulaAir: Fee 1218 -NovaWings: Discount 3899 -MartianSpacelines: Discount 6378 -NeptuneExpress: Tax 7899 -CathayGalactic: Tax 7720 -CelestialFlyer: Fee 265 -RyanSpace: Rebate 3858 -NovaWings: Fee 2147 -CosmoAir: Fee 6283 -Voyager: Rebate 9417 -OrionAir: Tax 3710 -Voyager: Discount 6167 -LunaLine: Fee 6679 -LunaLine: Fee 9467 -Voyager: Discount 3551 -NebulaAir: Discount 8307 -CathayGalactic: Rebate 5839 -GalaxyExpress: Rebate 8545 -SolarSkies: Tax 2210 -CometAir: Rebate 1210 -MartianSpacelines: Fee 7913 -CelestialFlyer: Tax 4328 -CosmoAir: Tax 9548 -SpaceZ: Discount 3523 -NeptuneExpress: Rebate 9468 -AuroraSpace: Discount 1754 -CometAir: Discount 550 -CometAir: Fee 6102 -CometAir: Discount 3698 -SpaceZ: Tax 7023 -StarCruiser: Fee 8329 -SpaceZ: Rebate 9184 -Voyager: Discount 2962 -StarCruiser: Rebate 8022 -OrionAir: Rebate 5103 -CometAir: Fee 2530 -Voyager: Tax 9018 -QantasSpace: Fee 8525 -QantasSpace: Rebate 4628 -NeptuneExpress: Fee 2018 -OrionAir: Fee 4995 -NebulaAir: Fee 1197 -StarCruiser: Tax 9946 -LunaLine: Fee 9480 -CathayGalactic: Discount 6587 -StarCruiser: Fee 4270 -QantasSpace: Tax 2672 -AstroWings: Fee 4282 -RyanSpace: Discount 2098 -QantasSpace: Fee 5255 -NovaWings: Fee 9293 -Voyager: Tax 8962 -LunaLine: Rebate 2640 -NovaWings: Fee 6471 -LunaLine: Fee 9892 -SpaceZ: Fee 2816 -SolarSkies: Tax 7838 -NeptuneExpress: Rebate 4449 -NeptuneExpress: Fee 2809 -AstroWings: Rebate 9013 -CelestialFlyer: Tax 4122 -NovaWings: Tax 5560 -SpaceZ: Fee 9292 -NebulaAir: Rebate 7604 -GalaxyExpress: Fee 7495 -RyanSpace: Fee 9339 -SpaceZ: Fee 6637 -CelestialFlyer: Fee 7984 -CelestialFlyer: Fee 7100 -GalaxyExpress: Tax 527 -StellarJet: Tax 8457 -StellarJet: Tax 7343 -NeptuneExpress: Tax 5324 -CosmoAir: Discount 446 -StellarJet: Discount 6064 -MartianSpacelines: Fee 1270 -StarCruiser: Discount 7572 -RyanSpace: Fee 4282 -LunaLine: Discount 4199 -NeptuneExpress: Tax 7791 -CathayGalactic: Discount 2876 -SpaceZ: Discount 1094 -NovaWings: Fee 5664 -GalaxyExpress: Tax 9803 -AuroraSpace: Tax 4011 -QantasSpace: Discount 6151 -MartianSpacelines: Tax 7621 -CelestialFlyer: Rebate 6304 -CometAir: Rebate 672 -MartianSpacelines: Fee 3053 -StarCruiser: Discount 4170 -QantasSpace: Rebate 1615 -SolarSkies: Tax 8434 -RyanSpace: Rebate 3163 -AuroraSpace: Meals 1100 -CathayGalactic: Rebate 1880 -RyanSpace: Rebate 4611 -RyanSpace: Fee 9068 -SpaceZ: Meals 3400 -MartianSpacelines: Discount 1877 -CelestialFlyer: Tax 1848 -CosmoAir: Rebate 6214 -CathayGalactic: Discount 4246 -CometAir: Discount 1025 -RyanSpace: Discount 7845 -GalaxyExpress: Rebate 8020 -SpaceZ: Tax 8147 -MartianSpacelines: Tax 3603 -CathayGalactic: Discount 1787 -GalaxyExpress: Seat 300000 -StarCruiser: Tax 7061 -CathayGalactic: Tax 3295 -SpaceZ: Tax 6589 -CosmoAir: Rebate 4587 -StarCruiser: Fee 9829 -SpaceZ: Rebate 773 -RyanSpace: Tax 8785 -NeptuneExpress: Rebate 2279 -RyanSpace: Fee 3669 -NovaWings: Tax 4214 -AstroWings: Rebate 7570 -RyanSpace: Fee 7906 -QantasSpace: Fee 1163 -StarCruiser: Tax 347 -CosmoAir: Fee 194 -NebulaAir: Fee 7707 -NeptuneExpress: Rebate 7235 -MartianSpacelines: Tax 3180 -StarCruiser: Rebate 617 -GalaxyExpress: Rebate 490 -LunaLine: Discount 1515 -GalaxyExpress: Fee 6605 -CathayGalactic: Tax 2053 -CometAir: Discount 670 -SolarSkies: Fee 8656 -NovaWings: Fee 8952 -NebulaAir: Tax 3107 -AuroraSpace: Fee 6758 -NebulaAir: Tax 2702 -StellarJet: Fee 6871 -CometAir: Tax 7987 -CosmoAir: Tax 7648 -SolarSkies: Discount 3539 -MartianSpacelines: Tax 5319 -CathayGalactic: Fee 2178 -AstroWings: Fee 291 -AstroWings: Discount 3497 -MartianSpacelines: Fee 938 -OrionAir: Rebate 1818 -Voyager: Rebate 6287 -GalaxyExpress: Rebate 9395 -SpaceZ: Discount 7556 -SolarSkies: Tax 7217 -CathayGalactic: Discount 290 -GalaxyExpress: Fee 3209 -CometAir: Discount 7887 -StellarJet: Fee 348 -AstroWings: Rebate 3125 -NeptuneExpress: Fee 2692 -QantasSpace: Rebate 4275 -AuroraSpace: Rebate 6920 -StarCruiser: Rebate 908 -StellarJet: Discount 6789 -CelestialFlyer: Fee 5101 -NebulaAir: Rebate 2309 -GalaxyExpress: Fee 1671 -StellarJet: Tax 6291 -CathayGalactic: Discount 4444 -CathayGalactic: Fee 4299 -SpaceZ: Tax 1593 -MartianSpacelines: Fee 2376 -NeptuneExpress: Fee 8722 -OrionAir: Discount 432 -LunaLine: Fee 7407 -CathayGalactic: Tax 2808 -QantasSpace: Tax 9852 -NeptuneExpress: Tax 9214 -NovaWings: Discount 5313 -OrionAir: Tax 4975 -SolarSkies: Fee 1607 -QantasSpace: Fee 8122 -OrionAir: Tax 601 -SolarSkies: Fee 7521 -SpaceZ: Rebate 7360 -OrionAir: Rebate 5490 -GalaxyExpress: Fee 3490 -NebulaAir: Discount 268 -QantasSpace: Tax 8608 -NovaWings: Tax 7292 -AuroraSpace: Discount 8392 -AuroraSpace: Luggage 7750 -NeptuneExpress: Rebate 5672 -NeptuneExpress: Fee 4929 -StarCruiser: Fee 548 -SpaceZ: Tax 8527 -SpaceZ: Fee 7028 -GalaxyExpress: Discount 2161 -StellarJet: Rebate 8102 -SolarSkies: Discount 8404 -CelestialFlyer: Tax 3587 -NeptuneExpress: Discount 6358 -CosmoAir: Rebate 6289 -MartianSpacelines: Discount 1043 -GalaxyExpress: Rebate 906 -StarCruiser: Rebate 123 -Voyager: Tax 5045 -NovaWings: Rebate 1549 -AstroWings: Rebate 8398 -StellarJet: Fee 6777 -GalaxyExpress: Rebate 4417 -StellarJet: Rebate 9375 -SpaceZ: Fee 8606 -StarCruiser: Discount 9637 -AuroraSpace: Discount 5666 -MartianSpacelines: Rebate 8090 -CelestialFlyer: Fee 8123 -NeptuneExpress: Fee 252 -CelestialFlyer: Rebate 9293 -NeptuneExpress: Rebate 1026 -StellarJet: Fee 3058 -MartianSpacelines: Discount 3224 -CosmoAir: Fee 4421 -CosmoAir: Rebate 9511 -SpaceZ: Rebate 6572 -StellarJet: Discount 2525 -NeptuneExpress: Rebate 6284 -QantasSpace: Tax 2161 -RyanSpace: Discount 2943 -AstroWings: Tax 8302 -AuroraSpace: Tax 468 -QantasSpace: Discount 3039 -NebulaAir: Rebate 7430 -QantasSpace: Fee 105 -CathayGalactic: Meals 1600 -CathayGalactic: Fee 2225 -CometAir: Fee 3048 -SolarSkies: Fee 5309 -CometAir: Tax 5294 -RyanSpace: Tax 2782 -GalaxyExpress: Discount 2747 -CosmoAir: Discount 1686 -NovaWings: Rebate 6042 -StellarJet: Rebate 5019 -QantasSpace: Rebate 255 -MartianSpacelines: Rebate 520 -LunaLine: Fee 5270 -Voyager: Tax 8690 -StellarJet: Discount 8914 -CosmoAir: Discount 8190 -Voyager: Rebate 645 -SolarSkies: Tax 5980 -LunaLine: Tax 9452 -NovaWings: Rebate 4892 -RyanSpace: Discount 5519 -CosmoAir: Tax 3060 -Voyager: Discount 4456 -SolarSkies: Discount 8504 -NebulaAir: Tax 334 -CosmoAir: Discount 6155 -LunaLine: Discount 9685 -CosmoAir: Rebate 4221 -AuroraSpace: Rebate 3081 -StarCruiser: Tax 2104 -CelestialFlyer: Rebate 832 -AuroraSpace: Tax 7430 -QantasSpace: Tax 2617 -LunaLine: Tax 1568 -CathayGalactic: Fee 4521 -LunaLine: Fee 7606 -StellarJet: Discount 7637 -StellarJet: Discount 8643 -CosmoAir: Rebate 8196 -QantasSpace: Fee 7865 -NovaWings: Discount 9451 -StarCruiser: Tax 5263 -QantasSpace: Fee 1434 -SpaceZ: Fee 5117 -MartianSpacelines: Discount 6407 -AstroWings: Tax 9804 -OrionAir: Discount 1194 -AstroWings: Discount 6272 -MartianSpacelines: Tax 3469 -OrionAir: Rebate 5735 -SpaceZ: Tax 1238 -CathayGalactic: Fee 6707 -GalaxyExpress: Fee 2614 -MartianSpacelines: Discount 8672 -StarCruiser: Rebate 4792 -LunaLine: Tax 9582 -MartianSpacelines: Fee 3561 -CometAir: Fee 9850 -CelestialFlyer: Discount 9472 -AuroraSpace: Rebate 1221 -NebulaAir: Tax 3247 -RyanSpace: Fee 3216 -NovaWings: Discount 5991 -AuroraSpace: Tax 6601 -CosmoAir: Tax 1603 -GalaxyExpress: Discount 2910 -CometAir: Tax 8819 -StellarJet: Tax 2280 -Voyager: Tax 1101 -SolarSkies: Fee 2753 -NovaWings: Rebate 5802 -MartianSpacelines: Tax 7437 -QantasSpace: Tax 1904 -MartianSpacelines: Rebate 8399 -SpaceZ: Tax 4942 -GalaxyExpress: Discount 5286 -CathayGalactic: Rebate 1707 -Voyager: Discount 2475 -AuroraSpace: Tax 7525 -RyanSpace: Tax 4995 -SolarSkies: Discount 9556 -AstroWings: Tax 5939 -StarCruiser: Tax 5636 -LunaLine: Discount 3603 -StellarJet: Fee 6857 -CelestialFlyer: Tax 9386 -AuroraSpace: Tax 1743 -MartianSpacelines: Rebate 8825 -CathayGalactic: Tax 3348 -NovaWings: Rebate 3840 -CometAir: Fee 5997 -SolarSkies: Rebate 9179 -Voyager: Discount 9963 -StellarJet: Rebate 9565 -MartianSpacelines: Fee 8971 -CometAir: Discount 5369 -RyanSpace: Tax 776 -OrionAir: Discount 4816 -SpaceZ: Fee 3295 -StarCruiser: Rebate 6615 -OrionAir: Tax 3923 -QantasSpace: Discount 326 -RyanSpace: Discount 7325 -StellarJet: Discount 8474 -StellarJet: Fee 3027 -QantasSpace: Discount 4931 -CathayGalactic: Fee 4514 -MartianSpacelines: Discount 7615 -Voyager: Tax 3107 -MartianSpacelines: Fee 827 -GalaxyExpress: Rebate 1977 -GalaxyExpress: Discount 900 -SolarSkies: Rebate 4729 -CometAir: Fee 144 -NeptuneExpress: Discount 8925 -QantasSpace: Rebate 6456 -CathayGalactic: Fee 2342 -RyanSpace: Discount 9591 -OrionAir: Rebate 5762 -NovaWings: Rebate 4999 -NovaWings: Fee 1884 -AstroWings: Discount 4614 -LunaLine: Fee 857 -SolarSkies: Tax 1021 -RyanSpace: Tax 1244 -OrionAir: Fee 272 -GalaxyExpress: Tax 6478 -CosmoAir: Tax 8441 -Voyager: Tax 5602 -SpaceZ: Rebate 2706 -CometAir: Tax 6453 -Voyager: Fee 7072 -NebulaAir: Fee 2234 -AstroWings: Tax 1727 -GalaxyExpress: Rebate 8874 -MartianSpacelines: Tax 2170 -RyanSpace: Fee 481 -NebulaAir: Tax 5578 -RyanSpace: Tax 8667 -SolarSkies: Tax 4690 -GalaxyExpress: Tax 7881 -SolarSkies: Rebate 4724 -MartianSpacelines: Tax 2503 -Voyager: Fee 8598 -RyanSpace: Seat 310000 -CosmoAir: Rebate 4414 -LunaLine: Rebate 7440 -GalaxyExpress: Discount 1369 -CelestialFlyer: Discount 5578 -Voyager: Fee 399 -QantasSpace: Fee 9570 -RyanSpace: Tax 6346 -SpaceZ: Discount 1309 -CometAir: Fee 3018 -Voyager: Fee 7287 -NovaWings: Discount 7366 -RyanSpace: Tax 9545 -SolarSkies: Rebate 5469 -MartianSpacelines: Fee 3090 -SpaceZ: Tax 9087 -LunaLine: Discount 467 -NebulaAir: Discount 8199 -AstroWings: Discount 6337 -NovaWings: Discount 7333 -CometAir: Tax 6602 -OrionAir: Rebate 1770 -StellarJet: Rebate 2971 -GalaxyExpress: Rebate 7622 -OrionAir: Rebate 404 -NebulaAir: Tax 6408 -NovaWings: Fee 1197 -CometAir: Tax 5321 -NovaWings: Rebate 1642 -SolarSkies: Discount 1630 -AstroWings: Discount 7899 -CometAir: Rebate 3836 -SpaceZ: Fee 2323 -NebulaAir: Fee 2057 -QantasSpace: Rebate 4126 -QantasSpace: Discount 2164 -NeptuneExpress: Discount 2848 -NebulaAir: Tax 8239 -MartianSpacelines: Rebate 7347 -RyanSpace: Fee 7964 -SpaceZ: Fee 6536 -AstroWings: Fee 2227 -SpaceZ: Fee 7330 -NeptuneExpress: Rebate 4521 -NovaWings: Rebate 8870 -CometAir: Discount 3556 -OrionAir: Rebate 3959 -CosmoAir: Fee 7592 -OrionAir: Fee 6525 -StellarJet: Fee 7290 -NebulaAir: Discount 334 -MartianSpacelines: Tax 3818 -CelestialFlyer: Tax 3264 -QantasSpace: Tax 8600 -StellarJet: Tax 5605 -NeptuneExpress: Tax 8558 -NovaWings: Rebate 3688 -RyanSpace: Discount 793 -CometAir: Rebate 136 -GalaxyExpress: Rebate 5696 -NovaWings: Rebate 355 -QantasSpace: Fee 4704 -CometAir: Discount 3032 -NeptuneExpress: Discount 3030 -AstroWings: Fee 9439 -QantasSpace: Tax 7890 -AstroWings: Rebate 1115 -CometAir: Rebate 5635 -AuroraSpace: Discount 1077 -AuroraSpace: Tax 5153 -NebulaAir: Tax 5026 -CelestialFlyer: Tax 9239 -AuroraSpace: Rebate 2456 -Voyager: Fee 8384 -StarCruiser: Rebate 9492 -NebulaAir: Tax 9866 -StellarJet: Rebate 2340 -SpaceZ: Rebate 7852 -NeptuneExpress: Rebate 7531 -CosmoAir: Tax 3317 -SpaceZ: Tax 6795 -NeptuneExpress: Tax 9158 -AuroraSpace: Discount 1922 -LunaLine: Discount 729 -StellarJet: Tax 3892 -CometAir: Tax 2274 -CosmoAir: Fee 7221 -NovaWings: Tax 9343 -NebulaAir: Discount 9631 -SpaceZ: Fee 3537 -OrionAir: Rebate 5702 -AuroraSpace: Discount 9852 -CelestialFlyer: Rebate 9930 -Voyager: Rebate 3694 -SpaceZ: Rebate 1074 -CathayGalactic: Fee 5177 -GalaxyExpress: Fee 811 -CathayGalactic: Discount 4934 -NovaWings: Fee 6749 -Voyager: Fee 2172 -OrionAir: Fee 6432 -StarCruiser: Rebate 2707 -CometAir: Fee 2610 -QantasSpace: Discount 8181 -AuroraSpace: Discount 4554 -SpaceZ: Tax 9023 -CathayGalactic: Discount 6749 -QantasSpace: Rebate 779 -GalaxyExpress: Fee 8240 -SpaceZ: Discount 6310 -LunaLine: Fee 610 -MartianSpacelines: Rebate 1774 -AstroWings: Tax 589 -CathayGalactic: Rebate 1720 -MartianSpacelines: Fee 1544 -GalaxyExpress: Tax 376 -NebulaAir: Tax 5910 -CometAir: Discount 5707 -LunaLine: Rebate 9305 -SolarSkies: Fee 5493 -AstroWings: Rebate 524 -RyanSpace: Discount 8037 -CelestialFlyer: Discount 1110 -SolarSkies: Rebate 4710 -OrionAir: Rebate 7930 -NeptuneExpress: Rebate 2357 -OrionAir: Rebate 1714 -LunaLine: Discount 4057 -StarCruiser: Fee 4879 -CathayGalactic: Discount 5035 -NeptuneExpress: Discount 8633 -CelestialFlyer: Rebate 5559 -AstroWings: Discount 1435 -SolarSkies: Tax 1781 -AuroraSpace: Discount 4415 -NovaWings: Rebate 5265 -StarCruiser: Fee 8917 -GalaxyExpress: Discount 7721 -StellarJet: Rebate 9454 -Voyager: Rebate 4435 -SolarSkies: Discount 1802 -SolarSkies: Fee 2077 -AuroraSpace: Fee 5574 -SolarSkies: Rebate 6105 -CelestialFlyer: Rebate 7064 -GalaxyExpress: Tax 8288 -CosmoAir: Rebate 8363 -SolarSkies: Fee 6751 -StarCruiser: Tax 5066 -NeptuneExpress: Tax 8715 -QantasSpace: Fee 4906 -GalaxyExpress: Tax 6335 -AuroraSpace: Rebate 8068 -CelestialFlyer: Discount 7135 -NovaWings: Rebate 2061 -CosmoAir: Tax 967 -CosmoAir: Discount 2318 -NovaWings: Rebate 3326 -MartianSpacelines: Rebate 1984 -SolarSkies: Fee 6830 -SolarSkies: Fee 9451 -NebulaAir: Discount 2214 -QantasSpace: Fee 6946 -NovaWings: Tax 471 -StellarJet: Rebate 3926 -CathayGalactic: Rebate 319 -GalaxyExpress: Discount 6017 -SolarSkies: Discount 6954 -StarCruiser: Fee 7525 -StarCruiser: Rebate 9369 -GalaxyExpress: Rebate 6625 -OrionAir: Discount 8163 -OrionAir: Rebate 5775 -NebulaAir: Rebate 3443 -AstroWings: Fee 9466 -NeptuneExpress: Tax 8384 -CelestialFlyer: Rebate 7059 -NebulaAir: Rebate 2585 -NovaWings: Fee 416 -CometAir: Tax 498 -Voyager: Fee 1601 -SpaceZ: Rebate 9735 -CelestialFlyer: Meals 1800 -SpaceZ: Seat 230000 -GalaxyExpress: Discount 9452 -CelestialFlyer: Tax 1561 -Voyager: Discount 163 -SolarSkies: Tax 7525 -NovaWings: Tax 201 -CometAir: Tax 4443 -CathayGalactic: Fee 6032 -MartianSpacelines: Tax 8313 -CathayGalactic: Rebate 1134 -StarCruiser: Tax 7433 -AuroraSpace: Fee 5226 -CelestialFlyer: Discount 3573 -SpaceZ: Rebate 1075 -NebulaAir: Rebate 6013 -NovaWings: Fee 3039 -MartianSpacelines: Tax 5400 -LunaLine: Rebate 8695 -MartianSpacelines: Fee 9863 -AuroraSpace: Fee 5080 -GalaxyExpress: Discount 1314 -RyanSpace: Tax 3838 -StellarJet: Discount 2622 -SolarSkies: Rebate 3305 -GalaxyExpress: Fee 1215 -CathayGalactic: Discount 7182 -GalaxyExpress: Tax 1344 -CosmoAir: Tax 2293 -OrionAir: Luggage 6750 -NebulaAir: Fee 6057 -OrionAir: Fee 1585 -RyanSpace: Discount 1745 -StarCruiser: Discount 2257 -OrionAir: Rebate 3991 -CosmoAir: Discount 7365 -OrionAir: Rebate 4312 -LunaLine: Rebate 186 -NovaWings: Discount 741 -CelestialFlyer: Discount 330 -NebulaAir: Fee 4360 -SpaceZ: Discount 9629 -Voyager: Tax 9784 -NebulaAir: Tax 2919 -NeptuneExpress: Rebate 354 -QantasSpace: Rebate 7238 -AstroWings: Rebate 8140 -OrionAir: Fee 5159 -NebulaAir: Discount 3821 -NebulaAir: Luggage 9500 -RyanSpace: Discount 989 -OrionAir: Rebate 1658 -CathayGalactic: Tax 8964 -AstroWings: Tax 4922 -LunaLine: Discount 7071 -CelestialFlyer: Discount 139 -NeptuneExpress: Fee 5437 -NovaWings: Fee 5001 -GalaxyExpress: Rebate 6967 -CelestialFlyer: Tax 5368 -StellarJet: Discount 9100 -NebulaAir: Fee 1030 -CathayGalactic: Tax 6685 -StellarJet: Rebate 8716 -NebulaAir: Discount 9926 -RyanSpace: Discount 5366 -AstroWings: Tax 7203 -MartianSpacelines: Rebate 2016 -NebulaAir: Rebate 4078 -LunaLine: Fee 774 -CathayGalactic: Discount 9638 -CosmoAir: Fee 8819 -StellarJet: Tax 4589 -CathayGalactic: Tax 5025 -StellarJet: Fee 760 -CometAir: Discount 5527 -MartianSpacelines: Rebate 7149 -CosmoAir: Discount 9136 -MartianSpacelines: Tax 687 -GalaxyExpress: Fee 5370 -CathayGalactic: Tax 4861 -QantasSpace: Tax 8109 -LunaLine: Rebate 3114 -CathayGalactic: Tax 6859 -AuroraSpace: Tax 5720 -NebulaAir: Rebate 4127 -AuroraSpace: Tax 1426 -StellarJet: Tax 8605 -SpaceZ: Rebate 1129 -LunaLine: Fee 546 -NovaWings: Rebate 7129 -GalaxyExpress: Rebate 784 -CosmoAir: Discount 2028 -CometAir: Rebate 231 -SpaceZ: Rebate 3250 -NebulaAir: Rebate 7008 -CelestialFlyer: Fee 8345 -CathayGalactic: Tax 2549 -SpaceZ: Fee 1696 -CosmoAir: Discount 9073 -StellarJet: Fee 2590 -StellarJet: Rebate 8331 -LunaLine: Discount 1778 -NovaWings: Rebate 7557 -GalaxyExpress: Fee 1527 -OrionAir: Tax 450 -RyanSpace: Discount 2099 -NebulaAir: Rebate 6539 -MartianSpacelines: Fee 6238 -StarCruiser: Fee 5731 -AstroWings: Fee 4639 -CosmoAir: Discount 6118 -MartianSpacelines: Tax 5557 -CathayGalactic: Fee 9268 -MartianSpacelines: Rebate 4650 -AuroraSpace: Tax 2607 -Voyager: Discount 9720 -CometAir: Tax 3625 -RyanSpace: Fee 8852 -QantasSpace: Tax 4776 -Voyager: Tax 8983 -StellarJet: Fee 4303 -NovaWings: Tax 5351 -CathayGalactic: Rebate 4726 -NeptuneExpress: Tax 5624 -AuroraSpace: Rebate 922 -NovaWings: Fee 9369 -OrionAir: Rebate 4817 -AstroWings: Rebate 2929 -LunaLine: Rebate 2353 -SpaceZ: Tax 1951 -NeptuneExpress: Tax 6344 -CathayGalactic: Rebate 8648 -AuroraSpace: Discount 4142 -AuroraSpace: Rebate 8808 -StarCruiser: Tax 4929 -LunaLine: Tax 7873 -CathayGalactic: Discount 1949 -NeptuneExpress: Rebate 5582 -MartianSpacelines: Discount 2953 -QantasSpace: Rebate 4884 -SpaceZ: Fee 1083 -Voyager: Fee 4377 -NeptuneExpress: Discount 7383 -NovaWings: Fee 5197 -Voyager: Discount 7035 -CelestialFlyer: Rebate 995 -RyanSpace: Tax 4204 -CathayGalactic: Discount 9287 -AstroWings: Discount 589 -NeptuneExpress: Fee 4552 -GalaxyExpress: Fee 6877 -CelestialFlyer: Rebate 5012 -CelestialFlyer: Fee 3216 -CometAir: Rebate 7311 -AuroraSpace: Rebate 6096 -NeptuneExpress: Tax 9308 -CathayGalactic: Fee 719 -GalaxyExpress: Fee 6909 -MartianSpacelines: Discount 9477 -CelestialFlyer: Fee 302 -NovaWings: Discount 6576 -NovaWings: Rebate 6152 -NovaWings: Fee 4950 -SolarSkies: Rebate 9643 -CosmoAir: Discount 6061 -SolarSkies: Tax 3041 -SpaceZ: Discount 7782 -SolarSkies: Rebate 3032 -StarCruiser: Discount 9884 -SpaceZ: Discount 2862 -StarCruiser: Rebate 7722 -GalaxyExpress: Rebate 7157 -CometAir: Discount 8994 -NebulaAir: Fee 718 -StarCruiser: Rebate 8170 -StarCruiser: Tax 4011 -AuroraSpace: Rebate 8207 -Voyager: Tax 8990 -CelestialFlyer: Fee 3617 -NeptuneExpress: Fee 7974 -LunaLine: Discount 8008 -GalaxyExpress: Tax 5384 -CathayGalactic: Tax 9096 -AuroraSpace: Fee 1284 -Voyager: Tax 8558 -CosmoAir: Tax 5636 -CosmoAir: Discount 308 -MartianSpacelines: Tax 4635 -CometAir: Discount 6791 -StarCruiser: Tax 9069 -StarCruiser: Rebate 7324 -SolarSkies: Discount 399 -CosmoAir: Rebate 220 -NovaWings: Rebate 782 -MartianSpacelines: Tax 6324 -SpaceZ: Fee 7120 -CosmoAir: Discount 216 -MartianSpacelines: Rebate 7893 -StarCruiser: Rebate 7559 -Voyager: Discount 1856 -GalaxyExpress: Rebate 3395 -NovaWings: Tax 8969 -Voyager: Discount 3395 -OrionAir: Tax 1879 -AstroWings: Discount 2909 -AstroWings: Fee 7297 -CathayGalactic: Discount 1705 -CosmoAir: Tax 1049 -AstroWings: Discount 4712 -CometAir: Tax 2051 -StarCruiser: Tax 3946 -GalaxyExpress: Tax 8745 -Voyager: Tax 1677 -RyanSpace: Discount 2254 -CometAir: Discount 4909 -SolarSkies: Fee 4396 -SpaceZ: Rebate 4998 -StellarJet: Rebate 6611 -RyanSpace: Rebate 388 -SpaceZ: Tax 8946 -MartianSpacelines: Discount 1879 -CometAir: Fee 2120 -RyanSpace: Tax 2976 -SpaceZ: Rebate 5534 -QantasSpace: Fee 4644 -AuroraSpace: Rebate 567 -NeptuneExpress: Fee 7787 -CelestialFlyer: Discount 3044 -NeptuneExpress: Discount 4057 -MartianSpacelines: Discount 2736 -CometAir: Rebate 9076 -AuroraSpace: Discount 1165 -LunaLine: Tax 2068 -OrionAir: Fee 8728 -GalaxyExpress: Rebate 4094 -AstroWings: Discount 8662 -LunaLine: Fee 977 -QantasSpace: Rebate 9824 -QantasSpace: Fee 242 -QantasSpace: Rebate 4775 -AuroraSpace: Tax 6273 -AuroraSpace: Rebate 5433 -StellarJet: Tax 1850 -CosmoAir: Fee 591 -NovaWings: Discount 9311 -SolarSkies: Discount 1601 -SolarSkies: Fee 520 -NebulaAir: Tax 9079 -CometAir: Discount 6980 -StarCruiser: Discount 5670 -StarCruiser: Tax 9072 -RyanSpace: Rebate 877 -StarCruiser: Rebate 2722 -AuroraSpace: Tax 2259 -MartianSpacelines: Tax 2619 -LunaLine: Rebate 7262 -StellarJet: Rebate 441 -StellarJet: Fee 4245 -LunaLine: Fee 7013 -SolarSkies: Discount 6162 -GalaxyExpress: Rebate 4946 -AstroWings: Rebate 8656 -AstroWings: Fee 9202 -OrionAir: Rebate 2089 -CelestialFlyer: Fee 4918 -CelestialFlyer: Fee 392 -CelestialFlyer: Tax 7537 -LunaLine: Tax 5942 -SolarSkies: Tax 6025 -AuroraSpace: Discount 837 -CometAir: Fee 8086 -CathayGalactic: Rebate 6994 -AuroraSpace: Discount 8733 -CelestialFlyer: Tax 6652 -MartianSpacelines: Tax 6239 -StellarJet: Tax 3164 -SolarSkies: Fee 9828 -CelestialFlyer: Tax 7130 -LunaLine: Tax 8160 -GalaxyExpress: Fee 1790 -QantasSpace: Discount 5060 -LunaLine: Rebate 2527 -StellarJet: Discount 9781 -CelestialFlyer: Rebate 7519 -Voyager: Discount 9056 -NovaWings: Discount 241 -OrionAir: Tax 4548 -CosmoAir: Rebate 4961 -CelestialFlyer: Tax 135 -AuroraSpace: Tax 3965 -QantasSpace: Tax 1203 -CosmoAir: Tax 3577 -CathayGalactic: Fee 4751 -MartianSpacelines: Tax 2230 -AstroWings: Rebate 3109 -OrionAir: Discount 1243 -NeptuneExpress: Discount 5266 -NeptuneExpress: Fee 375 -CelestialFlyer: Fee 8572 -CosmoAir: Fee 2781 -NebulaAir: Tax 7665 -QantasSpace: Tax 4766 -StarCruiser: Rebate 4420 -SpaceZ: Fee 3151 -NeptuneExpress: Tax 761 -RyanSpace: Fee 6534 -NeptuneExpress: Fee 1970 -QantasSpace: Discount 2247 -NebulaAir: Discount 2013 -LunaLine: Tax 6365 -SolarSkies: Rebate 8653 -SolarSkies: Tax 245 -SpaceZ: Tax 6890 -GalaxyExpress: Discount 1072 -Voyager: Tax 2615 -StarCruiser: Rebate 6679 -QantasSpace: Tax 3022 -GalaxyExpress: Discount 6018 -SolarSkies: Fee 2340 -NeptuneExpress: Rebate 7290 -CometAir: Rebate 4999 -LunaLine: Rebate 5025 -NovaWings: Rebate 1359 -QantasSpace: Discount 5468 -QantasSpace: Discount 5091 -MartianSpacelines: Tax 4774 -CometAir: Discount 1310 -LunaLine: Tax 7292 -CosmoAir: Discount 9691 -CosmoAir: Discount 8158 -MartianSpacelines: Fee 4042 -MartianSpacelines: Rebate 5606 -AuroraSpace: Tax 7521 -CathayGalactic: Discount 6451 -NeptuneExpress: Rebate 5785 -QantasSpace: Rebate 897 -AuroraSpace: Rebate 2502 -OrionAir: Fee 3723 -QantasSpace: Fee 6891 -AuroraSpace: Fee 3285 -QantasSpace: Discount 2565 -RyanSpace: Rebate 5760 -StarCruiser: Tax 1800 -LunaLine: Tax 5640 -SolarSkies: Fee 5472 -StarCruiser: Rebate 6445 -StellarJet: Fee 3837 -CometAir: Rebate 874 -RyanSpace: Fee 8915 -OrionAir: Tax 1672 -StellarJet: Discount 2682 -GalaxyExpress: Discount 3940 -AstroWings: Fee 7943 -AuroraSpace: Fee 4672 -SolarSkies: Fee 3386 -CosmoAir: Fee 5268 -OrionAir: Tax 9194 -RyanSpace: Fee 9560 -NebulaAir: Tax 3770 -MartianSpacelines: Discount 6950 -CelestialFlyer: Rebate 610 -NovaWings: Discount 2604 -CosmoAir: Discount 8611 -CometAir: Discount 1600 -RyanSpace: Tax 1081 -Voyager: Rebate 4080 -CathayGalactic: Tax 2567 -OrionAir: Rebate 8489 -StarCruiser: Rebate 3589 -GalaxyExpress: Fee 1225 -LunaLine: Fee 7851 -MartianSpacelines: Discount 1077 -SpaceZ: Fee 9698 -GalaxyExpress: Discount 4463 -MartianSpacelines: Rebate 4308 -CelestialFlyer: Fee 3737 -CathayGalactic: Tax 4149 -CathayGalactic: Discount 7792 -OrionAir: Fee 5381 -CathayGalactic: Discount 6447 -CelestialFlyer: Fee 5399 -StellarJet: Fee 9523 -GalaxyExpress: Fee 3454 -LunaLine: Rebate 1622 -StarCruiser: Discount 9797 -CelestialFlyer: Rebate 9308 -NeptuneExpress: Fee 4492 -StarCruiser: Discount 5880 -NeptuneExpress: Tax 498 -CometAir: Rebate 8340 -CometAir: Tax 6088 -StarCruiser: Rebate 6219 -MartianSpacelines: Rebate 280 -AstroWings: Discount 783 -GalaxyExpress: Tax 6637 -SpaceZ: Fee 9964 -StellarJet: Tax 4533 -MartianSpacelines: Tax 5411 -NebulaAir: Discount 1769 -LunaLine: Fee 9507 -NovaWings: Rebate 7270 -MartianSpacelines: Fee 5095 -Voyager: Tax 4032 -SpaceZ: Tax 7434 -LunaLine: Discount 689 -StarCruiser: Luggage 4250 -AuroraSpace: Rebate 1116 -CosmoAir: Fee 2945 -CometAir: Rebate 8458 -SolarSkies: Fee 9974 -AuroraSpace: Fee 6216 -NebulaAir: Tax 3252 -MartianSpacelines: Tax 5332 -CathayGalactic: Fee 2517 -NeptuneExpress: Rebate 4032 -CathayGalactic: Fee 1435 -CosmoAir: Tax 3738 -StarCruiser: Fee 4936 -NebulaAir: Rebate 5371 -OrionAir: Tax 1886 -SpaceZ: Tax 9859 -NeptuneExpress: Tax 3030 -GalaxyExpress: Fee 3569 -LunaLine: Discount 3077 -NovaWings: Rebate 5418 -CelestialFlyer: Tax 3750 -Voyager: Rebate 1384 -RyanSpace: Fee 7580 -SpaceZ: Discount 3684 -AstroWings: Fee 4300 -QantasSpace: Tax 9779 -LunaLine: Discount 4463 -CelestialFlyer: Rebate 2059 -StarCruiser: Rebate 7609 -Voyager: Discount 856 -AuroraSpace: Fee 5402 -AuroraSpace: Fee 5067 -CathayGalactic: Fee 8255 -OrionAir: Discount 357 -StarCruiser: Discount 2236 -OrionAir: Rebate 3912 -NeptuneExpress: Discount 6015 -CometAir: Fee 7803 -StellarJet: Fee 8528 -CometAir: Tax 7213 -CometAir: Tax 9516 -StarCruiser: Discount 2533 -SpaceZ: Fee 3226 -Voyager: Fee 4263 -StarCruiser: Tax 7421 -Voyager: Rebate 7754 -LunaLine: Rebate 3411 -OrionAir: Discount 3253 -StellarJet: Tax 3964 -CosmoAir: Rebate 3938 -QantasSpace: Tax 5967 -CometAir: Fee 1377 -SpaceZ: Fee 6628 -Voyager: Tax 3759 -CathayGalactic: Luggage 1750 -MartianSpacelines: Discount 9839 -QantasSpace: Rebate 7062 -QantasSpace: Luggage 2500 -AstroWings: Discount 1017 -QantasSpace: Discount 8152 -AstroWings: Tax 8800 -StellarJet: Rebate 1744 -AstroWings: Discount 6651 -RyanSpace: Discount 2802 -QantasSpace: Fee 3314 -RyanSpace: Rebate 6239 -CosmoAir: Tax 1383 -Voyager: Discount 8757 -StarCruiser: Discount 7574 -OrionAir: Tax 6943 -NeptuneExpress: Tax 322 -AuroraSpace: Rebate 6279 -StarCruiser: Discount 4969 -StellarJet: Fee 5929 -SpaceZ: Rebate 4812 -CathayGalactic: Discount 4539 -StarCruiser: Fee 6802 -CosmoAir: Fee 1443 -CathayGalactic: Rebate 6008 -CelestialFlyer: Discount 3101 -GalaxyExpress: Tax 4893 -NebulaAir: Fee 5091 -SpaceZ: Tax 530 -CelestialFlyer: Fee 557 -QantasSpace: Rebate 9286 -NovaWings: Rebate 2822 -SolarSkies: Fee 5064 -NebulaAir: Fee 8898 -StellarJet: Fee 3866 -RyanSpace: Rebate 8687 -CometAir: Tax 7132 -CathayGalactic: Tax 9554 -CathayGalactic: Rebate 426 -QantasSpace: Tax 5577 -CelestialFlyer: Discount 3471 -SpaceZ: Rebate 6604 -NovaWings: Fee 3178 -OrionAir: Discount 3227 -CathayGalactic: Tax 3385 -CelestialFlyer: Fee 2164 -QantasSpace: Discount 541 -Voyager: Tax 5922 -AstroWings: Tax 851 -StellarJet: Rebate 5494 -AuroraSpace: Tax 3716 -StellarJet: Rebate 6858 -StellarJet: Discount 8041 -GalaxyExpress: Rebate 1905 -OrionAir: Discount 4653 -NeptuneExpress: Tax 8564 -LunaLine: Tax 8961 -CosmoAir: Discount 4538 -NebulaAir: Discount 2993 -CosmoAir: Fee 8707 -GalaxyExpress: Tax 1622 -AstroWings: Fee 9501 -GalaxyExpress: Rebate 9137 -AstroWings: Discount 7205 -MartianSpacelines: Tax 1906 -SpaceZ: Fee 5089 -CathayGalactic: Tax 4505 -StarCruiser: Rebate 2584 -QantasSpace: Fee 9052 -GalaxyExpress: Fee 8738 -SpaceZ: Fee 6562 -NeptuneExpress: Tax 9837 -CometAir: Rebate 3808 -StellarJet: Fee 2220 -AstroWings: Tax 2451 -SolarSkies: Discount 3204 -NeptuneExpress: Discount 6535 -RyanSpace: Discount 5573 -StellarJet: Discount 7842 -SpaceZ: Fee 5492 -NebulaAir: Fee 8363 -NebulaAir: Discount 6285 -StellarJet: Tax 8005 -StellarJet: Fee 2680 -Voyager: Fee 406 -StellarJet: Rebate 4460 -OrionAir: Rebate 7448 -NeptuneExpress: Fee 3253 -LunaLine: Discount 565 -NeptuneExpress: Rebate 6885 -Voyager: Fee 5887 -NovaWings: Fee 9557 -CelestialFlyer: Rebate 6695 -MartianSpacelines: Tax 8127 -AstroWings: Discount 7851 -GalaxyExpress: Tax 1832 -AstroWings: Tax 4749 -OrionAir: Rebate 7477 -CelestialFlyer: Rebate 6674 -StellarJet: Discount 5493 -NebulaAir: Tax 648 -GalaxyExpress: Fee 3672 -CelestialFlyer: Discount 6494 -NeptuneExpress: Discount 3092 -LunaLine: Rebate 3488 -SpaceZ: Discount 7734 -CelestialFlyer: Discount 5509 -NeptuneExpress: Rebate 6928 -Voyager: Discount 6548 -SpaceZ: Discount 1697 -StarCruiser: Fee 5631 -StarCruiser: Rebate 8966 -AuroraSpace: Rebate 824 -CelestialFlyer: Tax 1233 -CathayGalactic: Tax 611 -CosmoAir: Tax 4004 -CelestialFlyer: Tax 2702 -CelestialFlyer: Rebate 2580 -NebulaAir: Meals 3200 -QantasSpace: Rebate 1894 -StellarJet: Tax 6070 -LunaLine: Fee 1513 -SpaceZ: Fee 2973 -RyanSpace: Rebate 7674 -StarCruiser: Fee 8123 -AuroraSpace: Rebate 5664 -NovaWings: Tax 9827 -LunaLine: Fee 4033 -CometAir: Tax 241 -NebulaAir: Tax 9566 -GalaxyExpress: Discount 5505 -OrionAir: Discount 3471 -AuroraSpace: Tax 4258 -CelestialFlyer: Fee 1005 -SolarSkies: Rebate 1905 -CometAir: Rebate 9435 -MartianSpacelines: Rebate 7193 -AstroWings: Tax 7133 -LunaLine: Fee 9674 -MartianSpacelines: Discount 8092 -SolarSkies: Rebate 3862 -NovaWings: Rebate 8476 -AuroraSpace: Rebate 3801 -Voyager: Tax 9349 -CathayGalactic: Discount 1572 -CathayGalactic: Fee 5811 -RyanSpace: Tax 7840 -StarCruiser: Fee 3337 -RyanSpace: Discount 6737 -OrionAir: Fee 4274 -SpaceZ: Fee 8351 -MartianSpacelines: Fee 1120 -NovaWings: Fee 2515 -MartianSpacelines: Tax 6140 -NebulaAir: Tax 4531 -OrionAir: Discount 500 -CosmoAir: Discount 6128 -SolarSkies: Discount 5422 -AuroraSpace: Discount 7669 -CometAir: Meals 3400 -GalaxyExpress: Tax 3914 -RyanSpace: Fee 212 -SpaceZ: Tax 118 -LunaLine: Rebate 7549 -QantasSpace: Tax 8869 -GalaxyExpress: Discount 8729 -SolarSkies: Rebate 1680 -StellarJet: Rebate 5453 -SolarSkies: Discount 5103 -SpaceZ: Discount 678 -AuroraSpace: Discount 1734 -CathayGalactic: Discount 3766 -Voyager: Rebate 1234 -SpaceZ: Tax 5967 -AuroraSpace: Tax 3748 -NovaWings: Tax 8095 -NovaWings: Rebate 684 -StarCruiser: Discount 3325 -AuroraSpace: Tax 6049 -CelestialFlyer: Fee 2058 -SpaceZ: Discount 8816 -QantasSpace: Tax 5389 -GalaxyExpress: Rebate 9736 -SolarSkies: Fee 5957 -StarCruiser: Rebate 3351 -QantasSpace: Tax 608 -CometAir: Fee 3892 -RyanSpace: Fee 8340 -NebulaAir: Discount 608 -CosmoAir: Fee 9553 -SolarSkies: Rebate 8362 -RyanSpace: Rebate 5882 -CelestialFlyer: Rebate 8398 -QantasSpace: Tax 5193 -CometAir: Rebate 3957 -RyanSpace: Discount 7077 -SpaceZ: Fee 6562 -SpaceZ: Rebate 704 -NeptuneExpress: Discount 8671 -LunaLine: Fee 1964 -QantasSpace: Fee 951 -StarCruiser: Rebate 1718 -RyanSpace: Rebate 5745 -OrionAir: Tax 678 -OrionAir: Tax 4055 -OrionAir: Tax 4696 -NeptuneExpress: Discount 5374 -NovaWings: Tax 1699 -RyanSpace: Discount 4722 -LunaLine: Rebate 1699 -SolarSkies: Fee 1787 -OrionAir: Tax 7129 -LunaLine: Tax 1583 -NovaWings: Discount 874 -NeptuneExpress: Fee 7031 -AuroraSpace: Rebate 6522 -NeptuneExpress: Discount 127 -NebulaAir: Discount 1955 -CometAir: Rebate 4861 -GalaxyExpress: Rebate 175 -LunaLine: Discount 4198 -CometAir: Fee 1121 -CosmoAir: Discount 615 -CelestialFlyer: Discount 3825 -MartianSpacelines: Rebate 6722 -QantasSpace: Fee 3327 -NebulaAir: Discount 7386 -StarCruiser: Fee 8138 -AuroraSpace: Tax 1820 -RyanSpace: Tax 9573 -OrionAir: Fee 8876 -Voyager: Tax 7362 -CometAir: Tax 9787 -NovaWings: Rebate 9222 -CathayGalactic: Rebate 5725 -NebulaAir: Tax 2577 -StellarJet: Discount 4464 -MartianSpacelines: Discount 5828 -RyanSpace: Tax 739 -CosmoAir: Rebate 7071 -SpaceZ: Discount 7145 -SolarSkies: Rebate 6932 -MartianSpacelines: Rebate 4495 -MartianSpacelines: Discount 532 -NeptuneExpress: Fee 5626 -AstroWings: Discount 9655 -CosmoAir: Rebate 1224 -QantasSpace: Rebate 3575 -NeptuneExpress: Rebate 1388 -Voyager: Discount 2244 -AuroraSpace: Discount 5413 -StellarJet: Fee 5228 -CelestialFlyer: Discount 6745 -CelestialFlyer: Discount 7426 -NovaWings: Rebate 7292 -CometAir: Discount 5176 -AuroraSpace: Fee 9621 -StellarJet: Tax 4380 -NebulaAir: Fee 424 -RyanSpace: Fee 4024 -NeptuneExpress: Rebate 7784 -StellarJet: Fee 7260 -StellarJet: Discount 129 -NovaWings: Discount 6797 -NeptuneExpress: Discount 5777 -AuroraSpace: Discount 1919 -StarCruiser: Rebate 4250 -OrionAir: Rebate 4394 -CosmoAir: Fee 7618 -CelestialFlyer: Discount 4064 -RyanSpace: Fee 4378 -NovaWings: Tax 9640 -NebulaAir: Rebate 2090 -QantasSpace: Fee 6492 -NovaWings: Discount 1506 -StarCruiser: Rebate 9914 -NovaWings: Rebate 7609 -LunaLine: Fee 5210 -RyanSpace: Discount 3406 -QantasSpace: Tax 234 -NovaWings: Discount 2857 -CometAir: Fee 2788 -SpaceZ: Rebate 7330 -AuroraSpace: Fee 4292 -RyanSpace: Discount 408 -SpaceZ: Tax 1495 -AuroraSpace: Rebate 4019 -SolarSkies: Discount 2614 -StarCruiser: Rebate 978 -LunaLine: Discount 9706 -CosmoAir: Discount 4339 -RyanSpace: Fee 9514 -StellarJet: Discount 5219 -CathayGalactic: Discount 6662 -SolarSkies: Tax 4744 -NebulaAir: Discount 804 -AuroraSpace: Fee 1000 -GalaxyExpress: Tax 8049 -RyanSpace: Tax 4920 -LunaLine: Tax 8771 -StellarJet: Fee 9347 -LunaLine: Fee 8728 -SolarSkies: Discount 2884 -MartianSpacelines: Tax 5576 -AuroraSpace: Tax 7303 -CosmoAir: Rebate 9470 -CosmoAir: Fee 1518 -RyanSpace: Rebate 6364 -GalaxyExpress: Rebate 8109 -StellarJet: Discount 8893 -LunaLine: Fee 7947 -LunaLine: Rebate 590 -CathayGalactic: Tax 2724 -StellarJet: Discount 2920 -CosmoAir: Discount 2350 -AstroWings: Tax 681 -LunaLine: Rebate 1798 -LunaLine: Discount 6046 -NebulaAir: Discount 1062 -CelestialFlyer: Discount 2819 -SpaceZ: Discount 1840 -NeptuneExpress: Discount 6919 -CosmoAir: Tax 516 -OrionAir: Tax 4152 -AuroraSpace: Fee 6588 -NeptuneExpress: Rebate 6032 -Voyager: Tax 1119 -RyanSpace: Fee 2471 -QantasSpace: Discount 327 -NovaWings: Tax 7716 -CelestialFlyer: Tax 8808 -StellarJet: Tax 4366 -CathayGalactic: Discount 7709 -StarCruiser: Tax 8975 -Voyager: Fee 1545 -GalaxyExpress: Fee 9859 -CelestialFlyer: Tax 4508 -Voyager: Fee 8210 -SpaceZ: Tax 4427 -RyanSpace: Discount 7744 -NebulaAir: Discount 293 -NovaWings: Fee 8065 -NeptuneExpress: Fee 4688 -CosmoAir: Tax 1555 -NebulaAir: Fee 9395 -SpaceZ: Tax 3107 -AuroraSpace: Fee 7969 -CelestialFlyer: Rebate 3804 -Voyager: Discount 7649 -OrionAir: Discount 6981 -GalaxyExpress: Rebate 5902 -StarCruiser: Discount 4266 -OrionAir: Discount 4358 -AuroraSpace: Discount 1490 -AuroraSpace: Fee 4190 -RyanSpace: Meals 900 -MartianSpacelines: Rebate 7164 -AstroWings: Discount 2701 -CometAir: Discount 7416 -CathayGalactic: Tax 3198 -LunaLine: Fee 2395 -SolarSkies: Fee 8398 -AuroraSpace: Discount 2802 -StellarJet: Tax 523 -CathayGalactic: Discount 8696 -MartianSpacelines: Rebate 8163 -SolarSkies: Tax 7215 -StarCruiser: Rebate 1218 -CometAir: Rebate 9107 -NovaWings: Rebate 5775 -StarCruiser: Fee 6007 -SolarSkies: Luggage 2750 -NeptuneExpress: Tax 6210 -RyanSpace: Discount 6053 -OrionAir: Fee 5446 -NebulaAir: Tax 978 -StarCruiser: Discount 5209 -CelestialFlyer: Tax 8036 -CelestialFlyer: Discount 9725 -SolarSkies: Discount 1838 -StarCruiser: Fee 5465 -AstroWings: Discount 6397 -StellarJet: Discount 5449 -GalaxyExpress: Discount 8147 -OrionAir: Discount 4392 -StarCruiser: Discount 1318 -OrionAir: Fee 878 -NebulaAir: Tax 8948 -NebulaAir: Rebate 5420 -RyanSpace: Fee 2464 -AuroraSpace: Fee 3241 -AuroraSpace: Tax 8758 -CometAir: Fee 6407 -StarCruiser: Fee 4407 -RyanSpace: Rebate 1843 -CometAir: Rebate 1083 -NeptuneExpress: Discount 8689 -OrionAir: Rebate 9120 -OrionAir: Tax 3399 -QantasSpace: Fee 8461 -OrionAir: Fee 2220 -StarCruiser: Tax 3560 -LunaLine: Fee 4961 -MartianSpacelines: Fee 3029 -QantasSpace: Tax 7098 -CosmoAir: Fee 4733 -AuroraSpace: Rebate 8110 -StarCruiser: Rebate 774 -CathayGalactic: Rebate 4695 -NebulaAir: Rebate 8594 -CelestialFlyer: Tax 2218 -MartianSpacelines: Discount 4691 -SolarSkies: Rebate 2001 -StellarJet: Tax 4224 -GalaxyExpress: Tax 9292 -NeptuneExpress: Rebate 5100 -SolarSkies: Discount 7035 -LunaLine: Tax 6120 -NeptuneExpress: Fee 4688 -GalaxyExpress: Fee 9963 -CelestialFlyer: Discount 8918 -AstroWings: Tax 280 -SpaceZ: Discount 5488 -CometAir: Discount 5083 -GalaxyExpress: Fee 4564 -CosmoAir: Fee 8858 -LunaLine: Rebate 6983 -Voyager: Discount 1963 -MartianSpacelines: Discount 285 -CelestialFlyer: Rebate 9747 -NeptuneExpress: Discount 7848 -CosmoAir: Fee 283 -RyanSpace: Discount 8553 -MartianSpacelines: Discount 2856 -OrionAir: Discount 183 -CelestialFlyer: Fee 1130 -AuroraSpace: Discount 2581 -Voyager: Rebate 447 -NeptuneExpress: Fee 6186 -NovaWings: Rebate 8734 -QantasSpace: Tax 880 -Voyager: Fee 7161 -Voyager: Discount 188 -QantasSpace: Discount 2583 -NovaWings: Tax 377 -StarCruiser: Discount 575 -AuroraSpace: Fee 5143 -AuroraSpace: Rebate 7707 -CometAir: Rebate 5123 -QantasSpace: Discount 6073 -GalaxyExpress: Rebate 5403 -NebulaAir: Tax 1469 -CathayGalactic: Fee 3915 -StarCruiser: Rebate 1188 -SpaceZ: Rebate 9427 -StellarJet: Discount 7203 -StarCruiser: Rebate 1029 -CometAir: Discount 8137 -NeptuneExpress: Discount 8551 -LunaLine: Tax 9485 -MartianSpacelines: Rebate 3705 -OrionAir: Discount 4092 -LunaLine: Rebate 7629 -QantasSpace: Fee 9886 -MartianSpacelines: Rebate 8700 -AuroraSpace: Rebate 1549 -CosmoAir: Rebate 297 -CathayGalactic: Tax 2483 -AuroraSpace: Fee 2005 -MartianSpacelines: Tax 6554 -RyanSpace: Rebate 6672 -NebulaAir: Rebate 5095 -RyanSpace: Discount 3004 -OrionAir: Tax 4591 -NeptuneExpress: Discount 1739 -RyanSpace: Fee 8023 -LunaLine: Tax 5236 -MartianSpacelines: Fee 7611 -AuroraSpace: Rebate 7556 -NebulaAir: Tax 3580 -AuroraSpace: Fee 191 -MartianSpacelines: Discount 1987 -StellarJet: Tax 6363 -SpaceZ: Discount 7579 -RyanSpace: Rebate 2350 -AstroWings: Fee 3627 -StarCruiser: Discount 6877 -LunaLine: Discount 9593 -StellarJet: Rebate 1033 -CosmoAir: Discount 7881 -AstroWings: Fee 9128 -StarCruiser: Fee 6732 -CathayGalactic: Fee 522 -AstroWings: Discount 5835 -MartianSpacelines: Discount 7921 -QantasSpace: Rebate 6633 -CometAir: Discount 9065 -NovaWings: Discount 3110 -LunaLine: Rebate 3339 -OrionAir: Tax 1630 -AstroWings: Discount 2325 -StellarJet: Fee 8125 -StellarJet: Rebate 8112 -NeptuneExpress: Tax 6819 -LunaLine: Tax 1231 -NovaWings: Fee 1238 -CometAir: Rebate 7916 -LunaLine: Discount 6992 -StarCruiser: Tax 8578 -AstroWings: Rebate 9138 -QantasSpace: Fee 9129 -NeptuneExpress: Discount 724 -GalaxyExpress: Rebate 8889 -NeptuneExpress: Discount 6071 -StellarJet: Discount 5940 -StellarJet: Rebate 9104 -MartianSpacelines: Tax 6780 -NebulaAir: Discount 6194 -RyanSpace: Discount 3916 -AstroWings: Fee 2885 -GalaxyExpress: Tax 2257 -NebulaAir: Discount 2046 -StarCruiser: Discount 9033 -OrionAir: Discount 8991 -AuroraSpace: Fee 3109 -AstroWings: Discount 2610 -CelestialFlyer: Rebate 3130 -QantasSpace: Rebate 7207 -LunaLine: Tax 7617 -CathayGalactic: Fee 7266 -Voyager: Fee 8761 -StarCruiser: Tax 9175 -SolarSkies: Discount 4431 -NeptuneExpress: Discount 6136 -StarCruiser: Fee 6556 -AuroraSpace: Discount 824 -CathayGalactic: Fee 1850 -CosmoAir: Tax 7081 -NebulaAir: Discount 876 -OrionAir: Discount 3635 -AstroWings: Tax 1655 -MartianSpacelines: Rebate 5776 -AuroraSpace: Rebate 6010 -NeptuneExpress: Discount 1713 -Voyager: Tax 7637 -MartianSpacelines: Tax 2667 -NovaWings: Tax 5541 -AstroWings: Discount 7523 -SpaceZ: Discount 3483 -SolarSkies: Fee 9440 -Voyager: Discount 3625 -QantasSpace: Tax 5227 -NeptuneExpress: Fee 8663 -MartianSpacelines: Rebate 1704 -Voyager: Fee 9224 -Voyager: Fee 3386 -Voyager: Fee 4759 -NebulaAir: Rebate 3336 -MartianSpacelines: Fee 9365 -AstroWings: Discount 1892 -MartianSpacelines: Discount 6690 -NeptuneExpress: Tax 1651 -SpaceZ: Tax 6508 -AstroWings: Tax 940 -MartianSpacelines: Rebate 2782 -OrionAir: Tax 6939 -CathayGalactic: Discount 6492 -NeptuneExpress: Discount 9237 -OrionAir: Rebate 4581 -StellarJet: Discount 437 -StellarJet: Tax 1685 -NovaWings: Discount 5426 -RyanSpace: Tax 6567 -NebulaAir: Tax 6417 -GalaxyExpress: Fee 3879 -AuroraSpace: Rebate 6022 -Voyager: Tax 7454 -NeptuneExpress: Tax 5868 -NebulaAir: Rebate 6332 -CometAir: Fee 5247 -LunaLine: Discount 6639 -StarCruiser: Rebate 2799 -NebulaAir: Rebate 1088 -MartianSpacelines: Discount 4805 -CosmoAir: Rebate 6880 -OrionAir: Discount 2748 -CathayGalactic: Fee 1579 -StarCruiser: Discount 8707 -NeptuneExpress: Fee 8142 -GalaxyExpress: Tax 7546 -CometAir: Tax 3685 -CometAir: Fee 7956 -Voyager: Fee 698 -CelestialFlyer: Discount 5915 -QantasSpace: Fee 4544 -MartianSpacelines: Tax 9259 -CelestialFlyer: Discount 3310 -OrionAir: Fee 6514 -RyanSpace: Tax 1497 -NeptuneExpress: Tax 6764 -CometAir: Discount 8778 -GalaxyExpress: Tax 2128 -MartianSpacelines: Rebate 8574 -GalaxyExpress: Fee 2202 -CosmoAir: Tax 8974 -NeptuneExpress: Fee 9454 -NebulaAir: Tax 3779 -LunaLine: Discount 6627 -OrionAir: Rebate 5789 -NeptuneExpress: Tax 5517 -Voyager: Discount 1539 -CometAir: Tax 2421 -CelestialFlyer: Discount 9730 -SpaceZ: Discount 5300 -CosmoAir: Tax 9553 -NeptuneExpress: Tax 8188 -StarCruiser: Tax 5122 -GalaxyExpress: Rebate 6892 -AuroraSpace: Discount 5609 -CosmoAir: Rebate 331 -AuroraSpace: Discount 2672 -CosmoAir: Rebate 7335 -LunaLine: Fee 1796 -CelestialFlyer: Tax 8320 -NovaWings: Discount 8310 -SpaceZ: Tax 7543 -MartianSpacelines: Fee 6407 -NeptuneExpress: Rebate 8116 -LunaLine: Fee 6629 -LunaLine: Fee 8354 -RyanSpace: Rebate 9776 -NovaWings: Discount 4202 -CometAir: Fee 5504 -CosmoAir: Fee 1954 -RyanSpace: Discount 1814 -OrionAir: Rebate 850 -RyanSpace: Rebate 4840 -GalaxyExpress: Fee 1511 -StarCruiser: Discount 6519 -NeptuneExpress: Tax 5514 -RyanSpace: Fee 9712 -StellarJet: Rebate 3405 -SpaceZ: Discount 9285 -RyanSpace: Rebate 9125 -AuroraSpace: Rebate 2470 -OrionAir: Fee 751 -CometAir: Rebate 6008 -CometAir: Rebate 1325 -CosmoAir: Rebate 1225 -CosmoAir: Fee 1848 -LunaLine: Discount 2078 -NeptuneExpress: Rebate 7744 -LunaLine: Fee 4063 -NovaWings: Rebate 5885 -StarCruiser: Tax 4412 -CometAir: Discount 739 -OrionAir: Discount 8332 -NeptuneExpress: Tax 850 -QantasSpace: Fee 612 -GalaxyExpress: Discount 7782 -MartianSpacelines: Rebate 7036 -QantasSpace: Discount 3618 -LunaLine: Rebate 4587 -CathayGalactic: Rebate 3459 -NebulaAir: Discount 5969 -QantasSpace: Discount 7133 -NovaWings: Discount 4304 -Voyager: Discount 5912 -GalaxyExpress: Tax 9101 -OrionAir: Discount 5729 -NeptuneExpress: Rebate 7315 -NeptuneExpress: Fee 1001 -Voyager: Tax 4373 -RyanSpace: Rebate 975 -StellarJet: Fee 1031 -LunaLine: Rebate 1464 -CathayGalactic: Rebate 6820 -QantasSpace: Rebate 664 -LunaLine: Discount 4438 -SpaceZ: Fee 9663 -CosmoAir: Fee 5226 -LunaLine: Rebate 6038 -CathayGalactic: Tax 4709 -CosmoAir: Discount 7113 -GalaxyExpress: Discount 8243 -AstroWings: Fee 6682 -OrionAir: Discount 1419 -CometAir: Discount 967 -CometAir: Fee 665 -MartianSpacelines: Tax 8268 -SpaceZ: Fee 7172 -SolarSkies: Tax 5645 -OrionAir: Rebate 4284 -Voyager: Tax 1176 -Voyager: Fee 901 -CathayGalactic: Discount 9543 -NovaWings: Rebate 4090 -OrionAir: Tax 486 -QantasSpace: Rebate 4732 -AuroraSpace: Tax 8450 -StarCruiser: Tax 2879 -GalaxyExpress: Tax 4451 -NovaWings: Tax 4464 -SpaceZ: Discount 3108 -AuroraSpace: Discount 5159 -CathayGalactic: Fee 3901 -CathayGalactic: Tax 9377 -NebulaAir: Rebate 5204 -LunaLine: Discount 9750 -NovaWings: Fee 4183 -NebulaAir: Tax 2829 -AstroWings: Discount 4841 -CathayGalactic: Rebate 3283 -CelestialFlyer: Fee 4386 -NeptuneExpress: Fee 7738 -Voyager: Discount 5135 -GalaxyExpress: Tax 3937 -NovaWings: Discount 3142 -NovaWings: Tax 7995 -StellarJet: Fee 9355 -MartianSpacelines: Tax 4005 -LunaLine: Tax 5317 -StarCruiser: Tax 5559 -SolarSkies: Tax 8903 -SpaceZ: Rebate 3216 -AstroWings: Tax 7671 -NebulaAir: Tax 3789 -CosmoAir: Fee 9771 -NeptuneExpress: Fee 7843 -QantasSpace: Tax 2132 -CometAir: Discount 2039 -Voyager: Discount 7493 -OrionAir: Tax 4198 -Voyager: Fee 3747 -CometAir: Rebate 3696 -NovaWings: Tax 2675 -RyanSpace: Discount 7857 -StellarJet: Discount 2645 -CometAir: Tax 6923 -LunaLine: Rebate 9102 -LunaLine: Tax 4669 -Voyager: Discount 4884 -StarCruiser: Fee 7762 -OrionAir: Discount 928 -CelestialFlyer: Fee 5015 -StarCruiser: Discount 326 -OrionAir: Rebate 9919 -CelestialFlyer: Seat 490000 -RyanSpace: Rebate 5142 -LunaLine: Tax 9936 -CosmoAir: Tax 8242 -NebulaAir: Fee 4495 -RyanSpace: Discount 2168 -CometAir: Discount 9702 -NebulaAir: Rebate 5444 -Voyager: Discount 4911 -RyanSpace: Tax 5752 -MartianSpacelines: Tax 2114 -CelestialFlyer: Fee 361 -CosmoAir: Fee 3980 -AstroWings: Rebate 8288 -CelestialFlyer: Rebate 8429 -Voyager: Fee 4283 -QantasSpace: Fee 2801 -NeptuneExpress: Tax 9548 -LunaLine: Discount 6756 -LunaLine: Rebate 7549 -AuroraSpace: Fee 4889 -RyanSpace: Fee 577 -MartianSpacelines: Rebate 1783 -AuroraSpace: Seat 280000 -CathayGalactic: Tax 2153 -NeptuneExpress: Rebate 8559 -StellarJet: Fee 3043 -LunaLine: Discount 4947 -Voyager: Discount 6129 -NeptuneExpress: Luggage 9500 -StellarJet: Fee 3973 -QantasSpace: Fee 6274 -NovaWings: Fee 8788 -LunaLine: Rebate 5698 -StellarJet: Fee 2115 -CelestialFlyer: Rebate 213 -NeptuneExpress: Fee 8609 -CelestialFlyer: Rebate 4749 -QantasSpace: Rebate 8347 -NeptuneExpress: Fee 7043 -MartianSpacelines: Discount 847 -QantasSpace: Rebate 7620 -CosmoAir: Tax 1974 -NeptuneExpress: Tax 9865 -StarCruiser: Rebate 3576 -SolarSkies: Rebate 3877 -SpaceZ: Tax 2595 -QantasSpace: Fee 7259 -SpaceZ: Tax 2071 -GalaxyExpress: Rebate 2337 -RyanSpace: Discount 1099 -CometAir: Rebate 8642 -StarCruiser: Tax 6271 -CathayGalactic: Rebate 3202 -SolarSkies: Fee 183 -Voyager: Tax 242 -CometAir: Rebate 8368 -LunaLine: Rebate 574 -AuroraSpace: Rebate 8726 -AstroWings: Fee 4605 -LunaLine: Rebate 8837 -Voyager: Tax 4688 -CometAir: Rebate 1196 -NeptuneExpress: Rebate 8837 -CosmoAir: Rebate 2905 -CelestialFlyer: Fee 2532 -QantasSpace: Fee 9732 -SpaceZ: Discount 7674 -SolarSkies: Tax 8620 -MartianSpacelines: Tax 2360 -GalaxyExpress: Fee 3841 -OrionAir: Fee 1776 -GalaxyExpress: Discount 4156 -CometAir: Rebate 9875 -NovaWings: Tax 3340 -StellarJet: Rebate 5087 -AstroWings: Rebate 3074 -NebulaAir: Discount 3139 -SpaceZ: Tax 2946 -CathayGalactic: Fee 9295 -StarCruiser: Rebate 7566 -SpaceZ: Rebate 4537 -StellarJet: Fee 7306 -AuroraSpace: Tax 8776 -OrionAir: Fee 9800 -StellarJet: Tax 5489 -MartianSpacelines: Discount 9553 -SpaceZ: Rebate 9070 -NebulaAir: Discount 5093 -SpaceZ: Fee 5220 -GalaxyExpress: Discount 4436 -AuroraSpace: Fee 1526 -OrionAir: Rebate 487 -GalaxyExpress: Fee 7288 -CosmoAir: Rebate 2605 -StellarJet: Fee 2477 -CosmoAir: Tax 6657 -GalaxyExpress: Rebate 4966 -SolarSkies: Discount 7527 -OrionAir: Tax 1291 -StarCruiser: Discount 7754 -StellarJet: Tax 224 -CometAir: Discount 2961 -MartianSpacelines: Discount 2214 -CometAir: Rebate 7894 -SpaceZ: Fee 2329 -CosmoAir: Discount 4962 -LunaLine: Discount 9742 -CometAir: Tax 5592 -NovaWings: Tax 7413 -NeptuneExpress: Tax 140 -StellarJet: Discount 9888 -LunaLine: Discount 2678 -CelestialFlyer: Discount 1803 -SpaceZ: Fee 2314 -NovaWings: Fee 8622 -SolarSkies: Discount 8819 -MartianSpacelines: Discount 327 -CosmoAir: Rebate 3961 -QantasSpace: Fee 4975 -CathayGalactic: Discount 4473 -SolarSkies: Discount 5302 -LunaLine: Fee 6237 -CathayGalactic: Tax 9975 -MartianSpacelines: Meals 4500 -QantasSpace: Fee 9134 -QantasSpace: Tax 7496 -OrionAir: Tax 4219 -LunaLine: Discount 6084 -LunaLine: Discount 8283 -StarCruiser: Tax 7073 -MartianSpacelines: Fee 8267 -CelestialFlyer: Fee 7490 -SpaceZ: Tax 8184 -CometAir: Fee 7078 -StellarJet: Tax 425 -RyanSpace: Fee 9586 -AstroWings: Fee 4890 -AstroWings: Discount 1389 -NovaWings: Discount 1482 -NovaWings: Fee 4642 -RyanSpace: Fee 1416 -NovaWings: Fee 4185 -AuroraSpace: Rebate 1576 -CometAir: Rebate 330 -CosmoAir: Fee 4321 -AuroraSpace: Rebate 804 -StarCruiser: Tax 2408 -GalaxyExpress: Fee 9561 -GalaxyExpress: Fee 5158 -CelestialFlyer: Fee 5997 -AstroWings: Rebate 7231 -NeptuneExpress: Seat 390000 -SpaceZ: Tax 8664 -AstroWings: Fee 7003 -CometAir: Discount 9973 -OrionAir: Tax 6625 -CelestialFlyer: Luggage 7000 -NovaWings: Fee 7839 -NeptuneExpress: Fee 9015 -StarCruiser: Discount 7456 -OrionAir: Discount 1991 -OrionAir: Discount 8242 -AuroraSpace: Tax 3283 -MartianSpacelines: Tax 9638 -NovaWings: Rebate 564 -RyanSpace: Tax 4228 -LunaLine: Rebate 1657 -SolarSkies: Rebate 980 -StellarJet: Fee 118 -QantasSpace: Rebate 9363 -StarCruiser: Fee 7740 -RyanSpace: Tax 7771 -NovaWings: Tax 9289 -GalaxyExpress: Discount 2327 -Voyager: Discount 2857 -SpaceZ: Fee 3567 -CometAir: Fee 4796 -Voyager: Rebate 4743 -MartianSpacelines: Fee 8292 -AstroWings: Tax 1111 -MartianSpacelines: Fee 3653 -SolarSkies: Rebate 7483 -AuroraSpace: Tax 4915 -AstroWings: Rebate 5125 -StellarJet: Fee 2355 -QantasSpace: Discount 554 -NeptuneExpress: Discount 5780 -StellarJet: Fee 8341 -StellarJet: Fee 4361 -StellarJet: Fee 3363 -CathayGalactic: Discount 335 -CelestialFlyer: Rebate 1129 -CometAir: Fee 8266 -AuroraSpace: Rebate 7989 -RyanSpace: Tax 3778 -CelestialFlyer: Tax 5945 -MartianSpacelines: Discount 3777 -GalaxyExpress: Rebate 7252 -MartianSpacelines: Tax 6263 -MartianSpacelines: Rebate 6415 -StellarJet: Rebate 8875 -OrionAir: Fee 221 -QantasSpace: Tax 4382 -CelestialFlyer: Tax 5074 -NebulaAir: Tax 1151 -CometAir: Tax 158 -LunaLine: Rebate 4724 -CelestialFlyer: Discount 4866 -StarCruiser: Tax 4736 -Voyager: Rebate 8149 -StellarJet: Rebate 1159 -MartianSpacelines: Rebate 4989 -NeptuneExpress: Discount 9772 -AuroraSpace: Rebate 7615 -NovaWings: Rebate 3008 -SpaceZ: Tax 2966 -StellarJet: Rebate 7827 -RyanSpace: Rebate 3979 -SpaceZ: Discount 8311 -QantasSpace: Rebate 1631 -QantasSpace: Tax 9536 -NebulaAir: Fee 7354 -NebulaAir: Fee 4751 -SolarSkies: Discount 4669 -CathayGalactic: Discount 8327 -OrionAir: Rebate 8040 -SolarSkies: Fee 2349 -NeptuneExpress: Fee 3453 -CometAir: Tax 560 -MartianSpacelines: Fee 6349 -CosmoAir: Rebate 1999 -NebulaAir: Tax 3279 -AstroWings: Discount 8867 -CathayGalactic: Fee 2314 -StarCruiser: Fee 5330 -NebulaAir: Rebate 8639 -Voyager: Discount 2033 -CosmoAir: Tax 6222 -AstroWings: Fee 3940 -RyanSpace: Discount 3572 -StarCruiser: Fee 3633 -StarCruiser: Tax 2108 -SolarSkies: Rebate 4444 -SolarSkies: Discount 111 -CometAir: Discount 1326 -Voyager: Discount 3126 -NovaWings: Tax 5063 -AstroWings: Rebate 1702 -NebulaAir: Fee 7437 -NeptuneExpress: Fee 7166 -Voyager: Fee 3567 -SpaceZ: Tax 1395 -SolarSkies: Discount 8870 -SpaceZ: Tax 7970 -AstroWings: Tax 8128 -SolarSkies: Tax 901 -AuroraSpace: Discount 4703 -CelestialFlyer: Discount 1783 -GalaxyExpress: Discount 8214 -CometAir: Discount 7709 -NovaWings: Tax 8828 -StarCruiser: Discount 8051 -NeptuneExpress: Fee 5137 -MartianSpacelines: Luggage 9000 -StellarJet: Discount 9164 -NebulaAir: Fee 2587 -QantasSpace: Tax 765 -SpaceZ: Discount 6591 -StellarJet: Tax 8815 -StarCruiser: Fee 730 -StarCruiser: Tax 3888 -NebulaAir: Fee 7025 -NovaWings: Rebate 5633 -QantasSpace: Tax 1681 -QantasSpace: Fee 5828 -NeptuneExpress: Fee 9699 -SolarSkies: Fee 8555 -StarCruiser: Tax 457 -AstroWings: Discount 7265 -MartianSpacelines: Rebate 1811 -AuroraSpace: Tax 8698 -SolarSkies: Fee 7098 -LunaLine: Rebate 8769 -StarCruiser: Tax 4832 -AstroWings: Tax 8957 -OrionAir: Rebate 5560 -NovaWings: Tax 3308 -NeptuneExpress: Rebate 5322 -OrionAir: Discount 3866 -CometAir: Tax 7887 -RyanSpace: Tax 434 -Voyager: Tax 3091 -RyanSpace: Discount 899 -OrionAir: Rebate 3415 -RyanSpace: Fee 6812 -GalaxyExpress: Discount 8321 -SpaceZ: Tax 2101 -Voyager: Rebate 7295 -NeptuneExpress: Tax 4513 -StarCruiser: Fee 9002 -NovaWings: Tax 6462 -GalaxyExpress: Discount 9498 -QantasSpace: Rebate 3628 -LunaLine: Discount 9005 -CometAir: Rebate 6290 -CosmoAir: Seat 210000 -CathayGalactic: Tax 2595 -GalaxyExpress: Fee 7823 -OrionAir: Tax 3020 -MartianSpacelines: Tax 1522 -NeptuneExpress: Tax 9296 -NeptuneExpress: Discount 3396 -SpaceZ: Discount 3869 -AuroraSpace: Fee 794 -OrionAir: Tax 4753 -AuroraSpace: Tax 4139 -OrionAir: Fee 1386 -StellarJet: Fee 689 -StarCruiser: Discount 2007 -CathayGalactic: Discount 7537 -MartianSpacelines: Fee 5675 -NebulaAir: Rebate 7275 -SpaceZ: Tax 2797 -GalaxyExpress: Fee 700 -OrionAir: Tax 1394 -QantasSpace: Rebate 4965 -CathayGalactic: Tax 1093 -LunaLine: Rebate 679 -CosmoAir: Fee 4175 -SpaceZ: Fee 5911 -NeptuneExpress: Fee 7604 -OrionAir: Tax 8789 -GalaxyExpress: Fee 4524 -SpaceZ: Discount 1365 -StellarJet: Tax 6780 -GalaxyExpress: Fee 288 -CosmoAir: Discount 295 -StarCruiser: Rebate 4802 -SpaceZ: Rebate 8964 -SolarSkies: Discount 791 -CosmoAir: Rebate 7870 -QantasSpace: Rebate 6943 -Voyager: Rebate 612 -StellarJet: Rebate 5930 -StarCruiser: Rebate 5814 -SpaceZ: Fee 8663 -QantasSpace: Fee 7199 -NebulaAir: Tax 9689 -CosmoAir: Tax 3366 -RyanSpace: Tax 3138 -CosmoAir: Tax 6350 -RyanSpace: Rebate 4645 -Voyager: Discount 3127 -LunaLine: Fee 3540 -Voyager: Discount 5713 -LunaLine: Discount 6380 -Voyager: Discount 9064 -StarCruiser: Tax 4251 -NovaWings: Rebate 4083 -NeptuneExpress: Fee 307 -GalaxyExpress: Tax 767 -RyanSpace: Fee 9189 -QantasSpace: Rebate 2756 -NebulaAir: Discount 4848 -StarCruiser: Rebate 8660 -CathayGalactic: Rebate 2487 -SolarSkies: Tax 3770 -OrionAir: Fee 9732 -QantasSpace: Discount 5021 -CathayGalactic: Fee 9197 -MartianSpacelines: Rebate 2792 -OrionAir: Fee 8804 -NebulaAir: Fee 3662 -RyanSpace: Tax 3637 -RyanSpace: Rebate 4019 -AstroWings: Fee 331 -Voyager: Fee 7743 -StellarJet: Fee 8410 -QantasSpace: Rebate 5923 -SpaceZ: Fee 6175 -AstroWings: Rebate 3477 -NeptuneExpress: Discount 8054 -StellarJet: Discount 6486 -AuroraSpace: Tax 8618 -GalaxyExpress: Discount 9728 -RyanSpace: Fee 8283 -CosmoAir: Rebate 7200 -SolarSkies: Fee 6703 -SpaceZ: Fee 3408 -OrionAir: Discount 8243 -SolarSkies: Discount 5393 -NeptuneExpress: Rebate 3145 -CelestialFlyer: Tax 5988 -MartianSpacelines: Tax 636 -StellarJet: Seat 380000 -SolarSkies: Fee 7027 -Voyager: Fee 6317 -SpaceZ: Tax 7848 -StarCruiser: Fee 1694 -CosmoAir: Tax 6948 -CometAir: Tax 3522 -Voyager: Tax 708 -SolarSkies: Discount 6384 -StarCruiser: Tax 4605 -CathayGalactic: Tax 464 -StellarJet: Tax 8383 -SolarSkies: Rebate 6527 -CosmoAir: Fee 2192 -CelestialFlyer: Discount 5288 -LunaLine: Discount 6684 -CometAir: Rebate 4635 -CelestialFlyer: Fee 9670 -SolarSkies: Fee 8698 -SpaceZ: Rebate 8804 -SolarSkies: Rebate 7542 -AstroWings: Tax 808 -SpaceZ: Fee 6043 -NovaWings: Rebate 1135 -AuroraSpace: Tax 310 -NovaWings: Fee 2767 -MartianSpacelines: Fee 4504 -RyanSpace: Discount 4191 -CelestialFlyer: Rebate 3697 -CosmoAir: Discount 7584 -AuroraSpace: Rebate 9515 -OrionAir: Fee 4979 -RyanSpace: Fee 4851 -CosmoAir: Discount 535 -CelestialFlyer: Discount 9350 -NeptuneExpress: Rebate 9727 -NovaWings: Rebate 984 -AuroraSpace: Rebate 2609 -NebulaAir: Seat 300000 -RyanSpace: Tax 9143 -AuroraSpace: Discount 9075 -CathayGalactic: Discount 4100 -CelestialFlyer: Rebate 5337 -NebulaAir: Rebate 929 -OrionAir: Discount 2409 -StarCruiser: Tax 7820 -RyanSpace: Fee 608 -SolarSkies: Fee 247 -CosmoAir: Rebate 2338 -AuroraSpace: Discount 5573 -RyanSpace: Tax 7729 -CathayGalactic: Tax 1158 -RyanSpace: Tax 7624 -StellarJet: Discount 1287 -LunaLine: Rebate 2653 -LunaLine: Fee 4102 -GalaxyExpress: Rebate 5593 -RyanSpace: Rebate 5856 -AstroWings: Fee 4581 -AstroWings: Fee 2406 -CometAir: Rebate 5244 -NovaWings: Tax 6246 -NovaWings: Tax 4277 -Voyager: Rebate 7265 -CometAir: Rebate 8744 -CometAir: Tax 8900 -CometAir: Rebate 1944 -SolarSkies: Tax 3044 -CometAir: Discount 7263 -Voyager: Seat 400000 -SolarSkies: Rebate 8840 -RyanSpace: Tax 6527 -NeptuneExpress: Rebate 9282 -CelestialFlyer: Fee 1787 -AstroWings: Tax 1135 -OrionAir: Discount 4298 -CosmoAir: Tax 1914 -AstroWings: Fee 8220 -SpaceZ: Tax 9909 -CelestialFlyer: Rebate 1171 -AuroraSpace: Tax 6818 -CelestialFlyer: Discount 507 -NeptuneExpress: Discount 3923 -LunaLine: Discount 9288 -SpaceZ: Fee 5610 -CelestialFlyer: Tax 6291 -StellarJet: Rebate 9317 -NovaWings: Rebate 9636 -SpaceZ: Tax 5111 -NebulaAir: Tax 5523 -AuroraSpace: Tax 8656 -OrionAir: Fee 926 -LunaLine: Rebate 9195 -CosmoAir: Rebate 773 -NebulaAir: Rebate 1454 -LunaLine: Discount 2311 -GalaxyExpress: Fee 1640 -GalaxyExpress: Fee 5578 -NeptuneExpress: Discount 5372 -CosmoAir: Discount 5809 -QantasSpace: Rebate 2351 -RyanSpace: Rebate 5803 -CathayGalactic: Rebate 4069 -OrionAir: Rebate 9960 -NeptuneExpress: Rebate 2944 -StarCruiser: Fee 2287 -LunaLine: Tax 7877 -CathayGalactic: Tax 6536 -Voyager: Tax 1016 -SolarSkies: Rebate 1848 -AuroraSpace: Rebate 4273 -SpaceZ: Tax 6390 -OrionAir: Tax 9291 -Voyager: Discount 5621 -CometAir: Tax 3066 -LunaLine: Tax 9813 -SolarSkies: Fee 9617 -Voyager: Discount 426 -StellarJet: Fee 7791 -CathayGalactic: Tax 710 -GalaxyExpress: Rebate 5657 -NeptuneExpress: Discount 302 -CelestialFlyer: Tax 6928 -QantasSpace: Fee 8601 -QantasSpace: Rebate 3201 -NovaWings: Fee 9061 -CathayGalactic: Tax 9331 -StarCruiser: Rebate 8256 -StellarJet: Fee 9866 -AstroWings: Fee 895 -RyanSpace: Tax 2122 -NeptuneExpress: Fee 6468 -NovaWings: Rebate 6678 -QantasSpace: Discount 2271 -AuroraSpace: Rebate 2935 -CathayGalactic: Tax 1964 -NeptuneExpress: Discount 8283 -StellarJet: Discount 5416 -OrionAir: Tax 2034 -QantasSpace: Discount 3741 -NovaWings: Tax 1010 -SolarSkies: Fee 9663 -QantasSpace: Fee 6024 -QantasSpace: Fee 7279 -CathayGalactic: Rebate 1315 -MartianSpacelines: Fee 177 -CosmoAir: Rebate 3997 -QantasSpace: Discount 8543 -Voyager: Tax 1009 -SolarSkies: Rebate 1884 -SolarSkies: Tax 7725 -Voyager: Fee 9228 -NebulaAir: Rebate 2125 -NeptuneExpress: Rebate 3722 -LunaLine: Fee 9139 -MartianSpacelines: Rebate 5559 -Voyager: Discount 5198 -NeptuneExpress: Discount 3731 -NebulaAir: Discount 8291 -MartianSpacelines: Discount 9633 -SolarSkies: Fee 7778 -StellarJet: Discount 4929 -AuroraSpace: Tax 9239 -MartianSpacelines: Rebate 7419 -OrionAir: Tax 5985 -AuroraSpace: Tax 7888 -QantasSpace: Fee 9579 -MartianSpacelines: Fee 8117 -SpaceZ: Tax 1545 -StellarJet: Discount 5040 -AuroraSpace: Tax 9859 -CathayGalactic: Discount 9810 -SolarSkies: Fee 4496 -AstroWings: Tax 7278 -LunaLine: Discount 3524 -MartianSpacelines: Rebate 3616 -CelestialFlyer: Rebate 3163 -NeptuneExpress: Rebate 6183 -SolarSkies: Tax 8838 -Voyager: Tax 3530 -StellarJet: Tax 9650 -GalaxyExpress: Tax 1089 -SolarSkies: Discount 3502 -OrionAir: Discount 1197 -CathayGalactic: Fee 9386 -LunaLine: Rebate 3998 -Voyager: Rebate 8258 -StarCruiser: Fee 5011 -SolarSkies: Fee 2527 -StellarJet: Rebate 1466 -NeptuneExpress: Fee 1889 -CometAir: Discount 561 -SpaceZ: Fee 1256 -CelestialFlyer: Fee 4472 -CosmoAir: Fee 4979 -StellarJet: Discount 2060 -NeptuneExpress: Tax 189 -CometAir: Tax 4298 -StarCruiser: Tax 9612 -RyanSpace: Rebate 9337 -SolarSkies: Rebate 2262 -LunaLine: Fee 2337 -CometAir: Tax 1738 -StarCruiser: Fee 2402 -CometAir: Rebate 1265 -AuroraSpace: Tax 8222 -StarCruiser: Discount 2782 -SolarSkies: Tax 5170 -StellarJet: Tax 6783 -NovaWings: Discount 613 -NeptuneExpress: Rebate 9805 -SolarSkies: Rebate 420 -Voyager: Rebate 8920 -NeptuneExpress: Discount 2792 -NebulaAir: Tax 8982 -CometAir: Tax 8419 -CelestialFlyer: Fee 1370 -NovaWings: Rebate 3349 -GalaxyExpress: Discount 2593 -LunaLine: Rebate 6076 -NovaWings: Fee 2774 -AstroWings: Discount 4739 -NovaWings: Fee 8522 -SpaceZ: Discount 5403 -CathayGalactic: Tax 7115 -GalaxyExpress: Discount 4439 -SpaceZ: Rebate 904 -AstroWings: Rebate 1237 -CometAir: Rebate 100 -CometAir: Rebate 3952 -CosmoAir: Tax 3658 -Voyager: Fee 1918 -NovaWings: Rebate 830 -CelestialFlyer: Tax 4913 -LunaLine: Seat 360000 -SpaceZ: Rebate 5691 -CathayGalactic: Rebate 2257 -AstroWings: Tax 3644 -Voyager: Rebate 2688 -CometAir: Tax 1639 -StarCruiser: Rebate 3705 -CometAir: Rebate 3590 -Voyager: Discount 9450 -SolarSkies: Discount 9637 -RyanSpace: Fee 3370 -SolarSkies: Rebate 6827 -OrionAir: Meals 4600 -SolarSkies: Tax 813 -CometAir: Fee 6654 -QantasSpace: Fee 6097 -CathayGalactic: Discount 4200 -NebulaAir: Discount 620 -SolarSkies: Tax 7919 -StarCruiser: Discount 6834 -AuroraSpace: Fee 1325 -MartianSpacelines: Rebate 8371 -CosmoAir: Rebate 7744 -StellarJet: Rebate 441 -RyanSpace: Discount 7277 -StellarJet: Discount 3908 -StellarJet: Tax 407 -LunaLine: Fee 8969 -SpaceZ: Rebate 4329 -AuroraSpace: Rebate 5091 -StellarJet: Tax 9278 -Voyager: Rebate 100 -LunaLine: Tax 8853 -MartianSpacelines: Fee 8562 -AstroWings: Tax 9706 -CathayGalactic: Discount 1007 -CometAir: Discount 8236 -AuroraSpace: Rebate 3013 -SolarSkies: Rebate 5220 -LunaLine: Tax 2634 -CosmoAir: Fee 9677 -MartianSpacelines: Discount 1277 -Voyager: Discount 4707 -StellarJet: Rebate 3108 -SolarSkies: Fee 374 -CometAir: Discount 4232 -StellarJet: Fee 4428 -SpaceZ: Discount 1638 -OrionAir: Rebate 1726 -CometAir: Discount 1851 -GalaxyExpress: Discount 2036 -AstroWings: Rebate 877 -SpaceZ: Fee 347 -SpaceZ: Discount 5975 -SolarSkies: Rebate 7254 -LunaLine: Fee 6121 -AstroWings: Rebate 9777 -StellarJet: Tax 7886 -StellarJet: Discount 6633 -MartianSpacelines: Tax 9750 -CosmoAir: Tax 9796 -SpaceZ: Fee 6522 -NeptuneExpress: Discount 8275 -CosmoAir: Rebate 4012 -AuroraSpace: Tax 4923 -MartianSpacelines: Discount 3196 -NebulaAir: Rebate 118 -CathayGalactic: Rebate 9749 -Voyager: Discount 3635 -AstroWings: Tax 1390 -Voyager: Rebate 6620 -NebulaAir: Fee 6770 -CosmoAir: Discount 5007 -NeptuneExpress: Rebate 8281 -RyanSpace: Rebate 808 -NeptuneExpress: Tax 307 -CelestialFlyer: Tax 3694 -SolarSkies: Discount 9194 -MartianSpacelines: Rebate 335 -OrionAir: Rebate 5249 -CathayGalactic: Tax 8357 -StellarJet: Discount 537 -CelestialFlyer: Tax 8969 -OrionAir: Fee 374 -MartianSpacelines: Fee 6354 -AuroraSpace: Rebate 6955 -SolarSkies: Discount 6009 -CathayGalactic: Seat 480000 -SolarSkies: Fee 9977 -NebulaAir: Fee 2345 -CathayGalactic: Discount 9538 -CathayGalactic: Discount 1230 -StellarJet: Tax 1779 -CosmoAir: Fee 9050 -LunaLine: Tax 3734 -GalaxyExpress: Fee 217 -CathayGalactic: Tax 3306 -CelestialFlyer: Tax 2944 -SolarSkies: Tax 5107 -NeptuneExpress: Tax 248 -OrionAir: Tax 8983 -Voyager: Meals 3300 -NovaWings: Discount 5976 -CathayGalactic: Rebate 9513 -CathayGalactic: Fee 7506 -LunaLine: Fee 817 -NebulaAir: Rebate 2978 -MartianSpacelines: Tax 8703 -StarCruiser: Fee 751 -AuroraSpace: Tax 9627 -LunaLine: Rebate 5848 -CometAir: Tax 9266 -SolarSkies: Tax 7247 -MartianSpacelines: Fee 5175 -StellarJet: Rebate 6852 -CosmoAir: Tax 1361 -Voyager: Tax 4778 -NebulaAir: Tax 9842 -StarCruiser: Discount 7311 -StarCruiser: Discount 1380 -CelestialFlyer: Rebate 4296 -RyanSpace: Fee 3647 -StellarJet: Discount 5751 -NebulaAir: Rebate 136 -QantasSpace: Rebate 6105 -NebulaAir: Discount 5049 -CelestialFlyer: Discount 8024 -AuroraSpace: Fee 2611 -StellarJet: Rebate 8622 -MartianSpacelines: Rebate 7101 -AstroWings: Rebate 5630 -NeptuneExpress: Tax 1827 -NeptuneExpress: Tax 2223 -GalaxyExpress: Rebate 7392 -NebulaAir: Tax 2009 -SpaceZ: Discount 5354 -GalaxyExpress: Tax 3459 -RyanSpace: Discount 5757 -NebulaAir: Rebate 6149 -AstroWings: Rebate 3842 -AuroraSpace: Discount 9482 -LunaLine: Discount 6374 -NebulaAir: Tax 6408 -CosmoAir: Rebate 8709 -CathayGalactic: Fee 7596 -MartianSpacelines: Tax 5943 -QantasSpace: Rebate 9496 -SpaceZ: Discount 5432 -GalaxyExpress: Fee 8549 -NebulaAir: Fee 2466 -OrionAir: Tax 7873 -CosmoAir: Fee 5234 -AstroWings: Rebate 7027 -CathayGalactic: Discount 3197 -CelestialFlyer: Tax 4583 -AuroraSpace: Rebate 9724 -StellarJet: Fee 771 -AstroWings: Rebate 3100 -SpaceZ: Fee 2152 -SpaceZ: Rebate 804 -QantasSpace: Fee 4253 -NeptuneExpress: Rebate 197 -MartianSpacelines: Tax 299 -NebulaAir: Discount 2647 -NebulaAir: Fee 7025 -RyanSpace: Tax 6589 -GalaxyExpress: Discount 9381 -NeptuneExpress: Discount 8354 -AstroWings: Tax 3033 -CathayGalactic: Tax 2367 -LunaLine: Discount 5894 -CathayGalactic: Fee 9171 -NebulaAir: Rebate 3167 -AstroWings: Fee 8899 -LunaLine: Discount 7138 -AstroWings: Tax 1704 -Voyager: Rebate 648 -LunaLine: Fee 3753 -CometAir: Tax 6573 -NebulaAir: Fee 3032 -StarCruiser: Tax 8352 -StellarJet: Tax 232 -MartianSpacelines: Fee 5517 -LunaLine: Tax 6583 -CathayGalactic: Rebate 4631 -Voyager: Rebate 2776 -NovaWings: Fee 9142 -MartianSpacelines: Discount 8986 -AstroWings: Discount 1349 -CathayGalactic: Tax 6692 -SpaceZ: Rebate 3543 -CelestialFlyer: Discount 4762 -StarCruiser: Rebate 7064 -NovaWings: Discount 1698 -CelestialFlyer: Rebate 1032 -MartianSpacelines: Rebate 305 -GalaxyExpress: Fee 2569 -AstroWings: Rebate 8802 -AstroWings: Discount 9084 -CosmoAir: Fee 5749 -MartianSpacelines: Rebate 6253 -MartianSpacelines: Rebate 1567 -AstroWings: Discount 6381 -NebulaAir: Discount 9707 -SolarSkies: Tax 503 -NovaWings: Fee 1162 -QantasSpace: Discount 7553 -StarCruiser: Tax 3433 -SolarSkies: Seat 370000 -AuroraSpace: Discount 2932 -CometAir: Tax 5838 -QantasSpace: Tax 4879 -OrionAir: Fee 7776 -RyanSpace: Fee 6373 -LunaLine: Tax 5530 -AstroWings: Fee 2825 -LunaLine: Rebate 6279 -NebulaAir: Fee 5753 -CathayGalactic: Fee 9115 -CelestialFlyer: Discount 4260 -CosmoAir: Rebate 3974 -CometAir: Tax 8768 -SolarSkies: Discount 3249 -SpaceZ: Discount 4359 -GalaxyExpress: Fee 8214 -AstroWings: Tax 9552 -NovaWings: Rebate 5354 -AuroraSpace: Fee 882 -StarCruiser: Discount 7577 -NebulaAir: Tax 2597 -StarCruiser: Discount 6736 -NebulaAir: Fee 8199 -SolarSkies: Rebate 6279 -RyanSpace: Discount 6726 -QantasSpace: Discount 6964 -StarCruiser: Tax 465 -NovaWings: Fee 1833 -QantasSpace: Rebate 8124 -NebulaAir: Rebate 5606 -StellarJet: Meals 2100 -StarCruiser: Discount 7836 -GalaxyExpress: Tax 5626 -Voyager: Rebate 4937 -GalaxyExpress: Rebate 4122 -NeptuneExpress: Fee 9214 -StellarJet: Discount 7248 -RyanSpace: Tax 9639 -StellarJet: Discount 6956 -MartianSpacelines: Fee 6578 -AuroraSpace: Fee 1383 -CathayGalactic: Discount 3393 -NovaWings: Fee 9480 -Voyager: Tax 3615 -CometAir: Fee 8732 -StellarJet: Fee 2042 -AuroraSpace: Tax 8787 -CelestialFlyer: Fee 6264 -QantasSpace: Discount 4654 -NebulaAir: Tax 8797 -QantasSpace: Rebate 4276 -RyanSpace: Tax 1727 -RyanSpace: Fee 5883 -RyanSpace: Fee 8099 -StellarJet: Tax 6683 -StellarJet: Tax 9823 -CometAir: Tax 1215 -NebulaAir: Rebate 623 -LunaLine: Discount 8657 -Voyager: Rebate 3534 -AstroWings: Fee 8265 -QantasSpace: Discount 2763 -Voyager: Tax 394 -OrionAir: Rebate 5761 -QantasSpace: Tax 3569 -Voyager: Rebate 7987 -StellarJet: Rebate 2708 -RyanSpace: Fee 5165 -CelestialFlyer: Tax 7693 -CathayGalactic: Fee 6488 -StellarJet: Rebate 4032 -MartianSpacelines: Fee 7877 -StarCruiser: Rebate 5309 -CometAir: Tax 2747 -LunaLine: Tax 5448 -OrionAir: Fee 1220 -CosmoAir: Tax 6954 -SolarSkies: Discount 3575 -SpaceZ: Rebate 5725 -SolarSkies: Discount 3979 -NovaWings: Rebate 9039 -StarCruiser: Rebate 1186 -NebulaAir: Rebate 9684 -AstroWings: Discount 7740 -SpaceZ: Discount 4745 -CelestialFlyer: Rebate 2754 -CathayGalactic: Fee 7675 -NovaWings: Tax 6281 -StarCruiser: Fee 7997 -StellarJet: Fee 8493 -SolarSkies: Discount 2356 -StellarJet: Discount 8050 -Voyager: Rebate 1423 -OrionAir: Tax 5656 -RyanSpace: Fee 5027 -NeptuneExpress: Rebate 802 -MartianSpacelines: Fee 6342 -StarCruiser: Discount 5133 -Voyager: Fee 1949 -StellarJet: Rebate 3284 -StarCruiser: Rebate 546 -NovaWings: Tax 4585 -LunaLine: Fee 4045 -CathayGalactic: Rebate 8076 -OrionAir: Tax 5903 -NovaWings: Fee 1706 -NebulaAir: Tax 4636 -GalaxyExpress: Tax 5258 -AuroraSpace: Tax 8358 -StellarJet: Discount 1715 -CathayGalactic: Rebate 3641 -Voyager: Discount 2347 -AstroWings: Tax 3946 -AuroraSpace: Tax 3135 -NeptuneExpress: Rebate 5459 -SpaceZ: Discount 5438 -NovaWings: Rebate 4866 -CometAir: Discount 1204 -LunaLine: Discount 4157 -CometAir: Rebate 4384 -SolarSkies: Discount 8233 -NeptuneExpress: Rebate 3162 -GalaxyExpress: Rebate 8639 -CathayGalactic: Rebate 1294 -LunaLine: Discount 9079 -CosmoAir: Fee 2533 -RyanSpace: Discount 4345 -SpaceZ: Rebate 7036 -CathayGalactic: Discount 3218 -CometAir: Tax 631 -SolarSkies: Fee 8115 -StellarJet: Tax 4290 -AuroraSpace: Discount 3676 -RyanSpace: Discount 4149 -NebulaAir: Tax 7188 -QantasSpace: Tax 4036 -SolarSkies: Rebate 2968 -CosmoAir: Rebate 2816 -NebulaAir: Discount 2237 -CelestialFlyer: Discount 9207 -CelestialFlyer: Tax 5953 -CosmoAir: Rebate 516 -CometAir: Fee 7793 -OrionAir: Rebate 8776 -NebulaAir: Discount 4235 -CelestialFlyer: Tax 656 -Voyager: Discount 593 -CosmoAir: Rebate 8597 -MartianSpacelines: Fee 437 -NeptuneExpress: Fee 5161 -MartianSpacelines: Discount 5243 -SolarSkies: Rebate 7619 -AuroraSpace: Rebate 5921 -RyanSpace: Rebate 1938 -AuroraSpace: Rebate 4026 -SpaceZ: Tax 8997 -NebulaAir: Discount 9105 -OrionAir: Fee 3399 -Voyager: Fee 695 -GalaxyExpress: Fee 6105 -CelestialFlyer: Fee 7038 -StellarJet: Tax 2730 -Voyager: Luggage 5250 -QantasSpace: Tax 3421 -AstroWings: Fee 8351 -MartianSpacelines: Rebate 9799 -RyanSpace: Fee 5047 -OrionAir: Fee 4267 -CosmoAir: Tax 6315 -AuroraSpace: Tax 7340 -NebulaAir: Fee 4926 -AstroWings: Discount 7100 -NebulaAir: Tax 2384 -QantasSpace: Tax 8581 -StellarJet: Tax 2921 -NovaWings: Fee 875 -SpaceZ: Fee 6542 -RyanSpace: Tax 6685 -MartianSpacelines: Tax 3028 -SolarSkies: Fee 6792 -CometAir: Tax 7827 -NovaWings: Tax 5773 -StarCruiser: Discount 8980 -CosmoAir: Tax 4884 -NovaWings: Tax 8489 -CometAir: Seat 250000 -AuroraSpace: Fee 7199 -CometAir: Rebate 3424 -SpaceZ: Discount 7752 -GalaxyExpress: Discount 6149 -NeptuneExpress: Rebate 5822 -CathayGalactic: Rebate 9597 -SpaceZ: Discount 2470 -NovaWings: Discount 3873 -CathayGalactic: Tax 890 -NovaWings: Tax 8726 -NovaWings: Fee 9407 -StellarJet: Fee 6046 -SpaceZ: Tax 1462 -StellarJet: Tax 9474 -MartianSpacelines: Tax 7026 -CometAir: Tax 2349 -StarCruiser: Tax 6992 -MartianSpacelines: Discount 9344 -StellarJet: Discount 9073 -GalaxyExpress: Tax 694 -OrionAir: Discount 7721 -SpaceZ: Rebate 3003 -NebulaAir: Fee 5059 -CelestialFlyer: Fee 1122 -CathayGalactic: Fee 6757 -RyanSpace: Rebate 6164 -NovaWings: Discount 2194 -StarCruiser: Discount 7904 -AuroraSpace: Rebate 6591 -OrionAir: Rebate 6640 -CathayGalactic: Fee 164 -QantasSpace: Fee 6301 -NeptuneExpress: Rebate 238 -NebulaAir: Rebate 5490 -CathayGalactic: Fee 3525 -SolarSkies: Rebate 681 -NeptuneExpress: Tax 7016 -CosmoAir: Discount 1087 -QantasSpace: Rebate 6253 -CometAir: Discount 827 -CosmoAir: Discount 6119 -NovaWings: Seat 280000 -Voyager: Rebate 348 -GalaxyExpress: Discount 6276 -OrionAir: Rebate 4681 -SolarSkies: Rebate 4778 -CathayGalactic: Rebate 3580 -AstroWings: Rebate 9263 -NovaWings: Rebate 2645 -StarCruiser: Rebate 4716 -NebulaAir: Rebate 3498 -StellarJet: Rebate 2911 -GalaxyExpress: Rebate 1740 -QantasSpace: Rebate 8901 -RyanSpace: Tax 5282 -SolarSkies: Tax 3246 -StellarJet: Tax 4478 -NebulaAir: Tax 8580 -NeptuneExpress: Tax 1647 -CosmoAir: Discount 5540 -SpaceZ: Tax 8291 -CosmoAir: Discount 4026 -CelestialFlyer: Tax 5700 -Voyager: Tax 9822 -AuroraSpace: Discount 9643 -SpaceZ: Tax 850 -StarCruiser: Discount 8108 -QantasSpace: Fee 8764 -NeptuneExpress: Fee 8172 -CelestialFlyer: Fee 5732 -QantasSpace: Tax 303 -LunaLine: Tax 2922 -AstroWings: Fee 2360 -RyanSpace: Tax 9661 -RyanSpace: Tax 2767 -MartianSpacelines: Tax 3449 -StellarJet: Fee 4000 -AuroraSpace: Rebate 4397 -NeptuneExpress: Tax 5156 -NovaWings: Rebate 2051 -NovaWings: Fee 6629 -StarCruiser: Fee 3300 -GalaxyExpress: Fee 8405 -CathayGalactic: Rebate 8729 -GalaxyExpress: Discount 7651 -NovaWings: Fee 7674 -NovaWings: Discount 1947 -CometAir: Rebate 5507 -StarCruiser: Fee 5308 -StellarJet: Tax 4000 -CosmoAir: Tax 7325 -NovaWings: Tax 1418 -CathayGalactic: Rebate 8138 -OrionAir: Tax 4839 -StarCruiser: Discount 6943 -MartianSpacelines: Discount 7744 -LunaLine: Fee 5671 -LunaLine: Tax 7052 -RyanSpace: Discount 2685 -RyanSpace: Tax 9013 -GalaxyExpress: Discount 1753 -MartianSpacelines: Fee 9447 -MartianSpacelines: Rebate 2872 -LunaLine: Rebate 2079 -RyanSpace: Tax 2311 -AuroraSpace: Tax 5513 -SolarSkies: Discount 421 -NebulaAir: Tax 8301 -Voyager: Tax 6024 -CathayGalactic: Rebate 8058 -NovaWings: Rebate 8700 -NovaWings: Rebate 1234 -NeptuneExpress: Fee 9000 -CathayGalactic: Tax 1353 -NovaWings: Discount 2545 -AuroraSpace: Discount 9407 -StarCruiser: Tax 8204 -RyanSpace: Tax 8354 -QantasSpace: Fee 8070 -Voyager: Tax 8799 -LunaLine: Rebate 1966 -Voyager: Rebate 6045 -CosmoAir: Fee 4938 -CelestialFlyer: Rebate 9195 -OrionAir: Fee 9450 -StarCruiser: Rebate 3951 -Voyager: Fee 5483 -SpaceZ: Rebate 3163 -GalaxyExpress: Tax 4632 -CelestialFlyer: Tax 3928 -CometAir: Fee 9783 -GalaxyExpress: Discount 8839 -SolarSkies: Discount 4813 -NebulaAir: Rebate 638 -NovaWings: Discount 7977 -StellarJet: Fee 2752 -CosmoAir: Rebate 4341 -SpaceZ: Discount 6295 -AuroraSpace: Rebate 372 -StellarJet: Fee 2441 -CathayGalactic: Discount 6524 -StellarJet: Rebate 280 -SolarSkies: Rebate 9246 -StellarJet: Rebate 4649 -GalaxyExpress: Fee 101 -AuroraSpace: Rebate 742 -CelestialFlyer: Discount 6408 -CosmoAir: Tax 9020 -LunaLine: Rebate 7580 -SolarSkies: Rebate 2417 -CosmoAir: Tax 1372 -CathayGalactic: Discount 6354 -SolarSkies: Discount 5022 -NebulaAir: Discount 9390 -SolarSkies: Rebate 4827 -MartianSpacelines: Fee 7481 -Voyager: Fee 6562 -AuroraSpace: Discount 8229 -LunaLine: Rebate 572 -MartianSpacelines: Discount 3545 -CometAir: Fee 501 -OrionAir: Rebate 342 -CelestialFlyer: Rebate 5037 -AuroraSpace: Fee 8663 -Voyager: Discount 1576 -CosmoAir: Discount 9311 -Voyager: Fee 675 -StellarJet: Fee 5358 -StarCruiser: Discount 1792 -GalaxyExpress: Discount 6751 -MartianSpacelines: Rebate 9424 -StarCruiser: Tax 6920 -NovaWings: Tax 6951 -SpaceZ: Fee 388 -AuroraSpace: Fee 8543 -Voyager: Discount 6243 -SpaceZ: Tax 5562 -CathayGalactic: Discount 1111 -StarCruiser: Tax 2181 -OrionAir: Rebate 7511 -MartianSpacelines: Discount 8212 -CelestialFlyer: Discount 1437 -SpaceZ: Discount 8176 -CathayGalactic: Discount 470 -AstroWings: Fee 5933 -NeptuneExpress: Fee 8746 -LunaLine: Discount 9651 -NovaWings: Fee 9466 -StarCruiser: Seat 270000 -NovaWings: Tax 3696 -LunaLine: Discount 2887 -OrionAir: Rebate 3027 -AuroraSpace: Discount 3294 -MartianSpacelines: Discount 3402 -NovaWings: Tax 5067 -CometAir: Rebate 9278 -NovaWings: Discount 5067 -LunaLine: Discount 4309 -AstroWings: Discount 5904 -NeptuneExpress: Tax 804 -CosmoAir: Tax 2476 -AuroraSpace: Rebate 2572 -AstroWings: Rebate 9916 -SolarSkies: Fee 7689 -Voyager: Discount 5606 -MartianSpacelines: Fee 8593 -AuroraSpace: Fee 3040 -OrionAir: Discount 4350 -CosmoAir: Fee 3120 -NovaWings: Fee 2261 -QantasSpace: Discount 6308 -CelestialFlyer: Rebate 8905 -SpaceZ: Fee 1469 -OrionAir: Discount 9302 -AuroraSpace: Rebate 1042 -AstroWings: Tax 4900 -Voyager: Fee 1188 -CosmoAir: Fee 3814 -Voyager: Tax 9074 -SpaceZ: Fee 8755 -NebulaAir: Tax 2020 -NebulaAir: Discount 8633 -GalaxyExpress: Rebate 5121 -NebulaAir: Tax 9324 -GalaxyExpress: Tax 3327 -NovaWings: Fee 5091 -SpaceZ: Tax 1759 -MartianSpacelines: Fee 7045 -OrionAir: Discount 2381 -SolarSkies: Tax 5859 -QantasSpace: Fee 1188 -SpaceZ: Fee 4650 -CathayGalactic: Rebate 2455 -SpaceZ: Fee 9194 -NovaWings: Rebate 7928 -CosmoAir: Discount 4457 -LunaLine: Fee 6365 -Voyager: Tax 1957 -AstroWings: Fee 9288 -RyanSpace: Fee 3002 -OrionAir: Rebate 3368 -SolarSkies: Rebate 7528 -CathayGalactic: Discount 9652 -NovaWings: Rebate 7881 -StellarJet: Rebate 2714 -SolarSkies: Rebate 6304 -GalaxyExpress: Discount 7497 -GalaxyExpress: Discount 7388 -CathayGalactic: Tax 9121 -MartianSpacelines: Discount 8857 -MartianSpacelines: Tax 3779 -CometAir: Discount 2845 -CosmoAir: Tax 1252 -MartianSpacelines: Fee 9663 -GalaxyExpress: Fee 3095 -NeptuneExpress: Fee 2190 -AuroraSpace: Fee 538 -CometAir: Discount 7524 -StarCruiser: Fee 7591 -AstroWings: Rebate 5606 -CosmoAir: Discount 3158 -CathayGalactic: Tax 984 -CathayGalactic: Rebate 8209 -CelestialFlyer: Rebate 2770 -CathayGalactic: Discount 2934 -NebulaAir: Tax 1141 -CelestialFlyer: Discount 7685 -Voyager: Tax 6436 -AuroraSpace: Fee 1446 -NeptuneExpress: Fee 2917 -LunaLine: Rebate 7885 -CelestialFlyer: Discount 3157 -CometAir: Fee 7983 -CelestialFlyer: Fee 8007 -LunaLine: Fee 138 -GalaxyExpress: Tax 7304 -RyanSpace: Rebate 3851 -NeptuneExpress: Rebate 6082 -CometAir: Fee 9259 -OrionAir: Fee 7375 -OrionAir: Rebate 686 -Voyager: Fee 7824 -LunaLine: Discount 9898 -NebulaAir: Rebate 3460 -LunaLine: Rebate 5326 -Voyager: Tax 2037 -StarCruiser: Tax 5648 -GalaxyExpress: Fee 7040 -MartianSpacelines: Rebate 1350 -CathayGalactic: Discount 3799 -CathayGalactic: Tax 3818 -QantasSpace: Rebate 5668 -OrionAir: Rebate 697 -CelestialFlyer: Rebate 6301 -AuroraSpace: Rebate 8053 -GalaxyExpress: Discount 2164 -RyanSpace: Fee 4152 -LunaLine: Discount 5596 -OrionAir: Discount 4905 -CosmoAir: Tax 1418 -NebulaAir: Fee 5619 -CelestialFlyer: Tax 4563 -NeptuneExpress: Rebate 3293 -MartianSpacelines: Rebate 5758 -OrionAir: Discount 3480 -NeptuneExpress: Fee 8787 -LunaLine: Rebate 1915 -NebulaAir: Discount 9997 -OrionAir: Rebate 6665 -RyanSpace: Tax 1731 -CometAir: Fee 7454 -NeptuneExpress: Tax 4854 -StellarJet: Fee 6058 -AuroraSpace: Rebate 4426 -AuroraSpace: Discount 6220 -CathayGalactic: Rebate 6050 -StarCruiser: Rebate 4580 -QantasSpace: Tax 3219 -SolarSkies: Rebate 8878 -StellarJet: Tax 8661 -QantasSpace: Tax 1977 -CosmoAir: Rebate 7903 -AstroWings: Rebate 7992 -CathayGalactic: Rebate 9194 -StellarJet: Fee 3121 -StellarJet: Discount 4447 -SpaceZ: Rebate 1429 -AstroWings: Fee 6243 -MartianSpacelines: Discount 978 -MartianSpacelines: Discount 5662 -CathayGalactic: Fee 5494 -CometAir: Fee 7402 -RyanSpace: Tax 2278 -SpaceZ: Discount 2660 -CosmoAir: Discount 6671 -NebulaAir: Tax 7194 -GalaxyExpress: Discount 7323 -CathayGalactic: Rebate 7395 -NeptuneExpress: Fee 655 -NovaWings: Tax 9755 -StarCruiser: Discount 9533 -SpaceZ: Discount 1675 -CathayGalactic: Discount 1917 -AuroraSpace: Tax 2054 -LunaLine: Fee 5492 -NovaWings: Rebate 6933 -SolarSkies: Tax 6794 -SolarSkies: Rebate 2907 -StellarJet: Rebate 6717 -CathayGalactic: Rebate 5596 -CelestialFlyer: Tax 5840 -StarCruiser: Fee 995 -NovaWings: Rebate 344 -CosmoAir: Discount 6247 -AstroWings: Tax 3450 -SolarSkies: Fee 2081 -QantasSpace: Discount 6653 -SolarSkies: Tax 7650 -MartianSpacelines: Tax 7882 -CathayGalactic: Tax 6989 -NebulaAir: Rebate 9280 -Voyager: Tax 1277 -CelestialFlyer: Fee 5812 -NeptuneExpress: Fee 4660 -CelestialFlyer: Rebate 7563 -NebulaAir: Fee 4547 -CathayGalactic: Fee 2999 -NeptuneExpress: Tax 110 -QantasSpace: Discount 8952 -SpaceZ: Discount 6160 -Voyager: Tax 8049 -StarCruiser: Discount 1556 -NeptuneExpress: Fee 7863 -NebulaAir: Tax 4052 -CathayGalactic: Tax 1013 -GalaxyExpress: Tax 3427 -SpaceZ: Fee 3561 -StarCruiser: Fee 5470 -OrionAir: Rebate 3455 -CosmoAir: Discount 7599 -QantasSpace: Rebate 8510 -SolarSkies: Rebate 5822 -AuroraSpace: Rebate 4681 -SpaceZ: Rebate 6826 -NeptuneExpress: Rebate 6699 -NeptuneExpress: Discount 5244 -RyanSpace: Rebate 9947 -Voyager: Rebate 2176 -AuroraSpace: Tax 7784 -CathayGalactic: Discount 5124 -CathayGalactic: Rebate 5175 -StellarJet: Tax 6756 -StellarJet: Tax 5229 -RyanSpace: Fee 6727 -SolarSkies: Tax 707 -OrionAir: Discount 2812 -AuroraSpace: Rebate 9735 -RyanSpace: Discount 2912 -StarCruiser: Tax 1434 -MartianSpacelines: Fee 8199 -SpaceZ: Discount 6402 -CosmoAir: Fee 7002 -MartianSpacelines: Tax 4128 -OrionAir: Tax 8033 -CosmoAir: Discount 3078 -LunaLine: Rebate 5152 -CometAir: Fee 5689 -StellarJet: Rebate 9602 -CathayGalactic: Rebate 7099 -CosmoAir: Fee 5363 -AuroraSpace: Discount 4333 -CosmoAir: Fee 6297 -NebulaAir: Rebate 8806 -AstroWings: Rebate 5820 -NebulaAir: Fee 6876 -CosmoAir: Tax 1408 -NebulaAir: Rebate 760 -NeptuneExpress: Discount 6985 -NovaWings: Discount 5164 -MartianSpacelines: Fee 2289 -CometAir: Fee 4887 -LunaLine: Discount 1148 -CometAir: Fee 2051 -Voyager: Tax 6529 -CometAir: Tax 4285 -StellarJet: Rebate 7864 -NovaWings: Rebate 3099 -CosmoAir: Rebate 3365 -LunaLine: Rebate 6232 -MartianSpacelines: Rebate 1023 -OrionAir: Discount 604 -NebulaAir: Rebate 1188 -StarCruiser: Fee 1936 -SolarSkies: Discount 1820 -RyanSpace: Discount 2129 -NebulaAir: Rebate 4967 -NovaWings: Rebate 4116 -Voyager: Tax 7496 -AstroWings: Rebate 2541 -CosmoAir: Fee 1908 -QantasSpace: Fee 7467 -CometAir: Rebate 7099 -CelestialFlyer: Discount 4938 -CathayGalactic: Rebate 2590 -RyanSpace: Fee 422 -CelestialFlyer: Fee 9244 -RyanSpace: Tax 8574 -NovaWings: Discount 5619 -GalaxyExpress: Rebate 5714 -QantasSpace: Discount 4690 -MartianSpacelines: Discount 6915 -Voyager: Rebate 318 -NeptuneExpress: Rebate 1967 -OrionAir: Fee 7434 -NovaWings: Fee 990 -LunaLine: Fee 7026 -AuroraSpace: Tax 6912 -NebulaAir: Discount 3840 -StarCruiser: Rebate 8346 -OrionAir: Discount 6842 -CelestialFlyer: Rebate 5721 -LunaLine: Fee 9046 -RyanSpace: Rebate 7485 -AuroraSpace: Tax 5704 -RyanSpace: Fee 3091 -CometAir: Tax 9313 -StarCruiser: Fee 2401 -SpaceZ: Rebate 5866 -StarCruiser: Fee 4535 -NeptuneExpress: Discount 7510 -CometAir: Tax 8366 -LunaLine: Discount 6601 -StellarJet: Rebate 2910 -LunaLine: Rebate 1674 -NovaWings: Fee 8483 -AstroWings: Tax 7784 -AuroraSpace: Discount 8363 -Voyager: Discount 7039 -Voyager: Discount 2376 -NovaWings: Discount 920 -SolarSkies: Fee 5825 -CosmoAir: Fee 7268 -MartianSpacelines: Rebate 5786 -OrionAir: Rebate 1360 -LunaLine: Rebate 4487 -QantasSpace: Tax 524 -NeptuneExpress: Fee 5866 -NovaWings: Fee 5732 -SpaceZ: Discount 6187 -SpaceZ: Discount 7169 -GalaxyExpress: Tax 1490 -RyanSpace: Discount 9291 -CosmoAir: Fee 2039 -NebulaAir: Tax 456 -StellarJet: Tax 5279 -CometAir: Discount 1109 -OrionAir: Tax 5750 -CathayGalactic: Tax 5891 -OrionAir: Fee 2535 -GalaxyExpress: Rebate 2146 -GalaxyExpress: Rebate 4573 -SolarSkies: Discount 8926 -LunaLine: Tax 8703 -NebulaAir: Tax 3504 -NeptuneExpress: Discount 5921 -NebulaAir: Rebate 7027 -SolarSkies: Fee 8008 -SpaceZ: Tax 2330 -CometAir: Discount 387 -OrionAir: Fee 7157 -CathayGalactic: Tax 3586 -NeptuneExpress: Tax 1239 -NeptuneExpress: Rebate 1119 -StellarJet: Tax 4471 -RyanSpace: Tax 2385 -SpaceZ: Tax 5337 -CelestialFlyer: Tax 363 -StarCruiser: Discount 9999 -MartianSpacelines: Rebate 5270 -CathayGalactic: Tax 2459 -OrionAir: Tax 9297 -CometAir: Discount 3993 -SolarSkies: Fee 4126 -StarCruiser: Discount 6505 -AuroraSpace: Tax 4765 -RyanSpace: Discount 4773 -LunaLine: Fee 5374 -CelestialFlyer: Tax 5224 -StellarJet: Rebate 463 -StarCruiser: Discount 6418 -CometAir: Discount 3926 -StellarJet: Tax 6733 -NebulaAir: Discount 7054 -CometAir: Tax 2662 -NovaWings: Tax 2024 -MartianSpacelines: Discount 9897 -CathayGalactic: Discount 2550 -RyanSpace: Discount 6860 -CathayGalactic: Rebate 6905 -CosmoAir: Tax 5920 -CometAir: Fee 1471 -NeptuneExpress: Tax 1733 -CathayGalactic: Fee 1587 -MartianSpacelines: Discount 2511 -QantasSpace: Discount 4188 -SolarSkies: Discount 2692 -AuroraSpace: Discount 3300 -Voyager: Rebate 1048 -LunaLine: Fee 6787 -GalaxyExpress: Tax 1158 -QantasSpace: Meals 700 -StarCruiser: Tax 1976 -MartianSpacelines: Fee 777 -CosmoAir: Discount 4510 -RyanSpace: Rebate 5980 -QantasSpace: Seat 350000 -AstroWings: Discount 8487 -CelestialFlyer: Tax 8383 -StarCruiser: Discount 7717 -CathayGalactic: Fee 1231 -StarCruiser: Rebate 371 -CathayGalactic: Tax 5933 -AstroWings: Discount 3922 -RyanSpace: Rebate 3318 -GalaxyExpress: Fee 7701 -GalaxyExpress: Fee 3202 -RyanSpace: Tax 1778 -LunaLine: Tax 4823 -OrionAir: Rebate 2982 -CathayGalactic: Tax 5732 -LunaLine: Rebate 263 -LunaLine: Tax 2059 -MartianSpacelines: Tax 6674 -GalaxyExpress: Tax 1962 -NovaWings: Fee 6927 -CelestialFlyer: Discount 2000 -NeptuneExpress: Tax 5832 -SpaceZ: Discount 7104 -CosmoAir: Tax 9324 -OrionAir: Rebate 3564 -LunaLine: Fee 6557 -NebulaAir: Fee 8426 -CathayGalactic: Fee 317 -AstroWings: Rebate 9898 -StarCruiser: Fee 8453 -LunaLine: Discount 1979 -AuroraSpace: Discount 4661 -SolarSkies: Discount 9492 -OrionAir: Fee 1788 -NovaWings: Fee 4780 -OrionAir: Rebate 4208 -RyanSpace: Tax 5322 -StarCruiser: Rebate 4999 -QantasSpace: Tax 3215 -MartianSpacelines: Rebate 5066 -CathayGalactic: Tax 5053 -CosmoAir: Fee 6025 -CathayGalactic: Discount 9209 -CometAir: Discount 6802 -StarCruiser: Rebate 5146 -NovaWings: Rebate 2872 -CosmoAir: Rebate 6539 -AuroraSpace: Discount 9672 -MartianSpacelines: Fee 7898 -CosmoAir: Discount 6469 -Voyager: Fee 8640 -CathayGalactic: Rebate 3182 -StellarJet: Rebate 6595 -CometAir: Discount 7482 -NebulaAir: Discount 9432 -OrionAir: Rebate 3646 -CometAir: Tax 9563 -CathayGalactic: Tax 4747 -QantasSpace: Tax 3585 -GalaxyExpress: Tax 5011 -QantasSpace: Discount 5255 -CathayGalactic: Rebate 852 -AstroWings: Fee 8768 -LunaLine: Fee 7634 -SpaceZ: Fee 6793 -GalaxyExpress: Tax 5217 -StarCruiser: Rebate 8973 -CosmoAir: Fee 9587 -OrionAir: Fee 9217 -StellarJet: Discount 9239 -MartianSpacelines: Discount 3426 -StarCruiser: Fee 6762 -StellarJet: Rebate 6123 -CosmoAir: Fee 3414 -SolarSkies: Discount 1832 -CathayGalactic: Fee 7793 -AuroraSpace: Discount 7306 -CelestialFlyer: Rebate 5727 -CathayGalactic: Discount 5523 -AstroWings: Fee 5297 -Voyager: Tax 9210 -AstroWings: Luggage 10750 -LunaLine: Discount 6144 -NovaWings: Fee 5629 -AuroraSpace: Discount 2706 -CathayGalactic: Discount 9828 -NebulaAir: Tax 4301 -NebulaAir: Tax 3785 -NebulaAir: Discount 7969 -AstroWings: Tax 6893 -OrionAir: Fee 7359 -MartianSpacelines: Discount 539 -Voyager: Fee 1531 -CometAir: Fee 2599 -StarCruiser: Rebate 3602 -NovaWings: Fee 1585 -OrionAir: Rebate 550 -CosmoAir: Tax 3496 -Voyager: Rebate 5339 -QantasSpace: Fee 2537 -SpaceZ: Discount 8450 -NovaWings: Rebate 5978 -OrionAir: Fee 6087 -NovaWings: Discount 4322 -CelestialFlyer: Discount 4003 -SolarSkies: Tax 7377 -NovaWings: Discount 6710 -NebulaAir: Discount 6562 -AuroraSpace: Rebate 2204 -CosmoAir: Fee 9850 -NovaWings: Rebate 8296 -CelestialFlyer: Fee 2295 -CathayGalactic: Rebate 5605 -AstroWings: Rebate 2313 -Voyager: Discount 6143 -CometAir: Rebate 1303 -AstroWings: Discount 9279 -CometAir: Fee 4280 \ No newline at end of file diff --git a/codingquest2024/src/day2/data.txt b/codingquest2024/src/day2/data.txt deleted file mode 100644 index b47f674..0000000 --- a/codingquest2024/src/day2/data.txt +++ /dev/null @@ -1,1000 +0,0 @@ -45000377000000008306f39f0A000bc1d7253441 -4500007f0000000005065de1c0a800b833c555ee -450002e50000000008061ef5c0a8796698721661 -4500017e00000000b206e54e88c7fd4f0A00244c -45000164000000009d06d73c0A0000b7e0b143b8 -4500029600000000440668bdc0a8a69dd0886379 -45000109000000001806e85ec0a8e73edcc1d0b8 -450002d900000000a4065193c0a8fa37abedc6eb -4500024f000000000806845dc0a86f870391bc03 -4500003100000000b106c9ffc0a807cfcb03366f -450002390000000075069ca6c0a8f1bdee9bb3af -4500015c00000000140611d292be1c520A0076dd -450002ea00000000c606d0780A005baa7bc3c568 -45000378000000004b068aec0A00895702965832 -45000172000000007d068172c0a878b140414164 -4500036e000000008f06709bc0a81969fd909cca -4500011f000000003a06a8d8a26e01640A00d4f2 -450000ea0000000063061fa95171306b0A0006a0 -4500026b000000009906fb8a0A00ccca2e885702 -4500001900000000580658491546bd480A004d30 -450003da000000003006005dc0a8104927517592 -450000b000000000ba0613870A00c1e81af12ab6 -4500033d00000000b3068243c0a870b3415a10c5 -450001b300000000770653c49eda092c0A00e4ae -4500029b00000000af06fb59c0a87b23a783917b -4500011d000000009d065904c0a8f473271fce7e -45000325000000002606ad850A0013cf9361cfe3 -45000182000000003806984b0A00fa7cd72bedcf -450002a5000000007d061b74d0a2249f0A00fa67 -4500030f000000007606627fc0a8c8e9a23d1520 -4500033100000000260674cac0a845487621d680 -4500011d0000000049064d33c0a8cfbc8f57529e -4500032d000000009a06f2fec0a8b264ef1976bb -4500010800000000b3062294c0a8afd5e09232e8 -450001a400000000a806aabbc0a85925f7950bbe -4500016400000000b406ea15c0a8a2e2551d7789 -4500020d00000000ad06039e782dfb7b0A000c51 -4500029f000000005c068004c0a84864f39f923f -45000298000000000b06c69ac0a87893c3a56cb1 -450002ae000000000d0641dcc0a807e7f5525fd3 -450003780000000008069d835b3bb47c0A005d1d -4500029f000000009406d1cdc0a85573a137fbb9 -4500021a000000000f066ea50A0041888e99f91a -4500011a000000002a069f75c0a81318b6d6dbdc -4500012200000000c40605fb0A00008d8f7beeb6 -450003d0000000008b0612776602e5760A0033cc -4500023900000000860673aac0a8ea62b39fd341 -450003ca000000006f06d660c0a8b2149f4dbe5c -450002bb000000002b067dbcc0a8738998eb9aa1 -450002e3000000005806d3690A0062a5351829c9 -4500002a0000000064063ee80A00ba2e657a5d4a -45000219000000003f06bdfe665f80c10A003ab1 -450003b0000000004d067a81c0a846f2c8eaa74e -45000150000000001006f7245f0bbc9d0A00f57f -4500014700000000b40667860A00e2268b35bb71 -450002e3000000004906de18c0a8488539e14780 -450003bc000000005206b25d0A00cbbfb6d5e661 -4500037300000000370600500A00afbd025bd06d -450000a4000000004b06bf87c0a831383c137d9a -450001160000000034064fccc0a87c1b780fb8c4 -4500001a000000003d068f13c0a8befc8d1b2e83 -4500035c00000000a306be13c0a8c84e38438d44 -450001ca000000005806e936c0a82f454eec47a6 -450003d5000000004f06288d947b8cc00A00b239 -45000373000000008706d1eec0a80752288a565e -45000252000000000306a804c0a863e1eb70a817 -4500001d000000000c06f65e0A00bf8e7e9ff868 -4500002c000000007f06784dc0a8d758aad2eabe -450002e000000000bd068a830A00ba6397a4b592 -4500017f000000002606da5cc0a80c3036ebabf8 -4500005b000000005806346ff358c6f70A00663b -450003c10000000069061bf10A00dae15f9256fd -45000365000000009706e733b4e45d830A00db20 -450000d3000000002406c1adc0a8bef95ff31461 -4500001b00000000c1065e40c0a82d19d69d6cef -45000107000000003006961c0A003c76a3eab6b3 -450003c7000000005006adf2c0a8b0fa0f0b0777 -450002ea00000000450690310A00de79d7840384 -45000019000000007c06851a0A00f561f376c368 -45000093000000005506427d0A0052fd2ae2cfb8 -450001150000000062069869c0a81a22f926a3a0 -450000b5000000007506adb0503ed6e70A00c053 -45000116000000002206bb62c0a876e372ed646c -450000ec000000000f06241e0A00be0f4719c88f -450000e700000000b00682b9c0a80a4e59167bf2 -450001de000000003a0699ccc0a89108855d5302 -45000376000000007d06646bc0a8466bdf148e0e -45000177000000003a061da6c0a820e888363fac -450000c00000000097060effc0a836cb6106dc4e -450003a500000000460657a0c0a80016321e18ac -450002bf000000003a0677c026a819370A00ed13 -450001c7000000006206abeed642fd810A00ace3 -45000196000000004006ae57c0a88048f98f490b -4500021800000000660695d3c0a81a89272fa19e -450003600000000036067bb00A007f67abe685cd -4500034b000000000306ad77dcfab9010A004d50 -450000fb000000005206604ac0a836478668d027 -45000130000000002706e41e34ad26340A008839 -450001af00000000ba066da2c0a81c2bbda77400 -450001ad000000003506d17fc0a82f91fa258182 -450003560000000087060e8ac0a827227d08f9ba -45000130000000001e066672c0a812bf0ab421ce -45000248000000000906cb0cd1f88b1f0A0058ab -4500013800000000ae068a89c0a815e2d3f069c3 -450002490000000046066691c0a892ebb3e777c1 -450001f3000000008f069ec6c0a8f819f1d29176 -450001dd000000007906de29c0a863f8ceb7fc6d -4500034c000000004106e7e3c0a882de31490afb -450003d900000000c5068d1408310b910A005969 -45000291000000009806b4ebd836e7ba0A0082e1 -45000347000000005006a07f0A0031ec08339535 -450000fc0000000070065eeec0a831c55299b838 -450002a2000000004b06b76780f52de10A008785 -450003c7000000000106bcd5d108537a0A00a508 -450002dd000000007f06d307c0a8d018f391944a -450003310000000071068ef6c0a893562eef238e -4500038e00000000a1065e65c0a861ea50cc550c -4500018300000000880665a4c0a84ab75e3d7ffd -450000cd000000001c064f7d51d0bb6b0A0092e9 -45000223000000000a06b74a88b7c2c70A003433 -4500004e000000006e0618ccc0a85a7e5c4ed845 -4500006400000000a606ec87c0a88c7df8cc99d9 -450001290000000005067fd0aa09b61b0A007e31 -4500016500000000a206ec28c0a8fb4446092f22 -4500017200000000b7063a24c0a8031866bac425 -4500029f00000000600667eb058896fd0A005963 -45000286000000000e068b350A002edc61e8eff7 -4500013d000000004d06af47c0a8b8799cda03a0 -450000aa000000005206465fc0a8ab8efc2274a6 -45000242000000007c069a4c0625d2300A00d02b -4500023d000000006f0611a202c40b400A002cce -450001f3000000005106da260A007dd1549e0fb1 -450003b40000000032063f2fc0a88f84f8c5b4da -450000500000000034065287dc1edfb30A005389 -450001990000000019067861c0a8ae0a880978ad -4500038a000000003706fa110A005793059b2ebc -45000311000000009d06a627c0a843768b263000 -4500015d00000000c306bdc8dfa1300a0A0007e1 -4500013e000000000d06b63f0A00d9bff86c1bbb -450003b9000000007e0611f8c0a858365488cdfe -45000059000000006606826ac0a8cf13ec0d0177 -450003a0000000004b060c820A00281b29503789 -45000064000000004a06a0a10A00de53169bf181 -450002180000000081066fe491db51600A007602 -45000086000000005b065485c0a8a7de49c26207 -4500021500000000b1066c8bc0a857aa49f942a6 -45000364000000005d06a63ac0a871d8d0d240f3 -4500010d000000004306be57c0a8e4110150d3c3 -450001cf000000007706cad30A0081cc31caf550 -450002a300000000a8068a14c0a8d1bd8eefb337 -450001f40000000028060b39c0a8330f72a3518b -45000364000000004206c3a9c0a86243fccb4ded -450000b2000000001306be5db6658f8b0A00589f -450000b4000000004606b0bec0a81feb0e1da2ce -4500013700000000a5067bb6c0a8b7869a6de02c -450001b5000000008d0666560A00afd9373b15d4 -45000189000000003e061d6047108f3b0A00ce84 -45000186000000000806d70c2f1a93c80A004666 -450003d7000000000a0675d279160e070A0028c6 -45000296000000007706b4f47ed0471a0A0044cd -4500031800000000a40616b2c0a8b7f3a5ee43d7 -4500014900000000070619b2c0a81442266383d6 -4500009600000000ba06db7bc0a8e938e5333a0b -450001a7000000007306295a5b60934e0A008945 -4500001b000000005d0678e799f746390A009e1b -450000f4000000003906e35ec0a80481accf97ba -4500022c00000000110626600A001c62075c64fa -4500001f000000004206136414c22cb30A0038a5 -450001ca000000008806738dc0a8443bd71d77d0 -45000128000000000b065dbb0A0053e9057bfd1e -4500037500000000bb0672850A008808476201a6 -450001ae000000006106149f3c0f8c760A00b6f0 -4500018300000000c4068612c0a8c3685a5faae2 -45000313000000005006c8420A00f0b0b46bae36 -4500032900000000a6064e02c0a8570cc9ab6b39 -450002fb000000000b06196ac0a8f3b320fd9f01 -45000337000000005906a9d6c0a82ce7543686f1 -4500027c000000006f06e49dc0a839bcf16f2973 -450002c900000000290624620A00c704ac26a314 -450000840000000082065183c0a857a0699d8e29 -45000209000000009f062451f9f33b3a0A00b962 -4500019f000000006d06337d0A000cee05bc0be0 -4500031e000000002906d2d70A006c619dbf4efc -45000211000000003d06b4c6457379f40A004cdf -450002d900000000af067b0545e53b140A0052b8 -450001d3000000000106bacc8b2b78bd0A008408 -450000140000000036068b85c0a8baf160c03d4f -450002dd00000000a2065456cedbf8bd0A00c831 -450000d60000000073060d050A008cd0b36fac91 -4500031d000000007b06bd08c0a85dfb982b2081 -450000db000000004f06b18d0A00cbb98b0fed43 -4500031b00000000be06704a0A006e6a63bd1abd -4500021e000000001b06b43ac0a810be2f8cd7f4 -450001e800000000ab062cfbc0a84c4d161f93f3 -45000171000000000506e955c0a8719202d258df -450003ba000000004006a41ac0a8a418c39d2d8a -450001af0000000040066f66b1dcb11c0A00580d -4500007d00000000c806c591aa456d930A00bea4 -4500003d00000000b806aa8f0A00f0080fe1680c -4500007c000000002906a1a3c0a872254eae7ca7 -450000be000000002d06c0a2c0a86beef38b5ef8 -450000ad000000009306dffdc0a8447a06e7020f -450002ff000000002e062c90c0a8a31fd753b8b4 -45000370000000008106b1dbc0a8ed9bede29566 -45000172000000001906625e08952e240A000ff3 -45000157000000001a062efc0A00fbcdcc227403 -450001c900000000b306bc920A00bb3773ed8dea -4500030c00000000150612e1c0a8def8257eb02f -4500021e000000003806995bc0a85c1b15b48a90 -450001d5000000005406e5bae8e611ae0A006cca -4500005b000000001b06a3f30A00f057b1540a99 -450003e100000000bb06ba29ee9c839c0A00bd5b -450003d70000000012063c0bda7bb5b50A00b27e -4500014f00000000080652a7c0a8a829cf6ab54b -4500005900000000500655fa0A008126d23192a4 -450000e100000000a0066d6c484f86810A0025d9 -4500015d000000008306928b2717a3970A000049 -45000091000000001406a0e8c0a8e238ac2d21dc -45000222000000009e0683cf85720c520A008a27 -45000169000000001a06c0c7c0a8a6dfbc84366e -450000a30000000045066a99c0a872ac76c596db -4500029c000000000306affc0A00ef9cfc9b14bf -450000a5000000002206de790A00872885323224 -45000351000000005306f08fc0a838832b1d3aab -45000278000000008f069affc0a88e8873d9fec7 -45000120000000003d0635530A00b2066830950e -450000a4000000005b065a58c0a89532a5e26e66 -450001cf00000000c706e28ac0a823ee8d94ea65 -4500033e000000006b0603b9305a41860A000742 -450000c3000000003306e59e4ad214210A008d23 -45000039000000002006f406701d9c390A000a07 -450002c10000000019066808c0a8cbb3f91769c4 -450001a900000000b90614abd570fc3c0A00ee8a -450002be000000001c060e5f0A00b361322dda3f -450000c400000000b40628b224f08e370A004f1e -4500019800000000a9064e0f0A00e0087a2fe1c6 -4500032f000000002106d94ec0a81bf35821a071 -450002c7000000008f06d24bc0a81ef77ea536b2 -45000150000000000606de91c0a8127a8b92c153 -450000f2000000005f06fd79c0a8a570a967b6b5 -4500008f000000007906fcc8c0a836bc8a820c9c -450001b60000000088063c550A00930f0abd61cb -4500027a00000000b106f6ccc0a8f8528624171b -45000074000000008406a9cfc0a869a294c421c0 -4500020c00000000520674b5c0a8792d71f477da -450000f900000000b6068d0f0A004c4a1dd02a80 -450001f40000000088069386827eb37a0A00e979 -4500004b00000000590619fa0A002aac92051c6c -450000da000000006e06e055c0a80e5612105ca2 -450001b400000000b006bfc30A00a4dc1a56a482 -450000c20000000059066539c0a83dd41f72bd4b -450002e4000000007906a199c0a8357bcc616675 -4500031f000000009f065a1726146f740A004f1f -4500025f00000000c206a7dd5cd57df40A00d063 -450002c2000000001506debe0bfbe3070A00e15d -45000052000000000806eb6ac0a854e007d27196 -4500015200000000ab06ab33c0a89c21fd91c596 -4500005b000000002c068637c0a8a3f37a79633a -450001f4000000007e063fad0A00b099e4d649d1 -45000335000000007906fd88c0a8c87eddef7721 -45000335000000009806ef1ec0a8b69194f478c1 -450000470000000065065e59c0a885a419fb70dc -45000014000000004d0691c90A0052afdbd28888 -450001be00000000bc06d1810A00931d4719984c -45000155000000002006723c0d82692d0A00be24 -45000058000000005e060b5a0A008948a888c74d -45000082000000001d0632060A00305906913b08 -4500006d00000000c606450cc0a8434633d46b47 -45000150000000001b06a5bd0A00bcd820e03bea -45000349000000001a06b3fe3b2d39b70A00afb6 -4500029b00000000710612bb5f14e0770A0053c3 -45000300000000008706ee562d11be9c0A0083d0 -4500018e000000004b06c9239cc4fa0a0A00aa98 -4500033600000000920662ddc0a8590f7e4a6899 -4500017a00000000bc060e89c0a8d2f57c3f1ac5 -4500028f000000001a069eec0A00e4606ac31aaa -45000204000000007306628316428bb50A00579d -4500014700000000020685bc0A00ad70772a8405 -4500036b0000000055061bf10A00bdf429fc8876 -450002d9000000002306ca1066e653730A00772d -450002b1000000004c0649a7b76bf6070A002bd9 -4500017500000000220679aa0A0088c7d7fe9432 -4500010e00000000b70647047e9a09c30A00b19c -4500025e000000001f065e44c0a81bb870d71e6f -45000106000000007906684468d9aa340A002e09 -4500036d000000007d062340c0a83ed10ae7d7b1 -4500029b000000004d064c4c8a878a920A0093ec -45000040000000006c0688b8c0a827ecab4f9caa -4500036b0000000084062cc8c0a826b51a9bdf37 -4500035a000000003e060f77d2a433640A0035e8 -450003ce00000000380643c7927754150A00e6b3 -4500026200000000650605aec0a88944a196c344 -450000770000000082061bf2c0a83fd45cf3dba0 -4500034400000000a50656afe6a876150A004501 -45000282000000006a06de7fc0a8ada64ef1c144 -450001b400000000a4066b1dc0a8a036f0aa0842 -450000a0000000009606b1acc0a803c757a66dcf -45000163000000009706c95cfe64be910A0099a1 -450003a500000000c506c3ebdf5a7c4c0A00b134 -450001a3000000004c0627d3c0a88191e7fcc24b -45000118000000008a0623440A008ab88abe8151 -4500009800000000220632ec85d6f2180A0072ce -4500024b000000001006f90c7255f2b50A00bc71 -450002ec000000001206abdcc0a820d270b9d82f -4500007b000000009906a809c0a81b9670865caf -45000061000000000206f602c0a884262a743d86 -4500012c000000007506940ec0a8275a2b9b887a -4500020e000000007506987f6d95d1ea0A00d90b -45000160000000008f06633a0A008ce834cc3a39 -450003c3000000004c06d7e46364b5c90A00dd1c -450003a8000000007a0630b30A0024fe98d5e6fe -4500039800000000a206a23952c1a80b0A00cac1 -45000278000000009406ee5188464ce80A00e8b6 -4500036b000000000a063095c0a8f802917d83a6 -450003de000000003b06b7bec0a8fee7b4e7c402 -4500018d0000000068061a270A0030ae1379067a -4500038a00000000820698ae6d2dc3de0A00d86c -4500018b00000000ae06f251b990f5890A0022d1 -4500012800000000b40694ff554673fd0A00fc76 -45000134000000009c063e8d0A00791b40a665d3 -4500031e00000000430648270A00caae266e61d6 -45000169000000005a06ec7d5f7dad170A00c593 -4500026800000000ad064d2fc0a8f71a637dc625 -450002e0000000009e06de48c0a854e92b97e5fd -45000065000000005806a1fcc0a834e9ce988a21 -450002d00000000061064761c21f49080A00c5f4 -4500034000000000bc065be1c0a87c070b692306 -4500007d000000002106db6306ec8abc0A00334d -450001ea00000000160643f4c0a88636d9fed74c -450001fb000000007706fbaac0a8152db64a2fb1 -4500008300000000b4069e4ec0a81ae6f31d4b8f -450001bd00000000c60612460A002c76f78cb37f -450001b60000000042066121c0a83f3f3ebcd5e5 -450000f9000000006506caa6c0a81799f487710d -4500003b000000008706b05bc0a8d61a6f7cac1a -45000372000000004c06a4d9c0d7094f0A00bc95 -4500003d0000000006062dbec0a89bb718beea6f -450003c9000000008006e02f0A00e9111cbf6dca -4500003600000000bd0681a7c0a801a8763c793e -4500003a00000000ba06fda591dc48980A00b9e7 -45000338000000004f06b37fc0a872d03de94175 -4500013e0000000012069f49c0a8e8b3f88f1e07 -4500004d00000000c4067d6e1dca08e70A007030 -45000367000000002c06f1e5c0a80e51876f8a15 -4500008c0000000004061e9a0A00769497a4209e -450002b500000000c30607890A008997593363c1 -4500039f0000000075066a16c0a8929d11b144d6 -4500003500000000ba06576a12005f670A0049d7 -450000de000000008e066bbbc0a8a4c17ec01a61 -450003e3000000009c06bec40A00d762cc9f841a -45000244000000008206e18bebbc73230A00e112 -450001ae000000003b0686e30A00943f2d3e62f2 -450000240000000007064976c0a80c6af2ee5c43 -45000352000000006d06acdac0a8cb63ca4fd0e0 -4500010a0000000039065e060A002ed3aa95f362 -45000370000000006706757ac0a8369e4b27a366 -45000177000000000b06874dc0a834f3fe2bf084 -45000089000000008406ded5b947d7510A007f87 -45000144000000008506174c0A00543a3dcdc8e8 -450002ff000000000406da6d0A00128df3e7c603 -450003700000000073062fd70A00eabf0bc829de -45000388000000006f069677e0f918bb0A009855 -45000155000000003f061e6e0A00986acf72c2f3 -4500033500000000a006178e0A004319fa19bc19 -4500020900000000c506920c4008dde90A0083b1 -450003970000000079067c0bc0a8e9a1327ed7c4 -4500039a0000000036061a50c0a8adb16b11b833 -45000023000000009b06eece5d6211df0A001ec2 -450001f0000000006c063ccc70a6718b0A009e38 -450000c9000000001606b7ee0d832c880A00bfa3 -450000af000000009206034f0A00d1af27d3531b -4500038f00000000020600fcea125ca20A0056d8 -450002c9000000004e06c319c0a87b7ada032a03 -4500027c0000000062063a8d636fc5ad0A0055d6 -45000281000000002a06befa0A000cdefd16c199 -45000066000000002e065399fcad061f0A0031d5 -450000dc0000000007067195c0a8d2dbf5ce6cf8 -450003e500000000ba0688dcc0a8d5cadfdb9ccf -4500006d000000006906fc7cc0a8afb2dc07a3c2 -450002e900000000610668e4bb35091c0A00e44b -45000334000000007306f272c0a8cacde4be85e2 -4500035f000000000606859f0A00913f57c99a5b -4500003c00000000c50602e7c0a8d9800c66188a -4500010b000000002a06fd7fc0a8d68becaaba38 -4500009b000000009a06b5b7be67677a0A000265 -45000182000000000d062bb2c0a8bc044368c3be -45000329000000002a06caaf23b4f2140A00d0e0 -450000c4000000008e060d5d4e7bc0d70A005da9 -450000f8000000007606f30e3893f8150A00589c -450002790000000023062b2d7541f90f0A0070c5 -450003c300000000a106354d6b5815650A00cb0f -45000068000000009d06fbf3c0a8e4c0416c3bdd -4500005a0000000050068568c0a815b6f25ccdcf -45000170000000006106f2d7c0a8df858a4984e3 -4500016c00000000af062e250A007a21e8516155 -45000217000000004106db68c0a8745eeff6266d -45000258000000003906a4000A00fbedc767dee3 -45000092000000000d06f23f94684f680A006b22 -450003b00000000045062127c0a810db51713f36 -450001da00000000b5065288c0a8b362ab3bfcca -45000267000000000906d336c0a86e5814b66d30 -450003c6000000001b06593e0A001ecc850e239a -45000207000000005906fa21230e114f0A005455 -45000167000000003606bfbdc0a82e662d4f9482 -45000194000000002a06ec4bc0a86e0059593401 -45000050000000009806c94ac0a8882ed1e3cfa0 -4500026d000000002e0625bec0a82ff10ea6340f -45000230000000006d066bb90A0017c7f735c748 -4500035900000000ba06204753df4ca50A009057 -4500016b000000007606842933ab3d6f0A0081b9 -450003b2000000001d067a7cf43cae900A00703d -45000292000000002c065b700A002ab1f276054a -4500029d000000005606b2effcaeb3860A00fae1 -45000173000000004506cf060A001482b8d7903c -450000ff000000008406a0db0A00b070f8f2e3ad -450003ce00000000a50641870A0010dc2195bf9d -450002410000000067064ca1c0a8551e2f06af0a -4500034e000000000b06ac26c0a84123b438bdee -4500012300000000aa0603d9c0a81cb848e6ee3d -45000293000000008906b2f3b6b6518a0A002a29 -4500021800000000c7064a4abeae982c0A000ea3 -450003850000000067063966c0a89b9622187a96 -4500013600000000ab067005c0a8048ce679988c -4500021600000000bc06d464c0a83d2de1d0e9b1 -450001d000000000840653930A00a3febe1e3cd0 -4500031a0000000084064bfd513d16d80A00d0af -450000b9000000001606af5fc0a88cfa2cbe66fb -450003ad000000005306d746796ed0c40A00bbbf -4500030b0000000090066692aca498d50A0027d1 -450002e7000000000306b29fc0a86bc27e449573 -4500020d0000000048062507c0a8e959933b6139 -45000327000000000a0624ccc0a8e99141799e74 -4500009800000000c7068e4dc0a86c3f3648f7df -4500021a0000000038064f8ac0a8b94fc57f7681 -4500009a000000002f06e4d0c0a881f47ec6235d -450002e70000000050064f4dc0a87d03e1339a21 -4500022c000000009706c779c0a829fc53482f45 -450000e60000000045061f05c0a81ff3495a3512 -4500025a000000004706b06dc0a87f2e058e413f -4500015100000000740677500A00d44a2e0bf9d6 -4500023200000000a2068a20c0a81b61ba376fcc -45000299000000001f067bcce605f80c0A002498 -4500029e000000007006e5620A009f0f0bdac3d5 -4500025c000000002806d5950A00aa877f0f0ff8 -450002ae000000006e0622fe0A003fe06f6ee6f4 -45000268000000004e06dafdc0a89c235ba1f256 -450003c900000000af06ff1ec0a8b7027aac50d6 -450003b6000000009f0639980A000f0867c5cf32 -4500031400000000a906582ec0a8da3c0b92dbb0 -450002340000000008065935c0a8fd423b575953 -450002b800000000c106048b9e5989bc0A006852 -45000389000000006006c2e0c0a8d8ef123dbacf -450001f400000000b7065a93c0a8f4827e8cb1b2 -4500002500000000b90626eac1560de90A00cc36 -4500039100000000b506dca2c0a888971a6e9c55 -450001be0000000097064a993860c70d0A001053 -4500020600000000430674520A00a726960e59db -45000359000000001b067ed5c0a830f687e8eb8e -4500019f00000000ac06dd4ece21ba2e0A007506 -4500010700000000bc06df460A007e3aa2b89fc6 -45000216000000000c063f16c0a8995cba3bd2f7 -4500023c000000006a06b884c0a803e0a32a90f6 -450003e5000000002706dea80A006b4feac24529 -45000260000000002406d1360b9ab4810A000ecd -4500020f0000000068066eb1c0a85623c60c8a90 -4500011200000000ac06bb90c0a8e5c0b39d6b24 -450003af00000000be060a9ee83aa0450A004d75 -4500020b0000000071061a4c0A00fe9fb27d2e47 -45000323000000008c06eef5c0a8267ab45814f3 -45000193000000006f066ca7c0a841c069e89ad6 -4500002f00000000bb06fe43136f60670A00a103 -45000088000000007a06f875c0a8f46fab665222 -450002fc000000000406520cc0a84d906634133b -4500033f00000000a706d0cfc0a848af9633f5e6 -45000161000000005206019dc0a87c0a4e6ce8e3 -450002b800000000710685adf4b536b70A0089df -450002f400000000aa066247c0a8b1666e32f92a -450002a7000000004f062b8ec0a86dd587a3cea8 -450001f30000000020066a490A0019bb2bd414cd -450000fc000000007d06b3ca470b6f950A00194d -4500029600000000b5063674c0a8e84803ade3e4 -450003e6000000009306e56831dd9ade0A00a392 -4500036a000000005606ea4ec0a8c5cd1285b0a2 -45000293000000008d061310c0a876e44dada065 -4500005b00000000c80618ae0A000dd54850cbc9 -450003b2000000001206f375c0a8cb0e5fc3e5a5 -45000278000000002f061a16c0a84e12ba491fdf -450002f600000000c4063a1ec0a8ac6edd060bda -4500021600000000c10616d10A000f8e040ed176 -450001d000000000a20613fc0A00d954cbe62904 -450003a7000000007a068caad05cf3be0A00bc10 -450003c4000000006c0666cac0a85dd14a138590 -450002d9000000009e06e13ec0a86f6cbe2bc7f8 -450002c6000000002f06e8750A0040d76b8f5f72 -450002890000000090066574c0a8b92dc7c70848 -45000098000000009806d61dc0a82e4c8bfb1cad -45000319000000003f06f3a8587ebbe10A00c8f5 -450002b1000000004806417d0A009c164f4c925c -450001bf000000008506377c5d29a7d40A005483 -45000041000000007e0632e460c394510A007519 -4500014700000000830691e2c0a8840e36d31fcc -450002950000000060062f9fc0a88d7de5b799a3 -4500031000000000b8067d37c0a8dda489b2a3c5 -45000222000000004e06c1d2c0a842dea62564c1 -450003c20000000016064a90c0a8fa75ef825a83 -45000317000000005a06cff70A00163f19de7789 -450003a1000000005606cf53c0a849e5f00c4670 -450001db0000000097066962d3f67e610A00397e -4500031e000000006306f0520A00844d3ac2dff8 -450001ee00000000340670bd4485baec0A005914 -4500014a00000000bb068f06c0a83848a31535fe -45000217000000005d063ae7518556d20A00c9ce -4500028700000000bd064eddc0a8c38a0303e848 -45000212000000007f06ad27c0a822856d2c690e -45000205000000008d065ad7c0a89af8593b350c -45000041000000003706afb296e4622a0A00713c -45000338000000005e06ebb80A00e7285bb3867c -4500018500000000b1063cc6d2632ae20A009ff0 -450002ca00000000c40613a6c0a81d7ba603c1a8 -45000015000000008a06c36b0A004942c9442364 -450001ae0000000005065bf30A009ccd6ff9bb12 -4500035e0000000087068e64c0a81dfdadee82cd -4500002e0000000051065a910A00f2750cdd1caf -4500028f000000007b06b6d931695db50A0028a1 -4500028400000000c80620dfc0a8c46952bf0a1b -450001010000000052062a8a115f23d30A001980 -450001c000000000860677b0c0a89c93d3a71d63 -450003aa000000000b0640930A00108691555a9b -450002e5000000003206aba0c0a8f5cc157ae3d3 -4500029e00000000c306538dc0a865eda8383a79 -450002aa00000000250699f1b31937cd0A00c0d4 -4500022a000000002b06c5e00A001da54861a9f8 -450003ac00000000a806e665c0a8d040a0c15748 -450002c900000000bf06e2d5c0a805a114bf0fe6 -450002dc00000000c306c3eec0a8cec661e46148 -450002fd000000002906ca9c0A00246f78e99f6f -45000080000000009106223496e786b30A007ff2 -450000c3000000007506959cc0a82547e7f588ac -450002150000000007065d07c0a88facf662c37b -450002680000000022064c970A00afa985c899c2 -450002ab000000008906f1420A0073309d84ca35 -450000c6000000001506c5540A009cd2f9d6420a -450001eb00000000bd0626f5c0a865833cc46e9a -450001e30000000045062c880A00c442ede78255 -450002aa00000000a906dd2fc0a8ae8bb48f8221 -4500009900000000400688ae04465ce30A0094c1 -4500004f000000009f06d0f1c0a84257ad8806f5 -450000d50000000008062ba50A00d4826f29b184 -4500010f000000006706221f0A001e2ec43911cf -4500039d00000000b406e3510A00dff009be4008 -450002ca00000000b2062701c0a8041f9a7fd9b5 -450002ed000000003a0664d50A004f6fb519c909 -45000081000000003f06d5010A008143b5292475 -4500037f00000000150687120A007ac34f0ea04c -450003a300000000c306fc22849471020A0086a4 -4500022300000000bf06632381c70d060A008922 -450001090000000028060808c0a8183e267d70c4 -450002950000000018066988c0a83f30afd5f63d -4500038600000000bd06b2a60A000650dc274097 -4500014400000000b006cfa20A0052d2a69fe691 -450000e900000000a10624430A00897bc7096a81 -45000399000000009e06945c7d1ec3930A00c0ea -450001fc0000000092066784c0a849a35d0774b9 -450000c50000000079064a682fdbb72a0A003f69 -450001750000000069068dc0bd517fe50A004218 -4500028600000000180642a4c0a8d572e0f286bd -45000244000000001f06f2a520faaafb0A00fbeb -450002a0000000005006a0ba0A00e9553d6dde03 -450001ee000000003206c946e12b607f0A005c5b -45000285000000002c061d46c0a80178a2d06c54 -4500032b00000000a3064819c0a82077eff5aa8f -4500009700000000b70618f40A0072b9f6f276b5 -4500032500000000c806aae4c0a8e6dbb8975c9d -450000fd00000000940679f2c0a804b5758ba620 -45000388000000000a0604e4c0a89b6e3c460c23 -4500013700000000840669e30A0096075489357a -4500004c000000003206281cc0a896a77660c8b4 -450000fc00000000c406ec5deea9d90b0A002f9d -450003cd000000000406f7d5c0a8085a29fdb214 -4500004c0000000085067c9853339d030A001bb5 -450003c3000000007106d3f10A003a100f8d381c -4500009500000000b3064b30c0a8b9b3619f0160 -4500027600000000aa0692431e84c6920A00b586 -45000362000000005206d3a2c0a812ee1ed57e29 -45000296000000001e06add00A0089fb06296288 -45000117000000009d06da630A00f7f8992b49e4 -450003df000000005d06aea00A00297aaf948147 -4500016300000000c6064b14c0a866f5c1d6400c -4500028e00000000230634950A0008a00bc05821 -4500037a000000008e06f9b40d6903320A002c82 -450003630000000040063a31c0a8533c7afee8ef -4500011f000000004f0625a7c0a8dc74db116724 -450002bd00000000a406ca75c0a8d624af077234 -45000050000000002106c7de0A007121601b6040 -4500012a000000006d06ad280A00e08edbe8be34 -4500026a00000000b7064148c0a85f2abd8c5fa0 -450000b20000000016065539c0a88e9caec8bf04 -450001f300000000ac064e7cc0a80ca43506b0f1 -4500031a00000000c7066f3a2e27fd770A0083f6 -45000288000000005b06d8f2c09112de0A0070d7 -450002a6000000003c06d0ebc0a800b8b413a93c -45000260000000008e0627470A00db37e1602730 -4500033a000000009a06363b0A009108618e5611 -4500022c000000001b06395a0A00d9d1a3f989f5 -450000ce000000000e06b3a6c0a8385f340ebf32 -4500009800000000ad06b3eda5b2662e0A00f297 -450001f6000000000f067612c0a836f43f91fbfe -4500024f0000000041063612cdacbc850A00843c -4500020c0000000004060eaec0a8e23f7846c2c8 -45000158000000004706979a0A001475889ac600 -45000073000000008d062f36a204443e0A00b966 -450001e3000000002a061395c0a8f7ca8a9b826d -450003cc000000008506b4d9c0a8878b376ef4d2 -4500008b000000006306e8c7c0a81b2b5cef5260 -4500009d000000000306b69dc0a86ab2704294dd -45000372000000005e063fa9c0a8c54f230353ac -4500019000000000a00616a70A002a504620d822 -4500022a000000001306f4f6c0a871b076ed3df3 -4500034e00000000ae06a0c55d44a4cf0A00c3b0 -4500010f000000001f06f13922f39b900A000df5 -450001f4000000005506d46dc0a88558b66b08ca -450000ec000000006a064f8da05dcde30A0031f3 -450001bb0000000021060b8fa2999c4a0A00efb9 -4500003d000000004006284004d74c170A000657 -45000234000000002f067309c0a873d25b23a1cf -45000067000000008306c2020A002d53625147d1 -450002df000000002b066e551a1273130A00ab8e -45000147000000004506a86e0A007c16f6ef4f2e -450001f400000000790692000A00318723c17c51 -450001f9000000003f065c18c0a84ddd8787cec4 -4500021a000000008406346a0A0009662483f6e1 -450002720000000008062066c0a8ee38f516a034 -45000230000000000b0676b994484d860A00e8ec -450000b4000000009d06c2fcc0a8701fb20fe8b8 -450000d3000000008c06cc6d3c27ea670A00770c -450002f8000000000306cea0f147e8b40A00fcb2 -45000226000000003a06c5f0c0a835b65bf38212 -4500014c000000001606b4390A0080111a0a6f3f -4500033c000000004e0613b9c0a87b31123dda01 -45000222000000004d069635c0a8bc4af39117a5 -45000332000000006a06ab5fc0a87a86baaf2668 -4500014e000000008f06ee2c0A00acf16e938f16 -450001d60000000043066dc5c0a85d2cc007a9b2 -4500027600000000c406f3f20A00ed99a61d1248 -450000b30000000063064525c0a8ce26b15b428a -4500011f000000004e06f2aac0a861cc8e5d1616 -4500020a000000001506c695a81803150A00d993 -450000a200000000bd0682ce0A0097b4cd15e1fe -450000970000000026069eefc0a8f0830b8d0425 -45000141000000006406e1dbc0a8edd12de4851f -450001fb000000001206fcf90A00d3bbb8fed588 -450003c00000000087060715c0a8ca9f65e15d60 -4500009d000000005606c877c0a8fe9dc1fb9bc7 -4500004000000000510629350A005acecd57e4df -4500006b0000000034062e870A004780667d1017 -4500016f00000000ac069637c0a85f4708161744 -450000a000000000c8066f7dc0a818e4f66a6842 -4500039f000000007306638c0A000f87ae12d08f -45000102000000002a06c5560A0093dfac78360c -450003dd00000000080694508ca49eb00A007b86 -450002fd000000002c064ae5c0a87ed23bd4c14a -450000d9000000009906fbd30A0072293d26b2dd -450002e0000000000d0635a11d77587c0A001cd5 -450001d2000000000706462ec0a804ee52c265f9 -450001e8000000006506c602c0a84db8b9303ede -450002bb000000000106b4bc0A00b61633a14c2f -450003ad000000000606cfe5c0a88706edf758b4 -45000354000000004b06a657c0a847e9a5627d00 -4500018700000000770681340A00d20fa472ee81 -45000301000000002b0636c10A008884a27bcd07 -4500011d00000000b40696e90A00572e33631788 -45000361000000005a06a3d9c0a8b11c0b5507d8 -450001e50000000091067e62c0a869944f1e3f0f -4500016e000000000806526dc0a861b2659dfc47 -450001520000000078061bcb3be19e490A00874e -450000fa0000000042066bc68b3fe8050A00239f -4500037400000000350650f60A00af3f03488243 -4500020c000000005706ec5fc0a8cb7b18cea93b -450000f9000000001b068b66c0a8ac51166d6673 -450003a0000000004706bb86c0a8a686ebed0ca2 -45000368000000007b06cd76c0a86635592b07cd -4500030d000000002c064ba20A00cba701667498 -450001df000000006b06f3d1c0a8a07ad103b83e -4500008e00000000b4067433bb6621140A00705f -450000a1000000000706c0ed0A007eec54bf7321 -4500019b00000000c40608620A00845511bf688c -450002aa000000002b06d5bac0a8f1cc38adc4d1 -45000285000000001c069c63c0a8a4c7751f5a15 -4500023200000000a7067ab3c0a81f94dfae75e1 -45000299000000007a06ecbe50e5ee470A006301 -4500035000000000860687e20A00ae075e7bfb58 -45000026000000000b06e1240A00c2620e780c35 -4500017b000000004b06bb1f0A00f8a61fa3ba90 -450002f1000000008c0697c84bb8a80e0A00ebdd -450001ad00000000a506a28fc0a85ccfb8331376 -450000af000000003706df76c0a863c3f57a3e5c -450000ec000000002d06ff5c0A007f45dd4c0d85 -45000282000000002106afcec0a8a2733a8c443c -450001da000000007b066d230A00c2b5acc70d91 -4500032b00000000a5063278c0a8081b1b5ed760 -450003b8000000004806632f0A00c5cd0b2a4630 -45000318000000008f063f380A00d08d53f418bf -45000301000000008406b449eb0ecf7c0A00af3e -4500008b00000000b806be89c0a83d625bb30568 -4500031f000000002706770dc0a8fcc8b7641b8e -45000265000000005206f35bc0a8c78ba720aa47 -4500008b0000000086063ccdc0a8fdb343ebf8eb -450002db00000000820636aac0a8e8bf302115c5 -45000180000000007d0697190A009863459d0cae -450002b0000000003306a0cec0a8bd5ad1e02590 -4500012a0000000097062e500A00f4f89d58fee0 -4500017600000000aa06fbd7c0a8b063a50a61e4 -450000db000000002a0619c1c0a855c80f3e1fc6 -450002a900000000a0067aafc0a8979436560517 -4500027f0000000004064b37e8ab21c30A00468e -450002e8000000007306867e08a9e0ac0A00ddd5 -4500029100000000570649170A008dc666798a1b -450001210000000061066d4ac0a817da0fefd2e5 -45000266000000004006bc6df41f68ac0A00527c -4500006a000000007206170bc0a8a9d816bd86d6 -450000a20000000088067bd1b3b561d50A0053f4 -4500023d00000000480675f4c0a8520b7ed4a77f -450000fe00000000c006cd83c0a8c46126e96731 -450000a50000000085060229c17a683b0A00ca25 -45000352000000001f0666940A00ee7a78f64317 -4500007200000000ab0636340A0054b933dc845d -450002a2000000003506bbb9c0a89fcac584264f -45000088000000008c06ff7bc0a826eaf139065b -4500018700000000af06fb98c0a86ad3e9c1a25e -4500025d0000000044060ca203916bb80A00fc35 -450002cd000000004506d3a3c0a8ad64651cf100 -45000277000000004006336c0791333f0A0011c6 -4500024800000000af061d7312cfb2d80A00394a -4500035f000000002a0607dfc0a852fc77533188 -450002c70000000056061dc9c0a8375c65740be8 -4500012b0000000068064d6cc0a8fc0102b7079f -45000390000000000b06707cc0a8ae78bca78bf9 -4500011d000000008706d1310ac3a1410A00c056 -450003c6000000008106642cc0a80391b5f0cd01 -450003e400000000b70674a23a878aa30A00008c -45000216000000009e060dde0A009f70d25f6cb9 -450002090000000043062459c0a863be40b0ecd9 -450003b30000000076064ecdc0a8ac2c57d04536 -4500022a000000009e0618da0A002ab1deb9d65c -4500032600000000460665cb0A00e322243528b8 -45000375000000008a06d3f08514140d0A0044f8 -45000225000000008c065ce8c0a8b6861899188e -4500007b0000000001062814d2e4e9780A00a716 -450002ae000000004706f57fc0a85a088538207f -4500004400000000a00645040A00f40c74aae127 -4500003900000000ab06d94dc0a887786e7eadcd -45000223000000007006a82e7fdfdacc0A00c553 -450001e0000000007c060750c0a8d75bde165cd0 -45000372000000002606c4b375d3f67b0A00d5da -45000100000000000406253d442daebf0A00e1af -450002e3000000004f06f7e70A000ec30f3b6253 -450002d90000000049062bb3c0a8c30947d87f5d -4500002b0000000091064031c0a88ea56f5c59c9 -4500029600000000300670ca32b944340A00d329 -450002f100000000a40605e1c0a8137987c5f967 -450002cf000000002406bb96c0a84806b5578f19 -450002eb0000000019066bea0A001d6c69a31545 -4500013800000000bb06415f0A00af88947f0d3c -4500025400000000270610340A008477b21bfc3e -450003b700000000500667cec0a8f8dd4be3058c -45000215000000008106ac2f0A004a6c48ee40f7 -45000262000000000a06ccd2c0a8dfddf8b50030 -4500010e00000000ab063195c0a8f4601462e822 -450001420000000029063750c8c7300b0A00288a -450002230000000067062dc8c0a836dcc1ceebb1 -4500006800000000960659f6c0a8290d015fa0cd -4500034b0000000001063c0cc0a88a98d83aee72 -450003e100000000310658af0A00fe8dc1e82e11 -45000236000000007d063b720A0056651c7aa9c6 -450000b6000000000306af58c0a89119493175c9 -450001a1000000000806a0bfc0a8b8e3fdcd55f9 -450001f80000000046063f4fc0a86ccde3b8c542 -45000070000000000d06060d0A0085490b7f221e -4500031100000000300632b544143e360A0016af -45000361000000005a061ef00c75d3530A006b3f -4500006b00000000400615b3c0a8637e92a7000b -450001f9000000007706183cc0a8270e5991019d -450003b7000000005206c482c0a80056ad409efd -4500021c00000000c8062d3d0A00b20868ec1126 -450001bc000000001a06f5fdc0a8ce51e953d946 -45000213000000003e06039dc0a87c6476fcf9af -4500028e000000009b0640aac0a815bdc7f3c57d -450002e5000000002806d9dac0a86df265894723 -4500022d000000001d0602d30A0076fbaf4a2145 -45000102000000009506186b0A002746621fe4da -450002540000000092062d8805d8b3040A00460a -4500022300000000790665f2057bae480A002b8d -4500038c00000000220600bbc0a8c259bb91d0de -450002c7000000007806089dc0a863e0629cd293 -4500023000000000500663560A005233707bb2c6 -450003c6000000009b06c958bb9e023d0A004fd9 -450002960000000027062296c0a82d2c5d534084 -450000a7000000001506c6bbc0a836279c10a714 -450001c8000000006b063b8bc0a8d16056244030 -450000bd000000001b06d9d9c0a8de059a38e604 -450002ea000000004506e424c0a89c0be94bf137 -4500005600000000480653870A000754792a1745 -450001f30000000036064180c0a844cb7de0fb7e -45000291000000002206545b39aa62f50A00ded5 -450000280000000005063ec9c0a8a3d10230d275 -450003420000000054069f25c0a824e638699eb4 -450001a3000000002606167cc0a822564970597b -450001e60000000097068ca50A001dda41df7749 -45000286000000003d0603380A00075ff69d6fdc -450003e6000000000306dd890A00d7344f12fefd -450003bf000000006806de43c0a8733371c3fc93 -450002c9000000000306f49bc0a8a4f50a301ad6 -4500007600000000b20609820A00dffed8b81e21 -450001990000000053065a36c0a8b987b66d512d -450001e3000000008d0631a4c0a8e9a1ecae0f25 -450003e100000000bf06fa3fc0a81f9088b4dd01 -450001ab000000001a065b0cea892c890A0016c5 -450001010000000041067566c0a858f0b08ea932 -45000316000000000f0600848edff3410A00b486 -45000193000000007506ac462a7822390A0075b3 -4500030900000000a8068f7f757d6af20A001500 -4500013800000000ad0659deadae7cdf0A00354d -45000268000000001606b9180A001926c48ccf85 -4500014300000000a0065ff813b397690A002238 -45000296000000006e069eb351b934420A007713 -4500031800000000ba0625fbc0a8ce728d6f0827 -450001100000000005067399c0a86c04c82ad3c4 -450003b8000000002c06568a892b36000A00fe24 -45000122000000006c06a0cc0A0032891fba7a59 -450001b400000000b0062ffb0A000533bb65d352 -450000da000000008406e8c8c0a8e91f75b16303 -450002c70000000078068d7fc0a83aa6a1b376ac -45000387000000008206d6320A00dc74e13981e1 -450002fd0000000056066735c0a8546cf195a4aa -45000109000000006306ca580A003b8a139e50f1 -450003ac000000001e062d2d0A00ac53c623befd -45000371000000003b06405bc0a881b46f4cb94a -45000350000000001d060ffcc0a87d23464d0c84 -450001770000000075067bce956340ae0A008767 -450000dd00000000250665adc0a8234c9eca0ac5 -450003c500000000a40655dd0A00b4f2641307f7 -45000203000000009006af7458ab3ded0A003b33 -45000043000000005c06b761c0a8ada61594f8da -4500025400000000990685ff0A006e6d08c12b27 -4500008f0000000086065dd284ccc5400A0010ca -4500028d000000006306c4b9c0a85fe3eb312f25 -4500007400000000320681cac0a8043f75b70147 -450000d9000000005b066ba99e183d2a0A00b5a5 -4500025b000000008306d3730A00449af12c1c96 -4500014000000000a8066189c0a83f9b905c6f45 -4500013d000000000806a428c0a84a7074c1c1f0 -45000355000000006b06e131c0a895173505d567 -45000122000000002306cbeec0a81186e3c3b7c0 -450001af000000004a06554cc0a8dbaa1cb33d78 -4500028900000000c206537ec0a8aed217eaf349 -450001f3000000009f0623f8c0a857483c879dca -450002a9000000002506e10352780b0b0A00a6e6 -4500020d00000000220678fdd2dd036e0A0019a5 -4500039b0000000006062d65c0a812201e8b70fb -4500027400000000c706ba1cc0a840f3d2dcf4e4 -450000b000000000b406a09ac0a85f6e73da050e -450001f8000000003e063f580A00d8fcebc361b8 -45000395000000005106ac570A0029f9469a8fc4 -450000a10000000082061f77c0a85fabefa9b787 -4500003d000000003b066646c0a8b8a9c3fb5f4a -4500012e000000004b0651f40A005759154ac55f -4500027d000000002b066889c0a889774e819a6e -4500007700000000c0063fc00A00b06e9e7509ac -45000194000000003006657cc260eff00A00332d -450000e6000000005c066ee2c78809df0A00e481 -450000ac000000003706b954c0a87448f55053fc -450001c8000000006e06effc0A00fe30f1555c0a -450001a500000000b9069a57c0a8696f641bfb6a -450002ee000000000806f2f20A00d0bfdb7beb75 -45000249000000000e06f170c0a8d1e13c40e663 -450000f30000000032063fefc0a8b21aa8e59495 -45000238000000004006e7758af47da50A001313 -4500013600000000110675bcc0a83790e8f1f9cf -45000200000000009606a4cec0a85f18af251da4 -4500025d000000008a0641284b48b1030A003c1c -450002090000000096069f79f42238d90A0049a0 -4500004e00000000a306e30e0A0059e0a6bfda0d -450000a6000000004a06e1bc7bbd34310A0059e1 -4500034b00000000ad06693d0A002e729610725f -450002e6000000004f06a303c0a8766f67644e7a -450000b7000000008d06c12a0A00c5e5c910a560 -450000610000000070061bc9c0a876fa4791b6ce -4500023d000000008506ebbcc0a84205037a0538 -4500019d000000004e06fbb6c0a89fc14b7dceda -4500013300000000020682760A00b63d6bef7e9e -450000db000000005a06a9485276d8490A00de31 -4500032e000000007c06667b074452440A0082fb -4500030c00000000b006cd6dc0a8096be4ba2f71 -450001900000000080062d26c0a87ed7ecb58bc0 -450000d3000000007b06256ad19d36ea0A00e1f7 -4500017b000000003706a971c0a866fd94cb70bc -4500032e000000003e065d13c0a89e30ddbb7ceb -450002ea0000000047066dc10A00bc750bcc46c4 -45000363000000002506d8f788442a740A008e99 -4500038f000000004106b608c0a85e94aa286064 -450000db0000000093066494853f0edb0A00b320 -4500011c00000000ac066fcec0a89c2d5a2800c8 -450001100000000005069ebec0a8c58469ba4f7e -450000f000000000ad064155c0a8d42b99a9f630 -450000c800000000790676130A000456fe43c5c0 -450002d90000000026061f68c0a80645ede96ac6 -450001ab000000002f060a800A000e31f15270a2 -450002b800000000bd069817c0a8b056928bb182 -4500035800000000c806b834c0a8d99c7c9f5c95 -45000229000000006b06cb99e7b46aee0A001658 -4500010700000000c70680dd6cb5e6880A008b17 -450001cb000000006406a2dbc0a87fa4d2e9311d -450001e400000000470602cdc0a8012254796d12 -4500001a000000003e06d9200A00284f69e07afd -450002f7000000001f069ba8c0a85537f04ba673 -450003d400000000070637260A00a4b82938d414 -450002d0000000007106795f0A00eaa8e33ce235 -450001a5000000001406b0bfc0a865488d858e00 -450000ff000000008f06c5b719df473a0A001de6 -45000057000000006a06cd74c0a8afc5016dd2a8 -4500004f00000000c606ccf7c0a8561f43bfd091 -450000b8000000003006cb5ec0a83223db7a8b25 -450000ef00000000c106cb57adde504f0A00dcad -450001e9000000008006c20072cc30120A004682 -450000e1000000005a06fbabc0a8815459b2e200 -4500019c000000007206e5fbc0a88906822cd71a -4500009a00000000780696dcc0a8859d1c00250a -45000370000000004b0690450A007d17581e5ecb -450001c4000000002b065d5553532c060A00047d -45000181000000006d06b0770A00f596683ca5f9 -4500031700000000a80665d7c0a837ac799d7126 -45000302000000001006b49ec0a8043b0537ee59 -4500020000000000bf06d346c0a88eb8334a9708 -45000393000000000206f84bc0a8074a729cb49f -45000162000000007f0657a20A00705d46187248 -4500025a00000000b606b72e0f5414820A0036d6 -4500009d000000006e063f78c0a8bcf8f54f4e37 -450003680000000045066b9cc22534300A00d1f9 -450001e2000000008a061066547d64820A00b9d1 -4500003e0000000045063310c0a8bda7369b840e -4500033c000000001a06dd23c0a852f05b2d6c8f -450001c9000000009506a93ec0a84cded5782c7f -450002fe000000007906cb35c0a85cf2d0191544 -450002070000000075064375c0a89676b48f6893 -450002b6000000003c06a3d4c0a8a8ca9d1a2e48 -45000089000000000206ef8cc0a84cbee35a7a83 -4500011300000000760627ae0A00893b065d92ed -450001d9000000009d0662b20A00f9c16e09bf35 -450000e4000000005c069ecec0a8cae067baf340 -45000312000000006306a67ec0a848dfe47063e6 -450001fc00000000ba06d1d9c0a874fe76c0b6f0 -4500024e0000000018062c18ad8bc3630A00b079 -4500020a000000006a068203753b01b70A00cab6 -450001bc000000003a06be714600185e0A00a81e -450002f6000000005e061a3fc0a84ff8d11eee3b -4500034000000000ba062dc4c0a8287af725a5c4 -4500034b000000001906fb61c0a80e6e9adc9385 -450001b500000000890616e6c0a821999954f66c -4500002800000000a006fe5ec0a89b9ac2c97f57 -450003ce000000007d068e767ca3111e0A009a11 -450000860000000071066541c0a832532655b0f9 -45000150000000009106242b0A001c4d98bae78f -45000361000000008b06a1c0cf681e420A006bbd -4500002d0000000067062776c0a80364044a282e -450001cf000000007606b08cc0a8b3407d89de21 -4500025700000000bb069d6274066e790A00f149 -450002c9000000000e06ae74c0a87cd90d737e16 -4500023f000000009f06ca28e89f1f3e0A002f62 -4500033c000000006f0679a4c0a8f767375fd6bb -450003c3000000004506313104877d110A00c3e6 -450002170000000026066c82c0a83783912fed8c -450001720000000053063a43c0a8e587b2a3454b -450002470000000097061d1f0A0065fc051a9e88 -450000d5000000007706e48ec0a8b1f655f4ab8b -450000ad000000007b06aacfc0a8cc1e345ec76b -45000300000000007f06b25c0A00545d63d431d3 -4500028600000000aa065bb0c0a8aa870e43076e -45000016000000000906d5ca0A003f17c0619c38 -450002a500000000aa069641c0a8bfa2edbbb6c4 -45000350000000006106f71b0A00e24b97657ca2 -4500005b000000006906da96c0a8650f9a0f109f -450003e500000000750652d30A007a950f3e7493 -450003b3000000005e06d86a5f0277930A0008e0 -450001a90000000039063cf90A00bde2b6fe84b5 -4500006a000000001706c87ac0a8519d18bd88a0 -45000066000000003d06597f0A007e653829a56d -45000077000000006d060594e07eee020A005902 -450000e800000000b906f7e3c0a802d45c35053e -4500013800000000710674d2c0a893440a203fe1 -450001e600000000a9063400c0a82d042595ae2a -4500031700000000bb06b7dec0a8ebfa44e35806 -4500014800000000ac061843c0a8e59bca080e49 -450000a50000000010069b3fc0a86b0a6257a2e9 -450000d1000000009106f727c0a8e8f719d24831 -45000310000000008706fa53c0a83afe86a8fa52 -45000350000000003a0699e30A00d4dde3cd0dfc -4500035c000000001006db14c0a83c1ed5048ed6 -4500031e000000005906d438876a68ce0A002144 -4500030b00000000b906ad46c0a8e0fdd4a96f17 -450002b3000000001e0659e2c0a8822a1c20bd5e \ No newline at end of file diff --git a/codingquest2024/src/day3/data.txt b/codingquest2024/src/day3/data.txt deleted file mode 100644 index ac7d887..0000000 --- a/codingquest2024/src/day3/data.txt +++ /dev/null @@ -1 +0,0 @@ -301 3 96 5 5 1 1 1 1 1 1 1 8 1 74 4 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 26 9 1 1 37 4 6 1 1 1 1 1 1 1 8 1 26 14 8 1 25 5 4 1 1 1 1 1 1 1 19 6 11 14 9 1 1 1 1 1 1 1 1 1 1 1 14 5 4 1 1 1 1 1 19 9 10 15 7 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 8 4 4 1 1 1 1 1 20 3 1 1 1 4 9 7 1 8 7 19 6 5 3 1 1 1 1 1 7 1 1 1 9 3 6 3 8 5 5 6 8 7 1 1 1 1 1 1 1 1 1 2 6 5 3 1 1 2 7 1 1 1 1 1 8 3 6 3 8 5 6 5 8 6 11 2 5 5 4 1 1 1 6 1 1 1 1 3 7 3 6 3 8 5 5 6 9 4 12 1 6 5 3 1 1 1 8 1 1 1 2 2 6 3 6 3 8 5 6 5 8 6 19 4 4 1 1 1 6 1 1 2 2 2 6 3 6 3 6 1 1 5 6 5 8 6 6 1 1 1 10 4 3 1 1 1 8 1 1 1 1 1 1 1 6 3 6 3 8 5 5 6 1 1 7 6 1 1 1 1 1 2 11 5 2 1 1 2 6 1 1 1 1 1 1 1 1 1 5 3 6 3 6 1 1 5 1 1 1 7 2 1 6 8 1 5 11 4 2 1 1 1 1 1 6 1 1 1 1 1 1 1 1 1 5 3 6 3 8 15 1 1 8 13 17 1 1 1 1 1 8 1 1 1 10 3 4 3 9 13 2 1 9 5 6 1 19 1 1 1 1 1 20 10 9 11 3 4 6 6 7 1 1 1 15 1 1 1 1 1 1 1 19 9 8 1 1 2 1 2 1 2 1 1 1 1 1 2 10 5 8 1 17 1 1 1 1 1 1 1 20 6 9 1 3 1 1 1 1 1 1 6 1 2 7 5 15 1 11 1 1 1 1 1 1 1 1 1 32 1 1 1 7 1 2 1 1 1 1 1 1 1 7 6 13 2 10 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 36 1 1 1 1 1 1 1 9 6 1 1 1 1 1 1 1 1 1 1 1 3 10 1 1 2 1 1 1 1 1 2 1 2 1 2 1 1 49 9 1 11 12 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 49 12 1 3 1 4 80 1 1 1 2 1 1 2 1 7 1 1 92 1 1 5 1026 2 1 4 9 10 14 3 1 1 1 1 7 1 1 1 10 2 1 2 26 9 7 14 11 11 1 6 8 6 26 10 7 14 12 17 7 1 1 6 24 1 1 4 2 3 6 6 4 6 10 18 7 8 18 1 4 5 4 3 5 5 7 6 9 5 1 1 1 1 1 1 1 1 1 1 10 8 16 1 1 1 1 1 1 1 1 4 4 3 5 5 8 5 9 5 20 7 16 1 2 1 2 1 1 4 6 2 5 5 8 5 10 3 22 7 17 1 1 1 2 4 2 1 3 3 5 5 8 5 9 5 19 2 1 6 19 1 1 4 1 3 4 2 5 6 6 6 9 14 11 1 1 6 20 4 2 3 3 4 5 5 6 6 8 6 1 1 1 7 10 7 20 4 2 4 3 3 6 7 2 1 1 6 8 6 3 1 1 6 9 1 1 6 19 4 1 5 4 3 5 16 9 4 7 7 9 6 19 3 2 6 3 4 7 13 10 1 1 1 10 6 7 7 17 5 1 7 4 3 10 1 1 1 1 6 11 1 11 6 7 1 1 6 16 4 2 7 3 4 14 6 24 5 7 1 1 5 16 4 4 1 2 1 7 2 14 5 24 7 6 1 1 5 16 12 1 1 3 4 12 6 25 6 7 1 1 5 16 14 4 3 12 5 26 7 6 1 1 5 17 13 3 4 11 6 26 6 7 1 1 5 17 13 3 4 10 6 15 1 11 5 8 7 17 2 1 7 1 1 4 1 1 2 9 6 12 7 7 6 8 1 1 6 18 19 9 5 14 6 5 1 1 6 9 1 1 1 1 1 1 1 17 1 1 1 1 16 28 9 1 7 1 1 8 9 20 1 2 1 1 8 1 1 30 15 1 1 9 1 1 3 1 2 68 1 1 6 1 1 91 1 2 1 1 1 1 1 233 4 4 4 88 5 3 4 88 4 4 4 85 2 2 2 93 3 10 4 82 4 4 2 4 4 14 2 65 5 3 4 2 5 13 3 58 12 3 11 12 5 32 11 12 13 4 11 12 9 16 26 6 14 7 10 13 14 2 35 2 13 15 5 15 60 20 3 18 36 7 15 46 21 21 8 56 5 34 1 21 \ No newline at end of file diff --git a/codingquest2024/src/day4/data.txt b/codingquest2024/src/day4/data.txt deleted file mode 100644 index 4b9a60e..0000000 --- a/codingquest2024/src/day4/data.txt +++ /dev/null @@ -1,181 +0,0 @@ -System Dist X Y Z -Proxima Centauri 4.247 2.945 -3.056 -0.143 -Barnard's star 5.963 4.958 2.980 1.449 -Luhman 16 A 6.503 1.697 -6.249 0.600 -WISE J085510.83-071442.5 7.532 -3.967 -5.664 2.985 -Wolf 359 7.856 -1.916 -3.938 6.522 -Lalande 21185 8.305 -3.439 -0.308 7.553 -Sirius A 8.659 -5.809 -6.280 -1.338 -Luyten 726-8 A 8.817 -2.171 0.171 -8.544 -Ross 154 9.706 9.365 1.873 -1.733 -Ross 248 10.306 -3.370 9.265 -3.003 -Epsilon Eridani 10.502 -6.753 -1.917 -7.811 -Lacaille 9352 10.724 4.352 0.388 -9.794 -Ross 128 11.008 0.014 -5.577 9.490 -EZ Aquarii A 11.109 4.123 4.432 -9.315 -61 Cygni A 11.404 1.516 11.244 -1.156 -Procyon A 11.437 -9.270 -6.183 2.577 -HD 173739 11.491 0.130 10.478 4.716 -Groombridge 34 A 11.619 -4.949 9.849 -3.677 -DX Cancri 11.680 -9.428 -2.885 6.262 -Epsilon Indi A 11.867 7.259 -3.203 -8.825 -Tau Ceti 11.906 -3.369 0.408 -11.412 -Luyten 372-58 11.984 -2.249 -6.869 -9.559 -YZ Ceti 12.122 -2.040 1.192 -11.890 -Luyten's star 12.349 -10.262 -6.499 2.224 -Teegarden's star 12.497 -9.391 3.369 -7.526 -Kapteyn's star 12.831 -3.460 -9.787 -7.542 -Lacaille 8760 12.947 9.252 0.631 -9.036 -DENIS J184504.9-635747 A 13.064 10.530 -5.713 -5.211 -Kruger 60 A 13.078 -3.316 12.651 -0.001 -DENIS J104814.7-395606 13.193 1.904 -12.468 3.872 -Ross 614 A 13.424 -11.202 -7.255 -1.447 -WISEP J072227.27-054029.9 13.433 -10.027 -8.883 1.000 -Wolf 1061 14.050 12.845 0.752 5.643 -van Maanen's Star 14.072 -3.996 6.424 -11.865 -Wolf 424 A 14.112 1.448 -4.264 13.375 -HD 225213 14.175 3.311 -0.977 -13.748 -2MASS J04292568+3806095 14.355 -13.630 4.128 -1.799 -TZ Arietis 14.578 -8.480 5.369 -10.573 -BD+68 946 14.840 -1.883 12.448 7.856 -CD-46 11540 14.849 14.102 -4.310 -1.752 -LHS 292 14.871 -1.749 -11.036 9.813 -Luyten 145-141 15.123 6.625 -13.574 -0.753 -V1581 Cygni A 15.203 2.905 14.752 2.250 -Ross 780 15.239 4.743 6.071 -13.148 -Luyten 143-23 15.759 4.928 -14.958 -0.555 -2MASS J23400761+4625080 15.794 -5.307 14.325 -4.008 -LHS 2 15.806 -0.258 5.986 -14.627 -DENIS J025503.3-470049 15.877 -1.350 -8.144 -13.563 -Groombridge 1618 15.886 -9.453 2.380 12.543 -Lalande 21258 A 15.997 -7.099 1.444 14.263 -WISE J163940.83-684738.6 16.123 12.167 -9.781 -4.032 -AD Leonis 16.194 -7.549 -5.577 13.197 -HD 204961 16.201 10.984 -2.101 -11.722 -CD-44 11909 16.333 15.741 -3.929 -1.887 -Omicron2 Eridani A 16.340 -12.033 -4.560 -10.071 -EV Lacertae 16.476 -2.954 15.775 -3.726 -70 Ophiuchi A 16.707 14.200 8.163 3.293 -Altair 16.731 11.115 12.234 -2.591 -EI Cancri A 16.800 -11.979 -6.249 9.985 -WISE J150649.97+702736.1 16.818 -3.879 11.755 11.385 -G 99-49 16.986 -15.208 -6.951 -2.991 -DENIS J081730.0-615520 17.002 1.737 -16.376 -4.228 -LHS 2459 17.137 -8.104 10.814 10.538 -WISEA J154045.67-510139.3 17.374 14.713 -9.182 1.032 -WISEA J093935.93-244838.9 17.414 -3.694 -15.891 6.089 -LHS 1723 17.531 -13.929 -6.923 -8.087 -Wolf 498 17.727 5.298 -0.785 16.898 -Stein 2051 A 17.992 -15.151 9.430 2.290 -WISEP J111448.80-261828.2 18.201 1.992 -15.352 9.573 -Wolf 294 18.215 -17.560 -0.901 4.756 -LP 816-60 18.331 13.106 7.617 -10.308 -2MASS J23402010+4631110 18.334 -6.182 16.629 -4.626 -2MASS J04163296+3100022 18.500 -17.453 4.188 -4.483 -WISE J174124.25+255319.6 18.532 10.672 12.769 8.154 -WISEA J183537.82+325945.4 18.554 8.406 15.577 5.562 -Wolf 1453 18.605 -15.640 -7.947 -6.194 -WISE J041521.21-093500.6 18.617 -13.334 -5.644 -11.701 -HD 42581 A 18.791 -11.786 -13.374 -5.944 -Sigma Draconis 18.800 -3.419 17.107 7.005 -Ross 47 18.889 -18.114 -4.418 -3.024 -Lalande 27173 A 19.199 15.009 -5.990 10.366 -Luyten 205-128 19.208 16.899 -7.771 -4.794 -Luyten 347-14 19.273 17.464 -2.343 -7.809 -Lalande 46650 19.275 -0.655 10.511 -16.143 -Wolf 1055 A 19.293 14.658 12.495 -1.105 -CD-40 9712 19.300 16.764 -8.662 4.055 -WISE J035000.32-565830.2 19.318 -0.230 -13.254 -14.052 -Eta Cassiopeiae A 19.328 -10.379 16.216 -1.703 -Luyten 722-22 A 19.374 0.490 4.595 -18.815 -36 Ophiuchi A 19.414 19.266 -0.579 2.325 -WISEP J154151.66-225025.2 19.525 17.174 -4.108 8.331 -Ross 882 19.533 -15.397 -11.128 4.546 -HD 191408 A 19.610 16.752 1.534 -10.078 -82 Eridani 19.705 -3.626 -10.382 -16.351 -Ross 986 A 19.742 -18.559 0.339 6.721 -Delta Pavonis 19.894 14.509 -8.456 -10.664 -WISEP J013657.45+093347.0 19.955 -9.644 7.749 -15.657 -WISEP J093735.61+293127.7 19.973 -12.825 -4.129 14.745 -HD 191849 20.107 16.798 -1.527 -10.943 -LHS 455 20.259 -3.453 17.077 10.339 -Wolf 1481 20.395 13.836 -5.472 13.950 -EQ Pegasi A 20.428 -2.363 15.667 -12.895 -Wolf 562 20.550 15.654 -1.624 13.214 -HD 79210 A 20.658 -14.668 3.948 14.001 -LHS 2090 20.739 -14.853 -7.021 12.657 -HD 155876 A 20.865 5.404 15.999 12.254 -WISEP J150319.70+252525.4 20.938 8.222 6.238 18.218 -LP 944-20 20.962 -6.865 -10.440 -16.831 -LHS 32 21.011 -17.584 -10.242 -5.230 -WISE J140518.39+553421.3 21.042 -2.438 10.695 17.957 -GL Virginis 21.084 0.658 -6.386 20.082 -WISE J220905.73+271143.9 21.123 2.051 19.317 -8.297 -G 202-48 21.131 1.833 15.400 14.354 -2MASS J00124716+5215456 21.138 -9.427 18.549 -3.728 -Wolf 630 A 21.184 19.392 3.785 7.640 -Luyten 100-115 21.213 6.159 -19.816 -4.399 -WISE J041022.71+150248.4 21.260 -19.109 0.684 -9.293 -WISE J031325.94+780744.3 21.318 -13.116 15.566 6.335 -HD 219134 21.337 -7.251 20.032 -1.191 -Luyten 471-42 21.733 9.959 -17.100 8.986 -DENIS J072003.2-084650 A 21.919 -15.752 -15.217 0.875 -Ksi Bootis A 22.006 9.704 4.136 19.313 -Ross 104 22.009 -7.637 -5.635 19.857 -Ross 619 22.080 -16.964 -11.497 8.219 -Ross 775 A 22.113 7.070 18.976 -8.885 -LHS 6158 A 22.192 -14.354 -12.127 11.807 -WISEP J192841.35+235604.9 22.278 11.675 18.936 1.188 -ULAS J025409.58+022358.7 22.325 -14.758 1.854 -16.648 -BD-17 588 A 22.387 -11.090 -4.143 -19.001 -CWISE J105512.11+544328.3 22.494 -11.366 5.941 18.480 -Ross 671 22.398 0.902 17.581 -13.848 -Wolf 358 22.723 -5.976 -11.615 18.594 -Ross 446 22.954 -6.760 -14.156 16.757 -HD 199305 22.960 -3.413 22.272 4.417 -2MASS J21462206+3813047 22.986 0.977 22.495 -4.627 -LHS 3003 23.003 18.392 -9.014 10.471 -WISE J052126.29+102528.4 23.099 -21.794 -4.961 -5.831 -WISEP J000517.48+373720.5 23.157 -8.216 19.432 -9.548 -Luyten 230-188 23.182 -1.988 -16.246 -16.418 -LHS 546 23.408 1.405 11.884 -20.118 -WISE J082507.35+280548.5 23.462 -19.247 -5.219 12.360 -HD 16160 A 23.555 -15.223 4.538 -17.392 -WISE J205628.91+145953.2 23.580 10.459 19.667 -7.737 -V488 Hydrae 23.581 -13.398 -17.868 7.569 -Luyten 788-34 23.596 10.387 8.907 -19.224 -HD 156384 A 23.632 23.386 -3.352 0.587 -WISEP J060738.65+242953.4 23.624 -23.467 -2.594 0.834 -WISE J173835.53+273259.0 23.937 13.208 16.691 10.951 -2MASS J04292844+3001563 24.088 -23.085 4.408 -5.278 -WISEP J004945.61+215120.0 24.136 -9.763 15.373 -15.839 -WISEA J150747.56-162749.3 24.170 18.976 -5.400 13.961 -Wolf 25 24.251 -6.795 11.083 -20.472 -Wolf 922 24.325 13.604 12.791 -15.590 -Beta Hydri 24.328 10.662 -15.357 -15.567 -WISE J200050.19+362950.1 24.505 7.274 23.358 1.418 -CWISE J061741.79+194512.8 A 24.524 -24.012 -4.925 0.766 -G 203-47 A 24.785 7.210 18.632 14.667 -WISEA J235402.79+024014.1 24.974 -1.366 13.480 -20.980 -Fomalhaut A 25.126 9.981 3.729 -22.755 -G 141-36 24.845 19.139 15.738 1.817 -Ross 490 24.879 7.252 -3.658 23.516 -LHS 3376 24.926 -2.321 21.906 11.664 -107 Piscium 24.932 -14.170 12.372 -16.362 -Luyten 499-56 25.009 14.891 1.681 -20.022 -Mu Cassiopeiae A 25.034 -14.355 20.221 -3.429 -Vega 25.045 9.069 21.839 8.252 -Ross 556 25.052 -19.129 9.879 -12.809 -AN Sextantis 25.137 -7.899 -17.330 16.406 -HD 157881 25.158 21.471 9.902 8.594 -SIPS J1259-4336 25.200 13.441 -19.632 8.305 -LP 881-64 A 25.222 2.230 1.356 -25.087 -G 192-13 25.225 -21.673 10.540 7.449 -HD 165222 25.241 22.625 10.491 3.894 -G 109-35 25.287 -23.858 -7.025 4.565 -G 227-22 25.421 -1.444 22.069 12.533 -WISEP J180026.60+013453.1 25.471 21.895 11.875 5.321 -G 202-45 A 25.586 4.699 17.781 17.787 -CD-68 47 A 25.702 8.366 -14.413 -19.568 -2MASS J07290002-3954043 25.824 -7.589 -24.237 -4.677 -G 154-44 25.999 25.236 6.179 0.974 \ No newline at end of file diff --git a/codingquest2024/src/day5/data.txt b/codingquest2024/src/day5/data.txt deleted file mode 100644 index 9a954b1..0000000 --- a/codingquest2024/src/day5/data.txt +++ /dev/null @@ -1,37 +0,0 @@ - base cg96 hx27 ik04 qx43 dc94 ap98 ux20 li84 rt50 el82 rd48 sf80 mg52 rc82 eu85 hr27 bi41 sh80 af18 vp88 km46 em44 pd69 ts86 -base 0 30638 48992 35639 74968 48045 6341 90127 47393 71441 19111 80113 80629 56954 81776 30862 30878 21854 77873 34270 86306 42311 15532 71522 79586 -cg96 30638 0 72821 29603 89651 17412 36569 100420 36168 79354 25142 62592 66534 41290 63249 57094 48704 8784 66650 8582 86685 42076 27940 52718 85170 -hx27 48992 72821 0 54515 34839 88023 43405 53755 62684 44187 48043 90438 85542 72549 93258 18509 25262 65340 79206 79456 66739 47748 44881 86136 53441 -ik04 35639 29603 54515 0 62700 38191 37769 71535 11907 50269 16570 44931 44989 22141 46865 44622 29623 28109 42498 38186 57377 12646 20780 37109 55645 -qx43 74968 89651 34839 62700 0 100846 70926 19095 64882 19976 65515 81427 73635 71560 84552 49712 44223 84464 66126 97774 40896 50837 64609 81039 25903 -dc94 48045 17412 88023 38191 100846 0 53925 109266 39656 87944 40040 57202 63371 40295 57004 73374 63104 26191 65469 17136 91082 50527 43684 47297 92341 -ap98 6341 36569 43405 37769 70926 53925 0 86798 49674 68892 21378 82673 82483 59670 84517 25041 27490 27800 79193 40546 85080 42672 16989 74486 77382 -ux20 90127 100420 53755 71535 19095 109266 86798 0 70601 21322 77982 79293 70326 74908 82378 67504 59364 96475 62788 108879 31128 58919 78000 81261 19223 -li84 47393 36168 62684 11907 64882 39656 49674 70601 0 49450 28416 33031 33361 10569 35013 55008 38971 37093 31581 44413 51620 15309 32686 25491 52956 -rt50 71441 79354 44187 50269 19976 87944 68892 21322 49450 0 57683 61913 53835 54424 65044 53222 41615 75794 46283 87860 23000 37634 58207 62319 9390 -el82 19111 25142 48043 16570 65515 40040 21378 77982 28416 57683 0 61342 61543 38297 63150 33772 23565 18965 58787 32642 69545 24118 4711 53111 64814 -rd48 80113 62592 90438 44931 81427 57202 82673 79293 33031 61913 61342 0 9678 23176 3130 86267 69538 66544 16684 69212 50346 44242 65695 10005 60148 -sf80 80629 66534 85542 44989 73635 63371 82483 70326 33361 53835 61543 9678 0 25343 12471 83231 66388 69377 7597 73797 40862 41575 65571 16923 51317 -mg52 56954 41290 72549 22141 71560 40295 59670 74908 10569 54424 38297 23176 25343 0 24857 65525 49341 44089 25635 48803 52073 24802 42743 14978 56289 -rc82 81776 63249 93258 46865 84552 57004 84517 82378 35013 65044 63150 3130 12471 24857 0 88758 72080 67560 19692 69606 53292 46776 67570 10597 63246 -eu85 30862 57094 18509 44622 49712 73374 25041 67504 55008 53222 33772 86267 83231 65525 88758 0 16843 48998 78001 62939 73562 42033 29734 80190 62528 -hr27 30878 48704 25262 29623 44223 63104 27490 59364 38971 41615 23565 69538 66388 49341 72080 16843 0 42021 61213 56009 59502 25305 21319 63773 50379 -bi41 21854 8784 65340 28109 84464 26191 27800 96475 37093 75794 18965 66544 69377 44089 67560 48998 42021 0 68546 14120 85334 39674 20747 56964 82328 -sh80 77873 66650 79206 42498 66126 65469 79193 62788 31581 46283 58787 16684 7597 25635 19692 78001 61213 68546 0 74364 33695 37154 62514 21598 43742 -af18 34270 8582 79456 38186 97774 17136 40546 108879 44413 87860 32642 69212 73797 48803 69606 62939 56009 14120 74364 0 95209 50649 34816 59231 93742 -vp88 86306 86685 66739 57377 40896 91082 85080 31128 51620 23000 69545 50346 40862 52073 53292 73562 59502 85334 33695 95209 0 45829 71442 54312 15000 -km46 42311 42076 47748 12646 50837 50527 42672 58919 15309 37634 24118 44242 41575 24802 46776 42033 25305 39674 37154 50649 45829 0 26815 38684 43094 -em44 15532 27940 44881 20780 64609 43684 16989 78000 32686 58207 4711 65695 65571 42743 67570 29734 21319 20747 62514 34816 71442 26815 0 57619 65780 -pd69 71522 52718 86136 37109 81039 47297 74486 81261 25491 62319 53111 10005 16923 14978 10597 80190 63773 56964 21598 59231 54312 38684 57619 0 62060 -ts86 79586 85170 53441 55645 25903 92341 77382 19223 52956 9390 64814 60148 51317 56289 63246 62528 50379 82328 43742 93742 15000 43094 65780 62060 0 - -Rover 1 route: base -> km46 -> rd48 -> ts86 -> km46 -> base -> dc94 -> sh80 -> ux20 -> cg96 -> hr27 -> bi41 -> ap98 -> ux20 -> ik04 -> sf80 -> ik04 -> ik04 -> rd48 -> base -Rover 2 route: base -> em44 -> km46 -> pd69 -> rt50 -> vp88 -> sf80 -> vp88 -> base -> cg96 -> rc82 -> mg52 -> bi41 -> hr27 -> base -Rover 3 route: base -> base -> li84 -> km46 -> ts86 -> base -> sh80 -> pd69 -> em44 -> sh80 -> af18 -> base -Rover 4 route: base -> ts86 -> ts86 -> af18 -> base -> ap98 -> rc82 -> bi41 -> bi41 -> qx43 -> em44 -> em44 -> el82 -> base -Rover 5 route: base -> dc94 -> hx27 -> rt50 -> vp88 -> pd69 -> af18 -> sf80 -> base -Rover 6 route: base -> hx27 -> eu85 -> em44 -> dc94 -> ux20 -> vp88 -> ik04 -> ux20 -> li84 -> mg52 -> base -Rover 7 route: base -> ap98 -> ts86 -> ts86 -> em44 -> rt50 -> rt50 -> qx43 -> sh80 -> ap98 -> ux20 -> el82 -> rt50 -> km46 -> base -Rover 8 route: base -> pd69 -> ap98 -> ik04 -> el82 -> sf80 -> ux20 -> vp88 -> dc94 -> pd69 -> ik04 -> li84 -> ts86 -> base -Rover 9 route: base -> sh80 -> km46 -> ts86 -> base -> sf80 -> eu85 -> ap98 -> sh80 -> qx43 -> rt50 -> bi41 -> ux20 -> bi41 -> dc94 -> pd69 -> vp88 -> li84 -> ik04 -> base -Rover 10 route: base -> ts86 -> sh80 -> em44 -> em44 -> af18 -> base -> eu85 -> ik04 -> af18 -> sh80 -> sf80 -> dc94 -> ap98 -> cg96 -> dc94 -> qx43 -> sh80 -> rd48 -> rc82 -> base \ No newline at end of file -- cgit v1.2.3 From e09491b19729a8848ea11662fb1173f5c466e910 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Tue, 12 Mar 2024 14:35:29 -0400 Subject: Codingquest day 6 in Gleam --- codingquest2024/src/day6/solution.gleam | 86 +++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 codingquest2024/src/day6/solution.gleam diff --git a/codingquest2024/src/day6/solution.gleam b/codingquest2024/src/day6/solution.gleam new file mode 100644 index 0000000..8a0319c --- /dev/null +++ b/codingquest2024/src/day6/solution.gleam @@ -0,0 +1,86 @@ +import gleam/dict +import gleam/io +import gleam/list +import gleam/regex +import gleam/result +import gleam/string +import simplifile + +pub opaque type Location { + Location(row: Int, col: Int) +} + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day6/data.txt") + let assert ["Cipher key: " <> key, "Message: " <> raw_message] = + string.split(data, "\n") + + let letter_to_location = make_cipher_grid(key) + let location_to_letter = + letter_to_location + |> dict.fold(dict.new(), fn(acc, k, v) { dict.insert(acc, v, k) }) + + raw_message + |> string.split(" ") + |> list.map(fn(s) { + s + |> string.to_graphemes + |> list.sized_chunk(2) + }) + |> list.map(fn(s) { + s + |> decode_word(letter_to_location, location_to_letter) + |> string.concat() + }) + |> string.join(" ") + |> io.println() +} + +fn make_cipher_grid(key) { + let assert Ok(in_key) = regex.from_string("[" <> key <> "]") + let grid = + regex.split(in_key, "abcdefghiklmnopqrstuvwxyz") + |> string.concat + |> string.append(key, _) + |> string.to_graphemes + |> list.sized_chunk(5) + + list.index_map(grid, fn(row, r) { + list.index_map(row, fn(cell, c) { #(cell, Location(r, c)) }) + }) + |> list.flatten + |> dict.from_list +} + +fn decode_word(word: List(List(String)), to_loc, to_letter) { + case word { + [] -> [] + [[a, b], ..rest] -> [ + transform_pair(a, b, to_loc, to_letter), + ..decode_word(rest, to_loc, to_letter) + ] + _ -> panic as "bad playfair format" + } +} + +fn transform_pair(a, b, to_loc, to_letter) { + let assert Ok(Location(r_a, c_a)) = dict.get(to_loc, a) + let assert Ok(Location(r_b, c_b)) = dict.get(to_loc, b) + + case r_a == r_b, c_a == c_b { + True, _ -> [ + dict.get(to_letter, Location(r_a, { c_a + 4 } % 5)), + dict.get(to_letter, Location(r_b, { c_b + 4 } % 5)), + ] + _, True -> [ + dict.get(to_letter, Location({ r_a + 4 } % 5, c_a)), + dict.get(to_letter, Location({ r_b + 4 } % 5, c_b)), + ] + _, _ -> [ + dict.get(to_letter, Location(r_a, c_b)), + dict.get(to_letter, Location(r_b, c_a)), + ] + } + |> result.values + |> string.concat +} -- cgit v1.2.3 From a2c2b728ec6051323ed937f54816089cd2ae9d20 Mon Sep 17 00:00:00 2001 From: "H.J" Date: Fri, 22 Mar 2024 14:30:51 -0400 Subject: Codingquest complete --- aoc2023-gleam/manifest.toml | 22 ++-- codingquest2024/gleam.toml | 2 + codingquest2024/manifest.toml | 6 +- codingquest2024/src/day7/solution.gleam | 73 +++++++++++ codingquest2024/src/day8/solution.gleam | 26 ++++ codingquest2024/src/day9/input.txt | 203 +++++++++++++++++++++++++++++++ codingquest2024/src/day9/solution.gleam | 0 codingquest2024/src/utilities/memo.gleam | 57 +++++++++ 8 files changed, 377 insertions(+), 12 deletions(-) create mode 100644 codingquest2024/src/day7/solution.gleam create mode 100644 codingquest2024/src/day8/solution.gleam create mode 100644 codingquest2024/src/day9/input.txt create mode 100644 codingquest2024/src/day9/solution.gleam create mode 100644 codingquest2024/src/utilities/memo.gleam diff --git a/aoc2023-gleam/manifest.toml b/aoc2023-gleam/manifest.toml index 900b5c0..416a155 100644 --- a/aoc2023-gleam/manifest.toml +++ b/aoc2023-gleam/manifest.toml @@ -2,19 +2,19 @@ # You typically do not need to edit this file packages = [ - { name = "adglent", version = "1.2.0", build_tools = ["gleam"], requirements = ["glint", "gleam_http", "gleam_stdlib", "simplifile", "gleam_erlang", "gap", "gleam_httpc", "snag", "gleam_community_ansi", "tom", "gleam_otp"], otp_app = "adglent", source = "hex", outer_checksum = "A20D35001061F8AD602E3B92FB3AC0E1E4EEC642AD2AAE0ACEAD3A85F37DA7F0" }, - { name = "gap", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_stdlib"], otp_app = "gap", source = "hex", outer_checksum = "5E369751DB547BFBDA7735878DC04DA31FCA3112193D61D5D7566010C7C8BA98" }, - { name = "gleam_community_ansi", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8B5A9677BC5A2738712BBAF2BA289B1D8195FDF962BBC769569976AD5E9794E1" }, - { name = "gleam_community_colour", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "036C206886AFB9F153C552700A7A0B4D2864E3BC96A20C77E5F34A013C051BE3" }, - { name = "gleam_community_maths", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_maths", source = "hex", outer_checksum = "1B9DB313E94A0E4674CA84C5D29F45ECFE211BFB38ABBD8B23737395F47D08B3" }, + { name = "adglent", version = "1.2.0", build_tools = ["gleam"], requirements = ["gap", "gleam_community_ansi", "gleam_erlang", "gleam_http", "gleam_httpc", "gleam_otp", "gleam_stdlib", "glint", "simplifile", "snag", "tom"], otp_app = "adglent", source = "hex", outer_checksum = "A20D35001061F8AD602E3B92FB3AC0E1E4EEC642AD2AAE0ACEAD3A85F37DA7F0" }, + { name = "gap", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_stdlib"], otp_app = "gap", source = "hex", outer_checksum = "2EE1B0A17E85CF73A0C1D29DA315A2699117A8F549C8E8D89FA8261BE41EDEB1" }, + { name = "gleam_community_ansi", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "FE79E08BF97009729259B6357EC058315B6FBB916FAD1C2FF9355115FEB0D3A4" }, + { name = "gleam_community_colour", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "A49A5E3AE8B637A5ACBA80ECB9B1AFE89FD3D5351FF6410A42B84F666D40D7D5" }, + { name = "gleam_community_maths", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_maths", source = "hex", outer_checksum = "E30C61A75051DAF7CFD77C4FBAA04140FDA0B5D831955E7A74521E5576E2780D" }, { name = "gleam_erlang", version = "0.23.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "C21CFB816C114784E669FFF4BBF433535EEA9960FA2F216209B8691E87156B96" }, - { name = "gleam_http", version = "3.5.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "AECDA43AFD523D07A8F09068598A6E271C505278A0CB6F9C7A2E4365EAE8D11E" }, - { name = "gleam_httpc", version = "2.1.1", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "06AC1CA52C9BAA66C9D5C0303B2BF34E39AA1546BB96AEE496E4B06D513AB8C7" }, - { name = "gleam_otp", version = "0.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_erlang"], otp_app = "gleam_otp", source = "hex", outer_checksum = "18EF8242A5E54BA92F717C7222F03B3228AEE00D1F286D4C56C3E8C18AA2588E" }, - { name = "gleam_stdlib", version = "0.33.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "539E37A2AA5EBE8E75F4B74755E4CC604BD957C3000AC8D705A2024886A2738B" }, - { name = "glint", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "gleam_community_ansi", "gleam_community_colour", "snag"], otp_app = "glint", source = "hex", outer_checksum = "46E56049CD370D61F720D319D0AB970408C9336EEB918F08B5DCB1DCE9845FA3" }, + { name = "gleam_http", version = "3.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "8C07DF9DF8CC7F054C650839A51C30A7D3C26482AC241C899C1CEA86B22DBE51" }, + { name = "gleam_httpc", version = "2.1.2", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "ACD05CA3BAC7780DF5FFAE334621FD199D1B490FAF6ECDFF74316CAA61CE88E6" }, + { name = "gleam_otp", version = "0.8.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "18EF8242A5E54BA92F717C7222F03B3228AEE00D1F286D4C56C3E8C18AA2588E" }, + { name = "gleam_stdlib", version = "0.36.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "C0D14D807FEC6F8A08A7C9EF8DFDE6AE5C10E40E21325B2B29365965D82EB3D4" }, + { name = "glint", version = "0.13.0", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "46E56049CD370D61F720D319D0AB970408C9336EEB918F08B5DCB1DCE9845FA3" }, { name = "pqueue", version = "2.0.7", build_tools = ["rebar3"], requirements = [], otp_app = "pqueue", source = "hex", outer_checksum = "8B0204BB202335890E4E7F9B99A8EC0B84DDB8513EE298EB180EE9B3BCB4C859" }, - { name = "simplifile", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0BD6F0E7DA1A7E11D18B8AD48453225CAFCA4C8CFB4513D217B372D2866C501C" }, + { name = "simplifile", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "EB9AA8E65E5C1E3E0FDCFC81BC363FD433CB122D7D062750FFDF24DE4AC40116" }, { name = "snag", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "8FD70D8FB3728E08AC425283BB509BB0F012BE1AE218424A597CDE001B0EE589" }, { name = "tom", version = "0.2.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "tom", source = "hex", outer_checksum = "5C5A9B8586C547F1F39542B1A3BBD9FEE17AFEAB51CE53B32B13D0D46B421249" }, ] diff --git a/codingquest2024/gleam.toml b/codingquest2024/gleam.toml index 8bee8d0..f39baa5 100644 --- a/codingquest2024/gleam.toml +++ b/codingquest2024/gleam.toml @@ -15,6 +15,8 @@ version = "1.0.0" [dependencies] gleam_stdlib = "~> 0.34 or ~> 1.0" simplifile = "~> 1.5" +gleam_otp = "~> 0.10" +gleam_erlang = "~> 0.24" [dev-dependencies] gleeunit = "~> 1.0" diff --git a/codingquest2024/manifest.toml b/codingquest2024/manifest.toml index 39304c1..55b1f61 100644 --- a/codingquest2024/manifest.toml +++ b/codingquest2024/manifest.toml @@ -2,12 +2,16 @@ # You typically do not need to edit this file packages = [ + { name = "gleam_erlang", version = "0.24.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "26BDB52E61889F56A291CB34167315780EE4AA20961917314446542C90D1C1A0" }, + { name = "gleam_otp", version = "0.10.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "0B04FE915ACECE539B317F9652CAADBBC0F000184D586AAAF2D94C100945D72B" }, { name = "gleam_stdlib", version = "0.36.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "C0D14D807FEC6F8A08A7C9EF8DFDE6AE5C10E40E21325B2B29365965D82EB3D4" }, { name = "gleeunit", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D364C87AFEB26BDB4FB8A5ABDE67D635DC9FA52D6AB68416044C35B096C6882D" }, { name = "simplifile", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "EB9AA8E65E5C1E3E0FDCFC81BC363FD433CB122D7D062750FFDF24DE4AC40116" }, ] [requirements] +gleam_erlang = { version = "~> 0.24"} +gleam_otp = { version = "~> 0.10" } gleam_stdlib = { version = "~> 0.34 or ~> 1.0" } gleeunit = { version = "~> 1.0" } -simplifile = { version = "~> 1.5"} +simplifile = { version = "~> 1.5" } diff --git a/codingquest2024/src/day7/solution.gleam b/codingquest2024/src/day7/solution.gleam new file mode 100644 index 0000000..2ca7cbf --- /dev/null +++ b/codingquest2024/src/day7/solution.gleam @@ -0,0 +1,73 @@ +import gleam/io +import gleam/string +import gleam/set.{type Set} +import gleam/int +import gleam/regex.{Match} +import gleam/option.{Some} +import simplifile + +pub opaque type Item { + File(name: String, size: Int) + Directory(name: String) +} + +pub fn main() { + let assert Ok(data) = simplifile.read(from: "./src/day7/data.txt") + let lines = string.split(data, "\n") + + mark_for_deletion(lines, 0, "", set.new()) + |> io.debug() +} + +fn mark_for_deletion( + lines: List(String), + deleted: Int, + current_folder: String, + deleted_folders: Set(String), +) { + case lines { + [] -> deleted + ["Folder: " <> folder, ..rest] -> + mark_for_deletion(rest, deleted, folder, deleted_folders) + [file, ..rest] -> { + case + string.contains(file, "temporary") + || string.contains(file, "delete") + || set.contains(deleted_folders, current_folder) + { + True -> + case string.contains(file, "[FOLDER") { + True -> { + file + |> get_folder_number() + |> set.insert(deleted_folders, _) + |> mark_for_deletion(rest, deleted, current_folder, _) + } + False -> { + file + |> get_file_size() + |> int.add(deleted, _) + |> mark_for_deletion(rest, _, current_folder, deleted_folders) + } + } + False -> + mark_for_deletion(rest, deleted, current_folder, deleted_folders) + } + } + } +} + +fn get_folder_number(file) { + let assert Ok(re) = regex.from_string("\\[FOLDER ([0-9]+)\\]") + + let assert [Match(submatches: [Some(n)], ..)] = regex.scan(re, file) + n +} + +fn get_file_size(file) { + let assert Ok(re) = regex.from_string("- .+ ([0-9]+)$") + + let assert [Match(submatches: [Some(n)], ..)] = regex.scan(re, file) + let assert Ok(n) = int.parse(n) + n +} diff --git a/codingquest2024/src/day8/solution.gleam b/codingquest2024/src/day8/solution.gleam new file mode 100644 index 0000000..cb4d907 --- /dev/null +++ b/codingquest2024/src/day8/solution.gleam @@ -0,0 +1,26 @@ +import gleam/io +import gleam/int +import gleam/list +import utilities/memo + +const options = [40, 12, 2, 1] + +const distance = 856 + +pub fn main() { + use cache <- memo.create() + solve(distance, cache) + |> io.debug +} + +fn solve(target, cache) { + use <- memo.memoize(cache, target) + case target { + 0 -> 1 + _ -> + options + |> list.filter(fn(n) { n <= target }) + |> list.map(fn(n) { solve(target - n, cache) }) + |> int.sum + } +} diff --git a/codingquest2024/src/day9/input.txt b/codingquest2024/src/day9/input.txt new file mode 100644 index 0000000..1d30914 --- /dev/null +++ b/codingquest2024/src/day9/input.txt @@ -0,0 +1,203 @@ +##################################################################################################### +......#.....#.#.......#.....#.....#.....#.#.................#...............#.............#.#.......# +#.###.#.#.#.#.#.#####.#.#.#.#.###.###.#.#.#.#######.#######.#########.#####.#.#####.#####.#.#.###.#.# +#.#.#...#.#.#.#.#...#...#.#...#.#.....#.#.#...#...#.#...#.....#.....#.#...#.#.#...#.#...#.#...#...#.# +#.#.#####.#.#.#.#.#.#####.#####.#######.#.###.#.#.#.#.#.#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.###.##### +#...#$..#.$...#$#.#.$.#.#$..#.$....$..#.$....$#.#.$.#.#$..#.$.#.#$..#.$.#..$..#.$...#$#.#.$.#.#$#...# +###.#.#.#.#####.#.###.#.###.#.#######.#.###.###.#####.#####.###.#.###.###.###.#.#####.###.#.#.#.#.#.# +#.#...#.#.......#...#...#...#.......#.#...#...#...#...#...#.....#.#.....#.#...#.#.....#...#...#.#.#.# +#.#####.#########.#.#####.#.#########.###.#######.#.#.#.#.#######.###.#.###.###.#.#.#.#.#####.#.#.#.# +#.....#.#.#.......#...#...#.#...#...#...#...#.....#.#.#.#.#.....#...#.#...#.#.#.#.#.#.#.....#.#...#.# +#.###$#.#.$.###$####$.#.#$###.$.#.#$#.#.$##.#$####$.#.#$#.#.$.#.#$#.##$##.#$#.#.$##.#$####$.#.#$###.# +#...#...#.......#...#.#.......#.#.#.#.#...#.#.#.....#...#...#.#...#.#...#.....#.#...#.....#.#...#.#.# +###.#####.#####.#.#.#.#########.#.#.#.#.#.#.#.#########.#####.#####.#.#.#######.#.#.#.#.###.###.#.#.# +#.#.#.....#...#.#.#...#...#...#.#.#.#.#.#.#.#.#...#...#...#.#...#...#.#.......#.#.#.#.#...#...#...#.# +#.#.#.#####.#.###.###.#.#.#.#.#.#.#.###.###.#.#.#.#.#.###.#.###.#.###.#######.#.#.#.#.###.###.#####.# +#.#.#$#...$.#..$#.#.$.#.#$#.#.$.#.#$#...$...#$..#.$.#..$#.#.$.#..$#...$.#.#$..#.$.#.#$#.#.$...#$....# +#.#.#.#.#######.#.#.###.#.#.#####.#.#.#.#.#####.#######.#.#.#.#########.#.#.###.#.#.#.#.#.#.###.###.# +#.#.#.#...#...#.#.#.....#.#.#.....#.#.#.#.....#.#.#...#.#...#...........#.#.....#.#.#...#.#...#.#...# +#.#.#####.#.#.#.#.#########.#.#####.#.#.#####.#.#.#.#.#.#################.#######.#.###.#.###.#.###.# +#.#.#.....#.#.....#.......#...#.....#.#.....#.#.#...#.#...#...#...#...#.#.........#.#...#...#.#...#.# +#.#.#$####$.###$###.$####$####$.###$#.##$####$#.##$##.#$#.#.$.#.#$#.#.$.#.#$####$.###$####$.#.#$#.### +#.#.#.#...#.#.......#.#...#...#...#...........#.....#.#...#.#...#...#.#.......#.#.....#...#...#.#...# +#.#.#.###.#.#.#######.#.###.#.###.#######.#########.#.#.###.#########.#######.#.#######.#.#####.###.# +#.#.#...#...#.....#...#.....#...#.......#.#...#.......#.#...#.......#...#...#...#.......#...#.....#.# +#.#.#.#.#.#######.#.###########.###.###.#.#.#.#.#######.#.###.#.#######.#.#.###.#####.#####.#####.#.# +#...#$#.#.$...#$..#.$.#..$#...$...#$#.#.$...#$#...$...#$#...$.#..$....$.#.#$#...$...#$#...$...#$#.#.# +#.#####.###.#.#.###.#.#.#.#.#.###.#.#.#.#####.#####.#.#.###.#########.#.#.#.###.#.#.#.#.#####.#.#.#.# +#.#.....#...#...#...#...#...#...#.#...#.#...#.......#.#...#...#...#...#...#...#...#...#.......#...#.# +#.#.#.#.#.#######.#########.###.#.#####.#.###########.#.#.###.#.#.#.#########.#########.#######.###.# +#.#.#.#.#.......#.#...#...#...#.#.......#...........#.#.#...#.#.#...#.......#...#...#...#.........#.# +#.###$#.##$####$#.#.$.#.#$####$.###$####$.###$###.$##.#$###.$.#.#$###.$####$###.$.###$###.$####$###.# +#.....#.#.....#.#...#.#.#...#.......#...#.......#...#...#.#.#...#.#...#...#.....#...#.#.....#.......# +#######.###.#.#.#######.###.#.#####.#.#.###.#####.#.#####.#.###.###.###.#.#########.#.#.#####.#####.# +#.#.....#...#.#.#.......#.#.#...#.....#.#...#...#.#.#.....#.#...#...#...#...........#.#.#...#.#.#...# +#.#.#####.###.#.#.#######.#.###.#.#####.#####.#.###.#.#.###.#.###.###############.###.#.#.#.#.#.#.### +#.#.#$....$...#$#...$....$#.#.$.#.#$..#.$...#$#...$.#.#$..#.$.#.#$#...$....$....$....$#.#.$...#$..#.# +#.#.#.###.#.###.###.#######.#.#####.#.#####.#.#######.###.#.#.#.#.#.###########.#.#######.#####.###.# +#...#.#.#.#...#.....#.......#.......#.#.......#.....#...#...#.#.#.#.......#.#...#.#.....#...#.......# +#.###.#.#.###########.#####.#####.###.#####.###.###.###.#####.#.#.#######.#.#.###.#.###.#.#.#######.# +#.#.#.#.#.#...#.....#...#...#...#...#.....#.#...#.#...#.#...#.#.#.......#...#.#.....#...#.#.#.....#.# +#.#.#$#.#.$.#.#$###.$##.#$#.#.$.###$###.$.#.#$###.$.###$#.#.$.#.#$###.$####$#.##$####$###.$.#.#$#.#.# +#.#.....#.#.#.#.#...#.#...#.#.#...#...#.#.#.#.....#.#.....#.#...#...#.......#.#...#.#...#.#.#.#...#.# +#.#######.#.#.#.#.#.#.###.###.###.#.#.###.#.#####.#.#.#####.###.#.#.###.#####.#.#.#.###.###.#.#.###.# +#...#.....#.#...#.#...#.#.....#.#...#...#.#.#.....#...#...#...#.#.#...#.#...#.#.#.#...#...#...#.#...# +###.#.#####.#####.###.#.#######.#######.#.###.#########.#.#####.#.###.#.#.#.#.#.#.#.#.###.#.###.#.### +#.#.#$....$...#$..#.$.#..$..#.$....$..#.$.#..$#...$.#.#$#.#.$...#$..#.$.#.#$#...$.#.#$..#.$.#..$#.#.# +#.#.#.###.###.#.###.#.###.#.#.###.###.#.#.#.###.###.#.#.#.#.#######.#.###.#.#####.#.#####.#.#.###.#.# +#.#.#...#...#.#.#...#.....#.#.#...#...#.#...#...#...#.#.#...#.....#.#.....#.......#.......#.#.#.....# +#.#.#####.#.#.#.#.#########.#.#.#####.#.###.#.#####.#.#.#####.#####.###############.#########.#####.# +#.#.....#.#.#.#.#.......#...#.#.....#.#...#...#...#...#...#.....#...#.....................#...#...#.# +#.###$#.#.$##.#$###.$.###$###.$####$#.##$.###$#.#.$##.#$#.#.$##.#$###.$####$###.$####$###.$.#.#$#.#.# +#.....#.#.....#...#.#.#...#.#.#...#.#...#.......#...#...#.#.#...#.#.....#.....#...#.....#.#.#.#.#.#.# +#.#.###.#####.###.#.#.#.###.#.#.#.#.###.###########.###.#.###.###.#####.#.###.#####.###.#.#.###.#.### +#.#...#.#...#.#...#.#.#.#.....#.#.#...#...#...#...#...#.#...#...#.....#.#...#.........#.#...#...#...# +#.###.#.#.#.###.###.#.#.#####.#.#####.###.#.#.###.###.#.###.###.#####.###.###########.#.#####.#####.# +#.#.#$..#.$....$#...$.#.#$..#.$....$#...$...#$....$...#$..#.$.#..$#.#.$...#$....$...#$#.#.$...#$....# +#.#.#####.#######.###.#.#.#.#.#####.###.#########.#.#########.#.#.#.#######.#######.#.#.#.#####.###.# +#.#.....#.....#.#.#.#...#.#.#.#.....#.#.#.......#.#.#...#...#.#.#.......#...#.....#.#.#.....#...#.#.# +#.###.#.#####.#.#.#.#####.#.#.#.###.#.#.###.#####.#.#.#.#.#.#.#.#########.###.###.#.#########.###.#.# +#.....#.......#.#.......#.#.#...#.#.#.#...#.#.....#.#.#.#.#.#.#...#.......#...#...#...........#.#...# +#####$####$####$####$##.#$#.##$##.#$#.##$.#.#$####$.#.#$#.#.$.###$#.##$####$####$####$####$####$#.### +#.........#...#.......#...#.#.....#.....#.#.#.#...#...#...#...#...#...#.....#...................#.#.# +#.#.#####.#.#.#.#.#########.#.#.#####.###.#.#.#.#.###########.#.#####.#.#####.###.#############.#.#.# +#.#...#.#...#.#.#.#...#.....#.#.....#.#...#...#.#.......#...#...#.....#...#...#.#.....#...#...#.#...# +#####.#.#####.#.#.#.#.#.#########.#.#.#.#######.#######.#.#.#####.#######.#.###.#####.#.#.#.#.#####.# +#....$#.#.$.#..$#.#.$...#$....$...#$#.#.$....$..#.$....$#.#.$....$#...$...#$....$...#$..#.$.#..$..#.# +#.#####.#.#.#####.#.#####.###.#######.#.#.#######.#.#####.#########.#####.#####.#.#.#####.#.###.###.# +#.#.......#.....#.#.#...#.#.#.....#...#.#.#.......#.......#.............#...#...#.#.....#.#...#...#.# +#.###.#####.#####.#.###.#.#.#####.#.###.#.#.###.#.#########.###########.#####.#######.#.#.#.#####.#.# +#...#...#.#.......#...#.#...#...#.....#.#.#...#.#.....#...#.#.........#.#.....#.......#.#.#.#.....#.# +#.#.#$#.#.$####$####$.#.#$###.$.#.#$###.$.###$#.##$##.#$#.#.$.###$###.$.#.#$###.$####$#.#.$.#.#$#.#.# +#.#.#...#...........#.#...#...#.#...#...#.#...#.....#...#.#.#.......#.#...#.....#...#...#...#.#...#.# +#.#.#.###.#.#####.###.#.###.###.#####.#.#.#########.###.###.#######.###.###.###.#.#.#.#######.#.###.# +#.#.#.....#.#...#.#...#...#...#.#.....#.#.#.....#...#...#...#...#.#.#...#...#.#.#.#.#.....#...#.#...# +#.#.#########.#.###.#########.#.#.#####.#.#.###.#.#######.###.#.#.#.#.###.###.#.#.#.#######.#####.### +#.#..$#...$...#$....$....$#...$.#.#$..#.$...#$..#.$....$..#.$.#..$#.#.$.#..$#...$.#..$....$....$#...# +#####.#.#############.###.#.###.#.#.#.#.#####.###.#.#########.###.#.###.#.#.#.###.#######.#.###.###.# +#.....#.#...#.........#.#.#...#.#...#.#...#...#...#.....#.....#...#...#.#.#.#.#.#.#...#...#.#.....#.# +#.#.###.#.#.#.#########.#.#.#.#.#####.###.#.###.#######.#.###########.#.###.#.#.#.###.#.#####.#####.# +#.#.#.....#...#.........#.#.#.#.......#...#.#.........#.#...#.........#.....#...#...#.#.#.....#...#.# +#.###$####$####$####$##.#$###.$####$####$##.#$####$##.#$###.$.###$####$##.#$####$.#.#$#.#.$####$#.#.# +#.....#.......#.#.....#.#.....#.....#.......#.#.......#...#.#.....#.#.....#.....#.#.#...#.#...#.#...# +#######.#####.#.#.###.#####.#####.###.#######.#.#########.#.#####.#.#.#####.###.#.#.#.###.#.#.#.##### +#...#...#...#.#.#...#.......#...#.#...#.......#...........#.....#.#...#.....#.#.#.#.#...#.#.#.#...#.# +#.#.#.###.###.#.###.#########.#.###.#########.#############.#.#.#.#.###.#####.#.#.#.###.#.#.#.###.#.# +#.#..$#...$...#$#...$.#..$#...$...#$#...$...#$....$.#..$..#.$.#.#$#.#.$.#..$#...$.#.#$#.#.$.#..$..#.# +#.#####.#.#.###.#.#####.#.#.#####.#.#.#####.#######.#.###.###.#.#.###.###.#.#.#####.#.#.#.#.#######.# +#...#.#.#...#.....#.#...#.#.#...#.#...#.....#.......#...#.#...#.#...#.#...#.#.......#...#.#.#.....#.# +#.#.#.#.#########.#.#.###.#.#.#.#.#####.#####.#######.#.#.#.#######.#.#.###.###.#####.###.#.###.#.#.# +#.#.#.#.#.......#...#.#.#...#.#...#.....#...#.....#...#.#...#...#...#.....#...#.#...#.....#.....#.#.# +###.#$#.#.$####$####$.#.#$###.$####$####$.#.#$###.$.###$####$.#.#$###.$####$#.##$.#.#$####$####$#.#.# +#...#.....#.........#.#.#.....#...#.#.#...#...#...#...#.#.....#...#.#.#.....#.#...#.#.........#...#.# +#.#########.#######.#.#.#.#####.#.#.#.#.###.###.#######.#.#########.#.#.###.#.#.###.#.#####.#.#.###.# +#.......#...#.....#...#...#.....#...#.#.#.#.........#...#.....#.......#.#.#...#.#...#.#.#...#.#.#...# +#.#####.#####.###.#####.#######.#####.#.#.#########.#.#######.###.#####.#.###.#.#.#.#.#.#.#####.#.#.# +#...#$..#.$...#$..#.$.#..$..#.$.#..$....$...#$..#.$...#$....$...#$#.#.$.#..$..#.$.#.#$#.#.$....$#.#.# +###.#.#.#.#####.###.#.#####.#.###########.###.#.#####.#.#.#####.#.#.#.###.#####.#.###.#.#########.#.# +#...#.#.#.#...#.....#.....#...#.....#...#.#...#.#...#.#.#...#...#.#.....#.#.....#...#.#.......#...#.# +#.###.###.#.#.###########.#####.###.#.#.###.###.#.#.###.###.#.###.#.###.###.#######.#.#.#####.#.###.# +#...#.......#...........#.........#...#.......#...#.......#...#.......#...........#.....#.......#.... +##################################################################################################### + +##################################################################################################### +#.........#.........#...#.................#.....#.....#...........#...#.....#.....#...........#.....# +#####.###.#.#######.#.#.###.###.###########.#.###.#.#.###.#######.###.#.#.#.###.#.#####.#.###.#.###.# +#.....#...#.......#...#...#...#.#...#.......#.....#.#...#.....#.#...#...#.#...#.#.....#.#.#.....#.#.# +#.###############.#######.###.###.#.#.#############.###.#####.#.###.#####.###.#.#####.#.#.#.#####.#.# +#....$#...$....$#...$.#.#$..#.$...#$..#.$...#$....$...#$..#.$.#..$#...$...#$..#.$....$#.#.$.#..$#.#.# +#####.#.#.#.###.#####.#.###.#.#############.#.###.#.#.###.#.###.###.#######.###.#.#####.#.###.#.#.#.# +#.....#.#.....#.....#.#...#.#.....#.........#...#.#.#.#...#.#.......#...#.......#...#...#.#...#.#...# +#.###.#.#########.###.###.#.#####.###.###.#####.#.###.#.###.###.#####.#.###########.#####.#.###.#.### +#.#...#...#.....#.#.......#.....#.....#...#.....#...#.#...#...#.#.....#.#.........#.....#...#...#.#.# +#.###$###.$.###$#.#.$####$####$.###$###.$##.#$####$.#.#$#.##$.###$####$.#.#$####$.###$#.##$##.#$#.#.# +#...#.....#.#...#...#...#.....#.#.#.......#.#.....#...#.#...#...#...#...#.#...#.#.#.....#.....#...#.# +#.#.#.#####.###.###.#.#.#.###.#.#.#.#######.#.###.#####.###.#.#.###.#.#.#.#.#.#.#.###.###.#####.###.# +#.#.#.....#...#...#.#.#.....#...#...#.......#...#...#...#...#.#.#...#.#.#.#.#...#...#.#.....#.#.#...# +#.#.#.#######.###.###.#####.#####.###.#########.#.#.#.###.#####.#.###.#.#.#.#######.#.#####.#.#.#.#.# +#.#..$#...$...#$#...$.#..$#...$...#$..#.$....$..#.$...#$..#.$...#$..#.$.#..$#...$...#$#...$.#.#$#.#.# +#.#####.#######.#######.#.#.#.#.###.###.#########.#.###.###.#######.#.#####.#.#######.#.#.#.#.#.#.#.# +#.#...#.....#.......#...#.#.#...#...#...#.......#.#.#.......#.......#.....#.#.....#.....#...#.#...#.# +#.#.#.#####.#.###.#.###.#.#.#####.#####.###.###.#.###.#######.#########.###.#####.###########.#####.# +#...#.#...#.#.#...#...#.#...#...#.....#...#...#.#.....#.#...#...#.#...#...#.#...#.......#...#.....#.# +#####$#.#.$.###$####$.###$###.$.###$#.##$.###$#.##$####$#.#.$##.#$#.#.$##.#$#.##$##.#$#.#.$##.#$###.# +#.....#.#.#...#.#...#.........#.....#.#.#.....#.........#.#.....#...#...#.#.#.#...#...#.#...#.#.....# +#.#####.#.###.#.#.#.###############.#.#.#####.#.#######.#.###########.#.#.#.#.#.#.#####.###.#.####### +#.#.#...#...#.#...#...#...#.......#...#.....#...#.#.....#.............#.#...#.#.#.#.....#...#.....#.# +#.#.#.#####.#.#####.#.#.#.#######.#####.###.#####.#.###############.#######.#.#.#.#.#####.#.#####.#.# +#.#.#$..#.$...#$..#.$.#.#$....$.#..$..#.$.#..$#...$.#..$....$....$#.#.$...#$..#.$...#$....$...#$..#.# +#.#.###.#.#####.#.###.#.#######.#.###.###.#.###.#####.#######.#####.#.###.#####.#####.#.#######.###.# +#.#...#.#.#.....#...#...#.......#...#.....#.#...#.....#.....#.......#.#...#...#...#...#...#...#.#...# +#.#.#.#.###.#######.#####.#.#######.#####.#.#.###.#####.#############.###.#.#.###.###.###.#.#.#.###.# +#.#.#.#.....#.#.....#.....#.#.....#.#...#.#...#...#...........#.#...#...#...#...#...#...#...#.#.#...# +#.#.#$####$##.#$####$.###$#.#.$##.#$#.#.$####$#.##$####$###.$.#.#$#.##$.###$###.$##.#$#.##$##.#$#.#.# +#.#.#...#.....#.....#...#.#.#.#.#.....#.#...#.#...........#.#.#...#...#.#...........#.#.....#...#.#.# +#.#####.#.#.#.#####.#.#.#.#.#.#.#######.#.#.###.#########.#.#.#####.#.#.#############.#####.#####.### +#.....#...#.#.....#.#.#.#...#.#.......#.#.#...#.#.......#.#.#.......#.#...........#.......#.....#...# +#####.#.###.#.#######.#.###.#.#.#####.#.#.###.#.#.#####.#.#.#######.#####.#######.#.###.#.#####.#.#.# +#...#$#...$.#.#$....$.#..$#.#.$....$#.#.$.#.#$..#.$...#$#...$....$#.#.$.#..$....$.#.#$..#.$...#$#.#.# +###.#.###.#.###.###.#.###.###.#######.#.#.#.#####.#.###.#######.###.#.#.#######.#.###.#.###.#.#.###.# +#...#.#...#...#...#.#...#...#.#.......#...#.....#.#.....#.......#...#.#.#.....#.#.#...#.#...#.#.#...# +#.#.#.#.#####.###.#.###.###.#.#.#####.#######.###.#.#####.#####.#.###.#.#####.#.#.#.#####.###.#.#.### +#.#.#.#.#...#.....#.....#.#...#.....#.........#...#...#.......#.#.#.#.#.....#...#.#.........#.#.#...# +#.###$#.#.$.###$####$##.#$####$####$###.$####$#.##$##.#$####$.###$#.#.$####$#.##$.#.#$####$##.#$###.# +#.....#...#.#.........#.....#.....#...#.#.......#...#.#.....#.......#.....#.#...#.#...#.....#...#...# +#.#######.###.#.#####.#####.#.###.#.#.###.#######.#.#.###################.#.###.#.#####.###.###.#.#.# +#...#...#.#...#.#...#.....#...#...#.#...#.......#.#.#.......#.......#.....#.#...#.....#.#.#...#...#.# +###.###.#.#.#####.#.#####.#######.#####.#######.#.#.#######.#.#####.#.#####.#.#######.#.#.###.####### +#.#..$#.#.$....$..#.$...#$....$.#..$#...$...#$..#.$....$#...$....$#...$....$#...$....$#.#.$.#.#$....# +#.###.#.#.#########.#.#########.###.#.#.#####.###.#.#####.#######.#####.#####.###.#####.###.#.#.###.# +#.....#.#...#...#...#...#.....#.#.....#.#.....#.#.#...............#...#...#...#...#.........#...#...# +#.#####.###.###.#.###.#.#.#.###.#########.#####.#.###################.###.###.#.###.#######.#####.### +#.#.......#.....#.#...#...#...#.#.......#.#...#...#.......#...........#.#...#.#.......#...#.....#...# +#.###$###.$.###$#.#.$####$#.#.$.#.#$###.$.#.#$####$.###$#.#.$.###$###.$.###$#.##$####$#.#.$.###$#.#.# +#.#...#...#.#.....#...#.....#.#...#...#.#.#.#.....#.....#.#.#.#...#.#...#...#...#...#...#.#.#...#.#.# +#.#.#.#.###.#.#######.#.#####.#####.###.#.#.#####.#####.#.###.#.#.#.#.###.#####.#.###.###.#.#.#.###.# +#...#.#.....#.#.....#...#...#.......#...#...#...#.....#.#...#.#.#.#...#...#...#.#...#.#.#.#.#.#.#...# +#####.#.#####.#.###.#.###.#.#####.#.#.###.###.#.#.#.###.###.#.#.#.###.#.###.###.###.#.#.#.#.#.#.#.#.# +#...#$#...$...#$..#.$.#..$#...$...#$#.#.$...#$#.#.$.#..$#.#.$...#$..#.$.#..$....$...#$#...$.#.#$..#.# +#.###.###.#.###########.###########.#.#####.#.#.###.#.###.#.#.#####.###.#.#########.#.#.###.#.#####.# +#...#...#.#.#...........#...#...#...#...#...#.#...#.#.....#.#.....#.....#.#...#.....#.#...#.#.#.#...# +#.#.###.###.#.#.#########.#.#.#.#.#####.#####.###.#.###.###.#####.#######.#.#.#######.###.###.#.#.### +#.#...#.....#.#.......#...#...#.#.#...#.......#...#...#.#...#...#...#.....#.#...#.....#.#...#.#...#.# +#.###$####$##.#$####$.#.#$####$.#.#$#.##$####$#.##$.#.#$#.##$.###$#.##$####$###.$.###$#.##$.#.#$###.# +#...#...#.#...#.....#...#.....#.#.............#.#.#.#...#.#...#...#...#.....#.#.#.....#...#...#...#.# +#.###.#.#.#.###.#####.#######.#.#############.#.#.#.#####.#.###.#.###.#.#####.#.#####.#.#.#######.#.# +#.#...#.#.#.#...#...#...#.....#.#...........#.#.#...#...#.#.....#...#...#...#.#.......#.#.......#.#.# +###.###.#.#.#.#.#.#.###.#.###.#.#.###########.#.###.#.#.#.###.#####.###.#.#.#.#########.#######.#.#.# +#...#$#.#.$.#.#$#.#.$...#$..#.$.#..$....$...#$#...$.#.#$#...$....$#...$...#$#...$....$....$....$#...# +#.###.#.#.#.#.###.#.###.###.#.#.#########.#.#.###.###.#.###.#####.###.#####.###.#.#########.###.###.# +#.#...#.#.#.#.#...#...#.....#.#.....#...#.#...#...#...#.....#.....#...#.......#.......#.....#.....#.# +#.#.###.#.#.#.#.#####.#######.#####.#.#.#######.###.#########.#####.#########.#######.#.#####.#####.# +#.#.....#.....#...#.........#.....#.#.#.......#.....#.........#.....#...#...#.......#.#.....#.#.....# +#.###$####$##.#$#.##$####$#.##$##.#$#.##$####$####$####$####$##.#$###.$.#.#$####$##.#$#.##$.###$##### +#...#.......#...#.......#.......#.#.#.#.....#.........#...#...#.......#...#.#.....#...#.#.#...#.#...# +#.#.#######.#.#####.###.#.#####.###.#.###.#####.#####.#####.#.#######.#####.#####.###.#.#.###.#.#.#.# +#.#.......#.#.#...#.#...#.#...#.....#...#.#.....#...#...#...#.#.....#.....#.#...#...#.#...#...#...#.# +#.#######.#.#.#.#.###.#.###.#.#####.###.#.#.#######.###.#.###.#.###.#######.#.#.###.#.###.#.#.#####.# +#...#$..#.$.#.#$#...$.#.#$..#.$....$#.#.$.#..$....$....$#.#.$.#..$#...$....$#.#.$.#..$#...$.#.#$....# +###.###.#.#.#.#.###.#.###.###.###.###.#.#.#######.###.###.#.#.#.#.#####.#####.###.#.#######.###.##### +#.....#.#.#.#.#...#.#.#...#.#...#.#...#.#...#...#...#.#...#...#.#.#...#.#.....#.#.#.......#...#.#...# +#####.#.#.#.#.###.#.#.#.###.###.#.#.###.#.#.#.#.###.#.#.#.#.###.#.#.#.###.#####.#.#######.###.#.#.#.# +#...#...#.#.#.#...#...#.#.....#.#.#...#...#.#.#.#...#.#.#.#...#.#...#...........#.......#.#...#.#.#.# +#.#.#$###.$.###$####$.#.#$###.$.#.#$#.##$##.#$###.$##.#$#.##$.###$###.$####$####$##.#$#.#.$.#.#$#.#.# +#.#.......#.....#.#...#.#.#...#.#.....#...#.#.#...#.......#...#.....#.#.#.....#...#.#...#...#.#.#.#.# +#.#####.#########.#.###.###.#.#.###.###.#.#.#.#.###########.###.###.#.#.#.###.#.#.###.#######.#.#.#.# +#.#...#.#...#...#...#.#.#...#.#.#...#...#...#.#.....#.....#...#.#...#...#.#.....#.#...#.......#...#.# +#.#.#.###.#.#.#.#.###.#.#.###.#.###.#.#######.#####.#.#.#.###.#.###.###.#.#######.#.###.###########.# +#.#.#$....$.#.#$#.#.$.#..$#...$...#$#.#.$....$#...$.#.#$#.#.$.#..$#...$.#..$#...$...#$#.#.$...#$....# +#.#.#######.#.###.#.#.#####.#####.###.#.#.###.#.#.#.###.###.#####.###.#####.#########.#.#.###.#.##### +#...#.......#.....#.#.#.....#...#.#...#.#.#.#...#.#...#...#.......#.........#...#.......#.#.#.#.....# +#.###.###########.#.###.#######.#.#.#####.#.#####.###.#.#.#########.#########.#.#######.#.#.#.#####.# +#.#.#.......#...#...#...#.....#.#.#.#.....#.#.....#.#.#.#...........#.........#.#.....#.#...#.....#.# +#.#.#$####$.#.#$###.$.###$###.$.#.#$#.##$##.#$####$.#.#$####$##.#$###.$####$###.$.###$###.$##.#$###.# +#.#.......#...#.#.#.#.#...#.....#.#.#.#...#...#.....#.........#...#.#.#...#.....#...#.....#...#.....# +#.#.###.#######.#.#.#.###.#######.#.#.#.#.#.###.###.#########.###.#.#.###.#.#######.#######.#.#.##### +#...#...#...#...#...#...#.#.....#.#...#.#.#...#.#.......#...#...#...#.#...#.#.......#.......#.#.....# +###.#####.#.#.###.#####.#.#.###.#.#####.#####.#.#######.#.#.#.#.#####.#.###.#.#######.#############.# +#...#$..#.$...#$....$...#$#.#.$...#$..#.$....$#...$.#..$#.#.$.#..$..#.$.#..$#.#.$...#$..#.$...#$....# +#.###.#.#.#########.#.###.#.#######.#.#.#######.#.#.#.###.#.#######.###.#.###.#.###.###.#.###.#.##### +#...#.#...#...#...#.#...#.#.#.......#...#.....#.#.#.#.#.#.#.........#...#...#.#...#.#.#.#.#...#.#...# +###.#.#####.#.#.#.#####.#.#.#.###########.###.###.#.#.#.#.###########.#####.#.###.#.#.#.#.#.###.#.#.# +#...#.......#...#.........#...............#.......#.....#.................#.......#...#...#.......#.# +##################################################################################################### \ No newline at end of file diff --git a/codingquest2024/src/day9/solution.gleam b/codingquest2024/src/day9/solution.gleam new file mode 100644 index 0000000..e69de29 diff --git a/codingquest2024/src/utilities/memo.gleam b/codingquest2024/src/utilities/memo.gleam new file mode 100644 index 0000000..b06d8fd --- /dev/null +++ b/codingquest2024/src/utilities/memo.gleam @@ -0,0 +1,57 @@ +import gleam/dict.{type Dict} +import gleam/otp/actor.{type Next, Continue, Stop} +import gleam/erlang/process.{type Subject, Normal} +import gleam/option.{None} + +const timeout = 1000 + +type Message(k, v) { + Shutdown + Get(key: k, client: Subject(Result(v, Nil))) + Set(key: k, value: v) +} + +type Server(k, v) = + Subject(Message(k, v)) + +pub opaque type Cache(k, v) { + Cache(server: Server(k, v)) +} + +fn handle_message( + message: Message(k, v), + dict: Dict(k, v), +) -> Next(Message(k, v), Dict(k, v)) { + case message { + Shutdown -> Stop(Normal) + Get(key, client) -> { + process.send(client, dict.get(dict, key)) + Continue(dict, None) + } + Set(key, value) -> Continue(dict.insert(dict, key, value), None) + } +} + +pub fn create(apply fun: fn(Cache(k, v)) -> t) -> t { + let assert Ok(server) = actor.start(dict.new(), handle_message) + let result = fun(Cache(server)) + process.send(server, Shutdown) + result +} + +pub fn set(in cache: Cache(k, v), for key: k, insert value: v) -> Nil { + process.send(cache.server, Set(key, value)) +} + +pub fn get(from cache: Cache(k, v), fetch key: k) -> Result(v, Nil) { + process.call(cache.server, fn(c) { Get(key, c) }, timeout) +} + +pub fn memoize(with cache: Cache(k, v), this key: k, apply fun: fn() -> v) -> v { + let result = case get(from: cache, fetch: key) { + Ok(value) -> value + Error(Nil) -> fun() + } + set(in: cache, for: key, insert: result) + result +} -- cgit v1.2.3